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 1vpQEf-0083Ey-01 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 12:19:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpQEd-00AUgp-2M for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Feb 2026 12:19:23 +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 1vpQEd-00AUgg-0Q for pgsql-hackers@lists.postgresql.org; Mon, 09 Feb 2026 12:19:23 +0000 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpQEZ-00000001Gru-2i3N for pgsql-hackers@postgresql.org; Mon, 09 Feb 2026 12:19:21 +0000 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7cfd53a8c31so2965529a34.1 for ; Mon, 09 Feb 2026 04:19:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770639558; cv=none; d=google.com; s=arc-20240605; b=XHTzD6RCom/zy8DdSijyZqYPaIRc5BOgTG3xrSgB02bihTh7NZe4XqECuYmJWPiYEg fb22TjZEEHj9C66k2O3BzZiM5a2s0gVTNQ4ggoOa8pYAf+9GW2amqu7IwKURQfaYBmU4 It11T0DsqDO6sSrufXAsTitZ4yz07ZM1cT8tSjOi5rP04V2Oovqk4KQWKzdPbOrwmWjF gFZFcL3Kvol6u/ApeKcv/JzMdWV6ZPUUjfyG6dcqjEMIu+ecT0j+by2sGQyg8Umy5LCD UBiYupBo2ol9ltrUDW6OfFObrHaWzlutCDZigUgOQyvt1fJjPPzh+hKE+7+tT0MlsaDQ fAkw== 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=Q+WI6wuq4uUx7DCgOmsicFisWFUP8Cvzdvu3ldptl9c=; fh=oh+lhmPl9liGRtLiS6thjZhEsOpMnIfKwfPena4J69A=; b=EPmBk8RpFECkpZlHpxbjB/emW903XYrmQodrX0+1rpX8DcyWXUbtFsBM3qca3F7B5b 2H3N4oQjzCN5+KSrAt7nEwHftjFpz7AKBsZ1eWOB4joIFsR4LORCkeqakcHuUhuTXoB1 0CALHuE5aJ43WRS/5JMqe//3AyCJ0Cvru3Meo30eFrjHxJl46py+LtO/qp44DOacPbPv JGgFCZo+68LavKx02pCDb57CCjmOWsrXZlOo1ENf3bXt3mHzShQEzM/81fuF2LSQFg+x K8XbjEQ84x1O/pADzNmYOf7P/nQN8bHdVnr6kVxeYWJ5pMGUfnHiPcgC8sEjEcWd1riZ G+Hw==; 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=1770639558; x=1771244358; 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=Q+WI6wuq4uUx7DCgOmsicFisWFUP8Cvzdvu3ldptl9c=; b=UP5u/Tkifio1jtRs9485ebBrQTobbxFBnRoEpTOE/9cidAfP0pLzrYAv3WWBNMDETG VUfEbGO704nwB9szxkr1/cAC3Z9VibJIX2bZlt+th+52b2+2nCBzV4KePiQNLW0xtNsq tBItE/TfZXbweXZbhg5POAR4Klf4KJj4rVRUMNk3PB0GqUc+eAhU/7WwoF90JbQtlGPN avCJXxOB8UvBOnVQTCXxdaIZto5Sb8VrYlVgCtJpjpYv8R8cwppg1Im3EZIYhJLWlpdr z9Wtko/iYNyNtU7DSXBfVYY84cKLqKkCujPhHiB/M1JxEm82sMKKMt4PbY9X8JBxMNqo Ywsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770639558; x=1771244358; 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=Q+WI6wuq4uUx7DCgOmsicFisWFUP8Cvzdvu3ldptl9c=; b=U2NpXgEisjQQAtcU1+83mu8uaQVzmMiW1PZyL2j0StA30Ej0/FvnSsJJYhjLAWM6rc F8E1nvAYcIlQsSYNfBYUP0uaVNsgwQg3NIBSfSLZQihQzTUxBdEN3vC4fmZWKlFHGnxR w18VB5W98M0Cyfkj1r0U8aOTfFOvOBCmxuCxY9epW11RJhC1S/o/3aD3FZhPpPlGHSwB 3PNcdD8P/Jdx8ZjChQUngYr3LjSkumc5If5YAIr0YNkepGxWRh5zZPTabdIJX+k4k3Eb cZvyvQjoAOvagKQ+g2w976UXJvlLNugMiEC/s+kHgn9Urjc2nmNB8wIyYUnnZfMWad5Z PNAA== X-Gm-Message-State: AOJu0YxrQfBknIDzlu+Qz41vT9hK4Fj5vMfzlJrZgIrhDkU9jfWW+HT8 51GvPslTQzmSylB7u3s9MikwyaZE4s/bvstPhA0l8i5D95e0Tp35Eu+MGMeWmhv/l67TQsrFmfx 61C+dPToc53GZaxa5XPIlfUONLl+yrsZRPZnMs+INTGAIntTrpSS5P47qsw== X-Gm-Gg: AZuq6aJo32qgxsGPEjKcpzeZ8bmlKdIdkUag72bGLnjfq4wXAjyJ4XWxaQGpwYZGGJ0 BKZuFKo4LtwoYyk/a/ZvomwLSjZoU/h8jCJ6pR2o+Iyf0u9Y5hSCmW8D1LnXCEAyeF67l2TiX1S /6epO9oGo0psN0IMdU8lb9XQ4k+lk4eamNrVGveZATgrpH5sE5HwTCBDhPBNkbYVnSVJkkGJTkA 0KTfOSdKldEv3Fiayb5BVAPe9MLyqYUzofCH5imfsLHaJJTE+wrfzwFzKEjdrash4o1qJECuPs+ 2AwXf2HzEXX0U/dIINKTEw9ct5wvtbYDUsmJanflI4Mdq66/71PjykgR6A== X-Received: by 2002:a05:6830:67f9:b0:7cf:d784:5d6 with SMTP id 46e09a7af769-7d46336a08emr7880440a34.5.1770639558435; Mon, 09 Feb 2026 04:19:18 -0800 (PST) MIME-Version: 1.0 References: <1791665551.452444.1761209220211.ref@mail.yahoo.com> <18022523-0F8F-4C07-AFF5-57DC9086D78E@yandex-team.ru> <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> In-Reply-To: From: Aleksander Alekseev Date: Mon, 9 Feb 2026 15:19:07 +0300 X-Gm-Features: AZwV_Qi1TaBS4zH8dBzppqGdtrj008M6-bmCboNdtpa4mkwzw1S7_ViOPy1vo3g Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: pgsql-hackers Cc: Andrey Borodin , Masahiko Sawada , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= Content-Type: multipart/mixed; boundary="000000000000e81a30064a63253e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e81a30064a63253e Content-Type: text/plain; charset="UTF-8" Hi, > I briefly tested the patched version of v3. The implemented > functionality works correctly. > > --- > You can also add a case with the error from v3-0002 > "invalid base32hex end sequence" to the tests : > > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("invalid base32hex end sequence"), > + errhint("Input data has non-zero padding bits."))); > > --- > I agree with Masahiko Sawada; information about conversions > should be added to the documentation. Here is the rebased patch. v4-0001 implements uuid <-> bytea casting v4-0002 implements base32 encoding/decoding Unless I missed something, 0001 is ready to be merged. I only rebased v3 and improved the commit messages, but I didn't account for Masahiko Sawada's feedback for 0002. Andrey, are you still working on this or others can pick it up? The patch is not on the commitfest, so I'm about to add it. -- Best regards, Aleksander Alekseev --000000000000e81a30064a63253e Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0002-Add-base32hex-encoding-support-to-encode-and-deco.patch" Content-Disposition: attachment; filename="v4-0002-Add-base32hex-encoding-support-to-encode-and-deco.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlf4zkvd1 RnJvbSBkODBhYWQ1ZWRmMWYwMmYyN2MyZDljMmMwMDFmNWVmNmI3NDhiMzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFdlZCwgMjkgT2N0IDIwMjUgMTU6NTM6MTIgKzA0MDAKU3ViamVjdDogW1BBVENIIHY0IDIv Ml0gQWRkIGJhc2UzMmhleCBlbmNvZGluZyBzdXBwb3J0IHRvIGVuY29kZSgpIGFuZAogZGVjb2Rl KCkKCkltcGxlbWVudCBiYXNlMzJoZXggZW5jb2RpbmcvZGVjb2RpbmcgcGVyIFJGQyA0NjQ4IFNl Y3Rpb24gNyBmb3IKZW5jb2RlKCkgYW5kIGRlY29kZSgpIGZ1bmN0aW9ucy4gVGhpcyBlbmNvZGlu ZyB1c2VzIHRoZSBleHRlbmRlZCBoZXgKYWxwaGFiZXQgKDAtOSwgQS1WKSB3aGljaCBwcmVzZXJ2 ZXMgc29ydCBvcmRlci4KClRoZSBlbmNvZGUoKSBmdW5jdGlvbiBwcm9kdWNlcyB1bnBhZGRlZCBv dXRwdXQsIHdoaWxlIGRlY29kZSgpIGFjY2VwdHMKYm90aCBwYWRkZWQgYW5kIHVucGFkZGVkIGlu cHV0LiBEZWNvZGluZyBpcyBjYXNlLWluc2Vuc2l0aXZlLgoKVGhpcyBpcyBwYXJ0aWN1bGFybHkg dXNlZnVsIGZvciBlbmNvZGluZyBVVUlEcyBjb21wYWN0bHk6CgogICAgU0VMRUNUIGVuY29kZSh1 dWlkX3ZhbHVlOjpieXRlYSwgJ2Jhc2UzMmhleCcpOwoKcHJvZHVjZXMgYSAyNi1jaGFyYWN0ZXIg c3RyaW5nIGNvbXBhcmVkIHRvIHRoZSBzdGFuZGFyZCAzNi1jaGFyYWN0ZXIKVVVJRCByZXByZXNl bnRhdGlvbi4KCkF1dGhvcjogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1PgpS ZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClN1 Z2dlc3RlZC1ieTogU2VyZ2V5IFByb2tob3JlbmtvIDxzZXJnZXlwcm9raG9yZW5rb0B5YWhvby5j b20uYXU+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FKN2M2VE9yYW1yMVVUTGN5 QjEyOExXTXFpdGExWTclM0RhcnEzS0hhVSUzRHFpa2Y1eUtPUSU0MG1haWwuZ21haWwuY29tCi0t LQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbCB8ICAyNSArKysrKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2VuY29kZS5jICAgICAgICAgICB8IDEyNCArKysrKysrKysr KysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dCAgICAgICB8 ICA4OCArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbCAgICAg ICAgICAgIHwgIDI3ICsrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwKaW5kZXggYjI1NjM4MWUwMWYu LjI1N2IxYmY0YzZiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWJpbmFyeXN0 cmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwK QEAgLTcyOSw2ICs3MjksNyBAQAogICAgICAgIDxwYXJhbWV0ZXI+Zm9ybWF0PC9wYXJhbWV0ZXI+ IHZhbHVlcyBhcmU6CiAgICAgICAgPGxpbmsgbGlua2VuZD0iZW5jb2RlLWZvcm1hdC1iYXNlNjQi PjxsaXRlcmFsPmJhc2U2NDwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgIDxsaW5rIGxpbmtlbmQ9 ImVuY29kZS1mb3JtYXQtYmFzZTY0dXJsIj48bGl0ZXJhbD5iYXNlNjR1cmw8L2xpdGVyYWw+PC9s aW5rPiwKKyAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9ybWF0LWJhc2UzMmhleCI+PGxp dGVyYWw+YmFzZTMyaGV4PC9saXRlcmFsPjwvbGluaz4sCiAgICAgICAgPGxpbmsgbGlua2VuZD0i ZW5jb2RlLWZvcm1hdC1lc2NhcGUiPjxsaXRlcmFsPmVzY2FwZTwvbGl0ZXJhbD48L2xpbms+LAog ICAgICAgIDxsaW5rIGxpbmtlbmQ9ImVuY29kZS1mb3JtYXQtaGV4Ij48bGl0ZXJhbD5oZXg8L2xp dGVyYWw+PC9saW5rPi4KICAgICAgIDwvcGFyYT4KQEAgLTgwNCw2ICs4MDUsMzAgQEAKICAgICAg PC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnkgaWQ9 ImVuY29kZS1mb3JtYXQtYmFzZTMyaGV4Ij4KKyAgICAgPHRlcm0+YmFzZTMyaGV4CisgICAgICA8 aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5PmJhc2UzMmhleCBmb3JtYXQ8L3ByaW1hcnk+Cisg ICAgICA8L2luZGV4dGVybT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRoZSA8bGl0ZXJhbD5iYXNlMzJoZXg8L2xpdGVyYWw+IGZvcm1hdCBpcyB0aGF0IG9m CisgICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRt bC9yZmM0NjQ4I3NlY3Rpb24tNyI+CisgICAgICAgUkZDIDQ2NDggU2VjdGlvbiA3PC91bGluaz4u ICBJdCB1c2VzIHRoZSBleHRlbmRlZCBoZXggYWxwaGFiZXQKKyAgICAgICAoMC05LCBBLVYpIHdo aWNoIHByZXNlcnZlcyBzb3J0IG9yZGVyIHdoZW4gZW5jb2RpbmcgYmluYXJ5IGRhdGEuCisgICAg ICAgVGhlIDxmdW5jdGlvbj5lbmNvZGU8L2Z1bmN0aW9uPiBmdW5jdGlvbiBwcm9kdWNlcyB1bnBh ZGRlZCBvdXRwdXQsCisgICAgICAgd2hpbGUgPGZ1bmN0aW9uPmRlY29kZTwvZnVuY3Rpb24+IGFj Y2VwdHMgYm90aCBwYWRkZWQgYW5kIHVucGFkZGVkCisgICAgICAgaW5wdXQuIERlY29kaW5nIGlz IGNhc2UtaW5zZW5zaXRpdmUgYW5kIGlnbm9yZXMgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBmb3JtYXQgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCBmb3IgZW5jb2RpbmcgVVVJRHMgaW4gYSBjb21wYWN0LAorICAgICAgIHNvcnRh YmxlIGZvcm1hdDogPGxpdGVyYWw+ZW5jb2RlKHV1aWRfdmFsdWU6OmJ5dGVhLCAnYmFzZTMyaGV4 Jyk8L2xpdGVyYWw+CisgICAgICAgcHJvZHVjZXMgYSAyNi1jaGFyYWN0ZXIgc3RyaW5nIGNvbXBh cmVkIHRvIHRoZSBzdGFuZGFyZCAzNi1jaGFyYWN0ZXIKKyAgICAgICBVVUlEIHJlcHJlc2VudGF0 aW9uLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZW5jb2RlLWZvcm1hdC1lc2NhcGUiPgogICAgICA8 dGVybT5lc2NhcGUKICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9lbmNvZGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYwppbmRleCBm NWY4MzVlOTQ0YS4uOTRjYzA3MjI0MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9lbmNvZGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZW5jb2RlLmMKQEAgLTgyNSw2 ICs4MjUsMTI0IEBAIGVzY19kZWNfbGVuKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbikK IAlyZXR1cm4gbGVuOwogfQogCisvKgorICogQkFTRTMySEVYCisgKi8KKworc3RhdGljIGNvbnN0 IGNoYXIgYmFzZTMyaGV4X3RhYmxlW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNU VVYiOworCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhfZW5jX2xlbihjb25zdCBjaGFyICpzcmMs IHNpemVfdCBzcmNsZW4pCit7CisJLyogNSBiaXRzIHBlciBiYXNlMzJoZXggY2hhcmFjdGVyLCBz byByb3VuZCB1cCAoc3JjbGVuICogOCArIDQpIC8gNSAqLworCXJldHVybiAoKHVpbnQ2NCkgc3Jj bGVuICogOCArIDQpIC8gNTsKK30KKworc3RhdGljIHVpbnQ2NAorYmFzZTMyaGV4X2RlY19sZW4o Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuKQoreworCS8qIERlY29kZSBsZW5ndGggaXMg KHNyY2xlbiAqIDUpIC8gOCwgYnV0IHdlIG1heSBoYXZlIHBhZGRpbmcgKi8KKwlyZXR1cm4gKCh1 aW50NjQpIHNyY2xlbiAqIDUpIC8gODsKK30KKworc3RhdGljIHVpbnQ2NAorYmFzZTMyaGV4X2Vu Y29kZShjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4sIGNoYXIgKmRzdCkKK3sKKwljb25z dCB1bnNpZ25lZCBjaGFyICpkYXRhID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc3JjOworCXVp bnQ2NAkJYml0c19idWZmZXIgPSAwOworCWludAkJCWJpdHNfaW5fYnVmZmVyID0gMDsKKwl1aW50 NjQJCW91dHB1dF9wb3MgPSAwOworCXNpemVfdAkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBzcmNs ZW47IGkrKykKKwl7CisJCS8qIEFkZCA4IGJpdHMgdG8gdGhlIGJ1ZmZlciAqLworCQliaXRzX2J1 ZmZlciA9IChiaXRzX2J1ZmZlciA8PCA4KSB8IGRhdGFbaV07CisJCWJpdHNfaW5fYnVmZmVyICs9 IDg7CisKKwkJLyogRXh0cmFjdCA1LWJpdCBjaHVua3Mgd2hpbGUgd2UgaGF2ZSBlbm91Z2ggYml0 cyAqLworCQl3aGlsZSAoYml0c19pbl9idWZmZXIgPj0gNSkKKwkJeworCQkJYml0c19pbl9idWZm ZXIgLT0gNTsKKwkJCS8qIEV4dHJhY3QgdG9wIDUgYml0cyAqLworCQkJZHN0W291dHB1dF9wb3Mr K10gPSBiYXNlMzJoZXhfdGFibGVbKGJpdHNfYnVmZmVyID4+IGJpdHNfaW5fYnVmZmVyKSAmIDB4 MUZdOworCQkJLyogQ2xlYXIgdGhlIGV4dHJhY3RlZCBiaXRzIGJ5IG1hc2tpbmcgKi8KKwkJCWJp dHNfYnVmZmVyICY9ICgoMVVMTCA8PCBiaXRzX2luX2J1ZmZlcikgLSAxKTsKKwkJfQorCX0KKwor CS8qIEhhbmRsZSByZW1haW5pbmcgYml0cyAoaWYgYW55KSAqLworCWlmIChiaXRzX2luX2J1ZmZl ciA+IDApCisJeworCQlkc3Rbb3V0cHV0X3BvcysrXSA9IGJhc2UzMmhleF90YWJsZVsoYml0c19i dWZmZXIgPDwgKDUgLSBiaXRzX2luX2J1ZmZlcikpICYgMHgxRl07CisJfQorCisJcmV0dXJuIG91 dHB1dF9wb3M7Cit9CisKK3N0YXRpYyB1aW50NjQKK2Jhc2UzMmhleF9kZWNvZGUoY29uc3QgY2hh ciAqc3JjLCBzaXplX3Qgc3JjbGVuLCBjaGFyICpkc3QpCit7CisJY29uc3QgdW5zaWduZWQgY2hh ciAqZGF0YSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHNyYzsKKwl1aW50NjQJCWJpdHNfYnVm ZmVyID0gMDsKKwlpbnQJCQliaXRzX2luX2J1ZmZlciA9IDA7CisJdWludDY0CQlvdXRwdXRfcG9z ID0gMDsKKwlzaXplX3QJCWk7CisJc2l6ZV90CQlkZWNvZGVfbGVuID0gc3JjbGVuOworCisJLyoK KwkgKiBSRkMgNDY0OCBhbGxvd3MgcGFkZGluZyB3aXRoICc9JyB0byBtYWtlIHRoZSBsZW5ndGgg YSBtdWx0aXBsZSBvZiA4LgorCSAqIENvdW50IGFuZCBza2lwIHRyYWlsaW5nIHBhZGRpbmcgY2hh cmFjdGVycy4KKwkgKi8KKwl3aGlsZSAoZGVjb2RlX2xlbiA+IDAgJiYgZGF0YVtkZWNvZGVfbGVu IC0gMV0gPT0gJz0nKQorCQlkZWNvZGVfbGVuLS07CisKKwlmb3IgKGkgPSAwOyBpIDwgZGVjb2Rl X2xlbjsgaSsrKQorCXsKKwkJdW5zaWduZWQgY2hhciBjID0gZGF0YVtpXTsKKwkJaW50CQkJdmFs OworCisJCS8qIFNraXAgd2hpdGVzcGFjZSAqLworCQlpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQn IHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicpCisJCQljb250aW51ZTsKKworCQkvKiBEZWNvZGUg YmFzZTMyaGV4IGNoYXJhY3RlciAoMC05LCBBLVYsIGNhc2UtaW5zZW5zaXRpdmUpICovCisJCWlm IChjID49ICcwJyAmJiBjIDw9ICc5JykKKwkJCXZhbCA9IGMgLSAnMCc7CisJCWVsc2UgaWYgKGMg Pj0gJ0EnICYmIGMgPD0gJ1YnKQorCQkJdmFsID0gYyAtICdBJyArIDEwOworCQllbHNlIGlmIChj ID49ICdhJyAmJiBjIDw9ICd2JykKKwkJCXZhbCA9IGMgLSAnYScgKyAxMDsKKwkJZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCisJCQkJCSBlcnJtc2coImludmFsaWQgc3ltYm9sIFwiJS4qc1wiIGZvdW5kIHdoaWxl IGRlY29kaW5nIGJhc2UzMmhleCBzZXF1ZW5jZSIsCisJCQkJCQkJcGdfbWJsZW4oKGNvbnN0IGNo YXIgKikgJmMpLCAoY29uc3QgY2hhciAqKSAmYykpKTsKKworCQkvKiBBZGQgNSBiaXRzIHRvIGJ1 ZmZlciAqLworCQliaXRzX2J1ZmZlciA9IChiaXRzX2J1ZmZlciA8PCA1KSB8IHZhbDsKKwkJYml0 c19pbl9idWZmZXIgKz0gNTsKKworCQkvKiBFeHRyYWN0IDgtYml0IGJ5dGVzIHdoZW4gd2UgaGF2 ZSBlbm91Z2ggYml0cyAqLworCQl3aGlsZSAoYml0c19pbl9idWZmZXIgPj0gOCkKKwkJeworCQkJ Yml0c19pbl9idWZmZXIgLT0gODsKKwkJCWRzdFtvdXRwdXRfcG9zKytdID0gKHVuc2lnbmVkIGNo YXIpIChiaXRzX2J1ZmZlciA+PiBiaXRzX2luX2J1ZmZlcik7CisJCQkvKiBDbGVhciB0aGUgZXh0 cmFjdGVkIGJpdHMgKi8KKwkJCWJpdHNfYnVmZmVyICY9ICgoMVVMTCA8PCBiaXRzX2luX2J1ZmZl cikgLSAxKTsKKwkJfQorCX0KKworCS8qIFZlcmlmeSBubyBleHRyYSBiaXRzIHJlbWFpbiAocGFk ZGluZyBiaXRzIHNob3VsZCBiZSB6ZXJvKSAqLworCWlmIChiaXRzX2luX2J1ZmZlciA+IDAgJiYg KGJpdHNfYnVmZmVyICYgKCgxVUxMIDw8IGJpdHNfaW5fYnVmZmVyKSAtIDEpKSAhPSAwKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCSBlcnJtc2coImludmFsaWQgYmFzZTMyaGV4IGVuZCBzZXF1ZW5jZSIpLAorCQkJ CSBlcnJoaW50KCJJbnB1dCBkYXRhIGhhcyBub24temVybyBwYWRkaW5nIGJpdHMuIikpKTsKKwor CXJldHVybiBvdXRwdXRfcG9zOworfQorCiAvKgogICogQ29tbW9uCiAgKi8KQEAgLTg1NCw2ICs5 NzIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCQkJcGdfYmFzZTY0dXJsX2VuY19sZW4sIHBn X2Jhc2U2NHVybF9kZWNfbGVuLCBwZ19iYXNlNjR1cmxfZW5jb2RlLCBwZ19iYXNlNjR1cmxfZGVj b2RlCiAJCX0KIAl9LAorCXsKKwkJImJhc2UzMmhleCIsCisJCXsKKwkJCWJhc2UzMmhleF9lbmNf bGVuLCBiYXNlMzJoZXhfZGVjX2xlbiwgYmFzZTMyaGV4X2VuY29kZSwgYmFzZTMyaGV4X2RlY29k ZQorCQl9CisJfSwKIAl7CiAJCSJlc2NhcGUiLAogCQl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlk Lm91dAppbmRleCAyNDQ4NjA4NGFhZi4uODZkMjFhMjkwOTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91dWlkLm91dApAQCAtMzIxLDUgKzMyMSw5MyBAQCBTRUxFQ1QgJ1x4MDE5YTJmODU5Y2VkNzIy NWI5OWQ5YzU1MDQ0YTI1NjMnOjpieXRlYTo6dXVpZDsKIFNFTEVDVCAnXHgxMjM0NTY3ODkwYWJj ZGVmJzo6Ynl0ZWE6OnV1aWQ7IC0tIGVycm9yCiBFUlJPUjogIGludmFsaWQgbGVuZ3RoIGZvciBV VUlECiBERVRBSUw6ICBFeHBlY3RlZCAxNiBieXRlcywgZ290IDguCistLSBiYXNlMzJoZXggZW5j b2RpbmcgdmlhIGVuY29kZS9kZWNvZGUKK1NFTEVDVCBlbmNvZGUoJzAwMDAwMDAwLTAwMDAtMDAw MC0wMDAwLTAwMDAwMDAwMDAwMCc6OnV1aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4Jyk7CisgICAgICAg ICAgIGVuY29kZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKygxIHJvdykKKworU0VMRUNUIGVuY29kZSgnMTExMTEx MTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExJzo6dXVpZDo6Ynl0ZWEsICdiYXNlMzJoZXgn KTsKKyAgICAgICAgICAgZW5jb2RlICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAyNDhIMjQ4SDI0OEgyNDhIMjQ4SDI0OEgyNAorKDEgcm93KQorCitTRUxFQ1QgZW5j b2RlKCdmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYnOjp1dWlkOjpieXRlYSwg J2Jhc2UzMmhleCcpOworICAgICAgICAgICBlbmNvZGUgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZTCisoMSByb3cpCisK K1NFTEVDVCBlbmNvZGUoJzEyM2U0NTY3LWU4OWItMTJkMy1hNDU2LTQyNjYxNDE3NDAwMCc6OnV1 aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4Jyk7CisgICAgICAgICAgIGVuY29kZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDAK KygxIHJvdykKKworLS0gdGVzdCBkZWNvZGUgd2l0aCBiYXNlMzJoZXgKK1NFTEVDVCBkZWNvZGUo JzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ2Jhc2UzMmhleCcpOjp1dWlkOworICAgICAg ICAgICAgICAgIGRlY29kZSAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwCiso MSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJzI4VjRBUFY4SkM5RDc5Mk04OUoxODVRMDAwJywgJ2Jh c2UzMmhleCcpOjp1dWlkOworICAgICAgICAgICAgICAgIGRlY29kZSAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTIzZTQ1NjctZTg5Yi0x MmQzLWE0NTYtNDI2NjE0MTc0MDAwCisoMSByb3cpCisKKy0tIHRlc3Qgcm91bmQtdHJpcCBjb252 ZXJzaW9ucworU0VMRUNUIGRlY29kZShlbmNvZGUoJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAw MDAwMDAwMDAwMCc6OnV1aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4JyksICdiYXNlMzJoZXgnKTo6dXVp ZDsKKyAgICAgICAgICAgICAgICBkZWNvZGUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAw MDAwMDAwMAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKGRlY29kZSgnMjhWNEFQVjhKQzlENzky TTg5SjE4NVEwMDAnLCAnYmFzZTMyaGV4Jyk6OnV1aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4Jyk7Cisg ICAgICAgICAgIGVuY29kZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDAKKygxIHJvdykKKworU0VMRUNUIGRlY29kZShl bmNvZGUoJzEyM2U0NTY3LWU4OWItMTJkMy1hNDU2LTQyNjYxNDE3NDAwMCc6OnV1aWQ6OmJ5dGVh LCAnYmFzZTMyaGV4JyksICdiYXNlMzJoZXgnKTo6dXVpZDsKKyAgICAgICAgICAgICAgICBkZWNv ZGUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIDEyM2U0NTY3LWU4OWItMTJkMy1hNDU2LTQyNjYxNDE3NDAwMAorKDEgcm93KQorCistLSB0 ZXN0IGNhc2UgaW5zZW5zaXRpdml0eQorU0VMRUNUIGRlY29kZSgnMjh2NGFwdjhqYzlkNzkybTg5 ajE4NXEwMDAnLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7CisgICAgICAgICAgICAgICAgZGVjb2RlICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAx MjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2MTQxNzQwMDAKKygxIHJvdykKKworU0VMRUNUIGRl Y29kZSgnMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDAnLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7Cisg ICAgICAgICAgICAgICAgZGVjb2RlICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2MTQxNzQw MDAKKygxIHJvdykKKworLS0gdGVzdCBSRkMgNDY0OCBwYWRkaW5nICgzMiBjaGFycyB3aXRoIDYg Jz0nIHNpZ25zKQorU0VMRUNUIGRlY29kZSgnMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDA9PT09 PT0nLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7CisgICAgICAgICAgICAgICAgZGVjb2RlICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxMjNlNDU2 Ny1lODliLTEyZDMtYTQ1Ni00MjY2MTQxNzQwMDAKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgn MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA9PT09PT0nLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7Cisg ICAgICAgICAgICAgICAgZGVjb2RlICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAw MDAKKygxIHJvdykKKworLS0gdGVzdCBlcnJvciBjYXNlcyBmb3IgYmFzZTMyaGV4CitTRUxFQ1Qg ZGVjb2RlKCcyOFY0QVBWOEpDOUQ3OTJNODlKMTg1UTAwVycsICdiYXNlMzJoZXgnKTo6dXVpZDsg IC0tIGludmFsaWQgY2hhcmFjdGVyIFcKK0VSUk9SOiAgaW52YWxpZCBzeW1ib2wgIlciIGZvdW5k IHdoaWxlIGRlY29kaW5nIGJhc2UzMmhleCBzZXF1ZW5jZQorU0VMRUNUIGRlY29kZSgnMjhWNEFQ VjhKQzlENzkyTTg5SjE4NVEwMCEnLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7ICAtLSBpbnZhbGlkIGNo YXJhY3RlciAhCitFUlJPUjogIGludmFsaWQgc3ltYm9sICIhIiBmb3VuZCB3aGlsZSBkZWNvZGlu ZyBiYXNlMzJoZXggc2VxdWVuY2UKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGd1aWQxLCBndWlk MiwgZ3VpZDMgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKaW5kZXggNjM1MjBkMGI2NDAuLjQ0 ZThmYThiMjQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbApAQCAtMTUxLDUgKzE1MSwzMiBAQCBTRUxF Q1QgJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2OTljNjc3MCc6OnV1aWQ6OmJ5dGVhOwog U0VMRUNUICdceDAxOWEyZjg1OWNlZDcyMjViOTlkOWM1NTA0NGEyNTYzJzo6Ynl0ZWE6OnV1aWQ7 CiBTRUxFQ1QgJ1x4MTIzNDU2Nzg5MGFiY2RlZic6OmJ5dGVhOjp1dWlkOyAtLSBlcnJvcgogCist LSBiYXNlMzJoZXggZW5jb2RpbmcgdmlhIGVuY29kZS9kZWNvZGUKK1NFTEVDVCBlbmNvZGUoJzAw MDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc6OnV1aWQ6OmJ5dGVhLCAnYmFzZTMy aGV4Jyk7CitTRUxFQ1QgZW5jb2RlKCcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTEx MTEnOjp1dWlkOjpieXRlYSwgJ2Jhc2UzMmhleCcpOworU0VMRUNUIGVuY29kZSgnZmZmZmZmZmYt ZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmJzo6dXVpZDo6Ynl0ZWEsICdiYXNlMzJoZXgnKTsK K1NFTEVDVCBlbmNvZGUoJzEyM2U0NTY3LWU4OWItMTJkMy1hNDU2LTQyNjYxNDE3NDAwMCc6OnV1 aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4Jyk7CisKKy0tIHRlc3QgZGVjb2RlIHdpdGggYmFzZTMyaGV4 CitTRUxFQ1QgZGVjb2RlKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICdiYXNlMzJoZXgn KTo6dXVpZDsKK1NFTEVDVCBkZWNvZGUoJzI4VjRBUFY4SkM5RDc5Mk04OUoxODVRMDAwJywgJ2Jh c2UzMmhleCcpOjp1dWlkOworCistLSB0ZXN0IHJvdW5kLXRyaXAgY29udmVyc2lvbnMKK1NFTEVD VCBkZWNvZGUoZW5jb2RlKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnOjp1 dWlkOjpieXRlYSwgJ2Jhc2UzMmhleCcpLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7CitTRUxFQ1QgZW5j b2RlKGRlY29kZSgnMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDAnLCAnYmFzZTMyaGV4Jyk6OnV1 aWQ6OmJ5dGVhLCAnYmFzZTMyaGV4Jyk7CitTRUxFQ1QgZGVjb2RlKGVuY29kZSgnMTIzZTQ1Njct ZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwJzo6dXVpZDo6Ynl0ZWEsICdiYXNlMzJoZXgnKSwg J2Jhc2UzMmhleCcpOjp1dWlkOworCistLSB0ZXN0IGNhc2UgaW5zZW5zaXRpdml0eQorU0VMRUNU IGRlY29kZSgnMjh2NGFwdjhqYzlkNzkybTg5ajE4NXEwMDAnLCAnYmFzZTMyaGV4Jyk6OnV1aWQ7 CitTRUxFQ1QgZGVjb2RlKCcyOFY0QVBWOEpDOUQ3OTJNODlKMTg1UTAwMCcsICdiYXNlMzJoZXgn KTo6dXVpZDsKKworLS0gdGVzdCBSRkMgNDY0OCBwYWRkaW5nICgzMiBjaGFycyB3aXRoIDYgJz0n IHNpZ25zKQorU0VMRUNUIGRlY29kZSgnMjhWNEFQVjhKQzlENzkyTTg5SjE4NVEwMDA9PT09PT0n LCAnYmFzZTMyaGV4Jyk6OnV1aWQ7CitTRUxFQ1QgZGVjb2RlKCcwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMD09PT09PScsICdiYXNlMzJoZXgnKTo6dXVpZDsKKworLS0gdGVzdCBlcnJvciBjYXNl cyBmb3IgYmFzZTMyaGV4CitTRUxFQ1QgZGVjb2RlKCcyOFY0QVBWOEpDOUQ3OTJNODlKMTg1UTAw VycsICdiYXNlMzJoZXgnKTo6dXVpZDsgIC0tIGludmFsaWQgY2hhcmFjdGVyIFcKK1NFTEVDVCBk ZWNvZGUoJzI4VjRBUFY4SkM5RDc5Mk04OUoxODVRMDAhJywgJ2Jhc2UzMmhleCcpOjp1dWlkOyAg LS0gaW52YWxpZCBjaGFyYWN0ZXIgIQorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlkMSwg Z3VpZDIsIGd1aWQzIENBU0NBREU7Ci0tIAoyLjQzLjAKCg== --000000000000e81a30064a63253e Content-Type: text/x-patch; charset="UTF-8"; name="v4-0001-Allow-explicit-casting-between-bytea-and-UUID.patch" Content-Disposition: attachment; filename="v4-0001-Allow-explicit-casting-between-bytea-and-UUID.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlf4zkv10 RnJvbSA5ZDdkYjY1MDQ3OTQxZWIxYzlmOGQ3OWEzNzkwNzE5YTQ4NmEzODYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RGFnZmlubj0yMElsbWFyaT0yME1hbm5zPUMz PUE1a2VyPz0gPGlsbWFyaUBpbG1hcmkub3JnPgpEYXRlOiBUdWUsIDI4IE9jdCAyMDI1IDE2OjMz OjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NCAxLzJdIEFsbG93IGV4cGxpY2l0IGNhc3Rpbmcg YmV0d2VlbiBieXRlYSBhbmQgVVVJRApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK VGhpcyBlbmFibGVzIHVzaW5nIGVuY29kZSgpIGFuZCBkZWNvZGUoKSB0byBjb252ZXJ0IFVVSURz IHRvIGFuZCBmcm9tCmFsdGVybmF0aXZlIGZvcm1hdHMsIHN1Y2ggYXMgYmFzZTY0LgoKQXV0aG9y OglEYWdmaW5uIElsbWFyaSBNYW5uc8Ola2VyIDxpbG1hcmlAaWxtYXJpLm9yZz4KUmV2aWV3ZWQt Ynk6IEFuZHJleSBCb3JvZGluIDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4KUmV2aWV3ZWQtYnk6IEFs ZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtzYW5kZXJAdGlnZXJkYXRhLmNvbT4KUmV2aWV3ZWQtYnk6 IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+CkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0FKN2M2VE9yYW1yMVVUTGN5QjEyOExXTXFpdGExWTclM0RhcnEzS0hh VSUzRHFpa2Y1eUtPUSU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2J5dGVhLmMgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jYXN0LmRhdCAgICB8ICA2ICsrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICB8ICA3ICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dXVpZC5vdXQgfCAxNiArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlk LnNxbCAgICAgIHwgIDQgKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvYnl0ZWEuYwppbmRleCBmZDc2NjJkNDFlZS4uMGU2ZDk3NDEyZDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ieXRlYS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5o IgorI2luY2x1ZGUgInV0aWxzL3V1aWQuaCIKICNpbmNsdWRlICJ2YXJhdHQuaCIKIAogLyogR1VD IHZhcmlhYmxlICovCkBAIC0xMzQwLDMgKzEzNDEsMjkgQEAgaW50OF9ieXRlYShQR19GVU5DVElP Tl9BUkdTKQogewogCXJldHVybiBpbnQ4c2VuZChmY2luZm8pOwogfQorCisvKiBDYXN0IGJ5dGVh IC0+IHV1aWQgKi8KK0RhdHVtCitieXRlYV91dWlkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYnl0 ZWEJICAgKnYgPSBQR19HRVRBUkdfQllURUFfUFAoMCk7CisJaW50CQkJbGVuID0gVkFSU0laRV9B TllfRVhIRFIodik7CisJcGdfdXVpZF90ICAqdXVpZDsKKworCWlmIChsZW4gIT0gVVVJRF9MRU4p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0JJTkFSWV9S RVBSRVNFTlRBVElPTiksCisJCQkJIGVycm1zZygiaW52YWxpZCBsZW5ndGggZm9yIFVVSUQiKSwK KwkJCQkgZXJyZGV0YWlsKCJFeHBlY3RlZCAlZCBieXRlcywgZ290ICVkLiIsIFVVSURfTEVOLCBs ZW4pKSk7CisKKwl1dWlkID0gKHBnX3V1aWRfdCAqKSBwYWxsb2Moc2l6ZW9mKHBnX3V1aWRfdCkp OworCW1lbWNweSh1dWlkLT5kYXRhLCBWQVJEQVRBX0FOWSh2KSwgVVVJRF9MRU4pOworCVBHX1JF VFVSTl9VVUlEX1AodXVpZCk7Cit9CisKKy8qIENhc3QgdXVpZCAtPiBieXRlYTsgY2FuIGp1c3Qg dXNlIHV1aWRfc2VuZCgpICovCitEYXR1bQordXVpZF9ieXRlYShQR19GVU5DVElPTl9BUkdTKQor eworCXJldHVybiB1dWlkX3NlbmQoZmNpbmZvKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfY2FzdC5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0Cmlu ZGV4IDliMWNmYjFiNTkwLi5hN2I2ZDgxMmM1YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jYXN0LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nhc3QuZGF0CkBA IC0zNjIsNiArMzYyLDEyIEBACiB7IGNhc3Rzb3VyY2UgPT4gJ2J5dGVhJywgY2FzdHRhcmdldCA9 PiAnaW50OCcsIGNhc3RmdW5jID0+ICdpbnQ4KGJ5dGVhKScsCiAgIGNhc3Rjb250ZXh0ID0+ICdl JywgY2FzdG1ldGhvZCA9PiAnZicgfSwKIAorIyBBbGxvdyBleHBsaWNpdCBjb2VyY2lvbnMgYmV0 d2VlbiBieXRlYSBhbmQgdXVpZCB0eXBlCit7IGNhc3Rzb3VyY2UgPT4gJ2J5dGVhJywgY2FzdHRh cmdldCA9PiAndXVpZCcsIGNhc3RmdW5jID0+ICd1dWlkKGJ5dGVhKScsCisgIGNhc3Rjb250ZXh0 ID0+ICdlJywgY2FzdG1ldGhvZCA9PiAnZicgfSwKK3sgY2FzdHNvdXJjZSA9PiAndXVpZCcsIGNh c3R0YXJnZXQgPT4gJ2J5dGVhJywgY2FzdGZ1bmMgPT4gJ2J5dGVhKHV1aWQpJywKKyAgY2FzdGNv bnRleHQgPT4gJ2UnLCBjYXN0bWV0aG9kID0+ICdmJyB9LAorCiAjIEFsbG93IGV4cGxpY2l0IGNv ZXJjaW9ucyBiZXR3ZWVuIGludDQgYW5kICJjaGFyIgogeyBjYXN0c291cmNlID0+ICdjaGFyJywg Y2FzdHRhcmdldCA9PiAnaW50NCcsIGNhc3RmdW5jID0+ICdpbnQ0KGNoYXIpJywKICAgY2FzdGNv bnRleHQgPT4gJ2UnLCBjYXN0bWV0aG9kID0+ICdmJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggODNmNjUwMWRmMzguLmQyYjMwMzkwNjcxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK QEAgLTEyMDgsNiArMTIwOCwxMyBAQAogICBwcm9uYW1lID0+ICdpbnQ4JywgcHJvcmV0dHlwZSA9 PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdieXRlYScsCiAgIHByb3NyYyA9PiAnYnl0ZWFfaW50 OCcgfSwKIAoreyBvaWQgPT4gJzk4ODAnLCBkZXNjciA9PiAnY29udmVydCB1dWlkIHRvIGJ5dGVh JywKKyAgcHJvbmFtZSA9PiAnYnl0ZWEnLCBwcm9yZXR0eXBlID0+ICdieXRlYScsIHByb2FyZ3R5 cGVzID0+ICd1dWlkJywKKyAgcHJvc3JjID0+ICd1dWlkX2J5dGVhJyB9LAoreyBvaWQgPT4gJzk4 ODEnLCBkZXNjciA9PiAnY29udmVydCBieXRlYSB0byB1dWlkJywKKyAgcHJvbmFtZSA9PiAndXVp ZCcsIHByb3JldHR5cGUgPT4gJ3V1aWQnLCBwcm9hcmd0eXBlcyA9PiAnYnl0ZWEnLAorICBwcm9z cmMgPT4gJ2J5dGVhX3V1aWQnIH0sCisKIHsgb2lkID0+ICc0NDknLCBkZXNjciA9PiAnaGFzaCcs CiAgIHByb25hbWUgPT4gJ2hhc2hpbnQyJywgcHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5 cGVzID0+ICdpbnQyJywKICAgcHJvc3JjID0+ICdoYXNoaW50MicgfSwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3V1aWQub3V0CmluZGV4IDk1MzkyMDAzYjg2Li4yNDQ4NjA4NGFhZiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3V1aWQub3V0CkBAIC0zMDUsNSArMzA1LDIxIEBAIFNFTEVDVCB1dWlkX2V4dHJh Y3RfdGltZXN0YW1wKCcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnKTsgIC0t IG51bGwKICAKICgxIHJvdykKIAorLS0gY2FzdHMKK1NFTEVDVCAnNWIzNTM4MGEtNzE0My00OTEy LTliNTUtZjMyMjY5OWM2NzcwJzo6dXVpZDo6Ynl0ZWE7CisgICAgICAgICAgICAgICBieXRlYSAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFx4 NWIzNTM4MGE3MTQzNDkxMjliNTVmMzIyNjk5YzY3NzAKKygxIHJvdykKKworU0VMRUNUICdceDAx OWEyZjg1OWNlZDcyMjViOTlkOWM1NTA0NGEyNTYzJzo6Ynl0ZWE6OnV1aWQ7CisgICAgICAgICAg ICAgICAgIHV1aWQgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAwMTlhMmY4NS05Y2VkLTcyMjUtYjk5ZC05YzU1MDQ0YTI1NjMKKygxIHJv dykKKworU0VMRUNUICdceDEyMzQ1Njc4OTBhYmNkZWYnOjpieXRlYTo6dXVpZDsgLS0gZXJyb3IK K0VSUk9SOiAgaW52YWxpZCBsZW5ndGggZm9yIFVVSUQKK0RFVEFJTDogIEV4cGVjdGVkIDE2IGJ5 dGVzLCBnb3QgOC4KIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGd1aWQxLCBndWlkMiwgZ3VpZDMg Q0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKaW5kZXggNDY1MTUzYTAzNDEuLjYzNTIwZDBiNjQw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC91dWlkLnNxbApAQCAtMTQ2LDYgKzE0NiwxMCBAQCBTRUxFQ1QgdXVpZF9l eHRyYWN0X3RpbWVzdGFtcCgnMDE3RjIyRTItNzlCMC03Q0MzLTk4QzQtREMwQzBDMDczOThGJykg PSAnVHVlc2RheQogU0VMRUNUIHV1aWRfZXh0cmFjdF90aW1lc3RhbXAoZ2VuX3JhbmRvbV91dWlk KCkpOyAgLS0gbnVsbAogU0VMRUNUIHV1aWRfZXh0cmFjdF90aW1lc3RhbXAoJzExMTExMTExLTEx MTEtMTExMS0xMTExLTExMTExMTExMTExMScpOyAgLS0gbnVsbAogCistLSBjYXN0cworU0VMRUNU ICc1YjM1MzgwYS03MTQzLTQ5MTItOWI1NS1mMzIyNjk5YzY3NzAnOjp1dWlkOjpieXRlYTsKK1NF TEVDVCAnXHgwMTlhMmY4NTljZWQ3MjI1Yjk5ZDljNTUwNDRhMjU2Myc6OmJ5dGVhOjp1dWlkOwor U0VMRUNUICdceDEyMzQ1Njc4OTBhYmNkZWYnOjpieXRlYTo6dXVpZDsgLS0gZXJyb3IKIAogLS0g Y2xlYW4gdXAKIERST1AgVEFCTEUgZ3VpZDEsIGd1aWQyLCBndWlkMyBDQVNDQURFOwotLSAKMi40 My4wCgo= --000000000000e81a30064a63253e--