Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sfpqJ-00C2eW-0s for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Aug 2024 00:01:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sfpqG-00Ca52-2W for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Aug 2024 00:01:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sfpqF-00Ca2w-GB for pgsql-hackers@lists.postgresql.org; Mon, 19 Aug 2024 00:01:48 +0000 Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sfpqC-000JlT-MB for pgsql-hackers@postgresql.org; Mon, 19 Aug 2024 00:01:47 +0000 Received: by mail-vs1-xe2f.google.com with SMTP id ada2fe7eead31-4928989e272so1453565137.2 for ; Sun, 18 Aug 2024 17:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724025704; x=1724630504; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=l+rY+hntHo6pEdhpdKnV+jplqG1Za/s4rP74ZXq6/G4=; b=gAwcVUCuvIG8lOrgC9QsjAUGMXMCO8bUk9RX29IVkuHHSDbIcKMk7/rnhK8Wvaahsz GFsmgBpflU4NOefi4GbyNlCGsSrashRAlSubGzawICwRR+cN2rDAslir+PgF1yk87szS ju//vf+EqUfQruEn8PKsT78MPDsv3Tgz0Q0cOsAdA/0aGi5FCrknRIm23Jn8w6ScELFy 7ccIBn6DQJ1iQttp+9mCziLr+7o6W6w3gD1843YM/gahzYHIbXEZ4vSOopPz1q+neSwy 5JkyiM3Kil9hgjvum19HqXk5pgLUZBaTn6RubpBHnmeykntf6K1LiUsmr5GCZ0jEkYfq ysxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724025704; x=1724630504; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=l+rY+hntHo6pEdhpdKnV+jplqG1Za/s4rP74ZXq6/G4=; b=ahgCht7Ora0gms/RM+f0qPNkLfD0n3AjTzVqgMaCSDyhebdM5OcPNULviyNOaD0b/J 3kPN10yKlqYwWqNmUGflTjXkgA6kwbVFfn9gfRRsuvMMYDugB1BlmJXkgsHMSF7xd6Av voAtcsiwtrgkxW3Vw+SQs3x4Mzvcg9YExl4DJmRiGPlRmQqDHgjHZ4S2KnJPD4WyjrbQ Wh6RPvBGKMDrulCj2Xlyqhvc5X5/9zwadKg9Ow2HIL2CIBF2TdeU+Jmm1esJOylA10hr AOBbmLY2mF7pGmegkn/qHKXLTezWyFsyCU7HgBqC2NxfVWat+OGUoTWEINdM3lLOMd6n FGlQ== X-Forwarded-Encrypted: i=1; AJvYcCUiRLvuVyrlrdaVYQCojLNoUFCAhY2MqDnHSIdkxjWrc+XmGdZA4WJVzthq3GEENA9jenKi9vGK6eg5Um7caWMBtFu8xc67HOQxA7O1 X-Gm-Message-State: AOJu0Yzv3SqqxyNCp32QoGKhnNNLCVO5mf7XH7HoYURU1mxnVzoVyFeA wiqgNPaS5OV+TaBXSubrM1+WBXn5WPTUwr5FkdpnWquYHQqhU+npWw3YVDCwMkUu4Hezkm3NnPl lDnSN+/L6M27Kj0UwVrK6nCdarN4= X-Google-Smtp-Source: AGHT+IGWUjq8+mLs9WqT7WHBB5ozUaKWK8M+jK4LJW0Rs14Ykv1XcALw946VWanjbMwu3MarcQnkOXADrv8pFnpdBQw= X-Received: by 2002:a05:6102:5089:b0:492:a11f:a87a with SMTP id ada2fe7eead31-4978859828fmr6447009137.25.1724025703628; Sun, 18 Aug 2024 17:01:43 -0700 (PDT) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Mon, 19 Aug 2024 08:00:00 +0800 Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Joe Conway Cc: "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000a62eb3061ffe03c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a62eb3061ffe03c4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Apr 1, 2024 at 8:00=E2=80=AFPM jian he wrote: > rebased. minor cosmetic error message change. I think all the issues in this thread have been addressed. --000000000000a62eb3061ffe03c4 Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0001-introduce-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v11-0001-introduce-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzxnvpzk0 RnJvbSBiOTZkZmU0MWYwOTM1YjA4YjExOTBmMzk5ZTI5ZWUyNDUwMTY5NTI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgQXVnIDIwMjQgMTE6MDg6MjUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MSAxLzJdIGludHJvZHVjZSBqc29uIGZvcm1hdCBmb3IgQ09QWSBUTwoKIGpzb24gZm9ybWF0IGlz IG9ubHkgYWxsb3dlZCBpbiBDT1BZIFRPIG9wZXJhdGlvbi4KIGFsc28gY2Fubm90IGJlIHVzZWQg d2l0aCBoZWFkZXIgb3B0aW9uLgoKIGRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FM dmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBtYWls LmdtYWlsLmNvbQogZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUz LTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9y ZWYvY29weS5zZ21sICAgICAgICAgfCAgNSArKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHku YyAgICAgICAgfCAxMyArKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAg IHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICB8ICA4ICsrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAg ICAgIHwgIDUgKystCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwgIDEgKwog c3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oICAgICAgICAgICB8ICAyICsrCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwgMzggKysrKysrKysrKysrKysr KysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwKaW5kZXggMTUxOGFmOGEwNC4uNjE2YWJmNTA4ZSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNn bWwKQEAgLTIxOCw5ICsyMTgsMTQgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgU2Vs ZWN0cyB0aGUgZGF0YSBmb3JtYXQgdG8gYmUgcmVhZCBvciB3cml0dGVuOgogICAgICAgPGxpdGVy YWw+dGV4dDwvbGl0ZXJhbD4sCiAgICAgICA8bGl0ZXJhbD5jc3Y8L2xpdGVyYWw+IChDb21tYSBT ZXBhcmF0ZWQgVmFsdWVzKSwKKyAgICAgIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IChKYXZhU2Ny aXB0IE9iamVjdCBOb3RhdGlvbiksCiAgICAgICBvciA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+ LgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4uCiAgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+anNvbjwvbGl0ZXJhbD4gb3B0 aW9uIGlzIGFsbG93ZWQgb25seSBpbgorICAgICAgPGNvbW1hbmQ+Q09QWSBUTzwvY29tbWFuZD4u CisgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYwppbmRleCAzYmI1NzlhM2E0Li5hM2VlNjVkMDAwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j CkBAIC00OTQsNiArNDk0LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgLyogZGVmYXVsdCBmb3JtYXQgKi8gOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwg ImNzdiIpID09IDApCiAJCQkJb3B0c19vdXQtPmNzdl9tb2RlID0gdHJ1ZTsKKwkJCWVsc2UgaWYg KHN0cmNtcChmbXQsICJqc29uIikgPT0gMCkKKwkJCQlvcHRzX291dC0+anNvbl9tb2RlID0gdHJ1 ZTsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0 LT5iaW5hcnkgPSB0cnVlOwogCQkJZWxzZQpAQCAtNzM5LDYgKzc0MSwxMSBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKKwlpZiAob3B0 c19vdXQtPmpzb25fbW9kZSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBl cnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJIRUFERVIiKSkpOworCiAJ LyogQ2hlY2sgcXVvdGUgKi8KIAlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTgzNyw2ICs4NDQsMTIgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZICVz IGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiLCAiRlJFRVpFIiwKIAkJCQkJCSJDT1BZIFRPIikpKTsK IAorCS8qIENoZWNrIGpzb24gZm9ybWF0ICAqLworCWlmIChvcHRzX291dC0+anNvbl9tb2RlICYm IGlzX2Zyb20pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIkNPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1 c2VkIHdpdGggJXMiLCAiQ09QWSBGUk9NIikpKTsKKwogCWlmIChvcHRzX291dC0+ZGVmYXVsdF9w cmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggOTFkZTQ0 MmY0My4uMTRiYTlmZGU1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTI0LDYgKzI0LDcgQEAK ICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1 dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0zMSw2ICszMiw3IEBACiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK QEAgLTEzOSw5ICsxNDEsMjAgQEAgU2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKIAlwcV9zZW5k Ynl0ZSgmYnVmLCBmb3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLwotCXBxX3NlbmRpbnQxNigm YnVmLCBuYXR0cyk7Ci0JZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCi0JCXBxX3NlbmRpbnQx NigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwlpZiAoIWNzdGF0ZS0+ b3B0cy5qc29uX21vZGUpCisJeworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOworCQlmb3Ig KGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAv KiBwZXItY29sdW1uIGZvcm1hdHMgKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogSlNPTiBt b2RlIGlzIGFsd2F5cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkJICovCisJCXBxX3NlbmRpbnQx NigmYnVmLCAxKTsKKwkJcHFfc2VuZGludDE2KCZidWYsIDApOworCX0KIAlwcV9lbmRtZXNzYWdl KCZidWYpOwogCWNzdGF0ZS0+Y29weV9kZXN0ID0gQ09QWV9GUk9OVEVORDsKIH0KQEAgLTkxNyw3 ICs5MzAsNyBAQCBDb3B5T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCkKIAkvKiBNYWtlIHN1cmUgdGhlIHR1cGxlIGlzIGZ1bGx5IGRlY29uc3RydWN0ZWQg Ki8KIAlzbG90X2dldGFsbGF0dHJzKHNsb3QpOwogCi0JaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5 KQorCWlmICghY3N0YXRlLT5vcHRzLmJpbmFyeSAmJiAhY3N0YXRlLT5vcHRzLmpzb25fbW9kZSkK IAl7CiAJCWJvb2wJCW5lZWRfZGVsaW0gPSBmYWxzZTsKIApAQCAtOTQ1LDcgKzk1OCw3IEBAIENv cHlPbmVSb3dUbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCQkJ fQogCQl9CiAJfQotCWVsc2UKKwllbHNlIGlmICghY3N0YXRlLT5vcHRzLmpzb25fbW9kZSkKIAl7 CiAJCWZvcmVhY2hfaW50KGF0dG51bSwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CkBAIC05NjUs NiArOTc4LDM0IEBAIENvcHlPbmVSb3dUbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KQogCQkJfQogCQl9CiAJfQorCWVsc2UKKwl7CisJCURhdHVtCQlyb3dkYXRhOwor CQlTdHJpbmdJbmZvCXJlc3VsdDsKKworCQkvKgorCQkgKiBpZiBDT1BZIFRPIHNvdXJjZSBkYXRh IGlzIGZyb20gYSBxdWVyeSwgbm90IGEgdGFibGUsIHRoZW4gd2UgbmVlZAorCQkgKiBjb3B5IENv cHlUb1N0YXRlLT5UdXBsZURlc2MtPmF0dHJzIHRvCisJCSAqIHNsb3QtPnR0c190dXBsZURlc2Ny aXB0b3ItPmF0dHJzIGJlY2F1c2UgdGhlIHNsb3QncyBUdXBsZURlc2MtPmF0dHJzCisJCSAqIG1h eSBjaGFuZ2UgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlvbiwgYnV0IGNvbXBvc2l0ZV90b19qc29uIHJl cXVpcmVzCisJCSAqIGNvcnJlY3QgVHVwbGVEZXNjLT5hdHRycyBmb3IgY29uc3RydWN0aW5nIHRo ZSBqc29uIGtleXMuCisJCSAqIGNvbXBvc2l0ZV90b19qc29uIHdpbGwgaXRlcmF0ZSBlYWNoIFR1 cGxlRGVzYy0+YXR0cnMgc28gbm8gbmVlZCB0bworCQkgKiBjb3B5IG90aGVyIGZpbGVkIGluIGNz dGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLgorCQkqLworCQlpZighY3N0YXRlLT5yZWwpCisJCXsK KwkJCW1lbWNweShUdXBsZURlc2NBdHRyKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIDApLAor CQkJCVR1cGxlRGVzY0F0dHIoY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2MsIDApLAorCQkJCWNz dGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLT5uYXR0cyAqIHNpemVvZihGb3JtRGF0YV9wZ19hdHRy aWJ1dGUpKTsKKworCQkJQmxlc3NUdXBsZURlc2Moc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvcik7 CisJCX0KKwkJcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKKwkJ cmVzdWx0ID0gbWFrZVN0cmluZ0luZm8oKTsKKwkJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwg cmVzdWx0LCBmYWxzZSk7CisKKwkJQ29weVNlbmREYXRhKGNzdGF0ZSwgcmVzdWx0LT5kYXRhLCBy ZXN1bHQtPmxlbik7CisJfQogCiAJQ29weVNlbmRFbmRPZlJvdyhjc3RhdGUpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCBjM2YyNTU4MmMzLi43NmJkNmY4OTQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTM1MDAsNiAr MzUwMCwxMCBAQCBjb3B5X29wdF9pdGVtOgogCQkJCXsKIAkJCQkJJCQgPSBtYWtlRGVmRWxlbSgi Zm9ybWF0IiwgKE5vZGUgKikgbWFrZVN0cmluZygiY3N2IiksIEAxKTsKIAkJCQl9CisJCQl8IEpT T04KKwkJCQl7CisJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VT dHJpbmcoImpzb24iKSwgQDEpOworCQkJCX0KIAkJCXwgSEVBREVSX1AKIAkJCQl7CiAJCQkJCSQk ID0gbWFrZURlZkVsZW0oImhlYWRlciIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUpLCBAMSk7 CkBAIC0zNTgyLDYgKzM1ODYsMTAgQEAgY29weV9nZW5lcmljX29wdF9lbGVtOgogCQkJCXsKIAkJ CQkJJCQgPSBtYWtlRGVmRWxlbSgkMSwgJDIsIEAxKTsKIAkJCQl9CisJCQl8IEZPUk1BVF9MQSBj b3B5X2dlbmVyaWNfb3B0X2FyZworCQkJeworCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIs ICQyLCBAMSk7CisJCQl9CiAJCTsKIAogY29weV9nZW5lcmljX29wdF9hcmc6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYwppbmRleCA0ZWVlZWFmMGE2Li5iNDdhZTE0ZjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAg LTg1LDggKzg1LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkFnZ1N0YXRlCiAJSnNvblVuaXF1ZUJ1 aWxkZXJTdGF0ZSB1bmlxdWVfY2hlY2s7CiB9IEpzb25BZ2dTdGF0ZTsKIAotc3RhdGljIHZvaWQg Y29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKLQkJ CQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogc3RhdGljIHZvaWQgYXJyYXlfZGltX3RvX2pz b24oU3RyaW5nSW5mbyByZXN1bHQsIGludCBkaW0sIGludCBuZGltcywgaW50ICpkaW1zLAogCQkJ CQkJCSAgRGF0dW0gKnZhbHMsIGJvb2wgKm51bGxzLCBpbnQgKnZhbGNvdW50LAogCQkJCQkJCSAg SnNvblR5cGVDYXRlZ29yeSB0Y2F0ZWdvcnksIE9pZCBvdXRmdW5jb2lkLApAQCAtNTE2LDggKzUx NCw5IEBAIGFycmF5X3RvX2pzb25faW50ZXJuYWwoRGF0dW0gYXJyYXksIFN0cmluZ0luZm8gcmVz dWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogCiAvKgogICogVHVybiBhIGNvbXBvc2l0ZSAvIHJl Y29yZCBpbnRvIEpTT04uCisgKiBFeHBvcnRlZCBzbyBDT1BZIFRPIGNhbiB1c2UgaXQuCiAgKi8K LXN0YXRpYyB2b2lkCit2b2lkCiBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0 cmluZ0luZm8gcmVzdWx0LCBib29sIHVzZV9saW5lX2ZlZWRzKQogewogCUhlYXBUdXBsZUhlYWRl ciB0ZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCAxNDFmZDQ4ZGMxLi5mZjZlY2M3YWU3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCkBAIC02Miw2ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRp b25zCiAJYm9vbAkJYmluYXJ5OwkJCS8qIGJpbmFyeSBmb3JtYXQ/ICovCiAJYm9vbAkJZnJlZXpl OwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCiAJYm9vbAkJY3N2X21vZGU7CQkvKiBD b21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLworCWJvb2wJCWpzb25fbW9kZTsJCS8qIEpT T04gZm9ybWF0PyAqLwogCUNvcHlIZWFkZXJDaG9pY2UgaGVhZGVyX2xpbmU7CS8qIGhlYWRlciBs aW5lPyAqLwogCWNoYXIJICAgKm51bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcgKHNl cnZlciBlbmNvZGluZyEpICovCiAJaW50CQkJbnVsbF9wcmludF9sZW47IC8qIGxlbmd0aCBvZiBz YW1lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVk ZS91dGlscy9qc29uLmgKaW5kZXggNzljMTA2MmUxYi4uYzkwNGVmNmM2ZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaApA QCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAKIC8qIGZ1bmN0 aW9ucyBpbiBqc29uLmMgKi8KK2V4dGVybiB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNv bXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsCisJCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRz KTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uKFN0cmluZ0luZm8gYnVmLCBjb25zdCBjaGFyICpz dHIpOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb25fd2l0aF9sZW4oU3RyaW5nSW5mbyBidWYsIGNv bnN0IGNoYXIgKnN0ciwgaW50IGxlbik7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbl90ZXh0KFN0 cmluZ0luZm8gYnVmLCBjb25zdCB0ZXh0ICp0eHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5v dXQKaW5kZXggNDQxMTQwODlhNi4uNzdjYjM2Y2Q2MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0CkBAIC00Miw2ICs0Miw2MCBAQCBjb3B5IGNvcHl0ZXN0MyB0byBzdGRvdXQgY3N2IGhl YWRlcjsKIGMxLCJjb2wgd2l0aCAsIGNvbW1hIiwiY29sIHdpdGggIiIgcXVvdGUiCiAxLGEsMQog MixiLDIKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFi Y1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9 Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6 NH0KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7InN0eWxlIjoiRE9T IiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3Qi OiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYi LCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxu YiIsImZpbGxlciI6NH0KKy0tIEVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGhlYWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1v ZGUKKy0tIEVycm9yCitjb3B5IGNvcHl0ZXN0IGZyb20gc3Rkb3V0IChmb3JtYXQganNvbik7CitF UlJPUjogIENPUFkganNvbiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggQ09QWSBGUk9NCistLSBl bWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVz dCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHop OworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNF IFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0OiAn IHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRoICIgaW4g aXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAgICAnTW9uIEZlYiAxMCAx NzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOwor aW5zZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQp LAorKEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJi Yic6OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCiso RSdhYWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250 ZXN0IHRvIHN0ZG91dCBqc29uOworeyJpZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEi LCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJsaW5lIHdp dGggJyBpbiBpdDogMiIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoz LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0w ODowMCJ9Cit7ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIxOTk3LTAy LTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiA1 IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoiYWFhXCJi YmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVsbH0KK3siaWQi OjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJhYWFcYmJiYiIsImYy IjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIsImYyIjpudWxsfQoreyJpZCI6NiwiZjEi OiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6NywiZjEiOiJhYWFccmJiYiIsImYyIjpudWxs fQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpudWxsfQogY3JlYXRlIHRlbXAgdGFibGUg Y29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0YWI6IAkiIHRleHQpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5LnNxbAppbmRleCBlMmRkMjRjYjM1Li42N2Y3N2Y2NTEyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5LnNxbApAQCAtNTQsNiArNTQsNDQgQEAgdGhpcyBpcyBqdXN0IGEgbGluZSBmdWxsIG9mIGp1 bmsgdGhhdCB3b3VsZCBlcnJvciBvdXQgaWYgcGFyc2VkCiAKIGNvcHkgY29weXRlc3QzIHRvIHN0 ZG91dCBjc3YgaGVhZGVyOwogCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZh cmlvdXMgc3R5bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOworCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworCistLSBFcnJvcgorY29weSBjb3B5dGVzdCB0 byBzdGRvdXQgKGZvcm1hdCBqc29uLCBoZWFkZXIpOworLS0gRXJyb3IKK2NvcHkgY29weXRlc3Qg ZnJvbSBzdGRvdXQgKGZvcm1hdCBqc29uKTsKKworLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0 ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAorICAgIGlkIGJpZ3NlcmlhbCwK KyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFtcHR6KTsKKworaW5zZXJ0IGludG8gY29weWpz b250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhF TgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAg ICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0Cisg ICAgICAgICBFTkQsCisgICAgICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAg ZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworCitpbnNlcnQgaW50byBjb3B5anNv bnRlc3QgKGYxKSB2YWx1ZXMKKyhFJ2FhYVwiYmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRl eHQpLAorKEUnYWFhXC9iYmInOjp0ZXh0KSwKKyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFc ZmJiYic6OnRleHQpLAorKEUnYWFhXG5iYmInOjp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCks CisoRSdhYWFcdGJiYic6OnRleHQpOworCitjb3B5IGNvcHlqc29udGVzdCB0byBzdGRvdXQganNv bjsKKwogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUg d2l0aCB0YWI6IAkiIHRleHQpOwoKYmFzZS1jb21taXQ6IDAzZTliOTU4ZWVmNDQwNDZjMDA5MmYx ZjM0ZGE0YjJkZTBmOTA3MWQKLS0gCjIuMzQuMQoK --000000000000a62eb3061ffe03c4 Content-Type: text/x-patch; charset="US-ASCII"; name="v11-0002-Add-option-force_array-for-COPY-TO.patch" Content-Disposition: attachment; filename="v11-0002-Add-option-force_array-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzxnvpzr1 RnJvbSBjYjAwNmMyYWQyY2E2NTJlZmE4ODRlMDU4YTBjZWM0OTFmZGU0YjhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgQXVnIDIwMjQgMTI6NDU6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MSAyLzJdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgVE8KCiBmb3JjZV9hcnJheSBv cHRpb24gY2FuIG9ubHkgYmUgdXNlZCBpbiBDT1BZIFRPIHdpdGggSlNPTiBmb3JtYXQuCiBpdCBt YWtlIHRoZSBvdXRwdXQganNvbiBvdXRwdXQgbGlrZSBqc29uIGFycmF5IHR5cGUuCgogZGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lpMnpnVDA3 dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCiBkaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bqb2Vj b253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDE0ICsr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDI5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAg ICAgIHwgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8IDIzICsrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbCAgICAgIHwg IDkgKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5z Z21sCmluZGV4IDYxNmFiZjUwOGUuLjQ2NTllNDllYzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC00Myw2 ICs0Myw3IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFt ZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICBGT1JDRV9RVU9URSB7ICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAg IEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQorICAgIEZPUkNFX0FSUkFZIFsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAgT05f RVJST1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVycm9yX2FjdGlvbjwvcmVwbGFj ZWFibGU+CiAgICAgRU5DT0RJTkcgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmNv ZGluZ19uYW1lPC9yZXBsYWNlYWJsZT4nCiAgICAgTE9HX1ZFUkJPU0lUWSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dmVyYm9zaXR5PC9yZXBsYWNlYWJsZT4KQEAgLTM5MCw2ICszOTEs MTkgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5GT1JDRV9B UlJBWTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IEZvcmNlIG91dHB1dCBvZiBzcXVhcmUgYnJhY2tldHMgYXMgYXJyYXkgZGVjb3JhdGlvbnMgYXQg dGhlIGJlZ2lubmluZworICAgICAgYW5kIGVuZCBvZiBvdXRwdXQsIGFuZCBjb21tYXMgYmV0d2Vl biB0aGUgcm93cy4gSXQgaXMgYWxsb3dlZCBvbmx5IGluCisgICAgICA8Y29tbWFuZD5DT1BZIFRP PC9jb21tYW5kPiwgYW5kIG9ubHkgd2hlbiB1c2luZworICAgICAgPGxpdGVyYWw+SlNPTjwvbGl0 ZXJhbD4gZm9ybWF0LiBUaGUgZGVmYXVsdCBpcworICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVy YWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFs PjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggYTNlZTY1ZDAwMC4u MjQ3ZmYxZmNkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDcwLDYgKzQ3MCw3IEBAIFByb2Nlc3ND b3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJYm9vbAkJaGVhZGVyX3NwZWNpZmllZCA9 IGZhbHNlOwogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192 ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CisJYm9vbAkJZm9yY2VfYXJyYXlfc3BlY2lmaWVk ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqb3B0aW9uOwogCiAJLyogU3VwcG9ydCBleHRlcm5hbCB1 c2UgZm9yIG9wdGlvbiBzYW5pdHkgY2hlY2tpbmcgKi8KQEAgLTYyNCw2ICs2MjUsMTMgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJZGVmZWwtPmRlZm5h bWUpLAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikp KTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJmb3JjZV9hcnJheSIp ID09IDApCisJCXsKKwkJCWlmIChmb3JjZV9hcnJheV9zcGVjaWZpZWQpCisJCQkJZXJyb3JDb25m bGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisJCQlmb3JjZV9hcnJheV9zcGVjaWZpZWQg PSB0cnVlOworCQkJb3B0c19vdXQtPmZvcmNlX2FycmF5ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7 CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAib25fZXJyb3IiKSA9PSAw KQogCQl7CiAJCQlpZiAob25fZXJyb3Jfc3BlY2lmaWVkKQpAQCAtODUwLDYgKzg1OCwxMSBAQCBQ cm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJDT1BZIGpzb24gbW9kZSBj YW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIkNPUFkgRlJPTSIpKSk7CiAKKwlpZiAoIW9wdHNfb3V0 LT5qc29uX21vZGUgJiYgb3B0c19vdXQtPmZvcmNlX2FycmF5KQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNn KCJDT1BZICVzIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09OIG1vZGUiLCAiRk9SQ0VfQVJSQVkiKSkp OworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwppbmRleCAxNGJhOWZkZTUwLi42NDljNDI1ZGZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYwpAQCAtODEsNiArODEsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURh dGEKIAlMaXN0CSAgICphdHRudW1saXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51bXMgdG8g Y29weSAqLwogCWNoYXIJICAgKmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNU RE9VVCAqLwogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJvZ3JhbSB0 byBwb3Blbj8gKi8KKwlib29sCQlqc29uX3Jvd19kZWxpbV9uZWVkZWQ7CS8qIG5lZWQgZGVsaW1p dGVyIHRvIHN0YXJ0IG5leHQganNvbiBhcnJheSBlbGVtZW50ICovCiAJY29weV9kYXRhX2Rlc3Rf Y2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAKIAlDb3B5 Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtODU0LDYgKzg1NSwxNiBAQCBEb0NvcHlUbyhDb3B5VG9T dGF0ZSBjc3RhdGUpCiAKIAkJCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRlKTsKIAkJfQorCQkvKgor CQkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIEZPUkNFX0FSUkFZIGhhcyBiZWVu IHNwZWNpZmllZCBzZW5kCisJCSAqIHRoZSBvcGVuaW5nIGJyYWNrZXQuCisJCSovCisJCWlmIChj c3RhdGUtPm9wdHMuanNvbl9tb2RlICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJewor CQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRl KTsKKwkJfQorCiAJfQogCiAJaWYgKGNzdGF0ZS0+cmVsKQpAQCAtOTAxLDYgKzkxMiwxNSBAQCBE b0NvcHlUbyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRlKTsK IAl9CiAKKwkvKgorCSAqIElmIEpTT04gaGFzIGJlZW4gcmVxdWVzdGVkLCBhbmQgRk9SQ0VfQVJS QVkgaGFzIGJlZW4gc3BlY2lmaWVkIHNlbmQgdGhlCisJICogY2xvc2luZyBicmFja2V0LgorCSov CisJaWYgKGNzdGF0ZS0+b3B0cy5qc29uX21vZGUgJiYgY3N0YXRlLT5vcHRzLmZvcmNlX2FycmF5 KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ10nKTsKKwkJQ29weVNlbmRFbmRPZlJvdyhj c3RhdGUpOworCX0KIAlNZW1vcnlDb250ZXh0RGVsZXRlKGNzdGF0ZS0+cm93Y29udGV4dCk7CiAK IAlpZiAoZmVfY29weSkKQEAgLTEwMDQsNiArMTAyNCwxNSBAQCBDb3B5T25lUm93VG8oQ29weVRv U3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAkJcmVzdWx0ID0gbWFrZVN0cmlu Z0luZm8oKTsKIAkJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgcmVzdWx0LCBmYWxzZSk7CiAK KwkJaWYgKGNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVkICYmIGNzdGF0ZS0+b3B0cy5mb3Jj ZV9hcnJheSkKKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcsJyk7CisJCWVsc2UgaWYgKGNzdGF0 ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJeworCQkJLyogZmlyc3Qgcm93IG5lZWRzIG5vIGRlbGlt aXRlciAqLworCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJyAnKTsKKwkJCWNzdGF0ZS0+anNvbl9y b3dfZGVsaW1fbmVlZGVkID0gdHJ1ZTsKKwkJfQorCiAJCUNvcHlTZW5kRGF0YShjc3RhdGUsIHJl c3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IGZmNmVj YzdhZTcuLmY3NmZlOGZhZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTgxLDYgKzgxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAlMaXN0CSAgICpmb3JjZV9udWxsOwkJLyog bGlzdCBvZiBjb2x1bW4gbmFtZXMgKi8KIAlib29sCQlmb3JjZV9udWxsX2FsbDsgLyogRk9SQ0Vf TlVMTCAqPyAqLwogCWJvb2wJICAgKmZvcmNlX251bGxfZmxhZ3M7CS8qIHBlci1jb2x1bW4gQ1NW IEZOIGZsYWdzICovCisJYm9vbAkJZm9yY2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29y YXRpb25zICovCiAJYm9vbAkJY29udmVydF9zZWxlY3RpdmVseTsJLyogZG8gc2VsZWN0aXZlIGJp bmFyeSBjb252ZXJzaW9uPyAqLwogCUNvcHlPbkVycm9yQ2hvaWNlIG9uX2Vycm9yOyAvKiB3aGF0 IHRvIGRvIHdoZW4gZXJyb3IgaGFwcGVuZWQgKi8KIAlDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlIGxv Z192ZXJib3NpdHk7CS8qIHZlcmJvc2l0eSBvZiBsb2dnZWQgbWVzc2FnZXMgKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2NvcHkub3V0CmluZGV4IDc3Y2IzNmNkNjEuLmVkMWNiNmIyOGUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNTksNiArNTksMjkgQEAgRVJST1I6ICBjYW5ub3Qg c3BlY2lmeSBIRUFERVIgaW4gSlNPTiBtb2RlCiAtLSBFcnJvcgogY29weSBjb3B5dGVzdCBmcm9t IHN0ZG91dCAoZm9ybWF0IGpzb24pOwogRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3QgYmUg dXNlZCB3aXRoIENPUFkgRlJPTQorLS1FcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworRVJST1I6ICBDT1BZIEZPUkNFX0FSUkFZIGNh biBvbmx5IHVzZWQgd2l0aCBKU09OIG1vZGUKKy0tb2sKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworWworIHsic3R5bGUiOiJET1MiLCJ0ZXN0Ijoi YWJjXHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRl ZiIsImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVy IjozfQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmls bGVyIjo0fQorXQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9h cnJheSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxs ZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Ciss eyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoi ZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJz dHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVu aXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6 ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJc XFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMK IGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb3B5LnNxbAppbmRleCA2N2Y3N2Y2NTEyLi4yOGY2OThlY2M2IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5LnNxbApAQCAtNjQsNiArNjQsMTUgQEAgY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1h dCBqc29uLCBoZWFkZXIpOwogLS0gRXJyb3IKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRvdXQgKGZv cm1hdCBqc29uKTsKIAorLS1FcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBj c3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLW9rCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGZvcmNlX2FycmF5KTsKKworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKKworY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSBmYWxzZSk7CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNo YXJhY3RlcnMKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2Vy aWFsLAotLSAKMi4zNC4xCgo= --000000000000a62eb3061ffe03c4--