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 1w2orO-000dST-0x for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 11:14:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2orN-009qgH-0a for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 11:14:45 +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.96) (envelope-from ) id 1w2orM-009qfw-2V for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 11:14:44 +0000 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2orJ-00000000v1j-3Shn for pgsql-hackers@postgresql.org; Wed, 18 Mar 2026 11:14:44 +0000 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7d756f2a06dso787021a34.1 for ; Wed, 18 Mar 2026 04:14:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773832479; cv=none; d=google.com; s=arc-20240605; b=eCmoOXJ3MrqnXRXuxvGe3NuDaAQEd1+CJ8akrEOcZiSH+Sm3VL8BHcXhdzi16sm53u jVsrzeeD1ZY8evqNAO+gEKXT3hdmvDYA6uevdPgC1rW2lUcuP5ACvQQfEsebQlqK5Um0 mIX2W5snYOdwgt20Iw2jdW2Bf4Vh9+jSkOn70DNgnquhoNBYUSI4LIxqknm+kFjQFbQY j/1yRTm0iDD9iazY215xOm35YBSRr2tyxbcMqrAV0CCf1sWabptGN2vRUXmI1sg8HQCM 4xGcPwGsyk+PQqYZXba+sqhDVBVu3LaYM4mR9jrop0q8mBRQLGYDTncCf2w7WuMTv4Of z2yA== 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=9tgrq7xUMIQOOcjb7QLYc4i30UcIAuxQNlQu06gqOR0=; fh=QrZk/hfu7OxgRDH32g1YAg9lychka8j6zlXBDSjQG2Q=; b=jS/KisIc56T9GuIx1HVqo1Jk2I/XCtAkOqqA+HTHgfwI5JNZQp2FQaJgJDgX0W37UO uwtV9sZoGeE8dsBuVzh+7wNQMFfi2z+D+N9sSSiw03ctLYoqe4vgHEaCJN1O6IF7BnEV 8kkQzvDf3TufzXxHmoFnhx0PwZVSkhV3Ic+wMZTZTZGWrLXULJmcj4h7R2Rd8ghHu1In WV0TN9aqEE2l1HmvYqOeocsiEiMhyiwXJWz3fD92dKdupt9Ez/XptrN/m4pZBYsqQw5J qGsg+T5dD2s0O+bojpvItqydswclWne3+cl6w0+4Ui/U2LXJcMdgyTbCrq9hmqHg7RMl rIpg==; 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=1773832479; x=1774437279; 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=9tgrq7xUMIQOOcjb7QLYc4i30UcIAuxQNlQu06gqOR0=; b=AxFqnvuLv53bVHnW44bTLLCuADr234BnIXXO0id0lK9wFd9KkTZtoSuYojim9IGvQZ TToKPpF46aSFsnU84tKeX6IZY1YI0ZB1/HFt/c8nNlBjOC2kZEaQXXTXKvyYpmpbWtHY b43kHVHn6hTW4VfRMoAZZp5JoBqdyARnurktQfhO7Le2ePZWoNO7fTZjC+UPM2gzXnj0 lD+C42fhmc9ObbUE8JI+G1MxzTGfTOPMirAEIHiFDMheJrJk3gBN8a0biQjepJ7KgD+A leIFIpavzfEfM2KSVJJ5xvBzit5yAiqym6in1sCPoYmj1m8/DTxX1VCJ0E2dXka93lHe O7yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773832479; x=1774437279; 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=9tgrq7xUMIQOOcjb7QLYc4i30UcIAuxQNlQu06gqOR0=; b=U6UXOgJwrupP4uwFMHs4DYUGBxPGTrVG4Q7Y4LppR4tTE4QfaBbV0KWZ13QPkjdSpE uVfVGbI7U+q9sP3/Ft+IRBtZ5VxivUQyltSy1mx2AsHm7gyyZzz1jPpSCWj2/QU4nigt 6Wwmm5cLBUfNfld+bimSLvNBhDEBflp/LpDQI6hrG05yxtckj1K59pe1GCQEDRXrS+t4 kHD1b3iaGp9OZqrspfM2CofcAxGDTon2ToOLPT5lzqIiPoraet8ocOf8eqv5N4/lj0L5 CJZqBELCFz043QlBcViG7xbN0pXlpPFanqWSdtwBQZ2Dsp/CWzx2KnVQIY5g9C4qgmPZ jEOA== X-Gm-Message-State: AOJu0Yxh1ej9j25Q9KMB2E2lqVRRuR7N8SeI6wccDfK5HaSr45WFe9MQ S37blESfT8AsTPmXEaGxZnupYRsjd+Gh7k+Fmb6iixE9kcy0U9hSuRwkxP7uIz1DDZdhbTmVDpI 2fatxw3aSzEd930SyNiG66j5sz5qtUGaE8PAfrRBtVA== X-Gm-Gg: ATEYQzyz3tT2Vml1ErLeogaOQWhIMHg1sItV5gdl1ZAtVhIQ7opIpAbx3Wja+bqTA1J EuNaHcro7gZffgUsq1KhjpX59QPpvVuiCW1y9q+igLDAlIcGHc8Tkfa9nhf0AvgRvV+e5j3uF+c YQQknoo1DF9RCFOPj7mNM+mv6AM3eWJtqrzBegXAqnYzDHxe7X58h960DotlMOZQ8T9bNxAq+i6 EWmCojvFqcroyVD4cvz5ihUC5zvh1O9ILMvXzRyyYmDNk1z4hlO9ybAyt1CWXcNefV4h7zZ2wHF i6m2wwNTUaIQjxiNyLGu0XdY5IqRTLJPpFv4PlQW3HEJAwxvvHtzgA/Xyhn/o+kdVNA= X-Received: by 2002:a05:6808:10cc:b0:450:b92c:aaa2 with SMTP id 5614622812f47-467a805d522mr3751650b6e.18.1773832478838; Wed, 18 Mar 2026 04:14:38 -0700 (PDT) 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: Wed, 18 Mar 2026 14:14:27 +0300 X-Gm-Features: AaiRm50rbtvo9XC7EyJ-ybE1e3HphQjLY2R9bZk7KgQ6HkITmnWb4uggb8L3djo Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: Masahiko Sawada Cc: pgsql-hackers , Andrey Borodin , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= Content-Type: multipart/mixed; boundary="000000000000caf68d064d4a8e11" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000caf68d064d4a8e11 Content-Type: text/plain; charset="UTF-8" Hi, > I've attached a patch for the 0002 patch part that fixes the above > points (except for the last point) and has some minor fixes as well. Applied, thanks. > + /* Verify no extra bits remain (padding bits should be zero) */ > + if (bits_in_buffer > 0 && (bits_buffer & ((1ULL << bits_in_buffer) > - 1)) != 0) > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("invalid base32hex end sequence"), > + errhint("Input data has non-zero padding bits."))); > > This code checks if the remaining bits of the input data are all zero. > IIUC we don't have a similar check for base64 and base64url. For > instance, the following input data is accepted: > > =# select decode('AB', 'base64'); > decode > -------- > \x00 > (1 row) > > I think it's better to have consistent behavior across our encoding. Agree. Fixed. -- Best regards, Aleksander Alekseev --000000000000caf68d064d4a8e11 Content-Type: text/x-patch; charset="UTF-8"; name="v6-0001-Allow-explicit-casting-between-bytea-and-UUID.patch" Content-Disposition: attachment; filename="v6-0001-Allow-explicit-casting-between-bytea-and-UUID.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmvy1snj0 RnJvbSBiYjM5NThmMzlmNTBhZDM1NmI5YWFmZDJmOWY0NjA3MDBkNGQ0OGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RGFnZmlubj0yMElsbWFyaT0yME1hbm5zPUMz PUE1a2VyPz0gPGlsbWFyaUBpbG1hcmkub3JnPgpEYXRlOiBUdWUsIDI4IE9jdCAyMDI1IDE2OjMz OjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NiAxLzJdIEFsbG93IGV4cGxpY2l0IGNhc3Rpbmcg YmV0d2VlbiBieXRlYSBhbmQgVVVJRApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK VGhpcyBlbmFibGVzIHVzaW5nIGVuY29kZSgpIGFuZCBkZWNvZGUoKSB0byBjb252ZXJ0IFVVSURz IHRvIGFuZCBmcm9tCmFsdGVybmF0aXZlIGZvcm1hdHMsIHN1Y2ggYXMgYmFzZTY0LgoKQXV0aG9y OglEYWdmaW5uIElsbWFyaSBNYW5uc8Ola2VyIDxpbG1hcmlAaWxtYXJpLm9yZz4KQXV0aG9yOiBB bGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClJldmlld2VkLWJ5 OiBNYXNhaGlrbyBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFu ZHJleSBCb3JvZGluIDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4KUmV2aWV3ZWQtYnk6IEplbHRlIEZl bm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FKN2M2VE9yYW1yMVVUTGN5QjEyOExXTXFpdGExWTclM0RhcnEzS0hhVSUzRHFpa2Y1 eUtPUSU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2RhdGF0eXBlLnNnbWwgICAg ICAgICB8IDExICsrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYyAgICAg IHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2Nhc3QuZGF0ICAgIHwgIDYgKysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgIHwgIDcgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dCB8IDIy ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsICAg ICAgfCAgNSArKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2RhdGF0eXBlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZGF0YXR5cGUu c2dtbAppbmRleCAzMDE3YzY3NDA0MC4uZjgyNjRiMTE5YWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9kYXRhdHlwZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kYXRhdHlwZS5zZ21sCkBAIC00 NDM5LDYgKzQ0MzksMTcgQEAgYTBlZS1iYzk5LTljMGItNGVmOC1iYjZkLTZiYjktYmQzOC0wYTEx CiAgICAgT3V0cHV0IGlzIGFsd2F5cyBpbiB0aGUgc3RhbmRhcmQgZm9ybS4KICAgIDwvcGFyYT4K IAorICAgPHBhcmE+CisgICBJdCBpcyBwb3NzaWJsZSB0byBjYXN0IDx0eXBlPnV1aWQ8L3R5cGU+ IHZhbHVlcyB0byBhbmQgZnJvbSB0eXBlCisgICA8dHlwZT5ieXRlYTwvdHlwZT4uIFRoaXMgYWxs b3dzIHVzaW5nIDxsaXRlcmFsPmVuY29kZSgpPC9saXRlcmFsPgorICAgYW5kIDxsaXRlcmFsPmRl Y29kZSgpPC9saXRlcmFsPiBmdW5jdGlvbnMgZm9yIDx0eXBlPnV1aWQ8L3R5cGU+LgorICAgU29t ZSBleGFtcGxlczoKKzxwcm9ncmFtbGlzdGluZz4KK2VuY29kZSgnMWVhM2Q2NGMtYmM0MC00Y2Mz LTg0YmItNmIxMWVlMzFlNWMyJzo6dXVpZDo6Ynl0ZWEsICdiYXNlNjQnKQorZGVjb2RlKCdIcVBX VEx4QVRNT0V1MnNSN2pIbHdnPT0nLCAnYmFzZTY0Jyk6OnV1aWQKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJmdW5jdGlv bnMtdXVpZCIvPiBmb3IgaG93IHRvIGdlbmVyYXRlIGEgVVVJRCBpbgogICAgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvYnl0ZWEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCmluZGV4IGZkNzY2 MmQ0MWVlLi40ZGM4MzY3MWFhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5 dGVhLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCisjaW5jbHVkZSAidXRpbHMvdXVpZC5oIgog I2luY2x1ZGUgInZhcmF0dC5oIgogCiAvKiBHVUMgdmFyaWFibGUgKi8KQEAgLTEzNDAsMyArMTM0 MSwyOSBAQCBpbnQ4X2J5dGVhKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJcmV0dXJuIGludDhzZW5k KGZjaW5mbyk7CiB9CisKKy8qIENhc3QgYnl0ZWEgLT4gdXVpZCAqLworRGF0dW0KK2J5dGVhX3V1 aWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlieXRlYQkgICAqdiA9IFBHX0dFVEFSR19CWVRFQV9Q UCgwKTsKKwlpbnQJCQlsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2KTsKKwlwZ191dWlkX3QgICp1 dWlkOworCisJaWYgKGxlbiAhPSBVVUlEX0xFTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfQklOQVJZX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkgZXJybXNn KCJpbnZhbGlkIGlucHV0IGxlbmd0aCBmb3IgdHlwZSAlcyIsICJ1dWlkIiksCisJCQkJIGVycmRl dGFpbCgiRXhwZWN0ZWQgJWQgYnl0ZXMsIGdvdCAlZC4iLCBVVUlEX0xFTiwgbGVuKSkpOworCisJ dXVpZCA9IChwZ191dWlkX3QgKikgcGFsbG9jKHNpemVvZihwZ191dWlkX3QpKTsKKwltZW1jcHko dXVpZC0+ZGF0YSwgVkFSREFUQV9BTlkodiksIFVVSURfTEVOKTsKKwlQR19SRVRVUk5fVVVJRF9Q KHV1aWQpOworfQorCisvKiBDYXN0IHV1aWQgLT4gYnl0ZWE7IGNhbiBqdXN0IHVzZSB1dWlkX3Nl bmQoKSAqLworRGF0dW0KK3V1aWRfYnl0ZWEoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlyZXR1cm4g dXVpZF9zZW5kKGZjaW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2Nhc3QuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jYXN0LmRhdAppbmRleCA5YjFjZmIx YjU5MC4uYTdiNmQ4MTJjNWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2Fz dC5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jYXN0LmRhdApAQCAtMzYyLDYgKzM2 MiwxMiBAQAogeyBjYXN0c291cmNlID0+ICdieXRlYScsIGNhc3R0YXJnZXQgPT4gJ2ludDgnLCBj YXN0ZnVuYyA9PiAnaW50OChieXRlYSknLAogICBjYXN0Y29udGV4dCA9PiAnZScsIGNhc3RtZXRo b2QgPT4gJ2YnIH0sCiAKKyMgQWxsb3cgZXhwbGljaXQgY29lcmNpb25zIGJldHdlZW4gYnl0ZWEg YW5kIHV1aWQgdHlwZQoreyBjYXN0c291cmNlID0+ICdieXRlYScsIGNhc3R0YXJnZXQgPT4gJ3V1 aWQnLCBjYXN0ZnVuYyA9PiAndXVpZChieXRlYSknLAorICBjYXN0Y29udGV4dCA9PiAnZScsIGNh c3RtZXRob2QgPT4gJ2YnIH0sCit7IGNhc3Rzb3VyY2UgPT4gJ3V1aWQnLCBjYXN0dGFyZ2V0ID0+ ICdieXRlYScsIGNhc3RmdW5jID0+ICdieXRlYSh1dWlkKScsCisgIGNhc3Rjb250ZXh0ID0+ICdl JywgY2FzdG1ldGhvZCA9PiAnZicgfSwKKwogIyBBbGxvdyBleHBsaWNpdCBjb2VyY2lvbnMgYmV0 d2VlbiBpbnQ0IGFuZCAiY2hhciIKIHsgY2FzdHNvdXJjZSA9PiAnY2hhcicsIGNhc3R0YXJnZXQg PT4gJ2ludDQnLCBjYXN0ZnVuYyA9PiAnaW50NChjaGFyKScsCiAgIGNhc3Rjb250ZXh0ID0+ICdl JywgY2FzdG1ldGhvZCA9PiAnZicgfSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGZjOGQ4 MjY2NWI4Li44NGU3YWRkZTBlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjA4LDYg KzEyMDgsMTMgQEAKICAgcHJvbmFtZSA9PiAnaW50OCcsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBw cm9hcmd0eXBlcyA9PiAnYnl0ZWEnLAogICBwcm9zcmMgPT4gJ2J5dGVhX2ludDgnIH0sCiAKK3sg b2lkID0+ICc5ODgwJywgZGVzY3IgPT4gJ2NvbnZlcnQgdXVpZCB0byBieXRlYScsCisgIHByb25h bWUgPT4gJ2J5dGVhJywgcHJvcmV0dHlwZSA9PiAnYnl0ZWEnLCBwcm9hcmd0eXBlcyA9PiAndXVp ZCcsCisgIHByb3NyYyA9PiAndXVpZF9ieXRlYScgfSwKK3sgb2lkID0+ICc5ODgxJywgZGVzY3Ig PT4gJ2NvbnZlcnQgYnl0ZWEgdG8gdXVpZCcsCisgIHByb25hbWUgPT4gJ3V1aWQnLCBwcm9yZXR0 eXBlID0+ICd1dWlkJywgcHJvYXJndHlwZXMgPT4gJ2J5dGVhJywKKyAgcHJvc3JjID0+ICdieXRl YV91dWlkJyB9LAorCiB7IG9pZCA9PiAnNDQ5JywgZGVzY3IgPT4gJ2hhc2gnLAogICBwcm9uYW1l ID0+ICdoYXNoaW50MicsIHByb3JldHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAnaW50 MicsCiAgIHByb3NyYyA9PiAnaGFzaGludDInIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91 dAppbmRleCA5NTM5MjAwM2I4Ni4uZDE1N2VmN2QwYjMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 dWlkLm91dApAQCAtMzA1LDUgKzMwNSwyNyBAQCBTRUxFQ1QgdXVpZF9leHRyYWN0X3RpbWVzdGFt cCgnMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExJyk7ICAtLSBudWxsCiAgCiAo MSByb3cpCiAKKy0tIGNhc3RzCitTRUxFQ1QgJzViMzUzODBhLTcxNDMtNDkxMi05YjU1LWYzMjI2 OTljNjc3MCc6OnV1aWQ6OmJ5dGVhOworICAgICAgICAgICAgICAgYnl0ZWEgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBceDViMzUzODBhNzE0 MzQ5MTI5YjU1ZjMyMjY5OWM2NzcwCisoMSByb3cpCisKK1NFTEVDVCAnXHgwMTlhMmY4NTljZWQ3 MjI1Yjk5ZDljNTUwNDRhMjU2Myc6OmJ5dGVhOjp1dWlkOworICAgICAgICAgICAgICAgICB1dWlk ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgMDE5YTJmODUtOWNlZC03MjI1LWI5OWQtOWM1NTA0NGEyNTYzCisoMSByb3cpCisKK1NFTEVD VCAnXHgxMjM0NTY3ODkwYWJjZGVmJzo6Ynl0ZWE6OnV1aWQ7IC0tIGVycm9yCitFUlJPUjogIGlu dmFsaWQgaW5wdXQgbGVuZ3RoIGZvciB0eXBlIHV1aWQKK0RFVEFJTDogIEV4cGVjdGVkIDE2IGJ5 dGVzLCBnb3QgOC4KK1NFTEVDVCB2ID0gdjo6Ynl0ZWE6OnV1aWQgYXMgbWF0Y2hlZCBGUk9NIGdl bl9yYW5kb21fdXVpZCgpIHY7CisgbWF0Y2hlZCAKKy0tLS0tLS0tLQorIHQKKygxIHJvdykKKwog LS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZ3VpZDEsIGd1aWQyLCBndWlkMyBDQVNDQURFOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC91dWlkLnNxbAppbmRleCA0NjUxNTNhMDM0MS4uZjUxMmY0ZGVhMWQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3V1aWQuc3FsCkBAIC0xNDYsNiArMTQ2LDExIEBAIFNFTEVDVCB1dWlkX2V4dHJhY3RfdGltZXN0 YW1wKCcwMTdGMjJFMi03OUIwLTdDQzMtOThDNC1EQzBDMEMwNzM5OEYnKSA9ICdUdWVzZGF5CiBT RUxFQ1QgdXVpZF9leHRyYWN0X3RpbWVzdGFtcChnZW5fcmFuZG9tX3V1aWQoKSk7ICAtLSBudWxs CiBTRUxFQ1QgdXVpZF9leHRyYWN0X3RpbWVzdGFtcCgnMTExMTExMTEtMTExMS0xMTExLTExMTEt MTExMTExMTExMTExJyk7ICAtLSBudWxsCiAKKy0tIGNhc3RzCitTRUxFQ1QgJzViMzUzODBhLTcx NDMtNDkxMi05YjU1LWYzMjI2OTljNjc3MCc6OnV1aWQ6OmJ5dGVhOworU0VMRUNUICdceDAxOWEy Zjg1OWNlZDcyMjViOTlkOWM1NTA0NGEyNTYzJzo6Ynl0ZWE6OnV1aWQ7CitTRUxFQ1QgJ1x4MTIz NDU2Nzg5MGFiY2RlZic6OmJ5dGVhOjp1dWlkOyAtLSBlcnJvcgorU0VMRUNUIHYgPSB2OjpieXRl YTo6dXVpZCBhcyBtYXRjaGVkIEZST00gZ2VuX3JhbmRvbV91dWlkKCkgdjsKIAogLS0gY2xlYW4g dXAKIERST1AgVEFCTEUgZ3VpZDEsIGd1aWQyLCBndWlkMyBDQVNDQURFOwotLSAKMi40My4wCgo= --000000000000caf68d064d4a8e11 Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0002-Add-base32hex-encoding-support-to-encode-and-deco.patch" Content-Disposition: attachment; filename="v6-0002-Add-base32hex-encoding-support-to-encode-and-deco.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmvy1snq1 RnJvbSBlMTRkNGNlMjRhNjE0YzMxM2NlOGFmNGZmMGRmMmZjZGJjNGQ1ZDA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFdlZCwgMjkgT2N0IDIwMjUgMTU6NTM6MTIgKzA0MDAKU3ViamVjdDogW1BBVENIIHY2IDIv Ml0gQWRkIGJhc2UzMmhleCBlbmNvZGluZyBzdXBwb3J0IHRvIGVuY29kZSgpIGFuZAogZGVjb2Rl KCkKCkltcGxlbWVudCBiYXNlMzJoZXggZW5jb2RpbmcvZGVjb2RpbmcgcGVyIFJGQyA0NjQ4IFNl Y3Rpb24gNyBmb3IKZW5jb2RlKCkgYW5kIGRlY29kZSgpIGZ1bmN0aW9ucy4gVGhpcyBlbmNvZGlu ZyB1c2VzIHRoZSBleHRlbmRlZCBoZXgKYWxwaGFiZXQgKDAtOSwgQS1WKSB3aGljaCBwcmVzZXJ2 ZXMgc29ydCBvcmRlci4KClRoZSBlbmNvZGUoKSBmdW5jdGlvbiBwcm9kdWNlcyBwYWRkZWQgb3V0 cHV0LCB3aGlsZSBkZWNvZGUoKSBhY2NlcHRzCmJvdGggcGFkZGVkIGFuZCB1bnBhZGRlZCBpbnB1 dC4gRGVjb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZS4KCkF1dGhvcjogQW5kcmV5IEJvcm9kaW4g PHg0bW1tQHlhbmRleC10ZWFtLnJ1PgpBdXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtz YW5kZXJAdGlnZXJkYXRhLmNvbT4KUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRh Lm1zaGtAZ21haWwuY29tPgpTdWdnZXN0ZWQtYnk6IFNlcmdleSBQcm9raG9yZW5rbyA8c2VyZ2V5 cHJva2hvcmVua29AeWFob28uY29tLmF1PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t L0NBSjdjNlRPcmFtcjFVVExjeUIxMjhMV01xaXRhMVk3JTNEYXJxM0tIYVUlM0RxaWtmNXlLT1El NDBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5n LnNnbWwgfCAgMjcgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2VuY29kZS5jICAgICAgICAg ICB8IDE1MiArKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdHJpbmdzLm91dCAgICB8IDEyMyArKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXVpZC5vdXQgICAgICAgfCAgMTYgKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdHJpbmdzLnNxbCAgICAgICAgIHwgIDMxICsrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91 dWlkLnNxbCAgICAgICAgICAgIHwgICA5ICsrCiA2IGZpbGVzIGNoYW5nZWQsIDM1MCBpbnNlcnRp b25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtYmluYXJ5c3RyaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWJpbmFyeXN0cmlu Zy5zZ21sCmluZGV4IGIyNTYzODFlMDFmLi43YWEzODA1ZjFlYyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWJpbmFyeXN0cmluZy5zZ21sCkBAIC03MjksNiArNzI5LDcgQEAKICAgICAgICA8cGFy YW1ldGVyPmZvcm1hdDwvcGFyYW1ldGVyPiB2YWx1ZXMgYXJlOgogICAgICAgIDxsaW5rIGxpbmtl bmQ9ImVuY29kZS1mb3JtYXQtYmFzZTY0Ij48bGl0ZXJhbD5iYXNlNjQ8L2xpdGVyYWw+PC9saW5r PiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9ybWF0LWJhc2U2NHVybCI+PGxpdGVy YWw+YmFzZTY0dXJsPC9saXRlcmFsPjwvbGluaz4sCisgICAgICAgPGxpbmsgbGlua2VuZD0iZW5j b2RlLWZvcm1hdC1iYXNlMzJoZXgiPjxsaXRlcmFsPmJhc2UzMmhleDwvbGl0ZXJhbD48L2xpbms+ LAogICAgICAgIDxsaW5rIGxpbmtlbmQ9ImVuY29kZS1mb3JtYXQtZXNjYXBlIj48bGl0ZXJhbD5l c2NhcGU8L2xpdGVyYWw+PC9saW5rPiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9y bWF0LWhleCI+PGxpdGVyYWw+aGV4PC9saXRlcmFsPjwvbGluaz4uCiAgICAgICA8L3BhcmE+CkBA IC04MDQsNiArODA1LDMyIEBACiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJlbmNvZGUtZm9ybWF0LWJhc2UzMmhleCI+CisgICAg IDx0ZXJtPmJhc2UzMmhleAorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT5iYXNl MzJoZXggZm9ybWF0PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+PC90ZXJtPgorICAgICA8 bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGxpdGVyYWw+YmFzZTMyaGV4PC9s aXRlcmFsPiBmb3JtYXQgaXMgdGhhdCBvZgorICAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vZGF0 YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTciPgorICAgICAgIFJG QyA0NjQ4IFNlY3Rpb24gNzwvdWxpbms+LiAgSXQgdXNlcyB0aGUgZXh0ZW5kZWQgaGV4IGFscGhh YmV0CisgICAgICAgKDxsaXRlcmFsPjA8L2xpdGVyYWw+LTxsaXRlcmFsPjk8L2xpdGVyYWw+IGFu ZAorICAgICAgIDxsaXRlcmFsPkE8L2xpdGVyYWw+LTxsaXRlcmFsPlY8L2xpdGVyYWw+KSB3aGlj aCBwcmVzZXJ2ZXMgc29ydCBvcmRlcgorICAgICAgIHdoZW4gZW5jb2RpbmcgYmluYXJ5IGRhdGEu IFRoZSA8ZnVuY3Rpb24+ZW5jb2RlPC9mdW5jdGlvbj4gZnVuY3Rpb24KKyAgICAgICBwcm9kdWNl cyBwYWRkZWQgb3V0cHV0LCB3aGlsZSA8ZnVuY3Rpb24+ZGVjb2RlPC9mdW5jdGlvbj4gYWNjZXB0 cyBib3RoCisgICAgICAgcGFkZGVkIGFuZCB1bnBhZGRlZCBpbnB1dC4gRGVjb2RpbmcgaXMgY2Fz ZS1pbnNlbnNpdGl2ZSBhbmQgaWdub3JlcworICAgICAgIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4K KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZm9ybWF0IGNhbiBiZSB1 c2VkIGZvciBlbmNvZGluZyBVVUlEcyBpbiBhIGNvbXBhY3QsIHNvcnRhYmxlIGZvcm1hdDoKKyAg ICAgICA8bGl0ZXJhbD5zdWJzdHJpbmcoZW5jb2RlKHV1aWRfdmFsdWU6OmJ5dGVhLCAnYmFzZTMy aGV4JykgRlJPTSAxIEZPUiAyNik8L2xpdGVyYWw+CisgICAgICAgcHJvZHVjZXMgYSAyNi1jaGFy YWN0ZXIgc3RyaW5nIGNvbXBhcmVkIHRvIHRoZSBzdGFuZGFyZCAzNi1jaGFyYWN0ZXIKKyAgICAg ICBVVUlEIHJlcHJlc2VudGF0aW9uLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor ICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZW5jb2RlLWZvcm1h dC1lc2NhcGUiPgogICAgICA8dGVybT5lc2NhcGUKICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9lbmNvZGUuYwppbmRleCBmNWY4MzVlOTQ0YS4uNzkzY2M3ZjJhMzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv ZW5jb2RlLmMKQEAgLTY1LDggKzY1LDggQEAgYmluYXJ5X2VuY29kZShQR19GVU5DVElPTl9BUkdT KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAogCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBlbmNvZGluZzogXCIlc1wiIiwg bmFtZWJ1ZiksCi0JCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVz XCIsIFwiJXNcIiwgYW5kIFwiJXNcIi4iLAotCQkJCQkJICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwg ImVzY2FwZSIsICJoZXgiKSkpOworCQkJCSBlcnJoaW50KCJWYWxpZCBlbmNvZGluZ3MgYXJlIFwi JXNcIiwgXCIlc1wiLCBcIiVzXCIsIFwiJXNcIiwgYW5kIFwiJXNcIi4iLAorCQkJCQkJICJiYXNl NjQiLCAiYmFzZTY0dXJsIiwgImJhc2UzMmhleCIsICJlc2NhcGUiLCAiaGV4IikpKTsKIAogCWRh dGFwdHIgPSBWQVJEQVRBX0FOWShkYXRhKTsKIAlkYXRhbGVuID0gVkFSU0laRV9BTllfRVhIRFIo ZGF0YSk7CkBAIC0xMTUsOCArMTE1LDggQEAgYmluYXJ5X2RlY29kZShQR19GVU5DVElPTl9BUkdT KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAogCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBlbmNvZGluZzogXCIlc1wiIiwg bmFtZWJ1ZiksCi0JCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVz XCIsIFwiJXNcIiwgYW5kIFwiJXNcIi4iLAotCQkJCQkJICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwg ImVzY2FwZSIsICJoZXgiKSkpOworCQkJCSBlcnJoaW50KCJWYWxpZCBlbmNvZGluZ3MgYXJlIFwi JXNcIiwgXCIlc1wiLCBcIiVzXCIsIFwiJXNcIiwgYW5kIFwiJXNcIi4iLAorCQkJCQkJICJiYXNl NjQiLCAiYmFzZTY0dXJsIiwgImJhc2UzMmhleCIsICJlc2NhcGUiLCAiaGV4IikpKTsKIAogCWRh dGFwdHIgPSBWQVJEQVRBX0FOWShkYXRhKTsKIAlkYXRhbGVuID0gVkFSU0laRV9BTllfRVhIRFIo ZGF0YSk7CkBAIC04MjUsNiArODI1LDE0NCBAQCBlc2NfZGVjX2xlbihjb25zdCBjaGFyICpzcmMs IHNpemVfdCBzcmNsZW4pCiAJcmV0dXJuIGxlbjsKIH0KIAorLyoKKyAqIEJBU0UzMkhFWAorICov CisKK3N0YXRpYyBjb25zdCBjaGFyIGJhc2UzMmhleF90YWJsZVtdID0gIjAxMjM0NTY3ODlBQkNE RUZHSElKS0xNTk9QUVJTVFVWIjsKKworc3RhdGljIHVpbnQ2NAorYmFzZTMyaGV4X2VuY19sZW4o Y29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuKQoreworCS8qIDUgYnl0ZXMgZW5jb2RlIHRv IDggY2hhcmFjdGVycywgcm91bmQgdXAgdG8gbXVsdGlwbGUgb2YgOCBmb3IgcGFkZGluZyAqLwor CXJldHVybiAoKHVpbnQ2NCkgc3JjbGVuICsgNCkgLyA1ICogODsKK30KKworc3RhdGljIHVpbnQ2 NAorYmFzZTMyaGV4X2RlY19sZW4oY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc3JjbGVuKQorewor CS8qIERlY29kZSBsZW5ndGggaXMgKHNyY2xlbiAqIDUpIC8gOCwgYnV0IHdlIG1heSBoYXZlIHBh ZGRpbmcgKi8KKwlyZXR1cm4gKCh1aW50NjQpIHNyY2xlbiAqIDUpIC8gODsKK30KKworc3RhdGlj IHVpbnQ2NAorYmFzZTMyaGV4X2VuY29kZShjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4s IGNoYXIgKmRzdCkKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhID0gKGNvbnN0IHVuc2ln bmVkIGNoYXIgKikgc3JjOworCXVpbnQ2NAkJYml0c19idWZmZXIgPSAwOworCWludAkJCWJpdHNf aW5fYnVmZmVyID0gMDsKKwl1aW50NjQJCW91dHB1dF9wb3MgPSAwOworCXNpemVfdAkJaTsKKwor CWZvciAoaSA9IDA7IGkgPCBzcmNsZW47IGkrKykKKwl7CisJCS8qIEFkZCA4IGJpdHMgdG8gdGhl IGJ1ZmZlciAqLworCQliaXRzX2J1ZmZlciA9IChiaXRzX2J1ZmZlciA8PCA4KSB8IGRhdGFbaV07 CisJCWJpdHNfaW5fYnVmZmVyICs9IDg7CisKKwkJLyogRXh0cmFjdCA1LWJpdCBjaHVua3Mgd2hp bGUgd2UgaGF2ZSBlbm91Z2ggYml0cyAqLworCQl3aGlsZSAoYml0c19pbl9idWZmZXIgPj0gNSkK KwkJeworCQkJYml0c19pbl9idWZmZXIgLT0gNTsKKwkJCS8qIEV4dHJhY3QgdG9wIDUgYml0cyAq LworCQkJZHN0W291dHB1dF9wb3MrK10gPSBiYXNlMzJoZXhfdGFibGVbKGJpdHNfYnVmZmVyID4+ IGJpdHNfaW5fYnVmZmVyKSAmIDB4MUZdOworCQkJLyogQ2xlYXIgdGhlIGV4dHJhY3RlZCBiaXRz IGJ5IG1hc2tpbmcgKi8KKwkJCWJpdHNfYnVmZmVyICY9ICgoMVVMTCA8PCBiaXRzX2luX2J1ZmZl cikgLSAxKTsKKwkJfQorCX0KKworCS8qIEhhbmRsZSByZW1haW5pbmcgYml0cyAoaWYgYW55KSAq LworCWlmIChiaXRzX2luX2J1ZmZlciA+IDApCisJCWRzdFtvdXRwdXRfcG9zKytdID0gYmFzZTMy aGV4X3RhYmxlWyhiaXRzX2J1ZmZlciA8PCAoNSAtIGJpdHNfaW5fYnVmZmVyKSkgJiAweDFGXTsK KworCS8qIEFkZCBwYWRkaW5nIHRvIG1ha2UgbGVuZ3RoIGEgbXVsdGlwbGUgb2YgOCAocGVyIFJG QyA0NjQ4KSAqLworCXdoaWxlIChvdXRwdXRfcG9zICUgOCAhPSAwKQorCQlkc3Rbb3V0cHV0X3Bv cysrXSA9ICc9JzsKKworCXJldHVybiBvdXRwdXRfcG9zOworfQorCitzdGF0aWMgdWludDY0Citi YXNlMzJoZXhfZGVjb2RlKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwgY2hhciAqZHN0 KQoreworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEgPSAoY29uc3QgdW5zaWduZWQgY2hhciAq KSBzcmM7CisJdWludDY0CQliaXRzX2J1ZmZlciA9IDA7CisJaW50CQkJYml0c19pbl9idWZmZXIg PSAwOworCXVpbnQ2NAkJb3V0cHV0X3BvcyA9IDA7CisJc2l6ZV90CQlpOworCWludAkJCXBvcyA9 IDA7CQkvKiBwb3NpdGlvbiB3aXRoaW4gOC1jaGFyYWN0ZXIgZ3JvdXAgKDAtNykgKi8KKwlib29s CQllbmQgPSBmYWxzZTsJLyogaGF2ZSB3ZSBzZWVuIHBhZGRpbmc/ICovCisKKwlmb3IgKGkgPSAw OyBpIDwgc3JjbGVuOyBpKyspCisJeworCQl1bnNpZ25lZCBjaGFyIGMgPSBkYXRhW2ldOworCQlp bnQJCQl2YWw7CisKKwkJLyogU2tpcCB3aGl0ZXNwYWNlICovCisJCWlmIChjID09ICcgJyB8fCBj ID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykKKwkJCWNvbnRpbnVlOworCisJCWlm IChjID09ICc9JykKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBwYWRkaW5nIGlzIG9ubHkg dmFsaWQgYXQgcG9zaXRpb25zIDIsIDQsIDUsIG9yIDcgd2l0aGluCisJCQkgKiBhbiA4LWNoYXJh Y3RlciBncm91cCAoY29ycmVzcG9uZGluZyB0byAxLCAyLCAzLCBvciA0IGlucHV0IGJ5dGVzKS4K KwkJCSAqIFdlIG9ubHkgY2hlY2sgdGhlIHBvc2l0aW9uIGZvciB0aGUgZmlyc3QgJz0nIGNoYXJh Y3Rlci4KKwkJCSAqLworCQkJaWYgKCFlbmQpCisJCQl7CisJCQkJaWYgKHBvcyAhPSAyICYmIHBv cyAhPSA0ICYmIHBvcyAhPSA1ICYmIHBvcyAhPSA3KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJCSBl cnJtc2coInVuZXhwZWN0ZWQgXCI9XCIgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNl IikpKTsKKwkJCQllbmQgPSB0cnVlOworCQkJfQorCQkJcG9zKys7CisJCQljb250aW51ZTsKKwkJ fQorCisJCS8qIE5vIGRhdGEgY2hhcmFjdGVycyBhbGxvd2VkIGFmdGVyIHBhZGRpbmcgKi8KKwkJ aWYgKGVuZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIHN5bWJvbCBcIiUuKnNc IiBmb3VuZCB3aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UiLAorCQkJCQkJCXBnX21i bGVuKChjb25zdCBjaGFyICopICZjKSwgKGNvbnN0IGNoYXIgKikgJmMpKSk7CisKKwkJLyogRGVj b2RlIGJhc2UzMmhleCBjaGFyYWN0ZXIgKDAtOSwgQS1WLCBjYXNlLWluc2Vuc2l0aXZlKSAqLwor CQlpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisJCQl2YWwgPSBjIC0gJzAnOworCQllbHNlIGlm IChjID49ICdBJyAmJiBjIDw9ICdWJykKKwkJCXZhbCA9IGMgLSAnQScgKyAxMDsKKwkJZWxzZSBp ZiAoYyA+PSAnYScgJiYgYyA8PSAndicpCisJCQl2YWwgPSBjIC0gJ2EnICsgMTA7CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIHN5bWJvbCBcIiUuKnNcIiBmb3VuZCB3 aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UiLAorCQkJCQkJCXBnX21ibGVuKChjb25z dCBjaGFyICopICZjKSwgKGNvbnN0IGNoYXIgKikgJmMpKSk7CisKKwkJLyogQWRkIDUgYml0cyB0 byBidWZmZXIgKi8KKwkJYml0c19idWZmZXIgPSAoYml0c19idWZmZXIgPDwgNSkgfCB2YWw7CisJ CWJpdHNfaW5fYnVmZmVyICs9IDU7CisJCXBvcysrOworCisJCS8qIEV4dHJhY3QgOC1iaXQgYnl0 ZXMgd2hlbiB3ZSBoYXZlIGVub3VnaCBiaXRzICovCisJCXdoaWxlIChiaXRzX2luX2J1ZmZlciA+ PSA4KQorCQl7CisJCQliaXRzX2luX2J1ZmZlciAtPSA4OworCQkJZHN0W291dHB1dF9wb3MrK10g PSAodW5zaWduZWQgY2hhcikgKGJpdHNfYnVmZmVyID4+IGJpdHNfaW5fYnVmZmVyKTsKKwkJCS8q IENsZWFyIHRoZSBleHRyYWN0ZWQgYml0cyAqLworCQkJYml0c19idWZmZXIgJj0gKCgxVUxMIDw8 IGJpdHNfaW5fYnVmZmVyKSAtIDEpOworCQl9CisKKwkJLyogUmVzZXQgcG9zaXRpb24gYWZ0ZXIg ZWFjaCBjb21wbGV0ZSA4LWNoYXJhY3RlciBncm91cCAqLworCQlpZiAocG9zID09IDgpCisJCQlw b3MgPSAwOworCX0KKworCXJldHVybiBvdXRwdXRfcG9zOworfQorCiAvKgogICogQ29tbW9uCiAg Ki8KQEAgLTg1NCw2ICs5OTIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCQkJcGdfYmFzZTY0 dXJsX2VuY19sZW4sIHBnX2Jhc2U2NHVybF9kZWNfbGVuLCBwZ19iYXNlNjR1cmxfZW5jb2RlLCBw Z19iYXNlNjR1cmxfZGVjb2RlCiAJCX0KIAl9LAorCXsKKwkJImJhc2UzMmhleCIsCisJCXsKKwkJ CWJhc2UzMmhleF9lbmNfbGVuLCBiYXNlMzJoZXhfZGVjX2xlbiwgYmFzZTMyaGV4X2VuY29kZSwg YmFzZTMyaGV4X2RlY29kZQorCQl9CisJfSwKIAl7CiAJCSJlc2NhcGUiLAogCQl7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0cmluZ3Mub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdHJpbmdzLm91dAppbmRleCBmMzg2ODhiNWMzNy4uMTJkN2RhOTY5NWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RyaW5ncy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdHJpbmdzLm91dApAQCAtMjYwMCwxNCArMjYwMCwx MzEgQEAgU0VMRUNUIGRlY29kZShlbmNvZGUoJ1x4MTIzNDU2Nzg5MGFiY2RlZjAwJywgJ2VzY2Fw ZScpLCAnZXNjYXBlJyk7CiAtLSByZXBvcnQgYW4gZXJyb3Igd2l0aCBhIGhpbnQgbGlzdGluZyB2 YWxpZCBlbmNvZGluZ3Mgd2hlbiBhbiBpbnZhbGlkIGVuY29kaW5nIGlzIHNwZWNpZmllZAogU0VM RUNUIGVuY29kZSgnXHgwMSc6OmJ5dGVhLCAnaW52YWxpZCcpOyAgLS0gZXJyb3IKIEVSUk9SOiAg dW5yZWNvZ25pemVkIGVuY29kaW5nOiAiaW52YWxpZCIKLUhJTlQ6ICBWYWxpZCBlbmNvZGluZ3Mg YXJlICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KK0hJTlQ6ICBW YWxpZCBlbmNvZGluZ3MgYXJlICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwgImJhc2UzMmhleCIsICJl c2NhcGUiLCBhbmQgImhleCIuCiBTRUxFQ1QgZGVjb2RlKCcwMCcsICdpbnZhbGlkJyk7ICAgICAg ICAgICAtLSBlcnJvcgogRVJST1I6ICB1bnJlY29nbml6ZWQgZW5jb2Rpbmc6ICJpbnZhbGlkIgot SElOVDogIFZhbGlkIGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBl IiwgYW5kICJoZXgiLgorSElOVDogIFZhbGlkIGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNl NjR1cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KIC0tCi0tLSBiYXNlNjR1 cmwgZW5jb2RpbmcvZGVjb2RpbmcKKy0tIGJhc2UzMmhleCBlbmNvZGluZy9kZWNvZGluZwogLS0K IFNFVCBieXRlYV9vdXRwdXQgVE8gaGV4OworU0VMRUNUIGVuY29kZSgnJywgJ2Jhc2UzMmhleCcp OyAgLS0gJycKKyBlbmNvZGUgCistLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2Rl KCdceDExJywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0PT09PT09JworICBlbmNvZGUgIAorLS0tLS0t LS0tLQorIDI0PT09PT09CisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMicsICdiYXNl MzJoZXgnKTsgIC0tICcyNEgwPT09PScKKyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgwPT09 PQorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMycsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgzNj09PScKKyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgzNj09PQorKDEgcm93KQor CitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDA9 JworICBlbmNvZGUgIAorLS0tLS0tLS0tLQorIDI0SDM2SDA9CisoMSByb3cpCisKK1NFTEVDVCBl bmNvZGUoJ1x4MTEyMjMzNDQ1NScsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTCcKKyAgZW5j b2RlICAKKy0tLS0tLS0tLS0KKyAyNEgzNkgyTAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdc eDExMjIzMzQ0NTU2NicsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTENPPT09PT09JworICAg ICAgZW5jb2RlICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAyNEgzNkgyTENPPT09PT09Ciso MSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJycsICdiYXNlMzJoZXgnKTsgIC0tICcnCisgZGVjb2Rl IAorLS0tLS0tLS0KKyBceAorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyND09PT09PScsICdi YXNlMzJoZXgnKTsgIC0tIFx4MTEKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MTEKKygxIHJvdykK KworU0VMRUNUIGRlY29kZSgnMjRIMD09PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIKKyBk ZWNvZGUgCistLS0tLS0tLQorIFx4MTEyMgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgz Nj09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzCisgIGRlY29kZSAgCistLS0tLS0tLS0t CisgXHgxMTIyMzMKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMD0nLCAnYmFzZTMy aGV4Jyk7ICAtLSBceDExMjIzMzQ0CisgICBkZWNvZGUgICAKKy0tLS0tLS0tLS0tLQorIFx4MTEy MjMzNDQKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMkwnLCAnYmFzZTMyaGV4Jyk7 ICAtLSBceDExMjIzMzQ0NTUKKyAgICBkZWNvZGUgICAgCistLS0tLS0tLS0tLS0tLQorIFx4MTEy MjMzNDQ1NQorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgyTENPPT09PT09JywgJ2Jh c2UzMmhleCcpOyAgLS0gXHgxMTIyMzM0NDU1NjYKKyAgICAgZGVjb2RlICAgICAKKy0tLS0tLS0t LS0tLS0tLS0KKyBceDExMjIzMzQ0NTU2NgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNCcs ICdiYXNlMzJoZXgnKTsgIC0tIE9LLCBwYWRkaW5nIGA9YCBhcmUgb3B0aW9uYWwKKyBkZWNvZGUg CistLS0tLS0tLQorIFx4MTEKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjQ9PT09PT09Jywg J2Jhc2UzMmhleCcpOyAgLS0gT0sKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MTEKKygxIHJvdykK KworU0VMRUNUIGRlY29kZSgnMjRoMzZoMmxjbycsICdiYXNlMzJoZXgnKTsgIC0tIE9LLCB0aGUg ZW5jb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZQorICAgICBkZWNvZGUgICAgIAorLS0tLS0tLS0t LS0tLS0tLQorIFx4MTEyMjMzNDQ1NTY2CisoMSByb3cpCisKK1NFTEVDVCBkZWNvZGUoJz0nLCAn YmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJST1I6ICB1bmV4cGVjdGVkICI9IiB3aGlsZSBkZWNv ZGluZyBiYXNlMzJoZXggc2VxdWVuY2UKK1NFTEVDVCBkZWNvZGUoJ1cnLCAnYmFzZTMyaGV4Jyk7 ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAiVyIgZm91bmQgd2hpbGUgZGVjb2Rp bmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgwPTI0JywgJ2Jhc2Uz MmhleCcpOyAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAiMiIgZm91bmQgd2hpbGUg ZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2RlKCcxMT0nLCAnYmFzZTMy aGV4Jyk7ICAtLSBPSywgbm9uLXplcm8gcGFkZGluZyBiaXRzIGFyZSBhY2NlcHRlZCAoY29uc2lz dGVudCB3aXRoIGJhc2U2NCkKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MDgKKygxIHJvdykKKwor LS0KKy0tIGJhc2U2NHVybCBlbmNvZGluZy9kZWNvZGluZworLS0KIC0tIFNpbXBsZSBlbmNvZGlu Zy9kZWNvZGluZwogU0VMRUNUIGVuY29kZSgnXHg2OWI3M2VmZicsICdiYXNlNjR1cmwnKTsgIC0t IGFiYy1fdwogIGVuY29kZSAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv dXVpZC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0CmluZGV4IGQxNTdl ZjdkMGIzLi5kZjI1YTZhYTVjNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91dWlkLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0CkBAIC0z MjcsNSArMzI3LDIxIEBAIFNFTEVDVCB2ID0gdjo6Ynl0ZWE6OnV1aWQgYXMgbWF0Y2hlZCBGUk9N IGdlbl9yYW5kb21fdXVpZCgpIHY7CiAgdAogKDEgcm93KQogCistLSBtYWtlIHN1cmUgYmFzZTMy aGV4IGVuY29kaW5nIHdvcmtzIHdpdGggVVVJRHMgYW5kIHByZXNlcnZlcyBvcmRlcmluZworU0VM RUNUIG9yaWcsIGVuY29kZShvcmlnIDo6IGJ5dGVhLCAnYmFzZTMyaGV4JykgQVMgZW5jCitGUk9N IHVubmVzdChBUlJBWVsKKyAgICAnMTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAw JywKKyAgICAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJywKKyAgICAnMTEx MTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExJywKKyAgICAnZmZmZmZmZmYtZmZmZi1m ZmZmLWZmZmYtZmZmZmZmZmZmZmZmJ10gOjogdXVpZFtdCispIEFTIG9yaWcgT1JERVIgQlkgZW5j OworICAgICAgICAgICAgICAgICBvcmlnICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ZW5jICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAwMDAwMDAwLTAwMDAtMDAw MC0wMDAwLTAwMDAwMDAwMDAwMCB8IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPT09PT09Cisg MTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgMjQ4SDI0OEgyNDhIMjQ4SDI0 OEgyNDhIMjQ9PT09PT0KKyAxMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2MTQxNzQwMDAgfCAy OFY0QVBWOEpDOUQ3OTJNODlKMTg1UTAwMD09PT09PQorIGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZm LWZmZmZmZmZmZmZmZiB8IFZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZTPT09PT09CisoNCByb3dz KQorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlkMSwgZ3VpZDIsIGd1aWQzIENBU0NBREU7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdHJpbmdzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3N0cmluZ3Muc3FsCmluZGV4IGQ4YTA5NzM3NjY4Li4yOGQ1ODJmMzliZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RyaW5ncy5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3RyaW5ncy5zcWwKQEAgLTgzNSwxMCArODM1LDM5IEBAIFNFTEVDVCBl bmNvZGUoJ1x4MDEnOjpieXRlYSwgJ2ludmFsaWQnKTsgIC0tIGVycm9yCiBTRUxFQ1QgZGVjb2Rl KCcwMCcsICdpbnZhbGlkJyk7ICAgICAgICAgICAtLSBlcnJvcgogCiAtLQotLS0gYmFzZTY0dXJs IGVuY29kaW5nL2RlY29kaW5nCistLSBiYXNlMzJoZXggZW5jb2RpbmcvZGVjb2RpbmcKIC0tCiBT RVQgYnl0ZWFfb3V0cHV0IFRPIGhleDsKIAorU0VMRUNUIGVuY29kZSgnJywgJ2Jhc2UzMmhleCcp OyAgLS0gJycKK1NFTEVDVCBlbmNvZGUoJ1x4MTEnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnMjQ9PT09 PT0nCitTRUxFQ1QgZW5jb2RlKCdceDExMjInLCAnYmFzZTMyaGV4Jyk7ICAtLSAnMjRIMD09PT0n CitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMycsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNj09PScK K1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzNDQnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnMjRIMzZIMD0n CitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTUnLCAnYmFzZTMyaGV4Jyk7ICAtLSAnMjRIMzZI MkwnCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTU2NicsICdiYXNlMzJoZXgnKTsgIC0tICcy NEgzNkgyTENPPT09PT09JworCitTRUxFQ1QgZGVjb2RlKCcnLCAnYmFzZTMyaGV4Jyk7ICAtLSAn JworU0VMRUNUIGRlY29kZSgnMjQ9PT09PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExCitTRUxF Q1QgZGVjb2RlKCcyNEgwPT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMgorU0VMRUNUIGRl Y29kZSgnMjRIMzY9PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIzMworU0VMRUNUIGRlY29k ZSgnMjRIMzZIMD0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIzMzQ0CitTRUxFQ1QgZGVjb2Rl KCcyNEgzNkgyTCcsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzNDQ1NQorU0VMRUNUIGRlY29k ZSgnMjRIMzZIMkxDTz09PT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzNDQ1NTY2CisK K1NFTEVDVCBkZWNvZGUoJzI0JywgJ2Jhc2UzMmhleCcpOyAgLS0gT0ssIHBhZGRpbmcgYD1gIGFy ZSBvcHRpb25hbAorU0VMRUNUIGRlY29kZSgnMjQ9PT09PT09JywgJ2Jhc2UzMmhleCcpOyAgLS0g T0sKK1NFTEVDVCBkZWNvZGUoJzI0aDM2aDJsY28nLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgdGhl IGVuY29kaW5nIGlzIGNhc2UtaW5zZW5zaXRpdmUKK1NFTEVDVCBkZWNvZGUoJz0nLCAnYmFzZTMy aGV4Jyk7ICAtLSBlcnJvcgorU0VMRUNUIGRlY29kZSgnVycsICdiYXNlMzJoZXgnKTsgIC0tIGVy cm9yCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgwPTI0JywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJvcgor U0VMRUNUIGRlY29kZSgnMTE9JywgJ2Jhc2UzMmhleCcpOyAgLS0gT0ssIG5vbi16ZXJvIHBhZGRp bmcgYml0cyBhcmUgYWNjZXB0ZWQgKGNvbnNpc3RlbnQgd2l0aCBiYXNlNjQpCisKKworLS0KKy0t IGJhc2U2NHVybCBlbmNvZGluZy9kZWNvZGluZworLS0KKwogLS0gU2ltcGxlIGVuY29kaW5nL2Rl Y29kaW5nCiBTRUxFQ1QgZW5jb2RlKCdceDY5YjczZWZmJywgJ2Jhc2U2NHVybCcpOyAgLS0gYWJj LV93CiBTRUxFQ1QgZGVjb2RlKCdhYmMtX3cnLCAnYmFzZTY0dXJsJyk7ICAgICAgLS0gXHg2OWI3 M2VmZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC91dWlkLnNxbAppbmRleCBmNTEyZjRkZWExZC4uMjc4YTU3NzNhZGEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3V1aWQuc3FsCkBAIC0xNTIsNSArMTUyLDE0IEBAIFNFTEVDVCAnXHgwMTlhMmY4 NTljZWQ3MjI1Yjk5ZDljNTUwNDRhMjU2Myc6OmJ5dGVhOjp1dWlkOwogU0VMRUNUICdceDEyMzQ1 Njc4OTBhYmNkZWYnOjpieXRlYTo6dXVpZDsgLS0gZXJyb3IKIFNFTEVDVCB2ID0gdjo6Ynl0ZWE6 OnV1aWQgYXMgbWF0Y2hlZCBGUk9NIGdlbl9yYW5kb21fdXVpZCgpIHY7CiAKKy0tIG1ha2Ugc3Vy ZSBiYXNlMzJoZXggZW5jb2Rpbmcgd29ya3Mgd2l0aCBVVUlEcyBhbmQgcHJlc2VydmVzIG9yZGVy aW5nCitTRUxFQ1Qgb3JpZywgZW5jb2RlKG9yaWcgOjogYnl0ZWEsICdiYXNlMzJoZXgnKSBBUyBl bmMKK0ZST00gdW5uZXN0KEFSUkFZWworICAgICcxMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2 MTQxNzQwMDAnLAorICAgICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnLAor ICAgICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnLAorICAgICdmZmZmZmZm Zi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYnXSA6OiB1dWlkW10KKykgQVMgb3JpZyBPUkRF UiBCWSBlbmM7CisKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGd1aWQxLCBndWlkMiwgZ3VpZDMg Q0FTQ0FERTsKLS0gCjIuNDMuMAoK --000000000000caf68d064d4a8e11--