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 1pMpBR-0001CM-Oi for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Jan 2023 11:52:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pMpBQ-0007NZ-BE for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Jan 2023 11:52:16 +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 1pMpBP-0007NQ-Mj for pgsql-hackers@lists.postgresql.org; Tue, 31 Jan 2023 11:52:15 +0000 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pMpBJ-0006J5-UI for pgsql-hackers@postgresql.org; Tue, 31 Jan 2023 11:52:15 +0000 Received: by mail-wm1-x32f.google.com with SMTP id c4-20020a1c3504000000b003d9e2f72093so12253497wma.1 for ; Tue, 31 Jan 2023 03:52:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=A3Q40vdnGaVO4Bs8RWVJzWh0+4se6+UQZk0OJsRDBn8=; b=h4yPk5gmYhLbQ5FCAt8c70YAS4+Jy4qCyMT00/xJYq48oxdzq6jKuIOnEecECxuPT7 og+LWXBQ6Dp1vTRbKYnstCCnzWlz9l/M3YkowXYpwHmNqw2dbcbZSan+4HBi45pxxtNB mHOFIpqnGgGu9YLBhb2UIhOoy90w9qg4DPqb1DlvI98I8D/YWnGhCSi+fVPpIkwXafWs GpixH7f2qTBOBL/s4FGOftMBwRYPmS3HFtFmhAUCh8UEKIxU/UGMHC/I5p3ISMDvTEyD Fi2/pA9Q9ppI9NnSD7gOnkKDcBPWgDHC6ipx0UuMZsbnjzu89d9mxv9H2GeAPzl569Tg +vQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=A3Q40vdnGaVO4Bs8RWVJzWh0+4se6+UQZk0OJsRDBn8=; b=LFD4fCQ49gDmgRsi/a20DPvyaftloIfebqPBVj13nh2nMsGjemcZwiX/aEu0cG4Cxr o5+00Zre70lb77ym3PA97n7W1qcAFXMnRTKXGLrAXXs0dheylMX9Q74nZsYNBA8AZ/cD vKJk6aG0qOckAuAjE42eBU7Yhi2A+9Q6ixVg0afin2XIm/hSs6747KCQeiMB1jEEEZBe feB6nI0wI8JgQEcsjau9n12+FBvOXkMbB/tyBePSCJqptT5yF5MNomXbsNLQ3HMKGB9m C4uBajTeq+yffkE8KJBMuYdiYyJUnPHbObDLZhNihrYWbphs6YmnGIjLTN6Pl9h+ShbR n33w== X-Gm-Message-State: AO0yUKVjaVPr77eqw1iad0o3D7UtKEATAOGUwjc5730+X5GGHWDyxs8S irkmK2nlkfyatmVIiJxxwQs= X-Google-Smtp-Source: AK7set8HakmAKvTO364Ax0/KmH6N3lY0gJweG81kyKZBxAABkV3oo9Pw+uCfqNyfgEcGrOnclIADuQ== X-Received: by 2002:a05:600c:501e:b0:3db:2098:17c0 with SMTP id n30-20020a05600c501e00b003db209817c0mr1323722wmr.29.1675165927870; Tue, 31 Jan 2023 03:52:07 -0800 (PST) Received: from [192.168.13.91] ([54.239.6.189]) by smtp.gmail.com with ESMTPSA id bi24-20020a05600c3d9800b003d1d5a83b2esm18906390wmb.35.2023.01.31.03.52.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 31 Jan 2023 03:52:07 -0800 (PST) Content-Type: multipart/mixed; boundary="------------nRRAySwtIoCF0vZTqmhS34iC" Message-ID: <096259be-d8cf-e3c3-cfdc-81365d73b9b4@gmail.com> Date: Tue, 31 Jan 2023 12:50:50 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US To: Andres Freund , Robert Haas , Thomas Munro Cc: Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <20221214173552.sshklqvwezeo52h3@alap3.anarazel.de> <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> From: "Drouvot, Bertrand" In-Reply-To: <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/6/23 4:40 AM, Andres Freund wrote: > Hi, > On 2023-01-05 16:15:39 -0500, Robert Haas wrote: >> On Tue, Jan 3, 2023 at 2:42 AM Drouvot, Bertrand >> wrote: > 0006: > >> diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c >> index bc3c3eb3e7..98c96eb864 100644 >> --- a/src/backend/access/transam/xlogrecovery.c >> +++ b/src/backend/access/transam/xlogrecovery.c >> @@ -358,6 +358,9 @@ typedef struct XLogRecoveryCtlData >> RecoveryPauseState recoveryPauseState; >> ConditionVariable recoveryNotPausedCV; >> >> + /* Replay state (see getReplayedCV() for more explanation) */ >> + ConditionVariable replayedCV; >> + >> slock_t info_lck; /* locks shared variables shown above */ >> } XLogRecoveryCtlData; >> > > getReplayedCV() doesn't seem to fit into any of the naming scheems in use for > xlogrecovery.h. Changed to check_for_replay() in V46 attached. >> - * Sleep until something happens or we time out. Also wait for the >> - * socket becoming writable, if there's still pending output. >> + * When not in recovery, sleep until something happens or we time out. >> + * Also wait for the socket becoming writable, if there's still pending output. > > Hm. Is there a problem with not handling the becoming-writable case in the > in-recovery case? > > Yes, when not in recovery we'd wait for the timeout to occur in ConditionVariableTimedSleep() (as the CV is broadcasted only in ApplyWalRecord()). >> + else >> + /* >> + * We are in the logical decoding on standby case. >> + * We are waiting for the startup process to replay wal record(s) using >> + * a timeout in case we are requested to stop. >> + */ >> + { > > I don't think pgindent will like that formatting.... Oops, fixed. > > >> + ConditionVariablePrepareToSleep(replayedCV); >> + ConditionVariableTimedSleep(replayedCV, 1000, >> + WAIT_EVENT_WAL_SENDER_WAIT_REPLAY); >> + } > > I think this is racy, see ConditionVariablePrepareToSleep()'s comment: > > * Caution: "before entering the loop" means you *must* test the exit > * condition between calling ConditionVariablePrepareToSleep and calling > * ConditionVariableSleep. If that is inconvenient, omit calling > * ConditionVariablePrepareToSleep. > > Basically, the ConditionVariablePrepareToSleep() should be before the loop > body. > I missed it, thanks! Moved it before the loop body. > > I don't think the fixed timeout here makes sense. For one, we need to wake up > based on WalSndComputeSleeptime(), otherwise we're ignoring wal_sender_timeout > (which can be quite small). Good point. Making use of WalSndComputeSleeptime() instead in V46. > It's also just way too frequent - we're trying to > avoid constantly waking up unnecessarily. > > > Perhaps we could deal with the pq_is_send_pending() issue by having a version > of ConditionVariableTimedSleep() that accepts a WaitEventSet? > What issue do you see? The one that I see with V46 (keeping the in/not recovery branches) is that one may need to wait for wal_sender_timeout to see changes that occurred right after the promotion. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v46-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OTZlZmRmYjBjNGQzNjdhN2VjNGQ0MzNhOTExMWMwOWNhZDc2OWY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAxMDoxMTo0MCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjJlOGJlZTAzM2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAg IFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90 aGluZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v46-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBmNmRiZjc5YTEzN2M2MThjM2RmYTBiZGQ1NjhmNjY4NjZhODhmY2ZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAxMDowMzo1MCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzkgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDY2NSArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNzA1IGluc2Vy dGlvbnMoKykKICAgNC45JSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA5NC44 JSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9DbHVzdGVyLnBtCmluZGV4IDA0OTIxY2EzYTMuLmZkODFkZGNmMzkgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMzAzNyw2ICszMDM3LDQ1 IEBAICRTSUd7VEVSTX0gPSAkU0lHe0lOVH0gPSBzdWIgewogCiA9cG9kCiAKKz1pdGVtICRu b2RlLT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoc2VsZiwgcHJpbWFyeSwgc2xv dF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24g Z2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkKK3sKKwlteSAoJHNlbGYsICRwcmltYXJ5LCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9 IEBfOworCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFu ZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+ Y29ubnN0cigkZGJuYW1lKSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9u YW1lLCAnLS1jcmVhdGUtc2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7 CisKKwkjIE9uY2Ugc2xvdCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBs b29rcyBmb3IgeGxfcnVubmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0 YXJ0X2xzbiBvbndhcmRzLiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyBy ZXN0YXJ0X2xzbiBpcyBldmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgK KwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAor CQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1l ID0gJyRzbG90X25hbWUnCisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9n aWNhbCBzbG90IHRvIGNhbGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJy YW5nZSBmb3IgdGhlIHhsX3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2 bG9naWNhbAorCSMgaXMgd2FpdGluZy4KKwkjIE5vdGU6IFdyaXRlIGEgQyBoZWxwZXIgZnVu Y3Rpb24gdG8gY2FsbCBMb2dTdGFuZGJ5U25hcHNob3QoKSBpbnN0ZWFkCisJIyBvZiBhc2tp bmcgZm9yIGEgY2hlY2twb2ludC4KKwkkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdDSEVDS1BPSU5UJyk7CisKKwkkaGFuZGxlLT5maW5pc2goKTsKKworCWlzKCRzZWxmLT5z bG90KCRzbG90X25hbWUpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsICRzbG90X25hbWUg LiAnIG9uIHN0YW5kYnkgY3JlYXRlZCcpCisJCW9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSBz bG90IiAuICRzbG90X25hbWU7Cit9CisKKz1wb2QKKwogPWJhY2sKIAogPWN1dApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZAppbmRleCAyMDkxMThhNjM5Li5lY2E5MGM1YzhjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZApAQCAtMzksNiArMzksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MzFfcmVjb3ZlcnlfY29uZmxpY3QucGwnLAogICAgICAgJ3QvMDMyX3JlbGZpbGVub2RlX3Jl dXNlLnBsJywKICAgICAgICd0LzAzM19yZXBsYXlfdHNwX2Ryb3BzLnBsJywKKyAgICAgICd0 LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAogICAgIF0sCiAgIH0sCiB9CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjkwMTcw ZGFhYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDY2NSBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5 IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA2MjsKKworbXkg KCRzdGRpbiwgJHN0ZG91dCwgJHN0ZGVyciwgJHJldCwgJGhhbmRsZSwgJHNsb3QpOworCitt eSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmlt YXJ5Jyk7CitteSAkbm9kZV9zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVmYXVsdF90aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CitteSAkcmVzOworCisjIE5hbWUgZm9yIHRo ZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0gJ3By aW1hcnlfcGh5c2ljYWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFm dGVyICRvZmYtdGggYnl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0 LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAk bG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2Zp bGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0g c3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKwor IyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMg cm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBi ZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3Vi IHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHBy KSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFx WworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0 aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisK KyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIg Y3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNh bF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0ZXN0 ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnko JG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJvcCB0 aGUgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90cwor eworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9y ZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnktPnBz cWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3Rp dmVzbG90JyldKTsKK30KKworIyBBY3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2Fs IHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3 YWl0IGlzIHRydWUgd2UgYXJlIHdhaXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdh Y3RpdmVzbG90JyBzbG90LgorIyBJZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFy ZSB0ZXN0aW5nIGEga25vd24gZmFpbHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0 aXZlCit7CisJbXkgJHdhaXQgPSBzaGlmdDsKKwlteSAkc2xvdF91c2VyX2hhbmRsZTsKKwor CSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwn LCAnLWQnLCAkbm9kZV9zdGFuZGJ5LT5jb25uc3RyKCd0ZXN0ZGInKSwgJy1TJywgJ2FjdGl2 ZXNsb3QnLCAnLW8nLCAnaW5jbHVkZS14aWRzPTAnLCAnLW8nLCAnc2tpcC1lbXB0eS14YWN0 cz0xJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0JywgJy1mJywgJy0nXSwgJz4nLCBcJHN0ZG91 dCwgJzI+JywgXCRzdGRlcnIpOworCisJaWYgKCR3YWl0KQorCXsKKwkJIyBtYWtlIHN1cmUg YWN0aXZlc2xvdCBpcyBpbiB1c2UKKwkJJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRp bCgndGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxp Y2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZl X3BpZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3Rp dmUiOworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hlY2sgcGdf cmVjdmxvZ2ljYWwgc3RkZXJyCitzdWIgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyCit7 CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlLCAkY2hlY2tfc3RkZXJyKSA9IEBfOworCW15ICRy ZXR1cm47CisKKwkjIG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9u c2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7 CisJJHJldHVybiA9ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxv Z2ljYWwgZXhpdGVkIG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3Rk ZXJyLCBxci8kY2hlY2tfc3RkZXJyLywgJ3Nsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQnKTsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0 YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0 aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFj dGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJbXkg KCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgn aW5hY3RpdmVzbG90JyktPnsnc2xvdF90eXBlJ30sICcnLCAnaW5hY3RpdmVzbG90IG9uIHN0 YW5kYnkgZHJvcHBlZCcpOworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3Qn KS0+eydzbG90X3R5cGUnfSwgJycsICdhY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcp OworCisJY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRzbG90X3VzZXJfaGFuZGxlLCAi Y29uZmxpY3Qgd2l0aCByZWNvdmVyeSIpOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xv dHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNs b3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRo ZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9m ZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJGhzZiwgJGludmFsaWRhdGVk KSA9IEBfOworCisJJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicscXFbCisJaG90X3N0YW5kYnlfZmVlZGJhY2sgPSAkaHNmCisJXSk7CisKKwkkbm9kZV9z dGFuZGJ5LT5yZWxvYWQ7CisKKwlpZiAoJGhzZiAmJiAkaW52YWxpZGF0ZWQpCisJeworCQkj IFdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisJ CSMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhl cmUgaXMgbm8gbG9naWNhbCBzbG90LgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5 LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRh bG9nX3htaW4gSVMgTlVMTCIpOworCX0KKwllbHNpZiAoJGhzZikKKwl7CisJCSMgV2l0aCBo b3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIHNob3VsZCBh ZHZhbmNlLgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90 bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9U IE5VTEwiKTsKKwl9CisJZWxzZQorCXsKKwkJIyBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNl IGhzX2ZlZWRiYWNrIGlzIG9mZgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAk cHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1p biBJUyBOVUxMIik7CisKKwl9Cit9CisKKyMgQ2hlY2sgY29uZmxpY3Rpbmcgc3RhdHVzIGlu IHBnX3JlcGxpY2F0aW9uX3Nsb3RzLgorc3ViIGNoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0 YXR1cworeworCW15ICgkY29uZmxpY3RpbmcpID0gQF87CisKKwlpZiAoJGNvbmZsaWN0aW5n KQorCXsKKwkJJHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdy ZXMnLCBxcSgKKwkJCQkgc2VsZWN0IGJvb2xfYW5kKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3Jl cGxpY2F0aW9uX3Nsb3RzOykpOworCisJCWlzKCRyZXMsICd0JywKKwkJCSJMb2dpY2FsIHNs b3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyIpOworCX0KKwllbHNlCisJeworCQkk cmVzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3JlcycsIHFxKAor CQkJCXNlbGVjdCBib29sX29yKGNvbmZsaWN0aW5nKSBmcm9tIHBnX3JlcGxpY2F0aW9uX3Ns b3RzOykpOworCisJCWlzKCRyZXMsICdmJywKKwkJCSJMb2dpY2FsIHNsb3RzIGFyZSByZXBv cnRlZCBhcyBub24gY29uZmxpY3RpbmciKTsKKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBo YXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlv bl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAn ZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJp bWFyeS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1h cnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19j cmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtd KTsKKworIyBDaGVjayBjb25mbGljdGluZyBpcyBOVUxMIGZvciBwaHlzaWNhbCBzbG90Cisk cmVzID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJ IFNFTEVDVCBjb25mbGljdGluZyBpcyBudWxsIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMg d2hlcmUgc2xvdF9uYW1lID0gJyRwcmltYXJ5X3Nsb3RuYW1lJztdKTsKKworaXMoJHJlcywg J3QnLAorCSJQaHlzaWNhbCBzbG90IHJlcG9ydHMgY29uZmxpY3RpbmcgYXMgTlVMTCIpOwor CitteSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNr dXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgc3Rh bmRieSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiskbm9kZV9zdGFuZGJ5LT5p bml0X2Zyb21fYmFja3VwKAorCSRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNf c3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnkt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1l ID0gJyRwcmltYXJ5X3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7Ciskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhhdCBsb2dpY2FsIGRl Y29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29ycmVjdGx5LgorIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBjcmVhdGUg dGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rl c3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLCBxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6 OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcztdKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworbXkgJHJlc3VsdCA9ICRub2RlX3N0YW5kYnktPnNh ZmVfcHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCk7XSk7CisKKyMgdGVzdCBpZiBiYXNpYyBk ZWNvZGluZyB3b3JrcworaXMoc2NhbGFyKG15IEBmb29iYXIgPSBzcGxpdCAvXi9tLCAkcmVz dWx0KSwKKwkxNCwgJ0RlY29kaW5nIHByb2R1Y2VkIDE0IHJvd3MgKDIgQkVHSU4vQ09NTUlU IGFuZCAxMCByb3dzKScpOworCisjIEluc2VydCBzb21lIHJvd3MgYW5kIHZlcmlmeSB0aGF0 IHdlIGdldCB0aGUgc2FtZSByZXN1bHRzIGZyb20gcGdfcmVjdmxvZ2ljYWwKKyMgYW5kIHRo ZSBTUUwgaW50ZXJmYWNlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworbXkgJGV4cGVjdGVkID0gcXtC RUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTox IHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2lu dGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNF UlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rl c3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01NSVR9OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitteSAkc3Rkb3V0X3NxbCA9ICRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKwor aXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBT UUwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCitteSAkZW5kcG9zID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLAorCSJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90 X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBE RVNDIExJTUlUIDE7IgorKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGFmdGVyICRlbmRwb3Ms IHdoaWNoIHdlIHdvbid0IHJlYWQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0 ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNTApIHM7XQorKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworbXkgJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRi eS0+cGdfcmVjdmxvZ2ljYWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAk ZW5kcG9zLCAkZGVmYXVsdF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAn MCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3Jl Y3YpOworaXMoJHN0ZG91dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVj dGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKwor JG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVY SVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25h bWUgPSAnYWN0aXZlc2xvdCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAi c2xvdCBuZXZlciBiZWNhbWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9z dGFuZGJ5LT5wZ19yZWN2bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xv dCcsICRlbmRwb3MsICRkZWZhdWx0X3RpbWVvdXQsCisgICAgJ2luY2x1ZGUteGlkcycgICAg ID0+ICcwJywKKyAgICAnc2tpcC1lbXB0eS14YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRv dXRfcmVjdik7Citpcygkc3Rkb3V0X3JlY3YsICcnLCAncGdfcmVjdmxvZ2ljYWwgYWNrbm93 bGVkZ2VkIGNoYW5nZXMnKTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdDUkVBVEUgREFUQUJBU0Ugb3RoZXJkYicpOworCitpcyggJG5vZGVfcHJpbWFyeS0+ cHNxbCgKKyAgICAgICAgJ290aGVyZGInLAorICAgICAgICAiU0VMRUNUIGxzbiBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBP UkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyAgICApLAorICAgIDMsCisgICAgJ3JlcGxh eWluZyBsb2dpY2FsIHNsb3QgZnJvbSBhbm90aGVyIGRhdGFiYXNlIGZhaWxzJyk7CisKKyMg ZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292 ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcg aW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDE6IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZiBh bmQgdmFjdXVtIEZVTEwKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9n aWNhbF9zbG90cygpOworCisjIE9uZSB3YXkgdG8gcHJvZHVjZSByZWNvdmVyeSBjb25mbGlj dCBpcyB0byBjcmVhdGUvZHJvcCBhIHJlbGF0aW9uIGFuZAorIyBsYXVuY2ggYSB2YWN1dW0g ZnVsbCBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYg b24KKyMgdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dh aXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOwor CisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50 ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywg cXFbRFJPUCBUQUJMRSBjb25mbGljdF90ZXN0O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLCAnVkFDVVVNIGZ1bGwgcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitv ayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNs b3QgXCJpbmFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5 IiksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGgg dmFjdXVtIEZVTEwgb24gcGdfY2xhc3MnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBp bnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIEZVTEwgb24gcGdfY2xhc3MnKTsK KworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3Rp dmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorb2soICRub2RlX3N0YW5kYnktPnBv bGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVf bG9naWNhbHNsb3QgPSAxKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJl IGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRl ZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNf Y29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgw KTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMg YmVlbiBpbnZhbGlkYXRlZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUs ICJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNs b3RcIiIpOworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorY2hhbmdl X2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLDEpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNv dmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5n IGluLXVzZSBzbG90cworIyBTY2VuYXJpbyAyOiBjb25mbGljdCBkdWUgdG8gcm93IHJlbW92 YWwgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYuCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRpb24g dG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorbXkgJGxvZ3N0YXJ0ID0g LXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3Rz Citkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMK K2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292 ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5j aCBhIHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5l ZCBvZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5k X3dhaXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEp OworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHgg aW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbRFJPUCBUQUJMRSBjb25mbGljdF90ZXN0O10pOworJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIHBnX2NsYXNzOycpOworCiskbm9kZV9wcmltYXJ5 LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmlt YXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2so IGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90 IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs ICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9n Z2VkIHdpdGggdmFjdXVtIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAg ICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBi ZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwKKyAgJ2Fj dGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIHBn X2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMu Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4 cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9z cyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBn X3JlcGxpY2F0aW9uX3Nsb3RzCitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworCisjIFdlIGFyZSBub3QgYWJs ZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2No ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBs b2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IFNhbWUgYXMgU2NlbmFyaW8gMiBidXQgb24gYSBub24gY2F0YWxvZyB0YWJs ZQorIyBTY2VuYXJpbyAzOiBObyBjb25mbGljdCBleHBlY3RlZC4KKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3Np dGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQg PSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xv dHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90 cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBwdXQgaG90IHN0YW5kYnkgZmVlZGJh Y2sgdG8gb2ZmCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3ht aW5zKDAsMSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMg c2hvdWxkIG5vdCB0cmlnZ2VyIGEgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNF UlQgSU5UTyBjb25mbGljdF90ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSw0KSBzO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLCBxcVtVUERBVEUgY29uZmxpY3RfdGVzdCBzZXQgeD0xLCB5PTE7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gY29uZmxpY3RfdGVzdDsnKTsK KworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVw bGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3Vs ZCBub3QgYmUgaXNzdWVkCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xv dCBpbnZhbGlkYXRpb24gaXMgbm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90 ZXN0Jyk7CisKK29rKCAhZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52 YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0 aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0 aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCisj IFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdCBoYXMgbm90IGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgc3RpbGwgZXhwZWN0 IDIgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJl bG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jl cycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19z dGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcp LAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qgbm90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworIyBWZXJpZnkgc2xvdHMgYXJlIHJlcG9ydGVkIGFzIG5vbiBjb25mbGljdGluZyBp biBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVz KDApOworCisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorY2hhbmdlX2hv dF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygxLCAwKTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zl cnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBp bi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gNDogY29uZmxpY3QgZHVlIHRvIG9uLWFjY2VzcyBw cnVuaW5nLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFu ZGJ5IGxvZ2ZpbGUKKyRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisK KyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMg Y3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCisj IE9uZSB3YXkgdG8gcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0byB0cmlnZ2VyIGFu IG9uLWFjY2VzcyBwcnVuaW5nCisjIG9uIGEgcmVsYXRpb24gbWFya2VkIGFzIHVzZXJfY2F0 YWxvZ190YWJsZS4KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3Jf eG1pbnMoMCwwKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgVGhp cyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIHBydW4oaWQgaW50ZWdlciwgcyBjaGFyKDIw MDApKSBXSVRIIChmaWxsZmFjdG9yID0gNzUsIHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUp O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNFUlQgSU5U TyBwcnVuIFZBTFVFUyAoMSwgJ0EnKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnQic7XSk7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0MnO10pOwor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQg cyA9ICdEJztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBE QVRFIHBydW4gU0VUIHMgPSAnRSc7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitvayggZmluZF9pbl9sb2co CisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJpbmFjdGl2ZXNs b3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxvZ3N0YXJ0KSwK KyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1h Y2Nlc3MgcHJ1bmluZycpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5 LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIG9uLWFjY2VzcyBwcnVuaW5nJyk7CisKKyMg VmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4cGVjdCAzIGNvbmZsaWN0 cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZWxvYWRzCitvaygg JG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxl Y3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDMpIGZyb20gcGdfc3RhdF9kYXRhYmFz ZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5n IGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKKworIyBWZXJpZnkg c2xvdHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIGluIHBnX3JlcGxpY2F0aW9uX3Ns b3RzCitjaGVja19zbG90c19jb25mbGljdGluZ19zdGF0dXMoMSk7CisKKyRoYW5kbGUgPSBt YWtlX3Nsb3RfYWN0aXZlKDApOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20g dGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dp Y2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRi YWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3Jf eG1pbnMoMSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0 aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29y cmVjdCB3YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFy Y2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9z dGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9n aWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMg TWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90 IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0 YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnks ICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ug c2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xv dCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZp bmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwi YWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9n c3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVl IHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdl IG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lz dCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwo CisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSA0 KSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVz dGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3Ig ZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUg dXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGlu ZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3Rh dHVzKDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5v dCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwg YXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIKK2NoZWNrX3BnX3JlY3Zs b2dpY2FsX3N0ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJl cXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5 IHNlcnZlciIpOworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1h cnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKK10pOworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBh cyB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUg dG8gcmVhZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0 aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxfc2xv dHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Ns b3RzKCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworIyBDcmVhdGUgYSBz bG90IG9uIGEgZGF0YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90 IHNob3VsZCBub3QKKyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9n aWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0 Z3JlcycpOworCisjIGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJl IGRyb3BwZWQgb24gc3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFbRFJPUCBEQVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9m b3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNu KCdmbHVzaCcpKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcVtTRUxFQ1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0 bmFtZSA9ICd0ZXN0ZGInKV0pLCAnZicsCisJJ2RhdGFiYXNlIGRyb3BwZWQgb24gc3RhbmRi eScpOworCitjaGVja19zbG90c19kcm9wcGVkKCRoYW5kbGUpOworCitpcygkbm9kZV9zdGFu ZGJ5LT5zbG90KCdvdGhlcnNsb3QnKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLAorCSdv dGhlcnNsb3Qgb24gc3RhbmRieSBub3QgZHJvcHBlZCcpOworCisjIENsZWFudXAgOiBtYW51 YWxseSBkcm9wIHRoZSBzbG90IHRoYXQgd2FzIG5vdCBkcm9wcGVkLgorJG5vZGVfc3RhbmRi eS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3Qo J290aGVyc2xvdCcpXSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qgc3RhbmRieSBwcm9tb3Rpb24gYW5kIGxvZ2ljYWwg ZGVjb2RpbmcgYmVoYXZpb3IKKyMgYWZ0ZXIgdGhlIHN0YW5kYnkgZ2V0cyBwcm9tb3RlZC4K KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgcmVkdWNlIHdhbF9zZW5kZXJfdGltZW91dCB0byBub3Qgd2FpdCB0b28gbG9uZyBhZnRl ciBwcm9tb3Rpb24KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFxWworCXdhbF9zZW5kZXJfdGltZW91dCA9IDFzCitdKTsKKworJG5vZGVfc3RhbmRi eS0+cmVsb2FkOworCiskbm9kZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRF IERBVEFCQVNFIHRlc3RkYl0pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LCBxcVtDUkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7 CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygp OworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgSW5zZXJ0IHNvbWUgcm93 cyBiZWZvcmUgdGhlIHByb21vdGlvbgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6 dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBwcm9tb3RlCiskbm9kZV9zdGFuZGJ5LT5wcm9t b3RlOworCisjIGluc2VydCBzb21lIHJvd3Mgb24gcHJvbW90ZWQgc3RhbmRieQorJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5n X3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDcp IHM7XQorKTsKKworJGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOicz JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlb dGV4dF06JzQnCitDT01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDog SU5TRVJUOiB4W2ludGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2JwordGFibGUgcHVibGlj LmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4dF06JzcnCitDT01N SVR9OworCisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9t b3Rpb24gaW5zZXJ0ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3Rf cGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRz JywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9z cWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcg c2Vzc2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUg ZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCByb3dzCisjIHdpdGgg cGdfcmVjdmxvZ2ljYWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByb21vdGlvbgor bXkgJHB1bXBfdGltZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGlsKAorICAgICAgICAk aGFuZGxlLCAkcHVtcF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09NTUlULipDT01NSVQk L3MpLAorICAgICdnb3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNhbCBvdXRwdXQnKTsK KworY2hvbXAoJHN0ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBz YW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Np b24nKTsKLS0gCjIuMzQuMQoK --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v46-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZGI4NzdkNmE3ODAwNjViMjU4MjQwMDhiOTQxYmE2ZGFhNTE5M2VlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAxMDowMjozNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgIHwgMzQg KysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyAgIHwgIDMgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3Zlcnku aCAgICAgICAgIHwgIDMgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5o ICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAg ICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCiAgNDMuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDYuMSUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuOCUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvCiAgIDMuNyUgc3JjL2luY2x1ZGUvYWNjZXNzLwogICAzLjElIHNyYy9pbmNsdWRlLwoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMmE1 MzUyZjg3OS4uMzBkZGRkYTVmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3JlY292ZXJ5LmMKQEAgLTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9n UmVjb3ZlcnlDdGxEYXRhCiAJUmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0 ZTsKIAlDb25kaXRpb25WYXJpYWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVw bGF5IHN0YXRlIChzZWUgY2hlY2tfZm9yX3JlcGxheSgpIGZvciBtb3JlIGV4cGxhbmF0aW9u KSAqLworCUNvbmRpdGlvblZhcmlhYmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZv X2xjazsJCS8qIGxvY2tzIHNoYXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExv Z1JlY292ZXJ5Q3RsRGF0YTsKIApAQCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNo bWVtSW5pdCh2b2lkKQogCVNwaW5Mb2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xj ayk7CiAJSW5pdFNoYXJlZExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVw TGF0Y2gpOwogCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNv dmVyeU5vdFBhdXNlZENWKTsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CiB9CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBw bHlXYWxSZWNvcmQoWExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpy ZWNvcmQsIFRpbWVMaW5lSUQgKnJlcGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXll ZFRMSSA9ICpyZXBsYXlUTEk7CiAJU3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwt PmluZm9fbGNrKTsKIAorCS8qCisJICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVC cm9hZGNhc3QoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElm IHJtX3JlZG8gY2FsbGVkIFhMb2dSZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3 YWtlIHVwIHRoZQogCSAqIHJlY2VpdmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRl ZCBsYXN0UmVwbGF5ZWRFbmRSZWNQdHIgYW5kIHNlbmRzCkBAIC00OTIzLDMgKzQ5MzIsMjIg QEAgYXNzaWduX3JlY292ZXJ5X3RhcmdldF94aWQoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lk ICpleHRyYSkKIAllbHNlCiAJCXJlY292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1VO U0VUOwogfQorCisvKgorICogUmV0dXJuIHRoZSBDb25kaXRpb25WYXJpYWJsZSBpbmRpY2F0 aW5nIHRoYXQgYSByZXBsYXkgaGFzIGJlZW4gZG9uZS4KKyAqCisgKiBUaGlzIGlzIG5lZWRl ZCBmb3IgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LiBJbmRlZWQgdGhlICJwcm9ibGVt IiBpcyB0aGF0CisgKiBXYWxTbmRXYWl0Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5 KiBMU04gdG8gaW5jcmVhc2UsIGJ1dCBnZXRzIHdva2VuIHVwCisgKiBieSB3YWxyZWNlaXZl ciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4gZmx1c2hlZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBp Y2FsbHkKKyAqIHdhbHNlbmRlcnMgd2lsbCBnZXQgd29rZW4gdXAgYXQgdGhlIHNhbWUgdGlt ZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MKKyAqIHdpbGwgYmUgLSB3aGljaCBtZWFucyB0 aGF0IGJ5IHRoZSB0aW1lIHRoZSBsb2dpY2FsIHdhbHNlbmRlciBjaGVja3MKKyAqIEdldFhM b2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2Vz cyBhbHJlYWR5IHJlcGxheWVkCisgKiB0aGUgcmVjb3JkIGFuZCB1cGRhdGVkIFhMb2dDdGwt Pmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KKyAqCisgKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUg WExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWIHNvbHZlcyB0aGlzIGNvcm5lciBjYXNlLgor ICovCitDb25kaXRpb25WYXJpYWJsZSAqCitjaGVja19mb3JfcmVwbGF5KHZvaWQpCit7CisJ cmV0dXJuICZYTG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Y7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDFlOTFjYmM1NjQuLjNmYzdiNDJkMTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogewogCWludAkJCXdha2VFdmVudHM7 CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVjZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKKwlDb25kaXRpb25WYXJpYWJsZSAqcmVwbGF5ZWRDViA9IGNoZWNrX2Zvcl9yZXBsYXko KTsKIAogCS8qCiAJICogRmFzdCBwYXRoIHRvIGF2b2lkIGFjcXVpcmluZyB0aGUgc3Bpbmxv Y2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cgd2UKQEAgLTE1NjYsMTAgKzE1NjcsMTUgQEAg V2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpKQogCQlSZWNlbnRGbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwogCWVs c2UKKwl7CiAJCVJlY2VudEZsdXNoUHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsK KwkJLyogUHJlcGFyZSB0aGUgcmVwbGF5ZWRDViB0byBzbGVlcCAqLworCQlDb25kaXRpb25W YXJpYWJsZVByZXBhcmVUb1NsZWVwKHJlcGxheWVkQ1YpOworCX0KIAogCWZvciAoOzspCiAJ eworCiAJCWxvbmcJCXNsZWVwdGltZTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5k aW5nIHdha2V1cHMgKi8KQEAgLTE2NTMsMjEgKzE2NTksMzMgQEAgV2FsU25kV2FpdEZvcldh bChYTG9nUmVjUHRyIGxvYykKIAkJLyogU2VuZCBrZWVwYWxpdmUgaWYgdGhlIHRpbWUgaGFz IGNvbWUgKi8KIAkJV2FsU25kS2VlcGFsaXZlSWZOZWNlc3NhcnkoKTsKIAorCQlzbGVlcHRp bWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7CiAJ CS8qCi0JCSAqIFNsZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0 LiAgQWxzbyB3YWl0IGZvciB0aGUKLQkJICogc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBp ZiB0aGVyZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgorCQkgKiBXaGVuIG5vdCBpbiByZWNv dmVyeSwgc2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuCisJ CSAqIEFsc28gd2FpdCBmb3IgdGhlIHNvY2tldCBiZWNvbWluZyB3cml0YWJsZSwgaWYgdGhl cmUncyBzdGlsbCBwZW5kaW5nIG91dHB1dC4KIAkJICogT3RoZXJ3aXNlIHdlIG1pZ2h0IHNp dCBvbiBzZW5kYWJsZSBvdXRwdXQgZGF0YSB3aGlsZSB3YWl0aW5nIGZvcgogCQkgKiBuZXcg V0FMIHRvIGJlIGdlbmVyYXRlZC4gIChCdXQgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIHNlbmQs IHdlIGRvbid0CiAJCSAqIHdhbnQgdG8gd2FrZSBvbiBzb2NrZXQtd3JpdGFibGUuKQogCQkg Ki8KLQkJc2xlZXB0aW1lID0gV2FsU25kQ29tcHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGlt ZXN0YW1wKCkpOwotCi0JCXdha2VFdmVudHMgPSBXTF9TT0NLRVRfUkVBREFCTEU7CisJCWlm ICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCXsKKwkJCXdha2VFdmVudHMgPSBXTF9TT0NL RVRfUkVBREFCTEU7CiAKLQkJaWYgKHBxX2lzX3NlbmRfcGVuZGluZygpKQotCQkJd2FrZUV2 ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJaWYgKHBxX2lzX3NlbmRfcGVuZGlu ZygpKQorCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dSSVRFQUJMRTsKIAotCQlXYWxT bmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9FVkVOVF9XQUxfU0VOREVSX1dB SVRfV0FMKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VW RU5UX1dBTF9TRU5ERVJfV0FJVF9XQUwpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJ CSAqIFdlIGFyZSBpbiB0aGUgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGNhc2UuCisJ CQkgKiBXZSBhcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byByZXBsYXkg d2FsIHJlY29yZChzKSB1c2luZworCQkJICogYSB0aW1lb3V0IGluIGNhc2Ugd2UgYXJlIHJl cXVlc3RlZCB0byBzdG9wLgorCQkJICovCisJCQlDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xl ZXAocmVwbGF5ZWRDViwgc2xlZXB0aW1lLAorCQkJCQkJCQkJCVdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWSk7CisJCX0KIAl9CiAKIAkvKiByZWFjdGl2YXRlIGxhdGNoIHNv IFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA2ZTQ1OTkyNzhjLi4zOGM3NDdiNzg2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC00NjMsNiArNDYz LDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlU X0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJUOgogCQkJZXZlbnRfbmFtZSA9ICJXYWxS ZWNlaXZlcldhaXRTdGFydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX1dBTF9T RU5ERVJfV0FJVF9SRVBMQVk6CisJCQlldmVudF9uYW1lID0gIldhbFJlY2VpdmVyV2FpdFJl cGxheSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1hBQ1RfR1JPVVBfVVBEQVRF OgogCQkJZXZlbnRfbmFtZSA9ICJYYWN0R3JvdXBVcGRhdGUiOwogCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKaW5kZXggNDdjMjkzNTBmNS4uMmJmZWFhYTAwZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaApAQCAtMTUsNiArMTUsNyBAQAogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZv LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAic3RvcmFnZS9j b25kaXRpb25fdmFyaWFibGUuaCIKIAogLyoKICAqIFJlY292ZXJ5IHRhcmdldCB0eXBlLgpA QCAtMTU1LDQgKzE1Niw2IEBAIGV4dGVybiB2b2lkIFJlY292ZXJ5UmVxdWlyZXNJbnRQYXJh bWV0ZXIoY29uc3QgY2hhciAqcGFyYW1fbmFtZSwgaW50IGN1cnJWYWx1ZSwKIAogZXh0ZXJu IHZvaWQgeGxvZ19vdXRkZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7CiAKK2V4dGVybiBDb25kaXRpb25WYXJpYWJsZSAqY2hlY2tfZm9yX3JlcGxheSh2 b2lkKTsKKwogI2VuZGlmCQkJCQkJCS8qIFhMT0dSRUNPVkVSWV9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IDUyYmIzZTJhYWUuLjJmZDc0NWZlNzIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAj ZGVmaW5lIF9XQUxTRU5ERVJfSAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSAi c3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKIAogLyoKICAqIFdoYXQgdG8gZG8gd2l0 aCBhIHNuYXBzaG90IGluIGNyZWF0ZSByZXBsaWNhdGlvbiBzbG90IGNvbW1hbmQuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNmNhY2Q2ZWRhZi4uMDRhMzdmZWVlNCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtMTMwLDYgKzEzMCw3IEBAIHR5cGVkZWYgZW51bQog CVdBSVRfRVZFTlRfU1lOQ19SRVAsCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfRVhJVCwK IAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9XQUlUX1NUQVJULAorCVdBSVRfRVZFTlRfV0FM X1NFTkRFUl9XQUlUX1JFUExBWSwKIAlXQUlUX0VWRU5UX1hBQ1RfR1JPVVBfVVBEQVRFCiB9 IFdhaXRFdmVudElQQzsKIAotLSAKMi4zNC4xCgo= --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v46-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZmE0ZTVlZjUwOTllMjc3MWNhMmU3ZTE4MTNhMTkxNGNlNzUxYzc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAxMDowMTozMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgfCA0MSArKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAg ICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQogICA0LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LwogIDM4LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTUuNiUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IDg2NzY3NWQ1YTEuLjFhYmU3NDdjYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTQ0NjUsNiArNDQ2NSwxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShi b29sIHJlc2V0KQogCVJlYWRDb250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3 YWxfbGV2ZWwgZnJvbSB0aGUgY29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZh bHVlIHNob3VsZCBiZQorICogY29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwg YmVjYXVzZSBpdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFs bHkgY29uZmlndXJlZCBvbiBzdGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2Fs TGV2ZWxPblN0YW5kYnkodm9pZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZl bDsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhM T0cKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggYTUzZTIzYzY3OS4uNmI2NmE5NzFiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNTIsMTEgKzE1MiwzMSBAQCB4bG9nX2RlY29kZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ CSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNl IFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVyX2NoYW5nZSAq eGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNHZXREYXRhKGJ1 Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlz IHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAqIHdhbnQgdG8g cHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNlZC4KKwkJCSAq IEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxpZGF0ZWQgd2hl biB0aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xv dCBjcmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZm aWNpZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hy b25pemVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9s ZXZlbAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4K KwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJCQkJInRvIGJlIGF0 IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsKKwkJCWJyZWFrOwor CQl9CiAJCWNhc2UgWExPR19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBY TE9HX1NXSVRDSDoKIAkJY2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJB TUVURVJfQ0hBTkdFOgogCQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9H X0ZQV19DSEFOR0U6CiAJCWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDFhNThkZDc2NDkuLjkxYWNj MGMxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CkBAIC0xMTksMjMgKzExOSwyMiBAQCBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50 cyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBk YXRhYmFzZSBjb25uZWN0aW9uIikpKTsKIAotCS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3Qg dG8gY2hhbmdlIHRoYXQgc29tZWRheSBzb29uLi4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2lj YWxseSB0aHJlZSB0aGluZ3MgbWlzc2luZyB0byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5l ZWQgdG8gYmUgYWJsZSB0byBjb3JyZWN0bHkgYW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRp bWVsaW5lIGEKLQkgKgkgIExTTiBiZWxvbmdzIHRvCi0JICogMikgV2UgbmVlZCB0byBmb3Jj ZSBob3Rfc3RhbmRieV9mZWVkYmFjayB0byBiZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwot CSAqCSAgdGhlIHByaW1hcnkgY2Fubm90IHJlbW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykg c3VwcG9ydCBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRh YmFzZSwgaW4KLQkgKgkgIGRiYXNlX3JlZG8uIFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUg b25lcyBkdWUgdG8gSFMgcmVjb3ZlcnkKLQkgKgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91 bGQgYmUgcmVsYXRpdmVseSBlYXN5LgotCSAqIC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJ blByb2dyZXNzKCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcg Y2Fubm90IGJlIHVzZWQgd2hpbGUgaW4gcmVjb3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICog VGhpcyBjaGVjayBtYXkgaGF2ZSByYWNlIGNvbmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkg KiBYTE9HX1BBUkFNRVRFUl9DSEFOR0UgaW5kaWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBj aGFuZ2VkLCB3ZQorCQkgKiB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90cy4gQW5kIHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3Vu ZCBjcmVhdGluZyBhIG5ldyBzbG90LAorCQkgKiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVp cmVtZW50cygpIGlzIGNhbGxlZCBvbmNlIGJlZm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xv dCwgYW5kIG9uY2Ugd2hlbiBsb2dpY2FsIGRlY29kaW5nIGlzIGluaXRpYWxseSBzdGFydGlu ZyB1cC4KKwkJICovCisJCWlmIChHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FM X0xFVkVMX0xPR0lDQUwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCAiCisJCQkJ CQkJInRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsK Kwl9CiB9CiAKIC8qCkBAIC0zMzEsNiArMzMwLDEyIEBAIENyZWF0ZUluaXREZWNvZGluZ0Nv bnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFuZGJ5 LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNsb3Qu IENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJQ2hl Y2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGluZXMu Li4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYwppbmRleCAzOGM2ZjE4ODg2Li4yOTBkNGI0NWY0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKIAogLyoKICAqIFJlcGxp Y2F0aW9uIHNsb3Qgb24tZGlzayBkYXRhIHN0cnVjdHVyZS4KQEAgLTExNzcsMzcgKzExNzgs MjggQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3Ig bG9naWNhbCBzbG90cyBsb2cgYSBzdGFuZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2Fs IGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3Mg dGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9yZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5 LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNhbm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVz ZSB0aGUKKwkJICogcmVwbGF5IHBvaW50ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRv IGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBvbgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQg dG8gd2FpdCBmb3IgYW4geGxfcnVubmluZ194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dn ZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUgcHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNh biBiZSBidWlsdAorCQkgKiB1c2luZyB0aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mg bm90IG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0 aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2lu dCBhbnl3YXkuIEluc3RlYWQgcmV0dXJuCi0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFz dCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNo YW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBo YXMgdG8KLQkJICogc3RhcnQgcmVwbGF5IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVl ZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRo ZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdh eS4gSW5zdGVhZAorCQkgKiByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8g TFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRo YXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhh cyB0byBzdGFydCByZXBsYXkgYXQuCiAJCSAqLwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCi0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hw dHI7Ci0KLQkJCS8qIHN0YXJ0IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlm IChTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0 cigpOworCQllbHNlIGlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNu ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11 dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNw aW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2 ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3Rh bmRieVNuYXBzaG90KCk7CiAKLQkJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRv IGRpc2sgKi8KLQkJCVhMb2dGbHVzaChmbHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0J CQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgm c2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNu OwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tB Y3F1aXJlKCZzbG90LT5tdXRleCk7CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJl dmVudCBXQUwgcmVtb3ZhbCBhcyBmYXN0IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKQEAgLTEyMjMsNiArMTIxNSwxNyBAQCBSZXBs aWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRT ZWdubygpIDwgc2Vnbm8pCiAJCQlicmVhazsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNo cHRyOworCisJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBz dGFydCAqLworCQlmbHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFu ZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNo cHRyKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IDg4ODVjZGVlYmMuLjFlOTFjYmM1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC05MDYsMjMgKzkwNiwzMSBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdl KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50 IHJlcQogCWludAkJCWNvdW50OwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCVhMb2dTZWdO bwlzZWdubzsKLQlUaW1lTGluZUlECWN1cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGlu ZSgpOworCVRpbWVMaW5lSUQJY3VyclRMSTsKIAogCS8qCi0JICogU2luY2UgbG9naWNhbCBk ZWNvZGluZyBpcyBvbmx5IHBlcm1pdHRlZCBvbiBhIHByaW1hcnkgc2VydmVyLCB3ZSBrbm93 Ci0JICogdGhhdCB0aGUgY3VycmVudCB0aW1lbGluZSBJRCBjYW4ndCBiZSBjaGFuZ2luZyBh bnkgbW9yZS4gSWYgd2UgZGlkIHRoaXMKLQkgKiBvbiBhIHN0YW5kYnksIHdlJ2QgaGF2ZSB0 byB3b3JyeSBhYm91dCB0aGUgdmFsdWVzIHdlIGNvbXB1dGUgaGVyZQotCSAqIGJlY29taW5n IGludmFsaWQgZHVlIHRvIGEgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5nZS4KKwkgKiBT aW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIGFsc28gcGVybWl0dGVkIG9uIGEgc3RhbmRieSBz ZXJ2ZXIsIHdlIG5lZWQKKwkgKiB0byBjaGVjayBpZiB0aGUgc2VydmVyIGlzIGluIHJlY292 ZXJ5IHRvIGRlY2lkZSBob3cgdG8gZ2V0IHRoZSBjdXJyZW50CisJICogdGltZWxpbmUgSUQg KHNvIHRoYXQgaXQgYWxzbyBjb3ZlciB0aGUgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5n ZSBjYXNlcykuCiAJICovCisKKwkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLworCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKKworCS8qIHRoZSBzdGFuZGJ5IGNvdWxkIGhhdmUgYmVlbiBwcm9tb3Rl ZCwgc28gY2hlY2sgaWYgc3RpbGwgaW4gcmVjb3ZlcnkgKi8KKwlhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyID0gUmVjb3ZlcnlJblByb2dyZXNzKCk7CisKKwlpZiAoYW1fY2FzY2FkaW5nX3dh bHNlbmRlcikKKwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisJZWxzZQorCQlj dXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwogCVhMb2dSZWFkRGV0ZXJt aW5lVGltZWxpbmUoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwgY3VyclRMSSk7CiAJ c2VuZFRpbWVMaW5lSXNIaXN0b3JpYyA9IChzdGF0ZS0+Y3VyclRMSSAhPSBjdXJyVExJKTsK IAlzZW5kVGltZUxpbmUgPSBzdGF0ZS0+Y3VyclRMSTsKIAlzZW5kVGltZUxpbmVWYWxpZFVw dG8gPSBzdGF0ZS0+Y3VyclRMSVZhbGlkVW50aWw7CiAJc2VuZFRpbWVMaW5lTmV4dFRMSSA9 IHN0YXRlLT5uZXh0VExJOwogCi0JLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIFdBTCBh dmFpbGFibGUgKi8KLQlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFyZ2V0UGFnZVB0 ciArIHJlcUxlbik7Ci0KIAkvKiBmYWlsIGlmIG5vdCAoaW1wbGllcyB3ZSBhcmUgZ29pbmcg dG8gc2h1dCBkb3duKSAqLwogCWlmIChmbHVzaHB0ciA8IHRhcmdldFBhZ2VQdHIgKyByZXFM ZW4pCiAJCXJldHVybiAtMTsKQEAgLTkzNyw3ICs5NDUsNyBAQCBsb2dpY2FsX3JlYWRfeGxv Z19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0 ciwgaW50IHJlcQogCQkJCSBjdXJfcGFnZSwKIAkJCQkgdGFyZ2V0UGFnZVB0ciwKIAkJCQkg WExPR19CTENLU1osCi0JCQkJIHN0YXRlLT5zZWcud3NfdGxpLCAvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKKwkJCQkgY3VyclRMSSwgCQkJLyogUGFzcyB0aGUgY3Vy cmVudCBUTEkgYmVjYXVzZSBvbmx5CiAJCQkJCQkJCQkgKiBXYWxTbmRTZWdtZW50T3BlbiBj b250cm9scyB3aGV0aGVyIG5ldwogCQkJCQkJCQkJICogVExJIGlzIG5lZWRlZC4gKi8KIAkJ CQkgJmVycmluZm8pKQpAQCAtMzA3NCwxMCArMzA4MiwxNCBAQCBYTG9nU2VuZExvZ2ljYWwo dm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0 aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRh dGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNo UHRyID09IEludmFsaWRYTG9nUmVjUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRy KE5VTEwpOwotCWVsc2UgaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJl Y1B0ciA+PSBmbHVzaFB0cikKLQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsK KwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNv ZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQorCXsKKwkJaWYgKGFt X2Nhc2NhZGluZ193YWxzZW5kZXIpCisJCQlmbHVzaFB0ciA9IEdldFN0YW5kYnlGbHVzaFJl Y1B0cihOVUxMKTsKKwkJZWxzZQorCQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxM KTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIs IGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgt PnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzE2OCw3ICszMTgwLDggQEAg R2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIAlyZWNlaXZlUHRyID0g R2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwogCXJlcGxheVB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAKLQkqdGxpID0gcmVwbGF5VExJ OworCWlmICh0bGkpCisJCSp0bGkgPSByZXBsYXlUTEk7CiAKIAlyZXN1bHQgPSByZXBsYXlQ dHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0gcmVwbGF5VExJICYmIHJlY2VpdmVQdHIgPiByZXBs YXlQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCBjZmU1NDA5NzM4Li40OGNhODUyMzgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBleHRlcm4gdm9pZCBYTE9HU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2 b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5jeUNoZWNraW5nKHZvaWQpOwogZXh0ZXJuIHZv aWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2 ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFy dHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIGV4dGVybiB2b2lkIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKTsKLS0g CjIuMzQuMQoK --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v46-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1Y2ZiZTEzNjhkMWJhZjEzYzI4ODRkZWZlZWFkYjYxZGYyMTVkOTc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAxMDowMDozOSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIHRoZSBwcmltYXJ5IHNlcnZlcgppcyByZWR1Y2VkIHRvIGJl bG93IGxvZ2ljYWwgYW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0 YW5kYnkuIEludHJvZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90 CmNvbmZsaWN0IHJlY292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNl X2NvbmZsaWN0cyBmaWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQWRkIGEgbmV3 IGZpZWxkICJjb25mbGljdGluZyIgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMuCgpBdXRob3I6 IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwg QmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVz IEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvLApCaGFyYXRo IFJ1cGlyZWRkeQotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAg ICAgICAgICB8ICAxMSArCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAg ICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5j ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxv Zy5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgICAgICAgICAgICAgfCAgMjQgKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwgICAgICAgICAgfCAgIDYgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgICAgIHwgMTk4ICsrKysrKysrKysrKystLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgICAgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDggKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICAzICsKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAxMyArLQog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDI0ICsr Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgIHwgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MTEgKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAg ICAgIHwgICA4ICstCiAyNCBmaWxlcyBjaGFuZ2VkLCAzMDQgaW5zZXJ0aW9ucygrKSwgNjMg ZGVsZXRpb25zKC0pCiAgIDUuNCUgZG9jL3NyYy9zZ21sLwogICA3LjIlIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtLwogICA0LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvCiAgNTYuOCUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDQuNSUgc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvCiAgIDYuNSUgc3JjL2JhY2tlbmQvdGNvcC8KICAgNS40JSBzcmMv YmFja2VuZC8KICAgMy45JSBzcmMvaW5jbHVkZS9jYXRhbG9nLwogICAzLjAlIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDE3NTZmMWE0YjYu LmUyNWY3MWE3NzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDM2NSw2ICs0MzY1LDE3 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBzbG90cyBpbiB0 aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0ZWQgYmVjYXVz ZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFjdGl2ZSBvbmVz CisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNyZW1lbnQgdGhp cyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bAppbmRleCA3YzhmYzNmNjU0Li4yMzlmNzEzMjk1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sCkBAIC0yNTE2LDYgKzI1MTYsMTYgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBM RUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgZmFsc2UgZm9yIHBoeXNp Y2FsIHNsb3RzLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbGlj dGluZzwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoaXMgbG9naWNhbCBzbG90IGNvbmZsaWN0 ZWQgd2l0aCByZWNvdmVyeSAoYW5kIHNvIGlzIG5vdworICAgICAgIGludmFsaWRhdGVkKS4g QWx3YXlzIE5VTEwgZm9yIHBoeXNpY2FsIHNsb3RzLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGI3Njc4ZjNjMTQuLjlhODZm YjNmZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5 Nyw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwp OwogCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lz dFJlZG9QYWdlUmV1c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKElu SG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxs WGlkKHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhs cmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4u Yjg1NjMwNDc0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEw MDMsNiArMTAwMyw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2Nh dG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxkYXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRh LT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZDQ3ODcyNGI5ZC4uZDY0ZmI0Y2M4NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTg4OTEsNiArODg5MSw3IEBAIGhlYXBfeGxv Z19wcnVuZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFu ZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MDYwLDYgKzkwNjEsNyBAQCBo ZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAo SW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4 bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFn cyAmIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9y KTsKIAogCS8qCkBAIC05MTc3LDYgKzkxNzksNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29y ZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJ CQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4 N2U0NmVkNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02Njks NiArNjY5LDcgQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVM TCk7CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBi dHJlZV94bG9nX3JldXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAo SW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1 bGxYaWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAg eGxyZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5Yzhh Li40NTlhYzkyOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAt ODc5LDYgKzg3OSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwg TlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs ZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXND YXRhbG9nUmVsLAogCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwppbmRleCBmYjRjODYwYmRlLi44Njc2NzVkNWExIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02NDQ3LDYgKzY0NDcsNyBAQCBDcmVhdGVDaGVj a1BvaW50KGludCBmbGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CiAJaW50 CQkJbnZ4aWRzOwogCWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsKKwlib29sCQlpbnZhbGlk YXRlZCA9IGZhbHNlOwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2lu dCBpcyByZWFsbHkgYSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC02ODA3LDcgKzY4 MDgsOCBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1Nl ZyhSZWRvUmVjUHRyLCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dT ZWcocmVjcHRyLCAmX2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhfbG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9u U2xvdHMoX2xvZ1NlZ05vLCAmaW52YWxpZGF0ZWQsIEludmFsaWRPaWQsIE5VTEwpOworCWlm IChpbnZhbGlkYXRlZCkKIAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGlu dmFsaWRhdGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTcwODYsNiArNzA4 OCw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJWExvZ1JlY1B0cgllbmRw dHI7CiAJWExvZ1NlZ05vCV9sb2dTZWdObzsKIAlUaW1lc3RhbXBUeiB4dGltZTsKKwlib29s CQlpbnZhbGlkYXRlZCA9IGZhbHNlOwogCiAJLyogQ29uY3VycmVudCBjaGVja3BvaW50L3Jl c3RhcnRwb2ludCBjYW5ub3QgaGFwcGVuICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rl ciB8fCBNeUJhY2tlbmRUeXBlID09IEJfQ0hFQ0tQT0lOVEVSKTsKQEAgLTcyNTEsNyArNzI1 NCw4IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJcmVwbGF5UHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAllbmRwdHIgPSAocmVjZWl2ZVB0ciA8 IHJlcGxheVB0cikgPyByZXBsYXlQdHIgOiByZWNlaXZlUHRyOwogCUtlZXBMb2dTZWcoZW5k cHRyLCAmX2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhfbG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMo X2xvZ1NlZ05vLCAmaW52YWxpZGF0ZWQsIEludmFsaWRPaWQsIE5VTEwpOworCWlmIChpbnZh bGlkYXRlZCkKIAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRh dGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTc5NjYsNiArNzk3MCwyMiBA QCB4bG9nX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIg Y29weSBvZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxy ZWMsIFhMb2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdl KSk7CiAKKwkJLyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBp biBob3Qgc3RhbmRieSBhbmQgdGhlIHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdB TCBsZXZlbCBzdWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNl YXJjaAorCQkgKiBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3Rz IGlmIHN0YW5kYnkgaXMgcnVubmluZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFu IGxvZ2ljYWwsIGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVp dGhlciBkaXNhbGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0 ZWQgZXhpc3RpbmcKKwkJICogb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIElu SG90U3RhbmRieSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwg JiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJeworCQkJVHJhbnNh Y3Rpb25JZCBDb25mbGljdEhvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCUlu dmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIE5V TEwsIEludmFsaWRPaWQsICZDb25mbGljdEhvcml6b24pOworCQl9CisKIAkJTFdMb2NrQWNx dWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5N YXhDb25uZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+ bWF4X3dvcmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA4NjA4ZTNmYTViLi5hMjcy YmQ0YTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC05OTcs NyArOTk3LDggQEAgQ1JFQVRFIFZJRVcgcGdfcmVwbGljYXRpb25fc2xvdHMgQVMKICAgICAg ICAgICAgIEwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICAgICAgICAgIEwud2FsX3N0YXR1 cywKICAgICAgICAgICAgIEwuc2FmZV93YWxfc2l6ZSwKLSAgICAgICAgICAgIEwudHdvX3Bo YXNlCisgICAgICAgICAgICBMLnR3b19waGFzZSwKKyAgICAgICAgICAgIEwuY29uZmxpY3Rp bmcKICAgICBGUk9NIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cygpIEFTIEwKICAgICAgICAg ICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBEIE9OIChMLmRhdG9pZCA9IEQub2lkKTsKIApA QCAtMTA2NSw3ICsxMDY2LDggQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9kYXRhYmFzZV9jb25m bGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2soRC5v aWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgICAgICAgICBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oRC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBp biwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxv Y2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgICAgICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywK KyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KEQub2lk KSBBUyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QKICAgICBGUk9NIHBnX2RhdGFiYXNlIEQ7 CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfdXNlcl9mdW5jdGlvbnMgQVMKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IGZhMWI2 NDFhMmIuLjA3MGZkMzc4ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjE2LDkgKzIxNiw5IEBAIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNv bmZpcm0sIGJvb2wgYmluCiAKIAkJLyoKIAkJICogQWZ0ZXIgdGhlIHNhbml0eSBjaGVja3Mg aW4gQ3JlYXRlRGVjb2RpbmdDb250ZXh0LCBtYWtlIHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRf bHNuIGlzIHZhbGlkLiAgQXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0 aGlzCi0JCSAqIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3Vv dXMgYWJvdXQgbm8gY2hhbmdlcwotCQkgKiBiZWluZyBhdmFpbGFibGUuCisJCSAqIHJlc3Rh cnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxp ZC4gQXZvaWQKKwkJICogImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzIGVy cm1zZyBiZWNhdXNlIHRoYXQnZCBiZQorCQkgKiBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJv dXQgbm8gY2hhbmdlcyBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwogCQlpZiAoWExvZ1JlY1B0 cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCQll cmVwb3J0KEVSUk9SLApAQCAtMjI3LDYgKzIyNywxMyBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJtLCBi b29sIGJpbgogCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKIAkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBuZXZlciBwcmV2aW91c2x5IHJlc2VydmVkIFdBTCwgb3IgaXQgaGFzIGJl ZW4gaW52YWxpZGF0ZWQuIikpKTsKIAorCQlpZiAoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElz SW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKCpuYW1lKSksCisJCQkJCSBlcnJkZXRhaWwoIlRo aXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGlu ZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggZjI4NjkxOGY2 OS4uMzhjNmYxODg4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtODU1LDggKzg1 NSwxMCBAQCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihib29sIGFscmVh ZHlfbG9ja2VkKQogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAkJZWZmZWN0aXZl X3htaW4gPSBzLT5lZmZlY3RpdmVfeG1pbjsKIAkJZWZmZWN0aXZlX2NhdGFsb2dfeG1pbiA9 IHMtPmVmZmVjdGl2ZV9jYXRhbG9nX3htaW47Ci0JCWludmFsaWRhdGVkID0gKCFYTG9nUmVj UHRySXNJbnZhbGlkKHMtPmRhdGEuaW52YWxpZGF0ZWRfYXQpICYmCi0JCQkJCSAgIFhMb2dS ZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpOworCQlpbnZhbGlkYXRlZCA9 ICgoIVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKKwkJ CQkJCVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpCisJCQkJCSAg IHx8ICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWluKSAmJgorCQkJCQkJICAg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWluKSkpOwogCQlTcGlu TG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKIAogCQkvKiBpbnZhbGlkYXRlZCBzbG90cyBuZWVk IG5vdCBhcHBseSAqLwpAQCAtMTIyNCwyMCArMTIyNiwyMSBAQCBSZXBsaWNhdGlvblNsb3RS ZXNlcnZlV2FsKHZvaWQpCiB9CiAKIC8qCi0gKiBIZWxwZXIgZm9yIEludmFsaWRhdGVPYnNv bGV0ZVJlcGxpY2F0aW9uU2xvdHMgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKLSAqIGFu ZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKiBIZWxw ZXIgZm9yIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMKKyAqCisgKiBBY3F1 aXJlcyB0aGUgZ2l2ZW4gc2xvdCBhbmQgbWFyayBpdCBpbnZhbGlkLCBpZiBuZWNlc3Nhcnkg YW5kIHBvc3NpYmxlLgogICoKICAqIFJldHVybnMgd2hldGhlciBSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayB3YXMgcmVsZWFzZWQgaW4gdGhlIGludGVyaW0gKGFuZAogICogaW4gdGhh dCBjYXNlIHdlJ3JlIG5vdCBob2xkaW5nIHRoZSBsb2NrIGF0IHJldHVybiwgb3RoZXJ3aXNl IHdlIGFyZSkuCiAgKgotICogU2V0cyAqaW52YWxpZGF0ZWQgdHJ1ZSBpZiB0aGUgc2xvdCB3 YXMgaW52YWxpZGF0ZWQuIChVbnRvdWNoZWQgb3RoZXJ3aXNlLikKKyAqIFNldHMgKmludmFs aWRhdGVkIHRydWUgaWYgYW4gb2Jzb2xldGUgc2xvdCB3YXMgaW52YWxpZGF0ZWQuIChVbnRv dWNoZWQgb3RoZXJ3aXNlLikKICAqCiAgKiBUaGlzIGlzIGluaGVyZW50bHkgcmFjeSwgYmVj YXVzZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKICAqIGZvciBzeXNjYWxscywgc28gY2FsbGVy IG11c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wKLUlu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dS ZWNQdHIgb2xkZXN0TFNOLAotCQkJCQkJCSAgIGJvb2wgKmludmFsaWRhdGVkKQorSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVPckNvbmZsaWN0aW5nTG9naWNhbFNsb3QoUmVwbGljYXRp b25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKKwkJCQkJCQkJCQkJCSAgIGJvb2wg KmludmFsaWRhdGVkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7CiAJaW50CQkJbGFzdF9zaWdu YWxlZF9waWQgPSAwOwogCWJvb2wJCXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKQEAgLTEyNDUs NiArMTI0OCw5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlv blNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCWZvciAoOzspCiAJewogCQlYTG9n UmVjUHRyCXJlc3RhcnRfbHNuOworCQlUcmFuc2FjdGlvbklkIHNsb3RfeG1pbjsKKwkJVHJh bnNhY3Rpb25JZCBzbG90X2NhdGFsb2dfeG1pbjsKKwogCQlOYW1lRGF0YQlzbG90bmFtZTsK IAkJaW50CQkJYWN0aXZlX3BpZCA9IDA7CiAKQEAgLTEyNjEsMTggKzEyNjcsMzMgQEAgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGlu dmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlz IG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKIAkJICog YXMgaGF2aW5nIGJlZW4gaW52YWxpZGF0ZWQuICBXZSBkbyB0aGlzIHdpdGggdGhlIHNwaW5s b2NrIGhlbGQgdG8KLQkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBleGFtcGxl IHRoZSByZXN0YXJ0X2xzbiBjb3VsZCBtb3ZlCi0JCSAqIGZvcndhcmQsIG9yIHRoZSBzbG90 IGNvdWxkIGJlIGRyb3BwZWQuCisJCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3Ig ZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gKG9yIHRoZQorCQkgKiB4bWluKHMpIGNvdWxkKSBt b3ZlIGZvcndhcmQgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KIAkJICovCiAJCVNw aW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCiAJCXJlc3RhcnRfbHNuID0gcy0+ZGF0YS5y ZXN0YXJ0X2xzbjsKKwkJc2xvdF94bWluID0gcy0+ZGF0YS54bWluOworCQlzbG90X2NhdGFs b2dfeG1pbiA9IHMtPmRhdGEuY2F0YWxvZ194bWluOworCisJCS8qIHNsb3QgaGFzIGJlZW4g aW52YWxpZGF0ZWQgKGxvZ2ljYWwgZGVjb2RpbmcgY29uZmxpY3QgY2FzZSkgKi8KKwkJaWYg KCh4aWQgJiYKKwkJCSAoKExvZ2ljYWxSZXBsaWNhdGlvblNsb3RJc0ludmFsaWQocykpCisJ CQkgIHx8CiAKIAkJLyoKLQkJICogSWYgdGhlIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkIG9y IGlzIGZyZXNoIGVub3VnaCwgd2UgZG9uJ3QgbmVlZCB0bwotCQkgKiBkbyBhbnl0aGluZy4K KwkJICogV2UgYXJlIG5vdCBmb3JjaW5nIGZvciBpbnZhbGlkYXRpb24gYmVjYXVzZSB0aGUg eGlkIGlzIHZhbGlkIGFuZAorCQkgKiB0aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNsb3Qu CiAJCSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0X2xzbikgfHwgcmVz dGFydF9sc24gPj0gb2xkZXN0TFNOKQorCQkJICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhp ZCkgJiYgISgKKwkJCQkJCQkJCQkJICAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1p bikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF94bWluLCAqeGlkKSkK KwkJCQkJCQkJCQkJICAgfHwKKwkJCQkJCQkJCQkJICAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNsb3RfY2F0YWxvZ194bWluKSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhz bG90X2NhdGFsb2dfeG1pbiwgKnhpZCkpCisJCQkJCQkJCQkJCSAgICkpCisJCQkgICkpCisJ CQl8fAorCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChvYnNvbGV0ZSBMU04gY2Fz ZSkgKi8KKwkJCSgheGlkICYmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8 fCByZXN0YXJ0X2xzbiA+PSBvbGRlc3RMU04pKSkKIAkJewogCQkJU3BpbkxvY2tSZWxlYXNl KCZzLT5tdXRleCk7CiAJCQlpZiAocmVsZWFzZWRfbG9jaykKQEAgLTEyOTIsOSArMTMxMywx NiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpz LCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJewogCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBz OwogCQkJcy0+YWN0aXZlX3BpZCA9IE15UHJvY1BpZDsKLQkJCXMtPmRhdGEuaW52YWxpZGF0 ZWRfYXQgPSByZXN0YXJ0X2xzbjsKLQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKLQorCQkJaWYgKHhpZCkKKwkJCXsKKwkJCQlzLT5kYXRhLnhtaW4gPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXMtPmRhdGEuaW52 YWxpZGF0ZWRfYXQgPSByZXN0YXJ0X2xzbjsKKwkJCQlzLT5kYXRhLnJlc3RhcnRfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisJCQl9CiAJCQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KIAkJ CSppbnZhbGlkYXRlZCA9IHRydWU7CiAJCX0KQEAgLTEzMjcsMTUgKzEzNTUsMzkgQEAgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCiAJCQkgKi8KIAkJCWlmIChsYXN0X3NpZ25hbGVkX3BpZCAhPSBh Y3RpdmVfcGlkKQogCQkJewotCQkJCWVyZXBvcnQoTE9HLAotCQkJCQkJZXJybXNnKCJ0ZXJt aW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIi LAotCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKLQkJCQkJCWVy cmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1p dCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRf bHNuKSwKLQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVz dGFydF9sc24pKSwKLQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNl IG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJCWlmICh4aWQpCisJCQkJeworCQkJ CQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJCXsKKwkJCQkJCWVyZXBv cnQoTE9HLAorCQkJCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVjYXVz ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsCisJ CQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJCWVy cmRldGFpbCgiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsCisJ CQkJCQkJCQkJICAqeGlkKSk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQll cmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIGJl Y2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJ CQllcnJkZXRhaWwoIkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxf bGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7 CisJCQkJCX0KKworCQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZlX3BpZCwgUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwgSW52YWxpZEJhY2tlbmRJZCk7 CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJCWVy cm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9uIHNs b3QgXCIlc1wiIiwKKwkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkp LAorCQkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNl ZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJCQkJCQkgIExTTl9GT1JNQVRf QVJHUyhyZXN0YXJ0X2xzbiksCisJCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChv bGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBu ZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCisJCQkJCSh2 b2lkKSBraWxsKGFjdGl2ZV9waWQsIFNJR1RFUk0pOworCQkJCX0KIAotCQkJCSh2b2lkKSBr aWxsKGFjdGl2ZV9waWQsIFNJR1RFUk0pOwogCQkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gYWN0 aXZlX3BpZDsKIAkJCX0KIApAQCAtMTM2OSwxMyArMTQyMSwzMyBAQCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVz dExTTiwKIAkJCVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKIAkJCVJlcGxpY2F0aW9uU2xvdFJl bGVhc2UoKTsKIAotCQkJZXJlcG9ydChMT0csCi0JCQkJCWVycm1zZygiaW52YWxpZGF0aW5n IG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKLQkJCQkJCSAgIE5hbWVTdHIo c2xvdG5hbWUpKSwKLQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVY LyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25n KSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKLQkJCQkJZXJyaGludCgiWW91IG1pZ2h0 IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQlpZiAo eGlkKQorCQkJeworCQkJCXBnc3RhdF9kcm9wX3JlcGxzbG90KHMpOworCisJCQkJaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJ CQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJk ZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9yaXpvbiAldS4iLCAqeGlk KSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJ CWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJyZGV0YWls KCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJl IGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpOworCQkJCX0KKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCWVycm1zZygiaW52 YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQkg ICBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVz dGFydF9sc24gJVgvJVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJ CQkJCQkgIExTTl9GT1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCisJCQkJCQkJCSAgKHVuc2ln bmVkIGxvbmcgbG9uZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCisJCQkJCQllcnJo aW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXpl LiIpKTsKKwkJCX0KIAogCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCiAJ CQlicmVhazsKQEAgLTEzODgsMjAgKzE0NjAsNDAgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiB9 CiAKIC8qCi0gKiBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExTTiBvbGRlciB0 aGFuIHRoZSBnaXZlbiBzZWdtZW50Ci0gKiBhcyBpbnZhbGlkOyBpdCByZXF1aXJlcyBXQUwg dGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKiBJbnZhbGlkYXRlIE9ic29sZXRlIHNs b3RzIG9yIHJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4K ICAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRl ZC4KKyAqIE9ic29sZXRlIGNhc2UgKGFrYSB4aWQgaXMgTlVMTCk6CiAgKgotICogTkIgLSB0 aGlzIHJ1bnMgYXMgcGFydCBvZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5nIGVycm9y cyBpZiBwb3NzaWJsZS4KKyAqCSBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExT TiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CisgKgkgYXMgaW52YWxpZDsgaXQgcmVx dWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBiZSByZW1vdmVkLgorICoJIGludmFsaWRhdGVk IGlzIHNldCB0byB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisg KgorICogIExvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBjYXNlOgorICoKKyAqCSBXaGVuIHhp ZCBpcyB2YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJvd3Mg b2xkZXIgdGhhbiB4aWQuCisgKgkgVGhlcmVmb3JlIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBz bG90cyB0aGF0IGRlcGVuZCBvbiBzZWVpbmcgdGhvc2Ugcm93cy4KKyAqCSBXaGVuIHhpZCBp cyBpbnZhbGlkLCBpbnZhbGlkYXRlIGFsbCBsb2dpY2FsIHNsb3RzLiBUaGlzIGlzIHJlcXVp cmVkIHdoZW4gdGhlCisgKgkgbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBs aWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqCSBiZSBpbnZhbGlk YXRlZC4KICAqLwotYm9vbAotSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhY TG9nU2VnTm8gb2xkZXN0U2Vnbm8pCit2b2lkCitJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQsIE9p ZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewotCVhMb2dSZWNQdHIJb2xkZXN0TFNO OwotCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKLQlYTG9nU2VnTm9PZmZzZXRUb1Jl Y1B0cihvbGRlc3RTZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwlY TG9nUmVjUHRyCW9sZGVzdExTTiA9IEludmFsaWRYTG9nUmVjUHRyOworCWJvb2wgbG9naWNh bF9zbG90X2ludmFsaWRhdGVkID0gZmFsc2U7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9u X3Nsb3RzID49IDApOworCisJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQly ZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7CisJCUFzc2VydChpbnZhbGlkYXRlZCk7CisJCSpp bnZhbGlkYXRlZCA9IGZhbHNlOworCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihvbGRlc3RT ZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwl9CiAKIHJlc3RhcnQ6 CiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVE KTsKQEAgLTE0MTIsMjQgKzE1MDQsMzYgQEAgcmVzdGFydDoKIAkJaWYgKCFzLT5pbl91c2Up CiAJCQljb250aW51ZTsKIAotCQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90 KHMsIG9sZGVzdExTTiwgJmludmFsaWRhdGVkKSkKKwkJaWYgKHhpZCkKIAkJewotCQkJLyog aWYgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLCBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KLQkJCWdv dG8gcmVzdGFydDsKKwkJCS8qIHdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNhbCog c2xvdCBjb25mbGljdHMgKi8KKwkJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCQljb250 aW51ZTsKKworCQkJLyoKKwkJCSAqIG5vdCB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3QgYW5k IHdlIGRvbid0IHdhbnQgYWxsIHRoZQorCQkJICogZGF0YWJhc2UsIHNraXAKKwkJCSAqLwor CQkJaWYgKHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQgJiYgVHJhbnNhY3Rpb25JZElzVmFs aWQoKnhpZCkpCisJCQkJY29udGludWU7CiAJCX0KKworCQlpZiAoSW52YWxpZGF0ZVBvc3Np Ymx5T2Jzb2xldGVPckNvbmZsaWN0aW5nTG9naWNhbFNsb3Qocywgb2xkZXN0TFNOLCBpbnZh bGlkYXRlZCA/IGludmFsaWRhdGVkIDogJmxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCwgeGlk KSkKKwkJCQlnb3RvIHJlc3RhcnQ7CiAJfQorCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCisJICogSWYg YW55IHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlcXVp cmVkIHhtaW4KKwkgKiBhbmQgdGhlIHJlcXVpcmVkIGxzbiAoaWYgYXBwcm9wcmlhdGUpLgog CSAqLwotCWlmIChpbnZhbGlkYXRlZCkKKwlpZiAoKCF4aWQgJiYgKmludmFsaWRhdGVkKSB8 fCAoeGlkICYmIGxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCkpCiAJewogCQlSZXBsaWNhdGlv blNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCVJlcGxpY2F0aW9uU2xvdHND b21wdXRlUmVxdWlyZWRMU04oKTsKKwkJaWYgKCF4aWQgJiYgKmludmFsaWRhdGVkKQorCQkJ UmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVybiBp bnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMK aW5kZXggMmYzYzk2NDgyNC4uNDQxOTJiYzMyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMKQEAgLTIzMiw3ICsyMzIsNyBAQCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMo UEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RT X0NPTFMgMTQKKyNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NPTFMgMTUKIAlS ZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3Vs dGluZm87CiAJWExvZ1JlY1B0cgljdXJybHNuOwogCWludAkJCXNsb3RubzsKQEAgLTQwNCw2 ICs0MDQsMTcgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5kYXRhLnR3 b19waGFzZSk7CiAKKwkJaWYgKHNsb3RfY29udGVudHMuZGF0YS5kYXRhYmFzZSA9PSBJbnZh bGlkT2lkKQorCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJaWYgKHNs b3RfY29udGVudHMuZGF0YS54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkICYmCisJCQkJ c2xvdF9jb250ZW50cy5kYXRhLmNhdGFsb2dfeG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCkKKwkJCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCWVsc2UKKwkJ CQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCX0KKwogCQlBc3NlcnQo aSA9PSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyk7CiAKIAkJdHVwbGVzdG9yZV9w dXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNGVkMzc0N2UzZi4uODg4NWNkZWViYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1Mywx NCBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQp CiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJ aWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWlu KQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRh LmNhdGFsb2dfeG1pbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fu bm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJ CWNtZC0+c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIp KSk7CisKIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0 YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7 CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFE TE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVm Li5lYzgxNzM4MWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2 ICszNSw3IEBACiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3QuaCIKIAogLyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVy cyAqLwogaW50CQkJdmFjdXVtX2RlZmVyX2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3 IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFu c2FjdGlvbklkICp3YWl0bGlzdCwKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK KwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3Ig bG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAs NiArNTAyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRf UkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlp ZiAod2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJ SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwg TlVMTCwgbG9jYXRvci5kYk9pZCwgJnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKIH0KIAog LyoKQEAgLTUwOCw2ICs1MTMsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogICovCiB2b2lk CiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJICAgYm9vbCBp c0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsK IAkvKgpAQCAtNTI2LDcgKzUzMiw5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yCiAJ CVRyYW5zYWN0aW9uSWQgdHJ1bmNhdGVkOwogCiAJCXRydW5jYXRlZCA9IFhpZEZyb21GdWxs VHJhbnNhY3Rpb25JZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7Ci0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwgbG9jYXRvcik7CisJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwKKwkJCQkJCQkJCQkJ aXNDYXRhbG9nUmVsLAorCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiB9CiAKQEAgLTE0ODcs NiArMTQ5NSw5IEBAIGdldF9yZWNvdmVyeV9jb25mbGljdF9kZXNjKFByb2NTaWduYWxSZWFz b24gcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6 CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gc25hcHNob3QiKTsK IAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1Q6CisJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gcmVwbGljYXRp b24gc2xvdCIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TVEFSVFVQX0RFQURMT0NLOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZs aWN0IG9uIGJ1ZmZlciBkZWFkbG9jayIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggNDcwYjczNGU5ZS4uMDA0MTg5NjYyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAt MjQ4MSw2ICsyNDgxLDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZvaWQpCiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCWVycmRldGFp bCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBzZWUgcm93IHZlcnNpb25zIHRo YXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRldGFpbCgiVXNlciB3YXMgdXNp bmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJCWJyZWFr OwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoK IAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2Nr IHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMwNTAsNiArMzA1MywyNyBAQCBS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRToKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVDoKKwkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVDoKKworCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0cyB0aGF0IHJl cXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUKKwkJCQkgKiBpbnZhbGlkYXRlZCwgdGhlIHJl cXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRvCisJCQkJICogcmVsZWFz ZSB0aGUgc2xvdCwgc28gdGhhdCBpdCBjb3VsZCBiZSBpbnZhbGlkYXRlZCBieSB0aGUKKwkJ CQkgKiBzaWduYWwgc2VuZGVyLiBTbyBmb3Igbm9ybWFsIGJhY2tlbmRzLCB0aGUgdHJhbnNh Y3Rpb24KKwkJCQkgKiBzaG91bGQgYmUgYWJvcnRlZCwganVzdCBsaWtlIGZvciBvdGhlciBy ZWNvdmVyeSBjb25mbGljdHMuCisJCQkJICogQnV0IGlmIGl0J3Mgd2Fsc2VuZGVyIG9uIHN0 YW5kYnksIHdlIGRvbid0IHdhbnQgdG8gZ28KKwkJCQkgKiB0aHJvdWdoIHRoZSBmb2xsb3dp bmcgSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpCisJCQkJICogY2hlY2ssIHNv IGJyZWFrIGhlcmUuCisJCQkJICovCisJCQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIg JiYKKwkJCQkJcmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QgJiYKKwkJCQkJTXlSZXBsaWNhdGlvblNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxp Y2F0aW9uU2xvdCkpCisJCQkJeworCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRy dWU7CisJCQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElm IHdlIGFyZW4ndCBpbiBhIHRyYW5zYWN0aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2Uu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCmluZGV4 IDZlNjUwY2VhYWQuLjcxNDlmMjJmNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0xMDksNiArMTA5LDkgQEAgcGdzdGF0X3Jl cG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVy cGluKys7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xP R0lDQUxTTE9UOgorCQkJZGJlbnRyeS0+Y29uZmxpY3RfbG9naWNhbHNsb3QrKzsKKwkJCWJy ZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9D SzoKIAkJCWRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2srKzsKIAkJCWJyZWFr OwpAQCAtMzg3LDYgKzM5MCw3IEBAIHBnc3RhdF9kYXRhYmFzZV9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3RfdGFibGVzcGFjZSk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxp Y3RfbG9jayk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3Rfc25hcHNob3QpOwor CVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0X2xvZ2ljYWxzbG90KTsKIAlQR1NUQVRf QUNDVU1fREJDT1VOVChjb25mbGljdF9idWZmZXJwaW4pOwogCVBHU1RBVF9BQ0NVTV9EQkNP VU5UKGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z3N0YXRmdW5jcy5jCmluZGV4IDY3Mzc0OTM0MDIuLmFmZDYyZDNjYzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xMDY2LDYgKzEwNjYsOCBAQCBQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KHhhY3RfY29tbWl0KQogLyogcGdfc3RhdF9nZXRfZGJfeGFj dF9yb2xsYmFjayAqLwogUEdfU1RBVF9HRVRfREJFTlRSWV9JTlQ2NCh4YWN0X3JvbGxiYWNr KQogCisvKiBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCAqLworUEdfU1RB VF9HRVRfREJFTlRSWV9JTlQ2NChjb25mbGljdF9sb2dpY2Fsc2xvdCkKIAogRGF0dW0KIHBn X3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZShQR19GVU5DVElPTl9BUkdTKQpAQCAtMTA5 OSw2ICsxMTAxLDcgQEAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkgKGRiZW50cnktPmNvbmZsaWN0X3RhYmxlc3Bh Y2UgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9sb2NrICsKIAkJCQkJCSAgZGJlbnRy eS0+Y29uZmxpY3Rfc25hcHNob3QgKworCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9sb2dp Y2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2J1ZmZlcnBpbiArCiAJCQkJ CQkgIGRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBjMGYyYThhNzdjLi5jOGUxMWFiNzEwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU1NzcsNiArNTU3NywxMSBAQAogICBwcm9uYW1lID0+ ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdz JywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJn dHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf c25hcHNob3QnIH0sCit7IG9pZCA9PiAnOTkwMScsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNz OiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvZ2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJv c3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lk ID0+ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0 cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9 PiAncycsCkBAIC0xMDk0Niw5ICsxMDk1MSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2dldF9y ZXBsaWNhdGlvbl9zbG90cycsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2Yn LAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUg PT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixw Z19sc24sdGV4dCxpbnQ4LGJvb2x9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4s Y2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1 cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne25h bWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24s dGV4dCxpbnQ4LGJvb2wsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c2xvdF9uYW1lLHBs dWdpbixzbG90X3R5cGUsZGF0b2lkLHRlbXBvcmFyeSxhY3RpdmUsYWN0aXZlX3BpZCx4bWlu LGNhdGFsb2dfeG1pbixyZXN0YXJ0X2xzbixjb25maXJtZWRfZmx1c2hfbHNuLHdhbF9zdGF0 dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhhc2UsY29uZmxpY3Rpbmd9JywKICAgcHJvc3JjID0+ ICdwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMnIH0sCiB7IG9pZCA9PiAnMzc4NicsIGRlc2Ny ID0+ICdzZXQgdXAgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnLAogICBwcm9uYW1lID0+ ICdwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90JywgcHJvdm9sYXRpbGUgPT4g J3YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9w Z3N0YXQuaAppbmRleCA1ZTMzMjZhM2I5Li44NzJlYjM1NzU3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtMjkxLDYg KzI5MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVBnU3RhdF9D b3VudGVyIGNvbmZsaWN0X3RhYmxlc3BhY2U7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rf bG9jazsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291 bnRlciBjb25mbGljdF9sb2dpY2Fsc2xvdDsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9i dWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsK IAlQZ1N0YXRfQ291bnRlciB0ZW1wX2ZpbGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmlu ZGV4IDg4NzJjODBjZGYuLjIzNmViY2RiZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK QEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogCisjZGVmaW5lIExvZ2ljYWxSZXBsaWNh dGlvblNsb3RJc0ludmFsaWQocykgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnht aW4pICYmIFwKKwkJCQkJCQkJCQkJICFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLmNh dGFsb2dfeG1pbikpCiAvKgogICogQmVoYXZpb3VyIG9mIHJlcGxpY2F0aW9uIHNsb3RzLCB1 cG9uIHJlbGVhc2Ugb3IgY3Jhc2guCiAgKgpAQCAtMjE1LDcgKzIxNyw3IEBAIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04odm9pZCk7CiBleHRlcm4g WExvZ1JlY1B0ciBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZUxvZ2ljYWxSZXN0YXJ0TFNOKHZv aWQpOwogZXh0ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90c0NvdW50REJTbG90cyhPaWQgZGJv aWQsIGludCAqbnNsb3RzLCBpbnQgKm5hY3RpdmUpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25TbG90c0Ryb3BEQlNsb3RzKE9pZCBkYm9pZCk7Ci1leHRlcm4gYm9vbCBJbnZhbGlkYXRl T2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubyk7CitleHRl cm4gdm9pZCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBv bGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQsIE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25J ZCAqeGlkKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5hbWVkUmVwbGljYXRp b25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4dGVybiBpbnQJ UmVwbGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIGV4dGVybiBi b29sIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5hbWUpOwpAQCAtMjI3 LDUgKzIyOSw2IEBAIGV4dGVybiB2b2lkIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKHZv aWQpOwogCiBleHRlcm4gdm9pZCBDaGVja1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiBleHRl cm4gdm9pZCBDaGVja1Nsb3RQZXJtaXNzaW9ucyh2b2lkKTsKK2V4dGVybiB2b2lkIFJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0 aW9uSWQgeGlkLCBjaGFyICpyZWFzb24pOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDkwNWFmMjIzMWIuLjJmNTIxMDBi MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5 cGVkZWYgZW51bQogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwKIAlQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TTkFQU0hPVCwKKwlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9U LAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aAppbmRleCAyZWZmZGVhMTI2Li40MWY0ZGMzNzJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N0YW5kYnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aApAQCAtMzAsOCArMzAsMTAgQEAgZXh0ZXJuIHZvaWQgSW5pdFJlY292ZXJ5VHJhbnNhY3Rp b25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duUmVjb3ZlcnlUcmFu c2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogCiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAorCQkJCQkJCQkJCQkJYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQlS ZWxGaWxlTG9jYXRvciBsb2NhdG9yKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCQkgICBib29sIGlzQ2F0YWxvZ1JlbCwKIAkJ CQkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKTsKIGV4dGVybiB2b2lkIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2UoT2lkIHRzaWQpOwogZXh0ZXJu IHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoRGF0YWJhc2UoT2lkIGRiaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBlN2EyZjU4NTZhLi4xMWVh MjA2MzM3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQ3Miw4 ICsxNDcyLDkgQEAgcGdfcmVwbGljYXRpb25fc2xvdHN8IFNFTEVDVCBsLnNsb3RfbmFtZSwK ICAgICBsLmNvbmZpcm1lZF9mbHVzaF9sc24sCiAgICAgbC53YWxfc3RhdHVzLAogICAgIGwu c2FmZV93YWxfc2l6ZSwKLSAgICBsLnR3b19waGFzZQotICAgRlJPTSAocGdfZ2V0X3JlcGxp Y2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQs IHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJl c3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9z aXplLCB0d29fcGhhc2UpCisgICAgbC50d29fcGhhc2UsCisgICAgbC5jb25mbGljdGluZwor ICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdp biwgc2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4 bWluLCBjYXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3 YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNvbmZsaWN0aW5nKQogICAg ICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKGwuZGF0b2lkID0gZC5vaWQpKSk7CiBw Z19yb2xlc3wgU0VMRUNUIHBnX2F1dGhpZC5yb2xuYW1lLAogICAgIHBnX2F1dGhpZC5yb2xz dXBlciwKQEAgLTE4NjgsNyArMTg2OSw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz fCBTRUxFQ1Qgb2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Y2sob2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3Nu YXBzaG90KG9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfYnVmZmVycGluKG9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBBUyBjb25mbF9kZWFkbG9j aworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBB UyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fs c2xvdChvaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19kYXRh YmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBwaWQsCiAgICAgZ3NzX2F1dGggQVMg Z3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEKCg== --------------nRRAySwtIoCF0vZTqmhS34iC Content-Type: text/plain; charset=UTF-8; name="v46-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v46-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhOTRkODJiMTdlYjdhMzllZjQ1YzZkNjE3YmZlOWFkZjEwNGJkNjBhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAzMSBKYW4gMjAyMyAwOTo1OTowOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ2IDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyBlcnJvcihzKSBvbiB0aGUgc3RhbmRieS4gVG8gcHJldmVu dCB0aG9zZSBlcnJvcnMsIGEgbmV3IHJlcGxpY2F0aW9uCmNvbmZsaWN0IHNjZW5hcmlvIG5l ZWRzIHRvIGJlIGFkZHJlc3NlZCAoYXMgbXVjaCBhcyBob3Qgc3RhbmRieSBkb2VzKS4KCjIu IE91ciBjaG9zZW4gc3RyYXRlZ3kgZm9yIGRlYWxpbmcgd2l0aCB0aGlzIHR5cGUgb2YgcmVw bGljYXRpb24gc2xvdAppcyB0byBpbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgZm9yIHdoaWNo IG5lZWRlZCBkYXRhIGhhcyBiZWVuIHJlbW92ZWQuCgozLiBUbyBkbyB0aGlzIHdlIG5lZWQg dGhlIGxhdGVzdFJlbW92ZWRYaWQgZm9yIGVhY2ggY2hhbmdlLCBqdXN0IGFzIHdlCmRvIGZv ciBwaHlzaWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMsIGJ1dCB3ZSBhbHNvIG5lZWQgdG8g a25vdwp3aGV0aGVyIGFueSBwYXJ0aWN1bGFyIGNoYW5nZSB3YXMgdG8gZGF0YSB0aGF0IGxv Z2ljYWwgcmVwbGljYXRpb24KbWlnaHQgYWNjZXNzLiBUaGF0IHdheSwgZHVyaW5nIFdBTCBy ZXBsYXksIHdlIGtub3cgd2hlbiB0aGVyZSBpcyBhIHJpc2sgb2YKY29uZmxpY3QgYW5kLCBp ZiBzbywgaWYgdGhlcmUgaXMgYSBjb25mbGljdC4KCjQuIFdlIGNhbid0IHJlbHkgb24gdGhl IHN0YW5kYnkncyByZWxjYWNoZSBlbnRyaWVzIGZvciB0aGlzIHB1cnBvc2UgaW4KYW55IHdh eSwgYmVjYXVzZSB0aGUgc3RhcnR1cCBwcm9jZXNzIGNhbid0IGFjY2VzcyBjYXRhbG9nIGNv bnRlbnRzLgoKNS4gVGhlcmVmb3JlIGV2ZXJ5IFdBTCByZWNvcmQgdGhhdCBwb3RlbnRpYWxs eSByZW1vdmVzIGRhdGEgZnJvbSB0aGUKaW5kZXggb3IgaGVhcCBtdXN0IGNhcnJ5IGEgZmxh ZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIG9uZQp0aGF0IG1pZ2h0IGJlIGFj Y2Vzc2VkIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nLgoKV2h5IGRvIHdlIG5lZWQgdGhpcyBm b3IgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5PwoKRmlyc3QsIGxldCdzIGZvcmdldCBh Ym91dCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgYW5kIHJlY2FsbCB0aGF0Cm9uIGEg cHJpbWFyeSBkYXRhYmFzZSwgYW55IGNhdGFsb2cgcm93cyB0aGF0IG1heSBiZSBuZWVkZWQg YnkgYSBsb2dpY2FsCmRlY29kaW5nIHJlcGxpY2F0aW9uIHNsb3QgYXJlIG5vdCByZW1vdmVk LgoKVGhpcyBpcyBkb25lIHRoYW5rcyB0byB0aGUgY2F0YWxvZ194bWluIGFzc29jaWF0ZWQg d2l0aCB0aGUgbG9naWNhbApyZXBsaWNhdGlvbiBzbG90LgoKQnV0LCB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSwgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKCi0gaG90X3N0 YW5kYnlfZmVlZGJhY2sgaXMgb2ZmCi0gaG90X3N0YW5kYnlfZmVlZGJhY2sgaXMgb24gYnV0 IHRoZXJlIGlzIG5vIGEgcGh5c2ljYWwgc2xvdCBiZXR3ZWVuCiAgdGhlIHByaW1hcnkgYW5k IHRoZSBzdGFuZGJ5LiBUaGVuLCBob3Rfc3RhbmRieV9mZWVkYmFjayB3aWxsIHdvcmssCiAg YnV0IG9ubHkgd2hpbGUgdGhlIGNvbm5lY3Rpb24gaXMgYWxpdmUgKGZvciBleGFtcGxlIGEg bm9kZSByZXN0YXJ0CiAgd291bGQgYnJlYWsgaXQpCgpUaGVuLCB0aGUgcHJpbWFyeSBtYXkg ZGVsZXRlIHN5c3RlbSBjYXRhbG9nIHJvd3MgdGhhdCBjb3VsZCBiZSBuZWVkZWQKYnkgdGhl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkgKGFzIGl0IGRvZXMgbm90IGtub3cg YWJvdXQgdGhlCmNhdGFsb2dfeG1pbiBvbiB0aGUgc3RhbmRieSkuCgpTbywgaXTigJlzIG1h bmRhdG9yeSB0byBpZGVudGlmeSB0aG9zZSByb3dzIGFuZCBpbnZhbGlkYXRlIHRoZSBzbG90 cwp0aGF0IG1heSBuZWVkIHRoZW0gaWYgYW55LiBJZGVudGlmeWluZyB0aG9zZSByb3dzIGlz IHRoZSBwdXJwb3NlIG9mCnRoaXMgY29tbWl0LgoKSW1wbGVtZW50YXRpb246CgpXaGVuIGEg V0FMIHJlcGxheSBvbiBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0 dXBsZSBpcwp0byBiZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBh IGxvZ2ljYWwgc2xvdCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90 J3MgY2F0YWxvZ194bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRv IGhhbmRsZSB0aGUgY29uZmxpY3QuIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRv IHRoZSBhY3R1YWwgY29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcg ZmllbGQKaXNDYXRhbG9nUmVsIGluIHN1Y2ggV0FMIHJlY29yZHMgKGFuZCBhIG5ldyBiaXQg c2V0IGluIHRoZQp4bF9oZWFwX3Zpc2libGUgZmxhZ3MgZmllbGQpLCB0aGF0IGlzIHRydWUg Zm9yIGNhdGFsb2cgdGFibGVzLCBzbyBhcyB0bwphcnJhbmdlIGZvciBjb25mbGljdCBoYW5k bGluZy4KClRoZSBhZmZlY3RlZCBXQUwgcmVjb3JkcyBhcmUgdGhlIG9uZXMgdGhhdCBhbHJl YWR5IGNvbnRhaW4gdGhlCnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZpZWxkLCBuYW1lbHk6 CgotIGdpc3R4bG9nRGVsZXRlCi0gZ2lzdHhsb2dQYWdlUmV1c2UKLSB4bF9oYXNoX3ZhY3V1 bV9vbmVfcGFnZQotIHhsX2hlYXBfcHJ1bmUKLSB4bF9oZWFwX2ZyZWV6ZV9wYWdlCi0geGxf aGVhcF92aXNpYmxlCi0geGxfYnRyZWVfcmV1c2VfcGFnZQotIHhsX2J0cmVlX2RlbGV0ZQot IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAoKRHVlIHRvIHRoaXMgbmV3IGZpZWxkIGJlaW5nIGFk ZGVkLCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSBhbmQKZ2lzdHhsb2dEZWxldGUgZG8gbm93 IGNvbnRhaW4gdGhlIG9mZnNldHMgdG8gYmUgZGVsZXRlZCBhcyBhCkZMRVhJQkxFX0FSUkFZ X01FTUJFUi4gVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25lbWVudC4K SXQncyBub3QgbmVlZGVkIG9uIHRoZSBvdGhlcnMgc3RydWN0IHdoZXJlIGlzQ2F0YWxvZ1Jl bCBoYXMKYmVlbiBhZGRlZC4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIg dmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZApEcm91dm90ClJldmlld2VkLUJ5 OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6 aW8gZGUKUm95ZXMgTWVsbG8sIE1lbGFuaWUgUGxhZ2VtYW4KLS0tCiBjb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgfCAgMTUgKy0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgfCAgMTcgKystLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgIHwgIDEyICstLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYyAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRpbnNlcnQuYyAgICAgIHwgIDkxICsrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgICAgfCAxMTEgKysrKysrKysrKystLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAgICAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgICAgICB8ICA1 MCArKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAg ICB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyAgICAg IHwgICA5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICB8ICAg NiArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgfCAgIDUg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAgICAgICAgfCAgIDcgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oICAgICAgICAgICAgICB8ICAxMyArKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCAgICAgICAgICAgICB8ICAgOCArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAgIHwgIDEwICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgfCAgMzcgKysrKy0t LQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCAgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICAgIHwgIDEwICstCiBz cmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgIHwgICA0ICstCiAzNSBm aWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQogICAz LjMlIGNvbnRyaWIvYW1jaGVjay8KICAgNC43JSBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC8K ICAgNC4xJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICA1OS4wJSBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlLwogICAzLjclIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAyMi4wJSBzcmMv aW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggMjU3Y2Zm NjcxYi4uZWIyODBkNDg5MyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYworKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC0xODMs NiArMTgzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGludmFyaWFudF9sX25vbnRhcmdldF9v ZmZzZXQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKIAkJCQkJCQkJCQkJCU9mZnNldE51bWJl ciB1cHBlcmJvdW5kKTsKIHN0YXRpYyBQYWdlIHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hl Y2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrbnVtKTsKIHN0YXRpYyBpbmxpbmUg QlRTY2FuSW5zZXJ0IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsCisJ CQkJCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJCQlJbmRleFR1cGxl IGl0dXApOwogc3RhdGljIEl0ZW1JZCBQYWdlR2V0SXRlbUlkQ2FyZWZ1bChCdHJlZUNoZWNr U3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9jaywKIAkJCQkJCQkJICAgUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgb2Zmc2V0KTsKQEAgLTMzMSw3ICszMzIsNyBAQCBidF9pbmRleF9j aGVja19pbnRlcm5hbChPaWQgaW5kcmVsaWQsIGJvb2wgcGFyZW50Y2hlY2ssIGJvb2wgaGVh cGFsbGluZGV4ZWQsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSkp KTsKIAogCQkvKiBFeHRyYWN0IG1ldGFkYXRhIGZyb20gbWV0YXBhZ2UsIGFuZCBzYW5pdGl6 ZSBpdCBpbiBwYXNzaW5nICovCi0JCV9idF9tZXRhdmVyc2lvbihpbmRyZWwsICZoZWFwa2V5 c3BhY2UsICZhbGxlcXVhbGltYWdlKTsKKwkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgaGVh cHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1hZ2UpOwogCQlpZiAoYWxsZXF1YWxp bWFnZSAmJiAhaGVhcGtleXNwYWNlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLApAQCAtMTI1OCw3ICsxMjU5LDcgQEAgYnRf dGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkJfQogCiAJCS8q IEJ1aWxkIGluc2VydGlvbiBzY2Fua2V5IGZvciBjdXJyZW50IHBhZ2Ugb2Zmc2V0ICovCi0J CXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCk7CisJ CXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgc3RhdGUtPmhl YXByZWwsIGl0dXApOwogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0dXBsZSBzaXplIGRvZXMg bm90IGV4Y2VlZCB0aGUgcmVsZXZhbnQgQlRSRUVfVkVSU0lPTgpAQCAtMTc2OCw3ICsxNzY5 LDcgQEAgYnRfcmlnaHRfcGFnZV9jaGVja19zY2Fua2V5KEJ0cmVlQ2hlY2tTdGF0ZSAqc3Rh dGUpCiAJICogbWVtb3J5IHJlbWFpbmluZyBhbGxvY2F0ZWQuCiAJICovCiAJZmlyc3RpdHVw ID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHJpZ2h0cGFnZSwgcmlnaHRpdGVtKTsKLQly ZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCk7 CisJcmV0dXJuIGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBzdGF0ZS0+ aGVhcHJlbCwgZmlyc3RpdHVwKTsKIH0KIAogLyoKQEAgLTI2ODEsNyArMjY4Miw3IEBAIGJ0 X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkK IAlCdWZmZXIJCWxidWY7CiAJYm9vbAkJZXhpc3RzOwogCi0Ja2V5ID0gX2J0X21rc2Nhbmtl eShzdGF0ZS0+cmVsLCBpdHVwKTsKKwlrZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWws IHN0YXRlLT5oZWFwcmVsLCBpdHVwKTsKIAlBc3NlcnQoa2V5LT5oZWFwa2V5c3BhY2UgJiYg a2V5LT5zY2FudGlkICE9IE5VTEwpOwogCiAJLyoKQEAgLTI2OTQsNyArMjY5NSw3IEBAIGJ0 X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkK IAkgKi8KIAlBc3NlcnQoc3RhdGUtPnJlYWRvbmx5ICYmIHN0YXRlLT5yb290ZGVzY2VuZCk7 CiAJZXhpc3RzID0gZmFsc2U7Ci0Jc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtl eSwgJmxidWYsIEJUX1JFQUQsIE5VTEwpOworCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+ cmVsLCBzdGF0ZS0+aGVhcHJlbCwga2V5LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7CiAKIAlp ZiAoQnVmZmVySXNWYWxpZChsYnVmKSkKIAl7CkBAIC0zMTMzLDExICszMTM0LDExIEBAIHBh bGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJs b2NrbnVtKQogICogdGhlIHNjYW5rZXkgaXMgZ3JlYXRlci4KICAqLwogc3RhdGljIGlubGlu ZSBCVFNjYW5JbnNlcnQKLWJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgaXR1cCkKK2J0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCkKIHsKIAlCVFNjYW5JbnNl cnQgc2tleTsKIAotCXNrZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJc2tleSA9 IF9idF9ta3NjYW5rZXkocmVsLCBoZWFwcmVsLCBpdHVwKTsKIAlza2V5LT5waXZvdHNlYXJj aCA9IHRydWU7CiAKIAlyZXR1cm4gc2tleTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRl eCBiYTM5NGYwOGY2Li4zYWM2OGVjM2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBA IC0zNDgsNyArMzQ4LDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBm cmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBw dHItPm5leHQpCiAJCXsKIAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1 ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihyZWwsIGhlYXBSZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChp c19sZWFmKSA/IEZfTEVBRiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShw dHItPmJ1ZmZlcik7CiAJCQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1i ZXIocHRyLT5idWZmZXIpOwpAQCAtMTY5NCw3ICsxNjk0LDggQEAgZ2lzdHBydW5lcGFnZShS ZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQnVmZmVyIGJ1ZmZlciwgUmVsYXRpb24gaGVhcFJl bCkKIAogCQkJcmVjcHRyID0gZ2lzdFhMb2dEZWxldGUoYnVmZmVyLAogCQkJCQkJCQkJZGVs ZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24p OworCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQloZWFwUmVs KTsKIAogCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwogCQl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGQyMWEzMDhkNDEuLjQ0NjIwMjI5MDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgZ2lz dGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4 SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRoZSByb290IHBhZ2Ug Ki8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9IGdpc3RO ZXdCdWZmZXIoaW5kZXgsIGhlYXApOwogCQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIo YnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRp bC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1NjQ1MWZl ZGUxLi5hYWQxNGE0MDFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAg LTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBwYWdl IGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1naXN0TmV3QnVmZmVy KFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04NjUsNyAr ODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAqIHBhZ2UncyBkZWxl dGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgpICYmIFJl bGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIsIGJsa25vLCBH aXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIs IGhlYXByZWwsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAKIAkJCQly ZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5k ZXggZjY1ODY0MjU0YS4uYjc2NzhmM2MxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJZ2lzdHhsb2dEZWxldGUgKnhsZGF0YSA9IChnaXN0eGxv Z0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVmZmVyOwog CVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0 czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBk bywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9 IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRh TGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zmc2V0TnVt YmVyICp0b2RlbGV0ZTsKLQotCQkJdG9kZWxldGUgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hh ciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJbmRleE11 bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0JCX0KKwkJ UGFnZUluZGV4TXVsdGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRl KTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFzR2FyYmFnZShwYWdlKTsKIAkJR2lzdE1hcmtUdXBs ZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNzaWduTFNO KHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRlbGV0ZWQg cGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lzdFhMb2dQ YWdlUmV1c2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCSAgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIHsKIAlnaXN0eGxv Z1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA4LDYgKzYwMyw3IEBAIGdpc3RYTG9n UGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2Fj dGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19y ZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhlYXByZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7 CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENv bmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhpZDsKQEAgLTY3MiwxMSArNjY4LDEyIEBAIGdpc3RY TG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAgKi8KIFhMb2dSZWNQdHIKIGdpc3RYTG9nRGVs ZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqdG9kZWxldGUsIGludCBudG9kZWxl dGUsCi0JCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJ ICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgUmVsYXRpb24gaGVh cHJlbCkKIHsKIAlnaXN0eGxvZ0RlbGV0ZSB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsK IAorCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4bHJlYy5udG9kZWxldGUgPSBudG9kZWxldGU7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4u MDhjZWI5MTI4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4 MCw4ICs5ODAsMTAgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAlQYWdlCQlwYWdlOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlI YXNoUGFnZU9wYXF1ZSBwYWdlb3BhcXVlOworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAK IAl4bGRhdGEgPSAoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEo cmVjb3JkKTsKKwl0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYg d2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4g YmVmb3JlIHdlCkBAIC0xMDEwLDE1ICsxMDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVf cGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVm ZmVyR2V0UGFnZShidWZmZXIpOwogCi0JCWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQp ID4gU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51 c2VkOwotCi0JCQl1bnVzZWQgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEg KyBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRl KHBhZ2UsIHVudXNlZCwgeGxkYXRhLT5udHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11 bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRlLCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkg KiBNYXJrIHRoZSBwYWdlIGFzIG5vdCBjb250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBT ZWUgY29tbWVudHMgaW4KIAkJICogX2hhc2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFp bHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5 MS4uMjI2NTZiMjRlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpA QCAtNDMyLDYgKzQzMiw3IEBAIF9oYXNoX3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhyZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFz aF92YWN1dW1fb25lX3BhZ2UgeGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJ eGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhocmVsKTsKIAkJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJCQl4bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBlNjAyNGE5ODBiLi5kNDc4NzI0Yjlk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjg3Miw2ICs2ODcyLDcgQEAg aGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVwYXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZm ZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywg cGxhbnMsIG9mZnNldHMpOwogCiAJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0g c25hcHNob3RDb25mbGljdEhvcml6b247CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0 aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5z ID0gbnBsYW5zOwogCiAJCVhMb2dCZWdpbkluc2VydCgpOwpAQCAtODQ0Miw3ICs4NDQzLDcg QEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRl KQogICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxv Z19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1 ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxf aGVhcF92aXNpYmxlIHhscmVjOwpAQCAtODQ1NCw2ICs4NDU1LDggQEAgbG9nX2hlYXBfdmlz aWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZm ZXIgdm1fYnVmZmVyLAogCiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7CisJaWYgKFJl bGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKSkKKwkJeGxyZWMuZmxh Z3MgfD0gVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQo KTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2li bGUpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRl eCBjNGIxOTE2ZDM2Li4zOTJjNmU2NTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKQEAgLTcyMCw5ICs3MjAsMTQgQEAgaGVhcGFtX3JlbGF0aW9u X2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwK IAkJCQkJCQkJICptdWx0aV9jdXRvZmYpOwogCiAKLQkvKiBTZXQgdXAgc29ydGluZyBpZiB3 YW50ZWQgKi8KKwkvKgorCSAqIFNldCB1cCBzb3J0aW5nIGlmIHdhbnRlZC4gTmV3SGVhcCBp cyBiZWluZyBwYXNzZWQgdG8KKwkgKiB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcigpLCBpdCBj b3VsZCBoYXZlIGJlZW4gT2xkSGVhcCB0b28uIEl0IGRvZXMgbm90CisJICogcmVhbGx5IG1h dHRlciwgYXMgdGhlIGdvYWwgaXMgdG8gaGF2ZSBhIGhlYXAgcmVsYXRpb24gYmVpbmcgcGFz c2VkIHRvCisJICogX2J0X2xvZ19yZXVzZV9wYWdlKCkgKHdoaWNoIHNob3VsZCBub3QgYmUg Y2FsbGVkIGZyb20gdGhpcyBjb2RlIHBhdGgpLgorCSAqLwogCWlmICh1c2Vfc29ydCkKLQkJ dHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIob2xkVHVwRGVzYywgT2xkSW5k ZXgsCisJCXR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKG9sZFR1cERlc2Ms IE9sZEluZGV4LCBOZXdIZWFwLAogCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwK IAkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCWVsc2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNGU2NWNiY2FkZi4uM2YwMzQyMzUxZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQxOCw2ICs0MTgsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4 bF9oZWFwX3BydW5lIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVj LmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsYXRpb24pOwogCQkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBwcnN0YXRl LnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0 YXRlLm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDhmMTRjZjg1ZjMuLmFlNjI4 ZDc0N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI3MTAs NiArMjcxMCw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBE RUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8u c3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHZhY3Jl bC0+cmVsOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9u LgpAQCAtMjc1OSw2ICsyNzYwLDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlv biBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVt X2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+ YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CiAKIAkvKgogCSAq IFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNzRmZjAxYmIxNy4uZDFiYTg1OTg1MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjg4LDgg KzI4OCw3IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChy ZWNwdHIpKQogCQkJewogCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0g bG9nX2hlYXBfdmlzaWJsZShyZWwtPnJkX2xvY2F0b3IsIGhlYXBCdWYsIHZtQnVmLAotCQkJ CQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOworCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zp c2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJ LyoKIAkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19o aW50cz1vbiksIHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRl eCBmNGMxYTk3NGVmLi44YzZlODY3YzYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0aW5zZXJ0LmMKQEAgLTMwLDcgKzMwLDggQEAKICNkZWZpbmUgQlRSRUVfRkFTVFBBVEhf TUlOX0xFVkVMCTIKIAogCi1zdGF0aWMgQlRTdGFjayBfYnRfc2VhcmNoX2luc2VydChSZWxh dGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOworc3RhdGljIEJUU3RhY2sg X2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJ CQkJCQkgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CiBzdGF0aWMgVHJhbnNhY3Rpb25J ZCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQkJCSAgSW5kZXhV bmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCAqaXNfdW5pcXVlLApAQCAtNDEsOCArNDIs OSBAQCBzdGF0aWMgT2Zmc2V0TnVtYmVyIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCSAgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJCQkJCSAgQlRTdGFj ayBzdGFjaywKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVhcFJlbCk7Ci1zdGF0aWMgdm9pZCBf YnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwg QlRTdGFjayBzdGFjayk7Ci1zdGF0aWMgdm9pZCBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiBy ZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKK3N0YXRpYyB2b2lkIF9idF9zdGVwcmlnaHQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJICBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKTsKK3N0YXRpYyB2b2lkIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5LAogCQkJCQkJICAgQnVmZmVyIGJ1ZiwKIAkJCQkJCSAgIEJ1ZmZlciBjYnVmLAogCQkJ CQkJICAgQlRTdGFjayBzdGFjaywKQEAgLTUxLDEzICs1MywxMyBAQCBzdGF0aWMgdm9pZCBf YnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKIAkJ CQkJCSAgIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLAogCQkJCQkJICAgaW50IHBvc3Rpbmdv ZmYsCiAJCQkJCQkgICBib29sIHNwbGl0X29ubHlfcGFnZSk7Ci1zdGF0aWMgQnVmZmVyIF9i dF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCUJ1ZmZlciBjYnVmLCBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBu ZXdpdGVtc3osCi0JCQkJCQlJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3JpZ25l d2l0ZW0sCitzdGF0aWMgQnVmZmVyIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCQkJCUJ1ZmZlciBidWYsIEJ1 ZmZlciBjYnVmLCBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKKwkJCQkJCVNpemUgbmV3aXRl bXN6LCBJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3JpZ25ld2l0ZW0sCiAJCQkJ CQlJbmRleFR1cGxlIG5wb3N0aW5nLCB1aW50MTYgcG9zdGluZ29mZik7Ci1zdGF0aWMgdm9p ZCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEJ1ZmZlciBy YnVmLAotCQkJCQkJCSAgQlRTdGFjayBzdGFjaywgYm9vbCBpc3Jvb3QsIGJvb2wgaXNvbmx5 KTsKLXN0YXRpYyBCdWZmZXIgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1 ZiwgQnVmZmVyIHJidWYpOworc3RhdGljIHZvaWQgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCSAgQnVmZmVy IHJidWYsIEJUU3RhY2sgc3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSk7CitzdGF0 aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBfYnRfcGdh ZGR0dXAoUGFnZSBwYWdlLCBTaXplIGl0ZW1zaXplLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJ CQkJCU9mZnNldE51bWJlciBpdHVwX29mZiwgYm9vbCBuZXdmaXJzdGRhdGFpdGVtKTsKIHN0 YXRpYyB2b2lkIF9idF9kZWxldGVfb3JfZGVkdXBfb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwUmVsLApAQCAtMTA4LDcgKzExMCw3IEBAIF9idF9kb2luc2VydChSZWxh dGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAlib29sCQljaGVja2luZ3VuaXF1ZSA9IChj aGVja1VuaXF1ZSAhPSBVTklRVUVfQ0hFQ0tfTk8pOwogCiAJLyogd2UgbmVlZCBhbiBpbnNl cnRpb24gc2NhbiBrZXkgdG8gZG8gb3VyIHNlYXJjaCwgc28gYnVpbGQgb25lICovCi0JaXR1 cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJaXR1cF9rZXkgPSBfYnRfbWtz Y2Fua2V5KHJlbCwgaGVhcFJlbCwgaXR1cCk7CiAKIAlpZiAoY2hlY2tpbmd1bmlxdWUpCiAJ ewpAQCAtMTYyLDcgKzE2NCw3IEBAIHNlYXJjaDoKIAkgKiBzZWFyY2hpbmcgZnJvbSB0aGUg cm9vdCBwYWdlLiAgaW5zZXJ0c3RhdGUuYnVmIHdpbGwgaG9sZCBhIGJ1ZmZlciB0aGF0CiAJ ICogaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGFmdGVyd2FyZHMuCiAJICovCi0Jc3Rh Y2sgPSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSk7CisJc3RhY2sgPSBf YnRfc2VhcmNoX2luc2VydChyZWwsIGhlYXBSZWwsICZpbnNlcnRzdGF0ZSk7CiAKIAkvKgog CSAqIGNoZWNraW5ndW5pcXVlIGluc2VydHMgYXJlIG5vdCBhbGxvd2VkIHRvIGdvIGFoZWFk IHdoZW4gdHdvIHR1cGxlcyB3aXRoCkBAIC0yNTUsOCArMjU3LDggQEAgc2VhcmNoOgogCQkg Ki8KIAkJbmV3aXRlbW9mZiA9IF9idF9maW5kaW5zZXJ0bG9jKHJlbCwgJmluc2VydHN0YXRl LCBjaGVja2luZ3VuaXF1ZSwKIAkJCQkJCQkJCSAgIGluZGV4VW5jaGFuZ2VkLCBzdGFjaywg aGVhcFJlbCk7Ci0JCV9idF9pbnNlcnRvbnBnKHJlbCwgaXR1cF9rZXksIGluc2VydHN0YXRl LmJ1ZiwgSW52YWxpZEJ1ZmZlciwgc3RhY2ssCi0JCQkJCSAgIGl0dXAsIGluc2VydHN0YXRl Lml0ZW1zeiwgbmV3aXRlbW9mZiwKKwkJX2J0X2luc2VydG9ucGcocmVsLCBoZWFwUmVsLCBp dHVwX2tleSwgaW5zZXJ0c3RhdGUuYnVmLCBJbnZhbGlkQnVmZmVyLAorCQkJCQkgICBzdGFj aywgaXR1cCwgaW5zZXJ0c3RhdGUuaXRlbXN6LCBuZXdpdGVtb2ZmLAogCQkJCQkgICBpbnNl cnRzdGF0ZS5wb3N0aW5nb2ZmLCBmYWxzZSk7CiAJfQogCWVsc2UKQEAgLTMxMiw3ICszMTQs NyBAQCBzZWFyY2g6CiAgKiBzaW5jZSBlYWNoIHBlci1iYWNrZW5kIGNhY2hlIHdvbid0IHN0 YXkgdmFsaWQgZm9yIGxvbmcuCiAgKi8KIHN0YXRpYyBCVFN0YWNrCi1fYnRfc2VhcmNoX2lu c2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpCitfYnRfc2Vh cmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUSW5zZXJ0U3Rh dGUgaW5zZXJ0c3RhdGUpCiB7CiAJQXNzZXJ0KGluc2VydHN0YXRlLT5idWYgPT0gSW52YWxp ZEJ1ZmZlcik7CiAJQXNzZXJ0KCFpbnNlcnRzdGF0ZS0+Ym91bmRzX3ZhbGlkKTsKQEAgLTM3 NSw4ICszNzcsOCBAQCBfYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0 U3RhdGUgaW5zZXJ0c3RhdGUpCiAJfQogCiAJLyogQ2Fubm90IHVzZSBvcHRpbWl6YXRpb24g LS0gZGVzY2VuZCB0cmVlLCByZXR1cm4gcHJvcGVyIGRlc2NlbnQgc3RhY2sgKi8KLQlyZXR1 cm4gX2J0X3NlYXJjaChyZWwsIGluc2VydHN0YXRlLT5pdHVwX2tleSwgJmluc2VydHN0YXRl LT5idWYsIEJUX1dSSVRFLAotCQkJCQkgIE5VTEwpOworCXJldHVybiBfYnRfc2VhcmNoKHJl bCwgaGVhcHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAmaW5zZXJ0c3RhdGUtPmJ1ZiwK KwkJCQkJICBCVF9XUklURSwgTlVMTCk7CiB9CiAKIC8qCkBAIC04ODUsNyArODg3LDcgQEAg X2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogCQkJCQlfYnRfY29tcGFyZShyZWws IGl0dXBfa2V5LCBwYWdlLCBQX0hJS0VZKSA8PSAwKQogCQkJCQlicmVhazsKIAotCQkJCV9i dF9zdGVwcmlnaHQocmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJCV9idF9zdGVwcmln aHQocmVsLCBoZWFwUmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOwogCQkJCS8qIFVwZGF0ZSBs b2NhbCBzdGF0ZSBhZnRlciBzdGVwcGluZyByaWdodCAqLwogCQkJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGluc2VydHN0YXRlLT5idWYpOwogCQkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1 ZShwYWdlKTsKQEAgLTk2OSw3ICs5NzEsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlv biByZWwsCiAJCQkJcGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSAo UEdfVUlOVDMyX01BWCAvIDEwMCkpCiAJCQkJYnJlYWs7CiAKLQkJCV9idF9zdGVwcmlnaHQo cmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJX2J0X3N0ZXByaWdodChyZWwsIGhlYXBS ZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CiAJCQkvKiBVcGRhdGUgbG9jYWwgc3RhdGUgYWZ0 ZXIgc3RlcHBpbmcgcmlnaHQgKi8KIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2VydHN0 YXRlLT5idWYpOwogCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMTAy Miw3ICsxMDI0LDcgQEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogICogaW5k ZXhlcy4KICAqLwogc3RhdGljIHZvaWQKLV9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBC VEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQorX2J0X3N0ZXByaWdo dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIEJUU3RhY2sgc3RhY2spCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUg b3BhcXVlOwpAQCAtMTA0OCw3ICsxMDUwLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlvbiBy ZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAJCSAqLwog CQlpZiAoUF9JTkNPTVBMRVRFX1NQTElUKG9wYXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hf c3BsaXQocmVsLCByYnVmLCBzdGFjayk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVh cHJlbCwgcmJ1Ziwgc3RhY2spOwogCQkJcmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJCQljb250 aW51ZTsKIAkJfQpAQCAtMTA5OSw2ICsxMTAxLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAgKi8K IHN0YXRpYyB2b2lkCiBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCisJCQkgICBSZWxh dGlvbiBoZWFwcmVsLAogCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAogCQkJICAgQnVm ZmVyIGJ1ZiwKIAkJCSAgIEJ1ZmZlciBjYnVmLApAQCAtMTIwOSw4ICsxMjEyLDggQEAgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQlBc3NlcnQoIXNwbGl0X29ubHlfcGFnZSk7 CiAKIAkJLyogc3BsaXQgdGhlIGJ1ZmZlciBpbnRvIGxlZnQgYW5kIHJpZ2h0IGhhbHZlcyAq LwotCQlyYnVmID0gX2J0X3NwbGl0KHJlbCwgaXR1cF9rZXksIGJ1ZiwgY2J1ZiwgbmV3aXRl bW9mZiwgaXRlbXN6LCBpdHVwLAotCQkJCQkJIG9yaWdpdHVwLCBucG9zdGluZywgcG9zdGlu Z29mZik7CisJCXJidWYgPSBfYnRfc3BsaXQocmVsLCBoZWFwcmVsLCBpdHVwX2tleSwgYnVm LCBjYnVmLCBuZXdpdGVtb2ZmLCBpdGVtc3osCisJCQkJCQkgaXR1cCwgb3JpZ2l0dXAsIG5w b3N0aW5nLCBwb3N0aW5nb2ZmKTsKIAkJUHJlZGljYXRlTG9ja1BhZ2VTcGxpdChyZWwsCiAJ CQkJCQkJICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSwKIAkJCQkJCQkgICBCdWZmZXJH ZXRCbG9ja051bWJlcihyYnVmKSk7CkBAIC0xMjMzLDcgKzEyMzYsNyBAQCBfYnRfaW5zZXJ0 b25wZyhSZWxhdGlvbiByZWwsCiAJCSAqIHBhZ2UuCiAJCSAqLS0tLS0tLS0tLQogCQkgKi8K LQkJX2J0X2luc2VydF9wYXJlbnQocmVsLCBidWYsIHJidWYsIHN0YWNrLCBpc3Jvb3QsIGlz b25seSk7CisJCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgaGVhcHJlbCwgYnVmLCByYnVmLCBz dGFjaywgaXNyb290LCBpc29ubHkpOwogCX0KIAllbHNlCiAJewpAQCAtMTI1NCw3ICsxMjU3 LDcgQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJQXNzZXJ0KCFpc2xlYWYp OwogCQkJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoY2J1ZikpOwogCi0JCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJCQltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CiAJ CQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCQkJbWV0YWQgPSBCVFBhZ2VH ZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTE0MTgsNyArMTQyMSw3IEBAIF9idF9pbnNlcnRvbnBn KFJlbGF0aW9uIHJlbCwKIAkJICogY2FsbCBfYnRfZ2V0cm9vdGhlaWdodCB3aGlsZSBob2xk aW5nIGEgYnVmZmVyIGxvY2suCiAJCSAqLwogCQlpZiAoQmxvY2tOdW1iZXJJc1ZhbGlkKGJs b2NrY2FjaGUpICYmCi0JCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwpID49IEJUUkVFX0ZBU1RQ QVRIX01JTl9MRVZFTCkKKwkJCV9idF9nZXRyb290aGVpZ2h0KHJlbCwgaGVhcHJlbCkgPj0g QlRSRUVfRkFTVFBBVEhfTUlOX0xFVkVMKQogCQkJUmVsYXRpb25TZXRUYXJnZXRCbG9jayhy ZWwsIGJsb2NrY2FjaGUpOwogCX0KIApAQCAtMTQ1OSw4ICsxNDYyLDggQEAgX2J0X2luc2Vy dG9ucGcoUmVsYXRpb24gcmVsLAogICoJCVRoZSBwaW4gYW5kIGxvY2sgb24gYnVmIGFyZSBt YWludGFpbmVkLgogICovCiBzdGF0aWMgQnVmZmVyCi1fYnRfc3BsaXQoUmVsYXRpb24gcmVs LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAotCQkg IE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5ld2l0ZW1zeiwgSW5kZXhUdXBsZSBu ZXdpdGVtLAorX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRT Y2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLAorCQkgIEJ1ZmZlciBjYnVmLCBPZmZz ZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBuZXdpdGVtc3osIEluZGV4VHVwbGUgbmV3aXRl bSwKIAkJICBJbmRleFR1cGxlIG9yaWduZXdpdGVtLCBJbmRleFR1cGxlIG5wb3N0aW5nLCB1 aW50MTYgcG9zdGluZ29mZikKIHsKIAlCdWZmZXIJCXJidWY7CkBAIC0xNzEyLDcgKzE3MTUs NyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1 ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqIHdheSBiZWNhdXNlIGl0IGF2b2lkcyBhbiB1 bm5lY2Vzc2FyeSBQQU5JQyB3aGVuIGVpdGhlciBvcmlncGFnZSBvciBpdHMKIAkgKiBleGlz dGluZyBzaWJsaW5nIHBhZ2UgYXJlIGNvcnJ1cHQuCiAJICovCi0JcmJ1ZiA9IF9idF9nZXRi dWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVh cHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKIAlyaWdodHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJi dWYpOwogCXJpZ2h0cGFnZW51bWJlciA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJidWYpOwog CS8qIHJpZ2h0cGFnZSB3YXMgaW5pdGlhbGl6ZWQgYnkgX2J0X2dldGJ1ZiAqLwpAQCAtMTg4 NSw3ICsxODg4LDcgQEAgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0 dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwKIAkgKi8KIAlpZiAoIWlzcmlnaHRt b3N0KQogCXsKLQkJc2J1ZiA9IF9idF9nZXRidWYocmVsLCBvb3BhcXVlLT5idHBvX25leHQs IEJUX1dSSVRFKTsKKwkJc2J1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBvb3BhcXVl LT5idHBvX25leHQsIEJUX1dSSVRFKTsKIAkJc3BhZ2UgPSBCdWZmZXJHZXRQYWdlKHNidWYp OwogCQlzb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHNwYWdlKTsKIAkJaWYgKHNvcGFxdWUt PmJ0cG9fcHJldiAhPSBvcmlncGFnZW51bWJlcikKQEAgLTIwOTIsNiArMjA5NSw3IEBAIF9i dF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1 ZiwgQnVmZmVyIGNidWYsCiAgKi8KIHN0YXRpYyB2b2lkCiBfYnRfaW5zZXJ0X3BhcmVudChS ZWxhdGlvbiByZWwsCisJCQkJICBSZWxhdGlvbiBoZWFwcmVsLAogCQkJCSAgQnVmZmVyIGJ1 ZiwKIAkJCQkgIEJ1ZmZlciByYnVmLAogCQkJCSAgQlRTdGFjayBzdGFjaywKQEAgLTIxMTgs NyArMjEyMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJQXNzZXJ0 KHN0YWNrID09IE5VTEwpOwogCQlBc3NlcnQoaXNvbmx5KTsKIAkJLyogY3JlYXRlIGEgbmV3 IHJvb3Qgbm9kZSBhbmQgdXBkYXRlIHRoZSBtZXRhcGFnZSAqLwotCQlyb290YnVmID0gX2J0 X25ld3Jvb3QocmVsLCBidWYsIHJidWYpOworCQlyb290YnVmID0gX2J0X25ld3Jvb3QocmVs LCBoZWFwcmVsLCBidWYsIHJidWYpOwogCQkvKiByZWxlYXNlIHRoZSBzcGxpdCBidWZmZXJz ICovCiAJCV9idF9yZWxidWYocmVsLCByb290YnVmKTsKIAkJX2J0X3JlbGJ1ZihyZWwsIHJi dWYpOwpAQCAtMjE1Nyw3ICsyMTYxLDggQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24g cmVsLAogCQkJCQkgQmxvY2tOdW1iZXJJc1ZhbGlkKFJlbGF0aW9uR2V0VGFyZ2V0QmxvY2so cmVsKSkpKTsKIAogCQkJLyogRmluZCB0aGUgbGVmdG1vc3QgcGFnZSBhdCB0aGUgbmV4dCBs ZXZlbCB1cCAqLwotCQkJcGJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQocmVsLCBvcGFxdWUtPmJ0 cG9fbGV2ZWwgKyAxLCBmYWxzZSwgTlVMTCk7CisJCQlwYnVmID0gX2J0X2dldF9lbmRwb2lu dChyZWwsIGhlYXByZWwsIG9wYXF1ZS0+YnRwb19sZXZlbCArIDEsIGZhbHNlLAorCQkJCQkJ CQkJTlVMTCk7CiAJCQkvKiBTZXQgdXAgYSBwaG9ueSBzdGFjayBlbnRyeSBwb2ludGluZyB0 aGVyZSAqLwogCQkJc3RhY2sgPSAmZmFrZXN0YWNrOwogCQkJc3RhY2stPmJ0c19ibGtubyA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHBidWYpOwpAQCAtMjE4Myw3ICsyMTg4LDcgQEAgX2J0 X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkgKiBuZXcgZG93bmxpbmsgd2lsbCBi ZSBpbnNlcnRlZCBhdCB0aGUgY29ycmVjdCBvZmZzZXQuIEV2ZW4gYnVmJ3MKIAkJICogcGFy ZW50IG1heSBoYXZlIGNoYW5nZWQuCiAJCSAqLwotCQlwYnVmID0gX2J0X2dldHN0YWNrYnVm KHJlbCwgc3RhY2ssIGJrbnVtKTsKKwkJcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIGhl YXByZWwsIHN0YWNrLCBia251bSk7CiAKIAkJLyoKIAkJICogVW5sb2NrIHRoZSByaWdodCBj aGlsZC4gIFRoZSBsZWZ0IGNoaWxkIHdpbGwgYmUgdW5sb2NrZWQgaW4KQEAgLTIyMDcsNyAr MjIxMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBia251bSwgcmJrbnVtKSkpOwogCiAJCS8q IFJlY3Vyc2l2ZWx5IGluc2VydCBpbnRvIHRoZSBwYXJlbnQgKi8KLQkJX2J0X2luc2VydG9u cGcocmVsLCBOVUxMLCBwYnVmLCBidWYsIHN0YWNrLT5idHNfcGFyZW50LAorCQlfYnRfaW5z ZXJ0b25wZyhyZWwsIGhlYXByZWwsIE5VTEwsIHBidWYsIGJ1Ziwgc3RhY2stPmJ0c19wYXJl bnQsCiAJCQkJCSAgIG5ld19pdGVtLCBNQVhBTElHTihJbmRleFR1cGxlU2l6ZShuZXdfaXRl bSkpLAogCQkJCQkgICBzdGFjay0+YnRzX29mZnNldCArIDEsIDAsIGlzb25seSk7CiAKQEAg LTIyMjcsNyArMjIzMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKICAq IGFuZCB1bnBpbm5lZC4KICAqLwogdm9pZAotX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQorX2J0X2ZpbmlzaF9zcGxpdChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNr KQogewogCVBhZ2UJCWxwYWdlID0gQnVmZmVyR2V0UGFnZShsYnVmKTsKIAlCVFBhZ2VPcGFx dWUgbHBhZ2VvcCA9IEJUUGFnZUdldE9wYXF1ZShscGFnZSk7CkBAIC0yMjQwLDcgKzIyNDUs NyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3Rh Y2sgc3RhY2spCiAJQXNzZXJ0KFBfSU5DT01QTEVURV9TUExJVChscGFnZW9wKSk7CiAKIAkv KiBMb2NrIHJpZ2h0IHNpYmxpbmcsIHRoZSBvbmUgbWlzc2luZyB0aGUgZG93bmxpbmsgKi8K LQlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxwYWdlb3AtPmJ0cG9fbmV4dCwgQlRfV1JJVEUp OworCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgbHBhZ2VvcC0+YnRwb19uZXh0 LCBCVF9XUklURSk7CiAJcnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCXJwYWdlb3Ag PSBCVFBhZ2VHZXRPcGFxdWUocnBhZ2UpOwogCkBAIC0yMjUyLDcgKzIyNTcsNyBAQCBfYnRf ZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2sp CiAJCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIAogCQkvKiBhY3F1aXJlIGxvY2sgb24gdGhl IG1ldGFwYWdlICovCi0JCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBB R0UsIEJUX1dSSVRFKTsKKwkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBC VFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOwogCQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1l dGFidWYpOwogCQltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIApAQCAtMjI2OSw3 ICsyMjc0LDcgQEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVm LCBCVFN0YWNrIHN0YWNrKQogCWVsb2coREVCVUcxLCAiZmluaXNoaW5nIGluY29tcGxldGUg c3BsaXQgb2YgJXUvJXUiLAogCQkgQnVmZmVyR2V0QmxvY2tOdW1iZXIobGJ1ZiksIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKHJidWYpKTsKIAotCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgbGJ1 ZiwgcmJ1Ziwgc3RhY2ssIHdhc3Jvb3QsIHdhc29ubHkpOworCV9idF9pbnNlcnRfcGFyZW50 KHJlbCwgaGVhcHJlbCwgbGJ1ZiwgcmJ1Ziwgc3RhY2ssIHdhc3Jvb3QsIHdhc29ubHkpOwog fQogCiAvKgpAQCAtMjMwNCw3ICsyMzA5LDcgQEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlv biByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQogICoJCW9mZnNldCBudW1iZXIg YnRzX29mZnNldCArIDEuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9u IHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQpCitfYnRfZ2V0c3RhY2ti dWYoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9j a051bWJlciBjaGlsZCkKIHsKIAlCbG9ja051bWJlciBibGtubzsKIAlPZmZzZXROdW1iZXIg c3RhcnQ7CkBAIC0yMzE4LDEzICsyMzIzLDEzIEBAIF9idF9nZXRzdGFja2J1ZihSZWxhdGlv biByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNoaWxkKQogCQlQYWdlCQlwYWdl OwogCQlCVFBhZ2VPcGFxdWUgb3BhcXVlOwogCi0JCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBi bGtubywgQlRfV1JJVEUpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgYmxr bm8sIEJUX1dSSVRFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJb3BhcXVl ID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCiAJCWlmIChQX0lOQ09NUExFVEVfU1BMSVQo b3BhcXVlKSkKIAkJewotCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1Ziwgc3RhY2stPmJ0 c19wYXJlbnQpOworCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXByZWwsIGJ1Ziwgc3Rh Y2stPmJ0c19wYXJlbnQpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMjQyOCw3ICsyNDMz LDcgQEAgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxv Y2tOdW1iZXIgY2hpbGQpCiAgKgkJbGJ1ZiwgcmJ1ZiAmIHJvb3RidWYuCiAgKi8KIHN0YXRp YyBCdWZmZXIKLV9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZl ciByYnVmKQorX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCiB7CiAJQnVmZmVyCQlyb290YnVmOwogCVBhZ2UJ CWxwYWdlLApAQCAtMjQ1NCwxMiArMjQ1OSwxMiBAQCBfYnRfbmV3cm9vdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZikKIAlsb3BhcXVlID0gQlRQYWdlR2V0T3Bh cXVlKGxwYWdlKTsKIAogCS8qIGdldCBhIG5ldyByb290IHBhZ2UgKi8KLQlyb290YnVmID0g X2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9XUklURSk7CisJcm9vdGJ1ZiA9IF9idF9nZXRi dWYocmVsLCBoZWFwcmVsLCBQX05FVywgQlRfV1JJVEUpOwogCXJvb3RwYWdlID0gQnVmZmVy R2V0UGFnZShyb290YnVmKTsKIAlyb290YmxrbnVtID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIo cm9vdGJ1Zik7CiAKIAkvKiBhY3F1aXJlIGxvY2sgb24gdGhlIG1ldGFwYWdlICovCi0JbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCW1l dGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dS SVRFKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCW1ldGFkID0gQlRQ YWdlR2V0TWV0YShtZXRhcGcpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j CmluZGV4IDNmZWVlMjhkMTkuLjE1MWFkMzdhNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cGFnZS5jCkBAIC0zOCwyNSArMzgsMjQgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCiAKIHN0YXRpYyBCVE1ldGFQYWdlRGF0YSAqX2J0X2dldG1ldGEoUmVsYXRpb24g cmVsLCBCdWZmZXIgbWV0YWJ1Zik7Ci1zdGF0aWMgdm9pZCBfYnRfbG9nX3JldXNlX3BhZ2Uo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKK3N0YXRpYyB2b2lkIF9idF9sb2df cmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkJCQkJCSAgIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpOwotc3RhdGlj IHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCitz dGF0aWMgdm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBu ZGVsZXRhYmxlLAogCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51 cGRhdGFibGUpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUoQlRWYWN1dW1Q b3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkgT2Zmc2V0TnVt YmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRidWZsZW4sIGJv b2wgbmVlZHN3YWwpOwotc3RhdGljIGJvb2wgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLAotCQkJCQkJCQkgICBCVFN0YWNrIHN0YWNrKTsK K3N0YXRpYyBib29sIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLAorCQkJCQkJCQkgICBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFj ayk7CiBzdGF0aWMgYm9vbCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwKIAkJCQkJCQkJCSBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJ CQkJCQkJCQkgYm9vbCAqcmlnaHRzaWJfZW1wdHksCiAJCQkJCQkJCQkgQlRWYWNTdGF0ZSAq dnN0YXRlKTsKLXN0YXRpYyBib29sIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQsCi0JCQkJCQkJCQlCVFN0YWNrIHN0YWNrLAotCQkJ CQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50LAotCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpw b2Zmc2V0LAorc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkJQmxvY2tOdW1iZXIgY2hpbGQsIEJU U3RhY2sgc3RhY2ssCisJCQkJCQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQsIE9mZnNldE51 bWJlciAqcG9mZnNldCwKIAkJCQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCiAJCQkJ CQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpOwogc3RhdGljIHZvaWQgX2J0 X3BlbmRpbmdmc21fYWRkKEJUVmFjU3RhdGUgKnZzdGF0ZSwgQmxvY2tOdW1iZXIgdGFyZ2V0 LApAQCAtMTc4LDcgKzE3Nyw3IEBAIF9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVy IG1ldGFidWYpCiAgKiBpbmRleCB0dXBsZXMgbmVlZGVkIHRvIGJlIGRlbGV0ZWQuCiAgKi8K IGJvb2wKLV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCitfYnRfdmFj dXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewog CUJ1ZmZlcgkJbWV0YWJ1ZjsKIAlQYWdlCQltZXRhcGc7CkBAIC0xOTEsNyArMTkwLDcgQEAg X2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKIAkgKgogCSAqIE5vdGUg dGhhdCB3ZSBkZWxpYmVyYXRlbHkgYXZvaWQgdXNpbmcgY2FjaGVkIHZlcnNpb24gb2YgbWV0 YXBhZ2UgaGVyZS4KIAkgKi8KLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01F VEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWws IEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1l dGFidWYpOwogCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCWJ0bV92ZXJzaW9u ID0gbWV0YWQtPmJ0bV92ZXJzaW9uOwpAQCAtMjMxLDcgKzIzMCw3IEBAIF9idF92YWN1dW1f bmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAgKiBmaW5hbGl6ZWQuCiAgKi8KIHZvaWQK LV9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2Rl bHBhZ2VzKQorX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiB7CiAJQnVmZmVyCQltZXRhYnVm OwogCVBhZ2UJCW1ldGFwZzsKQEAgLTI1NSw3ICsyNTQsNyBAQCBfYnRfc2V0X2NsZWFudXBf aW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKIAkgKiBubyBs b25nZXIgdXNlZCBhcyBvZiBQb3N0Z3JlU1FMIDE0LiAgV2Ugc2V0IGl0IHRvIC0xLjAgb24g cmV3cml0ZSwganVzdAogCSAqIHRvIGJlIGNvbnNpc3RlbnQuCiAJICovCi0JbWV0YWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJ bWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAltZXRhZCA9IEJUUGFnZUdldE1l dGEobWV0YXBnKTsKIApAQCAtMzQwLDcgKzMzOSw3IEBAIF9idF9zZXRfY2xlYW51cF9pbmZv KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogICoJCVRoZSBtZXRh ZGF0YSBwYWdlIGlzIG5vdCBsb2NrZWQgb3IgcGlubmVkIG9uIGV4aXQuCiAgKi8KIEJ1ZmZl cgotX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQorX2J0X2dldHJvb3Qo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBpbnQgYWNjZXNzKQogewogCUJ1ZmZl cgkJbWV0YWJ1ZjsKIAlCdWZmZXIJCXJvb3RidWY7CkBAIC0zNzAsNyArMzY5LDcgQEAgX2J0 X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogCQlBc3NlcnQocm9vdGJsa25v ICE9IFBfTk9ORSk7CiAJCXJvb3RsZXZlbCA9IG1ldGFkLT5idG1fZmFzdGxldmVsOwogCi0J CXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcm9vdGJsa25vLCBCVF9SRUFEKTsKKwkJcm9v dGJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCByb290Ymxrbm8sIEJUX1JFQUQpOwog CQlyb290cGFnZSA9IEJ1ZmZlckdldFBhZ2Uocm9vdGJ1Zik7CiAJCXJvb3RvcGFxdWUgPSBC VFBhZ2VHZXRPcGFxdWUocm9vdHBhZ2UpOwogCkBAIC0zOTYsNyArMzk1LDcgQEAgX2J0X2dl dHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogCQlyZWwtPnJkX2FtY2FjaGUgPSBO VUxMOwogCX0KIAotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0Us IEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVf TUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVm KTsKIAogCS8qIGlmIG5vIHJvb3QgcGFnZSBpbml0aWFsaXplZCB5ZXQsIGRvIGl0ICovCkBA IC00MjksNyArNDI4LDcgQEAgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNz KQogCQkJICogdG8gb3B0aW1pemUgdGhpcyBjYXNlLikKIAkJCSAqLwogCQkJX2J0X3JlbGJ1 ZihyZWwsIG1ldGFidWYpOwotCQkJcmV0dXJuIF9idF9nZXRyb290KHJlbCwgYWNjZXNzKTsK KwkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIGFjY2Vzcyk7CiAJCX0KIAog CQkvKgpAQCAtNDM3LDcgKzQzNiw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50 IGFjY2VzcykKIAkJICogdGhlIG5ldyByb290IHBhZ2UuICBTaW5jZSB0aGlzIGlzIHRoZSBm aXJzdCBwYWdlIGluIHRoZSB0cmVlLCBpdCdzCiAJCSAqIGEgbGVhZiBhcyB3ZWxsIGFzIHRo ZSByb290LgogCQkgKi8KLQkJcm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRf V1JJVEUpOworCQlyb290YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIFBfTkVXLCBC VF9XUklURSk7CiAJCXJvb3RibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJvb3RidWYp OwogCQlyb290cGFnZSA9IEJ1ZmZlckdldFBhZ2Uocm9vdGJ1Zik7CiAJCXJvb3RvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocm9vdHBhZ2UpOwpAQCAtNTc0LDcgKzU3Myw3IEBAIF9idF9n ZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKICAqIG1vdmluZyB0byB0aGUgcm9v dCAtLS0gdGhhdCdkIGRlYWRsb2NrIGFnYWluc3QgYW55IGNvbmN1cnJlbnQgcm9vdCBzcGxp dC4pCiAgKi8KIEJ1ZmZlcgotX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCkKK19idF9n ZXR0cnVlcm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQnVmZmVy CQltZXRhYnVmOwogCVBhZ2UJCW1ldGFwZzsKQEAgLTU5Niw3ICs1OTUsNyBAQCBfYnRfZ2V0 dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQogCQlwZnJlZShyZWwtPnJkX2FtY2FjaGUpOwogCXJl bC0+cmRfYW1jYWNoZSA9IE5VTEw7CiAKLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJU UkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhl YXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQ YWdlKG1ldGFidWYpOwogCW1ldGFvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUobWV0YXBnKTsK IAltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKQEAgLTY2OSw3ICs2NjgsNyBAQCBf YnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQogICoJCWFib3V0IHVwZGF0aW5nIHByZXZp b3VzbHkgY2FjaGVkIGRhdGEuCiAgKi8KIGludAotX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRp b24gcmVsKQorX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFw cmVsKQogewogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIApAQCAtNjc3LDcgKzY3Niw3IEBA IF9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCkKIAl7CiAJCUJ1ZmZlcgkJbWV0YWJ1 ZjsKIAotCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9S RUFEKTsKKwkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRB UEFHRSwgQlRfUkVBRCk7CiAJCW1ldGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVmKTsK IAogCQkvKgpAQCAtNzMzLDcgKzczMiw3IEBAIF9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9u IHJlbCkKICAqCQlwZ191cGdyYWRlJ2QgZnJvbSBQb3N0Z3JlcyAxMi4KICAqLwogdm9pZAot X2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29s ICphbGxlcXVhbGltYWdlKQorX2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29sICphbGxlcXVhbGltYWdlKQog ewogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIApAQCAtNzQxLDcgKzc0MCw3IEBAIF9idF9t ZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxs ZXF1YWxpbWFnZSkKIAl7CiAJCUJ1ZmZlcgkJbWV0YWJ1ZjsKIAotCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwkJbWV0YWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJCW1l dGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVmKTsKIAogCQkvKgpAQCAtODI1LDcgKzgy NCw4IEBAIF9idF9jaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKQogICogTG9n IHRoZSByZXVzZSBvZiBhIHBhZ2UgZnJvbSB0aGUgRlNNLgogICovCiBzdGF0aWMgdm9pZAot X2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCitfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywKKwkJCQkgICBGdWxs VHJhbnNhY3Rpb25JZCBzYWZleGlkKQogewogCXhsX2J0cmVlX3JldXNlX3BhZ2UgeGxyZWNf cmV1c2U7CiAKQEAgLTgzNiw2ICs4MzYsNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkK IAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwg PSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhs cmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxv Y2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNh ZmV4aWQ7CkBAIC04NjgsNyArODY5LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAg KgkJYXMgX2J0X2xvY2tidWYoKS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0YnVmKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MpCitfYnRfZ2V0YnVmKFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nl c3MpCiB7CiAJQnVmZmVyCQlidWY7CiAKQEAgLTk0Myw3ICs5NDQsNyBAQCBfYnRfZ2V0YnVm KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MpCiAJCQkJCSAq IHRoYW4gc2FmZXhpZCB2YWx1ZQogCQkJCQkgKi8KIAkJCQkJaWYgKFhMb2dTdGFuZGJ5SW5m b0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKLQkJCQkJCV9idF9sb2dfcmV1 c2VfcGFnZShyZWwsIGJsa25vLAorCQkJCQkJX2J0X2xvZ19yZXVzZV9wYWdlKHJlbCwgaGVh cHJlbCwgYmxrbm8sCiAJCQkJCQkJCQkJICAgQlRQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsK IAogCQkJCQkvKiBPa2F5IHRvIHVzZSBwYWdlLiAgUmUtaW5pdGlhbGl6ZSBhbmQgcmV0dXJu IGl0LiAqLwpAQCAtMTI5Myw3ICsxMjk0LDcgQEAgX2J0X2RlbGl0ZW1zX3ZhY3V1bShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCiAgKiBjbGVhciBwYWdlJ3MgVkFDVVVNIGN5Y2xlIElE LgogICovCiBzdGF0aWMgdm9pZAotX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCitfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKIAkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVs ZXRhYmxlLAogCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFi bGUpCkBAIC0xMzU4LDYgKzEzNTksNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCXhsX2J0cmVlX2Rl bGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRlLmlzQ2F0YWxvZ1JlbCA9IFJl bGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJCXhscmVj X2RlbGV0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uOwogCQl4bHJlY19kZWxldGUubmRlbGV0ZWQgPSBuZGVsZXRhYmxlOwogCQl4bHJlY19k ZWxldGUubnVwZGF0ZWQgPSBudXBkYXRhYmxlOwpAQCAtMTY4NCw4ICsxNjg2LDggQEAgX2J0 X2RlbGl0ZW1zX2RlbGV0ZV9jaGVjayhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0 aW9uIGhlYXBSZWwsCiAJfQogCiAJLyogUGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBU SURzKSB1c2luZyBkZWxldGFibGUgKG9yIHVwZGF0YWJsZSkgKi8KLQlfYnRfZGVsaXRlbXNf ZGVsZXRlKHJlbCwgYnVmLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCWRlbGV0 YWJsZSwgbmRlbGV0YWJsZSwgdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKKwlfYnRfZGVsaXRl bXNfZGVsZXRlKHJlbCwgaGVhcFJlbCwgYnVmLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg ZGVsZXRhYmxlLAorCQkJCQkJbmRlbGV0YWJsZSwgdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsK IAogCS8qIGJlIHRpZHkgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51cGRhdGFibGU7IGkr KykKQEAgLTE3MDYsNyArMTcwOCw4IEBAIF9idF9kZWxpdGVtc19kZWxldGVfY2hlY2soUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFwUmVsLAogICogc2FtZSBsZXZl bCBtdXN0IGFsd2F5cyBiZSBsb2NrZWQgbGVmdCB0byByaWdodCB0byBhdm9pZCBkZWFkbG9j a3MuCiAgKi8KIHN0YXRpYyBib29sCi1fYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCitfYnRfbGVm dHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051 bWJlciBsZWZ0c2liLAorCQkJCQkgIEJsb2NrTnVtYmVyIHRhcmdldCkKIHsKIAlCdWZmZXIJ CWJ1ZjsKIAlQYWdlCQlwYWdlOwpAQCAtMTcxNyw3ICsxNzIwLDcgQEAgX2J0X2xlZnRzaWJf c3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1i ZXIgdGFyZ2V0KQogCWlmIChsZWZ0c2liID09IFBfTk9ORSkKIAkJcmV0dXJuIGZhbHNlOwog Ci0JYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1JFQUQpOworCWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBsZWZ0c2liLCBCVF9SRUFEKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWYpOwogCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApA QCAtMTc2Myw3ICsxNzY2LDcgQEAgX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQogICogdG8tYmUt ZGVsZXRlZCBzdWJ0cmVlLikKICAqLwogc3RhdGljIGJvb2wKLV9idF9yaWdodHNpYl9oYWxm ZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIpCitfYnRf cmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBh Z2U7CkBAIC0xNzcyLDcgKzE3NzUsNyBAQCBfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQogCiAJQXNzZXJ0KGxlYWZy aWdodHNpYiAhPSBQX05PTkUpOwogCi0JYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlYWZyaWdo dHNpYiwgQlRfUkVBRCk7CisJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxlYWZy aWdodHNpYiwgQlRfUkVBRCk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlvcGFx dWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKQEAgLTE5NjEsMTcgKzE5NjQsMTggQEAg X2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAq dnN0YXRlKQogCQkJCSAqIG1hcmtlZCB3aXRoIElOQ09NUExFVEVfU1BMSVQgZmxhZyBiZWZv cmUgcHJvY2VlZGluZwogCQkJCSAqLwogCQkJCUFzc2VydChsZWFmYmxrbm8gPT0gc2NhbmJs a25vKTsKLQkJCQlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgbGVmdHNpYiwgbGVh ZmJsa25vKSkKKwkJCQlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgdnN0YXRlLT5p bmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8pKQogCQkJCXsKIAkJCQkJUmVsZWFz ZUJ1ZmZlcihsZWFmYnVmKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAogCQkJCS8qIHdlIG5l ZWQgYW4gaW5zZXJ0aW9uIHNjYW4ga2V5IGZvciB0aGUgc2VhcmNoLCBzbyBidWlsZCBvbmUg Ki8KLQkJCQlpdHVwX2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCB0YXJnZXRrZXkpOworCQkJ CWl0dXBfa2V5ID0gX2J0X21rc2NhbmtleShyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwg dGFyZ2V0a2V5KTsKIAkJCQkvKiBmaW5kIHRoZSBsZWZ0bW9zdCBsZWFmIHBhZ2Ugd2l0aCBt YXRjaGluZyBwaXZvdC9oaWdoIGtleSAqLwogCQkJCWl0dXBfa2V5LT5waXZvdHNlYXJjaCA9 IHRydWU7Ci0JCQkJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgaXR1cF9rZXksICZzbGVhZmJ1 ZiwgQlRfUkVBRCwgTlVMTCk7CisJCQkJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgdnN0YXRl LT5pbmZvLT5oZWFwcmVsLCBpdHVwX2tleSwKKwkJCQkJCQkJICAgJnNsZWFmYnVmLCBCVF9S RUFELCBOVUxMKTsKIAkJCQkvKiB3b24ndCBuZWVkIGEgc2Vjb25kIGxvY2sgb3IgcGluIG9u IGxlYWZidWYgKi8KIAkJCQlfYnRfcmVsYnVmKHJlbCwgc2xlYWZidWYpOwogCkBAIC0yMDAy LDcgKzIwMDYsNyBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCQkgKiBsZWFmYnVmIHBhZ2UgaGFsZi1kZWFkLgog CQkJICovCiAJCQlBc3NlcnQoUF9JU0xFQUYob3BhcXVlKSAmJiAhUF9JR05PUkUob3BhcXVl KSk7Ci0JCQlpZiAoIV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQocmVsLCBsZWFmYnVmLCBzdGFj aykpCisJCQlpZiAoIV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQocmVsLCB2c3RhdGUtPmluZm8t PmhlYXByZWwsIGxlYWZidWYsIHN0YWNrKSkKIAkJCXsKIAkJCQlfYnRfcmVsYnVmKHJlbCwg bGVhZmJ1Zik7CiAJCQkJcmV0dXJuOwpAQCAtMjA2NSw3ICsyMDY5LDcgQEAgX2J0X3BhZ2Vk ZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQog CQlpZiAoIXJpZ2h0c2liX2VtcHR5KQogCQkJYnJlYWs7CiAKLQkJbGVhZmJ1ZiA9IF9idF9n ZXRidWYocmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOworCQlsZWFmYnVmID0gX2J0X2dldGJ1 ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKIAl9 CiB9CiAKQEAgLTIwODQsNyArMjA4OCw4IEBAIF9idF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKICAqIHN1Y2Nlc3NmdWxseS4K ICAqLwogc3RhdGljIGJvb2wKLV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFjaykKK19idF9tYXJrX3BhZ2VfaGFsZmRl YWQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKKwkJ CQkJICAgQlRTdGFjayBzdGFjaykKIHsKIAlCbG9ja051bWJlciBsZWFmYmxrbm87CiAJQmxv Y2tOdW1iZXIgbGVhZnJpZ2h0c2liOwpAQCAtMjExOSw3ICsyMTI0LDcgQEAgX2J0X21hcmtf cGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0 YWNrKQogCSAqIGRlbGV0ZSB0aGUgZG93bmxpbmsuICBJdCB3b3VsZCBmYWlsIHRoZSAicmln aHQgc2libGluZyBvZiB0YXJnZXQgcGFnZQogCSAqIGlzIGFsc28gdGhlIG5leHQgY2hpbGQg aW4gcGFyZW50IHBhZ2UiIGNyb3NzLWNoZWNrIGJlbG93LgogCSAqLwotCWlmIChfYnRfcmln aHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwgbGVhZnJpZ2h0c2liKSkKKwlpZiAoX2J0X3JpZ2h0 c2liX2hhbGZkZWFkZmxhZyhyZWwsIGhlYXByZWwsIGxlYWZyaWdodHNpYikpCiAJewogCQll bG9nKERFQlVHMSwgImNvdWxkIG5vdCBkZWxldGUgcGFnZSAldSBiZWNhdXNlIGl0cyByaWdo dCBzaWJsaW5nICV1IGlzIGhhbGYtZGVhZCIsCiAJCQkgbGVhZmJsa25vLCBsZWFmcmlnaHRz aWIpOwpAQCAtMjE0Myw3ICsyMTQ4LDcgQEAgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNrKQogCSAqLwogCXRvcHBh cmVudCA9IGxlYWZibGtubzsKIAl0b3BwYXJlbnRyaWdodHNpYiA9IGxlYWZyaWdodHNpYjsK LQlpZiAoIV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgbGVhZmJsa25vLCBzdGFjaywK KwlpZiAoIV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgaGVhcHJlbCwgbGVhZmJsa25v LCBzdGFjaywKIAkJCQkJCQkJICZzdWJ0cmVlcGFyZW50LCAmcG9mZnNldCwKIAkJCQkJCQkJ ICZ0b3BwYXJlbnQsICZ0b3BwYXJlbnRyaWdodHNpYikpCiAJCXJldHVybiBmYWxzZTsKQEAg LTIzNjMsNyArMjM2OCw3IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0 YXJnZXQgIT0gbGVhZmJsa25vKTsKIAogCQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9m IHRoZSB0YXJnZXQncyBsZWZ0IHNpYmxpbmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWws IHRhcmdldCwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIHRhcmdldCwgQlRfUkVBRCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9 IG9wYXF1ZS0+YnRwb19wcmV2OwpAQCAtMjM5MCw3ICsyMzk1LDcgQEAgX2J0X3VubGlua19o YWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVy IHNjYW5ibGtubywKIAkJX2J0X2xvY2tidWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJ aWYgKGxlZnRzaWIgIT0gUF9OT05FKQogCXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBs ZWZ0c2liLCBCVF9XUklURSk7CisJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5p bmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGxidWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxl IChQX0lTREVMRVRFRChvcGFxdWUpIHx8IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkK QEAgLTI0NDAsNyArMjQ0NSw3IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0J CQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYg PSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBCVF9X UklURSk7CiAJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJfQpAQCAtMjUwNCw3ICsyNTA5LDcgQEAgX2J0X3Vu bGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2Nr TnVtYmVyIHNjYW5ibGtubywKIAkgKiBBbmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVu dCkgcmlnaHQgc2libGluZy4KIAkgKi8KIAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0 OwotCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVm ID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgcmlnaHRzaWIsIEJU X1dSSVRFKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CiAJaWYgKG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkK QEAgLTI1MzMsNyArMjUzOCw4IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQ X1JJR0hUTU9TVChvcGFxdWUpKQogCQl7CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBv bmx5IG9uZSBsZWZ0IG9uIHRoZSBsZXZlbCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRi dWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIEJUUkVFX01FVEFQQUdFLAorCQkJCQkJ CQkgQlRfV1JJVEUpOwogCQkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJ CW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0yNzczLDkgKzI3NzksMTAg QEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKICAqIHBhcmVudCBibG9jayBpbiB0aGUgbGVh ZmJ1ZiBwYWdlIHVzaW5nIEJUcmVlVHVwbGVTZXRUb3BQYXJlbnQoKSkuCiAgKi8KIHN0YXRp YyBib29sCi1fYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNrLAotCQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50 LCBPZmZzZXROdW1iZXIgKnBvZmZzZXQsCi0JCQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50 LCBCbG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpCitfYnRfbG9ja19zdWJ0cmVlX3Bh cmVudChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGNoaWxk LAorCQkJCQkJQlRTdGFjayBzdGFjaywgQnVmZmVyICpzdWJ0cmVlcGFyZW50LAorCQkJCQkJ T2Zmc2V0TnVtYmVyICpwb2Zmc2V0LCBCbG9ja051bWJlciAqdG9wcGFyZW50LAorCQkJCQkJ QmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKQogewogCUJsb2NrTnVtYmVyIHBhcmVu dCwKIAkJCQlsZWZ0c2licGFyZW50OwpAQCAtMjc4OSw3ICsyNzk2LDcgQEAgX2J0X2xvY2tf c3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBjaGlsZCwgQlRTdGFj ayBzdGFjaywKIAkgKiBMb2NhdGUgdGhlIHBpdm90IHR1cGxlIHdob3NlIGRvd25saW5rIHBv aW50cyB0byAiY2hpbGQiLiAgV3JpdGUgbG9jawogCSAqIHRoZSBwYXJlbnQgcGFnZSBpdHNl bGYuCiAJICovCi0JcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIHN0YWNrLCBjaGlsZCk7 CisJcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIGhlYXByZWwsIHN0YWNrLCBjaGlsZCk7 CiAJaWYgKHBidWYgPT0gSW52YWxpZEJ1ZmZlcikKIAl7CiAJCS8qCkBAIC0yODg5LDExICsy ODk2LDExIEBAIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCiAJICoKIAkgKiBOb3RlOiBXZSBkZWxpYmVy YXRlbHkgYXZvaWQgY29tcGxldGluZyBpbmNvbXBsZXRlIHNwbGl0cyBoZXJlLgogCSAqLwot CWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBsZWZ0c2licGFyZW50LCBwYXJlbnQp KQorCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBoZWFwcmVsLCBsZWZ0c2licGFy ZW50LCBwYXJlbnQpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBSZWN1cnNlIHRvIGV4YW1p bmUgY2hpbGQgcGFnZSdzIGdyYW5kcGFyZW50IHBhZ2UgKi8KLQlyZXR1cm4gX2J0X2xvY2tf c3VidHJlZV9wYXJlbnQocmVsLCBwYXJlbnQsIHN0YWNrLT5idHNfcGFyZW50LAorCXJldHVy biBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGhlYXByZWwsIHBhcmVudCwgc3RhY2st PmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAgIHN1YnRyZWVwYXJlbnQsIHBvZmZzZXQsCiAJCQkJ CQkJCSAgIHRvcHBhcmVudCwgdG9wcGFyZW50cmlnaHRzaWIpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXggMWNjODhkYTAzMi4uNGU4YTg1ZmI1ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCkBAIC04MzQsNyArODM0LDcgQEAgYnR2YWN1 dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICpzdGF0cykKIAlpZiAoc3RhdHMgPT0gTlVMTCkKIAl7CiAJCS8qIENoZWNrIGlmIFZBQ1VV TSBvcGVyYXRpb24gY2FuIGVudGlyZWx5IGF2b2lkIGJ0dmFjdXVtc2NhbigpIGNhbGwgKi8K LQkJaWYgKCFfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoaW5mby0+aW5kZXgpKQorCQlpZiAo IV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChpbmZvLT5pbmRleCwgaW5mby0+aGVhcHJlbCkp CiAJCQlyZXR1cm4gTlVMTDsKIAogCQkvKgpAQCAtODcwLDcgKzg3MCw3IEBAIGJ0dmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMpCiAJICovCiAJQXNzZXJ0KHN0YXRzLT5wYWdlc19kZWxldGVkID49IHN0YXRzLT5w YWdlc19mcmVlKTsKIAludW1fZGVscGFnZXMgPSBzdGF0cy0+cGFnZXNfZGVsZXRlZCAtIHN0 YXRzLT5wYWdlc19mcmVlOwotCV9idF9zZXRfY2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBu dW1fZGVscGFnZXMpOworCV9idF9zZXRfY2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBpbmZv LT5oZWFwcmVsLCBudW1fZGVscGFnZXMpOwogCiAJLyoKIAkgKiBJdCdzIHF1aXRlIHBvc3Np YmxlIGZvciB1cyB0byBiZSBmb29sZWQgYnkgY29uY3VycmVudCBwYWdlIHNwbGl0cyBpbnRv CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwppbmRleCBjNDNjMWEyODMw Li41YzcyOGUzNTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNlYXJjaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMK QEAgLTQyLDcgKzQyLDggQEAgc3RhdGljIGJvb2wgX2J0X3N0ZXBwYWdlKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGJvb2wgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcik7CiBzdGF0aWMgYm9vbCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2Fu RGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJCQkJICBTY2FuRGlyZWN0aW9u IGRpcik7Ci1zdGF0aWMgQnVmZmVyIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgQnVmZmVyIF9idF93YWxrX2xl ZnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJ CVNuYXBzaG90IHNuYXBzaG90KTsKIHN0YXRpYyBib29sIF9idF9lbmRwb2ludChJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBf YnRfaW5pdGlhbGl6ZV9tb3JlX2RhdGEoQlRTY2FuT3BhcXVlIHNvLCBTY2FuRGlyZWN0aW9u IGRpcik7CiAKQEAgLTkzLDE0ICs5NCwxNCBAQCBfYnRfZHJvcF9sb2NrX2FuZF9tYXliZV9w aW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFNjYW5Qb3Mgc3ApCiAgKiBkdXJpbmcgdGhlIHNl YXJjaCB3aWxsIGJlIGZpbmlzaGVkLgogICovCiBCVFN0YWNrCi1fYnRfc2VhcmNoKFJlbGF0 aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAot CQkgICBTbmFwc2hvdCBzbmFwc2hvdCkKK19idF9zZWFyY2goUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsCisJCSAgIGlu dCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KQogewogCUJUU3RhY2sJCXN0YWNrX2luID0g TlVMTDsKIAlpbnQJCQlwYWdlX2FjY2VzcyA9IEJUX1JFQUQ7CiAKIAkvKiBHZXQgdGhlIHJv b3QgcGFnZSB0byBzdGFydCB3aXRoICovCi0JKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWwsIGFj Y2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIGFjY2Vzcyk7CiAK IAkvKiBJZiBpbmRleCBpcyBlbXB0eSBhbmQgYWNjZXNzID0gQlRfUkVBRCwgbm8gcm9vdCBw YWdlIGlzIGNyZWF0ZWQuICovCiAJaWYgKCFCdWZmZXJJc1ZhbGlkKCpidWZQKSkKQEAgLTEy OSw4ICsxMzAsOCBAQCBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtl eSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAogCQkgKiBhbHNvIHRha2VuIGNhcmUgb2Yg aW4gX2J0X2dldHN0YWNrYnVmKS4gIEJ1dCB0aGlzIGlzIGEgZ29vZAogCQkgKiBvcHBvcnR1 bml0eSB0byBmaW5pc2ggc3BsaXRzIG9mIGludGVybmFsIHBhZ2VzIHRvby4KIAkJICovCi0J CSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIChhY2Nlc3MgPT0gQlRf V1JJVEUpLCBzdGFja19pbiwKLQkJCQkJCQkgIHBhZ2VfYWNjZXNzLCBzbmFwc2hvdCk7CisJ CSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGhlYXByZWwsIGtleSwgKmJ1ZlAsIChhY2Nl c3MgPT0gQlRfV1JJVEUpLAorCQkJCQkJCSAgc3RhY2tfaW4sIHBhZ2VfYWNjZXNzLCBzbmFw c2hvdCk7CiAKIAkJLyogaWYgdGhpcyBpcyBhIGxlYWYgcGFnZSwgd2UncmUgZG9uZSAqLwog CQlwYWdlID0gQnVmZmVyR2V0UGFnZSgqYnVmUCk7CkBAIC0xOTAsNyArMTkxLDcgQEAgX2J0 X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwg aW50IGFjY2VzcywKIAkJICogYnV0IGJlZm9yZSB3ZSBhY3F1aXJlZCBhIHdyaXRlIGxvY2su ICBJZiBpdCBoYXMsIHdlIG1heSBuZWVkIHRvCiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5l dyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJICovCi0JCSpidWZQID0gX2J0X21vdmVyaWdodChy ZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNrX2luLCBCVF9XUklURSwKKwkJKmJ1ZlAgPSBf YnRfbW92ZXJpZ2h0KHJlbCwgaGVhcHJlbCwga2V5LCAqYnVmUCwgdHJ1ZSwgc3RhY2tfaW4s IEJUX1dSSVRFLAogCQkJCQkJCSAgc25hcHNob3QpOwogCX0KIApAQCAtMjM0LDYgKzIzNSw3 IEBAIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIg KmJ1ZlAsIGludCBhY2Nlc3MsCiAgKi8KIEJ1ZmZlcgogX2J0X21vdmVyaWdodChSZWxhdGlv biByZWwsCisJCQkgIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkgIEJUU2Nhbkluc2VydCBrZXks CiAJCQkgIEJ1ZmZlciBidWYsCiAJCQkgIGJvb2wgZm9ydXBkYXRlLApAQCAtMjg4LDEyICsy OTAsMTIgQEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlmIChQ X0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwg YnVmLCBzdGFjayk7CisJCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXByZWwsIGJ1Ziwg c3RhY2spOwogCQkJZWxzZQogCQkJCV9idF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkvKiBy ZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRoZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sgKi8K LQkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBibGtubywgYWNjZXNzKTsKIAkJCWNvbnRpbnVlOwog CQl9CiAKQEAgLTg2MCw2ICs4NjIsNyBAQCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2FuLT5p bmRleFJlbGF0aW9uOworCVJlbGF0aW9uIAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0aW9u OwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChCVFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsKIAlC dWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlzdGFjazsKQEAgLTEzNTIsNyArMTM1NSw3IEBAIF9i dF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0KIAog CS8qIEluaXRpYWxpemUgcmVtYWluaW5nIGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMgKi8K LQlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tleS5h bGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0YXZlcnNpb24ocmVsLCBoZWFwcmVsLCAmaW5za2V5 LmhlYXBrZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlKTsKIAlpbnNrZXkuYW55bnVs bGtleXMgPSBmYWxzZTsgLyogdW51c2VkICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0a2V5 OwogCWluc2tleS5waXZvdHNlYXJjaCA9IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY2LDcgQEAg X2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJICog VXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5zZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQgdGhl IHRyZWUgYW5kCiAJICogcG9zaXRpb24gb3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVhZiBw YWdlLgogCSAqLwotCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYsIEJU X1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVsLCBo ZWFwcmVsLCAmaW5za2V5LCAmYnVmLCBCVF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCk7CiAK IAkvKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9idF9m cmVlc3RhY2soc3RhY2spOwpAQCAtMjAwNCw3ICsyMDA3LDcgQEAgX2J0X3JlYWRuZXh0cGFn ZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9u IGRpcikKIAkJCS8qIGNoZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xk aW5nIGFueSBidWZmZXIgbG9jayAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJ CS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9n ZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRf Z2V0YnVmKHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCBibGtubywgQlRfUkVBRCk7CiAJCQlw YWdlID0gQnVmZmVyR2V0UGFnZShzby0+Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9sZFNu YXBzaG90KHNjYW4tPnhzX3NuYXBzaG90LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjA3OCw3ICsyMDgxLDggQEAgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcikKIAkJaWYgKEJUU2NhblBvc0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJCV9i dF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQb3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQotCQkJ c28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQYWdl LCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzY2Fu LT5oZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9S RUFEKTsKIAogCQlmb3IgKDs7KQogCQl7CkBAIC0yMDkyLDggKzIwOTYsOCBAQCBfYnRfcmVh ZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5E aXJlY3Rpb24gZGlyKQogCQkJfQogCiAJCQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFn ZSAqLwotCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJy UG9zLmJ1ZiwKLQkJCQkJCQkJCQkJc2Nhbi0+eHNfc25hcHNob3QpOworCQkJc28tPmN1cnJQ b3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwKKwkJCQkJ CQkJCQkJc28tPmN1cnJQb3MuYnVmLCBzY2FuLT54c19zbmFwc2hvdCk7CiAKIAkJCS8qIGlm IHdlJ3JlIHBoeXNpY2FsbHkgYXQgZW5kIG9mIGluZGV4LCByZXR1cm4gZmFpbHVyZSAqLwog CQkJaWYgKHNvLT5jdXJyUG9zLmJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQpAQCAtMjE0MCw3ICsy MTQ0LDggQEAgX2J0X3JlYWRuZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVt YmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJCQkJQlRTY2FuUG9zSW52YWxpZGF0 ZShzby0+Y3VyclBvcyk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9Ci0JCQkJc28tPmN1 cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJCQlzby0+ Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCBibGtu bywKKwkJCQkJCQkJCQkJIEJUX1JFQUQpOwogCQkJfQogCQl9CiAJfQpAQCAtMjE4NSw3ICsy MTkwLDcgQEAgX2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxv Y2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogICogYWdhaW4gaWYgaXQncyBp bXBvcnRhbnQuCiAgKi8KIHN0YXRpYyBCdWZmZXIKLV9idF93YWxrX2xlZnQoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19idF93YWxrX2xlZnQoUmVs YXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFw c2hvdCkKIHsKIAlQYWdlCQlwYWdlOwogCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CkBAIC0yMjEz LDcgKzIyMTgsNyBAQCBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg U25hcHNob3Qgc25hcHNob3QpCiAJCV9idF9yZWxidWYocmVsLCBidWYpOwogCQkvKiBjaGVj ayBmb3IgaW50ZXJydXB0cyB3aGlsZSB3ZSdyZSBub3QgaG9sZGluZyBhbnkgYnVmZmVyIGxv Y2sgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWws IGJsa25vLCBCVF9SRUFEKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJVGVz dEZvck9sZFNuYXBzaG90KHNuYXBzaG90LCByZWwsIHBhZ2UpOwogCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CkBAIC0yMzA0LDcgKzIzMDksNyBAQCBfYnRfd2Fsa19sZWZ0 KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpCiAgKiBUaGUg cmV0dXJuZWQgYnVmZmVyIGlzIHBpbm5lZCBhbmQgcmVhZC1sb2NrZWQuCiAgKi8KIEJ1ZmZl cgotX2J0X2dldF9lbmRwb2ludChSZWxhdGlvbiByZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCBy aWdodG1vc3QsCitfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVh cHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkJCQkgU25hcHNob3Qgc25h cHNob3QpCiB7CiAJQnVmZmVyCQlidWY7CkBAIC0yMzIwLDkgKzIzMjUsOSBAQCBfYnRfZ2V0 X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwK IAkgKiBzbWFydGVyIGFib3V0IGludGVybWVkaWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChs ZXZlbCA9PSAwKQotCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYg PSBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIEJUX1JFQUQpOwogCWVsc2UKLQkJYnVmID0g X2J0X2dldHRydWVyb290KHJlbCk7CisJCWJ1ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhl YXByZWwpOwogCiAJaWYgKCFCdWZmZXJJc1ZhbGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlk QnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA4LDggQEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNo KCkuICBXZSBkb24ndCBtYWludGFpbiBhIHN0YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3 b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBT Y2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIpLCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVm ID0gX2J0X2dldF9lbmRwb2ludChyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgMCwKKwkJCQkJ CSAgIFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90KTsK IAogCWlmICghQnVmZmVySXNWYWxpZChidWYpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMKaW5kZXggNjdiN2IxNzEwYy4uOGM1OGZkYjhkMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1 aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhl YXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4Owot CXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJ d3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBidHNwb29sLT5o ZWFwLCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1h Z2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2Ug PSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdz X3VzZV93YWwgPSBSZWxhdGlvbk5lZWRzV0FMKHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggODAwMzU4M2MwYS4uNzBhMGMyNDE4YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBA QCBzdGF0aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKICAqCQlmaWVsZCB0aGVtc2VsdmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9i dF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fu a2V5KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgSW5kZXhUdXBsZSBpdHVwKQog ewogCUJUU2Nhbkluc2VydCBrZXk7CiAJU2NhbktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIs NyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtl eSA9IHBhbGxvYyhvZmZzZXRvZihCVFNjYW5JbnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJ CSBzaXplb2YoU2NhbktleURhdGEpICogaW5kbmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlf YnRfbWV0YXZlcnNpb24ocmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFs aW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24ocmVsLCBoZWFwcmVsLCAma2V5LT5oZWFwa2V5 c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkg c3RhdGVtZW50IGNhbGxlcnMgY2FuIHNldCB0aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpA QCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0X2tpbGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4p CiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7CiAJCS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUg YnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQgbG9jay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1Zihz Y2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJ CWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+aW5kZXhSZWxhdGlvbiwgc2Nhbi0+aGVhcFJlbGF0 aW9uLAorCQkJCQkJIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKIAogCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlpZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1Zikg PT0gc28tPmN1cnJQb3MubHNuKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMKaW5kZXggM2FkYjE4ZjJkOC4uMmY0YTRhYWQyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00ODksNyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qo c3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVy KQogICogVW5saWtlIHRoZSByb3V0aW5lcyBhYm92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxl YWYgYW5kIGlubmVyIHBhZ2VzLgogICovCiBzdGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RB bmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJl ZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWws IEJ1ZmZlciBidWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9wYXF1ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFn ZSk7CkBAIC01MDMsNiArNTAzLDcgQEAgdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihS ZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3Qg eGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dS ZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwog CXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9y aXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC02NDMsMTMgKzY0NCwxMyBAQCBz cGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBCbG9ja051bWJlciBibGtu bykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1MZWFmUGFnZShiZHMsIGluZGV4LCBidWZmZXIs IGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZl cik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8t PmhlYXByZWwsIGJ1ZmZlcik7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyogaW5uZXIgcGFn ZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIpOwor CQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8tPmhlYXBy ZWwsIGJ1ZmZlcik7CiAJfQogCiAJLyoKQEAgLTcxOSw3ICs3MjAsNyBAQCBzcGdwcm9jZXNz cGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAkJCS8qIGRlYWwgd2l0aCBhbnkg ZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFjdXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVm ZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFzIHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBhcmUg aGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVy KTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+ aGVhcHJlbCwgYnVmZmVyKTsKIAogCQkJU3BHaXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4LCBi dWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNDFiMTZjYjg5Yi4uNDhkMWQ2YjUw NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzM1Miw2ICszMzUyLDcgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2 aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMg PSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9 IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBoZWFwUmVsYXRpb247CiAKIAkvKgogCSAqIEVu Y29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGly ZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IGM4NmU2OTA5ODAu LjMyMWZjMGQzMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcxMiw2ICs3MTIs NyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVt X2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5z dHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby5oZWFwcmVsID0gb25lcmVsOwog CiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCBiY2Q0MGM4MGExLi4y Y2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAg LTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5VTEwg Zm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAKKwkv KiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLworCVJlbGF0aW9uCWhlYXByZWw7CisKIAkvKiBU YXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9uICAgKmluZHJlbHM7CiAJaW50CQkJbmluZGV4 ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXB2cy0+bmluZGV4ZXMg PSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFyYWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxl bF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kgPSBic3RyYXRlZ3k7CisJcHZzLT5oZWFwcmVs ID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1vZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFyYWxs ZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJhbGxlbF92YWN1dW1fbWFpbiIsCkBAIC04Mzgs NiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRf Y291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1faGVh cF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9 IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCiAJ LyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFt ZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0xMDA3 LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRlbXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5yZWxu YW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVs KSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwogCiAJLyogVGhlc2UgZmllbGRzIHdpbGwgYmUg ZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwogCXB2cy5pbmRuYW1l ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5j YXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBkNThj NGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8g KnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQkJICog Rm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4CiAJ CQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dl dHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0g X2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbiwgcmVsYXRpb24pOwogCQkJCX0KIAkJ CQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBs ZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJp YW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjAxODgxMDY5MjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTIwNyw2ICsyMDcsNyBAQCB0 dXBsZXNvcnRfYmVnaW5faGVhcChUdXBsZURlc2MgdHVwRGVzYywKIFR1cGxlc29ydHN0YXRl ICoKIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAogCQkJCQkJ UmVsYXRpb24gaW5kZXhSZWwsCisJCQkJCQlSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJaW50 IHdvcmtNZW0sCiAJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLCBpbnQgc29ydG9w dCkKIHsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBs ZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9IHR1cERlc2M7CQkvKiBhc3N1bWUg d2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlpbmRleFNjYW5LZXkgPSBfYnRfbWtz Y2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5 KGluZGV4UmVsLCBoZWFwcmVsLCBOVUxMKTsKIAogCWlmIChhcmctPmluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEsNyArMzYyLDcgQEAgdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5lbmZvcmNlVW5p cXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgPSB1 bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhTY2FuS2V5ID0gX2J0X21rc2Nhbmtl eShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRl eFJlbCwgaGVhcFJlbCwgTlVMTCk7CiAKIAkvKiBQcmVwYXJlIFNvcnRTdXBwb3J0IGRhdGEg Zm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtleXMgPSAoU29ydFN1cHBvcnQpIHBh bGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dl bmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA4M2RiZWUwZmU2Li43 NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtNTAsNiArNTAsNyBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVw b3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBf dHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KIAlCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLworCVJl bGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVsYXRpb24gdGhlIGluZGV4IGJlbG9u Z3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Rf cHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLmVlMjc1NjUwYmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAsNyBAQCBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJh bnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0 TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1 c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKK2V4dGVybiB2b2lkIGdpc3RY TG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpOwogCiBl eHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLApAQCAtNDQ5 LDcgKzQ0OSw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBi dWZmZXIsCiAJCQkJCQkJCSBCdWZmZXIgbGVmdGNoaWxkYnVmKTsKIAogZXh0ZXJuIFhMb2dS ZWNQdHIgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2Rl bGV0ZSwKLQkJCQkJCQkJIGludCBudG9kZWxldGUsIFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24pOworCQkJCQkJCQkgaW50IG50b2RlbGV0ZSwgVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJIFJlbGF0aW9uIGhlYXByZWwp OwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1NwbGl0KGJvb2wgcGFnZV9pc19sZWFm LAogCQkJCQkJCQlTcGxpdGVkUGFnZUxheW91dCAqZGlzdCwKQEAgLTQ4NSw3ICs0ODYsNyBA QCBleHRlcm4gYm9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAog ZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwog ZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywg aW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRl cm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRl cm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdp c3ROZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gYm9v bCBnaXN0UGFnZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxs YnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAg IE9mZnNldE51bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCAwOWY5YjBm OGM2Li4yZWVhODY2ZjA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNTEsMTMgKzUx LDE0IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CiAJVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51 bWJlciBvZiBkZWxldGVkIG9mZnNldHMgKi8KKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7 CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJ CQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKLQkvKgotCSAqIEluIHBheWxvYWQgb2Yg YmxrIDAgOiB0b2RlbGV0ZSBPZmZzZXROdW1iZXJzCi0JICovCisJLyogVE9ERUxFVEUgT0ZG U0VUIE5VTUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOwogfSBnaXN0eGxvZ0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0Rl bGV0ZQkob2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWlu dDE2KSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dEZWxldGUgb2Zmc2V0b2YoZ2lzdHhsb2dE ZWxldGUsIG9mZnNldHMpCiAKIC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0 aW9uIGNvbXBsZXRlcyBhIHBhZ2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC0xMDAsOSAr MTAxLDExIEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNlCiAJUmVsRmlsZUxv Y2F0b3IgbG9jYXRvcjsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7 CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJ CQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiB9IGdpc3R4bG9nUGFnZVJldXNlOwogCi0j ZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShvZmZzZXRvZihnaXN0eGxvZ1BhZ2VS ZXVzZSwgc25hcHNob3RDb25mbGljdEhvcml6b24pICsgc2l6ZW9mKEZ1bGxUcmFuc2FjdGlv bklkKSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4 bG9nUGFnZVJldXNlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiBleHRlcm4g dm9pZCBnaXN0X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQg Z2lzdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggYTJmMGYzOTIxMy4uN2U5ZTQ3Y2U2NyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUyLDEyICsyNTIsMTQgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsKIAlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uOwogCWludAkJCW50dXBsZXM7CisJYm9vbAkJaXNDYXRhbG9n UmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJ CQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCi0JLyogVEFSR0VUIE9GRlNFVCBO VU1CRVJTIEZPTExPVyBBVCBUSEUgRU5EICovCisJLyogVEFSR0VUIE9GRlNFVCBOVU1CRVJT ICovCisJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g eGxfaGFzaF92YWN1dW1fb25lX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9u ZVBhZ2UgXAotCShvZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgbnR1cGxlcykg KyBzaXplb2YoaW50KSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ugb2Zmc2V0 b2YoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG9mZnNldHMpCiAKIGV4dGVybiB2b2lkIGhh c2hfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBoYXNoX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggOGNiMGQ4ZGExOS4uMjIzZGI0YjE5OSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0NSwxMCArMjQ1LDEyIEBAIHR5cGVkZWYg c3RydWN0IHhsX2hlYXBfcHJ1bmUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uOwogCXVpbnQxNgkJbnJlZGlyZWN0ZWQ7CiAJdWludDE2CQluZGVhZDsKKwlib29s ICAgICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBk dXJpbmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAJLyog T0ZGU0VUIE5VTUJFUlMgYXJlIGluIHRoZSBibG9jayByZWZlcmVuY2UgMCAqLwogfSB4bF9o ZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVh cF9wcnVuZSwgbmRlYWQpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBQ cnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihi b29sKSkKIAogLyoKICAqIFRoZSB2YWN1dW0gcGFnZSByZWNvcmQgaXMgc2ltaWxhciB0byB0 aGUgcHJ1bmUgcmVjb3JkLCBidXQgY2FuIG9ubHkgbWFyawpAQCAtMzQ0LDEyICszNDYsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogewogCVRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQlucGxhbnM7CisJYm9vbCAg ICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCiAJLyog RlJFRVpFIFBMQU5TIEZPTExPVyAqLwogCS8qIE9GRlNFVCBOVU1CRVIgQVJSQVkgRk9MTE9X UyAqLwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhlYXBGcmVl emVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsgc2l6ZW9m KHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9o ZWFwX2ZyZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgog ICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0CkBAIC00MDgsNyArNDEyLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNv bnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVh cF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4g WExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBC dWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBCdWZmZXIg dm1fYnVmZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApp bmRleCA4ZjQ4OTYwZjlkLi42ZGVlMzA3MDQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0x MTgyLDggKzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9zdGluZyhJ bmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4gYm9vbCBf YnRfZG9pbnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJCQkgSW5k ZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJ CSBSZWxhdGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVs YXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4gQnVmZmVy IF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVt YmVyIGNoaWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwKKwkJCQkJCQkgQlRTdGFjayBzdGFj ayk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssCisJCQkJCQkJICBCbG9ja051bWJlciBjaGls ZCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3BsaXRsb2Mu YwpAQCAtMTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9maW5k c3BsaXRsb2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRlcm4gdm9p ZCBfYnRfaW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJrbnVtLCB1 aW50MzIgbGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRlcm4gYm9v bCBfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVybiB2b2lk IF9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2Rl bHBhZ2VzKTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9jbGVhbnVw X2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkgQmxvY2tO dW1iZXIgbnVtX2RlbHBhZ2VzKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0YXBhZ2Uo UGFnZSBwYWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBp bnQgYWNjZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJl bCk7Ci1leHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7Ci1leHRl cm4gdm9pZCBfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3Bh Y2UsCitleHRlcm4gQnVmZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVlcm9vdChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRfZ2V0cm9v dGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQg X2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCAq aGVhcGtleXNwYWNlLAogCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UpOwogZXh0ZXJuIHZv aWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0ZXJuIEJ1 ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBh Y2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJCQkgaW50IGFjY2Vzcyk7CiBl eHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24gcmVsLCBCdWZmZXIgb2J1 ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CiBleHRlcm4g dm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CkBAIC0xMjI5LDIx ICsxMjMzLDIyIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNtX2ZpbmFsaXplKFJlbGF0 aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBm dW5jdGlvbnMgaW4gbmJ0c2VhcmNoLmMKICAqLwotZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJj aChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwKLQkJCQkJ CSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOwotZXh0ZXJuIEJ1ZmZlciBfYnRf bW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyIGJ1ZiwK LQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2VzcywgU25h cHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJjaChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksCisJCQkJCQkgIEJ1ZmZl ciAqYnVmUCwgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJ1ZmZl ciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2Fu SW5zZXJ0IGtleSwKKwkJCQkJCQlCdWZmZXIgYnVmLCBib29sIGZvcnVwZGF0ZSwgQlRTdGFj ayBzdGFjaywKKwkJCQkJCQlpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRl cm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5z ZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0ZXJuIGludDMyIF9idF9jb21wYXJlKFJlbGF0 aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2Zm bnVtKTsKIGV4dGVybiBib29sIF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5E aXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29sIF9idF9uZXh0KEluZGV4U2NhbkRlc2Mgc2Nh biwgU2NhbkRpcmVjdGlvbiBkaXIpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0X2VuZHBvaW50 KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKLQkJCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB1aW50MzIgbGV2ZWwsCisJCQkJCQkJ ICAgYm9vbCByaWdodG1vc3QsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogLyoKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnR1dGlscy5jCiAgKi8KLWV4dGVybiBCVFNjYW5J bnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCk7Citl eHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApOwogZXh0ZXJuIHZvaWQgX2J0X2ZyZWVzdGFj ayhCVFN0YWNrIHN0YWNrKTsKIGV4dGVybiB2b2lkIF9idF9wcmVwcm9jZXNzX2FycmF5X2tl eXMoSW5kZXhTY2FuRGVzYyBzY2FuKTsKIGV4dGVybiB2b2lkIF9idF9zdGFydF9hcnJheV9r ZXlzKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9u YnR4bG9nLmgKaW5kZXggZWRkMTMzM2Q5Yi4uMWU0NWQ1ODg0NSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0 eGxvZy5oCkBAIC0xODgsOSArMTg4LDExIEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX3Jl dXNlX3BhZ2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2Nr OwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wg ICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1 cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIH0geGxf YnRyZWVfcmV1c2VfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFnZQkoc2l6 ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpKQorI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFn ZQkob2Zmc2V0b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSwgaXNDYXRhbG9nUmVsKSArIHNpemVv Zihib29sKSkKIAogLyoKICAqIHhsX2J0cmVlX3ZhY3V1bSBhbmQgeGxfYnRyZWVfZGVsZXRl IHJlY29yZHMgZGVzY3JpYmUgZGVsZXRpb24gb2YgaW5kZXgKQEAgLTIzNSwxMyArMjM3LDE1 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlbGV0ZQogCVRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51 cGRhdGVkOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292 ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0 YW5kYnkgKi8KIAogCS8qIERFTEVURUQgVEFSR0VUIE9GRlNFVCBOVU1CRVJTIEZPTExPVyAq LwogCS8qIFVQREFURUQgVEFSR0VUIE9GRlNFVCBOVU1CRVJTIEZPTExPVyAqLwogCS8qIFVQ REFURUQgVFVQTEVTIE1FVEFEQVRBICh4bF9idHJlZV91cGRhdGUpIEFSUkFZIEZPTExPV1Mg Ki8KIH0geGxfYnRyZWVfZGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShv ZmZzZXRvZih4bF9idHJlZV9kZWxldGUsIG51cGRhdGVkKSArIHNpemVvZih1aW50MTYpKQor I2RlZmluZSBTaXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBp c0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIG9mZnNldHMgdGhh dCBhcHBlYXIgaW4geGxfYnRyZWVfdXBkYXRlIG1ldGFkYXRhIGFyZSBvZmZzZXRzIGludG8g dGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCBiOWQ2NzUzNTMzLi43NTI2N2E0OTE0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTI0MCw2ICsyNDAsOCBAQCB0eXBlZGVmIHN0cnVj dCBzcGd4bG9nVmFjdXVtUmVkaXJlY3QKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBu dW1iZXIgb2YgcmVkaXJlY3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVt YmVyIGZpcnN0UGxhY2Vob2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJl bW92ZSAqLwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CS8qIG5l d2VzdCBYSUQgb2YgcmVtb3ZlZCByZWRpcmVjdHMgKi8KKwlib29sICAgICAgICBpc0NhdGFs b2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAor CQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBvZmZzZXRzIG9mIHJl ZGlyZWN0IHR1cGxlcyB0byBtYWtlIHBsYWNlaG9sZGVycyBmb2xsb3cgKi8KIAlPZmZzZXRO dW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA5MTY1Yjk0NTZiLi43MzA2YTFjM2VlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMTcsOSArMTcs MTEgQEAKICNkZWZpbmUgQklUU19QRVJfSEVBUEJMT0NLIDIKIAogLyogRmxhZ3MgZm9yIGJp dCBtYXAgKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRQkweDAxCi0jZGVm aW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCi0jZGVmaW5lIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCi0J CQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRQkJCQkJCQkJMHgwMQorI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4J CQkJCQkJCTB4MDIKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCQkJCQkJCQkw eDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCisJCQkJCQkJCQkJCQkJCQkJ CQkgKiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19S RUwJCQkJCQkJMHgwNAkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxv Z2ljYWwKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAog I2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXgg YWY5Nzg1MDM4ZC4uMGNmZTAyYWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCAxMjU3OGU0MmJj Li4zOTVhYmZlNTk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtMzk5LDcgKzM5OSw5 IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVE ZXNjIHR1cERlc2MsCiAJCQkJCQkJCQkJCWludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBj b29yZGluYXRlLAogCQkJCQkJCQkJCQlpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0 c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAotCQkJ CQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwgaW50IHdvcmtNZW0sCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uIGluZGV4UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVs LAorCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwKIAkJCQkJCQkJCQkJICAgU29ydENvb3Jk aW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJICAgaW50IHNvcnRvcHQpOwogZXh0ZXJu IFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24g aGVhcFJlbCwKLS0gCjIuMzQuMQoK --------------nRRAySwtIoCF0vZTqmhS34iC--