From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id 83D683858035; Wed, 19 Jul 2023 08:26:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 83D683858035 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="6.01,216,1684828800"; d="diff'?scan'208";a="12194778" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 19 Jul 2023 00:26:18 -0800 IronPort-SDR: XciHq8edpObrW6pOWt4zaf+uG8gApmpRdnpAOUrhsT5o99WTw9jthMb6wmkTHFVBc86cOnYKi6 D2MiZZq9i02cUDBgobSlrwfDmVEoengwLzia1TasakP6SpgHXVMB++vIwjGSmC/fwB6TZcLOca tO2Z0BO7MV/kEOAJqUYArymTPH4Na5yRPwmB1ouFljvrOxo/v0UDiEt6rfkFvIRogCpU9rh5ta +1WH2davoEQYaUMPbZFXhF0mqg2wjYBkPyDqSPIO6bHVGtld65X1NYZo4CexWX81NvsT4BPuY4 yjg= Content-Type: multipart/mixed; boundary="------------n8rZTesrUp4k6SfBXQ0zTm0W" Message-ID: Date: Wed, 19 Jul 2023 10:26:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: [committed] - Re: [patch] OpenMP/Fortran: Non-rectangular loops with constant steps other than 1 or -1 [PR107424] Content-Language: en-US From: Tobias Burnus To: gcc-patches , fortran , Jakub Jelinek References: In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-13.mgc.mentorg.com (139.181.222.13) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,SCC_10_SHORT_WORD_LINES,SCC_20_SHORT_WORD_LINES,SCC_35_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------n8rZTesrUp4k6SfBXQ0zTm0W Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable Now committed as Rev. r14-2634-g85da0b40538fb0 Changes: * I missed to updated another 'sorry' (msg wording change) - now fixed; I also added it to the sorry-testcase file non-rectangular-loop-5.f90. * I decided to retire the PR as several issues have been fixed and the original title did not fit any more. The remaining issue is now tracked in PR110735 (i.e. handling step !=3D const, both the generic and possibly a simpler special case). * I added a link to the PR to libgomp.texi such that one can find out what is only partially supported for Fortran. Thanks, Tobias PS: Otherwise, the following still applies: On 18.07.23 14:11, Tobias Burnus wrote: > Comments regarding the validity of the Fortran assumptions are welcome! > > This patch now uses a 'simple' loop for OpenMP loops with > a constant loop-step size. Before, it only did so for step =3D =C2=B11. > (Otherwise, a count variable is used from which the original > loop index variable is calculated from.) > > For details, see the attached patch or > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D107424#c12 > (comment 12 + 14 plus the email linked in comment 12). > > Comments? Remarks? If there are none, I will relatively soonish > commit the attached patch to mainline, only. ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------n8rZTesrUp4k6SfBXQ0zTm0W Content-Type: text/x-patch; charset="UTF-8"; name="committed.diff" Content-Disposition: attachment; filename="committed.diff" Content-Transfer-Encoding: base64 Y29tbWl0IDg1ZGEwYjQwNTM4ZmIwZDE3ZDg5ZGUxZTc5MDU5ODQ2NjhlM2RmZWYKQXV0aG9y OiBUb2JpYXMgQnVybnVzIDx0b2JpYXNAY29kZXNvdXJjZXJ5LmNvbT4KRGF0ZTogICBXZWQg SnVsIDE5IDEwOjE4OjQ5IDIwMjMgKzAyMDAKCiAgICBPcGVuTVAvRm9ydHJhbjogTm9uLXJl Y3Rhbmd1bGFyIGxvb3BzIHdpdGggY29uc3RhbnQgc3RlcHMgb3RoZXIgdGhhbiAxIG9yIC0x IFtQUjEwNzQyNF0KICAgIAogICAgQmVmb3JlIHRoaXMgY29tbWl0LCBnZm9ydHJhbiBwcm9k dWNlZCB3aXRoIE9wZW5NUCBmb3IgJ2RvIGkgPSAxLDEwLDInCiAgICB0aGUgY29kZQogICAg ICBmb3IgKGNvdW50LjAgPSAwOyBjb3VudC4wIDwgNTsgY291bnQuMCA9IGNvdW50LjAgKyAx KQogICAgICAgIGkgPSBjb3VudC4wICogMiArIDE7CiAgICAKICAgIFdoaWxlIHN1Y2ggYW4g aW5uZXIgbG9vcCBjYW4gYmUgY29sbGFwc2VkLCBhIG5vbi1yZWN0YW5ndWxhciBjb3VsZCBu b3QuCiAgICBXaXRoIHRoaXMgY29tbWl0IGFuZCBmb3IgYWxsIGNvbnN0YW50IGxvb3Agc3Rl cHMsIGEgc2ltcGxlIGxvb3Agc3VjaAogICAgYXMgJ2ZvciAoaSA9IDE7IGkgPD0gMTA7IGkg PSBpICsgMiknIGlzIGNyZWF0ZWQuIChCZWZvcmUgb25seSBmb3IgdGhlCiAgICBjb25zdGFu dCBzdGVwcyBvZiAxIGFuZCAtMS4pCiAgICAKICAgIFRoZSBjb25zdGFudCBzdGVwIHBlcm1p dHMgdG8ga25vdyB0aGUgZGlyZWN0aW9uIChpbmNyZWFzaW5nL2RlY3JlYXNpbmcpCiAgICB0 aGF0IGlzIHJlcXVpcmVkIGZvciB0aGUgbG9vcCBjb25kaXRpb24uCiAgICAKICAgIFRoZSBu ZXcgY29kZSBpcyBvbmx5IHZhbGlkIGlmIG9uZSBhc3N1bWVzIG5vIG92ZXJmbG93IG9mIHRo ZSBsb29wIHZhcmlhYmxlLgogICAgSG93ZXZlciwgdGhlIEZvcnRyYW4gc3RhbmRhcmQgY2Fu IGJlIHJlYWQgdGhhdCB0aGlzIG11c3QgYmUgZW5zdXJlZCBieQogICAgdGhlIHVzZXIuIE5h bWVseSwgdGhlIEZvcnRyYW4gc3RhbmRhcmQgcmVxdWlyZXMgKEYyMDIzLCAxMC4xLjUuMi40 KToKICAgICJUaGUgZXhlY3V0aW9uIG9mIGFueSBudW1lcmljIG9wZXJhdGlvbiB3aG9zZSBy ZXN1bHQgaXMgbm90IGRlZmluZWQgYnkKICAgIHRoZSBhcml0aG1ldGljIHVzZWQgYnkgdGhl IHByb2Nlc3NvciBpcyBwcm9oaWJpdGVkLiIKICAgIAogICAgQW5kLCBmb3IgRE8gbG9vcHMs IEYyMDIzJ3MgIjExLjEuNy40LjMgVGhlIGV4ZWN1dGlvbiBjeWNsZSIgaGFzIHRoZQogICAg Zm9sbG93aW5nOiBUaGUgbnVtYmVyIG9mIGxvb3AgaXRlcmF0aW9ucyBoYW5kbGVkIGJ5IGFu IGl0ZXJhdGlvbiBjb3VudCwKICAgIHdoaWNoIHdvdWxkIHBlcm1pdCBjb2RlIGxpa2UgJ2Rv IGkgPSBodWdlKGkpLTUsIGh1Z2UoaSksNCcuIEhvd2V2ZXIsCiAgICBpbiBzdGVwICgzKSwg dGhpcyBjb3VudCBpcyBub3Qgb25seSBkZWNyZW1lbnRlZCBieSBvbmUgYnV0IGFsc286CiAg ICAgICIuLi4gVGhlIERPIHZhcmlhYmxlLCBpZiBhbnksIGlzIGluY3JlbWVudGVkIGJ5IHRo ZSB2YWx1ZSBvZiB0aGUKICAgICAgaW5jcmVtZW50YXRpb24gcGFyYW1ldGVyIG0zLiIKICAg IEFuZCBmb3IgdGhlIGV4YW1wbGUgYWJvdmUsICdpJyB3b3VsZCBiZSAnaHVnZShpKSszJyBp biB0aGUgbGFzdAogICAgZXhlY3V0aW9uIGN5Y2xlLCB3aGljaCBleGNlZWRzIHRoZSBsYXJn ZXN0IG1vZGVsIG51bWJlciBhbmQgc2hvdWxkCiAgICByZW5kZXIgdGhlIGV4YW1wbGUgYXMg aW52YWxpZC4KICAgIAogICAgICAgICAgICBQUiBmb3J0cmFuLzEwNzQyNAogICAgCiAgICBn Y2MvZm9ydHJhbi9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAgICAgKiB0cmFucy1vcGVubXAu Y2MgKGdmY19ub25yZWN0X2xvb3BfZXhwcik6IEFjY2VwdCBhbGwKICAgICAgICAgICAgY29u c3RhbnQgbG9vcCBzdGVwcy4KICAgICAgICAgICAgKGdmY190cmFuc19vbXBfZG8pOiBMaWtl d2lzZTsgdXNlIHNpZ24gdG8gZGV0ZXJtaW5lCiAgICAgICAgICAgIGxvb3AgZGlyZWN0aW9u LgogICAgCiAgICBsaWJnb21wL0NoYW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIGxpYmdv bXAudGV4aSAoSW1wbC4gU3RhdHVzIDUuMCk6IEFkZCBsaW5rIHRvIG5ldyBQUjExMDczNS4K ICAgICAgICAgICAgKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL25vbi1yZWN0YW5ndWxh ci1sb29wLTEuZjkwOiBFbmFibGUKICAgICAgICAgICAgY29tbWVudGVkIHRlc3RzLgogICAg ICAgICAgICAqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vbm9uLXJlY3Rhbmd1bGFyLWxv b3AtMWEuZjkwOiBSZW1vdmUKICAgICAgICAgICAgdGVzdCBmaWxlOyB0ZXN0cyBhcmUgaW4g bm9uLXJlY3Rhbmd1bGFyLWxvb3AtMS5mOTAuCiAgICAgICAgICAgICogdGVzdHN1aXRlL2xp YmdvbXAuZm9ydHJhbi9ub24tcmVjdGFuZ3VsYXItbG9vcC01LmY5MDogQ2hhbmdlCiAgICAg ICAgICAgIHRlc3RjYXNlIHRvIHVzZSBhIG5vbi1jb25zdGFudCBzdGVwIHRvIHJldGFpbiB0 aGUgJ3NvcnJ5JyB0ZXN0LgogICAgICAgICAgICAqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRy YW4vbm9uLXJlY3Rhbmd1bGFyLWxvb3AtNi5mOTA6IE5ldyB0ZXN0LgogICAgCiAgICBnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoKICAgIAogICAgICAgICAgICAqIGdmb3J0cmFuLmRnL2dv bXAvbGluZWFyLTIuZjkwOiBVcGRhdGUgZHVtcCB0byByZW1vdmUKICAgICAgICAgICAgdGhl IGFkZGl0aW9uYWwgY291bnQgdmFyaWFibGUuCi0tLQogZ2NjL2ZvcnRyYW4vdHJhbnMtb3Bl bm1wLmNjICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTggKy0KIGdjYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5mOTAgICAgICAgIHwgICA0ICstCiBsaWJnb21w L2xpYmdvbXAudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQog Li4uL2xpYmdvbXAuZm9ydHJhbi9ub24tcmVjdGFuZ3VsYXItbG9vcC0xLmY5MCAgICAgfCA1 MzcgKysrKysrKysrKy0tLS0tLS0tLS0tCiAuLi4vbGliZ29tcC5mb3J0cmFuL25vbi1yZWN0 YW5ndWxhci1sb29wLTFhLmY5MCAgICB8IDM3NCAtLS0tLS0tLS0tLS0tLQogLi4uL2xpYmdv bXAuZm9ydHJhbi9ub24tcmVjdGFuZ3VsYXItbG9vcC01LmY5MCAgICAgfCAgMjIgKy0KIC4u Li9saWJnb21wLmZvcnRyYW4vbm9uLXJlY3Rhbmd1bGFyLWxvb3AtNi5mOTAgICAgIHwgMTk2 ICsrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDQ5NCBpbnNlcnRpb25zKCspLCA2NjEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjIGIv Z2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCmluZGV4IGM4OGVlM2M3NjU2Li5jZjc0MWNl YmY5MSAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtb3Blbm1wLmNjCisrKyBiL2dj Yy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYwpAQCAtNTM3NCwxMCArNTM3NCwxMCBAQCBnZmNf bm9ucmVjdF9sb29wX2V4cHIgKHN0bXRibG9ja190ICpwYmxvY2ssIGdmY19zZSAqc2VwLCBp bnQgbG9vcF9uLAogCiAgIGlmICghc2ltcGxlKQogICAgIHsKLSAgICAgIC8qIEZJWE1FOiBI YW5kbGUgbm9uLXVuaXQgaXRlciBzdGVwcywgY2YuIFBSIGZvcnRyYW4vMTA3NDI0LiAgKi8K KyAgICAgIC8qIEZJWE1FOiBIYW5kbGUgbm9uLWNvbnN0IGl0ZXIgc3RlcHMsIGNmLiBQUiBm b3J0cmFuLzExMDczNS4gICovCiAgICAgICBzb3JyeV9hdCAoZ2ZjX2dldF9sb2NhdGlvbiAo JmN1cnJfbG9vcF92YXItPndoZXJlKSwKLQkJIm5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qg d2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQgMSAiCi0JCSJvciAtMSBmb3IgJXFzIiwg Y3Vycl9sb29wX3Zhci0+c3ltdHJlZS0+bi5zeW0tPm5hbWUpOworCQkibm9uLXJlY3Rhbmd1 bGFyIGxvb3AgbmVzdCB3aXRoIG5vbi1jb25zdGFudCBzdGVwIGZvciAlcXMiLAorCQljdXJy X2xvb3BfdmFyLT5zeW10cmVlLT5uLnN5bS0+bmFtZSk7CiAgICAgICByZXR1cm4gZmFsc2U7 CiAgICAgfQogCkBAIC01Mzk0LDEwICs1Mzk0LDEwIEBAIGdmY19ub25yZWN0X2xvb3BfZXhw ciAoc3RtdGJsb2NrX3QgKnBibG9jaywgZ2ZjX3NlICpzZXAsIGludCBsb29wX24sCiAJICB9 CiAJZWxzZQogCSAgewotCSAgICAvKiBGSVhNRTogSGFuZGxlIG5vbi11bml0IGl0ZXIgc3Rl cHMsIGNmLiBQUiBmb3J0cmFuLzEwNzQyNC4gICovCisJICAgIC8qIEZJWE1FOiBIYW5kbGUg bm9uLWNvbnN0IGl0ZXIgc3RlcHMsIGNmLiBQUiBmb3J0cmFuLzExMDczNS4gICovCiAJICAg IHNvcnJ5X2F0IChnZmNfZ2V0X2xvY2F0aW9uICgmY29kZS0+bG9jKSwKLQkJICAgICAgIm5v bi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQg IgotCQkgICAgICAiMSBvciAtMSBmb3IgJXFzIiwgdmFyLT5uYW1lKTsKKwkJICAgICAgIm5v bi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBub24tY29uc3RhbnQgc3RlcCAiCisJCSAg ICAgICJmb3IgJXFzIiwgdmFyLT5uYW1lKTsKIAkgICAgaW5mb3JtIChnZmNfZ2V0X2xvY2F0 aW9uICgmZXhwci0+d2hlcmUpLCAiVXNlZCBoZXJlIik7CiAJICAgIHJldHVybiBmYWxzZTsK IAkgIH0KQEAgLTU1NzgsMTAgKzU1NzgsOCBAQCBnZmNfdHJhbnNfb21wX2RvIChnZmNfY29k ZSAqY29kZSwgZ2ZjX2V4ZWNfb3Agb3AsIHN0bXRibG9ja190ICpwYmxvY2ssCiAgICAgICBn ZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrIChwYmxvY2ssICZzZS5wcmUpOwogICAgICAgc3RlcCA9 IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsIHBibG9jayk7CiAKLSAgICAgIGlmIChpbnRl Z2VyX29uZXAgKHN0ZXApKQotCXNpbXBsZSA9IDE7Ci0gICAgICBlbHNlIGlmICh0cmVlX2lu dF9jc3RfZXF1YWwgKHN0ZXAsIGludGVnZXJfbWludXNfb25lX25vZGUpKQotCXNpbXBsZSA9 IC0xOworICAgICAgaWYgKFRSRUVfQ09ERSAoc3RlcCkgPT0gSU5URUdFUl9DU1QpCisJc2lt cGxlID0gdHJlZV9pbnRfY3N0X3NnbiAoc3RlcCk7CiAKICAgICAgIGdmY19pbml0X3NlICgm c2UsIE5VTEwpOwogICAgICAgaWYgKCFjbGF1c2VzLT5ub25fcmVjdGFuZ3VsYXIKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5mOTAgYi9n Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTIuZjkwCmluZGV4IDA1ZjAw N2ZkNWMyLi44OGRmOTZlOWI4ZiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJh bi5kZy9nb21wL2xpbmVhci0yLmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvbGluZWFyLTIuZjkwCkBAIC0xMDUsOCArMTA1LDggQEAgZW5kIG1vZHVsZQogISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIGZvciBub3dh aXQiIDYgIm9yaWdpbmFsIiB9IH0KICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzICIjcHJhZ21hIG9tcCBmb3IgbGluZWFyXFwoeDpEXFwuXFswLTlcXStcXCkgbm93YWl0 IiAxICJvcmlnaW5hbCIgfSB9CiAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiI3ByYWdtYSBvbXAgZm9yIGxpbmVhclxcKHg6dmFsLHN0ZXBcXChEXFwuXFswLTlcXStc XClcXCkgbm93YWl0IiAxICJvcmlnaW5hbCIgfSB9Ci0hIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJcXChjb3VudFxcLlxbMC05 XF06MVxcKSBsaW5lYXJcXChpOjNcXCkiIDIgIm9yaWdpbmFsIiB9IH0KLSEgeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBzaW1kIGxpbmVhclxcKGNv dW50XFwuXFswLTlcXToxXFwpIGxpbmVhclxcKGk6dmFsLHN0ZXBcXCgzXFwpXFwpIiAyICJv cmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3By YWdtYSBvbXAgc2ltZCBsaW5lYXJcXChpOjNcXCkiIDIgIm9yaWdpbmFsIiB9IH0KKyEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBzaW1kIGxpbmVh clxcKGk6dmFsLHN0ZXBcXCgzXFwpXFwpIiAyICJvcmlnaW5hbCIgfSB9CiAhIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJcXChp OjFcXCkgbGluZWFyXFwoeDpEXFwuXFswLTlcXStcXCkiIDIgIm9yaWdpbmFsIiB9IH0KICEg eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBzaW1kIGxp bmVhclxcKGk6MVxcKSBsaW5lYXJcXCh4OnZhbCxzdGVwXFwoRFxcLlxbMC05XF0rXFwpXFwp IiAyICJvcmlnaW5hbCIgfSB9CiAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJcXChpOkRcXC5cWzAtOVxdK1xcKSIgMiAib3Jp Z2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJnb21wLnRleGkgYi9saWJnb21w L2xpYmdvbXAudGV4aQppbmRleCA2MzlkZDA1ZWI3Yi4uYTg1ODJiNTAxNzcgMTAwNjQ0Ci0t LSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpCisrKyBiL2xpYmdvbXAvbGliZ29tcC50ZXhpCkBA IC0xOTQsNyArMTk0LDkgQEAgVGhlIE9wZW5NUCA0LjUgc3BlY2lmaWNhdGlvbiBpcyBmdWxs eSBzdXBwb3J0ZWQuCiBAaXRlbSBAY29kZXtyZXF1aXJlc30gZGlyZWN0aXZlIEB0YWIgUAog ICAgICAgQHRhYiBjb21wbGV0ZSBidXQgbm8gbm9uLWhvc3QgZGV2aWNlIHByb3ZpZGVzIEBj b2Rle3VuaWZpZWRfc2hhcmVkX21lbW9yeX0KIEBpdGVtIEBjb2Rle3RlYW1zfSBjb25zdHJ1 Y3Qgb3V0c2lkZSBhbiBlbmNsb3NpbmcgdGFyZ2V0IHJlZ2lvbiBAdGFiIFkgQHRhYgotQGl0 ZW0gTm9uLXJlY3Rhbmd1bGFyIGxvb3AgbmVzdHMgQHRhYiBQIEB0YWIgRnVsbCBzdXBwb3J0 IGZvciBDL0MrKywgcGFydGlhbCBmb3IgRm9ydHJhbgorQGl0ZW0gTm9uLXJlY3Rhbmd1bGFy IGxvb3AgbmVzdHMgQHRhYiBQCisgICAgICBAdGFiIEZ1bGwgc3VwcG9ydCBmb3IgQy9DKyss IHBhcnRpYWwgZm9yIEZvcnRyYW4KKyAgICAgICAgICAgKEB1cmVme2h0dHBzOi8vZ2NjLmdu dS5vcmcvUFIxMTA3MzUsUFIxMTA3MzV9KQogQGl0ZW0gQGNvZGV7IT19IGFzIHJlbGF0aW9u YWwtb3AgaW4gY2Fub25pY2FsIGxvb3AgZm9ybSBmb3IgQy9DKysgQHRhYiBZIEB0YWIKIEBp dGVtIEBjb2Rle25vbm1vbm90b25pY30gYXMgZGVmYXVsdCBsb29wIHNjaGVkdWxlIG1vZGlm aWVyIGZvciB3b3Jrc2hhcmluZy1sb29wCiAgICAgICBjb25zdHJ1Y3RzIEB0YWIgWSBAdGFi CmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vbm9uLXJl Y3Rhbmd1bGFyLWxvb3AtMS5mOTAgYi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRy YW4vbm9uLXJlY3Rhbmd1bGFyLWxvb3AtMS5mOTAKaW5kZXggZGJiZDE4YTE0NDQuLmQwNzRk NGRlNWEwIDEwMDY0NAotLS0gYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4v bm9uLXJlY3Rhbmd1bGFyLWxvb3AtMS5mOTAKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGli Z29tcC5mb3J0cmFuL25vbi1yZWN0YW5ndWxhci1sb29wLTEuZjkwCkBAIC02LDkgKzYsNiBA QAogCiAhIE5vbnJlY3Rhbmd1bGFyIGxvb3AgbmVzdHMgY2hlY2tzCiAKLSEgU2VlIFBSIG9y IG5vbi1yZWN0YW5ndWxhci1sb29wLTFhLmY5MCBmb3IgdGhlIGNvbW1lbnRlZCB0ZXN0cwot ISBIaW50OiBUaG9zZSB1c2Ugc3RlcCBmb3IgbG9vcCB2YXJzIHBhcnQgb2Ygbm9ucmVjdGFu Z3VsYXIgbG9vcCBuZXN0cwotCiBtb2R1bGUgbQogICBpbXBsaWNpdCBub25lICh0eXBlLCBl eHRlcm5hbCkKIGNvbnRhaW5zCkBAIC0yNiwzMiArMjMsMzIgQEAgc3Vicm91dGluZSBsYXN0 cHJpdmF0ZV9jaGVja19zaW1kXzEKICAgISBVc2UgJ2knIG9yICdqJywgdW5pdCBzdGVwIG9u ICdpJyBvciBvbiAnaicgLT4gNCBsb29wcwogICAhIFRoZW4gc2FtZSwgZXhjZXB0IHVzZSBu b24tdW5pdCBzdGVwIGZvciAnaycKIAotISAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0 cHJpdmF0ZShrKQotISAgZG8gaSA9IDEsIG4KLSEgICAgZG8gaiA9IDEsIG0sIDIKLSEgICAg ICBkbyBrID0gaiAtIDQxLCBwCi0hICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBw KSBlcnJvciBzdG9wCi0hICAgICAgZW5kIGRvCi0hICAgIGVuZCBkbwotISAgZW5kIGRvCi0h ICBpZiAoayAvPSBwICsgMSkgZXJyb3Igc3RvcAotCi0hICAhJG9tcCBzaW1kIGNvbGxhcHNl KDMpIGxhc3Rwcml2YXRlKGspCi0hICBkbyBpID0gMSwgbiwgMgotISAgICBkbyBqID0gMSwg bQotISAgICAgIGRvIGsgPSBpIC0gNDEsIHAKLSEgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAgZW5kIGRvCi0hICBl bmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisgICEkb21wIHNpbWQgY29s bGFwc2UoMykgbGFzdHByaXZhdGUoaykKKyAgZG8gaSA9IDEsIG4KKyAgICBkbyBqID0gMSwg bSwgMgorICAgICAgZG8gayA9IGogLSA0MSwgcAorICAgICAgICBpZiAoayA8IDEgLSA0MSAu b3IuIGsgPiBwKSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5k IGRvCisgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisKKyAgISRvbXAgc2ltZCBjb2xs YXBzZSgzKSBsYXN0cHJpdmF0ZShrKQorICBkbyBpID0gMSwgbiwgMgorICAgIGRvIGogPSAx LCBtCisgICAgICBkbyBrID0gaSAtIDQxLCBwCisgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbworICBlbmQg ZG8KKyAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKIAogICAhJG9tcCBzaW1kIGNvbGxh cHNlKDMpIGxhc3Rwcml2YXRlKGspCiAgIGRvIGkgPSAxLCBuLCAyCiAgICAgZG8gaiA9IDEs IG0KICAgICAgIGRvIGsgPSBqIC0gNDEsIHAKICAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9y LiBrID4gcCkgdGhlbgotICAgICAgICAgIHByaW50ICosIGksIGosIGsscCwgIiAtPiBpLCBq LCBrLCBwICAgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkiCisgICAgICAgICAgISBwcmludCAq LCBpLCBqLCBrLHAsICIgLT4gaSwgaiwgaywgcCAgIChrIDwgMSAtIDQxIC5vci4gayA+IHAp IgogICAgICAgICAgIGVycm9yIHN0b3AKICAgICAgICAgZW5kIGlmCiAgICAgICBlbmQgZG8K QEAgLTY2LDcgKzYzLDcgQEAgc3Vicm91dGluZSBsYXN0cHJpdmF0ZV9jaGVja19zaW1kXzEK ICAgICBkbyBqID0gMSwgbQogICAgICAgZG8gayA9IGogLSA0MSwgcAogICAgICAgICBpZiAo ayA8IDEgLSA0MSAub3IuIGsgPiBwKSB0aGVuCi0gICAgICAgICAgcHJpbnQgKiwgaSwgaiwg ayxwLCAiIC0+IGksIGosIGssIHAgICAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSIKKyAgICAg ICAgICAhIHByaW50ICosIGksIGosIGsscCwgIiAtPiBpLCBqLCBrLCBwICAgKGsgPCAxIC0g NDEgLm9yLiBrID4gcCkiCiAgICAgICAgICAgZXJyb3Igc3RvcAogICAgICAgICBlbmQgaWYK ICAgICAgIGVuZCBkbwpAQCAtMTAyLDI1ICs5OSwyNSBAQCBzdWJyb3V0aW5lIGxhc3Rwcml2 YXRlX2NoZWNrX3NpbWRfMQogCiAgICEgU2FtZSBidXQgJ3ByaXZhdGUnIGZvciBhbGwgKGks aikgdmFycwogCi0hICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIHBy aXZhdGUoaSxqKQotISAgZG8gaSA9IDEsIG4KLSEgICAgZG8gaiA9IDEsIG0sIDIKLSEgICAg ICBkbyBrID0gaiAtIDQxLCBwCi0hICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBw KSBlcnJvciBzdG9wCi0hICAgICAgZW5kIGRvCi0hICAgIGVuZCBkbwotISAgZW5kIGRvCi0h ICBpZiAoayAvPSBwICsgMSkgZXJyb3Igc3RvcAotIQotISAgISRvbXAgc2ltZCBjb2xsYXBz ZSgzKSBsYXN0cHJpdmF0ZShrKSBwcml2YXRlKGksaikKLSEgIGRvIGkgPSAxLCBuLCAyCi0h ICAgIGRvIGogPSAxLCBtCi0hICAgICAgZG8gayA9IGkgLSA0MSwgcAotISAgICAgICAgaWYg KGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAotISAgICAgIGVuZCBkbwotISAg ICBlbmQgZG8KLSEgIGVuZCBkbwotISAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKyAg ISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBwcml2YXRlKGksaikKKyAg ZG8gaSA9IDEsIG4KKyAgICBkbyBqID0gMSwgbSwgMgorICAgICAgZG8gayA9IGogLSA0MSwg cAorICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCisgICAg ICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChrIC89IHAgKyAxKSBlcnJv ciBzdG9wCisKKyAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBwcml2 YXRlKGksaikKKyAgZG8gaSA9IDEsIG4sIDIKKyAgICBkbyBqID0gMSwgbQorICAgICAgZG8g ayA9IGkgLSA0MSwgcAorICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJv ciBzdG9wCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChrIC89 IHAgKyAxKSBlcnJvciBzdG9wCiAKICAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJp dmF0ZShrKSBwcml2YXRlKGksaikKICAgZG8gaSA9IDEsIG4sIDIKQEAgLTE0NCwyNyArMTQx LDI3IEBAIHN1YnJvdXRpbmUgbGFzdHByaXZhdGVfY2hlY2tfc2ltZF8xCiAKICAgISBTYW1l IC0gYnV0IHdpdGggbGFzdHByaXZhdGUoaSxqKQogCi0hICAhJG9tcCBzaW1kIGNvbGxhcHNl KDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKLSEgIGRvIGkgPSAxLCBuCi0h ICAgIGRvIGogPSAxLCBtLCAyCi0hICAgICAgZG8gayA9IGogLSA0MSwgcAotISAgICAgICAg aWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAotISAgICAgIGVuZCBkbwot ISAgICBlbmQgZG8KLSEgIGVuZCBkbwotISAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AK LSEgIGlmIChpIC89IG4gKyAxIC5vci4gaiAvPSBtICsgMikgZXJyb3Igc3RvcAotCi0hICAh JG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikK LSEgIGRvIGkgPSAxLCBuLCAyCi0hICAgIGRvIGogPSAxLCBtCi0hICAgICAgZG8gayA9IGkg LSA0MSwgcAotISAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3Rv cAotISAgICAgIGVuZCBkbwotISAgICBlbmQgZG8KLSEgIGVuZCBkbwotISAgaWYgKGsgLz0g cCArIDEpIGVycm9yIHN0b3AKLSEgIGlmIChpIC89IG4gKyAyIC5vci4gaiAvPSBtICsgMSkg ZXJyb3Igc3RvcAorICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxh c3Rwcml2YXRlKGksaikKKyAgZG8gaSA9IDEsIG4KKyAgICBkbyBqID0gMSwgbSwgMgorICAg ICAgZG8gayA9IGogLSA0MSwgcAorICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBw KSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlm IChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisgIGlmIChpIC89IG4gKyAxIC5vci4gaiAvPSBt ICsgMikgZXJyb3Igc3RvcAorCisgICEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZh dGUoaykgbGFzdHByaXZhdGUoaSxqKQorICBkbyBpID0gMSwgbiwgMgorICAgIGRvIGogPSAx LCBtCisgICAgICBkbyBrID0gaSAtIDQxLCBwCisgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbworICBlbmQg ZG8KKyAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKyAgaWYgKGkgLz0gbiArIDIgLm9y LiBqIC89IG0gKyAxKSBlcnJvciBzdG9wCiAKICAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBs YXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLGopCiAgIGRvIGkgPSAxLCBuLCAyCkBAIC0y MDEsMjUgKzE5OCwyNSBAQCBzdWJyb3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX2RvX3NpbWRf MQogICAhIFVzZSAnaScgb3IgJ2onLCB1bml0IHN0ZXAgb24gJ2knIG9yIG9uICdqJyAtPiA0 IGxvb3BzCiAgICEgVGhlbiBzYW1lLCBleGNlcHQgdXNlIG5vbi11bml0IHN0ZXAgZm9yICdr JwogCi0hICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRl KGspCi0hICBkbyBpID0gMSwgbgotISAgICBkbyBqID0gMSwgbSwgMgotISAgICAgIGRvIGsg PSBqIC0gNDEsIHAKLSEgICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9y IHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAgZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChr IC89IHAgKyAxKSBlcnJvciBzdG9wCi0KLSEgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29s bGFwc2UoMykgbGFzdHByaXZhdGUoaykKLSEgIGRvIGkgPSAxLCBuLCAyCi0hICAgIGRvIGog PSAxLCBtCi0hICAgICAgZG8gayA9IGkgLSA0MSwgcAotISAgICAgICAgaWYgKGsgPCAxIC0g NDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAotISAgICAgIGVuZCBkbwotISAgICBlbmQgZG8K LSEgIGVuZCBkbwotISAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKyAgISRvbXAgcGFy YWxsZWwgZG8gc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKQorICBkbyBpID0gMSwg bgorICAgIGRvIGogPSAxLCBtLCAyCisgICAgICBkbyBrID0gaiAtIDQxLCBwCisgICAgICAg IGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbwor ICAgIGVuZCBkbworICBlbmQgZG8KKyAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKwor ICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCisg IGRvIGkgPSAxLCBuLCAyCisgICAgZG8gaiA9IDEsIG0KKyAgICAgIGRvIGsgPSBpIC0gNDEs IHAKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAg ICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSBwICsgMSkgZXJy b3Igc3RvcAogCiAgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHBy aXZhdGUoaykKICAgZG8gaSA9IDEsIG4sIDIKQEAgLTI0MywyNSArMjQwLDI1IEBAIHN1YnJv dXRpbmUgbGFzdHByaXZhdGVfY2hlY2tfZG9fc2ltZF8xCiAKICAgISBTYW1lIGJ1dCAncHJp dmF0ZScgZm9yIGFsbCAoaSxqKSB2YXJzCiAKLSEgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQg Y29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCi0hICBkbyBpID0gMSwg bgotISAgICBkbyBqID0gMSwgbSwgMgotISAgICAgIGRvIGsgPSBqIC0gNDEsIHAKLSEgICAg ICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQg ZG8KLSEgICAgZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBz dG9wCi0KLSEgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZh dGUoaykgcHJpdmF0ZShpLGopCi0hICBkbyBpID0gMSwgbiwgMgotISAgICBkbyBqID0gMSwg bQotISAgICAgIGRvIGsgPSBpIC0gNDEsIHAKLSEgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAgZW5kIGRvCi0hICBl bmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisgICEkb21wIHBhcmFsbGVs IGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCisgIGRv IGkgPSAxLCBuCisgICAgZG8gaiA9IDEsIG0sIDIKKyAgICAgIGRvIGsgPSBqIC0gNDEsIHAK KyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAg ZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSBwICsgMSkgZXJyb3Ig c3RvcAorCisgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZh dGUoaykgcHJpdmF0ZShpLGopCisgIGRvIGkgPSAxLCBuLCAyCisgICAgZG8gaiA9IDEsIG0K KyAgICAgIGRvIGsgPSBpIC0gNDEsIHAKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBr ID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbwor ICBpZiAoayAvPSBwICsgMSkgZXJyb3Igc3RvcAogCiAgICEkb21wIHBhcmFsbGVsIGRvIHNp bWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCiAgIGRvIGkgPSAx LCBuLCAyCkBAIC0yODUsMjcgKzI4MiwyNyBAQCBzdWJyb3V0aW5lIGxhc3Rwcml2YXRlX2No ZWNrX2RvX3NpbWRfMQogCiAgICEgU2FtZSAtIGJ1dCB3aXRoIGxhc3Rwcml2YXRlKGksaikK IAotISAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShr KSBsYXN0cHJpdmF0ZShpLGopCi0hICBkbyBpID0gMSwgbgotISAgICBkbyBqID0gMSwgbSwg MgotISAgICAgIGRvIGsgPSBqIC0gNDEsIHAKLSEgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAgZW5kIGRvCi0hICBl bmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0hICBpZiAoaSAvPSBuICsg MSAub3IuIGogLz0gbSArIDIpIGVycm9yIHN0b3AKLQotISAgISRvbXAgcGFyYWxsZWwgZG8g c2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLGopCi0hICBk byBpID0gMSwgbiwgMgotISAgICBkbyBqID0gMSwgbQotISAgICAgIGRvIGsgPSBpIC0gNDEs IHAKLSEgICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEg ICAgICBlbmQgZG8KLSEgICAgZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAx KSBlcnJvciBzdG9wCi0hICBpZiAoaSAvPSBuICsgMiAub3IuIGogLz0gbSArIDEpIGVycm9y IHN0b3AKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0 ZShrKSBsYXN0cHJpdmF0ZShpLGopCisgIGRvIGkgPSAxLCBuCisgICAgZG8gaiA9IDEsIG0s IDIKKyAgICAgIGRvIGsgPSBqIC0gNDEsIHAKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9y LiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBk bworICBpZiAoayAvPSBwICsgMSkgZXJyb3Igc3RvcAorICBpZiAoaSAvPSBuICsgMSAub3Iu IGogLz0gbSArIDIpIGVycm9yIHN0b3AKKworICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGNv bGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKKyAgZG8gaSA9IDEs IG4sIDIKKyAgICBkbyBqID0gMSwgbQorICAgICAgZG8gayA9IGkgLSA0MSwgcAorICAgICAg ICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8K KyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisg IGlmIChpIC89IG4gKyAyIC5vci4gaiAvPSBtICsgMSkgZXJyb3Igc3RvcAogCiAgICEkb21w IHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgbGFzdHByaXZh dGUoaSxqKQogICBkbyBpID0gMSwgbiwgMgpAQCAtMzQzLDI1ICszNDAsMjUgQEAgc3Vicm91 dGluZSBsYXN0cHJpdmF0ZV9jaGVja19kb18xCiAgICEgVXNlICdpJyBvciAnaicsIHVuaXQg c3RlcCBvbiAnaScgb3Igb24gJ2onIC0+IDQgbG9vcHMKICAgISBUaGVuIHNhbWUsIGV4Y2Vw dCB1c2Ugbm9uLXVuaXQgc3RlcCBmb3IgJ2snCiAKLSEgICEkb21wIHBhcmFsbGVsIGRvIGNv bGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCi0hICBkbyBpID0gMSwgbgotISAgICBkbyBqID0g MSwgbSwgMgotISAgICAgIGRvIGsgPSBqIC0gNDEsIHAKLSEgICAgICAgIGlmIChrIDwgMSAt IDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAgZW5kIGRv Ci0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0KLSEgICEkb21w IHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCi0hICBkbyBpID0gMSwg biwgMgotISAgICBkbyBqID0gMSwgbQotISAgICAgIGRvIGsgPSBpIC0gNDEsIHAKLSEgICAg ICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQg ZG8KLSEgICAgZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBz dG9wCisgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCisg IGRvIGkgPSAxLCBuCisgICAgZG8gaiA9IDEsIG0sIDIKKyAgICAgIGRvIGsgPSBqIC0gNDEs IHAKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAg ICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSBwICsgMSkgZXJy b3Igc3RvcAorCisgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRl KGspCisgIGRvIGkgPSAxLCBuLCAyCisgICAgZG8gaiA9IDEsIG0KKyAgICAgIGRvIGsgPSBp IC0gNDEsIHAKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3Rv cAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSBwICsg MSkgZXJyb3Igc3RvcAogCiAgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rw cml2YXRlKGspCiAgIGRvIGkgPSAxLCBuLCAyCkBAIC0zODUsMjUgKzM4MiwyNSBAQCBzdWJy b3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX2RvXzEKIAogICAhIFNhbWUgYnV0ICdwcml2YXRl JyBmb3IgYWxsIChpLGopIHZhcnMKIAotISAgISRvbXAgcGFyYWxsZWwgZG8gY29sbGFwc2Uo MykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCi0hICBkbyBpID0gMSwgbgotISAgICBk byBqID0gMSwgbSwgMgotISAgICAgIGRvIGsgPSBqIC0gNDEsIHAKLSEgICAgICAgIGlmIChr IDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEgICAg ZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0KLSEg ICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIHByaXZhdGUo aSxqKQotISAgZG8gaSA9IDEsIG4sIDIKLSEgICAgZG8gaiA9IDEsIG0KLSEgICAgICBkbyBr ID0gaSAtIDQxLCBwCi0hICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJv ciBzdG9wCi0hICAgICAgZW5kIGRvCi0hICAgIGVuZCBkbwotISAgZW5kIGRvCi0hICBpZiAo ayAvPSBwICsgMSkgZXJyb3Igc3RvcAorICAhJG9tcCBwYXJhbGxlbCBkbyBjb2xsYXBzZSgz KSBsYXN0cHJpdmF0ZShrKSBwcml2YXRlKGksaikKKyAgZG8gaSA9IDEsIG4KKyAgICBkbyBq ID0gMSwgbSwgMgorICAgICAgZG8gayA9IGogLSA0MSwgcAorICAgICAgICBpZiAoayA8IDEg LSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8K KyAgZW5kIGRvCisgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCisKKyAgISRvbXAgcGFy YWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCisgIGRv IGkgPSAxLCBuLCAyCisgICAgZG8gaiA9IDEsIG0KKyAgICAgIGRvIGsgPSBpIC0gNDEsIHAK KyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAg ZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSBwICsgMSkgZXJyb3Ig c3RvcAogCiAgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGsp IHByaXZhdGUoaSxqKQogICBkbyBpID0gMSwgbiwgMgpAQCAtNDI3LDI3ICs0MjQsMjcgQEAg c3Vicm91dGluZSBsYXN0cHJpdmF0ZV9jaGVja19kb18xCiAKICAgISBTYW1lIC0gYnV0IHdp dGggbGFzdHByaXZhdGUoaSxqKQogCi0hICAhJG9tcCBwYXJhbGxlbCBkbyBjb2xsYXBzZSgz KSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLGopCi0hICBkbyBpID0gMSwgbgotISAg ICBkbyBqID0gMSwgbSwgMgotISAgICAgIGRvIGsgPSBqIC0gNDEsIHAKLSEgICAgICAgIGlm IChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSEgICAgICBlbmQgZG8KLSEg ICAgZW5kIGRvCi0hICBlbmQgZG8KLSEgIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0h ICBpZiAoaSAvPSBuICsgMSAub3IuIGogLz0gbSArIDIpIGVycm9yIHN0b3AKLQotISAgISRv bXAgcGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgbGFzdHByaXZhdGUo aSxqKQotISAgZG8gaSA9IDEsIG4sIDIKLSEgICAgZG8gaiA9IDEsIG0KLSEgICAgICBkbyBr ID0gaSAtIDQxLCBwCi0hICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJv ciBzdG9wCi0hICAgICAgZW5kIGRvCi0hICAgIGVuZCBkbwotISAgZW5kIGRvCi0hICBpZiAo ayAvPSBwICsgMSkgZXJyb3Igc3RvcAotISAgaWYgKGkgLz0gbiArIDIgLm9yLiBqIC89IG0g KyAxKSBlcnJvciBzdG9wCisgICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMpIGxhc3Rw cml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKKyAgZG8gaSA9IDEsIG4KKyAgICBkbyBqID0g MSwgbSwgMgorICAgICBkbyBrID0gaiAtIDQxLCBwCisgICAgICAgIGlmIChrIDwgMSAtIDQx IC5vci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbworICBl bmQgZG8KKyAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKyAgaWYgKGkgLz0gbiArIDEg Lm9yLiBqIC89IG0gKyAyKSBlcnJvciBzdG9wCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gY29s bGFwc2UoMykgbGFzdHByaXZhdGUoaykgbGFzdHByaXZhdGUoaSxqKQorICBkbyBpID0gMSwg biwgMgorICAgIGRvIGogPSAxLCBtCisgICAgICBkbyBrID0gaSAtIDQxLCBwCisgICAgICAg IGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbwor ICAgIGVuZCBkbworICBlbmQgZG8KKyAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKKyAg aWYgKGkgLz0gbiArIDIgLm9yLiBqIC89IG0gKyAxKSBlcnJvciBzdG9wCiAKICAgISRvbXAg cGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgbGFzdHByaXZhdGUoaSxq KQogICBkbyBpID0gMSwgbiwgMgpAQCAtNDgxLDQyICs0NzgsNDIgQEAgc3Vicm91dGluZSBs YXN0cHJpdmF0ZV9jaGVja18yCiAgIG0gPSAyMwogICBwID0gMjcKIAotISAgISRvbXAgcGFy YWxsZWwgZG8gc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShwKQotISAgZG8gaSA9IDEs IG4KLSEgICAgZG8gaiA9IDEsIG0sMgotISAgICAgIGRvIGsgPSAxLCBqICsgNDEKLSEgICAg ICAgIGRvIGxsID0gMSwgcCwgMgotISAgICAgICAgICBpZiAoayA+IDIzICsgNDEgLm9yLiBr IDwgMSkgZXJyb3Igc3RvcAotISAgICAgICAgZW5kIGRvCi0hICAgICAgZW5kIGRvCi0hICAg IGVuZCBkbwotISAgZW5kIGRvCi0hICBpZiAobGwgLz0gMjkpIGVycm9yIHN0b3AKLQotISAg ISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShwKQotISAgZG8gaSA9IDEsIG4K LSEgICAgZG8gaiA9IDEsIG0sMgotISAgICAgIGRvIGsgPSAxLCBqICsgNDEKLSEgICAgICAg IGRvIGxsID0gMSwgcCwgMgotISAgICAgICAgICBpZiAoayA+IDIzICsgNDEgLm9yLiBrIDwg MSkgZXJyb3Igc3RvcAotISAgICAgICAgZW5kIGRvCi0hICAgICAgZW5kIGRvCi0hICAgIGVu ZCBkbwotISAgZW5kIGRvCi0hICBpZiAobGwgLz0gMjkpIGVycm9yIHN0b3AKLQotISAgISRv bXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKQotISAgZG8gaSA9IDEsIG4sMgot ISAgICBkbyBqID0gMSwgbQotISAgICAgIGRvIGsgPSAxLCBpICsgNDEKLSEgICAgICAgIGlm IChrID4gMTEgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9wCi0hICAgICAgZW5kIGRvCi0h ICAgIGVuZCBkbwotISAgZW5kIGRvCi0haWYgKGsgLz0gNTMpIHRoZW4KLSEgIHByaW50ICos IGssIDUzCi0hICBlcnJvciBzdG9wCi0hZW5kaWYKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2lt ZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShsbCkKKyAgZG8gaSA9IDEsIG4KKyAgICBkbyBq ID0gMSwgbSwyCisgICAgICBkbyBrID0gMSwgaiArIDQxCisgICAgICAgIGRvIGxsID0gMSwg cCwgMgorICAgICAgICAgIGlmIChrID4gMjMgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9w CisgICAgICAgIGVuZCBkbworICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbwor ICBpZiAobGwgLz0gMjkpIGVycm9yIHN0b3AKKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMp IGxhc3Rwcml2YXRlKGxsKQorICBkbyBpID0gMSwgbgorICAgIGRvIGogPSAxLCBtLDIKKyAg ICAgIGRvIGsgPSAxLCBqICsgNDEKKyAgICAgICAgZG8gbGwgPSAxLCBwLCAyCisgICAgICAg ICAgaWYgKGsgPiAyMyArIDQxIC5vci4gayA8IDEpIGVycm9yIHN0b3AKKyAgICAgICAgZW5k IGRvCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChsbCAvPSAy OSkgZXJyb3Igc3RvcAorCisgICEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUo aykKKyAgZG8gaSA9IDEsIG4sMgorICAgIGRvIGogPSAxLCBtCisgICAgICBkbyBrID0gMSwg aSArIDQxCisgICAgICAgIGlmIChrID4gMTEgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9w CisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCitpZiAoayAvPSA1MykgdGhl bgorICBwcmludCAqLCBrLCA1MworICBlcnJvciBzdG9wCitlbmRpZgogCiAhJG9tcCBzaW1k IGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCiBkbyBpID0gMSwgbiwyCkBAIC01NDYsMzIg KzU0MywzMiBAQCBpZiAoayAvPSA1MykgdGhlbgogZW5kaWYKIAogISAtIFNhbWUgYnV0IHdp dGhvdXQgJ3ByaXZhdGUnOgotISEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUo aykKLSFkbyBpID0gMSwgbgotISAgZG8gaiA9IDEsIG0sMgotISAgICBkbyBrID0gMSwgaiAr IDQxCi0hICAgICAgaWYgKGsgPiAyMyArIDQxIC5vci4gayA8IDEpIGVycm9yIHN0b3AKLSEg ICAgZW5kIGRvCi0hICBlbmQgZG8KLSFlbmQgZG8KLSFpZiAoayAvPSA2NSkgdGhlbgotISAg cHJpbnQgKiwgaywgNjUKLSEgIGVycm9yIHN0b3AKLSFlbmRpZgotCi0KLSEhJG9tcCBzaW1k IGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCi0hZG8gaSA9IDEsIG4sMgotISAgZG8gaiA9 IDEsIG0KLSEgICAgZG8gayA9IDEsIGkgKyA0MQotISAgICAgIGlmIChrID4gMTEgKyA0MSAu b3IuIGsgPCAxKSBlcnJvciBzdG9wCi0hICAgIGVuZCBkbwotISAgZW5kIGRvCi0hZW5kIGRv Ci0haWYgKGsgLz0gNTMpIHRoZW4KLSEgIHByaW50ICosIGssIDUzCi0hICBlcnJvciBzdG9w Ci0hZW5kaWYKKyEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykKK2RvIGkg PSAxLCBuCisgIGRvIGogPSAxLCBtLDIKKyAgICBkbyBrID0gMSwgaiArIDQxCisgICAgICBp ZiAoayA+IDIzICsgNDEgLm9yLiBrIDwgMSkgZXJyb3Igc3RvcAorICAgIGVuZCBkbworICBl bmQgZG8KK2VuZCBkbworaWYgKGsgLz0gNjUpIHRoZW4KKyAgcHJpbnQgKiwgaywgNjUKKyAg ZXJyb3Igc3RvcAorZW5kaWYKKworCishJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2 YXRlKGspCitkbyBpID0gMSwgbiwyCisgIGRvIGogPSAxLCBtCisgICAgZG8gayA9IDEsIGkg KyA0MQorICAgICAgaWYgKGsgPiAxMSArIDQxIC5vci4gayA8IDEpIGVycm9yIHN0b3AKKyAg ICBlbmQgZG8KKyAgZW5kIGRvCitlbmQgZG8KK2lmIChrIC89IDUzKSB0aGVuCisgIHByaW50 ICosIGssIDUzCisgIGVycm9yIHN0b3AKK2VuZGlmCiAKICEkb21wIHNpbWQgY29sbGFwc2Uo MykgbGFzdHByaXZhdGUoaykKIGRvIGkgPSAxLCBuLDIKQEAgLTYwMSwzMiArNTk4LDMyIEBA IGlmIChrIC89IDUzKSB0aGVuCiBlbmRpZgogCiAhIC0gYWxsIHdpdGggbGFzdHByaXZhdGUK LSEhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGks IGopCi0hZG8gaSA9IDEsIG4KLSEgIGRvIGogPSAxLCBtLDIKLSEgICAgZG8gayA9IDEsIGog KyA0MQotISAgICAgIGlmIChrID4gMjMgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9wCi0h ICAgIGVuZCBkbwotISAgZW5kIGRvCi0hZW5kIGRvCi0haWYgKGsgLz0gNjUpIHRoZW4KLSEg IHByaW50ICosIGssIDY1Ci0hICBlcnJvciBzdG9wCi0hZW5kaWYKLQotCi0hISRvbXAgc2lt ZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLCBqKQotIWRvIGkg PSAxLCBuLDIKLSEgIGRvIGogPSAxLCBtCi0hICAgIGRvIGsgPSAxLCBpICsgNDEKLSEgICAg ICBpZiAoayA+IDExICsgNDEgLm9yLiBrIDwgMSkgZXJyb3Igc3RvcAotISAgICBlbmQgZG8K LSEgIGVuZCBkbwotIWVuZCBkbwotIWlmIChrIC89IDUzKSB0aGVuCi0hICBwcmludCAqLCBr LCA1MwotISAgZXJyb3Igc3RvcAotIWVuZGlmCishJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxh c3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksIGopCitkbyBpID0gMSwgbgorICBkbyBqID0g MSwgbSwyCisgICAgZG8gayA9IDEsIGogKyA0MQorICAgICAgaWYgKGsgPiAyMyArIDQxIC5v ci4gayA8IDEpIGVycm9yIHN0b3AKKyAgICBlbmQgZG8KKyAgZW5kIGRvCitlbmQgZG8KK2lm IChrIC89IDY1KSB0aGVuCisgIHByaW50ICosIGssIDY1CisgIGVycm9yIHN0b3AKK2VuZGlm CisKKworISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0 ZShpLCBqKQorZG8gaSA9IDEsIG4sMgorICBkbyBqID0gMSwgbQorICAgIGRvIGsgPSAxLCBp ICsgNDEKKyAgICAgIGlmIChrID4gMTEgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9wCisg ICAgZW5kIGRvCisgIGVuZCBkbworZW5kIGRvCitpZiAoayAvPSA1MykgdGhlbgorICBwcmlu dCAqLCBrLCA1MworICBlcnJvciBzdG9wCitlbmRpZgogCiAhJG9tcCBzaW1kIGNvbGxhcHNl KDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksIGopCiBkbyBpID0gMSwgbiwyCmRp ZmYgLS1naXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vbm9uLXJlY3Rh bmd1bGFyLWxvb3AtMWEuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L25vbi1yZWN0YW5ndWxhci1sb29wLTFhLmY5MApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzdhYTg4Nzk0MmUuLjAwMDAwMDAwMDAwCi0tLSBhL2xpYmdvbXAvdGVzdHN1aXRl L2xpYmdvbXAuZm9ydHJhbi9ub24tcmVjdGFuZ3VsYXItbG9vcC0xYS5mOTAKKysrIC9kZXYv bnVsbApAQCAtMSwzNzQgKzAsMCBAQAotISB7IGRnLWRvIGNvbXBpbGUgfQotISB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLW1zc2UyIiB7IHRhcmdldCBzc2UyX3J1bnRpbWUgfSB9Ci0h IHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWF2eCIgeyB0YXJnZXQgYXZ4X3J1bnRpbWUg fSB9Ci0KLSEgUFIgZm9ydHJhbi8xMDc0MjQKLQotISBOb25yZWN0YW5ndWxhciBsb29wIG5l c3RzIGNoZWNrcwotCi0hID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0hIE5PVEU6IFRoZSB0ZXN0Y2FzZXMgYXJlIGZyb20gbm9u LXJlY3Rhbmd1bGFyLWxvb3AtMS5mOTAsCi0hIGJ1dCBjb21tZW50ZWQgdGhlcmUuIEZlZWwg ZnJlZSB0byByZW1vdmUgdGhpcwotISBmaWxlICsgdW5jb21tZW50IHRoZW0gaW4gbm9uLXJl Y3Rhbmd1bGFyLWxvb3AtMS5mOTAKLSEgT3RoZXJ3aXNlLCB5b3UgbmVlZCB0byBjaGFuZ2Ug aXQgdG8gJ2RnLWRvIHJ1bichCi0hID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLW1vZHVsZSBtCi0gIGltcGxpY2l0IG5vbmUg KHR5cGUsIGV4dGVybmFsKQotY29udGFpbnMKLQotISBUaGUgJ2snIGxvb3AgdXNlcyBpIG9y IGogYXMgc3RhcnQgdmFsdWUKLSEgYnV0IGEgY29uc3RhbnQgZW5kIHZhbHVlIHN1Y2ggdGhh dCAnbGFzdHByaXZhdGUnCi0hIHNob3VsZCBiZSB3ZWxsLWRlZmluZWQKLXN1YnJvdXRpbmUg bGFzdHByaXZhdGVfY2hlY2tfc2ltZF8xCi0gIGludGVnZXIgOjogbixtLHAsIGksaixrCi0K LSAgbiA9IDExCi0gIG0gPSAyMwotICBwID0gMjcKLQotICAhIFVzZSAnaScgb3IgJ2onLCB1 bml0IHN0ZXAgb24gJ2knIG9yIG9uICdqJyAtPiA0IGxvb3BzCi0gICEgVGhlbiBzYW1lLCBl eGNlcHQgdXNlIG5vbi11bml0IHN0ZXAgZm9yICdrJwotCi0gICEkb21wIHNpbWQgY29sbGFw c2UoMykgbGFzdHByaXZhdGUoaykKLSAgZG8gaSA9IDEsIG4KLSAgICBkbyBqID0gMSwgbSwg MiAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3Vs YXIgbG9vcCBuZXN0IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9y ICdqJyIgfQotICAgICAgZG8gayA9IGogLSA0MSwgcCAgISB7IGRnLW5vdGUgIlVzZWQgaGVy ZSIgfQotICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCi0g ICAgICBlbmQgZG8KLSAgICBlbmQgZG8KLSAgZW5kIGRvCi0gIGlmIChrIC89IHAgKyAxKSBl cnJvciBzdG9wCi0KLSAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKQot ICBkbyBpID0gMSwgbiwgMiAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVk OiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0 YW50IDEgb3IgLTEgZm9yICdpJyIgfQotICAgIGRvIGogPSAxLCBtCi0gICAgICBkbyBrID0g aSAtIDQxLCBwICAhIHsgZGctbm90ZSAiVXNlZCBoZXJlIiB9Ci0gICAgICAgIGlmIChrIDwg MSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSAgICAgIGVuZCBkbwotICAgIGVuZCBk bwotICBlbmQgZG8KLSAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKLQotICAhIFNhbWUg YnV0ICdwcml2YXRlJyBmb3IgYWxsIChpLGopIHZhcnMKLQotICAhJG9tcCBzaW1kIGNvbGxh cHNlKDMpIGxhc3Rwcml2YXRlKGspIHByaXZhdGUoaSxqKQotICBkbyBpID0gMSwgbgotICAg IGRvIGogPSAxLCBtLCAyICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6 IG5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3Rh bnQgMSBvciAtMSBmb3IgJ2onIiB9Ci0gICAgICBkbyBrID0gaiAtIDQxLCBwICAhIHsgZGct bm90ZSAiVXNlZCBoZXJlIiB9Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHAp IGVycm9yIHN0b3AKLSAgICAgIGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYg KGsgLz0gcCArIDEpIGVycm9yIHN0b3AKLQotICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxh c3Rwcml2YXRlKGspIHByaXZhdGUoaSxqKQotICBkbyBpID0gMSwgbiwgMiAgISB7IGRnLW1l c3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0 IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdpJyIgfQotICAg IGRvIGogPSAxLCBtCi0gICAgICBkbyBrID0gaSAtIDQxLCBwICAhIHsgZGctbm90ZSAiVXNl ZCBoZXJlIiB9Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0 b3AKLSAgICAgIGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYgKGsgLz0gcCAr IDEpIGVycm9yIHN0b3AKLQotICAhIFNhbWUgLSBidXQgd2l0aCBsYXN0cHJpdmF0ZShpLGop Ci0KLSAgISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0 ZShpLGopCi0gIGRvIGkgPSAxLCBuCi0gICAgZG8gaiA9IDEsIG0sIDIgICEgeyBkZy1tZXNz YWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9uLXJlY3Rhbmd1bGFyIGxvb3AgbmVzdCB3 aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAxIG9yIC0xIGZvciAnaiciIH0KLSAgICAg IGRvIGsgPSBqIC0gNDEsIHAgICEgeyBkZy1ub3RlICJVc2VkIGhlcmUiIH0KLSAgICAgICAg aWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAotICAgICAgZW5kIGRvCi0g ICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAoayAvPSBwICsgMSkgZXJyb3Igc3RvcAotICBp ZiAoaSAvPSBuICsgMSAub3IuIGogLz0gbSArIDIpIGVycm9yIHN0b3AKLQotICAhJG9tcCBz aW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKLSAgZG8g aSA9IDEsIG4sIDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9u LXJlY3Rhbmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAx IG9yIC0xIGZvciAnaSciIH0KLSAgICBkbyBqID0gMSwgbQotICAgICAgZG8gayA9IGkgLSA0 MSwgcCAgISB7IGRnLW5vdGUgIlVzZWQgaGVyZSIgfQotICAgICAgICBpZiAoayA8IDEgLSA0 MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCi0gICAgICBlbmQgZG8KLSAgICBlbmQgZG8KLSAg ZW5kIGRvCi0gIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0gIGlmIChpIC89IG4gKyAy IC5vci4gaiAvPSBtICsgMSkgZXJyb3Igc3RvcAotCi1lbmQgc3Vicm91dGluZSBsYXN0cHJp dmF0ZV9jaGVja19zaW1kXzEKLQotCi0hIFNhbWUgYnV0IHdpdGggZG8gc2ltZAotc3Vicm91 dGluZSBsYXN0cHJpdmF0ZV9jaGVja19kb19zaW1kXzEKLSAgaW50ZWdlciA6OiBuLG0scCwg aSxqLGsKLQotICBuID0gMTEKLSAgbSA9IDIzCi0gIHAgPSAyNwotCi0gICEgVXNlICdpJyBv ciAnaicsIHVuaXQgc3RlcCBvbiAnaScgb3Igb24gJ2onIC0+IDQgbG9vcHMKLSAgISBUaGVu IHNhbWUsIGV4Y2VwdCB1c2Ugbm9uLXVuaXQgc3RlcCBmb3IgJ2snCi0KLSAgISRvbXAgcGFy YWxsZWwgZG8gc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKQotICBkbyBpID0gMSwg bgotICAgIGRvIGogPSAxLCBtLCAyICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVt ZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4g Y29uc3RhbnQgMSBvciAtMSBmb3IgJ2onIiB9Ci0gICAgICBkbyBrID0gaiAtIDQxLCBwICAh IHsgZGctbm90ZSAiVXNlZCBoZXJlIiB9Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4g ayA+IHApIGVycm9yIHN0b3AKLSAgICAgIGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8K LSAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AKLQotICAhJG9tcCBwYXJhbGxlbCBkbyBz aW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCi0gIGRvIGkgPSAxLCBuLCAyICAhIHsg ZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29w IG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2knIiB9 Ci0gICAgZG8gaiA9IDEsIG0KLSAgICAgIGRvIGsgPSBpIC0gNDEsIHAgICEgeyBkZy1ub3Rl ICJVc2VkIGhlcmUiIH0KLSAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJy b3Igc3RvcAotICAgICAgZW5kIGRvCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAoayAv PSBwICsgMSkgZXJyb3Igc3RvcAotCi0gICEgU2FtZSBidXQgJ3ByaXZhdGUnIGZvciBhbGwg KGksaikgdmFycwotCi0gICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFz dHByaXZhdGUoaykgcHJpdmF0ZShpLGopCi0gIGRvIGkgPSAxLCBuCi0gICAgZG8gaiA9IDEs IG0sIDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9uLXJlY3Rh bmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAxIG9yIC0x IGZvciAnaiciIH0KLSAgICAgIGRvIGsgPSBqIC0gNDEsIHAgICEgeyBkZy1ub3RlICJVc2Vk IGhlcmUiIH0KLSAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3Rv cAotICAgICAgZW5kIGRvCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAoayAvPSBwICsg MSkgZXJyb3Igc3RvcAotCi0gICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykg bGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCi0gIGRvIGkgPSAxLCBuLCAyICAhIHsgZGct bWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29wIG5l c3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2knIiB9Ci0g ICAgZG8gaiA9IDEsIG0KLSAgICAgIGRvIGsgPSBpIC0gNDEsIHAgICEgeyBkZy1ub3RlICJV c2VkIGhlcmUiIH0KLSAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Ig c3RvcAotICAgICAgZW5kIGRvCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAoayAvPSBw ICsgMSkgZXJyb3Igc3RvcAotCi0gICEgU2FtZSAtIGJ1dCB3aXRoIGxhc3Rwcml2YXRlKGks aikKLQotICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRl KGspIGxhc3Rwcml2YXRlKGksaikKLSAgZG8gaSA9IDEsIG4KLSAgICBkbyBqID0gMSwgbSwg MiAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3Vs YXIgbG9vcCBuZXN0IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9y ICdqJyIgfQotICAgICAgZG8gayA9IGogLSA0MSwgcCAgISB7IGRnLW5vdGUgIlVzZWQgaGVy ZSIgfQotICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCi0g ICAgICBlbmQgZG8KLSAgICBlbmQgZG8KLSAgZW5kIGRvCi0gIGlmIChrIC89IHAgKyAxKSBl cnJvciBzdG9wCi0gIGlmIChpIC89IG4gKyAxIC5vci4gaiAvPSBtICsgMikgZXJyb3Igc3Rv cAotCi0gICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUo aykgbGFzdHByaXZhdGUoaSxqKQotICBkbyBpID0gMSwgbiwgMiAgISB7IGRnLW1lc3NhZ2Ug InNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGgg c3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdpJyIgfQotICAgIGRvIGog PSAxLCBtCi0gICAgICBkbyBrID0gaSAtIDQxLCBwICAhIHsgZGctbm90ZSAiVXNlZCBoZXJl IiB9Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSAg ICAgIGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYgKGsgLz0gcCArIDEpIGVy cm9yIHN0b3AKLSAgaWYgKGkgLz0gbiArIDIgLm9yLiBqIC89IG0gKyAxKSBlcnJvciBzdG9w Ci0KLWVuZCBzdWJyb3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX2RvX3NpbWRfMQotCi0KLQot ISBTYW1lIGJ1dCB3aXRoIGRvCi1zdWJyb3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX2RvXzEK LSAgaW50ZWdlciA6OiBuLG0scCwgaSxqLGsKLQotICBuID0gMTEKLSAgbSA9IDIzCi0gIHAg PSAyNwotCi0gICEgVXNlICdpJyBvciAnaicsIHVuaXQgc3RlcCBvbiAnaScgb3Igb24gJ2on IC0+IDQgbG9vcHMKLSAgISBUaGVuIHNhbWUsIGV4Y2VwdCB1c2Ugbm9uLXVuaXQgc3RlcCBm b3IgJ2snCi0KLSAgISRvbXAgcGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUo aykKLSAgZG8gaSA9IDEsIG4KLSAgICBkbyBqID0gMSwgbSwgMiAgISB7IGRnLW1lc3NhZ2Ug InNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGgg c3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdqJyIgfQotICAgICAgZG8g ayA9IGogLSA0MSwgcCAgISB7IGRnLW5vdGUgIlVzZWQgaGVyZSIgfQotICAgICAgICBpZiAo ayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCi0gICAgICBlbmQgZG8KLSAgICBl bmQgZG8KLSAgZW5kIGRvCi0gIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0KLSAgISRv bXAgcGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykKLSAgZG8gaSA9IDEs IG4sIDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9uLXJlY3Rh bmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAxIG9yIC0x IGZvciAnaSciIH0KLSAgICBkbyBqID0gMSwgbQotICAgICAgZG8gayA9IGkgLSA0MSwgcCAg ISB7IGRnLW5vdGUgIlVzZWQgaGVyZSIgfQotICAgICAgICBpZiAoayA8IDEgLSA0MSAub3Iu IGsgPiBwKSBlcnJvciBzdG9wCi0gICAgICBlbmQgZG8KLSAgICBlbmQgZG8KLSAgZW5kIGRv Ci0gIGlmIChrIC89IHAgKyAxKSBlcnJvciBzdG9wCi0KLSAgISBTYW1lIGJ1dCAncHJpdmF0 ZScgZm9yIGFsbCAoaSxqKSB2YXJzCi0KLSAgISRvbXAgcGFyYWxsZWwgZG8gY29sbGFwc2Uo MykgbGFzdHByaXZhdGUoaykgcHJpdmF0ZShpLGopCi0gIGRvIGkgPSAxLCBuCi0gICAgZG8g aiA9IDEsIG0sIDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9u LXJlY3Rhbmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAx IG9yIC0xIGZvciAnaiciIH0KLSAgICAgIGRvIGsgPSBqIC0gNDEsIHAgICEgeyBkZy1ub3Rl ICJVc2VkIGhlcmUiIH0KLSAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJy b3Igc3RvcAotICAgICAgZW5kIGRvCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAoayAv PSBwICsgMSkgZXJyb3Igc3RvcAotCi0gICEkb21wIHBhcmFsbGVsIGRvIGNvbGxhcHNlKDMp IGxhc3Rwcml2YXRlKGspIHByaXZhdGUoaSxqKQotICBkbyBpID0gMSwgbiwgMiAgISB7IGRn LW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBu ZXN0IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdpJyIgfQot ICAgIGRvIGogPSAxLCBtCi0gICAgICBkbyBrID0gaSAtIDQxLCBwICAhIHsgZGctbm90ZSAi VXNlZCBoZXJlIiB9Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9y IHN0b3AKLSAgICAgIGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYgKGsgLz0g cCArIDEpIGVycm9yIHN0b3AKLQotICAhIFNhbWUgLSBidXQgd2l0aCBsYXN0cHJpdmF0ZShp LGopCi0KLSAgISRvbXAgcGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykg bGFzdHByaXZhdGUoaSxqKQotICBkbyBpID0gMSwgbgotICAgIGRvIGogPSAxLCBtLCAyICAh IHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBs b29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2on IiB9Ci0gICAgICBkbyBrID0gaiAtIDQxLCBwICAhIHsgZGctbm90ZSAiVXNlZCBoZXJlIiB9 Ci0gICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSAgICAg IGVuZCBkbwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYgKGsgLz0gcCArIDEpIGVycm9y IHN0b3AKLSAgaWYgKGkgLz0gbiArIDEgLm9yLiBqIC89IG0gKyAyKSBlcnJvciBzdG9wCi0K LSAgISRvbXAgcGFyYWxsZWwgZG8gY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgbGFzdHBy aXZhdGUoaSxqKQotICBkbyBpID0gMSwgbiwgMiAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1 bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGggc3RlcCBvdGhl ciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdpJyIgfQotICAgIGRvIGogPSAxLCBtCi0g ICAgICBkbyBrID0gaSAtIDQxLCBwICAhIHsgZGctbm90ZSAiVXNlZCBoZXJlIiB9Ci0gICAg ICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKLSAgICAgIGVuZCBk bwotICAgIGVuZCBkbwotICBlbmQgZG8KLSAgaWYgKGsgLz0gcCArIDEpIGVycm9yIHN0b3AK LSAgaWYgKGkgLz0gbiArIDIgLm9yLiBqIC89IG0gKyAxKSBlcnJvciBzdG9wCi0KLWVuZCBz dWJyb3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX2RvXzEKLQotCi0KLXN1YnJvdXRpbmUgbGFz dHByaXZhdGVfY2hlY2tfMgotICBpbnRlZ2VyIDo6IG4sbSxwLCBpLGosayxsbAotCi0gIG4g PSAxMQotICBtID0gMjMKLSAgcCA9IDI3Ci0KLSAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBj b2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShwKQotICBkbyBpID0gMSwgbgotICAgIGRvIGogPSAx LCBtLDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9uLXJlY3Rh bmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAxIG9yIC0x IGZvciAnaiciIH0KLSAgICAgIGRvIGsgPSAxLCBqICsgNDEgICEgeyBkZy1ub3RlICJVc2Vk IGhlcmUiIH0KLSAgICAgICAgZG8gbGwgPSAxLCBwLCAyCi0gICAgICAgICAgaWYgKGsgPiAy MyArIDQxIC5vci4gayA8IDEpIGVycm9yIHN0b3AKLSAgICAgICAgZW5kIGRvCi0gICAgICBl bmQgZG8KLSAgICBlbmQgZG8KLSAgZW5kIGRvCi0gIGlmIChsbCAvPSAyOSkgZXJyb3Igc3Rv cAotCi0gICEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUocCkKLSAgZG8gaSA9 IDEsIG4KLSAgICBkbyBqID0gMSwgbSwyICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1w bGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRo YW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2onIiB9Ci0gICAgICBkbyBrID0gMSwgaiArIDQx ICAhIHsgZGctbm90ZSAiVXNlZCBoZXJlIiB9Ci0gICAgICAgIGRvIGxsID0gMSwgcCwgMgot ICAgICAgICAgIGlmIChrID4gMjMgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9wCi0gICAg ICAgIGVuZCBkbwotICAgICAgZW5kIGRvCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotICBpZiAo bGwgLz0gMjkpIGVycm9yIHN0b3AKLQotICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rw cml2YXRlKGspCi0gIGRvIGkgPSAxLCBuLDIgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5p bXBsZW1lbnRlZDogbm9uLXJlY3Rhbmd1bGFyIGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIg dGhhbiBjb25zdGFudCAxIG9yIC0xIGZvciAnaSciIH0KLSAgICBkbyBqID0gMSwgbQotICAg ICAgZG8gayA9IDEsIGkgKyA0MSAgISB7IGRnLW5vdGUgIlVzZWQgaGVyZSIgfQotICAgICAg ICBpZiAoayA+IDExICsgNDEgLm9yLiBrIDwgMSkgZXJyb3Igc3RvcAotICAgICAgZW5kIGRv Ci0gICAgZW5kIGRvCi0gIGVuZCBkbwotaWYgKGsgLz0gNTMpIHRoZW4KLSAgcHJpbnQgKiwg aywgNTMKLSAgZXJyb3Igc3RvcAotZW5kaWYKLQotISAtIFNhbWUgYnV0IHdpdGhvdXQgJ3By aXZhdGUnOgotISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0cHJpdmF0ZShrKQotZG8gaSA9 IDEsIG4KLSAgZG8gaiA9IDEsIG0sMiAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxl bWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGggc3RlcCBvdGhlciB0aGFu IGNvbnN0YW50IDEgb3IgLTEgZm9yICdqJyIgfQotICAgIGRvIGsgPSAxLCBqICsgNDEgICEg eyBkZy1ub3RlICJVc2VkIGhlcmUiIH0KLSAgICAgIGlmIChrID4gMjMgKyA0MSAub3IuIGsg PCAxKSBlcnJvciBzdG9wCi0gICAgZW5kIGRvCi0gIGVuZCBkbwotZW5kIGRvCi1pZiAoayAv PSA2NSkgdGhlbgotICBwcmludCAqLCBrLCA2NQotICBlcnJvciBzdG9wCi1lbmRpZgotCi0K LSEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykKLWRvIGkgPSAxLCBuLDIg ICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRlZDogbm9uLXJlY3Rhbmd1bGFy IGxvb3AgbmVzdCB3aXRoIHN0ZXAgb3RoZXIgdGhhbiBjb25zdGFudCAxIG9yIC0xIGZvciAn aSciIH0KLSAgZG8gaiA9IDEsIG0KLSAgICBkbyBrID0gMSwgaSArIDQxICAhIHsgZGctbm90 ZSAiVXNlZCBoZXJlIiB9Ci0gICAgICBpZiAoayA+IDExICsgNDEgLm9yLiBrIDwgMSkgZXJy b3Igc3RvcAotICAgIGVuZCBkbwotICBlbmQgZG8KLWVuZCBkbwotaWYgKGsgLz0gNTMpIHRo ZW4KLSAgcHJpbnQgKiwgaywgNTMKLSAgZXJyb3Igc3RvcAotZW5kaWYKLQotISAtIGFsbCB3 aXRoIGxhc3Rwcml2YXRlCi0hJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGsp IGxhc3Rwcml2YXRlKGksIGopCi1kbyBpID0gMSwgbgotICBkbyBqID0gMSwgbSwyICAhIHsg ZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29w IG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2onIiB9 Ci0gICAgZG8gayA9IDEsIGogKyA0MSAgISB7IGRnLW5vdGUgIlVzZWQgaGVyZSIgfQotICAg ICAgaWYgKGsgPiAyMyArIDQxIC5vci4gayA8IDEpIGVycm9yIHN0b3AKLSAgICBlbmQgZG8K LSAgZW5kIGRvCi1lbmQgZG8KLWlmIChrIC89IDY1KSB0aGVuCi0gIHByaW50ICosIGssIDY1 Ci0gIGVycm9yIHN0b3AKLWVuZGlmCi0KLQotISRvbXAgc2ltZCBjb2xsYXBzZSgzKSBsYXN0 cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLCBqKQotZG8gaSA9IDEsIG4sMiAgISB7IGRnLW1l c3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0 IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdpJyIgfQotICBk byBqID0gMSwgbQotICAgIGRvIGsgPSAxLCBpICsgNDEgICEgeyBkZy1ub3RlICJVc2VkIGhl cmUiIH0KLSAgICAgIGlmIChrID4gMTEgKyA0MSAub3IuIGsgPCAxKSBlcnJvciBzdG9wCi0g ICAgZW5kIGRvCi0gIGVuZCBkbwotZW5kIGRvCi1pZiAoayAvPSA1MykgdGhlbgotICBwcmlu dCAqLCBrLCA1MwotICBlcnJvciBzdG9wCi1lbmRpZgotCi1lbmQKLWVuZCBtb2R1bGUgbQot Ci1wcm9ncmFtIG1haW4KLSAgdXNlIG0KLSAgaW1wbGljaXQgbm9uZSAodHlwZSwgZXh0ZXJu YWwpCi0gIGNhbGwgbGFzdHByaXZhdGVfY2hlY2tfc2ltZF8xCi0gIGNhbGwgbGFzdHByaXZh dGVfY2hlY2tfZG9fc2ltZF8xCi0gIGNhbGwgbGFzdHByaXZhdGVfY2hlY2tfZG9fMQotICBj YWxsIGxhc3Rwcml2YXRlX2NoZWNrXzIKLWVuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0 c3VpdGUvbGliZ29tcC5mb3J0cmFuL25vbi1yZWN0YW5ndWxhci1sb29wLTUuZjkwIGIvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL25vbi1yZWN0YW5ndWxhci1sb29wLTUu ZjkwCmluZGV4IDY0M2FiNzk2YTg0Li4wZTI1MWYyNjNjOCAxMDA2NDQKLS0tIGEvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL25vbi1yZWN0YW5ndWxhci1sb29wLTUuZjkw CisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9ub24tcmVjdGFuZ3Vs YXItbG9vcC01LmY5MApAQCAtMiwyNyArMiw0MSBAQAogISB7IGRnLWFkZGl0aW9uYWwtb3B0 aW9ucyAiLW1zc2UyIiB7IHRhcmdldCBzc2UyX3J1bnRpbWUgfSB9CiAhIHsgZGctYWRkaXRp b25hbC1vcHRpb25zICItbWF2eCIgeyB0YXJnZXQgYXZ4X3J1bnRpbWUgfSB9CiAKLSEgUFIg Zm9ydHJhbi8xMDc0MjQKKyEgUFIgZm9ydHJhbi8xMDc0MjQgLSBvcmlnaW5hbCBQUgorISBQ UiBmb3J0cmFuLzExMDczNSAtIFBSIHRvIGltcGxlbWVudCB0aGUgZmVhdHVyZSBiZWxvdwog CiAhIE5vbnJlY3Rhbmd1bGFyIGxvb3AgbmVzdHMgY2hlY2tzCiAKK2ludGVnZXIgOjogc3Rl cAorc3RlcCA9IC0xCiAhJG9tcCBzaW1kIGNvbGxhcHNlKDIpCiBkbyBpID0gMSwgMTAKLSAg ZG8gaiA9IGksIDEwLCAyICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1wbGVtZW50ZWQ6 IG5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRoYW4gY29uc3Rh bnQgMSBvciAtMSBmb3IgJ2onIiB9CisgIGRvIGogPSBpLCAxMCwgc3RlcCAgISB7IGRnLW1l c3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0 IHdpdGggbm9uLWNvbnN0YW50IHN0ZXAgZm9yICdqJyIgfQogICBlbmQgZG8KIGVuZCBkbwog CitzdGVwID0gMwogISRvbXAgZG8gY29sbGFwc2UoMikgbGFzdHByaXZhdGUoaikgICEgeyBk Zy1lcnJvciAibGFzdHByaXZhdGUgdmFyaWFibGUgJ2onIGlzIHByaXZhdGUgaW4gb3V0ZXIg Y29udGV4dCIgfQogZG8gaSA9IDEsIDEwCi0gIGRvIGogPSBpLCAxMCwgMiAgISB7IGRnLW1l c3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0 IHdpdGggc3RlcCBvdGhlciB0aGFuIGNvbnN0YW50IDEgb3IgLTEgZm9yICdqJyIgfQorICBk byBqID0gaSwgMTAsIHN0ZXAgICEgeyBkZy1tZXNzYWdlICJzb3JyeSwgdW5pbXBsZW1lbnRl ZDogbm9uLXJlY3Rhbmd1bGFyIGxvb3AgbmVzdCB3aXRoIG5vbi1jb25zdGFudCBzdGVwIGZv ciAnaiciIH0KICAgZW5kIGRvCiBlbmQgZG8KIGlmIChpIC89IDExKSBzdG9wIDEKIAorc3Rl cCA9IC01CiAhJG9tcCBzaW1kIGNvbGxhcHNlKDIpIGxhc3Rwcml2YXRlKGopCiBkbyBpID0g MSwgMTAKLSAgZG8gaiA9IGksIDEwLCAyICAhIHsgZGctbWVzc2FnZSAic29ycnksIHVuaW1w bGVtZW50ZWQ6IG5vbi1yZWN0YW5ndWxhciBsb29wIG5lc3Qgd2l0aCBzdGVwIG90aGVyIHRo YW4gY29uc3RhbnQgMSBvciAtMSBmb3IgJ2onIiB9CisgIGRvIGogPSBpLCAxMCwgc3RlcCAg ISB7IGRnLW1lc3NhZ2UgInNvcnJ5LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIg bG9vcCBuZXN0IHdpdGggbm9uLWNvbnN0YW50IHN0ZXAgZm9yICdqJyIgfQogICBlbmQgZG8K IGVuZCBkbwogaWYgKGkgLz0gMTEpIHN0b3AgMQorCitzdGVwID0gLTUKKyEkb21wIHNpbWQg Y29sbGFwc2UoMikKK2RvIGkgPSAxLCAxMCwgc3RlcCAgISB7IGRnLW1lc3NhZ2UgInNvcnJ5 LCB1bmltcGxlbWVudGVkOiBub24tcmVjdGFuZ3VsYXIgbG9vcCBuZXN0IHdpdGggbm9uLWNv bnN0YW50IHN0ZXAgZm9yICdpJyIgfQorICBkbyBqID0gaSwgaSAgICAgICAhIHsgZGctbm90 ZSAiVXNlZCBoZXJlIiB9CisgIGVuZCBkbworZW5kIGRvCitpZiAoaSAvPSAxMSkgc3RvcCAx CisKIGVuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L25vbi1yZWN0YW5ndWxhci1sb29wLTYuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29t cC5mb3J0cmFuL25vbi1yZWN0YW5ndWxhci1sb29wLTYuZjkwCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hZTg4NWFmOTYyMwotLS0gL2Rldi9udWxsCisrKyBi L2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9ub24tcmVjdGFuZ3VsYXItbG9v cC02LmY5MApAQCAtMCwwICsxLDE5NiBAQAorISB7IGRnLWRvIHJ1biB9CishIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItbXNzZTIiIHsgdGFyZ2V0IHNzZTJfcnVudGltZSB9IH0KKyEg eyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGltZSB9 IH0KKworISBQUiBmb3J0cmFuLzEwNzQyNAorCishIE5vbnJlY3Rhbmd1bGFyIGxvb3AgbmVz dHMgY2hlY2tzCishIFRoaXMgdGVzdGNhc2UgdXNlcyBuZWdhdGl2ZSBzdGVwIHNpemVzCisK K21vZHVsZSBtCisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQorY29udGFpbnMK KworISBUaGUgJ2snIGxvb3AgdXNlcyBpIG9yIGogYXMgc3RhcnQgdmFsdWUKKyEgYnV0IGEg Y29uc3RhbnQgZW5kIHZhbHVlIHN1Y2ggdGhhdCAnbGFzdHByaXZhdGUnCishIHNob3VsZCBi ZSB3ZWxsLWRlZmluZWQKK3N1YnJvdXRpbmUgbGFzdHByaXZhdGVfY2hlY2tfc2ltZF8xCisg IGludGVnZXIgOjogbixtLHAsIGksaixrLCBvbmUKKworICBuID0gMTEKKyAgbSA9IDIzCisg IHAgPSAyNworICBvbmUgPSAxCisKKyAgISBVc2UgJ2knIG9yICdqJywgdW5pdCBzdGVwIG9u ICdpJyBvciBvbiAnaicgLT4gNCBsb29wcworICAhIFRoZW4gc2FtZSwgZXhjZXB0IHVzZSBu b24tdW5pdCBzdGVwIGZvciAnaycKKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rw cml2YXRlKGspCisgIGRvIGkgPSBuLCBvbmUsIC0xCisgICAgZG8gaiA9IG0sIG9uZSwgLTIK KyAgICAgIGRvIGsgPSBwICsgaiwgcCAtIDQxLCAtMQorICAgICAgICBpZiAoayA8IHAgLSA0 MSAub3IuIGsgPiBwK20pIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbwor ICBlbmQgZG8KKyAgaWYgKGsgLz0gcCAtIDQxIC0gMSkgZXJyb3Igc3RvcAorCisgICEkb21w IHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykKKyAgZG8gaSA9IG4sIDEsIC0yCisg ICAgZG8gaiA9IG0sIDEsIC0xCisgICAgICBkbyBrID0gcCwgaSAtIDQxLCAtMQorICAgICAg ICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8K KyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChrIC89IC00MSkgZXJyb3Igc3RvcAorCisg ICEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykKKyAgZG8gaSA9IG4sIG9u ZSwgLTIKKyAgICBkbyBqID0gbSwgb25lLCAtMQorICAgICAgZG8gayA9IHAsIGogLSA0MSwg LTEKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgdGhlbgorICAgICAgICAg ICEgcHJpbnQgKiwgaSwgaiwgayxwLCAiIC0+IGksIGosIGssIHAgICAoayA8IDEgLSA0MSAu b3IuIGsgPiBwKSIKKyAgICAgICAgICBlcnJvciBzdG9wCisgICAgICAgIGVuZCBpZgorICAg ICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSAtNDEpIGVycm9y IHN0b3AKKworICBrID0gLTQzCisgIG0gPSAwCisgICEkb21wIHNpbWQgY29sbGFwc2UoMykg bGFzdHByaXZhdGUoaykKKyAgZG8gaSA9IG0sIG9uZSwgLTIKKyAgICBkbyBqID0gbSwgb25l LCAtMQorICAgICAgZG8gayA9IHAsIGogLSA0MSwgLTEKKyAgICAgICAgaWYgKGsgPCAxIC0g NDEgLm9yLiBrID4gcCkgdGhlbgorICAgICAgICAgICEgcHJpbnQgKiwgaSwgaiwgayxwLCAi IC0+IGksIGosIGssIHAgICAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSIKKyAgICAgICAgICBl cnJvciBzdG9wCisgICAgICAgIGVuZCBpZgorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisg IGVuZCBkbworICBpZiAoayAvPSAtNDMpIGVycm9yIHN0b3AKKworICBtID0gMjMKKworICAh JG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspCisgIGRvIGkgPSBuLCBvbmUs IC0xCisgICAgZG8gaiA9IG0sIG9uZSwgLTIKKyAgICAgIGRvIGsgPSBwLCBpIC0gNDEsIC0x CisgICAgICAgIGlmIChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAg IGVuZCBkbworICAgIGVuZCBkbworICBlbmQgZG8KKyAgaWYgKGsgLz0gLTQxKSBlcnJvciBz dG9wCisKKyAgbiA9IC01CisgIGsgPSAtIDcwCisgICEkb21wIHNpbWQgY29sbGFwc2UoMykg bGFzdHByaXZhdGUoaykKKyAgZG8gaSA9IG4sIG9uZSwgLTEKKyAgICBkbyBqID0gbSwgb25l LCAtMgorICAgICAgZG8gayA9IHAsIGkgLSA0MSwgLTEKKyAgICAgICAgaWYgKGsgPCAxIC0g NDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisg IGVuZCBkbworICBpZiAoayAvPSAtNzApIGVycm9yIHN0b3AKKworICBuID0gMTEKKworICAh IFNhbWUgYnV0ICdwcml2YXRlJyBmb3IgYWxsIChpLGopIHZhcnMKKworICAhJG9tcCBzaW1k IGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIHByaXZhdGUoaSxqKQorICBkbyBpID0gbiwg b25lLCAtMQorICAgIGRvIGogPSBtLCBvbmUsIC0yCisgICAgICBkbyBrID0gcCwgaiAtIDQx LCAtMQorICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBwKSBlcnJvciBzdG9wCisg ICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlmIChrIC89IC00MSkgZXJy b3Igc3RvcAorCisgICEkb21wIHNpbWQgY29sbGFwc2UoMykgbGFzdHByaXZhdGUoaykgcHJp dmF0ZShpLGopCisgIGRvIGkgPSBuLCBvbmUsIC0yCisgICAgZG8gaiA9IG0sIG9uZSwgLTEK KyAgICAgIGRvIGsgPSBwLCBpIC0gNDEsIC0xCisgICAgICAgIGlmIChrIDwgMSAtIDQxIC5v ci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAgIGVuZCBkbworICBlbmQg ZG8KKyAgaWYgKGsgLz0gLTQxKSBlcnJvciBzdG9wCisKKyAgISRvbXAgc2ltZCBjb2xsYXBz ZSgzKSBsYXN0cHJpdmF0ZShrKSBwcml2YXRlKGksaikKKyAgZG8gaSA9IG4sIG9uZSwgLTIK KyAgICBkbyBqID0gbSwgb25lLCAtMQorICAgICAgZG8gayA9IHAsIGogLSA0MSwgLTEKKyAg ICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5k IGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSAtNDEpIGVycm9yIHN0b3AK KworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIHByaXZhdGUoaSxq KQorICBkbyBpID0gbiwgb25lLCAtMQorICAgIGRvIGogPSBtLCBvbmUsIC0yCisgICAgICBk byBrID0gcCwgaSAtIDQxLCAtMQorICAgICAgICBpZiAoayA8IDEgLSA0MSAub3IuIGsgPiBw KSBlcnJvciBzdG9wCisgICAgICBlbmQgZG8KKyAgICBlbmQgZG8KKyAgZW5kIGRvCisgIGlm IChrIC89IC00MSkgZXJyb3Igc3RvcAorCisgICEgU2FtZSAtIGJ1dCB3aXRoIGxhc3Rwcml2 YXRlKGksaikKKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxh c3Rwcml2YXRlKGksaikKKyAgZG8gaSA9IG4sIG9uZSwgLTEKKyAgICBkbyBqID0gbSwgb25l LCAtMgorICAgICAgZG8gayA9IHAsIGogLSA0MSwgLTEKKyAgICAgICAgaWYgKGsgPCAxIC0g NDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisg IGVuZCBkbworICBpZiAoayAvPSAtNDEpIGVycm9yIHN0b3AKKyAgaWYgKGkgLz0gMCAub3Iu IGogLz0gLTEpIGVycm9yIHN0b3AKKworICAhJG9tcCBzaW1kIGNvbGxhcHNlKDMpIGxhc3Rw cml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKKyAgZG8gaSA9IG4sIDEsIC0yCisgICAgZG8g aiA9IG0sIG9uZSwgLTEKKyAgICAgIGRvIGsgPSBwLCBpIC0gNDEsIC0xCisgICAgICAgIGlm IChrIDwgMSAtIDQxIC5vci4gayA+IHApIGVycm9yIHN0b3AKKyAgICAgIGVuZCBkbworICAg IGVuZCBkbworICBlbmQgZG8KKyAgaWYgKGsgLz0gLTQxKSBlcnJvciBzdG9wCisgIGlmIChp IC89IC0xIC5vci4gaiAvPSAwKSBlcnJvciBzdG9wCisKKyAgISRvbXAgc2ltZCBjb2xsYXBz ZSgzKSBsYXN0cHJpdmF0ZShrKSBsYXN0cHJpdmF0ZShpLGopCisgIGRvIGkgPSBuLCAxLCAt MgorICAgIGRvIGogPSBtLCAxLCAtMQorICAgICAgZG8gayA9IHAsIGogLSA0MSwgLTEKKyAg ICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3RvcAorICAgICAgZW5k IGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSAtNDEpIGVycm9yIHN0b3AK KyAgaWYgKGkgLz0gLTEgLm9yLiBqIC89IDApIGVycm9yIHN0b3AKKworICAhJG9tcCBzaW1k IGNvbGxhcHNlKDMpIGxhc3Rwcml2YXRlKGspIGxhc3Rwcml2YXRlKGksaikKKyAgZG8gaSA9 IG4sIG9uZSwgLTEKKyAgICBkbyBqID0gbSwgb25lLCAtMgorICAgICAgZG8gayA9IHAsIGkg LSA0MSwgLTEKKyAgICAgICAgaWYgKGsgPCAxIC0gNDEgLm9yLiBrID4gcCkgZXJyb3Igc3Rv cAorICAgICAgZW5kIGRvCisgICAgZW5kIGRvCisgIGVuZCBkbworICBpZiAoayAvPSAtNDEp IGVycm9yIHN0b3AKKyAgaWYgKGkgLz0gMCAub3IuIGogLz0gLTEpIGVycm9yIHN0b3AKK2Vu ZCBzdWJyb3V0aW5lIGxhc3Rwcml2YXRlX2NoZWNrX3NpbWRfMQorZW5kIG1vZHVsZSBtCisK K3Byb2dyYW0gbWFpbgorICB1c2UgbQorICBpbXBsaWNpdCBub25lICh0eXBlLCBleHRlcm5h bCkKKyAgY2FsbCBsYXN0cHJpdmF0ZV9jaGVja19zaW1kXzEKK2VuZAo= --------------n8rZTesrUp4k6SfBXQ0zTm0W--