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.96) (envelope-from ) id 1w3amS-001NEr-1e for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 14:24:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3amR-006Zzv-0H for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 14:24:51 +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.96) (envelope-from ) id 1w3amQ-006ZzP-1i for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 14:24:51 +0000 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3amO-00000000BAf-1iiS for pgsql-hackers@postgresql.org; Fri, 20 Mar 2026 14:24:50 +0000 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-4094b31a037so1455637fac.1 for ; Fri, 20 Mar 2026 07:24:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774016687; cv=none; d=google.com; s=arc-20240605; b=a1UClrGsQ9oT12+x0lQt9n89upH2XlMOzNV2JMvnmlu746Wye1/D7k4COC+lC9ni1v jIOkYmLXXA3/6xSJnv6dRnUNaaj11oHIPvgleQjkTd/yz68BkkCGj6UNLNGXOvrL1Sug D8KLWXrH6CFUV5e2KM4fSutsRb+syh3STude7Kwl3s0lkPgV1qZHqS3tKCguXXeuf7Mt NrMm86vIIdFE+nm/znuQlySWaZjibpevFOPy9pUbuqjReI9LDphgYdunSVRpR/I26Fa8 itK+ADxCMTF2/RsfDpqrsl28K3oFKbMc7MiPjnf/dZHCq9nmTq3IsyUxMCDT1Qy6Zr4a tHWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=e3zA254C2CI0/ePo08+UDfyncdScoifRitdiqo9sFjI=; fh=Dhf2rJcbgZBNcYgx9IOb9KBLmTir1QBgU/G53kjGFLI=; b=PGQCO8bnmml7PZ8xLDeqTKV24gdp9QRiJC2+phZVnXk/k7GARPOqBdkD3JbLrujtKJ TFusDRkccUGzH1RqAOxhser0OKU3AvQZ8XPaQ1xnLZT1sMxCUUvhRjw7WE74v4S+OyJP q6IUkzGPlculgpZ2F3Dy3UsVmh7qgcsP/rplEhi5E1RAY6mAw+jg4zbWZ8heRIqesMe1 K994/GFGvzzXayeFnSCirTPYT3y96r5W6gnohx0UX3JXNTp6zv0VSODR7mPx7QC+BYgy aCDPLg1STggjgrwhvUIxFhEHWqYIq9nXAB5fxZGpd0rtHJYCp8lw/BToGT3T7WAjn7m2 D3Bg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1774016687; x=1774621487; 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=e3zA254C2CI0/ePo08+UDfyncdScoifRitdiqo9sFjI=; b=VPOxfKF4i/uKGuC2z5Os/9pI9UjOLnfzqy7eNACBAsubMiIINd6dth0aQ/S8Ytvj6w 0rJQWV3cnvn7r3Ixld0lXoVAwgLpxAZY/vu6xb0sOw1rV1uheGkkgdNUFkdrIcwWrhnt dNOZMu/Dqj0G86bz8j9HkxFsbX+iy6cb1GUzGbeNbjCLEh9Az8iH7IBMI1HLRMk32Pum iL4o0BDzWRq1Ufw5PJNRBKWMrWvvYn/p25dQOmga8fnZPRmF5Z21PFYMtk2HFj8VFuQ5 UUOcvV9dPXYYVz8tJOgBcmotXjTnLGX4c0FxCCnHzGvyvDOo94LWIc+V5oHn/Ct42hZC KlJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774016687; x=1774621487; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=e3zA254C2CI0/ePo08+UDfyncdScoifRitdiqo9sFjI=; b=Wyk1RClGca6/SGkQ+cpiEQn7i+ZZ1AuKz8uO847+ZxYJlt4oRBnQrHegJ7ATyZS1sc a9ct/a1gmJruISQAfslrhHveUDOUK70JYqdxm643mbNi/zOz+w0DVC0uNOgo0Naiewr4 vYdC1w2/Q11pZdpwPJCW4XaB4ZGbSa/MvsyJbAN8rQQ1TYnjYg0dGHO7z7xqc15skZfb XDOnNJTVfqlxDxUnAkkrCx4M9PGI4KgEEDg3GFhSez5/XEk9U+74r79YQ8rq+pwPgIFK 8yG4gmWyFYOJt3LH5ZmL+xAyDwsFFWYdxEPe7LanDJ5Pi50bdvZCqmVOrRkZy8RAkFCU es7Q== X-Gm-Message-State: AOJu0Yzxsn+ZZ9aAbBI5/brseT1JZeh3WtkzZqIIsmXVMHE5QX3u0Hql 6x6JljwmZJ27HCe6KWwF8h48KoqRsVnlo4l3+NkgyXo8GcBay1/tBNzFWT98zXu3U5hKY6meFWj 4ZD4HEoQtanmycKLojswqLfdeULvMi7LESKveFSzA/AYUMYyYezhr/t8Dgw== X-Gm-Gg: ATEYQzwr0eSXBf55bvFpykLUGCF399/b6u3XvnC0DZYqWvm3Tx37VXO/+c4sJAsbF3t 48WG7Ab2cnhMMWRMIyLZZxJInKxOtQtLgUF7tnXJv0R2e6beUqTqDzL7Nbw9Gzwq4hJ29xSxw4k eLKJi0HJOxWaFmZ8EzScUzBiJcetXfjmu1qocja5Euv2PkrSWrjTf5pLIt3Aqd3eiwfSORzSAXs 6ikM1Rlx3WALn09CQ8EMRcS64/mnzNlA86vXckmhQHl7+jkX0oO/7LKro93FqP36q+4zqRkqIEE KE1e58gF3RemYSaNfTPxZh5ZA1T0tHDO533nLRvlyiv2AxZYcfkYeMmDzV5y5PT0p5xW8Q== X-Received: by 2002:a05:6870:b3eb:b0:417:2b13:f2cd with SMTP id 586e51a60fabf-41c10f84e22mr2121406fac.10.1774016687598; Fri, 20 Mar 2026 07:24:47 -0700 (PDT) MIME-Version: 1.0 References: <1791665551.452444.1761209220211.ref@mail.yahoo.com> <1895971769.8343.1761240853939@mail.yahoo.com> <574624399.175025.1761290201491@mail.yahoo.com> <953203149.383019.1761345585325@mail.yahoo.com> <6F76FA61-E2DC-44EF-9504-889D9BDB4EBD@yandex-team.ru> <1154454839.957923.1761604611424@mail.yahoo.com> <87ldkv8cog.fsf@wibble.ilmari.org> <87ikfz7zcu.fsf@wibble.ilmari.org> <9CB824CC-70DC-4165-AC6A-9664F47209EE@yandex-team.ru> <878qbn51kb.fsf@wibble.ilmari.org> In-Reply-To: From: Aleksander Alekseev Date: Fri, 20 Mar 2026 17:24:35 +0300 X-Gm-Features: AaiRm53PQTe9sEg3W2nde8fWHGE4B0AbD8Vq6GbvGo1kacf-FbmgF7GyowTUork Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: pgsql-hackers Cc: Masahiko Sawada , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , Andrey Borodin Content-Type: multipart/mixed; boundary="0000000000007d9404064d7572bc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007d9404064d7572bc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, > > Also, a small nitpick is that we can use uint32 instead of uint64 for > > 'bits_buffer'. I've attached the updated patch as well as the > > difference from the previous version. > > Then I suggest using uint32 for the bits_buffer variable in > base32hex_encode() too. Also we should use 1U instead of 1ULL with > uint32. CI is not happy with the new test: ``` SELECT decode('=E3=81=82', 'base32hex'); -- error -ERROR: invalid symbol "=E3=81=82" found while decoding base32hex sequence +ERROR: invalid symbol "=C3=A3" found while decoding base32hex sequence ``` Although it passes locally. My best guess is that something is off with the database encoding on CI and that we shouldn't use this test. We have a similar test which uses ASCII symbols only. --=20 Best regards, Aleksander Alekseev --0000000000007d9404064d7572bc Content-Type: text/x-patch; charset="UTF-8"; name="v10-0001-Add-base32hex-support-to-encode-and-decode-funct.patch" Content-Disposition: attachment; filename="v10-0001-Add-base32hex-support-to-encode-and-decode-funct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmyzpmly0 RnJvbSBjZjc2OTk2YmE5MzcwZTdjOGEwYWFiZjNhMzIyZjE1ZmYxMzUzNjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFdlZCwgMjkgT2N0IDIwMjUgMTU6NTM6MTIgKzA0MDAKU3ViamVjdDogW1BBVENIIHYxMF0g QWRkIGJhc2UzMmhleCBzdXBwb3J0IHRvIGVuY29kZSgpIGFuZCBkZWNvZGUoKSBmdW5jdGlvbnMu Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGFkZHMgc3VwcG9ydCBmb3Ig YmFzZTMyaGV4IGVuY29kaW5nIGFuZCBkZWNvZGluZywgYXMgZGVmaW5lZCBpbgpSRkMgNDY0OCBT ZWN0aW9uIDcuIFVubGlrZSBzdGFuZGFyZCBiYXNlMzIsIGJhc2UzMmhleCB1c2VzIHRoZQpleHRl bmRlZCBoZXggYWxwaGFiZXQgKDAtOSwgQS1WKSB3aGljaCBwcmVzZXJ2ZXMgdGhlIGxleGljb2dy YXBoaWNhbApvcmRlciBvZiB0aGUgZW5jb2RlZCBkYXRhLgoKVGhpcyBpcyBwYXJ0aWN1bGFybHkg dXNlZnVsIGZvciByZXByZXNlbnRpbmcgVVVJRHY3IHZhbHVlcyBpbiBhCmNvbXBhY3Qgc3RyaW5n IGZvcm1hdCB3aGlsZSBtYWludGFpbmluZyB0aGVpciB0aW1lLW9yZGVyZWQgc29ydApwcm9wZXJ0 eS4KClRoZSBlbmNvZGUoKSBmdW5jdGlvbiBwcm9kdWNlcyBvdXRwdXQgcGFkZGVkIHdpdGggJz0n LCB3aGlsZSBkZWNvZGUoKQphY2NlcHRzIGJvdGggcGFkZGVkIGFuZCB1bnBhZGRlZCBpbnB1dC4g Rm9sbG93aW5nIHRoZSBiZWhhdmlvciBvZgpvdGhlciBlbmNvZGluZyB0eXBlcywgZGVjb2Rpbmcg aXMgY2FzZS1pbnNlbnNpdGl2ZS4KClN1Z2dlc3RlZC1ieTogU2VyZ2V5IFByb2tob3JlbmtvIDxz ZXJnZXlwcm9raG9yZW5rb0B5YWhvby5jb20uYXU+CkF1dGhvcjogQW5kcmV5IEJvcm9kaW4gPHg0 bW1tQHlhbmRleC10ZWFtLnJ1PgpDby1hdXRob3JlZC1ieTogQWxla3NhbmRlciBBbGVrc2VldiA8 YWxla3NhbmRlckB0aWdlcmRhdGEuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxz YXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiDQmNC70YzRjyDQp9C10YDQtNCw0LrQ vtCyIDxpLmNoZXJkYWtvdi5wZ0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FKN2M2VE9yYW1yMVVUTGN5QjEyOExXTXFpdGExWTclM0RhcnEzS0hhVSUzRHFpa2Y1 eUtPUSU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlz dHJpbmcuc2dtbCB8ICAyNyArKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZW5jb2RlLmMgICAg ICAgICAgIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N0cmluZ3Mub3V0ICAgIHwgMTE3ICsrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0ICAgICAgIHwgIDE2ICsrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RyaW5ncy5zcWwgICAgICAgICB8ICAzMCArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvdXVpZC5zcWwgICAgICAgICAgICB8ICAgOSArKwogNiBmaWxlcyBjaGFuZ2VkLCAzNDQgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWJpbmFyeXN0cmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlz dHJpbmcuc2dtbAppbmRleCBiMjU2MzgxZTAxZi4uM2Y3N2Y2ZDIwYjAgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbApAQCAtNzI5LDYgKzcyOSw3IEBACiAgICAgICAg PHBhcmFtZXRlcj5mb3JtYXQ8L3BhcmFtZXRlcj4gdmFsdWVzIGFyZToKICAgICAgICA8bGluayBs aW5rZW5kPSJlbmNvZGUtZm9ybWF0LWJhc2U2NCI+PGxpdGVyYWw+YmFzZTY0PC9saXRlcmFsPjwv bGluaz4sCiAgICAgICAgPGxpbmsgbGlua2VuZD0iZW5jb2RlLWZvcm1hdC1iYXNlNjR1cmwiPjxs aXRlcmFsPmJhc2U2NHVybDwvbGl0ZXJhbD48L2xpbms+LAorICAgICAgIDxsaW5rIGxpbmtlbmQ9 ImVuY29kZS1mb3JtYXQtYmFzZTMyaGV4Ij48bGl0ZXJhbD5iYXNlMzJoZXg8L2xpdGVyYWw+PC9s aW5rPiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9ybWF0LWVzY2FwZSI+PGxpdGVy YWw+ZXNjYXBlPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICAgPGxpbmsgbGlua2VuZD0iZW5jb2Rl LWZvcm1hdC1oZXgiPjxsaXRlcmFsPmhleDwvbGl0ZXJhbD48L2xpbms+LgogICAgICAgPC9wYXJh PgpAQCAtODA0LDYgKzgwNSwzMiBAQAogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZW5jb2RlLWZvcm1hdC1iYXNlMzJoZXgiPgor ICAgICA8dGVybT5iYXNlMzJoZXgKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+ YmFzZTMyaGV4IGZvcm1hdDwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPjwvdGVybT4KKyAg ICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxsaXRlcmFsPmJhc2UzMmhl eDwvbGl0ZXJhbD4gZm9ybWF0IGlzIHRoYXQgb2YKKyAgICAgICA8dWxpbmsgdXJsPSJodHRwczov L2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQ2NDgjc2VjdGlvbi03Ij4KKyAgICAg ICBSRkMgNDY0OCBTZWN0aW9uIDc8L3VsaW5rPi4gIEl0IHVzZXMgdGhlIGV4dGVuZGVkIGhleCBh bHBoYWJldAorICAgICAgICg8bGl0ZXJhbD4wPC9saXRlcmFsPi08bGl0ZXJhbD45PC9saXRlcmFs PiBhbmQKKyAgICAgICA8bGl0ZXJhbD5BPC9saXRlcmFsPi08bGl0ZXJhbD5WPC9saXRlcmFsPikg d2hpY2ggcHJlc2VydmVzIHRoZSBsZXhpY29ncmFwaGljYWwKKyAgICAgICBzb3J0IG9yZGVyIG9m IHRoZSBlbmNvZGVkIGRhdGEuIFRoZSA8ZnVuY3Rpb24+ZW5jb2RlPC9mdW5jdGlvbj4gZnVuY3Rp b24KKyAgICAgICBwcm9kdWNlcyBvdXRwdXQgcGFkZGVkIHdpdGggPGxpdGVyYWw+Jz0nPC9saXRl cmFsPiwgd2hpbGUgPGZ1bmN0aW9uPmRlY29kZTwvZnVuY3Rpb24+CisgICAgICAgYWNjZXB0cyBi b3RoIHBhZGRlZCBhbmQgdW5wYWRkZWQgaW5wdXQuIERlY29kaW5nIGlzIGNhc2UtaW5zZW5zaXRp dmUgYW5kIGlnbm9yZXMKKyAgICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm1hdCBpcyB1c2VmdWwgZm9yIGVuY29k aW5nIFVVSURzIGluIGEgY29tcGFjdCwgc29ydGFibGUgZm9ybWF0OgorICAgICAgIDxsaXRlcmFs PnN1YnN0cmluZyhlbmNvZGUodXVpZF92YWx1ZTo6Ynl0ZWEsICdiYXNlMzJoZXgnKSBGUk9NIDEg Rk9SIDI2KTwvbGl0ZXJhbD4KKyAgICAgICBwcm9kdWNlcyBhIDI2LWNoYXJhY3RlciBzdHJpbmcg Y29tcGFyZWQgdG8gdGhlIHN0YW5kYXJkIDM2LWNoYXJhY3RlcgorICAgICAgIFVVSUQgcmVwcmVz ZW50YXRpb24uCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJlbmNvZGUtZm9ybWF0LWVzY2FwZSI+CiAg ICAgIDx0ZXJtPmVzY2FwZQogICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2VuY29kZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2VuY29kZS5jCmlu ZGV4IGY1ZjgzNWU5NDRhLi4zMzRmYTA4MGI5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2VuY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYwpAQCAt NjUsOCArNjUsOCBAQCBiaW5hcnlfZW5jb2RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJ CQkJIGVycm1zZygidW5yZWNvZ25pemVkIGVuY29kaW5nOiBcIiVzXCIiLCBuYW1lYnVmKSwKLQkJ CQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwgXCIlc1wiLCBh bmQgXCIlc1wiLiIsCi0JCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgImhl eCIpKSk7CisJCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVzXCIs IFwiJXNcIiwgXCIlc1wiLCBhbmQgXCIlc1wiLiIsCisJCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1 cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsICJoZXgiKSkpOwogCiAJZGF0YXB0ciA9IFZBUkRB VEFfQU5ZKGRhdGEpOwogCWRhdGFsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihkYXRhKTsKQEAgLTEx NSw4ICsxMTUsOCBAQCBiaW5hcnlfZGVjb2RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJ CQkJIGVycm1zZygidW5yZWNvZ25pemVkIGVuY29kaW5nOiBcIiVzXCIiLCBuYW1lYnVmKSwKLQkJ CQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwgXCIlc1wiLCBh bmQgXCIlc1wiLiIsCi0JCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgImhl eCIpKSk7CisJCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVzXCIs IFwiJXNcIiwgXCIlc1wiLCBhbmQgXCIlc1wiLiIsCisJCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1 cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsICJoZXgiKSkpOwogCiAJZGF0YXB0ciA9IFZBUkRB VEFfQU5ZKGRhdGEpOwogCWRhdGFsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihkYXRhKTsKQEAgLTgy NSw2ICs4MjUsMTQ1IEBAIGVzY19kZWNfbGVuKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xl bikKIAlyZXR1cm4gbGVuOwogfQogCisvKgorICogQkFTRTMySEVYCisgKi8KKworc3RhdGljIGNv bnN0IGNoYXIgYmFzZTMyaGV4X3RhYmxlW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BR UlNUVVYiOworCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhfZW5jX2xlbihjb25zdCBjaGFyICpz cmMsIHNpemVfdCBzcmNsZW4pCit7CisJLyogNSBieXRlcyBlbmNvZGUgdG8gOCBjaGFyYWN0ZXJz LCByb3VuZCB1cCB0byBtdWx0aXBsZSBvZiA4IGZvciBwYWRkaW5nICovCisJcmV0dXJuICgodWlu dDY0KSBzcmNsZW4gKyA0KSAvIDUgKiA4OworfQorCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhf ZGVjX2xlbihjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4pCit7CisJLyogRGVjb2RlIGxl bmd0aCBpcyAoc3JjbGVuICogNSkgLyA4LCBidXQgd2UgbWF5IGhhdmUgcGFkZGluZyAqLworCXJl dHVybiAoKHVpbnQ2NCkgc3JjbGVuICogNSkgLyA4OworfQorCitzdGF0aWMgdWludDY0CitiYXNl MzJoZXhfZW5jb2RlKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwgY2hhciAqZHN0KQor eworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBz cmM7CisJdWludDMyCQliaXRzX2J1ZmZlciA9IDA7CisJaW50CQkJYml0c19pbl9idWZmZXIgPSAw OworCXVpbnQ2NAkJb3V0cHV0X3BvcyA9IDA7CisJc2l6ZV90CQlpOworCisJZm9yIChpID0gMDsg aSA8IHNyY2xlbjsgaSsrKQorCXsKKwkJLyogQWRkIDggYml0cyB0byB0aGUgYnVmZmVyICovCisJ CWJpdHNfYnVmZmVyID0gKGJpdHNfYnVmZmVyIDw8IDgpIHwgZGF0YVtpXTsKKwkJYml0c19pbl9i dWZmZXIgKz0gODsKKworCQkvKiBFeHRyYWN0IDUtYml0IGNodW5rcyB3aGlsZSB3ZSBoYXZlIGVu b3VnaCBiaXRzICovCisJCXdoaWxlIChiaXRzX2luX2J1ZmZlciA+PSA1KQorCQl7CisJCQliaXRz X2luX2J1ZmZlciAtPSA1OworCQkJLyogRXh0cmFjdCB0b3AgNSBiaXRzICovCisJCQlkc3Rbb3V0 cHV0X3BvcysrXSA9IGJhc2UzMmhleF90YWJsZVsoYml0c19idWZmZXIgPj4gYml0c19pbl9idWZm ZXIpICYgMHgxRl07CisJCQkvKiBDbGVhciB0aGUgZXh0cmFjdGVkIGJpdHMgYnkgbWFza2luZyAq LworCQkJYml0c19idWZmZXIgJj0gKCgxVSA8PCBiaXRzX2luX2J1ZmZlcikgLSAxKTsKKwkJfQor CX0KKworCS8qIEhhbmRsZSByZW1haW5pbmcgYml0cyAoaWYgYW55KSAqLworCWlmIChiaXRzX2lu X2J1ZmZlciA+IDApCisJCWRzdFtvdXRwdXRfcG9zKytdID0gYmFzZTMyaGV4X3RhYmxlWyhiaXRz X2J1ZmZlciA8PCAoNSAtIGJpdHNfaW5fYnVmZmVyKSkgJiAweDFGXTsKKworCS8qIEFkZCBwYWRk aW5nIHRvIG1ha2UgbGVuZ3RoIGEgbXVsdGlwbGUgb2YgOCAocGVyIFJGQyA0NjQ4KSAqLworCXdo aWxlIChvdXRwdXRfcG9zICUgOCAhPSAwKQorCQlkc3Rbb3V0cHV0X3BvcysrXSA9ICc9JzsKKwor CXJldHVybiBvdXRwdXRfcG9zOworfQorCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhfZGVjb2Rl KGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwgY2hhciAqZHN0KQoreworCWNvbnN0IGNo YXIgKnNyY2VuZCA9IHNyYyArIHNyY2xlbiwKKwkJCSAgICpzID0gc3JjOworCXVpbnQzMgkJYml0 c19idWZmZXIgPSAwOworCWludAkJCWJpdHNfaW5fYnVmZmVyID0gMDsKKwl1aW50NjQJCW91dHB1 dF9wb3MgPSAwOworCWludAkJCXBvcyA9IDA7CQkvKiBwb3NpdGlvbiB3aXRoaW4gOC1jaGFyYWN0 ZXIgZ3JvdXAgKDAtNykgKi8KKwlib29sCQllbmQgPSBmYWxzZTsJLyogaGF2ZSB3ZSBzZWVuIHBh ZGRpbmc/ICovCisKKwl3aGlsZSAocyA8IHNyY2VuZCkKKwl7CisJCWNoYXIJCWMgPSAqcysrOwor CQlpbnQJCQl2YWw7CisKKwkJLyogU2tpcCB3aGl0ZXNwYWNlICovCisJCWlmIChjID09ICcgJyB8 fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykKKwkJCWNvbnRpbnVlOworCisJ CWlmIChjID09ICc9JykKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBwYWRkaW5nIGlzIG9u bHkgdmFsaWQgYXQgcG9zaXRpb25zIDIsIDQsIDUsIG9yIDcKKwkJCSAqIHdpdGhpbiBhbiA4LWNo YXJhY3RlciBncm91cCAoY29ycmVzcG9uZGluZyB0byAxLCAyLCAzLCBvciA0CisJCQkgKiBpbnB1 dCBieXRlcykuIFdlIG9ubHkgY2hlY2sgdGhlIHBvc2l0aW9uIGZvciB0aGUgZmlyc3QgJz0nCisJ CQkgKiBjaGFyYWN0ZXIuCisJCQkgKi8KKwkJCWlmICghZW5kKQorCQkJeworCQkJCWlmIChwb3Mg IT0gMiAmJiBwb3MgIT0gNCAmJiBwb3MgIT0gNSAmJiBwb3MgIT0gNykKKwkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkJCQkgZXJybXNnKCJ1bmV4cGVjdGVkIFwiPVwiIHdoaWxlIGRlY29kaW5nIGJhc2UzMmhl eCBzZXF1ZW5jZSIpKSk7CisJCQkJZW5kID0gdHJ1ZTsKKwkJCX0KKwkJCXBvcysrOworCQkJY29u dGludWU7CisJCX0KKworCQkvKiBObyBkYXRhIGNoYXJhY3RlcnMgYWxsb3dlZCBhZnRlciBwYWRk aW5nICovCisJCWlmIChlbmQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBzeW1i b2wgXCIlLipzXCIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlIiwKKwkJ CQkJCQlwZ19tYmxlbl9yYW5nZShzIC0gMSwgc3JjZW5kKSwgcyAtIDEpKSk7CisKKwkJLyogRGVj b2RlIGJhc2UzMmhleCBjaGFyYWN0ZXIgKDAtOSwgQS1WLCBjYXNlLWluc2Vuc2l0aXZlKSAqLwor CQlpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisJCQl2YWwgPSBjIC0gJzAnOworCQllbHNlIGlm IChjID49ICdBJyAmJiBjIDw9ICdWJykKKwkJCXZhbCA9IGMgLSAnQScgKyAxMDsKKwkJZWxzZSBp ZiAoYyA+PSAnYScgJiYgYyA8PSAndicpCisJCQl2YWwgPSBjIC0gJ2EnICsgMTA7CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIHN5bWJvbCBcIiUuKnNcIiBmb3VuZCB3 aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UiLAorCQkJCQkJCXBnX21ibGVuX3Jhbmdl KHMgLSAxLCBzcmNlbmQpLCBzIC0gMSkpKTsKKworCQkvKiBBZGQgNSBiaXRzIHRvIGJ1ZmZlciAq LworCQliaXRzX2J1ZmZlciA9IChiaXRzX2J1ZmZlciA8PCA1KSB8IHZhbDsKKwkJYml0c19pbl9i dWZmZXIgKz0gNTsKKwkJcG9zKys7CisKKwkJLyogRXh0cmFjdCA4LWJpdCBieXRlcyB3aGVuIHdl IGhhdmUgZW5vdWdoIGJpdHMgKi8KKwkJd2hpbGUgKGJpdHNfaW5fYnVmZmVyID49IDgpCisJCXsK KwkJCWJpdHNfaW5fYnVmZmVyIC09IDg7CisJCQlkc3Rbb3V0cHV0X3BvcysrXSA9ICh1bnNpZ25l ZCBjaGFyKSAoYml0c19idWZmZXIgPj4gYml0c19pbl9idWZmZXIpOworCQkJLyogQ2xlYXIgdGhl IGV4dHJhY3RlZCBiaXRzICovCisJCQliaXRzX2J1ZmZlciAmPSAoKDFVIDw8IGJpdHNfaW5fYnVm ZmVyKSAtIDEpOworCQl9CisKKwkJLyogUmVzZXQgcG9zaXRpb24gYWZ0ZXIgZWFjaCBjb21wbGV0 ZSA4LWNoYXJhY3RlciBncm91cCAqLworCQlpZiAocG9zID09IDgpCisJCQlwb3MgPSAwOworCX0K KworCXJldHVybiBvdXRwdXRfcG9zOworfQorCiAvKgogICogQ29tbW9uCiAgKi8KQEAgLTg1NCw2 ICs5OTMsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCQkJcGdfYmFzZTY0dXJsX2VuY19sZW4s IHBnX2Jhc2U2NHVybF9kZWNfbGVuLCBwZ19iYXNlNjR1cmxfZW5jb2RlLCBwZ19iYXNlNjR1cmxf ZGVjb2RlCiAJCX0KIAl9LAorCXsKKwkJImJhc2UzMmhleCIsCisJCXsKKwkJCWJhc2UzMmhleF9l bmNfbGVuLCBiYXNlMzJoZXhfZGVjX2xlbiwgYmFzZTMyaGV4X2VuY29kZSwgYmFzZTMyaGV4X2Rl Y29kZQorCQl9CisJfSwKIAl7CiAJCSJlc2NhcGUiLAogCQl7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N0cmluZ3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdHJpbmdzLm91dAppbmRleCBmMzg2ODhiNWMzNy4uNzVhNGE0ZjM4YTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RyaW5ncy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdHJpbmdzLm91dApAQCAtMjYwMCwxNCArMjYwMCwxMjUgQEAgU0VMRUNU IGRlY29kZShlbmNvZGUoJ1x4MTIzNDU2Nzg5MGFiY2RlZjAwJywgJ2VzY2FwZScpLCAnZXNjYXBl Jyk7CiAtLSByZXBvcnQgYW4gZXJyb3Igd2l0aCBhIGhpbnQgbGlzdGluZyB2YWxpZCBlbmNvZGlu Z3Mgd2hlbiBhbiBpbnZhbGlkIGVuY29kaW5nIGlzIHNwZWNpZmllZAogU0VMRUNUIGVuY29kZSgn XHgwMSc6OmJ5dGVhLCAnaW52YWxpZCcpOyAgLS0gZXJyb3IKIEVSUk9SOiAgdW5yZWNvZ25pemVk IGVuY29kaW5nOiAiaW52YWxpZCIKLUhJTlQ6ICBWYWxpZCBlbmNvZGluZ3MgYXJlICJiYXNlNjQi LCAiYmFzZTY0dXJsIiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KK0hJTlQ6ICBWYWxpZCBlbmNvZGlu Z3MgYXJlICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwgImJhc2UzMmhleCIsICJlc2NhcGUiLCBhbmQg ImhleCIuCiBTRUxFQ1QgZGVjb2RlKCcwMCcsICdpbnZhbGlkJyk7ICAgICAgICAgICAtLSBlcnJv cgogRVJST1I6ICB1bnJlY29nbml6ZWQgZW5jb2Rpbmc6ICJpbnZhbGlkIgotSElOVDogIFZhbGlk IGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgYW5kICJoZXgi LgorSElOVDogIFZhbGlkIGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiYmFz ZTMyaGV4IiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KIC0tCi0tLSBiYXNlNjR1cmwgZW5jb2Rpbmcv ZGVjb2RpbmcKKy0tIGJhc2UzMmhleCBlbmNvZGluZy9kZWNvZGluZwogLS0KIFNFVCBieXRlYV9v dXRwdXQgVE8gaGV4OworU0VMRUNUIGVuY29kZSgnJywgJ2Jhc2UzMmhleCcpOyAgLS0gJycKKyBl bmNvZGUgCistLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdceDExJywgJ2Jh c2UzMmhleCcpOyAgLS0gJzI0PT09PT09JworICBlbmNvZGUgIAorLS0tLS0tLS0tLQorIDI0PT09 PT09CisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMicsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgwPT09PScKKyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgwPT09PQorKDEgcm93KQor CitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMycsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNj09PScK KyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgzNj09PQorKDEgcm93KQorCitTRUxFQ1QgZW5j b2RlKCdceDExMjIzMzQ0JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDA9JworICBlbmNvZGUg IAorLS0tLS0tLS0tLQorIDI0SDM2SDA9CisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEy MjMzNDQ1NScsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTCcKKyAgZW5jb2RlICAKKy0tLS0t LS0tLS0KKyAyNEgzNkgyTAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTU2 NicsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTENPPT09PT09JworICAgICAgZW5jb2RlICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAyNEgzNkgyTENPPT09PT09CisoMSByb3cpCisKK1NF TEVDVCBkZWNvZGUoJycsICdiYXNlMzJoZXgnKTsgIC0tICcnCisgZGVjb2RlIAorLS0tLS0tLS0K KyBceAorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyND09PT09PScsICdiYXNlMzJoZXgnKTsg IC0tIFx4MTEKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MTEKKygxIHJvdykKKworU0VMRUNUIGRl Y29kZSgnMjRIMD09PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIKKyBkZWNvZGUgCistLS0t LS0tLQorIFx4MTEyMgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNj09PScsICdiYXNl MzJoZXgnKTsgIC0tIFx4MTEyMjMzCisgIGRlY29kZSAgCistLS0tLS0tLS0tCisgXHgxMTIyMzMK KygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMD0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBc eDExMjIzMzQ0CisgICBkZWNvZGUgICAKKy0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQKKygxIHJv dykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMkwnLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIz MzQ0NTUKKyAgICBkZWNvZGUgICAgCistLS0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQ1NQorKDEg cm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgyTENPPT09PT09JywgJ2Jhc2UzMmhleCcpOyAg LS0gXHgxMTIyMzM0NDU1NjYKKyAgICAgZGVjb2RlICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBc eDExMjIzMzQ0NTU2NgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNCcsICdiYXNlMzJoZXgn KTsgIC0tIE9LLCBwYWRkaW5nIGA9YCBhcmUgb3B0aW9uYWwKKyBkZWNvZGUgCistLS0tLS0tLQor IFx4MTEKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRoMzZoMmxjbycsICdiYXNlMzJoZXgn KTsgIC0tIE9LLCB0aGUgZW5jb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZQorICAgICBkZWNvZGUg ICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQ1NTY2CisoMSByb3cpCisKK1NFTEVD VCBkZWNvZGUoJz0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJST1I6ICB1bmV4cGVjdGVk ICI9IiB3aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UKK1NFTEVDVCBkZWNvZGUoJ1cn LCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAiVyIgZm91 bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2RlKCcyNEgz NkgwPTI0JywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAi MiIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2Rl KCcxMT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgbm9uLXplcm8gcGFkZGluZyBiaXRzIGFyZSBh Y2NlcHRlZCAoY29uc2lzdGVudCB3aXRoIGJhc2U2NCkKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4 MDgKKygxIHJvdykKKworLS0KKy0tIGJhc2U2NHVybCBlbmNvZGluZy9kZWNvZGluZworLS0KIC0t IFNpbXBsZSBlbmNvZGluZy9kZWNvZGluZwogU0VMRUNUIGVuY29kZSgnXHg2OWI3M2VmZicsICdi YXNlNjR1cmwnKTsgIC0tIGFiYy1fdwogIGVuY29kZSAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQu b3V0CmluZGV4IGQxNTdlZjdkMGIzLi5kMmE0NWEwZjA3YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC91dWlkLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3V1aWQub3V0CkBAIC0zMjcsNSArMzI3LDIxIEBAIFNFTEVDVCB2ID0gdjo6Ynl0ZWE6OnV1aWQg YXMgbWF0Y2hlZCBGUk9NIGdlbl9yYW5kb21fdXVpZCgpIHY7CiAgdAogKDEgcm93KQogCistLSBt YWtlIHN1cmUgYmFzZTMyaGV4IGVuY29kaW5nIHdvcmtzIHdpdGggVVVJRHMgYW5kIHByZXNlcnZl cyBvcmRlcmluZworU0VMRUNUIG9yaWcsIGVuY29kZShvcmlnOjpieXRlYSwgJ2Jhc2UzMmhleCcp IEFTIGVuYworRlJPTSB1bm5lc3QoQVJSQVlbCisgICAgJzEyM2U0NTY3LWU4OWItMTJkMy1hNDU2 LTQyNjYxNDE3NDAwMCcsCisgICAgJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAw MCcsCisgICAgJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMScsCisgICAgJ2Zm ZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZiddOjp1dWlkW10KKykgQVMgb3JpZyBP UkRFUiBCWSBlbmM7CisgICAgICAgICAgICAgICAgIG9yaWcgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICBlbmMgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMDAwMDAw MDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIHwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDA9PT09PT0KKyAxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEgfCAyNDhIMjQ4 SDI0OEgyNDhIMjQ4SDI0OEgyND09PT09PQorIDEyM2U0NTY3LWU4OWItMTJkMy1hNDU2LTQyNjYx NDE3NDAwMCB8IDI4VjRBUFY4SkM5RDc5Mk04OUoxODVRMDAwPT09PT09CisgZmZmZmZmZmYtZmZm Zi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmIHwgVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlM9PT09 PT0KKyg0IHJvd3MpCisKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGd1aWQxLCBndWlkMiwgZ3Vp ZDMgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0cmluZ3Muc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RyaW5ncy5zcWwKaW5kZXggZDhhMDk3Mzc2NjguLjlm ODZmMmNhYzE5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdHJpbmdzLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdHJpbmdzLnNxbApAQCAtODM1LDEwICs4MzUsMzgg QEAgU0VMRUNUIGVuY29kZSgnXHgwMSc6OmJ5dGVhLCAnaW52YWxpZCcpOyAgLS0gZXJyb3IKIFNF TEVDVCBkZWNvZGUoJzAwJywgJ2ludmFsaWQnKTsgICAgICAgICAgIC0tIGVycm9yCiAKIC0tCi0t LSBiYXNlNjR1cmwgZW5jb2RpbmcvZGVjb2RpbmcKKy0tIGJhc2UzMmhleCBlbmNvZGluZy9kZWNv ZGluZwogLS0KIFNFVCBieXRlYV9vdXRwdXQgVE8gaGV4OwogCitTRUxFQ1QgZW5jb2RlKCcnLCAn YmFzZTMyaGV4Jyk7ICAtLSAnJworU0VMRUNUIGVuY29kZSgnXHgxMScsICdiYXNlMzJoZXgnKTsg IC0tICcyND09PT09PScKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMicsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgwPT09PScKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzJywgJ2Jhc2UzMmhleCcpOyAgLS0g JzI0SDM2PT09JworU0VMRUNUIGVuY29kZSgnXHgxMTIyMzM0NCcsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgzNkgwPScKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzNDQ1NScsICdiYXNlMzJoZXgnKTsg IC0tICcyNEgzNkgyTCcKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzNDQ1NTY2JywgJ2Jhc2UzMmhl eCcpOyAgLS0gJzI0SDM2SDJMQ089PT09PT0nCisKK1NFTEVDVCBkZWNvZGUoJycsICdiYXNlMzJo ZXgnKTsgIC0tICcnCitTRUxFQ1QgZGVjb2RlKCcyND09PT09PScsICdiYXNlMzJoZXgnKTsgIC0t IFx4MTEKK1NFTEVDVCBkZWNvZGUoJzI0SDA9PT09JywgJ2Jhc2UzMmhleCcpOyAgLS0gXHgxMTIy CitTRUxFQ1QgZGVjb2RlKCcyNEgzNj09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzCitT RUxFQ1QgZGVjb2RlKCcyNEgzNkgwPScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzNDQKK1NF TEVDVCBkZWNvZGUoJzI0SDM2SDJMJywgJ2Jhc2UzMmhleCcpOyAgLS0gXHgxMTIyMzM0NDU1CitT RUxFQ1QgZGVjb2RlKCcyNEgzNkgyTENPPT09PT09JywgJ2Jhc2UzMmhleCcpOyAgLS0gXHgxMTIy MzM0NDU1NjYKKworU0VMRUNUIGRlY29kZSgnMjQnLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgcGFk ZGluZyBgPWAgYXJlIG9wdGlvbmFsCitTRUxFQ1QgZGVjb2RlKCcyNGgzNmgybGNvJywgJ2Jhc2Uz MmhleCcpOyAgLS0gT0ssIHRoZSBlbmNvZGluZyBpcyBjYXNlLWluc2Vuc2l0aXZlCitTRUxFQ1Qg ZGVjb2RlKCc9JywgJ2Jhc2UzMmhleCcpOyAgLS0gZXJyb3IKK1NFTEVDVCBkZWNvZGUoJ1cnLCAn YmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorU0VMRUNUIGRlY29kZSgnMjRIMzZIMD0yNCcsICdiYXNl MzJoZXgnKTsgLS0gZXJyb3IKK1NFTEVDVCBkZWNvZGUoJzExPScsICdiYXNlMzJoZXgnKTsgIC0t IE9LLCBub24temVybyBwYWRkaW5nIGJpdHMgYXJlIGFjY2VwdGVkIChjb25zaXN0ZW50IHdpdGgg YmFzZTY0KQorCisKKy0tCistLSBiYXNlNjR1cmwgZW5jb2RpbmcvZGVjb2RpbmcKKy0tCisKIC0t IFNpbXBsZSBlbmNvZGluZy9kZWNvZGluZwogU0VMRUNUIGVuY29kZSgnXHg2OWI3M2VmZicsICdi YXNlNjR1cmwnKTsgIC0tIGFiYy1fdwogU0VMRUNUIGRlY29kZSgnYWJjLV93JywgJ2Jhc2U2NHVy bCcpOyAgICAgIC0tIFx4NjliNzNlZmYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3V1aWQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKaW5kZXggZjUxMmY0ZGVh MWQuLmVlMTQ4MDI2MzBhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbApAQCAtMTUyLDUgKzE1MiwxNCBA QCBTRUxFQ1QgJ1x4MDE5YTJmODU5Y2VkNzIyNWI5OWQ5YzU1MDQ0YTI1NjMnOjpieXRlYTo6dXVp ZDsKIFNFTEVDVCAnXHgxMjM0NTY3ODkwYWJjZGVmJzo6Ynl0ZWE6OnV1aWQ7IC0tIGVycm9yCiBT RUxFQ1QgdiA9IHY6OmJ5dGVhOjp1dWlkIGFzIG1hdGNoZWQgRlJPTSBnZW5fcmFuZG9tX3V1aWQo KSB2OwogCistLSBtYWtlIHN1cmUgYmFzZTMyaGV4IGVuY29kaW5nIHdvcmtzIHdpdGggVVVJRHMg YW5kIHByZXNlcnZlcyBvcmRlcmluZworU0VMRUNUIG9yaWcsIGVuY29kZShvcmlnOjpieXRlYSwg J2Jhc2UzMmhleCcpIEFTIGVuYworRlJPTSB1bm5lc3QoQVJSQVlbCisgICAgJzEyM2U0NTY3LWU4 OWItMTJkMy1hNDU2LTQyNjYxNDE3NDAwMCcsCisgICAgJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAw LTAwMDAwMDAwMDAwMCcsCisgICAgJzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTEx MScsCisgICAgJ2ZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZiddOjp1dWlkW10K KykgQVMgb3JpZyBPUkRFUiBCWSBlbmM7CisKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGd1aWQx LCBndWlkMiwgZ3VpZDMgQ0FTQ0FERTsKLS0gCjIuNDMuMAoK --0000000000007d9404064d7572bc--