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 1pPPvh-0002JZ-05 for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 15:30:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pPPvf-0008GX-Sh for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Feb 2023 15:30:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pPPve-0008GM-Qg for pgsql-hackers@lists.postgresql.org; Tue, 07 Feb 2023 15:30:43 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pPPvP-0003cl-2l for pgsql-hackers@postgresql.org; Tue, 07 Feb 2023 15:30:41 +0000 Received: by mail-wm1-x329.google.com with SMTP id n13so11298265wmr.4 for ; Tue, 07 Feb 2023 07:30:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=F/rGVUg+T99yAeQ/2ELkhwnbPcbv6bvMTznkplNK244=; b=Fhmdv1z1b2CB7mdVS6TQ7kzXZJFumlWjfNlm5wgXot8WlDG5aiuwZVNiW/K6Rzeu/F uMBt/NBGc5XKv4jmd0N7/3wrtBL8fYpaGYPsKFvotxxI/trb9rsd4H9eZPmkVIt5g4z8 JbUy5hYzkS3eBvEZcnctquUgzlm46VGNUD2cz406UCPG2dVgwD7oXq/Js0gzt5lUiL8l kK7jYkab+DkISV9odWaB4t0ZiWN0pAWMettu14P+fI8RspgcChTIF9RrIXG47k7RXNf+ XkM9EU+t95X58Au3D7akwkjzh2NP4aqoxFOlPkfXOGfpP4T+0P5tF2XTnEUPPopPGPwA zjnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=F/rGVUg+T99yAeQ/2ELkhwnbPcbv6bvMTznkplNK244=; b=76xL+DDp9ORlNf5WbXmW1j8tYGQB5TVCQQfrk+sI/2A5zXET9sgZ/uA6qsAp5Qr1pa wd7oKcf/Rc7q3owjC5YmpenfiIaeRAdBbsgGnYz1SuCEs4EW8NyewYETy2kGzuHn0dF+ s5BRQJK0MpZfS3L0GNp1JGO0MrHM32f0LswCbSxY03c/6WRSri2Xav+zjq5wGACYg5kn Sa4MS8T9TZLfvutJkT2KbD/WofMy1FTXOQnmWLJ1n3LuRhvdtNAbQud46kB0UCAvhz3R 3QV7gbo+c7WpQ6ZbdMiObxTPmpynI5TVOCvMcCvIZAe5WKz/DcqWaRQF/hMrjX9Bg2I+ JJ2Q== X-Gm-Message-State: AO0yUKUUcaSxVYRxCyKAC10k5hYcb0rs7KuRFxSaL2ny5UmzHoFSahui lPcoUIyy5Rqf/Sm0wJ6WqcM= X-Google-Smtp-Source: AK7set+NvT8MYkCZOwjiejT01iNB+6Xh8DKm8uXd2IZwPPOQa+vYJm6CAPlE5VOHIDFkx6hlH2aVPA== X-Received: by 2002:a05:600c:4d16:b0:3df:fa96:f670 with SMTP id u22-20020a05600c4d1600b003dffa96f670mr3441397wmp.22.1675783825273; Tue, 07 Feb 2023 07:30:25 -0800 (PST) Received: from [192.168.24.238] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id u16-20020a05600c19d000b003dd1b00bd9asm15249104wmq.32.2023.02.07.07.30.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Feb 2023 07:30:24 -0800 (PST) Content-Type: multipart/mixed; boundary="------------THi5Y8bjmBCtK99UQVRf6NPV" Message-ID: Date: Tue, 7 Feb 2023 16:29:07 +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 From: "Drouvot, Bertrand" To: Andres Freund Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <490206c5-bcde-e558-628a-dc67dae4d439@gmail.com> <20230119024617.jzsgpcrgjdc6ysge@awork3.anarazel.de> In-Reply-To: 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. --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/19/23 10:43 AM, Drouvot, Bertrand wrote: > Hi, > > On 1/19/23 3:46 AM, Andres Freund wrote: >> Hi, >> >> On 2023-01-18 11:24:19 +0100, Drouvot, Bertrand wrote: >>> On 1/6/23 4:40 AM, Andres Freund wrote: >>>> Hm, that's quite expensive. Perhaps worth adding a C helper that can do that >>>> for us instead? This will likely also be needed in real applications after all. >>>> >>> >>> Not sure I got it. What the C helper would be supposed to do? >> >> Call LogStandbySnapshot(). >> > > Got it, I like the idea, will do. > 0005 in V49 attached is introducing a new pg_log_standby_snapshot() function and the TAP test is making use of it. Documentation about this new function is also added in the "Snapshot Synchronization Functions" section. I'm not sure that's the best place for it but did not find a better place yet. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v49-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OGEwOWI1MDk3ZDQ0ZjQ1N2Y1ZDE5YTE4MjI2YWMzMmYwM2Y1Nzk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDE0OjA4OjExICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgNi82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjIgKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjNkYTI1NGVkMWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjggQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm 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 aW1lLiBPbmUgb3B0aW9uIHRvIHNwZWVkIGl0CisgICAgIGlzIHRvIGNhbGwgdGhlIDxmdW5j dGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvZnVuY3Rpb24+IG9uIHRoZSBwcmltYXJ5 LgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAgIFJl cGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90aGlu ZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v49-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA4NTQ5NDc4NGNhM2UzN2NlZGNkYzcxNGMxZjIxNmIyMjlhOWUxMTJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjA0OjEyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgNS82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkluIGFkZGl0aW9uIHRvIHRoZSBuZXcgVEFQIHRlc3QsIHRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBuZXcgcGdfbG9nX3N0YW5kYnlfc25hcHNob3QoKQpmdW5jdGlvbi4KClRoZSBp ZGVhIGlzIHRvIGJlIGFibGUgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGFuZCB3cml0ZSB0aGlzCnRvIFdBTCB3aXRob3V0IHJlcXVlc3RpbmcgZm9yIGEg KGNvc3RseSkgY2hlY2twb2ludC4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9mdW5jLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYyAgICAgICAgfCAgMzIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f ZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtICAgICAgfCAgMzcgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzNF9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8IDcxMCArKysrKysrKysrKysrKysrKysKIDcgZmls ZXMgY2hhbmdlZCwgODAwIGluc2VydGlvbnMoKykKICAgMy4wJSBzcmMvYmFja2VuZC8KICAg My45JSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA4OS45JSBzcmMvdGVzdC9y ZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IGUwOWUyODlhNDMuLjU5MzM0ZGQ0MjIgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1bmMu c2dtbApAQCAtMjY1MzQsNiArMjY1MzQsMjEgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgJzAvMCc6 OnBnX2xzbiArIHBkLnNlZ21lbnRfbnVtYmVyICogcHMuc2V0dGluZzo6aW50ICsgOm9mZnNl dAogICAgICAgICBwcmVwYXJlZCB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1wcmVwYXJlLXRy YW5zYWN0aW9uIi8+LgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+Cisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAg ICA8cHJpbWFyeT5wZ19sb2dfc3RhbmRieV9zbmFwc2hvdDwvcHJpbWFyeT4KKyAgICAgICAg PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19sb2dfc3RhbmRieV9zbmFwc2hv dDwvZnVuY3Rpb24+ICgpCisgICAgICAgIDxyZXR1cm52YWx1ZT5wZ19sc248L3JldHVybnZh bHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGFrZSBhIHNu YXBzaG90IG9mIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGFuZCB3cml0ZSB0aGlzIHRvIFdBTCB3 aXRob3V0CisgICAgICAgIGhhdmluZyB0byB3YWl0IGJnd3JpdGVyIG9yIGNoZWNrcG9pbnRl ciB0byBsb2cgb25lLiBUaGlzIG9uZSBpcyB1c2VmdWwgZm9yCisgICAgICAgIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSBmb3Igd2hpY2ggbG9naWNhbCBzbG90IGNyZWF0aW9uIGlz IGhhbmdpbmcKKyAgICAgICAgdW50aWwgc3VjaCBhIHJlY29yZCBpcyByZXBsYXllZCBvbiB0 aGUgc3RhbmRieS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggYzA3ZGFhODc0Zi4uNDgxZTlhNDdkYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKQEAgLTM4LDYgKzM4 LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdGFuZGJ5LmgiCiAKIC8qCiAgKiBCYWNrdXAtcmVsYXRlZCB2YXJpYWJsZXMuCkBA IC0xOTYsNiArMTk3LDM3IEBAIHBnX3N3aXRjaF93YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fTFNOKHN3aXRjaHBvaW50KTsKIH0KIAorLyoKKyAqIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90OiBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpCisgKgorICogUGVybWlzc2lv biBjaGVja2luZyBmb3IgdGhpcyBmdW5jdGlvbiBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIG5v cm1hbAorICogR1JBTlQgc3lzdGVtLgorICovCitEYXR1bQorcGdfbG9nX3N0YW5kYnlfc25h cHNob3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9nUmVjUHRyCXJlY3B0cjsKKworCWlm IChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJyZWNvdmVyeSBpcyBpbiBwcm9ncmVzcyIpLAorCQkJCSBlcnJoaW50KCJwZ19sb2df c3RhbmRieV9zbmFwc2hvdCgpIGNhbm5vdCBiZSBleGVjdXRlZCBkdXJpbmcgcmVjb3Zlcnku IikpKTsKKworCWlmICghWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygid2FsX2xldmVsIGlzIG5vdCBpbiBkZXNpcmVkIHN0YXRl IiksCisJCQkJIGVycmhpbnQoIndhbF9sZXZlbCBoYXMgdG8gYmUgPj0gV0FMX0xFVkVMX1JF UExJQ0EuIikpKTsKKworCXJlY3B0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJLyoK KwkgKiBBcyBhIGNvbnZlbmllbmNlLCByZXR1cm4gdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUg bGFzdCBpbnNlcnRlZCByZWNvcmQKKwkgKi8KKwlQR19SRVRVUk5fTFNOKHJlY3B0cik7Cit9 CisKIC8qCiAgKiBwZ19jcmVhdGVfcmVzdG9yZV9wb2ludDogYSBuYW1lZCBwb2ludCBmb3Ig cmVzdG9yZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs CmluZGV4IDgzY2E4OTM0NDQuLmI3YzY1ZWEzN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApAQCAtNjQ0LDYgKzY0NCw4IEBAIFJFVk9LRSBFWEVD VVRFIE9OIEZVTkNUSU9OIHBnX2NyZWF0ZV9yZXN0b3JlX3BvaW50KHRleHQpIEZST00gcHVi bGljOwogCiBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19zd2l0Y2hfd2FsKCkgRlJP TSBwdWJsaWM7CiAKK1JFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19zdGFuZGJ5 X3NuYXBzaG90KCkgRlJPTSBwdWJsaWM7CisKIFJFVk9LRSBFWEVDVVRFIE9OIEZVTkNUSU9O IHBnX3dhbF9yZXBsYXlfcGF1c2UoKSBGUk9NIHB1YmxpYzsKIAogUkVWT0tFIEVYRUNVVEUg T04gRlVOQ1RJT04gcGdfd2FsX3JlcGxheV9yZXN1bWUoKSBGUk9NIHB1YmxpYzsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGM4ZTExYWI3MTAuLjQ4ZDdiZTA3NWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNjM4NCw2ICs2Mzg0LDkgQEAKIHsgb2lkID0+ ICcyODQ4JywgZGVzY3IgPT4gJ3N3aXRjaCB0byBuZXcgd2FsIGZpbGUnLAogICBwcm9uYW1l ID0+ICdwZ19zd2l0Y2hfd2FsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ ICdwZ19sc24nLAogICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdwZ19zd2l0Y2hf d2FsJyB9LAoreyBvaWQgPT4gJzk2NTgnLCBkZXNjciA9PiAnbG9nIGRldGFpbHMgb2YgdGhl IGN1cnJlbnQgc25hcHNob3QgdG8gV0FMJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3N0YW5k Ynlfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3BnX2xz bicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ3BnX2xvZ19zdGFuZGJ5X3Nu YXBzaG90JyB9LAogeyBvaWQgPT4gJzMwOTgnLCBkZXNjciA9PiAnY3JlYXRlIGEgbmFtZWQg cmVzdG9yZSBwb2ludCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9yZXN0b3JlX3BvaW50 JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9h cmd0eXBlcyA9PiAndGV4dCcsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1 c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi4yNDcyNjVkMzI4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0MyBAQCAk U0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAkbm9kZS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNsb3RfbmFt ZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdpdmVu IHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBAXzsK KwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRsZSA9 IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNvbm5z dHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFtZSwg Jy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJ IyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9va3Mg Zm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFydF9s c24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVzdGFy dF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJRlJP TSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICck c2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2ljYWwg c2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFuZ2Ug Zm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxvZ2lj YWwKKwkjIGlzIHdhaXRpbmcuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn U0VMRUNUIHBnX2xvZ19zdGFuZGJ5X3NuYXBzaG90KCknKTsKKworCSRoYW5kbGUtPmZpbmlz aCgpOworCisJaXMoJHNlbGYtPnNsb3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICds b2dpY2FsJywgJHNsb3RfbmFtZSAuICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGll ICJjb3VsZCBub3QgY3JlYXRlIHNsb3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9 YmFjawogCiA9Y3V0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWls ZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IDIwOTExOGE2MzkuLmVj YTkwYzVjOGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC0zOSw2ICszOSw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAzMV9yZWNvdmVyeV9jb25mbGljdC5wbCcsCiAgICAgICAn dC8wMzJfcmVsZmlsZW5vZGVfcmV1c2UucGwnLAogICAgICAgJ3QvMDMzX3JlcGxheV90c3Bf ZHJvcHMucGwnLAorICAgICAgJ3QvMDM0X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCcs CiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0 X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0 X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi5jZjEyNzdiZDFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCkBAIC0wLDAgKzEs NzEwIEBACisjIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSA6IHRlc3QgbG9naWNhbCBk ZWNvZGluZywKKyMgcmVjb3ZlcnkgY29uZmxpY3QgYW5kIHN0YW5kYnkgcHJvbW90aW9uLgor Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3Jl IHRlc3RzID0+IDY3OworCitteSAoJHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkY2FzY2Fk aW5nX3N0ZG91dCwgJGNhc2NhZGluZ19zdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsK KworbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn cHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygnc3RhbmRieScpOworbXkgJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnkgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ2Nhc2NhZGluZ19zdGFuZGJ5Jyk7CitteSAk ZGVmYXVsdF90aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2Rl ZmF1bHQ7CitteSAkcmVzOworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBzbG90IG9uIHBy aW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0gJ3ByaW1hcnlfcGh5c2ljYWwnOworbXkg JHN0YW5kYnlfcGh5c2ljYWxfc2xvdG5hbWUgPSAnc3RhbmRieV9waHlzaWNhbCc7CisKKyMg ZmluZCAkcGF0IGluIGxvZ2ZpbGUgb2YgJG5vZGUgYWZ0ZXIgJG9mZi10aCBieXRlCitzdWIg ZmluZF9pbl9sb2cKK3sKKwlteSAoJG5vZGUsICRwYXQsICRvZmYpID0gQF87CisKKwkkb2Zm ID0gMCB1bmxlc3MgZGVmaW5lZCAkb2ZmOworCW15ICRsb2cgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6c2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSk7CisJcmV0dXJuIDAgaWYgKGxl bmd0aCgkbG9nKSA8PSAkb2ZmKTsKKworCSRsb2cgPSBzdWJzdHIoJGxvZywgJG9mZik7CisK KwlyZXR1cm4gJGxvZyA9fiBtLyRwYXQvOworfQorCisjIEZldGNoIHhtaW4gY29sdW1ucyBm cm9tIHNsb3QncyBwZ19yZXBsaWNhdGlvbl9zbG90cyByb3csIGFmdGVyIHdhaXRpbmcgZm9y CisjIGdpdmVuIGJvb2xlYW4gY29uZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5zdXJlIHdlJ3Zl IHJlYWNoZWQgYSBxdWllc2NlbnQgc3RhdGUuCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlt eSAoJG5vZGUsICRzbG90bmFtZSwgJGNoZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9s bF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhw cgorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xv dF9uYW1lID0gJyRzbG90bmFtZSc7CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBm b3Igc2xvdCB4bWlucyB0byBhZHZhbmNlIjsKK30KKworIyBDcmVhdGUgdGhlIHJlcXVpcmVk IGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90cwor eworCW15ICgkbm9kZSkgPSBAXzsKKwkkbm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9z dGFuZGJ5KCRub2RlX3ByaW1hcnksICdpbmFjdGl2ZXNsb3QnLCAndGVzdGRiJyk7CisJJG5v ZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnYWN0 aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBEcm9wIHRoZSBsb2dpY2FsIHNsb3RzIG9u IHN0YW5kYnkuCitzdWIgZHJvcF9sb2dpY2FsX3Nsb3RzCit7CisJJG5vZGVfc3RhbmRieS0+ cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2lu YWN0aXZlc2xvdCcpXSk7CisJJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NF TEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2FjdGl2ZXNsb3QnKV0pOworfQorCisj IEFjcXVpcmUgb25lIG9mIHRoZSBzdGFuZGJ5IGxvZ2ljYWwgc2xvdHMgY3JlYXRlZCBieSBj cmVhdGVfbG9naWNhbF9zbG90cygpLgorIyBJbiBjYXNlIHdhaXQgaXMgdHJ1ZSB3ZSBhcmUg d2FpdGluZyBmb3IgYW4gYWN0aXZlIHBpZCBvbiB0aGUgJ2FjdGl2ZXNsb3QnIHNsb3QuCisj IElmIHdhaXQgaXMgbm90IHRydWUgaXQgbWVhbnMgd2UgYXJlIHRlc3RpbmcgYSBrbm93biBm YWlsdXJlIHNjZW5hcmlvLgorc3ViIG1ha2Vfc2xvdF9hY3RpdmUKK3sKKwlteSAoJG5vZGUs ICR3YWl0LCAkdG9fc3Rkb3V0LCAkdG9fc3RkZXJyKSA9IEBfOworCW15ICRzbG90X3VzZXJf aGFuZGxlOworCisJJHNsb3RfdXNlcl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19y ZWN2bG9naWNhbCcsICctZCcsICRub2RlLT5jb25uc3RyKCd0ZXN0ZGInKSwgJy1TJywgJ2Fj dGl2ZXNsb3QnLCAnLW8nLCAnaW5jbHVkZS14aWRzPTAnLCAnLW8nLCAnc2tpcC1lbXB0eS14 YWN0cz0xJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0JywgJy1mJywgJy0nXSwgJz4nLCAkdG9f c3Rkb3V0LCAnMj4nLCAkdG9fc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwl7CisJCSMgbWFr ZSBzdXJlIGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGls KCd0ZXN0ZGInLAorCQkJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGlj YXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVf cGlkIElTIE5PVCBOVUxMKSIKKwkJKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGFjdGl2 ZSI7CisJfQorCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsKK30KKworIyBDaGVjayBwZ19y ZWN2bG9naWNhbCBzdGRlcnIKK3N1YiBjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIKK3sK KwlteSAoJHNsb3RfdXNlcl9oYW5kbGUsICRjaGVja19zdGRlcnIpID0gQF87CisJbXkgJHJl dHVybjsKKworCSMgb3VyIGNsaWVudCBzaG91bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25z ZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9yCisJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsK KwkkcmV0dXJuID0gJD87CisJY21wX29rKCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9n aWNhbCBleGl0ZWQgbm9uLXplcm8iKTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRl cnIsIHFyLyRjaGVja19zdGRlcnIvLCAnc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCcpOwor CX0KKworCXJldHVybiAwOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3Rh bmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRo YXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0 aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAo JHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdp bmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdpbmFjdGl2ZXNsb3Qgb24gc3Rh bmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcp LT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7 CisKKwljaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJHNsb3RfdXNlcl9oYW5kbGUsICJj b25mbGljdCB3aXRoIHJlY292ZXJ5Iik7Cit9CisKKyMgQ2hlY2sgaWYgYWxsIHRoZSBzbG90 cyBvbiBzdGFuZGJ5IGFyZSBkcm9wcGVkLiBUaGVzZSBpbmNsdWRlIHRoZSAnYWN0aXZlc2xv dCcKKyMgdGhhdCB3YXMgYWNxdWlyZWQgYnkgbWFrZV9zbG90X2FjdGl2ZSgpLCBhbmQgdGhl IG5vbi1hY3RpdmUgJ2luYWN0aXZlc2xvdCcuCitzdWIgY2hhbmdlX2hvdF9zdGFuZGJ5X2Zl ZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucworeworCW15ICgkaHNmLCAkaW52YWxpZGF0ZWQp ID0gQF87CisKKwkkbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JyxxcVsKKwlob3Rfc3RhbmRieV9mZWVkYmFjayA9ICRoc2YKKwldKTsKKworCSRub2RlX3N0 YW5kYnktPnJlbG9hZDsKKworCWlmICgkaHNmICYmICRpbnZhbGlkYXRlZCkKKwl7CisJCSMg V2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKwkJ IyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5jZSB0aGVy ZSBpcyBubyBsb2dpY2FsIHNsb3QuCisJCXdhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnks ICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFs b2dfeG1pbiBJUyBOVUxMIik7CisJfQorCWVsc2lmICgkaHNmKQorCXsKKwkJIyBXaXRoIGhv dF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIGFuZCBjYXRhbG9nX3htaW4gc2hvdWxkIGFk dmFuY2UuCisJCXdhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3Ru YW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOT1Qg TlVMTCIpOworCX0KKwllbHNlCisJeworCQkjIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2Ug aHNfZmVlZGJhY2sgaXMgb2ZmCisJCXdhaXRfZm9yX3htaW5zKCRub2RlX3ByaW1hcnksICRw cmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTlVMTCBBTkQgY2F0YWxvZ194bWlu IElTIE5VTEwiKTsKKworCX0KK30KKworIyBDaGVjayBjb25mbGljdGluZyBzdGF0dXMgaW4g cGdfcmVwbGljYXRpb25fc2xvdHMuCitzdWIgY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3Rh dHVzCit7CisJbXkgKCRjb25mbGljdGluZykgPSBAXzsKKworCWlmICgkY29uZmxpY3Rpbmcp CisJeworCQkkcmVzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCQkJCSdwb3N0Z3Jl cycsIHFxKAorCQkJCSBzZWxlY3QgYm9vbF9hbmQoY29uZmxpY3RpbmcpIGZyb20gcGdfcmVw bGljYXRpb25fc2xvdHM7KSk7CisKKwkJaXMoJHJlcywgJ3QnLAorCQkJIkxvZ2ljYWwgc2xv dHMgYXJlIHJlcG9ydGVkIGFzIGNvbmZsaWN0aW5nIik7CisJfQorCWVsc2UKKwl7CisJCSRy ZXMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJCQkJJ3Bvc3RncmVzJywgcXEoCisJ CQkJc2VsZWN0IGJvb2xfb3IoY29uZmxpY3RpbmcpIGZyb20gcGdfcmVwbGljYXRpb25fc2xv dHM7KSk7CisKKwkJaXMoJHJlcywgJ2YnLAorCQkJIkxvZ2ljYWwgc2xvdHMgYXJlIHJlcG9y dGVkIGFzIG5vbiBjb25mbGljdGluZyIpOworCX0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEsIGhh c19hcmNoaXZpbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgcXsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworbWF4X3JlcGxpY2F0aW9u X3Nsb3RzID0gNAorbWF4X3dhbF9zZW5kZXJzID0gNAorbG9nX21pbl9tZXNzYWdlcyA9ICdk ZWJ1ZzInCitsb2dfZXJyb3JfdmVyYm9zaXR5ID0gdmVyYm9zZQorfSk7Ciskbm9kZV9wcmlt YXJ5LT5kdW1wX2luZm87Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworJG5vZGVfcHJpbWFy eS0+cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtTRUxFQ1QgKiBGUk9NIHBnX2Ny ZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCckcHJpbWFyeV9zbG90bmFtZScpO10p OworCisjIENoZWNrIGNvbmZsaWN0aW5nIGlzIE5VTEwgZm9yIHBoeXNpY2FsIHNsb3QKKyRy ZXMgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQkg U0VMRUNUIGNvbmZsaWN0aW5nIGlzIG51bGwgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyB3 aGVyZSBzbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUnO10pOworCitpcygkcmVzLCAn dCcsCisJIlBoeXNpY2FsIHNsb3QgcmVwb3J0cyBjb25mbGljdGluZyBhcyBOVUxMIik7CisK K215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1 cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFu ZGJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmlu aXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19z dHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUg PSAnJHByaW1hcnlfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2Rl X3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRu b2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZST00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0 aW9uX3Nsb3QoJyRzdGFuZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lJyk7XSk7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgY2FzY2FkaW5nIHN0YW5kYnkgbm9kZQor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyRub2RlX3N0YW5kYnktPmJhY2t1cCgkYmFja3Vw X25hbWUpOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJ JG5vZGVfc3RhbmRieSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwlo YXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1hcnlfc2xvdF9uYW1lID0gJyRzdGFu ZGJ5X3BoeXNpY2FsX3Nsb3RuYW1lJ10pOworJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnktPnN0 YXJ0OworJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9jYXNjYWRpbmdf c3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdGhhdCBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5CisjIGJlaGF2ZXMgY29y cmVjdGx5LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Ns b3RzKCRub2RlX3N0YW5kYnkpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8g ZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5v ZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisK K215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFb U0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEws IE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxh cihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJlc3VsdCksCisJMTQsICdEZWNvZGluZyBw cm9kdWNlZCAxNCByb3dzICgyIEJFR0lOL0NPTU1JVCBhbmQgMTAgcm93cyknKTsKKworIyBJ bnNlcnQgc29tZSByb3dzIGFuZCB2ZXJpZnkgdGhhdCB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0 cyBmcm9tIHBnX3JlY3Zsb2dpY2FsCisjIGFuZCB0aGUgU1FMIGludGVyZmFjZS4KKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGlu Z190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0 KSBzO10KKyk7CisKK215ICRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0 YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0 XTonMycKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 NCB5W3RleHRdOic0JworQ09NTUlUfTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0 Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVz aCcpKTsKKworbXkgJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rl c3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFu Z2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScpO10KKyk7CisKK2lzKCRzdGRvdXRfc3FsLCAkZXhwZWN0 ZWQsICdnb3QgZXhwZWN0ZWQgb3V0cHV0IGZyb20gU1FMIGRlY29kaW5nIHNlc3Npb24nKTsK KworbXkgJGVuZHBvcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwki U0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNs b3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24gREVTQyBMSU1JVCAxOyIKKyk7CisKKyMg SW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRl Y29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5v ZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisK K215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8o CisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBvcywgJGRlZmF1bHRfdGltZW91 dCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhh Y3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwg JGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2 bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVl cnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf cmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBh Y3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUgInNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0 aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVfc3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxf dXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNsb3QnLCAkZW5kcG9zLCAkZGVmYXVsdF90 aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1w dHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9y ZWN2LCAnJywgJ3BnX3JlY3Zsb2dpY2FsIGFja25vd2xlZGdlZCBjaGFuZ2VzJyk7CisKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIERBVEFCQVNFIG90 aGVyZGInKTsKKworaXMoICRub2RlX3ByaW1hcnktPnBzcWwoCisgICAgICAgICdvdGhlcmRi JywKKyAgICAgICAgIlNFTEVDVCBsc24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFu Z2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQg MTsiCisgICAgKSwKKyAgICAzLAorICAgICdyZXBsYXlpbmcgbG9naWNhbCBzbG90IGZyb20g YW5vdGhlciBkYXRhYmFzZSBmYWlscycpOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMK K2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0 ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJp byAxOiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYgYW5kIHZhY3V1bSBGVUxMCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGNyZWF0 ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRi eSk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNy ZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kCisjIGxhdW5jaCBhIHZhY3V1bSBmdWxsIG9uIHBn X2NsYXNzIHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbgorIyB0aGUg c3RhbmRieS4KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1p bnMoMCwxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwg MSwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBj b25mbGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUg VEFCTEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtd KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBmdWxsIHBn X2NsYXNzOycpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1l c3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3Rh bmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBp dCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52 YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcg c2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5 IiksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZh Y3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRh YmFzZV9jb25mbGljdHMuY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0 ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jlcycs CisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0 X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAor CSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0 IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisj IFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGlj YXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhh bmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQsIFwk c3RkZXJyKTsKKworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFz IGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIo JGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwi YWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRieV9mZWVkYmFjayBiYWNrIG9u CitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDEsMSk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBp bmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDI6IGNvbmZsaWN0IGR1ZSB0byBy b3cgcmVtb3ZhbCB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9mZi4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBw b3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCitteSAkbG9n c3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2lj YWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNh bCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25l IHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEg cmVsYXRpb24gYW5kCisjIGxhdW5jaCBhIHZhY3V1bSBvbiBwZ19jbGFzcyB3aXRoIGhvdF9z dGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYgb24gdGhlIHN0YW5kYnkuCitjaGFuZ2VfaG90 X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5kbGUg PSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVy cik7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3Qo eCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gcGdfY2xhc3M7Jyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgYmUgaXNzdWVkCitv ayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNs b3QgXCJpbmFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5 IiwgJGxvZ3N0YXJ0KSwKKyAgJ2luYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBs b2dnZWQgd2l0aCB2YWN1dW0gb24gcGdfY2xhc3MnKTsKKworb2soIGZpbmRfaW5fbG9nKAor ICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwi IGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAn YWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gb24g cGdfY2xhc3MnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3ZSBub3cg ZXhwZWN0IDIgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNy b3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdw b3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJv bSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYici LCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAi VGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0 ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmcgaW4g cGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygx KTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRz dGRvdXQsIFwkc3RkZXJyKTsKKworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9tIHRo ZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9naWNh bF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlv biBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBTYW1lIGFz IFNjZW5hcmlvIDIgYnV0IG9uIGEgbm9uIGNhdGFsb2cgdGFibGUKKyMgU2NlbmFyaW8gMzog Tm8gY29uZmxpY3QgZXhwZWN0ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2VhcmNoIGZy b20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0gLXMgJG5vZGVfc3RhbmRi eS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xvZ2ljYWxf c2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2Fs X3Nsb3RzKCRub2RlX3N0YW5kYnkpOworCisjIHB1dCBob3Qgc3RhbmRieSBmZWVkYmFjayB0 byBvZmYKK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMo MCwxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwg XCRzdGRvdXQsIFwkc3RkZXJyKTsKKworIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNv bmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBU QUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gY29uZmxpY3RfdGVzdCh4 LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIGNvbmZsaWN0 X3Rlc3Qgc2V0IHg9MSwgeT0xO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLCAnVkFDVVVNIGNvbmZsaWN0X3Rlc3Q7Jyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxz bignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91bGQgbm90IGJlIGlzc3VlZAorb2soICFm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBc ImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAk bG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIG5vdCBs b2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCitvayggIWZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZl c2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQp LAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBub3QgbG9nZ2VkIHdpdGgg dmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2Rh dGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIG5vdCBiZWVu IHVwZGF0ZWQKKyMgd2Ugbm93IHN0aWxsIGV4cGVjdCAyIGNvbmZsaWN0cyByZXBvcnRlZCBh cyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZWxvYWRzCitvayggJG5vZGVfc3RhbmRi eS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2Fj dGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMg d2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2lj YWxzbG90IG5vdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9h Y3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFy ZSByZXBvcnRlZCBhcyBub24gY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMK K2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1cygwKTsKKworIyBUdXJuIGhvdF9zdGFu ZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRf d2FpdF9mb3JfeG1pbnMoMSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRl IGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlv IDQ6IGNvbmZsaWN0IGR1ZSB0byBvbi1hY2Nlc3MgcHJ1bmluZy4KKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3Np dGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQg PSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xv dHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90 cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgT25lIHdheSB0 byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIHRyaWdnZXIgYW4gb24tYWNjZXNz IHBydW5pbmcKKyMgb24gYSByZWxhdGlvbiBtYXJrZWQgYXMgdXNlcl9jYXRhbG9nX3RhYmxl LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygwLDAp OworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAxLCBcJHN0 ZG91dCwgXCRzdGRlcnIpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0 Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBw cnVuKGlkIGludGVnZXIsIHMgY2hhcigyMDAwKSkgV0lUSCAoZmlsbGZhY3RvciA9IDc1LCB1 c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gcHJ1biBWQUxVRVMgKDEsICdBJyk7XSk7Cisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBz ID0gJ0InO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERB VEUgcHJ1biBTRVQgcyA9ICdDJztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywgcXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnRCc7XSk7Ciskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0UnO10pOworCisk bm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXkn LCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJl IGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFs aWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0 aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlk YXRpb24gaXMgbG9nZ2VkIHdpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRf aW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0 aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3Rh cnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBv bi1hY2Nlc3MgcHJ1bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisj IHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVy c2lzdCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50 aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3Qg PSAzKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAn dGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykg b3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8g YmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGlj dGluZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdf c3RhdHVzKDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5 LCAwLCBcJHN0ZG91dCwgXCRzdGRlcnIpOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFk IGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3Jl Y3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2Fp dF9mb3JfeG1pbnMoMSwgMSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNv bmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6 IGluY29ycmVjdCB3YWxfbGV2ZWwgb24gcHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0 byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAk bm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ry b3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyRoYW5kbGUgPSBtYWtlX3Ns b3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0ZGVycik7CisKKyMg TWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90 IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0 YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnks ICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ug c2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xv dCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZp bmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwi YWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9n c3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVl IHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdl IG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lz dCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwo CisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSA0 KSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVz dGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3Ig ZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUg dXBkYXRlZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGlu ZyBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3Rh dHVzKDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgkbm9kZV9zdGFuZGJ5LCAw LCBcJHN0ZG91dCwgXCRzdGRlcnIpOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9t IHRoZSBzbG90IGFzIGl0IHJlcXVpcmVzIHdhbF9sZXZlbCBhdCBsZWFzdCBsb2dpY2FsIG9u IHRoZSBwcmltYXJ5IHNlcnZlcgorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5k bGUsICJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRv IGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIik7CisKKyMgUmVz dG9yZSBwcmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9w cmltYXJ5LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9k ZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKwor JGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMCwgXCRzdGRvdXQs IFwkc3RkZXJyKTsKKyMgYXMgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hv dWxkIG5vdCBiZSBhYmxlIHRvIHJlYWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigk aGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJh Y3RpdmVzbG90XCIiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgRFJPUCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90 cywgaW5jbHVkaW5nIGFjdGl2ZSBzbG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cwor ZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitj cmVhdGVfbG9naWNhbF9zbG90cygkbm9kZV9zdGFuZGJ5KTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoJG5vZGVfc3RhbmRieSwgMSwgXCRzdGRvdXQsIFwkc3RkZXJyKTsKKyMg Q3JlYXRlIGEgc2xvdCBvbiBhIGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQu IFRoaXMgc2xvdCBzaG91bGQgbm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdvdGhlcnNs b3QnLCAncG9zdGdyZXMnKTsKKworIyBkcm9wZGIgb24gdGhlIHByaW1hcnkgdG8gdmVyaWZ5 IHNsb3RzIGFyZSBkcm9wcGVkIG9uIHN0YW5kYnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxW0RST1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNl IFdIRVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVk IG9uIHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dp Y2FsJywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVh bnVwIDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFu ZCBsb2dpY2FsIGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMg cHJvbW90ZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIHJlZHVjZSB3YWxfc2VuZGVyX3RpbWVvdXQgdG8gbm90IHdhaXQgdG9v IGxvbmcgYWZ0ZXIgcHJvbW90aW9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJyxxcVsKKwl3YWxfc2VuZGVyX3RpbWVvdXQgPSAxcworXSk7CisKKyRu b2RlX3N0YW5kYnktPnJlbG9hZDsKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMn LCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNx bCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5 IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2lj YWxfc2xvdHMoJG5vZGVfc3RhbmRieSk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz IG9uIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0b28KK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCRu b2RlX2Nhc2NhZGluZ19zdGFuZGJ5KTsKKworIyBNYWtlIHNsb3RzIGFjdGl2ZXMKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKCRub2RlX3N0YW5kYnksIDEsIFwkc3Rkb3V0LCBcJHN0 ZGVycik7CitteSAkY2FzY2FkaW5nX2hhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoJG5vZGVf Y2FzY2FkaW5nX3N0YW5kYnksIDEsIFwkY2FzY2FkaW5nX3N0ZG91dCwgXCRjYXNjYWRpbmdf c3RkZXJyKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0aGUgcHJvbW90aW9uCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCisjIFdhaXQgZm9yIGJvdGggc3RhbmRieXMgdG8gY2F0Y2h1cAor JG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5 JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKyRub2RlX3N0YW5kYnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfY2FzY2FkaW5nX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9w cmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnBy b21vdGU7CisKKyMgaW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2Rp bmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUs NykgcztdCispOworCisjIFdhaXQgZm9yIHRoZSBjYXNjYWRpbmcgc3RhbmRieSB0byBjYXRj aHVwCiskbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX2Nhc2NhZGluZ19z dGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfc3RhbmRieS0+bHNuKCdmbHVzaCcpKTsKKworJGV4 cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDog eFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDog SU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVibGlj LmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitDT01N SVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVn ZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6 IHhbaW50ZWdlcl06NiB5W3RleHRdOic2JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6 IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4dF06JzcnCitDT01NSVR9OworCisjIGNoZWNr IHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQg cm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdp bmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1l bXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwg J2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBwcm9t b3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFu ZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCByb3dzCisjIHdpdGggcGdfcmVjdmxvZ2ljYWwg dGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByb21vdGlvbgorbXkgJHB1bXBfdGltZW91 dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRf ZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGlsKAorICAgICAgICAkaGFuZGxlLCAkcHVtcF90 aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdnb3Qg MiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJHN0ZG91 dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91 dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworIyBjaGVj ayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9uIGluc2VydGVk IHJvd3Mgb24gdGhlIGNhc2NhZGluZyBzdGFuZGJ5Ciskc3Rkb3V0X3NxbCA9ICRub2RlX2Nh c2NhZGluZ19zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEg RlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdpbmFjdGl2ZXNsb3QnLCBOVUxM LCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7 XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRw dXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRieScpOwor CisjIGNoZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24g aW5zZXJ0ZWQgcm93cworIyB3aXRoIHBnX3JlY3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQg YmVmb3JlIHRoZSBwcm9tb3Rpb24gb24gdGhlIGNhc2NhZGluZyBzdGFuZGJ5CitvayggcHVt cF91bnRpbCgKKyAgICAgICAgJGNhc2NhZGluZ19oYW5kbGUsICRwdW1wX3RpbWVvdXQsIFwk Y2FzY2FkaW5nX3N0ZG91dCwgcXIvXi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdnb3Qg MiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJGNhc2Nh ZGluZ19zdGRvdXQpOworaXMoJGNhc2NhZGluZ19zdGRvdXQsICRleHBlY3RlZCwKKyAgICAn Z290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gcGdfcmVjdmxvZ2ljYWwgZGVjb2Rpbmcg c2Vzc2lvbiBvbiBjYXNjYWRpbmcgc3RhbmRieScpOwotLSAKMi4zNC4xCgo= --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v49-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmODZiNDIyNDcxMTY5Nzk1OTk1ZmM5ZGJhNjk0ZWVmNzE5ZWRlNjczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgNC82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgfCAgMyArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgg ICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKICA0My4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0Ni4xJSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy44JSBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS8KICAgMy43JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgIDMuMSUgc3JjL2luY2x1ZGUvCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBkYmU5 Mzk0NzYyLi44YTk1MDVhNTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dS ZWNvdmVyeUN0bERhdGEKIAlSZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRl OwogCUNvbmRpdGlvblZhcmlhYmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBs YXkgc3RhdGUgKHNlZSBjaGVja19mb3JfcmVwbGF5KCkgZm9yIG1vcmUgZXhwbGFuYXRpb24p ICovCisJQ29uZGl0aW9uVmFyaWFibGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9f bGNrOwkJLyogbG9ja3Mgc2hhcmVkIHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9n UmVjb3ZlcnlDdGxEYXRhOwogCkBAIC00NjgsNiArNDcxLDcgQEAgWExvZ1JlY292ZXJ5U2ht ZW1Jbml0KHZvaWQpCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNr KTsKIAlJbml0U2hhcmVkTGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCk7CiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292 ZXJ5Tm90UGF1c2VkQ1YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKIH0KIAogLyoKQEAgLTE5MzUsNiArMTkzOSwxMSBAQCBBcHBs eVdhbFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJl Y29yZCwgVGltZUxpbmVJRCAqcmVwbAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVk VExJID0gKnJlcGxheVRMSTsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwogCisJLyoKKwkgKiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxv Z2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYg cm1fcmVkbyBjYWxsZWQgWExvZ1JlcXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdh a2UgdXAgdGhlCiAJICogcmVjZWl2ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVk IGxhc3RSZXBsYXllZEVuZFJlY1B0ciBhbmQgc2VuZHMKQEAgLTQ5NDIsMyArNDk1MSwyMiBA QCBhc3NpZ25fcmVjb3ZlcnlfdGFyZ2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQg KmV4dHJhKQogCWVsc2UKIAkJcmVjb3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5T RVQ7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRp bmcgdGhhdCBhIHJlcGxheSBoYXMgYmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVk IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0i IGlzIHRoYXQKKyAqIFdhbFNuZFdhaXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkq IExTTiB0byBpbmNyZWFzZSwgYnV0IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVy IHdoZW4gbmV3IFdBTCBoYXMgYmVlbiBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGlj YWxseQorICogd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1l IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRo YXQgYnkgdGhlIHRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExv Z1JlcGxheVJlY1B0cigpIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNz IGFscmVhZHkgcmVwbGF5ZWQKKyAqIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyLgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBY TG9nUmVjb3ZlcnlDdGwtPnJlcGxheWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisg Ki8KK0NvbmRpdGlvblZhcmlhYmxlICoKK2NoZWNrX2Zvcl9yZXBsYXkodm9pZCkKK3sKKwly ZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMWU5MWNiYzU2NC4uM2ZjN2I0MmQxNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTE1NTIsNiArMTU1Miw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsK IAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNlbnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRy OworCUNvbmRpdGlvblZhcmlhYmxlICpyZXBsYXllZENWID0gY2hlY2tfZm9yX3JlcGxheSgp OwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8gYXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9j ayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3ZQpAQCAtMTU2NiwxMCArMTU2NywxNSBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkpCiAJCVJlY2VudEZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CiAJZWxz ZQorCXsKIAkJUmVjZW50Rmx1c2hQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOwor CQkvKiBQcmVwYXJlIHRoZSByZXBsYXllZENWIHRvIHNsZWVwICovCisJCUNvbmRpdGlvblZh cmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJfQogCiAJZm9yICg7OykKIAl7 CisKIAkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwpAQCAtMTY1MywyMSArMTY1OSwzMyBAQCBXYWxTbmRXYWl0Rm9yV2Fs KFhMb2dSZWNQdHIgbG9jKQogCQkvKiBTZW5kIGtlZXBhbGl2ZSBpZiB0aGUgdGltZSBoYXMg Y29tZSAqLwogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCisJCXNsZWVwdGlt ZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVzdGFtcCgpKTsKIAkJ LyoKLQkJICogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQu ICBBbHNvIHdhaXQgZm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlm IHRoZXJlJ3Mgc3RpbGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292 ZXJ5LCBzbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJ ICogQWxzbyB3YWl0IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVy ZSdzIHN0aWxsIHBlbmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0 IG9uIHNlbmRhYmxlIG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBX QUwgdG8gYmUgZ2VuZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwg d2UgZG9uJ3QKIAkJICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAq LwotCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7Ci0KLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJaWYg KCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJeworCQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tF VF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5nKCkpCi0JCQl3YWtlRXZl bnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAocHFfaXNfc2VuZF9wZW5kaW5n KCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCVdhbFNu ZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV0FJ VF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgY2FzZS4KKwkJ CSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHJlcGxheSB3 YWwgcmVjb3JkKHMpIHVzaW5nCisJCQkgKiBhIHRpbWVvdXQgaW4gY2FzZSB3ZSBhcmUgcmVx dWVzdGVkIHRvIHN0b3AuCisJCQkgKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVl cChyZXBsYXllZENWLCBzbGVlcHRpbWUsCisJCQkJCQkJCQkJV0FJVF9FVkVOVF9XQUxfU0VO REVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28g V2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3ODYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2Myw2ICs0NjMs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRf RVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1lID0gIldhbFJl Y2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfV0FMX1NF TkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2ZXJXYWl0UmVw bGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEU6 CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li4yYmZlYWFhMDBmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8u aCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0IHR5cGUuCkBA IC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJlc0ludFBhcmFt ZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAogCiBleHRlcm4g dm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpjaGVja19mb3JfcmVwbGF5KHZv aWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3MiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcgQEAKICNk ZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBkbyB3aXRo IGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBlbnVtCiAJ V0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9FWElULAog CVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVOVF9XQUxf U0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERBVEUKIH0g V2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v49-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBiNGYwM2EyZmRlOGJjMDkxNDI3OTk5ZWEwZWE2MzMzNWQ5MDUyNDNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU5OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgfCAxMSArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKysrKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIHwgMzcgKysrKysrKystLS0tLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICB8IDQxICsrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgIHwgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygr KSwgNTggZGVsZXRpb25zKC0pCiAgIDQuNyUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v CiAgMzguNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1NS42JSBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggNTRkMzQ0YTU5Yy4uNTg2NGM1ZTMwNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNDQ2NCw2ICs0NDY0LDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJv b2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdh bF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFs dWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBi ZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxs eSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxM ZXZlbE9uU3RhbmRieSh2b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVs OworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExP RwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRl eCBhNTNlMjNjNjc5Li42YjY2YTk3MWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJ ICogY2FuIHJlc3RhcnQgZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2Ug WExPR19QQVJBTUVURVJfQ0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4 bHJlYyA9CisJCQkJKHhsX3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVm LT5yZWNvcmQpOworCisJCQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMg cmVkdWNlZCB0byBsZXNzIHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBw cmV2ZW50IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICog RXhpc3RpbmcgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVu IHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90 IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZp Y2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJv bml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xl dmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgor CQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rp bmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgIgorCQkJCQkJCQkidG8gYmUgYXQg bGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOworCQkJYnJlYWs7CisJ CX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhM T0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFN RVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0df RlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggMWE1OGRkNzY0OS4uOTFhY2Mw YzE1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMK QEAgLTExOSwyMyArMTE5LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRz KHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCiAJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRh dGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0 byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNh bGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGlt ZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNl IGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0J ICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBz dXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFi YXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBv bmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3Vs ZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBj YW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBU aGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAq IFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNo YW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5k IGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWly ZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90 LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5n IHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxf TEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJ CQkidG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSkpOwor CX0KIH0KIAogLyoKQEAgLTMzMSw2ICszMzAsMTIgQEAgQ3JlYXRlSW5pdERlY29kaW5nQ29u dGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0YW5kYnks IHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgc2xvdC4g Q2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8KKwlDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBsaW5lcy4u LiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDM4YzZmMTg4ODYuLjI5MGQ0YjQ1ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogCiAvKgogICogUmVwbGlj YXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAtMTE3NywzNyArMTE3OCwy OCBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCS8qCiAJCSAqIEZvciBs b2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5kIHN0YXJ0IGxvZ2ljYWwg ZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9uLiBUaGF0IGFsbG93cyB0 aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHkuCisJCSAqIHF1aWNrbHku IEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0ZXMsIHNvIGp1c3QgdXNl IHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHksIGFuIGF0dGVtcHQgdG8g Y3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkgd2lsbCBjYXVzZSBpdCB0 byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRvIGJlCisJCSAqIGxvZ2dl ZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0IGEgc25hcHNob3QgY2Fu IGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSByZWNvcmQuCiAJCSAqCi0JCSAqIFRoYXQncyBu b3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzIHRo ZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50 IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0 IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNlcwotCQkgKiB0aGUgY2hh bmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwIGhh cyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUgb2YgdGhpcyBpcyBuZWVk ZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xvdHMgYXMKKwkJICogdGhl eSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNoZWNrcG9pbnQgYW55d2F5 LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGxhc3QgcmVkbyBM U04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2VzIHRoZSBjaGFuY2UgdGhh dCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBiYWNrdXAKKwkJICogaGFz IHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVjb3ZlcnlJblByb2dyZXNz KCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKLQkJewotCQkJWExvZ1JlY1B0cglmbHVzaHB0 cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8KKwkJaWYg KFNsb3RJc1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRy KCk7CisJCWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQllbHNlCiAJCQlyZXN0YXJ0X2xzbiA9 IEdldFhMb2dJbnNlcnRSZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0 ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3Bp bkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0KLQkJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZl IGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLwotCQkJZmx1c2hwdHIgPSBMb2dTdGFu ZGJ5U25hcHNob3QoKTsKIAotCQkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8g ZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwotCQkJU3BpbkxvY2tBY3F1aXJlKCZz bG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247 Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQkJfQorCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3Rh cnRfbHNuOworCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2 ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25T bG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpAQCAtMTIyMyw2ICsxMjE1LDE3IEBAIFJlcGxp Y2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNl Z25vKCkgPCBzZWdubykKIAkJCWJyZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dy ZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hw dHI7CisKKwkJLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0 YXJ0ICovCisJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5k IG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hw dHIpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5k ZXggODg4NWNkZWViYy4uMWU5MWNiYzU2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTkwNiwyMyArOTA2LDMxIEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQg cmVxCiAJaW50CQkJY291bnQ7CiAJV0FMUmVhZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05v CXNlZ25vOwotCVRpbWVMaW5lSUQJY3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5l KCk7CisJVGltZUxpbmVJRAljdXJyVExJOwogCiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRl Y29kaW5nIGlzIG9ubHkgcGVybWl0dGVkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cK LQkgKiB0aGF0IHRoZSBjdXJyZW50IHRpbWVsaW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFu eSBtb3JlLiBJZiB3ZSBkaWQgdGhpcwotCSAqIG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRv IHdvcnJ5IGFib3V0IHRoZSB2YWx1ZXMgd2UgY29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcg aW52YWxpZCBkdWUgdG8gYSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNp bmNlIGxvZ2ljYWwgZGVjb2RpbmcgaXMgYWxzbyBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNl cnZlciwgd2UgbmVlZAorCSAqIHRvIGNoZWNrIGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3Zl cnkgdG8gZGVjaWRlIGhvdyB0byBnZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAo c28gdGhhdCBpdCBhbHNvIGNvdmVyIHRoZSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdl IGNhc2VzKS4KIAkgKi8KKworCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBXQUwgYXZh aWxhYmxlICovCisJZmx1c2hwdHIgPSBXYWxTbmRXYWl0Rm9yV2FsKHRhcmdldFBhZ2VQdHIg KyByZXFMZW4pOworCisJLyogdGhlIHN0YW5kYnkgY291bGQgaGF2ZSBiZWVuIHByb21vdGVk LCBzbyBjaGVjayBpZiBzdGlsbCBpbiByZWNvdmVyeSAqLworCWFtX2Nhc2NhZGluZ193YWxz ZW5kZXIgPSBSZWNvdmVyeUluUHJvZ3Jlc3MoKTsKKworCWlmIChhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyKQorCQlHZXRYTG9nUmVwbGF5UmVjUHRyKCZjdXJyVExJKTsKKwllbHNlCisJCWN1 cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGluZSgpOworCiAJWExvZ1JlYWREZXRlcm1p bmVUaW1lbGluZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuLCBjdXJyVExJKTsKIAlz ZW5kVGltZUxpbmVJc0hpc3RvcmljID0gKHN0YXRlLT5jdXJyVExJICE9IGN1cnJUTEkpOwog CXNlbmRUaW1lTGluZSA9IHN0YXRlLT5jdXJyVExJOwogCXNlbmRUaW1lTGluZVZhbGlkVXB0 byA9IHN0YXRlLT5jdXJyVExJVmFsaWRVbnRpbDsKIAlzZW5kVGltZUxpbmVOZXh0VExJID0g c3RhdGUtPm5leHRUTEk7CiAKLQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLwotCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKLQogCS8qIGZhaWwgaWYgbm90IChpbXBsaWVzIHdlIGFyZSBnb2luZyB0 byBzaHV0IGRvd24pICovCiAJaWYgKGZsdXNocHRyIDwgdGFyZ2V0UGFnZVB0ciArIHJlcUxl bikKIAkJcmV0dXJuIC0xOwpAQCAtOTM3LDcgKzk0NSw3IEBAIGxvZ2ljYWxfcmVhZF94bG9n X3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LCBpbnQgcmVxCiAJCQkJIGN1cl9wYWdlLAogCQkJCSB0YXJnZXRQYWdlUHRyLAogCQkJCSBY TE9HX0JMQ0tTWiwKLQkJCQkgc3RhdGUtPnNlZy53c190bGksIC8qIFBhc3MgdGhlIGN1cnJl bnQgVExJIGJlY2F1c2Ugb25seQorCQkJCSBjdXJyVExJLCAJCQkvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKIAkJCQkJCQkJCSAqIFdhbFNuZFNlZ21lbnRPcGVuIGNv bnRyb2xzIHdoZXRoZXIgbmV3CiAJCQkJCQkJCQkgKiBUTEkgaXMgbmVlZGVkLiAqLwogCQkJ CSAmZXJyaW5mbykpCkBAIC0zMDc0LDEwICszMDgyLDE0IEBAIFhMb2dTZW5kTG9naWNhbCh2 b2lkKQogCSAqIElmIGZpcnN0IHRpbWUgdGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRp YWxpemUgZmx1c2hQdHIuICBPdGhlcndpc2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0 ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIgaXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQ dHIgPT0gSW52YWxpZFhMb2dSZWNQdHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIo TlVMTCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVj UHRyID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwor CWlmIChmbHVzaFB0ciA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29k aW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCisJeworCQlpZiAoYW1f Y2FzY2FkaW5nX3dhbHNlbmRlcikKKwkJCWZsdXNoUHRyID0gR2V0U3RhbmRieUZsdXNoUmVj UHRyKE5VTEwpOworCQllbHNlCisJCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwp OworCX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwg aXQgbWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+ cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0zMTY4LDcgKzMxODAsOCBAQCBH ZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKQogCXJlY2VpdmVQdHIgPSBH ZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7CiAJcmVwbGF5UHRyID0g R2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAotCSp0bGkgPSByZXBsYXlUTEk7 CisJaWYgKHRsaSkKKwkJKnRsaSA9IHJlcGxheVRMSTsKIAogCXJlc3VsdCA9IHJlcGxheVB0 cjsKIAlpZiAocmVjZWl2ZVRMSSA9PSByZXBsYXlUTEkgJiYgcmVjZWl2ZVB0ciA+IHJlcGxh eVB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNmZTU0MDk3MzguLjQ4Y2E4NTIzODEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3hsb2cuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGV4dGVybiB2b2lkIFhMT0dTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRlcm4gdm9p ZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZl bCBHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0 dXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1 bSBhcmcpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpOwotLSAK Mi4zNC4xCgo= --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v49-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBiMWI4YjE5ZmYwYWVmYjYwMjI3ZWUyYTM4ZmY0MDdjMzE3ZWQ3YTNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU3OjU2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gdGhlIHByaW1hcnkgc2VydmVyCmlzIHJlZHVjZWQgdG8gYmVs b3cgbG9naWNhbCBhbmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3Rh bmRieS4gSW50cm9kdWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QK Y29uZmxpY3QgcmVjb3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzIGZpZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBZGQgYSBuZXcg ZmllbGQgImNvbmZsaWN0aW5nIiBpbiBwZ19yZXBsaWNhdGlvbl9zbG90cy4KCkF1dGhvcjog QW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBC ZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMg RnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8sCkJoYXJhdGgg UnVwaXJlZGR5Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDExICsKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAg ICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbCAgICAgICAgICB8ICAgNiArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgICAgICAgICAgICAgICAgfCAxOTggKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAgICB8ICAgOCArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDEzICstCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMjQgKysr CiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAx MSArLQogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8 ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAg ICAgfCAgIDggKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDMwNCBpbnNlcnRpb25zKCspLCA2MyBk ZWxldGlvbnMoLSkKICAgNS40JSBkb2Mvc3JjL3NnbWwvCiAgIDcuMiUgc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vCiAgIDQuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC8KICA1Ni44JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNC41JSBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy8KICAgNi41JSBzcmMvYmFja2VuZC90Y29wLwogICA1LjQlIHNyYy9i YWNrZW5kLwogICAzLjklIHNyYy9pbmNsdWRlL2NhdGFsb2cvCiAgIDMuMCUgc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTc1NmYxYTRiNi4u ZTI1ZjcxYTc3NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC00MzY1LDYgKzQzNjUsMTcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICBkZWFkbG9ja3MKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIGFjdGl2ZSBsb2dpY2FsIHNsb3RzIGluIHRo aXMgZGF0YWJhc2UgdGhhdCBoYXZlIGJlZW4KKyAgICAgICBpbnZhbGlkYXRlZCBiZWNhdXNl IHRoZXkgY29uZmxpY3Qgd2l0aCByZWNvdmVyeSAobm90ZSB0aGF0IGluYWN0aXZlIG9uZXMK KyAgICAgICBhcmUgYWxzbyBpbnZhbGlkYXRlZCBidXQgZG8gbm90IGluY3JlbWVudCB0aGlz IGNvdW50ZXIpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgPC90 Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CmluZGV4IDdjOGZjM2Y2NTQuLjIzOWY3MTMyOTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwKQEAgLTI1MTYsNiArMjUxNiwxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExF RlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICBmYWxzZSBmb3IgcGh5c2lj YWwgc2xvdHMuCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsaWN0 aW5nPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgdGhpcyBsb2dpY2FsIHNsb3QgY29uZmxpY3Rl ZCB3aXRoIHJlY292ZXJ5IChhbmQgc28gaXMgbm93CisgICAgICAgaW52YWxpZGF0ZWQpLiBB bHdheXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdHMuCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggYjc2NzhmM2MxNC4uOWE4NmZi M2ZlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTcsNiArMTk3 LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTM5MCw2ICszOTEsNyBAQCBnaXN0 UmVkb1BhZ2VSZXVzZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5I b3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxY aWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxy ZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCAwOGNlYjkxMjg4Li5i ODU2MzA0NzQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtMTAw Myw2ICsxMDAzLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0 b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hv dCh4bGRhdGEtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEt PmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCAwNGU5YmM1ZWIyLi42NTI0Nzg0NTgzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtODY4Niw2ICs4Njg2LDcgQEAgaGVhcF94bG9n X3BydW5lKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJbkhvdFN0YW5k YnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmlzQ2F0YWxvZ1JlbCwK IAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCiAJLyoKQEAgLTg4NTUsNiArODg1Niw3IEBAIGhl YXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs cmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPmZsYWdz ICYgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTCwKIAkJCQkJCQkJCQkJcmxvY2F0b3Ip OwogCiAJLyoKQEAgLTg5NzIsNiArODk3NCw3IEBAIGhlYXBfeGxvZ19mcmVlemVfcGFnZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3Jk LCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJ CQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKaW5kZXggNDE0Y2E0ZjZkZS4uYzg3 ZTQ2ZWQ2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMKQEAgLTY2OSw2 ICs2NjksNyBAQCBidHJlZV94bG9nX2RlbGV0ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxM KTsKIAogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkgICB4 bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCmluZGV4IGIwNzFiNTljOGEu LjQ1OWFjOTI5YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jCkBAIC04 NzksNiArODc5LDcgQEAgc3BnUmVkb1ZhY3V1bVJlZGlyZWN0KFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZsb2NhdG9yLCBO VUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0Nh dGFsb2dSZWwsCiAJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jCmluZGV4IGY5ZjBmNmRiOGQuLjU0ZDM0NGE1OWMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTY0NDQsNiArNjQ0NCw3IEBAIENyZWF0ZUNoZWNr UG9pbnQoaW50IGZsYWdzKQogCVZpcnR1YWxUcmFuc2FjdGlvbklkICp2eGlkczsKIAlpbnQJ CQludnhpZHM7CiAJaW50CQkJb2xkWExvZ0FsbG93ZWQgPSAwOworCWJvb2wJCWludmFsaWRh dGVkID0gZmFsc2U7CiAKIAkvKgogCSAqIEFuIGVuZC1vZi1yZWNvdmVyeSBjaGVja3BvaW50 IGlzIHJlYWxseSBhIHNodXRkb3duIGNoZWNrcG9pbnQsIGp1c3QKQEAgLTY4MDQsNyArNjgw NSw4IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqLwogCVhMQnl0ZVRvU2Vn KFJlZG9SZWNQdHIsIF9sb2dTZWdObywgd2FsX3NlZ21lbnRfc2l6ZSk7CiAJS2VlcExvZ1Nl ZyhyZWNwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYg KGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52 YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4Myw2ICs3MDg1 LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVjUHRyCWVuZHB0 cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1lOworCWJvb2wJ CWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNrcG9pbnQvcmVz dGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVy IHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI0OCw3ICs3MjUx LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIgPSBHZXRY TG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwg cmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRw dHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVMTCk7CisJaWYgKGludmFs aWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzk2MSw2ICs3OTY1LDIyIEBA IHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRlIG91ciBj b3B5IG9mIHRoZSBwYXJhbWV0ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5KCZ4bHJl YywgWExvZ1JlY0dldERhdGEocmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9jaGFuZ2Up KTsKIAorCQkvKgorCQkgKiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2UgYXJlIGlu IGhvdCBzdGFuZGJ5IGFuZCB0aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZlIGEgV0FM IGxldmVsIHN1ZmZpY2llbnQgZm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQgdG8gc2Vh cmNoCisJCSAqIGZvciBwb3RlbnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkgc2xvdHMg aWYgc3RhbmRieSBpcyBydW5uaW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2VyIHRoYW4g bG9naWNhbCwgYmVjYXVzZSBpbiB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhhdmUgZWl0 aGVyIGRpc2FsbG93ZWQgY3JlYXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZhbGlkYXRl ZCBleGlzdGluZworCQkgKiBvbmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3ZlcnkgJiYgSW5I b3RTdGFuZGJ5ICYmCisJCQl4bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCAm JgorCQkJd2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQl7CisJCQlUcmFuc2Fj dGlvbklkIENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJSW52 YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwgTlVM TCwgSW52YWxpZE9pZCwgJkNvbmZsaWN0SG9yaXpvbik7CisJCX0KKwogCQlMV0xvY2tBY3F1 aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1h eENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29ubmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5t YXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVjLm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDg2MDhlM2ZhNWIuLmEyNzJi ZDRhODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk5Nyw3 ICs5OTcsOCBAQCBDUkVBVEUgVklFVyBwZ19yZXBsaWNhdGlvbl9zbG90cyBBUwogICAgICAg ICAgICAgTC5jb25maXJtZWRfZmx1c2hfbHNuLAogICAgICAgICAgICAgTC53YWxfc3RhdHVz LAogICAgICAgICAgICAgTC5zYWZlX3dhbF9zaXplLAotICAgICAgICAgICAgTC50d29fcGhh c2UKKyAgICAgICAgICAgIEwudHdvX3BoYXNlLAorICAgICAgICAgICAgTC5jb25mbGljdGlu ZwogICAgIEZST00gcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgQVMgTAogICAgICAgICAg ICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04gKEwuZGF0b2lkID0gRC5vaWQpOwogCkBA IC0xMDY1LDcgKzEwNjYsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0cyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9p ZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGlu LAotICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9j ayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAor ICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQp IEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsK IAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0 MWEyYi4uMDcwZmQzNzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29u ZmlybSwgYm9vbCBiaW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBp biBDcmVhdGVEZWNvZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9s c24gaXMgdmFsaWQuICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRo aXMKLQkJICogZXJybXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91 cyBhYm91dCBubyBjaGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFy dF9sc24gaXMgdmFsaWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlk LiBBdm9pZAorCQkgKiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91 dCBubyBjaGFuZ2VzIGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVy ZXBvcnQoRVJST1IsCkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJv b2wgYmluCiAJCQkJCQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlz IHNsb3QgaGFzIG5ldmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVl biBpbnZhbGlkYXRlZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJ bnZhbGlkKE15UmVwbGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CQkgZXJybXNnKCJjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIiLAorCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5n IHdpdGggcmVjb3ZlcnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5 Li4zOGM2ZjE4ODg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1 LDEwIEBAIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGJvb2wgYWxyZWFk eV9sb2NrZWQpCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCQllZmZlY3RpdmVf eG1pbiA9IHMtPmVmZmVjdGl2ZV94bWluOwogCQllZmZlY3RpdmVfY2F0YWxvZ194bWluID0g cy0+ZWZmZWN0aXZlX2NhdGFsb2dfeG1pbjsKLQkJaW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQ dHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKLQkJCQkJICAgWExvZ1Jl Y1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJCWludmFsaWRhdGVkID0g KCghWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLmludmFsaWRhdGVkX2F0KSAmJgorCQkJ CQkJWExvZ1JlY1B0cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSkKKwkJCQkJICAg fHwgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnhtaW4pICYmCisJCQkJCQkgICAh VHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSk7CiAJCVNwaW5M b2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQg bm90IGFwcGx5ICovCkBAIC0xMjI0LDIwICsxMjI2LDIxIEBAIFJlcGxpY2F0aW9uU2xvdFJl c2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAotICogYW5k IG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqIEhlbHBl ciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cworICoKKyAqIEFjcXVp cmVzIHRoZSBnaXZlbiBzbG90IGFuZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBh bmQgcG9zc2libGUuCiAgKgogICogUmV0dXJucyB3aGV0aGVyIFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJpbSAoYW5kCiAgKiBpbiB0aGF0 IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQgcmV0dXJuLCBvdGhlcndpc2Ug d2UgYXJlKS4KICAqCi0gKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIHRoZSBzbG90IHdh cyBpbnZhbGlkYXRlZC4gKFVudG91Y2hlZCBvdGhlcndpc2UuKQorICogU2V0cyAqaW52YWxp ZGF0ZWQgdHJ1ZSBpZiBhbiBvYnNvbGV0ZSBzbG90IHdhcyBpbnZhbGlkYXRlZC4gKFVudG91 Y2hlZCBvdGhlcndpc2UuKQogICoKICAqIFRoaXMgaXMgaW5oZXJlbnRseSByYWN5LCBiZWNh dXNlIHdlIHJlbGVhc2UgdGhlIExXTG9jawogICogZm9yIHN5c2NhbGxzLCBzbyBjYWxsZXIg bXVzdCByZXN0YXJ0IGlmIHdlIHJldHVybiB0cnVlLgogICovCiBzdGF0aWMgYm9vbAotSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCi0JCQkJCQkJICAgYm9vbCAqaW52YWxpZGF0ZWQpCitJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChSZXBsaWNhdGlv blNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAorCQkJCQkJCQkJCQkJICAgYm9vbCAq aW52YWxpZGF0ZWQsIFRyYW5zYWN0aW9uSWQgKnhpZCkKIHsKIAlpbnQJCQlsYXN0X3NpZ25h bGVkX3BpZCA9IDA7CiAJYm9vbAkJcmVsZWFzZWRfbG9jayA9IGZhbHNlOwpAQCAtMTI0NSw2 ICsxMjQ4LDkgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9u U2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJZm9yICg7OykKIAl7CiAJCVhMb2dS ZWNQdHIJcmVzdGFydF9sc247CisJCVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFu c2FjdGlvbklkIHNsb3RfY2F0YWxvZ194bWluOworCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwog CQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIApAQCAtMTI2MSwxOCArMTI2NywzMyBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52 YWxpZGF0ZWQuIElmIGl0IG5lZWRzIHRvIGJlCiAJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMg bm90IGN1cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAogCQkgKiBh cyBoYXZpbmcgYmVlbiBpbnZhbGlkYXRlZC4gIFdlIGRvIHRoaXMgd2l0aCB0aGUgc3Bpbmxv Y2sgaGVsZCB0bwotCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUg dGhlIHJlc3RhcnRfbHNuIGNvdWxkIG1vdmUKLQkJICogZm9yd2FyZCwgb3IgdGhlIHNsb3Qg Y291bGQgYmUgZHJvcHBlZC4KKwkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBl eGFtcGxlIHRoZSByZXN0YXJ0X2xzbiAob3IgdGhlCisJCSAqIHhtaW4ocykgY291bGQpIG1v dmUgZm9yd2FyZCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgogCQkgKi8KIAkJU3Bp bkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAKIAkJcmVzdGFydF9sc24gPSBzLT5kYXRhLnJl c3RhcnRfbHNuOworCQlzbG90X3htaW4gPSBzLT5kYXRhLnhtaW47CisJCXNsb3RfY2F0YWxv Z194bWluID0gcy0+ZGF0YS5jYXRhbG9nX3htaW47CisKKwkJLyogc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCAobG9naWNhbCBkZWNvZGluZyBjb25mbGljdCBjYXNlKSAqLworCQlpZiAo KHhpZCAmJgorCQkJICgoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElzSW52YWxpZChzKSkKKwkJ CSAgfHwKIAogCQkvKgotCQkgKiBJZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3Ig aXMgZnJlc2ggZW5vdWdoLCB3ZSBkb24ndCBuZWVkIHRvCi0JCSAqIGRvIGFueXRoaW5nLgor CQkgKiBXZSBhcmUgbm90IGZvcmNpbmcgZm9yIGludmFsaWRhdGlvbiBiZWNhdXNlIHRoZSB4 aWQgaXMgdmFsaWQgYW5kCisJCSAqIHRoaXMgaXMgYSBub24gY29uZmxpY3Rpbmcgc2xvdC4K IAkJICovCi0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8fCByZXN0 YXJ0X2xzbiA+PSBvbGRlc3RMU04pCisJCQkgIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlk KSAmJiAhKAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWlu KSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sICp4aWQpKQor CQkJCQkJCQkJCQkgICB8fAorCQkJCQkJCQkJCQkgICAoVHJhbnNhY3Rpb25JZElzVmFsaWQo c2xvdF9jYXRhbG9nX3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNs b3RfY2F0YWxvZ194bWluLCAqeGlkKSkKKwkJCQkJCQkJCQkJICAgKSkKKwkJCSAgKSkKKwkJ CXx8CisJCS8qIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKG9ic29sZXRlIExTTiBjYXNl KSAqLworCQkJKCF4aWQgJiYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8 IHJlc3RhcnRfbHNuID49IG9sZGVzdExTTikpKQogCQl7CiAJCQlTcGluTG9ja1JlbGVhc2Uo JnMtPm11dGV4KTsKIAkJCWlmIChyZWxlYXNlZF9sb2NrKQpAQCAtMTI5Miw5ICsxMzEzLDE2 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7 CiAJCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRl ZF9hdCA9IHJlc3RhcnRfbHNuOwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwotCisJCQlpZiAoeGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZh bGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwkJCX0KIAkJCS8qIExldCBjYWxsZXIga25vdyAqLwogCQkJ KmludmFsaWRhdGVkID0gdHJ1ZTsKIAkJfQpAQCAtMTMyNywxNSArMTM1NSwzOSBAQCBJbnZh bGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVj UHRyIG9sZGVzdExTTiwKIAkJCSAqLwogCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFj dGl2ZV9waWQpCiAJCQl7Ci0JCQkJZXJlcG9ydChMT0csCi0JCQkJCQllcnJtc2coInRlcm1p bmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs Ci0JCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAotCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2VlZHMgdGhlIGxpbWl0 IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1MocmVzdGFydF9s c24pLAotCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChvbGRlc3RMU04gLSByZXN0 YXJ0X2xzbikpLAotCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2Ug bWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQkJaWYgKHhpZCkKKwkJCQl7CisJCQkJ CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9y dChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNl IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJ CQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwKKwkJ CQkJCQkJCQkgICp4aWQpKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWVy ZXBvcnQoTE9HLAorCQkJCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVj YXVzZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIs CisJCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJ CWVycmRldGFpbCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9s ZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9uIHRoZSBwcmltYXJ5IHNlcnZlciIpKTsK KwkJCQkJfQorCisJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJZXJy bXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xv dCBcIiVzXCIiLAorCQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSks CisJCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4Y2Vl ZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9B UkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5l ZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisKKwkJCQkJKHZv aWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CisJCQkJfQogCi0JCQkJKHZvaWQpIGtp bGwoYWN0aXZlX3BpZCwgU0lHVEVSTSk7CiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3Rp dmVfcGlkOwogCQkJfQogCkBAIC0xMzY5LDEzICsxNDIxLDMzIEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQkJUmVwbGljYXRpb25TbG90U2F2ZSgpOwogCQkJUmVwbGljYXRpb25TbG90UmVs ZWFzZSgpOwogCi0JCQllcmVwb3J0KExPRywKLQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcg b2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAotCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAotCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgv JVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCSAgTFNOX0ZP Uk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKLQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcp IChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAotCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCWlmICh4 aWQpCisJCQl7CisJCQkJcGdzdGF0X2Ryb3BfcmVwbHNsb3Qocyk7CisKKwkJCQlpZiAoVHJh bnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJ CQkJCQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZs aWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRl dGFpbCgiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsICp4aWQp KTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJ ZXJybXNnKCJpbnZhbGlkYXRpbmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25mbGljdHMg d2l0aCByZWNvdmVyeSIsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJkZXRhaWwo IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUg YXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJZXJybXNnKCJpbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJCSAg IE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0 YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJ CQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRfbHNuKSwKKwkJCQkJCQkJICAodW5zaWdu ZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCWVycmhp bnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUu IikpOworCQkJfQogCiAJCQkvKiBkb25lIHdpdGggdGhpcyBzbG90IGZvciBub3cgKi8KIAkJ CWJyZWFrOwpAQCAtMTM4OCwyMCArMTQ2MCw0MCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIH0K IAogLyoKLSAqIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNOIG9sZGVyIHRo YW4gdGhlIGdpdmVuIHNlZ21lbnQKLSAqIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqIEludmFsaWRhdGUgT2Jzb2xldGUgc2xv dHMgb3IgcmVzb2x2ZSByZWNvdmVyeSBjb25mbGljdHMgd2l0aCBsb2dpY2FsIHNsb3RzLgog ICoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGFueSBzbG90IGhhdmUgZ290IGludmFsaWRhdGVk LgorICogT2Jzb2xldGUgY2FzZSAoYWthIHhpZCBpcyBOVUxMKToKICAqCi0gKiBOQiAtIHRo aXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3Jz IGlmIHBvc3NpYmxlLgorICoJIE1hcmsgYW55IHNsb3QgdGhhdCBwb2ludHMgdG8gYW4gTFNO IG9sZGVyIHRoYW4gdGhlIGdpdmVuIHNlZ21lbnQKKyAqCSBhcyBpbnZhbGlkOyBpdCByZXF1 aXJlcyBXQUwgdGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKgkgaW52YWxpZGF0ZWQg aXMgc2V0IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAq CisgKiAgTG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlk IGlzIHZhbGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBv bGRlciB0aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNs b3RzIHRoYXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlz IGludmFsaWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWly ZWQgd2hlbiB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxp Y2EsIHNvIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRh dGVkLgogICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhM b2dTZWdObyBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lk IGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExvZ1JlY1B0cglvbGRlc3RMU047 Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhMb2dTZWdOb09mZnNldFRvUmVj UHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCVhM b2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbCBsb2dpY2Fs X3Nsb3RfaW52YWxpZGF0ZWQgPSBmYWxzZTsKKworCUFzc2VydChtYXhfcmVwbGljYXRpb25f c2xvdHMgPj0gMCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCisJCXJl dHVybjsKKworCWlmICgheGlkKQorCXsKKwkJQXNzZXJ0KGludmFsaWRhdGVkKTsKKwkJKmlu dmFsaWRhdGVkID0gZmFsc2U7CisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNl Z25vLCAwLCB3YWxfc2VnbWVudF9zaXplLCBvbGRlc3RMU04pOworCX0KIAogcmVzdGFydDoK IAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQp OwpAQCAtMTQxMiwyNCArMTUwNCwzNiBAQCByZXN0YXJ0OgogCQlpZiAoIXMtPmluX3VzZSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3Qo cywgb2xkZXN0TFNOLCAmaW52YWxpZGF0ZWQpKQorCQlpZiAoeGlkKQogCQl7Ci0JCQkvKiBp ZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHN0YXJ0IGZyb20gc2NyYXRjaCAqLwotCQkJZ290 byByZXN0YXJ0OworCQkJLyogd2UgYXJlIG9ubHkgZGVhbGluZyB3aXRoICpsb2dpY2FsKiBz bG90IGNvbmZsaWN0cyAqLworCQkJaWYgKCFTbG90SXNMb2dpY2FsKHMpKQorCQkJCWNvbnRp bnVlOworCisJCQkvKgorCQkJICogbm90IHRoZSBkYXRhYmFzZSBvZiBpbnRlcmVzdCBhbmQg d2UgZG9uJ3Qgd2FudCBhbGwgdGhlCisJCQkgKiBkYXRhYmFzZSwgc2tpcAorCQkJICovCisJ CQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBkYm9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxp ZCgqeGlkKSkKKwkJCQljb250aW51ZTsKIAkJfQorCisJCWlmIChJbnZhbGlkYXRlUG9zc2li bHlPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsU2xvdChzLCBvbGRlc3RMU04sIGludmFs aWRhdGVkID8gaW52YWxpZGF0ZWQgOiAmbG9naWNhbF9zbG90X2ludmFsaWRhdGVkLCB4aWQp KQorCQkJCWdvdG8gcmVzdGFydDsKIAl9CisKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrKTsKIAogCS8qCi0JICogSWYgYW55IHNsb3RzIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlIGxpbWl0cy4KKwkgKiBJZiBh bnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUgcmVxdWly ZWQgeG1pbgorCSAqIGFuZCB0aGUgcmVxdWlyZWQgbHNuIChpZiBhcHByb3ByaWF0ZSkuCiAJ ICovCi0JaWYgKGludmFsaWRhdGVkKQorCWlmICgoIXhpZCAmJiAqaW52YWxpZGF0ZWQpIHx8 ICh4aWQgJiYgbG9naWNhbF9zbG90X2ludmFsaWRhdGVkKSkKIAl7CiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKLQkJUmVwbGljYXRpb25TbG90c0Nv bXB1dGVSZXF1aXJlZExTTigpOworCQlpZiAoIXhpZCAmJiAqaW52YWxpZGF0ZWQpCisJCQlS ZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKCk7CiAJfQotCi0JcmV0dXJuIGlu dmFsaWRhdGVkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwpp bmRleCAyZjNjOTY0ODI0Li40NDE5MmJjMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYwpAQCAtMjMyLDcgKzIzMiw3IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQ R19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNf Q09MUyAxNAorI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJl dHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0 aW5mbzsKIAlYTG9nUmVjUHRyCWN1cnJsc247CiAJaW50CQkJc2xvdG5vOwpAQCAtNDA0LDYg KzQwNCwxNyBAQCBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykK IAogCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShzbG90X2NvbnRlbnRzLmRhdGEudHdv X3BoYXNlKTsKIAorCQlpZiAoc2xvdF9jb250ZW50cy5kYXRhLmRhdGFiYXNlID09IEludmFs aWRPaWQpCisJCQludWxsc1tpKytdID0gdHJ1ZTsKKwkJZWxzZQorCQl7CisJCQlpZiAoc2xv dF9jb250ZW50cy5kYXRhLnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQgJiYKKwkJCQlz bG90X2NvbnRlbnRzLmRhdGEuY2F0YWxvZ194bWluID09IEludmFsaWRUcmFuc2FjdGlvbklk KQorCQkJCXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJZWxzZQorCQkJ CXZhbHVlc1tpKytdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJfQorCiAJCUFzc2VydChp ID09IFBHX0dFVF9SRVBMSUNBVElPTl9TTE9UU19DT0xTKTsKIAogCQl0dXBsZXN0b3JlX3B1 dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA0ZWQzNzQ3ZTNmLi44ODg1Y2RlZWJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMTI1Myw2ICsxMjUzLDE0 IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkK IAogCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CiAKKwlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnhtaW4p CisJCSAmJiAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEu Y2F0YWxvZ194bWluKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJ Y21kLT5zbG90bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGlu dmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3ZlcnkuIikp KTsKKwogCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRh LnJlc3RhcnRfbHNuKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwppbmRleCAzOTViMmNmNjkwLi5jODVjYjVjYzE4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkgQEAgcHJv Y3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1Np Z25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsK IAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDk0Y2M4NjBmNWYu LmVjODE3MzgxYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM1LDYg KzM1LDcgQEAKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vc2xvdC5oIgogCiAvKiBVc2VyLXNldHRhYmxlIEdVQyBwYXJhbWV0ZXJz ICovCiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xlYW51cF9hZ2U7CkBAIC00NzUsNiArNDc2LDcg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5z YWN0aW9uSWQgKndhaXRsaXN0LAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAor CQkJCQkJCQkJYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBs b2NhdG9yKQogewogCVZpcnR1YWxUcmFuc2FjdGlvbklkICpiYWNrZW5kczsKQEAgLTUwMCw2 ICs1MDIsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkJCSAgIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9S RUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKKworCWlm ICh3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX0xPR0lDQUwgJiYgaXNDYXRhbG9nUmVsKQorCQlJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBO VUxMLCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAv KgpAQCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQK IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlz Q2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewog CS8qCkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJ VHJhbnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxU cmFuc2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlp c0NhdGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2 ICsxNDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNv biByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoK IAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwog CQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VDoKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlv biBzbG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCA1ZDQzOWYyNzEwLi5iMmE3NWI2ZDcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0y NDgxLDYgKzI0ODEsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWls KCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhh dCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2lu ZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sg d2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJl Y292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVx dWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVx dWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNl IHRoZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJ CSAqIHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2Fj dGlvbgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJl Y292ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3Rh bmRieSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2lu ZyBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28g YnJlYWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAm JgorCQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCAmJgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGlj YXRpb25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1 ZTsKKwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYg d2UgYXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXgg NmU2NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVw b3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJw aW4rKzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJl YWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NL OgogCQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7 CkBAIC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9F bnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VO VChjb25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGlj dF9sb2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJ UEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9B Q0NVTV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKaW5kZXggNjczNzQ5MzQwMi4uYWZkNjJkM2NjMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRf R0VUX0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0 X3JvbGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2sp CiAKKy8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdf c3RhdF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5 LDYgKzExMDEsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05f QVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFj ZSArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5 LT5jb25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2lj YWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJ CSAgZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGMwZjJhOGE3N2MuLmM4ZTExYWI3MTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9z bmFwc2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf bG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdy JywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9z cmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQg PT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3Rz IGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ ICdzJywKQEAgLTEwOTQ2LDkgKzEwOTUxLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3Jl cGxpY2F0aW9uX3Nsb3RzJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZics CiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9 PiAncmVjb3JkJywKICAgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVzID0+ ICd7bmFtZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBn X2xzbix0ZXh0LGludDgsYm9vbH0nLAotICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3Nsb3RfbmFtZSxwbHVn aW4sc2xvdF90eXBlLGRhdG9pZCx0ZW1wb3JhcnksYWN0aXZlLGFjdGl2ZV9waWQseG1pbixj YXRhbG9nX3htaW4scmVzdGFydF9sc24sY29uZmlybWVkX2ZsdXNoX2xzbix3YWxfc3RhdHVz LHNhZmVfd2FsX3NpemUsdHdvX3BoYXNlfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7bmFt ZSxuYW1lLHRleHQsb2lkLGJvb2wsYm9vbCxpbnQ0LHhpZCx4aWQscGdfbHNuLHBnX2xzbix0 ZXh0LGludDgsYm9vbCxib29sfScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4s Y2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1 cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZSxjb25mbGljdGluZ30nLAogICBwcm9zcmMgPT4g J3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycgfSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3Ig PT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcsCiAgIHByb25hbWUgPT4g J3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QnLCBwcm92b2xhdGlsZSA9PiAn dicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bn c3RhdC5oCmluZGV4IDVlMzMyNmEzYjkuLjg3MmViMzU3NTcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0yOTEsNiAr MjkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0Nv dW50ZXIgY29uZmxpY3RfdGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9s b2NrOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9Db3Vu dGVyIGNvbmZsaWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2J1 ZmZlcnBpbjsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9zdGFydHVwX2RlYWRsb2NrOwog CVBnU3RhdF9Db3VudGVyIHRlbXBfZmlsZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5k ZXggODg3MmM4MGNkZi4uMjM2ZWJjZGJkYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApA QCAtMTcsNiArMTcsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAKKyNkZWZpbmUgTG9naWNhbFJlcGxpY2F0 aW9uU2xvdElzSW52YWxpZChzKSAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEueG1p bikgJiYgXAorCQkJCQkJCQkJCQkgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0 YWxvZ194bWluKSkKIC8qCiAgKiBCZWhhdmlvdXIgb2YgcmVwbGljYXRpb24gc2xvdHMsIHVw b24gcmVsZWFzZSBvciBjcmFzaC4KICAqCkBAIC0yMTUsNyArMjE3LDcgQEAgZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTih2b2lkKTsKIGV4dGVybiBY TG9nUmVjUHRyIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlTG9naWNhbFJlc3RhcnRMU04odm9p ZCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3RzQ291bnREQlNsb3RzKE9pZCBkYm9p ZCwgaW50ICpuc2xvdHMsIGludCAqbmFjdGl2ZSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RzRHJvcERCU2xvdHMoT2lkIGRib2lkKTsKLWV4dGVybiBib29sIEludmFsaWRhdGVP YnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNlZ25vKTsKK2V4dGVy biB2b2lkIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9s ZGVzdFNlZ25vLCBib29sICppbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklk ICp4aWQpOwogZXh0ZXJuIFJlcGxpY2F0aW9uU2xvdCAqU2VhcmNoTmFtZWRSZXBsaWNhdGlv blNsb3QoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBuZWVkX2xvY2spOwogZXh0ZXJuIGludAlS ZXBsaWNhdGlvblNsb3RJbmRleChSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogZXh0ZXJuIGJv b2wgUmVwbGljYXRpb25TbG90TmFtZShpbnQgaW5kZXgsIE5hbWUgbmFtZSk7CkBAIC0yMjcs NSArMjI5LDYgQEAgZXh0ZXJuIHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9p ZCk7CiAKIGV4dGVybiB2b2lkIENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIGV4dGVy biB2b2lkIENoZWNrU2xvdFBlcm1pc3Npb25zKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIGNoYXIgKnJlYXNvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggOTA1YWYyMjMxYi4uMmY1MjEwMGIw MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qs CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CmluZGV4IDJlZmZkZWExMjYuLjQxZjRkYzM3MmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CkBAIC0zMCw4ICszMCwxMCBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlv bkVudmlyb25tZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5z YWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCisJCQkJCQkJCQkJCQlib29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCVJl bEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJCSAgIGJvb2wgaXNDYXRhbG9nUmVsLAogCQkJ CQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpOwogZXh0ZXJuIHZvaWQgUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGU3YTJmNTg1NmEuLjExZWEy MDYzMzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xNDcyLDgg KzE0NzIsOSBAQCBwZ19yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIGwuc2xvdF9uYW1lLAog ICAgIGwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICBsLndhbF9zdGF0dXMsCiAgICAgbC5z YWZlX3dhbF9zaXplLAotICAgIGwudHdvX3BoYXNlCi0gICBGUk9NIChwZ19nZXRfcmVwbGlj YXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9pZCwg dGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVz dGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3Np emUsIHR3b19waGFzZSkKKyAgICBsLnR3b19waGFzZSwKKyAgICBsLmNvbmZsaWN0aW5nCisg ICBGUk9NIChwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2lu LCBzbG90X3R5cGUsIGRhdG9pZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHht aW4sIGNhdGFsb2dfeG1pbiwgcmVzdGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdh bF9zdGF0dXMsIHNhZmVfd2FsX3NpemUsIHR3b19waGFzZSwgY29uZmxpY3RpbmcpCiAgICAg IExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgobC5kYXRvaWQgPSBkLm9pZCkpKTsKIHBn X3JvbGVzfCBTRUxFQ1QgcGdfYXV0aGlkLnJvbG5hbWUsCiAgICAgcGdfYXV0aGlkLnJvbHN1 cGVyLApAQCAtMTg2OCw3ICsxODY5LDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8 IFNFTEVDVCBvaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9j ayhvaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25h cHNob3Qob2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25m bGljdF9idWZmZXJwaW4ob2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9n ZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2RlYWRsb2Nr CisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFT IGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxz bG90KG9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFi YXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfYXV0aCBBUyBn c3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMzQuMQoK --------------THi5Y8bjmBCtK99UQVRf6NPV Content-Type: text/plain; charset=UTF-8; name="v49-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v49-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNWQyMDhhOTQxMzE1NTI4NTE5MTdlMDIxMDYyYWYxMzM0Y2YxNWU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCA3IEZlYiAyMDIzIDA4OjU1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2NDkgMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KTUlNRS1WZXJzaW9uOiAxLjAKQ29u dGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDhiaXQKCk92ZXJhbGwgZGVzaWduOgoKMS4gV2Ugd2FudCB0byBlbmFibGUg bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5cywgYnV0IHJlcGxheSBvZiBXQUwKZnJvbSB0 aGUgcHJpbWFyeSBtaWdodCByZW1vdmUgZGF0YSB0aGF0IGlzIG5lZWRlZCBieSBsb2dpY2Fs IGRlY29kaW5nLApjYXVzaW5nIGVycm9yKHMpIG9uIHRoZSBzdGFuZGJ5LiBUbyBwcmV2ZW50 IHRob3NlIGVycm9ycywgYSBuZXcgcmVwbGljYXRpb24KY29uZmxpY3Qgc2NlbmFyaW8gbmVl ZHMgdG8gYmUgYWRkcmVzc2VkIChhcyBtdWNoIGFzIGhvdCBzdGFuZGJ5IGRvZXMpLgoKMi4g T3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIHRoaXMgdHlwZSBvZiByZXBs aWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNhbCBzbG90cyBmb3Igd2hpY2gg bmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRvIGRvIHRoaXMgd2UgbmVlZCB0 aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2UsIGp1c3QgYXMgd2UKZG8gZm9y IHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0IHdlIGFsc28gbmVlZCB0byBr bm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdhcyB0byBkYXRhIHRoYXQgbG9n aWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuIFRoYXQgd2F5LCBkdXJpbmcgV0FMIHJl cGxheSwgd2Uga25vdyB3aGVuIHRoZXJlIGlzIGEgcmlzayBvZgpjb25mbGljdCBhbmQsIGlm IHNvLCBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LgoKNC4gV2UgY2FuJ3QgcmVseSBvbiB0aGUg c3RhbmRieSdzIHJlbGNhY2hlIGVudHJpZXMgZm9yIHRoaXMgcHVycG9zZSBpbgphbnkgd2F5 LCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuJ3QgYWNjZXNzIGNhdGFsb2cgY29u dGVudHMuCgo1LiBUaGVyZWZvcmUgZXZlcnkgV0FMIHJlY29yZCB0aGF0IHBvdGVudGlhbGx5 IHJlbW92ZXMgZGF0YSBmcm9tIHRoZQppbmRleCBvciBoZWFwIG11c3QgY2FycnkgYSBmbGFn IGluZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgb25lCnRoYXQgbWlnaHQgYmUgYWNj ZXNzZWQgZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcuCgpXaHkgZG8gd2UgbmVlZCB0aGlzIGZv ciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnk/CgpGaXJzdCwgbGV0J3MgZm9yZ2V0IGFi b3V0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBhbmQgcmVjYWxsIHRoYXQKb24gYSBw cmltYXJ5IGRhdGFiYXNlLCBhbnkgY2F0YWxvZyByb3dzIHRoYXQgbWF5IGJlIG5lZWRlZCBi eSBhIGxvZ2ljYWwKZGVjb2RpbmcgcmVwbGljYXRpb24gc2xvdCBhcmUgbm90IHJlbW92ZWQu CgpUaGlzIGlzIGRvbmUgdGhhbmtzIHRvIHRoZSBjYXRhbG9nX3htaW4gYXNzb2NpYXRlZCB3 aXRoIHRoZSBsb2dpY2FsCnJlcGxpY2F0aW9uIHNsb3QuCgpCdXQsIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5LCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgoKLSBob3Rfc3Rh bmRieV9mZWVkYmFjayBpcyBvZmYKLSBob3Rfc3RhbmRieV9mZWVkYmFjayBpcyBvbiBidXQg dGhlcmUgaXMgbm8gYSBwaHlzaWNhbCBzbG90IGJldHdlZW4KICB0aGUgcHJpbWFyeSBhbmQg dGhlIHN0YW5kYnkuIFRoZW4sIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHdpbGwgd29yaywKICBi dXQgb25seSB3aGlsZSB0aGUgY29ubmVjdGlvbiBpcyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBu b2RlIHJlc3RhcnQKICB3b3VsZCBicmVhayBpdCkKClRoZW4sIHRoZSBwcmltYXJ5IG1heSBk ZWxldGUgc3lzdGVtIGNhdGFsb2cgcm93cyB0aGF0IGNvdWxkIGJlIG5lZWRlZApieSB0aGUg bG9naWNhbCBkZWNvZGluZyBvbiB0aGUgc3RhbmRieSAoYXMgaXQgZG9lcyBub3Qga25vdyBh Ym91dCB0aGUKY2F0YWxvZ194bWluIG9uIHRoZSBzdGFuZGJ5KS4KClNvLCBpdOKAmXMgbWFu ZGF0b3J5IHRvIGlkZW50aWZ5IHRob3NlIHJvd3MgYW5kIGludmFsaWRhdGUgdGhlIHNsb3Rz CnRoYXQgbWF5IG5lZWQgdGhlbSBpZiBhbnkuIElkZW50aWZ5aW5nIHRob3NlIHJvd3MgaXMg dGhlIHB1cnBvc2Ugb2YKdGhpcyBjb21taXQuCgpJbXBsZW1lbnRhdGlvbjoKCldoZW4gYSBX QUwgcmVwbGF5IG9uIHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1 cGxlIGlzCnRvIGJlIGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEg bG9naWNhbCBzbG90J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3Qn cyBjYXRhbG9nX3htaW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8g aGFuZGxlIHRoZSBjb25mbGljdC4gV2hpbGUgc3Vic2VxdWVudCBjb21taXRzCndpbGwgZG8g dGhlIGFjdHVhbCBjb25mbGljdCBoYW5kbGluZywgdGhpcyBjb21taXQgYWRkcyBhIG5ldyBm aWVsZAppc0NhdGFsb2dSZWwgaW4gc3VjaCBXQUwgcmVjb3JkcyAoYW5kIGEgbmV3IGJpdCBz ZXQgaW4gdGhlCnhsX2hlYXBfdmlzaWJsZSBmbGFncyBmaWVsZCksIHRoYXQgaXMgdHJ1ZSBm b3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvCmFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRs aW5nLgoKVGhlIGFmZmVjdGVkIFdBTCByZWNvcmRzIGFyZSB0aGUgb25lcyB0aGF0IGFscmVh ZHkgY29udGFpbiB0aGUKc25hcHNob3RDb25mbGljdEhvcml6b24gZmllbGQsIG5hbWVseToK Ci0gZ2lzdHhsb2dEZWxldGUKLSBnaXN0eGxvZ1BhZ2VSZXVzZQotIHhsX2hhc2hfdmFjdXVt X29uZV9wYWdlCi0geGxfaGVhcF9wcnVuZQotIHhsX2hlYXBfZnJlZXplX3BhZ2UKLSB4bF9o ZWFwX3Zpc2libGUKLSB4bF9idHJlZV9yZXVzZV9wYWdlCi0geGxfYnRyZWVfZGVsZXRlCi0g c3BneGxvZ1ZhY3V1bVJlZGlyZWN0CgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcgYWRk ZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBub3cg Y29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJSQVlf TUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50LgpJ dCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9nUmVs IGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbywgTWVsYW5pZSBQbGFnZW1hbgotLS0KIGNvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICB8ICAxNSArLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dXRpbC5jICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICB8ICAxNyArKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgfCAgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jICAgICAgfCAgOTEgKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICAgICB8IDExMSArKysrKysrKysrKy0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyAgICAgIHwgIDUw ICsrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICAgIHwgICA2 ICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyB8ICAgNSAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgICAgIHwgIDEzICsrLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oICAgICAgICAgICAgIHwgICA4ICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgICAgfCAgMTAgKy0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCAgICAgICAgICAgICAgICB8ICAzNyArKysrLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAgICAgfCAgIDggKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgICAgfCAgMTAgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAgICAgICAgICAgfCAgIDQgKy0KIDM1IGZp bGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCAyMDMgZGVsZXRpb25zKC0pCiAgIDMu MyUgY29udHJpYi9hbWNoZWNrLwogICA0LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0Lwog ICA0LjElIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogIDU5LjAlIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvCiAgIDMuNyUgc3JjL2JhY2tlbmQvYWNjZXNzLwogIDIyLjAlIHNyYy9p bmNsdWRlL2FjY2Vzcy8KCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25i dHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCAyNTdjZmY2 NzFiLi5lYjI4MGQ0ODkzIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25i dHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTE4Myw2 ICsxODMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW52YXJpYW50X2xfbm9udGFyZ2V0X29m ZnNldChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLAogCQkJCQkJCQkJCQkJT2Zmc2V0TnVtYmVy IHVwcGVyYm91bmQpOwogc3RhdGljIFBhZ2UgcGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVj a1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2tudW0pOwogc3RhdGljIGlubGluZSBC VFNjYW5JbnNlcnQgYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwKKwkJ CQkJCQkJCQkJCQlSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkJCQkJCUluZGV4VHVwbGUg aXR1cCk7CiBzdGF0aWMgSXRlbUlkIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrLAogCQkJCQkJCQkgICBQYWdlIHBhZ2Us IE9mZnNldE51bWJlciBvZmZzZXQpOwpAQCAtMzMxLDcgKzMzMiw3IEBAIGJ0X2luZGV4X2No ZWNrX2ludGVybmFsKE9pZCBpbmRyZWxpZCwgYm9vbCBwYXJlbnRjaGVjaywgYm9vbCBoZWFw YWxsaW5kZXhlZCwKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKSkp OwogCiAJCS8qIEV4dHJhY3QgbWV0YWRhdGEgZnJvbSBtZXRhcGFnZSwgYW5kIHNhbml0aXpl IGl0IGluIHBhc3NpbmcgKi8KLQkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlz cGFjZSwgJmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCBoZWFw cmVsLCAmaGVhcGtleXNwYWNlLCAmYWxsZXF1YWxpbWFnZSk7CiAJCWlmIChhbGxlcXVhbGlt YWdlICYmICFoZWFwa2V5c3BhY2UpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCkBAIC0xMjU4LDcgKzEyNTksNyBAQCBidF90 YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlKQogCQl9CiAKIAkJLyog QnVpbGQgaW5zZXJ0aW9uIHNjYW5rZXkgZm9yIGN1cnJlbnQgcGFnZSBvZmZzZXQgKi8KLQkJ c2tleSA9IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwKTsKKwkJ c2tleSA9IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBzdGF0ZS0+aGVh cHJlbCwgaXR1cCk7CiAKIAkJLyoKIAkJICogTWFrZSBzdXJlIHR1cGxlIHNpemUgZG9lcyBu b3QgZXhjZWVkIHRoZSByZWxldmFudCBCVFJFRV9WRVJTSU9OCkBAIC0xNzY4LDcgKzE3Njks NyBAQCBidF9yaWdodF9wYWdlX2NoZWNrX3NjYW5rZXkoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSkKIAkgKiBtZW1vcnkgcmVtYWluaW5nIGFsbG9jYXRlZC4KIAkgKi8KIAlmaXJzdGl0dXAg PSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocmlnaHRwYWdlLCByaWdodGl0ZW0pOwotCXJl dHVybiBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgZmlyc3RpdHVwKTsK KwlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIHN0YXRlLT5o ZWFwcmVsLCBmaXJzdGl0dXApOwogfQogCiAvKgpAQCAtMjY4MSw3ICsyNjgyLDcgQEAgYnRf cm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQog CUJ1ZmZlcgkJbGJ1ZjsKIAlib29sCQlleGlzdHM7CiAKLQlrZXkgPSBfYnRfbWtzY2Fua2V5 KHN0YXRlLT5yZWwsIGl0dXApOworCWtleSA9IF9idF9ta3NjYW5rZXkoc3RhdGUtPnJlbCwg c3RhdGUtPmhlYXByZWwsIGl0dXApOwogCUFzc2VydChrZXktPmhlYXBrZXlzcGFjZSAmJiBr ZXktPnNjYW50aWQgIT0gTlVMTCk7CiAKIAkvKgpAQCAtMjY5NCw3ICsyNjk1LDcgQEAgYnRf cm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQog CSAqLwogCUFzc2VydChzdGF0ZS0+cmVhZG9ubHkgJiYgc3RhdGUtPnJvb3RkZXNjZW5kKTsK IAlleGlzdHMgPSBmYWxzZTsKLQlzdGFjayA9IF9idF9zZWFyY2goc3RhdGUtPnJlbCwga2V5 LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7CisJc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5y ZWwsIHN0YXRlLT5oZWFwcmVsLCBrZXksICZsYnVmLCBCVF9SRUFELCBOVUxMKTsKIAogCWlm IChCdWZmZXJJc1ZhbGlkKGxidWYpKQogCXsKQEAgLTMxMzMsMTEgKzMxMzQsMTEgQEAgcGFs bG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxv Y2tudW0pCiAgKiB0aGUgc2NhbmtleSBpcyBncmVhdGVyLgogICovCiBzdGF0aWMgaW5saW5l IEJUU2Nhbkluc2VydAotYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBpdHVwKQorYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogewogCUJUU2Nhbkluc2Vy dCBza2V5OwogCi0Jc2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVwKTsKKwlza2V5ID0g X2J0X21rc2NhbmtleShyZWwsIGhlYXByZWwsIGl0dXApOwogCXNrZXktPnBpdm90c2VhcmNo ID0gdHJ1ZTsKIAogCXJldHVybiBza2V5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4 IGJhMzk0ZjA4ZjYuLjNhYzY4ZWMzYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAg LTM0OCw3ICszNDgsNyBAQCBnaXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZy ZWVzcGFjZSwgR0lTVFNUQVRFICpnaXN0c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0 ci0+bmV4dCkKIAkJewogCQkJLyogQWxsb2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVm ZmVyID0gZ2lzdE5ld0J1ZmZlcihyZWwpOworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVm ZmVyKHJlbCwgaGVhcFJlbCk7CiAJCQlHSVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlz X2xlYWYpID8gRl9MRUFGIDogMCk7CiAJCQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0 ci0+YnVmZmVyKTsKIAkJCXB0ci0+YmxvY2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJl cihwdHItPmJ1ZmZlcik7CkBAIC0xNjk0LDcgKzE2OTQsOCBAQCBnaXN0cHJ1bmVwYWdlKFJl bGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCdWZmZXIgYnVmZmVyLCBSZWxhdGlvbiBoZWFwUmVs KQogCiAJCQlyZWNwdHIgPSBnaXN0WExvZ0RlbGV0ZShidWZmZXIsCiAJCQkJCQkJCQlkZWxl dGFibGUsIG5kZWxldGFibGUsCi0JCQkJCQkJCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7 CisJCQkJCQkJCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWhlYXBSZWwp OwogCiAJCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7CiAJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2E2ZDkzYmI4Ny4uMWYwNDQ4NDBkNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTI5OCw3ICsyOTgsNyBAQCBnaXN0 YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCQlQYWdlCQlwYWdlOwogCiAJCS8qIGluaXRpYWxpemUgdGhlIHJvb3QgcGFnZSAq LwotCQlidWZmZXIgPSBnaXN0TmV3QnVmZmVyKGluZGV4KTsKKwkJYnVmZmVyID0gZ2lzdE5l d0J1ZmZlcihpbmRleCwgaGVhcCk7CiAJCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpID09IEdJU1RfUk9PVF9CTEtOTyk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IGI0ZDg0M2Ew ZmYuLmE2MDc0NjRiOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAt ODIxLDcgKzgyMSw3IEBAIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm KQogICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIHBhZ2Ug YnkgY2FsbGluZyBHSVNUSW5pdEJ1ZmZlcgogICovCiBCdWZmZXIKLWdpc3ROZXdCdWZmZXIo UmVsYXRpb24gcikKK2dpc3ROZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJl bCkKIHsKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlib29sCQluZWVkTG9jazsKQEAgLTg2NSw3ICs4 NjUsNyBAQCBnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCiAJCQkJICogcGFnZSdzIGRlbGV0 ZVhpZC4KIAkJCQkgKi8KIAkJCQlpZiAoWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkgJiYgUmVs YXRpb25OZWVkc1dBTChyKSkKLQkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UociwgYmxrbm8sIEdp c3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKKwkJCQkJZ2lzdFhMb2dQYWdlUmV1c2Uociwg aGVhcHJlbCwgYmxrbm8sIEdpc3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKIAogCQkJCXJl dHVybiBidWZmZXI7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRl eCBmNjU4NjQyNTRhLi5iNzY3OGYzYzE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4 bG9nLmMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBnaXN0UmVkb0RlbGV0ZVJlY29yZChYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAlnaXN0eGxvZ0RlbGV0ZSAqeGxkYXRhID0gKGdpc3R4bG9n RGVsZXRlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJQnVmZmVyCQlidWZmZXI7CiAJ UGFnZQkJcGFnZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVsZXRlID0geGxkYXRhLT5vZmZzZXRz OwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBjb25mbGljdCBwcm9jZXNzaW5nIHRvIGRv LCBpdCBtdXN0IGhhcHBlbiBiZWZvcmUgd2UKQEAgLTIwMywxNCArMjA0LDcgQEAgZ2lzdFJl ZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJewogCQlwYWdlID0g KFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAotCQlpZiAoWExvZ1JlY0dldERhdGFM ZW4ocmVjb3JkKSA+IFNpemVPZkdpc3R4bG9nRGVsZXRlKQotCQl7Ci0JCQlPZmZzZXROdW1i ZXIgKnRvZGVsZXRlOwotCi0JCQl0b2RlbGV0ZSA9IChPZmZzZXROdW1iZXIgKikgKChjaGFy ICopIHhsZGF0YSArIFNpemVPZkdpc3R4bG9nRGVsZXRlKTsKLQotCQkJUGFnZUluZGV4TXVs dGlEZWxldGUocGFnZSwgdG9kZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRlKTsKLQkJfQorCQlQ YWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB0b0RlbGV0ZSwgeGxkYXRhLT5udG9kZWxldGUp OwogCiAJCUdpc3RDbGVhclBhZ2VIYXNHYXJiYWdlKHBhZ2UpOwogCQlHaXN0TWFya1R1cGxl c0RlbGV0ZWQocGFnZSk7CkBAIC01OTcsNyArNTkxLDggQEAgZ2lzdFhMb2dBc3NpZ25MU04o dm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVsZXRlZCBw YWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpCitnaXN0WExvZ1Bh Z2VSZXVzZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJICBCbG9ja051 bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQogewogCWdpc3R4bG9n UGFnZVJldXNlIHhscmVjX3JldXNlOwogCkBAIC02MDgsNiArNjAzLDcgQEAgZ2lzdFhMb2dQ YWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0 aW9uSWQgZGVsZXRlWGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3Jl dXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoaGVhcHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsK IAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uID0gZGVsZXRlWGlkOwpAQCAtNjcyLDExICs2NjgsMTIgQEAgZ2lzdFhM b2dVcGRhdGUoQnVmZmVyIGJ1ZmZlciwKICAqLwogWExvZ1JlY1B0cgogZ2lzdFhMb2dEZWxl dGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50IG50b2RlbGV0 ZSwKLQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pCisJCQkg ICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCBSZWxhdGlvbiBoZWFw cmVsKQogewogCWdpc3R4bG9nRGVsZXRlIHhscmVjOwogCVhMb2dSZWNQdHIJcmVjcHRyOwog CisJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxE ZWNvZGluZyhoZWFwcmVsKTsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXhscmVjLm50b2RlbGV0ZSA9IG50b2RlbGV0ZTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwppbmRleCBmMzhiNDJlZmI5Li4w OGNlYjkxMjg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYwpAQCAtOTgw LDggKzk4MCwxMCBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCVBhZ2UJCXBhZ2U7CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwogCUhh c2hQYWdlT3BhcXVlIHBhZ2VvcGFxdWU7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZTsKIAog CXhsZGF0YSA9ICh4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSAqKSBYTG9nUmVjR2V0RGF0YShy ZWNvcmQpOworCXRvRGVsZXRlID0geGxkYXRhLT5vZmZzZXRzOwogCiAJLyoKIAkgKiBJZiB3 ZSBoYXZlIGFueSBjb25mbGljdCBwcm9jZXNzaW5nIHRvIGRvLCBpdCBtdXN0IGhhcHBlbiBi ZWZvcmUgd2UKQEAgLTEwMTAsMTUgKzEwMTIsNyBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9w YWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9IChQYWdlKSBCdWZm ZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRhTGVuKHJlY29yZCkg PiBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSkKLQkJewotCQkJT2Zmc2V0TnVtYmVyICp1bnVz ZWQ7Ci0KLQkJCXVudXNlZCA9IChPZmZzZXROdW1iZXIgKikgKChjaGFyICopIHhsZGF0YSAr IFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlKTsKLQotCQkJUGFnZUluZGV4TXVsdGlEZWxldGUo cGFnZSwgdW51c2VkLCB4bGRhdGEtPm50dXBsZXMpOwotCQl9Ci0KKwkJUGFnZUluZGV4TXVs dGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnR1cGxlcyk7CiAJCS8qCiAJCSAq IE1hcmsgdGhlIHBhZ2UgYXMgbm90IGNvbnRhaW5pbmcgYW55IExQX0RFQUQgaXRlbXMuIFNl ZSBjb21tZW50cyBpbgogCQkgKiBfaGFzaF92YWN1dW1fb25lX3BhZ2UoKSBmb3IgZGV0YWls cy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCBhNjA0ZTMxODkx Li4yMjY1NmIyNGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCkBA IC00MzIsNiArNDMyLDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJlbCwg UmVsYXRpb24gaHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9oYXNo X3ZhY3V1bV9vbmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJCQl4 bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhyZWwpOwogCQkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbjsKIAkJCXhscmVjLm50dXBsZXMgPSBuZGVsZXRhYmxlOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDdlYjc5Y2VlNTguLjA0ZTliYzVlYjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC02NjY3LDYgKzY2NjcsNyBAQCBo ZWFwX2ZyZWV6ZV9leGVjdXRlX3ByZXBhcmVkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZmZl ciwKIAkJbnBsYW5zID0gaGVhcF9sb2dfZnJlZXplX3BsYW4odHVwbGVzLCBudHVwbGVzLCBw bGFucywgb2Zmc2V0cyk7CiAKIAkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKKwkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRp b25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCQl4bHJlYy5ucGxhbnMg PSBucGxhbnM7CiAKIAkJWExvZ0JlZ2luSW5zZXJ0KCk7CkBAIC04MjM3LDcgKzgyMzgsNyBA QCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUp CiAgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KICAqLwogWExvZ1JlY1B0cgotbG9n X2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVm ZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKIAkJCQkgVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdWludDggdm1mbGFncykKIHsKIAl4bF9o ZWFwX3Zpc2libGUgeGxyZWM7CkBAIC04MjQ5LDYgKzgyNTAsOCBAQCBsb2dfaGVhcF92aXNp YmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZl ciB2bV9idWZmZXIsCiAKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKKwlpZiAoUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQorCQl4bHJlYy5mbGFn cyB8PSBWSVNJQklMSVRZTUFQX0lTX0NBVEFMT0dfUkVMOwogCVhMb2dCZWdpbkluc2VydCgp OwogCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJs ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4 IGM0YjE5MTZkMzYuLjM5MmM2ZTY1OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwpAQCAtNzIwLDkgKzcyMCwxNCBAQCBoZWFwYW1fcmVsYXRpb25f Y29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAog CQkJCQkJCQkgKm11bHRpX2N1dG9mZik7CiAKIAotCS8qIFNldCB1cCBzb3J0aW5nIGlmIHdh bnRlZCAqLworCS8qCisJICogU2V0IHVwIHNvcnRpbmcgaWYgd2FudGVkLiBOZXdIZWFwIGlz IGJlaW5nIHBhc3NlZCB0bworCSAqIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKCksIGl0IGNv dWxkIGhhdmUgYmVlbiBPbGRIZWFwIHRvby4gSXQgZG9lcyBub3QKKwkgKiByZWFsbHkgbWF0 dGVyLCBhcyB0aGUgZ29hbCBpcyB0byBoYXZlIGEgaGVhcCByZWxhdGlvbiBiZWluZyBwYXNz ZWQgdG8KKwkgKiBfYnRfbG9nX3JldXNlX3BhZ2UoKSAod2hpY2ggc2hvdWxkIG5vdCBiZSBj YWxsZWQgZnJvbSB0aGlzIGNvZGUgcGF0aCkuCisJICovCiAJaWYgKHVzZV9zb3J0KQotCQl0 dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihvbGRUdXBEZXNjLCBPbGRJbmRl eCwKKwkJdHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIob2xkVHVwRGVzYywg T2xkSW5kZXgsIE5ld0hlYXAsCiAJCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLAog CQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA0ZTY1Y2JjYWRmLi4zZjAzNDIzNTFmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDE4LDYgKzQxOCw3IEBAIGhl YXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCXhs X2hlYXBfcHJ1bmUgeGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMu aXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWxhdGlvbik7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHByc3RhdGUu c25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3Rh dGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGYxNGNmODVmMy4uYWU2Mjhk NzQ3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjcxMCw2 ICsyNzEwLDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5z dHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gdmFjcmVs LT5yZWw7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24u CkBAIC0yNzU5LDYgKzI3NjAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9u IGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5i c3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICog VXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA3NGZmMDFiYjE3Li5kMWJhODU5ODUxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODgsOCAr Mjg4LDcgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBo ZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJl Y3B0cikpCiAJCQl7CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBs b2dfaGVhcF92aXNpYmxlKHJlbC0+cmRfbG9jYXRvciwgaGVhcEJ1Ziwgdm1CdWYsCi0JCQkJ CQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CisJCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlz aWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkv KgogCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hp bnRzPW9uKSwgd2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCmluZGV4 IGY0YzFhOTc0ZWYuLjhjNmU4NjdjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRpbnNlcnQuYwpAQCAtMzAsNyArMzAsOCBAQAogI2RlZmluZSBCVFJFRV9GQVNUUEFUSF9N SU5fTEVWRUwJMgogCiAKLXN0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CitzdGF0aWMgQlRTdGFjayBf YnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJ CQkJCSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKIHN0YXRpYyBUcmFuc2FjdGlvbklk IF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0 YXRlLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVu aXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MSw4ICs0Miw5 IEBAIHN0YXRpYyBPZmZzZXROdW1iZXIgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBib29sIGluZGV4VW5jaGFuZ2VkLAogCQkJCQkJCQkJICBCVFN0YWNr IHN0YWNrLAogCQkJCQkJCQkJICBSZWxhdGlvbiBoZWFwUmVsKTsKLXN0YXRpYyB2b2lkIF9i dF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBC VFN0YWNrIHN0YWNrKTsKLXN0YXRpYyB2b2lkIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJl bCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkgIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZvaWQgX2J0X2luc2VydG9u cGcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9r ZXksCiAJCQkJCQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCiAJCQkJ CQkgICBCVFN0YWNrIHN0YWNrLApAQCAtNTEsMTMgKzUzLDEzIEBAIHN0YXRpYyB2b2lkIF9i dF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAogCQkJ CQkJICAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsCiAJCQkJCQkgICBpbnQgcG9zdGluZ29m ZiwKIAkJCQkJCSAgIGJvb2wgc3BsaXRfb25seV9wYWdlKTsKLXN0YXRpYyBCdWZmZXIgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LAotCQkJCQkJQnVmZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5l d2l0ZW1zeiwKLQkJCQkJCUluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3 aXRlbSwKK3N0YXRpYyBCdWZmZXIgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAorCQkJCQkJQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLAorCQkJCQkJU2l6ZSBuZXdpdGVt c3osIEluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwKIAkJCQkJ CUluZGV4VHVwbGUgbnBvc3RpbmcsIHVpbnQxNiBwb3N0aW5nb2ZmKTsKLXN0YXRpYyB2b2lk IF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgQnVmZmVyIHJi dWYsCi0JCQkJCQkJICBCVFN0YWNrIHN0YWNrLCBib29sIGlzcm9vdCwgYm9vbCBpc29ubHkp Owotc3RhdGljIEJ1ZmZlciBfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVm LCBCdWZmZXIgcmJ1Zik7CitzdGF0aWMgdm9pZCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJICBCdWZmZXIg cmJ1ZiwgQlRTdGFjayBzdGFjaywgYm9vbCBpc3Jvb3QsIGJvb2wgaXNvbmx5KTsKK3N0YXRp YyBCdWZmZXIgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpOwogc3RhdGljIGlubGluZSBib29sIF9idF9wZ2Fk ZHR1cChQYWdlIHBhZ2UsIFNpemUgaXRlbXNpemUsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJ CQkJT2Zmc2V0TnVtYmVyIGl0dXBfb2ZmLCBib29sIG5ld2ZpcnN0ZGF0YWl0ZW0pOwogc3Rh dGljIHZvaWQgX2J0X2RlbGV0ZV9vcl9kZWR1cF9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXBSZWwsCkBAIC0xMDgsNyArMTEwLDcgQEAgX2J0X2RvaW5zZXJ0KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLAogCWJvb2wJCWNoZWNraW5ndW5pcXVlID0gKGNo ZWNrVW5pcXVlICE9IFVOSVFVRV9DSEVDS19OTyk7CiAKIAkvKiB3ZSBuZWVkIGFuIGluc2Vy dGlvbiBzY2FuIGtleSB0byBkbyBvdXIgc2VhcmNoLCBzbyBidWlsZCBvbmUgKi8KLQlpdHVw X2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVwKTsKKwlpdHVwX2tleSA9IF9idF9ta3Nj YW5rZXkocmVsLCBoZWFwUmVsLCBpdHVwKTsKIAogCWlmIChjaGVja2luZ3VuaXF1ZSkKIAl7 CkBAIC0xNjIsNyArMTY0LDcgQEAgc2VhcmNoOgogCSAqIHNlYXJjaGluZyBmcm9tIHRoZSBy b290IHBhZ2UuICBpbnNlcnRzdGF0ZS5idWYgd2lsbCBob2xkIGEgYnVmZmVyIHRoYXQKIAkg KiBpcyBsb2NrZWQgaW4gZXhjbHVzaXZlIG1vZGUgYWZ0ZXJ3YXJkcy4KIAkgKi8KLQlzdGFj ayA9IF9idF9zZWFyY2hfaW5zZXJ0KHJlbCwgJmluc2VydHN0YXRlKTsKKwlzdGFjayA9IF9i dF9zZWFyY2hfaW5zZXJ0KHJlbCwgaGVhcFJlbCwgJmluc2VydHN0YXRlKTsKIAogCS8qCiAJ ICogY2hlY2tpbmd1bmlxdWUgaW5zZXJ0cyBhcmUgbm90IGFsbG93ZWQgdG8gZ28gYWhlYWQg d2hlbiB0d28gdHVwbGVzIHdpdGgKQEAgLTI1NSw4ICsyNTcsOCBAQCBzZWFyY2g6CiAJCSAq LwogCQluZXdpdGVtb2ZmID0gX2J0X2ZpbmRpbnNlcnRsb2MocmVsLCAmaW5zZXJ0c3RhdGUs IGNoZWNraW5ndW5pcXVlLAogCQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBo ZWFwUmVsKTsKLQkJX2J0X2luc2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUu YnVmLCBJbnZhbGlkQnVmZmVyLCBzdGFjaywKLQkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUu aXRlbXN6LCBuZXdpdGVtb2ZmLAorCQlfYnRfaW5zZXJ0b25wZyhyZWwsIGhlYXBSZWwsIGl0 dXBfa2V5LCBpbnNlcnRzdGF0ZS5idWYsIEludmFsaWRCdWZmZXIsCisJCQkJCSAgIHN0YWNr LCBpdHVwLCBpbnNlcnRzdGF0ZS5pdGVtc3osIG5ld2l0ZW1vZmYsCiAJCQkJCSAgIGluc2Vy dHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMzEyLDcgKzMxNCw3 IEBAIHNlYXJjaDoKICAqIHNpbmNlIGVhY2ggcGVyLWJhY2tlbmQgY2FjaGUgd29uJ3Qgc3Rh eSB2YWxpZCBmb3IgbG9uZy4KICAqLwogc3RhdGljIEJUU3RhY2sKLV9idF9zZWFyY2hfaW5z ZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSkKK19idF9zZWFy Y2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0 ZSBpbnNlcnRzdGF0ZSkKIHsKIAlBc3NlcnQoaW5zZXJ0c3RhdGUtPmJ1ZiA9PSBJbnZhbGlk QnVmZmVyKTsKIAlBc3NlcnQoIWluc2VydHN0YXRlLT5ib3VuZHNfdmFsaWQpOwpAQCAtMzc1 LDggKzM3Nyw4IEBAIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRT dGF0ZSBpbnNlcnRzdGF0ZSkKIAl9CiAKIAkvKiBDYW5ub3QgdXNlIG9wdGltaXphdGlvbiAt LSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFjayAqLwotCXJldHVy biBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAmaW5zZXJ0c3RhdGUt PmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJcmV0dXJuIF9idF9zZWFyY2gocmVs LCBoZWFwcmVsLCBpbnNlcnRzdGF0ZS0+aXR1cF9rZXksICZpbnNlcnRzdGF0ZS0+YnVmLAor CQkJCQkgIEJUX1dSSVRFLCBOVUxMKTsKIH0KIAogLyoKQEAgLTg4NSw3ICs4ODcsNyBAQCBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCV9idF9jb21wYXJlKHJlbCwg aXR1cF9rZXksIHBhZ2UsIFBfSElLRVkpIDw9IDApCiAJCQkJCWJyZWFrOwogCi0JCQkJX2J0 X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQkJX2J0X3N0ZXByaWdo dChyZWwsIGhlYXBSZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CiAJCQkJLyogVXBkYXRlIGxv Y2FsIHN0YXRlIGFmdGVyIHN0ZXBwaW5nIHJpZ2h0ICovCiAJCQkJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoaW5zZXJ0c3RhdGUtPmJ1Zik7CiAJCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVl KHBhZ2UpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9u IHJlbCwKIAkJCQlwZ19wcm5nX3VpbnQzMigmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpIDw9IChQ R19VSU5UMzJfTUFYIC8gMTAwKSkKIAkJCQlicmVhazsKIAotCQkJX2J0X3N0ZXByaWdodChy ZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CisJCQlfYnRfc3RlcHJpZ2h0KHJlbCwgaGVhcFJl bCwgaW5zZXJ0c3RhdGUsIHN0YWNrKTsKIAkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBhZnRl ciBzdGVwcGluZyByaWdodCAqLwogCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaW5zZXJ0c3Rh dGUtPmJ1Zik7CiAJCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC0xMDIy LDcgKzEwMjQsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAgKiBpbmRl eGVzLgogICovCiBzdGF0aWMgdm9pZAotX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJU SW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCitfYnRfc3RlcHJpZ2h0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgQlRTdGFjayBzdGFjaykKIHsKIAlQYWdlCQlwYWdlOwogCUJUUGFnZU9wYXF1ZSBv cGFxdWU7CkBAIC0xMDQ4LDcgKzEwNTAsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJl bCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKIAkJICovCiAJ CWlmIChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKIAkJewotCQkJX2J0X2ZpbmlzaF9z cGxpdChyZWwsIHJidWYsIHN0YWNrKTsKKwkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBoZWFw cmVsLCByYnVmLCBzdGFjayk7CiAJCQlyYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAkJCWNvbnRp bnVlOwogCQl9CkBAIC0xMDk5LDYgKzExMDEsNyBAQCBfYnRfc3RlcHJpZ2h0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgQlRTdGFjayBzdGFjaykKICAqLwog c3RhdGljIHZvaWQKIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKKwkJCSAgIFJlbGF0 aW9uIGhlYXByZWwsCiAJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkgICBCdWZm ZXIgYnVmLAogCQkJICAgQnVmZmVyIGNidWYsCkBAIC0xMjA5LDggKzEyMTIsOCBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCUFzc2VydCghc3BsaXRfb25seV9wYWdlKTsK IAogCQkvKiBzcGxpdCB0aGUgYnVmZmVyIGludG8gbGVmdCBhbmQgcmlnaHQgaGFsdmVzICov Ci0JCXJidWYgPSBfYnRfc3BsaXQocmVsLCBpdHVwX2tleSwgYnVmLCBjYnVmLCBuZXdpdGVt b2ZmLCBpdGVtc3osIGl0dXAsCi0JCQkJCQkgb3JpZ2l0dXAsIG5wb3N0aW5nLCBwb3N0aW5n b2ZmKTsKKwkJcmJ1ZiA9IF9idF9zcGxpdChyZWwsIGhlYXByZWwsIGl0dXBfa2V5LCBidWYs IGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwKKwkJCQkJCSBpdHVwLCBvcmlnaXR1cCwgbnBv c3RpbmcsIHBvc3RpbmdvZmYpOwogCQlQcmVkaWNhdGVMb2NrUGFnZVNwbGl0KHJlbCwKIAkJ CQkJCQkgICBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpLAogCQkJCQkJCSAgIEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpKTsKQEAgLTEyMzMsNyArMTIzNiw3IEBAIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwKIAkJICogcGFnZS4KIAkJICotLS0tLS0tLS0tCiAJCSAqLwot CQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwgc3RhY2ssIGlzcm9vdCwgaXNv bmx5KTsKKwkJX2J0X2luc2VydF9wYXJlbnQocmVsLCBoZWFwcmVsLCBidWYsIHJidWYsIHN0 YWNrLCBpc3Jvb3QsIGlzb25seSk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMjU0LDcgKzEyNTcs NyBAQCBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCQlBc3NlcnQoIWlzbGVhZik7 CiAJCQlBc3NlcnQoQnVmZmVySXNWYWxpZChjYnVmKSk7CiAKLQkJCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKKwkJCW1ldGFidWYgPSBf YnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dSSVRFKTsKIAkJ CW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCQltZXRhZCA9IEJUUGFnZUdl dE1ldGEobWV0YXBnKTsKIApAQCAtMTQxOCw3ICsxNDIxLDcgQEAgX2J0X2luc2VydG9ucGco UmVsYXRpb24gcmVsLAogCQkgKiBjYWxsIF9idF9nZXRyb290aGVpZ2h0IHdoaWxlIGhvbGRp bmcgYSBidWZmZXIgbG9jay4KIAkJICovCiAJCWlmIChCbG9ja051bWJlcklzVmFsaWQoYmxv Y2tjYWNoZSkgJiYKLQkJCV9idF9nZXRyb290aGVpZ2h0KHJlbCkgPj0gQlRSRUVfRkFTVFBB VEhfTUlOX0xFVkVMKQorCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsLCBoZWFwcmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCiAJCQlSZWxhdGlvblNldFRhcmdldEJsb2NrKHJl bCwgYmxvY2tjYWNoZSk7CiAJfQogCkBAIC0xNDU5LDggKzE0NjIsOCBAQCBfYnRfaW5zZXJ0 b25wZyhSZWxhdGlvbiByZWwsCiAgKgkJVGhlIHBpbiBhbmQgbG9jayBvbiBidWYgYXJlIG1h aW50YWluZWQuCiAgKi8KIHN0YXRpYyBCdWZmZXIKLV9idF9zcGxpdChSZWxhdGlvbiByZWws IEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCi0JCSAg T2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6LCBJbmRleFR1cGxlIG5l d2l0ZW0sCitfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCisJCSAgQnVmZmVyIGNidWYsIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5ld2l0ZW1zeiwgSW5kZXhUdXBsZSBuZXdpdGVt LAogCQkgIEluZGV4VHVwbGUgb3JpZ25ld2l0ZW0sIEluZGV4VHVwbGUgbnBvc3RpbmcsIHVp bnQxNiBwb3N0aW5nb2ZmKQogewogCUJ1ZmZlcgkJcmJ1ZjsKQEAgLTE3MTIsNyArMTcxNSw3 IEBAIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVm ZmVyIGJ1ZiwgQnVmZmVyIGNidWYsCiAJICogd2F5IGJlY2F1c2UgaXQgYXZvaWRzIGFuIHVu bmVjZXNzYXJ5IFBBTklDIHdoZW4gZWl0aGVyIG9yaWdwYWdlIG9yIGl0cwogCSAqIGV4aXN0 aW5nIHNpYmxpbmcgcGFnZSBhcmUgY29ycnVwdC4KIAkgKi8KLQlyYnVmID0gX2J0X2dldGJ1 ZihyZWwsIFBfTkVXLCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFw cmVsLCBQX05FVywgQlRfV1JJVEUpOwogCXJpZ2h0cGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1 Zik7CiAJcmlnaHRwYWdlbnVtYmVyID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1Zik7CiAJ LyogcmlnaHRwYWdlIHdhcyBpbml0aWFsaXplZCBieSBfYnRfZ2V0YnVmICovCkBAIC0xODg1 LDcgKzE4ODgsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1 cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqLwogCWlmICghaXNyaWdodG1v c3QpCiAJewotCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIG9vcGFxdWUtPmJ0cG9fbmV4dCwg QlRfV1JJVEUpOworCQlzYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIG9vcGFxdWUt PmJ0cG9fbmV4dCwgQlRfV1JJVEUpOwogCQlzcGFnZSA9IEJ1ZmZlckdldFBhZ2Uoc2J1Zik7 CiAJCXNvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUoc3BhZ2UpOwogCQlpZiAoc29wYXF1ZS0+ YnRwb19wcmV2ICE9IG9yaWdwYWdlbnVtYmVyKQpAQCAtMjA5Miw2ICsyMDk1LDcgQEAgX2J0 X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVm LCBCdWZmZXIgY2J1ZiwKICAqLwogc3RhdGljIHZvaWQKIF9idF9pbnNlcnRfcGFyZW50KFJl bGF0aW9uIHJlbCwKKwkJCQkgIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJICBCdWZmZXIgYnVm LAogCQkJCSAgQnVmZmVyIHJidWYsCiAJCQkJICBCVFN0YWNrIHN0YWNrLApAQCAtMjExOCw3 ICsyMTIyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3NlcnQo c3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBuZXcg cm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBfYnRf bmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChyZWws IGhlYXByZWwsIGJ1ZiwgcmJ1Zik7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZlcnMg Ki8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwgcmJ1 Zik7CkBAIC0yMTU3LDcgKzIxNjEsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiBy ZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9jayhy ZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0IGxl dmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+YnRw b19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBvaW50 KHJlbCwgaGVhcHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsCisJCQkJCQkJ CQlOVUxMKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5nIHRo ZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25vID0g QnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODgsNyBAQCBfYnRf aW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxsIGJl IGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBwYXJl bnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2tidWYo cmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgaGVh cHJlbCwgc3RhY2ssIGJrbnVtKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0IGNo aWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwNyw3ICsy MjEyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGJrbnVtLCByYmtudW0pKSk7CiAKIAkJLyog UmVjdXJzaXZlbHkgaW5zZXJ0IGludG8gdGhlIHBhcmVudCAqLwotCQlfYnRfaW5zZXJ0b25w ZyhyZWwsIE5VTEwsIHBidWYsIGJ1Ziwgc3RhY2stPmJ0c19wYXJlbnQsCisJCV9idF9pbnNl cnRvbnBnKHJlbCwgaGVhcHJlbCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVu dCwKIAkJCQkJICAgbmV3X2l0ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVt KSksCiAJCQkJCSAgIHN0YWNrLT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKIApAQCAt MjIyNyw3ICsyMjMyLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogICog YW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRfZmluaXNoX3NwbGl0KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2sp CiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCUJUUGFnZU9wYXF1 ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsKQEAgLTIyNDAsNyArMjI0NSw3 IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFj ayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElUKGxwYWdlb3ApKTsKIAogCS8q IExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5nIHRoZSBkb3dubGluayAqLwot CXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRwb19uZXh0LCBCVF9XUklURSk7 CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBscGFnZW9wLT5idHBvX25leHQs IEJUX1dSSVRFKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2UocmJ1Zik7CiAJcnBhZ2VvcCA9 IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIsNyArMjI1Nyw3IEBAIF9idF9m aW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykK IAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJU UkVFX01FVEFQQUdFLCBCVF9XUklURSk7CiAJCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0yMjY5LDcg KzIyNzQsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYs IEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5pc2hpbmcgaW5jb21wbGV0ZSBz cGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051bWJlcihsYnVmKSwgQnVmZmVy R2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVm LCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJX2J0X2luc2VydF9wYXJlbnQo cmVsLCBoZWFwcmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CiB9 CiAKIC8qCkBAIC0yMzA0LDcgKzIzMDksNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAgKgkJb2Zmc2V0IG51bWJlciBi dHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24g cmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKK19idF9nZXRzdGFja2J1 ZihSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkKQogewogCUJsb2NrTnVtYmVyIGJsa25vOwogCU9mZnNldE51bWJlciBz dGFydDsKQEAgLTIzMTgsMTMgKzIzMjMsMTMgQEAgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9u IHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQpCiAJCVBhZ2UJCXBhZ2U7 CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJs a25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBibGtu bywgQlRfV1JJVEUpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBfSU5DT01QTEVURV9TUExJVChv cGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgYnVmLCBzdGFjay0+YnRz X3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVhcHJlbCwgYnVmLCBzdGFj ay0+YnRzX3BhcmVudCk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0yNDI4LDcgKzI0MzMs NyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9j a051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9vdGJ1Zi4KICAqLwogc3RhdGlj IEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQnVmZmVy IHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZikKIHsKIAlCdWZmZXIJCXJvb3RidWY7CiAJUGFnZQkJ bHBhZ2UsCkBAIC0yNDU0LDEyICsyNDU5LDEyIEBAIF9idF9uZXdyb290KFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFxdWUgPSBCVFBhZ2VHZXRPcGFx dWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFnZSAqLwotCXJvb3RidWYgPSBf YnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwlyb290YnVmID0gX2J0X2dldGJ1 ZihyZWwsIGhlYXByZWwsIFBfTkVXLCBCVF9XUklURSk7CiAJcm9vdHBhZ2UgPSBCdWZmZXJH ZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZmZXJHZXRCbG9ja051bWJlcihy b290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQltZXRh YnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJ VEUpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBh Z2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK aW5kZXggM2ZlZWUyOGQxOS4uMTUxYWQzN2E1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKQEAgLTM4LDI1ICszOCwyNCBAQAogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCIKIAogc3RhdGljIEJUTWV0YVBhZ2VEYXRhICpfYnRfZ2V0bWV0YShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBtZXRhYnVmKTsKLXN0YXRpYyB2b2lkIF9idF9sb2dfcmV1c2VfcGFnZShS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorc3RhdGljIHZvaWQgX2J0X2xvZ19y ZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7Ci1zdGF0aWMg dm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKK3N0 YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5k ZWxldGFibGUsCiAJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVw ZGF0YWJsZSk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBv c3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1i ZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9v bCBuZWVkc3dhbCk7Ci1zdGF0aWMgYm9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOwor c3RhdGljIGJvb2wgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsCisJCQkJCQkJCSAgIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KTsKIHN0YXRpYyBib29sIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWws IEJ1ZmZlciBsZWFmYnVmLAogCQkJCQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJ CQkJCQkJCSBib29sICpyaWdodHNpYl9lbXB0eSwKIAkJCQkJCQkJCSBCVFZhY1N0YXRlICp2 c3RhdGUpOwotc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBjaGlsZCwKLQkJCQkJCQkJCUJUU3RhY2sgc3RhY2ssCi0JCQkJ CQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKnBv ZmZzZXQsCitzdGF0aWMgYm9vbCBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkJCQlCbG9ja051bWJlciBjaGlsZCwgQlRT dGFjayBzdGFjaywKKwkJCQkJCQkJCUJ1ZmZlciAqc3VidHJlZXBhcmVudCwgT2Zmc2V0TnVt YmVyICpwb2Zmc2V0LAogCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVudCwKIAkJCQkJ CQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYik7CiBzdGF0aWMgdm9pZCBfYnRf cGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJnZXQs CkBAIC0xNzgsNyArMTc3LDcgQEAgX2J0X2dldG1ldGEoUmVsYXRpb24gcmVsLCBCdWZmZXIg bWV0YWJ1ZikKICAqIGluZGV4IHR1cGxlcyBuZWVkZWQgdG8gYmUgZGVsZXRlZC4KICAqLwog Ym9vbAotX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKK19idF92YWN1 dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQltZXRhYnVmOwogCVBhZ2UJCW1ldGFwZzsKQEAgLTE5MSw3ICsxOTAsNyBAQCBf YnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQogCSAqCiAJICogTm90ZSB0 aGF0IHdlIGRlbGliZXJhdGVseSBhdm9pZCB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBtZXRh cGFnZSBoZXJlLgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVU QVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwg QlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0 YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAJYnRtX3ZlcnNpb24g PSBtZXRhZC0+YnRtX3ZlcnNpb247CkBAIC0yMzEsNyArMjMwLDcgQEAgX2J0X3ZhY3V1bV9u ZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKICAqIGZpbmFsaXplZC4KICAqLwogdm9pZAot X2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVs cGFnZXMpCitfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJUGFnZQkJbWV0YXBnOwpAQCAtMjU1LDcgKzI1NCw3IEBAIF9idF9zZXRfY2xlYW51cF9p bmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogCSAqIG5vIGxv bmdlciB1c2VkIGFzIG9mIFBvc3RncmVTUUwgMTQuICBXZSBzZXQgaXQgdG8gLTEuMCBvbiBy ZXdyaXRlLCBqdXN0CiAJICogdG8gYmUgY29uc2lzdGVudC4KIAkgKi8KLQltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAlt ZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0zNDAsNyArMzM5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAgKgkJVGhlIG1ldGFk YXRhIHBhZ2UgaXMgbm90IGxvY2tlZCBvciBwaW5uZWQgb24gZXhpdC4KICAqLwogQnVmZmVy Ci1fYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCitfYnRfZ2V0cm9vdChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGludCBhY2Nlc3MpCiB7CiAJQnVmZmVy CQltZXRhYnVmOwogCUJ1ZmZlcgkJcm9vdGJ1ZjsKQEAgLTM3MCw3ICszNjksNyBAQCBfYnRf Z2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCUFzc2VydChyb290Ymxrbm8g IT0gUF9OT05FKTsKIAkJcm9vdGxldmVsID0gbWV0YWQtPmJ0bV9mYXN0bGV2ZWw7CiAKLQkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCByb290Ymxrbm8sIEJUX1JFQUQpOworCQlyb290 YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CiAJ CXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShyb290cGFnZSk7CiAKQEAgLTM5Niw3ICszOTUsNyBAQCBfYnRfZ2V0 cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJCXJlbC0+cmRfYW1jYWNoZSA9IE5V TEw7CiAJfQogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9N RVRBUEFHRSwgQlRfUkVBRCk7CiAJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYp OwogCiAJLyogaWYgbm8gcm9vdCBwYWdlIGluaXRpYWxpemVkIHlldCwgZG8gaXQgKi8KQEAg LTQyOSw3ICs0MjgsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3Mp CiAJCQkgKiB0byBvcHRpbWl6ZSB0aGlzIGNhc2UuKQogCQkJICovCiAJCQlfYnRfcmVsYnVm KHJlbCwgbWV0YWJ1Zik7Ci0JCQlyZXR1cm4gX2J0X2dldHJvb3QocmVsLCBhY2Nlc3MpOwor CQkJcmV0dXJuIF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgYWNjZXNzKTsKIAkJfQogCiAJ CS8qCkBAIC00MzcsNyArNDM2LDcgQEAgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQg YWNjZXNzKQogCQkgKiB0aGUgbmV3IHJvb3QgcGFnZS4gIFNpbmNlIHRoaXMgaXMgdGhlIGZp cnN0IHBhZ2UgaW4gdGhlIHRyZWUsIGl0J3MKIAkJICogYSBsZWFmIGFzIHdlbGwgYXMgdGhl IHJvb3QuCiAJCSAqLwotCQlyb290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9X UklURSk7CisJCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgUF9ORVcsIEJU X1dSSVRFKTsKIAkJcm9vdGJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocm9vdGJ1Zik7 CiAJCXJvb3RwYWdlID0gQnVmZmVyR2V0UGFnZShyb290YnVmKTsKIAkJcm9vdG9wYXF1ZSA9 IEJUUGFnZUdldE9wYXF1ZShyb290cGFnZSk7CkBAIC01NzQsNyArNTczLDcgQEAgX2J0X2dl dHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogICogbW92aW5nIHRvIHRoZSByb290 IC0tLSB0aGF0J2QgZGVhZGxvY2sgYWdhaW5zdCBhbnkgY29uY3VycmVudCByb290IHNwbGl0 LikKICAqLwogQnVmZmVyCi1fYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQorX2J0X2dl dHRydWVyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CW1ldGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtNTk2LDcgKzU5NSw3IEBAIF9idF9nZXR0 cnVlcm9vdChSZWxhdGlvbiByZWwpCiAJCXBmcmVlKHJlbC0+cmRfYW1jYWNoZSk7CiAJcmVs LT5yZF9hbWNhY2hlID0gTlVMTDsKIAotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRS RUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVh cHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBh Z2UobWV0YWJ1Zik7CiAJbWV0YW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShtZXRhcGcpOwog CW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwpAQCAtNjY5LDcgKzY2OCw3IEBAIF9i dF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCiAgKgkJYWJvdXQgdXBkYXRpbmcgcHJldmlv dXNseSBjYWNoZWQgZGF0YS4KICAqLwogaW50Ci1fYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlv biByZWwpCitfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC02NzcsNyArNjc2LDcgQEAg X2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKQogCXsKIAkJQnVmZmVyCQltZXRhYnVm OwogCi0JCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JF QUQpOworCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQ QUdFLCBCVF9SRUFEKTsKIAkJbWV0YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwog CiAJCS8qCkBAIC03MzMsNyArNzMyLDcgQEAgX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24g cmVsKQogICoJCXBnX3VwZ3JhZGUnZCBmcm9tIFBvc3RncmVzIDEyLgogICovCiB2b2lkCi1f YnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wg KmFsbGVxdWFsaW1hZ2UpCitfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2UpCiB7 CiAJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCkBAIC03NDEsNyArNzQwLDcgQEAgX2J0X21l dGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29sICphbGxl cXVhbGltYWdlKQogCXsKIAkJQnVmZmVyCQltZXRhYnVmOwogCi0JCW1ldGFidWYgPSBfYnRf Z2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAkJbWV0 YWQgPSBfYnRfZ2V0bWV0YShyZWwsIG1ldGFidWYpOwogCiAJCS8qCkBAIC04MjUsNyArODI0 LDggQEAgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpCiAgKiBMb2cg dGhlIHJldXNlIG9mIGEgcGFnZSBmcm9tIHRoZSBGU00uCiAgKi8KIHN0YXRpYyB2b2lkCi1f YnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVs bFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKK19idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorCQkJCSAgIEZ1bGxU cmFuc2FjdGlvbklkIHNhZmV4aWQpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19y ZXVzZTsKIApAQCAtODM2LDYgKzgzNiw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQog CSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9 IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxy ZWNfcmV1c2UubG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9j ayA9IGJsa25vOwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc2Fm ZXhpZDsKQEAgLTg2OCw3ICs4NjksNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKICAq CQlhcyBfYnRfbG9ja2J1ZigpLgogICovCiBCdWZmZXIKLV9idF9nZXRidWYoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcykKK19idF9nZXRidWYoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vz cykKIHsKIAlCdWZmZXIJCWJ1ZjsKIApAQCAtOTQzLDcgKzk0NCw3IEBAIF9idF9nZXRidWYo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcykKIAkJCQkJICog dGhhbiBzYWZleGlkIHZhbHVlCiAJCQkJCSAqLwogCQkJCQlpZiAoWExvZ1N0YW5kYnlJbmZv QWN0aXZlKCkgJiYgUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQkJCQkJX2J0X2xvZ19yZXVz ZV9wYWdlKHJlbCwgYmxrbm8sCisJCQkJCQlfYnRfbG9nX3JldXNlX3BhZ2UocmVsLCBoZWFw cmVsLCBibGtubywKIAkJCQkJCQkJCQkgICBCVFBhZ2VHZXREZWxldGVYaWQocGFnZSkpOwog CiAJCQkJCS8qIE9rYXkgdG8gdXNlIHBhZ2UuICBSZS1pbml0aWFsaXplIGFuZCByZXR1cm4g aXQuICovCkBAIC0xMjkzLDcgKzEyOTQsNyBAQCBfYnRfZGVsaXRlbXNfdmFjdXVtKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIGNsZWFyIHBhZ2UncyBWQUNVVU0gY3ljbGUgSUQu CiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKK19idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCdWZmZXIgYnVmLAogCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxl dGFibGUsCiAJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJs ZSkKQEAgLTEzNTgsNiArMTM1OSw3IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVs ZXRlIHhscmVjX2RlbGV0ZTsKIAorCQl4bHJlY19kZWxldGUuaXNDYXRhbG9nUmVsID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAkJeGxyZWNf ZGVsZXRlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6 b247CiAJCXhscmVjX2RlbGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2Rl bGV0ZS5udXBkYXRlZCA9IG51cGRhdGFibGU7CkBAIC0xNjg0LDggKzE2ODYsOCBAQCBfYnRf ZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRp b24gaGVhcFJlbCwKIAl9CiAKIAkvKiBQaHlzaWNhbGx5IGRlbGV0ZSB0dXBsZXMgKG9yIFRJ RHMpIHVzaW5nIGRlbGV0YWJsZSAob3IgdXBkYXRhYmxlKSAqLwotCV9idF9kZWxpdGVtc19k ZWxldGUocmVsLCBidWYsIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJZGVsZXRh YmxlLCBuZGVsZXRhYmxlLCB1cGRhdGFibGUsIG51cGRhdGFibGUpOworCV9idF9kZWxpdGVt c19kZWxldGUocmVsLCBoZWFwUmVsLCBidWYsIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCBk ZWxldGFibGUsCisJCQkJCQluZGVsZXRhYmxlLCB1cGRhdGFibGUsIG51cGRhdGFibGUpOwog CiAJLyogYmUgdGlkeSAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVwZGF0YWJsZTsgaSsr KQpAQCAtMTcwNiw3ICsxNzA4LDggQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZV9jaGVjayhSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAgKiBzYW1lIGxldmVs IG11c3QgYWx3YXlzIGJlIGxvY2tlZCBsZWZ0IHRvIHJpZ2h0IHRvIGF2b2lkIGRlYWRsb2Nr cy4KICAqLwogc3RhdGljIGJvb2wKLV9idF9sZWZ0c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGxlZnRzaWIsIEJsb2NrTnVtYmVyIHRhcmdldCkKK19idF9sZWZ0 c2liX3NwbGl0ZmxhZyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVt YmVyIGxlZnRzaWIsCisJCQkJCSAgQmxvY2tOdW1iZXIgdGFyZ2V0KQogewogCUJ1ZmZlcgkJ YnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzE3LDcgKzE3MjAsNyBAQCBfYnRfbGVmdHNpYl9z cGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJl ciB0YXJnZXQpCiAJaWYgKGxlZnRzaWIgPT0gUF9OT05FKQogCQlyZXR1cm4gZmFsc2U7CiAK LQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfUkVBRCk7CisJYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxlZnRzaWIsIEJUX1JFQUQpOwogCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBA IC0xNzYzLDcgKzE3NjYsNyBAQCBfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCiAgKiB0by1iZS1k ZWxldGVkIHN1YnRyZWUuKQogICovCiBzdGF0aWMgYm9vbAotX2J0X3JpZ2h0c2liX2hhbGZk ZWFkZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGxlYWZyaWdodHNpYikKK19idF9y aWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC bG9ja051bWJlciBsZWFmcmlnaHRzaWIpCiB7CiAJQnVmZmVyCQlidWY7CiAJUGFnZQkJcGFn ZTsKQEAgLTE3NzIsNyArMTc3NSw3IEBAIF9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIpCiAKIAlBc3NlcnQobGVhZnJp Z2h0c2liICE9IFBfTk9ORSk7CiAKLQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVhZnJpZ2h0 c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgbGVhZnJp Z2h0c2liLCBCVF9SRUFEKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCW9wYXF1 ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApAQCAtMTk2MSwxNyArMTk2NCwxOCBAQCBf YnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2 c3RhdGUpCiAJCQkJICogbWFya2VkIHdpdGggSU5DT01QTEVURV9TUExJVCBmbGFnIGJlZm9y ZSBwcm9jZWVkaW5nCiAJCQkJICovCiAJCQkJQXNzZXJ0KGxlYWZibGtubyA9PSBzY2FuYmxr bm8pOwotCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBsZWZ0c2liLCBsZWFm Ymxrbm8pKQorCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIGxlZnRzaWIsIGxlYWZibGtubykpCiAJCQkJewogCQkJCQlSZWxlYXNl QnVmZmVyKGxlYWZidWYpOwogCQkJCQlyZXR1cm47CiAJCQkJfQogCiAJCQkJLyogd2UgbmVl ZCBhbiBpbnNlcnRpb24gc2NhbiBrZXkgZm9yIHRoZSBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAq LwotCQkJCWl0dXBfa2V5ID0gX2J0X21rc2NhbmtleShyZWwsIHRhcmdldGtleSk7CisJCQkJ aXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCB0 YXJnZXRrZXkpOwogCQkJCS8qIGZpbmQgdGhlIGxlZnRtb3N0IGxlYWYgcGFnZSB3aXRoIG1h dGNoaW5nIHBpdm90L2hpZ2gga2V5ICovCiAJCQkJaXR1cF9rZXktPnBpdm90c2VhcmNoID0g dHJ1ZTsKLQkJCQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCBpdHVwX2tleSwgJnNsZWFmYnVm LCBCVF9SRUFELCBOVUxMKTsKKwkJCQlzdGFjayA9IF9idF9zZWFyY2gocmVsLCB2c3RhdGUt PmluZm8tPmhlYXByZWwsIGl0dXBfa2V5LAorCQkJCQkJCQkgICAmc2xlYWZidWYsIEJUX1JF QUQsIE5VTEwpOwogCQkJCS8qIHdvbid0IG5lZWQgYSBzZWNvbmQgbG9jayBvciBwaW4gb24g bGVhZmJ1ZiAqLwogCQkJCV9idF9yZWxidWYocmVsLCBzbGVhZmJ1Zik7CiAKQEAgLTIwMDIs NyArMjAwNiw3IEBAIF9idF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYs IEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJCSAqIGxlYWZidWYgcGFnZSBoYWxmLWRlYWQuCiAJ CQkgKi8KIAkJCUFzc2VydChQX0lTTEVBRihvcGFxdWUpICYmICFQX0lHTk9SRShvcGFxdWUp KTsKLQkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxmZGVhZChyZWwsIGxlYWZidWYsIHN0YWNr KSkKKwkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxmZGVhZChyZWwsIHZzdGF0ZS0+aW5mby0+ aGVhcHJlbCwgbGVhZmJ1Ziwgc3RhY2spKQogCQkJewogCQkJCV9idF9yZWxidWYocmVsLCBs ZWFmYnVmKTsKIAkJCQlyZXR1cm47CkBAIC0yMDY1LDcgKzIwNjksNyBAQCBfYnRfcGFnZWRl bChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJ CWlmICghcmlnaHRzaWJfZW1wdHkpCiAJCQlicmVhazsKIAotCQlsZWFmYnVmID0gX2J0X2dl dGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7CisJCWxlYWZidWYgPSBfYnRfZ2V0YnVm KHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOwogCX0K IH0KIApAQCAtMjA4NCw3ICsyMDg4LDggQEAgX2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQogICogc3VjY2Vzc2Z1bGx5Lgog ICovCiBzdGF0aWMgYm9vbAotX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWws IEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNrKQorX2J0X21hcmtfcGFnZV9oYWxmZGVh ZChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsZWFmYnVmLAorCQkJ CQkgICBCVFN0YWNrIHN0YWNrKQogewogCUJsb2NrTnVtYmVyIGxlYWZibGtubzsKIAlCbG9j a051bWJlciBsZWFmcmlnaHRzaWI7CkBAIC0yMTE5LDcgKzIxMjQsNyBAQCBfYnRfbWFya19w YWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3Rh Y2spCiAJICogZGVsZXRlIHRoZSBkb3dubGluay4gIEl0IHdvdWxkIGZhaWwgdGhlICJyaWdo dCBzaWJsaW5nIG9mIHRhcmdldCBwYWdlCiAJICogaXMgYWxzbyB0aGUgbmV4dCBjaGlsZCBp biBwYXJlbnQgcGFnZSIgY3Jvc3MtY2hlY2sgYmVsb3cuCiAJICovCi0JaWYgKF9idF9yaWdo dHNpYl9oYWxmZGVhZGZsYWcocmVsLCBsZWFmcmlnaHRzaWIpKQorCWlmIChfYnRfcmlnaHRz aWJfaGFsZmRlYWRmbGFnKHJlbCwgaGVhcHJlbCwgbGVhZnJpZ2h0c2liKSkKIAl7CiAJCWVs b2coREVCVUcxLCAiY291bGQgbm90IGRlbGV0ZSBwYWdlICV1IGJlY2F1c2UgaXRzIHJpZ2h0 IHNpYmxpbmcgJXUgaXMgaGFsZi1kZWFkIiwKIAkJCSBsZWFmYmxrbm8sIGxlYWZyaWdodHNp Yik7CkBAIC0yMTQzLDcgKzIxNDgsNyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2spCiAJICovCiAJdG9wcGFy ZW50ID0gbGVhZmJsa25vOwogCXRvcHBhcmVudHJpZ2h0c2liID0gbGVhZnJpZ2h0c2liOwot CWlmICghX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBsZWFmYmxrbm8sIHN0YWNrLAor CWlmICghX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQocmVsLCBoZWFwcmVsLCBsZWFmYmxrbm8s IHN0YWNrLAogCQkJCQkJCQkgJnN1YnRyZWVwYXJlbnQsICZwb2Zmc2V0LAogCQkJCQkJCQkg JnRvcHBhcmVudCwgJnRvcHBhcmVudHJpZ2h0c2liKSkKIAkJcmV0dXJuIGZhbHNlOwpAQCAt MjM2Myw3ICsyMzY4LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJQXNzZXJ0KHRh cmdldCAhPSBsZWFmYmxrbm8pOwogCiAJCS8qIEZldGNoIHRoZSBibG9jayBudW1iZXIgb2Yg dGhlIHRhcmdldCdzIGxlZnQgc2libGluZyAqLwotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwg dGFyZ2V0LCBCVF9SRUFEKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCwgdGFyZ2V0LCBCVF9SRUFEKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCQlsZWZ0c2liID0g b3BhcXVlLT5idHBvX3ByZXY7CkBAIC0yMzkwLDcgKzIzOTUsNyBAQCBfYnRfdW5saW5rX2hh bGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIg c2NhbmJsa25vLAogCQlfYnRfbG9ja2J1ZihyZWwsIGxlYWZidWYsIEJUX1dSSVRFKTsKIAlp ZiAobGVmdHNpYiAhPSBQX05PTkUpCiAJewotCQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxl ZnRzaWIsIEJUX1dSSVRFKTsKKwkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UobGJ1Zik7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJd2hpbGUg KFBfSVNERUxFVEVEKG9wYXF1ZSkgfHwgb3BhcXVlLT5idHBvX25leHQgIT0gdGFyZ2V0KQpA QCAtMjQ0MCw3ICsyNDQ1LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJ CWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUpOworCQkJbGJ1ZiA9 IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIGxlZnRzaWIsIEJUX1dS SVRFKTsKIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQkJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwogCQl9CkBAIC0yNTA0LDcgKzI1MDksNyBAQCBfYnRfdW5s aW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tO dW1iZXIgc2NhbmJsa25vLAogCSAqIEFuZCBuZXh0IHdyaXRlLWxvY2sgdGhlIChjdXJyZW50 KSByaWdodCBzaWJsaW5nLgogCSAqLwogCXJpZ2h0c2liID0gb3BhcXVlLT5idHBvX25leHQ7 Ci0JcmJ1ZiA9IF9idF9nZXRidWYocmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOworCXJidWYg PSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCByaWdodHNpYiwgQlRf V1JJVEUpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKIAlpZiAob3BhcXVlLT5idHBvX3ByZXYgIT0gdGFyZ2V0KQpA QCAtMjUzMyw3ICsyNTM4LDggQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJaWYgKFBf UklHSFRNT1NUKG9wYXF1ZSkpCiAJCXsKIAkJCS8qIHJpZ2h0c2liIHdpbGwgYmUgdGhlIG9u bHkgb25lIGxlZnQgb24gdGhlIGxldmVsICovCi0JCQltZXRhYnVmID0gX2J0X2dldGJ1Zihy ZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJCQltZXRhYnVmID0gX2J0X2dldGJ1 ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsCisJCQkJCQkJ CSBCVF9XUklURSk7CiAJCQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCQkJ bWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTI3NzMsOSArMjc3OSwxMCBA QCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1 ZiwgQmxvY2tOdW1iZXIgc2NhbmJsa25vLAogICogcGFyZW50IGJsb2NrIGluIHRoZSBsZWFm YnVmIHBhZ2UgdXNpbmcgQlRyZWVUdXBsZVNldFRvcFBhcmVudCgpKS4KICAqLwogc3RhdGlj IGJvb2wKLV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCi0JCQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQs IE9mZnNldE51bWJlciAqcG9mZnNldCwKLQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQs IEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKK19idF9sb2NrX3N1YnRyZWVfcGFy ZW50KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQs CisJCQkJCQlCVFN0YWNrIHN0YWNrLCBCdWZmZXIgKnN1YnRyZWVwYXJlbnQsCisJCQkJCQlP ZmZzZXROdW1iZXIgKnBvZmZzZXQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCisJCQkJCQlC bG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpCiB7CiAJQmxvY2tOdW1iZXIgcGFyZW50 LAogCQkJCWxlZnRzaWJwYXJlbnQ7CkBAIC0yNzg5LDcgKzI3OTYsNyBAQCBfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNr IHN0YWNrLAogCSAqIExvY2F0ZSB0aGUgcGl2b3QgdHVwbGUgd2hvc2UgZG93bmxpbmsgcG9p bnRzIHRvICJjaGlsZCIuICBXcml0ZSBsb2NrCiAJICogdGhlIHBhcmVudCBwYWdlIGl0c2Vs Zi4KIAkgKi8KLQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkKTsK KwlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgaGVhcHJlbCwgc3RhY2ssIGNoaWxkKTsK IAlpZiAocGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQogCXsKIAkJLyoKQEAgLTI4ODksMTEgKzI4 OTYsMTEgQEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBjaGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKgogCSAqIE5vdGU6IFdlIGRlbGliZXJh dGVseSBhdm9pZCBjb21wbGV0aW5nIGluY29tcGxldGUgc3BsaXRzIGhlcmUuCiAJICovCi0J aWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCkp CisJaWYgKF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGhlYXByZWwsIGxlZnRzaWJwYXJl bnQsIHBhcmVudCkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFJlY3Vyc2UgdG8gZXhhbWlu ZSBjaGlsZCBwYWdlJ3MgZ3JhbmRwYXJlbnQgcGFnZSAqLwotCXJldHVybiBfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChyZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCisJcmV0dXJu IF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgaGVhcHJlbCwgcGFyZW50LCBzdGFjay0+ YnRzX3BhcmVudCwKIAkJCQkJCQkJICAgc3VidHJlZXBhcmVudCwgcG9mZnNldCwKIAkJCQkJ CQkJICAgdG9wcGFyZW50LCB0b3BwYXJlbnRyaWdodHNpYik7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRyZWUuYwppbmRleCAxY2M4OGRhMDMyLi40ZThhODVmYjVkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTgzNCw3ICs4MzQsNyBAQCBidHZhY3V1 bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCWlmIChzdGF0cyA9PSBOVUxMKQogCXsKIAkJLyogQ2hlY2sgaWYgVkFDVVVN IG9wZXJhdGlvbiBjYW4gZW50aXJlbHkgYXZvaWQgYnR2YWN1dW1zY2FuKCkgY2FsbCAqLwot CQlpZiAoIV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChpbmZvLT5pbmRleCkpCisJCWlmICgh X2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKGluZm8tPmluZGV4LCBpbmZvLT5oZWFwcmVsKSkK IAkJCXJldHVybiBOVUxMOwogCiAJCS8qCkBAIC04NzAsNyArODcwLDcgQEAgYnR2YWN1dW1j bGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cykKIAkgKi8KIAlBc3NlcnQoc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgPj0gc3RhdHMtPnBh Z2VzX2ZyZWUpOwogCW51bV9kZWxwYWdlcyA9IHN0YXRzLT5wYWdlc19kZWxldGVkIC0gc3Rh dHMtPnBhZ2VzX2ZyZWU7Ci0JX2J0X3NldF9jbGVhbnVwX2luZm8oaW5mby0+aW5kZXgsIG51 bV9kZWxwYWdlcyk7CisJX2J0X3NldF9jbGVhbnVwX2luZm8oaW5mby0+aW5kZXgsIGluZm8t PmhlYXByZWwsIG51bV9kZWxwYWdlcyk7CiAKIAkvKgogCSAqIEl0J3MgcXVpdGUgcG9zc2li bGUgZm9yIHVzIHRvIGJlIGZvb2xlZCBieSBjb25jdXJyZW50IHBhZ2Ugc3BsaXRzIGludG8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCmluZGV4IGM0M2MxYTI4MzAu LjVjNzI4ZTM1M2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwpA QCAtNDIsNyArNDIsOCBAQCBzdGF0aWMgYm9vbCBfYnRfc3RlcHBhZ2UoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgYm9vbCBfYnRfcmVhZG5leHRw YWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rp b24gZGlyKTsKIHN0YXRpYyBib29sIF9idF9wYXJhbGxlbF9yZWFkcGFnZShJbmRleFNjYW5E ZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24g ZGlyKTsKLXN0YXRpYyBCdWZmZXIgX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIFNuYXBzaG90IHNuYXBzaG90KTsKK3N0YXRpYyBCdWZmZXIgX2J0X3dhbGtfbGVm dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJ U25hcHNob3Qgc25hcHNob3QpOwogc3RhdGljIGJvb2wgX2J0X2VuZHBvaW50KEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGlubGluZSB2b2lkIF9i dF9pbml0aWFsaXplX21vcmVfZGF0YShCVFNjYW5PcGFxdWUgc28sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKIApAQCAtOTMsMTQgKzk0LDE0IEBAIF9idF9kcm9wX2xvY2tfYW5kX21heWJlX3Bp bihJbmRleFNjYW5EZXNjIHNjYW4sIEJUU2NhblBvcyBzcCkKICAqIGR1cmluZyB0aGUgc2Vh cmNoIHdpbGwgYmUgZmluaXNoZWQuCiAgKi8KIEJUU3RhY2sKLV9idF9zZWFyY2goUmVsYXRp b24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3MsCi0J CSAgIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwKKwkJICAgaW50 IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJQlRTdGFjawkJc3RhY2tfaW4gPSBO VUxMOwogCWludAkJCXBhZ2VfYWNjZXNzID0gQlRfUkVBRDsKIAogCS8qIEdldCB0aGUgcm9v dCBwYWdlIHRvIHN0YXJ0IHdpdGggKi8KLQkqYnVmUCA9IF9idF9nZXRyb290KHJlbCwgYWNj ZXNzKTsKKwkqYnVmUCA9IF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgYWNjZXNzKTsKIAog CS8qIElmIGluZGV4IGlzIGVtcHR5IGFuZCBhY2Nlc3MgPSBCVF9SRUFELCBubyByb290IHBh Z2UgaXMgY3JlYXRlZC4gKi8KIAlpZiAoIUJ1ZmZlcklzVmFsaWQoKmJ1ZlApKQpAQCAtMTI5 LDggKzEzMCw4IEBAIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5 LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3MsCiAJCSAqIGFsc28gdGFrZW4gY2FyZSBvZiBp biBfYnRfZ2V0c3RhY2tidWYpLiAgQnV0IHRoaXMgaXMgYSBnb29kCiAJCSAqIG9wcG9ydHVu aXR5IHRvIGZpbmlzaCBzcGxpdHMgb2YgaW50ZXJuYWwgcGFnZXMgdG9vLgogCQkgKi8KLQkJ KmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJlbCwga2V5LCAqYnVmUCwgKGFjY2VzcyA9PSBCVF9X UklURSksIHN0YWNrX2luLAotCQkJCQkJCSAgcGFnZV9hY2Nlc3MsIHNuYXBzaG90KTsKKwkJ KmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJlbCwgaGVhcHJlbCwga2V5LCAqYnVmUCwgKGFjY2Vz cyA9PSBCVF9XUklURSksCisJCQkJCQkJICBzdGFja19pbiwgcGFnZV9hY2Nlc3MsIHNuYXBz aG90KTsKIAogCQkvKiBpZiB0aGlzIGlzIGEgbGVhZiBwYWdlLCB3ZSdyZSBkb25lICovCiAJ CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKCpidWZQKTsKQEAgLTE5MCw3ICsxOTEsNyBAQCBfYnRf c2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBp bnQgYWNjZXNzLAogCQkgKiBidXQgYmVmb3JlIHdlIGFjcXVpcmVkIGEgd3JpdGUgbG9jay4g IElmIGl0IGhhcywgd2UgbWF5IG5lZWQgdG8KIAkJICogbW92ZSByaWdodCB0byBpdHMgbmV3 IHNpYmxpbmcuICBEbyB0aGF0LgogCQkgKi8KLQkJKmJ1ZlAgPSBfYnRfbW92ZXJpZ2h0KHJl bCwga2V5LCAqYnVmUCwgdHJ1ZSwgc3RhY2tfaW4sIEJUX1dSSVRFLAorCQkqYnVmUCA9IF9i dF9tb3ZlcmlnaHQocmVsLCBoZWFwcmVsLCBrZXksICpidWZQLCB0cnVlLCBzdGFja19pbiwg QlRfV1JJVEUsCiAJCQkJCQkJICBzbmFwc2hvdCk7CiAJfQogCkBAIC0yMzQsNiArMjM1LDcg QEAgX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAq YnVmUCwgaW50IGFjY2VzcywKICAqLwogQnVmZmVyCiBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9u IHJlbCwKKwkJCSAgUmVsYXRpb24gaGVhcHJlbCwKIAkJCSAgQlRTY2FuSW5zZXJ0IGtleSwK IAkJCSAgQnVmZmVyIGJ1ZiwKIAkJCSAgYm9vbCBmb3J1cGRhdGUsCkBAIC0yODgsMTIgKzI5 MCwxMiBAQCBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwKIAkJCX0KIAogCQkJaWYgKFBf SU5DT01QTEVURV9TUExJVChvcGFxdWUpKQotCQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBi dWYsIHN0YWNrKTsKKwkJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVhcHJlbCwgYnVmLCBz dGFjayk7CiAJCQllbHNlCiAJCQkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAKIAkJCS8qIHJl LWFjcXVpcmUgdGhlIGxvY2sgaW4gdGhlIHJpZ2h0IG1vZGUsIGFuZCByZS1jaGVjayAqLwot CQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJsa25vLCBhY2Nlc3MpOworCQkJYnVmID0gX2J0 X2dldGJ1ZihyZWwsIGhlYXByZWwsIGJsa25vLCBhY2Nlc3MpOwogCQkJY29udGludWU7CiAJ CX0KIApAQCAtODYwLDYgKzg2Miw3IEBAIGJvb2wKIF9idF9maXJzdChJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogewogCVJlbGF0aW9uCXJlbCA9IHNjYW4tPmlu ZGV4UmVsYXRpb247CisJUmVsYXRpb24gCWhlYXByZWwgPSBzY2FuLT5oZWFwUmVsYXRpb247 CiAJQlRTY2FuT3BhcXVlIHNvID0gKEJUU2Nhbk9wYXF1ZSkgc2Nhbi0+b3BhcXVlOwogCUJ1 ZmZlcgkJYnVmOwogCUJUU3RhY2sJCXN0YWNrOwpAQCAtMTM1Miw3ICsxMzU1LDcgQEAgX2J0 X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJfQogCiAJ LyogSW5pdGlhbGl6ZSByZW1haW5pbmcgaW5zZXJ0aW9uIHNjYW4ga2V5IGZpZWxkcyAqLwot CV9idF9tZXRhdmVyc2lvbihyZWwsICZpbnNrZXkuaGVhcGtleXNwYWNlLCAmaW5za2V5LmFs bGVxdWFsaW1hZ2UpOworCV9idF9tZXRhdmVyc2lvbihyZWwsIGhlYXByZWwsICZpbnNrZXku aGVhcGtleXNwYWNlLCAmaW5za2V5LmFsbGVxdWFsaW1hZ2UpOwogCWluc2tleS5hbnludWxs a2V5cyA9IGZhbHNlOyAvKiB1bnVzZWQgKi8KIAlpbnNrZXkubmV4dGtleSA9IG5leHRrZXk7 CiAJaW5za2V5LnBpdm90c2VhcmNoID0gZmFsc2U7CkBAIC0xMzYzLDcgKzEzNjYsNyBAQCBf YnRfZmlyc3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkgKiBV c2UgdGhlIG1hbnVmYWN0dXJlZCBpbnNlcnRpb24gc2NhbiBrZXkgdG8gZGVzY2VuZCB0aGUg dHJlZSBhbmQKIAkgKiBwb3NpdGlvbiBvdXJzZWx2ZXMgb24gdGhlIHRhcmdldCBsZWFmIHBh Z2UuCiAJICovCi0Jc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgJmluc2tleSwgJmJ1ZiwgQlRf UkVBRCwgc2Nhbi0+eHNfc25hcHNob3QpOworCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsIGhl YXByZWwsICZpbnNrZXksICZidWYsIEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKIAog CS8qIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgc3RhY2sgYXJvdW5kLi4uICovCiAJX2J0X2Zy ZWVzdGFjayhzdGFjayk7CkBAIC0yMDA0LDcgKzIwMDcsNyBAQCBfYnRfcmVhZG5leHRwYWdl KEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24g ZGlyKQogCQkJLyogY2hlY2sgZm9yIGludGVycnVwdHMgd2hpbGUgd2UncmUgbm90IGhvbGRp bmcgYW55IGJ1ZmZlciBsb2NrICovCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJ Lyogc3RlcCByaWdodCBvbmUgcGFnZSAqLwotCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dl dGJ1ZihyZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9n ZXRidWYocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIGJsa25vLCBCVF9SRUFEKTsKIAkJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKHNvLT5jdXJyUG9zLmJ1Zik7CiAJCQlUZXN0Rm9yT2xkU25h cHNob3Qoc2Nhbi0+eHNfc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CkBAIC0yMDc4LDcgKzIwODEsOCBAQCBfYnRfcmVhZG5leHRw YWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rp b24gZGlyKQogCQlpZiAoQlRTY2FuUG9zSXNQaW5uZWQoc28tPmN1cnJQb3MpKQogCQkJX2J0 X2xvY2tidWYocmVsLCBzby0+Y3VyclBvcy5idWYsIEJUX1JFQUQpOwogCQllbHNlCi0JCQlz by0+Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc28tPmN1cnJQb3MuY3VyclBhZ2Us IEJUX1JFQUQpOworCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNjYW4t PmhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JF QUQpOwogCiAJCWZvciAoOzspCiAJCXsKQEAgLTIwOTIsOCArMjA5Niw4IEBAIF9idF9yZWFk bmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywgU2NhbkRp cmVjdGlvbiBkaXIpCiAJCQl9CiAKIAkJCS8qIFN0ZXAgdG8gbmV4dCBwaHlzaWNhbCBwYWdl ICovCi0JCQlzby0+Y3VyclBvcy5idWYgPSBfYnRfd2Fsa19sZWZ0KHJlbCwgc28tPmN1cnJQ b3MuYnVmLAotCQkJCQkJCQkJCQlzY2FuLT54c19zbmFwc2hvdCk7CisJCQlzby0+Y3VyclBv cy5idWYgPSBfYnRfd2Fsa19sZWZ0KHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLAorCQkJCQkJ CQkJCQlzby0+Y3VyclBvcy5idWYsIHNjYW4tPnhzX3NuYXBzaG90KTsKIAogCQkJLyogaWYg d2UncmUgcGh5c2ljYWxseSBhdCBlbmQgb2YgaW5kZXgsIHJldHVybiBmYWlsdXJlICovCiAJ CQlpZiAoc28tPmN1cnJQb3MuYnVmID09IEludmFsaWRCdWZmZXIpCkBAIC0yMTQwLDcgKzIx NDQsOCBAQCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1i ZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJCQlCVFNjYW5Qb3NJbnZhbGlkYXRl KHNvLT5jdXJyUG9zKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KLQkJCQlzby0+Y3Vy clBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJCXNvLT5j dXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzY2FuLT5oZWFwUmVsYXRpb24sIGJsa25v LAorCQkJCQkJCQkJCQkgQlRfUkVBRCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTg1LDcgKzIx OTAsNyBAQCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9j a051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAgKiBhZ2FpbiBpZiBpdCdzIGlt cG9ydGFudC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3dhbGtfbGVmdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3dhbGtfbGVmdChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBz aG90KQogewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTIyMTMs NyArMjIxOCw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBT bmFwc2hvdCBzbmFwc2hvdCkKIAkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAJCS8qIGNoZWNr IGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9j ayAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQlidWYgPSBfYnRfZ2V0YnVmKHJl bCwgYmxrbm8sIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwg Ymxrbm8sIEJUX1JFQUQpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlUZXN0 Rm9yT2xkU25hcHNob3Qoc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCW9wYXF1ZSA9IEJUUGFn ZUdldE9wYXF1ZShwYWdlKTsKQEAgLTIzMDQsNyArMjMwOSw3IEBAIF9idF93YWxrX2xlZnQo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKICAqIFRoZSBy ZXR1cm5lZCBidWZmZXIgaXMgcGlubmVkIGFuZCByZWFkLWxvY2tlZC4KICAqLwogQnVmZmVy Ci1fYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJp Z2h0bW9zdCwKK19idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFw cmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAogCQkJCSBTbmFwc2hvdCBzbmFw c2hvdCkKIHsKIAlCdWZmZXIJCWJ1ZjsKQEAgLTIzMjAsOSArMjMyNSw5IEBAIF9idF9nZXRf ZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAog CSAqIHNtYXJ0ZXIgYWJvdXQgaW50ZXJtZWRpYXRlIGxldmVscy4pCiAJICovCiAJaWYgKGxl dmVsID09IDApCi0JCWJ1ZiA9IF9idF9nZXRyb290KHJlbCwgQlRfUkVBRCk7CisJCWJ1ZiA9 IF9idF9nZXRyb290KHJlbCwgaGVhcHJlbCwgQlRfUkVBRCk7CiAJZWxzZQotCQlidWYgPSBf YnRfZ2V0dHJ1ZXJvb3QocmVsKTsKKwkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCwgaGVh cHJlbCk7CiAKIAlpZiAoIUJ1ZmZlcklzVmFsaWQoYnVmKSkKIAkJcmV0dXJuIEludmFsaWRC dWZmZXI7CkBAIC0yNDAzLDcgKzI0MDgsOCBAQCBfYnRfZW5kcG9pbnQoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkgKiB2ZXJzaW9uIG9mIF9idF9zZWFyY2go KS4gIFdlIGRvbid0IG1haW50YWluIGEgc3RhY2sgc2luY2Ugd2Uga25vdyB3ZQogCSAqIHdv bid0IG5lZWQgaXQuCiAJICovCi0JYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIDAsIFNj YW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlidWYg PSBfYnRfZ2V0X2VuZHBvaW50KHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCAwLAorCQkJCQkJ ICAgU2NhbkRpcmVjdGlvbklzQmFja3dhcmQoZGlyKSwgc2Nhbi0+eHNfc25hcHNob3QpOwog CiAJaWYgKCFCdWZmZXJJc1ZhbGlkKGJ1ZikpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYwppbmRleCA2N2I3YjE3MTBjLi44YzU4ZmRiOGQxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtNTY2LDcgKzU2Niw3IEBAIF9idF9sZWFmYnVp bGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAKIAl3c3RhdGUuaGVh cCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7Ci0J d3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKKwl3 c3RhdGUuaW5za2V5ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIGJ0c3Bvb2wtPmhl YXAsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXkoKSB3b24ndCBzZXQgYWxsZXF1YWxpbWFn ZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmluc2tleS0+YWxsZXF1YWxpbWFnZSA9 IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1ZSk7CiAJd3N0YXRlLmJ0d3Nf dXNlX3dhbCA9IFJlbGF0aW9uTmVlZHNXQUwod3N0YXRlLmluZGV4KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA3ZGE0OTljNGRkLi4wNWFiZjM2MDMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC04Nyw3ICs4Nyw3IEBA IHN0YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxh c3RsZWZ0LAogICoJCWZpZWxkIHRoZW1zZWx2ZXMuCiAgKi8KIEJUU2Nhbkluc2VydAotX2J0 X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKK19idF9ta3NjYW5r ZXkoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApCiB7 CiAJQlRTY2FuSW5zZXJ0IGtleTsKIAlTY2FuS2V5CQlza2V5OwpAQCAtMTEyLDcgKzExMiw3 IEBAIF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXApCiAJa2V5 ID0gcGFsbG9jKG9mZnNldG9mKEJUU2Nhbkluc2VydERhdGEsIHNjYW5rZXlzKSArCiAJCQkJ IHNpemVvZihTY2FuS2V5RGF0YSkgKiBpbmRua2V5YXR0cyk7CiAJaWYgKGl0dXApCi0JCV9i dF9tZXRhdmVyc2lvbihyZWwsICZrZXktPmhlYXBrZXlzcGFjZSwgJmtleS0+YWxsZXF1YWxp bWFnZSk7CisJCV9idF9tZXRhdmVyc2lvbihyZWwsIGhlYXByZWwsICZrZXktPmhlYXBrZXlz cGFjZSwgJmtleS0+YWxsZXF1YWxpbWFnZSk7CiAJZWxzZQogCXsKIAkJLyogVXRpbGl0eSBz dGF0ZW1lbnQgY2FsbGVycyBjYW4gc2V0IHRoZXNlIGZpZWxkcyB0aGVtc2VsdmVzICovCkBA IC0xNzYxLDcgKzE3NjEsOCBAQCBfYnRfa2lsbGl0ZW1zKEluZGV4U2NhbkRlc2Mgc2NhbikK IAogCQlkcm9wcGVkcGluID0gdHJ1ZTsKIAkJLyogQXR0ZW1wdCB0byByZS1yZWFkIHRoZSBi dWZmZXIsIGdldHRpbmcgcGluIGFuZCBsb2NrLiAqLwotCQlidWYgPSBfYnRfZ2V0YnVmKHNj YW4tPmluZGV4UmVsYXRpb24sIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKKwkJ YnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzY2FuLT5oZWFwUmVsYXRp b24sCisJCQkJCQkgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQpOwogCiAJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCWlmIChCdWZmZXJHZXRMU05BdG9taWMoYnVmKSA9 PSBzby0+Y3VyclBvcy5sc24pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YwppbmRleCAzYWRiMThmMmQ4Li4yZjRhNGFhZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMKQEAgLTQ4OSw3ICs0ODksNyBAQCB2YWN1dW1MZWFmUm9vdChz cGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIp CiAgKiBVbmxpa2UgdGhlIHJvdXRpbmVzIGFib3ZlLCB0aGlzIHdvcmtzIG9uIGJvdGggbGVh ZiBhbmQgaW5uZXIgcGFnZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi12YWN1dW1SZWRpcmVjdEFu ZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQordmFjdXVtUmVk aXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVhcHJlbCwg QnVmZmVyIGJ1ZmZlcikKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIp OwogCVNwR2lzdFBhZ2VPcGFxdWUgb3BhcXVlID0gU3BHaXN0UGFnZUdldE9wYXF1ZShwYWdl KTsKQEAgLTUwMyw2ICs1MDMsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJl bGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4 bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCXhscmVjLmlzQ2F0YWxvZ1Jl bCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJ eGxyZWMublRvUGxhY2Vob2xkZXIgPSAwOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jp em9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTY0MywxMyArNjQ0LDEzIEBAIHNw Z3ZhY3V1bXBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIEJsb2NrTnVtYmVyIGJsa25v KQogCQllbHNlCiAJCXsKIAkJCXZhY3V1bUxlYWZQYWdlKGJkcywgaW5kZXgsIGJ1ZmZlciwg ZmFsc2UpOwotCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVy KTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+ aGVhcHJlbCwgYnVmZmVyKTsKIAkJfQogCX0KIAllbHNlCiAJewogCQkvKiBpbm5lciBwYWdl ICovCi0JCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7CisJ CXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+aGVhcHJl bCwgYnVmZmVyKTsKIAl9CiAKIAkvKgpAQCAtNzE5LDcgKzcyMCw3IEBAIHNwZ3Byb2Nlc3Nw ZW5kaW5nKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzKQogCQkJLyogZGVhbCB3aXRoIGFueSBk ZWxldGFibGUgdHVwbGVzICovCiAJCQl2YWN1dW1MZWFmUGFnZShiZHMsIGluZGV4LCBidWZm ZXIsIHRydWUpOwogCQkJLyogbWlnaHQgYXMgd2VsbCBkbyB0aGlzIHdoaWxlIHdlIGFyZSBo ZXJlICovCi0JCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIp OworCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYmRzLT5pbmZvLT5o ZWFwcmVsLCBidWZmZXIpOwogCiAJCQlTcEdpc3RTZXRMYXN0VXNlZFBhZ2UoaW5kZXgsIGJ1 ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA0MWIxNmNiODliLi40OGQxZDZiNTA2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zMzUyLDYgKzMzNTIsNyBAQCB2YWxpZGF0ZV9p bmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZp bmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9 IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8uaGVhcHJlbCA9IGhlYXBSZWxhdGlvbjsKIAogCS8qCiAJICogRW5j b2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJl Y3RseSBzb3J0aW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggNjU3NTA5NThiYi4u MDE3ODE4NmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpAQCAtNzEyLDYgKzcxMiw3 IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9uZXJlbCwgVmFjdXVtUGFyYW1zICpwYXJh bXMsCiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwogCQkJaXZpbmZvLnN0 cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OworCQkJaXZpbmZvLmhlYXByZWwgPSBvbmVyZWw7CiAK IAkJCXN0YXRzID0gaW5kZXhfdmFjdXVtX2NsZWFudXAoJml2aW5mbywgTlVMTCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGJjZDQwYzgwYTEuLjJj ZGJkMTgyYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFs bGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAt MTQ4LDYgKzE0OCw5IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiAJLyogTlVMTCBm b3Igd29ya2VyIHByb2Nlc3NlcyAqLwogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKIAorCS8q IFBhcmVudCBIZWFwIFJlbGF0aW9uICovCisJUmVsYXRpb24JaGVhcHJlbDsKKwogCS8qIFRh cmdldCBpbmRleGVzICovCiAJUmVsYXRpb24gICAqaW5kcmVsczsKIAlpbnQJCQluaW5kZXhl czsKQEAgLTI2Niw2ICsyNjksNyBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJcHZzLT5uaW5kZXhlcyA9 IG5pbmRleGVzOwogCXB2cy0+d2lsbF9wYXJhbGxlbF92YWN1dW0gPSB3aWxsX3BhcmFsbGVs X3ZhY3V1bTsKIAlwdnMtPmJzdHJhdGVneSA9IGJzdHJhdGVneTsKKwlwdnMtPmhlYXByZWwg PSByZWw7CiAKIAlFbnRlclBhcmFsbGVsTW9kZSgpOwogCXBjeHQgPSBDcmVhdGVQYXJhbGxl bENvbnRleHQoInBvc3RncmVzIiwgInBhcmFsbGVsX3ZhY3V1bV9tYWluIiwKQEAgLTgzOCw2 ICs4NDIsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxW YWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZvLmVzdGltYXRlZF9j b3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZpbmZvLm51bV9oZWFw X3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g cHZzLT5ic3RyYXRlZ3k7CisJaXZpbmZvLmhlYXByZWwgPSBwdnMtPmhlYXByZWw7CiAKIAkv KiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1l ID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKQEAgLTEwMDcs NiArMTAxMiw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlwdnMuZGVhZF9pdGVtcyA9IGRlYWRfaXRlbXM7CiAJcHZzLnJlbG5h bWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwp KTsKIAlwdnMucmVsbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSk7CisJcHZzLmhlYXByZWwgPSByZWw7CiAKIAkvKiBUaGVzZSBmaWVsZHMgd2lsbCBiZSBm aWxsZWQgZHVyaW5nIGluZGV4IHZhY3V1bSBvciBjbGVhbnVwICovCiAJcHZzLmluZG5hbWUg PSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IGQ1OGM0 YTEwNzguLmUzODI0ZWZlOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKQEAgLTQ2Miw3ICs0NjIsNyBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAq cm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJCQkgKiBG b3IgYnRyZWVzLCBnZXQgdHJlZSBoZWlnaHQgd2hpbGUgd2UgaGF2ZSB0aGUgaW5kZXgKIAkJ CQkJICogb3BlbgogCQkJCQkgKi8KLQkJCQkJaW5mby0+dHJlZV9oZWlnaHQgPSBfYnRfZ2V0 cm9vdGhlaWdodChpbmRleFJlbGF0aW9uKTsKKwkJCQkJaW5mby0+dHJlZV9oZWlnaHQgPSBf YnRfZ2V0cm9vdGhlaWdodChpbmRleFJlbGF0aW9uLCByZWxhdGlvbik7CiAJCQkJfQogCQkJ CWVsc2UKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxl c29ydHZhcmlhbnRzLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKaW5kZXggZWI2Y2ZjZmQwMC4uMDE4ODEwNjkyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwpAQCAtMjA3LDYgKzIwNyw3IEBAIHR1 cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0dXBEZXNjLAogVHVwbGVzb3J0c3RhdGUg KgogdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVEZXNjIHR1cERlc2MsCiAJCQkJCQlS ZWxhdGlvbiBpbmRleFJlbCwKKwkJCQkJCVJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQlpbnQg d29ya01lbSwKIAkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGludCBzb3J0b3B0 KQogewpAQCAtMjYwLDcgKzI2MSw3IEBAIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxl RGVzYyB0dXBEZXNjLAogCiAJYXJnLT50dXBEZXNjID0gdHVwRGVzYzsJCS8qIGFzc3VtZSB3 ZSBuZWVkIG5vdCBjb3B5IHR1cERlc2MgKi8KIAotCWluZGV4U2NhbktleSA9IF9idF9ta3Nj YW5rZXkoaW5kZXhSZWwsIE5VTEwpOworCWluZGV4U2NhbktleSA9IF9idF9ta3NjYW5rZXko aW5kZXhSZWwsIGhlYXByZWwsIE5VTEwpOwogCiAJaWYgKGFyZy0+aW5kZXhJbmZvLT5paV9F eHByZXNzaW9ucyAhPSBOVUxMKQogCXsKQEAgLTM2MSw3ICszNjIsNyBAQCB0dXBsZXNvcnRf YmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmVuZm9yY2VVbmlx dWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3REaXN0aW5jdCA9IHVu aXF1ZU51bGxzTm90RGlzdGluY3Q7CiAKLQlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5 KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4 UmVsLCBoZWFwUmVsLCBOVUxMKTsKIAogCS8qIFByZXBhcmUgU29ydFN1cHBvcnQgZGF0YSBm b3IgZWFjaCBjb2x1bW4gKi8KIAliYXNlLT5zb3J0S2V5cyA9IChTb3J0U3VwcG9ydCkgcGFs bG9jMChiYXNlLT5uS2V5cyAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDgzZGJlZTBmZTYuLjc3 MDhiODJkN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC01MCw2ICs1MCw3IEBAIHR5cGVkZWYg c3RydWN0IEluZGV4VmFjdXVtSW5mbwogCWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBv cnQgbGV2ZWwgZm9yIHByb2dyZXNzIG1lc3NhZ2VzICovCiAJZG91YmxlCQludW1faGVhcF90 dXBsZXM7CS8qIHR1cGxlcyByZW1haW5pbmcgaW4gaGVhcCAqLwogCUJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCisJUmVs YXRpb24gCWhlYXByZWw7CQkvKiB0aGUgaGVhcCByZWxhdGlvbiB0aGUgaW5kZXggYmVsb25n cyB0byAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9w cml2YXRlLmgKaW5kZXggOGFmMzNkN2I0MC4uZWUyNzU2NTBiZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9naXN0X3ByaXZhdGUuaApAQCAtNDQwLDcgKzQ0MCw3IEBAIGV4dGVybiBYTG9nUmVjUHRy IGdpc3RYTG9nUGFnZURlbGV0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJIEZ1bGxUcmFu c2FjdGlvbklkIHhpZCwgQnVmZmVyIHBhcmVudEJ1ZmZlciwKIAkJCQkJCQkJCSBPZmZzZXRO dW1iZXIgZG93bmxpbmtPZmZzZXQpOwogCi1leHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVz ZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAorZXh0ZXJuIHZvaWQgZ2lzdFhM b2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJl ciBibGtubywKIAkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCk7CiAKIGV4 dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCkBAIC00NDks NyArNDQ5LDggQEAgZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dVcGRhdGUoQnVmZmVyIGJ1 ZmZlciwKIAkJCQkJCQkJIEJ1ZmZlciBsZWZ0Y2hpbGRidWYpOwogCiBleHRlcm4gWExvZ1Jl Y1B0ciBnaXN0WExvZ0RlbGV0ZShCdWZmZXIgYnVmZmVyLCBPZmZzZXROdW1iZXIgKnRvZGVs ZXRlLAotCQkJCQkJCQkgaW50IG50b2RlbGV0ZSwgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCSBpbnQgbnRvZGVsZXRlLCBUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkgUmVsYXRpb24gaGVhcHJlbCk7 CiAKIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nU3BsaXQoYm9vbCBwYWdlX2lzX2xlYWYs CiAJCQkJCQkJCVNwbGl0ZWRQYWdlTGF5b3V0ICpkaXN0LApAQCAtNDg1LDcgKzQ4Niw3IEBA IGV4dGVybiBib29sIGdpc3Rwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBl eHRlcm4gYm9vbCBnaXN0Zml0cGFnZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBl eHRlcm4gYm9vbCBnaXN0bm9zcGFjZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBp bnQgbGVuLCBPZmZzZXROdW1iZXIgdG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVy biB2b2lkIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVy biBCdWZmZXIgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lz dE5ld0J1ZmZlcihSZWxhdGlvbiByLCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBib29s IGdpc3RQYWdlUmVjeWNsYWJsZShQYWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxi dWZmZXIoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAg T2Zmc2V0TnVtYmVyIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IDA5ZjliMGY4 YzYuLjJlZWE4NjZmMDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxv Zy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCkBAIC01MSwxMyArNTEs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dEZWxldGUKIHsKIAlUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnRvZGVsZXRlOwkJLyogbnVt YmVyIG9mIGRlbGV0ZWQgb2Zmc2V0cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJ LyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJ CSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAotCS8qCi0JICogSW4gcGF5bG9hZCBvZiBi bGsgMCA6IHRvZGVsZXRlIE9mZnNldE51bWJlcnMKLQkgKi8KKwkvKiBUT0RFTEVURSBPRkZT RVQgTlVNQkVSUyAqLworCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07CiB9IGdpc3R4bG9nRGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nRGVs ZXRlCShvZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwgbnRvZGVsZXRlKSArIHNpemVvZih1aW50 MTYpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSBvZmZzZXRvZihnaXN0eGxvZ0Rl bGV0ZSwgb2Zmc2V0cykKIAogLyoKICAqIEJhY2t1cCBCbGsgMDogSWYgdGhpcyBvcGVyYXRp b24gY29tcGxldGVzIGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKQEAgLTEwMCw5ICsx MDEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxGaWxlTG9j YXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJ LyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJ CSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNk ZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJl dXNlLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9u SWQpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhs b2dQYWdlUmV1c2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2 b2lkIGdpc3RfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBn aXN0X2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oYXNoX3hsb2cuaAppbmRleCBhMmYwZjM5MjEzLi43ZTllNDdjZTY3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC0yNTIsMTIgKzI1MiwxNCBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJaW50CQkJbnR1cGxlczsKKwlib29sCQlpc0NhdGFsb2dS ZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJ CQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKLQkvKiBUQVJHRVQgT0ZGU0VUIE5V TUJFUlMgRk9MTE9XIEFUIFRIRSBFTkQgKi8KKwkvKiBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMg Ki8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSB4 bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25l UGFnZSBcCi0JKG9mZnNldG9mKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlLCBudHVwbGVzKSAr IHNpemVvZihpbnQpKQorI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSBvZmZzZXRv Zih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgb2Zmc2V0cykKIAogZXh0ZXJuIHZvaWQgaGFz aF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGhhc2hfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaAppbmRleCA4Y2IwZDhkYTE5Li4yMjNkYjRiMTk5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ1LDEwICsyNDUsMTIgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF9wcnVuZQogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOworCWJvb2wg ICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1 cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAkvKiBP RkZTRVQgTlVNQkVSUyBhcmUgaW4gdGhlIGJsb2NrIHJlZmVyZW5jZSAwICovCiB9IHhsX2hl YXBfcHJ1bmU7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFw X3BydW5lLCBuZGVhZCkgKyBzaXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFBy dW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJv b2wpKQogCiAvKgogICogVGhlIHZhY3V1bSBwYWdlIHJlY29yZCBpcyBzaW1pbGFyIHRvIHRo ZSBwcnVuZSByZWNvcmQsIGJ1dCBjYW4gb25seSBtYXJrCkBAIC0zNDQsMTIgKzM0NiwxNCBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5wbGFuczsKKwlib29sICAg ICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJp bmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBG UkVFWkUgUExBTlMgRk9MTE9XICovCiAJLyogT0ZGU0VUIE5VTUJFUiBBUlJBWSBGT0xMT1dT ICovCiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6 ZVBhZ2UgKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2UsIG5wbGFucykgKyBzaXplb2Yo dWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6ZVBhZ2UgKG9mZnNldG9mKHhsX2hl YXBfZnJlZXplX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAg KiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmls aXR5IG1hcCBiaXQKQEAgLTQwOCw3ICs0MTIsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNj KFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29u c3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFw X3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBY TG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1 ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2 bV9idWZmZXIsCiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCiAJCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCmlu ZGV4IDhmNDg5NjBmOWQuLjZkZWUzMDcwNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEx ODIsOCArMTE4MiwxMCBAQCBleHRlcm4gSW5kZXhUdXBsZSBfYnRfc3dhcF9wb3N0aW5nKElu ZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcG9zdGluZywKIGV4dGVybiBib29sIF9i dF9kb2luc2VydChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJCSBJbmRl eFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sIGluZGV4VW5jaGFuZ2VkLAogCQkJCQkJ IFJlbGF0aW9uIGhlYXBSZWwpOwotZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKTsKLWV4dGVybiBCdWZmZXIg X2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1i ZXIgY2hpbGQpOworZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsYnVmLAorCQkJCQkJCSBCVFN0YWNrIHN0YWNr KTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQlRTdGFjayBzdGFjaywKKwkJCQkJCQkgIEJsb2NrTnVtYmVyIGNoaWxk KTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzcGxpdGxvYy5j CkBAIC0xMTk3LDE2ICsxMTk5LDE4IEBAIGV4dGVybiBPZmZzZXROdW1iZXIgX2J0X2ZpbmRz cGxpdGxvYyhSZWxhdGlvbiByZWwsIFBhZ2Ugb3JpZ3BhZ2UsCiAgKi8KIGV4dGVybiB2b2lk IF9idF9pbml0bWV0YXBhZ2UoUGFnZSBwYWdlLCBCbG9ja051bWJlciByb290YmtudW0sIHVp bnQzMiBsZXZlbCwKIAkJCQkJCQkgYm9vbCBhbGxlcXVhbGltYWdlKTsKLWV4dGVybiBib29s IF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpOwotZXh0ZXJuIHZvaWQg X2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVs cGFnZXMpOworZXh0ZXJuIGJvb2wgX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9u IHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBfYnRfc2V0X2NsZWFudXBf aW5mbyhSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCisJCQkJCQkJCSBCbG9ja051 bWJlciBudW1fZGVscGFnZXMpOwogZXh0ZXJuIHZvaWQgX2J0X3VwZ3JhZGVtZXRhcGFnZShQ YWdlIHBhZ2UpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGlu dCBhY2Nlc3MpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVs KTsKLWV4dGVybiBpbnQJX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKTsKLWV4dGVy biB2b2lkIF9idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwKK2V4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBpbnQgYWNjZXNzKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gaW50CV9idF9nZXRyb290 aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBf YnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sICpo ZWFwa2V5c3BhY2UsCiAJCQkJCQkJYm9vbCAqYWxsZXF1YWxpbWFnZSk7CiBleHRlcm4gdm9p ZCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVm ZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFj Y2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywKKwkJCQkJCSBpbnQgYWNjZXNzKTsKIGV4 dGVybiBCdWZmZXIgX2J0X3JlbGFuZGdldGJ1ZihSZWxhdGlvbiByZWwsIEJ1ZmZlciBvYnVm LAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBpbnQgYWNjZXNzKTsKIGV4dGVybiB2 b2lkIF9idF9yZWxidWYoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKQEAgLTEyMjksMjEg KzEyMzMsMjIgQEAgZXh0ZXJuIHZvaWQgX2J0X3BlbmRpbmdmc21fZmluYWxpemUoUmVsYXRp b24gcmVsLCBCVFZhY1N0YXRlICp2c3RhdGUpOwogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1 bmN0aW9ucyBpbiBuYnRzZWFyY2guYwogICovCi1leHRlcm4gQlRTdGFjayBfYnRfc2VhcmNo KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLAotCQkJCQkJ ICBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7Ci1leHRlcm4gQnVmZmVyIF9idF9t b3ZlcmlnaHQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgYnVmLAot CQkJCQkJCWJvb2wgZm9ydXBkYXRlLCBCVFN0YWNrIHN0YWNrLCBpbnQgYWNjZXNzLCBTbmFw c2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQlRTdGFjayBfYnRfc2VhcmNoKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwKKwkJCQkJCSAgQnVmZmVy ICpidWZQLCBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVy IF9idF9tb3ZlcmlnaHQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFNjYW5J bnNlcnQga2V5LAorCQkJCQkJCUJ1ZmZlciBidWYsIGJvb2wgZm9ydXBkYXRlLCBCVFN0YWNr IHN0YWNrLAorCQkJCQkJCWludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVy biBPZmZzZXROdW1iZXIgX2J0X2JpbnNyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CiBleHRlcm4gaW50MzIgX2J0X2NvbXBhcmUoUmVsYXRp b24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZu dW0pOwogZXh0ZXJuIGJvb2wgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXIpOwogZXh0ZXJuIGJvb2wgX2J0X25leHQoSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuRGlyZWN0aW9uIGRpcik7Ci1leHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQo UmVsYXRpb24gcmVsLCB1aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAotCQkJCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldF9lbmRwb2ludChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIHVpbnQzMiBsZXZlbCwKKwkJCQkJCQkg ICBib29sIHJpZ2h0bW9zdCwgU25hcHNob3Qgc25hcHNob3QpOwogCiAvKgogICogcHJvdG90 eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHV0aWxzLmMKICAqLwotZXh0ZXJuIEJUU2Nhbklu c2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKTsKK2V4 dGVybiBCVFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCk7CiBleHRlcm4gdm9pZCBfYnRfZnJlZXN0YWNr KEJUU3RhY2sgc3RhY2spOwogZXh0ZXJuIHZvaWQgX2J0X3ByZXByb2Nlc3NfYXJyYXlfa2V5 cyhJbmRleFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIHZvaWQgX2J0X3N0YXJ0X2FycmF5X2tl eXMoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHhsb2cuaAppbmRleCBlZGQxMzMzZDliLi4xZTQ1ZDU4ODQ1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4 bG9nLmgKQEAgLTE4OCw5ICsxODgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1 c2VfcGFnZQogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7 CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CisJYm9vbCAg ICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogfSB4bF9i dHJlZV9yZXVzZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShzaXpl b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSkpCisjZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdl CShvZmZzZXRvZih4bF9idHJlZV9yZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9m KGJvb2wpKQogCiAvKgogICogeGxfYnRyZWVfdmFjdXVtIGFuZCB4bF9idHJlZV9kZWxldGUg cmVjb3JkcyBkZXNjcmliZSBkZWxldGlvbiBvZiBpbmRleApAQCAtMjM1LDEzICsyMzcsMTUg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVw ZGF0ZWQ7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3Zl cnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3Rh bmRieSAqLwogCiAJLyogREVMRVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICov CiAJLyogVVBEQVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICovCiAJLyogVVBE QVRFRCBUVVBMRVMgTUVUQURBVEEgKHhsX2J0cmVlX3VwZGF0ZSkgQVJSQVkgRk9MTE9XUyAq LwogfSB4bF9idHJlZV9kZWxldGU7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxldGUJKG9m ZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgbnVwZGF0ZWQpICsgc2l6ZW9mKHVpbnQxNikpCisj ZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZzZXRvZih4bF9idHJlZV9kZWxldGUsIGlz Q2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAgKiBUaGUgb2Zmc2V0cyB0aGF0 IGFwcGVhciBpbiB4bF9idHJlZV91cGRhdGUgbWV0YWRhdGEgYXJlIG9mZnNldHMgaW50byB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4IGI5ZDY3NTM1MzMuLjc1MjY3YTQ5MTQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjQwLDYgKzI0MCw4IEBAIHR5cGVkZWYgc3RydWN0 IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51 bWJlciBvZiByZWRpcmVjdHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1i ZXIgZmlyc3RQbGFjZWhvbGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVt b3ZlICovCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsJLyogbmV3 ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGlyZWN0cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxv Z1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJ CQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAogCS8qIG9mZnNldHMgb2YgcmVk aXJlY3QgdHVwbGVzIHRvIG1ha2UgcGxhY2Vob2xkZXJzIGZvbGxvdyAqLwogCU9mZnNldE51 bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDkxNjViOTQ1NmIuLjczMDZhMWMzZWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0xNyw5ICsxNywx MSBAQAogI2RlZmluZSBCSVRTX1BFUl9IRUFQQkxPQ0sgMgogCiAvKiBGbGFncyBmb3IgYml0 IG1hcCAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFCTB4MDEKLSNkZWZp bmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCTB4MDIKLSNkZWZpbmUgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKLQkJ CQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFCQkJCQkJCQkweDAxCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkJ CQkJCQkJMHgwMgorI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJCQkJCQkJCTB4 MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKKwkJCQkJCQkJCQkJCQkJCQkJ CSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JF TAkJCQkJCQkweDA0CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9n aWNhbAorCQkJCQkJCQkJCQkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCiAj ZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBh Zjk3ODUwMzhkLi4wY2ZlMDJhYTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMjcsNiArMjcsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgorI2luY2x1ZGUgImNhdGFsb2cvY2F0 YWxvZy5oIgogCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNv cnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IDEyNTc4ZTQyYmMu LjM5NWFiZmU1OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCkBAIC0zOTksNyArMzk5LDkg QEAgZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faGVhcChUdXBsZURl c2MgdHVwRGVzYywKIAkJCQkJCQkJCQkJaW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNv b3JkaW5hdGUsCiAJCQkJCQkJCQkJCWludCBzb3J0b3B0KTsKIGV4dGVybiBUdXBsZXNvcnRz dGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoVHVwbGVEZXNjIHR1cERlc2MsCi0JCQkJ CQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLCBpbnQgd29ya01lbSwKKwkJCQkJCQkJCQkJ ICAgUmVsYXRpb24gaW5kZXhSZWwsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWws CisJCQkJCQkJCQkJCSAgIGludCB3b3JrTWVtLAogCQkJCQkJCQkJCQkgICBTb3J0Q29vcmRp bmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBo ZWFwUmVsLAotLSAKMi4zNC4xCgo= --------------THi5Y8bjmBCtK99UQVRf6NPV--