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 1sh0Eb-00BWkJ-6f for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Aug 2024 05:19:45 +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 1sh0EY-00HAAo-Uf for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Aug 2024 05:19:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sh0EY-00HAAg-I8 for pgsql-hackers@lists.postgresql.org; Thu, 22 Aug 2024 05:19:43 +0000 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sh0EU-000tjW-Qr for pgsql-hackers@postgresql.org; Thu, 22 Aug 2024 05:19:42 +0000 Received: by mail-vs1-xe34.google.com with SMTP id ada2fe7eead31-498debdf653so164989137.1 for ; Wed, 21 Aug 2024 22:19:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724303978; x=1724908778; 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=pD3hbMVAqu7CbS8OZBQOaUr21EopJTGy1eLXk+qDPz4=; b=S3nTsbrWKKTzpfr4X/HyE5COD1j2nrdddZrgegpvHfo8Pn7Td96a8FGXI6HPat/H52 u6OtYqPazjZA6Kn1nREsaJS64e8j1dC3GrPKPYG5f3ms/7Rbeu57w1P2k/65XRUMNR3N lDV6A5oyspBFXbigwTekgw16qKslZDa+9w+tlyrYbxLL7WWB9MEjYtxGQnDu62Kc0YFj N9CWAcVcJuzLV4+AtHGw3zhqdZFbuSyg/Ojz7/haEvHmnBEkwMGl2ARFR9KTR120XSi7 tJwMQC/fsLCATM2mttAnGElx5v5jCu1lTOfCq2s+0+W1P11lKW+9MFzPT6rmoNA3aNQ7 1Igw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724303978; x=1724908778; 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=pD3hbMVAqu7CbS8OZBQOaUr21EopJTGy1eLXk+qDPz4=; b=NBx2WfPPEOYewdNejjGxchyFcWplhhjywp9JDmtaSzNbL/TGMbusYJoq9XgQBSi8hA WFFFOGiWPQ6xEqej0WM9pTJXtmTkKrKE5Ka8626v2030nNKpUkkBCg6ltkm/VDgQRvf8 2DStZf/x0NZbeXmghT4FQRjrN69luIuiG8Oy7yIirgZuLXsRZ3dNOg7dqOp5dtaCEyL3 cXkZOS6hlu7ILL6zHuouB1mLq6TbYYaCMGZ3P+zN9bjzzqiDF1dC2eSRmc6cuYoGZAtB VKSkvq9H+MB+2BrWJRztL0SMc5V+WuE3NpRAGwAKcM6ITTjEf0KIOoQYBcyMqLl3jUfm eBAw== X-Forwarded-Encrypted: i=1; AJvYcCVGrc5LF+naO8oEndhala/bZMbfvEJ6jQnazvg423pHiEsR4Uj7rnJfGGJcHgPe3FN7E4S3w70xiZVpdh0q@postgresql.org X-Gm-Message-State: AOJu0YyREm8NauzJ1UIbnwCMWmmd4K+IDXQuXcCJwDc0JAna+qXX4JVY 6Z5yuaarcbqnNA6ZxtfvU+TWEiXWdUnxhTeZdKYwFPgwpyouZXzj0WLa5nmBoPaPKtunQRR7ruU UodBBLei/sh73wZ7E6ESois/y/+D3Wab0V1C1GA== X-Google-Smtp-Source: AGHT+IFPLNqDNFWvXgckpbzYLees3gobf8SuYqN8gqhLpZVPrgj3Rrvhzj12C9yC5U1Xdkjn/9lETd7Mr6LGSGNzOjI= X-Received: by 2002:a05:6102:17c6:b0:493:b9f8:82f2 with SMTP id ada2fe7eead31-498d3f5031emr4409818137.25.1724303978325; Wed, 21 Aug 2024 22:19:38 -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: Thu, 22 Aug 2024 13:19: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="0000000000001d074906203ecec0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d074906203ecec0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Aug 19, 2024 at 8:00=E2=80=AFAM jian he wrote: > > 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. hi. I did some minor changes based on the v11. mainly changing some error code from ERRCODE_FEATURE_NOT_SUPPORTED to ERRCODE_INVALID_PARAMETER_VALUE. --0000000000001d074906203ecec0 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Add-option-force_array-for-COPY-TO.patch" Content-Disposition: attachment; filename="v12-0002-Add-option-force_array-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m04rwgj91 RnJvbSAyNGMwYWM3MWYwYTNmZTFmNGViM2Q1NThhZWYzNDYyMDIzNGIyYjM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTI6MTU6NTIgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MiAyLzJdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgVE8KCmZvcmNlX2FycmF5IG9w dGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1hdC4KaXQgbWFr ZSB0aGUgb3V0cHV0IGpzb24gb3V0cHV0IGJlaGF2ZSBsaWtlIGpzb24gYXJyYXkgdHlwZS4KCmRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMdmZVa0J4VFl5NXVXUEZWd3BrXzdpaTJ6 Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBtYWlsLmdtYWlsLmNvbQpkaXNjdXNzaW9uOiBo dHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRjMzAyYzM0Y0Bq b2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICB8IDE0 ICsrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMg KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDI4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAg ICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IHwgMjMgKysr KysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsICAgICAg fCAgOSArKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwKaW5kZXggNjE2YWJmNTA4ZS4uNDY1OWU0OWVjMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTQz LDYgKzQzLDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgIEZPUkNFX1FVT1RFIHsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgfCAqIH0KICAgICBGT1JDRV9OT1RfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAg ICAgRk9SQ0VfTlVMTCB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CisgICAgRk9SQ0VfQVJSQVkgWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBP Tl9FUlJPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3JfYWN0aW9uPC9yZXBs YWNlYWJsZT4KICAgICBFTkNPRElORyAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVu Y29kaW5nX25hbWU8L3JlcGxhY2VhYmxlPicKICAgICBMT0dfVkVSQk9TSVRZIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj52ZXJib3NpdHk8L3JlcGxhY2VhYmxlPgpAQCAtMzkwLDYgKzM5 MSwxOSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPkZPUkNF X0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAg ICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBh dCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9mIG91dHB1dCwgYW5kIGNvbW1hcyBiZXR3 ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkgaW4KKyAgICAgIDxjb21tYW5kPkNPUFkg VE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5nCisgICAgICA8bGl0ZXJhbD5KU09OPC9s aXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisgICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0 ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+T05fRVJST1I8L2xpdGVy YWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyZjY1Yzk2ZGQz Li41NDc5M2ZlY2FiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00NzAsNiArNDcwLDcgQEAgUHJvY2Vz c0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQloZWFkZXJfc3BlY2lmaWVk ID0gZmFsc2U7CiAJYm9vbAkJb25fZXJyb3Jfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9vbAkJbG9n X3ZlcmJvc2l0eV9zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlmb3JjZV9hcnJheV9zcGVjaWZp ZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBwb3J0IGV4dGVybmFs IHVzZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpAQCAtNjI0LDYgKzYyNSwxMyBAQCBQ cm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlkZWZlbC0+ZGVm bmFtZSksCiAJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9u KSkpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5 IikgPT0gMCkKKwkJeworCQkJaWYgKGZvcmNlX2FycmF5X3NwZWNpZmllZCkKKwkJCQllcnJvckNv bmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNlX2FycmF5X3NwZWNpZmll ZCA9IHRydWU7CisJCQlvcHRzX291dC0+Zm9yY2VfYXJyYXkgPSBkZWZHZXRCb29sZWFuKGRlZmVs KTsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbl9lcnJvciIpID09 IDApCiAJCXsKIAkJCWlmIChvbl9lcnJvcl9zcGVjaWZpZWQpCkBAIC04NTAsNiArODU4LDExIEBA IFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygiQ09QWSBqc29uIG1v ZGUgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJDT1BZIEZST00iKSkpOwogCisJaWYgKCFvcHRz X291dC0+anNvbl9tb2RlICYmIG9wdHNfb3V0LT5mb3JjZV9hcnJheSkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkg ZXJybXNnKCJDT1BZICVzIGNhbiBvbmx5IHVzZWQgd2l0aCBKU09OIG1vZGUiLCAiRk9SQ0VfQVJS QVkiKSkpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19m cm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCAxNGJhOWZkZTUwLi5iNTZiNzhhMzMxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYwpAQCAtODEsNiArODEsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9T dGF0ZURhdGEKIAlMaXN0CSAgICphdHRudW1saXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51 bXMgdG8gY29weSAqLwogCWNoYXIJICAgKmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwg Zm9yIFNURE9VVCAqLwogCWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJv Z3JhbSB0byBwb3Blbj8gKi8KKwlib29sCQlqc29uX3Jvd19kZWxpbV9uZWVkZWQ7CS8qIG5lZWQg ZGVsaW1pdGVyIHRvIHN0YXJ0IG5leHQganNvbiBhcnJheSBlbGVtZW50ICovCiAJY29weV9kYXRh X2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAK IAlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtODU0LDYgKzg1NSwxNSBAQCBEb0NvcHlUbyhD b3B5VG9TdGF0ZSBjc3RhdGUpCiAKIAkJCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRlKTsKIAkJfQor CQkvKgorCQkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIEZPUkNFX0FSUkFZIGhh cyBiZWVuIHNwZWNpZmllZCBzZW5kCisJCSAqIHRoZSBvcGVuaW5nIGJyYWNrZXQuCisJCSovCisJ CWlmIChjc3RhdGUtPm9wdHMuanNvbl9tb2RlICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkK KwkJeworCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kRW5kT2ZSb3co Y3N0YXRlKTsKKwkJfQogCX0KIAogCWlmIChjc3RhdGUtPnJlbCkKQEAgLTkwMSw2ICs5MTEsMTUg QEAgRG9Db3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogCQlDb3B5U2VuZEVuZE9mUm93KGNzdGF0 ZSk7CiAJfQogCisJLyoKKwkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIEZPUkNF X0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCBzZW5kIHRoZQorCSAqIGNsb3NpbmcgYnJhY2tldC4K KwkqLworCWlmIChjc3RhdGUtPm9wdHMuanNvbl9tb2RlICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9h cnJheSkKKwl7CisJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICddJyk7CisJCUNvcHlTZW5kRW5kT2ZS b3coY3N0YXRlKTsKKwl9CiAJTWVtb3J5Q29udGV4dERlbGV0ZShjc3RhdGUtPnJvd2NvbnRleHQp OwogCiAJaWYgKGZlX2NvcHkpCkBAIC0xMDA0LDYgKzEwMjMsMTUgQEAgQ29weU9uZVJvd1RvKENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJCXJlc3VsdCA9IG1ha2VT dHJpbmdJbmZvKCk7CiAJCWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEsIHJlc3VsdCwgZmFsc2Up OwogCisJCWlmIChjc3RhdGUtPmpzb25fcm93X2RlbGltX25lZWRlZCAmJiBjc3RhdGUtPm9wdHMu Zm9yY2VfYXJyYXkpCisJCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnLCcpOworCQllbHNlIGlmIChj c3RhdGUtPm9wdHMuZm9yY2VfYXJyYXkpCisJCXsKKwkJCS8qIGZpcnN0IHJvdyBuZWVkcyBubyBk ZWxpbWl0ZXIgKi8KKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcgJyk7CisJCQljc3RhdGUtPmpz b25fcm93X2RlbGltX25lZWRlZCA9IHRydWU7CisJCX0KKwogCQlDb3B5U2VuZERhdGEoY3N0YXRl LCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCBm ZjZlY2M3YWU3Li5mNzZmZThmYWZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC04MSw2ICs4MSw3IEBA IHR5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCiAJTGlzdAkgICAqZm9yY2VfbnVsbDsJ CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJZm9yY2VfbnVsbF9hbGw7IC8qIEZP UkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxsX2ZsYWdzOwkvKiBwZXItY29sdW1u IENTViBGTiBmbGFncyAqLworCWJvb2wJCWZvcmNlX2FycmF5OwkvKiBhZGQgSlNPTiBhcnJheSBk ZWNvcmF0aW9ucyAqLwogCWJvb2wJCWNvbnZlcnRfc2VsZWN0aXZlbHk7CS8qIGRvIHNlbGVjdGl2 ZSBiaW5hcnkgY29udmVyc2lvbj8gKi8KIAlDb3B5T25FcnJvckNob2ljZSBvbl9lcnJvcjsgLyog d2hhdCB0byBkbyB3aGVuIGVycm9yIGhhcHBlbmVkICovCiAJQ29weUxvZ1ZlcmJvc2l0eUNob2lj ZSBsb2dfdmVyYm9zaXR5OwkvKiB2ZXJib3NpdHkgb2YgbG9nZ2VkIG1lc3NhZ2VzICovCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCA3N2NiMzZjZDYxLi5lZDFjYjZiMjhlIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKQEAgLTU5LDYgKzU5LDI5IEBAIEVSUk9SOiAgY2Fu bm90IHNwZWNpZnkgSEVBREVSIGluIEpTT04gbW9kZQogLS0gRXJyb3IKIGNvcHkgY29weXRlc3Qg ZnJvbSBzdGRvdXQgKGZvcm1hdCBqc29uKTsKIEVSUk9SOiAgQ09QWSBqc29uIG1vZGUgY2Fubm90 IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQgY3N2LCBmb3JjZV9hcnJheSB0cnVlKTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9BUlJB WSBjYW4gb25seSB1c2VkIHdpdGggSlNPTiBtb2RlCistLW9rCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVz dCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJj XG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZp bGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIs ImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9y Y2VfYXJyYXkgdHJ1ZSk7CitbCisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwi ZmlsbGVyIjoxfQorLHsic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoy fQorLHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHls ZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsK K3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUi OiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRl c3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJh XFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQogLS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0 ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwKaW5kZXggNjdmNzdmNjUxMi4uMjhmNjk4ZWNjNiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weS5zcWwKQEAgLTY0LDYgKzY0LDE1IEBAIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQganNvbiwgaGVhZGVyKTsKIC0tIEVycm9yCiBjb3B5IGNvcHl0ZXN0IGZyb20gc3Rkb3V0 IChmb3JtYXQganNvbik7CiAKKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQgY3N2LCBmb3JjZV9hcnJheSB0cnVlKTsKKworLS1vaworY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7CisKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0 IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOwogLS0gZW1iZWRkZWQgZXNjYXBl ZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlkIGJp Z3NlcmlhbCwKLS0gCjIuMzQuMQoK --0000000000001d074906203ecec0 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-introduce-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v12-0001-introduce-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m04rwgj00 RnJvbSA1MWYwMzIyYWQ3Y2U3MTU5Y2M0NmY4MDM4MGY5OGQ2MDQ1NjBhMDAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTE6NTg6MTIgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MiAxLzJdIGludHJvZHVjZSBqc29uIGZvcm1hdCBmb3IgQ09QWSBUTwoKIGpzb24gZm9ybWF0IGlz 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 bmRzL2NvcHkuYwppbmRleCAzYmI1NzlhM2E0Li4yZjY1Yzk2ZGQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j CkBAIC00OTQsNiArNDk0LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgLyogZGVmYXVsdCBmb3JtYXQgKi8gOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwg ImNzdiIpID09IDApCiAJCQkJb3B0c19vdXQtPmNzdl9tb2RlID0gdHJ1ZTsKKwkJCWVsc2UgaWYg KHN0cmNtcChmbXQsICJqc29uIikgPT0gMCkKKwkJCQlvcHRzX291dC0+anNvbl9tb2RlID0gdHJ1 ZTsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9wdHNfb3V0 LT5iaW5hcnkgPSB0cnVlOwogCQkJZWxzZQpAQCAtNzM5LDYgKzc0MSwxMSBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhl IG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNh bm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhFQURFUiIpKSk7CiAKKwlpZiAob3B0 c19vdXQtPmpzb25fbW9kZSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNPTiBtb2RlIiwgIkhFQURFUiIpKSk7CisK IAkvKiBDaGVjayBxdW90ZSAqLwogCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0 LT5xdW90ZSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAtODM3LDYgKzg0NCwxMiBAQCBQ cm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSBlcnJtc2coIkNPUFkg JXMgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJGUkVFWkUiLAogCQkJCQkJIkNPUFkgVE8iKSkp OwogCisJLyogQ2hlY2sganNvbiBmb3JtYXQgICovCisJaWYgKG9wdHNfb3V0LT5qc29uX21vZGUg JiYgaXNfZnJvbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJDT1BZIGpzb24gbW9kZSBjYW5ub3Qg YmUgdXNlZCB3aXRoICVzIiwgIkNPUFkgRlJPTSIpKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1 bHRfcHJpbnQpCiAJewogCQlpZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDkx ZGU0NDJmNDMuLjE0YmE5ZmRlNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0yNCw2ICsyNCw3 IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAiZnVu Y2FwaS5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJ0Y29wL3Rj b3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs LmgiCkBAIC0xMzksOSArMTQxLDIwIEBAIFNlbmRDb3B5QmVnaW4oQ29weVRvU3RhdGUgY3N0YXRl KQogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7CiAJcHFf c2VuZGJ5dGUoJmJ1ZiwgZm9ybWF0KTsJLyogb3ZlcmFsbCBmb3JtYXQgKi8KLQlwcV9zZW5kaW50 MTYoJmJ1ZiwgbmF0dHMpOwotCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQotCQlwcV9zZW5k aW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJaWYgKCFjc3Rh dGUtPm9wdHMuanNvbl9tb2RlKQorCXsKKwkJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwkJ Zm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0 KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEpT T04gbW9kZSBpcyBhbHdheXMgb25lIG5vbi1iaW5hcnkgY29sdW1uCisJCSAqLworCQlwcV9zZW5k aW50MTYoJmJ1ZiwgMSk7CisJCXBxX3NlbmRpbnQxNigmYnVmLCAwKTsKKwl9CiAJcHFfZW5kbWVz c2FnZSgmYnVmKTsKIAljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfRlJPTlRFTkQ7CiB9CkBAIC05 MTcsNyArOTMwLDcgQEAgQ29weU9uZVJvd1RvKENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpCiAJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVj dGVkICovCiAJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKIAotCWlmICghY3N0YXRlLT5vcHRzLmJp bmFyeSkKKwlpZiAoIWNzdGF0ZS0+b3B0cy5iaW5hcnkgJiYgIWNzdGF0ZS0+b3B0cy5qc29uX21v ZGUpCiAJewogCQlib29sCQluZWVkX2RlbGltID0gZmFsc2U7CiAKQEAgLTk0NSw3ICs5NTgsNyBA QCBDb3B5T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkK IAkJCX0KIAkJfQogCX0KLQllbHNlCisJZWxzZSBpZiAoIWNzdGF0ZS0+b3B0cy5qc29uX21vZGUp CiAJewogCQlmb3JlYWNoX2ludChhdHRudW0sIGNzdGF0ZS0+YXR0bnVtbGlzdCkKIAkJewpAQCAt OTY1LDYgKzk3OCwzNCBAQCBDb3B5T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCkKIAkJCX0KIAkJfQogCX0KKwllbHNlCisJeworCQlEYXR1bQkJcm93ZGF0 YTsKKwkJU3RyaW5nSW5mbwlyZXN1bHQ7CisKKwkJLyoKKwkJICogaWYgQ09QWSBUTyBzb3VyY2Ug ZGF0YSBpcyBmcm9tIGEgcXVlcnksIG5vdCBhIHRhYmxlLCB0aGVuIHdlIG5lZWQKKwkJICogY29w eSBDb3B5VG9TdGF0ZS0+VHVwbGVEZXNjLT5hdHRycyB0bworCQkgKiBzbG90LT50dHNfdHVwbGVE ZXNjcmlwdG9yLT5hdHRycyBiZWNhdXNlIHRoZSBzbG90J3MgVHVwbGVEZXNjLT5hdHRycworCQkg KiBtYXkgY2hhbmdlIGR1cmluZyBxdWVyeSBleGVjdXRpb24sIGJ1dCBjb21wb3NpdGVfdG9fanNv biByZXF1aXJlcworCQkgKiBjb3JyZWN0IFR1cGxlRGVzYy0+YXR0cnMgZm9yIGNvbnN0cnVjdGlu ZyB0aGUganNvbiBrZXlzLgorCQkgKiBjb21wb3NpdGVfdG9fanNvbiB3aWxsIGl0ZXJhdGUgZWFj aCBUdXBsZURlc2MtPmF0dHJzIHNvIG5vIG5lZWQgdG8KKwkJICogY29weSBvdGhlciBmaWxlZCBp biBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy4KKwkJKi8KKwkJaWYoIWNzdGF0ZS0+cmVsKQor CQl7CisJCQltZW1jcHkoVHVwbGVEZXNjQXR0cihzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCAw KSwKKwkJCQlUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjLCAwKSwKKwkJ CQljc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0dHMgKiBzaXplb2YoRm9ybURhdGFfcGdf YXR0cmlidXRlKSk7CisKKwkJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0c190dXBsZURlc2NyaXB0 b3IpOworCQl9CisJCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7 CisJCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJCWNvbXBvc2l0ZV90b19qc29uKHJvd2Rh dGEsIHJlc3VsdCwgZmFsc2UpOworCisJCUNvcHlTZW5kRGF0YShjc3RhdGUsIHJlc3VsdC0+ZGF0 YSwgcmVzdWx0LT5sZW4pOworCX0KIAogCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRlKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggYzNmMjU1ODJjMy4uNzZiZDZmODk0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNTAw LDYgKzM1MDAsMTAgQEAgY29weV9vcHRfaXRlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVs ZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VTdHJpbmcoImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJ fCBKU09OCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBt YWtlU3RyaW5nKCJqc29uIiksIEAxKTsKKwkJCQl9CiAJCQl8IEhFQURFUl9QCiAJCQkJewogCQkJ CQkkJCA9IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9kZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwg QDEpOwpAQCAtMzU4Miw2ICszNTg2LDEwIEBAIGNvcHlfZ2VuZXJpY19vcHRfZWxlbToKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJfQorCQkJfCBGT1JNQVRf TEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCXsKKwkJCQkkJCA9IG1ha2VEZWZFbGVtKCJmb3Jt YXQiLCAkMiwgQDEpOworCQkJfQogCQk7CiAKIGNvcHlfZ2VuZXJpY19vcHRfYXJnOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29uLmMKaW5kZXggNGVlZWVhZjBhNi4uYjQ3YWUxNGYyMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5j CkBAIC04NSw4ICs4NSw2IEBAIHR5cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpzb25Vbmlx dWVCdWlsZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0YXRpYyB2 b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQs Ci0JCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X2RpbV90 b19qc29uKFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAqZGltcywK IAkJCQkJCQkgIERhdHVtICp2YWxzLCBib29sICpudWxscywgaW50ICp2YWxjb3VudCwKIAkJCQkJ CQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29pZCwKQEAgLTUxNiw4 ICs1MTQsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVtIGFycmF5LCBTdHJpbmdJbmZv IHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAqIFR1cm4gYSBjb21wb3NpdGUg LyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQgc28gQ09QWSBUTyBjYW4gdXNlIGl0Lgog ICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRl LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIHsKIAlIZWFwVHVwbGVI ZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMTQxZmQ0OGRjMS4uZmY2ZWNjN2FlNyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHkuaApAQCAtNjIsNiArNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0 T3B0aW9ucwogCWJvb2wJCWJpbmFyeTsJCQkvKiBiaW5hcnkgZm9ybWF0PyAqLwogCWJvb2wJCWZy ZWV6ZTsJCQkvKiBmcmVlemUgcm93cyBvbiBsb2FkaW5nPyAqLwogCWJvb2wJCWNzdl9tb2RlOwkJ LyogQ29tbWEgU2VwYXJhdGVkIFZhbHVlIGZvcm1hdD8gKi8KKwlib29sCQlqc29uX21vZGU7CQkv KiBKU09OIGZvcm1hdD8gKi8KIAlDb3B5SGVhZGVyQ2hvaWNlIGhlYWRlcl9saW5lOwkvKiBoZWFk ZXIgbGluZT8gKi8KIAljaGFyCSAgICpudWxsX3ByaW50OwkJLyogTlVMTCBtYXJrZXIgc3RyaW5n IChzZXJ2ZXIgZW5jb2RpbmchKSAqLwogCWludAkJCW51bGxfcHJpbnRfbGVuOyAvKiBsZW5ndGgg b2Ygc2FtZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbi5oCmluZGV4IDc5YzEwNjJlMWIuLmM5MDRlZjZjNmUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9qc29u LmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogCiAvKiBm dW5jdGlvbnMgaW4ganNvbi5jICovCitleHRlcm4gdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1 bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LAorCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9m ZWVkcyk7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hh ciAqc3RyKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29uX3dpdGhfbGVuKFN0cmluZ0luZm8gYnVm LCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb25fdGV4 dChTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgdGV4dCAqdHh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0CmluZGV4IDQ0MTE0MDg5YTYuLjc3Y2IzNmNkNjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb3B5Lm91dApAQCAtNDIsNiArNDIsNjAgQEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNz diBoZWFkZXI7CiBjMSwiY29sIHdpdGggLCBjb21tYSIsImNvbCB3aXRoICIiIHF1b3RlIgogMSxh LDEKIDIsYiwyCistLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5 bGVzCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCBqc29uOworeyJzdHlsZSI6IkRPUyIsInRlc3Qi OiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5k ZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVy IjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxs ZXIiOjR9Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6 IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0 ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xy ZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxc blxcbmIiLCJmaWxsZXIiOjR9CistLSBFcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBoZWFkZXIpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBIRUFERVIgaW4gSlNP TiBtb2RlCistLSBFcnJvcgorY29weSBjb3B5dGVzdCBmcm9tIHN0ZG91dCAoZm9ybWF0IGpzb24p OworRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgRlJPTQor LS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNv bnRlc3QgKAorICAgIGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFt cHR6KTsKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAg Q0FTRSBXSEVOIGcuaSAlIDIgPSAwIFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBp dDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAi IGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIg MTAgMTc6MzI6MDEgMTk5NyBQU1QnCisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhp KTsKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0 ZXh0KSwKKyhFJ2FhYVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFh XGJiYmInOjp0ZXh0KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQp LAorKEUnYWFhXHJiYmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7Citjb3B5IGNvcHlq c29udGVzdCB0byBzdGRvdXQganNvbjsKK3siaWQiOjEsImYxIjoibGluZSB3aXRoIFwiIGluIGl0 OiAxIiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjIsImYxIjoibGlu ZSB3aXRoICcgaW4gaXQ6IDIiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJp ZCI6MywiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDMiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6 MDEtMDg6MDAifQoreyJpZCI6NCwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogNCIsImYyIjoiMTk5 Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo1LCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBp dDogNSIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjoxLCJmMSI6ImFh YVwiYmJiIiwiZjIiOm51bGx9Cit7ImlkIjoyLCJmMSI6ImFhYVxcYmJiIiwiZjIiOm51bGx9Cit7 ImlkIjozLCJmMSI6ImFhYS9iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjQsImYxIjoiYWFhXGJiYmIi LCJmMiI6bnVsbH0KK3siaWQiOjUsImYxIjoiYWFhXGZiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjYs ImYxIjoiYWFhXG5iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjcsImYxIjoiYWFhXHJiYmIiLCJmMiI6 bnVsbH0KK3siaWQiOjgsImYxIjoiYWFhXHRiYmIiLCJmMiI6bnVsbH0KIGNyZWF0ZSB0ZW1wIHRh YmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xuYW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvY29weS5zcWwKaW5kZXggZTJkZDI0Y2IzNS4uNjdmNzdmNjUxMiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weS5zcWwKQEAgLTU0LDYgKzU0LDQ0IEBAIHRoaXMgaXMganVzdCBhIGxpbmUgZnVsbCBv ZiBqdW5rIHRoYXQgd291bGQgZXJyb3Igb3V0IGlmIHBhcnNlZAogCiBjb3B5IGNvcHl0ZXN0MyB0 byBzdGRvdXQgY3N2IGhlYWRlcjsKIAorLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUgd2l0 aCB2YXJpb3VzIHN0eWxlcworY29weSBjb3B5dGVzdCB0byBzdGRvdXQganNvbjsKKworY29weSBj b3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKKworLS0gRXJyb3IKK2NvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyKTsKKy0tIEVycm9yCitjb3B5IGNvcHl0 ZXN0IGZyb20gc3Rkb3V0IChmb3JtYXQganNvbik7CisKKy0tIGVtYmVkZGVkIGVzY2FwZWQgY2hh cmFjdGVycworY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKKyAgICBpZCBiaWdzZXJp YWwsCisgICAgZjEgdGV4dCwKKyAgICBmMiB0aW1lc3RhbXB0eik7CisKK2luc2VydCBpbnRvIGNv cHlqc29udGVzdAorICBzZWxlY3QgZy5pLAorICAgICAgICAgQ0FTRSBXSEVOIGcuaSAlIDIgPSAw IFRIRU4KKyAgICAgICAgICAgJ2xpbmUgd2l0aCAnJyBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAg ICAgICAgIEVMU0UKKyAgICAgICAgICAgJ2xpbmUgd2l0aCAiIGluIGl0OiAnIHx8IGcuaTo6dGV4 dAorICAgICAgICAgRU5ELAorICAgICAgICAgJ01vbiBGZWIgMTAgMTc6MzI6MDEgMTk5NyBQU1Qn CisgIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsNSkgYXMgZyhpKTsKKworaW5zZXJ0IGludG8gY29w eWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUn YWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRl eHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKKworY29weSBjb3B5anNvbnRlc3QgdG8gc3Rkb3V0 IGpzb247CisKIGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0NCAoCiAJYzEgaW50LAogCSJjb2xu YW1lIHdpdGggdGFiOiAJIiB0ZXh0KTsKCmJhc2UtY29tbWl0OiA5YmI4NDJmOTVlZjMzODRmMDgy MmMzODZhNGM1Njk3ODBlNjEzZTRlCi0tIAoyLjM0LjEKCg== --0000000000001d074906203ecec0--