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 1rJxo1-00HFfb-8n for pgsql-hackers@arkaria.postgresql.org; Sun, 31 Dec 2023 15:32:49 +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 1rJxnz-008e6n-IP for pgsql-hackers@arkaria.postgresql.org; Sun, 31 Dec 2023 15:32:47 +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 1rJxnz-008e6e-7P for pgsql-hackers@lists.postgresql.org; Sun, 31 Dec 2023 15:32:47 +0000 Received: from mail.verite.pro ([185.16.44.216]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rJxns-00EqjQ-Je for pgsql-hackers@postgresql.org; Sun, 31 Dec 2023 15:32:46 +0000 Received: by mail.verite.pro (Postfix, from userid 1000) id A119E8C136D; Sun, 31 Dec 2023 16:32:38 +0100 (CET) MIME-Version: 1.0 From: "Daniel Verite" Subject: Re: Fixing backslash dot for COPY FROM...CSV To: pgsql-hackers@postgresql.org Cc: "vignesh C" In-Reply-To: <984e45ea-591a-4f6e-8f1f-165589495500@manitou-mail.org> Date: Sun, 31 Dec 2023 16:32:33 +0100 Message-Id: <650f6285-51cd-4e14-8bb6-e196984caf6c@manitou-mail.org> X-Mailer: Manitou v1.7.3 Content-type: multipart/mixed; boundary="----------=_1704036758-2636-0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format... ------------=_1704036758-2636-0 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, The CI patch tester fails on this patch, because it has a label at the end of a C block, which I'm learning is a C23 feature that happens to be supported by gcc 11 [1], but is not portable. PFA an update fixing this, plus removing an obsolete chunk in the COPY documentation that v2 left out. [1] https://gcc.gnu.org/onlinedocs/gcc/Mixed-Labels-and-Declarations.html Best regards, --=20 Daniel V=E9rit=E9 https://postgresql.verite.pro/ Twitter: @DanielVerite ------------=_1704036758-2636-0 Content-Type: text-x-patch; name="v3-0001-Support-backslash-dot-on-a-line-by-itself-as-vali.patch" Content-Disposition: attachment; filename="v3-0001-Support-backslash-dot-on-a-line-by-itself-as-vali.patch" Content-Transfer-Encoding: base64 RnJvbSA5OGYzOGFmZjQ0MGFkNjgzYWExYmQ3YTMwZmQ5NjBmMWQwMTAxMTkx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RGFu aWVsPTIwVj1DMz1BOXJpdD1DMz1BOT89IDxkYW5pZWxAbWFuaXRvdS1tYWls Lm9yZz4KRGF0ZTogU3VuLCAzMSBEZWMgMjAyMyAxNDo0NzowNSArMDEwMApT dWJqZWN0OiBbUEFUQ0ggdjRdIFN1cHBvcnQgYmFja3NsYXNoLWRvdCBvbiBh IGxpbmUgYnkgaXRzZWxmIGFzIHZhbGlkIGRhdGEgaW4KIENPUFkgRlJPTS4u LkNTVgoKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAg ICAgfCAgNiArLS0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAg ICAgICB8ICA0IC0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBh cnNlLmMgfCA1NyArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMv YmluL3BzcWwvY29weS5jICAgICAgICAgICAgICAgICAgfCAzMiArKysrKysr KysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0 ICAgfCAxOCArKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHku c3FsICAgICAgICB8IDEyICsrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA2NyBp bnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y29weS5zZ21sCmluZGV4IDE4ZWNjNjljMzMuLmU3MTkwNTNlM2QgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY29weS5zZ21sCkBAIC03NjEsMTEgKzc2MSw3IEBAIENP UFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvdW50PC9yZXBs YWNlYWJsZT4KICAgICBmb3JtYXQsIDxsaXRlcmFsPlwuPC9saXRlcmFsPiwg dGhlIGVuZC1vZi1kYXRhIG1hcmtlciwgY291bGQgYWxzbyBhcHBlYXIKICAg ICBhcyBhIGRhdGEgdmFsdWUuICBUbyBhdm9pZCBhbnkgbWlzaW50ZXJwcmV0 YXRpb24sIGEgPGxpdGVyYWw+XC48L2xpdGVyYWw+CiAgICAgZGF0YSB2YWx1 ZSBhcHBlYXJpbmcgYXMgYSBsb25lIGVudHJ5IG9uIGEgbGluZSBpcyBhdXRv bWF0aWNhbGx5Ci0gICAgcXVvdGVkIG9uIG91dHB1dCwgYW5kIG9uIGlucHV0 LCBpZiBxdW90ZWQsIGlzIG5vdCBpbnRlcnByZXRlZCBhcyB0aGUKLSAgICBl bmQtb2YtZGF0YSBtYXJrZXIuICBJZiB5b3UgYXJlIGxvYWRpbmcgYSBmaWxl IGNyZWF0ZWQgYnkgYW5vdGhlcgotICAgIGFwcGxpY2F0aW9uIHRoYXQgaGFz IGEgc2luZ2xlIHVucXVvdGVkIGNvbHVtbiBhbmQgbWlnaHQgaGF2ZSBhCi0g ICAgdmFsdWUgb2YgPGxpdGVyYWw+XC48L2xpdGVyYWw+LCB5b3UgbWlnaHQg bmVlZCB0byBxdW90ZSB0aGF0IHZhbHVlIGluIHRoZQotICAgIGlucHV0IGZp bGUuCisgICAgcXVvdGVkIG9uIG91dHB1dC4KICAgIDwvcGFyYT4KIAogICAg PG5vdGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVm LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKaW5kZXgg Y2M3ZDc5NzE1OS4uZDk0ZTNjYWNmYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbApAQCAtMTExOSwxMCArMTExOSw2IEBAIElOU0VSVCBJ TlRPIHRibDEgVkFMVUVTICgkMSwgJDIpIFxiaW5kICdmaXJzdCB2YWx1ZScg J3NlY29uZCB2YWx1ZScgXGcKICAgICAgICAgZGVzdGluYXRpb24sIGJlY2F1 c2UgYWxsIGRhdGEgbXVzdCBwYXNzIHRocm91Z2ggdGhlIGNsaWVudC9zZXJ2 ZXIKICAgICAgICAgY29ubmVjdGlvbi4gIEZvciBsYXJnZSBhbW91bnRzIG9m IGRhdGEgdGhlIDxhY3JvbnltPlNRTDwvYWNyb255bT4KICAgICAgICAgY29t bWFuZCBtaWdodCBiZSBwcmVmZXJhYmxlLgotICAgICAgICBBbHNvLCBiZWNh dXNlIG9mIHRoaXMgcGFzcy10aHJvdWdoIG1ldGhvZCwgPGxpdGVyYWw+XGNv cHkKLSAgICAgICAgLi4uIGZyb208L2xpdGVyYWw+IGluIDxhY3JvbnltPkNT VjwvYWNyb255bT4gbW9kZSB3aWxsIGVycm9uZW91c2x5Ci0gICAgICAgIHRy ZWF0IGEgPGxpdGVyYWw+XC48L2xpdGVyYWw+IGRhdGEgdmFsdWUgYWxvbmUg b24gYSBsaW5lIGFzIGFuCi0gICAgICAgIGVuZC1vZi1pbnB1dCBtYXJrZXIu CiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC90aXA+CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBmNTUz NzM0NTgyLi42N2UwNDZkNDUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb21wYXJzZS5jCkBAIC0xMzYsMTQgKzEzNiw2IEBAIGlm ICgxKSBcCiAJfSBcCiB9IGVsc2UgKCh2b2lkKSAwKQogCi0vKiBVbmRvIGFu eSByZWFkLWFoZWFkIGFuZCBqdW1wIG91dCBvZiB0aGUgYmxvY2suICovCi0j ZGVmaW5lIE5PX0VORF9PRl9DT1BZX0dPVE8gXAotaWYgKDEpIFwKLXsgXAot CWlucHV0X2J1Zl9wdHIgPSBwcmV2X3Jhd19wdHIgKyAxOyBcCi0JZ290byBu b3RfZW5kX29mX2NvcHk7IFwKLX0gZWxzZSAoKHZvaWQpIDApCi0KIC8qIE5P VEU6IHRoZXJlJ3MgYSBjb3B5IG9mIHRoaXMgaW4gY29weXRvLmMgKi8KIHN0 YXRpYyBjb25zdCBjaGFyIEJpbmFyeVNpZ25hdHVyZVsxMV0gPSAiUEdDT1BZ XG5cMzc3XHJcblwwIjsKIApAQCAtMTEzNyw3ICsxMTI5LDYgQEAgQ29weVJl YWRMaW5lVGV4dChDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAlib29sCQlyZXN1 bHQgPSBmYWxzZTsKIAogCS8qIENTViB2YXJpYWJsZXMgKi8KLQlib29sCQlm aXJzdF9jaGFyX2luX2xpbmUgPSB0cnVlOwogCWJvb2wJCWluX3F1b3RlID0g ZmFsc2UsCiAJCQkJbGFzdF93YXNfZXNjID0gZmFsc2U7CiAJY2hhcgkJcXVv dGVjID0gJ1wwJzsKQEAgLTEzMzUsMTAgKzEzMjYsOSBAQCBDb3B5UmVhZExp bmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQl9CiAKIAkJLyoKLQkJ ICogSW4gQ1NWIG1vZGUsIHdlIG9ubHkgcmVjb2duaXplIFwuIGFsb25lIG9u IGEgbGluZS4gIFRoaXMgaXMgYmVjYXVzZQotCQkgKiBcLiBpcyBhIHZhbGlk IENTViBkYXRhIHZhbHVlLgorCQkgKiBJbiBDU1YgbW9kZSwgYmFja3NsYXNo IGlzIGEgbm9ybWFsIGNoYXJhY3Rlci4KIAkJICovCi0JCWlmIChjID09ICdc XCcgJiYgKCFjc3RhdGUtPm9wdHMuY3N2X21vZGUgfHwgZmlyc3RfY2hhcl9p bl9saW5lKSkKKwkJaWYgKGMgPT0gJ1xcJyAmJiAhY3N0YXRlLT5vcHRzLmNz dl9tb2RlKQogCQl7CiAJCQljaGFyCQljMjsKIApAQCAtMTM3MSwyMSArMTM2 MSwxNSBAQCBDb3B5UmVhZExpbmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRl KQogCiAJCQkJCWlmIChjMiA9PSAnXG4nKQogCQkJCQl7Ci0JCQkJCQlpZiAo IWNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKLQkJCQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9CQURfQ09QWV9GSUxFX0ZP Uk1BVCksCi0JCQkJCQkJCQkgZXJybXNnKCJlbmQtb2YtY29weSBtYXJrZXIg ZG9lcyBub3QgbWF0Y2ggcHJldmlvdXMgbmV3bGluZSBzdHlsZSIpKSk7Ci0J CQkJCQllbHNlCi0JCQkJCQkJTk9fRU5EX09GX0NPUFlfR09UTzsKKwkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQkFE X0NPUFlfRklMRV9GT1JNQVQpLAorCQkJCQkJCQkgZXJybXNnKCJlbmQtb2Yt Y29weSBtYXJrZXIgZG9lcyBub3QgbWF0Y2ggcHJldmlvdXMgbmV3bGluZSBz dHlsZSIpKSk7CiAJCQkJCX0KIAkJCQkJZWxzZSBpZiAoYzIgIT0gJ1xyJykK IAkJCQkJewotCQkJCQkJaWYgKCFjc3RhdGUtPm9wdHMuY3N2X21vZGUpCi0J CQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAotCQkJCQkJCQkJIGVycm1zZygi ZW5kLW9mLWNvcHkgbWFya2VyIGNvcnJ1cHQiKSkpOwotCQkJCQkJZWxzZQot CQkJCQkJCU5PX0VORF9PRl9DT1BZX0dPVE87CisJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0JBRF9DT1BZX0ZJTEVf Rk9STUFUKSwKKwkJCQkJCQkJIGVycm1zZygiZW5kLW9mLWNvcHkgbWFya2Vy IGNvcnJ1cHQiKSkpOwogCQkJCQl9CiAJCQkJfQogCkBAIC0xMzk2LDEyICsx MzgwLDkgQEAgQ29weVJlYWRMaW5lVGV4dChDb3B5RnJvbVN0YXRlIGNzdGF0 ZSkKIAogCQkJCWlmIChjMiAhPSAnXHInICYmIGMyICE9ICdcbicpCiAJCQkJ ewotCQkJCQlpZiAoIWNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKLQkJCQkJCWVy ZXBvcnQoRVJST1IsCi0JCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQkFEX0NP UFlfRklMRV9GT1JNQVQpLAotCQkJCQkJCQkgZXJybXNnKCJlbmQtb2YtY29w eSBtYXJrZXIgY29ycnVwdCIpKSk7Ci0JCQkJCWVsc2UKLQkJCQkJCU5PX0VO RF9PRl9DT1BZX0dPVE87CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9CQURfQ09QWV9GSUxFX0ZPUk1BVCksCisJCQkJ CQkJIGVycm1zZygiZW5kLW9mLWNvcHkgbWFya2VyIGNvcnJ1cHQiKSkpOwog CQkJCX0KIAogCQkJCWlmICgoY3N0YXRlLT5lb2xfdHlwZSA9PSBFT0xfTkwg JiYgYzIgIT0gJ1xuJykgfHwKQEAgLTE0MjUsNyArMTQwNiw3IEBAIENvcHlS ZWFkTGluZVRleHQoQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQkJcmVzdWx0 ID0gdHJ1ZTsJLyogcmVwb3J0IEVPRiAqLwogCQkJCWJyZWFrOwogCQkJfQot CQkJZWxzZSBpZiAoIWNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWVsc2UK IAkJCXsKIAkJCQkvKgogCQkJCSAqIElmIHdlIGFyZSBoZXJlLCBpdCBtZWFu cyB3ZSBmb3VuZCBhIGJhY2tzbGFzaCBmb2xsb3dlZCBieQpAQCAtMTQzMywy MyArMTQxNCwxMSBAQCBDb3B5UmVhZExpbmVUZXh0KENvcHlGcm9tU3RhdGUg Y3N0YXRlKQogCQkJCSAqIGFmdGVyIGEgYmFja3NsYXNoIGlzIHNwZWNpYWws IHNvIHdlIHNraXAgb3ZlciB0aGF0IHNlY29uZAogCQkJCSAqIGNoYXJhY3Rl ciB0b28uICBJZiB3ZSBkaWRuJ3QgZG8gdGhhdCBcXC4gd291bGQgYmUKIAkJ CQkgKiBjb25zaWRlcmVkIGFuIGVvZi1vZiBjb3B5LCB3aGlsZSBpbiBub24t Q1NWIG1vZGUgaXQgaXMgYQotCQkJCSAqIGxpdGVyYWwgYmFja3NsYXNoIGZv bGxvd2VkIGJ5IGEgcGVyaW9kLiAgSW4gQ1NWIG1vZGUsCi0JCQkJICogYmFj a3NsYXNoZXMgYXJlIG5vdCBzcGVjaWFsLCBzbyB3ZSB3YW50IHRvIHByb2Nl c3MgdGhlCi0JCQkJICogY2hhcmFjdGVyIGFmdGVyIHRoZSBiYWNrc2xhc2gg anVzdCBsaWtlIGEgbm9ybWFsIGNoYXJhY3RlciwKLQkJCQkgKiBzbyB3ZSBk b24ndCBpbmNyZW1lbnQgaW4gdGhvc2UgY2FzZXMuCisJCQkJICogbGl0ZXJh bCBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBwZXJpb2QuCiAJCQkJICovCiAJ CQkJaW5wdXRfYnVmX3B0cisrOwogCQkJfQogCQl9Ci0KLQkJLyoKLQkJICog VGhpcyBsYWJlbCBpcyBmb3IgQ1NWIGNhc2VzIHdoZXJlIFwuIGFwcGVhcnMg YXQgdGhlIHN0YXJ0IG9mIGEKLQkJICogbGluZSwgYnV0IHRoZXJlIGlzIG1v cmUgdGV4dCBhZnRlciBpdCwgbWVhbmluZyBpdCB3YXMgYSBkYXRhIHZhbHVl LgotCQkgKiBXZSBhcmUgbW9yZSBzdHJpY3QgZm9yIFwuIGluIENTViBtb2Rl IGJlY2F1c2UgXC4gY291bGQgYmUgYSBkYXRhCi0JCSAqIHZhbHVlLCB3aGls ZSBpbiBub24tQ1NWIG1vZGUsIFwuIGNhbm5vdCBiZSBhIGRhdGEgdmFsdWUu Ci0JCSAqLwotbm90X2VuZF9vZl9jb3B5OgotCQlmaXJzdF9jaGFyX2luX2xp bmUgPSBmYWxzZTsKIAl9CQkJCQkJCS8qIGVuZCBvZiBvdXRlciBsb29wICov CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvcHkuYyBiL3Ny Yy9iaW4vcHNxbC9jb3B5LmMKaW5kZXggZGJiYmRiODg5OC4uZjMxYTdhY2Ji NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvcHkuYworKysgYi9zcmMv YmluL3BzcWwvY29weS5jCkBAIC02MjAsMjAgKzYyMCwzNCBAQCBoYW5kbGVD b3B5SW4oUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBib29sIGlz YmluYXJ5LCBQR3Jlc3VsdCAqKnJlcykKIAkJCQkvKiBjdXJyZW50IGxpbmUg aXMgZG9uZT8gKi8KIAkJCQlpZiAoYnVmW2J1ZmxlbiAtIDFdID09ICdcbicp CiAJCQkJewotCQkJCQkvKiBjaGVjayBmb3IgRU9GIG1hcmtlciwgYnV0IG5v dCBvbiBhIHBhcnRpYWwgbGluZSAqLwotCQkJCQlpZiAoYXRfbGluZV9iZWdp bikKKwkJCQkJLyoKKwkJCQkJICogV2hlbiBhdCB0aGUgYmVnaW5uaW5nIG9m IHRoZSBsaW5lLCBjaGVjayBmb3IgRU9GIG1hcmtlci4KKwkJCQkJICogSWYg dGhlIG1hcmtlciBpcyBmb3VuZCBhbmQgdGhlIGRhdGEgaXMgaW5saW5lZCwK KwkJCQkJICogd2UgbXVzdCBzdG9wIGF0IHRoaXMgcG9pbnQuICBJZiBub3Qs IHRoZSBcLiBsaW5lIGNhbiBiZQorCQkJCQkgKiBzZW50IHRvIHRoZSBzZXJ2 ZXIsIGFuZCB3ZSBsZXQgaXQgZGVjaWRlIHdoZXRoZXIKKwkJCQkJICogaXQn cyBhbiBFT0Ygb3Igbm90IGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0OiBpbgor CQkJCQkgKiBiYXNpYyBURVhULCBcLiBpcyBnb2luZyB0byBiZSBpbnRlcnBy ZXRlZCBhcyBhbiBFT0YsIGluCisJCQkJCSAqIENTViwgaXQgd2lsbCBub3Qu CisJCQkJCSAqLworCQkJCQlpZiAoYXRfbGluZV9iZWdpbiAmJiBjb3B5c3Ry ZWFtID09IHBzZXQuY3VyX2NtZF9zb3VyY2UpCiAJCQkJCXsKLQkJCQkJCS8q Ci0JCQkJCQkgKiBUaGlzIGNvZGUgZXJyb25lb3VzbHkgYXNzdW1lcyAnXC4n IG9uIGEgbGluZSBhbG9uZQotCQkJCQkJICogaW5zaWRlIGEgcXVvdGVkIENT ViBzdHJpbmcgdGVybWluYXRlcyB0aGUgXGNvcHkuCi0JCQkJCQkgKiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0UxVGROVlEtMDAw MWp1LUdPQHdyaWdsZXlzLnBvc3RncmVzcWwub3JnCi0JCQkJCQkgKgotCQkJ CQkJICogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9i ZmNkNTdlNC04ZjIzLTRjM2UtYTVkYi0yNTcxZDA5MjA4ZTJAYmV0YS5mYXN0 bWFpbC5jb20KLQkJCQkJCSAqLwogCQkJCQkJaWYgKChsaW5lbGVuID09IDMg JiYgbWVtY21wKGZncmVzdWx0LCAiXFwuXG4iLCAzKSA9PSAwKSB8fAogCQkJ CQkJCShsaW5lbGVuID09IDQgJiYgbWVtY21wKGZncmVzdWx0LCAiXFwuXHJc biIsIDQpID09IDApKQogCQkJCQkJewogCQkJCQkJCWNvcHlkb25lID0gdHJ1 ZTsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIFJlbW92ZSB0aGUgRU9GIG1hcmtl ciBmcm9tIHRoZSBkYXRhIHNlbnQsIHVubGVzcworCQkJCQkJCSAqIHVzaW5n IHRoZSBvYnNvbGV0ZSB2MiBwcm90b2NvbCB0aGF0IG5lZWRzIGl0LgorCQkJ CQkJCSAqIEluIHRoZSBjYXNlIG9mIENTViwgdGhlIEVPRiBtYXJrZXIgbXVz dCBiZQorCQkJCQkJCSAqIHJlbW92ZWQsIG90aGVyd2lzZSBpdCB3b3VsZCBi ZSBpbnRlcnByZXRlZCBieQorCQkJCQkJCSAqIHRoZSBzZXJ2ZXIgYXMgdmFs aWQgZGF0YS4KKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoY29weXN0cmVhbSA9 PSBwc2V0LmN1cl9jbWRfc291cmNlICYmCisJCQkJCQkJCVBRcHJvdG9jb2xW ZXJzaW9uKGNvbm4pID49IDMpCisJCQkJCQkJeworCQkJCQkJCQkqZmdyZXN1 bHQ9J1wwJzsKKwkJCQkJCQkJYnVmbGVuIC09IGxpbmVsZW47CisJCQkJCQkJ fQogCQkJCQkJfQogCQkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NvcHkub3V0CmluZGV4IGI0ODM2NWVjOTguLjY0NWU4NDliYmQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApA QCAtMzIsNiArMzIsMjQgQEAgc2VsZWN0ICogZnJvbSBjb3B5dGVzdCBleGNl cHQgc2VsZWN0ICogZnJvbSBjb3B5dGVzdDI7CiAtLS0tLS0tKy0tLS0tLSst LS0tLS0tLQogKDAgcm93cykKIAorLS0tIHRlc3QgdW5xdW90ZWQgXC4gYXMg ZGF0YSBpbnNpZGUgQ1NWCistLSBkbyBub3QgdXNlIGNvcHkgb3V0IHRvIGV4 cG9ydCB0aGUgZGF0YSwgYXMgaXQgd291bGQgcXVvdGUgXC4KK1xvIDpmaWxl bmFtZQorXHFlY2hvIGxpbmUxCitccWVjaG8gJ1xcLicKK1xxZWNobyBsaW5l MgorXG8KKy0tIGdldCB0aGUgZGF0YSBiYWNrIGluIHdpdGggY29weQordHJ1 bmNhdGUgY29weXRlc3QyOworY29weSBjb3B5dGVzdDIodGVzdCkgZnJvbSA6 J2ZpbGVuYW1lJyBjc3Y7CitzZWxlY3QgdGVzdCBmcm9tIGNvcHl0ZXN0MiBv cmRlciBieSB0ZXN0IGNvbGxhdGUgIkMiOworIHRlc3QgIAorLS0tLS0tLQor IFwuCisgbGluZTEKKyBsaW5lMgorKDMgcm93cykKKwogLS0gdGVzdCBoZWFk ZXIgbGluZSBmZWF0dXJlCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVzdDMg KAogCWMxIGludCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKaW5k ZXggNDNkMmU5MDZkZC4uNjhhNTg3NDBjYiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY29weS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29weS5zcWwKQEAgLTM4LDYgKzM4LDE4IEBAIGNvcHkgY29weXRl c3QyIGZyb20gOidmaWxlbmFtZScgY3N2IHF1b3RlICcnJycgZXNjYXBlIEUn XFwnOwogCiBzZWxlY3QgKiBmcm9tIGNvcHl0ZXN0IGV4Y2VwdCBzZWxlY3Qg KiBmcm9tIGNvcHl0ZXN0MjsKIAorLS0tIHRlc3QgdW5xdW90ZWQgXC4gYXMg ZGF0YSBpbnNpZGUgQ1NWCistLSBkbyBub3QgdXNlIGNvcHkgb3V0IHRvIGV4 cG9ydCB0aGUgZGF0YSwgYXMgaXQgd291bGQgcXVvdGUgXC4KK1xvIDpmaWxl bmFtZQorXHFlY2hvIGxpbmUxCitccWVjaG8gJ1xcLicKK1xxZWNobyBsaW5l MgorXG8KKy0tIGdldCB0aGUgZGF0YSBiYWNrIGluIHdpdGggY29weQordHJ1 bmNhdGUgY29weXRlc3QyOworY29weSBjb3B5dGVzdDIodGVzdCkgZnJvbSA6 J2ZpbGVuYW1lJyBjc3Y7CitzZWxlY3QgdGVzdCBmcm9tIGNvcHl0ZXN0MiBv cmRlciBieSB0ZXN0IGNvbGxhdGUgIkMiOworCiAKIC0tIHRlc3QgaGVhZGVy IGxpbmUgZmVhdHVyZQogCi0tIAoyLjM0LjEKCg== ------------=_1704036758-2636-0--