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 1wFlWY-005WU2-34 for pgsql-bugs@arkaria.postgresql.org; Thu, 23 Apr 2026 04:18:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFlVX-00Gpjn-2S for pgsql-bugs@arkaria.postgresql.org; Thu, 23 Apr 2026 04:17:43 +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 1wFlVX-00GpjW-0j for pgsql-bugs@lists.postgresql.org; Thu, 23 Apr 2026 04:17:43 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFlVU-00000002MAH-3Yno for pgsql-bugs@lists.postgresql.org; Thu, 23 Apr 2026 04:17:42 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-42321c8b8f5so5128448fac.1 for ; Wed, 22 Apr 2026 21:17:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776917860; cv=none; d=google.com; s=arc-20240605; b=OAzRY1MtfEh5fRdm3uFzi/NO6xK8MeofjfhgjndZ1kBWQML/pxJ83mbopSVlwE/4fx uOlEWE8mczh9m2nXr7qZCm+imxbFalpYVqFFAeXBNx0hIpnOugoi+37VNo+uW9mfv9AH Zjmz5B5Cz/ZpbRfAQ4yNJUnNo7/6JbNefZaMXE0knh6BS7CUw+8h2MJJAiQ1rxmCrL0O vvJAUjiytnHtOwB+tPeeJc+Ad7fQFr28ebhTXv/lAKdbAuEjNJCnbzQhgfD8zdctGHeX NYnBKBKWbkWyO0bWen0Q5M5q8ZpDAo59LTAnxrgnf8CL5UjPH9ZUc+GF8NQaXXT9k6Os QbsQ== 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=ER7pUxyH0ChvDJjqScTnKX10U9qZkWlGdm5rmEHw/KE=; fh=+3we9M4nX3DyNmGlLeZG7xY4Xh/OqJlUT/f8h19brIk=; b=Ozgtc9OynPGrKoMQR3Xy7h1R2gMYFTyEfJdRtL6ZzJIKwtMt6ya6vK+LrDVDr8DAWA Cl+a4YQ5hSDIpj1WrLApV6v8zq1ET65BbNt8HjHCX5nOF9Oze/50wmdrDBsAmVq5xv3L lG7b8mOxneepcqohtUWUgJ6qC51JdpnrGF8VlTfWRU3rq7VJocpOUMf31LVaOG/VoZw/ 2FhuwUe16shNvam/HxOPi/04gbkWdyHahSDgC2K+K84hIEoeO0YHcta4h7HThQYL1/36 3yAg5fJTEj0IsYgIgqeym8QwHtp0CALQLf57Pbk9bubQtYsl0f/2vNdi4DsdDyTpSBA2 QoXA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776917860; x=1777522660; darn=lists.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=ER7pUxyH0ChvDJjqScTnKX10U9qZkWlGdm5rmEHw/KE=; b=Juk6m4UfGCiH3EXey3Badh7uF5OtcllrjVgvoUhDl3VzOQyZdMzBFeNAnwFSQ+uNzN 5PdOMPPSchMz/gyf6T0R3AFLaSqieiIGOxjZXUJJo+p+m5M4O/7823p8LdEY/D6Qj4OH gbY5V2QwDjtqrBGOz61F6SF+XWB7uVOvNh8cwkY3XQPBfmJCpu+5uQD6EQuiAF7e/3PB wX7ajPP0rZYn1imGCjxkOcZcYv05GZcCHHz8r/gjDaq28nwLkoK3g5byQV+cVtsiLSdN NinlLH/MYyYGsWTfSVZOGYKOi8lJUIgCGDqHhVxjlYpN5IUDCxaIgLKYExJUgO5Pv8bF Lz2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776917860; x=1777522660; 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=ER7pUxyH0ChvDJjqScTnKX10U9qZkWlGdm5rmEHw/KE=; b=eRiyM5Xdne880MisddZR0wEyU9CX1gC9S6oA5wjnCX7j4Av5l+x/P3RizA1Jb0tedZ nEh70RferHb2N/I8Vg4u+gbQbT5MYvsrRpkJcwjXe3J429zY4rNVZGd/gn4bh/ncMEnw qAJhWDHxrJVUOejhlbfZRcAkKl0MAt/y6qoD/buxDbYxzs7RVgyjsBi8gWxIZnPyDay8 GyDz5RVEFTdwR13RztUFBYq9lH1tCGk3VIBtcdgTzYtLoJkBHF/WhONZwQPO4FIqgBe3 fsM6GxHEWxvdb7pu7L/Zu2CSqZi1nF1fSClDibJwGpII8f4+3oUG6wEL4bJIC0/orAbG bvjQ== X-Forwarded-Encrypted: i=1; AFNElJ+BmSqWs5jam2lf6XW1ss+7sHPOwzd1AKt9Rl98QhKn5y3qDd90gDuBFFHKtUDazya8+I1zTlEEe2We@lists.postgresql.org X-Gm-Message-State: AOJu0YyVoaFWm/JSgoZIipXzhq262EBjJos4b3532YpkA5EpZLLo2emB A5H9S6bC7V3z6GibRBvPN/i+jfI9axpt7Hmi/PU3k/9ilFV5brSrhLWNQSUrEKNO95SnqruMNU9 7xvfwy6hVS/tQdJtF1L2J5h6eWkzdkzY= X-Gm-Gg: AeBDievS79CD2gBw53BZA8A+SMAwBBFj9SyZc27SrSF9JHhC47FOob3oAscP9pBE0p9 UWwuq757bhpm4H4LMdiO2xHR1Rng4f1Z3wUxCuYRIX+AJtu+E0nFy/zpqM0aOT9G21++RmD1MqR m9QYUDeiIjHniaU6x7eHw47Hu1GkzAyAWeYbUS9BbdkEtPzD/swmEXuxMh2ggicjvT//BNi9R1b Me6sDlFvaLI6hHewWeZ9ycFxSGUEOg/k3H216ms/v0u+6ezgBMIxMbQYirqOsgiY36W2UmzS1b/ lkmj5QTpgca4X8dltxn+mmNzS4B90hr2eOk= X-Received: by 2002:a05:6870:1403:b0:423:6a9b:2f59 with SMTP id 586e51a60fabf-42a99ae2203mr13531366fac.24.1776917860580; Wed, 22 Apr 2026 21:17:40 -0700 (PDT) MIME-Version: 1.0 References: <19382-4c2060ffee72759b@postgresql.org> <674982B4-2824-433D-AFC4-CCBF410D9424@yandex-team.ru> In-Reply-To: <674982B4-2824-433D-AFC4-CCBF410D9424@yandex-team.ru> From: surya poondla Date: Wed, 22 Apr 2026 21:17:29 -0700 X-Gm-Features: AQROBzDVOSoi2iYuBzMivLyoR8XfS30pnxspeAsf-8KLRwcD2ETkNzh5dtasCpM Message-ID: Subject: Re: BUG #19382: Server crash at __nss_database_lookup To: Andrey Borodin Cc: songjinzhou , dllggyx , pgsql-bugs Content-Type: multipart/mixed; boundary="000000000000e021ae065018ed68" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e021ae065018ed68 Content-Type: multipart/alternative; boundary="000000000000e021ac065018ed66" --000000000000e021ac065018ed66 Content-Type: text/plain; charset="UTF-8" Hi Andrey, Thank you for identifying the domain fast-path bug and RAISE NOTICE. I fixed both of them in the v7 patch. Added the test 7 to the suite as well Thank you again for helping in identifying further bugs and providing feedback. Regards, Surya Poondla --000000000000e021ac065018ed66 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andrey,

Thank you for identifyi= ng the=C2=A0domain fast-path bug and RAISE NOTICE. I fixed both of them in = the v7 patch.

Added the test 7 to the suite as well

Thank you= again for helping in identifying further bugs and providing=C2=A0feedback.=

