From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40131.protonmail.ch (mail-40131.protonmail.ch [185.70.40.131]) by sourceware.org (Postfix) with ESMTPS id 81E2F3858D37 for ; Tue, 21 Nov 2023 13:04:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 81E2F3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=protonmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=protonmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 81E2F3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=185.70.40.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700571894; cv=none; b=oJdszhCcawdhmLi8QFbjbPIn0eOeY3FimSgXTKD02fFhJ4SZXFSltsAh2dvVSZIEehMimI+ZAj6VfqNKw4u4MgVKv2HNdQHUb7NoJaMn08OCi9h7GcYKTODJqkko3OzYauxMKGR/M9oo2fExl2r/KZtANaG/8rFfQg7kn689RmQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700571894; c=relaxed/simple; bh=NvVbCrKZNgbDIe0xN22pcUMbI0a7Jd2S04YCwmvUCVg=; h=DKIM-Signature:Date:To:From:Subject:Message-ID:MIME-Version; b=NO/XBCCJtZEPs3XZArCe1O8eKs5EhJVZAatHoGkAsXzxI2kDBvwDiIElGwSEJw6YQHTMamiH6cpTw4Yk2lkjoU6E2Jxg1y8gPIfHMACXkM43V/OkPYPUQZSSOiEYgfOW2ZQF8Bmi3VYre/FhQ5m3vbhwRiNB3mWq/zXiLp1i07I= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1700571881; x=1700831081; bh=NvVbCrKZNgbDIe0xN22pcUMbI0a7Jd2S04YCwmvUCVg=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=zNhlWThGseFXL6fj2SbMq4mANev7kl5Q0RLBab+LHjWVx+PGa7+GZWlg284WUxUlN Y3HPBTlQvTFJjXEimdLs1caQWvJ0vt5itDK+Yj9pmO8HU7gu/out4sP0jMOGN371U6 B5go1PqKwq1MJcMVAkfx8ouL7Pfy89lZSbha8A7dMEvukJzQ4AxGk40ylimnRLRspI g4AlspAbL3K6Q49U7pICeshIwmaHOtdFhRSaoRXNRg2VUEMW1JVG8QgjRDFaPS9jF+ VfriRHCxCiqdYEaxZ4skyKCPYLSwxYuIEW/qMWXWfXVscvpN8fme6DZhaAizAN4rBr eff5v9FA0v19g== Date: Tue, 21 Nov 2023 13:04:35 +0000 To: waffl3x From: waffl3x Cc: Jason Merrill , "gcc-patches@gcc.gnu.org" Subject: [PATCH v5 1/1] c++: Initial support for P0847R7 (Deducing This) [PR102609] Message-ID: In-Reply-To: <1MdaTybBd_o4uw-Gb23fYyd5GNz7qFqoSe_f5h90LY_BdzM2ge2qPSyCuiCLYoYcZSjmVv13fw1LmjQC_M2L8raS1fydY5pEJ_vwvv5Z-0k=@protonmail.com> References: <9890a007-755e-41e2-bc33-37ebf0755435@redhat.com> <1MdaTybBd_o4uw-Gb23fYyd5GNz7qFqoSe_f5h90LY_BdzM2ge2qPSyCuiCLYoYcZSjmVv13fw1LmjQC_M2L8raS1fydY5pEJ_vwvv5Z-0k=@protonmail.com> Feedback-ID: 14591686:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_HglRM5k3kqot6ZgYpLNgjrf7igNcb20xIE6WrmIH7Z0" X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK 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: This is a multi-part message in MIME format. --b1_HglRM5k3kqot6ZgYpLNgjrf7igNcb20xIE6WrmIH7Z0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Bootstrapped and tested on x86_64-linux with no regressions. Hopefully this patch is legible enough for reviewing purposes, I've not been feeling the greatest so it was a task to get this finished. Tomorrow I will look at putting the diagnostics in start_preparsed_function and also fixing up anything else. To reiterate in case it wasn't abundantly clear by the barren changelog and commit message, this version is not intended as the final revision. Handling re-declarations was kind of nightmarish, so the comments in there are lengthy, but I am fairly certain I implemented them correctly. I am going to get some sleep now, hopefully I will feel better tomorrow and be ready to polish off the patch. Thanks for the patience. Alex --b1_HglRM5k3kqot6ZgYpLNgjrf7igNcb20xIE6WrmIH7Z0 Content-Type: text/x-patch; name=0001-temp-deducing-this.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-temp-deducing-this.patch RnJvbSAyYzBmYzJiNDcwNDc0MzU1OGQ1OTVlYjAwZWMwNDZmNTU1NDY0M2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YWZmbDN4IDx3YWZmbDN4QHByb3Rvbm1haWwuY29tPgpEYXRl OiBUdWUsIDIxIE5vdiAyMDIzIDA1OjQyOjM4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gVGhpcyBp cyBhIHRlbXBvcmFyeSBtZXNzYWdlLiBnY2MvY3AvQ2hhbmdlTG9nOgoKCSogY2FsbC5jYyAoYWRk X2NhbmRpZGF0ZXMpOgoJKGJ1aWxkX292ZXJfY2FsbCk6CgkqIGNsYXNzLmNjIChhZGRfbWV0aG9k KToKCShyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6CgkqIGNwLXRyZWUu aCAoc3RydWN0IGxhbmdfZGVjbF9mbik6CgkoREVDTF9JT0JKX01FTUJFUl9GVU5DX1ApOgoJKERF Q0xfRlVOQ1RJT05fWE9CSl9GTEFHKToKCShERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCk6CgkoREVD TF9PQkpFQ1RfTUVNQkVSX0ZVTkNfUCk6CgkoREVDTF9GVU5DVElPTl9NRU1CRVJfUCk6CgkoZW51 bSBhdXRvX2RlZHVjdGlvbl9jb250ZXh0KToKCShURkZfWE9CSl9GVU5DKToKCShlbnVtIGNwX2Rl Y2xfc3BlYyk6CgkqIGRlY2wuY2MgKGdyb2tmbmRlY2wpOgoJKGdyb2tkZWNsYXJhdG9yKToKCShn cm9rX29wX3Byb3BlcnRpZXMpOgoJKHN0YXJ0X3ByZXBhcnNlZF9mdW5jdGlvbik6CgkqIGVycm9y LmNjIChkdW1wX2Z1bmN0aW9uX2RlY2wpOgoJKGR1bXBfcGFyYW1ldGVycyk6CgkoZnVuY3Rpb25f Y2F0ZWdvcnkpOgoJKiBsYW1iZGEuY2MgKGJ1aWxkX2NhcHR1cmVfcHJveHkpOgoJKiBtb2R1bGUu Y2MgKHRyZWVzX291dDo6bGFuZ19kZWNsX2Jvb2xzKToKCSh0cmVlc19pbjo6bGFuZ19kZWNsX2Jv b2xzKToKCSogcGFyc2VyLmNjIChjcF9wYXJzZXJfbGFtYmRhX2RlY2xhcmF0b3Jfb3B0KToKCShj cF9wYXJzZXJfZGVjbF9zcGVjaWZpZXJfc2VxKToKCShjcF9wYXJzZXJfcGFyYW1ldGVyX2RlY2xh cmF0aW9uKToKCShzZXRfYW5kX2NoZWNrX2RlY2xfc3BlY19sb2MpOgoJKiBwdC5jYyAoaW5zdGFu dGlhdGVfYm9keSk6CgkqIHNlYXJjaC5jYyAobG9va19mb3Jfb3ZlcnJpZGVzX2hlcmUpOgoJKGxv b2tfZm9yX292ZXJyaWRlc19yKToKCSogc2VtYW50aWNzLmNjIChmaW5pc2hfdGhpc19leHByKToK CSogdHJlZS5jYyAoYnVpbGRfbWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQpOgoJKiB0eXBlY2suY2Mg KGNwX2J1aWxkX2FkZHJfZXhwcl8xKToKCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzEuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAy My9leHBsaWNpdC1vYmotYmFzaWMyLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWJhc2ljMy5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1i YXNpYzQuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWUx LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5DOiBO ZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTMuQzogTmV3IHRl c3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWU0LkM6IE5ldyB0ZXN0LgoJ KiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQzogTmV3IHRlc3QuCgkq IGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQi5DOiBOZXcgdGVzdC4KCSog ZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1DLkM6IE5ldyB0ZXN0LgoJKiBn KysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQzogTmV3IHRlc3QuCgkqIGcr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DOiBOZXcgdGVzdC4KCSogZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczEuQzogTmV3IHRlc3QuCgkqIGcrKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MyLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1kaWFnbm9zdGljczUuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNy5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1sYW1iZGExLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWxhbWJkYVgyLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1tZW0tYXJyb3cuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3Bz LW1lbS1hc3NpZ25tZW50LkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LW9wcy1tZW0tY2FsbC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1v cHMtbWVtLXN1YnNjcmlwdC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1vcHMtbm9uLW1lbS1kZXAuQzogTmV3IHRlc3QuCgkqIGcrKy5kZy9jcHAyMy9leHBsaWNpdC1v Ymotb3BzLW5vbi1tZW0tbm9uLWRlcC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1vcHMtbm9uLW1lbS5oOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1vcHMtcmVxdWlyZXMtbWVtLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLXJlZGVjbC5DOiBOZXcgdGVzdC4KCSogZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1yZWRlY2wyLkM6IE5ldyB0ZXN0LgotLS0KIGdjYy9jcC9jYWxsLmNjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDE1NSArKystLS0KIGdjYy9jcC9jbGFzcy5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDIwNSArKysrKysrLQogZ2NjL2NwL2NwLXRyZWUuaCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQxICstCiBnY2MvY3AvZGVjbC5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxODEgKysrKysrLQogZ2NjL2NwL2Vycm9yLmNj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBnY2MvY3AvbGFtYmRhLmNj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGdjYy9jcC9tb2R1bGUuY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvY3AvcGFyc2VyLmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTkgKysrKystCiBnY2MvY3AvcHQuY2MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKy0KIGdjYy9jcC9zZWFyY2guY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArLQogZ2NjL2NwL3NlbWFudGljcy5j YyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM1ICstCiBnY2MvY3AvdHJlZS5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKy0KIGdjYy9jcC90eXBlY2suY2MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1iYXNpYzEuQyAgICAgICAgfCAxMTMgKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotYmFzaWMyLkMgICAgICAgIHwgIDI3ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWJhc2ljMy5DICAgICAgICB8IDQ5NSArKysrKysrKysrKysrKysrKysKIC4uLi9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DICAgICAgICB8IDExMSArKysrCiAuLi4vZysr LmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTEuQyAgICAgfCAgNDkgKysKIC4uLi9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5DICAgICB8ICA1OSArKysKIC4uLi9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMy5DICAgICB8ICA0MiArKwogLi4uL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFsdWU0LkMgICAgIHwgIDE5ICsKIC4uLi9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQyB8ICAgNiArCiAuLi4vZysrLmRnL2Nw cDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1CLkMgfCAgIDYgKwogLi4uL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DIHwgICA4ICsKIC4uLi9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQyB8ICAgNyArCiAuLi4vZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1FLkMgfCAgIDcgKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3MxLkMgIHwgMTM4ICsrKysrCiAuLi4vZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1kaWFnbm9zdGljczIuQyAgfCAgMjUgKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotZGlhZ25vc3RpY3M0LkMgIHwgIDE5ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWRpYWdub3N0aWNzNS5DICB8ICAxNSArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1kaWFnbm9zdGljczYuQyAgfCAgMjIgKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotZGlhZ25vc3RpY3M3LkMgIHwgIDI1ICsKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWxhbWJkYTEuQyAgICAgICB8ICAxMSArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1s YW1iZGFYMi5DICAgICAgfCAgMjIgKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3Bz LW1lbS1hcnJvdy5DIHwgIDI3ICsKIC4uLi9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hc3Np Z25tZW50LkMgICB8ICAyNiArCiAuLi4vZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVt LWNhbGwuQyAgfCAgMzkgKysKIC4uLi9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1zdWJzY3Jp cHQuQyAgICB8ICAzOSArKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1kZXAu QyAgICAgIHwgIDU3ICsrCiAuLi4vY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLW5vbi1k ZXAuQyAgfCAgNTYgKysKIC4uLi9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVt LmggICB8IDIwOSArKysrKysrKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWlyZXMt bWVtLkMgICAgIHwgMTcwICsrKysrKwogLi4uL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtcmVxdWly ZXMtbm9uLW1lbS5DIHwgMjM2ICsrKysrKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotcmVkZWNsLkMgICAgICAgIHwgMjQ1ICsrKysrKysrKwogLi4uL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotcmVkZWNsMi5DICAgICAgIHwgMTYwICsrKysrKwogNDUgZmlsZXMgY2hhbmdlZCwg MzIyOSBpbnNlcnRpb25zKCspLCAxNDEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMS5DCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2lj Mi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWJhc2ljMy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMS5DCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5D CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWJ5LXZhbHVlMy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv Y3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlNC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUEuQwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgt ZGlhbGVjdC1CLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUQuQwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgt ZGlhbGVjdC1FLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MyLkMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25v c3RpY3M0LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotZGlhZ25vc3RpY3M1LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3Rp Y3M3LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBs aWNpdC1vYmotbGFtYmRhMS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWxhbWJkYVgyLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1hcnJvdy5DCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1tZW0tYXNzaWdubWVudC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tY2FsbC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tc3Vic2NyaXB0 LkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNp dC1vYmotb3BzLW5vbi1tZW0tZGVwLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tbm9uLWRlcC5DCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1u b24tbWVtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW1lbS5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotcmVkZWNsLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotcmVkZWNsMi5DCgpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2NhbGwuY2MgYi9n Y2MvY3AvY2FsbC5jYwppbmRleCAyZWI1NGI1YjZlZC4uODJhZTVmYWNkMjAgMTAwNjQ0Ci0tLSBh L2djYy9jcC9jYWxsLmNjCisrKyBiL2djYy9jcC9jYWxsLmNjCkBAIC02NTI3LDcgKzY1MjcsNyBA QCBhZGRfY2FuZGlkYXRlcyAodHJlZSBmbnMsIHRyZWUgZmlyc3RfYXJnLCBjb25zdCB2ZWM8dHJl ZSwgdmFfZ2M+ICphcmdzLAogICAgICAgdHJlZSBmbl9maXJzdF9hcmcgPSBOVUxMX1RSRUU7CiAg ICAgICBjb25zdCB2ZWM8dHJlZSwgdmFfZ2M+ICpmbl9hcmdzID0gYXJnczsKIAotICAgICAgaWYg KERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QIChmbikpCisgICAgICBpZiAoREVDTF9P QkpFQ1RfTUVNQkVSX0ZVTkNfUCAoZm4pKQogCXsKIAkgIC8qIEZpZ3VyZSBvdXQgd2hlcmUgdGhl IG9iamVjdCBhcmcgY29tZXMgZnJvbS4gIElmIHRoaXMKIAkgICAgIGZ1bmN0aW9uIGlzIGEgbm9u LXN0YXRpYyBtZW1iZXIgYW5kIHdlIGRpZG4ndCBnZXQgYW4KQEAgLTk3MjgsMTQgKzk3MjgsOSBA QCBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdzLCB0 c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKICAgY29uc3QgdmVjPHRyZWUsIHZhX2djPiAqYXJncyA9 IGNhbmQtPmFyZ3M7CiAgIHRyZWUgZmlyc3RfYXJnID0gY2FuZC0+Zmlyc3RfYXJnOwogICBjb252 ZXJzaW9uICoqY29udnMgPSBjYW5kLT5jb252czsKLSAgY29udmVyc2lvbiAqY29udjsKICAgdHJl ZSBwYXJtID0gVFlQRV9BUkdfVFlQRVMgKFRSRUVfVFlQRSAoZm4pKTsKICAgaW50IHBhcm1sZW47 CiAgIHRyZWUgdmFsOwotICBpbnQgaSA9IDA7Ci0gIGludCBqID0gMDsKLSAgdW5zaWduZWQgaW50 IGFyZ19pbmRleCA9IDA7Ci0gIGludCBpc19tZXRob2QgPSAwOwogICBpbnQgbmFyZ3M7CiAgIHRy ZWUgKmFyZ2FycmF5OwogICBib29sIGFscmVhZHlfdXNlZCA9IGZhbHNlOwpAQCAtOTkyMSw0NSAr OTkxNiw3MCBAQCBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50 IGZsYWdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKICAgaWYgKGltbWVkaWF0ZV9pbnZvY2F0 aW9uX3AgKFNUUklQX1RFTVBMQVRFIChmbikpKQogICAgIGluX2NvbnN0ZXZhbF9pZl9wID0gdHJ1 ZTsKIAorICBhdXRvIGhhbmRsZV9hcmcgPSBbZm4sIGZsYWdzLCBjb21wbGFpbl0odHJlZSB0eXBl LAorICAJCQkJCSAgdHJlZSBhcmcsCisJCQkJCSAgaW50IGNvbnN0IHBhcmFtX2luZGV4LAorCQkJ CQkgIGNvbnZlcnNpb24gKmNvbnYsCisJCQkJCSAgYm9vbCBjb25zdCBjb252ZXJzaW9uX3dhcm5p bmcpCisgICAgeworICAgICAgLyogU2V0IHVzZXJfY29udl9wIG9uIHRoZSBhcmd1bWVudCBjb252 ZXJzaW9ucywgc28gcnZhbHVlL2Jhc2UgaGFuZGxpbmcKKwkga25vd3Mgbm90IHRvIGFsbG93IGFu eSBtb3JlIFVEQ3MuICBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZQorCSBwcm9jZXNzIGNh bmQtPndhcm5pbmdzLiAgKi8KKyAgICAgIGlmIChmbGFncyAmIExPT0tVUF9OT19DT05WRVJTSU9O KQorCWNvbnYtPnVzZXJfY29udl9wID0gdHJ1ZTsKKworICAgICAgdHN1YnN0X2ZsYWdzX3QgY29u c3QgYXJnX2NvbXBsYWluCisJPSBjb252ZXJzaW9uX3dhcm5pbmcgPyBjb21wbGFpbiA6IGNvbXBs YWluICYgfnRmX3dhcm5pbmc7CisKKyAgICAgIGlmIChhcmdfY29tcGxhaW4gJiB0Zl93YXJuaW5n KQorCW1heWJlX3dhcm5fcGVzc2ltaXppbmdfbW92ZSAoYXJnLCB0eXBlLCAvKnJldHVybl9wKi9m YWxzZSk7CisKKyAgICAgIHRyZWUgdmFsID0gY29udmVydF9saWtlX3dpdGhfY29udGV4dCAoY29u diwgYXJnLCBmbiwKKyAgICAgIAkJCQkJICAgIHBhcmFtX2luZGV4LCBhcmdfY29tcGxhaW4pOwor ICAgICAgdmFsID0gY29udmVydF9mb3JfYXJnX3Bhc3NpbmcgKHR5cGUsIHZhbCwgYXJnX2NvbXBs YWluKTsKKyAgICAgIHJldHVybiB2YWw7CisgICAgfTsKKworICBpbnQgYXJnYXJyYXlfc2l6ZSA9 IDA7CisgIHVuc2lnbmVkIGludCBhcmdfaW5kZXggPSAwOworICBpbnQgY29udl9pbmRleCA9IDA7 CisgIGludCBwYXJhbV9pbmRleCA9IDA7CisKKyAgYXV0byBjb25zdW1lX29iamVjdF9hcmcgPSBb JmFyZ19pbmRleCwgJmZpcnN0X2FyZywgYXJnc10oKQorICAgIHsKKyAgICAgIGlmICghZmlyc3Rf YXJnKQorCXJldHVybiAoKmFyZ3MpW2FyZ19pbmRleCsrXTsKKyAgICAgIHRyZWUgb2JqZWN0X2Fy ZyA9IGZpcnN0X2FyZzsKKyAgICAgIGZpcnN0X2FyZyA9IE5VTExfVFJFRTsKKyAgICAgIHJldHVy biBvYmplY3RfYXJnOworICAgIH07CisKICAgLyogVGhlIGltcGxpY2l0IHBhcmFtZXRlcnMgdG8g YSBjb25zdHJ1Y3RvciBhcmUgbm90IGNvbnNpZGVyZWQgYnkgb3ZlcmxvYWQKICAgICAgcmVzb2x1 dGlvbiwgYW5kIG11c3QgYmUgb2YgdGhlIHByb3BlciB0eXBlLiAgKi8KICAgaWYgKERFQ0xfQ09O U1RSVUNUT1JfUCAoZm4pKQogICAgIHsKLSAgICAgIHRyZWUgb2JqZWN0X2FyZzsKLSAgICAgIGlm IChmaXJzdF9hcmcgIT0gTlVMTF9UUkVFKQotCXsKLQkgIG9iamVjdF9hcmcgPSBmaXJzdF9hcmc7 Ci0JICBmaXJzdF9hcmcgPSBOVUxMX1RSRUU7Ci0JfQotICAgICAgZWxzZQotCXsKLQkgIG9iamVj dF9hcmcgPSAoKmFyZ3MpW2FyZ19pbmRleF07Ci0JICArK2FyZ19pbmRleDsKLQl9Ci0gICAgICBh cmdhcnJheVtqKytdID0gYnVpbGRfdGhpcyAob2JqZWN0X2FyZyk7CisgICAgICB0cmVlIG9iamVj dF9hcmcgPSBjb25zdW1lX29iamVjdF9hcmcgKCk7CisgICAgICBhcmdhcnJheVthcmdhcnJheV9z aXplKytdID0gYnVpbGRfdGhpcyAob2JqZWN0X2FyZyk7CiAgICAgICBwYXJtID0gVFJFRV9DSEFJ TiAocGFybSk7CiAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIgdHJ5IHRvIGNhbGwgdGhlIGFic3Ry YWN0IGNvbnN0cnVjdG9yLiAgKi8KICAgICAgIGdjY19hc3NlcnQgKCFERUNMX0hBU19JTl9DSEFS R0VfUEFSTV9QIChmbikpOwogCiAgICAgICBpZiAoREVDTF9IQVNfVlRUX1BBUk1fUCAoZm4pKQog CXsKLQkgIGFyZ2FycmF5W2orK10gPSAoKmFyZ3MpW2FyZ19pbmRleF07CisJICBhcmdhcnJheVth cmdhcnJheV9zaXplKytdID0gKCphcmdzKVthcmdfaW5kZXhdOwogCSAgKythcmdfaW5kZXg7CiAJ ICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSk7CiAJfQogICAgIH0KICAgLyogQnlwYXNzIGFjY2Vz cyBjb250cm9sIGZvciAndGhpcycgcGFyYW1ldGVyLiAgKi8KLSAgZWxzZSBpZiAoVFJFRV9DT0RF IChUUkVFX1RZUEUgKGZuKSkgPT0gTUVUSE9EX1RZUEUpCisgIGVsc2UgaWYgKERFQ0xfSU9CSl9N RU1CRVJfRlVOQ19QIChmbikpCiAgICAgewotICAgICAgdHJlZSBhcmcgPSBidWlsZF90aGlzIChm aXJzdF9hcmcgIT0gTlVMTF9UUkVFCi0JCQkgICAgID8gZmlyc3RfYXJnCi0JCQkgICAgIDogKCph cmdzKVthcmdfaW5kZXhdKTsKKyAgICAgIHRyZWUgYXJnID0gYnVpbGRfdGhpcyAoY29uc3VtZV9v YmplY3RfYXJnICgpKTsKICAgICAgIHRyZWUgYXJndHlwZSA9IFRSRUVfVFlQRSAoYXJnKTsKIAog ICAgICAgaWYgKGFyZyA9PSBlcnJvcl9tYXJrX25vZGUpCiAJcmV0dXJuIGVycm9yX21hcmtfbm9k ZTsKLQotICAgICAgaWYgKGNvbnZzW2ldLT5iYWRfcCkKKyAgICAgIGlmIChjb252c1tjb252X2lu ZGV4KytdLT5iYWRfcCkKIAl7CiAJICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikKIAkgICAgewpA QCAtMTAwMzQsMjUgKzEwMDU0LDM3IEBAIGJ1aWxkX292ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlk YXRlICpjYW5kLCBpbnQgZmxhZ3MsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluKQogICAgICAgdHJl ZSBjb252ZXJ0ZWRfYXJnID0gYnVpbGRfYmFzZV9wYXRoIChQTFVTX0VYUFIsIGFyZywKIAkJCQkJ ICAgIGJhc2VfYmluZm8sIDEsIGNvbXBsYWluKTsKIAotICAgICAgYXJnYXJyYXlbaisrXSA9IGNv bnZlcnRlZF9hcmc7CisgICAgICBhcmdhcnJheVthcmdhcnJheV9zaXplKytdID0gY29udmVydGVk X2FyZzsKICAgICAgIHBhcm0gPSBUUkVFX0NIQUlOIChwYXJtKTsKLSAgICAgIGlmIChmaXJzdF9h cmcgIT0gTlVMTF9UUkVFKQotCWZpcnN0X2FyZyA9IE5VTExfVFJFRTsKKyAgICB9CisgIGVsc2Ug aWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChmbikpCisgICAgeworICAgICAgLyogV2UgY3Vy cmVudGx5IGhhbmRsZSBmb3IgdGhlIGNhc2Ugd2hlcmUgZmlyc3RfYXJnIGlzIE5VTExfVFJFRQor CSBpbiB0aGUgZnV0dXJlIHRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgYW5kIHRoZSBhc3NlcnQgcmVh Y3RpdmF0ZWQuICAqLworICAgICAgI2lmIDAKKyAgICAgIGdjY19hc3NlcnQgKGZpcnN0X2FyZyk7 CisgICAgICAjZW5kaWYKKyAgICAgIGdjY19hc3NlcnQgKGNhbmQtPm51bV9jb252cyA+IDApOwor ICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnZlcnNpb25fd2FybmluZyA9IHRydWU7Cisg ICAgICB0cmVlIG9iamVjdF9hcmcgPSBjb25zdW1lX29iamVjdF9hcmcgKCk7CisgICAgICB2YWwg PSBoYW5kbGVfYXJnKFRSRUVfVkFMVUUgKHBhcm0pLAorCQkgICAgICAgb2JqZWN0X2FyZywKKwkJ ICAgICAgIHBhcmFtX2luZGV4KyssCisJCSAgICAgICBjb252c1tjb252X2luZGV4KytdLAorCQkg ICAgICAgY29udmVyc2lvbl93YXJuaW5nKTsKKworICAgICAgaWYgKHZhbCA9PSBlcnJvcl9tYXJr X25vZGUpCisgICAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICAgICBlbHNlCi0JKyth cmdfaW5kZXg7Ci0gICAgICArK2k7Ci0gICAgICBpc19tZXRob2QgPSAxOworICAgICAgICBhcmdh cnJheVthcmdhcnJheV9zaXplKytdID0gdmFsOworICAgICAgcGFybSA9IFRSRUVfQ0hBSU4gKHBh cm0pOwogICAgIH0KIAogICBnY2NfYXNzZXJ0IChmaXJzdF9hcmcgPT0gTlVMTF9UUkVFKTsKICAg Zm9yICg7IGFyZ19pbmRleCA8IHZlY19zYWZlX2xlbmd0aCAoYXJncykgJiYgcGFybTsKLSAgICAg ICBwYXJtID0gVFJFRV9DSEFJTiAocGFybSksICsrYXJnX2luZGV4LCArK2kpCisgICAgICAgcGFy bSA9IFRSRUVfQ0hBSU4gKHBhcm0pLCArK2FyZ19pbmRleCwgKytwYXJhbV9pbmRleCwgKytjb252 X2luZGV4KQogICAgIHsKLSAgICAgIHRyZWUgdHlwZSA9IFRSRUVfVkFMVUUgKHBhcm0pOwotICAg ICAgdHJlZSBhcmcgPSAoKmFyZ3MpW2FyZ19pbmRleF07Ci0gICAgICBib29sIGNvbnZlcnNpb25f d2FybmluZyA9IHRydWU7Ci0KLSAgICAgIGNvbnYgPSBjb252c1tpXTsKKyAgICAgIHRyZWUgY3Vy cmVudF9hcmcgPSAoKmFyZ3MpW2FyZ19pbmRleF07CiAKICAgICAgIC8qIElmIHRoZSBhcmd1bWVu dCBpcyBOVUxMIGFuZCB1c2VkIHRvIChpbXBsaWNpdGx5KSBpbnN0YW50aWF0ZSBhCiAgICAgICAg ICB0ZW1wbGF0ZSBmdW5jdGlvbiAoYW5kIGJpbmQgb25lIG9mIHRoZSB0ZW1wbGF0ZSBhcmd1bWVu dHMgdG8KQEAgLTEwMDc0LDQ3ICsxMDEwNiwzOCBAQCBidWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6 X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdzLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKICAg ICAgICAgICAgICBmdW5jKE5VTEwpOwogICAgICAgICAgICB9CiAgICAgICAqLwotICAgICAgaWYg KG51bGxfbm9kZV9wIChhcmcpCi0gICAgICAgICAgJiYgREVDTF9URU1QTEFURV9JTkZPIChmbikK LSAgICAgICAgICAmJiBjYW5kLT50ZW1wbGF0ZV9kZWNsCi0JICAmJiAhY2FuZC0+ZXhwbGljaXRf dGFyZ3MpCi0gICAgICAgIGNvbnZlcnNpb25fd2FybmluZyA9IGZhbHNlOwotCi0gICAgICAvKiBT ZXQgdXNlcl9jb252X3Agb24gdGhlIGFyZ3VtZW50IGNvbnZlcnNpb25zLCBzbyBydmFsdWUvYmFz ZSBoYW5kbGluZwotCSBrbm93cyBub3QgdG8gYWxsb3cgYW55IG1vcmUgVURDcy4gIFRoaXMgbmVl ZHMgdG8gaGFwcGVuIGFmdGVyIHdlCi0JIHByb2Nlc3MgY2FuZC0+d2FybmluZ3MuICAqLwotICAg ICAgaWYgKGZsYWdzICYgTE9PS1VQX05PX0NPTlZFUlNJT04pCi0JY29udi0+dXNlcl9jb252X3Ag PSB0cnVlOwotCi0gICAgICB0c3Vic3RfZmxhZ3NfdCBhcmdfY29tcGxhaW4gPSBjb21wbGFpbjsK LSAgICAgIGlmICghY29udmVyc2lvbl93YXJuaW5nKQotCWFyZ19jb21wbGFpbiAmPSB+dGZfd2Fy bmluZzsKLQotICAgICAgaWYgKGFyZ19jb21wbGFpbiAmIHRmX3dhcm5pbmcpCi0JbWF5YmVfd2Fy bl9wZXNzaW1pemluZ19tb3ZlIChhcmcsIHR5cGUsIC8qcmV0dXJuX3AqL2ZhbHNlKTsKKyAgICAg IGF1dG8gZGV0ZXJtaW5lX2NvbnZlcnNpb25fd2FybmluZyA9IFsmXSgpCisJeworCSAgcmV0dXJu ICEobnVsbF9ub2RlX3AgKGN1cnJlbnRfYXJnKQorCSAgICAmJiBERUNMX1RFTVBMQVRFX0lORk8g KGZuKQorCSAgICAmJiBjYW5kLT50ZW1wbGF0ZV9kZWNsCisJICAgICYmICFjYW5kLT5leHBsaWNp dF90YXJncyk7CisJfTsKIAotICAgICAgdmFsID0gY29udmVydF9saWtlX3dpdGhfY29udGV4dCAo Y29udiwgYXJnLCBmbiwgaSAtIGlzX21ldGhvZCwKLQkJCQkgICAgICAgYXJnX2NvbXBsYWluKTsK LSAgICAgIHZhbCA9IGNvbnZlcnRfZm9yX2FyZ19wYXNzaW5nICh0eXBlLCB2YWwsIGFyZ19jb21w bGFpbik7CisgICAgICB2YWwgPSBoYW5kbGVfYXJnIChUUkVFX1ZBTFVFIChwYXJtKSwKKwkJCWN1 cnJlbnRfYXJnLAorCQkJcGFyYW1faW5kZXgsCisJCQljb252c1tjb252X2luZGV4XSwKKwkJCWRl dGVybWluZV9jb252ZXJzaW9uX3dhcm5pbmcgKCkpOwogCiAgICAgICBpZiAodmFsID09IGVycm9y X21hcmtfbm9kZSkKICAgICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKICAgICAgIGVsc2UK LSAgICAgICAgYXJnYXJyYXlbaisrXSA9IHZhbDsKKyAgICAgICAgYXJnYXJyYXlbYXJnYXJyYXlf c2l6ZSsrXSA9IHZhbDsKICAgICB9CiAKICAgLyogRGVmYXVsdCBhcmd1bWVudHMgKi8KLSAgZm9y ICg7IHBhcm0gJiYgcGFybSAhPSB2b2lkX2xpc3Rfbm9kZTsgcGFybSA9IFRSRUVfQ0hBSU4gKHBh cm0pLCBpKyspCisgIGZvciAoOyBwYXJtICYmIHBhcm0gIT0gdm9pZF9saXN0X25vZGU7IHBhcm0g PSBUUkVFX0NIQUlOIChwYXJtKSwgcGFyYW1faW5kZXgrKykKICAgICB7CiAgICAgICBpZiAoVFJF RV9WQUxVRSAocGFybSkgPT0gZXJyb3JfbWFya19ub2RlKQogCXJldHVybiBlcnJvcl9tYXJrX25v ZGU7CiAgICAgICB2YWwgPSBjb252ZXJ0X2RlZmF1bHRfYXJnIChUUkVFX1ZBTFVFIChwYXJtKSwK IAkJCQkgVFJFRV9QVVJQT1NFIChwYXJtKSwKLQkJCQkgZm4sIGkgLSBpc19tZXRob2QsCisJCQkJ IGZuLCBwYXJhbV9pbmRleCwKIAkJCQkgY29tcGxhaW4pOwogICAgICAgaWYgKHZhbCA9PSBlcnJv cl9tYXJrX25vZGUpCiAgICAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7Ci0gICAgICBhcmdh cnJheVtqKytdID0gdmFsOworICAgICAgYXJnYXJyYXlbYXJnYXJyYXlfc2l6ZSsrXSA9IHZhbDsK ICAgICB9CiAKICAgLyogRWxsaXBzaXMgKi8KQEAgLTEwMTUxLDExICsxMDE3NCwxMSBAQCBidWls ZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50IGZsYWdzLCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKIAlhID0gY29udmVydF9hcmdfdG9fZWxsaXBzaXMgKGEsIGNvbXBs YWluKTsKICAgICAgIGlmIChhID09IGVycm9yX21hcmtfbm9kZSkKIAlyZXR1cm4gZXJyb3JfbWFy a19ub2RlOwotICAgICAgYXJnYXJyYXlbaisrXSA9IGE7CisgICAgICBhcmdhcnJheVthcmdhcnJh eV9zaXplKytdID0gYTsKICAgICB9CiAKLSAgZ2NjX2Fzc2VydCAoaiA8PSBuYXJncyk7Ci0gIG5h cmdzID0gajsKKyAgZ2NjX2Fzc2VydCAoYXJnYXJyYXlfc2l6ZSA8PSBuYXJncyk7CisgIG5hcmdz ID0gYXJnYXJyYXlfc2l6ZTsKICAgaWNpcC5yZXNldCAoKTsKIAogICAvKiBBdm9pZCBwZXJmb3Jt aW5nIGFyZ3VtZW50IHRyYW5zZm9ybWF0aW9uIGlmIHdhcm5pbmdzIGFyZSBkaXNhYmxlZC4KQEAg LTEwMTcxLDcgKzEwMTk0LDcgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5kaWRhdGUg KmNhbmQsIGludCBmbGFncywgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiAgICAgewogICAgICAg dHJlZSAqZmFyZ3MgPSAoIW5hcmdzID8gYXJnYXJyYXkKIAkJCSAgICA6ICh0cmVlICopIGFsbG9j YSAobmFyZ3MgKiBzaXplb2YgKHRyZWUpKSk7Ci0gICAgICBmb3IgKGogPSAwOyBqIDwgbmFyZ3M7 IGorKykKKyAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmFyZ3M7IGorKykKIAl7CiAJICAvKiBG b3IgLVdmb3JtYXQgdW5kbyB0aGUgaW1wbGljaXQgcGFzc2luZyBieSBoaWRkZW4gcmVmZXJlbmNl CiAJICAgICBkb25lIGJ5IGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzLiAgKi8KZGlmZiAtLWdpdCBh L2djYy9jcC9jbGFzcy5jYyBiL2djYy9jcC9jbGFzcy5jYwppbmRleCAwZDhiNzgwYmEyZi4uNDUz N2RlMTVmZGMgMTAwNjQ0Ci0tLSBhL2djYy9jcC9jbGFzcy5jYworKysgYi9nY2MvY3AvY2xhc3Mu Y2MKQEAgLTEwNzksOCArMTA3OSw4IEBAIGFkZF9tZXRob2QgKHRyZWUgdHlwZSwgdHJlZSBtZXRo b2QsIGJvb2wgdmlhX3VzaW5nKQogICAgICAgLyogQ29tcGFyZSB0aGUgcXVhbHMgb24gdGhlICd0 aGlzJyBwYXJtLiAgRG9uJ3QgY29tcGFyZQogCSB0aGUgd2hvbGUgdHlwZXMsIGFzIHVzZWQgZnVu Y3Rpb25zIGFyZSB0cmVhdGVkIGFzCiAJIGNvbWluZyBmcm9tIHRoZSB1c2luZyBjbGFzcyBpbiBv dmVybG9hZCByZXNvbHV0aW9uLiAgKi8KLSAgICAgIGlmICghIERFQ0xfU1RBVElDX0ZVTkNUSU9O X1AgKGZuKQotCSAgJiYgISBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChtZXRob2QpCisgICAgICBp ZiAoREVDTF9JT0JKX01FTUJFUl9GVU5DX1AgKGZuKQorCSAgJiYgREVDTF9JT0JKX01FTUJFUl9G VU5DX1AgKG1ldGhvZCkKIAkgIC8qIEVpdGhlciBib3RoIG9yIG5laXRoZXIgbmVlZCB0byBiZSBy ZWYtcXVhbGlmaWVkIGZvcgogCSAgICAgZGlmZmVyaW5nIHF1YWxzIHRvIGFsbG93IG92ZXJsb2Fk aW5nLiAgKi8KIAkgICYmIChGVU5DVElPTl9SRUZfUVVBTElGSUVEIChmbl90eXBlKQpAQCAtMTA4 OSw2ICsxMDg5LDE2NCBAQCBhZGRfbWV0aG9kICh0cmVlIHR5cGUsIHRyZWUgbWV0aG9kLCBib29s IHZpYV91c2luZykKIAkgICAgICB8fCB0eXBlX21lbWZuX3JxdWFsIChmbl90eXBlKSAhPSB0eXBl X21lbWZuX3JxdWFsIChtZXRob2RfdHlwZSkpKQogCSAgY29udGludWU7CiAKKyAgICAgIGF1dG8g Z2V0X29iamVjdF9wYXJhbSA9IFtdKHRyZWUgZm4pCisJeworCSAgZ2NjX2Fzc2VydCAoREVDTF9P QkpFQ1RfTUVNQkVSX0ZVTkNfUCAoZm4pKTsKKwkgIHJldHVybiBUUkVFX1ZBTFVFIChUWVBFX0FS R19UWVBFUyAoVFJFRV9UWVBFIChmbikpKTsKKwl9OworICAgICAgYXV0byByZWZlcmVuY2VfcXVh bCA9IFtdKHRyZWUgcmVmKQorCXsKKwkgIGdjY19hc3NlcnQgKFRZUEVfUkVGX1AgKHJlZikpOwor CSAgcmV0dXJuIFRZUEVfUkVGX0lTX1JWQUxVRSAocmVmKSA/IFJFRl9RVUFMX1JWQUxVRQorCQkJ CQkgIDogUkVGX1FVQUxfTFZBTFVFOworCX07CisKKyAgICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNv cnJlc3BvbmRlbmNlIHJ1bGVzIGZvciB4b2JqIHZzIHhvYmogYW5kIHhvYmogdnMgaW9iagorCSBt ZW1iZXIgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorCSBXZSBkb24ndCB3b3JyeSBhYm91dCBzdGF0 aWMgbWVtYmVyIGZ1bmN0aW9ucyBoZXJlLiAgKi8KKyAgICAgIGlmICgoIURFQ0xfWE9CSl9NRU1C RVJfRlVOQ19QIChmbikgJiYgIURFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChtZXRob2QpKQorCSAg IHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGZuKSB8fCBERUNMX1NUQVRJQ19GVU5DVElPTl9Q IChtZXRob2QpKQorICAgICAgICAvKiBFYXJseSBlc2NhcGUuICAqLzsKKyAgICAgIGVsc2UgaWYg KERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChmbikKKwkgICAgICAgJiYgREVDTF9YT0JKX01FTUJF Ul9GVU5DX1AgKG1ldGhvZCkpCisgICAgICAgIHsKKwkgIHRyZWUgZm5fcGFyYW0gPSBnZXRfb2Jq ZWN0X3BhcmFtIChmbik7CisJICB0cmVlIG1ldGhvZF9wYXJhbSA9IGdldF9vYmplY3RfcGFyYW0g KG1ldGhvZCk7CisJICBpZiAoIXNhbWVfdHlwZV9wIChmbl9wYXJhbSwgbWV0aG9kX3BhcmFtKSkK KwkgICAgY29udGludWU7CisJfQorICAgICAgZWxzZSBpZiAoREVDTF9YT0JKX01FTUJFUl9GVU5D X1AgKGZuKQorCSAgICAgICB8fCBERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAobWV0aG9kKSkKKyAg ICAgICAgeworCSAgdHJlZSB4b2JqX2ZuID0gREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKGZuKSA/ IGZuIDogbWV0aG9kOworCSAgLyogQSByZWZlcmVuY2UsIHBvaW50ZXIsIG9yIHNvbWV0aGluZyBl bHNlLiAgKi8KKwkgIHRyZWUgeG9ial9wYXJhbSA9IGdldF9vYmplY3RfcGFyYW0gKHhvYmpfZm4p OworCisJICAvKiBXZSBrbm93IGFuIGlvYmogcGFyYW1ldGVyIG11c3QgYmUgYSByZWZlcmVuY2Uu IElmIG91ciB4b2JqCisJICAgICBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyLCB3ZSBrbm93IHRoaXMg aXMgbm90IGEgcmVkZWNsYXJhdGlvbi4KKwkgICAgIFRoaXMgYWxzbyBjYXRjaGVzIGFycmF5IHBh cmFtZXRlcnMsIHRob3NlIGFyZSBwb2ludGVycyB0b28uICAqLworCSAgaWYgKFRZUEVfUFRSX1Ag KHhvYmpfcGFyYW0pKQorCSAgICBjb250aW51ZTsKKworCSAgLyogQW4gaW9iaiBtZW1iZXIgZnVu Y3Rpb24ncyBvYmplY3QgcGFyYW1ldGVyIGNhbid0IGJlIGFuIHVucmVsYXRlZAorCSAgICAgdHlw ZSwgd2Uga25vdyB0aGlzIGNhbid0IGJlIGEgcmVkZWNsYXJhdGlvbiBpZiB0aGUgeG9iaiBtZW1i ZXIKKwkgICAgIGZ1bmN0aW9uJ3Mgb2JqZWN0IHBhcmFtZXRlciBpcyBhbiB1bnJlbGF0ZWQgdHlw ZS4KKwkgICAgIElmIHRoZSBpb2JqIG1lbWJlciBmdW5jdGlvbiB3YXMgaW50cm9kdWNlZCB3aXRo IGEgdXNpbmcKKwkgICAgIGRlY2xhcmF0aW9uLCB0aGVuIHRoZSB0eXBlIG9mIGl0J3Mgb2JqZWN0 IHBhcmFtZXRlciBpcyBzdGlsbAorCSAgICAgdGhhdCBvZiB0aGUgY2xhc3Mgd2UgYXJlIGN1cnJl bnRseSBhZGRpbmcgYSBtZW1iZXIgZnVuY3Rpb24gdG8sCisJICAgICBzbyB0aGlzIGFzc3VtcHRp b24gaG9sZHMgdHJ1ZSBpbiB0aGF0IGNhc2UgYXMgd2VsbC4KKworCSAgICAgW292ZXIubWF0Y2gu ZnVuY3MuZ2VuZXJhbC40XQorCSAgICAgRm9yIG5vbi1jb252ZXJzaW9uIGZ1bmN0aW9ucyB0aGF0 IGFyZSBpbXBsaWNpdCBvYmplY3QgbWVtYmVyCisJICAgICBmdW5jdGlvbnMgbm9taW5hdGVkIGJ5 IGEgdXNpbmctZGVjbGFyYXRpb24gaW4gYSBkZXJpdmVkIGNsYXNzLAorCSAgICAgdGhlIGZ1bmN0 aW9uIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIGRlcml2ZWQgY2xhc3MKKwkg ICAgIGZvciB0aGUgcHVycG9zZSBvZiBkZWZpbmluZyB0aGUgdHlwZSBvZiB0aGUgaW1wbGljaXQg b2JqZWN0CisJICAgICBwYXJhbWV0ZXIuCisJICAgICAKKwkgICAgIFdlIGRvbid0IGdldCB0byBi YWlsIHlldCBvdXQgZXZlbiBpZiB0aGUgeG9iaiBwYXJhbWV0ZXIgaXMKKwkgICAgIGJ5LXZhbHVl IGFzIGVsYWJvcmF0ZWQgb24gYmVsb3cuICAqLworCSAgaWYgKERFQ0xfQ09OVEVYVCAoeG9ial9m bikKKwkgICAgICAhPSBUWVBFX01BSU5fVkFSSUFOVCAobm9uX3JlZmVyZW5jZSAoeG9ial9wYXJh bSkpKQorCSAgICBjb250aW51ZTsKKworCSAgLyogRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBrbm93 IHdlIGFyZSBkZWFsaW5nIHdpdGggYW4geG9iaiBwYXJhbWV0ZXIKKwkgICAgIHRoYXQgaGFzIGFu IG9iamVjdCBwYXJhbWV0ZXIgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgY2xhc3MgaXQKKwkgICAg IHdhcyBkZWNsYXJlZCBpbi4KKwkgICAgIFdlIHN0aWxsIGRvbid0IGtub3cgaWYgd2UgaGF2ZSBh IHJlZmVyZW5jZSBvciBieS12YWx1ZSBwYXJhbWV0ZXIKKwkgICAgIHlldCB0aG91Z2guICAqLwor CisJICB0cmVlIGlvYmpfZm4gPSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNfUCAoZm4pID8gZm4gOiBt ZXRob2Q7CisJICB0cmVlIGlvYmpfZm5fdHlwZSA9IFRSRUVfVFlQRSAoaW9ial9mbik7CisJICBj cF9yZWZfcXVhbGlmaWVyIGNvbnN0IGlvYmpfcmVmX3F1YWwKKwkgICAgPSB0eXBlX21lbWZuX3Jx dWFsIChpb2JqX2ZuX3R5cGUpOworCSAgLyogSSBhbSBjb25jZXJuZWQgYWJvdXQgdGhlIG90aGVy IHF1YWxpZmllciBiaXRzLCBmb3Igbm93IEkgd2lsbCBtYXNrCisJICAgICB0aGVtIG9mZi4gICov CisJICBzdGF0aWMgY29uc3RleHByIGNwX2N2X3F1YWxzIGN2X2JpdHMgPSBUWVBFX1FVQUxfVk9M QVRJTEUKKwkJCQkJICAgICAgIHwgVFlQRV9RVUFMX0NPTlNUOworCSAgY3BfY3ZfcXVhbHMgY29u c3QgaW9ial9jdl9xdWFscworCSAgICA9IHR5cGVfbWVtZm5fcXVhbHMgKGlvYmpfZm5fdHlwZSkg JiBjdl9iaXRzOworCSAgLyogV2UgbmVlZCB0byBpZ25vcmUgdGhlIHJlZiBxdWFsaWZpZXIgb2Yg dGhlIHhvYmogcGFyYW1ldGVyIGlmIHRoZQorCSAgICAgaW9iaiBtZW1iZXIgZnVuY3Rpb24gbGFj a3MgYSByZWYgcXVhbGlmaWVyLgorCisJICAgICBbYmFzaWMuc2NvcGUuc2NvcGUuM10KKwkgICAg IFR3byBub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbnMgaGF2ZSBjb3JyZXNwb25kaW5nIG9iamVj dAorCSAgICAgcGFyYW1ldGVycyBpZjoKKwkgICAgIC0tIGV4YWN0bHkgb25lIGlzIGFuIGltcGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gd2l0aCBubworCQlyZWYtcXVhbGlmaWVyIGFuZCB0 aGUgdHlwZXMgb2YgdGhlaXIgb2JqZWN0IHBhcmFtZXRlcnMKKwkJKFtkY2wuZmN0XSksIGFmdGVy IHJlbW92aW5nIHRvcC1sZXZlbCByZWZlcmVuY2VzLCBhcmUgdGhlCisJCXNhbWUsIG9yCisJICAg ICAtLSB0aGVpciBvYmplY3QgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIHR5cGUuCisKKwkgICAg IFRoZSBjdiBxdWFsaWZpZXJzIG9mIGEgYnktdmFsdWUgcGFyYW1ldGVyIGFyZSBzdXBwb3NlZCB0 byBiZQorCSAgICAgZGlzY2FyZGVkLCBzbyB3ZSBpZ25vcmUgdGhlbS4KKworCSAgICAgW2RjbC5m Y3QuNV0KKwkgICAgIEFmdGVyIHByb2R1Y2luZyB0aGUgbGlzdCBvZiBwYXJhbWV0ZXIgdHlwZXMs IGFueSB0b3AtbGV2ZWwKKwkgICAgIGN2LXF1YWxpZmllcnMgbW9kaWZ5aW5nIGEgcGFyYW1ldGVy IHR5cGUgYXJlIGRlbGV0ZWQgd2hlbgorCSAgICAgZm9ybWluZyB0aGUgZnVuY3Rpb24gdHlwZS4K KworCSAgICAgVGhleSBzdGlsbCBuZWVkIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCB3aGVuIG91 ciB4b2JqIHBhcmFtZXRlcgorCSAgICAgaXMgYSByZWZlcmVuY2UgdGhhdCBpcyBiZWluZyBpZ25v cmVkIChhY2NvcmRpbmcgdG8KKwkgICAgIFtiYXNpYy5zY29wZS5zY29wZS4zXSBxdW90ZWQgYWJv dmUpLCBidXQgd2hlbiB3ZSBhcmUgYWN0dWFsbHkKKwkgICAgIGRlYWxpbmcgd2l0aCBhIGJ5LXZh bHVlIHhvYmogcGFyYW1ldGVyIHdlIGNhbiBwcm9jZWRlIGZvbGxvd2luZworCSAgICAgdGhpcyB0 YWJsZS4KKwkgICAgIHwgaW9iaiB8IHhvYmogfCBlcXVhbCB8CisJICAgICB8IG5vbmUgfCBub25l IHwgICBYICAgfAorCSAgICAgfCBub25lIHwgICAgYyB8ICAgWCAgIHwKKwkgICAgIHwgbm9uZSB8 ICAgIHYgfCAgIFggICB8CisJICAgICB8IG5vbmUgfCAgIGN2IHwgICBYICAgfAorCSAgICAgfCAg ICBjIHwgbm9uZSB8ICAgTyAgIHwKKwkgICAgIHwgICAgYyB8ICAgIGMgfCAgIE8gICB8CisJICAg ICB8ICAgIGMgfCAgICB2IHwgICBPICAgfAorCSAgICAgfCAgICBjIHwgICBjdiB8ICAgTyAgIHwK KwkgICAgIHwgICAgdiB8IG5vbmUgfCAgIE8gICB8CisJICAgICB8ICAgIHYgfCAgICBjIHwgICBP ICAgfAorCSAgICAgfCAgICB2IHwgICAgdiB8ICAgTyAgIHwKKwkgICAgIHwgICAgdiB8ICAgY3Yg fCAgIE8gICB8CisJICAgICB8ICAgY3YgfCBub25lIHwgICBPICAgfAorCSAgICAgfCAgIGN2IHwg ICAgYyB8ICAgTyAgIHwKKwkgICAgIHwgICBjdiB8ICAgIHYgfCAgIE8gICB8CisJICAgICB8ICAg Y3YgfCAgIGN2IHwgICBPICAgfAorCisJICAgICBBZGRpdGlvbmFsbHksIGlmIHRoZSBpb2JqIG1l bWJlciBmdW5jdGlvbiBpcyByZWYgcXVhbGlmaWVkLAorCSAgICAgd2UgYXJlbid0IGlnbm9yaW5n IHRoZSByZWYgcXVhbGlmaWVyIG9mIHRoZSBpb2JqIHBhcmFtZXRlciwKKwkgICAgIHNvIHdlIGNh bid0IGJlIGRlYWxpbmcgd2l0aCBhIHJlZGVjbGFyYXRpb24gaW4gdGhhdCBjYXNlIGVpdGhlci4K KworCSAgICAgU28gdG8gcmVjYXAsIGlmIHdlIGhhdmUgYSBieS12YWx1ZSB4b2JqIHBhcmFtZXRl ciwgd2Uga25vdyBmb3IKKwkgICAgIHN1cmUgdGhhdCB3ZSBhcmVuJ3QgZGVhbGluZyB3aXRoIGEg cmVkZWNsYXJhdGlvbiBpZiB0aGUgaW9iagorCSAgICAgbWVtYmVyIGZ1bmN0aW9uIGhhcyBhbnkg Y3YtcmVmIHF1YWxpZmllcnMuIFRoZSBvbmx5IGNhc2Ugd2hlcmUKKwkgICAgIHdlIG1pZ2h0IHN0 aWxsIGJlIGRlYWxpbmcgd2l0aCBhIHJlZGVjbGFyYXRpb24gaXMgd2hlbiB0aGUgaW9iagorCSAg ICAgbWVtYmVyIGZ1bmN0aW9uIGxhY2tzIGFueSBjdi1yZWYgcXVhbGlmaWNhdGlvbi4gICovCisJ ICBpZiAoIVRZUEVfUkVGX1AgKHhvYmpfcGFyYW0pKQorCSAgICB7CisJICAgICAgaWYgKGlvYmpf cmVmX3F1YWwgfHwgaW9ial9jdl9xdWFscykKKwkJY29udGludWU7CisJICAgIH0KKwkgIGVsc2UK KwkgICAgeworCSAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggYW4geG9iaiBwYXJhbWV0ZXIg dGhhdCBpcyBhIHJlZmVyZW5jZSBub3csCisJCSBidXQgZHVlIHRvIFtiYXNpYy5zY29wZS5zY29w ZS4zXSB3ZSBuZWVkIHRvIGlnbm9yZSBpdCdzCisJCSByZWZlcmVuY2UgcXVhbGlmaWVyLiAgKi8K KwkgICAgICBjcF9yZWZfcXVhbGlmaWVyIGNvbnN0IHhvYmpfcmVmX3F1YWwKKwkJPSAhVFlQRV9S RUZfUCAoeG9ial9wYXJhbSkgfHwgIWlvYmpfcmVmX3F1YWwKKwkJICA/IFJFRl9RVUFMX05PTkUg OiByZWZlcmVuY2VfcXVhbCAoeG9ial9wYXJhbSk7CisKKwkgICAgICAvKiBFdmVuIGlmIHdlIGFy ZSBpZ25vcmluZyB0aGUgcmVmZXJlbmNlIHF1YWxpZmllciwgdGhlIHhvYmoKKwkJIHBhcmFtZXRl ciB3YXMgc3RpbGwgYSByZWZlcmVuY2Ugc28gd2Ugc3RpbGwgdGFrZSB0aGUgY3YKKwkJIHF1YWxp ZmllcnMgaW50byBhY2NvdW50LiAgKi8KKwkgICAgICBjcF9jdl9xdWFscyBjb25zdCB4b2JqX2N2 X3F1YWxzCisJCT0gY3BfdHlwZV9xdWFscyAoVFJFRV9UWVBFICh4b2JqX3BhcmFtKSkgJiBjdl9i aXRzOworCisJICAgICAgLyogRmluYWxseSwgaWYgdGhlIHF1YWxpZmljYXRpb25zIGRvbid0IG1h dGNoIGV4YWN0bHksIHRoaXMKKwkJIGRlZmluaXRlbHkgaXNuJ3QgYSByZWRlY2xhcmF0aW9uLiAg Ki8KKwkgICAgICBpZiAoaW9ial9yZWZfcXVhbCAhPSB4b2JqX3JlZl9xdWFsCisJCSAgfHwgaW9i al9jdl9xdWFscyAhPSB4b2JqX2N2X3F1YWxzKQorCQljb250aW51ZTsKKwkgICAgfQorCX0KKyAg ICAgIGVsc2UKKwlnY2NfdW5yZWFjaGFibGUgKCk7CisKICAgICAgIHRyZWUgcmVhbF9mbiA9IGZu OwogICAgICAgdHJlZSByZWFsX21ldGhvZCA9IG1ldGhvZDsKIApAQCAtODcyNCwyMSArODg4Miw0 MCBAQCByZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbiAodHJlZSB0YXJnZXRf dHlwZSwKICAgLyogR29vZCwgZXhhY3RseSBvbmUgbWF0Y2guICBOb3csIGNvbnZlcnQgaXQgdG8g dGhlIGNvcnJlY3QgdHlwZS4gICovCiAgIGZuID0gVFJFRV9QVVJQT1NFIChtYXRjaGVzKTsKIAot ICBpZiAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AgKGZuKQotICAgICAgJiYgIShj b21wbGFpbiAmIHRmX3B0cm1lbV9vaykgJiYgIWZsYWdfbXNfZXh0ZW5zaW9ucykKKyAgaWYgKERF Q0xfT0JKRUNUX01FTUJFUl9GVU5DX1AgKGZuKQorICAgICAgJiYgIShjb21wbGFpbiAmIHRmX3B0 cm1lbV9vaykpCiAgICAgewotICAgICAgc3RhdGljIGludCBleHBsYWluZWQ7Ci0KLSAgICAgIGlm ICghKGNvbXBsYWluICYgdGZfZXJyb3IpKQotCXJldHVybiBlcnJvcl9tYXJrX25vZGU7Ci0KLSAg ICAgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOwotICAgICAgaWYgKHBlcm1lcnJvciAoaW5wdXRf bG9jYXRpb24sICJhc3N1bWluZyBwb2ludGVyIHRvIG1lbWJlciAlcUQiLCBmbikKLQkgICYmICFl eHBsYWluZWQpCisgICAgICAvKiBEb24ndCBkaXNhYmxlIGVycm9yIGV2ZW4gaWYgLWZtcy1leHRl bnNpb25zIGlzIHBhc3NlZCwgdGhpcyBpcyBhIG5ldworCSBmZWF0dXJlIHNvIHdlIChob3BlZnVs bHkpIGRvbid0IG5lZWQgdG8gc3VwcG9ydCB0aGUgYmVoYXZpb3IuICovCisgICAgICBpZiAoREVD TF9YT0JKX01FTUJFUl9GVU5DX1AgKGZuKSkKIAl7Ci0JICBpbmZvcm0gKGlucHV0X2xvY2F0aW9u LCAiKGEgcG9pbnRlciB0byBtZW1iZXIgY2FuIG9ubHkgYmUgIgorCSAgaWYgKCEoY29tcGxhaW4g JiB0Zl9lcnJvcikpCisJICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJICBhdXRvX2RpYWdu b3N0aWNfZ3JvdXAgZDsKKwkgIC8qIEVycm9yIG1lc3NhZ2UgY291bGQgYmUgYmV0dGVyLCBmaXhp dCB3b3VsZCBiZSBpZGVhbC4KKwkgICAgIFNob3VsZCBhbHNvIG1hdGNoIHRoZSBlcnJvciBpbiB0 eXBlY2suY2M6Y3BfYnVpbGRfYWRkcl9leHByXzEuICAqLworCSAgZXJyb3JfYXQgKGlucHV0X2xv Y2F0aW9uLAorCQkgICAgInRha2luZyB0aGUgYWRkcmVzcyBvZiBhbiBleHBsaWNpdCBvYmplY3Qg bWVtYmVyICIKKwkJICAgICJmdW5jdGlvbiBtdXN0IGJlIHF1YWxpZmllZCIpOworCSAgaW5mb3Jt IChpbnB1dF9sb2NhdGlvbiwKKwkJICAiKGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uIGNhbiBvbmx5IGJlICIKIAkJICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBm bik7Ci0JICBleHBsYWluZWQgPSAxOworCX0KKyAgICAgIGVsc2UgaWYgKERFQ0xfSU9CSl9NRU1C RVJfRlVOQ19QIChmbikgJiYgIWZsYWdfbXNfZXh0ZW5zaW9ucykKKwl7CisJICBzdGF0aWMgaW50 IGV4cGxhaW5lZDsKKworCSAgaWYgKCEoY29tcGxhaW4gJiB0Zl9lcnJvcikpCisJICAgIHJldHVy biBlcnJvcl9tYXJrX25vZGU7CisKKwkgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCSAgaWYg KHBlcm1lcnJvciAoaW5wdXRfbG9jYXRpb24sICJhc3N1bWluZyBwb2ludGVyIHRvIG1lbWJlciAl cUQiLCBmbikKKwkgICAgICAmJiAhZXhwbGFpbmVkKQorCSAgICB7CisJICAgICAgaW5mb3JtIChp bnB1dF9sb2NhdGlvbiwgIihhIHBvaW50ZXIgdG8gbWVtYmVyIGNhbiBvbmx5IGJlICIKKwkJCQkg ICAgICAiZm9ybWVkIHdpdGggJTwmJUUlPikiLCBmbik7CisJICAgICAgZXhwbGFpbmVkID0gMTsK KwkgICAgfQogCX0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2djYy9jcC9jcC10cmVlLmggYi9nY2Mv Y3AvY3AtdHJlZS5oCmluZGV4IDk4YjI5ZTljZjgxLi5jZGM5ODUwNGM5OSAxMDA2NDQKLS0tIGEv Z2NjL2NwL2NwLXRyZWUuaAorKysgYi9nY2MvY3AvY3AtdHJlZS5oCkBAIC0yOTM4LDggKzI5Mzgs OSBAQCBzdHJ1Y3QgR1RZKCgpKSBsYW5nX2RlY2xfZm4gewogICB1bnNpZ25lZCBtYXliZV9kZWxl dGVkIDogMTsKICAgdW5zaWduZWQgY29yb3V0aW5lX3AgOiAxOwogICB1bnNpZ25lZCBpbXBsaWNp dF9jb25zdGV4cHIgOiAxOworICB1bnNpZ25lZCB4b2JqX2Z1bmMgOiAxOwogCi0gIHVuc2lnbmVk IHNwYXJlIDogOTsKKyAgdW5zaWduZWQgc3BhcmUgOiA4OwogCiAgIC8qIDMyLWJpdHMgcGFkZGlu ZyBvbiA2NC1iaXQgaG9zdC4gICovCiAKQEAgLTMzMzgsMTQgKzMzMzksMzQgQEAgc3RydWN0IEdU WSgoKSkgbGFuZ19kZWNsIHsKICAgKExBTkdfREVDTF9GTl9DSEVDSyAoTk9ERSktPnN0YXRpY19m dW5jdGlvbikKIAogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBtZWFucyB0aGF0IHRoaXMg ZGVjbCBpcyBhIG5vbi1zdGF0aWMKLSAgIG1lbWJlciBmdW5jdGlvbi4gICovCisgICBtZW1iZXIg ZnVuY3Rpb24sIHVzZSBERUNMX0lPQkpfTUVNQkVSX0ZVTkNfUCBpbnN0ZWFkLiAgKi8KICNkZWZp bmUgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AoTk9ERSkgXAogICAoVFJFRV9DT0RF IChUUkVFX1RZUEUgKE5PREUpKSA9PSBNRVRIT0RfVFlQRSkKIAorLyogTm9uemVybyBmb3IgRlVO Q1RJT05fREVDTCBtZWFucyB0aGF0IHRoaXMgZGVjbCBpcyBhbiBpbXBsaWNpdCBvYmplY3QKKyAg IG1lbWJlciBmdW5jdGlvbi4gICovCisjZGVmaW5lIERFQ0xfSU9CSl9NRU1CRVJfRlVOQ19QKE5P REUpIFwKKyAgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChOT0RFKSkgPT0gTUVUSE9EX1RZUEUpCisK Ky8qIFNpbXBsZSBtZW1iZXIgYWNjZXNzLCBvbmx5IHZhbGlkIGZvciBGVU5DVElPTl9ERUNMIG5v ZGVzLiAgKi8KKyNkZWZpbmUgREVDTF9GVU5DVElPTl9YT0JKX0ZMQUcoTk9ERSkJXAorICAoTEFO R19ERUNMX0ZOX0NIRUNLIChOT0RFKS0+eG9ial9mdW5jKQorCisvKiBOb256ZXJvIGlmIE5PREUg aXMgYW4geG9iaiBtZW1iZXIgZnVuY3Rpb24sCisgICBzYWZlbHkgZXZhbHVhdGVzIHRvIGZhbHNl IGZvciBhbGwgbm9uIEZVTkNUSU9OX0RFQ0wgbm9kZXMuICAqLworI2RlZmluZSBERUNMX1hPQkpf TUVNQkVSX0ZVTkNfUChOT0RFKQkJCVwKKyAgKFRSRUVfQ09ERSAoU1RSSVBfVEVNUExBVEUgKE5P REUpKSA9PSBGVU5DVElPTl9ERUNMCVwKKyAgICYmIERFQ0xfRlVOQ1RJT05fWE9CSl9GTEFHIChO T0RFKSA9PSAxKQorCisvKiBOb256ZXJvIGlmIE5PREUgaXMgYSBtZW1iZXIgZnVuY3Rpb24gd2l0 aCBhbiBvYmplY3QgYXJndW1lbnQsCisgICBpbiBvdGhlciB3b3JkcywgYSBub24tc3RhdGljIG1l bWJlciBmdW5jdGlvbi4gICovCisjZGVmaW5lIERFQ0xfT0JKRUNUX01FTUJFUl9GVU5DX1AoTk9E RSkgXAorICAoREVDTF9JT0JKX01FTUJFUl9GVU5DX1AgKE5PREUpIHx8IERFQ0xfWE9CSl9NRU1C RVJfRlVOQ19QIChOT0RFKSkKKwogLyogTm9uemVybyBmb3IgRlVOQ1RJT05fREVDTCBtZWFucyB0 aGF0IHRoaXMgZGVjbCBpcyBhIG1lbWJlciBmdW5jdGlvbgotICAgKHN0YXRpYyBvciBub24tc3Rh dGljKS4gICovCisgICAoc3RhdGljIG9yIG9iamVjdCkuICAqLwogI2RlZmluZSBERUNMX0ZVTkNU SU9OX01FTUJFUl9QKE5PREUpIFwKLSAgKERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9Q IChOT0RFKSB8fCBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChOT0RFKSkKKyAgKERFQ0xfT0JKRUNU X01FTUJFUl9GVU5DX1AgKE5PREUpIHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKE5PREUpKSBc CiAKIC8qIE5vbnplcm8gZm9yIEZVTkNUSU9OX0RFQ0wgbWVhbnMgdGhhdCB0aGlzIG1lbWJlciBm dW5jdGlvbgogICAgaGFzIGB0aGlzJyBhcyBjb25zdCBYICpjb25zdC4gICovCkBAIC02MTA0LDcg KzYxMjUsOSBAQCBlbnVtIGF1dG9fZGVkdWN0aW9uX2NvbnRleHQKICAgICAgICBpZGVudGljYWwg dG8gdGhlaXIgZGVmYXVsdHMuCiAgICBURkZfTk9fVEVNUExBVEVfQklORElOR1M6IGRvIG5vdCBw cmludCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGVtcGxhdGUKICAgICAgICBhcmd1bWVudHMgZm9y IGEgZnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24uCi0gICBURkZfUE9JTlRFUjogd2Ug YXJlIHByaW50aW5nIGEgcG9pbnRlciB0eXBlLiAgKi8KKyAgIFRGRl9QT0lOVEVSOiB3ZSBhcmUg cHJpbnRpbmcgYSBwb2ludGVyIHR5cGUuCisgICBURkZfWE9CSl9GVU5DOiB3ZSBhcmUgcHJpbnRp bmcgYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbidzCisgICAgICAgcGFyYW1ldGVy cy4gICovCiAKICNkZWZpbmUgVEZGX1BMQUlOX0lERU5USUZJRVIJCQkoMCkKICNkZWZpbmUgVEZG X1NDT1BFCQkJCSgxKQpAQCAtNjEyMiw2ICs2MTQ1LDcgQEAgZW51bSBhdXRvX2RlZHVjdGlvbl9j b250ZXh0CiAjZGVmaW5lIFRGRl9OT19PTUlUX0RFRkFVTFRfVEVNUExBVEVfQVJHVU1FTlRTCSgx IDw8IDEyKQogI2RlZmluZSBURkZfTk9fVEVNUExBVEVfQklORElOR1MJCSgxIDw8IDEzKQogI2Rl ZmluZSBURkZfUE9JTlRFUgkJICAgICAgICAgICAgICAgICgxIDw8IDE0KQorI2RlZmluZSBURkZf WE9CSl9GVU5DCQkJCSgxIDw8IDE1KQogCiAvKiBUaGVzZSBjb25zdGFudHMgY2FuIGJlIHVzZWQg YXMgYml0IGZsYWdzIHRvIGNvbnRyb2wgc3RyaXBfdHlwZWRlZnMuCiAKQEAgLTYyNjQsMTEgKzYy ODgsMTMgQEAgZW51bSBjcF9zdG9yYWdlX2NsYXNzIHsKIAogLyogQW4gaW5kaXZpZHVhbCBkZWNs LXNwZWNpZmllci4gIFRoaXMgaXMgdXNlZCB0byBpbmRleCB0aGUgYXJyYXkgb2YKICAgIGxvY2F0 aW9ucyBmb3IgdGhlIGRlY2xzcGVjcyBpbiBzdHJ1Y3QgY3BfZGVjbF9zcGVjaWZpZXJfc2VxCi0g ICBiZWxvdy4gICovCisgICBiZWxvdy4KKyAgIEEgc3Vic2V0IG9mIHRoZXNlIGVudW1zIGFsc28g Y29ycmVzcG9uZHMgdG8gZWxlbWVudHMgb2YKKyAgIGNwX3BhcnNlcl9zZXRfZGVjbF9zcGVjX3R5 cGU6ZGVjbF9zcGVjX25hbWVzIGluIHBhcnNlci5jYy4gICovCiAKIGVudW0gY3BfZGVjbF9zcGVj IHsKICAgZHNfZmlyc3QsCi0gIGRzX3NpZ25lZCA9IGRzX2ZpcnN0LAorICBkc19zaWduZWQgPSBk c19maXJzdCwgLyogSW5kZXggb2YgZmlyc3QgZWxlbWVudCBvZiBkZWNsX3NwZWNfbmFtZXMuICAq LwogICBkc191bnNpZ25lZCwKICAgZHNfc2hvcnQsCiAgIGRzX2xvbmcsCkBAIC02Mjg1LDYgKzYz MTEsNyBAQCBlbnVtIGNwX2RlY2xfc3BlYyB7CiAgIGRzX2NvbXBsZXgsCiAgIGRzX2NvbnN0aW5p dCwKICAgZHNfY29uc3RldmFsLAorICBkc190aGlzLCAvKiBJbmRleCBvZiBsYXN0IGVsZW1lbnQg b2YgZGVjbF9zcGVjX25hbWVzLiAgKi8KICAgZHNfdGhyZWFkLAogICBkc190eXBlX3NwZWMsCiAg IGRzX3JlZGVmaW5lZF9idWlsdGluX3R5cGVfc3BlYywKZGlmZiAtLWdpdCBhL2djYy9jcC9kZWNs LmNjIGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggMTZhZjU5ZGU2OTYuLjEyMzQ1NDRiNGZiIDEwMDY0 NAotLS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3AvZGVjbC5jYwpAQCAtMTAzMTgsNiAr MTAzMTgsNyBAQCBncm9rZm5kZWNsICh0cmVlIGN0eXBlLAogCSAgICBpbnQgcHVibGljcCwKIAkg ICAgaW50IGlubGluZXAsCiAJICAgIGJvb2wgZGVsZXRlZHAsCisJICAgIGJvb2wgeG9ial9mdW5j X3AsCiAJICAgIHNwZWNpYWxfZnVuY3Rpb25fa2luZCBzZmssCiAJICAgIGJvb2wgZnVuY2RlZl9m bGFnLAogCSAgICBib29sIGxhdGVfcmV0dXJuX3R5cGVfcCwKQEAgLTEwMzI3LDcgKzEwMzI4LDYg QEAgZ3Jva2ZuZGVjbCAodHJlZSBjdHlwZSwKIAkgICAgbG9jYXRpb25fdCBsb2NhdGlvbikKIHsK ICAgdHJlZSBkZWNsOwotICBpbnQgc3RhdGljcCA9IGN0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkg PT0gRlVOQ1RJT05fVFlQRTsKICAgdHJlZSB0OwogCiAgIGlmIChsb2NhdGlvbiA9PSBVTktOT1dO X0xPQ0FUSU9OKQpAQCAtMTA1MjUsMTIgKzEwNTI1LDkgQEAgZ3Jva2ZuZGVjbCAodHJlZSBjdHlw ZSwKIAkJICAoSURFTlRJRklFUl9QT0lOVEVSIChkZWNsYXJhdG9yKSkpKSkpCiAgICAgU0VUX0RF Q0xfTEFOR1VBR0UgKGRlY2wsIGxhbmdfYyk7CiAKLSAgLyogU2hvdWxkIHByb2JhYmx5IHByb3Bh Z2F0ZSBjb25zdCBvdXQgZnJvbSB0eXBlIHRvIGRlY2wgSSBiZXQgKG1ycykuICAqLwotICBpZiAo c3RhdGljcCkKLSAgICB7Ci0gICAgICBERUNMX1NUQVRJQ19GVU5DVElPTl9QIChkZWNsKSA9IDE7 Ci0gICAgICBERUNMX0NPTlRFWFQgKGRlY2wpID0gY3R5cGU7Ci0gICAgfQorICBERUNMX1NUQVRJ Q19GVU5DVElPTl9QIChkZWNsKQorICAgID0gIXhvYmpfZnVuY19wICYmIGN0eXBlICYmIFRSRUVf Q09ERSAodHlwZSkgPT0gRlVOQ1RJT05fVFlQRTsKKyAgREVDTF9GVU5DVElPTl9YT0JKX0ZMQUcg KGRlY2wpID0geG9ial9mdW5jX3A7CiAKICAgaWYgKGRlbGV0ZWRwKQogICAgIERFQ0xfREVMRVRF RF9GTiAoZGVjbCkgPSAxOwpAQCAtMTA2MTAsMjQgKzEwNjA3LDMwIEBAIGdyb2tmbmRlY2wgKHRy ZWUgY3R5cGUsCiAJVFJFRV9UWVBFIChkZWNsKSA9IGFwcGx5X21lbWZuX3F1YWxzIChUUkVFX1RZ UEUgKGRlY2wpLAogCQkJCQkgICAgICBUWVBFX1VOUVVBTElGSUVELAogCQkJCQkgICAgICBSRUZf UVVBTF9OT05FKTsKLQorICAgICAgYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CiAgICAgICBpZiAo cXVhbHMpCi0JewotCSAgZXJyb3IgKGN0eXBlCisJZXJyb3IgKCFjdHlwZQorCSAgICAgICA/IEdf KCJub24tbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKQorCSAg ICAgICA6ICF4b2JqX2Z1bmNfcAogCQkgPyBHXygic3RhdGljIG1lbWJlciBmdW5jdGlvbiAlcUQg Y2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIikKLQkJIDogR18oIm5vbi1tZW1iZXIgZnVuY3Rpb24g JXFEIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIpLAotCQkgZGVjbCk7Ci0JICBxdWFscyA9IFRZ UEVfVU5RVUFMSUZJRUQ7Ci0JfQotCisJCSA6IEdfKCJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICIKKwkJICAgICAgIiVxRCBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiKSwKKwkgICAg ICAgZGVjbCk7CiAgICAgICBpZiAocnF1YWwpCi0JewotCSAgZXJyb3IgKGN0eXBlCisJZXJyb3Ig KCFjdHlwZQorCSAgICAgICA/IEdfKCJub24tbWVtYmVyIGZ1bmN0aW9uICVxRCBjYW5ub3QgaGF2 ZSByZWYtcXVhbGlmaWVyIikKKwkgICAgICAgOiAheG9ial9mdW5jX3AKIAkJID8gR18oInN0YXRp YyBtZW1iZXIgZnVuY3Rpb24gJXFEIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiKQotCQkgOiBH Xygibm9uLW1lbWJlciBmdW5jdGlvbiAlcUQgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIpLAor CQkgOiBHXygiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAiCisJCSAgICAgICIlcUQg Y2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIpLAogCQkgZGVjbCk7Ci0JICBycXVhbCA9IFJFRl9R VUFMX05PTkU7Ci0JfQorCisgICAgICBpZiAoeG9ial9mdW5jX3AgJiYgKHF1YWxzIHx8IHJxdWFs KSkKKwlpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChERUNMX0FSR1VNRU5UUyAoZGVjbCkp LAorCQkiZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBkZWNsYXJlZCBoZXJlIik7CisgICAgICBx dWFscyA9IFRZUEVfVU5RVUFMSUZJRUQ7CisgICAgICBycXVhbCA9IFJFRl9RVUFMX05PTkU7CisK ICAgICB9CiAKICAgaWYgKGRlZHVjdGlvbl9ndWlkZV9wIChkZWNsKSkKQEAgLTEyOTk4LDYgKzEz MDAxLDggQEAgZ3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3Is CiAgIGlmIChhdHRybGlzdCkKICAgICBkaWFnbm9zZV9taXNhcHBsaWVkX2NvbnRyYWN0cyAoKmF0 dHJsaXN0KTsKIAorICAvKiBTa2lwIG92ZXIgYnVpbGRfbWVtZm5fdHlwZSB3aGVuIGEgRlVOQ1RJ T05fREVDTCBpcyBhbiB4b2JqIG1lbWZuLiAgKi8KKyAgYm9vbCBpc194b2JqX21lbWJlcl9mdW5j dGlvbiA9IGZhbHNlOwogICAvKiBEZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGVudGl0eSBkZWNs YXJlZCBieSByZWN1cnJpbmcgb24gdGhlCiAgICAgIGRlY2xhcmF0b3IuICAqLwogICBmb3IgKDsg ZGVjbGFyYXRvcjsgZGVjbGFyYXRvciA9IGRlY2xhcmF0b3ItPmRlY2xhcmF0b3IpCkBAIC0xMzEx Myw2ICsxMzExOCw5MiBAQCBncm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAqZGVj bGFyYXRvciwKIAkgICAgaWYgKHJhaXNlcyA9PSBlcnJvcl9tYXJrX25vZGUpCiAJICAgICAgcmFp c2VzID0gTlVMTF9UUkVFOwogCisJICAgIGF1dG8gZmluZF94b2JqX3Bhcm0gPSBbXSh0cmVlIHBh cm1fbGlzdCkKKwkgICAgICB7CisJCS8qIFRoZXJlIGlzIG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVy IHRoZSBsaXN0LAorCQkgICBvbmx5IHRoZSBmaXJzdCBwYXJtIGNhbiBiZSBhIHZhbGlkIHhvYmog cGFybS4gICovCisJCWlmICghcGFybV9saXN0IHx8IFRSRUVfUFVSUE9TRSAocGFybV9saXN0KSAh PSB0aGlzX2lkZW50aWZpZXIpCisJCSAgcmV0dXJuIE5VTExfVFJFRTsKKwkJLyogSWYgd2UgbWFr ZSBpdCBoZXJlLCB3ZSBhcmUgbG9va2luZyBhdCBhbiB4b2JqIHBhcm0uCisKKwkJICAgTm9uLW51 bGwgJ3B1cnBvc2UnIHVzdWFsbHkgbWVhbnMgdGhlIHBhcm0gaGFzIGEgZGVmYXVsdAorCQkgICBh cmd1bWVudCwgd2UgZG9uJ3Qgd2FudCB0byB2aW9sYXRlIHRoaXMgYXNzdW1wdGlvbi4gICovCisJ CVRSRUVfUFVSUE9TRSAocGFybV9saXN0KSA9IE5VTExfVFJFRTsKKwkJcmV0dXJuIFRSRUVfVkFM VUUgKHBhcm1fbGlzdCk7CisJICAgICAgfTsKKworCSAgICB0cmVlIHhvYmpfcGFybQorCSAgICAg ID0gZmluZF94b2JqX3Bhcm0gKGRlY2xhcmF0b3ItPnUuZnVuY3Rpb24ucGFyYW1ldGVycyk7CisJ ICAgIGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uID0geG9ial9wYXJtOworCisJICAgIGlmICh4b2Jq X3Bhcm0gJiYgY3h4X2RpYWxlY3QgPCBjeHgyMykKKwkgICAgICBwZWR3YXJuIChERUNMX1NPVVJD RV9MT0NBVElPTiAoeG9ial9wYXJtKSwgT1BUX1djX18yM19leHRlbnNpb25zLAorCQkgICAgICAg ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gb25seSBhdmFpbGFibGUgIgorCQkgICAg ICAgIndpdGggJTwtc3RkPWMrKzIzJT4gb3IgJTwtc3RkPWdudSsrMjMlPiIpOworCisJICAgIGlm ICh4b2JqX3Bhcm0gJiYgZGVjbF9jb250ZXh0ID09IFRZUEVOQU1FKQorCSAgICAgIHsKKwkJLyog V2UgaW5mb3JtIGluIGV2ZXJ5IGNhc2UsIGp1c3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdo YXQKKwkJICAgY2FzZSBpdCBpcy4gICovCisJCWF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCQli b29sIHB0cl90eXBlID0gdHJ1ZTsKKwkJLyogSWYgZGVjbGFyYXRvci0+a2luZCBpcyBjZGtfZnVu Y3Rpb24gYW5kIHdlIGFyZSBhdCB0aGUgZW5kIG9mCisJCSAgIHRoZSBkZWNsYXJhdG9yIGNoYWlu LCB3ZSBhcmUgbG9va2luZyBhdCBhIGZ1bmN0aW9uIHR5cGUuICAqLworCQlpZiAoIWRlY2xhcmF0 b3ItPmRlY2xhcmF0b3IpCisJCSAgeworCQkgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FU SU9OICh4b2JqX3Bhcm0pLAorCQkJICAgICAgImEgZnVuY3Rpb24gdHlwZSBjYW5ub3QgIgorCQkJ ICAgICAgImhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIpOworCQkgICAgcHRyX3R5 cGUgPSBmYWxzZTsKKwkJICB9CisJCWVsc2UgaWYgKGRlY2xhcmF0b3ItPmRlY2xhcmF0b3ItPmtp bmQgPT0gY2RrX3BvaW50ZXIpCisJCSAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4 b2JqX3Bhcm0pLAorCQkJIC8qICJhIHBvaW50ZXIgdG8gZnVuY3Rpb24gdHlwZSBjYW5ub3QgIj8g ICovCisJCQkgICAgImEgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGNhbm5vdCAiCisJCQkgICAgImhh dmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIpOworCQllbHNlIGlmIChkZWNsYXJhdG9y LT5kZWNsYXJhdG9yLT5raW5kID09IGNka19wdHJtZW0pCisJCSAgZXJyb3JfYXQgKERFQ0xfU09V UkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkJICAgICJhIHBvaW50ZXIgdG8gbWVtYmVyIGZ1 bmN0aW9uIHR5cGUgIgorCQkJICAgICJjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFy YW1ldGVyIik7CisJCWVsc2UKKwkJICBnY2NfdW5yZWFjaGFibGUgKCk7CisJCQorCQkvKiBUaGUg bG9jYXRpb25zIGJlaW5nIHVzZWQgaGVyZSBhcmUgcHJvYmFibHkgbm90IGNvcnJlY3QuICAqLwor CQlpZiAocHRyX3R5cGUpCisJCSAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9w YXJtKSwKKwkJCSAgInRoZSB0eXBlIG9mIGEgcG9pbnRlciB0byBleHBsaWNpdCBvYmplY3QgbWVt YmVyICIKKwkJCSAgImZ1bmN0aW9uIGlzIGEgcmVndWxhciBwb2ludGVyIHRvIGZ1bmN0aW9uIHR5 cGUiKTsKKwkJZWxzZQorCQkgIGluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFy bSksCisJCQkgICJ0aGUgdHlwZSBvZiBhbiBleHBsaWNpdCBvYmplY3QgIgorCQkJICAibWVtYmVy IGZ1bmN0aW9uIGlzIGEgcmVndWxhciBmdW5jdGlvbiB0eXBlIik7CisJCS8qIElkZWFsbHkgd2Ug c2hvdWxkIHN5bnRoZXNpemUgdGhlIGNvcnJlY3Qgc3ludGF4CisJCSAgIGZvciB0aGUgdXNlciwg cGVyaGFwcyB0aGlzIGNvdWxkIGJlIGFkZGVkIGxhdGVyLiAgKi8KKwkgICAgICB9CisJICAgIC8q IFNpbmNlIGEgdmFsaWQgeG9iaiBwYXJtIGhhcyBpdCdzIHB1cnBvc2UgY2xlYXJlZCBpbiBmaW5k X3hvYmpfcGFybQorCSAgICAgICB0aGUgZmlyc3QgcGFybSBub2RlIHdpbGwgbmV2ZXIgZXJyb25l b3VzbHkgYmUgZGV0ZWN0ZWQgaGVyZS4gICovCisJICAgIHsKKwkgICAgICBhdXRvX2RpYWdub3N0 aWNfZ3JvdXAgZDsKKwkgICAgICBib29sIGJhZF94b2JqX3Bhcm1fZW5jb3VudGVyZWQgPSBmYWxz ZTsKKwkgICAgICBmb3IgKHRyZWUgcGFybSA9IGRlY2xhcmF0b3ItPnUuZnVuY3Rpb24ucGFyYW1l dGVyczsKKwkJICAgcGFybSAmJiBwYXJtICE9IHZvaWRfbGlzdF9ub2RlOworCQkgICBwYXJtID0g VFJFRV9DSEFJTiAocGFybSkpCisJCXsKKwkJICBpZiAoVFJFRV9QVVJQT1NFIChwYXJtKSAhPSB0 aGlzX2lkZW50aWZpZXIpCisJCSAgICBjb250aW51ZTsKKwkJICBiYWRfeG9ial9wYXJtX2VuY291 bnRlcmVkID0gdHJ1ZTsKKwkJICBnY2NfcmljaF9sb2NhdGlvbiBiYWRfeG9ial9wYXJtCisJCSAg ICAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKFRSRUVfVkFMVUUgKHBhcm0pKSk7CisJCSAgLyogSSdt IGtlZXBpbmcgaXQgbW9yZSBiYXNpYyBmb3Igbm93LiAgKi8KKwkJICBlcnJvcl9hdCAoJmJhZF94 b2JqX3Bhcm0sCisJCQkgICJPbmx5IHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgYSBtZW1iZXIgZnVu Y3Rpb24gIgorCQkJICAiY2FuIGJlIGRlY2xhcmVkIGFzIGFuIGV4cGxpY2l0IG9iamVjdCBwYXJh bWV0ZXIiKTsKKwkJfQorCSAgICAgIGlmIChiYWRfeG9ial9wYXJtX2VuY291bnRlcmVkICYmIHhv YmpfcGFybSkKKwkJaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJtKSwKKwkJ CSJWYWxpZCBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiKTsKKwkgICAg fQorCiAJICAgIGlmIChyZXFzKQogCSAgICAgIGVycm9yX2F0IChsb2NhdGlvbl9vZiAocmVxcyks ICJyZXF1aXJlcy1jbGF1c2Ugb24gcmV0dXJuIHR5cGUiKTsKIAkgICAgcmVxcyA9IGRlY2xhcmF0 b3ItPnUuZnVuY3Rpb24ucmVxdWlyZXNfY2xhdXNlOwpAQCAtMTM0MDAsNiArMTM0OTEsMzggQEAg Z3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAJCSAgZXhw bGljaXRwID0gMjsKIAkgICAgICB9CiAKKwkgICAgaWYgKHhvYmpfcGFybSkKKwkgICAgICB7CisJ CWlmICghY3R5cGUKKwkJICAgICYmIGRlY2xfY29udGV4dCA9PSBOT1JNQUwKKwkJICAgICYmIChp bl9uYW1lc3BhY2UKKwkJCXx8ICFkZWNsYXJhdG9yLT5kZWNsYXJhdG9yLT51LmlkLnF1YWxpZnlp bmdfc2NvcGUpKQorCQkgIGVycm9yX2F0IChERUNMX1NPVVJDRV9MT0NBVElPTiAoeG9ial9wYXJt KSwKKwkJCSAgICAiYSBub24tbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBoYXZlICIKKwkJCSAgICAi YW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIpOworCQllbHNlCisJCSAgeworCQkgICAgaWYg KHZpcnR1YWxwKQorCQkgICAgICB7CisJCQlhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKwkJCWVy cm9yX2F0IChkZWNsc3BlY3MtPmxvY2F0aW9uc1tkc192aXJ0dWFsXSwKKwkJCQkgICJhbiBleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIGNhbm5vdCBiZSAiCisJCQkJICAiJTx2aXJ0dWFs JT4iKTsKKwkJCWluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkJ ImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIpOworCQkJdmlydHVhbHAg PSBmYWxzZTsKKwkJICAgICAgfQorCQkgICAgaWYgKHN0YXRpY3AgPj0gMikKKwkJICAgICAgewor CQkJYXV0b19kaWFnbm9zdGljX2dyb3VwIGQ7CisJCQllcnJvcl9hdCAoZGVjbHNwZWNzLT5sb2Nh dGlvbnNbZHNfc3RvcmFnZV9jbGFzc10sCisJCQkJICAiYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiBjYW5ub3QgYmUgIgorCQkJCSAgIiU8c3RhdGljJT4iKTsKKwkJCWluZm9ybSAo REVDTF9TT1VSQ0VfTE9DQVRJT04gKHhvYmpfcGFybSksCisJCQkJImV4cGxpY2l0IG9iamVjdCBw YXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIpOworCQkgICAgICB9CisJCSAgfQorCSAgICAgIH0KIAkg ICAgdHJlZSBwdXNoZWRfc2NvcGUgPSBOVUxMX1RSRUU7CiAJICAgIGlmIChmdW5jZGVjbF9wCiAJ CSYmIGRlY2xfY29udGV4dCAhPSBGSUVMRApAQCAtMTQxNzcsNiArMTQzMDAsOCBAQCBncm9rZGVj bGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAqZGVjbGFyYXRvciwKICAgICB9CiAKICAgaWYg KGN0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gRlVOQ1RJT05fVFlQRSAmJiBzdGF0aWNwIDwg MgorICAgICAgLyogRG9uJ3QgY29udmVydCB4b2JqIG1lbWJlciBmdW5jdGlvbnMgdG8gTUVUSE9E X1RZUEUuICAqLworICAgICAgJiYgIWlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uCiAgICAgICAmJiAh KHVucXVhbGlmaWVkX2lkCiAJICAgJiYgaWRlbnRpZmllcl9wICh1bnF1YWxpZmllZF9pZCkKIAkg ICAmJiBJREVOVElGSUVSX05FV0RFTF9PUF9QICh1bnF1YWxpZmllZF9pZCkpKQpAQCAtMTQzOTgs NyArMTQ1MjMsOCBAQCBncm9rZGVjbGFyYXRvciAoY29uc3QgY3BfZGVjbGFyYXRvciAqZGVjbGFy YXRvciwKIAkJCSAgICAgICBmcmllbmRwID8gLTEgOiAwLCBmcmllbmRwLCBwdWJsaWNwLAogCQkJ ICAgICAgIGlubGluZXAgfCAoMiAqIGNvbnN0ZXhwcl9wKSB8ICg0ICogY29uY2VwdF9wKQogCQkJ CSAgICAgICB8ICg4ICogY29uc3RldmFsX3ApLAotCQkJICAgICAgIGluaXRpYWxpemVkID09IFNE X0RFTEVURUQsIHNmaywKKwkJCSAgICAgICBpbml0aWFsaXplZCA9PSBTRF9ERUxFVEVELAorCQkJ ICAgICAgIGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uLCBzZmssCiAJCQkgICAgICAgZnVuY2RlZl9m bGFnLCBsYXRlX3JldHVybl90eXBlX3AsCiAJCQkgICAgICAgdGVtcGxhdGVfY291bnQsIGluX25h bWVzcGFjZSwKIAkJCSAgICAgICBhdHRybGlzdCwgaWRfbG9jKTsKQEAgLTE0NzMzLDggKzE0ODU5 LDggQEAgZ3Jva2RlY2xhcmF0b3IgKGNvbnN0IGNwX2RlY2xhcmF0b3IgKmRlY2xhcmF0b3IsCiAJ CQkgICBpbmxpbmVwIHwgKDIgKiBjb25zdGV4cHJfcCkgfCAoNCAqIGNvbmNlcHRfcCkKIAkJCQkg ICB8ICg4ICogY29uc3RldmFsX3ApLAogCQkJICAgaW5pdGlhbGl6ZWQgPT0gU0RfREVMRVRFRCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmaywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZ1bmNkZWZfZmxhZywKKwkJCSAgIGlzX3hvYmpfbWVtYmVyX2Z1bmN0aW9uLCBzZmssCisJ CQkgICBmdW5jZGVmX2ZsYWcsCiAJCQkgICBsYXRlX3JldHVybl90eXBlX3AsCiAJCQkgICB0ZW1w bGF0ZV9jb3VudCwgaW5fbmFtZXNwYWNlLCBhdHRybGlzdCwKIAkJCSAgIGlkX2xvYyk7CkBAIC0x NTYyOCw3ICsxNTc1NCw4IEBAIGdyb2tfb3BfcHJvcGVydGllcyAodHJlZSBkZWNsLCBib29sIGNv bXBsYWluKQogICAvKiBBbiBvcGVyYXRvciBmdW5jdGlvbiBtdXN0IGVpdGhlciBiZSBhIG5vbi1z dGF0aWMgbWVtYmVyIGZ1bmN0aW9uCiAgICAgIG9yIGhhdmUgYXQgbGVhc3Qgb25lIHBhcmFtZXRl ciBvZiBhIGNsYXNzLCBhIHJlZmVyZW5jZSB0byBhIGNsYXNzLAogICAgICBhbiBlbnVtZXJhdGlv biwgb3IgYSByZWZlcmVuY2UgdG8gYW4gZW51bWVyYXRpb24uICAxMy40LjAuNiAqLwotICBpZiAo ISBtZXRob2RwIHx8IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGRlY2wpKQorICBpZiAoKCFtZXRo b2RwICYmICFERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZGVjbCkpCisgICAgICB8fCBERUNMX1NU QVRJQ19GVU5DVElPTl9QIChkZWNsKSkKICAgICB7CiAgICAgICBpZiAob3BlcmF0b3JfY29kZSA9 PSBUWVBFX0VYUFIKIAkgIHx8IG9wZXJhdG9yX2NvZGUgPT0gQ09NUE9ORU5UX1JFRgpAQCAtMTcz ODIsNiArMTc1MDksOCBAQCBzdGFydF9wcmVwYXJzZWRfZnVuY3Rpb24gKHRyZWUgZGVjbDEsIHRy ZWUgYXR0cnMsIGludCBmbGFncykKICAgdHJlZSBmbnR5cGUgPSBUUkVFX1RZUEUgKGRlY2wxKTsK ICAgaWYgKFRSRUVfQ09ERSAoZm50eXBlKSA9PSBNRVRIT0RfVFlQRSkKICAgICBjdHlwZSA9IFRZ UEVfTUVUSE9EX0JBU0VUWVBFIChmbnR5cGUpOworICBlbHNlIGlmIChERUNMX1hPQkpfTUVNQkVS X0ZVTkNfUCAoZGVjbDEpKQorICAgIGN0eXBlID0gREVDTF9DT05URVhUIChkZWNsMSk7CiAgIGVs c2UKICAgICB7CiAgICAgICBjdHlwZSA9IERFQ0xfRlJJRU5EX0NPTlRFWFQgKGRlY2wxKTsKQEAg LTE3NjA5LDcgKzE3NzM4LDkgQEAgc3RhcnRfcHJlcGFyc2VkX2Z1bmN0aW9uICh0cmVlIGRlY2wx LCB0cmVlIGF0dHJzLCBpbnQgZmxhZ3MpCiAgIC8qIFN0YXJ0IHRoZSBzdGF0ZW1lbnQtdHJlZSwg c3RhcnQgdGhlIHRyZWUgbm93LiAgKi8KICAgREVDTF9TQVZFRF9UUkVFIChkZWNsMSkgPSBwdXNo X3N0bXRfbGlzdCAoKTsKIAotICBpZiAoY3R5cGUgJiYgIWRvaW5nX2ZyaWVuZCAmJiAhREVDTF9T VEFUSUNfRlVOQ1RJT05fUCAoZGVjbDEpKQorICAvKiBXZSBkb24ndCBuZWVkIGRlYWwgd2l0aCAn dGhpcycgb3IgdnRhYmxlIGZvciB4b2JqIG1lbWJlciBmdW5jdGlvbnMuICAqLworICBpZiAoY3R5 cGUgJiYgIWRvaW5nX2ZyaWVuZCAmJgorICAgICAgIShERUNMX1NUQVRJQ19GVU5DVElPTl9QIChk ZWNsMSkgfHwgREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKGRlY2wxKSkpCiAgICAgewogICAgICAg LyogV2Uga25vdyB0aGF0IHRoaXMgd2FzIHNldCB1cCBieSBgZ3Jva2NsYXNzZm4nLiAgV2UgZG8g bm90CiAJIHdhaXQgdW50aWwgYHN0b3JlX3Bhcm1fZGVjbHMnLCBzaW5jZSBldmlsIHBhcnNlIGVy cm9ycyBtYXkKZGlmZiAtLWdpdCBhL2djYy9jcC9lcnJvci5jYyBiL2djYy9jcC9lcnJvci5jYwpp bmRleCAwZWQ2OWJjYTZmYy4uYzk4NzBkNDU3MDYgMTAwNjQ0Ci0tLSBhL2djYy9jcC9lcnJvci5j YworKysgYi9nY2MvY3AvZXJyb3IuY2MKQEAgLTE4MzEsNyArMTgzMSw5IEBAIGR1bXBfZnVuY3Rp b25fZGVjbCAoY3h4X3ByZXR0eV9wcmludGVyICpwcCwgdHJlZSB0LCBpbnQgZmxhZ3MpCiAKICAg aWYgKCEoZmxhZ3MgJiBURkZfTk9fRlVOQ1RJT05fQVJHVU1FTlRTKSkKICAgICB7Ci0gICAgICBk dW1wX3BhcmFtZXRlcnMgKHBwLCBwYXJtdHlwZXMsIGZsYWdzKTsKKyAgICAgIGR1bXBfcGFyYW1l dGVycyAocHAsIHBhcm10eXBlcywKKwkJICAgICAgIERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QICh0 KSA/IFRGRl9YT0JKX0ZVTkMgfCBmbGFncworCQkJCQkJICAgIDogZmxhZ3MpOwogCiAgICAgICBp ZiAoVFJFRV9DT0RFIChmbnR5cGUpID09IE1FVEhPRF9UWVBFKQogCXsKQEAgLTE5MTAsNiArMTkx Miw4IEBAIGR1bXBfcGFyYW1ldGVycyAoY3h4X3ByZXR0eV9wcmludGVyICpwcCwgdHJlZSBwYXJt dHlwZXMsIGludCBmbGFncykKICAgZm9yIChmaXJzdCA9IDE7IHBhcm10eXBlcyAhPSB2b2lkX2xp c3Rfbm9kZTsKICAgICAgICBwYXJtdHlwZXMgPSBUUkVFX0NIQUlOIChwYXJtdHlwZXMpKQogICAg IHsKKyAgICAgIGlmIChmaXJzdCAmJiBmbGFncyAmIFRGRl9YT0JKX0ZVTkMpCisJcHBfc3RyaW5n IChwcCwgInRoaXMgIik7CiAgICAgICBpZiAoIWZpcnN0KQogCXBwX3NlcGFyYXRlX3dpdGhfY29t bWEgKHBwKTsKICAgICAgIGZpcnN0ID0gMDsKQEAgLTM2ODUsNiArMzY4OSw4IEBAIGZ1bmN0aW9u X2NhdGVnb3J5ICh0cmVlIGZuKQogCXJldHVybiBfKCJJbiBkZXN0cnVjdG9yICVxRCIpOwogICAg ICAgZWxzZSBpZiAoTEFNQkRBX0ZVTkNUSU9OX1AgKGZuKSkKIAlyZXR1cm4gXygiSW4gbGFtYmRh IGZ1bmN0aW9uIik7CisgICAgICBlbHNlIGlmIChERUNMX1hPQkpfTUVNQkVSX0ZVTkNfUCAoZm4p KQorCXJldHVybiBfKCJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICVxRCIpOwog ICAgICAgZWxzZQogCXJldHVybiBfKCJJbiBtZW1iZXIgZnVuY3Rpb24gJXFEIik7CiAgICAgfQpk aWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbWJkYS5jYyBiL2djYy9jcC9sYW1iZGEuY2MKaW5kZXggYTM1 OWJjNmVlOGQuLjUzZDY3OGYyYmVkIDEwMDY0NAotLS0gYS9nY2MvY3AvbGFtYmRhLmNjCisrKyBi L2djYy9jcC9sYW1iZGEuY2MKQEAgLTQwNSw4ICs0MDUsMTIgQEAgYnVpbGRfY2FwdHVyZV9wcm94 eSAodHJlZSBtZW1iZXIsIHRyZWUgaW5pdCkKICAgZm4gPSBsYW1iZGFfZnVuY3Rpb24gKGNsb3N1 cmUpOwogICBsYW0gPSBDTEFTU1RZUEVfTEFNQkRBX0VYUFIgKGNsb3N1cmUpOwogCi0gIC8qIFRo ZSBwcm94eSB2YXJpYWJsZSBmb3J3YXJkcyB0byB0aGUgY2FwdHVyZSBmaWVsZC4gICovCi0gIG9i amVjdCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmIChERUNMX0FSR1VNRU5UUyAoZm4pKTsKKyAg b2JqZWN0ID0gREVDTF9BUkdVTUVOVFMgKGZuKTsKKyAgLyogTWFraW5nIHRoaXMgY29uZGl0aW9u YWwgcHJldmVudHMgdGhlIElDRSwgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHdvcmsKKyAgICAgY29y cmVjdGx5LiAgKi8KKyAgaWYgKElORElSRUNUX1RZUEVfUCAoVFJFRV9UWVBFIChvYmplY3QpKSkK KyAgICAvKiBUaGUgcHJveHkgdmFyaWFibGUgZm9yd2FyZHMgdG8gdGhlIGNhcHR1cmUgZmllbGQu ICAqLworICAgIG9iamVjdCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmIChvYmplY3QpOwogICBv YmplY3QgPSBmaW5pc2hfbm9uX3N0YXRpY19kYXRhX21lbWJlciAobWVtYmVyLCBvYmplY3QsIE5V TExfVFJFRSk7CiAgIGlmIChSRUZFUkVOQ0VfUkVGX1AgKG9iamVjdCkpCiAgICAgb2JqZWN0ID0g VFJFRV9PUEVSQU5EIChvYmplY3QsIDApOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL21vZHVsZS5jYyBi L2djYy9jcC9tb2R1bGUuY2MKaW5kZXggYzFjOGMyMjZiYzEuLjg3MjNmMjNjNGFlIDEwMDY0NAot LS0gYS9nY2MvY3AvbW9kdWxlLmNjCisrKyBiL2djYy9jcC9tb2R1bGUuY2MKQEAgLTU2ODMsNiAr NTY4Myw3IEBAIHRyZWVzX291dDo6bGFuZ19kZWNsX2Jvb2xzICh0cmVlIHQpCiAgICAgICBXQiAo bGFuZy0+dS5mbi5oYXNfZGVwZW5kZW50X2V4cGxpY2l0X3NwZWNfcCk7CiAgICAgICBXQiAobGFu Zy0+dS5mbi5pbW1lZGlhdGVfZm5fcCk7CiAgICAgICBXQiAobGFuZy0+dS5mbi5tYXliZV9kZWxl dGVkKTsKKyAgICAgIFdCIChsYW5nLT51LmZuLnhvYmpfZnVuYyk7CiAgICAgICBnb3RvIGxkc19t aW47CiAKICAgICBjYXNlIGxkc19kZWNvbXA6ICAvKiBsYW5nX2RlY2xfZGVjb21wLiAgKi8KQEAg LTU3NTEsNiArNTc1Miw3IEBAIHRyZWVzX2luOjpsYW5nX2RlY2xfYm9vbHMgKHRyZWUgdCkKICAg ICAgIFJCIChsYW5nLT51LmZuLmhhc19kZXBlbmRlbnRfZXhwbGljaXRfc3BlY19wKTsKICAgICAg IFJCIChsYW5nLT51LmZuLmltbWVkaWF0ZV9mbl9wKTsKICAgICAgIFJCIChsYW5nLT51LmZuLm1h eWJlX2RlbGV0ZWQpOworICAgICAgUkIgKGxhbmctPnUuZm4ueG9ial9mdW5jKTsKICAgICAgIGdv dG8gbGRzX21pbjsKIAogICAgIGNhc2UgbGRzX2RlY29tcDogIC8qIGxhbmdfZGVjbF9kZWNvbXAu ICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3BhcnNlci5jYyBiL2djYy9jcC9wYXJzZXIuY2MKaW5k ZXggMjBlMTgzNjU5MDYuLmYyZGVlY2E0MGYyIDEwMDY0NAotLS0gYS9nY2MvY3AvcGFyc2VyLmNj CisrKyBiL2djYy9jcC9wYXJzZXIuY2MKQEAgLTExNzUwLDYgKzExNzUwLDMxIEBAIGNwX3BhcnNl cl9sYW1iZGFfZGVjbGFyYXRvcl9vcHQgKGNwX3BhcnNlciogcGFyc2VyLCB0cmVlIGxhbWJkYV9l eHByKQogICAgIH0KICAgZWxzZSBpZiAoY3h4X2RpYWxlY3QgPCBjeHgyMykKICAgICBvbWl0dGVk X3Bhcm1zX2xvYyA9IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpLT5sb2NhdGlv bjsKKyAgLyogV2UganVzdCBuZWVkIHRvIHBlZWsgaGVyZSwKKyAgICAgZ3Jva2RlY2xhcmF0b3Ig ZG9lcyB0aGUgcmVzdCB3aXRoIHRoaXMgc28gZG9uJ3QgbXV0YXRlIGl0LiAgKi8KKyAgdHJlZSBj b25zdCB4b2JqX3BhcmFtCisgICAgPSBwYXJhbV9saXN0ICYmIFRSRUVfUFVSUE9TRSAocGFyYW1f bGlzdCkgPT0gdGhpc19pZGVudGlmaWVyCisgICAgICA/IFRSRUVfVkFMVUUgKHBhcmFtX2xpc3Qp IDogTlVMTF9UUkVFOworCisgIGlmICh4b2JqX3BhcmFtCisgICAgICAmJiAoTEFNQkRBX0VYUFJf REVGQVVMVF9DQVBUVVJFX01PREUgKGxhbWJkYV9leHByKSAhPSBDUExEX05PTkUKKwkgIHx8IExB TUJEQV9FWFBSX0NBUFRVUkVfTElTVCAobGFtYmRhX2V4cHIpKSkKKyAgICB7CisgICAgICAvKiBT aW5jZSBhIGxhbWJkYSdzIHR5cGUgaXMgYW5vbnltb3VzLCB3ZSBjYW4gYXNzdW1lIGFuIGV4cGxp Y2l0IG9iamVjdAorCSBwYXJhbWV0ZXIgaXMgdW5yZWxhdGVkLi4uIGF0IGxlYXN0IEkgYmVsaWV2 ZSBzby4gSSBjYW4gdGhpbmsgb2YgYQorCSBwYXJhZG94aWNhbCBjYXNlIHRoYXQgYWxtb3N0IHdv cmtzLCB3aGVyZSBhIGNsYXNzIGlzIGZvcndhcmQgZGVjbGFyZWQKKwkgYW5kIHRoZW4gZGVmaW5l ZCBkZXJpdmluZyBmcm9tIGEgbGFtYmRhIHRoYXQgaGFzIGFuIGV4cGxpY2l0IG9iamVjdAorCSBw YXJhbWV0ZXIgb2YgdGhhdCBjbGFzcyB0eXBlLCBidXQgdGhlIG9ubHkgd2F5IHRoYXQgY2FuIHdv cmsgaXMgd2l0aAorCSBkZWNsdHlwZS4uLiBva2F5IHllYWggSSB0aGluayBpdCBjYW4gd29yayBm b3IgYSBzdHJ1Y3QgZGVmaW5lZCBpbgorCSBibG9jayBzY29wZSwgYnV0IEknbSBsZWF2aW5nIHRo aXMgYXMgaXMgdW50aWwgSSBjYW4gY29uZmlybSBteQorCSBoeXBvdGhlc2lzLiAgKi8KKyAgICAg IGlmICghVEVNUExBVEVfUEFSTV9QIChub25fcmVmZXJlbmNlIChUUkVFX1RZUEUgKHhvYmpfcGFy YW0pKSkpCisJeworICAgICAgICAgIGVycm9yKCJhIGxhbWJkYSB3aXRoIGNhcHR1cmVzIG1heSBu b3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgIgorCQkicGFyYW1ldGVyIG9mIGFuIHVucmVsYXRl ZCB0eXBlIik7CisJICBMQU1CREFfRVhQUl9DQVBUVVJFX0xJU1QgKGxhbWJkYV9leHByKSA9IE5V TExfVFJFRTsKKwl9CisgICAgfQogCiAgIC8qIEluIHRoZSBkZWNsLXNwZWNpZmllci1zZXEgb2Yg dGhlIGxhbWJkYS1kZWNsYXJhdG9yLCBlYWNoCiAgICAgIGRlY2wtc3BlY2lmaWVyIHNoYWxsIGVp dGhlciBiZSBtdXRhYmxlIG9yIGNvbnN0ZXhwci4gICovCkBAIC0xMTc2NywyNCArMTE3OTIsODEg QEAgY3BfcGFyc2VyX2xhbWJkYV9kZWNsYXJhdG9yX29wdCAoY3BfcGFyc2VyKiBwYXJzZXIsIHRy ZWUgbGFtYmRhX2V4cHIpCiAJICAgICAgICIlPC1zdGQ9Z251KysyYiU+Iik7CiAgICAgICBvbWl0 dGVkX3Bhcm1zX2xvYyA9IFVOS05PV05fTE9DQVRJT047CiAgICAgfQotCiAgIGlmIChsYW1iZGFf c3BlY3Muc3RvcmFnZV9jbGFzcyA9PSBzY19tdXRhYmxlKQogICAgIHsKLSAgICAgIExBTUJEQV9F WFBSX01VVEFCTEVfUCAobGFtYmRhX2V4cHIpID0gMTsKLSAgICAgIHF1YWxzID0gVFlQRV9VTlFV QUxJRklFRDsKKyAgICAgIC8qIFRoaXMgbWlnaHQgbm90IGJlIHRoZSBtb3N0IGFwcHJvcHJpYXRl IHBsYWNlIGZvciB0aGlzLCBidXQgSSdtIGdvaW5nCisJIHRvIGhvbGQgYmFjayBvbiBjaGFuZ2lu ZyBpdCBmb3IgdGhlIHRpbWUgYmVpbmcgc2luY2Ugd2UgYXJlIHNob3J0IG9uCisJIHRpbWUuIEl0 J3Mgbm90IHJlYWxseSBhIHBhcnNlciBlcnJvciwgaXQncyBtb3JlIGEgc2VtYW50aWMgZXJyb3Iu CisJIEJ1dCB0aGlzIGlzIHdoZXJlIHRoZSBvdGhlciBlcnJvcnMgd2VyZSBzby4uLiAgKi8KKyAg ICAgIGlmICh4b2JqX3BhcmFtKQorCXsKKwkgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCSAg ZXJyb3JfYXQgKGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNbZHNfc3RvcmFnZV9jbGFzc10sCisJCSAg ICAiJTxtdXRhYmxlJT4gbGFtYmRhIHNwZWNpZmllciAiCisJCSAgICAid2l0aCBleHBsaWNpdCBv YmplY3QgcGFyYW1ldGVyIik7CisJICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OKHhvYmpf cGFyYW0pLAorCQkgICJleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGRlY2xhcmVkIGhlcmUiKTsK KwkgIC8qIEVycm9yIHJlcG9ydGluZyBoZXJlIGlzIGEgbGl0dGxlIGF3a3dhcmQsIGlmIHRoZSB0 eXBlIG9mIHRoZQorCSAgICAgb2JqZWN0IHBhcmFtZXRlciBpcyBkZWR1Y2VkLCB3ZSBzaG91bGQg dGVsbCB0aGVtIHRoZSBsYW1iZGEKKwkgICAgIGlzIGVmZmVjdGl2ZWx5IGFscmVhZHkgY29uc3Qs IG9yIHRvIG1ha2UgdGhlIHBhcmFtIGNvbnN0IGlmIGl0IGlzCisJICAgICBub3QsIGJ1dCBpZiBp dCBpcyBkZWR1Y2VkIGFuZCB0YWtlbiBieSB2YWx1ZSBzaG91bGRuJ3Qgd2Ugc2F5CisJICAgICB0 aGF0IGl0J3MgdGFrZW4gYnkgY29weSBhbmQgd29uJ3QgbXV0YXRlPworCSAgICAgU2VlbXMgcmln aHQgdG8gbWUsIGJ1dCBpdCdzIGEgbGl0dGxlIHN0cmFuZ2UuICAqLworCisJICAvKiBBbiB4b2Jq IHBhcmFtZXRlciB3aXRoIGFuIHVucmVsYXRlZCB0eXBlIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVl bgorCSAgICAgZGlhZ25vc2VkLCB0aGF0IG1lYW5zIHdlIGRlZmluaXRlbHkgaGF2ZSBhIHRlbXBs YXRlIHR5cGUgcGFyYW0uCisJICAgICBXZSBkb24ndCBzdXBwcmVzcyB0aGVzZSBpbmZvcm1zIHJp Z2h0IG5vdyB3aGVuIHRoZSB4b2JqIHBhcmFtIGlzCisJICAgICB1bnJlbGF0ZWQsIHdlIHByb2Jh Ymx5IHNob3VsZCB0aG91Z2guICAqLworCSAgaWYgKCFUWVBFX1JFRl9QIChUUkVFX1RZUEUgKHhv YmpfcGFyYW0pKSkKKwkgICAgaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTih4b2JqX3BhcmFt KSwKKwkJICAgICJhIGJ5LXZhbHVlIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgd2lsbCBuZXZl ciBiZSAiCisJCSAgICAibXV0YXRlZCIpOworCSAgZWxzZSBpZiAoVFlQRV9SRUFET05MWSAoVFJF RV9UWVBFIChUUkVFX1RZUEUgKHhvYmpfcGFyYW0pKSkpCisJICAgIGluZm9ybSAoREVDTF9TT1VS Q0VfTE9DQVRJT04oeG9ial9wYXJhbSksCisJCSAgICAiZGVjbGFyZSB0aGUgZXhwbGljaXQgb2Jq ZWN0IHBhcmFtZXRlciB3aXRob3V0IGNvbnN0Iik7CisJICBlbHNlCisJICAgIGluZm9ybSAoREVD TF9TT1VSQ0VfTE9DQVRJT04oeG9ial9wYXJhbSksCisJCSAgICAiZXhwbGljaXQgb2JqZWN0IHBh cmFtZXRlciBpcyBhbHJlYWR5IG11dGFibGUiKTsKKwl9CisgICAgICBlbHNlCisJeworCSAgTEFN QkRBX0VYUFJfTVVUQUJMRV9QIChsYW1iZGFfZXhwcikgPSAxOworCSAgcXVhbHMgPSBUWVBFX1VO UVVBTElGSUVEOworCX0KICAgICB9CiAgIGVsc2UgaWYgKGxhbWJkYV9zcGVjcy5zdG9yYWdlX2Ns YXNzID09IHNjX3N0YXRpYykKICAgICB7CisgICAgICBib29sIGVycm9yX2VtaXR0ZWQgPSBmYWxz ZTsKICAgICAgIGlmIChMQU1CREFfRVhQUl9ERUZBVUxUX0NBUFRVUkVfTU9ERSAobGFtYmRhX2V4 cHIpICE9IENQTERfTk9ORQogCSAgfHwgTEFNQkRBX0VYUFJfQ0FQVFVSRV9MSVNUIChsYW1iZGFf ZXhwcikpCi0JZXJyb3JfYXQgKGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNbZHNfc3RvcmFnZV9jbGFz c10sCi0JCSAgIiU8c3RhdGljJT4gbGFtYmRhIHNwZWNpZmllciB3aXRoIGxhbWJkYSBjYXB0dXJl Iik7Ci0gICAgICBlbHNlCisJeworCSAgZXJyb3JfYXQgKGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNb ZHNfc3RvcmFnZV9jbGFzc10sCisJCSAgICAiJTxzdGF0aWMlPiBsYW1iZGEgc3BlY2lmaWVyIHdp dGggbGFtYmRhIGNhcHR1cmUiKTsKKwkgIGVycm9yX2VtaXR0ZWQgPSB0cnVlOworCX0KKyAgICAg IGlmICh4b2JqX3BhcmFtKQorCXsKKwkgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOworCSAgZXJy b3JfYXQgKGxhbWJkYV9zcGVjcy5sb2NhdGlvbnNbZHNfc3RvcmFnZV9jbGFzc10sCisJCSAgICAi JTxzdGF0aWMlPiBsYW1iZGEgc3BlY2lmaWVyICIKKwkJICAgICJ3aXRoIGV4cGxpY2l0IG9iamVj dCBwYXJhbWV0ZXIiKTsKKwkgIGluZm9ybSAoREVDTF9TT1VSQ0VfTE9DQVRJT04oeG9ial9wYXJh bSksCisJCSAgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFyZWQgaGVyZSIpOworCSAg ZXJyb3JfZW1pdHRlZCA9IHRydWU7CisJfQorICAgICAgaWYgKCFlcnJvcl9lbWl0dGVkKQogCXsK IAkgIExBTUJEQV9FWFBSX1NUQVRJQ19QIChsYW1iZGFfZXhwcikgPSAxOwogCSAgcXVhbHMgPSBU WVBFX1VOUVVBTElGSUVEOwogCX0KICAgICB9CisgIGlmICh4b2JqX3BhcmFtKQorICAgIHsKKyAg ICAgIHF1YWxzID0gVFlQRV9VTlFVQUxJRklFRDsKKyAgICAgIGlmIChUWVBFX1JFRl9QICh4b2Jq X3BhcmFtKQorCSAgJiYgIShjcF90eXBlX3F1YWxzIChUUkVFX1RZUEUgKHhvYmpfcGFyYW0pKSAm IFRZUEVfUVVBTF9DT05TVCkpCisgICAgICAgIExBTUJEQV9FWFBSX01VVEFCTEVfUCAobGFtYmRh X2V4cHIpID0gMTsKKyAgICB9CiAKICAgdHhfcXVhbCA9IGNwX3BhcnNlcl90eF9xdWFsaWZpZXJf b3B0IChwYXJzZXIpOwogICBpZiAob21pdHRlZF9wYXJtc19sb2MgJiYgdHhfcXVhbCkKQEAgLTEx ODk5LDcgKzExOTgxLDggQEAgY3BfcGFyc2VyX2xhbWJkYV9kZWNsYXJhdG9yX29wdCAoY3BfcGFy c2VyKiBwYXJzZXIsIHRyZWUgbGFtYmRhX2V4cHIpCiAgICAgICB7CiAJREVDTF9JTklUSUFMSVpF RF9JTl9DTEFTU19QIChmY28pID0gMTsKIAlERUNMX0FSVElGSUNJQUwgKGZjbykgPSAxOwotCWlm ICghTEFNQkRBX0VYUFJfU1RBVElDX1AgKGxhbWJkYV9leHByKSkKKwlpZiAoIUxBTUJEQV9FWFBS X1NUQVRJQ19QIChsYW1iZGFfZXhwcikKKwkgICAgJiYgIURFQ0xfWE9CSl9NRU1CRVJfRlVOQ19Q IChmY28pKQogCSAgLyogR2l2ZSB0aGUgb2JqZWN0IHBhcmFtZXRlciBhIGRpZmZlcmVudCBuYW1l LiAgKi8KIAkgIERFQ0xfTkFNRSAoREVDTF9BUkdVTUVOVFMgKGZjbykpID0gY2xvc3VyZV9pZGVu dGlmaWVyOwogCURFQ0xfU0VUX0xBTUJEQV9GVU5DVElPTiAoZmNvLCB0cnVlKTsKQEAgLTE2MDE5 LDYgKzE2MTAyLDggQEAgY3BfcGFyc2VyX2RlY2xfc3BlY2lmaWVyX3NlcSAoY3BfcGFyc2VyKiBw YXJzZXIsCiAgIC8qIEFzc3VtZSBubyBjbGFzcyBvciBlbnVtZXJhdGlvbiB0eXBlIGlzIGRlY2xh cmVkLiAgKi8KICAgKmRlY2xhcmVzX2NsYXNzX29yX2VudW0gPSAwOwogCisgIC8qIEtlZXAgYSB0 b2tlbiB0aGF0IGFkZGl0aW9uYWxseSB3aWxsIGJlIHVzZWQgZm9yIGRpYWdub3N0aWNzLiAgKi8K KyAgY3BfdG9rZW4gKmZpcnN0X3NwZWNpZmllciA9IE5VTEw7CiAgIC8qIEtlZXAgcmVhZGluZyBz cGVjaWZpZXJzIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIHRvIHJlYWQuICAqLwogICB3aGlsZSAo dHJ1ZSkKICAgICB7CkBAIC0xNjA5MSw2ICsxNjE3Niw0MCBAQCBjcF9wYXJzZXJfZGVjbF9zcGVj aWZpZXJfc2VxIChjcF9wYXJzZXIqIHBhcnNlciwKIAkgICAgZGVjbF9zcGVjcy0+bG9jYXRpb25z W2RzX2F0dHJpYnV0ZV0gPSB0b2tlbi0+bG9jYXRpb247CiAJICBjb250aW51ZTsKIAl9CisgICAg ICAvKiBXZSBrbm93IGJ5IHRoaXMgcG9pbnQgdGhhdCB0aGUgdG9rZW4gaXMgbm90IHBhcnQgb2Yg YW4gYXR0cmlidXRlLiAgKi8KKyAgICAgIGlmICghZmlyc3Rfc3BlY2lmaWVyKQorCWZpcnN0X3Nw ZWNpZmllciA9IHRva2VuOworICAgICAgLyogU3BlY2lhbCBjYXNlIGZvciAidGhpcyIgc3BlY2lm aWVyLCBpbmRpY2F0aW5nIGEgcGFybSBpcyBhbiB4b2JqIHBhcm0uCisJIFRoZSAidGhpcyIgc3Bl Y2lmaWVyIG11c3QgYmUgdGhlIGZpcnN0IHNwZWNpZmllciBpbiB0aGUgZGVjbGFyYXRpb24sCisJ IGFmdGVyIGFueSBhdHRyaWJ1dGVzLiAgKi8KKyAgICAgIGlmICh0b2tlbi0+a2V5d29yZCA9PSBS SURfVEhJUykKKwl7CisJICBjcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsK KwkgIGlmICh0b2tlbiAhPSBmaXJzdF9zcGVjaWZpZXIpCisJICAgIHsKKwkgICAgICAvKiBEb24n dCBlbWl0IGRpYWdub3N0aWNzIGlmIHdlIGhhdmUgYWxyZWFkeSBzZWVuICJ0aGlzIiwKKwkJIGxl YXZlIGl0IGZvciBzZXRfYW5kX2NoZWNrX2RlY2xfc3BlY19sb2MuICAqLworCSAgICAgIGlmIChk ZWNsX3NwZWNzLT5sb2NhdGlvbnNbZHNfdGhpc10gPT0gMCkKKwkJeworCQkgIGF1dG9fZGlhZ25v c3RpY19ncm91cCBkOworCQkgIGdjY19yaWNoX2xvY2F0aW9uIHJpY2hsb2MgKHRva2VuLT5sb2Nh dGlvbik7CisJCSAgLyogSWRlYWxseSB3ZSBzeW50aGVzaXplIGEgZnVsbCByZXdyaXRlLCBhdCB0 aGUgbW9tZW50CisJCSAgICAgdGhlcmUgYXJlIGlzc3VlcyB3aXRoIGl0IHRob3VnaC4KKwkJICAg ICBJdCByZXdyaXRlcyAiZihTIHRoaXMgJiBzKSIgY29ycmVjdGx5LCBidXQgZmFpbHMKKwkJICAg ICB0byByZXdyaXRlICJmKGNvbnN0IHRoaXMgUyBzKSIgY29ycmVjdGx5LiBJdCBhbHNvCisJCSAg ICAgZG9lcyBub3QgaGFuZGxlICJmKFMmIHRoaXMgcykiIGNvcnJlY3RseSBhdCBhbGwuICAqLwor CQkgIHJpY2hsb2MuYWRkX2ZpeGl0X3JlbW92ZSAoKTsKKwkJICByaWNobG9jLmFkZF9maXhpdF9p bnNlcnRfYmVmb3JlIChmaXJzdF9zcGVjaWZpZXItPmxvY2F0aW9uLAorCQkJCQkJICAgInRoaXMg Iik7CisJCSAgZXJyb3JfYXQgKCZyaWNobG9jLAorCQkJICAgICIlPHRoaXMlPiBtdXN0IGJlIHRo ZSBmaXJzdCBzcGVjaWZpZXIgIgorCQkJICAgICJpbiBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIp OworCQl9CisJICAgIH0KKwkgIHNldF9hbmRfY2hlY2tfZGVjbF9zcGVjX2xvYyAoZGVjbF9zcGVj cywgZHNfdGhpcywgdG9rZW4pOworCSAgY29udGludWU7CisJfQorCiAgICAgICAvKiBBc3N1bWUg d2Ugd2lsbCBmaW5kIGEgZGVjbC1zcGVjaWZpZXIga2V5d29yZC4gICovCiAgICAgICBmb3VuZF9k ZWNsX3NwZWMgPSB0cnVlOwogICAgICAgLyogSWYgdGhlIG5leHQgdG9rZW4gaXMgYW4gYXBwcm9w cmlhdGUga2V5d29yZCwgd2UgY2FuIHNpbXBseQpAQCAtMjU0MjEsMTIgKzI1NTQwLDE0IEBAIGNw X3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAogICAvKiBU aGUgcmVzdHJpY3Rpb24gb24gZGVmaW5pbmcgbmV3IHR5cGVzIGFwcGxpZXMgb25seSB0byB0aGUg dHlwZQogICAgICBvZiB0aGUgcGFyYW1ldGVyLCBub3QgdG8gdGhlIGRlZmF1bHQgYXJndW1lbnQu ICAqLwogICBwYXJzZXItPnR5cGVfZGVmaW5pdGlvbl9mb3JiaWRkZW5fbWVzc2FnZSA9IHNhdmVk X21lc3NhZ2U7Ci0KKyAgY3BfdG9rZW4gKmVxX3Rva2VuID0gTlVMTDsKICAgLyogSWYgdGhlIG5l eHQgdG9rZW4gaXMgYD0nLCB0aGVuIHByb2Nlc3MgYSBkZWZhdWx0IGFyZ3VtZW50LiAgKi8KICAg aWYgKGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9FUSkpCiAgICAg ewogICAgICAgdHJlZSB0eXBlID0gZGVjbF9zcGVjaWZpZXJzLnR5cGU7CiAgICAgICB0b2tlbiA9 IGNwX2xleGVyX3BlZWtfdG9rZW4gKHBhcnNlci0+bGV4ZXIpOworICAgICAgLyogVXNlZCBmb3Ig ZGlhZ25vc3RpY3Mgd2l0aCBhbiB4b2JqIHBhcmFtZXRlci4gICovCisgICAgICBlcV90b2tlbiA9 IHRva2VuOwogICAgICAgaWYgKGRlY2xhcmF0b3IpCiAJZGVjbGFyYXRvci0+aW5pdF9sb2MgPSB0 b2tlbi0+bG9jYXRpb247CiAgICAgICAvKiBJZiB3ZSBhcmUgZGVmaW5pbmcgYSBjbGFzcywgdGhl biB0aGUgdG9rZW5zIHRoYXQgbWFrZSB1cCB0aGUKQEAgLTI1NDk1LDYgKzI1NjE2LDI1IEBAIGNw X3BhcnNlcl9wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciAqcGFyc2VyLAogICBpZiAo ZGVmYXVsdF9hcmd1bWVudCkKICAgICBTVFJJUF9BTllfTE9DQVRJT05fV1JBUFBFUiAoZGVmYXVs dF9hcmd1bWVudCk7CiAKKyAgaWYgKGRlY2xfc3BlY19zZXFfaGFzX3NwZWNfcCAoJmRlY2xfc3Bl Y2lmaWVycywgZHNfdGhpcykpCisgICAgeworICAgICAgaWYgKGRlZmF1bHRfYXJndW1lbnQpCisJ eworCSAgLyogSWYgdGhlcmUgaXMgYSBkZWZhdWx0X2FyZ3VtZW50LCBlcV90b2tlbiBzaG91bGQg YWx3YXlzIGJlIHNldC4gICovCisJICBnY2NfYXNzZXJ0KGVxX3Rva2VuKTsKKwkgIGxvY2F0aW9u X3QgcGFyYW1fd2l0aF9pbml0X2xvYworCSAgICA9IG1ha2VfbG9jYXRpb24gKGVxX3Rva2VuLT5s b2NhdGlvbiwKKwkJCSAgICAgZGVjbF9zcGVjX3Rva2VuX3N0YXJ0LT5sb2NhdGlvbiwKKwkJCSAg ICAgaW5wdXRfbG9jYXRpb24pOworCSAgZXJyb3JfYXQgKHBhcmFtX3dpdGhfaW5pdF9sb2MsCisJ CSAgICAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciAiCisJCSAgICAibWF5IG5vdCBoYXZl IGEgZGVmYXVsdCBhcmd1bWVudCIpOworCX0KKyAgICAgIC8qIFhvYmogcGFyYW1ldGVycyBjYW4g bm90IGhhdmUgZGVmYXVsdCBhcmd1bWVudHMsIHRodXMKKwkgd2UgY2FuIHJldXNlIHRoZSBkZWZh dWx0IGFyZ3VtZW50IGZpZWxkIHRvIGZsYWcgdGhlIHBhcmFtIGFzIHN1Y2guICAqLworICAgICAg ZGVmYXVsdF9hcmd1bWVudCA9IHRoaXNfaWRlbnRpZmllcjsKKyAgICB9CisKICAgLyogR2VuZXJh dGUgYSBsb2NhdGlvbiBmb3IgdGhlIHBhcmFtZXRlciwgcmFuZ2luZyBmcm9tIHRoZSBzdGFydCBv ZiB0aGUKICAgICAgaW5pdGlhbCB0b2tlbiB0byB0aGUgZW5kIG9mIHRoZSBmaW5hbCB0b2tlbiAo dXNpbmcgaW5wdXRfbG9jYXRpb24gZm9yCiAgICAgIHRoZSBsYXR0ZXIsIHNldCB1cCBieSBjcF9s ZXhlcl9zZXRfc291cmNlX3Bvc2l0aW9uX2Zyb21fdG9rZW4gd2hlbgpAQCAtMzM4NzMsNyArMzQw MTMsOCBAQCBzZXRfYW5kX2NoZWNrX2RlY2xfc3BlY19sb2MgKGNwX2RlY2xfc3BlY2lmaWVyX3Nl cSAqZGVjbF9zcGVjcywKIAkgICAgImNvbnN0ZXhwciIsCiAJICAgICJfX2NvbXBsZXgiLAogCSAg ICAiY29uc3Rpbml0IiwKLQkgICAgImNvbnN0ZXZhbCIKKwkgICAgImNvbnN0ZXZhbCIsCisJICAg ICJ0aGlzIgogCSAgfTsKIAkgIGdjY19yaWNoX2xvY2F0aW9uIHJpY2hsb2MgKGxvY2F0aW9uKTsK IAkgIHJpY2hsb2MuYWRkX2ZpeGl0X3JlbW92ZSAoKTsKZGlmZiAtLWdpdCBhL2djYy9jcC9wdC5j YyBiL2djYy9jcC9wdC5jYwppbmRleCA4NmM5NWIyNzhiYS4uOWE4ZWJiNGU1ZDcgMTAwNjQ0Ci0t LSBhL2djYy9jcC9wdC5jYworKysgYi9nY2MvY3AvcHQuY2MKQEAgLTI2NzQwLDggKzI2NzQwLDI2 IEBAIGluc3RhbnRpYXRlX2JvZHkgKHRyZWUgcGF0dGVybiwgdHJlZSBhcmdzLCB0cmVlIGQsIGJv b2wgbmVzdGVkX3ApCiAJCQl0Zl93YXJuaW5nX29yX2Vycm9yLCBkKTsKICAgICAgIGVsc2UKIAl7 Ci0JICB0c3Vic3Rfc3RtdCAoREVDTF9TQVZFRF9UUkVFIChjb2RlX3BhdHRlcm4pLCBhcmdzLAot CQkgICAgICAgdGZfd2FybmluZ19vcl9lcnJvciwgREVDTF9USV9URU1QTEFURSAoZCkpOworCSAg Ym9vbCBlcnJvcl9lbWl0dGVkID0gZmFsc2U7CisJICBpZiAoTEFNQkRBX0ZVTkNUSU9OX1AgKGQp ICYmIERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChkKSkKKwkgICAgeworCSAgICAgIHRyZWUgbGFt YmRhX2V4cHIgPSBDTEFTU1RZUEVfTEFNQkRBX0VYUFIgKERFQ0xfQ09OVEVYVCAoZCkpOworCSAg ICAgIGlmIChMQU1CREFfRVhQUl9ERUZBVUxUX0NBUFRVUkVfTU9ERSAobGFtYmRhX2V4cHIpICE9 IENQTERfTk9ORQorCQkgIHx8IExBTUJEQV9FWFBSX0NBUFRVUkVfTElTVCAobGFtYmRhX2V4cHIp KQorCQl7CisJCSAgZ2NjX2Fzc2VydCAoVFJFRV9WRUNfTEVOR1RIIChhcmdzKSA+IDApOworCQkg IHRyZWUgb2JqZWN0X2FyZyA9IFRSRUVfVkVDX0VMVCAoYXJncywgMCk7CisJCSAgdHJlZSBsYW1i ZGEgPSBERUNMX0NPTlRFWFQgKGQpOworCQkgIGlmICghc2FtZV9vcl9iYXNlX3R5cGVfcCAobGFt YmRhLCBub25fcmVmZXJlbmNlIChvYmplY3RfYXJnKSkpCisJCSAgICB7CisJCSAgICAgIGVycm9y ICgiY2FsbCB0byBsYW1iZGEgd2l0aCBjYXB0dXJlcyBvYmplY3QgdHlwZSBtdXN0IGJlIHRoZSBs YW1iZGEgb3IgZGVyaXZlZCBmcm9tIHRoZSBsYW1iZGEiKTsKKwkJICAgICAgZXJyb3JfZW1pdHRl ZCA9IHRydWU7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgaWYgKCFlcnJvcl9lbWl0dGVkKQor CSAgICB0c3Vic3Rfc3RtdCAoREVDTF9TQVZFRF9UUkVFIChjb2RlX3BhdHRlcm4pLCBhcmdzLAor CQkgICAgICAgICB0Zl93YXJuaW5nX29yX2Vycm9yLCBERUNMX1RJX1RFTVBMQVRFIChkKSk7CiAK IAkgIC8qIFNldCB0aGUgY3VycmVudCBpbnB1dF9sb2NhdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBm dW5jdGlvbgogCSAgICAgc28gdGhhdCBmaW5pc2hfZnVuY3Rpb24ga25vd3Mgd2hlcmUgd2UgYXJl LiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jcC9zZWFyY2guY2MgYi9nY2MvY3Avc2VhcmNoLmNjCmlu ZGV4IGNkODBmMjg1YWM5Li4wOGMyMmJjZDVkOCAxMDA2NDQKLS0tIGEvZ2NjL2NwL3NlYXJjaC5j YworKysgYi9nY2MvY3Avc2VhcmNoLmNjCkBAIC0yMjEyLDExICsyMjEyLDE0IEBAIGxvb2tfZm9y X292ZXJyaWRlc19oZXJlICh0cmVlIHR5cGUsIHRyZWUgZm5kZWNsKQogCS8qIE5vdCBhIHZpcnR1 YWwuICAqLzsKICAgICAgIGVsc2UgaWYgKERFQ0xfQ09OVEVYVCAoZm4pICE9IHR5cGUpCiAJLyog SW50cm9kdWNlZCB3aXRoIGEgdXNpbmcgZGVjbGFyYXRpb24uICAqLzsKLSAgICAgIGVsc2UgaWYg KERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgKGZuZGVjbCkpCisgICAgICBlbHNlIGlmIChERUNMX1NU QVRJQ19GVU5DVElPTl9QIChmbmRlY2wpCisJICAgICAgIHx8IERFQ0xfWE9CSl9NRU1CRVJfRlVO Q19QIChmbmRlY2wpKQogCXsKIAkgIHRyZWUgYnR5cGVzID0gVFlQRV9BUkdfVFlQRVMgKFRSRUVf VFlQRSAoZm4pKTsKIAkgIHRyZWUgZHR5cGVzID0gVFlQRV9BUkdfVFlQRVMgKFRSRUVfVFlQRSAo Zm5kZWNsKSk7Ci0JICBpZiAoY29tcHBhcm1zIChUUkVFX0NIQUlOIChidHlwZXMpLCBkdHlwZXMp KQorCSAgaWYgKGNvbXBwYXJtcyAoVFJFRV9DSEFJTiAoYnR5cGVzKSwKKwkJCSBERUNMX1hPQkpf TUVNQkVSX0ZVTkNfUCAoZm5kZWNsKQorCQkJICAgPyBUUkVFX0NIQUlOIChkdHlwZXMpIDogZHR5 cGVzKSkKIAkgICAgcmV0dXJuIGZuOwogCX0KICAgICAgIGVsc2UgaWYgKHNhbWVfc2lnbmF0dXJl X3AgKGZuZGVjbCwgZm4pKQpAQCAtMjI0Myw2ICsyMjQ2LDE1IEBAIGxvb2tfZm9yX292ZXJyaWRl c19yICh0cmVlIHR5cGUsIHRyZWUgZm5kZWNsKQogCSAgZXJyb3IgKCIlcSsjRCBjYW5ub3QgYmUg ZGVjbGFyZWQiLCBmbmRlY2wpOwogCSAgZXJyb3IgKCIgIHNpbmNlICVxKyNEIGRlY2xhcmVkIGlu IGJhc2UgY2xhc3MiLCBmbik7CiAJfQorICAgICAgZWxzZSBpZiAoREVDTF9YT0JKX01FTUJFUl9G VU5DX1AgKGZuZGVjbCkpCisgICAgICAgIHsKKwkgIGF1dG9fZGlhZ25vc3RpY19ncm91cCBkOwor CSAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmbmRlY2wpLAorCQkgICAgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gIgorCQkgICAgIm92ZXJyaWRlcyB2aXJ0dWFsIGZ1 bmN0aW9uIik7CisJICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmbiksCisJCSAgInZp cnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQgaGVyZSIpOworCX0KICAgICAgIGVsc2UKIAl7CiAJICAv KiBJdCdzIGRlZmluaXRlbHkgdmlydHVhbCwgZXZlbiBpZiBub3QgZXhwbGljaXRseSBzZXQuICAq LwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3NlbWFudGljcy5jYyBiL2djYy9jcC9zZW1hbnRpY3MuY2MK aW5kZXggNTIwNDRiZTdhZjguLjUxMmIyZjQ1OTUwIDEwMDY0NAotLS0gYS9nY2MvY3Avc2VtYW50 aWNzLmNjCisrKyBiL2djYy9jcC9zZW1hbnRpY3MuY2MKQEAgLTQ1LDYgKzQ1LDcgQEAgYWxvbmcg d2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNsdWRlICJn b21wLWNvbnN0YW50cy5oIgogI2luY2x1ZGUgInByZWRpY3QuaCIKICNpbmNsdWRlICJtZW1tb2Rl bC5oIgorI2luY2x1ZGUgImdjYy1yaWNoLWxvY2F0aW9uLmgiCiAKIC8qIFRoZXJlIHJvdXRpbmVz IHByb3ZpZGUgYSBtb2R1bGFyIGludGVyZmFjZSB0byBwZXJmb3JtIG1hbnkgcGFyc2luZwogICAg b3BlcmF0aW9ucy4gIFRoZXkgbWF5IHRoZXJlZm9yZSBiZSB1c2VkIGR1cmluZyBhY3R1YWwgcGFy c2luZywgb3IKQEAgLTMwODUsNyArMzA4NiwzOSBAQCBmaW5pc2hfdGhpc19leHByICh2b2lkKQog ICAgIHJldHVybiBydmFsdWUgKHJlc3VsdCk7CiAKICAgdHJlZSBmbiA9IGN1cnJlbnRfbm9ubGFt YmRhX2Z1bmN0aW9uICgpOwotICBpZiAoZm4gJiYgREVDTF9TVEFUSUNfRlVOQ1RJT05fUCAoZm4p KQorICBpZiAoZm4gJiYgREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKGZuKSkKKyAgICB7CisgICAg ICBhdXRvX2RpYWdub3N0aWNfZ3JvdXAgZDsKKyAgICAgIGVycm9yICgiJTx0aGlzJT4gaXMgdW5h dmFpbGFibGUgZm9yIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgIgorCSAgICAgImZ1bmN0aW9ucyIp OworICAgICAgLyogSSBjYW4gaW1hZ2luZSBkb2luZyBhIGZpeGl0IGhlcmUsIHN1Z2dlc3Rpbmcg cmVwbGFjaW5nCisJIHRoaXMgLyAqdGhpcyAvIHRoaXMtPiB3aXRoICZuYW1lIC8gbmFtZSAvICJu YW1lLiIgYnV0IGl0IHdvdWxkIGJlCisJIHZlcnkgZGlmZmljdWx0IHRvIGdldCBpdCBwZXJmZWN0 IGFuZCBJJ3ZlIGJlZW4gYWR2aXNlZCBhZ2FpbnN0CisJIG1ha2luZyBpbXBlcmZlY3QgZml4aXRz LgorCSBQZXJoYXBzIGl0IHdvdWxkIGJlIGFzIHNpbXBsZSBhcyB0aGUgcmVwbGFjZW1lbnRzIGxp c3RlZCwKKwkgZXZlbiBpZiBvbmUgaXMgbW92ZSdpbmcvZm9yd2FyZCdpbmcsIGlmIHRoZSByZXBs YWNlbWVudCBpcyBqdXN0CisJIGRvbmUgaW4gdGhlIHNhbWUgcGxhY2UsIGl0IHdpbGwgYmUgZXhh Y3RseSB3aGF0IHRoZSB1c2VyIHdhbnRzPworCSBFdmVuIGlmIHRoaXMgaXMgdHJ1ZSB0aG91Z2gs IHRoZXJlJ3Mgc3RpbGwgYSBwcm9ibGVtIG9mIGdldHRpbmcgdGhlCisJIGNvbnRleHQgb2YgdGhl IGV4cHJlc3Npb24gdG8gZmluZCB3aGljaCB0b2tlbnMgdG8gcmVwbGFjZS4KKwkgSSB3b3VsZCBy ZWFsbHkgbGlrZSBmb3IgdGhpcyB0byBiZSBwb3NzaWJsZSB0aG91Z2guCisJIEkgd2lsbCBkZWNp ZGUgd2hldGhlciBvciBub3QgdG8gcGVyc3VlIHRoaXMgYWZ0ZXIgcmV2aWV3LiAgKi8KKyAgICAg IHRyZWUgeG9ial9wYXJtID0gREVDTF9BUkdVTUVOVFMgKGZuKTsKKyAgICAgIGdjY19hc3NlcnQg KHhvYmpfcGFybSk7CisgICAgICB0cmVlIHBhcm1fbmFtZSA9IERFQ0xfTkFNRSAoeG9ial9wYXJt KTsKKyAgICAgIGlmIChwYXJtX25hbWUpCisJaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAo eG9ial9wYXJtKSwKKwkJInVzZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyICVxRCBpbnN0ZWFk IiwKKwkJcGFybV9uYW1lKTsKKyAgICAgIGVsc2UKKwl7CisgICAgICAgICAgZ2NjX3JpY2hfbG9j YXRpb24geG9ial9sb2MgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pKTsKKwkgIHhv YmpfbG9jLmFkZF9maXhpdF9pbnNlcnRfYWZ0ZXIoIiBzZWxmIik7CisJICBpbmZvcm0gKERFQ0xf U09VUkNFX0xPQ0FUSU9OICh4b2JqX3Bhcm0pLAorCQkgICJuYW1lIGFuZCB1c2UgdGhlIGV4cGxp Y2l0IG9iamVjdCBwYXJhbWV0ZXIgaW5zdGVhZCIpOworCSAgLyogTWF5YmUgc3VnZ2VzdCBzZWxm IGFzIGEgbmFtZSBoZXJlPyAgKi8KKwl9CisgICAgfQorICBlbHNlIGlmIChmbiAmJiBERUNMX1NU QVRJQ19GVU5DVElPTl9QIChmbikpCiAgICAgZXJyb3IgKCIlPHRoaXMlPiBpcyB1bmF2YWlsYWJs ZSBmb3Igc3RhdGljIG1lbWJlciBmdW5jdGlvbnMiKTsKICAgZWxzZSBpZiAoZm4gJiYgcHJvY2Vz c2luZ19jb250cmFjdF9jb25kaXRpb24gJiYgREVDTF9DT05TVFJVQ1RPUl9QIChmbikpCiAgICAg ZXJyb3IgKCJpbnZhbGlkIHVzZSBvZiAlPHRoaXMlPiBiZWZvcmUgaXQgaXMgdmFsaWQiKTsKZGlm ZiAtLWdpdCBhL2djYy9jcC90cmVlLmNjIGIvZ2NjL2NwL3RyZWUuY2MKaW5kZXggNDE3YzkyYmE3 NmYuLmQ4NjE1OTNkOWU0IDEwMDY0NAotLS0gYS9nY2MvY3AvdHJlZS5jYworKysgYi9nY2MvY3Av dHJlZS5jYwpAQCAtMzY1OSw3ICszNjU5LDcgQEAgYnVpbGRfbWluX25vbl9kZXBfb3Bfb3Zlcmxv YWQgKGVudW0gdHJlZV9jb2RlIG9wLAogICBuYXJncyA9IGNhbGxfZXhwcl9uYXJncyAobm9uX2Rl cCk7CiAKICAgZXhwZWN0ZWRfbmFyZ3MgPSBjcF90cmVlX2NvZGVfbGVuZ3RoIChvcCk7Ci0gIGlm IChUUkVFX0NPREUgKFRSRUVfVFlQRSAob3ZlcmxvYWQpKSA9PSBNRVRIT0RfVFlQRQorICBpZiAo REVDTF9PQkpFQ1RfTUVNQkVSX0ZVTkNfUCAob3ZlcmxvYWQpCiAgICAgICAvKiBGb3IgQVJSQVlf UkVGLCBvcGVyYXRvcltdIGlzIGVpdGhlciBhIG5vbi1zdGF0aWMgbWVtYmVyIG9yIG5ld2x5CiAJ IHN0YXRpYyBtZW1iZXIsIG5ldmVyIG91dCBvZiBjbGFzcyBhbmQgZm9yIHRoZSBzdGF0aWMgbWVt YmVyIGNhc2UKIAkgaWYgdXNlciB1c2VzIHNpbmdsZSBpbmRleCB0aGUgb3BlcmF0b3JbXSBuZWVk cyB0byBoYXZlIGEgc2luZ2xlCkBAIC0zNjc3LDI0ICszNjc3LDI1IEBAIGJ1aWxkX21pbl9ub25f ZGVwX29wX292ZXJsb2FkIChlbnVtIHRyZWVfY29kZSBvcCwKICAgcmVsZWFzaW5nX3ZlYyBhcmdz OwogICB2YV9zdGFydCAocCwgb3ZlcmxvYWQpOwogCi0gIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQ RSAob3ZlcmxvYWQpKSA9PSBGVU5DVElPTl9UWVBFKQorICBpZiAoREVDTF9PQkpFQ1RfTUVNQkVS X0ZVTkNfUCAob3ZlcmxvYWQpKQogICAgIHsKLSAgICAgIGZuID0gb3ZlcmxvYWQ7Ci0gICAgICBp ZiAob3AgPT0gQVJSQVlfUkVGKQotCW9iaiA9IHZhX2FyZyAocCwgdHJlZSk7CisgICAgICB0cmVl IG9iamVjdCA9IHZhX2FyZyAocCwgdHJlZSk7CisgICAgICB0cmVlIGJpbmZvID0gVFlQRV9CSU5G TyAoVFJFRV9UWVBFIChvYmplY3QpKTsKKyAgICAgIHRyZWUgbWV0aG9kID0gYnVpbGRfYmFzZWxp bmsgKGJpbmZvLCBiaW5mbywgb3ZlcmxvYWQsIE5VTExfVFJFRSk7CisgICAgICBmbiA9IGJ1aWxk X21pbiAoQ09NUE9ORU5UX1JFRiwgVFJFRV9UWVBFIChvdmVybG9hZCksCisJCSAgICAgIG9iamVj dCwgbWV0aG9kLCBOVUxMX1RSRUUpOwogICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsg aSsrKQogCXsKIAkgIHRyZWUgYXJnID0gdmFfYXJnIChwLCB0cmVlKTsKIAkgIHZlY19zYWZlX3B1 c2ggKGFyZ3MsIGFyZyk7CiAJfQogICAgIH0KLSAgZWxzZSBpZiAoVFJFRV9DT0RFIChUUkVFX1RZ UEUgKG92ZXJsb2FkKSkgPT0gTUVUSE9EX1RZUEUpCisgIGVsc2UgaWYgKFRSRUVfQ09ERSAoVFJF RV9UWVBFIChvdmVybG9hZCkpID09IEZVTkNUSU9OX1RZUEUpCiAgICAgewotICAgICAgdHJlZSBv YmplY3QgPSB2YV9hcmcgKHAsIHRyZWUpOwotICAgICAgdHJlZSBiaW5mbyA9IFRZUEVfQklORk8g KFRSRUVfVFlQRSAob2JqZWN0KSk7Ci0gICAgICB0cmVlIG1ldGhvZCA9IGJ1aWxkX2Jhc2VsaW5r IChiaW5mbywgYmluZm8sIG92ZXJsb2FkLCBOVUxMX1RSRUUpOwotICAgICAgZm4gPSBidWlsZF9t aW4gKENPTVBPTkVOVF9SRUYsIFRSRUVfVFlQRSAob3ZlcmxvYWQpLAotCQkgICAgICBvYmplY3Qs IG1ldGhvZCwgTlVMTF9UUkVFKTsKKyAgICAgIGdjY19hc3NlcnQgKCFERUNMX1hPQkpfTUVNQkVS X0ZVTkNfUCAob3ZlcmxvYWQpKTsKKyAgICAgIGZuID0gb3ZlcmxvYWQ7CisgICAgICBpZiAob3Ag PT0gQVJSQVlfUkVGKQorCW9iaiA9IHZhX2FyZyAocCwgdHJlZSk7CiAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IG5hcmdzOyBpKyspCiAJewogCSAgdHJlZSBhcmcgPSB2YV9hcmcgKHAsIHRyZWUp OwpAQCAtMzcyOSw3ICszNzMwLDcgQEAgYnVpbGRfbWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQgKHRy ZWUgbm9uX2RlcCwgdHJlZSBvdmVybG9hZCwgdHJlZSBvYmplY3QsCiAKICAgdW5zaWduZWQgaW50 IG5hcmdzID0gY2FsbF9leHByX25hcmdzIChub25fZGVwKTsKICAgdHJlZSBmbiA9IG92ZXJsb2Fk OwotICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKG92ZXJsb2FkKSkgPT0gTUVUSE9EX1RZUEUp CisgIGlmIChERUNMX09CSkVDVF9NRU1CRVJfRlVOQ19QIChvdmVybG9hZCkpCiAgICAgewogICAg ICAgdHJlZSBiaW5mbyA9IFRZUEVfQklORk8gKFRSRUVfVFlQRSAob2JqZWN0KSk7CiAgICAgICB0 cmVlIG1ldGhvZCA9IGJ1aWxkX2Jhc2VsaW5rIChiaW5mbywgYmluZm8sIG92ZXJsb2FkLCBOVUxM X1RSRUUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL3R5cGVjay5jYyBiL2djYy9jcC90eXBlY2suY2MK aW5kZXggNDlhZmJkOGZiNWUuLjFhYTY1NDVjYTRjIDEwMDY0NAotLS0gYS9nY2MvY3AvdHlwZWNr LmNjCisrKyBiL2djYy9jcC90eXBlY2suY2MKQEAgLTcxMzMsNiArNzEzMywxOSBAQCBjcF9idWls ZF9hZGRyX2V4cHJfMSAodHJlZSBhcmcsIGJvb2wgc3RyaWN0X2x2YWx1ZSwgdHN1YnN0X2ZsYWdz X3QgY29tcGxhaW4pCiAKICAgICBjYXNlIEJBU0VMSU5LOgogICAgICAgYXJnID0gQkFTRUxJTktf RlVOQ1RJT05TIChhcmcpOworICAgICAgaWYgKERFQ0xfWE9CSl9NRU1CRVJfRlVOQ19QIChhcmcp KQorCXsKKwkgIC8qIEVycm9yIHNob3VsZCBtYXRjaCB0aGF0IGluCisJICAgICBjbGFzcy5jYzpy ZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbi4KKwkgICAgIFdlIHJlYWxseSBz aG91bGQgZG8gYSBmaXhpdCBoZXJlLiAgKi8KKwkgIGVycm9yX2F0IChpbnB1dF9sb2NhdGlvbiwK KwkJICAgICJ0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciAi CisJCSAgICAiZnVuY3Rpb24gbXVzdCBiZSBxdWFsaWZpZWQiKTsKKwkgIGluZm9ybSAoaW5wdXRf bG9jYXRpb24sCisJCSAgIihhIHBvaW50ZXIgdG8gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiBjYW4gb25seSBiZSAiCisJCSAgImZvcm1lZCB3aXRoICU8JiVFJT4pIiwgYXJnKTsKKwkg IHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisJfQogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8K IAogICAgIGNhc2UgT1ZFUkxPQUQ6CkBAIC03MTY0LDYgKzcxNzcsMTYgQEAgY3BfYnVpbGRfYWRk cl9leHByXzEgKHRyZWUgYXJnLCBib29sIHN0cmljdF9sdmFsdWUsIHRzdWJzdF9mbGFnc190IGNv bXBsYWluKQogCSAgICAmJiAhbWFya191c2VkICh0LCBjb21wbGFpbikgJiYgIShjb21wbGFpbiAm IHRmX2Vycm9yKSkKIAkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAKKwkvKiBQdWxsIG91dCB0 aGUgZnVuY3Rpb25fZGVjbCBmb3IgYSBzaW5nbGUgeG9iaiBtZW1iZXIgZnVuY3Rpb24sCisJICAg c2ltaWxhciB0byB0aGUgQkFTRUxJTksgY2FzZSBhYm92ZS4gSWYgd2UgZGlkIHRoZSBzYW1lIG9w dGltaXphdGlvbgorCSAgIGFzIHdlIGRvIGZvciBzaW5nbGUgc3RhdGljIG1lbWJlciBmdW5jdGlv bnMgKHBhc3NpbmcgaW4gYSBCQVNFTElOSykKKwkgICB0aGVuIGl0IGNvdWxkIGJlIGhhbmRsZWQg dGhlIHNhbWUgdG9vLiAgKi8KKwlpZiAoREVDTF9YT0JKX01FTUJFUl9GVU5DX1AgKHQpKQorCSAg eworCSAgICBhcmcgPSB0OworCSAgICBicmVhazsKKwkgIH0KKwogCXR5cGUgPSBidWlsZF9wdHJt ZW1fdHlwZSAoY29udGV4dF9mb3JfbmFtZV9sb29rdXAgKHQpLAogCQkJCSAgVFJFRV9UWVBFICh0 KSk7CiAJdCA9IG1ha2VfcHRybWVtX2NzdCAodHlwZSwgdCk7CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMxLkMgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMxLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjFlNDRjOTEyM2I3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMS5DCkBAIC0wLDAgKzEsMTEz IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisK Ky8vIGJhc2ljIHVzZSBjYXNlcyBhbmQgY2FsbGluZworCisvLyBub24tdHJhaWxpbmcgcmV0dXJu CisvLyBkZWZpbml0aW9ucworc3RydWN0IFMwIHsKKyAgdm9pZCBmMCh0aGlzIFMwKSB7fQorICB2 b2lkIGYxKHRoaXMgUzAmKSB7fQorICB2b2lkIGYyKHRoaXMgUzAmJikge30KKyAgdm9pZCBmMyh0 aGlzIFMwIGNvbnN0Jikge30KKyAgdm9pZCBmNCh0aGlzIFMwIGNvbnN0JiYpIHt9CisgIHRlbXBs YXRlPHR5cGVuYW1lIFNlbGY+CisgIHZvaWQgZDAodGhpcyBTZWxmJiYpIHt9CisgIHZvaWQgZDEo dGhpcyBhdXRvJiYpIHt9Cit9OworLy8gZGVjbGFyYXRpb25zCitzdHJ1Y3QgUzEgeworICB2b2lk IGYwKHRoaXMgUzEpOworICB2b2lkIGYxKHRoaXMgUzEmKTsKKyAgdm9pZCBmMih0aGlzIFMxJiYp OworICB2b2lkIGYzKHRoaXMgUzEgY29uc3QmKTsKKyAgdm9pZCBmNCh0aGlzIFMxIGNvbnN0JiYp OworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorICB2b2lkIGQwKHRoaXMgU2VsZiYmKTsKKyAg dm9pZCBkMSh0aGlzIGF1dG8mJik7Cit9OworLy8gb3V0IG9mIGxpbmUgZGVmaW5pdGlvbnMKK3Zv aWQgUzE6OmYwKHRoaXMgUzEpIHt9Cit2b2lkIFMxOjpmMSh0aGlzIFMxJikge30KK3ZvaWQgUzE6 OmYyKHRoaXMgUzEmJikge30KK3ZvaWQgUzE6OmYzKHRoaXMgUzEgY29uc3QmKSB7fQordm9pZCBT MTo6ZjQodGhpcyBTMSBjb25zdCYmKSB7fQordGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KK3ZvaWQg UzE6OmQwKHRoaXMgU2VsZiYmKSB7fQordm9pZCBTMTo6ZDEodGhpcyBhdXRvJiYpIHt9CisKKy8v IHRyYWlsaW5nIHJldHVybgorLy8gZGVmaW5pdGlvbnMKK3N0cnVjdCBTMiB7CisgIGF1dG8gZjAo dGhpcyBTMikgLT4gdm9pZCB7fQorICBhdXRvIGYxKHRoaXMgUzImKSAtPiB2b2lkIHt9CisgIGF1 dG8gZjIodGhpcyBTMiYmKSAtPiB2b2lkIHt9CisgIGF1dG8gZjModGhpcyBTMiBjb25zdCYpIC0+ IHZvaWQge30KKyAgYXV0byBmNCh0aGlzIFMyIGNvbnN0JiYpIC0+IHZvaWQge30KKyAgdGVtcGxh dGU8dHlwZW5hbWUgU2VsZj4KKyAgYXV0byBkMCh0aGlzIFNlbGYmJikgLT4gdm9pZCB7fQorCisg IGF1dG8gZDEodGhpcyBhdXRvJiYpIC0+IHZvaWQge30KK307CisvLyBkZWNsYXJhdGlvbnMKK3N0 cnVjdCBTMyB7CisgIGF1dG8gZjAodGhpcyBTMykgLT4gdm9pZDsKKyAgYXV0byBmMSh0aGlzIFMz JikgLT4gdm9pZDsKKyAgYXV0byBmMih0aGlzIFMzJiYpIC0+IHZvaWQ7CisgIGF1dG8gZjModGhp cyBTMyBjb25zdCYpIC0+IHZvaWQ7CisgIGF1dG8gZjQodGhpcyBTMyBjb25zdCYmKSAtPiB2b2lk OworICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorICBhdXRvIGQwKHRoaXMgU2VsZiYmKSAtPiB2 b2lkOworICBhdXRvIGQxKHRoaXMgYXV0byYmKSAtPiB2b2lkOworfTsKKy8vIG91dCBvZiBsaW5l IGRlZmluaXRpb25zCithdXRvIFMzOjpmMCh0aGlzIFMzKSAtPiB2b2lkIHt9CithdXRvIFMzOjpm MSh0aGlzIFMzJikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZjIodGhpcyBTMyYmKSAtPiB2b2lkIHt9 CithdXRvIFMzOjpmMyh0aGlzIFMzIGNvbnN0JikgLT4gdm9pZCB7fQorYXV0byBTMzo6ZjQodGhp cyBTMyBjb25zdCYmKSAtPiB2b2lkIHt9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorYXV0byBT Mzo6ZDAodGhpcyBTZWxmJiYpIC0+IHZvaWQge30KK2F1dG8gUzM6OmQxKHRoaXMgYXV0byYmKSAt PiB2b2lkIHt9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIGNhbGxfd2l0aF9xdWFsaWZp Y2F0aW9uKCkKK3sKKyAgVCBvYmp7fTsKKyAgLy8gYnkgdmFsdWUgc2hvdWxkIHRha2UgYW55IHF1 YWxpZmljYXRpb24gKGYwKQorICBUe30uZjAoKTsKKyAgb2JqLmYwKCk7CisgIHN0YXRpY19jYXN0 PFQmJj4ob2JqKS5mMCgpOyAKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+KG9iaikuZjAoKTsKKyAg c3RhdGljX2Nhc3Q8VCBjb25zdCYmPihvYmopLmYwKCk7CisgIC8vIHNwZWNpZmljIHF1YWxpZmlj YXRpb24gKGYxIC0gZjQpCisgIFR7fS5mMigpOworICBUe30uZjMoKTsKKyAgVHt9LmY0KCk7Cisg IG9iai5mMSgpOworICBvYmouZjMoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmopLmYyKCk7Cisg IHN0YXRpY19jYXN0PFQmJj4ob2JqKS5mMygpOworICBzdGF0aWNfY2FzdDxUJiY+KG9iaikuZjQo KTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+KG9iaikuZjMoKTsKKyAgc3RhdGljX2Nhc3Q8VCBj b25zdCYmPihvYmopLmY0KCk7CisgIC8vIGRlZHVjZWQgc2hvdWxkIChvYnZpb3VzbHkpIHRha2Ug YW55IHF1YWxpZmljYXRpb24gKGQwLCBkMSkKKyAgVHt9LmQwKCk7CisgIG9iai5kMCgpOworICBz dGF0aWNfY2FzdDxUJiY+KG9iaikuZDAoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCY+KG9iaiku ZDAoKTsKKyAgc3RhdGljX2Nhc3Q8VCBjb25zdCYmPihvYmopLmQwKCk7CisgIFR7fS5kMSgpOwor ICBvYmouZDEoKTsKKyAgc3RhdGljX2Nhc3Q8VCYmPihvYmopLmQxKCk7CisgIHN0YXRpY19jYXN0 PFQgY29uc3QmPihvYmopLmQxKCk7CisgIHN0YXRpY19jYXN0PFQgY29uc3QmJj4ob2JqKS5kMSgp OworfQorCit2b2lkIHBlcmZvcm1fY2FsbHMoKQoreworICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlv bjxTMD4oKTsKKyAgY2FsbF93aXRoX3F1YWxpZmljYXRpb248UzE+KCk7CisgIGNhbGxfd2l0aF9x dWFsaWZpY2F0aW9uPFMyPigpOworICBjYWxsX3dpdGhfcXVhbGlmaWNhdGlvbjxTMz4oKTsKK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNp YzIuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzIuQwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmMyYjY5YWQzNjIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFz aWMyLkMKQEAgLTAsMCArMSwyNyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBydW4geyB0YXJn ZXQgYysrMjMgfSB9CisKKy8vIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gcG9pbnRl ciB0eXBlIGRlZHVjdGlvbiwKKy8vIGNvbnZlcnNpb24gdG8gZnVuY3Rpb24gcG9pbnRlciwKKy8v IGFuZCBjYWxsaW5nIHRocm91Z2ggcG9pbnRlciB0byBmdW5jdGlvbgorCitzdHJ1Y3QgUyB7Cisg IGludCBfbjsKKyAgaW50IGYodGhpcyBTJiBzZWxmKSB7IHJldHVybiBzZWxmLl9uOyB9Cit9Owor Cit1c2luZyBmX3R5cGUgPSBpbnQoKikoUyYpOworCitzdGF0aWNfYXNzZXJ0IChfX2lzX3NhbWUg KGZfdHlwZSwgZGVjbHR5cGUgKCZTOjpmKSkpOworCitpbnQgbWFpbigpCit7CisgIGF1dG8gZnAw ID0gJlM6OmY7CisgIGZfdHlwZSBmcDEgPSAmUzo6ZjsKKyAgc3RhdGljX2Fzc2VydCAoX19pc19z YW1lIChkZWNsdHlwZSAoZnAwKSwgZGVjbHR5cGUgKGZwMSkpKTsKKyAgUyBzezQyfTsKKyAgaWYg KGZwMCAocykgIT0gNDIpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICBpZiAoZnAxIChzKSAh PSA0MikKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9jcHAyMy9leHBsaWNpdC1vYmotYmFzaWMzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjVmMjdkNDUwMTJlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljMy5DCkBAIC0wLDAgKzEsNDk1IEBA CisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8v IGJvZ3VzIGRpYWdub3NpcyBvZiB2YWxpZCBkZWNsYXJhdGlvbnMgYXMgcmVkZWNsYXJhdGlvbnMK Ky8vIHRlc3RzIGZvciBieS12YWx1ZSBhcmUgZWxzZXdoZXJlICh0b2RvOiBhZGQgZmlsZW5hbWUp CisKKy8vIGVhY2ggZ3JvdXAgaGFzIDggb3ZlcmxvYWRzIHRoYXQgZWFjaCB0YWtlCisvLyBsdmFs dWUgcmVmIHRvIFMKKy8vIHJ2YWx1ZSByZWYgdG8gUworLy8gbHZhbHVlIGMgcmVmIHRvIFMKKy8v IHJ2YWx1ZSBjIHJlZiB0byBTCisvLyBsdmFsdWUgdiByZWYgdG8gUworLy8gcnZhbHVlIHYgcmVm IHRvIFMKKy8vIGx2YWx1ZSBjdiByZWYgdG8gUworLy8gcnZhbHVlIGN2IHJlZiB0byBTCisvLyB3 aGVyZSBTIGlzIHRoZSBzdHJ1Y3QgdGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluCisKKy8vIG9u bHkgeG9iaiAodGhlIG1vc3QgYmFzaWMgY2FzZSkKKworc3RydWN0IFMgeworICB2b2lkIGYodGhp cyBTICYpOworICB2b2lkIGYodGhpcyBTICYmKTsKKyAgdm9pZCBmKHRoaXMgUyBjb25zdCYpOwor ICB2b2lkIGYodGhpcyBTIGNvbnN0JiYpOworICB2b2lkIGYodGhpcyBTIHZvbGF0aWxlJik7Cisg IHZvaWQgZih0aGlzIFMgdm9sYXRpbGUmJik7CisgIHZvaWQgZih0aGlzIFMgY29uc3Qgdm9sYXRp bGUmKTsKKyAgdm9pZCBmKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKTsKK307CisKKy8vIEkqIGhh cyB0aGUgMSB4b2JqIDcgaW9iaiBjYXNlcworLy8gWCogaGFzIHRoZSA3IHhvYmogMSBpb2JqIGNh c2VzCisvLyAqMCBoYXMgdGhlIHVuaXF1ZSBmdW5jdGlvbiBmaXJzdCwgdGhlIHJlc3QgYWZ0ZXIK Ky8vICoxIGhhcyB0aGUgdW5pcXVlIGZ1bmN0aW9uIGxhc3QsIHRoZSByZXN0IGFmdGVyCisvLyAq MiBoYXMgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgb3JkZXIgc3RhdGVkIGFib3ZlCisvLyB4b2JqIGZp cnN0LCAxIHhvYmosIDcgaW9iagorCisvLyAoeWVzIHRoZXJlIGFyZSBzb21lIHJlZHVuZGFudCBj YXNlcykKKworLy8gdW5pcXVlIGZpcnN0LCAxIHhvYmogNyBpb2JqCisKK3N0cnVjdCBJMCB7Cisg IHZvaWQgZjAodGhpcyBJMCYpOworICB2b2lkIGYwKCkgJiY7CisgIHZvaWQgZjAoKSBjb25zdCY7 CisgIHZvaWQgZjAoKSBjb25zdCYmOworICB2b2lkIGYwKCkgdm9sYXRpbGUmOworICB2b2lkIGYw KCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgp IGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmMSh0aGlzIEkwJiYpOworICB2b2lkIGYxKCkg JjsKKyAgdm9pZCBmMSgpIGNvbnN0JjsKKyAgdm9pZCBmMSgpIGNvbnN0JiY7CisgIHZvaWQgZjEo KSB2b2xhdGlsZSY7CisgIHZvaWQgZjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGYxKCkgY29uc3Qg dm9sYXRpbGUmOworICB2b2lkIGYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjMCh0 aGlzIEkwIGNvbnN0Jik7CisgIHZvaWQgZmMwKCkgJjsKKyAgdm9pZCBmYzAoKSAmJjsKKyAgdm9p ZCBmYzAoKSBjb25zdCYmOworICB2b2lkIGZjMCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmYzAoKSB2 b2xhdGlsZSYmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmYzAoKSBj b25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZmMxKHRoaXMgSTAgY29uc3QmJik7CisgIHZvaWQg ZmMxKCkgJjsKKyAgdm9pZCBmYzEoKSAmJjsKKyAgdm9pZCBmYzEoKSBjb25zdCY7CisgIHZvaWQg ZmMxKCkgdm9sYXRpbGUmOworICB2b2lkIGZjMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmMxKCkg Y29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9p ZCBmdjAodGhpcyBJMCB2b2xhdGlsZSYpOworICB2b2lkIGZ2MCgpICY7CisgIHZvaWQgZnYwKCkg JiY7CisgIHZvaWQgZnYwKCkgY29uc3QmOworICB2b2lkIGZ2MCgpIGNvbnN0JiY7CisgIHZvaWQg ZnYwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjAoKSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQg ZnYwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZ2MSh0aGlzIEkwIHZvbGF0aWxlJiYp OworICB2b2lkIGZ2MSgpICY7CisgIHZvaWQgZnYxKCkgJiY7CisgIHZvaWQgZnYxKCkgY29uc3Qm OworICB2b2lkIGZ2MSgpIGNvbnN0JiY7CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmOworICB2b2lk IGZ2MSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEoKSBjb25zdCB2b2xhdGlsZSYmOwor CisgIHZvaWQgZmN2MCh0aGlzIEkwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCgpICY7 CisgIHZvaWQgZmN2MCgpICYmOworICB2b2lkIGZjdjAoKSBjb25zdCY7CisgIHZvaWQgZmN2MCgp IGNvbnN0JiY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmY3YwKCkgdm9sYXRp bGUmJjsKKyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjEodGhp cyBJMCBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkg JiY7CisgIHZvaWQgZmN2MSgpIGNvbnN0JjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9p ZCBmY3YxKCkgdm9sYXRpbGUmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZj djEoKSBjb25zdCB2b2xhdGlsZSY7Cit9OworCisvLyB1bmlxdWUgbGFzdCwgMSB4b2JqIDcgaW9i agorCitzdHJ1Y3QgSTEgeworICB2b2lkIGYwKCkgJiY7CisgIHZvaWQgZjAoKSBjb25zdCY7Cisg IHZvaWQgZjAoKSBjb25zdCYmOworICB2b2lkIGYwKCkgdm9sYXRpbGUmOworICB2b2lkIGYwKCkg dm9sYXRpbGUmJjsKKyAgdm9pZCBmMCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgpIGNv bnN0IHZvbGF0aWxlJiY7CisgIHZvaWQgZjAodGhpcyBJMSYpOworCisgIHZvaWQgZjEoKSAmOwor ICB2b2lkIGYxKCkgY29uc3QmOworICB2b2lkIGYxKCkgY29uc3QmJjsKKyAgdm9pZCBmMSgpIHZv bGF0aWxlJjsKKyAgdm9pZCBmMSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZjEoKSBjb25zdCB2b2xh dGlsZSY7CisgIHZvaWQgZjEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGYxKHRoaXMgSTEm Jik7CisKKyAgdm9pZCBmYzAoKSAmOworICB2b2lkIGZjMCgpICYmOworICB2b2lkIGZjMCgpIGNv bnN0JiY7CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIHZvbGF0aWxlJiY7 CisgIHZvaWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjMCgpIGNvbnN0IHZvbGF0 aWxlJiY7CisgIHZvaWQgZmMwKHRoaXMgSTEgY29uc3QmKTsKKworICB2b2lkIGZjMSgpICY7Cisg IHZvaWQgZmMxKCkgJiY7CisgIHZvaWQgZmMxKCkgY29uc3QmOworICB2b2lkIGZjMSgpIHZvbGF0 aWxlJjsKKyAgdm9pZCBmYzEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0 aWxlJjsKKyAgdm9pZCBmYzEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGZjMSh0aGlzIEkx IGNvbnN0JiYpOworCisgIHZvaWQgZnYwKCkgJjsKKyAgdm9pZCBmdjAoKSAmJjsKKyAgdm9pZCBm djAoKSBjb25zdCY7CisgIHZvaWQgZnYwKCkgY29uc3QmJjsKKyAgdm9pZCBmdjAoKSB2b2xhdGls ZSYmOworICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmdjAoKSBjb25zdCB2 b2xhdGlsZSYmOworICB2b2lkIGZ2MCh0aGlzIEkxIHZvbGF0aWxlJik7CisKKyAgdm9pZCBmdjEo KSAmOworICB2b2lkIGZ2MSgpICYmOworICB2b2lkIGZ2MSgpIGNvbnN0JjsKKyAgdm9pZCBmdjEo KSBjb25zdCYmOworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmdjEoKSBjb25zdCB2 b2xhdGlsZSY7CisgIHZvaWQgZnYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjEodGhp cyBJMSB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZjdjAoKSAmOworICB2b2lkIGZjdjAoKSAmJjsK KyAgdm9pZCBmY3YwKCkgY29uc3QmOworICB2b2lkIGZjdjAoKSBjb25zdCYmOworICB2b2lkIGZj djAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MCgp IGNvbnN0IHZvbGF0aWxlJiY7CisgIHZvaWQgZmN2MCh0aGlzIEkxIGNvbnN0IHZvbGF0aWxlJik7 CisKKyAgdm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkgJiY7CisgIHZvaWQgZmN2MSgpIGNv bnN0JjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9pZCBmY3YxKCkgdm9sYXRpbGUmOwor ICB2b2lkIGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEoKSBjb25zdCB2b2xhdGlsZSY7 CisgIHZvaWQgZmN2MSh0aGlzIEkxIGNvbnN0IHZvbGF0aWxlJiYpOworfTsKKworLy8gb3JkZXJl ZCwgMSB4b2JqIDcgaW9iagorCitzdHJ1Y3QgSTIgeworICB2b2lkIGYwKHRoaXMgSTImKTsKKyAg dm9pZCBmMCgpICYmOworICB2b2lkIGYwKCkgY29uc3QmOworICB2b2lkIGYwKCkgY29uc3QmJjsK KyAgdm9pZCBmMCgpIHZvbGF0aWxlJjsKKyAgdm9pZCBmMCgpIHZvbGF0aWxlJiY7CisgIHZvaWQg ZjAoKSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZjAoKSBjb25zdCB2b2xhdGlsZSYmOworCisg IHZvaWQgZjEoKSAmOworICB2b2lkIGYxKHRoaXMgSTImJik7CisgIHZvaWQgZjEoKSBjb25zdCY7 CisgIHZvaWQgZjEoKSBjb25zdCYmOworICB2b2lkIGYxKCkgdm9sYXRpbGUmOworICB2b2lkIGYx KCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmMSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9pZCBmMSgp IGNvbnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmYzAoKSAmOworICB2b2lkIGZjMCgpICYmOwor ICB2b2lkIGZjMCh0aGlzIEkyIGNvbnN0Jik7CisgIHZvaWQgZmMwKCkgY29uc3QmJjsKKyAgdm9p ZCBmYzAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmYzAo KSBjb25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZmMwKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2 b2lkIGZjMSgpICY7CisgIHZvaWQgZmMxKCkgJiY7CisgIHZvaWQgZmMxKCkgY29uc3QmOworICB2 b2lkIGZjMSh0aGlzIEkyIGNvbnN0JiYpOworICB2b2lkIGZjMSgpIHZvbGF0aWxlJjsKKyAgdm9p ZCBmYzEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjMSgpIGNvbnN0IHZvbGF0aWxlJjsKKyAgdm9p ZCBmYzEoKSBjb25zdCB2b2xhdGlsZSYmOworCisgIHZvaWQgZnYwKCkgJjsKKyAgdm9pZCBmdjAo KSAmJjsKKyAgdm9pZCBmdjAoKSBjb25zdCY7CisgIHZvaWQgZnYwKCkgY29uc3QmJjsKKyAgdm9p ZCBmdjAodGhpcyBJMiB2b2xhdGlsZSYpOworICB2b2lkIGZ2MCgpIHZvbGF0aWxlJiY7CisgIHZv aWQgZnYwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZ2MCgpIGNvbnN0IHZvbGF0aWxlJiY7 CisKKyAgdm9pZCBmdjEoKSAmOworICB2b2lkIGZ2MSgpICYmOworICB2b2lkIGZ2MSgpIGNvbnN0 JjsKKyAgdm9pZCBmdjEoKSBjb25zdCYmOworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJjsKKyAgdm9p ZCBmdjEodGhpcyBJMiB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmdjEoKSBjb25zdCB2b2xhdGlsZSY7 CisgIHZvaWQgZnYxKCkgY29uc3Qgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjAoKSAmOworICB2 b2lkIGZjdjAoKSAmJjsKKyAgdm9pZCBmY3YwKCkgY29uc3QmOworICB2b2lkIGZjdjAoKSBjb25z dCYmOworICB2b2lkIGZjdjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MCgpIHZvbGF0aWxlJiY7 CisgIHZvaWQgZmN2MCh0aGlzIEkyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCgpIGNv bnN0IHZvbGF0aWxlJiY7CisKKyAgdm9pZCBmY3YxKCkgJjsKKyAgdm9pZCBmY3YxKCkgJiY7Cisg IHZvaWQgZmN2MSgpIGNvbnN0JjsKKyAgdm9pZCBmY3YxKCkgY29uc3QmJjsKKyAgdm9pZCBmY3Yx KCkgdm9sYXRpbGUmOworICB2b2lkIGZjdjEoKSB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEoKSBj b25zdCB2b2xhdGlsZSY7CisgIHZvaWQgZmN2MSh0aGlzIEkyIGNvbnN0IHZvbGF0aWxlJiYpOwor fTsKKworCisvLyBpb2JqIGZpcnN0LCA3IHhvYmosIDEgaW9iagorCitzdHJ1Y3QgWDAgeworICB2 b2lkIGYwKCkgJjsKKyAgdm9pZCBmMCh0aGlzIFgwICYmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIGNv bnN0Jik7CisgIHZvaWQgZjAodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmMCh0aGlzIFgwIHZv bGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMCh0aGlz IFgwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYm KTsKKworICB2b2lkIGYxKCkgJiY7CisgIHZvaWQgZjEodGhpcyBYMCAmKTsKKyAgdm9pZCBmMSh0 aGlzIFgwIGNvbnN0Jik7CisgIHZvaWQgZjEodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmMSh0 aGlzIFgwIHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhpcyBYMCB2b2xhdGlsZSYmKTsKKyAgdm9p ZCBmMSh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhpcyBYMCBjb25zdCB2 b2xhdGlsZSYmKTsKKworICB2b2lkIGZjMCgpIGNvbnN0JjsKKyAgdm9pZCBmYzAodGhpcyBYMCAm KTsKKyAgdm9pZCBmYzAodGhpcyBYMCAmJik7CisgIHZvaWQgZmMwKHRoaXMgWDAgY29uc3QmJik7 CisgIHZvaWQgZmMwKHRoaXMgWDAgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzAodGhpcyBYMCB2b2xh dGlsZSYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZj MCh0aGlzIFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmMxKCkgY29uc3QmJjsKKyAg dm9pZCBmYzEodGhpcyBYMCAmKTsKKyAgdm9pZCBmYzEodGhpcyBYMCAmJik7CisgIHZvaWQgZmMx KHRoaXMgWDAgY29uc3QmKTsKKyAgdm9pZCBmYzEodGhpcyBYMCB2b2xhdGlsZSYpOworICB2b2lk IGZjMSh0aGlzIFgwIHZvbGF0aWxlJiYpOworICB2b2lkIGZjMSh0aGlzIFgwIGNvbnN0IHZvbGF0 aWxlJik7CisgIHZvaWQgZmMxKHRoaXMgWDAgY29uc3Qgdm9sYXRpbGUmJik7CisKKyAgdm9pZCBm djAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZnYwKHRoaXMgWDAgJik7CisgIHZvaWQgZnYwKHRoaXMg WDAgJiYpOworICB2b2lkIGZ2MCh0aGlzIFgwIGNvbnN0Jik7CisgIHZvaWQgZnYwKHRoaXMgWDAg Y29uc3QmJik7CisgIHZvaWQgZnYwKHRoaXMgWDAgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYwKHRo aXMgWDAgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdjAodGhpcyBYMCBjb25zdCB2b2xhdGls ZSYmKTsKKworICB2b2lkIGZ2MSgpIHZvbGF0aWxlJiY7CisgIHZvaWQgZnYxKHRoaXMgWDAgJik7 CisgIHZvaWQgZnYxKHRoaXMgWDAgJiYpOworICB2b2lkIGZ2MSh0aGlzIFgwIGNvbnN0Jik7Cisg IHZvaWQgZnYxKHRoaXMgWDAgY29uc3QmJik7CisgIHZvaWQgZnYxKHRoaXMgWDAgdm9sYXRpbGUm KTsKKyAgdm9pZCBmdjEodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZ2MSh0aGlz IFgwIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlJjsK KyAgdm9pZCBmY3YwKHRoaXMgWDAgJik7CisgIHZvaWQgZmN2MCh0aGlzIFgwICYmKTsKKyAgdm9p ZCBmY3YwKHRoaXMgWDAgY29uc3QmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDAgY29uc3QmJik7Cisg IHZvaWQgZmN2MCh0aGlzIFgwIHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MCh0aGlzIFgwIHZvbGF0 aWxlJiYpOworICB2b2lkIGZjdjAodGhpcyBYMCBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lk IGZjdjEoKSBjb25zdCB2b2xhdGlsZSYmOworICB2b2lkIGZjdjEodGhpcyBYMCAmKTsKKyAgdm9p ZCBmY3YxKHRoaXMgWDAgJiYpOworICB2b2lkIGZjdjEodGhpcyBYMCBjb25zdCYpOworICB2b2lk IGZjdjEodGhpcyBYMCBjb25zdCYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDAgdm9sYXRpbGUmKTsK KyAgdm9pZCBmY3YxKHRoaXMgWDAgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MSh0aGlzIFgwIGNv bnN0IHZvbGF0aWxlJik7Cit9OworCisvLyBpb2JqIGxhc3QsIDcgeG9iaiAxIGlvYmoKKworc3Ry dWN0IFgxIHsKKyAgdm9pZCBmMCh0aGlzIFgxICYmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIGNvbnN0 Jik7CisgIHZvaWQgZjAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmMCh0aGlzIFgxIHZvbGF0 aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMSB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMCh0aGlzIFgx IGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsK KyAgdm9pZCBmMCgpICY7CisKKyAgdm9pZCBmMSh0aGlzIFgxICYpOworICB2b2lkIGYxKHRoaXMg WDEgY29uc3QmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIGNvbnN0JiYpOworICB2b2lkIGYxKHRoaXMg WDEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIHZvbGF0aWxlJiYpOworICB2b2lkIGYx KHRoaXMgWDEgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBmMSh0aGlzIFgxIGNvbnN0IHZvbGF0 aWxlJiYpOworICB2b2lkIGYxKCkgJiY7CisKKyAgdm9pZCBmYzAodGhpcyBYMSAmKTsKKyAgdm9p ZCBmYzAodGhpcyBYMSAmJik7CisgIHZvaWQgZmMwKHRoaXMgWDEgY29uc3QmJik7CisgIHZvaWQg ZmMwKHRoaXMgWDEgdm9sYXRpbGUmKTsKKyAgdm9pZCBmYzAodGhpcyBYMSB2b2xhdGlsZSYmKTsK KyAgdm9pZCBmYzAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgx IGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZjMCgpIGNvbnN0JjsKKworICB2b2lkIGZjMSh0 aGlzIFgxICYpOworICB2b2lkIGZjMSh0aGlzIFgxICYmKTsKKyAgdm9pZCBmYzEodGhpcyBYMSBj b25zdCYpOworICB2b2lkIGZjMSh0aGlzIFgxIHZvbGF0aWxlJik7CisgIHZvaWQgZmMxKHRoaXMg WDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZmMxKHRoaXMgWDEgY29uc3Qgdm9sYXRpbGUmKTsKKyAg dm9pZCBmYzEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmYzEoKSBjb25zdCYm OworCisgIHZvaWQgZnYwKHRoaXMgWDEgJik7CisgIHZvaWQgZnYwKHRoaXMgWDEgJiYpOworICB2 b2lkIGZ2MCh0aGlzIFgxIGNvbnN0Jik7CisgIHZvaWQgZnYwKHRoaXMgWDEgY29uc3QmJik7Cisg IHZvaWQgZnYwKHRoaXMgWDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZnYwKHRoaXMgWDEgY29uc3Qg dm9sYXRpbGUmKTsKKyAgdm9pZCBmdjAodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9p ZCBmdjAoKSB2b2xhdGlsZSY7CisKKyAgdm9pZCBmdjEodGhpcyBYMSAmKTsKKyAgdm9pZCBmdjEo dGhpcyBYMSAmJik7CisgIHZvaWQgZnYxKHRoaXMgWDEgY29uc3QmKTsKKyAgdm9pZCBmdjEodGhp cyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmdjEodGhpcyBYMSB2b2xhdGlsZSYpOworICB2b2lkIGZ2 MSh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZnYxKHRoaXMgWDEgY29uc3Qgdm9s YXRpbGUmJik7CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmJjsKKworICB2b2lkIGZjdjAodGhpcyBY MSAmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEgJiYpOworICB2b2lkIGZjdjAodGhpcyBYMSBjb25z dCYpOworICB2b2lkIGZjdjAodGhpcyBYMSBjb25zdCYmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEg dm9sYXRpbGUmKTsKKyAgdm9pZCBmY3YwKHRoaXMgWDEgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2 MCh0aGlzIFgxIGNvbnN0IHZvbGF0aWxlJiYpOworICB2b2lkIGZjdjAoKSBjb25zdCB2b2xhdGls ZSY7CisKKyAgdm9pZCBmY3YxKHRoaXMgWDEgJik7CisgIHZvaWQgZmN2MSh0aGlzIFgxICYmKTsK KyAgdm9pZCBmY3YxKHRoaXMgWDEgY29uc3QmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDEgY29uc3Qm Jik7CisgIHZvaWQgZmN2MSh0aGlzIFgxIHZvbGF0aWxlJik7CisgIHZvaWQgZmN2MSh0aGlzIFgx IHZvbGF0aWxlJiYpOworICB2b2lkIGZjdjEodGhpcyBYMSBjb25zdCB2b2xhdGlsZSYpOworICB2 b2lkIGZjdjEoKSBjb25zdCB2b2xhdGlsZSYmOworfTsKKworLy8gb3JkZXJlZCwgNyB4b2JqIDEg aW9iagorCitzdHJ1Y3QgWDIgeworICB2b2lkIGYwKCkgJjsKKyAgdm9pZCBmMCh0aGlzIFgyICYm KTsKKyAgdm9pZCBmMCh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZjAodGhpcyBYMiBjb25zdCYm KTsKKyAgdm9pZCBmMCh0aGlzIFgyIHZvbGF0aWxlJik7CisgIHZvaWQgZjAodGhpcyBYMiB2b2xh dGlsZSYmKTsKKyAgdm9pZCBmMCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZjAo dGhpcyBYMiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGYxKHRoaXMgWDIgJik7CisgIHZv aWQgZjEoKSAmJjsKKyAgdm9pZCBmMSh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZjEodGhpcyBY MiBjb25zdCYmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIHZvbGF0aWxlJik7CisgIHZvaWQgZjEodGhp cyBYMiB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmMSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7Cisg IHZvaWQgZjEodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZjMCh0aGlzIFgy ICYpOworICB2b2lkIGZjMCh0aGlzIFgyICYmKTsKKyAgdm9pZCBmYzAoKSBjb25zdCY7CisgIHZv aWQgZmMwKHRoaXMgWDIgY29uc3QmJik7CisgIHZvaWQgZmMwKHRoaXMgWDIgdm9sYXRpbGUmKTsK KyAgdm9pZCBmYzAodGhpcyBYMiB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmYzAodGhpcyBYMiBjb25z dCB2b2xhdGlsZSYpOworICB2b2lkIGZjMCh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJiYpOworCisg IHZvaWQgZmMxKHRoaXMgWDIgJik7CisgIHZvaWQgZmMxKHRoaXMgWDIgJiYpOworICB2b2lkIGZj MSh0aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZmMxKCkgY29uc3QmJjsKKyAgdm9pZCBmYzEodGhp cyBYMiB2b2xhdGlsZSYpOworICB2b2lkIGZjMSh0aGlzIFgyIHZvbGF0aWxlJiYpOworICB2b2lk IGZjMSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmMxKHRoaXMgWDIgY29uc3Qg dm9sYXRpbGUmJik7CisKKyAgdm9pZCBmdjAodGhpcyBYMiAmKTsKKyAgdm9pZCBmdjAodGhpcyBY MiAmJik7CisgIHZvaWQgZnYwKHRoaXMgWDIgY29uc3QmKTsKKyAgdm9pZCBmdjAodGhpcyBYMiBj b25zdCYmKTsKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZSY7CisgIHZvaWQgZnYwKHRoaXMgWDIgdm9s YXRpbGUmJik7CisgIHZvaWQgZnYwKHRoaXMgWDIgY29uc3Qgdm9sYXRpbGUmKTsKKyAgdm9pZCBm djAodGhpcyBYMiBjb25zdCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZ2MSh0aGlzIFgyICYpOwor ICB2b2lkIGZ2MSh0aGlzIFgyICYmKTsKKyAgdm9pZCBmdjEodGhpcyBYMiBjb25zdCYpOworICB2 b2lkIGZ2MSh0aGlzIFgyIGNvbnN0JiYpOworICB2b2lkIGZ2MSh0aGlzIFgyIHZvbGF0aWxlJik7 CisgIHZvaWQgZnYxKCkgdm9sYXRpbGUmJjsKKyAgdm9pZCBmdjEodGhpcyBYMiBjb25zdCB2b2xh dGlsZSYpOworICB2b2lkIGZ2MSh0aGlzIFgyIGNvbnN0IHZvbGF0aWxlJiYpOworCisgIHZvaWQg ZmN2MCh0aGlzIFgyICYpOworICB2b2lkIGZjdjAodGhpcyBYMiAmJik7CisgIHZvaWQgZmN2MCh0 aGlzIFgyIGNvbnN0Jik7CisgIHZvaWQgZmN2MCh0aGlzIFgyIGNvbnN0JiYpOworICB2b2lkIGZj djAodGhpcyBYMiB2b2xhdGlsZSYpOworICB2b2lkIGZjdjAodGhpcyBYMiB2b2xhdGlsZSYmKTsK KyAgdm9pZCBmY3YwKCkgY29uc3Qgdm9sYXRpbGUmOworICB2b2lkIGZjdjAodGhpcyBYMiBjb25z dCB2b2xhdGlsZSYmKTsKKworICB2b2lkIGZjdjEodGhpcyBYMiAmKTsKKyAgdm9pZCBmY3YxKHRo aXMgWDIgJiYpOworICB2b2lkIGZjdjEodGhpcyBYMiBjb25zdCYpOworICB2b2lkIGZjdjEodGhp cyBYMiBjb25zdCYmKTsKKyAgdm9pZCBmY3YxKHRoaXMgWDIgdm9sYXRpbGUmKTsKKyAgdm9pZCBm Y3YxKHRoaXMgWDIgdm9sYXRpbGUmJik7CisgIHZvaWQgZmN2MSh0aGlzIFgyIGNvbnN0IHZvbGF0 aWxlJik7CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxlJiY7Cit9OwpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJhc2ljNC5DCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNDJhYzA0NzhlOQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1iYXNpYzQuQwpAQCAtMCww ICsxLDExMSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIz IH0gfQorCisvLyB2YWxpZCBvdmVybG9hZGluZyBvZiBpb2JqIG1lbWJlciBmdW5jdGlvbnMgd2l0 aG91dCByZWYgcXVhbGlmaWVycworLy8gd2l0aCB4b2JqIG1lbWJlciBmdW5jdGlvbnMgKGFuZCB2 aWNlLXZlcnNhKQorCisvLyB0aGlzIGlzIHRoZSBtb3N0IHlvdSBjYW4gbWl4IHRoZXNlLCBpdCBt YXkgbG9vayBzaG9ydCBidXQgaXQgZG9lcyB0ZXN0CisvLyBhbGwgYWxsb3dlZCBjYXNlcyAob3Ro ZXIgdGhhbiBieS12YWx1ZSBhbmQgdW5yZWxhdGVkIHR5cGVzKQorCisvLyBbb3Zlci5tYXRjaC5m dW5jcy5nZW5lcmFsLjRdCisvLyBGb3IgaW1wbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMs IHRoZSB0eXBlIG9mIHRoZSBpbXBsaWNpdAorLy8gb2JqZWN0IHBhcmFtZXRlciBpcworLy8gLS0g 4oCcbHZhbHVlIHJlZmVyZW5jZSB0byBjdiBY4oCdIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQKKy8v ICAgIHdpdGhvdXQgYSByZWYtcXVhbGlmaWVyIG9yIHdpdGggdGhlICYgcmVmLXF1YWxpZmllcgor Ly8gLS0g4oCccnZhbHVlIHJlZmVyZW5jZSB0byBjdiBY4oCdIGZvciBmdW5jdGlvbnMgZGVjbGFy ZWQgd2l0aAorLy8gICAgdGhlICYmIHJlZi1xdWFsaWZpZXIKKworLy8gW2Jhc2ljLnNjb3BlLnNj b3BlLjNdCisvLyBUd28gbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zIGhhdmUgY29ycmVzcG9u ZGluZyBvYmplY3QKKy8vIHBhcmFtZXRlcnMgaWY6CisvLyAtLSBleGFjdGx5IG9uZSBpcyBhbiBp bXBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIHdpdGggbm8KKy8vICAgIHJlZi1xdWFsaWZp ZXIgYW5kIHRoZSB0eXBlcyBvZiB0aGVpciBvYmplY3QgcGFyYW1ldGVycworLy8gICAgKFtkY2wu ZmN0XSksIGFmdGVyIHJlbW92aW5nIHRvcC1sZXZlbCByZWZlcmVuY2VzLCBhcmUgdGhlCisvLyAg ICBzYW1lLCBvcgorCisvLyBpbiBzaW1wbGVyIHRlcm1zLCBvbmx5IHRoZSBjdiBxdWFsaWZpY2F0 aW9uIG9mIHRoZSBleHBsaWNpdC9pbXBsaWNpdCBvYmplY3QKKy8vIG1lbWJlciBmdW5jdGlvbiBt YXR0ZXJzIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZXNlIGFyZSByZWRlY2xhcmF0aW9ucyBv ciBvdmVybG9hZHMKKworLy8geG9iaiBmaXJzdCwgaW9iaiBsYXN0CisKK3N0cnVjdCBTMCB7Cisg IHZvaWQgZih0aGlzIFMwICYpOworICB2b2lkIGYodGhpcyBTMCAmJik7CisgIHZvaWQgZigpIGNv bnN0OworICB2b2lkIGYoKSB2b2xhdGlsZTsKKyAgdm9pZCBmKCkgY29uc3Qgdm9sYXRpbGU7CisK KyAgdm9pZCBmYyh0aGlzIFMwIGNvbnN0Jik7CisgIHZvaWQgZmModGhpcyBTMCBjb25zdCYmKTsK KyAgdm9pZCBmYygpOworICB2b2lkIGZjKCkgdm9sYXRpbGU7CisgIHZvaWQgZmMoKSBjb25zdCB2 b2xhdGlsZTsKKworICB2b2lkIGZ2KHRoaXMgUzAgdm9sYXRpbGUmKTsKKyAgdm9pZCBmdih0aGlz IFMwIHZvbGF0aWxlJiYpOworICB2b2lkIGZ2KCk7CisgIHZvaWQgZnYoKSBjb25zdDsKKyAgdm9p ZCBmdigpIGNvbnN0IHZvbGF0aWxlOworCisgIHZvaWQgZmN2KHRoaXMgUzAgY29uc3Qgdm9sYXRp bGUmKTsKKyAgdm9pZCBmY3YodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsKKyAgdm9pZCBmY3Yo KTsKKyAgdm9pZCBmY3YoKSBjb25zdDsKKyAgdm9pZCBmY3YoKSB2b2xhdGlsZTsKK307CisKKy8v IGlvYmogZmlyc3QsIHhvYmogbGFzdAorCitzdHJ1Y3QgUzEgeworICB2b2lkIGYoKSBjb25zdDsK KyAgdm9pZCBmKCkgdm9sYXRpbGU7CisgIHZvaWQgZigpIGNvbnN0IHZvbGF0aWxlOworICB2b2lk IGYodGhpcyBTMSAmKTsKKyAgdm9pZCBmKHRoaXMgUzEgJiYpOworCisgIHZvaWQgZmMoKTsKKyAg dm9pZCBmYygpIHZvbGF0aWxlOworICB2b2lkIGZjKCkgY29uc3Qgdm9sYXRpbGU7CisgIHZvaWQg ZmModGhpcyBTMSBjb25zdCYpOworICB2b2lkIGZjKHRoaXMgUzEgY29uc3QmJik7CisKKyAgdm9p ZCBmdigpOworICB2b2lkIGZ2KCkgY29uc3Q7CisgIHZvaWQgZnYoKSBjb25zdCB2b2xhdGlsZTsK KyAgdm9pZCBmdih0aGlzIFMxIHZvbGF0aWxlJik7CisgIHZvaWQgZnYodGhpcyBTMSB2b2xhdGls ZSYmKTsKKworICB2b2lkIGZjdigpOworICB2b2lkIGZjdigpIGNvbnN0OworICB2b2lkIGZjdigp IHZvbGF0aWxlOworICB2b2lkIGZjdih0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQg ZmN2KHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7Cit9OworCisvLyBpbiBvcmRlcgorCitzdHJ1 Y3QgUzIgeworICB2b2lkIGYodGhpcyBTMiAmKTsKKyAgdm9pZCBmKHRoaXMgUzIgJiYpOworICB2 b2lkIGYoKSBjb25zdDsKKyAgdm9pZCBmKCkgdm9sYXRpbGU7CisgIHZvaWQgZigpIGNvbnN0IHZv bGF0aWxlOworCisgIHZvaWQgZmMoKTsKKyAgdm9pZCBmYyh0aGlzIFMyIGNvbnN0Jik7CisgIHZv aWQgZmModGhpcyBTMiBjb25zdCYmKTsKKyAgdm9pZCBmYygpIHZvbGF0aWxlOworICB2b2lkIGZj KCkgY29uc3Qgdm9sYXRpbGU7CisKKyAgdm9pZCBmdigpOworICB2b2lkIGZ2KCkgY29uc3Q7Cisg IHZvaWQgZnYodGhpcyBTMiB2b2xhdGlsZSYpOworICB2b2lkIGZ2KHRoaXMgUzIgdm9sYXRpbGUm Jik7CisgIHZvaWQgZnYoKSBjb25zdCB2b2xhdGlsZTsKKworICB2b2lkIGZjdigpOworICB2b2lk IGZjdigpIGNvbnN0OworICB2b2lkIGZjdigpIHZvbGF0aWxlOworICB2b2lkIGZjdih0aGlzIFMy IGNvbnN0IHZvbGF0aWxlJik7CisgIHZvaWQgZmN2KHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUmJik7 Cit9OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWJ5LXZhbHVlMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5 LXZhbHVlMS5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lODVjOWFi MDNiMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1ieS12YWx1ZTEuQwpAQCAtMCwwICsxLDQ5IEBACisvLyBQMDg0N1I3CisvLyB7IGRn LWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gY29udmVyc2lvbiBvZiB0aGUgaW1wbGlj aXQgb2JqZWN0IGFyZ3VtZW50IHRvIGFuIHhvYmogcGFyYW1ldGVyCisvLyB3aGVuIGNhbGxpbmcg YnkgdmFsdWUgeG9iaiBtZW1iZXIgZnVuY3Rpb25zCisKKy8vIFRoZSBpbml0aWFsIGltcGxlbWVu dGF0aW9uIG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9ucyBpbmNvcnJlY3RseSBkaWQgbm90CisvLyBj b252ZXJ0IHRoZSBpbXBsaWNpdCBvYmplY3QgYXJndW1lbnQgd2hlbiBiaW5kaW5nIHRvIHRoZSB4 b2JqCisvLyBwYXJhbWV0ZXIuIEluIHNwaXRlIG9mIHRoaXMsIGl0IGRpZCBjb3JyZWN0bHkgY2hl Y2sgdG8gc2VlIGlmIHN1Y2ggYQorLy8gY29udmVyc2lvbiB3b3VsZCBiZSB2YWxpZCwgdGh1cyBu byBkaWFnbm9zdGljIHdvdWxkIGJlIGVtaXR0ZWQgd2hlbiBhCisvLyBjb252ZXJzaW9uIHdhcyB2 YWxpZCwgYnV0IGluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIGNvbnZlcnNpb24sIHRoZQorLy8gYXJn dW1lbnQgd291bGQgc2lsZW50bHkgYmUgcmVpbnRlcnByZXRlZCBhcyB0aGUgdHlwZSBvZiB0aGUg cGFyYW1ldGVyLiAKKworLy8gVGhpcyBpcyB3aHkgd2UgdXNlIHVpbnRwdHJfdCBmb3IgdGhlIHZh bHVlIGluIFMgYW5kIGNvbXBhcmUgdGhlIHJlc3VsdAorLy8gb2YgZiB0byAmcywgd2Ugd2FudCB0 byB0ZXN0IGZvciBzaW1wbGUgcmVpbnRlcnByZXRhdGlvbiBvZiB0aGUKKy8vIGFyZ3VtZW50LiBU byBhY2N1cmF0ZWx5IHRlc3QgZm9yIHRoaXMgd2UgbWFrZSBzdXJlIHRvIHVzZSBhbiBvYmplY3QK Ky8vIHRoYXQgaGFzIGEgZGlmZmVyZW50IGFkZHJlc3MgdGhhbiB0aGUgdmFsdWUgb2Ygb3VyIG1h Z2ljIG51bWJlci4gSXQncworLy8gYW4gaW1wb3NzaWJseSBpbXByb2JhYmxlIGVkZ2UgY2FzZSBi dXQgaXQncyB0cml2aWFsIHRvIHdvcmsgYXJvdW5kLiBXZQorLy8gc3RpbGwgY29tcGFyZSBhZ2Fp bnN0IGJvdGggdGhlIGFkZHJlc3Mgb2YgcyBhbmQgdGhlIG1hZ2ljIG51bWJlciBzbyB3ZQorLy8g Y2FuIGFkZGl0aW9uYWxseSB0ZXN0IGZvciBidWdnZWQgY29udmVyc2lvbnMsIHdoaWxlIGFsc28K Ky8vIGRpZmZlcmVudGlhdGluZyB0aGF0IGNhc2UgZnJvbSByZWludGVycHJldGF0aW9uIG9mIHRo ZSBhcmd1bWVudC4KKworLy8geyBkZy14ZmFpbC1ydW4taWYgImJ5IHZhbHVlIGV4cGxpY2l0IG9i amVjdCBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCB5ZXQiIHsgKi0qLSogfSB9CisKK3VzaW5n IHVpbnRwdHJfdCA9IF9fVUlOVFBUUl9UWVBFX187CitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJf dCBtYWdpYyA9IDQyOworCitzdHJ1Y3QgUyB7CisgICAgdWludHB0cl90IF92OworICAgIHVpbnRw dHJfdCBmKHRoaXMgUyBzZWxmKSB7CisgICAgICAgIHJldHVybiBzZWxmLl92OworICAgIH0KK307 CisKK2ludCBtYWluKCkgCit7CisgIFMgczB7bWFnaWN9OworICBTIHMxe21hZ2ljfTsKKyAgLy8g cHJldmVudCAoYWJzdXJkbHkgaW1wcm9iYWJsZSkgYm9ndXMgZmFpbHVyZXMKKyAgUyYgcyA9IG1h Z2ljICE9ICh1aW50cHRyX3QpKCZzMCkgPyBzMCA6IHMxOworCisgIHVpbnRwdHJfdCBjb25zdCBy ZXQgPSBzLmYoKTsKKyAgLy8gY2hlY2sgZm9yIHJlaW50ZXJwcmV0YXRpb24gb2YgdGhlIG9iamVj dCBhcmd1bWVudAorICBpZiAocmV0ID09ICh1aW50cHRyX3QpKCZzKSkKKyAgICBfX2J1aWx0aW5f YWJvcnQgKCk7CisgIC8vIGNoZWNrIGZvciBhIGJ1Z2dlZCBjb252ZXJzaW9uCisgIGlmIChyZXQg IT0gbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5DIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlMi5DCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNTE0MzliYjFkZgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12YWx1ZTIuQwpAQCAt MCwwICsxLDU5IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdldCBjKysyMyB9 IH0KKworLy8gY29udmVyc2lvbiBvZiB0aGUgaW1wbGljaXQgb2JqZWN0IGFyZ3VtZW50IHRvIGFu IHhvYmogcGFyYW1ldGVyCisvLyB1c2luZyBhIHVzZXIgZGVmaW5lZCBjb252ZXJzaW9uIG9yIGNv bnZlcnRpbmcgY29uc3RydWN0b3IKKy8vIHdoZW4gY2FsbGluZyBieSB2YWx1ZSB4b2JqIG1lbWJl ciBmdW5jdGlvbnMKKworLy8gc2VlIGV4cGxpY2l0LW9iai1ieS12YWx1ZTEuQyBmb3IgZGV0YWls cyBvbiB0aGlzIHRlc3QKKworLy8geyBkZy14ZmFpbC1ydW4taWYgInVzZXIgZGVmaW5lZCBjb252 ZXJzaW9ucyBmcm9tIGFuIGltcGxpY2l0IG9iamVjdCBhcmd1bWVudCB0byBhbiBleHBsaWNpdCBv YmplY3QgcGFyYW1ldGVyIGFyZSBub3Qgc3VwcG9ydGVkIHlldCIgeyAqLSotKiB9IH0KKwordXNp bmcgdWludHB0cl90ID0gX19VSU5UUFRSX1RZUEVfXzsKK2lubGluZSBjb25zdGV4cHIgdWludHB0 cl90IG1hZ2ljID0gNDI7CisKK3N0cnVjdCBTOworCitzdHJ1Y3QgRnJvbVMgeworICB1aW50cHRy X3QgX3Y7CisgIEZyb21TKFMpOworfTsKKworc3RydWN0IFMgeworICBvcGVyYXRvciB1aW50cHRy X3QoKSBjb25zdCB7CisgICAgcmV0dXJuIG1hZ2ljOworICB9CisgIHVpbnRwdHJfdCBmKHRoaXMg dWludHB0cl90IG4pIHsKKyAgICByZXR1cm4gbjsKKyAgfQorICB1aW50cHRyX3QgZyh0aGlzIEZy b21TIGZyb21fcykgeworICAgIHJldHVybiBmcm9tX3MuX3Y7CisgIH0KK307CisKK0Zyb21TOjpG cm9tUyhTKSA6IF92KG1hZ2ljKSB7fQorCisKK2ludCBtYWluKCkgCit7CisgIFMgczB7fTsKKyAg UyBzMXt9OworICAvLyBwcmV2ZW50IChhYnN1cmRseSBpbXByb2JhYmxlKSBib2d1cyBmYWlsdXJl cworICBTJiBzID0gbWFnaWMgIT0gKHVpbnRwdHJfdCkoJnMwKSA/IHMwIDogczE7CisKKyAgdWlu dHB0cl90IGNvbnN0IHJldDAgPSBzLmYoKTsKKyAgLy8gY2hlY2sgZm9yIHJlaW50ZXJwcmV0YXRp b24gb2YgdGhlIG9iamVjdCBhcmd1bWVudAorICBpZiAocmV0MCA9PSAodWludHB0cl90KSgmcykp CisgICAgX19idWlsdGluX2Fib3J0ICgpOworICAvLyBjaGVjayBmb3IgYSBidWdnZWQgY29udmVy c2lvbgorICBpZiAocmV0MCAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisKKyAg dWludHB0cl90IGNvbnN0IHJldDEgPSBzLmcoKTsKKyAgLy8gY2hlY2sgZm9yIHJlaW50ZXJwcmV0 YXRpb24gb2YgdGhlIG9iamVjdCBhcmd1bWVudAorICBpZiAocmV0MSA9PSAodWludHB0cl90KSgm cykpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworICAvLyBjaGVjayBmb3IgYSBidWdnZWQgY29u dmVyc2lvbgorICBpZiAocmV0MSAhPSBtYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnkt dmFsdWUzLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotYnktdmFs dWUzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMwZTU1NmJkNmNi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWJ5LXZhbHVlMy5DCkBAIC0wLDAgKzEsNDIgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g cnVuIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyBjb3JyZWN0IGNvbnN0cnVjdG9yIHNlbGVjdGlv biB3aGVuIGluaXRpYWxpemluZyBhIGJ5IHZhbHVlIHhvYmogcGFyYW1ldGVyCisKKy8vIHNlZSBl eHBsaWNpdC1vYmotYnktdmFsdWUxLkMgZm9yIGRldGFpbHMgb24gdGhpcyB0ZXN0CisKKy8vIHsg ZGcteGZhaWwtcnVuLWlmICJieSB2YWx1ZSBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIGlzIG5v dCBzdXBwb3J0ZWQgeWV0IiB7ICotKi0qIH0gfQorCit1c2luZyB1aW50cHRyX3QgPSBfX1VJTlRQ VFJfVFlQRV9fOworaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFnaWMgPSA0MjsKK2lubGlu ZSBjb25zdGV4cHIgdWludHB0cl90IGNvcHlfbWFnaWMgPSA1OworaW5saW5lIGNvbnN0ZXhwciB1 aW50cHRyX3QgbW92ZV9tYWdpYyA9IDEwOworCitzdHJ1Y3QgUyB7CisgIHVpbnRwdHJfdCBfdjsK KyAgZXhwbGljaXQgUyh1aW50cHRyX3QgdikgOiBfdih2KSB7fQorICBTKFMgY29uc3QmIG90aGVy KSA6IF92KG90aGVyLl92ICsgY29weV9tYWdpYykge30KKyAgUyhTJiYgb3RoZXIpIDogX3Yob3Ro ZXIuX3YgKyBtb3ZlX21hZ2ljKSB7fQorICB1aW50cHRyX3QgZih0aGlzIFMgc2VsZikgeworICAg IHJldHVybiBzZWxmLl92OworICB9Cit9OworCitpbnQgbWFpbigpIAoreworICBTIHMwe21hZ2lj fTsKKyAgUyBzMXttYWdpY307CisgIC8vIHByZXZlbnQgKGFic3VyZGx5IGltcHJvYmFibGUgKF4y KSkgYm9ndXMgcmVzdWx0cworICAvLyBpdCdzIHZpcnR1YWxseSBpbXBvc3NpYmxlIGZvciBib3Ro IHRvIGhhdmUgYSBib2d1cyByZXN1bHQsCisgIC8vIGJ1dCB3ZSBjYW4gZ3VhcmFudGVlIGNvcnJl Y3QgcmVzdWx0cyBmcm9tIGJvdGggZWFzaWx5LCBzbyB3aHkgbm90PworICBTJiBzX2NvcHlfZnJv bSA9IG1hZ2ljICsgY29weV9tYWdpYyAhPSAodWludHB0cl90KSgmczApID8gczAgOiBzMTsKKyAg UyYgc19tb3ZlX2Zyb20gPSBtYWdpYyArIG1vdmVfbWFnaWMgIT0gKHVpbnRwdHJfdCkoJnMwKSA/ IHMwIDogczE7CisgIHVpbnRwdHJfdCBjb25zdCBjb3B5X3JldCA9IHN0YXRpY19jYXN0PFMgY29u c3QmPihzX2NvcHlfZnJvbSkuZigpOworICB1aW50cHRyX3QgY29uc3QgbW92ZV9yZXQgPSBzdGF0 aWNfY2FzdDxTJiY+KHNfbW92ZV9mcm9tKS5mKCk7CisgIC8vIHdlIHRlc3Qgc3BlY2lmaWNhbGx5 IGZvciByZWludGVycHJldGF0aW9uIGluIG90aGVyCisgIC8vIGJ5IHZhbHVlIHRlc3RzLCBpdCdz IHVubmVjZXNzYXJ5IHRvIGRvIGl0IGFnYWluIGhlcmUKKyAgaWYgKGNvcHlfcmV0ICE9IG1hZ2lj ICsgY29weV9tYWdpYykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlmIChtb3ZlX3JldCAh PSBtYWdpYyArIG1vdmVfbWFnaWMpCisgICAgX19idWlsdGluX2Fib3J0ICgpOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlNC5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWJ5LXZhbHVlNC5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kM2M1ZTM5M2U3YgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1ieS12 YWx1ZTQuQwpAQCAtMCwwICsxLDE5IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIGRpYWdub3NpcyBvZiBpbGwtZm9ybWVkIGNhbGxzIHRv IGJ5LXZhbHVlIHhvYmogbWVtYmVyIGZ1bmN0aW9ucworLy8gZHVlIHRvIGFuIGFic2VuY2Ugb2Yg dmFsaWQgY29udmVyc2lvbiBmdW5jdGlvbnMKKworc3RydWN0IE5vdEZyb21TIHt9OworCitzdHJ1 Y3QgUyB7CisgIHZvaWQgZih0aGlzIGludCkge30KKyAgdm9pZCBnKHRoaXMgTm90RnJvbVMpIHt9 Cit9OworCit2b2lkIHRlc3QoKQoreworICBTIHN7fTsKKyAgcy5mKCk7IC8vIHsgZGctZXJyb3Ig e2Nhbm5vdCBjb252ZXJ0ICdTJyB0byAnaW50J30gfQorICBzLmcoKTsgLy8geyBkZy1lcnJvciB7 Y2Fubm90IGNvbnZlcnQgJ1MnIHRvICdOb3RGcm9tUyd9IH0KK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1BLkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQS5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzM3NDVkNTc4NAotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlh bGVjdC1BLkMKQEAgLTAsMCArMSw2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUg eyB0YXJnZXQgYysrMjMgfSB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8g eyBkZy1ib2d1cyB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJs ZSB3aXRoICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3Qt Qi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0 LUIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDc3NDc1MDI1NWIK LS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotY3h4LWRpYWxlY3QtQi5DCkBAIC0wLDAgKzEsNiBAQAorLy8gUDA4NDdSNworLy8geyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IGMrKzIwX2Rvd24gfSB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lk IGYodGhpcyBTKTsgLy8geyBkZy1lcnJvciB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlv biBvbmx5IGF2YWlsYWJsZSB3aXRoICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9 IH0KK307CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotY3h4LWRpYWxlY3QtQy5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQt b2JqLWN4eC1kaWFsZWN0LUMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uN2RiZGM2NGEzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtQy5DCkBAIC0wLDAgKzEsOCBAQAorLy8gUDA4 NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIwX2Rvd24gfSB9CisvLyBkb24n dCBwYXNzIGluIC1wZWRhbnRpYy1lcnJvcnMKKy8vIHsgZGctb3B0aW9ucyAiIiB9CisKK3N0cnVj dCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy13YXJuaW5nIHtleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uIG9ubHkgYXZhaWxhYmxlIHdpdGggJy1zdGQ9Y1wrXCsyMycgb3Ig Jy1zdGQ9Z251XCtcKzIzJ30gfQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1ELkMgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5kY2NiMGNmMDdkZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1jeHgtZGlhbGVjdC1ELkMKQEAgLTAs MCArMSw3IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjBf ZG93biB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLVduby1jKysyMy1leHRlbnNpb25zIiB9CisKK3N0 cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy1ib2d1cyB7ZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRoICctc3RkPWNcK1wrMjMnIG9y ICctc3RkPWdudVwrXCsyMyd9IH0KK307CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLWN4eC1kaWFsZWN0LUUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMTkyNDIxMmZiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotY3h4LWRpYWxlY3QtRS5DCkBAIC0w LDAgKzEsNyBAQAorLy8gUDA4NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIw X2Rvd24gfSB9CisvLyB7IGRnLW9wdGlvbnMgIi1Xbm8tYysrMjMtZXh0ZW5zaW9ucyAtcGVkYW50 aWMtZXJyb3JzIiB9CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGYodGhpcyBTKTsgLy8geyBkZy1i b2d1cyB7ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBvbmx5IGF2YWlsYWJsZSB3aXRo ICctc3RkPWNcK1wrMjMnIG9yICctc3RkPWdudVwrXCsyMyd9IH0KK307CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMgYi9n Y2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3MxLkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiOTRmN2U5YzEyCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdu b3N0aWNzMS5DCkBAIC0wLDAgKzEsMTM4IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHJlamVjdGlvbiBhbmQgZGlhZ25vc2lzIG9mIHhv YmogbWVtYmVyIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbWVtYmVyIGZ1bmN0aW9uIHF1YWxpZmllcnMu CisKK3N0cnVjdCBTIHsKKyAgICB2b2lkIGZfdmFsdWVfMCh0aGlzIFMpIGNvbnN0OyAgICAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBm X3ZhbHVlXzEodGhpcyBTKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBo YXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV8yKHRoaXMgUykgY29uc3Qgdm9s YXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdmFsdWVfMyh0aGlzIFMpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV80KHRoaXMgUykgJiY7 ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9 CisgICAgdm9pZCBmX3ZhbHVlXzUodGhpcyBTKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV82 KHRoaXMgUykgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFsdWVfNyh0aGlzIFMpIHZvbGF0aWxlICY7 ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBmX3ZhbHVlXzgodGhpcyBTKSB2b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJv ciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsn IGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92YWx1ZV85KHRo aXMgUykgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2 KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdmFsdWVfQSh0aGlzIFMpIGNvbnN0IHZvbGF0aWxl ICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisKKyAg ICB2b2lkIGZfcmVmXzAodGhpcyBTJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmXzEodGhpcyBTJikgdm9s YXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfcmVmXzIodGhpcyBTJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmXzModGhpcyBTJikg JjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVy IiB9CisgICAgdm9pZCBmX3JlZl80KHRoaXMgUyYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfNSh0aGlz IFMmKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfNih0aGlzIFMmKSBjb25zdCAmJjsgICAgICAg ICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3Rh dGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZv aWQgZl9yZWZfNyh0aGlzIFMmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZfOCh0aGlzIFMmKSB2 b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxp ZmllciIgfQorICAgIHZvaWQgZl9yZWZfOSh0aGlzIFMmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9y ZWZfQSh0aGlzIFMmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX3JlZnJlZl8wKHRoaXMgUyYmKSBj b25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIg fQorICAgIHZvaWQgZl9yZWZyZWZfMSh0aGlzIFMmJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzIo dGhpcyBTJiYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3Yt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3JlZnJlZl8zKHRoaXMgUyYmKSAmOyAgICAgICAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGZfcmVmcmVmXzQodGhpcyBTJiYpICYmOyAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfNSh0aGlzIFMmJikg Y29uc3QgJjsgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIg ZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFs aWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzYodGhpcyBTJiYpIGNvbnN0ICYmOyAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX3JlZnJlZl83KHRoaXMgUyYmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9yZWZyZWZfOCh0aGlz IFMmJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2 KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfcmVmcmVmXzkodGhpcyBTJiYpIGNvbnN0IHZvbGF0 aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9Cisg ICAgdm9pZCBmX3JlZnJlZl9BKHRoaXMgUyYmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX2NyZWZf MCh0aGlzIFMgY29uc3QmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBo YXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmXzEodGhpcyBTIGNvbnN0Jikgdm9s YXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfY3JlZl8yKHRoaXMgUyBjb25zdCYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7 IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFte XG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZfMyh0 aGlzIFMgY29uc3QmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZl80KHRoaXMgUyBjb25zdCYpICYmOyAg ICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl9jcmVmXzUodGhpcyBTIGNvbnN0JikgY29uc3QgJjsgICAgICAgICAgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3Jl Zl82KHRoaXMgUyBjb25zdCYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBs aWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90 IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZfNyh0aGlzIFMgY29u c3QmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3Yp LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmXzgodGhpcyBTIGNvbnN0Jikgdm9sYXRpbGUg JiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfY3JlZl85KHRoaXMgUyBjb25zdCYpIGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7 IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFte XG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2Ny ZWZfQSh0aGlzIFMgY29uc3QmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX2NyZWZyZWZfMCh0aGlz IFMgY29uc3QmJikgY29uc3Q7ICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9i amVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBj di1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl8xKHRoaXMgUyBjb25zdCYmKSB2b2xh dGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl9jcmVmcmVmXzIodGhpcyBTIGNvbnN0JiYpIGNvbnN0IHZvbGF0aWxlOyAgICAv LyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMp XFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZy ZWZfMyh0aGlzIFMgY29uc3QmJikgJjsgICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfNCh0aGlzIFMgY29u c3QmJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVh bGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZfNSh0aGlzIFMgY29uc3QmJikgY29uc3QgJjsg ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0K KyAgICB2b2lkIGZfY3JlZnJlZl82KHRoaXMgUyBjb25zdCYmKSBjb25zdCAmJjsgICAgICAgICAg Ly8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGlj KVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQg Zl9jcmVmcmVmXzcodGhpcyBTIGNvbnN0JiYpIHZvbGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2NyZWZyZWZf OCh0aGlzIFMgY29uc3QmJikgdm9sYXRpbGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3JlZnJlZl85KHRoaXMgUyBj b25zdCYmKSBjb25zdCB2b2xhdGlsZSAmOyAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8 Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jcmVmcmVmX0EodGhpcyBTIGNvbnN0JiYpIGNv bnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisKKyAgICB2b2lkIGZfdnJlZl8wKHRoaXMgUyB2b2xhdGlsZSYpIGNvbnN0OyAgICAg ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICco PyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX3ZyZWZfMSh0aGlzIFMgdm9sYXRpbGUmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1l cnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJc XSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmXzIodGhpcyBT IHZvbGF0aWxlJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9i amVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBj di1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl8zKHRoaXMgUyB2b2xhdGlsZSYpICY7ICAg ICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl92cmVmXzQodGhpcyBTIHZvbGF0aWxlJikgJiY7ICAgICAgICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZf NSh0aGlzIFMgdm9sYXRpbGUmKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmXzYodGhpcyBTIHZv bGF0aWxlJikgY29uc3QgJiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVm fGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZl83KHRoaXMgUyB2b2xhdGlsZSYpIHZv bGF0aWxlICY7ICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1 bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZfOCh0aGlzIFMgdm9sYXRpbGUmKSB2b2xhdGlsZSAmJjsg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAg IHZvaWQgZl92cmVmXzkodGhpcyBTIHZvbGF0aWxlJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJl Zl9BKHRoaXMgUyB2b2xhdGlsZSYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGZfdnJlZnJlZl8wKHRo aXMgUyB2b2xhdGlsZSYmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGlj aXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBo YXZlIGN2LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzEodGhpcyBTIHZvbGF0aWxl JiYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlm aWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfMih0aGlzIFMgdm9sYXRpbGUmJikgY29uc3Qgdm9s YXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24g Jyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2 b2lkIGZfdnJlZnJlZl8zKHRoaXMgUyB2b2xhdGlsZSYmKSAmOyAgICAgICAgICAgICAgICAgLy8g eyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxb XlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJl Zl80KHRoaXMgUyB2b2xhdGlsZSYmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJlZl81KHRoaXMgUyB2 b2xhdGlsZSYmKSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChy ZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl92cmVmcmVmXzYodGhpcyBTIHZvbGF0aWxl JiYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdikt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX3ZyZWZyZWZfNyh0aGlzIFMgdm9sYXRpbGUmJikgdm9s YXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVu Y3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZp ZXIiIH0KKyAgICB2b2lkIGZfdnJlZnJlZl84KHRoaXMgUyB2b2xhdGlsZSYmKSB2b2xhdGlsZSAm JjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAn KD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQor ICAgIHZvaWQgZl92cmVmcmVmXzkodGhpcyBTIHZvbGF0aWxlJiYpIGNvbnN0IHZvbGF0aWxlICY7 ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX3ZyZWZyZWZfQSh0aGlzIFMgdm9sYXRpbGUmJikgY29uc3Qgdm9sYXRpbGUgJiY7IC8vIHsg ZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15c blxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKworICAgIHZvaWQgZl9j dnJlZl8wKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmXzEodGhp cyBTIGNvbnN0IHZvbGF0aWxlJikgdm9sYXRpbGU7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4 cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5u b3QgaGF2ZSBjdi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfMih0aGlzIFMgY29uc3Qg dm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2 LXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJlZl8zKHRoaXMgUyBjb25zdCB2b2xhdGlsZSYp ICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmll ciIgfQorICAgIHZvaWQgZl9jdnJlZl80KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpICYmOyAgICAg ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxpZmllciIgfQorICAg IHZvaWQgZl9jdnJlZl81KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIGNvbnN0ICY7ICAgICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9p ZCBmX2N2cmVmXzYodGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3QgJiY7ICAgICAgICAgIC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZf Y3ZyZWZfNyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmKSB2b2xhdGlsZSAmOyAgICAgICAgLy8geyBk Zy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxu XHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZl9jdnJl Zl84KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYpIHZvbGF0aWxlICYmOyAgICAgICAvLyB7IGRnLWVy cm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxd KycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmXzko dGhpcyBTIGNvbnN0IHZvbGF0aWxlJikgY29uc3Qgdm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3Ig ImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBj YW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGZfY3ZyZWZfQSh0aGlz IFMgY29uc3Qgdm9sYXRpbGUmKSBjb25zdCB2b2xhdGlsZSAmJjsgLy8geyBkZy1lcnJvciAiZXhw bGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5v dCBoYXZlIChyZWZ8Y3YpLXF1YWxpZmllciIgfQorCisgICAgdm9pZCBmX2N2cmVmcmVmXzAodGhp cyBTIGNvbnN0IHZvbGF0aWxlJiYpIGNvbnN0OyAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzEodGhpcyBTIGNv bnN0IHZvbGF0aWxlJiYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNp dCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhh dmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzIodGhpcyBTIGNvbnN0IHZv bGF0aWxlJiYpIGNvbnN0IHZvbGF0aWxlOyAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgY3Yt cXVhbGlmaWVyIiB9CisgICAgdm9pZCBmX2N2cmVmcmVmXzModGhpcyBTIGNvbnN0IHZvbGF0aWxl JiYpICY7ICAgICAgICAgICAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVt YmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgcmVmLXF1YWxp ZmllciIgfQorICAgIHZvaWQgZl9jdnJlZnJlZl80KHRoaXMgUyBjb25zdCB2b2xhdGlsZSYmKSAm JjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBm dW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfNSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29uc3Qg JjsgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfNih0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29uc3Qg JiY7ICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfNyh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgdm9sYXRp bGUgJjsgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfOCh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgdm9sYXRp bGUgJiY7ICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfOSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29uc3Qg dm9sYXRpbGUgJjsgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKyAgICB2b2lkIGZfY3ZyZWZyZWZfQSh0aGlzIFMgY29uc3Qgdm9sYXRpbGUmJikgY29uc3Qg dm9sYXRpbGUgJiY7IC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rp b24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIi IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF8wKHRoaXMgU2Vs ZiYmKSBjb25zdDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1l bWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxp ZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF8xKHRoaXMg U2VsZiYmKSB2b2xhdGlsZTsgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0 IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1 YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF8yKHRo aXMgU2VsZiYmKSBjb25zdCB2b2xhdGlsZTsgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2 LXF1YWxpZmllciIgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IHZvaWQgZF90ZW1wbF8z KHRoaXMgU2VsZiYmKSAmOyAgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQg b2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZl IHJlZi1xdWFsaWZpZXIiIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiB2b2lkIGRfdGVt cGxfNCh0aGlzIFNlbGYmJikgJiY7ICAgICAgICAgICAgICAgIC8vIHsgZGctZXJyb3IgImV4cGxp Y2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3Qg aGF2ZSByZWYtcXVhbGlmaWVyIiB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBk X3RlbXBsXzUodGhpcyBTZWxmJiYpIGNvbnN0ICY7ICAgICAgICAgICAvLyB7IGRnLWVycm9yICJl eHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fu bm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2Vs Zj4gdm9pZCBkX3RlbXBsXzYodGhpcyBTZWxmJiYpIGNvbnN0ICYmOyAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzcodGhpcyBTZWxmJiYpIHZvbGF0aWxlICY7ICAgICAg ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0 aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzgodGhpcyBTZWxmJiYpIHZvbGF0aWxl ICYmOyAgICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u ICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9 CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsXzkodGhpcyBTZWxmJiYp IGNvbnN0IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVy IGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVh bGlmaWVyIiB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gdm9pZCBkX3RlbXBsX0EodGhp cyBTZWxmJiYpIGNvbnN0IHZvbGF0aWxlICYmOyAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmpl Y3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJl ZnxjdiktcXVhbGlmaWVyIiB9CisKKyAgICB2b2lkIGRfYXV0b18wKHRoaXMgYXV0byYmKSBjb25z dDsgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5j dGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIGN2LXF1YWxpZmllciIgfQor ICAgIHZvaWQgZF9hdXRvXzEodGhpcyBhdXRvJiYpIHZvbGF0aWxlOyAgICAgICAgICAvLyB7IGRn LWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFzdGF0aWMpXFteXG5c clxdKycgY2Fubm90IGhhdmUgY3YtcXVhbGlmaWVyIiB9CisgICAgdm9pZCBkX2F1dG9fMih0aGlz IGF1dG8mJikgY29uc3Qgdm9sYXRpbGU7ICAgIC8vIHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVj dCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0rJyBjYW5ub3QgaGF2ZSBjdi1x dWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b18zKHRoaXMgYXV0byYmKSAmOyAgICAgICAgICAg ICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8h c3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lk IGRfYXV0b180KHRoaXMgYXV0byYmKSAmJjsgICAgICAgICAgICAgICAgLy8geyBkZy1lcnJvciAi ZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNh bm5vdCBoYXZlIHJlZi1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b181KHRoaXMgYXV0byYm KSBjb25zdCAmOyAgICAgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChyZWZ8Y3YpLXF1 YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzYodGhpcyBhdXRvJiYpIGNvbnN0ICYmOyAgICAg ICAgICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uICcoPyFz dGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVyIiB9CisgICAg dm9pZCBkX2F1dG9fNyh0aGlzIGF1dG8mJikgdm9sYXRpbGUgJjsgICAgICAgIC8vIHsgZGctZXJy b3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylcW15cblxyXF0r JyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KKyAgICB2b2lkIGRfYXV0b184KHRo aXMgYXV0byYmKSB2b2xhdGlsZSAmJjsgICAgICAgLy8geyBkZy1lcnJvciAiZXhwbGljaXQgb2Jq ZWN0IG1lbWJlciBmdW5jdGlvbiAnKD8hc3RhdGljKVxbXlxuXHJcXSsnIGNhbm5vdCBoYXZlIChy ZWZ8Y3YpLXF1YWxpZmllciIgfQorICAgIHZvaWQgZF9hdXRvXzkodGhpcyBhdXRvJiYpIGNvbnN0 IHZvbGF0aWxlICY7ICAvLyB7IGRnLWVycm9yICJleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0 aW9uICcoPyFzdGF0aWMpXFteXG5cclxdKycgY2Fubm90IGhhdmUgKHJlZnxjdiktcXVhbGlmaWVy IiB9CisgICAgdm9pZCBkX2F1dG9fQSh0aGlzIGF1dG8mJikgY29uc3Qgdm9sYXRpbGUgJiY7IC8v IHsgZGctZXJyb3IgImV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24gJyg/IXN0YXRpYylc W15cblxyXF0rJyBjYW5ub3QgaGF2ZSAocmVmfGN2KS1xdWFsaWZpZXIiIH0KK307CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3My LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3My LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdjOTMwODU5ZGFlCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LWRpYWdub3N0aWNzMi5DCkBAIC0wLDAgKzEsMjUgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMg b2YgaW5jb3JyZWN0IHVzZXMgb2YgJ3RoaXMnIGluIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlv bnMKKwordXNpbmcgZnVuY190eXBlID0gdm9pZCh0aGlzIGludCk7IC8vIHsgZGctbGluZSBmdW5j X3R5cGVfbGluZSB9CisvLyB7IGRnLWVycm9yICJhIGZ1bmN0aW9uIHR5cGUgY2Fubm90IGhhdmUg YW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIgIiIgeyB0YXJnZXQgKi0qLSogfSBmdW5jX3R5 cGVfbGluZSB9CisvLyB7IGRnLW5vdGUgInRoZSB0eXBlIG9mIGFuIGV4cGxpY2l0IG9iamVjdCBt ZW1iZXIgZnVuY3Rpb24gaXMgYSByZWd1bGFyIGZ1bmN0aW9uIHR5cGUiICIiIHsgdGFyZ2V0ICot Ki0qIH0gZnVuY190eXBlX2xpbmUgfQorCit1c2luZyBmdW5jX3B0cl90eXBlID0gdm9pZCgqKSh0 aGlzIGludCk7IC8vIHsgZGctbGluZSBmdW5jX3B0cl90eXBlX2xpbmUgfQorLy8geyBkZy1lcnJv ciAiYSBmdW5jdGlvbiBwb2ludGVyIHR5cGUgY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0 IHBhcmFtZXRlciIgIiIgeyB0YXJnZXQgKi0qLSogfSBmdW5jX3B0cl90eXBlX2xpbmUgfQorLy8g eyBkZy1ub3RlICJ0aGUgdHlwZSBvZiBhIHBvaW50ZXIgdG8gZXhwbGljaXQgb2JqZWN0IG1lbWJl ciBmdW5jdGlvbiBpcyBhIHJlZ3VsYXIgcG9pbnRlciB0byBmdW5jdGlvbiB0eXBlIiAiIiB7IHRh cmdldCAqLSotKiB9IGZ1bmNfcHRyX3R5cGVfbGluZSB9CisKK3N0cnVjdCBTIHsKKyAgICBzdGF0 aWMgdm9pZCBmKHRoaXMgUykge30gLy8geyBkZy1saW5lIHN0YXRpY19tZW1iZXJfZnVuY19saW5l IH0KK307CisvLyB7IGRnLWVycm9yICJhbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u IGNhbm5vdCBiZSAnc3RhdGljJyIgIiIgeyB0YXJnZXQgKi0qLSogfSBzdGF0aWNfbWVtYmVyX2Z1 bmNfbGluZSB9CisvLyB7IGRnLW5vdGUgImV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgZGVjbGFy ZWQgaGVyZSIgIiIgeyB0YXJnZXQgKi0qLSogfSBzdGF0aWNfbWVtYmVyX2Z1bmNfbGluZSB9CisK K3VzaW5nIG1lbV9mdW5jX3R5cGUgPSB2b2lkIChTOjoqKSh0aGlzIFMmKTsgLy8geyBkZy1saW5l IG1lbV9mdW5jX3R5cGVfbGluZSB9CisvLyB7IGRnLWVycm9yICJhIHBvaW50ZXIgdG8gbWVtYmVy IGZ1bmN0aW9uIHR5cGUgY2Fubm90IGhhdmUgYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciIg IiIgeyB0YXJnZXQgKi0qLSogfSBtZW1fZnVuY190eXBlX2xpbmUgfQorLy8geyBkZy1ub3RlICJ0 aGUgdHlwZSBvZiBhIHBvaW50ZXIgdG8gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBp cyBhIHJlZ3VsYXIgcG9pbnRlciB0byBmdW5jdGlvbiB0eXBlIiAiIiB7IHRhcmdldCAqLSotKiB9 IG1lbV9mdW5jX3R5cGVfbGluZSB9CisKK3ZvaWQgZih0aGlzIGludCk7IC8vIHsgZGctZXJyb3Ig ImEgbm9uLW1lbWJlciBmdW5jdGlvbiBjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFy YW1ldGVyIiB9Cit2b2lkIGYodGhpcyBpbnQpIHt9IC8vIHsgZGctZXJyb3IgImEgbm9uLW1lbWJl ciBmdW5jdGlvbiBjYW5ub3QgaGF2ZSBhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIiB9CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25v c3RpY3M0LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25v c3RpY3M0LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmNzQzYTg1 MDlmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWRpYWdub3N0aWNzNC5DCkBAIC0wLDAgKzEsMTkgQEAKKy8vIFAwODQ3UjcKKy8vIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFn bm9zaXMgb2YgYW4geG9iaiBwYXJhbWV0ZXIgZGVjbGFyZWQgd2l0aCBhIGRlZmF1bHQgYXJndW1l bnQKKworc3RydWN0IFMgeworICB2b2lkIGYwKHRoaXMgUyA9IHt9KSB7fSAvLyB7IGRnLWVycm9y ICJhbiBleHBsaWNpdCBvYmplY3QgcGFyYW1ldGVyIG1heSBub3QgaGF2ZSBhIGRlZmF1bHQgYXJn dW1lbnQiIH0KKyAgdm9pZCBmMSh0aGlzIFMgPSB7fSk7IC8vIHsgZGctZXJyb3IgImFuIGV4cGxp Y2l0IG9iamVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1bWVudCIgfQor ICB2b2lkIGYyKHRoaXMgUyk7CisgIHZvaWQgZjEwKHRoaXMgUyBzID0ge30pIHt9IC8vIHsgZGct ZXJyb3IgImFuIGV4cGxpY2l0IG9iamVjdCBwYXJhbWV0ZXIgbWF5IG5vdCBoYXZlIGEgZGVmYXVs dCBhcmd1bWVudCIgfQorICB2b2lkIGYxMSh0aGlzIFMgcyA9IHt9KTsgLy8geyBkZy1lcnJvciAi YW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3Vt ZW50IiB9CisgIHZvaWQgZjEyKHRoaXMgUyBzKTsKK307CisKK3ZvaWQgUzo6ZjEodGhpcyBTKSB7 fQordm9pZCBTOjpmMih0aGlzIFMgPSB7fSkge30gLy8geyBkZy1lcnJvciAiYW4gZXhwbGljaXQg b2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBkZWZhdWx0IGFyZ3VtZW50IiB9CisKK3Zv aWQgUzo6ZjExKHRoaXMgUyBzKSB7fQordm9pZCBTOjpmMTIodGhpcyBTIHMgPSB7fSkge30gLy8g eyBkZy1lcnJvciAiYW4gZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciBtYXkgbm90IGhhdmUgYSBk ZWZhdWx0IGFyZ3VtZW50IiB9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M1LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M1LkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjY1YTVjNjNmMjBiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0aWNzNS5DCkBAIC0wLDAgKzEsMTUg QEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKwor Ly8gbG9jYXRpb24gZGlhZ25vc3RpYyB0ZXh0IHdoZW4gYW4gZXJyb3IgaXMgZW1pdHRlZCBmcm9t IGFuIHhvYmogbWVtYmVyIGZ1bmN0aW9uCisvLyB0aGlzIGRvZXMgbm90IHRlc3QgZm9yIHNwZWNp ZmljIGlsbC1mb3JtZWQgY29kZSwganVzdCB0aGUgYWRkaXRpb25hbCBkaWFnbm9zdGljIG1lc3Nh Z2UKKworLy8geyBkZy1tZXNzYWdlICJJbiBleHBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9u IiAiIiB7IHRhcmdldCAqLSotKiB9IDAgfQorCitzdHJ1Y3QgUyB7CisgIHZvaWQgZih0aGlzIFMg cykgeworICAgIC8vIFRoZSBzcGVjaWZpYyBkaWFnbm9zaXMgaXNzdWVkIGhlcmUgZG9lcyBub3Qg bWF0dGVyCisgICAgLy8gd2UganVzdCBuZWVkIHRvIGZvcmNlIGFuIGVycm9yIHRvIGJlIGVtaXR0 ZWQKKyAgICArczsgLy8geyBkZy1lcnJvciAiIiB9CisgIH0KK307CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M2LkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU1NmQ2MjY1ZWExCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLWRpYWdub3N0 aWNzNi5DCkBAIC0wLDAgKzEsMjIgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7 IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVqZWN0aW9uIGFuZCBkaWFnbm9zaXMgb2YgaW52YWxp ZCB1c2VzIG9mICd0aGlzJyBpbiBib2R5IG9mIHhvYmogbWVtYmVyIGZ1bmN0aW9ucworCisvLyB7 IGRnLW1lc3NhZ2UgIkluIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb24iICIiIHsgdGFy Z2V0ICotKi0qIH0gMCB9CisKK3N0cnVjdCBTMCB7CisgIGludCBfbjsKKyAgdm9pZCBmKHRoaXMg UzAmIHMpIHsgLy8geyBkZy1ub3RlICJ1c2UgZXhwbGljaXQgb2JqZWN0IHBhcmFtZXRlciAncycg aW5zdGVhZCIgfSAKKyAgICB0aGlzLT5fbiA9IDEwOyAvLyB7IGRnLWVycm9yICIndGhpcycgaXMg dW5hdmFpbGFibGUgZm9yIGV4cGxpY2l0IG9iamVjdCBtZW1iZXIgZnVuY3Rpb25zIiB9CisgICAg Ly8gc3VwcHJlc3MgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcKKyAgICBzdGF0aWNfY2FzdDx2b2lk PihzKTsKKyAgfQorfTsKKworc3RydWN0IFMxIHsKKyAgaW50IF9uOworICB2b2lkIGYodGhpcyBT MSYpIHsgLy8geyBkZy1ub3RlICJuYW1lIGFuZCB1c2UgdGhlIGV4cGxpY2l0IG9iamVjdCBwYXJh bWV0ZXIgaW5zdGVhZCIgfQorICAgIHRoaXMtPl9uID0gMTA7IC8vIHsgZGctZXJyb3IgIid0aGlz JyBpcyB1bmF2YWlsYWJsZSBmb3IgZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMiIH0K KyAgfQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1kaWFnbm9zdGljczcuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1kaWFnbm9zdGljczcuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMTdiYTIzZGY3N2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAyMy9leHBsaWNpdC1vYmotZGlhZ25vc3RpY3M3LkMKQEAgLTAsMCArMSwyNSBAQAorLy8gUDA4 NDdSNworLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWplY3Rp b24gYW5kIGRpYWdub3NpcyB3aGVuIHRha2luZyBhZGRyZXNzIG9mIGFuIHVucXVhbGlmaWVkIHhv YmogbWVtYmVyIGZ1bmN0aW9uCisKK3N0cnVjdCBTIHsKKyAgc3RhdGljIHZvaWQgc3RhdGljX2Yo UyYpIHt9CisgIHZvaWQgaW9ial9tZW1iZXJfZigpIHt9CisgIHZvaWQgeG9ial9tZW1iZXJfZih0 aGlzIFMmKSB7fQorCisgIHZvaWQgdGVzdCgpIHsKKyAgICB1c2luZyBmdW5jX3B0cl90eXBlID0g dm9pZCgqKShTJik7CisgICAgLy8gdXNpbmcgbWVtX2Z1bmNfcHRyX3R5cGUgPSB2b2lkIChTOjoq KSgpOworCisgICAgLy8gYWxsb3dlZCAobm90IHRlc3RpbmcgZm9yIHRoaXMpCisgICAgLy8gZnVu Y19wdHJfdHlwZSBzdGF0aWNfZl9wdHIgPSAmc3RhdGljX2Y7CisKKyAgICAvLyBub3QgYWxsb3dl ZCAoYWxzbyBub3QgdGVzdGluZyBmb3IgdGhpcykKKyAgICAvLyBtZW1fZnVuY19wdHJfdHlwZSBp b2JqX21lbV9mX3B0ciA9ICZpb2JqX21lbWJlcl9mOworCisgICAgLy8gbm90IGFsbG93ZWQgKHRo aXMgaXMgd2hhdCB3ZSBhcmUgdGVzdGluZyBmb3IpCisgICAgZnVuY19wdHJfdHlwZSB4b2JqX21l bV9mX3B0ciA9ICZ4b2JqX21lbWJlcl9mOyAvLyB7IGRnLWVycm9yICJ0YWtpbmcgdGhlIGFkZHJl c3Mgb2YgYW4gZXhwbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbiBtdXN0IGJlIHF1YWxpZmll ZCIgfQorICB9Cit9OworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotbGFtYmRhMS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYTEuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u OTEzZmIzY2E1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAy My9leHBsaWNpdC1vYmotbGFtYmRhMS5DCkBAIC0wLDAgKzEsMTEgQEAKKy8vIFAwODQ3UjcKKy8v IHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gbGFtYmRhIGRlY2xhcmF0 aW9uIHdpdGggeG9iaiBwYXJhbWV0ZXIKKworLy8geyBkZy1leGNlc3MtZXJyb3JzICJleHBsaWNp dCBvYmplY3QgcGFyYW1ldGVyIHdpdGggbGFtYmRhcyBub3QgaW1wbGVtZW50ZWQgeWV0IiB7IHhm YWlsICotKi0qIH0gfQorCit2b2lkIHRlc3QoKQoreworICAodm9pZClbXSh0aGlzIGF1dG8mJiBz ZWxmKXt9OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLWxhbWJkYVgyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1v YmotbGFtYmRhWDIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTc5 MmVhZmI4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotbGFtYmRhWDIuQwpAQCAtMCwwICsxLDIyIEBACisvLyBQMDg0N1I3CisvLyB7 IGRnLWRvIHJ1biB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gcmVjdXJzaXZlIGxhbWJkYXMKKwor aW5saW5lIGNvbnN0ZXhwciBpbnQgY29ycmVjdF9yZXN1bHQgPSA1ICsgNCArIDMgKyAyICsgMTsg CisKK2ludCBtYWluKCkKK3sKKyAgYXV0byBjbDAgPSBbXSh0aGlzIGF1dG8mJiBzZWxmLCBpbnQg bikgICAgICAtPiBpbnQgeyByZXR1cm4gbiA/IHNlbGYobiAtIDEpICsgbiA6IDA7IH07CisgIGF1 dG8gY2wxID0gW10odGhpcyBhdXRvIGNvbnN0JiBzZWxmLCBpbnQgbikgLT4gaW50IHsgcmV0dXJu IG4gPyBzZWxmKG4gLSAxKSArIG4gOiAwOyB9OworICBhdXRvIGNsMiA9IFtdKHRoaXMgYXV0byBz ZWxmLCBpbnQgbikgICAgICAgIC0+IGludCB7IHJldHVybiBuID8gc2VsZihuIC0gMSkgKyBuIDog MDsgfTsKKyAgYXV0byBjbDMgPSBbXSh0aGlzIGF1dG8mJiBzZWxmLCBpbnQgbikgICAgIHsgaWYg KCFuKSByZXR1cm4gMDsgZWxzZSByZXR1cm4gc2VsZihuIC0gMSkgKyBuOyB9OworICBhdXRvIGNs NCA9IFtdKHRoaXMgYXV0byBjb25zdCYgc2VsZiwgaW50IG4peyBpZiAoIW4pIHJldHVybiAwOyBl bHNlIHJldHVybiBzZWxmKG4gLSAxKSArIG47IH07CisgIGF1dG8gY2w1ID0gW10odGhpcyBhdXRv IHNlbGYsIGludCBuKSAgICAgICB7IGlmICghbikgcmV0dXJuIDA7IGVsc2UgcmV0dXJuIHNlbGYo biAtIDEpICsgbjsgfTsKKyAgaWYgKGNsMCg1KSAhPSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGlu X2Fib3J0ICgpOworICBpZiAoY2wxKDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJv cnQgKCk7CisgIGlmIChjbDIoNSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAo KTsKKyAgaWYgKGNsMyg1KSAhPSBjb3JyZWN0X3Jlc3VsdCkgX19idWlsdGluX2Fib3J0ICgpOwor ICBpZiAoY2w0KDUpICE9IGNvcnJlY3RfcmVzdWx0KSBfX2J1aWx0aW5fYWJvcnQgKCk7CisgIGlm IChjbDUoNSkgIT0gY29ycmVjdF9yZXN1bHQpIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLWFy cm93LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1h cnJvdy5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNWIyYzgwNWEy ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1vcHMtbWVtLWFycm93LkMKQEAgLTAsMCArMSwyNyBAQAorLy8gUDA4NDdSNworLy8geyBk Zy1kbyBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyB1c2VzIG9mIG1lbWJlciBvbmx5 IG9wZXJhdG9ycyAoYXJyb3cpCisKK3N0cnVjdCBTIHsKKyAgaW50IF92OworICBTKiBvcGVyYXRv ci0+KHRoaXMgUyYgc2VsZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisKK3ZvaWQgbm9uX2RlcCgp Cit7CisgIFMgc3t9OworICAodm9pZClzLT5fdjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgPSB2 b2lkPgordm9pZCBkZXBlbmRlbnQoKQoreworICBTIHN7fTsKKyAgKHZvaWQpcy0+X3Y7Cit9CisK K3ZvaWQgY2FsbCgpCit7CisgIGRlcGVuZGVudCgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tYXNzaWdubWVudC5DIGIvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1tZW0tYXNzaWdubWVudC5D Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MjljNzEzN2FiYwotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1v cHMtbWVtLWFzc2lnbm1lbnQuQwpAQCAtMCwwICsxLDI2IEBACisvLyBQMDg0N1I3CisvLyB7IGRn LWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHVzZXMgb2YgbWVtYmVyIG9ubHkg b3BlcmF0b3JzIChhc3NpZ25tZW50KQorCitzdHJ1Y3QgUyB7CisgIHZvaWQgb3BlcmF0b3I9KHRo aXMgUyYsIGludCkge30KK307CisKK3ZvaWQgbm9uX2RlcCgpCit7CisgIFMgc3t9OworICBzID0g MDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgPSB2b2lkPgordm9pZCBkZXBlbmRlbnQoKQorewor ICBTIHN7fTsKKyAgcyA9IDA7Cit9CisKK3ZvaWQgY2FsbCgpCit7CisgIGRlcGVuZGVudCgpOwor fQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1tZW0tY2FsbC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9w cy1tZW0tY2FsbC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZGZl NzY0ZGU4MwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4 cGxpY2l0LW9iai1vcHMtbWVtLWNhbGwuQwpAQCAtMCwwICsxLDM5IEBACisvLyBQMDg0N1I3Cisv LyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHVzZXMgb2YgbWVtYmVy IG9ubHkgb3BlcmF0b3JzIChjYWxsIG9wKQorCisvLyBleGVjdXRpb24gcGF0aHMgZm9yIHN1YnNj cmlwdCB3aXRoIDEgYXJndW1lbnQgYW5kIDAgYW5kIDIrIGFyZ3VtZW50cyBhcmUgZGlmZmVyZW50 CisvLyBqdXN0IHRvIGJlIHNhZmUsIGFsc28gdGVzdCAwIGFuZCAyIGFyZ3VtZW50IGNhc2VzIGhl cmUgdG9vCisKK3N0cnVjdCBTIHsKKyAgdm9pZCBvcGVyYXRvcigpKHRoaXMgUyYpIHt9CisgIHZv aWQgb3BlcmF0b3IoKSh0aGlzIFMmLCBpbnQpIHt9CisgIHZvaWQgb3BlcmF0b3IoKSh0aGlzIFMm LCBpbnQsIGludCkge30KKyAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgdm9pZCBvcGVy YXRvcigpKHRoaXMgUyYsIEFyZ3MuLi4gYXJncykge30KK307CisKK3ZvaWQgbm9uX2RlcCgpCit7 CisgIFMgc3t9OworICBzKCk7CisgIHMoMCk7CisgIHMoMCwgMCk7CisgIHMoMCwgMCwgMCk7Cit9 CisKK3RlbXBsYXRlPHR5cGVuYW1lID0gdm9pZD4KK3ZvaWQgZGVwZW5kZW50KCkKK3sKKyAgUyBz e307CisgIHMoKTsKKyAgcygwKTsKKyAgcygwLCAwKTsKKyAgcygwLCAwLCAwKTsKK30KKwordm9p ZCBjYWxsKCkKK3sKKyAgZGVwZW5kZW50KCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW1lbS1zdWJzY3JpcHQuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVtLXN1YnNjcmlwdC5DCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZWU1ZjZlMTM1YwotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbWVt LXN1YnNjcmlwdC5DCkBAIC0wLDAgKzEsMzkgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29t cGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gdXNlcyBvZiBtZW1iZXIgb25seSBvcGVyYXRv cnMgKHN1YnNjcmlwdCkKKworLy8gZXhlY3V0aW9uIHBhdGhzIGZvciBzdWJzY3JpcHQgd2l0aCAx IGFyZ3VtZW50IGFuZCAwIGFuZCAyKyBhcmd1bWVudHMgYXJlIGRpZmZlcmVudAorLy8gdGhlcmVm b3JlIHdlIHNob3VsZCBhZGRpdGlvbmFsbHkgdGVzdCB0aGUgMCBhbmQgMiBhcmd1bWVudCBjYXNl cyBhcyB3ZWxsCisKK3N0cnVjdCBTIHsKKyAgdm9pZCBvcGVyYXRvcltdKHRoaXMgUyYpIHt9Cisg IHZvaWQgb3BlcmF0b3JbXSh0aGlzIFMmLCBpbnQpIHt9CisgIHZvaWQgb3BlcmF0b3JbXSh0aGlz IFMmLCBpbnQsIGludCkge30KKyAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KKyAgdm9pZCBv cGVyYXRvcltdKHRoaXMgUyYsIEFyZ3MuLi4gYXJncykge30KK307CisKK3ZvaWQgbm9uX2RlcCgp Cit7CisgIFMgc3t9OworICBzW107CisgIHNbMF07CisgIHNbMCwgMF07CisgIHNbMCwgMCwgMF07 Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lID0gdm9pZD4KK3ZvaWQgZGVwZW5kZW50KCkKK3sKKyAg UyBze307CisgIHNbXTsKKyAgc1swXTsKKyAgc1swLCAwXTsKKyAgc1swLCAwLCAwXTsKK30KKwor dm9pZCBjYWxsKCkKK3sKKyAgZGVwZW5kZW50KCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tZGVwLkMgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0tZGVwLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEzNGM3ZTk5YTI5Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24t bWVtLWRlcC5DCkBAIC0wLDAgKzEsNTcgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGls ZSB7IHRhcmdldCBjKysyMyB9IH0KKworLy8gb3BlcmF0b3JzIHRoYXQgYXJlIG5vdCByZXF1aXJl ZCB0byBiZSBtZW1iZXJzCisvLyBjYWxsZWQgaW4gYSBkZXBlbmRlbnQgY29udGV4dCAoYXMgbm9u IGRlcGVuZGVudCBleHBycykKKy8vIHNlZSBoZWFkZXIKKyNpbmNsdWRlICJleHBsaWNpdC1vYmot b3BzLW5vbi1tZW0uaCIKKworLy8gbm9vcCwgaW5kaWNhdGVzIHdoaWNoIHZlcnNpb25zIGFyZSBp bGwtZm9ybWVkCisvLyBJIGNvdWxkIG5vdCBmaW5kIGEgd2F5IHRvIHRlc3QgdGhlIGludmFsaWQg Y2FzZXMKKy8vIHdpdGhvdXQgcmVxdWlyZXMgZXhwcmVzc2lvbnMKKyNkZWZpbmUgVEVTVF9JTlZB TElEKFgpCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkPgordm9pZCBkb19jYWxscygpCit7 CisgIFZhbHVlIHZhbHVle307CisgIFRFU1RfT1BTKHZhbHVlKQorICBURVNUX09QUyhzdGF0aWNf Y2FzdDxWYWx1ZSYmPih2YWx1ZSkpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PFZhbHVlIGNvbnN0 Jj4odmFsdWUpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxWYWx1ZSBjb25zdCYmPih2YWx1ZSkp CisgIAorICBMUmVmIGxfcmVme307CisgIFRFU1RfT1BTKGxfcmVmKQorICBURVNUX0lOVkFMSUQo c3RhdGljX2Nhc3Q8TFJlZiYmPihsX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxM UmVmIGNvbnN0Jj4obF9yZWYpKQorICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8TFJlZiBjb25z dCYmPihsX3JlZikpCisKKyAgUlJlZiByX3JlZnt9OworICBURVNUX0lOVkFMSUQocl9yZWYpCisg IFRFU1RfT1BTKHN0YXRpY19jYXN0PFJSZWYmJj4ocl9yZWYpKQorICBURVNUX0lOVkFMSUQoc3Rh dGljX2Nhc3Q8UlJlZiBjb25zdCY+KHJfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0 PFJSZWYgY29uc3QmJj4ocl9yZWYpKQorCisgIENvbnN0TFJlZiBjb25zdF9sX3JlZnt9OworICBU RVNUX09QUyhjb25zdF9sX3JlZikKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RMUmVmJiY+ KGNvbnN0X2xfcmVmKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RMUmVmIGNvbnN0Jj4o Y29uc3RfbF9yZWYpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxDb25zdExSZWYgY29uc3QmJj4o Y29uc3RfbF9yZWYpKQorCisgIENvbnN0UlJlZiBjb25zdF9yX3JlZnt9OworICBURVNUX0lOVkFM SUQoY29uc3Rfcl9yZWYpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PENvbnN0UlJlZiYmPihjb25z dF9yX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxDb25zdFJSZWYgY29uc3QmPihj b25zdF9yX3JlZikpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PENvbnN0UlJlZiBjb25zdCYmPihj b25zdF9yX3JlZikpCisKKyAgRGVkdWNlZCBkZWR1Y2Vke307CisgIFRFU1RfT1BTKGRlZHVjZWQp CisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PERlZHVjZWQmJj4oZGVkdWNlZCkpCisgIFRFU1RfT1BT KHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmPihkZWR1Y2VkKSkKKyAgVEVTVF9PUFMoc3RhdGlj X2Nhc3Q8RGVkdWNlZCBjb25zdCYmPihkZWR1Y2VkKSkKKworICBWQUxJREFURV9SRVRVUk5fVFlQ RVMoZGVkdWNlZCwgRGVkdWNlZCYpCisgIFZBTElEQVRFX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2Fz dDxEZWR1Y2VkJiY+KGRlZHVjZWQpLCBEZWR1Y2VkJiYpCisgIFZBTElEQVRFX1JFVFVSTl9UWVBF UyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCksIERlZHVjZWQgY29uc3QmKQor ICBWQUxJREFURV9SRVRVUk5fVFlQRVMoc3RhdGljX2Nhc3Q8RGVkdWNlZCBjb25zdCYmPihkZWR1 Y2VkKSwgRGVkdWNlZCBjb25zdCYmKQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLW5vbi1kZXAuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS1ub24tZGVwLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjliN2FmNjc2ZTRmCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1ub24t bWVtLW5vbi1kZXAuQwpAQCAtMCwwICsxLDU2IEBACisvLyBQMDg0N1I3CisvLyB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIG9wZXJhdG9ycyB0aGF0IGFyZSBub3QgcmVx dWlyZWQgdG8gYmUgbWVtYmVycworLy8gY2FsbGVkIGluIGEgbm9uLWRlcGVuZGVudCBjb250ZXh0 CisvLyBzZWUgaGVhZGVyCisjaW5jbHVkZSAiZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLmgiCisK Ky8vIG5vb3AsIGluZGljYXRlcyB3aGljaCB2ZXJzaW9ucyBhcmUgaWxsLWZvcm1lZAorLy8gSSBj b3VsZCBub3QgZmluZCBhIHdheSB0byB0ZXN0IHRoZSBpbnZhbGlkIGNhc2VzCisvLyB3aXRob3V0 IHJlcXVpcmVzIGV4cHJlc3Npb25zCisjZGVmaW5lIFRFU1RfSU5WQUxJRChYKQorCit2b2lkIGRv X2NhbGxzKCkKK3sKKyAgVmFsdWUgdmFsdWV7fTsKKyAgVEVTVF9PUFModmFsdWUpCisgIFRFU1Rf T1BTKHN0YXRpY19jYXN0PFZhbHVlJiY+KHZhbHVlKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8 VmFsdWUgY29uc3QmPih2YWx1ZSkpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PFZhbHVlIGNvbnN0 JiY+KHZhbHVlKSkKKyAgCisgIExSZWYgbF9yZWZ7fTsKKyAgVEVTVF9PUFMobF9yZWYpCisgIFRF U1RfSU5WQUxJRChzdGF0aWNfY2FzdDxMUmVmJiY+KGxfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0 YXRpY19jYXN0PExSZWYgY29uc3QmPihsX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2Fz dDxMUmVmIGNvbnN0JiY+KGxfcmVmKSkKKworICBSUmVmIHJfcmVme307CisgIFRFU1RfSU5WQUxJ RChyX3JlZikKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8UlJlZiYmPihyX3JlZikpCisgIFRFU1Rf SU5WQUxJRChzdGF0aWNfY2FzdDxSUmVmIGNvbnN0Jj4ocl9yZWYpKQorICBURVNUX0lOVkFMSUQo c3RhdGljX2Nhc3Q8UlJlZiBjb25zdCYmPihyX3JlZikpCisKKyAgQ29uc3RMUmVmIGNvbnN0X2xf cmVme307CisgIFRFU1RfT1BTKGNvbnN0X2xfcmVmKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxD b25zdExSZWYmJj4oY29uc3RfbF9yZWYpKQorICBURVNUX09QUyhzdGF0aWNfY2FzdDxDb25zdExS ZWYgY29uc3QmPihjb25zdF9sX3JlZikpCisgIFRFU1RfT1BTKHN0YXRpY19jYXN0PENvbnN0TFJl ZiBjb25zdCYmPihjb25zdF9sX3JlZikpCisKKyAgQ29uc3RSUmVmIGNvbnN0X3JfcmVme307Cisg IFRFU1RfSU5WQUxJRChjb25zdF9yX3JlZikKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RS UmVmJiY+KGNvbnN0X3JfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PENvbnN0UlJl ZiBjb25zdCY+KGNvbnN0X3JfcmVmKSkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8Q29uc3RSUmVm IGNvbnN0JiY+KGNvbnN0X3JfcmVmKSkKKworICBEZWR1Y2VkIGRlZHVjZWR7fTsKKyAgVEVTVF9P UFMoZGVkdWNlZCkKKyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8RGVkdWNlZCYmPihkZWR1Y2VkKSkK KyAgVEVTVF9PUFMoc3RhdGljX2Nhc3Q8RGVkdWNlZCBjb25zdCY+KGRlZHVjZWQpKQorICBURVNU X09QUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNvbnN0JiY+KGRlZHVjZWQpKQorCisgIFZBTElEQVRF X1JFVFVSTl9UWVBFUyhkZWR1Y2VkLCBEZWR1Y2VkJikKKyAgVkFMSURBVEVfUkVUVVJOX1RZUEVT KHN0YXRpY19jYXN0PERlZHVjZWQmJj4oZGVkdWNlZCksIERlZHVjZWQmJikKKyAgVkFMSURBVEVf UkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlZHVjZWQgY29uc3QmPihkZWR1Y2VkKSwgRGVkdWNl ZCBjb25zdCYpCisgIFZBTElEQVRFX1JFVFVSTl9UWVBFUyhzdGF0aWNfY2FzdDxEZWR1Y2VkIGNv bnN0JiY+KGRlZHVjZWQpLCBEZWR1Y2VkIGNvbnN0JiYpCit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLW5vbi1tZW0uaCBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZTBhOGQ5OTNiZAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9iai1vcHMtbm9uLW1lbS5o CkBAIC0wLDAgKzEsMjA5IEBACisvLyB0ZXN0cyBmb3Igb3BzIHRoYXQgbXVzdCBiZSBtZW1iZXIg ZnVuY3Rpb25zIGFyZSBzZXBlcmF0ZQorCisvLyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgcmVmZXJz IHRvIHRoZSB0eXBlIG9mIGl0J3MgbWVtYmVyIGZ1bmN0aW9ucyB4b2JqIHBhcmFtZXRlcgorCisj ZGVmaW5lIE1BS0VfU1RSVUNUX09QUyhUWVBFKQkJCQkJXAorICBUWVBFIG9wZXJhdG9yKz0odGhp cyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yLT0o dGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9y Kj0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJh dG9yLz0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9w ZXJhdG9yJT0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBF IG9wZXJhdG9yJj0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBU WVBFIG9wZXJhdG9yfD0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAor ICBUWVBFIG9wZXJhdG9yXj0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJ XAorICBUWVBFIG9wZXJhdG9yPDw9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7 IH0JXAorICBUWVBFIG9wZXJhdG9yPj49KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNl bGY7IH0JXAorICBUWVBFIG9wZXJhdG9yKysodGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7 IH0JCVwKKyAgVFlQRSBvcGVyYXRvci0tKHRoaXMgVFlQRSBzZWxmKSB7IHJldHVybiBzZWxmOyB9 CQlcCisgIFRZUEUgb3BlcmF0b3IrKyh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxm OyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItLSh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBz ZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IrKHRoaXMgVFlQRSBzZWxmKSB7IHJldHVybiBzZWxm OyB9CQlcCisgIFRZUEUgb3BlcmF0b3ItKHRoaXMgVFlQRSBzZWxmKSB7IHJldHVybiBzZWxmOyB9 CQlcCisgIFRZUEUgb3BlcmF0b3IrKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7 IH0JCVwKKyAgVFlQRSBvcGVyYXRvci0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2Vs ZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yKih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBz ZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3IvKHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJu IHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvciUodGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1 cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yJih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJl dHVybiBzZWxmOyB9CQlcCisgIFRZUEUgb3BlcmF0b3J8KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsg cmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQRSBvcGVyYXRvcl4odGhpcyBUWVBFIHNlbGYsIGludCkg eyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPDwodGhpcyBUWVBFIHNlbGYsIGlu dCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yPj4odGhpcyBUWVBFIHNlbGYs IGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yISh0aGlzIFRZUEUgc2Vs ZikgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJhdG9yJiYodGhpcyBUWVBFIHNlbGYs IGludCBjb25zdCYpIHsgcmV0dXJuIHNlbGY7IH0JXAorICBUWVBFIG9wZXJhdG9yfHwodGhpcyBU WVBFIHNlbGYsIGludCBjb25zdCYpIHsgcmV0dXJuIHNlbGY7IH0JXAorICBUWVBFIG9wZXJhdG9y PT0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9wZXJh dG9yIT0odGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQkJXAorICBUWVBFIG9w ZXJhdG9yPCh0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9CQlcCisgIFRZUEUg b3BlcmF0b3I+KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAgVFlQ RSBvcGVyYXRvcjw9KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwKKyAg VFlQRSBvcGVyYXRvcj49KHRoaXMgVFlQRSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0JCVwK KyAgVFlQRSBvcGVyYXRvcjw9Pih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9 CVwKKyAgVFlQRSBvcGVyYXRvcioodGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwK KyAgVFlQRSBvcGVyYXRvci0+Kih0aGlzIFRZUEUgc2VsZiwgaW50KSB7IHJldHVybiBzZWxmOyB9 CVwKKyAgVFlQRSBvcGVyYXRvciYodGhpcyBUWVBFIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0JCVwK KyAgVFlQRSBvcGVyYXRvciwodGhpcyBUWVBFIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQor CitzdHJ1Y3QgVmFsdWUgeworICBNQUtFX1NUUlVDVF9PUFMgKFZhbHVlKQorfTsKKworc3RydWN0 IExSZWYgeworICBNQUtFX1NUUlVDVF9PUFMgKExSZWYmKQorfTsKKworc3RydWN0IFJSZWYgewor ICBNQUtFX1NUUlVDVF9PUFMgKFJSZWYmJikKK307CisKK3N0cnVjdCBDb25zdExSZWYgeworICBN QUtFX1NUUlVDVF9PUFMgKENvbnN0TFJlZiBjb25zdCYpCit9OworCitzdHJ1Y3QgQ29uc3RSUmVm IHsKKyAgTUFLRV9TVFJVQ1RfT1BTIChDb25zdFJSZWYgY29uc3QmJikKK307CisKKyN1bmRlZiBN QUtFX1NUUlVDVF9PUFMKKworc3RydWN0IERlZHVjZWQgeworICB0ZW1wbGF0ZTx0eXBlbmFtZSBT ZWxmPiBTZWxmJiYgb3BlcmF0b3IrPSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0 YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2Vs ZiYmIG9wZXJhdG9yLT0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2Fz dDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVy YXRvcio9KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYm PihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IvPSh0 aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7 IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yJT0odGhpcyBTZWxm JiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRl bXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciY9KHRoaXMgU2VsZiYmIHNlbGYs IGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3J8PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsg cmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUg U2VsZj4gU2VsZiYmIG9wZXJhdG9yXj0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBz dGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNl bGYmJiBvcGVyYXRvcjw8PSh0aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19j YXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9w ZXJhdG9yPj49KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Vs ZiYmPihzZWxmKTsgfQorCisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRv cisrKHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7 IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yLS0odGhpcyBTZWxm JiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IrKyh0aGlzIFNlbGYmJiBzZWxmLCBpbnQp IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5h bWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yLS0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVy biBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2Vs Zj4gU2VsZiYmIG9wZXJhdG9yKyh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2Fz dDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVy YXRvci0odGhpcyBTZWxmJiYgc2VsZikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxm KTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IrKHRoaXMgU2Vs ZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0 ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3ItKHRoaXMgU2VsZiYmIHNlbGYs IGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0 eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IqKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyBy ZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBT ZWxmPiBTZWxmJiYgb3BlcmF0b3IvKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3Rh dGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxm JiYgb3BlcmF0b3IlKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8 U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0 b3ImKHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihz ZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3J8KHRoaXMg U2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQor ICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3JeKHRoaXMgU2VsZiYmIHNl bGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3I8PCh0aGlzIFNlbGYmJiBzZWxmLCBpbnQp IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5h bWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPj4odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVy biBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2Vs Zj4gU2VsZiYmIG9wZXJhdG9yISh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2Fz dDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVy YXRvciYmKHRoaXMgU2VsZiYmIHNlbGYsIGludCBjb25zdCYpIHsgcmV0dXJuIHN0YXRpY19jYXN0 PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJh dG9yfHwodGhpcyBTZWxmJiYgc2VsZiwgaW50IGNvbnN0JikgeyByZXR1cm4gc3RhdGljX2Nhc3Q8 U2VsZiYmPihzZWxmKTsgfQorCisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVy YXRvcj09KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYm PihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxmJiYgb3BlcmF0b3IhPSh0 aGlzIFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7 IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPCh0aGlzIFNlbGYm JiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVt cGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPih0aGlzIFNlbGYmJiBzZWxmLCBp bnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlw ZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yPD0odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJl dHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNl bGY+IFNlbGYmJiBvcGVyYXRvcj49KHRoaXMgU2VsZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3Rh dGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPiBTZWxm JiYgb3BlcmF0b3I8PT4odGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJldHVybiBzdGF0aWNfY2Fz dDxTZWxmJiY+KHNlbGYpOyB9CisKKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9w ZXJhdG9yKih0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNl bGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvci0+Kih0aGlz IFNlbGYmJiBzZWxmLCBpbnQpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNlbGYmJj4oc2VsZik7IH0K KyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4gU2VsZiYmIG9wZXJhdG9yJih0aGlzIFNlbGYmJiBz ZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5 cGVuYW1lIFNlbGY+IFNlbGYmJiBvcGVyYXRvciwodGhpcyBTZWxmJiYgc2VsZiwgaW50KSB7IHJl dHVybiBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9Cit9OworCisjZGVmaW5lIFRFU1RfT1BT KE9QRVJBTkQpIFwKKyAgKE9QRVJBTkQpICs9IDA7CVwKKyAgKE9QRVJBTkQpIC09IDA7CVwKKyAg KE9QRVJBTkQpICo9IDA7CVwKKyAgKE9QRVJBTkQpIC89IDA7CVwKKyAgKE9QRVJBTkQpICU9IDA7 CVwKKyAgKE9QRVJBTkQpICY9IDA7CVwKKyAgKE9QRVJBTkQpIHw9IDA7CVwKKyAgKE9QRVJBTkQp IF49IDA7CVwKKyAgKE9QRVJBTkQpIDw8PSAwOwlcCisgIChPUEVSQU5EKSA+Pj0gMDsJXAorCQkJ XAorICArKyhPUEVSQU5EKTsJCVwKKyAgLS0oT1BFUkFORCk7CQlcCisgIChPUEVSQU5EKSsrOwkJ XAorICAoT1BFUkFORCktLTsJCVwKKwkJCVwKKyAgKyhPUEVSQU5EKTsJCVwKKyAgLShPUEVSQU5E KTsJCVwKKyAgKE9QRVJBTkQpICsgMDsJXAorICAoT1BFUkFORCkgLSAwOwlcCisgIChPUEVSQU5E KSAqIDA7CVwKKyAgKE9QRVJBTkQpIC8gMDsJXAorICAoT1BFUkFORCkgJSAwOwlcCisgIChPUEVS QU5EKSAmIDA7CVwKKyAgKE9QRVJBTkQpIHwgMDsJXAorICAoT1BFUkFORCkgXiAwOwlcCisgIChP UEVSQU5EKSA8PCAwOwlcCisgIChPUEVSQU5EKSA+PiAwOwlcCisJCQlcCisgICEoT1BFUkFORCk7 CQlcCisgIChPUEVSQU5EKSAmJiAwOwlcCisgIChPUEVSQU5EKSB8fCAwOwlcCisJCQlcCisgIChP UEVSQU5EKSA9PSAwOwlcCisgIChPUEVSQU5EKSAhPSAwOwlcCisgIChPUEVSQU5EKSA8IDA7CVwK KyAgKE9QRVJBTkQpID4gMDsJXAorICAoT1BFUkFORCkgPD0gMDsJXAorICAoT1BFUkFORCkgPj0g MDsJXAorICAoT1BFUkFORCkgPD0+IDA7CVwKKwkJCVwKKyAgKihPUEVSQU5EKTsJCVwKKyAgKE9Q RVJBTkQpIC0+KiAwOwlcCisgICYoT1BFUkFORCk7CQlcCisgIChPUEVSQU5EKSwgMDsKKworI2Rl ZmluZSBWQUxJREFURV9SRVRVUk5fVFlQRVMoT1BFUkFORCwgQ09SUkVDVF9UWVBFKSBcCisgIHN0 YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpICs9 IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5 cGUoKE9QRVJBTkQpIC09IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJF Q1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpICo9IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQo X19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIC89IDApKSk7CQlcCisg IHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQp ICU9IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVj bHR5cGUoKE9QRVJBTkQpICY9IDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENP UlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIHw9IDApKSk7CQlcCisgIHN0YXRpY19hc3Nl cnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIF49IDApKSk7CQlc CisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJB TkQpIDw8PSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUs IGRlY2x0eXBlKChPUEVSQU5EKSA+Pj0gMCkpKTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19h c3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKysoT1BFUkFORCkpKSk7CQlc CisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoLS0oT1BF UkFORCkpKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVj bHR5cGUoKE9QRVJBTkQpKyspKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJF Q1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpLS0pKSk7CQlcCisJCQkJCQkJCQkJXAorICBzdGF0 aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKCsoT1BFUkFORCkpKSk7 CQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKC0o T1BFUkFORCkpKSk7CQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUs IGRlY2x0eXBlKChPUEVSQU5EKSArIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1l KENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIC0gMCkpKTsJCVwKKyAgc3RhdGljX2Fz c2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgKiAwKSkpOwkJ XAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVS QU5EKSAvIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwg ZGVjbHR5cGUoKE9QRVJBTkQpICUgMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgJiAwKSkpOwkJXAorICBzdGF0aWNfYXNz ZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSB8IDApKSk7CQlc CisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJB TkQpIF4gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBk ZWNsdHlwZSgoT1BFUkFORCkgPDwgMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPj4gMCkpKTsJCVwKKwkJCQkJCQkJCQlc CisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoIShPUEVS QU5EKSkpKTsJCQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVj bHR5cGUoKE9QRVJBTkQpICYmIDApKSk7CQlcCisgIHN0YXRpY19hc3NlcnQoX19pc19zYW1lKENP UlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpIHx8IDApKSk7CQlcCisJCQkJCQkJCQkJXAor ICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5E KSA9PSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRl Y2x0eXBlKChPUEVSQU5EKSAhPSAwKSkpOwkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShD T1JSRUNUX1RZUEUsIGRlY2x0eXBlKChPUEVSQU5EKSA8IDApKSk7CQlcCisgIHN0YXRpY19hc3Nl cnQoX19pc19zYW1lKENPUlJFQ1RfVFlQRSwgZGVjbHR5cGUoKE9QRVJBTkQpID4gMCkpKTsJCVwK KyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFO RCkgPD0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBk ZWNsdHlwZSgoT1BFUkFORCkgPj0gMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCkgPD0+IDApKSk7CQlcCisJCQkJCQkJCQkJ XAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRlY2x0eXBlKCooT1BF UkFORCkpKSk7CQkJXAorICBzdGF0aWNfYXNzZXJ0KF9faXNfc2FtZShDT1JSRUNUX1RZUEUsIGRl Y2x0eXBlKChPUEVSQU5EKSAtPiogMCkpKTsJCVwKKyAgc3RhdGljX2Fzc2VydChfX2lzX3NhbWUo Q09SUkVDVF9UWVBFLCBkZWNsdHlwZSgmKE9QRVJBTkQpKSkpOwkJCVwKKyAgc3RhdGljX2Fzc2Vy dChfX2lzX3NhbWUoQ09SUkVDVF9UWVBFLCBkZWNsdHlwZSgoT1BFUkFORCksIDApKSk7CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotb3BzLXJlcXVp cmVzLW1lbS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1y ZXF1aXJlcy1tZW0uQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjlh NjQyYWQ0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9l eHBsaWNpdC1vYmotb3BzLXJlcXVpcmVzLW1lbS5DCkBAIC0wLDAgKzEsMTcwIEBACisvLyBQMDg0 N1I3CisvLyB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgYysrMjMgfSB9CisKKy8vIHdlbGwtZm9y bWVkIGFuZCBpbGwtZm9ybWVkIHVzZXMgb2YgbWVtYmVyIG9ubHkgb3BlcmF0b3JzIGluIGEgcmVx dWlyZXMgZXhwcmVzc2lvbgorCisvLyBzdXBwcmVzcyB0aGUgd2FybmluZyBmb3IgVmFsdWUncyBh cnJvdyBvcGVyYXRvcgorLy8geyBkZy1vcHRpb25zICItV25vLXJldHVybi1sb2NhbC1hZGRyIiB9 CisKKy8vIEl0J3MgdmVyeSBoYXJkIHRvIHRlc3QgZm9yIGluY29ycmVjdCBzdWNjZXNzZXMgd2l0 aG91dCByZXF1aXJlcywgYW5kIGJ5IGV4dGVuc2lvbiBhIG5vbiBkZXBlbmRlbnQgdmFyaWFibGUK Ky8vIHNvIGZvciB0aGUgdGltZSBiZWluZywgdGhlcmUgYXJlIG5vIG5vbiBkZXBlbmRlbnQgdGVz dHMgaW52YWxpZCBjYWxscy4KKworc3RydWN0IFZhbHVlIHsKKyAgaW50IF92OworICBWYWx1ZSBv cGVyYXRvcj0odGhpcyBWYWx1ZSBzZWxmLCBpbnQpIHsgcmV0dXJuIHNlbGY7IH0KKyAgVmFsdWUg b3BlcmF0b3IoKSh0aGlzIFZhbHVlIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0KKyAgVmFsdWUgb3Bl cmF0b3JbXSh0aGlzIFZhbHVlIHNlbGYpIHsgcmV0dXJuIHNlbGY7IH0KKyAgVmFsdWUqIG9wZXJh dG9yLT4odGhpcyBWYWx1ZSBzZWxmKSB7IHJldHVybiAmc2VsZjsgfQorfTsKKworc3RydWN0IExS ZWYgeworICBpbnQgX3Y7CisgIExSZWYmIG9wZXJhdG9yPSh0aGlzIExSZWYmIHNlbGYsIGludCkg eyByZXR1cm4gc2VsZjsgfQorICBMUmVmJiBvcGVyYXRvcigpKHRoaXMgTFJlZiYgc2VsZikgeyBy ZXR1cm4gc2VsZjsgfQorICBMUmVmJiBvcGVyYXRvcltdKHRoaXMgTFJlZiYgc2VsZikgeyByZXR1 cm4gc2VsZjsgfQorICBMUmVmKiBvcGVyYXRvci0+KHRoaXMgTFJlZiYgc2VsZikgeyByZXR1cm4g JnNlbGY7IH0KK307CisKK3N0cnVjdCBSUmVmIHsKKyAgaW50IF92OworICBSUmVmJiYgb3BlcmF0 b3I9KHRoaXMgUlJlZiYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UlJlZiYmPihz ZWxmKTsgfQorICBSUmVmJiYgb3BlcmF0b3IoKSh0aGlzIFJSZWYmJiBzZWxmKSB7IHJldHVybiBz dGF0aWNfY2FzdDxSUmVmJiY+KHNlbGYpOyB9CisgIFJSZWYmJiBvcGVyYXRvcltdKHRoaXMgUlJl ZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJSZWYmJj4oc2VsZik7IH0KKyAgUlJlZiog b3BlcmF0b3ItPih0aGlzIFJSZWYmJiBzZWxmKSB7IHJldHVybiAmc2VsZjsgfQorfTsKKworc3Ry dWN0IENvbnN0TFJlZiB7CisgIGludCBfdjsKKyAgQ29uc3RMUmVmIGNvbnN0JiBvcGVyYXRvcj0o dGhpcyBDb25zdExSZWYgY29uc3QmIHNlbGYsIGludCkgeyByZXR1cm4gc2VsZjsgfQorICBDb25z dExSZWYgY29uc3QmIG9wZXJhdG9yKCkodGhpcyBDb25zdExSZWYgY29uc3QmIHNlbGYpIHsgcmV0 dXJuIHNlbGY7IH0KKyAgQ29uc3RMUmVmIGNvbnN0JiBvcGVyYXRvcltdKHRoaXMgQ29uc3RMUmVm IGNvbnN0JiBzZWxmKSB7IHJldHVybiBzZWxmOyB9CisgIENvbnN0TFJlZiBjb25zdCogb3BlcmF0 b3ItPih0aGlzIENvbnN0TFJlZiBjb25zdCYgc2VsZikgeyByZXR1cm4gJnNlbGY7IH0KK307CisK K3N0cnVjdCBDb25zdFJSZWYgeworICBpbnQgX3Y7CisgIENvbnN0UlJlZiBjb25zdCYmIG9wZXJh dG9yPSh0aGlzIENvbnN0UlJlZiBjb25zdCYmIHNlbGYsIGludCkgeyByZXR1cm4gc3RhdGljX2Nh c3Q8Q29uc3RSUmVmIGNvbnN0JiY+KHNlbGYpOyB9CisgIENvbnN0UlJlZiBjb25zdCYmIG9wZXJh dG9yKCkodGhpcyBDb25zdFJSZWYgY29uc3QmJiBzZWxmKSB7IHJldHVybiBzdGF0aWNfY2FzdDxD b25zdFJSZWYgY29uc3QmJj4oc2VsZik7IH0KKyAgQ29uc3RSUmVmIGNvbnN0JiYgb3BlcmF0b3Jb XSh0aGlzIENvbnN0UlJlZiBjb25zdCYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0 UlJlZiBjb25zdCYmPihzZWxmKTsgfQorICBDb25zdFJSZWYgY29uc3QqIG9wZXJhdG9yLT4odGhp cyBDb25zdFJSZWYgY29uc3QmJiBzZWxmKSB7IHJldHVybiAmc2VsZjsgfQorfTsKKworLy8gbmVl ZGVkIHRvIGltcGxlbWVudCBkZWR1Y2VkIG9wZXJhdG9yLT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+ IHN0cnVjdCByZW1vdmVfcmVmIHsgdXNpbmcgdHlwZSA9IFQ7IH07Cit0ZW1wbGF0ZTx0eXBlbmFt ZSBUPiBzdHJ1Y3QgcmVtb3ZlX3JlZjxUJj4geyB1c2luZyB0eXBlID0gVDsgfTsKK3RlbXBsYXRl PHR5cGVuYW1lIFQ+IHN0cnVjdCByZW1vdmVfcmVmPFQmJj4geyB1c2luZyB0eXBlID0gVDsgfTsK K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIHJlbW92ZV9yZWZfdCA9IHR5cGVuYW1lIHJlbW92 ZV9yZWY8VD46OnR5cGU7CisKK3N0cnVjdCBEZWR1Y2VkIHsKKyAgaW50IF92OworICB0ZW1wbGF0 ZTx0eXBlbmFtZSBTZWxmPgorICBTZWxmJiYgb3BlcmF0b3I9KHRoaXMgU2VsZiYmIHNlbGYsIGlu dCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2VsZiYmPihzZWxmKTsgfQorICB0ZW1wbGF0ZTx0eXBl bmFtZSBTZWxmPgorICBTZWxmJiYgb3BlcmF0b3IoKSh0aGlzIFNlbGYmJiBzZWxmKSB7IHJldHVy biBzdGF0aWNfY2FzdDxTZWxmJiY+KHNlbGYpOyB9CisgIHRlbXBsYXRlPHR5cGVuYW1lIFNlbGY+ CisgIFNlbGYmJiBvcGVyYXRvcltdKHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuIHN0YXRpY19j YXN0PFNlbGYmJj4oc2VsZik7IH0KKyAgdGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KKyAgcmVtb3Zl X3JlZl90PFNlbGY+KiBvcGVyYXRvci0+KHRoaXMgU2VsZiYmIHNlbGYpIHsgcmV0dXJuICZzZWxm OyB9Cit9OworCisjZGVmaW5lIFRFU1RfSU5WQUxJRChPUEVSQU5EKSBcCisgIHN0YXRpY19hc3Nl cnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPSAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxp bmcgb3BlcmF0b3IgPSB3aXRoICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVp cmVzeyAoT1BFUkFORCkoKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9y ICgpIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVS QU5EKVtdOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgW10gd2l0aCAi ICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpLT5fdjsg fSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIC0+IHdpdGggIiAjT1BFUkFO RCk7CisKKyNkZWZpbmUgVEVTVF9WQUxJRChPUEVSQU5EKSBcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IChPUEVSQU5EKSA9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVy YXRvciA9IHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9Q RVJBTkQpKCk7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAoKSB3aXRo ICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKVtdOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgW10gd2l0aCAiICNPUEVSQU5E KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCktPl92OyB9LCAiVW5leHBl Y3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgLT4gd2l0aCAiICNPUEVSQU5EKTsKKwordGVt cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2NvbmNlcHQgc2FtZV9hcyA9IF9faXNfc2Ft ZShULCBVKTsKKworI2RlZmluZSBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKE9QRVJBTkQs IENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpID0g MH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9LCJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCBy ZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yID0gd2l0aCAiICNPUEVSQU5EICIgLT4g ZXhwZWN0ZWQgcmV0dXJuIHR5cGU6ICIgI0NPUlJFQ1RfVFlQRSk7CVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgeyhPUEVSQU5EKSgpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0sICAi VW5leHBlY3RlZCBmYWlsdXJlIHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGluZyBvcGVyYXRv ciAoKSB3aXRoICIgI09QRVJBTkQgIiAtPiBleHBlY3RlZCByZXR1cm4gdHlwZTogIiAjQ09SUkVD VF9UWVBFKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpW119IC0+IHNh bWVfYXM8Q09SUkVDVF9UWVBFPjsgfSwgICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1cm4g dHlwZSBjaGVjayBjYWxsaW5nIG9wZXJhdG9yIFtdIHdpdGggIiAjT1BFUkFORCAiIC0+IGV4cGVj dGVkIHJldHVybiB0eXBlOiAiICNDT1JSRUNUX1RZUEUpOworICAKKwordGVtcGxhdGU8dHlwZW5h bWUgRGVwVmFsdWUgPSBWYWx1ZT4KK3ZvaWQgdGVzdF92YWx1ZSgpCit7CisgIERlcFZhbHVlIHZh bHVle307CisgIFRFU1RfVkFMSUQodmFsdWUpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVw VmFsdWUmJj4odmFsdWUpKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlIGNvbnN0 Jj4odmFsdWUpKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFZhbHVlIGNvbnN0JiY+KHZh bHVlKSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwTFJlZiA9IExSZWY+Cit2b2lkIHRlc3Rf bF9yZWYoKQoreworICBEZXBMUmVmIGxfcmVme307CisgIFRFU1RfVkFMSUQobF9yZWYpCisgIFRF U1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBMUmVmJiY+KGxfcmVmKSkKKyAgVEVTVF9JTlZBTElE KHN0YXRpY19jYXN0PERlcExSZWYgY29uc3QmPihsX3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0 aWNfY2FzdDxEZXBMUmVmIGNvbnN0JiY+KGxfcmVmKSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg RGVwUlJlZiA9IFJSZWY+Cit2b2lkIHRlc3Rfcl9yZWYoKQoreworICBEZXBSUmVmIHJfcmVme307 CisgIFRFU1RfSU5WQUxJRChyX3JlZikKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVm JiY+KHJfcmVmKSkKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcFJSZWYgY29uc3QmPihy X3JlZikpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0JiY+KHJfcmVm KSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwQ29uc3RMUmVmID0gQ29uc3RMUmVmPgordm9p ZCB0ZXN0X2NvbnN0X2xfcmVmKCkKK3sKKyAgRGVwQ29uc3RMUmVmIGNvbnN0X2xfcmVme307Cisg IFRFU1RfVkFMSUQoY29uc3RfbF9yZWYpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29u c3RMUmVmJiY+KGNvbnN0X2xfcmVmKSkKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25z dExSZWYgY29uc3QmPihjb25zdF9sX3JlZikpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVw Q29uc3RMUmVmIGNvbnN0JiY+KGNvbnN0X2xfcmVmKSkKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg RGVwQ29uc3RSUmVmID0gQ29uc3RSUmVmPgordm9pZCB0ZXN0X2NvbnN0X3JfcmVmKCkKK3sKKyAg RGVwQ29uc3RSUmVmIGNvbnN0X3JfcmVme307CisgIFRFU1RfSU5WQUxJRChjb25zdF9yX3JlZikK KyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25zdFJSZWYmJj4oY29uc3Rfcl9yZWYpKQor ICBURVNUX0lOVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RSUmVmIGNvbnN0Jj4oY29uc3Rfcl9y ZWYpKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0UlJlZiBjb25zdCYmPihjb25z dF9yX3JlZikpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcERlZHVjZWQgPSBEZWR1Y2VkPgor dm9pZCB0ZXN0X2RlZHVjZWQoKQoreworICBEZXBEZWR1Y2VkIGRlZHVjZWR7fTsKKworICBURVNU X1ZBTElEKGRlZHVjZWQpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCYmPihk ZWR1Y2VkKSkKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVk dWNlZCkpCisgIFRFU1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCBjb25zdCYmPihkZWR1 Y2VkKSkKKworICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKGRlZHVjZWQsIERlcERlZHVj ZWQmKQorICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVj ZWQmJj4oZGVkdWNlZCksIERlcERlZHVjZWQmJikKKyAgVEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9U WVBFUyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCksIERlcERlZHVjZWQg Y29uc3QmKQorICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERl ZHVjZWQgY29uc3QmJj4oZGVkdWNlZCksIERlcERlZHVjZWQgY29uc3QmJikKKyAgLy8gYXJyb3cg b3BlcmF0b3IgbmVlZHMgdG8gYmUgc2VwZXJhdGUgdG8gY2hlY2sgdGhlIHR5cGUgb2YgX3YKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhkZWR1Y2VkLT5fdil9IC0+IHNhbWVfYXM8aW50Jj47 IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5nIG9w ZXJhdG9yIC0+IHdpdGggZGVkdWNlZC0+X3YiKTsKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sg eyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkJiY+KGRlZHVjZWQpLT5fdil9IC0+IHNhbWVfYXM8aW50 Jj47IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgd2l0aCByZXR1cm4gdHlwZSBjaGVjayBjYWxsaW5n IG9wZXJhdG9yIC0+IHdpdGggc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCYmPihkZWR1Y2VkKS0+X3Yi KTsKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNv bnN0Jj4oZGVkdWNlZCktPl92KX0gLT4gc2FtZV9hczxpbnQgY29uc3QmPjsgfSwgIlVuZXhwZWN0 ZWQgZmFpbHVyZSB3aXRoIHJldHVybiB0eXBlIGNoZWNrIGNhbGxpbmcgb3BlcmF0b3IgLT4gd2l0 aCBzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCktPl92Iik7CisgIHN0YXRp Y19hc3NlcnQocmVxdWlyZXN7IHsoc3RhdGljX2Nhc3Q8RGVwRGVkdWNlZCBjb25zdCYmPihkZWR1 Y2VkKS0+X3YpfSAtPiBzYW1lX2FzPGludCBjb25zdCY+OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJl IHdpdGggcmV0dXJuIHR5cGUgY2hlY2sgY2FsbGluZyBvcGVyYXRvciAtPiB3aXRoIHN0YXRpY19j YXN0PERlcERlZHVjZWQgY29uc3QmJj4oZGVkdWNlZCktPl92Iik7Cit9CisKK3ZvaWQgdGVzdCgp Cit7CisgIHRlc3RfdmFsdWUoKTsKKyAgdGVzdF9sX3JlZigpOworICB0ZXN0X3JfcmVmKCk7Cisg IHRlc3RfY29uc3RfbF9yZWYoKTsKKyAgdGVzdF9jb25zdF9yX3JlZigpOworICB0ZXN0X2RlZHVj ZWQoKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1vcHMtcmVxdWlyZXMtbm9uLW1lbS5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMv ZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjlmOWM3Mjk2MTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2JqLW9wcy1yZXF1aXJlcy1ub24tbWVtLkMK QEAgLTAsMCArMSwyMzYgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCBjKysyMyB9IH0KKworLy8gd2VsbC1mb3JtZWQgYW5kIGlsbC1mb3JtZWQgdXNlcyBvZiBub24t bWVtYmVyIGNhcGFibGUgb3BlcmF0b3JzIGluIGEgcmVxdWlyZXMgZXhwcmVzc2lvbgorCisjaW5j bHVkZSAiZXhwbGljaXQtb2JqLW9wcy1ub24tbWVtLmgiCisKKy8vIHdlIG9ubHkgbmVlZCB0aGUg c3RydWN0cyBmcm9tIHRoZSBoZWFkZXIKKyN1bmRlZiBURVNUX09QUworI3VuZGVmIFZBTElEQVRF X1JFVFVSTl9UWVBFUworCisvLyBJdCdzIHZlcnkgaGFyZCB0byB0ZXN0IGZvciBpbmNvcnJlY3Qg c3VjY2Vzc2VzIHdpdGhvdXQgcmVxdWlyZXMsIGFuZCBieSBleHRlbnNpb24gYSBub24gZGVwZW5k ZW50IHZhcmlhYmxlCisvLyBzbyBmb3IgdGhlIHRpbWUgYmVpbmcsIHRoZXJlIGFyZSBubyBub24g ZGVwZW5kZW50IHRlc3RzIGludmFsaWQgY2FsbHMuCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5 cGVuYW1lIFU+Citjb25jZXB0IHNhbWVfYXMgPSBfX2lzX3NhbWUoVCwgVSk7CisKKyNkZWZpbmUg VEVTVF9JTlZBTElEKE9QRVJBTkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0KCFy ZXF1aXJlc3sgKE9QRVJBTkQpICs9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBv cGVyYXRvciArPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJl c3sgKE9QRVJBTkQpIC09IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRv ciAtPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9Q RVJBTkQpICo9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAqPSB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQp IC89IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAvPSB3aXRoICIg I09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICU9IDA7 IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAlPSB3aXRoICIgI09QRVJB TkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpICY9IDA7IH0sICJV bmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAmPSB3aXRoICIgI09QRVJBTkQpOwkJ XAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIHw9IDA7IH0sICJVbmV4cGVj dGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciB8PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBz dGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIF49IDA7IH0sICJVbmV4cGVjdGVkIHN1 Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciBePSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNf YXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIDw8PSAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNz IGNhbGxpbmcgb3BlcmF0b3IgPDw9IHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSA+Pj0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxs aW5nIG9wZXJhdG9yID4+PSB3aXRoICIgI09QRVJBTkQpOwlcCisJCQkJCQkJCQkJCQkJCVwKKyAg c3RhdGljX2Fzc2VydCghcmVxdWlyZXN7ICsrKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBzdWNj ZXNzIGNhbGxpbmcgb3BlcmF0b3IgcHJlKysgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGlj X2Fzc2VydCghcmVxdWlyZXN7IC0tKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNh bGxpbmcgb3BlcmF0b3IgcHJlLS0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSsrOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcg b3BlcmF0b3IgcG9zdCsrIHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydCghcmVx dWlyZXN7IChPUEVSQU5EKS0tOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0 b3IgcG9zdC0tIHdpdGggIiAjT1BFUkFORCk7CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNf YXNzZXJ0KCFyZXF1aXJlc3sgKyhPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxs aW5nIG9wZXJhdG9yIHVuYXJ5KyB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0 KCFyZXF1aXJlc3sgLShPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9w ZXJhdG9yIHVuYXJ5LSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1 aXJlc3sgKE9QRVJBTkQpICsgMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJh dG9yIGJpbmFyeSsgd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJl c3sgKE9QRVJBTkQpIC0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9y IGJpbmFyeS0gd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sg KE9QRVJBTkQpICogMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIGJp bmFyeSogd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9Q RVJBTkQpIC8gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIC8gd2l0 aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSAl IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAlIHdpdGggIiAjT1BF UkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgJiAwOyB9LCAi VW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5JiB3aXRoICIgI09QRVJB TkQpOwlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgfCAwOyB9LCAiVW5l eHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgfCB3aXRoICIgI09QRVJBTkQpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpIF4gMDsgfSwgIlVuZXhwZWN0ZWQg c3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIF4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGlj X2Fzc2VydCghcmVxdWlyZXN7IChPUEVSQU5EKSA8PCAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNz IGNhbGxpbmcgb3BlcmF0b3IgPDwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSA+PiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxp bmcgb3BlcmF0b3IgPj4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBz dGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgIShPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgc3VjY2Vz cyBjYWxsaW5nIG9wZXJhdG9yICEgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dCghcmVxdWlyZXN7IChPUEVSQU5EKSAmJiAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxp bmcgb3BlcmF0b3IgJiYgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVx dWlyZXN7IChPUEVSQU5EKSB8fCAwOyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3Bl cmF0b3IgfHwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNf YXNzZXJ0KCFyZXF1aXJlc3sgKE9QRVJBTkQpID09IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3Mg Y2FsbGluZyBvcGVyYXRvciA9PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0 KCFyZXF1aXJlc3sgKE9QRVJBTkQpICE9IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGlu ZyBvcGVyYXRvciAhPSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1 aXJlc3sgKE9QRVJBTkQpIDwgMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJh dG9yIDwgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydCghcmVxdWlyZXN7IChP UEVSQU5EKSA+IDA7IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA+IHdp dGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkg PD0gMDsgfSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIDw9IHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPj0gMDsg fSwgIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yID49IHdpdGggIiAjT1BFUkFO RCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgPD0+IDA7IH0sICJV bmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciA8PT4gd2l0aCAiICNPUEVSQU5EKTsJ XAorCQkJCQkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAqKE9QRVJBTkQp OyB9LCAiVW5leHBlY3RlZCBzdWNjZXNzIGNhbGxpbmcgb3BlcmF0b3IgdW5hcnkqIHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQoIXJlcXVpcmVzeyAoT1BFUkFORCkgLT4qIDA7 IH0sICJVbmV4cGVjdGVkIHN1Y2Nlc3MgY2FsbGluZyBvcGVyYXRvciAtPiogd2l0aCAiICNPUEVS QU5EKTsJXAorICAvKiBXZSBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gdHlwZSB0byBjb25maXJt IHRoZSBidWlsdC1pbiBvcGVyYXRvciB3YXMgbm90IHNlbGVjdGVkLiAgKi8JCQlcCisgIHN0YXRp Y19hc3NlcnQoIXJlcXVpcmVzeyB7JihPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+ OyB9LAkJCQkJCVwKKwkJIlVuZXhwZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yIHVuYXJ5 JiB3aXRoICIgI09QRVJBTkQpOwkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KCFyZXF1aXJlc3sgeyhP UEVSQU5EKSwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9LAkJCQkJCVwKKwkJIlVuZXhw ZWN0ZWQgc3VjY2VzcyBjYWxsaW5nIG9wZXJhdG9yICwgd2l0aCAiICNPUEVSQU5EKTsKKworI2Rl ZmluZSBURVNUX1ZBTElEKE9QRVJBTkQsIENPUlJFQ1RfVFlQRSkgXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyAoT1BFUkFORCkgKz0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5n IG9wZXJhdG9yICs9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWly ZXN7IChPUEVSQU5EKSAtPSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0 b3IgLT0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9Q RVJBTkQpICo9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAqPSB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg Lz0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIC89IHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAlPSAwOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgJT0gd2l0aCAiICNPUEVSQU5E KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICY9IDA7IH0sICJVbmV4 cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciAmPSB3aXRoICIgI09QRVJBTkQpOwkJXAor ICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgfD0gMDsgfSwgIlVuZXhwZWN0ZWQg ZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIHw9IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRp Y19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSBePSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJl IGNhbGxpbmcgb3BlcmF0b3IgXj0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2Vy dChyZXF1aXJlc3sgKE9QRVJBTkQpIDw8PSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxp bmcgb3BlcmF0b3IgPDw9IHdpdGggIiAjT1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgKE9QRVJBTkQpID4+PSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3Bl cmF0b3IgPj49IHdpdGggIiAjT1BFUkFORCk7CVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNf YXNzZXJ0KHJlcXVpcmVzeyArKyhPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxs aW5nIG9wZXJhdG9yIHByZSsrIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQo cmVxdWlyZXN7IC0tKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3Bl cmF0b3IgcHJlLS0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJl c3sgKE9QRVJBTkQpKys7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBw b3N0Kysgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9Q RVJBTkQpLS07IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBwb3N0LS0g d2l0aCAiICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyArKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0 b3IgdW5hcnkrIHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7 IC0oT1BFUkFORCk7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciB1bmFy eS0gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJB TkQpICsgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeSsg d2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg LSAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgYmluYXJ5LSB3aXRo ICIgI09QRVJBTkQpOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAqIDA7 IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciBiaW5hcnkqIHdpdGggIiAj T1BFUkFORCk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIC8gMDsgfSwg IlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIC8gd2l0aCAiICNPUEVSQU5EKTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICUgMDsgfSwgIlVuZXhwZWN0 ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICUgd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3Rh dGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpICYgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVy ZSBjYWxsaW5nIG9wZXJhdG9yIGJpbmFyeSYgd2l0aCAiICNPUEVSQU5EKTsJXAorICBzdGF0aWNf YXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkgfCAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNh bGxpbmcgb3BlcmF0b3IgfCB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyAoT1BFUkFORCkgXiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3Bl cmF0b3IgXiB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAo T1BFUkFORCkgPDwgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIDw8 IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5E KSA+PiAwOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgPj4gd2l0aCAi ICNPUEVSQU5EKTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVz eyAhKE9QRVJBTkQpOyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgISB3 aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFORCkg JiYgMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yICYmIHdpdGggIiAj T1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSB8fCAwOyB9 LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgfHwgd2l0aCAiICNPUEVSQU5E KTsJCVwKKwkJCQkJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyAoT1BFUkFO RCkgPT0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yID09IHdpdGgg IiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IChPUEVSQU5EKSAhPSAw OyB9LCAiVW5leHBlY3RlZCBmYWlsdXJlIGNhbGxpbmcgb3BlcmF0b3IgIT0gd2l0aCAiICNPUEVS QU5EKTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIDwgMDsgfSwgIlVu ZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yIDwgd2l0aCAiICNPUEVSQU5EKTsJCVwK KyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpID4gMDsgfSwgIlVuZXhwZWN0ZWQg ZmFpbHVyZSBjYWxsaW5nIG9wZXJhdG9yID4gd2l0aCAiICNPUEVSQU5EKTsJCVwKKyAgc3RhdGlj X2Fzc2VydChyZXF1aXJlc3sgKE9QRVJBTkQpIDw9IDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUg Y2FsbGluZyBvcGVyYXRvciA8PSB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0 KHJlcXVpcmVzeyAoT1BFUkFORCkgPj0gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5n IG9wZXJhdG9yID49IHdpdGggIiAjT1BFUkFORCk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWly ZXN7IChPUEVSQU5EKSA8PT4gMDsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9wZXJh dG9yIDw9PiB3aXRoICIgI09QRVJBTkQpOwlcCisJCQkJCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fz c2VydChyZXF1aXJlc3sgKihPUEVSQU5EKTsgfSwgIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5n IG9wZXJhdG9yIHVuYXJ5KiB3aXRoICIgI09QRVJBTkQpOwkJXAorICBzdGF0aWNfYXNzZXJ0KHJl cXVpcmVzeyAoT1BFUkFORCkgLT4qIDA7IH0sICJVbmV4cGVjdGVkIGZhaWx1cmUgY2FsbGluZyBv cGVyYXRvciAtPiogd2l0aCAiICNPUEVSQU5EKTsJXAorICAvKiBXZSBuZWVkIHRvIGNoZWNrIHRo ZSByZXR1cm4gdHlwZSB0byBjb25maXJtIHdlIHNlbGVjdGVkIG91ciBvdmVybG9hZCwgbm90IHRo ZSBidWlsdC1pbiBvcGVyYXRvci4gICovCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyYo T1BFUkFORCl9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSwJCQkJCQlcCisJCSJVbmV4cGVj dGVkIGZhaWx1cmUgY2FsbGluZyBvcGVyYXRvciB1bmFyeSYgd2l0aCAiICNPUEVSQU5EKTsJCQkJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSwgMH0gLT4gc2FtZV9hczxD T1JSRUNUX1RZUEU+OyB9LAkJCQkJCVwKKwkJIlVuZXhwZWN0ZWQgZmFpbHVyZSBjYWxsaW5nIG9w ZXJhdG9yICwgd2l0aCAiICNPUEVSQU5EKTsKKworLy8gUmV0dXJuIHR5cGVzIG5lZWQgdG8gYmUg dGVzdGVkIGZvciB0aGUgZGVkdWNlZCBjYXNlCisKKyNkZWZpbmUgVEVTVF9WQUxJRF9XSVRIX1JF VFVSTl9UWVBFUyhPUEVSQU5ELCBDT1JSRUNUX1RZUEUpIFwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSArPSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgLT0gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICo9 IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSAvPSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgJT0gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICY9 IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1 aXJlc3sgeyhPUEVSQU5EKSB8PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisg IHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgXj0gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIDw8 PSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IHsoT1BFUkFORCkgPj49IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwK KwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsrKyhPUEVSQU5EKX0gLT4g c2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sg ey0tKE9QRVJBTkQpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0aWNf YXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpKyt9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsg fSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCktLX0gLT4gc2FtZV9h czxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKwkJCQkJCQkJCQlcCisgIHN0YXRpY19hc3NlcnQocmVx dWlyZXN7IHsrKE9QRVJBTkQpfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBz dGF0aWNfYXNzZXJ0KHJlcXVpcmVzeyB7LShPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZ UEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSArIDB9IC0+ IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7 IHsoT1BFUkFORCkgLSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0 aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICogMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZ UEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAvIDB9IC0+ IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7 IHsoT1BFUkFORCkgJSAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0 aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpICYgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZ UEU+OyB9KTsJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSB8IDB9IC0+ IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7 IHsoT1BFUkFORCkgXiAwfSAtPiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwkJXAorICBzdGF0 aWNfYXNzZXJ0KHJlcXVpcmVzeyB7KE9QRVJBTkQpIDw8IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9U WVBFPjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA+PiAwfSAt PiBzYW1lX2FzPENPUlJFQ1RfVFlQRT47IH0pOwlcCisJCQkJCQkJCQkJXAorICBzdGF0aWNfYXNz ZXJ0KHJlcXVpcmVzeyB7IShPUEVSQU5EKX0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJ CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSAmJiAwfSAtPiBzYW1lX2Fz PENPUlJFQ1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFO RCkgfHwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorCQkJCQkJCQkJCVwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA9PSAwfSAtPiBzYW1lX2FzPENPUlJF Q1RfVFlQRT47IH0pOwlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgIT0g MH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVp cmVzeyB7KE9QRVJBTkQpIDwgMH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJCVwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA+IDB9IC0+IHNhbWVfYXM8Q09SUkVD VF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgPD0g MH0gLT4gc2FtZV9hczxDT1JSRUNUX1RZUEU+OyB9KTsJXAorICBzdGF0aWNfYXNzZXJ0KHJlcXVp cmVzeyB7KE9QRVJBTkQpID49IDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CVwKKyAg c3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyhPUEVSQU5EKSA8PT4gMH0gLT4gc2FtZV9hczxDT1JS RUNUX1RZUEU+OyB9KTsJXAorCQkJCQkJCQkJCVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sg eyooT1BFUkFORCl9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19h c3NlcnQocmVxdWlyZXN7IHsoT1BFUkFORCkgLT4qIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBF PjsgfSk7CVwKKyAgc3RhdGljX2Fzc2VydChyZXF1aXJlc3sgeyYoT1BFUkFORCl9IC0+IHNhbWVf YXM8Q09SUkVDVF9UWVBFPjsgfSk7CQlcCisgIHN0YXRpY19hc3NlcnQocmVxdWlyZXN7IHsoT1BF UkFORCksIDB9IC0+IHNhbWVfYXM8Q09SUkVDVF9UWVBFPjsgfSk7CisKK3RlbXBsYXRlPHR5cGVu YW1lIERlcFZhbHVlID0gVmFsdWU+Cit2b2lkIHRlc3RfdmFsdWUoKQoreworICBEZXBWYWx1ZSB2 YWx1ZXt9OworICBURVNUX1ZBTElEKHZhbHVlLCBEZXBWYWx1ZSkKKyAgVEVTVF9WQUxJRChzdGF0 aWNfY2FzdDxEZXBWYWx1ZSYmPih2YWx1ZSksIERlcFZhbHVlKQorICBURVNUX1ZBTElEKHN0YXRp Y19jYXN0PERlcFZhbHVlIGNvbnN0Jj4odmFsdWUpLCBEZXBWYWx1ZSkKKyAgVEVTVF9WQUxJRChz dGF0aWNfY2FzdDxEZXBWYWx1ZSBjb25zdCYmPih2YWx1ZSksIERlcFZhbHVlKQorfQorCit0ZW1w bGF0ZTx0eXBlbmFtZSBEZXBMUmVmID0gTFJlZj4KK3ZvaWQgdGVzdF9sX3JlZigpCit7CisgIERl cExSZWYgbF9yZWZ7fTsKKyAgVEVTVF9WQUxJRChsX3JlZiwgRGVwTFJlZiYpCisgIFRFU1RfSU5W QUxJRChzdGF0aWNfY2FzdDxEZXBMUmVmJiY+KGxfcmVmKSwgRGVwTFJlZiYpCisgIFRFU1RfSU5W QUxJRChzdGF0aWNfY2FzdDxEZXBMUmVmIGNvbnN0Jj4obF9yZWYpLCBEZXBMUmVmJikKKyAgVEVT VF9JTlZBTElEKHN0YXRpY19jYXN0PERlcExSZWYgY29uc3QmJj4obF9yZWYpLCBEZXBMUmVmJikK K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVwUlJlZiA9IFJSZWY+Cit2b2lkIHRlc3Rfcl9yZWYo KQoreworICBEZXBSUmVmIHJfcmVme307CisgIFRFU1RfSU5WQUxJRChyX3JlZiwgRGVwUlJlZiYm KQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcFJSZWYmJj4ocl9yZWYpLCBEZXBSUmVmJiYp CisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0Jj4ocl9yZWYpLCBEZXBS UmVmJiYpCisgIFRFU1RfSU5WQUxJRChzdGF0aWNfY2FzdDxEZXBSUmVmIGNvbnN0JiY+KHJfcmVm KSwgRGVwUlJlZiYmKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBDb25zdExSZWYgPSBDb25z dExSZWY+Cit2b2lkIHRlc3RfY29uc3RfbF9yZWYoKQoreworICBEZXBDb25zdExSZWYgY29uc3Rf bF9yZWZ7fTsKKyAgVEVTVF9WQUxJRChjb25zdF9sX3JlZiwgRGVwQ29uc3RMUmVmIGNvbnN0JikK KyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25zdExSZWYmJj4oY29uc3RfbF9yZWYpLCBE ZXBDb25zdExSZWYgY29uc3QmKQorICBURVNUX1ZBTElEKHN0YXRpY19jYXN0PERlcENvbnN0TFJl ZiBjb25zdCY+KGNvbnN0X2xfcmVmKSwgRGVwQ29uc3RMUmVmIGNvbnN0JikKKyAgVEVTVF9WQUxJ RChzdGF0aWNfY2FzdDxEZXBDb25zdExSZWYgY29uc3QmJj4oY29uc3RfbF9yZWYpLCBEZXBDb25z dExSZWYgY29uc3QmKQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXBDb25zdFJSZWYgPSBDb25z dFJSZWY+Cit2b2lkIHRlc3RfY29uc3Rfcl9yZWYoKQoreworICBEZXBDb25zdFJSZWYgY29uc3Rf cl9yZWZ7fTsKKyAgVEVTVF9JTlZBTElEKGNvbnN0X3JfcmVmLCBEZXBDb25zdFJSZWYgY29uc3Qm JikKKyAgVEVTVF9WQUxJRChzdGF0aWNfY2FzdDxEZXBDb25zdFJSZWYmJj4oY29uc3Rfcl9yZWYp LCBEZXBDb25zdFJSZWYgY29uc3QmJikKKyAgVEVTVF9JTlZBTElEKHN0YXRpY19jYXN0PERlcENv bnN0UlJlZiBjb25zdCY+KGNvbnN0X3JfcmVmKSwgRGVwQ29uc3RSUmVmIGNvbnN0JiYpCisgIFRF U1RfVkFMSUQoc3RhdGljX2Nhc3Q8RGVwQ29uc3RSUmVmIGNvbnN0JiY+KGNvbnN0X3JfcmVmKSwg RGVwQ29uc3RSUmVmIGNvbnN0JiYpCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcERlZHVjZWQg PSBEZWR1Y2VkPgordm9pZCB0ZXN0X2RlZHVjZWQoKQoreworICBEZXBEZWR1Y2VkIGRlZHVjZWR7 fTsKKworICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKGRlZHVjZWQsIERlcERlZHVjZWQm KQorICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVjZWQm Jj4oZGVkdWNlZCksIERlcERlZHVjZWQmJikKKyAgVEVTVF9WQUxJRF9XSVRIX1JFVFVSTl9UWVBF UyhzdGF0aWNfY2FzdDxEZXBEZWR1Y2VkIGNvbnN0Jj4oZGVkdWNlZCksIERlcERlZHVjZWQgY29u c3QmKQorICBURVNUX1ZBTElEX1dJVEhfUkVUVVJOX1RZUEVTKHN0YXRpY19jYXN0PERlcERlZHVj ZWQgY29uc3QmJj4oZGVkdWNlZCksIERlcERlZHVjZWQgY29uc3QmJikKK30KKwordm9pZCB0ZXN0 KCkKK3sKKyAgdGVzdF92YWx1ZSgpOworICB0ZXN0X2xfcmVmKCk7CisgIHRlc3Rfcl9yZWYoKTsK KyAgdGVzdF9jb25zdF9sX3JlZigpOworICB0ZXN0X2NvbnN0X3JfcmVmKCk7CisgIHRlc3RfZGVk dWNlZCgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGlj aXQtb2JqLXJlZGVjbC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMjMvZXhwbGljaXQtb2Jq LXJlZGVjbC5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMWU0OWM4 ODc1MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxp Y2l0LW9iai1yZWRlY2wuQwpAQCAtMCwwICsxLDI0NSBAQAorLy8gUDA4NDdSNworLy8geyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IGMrKzIzIH0gfQorCisvLyByZWRlY2xhcmF0aW9ucyBvZiB4b2Jq L2lvYmogbWVtYmVyIGZ1bmN0aW9ucyB3aGVyZSB0aGUgaW9iaiBtZW1iZXIgZnVuY3Rpb24KKy8v IGlzIG5vdCByZWYgcXVhbGlmaWVkCisKKy8vIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY2hl Y2sgZm9yIHRoZSBpbnZlcnNlIGluIHRoaXMgdGVzdCAoNyBpb2JqLCAxIHhvYmopCisvLyBiZWNh dXNlIHlvdSBhcmUgbm90IGFsbG93ZWQgdG8gb3ZlcmxvYWQgaW9iaiBtZW1iZXIgZnVuY3Rpb25z IHdpdGhvdXQgcmVmIHF1YWxpZmllcnMKKy8vIHdpdGggdGhvc2UgdGhhdCBkbyAoYW5kIHZpY2Ug dmVyc2EpCisKKy8vIGlvYmogZmlyc3QKKworc3RydWN0IFMwIHsKKyAgdm9pZCBmMCgpOyAvLyB7 IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhpcyBTMCAmJik7 IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmMCh0 aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzAgY29u c3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzAgdm9sYXRpbGUmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCB2b2xhdGlsZSYmKTsgLy8geyBk Zy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKworICB2b2lkIGYxKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFy YXRpb24iIH0KKyAgdm9pZCBmMSh0aGlzIFMwICYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUg b3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZjEodGhpcyBTMCBjb25zdCYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmMSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGYxKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRo aXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhp cyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmYzAo KSBjb25zdDsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZj MCh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMCAmJik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRn LWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZmMwKHRoaXMgUzAg dm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzAgdm9sYXRp bGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0IHZvbGF0 aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMwIGNvbnN0IHZvbGF0 aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZjMSgpIGNvbnN0OyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmMxKHRoaXMgUzAgJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwICYmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZmMxKHRoaXMgUzAgY29uc3QmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisKKyAgdm9pZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ub3RlICJwcmV2aW91 cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MCh0aGlzIFMwICYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKyAgdm9pZCBmdjAodGhpcyBTMCAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2 MCh0aGlzIFMwIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMw IGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMCB2b2xhdGls ZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lk IGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZ2MCh0aGlzIFMwIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2 b2lkIGZ2MSgpIHZvbGF0aWxlOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9 CisgIHZvaWQgZnYxKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0 aGlzIFMwICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgY29uc3Qm KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYxKHRoaXMgUzAgY29uc3QmJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMwIHZvbGF0aWxlJik7IC8vIHsgZGctZXJy b3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmdjEodGhpcyBTMCBjb25z dCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBTMCBjb25z dCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YwKCkgY29uc3Qg dm9sYXRpbGU7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBm Y3YwKHRoaXMgUzAgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCAm Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCBjb25zdCYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgY29uc3QmJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKyAgdm9pZCBmY3YwKHRoaXMgUzAgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZjdjAodGhpcyBTMCBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fu bm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxl OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MSh0aGlz IFMwICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgJiYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzAgY29uc3QmKTsgLy8geyBkZy1ib2d1 cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMwIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmY3YxKHRoaXMgUzAgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZv aWQgZmN2MSh0aGlzIFMwIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBm Y3YxKHRoaXMgUzAgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92 ZXJsb2FkZWQgd2l0aCIgfQorfTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKy8vIGlvYmogbGFzdAor CitzdHJ1Y3QgUzEgeworICB2b2lkIGYwKHRoaXMgUzEgJiYpOyAvLyB7IGRnLW5vdGUgInByZXZp b3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhpcyBTMSBjb25zdCYpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKyAgdm9pZCBmMCh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmMCh0aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGYwKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRo aXMgUzEgY29uc3Qgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAodGhp cyBTMSBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjAoKTsg Ly8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZjEo dGhpcyBTMSAmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lk IGYxKHRoaXMgUzEgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBT MSBjb25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMSB2b2xhdGls ZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIHZvbGF0aWxlJiYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzEgY29uc3Qgdm9sYXRpbGUmJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKCk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBv dmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGZjMCh0aGlzIFMxICYpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTMSAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZjMCh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9u IiB9CisgIHZvaWQgZmMwKHRoaXMgUzEgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZmMwKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZjMCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lk IGZjMCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmYzAoKSBjb25zdDsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIg fQorCisgIHZvaWQgZmMxKHRoaXMgUzEgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZj MSh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRoaXMgUzEgY29u c3QmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZjMSh0 aGlzIFMxIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0aGlzIFMx IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMSBjb25z dCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzEodGhpcyBTMSBjb25z dCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKCkgY29uc3Q7IC8v IHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGZ2MCh0 aGlzIFMxICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMSAmJik7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxIGNvbnN0Jik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmdjAodGhpcyBTMSB2b2xhdGlsZSYmKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBk ZWNsYXJhdGlvbiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1lcnJvciAiY2Fu bm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZnYxKHRoaXMgUzEgJik7IC8vIHsg ZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisgIHZvaWQgZnYxKHRoaXMgUzEgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQg ZnYxKHRoaXMgUzEgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlz IFMxIHZvbGF0aWxlJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAg dm9pZCBmdjEodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAg dm9pZCBmdjEodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZnYxKCkgdm9sYXRpbGU7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVk IHdpdGgiIH0KKworICB2b2lkIGZjdjAodGhpcyBTMSAmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZmN2MCh0aGlzIFMxICYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0 aGlzIFMxIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMSBj b25zdCYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIHZvbGF0aWxl Jik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMSB2b2xhdGlsZSYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MCh0aGlzIFMxIGNvbnN0IHZvbGF0aWxlJiYp OyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MCgpIGNv bnN0IHZvbGF0aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9 CisKKyAgdm9pZCBmY3YxKHRoaXMgUzEgJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZj djEodGhpcyBTMSAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSBj b25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzEgY29uc3QmJik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSB2b2xhdGlsZSYpOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzEgdm9sYXRpbGUmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZjdjEodGhpcyBTMSBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRn LW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0 aWxlOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9Cit9OworCisv LyBpbiBvcmRlciAoaW9iaiByZXBsYWNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgaW4gZWFjaCBn cm91cCkKKy8vIGx2YWx1ZSByZWYgdG8gUworLy8gcnZhbHVlIHJlZiB0byBTCisvLyBsdmFsdWUg YyByZWYgdG8gUworLy8gcnZhbHVlIGMgcmVmIHRvIFMKKy8vIGx2YWx1ZSB2IHJlZiB0byBTCisv LyBydmFsdWUgdiByZWYgdG8gUworLy8gbHZhbHVlIGN2IHJlZiB0byBTCisvLyBydmFsdWUgY3Yg cmVmIHRvIFMKKworc3RydWN0IFMyIHsKKyAgdm9pZCBmMCgpOyAvLyB7IGRnLW5vdGUgInByZXZp b3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZjAodGhpcyBTMiAmJik7IC8vIHsgZGctZXJyb3Ig ImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmMCh0aGlzIFMyIGNvbnN0Jik7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzIgY29uc3QmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGYwKHRoaXMgUzIgdm9sYXRpbGUmKTsgLy8geyBkZy1ib2d1cyAi IiB9CisgIHZvaWQgZjAodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZjAodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAg dm9pZCBmMCh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKwor ICB2b2lkIGYxKHRoaXMgUzIgJik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24i IH0KKyAgdm9pZCBmMSgpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRo IiB9CisgIHZvaWQgZjEodGhpcyBTMiBjb25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmMSh0aGlzIFMyIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmMSh0aGlz IFMyIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzIgdm9s YXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGYxKHRoaXMgUzIgY29uc3Qgdm9s YXRpbGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZjEodGhpcyBTMiBjb25zdCB2b2xh dGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmYzAodGhpcyBTMiAmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzIgJiYpOyAvLyB7IGRnLWJvZ3VzICIi IH0KKyAgdm9pZCBmYzAoKSBjb25zdDsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlv biIgfQorICB2b2lkIGZjMCh0aGlzIFMyIGNvbnN0JiYpOyAvLyB7IGRnLWVycm9yICJjYW5ub3Qg YmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisgIHZvaWQgZmMwKHRoaXMgUzIgdm9sYXRpbGUmKTsgLy8g eyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMwKHRoaXMgUzIgdm9sYXRpbGUmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZjMCh0aGlzIFMyIGNvbnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRn LWJvZ3VzICIiIH0KKworICB2b2lkIGZjMSh0aGlzIFMyICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmYzEodGhpcyBTMiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMSh0 aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAg dm9pZCBmYzEoKSBjb25zdDsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aCIgfQorICB2b2lkIGZjMSh0aGlzIFMyIHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQor ICB2b2lkIGZjMSh0aGlzIFMyIHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmYzEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmYzEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAg dm9pZCBmdjAodGhpcyBTMiAmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYwKHRoaXMg UzIgJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMiBjb25zdCYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjAodGhpcyBTMiBjb25zdCYmKTsgLy8geyBkZy1i b2d1cyAiIiB9CisgIHZvaWQgZnYwKCkgdm9sYXRpbGU7IC8vIHsgZGctbm90ZSAicHJldmlvdXMg ZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmdjAodGhpcyBTMiB2b2xhdGlsZSYmKTsgLy8geyBkZy1l cnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIGNv bnN0IHZvbGF0aWxlJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZ2MCh0aGlzIFMyIGNv bnN0IHZvbGF0aWxlJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGZ2MSh0aGlzIFMy ICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBTMiAmJik7IC8vIHsgZGct Ym9ndXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0Jik7IC8vIHsgZGctYm9ndXMgIiIg fQorICB2b2lkIGZ2MSh0aGlzIFMyIGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmdjEodGhpcyBTMiB2b2xhdGlsZSYpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0 aW9uIiB9CisgIHZvaWQgZnYxKCkgdm9sYXRpbGU7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBv dmVybG9hZGVkIHdpdGgiIH0KKyAgdm9pZCBmdjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYpOyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjEodGhpcyBTMiBjb25zdCB2b2xhdGlsZSYmKTsg Ly8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmY3YwKHRoaXMgUzIgJik7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBTMiAmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2 b2lkIGZjdjAodGhpcyBTMiBjb25zdCYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3Yw KHRoaXMgUzIgY29uc3QmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAodGhpcyBT MiB2b2xhdGlsZSYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUzIgdm9s YXRpbGUmJik7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjdjAoKSBjb25zdCB2b2xhdGls ZTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZjdjAodGhp cyBTMiBjb25zdCB2b2xhdGlsZSYmKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2Fk ZWQgd2l0aCIgfQorCisgIHZvaWQgZmN2MSh0aGlzIFMyICYpOyAvLyB7IGRnLWJvZ3VzICIiIH0K KyAgdm9pZCBmY3YxKHRoaXMgUzIgJiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3Yx KHRoaXMgUzIgY29uc3QmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMy IGNvbnN0JiYpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgdm9sYXRp bGUmKTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmN2MSh0aGlzIFMyIHZvbGF0aWxlJiYp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YxKHRoaXMgUzIgY29uc3Qgdm9sYXRpbGUm KTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGZjdjEoKSBj b25zdCB2b2xhdGlsZTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0aCIg fQorfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0LW9i ai1yZWRlY2wyLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAyMy9leHBsaWNpdC1vYmotcmVk ZWNsMi5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44M2M3NzU2ZjBm ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDIzL2V4cGxpY2l0 LW9iai1yZWRlY2wyLkMKQEAgLTAsMCArMSwxNjAgQEAKKy8vIFAwODQ3UjcKKy8vIHsgZGctZG8g Y29tcGlsZSB7IHRhcmdldCBjKysyMyB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLXBlZGFudGljLWVy cm9ycyAtV25vLXZvbGF0aWxlIiB9CisKKy8vIHJlamVjdGluZyByZWRlY2xhcmF0aW9ucyBvZiBi eS12YWx1ZSB4b2JqIG1lbWJlciBmdW5jdGlvbnMKKy8vIGFzIGlvYmogbWVtYmVyIGZ1bmN0aW9u cyB0aGF0IGFyZSBub3QgcmVmIHF1YWxpZmllZCAoYW5kIHZpY2UtdmVyc2EpCisvLyBhbHNvIGNo ZWNrIHRoYXQgdmFsaWQgb3ZlcmxvYWRzIGFyZSBhY2NlcHRlZAorCisvLyAgaW9iaiB8ICB4b2Jq ICB8ICBNU1ZDIHwgY2xhbmcgfCBJU09DKysKKy8vICBub25lIHwgIG5vbmUgIHwgICBYICAgfCAg IFggICB8ICAgWAorLy8gIG5vbmUgfCAgICAgYyAgfCAgIFggICB8ICAgTyAgIHwgICBYCisvLyAg bm9uZSB8ICAgICB2ICB8ICAgWCAgIHwgICBPICAgfCAgIFgKKy8vICBub25lIHwgICAgY3YgIHwg ICBYICAgfCAgIE8gICB8ICAgWAorLy8gICAgIGMgfCAgbm9uZSAgfCAgIE8gICB8ICAgTyAgIHwg ICBPCisvLyAgICAgYyB8ICAgICBjICB8ICAgTyAgIHwgICBYICAgfCAgIE8KKy8vICAgICBjIHwg ICAgIHYgIHwgICBPICAgfCAgIE8gICB8ICAgTworLy8gICAgIGMgfCAgICBjdiAgfCAgIE8gICB8 ICAgTyAgIHwgICBPCisvLyAgICAgdiB8ICBub25lICB8ICAgTyAgIHwgICBPICAgfCAgIE8KKy8v ICAgICB2IHwgICAgIGMgIHwgICBPICAgfCAgIE8gICB8ICAgTworLy8gICAgIHYgfCAgICAgdiAg fCAgIE8gICB8ICAgWCAgIHwgICBPCisvLyAgICAgdiB8ICAgIGN2ICB8ICAgTyAgIHwgICBPICAg fCAgIE8KKy8vICAgIGN2IHwgIG5vbmUgIHwgICBPICAgfCAgIE8gICB8ICAgTworLy8gICAgY3Yg fCAgICAgYyAgfCAgIE8gICB8ICAgTyAgIHwgICBPCisvLyAgICBjdiB8ICAgICB2ICB8ICAgTyAg IHwgICBPICAgfCAgIE8KKy8vICAgIGN2IHwgICAgY3YgIHwgICBPICAgfCAgIFggICB8ICAgTwor CisvKiBUb3AtbGV2ZWwgY3YgcXVhbGlmaWVycyBhcmUgc3VwcG9zZWQgdG8gYmUgZGlzY2FyZGVk IGZyb20KKyAgIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uCisgICAg IAorICAgW2RjbC5mY3QuNV0KKyAgIEFmdGVyIHByb2R1Y2luZyB0aGUgbGlzdCBvZiBwYXJhbWV0 ZXIgdHlwZXMsIGFueSB0b3AtbGV2ZWwKKyAgIGN2LXF1YWxpZmllcnMgbW9kaWZ5aW5nIGEgcGFy YW1ldGVyIHR5cGUgYXJlIGRlbGV0ZWQgd2hlbiBmb3JtaW5nCisgICB0aGUgZnVuY3Rpb24gdHlw ZS4KKworICAgQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCwgdGhlIHR5cGUgb2YgYW4gaW1wbGlj aXQgb2JqZWN0IHBhcmFtZXRlcgorICAgaXMgYWx3YXlzIGEgcmVmZXJlbmNlLiBUaGlzIGlzbid0 IHJlZmxlY3RlZCBpbiBHQ0MgYnV0IHdlIHN0aWxsIG5lZWQKKyAgIHRvIHRha2UgdGhpcyBydWxl IGludG8gYWNjb3VudCBoZXJlLgorCisgICBbb3Zlci5tYXRjaC5mdW5jcy5nZW5lcmFsLjRdCisg ICBGb3IgaW1wbGljaXQgb2JqZWN0IG1lbWJlciBmdW5jdGlvbnMsIHRoZSB0eXBlIG9mIHRoZSBp bXBsaWNpdAorICAgb2JqZWN0IHBhcmFtZXRlciBpcworICAgLS0g4oCcbHZhbHVlIHJlZmVyZW5j ZSB0byBjdiBY4oCdIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQKKyAgICAgIHdpdGhvdXQgYSByZWYt cXVhbGlmaWVyIG9yIHdpdGggdGhlICYgcmVmLXF1YWxpZmllcgorICAgLS0g4oCccnZhbHVlIHJl ZmVyZW5jZSB0byBjdiBY4oCdIGZvciBmdW5jdGlvbnMgZGVjbGFyZWQgd2l0aAorICAgICAgdGhl ICYmIHJlZi1xdWFsaWZpZXIKKyAgICAKKyAgIFdoZW4gY29tcGFyaW5nIGFuIGlvYmogYW5kIHhv YmogbWVtYmVyIGZ1bmN0aW9uIHRvIHNlZSBpZiB0aGV5IGFyZQorICAgcmVkZWNsYXJhdGlvbnMg d2UgdHJlYXQgdGhlbSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gaWYgdGhlIGlvYmoKKyAgIG1l bWJlciBmdW5jdGlvbiBoYXMgYSByZWYgcXVhbGlmaWVyIG9yIG5vdC4KKyAgIElmIHRoZSBpb2Jq IG1lbWJlciBmdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGEgcmVmIHF1YWxpZmllciwgd2UgbmVlZCB0 bworICAgc3RyaXAgdGhlIHRvcC1sZXZlbCByZWZlcmVuY2VzIGJlZm9yZSBjb21wYXJpbmcgdGhl bS4KKworICAgW2Jhc2ljLnNjb3BlLnNjb3BlLjNdCisgICBUd28gbm9uLXN0YXRpYyBtZW1iZXIg ZnVuY3Rpb25zIGhhdmUgY29ycmVzcG9uZGluZyBvYmplY3QKKyAgIHBhcmFtZXRlcnMgaWY6Cisg ICAtLSBleGFjdGx5IG9uZSBpcyBhbiBpbXBsaWNpdCBvYmplY3QgbWVtYmVyIGZ1bmN0aW9uIHdp dGggbm8KKyAgICAgIHJlZi1xdWFsaWZpZXIgYW5kIHRoZSB0eXBlcyBvZiB0aGVpciBvYmplY3Qg cGFyYW1ldGVycworICAgICAgKFtkY2wuZmN0XSksIGFmdGVyIHJlbW92aW5nIHRvcC1sZXZlbCBy ZWZlcmVuY2VzLCBhcmUgdGhlCisgICAgICBzYW1lLCBvcgorICAgLS0gdGhlaXIgb2JqZWN0IHBh cmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSB0eXBlLiAqLworCitzdHJ1Y3QgUyB7CisgIHZvaWQgZjAo KTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGYwKHRoaXMg Uyk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lk IGYxKCk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBmMSh0 aGlzIFMgY29uc3QpOyAvLyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9 CisKKyAgdm9pZCBmMigpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9Cisg IHZvaWQgZjIodGhpcyBTIHZvbGF0aWxlKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJs b2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZjMoKTsgLy8geyBkZy1ub3RlICJwcmV2aW91cyBkZWNs YXJhdGlvbiIgfQorICB2b2lkIGYzKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctZXJy b3IgImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGZjMCgpIGNvbnN0OyAv LyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmYzAodGhpcyBTKTsgLy8geyBkZy1ib2d1cyAiIiB9 CisKKyAgdm9pZCBmYzEoKSBjb25zdDsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZmMxKHRo aXMgUyBjb25zdCk7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZmMyKCkgY29uc3Q7IC8v IHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGZjMih0aGlzIFMgdm9sYXRpbGUpOyAvLyB7IGRnLWJv Z3VzICIiIH0KKworICB2b2lkIGZjMygpIGNvbnN0OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmYzModGhpcyBTIGNvbnN0IHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9p ZCBmdjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYwKHRoaXMgUyk7 IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZnYxKCkgdm9sYXRpbGU7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGZ2MSh0aGlzIFMgY29uc3QpOyAvLyB7IGRnLWJvZ3VzICIiIH0KKwor ICB2b2lkIGZ2MigpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmdjIodGhp cyBTIHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBmdjMoKSB2b2xhdGls ZTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZnYzKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7 IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZmN2MCgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7 IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YwKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMgIiIgfQor CisgIHZvaWQgZmN2MSgpIGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9p ZCBmY3YxKHRoaXMgUyBjb25zdCk7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZmN2Migp IGNvbnN0IHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YyKHRoaXMgUyB2 b2xhdGlsZSk7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZmN2MygpIGNvbnN0IHZvbGF0 aWxlOyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBmY3YzKHRoaXMgUyBjb25zdCB2b2xhdGls ZSk7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIC8vIHNhbWUgYXMgdGhlIGFib3ZlIGYgY2FzZXMg ZXhjZXB0IHJldmVyc2VkCisKKyAgdm9pZCBnMCh0aGlzIFMpOyAvLyB7IGRnLW5vdGUgInByZXZp b3VzIGRlY2xhcmF0aW9uIiB9CisgIHZvaWQgZzAoKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJl IG92ZXJsb2FkZWQgd2l0aCIgfQorCisgIHZvaWQgZzEodGhpcyBTIGNvbnN0KTsgLy8geyBkZy1u b3RlICJwcmV2aW91cyBkZWNsYXJhdGlvbiIgfQorICB2b2lkIGcxKCk7IC8vIHsgZGctZXJyb3Ig ImNhbm5vdCBiZSBvdmVybG9hZGVkIHdpdGgiIH0KKworICB2b2lkIGcyKHRoaXMgUyB2b2xhdGls ZSk7IC8vIHsgZGctbm90ZSAicHJldmlvdXMgZGVjbGFyYXRpb24iIH0KKyAgdm9pZCBnMigpOyAv LyB7IGRnLWVycm9yICJjYW5ub3QgYmUgb3ZlcmxvYWRlZCB3aXRoIiB9CisKKyAgdm9pZCBnMyh0 aGlzIFMgY29uc3Qgdm9sYXRpbGUpOyAvLyB7IGRnLW5vdGUgInByZXZpb3VzIGRlY2xhcmF0aW9u IiB9CisgIHZvaWQgZzMoKTsgLy8geyBkZy1lcnJvciAiY2Fubm90IGJlIG92ZXJsb2FkZWQgd2l0 aCIgfQorCisgIHZvaWQgZ2MwKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdj MCgpIGNvbnN0OyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGdjMSh0aGlzIFMgY29uc3Qp OyAvLyB7IGRnLWJvZ3VzICIiIH0KKyAgdm9pZCBnYzEoKSBjb25zdDsgLy8geyBkZy1ib2d1cyAi IiB9CisKKyAgdm9pZCBnYzIodGhpcyBTIHZvbGF0aWxlKTsgLy8geyBkZy1ib2d1cyAiIiB9Cisg IHZvaWQgZ2MyKCkgY29uc3Q7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ2MzKHRoaXMg UyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdjMygpIGNvbnN0 OyAvLyB7IGRnLWJvZ3VzICIiIH0KKworICB2b2lkIGd2MCh0aGlzIFMpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBndjAoKSB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9p ZCBndjEodGhpcyBTIGNvbnN0KTsgLy8geyBkZy1ib2d1cyAiIiB9CisgIHZvaWQgZ3YxKCkgdm9s YXRpbGU7IC8vIHsgZGctYm9ndXMgIiIgfQorCisgIHZvaWQgZ3YyKHRoaXMgUyB2b2xhdGlsZSk7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGd2MigpIHZvbGF0aWxlOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKworICB2b2lkIGd2Myh0aGlzIFMgY29uc3Qgdm9sYXRpbGUpOyAvLyB7IGRnLWJvZ3Vz ICIiIH0KKyAgdm9pZCBndjMoKSB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9p ZCBnY3YwKHRoaXMgUyk7IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdjdjAoKSBjb25zdCB2 b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9CisKKyAgdm9pZCBnY3YxKHRoaXMgUyBjb25zdCk7 IC8vIHsgZGctYm9ndXMgIiIgfQorICB2b2lkIGdjdjEoKSBjb25zdCB2b2xhdGlsZTsgLy8geyBk Zy1ib2d1cyAiIiB9CisKKyAgdm9pZCBnY3YyKHRoaXMgUyB2b2xhdGlsZSk7IC8vIHsgZGctYm9n dXMgIiIgfQorICB2b2lkIGdjdjIoKSBjb25zdCB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9 CisKKyAgdm9pZCBnY3YzKHRoaXMgUyBjb25zdCB2b2xhdGlsZSk7IC8vIHsgZGctYm9ndXMgIiIg fQorICB2b2lkIGdjdjMoKSBjb25zdCB2b2xhdGlsZTsgLy8geyBkZy1ib2d1cyAiIiB9Cit9Owot LSAKMi40Mi4xCgo= --b1_HglRM5k3kqot6ZgYpLNgjrf7igNcb20xIE6WrmIH7Z0--