Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m4Iso-0008HG-QA for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jul 2021 08:07:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m4Isn-0001ac-MF for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jul 2021 08:07:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m4Isn-0001aT-65 for pgsql-hackers@lists.postgresql.org; Fri, 16 Jul 2021 08:07:41 +0000 Received: from smtp-fw-4101.amazon.com ([72.21.198.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m4Isd-0006AU-Ck for pgsql-hackers@postgresql.org; Fri, 16 Jul 2021 08:07:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1626422852; x=1657958852; h=subject:from:to:cc:references:message-id:date: mime-version:in-reply-to; bh=xdS5dKI4mOH17tP7ccamjCWBDSJs34qriHPAzjKQ2Ik=; b=p3MEaWBW3YYICgHye3X+Ds2UfCupX/Egf41Jud8TFDa0aJybmOfPqLz0 KU4dgxI3hnMv1lTlPdedKT3MF7P3g+P6kDrivZ5yNIoYd9hJRL7QwKTD2 tf4lYEDMV9wwupvM4cihDnbR8znu8mDxfLhUdpC8oBfekLBSCxgK+ml1S 4=; X-Amazon-filename: v20-0005-Doc-changes-describing-details-about-logical-dec.patch, v20-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v20-0003-Allow-logical-decoding-on-standby.patch, v20-0002-Handle-logical-slot-conflicts-on-standby.patch, v20-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch X-IronPort-AV: E=Sophos;i="5.84,244,1620691200"; d="scan'208,223";a="121410579" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1d-16425a8d.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-4101.iad4.amazon.com with ESMTP; 16 Jul 2021 08:07:23 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1d-16425a8d.us-east-1.amazon.com (Postfix) with ESMTPS id EA3C2100AF3; Fri, 16 Jul 2021 08:07:19 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.66) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 16 Jul 2021 08:07:14 +0000 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: Andres Freund CC: , Alvaro Herrera , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> <842d60ce-99e6-f35e-8c92-0cd49381326e@amazon.com> <6b9168e5-6a29-7fda-8903-cd50563fa84c@amazon.com> <20210406180231.qsnkyrgrm7gtxb73@alap3.anarazel.de> <20210407170954.xbovgh3xdrnogg7w@alap3.anarazel.de> <20210407203218.pestfxu7watrnog4@alap3.anarazel.de> <20210408034713.auf7oaxyymu2kc7n@alap3.anarazel.de> <26c6f320-98f0-253c-f8b5-df1e7c1f6315@amazon.com> <8d263a6b-a99f-0f9b-43ba-e8967c386f2b@amazon.com> Message-ID: <2feee395-959b-6d53-369a-c00f8f2fa6c5@amazon.com> Date: Fri, 16 Jul 2021 10:07:10 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <8d263a6b-a99f-0f9b-43ba-e8967c386f2b@amazon.com> Content-Type: multipart/mixed; boundary="------------4C61D31BF656D9DC7EC6021C" Content-Language: en-US X-Originating-IP: [10.43.160.66] X-ClientProxiedBy: EX13D06UWC002.ant.amazon.com (10.43.162.205) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi Andres, On 6/22/21 12:38 PM, Drouvot, Bertrand wrote: > Hi Andres, > > On 6/14/21 7:41 AM, Drouvot, Bertrand wrote: >> Hi Andres, >> >> On 4/8/21 5:47 AM, Andres Freund wrote: >>> Hi, >>> >>> On 2021-04-07 13:32:18 -0700, Andres Freund wrote: >>>> While working on this I found a, somewhat substantial, issue: >>>> >>>> When the primary is idle, on the standby logical decoding via >>>> walsender >>>> will typically not process the records until further WAL writes >>>> come in >>>> from the primary, or until a 10s lapsed. >>>> >>>> The problem is that WalSndWaitForWal() waits for the *replay* LSN to >>>> increase, but gets woken up by walreceiver when new WAL has been >>>> flushed. Which means that typically walsenders will get woken up at >>>> the >>>> same time that the startup process will be - which means that by the >>>> time the logical walsender checks GetXLogReplayRecPtr() it's unlikely >>>> that the startup process already replayed the record and updated >>>> XLogCtl->lastReplayedEndRecPtr. >>>> >>>> I think fixing this would require too invasive changes at this >>>> point. I >>>> think we might be able to live with 10s delay issue for one >>>> release, but >>>> it sure is ugly :(. >>> This is indeed pretty painful. It's a lot more regularly occuring if >>> you >>> either have a slot disk, or you switch around the order of >>> WakeupRecovery() and WalSndWakeup() XLogWalRcvFlush(). >>> >>> - There's about which timeline to use. If you use pg_recvlogical and >>> you >>>    restart the server, you'll see errors like: >>> >>>    pg_recvlogical: error: unexpected termination of replication >>> stream: ERROR:  requested WAL segment 000000000000000000000003 has >>> already been removed >>> >>>    the real filename is 000000010000000000000003 - i.e. the timeline is >>>    0. >>> >>>    This isn't too hard to fix, but definitely needs fixing. >> >> Thanks, nice catch! >> >> From what I have seen, we are not going through InitXLOGAccess() on a >> Standby and in some cases (like the one you mentioned) >> StartLogicalReplication() is called without IdentifySystem() being >> called previously: this lead to ThisTimeLineID still set to 0. >> >> I am proposing a fix in the attached v18 by adding a check in >> StartLogicalReplication() and ensuring that ThisTimeLineID is retrieved. >> >>> >>> - ResolveRecoveryConflictWithLogicalSlots() is racy - potentially >>>    leading us to drop a slot that has been created since we signalled a >>>    recovery conflict.  See >>> https://www.postgresql.org/message-id/20210408020913.zzprrlvqyvlt5cyy%40alap3.anarazel.de >>> >>>    for some very similar issues. >> >> I have rewritten this part by following the same logic as the one >> used in 96540f80f8 (the commit linked to the thread you mentioned). >> >>> >>> - Given the precedent of max_slot_wal_keep_size, I think it's wrong to >>>    just drop the logical slots. Instead we should just mark them as >>>    invalid, like InvalidateObsoleteReplicationSlots(). >> >> Makes fully sense and done that way in the attached patch. >> >> I am setting the slot's data.xmin and data.catalog_xmin as >> InvalidTransactionId to mark the slot(s) as invalid in case of conflict. >> >>> - There's no tests covering timeline switches, what happens if >>> there's a >>>    promotion if logical decoding is currently ongoing. >> >> I'll now work on the tests. >> >>> >>> - The way ResolveRecoveryConflictWithLogicalSlots() builds the error >>>    message is not good (and I've complained about it before...). >> >> I changed it and made it more simple. >> >> I also removed the details around mentioning xmin or catalog xmin (as >> I am not sure of the added value and they are currently also not >> mentioned during standby recovery snapshot conflict). >> >>> >>> Unfortunately I think the things I have found are too many for me to >>> address within the given time. I'll send a version with a somewhat >>> polished set of the changes I made in the next few days... >> >> Thanks for the review and feedback. >> >> Please find enclosed v18 with the changes I worked on. >> >> I still need to have a look on the tests. > > Please find enclosed v19 that also contains the changes related to > your TAP tests remarks, mainly: > > - get rid of 024 and add more tests in 026 (025 has been used in the > meantime) > > - test that logical decoding actually produces useful and correct results > > - test standby promotion and logical decoding behavior once done > > - useless "use" removal > > - check_confl_logicalslot() function removal > > - rewrote make_slot_active() to make use of poll_query_until() and > timeout > > - remove the useless eval() > > - remove the "Catalog xmins should advance after standby logical slot > fetches the changes" test > > One thing that's not clear to me is your remark "There's also no test > for a recovery conflict due to row removal": Don't you think that the > "vacuum full" conflict test is enough? if not, what kind of additional > tests would you like to see? > >> >> There is also the 10s delay to work on, do you already have an idea >> on how we should handle it? >> >> Thanks >> >> Bertrand >> > Thanks > > Bertrand > Please find enclosed v20 a needed rebase (nothing serious worth mentioning) of v19. FWIW, just to sum up that v19 (and so v20): - contained the changes (see details above) related to your TAP tests remarks - contained the changes (see details above) related to your code remarks There is still the 10s delay thing that need work: do you already have an idea on how we should handle it? And still one thing that's not clear to me is your remark "There's also no test for a recovery conflict due to row removal": Don't you think that the "vacuum full" conflict test is enough? if not, what kind of additional tests would you like to see? Thanks Bertrand --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v20-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v20-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSA4YzkyOTJlMTFmODkyOWM4ZDkwMThiOTU3YTdhMzA2YjNiZjFlMGM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAwNjo1OToyNCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIwIDUvNV0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDAwMmVmYzg2YjQuLjQ1NWE0MzI4NzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlIAorICAgICBjb25uZWN0aW9u IGlzIGFsaXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydCB3b3VsZCBicmVhayBpdCku IEV4aXN0aW5nIAorICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52 YWxpZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBs ZXNzIHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBG b3IgYSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMg c25hcHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJl bnRseSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1h cnksIHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhp cyBpbmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBT bywgc2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBo YXBwZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5n IGEKKyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxl IHRpbWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAg ICAgUmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBu b3RoaW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4xOC40Cgo= --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v20-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v20-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSBhMTkxZGRiYjM4NjM0MGQ4ZjUwNmNhYTAxMWVkYzRlZWY0NmMwOGQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAwNjo1ODoyNiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIwIDQvNV0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbSAgICAgICAgICAgICAgICAg fCAgMzcgKysKIC4uLi90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDQyNiArKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDYzIGluc2Vy dGlvbnMoKykKICAgNy4yJSBzcmMvdGVzdC9wZXJsLwogIDkyLjclIHNyYy90ZXN0L3JlY292 ZXJ5L3QvCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0gYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQppbmRleCBlZDViNGExYzRiLi41MGFjMDhi MDY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQorKysgYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQpAQCAtMjYxMiw2ICsyNjEyLDQzIEBAIHN1 YiBwZ19yZWN2bG9naWNhbF91cHRvCiAKID1wb2QKIAorPWl0ZW0gJG5vZGUtPmNyZWF0ZV9s b2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBtYXN0ZXIsIHNsb3RfbmFtZSwgZGJuYW1l KQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVuIHN0YW5kYnkK KworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5Cit7CisJbXkg KCRzZWxmLCAkbWFzdGVyLCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9IEBfOworCW15ICgkc3Rk b3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFuZGxlID0gSVBDOjpSdW46 OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+Y29ubnN0cigkZGJuYW1l KSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9uYW1lLCAnLS1jcmVhdGUt c2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisKKwkjIE9uY2Ugc2xv dCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBsb29rcyBmb3IgeGxfcnVu bmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0YXJ0X2xzbiBvbndhcmRz LiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyByZXN0YXJ0X2xzbiBpcyBl dmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywg cXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAorCQlGUk9NIHBnX2NhdGFs b2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUn CisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9naWNhbCBzbG90IHRvIGNh bGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJyYW5nZSBmb3IgdGhlIHhs X3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2bG9naWNhbAorCSMgaXMg d2FpdGluZy4KKwkkbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNLUE9JTlQn KTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFt ZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRi eSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3Rf bmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAyNl9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTY4N2M2MzkzMgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI2X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbApAQCAtMCwwICsxLDQyNiBAQAorIyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg OiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5IGNvbmZsaWN0IGFuZCBzdGFu ZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBv c3RncmVzTm9kZTsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDMyOwordXNlIFRpbWU6Okhp UmVzIHF3KHVzbGVlcCk7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQs ICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9IGdldF9uZXdfbm9kZSgn cHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IGdldF9uZXdfbm9kZSgnc3RhbmRieScp OworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmlt YXJ5X3Nsb3RuYW1lID0gJ3ByaW1hcnlfcGh5c2ljYWwnOworCisjIHJldHVybiB0aGUgc2l6 ZSBvZiBsb2dmaWxlIG9mICRub2RlIGluIGJ5dGVzCitzdWIgZ2V0X2xvZ19zaXplCit7CisJ bXkgKCRub2RlKSA9IEBfOworCisJcmV0dXJuIChzdGF0ICRub2RlLT5sb2dmaWxlKVs3XTsK K30KKworIyBmaW5kICRwYXQgaW4gbG9nZmlsZSBvZiAkbm9kZSBhZnRlciAkb2ZmLXRoIGJ5 dGUKK3N1YiBmaW5kX2luX2xvZworeworCW15ICgkbm9kZSwgJHBhdCwgJG9mZikgPSBAXzsK KworCSRvZmYgPSAwIHVubGVzcyBkZWZpbmVkICRvZmY7CisJbXkgJGxvZyA9IFRlc3RMaWI6 OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxv ZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJu ICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90 J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZl biBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVk IGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2Rl LCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9 ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3Qg eG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2Fs IHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9k ZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFy eSwgJ2luYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVf bG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAn dGVzdGRiJyk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNhbCBz bG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ugd2Fp dCBpcyB0cnVlIHdlIGFyZSB3YWl0aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAnYWN0 aXZlc2xvdCcgc2xvdC4KKyMgSWYgd2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBhcmUg dGVzdGluZyBhIGtub3duIGZhaWx1cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2FjdGl2 ZQoreworCW15ICR3YWl0ID0gc2hpZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwlw cmludCAic3RhcnRpbmcgcGdfcmVjdmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUg PSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5k YnktPmNvbm5zdHIoJ3Rlc3RkYicpLCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywg Jy0tbm8tbG9vcCcsICctLXN0YXJ0J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJy KTsKKworCWlmICgkd2FpdCkKKwkjIG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQor CXsKKwkJJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJT RUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJF IHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCki CisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKworCXJldHVy biAkc2xvdF91c2VyX2hhbmRsZTsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9u IHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90Jwor IyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9u LWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJ bXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCW15ICRyZXR1cm47CisKKwlpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdp bmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+ c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24g c3RhbmRieSBkcm9wcGVkJyk7CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0 ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFu ZGxlLT5maW5pc2g7CisJJHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAw LCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsK KwkJbGlrZSgkc3RkZXJyLCBxci9jb25mbGljdCB3aXRoIHJlY292ZXJ5LywgJ3Nsb3QgaGF2 ZSBiZWVuIGRyb3BwZWQnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCiskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gMSwgaGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVw bGljYXRpb25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3Nh Z2VzID0gJ2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCit9KTsKKyRu b2RlX3ByaW1hcnktPmR1bXBfaW5mbzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0p OworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZS T00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmltYXJ5X3Nsb3Ru YW1lJyk7XSk7CitteSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFj a3VwKCRiYWNrdXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRp YWxpemUgc3RhbmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9z dGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFt ZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2Rl X3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlf c2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3Rh cnQ7Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCBs b2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29ycmVjdGx5Lgor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4 dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJ TlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwKSBzO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykp OworCitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBO VUxMLCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2ljIGRlY29kaW5nIHdvcmtzCitpcyhz Y2FsYXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRyZXN1bHQpLAorCTE0LCAnRGVjb2Rp bmcgcHJvZHVjZWQgMTQgcm93cycpOworCisjIEluc2VydCBzb21lIHJvd3MgYW5kIHZlcmlm eSB0aGF0IHdlIGdldCB0aGUgc2FtZSByZXN1bHRzIGZyb20gcGdfcmVjdmxvZ2ljYWwKKyMg YW5kIHRoZSBTUUwgaW50ZXJmYWNlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6 dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworbXkgJGV4cGVjdGVk ID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRl Z2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJU OiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0 OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVR9Owor Ciskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBs YXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3NxbCA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgZGF0YSBG Uk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBO VUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQor KTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQg ZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAkZW5kcG9zID0gJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNh bF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZ IGxzbiBERVNDIExJTUlUIDE7IgorKTsKK3ByaW50ICJ3YWl0aW5nIHRvIHJlcGxheSAkZW5k cG9zXG4iOworCisjIEluc2VydCBzb21lIHJvd3MgYWZ0ZXIgJGVuZHBvcywgd2hpY2ggd2Ug d29uJ3QgcmVhZC4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJ TlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNSw1MCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2 bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsIDE4 MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhh Y3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwg JGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2 bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVl cnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf cmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBh Y3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0 aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxf dXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAxODAsCisgICAg J2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAnc2tpcC1lbXB0eS14YWN0cycgPT4g JzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygkc3Rkb3V0X3JlY3YsICcnLCAncGdf cmVjdmxvZ2ljYWwgYWNrbm93bGVkZ2VkIGNoYW5nZXMnKTsKKworJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgREFUQUJBU0Ugb3RoZXJkYicpOworCitp cyggJG5vZGVfcHJpbWFyeS0+cHNxbCgKKyAgICAgICAgJ290aGVyZGInLAorICAgICAgICAi U0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNs b3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyAgICApLAor ICAgIDMsCisgICAgJ3JlcGxheWluZyBsb2dpY2FsIHNsb3QgZnJvbSBhbm90aGVyIGRhdGFi YXNlIGZhaWxzJyk7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo J2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFb U0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJl Y292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRp bmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDEgOiBob3Rfc3RhbmRieV9mZWVkYmFjayBv ZmYKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byByZXByb2R1Y2Ug cmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gcnVuIFZBQ1VVTSBGVUxMIHdpdGgKKyMgaG90X3N0 YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbiB0aGUgc3RhbmRieS4KKyRub2RlX3N0YW5k YnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVk YmFjayA9IG9mZgorXSk7Ciskbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0OworIyBlbnN1cmUgd2Fs cmVjZWl2ZXIgZmVlZGJhY2sgb2ZmIGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5k CisjIGNhdGFsb2dfeG1pbiBvbiBwcmltYXJ5LiBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNl IGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHBy aW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4g SVMgTlVMTCIpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBUaGlz IHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLCAnVkFDVVVNIEZVTEwnKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdm bHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xv ZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZl c2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2luYWN0 aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQnKTsKKworb2soIGZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZl c2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2FjdGl2 ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkJyk7CisKKyMgVmVyaWZ5IHRoYXQg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfbG9naWNhbHNsb3QgaGFzIGJlZW4g dXBkYXRlZAorb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3Rn cmVzJywKKwkic2VsZWN0IChjb25mbF9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9k YXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwkn Y29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcg Y29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5kbGUgPSBtYWtlX3Ns b3RfYWN0aXZlKDApOwordXNsZWVwKDEwMF8wMDApOworCisjIFdlIGFyZSBub3QgYWJsZSB0 byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVhZCBmcm9tIGxv Z2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpLAorICAnY2Fubm90IHJl YWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnKTsKKworIyBUdXJuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsKKyRub2Rl X3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNl bnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9u IHByaW1hcnkuIFdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFk dmFuY2UsCisjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNp bmNlIHRoZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX3By aW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5E IGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlk YXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5h cmlvIDIgOiBpbmNvcnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9z aXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorbXkgJGxvZ3N0 YXJ0ID0gZ2V0X2xvZ19zaXplKCRub2RlX3N0YW5kYnkpOworCisjIGRyb3AgdGhlIGxvZ2lj YWwgc2xvdHMKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdf ZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo J2FjdGl2ZXNsb3QnKV0pOworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskaGFuZGxl ID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBNYWtlIHByaW1hcnkgd2FsX2xldmVsIHJl cGxpY2EuIFRoaXMgd2lsbCB0cmlnZ2VyIHNsb3QgY29uZmxpY3QuCiskbm9kZV9wcmltYXJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2FsX2xldmVsID0gJ3JlcGxp Y2EnCitdKTsKKyRub2RlX3ByaW1hcnktPnJlc3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitvayggZmlu ZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJp bmFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxv Z3N0YXJ0KSwKKyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQn KTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVj b3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBp cyBsb2dnZWQnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCitvayggJG5vZGVfc3RhbmRi eS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2xv Z2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBk YXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9sb2dpY2Fsc2xvdCB1cGRhdGVk Jykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9sb2dpY2Fsc2xvdCB0byBiZSB1 cGRhdGVkIjsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAw XzAwMCk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsID49IGxvZ2ljYWwg b24gbWFzdGVyIiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCBzdGFydCByZXBsaWNhdGlvbiBi ZWNhdXNlIHdhbF9sZXZlbCA8IGxvZ2ljYWwgb24gbWFzdGVyJyk7CisKKyMgUmVzdG9yZSBw cmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmltYXJ5 LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFu ZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwXzAwMCk7CisKKyMgYXMgdGhl IHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJl YWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVh ZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIsICRsb2dz dGFydCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcg YWN0aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRs ZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFz ZSB0aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBn ZXQgZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJv cGRiIG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFu ZGJ5Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFC QVNFIHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2Rl X3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitp cygkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElT VFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicp XSksICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Ns b3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVy c2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFu ZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNs b3QgdGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jl cycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiaGVhdmlv cgorIyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+ cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rl c3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90 cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9y ZSB0aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJ cXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0 X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5s c24oJ2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisK KyMgaW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4 LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCisp OworCisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0 OiBJTlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29k aW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJs aWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3Rh YmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRd Oic0JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsK KworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9u IGluc2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4 cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9u IG9uIHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMTguNAoK --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v20-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v20-0003-Allow-logical-decoding-on-standby.patch" RnJvbSA5YWFmNWQ2N2NlNDM0OGVlOTdmMzE2ZDBjZjAwYmZiNWM3YmY2YjljIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAwNjo1NjoyOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIwIDMvNV0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAo aW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90 ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQg SGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAzMyArKysrKysrKysrLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jICAgICAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgMjIgKysrKysrKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jICAgICB8IDM3ICsr KysrKy0tLS0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAg ICAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXJmdW5jcy5jICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8IDI2ICsrKysrKy0tLQogc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2cuaCAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIDEzIGZpbGVzIGNo YW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKICAxNi43JSBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICAzMi43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsLwogIDQ1LjIlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA1LjMlIHNy Yy8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNWZmNzZlZDdmYy4uMzg1 MmUyZWVmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNTEwNSw2ICs1 MTA1LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVhZENv bnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRoZSBj b250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisgKiBj b25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBiZSBk aWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9uIHN0 YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lk KQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVsOworfQorCiAvKgogICogSW5p dGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExPRwogICovCkBAIC05NjM3LDcg Kzk2NDgsNyBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCSAqIHdoaWNoZXZl ciBpcyBsYXRlci4KIAkgKi8KIAlyZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hSZWNQdHIo TlVMTCwgTlVMTCk7Ci0JcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5 VExJKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEksIGZh bHNlKTsKIAllbmRwdHIgPSAocmVjZWl2ZVB0ciA8IHJlcGxheVB0cikgPyByZXBsYXlQdHIg OiByZWNlaXZlUHRyOwogCUtlZXBMb2dTZWcoZW5kcHRyLCAmX2xvZ1NlZ05vKTsKIAlJbnZh bGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObyk7CkBAIC0xMTc1MSw3 ICsxMTc2Miw3IEBAIHJlZ2lzdGVyX3BlcnNpc3RlbnRfYWJvcnRfYmFja3VwX2hhbmRsZXIo dm9pZCkKICAqIEV4cG9ydGVkIHRvIGFsbG93IFdBTFJlY2VpdmVyIHRvIHJlYWQgdGhlIHBv aW50ZXIgZGlyZWN0bHkuCiAgKi8KIFhMb2dSZWNQdHIKLUdldFhMb2dSZXBsYXlSZWNQdHIo VGltZUxpbmVJRCAqcmVwbGF5VExJKQorR2V0WExvZ1JlcGxheVJlY1B0cihUaW1lTGluZUlE ICpyZXBsYXlUTEksIGJvb2wgYXZvaWRfaGVhZGVyKQogewogCVhMb2dSZWNQdHIJcmVjcHRy OwogCVRpbWVMaW5lSUQJdGxpOwpAQCAtMTE3NjMsNiArMTE3NzQsMjQgQEAgR2V0WExvZ1Jl cGxheVJlY1B0cihUaW1lTGluZUlEICpyZXBsYXlUTEkpCiAKIAlpZiAocmVwbGF5VExJKQog CQkqcmVwbGF5VExJID0gdGxpOworCisJLyoKKwkgKiBSZXBsYXkgcG9pbnRlciBtYXkgcG9p bnQgb25lIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVjb3JkLiBJZiB0aGF0CisJICogaXMgYSBY TE9HIHBhZ2UgYm91bmRhcnksIGl0IHdpbGwgbm90IGJlIGEgdmFsaWQgTFNOIGZvciB0aGUK KwkgKiBzdGFydCBvZiBhIHJlY29yZCwgc28gYnVtcCBpdCB1cCBwYXN0IHRoZSBwYWdlIGhl YWRlci4KKwkgKi8KKwlpZiAoYXZvaWRfaGVhZGVyICYmICFYUmVjT2ZmSXNWYWxpZChyZWNw dHIpKQorCXsKKwkJaWYgKHJlY3B0ciAlIFhMT0dfQkxDS1NaICE9IDApCisJCQllbG9nKEVS Uk9SLCAiaW52YWxpZCByZXBsYXkgcG9pbnRlciIpOworCisJCS8qIEZvciB0aGUgZmlyc3Qg cGFnZSBvZiBhIHNlZ21lbnQgZmlsZSwgaXQncyBhIGxvbmcgaGVhZGVyICovCisJCWlmIChY TG9nU2VnbWVudE9mZnNldChyZWNwdHIsIHdhbF9zZWdtZW50X3NpemUpID09IDApCisJCQly ZWNwdHIgKz0gU2l6ZU9mWExvZ0xvbmdQSEQ7CisJCWVsc2UKKwkJCXJlY3B0ciArPSBTaXpl T2ZYTG9nU2hvcnRQSEQ7CisJfQorCiAJcmV0dXJuIHJlY3B0cjsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwppbmRleCBiOThkZWI3MmVjLi5hMTczZjhk NmZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtNDE3 LDcgKzQxNyw3IEBAIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oUEdfRlVOQ1RJT05fQVJHUykK IHsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAotCXJlY3B0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCk7CisJcmVjcHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7 CiAKIAlpZiAocmVjcHRyID09IDApCiAJCVBHX1JFVFVSTl9OVUxMKCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGQxN2Q2NjBmNDYuLjgxMDg4YmFh ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC04NTAs NyArODUwLDcgQEAgcmVhZF9sb2NhbF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAogCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpKQogCQkJcmVhZF91cHRvID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAkJZWxzZQotCQkJcmVh ZF91cHRvID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpOworCQkJcmVh ZF91cHRvID0gR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKTsK IAkJdGxpID0gVGhpc1RpbWVMaW5lSUQ7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2NoZWNrcG9pbnRlci5jCmluZGV4IDc1YTk1ZjNkZTcuLjExZDhmMTM3MGMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNDM3LDcgKzQzNyw3IEBAIENo ZWNrcG9pbnRlck1haW4odm9pZCkKIAkJCSAqLwogCQkJY2twdF9hY3RpdmUgPSB0cnVlOwog CQkJaWYgKGRvX3Jlc3RhcnRwb2ludCkKLQkJCQlja3B0X3N0YXJ0X3JlY3B0ciA9IEdldFhM b2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQkJY2twdF9zdGFydF9yZWNwdHIgPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAkJCWVsc2UKIAkJCQlja3B0X3N0YXJ0X3Jl Y3B0ciA9IEdldEluc2VydFJlY1B0cigpOwogCQkJY2twdF9zdGFydF90aW1lID0gbm93OwpA QCAtODAxLDcgKzgwMSw3IEBAIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHByb2dy ZXNzKQogCSAqIHZhbHVlIHRoYXQgd2FzIGluIGVmZmVjdCB3aGVuIHRoZSBXQUwgd2FzIGdl bmVyYXRlZCkuCiAJICovCiAJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQotCQlyZWNwdHIg PSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQlyZWNwdHIgPSBHZXRYTG9nUmVwbGF5 UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAllbHNlCiAJCXJlY3B0ciA9IEdldEluc2VydFJlY1B0 cigpOwogCWVsYXBzZWRfeGxvZ3MgPSAoKChkb3VibGUpIChyZWNwdHIgLSBja3B0X3N0YXJ0 X3JlY3B0cikpIC8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CmluZGV4IDI4NzRkYzA2MTIuLmI4YmUwYzgzZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtMjE1LDExICsyMTUsMzEgQEAgRGVjb2RlWExv Z09wKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVm KQogCQkJICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJ CWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hh bmdlICp4bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERh dGEoYnVmLT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1h cnkgaXMgcmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2Fu dCB0byBwcmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgor CQkJICogRXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRl ZCB3aGVuIHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVy LCBzbG90IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90 IHN1ZmZpY2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBz eW5jaHJvbml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUg d2FsX2xldmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNo ZWNrLgorCQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJ Q0FMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwgPj0g bG9naWNhbCBvbiBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9HX05P T1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQljYXNl IFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJCWNh c2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJY2Fz ZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsLmMKaW5kZXggZDYxZWY0Y2ZhZC4uYzdhZDcxNWFhMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5LDIy IEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVy cm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24i KSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBzb21l ZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5ncyBt aXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRvIGNv cnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAgTFNO IGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2ZlZWRi YWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFyeSBj YW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5nIHJl cGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAgZGJh c2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyByZWNv dmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5IGVh c3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3aGls ZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBoYXZl IHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVSX0NI QU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAqIHZl cmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3IHNs b3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2FsbGVk IG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVuIGxv Z2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJaWYg KEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIG9u IHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgPj0gbG9naWNhbCBvbiBt YXN0ZXIiKSkpOworCX0KIH0KIAogLyoKQEAgLTMzMCw2ICszMjksMTIgQEAgQ3JlYXRlSW5p dERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAq IE9uIHN0YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGlu ZyB0aGUgc2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4K KwkgKi8KKwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hv cnRlciBsaW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXgg MWQ5NDAwZWE2My4uOTA2OWYzZTUwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yMjMsNyArMjIzLDcgQEAgcGdfbG9n aWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJv b2wgY29uZmlybSwgYm9vbCBiaW4KIAlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQll bmRfb2Zfd2FsID0gR2V0Rmx1c2hSZWNQdHIoKTsKIAllbHNlCi0JCWVuZF9vZl93YWwgPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCk7CisJCWVuZF9vZl93YWwgPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOwogCiAJUmVwbGlj YXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3QuYwppbmRleCAxMzc1NzUwNDk2Li45Y2YwNWVkNTU2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdC5jCkBAIC0xMDg4LDM3ICsxMDg4LDI4IEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIAkJLyoKIAkJICogRm9yIGxvZ2ljYWwgc2xvdHMgbG9nIGEgc3Rh bmRieSBzbmFwc2hvdCBhbmQgc3RhcnQgbG9naWNhbCBkZWNvZGluZwogCQkgKiBhdCBleGFj dGx5IHRoYXQgcG9zaXRpb24uIFRoYXQgYWxsb3dzIHRoZSBzbG90IHRvIHN0YXJ0IHVwIG1v cmUKLQkJICogcXVpY2tseS4KKwkJICogcXVpY2tseS4gQnV0IG9uIGEgc3RhbmRieSB3ZSBj YW5ub3QgZG8gV0FMIHdyaXRlcywgc28ganVzdCB1c2UgdGhlCisJCSAqIHJlcGxheSBwb2lu dGVyOyBlZmZlY3RpdmVseSwgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSBsb2dpY2FsIHNsb3Qg b24KKwkJICogc3RhbmRieSB3aWxsIGNhdXNlIGl0IHRvIHdhaXQgZm9yIGFuIHhsX3J1bm5p bmdfeGFjdCByZWNvcmQgdG8gYmUKKwkJICogbG9nZ2VkIGluZGVwZW5kZW50bHkgb24gdGhl IHByaW1hcnksIHNvIHRoYXQgYSBzbmFwc2hvdCBjYW4gYmUgYnVpbHQKKwkJICogdXNpbmcg dGhlIHJlY29yZC4KIAkJICoKLQkJICogVGhhdCdzIG5vdCBuZWVkZWQgKG9yIGluZGVlZCBo ZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMgdGhleSdsbAotCQkgKiBzdGFydCByZXBs YXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkIHJldHVy bgotCQkgKiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQg c2xpZ2h0bHkgaW5jcmVhc2VzCi0JCSAqIHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJl dHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAgaGFzIHRvCi0JCSAqIHN0YXJ0IHJlcGxh eSBhdC4KKwkJICogTm9uZSBvZiB0aGlzIGlzIG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwp IGZvciBwaHlzaWNhbCBzbG90cyBhcworCQkgKiB0aGV5J2xsIHN0YXJ0IHJlcGxheSBhdCB0 aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQKKwkJICogcmV0dXJu IHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRs eQorCQkgKiBpbmNyZWFzZXMgdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0 J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cAorCQkgKiBoYXMgdG8gc3RhcnQgcmVwbGF5IGF0Lgog CQkgKi8KLQkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNs b3QpKQotCQl7Ci0JCQlYTG9nUmVjUHRyCWZsdXNocHRyOwotCi0JCQkvKiBzdGFydCBhdCBj dXJyZW50IGluc2VydCBwb3NpdGlvbiAqLworCQlpZiAoU2xvdElzUGh5c2ljYWwoc2xvdCkp CisJCQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKKwkJZWxzZSBpZiAoUmVjb3Zl cnlJblByb2dyZXNzKCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIo TlVMTCwgdHJ1ZSk7CisJCWVsc2UKIAkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ0luc2VydFJl Y1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5k YXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNs b3QtPm11dGV4KTsKLQotCQkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0 aW9uIHRvIHN0YXJ0ICovCi0JCQlmbHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOwog Ci0JCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3MgZnN5bmNlZCB0byBkaXNrICovCi0JCQlYTG9n Rmx1c2goZmx1c2hwdHIpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcmVzdGFydF9sc24gPSBH ZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJ CXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVs ZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0 ZXgpOworCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CisJCVNwaW5M b2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwogCiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwg YXMgZmFzdCBhcyBwb3NzaWJsZSAqLwogCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVp cmVkTFNOKCk7CkBAIC0xMTM0LDYgKzExMjUsMTcgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2 ZVdhbCh2b2lkKQogCQlpZiAoWExvZ0dldExhc3RSZW1vdmVkU2Vnbm8oKSA8IHNlZ25vKQog CQkJYnJlYWs7CiAJfQorCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNM b2dpY2FsKHNsb3QpKQorCXsKKwkJWExvZ1JlY1B0cglmbHVzaHB0cjsKKworCQkvKiBtYWtl IHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KKwkJZmx1c2hw dHIgPSBMb2dTdGFuZGJ5U25hcHNob3QoKTsKKworCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3Mg ZnN5bmNlZCB0byBkaXNrICovCisJCVhMb2dGbHVzaChmbHVzaHB0cik7CisJfQogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAzMWU3NGQzODMyLi40 OGQyNDQ0MmUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpAQCAtNjM2 LDcgKzYzNiw3IEBAIHBnX3JlcGxpY2F0aW9uX3Nsb3RfYWR2YW5jZShQR19GVU5DVElPTl9B UkdTKQogCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCW1vdmV0byA9IE1pbihtb3Zl dG8sIEdldEZsdXNoUmVjUHRyKCkpOwogCWVsc2UKLQkJbW92ZXRvID0gTWluKG1vdmV0bywg R2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQpKTsKKwkJbW92ZXRvID0gTWlu KG1vdmV0bywgR2V0WExvZ1JlcGxheVJlY1B0cigmVGhpc1RpbWVMaW5lSUQsIGZhbHNlKSk7 CiAKIAkvKiBBY3F1aXJlIHRoZSBzbG90IHNvIHdlICJvd24iIGl0ICovCiAJUmVwbGljYXRp b25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90bmFtZSksIHRydWUpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggOWEyYmMzN2ZkNy4uNzRkM2ZhMGNmMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC00MDcsNyArNDA3 LDcgQEAgV2FsUmVjZWl2ZXJNYWluKHZvaWQpCiAJCQlmaXJzdF9zdHJlYW0gPSBmYWxzZTsK IAogCQkJLyogSW5pdGlhbGl6ZSBMb2dzdHJlYW1SZXN1bHQgYW5kIGJ1ZmZlcnMgZm9yIHBy b2Nlc3NpbmcgbWVzc2FnZXMgKi8KLQkJCUxvZ3N0cmVhbVJlc3VsdC5Xcml0ZSA9IExvZ3N0 cmVhbVJlc3VsdC5GbHVzaCA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQlMb2dz dHJlYW1SZXN1bHQuV3JpdGUgPSBMb2dzdHJlYW1SZXN1bHQuRmx1c2ggPSBHZXRYTG9nUmVw bGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAkJCWluaXRTdHJpbmdJbmZvKCZyZXBseV9tZXNz YWdlKTsKIAkJCWluaXRTdHJpbmdJbmZvKCZpbmNvbWluZ19tZXNzYWdlKTsKIApAQCAtMTA3 Miw3ICsxMDcyLDcgQEAgWExvZ1dhbFJjdlNlbmRSZXBseShib29sIGZvcmNlLCBib29sIHJl cXVlc3RSZXBseSkKIAkvKiBDb25zdHJ1Y3QgYSBuZXcgbWVzc2FnZSAqLwogCXdyaXRlUHRy ID0gTG9nc3RyZWFtUmVzdWx0LldyaXRlOwogCWZsdXNoUHRyID0gTG9nc3RyZWFtUmVzdWx0 LkZsdXNoOwotCWFwcGx5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlhcHBs eVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJcmVzZXRTdHJp bmdJbmZvKCZyZXBseV9tZXNzYWdlKTsKIAlwcV9zZW5kYnl0ZSgmcmVwbHlfbWVzc2FnZSwg J3InKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpp bmRleCA2ZjBhY2JmZGVmLi5mMjY0YjcxZjczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCkBAIC0zNzIsNyArMzcyLDcgQEAgR2V0UmVwbGlj YXRpb25BcHBseURlbGF5KHZvaWQpCiAJcmVjZWl2ZVB0ciA9IHdhbHJjdi0+Zmx1c2hlZFVw dG87CiAJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCXJlcGxheVB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJcmVwbGF5UHRyID0gR2V0WExvZ1JlcGxh eVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAlpZiAocmVjZWl2ZVB0ciA9PSByZXBsYXlQdHIp CiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCBk MGUyNDdiMTA0Li5kYTI1MzNlMWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwpAQCAtMTE3NCw2ICsxMTc0LDE2IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0 YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAkJZ290X1NUT1BQSU5HID0gdHJ1ZTsKIAl9CiAK KwkvKgorCSAqIEluIGNhc2Ugb2YgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGl0IG1h eSBiZSB0aGF0IFRoaXNUaW1lTGluZUlECisJICogaXMgbm90IHNldCB5ZXQuCisJICogSW5k ZWVkIHdlIGFyZSBub3QgZ29pbmcgdGhyb3VnaCBJbml0WExPR0FjY2VzcyBvbiBhIFN0YW5k YnkgYW5kCisJICogaXQgbWF5IGFsc28gYmUgdGhhdCBJZGVudGlmeVN5c3RlbSBoYXMgbm90 IGJlZW4gY2FsbGVkIHlldC4KKwkgKiBTbyBsZXQncyBnZXQgaXQgdGhyb3VnaCBHZXRYTG9n UmVwbGF5UmVjUHRyKCkuCisJICovCisJaWYgKFRoaXNUaW1lTGluZUlEID09IDApCisJCSh2 b2lkKSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOworCiAJ LyoKIAkgKiBDcmVhdGUgb3VyIGRlY29kaW5nIGNvbnRleHQsIG1ha2luZyBpdCBzdGFydCBh dCB0aGUgcHJldmlvdXNseSBhY2snZWQKIAkgKiBwb3NpdGlvbi4KQEAgLTEzOTgsNyArMTQw OCw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJaWYgKCFSZWNvdmVy eUluUHJvZ3Jlc3MoKSkKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwog CWVsc2UKLQkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQlSZWNlbnRGbHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwog CiAJZm9yICg7OykKIAl7CkBAIC0xNDMyLDcgKzE0NDIsNyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQkJUmVj ZW50Rmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cigpOwogCQllbHNlCi0JCQlSZWNlbnRGbHVz aFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQlSZWNlbnRGbHVzaFB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCiAJCS8qCiAJCSAqIElmIHBv c3RtYXN0ZXIgYXNrZWQgdXMgdG8gc3RvcCwgZG9uJ3Qgd2FpdCBhbnltb3JlLgpAQCAtMjg5 OCwxMCArMjkwOCwxMiBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0 aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3Ro ZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVj UHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVj UHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7Ci0JZWxzZSBpZiAobG9naWNh bF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQotCQlmbHVz aFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9n UmVjUHRyIHx8CisJCWxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+ PSBmbHVzaFB0cikKKwl7CisJCWZsdXNoUHRyID0gKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIg PworCQkJCQlHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoKSA6IEdldEZsdXNoUmVjUHRyKCkpOwor CX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwgaXQg bWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVh ZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0yOTkwLDcgKzMwMDIsNyBAQCBHZXRT dGFuZGJ5Rmx1c2hSZWNQdHIodm9pZCkKIAkgKi8KIAogCXJlY2VpdmVQdHIgPSBHZXRXYWxS Y3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7Ci0JcmVwbGF5UHRyID0gR2V0WExv Z1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5 UmVjUHRyKCZyZXBsYXlUTEksIGZhbHNlKTsKIAogCVRoaXNUaW1lTGluZUlEID0gcmVwbGF5 VExJOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCBjY2ZjZjQzZDYyLi4wZDRjYjQwNWVlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTMyNCw3ICszMjQsNyBAQCBleHRlcm4gYm9vbCBIb3RTdGFuZGJ5 QWN0aXZlKHZvaWQpOwogZXh0ZXJuIGJvb2wgSG90U3RhbmRieUFjdGl2ZUluUmVwbGF5KHZv aWQpOwogZXh0ZXJuIGJvb2wgWExvZ0luc2VydEFsbG93ZWQodm9pZCk7CiBleHRlcm4gdm9p ZCBHZXRYTG9nUmVjZWlwdFRpbWUoVGltZXN0YW1wVHogKnJ0aW1lLCBib29sICpmcm9tU3Ry ZWFtKTsKLWV4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQdHIoVGltZUxpbmVJ RCAqcmVwbGF5VExJKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldFhMb2dSZXBsYXlSZWNQdHIo VGltZUxpbmVJRCAqcmVwbGF5VExJLCBib29sIGF2b2lkX2hlYWRlcik7CiBleHRlcm4gWExv Z1JlY1B0ciBHZXRYTG9nSW5zZXJ0UmVjUHRyKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIg R2V0WExvZ1dyaXRlUmVjUHRyKHZvaWQpOwogZXh0ZXJuIFJlY292ZXJ5UGF1c2VTdGF0ZSBH ZXRSZWNvdmVyeVBhdXNlU3RhdGUodm9pZCk7CkBAIC0zNDEsNiArMzQxLDcgQEAgZXh0ZXJu IFNpemUgWExPR1NobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFhMT0dTaG1lbUluaXQo dm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQg TG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2ZWwg R2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVw WExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0dW0g YXJnKTsKIGV4dGVybiB2b2lkIEluaXRYTE9HQWNjZXNzKHZvaWQpOwotLSAKMi4xOC40Cgo= --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v20-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v20-0002-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSA4NDIwMTRlYjk1YWVhNjc3MjBjZjNhYWEwNGJmYjZhMmJhNjUwNjE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAwNjo1NTozOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIwIDIvNV0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2dldF9hY3Rpdml0eSBmaWVsZDoK Y29uZmxfbG9naWNhbHNsb3QuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVy IHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1C eTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJp emlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aF94bG9nLmMgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAxMyArKwogc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bnc3RhdC5jICAgICAgICAgICAgICAgfCAgMjAgKysKIC4uLi9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMjA5ICsrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwg ICA4ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAgICAgICB8 ICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAg fCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAg IHwgIDExICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAg ICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAg ICAgICB8ICAxNiArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgICAgICAgICAgIHwgICAzICstCiAyMyBmaWxlcyBjaGFuZ2VkLCAzNTEgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCiAgIDQuMCUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv CiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMSUgc3JjL2JhY2tl bmQvYWNjZXNzLwogICA0LjMlIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvCiAgIDMuNSUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Mi4zJSBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi8KICAgNS42JSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4xJSBzcmMv YmFja2VuZC90Y29wLwogICAzLjUlIHNyYy9iYWNrZW5kLwogICA2LjMlIHNyYy9pbmNsdWRl LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDY0M2UxYWQ0OWYuLmE4Y2NmY2Q0MDIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDAzNCw2ICs0MDM0LDE2IEBAIFNFTEVDVCBwaWQs IHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVt YmVyIG9mIHF1ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxl ZCBkdWUgdG8KKyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggNDZhZWU2ZjJhOS4uNTk2M2U2 MzlkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1 LDggQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVz dFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9u Q2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVk byhyZWNvcmQsIDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5 Niw3IEBAIGdpc3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAq LwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJ CQkgICB4bHJlYy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9k ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMjc0NzVm Y2JkNi4uZTVjNjEyNDQwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMK QEAgLTEwMDIsNyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwg cm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEt PmxhdGVzdFJlbW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUs IHJub2RlKTsKIAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRl ZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYwppbmRleCA0MDE5YTIxMjJlLi43NWNhNWY3OWY0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODQxOSw3ICs4NDE5LDggQEAgaGVhcF94bG9nX3By dW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIG5vIHF1ZXJpZXMgcnVubmluZyBm b3Igd2hpY2ggdGhlIHJlbW92ZWQgdHVwbGVzIGFyZSBzdGlsbCB2aXNpYmxlLgogCSAqLwog CWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAogCS8qCiAJICogSWYgd2Ug aGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVzdG9yZSBpdCAodXNpbmcgYSBjbGVhbnVwIGxv Y2spIGFuZApAQCAtODU4Nyw3ICs4NTg4LDkgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJICogcmF0aGVyIHRoYW4ga2lsbGluZyB0aGUgdHJhbnNh Y3Rpb24gb3V0cmlnaHQuCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94aWQsIHJub2RlKTsK KwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPmN1dG9mZl94 aWQsCisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwKKwkJCQkJCQkJCQkJcm5v ZGUpOwogCiAJLyoKIAkgKiBSZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0 cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgpAQCAtODcyNCw3ICs4NzI3LDgg QEAgaGVhcF94bG9nX2ZyZWV6ZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlU cmFuc2FjdGlvbklkUmV0cmVhdChsYXRlc3RSZW1vdmVkWGlkKTsKIAogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJ CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQs CisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dUYWJsZSwgcm5vZGUpOwogCX0KIAogCWlm IChYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAwLCAmYnVmZmVyKSA9PSBCTEtfTkVF RFNfUkVETykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNzg2YzA4 YzBjZS4uNDFiN2VjOGUyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnR4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMK QEAgLTY2OCw3ICs2NjgsOCBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcm5vZGUsIE5V TEwsIE5VTEwpOwogCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4 bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAkvKgpAQCAtMTAwNiw2ICsx MDA3LDcgQEAgYnRyZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo U25hcHNob3RGdWxsWGlkKHhscmVjLT5sYXRlc3RSZW1vdmVkRnVsbFhpZCwKKwkJCQkJCQkJ CQkJCSAgIHhscmVjLT5vbkNhdGFsb2dUYWJsZSwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5u b2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4 bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCAzZGZk MmFhMzE3Li5hZGQ0ZGE0ZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cu YwpAQCAtODgxLDYgKzg4MSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAogCQkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJm5v ZGUsIE5VTEwsIE5VTEwpOwogCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxkYXRhLT5uZXdlc3RSZWRpcmVjdFhpZCwKKwkJCQkJCQkJCQkJCXhsZGF0YS0+b25D YXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQlub2RlKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwppbmRleCBlZGIxNWZlNThkLi41ZmY3NmVkN2ZjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0xMDM5Niw2ICsxMDM5NiwxOSBAQCB4bG9n X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIgY29weSBv ZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxyZWMsIFhM b2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdlKSk7CiAK KwkJLyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBpbiBob3Qg c3RhbmRieSBhbmQgdGhlIHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdBTCBsZXZl bCBzdWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNlYXJjaAor CQkgKiBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3RzIGlmIHN0 YW5kYnkgaXMgcnVubmluZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFuIGxvZ2lj YWwsIGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVpdGhlciBk aXNhbGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0ZWQgZXhp c3RpbmcKKwkJICogb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3Rh bmRieSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJ CXdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCUludmFsaWRhdGVDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRPaWQsSW52YWxpZFRyYW5zYWN0 aW9uSWQpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJlYy5NYXhDb25uZWN0 aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2VzID0geGxyZWMubWF4 X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK aW5kZXggNTVmNmUzNzExZC4uY2QxZmM4OGQxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbApAQCAtMTAyMCw3ICsxMDIwLDggQEAgQ1JFQVRFIFZJRVcgcGdfc3Rh dF9kYXRhYmFzZV9jb25mbGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2xvY2soRC5vaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oRC5vaWQpIEFT IGNvbmZsX2J1ZmZlcnBpbiwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgICAgICAg ICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBj b25mbF9kZWFkbG9jaywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Z2ljYWxzbG90KEQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0 YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggMTE3MDJmMmE4MC4uNTU2YTUxNTYwOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCkBAIC0xODYzLDYgKzE4NjMsMjIgQEAgcGdzdGF0 X3JlcG9ydF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKQogCXBnc3RhdF9z ZW5kKCZtc2csIHNpemVvZihQZ1N0YXRfTXNnUmVwbFNsb3QpKTsKIH0KIAorLyogLS0tLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9jb25mbGljdCgpCisgKiBUZWxsIHRo ZSBjb2xsZWN0b3IgYWJvdXQgYSBsb2dpY2FsIHNsb3QgYmVpbmcgY29uZmxpY3RpbmcKKyAq IHdpdGggcmVjb3ZlcnkuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBv cnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRib2lkKQoreworCVBnU3RhdF9Nc2dSZWNvdmVy eUNvbmZsaWN0IG1zZzsKKwlwZ3N0YXRfc2V0aGVhZGVyKCZtc2cubV9oZHIsIFBHU1RBVF9N VFlQRV9SRUNPVkVSWUNPTkZMSUNUKTsKKwltc2cubV9kYXRhYmFzZWlkID0gZGJvaWQ7CisJ bXNnLm1fcmVhc29uID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDsK KwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YobXNnKSk7Cit9CisKIC8qIC0tLS0tLS0tLS0K ICAqIHBnc3RhdF9waW5nKCkgLQogICoKQEAgLTM0ODksNiArMzUwNSw3IEBAIHJlc2V0X2Ri ZW50cnlfY291bnRlcnMoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5KQogCWRiZW50cnkt Pm5fY29uZmxpY3RfdGFibGVzcGFjZSA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9sb2Nr ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ID0gMDsKKwlkYmVudHJ5LT5u X2NvbmZsaWN0X2xvZ2ljYWxzbG90ID0gMDsKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X2J1ZmZl cnBpbiA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrID0gMDsK IAlkYmVudHJ5LT5uX3RlbXBfZmlsZXMgPSAwOwpAQCAtNTQyNSw2ICs1NDQyLDkgQEAgcGdz dGF0X3JlY3ZfcmVjb3Zlcnljb25mbGljdChQZ1N0YXRfTXNnUmVjb3ZlcnlDb25mbGljdCAq bXNnLCBpbnQgbGVuKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1Q6CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90Kys7CiAJCQlicmVhazsKKwkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZGJlbnRy eS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5uX2NvbmZsaWN0 X2J1ZmZlcnBpbisrOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCAxZjM4YzViMzNlLi4xZDk0MDBlYTYz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKQEAgLTI0MSwxMSArMjQxLDE0IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl c19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmlu CiAKIAkJLyoKIAkJICogQWZ0ZXIgdGhlIHNhbml0eSBjaGVja3MgaW4gQ3JlYXRlRGVjb2Rp bmdDb250ZXh0LCBtYWtlIHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkLiAg QXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCisJCSAqIHJlc3Rh cnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxp ZC4KKwkJICogQXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCiAJ CSAqIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJv dXQgbm8gY2hhbmdlcwogCQkgKiBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwotCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikp CisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJl c3RhcnRfbHNuKQorCQkJfHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9u U2xvdC0+ZGF0YS54bWluKQorCQkJCSYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxp Y2F0aW9uU2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCQkgZXJybXNnKCJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDMzYjg1 ZDg2Y2MuLjEzNzU3NTA0OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTEzMTgs NiArMTMxOCwyMTUgQEAgcmVzdGFydDoKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xv dENvbnRyb2xMb2NrKTsKIH0KIAorLyoKKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZUNvbmZs aWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdCAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xv dAorICogYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4K KyAqCisgKiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2Fz IHJlbGVhc2VkIGluIHRoZSBpbnRlcmltIChhbmQKKyAqIGluIHRoYXQgY2FzZSB3ZSdyZSBu b3QgaG9sZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgorICoK KyAqIFRoaXMgaXMgaW5oZXJlbnRseSByYWN5LCBiZWNhdXNlIHdlIHJlbGVhc2UgdGhlIExX TG9jaworICogZm9yIHN5c2NhbGxzLCBzbyBjYWxsZXIgbXVzdCByZXN0YXJ0IGlmIHdlIHJl dHVybiB0cnVlLgorICovCitzdGF0aWMgYm9vbAorSW52YWxpZGF0ZVBvc3NpYmx5Q29uZmxp Y3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgVHJhbnNh Y3Rpb25JZCB4aWQpCit7CisJaW50CQlsYXN0X3NpZ25hbGVkX3BpZCA9IDA7CisJYm9vbAly ZWxlYXNlZF9sb2NrID0gZmFsc2U7CisKKwlmb3IgKDs7KQorCXsKKwkJVHJhbnNhY3Rpb25J ZCBzbG90X3htaW47CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCU5h bWVEYXRhCXNsb3RuYW1lOworCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKKworCQlBc3NlcnQo TFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NI QVJFRCkpOworCisJCWlmICghcy0+aW5fdXNlKQorCQl7CisJCQlpZiAocmVsZWFzZWRfbG9j aykKKwkJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJ CWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8g YmUgaW52YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCisJCSAqIGludmFsaWRhdGVkLCBh bmQgaXMgbm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAor CQkgKiBhcyBoYXZpbmcgYmVlbiBpbnZhbGlkYXRlZC4gV2UgZG8gdGhpcyB3aXRoIHRoZSBz cGlubG9jayBoZWxkIHRvCisJCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhh bXBsZSB0aGUgeG1pbihzKSBjb3VsZCBtb3ZlIGZvcndhcmQKKwkJICogLCBvciB0aGUgc2xv dCBjb3VsZCBiZSBkcm9wcGVkLgorCQkgKi8KKwkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRl eCk7CisKKwkJc2xvdF94bWluID0gcy0+ZGF0YS54bWluOworCQlzbG90X2NhdGFsb2dfeG1p biA9IHMtPmRhdGEuY2F0YWxvZ194bWluOworCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGlz IGFscmVhZHkgaW52YWxpZCBvciBpcyBub3QgY29uZmxpY3RpbmcsIHdlIGRvbid0IG5lZWQg dG8KKwkJICogZG8gYW55dGhpbmcuCisJCSAqLworCisJCS8qIHNsb3QgaGFzIGJlZW4gaW52 YWxpZGF0ZWQgKi8KKwkJaWYgKCghVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWluKSAm JiAhVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4pKQorCQkJfHwKKwkJ LyoKKwkJICogd2UgYXJlIG5vdCBmb3JjaW5nIGZvciBpbnZhbGlkYXRpb24gYmVjYXVzZSB0 aGUgeGlkIGlzIHZhbGlkCisJCSAqIGFuZCB0aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNs b3QKKwkJICovCisJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiAhKAorCQkJCShU cmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRl c09yRXF1YWxzKHNsb3RfeG1pbiwgeGlkKSkKKwkJCQl8fAorCQkJCShUcmFuc2FjdGlvbklk SXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JF cXVhbHMoc2xvdF9jYXRhbG9nX3htaW4sIHhpZCkpCisJCQkJKSkKKwkJCSkKKwkJeworCQkJ U3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisJCQlpZiAocmVsZWFzZWRfbG9jaykKKwkJ CQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCWJyZWFr OworCQl9CisKKwkJc2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7CisJCWFjdGl2ZV9waWQgPSBz LT5hY3RpdmVfcGlkOworCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJl ZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKKwkJICogaW1tZWRpYXRlbHkuICBP dGhlcndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAor CQkgKiByZXRyeS4KKwkJICovCisJCWlmIChhY3RpdmVfcGlkID09IDApCisJCXsKKwkJCU15 UmVwbGljYXRpb25TbG90ID0gczsKKwkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJ CQlzLT5kYXRhLnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCXMtPmRhdGEuY2F0 YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCX0KKworCQlTcGluTG9ja1Jl bGVhc2UoJnMtPm11dGV4KTsKKworCQlpZiAoYWN0aXZlX3BpZCAhPSAwKQorCQl7CisJCQkv KgorCQkJICogUHJlcGFyZSB0aGUgc2xlZXAgb24gdGhlIHNsb3QncyBjb25kaXRpb24gdmFy aWFibGUgYmVmb3JlCisJCQkgKiByZWxlYXNpbmcgdGhlIGxvY2ssIHRvIGNsb3NlIGEgcG9z c2libGUgcmFjZSBjb25kaXRpb24gaWYgdGhlCisJCQkgKiBzbG90IGlzIHJlbGVhc2VkIGJl Zm9yZSB0aGUgc2xlZXAgYmVsb3cuCisJCQkgKi8KKworCQkJQ29uZGl0aW9uVmFyaWFibGVQ cmVwYXJlVG9TbGVlcCgmcy0+YWN0aXZlX2N2KTsKKworCQkJTFdMb2NrUmVsZWFzZShSZXBs aWNhdGlvblNsb3RDb250cm9sTG9jayk7CisJCQlyZWxlYXNlZF9sb2NrID0gdHJ1ZTsKKwor CQkJLyoKKwkJCSAqIFNpZ25hbCB0byB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgdGhhdCBvd25z IHRoZSBzbG90LCBpZiB3ZQorCQkJICogaGF2ZW4ndCBhbHJlYWR5IHNpZ25hbGxlZCBpdC4g IChBdm9pZGFuY2Ugb2YgcmVwZWF0ZWQKKwkJCSAqIHNpZ25hbGxpbmcgaXMgdGhlIG9ubHkg cmVhc29uIGZvciB0aGVyZSB0byBiZSBhIGxvb3AgaW4gdGhpcworCQkJICogcm91dGluZTsg b3RoZXJ3aXNlIHdlIGNvdWxkIHJlbHkgb24gY2FsbGVyJ3MgcmVzdGFydCBsb29wLikKKwkJ CSAqCisJCQkgKiBUaGVyZSBpcyB0aGUgcmFjZSBjb25kaXRpb24gdGhhdCBvdGhlciBwcm9j ZXNzIG1heSBvd24gdGhlIHNsb3QKKwkJCSAqIGFmdGVyIGl0cyBjdXJyZW50IG93bmVyIHBy b2Nlc3MgaXMgdGVybWluYXRlZCBhbmQgYmVmb3JlIHRoaXMKKwkJCSAqIHByb2Nlc3Mgb3du cyBpdC4gVG8gaGFuZGxlIHRoYXQsIHdlIHNpZ25hbCBvbmx5IGlmIHRoZSBQSUQgb2YKKwkJ CSAqIHRoZSBvd25pbmcgcHJvY2VzcyBoYXMgY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyB0 aW1lLiAoVGhpcworCQkJICogbG9naWMgYXNzdW1lcyB0aGF0IHRoZSBzYW1lIFBJRCBpcyBu b3QgcmV1c2VkIHZlcnkgcXVpY2tseS4pCisJCQkgKi8KKwkJCWlmIChsYXN0X3NpZ25hbGVk X3BpZCAhPSBhY3RpdmVfcGlkKQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJKGVy cm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJYWN0aXZlX3BpZCwg TmFtZVN0cihzbG90bmFtZSkpKSk7CisKKwkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBT SUdURVJNKTsKKwkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFjdGl2ZV9waWQ7CisJCQl9CisK KwkJCS8qIFdhaXQgdW50aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQuICovCisJCQlDb25kaXRp b25WYXJpYWJsZVNsZWVwKCZzLT5hY3RpdmVfY3YsCisJCQkJCQkJCQlXQUlUX0VWRU5UX1JF UExJQ0FUSU9OX1NMT1RfRFJPUCk7CisKKwkJCS8qCisJCQkgKiBSZS1hY3F1aXJlIGxvY2sg YW5kIHN0YXJ0IG92ZXI7IHdlIGV4cGVjdCB0byBpbnZhbGlkYXRlIHRoZQorCQkJICogc2xv dCBuZXh0IHRpbWUgKHVubGVzcyBhbm90aGVyIHByb2Nlc3MgYWNxdWlyZXMgdGhlIHNsb3Qg aW4gdGhlCisJCQkgKiBtZWFudGltZSkuCisJCQkgKi8KKwkJCUxXTG9ja0FjcXVpcmUoUmVw bGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CisJCQljb250aW51ZTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBXZSBob2xkIHRoZSBzbG90IG5vdyBhbmQg aGF2ZSBhbHJlYWR5IGludmFsaWRhdGVkIGl0OyBmbHVzaCBpdAorCQkJICogdG8gZW5zdXJl IHRoYXQgc3RhdGUgcGVyc2lzdHMuCisJCQkgKgorCQkJICogRG9uJ3Qgd2FudCB0byBob2xk IFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIGFjcm9zcyBmaWxlCisJCQkgKiBzeXN0ZW0g b3BlcmF0aW9ucywgc28gcmVsZWFzZSBpdCBub3cgYnV0IGJlIHN1cmUgdG8gdGVsbCBjYWxs ZXIKKwkJCSAqIHRvIHJlc3RhcnQgZnJvbSBzY3JhdGNoLgorCQkJICovCisJCQlMV0xvY2tS ZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCXJlbGVhc2VkX2xvY2sg PSB0cnVlOworCisJCQkvKiBNYWtlIHN1cmUgdGhlIGludmFsaWRhdGVkIHN0YXRlIHBlcnNp c3RzIGFjcm9zcyBzZXJ2ZXIgcmVzdGFydCAqLworCQkJUmVwbGljYXRpb25TbG90TWFya0Rp cnR5KCk7CisJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CisJCQlSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKCk7CisJCQlwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2NvbmZsaWN0KHMtPmRhdGEu ZGF0YWJhc2UpOworCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygiaW52YWxpZGF0 aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBO YW1lU3RyKHNsb3RuYW1lKSkpKTsKKworCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Ig bm93ICovCisJCQlicmVhazsKKwkJfQorCX0KKworCUFzc2VydCghcmVsZWFzZWRfbG9jayA9 PSBMV0xvY2tIZWxkQnlNZUluTW9kZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdf U0hBUkVEKSk7CisKKwlyZXR1cm4gcmVsZWFzZWRfbG9jazsKK30KKworLyoKKyAqIFJlc29s dmUgcmVjb3ZlcnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVu IHhpZCBpcyB2YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJv d3Mgb2xkZXIgdGhhbiB4aWQuCisgKiBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRl IHNsb3RzIHRoYXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICogV2hlbiB4aWQg aXMgaW52YWxpZCwgaW52YWxpZGF0ZSBhbGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1 aXJlZCB3aGVuIHRoZQorICogbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBs aWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqIGJlIGludmFsaWRh dGVkLgorICovCit2b2lkCitJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRp b25TbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCisJQXNzZXJ0KG1h eF9yZXBsaWNhdGlvbl9zbG90cyA+PSAwKTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xv dHMgPT0gMCkKKwkJcmV0dXJuOworcmVzdGFydDoKKwlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0 aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOworCWZvciAoaW50IGkgPSAwOyBpIDwg bWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnMg PSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQlpZiAo IXMtPmluX3VzZSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFdlIGFyZSBvbmx5IGRlYWxpbmcg d2l0aCAqbG9naWNhbCogc2xvdCBjb25mbGljdHMuICovCisJCWlmICghU2xvdElzTG9naWNh bChzKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIG5vdCBvdXIgZGF0YWJhc2UgYW5kIHdlIGRv bid0IHdhbnQgYWxsIHRoZSBkYXRhYmFzZSwgc2tpcCAqLworCQlpZiAoKHMtPmRhdGEuZGF0 YWJhc2UgIT0gSW52YWxpZE9pZCAmJiBzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkKSAmJiBU cmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKEludmFs aWRhdGVQb3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdChzLCB4aWQp KQorCQl7CisJCQkvKiBpZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHdlIG5lZWQgdG8gcmVz dGFydCBmcm9tIHNjcmF0Y2ggKi8KKwkJCWdvdG8gcmVzdGFydDsKKwkJfQorCX0KKwlMV0xv Y2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKK30KKwogLyoKICAqIEZs dXNoIGFsbCByZXBsaWNhdGlvbiBzbG90cyB0byBkaXNrLgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggM2NhMmExMTM4OS4uZDBlMjQ3YjEwNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTExNDcsNiArMTE0NywxNCBAQCBT dGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlS ZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkg JiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFs b2dfeG1pbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJl YWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+ c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlk YXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisK IAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0 YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NhcnJheS5jCmluZGV4IDRjOTFlNzIxZDAuLjczZTFhNDYxZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0zNDAxLDYgKzM0MDEsMTAgQEAgU2lnbmFsVmly dHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxS ZWFzb24gc2lnbW9kZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhpZCwgKnBy b2MpOwogCisJCS8qCisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkIGNhbiBi ZSBpbnZhbGlkLCB3aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0byBzaWduYWwg dGhlIHBpZCB0aGF0IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJCSAqLwogCQlp ZiAocHJvY3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJCQlwcm9jdnhp ZC5sb2NhbFRyYW5zYWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpCiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBkZWZiNzVhYTI2Li4z MTVkNWExZTMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2ln bmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02 NzMsNiArNjczLDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1Mp CiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9UKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hl Y2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9D SykpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TVEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j CmluZGV4IGFlZWNhZjZjYWIuLjVmYWNmNmYzYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z dGFuZGJ5LmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2Vy dC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o IgpAQCAtNDQwLDcgKzQ0MSw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1 YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIH0KIAogdm9pZAotUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RS ZW1vdmVkWGlkLCBSZWxGaWxlTm9kZSBub2RlKQorUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJ Ym9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqYmFja2VuZHM7CiAKQEAgLTQ2NSw2ICs0NjcsOSBAQCBSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQsIFJlbEZpbGVOb2RlCiAJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIHRydWUpOworCisJaWYgKG9uQ2F0YWxvZ1RhYmxl KQorCQlJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhub2Rl LmRiTm9kZSwgbGF0ZXN0UmVtb3ZlZFhpZCk7CiB9CiAKIC8qCkBAIC00NzMsNyArNDc4LDcg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBs YXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxlTm9kZQogICovCiB2b2lkCiBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0 UmVtb3ZlZEZ1bGxYaWQsCi0JCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSkKKwkJCQkJ CQkJCQkgICBib29sIG9uQ2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKQogewogCS8q CiAJICogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qgb3BlcmF0ZXMgb24g MzItYml0IFRyYW5zYWN0aW9uSWRzLApAQCAtNDkxLDcgKzQ5Niw3IEBAIFJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRl c3RSZW1vdmVkRnVsbFhpCiAJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAog CQlsYXRlc3RSZW1vdmVkWGlkID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKGxhdGVzdFJl bW92ZWRGdWxsWGlkKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qo bGF0ZXN0UmVtb3ZlZFhpZCwgbm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aFNuYXBzaG90KGxhdGVzdFJlbW92ZWRYaWQsIG9uQ2F0YWxvZ1RhYmxlLCBub2RlKTsKIAl9 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA4Y2VhMTBjOTAxLi40NzdjOTZkZjlkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yNDY3LDYgKzI0NjcsOSBAQCBlcnJkZXRhaWxfcmVj b3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NOQVBTSE9UOgogCQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVk IHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVh azsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJ ZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2luZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBi ZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9u IGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpA QCAtMzAzNyw2ICszMDQwLDI1IEBAIFJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1Np Z25hbFJlYXNvbiByZWFzb24pCiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf TE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgog CQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJCS8qCisJCQkJICog Rm9yIGNvbmZsaWN0cyB0aGF0IHJlcXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUgaW52YWxp ZGF0ZWQsIHRoZQorCQkJCSAqIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2Vp dmVyIHRvIHJlbGVhc2UgdGhlIHNsb3QsCisJCQkJICogc28gdGhhdCBpdCBjb3VsZCBiZSBp bnZhbGlkYXRlZCBieSB0aGUgc2lnbmFsIHNlbmRlci4gU28gZm9yCisJCQkJICogbm9ybWFs IGJhY2tlbmRzLCB0aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIGFib3J0ZWQsIGp1c3QKKwkJ CQkgKiBsaWtlIGZvciBvdGhlciByZWNvdmVyeSBjb25mbGljdHMuIEJ1dCBpZiBpdCdzIHdh bHNlbmRlciBvbgorCQkJCSAqIHN0YW5kYnksIHRoZW4gaXQgaGFzIHRvIGJlIGtpbGxlZCBz byBhcyB0byByZWxlYXNlIGFuCisJCQkJICogYWNxdWlyZWQgbG9naWNhbCBzbG90LgorCQkJ CSAqLworCQkJCWlmIChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyICYmCisJCQkJCXJlYXNvbiA9 PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UICYmCisJCQkJCU15UmVw bGljYXRpb25TbG90ICYmIFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQorCQkJ CXsKKwkJCQkJUmVjb3ZlcnlDb25mbGljdFBlbmRpbmcgPSB0cnVlOworCQkJCQlRdWVyeUNh bmNlbFBlbmRpbmcgPSB0cnVlOworCQkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJ CQkJYnJlYWs7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBJZiB3ZSBhcmVuJ3QgaW4gYSB0 cmFuc2FjdGlvbiBhbnkgbG9uZ2VyIHRoZW4gaWdub3JlLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYwppbmRleCBmMGUwOWVhZTRkLi41ZGIwYTI5NzQwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMTUwMCw2ICsxNTAwLDIxIEBAIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVU VVJOX0lOVDY0KHJlc3VsdCk7CiB9CiAKK0RhdHVtCitwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCWRiaWQgPSBQR19H RVRBUkdfT0lEKDApOworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0X1N0YXREQkVudHJ5ICpk YmVudHJ5OworCisJaWYgKChkYmVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfZGJlbnRyeShk YmlkKSkgPT0gTlVMTCkKKwkJcmVzdWx0ID0gMDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2 NCkgKGRiZW50cnktPm5fY29uZmxpY3RfbG9naWNhbHNsb3QpOworCisJUEdfUkVUVVJOX0lO VDY0KHJlc3VsdCk7Cit9CisKIERhdHVtCiBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZm ZXJwaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsKQEAgLTE1NDMsNiArMTU1OCw3IEBAIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2FsbChQR19GVU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSAo aW50NjQpIChkYmVudHJ5LT5uX2NvbmZsaWN0X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVu dHJ5LT5uX2NvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X3Nu YXBzaG90ICsKKwkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJ CQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRy eS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggOGJmOWQ3MDRiNy4uNWM1NWVkNDkzOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC01NDM4LDYgKzU0MzgsMTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3Rh dF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90 JyB9LAoreyBvaWQgPT4gJzQ1NDQnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3Zl cnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNlZCBieSBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3QnLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fs c2xvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9y ZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAn cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnIH0sCiB7IG9pZCA9PiAnMzA2 OCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0 YWJhc2UgY2F1c2VkIGJ5IHNoYXJlZCBidWZmZXIgcGluJywKICAgcHJvbmFtZSA9PiAncGdf c3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluJywgcHJvdm9sYXRpbGUgPT4gJ3MnLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQu aAppbmRleCA5NjEyYzBhNmMyLi41MjYyM2I0YmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNzQzLDYgKzc0Myw3 IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVy IG5fY29uZmxpY3RfdGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2xv Y2s7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291 bnRlciBuX2NvbmZsaWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxp Y3RfYnVmZmVycGluOwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3Rfc3RhcnR1cF9kZWFk bG9jazsKIAlQZ1N0YXRfQ291bnRlciBuX3RlbXBfZmlsZXM7CkBAIC0xMDExLDYgKzEwMTIs NyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2NoZWNrc3VtX2ZhaWx1cmUodm9pZCk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90KGNvbnN0IFBnU3RhdF9TdGF0 UmVwbFNsb3RFbnRyeSAqcmVwU2xvdFN0YXQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9y dF9yZXBsc2xvdF9jcmVhdGUoY29uc3QgY2hhciAqc2xvdG5hbWUpOwogZXh0ZXJuIHZvaWQg cGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKTsKK2V4 dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRiT2lkKTsK IAogZXh0ZXJuIHZvaWQgcGdzdGF0X2luaXRpYWxpemUodm9pZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Nsb3QuaAppbmRleCAzNGQ5NWVhYzhlLi41YzA1MzdkYTc3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vc2xvdC5oCkBAIC0yMTQsNiArMjE0LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgUmVw bGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKTsKIGV4dGVybiBi b29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lkLCBpbnQgKm5zbG90 cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdHNEcm9wREJT bG90cyhPaWQgZGJvaWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJuIHZvaWQgSW52YWxp ZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFu c2FjdGlvbklkIHhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90ICpTZWFyY2hOYW1lZFJl cGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5lZWRfbG9jayk7CiBleHRl cm4gdm9pZCBSZXBsaWNhdGlvblNsb3ROYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9p ZCByZWxpZCwgY2hhciAqc3luY3Nsb3RuYW1lLCBpbnQgc3pzbG90KTsKIGV4dGVybiB2b2lk IFJlcGxpY2F0aW9uU2xvdERyb3BBdFB1Yk5vZGUoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4s IGNoYXIgKnNsb3RuYW1lLCBib29sIG1pc3Npbmdfb2spOwpAQCAtMjIzLDQgKzIyNCw2IEBA IGV4dGVybiB2b2lkIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogCiBleHRl cm4gdm9pZCBDaGVja1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiAKK2V4dGVybiB2b2lkIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90cyhPaWQgZGJvaWQsIFRyYW5z YWN0aW9uSWQgeGlkLCBjaGFyICpyZWFzb24pOworCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGVlYzE4NmJlMmUuLmY4NmIw NzBkYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC00MSw2ICs0MSw3IEBA IHR5cGVkZWYgZW51bQogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwK IAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVCwKKwlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxT TE9ULAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaAppbmRleCAzOGZkODVhNDMxLi4zYmExODgyMjE2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5k YnkuaApAQCAtMzAsOSArMzAsOSBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2Fj dGlvbkVudmlyb25tZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRy YW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhp ZCwKLQkJCQkJCQkJCQkJCVJlbEZpbGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJYm9vbCBv bkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9pZCBSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCi0JCQkJCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9k ZSk7CisJCQkJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUg bm9kZSk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNw YWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aERhdGFiYXNlKE9pZCBkYmlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAppbmRleCBlNWFiMTEyNzVkLi42NmYyOGI2NDlkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dApAQCAtMTg3MSw3ICsxODcxLDggQEAgcGdfc3RhdF9kYXRhYmFzZV9j b25mbGljdHN8IFNFTEVDVCBkLm9pZCBBUyBkYXRpZCwKICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9sb2NrKGQub2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X3NuYXBzaG90KGQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oZC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBp biwKLSAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lk KSBBUyBjb25mbF9kZWFkbG9jaworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0 dXBfZGVhZGxvY2soZC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KGQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAog ICAgRlJPTSBwZ19kYXRhYmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBzLnBpZCwK ICAgICBzLmdzc19hdXRoIEFTIGdzc19hdXRoZW50aWNhdGVkLAotLSAKMi4xOC40Cgo= --------------4C61D31BF656D9DC7EC6021C Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v20-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v20-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSAxODg2NGM4NGFmNTY0M2QyMDFjMjA1MmNjOWUxYzIwYjVkZWE4NzYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAxNiBKdWwgMjAyMSAwNjo1NDoyMiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjIwIDEvNV0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCgpXaGVuIGEgV0FMIHJlcGxheSBv biBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBi ZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xv dCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194 bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUg Y29uZmxpY3QuICBXaGlsZSBzdWJzZXF1ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFs IGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlzIGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCm9uQ2F0 YWxvZ1RhYmxlIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxv ZyB0YWJsZXMsCnNvIGFzIHRvIGFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRsaW5nLgoKQXV0 aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVr YXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFu ZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgICAgICAgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j ICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyAgIHwgIDggKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3RfcHJpdmF0ZS5oICAgICAgIHwgIDYgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaCAgICAgICAgICAgfCAgMyArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hs b2cuaCAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICB8ICA1ICsrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAg ICAgICAgfCAgMiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgIHwgIDkgKysrKysr KysrCiAxOSBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKICAxNy45JSBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC8KICAxMy4xJSBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC8KICAxNC41JSBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA4 LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3QvCiAgIDcuMiUgc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvCiAgMTkuNiUgc3JjL2luY2x1ZGUvYWNjZXNzLwogIDE2LjYlIHNyYy9pbmNs dWRlL3V0aWxzLwoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRleCAwNjgzZjQyYzI1Li5i NmU2MzQwYzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcg QEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RT VEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsK IAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdC dWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCBy ZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVB RiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJ CQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCBiYWFkMjhjMDlmLi42 ZDk0ODU0OGMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMjkw LDcgKzI5MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCVBhZ2UJCXBhZ2U7CiAKIAkJLyogaW5pdGlhbGl6 ZSB0aGUgcm9vdCBwYWdlICovCi0JCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaW5kZXgpOwor CQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXAsIGluZGV4KTsKIAkJQXNzZXJ0KEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikgPT0gR0lTVF9ST09UX0JMS05PKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKaW5kZXggNDNiYTAzYjZlYi4uMWQxZTIxMTEyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jCkBAIC04MjAsNyArODIwLDcgQEAgZ2lzdGNoZWNrcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYpCiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGluaXRp YWxpemluZyB0aGUgcGFnZSBieSBjYWxsaW5nIEdJU1RJbml0QnVmZmVyCiAgKi8KIEJ1ZmZl cgotZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQorZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBo ZWFwUmVsLCBSZWxhdGlvbiByKQogewogCUJ1ZmZlcgkJYnVmZmVyOwogCWJvb2wJCW5lZWRM b2NrOwpAQCAtODY0LDcgKzg2NCw3IEBAIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcikKIAkJ CQkgKiBwYWdlJ3MgZGVsZXRlWGlkLgogCQkJCSAqLwogCQkJCWlmIChYTG9nU3RhbmRieUlu Zm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHIpKQotCQkJCQlnaXN0WExvZ1BhZ2VS ZXVzZShyLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOworCQkJCQlnaXN0 WExvZ1BhZ2VSZXVzZShoZWFwUmVsLCByLCBibGtubywgR2lzdFBhZ2VHZXREZWxldGVYaWQo cGFnZSkpOwogCiAJCQkJcmV0dXJuIGJ1ZmZlcjsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCmluZGV4IDY0NjRjYjkyODEuLjQ2YWVlNmYyYTkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNTk2LDcgKzU5Niw4IEBAIGdpc3RYTG9nQXNz aWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRl bGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhp ZCkKK2dpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXBSZWwsIFJlbGF0aW9uIHJlbCwK KwkJCQkgIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1v dmVkWGlkKQogewogCWdpc3R4bG9nUGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02MDcs NiArNjA4LDcgQEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3YKIAkgKi8KIAogCS8qIFhM T0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7CiAJeGxyZWNfcmV1c2Uubm9k ZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLmxhdGVzdFJlbW92ZWRGdWxsWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCBkMjU0YTAwYjZhLi5jZTIyM2Iy YzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCkBAIC0zOTgsNiAr Mzk4LDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5vbkNh dGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJl bCk7CiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKIAkJ CXhscmVjLm50dXBsZXMgPSBuZGVsZXRhYmxlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCmluZGV4IDI0MzM5OThmMzkuLjQwMTlhMjEyMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC03OTQxLDYgKzc5NDEsNyBAQCBsb2dfaGVhcF9mcmVlemUoUmVsYXRp b24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAogCS8q IG5vciB3aGVuIHRoZXJlIGFyZSBubyB0dXBsZXMgdG8gZnJlZXplICovCiAJQXNzZXJ0KG50 dXBsZXMgPiAwKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5jdXRvZmZfeGlkID0gY3V0 b2ZmX3hpZDsKIAl4bHJlYy5udHVwbGVzID0gbnR1cGxlczsKIApAQCAtNzk3MSw3ICs3OTcy LDcgQEAgbG9nX2hlYXBfZnJlZXplKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBidWZmZXIsIFRy YW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKICAqIGhlYXBfYnVmZmVyLCBpZiBuZWNlc3Nhcnku CiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZU5vZGUgcm5vZGUs IEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIs CiAJCQkJIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwgdWludDggdm1mbGFncykKIHsKIAl4 bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBAIC03OTgxLDYgKzc5ODIsNyBAQCBsb2dfaGVhcF92 aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2 bV9idWZmZXIsCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZmZXIpKTsKIAlBc3Nl cnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxl ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCXhscmVj LmN1dG9mZl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKIAlY TG9nQmVnaW5JbnNlcnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggMTVjYTFiMzA0YS4uMDU5MGI3MDUzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTMyMyw2ICszMjMsNyBAQCBoZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0g cHJzdGF0ZS5sYXRlc3RSZW1vdmVkWGlkOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0 YXRlLm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOworCQkJ eGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nKHJlbGF0aW9uKTsKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVn aXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFBydW5lKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA0NzIwYjM1ZWU1Li5hMDQz MjZjMTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBA IC0yODIsNyArMjgyLDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHJlY3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQly ZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYs CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAog CQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRwYWdlLmMKaW5kZXggZWJlYzhmYTViOC4uMmQyN2EzZjk3NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNp bmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogCiBzdGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJl bCwgQnVmZmVyIG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRp YyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vLAogc3RhdGljIHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCiAJCQkJCQkJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJ CQkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJ CQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJ CVJlbGF0aW9uIGhlYXBSZWwpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUo QlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkg T2Zmc2V0TnVtYmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRi dWZsZW4sIGJvb2wgbmVlZHN3YWwpOwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNl Lm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRl eC0+aW5kcmVsaWQpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxy ZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVs bFhpZCA9IHNhZmV4aWQ7CkBAIC0xMjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFj dXVtKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRl bXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRl c3RSZW1vdmVkWGlkLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxl dGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJs ZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAor CQkJCQlSZWxhdGlvbiBoZWFwUmVsKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9i dF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlv bklkIGxhdGVzdFJlbW92ZWRYaWQsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJl ZV9kZWxldGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJs ZSA9CisJCQlSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwp OwogCQl4bHJlY19kZWxldGUubGF0ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7 CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0 ZS5udXBkYXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVs aXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24g aGVhcFJlbCwKIAogCS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNp bmcgZGVsZXRhYmxlIChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShy ZWwsIGJ1ZiwgbGF0ZXN0UmVtb3ZlZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJ CQkJdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJs ZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBu dXBkYXRhYmxlOyBpKyspCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpp bmRleCA3NmZiMDM3NGM0Li4zMTg2ODg1ZDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lu ZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMv c25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5 IGluIHBlbmRpbmctbGlzdCBvZiBUSURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAz LDYgKzUwNCwxMyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGlu ZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNl IG9mIGVuZGxlc3MgcmVjdXJzaW9uIGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZwor CSAqIGFjY2VzZXMgaGVyZTsgYmVjYXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNh dGFsb2dzLiBDaGVjaworCSAqIGNvbW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcoKS4KKwkgKi8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9y ZWxfbG9naWNhbF9jYXRhbG9nKGluZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxy ZWMublRvUGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggNmJiYTVmOGVjNC4uMjhiMWY5NjFmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5o IgogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3Mv bmJ0cmVlLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0 cmFwL2Jvb3RzdHJhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19hbS5oIgpAQCAtMjA2Miw2ICsyMDYzLDIwIEBAIGdldF9yZWxf cGVyc2lzdGVuY2UoT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dl dF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxh dGlvbiByZWw7CisKKwkvKiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKHJlbGlkLCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisK KwlyZXR1cm4gcmVzOworfQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hF IC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmlu ZGV4IDU1M2QzNjRlMmQuLmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2 YXRlLmgKQEAgLTQ0MCw4ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Bh Z2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4 aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25s aW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxh dGVzdFJlbW92ZWRYaWQpOworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRp b24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVy ICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4g Ym9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJv b2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJv b2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwg T2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBn aXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVy IGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZm ZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFn ZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBh Z2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51 bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5 OWRkYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBl ZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dEZWxldGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2Yg ZGVsZXRlZCBvZmZzZXRzICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0 b2RlbGV0ZSBPZmZzZXROdW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYg c3RydWN0IGdpc3R4bG9nUGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxv Z1BhZ2VSZXVzZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5v ZGU7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZEZ1bGxYaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4u OTRjMzI5MmMxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxv Z1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVw bGVzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDI3ZGI0ODE4NGUuLmVi YTQ4YjBhZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yNDIsNiArMjQy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1 Y3QgeGxfaGVhcF9wcnVuZQogeworCWJvb2wgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlUcmFu c2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1 aW50MTYJCW5kZWFkOwpAQCAtMzM4LDYgKzMzOSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hl YXBfZnJlZXplX3R1cGxlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3Bh Z2UKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGN1dG9mZl94 aWQ7CiAJdWludDE2CQludHVwbGVzOwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwpAQCAtMzUy LDYgKzM1NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKICAqLwog dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFi bGU7CiAJVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQ4CQlmbGFnczsKIH0geGxf aGVhcF92aXNpYmxlOwpAQCAtNDEzLDcgKzQxNiw3IEBAIGV4dGVybiBib29sIGhlYXBfcHJl cGFyZV9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICBi b29sICp0b3RhbGx5X2Zyb3plbik7CiBleHRlcm4gdm9pZCBoZWFwX2V4ZWN1dGVfZnJlZXpl X3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAgeGxfaGVhcF9mcmVl emVfdHVwbGUgKnhscmVjX3RwKTsKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9n UmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZm ZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsIFRyYW5zYWN0aW9uSWQgY3V0b2Zm X3hpZCwgdWludDggZmxhZ3MpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggMGY3NzMxODU2Yi4uYjE1YWE0N2YxYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiArMTg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg eGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFn ZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7 CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3Zl ZEZ1bGxYaWQ7CkBAIC0yMzIsNiArMjMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVf dmFjdXVtCiAKIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlbGV0ZQogeworCWJvb2wJCW9u Q2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50 MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApp bmRleCA2OTQwNWI1NzUwLi4wNmI5MWY0ZDA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAg LTIzNyw2ICsyMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAogCiB0 eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUmVkaXJlY3QKIHsKKwlib29sCQlvbkNhdGFs b2dUYWJsZTsKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBudW1iZXIgb2YgcmVkaXJl Y3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVtYmVyIGZpcnN0UGxhY2Vo b2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJlbW92ZSAqLwogCVRyYW5z YWN0aW9uSWQgbmV3ZXN0UmVkaXJlY3RYaWQ7CS8qIG5ld2VzdCBYSUQgb2YgcmVtb3ZlZCBy ZWRpcmVjdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNzc4NzFhYWVmYy4uZTJh NWVmZWQzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBl eHRlcm4gY2hhciBnZXRfcmVsX3JlbGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdl dF9yZWxfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90 YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBleHRlcm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNl KE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhPaWQg cmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBP aWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1f dG9zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4g Ym9vbCBnZXRfdHlwaXNkZWZpbmVkKE9pZCB0eXBpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGI0ZmFh MWMxMjMuLjY0OGFlYWNkNzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9n LmgiCiAKIAogLyoKQEAgLTM2NSw2ICszNjYsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9w dGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1cm5zIHdo ZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxvZyB0YWJs ZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBtdWx0aXBs ZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90IGlu dm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7IG90aGVy d2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUgY29tbWVu dHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKCkgZm9y IGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZShy ZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTY1Myw2ICs2 NTcsMTEgQEAgUmVsYXRpb25HZXRTbWdyKFJlbGF0aW9uIHJlbCkKICAqIFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcKICAqCQlUcnVlIGlmIHdlIG5lZWQgdG8gbG9n IGVub3VnaCBpbmZvcm1hdGlvbiB0byBoYXZlIGFjY2VzcyB2aWEKICAqCQlkZWNvZGluZyBz bmFwc2hvdC4KKyAqCQlUaGlzIGRlZmluaXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55dGhp bmcgdGhhdCBwZXJmb3JtcyBjYXRhbG9nCisgKgkJYWNjZXNzLiBPdGhlcndpc2UsIGUuZy4g bG9nZ2luZyBhIFdBTCBlbnRyeSBmb3IgY2F0YWxvZyByZWxhdGlvbiBtYXkKKyAqCQlpbnZv a2UgdGhpcyBmdW5jdGlvbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGRvIGNhdGFsb2cgYWNjZXNz LCB3aGljaCBtYXkKKyAqCQlpbiB0dXJuIGNhdXNlIGFub3RoZXIgc2ltaWxhciBXQUwgZW50 cnkgdG8gYmUgbG9nZ2VkLCBsZWFkaW5nIHRvCisgKgkJaW5maW5pdGUgcmVjdXJzaW9uLgog ICovCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAotLSAKMi4xOC40Cgo= --------------4C61D31BF656D9DC7EC6021C--