Regards,
Surya Poondla
--000000000000e021ac065018ed66-- --000000000000e021ae065018ed68 Content-Type: application/octet-stream; name="0007-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Disposition: attachment; filename="0007-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moayx7hx0 RnJvbSA2ZTY3OWYzMDJmYzEzNmM5YTNmNzE2Y2U1MWVmOGU2MDZkZGM0ZTg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzcG9vbmRsYSA8c19wb29uZGxhQGFwcGxlLmNvbT4KRGF0ZTog RnJpLCAyMyBKYW4gMjAyNiAxNzoyODo1NCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjddIEZpeCAo YnVnICMxOTM4Mikgc2VydmVyIGNyYXNoIHdoZW4gQUxURVIgVFlQRSBpcyB1c2VkCiBtaWQtdHJh bnNhY3Rpb24gaW4gUEwvcGdTUUwKCldoZW4gQUxURVIgVFlQRSBjaGFuZ2VzIGEgY29tcG9zaXRl IHR5cGUncyBjb2x1bW4gdHlwZXMgd2l0aGluIGEKdHJhbnNhY3Rpb24sIFBML3BnU1FMIHJlY29y ZCB2YXJpYWJsZXMgdGhhdCB3ZXJlIHBvcHVsYXRlZCBiZWZvcmUKdGhlIEFMVEVSIHN0aWxsIGhv bGQgZGF0YSBpbiB0aGUgb2xkIGZvcm1hdC4gUmV0dXJuaW5nIHN1Y2ggcmVjb3JkcwpjYXVzZXMg YSBjcmFzaCBiZWNhdXNlIHRoZSBvdXRwdXQgZnVuY3Rpb25zIGV4cGVjdCBkYXRhIG1hdGNoaW5n IHRoZQpuZXcgdHlwZSBkZWZpbml0aW9uLCBub3QgdGhlIG9sZCBvbmUuCgpUaGUgY3Jhc2ggbWFu aWZlc3RlZCBhcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiByZWNvcmRfb3V0KCkgd2hlbiBpdAph dHRlbXB0ZWQgdG8gaW50ZXJwcmV0IGludGVnZXIgZGF0YSBhcyBhIHRleHQgcG9pbnRlciwgZHVl IHRvIHRoZQptaXNtYXRjaCBiZXR3ZWVuIHRoZSBzdG9yZWQgZGF0YSBhbmQgdGhlIGN1cnJlbnQg dHlwZSBkZWZpbml0aW9uLgoKVGhlIGZpeCBzbmFwc2hvdHMgdHVwRGVzY19pZGVudGlmaWVyIHZh bHVlcyBmb3IgYWxsIGNvbXBvc2l0ZSB0eXBlcwpyZWFjaGFibGUgZnJvbSBhIHJlY29yZCB2YXJp YWJsZSdzIHR5cGUgKGluY2x1ZGluZyBuZXN0ZWQgY29tcG9zaXRlCnR5cGVzKSBhdCBhc3NpZ25t ZW50IHRpbWUuIEF0IFJFVFVSTi9SRVRVUk4gTkVYVCB0aW1lLCB0aGVzZQppZGVudGlmaWVycyBh cmUgY29tcGFyZWQgYWdhaW5zdCBjdXJyZW50IHZhbHVlcyBmcm9tIHRoZSB0eXBlIGNhY2hlLgpJ ZiBhbnkgaGF2ZSBjaGFuZ2VkLCBhbiBlcnJvciBpcyByYWlzZWQgaW5zdGVhZCBvZiByaXNraW5n IGEgY3Jhc2guCi0tLQogLi4uL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91 dCAgIHwgMTEzICsrKysrKysKIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgICAgICAgICAg ICAgICAgICB8IDI4NiArKysrKysrKysrKysrKysrKy0KIHNyYy9wbC9wbHBnc3FsL3NyYy9wbHBn c3FsLmggICAgICAgICAgICAgICAgICB8ICAgOSArCiBzcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3Bs cGdzcWxfcmVjb3JkLnNxbCAgICAgfCAxMDQgKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA1MTEg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3Fs L3NyYy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhw ZWN0ZWQvcGxwZ3NxbF9yZWNvcmQub3V0CmluZGV4IDUxMWY5ZTAzYzg1Li4xZDJiYmVhZTVhMyAx MDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91 dAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxwZ3NxbF9yZWNvcmQub3V0CkBA IC04ODUsMyArODg1LDExNiBAQCB0YWJsZSB0d29faW50OHNfdGFiOwogICg0Miw0MikKICgxIHJv dykKIAorLS0gVGVzdHMgZm9yIGJ1ZyAjMTkzODI6IHNlcnZlciBjcmFzaCB3aGVuIEFMVEVSIFRZ UEUgaXMgdXNlZCBtaWQtdHJhbnNhY3Rpb24KKy0tIGluIFBML3BnU1FMLiBSZWNvcmQgdmFyaWFi bGVzIHBvcHVsYXRlZCBiZWZvcmUgQUxURVIgVFlQRSBtdXN0IG5vdCBiZQorLS0gcmV0dXJuZWQs IGFzIHRoZSBzdG9yZWQgZGF0YSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3VycmVudCB0eXBlIGRl ZmluaXRpb24uCistLSBDYXNlIDE6IERpcmVjdCBjb21wb3NpdGUgdHlwZSBjaGFuZ2UgKElOVCAt PiBURVhUKQorY3JlYXRlIHR5cGUgYnVnMTkzODJfZm9vIGFzIChhIGludCwgYiBpbnQpOworY3Jl YXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfZGlyZWN0KCkgcmV0dXJucyByZWNvcmQgYXMgJCQK K2RlY2xhcmUgciBidWcxOTM4Ml9mb28gOj0gcm93KDEyMywgcG93ZXIoMiwgMzApKTsKK2JlZ2lu CisgICAgYWx0ZXIgdHlwZSBidWcxOTM4Ml9mb28gYWx0ZXIgYXR0cmlidXRlIGIgdHlwZSB0ZXh0 OworICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBidWcx OTM4Ml90ZXN0X2RpcmVjdCgpOworRVJST1I6ICBjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJpYWJs ZSAiciIgYWZ0ZXIgY29tcG9zaXRlIHR5cGUgImJ1ZzE5MzgyX2ZvbyIgd2FzIGFsdGVyZWQKK0NP TlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X2RpcmVjdCgpIGxpbmUgNSBh dCBSRVRVUk4KK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9kaXJlY3QoKTsKK2Ryb3AgdHlw ZSBidWcxOTM4Ml9mb28gY2FzY2FkZTsKKy0tIENhc2UgMjogTmVzdGVkIGNvbXBvc2l0ZSB0eXBl IGNoYW5nZQorY3JlYXRlIHR5cGUgYnVnMTkzODJfaW5uZXIgYXMgKHggaW50LCB5IGludCk7Citj cmVhdGUgdHlwZSBidWcxOTM4Ml9vdXRlciBhcyAoYSBpbnQsIGIgYnVnMTkzODJfaW5uZXIpOwor Y3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfbmVzdGVkKCkgcmV0dXJucyByZWNvcmQgYXMg JCQKK2RlY2xhcmUgciBidWcxOTM4Ml9vdXRlcjsKK2JlZ2luCisgICAgciA6PSByb3coMSwgcm93 KDEwLCBwb3dlcigyLCAzMCk6OmludDQpOjpidWcxOTM4Ml9pbm5lcik6OmJ1ZzE5MzgyX291dGVy OworICAgIGFsdGVyIHR5cGUgYnVnMTkzODJfaW5uZXIgYWx0ZXIgYXR0cmlidXRlIHkgdHlwZSB0 ZXh0OworICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBi dWcxOTM4Ml90ZXN0X25lc3RlZCgpOworRVJST1I6ICBjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJp YWJsZSAiciIgYWZ0ZXIgY29tcG9zaXRlIHR5cGUgImJ1ZzE5MzgyX2lubmVyIiB3YXMgYWx0ZXJl ZAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfbmVzdGVkKCkgbGlu ZSA2IGF0IFJFVFVSTgorZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X25lc3RlZCgpOworZHJv cCB0eXBlIGJ1ZzE5MzgyX291dGVyIGNhc2NhZGU7Citkcm9wIHR5cGUgYnVnMTkzODJfaW5uZXIg Y2FzY2FkZTsKKy0tIENhc2UgMzogT1VUIHBhcmFtZXRlcgorY3JlYXRlIHR5cGUgYnVnMTkzODJf Zm9vMSBhcyAoYSBpbnQsIGIgaW50KTsKK2NyZWF0ZSBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X291 dChvdXQgcjEgYnVnMTkzODJfZm9vMSkgYXMgJCQKK2JlZ2luCisgICAgcjEgOj0gcm93KDEsIDIp OworICAgIGFsdGVyIHR5cGUgYnVnMTkzODJfZm9vMSBhbHRlciBhdHRyaWJ1dGUgYiB0eXBlIHRl eHQ7CisgICAgcmV0dXJuOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBidWcx OTM4Ml90ZXN0X291dCgpOworRVJST1I6ICBjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJpYWJsZSAi cjEiIGFmdGVyIGNvbXBvc2l0ZSB0eXBlICJidWcxOTM4Ml9mb28xIiB3YXMgYWx0ZXJlZAorQ09O VEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfb3V0KCkgbGluZSA1IGF0IFJF VFVSTgorZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X291dCgpOworZHJvcCB0eXBlIGJ1ZzE5 MzgyX2ZvbzEgY2FzY2FkZTsKKy0tIENhc2UgNDogTm8gQUxURVIgVFlQRSAoYmFzZWxpbmUg4oCU IG11c3Qgbm90IGVycm9yKQorY3JlYXRlIHR5cGUgYnVnMTkzODJfZm9vMiBhcyAoYSBpbnQsIGIg aW50KTsKK2NyZWF0ZSBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X2Jhc2VsaW5lKCkgcmV0dXJucyBi dWcxOTM4Ml9mb28yIGFzICQkCitkZWNsYXJlIHIgYnVnMTkzODJfZm9vMiA6PSByb3coMSwgMik7 CitiZWdpbgorICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVj dCBidWcxOTM4Ml90ZXN0X2Jhc2VsaW5lKCk7CisgYnVnMTkzODJfdGVzdF9iYXNlbGluZSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKK2Ryb3AgZnVuY3Rpb24g YnVnMTkzODJfdGVzdF9iYXNlbGluZSgpOworZHJvcCB0eXBlIGJ1ZzE5MzgyX2ZvbzI7CistLSBD YXNlIDU6IEZpZWxkLWJ5LWZpZWxkIGFzc2lnbm1lbnQgKGRvdCBub3RhdGlvbikKK2NyZWF0ZSB0 eXBlIGJ1ZzE5MzgyX2ZvbzMgYXMgKGEgaW50LCBiIGludCk7CitjcmVhdGUgZnVuY3Rpb24gYnVn MTkzODJfdGVzdF9maWVsZF9hc3NpZ24oKSByZXR1cm5zIHJlY29yZCBhcyAkJAorZGVjbGFyZSBy IGJ1ZzE5MzgyX2ZvbzM7CitiZWdpbgorICAgIHIuYSA6PSAxMjM7CisgICAgci5iIDo9IHBvd2Vy KDIsIDMwKTo6aW50NDsKKyAgICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbzMgYWx0ZXIgYXR0cmli dXRlIGIgdHlwZSB0ZXh0OworICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3Nx bDsKK3NlbGVjdCBidWcxOTM4Ml90ZXN0X2ZpZWxkX2Fzc2lnbigpOworRVJST1I6ICBjYW5ub3Qg cmV0dXJuIHJlY29yZCB2YXJpYWJsZSAiciIgYWZ0ZXIgY29tcG9zaXRlIHR5cGUgImJ1ZzE5Mzgy X2ZvbzMiIHdhcyBhbHRlcmVkCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gYnVnMTkzODJf dGVzdF9maWVsZF9hc3NpZ24oKSBsaW5lIDcgYXQgUkVUVVJOCitkcm9wIGZ1bmN0aW9uIGJ1ZzE5 MzgyX3Rlc3RfZmllbGRfYXNzaWduKCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vMyBjYXNjYWRl OworLS0gQ2FzZSA2OiBTRUxFQ1QgSU5UTyBpbmRpdmlkdWFsIGZpZWxkcworY3JlYXRlIHR5cGUg YnVnMTkzODJfZm9vNCBhcyAoYSBpbnQsIGIgaW50KTsKK2NyZWF0ZSB0YWJsZSBidWcxOTM4Ml90 YmwgKGEgaW50LCBiIGludCk7CitpbnNlcnQgaW50byBidWcxOTM4Ml90YmwgdmFsdWVzICgxMjMs IHBvd2VyKDIsIDMwKTo6aW50NCk7CitjcmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9zZWxl Y3RfaW50b19maWVsZCgpIHJldHVybnMgcmVjb3JkIGFzICQkCitkZWNsYXJlIHIgYnVnMTkzODJf Zm9vNDsKK2JlZ2luCisgICAgc2VsZWN0IGEsIGIgaW50byByLmEsIHIuYiBmcm9tIGJ1ZzE5Mzgy X3RibDsKKyAgICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbzQgYWx0ZXIgYXR0cmlidXRlIGIgdHlw ZSB0ZXh0OworICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVj dCBidWcxOTM4Ml90ZXN0X3NlbGVjdF9pbnRvX2ZpZWxkKCk7CitFUlJPUjogIGNhbm5vdCByZXR1 cm4gcmVjb3JkIHZhcmlhYmxlICJyIiBhZnRlciBjb21wb3NpdGUgdHlwZSAiYnVnMTkzODJfZm9v NCIgd2FzIGFsdGVyZWQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0 X3NlbGVjdF9pbnRvX2ZpZWxkKCkgbGluZSA2IGF0IFJFVFVSTgorZHJvcCBmdW5jdGlvbiBidWcx OTM4Ml90ZXN0X3NlbGVjdF9pbnRvX2ZpZWxkKCk7Citkcm9wIHRhYmxlIGJ1ZzE5MzgyX3RibDsK K2Ryb3AgdHlwZSBidWcxOTM4Ml9mb280IGNhc2NhZGU7CistLSBDYXNlIDc6IFJBSVNFIE5PVElD RSB3aXRoIHJlY29yZCB2YXJpYWJsZSAoZXhlY19ldmFsX2RhdHVtIHBhdGgpCitjcmVhdGUgdHlw ZSBidWcxOTM4Ml9mb281IGFzIChhIGludCwgYiBpbnQpOworY3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5 MzgyX3Rlc3RfZXZhbF9kYXR1bSgpIHJldHVybnMgdm9pZCBhcyAkJAorZGVjbGFyZSByIGJ1ZzE5 MzgyX2ZvbzU7CitiZWdpbgorICAgIHIuYiA6PSBwb3dlcigyLCAzMCk6OmludDQ7CisgICAgYWx0 ZXIgdHlwZSBidWcxOTM4Ml9mb281IGFsdGVyIGF0dHJpYnV0ZSBiIHR5cGUgdGV4dDsKKyAgICBy YWlzZSBub3RpY2UgJ3IgPSAlJywgcjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitzZWxl Y3QgYnVnMTkzODJfdGVzdF9ldmFsX2RhdHVtKCk7CitFUlJPUjogIGNhbm5vdCByZXR1cm4gcmVj b3JkIHZhcmlhYmxlICJyIiBhZnRlciBjb21wb3NpdGUgdHlwZSAiYnVnMTkzODJfZm9vNSIgd2Fz IGFsdGVyZWQKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X2V2YWxf ZGF0dW0oKSBsaW5lIDYgYXQgUkFJU0UKK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9ldmFs X2RhdHVtKCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vNSBjYXNjYWRlOwpkaWZmIC0tZ2l0IGEv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVj LmMKaW5kZXggNjViMGZkMDc5MGYuLmE3YzhmOGE4YmY5IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxw Z3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAg LTQ3MCw2ICs0NzAsMTIgQEAgc3RhdGljIGNoYXIgKmZvcm1hdF9wcmVwYXJlZHBhcmFtc2RhdGEo UExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIHN0YXRpYyBQTHBnU1FMX3ZhcmlhYmxlICptYWtl X2NhbGxzdG10X3RhcmdldChQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkg IFBMcGdTUUxfZXhwciAqZXhwcik7CiAKK3N0YXRpYyB2b2lkIGNoZWNrX3JlY29yZF90eXBlX25v dF9hbHRlcmVkKFBMcGdTUUxfcmVjICpyZWMpOworc3RhdGljIHZvaWQgY29sbGVjdF9jb21wb3Np dGVfdHlwZV92ZXJzaW9ucyhPaWQgdHlwaWQsCisJCQkJCQkJCQkJCU9pZCAqKm9pZHMsIHVpbnQ2 NCAqKnZlcnNpb25zLAorCQkJCQkJCQkJCQlpbnQgKm4sIGludCAqYWxsb2MpOworc3RhdGljIHZv aWQgc25hcHNob3RfcmVjb3JkX2NvbXBvc2l0ZV90eXBlcyhQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0 YXRlLAorCQkJCQkJCQkJCQlQTHBnU1FMX3JlYyAqcmVjKTsKIAogLyogLS0tLS0tLS0tLQogICog cGxwZ3NxbF9leGVjX2Z1bmN0aW9uCUNhbGxlZCBieSB0aGUgY2FsbCBoYW5kbGVyIGZvcgpAQCAt MzI4Nyw4ICszMjkzLDMwIEBAIGV4ZWNfc3RtdF9yZXR1cm4oUExwZ1NRTF9leGVjc3RhdGUgKmVz dGF0ZSwgUExwZ1NRTF9zdG10X3JldHVybiAqc3RtdCkKIAkJCQl9CiAJCQkJYnJlYWs7CiAKLQkJ CWNhc2UgUExQR1NRTF9EVFlQRV9ST1c6CiAJCQljYXNlIFBMUEdTUUxfRFRZUEVfUkVDOgorCQkJ CXsKKwkJCQkJUExwZ1NRTF9yZWMgKnJlYyA9IChQTHBnU1FMX3JlYyAqKSByZXR2YXI7CisJCQkJ CWludDMyCQlyZXR0eXBtb2Q7CisKKwkJCQkJLyoKKwkJCQkJICogQ2hlY2sgaWYgdGhlIHJlY29y ZCdzIGNvbXBvc2l0ZSB0eXBlIHdhcyBhbHRlcmVkIHNpbmNlCisJCQkJCSAqIHRoZSByZWNvcmQg d2FzIHBvcHVsYXRlZC4gSWYgc28sIHJhaXNlIGFuIGVycm9yIHRvCisJCQkJCSAqIHByZXZlbnQg Y3Jhc2hlcyB3aGVuIG91dHB1dHRpbmcgdGhlIHJlY29yZC4KKwkJCQkJICovCisJCQkJCWlmIChy ZWMtPnJlY3R5cGVpZCAhPSBSRUNPUkRPSUQgJiYgcmVjLT5lcmggIT0gTlVMTCAmJgorCQkJCQkJ IUV4cGFuZGVkUmVjb3JkSXNFbXB0eShyZWMtPmVyaCkpCisJCQkJCQljaGVja19yZWNvcmRfdHlw ZV9ub3RfYWx0ZXJlZChyZWMpOworCisJCQkJCWV4ZWNfZXZhbF9kYXR1bShlc3RhdGUsCisJCQkJ CQkJCQlyZXR2YXIsCisJCQkJCQkJCQkmZXN0YXRlLT5yZXR0eXBlLAorCQkJCQkJCQkJJnJldHR5 cG1vZCwKKwkJCQkJCQkJCSZlc3RhdGUtPnJldHZhbCwKKwkJCQkJCQkJCSZlc3RhdGUtPnJldGlz bnVsbCk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIFBMUEdTUUxfRFRZUEVfUk9XOgog CQkJCXsKIAkJCQkJLyogZXhlY19ldmFsX2RhdHVtIGNhbiBoYW5kbGUgdGhlc2UgY2FzZXMgKi8K IAkJCQkJaW50MzIJCXJldHR5cG1vZDsKQEAgLTM0MzQsNiArMzQ2MiwxNCBAQCBleGVjX3N0bXRf cmV0dXJuX25leHQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJVHVwbGVEZXNjCXJl Y190dXBkZXNjOwogCQkJCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cG1hcDsKIAorCQkJCQkvKgor CQkJCQkgKiBDaGVjayBpZiB0aGUgcmVjb3JkJ3MgY29tcG9zaXRlIHR5cGUgd2FzIGFsdGVyZWQg c2luY2UKKwkJCQkJICogdGhlIHJlY29yZCB3YXMgcG9wdWxhdGVkLiBJZiBzbywgcmFpc2UgYW4g ZXJyb3IgdG8KKwkJCQkJICogcHJldmVudCBjcmFzaGVzIHdoZW4gc3RvcmluZyB0byB0aGUgdHVw bGVzdG9yZS4KKwkJCQkJICovCisJCQkJCWlmIChyZWMtPnJlY3R5cGVpZCAhPSBSRUNPUkRPSUQg JiYgcmVjLT5lcmggIT0gTlVMTCkKKwkJCQkJCWNoZWNrX3JlY29yZF90eXBlX25vdF9hbHRlcmVk KHJlYyk7CisKIAkJCQkJLyogSWYgcmVjIGlzIG51bGwsIHRyeSB0byBjb252ZXJ0IGl0IHRvIGEg cm93IG9mIG51bGxzICovCiAJCQkJCWlmIChyZWMtPmVyaCA9PSBOVUxMKQogCQkJCQkJaW5zdGFu dGlhdGVfZW1wdHlfcmVjb3JkX3ZhcmlhYmxlKGVzdGF0ZSwgcmVjKTsKQEAgLTU0NTEsNiArNTQ4 NywxNSBAQCBleGVjX2V2YWxfZGF0dW0oUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQl9 CiAJCQkJZWxzZQogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogQ2hlY2sgaWYgdGhlIHJlY29yZCdz IGNvbXBvc2l0ZSB0eXBlIHdhcyBhbHRlcmVkCisJCQkJCSAqIHNpbmNlIHRoZSByZWNvcmQgd2Fz IHBvcHVsYXRlZC4gIFRoaXMgY2F0Y2hlcyBhbGwKKwkJCQkJICogb3V0cHV0IHBhdGhzOiBSRVRV Uk4sIFJBSVNFLCBFWEVDVVRFIFVTSU5HLCBldGMuCisJCQkJCSAqLworCQkJCQlpZiAocmVjLT5y ZWN0eXBlaWQgIT0gUkVDT1JET0lEICYmCisJCQkJCQkhRXhwYW5kZWRSZWNvcmRJc0VtcHR5KHJl Yy0+ZXJoKSkKKwkJCQkJCWNoZWNrX3JlY29yZF90eXBlX25vdF9hbHRlcmVkKHJlYyk7CisKIAkJ CQkJaWYgKEV4cGFuZGVkUmVjb3JkSXNFbXB0eShyZWMtPmVyaCkpCiAJCQkJCXsKIAkJCQkJCS8q IEVtcHR5IHJlY29yZCBpcyBhbHNvIGEgTlVMTCAqLwpAQCAtNzA0Miw2ICs3MDg3LDE0IEBAIGV4 ZWNfbW92ZV9yb3coUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQlpZiAocmVjLT5lcmgp CiAJCQkJCURlbGV0ZUV4cGFuZGVkT2JqZWN0KEV4cGFuZGVkUmVjb3JkR2V0RGF0dW0ocmVjLT5l cmgpKTsKIAkJCQlyZWMtPmVyaCA9IE5VTEw7CisJCQkJLyogQ2xlYXIgY29tcG9zaXRlIHR5cGUg c25hcHNob3QgKi8KKwkJCQlpZiAocmVjLT5jb21wVHlwZU9pZHMpCisJCQkJCXBmcmVlKHJlYy0+ Y29tcFR5cGVPaWRzKTsKKwkJCQlpZiAocmVjLT5jb21wVHlwZVZlcnNpb25zKQorCQkJCQlwZnJl ZShyZWMtPmNvbXBUeXBlVmVyc2lvbnMpOworCQkJCXJlYy0+bkNvbXBUeXBlcyA9IDA7CisJCQkJ cmVjLT5jb21wVHlwZU9pZHMgPSBOVUxMOworCQkJCXJlYy0+Y29tcFR5cGVWZXJzaW9ucyA9IE5V TEw7CiAJCQl9CiAJCQlyZXR1cm47CiAJCX0KQEAgLTc5MjUsNiArNzk3OCw5IEBAIGluc3RhbnRp YXRlX2VtcHR5X3JlY29yZF92YXJpYWJsZShQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBn U1FMX3JlYyAqcmVjKQogCS8qIE9LLCBkbyBpdCAqLwogCXJlYy0+ZXJoID0gbWFrZV9leHBhbmRl ZF9yZWNvcmRfZnJvbV90eXBlaWQocmVjLT5yZWN0eXBlaWQsIC0xLAogCQkJCQkJCQkJCQkJZXN0 YXRlLT5kYXR1bV9jb250ZXh0KTsKKworCS8qIFNuYXBzaG90IGNvbXBvc2l0ZSB0eXBlIHZlcnNp b25zIGZvciBBTFRFUiBUWVBFIGRldGVjdGlvbiAqLworCXNuYXBzaG90X3JlY29yZF9jb21wb3Np dGVfdHlwZXMoZXN0YXRlLCByZWMpOwogfQogCiAvKiAtLS0tLS0tLS0tCkBAIC04OTY3LDYgKzkw MjMsOSBAQCBhc3NpZ25fcmVjb3JkX3ZhcihQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLCBQTHBn U1FMX3JlYyAqcmVjLAogCiAJLyogLi4uIGFuZCBpbnN0YWxsIHRoZSBuZXcgKi8KIAlyZWMtPmVy aCA9IGVyaDsKKworCS8qIFNuYXBzaG90IGNvbXBvc2l0ZSB0eXBlIHZlcnNpb25zIGZvciBBTFRF UiBUWVBFIGRldGVjdGlvbiAqLworCXNuYXBzaG90X3JlY29yZF9jb21wb3NpdGVfdHlwZXMoZXN0 YXRlLCByZWMpOwogfQogCiAvKgpAQCAtOTIxNiwzICs5Mjc1LDIyOCBAQCBmb3JtYXRfcHJlcGFy ZWRwYXJhbXNkYXRhKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAKIAlyZXR1cm4gcGFyYW1z dHIuZGF0YTsKIH0KKworLyoKKyAqIGNoZWNrX3JlY29yZF90eXBlX25vdF9hbHRlcmVkCisgKgor ICogQ2hlY2sgaWYgYW55IGNvbXBvc2l0ZSB0eXBlIHJlYWNoYWJsZSBmcm9tIHRoaXMgcmVjb3Jk J3MgdHlwZSBoYXMgYmVlbgorICogYWx0ZXJlZCBzaW5jZSB0aGUgcmVjb3JkIHdhcyBwb3B1bGF0 ZWQuICBJZiBzbywgcmFpc2UgYW4gZXJyb3IgdG8gcHJldmVudAorICogY3Jhc2hlcyB0aGF0IHdv dWxkIG9jY3VyIHdoZW4gb3V0cHV0dGluZyBkYXRhIHRoYXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhl CisgKiBjdXJyZW50IHR5cGUgZGVmaW5pdGlvbi4KKyAqCisgKiBUaGUgb3V0ZXJtb3N0IHR5cGUg aXMgYWx3YXlzIGNoZWNrZWQgdXNpbmcgZXJfdHVwZGVzY19pZCAod2hpY2ggaXMgc2V0CisgKiB3 aGVuIHRoZSBFeHBhbmRlZFJlY29yZCBpcyBjcmVhdGVkIGFuZCB3b3JrcyByZWdhcmRsZXNzIG9m IGhvdyB0aGUgcmVjb3JkCisgKiB3YXMgcG9wdWxhdGVkLCB3aGV0aGVyIGJ5IHdob2xlIGFzc2ln bm1lbnQsIGZpZWxkIGFzc2lnbm1lbnQsIGV0Yy4pLgorICoKKyAqIE5lc3RlZCBjb21wb3NpdGUg dHlwZXMgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgc25hcHNob3QgdGFrZW4gYXQgcmVjb3JkCisg KiBhc3NpZ25tZW50IHRpbWUsIGlmIGF2YWlsYWJsZS4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNr X3JlY29yZF90eXBlX25vdF9hbHRlcmVkKFBMcGdTUUxfcmVjICpyZWMpCit7CisJVHlwZUNhY2hl RW50cnkgKnR5cGVudHJ5OworCU9pZAkJCWNoZWNrX3R5cGlkOworCWludAkJCWk7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGZvciBhbm9ueW1vdXMgUkVDT1JEIHR5cGUgKi8KKwlpZiAocmVjLT5yZWN0 eXBlaWQgPT0gUkVDT1JET0lEKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEFsd2F5cyBjaGVjayBv dXRlcm1vc3QgdHlwZSB1c2luZyBlcl90dXBkZXNjX2lkLiAgVGhpcyB3b3JrcyBmb3IgYWxsCisJ ICogY29kZSBwYXRocyAod2hvbGUgYXNzaWdubWVudCwgZmllbGQgYXNzaWdubWVudCwgU0VMRUNU IElOVE8sIGV0Yy4pCisJICogYmVjYXVzZSBlcl90dXBkZXNjX2lkIGlzIHNldCB3aGVuIHRoZSBF eHBhbmRlZFJlY29yZCBpcyBjcmVhdGVkLgorCSAqIFJlc29sdmUgZG9tYWluIHR5cGVzIHRvIHRo ZWlyIGJhc2UgY29tcG9zaXRlIHR5cGUgZmlyc3QuCisJICovCisJY2hlY2tfdHlwaWQgPSByZWMt PnJlY3R5cGVpZDsKKwlpZiAoZ2V0X3R5cHR5cGUoY2hlY2tfdHlwaWQpID09IFRZUFRZUEVfRE9N QUlOKQorCQljaGVja190eXBpZCA9IGdldEJhc2VUeXBlKGNoZWNrX3R5cGlkKTsKKworCXR5cGVu dHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUoY2hlY2tfdHlwaWQsIFRZUEVDQUNIRV9UVVBERVNDKTsK KworCWlmIChyZWMtPmVyaC0+ZXJfdHVwZGVzY19pZCAhPSB0eXBlbnRyeS0+dHVwRGVzY19pZGVu dGlmaWVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImNhbm5vdCByZXR1cm4gcmVjb3JkIHZhcmlhYmxlIFwi JXNcIiBhZnRlciBjb21wb3NpdGUgdHlwZSBcIiVzXCIgd2FzIGFsdGVyZWQiLAorCQkJCQkJcmVj LT5yZWZuYW1lLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoY2hlY2tfdHlwaWQpKSkpOworCisJLyoK KwkgKiBJZiB3ZSBoYXZlIGEgc25hcHNob3Qgb2YgbmVzdGVkIGNvbXBvc2l0ZSB0eXBlcyAodGFr ZW4gYXQgd2hvbGUtcmVjb3JkCisJICogYXNzaWdubWVudCB0aW1lKSwgY2hlY2sgdGhvc2UgdG9v LiAgU2tpcCBpbmRleCAwIHNpbmNlIHRoYXQncyB0aGUKKwkgKiBvdXRlcm1vc3QgdHlwZSB3ZSBh bHJlYWR5IGNoZWNrZWQgYWJvdmUuCisJICovCisJZm9yIChpID0gMTsgaSA8IHJlYy0+bkNvbXBU eXBlczsgaSsrKQorCXsKKwkJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZShyZWMtPmNvbXBU eXBlT2lkc1tpXSwgVFlQRUNBQ0hFX1RVUERFU0MpOworCisJCWlmICh0eXBlbnRyeS0+dHVwRGVz Y19pZGVudGlmaWVyICE9IHJlYy0+Y29tcFR5cGVWZXJzaW9uc1tpXSkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJy bXNnKCJjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJpYWJsZSBcIiVzXCIgYWZ0ZXIgY29tcG9zaXRl IHR5cGUgXCIlc1wiIHdhcyBhbHRlcmVkIiwKKwkJCQkJCQlyZWMtPnJlZm5hbWUsCisJCQkJCQkJ Zm9ybWF0X3R5cGVfYmUocmVjLT5jb21wVHlwZU9pZHNbaV0pKSkpOworCX0KK30KKworLyoKKyAq IGNvbGxlY3RfY29tcG9zaXRlX3R5cGVfdmVyc2lvbnMKKyAqCisgKiBSZWN1cnNpdmVseSBjb2xs ZWN0IHR1cERlc2NfaWRlbnRpZmllciB2YWx1ZXMgZm9yIGEgY29tcG9zaXRlIHR5cGUgYW5kCisg KiBhbGwgY29tcG9zaXRlIHR5cGVzIHJlYWNoYWJsZSBmcm9tIGl0cyBhdHRyaWJ1dGVzLiAgU2tp cHMgYW5vbnltb3VzCisgKiBSRUNPUkQgdHlwZXMgYW5kIHR5cGVzIGFscmVhZHkgcmVjb3JkZWQg KHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uKS4KKyAqCisgKiBvaWRzL3ZlcnNpb25zIGFy cmF5cyBhcmUgcmVwYWxsb2MnZCBhcyBuZWVkZWQ7IG4vYWxsb2MgdXBkYXRlZCBpbiBwbGFjZS4K KyAqLworc3RhdGljIHZvaWQKK2NvbGxlY3RfY29tcG9zaXRlX3R5cGVfdmVyc2lvbnMoT2lkIHR5 cGlkLAorCQkJCQkJCQlPaWQgKipvaWRzLCB1aW50NjQgKip2ZXJzaW9ucywKKwkJCQkJCQkJaW50 ICpuLCBpbnQgKmFsbG9jKQoreworCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKKwlUdXBsZURl c2MJdHVwZGVzYzsKKwlpbnQJCQlpOworCisJLyogUmVzb2x2ZSBkb21haW4gdHlwZXMgdG8gdGhl aXIgYmFzZSBjb21wb3NpdGUgdHlwZSAqLworCWlmIChnZXRfdHlwdHlwZSh0eXBpZCkgPT0gVFlQ VFlQRV9ET01BSU4pCisJCXR5cGlkID0gZ2V0QmFzZVR5cGUodHlwaWQpOworCisJLyogU2tpcCBp ZiBhbHJlYWR5IHJlY29yZGVkICovCisJZm9yIChpID0gMDsgaSA8ICpuOyBpKyspCisJeworCQlp ZiAoKCpvaWRzKVtpXSA9PSB0eXBpZCkKKwkJCXJldHVybjsKKwl9CisKKwl0eXBlbnRyeSA9IGxv b2t1cF90eXBlX2NhY2hlKHR5cGlkLCBUWVBFQ0FDSEVfVFVQREVTQyk7CisKKwkvKiBHcm93IGFy cmF5cyBpZiBuZWVkZWQgKi8KKwlpZiAoKm4gPj0gKmFsbG9jKQorCXsKKwkJKmFsbG9jICo9IDI7 CisJCSpvaWRzID0gcmVwYWxsb2MoKm9pZHMsICphbGxvYyAqIHNpemVvZihPaWQpKTsKKwkJKnZl cnNpb25zID0gcmVwYWxsb2MoKnZlcnNpb25zLCAqYWxsb2MgKiBzaXplb2YodWludDY0KSk7CisJ fQorCisJKCpvaWRzKVsqbl0gPSB0eXBpZDsKKwkoKnZlcnNpb25zKVsqbl0gPSB0eXBlbnRyeS0+ dHVwRGVzY19pZGVudGlmaWVyOworCSgqbikrKzsKKworCXR1cGRlc2MgPSB0eXBlbnRyeS0+dHVw RGVzYzsKKwlpZiAodHVwZGVzYyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBSZWN1cnNlIGlu dG8gY29tcG9zaXRlLXR5cGUgYXR0cmlidXRlcyAqLworCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNj LT5uYXR0czsgaSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0 dHIodHVwZGVzYywgaSk7CisJCU9pZAkJCWF0dHJ0eXBpZDsKKwkJY2hhcgkJdHlwdHlwZTsKKwor CQlpZiAoYXR0ci0+YXR0aXNkcm9wcGVkKQorCQkJY29udGludWU7CisKKwkJYXR0cnR5cGlkID0g YXR0ci0+YXR0dHlwaWQ7CisJCWlmIChhdHRydHlwaWQgPT0gUkVDT1JET0lEKQorCQkJY29udGlu dWU7CisKKwkJdHlwdHlwZSA9IGdldF90eXB0eXBlKGF0dHJ0eXBpZCk7CisKKwkJLyogUmVzb2x2 ZSBkb21haW4gdHlwZXMgdG8gdGhlaXIgYmFzZSB0eXBlICovCisJCWlmICh0eXB0eXBlID09IFRZ UFRZUEVfRE9NQUlOKQorCQl7CisJCQlhdHRydHlwaWQgPSBnZXRCYXNlVHlwZShhdHRydHlwaWQp OworCQkJdHlwdHlwZSA9IGdldF90eXB0eXBlKGF0dHJ0eXBpZCk7CisJCX0KKworCQlpZiAodHlw dHlwZSA9PSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJCWNvbGxlY3RfY29tcG9zaXRlX3R5cGVfdmVy c2lvbnMoYXR0cnR5cGlkLAorCQkJCQkJCQkJCSAgIG9pZHMsIHZlcnNpb25zLCBuLCBhbGxvYyk7 CisJfQorfQorCisvKgorICogc25hcHNob3RfcmVjb3JkX2NvbXBvc2l0ZV90eXBlcworICoKKyAq IFRha2UgYSBzbmFwc2hvdCBvZiB0dXBEZXNjX2lkZW50aWZpZXIgdmFsdWVzIGZvciBhbGwgY29t cG9zaXRlIHR5cGVzCisgKiByZWFjaGFibGUgZnJvbSB0aGUgcmVjb3JkJ3MgZGVjbGFyZWQgdHlw ZS4gIENhbGxlZCB3aGVuIGEgcmVjb3JkIHZhcmlhYmxlCisgKiBpcyBhc3NpZ25lZCBhIG5ldyB2 YWx1ZSwgc28gdGhhdCBjaGVja19yZWNvcmRfdHlwZV9ub3RfYWx0ZXJlZCgpIGNhbgorICogZGV0 ZWN0IG1pZC10cmFuc2FjdGlvbiBBTFRFUiBUWVBFIGF0IFJFVFVSTiB0aW1lLgorICovCitzdGF0 aWMgdm9pZAorc25hcHNob3RfcmVjb3JkX2NvbXBvc2l0ZV90eXBlcyhQTHBnU1FMX2V4ZWNzdGF0 ZSAqZXN0YXRlLAorCQkJCQkJCQlQTHBnU1FMX3JlYyAqcmVjKQoreworCU1lbW9yeUNvbnRleHQg b2xkY3h0OworCWludAkJCWFsbG9jID0gODsKKwlpbnQJCQluID0gMDsKKwlPaWQJCSAgICpvaWRz OworCXVpbnQ2NAkgICAqdmVyc2lvbnM7CisKKwkvKiBOb3RoaW5nIHRvIGRvIGZvciBhbm9ueW1v dXMgUkVDT1JEIHR5cGUgKi8KKwlpZiAocmVjLT5yZWN0eXBlaWQgPT0gUkVDT1JET0lEKQorCXsK KwkJcmVjLT5uQ29tcFR5cGVzID0gMDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogRmFzdCBw YXRoOiBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBzbmFwc2hvdCBmb3IgdGhpcyB0eXBlIGFuZCB0aGUK KwkgKiBvdXRlcm1vc3QgdHlwZSdzIGlkZW50aWZpZXIgaGFzbid0IGNoYW5nZWQsIHRoZSBzbmFw c2hvdCBpcyBzdGlsbAorCSAqIHZhbGlkLiAgVGhpcyBhdm9pZHMgZXhwZW5zaXZlIHR5cGUgdHJl ZSB3YWxrcyBhbmQgc3lzY2FjaGUgbG9va3VwcworCSAqIHdoZW4gYSByZWNvcmQgaXMgYXNzaWdu ZWQgcmVwZWF0ZWRseSBpbiBhIGxvb3AuCisJICoKKwkgKiBJZiB0aGUgaWRlbnRpZmllciBIQVMg Y2hhbmdlZCAoQUxURVIgVFlQRSBoYXBwZW5lZCksIGZhbGwgdGhyb3VnaAorCSAqIHRvIHJlLXNu YXBzaG90IHdpdGggdGhlIG5ldyBpZGVudGlmaWVycy4KKwkgKgorCSAqIE5vdGU6IGNvbXBUeXBl T2lkc1swXSBzdG9yZXMgdGhlIHJlc29sdmVkIGJhc2UgY29tcG9zaXRlIHR5cGUgT0lECisJICog KGRvbWFpbnMgYXJlIHJlc29sdmVkIGJ5IGNvbGxlY3RfY29tcG9zaXRlX3R5cGVfdmVyc2lvbnMp LCBzbyB3ZQorCSAqIG11c3QgcmVzb2x2ZSByZWMtPnJlY3R5cGVpZCBiZWZvcmUgY29tcGFyaW5n LgorCSAqLworCWlmIChyZWMtPm5Db21wVHlwZXMgPiAwKQorCXsKKwkJT2lkCQkJcm9vdF90eXBp ZCA9IHJlYy0+cmVjdHlwZWlkOworCisJCWlmIChnZXRfdHlwdHlwZShyb290X3R5cGlkKSA9PSBU WVBUWVBFX0RPTUFJTikKKwkJCXJvb3RfdHlwaWQgPSBnZXRCYXNlVHlwZShyb290X3R5cGlkKTsK KworCQlpZiAocmVjLT5jb21wVHlwZU9pZHNbMF0gPT0gcm9vdF90eXBpZCkKKwkJeworCQkJVHlw ZUNhY2hlRW50cnkgKnR5cGVudHJ5OworCisJCQl0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hl KHJvb3RfdHlwaWQsIFRZUEVDQUNIRV9UVVBERVNDKTsKKwkJCWlmICh0eXBlbnRyeS0+dHVwRGVz Y19pZGVudGlmaWVyID09IHJlYy0+Y29tcFR5cGVWZXJzaW9uc1swXSkKKwkJCQlyZXR1cm47CQkv KiB0eXBlIHVuY2hhbmdlZCwgc25hcHNob3Qgc3RpbGwgdmFsaWQgKi8KKwkJfQorCX0KKworCW9s ZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmRhdHVtX2NvbnRleHQpOworCW9p ZHMgPSBwYWxsb2MoYWxsb2MgKiBzaXplb2YoT2lkKSk7CisJdmVyc2lvbnMgPSBwYWxsb2MoYWxs b2MgKiBzaXplb2YodWludDY0KSk7CisKKwljb2xsZWN0X2NvbXBvc2l0ZV90eXBlX3ZlcnNpb25z KHJlYy0+cmVjdHlwZWlkLAorCQkJCQkJCQkJJm9pZHMsICZ2ZXJzaW9ucywgJm4sICZhbGxvYyk7 CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKworCWlmIChuID4gMCkKKwl7CisJ CS8qIEZyZWUgcHJldmlvdXMgc25hcHNob3QgaWYgYW55ICovCisJCWlmIChyZWMtPmNvbXBUeXBl T2lkcykKKwkJCXBmcmVlKHJlYy0+Y29tcFR5cGVPaWRzKTsKKwkJaWYgKHJlYy0+Y29tcFR5cGVW ZXJzaW9ucykKKwkJCXBmcmVlKHJlYy0+Y29tcFR5cGVWZXJzaW9ucyk7CisKKwkJcmVjLT5uQ29t cFR5cGVzID0gbjsKKwkJcmVjLT5jb21wVHlwZU9pZHMgPSBvaWRzOworCQlyZWMtPmNvbXBUeXBl VmVyc2lvbnMgPSB2ZXJzaW9uczsKKwl9CisJZWxzZQorCXsKKwkJcGZyZWUob2lkcyk7CisJCXBm cmVlKHZlcnNpb25zKTsKKwkJcmVjLT5uQ29tcFR5cGVzID0gMDsKKwkJcmVjLT5jb21wVHlwZU9p ZHMgPSBOVUxMOworCQlyZWMtPmNvbXBUeXBlVmVyc2lvbnMgPSBOVUxMOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmggYi9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxwZ3NxbC5oCmluZGV4IGFkZGIxNGE5OTU5Li5jZjlhNjU3NjEzZCAxMDA2NDQKLS0tIGEvc3Jj L3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3Nx bC5oCkBAIC00MzUsNiArNDM1LDE1IEBAIHR5cGVkZWYgc3RydWN0IFBMcGdTUUxfcmVjCiAKIAkv KiBXZSBhbHdheXMgc3RvcmUgcmVjb3JkIHZhcmlhYmxlcyBhcyAiZXhwYW5kZWQiIHJlY29yZHMg Ki8KIAlFeHBhbmRlZFJlY29yZEhlYWRlciAqZXJoOworCisJLyoKKwkgKiBDb21wb3NpdGUgdHlw ZSB2ZXJzaW9uIHNuYXBzaG90IGZvciBBTFRFUiBUWVBFIGRldGVjdGlvbi4KKwkgKiBQb3B1bGF0 ZWQgd2hlbiB0aGUgcmVjb3JkIGlzIGFzc2lnbmVkOyBjaGVja2VkIGF0IFJFVFVSTiB0aW1lLgor CSAqIEluY2x1ZGVzIHRoZSBvdXRlcm1vc3QgdHlwZSBhbmQgYWxsIG5lc3RlZCBjb21wb3NpdGUg dHlwZXMuCisJICovCisJaW50CQkJbkNvbXBUeXBlczsKKwlPaWQJCSAgICpjb21wVHlwZU9pZHM7 CisJdWludDY0CSAgICpjb21wVHlwZVZlcnNpb25zOwogfSBQTHBnU1FMX3JlYzsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9yZWNvcmQuc3FsIGIvc3Jj L3BsL3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX3JlY29yZC5zcWwKaW5kZXggNGZiZWQzOGI4YmIu LmY0MDM1ODgxYzg2IDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxf cmVjb3JkLnNxbAorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvc3FsL3BscGdzcWxfcmVjb3JkLnNx bApAQCAtNTc3LDMgKzU3NywxMDcgQEAgaW5zZXJ0IGludG8gdHdvX2ludDhzX3RhYiB2YWx1ZXMg KGNvbXByZXN1bHQoNDIpKTsKIC0tIHJlY29ubmVjdCBzbyB3ZSBsb3NlIGFueSBsb2NhbCBrbm93 bGVkZ2Ugb2YgYW5vbnltb3VzIHJlY29yZCB0eXBlcwogXGMgLQogdGFibGUgdHdvX2ludDhzX3Rh YjsKKworLS0gVGVzdHMgZm9yIGJ1ZyAjMTkzODI6IHNlcnZlciBjcmFzaCB3aGVuIEFMVEVSIFRZ UEUgaXMgdXNlZCBtaWQtdHJhbnNhY3Rpb24KKy0tIGluIFBML3BnU1FMLiBSZWNvcmQgdmFyaWFi bGVzIHBvcHVsYXRlZCBiZWZvcmUgQUxURVIgVFlQRSBtdXN0IG5vdCBiZQorLS0gcmV0dXJuZWQs IGFzIHRoZSBzdG9yZWQgZGF0YSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3VycmVudCB0eXBlIGRl ZmluaXRpb24uCisKKy0tIENhc2UgMTogRGlyZWN0IGNvbXBvc2l0ZSB0eXBlIGNoYW5nZSAoSU5U IC0+IFRFWFQpCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28gYXMgKGEgaW50LCBiIGludCk7Citj cmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9kaXJlY3QoKSByZXR1cm5zIHJlY29yZCBhcyAk JAorZGVjbGFyZSByIGJ1ZzE5MzgyX2ZvbyA6PSByb3coMTIzLCBwb3dlcigyLCAzMCkpOworYmVn aW4KKyAgICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbyBhbHRlciBhdHRyaWJ1dGUgYiB0eXBlIHRl eHQ7CisgICAgcmV0dXJuIHI7CitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1 ZzE5MzgyX3Rlc3RfZGlyZWN0KCk7Citkcm9wIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfZGlyZWN0 KCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vIGNhc2NhZGU7CisKKy0tIENhc2UgMjogTmVzdGVk IGNvbXBvc2l0ZSB0eXBlIGNoYW5nZQorY3JlYXRlIHR5cGUgYnVnMTkzODJfaW5uZXIgYXMgKHgg aW50LCB5IGludCk7CitjcmVhdGUgdHlwZSBidWcxOTM4Ml9vdXRlciBhcyAoYSBpbnQsIGIgYnVn MTkzODJfaW5uZXIpOworY3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfbmVzdGVkKCkgcmV0 dXJucyByZWNvcmQgYXMgJCQKK2RlY2xhcmUgciBidWcxOTM4Ml9vdXRlcjsKK2JlZ2luCisgICAg ciA6PSByb3coMSwgcm93KDEwLCBwb3dlcigyLCAzMCk6OmludDQpOjpidWcxOTM4Ml9pbm5lcik6 OmJ1ZzE5MzgyX291dGVyOworICAgIGFsdGVyIHR5cGUgYnVnMTkzODJfaW5uZXIgYWx0ZXIgYXR0 cmlidXRlIHkgdHlwZSB0ZXh0OworICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxw Z3NxbDsKK3NlbGVjdCBidWcxOTM4Ml90ZXN0X25lc3RlZCgpOworZHJvcCBmdW5jdGlvbiBidWcx OTM4Ml90ZXN0X25lc3RlZCgpOworZHJvcCB0eXBlIGJ1ZzE5MzgyX291dGVyIGNhc2NhZGU7Citk cm9wIHR5cGUgYnVnMTkzODJfaW5uZXIgY2FzY2FkZTsKKworLS0gQ2FzZSAzOiBPVVQgcGFyYW1l dGVyCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28xIGFzIChhIGludCwgYiBpbnQpOworY3JlYXRl IGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfb3V0KG91dCByMSBidWcxOTM4Ml9mb28xKSBhcyAkJAor YmVnaW4KKyAgICByMSA6PSByb3coMSwgMik7CisgICAgYWx0ZXIgdHlwZSBidWcxOTM4Ml9mb28x IGFsdGVyIGF0dHJpYnV0ZSBiIHR5cGUgdGV4dDsKKyAgICByZXR1cm47CitlbmQ7CiskJCBsYW5n dWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1ZzE5MzgyX3Rlc3Rfb3V0KCk7Citkcm9wIGZ1bmN0aW9u IGJ1ZzE5MzgyX3Rlc3Rfb3V0KCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vMSBjYXNjYWRlOwor CistLSBDYXNlIDQ6IE5vIEFMVEVSIFRZUEUgKGJhc2VsaW5lIOKAlCBtdXN0IG5vdCBlcnJvcikK K2NyZWF0ZSB0eXBlIGJ1ZzE5MzgyX2ZvbzIgYXMgKGEgaW50LCBiIGludCk7CitjcmVhdGUgZnVu Y3Rpb24gYnVnMTkzODJfdGVzdF9iYXNlbGluZSgpIHJldHVybnMgYnVnMTkzODJfZm9vMiBhcyAk JAorZGVjbGFyZSByIGJ1ZzE5MzgyX2ZvbzIgOj0gcm93KDEsIDIpOworYmVnaW4KKyAgICByZXR1 cm4gcjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitzZWxlY3QgYnVnMTkzODJfdGVzdF9i YXNlbGluZSgpOworZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X2Jhc2VsaW5lKCk7Citkcm9w IHR5cGUgYnVnMTkzODJfZm9vMjsKKworLS0gQ2FzZSA1OiBGaWVsZC1ieS1maWVsZCBhc3NpZ25t ZW50IChkb3Qgbm90YXRpb24pCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28zIGFzIChhIGludCwg YiBpbnQpOworY3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfZmllbGRfYXNzaWduKCkgcmV0 dXJucyByZWNvcmQgYXMgJCQKK2RlY2xhcmUgciBidWcxOTM4Ml9mb28zOworYmVnaW4KKyAgICBy LmEgOj0gMTIzOworICAgIHIuYiA6PSBwb3dlcigyLCAzMCk6OmludDQ7CisgICAgYWx0ZXIgdHlw ZSBidWcxOTM4Ml9mb28zIGFsdGVyIGF0dHJpYnV0ZSBiIHR5cGUgdGV4dDsKKyAgICByZXR1cm4g cjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitzZWxlY3QgYnVnMTkzODJfdGVzdF9maWVs ZF9hc3NpZ24oKTsKK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9maWVsZF9hc3NpZ24oKTsK K2Ryb3AgdHlwZSBidWcxOTM4Ml9mb28zIGNhc2NhZGU7CisKKy0tIENhc2UgNjogU0VMRUNUIElO VE8gaW5kaXZpZHVhbCBmaWVsZHMKK2NyZWF0ZSB0eXBlIGJ1ZzE5MzgyX2ZvbzQgYXMgKGEgaW50 LCBiIGludCk7CitjcmVhdGUgdGFibGUgYnVnMTkzODJfdGJsIChhIGludCwgYiBpbnQpOworaW5z ZXJ0IGludG8gYnVnMTkzODJfdGJsIHZhbHVlcyAoMTIzLCBwb3dlcigyLCAzMCk6OmludDQpOwor Y3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfc2VsZWN0X2ludG9fZmllbGQoKSByZXR1cm5z IHJlY29yZCBhcyAkJAorZGVjbGFyZSByIGJ1ZzE5MzgyX2ZvbzQ7CitiZWdpbgorICAgIHNlbGVj dCBhLCBiIGludG8gci5hLCByLmIgZnJvbSBidWcxOTM4Ml90Ymw7CisgICAgYWx0ZXIgdHlwZSBi dWcxOTM4Ml9mb280IGFsdGVyIGF0dHJpYnV0ZSBiIHR5cGUgdGV4dDsKKyAgICByZXR1cm4gcjsK K2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitzZWxlY3QgYnVnMTkzODJfdGVzdF9zZWxlY3Rf aW50b19maWVsZCgpOworZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X3NlbGVjdF9pbnRvX2Zp ZWxkKCk7Citkcm9wIHRhYmxlIGJ1ZzE5MzgyX3RibDsKK2Ryb3AgdHlwZSBidWcxOTM4Ml9mb280 IGNhc2NhZGU7CisKKy0tIENhc2UgNzogUkFJU0UgTk9USUNFIHdpdGggcmVjb3JkIHZhcmlhYmxl IChleGVjX2V2YWxfZGF0dW0gcGF0aCkKK2NyZWF0ZSB0eXBlIGJ1ZzE5MzgyX2ZvbzUgYXMgKGEg aW50LCBiIGludCk7CitjcmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9ldmFsX2RhdHVtKCkg cmV0dXJucyB2b2lkIGFzICQkCitkZWNsYXJlIHIgYnVnMTkzODJfZm9vNTsKK2JlZ2luCisgICAg ci5iIDo9IHBvd2VyKDIsIDMwKTo6aW50NDsKKyAgICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbzUg YWx0ZXIgYXR0cmlidXRlIGIgdHlwZSB0ZXh0OworICAgIHJhaXNlIG5vdGljZSAnciA9ICUnLCBy OworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBidWcxOTM4Ml90ZXN0X2V2YWxf ZGF0dW0oKTsKK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9ldmFsX2RhdHVtKCk7Citkcm9w IHR5cGUgYnVnMTkzODJfZm9vNSBjYXNjYWRlOwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000e021ae065018ed68--