From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp89.ord1c.emailsrvr.com (smtp89.ord1c.emailsrvr.com [108.166.43.89]) by sourceware.org (Postfix) with ESMTPS id 425953858428 for ; Sun, 27 Feb 2022 16:53:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 425953858428 X-Auth-ID: tom@honermann.net Received: by smtp20.relay.ord1c.emailsrvr.com (Authenticated sender: tom-AT-honermann.net) with ESMTPSA id 14398E009B for ; Sun, 27 Feb 2022 11:53:28 -0500 (EST) Content-Type: multipart/mixed; boundary="------------MbBt9AkwRJoYBmnPMEOREREl" Message-ID: <2c218996-a320-9520-2ed0-8797c109ec19@honermann.net> Date: Sun, 27 Feb 2022 11:53:28 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US From: Tom Honermann Subject: [PATCH 3/3]: C++20 P0482R6 and C2X N2653: Tests for mbrtoc8, c8rtomb, char8_t To: libc-alpha X-Classification-ID: 9692af85-ddb9-4b58-ad6e-4d5f5f6c8b65-1-1 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Feb 2022 16:53:35 -0000 This is a multi-part message in MIME format. --------------MbBt9AkwRJoYBmnPMEOREREl Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch adds tests for the mbrtoc8 and c8rtomb functions adopted for C++20 via WG21 P0482R6 [1] and for C2X via WG14 N2653 [2], and for the char8_t typedef adopted for C2X via WG14 N2653 [2]. The tests for mbrtoc8 and c8rtomb specifically exercise conversion from/to Big5-HKSCS because of special cases that arise with that encoding. Big5-HKSCS defines some double byte sequences that convert to more than one Unicode code point. In order to test this, the locale dependencies for running tests under wcsmbs is expanded to include zh_HK.BIG5-HKSCS. Tested on Linux x86_64. Tom. [1]: WG21 P0482R6 "char8_t: A type for UTF-8 characters and strings (Revision 6)" https://wg21.link/p0482r6 [2]: WG14 N2653 "char8_t: A type for UTF-8 characters and strings (Revision 1)" http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm --------------MbBt9AkwRJoYBmnPMEOREREl Content-Type: text/x-patch; charset=UTF-8; name="n2653-3.patch" Content-Disposition: attachment; filename="n2653-3.patch" Content-Transfer-Encoding: base64 Y29tbWl0IDFmYjI1OWFlNmI1ZGE2ODY1MTQwYzIwM2E0ODRiMDczNWZjMTUyZDAKQXV0aG9y OiBUb20gSG9uZXJtYW5uIDx0b21AaG9uZXJtYW5uLm5ldD4KRGF0ZTogICBTdW4gRmViIDI3 IDEwOjM5OjAwIDIwMjIgLTA1MDAKCiAgICBUZXN0cyBmb3IgbWJydG9jOCgpLCBjOHJ0b21i KCksIGFuZCB0aGUgY2hhcjhfdCB0eXBlZGVmLgogICAgCiAgICBUaGlzIGNoYW5nZSBhZGRz IHRlc3RzIGZvciB0aGUgbWJydG9jOCBhbmQgYzhydG9tYiBmdW5jdGlvbnMgYWRvcHRlZCBm b3IKICAgIEMrKzIwIHZpYSBXRzIxIFAwNDgyUjYgYW5kIGZvciBDMlggdmlhIFdHMTQgTjI2 NTMsIGFuZCBmb3IgdGhlIGNoYXI4X3QKICAgIHR5cGVkZWYgYWRvcHRlZCBmb3IgQzJYIGZy b20gV0cxNCBOMjY1My4KICAgIAogICAgVGhlIHRlc3RzIGZvciBtYnJ0b2M4IGFuZCBjOHJ0 b21iIHNwZWNpZmljYWxseSBleGVyY2lzZSBjb252ZXJzaW9uIHRvCiAgICBhbmQgZnJvbSBC aWc1LUhLU0NTIGJlY2F1c2Ugb2Ygc3BlY2lhbCBjYXNlcyB0aGF0IGFyaXNlIHdpdGggdGhh dCBlbmNvZGluZy4KICAgIEJpZzUtSEtTQ1MgZGVmaW5lcyBzb21lIGRvdWJsZSBieXRlIHNl cXVlbmNlcyB0aGF0IGNvbnZlcnQgdG8gbW9yZSB0aGFuCiAgICBvbmUgVW5pY29kZSBjb2Rl IHBvaW50LiAgSW4gb3JkZXIgdG8gdGVzdCB0aGlzLCB0aGUgbG9jYWxlIGRlcGVuZGVuY2ll cwogICAgZm9yIHJ1bm5pbmcgdGVzdHMgdW5kZXIgd2NzbWJzIGlzIGV4cGFuZGVkIHRvIGlu Y2x1ZGUgemhfSEsuQklHNS1IS1NDUy4KCmRpZmYgLS1naXQgYS93Y3NtYnMvTWFrZWZpbGUg Yi93Y3NtYnMvTWFrZWZpbGUKaW5kZXggYmRhMjgxYWQ3MC4uOWI4NDQ1ZmE0OCAxMDA2NDQK LS0tIGEvd2NzbWJzL01ha2VmaWxlCisrKyBiL3djc21icy9NYWtlZmlsZQpAQCAtNTIsNiAr NTIsNyBAQCB0ZXN0cyA6PSB0c3Qtd2NzdG9mIHdjc21icy10c3QxIHRzdC13Y3NubGVuIHRz dC1idG93YyB0c3QtbWJydG93YyBcCiAJIHRzdC1jMTZjMzItMSB3Y3NhdGNsaWZmIHRzdC13 Y3N0b2wtbG9jYWxlIHRzdC13Y3N0b2QtbmFuLWxvY2FsZSBcCiAJIHRzdC13Y3N0b2Qtcm91 bmQgdGVzdC1jaGFyLXR5cGVzIHRzdC1mZ2V0d2MtYWZ0ZXItZW9mIFwKIAkgdHN0LXdjc3Rv ZC1uYW4tc2lnbiB0c3QtYzE2LXN1cnJvZ2F0ZSB0c3QtYzMyLXN0YXRlIFwKKwkgdGVzdC1j aGFyOC10eXBlIHRlc3QtbWJydG9jOCB0ZXN0LWM4cnRvbWIgXAogCSAkKGFkZHByZWZpeCB0 ZXN0LSwkKHN0cm9wLXRlc3RzKSkgdHN0LW1ic3Rvd2NzIFwKIAkgdHN0LXdwcmludGYtYmlu YXJ5CiAKQEAgLTU5LDcgKzYwLDcgQEAgaW5jbHVkZSAuLi9SdWxlcwogCiBpZmVxICgkKHJ1 bi1idWlsdC10ZXN0cykseWVzKQogTE9DQUxFUyA6PSBkZV9ERS5JU08tODg1OS0xIGRlX0RF LlVURi04IGVuX1VTLkFOU0lfWDMuNC0xOTY4IGhyX0hSLklTTy04ODU5LTIgXAotCSAgIGph X0pQLkVVQy1KUCB6aF9UVy5FVUMtVFcgdHJfVFIuVVRGLTggdHJfVFIuSVNPLTg4NTktOQor CSAgIGphX0pQLkVVQy1KUCB6aF9UVy5FVUMtVFcgdHJfVFIuVVRGLTggdHJfVFIuSVNPLTg4 NTktOSB6aF9ISy5CSUc1LUhLU0NTCiBpbmNsdWRlIC4uL2dlbi1sb2NhbGVzLm1rCiAKICQo b2JqcGZ4KXRzdC1idG93Yy5vdXQ6ICQoZ2VuLWxvY2FsZXMpCmRpZmYgLS1naXQgYS93Y3Nt YnMvdGVzdC1jOHJ0b21iLmMgYi93Y3NtYnMvdGVzdC1jOHJ0b21iLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTQ1NjRmYTAwYQotLS0gL2Rldi9udWxsCisr KyBiL3djc21icy90ZXN0LWM4cnRvbWIuYwpAQCAtMCwwICsxLDUxOSBAQAorLyogVGVzdCBj OHJ0b21iLgorICAgQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisK KyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBp ZiBub3QsIHNlZQorICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisK KyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGxv Y2FsZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWNoYXIuaD4KKyNpbmNsdWRlIDx3Y2hhci5o PgorI2luY2x1ZGUgPHN1cHBvcnQvY2hlY2suaD4KKworc3RhdGljIGludAordGVzdF90cnVu Y2F0ZWRfY29kZV91bml0X3NlcXVlbmNlICh2b2lkKQoreworICBjb25zdCBjaGFyOF90ICp1 OHM7CisgIGNoYXIgYnVmW01CX0xFTl9NQVhdOworICBtYnN0YXRlX3QgczsKKworICAvKiBN aXNzaW5nIHRyYWlsaW5nIGNvZGUgdW5pdCBmb3IgYSB0d28gY29kZSBieXRlIHVuaXQgc2Vx dWVuY2UuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx4QzIiOworICBtZW1z ZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChz KSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVf dCkgIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAwOworICBURVNU X0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIC0xKTsgLyog Tm8gdHJhaWxpbmcgY29kZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNF USk7CisKKyAgLyogTWlzc2luZyBmaXJzdCB0cmFpbGluZyBjb2RlIHVuaXQgZm9yIGEgdGhy ZWUgYnl0ZSBjb2RlIHVuaXQgc2VxdWVuY2UuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhf dCopIHU4Ilx4RTAiOworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVt c2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVm LCB1OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8K KyAgZXJybm8gPSAwOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAm cyksIChzaXplX3QpIC0xKTsgLyogTm8gdHJhaWxpbmcgY29kZSB1bml0ICovCisgIFRFU1Rf Q09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisKKyAgLyogTWlzc2luZyBzZWNvbmQgdHJhaWxp bmcgY29kZSB1bml0IGZvciBhIHRocmVlIGJ5dGUgY29kZSB1bml0IHNlcXVlbmNlLiAgKi8K KyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJceEUwXHhBMCI7CisgIG1lbXNldCAoYnVm LCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAg VEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAgMCk7 IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1 ZiwgdThzWzFdLCAmcyksIChzaXplX3QpICAwKTsgLyogMm5kIGJ5dGUgcHJvY2Vzc2VkICov CisgIGVycm5vID0gMDsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1syXSwg JnMpLCAoc2l6ZV90KSAtMSk7IC8qIE5vIHRyYWlsaW5nIGNvZGUgdW5pdCAqLworICBURVNU X0NPTVBBUkUgKGVycm5vLCBFSUxTRVEpOworCisgIC8qIE1pc3NpbmcgZmlyc3QgdHJhaWxp bmcgY29kZSB1bml0IGZvciBhIGZvdXIgYnl0ZSBjb2RlIHVuaXQgc2VxdWVuY2UuICAqLwor ICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx4RjAiOworICBtZW1zZXQgKGJ1ZiwgMCwg c2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1Rf Q09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAvKiAx c3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAwOworICBURVNUX0NPTVBBUkUgKGM4 cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIC0xKTsgLyogTm8gdHJhaWxpbmcg Y29kZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisKKyAgLyog TWlzc2luZyBzZWNvbmQgdHJhaWxpbmcgY29kZSB1bml0IGZvciBhIGZvdXIgYnl0ZSBjb2Rl IHVuaXQgc2VxdWVuY2UuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx4RjBc eDkwIjsKKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMs IDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBd LCAmcyksIChzaXplX3QpICAwKTsgLyogMXN0IGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1Rf Q09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgIDApOyAvKiAy bmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAwOworICBURVNUX0NPTVBBUkUgKGM4 cnRvbWIgKGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3QpIC0xKTsgLyogTm8gdHJhaWxpbmcg Y29kZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisKKyAgLyog TWlzc2luZyB0aGlyZCB0cmFpbGluZyBjb2RlIHVuaXQgZm9yIGEgZm91ciBieXRlIGNvZGUg dW5pdCBzZXF1ZW5jZS4gICovCisgIHU4cyA9IChjb25zdCBjaGFyOF90KikgdTgiXHhGMFx4 OTBceDgwIjsKKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAo JnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThz WzBdLCAmcyksIChzaXplX3QpICAwKTsgLyogMXN0IGJ5dGUgcHJvY2Vzc2VkICovCisgIFRF U1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgIDApOyAv KiAybmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYs IHU4c1syXSwgJnMpLCAoc2l6ZV90KSAgMCk7IC8qIDNyZCBieXRlIHByb2Nlc3NlZCAqLwor ICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbM10sICZz KSwgKHNpemVfdCkgLTEpOyAvKiBObyB0cmFpbGluZyBjb2RlIHVuaXQgKi8KKyAgVEVTVF9D T01QQVJFIChlcnJubywgRUlMU0VRKTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dAordGVzdF9pbnZhbGlkX3RyYWlsaW5nX2NvZGVfdW5pdF9zZXF1ZW5jZSAodm9pZCkKK3sK KyAgY29uc3QgY2hhcjhfdCAqdThzOworICBjaGFyIGJ1ZltNQl9MRU5fTUFYXTsKKyAgbWJz dGF0ZV90IHM7CisKKyAgLyogSW52YWxpZCB0cmFpbGluZyBjb2RlIHVuaXQgZm9yIGEgdHdv IGNvZGUgYnl0ZSB1bml0IHNlcXVlbmNlLiAgKi8KKyAgdThzID0gKGNvbnN0IGNoYXI4X3Qq KSB1OCJceEMyXHhDMCI7CisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBt ZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChi dWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAgMCk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAq LworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0s ICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlkIHRyYWlsaW5nIGNvZGUgdW5pdCAqLwor ICBURVNUX0NPTVBBUkUgKGVycm5vLCBFSUxTRVEpOworCisgIC8qIEludmFsaWQgZmlyc3Qg dHJhaWxpbmcgY29kZSB1bml0IGZvciBhIHRocmVlIGJ5dGUgY29kZSB1bml0IHNlcXVlbmNl LiAgKi8KKyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJceEUwXHhDMCI7CisgIG1lbXNl dCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMp KTsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90 KSAgMCk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7CisgIFRFU1Rf Q09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJ bnZhbGlkIHRyYWlsaW5nIGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUgKGVycm5vLCBF SUxTRVEpOworCisgIC8qIEludmFsaWQgc2Vjb25kIHRyYWlsaW5nIGNvZGUgdW5pdCBmb3Ig YSB0aHJlZSBieXRlIGNvZGUgdW5pdCBzZXF1ZW5jZS4gICovCisgIHU4cyA9IChjb25zdCBj aGFyOF90KikgdTgiXHhFMFx4QTBceEMwIjsKKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAo YnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUg KGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChzaXplX3QpICAwKTsgLyogMXN0IGJ5dGUg cHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZz KSwgKHNpemVfdCkgIDApOyAvKiAybmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAw OworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3Qp IC0xKTsgLyogSW52YWxpZCB0cmFpbGluZyBjb2RlIHVuaXQgKi8KKyAgVEVTVF9DT01QQVJF IChlcnJubywgRUlMU0VRKTsKKworICAvKiBJbnZhbGlkIGZpcnN0IHRyYWlsaW5nIGNvZGUg dW5pdCBmb3IgYSBmb3VyIGJ5dGUgY29kZSB1bml0IHNlcXVlbmNlLiAgKi8KKyAgdThzID0g KGNvbnN0IGNoYXI4X3QqKSB1OCJceEYwXHhDMCI7CisgIG1lbXNldCAoYnVmLCAwLCBzaXpl b2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01Q QVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAgMCk7IC8qIDFzdCBi eXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9t YiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlkIHRyYWlsaW5n IGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUgKGVycm5vLCBFSUxTRVEpOworCisgIC8q IEludmFsaWQgc2Vjb25kIHRyYWlsaW5nIGNvZGUgdW5pdCBmb3IgYSBmb3VyIGJ5dGUgY29k ZSB1bml0IHNlcXVlbmNlLiAgKi8KKyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJceEYw XHg5MFx4QzAiOworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0 ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1 OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAg VEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAgMCk7 IC8qIDJuZCBieXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFS RSAoYzhydG9tYiAoYnVmLCB1OHNbMl0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlk IHRyYWlsaW5nIGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUgKGVycm5vLCBFSUxTRVEp OworCisgIC8qIEludmFsaWQgdGhpcmQgdHJhaWxpbmcgY29kZSB1bml0IGZvciBhIGZvdXIg Ynl0ZSBjb2RlIHVuaXQgc2VxdWVuY2UuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCop IHU4Ilx4RjBceDkwXHg4MFx4QzAiOworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYp KTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhy dG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAvKiAxc3QgYnl0ZSBwcm9j ZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAo c2l6ZV90KSAgMCk7IC8qIDJuZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUg KGM4cnRvbWIgKGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3QpICAwKTsgLyogM3JkIGJ5dGUg cHJvY2Vzc2VkICovCisgIGVycm5vID0gMDsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChi dWYsIHU4c1szXSwgJnMpLCAoc2l6ZV90KSAtMSk7IC8qIEludmFsaWQgdHJhaWxpbmcgY29k ZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisKKyAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQKK3Rlc3RfbG9uZV90cmFpbGluZ19jb2RlX3VuaXRzICh2 b2lkKQoreworICBjb25zdCBjaGFyOF90ICp1OHM7CisgIGNoYXIgYnVmW01CX0xFTl9NQVhd OworICBtYnN0YXRlX3QgczsKKworICAvKiBMb25lIHRyYWlsaW5nIGNvZGUgdW5pdC4gICov CisgIHU4cyA9IChjb25zdCBjaGFyOF90KikgdTgiXHg4MCI7CisgIG1lbXNldCAoYnVmLCAw LCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgZXJy bm8gPSAwOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChz aXplX3QpIC0xKTsgLyogTG9uZSB0cmFpbGluZyBjb2RlIHVuaXQgKi8KKyAgVEVTVF9DT01Q QVJFIChlcnJubywgRUlMU0VRKTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAor dGVzdF9vdmVybG9uZ19lbmNvZGluZyAodm9pZCkKK3sKKyAgY29uc3QgY2hhcjhfdCAqdThz OworICBjaGFyIGJ1ZltNQl9MRU5fTUFYXTsKKyAgbWJzdGF0ZV90IHM7CisKKyAgLyogVHdv IGJ5dGUgb3ZlcmxvbmcgZW5jb2RpbmcuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCop IHU4Ilx4QzBceDgwIjsKKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1l bXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFS RSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlk IGxlYWQgY29kZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisK KyAgLyogVHdvIGJ5dGUgb3ZlcmxvbmcgZW5jb2RpbmcuICAqLworICB1OHMgPSAoY29uc3Qg Y2hhcjhfdCopIHU4Ilx4QzFceDgwIjsKKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVm KSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBlcnJubyA9IDA7CisgIFRF U1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgLTEpOyAv KiBJbnZhbGlkIGxlYWQgY29kZSB1bml0ICovCisgIFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJ TFNFUSk7CisKKyAgLyogVGhyZWUgYnl0ZSBvdmVybG9uZyBlbmNvZGluZy4gICovCisgIHU4 cyA9IChjb25zdCBjaGFyOF90KikgdTgiXHhFMFx4OUZceEJGIjsKKyAgbWVtc2V0IChidWYs IDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBU RVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChzaXplX3QpICAwKTsg LyogRmlyc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAwOworICBURVNUX0NPTVBB UkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIC0xKTsgLyogSW52YWxp ZCB0cmFpbGluZyBjb2RlIHVuaXQgKi8KKyAgVEVTVF9DT01QQVJFIChlcnJubywgRUlMU0VR KTsKKworICAvKiBGb3VyIGJ5dGUgb3ZlcmxvbmcgZW5jb2RpbmcuICAqLworICB1OHMgPSAo Y29uc3QgY2hhcjhfdCopIHU4Ilx4RjBceDhGXHhCRlx4QkYiOworICBtZW1zZXQgKGJ1Ziwg MCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRF U1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAv KiBGaXJzdCBieXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFS RSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlk IHRyYWlsaW5nIGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUgKGVycm5vLCBFSUxTRVEp OworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0ZXN0X3N1cnJvZ2F0ZV9yYW5n ZSAodm9pZCkKK3sKKyAgY29uc3QgY2hhcjhfdCAqdThzOworICBjaGFyIGJ1ZltNQl9MRU5f TUFYXTsKKyAgbWJzdGF0ZV90IHM7CisKKyAgLyogV291bGQgZW5jb2RlIFUrRDgwMC4gICov CisgIHU4cyA9IChjb25zdCBjaGFyOF90KikgdTgiXHhFRFx4QTBceDgwIjsKKyAgbWVtc2V0 IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykp OworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChzaXplX3Qp ICAwKTsgLyogRmlyc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgZXJybm8gPSAwOworICBURVNU X0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIC0xKTsgLyog SW52YWxpZCB0cmFpbGluZyBjb2RlIHVuaXQgKi8KKyAgVEVTVF9DT01QQVJFIChlcnJubywg RUlMU0VRKTsKKworICAvKiBXb3VsZCBlbmNvZGUgVStERkZGLiAgKi8KKyAgdThzID0gKGNv bnN0IGNoYXI4X3QqKSB1OCJceEVEXHhCRlx4QkYiOworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6 ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09N UEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgIDApOyAvKiBGaXJz dCBieXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhy dG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlkIHRyYWls aW5nIGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUgKGVycm5vLCBFSUxTRVEpOworCisg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0ZXN0X291dF9vZl9yYW5nZV9lbmNvZGlu ZyAodm9pZCkKK3sKKyAgY29uc3QgY2hhcjhfdCAqdThzOworICBjaGFyIGJ1ZltNQl9MRU5f TUFYXTsKKyAgbWJzdGF0ZV90IHM7CisKKyAgLyogV291bGQgZW5jb2RlIFUrMDAxMTAwMDAu ICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx4RjRceDkwXHg4MFx4ODAiOwor ICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6 ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwg KHNpemVfdCkgIDApOyAvKiBGaXJzdCBieXRlIHByb2Nlc3NlZCAqLworICBlcnJubyA9IDA7 CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkg LTEpOyAvKiBJbnZhbGlkIHRyYWlsaW5nIGNvZGUgdW5pdCAqLworICBURVNUX0NPTVBBUkUg KGVycm5vLCBFSUxTRVEpOworCisgIC8qIFdvdWxkIGVuY29kZSBVKzAwMTQwMDAwLiAgKi8K KyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJceEY1XHg5MFx4ODBceDgwIjsKKyAgbWVt c2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAo cykpOworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNb MF0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBJbnZhbGlkIGxlYWQgY29kZSB1bml0ICovCisg IFRFU1RfQ09NUEFSRSAoZXJybm8sIEVJTFNFUSk7CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQKK3Rlc3RfbnVsbF9vdXRwdXRfYnVmZmVyICh2b2lkKQoreworICBjaGFyIGJ1 ZltNQl9MRU5fTUFYXTsKKyAgbWJzdGF0ZV90IHM7CisKKyAgLyogTnVsbCBjaGFyYWN0ZXIg d2l0aCBhbiBpbml0aWFsIHN0YXRlLiAgKi8KKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChz KSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoTlVMTCwgdTgiWCJbMF0sICZzKSwgKHNp emVfdCkgMSk7IC8qIG51bGwgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9WRVJJRlkgKG1i c2luaXQgKCZzKSk7ICAgIC8qIEFzc2VydCB0aGUgc3RhdGUgaXMgbm93IGFuIGluaXRpYWwg c3RhdGUuICAqLworCisgIC8qIE51bGwgYnVmZmVyIHdpdGggYSBzdGF0ZSBjb3JyZXNwb25k aW5nIHRvIGFuIGluY29tcGxldGVseSByZWFkIGNvZGUKKyAgICAgdW5pdCBzZXF1ZW5jZS4g IEluIHRoaXMgY2FzZSwgYW4gZXJyb3Igb2NjdXJzIHNpbmNlIGluc3VmZmljaWVudAorICAg ICBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdG8gY29tcGxldGUgdGhlIGFscmVhZHkgc3Rh cnRlZCBjb2RlIHVuaXQKKyAgICAgc2VxdWVuY2UgYW5kIHJldHVybiB0byB0aGUgaW5pdGlh bCBzdGF0ZS4gICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1z ZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYs IHU4Ilx4QzIiWzBdLCAmcyksIChzaXplX3QpICAwKTsgIC8qIDFzdCBieXRlIHByb2Nlc3Nl ZCAqLworICBlcnJubyA9IDA7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoTlVMTCwgdTgi XHg4MCJbMF0sICZzKSwgKHNpemVfdCkgLTEpOyAvKiBObyB0cmFpbGluZyBjb2RlIHVuaXQg Ki8KKyAgVEVTVF9DT01QQVJFIChlcnJubywgRUlMU0VRKTsKKworICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludAordGVzdF91dGY4ICh2b2lkKQoreworICBjb25zdCBjaGFyOF90ICp1 OHM7CisgIGNoYXIgYnVmW01CX0xFTl9NQVhdOworICBtYnN0YXRlX3QgczsKKworICBURVNU X1ZFUklGWV9FWElUIChzZXRsb2NhbGUgKExDX0FMTCwgImRlX0RFLlVURi04IikgIT0gTlVM TCk7CisKKyAgLyogTnVsbCBjaGFyYWN0ZXIuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhf dCopIHU4Ilx4MDAiOyAvKiBVKzAwMDAgPT4gMHgwMCAqLworICBtZW1zZXQgKGJ1ZiwgMCwg c2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1Rf Q09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgMSk7IC8qIDFz dCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgKGNoYXIpIDB4 MDApOworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBGaXJzdCBub24t bnVsbCBjaGFyYWN0ZXIgaW4gdGhlIGNvZGUgcG9pbnQgcmFuZ2UgdGhhdCBtYXBzIHRvIGEg c2luZ2xlCisgICAgIGNvZGUgdW5pdC4gICovCisgIHU4cyA9IChjb25zdCBjaGFyOF90Kikg dTgiXHgwMSI7IC8qIFUrMDAwMSA9PiAweDAxICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXpl b2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01Q QVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAxKTsgLyogMXN0IGJ5 dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAoY2hhcikgMHgwMSk7 CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIExhc3QgY2hhcmFjdGVy IGluIHRoZSBjb2RlIHBvaW50IHJhbmdlIHRoYXQgbWFwcyB0byBhIHNpbmdsZSBjb2RlIHVu aXQuICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx4N0YiOyAvKiBVKzAwN0Yg PT4gMHg3RiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0 ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1 OHNbMF0sICZzKSwgKHNpemVfdCkgMSk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBU RVNUX0NPTVBBUkUgKGJ1ZlswXSwgKGNoYXIpIDB4N0YpOworICBURVNUX1ZFUklGWSAobWJz aW5pdCAoJnMpKTsKKworICAvKiBGaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGNvZGUgcG9pbnQg cmFuZ2UgdGhhdCBtYXBzIHRvIHR3byBjb2RlIHVuaXRzLiAgKi8KKyAgdThzID0gKGNvbnN0 IGNoYXI4X3QqKSB1OCJceEMyXHg4MCI7IC8qIFUrMDA4MCA9PiAweEMyIDB4ODAgKi8KKyAg bWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVv ZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChz aXplX3QpIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChj OHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAyKTsgLyogMm5kIGJ5dGUgcHJv Y2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAoY2hhcikgMHhDMik7CisgIFRF U1RfQ09NUEFSRSAoYnVmWzFdLCAoY2hhcikgMHg4MCk7CisgIFRFU1RfVkVSSUZZIChtYnNp bml0ICgmcykpOworCisgIC8qIExhc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBvaW50IHJh bmdlIHRoYXQgbWFwcyB0byB0d28gY29kZSB1bml0cy4gICovCisgIHU4cyA9IChjb25zdCBj aGFyOF90KikgdTgiXHUwN0ZGIjsgLyogVSswN0ZGID0+IDB4REYgMHhCRiAqLworICBtZW1z ZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChz KSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVf dCkgMCk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGM4cnRv bWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIDIpOyAvKiAybmQgYnl0ZSBwcm9jZXNz ZWQgKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIChjaGFyKSAweERGKTsKKyAgVEVTVF9D T01QQVJFIChidWZbMV0sIChjaGFyKSAweEJGKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQg KCZzKSk7CisKKyAgLyogRmlyc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBvaW50IHJhbmdl IHRoYXQgbWFwcyB0byB0aHJlZSBjb2RlIHVuaXRzLiAgKi8KKyAgdThzID0gKGNvbnN0IGNo YXI4X3QqKSB1OCJcdTA4MDAiOyAvKiBVKzA4MDAgPT4gMHhFMCAweEEwIDB4ODAgKi8KKyAg bWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVv ZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChz aXplX3QpIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChj OHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogMm5kIGJ5dGUgcHJv Y2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMl0sICZzKSwg KHNpemVfdCkgMyk7IC8qIDNyZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUg KGJ1ZlswXSwgKGNoYXIpIDB4RTApOworICBURVNUX0NPTVBBUkUgKGJ1ZlsxXSwgKGNoYXIp IDB4QTApOworICBURVNUX0NPTVBBUkUgKGJ1ZlsyXSwgKGNoYXIpIDB4ODApOworICBURVNU X1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBMYXN0IGNoYXJhY3RlciBpbiB0aGUg Y29kZSBwb2ludCByYW5nZSB0aGF0IG1hcHMgdG8gdGhyZWUgY29kZSB1bml0cworICAgICBi ZWZvcmUgdGhlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IHJhbmdlLiAgKi8KKyAgdThzID0gKGNv bnN0IGNoYXI4X3QqKSB1OCJcdUQ3RkYiOyAvKiBVK0Q3RkYgPT4gMHhFRCAweDlGIDB4QkYg Ki8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAs IHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAm cyksIChzaXplX3QpIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01Q QVJFIChjOHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogMm5kIGJ5 dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMl0s ICZzKSwgKHNpemVfdCkgMyk7IC8qIDNyZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NP TVBBUkUgKGJ1ZlswXSwgKGNoYXIpIDB4RUQpOworICBURVNUX0NPTVBBUkUgKGJ1ZlsxXSwg KGNoYXIpIDB4OUYpOworICBURVNUX0NPTVBBUkUgKGJ1ZlsyXSwgKGNoYXIpIDB4QkYpOwor ICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBGaXJzdCBjaGFyYWN0ZXIg aW4gdGhlIGNvZGUgcG9pbnQgcmFuZ2UgdGhhdCBtYXBzIHRvIHRocmVlIGNvZGUgdW5pdHMK KyAgICAgYWZ0ZXIgdGhlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IHJhbmdlLiAgKi8KKyAgdThz ID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJcdUUwMDAiOyAvKiBVK0UwMDAgPT4gMHhFRSAweDgw IDB4ODAgKi8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAo JnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThz WzBdLCAmcyksIChzaXplX3QpIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVT VF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyog Mm5kIGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1 OHNbMl0sICZzKSwgKHNpemVfdCkgMyk7IC8qIDNyZCBieXRlIHByb2Nlc3NlZCAqLworICBU RVNUX0NPTVBBUkUgKGJ1ZlswXSwgKGNoYXIpIDB4RUUpOworICBURVNUX0NPTVBBUkUgKGJ1 ZlsxXSwgKGNoYXIpIDB4ODApOworICBURVNUX0NPTVBBUkUgKGJ1ZlsyXSwgKGNoYXIpIDB4 ODApOworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBOb3QgYSBCT00u ICAqLworICB1OHMgPSAoY29uc3QgY2hhcjhfdCopIHU4Ilx1RkVGRiI7IC8qIFUrRkVGRiA9 PiAweEVGIDB4QkIgMHhCRiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsK KyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9t YiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgMCk7IC8qIDFzdCBieXRlIHByb2Nlc3Nl ZCAqLworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXpl X3QpIDApOyAvKiAybmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0 b21iIChidWYsIHU4c1syXSwgJnMpLCAoc2l6ZV90KSAzKTsgLyogM3JkIGJ5dGUgcHJvY2Vz c2VkICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAoY2hhcikgMHhFRik7CisgIFRFU1Rf Q09NUEFSRSAoYnVmWzFdLCAoY2hhcikgMHhCQik7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzJd LCAoY2hhcikgMHhCRik7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8q IFJlcGxhY2VtZW50IGNoYXJhY3Rlci4gICovCisgIHU4cyA9IChjb25zdCBjaGFyOF90Kikg dTgiXHVGRkZEIjsgLyogVStGRkZEID0+IDB4RUYgMHhCRiAweEJEICovCisgIG1lbXNldCAo YnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsK KyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAw KTsgLyogMXN0IGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAo YnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkgMCk7IC8qIDJuZCBieXRlIHByb2Nlc3NlZCAq LworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3Qp IDMpOyAvKiAzcmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0s IChjaGFyKSAweEVGKTsKKyAgVEVTVF9DT01QQVJFIChidWZbMV0sIChjaGFyKSAweEJGKTsK KyAgVEVTVF9DT01QQVJFIChidWZbMl0sIChjaGFyKSAweEJEKTsKKyAgVEVTVF9WRVJJRlkg KG1ic2luaXQgKCZzKSk7CisKKyAgLyogTGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNvZGUgcG9p bnQgcmFuZ2UgdGhhdCBtYXBzIHRvIHRocmVlIGNvZGUgdW5pdHMuICAqLworICB1OHMgPSAo Y29uc3QgY2hhcjhfdCopIHU4Ilx1RkZGRiI7IC8qIFUrRkZGRiA9PiAweEVGIDB4QkYgMHhC RiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywg MCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMF0s ICZzKSwgKHNpemVfdCkgMCk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NP TVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAmcyksIChzaXplX3QpIDApOyAvKiAybmQg Ynl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1sy XSwgJnMpLCAoc2l6ZV90KSAzKTsgLyogM3JkIGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1Rf Q09NUEFSRSAoYnVmWzBdLCAoY2hhcikgMHhFRik7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzFd LCAoY2hhcikgMHhCRik7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzJdLCAoY2hhcikgMHhCRik7 CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIEZpcnN0IGNoYXJhY3Rl ciBpbiB0aGUgY29kZSBwb2ludCByYW5nZSB0aGF0IG1hcHMgdG8gZm91ciBjb2RlIHVuaXRz LiAgKi8KKyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJcVTAwMDEwMDAwIjsgLyogVSsx MDAwMCA9PiAweEYwIDB4OTAgMHg4MCAweDgwICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXpl b2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01Q QVJFIChjOHJ0b21iIChidWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogMXN0IGJ5 dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0s ICZzKSwgKHNpemVfdCkgMCk7IC8qIDJuZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NP TVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3QpIDApOyAvKiAzcmQg Ynl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1sz XSwgJnMpLCAoc2l6ZV90KSA0KTsgLyogNHRoIGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1Rf Q09NUEFSRSAoYnVmWzBdLCAoY2hhcikgMHhGMCk7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzFd LCAoY2hhcikgMHg5MCk7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzJdLCAoY2hhcikgMHg4MCk7 CisgIFRFU1RfQ09NUEFSRSAoYnVmWzNdLCAoY2hhcikgMHg4MCk7CisgIFRFU1RfVkVSSUZZ IChtYnNpbml0ICgmcykpOworCisgIC8qIExhc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBv aW50IHJhbmdlIHRoYXQgbWFwcyB0byBmb3VyIGNvZGUgdW5pdHMuICAqLworICB1OHMgPSAo Y29uc3QgY2hhcjhfdCopIHU4IlxVMDAxMEZGRkYiOyAvKiBVKzEwRkZGRiA9PiAweEY0IDB4 OEYgMHhCRiAweEJGICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBt ZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChi dWYsIHU4c1swXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogMXN0IGJ5dGUgcHJvY2Vzc2VkICov CisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMV0sICZzKSwgKHNpemVfdCkg MCk7IC8qIDJuZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIg KGJ1ZiwgdThzWzJdLCAmcyksIChzaXplX3QpIDApOyAvKiAzcmQgYnl0ZSBwcm9jZXNzZWQg Ki8KKyAgVEVTVF9DT01QQVJFIChjOHJ0b21iIChidWYsIHU4c1szXSwgJnMpLCAoc2l6ZV90 KSA0KTsgLyogNHRoIGJ5dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBd LCAoY2hhcikgMHhGNCk7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzFdLCAoY2hhcikgMHg4Rik7 CisgIFRFU1RfQ09NUEFSRSAoYnVmWzJdLCAoY2hhcikgMHhCRik7CisgIFRFU1RfQ09NUEFS RSAoYnVmWzNdLCAoY2hhcikgMHhCRik7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykp OworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0ZXN0X2JpZzVfaGtzY3MgKHZv aWQpCit7CisgIGNvbnN0IGNoYXI4X3QgKnU4czsKKyAgY2hhciBidWZbTUJfTEVOX01BWF07 CisgIG1ic3RhdGVfdCBzOworCisgIFRFU1RfVkVSSUZZX0VYSVQgKHNldGxvY2FsZSAoTENf QUxMLCAiemhfSEsuQklHNS1IS1NDUyIpICE9IE5VTEwpOworCisgIC8qIEEgcGFpciBvZiB0 d28gYnl0ZSBVVEYtOCBjb2RlIHVuaXQgc2VxdWVuY2VzIHRoYXQgbWFwIGEgVW5pY29kZSBj b2RlCisgICAgIHBvaW50IGFuZCBjb21iaW5pbmcgY2hhcmFjdGVyIHRvIGEgc2luZ2xlIGRv dWJsZSBieXRlIGNoYXJhY3Rlci4gICovCisgIHU4cyA9IChjb25zdCBjaGFyOF90KikgdTgi XHUwMENBXHUwMzA0IjsgLyogVSswMENBIFUrMDMwNCA9PiAweDg4IDB4NjIgKi8KKyAgbWVt c2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAo cykpOworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzBdLCAmcyksIChzaXpl X3QpIDApOyAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChjOHJ0 b21iIChidWYsIHU4c1sxXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogMm5kIGJ5dGUgcHJvY2Vz c2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbMl0sICZzKSwgKHNp emVfdCkgMCk7IC8qIDNyZCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGM4 cnRvbWIgKGJ1ZiwgdThzWzNdLCAmcyksIChzaXplX3QpIDIpOyAvKiA0dGggYnl0ZSBwcm9j ZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIChjaGFyKSAweDg4KTsKKyAgVEVT VF9DT01QQVJFIChidWZbMV0sIChjaGFyKSAweDYyKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2lu aXQgKCZzKSk7CisKKyAgLyogQW5vdGhlciBwYWlyIG9mIHR3byBieXRlIFVURi04IGNvZGUg dW5pdCBzZXF1ZW5jZXMgdGhhdCBtYXAgYSBVbmljb2RlIGNvZGUKKyAgICAgcG9pbnQgYW5k IGNvbWJpbmluZyBjaGFyYWN0ZXIgdG8gYSBzaW5nbGUgZG91YmxlIGJ5dGUgY2hhcmFjdGVy LiAgKi8KKyAgdThzID0gKGNvbnN0IGNoYXI4X3QqKSB1OCJcdTAwRUFcdTAzMEMiOyAvKiBV KzAwRUEgVSswMzBDID0+IDB4ODggMHhBNSAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9m IChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFS RSAoYzhydG9tYiAoYnVmLCB1OHNbMF0sICZzKSwgKHNpemVfdCkgMCk7IC8qIDFzdCBieXRl IHByb2Nlc3NlZCAqLworICBURVNUX0NPTVBBUkUgKGM4cnRvbWIgKGJ1ZiwgdThzWzFdLCAm cyksIChzaXplX3QpIDApOyAvKiAybmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01Q QVJFIChjOHJ0b21iIChidWYsIHU4c1syXSwgJnMpLCAoc2l6ZV90KSAwKTsgLyogM3JkIGJ5 dGUgcHJvY2Vzc2VkICovCisgIFRFU1RfQ09NUEFSRSAoYzhydG9tYiAoYnVmLCB1OHNbM10s ICZzKSwgKHNpemVfdCkgMik7IC8qIDR0aCBieXRlIHByb2Nlc3NlZCAqLworICBURVNUX0NP TVBBUkUgKGJ1ZlswXSwgKGNoYXIpIDB4ODgpOworICBURVNUX0NPTVBBUkUgKGJ1ZlsxXSwg KGNoYXIpIDB4QTUpOworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICByZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorZG9fdGVzdCAodm9pZCkKK3sKKyAgdGVzdF90cnVu Y2F0ZWRfY29kZV91bml0X3NlcXVlbmNlICgpOworICB0ZXN0X2ludmFsaWRfdHJhaWxpbmdf Y29kZV91bml0X3NlcXVlbmNlICgpOworICB0ZXN0X2xvbmVfdHJhaWxpbmdfY29kZV91bml0 cyAoKTsKKyAgdGVzdF9vdmVybG9uZ19lbmNvZGluZyAoKTsKKyAgdGVzdF9zdXJyb2dhdGVf cmFuZ2UgKCk7CisgIHRlc3Rfb3V0X29mX3JhbmdlX2VuY29kaW5nICgpOworICB0ZXN0X251 bGxfb3V0cHV0X2J1ZmZlciAoKTsKKyAgdGVzdF91dGY4ICgpOworICB0ZXN0X2JpZzVfaGtz Y3MgKCk7CisgIHJldHVybiAwOworfQorCisjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZl ci5jPgpkaWZmIC0tZ2l0IGEvd2NzbWJzL3Rlc3QtY2hhcjgtdHlwZS5jIGIvd2NzbWJzL3Rl c3QtY2hhcjgtdHlwZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjY0MmM3MDQ0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi93Y3NtYnMvdGVzdC1jaGFyOC10eXBl LmMKQEAgLTAsMCArMSwzMSBAQAorLyogVGVzdCB0aGUgY2hhcjhfdCB0eXBlZGVmLgorICAg Q29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUg QyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdO VSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQor ICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDx1 Y2hhci5oPgorCisvKiBWZXJpZnkgdGhhdCB0aGUgY2hhcjhfdCB0eXBlIGlzIHJlY29nbml6 ZWQuICAqLworY2hhcjhfdCBjODsKKworc3RhdGljIGludAorZG9fdGVzdCAodm9pZCkKK3sK KyAgLyogVGhpcyBpcyBhIGNvbXBpbGF0aW9uIHRlc3QuICAqLworICByZXR1cm4gMDsKK30K KworI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KZGlmZiAtLWdpdCBhL3djc21i cy90ZXN0LW1icnRvYzguYyBiL3djc21icy90ZXN0LW1icnRvYzguYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jNTA2MTYzNWFjCi0tLSAvZGV2L251bGwKKysr IGIvd2NzbWJzL3Rlc3QtbWJydG9jOC5jCkBAIC0wLDAgKzEsNDYyIEBACisvKiBUZXN0IG1i cnRvYzguCisgICBDb3B5cmlnaHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKwor ICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlm IG5vdCwgc2VlCisgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3Rk bGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dWNoYXIuaD4KKyNpbmNs dWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHN1cHBvcnQvY2hlY2suaD4KKworc3RhdGljIGlu dAordGVzdF91dGY4ICh2b2lkKQoreworICBjb25zdCBjaGFyICptYnM7CisgIGNoYXI4X3Qg YnVmWzFdOworICBtYnN0YXRlX3QgczsKKworICBURVNUX1ZFUklGWV9FWElUIChzZXRsb2Nh bGUgKExDX0FMTCwgImRlX0RFLlVURi04IikgIT0gTlVMTCk7CisKKyAgLyogTm8gaW5wdXRz LiAgKi8KKyAgbWJzID0gIiI7CisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOwor ICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4 IChidWYsIG1icywgMCwgJnMpLCAoc2l6ZV90KSAtMik7IC8qIG5vIGlucHV0ICovCisgIFRF U1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIE51bGwgY2hhcmFjdGVyLiAgKi8K KyAgbWJzID0gIlx4MDAiOyAvKiAweDAwID0+IFUrMDAwMCAqLworICBtZW1zZXQgKGJ1Ziwg MCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRF U1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNp emVfdCkgMCk7IC8qIG51bGwgYnl0ZSB3cml0dGVuICovCisgIG1icyArPSAxOworICBURVNU X0NPTVBBUkUgKGJ1ZlswXSwgMHgwMCk7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykp OworCisgIC8qIEZpcnN0IG5vbi1udWxsIGNoYXJhY3RlciBpbiB0aGUgY29kZSBwb2ludCBy YW5nZSB0aGF0IG1hcHMgdG8gYSBzaW5nbGUKKyAgICAgY29kZSB1bml0LiAgKi8KKyAgbWJz ID0gIlx4MDEiOyAvKiAweDAxID0+IFUrMDAwMSAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6 ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09N UEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkg MSk7IC8qIDFzdCBieXRlIHByb2Nlc3NlZCAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01Q QVJFIChidWZbMF0sIDB4MDEpOworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKwor ICAvKiBMYXN0IGNoYXJhY3RlciBpbiB0aGUgY29kZSBwb2ludCByYW5nZSB0aGF0IG1hcHMg dG8gYSBzaW5nbGUgY29kZSB1bml0LiAgKi8KKyAgbWJzID0gIlx4N0YiOyAvKiAweDdGID0+ IFUrMDA3RiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0 ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBt YnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgMSk7ICAvKiAxc3QgYnl0ZSBwcm9j ZXNzZWQgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDdGKTsK KyAgVEVTVF9WRVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAgLyogRmlyc3QgY2hhcmFjdGVy IGluIHRoZSBjb2RlIHBvaW50IHJhbmdlIHRoYXQgbWFwcyB0byB0d28gY29kZSB1bml0cy4g ICovCisgIG1icyA9ICJceEMyXHg4MCI7IC8qIDB4QzIgMHg4MCA9PiBVKzAwODAgKi8KKyAg bWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVv ZiAocykpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJz KSsxLCAmcyksIChzaXplX3QpIDIpOyAgLyogMXN0IGJ5dGUgd3JpdHRlbiAqLworICBtYnMg Kz0gMjsKKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QzIpOworICBURVNUX0NPTVBBUkUg KG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsg LyogMm5kIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHg4MCk7 CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIFNhbWUgYXMgbGFzdCB0 ZXN0LCBidXQgb25lIGNvZGUgdW5pdCBhdCBhIHRpbWUuICAqLworICBtYnMgPSAiXHhDMlx4 ODAiOyAvKiAweEMyIDB4ODAgPT4gVSswMDgwICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXpl b2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01Q QVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAgICAgICAg ICAgIC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAobWJy dG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgMSk7ICAgICAgICAgICAgICAvKiAx c3QgYnl0ZSB3cml0dGVuICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKGJ1Zlsw XSwgMHhDMik7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwg KHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAybmQgYnl0ZSB3cml0dGVuICovCisgIFRF U1RfQ09NUEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQgKCZz KSk7CisKKyAgLyogTGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNvZGUgcG9pbnQgcmFuZ2UgdGhh dCBtYXBzIHRvIHR3byBjb2RlIHVuaXRzLiAgKi8KKyAgbWJzID0gIlx4REZceEJGIjsgLyog MHhERiAweEJGID0+IFUrMDdGRiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYp KTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJy dG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgMik7ICAvKiAx c3QgYnl0ZSB3cml0dGVuICovCisgIG1icyArPSAyOworICBURVNUX0NPTVBBUkUgKGJ1Zlsw XSwgMHhERik7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbiht YnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAvKiAybmQgYnl0ZSB3cml0dGVuICovCisgIFRF U1RfQ09NUEFSRSAoYnVmWzBdLCAweEJGKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQgKCZz KSk7CisKKyAgLyogU2FtZSBhcyBsYXN0IHRlc3QsIGJ1dCBvbmUgY29kZSB1bml0IGF0IGEg dGltZS4gICovCisgIG1icyA9ICJceERGXHhCRiI7IC8qIDB4REYgMHhCRiA9PiBVKzA3RkYg Ki8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAs IHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAm cyksIChzaXplX3QpIC0yKTsgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSAqLworICBtYnMg Kz0gMTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6 ZV90KSAxKTsgICAgICAgICAgICAgIC8qIDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9 IDE7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweERGKTsKKyAgVEVTVF9DT01QQVJFICht YnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAgIC8q IDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkYpOwor ICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBGaXJzdCBjaGFyYWN0ZXIg aW4gdGhlIGNvZGUgcG9pbnQgcmFuZ2UgdGhhdCBtYXBzIHRvIHRocmVlIGNvZGUgdW5pdHMu ICAqLworICBtYnMgPSB1OCJceEUwXHhBMFx4ODAiOyAvKiAweEUwIDB4QTAgMHg4MCA9PiBV KzA4MDAgKi8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAo JnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJz LCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIDMpOyAgLyogMXN0IGJ5dGUgd3JpdHRl biAqLworICBtYnMgKz0gMzsKKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4RTApOworICBU RVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChz aXplX3QpIC0zKTsgLyogMm5kIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1 ZlswXSwgMHhBMCk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxl bihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAvKiAzcmQgYnl0ZSB3cml0dGVuICovCisg IFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQg KCZzKSk7CisKKyAgLyogU2FtZSBhcyBsYXN0IHRlc3QsIGJ1dCBvbmUgY29kZSB1bml0IGF0 IGEgdGltZS4gICovCisgIG1icyA9IHU4Ilx4RTBceEEwXHg4MCI7IC8qIDB4RTAgMHhBMCAw eDgwID0+IFUrMDgwMCAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAg bWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAo YnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIpOyAgICAgICAgICAgICAvKiBpbmNvbXBs ZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJz LCAxLCAmcyksIChzaXplX3QpIC0yKTsgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSAqLwor ICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMp LCAoc2l6ZV90KSAxKTsgICAgICAgICAgICAgIC8qIDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAg bWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEUwKTsKKyAgVEVTVF9DT01Q QVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAg ICAgIC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4 QTApOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXpl X3QpIC0zKTsgICAgICAgICAgICAgLyogM3JkIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NP TVBBUkUgKGJ1ZlswXSwgMHg4MCk7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOwor CisgIC8qIExhc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBvaW50IHJhbmdlIHRoYXQgbWFw cyB0byB0aHJlZSBjb2RlIHVuaXRzCisgICAgIGJlZm9yZSB0aGUgc3Vycm9nYXRlIGNvZGUg cG9pbnQgcmFuZ2UuICAqLworICBtYnMgPSAiXHhFRFx4OUZceEJGIjsgLyogMHhFRCAweDlG IDB4QkYgPT4gVStEN0ZGICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOwor ICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4 IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAzKTsgIC8qIDFzdCBi eXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9IDM7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAw eEVEKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3RybGVuKG1icykr MSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9D T01QQVJFIChidWZbMF0sIDB4OUYpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1Ziwg bWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsgLyogM3JkIGJ5dGUgd3Jp dHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhCRik7CisgIFRFU1RfVkVSSUZZ IChtYnNpbml0ICgmcykpOworCisgIC8qIFNhbWUgYXMgbGFzdCB0ZXN0LCBidXQgb25lIGNv ZGUgdW5pdCBhdCBhIHRpbWUuICAqLworICBtYnMgPSAiXHhFRFx4OUZceEJGIjsgLyogMHhF RCAweDlGIDB4QkYgPT4gVStEN0ZGICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1 ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFICht YnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAgICAgICAgICAgIC8q IGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAo YnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIpOyAgICAgICAgICAgICAvKiBpbmNvbXBs ZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJz LCAxLCAmcyksIChzaXplX3QpIDEpOyAgICAgICAgICAgICAgLyogMXN0IGJ5dGUgd3JpdHRl biAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4RUQpOworICBU RVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0zKTsg ICAgICAgICAgICAgLyogMm5kIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1 ZlswXSwgMHg5Rik7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZz KSwgKHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAzcmQgYnl0ZSB3cml0dGVuICovCisg IFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEJGKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQg KCZzKSk7CisKKyAgLyogRmlyc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBvaW50IHJhbmdl IHRoYXQgbWFwcyB0byB0aHJlZSBjb2RlIHVuaXRzCisgICAgIGFmdGVyIHRoZSBzdXJyb2dh dGUgY29kZSBwb2ludCByYW5nZS4gICovCisgIG1icyA9ICJceEVFXHg4MFx4ODAiOyAvKiAw eEVFIDB4ODAgMHg4MCA9PiBVK0UwMDAgKi8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAo YnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUg KG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIDMpOyAg LyogMXN0IGJ5dGUgd3JpdHRlbiAqLworICBtYnMgKz0gMzsKKyAgVEVTVF9DT01QQVJFIChi dWZbMF0sIDB4RUUpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJs ZW4obWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsgLyogMm5kIGJ5dGUgd3JpdHRlbiAqLwor ICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHg4MCk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9j OCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAvKiAzcmQg Ynl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVT VF9WRVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAgLyogU2FtZSBhcyBsYXN0IHRlc3QsIGJ1 dCBvbmUgY29kZSB1bml0IGF0IGEgdGltZS4gICovCisgIG1icyA9ICJceEVFXHg4MFx4ODAi OyAvKiAweEVFIDB4ODAgMHg4MCA9PiBVK0UwMDAgKi8KKyAgbWVtc2V0IChidWYsIDAsIHNp emVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NP TVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0yKTsgICAgICAg ICAgICAgLyogaW5jb21wbGV0ZSAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFICht YnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAgICAgICAgICAgIC8q IGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAo YnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgMSk7ICAgICAgICAgICAgICAvKiAxc3QgYnl0 ZSB3cml0dGVuICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhF RSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVf dCkgLTMpOyAgICAgICAgICAgICAvKiAybmQgYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09N UEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1i cywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAgIC8qIDNyZCBieXRlIHdyaXR0 ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4ODApOworICBURVNUX1ZFUklGWSAo bWJzaW5pdCAoJnMpKTsKKworICAvKiBOb3QgYSBCT00uICAqLworICBtYnMgPSAiXHhFRlx4 QkJceEJGIjsgLyogMHhFRiAweEJCIDB4QkYgPT4gVStGRUZGICovCisgIG1lbXNldCAoYnVm LCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAg VEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAo c2l6ZV90KSAzKTsgIC8qIDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9IDM7CisgIFRF U1RfQ09NUEFSRSAoYnVmWzBdLCAweEVGKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChi dWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDJuZCBieXRl IHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkIpOworICBURVNUX0NP TVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3Qp IC0zKTsgLyogM3JkIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwg MHhCRik7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIFNhbWUgYXMg bGFzdCB0ZXN0LCBidXQgb25lIGNvZGUgdW5pdCBhdCBhIHRpbWUuICAqLworICBtYnMgPSAi XHhFRlx4QkJceEJGIjsgLyogMHhFRiAweEJCIDB4QkYgPT4gVStGRUZGICovCisgIG1lbXNl dCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMp KTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90 KSAtMik7ICAgICAgICAgICAgIC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRF U1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIpOyAg ICAgICAgICAgICAvKiBpbmNvbXBsZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBB UkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIDEpOyAgICAgICAgICAg ICAgLyogMXN0IGJ5dGUgd3JpdHRlbiAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJF IChidWZbMF0sIDB4RUYpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAx LCAmcyksIChzaXplX3QpIC0zKTsgICAgICAgICAgICAgLyogMm5kIGJ5dGUgd3JpdHRlbiAq LworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhCQik7CisgIFRFU1RfQ09NUEFSRSAobWJy dG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAz cmQgYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEJGKTsKKyAg VEVTVF9WRVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAgLyogUmVwbGFjZW1lbnQgY2hhcmFj dGVyLiAgKi8KKyAgbWJzID0gIlx4RUZceEJGXHhCRCI7IC8qIDB4RUYgMHhCRiAweEJEID0+ IFUrRkZGRCAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0 ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBt YnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgMyk7ICAvKiAxc3QgYnl0ZSB3cml0 dGVuICovCisgIG1icyArPSAzOworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhFRik7Cisg IFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwg KHNpemVfdCkgLTMpOyAvKiAybmQgYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAo YnVmWzBdLCAweEJGKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3Ry bGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDNyZCBieXRlIHdyaXR0ZW4gKi8K KyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkQpOworICBURVNUX1ZFUklGWSAobWJzaW5p dCAoJnMpKTsKKworICAvKiBTYW1lIGFzIGxhc3QgdGVzdCwgYnV0IG9uZSBjb2RlIHVuaXQg YXQgYSB0aW1lLiAgKi8KKyAgbWJzID0gIlx4RUZceEJGXHhCRCI7IC8qIDB4RUYgMHhCRiAw eEJEID0+IFUrRkZGRCAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAg bWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAo YnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIpOyAgICAgICAgICAgICAvKiBpbmNvbXBs ZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJz LCAxLCAmcyksIChzaXplX3QpIC0yKTsgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSAqLwor ICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMp LCAoc2l6ZV90KSAxKTsgICAgICAgICAgICAgIC8qIDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAg bWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEVGKTsKKyAgVEVTVF9DT01Q QVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAg ICAgIC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4 QkYpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXpl X3QpIC0zKTsgICAgICAgICAgICAgLyogM3JkIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NP TVBBUkUgKGJ1ZlswXSwgMHhCRCk7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOwor CisgIC8qIExhc3QgY2hhcmFjdGVyIGluIHRoZSBjb2RlIHBvaW50IHJhbmdlIHRoYXQgbWFw cyB0byB0aHJlZSBjb2RlIHVuaXRzLiAgKi8KKyAgbWJzID0gIlx4RUZceEJGXHhCRiI7IC8q IDB4RUYgMHhCRiAweEJGID0+IFUrRkZGRiAqLworICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9m IChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFS RSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgMyk7 ICAvKiAxc3QgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgbWJzICs9IDM7CisgIFRFU1RfQ09NUEFS RSAoYnVmWzBdLCAweEVGKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywg c3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDJuZCBieXRlIHByb2Nlc3Nl ZCAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhCRik7CisgIFRFU1RfQ09NUEFSRSAo bWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAv KiAzcmQgYnl0ZSBwcm9jZXNzZWQgKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkYp OworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBTYW1lIGFzIGxhc3Qg dGVzdCwgYnV0IG9uZSBjb2RlIHVuaXQgYXQgYSB0aW1lLiAgKi8KKyAgbWJzID0gIlx4RUZc eEJGXHhCRiI7IC8qIDB4RUYgMHhCRiAweEJGID0+IFUrRkZGRiAqLworICBtZW1zZXQgKGJ1 ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6ZW9mIChzKSk7Cisg IFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIp OyAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NP TVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0yKTsgICAgICAg ICAgICAgLyogaW5jb21wbGV0ZSAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFICht YnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAxKTsgICAgICAgICAgICAgIC8q IDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAoYnVm WzBdLCAweEVGKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMp LCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAgIC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAg VEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkYpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzgg KGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0zKTsgICAgICAgICAgICAgLyogM3JkIGJ5 dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhCRik7CisgIFRFU1Rf VkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIEZpcnN0IGNoYXJhY3RlciBpbiB0aGUg Y29kZSBwb2ludCByYW5nZSB0aGF0IG1hcHMgdG8gZm91ciBjb2RlIHVuaXRzLiAgKi8KKyAg bWJzID0gIlx4RjBceDkwXHg4MFx4ODAiOyAvKiAweEYwIDB4OTAgMHg4MCAweDgwID0+IFUr MTAwMDAgKi8KKyAgbWVtc2V0IChidWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAo JnMsIDAsIHNpemVvZiAocykpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJz LCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIDQpOyAgLyogMXN0IGJ5dGUgd3JpdHRl biAqLworICBtYnMgKz0gNDsKKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4RjApOworICBU RVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChz aXplX3QpIC0zKTsgLyogMm5kIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1 ZlswXSwgMHg5MCk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxl bihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAvKiAzcmQgYnl0ZSB3cml0dGVuICovCisg IFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4 IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDR0aCBi eXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4ODApOworICBURVNU X1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBTYW1lIGFzIGxhc3QgdGVzdCwgYnV0 IG9uZSBjb2RlIHVuaXQgYXQgYSB0aW1lLiAgKi8KKyAgbWJzID0gIlx4RjBceDkwXHg4MFx4 ODAiOyAvKiAweEYwIDB4OTAgMHg4MCAweDgwID0+IFUrMTAwMDAgKi8KKyAgbWVtc2V0IChi dWYsIDAsIHNpemVvZiAoYnVmKSk7CisgIG1lbXNldCAoJnMsIDAsIHNpemVvZiAocykpOwor ICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0y KTsgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9D T01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAgICAg ICAgICAgIC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAo bWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTIpOyAgICAgICAgICAgICAv KiBpbmNvbXBsZXRlICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKG1icnRvYzgg KGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIDEpOyAgICAgICAgICAgICAgLyogMXN0IGJ5 dGUgd3JpdHRlbiAqLworICBtYnMgKz0gMTsKKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4 RjApOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXpl X3QpIC0zKTsgICAgICAgICAgICAgLyogMm5kIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NP TVBBUkUgKGJ1ZlswXSwgMHg5MCk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBt YnMsIDEsICZzKSwgKHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAzcmQgYnl0ZSB3cml0 dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDgwKTsKKyAgVEVTVF9DT01QQVJF IChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAg IC8qIDR0aCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4ODAp OworICBURVNUX1ZFUklGWSAobWJzaW5pdCAoJnMpKTsKKworICAvKiBMYXN0IGNoYXJhY3Rl ciBpbiB0aGUgY29kZSBwb2ludCByYW5nZSB0aGF0IG1hcHMgdG8gZm91ciBjb2RlIHVuaXRz LiAgKi8KKyAgbWJzID0gIlx4RjRceDhGXHhCRlx4QkYiOyAvKiAweEY0IDB4OEYgMHhCRiAw eEJGID0+IFUrMTBGRkZGICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOwor ICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4 IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSA0KTsgIC8qIDFzdCBi eXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9IDQ7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAw eEY0KTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3RybGVuKG1icykr MSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9D T01QQVJFIChidWZbMF0sIDB4OEYpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1Ziwg bWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsgLyogM3JkIGJ5dGUgd3Jp dHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhCRik7CisgIFRFU1RfQ09NUEFS RSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMp OyAvKiA0dGggYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEJG KTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAgLyogU2FtZSBhcyBsYXN0 IHRlc3QsIGJ1dCBvbmUgY29kZSB1bml0IGF0IGEgdGltZS4gICovCisgIG1icyA9ICJceEY0 XHg4Rlx4QkZceEJGIjsgLyogMHhGNCAweDhGIDB4QkYgMHhCRiA9PiBVKzEwRkZGRiAqLwor ICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKKyAgbWVtc2V0ICgmcywgMCwgc2l6 ZW9mIChzKSk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwg KHNpemVfdCkgLTIpOyAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlICovCisgIG1icyArPSAx OworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3Qp IC0yKTsgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSAqLworICBtYnMgKz0gMTsKKyAgVEVT VF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAg ICAgICAgICAgIC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFS RSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgMSk7ICAgICAgICAgICAg ICAvKiAxc3QgYnl0ZSB3cml0dGVuICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUg KGJ1ZlswXSwgMHhGNCk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEs ICZzKSwgKHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAybmQgYnl0ZSB3cml0dGVuICov CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDhGKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0 b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAgIC8qIDNy ZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QkYpOworICBU RVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0zKTsg ICAgICAgICAgICAgLyogNHRoIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1 ZlswXSwgMHhCRik7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIHJldHVy biAwOworfQorCitzdGF0aWMgaW50Cit0ZXN0X2JpZzVfaGtzY3MgKHZvaWQpCit7CisgIGNv bnN0IGNoYXIgKm1iczsKKyAgY2hhcjhfdCBidWZbMV07CisgIG1ic3RhdGVfdCBzOworCisg IFRFU1RfVkVSSUZZX0VYSVQgKHNldGxvY2FsZSAoTENfQUxMLCAiemhfSEsuQklHNS1IS1ND UyIpICE9IE5VTEwpOworCisgIC8qIEEgZG91YmxlIGJ5dGUgY2hhcmFjdGVyIHRoYXQgbWFw cyB0byBhIHBhaXIgb2YgdHdvIGJ5dGUgVVRGLTggY29kZSB1bml0CisgICAgIHNlcXVlbmNl cy4gICovCisgIG1icyA9ICJceDg4XHg2MiI7IC8qIDB4ODggMHg2MiA9PiBVKzAwQ0EgVSsw MzA0ICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZz LCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywg c3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAyKTsgIC8qIDFzdCBieXRlIHdyaXR0ZW4g Ki8KKyAgbWJzICs9IDI7CisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEMzKTsKKyAgVEVT VF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6 ZV90KSAtMyk7IC8qIDJuZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZb MF0sIDB4OEEpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4o bWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsgLyogM3JkIGJ5dGUgd3JpdHRlbiAqLworICBU RVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhDQyk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAo YnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZzKSwgKHNpemVfdCkgLTMpOyAvKiA0dGggYnl0 ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweDg0KTsKKyAgVEVTVF9W RVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAgLyogU2FtZSBhcyBsYXN0IHRlc3QsIGJ1dCBv bmUgY29kZSB1bml0IGF0IGEgdGltZS4gICovCisgIG1icyA9ICJceDg4XHg2MiI7IC8qIDB4 ODggMHg2MiA9PiBVKzAwQ0EgVSswMzA0ICovCisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2Yg KGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJF IChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMik7ICAgICAgICAgICAg IC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9IDE7CisgIFRFU1RfQ09NUEFSRSAobWJydG9j OCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgMSk7ICAgICAgICAgICAgICAvKiAxc3Qg Ynl0ZSB3cml0dGVuICovCisgIG1icyArPSAxOworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwg MHhDMyk7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNp emVfdCkgLTMpOyAgICAgICAgICAgICAvKiAybmQgYnl0ZSB3cml0dGVuICovCisgIFRFU1Rf Q09NUEFSRSAoYnVmWzBdLCAweDhBKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYs IG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7ICAgICAgICAgICAgIC8qIDNyZCBieXRlIHdy aXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4Q0MpOworICBURVNUX0NPTVBB UkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAmcyksIChzaXplX3QpIC0zKTsgICAgICAgICAg ICAgLyogNHRoIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHg4 NCk7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0ICgmcykpOworCisgIC8qIEFub3RoZXIgZG91 YmxlIGJ5dGUgY2hhcmFjdGVyIHRoYXQgbWFwcyB0byBhIHBhaXIgb2YgdHdvIGJ5dGUgVVRG LTggY29kZQorICAgICB1bml0IHNlcXVlbmNlcy4gICovCisgIG1icyA9ICJceDg4XHhBNSI7 IC8qIDB4ODggMHhBNSA9PiBVKzAwRUEgVSswMzBDICovCisgIG1lbXNldCAoYnVmLCAwLCBz aXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBzaXplb2YgKHMpKTsKKyAgVEVTVF9D T01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90 KSAyKTsgIC8qIDFzdCBieXRlIHdyaXR0ZW4gKi8KKyAgbWJzICs9IDI7CisgIFRFU1RfQ09N UEFSRSAoYnVmWzBdLCAweEMzKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1i cywgc3RybGVuKG1icykrMSwgJnMpLCAoc2l6ZV90KSAtMyk7IC8qIDJuZCBieXRlIHdyaXR0 ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChidWZbMF0sIDB4QUEpOworICBURVNUX0NPTVBBUkUg KG1icnRvYzggKGJ1ZiwgbWJzLCBzdHJsZW4obWJzKSsxLCAmcyksIChzaXplX3QpIC0zKTsg LyogM3JkIGJ5dGUgd3JpdHRlbiAqLworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhDQyk7 CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIHN0cmxlbihtYnMpKzEsICZz KSwgKHNpemVfdCkgLTMpOyAvKiA0dGggYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFS RSAoYnVmWzBdLCAweDhDKTsKKyAgVEVTVF9WRVJJRlkgKG1ic2luaXQgKCZzKSk7CisKKyAg LyogU2FtZSBhcyBsYXN0IHRlc3QsIGJ1dCBvbmUgY29kZSB1bml0IGF0IGEgdGltZS4gICov CisgIG1icyA9ICJceDg4XHhBNSI7IC8qIDB4ODggMHhBNSA9PiBVKzAwRUEgVSswMzBDICov CisgIG1lbXNldCAoYnVmLCAwLCBzaXplb2YgKGJ1ZikpOworICBtZW1zZXQgKCZzLCAwLCBz aXplb2YgKHMpKTsKKyAgVEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMp LCAoc2l6ZV90KSAtMik7ICAgICAgICAgICAgIC8qIGluY29tcGxldGUgKi8KKyAgbWJzICs9 IDE7CisgIFRFU1RfQ09NUEFSRSAobWJydG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVf dCkgMSk7ICAgICAgICAgICAgICAvKiAxc3QgYnl0ZSB3cml0dGVuICovCisgIG1icyArPSAx OworICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHhDMyk7CisgIFRFU1RfQ09NUEFSRSAobWJy dG9jOCAoYnVmLCBtYnMsIDEsICZzKSwgKHNpemVfdCkgLTMpOyAgICAgICAgICAgICAvKiAy bmQgYnl0ZSB3cml0dGVuICovCisgIFRFU1RfQ09NUEFSRSAoYnVmWzBdLCAweEFBKTsKKyAg VEVTVF9DT01QQVJFIChtYnJ0b2M4IChidWYsIG1icywgMSwgJnMpLCAoc2l6ZV90KSAtMyk7 ICAgICAgICAgICAgIC8qIDNyZCBieXRlIHdyaXR0ZW4gKi8KKyAgVEVTVF9DT01QQVJFIChi dWZbMF0sIDB4Q0MpOworICBURVNUX0NPTVBBUkUgKG1icnRvYzggKGJ1ZiwgbWJzLCAxLCAm cyksIChzaXplX3QpIC0zKTsgICAgICAgICAgICAgLyogNHRoIGJ5dGUgd3JpdHRlbiAqLwor ICBURVNUX0NPTVBBUkUgKGJ1ZlswXSwgMHg4Qyk7CisgIFRFU1RfVkVSSUZZIChtYnNpbml0 ICgmcykpOworCisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citkb190ZXN0ICh2b2lk KQoreworICB0ZXN0X3V0ZjggKCk7CisgIHRlc3RfYmlnNV9oa3NjcyAoKTsKKyAgcmV0dXJu IDA7Cit9CisKKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmM+Cg== --------------MbBt9AkwRJoYBmnPMEOREREl--