Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wlq42-000PgW-24 for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Jul 2026 15:37:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wlq42-0040jw-0T for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Jul 2026 15:37:53 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wlq41-0040jo-17 for pgsql-hackers@lists.postgresql.org; Mon, 20 Jul 2026 15:37:53 +0000 Received: from fhigh-b1-smtp.messagingengine.com ([202.12.124.152]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wlq3w-00000000IFa-2cSv for pgsql-hackers@lists.postgresql.org; Mon, 20 Jul 2026 15:37:52 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id 47F9C7A007A for ; Mon, 20 Jul 2026 11:37:46 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Mon, 20 Jul 2026 11:37:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1784561866; x=1784648266; bh=ldUmLBiMfQ uZQHIrXMLQcRzcXAKZ1Od1GSda5rPHOqU=; b=PrvltNxX+XpI93Td8IPonh8ZX/ ImaWvSs43eYsaSotIzvVUC8Tk7+tNcRnBfLxJuZo8m0QlNocuryH45x+DZia+mOz 2cxIhBgh1JK4oQu/LATiHCGT3eigdftjQfiqTG0rTwSD2qaKYkZqRub7LToOFrSE vAZrcjz+nbVuo7ga9k0xA60NX1bKeBaAlAOt95SSdJVa8ltIcAjq6my+QUPI8OWx NYtnuW5LN9JPzMtT3Q1m40msPtM8ACuXg1nsSdmqC8PL3Nbt99dZKf9gMvbYxise bOWFIVyBBTYW2SP1b5+5FuygV6kea0b0oaVe/azcmuCvswgfFhgGiyprRgyw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1784561866; x=1784648266; bh=ldUmLBiMfQuZQHIrXMLQcRzcXAKZ1Od1GSd a5rPHOqU=; b=PbW1vmQDE4yQIUxludaSr3A+yzaYLUhTlY7MXwIhSqhHjGS6tqy gjWLcrLMIl2Ffs1KFXx/tlLKb51NTz/kmr7LJoDm/jYMVmw9QUXQitOUkMZTFX7y 9Q6DAbRzxExIWrk4DR2AGGA7SrCRK2E/9BrScZpsMCUM43YgerMXIznM/kaKPbKy 957gAWn+99hwsj8mLo1Bg8RbQxOumriu1R9ctlrSByx7x+zwnYOr1AIyTIUdB2oX pzwGDKFnT33SrM7Y8yUNagS/Y94MF7TVkAG5HfXryjctRiZZha2YR2m2YCYM8Tjt ShagVStlQa5PpN0fqZSSrHqa0ql2Pg+FDHQ== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTGUP7QbYHA+//IJCXBFfLKXhKq5uz64TpVM64ZyPmdR0c0eyFHBAif95SRtWolTsK b3F0D0t6wZAo6CMhIIbJRCDPUnGTrW+pBwbB1MtzPneAgz6I31HHhCIn0CG71os/Wjp+3c 5DnGY/U1jbO8WIoQqNIMNnh5QpwNssWXHOTra/6Ih/EoD8eR6frSEIrvuYKvEYzfH0F5pe a9iuJWs1WBMpD8t289dgFLEn30xDZjq0OSf6ege6tnbr7KJ7O6VoMgUSv8FgSyJ5BC0Qqa ozi3QGvkRrgvsDUGZ/DYftGpoiteKR/f2LFiOBdTvnWAukUsIJUxMBDeKIhgVaG+Da8mS/ xeik7eLNEPhPWmibJTEePO7vHROxD7AO0WvtBkm+1MrYf+usy8njZmeBTtQkrbSFxX7H4E XUb30PcmOTVTSbz+JkRKfdgDmeJMECvZ2YP6rVLkhNFB/2MXAL5PMxSAGWjrXwj6l0TPB+ OB9kFsuHarKMBW/mkGXIIH/sDhA3Ob5ERHimRI5ZvezFJ6/IhoWZ3vM4KIJhNYOyfMYqqz hQpU81arUoIIDBgcuSS6JeJ4N6IXSzphyCeDXP8rbxnlaFOArCW0LDzXtAyVrVeS27BemM 1duuD2sytMr+AZTDUWoIt79rYnj3WauCrK2Ea2rzB1hI5118maeiR6XQDmcg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id BF650700069; Mon, 20 Jul 2026 11:37:45 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: A5esK-b6BnZB Date: Mon, 20 Jul 2026 11:36:11 -0400 From: "Greg Burd" To: "PostgreSQL Hackers" Message-Id: <8ffd4113-1d35-4d11-9d6b-4b49eac9985c@app.fastmail.com> In-Reply-To: <96dc1db7-58a2-41ba-ae2e-bea86fa2fb3a@app.fastmail.com> References: <79629577-3ad8-4b1c-a469-ebc2cb4c5104@app.fastmail.com> <618241c3-a1e5-4a16-be12-17a361822ee0@app.fastmail.com> <5bcaa70b-89c7-44b6-b197-638d10997cae@app.fastmail.com> <76c33898-3baa-4f7b-8b72-57dd390fcffe@app.fastmail.com> <9cfdf3f2-b799-485a-8b5a-5159c00ff2df@app.fastmail.com> <96dc1db7-58a2-41ba-ae2e-bea86fa2fb3a@app.fastmail.com> Subject: Re: [PATCH] Batched clock sweep to reduce cross-socket atomic contention Content-Type: multipart/mixed; boundary=e43c6d4d37c2dc6715842cce56a0acb5f2fc7668 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --e43c6d4d37c2dc6715842cce56a0acb5f2fc7668 Content-Type: text/plain Content-Transfer-Encoding: 7bit v7 is attached, rebased on master (2521f9e). best. -greg --e43c6d4d37c2dc6715842cce56a0acb5f2fc7668 Content-Disposition: attachment; filename*0="v7-0001-Batch-the-clock-sweep-to-reduce-nextVictimBuffer-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v7-0001-Batch-the-clock-sweep-to-reduce-nextVictimBuffer-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhZWNhN2Q1MmFhMzA5Y2FmZDY4ZWY4ZmRkMGJlNWI3OTI0MjZhOWI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCA2IEp1bCAyMDI2IDE3OjI1OjAwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NyAxLzNd IEJhdGNoIHRoZSBjbG9jayBzd2VlcCB0byByZWR1Y2UgbmV4dFZpY3RpbUJ1ZmZlcgogYXRv bWljIGNvbnRlbnRpb24KClN0cmF0ZWd5R2V0QnVmZmVyKCkgYWR2YW5jZXMgdGhlIHNoYXJl ZCBjbG9jayBoYW5kLCBuZXh0VmljdGltQnVmZmVyLCB3aXRoIGEKcGdfYXRvbWljX2ZldGNo X2FkZF91MzIoLi4uLCAxKSBvbiBldmVyeSB0aWNrLiAgT24gYSBtdWx0aS1zb2NrZXQgc3lz dGVtIHRoZQpjYWNoZSBsaW5lIGhvbGRpbmcgdGhhdCBjb3VudGVyIGhhcyB0byB0cmF2ZWwg b3ZlciB0aGUgaW50ZXJjb25uZWN0IG9uIGVhY2gKb3BlcmF0aW9uLCBwdXNoaW5nIGEgc3dl ZXAgdGljayBmcm9tIH4yMG5zIChzYW1lLXNvY2tldCwgbGluZSB3YXJtIGluIEwxL0wyKQpp bnRvIHRoZSB+MTAwLTIwMG5zIHJhbmdlLiAgVW5kZXIgZXZpY3Rpb24gcHJlc3N1cmUgd2l0 aCBodW5kcmVkcyBvZiBiYWNrZW5kcwppbiBTdHJhdGVneUdldEJ1ZmZlcigpIGNvbmN1cnJl bnRseSwgdGhhdCBzaW5nbGUgY2FjaGUgbGluZSBiZWNvbWVzIHRoZQpkb21pbmFudCBjb3N0 IG9mIHRoZSBzd2VlcCwgdmlzaWJsZSBhcyBlbGV2YXRlZCBidXMtY3ljbGVzIGFuZCBjYWNo ZS1taXNzZXMgaW4KYSBwZXJmIHByb2ZpbGUuCgpIYXZlIGVhY2ggYmFja2VuZCBjbGFpbSBh IHJ1biBvZiBjb25zZWN1dGl2ZSBidWZmZXIgSURzIGZyb20gdGhlIHNoYXJlZCBoYW5kCndp dGggYSBzaW5nbGUgZmV0Y2gtYWRkIGFuZCB0aGVuIGl0ZXJhdGUgdGhyb3VnaCB0aGVtIHBy aXZhdGVseS4gIFRoZSBzd2VlcApzdGlsbCBhZHZhbmNlcyB0aHJvdWdoIHRoZSBwb29sIGlu IG9yZGVyLCBlYWNoIGJ1ZmZlciBpcyBzdGlsbCB2aXNpdGVkIGV4YWN0bHkKb25jZSBwZXIg Y29tcGxldGUgcGFzcywgYW5kIHRoZSBtZWFuaW5nIG9mIHRoZSBjbG9jayBzdGF0ZSBpcyB1 bmNoYW5nZWQ7IG9ubHkKdGhlIHRlbXBvcmFsIG9yZGVyaW5nIG9mIHZpc2l0cyB3aXRoaW4g YSBwYXNzIGNoYW5nZXMsIHdoaWNoIHRoZSBhbGdvcml0aG0KZG9lcyBub3QgZGVwZW5kIG9u LiAgVGhlIGNvbnRlbmRlZCBhdG9taWMgbm93IGZpcmVzIHJvdWdobHkgb25jZSBwZXIgYmF0 Y2gKcmF0aGVyIHRoYW4gb25jZSBwZXIgYnVmZmVyLgoKVGhlIGJhdGNoIGlzIG9uZSBjYWNo ZSBsaW5lJ3Mgd29ydGggb2YgY2xvY2staGFuZCB2YWx1ZXMgLS0KUEdfQ0FDSEVfTElORV9T SVpFIC8gc2l6ZW9mKHVpbnQzMikgLS0gY2FwcGVkIGF0IE5CdWZmZXJzIHNvIGEgY2xhaW0g Y2FuIG5ldmVyCndyYXAgdGhlIHBvb2wgbW9yZSB0aGFuIG9uY2UuICBCYXRjaGluZyBvbmx5 IGhlbHBzIHdoZW4gdGhlIGNvdW50ZXIncyBjYWNoZQpsaW5lIGFjdHVhbGx5IGJvdW5jZXMg YmV0d2VlbiBzb2NrZXRzLCBzbyBpdCBpcyBlbmFibGVkIG9ubHkgb24gbXVsdGktbm9kZQpO VU1BIGhhcmR3YXJlIChwZ19udW1hX2dldF9tYXhfbm9kZSgpID49IDEpOyBvbiBhIHNpbmds ZSBzb2NrZXQsIG9yIHdoZXJlCmxpYm51bWEgaXMgdW5hdmFpbGFibGUsIHRoZSBiYXRjaCBz aXplIHN0YXlzIDEgYW5kIHRoZSBjb2RlIHBhdGggaXMKYnl0ZS1pZGVudGljYWwgdG8gdGhl IHN0b2NrIGNsb2NrIHN3ZWVwLgoKV3JhcGFyb3VuZCBoYW5kbGluZyBpcyBhZGp1c3RlZDog d2l0aCBiYXRjaGluZywgc2V2ZXJhbCBiYWNrZW5kcyBjYW4gZWFjaCBzZWUKYSBmZXRjaC1h ZGQgcmV0dXJuIGEgdmFsdWUgcGFzdCBOQnVmZmVycyB3aXRoaW4gdGhlIHNhbWUgcGFzcy4g IEFueSBzdWNoCmJhY2tlbmQgdGFrZXMgYnVmZmVyX3N0cmF0ZWd5X2xvY2ssIHJlLXJlYWRz IHRoZSBjb3VudGVyLCBhbmQgaWYgaXQgaXMgc3RpbGwKb3V0IG9mIHJhbmdlIHdyYXBzIGl0 IHdpdGggYSBzaW5nbGUgQ0FTIGFuZCBpbmNyZW1lbnRzIGNvbXBsZXRlUGFzc2VzLgpTdHJh dGVneVN5bmNTdGFydCgpIGNvbnRpbnVlcyB0byBzZWUgYSBjb25zaXN0ZW50IChuZXh0Vmlj dGltQnVmZmVyLApjb21wbGV0ZVBhc3NlcykgcGFpci4KClRoaXMgaXMgdGhlIGJhdGNoZWQt Y2xvY2stc3dlZXAgaWRlYSBmcm9tIEppbSBNbG9kZ2Vuc2tpJ3MgcGdzcWwtaGFja2Vycwp0 aHJlYWQsIGFkYXB0ZWQgdG8gZGVyaXZlIHRoZSBiYXRjaCBzaXplIGZyb20gdGhlIHBsYXRm b3JtIGNhY2hlLWxpbmUgc2l6ZS4KCkNvLWF1dGhvcmVkLWJ5OiBKaW0gTWxvZGdlbnNraSA8 bWxvZGpAYW1hem9uLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVl bGlzdC5jIHwgMTUyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTA5IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IGZkYjViYWQuLjQ2MTA0YjMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMjIsNiArMjIsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNp bmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKKyNpbmNsdWRlICJwb3J0L3BnX251bWEu aCIKIAogI2RlZmluZSBJTlRfQUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUg aW50ICopJih2YXIpKSkpCiAKQEAgLTEwMCw2OCArMTAxLDExMCBAQCBzdGF0aWMgQnVmZmVy RGVzYyAqR2V0QnVmZmVyRnJvbVJpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ks CiBzdGF0aWMgdm9pZCBBZGRCdWZmZXJUb1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksCiAJCQkJCQkJQnVmZmVyRGVzYyAqYnVmKTsKIAorLyoKKyAqIFBlci1iYWNrZW5k IHN0YXRlIGZvciB0aGUgYmF0Y2hlZCBjbG9jayBzd2VlcC4gIEVhY2ggYmFja2VuZCBjbGFp bXMgYSBydW4KKyAqIG9mIGNvbnNlY3V0aXZlIGNsb2NrLWhhbmQgdmFsdWVzIHdpdGggYSBz aW5nbGUgYXRvbWljIGZldGNoLWFkZCBhbmQgdGhlbgorICogaXRlcmF0ZXMgdGhyb3VnaCB0 aGVtIHByaXZhdGVseSwgc28gdGhlIGNvbnRlbmRlZCBuZXh0VmljdGltQnVmZmVyIGNhY2hl CisgKiBsaW5lIGlzIHRvdWNoZWQgcm91Z2hseSAxL2JhdGNoIGFzIG9mdGVuLiAgTXlCYXRj aFBvcyBpcyB0aGUgbmV4dCBoYW5kCisgKiB2YWx1ZSB0byBoYW5kIG91dDsgTXlCYXRjaEVu ZCBpcyBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSBjbGFpbWVkIHJ1bi4gIEJvdGgKKyAqIGFy ZSBhYnNvbHV0ZSAobW9ub3RvbmljYWxseSBpbmNyZWFzaW5nKSBoYW5kIHZhbHVlczsgdGhl IGJ1ZmZlciBpZCBpcyB0aGUKKyAqIHZhbHVlIG1vZHVsbyBOQnVmZmVycy4KKyAqLworc3Rh dGljIHVpbnQzMiBNeUJhdGNoUG9zID0gMDsKK3N0YXRpYyB1aW50MzIgTXlCYXRjaEVuZCA9 IDA7CisKKy8qCisgKiBOdW1iZXIgb2YgY2xvY2staGFuZCB2YWx1ZXMgYSBiYWNrZW5kIGNs YWltcyBwZXIgYXRvbWljIGZldGNoLWFkZCwKKyAqIGNvbXB1dGVkIG9uY2UgYXQgc3RhcnR1 cCAoc2VlIFN0cmF0ZWd5Q3RsU2htZW1Jbml0KS4gIFdoZW4gYmF0Y2hpbmcgaXMKKyAqIGVu YWJsZWQgaXQgaXMgb25lIGNhY2hlIGxpbmUncyB3b3J0aCBvZiBoYW5kIGFkdmFuY2UsIHNv IGNvbmN1cnJlbnQKKyAqIGJhY2tlbmRzIHN3ZWVwIG5vbi1vdmVybGFwcGluZywgY2FjaGUt bGluZS1zaXplZCBydW5zIG9mIHRoZSBwb29sOyB0aGUKKyAqIGdsb2JhbCBzd2VlcCBvcmRl ciBpcyBwcmVzZXJ2ZWQgKGVhY2ggYnVmZmVyIGlzIHN0aWxsIHZpc2l0ZWQgZXhhY3RseSBv bmNlCisgKiBwZXIgcGFzcykuICBCYXRjaGluZyBpcyBlbmFibGVkIG9ubHkgb24gbXVsdGkt bm9kZSBOVU1BIGhhcmR3YXJlOyBvdGhlcndpc2UKKyAqIHRoaXMgc3RheXMgMSBhbmQgdGhl IHN3ZWVwIGlzIGJ5dGUtaWRlbnRpY2FsIHRvIHRoZSBzdG9jayBjbG9jay4KKyAqLworc3Rh dGljIHVpbnQzMiBDbG9ja1N3ZWVwQmF0Y2hTaXplID0gMTsKKwogLyoKICAqIENsb2NrU3dl ZXBUaWNrIC0gSGVscGVyIHJvdXRpbmUgZm9yIFN0cmF0ZWd5R2V0QnVmZmVyKCkKICAqCi0g KiBNb3ZlIHRoZSBjbG9jayBoYW5kIG9uZSBidWZmZXIgYWhlYWQgb2YgaXRzIGN1cnJlbnQg cG9zaXRpb24gYW5kIHJldHVybiB0aGUKLSAqIGlkIG9mIHRoZSBidWZmZXIgbm93IHVuZGVy IHRoZSBoYW5kLgorICogUmV0dXJuIHRoZSBuZXh0IGJ1ZmZlciB0byBjb25zaWRlciBmb3Ig ZXZpY3Rpb24uICBCYWNrZW5kcyBjbGFpbSBiYXRjaGVzIG9mCisgKiBjb25zZWN1dGl2ZSBi dWZmZXIgSURzIGZyb20gdGhlIHNoYXJlZCBjbG9jayBoYW5kLCB0aGVuIGl0ZXJhdGUgdGhy b3VnaAorICogdGhlbSBsb2NhbGx5IHdpdGhvdXQgZnVydGhlciBhdG9taWMgb3BlcmF0aW9u cy4gIFRoaXMgcHJlc2VydmVzIHRoZSBnbG9iYWwKKyAqIHN3ZWVwIG9yZGVyIHdoaWxlIHJl ZHVjaW5nIGNvbnRlbnRpb24gb24gdGhlIHNoYXJlZCBjb3VudGVyLgogICovCiBzdGF0aWMg aW5saW5lIHVpbnQzMgogQ2xvY2tTd2VlcFRpY2sodm9pZCkKIHsKIAl1aW50MzIJCXZpY3Rp bTsKIAotCS8qCi0JICogQXRvbWljYWxseSBtb3ZlIGhhbmQgYWhlYWQgb25lIGJ1ZmZlciAt IGlmIHRoZXJlJ3Mgc2V2ZXJhbCBwcm9jZXNzZXMKLQkgKiBkb2luZyB0aGlzLCB0aGlzIGNh biBsZWFkIHRvIGJ1ZmZlcnMgYmVpbmcgcmV0dXJuZWQgc2xpZ2h0bHkgb3V0IG9mCi0JICog YXBwYXJlbnQgb3JkZXIuCi0JICovCi0JdmljdGltID0KLQkJcGdfYXRvbWljX2ZldGNoX2Fk ZF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwgMSk7Ci0KLQlpZiAo dmljdGltID49IE5CdWZmZXJzKQorCWlmIChNeUJhdGNoUG9zID49IE15QmF0Y2hFbmQpCiAJ ewotCQl1aW50MzIJCW9yaWdpbmFsVmljdGltID0gdmljdGltOwotCi0JCS8qIGFsd2F5cyB3 cmFwIHdoYXQgd2UgbG9vayB1cCBpbiBCdWZmZXJEZXNjcmlwdG9ycyAqLwotCQl2aWN0aW0g PSB2aWN0aW0gJSBOQnVmZmVyczsKLQogCQkvKgotCQkgKiBJZiB3ZSdyZSB0aGUgb25lIHRo YXQganVzdCBjYXVzZWQgYSB3cmFwYXJvdW5kLCBmb3JjZQotCQkgKiBjb21wbGV0ZVBhc3Nl cyB0byBiZSBpbmNyZW1lbnRlZCB3aGlsZSBob2xkaW5nIHRoZSBzcGlubG9jay4gV2UKLQkJ ICogbmVlZCB0aGUgc3BpbmxvY2sgc28gU3RyYXRlZ3lTeW5jU3RhcnQoKSBjYW4gcmV0dXJu IGEgY29uc2lzdGVudAotCQkgKiB2YWx1ZSBjb25zaXN0aW5nIG9mIG5leHRWaWN0aW1CdWZm ZXIgYW5kIGNvbXBsZXRlUGFzc2VzLgorCQkgKiBDbGFpbSBhIGZyZXNoIGJhdGNoIGZyb20g dGhlIHNoYXJlZCBjbG9jayBoYW5kLiAgVGhpcyBpcyB0aGUgb25seQorCQkgKiBhdG9taWMg b3BlcmF0aW9uIHBlciBiYXRjaCwgcmVkdWNpbmcgY29udGVudGlvbiBieSB0aGUgYmF0Y2gg c2l6ZS4KIAkJICovCi0JCWlmICh2aWN0aW0gPT0gMCkKLQkJewotCQkJdWludDMyCQlleHBl Y3RlZDsKLQkJCXVpbnQzMgkJd3JhcHBlZDsKLQkJCWJvb2wJCXN1Y2Nlc3MgPSBmYWxzZTsK KwkJdWludDMyCQlzdGFydDsKKwkJdWludDMyCQliYXRjaF9zaXplID0gQ2xvY2tTd2VlcEJh dGNoU2l6ZTsKIAotCQkJZXhwZWN0ZWQgPSBvcmlnaW5hbFZpY3RpbSArIDE7CisJCXN0YXJ0 ID0gcGdfYXRvbWljX2ZldGNoX2FkZF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4dFZpY3Rp bUJ1ZmZlciwKKwkJCQkJCQkJCQliYXRjaF9zaXplKTsKIAotCQkJd2hpbGUgKCFzdWNjZXNz KQotCQkJewotCQkJCS8qCi0JCQkJICogQWNxdWlyZSB0aGUgc3BpbmxvY2sgd2hpbGUgaW5j cmVhc2luZyBjb21wbGV0ZVBhc3Nlcy4gVGhhdAotCQkJCSAqIGFsbG93cyBvdGhlciByZWFk ZXJzIHRvIHJlYWQgbmV4dFZpY3RpbUJ1ZmZlciBhbmQKLQkJCQkgKiBjb21wbGV0ZVBhc3Nl cyBpbiBhIGNvbnNpc3RlbnQgbWFubmVyIHdoaWNoIGlzIHJlcXVpcmVkIGZvcgotCQkJCSAq IFN0cmF0ZWd5U3luY1N0YXJ0KCkuICBJbiB0aGVvcnkgZGVsYXlpbmcgdGhlIGluY3JlbWVu dAotCQkJCSAqIGNvdWxkIGxlYWQgdG8gYW4gb3ZlcmZsb3cgb2YgbmV4dFZpY3RpbUJ1ZmZl cnMsIGJ1dCB0aGF0J3MKLQkJCQkgKiBoaWdobHkgdW5saWtlbHkgYW5kIHdvdWxkbid0IGJl IHBhcnRpY3VsYXJseSBoYXJtZnVsLgotCQkJCSAqLwotCQkJCVNwaW5Mb2NrQWNxdWlyZSgm U3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJCWlmIChzdGFydCA+ PSAodWludDMyKSBOQnVmZmVycykKKwkJeworCQkJc3RhcnQgPSBzdGFydCAlIE5CdWZmZXJz OwogCi0JCQkJd3JhcHBlZCA9IGV4cGVjdGVkICUgTkJ1ZmZlcnM7CisJCQkvKgorCQkJICog VGhlIGNvdW50ZXIgaGFzIGdyb3duIHBhc3QgTkJ1ZmZlcnM7IHRyeSB0byB3cmFwIGl0IGJh Y2suICBXZQorCQkJICogbXVzdCBob2xkIHRoZSBzcGlubG9jayBzbyBTdHJhdGVneVN5bmNT dGFydCgpIGNhbiByZWFkCisJCQkgKiBuZXh0VmljdGltQnVmZmVyIGFuZCBjb21wbGV0ZVBh c3NlcyBjb25zaXN0ZW50bHkuCisJCQkgKgorCQkJICogV2l0aCBiYXRjaGluZywgbXVsdGlw bGUgYmFja2VuZHMgbWF5IGVhY2ggbGFuZCBhIGZldGNoLWFkZAorCQkJICogdGhhdCByZXR1 cm5zIGEgdmFsdWUgcGFzdCBOQnVmZmVycyBpbiB0aGUgc2FtZSBwYXNzLiAgQWZ0ZXIKKwkJ CSAqIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgd2UgcmUtcmVhZCB0aGUgY291bnRlcjogaWYg YW5vdGhlcgorCQkJICogYmFja2VuZCBhbHJlYWR5IHdyYXBwZWQgaXQgYmVsb3cgTkJ1ZmZl cnMgd2UgYXJlIGRvbmUuCisJCQkgKi8KKwkJCVNwaW5Mb2NrQWNxdWlyZSgmU3RyYXRlZ3lD b250cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJCQl7CisJCQkJdWludDMyCQljdXJy ZW50OworCQkJCXVpbnQzMgkJd3JhcHBlZDsKIAotCQkJCXN1Y2Nlc3MgPSBwZ19hdG9taWNf Y29tcGFyZV9leGNoYW5nZV91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZl ciwKLQkJCQkJCQkJCQkJCQkJICZleHBlY3RlZCwgd3JhcHBlZCk7Ci0JCQkJaWYgKHN1Y2Nl c3MpCi0JCQkJCVN0cmF0ZWd5Q29udHJvbC0+Y29tcGxldGVQYXNzZXMrKzsKLQkJCQlTcGlu TG9ja1JlbGVhc2UoJlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOwor CQkJCWN1cnJlbnQgPSBwZ19hdG9taWNfcmVhZF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4 dFZpY3RpbUJ1ZmZlcik7CisJCQkJaWYgKGN1cnJlbnQgPj0gKHVpbnQzMikgTkJ1ZmZlcnMp CisJCQkJeworCQkJCQl3cmFwcGVkID0gY3VycmVudCAlIE5CdWZmZXJzOworCQkJCQlpZiAo cGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZTdHJhdGVneUNvbnRyb2wtPm5leHRW aWN0aW1CdWZmZXIsCisJCQkJCQkJCQkJCQkJICAgJmN1cnJlbnQsIHdyYXBwZWQpKQorCQkJ CQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcysrOworCQkJCX0KIAkJCX0KKwkJ CVNwaW5Mb2NrUmVsZWFzZSgmU3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9j ayk7CisJCX0KKwkJZWxzZSBpZiAoc3RhcnQgKyBiYXRjaF9zaXplID4gKHVpbnQzMikgTkJ1 ZmZlcnMpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZmV0Y2gtYWRkIHJldHVybmVkIGEgdmFs dWUgYmVsb3cgTkJ1ZmZlcnMsIGJ1dCB0aGlzIGJhdGNoCisJCQkgKiBzcGFucyB0aGUgd3Jh cCBwb2ludCAoc3RhcnQgLi4gTkJ1ZmZlcnMtMSB0aGVuIDAgLi4gayBhcmUKKwkJCSAqIGl0 ZXJhdGVkIGxvY2FsbHkgdmlhICIlIE5CdWZmZXJzIikuICBUaGF0IGNyb3NzaW5nIGlzIGEK KwkJCSAqIGNvbXBsZXRlIHBhc3MgdG9vLCBidXQgdGhlIHdyYXAtYW5kLWluY3JlbWVudCBw YXRoIGFib3ZlIG9ubHkKKwkJCSAqIGZpcmVzIHdoZW4gdGhlIGZldGNoLWFkZCByZXR1cm4g aXMgaXRzZWxmID49IE5CdWZmZXJzLCBzbworCQkJICogd2l0aG91dCB0aGlzIGl0IHdvdWxk IGdvIHVuY291bnRlZCBhbmQgY29tcGxldGVQYXNzZXMgd291bGQKKwkJCSAqIGRyaWZ0IGxv dyAoaXQgZmVlZHMgYmd3cml0ZXIgcGFjaW5nIC8gU3RyYXRlZ3lTeW5jU3RhcnQsIG5vdAor CQkJICogY29ycmVjdG5lc3MpLiAgVGhlIGJhdGNoIGlzIGNhcHBlZCBhdCBOQnVmZmVycywg c28gYSBiYXRjaAorCQkJICogc3BhbnMgdGhlIHdyYXAgYXQgbW9zdCBvbmNlOyBjb3VudCBp dCB1bmRlciB0aGUgc3BpbmxvY2sgZm9yIGEKKwkJCSAqIGNvbnNpc3RlbnQgKG5leHRWaWN0 aW1CdWZmZXIsIGNvbXBsZXRlUGFzc2VzKSBwYWlyLgorCQkJICovCisJCQlTcGluTG9ja0Fj cXVpcmUoJlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCQkJU3Ry YXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcysrOworCQkJU3BpbkxvY2tSZWxlYXNlKCZT dHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIAkJfQorCisJCU15QmF0 Y2hQb3MgPSBzdGFydDsKKwkJTXlCYXRjaEVuZCA9IHN0YXJ0ICsgYmF0Y2hfc2l6ZTsKIAl9 CisKKwl2aWN0aW0gPSBNeUJhdGNoUG9zICUgTkJ1ZmZlcnM7CisJTXlCYXRjaFBvcysrOwor CiAJcmV0dXJuIHZpY3RpbTsKIH0KIApAQCAtNDA4LDYgKzQ1MSwyOSBAQCBTdHJhdGVneUN0 bFNobWVtSW5pdCh2b2lkICphcmcpCiAKIAkvKiBObyBwZW5kaW5nIG5vdGlmaWNhdGlvbiAq LwogCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7CisKKwkvKgorCSAqIERlY2lk ZSB3aGV0aGVyIHRvIGJhdGNoIHRoZSBjbG9jayBzd2VlcC4KKwkgKgorCSAqIEJhdGNoaW5n IGNsYWltcyBhIHJ1biBvZiBjb25zZWN1dGl2ZSBidWZmZXIgSURzIHBlciBhdG9taWMgZmV0 Y2gtYWRkIHNvCisJICogY29uY3VycmVudCBiYWNrZW5kcyB0b3VjaCB0aGUgc2hhcmVkIG5l eHRWaWN0aW1CdWZmZXIgY2FjaGUgbGluZSB+MS9iYXRjaAorCSAqIGFzIG9mdGVuIC0tIGEg d2luIG9ubHkgd2hlbiB0aGF0IGxpbmUgYWN0dWFsbHkgYm91bmNlcyBhY3Jvc3Mgc29ja2V0 cywKKwkgKiBpLmUuIG9uIG11bHRpLW5vZGUgTlVNQSBoYXJkd2FyZS4gIE9uIGEgc2luZ2xl IHNvY2tldCB0aGUgYXRvbWljIGlzCisJICogYWxyZWFkeSBub2RlLWxvY2FsIGFuZCBiYXRj aGluZyB3b3VsZCBvbmx5IG1ha2UgYmFja2VuZHMgc2tpcCBhaGVhZCBmb3IKKwkgKiBubyBi ZW5lZml0LCBzbyB3ZSBmYWxsIGJhY2sgdG8gYmF0Y2ggc2l6ZSAxIHRoZXJlIChieXRlLWlk ZW50aWNhbCB0byB0aGUKKwkgKiBzdG9jayBvbmUtYnVmZmVyLWF0LWEtdGltZSBjbG9jayBz d2VlcCkuCisJICoKKwkgKiBCYXRjaCAoPiAxKSBvbmx5IHdoZW4gbGlibnVtYSByZXBvcnRz IG1vcmUgdGhhbiBvbmUgbm9kZQorCSAqIChwZ19udW1hX2dldF9tYXhfbm9kZSgpID49IDEp OyBwZ19udW1hX2luaXQoKSByZXR1cm5zIC0xIHdoZW4gTlVNQSBpcworCSAqIHVuYXZhaWxh YmxlLiAgKEJlbmNobWFya2luZyBzaG93ZWQgdGhlIHdpbiBob2xkcyB3aXRoIG9yIHdpdGhv dXQgaHVnZQorCSAqIHBhZ2VzLCBzbyBodWdlLXBhZ2UgYXZhaWxhYmlsaXR5IGlzIGludGVu dGlvbmFsbHkgbm90IHBhcnQgb2YgdGhlIGdhdGUuKQorCSAqLworCWlmIChwZ19udW1hX2lu aXQoKSAhPSAtMSAmJgorCQlwZ19udW1hX2dldF9tYXhfbm9kZSgpID49IDEpCisJCUNsb2Nr U3dlZXBCYXRjaFNpemUgPSBNaW4oUEdfQ0FDSEVfTElORV9TSVpFIC8gKHVpbnQzMikgc2l6 ZW9mKHVpbnQzMiksCisJCQkJCQkJCSAgKHVpbnQzMikgTkJ1ZmZlcnMpOworCWVsc2UKKwkJ Q2xvY2tTd2VlcEJhdGNoU2l6ZSA9IDE7CiB9CiAKIAotLSAKMi41MC4xCgo= --e43c6d4d37c2dc6715842cce56a0acb5f2fc7668 Content-Disposition: attachment; filename*0="v7-0002-Replace-the-usage_count-clock-sweep-with-a-coolin.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v7-0002-Replace-the-usage=5Fcount-clock-sweep-with-a-coolin.pa?= =?UTF-8?Q?tch?=" Content-Transfer-Encoding: base64 RnJvbSAxOGE0Y2QxYjY5MDRmODBhMjU3NGY4MzkwMzc4YjZlMWQ5ZGM5ZjgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCA2IEp1bCAyMDI2IDE5OjIyOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NyAyLzNd IFJlcGxhY2UgdGhlIHVzYWdlX2NvdW50IGNsb2NrIHN3ZWVwIHdpdGggYQogY29vbGluZy1z dGFnZSBldmljdG9yCgpSZXBsYWNlIHRoZSAwLi41IHVzYWdlX2NvdW50IGJ1ZmZlci1yZXBs YWNlbWVudCBwb2xpY3kgd2l0aCBhIGNvb2xpbmctc3RhZ2UKY2xvY2sgKHRoZSBMZWFuU3Rv cmUgLyAyUS1BMSBtb2RlbCk6IGEgYnVmZmVyIGlzIHNpbXBseSBIT1QgKHJlY2VudGx5IHVz ZWQpCm9yIENPT0wgKGFuIGV2aWN0aW9uIGNhbmRpZGF0ZSksIHdpdGggInBpbm5lZCIgYmVp bmcgdGhlIGV4aXN0aW5nIHJlZmNvdW50LgpUaGVyZSBpcyBubyBwZXItYnVmZmVyIGFjY2Vz cyBjb3VudGVyLgoKICAtIEEgZGVtYW5kLWxvYWRlZCBwYWdlIGlzIGFkbWl0dGVkIENPT0wg KHByb2JhdGlvbmFyeSksIG5vdCBIT1QuICBBIHNlY29uZAogICAgYWNjZXNzIHZpYSBQaW5C dWZmZXIgcHJvbW90ZXMgaXQgQ09PTCAtPiBIT1QgKHRoZSByZXNjdWUpLiAgU28gYSBwYWdl CiAgICB0b3VjaGVkIG9uY2UgLS0gYSBzZXF1ZW50aWFsIHNjYW4gLS0gZmlsbHMgYW5kIGRy YWlucyB0aGUgQ09PTCBzdGFnZSBhbmQKICAgIGlzIGV2aWN0ZWQgZnJvbSBpdCB3aXRob3V0 IGV2ZXIgZGlzcGxhY2luZyB0aGUgSE9UIHdvcmtpbmcgc2V0LiAgU2NhbgogICAgcmVzaXN0 YW5jZSBpcyBpbnRyaW5zaWMgdG8gdGhlIHJlcGxhY2VtZW50IGFsZ29yaXRobSwgd2hpY2gg aXMgd2hhdCBsZXRzIGEKICAgIGxhdGVyIGNvbW1pdCByZW1vdmUgdGhlIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IHJpbmcgYnVmZmVycyBlbnRpcmVseS4KCiAgLSBUaGUgZm9yZWdyb3VuZCBz d2VlcCBpbiBTdHJhdGVneUdldEJ1ZmZlcigpIHJlY2xhaW1zIGFuIGFscmVhZHktQ09PTCwK ICAgIHVucGlubmVkIGJ1ZmZlciwgcGlubmluZyBpdCB3aXRoIGEgQ0FTIHNvIGEgcmFjaW5n IFBpbkJ1ZmZlciBhbHdheXMgd2lucy4KICAgIFByb21vdGlvbiAoQ09PTCAtPiBIT1QpIGFu ZCBkZW1vdGlvbiAoSE9UIC0+IENPT0wpIGFyZSBzaW5nbGUtYml0CiAgICB0cmFuc2l0aW9u czsgb25seSB0aGUgZXZpY3Rpb24gY2xhaW0gaXMgYSBDQVMuCgogIC0gVGhlIGJhY2tncm91 bmQgd3JpdGVyIG1haW50YWlucyB0aGUgc3VwcGx5IG9mIENPT0wgdmljdGltcy4gIEFzIGl0 cyBMUlUKICAgIHNjYW4gcnVucyBhaGVhZCBvZiB0aGUgY2xvY2sgaGFuZCBpdCBkZW1vdGVz IEhPVCBidWZmZXJzIHRvIENPT0wsIHNvIHRoZQogICAgZm9yZWdyb3VuZCBmaW5kcyBhIHZp Y3RpbSBpbiBhIHNpbmdsZSBwYXNzIHJhdGhlciB0aGFuIGhhdmluZyB0byBjb29sCiAgICBi dWZmZXJzIGl0c2VsZi4gIFRoZSBkZW1vdGlvbiBpcyBkZW1hbmQtZHJpdmVuIC0tIGJvdW5k ZWQgYnkgdGhlIHByZWRpY3RlZAogICAgYWxsb2NhdGlvbiBmb3IgdGhlIG5leHQgY3ljbGUg LS0gc28gaXQgc3RhZ2VzIGp1c3QgZW5vdWdoIENPT0wgYnVmZmVycwogICAgd2l0aG91dCBj b29saW5nIHRoZSB3aG9sZSBwb29sLCBhbmQgaXQgaXMgZG9uZSB1bmRlciB0aGUgYnVmZmVy IGhlYWRlcgogICAgbG9jayB0aGUgc2NhbiBhbHJlYWR5IGhvbGRzLiAgQSBzaW5nbGUgc2Vj b25kLWNoYW5jZSByZWZlcmVuY2UgYml0CiAgICAoc2V0IGJ5IFBpbkJ1ZmZlciwgY2xlYXJl ZCBvbiB0aGUgYmd3cml0ZXIncyBmaXJzdCBwYXNzIG92ZXIgYSBIT1QgYnVmZmVyKQogICAg c3BhcmVzIGEgcmVjZW50bHktYWNjZXNzZWQgYnVmZmVyIG9uZSBjb29saW5nIHBhc3MsIGtl ZXBpbmcgdGhlIGdlbnVpbmVseQogICAgaG90IHNldCBvdXQgb2YgdGhlIENPT0wgc3RhZ2Ug dW5kZXIgc2NhbiBwcmVzc3VyZS4gIEJnQnVmZmVyU3luYyBhbHNvCiAgICB0cmFja3MgdGhl IHJldXNhYmxlLWJ1ZmZlciBkZW5zaXR5IGl0IGRpcmVjdGx5IG9ic2VydmVzIG9uIGEgc2hv cnRlcgogICAgc21vb3RoaW5nIHdpbmRvdywgc28gYSBidXJzdCBvZiBwcm9iYXRpb25hcnkv c2NhbiBDT09MIHBhZ2VzIGlzIGZvbGxvd2VkCiAgICBwcm9tcHRseSByYXRoZXIgdGhhbiBh dmVyYWdlZCBhd2F5LiAgVW5kZXIgYSBidWxrLWRpcnR5aW5nIHdvcmtsb2FkIHRoZQogICAg cGVyLWN5Y2xlIGNsZWFuLXdyaXRlIGNhcCBpcyByYWlzZWQgZnJvbSBiZ3dyaXRlcl9scnVf bWF4cGFnZXMgdG8gcHJlZGljdGVkCiAgICBkZW1hbmQgc28gdGhlIGJnd3JpdGVyIGtlZXBz IHN1cHBseWluZyBjbGVhbiB2aWN0aW1zLCByYXRoZXIgdGhhbiB0aGUKICAgIGZvcmVncm91 bmQgc3dlZXAgaGF2aW5nIHRvIGZsdXNoIGRpcnR5IHZpY3RpbXMgaW5saW5lOyBub3JtYWwg d29ya2xvYWRzLAogICAgd2hlcmUgZGVtYW5kIGlzIGJlbG93IHRoZSBjYXAsIGFyZSB1bmFm ZmVjdGVkLgoKVGhlIDQtYml0IHVzYWdlX2NvdW50IGZpZWxkIGlzIHJlaW50ZXJwcmV0ZWQg aW4gcGxhY2U6IGJpdCAwIGlzIHRoZSBIT1QvQ09PTApzdGF0ZSAoQlVGX0NPT0xTVEFURV9P TkUpLCBiaXQgMSB0aGUgcmVmZXJlbmNlIGJpdCAoQlVGX1JFRkJJVCkuICBUaGUgNjQtYml0 CmJ1ZmZlci1zdGF0ZSBsYXlvdXQgLS0gcmVmY291bnQsIGZsYWcgYW5kIGxvY2sgb2Zmc2V0 cyBhbmQgdGhlaXIgU3RhdGljQXNzZXJ0cwotLSBpcyB1bmNoYW5nZWQ7IG9ubHkgdGhlIG1l YW5pbmcgb2YgdGhlIGZpZWxkIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIHRoYXQgdG91Y2gKaXQg Y2hhbmdlLiAgQSBTdGF0aWNBc3NlcnQgcmVxdWlyZXMgdGhlIGZpZWxkIHRvIGJlIGF0IGxl YXN0IDIgYml0cyB3aWRlIHNvIGEKZnV0dXJlIHdpZHRoIGNoYW5nZSBjYW5ub3QgcHVzaCB0 aGUgcmVmZXJlbmNlIGJpdCBpbnRvIHRoZSBmbGFnIGJpdHMuCkJNX01BWF9VU0FHRV9DT1VO VCBiZWNvbWVzIEJVRl9DT09MU1RBVEVfSE9UICgxKSwgc28gdGhlIHBpbiBmYXN0IHBhdGgK c2F0dXJhdGVzIGF0IEhPVC4gIExvY2FsICh0ZW1wLXRhYmxlKSBidWZmZXJzIGdldCB0aGUg c2FtZSB0d28tc3RhdGUKdHJlYXRtZW50OyBiZWluZyBzaW5nbGUtYmFja2VuZCB0aGV5IG5l ZWQgbm8gYmFja2dyb3VuZCBjb29sZXIuCgpCZWNhdXNlIHRoZSByZWZlcmVuY2UgYml0IHNo YXJlcyB0aGUgZmllbGQsIHRoZSBmdWxsIDQtYml0IHZhbHVlIGNhbiBiZSAwLi4zOwpyZWFk ZXJzIHRoYXQgbWVhbiAidGhlIGNvb2xpbmcgc3RhdGUiIG11c3QgdXNlIEJVRl9TVEFURV9H RVRfQ09PTFNUQVRFKCksIHdoaWNoCm1hc2tzIHRvIGJpdCAwIGFuZCByZXR1cm5zIG9ubHkg MCAoQ09PTCkgb3IgMSAoSE9UKSwgbmV2ZXIgdGhlIHJhdyBmaWVsZC4KY29udHJpYi9wZ19i dWZmZXJjYWNoZSBpcyB1cGRhdGVkIGFjY29yZGluZ2x5OiBpdHMgdXNhZ2Vjb3VudCBjb2x1 bW4gYW5kIHRoZQpwZ19idWZmZXJjYWNoZV9zdW1tYXJ5IGF2ZXJhZ2UgcmVwb3J0IHRoZSBj b29saW5nIHN0YXRlICgwID0gQ09PTCwgMSA9IEhPVCksCmFuZCBwZ19idWZmZXJjYWNoZV91 c2FnZV9jb3VudHMoKSBidWNrZXRzIG9uIGl0LiAgVXNpbmcgdGhlIHJhdyA0LWJpdCBnZXR0 ZXIKdGhlcmUgd291bGQgaW5kZXggaXRzIEJNX01BWF9VU0FHRV9DT1VOVCsxID0gMi1lbGVt ZW50IGFycmF5cyB3aXRoIHZhbHVlcyB1cAp0byAzIGFuZCBvdmVycnVuIHRoZSBzdGFjazsg bWFza2luZyB0byB0aGUgY29vbGluZyBiaXQga2VlcHMgdGhlIGluZGV4IGluCnJhbmdlLiAg VGhlIHJlZmVyZW5jZSBiaXQgaXMgZGVsaWJlcmF0ZWx5IG5vdCBleHBvc2VkIGFzIHVzYWdl Y291bnQuCgpEZXBlbmRzIG9uIHRoZSBiYXRjaGVkIGNsb2NrIHN3ZWVwIGZyb20gdGhlIHBy ZXZpb3VzIGNvbW1pdC4KLS0tCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlX3BhZ2VzLmMgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jICAgICAgICAgICB8IDEyNCArKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDE0MSArKysrKysrKysrKystLS0tLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8ICAxMyAr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggICAgICAgICAgIHwgIDYz ICsrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCA4NyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl X3BhZ2VzLmMKaW5kZXggNTEwNDU1OS4uYjk0ZTZmNiAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCisrKyBiL2NvbnRyaWIvcGdf YnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwpAQCAtMTYxLDcgKzE2MSw3IEBA IHBnX2J1ZmZlcmNhY2hlX3BhZ2VzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlbGRhdGFiYXNl ID0gYnVmSGRyLT50YWcuZGJPaWQ7CiAJCWZvcmtudW0gPSBCdWZUYWdHZXRGb3JrTnVtKCZi dWZIZHItPnRhZyk7CiAJCWJsb2NrbnVtID0gYnVmSGRyLT50YWcuYmxvY2tOdW07Ci0JCXVz YWdlY291bnQgPSBCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKTsKKwkJdXNh Z2Vjb3VudCA9IEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSk7CiAJCXBpbm5p bmdfYmFja2VuZHMgPSBCVUZfU1RBVEVfR0VUX1JFRkNPVU5UKGJ1Zl9zdGF0ZSk7CiAKIAkJ aWYgKGJ1Zl9zdGF0ZSAmIEJNX0RJUlRZKQpAQCAtNjA1LDcgKzYwNSw3IEBAIHBnX2J1ZmZl cmNhY2hlX3N1bW1hcnkoUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKGJ1Zl9zdGF0ZSAmIEJN X1ZBTElEKQogCQl7CiAJCQlidWZmZXJzX3VzZWQrKzsKLQkJCXVzYWdlY291bnRfdG90YWwg Kz0gQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1Zl9zdGF0ZSk7CisJCQl1c2FnZWNvdW50 X3RvdGFsICs9IEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSk7CiAKIAkJCWlm IChidWZfc3RhdGUgJiBCTV9ESVJUWSkKIAkJCQlidWZmZXJzX2RpcnR5Kys7CkBAIC02NTUs NyArNjU1LDcgQEAgcGdfYnVmZmVyY2FjaGVfdXNhZ2VfY291bnRzKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQl1c2FnZV9jb3VudCA9IEJV Rl9TVEFURV9HRVRfVVNBR0VDT1VOVChidWZfc3RhdGUpOworCQl1c2FnZV9jb3VudCA9IEJV Rl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSk7CiAJCXVzYWdlX2NvdW50c1t1c2Fn ZV9jb3VudF0rKzsKIAogCQlpZiAoYnVmX3N0YXRlICYgQk1fRElSVFkpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDM5MDg1MjkuLjFmNWEwMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC04Myw2ICs4Myw3IEBACiAvKiBCaXRz IGluIFN5bmNPbmVCdWZmZXIncyByZXR1cm4gdmFsdWUgKi8KICNkZWZpbmUgQlVGX1dSSVRU RU4JCQkJMHgwMQogI2RlZmluZSBCVUZfUkVVU0FCTEUJCQkweDAyCisjZGVmaW5lIEJVRl9D T09MRUQJCQkJMHgwNAogCiAjZGVmaW5lIFJFTFNfQlNFQVJDSF9USFJFU0hPTEQJCTIwCiAK QEAgLTYzNCw3ICs2MzUsNyBAQCBzdGF0aWMgdm9pZCBQaW5CdWZmZXJfTG9ja2VkKEJ1ZmZl ckRlc2MgKmJ1Zik7CiBzdGF0aWMgdm9pZCBVbnBpbkJ1ZmZlcihCdWZmZXJEZXNjICpidWYp Owogc3RhdGljIHZvaWQgVW5waW5CdWZmZXJOb093bmVyKEJ1ZmZlckRlc2MgKmJ1Zik7CiBz dGF0aWMgdm9pZCBCdWZmZXJTeW5jKGludCBmbGFncyk7Ci1zdGF0aWMgaW50CVN5bmNPbmVC dWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsCitzdGF0aWMgaW50 CVN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsIGJv b2wgY29vbF9pZl9ob3QsCiAJCQkJCQkgIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQp Owogc3RhdGljIHZvaWQgV2FpdElPKEJ1ZmZlckRlc2MgKmJ1Zik7CiBzdGF0aWMgdm9pZCBB Ym9ydEJ1ZmZlcklPKEJ1ZmZlciBidWZmZXIpOwpAQCAtMjMzMyw3ICsyMzM0LDEwIEBAIEJ1 ZmZlckFsbG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3RlbmNlLCBGb3Jr TnVtYmVyIGZvcmtOdW0sCiAJICogY2hlY2twb2ludHMsIGV4Y2VwdCBmb3IgdGhlaXIgImlu aXQiIGZvcmtzLCB3aGljaCBuZWVkIHRvIGJlIHRyZWF0ZWQKIAkgKiBqdXN0IGxpa2UgcGVy bWFuZW50IHJlbGF0aW9ucy4KIAkgKi8KLQlzZXRfYml0cyB8PSBCTV9UQUdfVkFMSUQgfCBC VUZfVVNBR0VDT1VOVF9PTkU7CisJc2V0X2JpdHMgfD0gQk1fVEFHX1ZBTElEOworCS8qIEFk bWl0IHRoZSBuZXdseSBsb2FkZWQgcGFnZSBDT09MIChwcm9iYXRpb24pOyBhIHNlY29uZCBh Y2Nlc3MgdmlhCisJICogUGluQnVmZmVyIHByb21vdGVzIGl0IHRvIEhPVC4gIFRoaXMgaXMg d2hhdCBtYWtlcyBhIG9uZS10b3VjaCBzY2FuCisJICogc2VsZi1ldmljdGluZyAtLSBzZWUg dGhlIGNvb2xpbmctc3RhdGUgbm90ZXMgaW4gYnVmX2ludGVybmFscy5oLiAqLwogCWlmIChy ZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQgfHwgZm9ya051bSA9 PSBJTklUX0ZPUktOVU0pCiAJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsKIApAQCAtMzAw Miw3ICszMDA2LDkgQEAgRXh0ZW5kQnVmZmVyZWRSZWxTaGFyZWQoQnVmZmVyTWFuYWdlclJl bGF0aW9uIGJtciwKIAogCQkJdmljdGltX2J1Zl9oZHItPnRhZyA9IHRhZzsKIAotCQkJc2V0 X2JpdHMgfD0gQk1fVEFHX1ZBTElEIHwgQlVGX1VTQUdFQ09VTlRfT05FOworCQkJc2V0X2Jp dHMgfD0gQk1fVEFHX1ZBTElEOworCQkJLyogQWRtaXQgQ09PTCAocHJvYmF0aW9uKTsgc2Vl IHRoZSBjb21tZW50IGF0IHRoZSBvdGhlciBhZG1pc3Npb24KKwkJCSAqIHNpdGUgYW5kIHRo ZSBjb29saW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8KIAkJCWlmIChi bXIucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIHx8IGZvcmsg PT0gSU5JVF9GT1JLTlVNKQogCQkJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsKIApAQCAt MzMzMiwyMSArMzMzOCwxNyBAQCBQaW5CdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCS8qIGluY3JlYXNlIHJlZmNvdW50ICovCiAJ CQlidWZfc3RhdGUgKz0gQlVGX1JFRkNPVU5UX09ORTsKIAotCQkJaWYgKHN0cmF0ZWd5ID09 IE5VTEwpCi0JCQl7Ci0JCQkJLyogRGVmYXVsdCBjYXNlOiBpbmNyZWFzZSB1c2FnZWNvdW50 IHVubGVzcyBhbHJlYWR5IG1heC4gKi8KLQkJCQlpZiAoQlVGX1NUQVRFX0dFVF9VU0FHRUNP VU5UKGJ1Zl9zdGF0ZSkgPCBCTV9NQVhfVVNBR0VfQ09VTlQpCi0JCQkJCWJ1Zl9zdGF0ZSAr PSBCVUZfVVNBR0VDT1VOVF9PTkU7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyoKLQkJ CQkgKiBSaW5nIGJ1ZmZlcnMgc2hvdWxkbid0IGV2aWN0IG90aGVycyBmcm9tIHBvb2wuICBU aHVzIHdlCi0JCQkJICogZG9uJ3QgbWFrZSB1c2FnZWNvdW50IG1vcmUgdGhhbiAxLgotCQkJ CSAqLwotCQkJCWlmIChCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKSA9PSAw KQotCQkJCQlidWZfc3RhdGUgKz0gQlVGX1VTQUdFQ09VTlRfT05FOwotCQkJfQorCQkJLyoK KwkJCSAqIEFjY2Vzc2luZyBhIHJlc2lkZW50IGJ1ZmZlciBwcm9tb3RlcyBpdCB0byBIT1Qg KHRoZSAyUSByZXNjdWUpOgorCQkJICogYSBwYWdlIGxvYWRlZCBDT09MIG9uIHByb2JhdGlv biBiZWNvbWVzIHBhcnQgb2YgdGhlIGhvdCB3b3JraW5nCisJCQkgKiBzZXQgb24gaXRzIHNl Y29uZCB0b3VjaC4gIEJNX01BWF9VU0FHRV9DT1VOVCBpcworCQkJICogQlVGX0NPT0xTVEFU RV9IT1QgKDEpLCBzbyB0aGlzIHNhdHVyYXRlcyBhdCBIT1QgYW5kIG5ldmVyCisJCQkgKiBv dmVyZmxvd3MgdGhlIGZpZWxkLiAgV2UgYWxzbyBzZXQgdGhlIHNlY29uZC1jaGFuY2UgcmVm IGJpdCBzbworCQkJICogdGhlIGJnd3JpdGVyJ3MgbmV4dCBjb29saW5nIHBhc3Mgc3BhcmVz IHRoaXMgcmVjZW50bHktdXNlZCBidWZmZXIuCisJCQkgKi8KKwkJCWlmIChCVUZfU1RBVEVf R0VUX0NPT0xTVEFURShidWZfc3RhdGUpIDwgQlVGX0NPT0xTVEFURV9IT1QpCisJCQkJYnVm X3N0YXRlICs9IEJVRl9DT09MU1RBVEVfT05FOworCQkJYnVmX3N0YXRlIHw9IEJVRl9SRUZC SVQ7CiAKIAkJCWlmIChwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91NjQoJmJ1Zi0+c3Rh dGUsICZvbGRfYnVmX3N0YXRlLAogCQkJCQkJCQkJCQkgICBidWZfc3RhdGUpKQpAQCAtMzc4 NSw3ICszNzg3LDcgQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJCSAqLwogCQlpZiAocGdf YXRvbWljX3JlYWRfdTY0KCZidWZIZHItPnN0YXRlKSAmIEJNX0NIRUNLUE9JTlRfTkVFREVE KQogCQl7Ci0JCQlpZiAoU3luY09uZUJ1ZmZlcihidWZfaWQsIGZhbHNlLCAmd2JfY29udGV4 dCkgJiBCVUZfV1JJVFRFTikKKwkJCWlmIChTeW5jT25lQnVmZmVyKGJ1Zl9pZCwgZmFsc2Us IGZhbHNlLCAmd2JfY29udGV4dCkgJiBCVUZfV1JJVFRFTikKIAkJCXsKIAkJCQlUUkFDRV9Q T1NUR1JFU1FMX0JVRkZFUl9TWU5DX1dSSVRURU4oYnVmX2lkKTsKIAkJCQlQZW5kaW5nQ2hl Y2twb2ludGVyU3RhdHMuYnVmZmVyc193cml0dGVuKys7CkBAIC0zODc2LDYgKzM4NzgsMTkg QEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJZmxvYXQJ CXNtb290aGluZ19zYW1wbGVzID0gMTY7CiAJZmxvYXQJCXNjYW5fd2hvbGVfcG9vbF9taWxs aXNlY29uZHMgPSAxMjAwMDAuMDsKIAorCS8qCisJICogVGhlIGNsZWFuZXIgc2NhbiBkaXJl Y3RseSBvYnNlcnZlcyB0aGUgcmV1c2FibGUgKENPT0wsIHVucGlubmVkKSBidWZmZXIKKwkg KiBkZW5zaXR5IG92ZXIgdGhlIHJlZ2lvbiBpdCB3YWxrcywgd2hpY2ggLS0gd2l0aCB0aGUg Y29vbGluZy1zdGFnZQorCSAqIGV2aWN0b3IgLS0gaXMgZXhhY3RseSB0aGUgc3dlZXAncyB2 aWN0aW0gcHJlZGljYXRlLiAgVGhhdCBvYnNlcnZhdGlvbiBpcworCSAqIGdyb3VuZCB0cnV0 aCBmb3IgdGhlIGJ1ZmZlcnMgYWJvdXQgdG8gYmUgcmV1c2VkLCB3aGVyZWFzIHRoZSBzdHJh dGVneQorCSAqIHNjYW4ncyBwb3NpdGlvbmFsIHByb3h5IChzdHJhdGVneV9kZWx0YS9yZWNl bnRfYWxsb2MpIGJsdXJzIGEgcG9vbCB3aG9zZQorCSAqIENPT0wgcG9wdWxhdGlvbiBpcyBz cGF0aWFsbHkgY2x1c3RlcmVkIChhIHNjYW4gYnVyc3QgbGVhdmVzIHdob2xlIHJlZ2lvbnMK KwkgKiBDT09MLCBob3QgT0xUUCByZWdpb25zIG5vdCkuICBTbyB3ZSBsZXQgdGhlIGNsZWFu ZXIncyBvd24gc2FtcGxlIGFkYXB0IG9uCisJICogYSBzaG9ydGVyIHdpbmRvdyB0aGFuIHRo ZSBzdHJhdGVneSBwcm94eSwgdHJhY2tpbmcgYSBidXJzdCBvZgorCSAqIHByb2JhdGlvbmFy eS9zY2FuIENPT0wgcGFnZXMgd2l0aGluIGEgY3ljbGUgb3IgdHdvIGluc3RlYWQgb2YgbGFn Z2luZyBpdC4KKwkgKi8KKwlmbG9hdAkJY2xlYW5lcl9zbW9vdGhpbmdfc2FtcGxlcyA9IDQ7 CisKIAkvKiBVc2VkIHRvIGNvbXB1dGUgaG93IGZhciB3ZSBzY2FuIGFoZWFkICovCiAJbG9u ZwkJc3RyYXRlZ3lfZGVsdGE7CiAJaW50CQkJYnVmc190b19sYXA7CkBAIC0zODg5LDYgKzM5 MDQsNyBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAlp bnQJCQludW1fdG9fc2NhbjsKIAlpbnQJCQludW1fd3JpdHRlbjsKIAlpbnQJCQlyZXVzYWJs ZV9idWZmZXJzOworCWludAkJCXdyaXRlX2xpbWl0OwogCiAJLyogVmFyaWFibGVzIGZvciBm aW5hbCBzbW9vdGhlZF9kZW5zaXR5IHVwZGF0ZSAqLwogCWxvbmcJCW5ld19zdHJhdGVneV9k ZWx0YTsKQEAgLTQwNjMsOCArNDA3OSwyMiBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29u dGV4dCAqd2JfY29udGV4dCkKIAkgKiBOb3cgd3JpdGUgb3V0IGRpcnR5IHJldXNhYmxlIGJ1 ZmZlcnMsIHdvcmtpbmcgZm9yd2FyZCBmcm9tIHRoZQogCSAqIG5leHRfdG9fY2xlYW4gcG9p bnQsIHVudGlsIHdlIGhhdmUgbGFwcGVkIHRoZSBzdHJhdGVneSBzY2FuLCBvciBjbGVhbmVk CiAJICogZW5vdWdoIGJ1ZmZlcnMgdG8gbWF0Y2ggb3VyIGVzdGltYXRlIG9mIHRoZSBuZXh0 IGN5Y2xlJ3MgYWxsb2NhdGlvbgotCSAqIHJlcXVpcmVtZW50cywgb3IgaGl0IHRoZSBiZ3dy aXRlcl9scnVfbWF4cGFnZXMgbGltaXQuCi0JICovCisJICogcmVxdWlyZW1lbnRzLCBvciBo aXQgdGhlIHdyaXRlIGxpbWl0LgorCSAqCisJICogVGhlIHBlci1jeWNsZSB3cml0ZSBjYXAg aXMgbm9ybWFsbHkgYmd3cml0ZXJfbHJ1X21heHBhZ2VzLiAgQnV0IHVuZGVyIGEKKwkgKiBi dWxrLWRpcnR5aW5nIHdvcmtsb2FkIChDT1BZLCBidWxrIFVQREFURSwgVkFDVVVNKSB0aGUg cG9vbCBmaWxscyB3aXRoCisJICogZGlydHkgQ09PTCBidWZmZXJzIGZhc3RlciB0aGFuIHRo YXQgZml4ZWQgY2FwIGNhbiBjbGVhbiwgc28gdGhlCisJICogZm9yZWdyb3VuZCBjbG9jayBz d2VlcCBpcyBmb3JjZWQgdG8gZmx1c2ggZGlydHkgdmljdGltcyBpbmxpbmUgLS0gdGhlCisJ ICogdmVyeSBjb3N0IHRoZSBjb29saW5nLXN0YWdlIGV2aWN0b3IgaXMgbWVhbnQgdG8ga2Vl cCBvZmYgdGhlIGNyaXRpY2FsCisJICogcGF0aC4gIFdoZW4gcHJlZGljdGVkIGRlbWFuZCAo dXBjb21pbmdfYWxsb2NfZXN0KSBleGNlZWRzIHRoZSBmaXhlZCBjYXAsCisJICogcmFpc2Ug dGhlIGxpbWl0IHRvIG1lZXQgZGVtYW5kIHNvIHRoZSBiZ3dyaXRlciBzdGF5cyBhaGVhZCBh bmQgc3VwcGxpZXMKKwkgKiBjbGVhbiB2aWN0aW1zLiAgVGhpcyBzdGF5cyBib3VuZGVkIChi eSBkZW1hbmQgYW5kIGJ5IGxhcHBpbmcgdGhlCisJICogc3RyYXRlZ3kgcG9pbnQpLCBzbyBp dCBjYW5ub3QgcnVuIGF3YXksIGFuZCBub3JtYWwgd29ya2xvYWRzIGFyZQorCSAqIHVuYWZm ZWN0ZWQgYmVjYXVzZSB0aGVyZSB1cGNvbWluZ19hbGxvY19lc3QgPD0gYmd3cml0ZXJfbHJ1 X21heHBhZ2VzLgorCSAqLworCXdyaXRlX2xpbWl0ID0gYmd3cml0ZXJfbHJ1X21heHBhZ2Vz OworCWlmICh1cGNvbWluZ19hbGxvY19lc3QgPiB3cml0ZV9saW1pdCkKKwkJd3JpdGVfbGlt aXQgPSB1cGNvbWluZ19hbGxvY19lc3Q7CiAKIAludW1fdG9fc2NhbiA9IGJ1ZnNfdG9fbGFw OwogCW51bV93cml0dGVuID0gMDsKQEAgLTQwNzMsNyArNDEwMyw3IEBAIEJnQnVmZmVyU3lu YyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0KQogCS8qIEV4ZWN1dGUgdGhlIExSVSBz Y2FuICovCiAJd2hpbGUgKG51bV90b19zY2FuID4gMCAmJiByZXVzYWJsZV9idWZmZXJzIDwg dXBjb21pbmdfYWxsb2NfZXN0KQogCXsKLQkJaW50CQkJc3luY19zdGF0ZSA9IFN5bmNPbmVC dWZmZXIobmV4dF90b19jbGVhbiwgdHJ1ZSwKKwkJaW50CQkJc3luY19zdGF0ZSA9IFN5bmNP bmVCdWZmZXIobmV4dF90b19jbGVhbiwgdHJ1ZSwgdHJ1ZSwKIAkJCQkJCQkJCQkJICAgd2Jf Y29udGV4dCk7CiAKIAkJaWYgKCsrbmV4dF90b19jbGVhbiA+PSBOQnVmZmVycykKQEAgLTQw ODYsNyArNDExNiw3IEBAIEJnQnVmZmVyU3luYyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250 ZXh0KQogCQlpZiAoc3luY19zdGF0ZSAmIEJVRl9XUklUVEVOKQogCQl7CiAJCQlyZXVzYWJs ZV9idWZmZXJzKys7Ci0JCQlpZiAoKytudW1fd3JpdHRlbiA+PSBiZ3dyaXRlcl9scnVfbWF4 cGFnZXMpCisJCQlpZiAoKytudW1fd3JpdHRlbiA+PSB3cml0ZV9saW1pdCkKIAkJCXsKIAkJ CQlQZW5kaW5nQmdXcml0ZXJTdGF0cy5tYXh3cml0dGVuX2NsZWFuKys7CiAJCQkJYnJlYWs7 CkBAIC00MTIxLDcgKzQxNTEsNyBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29udGV4dCAq d2JfY29udGV4dCkKIAl7CiAJCXNjYW5zX3Blcl9hbGxvYyA9IChmbG9hdCkgbmV3X3N0cmF0 ZWd5X2RlbHRhIC8gKGZsb2F0KSBuZXdfcmVjZW50X2FsbG9jOwogCQlzbW9vdGhlZF9kZW5z aXR5ICs9IChzY2Fuc19wZXJfYWxsb2MgLSBzbW9vdGhlZF9kZW5zaXR5KSAvCi0JCQlzbW9v dGhpbmdfc2FtcGxlczsKKwkJCWNsZWFuZXJfc21vb3RoaW5nX3NhbXBsZXM7CiAKICNpZmRl ZiBCR1dfREVCVUcKIAkJZWxvZyhERUJVRzIsICJiZ3dyaXRlcjogY2xlYW5lciBkZW5zaXR5 IGFsbG9jPSV1IHNjYW49JWxkIGRlbnNpdHk9JS4yZiBuZXcgc21vb3RoZWQ9JS4yZiIsCkBA IC00MTQwLDE2ICs0MTcwLDI2IEBAIEJnQnVmZmVyU3luYyhXcml0ZWJhY2tDb250ZXh0ICp3 Yl9jb250ZXh0KQogICogSWYgc2tpcF9yZWNlbnRseV91c2VkIGlzIHRydWUsIHdlIGRvbid0 IHdyaXRlIGN1cnJlbnRseS1waW5uZWQgYnVmZmVycywgbm9yCiAgKiBidWZmZXJzIG1hcmtl ZCByZWNlbnRseSB1c2VkLCBhcyB0aGVzZSBhcmUgbm90IHJlcGxhY2VtZW50IGNhbmRpZGF0 ZXMuCiAgKgorICogSWYgY29vbF9pZl9ob3QgaXMgdHJ1ZSAodGhlIGJnd3JpdGVyJ3MgTFJV IHNjYW4pLCBhbiB1bnBpbm5lZCBIT1QgYnVmZmVyIGlzCisgKiBkZW1vdGVkIEhPVCAtPiBD T09MIGFzIHdlIHBhc3MgaXQsIHByZS1zdGFnaW5nIGV2aWN0aW9uIGNhbmRpZGF0ZXMgc28g dGhlCisgKiBmb3JlZ3JvdW5kIGNsb2NrIHN3ZWVwIGZpbmRzIGEgQ09PTCB2aWN0aW0gaW4g YSBzaW5nbGUgcGFzcyBpbnN0ZWFkIG9mCisgKiBoYXZpbmcgdG8gY29vbCBidWZmZXJzIGl0 c2VsZiAoZm9yY2VfY29vbCkuICBUaGUgZGVtb3Rpb24gaXMgZG9uZSB1bmRlciB0aGUKKyAq IGJ1ZmZlciBoZWFkZXIgbG9jayB3ZSBhbHJlYWR5IGhvbGQsIHNvIGl0IG5lZWRzIG5vIENB UyBhbmQgY2Fubm90IHJhY2UgYQorICogY29uY3VycmVudCBkZW1vdGlvbi4gIEEgY29uY3Vy cmVudCBQaW5CdWZmZXIgcHJvbW90ZXMgaXQgYmFjayB0byBIT1QsIHdoaWNoCisgKiBpcyB0 aGUgaW50ZW5kZWQgMlEgYmVoYXZpb3IgKGEgcmUtYWNjZXNzZWQgYnVmZmVyIGlzIHJlc2N1 ZWQpLgorICoKICAqIFJldHVybnMgYSBiaXRtYXNrIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2lu ZyBmbGFnIGJpdHM6CiAgKglCVUZfV1JJVFRFTjogd2Ugd3JvdGUgdGhlIGJ1ZmZlci4KICAq CUJVRl9SRVVTQUJMRTogYnVmZmVyIGlzIGF2YWlsYWJsZSBmb3IgcmVwbGFjZW1lbnQsIGll LCBpdCBoYXMKLSAqCQlwaW4gY291bnQgMCBhbmQgdXNhZ2UgY291bnQgMC4KKyAqCQlwaW4g Y291bnQgMCBhbmQgaXMgQ09PTCAoYW4gZXZpY3Rpb24gY2FuZGlkYXRlKS4KKyAqCUJVRl9D T09MRUQ6IHdlIGRlbW90ZWQgdGhpcyBidWZmZXIgSE9UIC0+IENPT0wgdGhpcyBjYWxsLgog ICoKICAqIChCVUZfV1JJVFRFTiBjb3VsZCBiZSBzZXQgaW4gZXJyb3IgaWYgRmx1c2hCdWZm ZXIgZmluZHMgdGhlIGJ1ZmZlciBjbGVhbgogICogYWZ0ZXIgbG9ja2luZyBpdCwgYnV0IHdl IGRvbid0IGNhcmUgYWxsIHRoYXQgbXVjaC4pCiAgKi8KIHN0YXRpYyBpbnQKLVN5bmNPbmVC dWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsIFdyaXRlYmFja0Nv bnRleHQgKndiX2NvbnRleHQpCitTeW5jT25lQnVmZmVyKGludCBidWZfaWQsIGJvb2wgc2tp cF9yZWNlbnRseV91c2VkLCBib29sIGNvb2xfaWZfaG90LAorCQkJICBXcml0ZWJhY2tDb250 ZXh0ICp3Yl9jb250ZXh0KQogewogCUJ1ZmZlckRlc2MgKmJ1ZkhkciA9IEdldEJ1ZmZlckRl c2NyaXB0b3IoYnVmX2lkKTsKIAlpbnQJCQlyZXN1bHQgPSAwOwpAQCAtNDE3MSw4ICs0MjEx LDM4IEBAIFN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3Vz ZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJICovCiAJYnVmX3N0YXRlID0g TG9ja0J1ZkhkcihidWZIZHIpOwogCisJLyoKKwkgKiBQcmUtY29vbCB3aXRoIGEgc2Vjb25k IGNoYW5jZTogaWYgYXNrZWQsIGFjdCBvbiBhbiB1bnBpbm5lZCBIT1QgYnVmZmVyLgorCSAq IElmIGl0cyByZWYgYml0IGlzIHNldCAoYWNjZXNzZWQgc2luY2Ugb3VyIGxhc3QgcGFzcyks IGNsZWFyIHRoZSByZWYgYml0CisJICogYW5kIGxlYXZlIGl0IEhPVCAtLSBhIHJlY2VudGx5 LXVzZWQgYnVmZmVyIGVhcm5zIG9uZSByZXByaWV2ZSwga2VlcGluZworCSAqIHRoZSBob3Qg d29ya2luZyBzZXQgb3V0IG9mIHRoZSBDT09MIHN0YWdlIHVuZGVyIHNjYW4gcHJlc3N1cmUu ICBPbmx5IGEKKwkgKiBIT1QgYnVmZmVyIHdob3NlIHJlZiBiaXQgaXMgYWxyZWFkeSBjbGVh ciBpcyBkZW1vdGVkIEhPVCAtPiBDT09MLAorCSAqIHByZS1zdGFnaW5nIGl0IGFzIGFuIGV2 aWN0aW9uIGNhbmRpZGF0ZSBmb3IgdGhlIGZvcmVncm91bmQgc3dlZXAuICBXZQorCSAqIGhv bGQgdGhlIGhlYWRlciBsb2NrLCBzbyBlYWNoIHRyYW5zaXRpb24gaXMgYSBwbGFpbiBtYXNr ZWQgc3RvcmUgYXBwbGllZAorCSAqIGF0b21pY2FsbHkgYnkgVW5sb2NrQnVmSGRyRXh0OyB3 ZSByZS1sb2NrIHRvIGNvbnRpbnVlIHRoZSBkaXJ0eS13cml0ZQorCSAqIGluc3BlY3Rpb24g YmVsb3cuCisJICovCisJaWYgKGNvb2xfaWZfaG90ICYmCisJCUJVRl9TVEFURV9HRVRfUkVG Q09VTlQoYnVmX3N0YXRlKSA9PSAwICYmCisJCUJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1 Zl9zdGF0ZSkgIT0gQlVGX0NPT0xTVEFURV9DT09MKQorCXsKKwkJaWYgKEJVRl9TVEFURV9H RVRfUkVGQklUKGJ1Zl9zdGF0ZSkpCisJCXsKKwkJCS8qIHNlY29uZCBjaGFuY2U6IGNvbnN1 bWUgdGhlIHJlZiBiaXQsIHN0YXkgSE9UICovCisJCQlVbmxvY2tCdWZIZHJFeHQoYnVmSGRy LCBidWZfc3RhdGUsIDAsIEJVRl9SRUZCSVQsIDApOworCQkJYnVmX3N0YXRlID0gTG9ja0J1 ZkhkcihidWZIZHIpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogbm90IHJlLWFjY2Vzc2Vk IHNpbmNlIGxhc3QgcGFzczogZGVtb3RlIHRvIENPT0wgKi8KKwkJCVVubG9ja0J1ZkhkckV4 dChidWZIZHIsIGJ1Zl9zdGF0ZSwgMCwgQlVGX1VTQUdFQ09VTlRfTUFTSywgMCk7CisJCQli dWZfc3RhdGUgPSBMb2NrQnVmSGRyKGJ1Zkhkcik7CisJCQlyZXN1bHQgfD0gQlVGX0NPT0xF RDsKKwkJfQorCX0KKwogCWlmIChCVUZfU1RBVEVfR0VUX1JFRkNPVU5UKGJ1Zl9zdGF0ZSkg PT0gMCAmJgotCQlCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKSA9PSAwKQor CQlCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZfc3RhdGUpID09IEJVRl9DT09MU1RBVEVf Q09PTCkKIAl7CiAJCXJlc3VsdCB8PSBCVUZfUkVVU0FCTEU7CiAJfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggNDYxMDRiMy4uZThjZjEzZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC00OSw2ICs0OSwxNiBAQCB0 eXBlZGVmIHN0cnVjdAogCXVpbnQzMgkJY29tcGxldGVQYXNzZXM7IC8qIENvbXBsZXRlIGN5 Y2xlcyBvZiB0aGUgY2xvY2stc3dlZXAgKi8KIAlwZ19hdG9taWNfdWludDMyIG51bUJ1ZmZl ckFsbG9jczsJLyogQnVmZmVycyBhbGxvY2F0ZWQgc2luY2UgbGFzdCByZXNldCAqLwogCisJ LyoKKwkgKiBOdW1iZXIgb2YgY2xvY2staGFuZCB2YWx1ZXMgYSBiYWNrZW5kIGNsYWltcyBw ZXIgYXRvbWljIGZldGNoLWFkZC4KKwkgKiBDb21wdXRlZCBvbmNlIGF0IHN0YXJ0dXAgKHNl ZSBTdHJhdGVneUN0bFNobWVtSW5pdCkuICBLZXB0IGluIHNoYXJlZAorCSAqIG1lbW9yeSBy YXRoZXIgdGhhbiBhIGJhY2tlbmQtbG9jYWwgc3RhdGljIHNvIHRoYXQgRVhFQ19CQUNLRU5E IGNoaWxkcmVuCisJICogKHdoaWNoIGRvIG5vdCBpbmhlcml0IHRoZSBwb3N0bWFzdGVyJ3Mg c3RhdGljcykgc2VlIHRoZSBzYW1lIHZhbHVlOyBhCisJICogYmFja2VuZC1sb2NhbCBjb3B5 IHdvdWxkIHNpbGVudGx5IHJlc2V0IHRvIDEgdGhlcmUsIGRpc2FibGluZyBiYXRjaGluZwor CSAqIG9uIFdpbmRvd3MuCisJICovCisJdWludDMyCQliYXRjaFNpemU7CisKIAkvKgogCSAq IEJnd29ya2VyIHByb2Nlc3MgdG8gYmUgbm90aWZpZWQgdXBvbiBhY3Rpdml0eSBvciAtMSBp ZiBub25lLiBTZWUKIAkgKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyLgpAQCAtMTEzLDE3ICsx MjMsNiBAQCBzdGF0aWMgdm9pZCBBZGRCdWZmZXJUb1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRl Z3kgc3RyYXRlZ3ksCiBzdGF0aWMgdWludDMyIE15QmF0Y2hQb3MgPSAwOwogc3RhdGljIHVp bnQzMiBNeUJhdGNoRW5kID0gMDsKIAotLyoKLSAqIE51bWJlciBvZiBjbG9jay1oYW5kIHZh bHVlcyBhIGJhY2tlbmQgY2xhaW1zIHBlciBhdG9taWMgZmV0Y2gtYWRkLAotICogY29tcHV0 ZWQgb25jZSBhdCBzdGFydHVwIChzZWUgU3RyYXRlZ3lDdGxTaG1lbUluaXQpLiAgV2hlbiBi YXRjaGluZyBpcwotICogZW5hYmxlZCBpdCBpcyBvbmUgY2FjaGUgbGluZSdzIHdvcnRoIG9m IGhhbmQgYWR2YW5jZSwgc28gY29uY3VycmVudAotICogYmFja2VuZHMgc3dlZXAgbm9uLW92 ZXJsYXBwaW5nLCBjYWNoZS1saW5lLXNpemVkIHJ1bnMgb2YgdGhlIHBvb2w7IHRoZQotICog Z2xvYmFsIHN3ZWVwIG9yZGVyIGlzIHByZXNlcnZlZCAoZWFjaCBidWZmZXIgaXMgc3RpbGwg dmlzaXRlZCBleGFjdGx5IG9uY2UKLSAqIHBlciBwYXNzKS4gIEJhdGNoaW5nIGlzIGVuYWJs ZWQgb25seSBvbiBtdWx0aS1ub2RlIE5VTUEgaGFyZHdhcmU7IG90aGVyd2lzZQotICogdGhp cyBzdGF5cyAxIGFuZCB0aGUgc3dlZXAgaXMgYnl0ZS1pZGVudGljYWwgdG8gdGhlIHN0b2Nr IGNsb2NrLgotICovCi1zdGF0aWMgdWludDMyIENsb2NrU3dlZXBCYXRjaFNpemUgPSAxOwot CiAvKgogICogQ2xvY2tTd2VlcFRpY2sgLSBIZWxwZXIgcm91dGluZSBmb3IgU3RyYXRlZ3lH ZXRCdWZmZXIoKQogICoKQEAgLTE0NCw3ICsxNDMsNyBAQCBDbG9ja1N3ZWVwVGljayh2b2lk KQogCQkgKiBhdG9taWMgb3BlcmF0aW9uIHBlciBiYXRjaCwgcmVkdWNpbmcgY29udGVudGlv biBieSB0aGUgYmF0Y2ggc2l6ZS4KIAkJICovCiAJCXVpbnQzMgkJc3RhcnQ7Ci0JCXVpbnQz MgkJYmF0Y2hfc2l6ZSA9IENsb2NrU3dlZXBCYXRjaFNpemU7CisJCXVpbnQzMgkJYmF0Y2hf c2l6ZSA9IFN0cmF0ZWd5Q29udHJvbC0+YmF0Y2hTaXplOwogCiAJCXN0YXJ0ID0gcGdfYXRv bWljX2ZldGNoX2FkZF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwK IAkJCQkJCQkJCQliYXRjaF9zaXplKTsKQEAgLTIyOSw2ICsyMjgsNyBAQCBTdHJhdGVneUdl dEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3Rh dGUsIGJvb2wgKmZyb21fcgogCUJ1ZmZlckRlc2MgKmJ1ZjsKIAlpbnQJCQliZ3dwcm9jbm87 CiAJaW50CQkJdHJ5Y291bnRlcjsKKwlib29sCQlmb3JjZV9jb29sOwogCiAJKmZyb21fcmlu ZyA9IGZhbHNlOwogCkBAIC0yNzksMTIgKzI3OSwzMiBAQCBTdHJhdGVneUdldEJ1ZmZlcihC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wg KmZyb21fcgogCSAqLwogCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZTdHJhdGVneUNvbnRy b2wtPm51bUJ1ZmZlckFsbG9jcywgMSk7CiAKLQkvKiBVc2UgdGhlICJjbG9jayBzd2VlcCIg YWxnb3JpdGhtIHRvIGZpbmQgYSBmcmVlIGJ1ZmZlciAqLworCS8qCisJICogVXNlIHRoZSBj b29saW5nLXN0YWdlIGNsb2NrIHN3ZWVwIHRvIGZpbmQgYSB2aWN0aW0uCisJICoKKwkgKiBB IGJ1ZmZlciBpcyBIT1QgKHJlY2VudGx5IHVzZWQpIG9yIENPT0wgKGFuIGV2aWN0aW9uIGNh bmRpZGF0ZSkuICBXZQorCSAqIHByZWZlciB0byByZWNsYWltIGFuIGFscmVhZHktQ09PTCBi dWZmZXIgYW5kIGRlbW90ZSBhIEhPVCBidWZmZXIgdG8KKwkgKiBDT09MIG9ubHkgb25jZSBh IGZ1bGwgc3dlZXAgaGFzIGZvdW5kIG5vIENPT0wgdmljdGltIChmb3JjZV9jb29sKSAtLSBz bworCSAqIGFuIGFidW5kYW50IHN1cHBseSBvZiBDT09ML3Byb2JhdGlvbmFyeSBwYWdlcyAo ZS5nLiBhIHNjYW4pIGlzIGRyYWluZWQKKwkgKiBiZWZvcmUgdGhlIGhvdCB3b3JraW5nIHNl dCBpcyBjb29sZWQuICBOZXdseSBsb2FkZWQgcGFnZXMgYXJlIGFkbWl0dGVkCisJICogQ09P TCAoc2VlIEJ1ZmZlckFsbG9jKSwgc28gc2NhbiByZXNpc3RhbmNlIGZhbGxzIG91dCBvZiB0 aGUgYWxnb3JpdGhtLgorCSAqCisJICogdHJ5Y291bnRlciBib3VuZHMgdGhlIHNlYXJjaC4g IEFueSB0aWNrIHRoYXQgZG9lcyBub3QgcHJvZHVjZSBhIHZpY3RpbQorCSAqIGFuZCBkb2Vz IG5vdCBtYWtlIHByb2dyZXNzIC0tIGEgcGlubmVkIGJ1ZmZlciwgb3IgYSBIT1QgYnVmZmVy IHNraXBwZWQKKwkgKiBvbiBhIHByZWZlci1DT09MIHBhc3MgLS0gZGVjcmVtZW50cyBpdC4g IENvb2xpbmcgYSBIT1QgYnVmZmVyICh1bmRlcgorCSAqIGZvcmNlX2Nvb2wpIGlzIHByb2dy ZXNzIGFuZCByZXNldHMgaXQuICBXaGVuIGEgZnVsbCBwYXNzIChOQnVmZmVycykKKwkgKiBt YWtlcyBubyBwcm9ncmVzcyB3ZSBlc2NhbGF0ZSB0byBmb3JjZV9jb29sIHNvIHRoZSBuZXh0 IHBhc3MgY29vbHMgSE9UCisJICogYnVmZmVycyBpbnRvIHZpY3RpbXM7IGlmIGEgZm9yY2Vf Y29vbCBwYXNzIEFMU08gbWFrZXMgbm8gcHJvZ3Jlc3MgZXZlcnkKKwkgKiBidWZmZXIgaXMg cGlubmVkIGFuZCB3ZSBmYWlsLCBtYXRjaGluZyB0aGUgc3RvY2sgIm5vIHVucGlubmVkIGJ1 ZmZlcnMKKwkgKiBhdmFpbGFibGUiIGNvbnRyYWN0LgorCSAqLwogCXRyeWNvdW50ZXIgPSBO QnVmZmVyczsKKwlmb3JjZV9jb29sID0gZmFsc2U7CiAJZm9yICg7OykKIAl7CiAJCXVpbnQ2 NAkJb2xkX2J1Zl9zdGF0ZTsKIAkJdWludDY0CQlsb2NhbF9idWZfc3RhdGU7CisJCWJvb2wJ CW5vX3Byb2dyZXNzID0gZmFsc2U7CiAKIAkJYnVmID0gR2V0QnVmZmVyRGVzY3JpcHRvcihD bG9ja1N3ZWVwVGljaygpKTsKIApAQCAtMjk3LDI1ICszMTcsMTAgQEAgU3RyYXRlZ3lHZXRC dWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRl LCBib29sICpmcm9tX3IKIAkJewogCQkJbG9jYWxfYnVmX3N0YXRlID0gb2xkX2J1Zl9zdGF0 ZTsKIAotCQkJLyoKLQkJCSAqIElmIHRoZSBidWZmZXIgaXMgcGlubmVkIG9yIGhhcyBhIG5v bnplcm8gdXNhZ2VfY291bnQsIHdlIGNhbm5vdAotCQkJICogdXNlIGl0OyBkZWNyZW1lbnQg dGhlIHVzYWdlX2NvdW50ICh1bmxlc3MgcGlubmVkKSBhbmQga2VlcAotCQkJICogc2Nhbm5p bmcuCi0JCQkgKi8KLQorCQkJLyogSWYgdGhlIGJ1ZmZlciBpcyBwaW5uZWQgd2UgY2Fubm90 IHVzZSBpdDsga2VlcCBzY2FubmluZy4gKi8KIAkJCWlmIChCVUZfU1RBVEVfR0VUX1JFRkNP VU5UKGxvY2FsX2J1Zl9zdGF0ZSkgIT0gMCkKIAkJCXsKLQkJCQlpZiAoLS10cnljb3VudGVy ID09IDApCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBXZSd2ZSBzY2FubmVkIGFsbCB0aGUg YnVmZmVycyB3aXRob3V0IG1ha2luZyBhbnkgc3RhdGUKLQkJCQkJICogY2hhbmdlcywgc28g YWxsIHRoZSBidWZmZXJzIGFyZSBwaW5uZWQgKG9yIHdlcmUgd2hlbiB3ZQotCQkJCQkgKiBs b29rZWQgYXQgdGhlbSkuIFdlIGNvdWxkIGhvcGUgdGhhdCBzb21lb25lIHdpbGwgZnJlZQot CQkJCQkgKiBvbmUgZXZlbnR1YWxseSwgYnV0IGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGZh aWwgdGhhbgotCQkJCQkgKiB0byByaXNrIGdldHRpbmcgc3R1Y2sgaW4gYW4gaW5maW5pdGUg bG9vcC4KLQkJCQkJICovCi0JCQkJCWVsb2coRVJST1IsICJubyB1bnBpbm5lZCBidWZmZXJz IGF2YWlsYWJsZSIpOwotCQkJCX0KKwkJCQlub19wcm9ncmVzcyA9IHRydWU7CiAJCQkJYnJl YWs7CiAJCQl9CiAKQEAgLTMyNiwyMCArMzMxLDU2IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAq ZnJvbV9yCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWlmIChCVUZfU1RBVEVfR0VUX1VT QUdFQ09VTlQobG9jYWxfYnVmX3N0YXRlKSAhPSAwKQorCQkJaWYgKEJVRl9TVEFURV9HRVRf Q09PTFNUQVRFKGxvY2FsX2J1Zl9zdGF0ZSkgIT0gQlVGX0NPT0xTVEFURV9DT09MKQogCQkJ ewotCQkJCWxvY2FsX2J1Zl9zdGF0ZSAtPSBCVUZfVVNBR0VDT1VOVF9PTkU7CisJCQkJLyoK KwkJCQkgKiBIT1QgYnVmZmVyLiAgUHJlZmVyIGEgQ09PTCB2aWN0aW06IG9uIGEgbm9ybWFs IHBhc3MganVzdAorCQkJCSAqIGFkdmFuY2UgdGhlIGhhbmQgKG5vIHByb2dyZXNzKS4gIFVu ZGVyIGZvcmNlX2Nvb2wgYXBwbHkgdGhlCisJCQkJICogc2FtZSBzZWNvbmQtY2hhbmNlIHJ1 bGUgdGhlIGJnd3JpdGVyJ3MgcHJlLWNvb2xpbmcgdXNlczogYQorCQkJCSAqIEhPVCBidWZm ZXIgd2hvc2UgcmVmIGJpdCBpcyBzZXQgKHJlY2VudGx5IGFjY2Vzc2VkKSBoYXMgdGhlCisJ CQkJICogcmVmIGJpdCBjbGVhcmVkIGFuZCBpcyBsZWZ0IEhPVCB0aGlzIHBhc3M7IG9ubHkg YSBIT1QgYnVmZmVyCisJCQkJICogd2hvc2UgcmVmIGJpdCBpcyBhbHJlYWR5IGNsZWFyIGlz IGRlbW90ZWQgSE9UIC0+IENPT0wuICBUaGlzCisJCQkJICoga2VlcHMgYSBqdXN0LXRvdWNo ZWQgYnVmZmVyIGZyb20gYmVpbmcgY29vbGVkIHRoZSBpbnN0YW50IHRoZQorCQkJCSAqIGJn d3JpdGVyIGZhbGxzIGJlaGluZCBhbmQgdGhlIGZvcmVncm91bmQgaGFzIHRvIGNvb2wgZm9y CisJCQkJICogaXRzZWxmLiAgRWl0aGVyIHRyYW5zaXRpb24gaXMgcHJvZ3Jlc3MgdG93YXJk IGEgdmljdGltLgorCQkJCSAqLworCQkJCWlmICghZm9yY2VfY29vbCkKKwkJCQl7CisJCQkJ CW5vX3Byb2dyZXNzID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CQkJLyogYWR2YW5jZSB0aGUgaGFu ZCwgbG9vayBmb3IgQ09PTCAqLworCQkJCX0KKworCQkJCWlmIChCVUZfU1RBVEVfR0VUX1JF RkJJVChsb2NhbF9idWZfc3RhdGUpKQorCQkJCQlsb2NhbF9idWZfc3RhdGUgJj0gfkJVRl9S RUZCSVQ7CQkJLyogc2Vjb25kIGNoYW5jZTogY2xlYXIgcmVmLCBzdGF5IEhPVCAqLworCQkJ CWVsc2UKKwkJCQkJbG9jYWxfYnVmX3N0YXRlICY9IH5CVUZfVVNBR0VDT1VOVF9NQVNLOwkv KiBIT1QgLT4gQ09PTCwgY2xlYXIgcmVmIGJpdCAqLwogCiAJCQkJaWYgKHBnX2F0b21pY19j b21wYXJlX2V4Y2hhbmdlX3U2NCgmYnVmLT5zdGF0ZSwgJm9sZF9idWZfc3RhdGUsCiAJCQkJ CQkJCQkJCQkgICBsb2NhbF9idWZfc3RhdGUpKQogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICog TWFraW5nIGEgY29vbGluZy1zdGF0ZSB0cmFuc2l0aW9uIGlzIHByb2dyZXNzIHRvd2FyZCBh CisJCQkJCSAqIHZpY3RpbSwgc28gcmVzZXQgdGhlIGNvdW50ZXIuICBTdGF5IGluIGZvcmNl X2Nvb2w6IHdlIG1hZGUKKwkJCQkJICogYSB0cmFuc2l0aW9uIGJ1dCBoYXZlIG5vdCB5ZXQg cHJvZHVjZWQgYSByZWNsYWltYWJsZSBDT09MCisJCQkJCSAqIHZpY3RpbSAoYSByZWYtY2xl YXIgbGVhdmVzIHRoZSBidWZmZXIgSE9UOyBhIGRlbW90ZSBsZWF2ZXMKKwkJCQkJICogaXQg Q09PTCBmb3IgYSBsYXRlciB0aWNrIHRvIGNsYWltKSwgYW5kIGRyb3BwaW5nIG91dCBoZXJl CisJCQkJCSAqIHdvdWxkIHdhc3RlIGEgZnVsbCBuby1wcm9ncmVzcyBwYXNzIHJlLWVzY2Fs YXRpbmcuICBBbgorCQkJCQkgKiBhbGwtSE9ULCBhbGwtcmVjZW50bHktcmVmZXJlbmNlZCBw b29sIHRodXMgdGFrZXMgdXAgdG8gfjMKKwkJCQkJICogZnVsbCBwYXNzZXMgdG8geWllbGQg YSB2aWN0aW0gKGRpc2NvdmVyIG5vIENPT0wsIGNsZWFyIHJlZgorCQkJCQkgKiBiaXRzLCBj b29sICsgcmVjbGFpbSkgLS0gc3RpbGwgd2l0aGluIHRoZSBzdG9jayBjbG9jaydzCisJCQkJ CSAqIHdvcnN0IGNhc2UgKHVwIHRvIEJNX01BWF9VU0FHRV9DT1VOVCsxIHBhc3NlcyksIGFu ZCBpbgorCQkJCQkgKiBwcmFjdGljZSB0aGUgYmd3cml0ZXIgcHJlLWNvb2xpbmcga2VlcHMg YSBDT09MIHZpY3RpbQorCQkJCQkgKiBhdmFpbGFibGUgc28gZm9yY2VfY29vbCByYXJlbHkg ZmlyZXMgYXQgYWxsLiAgZm9yY2VfY29vbAorCQkJCQkgKiBlbmRzIG5hdHVyYWxseSBvbmNl IGEgQ09PTCB2aWN0aW0gaXMgZm91bmQgYW5kIHJldHVybmVkCisJCQkJCSAqIGJlbG93Lgor CQkJCQkgKi8KIAkJCQkJdHJ5Y291bnRlciA9IE5CdWZmZXJzOwogCQkJCQlicmVhazsKIAkJ CQl9CiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJLyogcGluIHRoZSBidWZmZXIgaWYgdGhl IENBUyBzdWNjZWVkcyAqLworCQkJCS8qIENPT0wgYW5kIHVucGlubmVkOiBjbGFpbSBpdC4g IFBpbiBpZiB0aGUgQ0FTIHN1Y2NlZWRzLiAqLwogCQkJCWxvY2FsX2J1Zl9zdGF0ZSArPSBC VUZfUkVGQ09VTlRfT05FOwogCiAJCQkJaWYgKHBnX2F0b21pY19jb21wYXJlX2V4Y2hhbmdl X3U2NCgmYnVmLT5zdGF0ZSwgJm9sZF9idWZfc3RhdGUsCkBAIC0zNTYsNiArMzk3LDIxIEBA IFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50 NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCQkJfQogCQkJfQogCQl9CisKKwkJLyoK KwkJICogQSB0aWNrIHRoYXQgbWFkZSBubyBwcm9ncmVzcyB0b3dhcmQgYSB2aWN0aW0gY291 bnRzIGRvd24gdHJ5Y291bnRlci4KKwkJICogQSBmdWxsIHVucHJvZHVjdGl2ZSBwYXNzIGVz Y2FsYXRlcyB0byBmb3JjZV9jb29sIChjb29sIEhPVCBidWZmZXJzCisJCSAqIGludG8gdmlj dGltcyk7IGEgc2Vjb25kIHVucHJvZHVjdGl2ZSBmdWxsIHBhc3MgbWVhbnMgZXZlcnl0aGlu ZyBpcworCQkgKiBwaW5uZWQsIHNvIGZhaWwgcmF0aGVyIHRoYW4gc3BpbiBmb3JldmVyLiAg KEEgZmFpbGVkIENBUyBhYm92ZSBpcworCQkgKiBuZWl0aGVyIHByb2dyZXNzIG5vciBhIGZ1 bGwgbWlzczogd2Ugc2ltcGx5IHJldHJ5IHRoZSBzYW1lIGJ1ZmZlci4pCisJCSAqLworCQlp ZiAobm9fcHJvZ3Jlc3MgJiYgLS10cnljb3VudGVyID09IDApCisJCXsKKwkJCWlmIChmb3Jj ZV9jb29sKQorCQkJCWVsb2coRVJST1IsICJubyB1bnBpbm5lZCBidWZmZXJzIGF2YWlsYWJs ZSIpOworCQkJZm9yY2VfY29vbCA9IHRydWU7CisJCQl0cnljb3VudGVyID0gTkJ1ZmZlcnM7 CisJCX0KIAl9CiB9CiAKQEAgLTQ3MCwxMCArNTI2LDEwIEBAIFN0cmF0ZWd5Q3RsU2htZW1J bml0KHZvaWQgKmFyZykKIAkgKi8KIAlpZiAocGdfbnVtYV9pbml0KCkgIT0gLTEgJiYKIAkJ cGdfbnVtYV9nZXRfbWF4X25vZGUoKSA+PSAxKQotCQlDbG9ja1N3ZWVwQmF0Y2hTaXplID0g TWluKFBHX0NBQ0hFX0xJTkVfU0laRSAvICh1aW50MzIpIHNpemVvZih1aW50MzIpLAotCQkJ CQkJCQkgICh1aW50MzIpIE5CdWZmZXJzKTsKKwkJU3RyYXRlZ3lDb250cm9sLT5iYXRjaFNp emUgPSBNaW4oUEdfQ0FDSEVfTElORV9TSVpFIC8gKHVpbnQzMikgc2l6ZW9mKHVpbnQzMiks CisJCQkJCQkJCQkJICh1aW50MzIpIE5CdWZmZXJzKTsKIAllbHNlCi0JCUNsb2NrU3dlZXBC YXRjaFNpemUgPSAxOworCQlTdHJhdGVneUNvbnRyb2wtPmJhdGNoU2l6ZSA9IDE7CiB9CiAK IApAQCAtNzIxLDE0ICs3NzcsMTMgQEAgR2V0QnVmZmVyRnJvbVJpbmcoQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlKQogCQkvKgogCQkgKiBJZiB0 aGUgYnVmZmVyIGlzIHBpbm5lZCB3ZSBjYW5ub3QgdXNlIGl0IHVuZGVyIGFueSBjaXJjdW1z dGFuY2VzLgogCQkgKgotCQkgKiBJZiB1c2FnZV9jb3VudCBpcyAwIG9yIDEgdGhlbiB0aGUg YnVmZmVyIGlzIGZhaXIgZ2FtZSAod2UgZXhwZWN0IDEsCi0JCSAqIHNpbmNlIG91ciBvd24g cHJldmlvdXMgdXNhZ2Ugb2YgdGhlIHJpbmcgZWxlbWVudCB3b3VsZCBoYXZlIGxlZnQgaXQK LQkJICogdGhlcmUsIGJ1dCBpdCBtaWdodCd2ZSBiZWVuIGRlY3JlbWVudGVkIGJ5IGNsb2Nr LXN3ZWVwIHNpbmNlIHRoZW4pLgotCQkgKiBBIGhpZ2hlciB1c2FnZV9jb3VudCBpbmRpY2F0 ZXMgc29tZW9uZSBlbHNlIGhhcyB0b3VjaGVkIHRoZSBidWZmZXIsCi0JCSAqIHNvIHdlIHNo b3VsZG4ndCByZS11c2UgaXQuCisJCSAqIFdpdGggdGhlIGNvb2xpbmctc3RhdGUgcmVwbGFj ZW1lbnQgdGhlIGZpZWxkIGhvbGRzIG9ubHkgQ09PTCBvciBIT1QsCisJCSAqIHNvIHRoZSBz dG9jayAidXNhZ2VfY291bnQgPiAxIG1lYW5zIGFub3RoZXIgYmFja2VuZCB0b3VjaGVkIGl0 IgorCQkgKiBoZXVyaXN0aWMgbm8gbG9uZ2VyIGFwcGxpZXM6IGEgcmluZyBlbGVtZW50IGlz IHJldXNhYmxlIHdoZW5ldmVyIGl0CisJCSAqIGlzIHVucGlubmVkLiAgKFRoZSB3aG9sZSBy aW5nIG1lY2hhbmlzbSBpcyByZW1vdmVkIGluIGEgbGF0ZXIgcGF0Y2g7CisJCSAqIHNjYW4g cmVzaXN0YW5jZSBpcyBub3cgaW50cmluc2ljIHRvIHRoZSBzd2VlcC4pCiAJCSAqLwotCQlp ZiAoQlVGX1NUQVRFX0dFVF9SRUZDT1VOVChsb2NhbF9idWZfc3RhdGUpICE9IDAKLQkJCXx8 IEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChsb2NhbF9idWZfc3RhdGUpID4gMSkKKwkJaWYg KEJVRl9TVEFURV9HRVRfUkVGQ09VTlQobG9jYWxfYnVmX3N0YXRlKSAhPSAwKQogCQkJYnJl YWs7CiAKIAkJLyogU2VlIGVxdWl2YWxlbnQgY29kZSBpbiBQaW5CdWZmZXIoKSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggNDg3MGM4ZS4uMjFjMDgw OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC0xNjcsNyAr MTY3LDcgQEAgTG9jYWxCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgRm9ya051bWJl ciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja051bSwKIAogCQlidWZfc3RhdGUgPSBwZ19h dG9taWNfcmVhZF91NjQoJmJ1Zkhkci0+c3RhdGUpOwogCQlidWZfc3RhdGUgJj0gfihCVUZf RkxBR19NQVNLIHwgQlVGX1VTQUdFQ09VTlRfTUFTSyk7Ci0JCWJ1Zl9zdGF0ZSB8PSBCTV9U QUdfVkFMSUQgfCBCVUZfVVNBR0VDT1VOVF9PTkU7CisJCWJ1Zl9zdGF0ZSB8PSBCTV9UQUdf VkFMSUQ7CS8qIGFkbWl0IENPT0wgKHByb2JhdGlvbikgKi8KIAkJcGdfYXRvbWljX3VubG9j a2VkX3dyaXRlX3U2NCgmYnVmSGRyLT5zdGF0ZSwgYnVmX3N0YXRlKTsKIAogCQkqZm91bmRQ dHIgPSBmYWxzZTsKQEAgLTI0OCw5ICsyNDgsMTAgQEAgR2V0TG9jYWxWaWN0aW1CdWZmZXIo dm9pZCkKIAkJewogCQkJdWludDY0CQlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQo JmJ1Zkhkci0+c3RhdGUpOwogCi0JCQlpZiAoQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1 Zl9zdGF0ZSkgPiAwKQorCQkJaWYgKEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0 ZSkgIT0gQlVGX0NPT0xTVEFURV9DT09MKQogCQkJewotCQkJCWJ1Zl9zdGF0ZSAtPSBCVUZf VVNBR0VDT1VOVF9PTkU7CisJCQkJLyogSE9UOiBnaXZlIGl0IGEgc2Vjb25kIGNoYW5jZSwg Y29vbCBpdCBhbmQga2VlcCBzY2FubmluZy4gKi8KKwkJCQlidWZfc3RhdGUgLT0gQlVGX0NP T0xTVEFURV9PTkU7CiAJCQkJcGdfYXRvbWljX3VubG9ja2VkX3dyaXRlX3U2NCgmYnVmSGRy LT5zdGF0ZSwgYnVmX3N0YXRlKTsKIAkJCQl0cnljb3VudGVyID0gTkxvY0J1ZmZlcjsKIAkJ CX0KQEAgLTQ1NCw3ICs0NTUsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbExvY2FsKEJ1ZmZlck1h bmFnZXJSZWxhdGlvbiBibXIsCiAKIAkJCXZpY3RpbV9idWZfaGRyLT50YWcgPSB0YWc7CiAK LQkJCWJ1Zl9zdGF0ZSB8PSBCTV9UQUdfVkFMSUQgfCBCVUZfVVNBR0VDT1VOVF9PTkU7CisJ CQlidWZfc3RhdGUgfD0gQk1fVEFHX1ZBTElEOwkvKiBhZG1pdCBDT09MIChwcm9iYXRpb24p ICovCiAKIAkJCXBnX2F0b21pY191bmxvY2tlZF93cml0ZV91NjQoJnZpY3RpbV9idWZfaGRy LT5zdGF0ZSwgYnVmX3N0YXRlKTsKIApAQCAtODM5LDkgKzg0MCw5IEBAIFBpbkxvY2FsQnVm ZmVyKEJ1ZmZlckRlc2MgKmJ1Zl9oZHIsIGJvb2wgYWRqdXN0X3VzYWdlY291bnQpCiAJCU5M b2NhbFBpbm5lZEJ1ZmZlcnMrKzsKIAkJYnVmX3N0YXRlICs9IEJVRl9SRUZDT1VOVF9PTkU7 CiAJCWlmIChhZGp1c3RfdXNhZ2Vjb3VudCAmJgotCQkJQlVGX1NUQVRFX0dFVF9VU0FHRUNP VU5UKGJ1Zl9zdGF0ZSkgPCBCTV9NQVhfVVNBR0VfQ09VTlQpCisJCQlCVUZfU1RBVEVfR0VU X0NPT0xTVEFURShidWZfc3RhdGUpIDwgQlVGX0NPT0xTVEFURV9IT1QpCiAJCXsKLQkJCWJ1 Zl9zdGF0ZSArPSBCVUZfVVNBR0VDT1VOVF9PTkU7CisJCQlidWZfc3RhdGUgKz0gQlVGX0NP T0xTVEFURV9PTkU7CiAJCX0KIAkJcGdfYXRvbWljX3VubG9ja2VkX3dyaXRlX3U2NCgmYnVm X2hkci0+c3RhdGUsIGJ1Zl9zdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvYnVmX2ludGVybmFscy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJu YWxzLmgKaW5kZXggZTRmZjU2MS4uMTMxZGYxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZf aW50ZXJuYWxzLmgKQEAgLTY3LDYgKzY3LDUwIEBAIFN0YXRpY0Fzc2VydERlY2woQlVGX1JF RkNPVU5UX0JJVFMgKyBCVUZfVVNBR0VDT1VOVF9CSVRTICsgQlVGX0ZMQUdfQklUUyArIEJV Rl9MCiAjZGVmaW5lIEJVRl9VU0FHRUNPVU5UX09ORSBcCiAJKFVJTlQ2NENPTlNUKDEpIDw8 IEJVRl9SRUZDT1VOVF9CSVRTKQogCisvKgorICogQ29vbGluZyBzdGF0ZSAoTGVhblN0b3Jl IC8gMlEtQTEgY29vbGluZy1zdGFnZSBjbG9jayBzd2VlcCkuCisgKgorICogVGhlIGZpZWxk IGhpc3RvcmljYWxseSB1c2VkIGZvciB0aGUgMC4uNSB1c2FnZV9jb3VudCBub3cgaG9sZHMg YSBzaW5nbGUKKyAqIGNvb2xpbmctc3RhdGUgYml0OiBIT1QgKHJlY2VudGx5IGFjY2Vzc2Vk LCBub3QgYW4gZXZpY3Rpb24gY2FuZGlkYXRlKSBvcgorICogQ09PTCAoYW4gZXZpY3Rpb24g Y2FuZGlkYXRlKS4gIFdlIHJldXNlIEJVRl9VU0FHRUNPVU5UX09ORSBhcyB0aGUgdW5pdCBz bworICogdGhlIGJ1ZmZlci1zdGF0ZSBiaXQgZ2VvZ3JhcGh5IC0tIHJlZmNvdW50LCBmbGFn LCBhbmQgbG9jayBvZmZzZXRzLCBhbmQgdGhlCisgKiA2NC1iaXQgU3RhdGljQXNzZXJ0cyAt LSBpcyB1bmNoYW5nZWQ7IG9ubHkgdGhlIG1lYW5pbmcgb2YgdGhlIGZpZWxkIGFuZCB0aGUK KyAqIGluc3RydWN0aW9ucyB0aGF0IHRvdWNoIGl0IGNoYW5nZS4KKyAqCisgKiBBIGRlbWFu ZC1sb2FkZWQgcGFnZSBpcyBhZG1pdHRlZCBDT09MIChwcm9iYXRpb24pOyBhIHNlY29uZCBh Y2Nlc3MgcHJvbW90ZXMKKyAqIGl0IHRvIEhPVCAodGhlIHJlc2N1ZSkuICBUaGUgc3dlZXAg cHJlZmVycyBDT09MIHZpY3RpbXMgYW5kIGRlbW90ZXMgSE9UIHRvCisgKiBDT09MIG9ubHkg d2hlbiBhIGZ1bGwgcGFzcyBmaW5kcyBubyBDT09MIHZpY3RpbS4gIFNvIGEgb25lLXRvdWNo IHNjYW4gZmlsbHMKKyAqIGFuZCBkcmFpbnMgdGhlIENPT0wgc3RhZ2Ugd2l0aG91dCBkaXNw bGFjaW5nIHRoZSBIT1Qgd29ya2luZyBzZXQgLS0gc2NhbgorICogcmVzaXN0YW5jZSBpbnRy aW5zaWMgdG8gdGhlIHJlcGxhY2VtZW50IGFsZ29yaXRobS4KKyAqLworI2RlZmluZSBCVUZf Q09PTFNUQVRFX0NPT0wJMAorI2RlZmluZSBCVUZfQ09PTFNUQVRFX0hPVAkxCisjZGVmaW5l IEJVRl9DT09MU1RBVEVfT05FCUJVRl9VU0FHRUNPVU5UX09ORQorCisvKgorICogU2Vjb25k LWNoYW5jZSByZWZlcmVuY2UgYml0LCBiaXQgMSBvZiB0aGUgKGZvcm1lciB1c2FnZWNvdW50 KSBmaWVsZCwgb25lCisgKiBwb3NpdGlvbiBhYm92ZSB0aGUgY29vbGluZy1zdGF0ZSBiaXQu ICBQaW5CdWZmZXIgc2V0cyBpdCBvbiBldmVyeSBhY2Nlc3MuCisgKiBUaGUgYmd3cml0ZXIn cyBwcmUtY29vbGluZyBnaXZlcyBhIEhPVCBidWZmZXIgYSBzZWNvbmQgY2hhbmNlOiB0aGUg Zmlyc3QKKyAqIHRpbWUgaXQgcGFzc2VzIGEgSE9UIGJ1ZmZlciB3aG9zZSByZWYgYml0IGlz IHNldCwgaXQgY2xlYXJzIHRoZSByZWYgYml0IGFuZAorICogbGVhdmVzIHRoZSBidWZmZXIg SE9UOyBvbmx5IGEgSE9UIGJ1ZmZlciB3aG9zZSByZWYgYml0IGlzIGFscmVhZHkgY2xlYXIg KG5vdAorICogcmUtYWNjZXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGJnd3JpdGVyIHBhc3Mp IGlzIGRlbW90ZWQgdG8gQ09PTC4gIFRoaXMKKyAqIGtlZXBzIGdlbnVpbmVseS1ob3QgcGFn ZXMgb3V0IG9mIHRoZSBDT09MIHN0YWdlIChwcm90ZWN0aW5nIHRoZSB3b3JraW5nIHNldAor ICogZnJvbSBiZWluZyBjb29sZWQgdW5kZXIgc2NhbiBwcmVzc3VyZSkgd2hpbGUgbGVhdmlu ZyB0aGUgZm9yZWdyb3VuZCBzd2VlcCBhCisgKiBzaW5nbGUtcGFzcyBzZWFyY2ggb3ZlciB0 aGUgcHJlLXN0YWdlZCBDT09MIGJ1ZmZlcnMuICBBIHNlcGFyYXRlIGJpdCAobm90IGEKKyAq IGNvdW50KSBzbyBpdCBzdGF5cyBhIHBsYWluIG1hc2tlZCBzdG9yZSB1bmRlciB0aGUgaGVh ZGVyIGxvY2suCisgKi8KKyNkZWZpbmUgQlVGX1JFRkJJVAkJCShVSU5UNjRDT05TVCgyKSA8 PCBCVUZfUkVGQ09VTlRfQklUUykKKyNkZWZpbmUgQlVGX1NUQVRFX0dFVF9SRUZCSVQoc3Rh dGUpCSgoKHN0YXRlKSAmIEJVRl9SRUZCSVQpICE9IDApCisKKy8qCisgKiBUaGUgY29vbGlu ZyBzdGF0ZSBvY2N1cGllcyBiaXQgMCBhbmQgdGhlIHJlZmVyZW5jZSBiaXQgb2NjdXBpZXMg Yml0IDEgb2YKKyAqIHRoZSAoZm9ybWVyIHVzYWdlY291bnQpIGZpZWxkLCBzbyB0aGUgZmll bGQgbXVzdCBiZSBhdCBsZWFzdCAyIGJpdHMgd2lkZS4KKyAqIEFzc2VydCBpdCBoZXJlIHNv IGEgZnV0dXJlIGNoYW5nZSB0byBCVUZfVVNBR0VDT1VOVF9CSVRTIGNhbm5vdCBzaWxlbnRs eQorICogcHVzaCBCVUZfUkVGQklUIHVwIGludG8gdGhlIGZsYWcgYml0cy4KKyAqLworU3Rh dGljQXNzZXJ0RGVjbChCVUZfVVNBR0VDT1VOVF9CSVRTID49IDIsCisJCQkJICJjb29saW5n IHN0YXRlICsgcmVmZXJlbmNlIGJpdCBuZWVkIGF0IGxlYXN0IDIgYml0cyBpbiB0aGUgdXNh Z2Vjb3VudCBmaWVsZCIpOworCiAvKiBmbGFncyByZWxhdGVkIGRlZmluaXRpb25zICovCiAj ZGVmaW5lIEJVRl9GTEFHX1NISUZUIFwKIAkoQlVGX1JFRkNPVU5UX0JJVFMgKyBCVUZfVVNB R0VDT1VOVF9CSVRTKQpAQCAtOTIsNiArMTM2LDExIEBAIFN0YXRpY0Fzc2VydERlY2woQlVG X1JFRkNPVU5UX0JJVFMgKyBCVUZfVVNBR0VDT1VOVF9CSVRTICsgQlVGX0ZMQUdfQklUUyAr IEJVRl9MCiAjZGVmaW5lIEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChzdGF0ZSkgXAogCSgo dWludDMyKSgoKHN0YXRlKSAmIEJVRl9VU0FHRUNPVU5UX01BU0spID4+IEJVRl9VU0FHRUNP VU5UX1NISUZUKSkKIAorLyogQ29vbGluZyBzdGF0ZSAoSE9UL0NPT0wpIGZyb20gYnVmZmVy IHN0YXRlIC0tIGJpdCAwIG9mIHRoZSBmaWVsZCBvbmx5LCBzbworICogdGhlIHNlY29uZC1j aGFuY2UgcmVmIGJpdCAoYml0IDEpIGRvZXMgbm90IHBlcnR1cmIgdGhlIEhPVC9DT09MIHRl c3QuICovCisjZGVmaW5lIEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKHN0YXRlKSBcCisJKCh1 aW50MzIpICgoKHN0YXRlKSA+PiBCVUZfVVNBR0VDT1VOVF9TSElGVCkgJiAxKSkKKwogLyoK ICAqIEZsYWdzIGZvciBidWZmZXIgZGVzY3JpcHRvcnMKICAqCkBAIC0xMzQsMTcgKzE4Mywx NSBAQCBTdGF0aWNBc3NlcnREZWNsKE1BWF9CQUNLRU5EU19CSVRTIDw9IChCVUZfTE9DS19C SVRTIC0gMiksCiAKIAogLyoKLSAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgb2YgdXNh Z2VfY291bnQgcmVwcmVzZW50cyBhIHRyYWRlb2ZmIGJldHdlZW4KLSAqIGFjY3VyYWN5IGFu ZCBzcGVlZCBvZiB0aGUgY2xvY2stc3dlZXAgYnVmZmVyIG1hbmFnZW1lbnQgYWxnb3JpdGht LiAgQQotICogbGFyZ2UgdmFsdWUgKGNvbXBhcmFibGUgdG8gTkJ1ZmZlcnMpIHdvdWxkIGFw cHJveGltYXRlIExSVSBzZW1hbnRpY3MuCi0gKiBCdXQgaXQgY2FuIHRha2UgYXMgbWFueSBh cyBCTV9NQVhfVVNBR0VfQ09VTlQrMSBjb21wbGV0ZSBjeWNsZXMgb2YgdGhlCi0gKiBjbG9j ay1zd2VlcCBoYW5kIHRvIGZpbmQgYSBmcmVlIGJ1ZmZlciwgc28gaW4gcHJhY3RpY2Ugd2Ug ZG9uJ3Qgd2FudCB0aGUKLSAqIHZhbHVlIHRvIGJlIHZlcnkgbGFyZ2UuCisgKiBUaGUgY29v bGluZyBzdGF0ZSBpcyBhIHNpbmdsZSBiaXQgKEhPVC9DT09MKTsgdGhlIG1heGltdW0gdmFs dWUgc3RvcmVkIGluCisgKiB0aGUgZmllbGQgaXMgdGhlcmVmb3JlIEJVRl9DT09MU1RBVEVf SE9ULiAgUmV0YWluZWQgdW5kZXIgdGhlIGhpc3RvcmljYWwKKyAqIG5hbWUgQk1fTUFYX1VT QUdFX0NPVU5UIHNvIHRoZSBwaW4gZmFzdCBwYXRoICgicHJvbW90ZSB1bmxlc3MgYWxyZWFk eSBhdAorICogbWF4IikgcmVhZHMgbmF0dXJhbGx5LgogICovCi0jZGVmaW5lIEJNX01BWF9V U0FHRV9DT1VOVAk1CisjZGVmaW5lIEJNX01BWF9VU0FHRV9DT1VOVAlCVUZfQ09PTFNUQVRF X0hPVAogCiBTdGF0aWNBc3NlcnREZWNsKEJNX01BWF9VU0FHRV9DT1VOVCA8IChVSU5UNjRD T05TVCgxKSA8PCBCVUZfVVNBR0VDT1VOVF9CSVRTKSwKLQkJCQkgIkJNX01BWF9VU0FHRV9D T1VOVCBkb2Vzbid0IGZpdCBpbiBCVUZfVVNBR0VDT1VOVF9CSVRTIGJpdHMiKTsKKwkJCQkg ImNvb2xpbmcgc3RhdGUgZG9lc24ndCBmaXQgaW4gQlVGX1VTQUdFQ09VTlRfQklUUyBiaXRz Iik7CiAKIC8qCiAgKiBCdWZmZXIgdGFnIGlkZW50aWZpZXMgd2hpY2ggZGlzayBibG9jayB0 aGUgYnVmZmVyIGNvbnRhaW5zLgotLSAKMi41MC4xCgo= --e43c6d4d37c2dc6715842cce56a0acb5f2fc7668 Content-Disposition: attachment; filename*0="v7-0003-Remove-BufferAccessStrategy-scan-resistance-is-no.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v7-0003-Remove-BufferAccessStrategy-scan-resistance-is-no.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBkNjA1YzA3Y2M3NTViYTEzMDA0NWQ4MTFjMmU1NzdkNDQzYjk2YzQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCA3IEp1bCAyMDI2IDA4OjQ1OjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NyAzLzNd IFJlbW92ZSBCdWZmZXJBY2Nlc3NTdHJhdGVneTsgc2NhbiByZXNpc3RhbmNlIGlzIG5vdwog aW50cmluc2ljCgpUaGUgY29vbGluZy1zdGFnZSBldmljdG9yIGFkbWl0cyBkZW1hbmQtbG9h ZGVkIHBhZ2VzIENPT0wgYW5kIHByb21vdGVzIHRoZW0gdG8KSE9UIG9ubHkgb24gYSBzZWNv bmQgYWNjZXNzLCBzbyBhIG9uZS10b3VjaCBzZXF1ZW50aWFsIHNjYW4gZmlsbHMgYW5kIGRy YWlucwp0aGUgQ09PTCBzdGFnZSB3aXRob3V0IGRpc3BsYWNpbmcgdGhlIGhvdCB3b3JraW5n IHNldC4gIFNjYW4gcmVzaXN0YW5jZSBpcwp0aGVyZWZvcmUgYSBwcm9wZXJ0eSBvZiB0aGUg cmVwbGFjZW1lbnQgYWxnb3JpdGhtIGl0c2VsZiwgYW5kIHRoZQpCdWZmZXJBY2Nlc3NTdHJh dGVneSByaW5nIGJ1ZmZlcnMgdGhhdCBwcmV2aW91c2x5IHByb3ZpZGVkIGl0IGFyZSBkZWFk IHdlaWdodC4KUmVtb3ZlIHRoZW0gZW5kIHRvIGVuZC4KCkRlbGV0ZWQ6CiAgLSB0aGUgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgdHlwZSBhbmQgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlw ZSBlbnVtCiAgICAoQkFTX05PUk1BTC9CVUxLUkVBRC9CVUxLV1JJVEUvVkFDVVVNKTsKICAt IHRoZSByaW5nIG1hY2hpbmVyeSBpbiBmcmVlbGlzdC5jIChHZXRBY2Nlc3NTdHJhdGVneVtX aXRoU2l6ZV0sCiAgICBHZXRBY2Nlc3NTdHJhdGVneUJ1ZmZlckNvdW50LCBHZXRBY2Nlc3NT dHJhdGVneVBpbkxpbWl0LAogICAgRnJlZUFjY2Vzc1N0cmF0ZWd5LCBHZXRCdWZmZXJGcm9t UmluZywgQWRkQnVmZmVyVG9SaW5nLAogICAgU3RyYXRlZ3lSZWplY3RCdWZmZXIsIElPQ29u dGV4dEZvclN0cmF0ZWd5KTsKICAtIHRoZSBzdHJhdGVneSBwYXJhbWV0ZXIgZnJvbSBSZWFk QnVmZmVyRXh0ZW5kZWQsIFJlYWRCdWZmZXJXaXRob3V0UmVsY2FjaGUsCiAgICB0aGUgRXh0 ZW5kQnVmZmVyZWRSZWwqIGZhbWlseSwgU3RyYXRlZ3lHZXRCdWZmZXIsIHJlYWRfc3RyZWFt X2JlZ2luXyosCiAgICBhbmQgZXZlcnkgc2Nhbi92YWN1dW0vYW5hbHl6ZS9pbmRleC1BTSBj YWxsZXI7CiAgLSB0aGUgc3RyYXRlZ3kgZmllbGRzIG9uIEhlYXBTY2FuRGVzY0RhdGEsIElu ZGV4U2NhbkRlc2NEYXRhLAogICAgQnVsa0luc2VydFN0YXRlRGF0YSwgUmVhZEJ1ZmZlcnNP cGVyYXRpb24sIGFuZCBSZWFkU3RyZWFtOwogIC0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRl Z3kgKGlkZW50aWNhbCB0byBfaGFzaF9nZXRidWYgd2l0aG91dCBhIHN0cmF0ZWd5KS4KCnBn X3N0YXRfaW8ncyBwZXItc3RyYXRlZ3kgSU8gY29udGV4dHMgY29sbGFwc2U6IElPQ09OVEVY VF9CVUxLUkVBRCwKSU9DT05URVhUX0JVTEtXUklURSBhbmQgSU9DT05URVhUX1ZBQ1VVTSBh cmUgcmVtb3ZlZCwgbGVhdmluZyBJT0NPTlRFWFRfSU5JVAphbmQgSU9DT05URVhUX05PUk1B TC4gIElPT1BfUkVVU0Ugb25seSBldmVyIG9jY3VycmVkIHdoaWxlIHJlY3ljbGluZyBhIHJp bmcKYnVmZmVyLCBzbyBpdCBpcyBubyBsb25nZXIgdHJhY2tlZDsgR2V0VmljdGltQnVmZmVy IGNvdW50cyBJT09QX0VWSUNUIG9ubHkuCgpUaGUgdmFjdXVtX2J1ZmZlcl91c2FnZV9saW1p dCBHVUMgYW5kIHRoZSBWQUNVVU0vQU5BTFlaRSAoQlVGRkVSX1VTQUdFX0xJTUlUCi4uLikg b3B0aW9uIGFyZSByZW1vdmVkLCBhbG9uZyB3aXRoIHRoZSBWYWN1dW1CdWZmZXJVc2FnZUxp bWl0IGdsb2JhbCwgdGhlCnJpbmctc2l6ZSBwbHVtYmluZyB0aHJvdWdoIFZhY3V1bVBhcmFt cyBhbmQgcGFyYWxsZWwgdmFjdXVtLCBhbmQgdmFjdXVtZGIncwotLWJ1ZmZlci11c2FnZS1s aW1pdCBjbGllbnQgb3B0aW9uLiAgcmVhZF9zdHJlYW0ncyBwZXItYmFja2VuZCBwaW4gYnVk Z2V0IGlzCm5vdyBlbmZvcmNlZCBzb2xlbHkgYnkgR2V0UGluTGltaXQoKS9HZXRMb2NhbFBp bkxpbWl0KCksIHdoaWNoIGFscmVhZHkgYXBwbGllZAphbmQgaXMgdW5jaGFuZ2VkIGZvciB0 aGUgKGZvcm1lcmx5IHVuaXZlcnNhbCkgbm8tc3RyYXRlZ3kgY2FzZS4KCkRvY3VtZW50YXRp b24gYW5kIHRoZSBzdGF0cy9hbWNoZWNrIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHVwZGF0ZWQg dG8gZHJvcCB0aGUKcmVtb3ZlZCBjb250ZXh0cyBhbmQgb3B0aW9ucy4KLS0tCiBjb250cmli L2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgICAgICAgfCAgMTYgKy0KIGNvbnRy aWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwgICAgICAgICAgICB8ICAxNiArLQogY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9naW4uYyAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBj b250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jICAgICAgICAgICAgICAgfCAgIDMgLQog Y29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAgICAgIHwgIDExICst CiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg LQogY29udHJpYi9ibG9vbS9ibHV0aWxzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBjb250cmliL2Jsb29tL2JsdmFjdXVtLmMgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgLQogY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMgICAgICAgICAgICAgICAgIHwg ICAyICstCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAgICAgICAg fCAgIDEgLQogY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyAgICAgICAgICAgICAg IHwgICAxIC0KIGNvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgICAgICAg ICB8ICAgNyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyAgICAgICAg ICAgIHwgICAzIC0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYyAgICAgICAg ICAgICB8ICAgOSArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jICAgICAg ICAgICAgIHwgIDM3ICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgfCAgMzAgLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAg ICAgICAgICAgICB8ICAzOCArLQogZG9jL3NyYy9zZ21sL3JlZi9hbmFseXplLnNnbWwgICAg ICAgICAgICAgICAgIHwgIDIxIC0KIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAg ICAgICAgICAgICAgICB8ICAyNSAtCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f cmV2bWFwLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5p bnNlcnQuYyAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnV0aWwuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2ludmFjdXVtLmMgICAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdC5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWN1dW0uYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNob3ZmbC5jICAgICAgICAgICAgfCAgNTUgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA0ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oaW8uYyAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAyMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICAgICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYyAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAg ICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAg ICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgICAg ICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAg ICAgICAgICAgICAgICAgfCAxMTggKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgICAgICAgICB8ICAyMSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2RhdGFjaGVja3N1bV9zdGF0ZS5jICAgfCAgMzMgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YWlvL3JlYWRfc3RyZWFtLmMgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvUkVBRE1FICAgICAgICAgICAgIHwgIDQ0IC0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxODUgKysrLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDQzNCArLS0tLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZnJlZXNwYWNlL2ZyZWVzcGFjZS5jICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgICAgICAgICAgICAg ICAgIHwgIDExICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyAg ICAgICAgfCAgNjAgKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAg ICAgICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQgICAgIHwgIDEwIC0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZSB8ICAgMyAtCiBzcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYyAgICAgICAg ICAgICAgICAgICAgfCAgMTMgLQogc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jICAgICAg ICAgICAgICAgICAgIHwgIDIxIC0KIHNyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuaCAgICAg ICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCAgICAg ICAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaCAgICAg ICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oaW8uaCAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Zh Y3V1bS5oICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggICAgICAgICAgICAgICAgICAgICAgIHwgICA5IC0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5o ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWYuaCAgICAgICAgICAgICAgICAgICAgIHwgICA3IC0KIHNyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmX2ludGVybmFscy5oICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvc3Rv cmFnZS9idWZtZ3IuaCAgICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3JlYWRfc3RyZWFtLmggICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2d1Y19ob29rcy5oICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLmMgICAgICAgICAgfCAgIDcgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0ICAgICAgICAgICB8IDEwNyArLS0tLQogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0ICAgICAgICAgIHwgIDE5IC0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbCAgICAgICAgICAgICAgICB8ICA1NiArLS0K IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwgICAgICAgICAgICAgICB8ICAxNSAt CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIg LQogODIgZmlsZXMgY2hhbmdlZCwgMjY4IGluc2VydGlvbnMoKyksIDE1NTkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAu b3V0IGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CmluZGV4IDk3 OWU1ZTguLjU2OWIwMjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9j aGVja19oZWFwLm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVh cC5vdXQKQEAgLTY3LDExICs2NywxMSBAQCBJTlNFUlQgSU5UTyBoZWFwdGVzdCAoYSwgYikK IAkoU0VMRUNUIGdzLCByZXBlYXQoJ3gnLCBncykKIAkJRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSw1MCkgZ3MpOwogLS0gcGdfc3RhdF9pbyB0ZXN0OgotLS0gdmVyaWZ5X2hlYXBhbSBhbHdh eXMgdXNlcyBhIEJBU19CVUxLUkVBRCBCdWZmZXJBY2Nlc3NTdHJhdGVneSwgd2hlcmVhcyBh Ci0tLSBzZXF1ZW50aWFsIHNjYW4gZG9lcyBzbyBvbmx5IGlmIHRoZSB0YWJsZSBpcyBsYXJn ZSBlbm91Z2ggd2hlbiBjb21wYXJlZCB0bwotLS0gc2hhcmVkIGJ1ZmZlcnMgKHNlZSBpbml0 c2NhbigpKS4gQ1JFQVRFIERBVEFCQVNFIC4uLiBhbHNvIHVuY29uZGl0aW9uYWxseQotLS0g dXNlcyBhIEJBU19CVUxLUkVBRCBzdHJhdGVneSwgYnV0IHdlIGhhdmUgY2hvc2VuIHRvIHVz ZSBhIHRhYmxlc3BhY2UgYW5kCi0tLSB2ZXJpZnlfaGVhcGFtIHRvIHByb3ZpZGUgY292ZXJh Z2UgaW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKKy0tIHZlcmlmeV9oZWFw YW0gcmVhZHMgdGhlIGhlYXAgdGhyb3VnaCB0aGUgYnVmZmVyIG1hbmFnZXI7IHdpdGggdGhl CistLSBjb29saW5nLXN0YWdlIGNsb2NrIHN3ZWVwIHRoZXJlIGFyZSBubyBwZXItc3RyYXRl Z3kgSU8gY29udGV4dHMsIHNvIHRoZQorLS0gcmVhZHMgYXJlIGNvdW50ZWQgaW4gdGhlICdu b3JtYWwnIGNvbnRleHQuICBDUkVBVEUgREFUQUJBU0UgLi4uIGxpa2V3aXNlCistLSByZWFk cyB0aHJvdWdoIHRoZSBub3JtYWwgY29udGV4dCwgYnV0IHdlIGhhdmUgY2hvc2VuIHRvIHVz ZSBhIHRhYmxlc3BhY2UKKy0tIGFuZCB2ZXJpZnlfaGVhcGFtIHRvIHByb3ZpZGUgY292ZXJh Z2UgaW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKIC0tIG9wZXJhdGlvbiB0 byB0aGUgbWFpbiByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCiAtLQogLS0gQ3JlYXRlIGFuIGFs dGVybmF0aXZlIHRhYmxlc3BhY2UgYW5kIG1vdmUgdGhlIGhlYXB0ZXN0IHRhYmxlIHRvIGl0 LCBjYXVzaW5nCkBAIC04Myw3ICs4Myw3IEBAIElOU0VSVCBJTlRPIGhlYXB0ZXN0IChhLCBi KQogU0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsKIENSRUFURSBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGMgTE9DQVRJT04gJyc7CiBTRUxFQ1Qg c3VtKHJlYWRzKSBBUyBzdGF0c19idWxrcmVhZHNfYmVmb3JlCi0gIEZST00gcGdfc3RhdF9p byBXSEVSRSBjb250ZXh0ID0gJ2J1bGtyZWFkJyBcZ3NldAorICBGUk9NIHBnX3N0YXRfaW8g V0hFUkUgY29udGV4dCA9ICdub3JtYWwnIEFORCBvYmplY3QgPSAncmVsYXRpb24nIFxnc2V0 CiBCRUdJTjsKIEFMVEVSIFRBQkxFIGhlYXB0ZXN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGVzdF9zdGF0c190YmxzcGM7CiAtLSBDaGVjayB0aGF0IHZhbGlkIG9wdGlvbnMgYXJlIG5v dCByZWplY3RlZCBub3IgY29ycnVwdGlvbiByZXBvcnRlZApAQCAtMTExLDcgKzExMSw3IEBA IFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbShyZWxhdGlvbiA6PSAnaGVhcHRlc3QnLCBz dGFydGJsb2NrIDo9IDAsIGVuZGJsb2NrIDo9CiBDT01NSVQ7CiAtLSB2ZXJpZnlfaGVhcGFt IHNob3VsZCBoYXZlIHJlYWQgaW4gdGhlIHBhZ2Ugd3JpdHRlbiBvdXQgYnkKIC0tICAgQUxU RVIgVEFCTEUgLi4uIFNFVCBUQUJMRVNQQUNFIC4uLgotLS0gY2F1c2luZyBhbiBhZGRpdGlv bmFsIGJ1bGtyZWFkLCB3aGljaCBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHBnX3N0YXRfaW8u CistLSBjYXVzaW5nIGFkZGl0aW9uYWwgcmVhZHMsIHdoaWNoIHNob3VsZCBiZSByZWZsZWN0 ZWQgaW4gcGdfc3RhdF9pby4KIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK ICBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpAQCAtMTE5LDcgKzExOSw3IEBAIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKICgxIHJvdykKIAogU0VMRUNUIHN1bShyZWFkcykgQVMgc3RhdHNfYnVsa3JlYWRzX2Fm dGVyCi0gIEZST00gcGdfc3RhdF9pbyBXSEVSRSBjb250ZXh0ID0gJ2J1bGtyZWFkJyBcZ3Nl dAorICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICdub3JtYWwnIEFORCBvYmpl Y3QgPSAncmVsYXRpb24nIFxnc2V0CiBTRUxFQ1QgOnN0YXRzX2J1bGtyZWFkc19hZnRlciA+ IDpzdGF0c19idWxrcmVhZHNfYmVmb3JlOwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNxbCBiL2NvbnRyaWIv YW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKaW5kZXggMTc0NWJhZS4uNjFmNzEwZCAxMDA2 NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNxbAorKysgYi9jb250 cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsCkBAIC0yNywxMSArMjcsMTEgQEAgSU5T RVJUIElOVE8gaGVhcHRlc3QgKGEsIGIpCiAJCUZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNTAp IGdzKTsKIAogLS0gcGdfc3RhdF9pbyB0ZXN0OgotLS0gdmVyaWZ5X2hlYXBhbSBhbHdheXMg dXNlcyBhIEJBU19CVUxLUkVBRCBCdWZmZXJBY2Nlc3NTdHJhdGVneSwgd2hlcmVhcyBhCi0t LSBzZXF1ZW50aWFsIHNjYW4gZG9lcyBzbyBvbmx5IGlmIHRoZSB0YWJsZSBpcyBsYXJnZSBl bm91Z2ggd2hlbiBjb21wYXJlZCB0bwotLS0gc2hhcmVkIGJ1ZmZlcnMgKHNlZSBpbml0c2Nh bigpKS4gQ1JFQVRFIERBVEFCQVNFIC4uLiBhbHNvIHVuY29uZGl0aW9uYWxseQotLS0gdXNl cyBhIEJBU19CVUxLUkVBRCBzdHJhdGVneSwgYnV0IHdlIGhhdmUgY2hvc2VuIHRvIHVzZSBh IHRhYmxlc3BhY2UgYW5kCi0tLSB2ZXJpZnlfaGVhcGFtIHRvIHByb3ZpZGUgY292ZXJhZ2Ug aW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKKy0tIHZlcmlmeV9oZWFwYW0g cmVhZHMgdGhlIGhlYXAgdGhyb3VnaCB0aGUgYnVmZmVyIG1hbmFnZXI7IHdpdGggdGhlCist LSBjb29saW5nLXN0YWdlIGNsb2NrIHN3ZWVwIHRoZXJlIGFyZSBubyBwZXItc3RyYXRlZ3kg SU8gY29udGV4dHMsIHNvIHRoZQorLS0gcmVhZHMgYXJlIGNvdW50ZWQgaW4gdGhlICdub3Jt YWwnIGNvbnRleHQuICBDUkVBVEUgREFUQUJBU0UgLi4uIGxpa2V3aXNlCistLSByZWFkcyB0 aHJvdWdoIHRoZSBub3JtYWwgY29udGV4dCwgYnV0IHdlIGhhdmUgY2hvc2VuIHRvIHVzZSBh IHRhYmxlc3BhY2UKKy0tIGFuZCB2ZXJpZnlfaGVhcGFtIHRvIHByb3ZpZGUgY292ZXJhZ2Ug aW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKIC0tIG9wZXJhdGlvbiB0byB0 aGUgbWFpbiByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCiAtLQogLS0gQ3JlYXRlIGFuIGFsdGVy bmF0aXZlIHRhYmxlc3BhY2UgYW5kIG1vdmUgdGhlIGhlYXB0ZXN0IHRhYmxlIHRvIGl0LCBj YXVzaW5nCkBAIC00Myw3ICs0Myw3IEBAIElOU0VSVCBJTlRPIGhlYXB0ZXN0IChhLCBiKQog U0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsKIENSRUFURSBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGMgTE9DQVRJT04gJyc7CiBTRUxFQ1Qgc3Vt KHJlYWRzKSBBUyBzdGF0c19idWxrcmVhZHNfYmVmb3JlCi0gIEZST00gcGdfc3RhdF9pbyBX SEVSRSBjb250ZXh0ID0gJ2J1bGtyZWFkJyBcZ3NldAorICBGUk9NIHBnX3N0YXRfaW8gV0hF UkUgY29udGV4dCA9ICdub3JtYWwnIEFORCBvYmplY3QgPSAncmVsYXRpb24nIFxnc2V0CiBC RUdJTjsKIEFMVEVSIFRBQkxFIGhlYXB0ZXN0IFNFVCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVz dF9zdGF0c190YmxzcGM7CiAtLSBDaGVjayB0aGF0IHZhbGlkIG9wdGlvbnMgYXJlIG5vdCBy ZWplY3RlZCBub3IgY29ycnVwdGlvbiByZXBvcnRlZApAQCAtNTYsMTAgKzU2LDEwIEBAIENP TU1JVDsKIAogLS0gdmVyaWZ5X2hlYXBhbSBzaG91bGQgaGF2ZSByZWFkIGluIHRoZSBwYWdl IHdyaXR0ZW4gb3V0IGJ5CiAtLSAgIEFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSAu Li4KLS0tIGNhdXNpbmcgYW4gYWRkaXRpb25hbCBidWxrcmVhZCwgd2hpY2ggc2hvdWxkIGJl IHJlZmxlY3RlZCBpbiBwZ19zdGF0X2lvLgorLS0gY2F1c2luZyBhZGRpdGlvbmFsIHJlYWRz LCB3aGljaCBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHBnX3N0YXRfaW8uCiBTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1Qgc3VtKHJlYWRzKSBBUyBzdGF0c19i dWxrcmVhZHNfYWZ0ZXIKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAnYnVs a3JlYWQnIFxnc2V0CisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBjb250ZXh0ID0gJ25vcm1h bCcgQU5EIG9iamVjdCA9ICdyZWxhdGlvbicgXGdzZXQKIFNFTEVDVCA6c3RhdHNfYnVsa3Jl YWRzX2FmdGVyID4gOnN0YXRzX2J1bGtyZWFkc19iZWZvcmU7CiAKIENSRUFURSBST0xFIHJl Z3Jlc3NfaGVhcHRlc3Rfcm9sZTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJp ZnlfZ2luLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5jCmluZGV4IGZhMDY2ODku LmVmMmU2NDQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfZ2luLmMKKysr IGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9naW4uYwpAQCAtNjMsOCArNjMsNyBAQCBzdGF0 aWMgdm9pZCBnaW5fY2hlY2tfcGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVsYXRpb24gcmVs LAogc3RhdGljIHZvaWQgY2hlY2tfaW5kZXhfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWZmZXIsIEJsb2NrTnVtYmVyIGJsb2NrTm8pOwogc3RhdGljIEluZGV4VHVwbGUgZ2luX3Jl ZmluZF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJQmxvY2tOdW1iZXIgcGFyZW50 Ymxrbm8sCi0JCQkJCQkJCQlCbG9ja051bWJlciBjaGlsZGJsa25vLAotCQkJCQkJCQkJQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOworCQkJCQkJCQkJQmxvY2tOdW1iZXIgY2hp bGRibGtubyk7CiBzdGF0aWMgSXRlbUlkIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxvY2ssIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyIG9mZnNldCk7CiAKQEAgLTEzMyw3ICsxMzIsNiBAQCBnaW5SZWFkVHVwbGVXaXRo b3V0U3RhdGUoSW5kZXhUdXBsZSBpdHVwLCBpbnQgKm5pdGVtcykKIHN0YXRpYyB2b2lkCiBn aW5fY2hlY2tfcG9zdGluZ190cmVlX3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgcG9zdGluZ190cmVlX3Jvb3QpCiB7Ci0JQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwog CUdpblBvc3RpbmdUcmVlU2Nhbkl0ZW0gKnN0YWNrOwogCU1lbW9yeUNvbnRleHQgbWN0eDsK IAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNzEsOCArMTY5LDcgQEAgZ2luX2No ZWNrX3Bvc3RpbmdfdHJlZV9wYXJlbnRfa2V5c19jb25zaXN0ZW5jeShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIHBvc3RpbmcKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0J CWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgc3RhY2st PmJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgc3RyYXRlZ3kpOworCQlidWZmZXIgPSBS ZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIHN0YWNrLT5ibGtubywgUkJN X05PUk1BTCk7CiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fU0hBUkUpOwogCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC0zOTEsNyArMzg4LDYgQEAgZ2luX2NoZWNr X3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJICB2b2lk ICpjYWxsYmFja19zdGF0ZSwKIAkJCQkJCQkJICBib29sIHJlYWRvbmx5KQogewotCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtS RUFEKTsKIAlHaW5TY2FuSXRlbSAqc3RhY2s7CiAJTWVtb3J5Q29udGV4dCBtY3R4OwogCU1l bW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTQzMCw4ICs0MjYsNyBAQCBnaW5fY2hlY2tf cGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVsYXRpb24gcmVsLAogCiAJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJ Tl9GT1JLTlVNLCBzdGFjay0+Ymxrbm8sCi0JCQkJCQkJCQlSQk1fTk9STUFMLCBzdHJhdGVn eSk7CisJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwg c3RhY2stPmJsa25vLCBSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEdJTl9T SEFSRSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJCW1heG9mZiA9IFBh Z2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CkBAIC01NjcsNyArNTYyLDcgQEAgZ2luX2No ZWNrX3BhcmVudF9rZXlzX2NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwKIAkJCQkJICovCiAJ CQkJCXBmcmVlKHN0YWNrLT5wYXJlbnR0dXApOwogCQkJCQlzdGFjay0+cGFyZW50dHVwID0g Z2luX3JlZmluZF9wYXJlbnQocmVsLCBzdGFjay0+cGFyZW50YmxrLAotCQkJCQkJCQkJCQkJ CQkgc3RhY2stPmJsa25vLCBzdHJhdGVneSk7CisJCQkJCQkJCQkJCQkJCSBzdGFjay0+Ymxr bm8pOwogCiAJCQkJCS8qIFdlIGZvdW5kIGl0IC0gbWFrZSBhIGZpbmFsIGNoZWNrIGJlZm9y ZSBmYWlsaW5nICovCiAJCQkJCWlmICghc3RhY2stPnBhcmVudHR1cCkKQEAgLTcxOSw3ICs3 MTQsNyBAQCBjaGVja19pbmRleF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZmZlciwg QmxvY2tOdW1iZXIgYmxvY2tObykKICAqLwogc3RhdGljIEluZGV4VHVwbGUKIGdpbl9yZWZp bmRfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgcGFyZW50Ymxrbm8sCi0JCQkJ ICBCbG9ja051bWJlciBjaGlsZGJsa25vLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVn eSkKKwkJCQkgIEJsb2NrTnVtYmVyIGNoaWxkYmxrbm8pCiB7CiAJQnVmZmVyCQlwYXJlbnRi dWY7CiAJUGFnZQkJcGFyZW50cGFnZTsKQEAgLTcyNyw4ICs3MjIsNyBAQCBnaW5fcmVmaW5k X3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIHBhcmVudGJsa25vLAogCQkJCXBh cmVudF9tYXhvZmY7CiAJSW5kZXhUdXBsZQlyZXN1bHQgPSBOVUxMOwogCi0JcGFyZW50YnVm ID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBwYXJlbnRibGtubywg UkJNX05PUk1BTCwKLQkJCQkJCQkJICAgc3RyYXRlZ3kpOworCXBhcmVudGJ1ZiA9IFJlYWRC dWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgcGFyZW50Ymxrbm8sIFJCTV9OT1JN QUwpOwogCiAJTG9ja0J1ZmZlcihwYXJlbnRidWYsIEdJTl9TSEFSRSk7CiAJcGFyZW50cGFn ZSA9IEJ1ZmZlckdldFBhZ2UocGFyZW50YnVmKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1j aGVjay92ZXJpZnlfaGVhcGFtLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5j CmluZGV4IDIwZmY1OGEuLmU0MzM2ZWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpA QCAtMTI2LDcgKzEyNiw2IEBAIHR5cGVkZWYgc3RydWN0IEhlYXBDaGVja0NvbnRleHQKIAkg KiByZWNlbnQgYmxvY2sgaW4gdGhlIGJ1ZmZlciB5aWVsZGVkIGJ5IHRoZSByZWFkIHN0cmVh bSBBUEkuCiAJICovCiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JQnVmZmVyQWNjZXNzU3RyYXRl Z3kgYnN0cmF0ZWd5OwogCUJ1ZmZlcgkJYnVmZmVyOwogCVBhZ2UJCXBhZ2U7CiAKQEAgLTM3 NCw3ICszNzMsNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JF VFVSTl9OVUxMKCk7CiAJfQogCi0JY3R4LmJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 KEJBU19CVUxLUkVBRCk7CiAJY3R4LmJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJY3R4LnBh Z2UgPSBOVUxMOwogCkBAIC00NzIsNyArNDcwLDYgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5D VElPTl9BUkdTKQogCX0KIAogCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9u KHN0cmVhbV9mbGFncywKLQkJCQkJCQkJCQljdHguYnN0cmF0ZWd5LAogCQkJCQkJCQkJCWN0 eC5yZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCXN0cmVhbV9jYiwK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250cmli L2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDNlZjJkNjYuLjE4Y2Q4OTIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtODgsOCArODgsNiBAQCB0eXBlZGVmIHN0cnVj dCBCdHJlZUNoZWNrU3RhdGUKIAlib29sCQljaGVja3VuaXF1ZTsKIAkvKiBQZXItcGFnZSBj b250ZXh0ICovCiAJTWVtb3J5Q29udGV4dCB0YXJnZXRjb250ZXh0OwotCS8qIEJ1ZmZlciBh Y2Nlc3Mgc3RyYXRlZ3kgKi8KLQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBjaGVja3N0cmF0ZWd5 OwogCiAJLyoKIAkgKiBJbmZvIGZvciB1bmlxdWVuZXNzIGNoZWNraW5nLiBGaWxsIHRoaXMg ZmllbGQgYW5kIHRoZSBvbmUgYmVsb3cgb25jZQpAQCAtNDkwLDcgKzQ4OCw2IEBAIGJ0X2No ZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBo ZWFwa2V5c3BhY2UsCiAJc3RhdGUtPnRhcmdldGNvbnRleHQgPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCQkgImFtY2hlY2sgY29u dGV4dCIsCiAJCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7Ci0Jc3RhdGUt PmNoZWNrc3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwogCiAJ LyogR2V0IHRydWUgcm9vdCBibG9jayBmcm9tIG1ldGEtcGFnZSAqLwogCW1ldGFwYWdlID0g cGFsbG9jX2J0cmVlX3BhZ2Uoc3RhdGUsIEJUUkVFX01FVEFQQUdFKTsKQEAgLTExMTUsNyAr MTExMiw3IEBAIGJ0X3JlY2hlY2tfc2libGluZ19saW5rcyhCdHJlZUNoZWNrU3RhdGUgKnN0 YXRlLAogCiAJCS8qIENvdXBsZSBsb2NrcyBpbiB0aGUgdXN1YWwgb3JkZXIgZm9yIG5idHJl ZTogIExlZnQgdG8gcmlnaHQgKi8KIAkJbGJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChzdGF0 ZS0+cmVsLCBNQUlOX0ZPUktOVU0sIGxlZnRjdXJyZW50LAotCQkJCQkJCQkgIFJCTV9OT1JN QUwsIHN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJCQkJCQkJICBSQk1fTk9STUFMKTsKIAkJ TG9ja0J1ZmZlcihsYnVmLCBCVF9SRUFEKTsKIAkJX2J0X2NoZWNrcGFnZShzdGF0ZS0+cmVs LCBsYnVmKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CkBAIC0xMTM4LDggKzEx MzUsNyBAQCBidF9yZWNoZWNrX3NpYmxpbmdfbGlua3MoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSwKIAkJaWYgKG5ld3RhcmdldGJsb2NrICE9IGxlZnRjdXJyZW50KQogCQl7CiAJCQluZXd0 YXJnZXRidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc3RhdGUtPnJlbCwgTUFJTl9GT1JLTlVN LAotCQkJCQkJCQkJCQkgIG5ld3RhcmdldGJsb2NrLCBSQk1fTk9STUFMLAotCQkJCQkJCQkJ CQkgIHN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJCQkJCQkJCQkJICBuZXd0YXJnZXRibG9j aywgUkJNX05PUk1BTCk7CiAJCQlMb2NrQnVmZmVyKG5ld3RhcmdldGJ1ZiwgQlRfUkVBRCk7 CiAJCQlfYnRfY2hlY2twYWdlKHN0YXRlLT5yZWwsIG5ld3RhcmdldGJ1Zik7CiAJCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShuZXd0YXJnZXRidWYpOwpAQCAtMzMwMCw4ICszMjk2LDcgQEAg cGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIg YmxvY2tudW0pCiAJICogV2UgY29weSB0aGUgcGFnZSBpbnRvIGxvY2FsIHN0b3JhZ2UgdG8g YXZvaWQgaG9sZGluZyBwaW4gb24gdGhlIGJ1ZmZlcgogCSAqIGxvbmdlciB0aGFuIHdlIG11 c3QuCiAJICovCi0JYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHN0YXRlLT5yZWwsIE1B SU5fRk9SS05VTSwgYmxvY2tudW0sIFJCTV9OT1JNQUwsCi0JCQkJCQkJCXN0YXRlLT5jaGVj a3N0cmF0ZWd5KTsKKwlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc3RhdGUtPnJlbCwg TUFJTl9GT1JLTlVNLCBibG9ja251bSwgUkJNX05PUk1BTCk7CiAJTG9ja0J1ZmZlcihidWZm ZXIsIEJUX1JFQUQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2Fu LmMgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5jCmluZGV4IDFhMGU0MjAuLmVkNjJkNWMgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMKKysrIGIvY29udHJpYi9ibG9vbS9i bHNjYW4uYwpAQCAtODAsNyArODAsNiBAQCBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNj YW4sIFRJREJpdG1hcCAqdGJtKQogCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCW5wYWdlczsK IAlpbnQJCQlpOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJhczsKIAlCbG9vbVNjYW5PcGFx dWUgc28gPSAoQmxvb21TY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CiAJQmxvY2tSYW5nZVJl YWRTdHJlYW1Qcml2YXRlIHA7CiAJUmVhZFN0cmVhbSAqc3RyZWFtOwpAQCAtMTEzLDExICsx MTIsNiBAQCBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1hcCAqdGJt KQogCQl9CiAJfQogCi0JLyoKLQkgKiBXZSdyZSBnb2luZyB0byByZWFkIHRoZSB3aG9sZSBp bmRleC4gVGhpcyBpcyB3aHkgd2UgdXNlIGFwcHJvcHJpYXRlCi0JICogYnVmZmVyIGFjY2Vz cyBzdHJhdGVneS4KLQkgKi8KLQliYXMgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JF QUQpOwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3Moc2Nhbi0+aW5kZXhS ZWxhdGlvbik7CiAJcGdzdGF0X2NvdW50X2luZGV4X3NjYW4oc2Nhbi0+aW5kZXhSZWxhdGlv bik7CiAJaWYgKHNjYW4tPmluc3RydW1lbnQpCkBAIC0xMzMsNyArMTI3LDYgQEAgYmxnZXRi aXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAkgKi8KIAlzdHJl YW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9GVUxMIHwKIAkJ CQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJYmFzLAogCQkJ CQkJCQkJCXNjYW4tPmluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAog CQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLApAQCAtMTg0LDcgKzE3Nyw2 IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAK IAlBc3NlcnQocmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZh bGlkQnVmZmVyKTsKIAlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsKLQlGcmVlQWNjZXNzU3Ry YXRlZ3koYmFzKTsKIAogCXJldHVybiBudGlkczsKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIv Ymxvb20vYmx1dGlscy5jIGIvY29udHJpYi9ibG9vbS9ibHV0aWxzLmMKaW5kZXggNTExMWNk Yy4uNmMxZWMxNSAxMDA2NDQKLS0tIGEvY29udHJpYi9ibG9vbS9ibHV0aWxzLmMKKysrIGIv Y29udHJpYi9ibG9vbS9ibHV0aWxzLmMKQEAgLTM5Miw3ICszOTIsNyBAQCBCbG9vbU5ld0J1 ZmZlcihSZWxhdGlvbiBpbmRleCkKIAl9CiAKIAkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAq LwotCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZP UktOVU0sIE5VTEwsCisJYnVmZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRl eCksIE1BSU5fRk9SS05VTSwKIAkJCQkJCQkgICBFQl9MT0NLX0ZJUlNUKTsKIAogCXJldHVy biBidWZmZXI7CkBAIC00NjAsNyArNDYwLDcgQEAgQmxvb21Jbml0TWV0YXBhZ2UoUmVsYXRp b24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSkKIAkgKiBibG9jayBudW1iZXIgMCAoQkxP T01fTUVUQVBBR0VfQkxLTk8pLiAgTm8gbmVlZCB0byBob2xkIHRoZSBleHRlbnNpb24KIAkg KiBsb2NrIGJlY2F1c2UgdGhlcmUgY2Fubm90IGJlIGNvbmN1cnJlbnQgaW5zZXJ0ZXJzIHll dC4KIAkgKi8KLQltZXRhQnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBmb3Jr bnVtLCBQX05FVywgUkJNX05PUk1BTCwgTlVMTCk7CisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZm ZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwpOwogCUxvY2tC dWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAlBc3NlcnQoQnVm ZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikgPT0gQkxPT01fTUVUQVBBR0VfQkxLTk8p OwogCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMgYi9jb250cmliL2Js b29tL2JsdmFjdXVtLmMKaW5kZXggNmJlYjFjMi4uMDhkNzcwNSAxMDA2NDQKLS0tIGEvY29u dHJpYi9ibG9vbS9ibHZhY3V1bS5jCisrKyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwpA QCAtNjYsNyArNjYsNiBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJ bmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2Jl Z2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJCQkJCQkJCQlSRUFE X1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCi0J CQkJCQkJCQkJaW5mby0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJaW5kZXgsCiAJCQkJCQkJCQkJ TUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLApA QCAtMjE5LDcgKzIxOCw2IEBAIGJsdmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmlu Zm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJc3RyZWFtID0gcmVhZF9zdHJl YW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJCQkJCQkJ CVJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElO RywKLQkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKIAkJCQkJCQkJCQlpbmRleCwKIAkJCQkJ CQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1f Y2IsCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2UuYyBiL2NvbnRy aWIvcGFnZWluc3BlY3QvcmF3cGFnZS5jCmluZGV4IGQxMzY1OTMuLmJiZThlZGYgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvcmF3cGFnZS5jCisrKyBiL2NvbnRyaWIvcGFn ZWluc3BlY3QvcmF3cGFnZS5jCkBAIC0xODgsNyArMTg4LDcgQEAgZ2V0X3Jhd19wYWdlX2lu dGVybmFsKHRleHQgKnJlbG5hbWUsIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIg Ymxrbm8pCiAKIAkvKiBUYWtlIGEgdmVyYmF0aW0gY29weSBvZiB0aGUgcGFnZSAqLwogCi0J YnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgZm9ya251bSwgYmxrbm8sIFJCTV9OT1JN QUwsIE5VTEwpOworCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIGZvcmtudW0sIGJs a25vLCBSQk1fTk9STUFMKTsKIAlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUp OwogCiAJbWVtY3B5KHJhd19wYWdlX2RhdGEsIEJ1ZmZlckdldFBhZ2UoYnVmKSwgQkxDS1Na KTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jIGIvY29u dHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKaW5kZXggZGViNGMyNi4uMzNhZDg4ZSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKKysrIGIvY29u dHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKQEAgLTYzMCw3ICs2MzAsNiBAQCBhdXRv cHJld2FybV9kYXRhYmFzZV9tYWluKERhdHVtIG1haW5fYXJnKQogCQkJc3RyZWFtID0gcmVh ZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJ CQkJCQkJCQkJUkVBRF9TVFJFQU1fREVGQVVMVCB8CiAJCQkJCQkJCQkJCQlSRUFEX1NUUkVB TV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQkJcmVsLAog CQkJCQkJCQkJCQkJcC5mb3JrbnVtLAogCQkJCQkJCQkJCQkJYXB3X3JlYWRfc3RyZWFtX25l eHRfYmxvY2ssCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3ByZXdhcm0vcGdfcHJld2FybS5j IGIvY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYwppbmRleCBjMjcxNjA4Li43MTZh Njc1IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3ByZXdhcm0vcGdfcHJld2FybS5jCisrKyBi L2NvbnRyaWIvcGdfcHJld2FybS9wZ19wcmV3YXJtLmMKQEAgLTI1MSw3ICsyNTEsNiBAQCBw Z19wcmV3YXJtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2Jl Z2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJCQkJCQkJCQkJUkVB RF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywK LQkJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQkJcmVsLAogCQkJCQkJCQkJCQlmb3JrTnVt YmVyLAogCQkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgYi9jb250cmliL3Bn X3Zpc2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCmluZGV4IGRmYWIwYjYuLmNjYjgyOWEgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMKKysrIGIv Y29udHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYwpAQCAtNDg4LDcgKzQ4OCw2 IEBAIGNvbGxlY3RfdmlzaWJpbGl0eV9kYXRhKE9pZCByZWxpZCwgYm9vbCBpbmNsdWRlX3Bk KQogCXZiaXRzCSAgICppbmZvOwogCUJsb2NrTnVtYmVyIGJsa25vOwogCUJ1ZmZlcgkJdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVn eSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAJQmxvY2tSYW5nZVJlYWRT dHJlYW1Qcml2YXRlIHA7CiAJUmVhZFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKIApAQCAtNTE0 LDcgKzUxMyw2IEBAIGNvbGxlY3RfdmlzaWJpbGl0eV9kYXRhKE9pZCByZWxpZCwgYm9vbCBp bmNsdWRlX3BkKQogCQkgKi8KIAkJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRp b24oUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRD SElORywKLQkJCQkJCQkJCQkJYnN0cmF0ZWd5LAogCQkJCQkJCQkJCQlyZWwsCiAJCQkJCQkJ CQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1f Y2IsCkBAIC01MzgsOCArNTM2LDcgQEAgY29sbGVjdF92aXNpYmlsaXR5X2RhdGEoT2lkIHJl bGlkLCBib29sIGluY2x1ZGVfcGQpCiAKIAkJLyoKIAkJICogUGFnZS1sZXZlbCBkYXRhIHJl cXVpcmVzIHJlYWRpbmcgZXZlcnkgYmxvY2ssIHNvIG9ubHkgZ2V0IGl0IGlmIHRoZQotCQkg KiBjYWxsZXIgbmVlZHMgaXQuICBVc2UgYSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5LCB0b28s IHRvIHByZXZlbnQKLQkJICogY2FjaGUtdHJhc2hpbmcuCisJCSAqIGNhbGxlciBuZWVkcyBp dC4KIAkJICovCiAJCWlmIChpbmNsdWRlX3BkKQogCQl7CkBAIC03MDAsNyArNjk3LDYgQEAg Y29sbGVjdF9jb3JydXB0X2l0ZW1zKE9pZCByZWxpZCwgYm9vbCBhbGxfdmlzaWJsZSwgYm9v bCBhbGxfZnJvemVuKQogCVJlbGF0aW9uCXJlbDsKIAljb3JydXB0X2l0ZW1zICppdGVtczsK IAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwogCVRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCXN0cnVj dCBjb2xsZWN0X2NvcnJ1cHRfaXRlbXNfcmVhZF9zdHJlYW1fcHJpdmF0ZSBwOwogCVJlYWRT dHJlYW0gKnN0cmVhbTsKQEAgLTczNCw3ICs3MzAsNiBAQCBjb2xsZWN0X2NvcnJ1cHRfaXRl bXMoT2lkIHJlbGlkLCBib29sIGFsbF92aXNpYmxlLCBib29sIGFsbF9mcm96ZW4pCiAJcC5h bGxfZnJvemVuID0gYWxsX2Zyb3plbjsKIAlwLmFsbF92aXNpYmxlID0gYWxsX3Zpc2libGU7 CiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVM TCwKLQkJCQkJCQkJCQlic3RyYXRlZ3ksCiAJCQkJCQkJCQkJcmVsLAogCQkJCQkJCQkJCU1B SU5fRk9SS05VTSwKIAkJCQkJCQkJCQljb2xsZWN0X2NvcnJ1cHRfaXRlbXNfcmVhZF9zdHJl YW1fbmV4dF9ibG9jaywKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0 YXBwcm94LmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IDIx ZTBiNTAuLjhlMTdkNDggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0 YXBwcm94LmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYwpAQCAt MTE2LDEzICsxMTYsMTEgQEAgc3RhdGljIHZvaWQKIHN0YXRhcHByb3hfaGVhcChSZWxhdGlv biByZWwsIG91dHB1dF90eXBlICpzdGF0KQogewogCUJsb2NrTnVtYmVyIG5ibG9ja3M7Ci0J QnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5OwogCVRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbjsKIAlTdGF0QXBwcm94UmVhZFN0cmVhbVByaXZhdGUgcDsKIAlSZWFkU3RyZWFtICpz dHJlYW07CiAKIAlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rp b25JZChyZWwpOwotCWJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVB RCk7CiAKIAluYmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwogCkBA IC0xNDEsNyArMTM5LDYgQEAgc3RhdGFwcHJveF9oZWFwKFJlbGF0aW9uIHJlbCwgb3V0cHV0 X3R5cGUgKnN0YXQpCiAJICogY2F1dGlvbi4KIAkgKi8KIAlzdHJlYW0gPSByZWFkX3N0cmVh bV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9GVUxMLAotCQkJCQkJCQkJCWJzdHJhdGVn eSwKIAkJCQkJCQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJ CXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVhbV9uZXh0LApkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXRpbmRleC5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXRpbmRleC5jCmluZGV4IDg5NTFhZDAuLmEwOTIyYjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bn c3RhdGluZGV4LmMKQEAgLTIxNyw3ICsyMTcsNiBAQCBwZ3N0YXRpbmRleF9pbXBsKFJlbGF0 aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJQmxvY2tOdW1iZXIgbmJsb2Nr czsKIAlCbG9ja051bWJlciBibGtubzsKIAlCVEluZGV4U3RhdCBpbmRleFN0YXQ7Ci0JQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JV TEtSRUFEKTsKIAlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKIAlSZWFkU3RyZWFt ICpzdHJlYW07CiAJQmxvY2tOdW1iZXIgc3RhcnRibGs7CkBAIC0yNTQsNyArMjUzLDcgQEAg cGdzdGF0aW5kZXhfaW1wbChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv KQogCSAqIFJlYWQgbWV0YXBhZ2UKIAkgKi8KIAl7Ci0JCUJ1ZmZlcgkJYnVmZmVyID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCAwLCBSQk1fTk9STUFMLCBic3Ry YXRlZ3kpOworCQlCdWZmZXIJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1B SU5fRk9SS05VTSwgMCwgUkJNX05PUk1BTCk7CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGJ1ZmZlcik7CiAJCUJUTWV0YVBhZ2VEYXRhICptZXRhZCA9IEJUUGFnZUdldE1ldGEo cGFnZSk7CiAKQEAgLTI5MSw3ICsyOTAsNiBAQCBwZ3N0YXRpbmRleF9pbXBsKFJlbGF0aW9u IHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJICovCiAJc3RyZWFtID0gcmVhZF9z dHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJUkVB RF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCWJzdHJhdGVneSwKIAkJCQkJCQkJ CQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3Jhbmdl X3JlYWRfc3RyZWFtX2NiLApAQCAtNjEyLDcgKzYxMCw2IEBAIHBnc3RhdGhhc2hpbmRleChQ R19GVU5DVElPTl9BUkdTKQogCUJsb2NrTnVtYmVyIGJsa25vOwogCVJlbGF0aW9uCXJlbDsK IAlIYXNoSW5kZXhTdGF0IHN0YXRzOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVn eTsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJVHVwbGVEZXNjCXR1cGxlRGVzYzsKIAlEYXR1bQkJ dmFsdWVzWzhdOwpAQCAtNjY1LDkgKzY2Miw2IEBAIHBnc3RhdGhhc2hpbmRleChQR19GVU5D VElPTl9BUkdTKQogCS8qIEdldCB0aGUgY3VycmVudCByZWxhdGlvbiBsZW5ndGggKi8KIAlu YmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwogCi0JLyogcHJlcGFy ZSBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHRoaXMgaW5kZXggKi8KLQlic3RyYXRlZ3kgPSBHZXRB Y2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwotCiAJLyogU2NhbiBhbGwgYmxvY2tzIGV4 Y2VwdCB0aGUgbWV0YXBhZ2UgKDB0aCBwYWdlKSB1c2luZyBzdHJlYW1pbmcgcmVhZHMgKi8K IAlzdGFydGJsayA9IEhBU0hfTUVUQVBBR0UgKyAxOwogCkBAIC02ODAsNyArNjc0LDYgQEAg cGdzdGF0aGFzaGluZGV4KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJc3RyZWFtID0gcmVh ZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJ UkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCWJzdHJhdGVneSwKIAkJCQkJ CQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3Jh bmdlX3JlYWRfc3RyZWFtX2NiLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4 IDZhN2Y4Y2IuLjkwZjc5MzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdz dGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAg LTY0LDIyICs2NCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBwZ3N0YXR0dXBsZV90eXBlCiAJdWlu dDY0CQlmcmVlX3NwYWNlOwkJLyogZnJlZS9yZXVzYWJsZSBzcGFjZSBpbiBieXRlcyAqLwog fSBwZ3N0YXR0dXBsZV90eXBlOwogCi10eXBlZGVmIHZvaWQgKCpwZ3N0YXRfcGFnZSkgKHBn c3RhdHR1cGxlX3R5cGUgKiwgUmVsYXRpb24sIEJsb2NrTnVtYmVyLAotCQkJCQkJCSBCdWZm ZXJBY2Nlc3NTdHJhdGVneSk7Cit0eXBlZGVmIHZvaWQgKCpwZ3N0YXRfcGFnZSkgKHBnc3Rh dHR1cGxlX3R5cGUgKiwgUmVsYXRpb24sIEJsb2NrTnVtYmVyKTsKIAogc3RhdGljIERhdHVt IGJ1aWxkX3Bnc3RhdHR1cGxlX3R5cGUocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwKIAkJCQkJ CQkJCUZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKTsKIHN0YXRpYyBEYXR1bSBwZ3N0YXRfcmVs YXRpb24oUmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbyk7CiBzdGF0aWMg RGF0dW0gcGdzdGF0X2hlYXAoUmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5m byk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfYnRyZWVfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpz dGF0LAotCQkJCQkJCSAgUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJ CQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJICBSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9oYXNoX3Bh Z2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwKLQkJCQkJCQkgUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywKLQkJCQkJCQkgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5 KTsKKwkJCQkJCQkgUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubyk7CiBzdGF0aWMg dm9pZCBwZ3N0YXRfZ2lzdF9wYWdlKHBnc3RhdHR1cGxlX3R5cGUgKnN0YXQsCi0JCQkJCQkJ IFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCi0JCQkJCQkJIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJIFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8pOwogc3RhdGljIERhdHVtIHBnc3RhdF9pbmRleChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIHN0YXJ0LAogCQkJCQkJICBwZ3N0YXRfcGFnZSBwYWdlZm4sIEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9pbmRleF9wYWdlKHBnc3Rh dHR1cGxlX3R5cGUgKnN0YXQsIFBhZ2UgcGFnZSwKQEAgLTM3Niw3ICszNzIsNyBAQCBwZ3N0 YXRfaGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVk KHJlbCwgTUFJTl9GT1JLTlVNLCBibG9jaywKLQkJCQkJCQkJCQlSQk1fTk9STUFMLCBoc2Nh bi0+cnNfc3RyYXRlZ3kpOworCQkJCQkJCQkJCVJCTV9OT1JNQUwpOwogCQkJTG9ja0J1ZmZl cihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJCXN0YXQuZnJlZV9zcGFjZSArPSBQ YWdlR2V0RXhhY3RGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKIAkJCVVubG9j a1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKQEAgLTM4OSw3ICszODUsNyBAQCBwZ3N0YXRfaGVh cChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1B SU5fRk9SS05VTSwgYmxvY2ssCi0JCQkJCQkJCQlSQk1fTk9STUFMLCBoc2Nhbi0+cnNfc3Ry YXRlZ3kpOworCQkJCQkJCQkJUkJNX05PUk1BTCk7CiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBC VUZGRVJfTE9DS19TSEFSRSk7CiAJCXN0YXQuZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RG cmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOwpAQCAtNDA4LDEzICs0MDQsMTIgQEAgcGdzdGF0X2hlYXAoUmVsYXRpb24g cmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKICAqIHBnc3RhdF9idHJlZV9wYWdlIC0t IGNoZWNrIHR1cGxlcyBpbiBhIGJ0cmVlIHBhZ2UKICAqLwogc3RhdGljIHZvaWQKLXBnc3Rh dF9idHJlZV9wYWdlKHBnc3RhdHR1cGxlX3R5cGUgKnN0YXQsIFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgYmxrbm8sCi0JCQkJICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kp CitwZ3N0YXRfYnRyZWVfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LCBSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7 CiAKLQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25v LCBSQk1fTk9STUFMLCBic3RyYXRlZ3kpOworCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChy ZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCUxvY2tCdWZmZXIoYnVm LCBCVF9SRUFEKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCkBAIC00NTIsMTMg KzQ0NywxMiBAQCBwZ3N0YXRfYnRyZWVfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LCBS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAogICogcGdzdGF0X2hhc2hfcGFnZSAt LSBjaGVjayB0dXBsZXMgaW4gYSBoYXNoIHBhZ2UKICAqLwogc3RhdGljIHZvaWQKLXBnc3Rh dF9oYXNoX3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywKLQkJCQkgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQor cGdzdGF0X2hhc2hfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LCBSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CiAK LQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25vLCBS Qk1fTk9STUFMLCBic3RyYXRlZ3kpOworCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWws IE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCUxvY2tCdWZmZXIoYnVmLCBI QVNIX1JFQUQpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAKQEAgLTUwMCwxMyAr NDk0LDEyIEBAIHBnc3RhdF9oYXNoX3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKICAqIHBnc3RhdF9naXN0X3BhZ2UgLS0g Y2hlY2sgdHVwbGVzIGluIGEgZ2lzdCBwYWdlCiAgKi8KIHN0YXRpYyB2b2lkCi1wZ3N0YXRf Z2lzdF9wYWdlKHBnc3RhdHR1cGxlX3R5cGUgKnN0YXQsIFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sCi0JCQkJIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKK3Bn c3RhdF9naXN0X3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUmVsYXRpb24gcmVsLCBC bG9ja051bWJlciBibGtubykKIHsKIAlCdWZmZXIJCWJ1ZjsKIAlQYWdlCQlwYWdlOwogCi0J YnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJN X05PUk1BTCwgYnN0cmF0ZWd5KTsKKwlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBN QUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fTk9STUFMKTsKIAlMb2NrQnVmZmVyKGJ1ZiwgR0lT VF9TSEFSRSk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlpZiAoUGFnZUlzTmV3 KHBhZ2UpKQpAQCAtNTM5LDEyICs1MzIsOCBAQCBwZ3N0YXRfaW5kZXgoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBzdGFydCwgcGdzdGF0X3BhZ2UgcGFnZWZuLAogewogCUJsb2NrTnVt YmVyIG5ibG9ja3M7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JQnVmZmVyQWNjZXNzU3RyYXRl Z3kgYnN0cmF0ZWd5OwogCXBnc3RhdHR1cGxlX3R5cGUgc3RhdCA9IHswfTsKIAotCS8qIHBy ZXBhcmUgYWNjZXNzIHN0cmF0ZWd5IGZvciB0aGlzIGluZGV4ICovCi0JYnN0cmF0ZWd5ID0g R2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKLQogCWJsa25vID0gc3RhcnQ7CiAJ Zm9yICg7OykKIAl7CkBAIC01NjUsNyArNTU0LDcgQEAgcGdzdGF0X2luZGV4KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgc3RhcnQsIHBnc3RhdF9wYWdlIHBhZ2VmbiwKIAkJewogCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkJcGFnZWZuKCZzdGF0LCByZWwsIGJsa25v LCBic3RyYXRlZ3kpOworCQkJcGFnZWZuKCZzdGF0LCByZWwsIGJsa25vKTsKIAkJfQogCX0K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCmluZGV4IGFhN2IxYmQuLmU5OTNhYjMgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAg LTIxMDcsMzYgKzIxMDcsNiBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgPC9saXN0 aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgICAgPHZhcmxpc3RlbnRyeSBpZD0i Z3VjLXZhY3V1bS1idWZmZXItdXNhZ2UtbGltaXQiIHhyZWZsYWJlbD0idmFjdXVtX2J1ZmZl cl91c2FnZV9saW1pdCI+Ci0gICAgICA8dGVybT4KLSAgICAgICA8dmFybmFtZT52YWN1dW1f YnVmZmVyX3VzYWdlX2xpbWl0PC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCi0g ICAgICAgPGluZGV4dGVybT4KLSAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+dmFjdXVtX2J1 ZmZlcl91c2FnZV9saW1pdDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3By aW1hcnk+Ci0gICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICA8L3Rlcm0+Ci0gICAgICA8bGlz dGl0ZW0+Ci0gICAgICAgPHBhcmE+Ci0gICAgICAgIFNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0 aGUKLSAgICAgICAgPGdsb3NzdGVybSBsaW5rZW5kPSJnbG9zc2FyeS1idWZmZXItYWNjZXNz LXN0cmF0ZWd5Ij5CdWZmZXIgQWNjZXNzIFN0cmF0ZWd5PC9nbG9zc3Rlcm0+Ci0gICAgICAg IHVzZWQgYnkgdGhlIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gYW5kIDxjb21tYW5kPkFO QUxZWkU8L2NvbW1hbmQ+Ci0gICAgICAgIGNvbW1hbmRzLiAgQSBzZXR0aW5nIG9mIDxsaXRl cmFsPjA8L2xpdGVyYWw+IHdpbGwgYWxsb3cgdGhlIG9wZXJhdGlvbgotICAgICAgICB0byB1 c2UgYW55IG51bWJlciBvZiA8dmFybmFtZT5zaGFyZWRfYnVmZmVyczwvdmFybmFtZT4uICBP dGhlcndpc2UKLSAgICAgICAgdmFsaWQgc2l6ZXMgcmFuZ2UgZnJvbSA8bGl0ZXJhbD4xMjgg a0I8L2xpdGVyYWw+IHRvCi0gICAgICAgIDxsaXRlcmFsPjE2IEdCPC9saXRlcmFsPi4gIElm IHRoZSBzcGVjaWZpZWQgc2l6ZSB3b3VsZCBleGNlZWQgMS84IHRoZQotICAgICAgICBzaXpl IG9mIDx2YXJuYW1lPnNoYXJlZF9idWZmZXJzPC92YXJuYW1lPiwgdGhlIHNpemUgaXMgc2ls ZW50bHkgY2FwcGVkCi0gICAgICAgIHRvIHRoYXQgdmFsdWUuICBUaGUgZGVmYXVsdCB2YWx1 ZSBpcyA8bGl0ZXJhbD4yTUI8L2xpdGVyYWw+LiAgSWYKLSAgICAgICAgdGhpcyB2YWx1ZSBp cyBzcGVjaWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMga2lsb2J5dGVzLiAg VGhpcwotICAgICAgICBwYXJhbWV0ZXIgY2FuIGJlIHNldCBhdCBhbnkgdGltZS4gIEl0IGNh biBiZSBvdmVycmlkZGVuIGZvcgotICAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtdmFjdXVt Ii8+IGFuZCA8eHJlZiBsaW5rZW5kPSJzcWwtYW5hbHl6ZSIvPgotICAgICAgICB3aGVuIHBh c3NpbmcgdGhlIDxvcHRpb24+QlVGRkVSX1VTQUdFX0xJTUlUPC9vcHRpb24+IG9wdGlvbi4g IEhpZ2hlcgotICAgICAgICBzZXR0aW5ncyBjYW4gYWxsb3cgPGNvbW1hbmQ+VkFDVVVNPC9j b21tYW5kPiBhbmQKLSAgICAgICAgPGNvbW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4gdG8gcnVu IG1vcmUgcXVpY2tseSwgYnV0IGhhdmluZyB0b28gbGFyZ2UgYQotICAgICAgICBzZXR0aW5n IG1heSBjYXVzZSB0b28gbWFueSBvdGhlciB1c2VmdWwgcGFnZXMgdG8gYmUgZXZpY3RlZCBm cm9tCi0gICAgICAgIHNoYXJlZCBidWZmZXJzLgotICAgICAgIDwvcGFyYT4KLSAgICAgIDwv bGlzdGl0ZW0+Ci0gICAgIDwvdmFybGlzdGVudHJ5PgotCiAgICAgIDx2YXJsaXN0ZW50cnkg aWQ9Imd1Yy1sb2dpY2FsLWRlY29kaW5nLXdvcmstbWVtIiB4cmVmbGFiZWw9ImxvZ2ljYWxf ZGVjb2Rpbmdfd29ya19tZW0iPgogICAgICAgPHRlcm0+PHZhcm5hbWU+bG9naWNhbF9kZWNv ZGluZ193b3JrX21lbTwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAgICAg PGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGQxYTIwZDAuLjE4ZDE3NTQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMjk5MywyOCArMjk5Myw2IEBAIGRlc2NyaXB0 aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFj aCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgICAgICA8bGl0ZXJhbD5pbml0PC9saXRlcmFsPi4K ICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3Rp dGVtPgotICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgPGxpdGVyYWw+dmFjdXVtPC9saXRl cmFsPjogSS9PIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG91dHNpZGUgb2Ygc2hhcmVkCi0gICAg ICAgICAgYnVmZmVycyB3aGlsZSB2YWN1dW1pbmcgYW5kIGFuYWx5emluZyBwZXJtYW5lbnQg cmVsYXRpb25zLiBUZW1wb3JhcnkKLSAgICAgICAgICB0YWJsZSB2YWN1dW1zIHVzZSB0aGUg c2FtZSBsb2NhbCBidWZmZXIgcG9vbCBhcyBvdGhlciB0ZW1wb3JhcnkgdGFibGUKLSAgICAg ICAgICBJL08gb3BlcmF0aW9ucyBhbmQgYXJlIHRyYWNrZWQgaW4gPHZhcm5hbWU+Y29udGV4 dDwvdmFybmFtZT4KLSAgICAgICAgICA8bGl0ZXJhbD5ub3JtYWw8L2xpdGVyYWw+LgotICAg ICAgICAgPC9wYXJhPgotICAgICAgICA8L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+ Ci0gICAgICAgICA8cGFyYT4KLSAgICAgICAgICA8bGl0ZXJhbD5idWxrcmVhZDwvbGl0ZXJh bD46IENlcnRhaW4gbGFyZ2UgcmVhZCBJL08gb3BlcmF0aW9ucwotICAgICAgICAgIGRvbmUg b3V0c2lkZSBvZiBzaGFyZWQgYnVmZmVycywgZm9yIGV4YW1wbGUsIGEgc2VxdWVudGlhbCBz Y2FuIG9mIGEKLSAgICAgICAgICBsYXJnZSB0YWJsZS4KLSAgICAgICAgIDwvcGFyYT4KLSAg ICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgPHBhcmE+ Ci0gICAgICAgICAgPGxpdGVyYWw+YnVsa3dyaXRlPC9saXRlcmFsPjogQ2VydGFpbiBsYXJn ZSB3cml0ZSBJL08gb3BlcmF0aW9ucwotICAgICAgICAgIGRvbmUgb3V0c2lkZSBvZiBzaGFy ZWQgYnVmZmVycywgc3VjaCBhcyA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPi4KLSAgICAgICAg IDwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4K ICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtMzE4MCwxMyArMzE1OCw4IEBAIGRl c2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0 byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgICAgYnVmZmVyIGluIG9yZGVyIHRvIG1h a2UgaXQgYXZhaWxhYmxlIGZvciBhbm90aGVyIHVzZS4KICAgICAgICA8L3BhcmE+CiAgICAg ICAgPHBhcmE+Ci0gICAgICAgIEluIDx2YXJuYW1lPmNvbnRleHQ8L3Zhcm5hbWU+IDxsaXRl cmFsPm5vcm1hbDwvbGl0ZXJhbD4sIHRoaXMgY291bnRzCi0gICAgICAgIHRoZSBudW1iZXIg b2YgdGltZXMgYSBibG9jayB3YXMgZXZpY3RlZCBmcm9tIGEgYnVmZmVyIGFuZCByZXBsYWNl ZCB3aXRoCi0gICAgICAgIGFub3RoZXIgYmxvY2suIEluIDx2YXJuYW1lPmNvbnRleHQ8L3Zh cm5hbWU+cwotICAgICAgICA8bGl0ZXJhbD5idWxrd3JpdGU8L2xpdGVyYWw+LCA8bGl0ZXJh bD5idWxrcmVhZDwvbGl0ZXJhbD4sIGFuZAotICAgICAgICA8bGl0ZXJhbD52YWN1dW08L2xp dGVyYWw+LCB0aGlzIGNvdW50cyB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgYmxvY2sgd2FzCi0g ICAgICAgIGV2aWN0ZWQgZnJvbSBzaGFyZWQgYnVmZmVycyBpbiBvcmRlciB0byBhZGQgdGhl IHNoYXJlZCBidWZmZXIgdG8gYQotICAgICAgICBzZXBhcmF0ZSwgc2l6ZS1saW1pdGVkIHJp bmcgYnVmZmVyIGZvciB1c2UgaW4gYSBidWxrIEkvTyBvcGVyYXRpb24uCisgICAgICAgIFRo aXMgY291bnRzIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3YXMgZXZpY3RlZCBmcm9t IGEgYnVmZmVyIGFuZAorICAgICAgICByZXBsYWNlZCB3aXRoIGFub3RoZXIgYmxvY2suCiAg ICAgICAgIDwvcGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtMzE5Nywx MCArMzE3MCw5IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFs aXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgICAgPHN0cnVj dGZpZWxkPnJldXNlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KICAgICAg ICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBudW1iZXIgb2YgdGltZXMg YW4gZXhpc3RpbmcgYnVmZmVyIGluIGEgc2l6ZS1saW1pdGVkIHJpbmcgYnVmZmVyCi0gICAg ICAgIG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZlcnMgd2FzIHJldXNlZCBhcyBwYXJ0IG9mIGFu IEkvTyBvcGVyYXRpb24gaW4gdGhlCi0gICAgICAgIDxsaXRlcmFsPmJ1bGtyZWFkPC9saXRl cmFsPiwgPGxpdGVyYWw+YnVsa3dyaXRlPC9saXRlcmFsPiwgb3IKLSAgICAgICAgPGxpdGVy YWw+dmFjdXVtPC9saXRlcmFsPiA8dmFybmFtZT5jb250ZXh0PC92YXJuYW1lPnMuCisgICAg ICAgIEFsd2F5cyB6ZXJvLiAgVGhpcyBjb2x1bW4gcHJldmlvdXNseSBjb3VudGVkIHJldXNl cyBvZiBidWZmZXJzIGluIGEKKyAgICAgICAgc2l6ZS1saW1pdGVkIHJpbmcgYnVmZmVyIChi dWZmZXIgYWNjZXNzIHN0cmF0ZWd5KTsgcmluZyBidWZmZXJzIGhhdmUKKyAgICAgICAgYmVl biByZW1vdmVkLCBzbyBubyByZXVzZXMgYXJlIHRyYWNrZWQuCiAgICAgICAgPC9wYXJhPgog ICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2FuYWx5emUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYW5hbHl6ZS5zZ21sCmluZGV4 IGVjODFmMDAuLjdmNTE1OTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYW5hbHl6 ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYW5hbHl6ZS5zZ21sCkBAIC0yNyw3ICsy Nyw2IEBAIEFOQUxZWkUgWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRp b248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSBbIDxyCiAKICAgICBWRVJCT1NFIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAg ICAgU0tJUF9MT0NLRUQgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVh bjwvcmVwbGFjZWFibGU+IF0KLSAgICBCVUZGRVJfVVNBR0VfTElNSVQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNpemU8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtODgsMjYgKzg3LDYgQEAgQU5BTFlaRSBbICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSBdIFsgPHIKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK LSAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgPHRlcm0+PGxpdGVyYWw+QlVGRkVSX1VTQUdFX0xJ TUlUPC9saXRlcmFsPjwvdGVybT4KLSAgICA8bGlzdGl0ZW0+Ci0gICAgIDxwYXJhPgotICAg ICAgU3BlY2lmaWVzIHRoZQotICAgICAgPGdsb3NzdGVybSBsaW5rZW5kPSJnbG9zc2FyeS1i dWZmZXItYWNjZXNzLXN0cmF0ZWd5Ij5CdWZmZXIgQWNjZXNzIFN0cmF0ZWd5PC9nbG9zc3Rl cm0+Ci0gICAgICByaW5nIGJ1ZmZlciBzaXplIGZvciA8Y29tbWFuZD5BTkFMWVpFPC9jb21t YW5kPi4gIFRoaXMgc2l6ZSBpcyB1c2VkIHRvCi0gICAgICBjYWxjdWxhdGUgdGhlIG51bWJl ciBvZiBzaGFyZWQgYnVmZmVycyB3aGljaCB3aWxsIGJlIHJldXNlZCBhcyBwYXJ0IG9mCi0g ICAgICB0aGlzIHN0cmF0ZWd5LiAgPGxpdGVyYWw+MDwvbGl0ZXJhbD4gZGlzYWJsZXMgdXNl IG9mIGEKLSAgICAgIDxsaXRlcmFsPkJ1ZmZlciBBY2Nlc3MgU3RyYXRlZ3k8L2xpdGVyYWw+ LiAgIFdoZW4gdGhpcyBvcHRpb24gaXMgbm90Ci0gICAgICBzcGVjaWZpZWQsIDxjb21tYW5k PkFOQUxZWkU8L2NvbW1hbmQ+IHVzZXMgdGhlIHZhbHVlIGZyb20KLSAgICAgIDx4cmVmIGxp bmtlbmQ9Imd1Yy12YWN1dW0tYnVmZmVyLXVzYWdlLWxpbWl0Ii8+LiAgSGlnaGVyIHNldHRp bmdzIGNhbgotICAgICAgYWxsb3cgPGNvbW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4gdG8gcnVu IG1vcmUgcXVpY2tseSwgYnV0IGhhdmluZyB0b28KLSAgICAgIGxhcmdlIGEgc2V0dGluZyBt YXkgY2F1c2UgdG9vIG1hbnkgb3RoZXIgdXNlZnVsIHBhZ2VzIHRvIGJlIGV2aWN0ZWQgZnJv bQotICAgICAgc2hhcmVkIGJ1ZmZlcnMuICBUaGUgbWluaW11bSB2YWx1ZSBpcyA8bGl0ZXJh bD4xMjgga0I8L2xpdGVyYWw+IGFuZCB0aGUKLSAgICAgIG1heGltdW0gdmFsdWUgaXMgPGxp dGVyYWw+MTYgR0I8L2xpdGVyYWw+LgotICAgICA8L3BhcmE+Ci0gICAgPC9saXN0aXRlbT4K LSAgIDwvdmFybGlzdGVudHJ5PgotCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT48L3Rl cm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi92YWN1 dW0uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKaW5kZXggMzhlZTk3My4u ZDQ0YTQ5ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sCkBAIC0zNyw3ICszNyw2IEBAIFZBQ1VV TSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSBdIFsgPHJlCiAgICAgUEFSQUxMRUwgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxlPgogICAgIFNLSVBfREFUQUJBU0Vf U1RBVFMgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFj ZWFibGU+IF0KICAgICBPTkxZX0RBVEFCQVNFX1NUQVRTIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCi0gICAgQlVGRkVSX1VTQUdF X0xJTUlUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zaXplPC9yZXBsYWNlYWJs ZT4KICAgICBGVUxMIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48 L3JlcGxhY2VhYmxlPiBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgpA QCAtMzA5LDMwICszMDgsNiBAQCBWQUNVVU0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSBbIDxyZQogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAotICAgPHZhcmxpc3RlbnRyeT4KLSAg ICA8dGVybT48bGl0ZXJhbD5CVUZGRVJfVVNBR0VfTElNSVQ8L2xpdGVyYWw+PC90ZXJtPgot ICAgIDxsaXN0aXRlbT4KLSAgICAgPHBhcmE+Ci0gICAgICBTcGVjaWZpZXMgdGhlCi0gICAg ICA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imdsb3NzYXJ5LWJ1ZmZlci1hY2Nlc3Mtc3RyYXRlZ3ki PkJ1ZmZlciBBY2Nlc3MgU3RyYXRlZ3k8L2dsb3NzdGVybT4KLSAgICAgIHJpbmcgYnVmZmVy IHNpemUgZm9yIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4uICBUaGlzIHNpemUgaXMgdXNl ZCB0bwotICAgICAgY2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygc2hhcmVkIGJ1ZmZlcnMgd2hp Y2ggd2lsbCBiZSByZXVzZWQgYXMgcGFydCBvZgotICAgICAgdGhpcyBzdHJhdGVneS4gIDxs aXRlcmFsPjA8L2xpdGVyYWw+IGRpc2FibGVzIHVzZSBvZiBhCi0gICAgICA8bGl0ZXJhbD5C dWZmZXIgQWNjZXNzIFN0cmF0ZWd5PC9saXRlcmFsPi4gIElmIDxvcHRpb24+QU5BTFlaRTwv b3B0aW9uPgotICAgICAgaXMgYWxzbyBzcGVjaWZpZWQsIHRoZSA8b3B0aW9uPkJVRkZFUl9V U0FHRV9MSU1JVDwvb3B0aW9uPiB2YWx1ZSBpcyB1c2VkCi0gICAgICBmb3IgYm90aCB0aGUg dmFjdXVtIGFuZCBhbmFseXplIHN0YWdlcy4gIFRoaXMgb3B0aW9uIGNhbid0IGJlIHVzZWQg d2l0aAotICAgICAgdGhlIDxvcHRpb24+RlVMTDwvb3B0aW9uPiBvcHRpb24gZXhjZXB0IGlm IDxvcHRpb24+QU5BTFlaRTwvb3B0aW9uPiBpcwotICAgICAgYWxzbyBzcGVjaWZpZWQuICBX aGVuIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsCi0gICAgICA8Y29tbWFuZD5WQUNV VU08L2NvbW1hbmQ+IHVzZXMgdGhlIHZhbHVlIGZyb20KLSAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy12YWN1dW0tYnVmZmVyLXVzYWdlLWxpbWl0Ii8+LiAgSGlnaGVyIHNldHRpbmdzIGNh bgotICAgICAgYWxsb3cgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiB0byBydW4gbW9yZSBx dWlja2x5LCBidXQgaGF2aW5nIHRvbwotICAgICAgbGFyZ2UgYSBzZXR0aW5nIG1heSBjYXVz ZSB0b28gbWFueSBvdGhlciB1c2VmdWwgcGFnZXMgdG8gYmUgZXZpY3RlZCBmcm9tCi0gICAg ICBzaGFyZWQgYnVmZmVycy4gIFRoZSBtaW5pbXVtIHZhbHVlIGlzIDxsaXRlcmFsPjEyOCBr QjwvbGl0ZXJhbD4gYW5kIHRoZQotICAgICAgbWF4aW11bSB2YWx1ZSBpcyA8bGl0ZXJhbD4x NiBHQjwvbGl0ZXJhbD4uCi0gICAgIDwvcGFyYT4KLSAgICA8L2xpc3RpdGVtPgotICAgPC92 YXJsaXN0ZW50cnk+Ci0KICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+ RlVMTDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCmluZGV4IGJkYjMwNzUuLjVkNjUzOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtX2FuZF9pbnNlcnRfdHVw bGUoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIGZvcm1fYW5kX3NwaWxs X3R1cGxlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCB1bmlvbl90dXBs ZXMoQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsCiAJCQkJCQkgQnJpblR1cGxl ICpiKTsKLXN0YXRpYyB2b2lkIGJyaW5fdmFjdXVtX3NjYW4oUmVsYXRpb24gaWR4cmVsLCBC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7CitzdGF0aWMgdm9pZCBicmluX3ZhY3V1 bV9zY2FuKFJlbGF0aW9uIGlkeHJlbCk7CiBzdGF0aWMgYm9vbCBhZGRfdmFsdWVzX3RvX3Jh bmdlKFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2MgKmJkZXNjLAogCQkJCQkJCQlCcmluTWVt VHVwbGUgKmR0dXAsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKm51bGxzKTsK IHN0YXRpYyBib29sIGNoZWNrX251bGxfa2V5cyhCcmluVmFsdWVzICpidmFsLCBTY2FuS2V5 ICpudWxsa2V5cywgaW50IG5udWxsa2V5cyk7CkBAIC0xMTI5LDcgKzExMjksNyBAQCBicmlu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCSAqIHdob2xlIHJlbGF0aW9uIHdpbGwgYmUgcm9sbGVkIGJhY2suCiAJICovCiAK LQltZXRhID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05V TSwgTlVMTCwKKwltZXRhID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1B SU5fRk9SS05VTSwKIAkJCQkJCQkgRUJfTE9DS19GSVJTVCB8IEVCX1NLSVBfRVhURU5TSU9O X0xPQ0spOwogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihtZXRhKSA9PSBCUklOX01F VEFQQUdFX0JMS05PKTsKIApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYnJpbmJ1aWxkZW1wdHko UmVsYXRpb24gaW5kZXgpCiAJQnVmZmVyCQltZXRhYnVmOwogCiAJLyogQW4gZW1wdHkgQlJJ TiBpbmRleCBoYXMgYSBtZXRhcGFnZSBvbmx5LiAqLwotCW1ldGFidWYgPSBFeHRlbmRCdWZm ZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLCBOVUxMLAorCW1ldGFidWYg PSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLAogCQkJ CQkJCQlFQl9MT0NLX0ZJUlNUIHwgRUJfU0tJUF9FWFRFTlNJT05fTE9DSyk7CiAKIAkvKiBJ bml0aWFsaXplIGFuZCB4bG9nIG1ldGFidWZmZXIuICovCkBAIC0xMzM2LDcgKzEzMzYsNyBA QCBicmludmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqc3RhdHMpCiAJaGVhcFJlbCA9IHRhYmxlX29wZW4oSW5kZXhHZXRSZWxh dGlvbihSZWxhdGlvbkdldFJlbGlkKGluZm8tPmluZGV4KSwgZmFsc2UpLAogCQkJCQkJIEFj Y2Vzc1NoYXJlTG9jayk7CiAKLQlicmluX3ZhY3V1bV9zY2FuKGluZm8tPmluZGV4LCBpbmZv LT5zdHJhdGVneSk7CisJYnJpbl92YWN1dW1fc2NhbihpbmZvLT5pbmRleCk7CiAKIAlicmlu c3VtbWFyaXplKGluZm8tPmluZGV4LCBoZWFwUmVsLCBCUklOX0FMTF9CTE9DS1JBTkdFUywg ZmFsc2UsCiAJCQkJICAmc3RhdHMtPm51bV9pbmRleF90dXBsZXMsICZzdGF0cy0+bnVtX2lu ZGV4X3R1cGxlcyk7CkBAIC0yMTcxLDcgKzIxNzEsNyBAQCB1bmlvbl90dXBsZXMoQnJpbkRl c2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBsZSAqYikKICAqIGFuZCBzdWNo LgogICovCiBzdGF0aWMgdm9pZAotYnJpbl92YWN1dW1fc2NhbihSZWxhdGlvbiBpZHhyZWws IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQorYnJpbl92YWN1dW1fc2NhbihSZWxh dGlvbiBpZHhyZWwpCiB7CiAJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CiAJUmVh ZFN0cmVhbSAqc3RyZWFtOwpAQCAtMjE4Nyw3ICsyMTg3LDYgQEAgYnJpbl92YWN1dW1fc2Nh bihSZWxhdGlvbiBpZHhyZWwsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQogCXN0 cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5B TkNFIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NU UkVBTV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJc3RyYXRlZ3ksCiAJCQkJCQkJCQkJaWR4 cmVsLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9y ZWFkX3N0cmVhbV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fcmV2bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCmlu ZGV4IDIzMzM1NWMuLjAxYzQxMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fcmV2bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9y ZXZtYXAuYwpAQCAtNTU5LDcgKzU1OSw3IEBAIHJldm1hcF9waHlzaWNhbF9leHRlbmQoQnJp blJldm1hcCAqcmV2bWFwKQogCX0KIAllbHNlCiAJewotCQlidWYgPSBFeHRlbmRCdWZmZXJl ZFJlbChCTVJfUkVMKGlyZWwpLCBNQUlOX0ZPUktOVU0sIE5VTEwsCisJCWJ1ZiA9IEV4dGVu ZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaXJlbCksIE1BSU5fRk9SS05VTSwKIAkJCQkJCQkJRUJf TE9DS19GSVJTVCk7CiAJCWlmIChCdWZmZXJHZXRCbG9ja051bWJlcihidWYpICE9IG1hcEJs aykKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggY2I5ZWQzYi4u MzJhZDY1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC04MTUsOSAr ODE1LDkgQEAgZ2luYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKIAkJCQlNZXRhQnVmZmVy OwogCiAJLyogQW4gZW1wdHkgR0lOIGluZGV4IGhhcyB0d28gcGFnZXMuICovCi0JTWV0YUJ1 ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBJTklUX0ZPUktOVU0s IE5VTEwsCisJTWV0YUJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgp LCBJTklUX0ZPUktOVU0sCiAJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QgfCBFQl9TS0lQX0VY VEVOU0lPTl9MT0NLKTsKLQlSb290QnVmZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JF TChpbmRleCksIElOSVRfRk9SS05VTSwgTlVMTCwKKwlSb290QnVmZmVyID0gRXh0ZW5kQnVm ZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIElOSVRfRk9SS05VTSwKIAkJCQkJCQkJICAgRUJf TE9DS19GSVJTVCB8IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0spOwogCiAJLyogSW5pdGlhbGl6 ZSBhbmQgeGxvZyBtZXRhYnVmZmVyIGFuZCByb290IGJ1ZmZlci4gKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW51dGlsLmMKaW5kZXggZTdjYmE4MS4uMmQ3Mzk0YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW51dGlsLmMKQEAgLTMzNiw3ICszMzYsNyBAQCBHaW5OZXdCdWZmZXIoUmVsYXRp b24gaW5kZXgpCiAJfQogCiAJLyogTXVzdCBleHRlbmQgdGhlIGZpbGUgKi8KLQlidWZmZXIg PSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVNLCBOVUxM LAorCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZP UktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CiAKIAlyZXR1cm4gYnVmZmVyOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKaW5kZXggODQwNTQzZS4uODY1MzhkZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0zMiw3ICszMiw2IEBAIHN0 cnVjdCBHaW5WYWN1dW1TdGF0ZQogCUluZGV4QnVsa0RlbGV0ZUNhbGxiYWNrIGNhbGxiYWNr OwogCXZvaWQJICAgKmNhbGxiYWNrX3N0YXRlOwogCUdpblN0YXRlCWdpbnN0YXRlOwotCUJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5OwogCU1lbW9yeUNvbnRleHQgdG1wQ3h0Owog fTsKIApAQCAtMjg5LDcgKzI4OCw3IEBAIGdpblNjYW5Qb3N0aW5nVHJlZVRvRGVsZXRlKEdp blZhY3V1bVN0YXRlICpndnMsIERhdGFQYWdlRGVsZXRlU3RhY2sgKm15U3RhY2tJdGVtCiAJ CQljaGlsZEJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChndnMtPmluZGV4LAogCQkJCQkJ CQkJCQkgTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCQkgUG9zdGluZ0l0ZW1HZXRCbG9ja051 bWJlcihwaXRlbSksCi0JCQkJCQkJCQkJCSBSQk1fTk9STUFMLCBndnMtPnN0cmF0ZWd5KTsK KwkJCQkJCQkJCQkJIFJCTV9OT1JNQUwpOwogCQkJTG9ja0J1ZmZlcihjaGlsZEJ1ZmZlciwg R0lOX0VYQ0xVU0lWRSk7CiAKIAkJCS8qIEFsbG9jYXRlIGEgY2hpbGQgc3RhY2sgZW50cnkg b24gZmlyc3QgdXNlOyByZXVzZSB0aGVyZWFmdGVyICovCkBAIC0zODksNyArMzg4LDcgQEAg Z2luVmFjdXVtUG9zdGluZ1RyZWVMZWF2ZXMoR2luVmFjdXVtU3RhdGUgKmd2cywgQmxvY2tO dW1iZXIgYmxrbm8pCiAJCVBvc3RpbmdJdGVtICpwaXRlbTsKIAogCQlidWZmZXIgPSBSZWFk QnVmZmVyRXh0ZW5kZWQoZ3ZzLT5pbmRleCwgTUFJTl9GT1JLTlVNLCBibGtubywKLQkJCQkJ CQkJCVJCTV9OT1JNQUwsIGd2cy0+c3RyYXRlZ3kpOworCQkJCQkJCQkJUkJNX05PUk1BTCk7 CiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fU0hBUkUpOwogCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwogCkBAIC00MzAsNyArNDI5LDcgQEAgZ2luVmFjdXVtUG9zdGluZ1Ry ZWVMZWF2ZXMoR2luVmFjdXVtU3RhdGUgKmd2cywgQmxvY2tOdW1iZXIgYmxrbm8pCiAJCQli cmVhazsKIAogCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoZ3ZzLT5pbmRleCwgTUFJ Tl9GT1JLTlVNLCBibGtubywKLQkJCQkJCQkJCVJCTV9OT1JNQUwsIGd2cy0+c3RyYXRlZ3kp OworCQkJCQkJCQkJUkJNX05PUk1BTCk7CiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fRVhD TFVTSVZFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAl9CkBAIC00NTQs NyArNDUzLDcgQEAgZ2luVmFjdXVtUG9zdGluZ1RyZWUoR2luVmFjdXVtU3RhdGUgKmd2cywg QmxvY2tOdW1iZXIgcm9vdEJsa25vKQogCQlib29sCQlkZWxldGVkIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWTsKIAogCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoZ3ZzLT5pbmRl eCwgTUFJTl9GT1JLTlVNLCByb290Qmxrbm8sCi0JCQkJCQkJCQlSQk1fTk9STUFMLCBndnMt PnN0cmF0ZWd5KTsKKwkJCQkJCQkJCVJCTV9OT1JNQUwpOwogCiAJCS8qCiAJCSAqIExvY2sg cG9zdGluZyB0cmVlIHJvb3QgZm9yIGNsZWFudXAgdG8gZW5zdXJlIHRoZXJlIGFyZSBubwpA QCAtNjE1LDcgKzYxNCw2IEBAIGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZv LCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWd2cy5pbmRleCA9IGluZGV4Owog CWd2cy5jYWxsYmFjayA9IGNhbGxiYWNrOwogCWd2cy5jYWxsYmFja19zdGF0ZSA9IGNhbGxi YWNrX3N0YXRlOwotCWd2cy5zdHJhdGVneSA9IGluZm8tPnN0cmF0ZWd5OwogCWluaXRHaW5T dGF0ZSgmZ3ZzLmdpbnN0YXRlLCBpbmRleCk7CiAKIAkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ ICovCkBAIC02MzYsNyArNjM0LDcgQEAgZ2luYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8g KmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJZ3ZzLnJlc3VsdCA9IHN0 YXRzOwogCiAJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktO VU0sIGJsa25vLAotCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCQkJ CQkJCVJCTV9OT1JNQUwpOwogCiAJLyogZmluZCBsZWFmIHBhZ2UgKi8KIAlmb3IgKDs7KQpA QCAtNjY5LDcgKzY2Nyw3IEBAIGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZv LCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCiAJCVVubG9ja1JlbGVhc2VCdWZm ZXIoYnVmZmVyKTsKIAkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlO X0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kp OworCQkJCQkJCQkJUkJNX05PUk1BTCk7CiAJfQogCiAJLyogcmlnaHQgbm93IHdlIGZvdW5k IGxlZnRtb3N0IHBhZ2UgaW4gZW50cnkncyBCVHJlZSAqLwpAQCAtNzEyLDcgKzcxMCw3IEBA IGdpbmJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKnN0YXRzLAogCQkJYnJlYWs7CiAKIAkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVu ZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwg aW5mby0+c3RyYXRlZ3kpOworCQkJCQkJCQkJUkJNX05PUk1BTCk7CiAJCUxvY2tCdWZmZXIo YnVmZmVyLCBHSU5fRVhDTFVTSVZFKTsKIAl9CiAKQEAgLTc5NCw3ICs3OTIsNiBAQCBnaW52 YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICpzdGF0cykKIAlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFE X1NUUkVBTV9NQUlOVEVOQU5DRSB8CiAJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVMTCB8CiAJ CQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCWluZm8tPnN0 cmF0ZWd5LAogCQkJCQkJCQkJCWluZGV4LAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJ CQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3QuYwppbmRleCA4NTY1ZTIyLi5hZTQ5NDc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j CkBAIC0xNDIsNyArMTQyLDcgQEAgZ2lzdGJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCiAJ QnVmZmVyCQlidWZmZXI7CiAKIAkvKiBJbml0aWFsaXplIHRoZSByb290IHBhZ2UgKi8KLQli dWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVN LCBOVUxMLAorCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBJ TklUX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfU0tJUF9FWFRFTlNJT05fTE9DSyB8IEVCX0xP Q0tfRklSU1QpOwogCiAJLyogSW5pdGlhbGl6ZSBhbmQgeGxvZyBidWZmZXIgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IDBmNThmNjEuLjE3MDE3NGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtODc3LDcgKzg3Nyw3IEBAIGdpc3RO ZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJlbCkKIAl9CiAKIAkvKiBNdXN0 IGV4dGVuZCB0aGUgZmlsZSAqLwotCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9S RUwociksIE1BSU5fRk9SS05VTSwgTlVMTCwKKwlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJl bChCTVJfUkVMKHIpLCBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7 CiAKIAlyZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdHZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5j CmluZGV4IDY4NmEwNDEuLmMzNjZlZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dmFjdXVtLmMKQEAgLTIxOCw3ICsyMTgsNiBAQCBnaXN0dmFjdXVtc2NhbihJbmRleFZhY3V1 bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJc3RyZWFtID0g cmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAog CQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VT RV9CQVRDSElORywKLQkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKIAkJCQkJCQkJCQlyZWws CiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRf c3RyZWFtX2NiLApAQCAtNDkxLDggKzQ5MCw3IEBAIHJlc3RhcnQ6CiAJCS8qIGNoZWNrIGZv ciB2YWN1dW0gZGVsYXkgd2hpbGUgbm90IGhvbGRpbmcgYW55IGJ1ZmZlciBsb2NrICovCiAJ CXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4 dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCwKLQkJCQkJCQkJ CWluZm8tPnN0cmF0ZWd5KTsKKwkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwg TUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCk7CiAJCWdvdG8gcmVzdGFydDsKIAl9 CiB9CkBAIC01MjQsOCArNTIyLDcgQEAgZ2lzdHZhY3V1bV9kZWxldGVfZW1wdHlfcGFnZXMo SW5kZXhWYWN1dW1JbmZvICppbmZvLCBHaXN0VmFjU3RhdGUgKnZzdGF0ZSkKIAkJaW50CQkJ bnRvZGVsZXRlOwogCQlpbnQJCQlkZWxldGVkOwogCi0JCWJ1ZmZlciA9IFJlYWRCdWZmZXJF eHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgKEJsb2NrTnVtYmVyKSBibGtubywKLQkJCQkJ CQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKwkJYnVmZmVyID0gUmVhZEJ1ZmZl ckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCAoQmxvY2tOdW1iZXIpIGJsa25vLCBSQk1f Tk9STUFMKTsKIAogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgR0lTVF9TSEFSRSk7CiAJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CkBAIC01OTAsOCArNTg3LDcgQEAgZ2lzdHZhY3V1 bV9kZWxldGVfZW1wdHlfcGFnZXMoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBHaXN0VmFjU3Rh dGUgKnZzdGF0ZSkKIAkJCWlmIChQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZp cnN0T2Zmc2V0TnVtYmVyKQogCQkJCWJyZWFrOwogCi0JCQlsZWFmYnVmID0gUmVhZEJ1ZmZl ckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBsZWFmc190b19kZWxldGVbaV0sCi0JCQkJ CQkJCQkJIFJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKwkJCWxlYWZidWYgPSBSZWFk QnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGxlYWZzX3RvX2RlbGV0ZVtpXSwg UkJNX05PUk1BTCk7CiAJCQlMb2NrQnVmZmVyKGxlYWZidWYsIEdJU1RfRVhDTFVTSVZFKTsK IAkJCWdpc3RjaGVja3BhZ2UocmVsLCBsZWFmYnVmKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aC5jCmluZGV4IDhkOGNkMzAuLjFiYmI3MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMK QEAgLTU0Miw3ICs1NDIsNiBAQCBoYXNoYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmlu Zm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJICovCiAJc3RyZWFtID0gcmVh ZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJ CQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQlpbmZvLT5zdHJh dGVneSwKIAkJCQkJCQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJ CQkJCWhhc2hfYnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9jYiwKQEAgLTYxNiw3ICs2MTUsNyBA QCBidWNrZXRfbG9vcDoKIAogCQlidWNrZXRfYnVmID0gYnVmOwogCi0JCWhhc2hidWNrZXRj bGVhbnVwKHJlbCwgY3VyX2J1Y2tldCwgYnVja2V0X2J1ZiwgYmxrbm8sIGluZm8tPnN0cmF0 ZWd5LAorCQloYXNoYnVja2V0Y2xlYW51cChyZWwsIGN1cl9idWNrZXQsIGJ1Y2tldF9idWYs IGJsa25vLAogCQkJCQkJICBjYWNoZWRtZXRhcC0+aGFzaG1fbWF4YnVja2V0LAogCQkJCQkJ ICBjYWNoZWRtZXRhcC0+aGFzaG1faGlnaG1hc2ssCiAJCQkJCQkgIGNhY2hlZG1ldGFwLT5o YXNobV9sb3dtYXNrLCAmdHVwbGVzX3JlbW92ZWQsCkBAIC03NjUsNyArNzY0LDcgQEAgaGFz aHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKnN0YXRzKQogICovCiB2b2lkCiBoYXNoYnVja2V0Y2xlYW51cChSZWxhdGlvbiBy ZWwsIEJ1Y2tldCBjdXJfYnVja2V0LCBCdWZmZXIgYnVja2V0X2J1ZiwKLQkJCQkgIEJsb2Nr TnVtYmVyIGJ1Y2tldF9ibGtubywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LAor CQkJCSAgQmxvY2tOdW1iZXIgYnVja2V0X2Jsa25vLAogCQkJCSAgdWludDMyIG1heGJ1Y2tl dCwgdWludDMyIGhpZ2htYXNrLCB1aW50MzIgbG93bWFzaywKIAkJCQkgIGRvdWJsZSAqdHVw bGVzX3JlbW92ZWQsIGRvdWJsZSAqbnVtX2luZGV4X3R1cGxlcywKIAkJCQkgIGJvb2wgc3Bs aXRfY2xlYW51cCwKQEAgLTkzNSw5ICs5MzQsOCBAQCBoYXNoYnVja2V0Y2xlYW51cChSZWxh dGlvbiByZWwsIEJ1Y2tldCBjdXJfYnVja2V0LCBCdWZmZXIgYnVja2V0X2J1ZiwKIAkJaWYg KCFCbG9ja051bWJlcklzVmFsaWQoYmxrbm8pKQogCQkJYnJlYWs7CiAKLQkJbmV4dF9idWYg PSBfaGFzaF9nZXRidWZfd2l0aF9zdHJhdGVneShyZWwsIGJsa25vLCBIQVNIX1dSSVRFLAot CQkJCQkJCQkJCQkgIExIX09WRVJGTE9XX1BBR0UsCi0JCQkJCQkJCQkJCSAgYnN0cmF0ZWd5 KTsKKwkJbmV4dF9idWYgPSBfaGFzaF9nZXRidWYocmVsLCBibGtubywgSEFTSF9XUklURSwK KwkJCQkJCQkJTEhfT1ZFUkZMT1dfUEFHRSk7CiAKIAkJLyoKIAkJICogcmVsZWFzZSB0aGUg bG9jayBvbiBwcmV2aW91cyBwYWdlIGFmdGVyIGFjcXVpcmluZyB0aGUgbG9jayBvbiBuZXh0 CkBAIC0xMDA0LDggKzEwMDIsNyBAQCBoYXNoYnVja2V0Y2xlYW51cChSZWxhdGlvbiByZWws IEJ1Y2tldCBjdXJfYnVja2V0LCBCdWZmZXIgYnVja2V0X2J1ZiwKIAkgKiBvcmRlcmluZyBv ZiB0dXBsZXMgZm9yIGEgc2NhbiB0aGF0IGhhcyBzdGFydGVkIGJlZm9yZSBpdC4KIAkgKi8K IAlpZiAoYnVja2V0X2RpcnR5ICYmIElzQnVmZmVyQ2xlYW51cE9LKGJ1Y2tldF9idWYpKQot CQlfaGFzaF9zcXVlZXplYnVja2V0KHJlbCwgY3VyX2J1Y2tldCwgYnVja2V0X2Jsa25vLCBi dWNrZXRfYnVmLAotCQkJCQkJCWJzdHJhdGVneSk7CisJCV9oYXNoX3NxdWVlemVidWNrZXQo cmVsLCBjdXJfYnVja2V0LCBidWNrZXRfYmxrbm8sIGJ1Y2tldF9idWYpOwogCWVsc2UKIAkJ TG9ja0J1ZmZlcihidWNrZXRfYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hvdmZsLmMKaW5kZXggZGJjNTdlZi4uNWIzNWZlZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCkBAIC00OTEsOCArNDkxLDcgQEAgX2hhc2hf Zmlyc3RmcmVlYml0KHVpbnQzMiBtYXApCiBCbG9ja051bWJlcgogX2hhc2hfZnJlZW92Zmxw YWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tldGJ1ZiwgQnVmZmVyIG92ZmxidWYsCiAJ CQkJICAgQnVmZmVyIHdidWYsIEluZGV4VHVwbGUgKml0dXBzLCBPZmZzZXROdW1iZXIgKml0 dXBfb2Zmc2V0cywKLQkJCQkgICBTaXplICp0dXBzX3NpemUsIHVpbnQxNiBuaXR1cHMsCi0J CQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQorCQkJCSAgIFNpemUgKnR1 cHNfc2l6ZSwgdWludDE2IG5pdHVwcykKIHsKIAlIYXNoTWV0YVBhZ2UgbWV0YXA7CiAJQnVm ZmVyCQltZXRhYnVmOwpAQCAtNTM5LDIwICs1MzgsMTYgQEAgX2hhc2hfZnJlZW92ZmxwYWdl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tldGJ1ZiwgQnVmZmVyIG92ZmxidWYsCiAJCWlm IChwcmV2Ymxrbm8gPT0gd3JpdGVibGtubykKIAkJCXByZXZidWYgPSB3YnVmOwogCQllbHNl Ci0JCQlwcmV2YnVmID0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRlZ3kocmVsLAotCQkJCQkJ CQkJCQkJIHByZXZibGtubywKLQkJCQkJCQkJCQkJCSBIQVNIX1dSSVRFLAotCQkJCQkJCQkJ CQkJIExIX0JVQ0tFVF9QQUdFIHwgTEhfT1ZFUkZMT1dfUEFHRSwKLQkJCQkJCQkJCQkJCSBi c3RyYXRlZ3kpOworCQkJcHJldmJ1ZiA9IF9oYXNoX2dldGJ1ZihyZWwsCisJCQkJCQkJCSAg IHByZXZibGtubywKKwkJCQkJCQkJICAgSEFTSF9XUklURSwKKwkJCQkJCQkJICAgTEhfQlVD S0VUX1BBR0UgfCBMSF9PVkVSRkxPV19QQUdFKTsKIAl9CiAJaWYgKEJsb2NrTnVtYmVySXNW YWxpZChuZXh0Ymxrbm8pKQotCQluZXh0YnVmID0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRl Z3kocmVsLAotCQkJCQkJCQkJCQkgbmV4dGJsa25vLAotCQkJCQkJCQkJCQkgSEFTSF9XUklU RSwKLQkJCQkJCQkJCQkJIExIX09WRVJGTE9XX1BBR0UsCi0JCQkJCQkJCQkJCSBic3RyYXRl Z3kpOwotCi0JLyogTm90ZTogYnN0cmF0ZWd5IGlzIGludGVudGlvbmFsbHkgbm90IHVzZWQg Zm9yIG1ldGFwYWdlIGFuZCBiaXRtYXAgKi8KKwkJbmV4dGJ1ZiA9IF9oYXNoX2dldGJ1Zihy ZWwsCisJCQkJCQkJICAgbmV4dGJsa25vLAorCQkJCQkJCSAgIEhBU0hfV1JJVEUsCisJCQkJ CQkJICAgTEhfT1ZFUkZMT1dfUEFHRSk7CiAKIAkvKiBSZWFkIHRoZSBtZXRhcGFnZSBzbyB3 ZSBjYW4gZGV0ZXJtaW5lIHdoaWNoIGJpdG1hcCBwYWdlIHRvIHVzZSAqLwogCW1ldGFidWYg PSBfaGFzaF9nZXRidWYocmVsLCBIQVNIX01FVEFQQUdFLCBIQVNIX1JFQUQsIExIX01FVEFf UEFHRSk7CkBAIC04NDMsOCArODM4LDcgQEAgdm9pZAogX2hhc2hfc3F1ZWV6ZWJ1Y2tldChS ZWxhdGlvbiByZWwsCiAJCQkJCUJ1Y2tldCBidWNrZXQsCiAJCQkJCUJsb2NrTnVtYmVyIGJ1 Y2tldF9ibGtubywKLQkJCQkJQnVmZmVyIGJ1Y2tldF9idWYsCi0JCQkJCUJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IGJzdHJhdGVneSkKKwkJCQkJQnVmZmVyIGJ1Y2tldF9idWYpCiB7CiAJQmxv Y2tOdW1iZXIgd2Jsa25vOwogCUJsb2NrTnVtYmVyIHJibGtubzsKQEAgLTg4NiwxMSArODgw LDEwIEBAIF9oYXNoX3NxdWVlemVidWNrZXQoUmVsYXRpb24gcmVsLAogCQlyYmxrbm8gPSBy b3BhcXVlLT5oYXNob19uZXh0Ymxrbm87CiAJCWlmIChyYnVmICE9IEludmFsaWRCdWZmZXIp CiAJCQlfaGFzaF9yZWxidWYocmVsLCByYnVmKTsKLQkJcmJ1ZiA9IF9oYXNoX2dldGJ1Zl93 aXRoX3N0cmF0ZWd5KHJlbCwKLQkJCQkJCQkJCQkgIHJibGtubywKLQkJCQkJCQkJCQkgIEhB U0hfV1JJVEUsCi0JCQkJCQkJCQkJICBMSF9PVkVSRkxPV19QQUdFLAotCQkJCQkJCQkJCSAg YnN0cmF0ZWd5KTsKKwkJcmJ1ZiA9IF9oYXNoX2dldGJ1ZihyZWwsCisJCQkJCQkJcmJsa25v LAorCQkJCQkJCUhBU0hfV1JJVEUsCisJCQkJCQkJTEhfT1ZFUkZMT1dfUEFHRSk7CiAJCXJw YWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAkJcm9wYXF1ZSA9IEhhc2hQYWdlR2V0T3Bh cXVlKHJwYWdlKTsKIAkJQXNzZXJ0KHJvcGFxdWUtPmhhc2hvX2J1Y2tldCA9PSBidWNrZXQp OwpAQCAtOTUyLDExICs5NDUsMTAgQEAgcmVhZHBhZ2U6CiAKIAkJCQkvKiBkb24ndCBuZWVk IHRvIG1vdmUgdG8gbmV4dCBwYWdlIGlmIHdlIHJlYWNoZWQgdGhlIHJlYWQgcGFnZSAqLwog CQkJCWlmICh3Ymxrbm8gIT0gcmJsa25vKQotCQkJCQluZXh0X3didWYgPSBfaGFzaF9nZXRi dWZfd2l0aF9zdHJhdGVneShyZWwsCi0JCQkJCQkJCQkJCQkJCSAgIHdibGtubywKLQkJCQkJ CQkJCQkJCQkJICAgSEFTSF9XUklURSwKLQkJCQkJCQkJCQkJCQkJICAgTEhfT1ZFUkZMT1df UEFHRSwKLQkJCQkJCQkJCQkJCQkJICAgYnN0cmF0ZWd5KTsKKwkJCQkJbmV4dF93YnVmID0g X2hhc2hfZ2V0YnVmKHJlbCwKKwkJCQkJCQkJCQkJIHdibGtubywKKwkJCQkJCQkJCQkJIEhB U0hfV1JJVEUsCisJCQkJCQkJCQkJCSBMSF9PVkVSRkxPV19QQUdFKTsKIAogCQkJCWlmIChu aXR1cHMgPiAwKQogCQkJCXsKQEAgLTEwOTgsNyArMTA5MCw3IEBAIHJlYWRwYWdlOgogCiAJ CS8qIGZyZWUgdGhpcyBvdmVyZmxvdyBwYWdlIChyZWxlYXNlcyByYnVmKSAqLwogCQlfaGFz aF9mcmVlb3ZmbHBhZ2UocmVsLCBidWNrZXRfYnVmLCByYnVmLCB3YnVmLCBpdHVwcywgaXR1 cF9vZmZzZXRzLAotCQkJCQkJICAgdHVwc19zaXplLCBuaXR1cHMsIGJzdHJhdGVneSk7CisJ CQkJCQkgICB0dXBzX3NpemUsIG5pdHVwcyk7CiAKIAkJLyogYmUgdGlkeSAqLwogCQlmb3Ig KGkgPSAwOyBpIDwgbml0dXBzOyBpKyspCkBAIC0xMTE1LDExICsxMTA3LDEwIEBAIHJlYWRw YWdlOgogCQkJcmV0dXJuOwogCQl9CiAKLQkJcmJ1ZiA9IF9oYXNoX2dldGJ1Zl93aXRoX3N0 cmF0ZWd5KHJlbCwKLQkJCQkJCQkJCQkgIHJibGtubywKLQkJCQkJCQkJCQkgIEhBU0hfV1JJ VEUsCi0JCQkJCQkJCQkJICBMSF9PVkVSRkxPV19QQUdFLAotCQkJCQkJCQkJCSAgYnN0cmF0 ZWd5KTsKKwkJcmJ1ZiA9IF9oYXNoX2dldGJ1ZihyZWwsCisJCQkJCQkJcmJsa25vLAorCQkJ CQkJCUhBU0hfV1JJVEUsCisJCQkJCQkJTEhfT1ZFUkZMT1dfUEFHRSk7CiAJCXJwYWdlID0g QnVmZmVyR2V0UGFnZShyYnVmKTsKIAkJcm9wYXF1ZSA9IEhhc2hQYWdlR2V0T3BhcXVlKHJw YWdlKTsKIAkJQXNzZXJ0KHJvcGFxdWUtPmhhc2hvX2J1Y2tldCA9PSBidWNrZXQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKaW5kZXggYzUwZjlhNC4uNTQ0NzAwNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCkBAIC0xMzksOCArMTM5LDcgQEAgX2hh c2hfZ2V0aW5pdGJ1ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vKQogCWlmIChi bGtubyA9PSBQX05FVykKIAkJZWxvZyhFUlJPUiwgImhhc2ggQU0gZG9lcyBub3QgdXNlIFBf TkVXIik7CiAKLQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0s IGJsa25vLCBSQk1fWkVST19BTkRfTE9DSywKLQkJCQkJCQkgTlVMTCk7CisJYnVmID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX1pFUk9fQU5E X0xPQ0spOwogCiAJLyogcmVmIGNvdW50IGFuZCBsb2NrIHR5cGUgYXJlIGNvcnJlY3QgKi8K IApAQCAtMjA5LDcgKzIwOCw3IEBAIF9oYXNoX2dldG5ld2J1ZihSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJLyogc21nciBpbnNpc3Rz IHdlIGV4cGxpY2l0bHkgZXh0ZW5kIHRoZSByZWxhdGlvbiAqLwogCWlmIChibGtubyA9PSBu YmxvY2tzKQogCXsKLQkJYnVmID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBm b3JrTnVtLCBOVUxMLAorCQlidWYgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKHJlbCks IGZvcmtOdW0sCiAJCQkJCQkJCUVCX0xPQ0tfRklSU1QgfCBFQl9TS0lQX0VYVEVOU0lPTl9M T0NLKTsKIAkJaWYgKEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgIT0gYmxrbm8pCiAJCQll bG9nKEVSUk9SLCAidW5leHBlY3RlZCBoYXNoIHJlbGF0aW9uIHNpemU6ICV1LCBzaG91bGQg YmUgJXUiLApAQCAtMjE3LDggKzIxNiw3IEBAIF9oYXNoX2dldG5ld2J1ZihSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJfQogCWVsc2UK IAl7Ci0JCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIGZvcmtOdW0sIGJsa25vLCBS Qk1fWkVST19BTkRfTE9DSywKLQkJCQkJCQkJIE5VTEwpOworCQlidWYgPSBSZWFkQnVmZmVy RXh0ZW5kZWQocmVsLCBmb3JrTnVtLCBibGtubywgUkJNX1pFUk9fQU5EX0xPQ0spOwogCX0K IAogCS8qIHJlZiBjb3VudCBhbmQgbG9jayB0eXBlIGFyZSBjb3JyZWN0ICovCkBAIC0yMjks MzQgKzIyNyw2IEBAIF9oYXNoX2dldG5ld2J1ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAJcmV0dXJuIGJ1ZjsKIH0KIAotLyoKLSAq CV9oYXNoX2dldGJ1Zl93aXRoX3N0cmF0ZWd5KCkgLS0gR2V0IGEgYnVmZmVyIHdpdGggbm9u ZGVmYXVsdCBzdHJhdGVneS4KLSAqCi0gKgkJVGhpcyBpcyBpZGVudGljYWwgdG8gX2hhc2hf Z2V0YnVmKCkgYnV0IGFsc28gYWxsb3dzIGEgYnVmZmVyIGFjY2VzcwotICoJCXN0cmF0ZWd5 IHRvIGJlIHNwZWNpZmllZC4gIFdlIHVzZSB0aGlzIGZvciBWQUNVVU0gb3BlcmF0aW9ucy4K LSAqLwotQnVmZmVyCi1faGFzaF9nZXRidWZfd2l0aF9zdHJhdGVneShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCQkJICAgaW50IGFjY2VzcywgaW50IGZsYWdzLAot CQkJCQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQotewotCUJ1ZmZlcgkJ YnVmOwotCi0JaWYgKGJsa25vID09IFBfTkVXKQotCQllbG9nKEVSUk9SLCAiaGFzaCBBTSBk b2VzIG5vdCB1c2UgUF9ORVciKTsKLQotCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWws IE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwsIGJzdHJhdGVneSk7Ci0KLQlpZiAo YWNjZXNzICE9IEhBU0hfTk9MT0NLKQotCQlMb2NrQnVmZmVyKGJ1ZiwgYWNjZXNzKTsKLQot CS8qIHJlZiBjb3VudCBhbmQgbG9jayB0eXBlIGFyZSBjb3JyZWN0ICovCi0KLQlfaGFzaF9j aGVja3BhZ2UocmVsLCBidWYsIGZsYWdzKTsKLQotCXJldHVybiBidWY7Ci19Ci0KIC8qCiAg KglfaGFzaF9yZWxidWYoKSAtLSByZWxlYXNlIGEgbG9ja2VkIGJ1ZmZlci4KICAqCkBAIC03 NTgsNyArNzI4LDcgQEAgcmVzdGFydF9leHBhbmQ6CiAJCS8qIFJlbGVhc2UgdGhlIG1ldGFw YWdlIGxvY2suICovCiAJCUxvY2tCdWZmZXIobWV0YWJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NL KTsKIAotCQloYXNoYnVja2V0Y2xlYW51cChyZWwsIG9sZF9idWNrZXQsIGJ1Zl9vYmxrbm8s IHN0YXJ0X29ibGtubywgTlVMTCwKKwkJaGFzaGJ1Y2tldGNsZWFudXAocmVsLCBvbGRfYnVj a2V0LCBidWZfb2Jsa25vLCBzdGFydF9vYmxrbm8sCiAJCQkJCQkgIG1heGJ1Y2tldCwgaGln aG1hc2ssIGxvd21hc2ssIE5VTEwsIE5VTEwsIHRydWUsCiAJCQkJCQkgIE5VTEwsIE5VTEwp OwogCkBAIC0xMzMzLDcgKzEzMDMsNyBAQCBfaGFzaF9zcGxpdGJ1Y2tldChSZWxhdGlvbiBy ZWwsCiAJewogCQlMb2NrQnVmZmVyKGJ1Y2tldF9uYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwogCQloYXNoYnVja2V0Y2xlYW51cChyZWwsIG9idWNrZXQsIGJ1Y2tldF9vYnVmLAotCQkJ CQkJICBCdWZmZXJHZXRCbG9ja051bWJlcihidWNrZXRfb2J1ZiksIE5VTEwsCisJCQkJCQkg IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Y2tldF9vYnVmKSwKIAkJCQkJCSAgbWF4YnVja2V0 LCBoaWdobWFzaywgbG93bWFzaywgTlVMTCwgTlVMTCwgdHJ1ZSwKIAkJCQkJCSAgTlVMTCwg TlVMTCk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA4YjQ4OGNmLi4z NmE3ZDU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzYwLDcgKzM2MCw2 IEBAIHN0YXRpYyB2b2lkCiBpbml0c2NhbihIZWFwU2NhbkRlc2Mgc2NhbiwgU2NhbktleSBr ZXksIGJvb2wga2VlcF9zdGFydGJsb2NrKQogewogCVBhcmFsbGVsQmxvY2tUYWJsZVNjYW5E ZXNjIGJwc2NhbiA9IE5VTEw7Ci0JYm9vbAkJYWxsb3dfc3RyYXQ7CiAJYm9vbAkJYWxsb3df c3luYzsKIAogCS8qCkBAIC0zOTcsMjQgKzM5NiwxMCBAQCBpbml0c2NhbihIZWFwU2NhbkRl c2Mgc2NhbiwgU2NhbktleSBrZXksIGJvb2wga2VlcF9zdGFydGJsb2NrKQogCWlmICghUmVs YXRpb25Vc2VzTG9jYWxCdWZmZXJzKHNjYW4tPnJzX2Jhc2UucnNfcmQpICYmCiAJCXNjYW4t PnJzX25ibG9ja3MgPiBOQnVmZmVycyAvIDQpCiAJewotCQlhbGxvd19zdHJhdCA9IChzY2Fu LT5yc19iYXNlLnJzX2ZsYWdzICYgU09fQUxMT1dfU1RSQVQpICE9IDA7CiAJCWFsbG93X3N5 bmMgPSAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX0FMTE9XX1NZTkMpICE9IDA7CiAJ fQogCWVsc2UKLQkJYWxsb3dfc3RyYXQgPSBhbGxvd19zeW5jID0gZmFsc2U7Ci0KLQlpZiAo YWxsb3dfc3RyYXQpCi0JewotCQkvKiBEdXJpbmcgYSByZXNjYW4sIGtlZXAgdGhlIHByZXZp b3VzIHN0cmF0ZWd5IG9iamVjdC4gKi8KLQkJaWYgKHNjYW4tPnJzX3N0cmF0ZWd5ID09IE5V TEwpCi0JCQlzY2FuLT5yc19zdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxL UkVBRCk7Ci0JfQotCWVsc2UKLQl7Ci0JCWlmIChzY2FuLT5yc19zdHJhdGVneSAhPSBOVUxM KQotCQkJRnJlZUFjY2Vzc1N0cmF0ZWd5KHNjYW4tPnJzX3N0cmF0ZWd5KTsKLQkJc2Nhbi0+ cnNfc3RyYXRlZ3kgPSBOVUxMOwotCX0KKwkJYWxsb3dfc3luYyA9IGZhbHNlOwogCiAJaWYg KHNjYW4tPnJzX2Jhc2UucnNfcGFyYWxsZWwgIT0gTlVMTCkKIAl7CkBAIC0xMjAzLDcgKzEx ODgsNiBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwgU25hcHNob3Qgc25h cHNob3QsCiAJc2Nhbi0+cnNfYmFzZS5yc19mbGFncyA9IGZsYWdzOwogCXNjYW4tPnJzX2Jh c2UucnNfcGFyYWxsZWwgPSBwYXJhbGxlbF9zY2FuOwogCXNjYW4tPnJzX2Jhc2UucnNfaW5z dHJ1bWVudCA9IE5VTEw7Ci0Jc2Nhbi0+cnNfc3RyYXRlZ3kgPSBOVUxMOwkvKiBzZXQgaW4g aW5pdHNjYW4gKi8KIAlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAogCS8qCkBA IC0xMjc0LDggKzEyNTgsNyBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlvbiwg U25hcHNob3Qgc25hcHNob3QsCiAKIAkvKgogCSAqIFNldCB1cCBhIHJlYWQgc3RyZWFtIGZv ciBzZXF1ZW50aWFsIHNjYW5zIGFuZCBUSUQgcmFuZ2Ugc2NhbnMuIFRoaXMKLQkgKiBzaG91 bGQgYmUgZG9uZSBhZnRlciBpbml0c2NhbigpIGJlY2F1c2UgaW5pdHNjYW4oKSBhbGxvY2F0 ZXMgdGhlCi0JICogQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb2JqZWN0IHBhc3NlZCB0byB0aGUg cmVhZCBzdHJlYW0gQVBJLgorCSAqIHNob3VsZCBiZSBkb25lIGFmdGVyIGluaXRzY2FuKCku CiAJICovCiAJaWYgKHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19UWVBFX1NFUVNDQU4g fHwKIAkJc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RZUEVfVElEUkFOR0VTQ0FOKQpA QCAtMTI5Niw3ICsxMjc5LDYgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24s IFNuYXBzaG90IHNuYXBzaG90LAogCQkgKi8KIAkJc2Nhbi0+cnNfcmVhZF9zdHJlYW0gPSBy ZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9TRVFVRU5USUFMIHwKIAkJ CQkJCQkJCQkJCQkJICBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJCQkJ CSAgc2Nhbi0+cnNfc3RyYXRlZ3ksCiAJCQkJCQkJCQkJCQkJCSAgc2Nhbi0+cnNfYmFzZS5y c19yZCwKIAkJCQkJCQkJCQkJCQkJICBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJCQkJCSAg Y2IsCkBAIC0xMzA3LDcgKzEyODksNiBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxh dGlvbiwgU25hcHNob3Qgc25hcHNob3QsCiAJewogCQlzY2FuLT5yc19yZWFkX3N0cmVhbSA9 IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX0RFRkFVTFQgfAogCQkJ CQkJCQkJCQkJCQkgIFJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQkJCQkJ ICBzY2FuLT5yc19zdHJhdGVneSwKIAkJCQkJCQkJCQkJCQkJICBzY2FuLT5yc19iYXNlLnJz X3JkLAogCQkJCQkJCQkJCQkJCQkgIE1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQkJCQkJICBi aXRtYXBoZWFwX3N0cmVhbV9yZWFkX25leHQsCkBAIC0xNDAzLDkgKzEzODQsNiBAQCBoZWFw X2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChzY2Fu LT5yc192bWJ1ZmZlcikpCiAJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwog Ci0JLyoKLQkgKiBNdXN0IGZyZWUgdGhlIHJlYWQgc3RyZWFtIGJlZm9yZSBmcmVlaW5nIHRo ZSBCdWZmZXJBY2Nlc3NTdHJhdGVneS4KLQkgKi8KIAlpZiAoc2Nhbi0+cnNfcmVhZF9zdHJl YW0pCiAJCXJlYWRfc3RyZWFtX2VuZChzY2FuLT5yc19yZWFkX3N0cmVhbSk7CiAKQEAgLTE0 MTcsOSArMTM5NSw2IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlm IChzY2FuLT5yc19iYXNlLnJzX2tleSkKIAkJcGZyZWUoc2Nhbi0+cnNfYmFzZS5yc19rZXkp OwogCi0JaWYgKHNjYW4tPnJzX3N0cmF0ZWd5ICE9IE5VTEwpCi0JCUZyZWVBY2Nlc3NTdHJh dGVneShzY2FuLT5yc19zdHJhdGVneSk7Ci0KIAlpZiAoc2Nhbi0+cnNfcGFyYWxsZWx3b3Jr ZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSk7 CiAKQEAgLTE5NDAsNyArMTkxNSw2IEBAIEdldEJ1bGtJbnNlcnRTdGF0ZSh2b2lkKQogCUJ1 bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwogCiAJYmlzdGF0ZSA9IChCdWxrSW5zZXJ0U3RhdGUp IHBhbGxvY19vYmplY3QoQnVsa0luc2VydFN0YXRlRGF0YSk7Ci0JYmlzdGF0ZS0+c3RyYXRl Z3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1dSSVRFKTsKIAliaXN0YXRlLT5jdXJy ZW50X2J1ZiA9IEludmFsaWRCdWZmZXI7CiAJYmlzdGF0ZS0+bmV4dF9mcmVlID0gSW52YWxp ZEJsb2NrTnVtYmVyOwogCWJpc3RhdGUtPmxhc3RfZnJlZSA9IEludmFsaWRCbG9ja051bWJl cjsKQEAgLTE5NTYsNyArMTkzMCw2IEBAIEZyZWVCdWxrSW5zZXJ0U3RhdGUoQnVsa0luc2Vy dFN0YXRlIGJpc3RhdGUpCiB7CiAJaWYgKGJpc3RhdGUtPmN1cnJlbnRfYnVmICE9IEludmFs aWRCdWZmZXIpCiAJCVJlbGVhc2VCdWZmZXIoYmlzdGF0ZS0+Y3VycmVudF9idWYpOwotCUZy ZWVBY2Nlc3NTdHJhdGVneShiaXN0YXRlLT5zdHJhdGVneSk7CiAJcGZyZWUoYmlzdGF0ZSk7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4 IGJmODc0MzAuLmQxNDY1OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwpAQCAtMjIxMyw5ICsyMjEzLDkgQEAgaGVhcGFtX3NjYW5fc2FtcGxlX25l eHRfYmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLCBTYW1wbGVTY2FuU3RhdGUgKnNjYW5zdGF0 ZSkKIAkgKi8KIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JLyogUmVhZCBwYWdlIHVz aW5nIHNlbGVjdGVkIHN0cmF0ZWd5ICovCisJLyogUmVhZCBwYWdlICovCiAJaHNjYW4tPnJz X2NidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaHNjYW4tPnJzX2Jhc2UucnNfcmQsIE1BSU5f Rk9SS05VTSwKLQkJCQkJCQkJCQlibG9ja25vLCBSQk1fTk9STUFMLCBoc2Nhbi0+cnNfc3Ry YXRlZ3kpOworCQkJCQkJCQkJCWJsb2Nrbm8sIFJCTV9OT1JNQUwpOwogCiAJLyogaW4gcGFn ZW1vZGUsIHBydW5lIHRoZSBwYWdlIGFuZCBkZXRlcm1pbmUgdmlzaWJsZSB0dXBsZSBvZmZz ZXRzICovCiAJaWYgKGhzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fQUxMT1dfUEFHRU1P REUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oaW8uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hpby5jCmluZGV4IGZiNGZmYjkuLjA1ZjMzYTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hpby5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hpby5jCkBAIC04MCw3ICs4MCw4IEBAIFJlbGF0aW9uUHV0SGVhcFR1 cGxlKFJlbGF0aW9uIHJlbGF0aW9uLAogfQogCiAvKgotICogUmVhZCBpbiBhIGJ1ZmZlciBp biBtb2RlLCB1c2luZyBidWxrLWluc2VydCBzdHJhdGVneSBpZiBiaXN0YXRlIGlzbid0IE5V TEwuCisgKiBSZWFkIGluIGEgYnVmZmVyIGluIG1vZGUsIHVzaW5nIHRoZSBiaXN0YXRlJ3Mg cGlubmVkIHRhcmdldCBwYWdlIGlmCisgKiBhdmFpbGFibGUuCiAgKi8KIHN0YXRpYyBCdWZm ZXIKIFJlYWRCdWZmZXJCSShSZWxhdGlvbiByZWxhdGlvbiwgQmxvY2tOdW1iZXIgdGFyZ2V0 QmxvY2ssCkBAIC05MSw3ICs5Miw3IEBAIFJlYWRCdWZmZXJCSShSZWxhdGlvbiByZWxhdGlv biwgQmxvY2tOdW1iZXIgdGFyZ2V0QmxvY2ssCiAJLyogSWYgbm90IGJ1bGstaW5zZXJ0LCBl eGFjdGx5IGxpa2UgUmVhZEJ1ZmZlciAqLwogCWlmICghYmlzdGF0ZSkKIAkJcmV0dXJuIFJl YWRCdWZmZXJFeHRlbmRlZChyZWxhdGlvbiwgTUFJTl9GT1JLTlVNLCB0YXJnZXRCbG9jaywK LQkJCQkJCQkJICBtb2RlLCBOVUxMKTsKKwkJCQkJCQkJICBtb2RlKTsKIAogCS8qIElmIHdl IGhhdmUgdGhlIGRlc2lyZWQgYmxvY2sgYWxyZWFkeSBwaW5uZWQsIHJlLXBpbiBhbmQgcmV0 dXJuIGl0ICovCiAJaWYgKGJpc3RhdGUtPmN1cnJlbnRfYnVmICE9IEludmFsaWRCdWZmZXIp CkBAIC0xMTMsOSArMTE0LDkgQEAgUmVhZEJ1ZmZlckJJKFJlbGF0aW9uIHJlbGF0aW9uLCBC bG9ja051bWJlciB0YXJnZXRCbG9jaywKIAkJYmlzdGF0ZS0+Y3VycmVudF9idWYgPSBJbnZh bGlkQnVmZmVyOwogCX0KIAotCS8qIFBlcmZvcm0gYSByZWFkIHVzaW5nIHRoZSBidWZmZXIg c3RyYXRlZ3kgKi8KKwkvKiBQZXJmb3JtIHRoZSByZWFkICovCiAJYnVmZmVyID0gUmVhZEJ1 ZmZlckV4dGVuZGVkKHJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sIHRhcmdldEJsb2NrLAotCQkJ CQkJCQltb2RlLCBiaXN0YXRlLT5zdHJhdGVneSk7CisJCQkJCQkJCW1vZGUpOwogCiAJLyog U2F2ZSB0aGUgc2VsZWN0ZWQgYmxvY2sgYXMgdGFyZ2V0IGZvciBmdXR1cmUgaW5zZXJ0cyAq LwogCUluY3JCdWZmZXJSZWZDb3VudChidWZmZXIpOwpAQCAtMzM3LDcgKzMzOCw2IEBAIFJl bGF0aW9uQWRkQmxvY2tzKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWxrSW5zZXJ0U3RhdGUgYmlz dGF0ZSwKIAkgKiB3YXkgbGFyZ2VyLgogCSAqLwogCWZpcnN0X2Jsb2NrID0gRXh0ZW5kQnVm ZmVyZWRSZWxCeShCTVJfUkVMKHJlbGF0aW9uKSwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJ ICBiaXN0YXRlID8gYmlzdGF0ZS0+c3RyYXRlZ3kgOiBOVUxMLAogCQkJCQkJCQkJICBFQl9M T0NLX0ZJUlNULAogCQkJCQkJCQkJICBleHRlbmRfYnlfcGFnZXMsCiAJCQkJCQkJCQkgIHZp Y3RpbV9idWZmZXJzLApAQCAtNDg0LDggKzQ4NCw3IEBAIFJlbGF0aW9uQWRkQmxvY2tzKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZSwKICAqCiAgKglUaGUg Y2FsbGVyIGNhbiBhbHNvIHByb3ZpZGUgYSBCdWxrSW5zZXJ0U3RhdGUgb2JqZWN0IHRvIG9w dGltaXplIG1hbnkKICAqCWluc2VydGlvbnMgaW50byB0aGUgc2FtZSByZWxhdGlvbi4gIFRo aXMga2VlcHMgYSBwaW4gb24gdGhlIGN1cnJlbnQKLSAqCWluc2VydGlvbiB0YXJnZXQgcGFn ZSAodG8gc2F2ZSBwaW4vdW5waW4gY3ljbGVzKSBhbmQgYWxzbyBwYXNzZXMgYQotICoJQlVM S1dSSVRFIGJ1ZmZlciBzZWxlY3Rpb24gc3RyYXRlZ3kgb2JqZWN0IHRvIHRoZSBidWZmZXIg bWFuYWdlci4KKyAqCWluc2VydGlvbiB0YXJnZXQgcGFnZSAodG8gc2F2ZSBwaW4vdW5waW4g Y3ljbGVzKS4KICAqCVBhc3NpbmcgTlVMTCBmb3IgYmlzdGF0ZSBzZWxlY3RzIHRoZSBkZWZh dWx0IGJlaGF2aW9yLgogICoKICAqCVdlIGRvbid0IGZpbGwgZXhpc3RpbmcgcGFnZXMgZnVy dGhlciB0aGFuIHRoZSBmaWxsZmFjdG9yLCBleGNlcHQgZm9yIGxhcmdlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzkzOTVhZS4uOGJjOGU0NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjU3LDcgKzI1Nyw2IEBAIHR5 cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAlpbnQJCQluaW5kZXhlczsKIAogCS8qIEJ1ZmZl ciBhY2Nlc3Mgc3RyYXRlZ3kgYW5kIHBhcmFsbGVsIHZhY3V1bSBzdGF0ZSAqLwotCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKIAlQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnM7 CiAKIAkvKiBBZ2dyZXNzaXZlIFZBQ1VVTT8gKG11c3Qgc2V0IHJlbGZyb3plbnhpZCA+PSBG cmVlemVMaW1pdCkgKi8KQEAgLTYyMSw4ICs2MjAsNyBAQCBoZWFwX3ZhY3V1bV9lYWdlcl9z Y2FuX3NldHVwKExWUmVsU3RhdGUgKnZhY3JlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJh bXMpCiAgKgkJYW5kIGxvY2tlZCB0aGUgcmVsYXRpb24uCiAgKi8KIHZvaWQKLWhlYXBfdmFj dXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAotCQkJ CUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKK2hlYXBfdmFjdXVtX3JlbChSZWxh dGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogewogCUxWUmVsU3RhdGUg KnZhY3JlbDsKIAlib29sCQl2ZXJib3NlLApAQCAtNjk5LDcgKzY5Nyw2IEBAIGhlYXBfdmFj dXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXZh Y3JlbC0+cmVsID0gcmVsOwogCXZhY19vcGVuX2luZGV4ZXModmFjcmVsLT5yZWwsIFJvd0V4 Y2x1c2l2ZUxvY2ssICZ2YWNyZWwtPm5pbmRleGVzLAogCQkJCQkgJnZhY3JlbC0+aW5kcmVs cyk7Ci0JdmFjcmVsLT5ic3RyYXRlZ3kgPSBic3RyYXRlZ3k7CiAJaWYgKGluc3RydW1lbnQg JiYgdmFjcmVsLT5uaW5kZXhlcyA+IDApCiAJewogCQkvKiBDb3B5IGluZGV4IG5hbWVzIHVz ZWQgYnkgaW5zdHJ1bWVudGF0aW9uIChub3QgZXJyb3IgcmVwb3J0aW5nKSAqLwpAQCAtMTMx MSw3ICsxMzA4LDYgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCSAq IGV4cGxpY2l0IHdvcmsgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrLgogCSAqLwogCXN0 cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5B TkNFLAotCQkJCQkJCQkJCXZhY3JlbC0+YnN0cmF0ZWd5LAogCQkJCQkJCQkJCXZhY3JlbC0+ cmVsLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQloZWFwX3ZhY19zY2Fu X25leHRfYmxvY2ssCkBAIC0yNjcwLDcgKzI2NjYsNiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Jl bChMVlJlbFN0YXRlICp2YWNyZWwpCiAJICovCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJCQkJCQkJCVJFQURf U1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQl2YWNyZWwtPmJzdHJhdGVneSwKIAkJ CQkJCQkJCQl2YWNyZWwtPnJlbCwKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJ CQkJdmFjdXVtX3JlYXBfbHBfcmVhZF9zdHJlYW1fbmV4dCwKQEAgLTI5MDQsMTMgKzI4OTks NiBAQCBsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVs KQogCiAJCVZhY3V1bUZhaWxzYWZlQWN0aXZlID0gdHJ1ZTsKIAotCQkvKgotCQkgKiBBYmFu ZG9uIHVzZSBvZiBhIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgdG8gYWxsb3cgdXNlIG9mIGFs bCBvZgotCQkgKiBzaGFyZWQgYnVmZmVycy4gIFdlIGFzc3VtZSB0aGUgY2FsbGVyIHdobyBh bGxvY2F0ZWQgdGhlIG1lbW9yeSBmb3IKLQkJICogdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHdpbGwgZnJlZSBpdC4KLQkJICovCi0JCXZhY3JlbC0+YnN0cmF0ZWd5ID0gTlVMTDsKLQog CQkvKiBEaXNhYmxlIGluZGV4IHZhY3V1bWluZywgaW5kZXggY2xlYW51cCwgYW5kIGhlYXAg cmVsIHRydW5jYXRpb24gKi8KIAkJdmFjcmVsLT5kb19pbmRleF92YWN1dW1pbmcgPSBmYWxz ZTsKIAkJdmFjcmVsLT5kb19pbmRleF9jbGVhbnVwID0gZmFsc2U7CkBAIC0zMDIzLDcgKzMw MTEsNiBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSB0cnVl OwogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90 dXBsZXMgPSByZWx0dXBsZXM7Ci0JaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRl Z3k7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0zMDc0LDcgKzMwNjEsNiBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGlu ZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9s ZXZlbCA9IERFQlVHMjsKIAogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 Ci0JaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CiAKIAkvKgogCSAqIFVw ZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBAIC0zMzU0LDggKzMzNDAsNyBA QCBjb3VudF9ub25kZWxldGFibGVfcGFnZXMoTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICps b2NrX3dhaXRlcl9kZXRlY3RlZCkKIAkJCXByZWZldGNoZWRVbnRpbCA9IHByZWZldGNoU3Rh cnQ7CiAJCX0KIAotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQodmFjcmVsLT5yZWwsIE1B SU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwsCi0JCQkJCQkJCSB2YWNyZWwtPmJzdHJh dGVneSk7CisJCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZCh2YWNyZWwtPnJlbCwgTUFJTl9G T1JLTlVNLCBibGtubywgUkJNX05PUk1BTCk7CiAKIAkJLyogSW4gdGhpcyBwaGFzZSB3ZSBv bmx5IG5lZWQgc2hhcmVkIGFjY2VzcyB0byB0aGUgYnVmZmVyICovCiAJCUxvY2tCdWZmZXIo YnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CkBAIC0zNDQ2LDggKzM0MzEsNyBAQCBkZWFkX2l0 ZW1zX2FsbG9jKExWUmVsU3RhdGUgKnZhY3JlbCwgaW50IG53b3JrZXJzKQogCQkJdmFjcmVs LT5wdnMgPSBwYXJhbGxlbF92YWN1dW1faW5pdCh2YWNyZWwtPnJlbCwgdmFjcmVsLT5pbmRy ZWxzLAogCQkJCQkJCQkJCQkgICB2YWNyZWwtPm5pbmRleGVzLCBud29ya2VycywKIAkJCQkJ CQkJCQkJICAgdmFjX3dvcmtfbWVtLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPnZlcmJvc2Ug PyBJTkZPIDogREVCVUcyLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPmJzdHJhdGVneSk7CisJ CQkJCQkJCQkJCSAgIHZhY3JlbC0+dmVyYm9zZSA/IElORk8gOiBERUJVRzIpOwogCiAJCS8q CiAJCSAqIElmIHBhcmFsbGVsIG1vZGUgc3RhcnRlZCwgZGVhZF9pdGVtcyBhbmQgZGVhZF9p dGVtc19pbmZvIHNwYWNlcyBhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxp dHltYXAuYwppbmRleCAxZDUwZTQxLi4yYjVmYjZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC01ODAsNyArNTgwLDcgQEAgdm1fcmVhZGJ1ZihS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBib29sIGV4dGVuZCkKIAl9CiAJZWxz ZQogCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBWSVNJQklMSVRZTUFQX0ZPUktO VU0sIGJsa25vLAotCQkJCQkJCQkgUkJNX1pFUk9fT05fRVJST1IsIE5VTEwpOworCQkJCQkJ CQkgUkJNX1pFUk9fT05fRVJST1IpOwogCiAJLyoKIAkgKiBJbml0aWFsaXppbmcgdGhlIHBh Z2Ugd2hlbiBuZWVkZWQgaXMgdHJpY2tpZXIgdGhhbiBpdCBsb29rcywgYmVjYXVzZSBvZgpA QCAtNjE2LDcgKzYxNiw3IEBAIHZtX2V4dGVuZChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IHZtX25ibG9ja3MpCiB7CiAJQnVmZmVyCQlidWY7CiAKLQlidWYgPSBFeHRlbmRCdWZmZXJl ZFJlbFRvKEJNUl9SRUwocmVsKSwgVklTSUJJTElUWU1BUF9GT1JLTlVNLCBOVUxMLAorCWJ1 ZiA9IEV4dGVuZEJ1ZmZlcmVkUmVsVG8oQk1SX1JFTChyZWwpLCBWSVNJQklMSVRZTUFQX0ZP UktOVU0sCiAJCQkJCQkJICBFQl9DUkVBVEVfRk9SS19JRl9ORUVERUQgfAogCQkJCQkJCSAg RUJfQ0xFQVJfU0laRV9DQUNIRSwKIAkJCQkJCQkgIHZtX25ibG9ja3MsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDEwOTAxN2QuLjdiNWZjMTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCkBAIC05NjAsNyArOTYwLDcgQEAgX2J0X2Fs bG9jYnVmKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIAkgKiBvdGhlcndpc2Ug d291bGQgbWFrZSwgYXMgd2UgY2FuJ3QgdXNlIF9idF9sb2NrYnVmKCkgd2l0aG91dCBpbnRy b2R1Y2luZwogCSAqIGEgcmFjZS4KIAkgKi8KLQlidWYgPSBFeHRlbmRCdWZmZXJlZFJlbChC TVJfUkVMKHJlbCksIE1BSU5fRk9SS05VTSwgTlVMTCwgRUJfTE9DS19GSVJTVCk7CisJYnVm ID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBNQUlOX0ZPUktOVU0sIEVCX0xP Q0tfRklSU1QpOwogCWlmICghUmVsYXRpb25Vc2VzTG9jYWxCdWZmZXJzKHJlbCkpCiAJCVZB TEdSSU5EX01BS0VfTUVNX0RFRklORUQoQnVmZmVyR2V0UGFnZShidWYpLCBCTENLU1opOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRleCAzZGYyYzc1Li4zNzlhMmQz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTEzMjQsNyArMTMyNCw2 IEBAIGJ0dmFjdXVtc2NhbihJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqc3RhdHMsCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24o UkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwg fAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQlpbmZv LT5zdHJhdGVneSwKIAkJCQkJCQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAog CQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLApAQCAtMTczMCw4ICsxNzI5 LDcgQEAgYmFja3RyYWNrOgogCQkgKiByZWN5Y2xlIGFsbC16ZXJvIHBhZ2VzLCBub3QgZmFp bC4gIEFsc28sIHdlIHdhbnQgdG8gdXNlIGEKIAkJICogbm9uZGVmYXVsdCBidWZmZXIgYWNj ZXNzIHN0cmF0ZWd5LgogCQkgKi8KLQkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwg TUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCwKLQkJCQkJCQkJIGluZm8tPnN0cmF0 ZWd5KTsKKwkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBi bGtubywgUkJNX05PUk1BTCk7CiAJCWdvdG8gYmFja3RyYWNrOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jCmluZGV4IGYyZWUzMzMuLjc4NWUzODUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3V0aWxzLmMKQEAgLTQzMiw3ICs0MzIsNyBAQCBT cEdpc3ROZXdCdWZmZXIoUmVsYXRpb24gaW5kZXgpCiAJCVJlbGVhc2VCdWZmZXIoYnVmZmVy KTsKIAl9CiAKLQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwg TUFJTl9GT1JLTlVNLCBOVUxMLAorCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9S RUwoaW5kZXgpLCBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CiAK IAlyZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMK aW5kZXggYzQ2MWY4ZC4uOWY2NDRlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3ZhY3V1bS5jCkBAIC03MDQsOCArNzA0LDcgQEAgc3BncHJvY2Vzc3BlbmRpbmcoc3BnQnVs a0RlbGV0ZVN0YXRlICpiZHMpCiAKIAkJLyogZXhhbWluZSB0aGUgcmVmZXJlbmNlZCBwYWdl ICovCiAJCWJsa25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmcGl0ZW0tPnRpZCk7 Ci0JCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBi bGtubywKLQkJCQkJCQkJCVJCTV9OT1JNQUwsIGJkcy0+aW5mby0+c3RyYXRlZ3kpOworCQli dWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8s IFJCTV9OT1JNQUwpOwogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVT SVZFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIApAQCAtODMwLDcgKzgy OSw2IEBAIHNwZ3ZhY3V1bXNjYW4oc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJc3RyZWFt ID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0Ug fAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFN X1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQliZHMtPmluZm8tPnN0cmF0ZWd5LAogCQkJCQkJ CQkJCWluZGV4LAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19y YW5nZV9yZWFkX3N0cmVhbV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dp bnNlcnQuYwppbmRleCBmMmUxMGI4Li4wYzE2YjdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ2luc2VydC5jCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBsb2dfbmV3cGFn ZV9yYW5nZShSZWxhdGlvbiByZWwsIEZvcmtOdW1iZXIgZm9ya251bSwKIAkJd2hpbGUgKG5i dWZzIDwgWExSX01BWF9CTE9DS19JRCAmJiBibGtubyA8IGVuZGJsaykKIAkJewogCQkJQnVm ZmVyCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBmb3JrbnVtLCBibGtubywKLQkJ CQkJCQkJCQkJCSBSQk1fTk9STUFMLCBOVUxMKTsKKwkJCQkJCQkJCQkJCSBSQk1fTk9STUFM KTsKIAogCQkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggNThiOWRhYi4uYTA1 NGZmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTUx OSw3ICs1MTksNyBAQCBYTG9nUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJewogCQkvKiBwYWdlIGV4aXN0cyBpbiBm aWxlICovCiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJXaXRob3V0UmVsY2FjaGUocmxvY2F0b3Is IGZvcmtudW0sIGJsa25vLAotCQkJCQkJCQkJCSAgIG1vZGUsIE5VTEwsIHRydWUpOworCQkJ CQkJCQkJCSAgIG1vZGUsIHRydWUpOwogCX0KIAllbHNlCiAJewpAQCAtNTM2LDcgKzUzNiw2 IEBAIFhMb2dSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZv cmtOdW1iZXIgZm9ya251bSwKIAkJQXNzZXJ0KEluUmVjb3ZlcnkpOwogCQlidWZmZXIgPSBF eHRlbmRCdWZmZXJlZFJlbFRvKEJNUl9TTUdSKHNtZ3IsIFJFTFBFUlNJU1RFTkNFX1BFUk1B TkVOVCksCiAJCQkJCQkJCQkgZm9ya251bSwKLQkJCQkJCQkJCSBOVUxMLAogCQkJCQkJCQkJ IEVCX1BFUkZPUk1JTkdfUkVDT1ZFUlkgfAogCQkJCQkJCQkJIEVCX1NLSVBfRVhURU5TSU9O X0xPQ0ssCiAJCQkJCQkJCQkgYmxrbm8gKyAxLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDgx YmJhNGIuLmIwYTdiOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0MzEsNyArMzQzMSw2 IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBz bmFwc2hvdCkKIAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gdHJ1ZTsKIAlpdmluZm8ubWVz c2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gaGVhcFJl bGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKLQlpdmluZm8uc3RyYXRlZ3kgPSBOVUxMOwog CiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJh dGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRl eCBmNjZlODBiLi45YjExN2E1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC03Miw3 ICs3Miw2IEBAIGludAkJCWRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgPSAxMDA7CiAKIC8q IEEgZmV3IHZhcmlhYmxlcyB0aGF0IGRvbid0IHNlZW0gd29ydGggcGFzc2luZyBhcm91bmQg YXMgcGFyYW1ldGVycyAqLwogc3RhdGljIE1lbW9yeUNvbnRleHQgYW5sX2NvbnRleHQgPSBO VUxMOwotc3RhdGljIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHZhY19zdHJhdGVneTsKIAogCiBz dGF0aWMgdm9pZCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsCkBAIC0xMDgsOCAr MTA3LDcgQEAgc3RhdGljIERhdHVtIGluZF9mZXRjaF9mdW5jKFZhY0F0dHJTdGF0c1Agc3Rh dHMsIGludCByb3dudW0sIGJvb2wgKmlzTnVsbCk7CiAgKi8KIHZvaWQKIGFuYWx5emVfcmVs KE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLAotCQkJY29uc3QgVmFjdXVtUGFyYW1z ICpwYXJhbXMsIExpc3QgKnZhX2NvbHMsIGJvb2wgaW5fb3V0ZXJfeGFjdCwKLQkJCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKKwkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFy YW1zLCBMaXN0ICp2YV9jb2xzLCBib29sIGluX291dGVyX3hhY3QpCiB7CiAJUmVsYXRpb24J b25lcmVsOwogCWludAkJCWVsZXZlbDsKQEAgLTEyNCw3ICsxMjIsNiBAQCBhbmFseXplX3Jl bChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJZWxldmVsID0gREVCVUcyOwog CiAJLyogU2V0IHVwIHN0YXRpYyB2YXJpYWJsZXMgKi8KLQl2YWNfc3RyYXRlZ3kgPSBic3Ry YXRlZ3k7CiAKIAkvKgogCSAqIENoZWNrIGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4KQEAg LTczMCw3ICs3MjcsNiBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0 IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLmVzdGltYXRlZF9jb3VudCA9IHRy dWU7CiAJCQlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IGVsZXZlbDsKIAkJCWl2aW5mby5udW1f aGVhcF90dXBsZXMgPSBvbmVyZWwtPnJkX3JlbC0+cmVsdHVwbGVzOwotCQkJaXZpbmZvLnN0 cmF0ZWd5ID0gdmFjX3N0cmF0ZWd5OwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVh bnVwKCZpdmluZm8sIE5VTEwpOwogCkBAIC0xMzAyLDcgKzEyOTgsNiBAQCBhY3F1aXJlX3Nh bXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwgaW50IGVsZXZlbCwKIAkgKi8KIAlzdHJlYW0g PSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8 CiAJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCXZhY19z dHJhdGVneSwKIAkJCQkJCQkJCQlzY2FuLT5yc19yZCwKIAkJCQkJCQkJCQlNQUlOX0ZPUktO VU0sCiAJCQkJCQkJCQkJYmxvY2tfc2FtcGxpbmdfcmVhZF9zdHJlYW1fbmV4dCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCA1MWRjYmQ5Li5jN2E3YTkwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBAIC0yNjIsNyArMjYyLDYgQEAgU2NhblNvdXJj ZURhdGFiYXNlUGdDbGFzcyhPaWQgdGJpZCwgT2lkIGRiaWQsIGNoYXIgKnNyY3BhdGgpCiAJ TG9ja1JlbElkCXJlbGlkOwogCVNuYXBzaG90CXNuYXBzaG90OwogCVNNZ3JSZWxhdGlvbiBz bWdyOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKIAogCS8qIEdldCBwZ19j bGFzcyByZWxmaWxlbnVtYmVyLiAqLwogCXJlbGZpbGVudW1iZXIgPSBSZWxhdGlvbk1hcE9p ZFRvRmlsZW51bWJlckZvckRhdGFiYXNlKHNyY3BhdGgsCkBAIC0yODIsOSArMjgxLDYgQEAg U2NhblNvdXJjZURhdGFiYXNlUGdDbGFzcyhPaWQgdGJpZCwgT2lkIGRiaWQsIGNoYXIgKnNy Y3BhdGgpCiAJbmJsb2NrcyA9IHNtZ3JuYmxvY2tzKHNtZ3IsIE1BSU5fRk9SS05VTSk7CiAJ c21ncmNsb3NlKHNtZ3IpOwogCi0JLyogVXNlIGEgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBz aW5jZSB0aGlzIGlzIGEgYnVsayByZWFkIG9wZXJhdGlvbi4gKi8KLQlic3RyYXRlZ3kgPSBH ZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwotCiAJLyoKIAkgKiBBcyBleHBsYWlu ZWQgaW4gdGhlIGZ1bmN0aW9uIGhlYWRlciBjb21tZW50cywgd2UgbmVlZCBhIHNuYXBzaG90 IHRoYXQKIAkgKiB3aWxsIHNlZSBhbGwgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBhcyBjb21t aXR0ZWQsIGFuZCBvdXIgdHJhbnNhY3Rpb24KQEAgLTI5OSw3ICsyOTUsNyBAQCBTY2FuU291 cmNlRGF0YWJhc2VQZ0NsYXNzKE9pZCB0YmlkLCBPaWQgZGJpZCwgY2hhciAqc3JjcGF0aCkK IAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQlidWYgPSBSZWFkQnVmZmVyV2l0aG91 dFJlbGNhY2hlKHJsb2NhdG9yLCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJCVJC TV9OT1JNQUwsIGJzdHJhdGVneSwgdHJ1ZSk7CisJCQkJCQkJCQkJUkJNX05PUk1BTCwgdHJ1 ZSk7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5kZXggMDI4ODNm ZS4uZDhjMTVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI0NDcsNyArMjQ0Nyw3 IEBAIHByb2Nlc3Nfc2luZ2xlX3JlbGF0aW9uKFJlcGFja1N0bXQgKnN0bXQsIExPQ0tNT0RF IGxvY2ttb2RlLCBib29sIGlzVG9wTGV2ZWwsCiAJCQlpZiAocGFyYW1zLT5vcHRpb25zICYg Q0xVT1BUX1ZFUkJPU0UpCiAJCQkJdmFjX3BhcmFtcy5vcHRpb25zIHw9IFZBQ09QVF9WRVJC T1NFOwogCQkJYW5hbHl6ZV9yZWwodGFibGVPaWQsIE5VTEwsICZ2YWNfcGFyYW1zLAotCQkJ CQkJc3RtdC0+cmVsYXRpb24tPnZhX2NvbHMsIHRydWUsIE5VTEwpOworCQkJCQkJc3RtdC0+ cmVsYXRpb24tPnZhX2NvbHMsIHRydWUpOwogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJ CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jCmluZGV4IDU1MTY2NzYuLmFjMWFiOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2Uu YwpAQCAtMzU4LDcgKzM1OCw3IEBAIGZpbGxfc2VxX2Zvcmtfd2l0aF9kYXRhKFJlbGF0aW9u IHJlbCwgSGVhcFR1cGxlIHR1cGxlLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiAKIAkvKiBJbml0 aWFsaXplIGZpcnN0IHBhZ2Ugb2YgcmVsYXRpb24gd2l0aCBzcGVjaWFsIG1hZ2ljIG51bWJl ciAqLwogCi0JYnVmID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBmb3JrTnVt LCBOVUxMLAorCWJ1ZiA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwocmVsKSwgZm9ya051 bSwKIAkJCQkJCQlFQl9MT0NLX0ZJUlNUIHwgRUJfU0tJUF9FWFRFTlNJT05fTE9DSyk7CiAJ QXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gMCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMKaW5kZXggMzg1MzlhNi4uNjZhY2QyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMKQEAgLTEyNywzMiArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHZhY190cnVuY2F0ZV9jbG9n KFRyYW5zYWN0aW9uSWQgZnJvemVuWElELAogCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXN0 U2FuZUZyb3plblhpZCwKIAkJCQkJCQkgIE11bHRpWGFjdElkIGxhc3RTYW5lTWluTXVsdGkp Owogc3RhdGljIGJvb2wgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlv biwgVmFjdXVtUGFyYW1zIHBhcmFtcywKLQkJCQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwpOworCQkJCQkgICBib29sIGlzVG9wTGV2ZWwp Owogc3RhdGljIGRvdWJsZSBjb21wdXRlX3BhcmFsbGVsX2RlbGF5KHZvaWQpOwogc3RhdGlj IFZhY09wdFZhbHVlIGdldF92YWNvcHR2YWxfZnJvbV9ib29sZWFuKERlZkVsZW0gKmRlZik7 CiBzdGF0aWMgYm9vbCB2YWNfdGlkX3JlYXBlZChJdGVtUG9pbnRlciBpdGVtcHRyLCB2b2lk ICpzdGF0ZSk7CiAKLS8qCi0gKiBHVUMgY2hlY2sgZnVuY3Rpb24gdG8gZW5zdXJlIEdVQyB2 YWx1ZSBzcGVjaWZpZWQgaXMgd2l0aGluIHRoZSBhbGxvd2FibGUKLSAqIHJhbmdlLgotICov Ci1ib29sCi1jaGVja192YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0KGludCAqbmV3dmFsLCB2 b2lkICoqZXh0cmEsCi0JCQkJCQkJCUd1Y1NvdXJjZSBzb3VyY2UpCi17Ci0JLyogVmFsdWUg dXBwZXIgYW5kIGxvd2VyIGhhcmQgbGltaXRzIGFyZSBpbmNsdXNpdmUgKi8KLQlpZiAoKm5l d3ZhbCA9PSAwIHx8ICgqbmV3dmFsID49IE1JTl9CQVNfVkFDX1JJTkdfU0laRV9LQiAmJgot CQkJCQkJICpuZXd2YWwgPD0gTUFYX0JBU19WQUNfUklOR19TSVpFX0tCKSkKLQkJcmV0dXJu IHRydWU7Ci0KLQkvKiBWYWx1ZSBkb2VzIG5vdCBmYWxsIHdpdGhpbiBhbnkgYWxsb3dhYmxl IHJhbmdlICovCi0JR1VDX2NoZWNrX2VycmRldGFpbCgiXCIlc1wiIG11c3QgYmUgMCBvciBi ZXR3ZWVuICVkIGtCIGFuZCAlZCBrQi4iLAotCQkJCQkJInZhY3V1bV9idWZmZXJfdXNhZ2Vf bGltaXQiLAotCQkJCQkJTUlOX0JBU19WQUNfUklOR19TSVpFX0tCLCBNQVhfQkFTX1ZBQ19S SU5HX1NJWkVfS0IpOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiAvKgogICogUHJpbWFyeSBl bnRyeSBwb2ludCBmb3IgbWFudWFsIFZBQ1VVTSBhbmQgQU5BTFlaRSBjb21tYW5kcwogICoK QEAgLTE2Myw3ICsxNDIsNiBAQCB2b2lkCiBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQogewogCVZhY3V1bVBh cmFtcyBwYXJhbXM7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gTlVMTDsK IAlib29sCQl2ZXJib3NlID0gZmFsc2U7CiAJYm9vbAkJc2tpcF9sb2NrZWQgPSBmYWxzZTsK IAlib29sCQlhbmFseXplID0gZmFsc2U7CkBAIC0xNzIsNyArMTUwLDYgQEAgRXhlY1ZhY3V1 bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BM ZXZlbCkKIAlib29sCQlkaXNhYmxlX3BhZ2Vfc2tpcHBpbmcgPSBmYWxzZTsKIAlib29sCQlw cm9jZXNzX21haW4gPSB0cnVlOwogCWJvb2wJCXByb2Nlc3NfdG9hc3QgPSB0cnVlOwotCWlu dAkJCXJpbmdfc2l6ZTsKIAlib29sCQlza2lwX2RhdGFiYXNlX3N0YXRzID0gZmFsc2U7CiAJ Ym9vbAkJb25seV9kYXRhYmFzZV9zdGF0cyA9IGZhbHNlOwogCU1lbW9yeUNvbnRleHQgdmFj X2NvbnRleHQ7CkBAIC0xODgsMTIgKzE2NSw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAq cHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJLyogV2ls bCBiZSBzZXQgbGF0ZXIgaWYgd2UgcmVjdXJzZSB0byBhIFRPQVNUIHRhYmxlLiAqLwogCXBh cmFtcy50b2FzdF9wYXJlbnQgPSBJbnZhbGlkT2lkOwogCi0JLyoKLQkgKiBTZXQgdGhpcyB0 byBhbiBpbnZhbGlkIHZhbHVlIHNvIGl0IGlzIGNsZWFyIHdoZXRoZXIgb3Igbm90IGEKLQkg KiBCVUZGRVJfVVNBR0VfTElNSVQgd2FzIHNwZWNpZmllZCB3aGVuIG1ha2luZyB0aGUgYWNj ZXNzIHN0cmF0ZWd5LgotCSAqLwotCXJpbmdfc2l6ZSA9IC0xOwotCiAJLyogUGFyc2Ugb3B0 aW9ucyBsaXN0ICovCiAJZm9yZWFjaChsYywgdmFjc3RtdC0+b3B0aW9ucykKIAl7CkBAIC0y MDQsMzIgKzE3NSw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1T dG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQl2ZXJib3NlID0gZGVmR2V0Qm9v bGVhbihvcHQpOwogCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAic2tpcF9sb2Nr ZWQiKSA9PSAwKQogCQkJc2tpcF9sb2NrZWQgPSBkZWZHZXRCb29sZWFuKG9wdCk7Ci0JCWVs c2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJidWZmZXJfdXNhZ2VfbGltaXQiKSA9PSAw KQotCQl7Ci0JCQljb25zdCBjaGFyICpoaW50bXNnOwotCQkJaW50CQkJcmVzdWx0OwotCQkJ Y2hhcgkgICAqdmFjX2J1ZmZlcl9zaXplOwotCi0JCQl2YWNfYnVmZmVyX3NpemUgPSBkZWZH ZXRTdHJpbmcob3B0KTsKLQotCQkJLyoKLQkJCSAqIENoZWNrIHRoYXQgdGhlIHNwZWNpZmll ZCB2YWx1ZSBpcyB2YWxpZCBhbmQgdGhlIHNpemUgZmFsbHMKLQkJCSAqIHdpdGhpbiB0aGUg aGFyZCB1cHBlciBhbmQgbG93ZXIgbGltaXRzIGlmIGl0IGlzIG5vdCAwLgotCQkJICovCi0J CQlpZiAoIXBhcnNlX2ludCh2YWNfYnVmZmVyX3NpemUsICZyZXN1bHQsIEdVQ19VTklUX0tC LCAmaGludG1zZykgfHwKLQkJCQkocmVzdWx0ICE9IDAgJiYKLQkJCQkgKHJlc3VsdCA8IE1J Tl9CQVNfVkFDX1JJTkdfU0laRV9LQiB8fCByZXN1bHQgPiBNQVhfQkFTX1ZBQ19SSU5HX1NJ WkVfS0IpKSkKLQkJCXsKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCQkgZXJybXNnKCIlcyBvcHRp b24gbXVzdCBiZSAwIG9yIGJldHdlZW4gJWQga0IgYW5kICVkIGtCIiwKLQkJCQkJCQkJIkJV RkZFUl9VU0FHRV9MSU1JVCIsCi0JCQkJCQkJCU1JTl9CQVNfVkFDX1JJTkdfU0laRV9LQiwg TUFYX0JBU19WQUNfUklOR19TSVpFX0tCKSwKLQkJCQkJCSBoaW50bXNnID8gZXJyaGludF9p bnRlcm5hbCgiJXMiLCBfKGhpbnRtc2cpKSA6IDApKTsKLQkJCX0KLQotCQkJcmluZ19zaXpl ID0gcmVzdWx0OwotCQl9CiAJCWVsc2UgaWYgKCF2YWNzdG10LT5pc192YWN1dW1jbWQpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CkBAIC0zMjUsMTcgKzI3MCw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBW YWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIlZBQ1VVTSBGVUxM IGNhbm5vdCBiZSBwZXJmb3JtZWQgaW4gcGFyYWxsZWwiKSkpOwogCi0JLyoKLQkgKiBCVUZG RVJfVVNBR0VfTElNSVQgZG9lcyBub3RoaW5nIGZvciBWQUNVVU0gKEZVTEwpIHNvIGp1c3Qg cmFpc2UgYW4KLQkgKiBFUlJPUiBmb3IgdGhhdCBjYXNlLiAgVkFDVVVNIChGVUxMLCBBTkFM WVpFKSBkb2VzIG1ha2UgdXNlIG9mIGl0LCBzbwotCSAqIHdlJ2xsIHBlcm1pdCB0aGF0Lgot CSAqLwotCWlmIChyaW5nX3NpemUgIT0gLTEgJiYgKHBhcmFtcy5vcHRpb25zICYgVkFDT1BU X0ZVTEwpICYmCi0JCSEocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfQU5BTFlaRSkpCi0JCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAotCQkJCSBlcnJtc2coIkJVRkZFUl9VU0FHRV9MSU1JVCBjYW5ub3QgYmUgc3BlY2lm aWVkIGZvciBWQUNVVU0gRlVMTCIpKSk7Ci0KIAkvKgogCSAqIE1ha2Ugc3VyZSBWQUNPUFRf QU5BTFlaRSBpcyBzcGVjaWZpZWQgaWYgYW55IGNvbHVtbiBsaXN0cyBhcmUgcHJlc2VudC4K IAkgKi8KQEAgLTQzMSwzOCArMzY1LDggQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3Rh dGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCQkJCQkJCQki VmFjdXVtIiwKIAkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAotCS8qCi0J ICogTWFrZSBhIGJ1ZmZlciBzdHJhdGVneSBvYmplY3QgaW4gdGhlIGNyb3NzLXRyYW5zYWN0 aW9uIG1lbW9yeSBjb250ZXh0LgotCSAqIFdlIG5lZWRuJ3QgYm90aGVyIG1ha2luZyB0aGlz IGZvciBWQUNVVU0gKEZVTEwpIG9yIFZBQ1VVTQotCSAqIChPTkxZX0RBVEFCQVNFX1NUQVRT KSBhcyB0aGV5J2xsIG5vdCBtYWtlIHVzZSBvZiBpdC4gIFZBQ1VVTSAoRlVMTCwKLQkgKiBB TkFMWVpFKSBpcyBwb3NzaWJsZSwgc28gd2UnZCBiZXR0ZXIgZW5zdXJlIHRoYXQgd2UgbWFr ZSBhIHN0cmF0ZWd5Ci0JICogd2hlbiB3ZSBzZWUgQU5BTFlaRS4KLQkgKi8KLQlpZiAoKHBh cmFtcy5vcHRpb25zICYgKFZBQ09QVF9PTkxZX0RBVEFCQVNFX1NUQVRTIHwKLQkJCQkJCSAg IFZBQ09QVF9GVUxMKSkgPT0gMCB8fAotCQkocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfQU5B TFlaRSkgIT0gMCkKLQl7Ci0KLQkJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyh2YWNfY29udGV4dCk7Ci0KLQkJQXNzZXJ0KHJpbmdfc2l6ZSA+ PSAtMSk7Ci0KLQkJLyoKLQkJICogSWYgQlVGRkVSX1VTQUdFX0xJTUlUIHdhcyBzcGVjaWZp ZWQgYnkgdGhlIFZBQ1VVTSBvciBBTkFMWVpFCi0JCSAqIGNvbW1hbmQsIGl0IG92ZXJyaWRl cyB0aGUgdmFsdWUgb2YgVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdC4gIEVpdGhlcgotCQkgKiB2 YWx1ZSBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBHZXRBY2Nlc3NTdHJhdGVneVdpdGhTaXpl KCkgd2lsbAotCQkgKiByZXR1cm4gTlVMTCwgZWZmZWN0aXZlbHkgYWxsb3dpbmcgZnVsbCB1 c2Ugb2Ygc2hhcmVkIGJ1ZmZlcnMuCi0JCSAqLwotCQlpZiAocmluZ19zaXplID09IC0xKQot CQkJcmluZ19zaXplID0gVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdDsKLQotCQlic3RyYXRlZ3kg PSBHZXRBY2Nlc3NTdHJhdGVneVdpdGhTaXplKEJBU19WQUNVVU0sIHJpbmdfc2l6ZSk7Ci0K LQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jb250ZXh0KTsKLQl9Ci0KIAkvKiBOb3cg Z28gdGhyb3VnaCB0aGUgY29tbW9uIHJvdXRpbmUgKi8KLQl2YWN1dW0odmFjc3RtdC0+cmVs cywgJnBhcmFtcywgYnN0cmF0ZWd5LCB2YWNfY29udGV4dCwgaXNUb3BMZXZlbCk7CisJdmFj dXVtKHZhY3N0bXQtPnJlbHMsICZwYXJhbXMsIHZhY19jb250ZXh0LCBpc1RvcExldmVsKTsK IAogCS8qIEZpbmFsbHksIGNsZWFuIHVwIHRoZSB2YWN1dW0gbWVtb3J5IGNvbnRleHQgKi8K IAlNZW1vcnlDb250ZXh0RGVsZXRlKHZhY19jb250ZXh0KTsKQEAgLTQ3OSwxOSArMzgzLDEz IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10 LCBib29sIGlzVG9wTGV2ZWwpCiAgKiBwYXJhbXMgY29udGFpbnMgYSBzZXQgb2YgcGFyYW1l dGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUKICAqIGJlaGF2aW9yLgog ICoKLSAqIGJzdHJhdGVneSBtYXkgYmUgcGFzc2VkIGluIGFzIE5VTEwgd2hlbiB0aGUgY2Fs bGVyIGRvZXMgbm90IHdhbnQgdG8KLSAqIHJlc3RyaWN0IHRoZSBudW1iZXIgb2Ygc2hhcmVk X2J1ZmZlcnMgdGhhdCBWQUNVVU0gLyBBTkFMWVpFIGNhbiB1c2UsCi0gKiBvdGhlcndpc2Us IHRoZSBjYWxsZXIgbXVzdCBidWlsZCBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHdpdGggdGhl IG51bWJlciBvZgotICogc2hhcmVkX2J1ZmZlcnMgdGhhdCBWQUNVVU0gLyBBTkFMWVpFIHNo b3VsZCB0cnkgdG8gbGltaXQgdGhlbXNlbHZlcyB0bwotICogdXNpbmcuCi0gKgogICogaXNU b3BMZXZlbCBzaG91bGQgYmUgcGFzc2VkIGRvd24gZnJvbSBQcm9jZXNzVXRpbGl0eS4KICAq CiAgKiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdGhhdCBhbGwgcGFyYW1l dGVycyBhcmUgYWxsb2NhdGVkIGluIGEKICAqIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBu b3QgZGlzYXBwZWFyIGF0IHRyYW5zYWN0aW9uIGNvbW1pdC4KICAqLwogdm9pZAotdmFjdXVt KExpc3QgKnJlbGF0aW9ucywgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSwKK3ZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIGNvbnN0 IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCSAgIE1lbW9yeUNvbnRleHQgdmFjX2NvbnRleHQs IGJvb2wgaXNUb3BMZXZlbCkKIHsKIAlzdGF0aWMgYm9vbCBpbl92YWN1dW0gPSBmYWxzZTsK QEAgLTYzMCw3ICs1MjgsNyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBjb25zdCBWYWN1 dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZQogCiAJCQlp ZiAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX1ZBQ1VVTSkKIAkJCXsKLQkJCQlpZiAoIXZh Y3V1bV9yZWwodnJlbC0+b2lkLCB2cmVsLT5yZWxhdGlvbiwgKnBhcmFtcywgYnN0cmF0ZWd5 LAorCQkJCWlmICghdmFjdXVtX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCAqcGFy YW1zLAogCQkJCQkJCQlpc1RvcExldmVsKSkKIAkJCQkJY29udGludWU7CiAJCQl9CkBAIC02 NDksNyArNTQ3LDcgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgY29uc3QgVmFjdXVtUGFy YW1zICpwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGUKIAkJCQl9CiAKIAkJ CQlhbmFseXplX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCBwYXJhbXMsCi0JCQkJ CQkJdnJlbC0+dmFfY29scywgaW5fb3V0ZXJfeGFjdCwgYnN0cmF0ZWd5KTsKKwkJCQkJCQl2 cmVsLT52YV9jb2xzLCBpbl9vdXRlcl94YWN0KTsKIAogCQkJCWlmICh1c2Vfb3duX3hhY3Rz KQogCQkJCXsKQEAgLTIwMTAsNyArMTkwOCw3IEBAIHZhY190cnVuY2F0ZV9jbG9nKFRyYW5z YWN0aW9uSWQgZnJvemVuWElELAogICovCiBzdGF0aWMgYm9vbAogdmFjdXVtX3JlbChPaWQg cmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zIHBhcmFtcywKLQkJICAg QnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwpCisJCSAg IGJvb2wgaXNUb3BMZXZlbCkKIHsKIAlMT0NLTU9ERQlsbW9kZTsKIAlSZWxhdGlvbglyZWw7 CkBAIC0yMzA3LDcgKzIyMDUsNyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIg KnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJcmVsID0gTlVMTDsKIAkJfQog CQllbHNlCi0JCQl0YWJsZV9yZWxhdGlvbl92YWN1dW0ocmVsLCAmcGFyYW1zLCBic3RyYXRl Z3kpOworCQkJdGFibGVfcmVsYXRpb25fdmFjdXVtKHJlbCwgJnBhcmFtcyk7CiAJfQogCiAJ LyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlv bnMgKi8KQEAgLTIzNDQsNyArMjI0Miw3IEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5n ZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCXRvYXN0X3ZhY3V1bV9w YXJhbXMub3B0aW9ucyB8PSBWQUNPUFRfUFJPQ0VTU19NQUlOOwogCQl0b2FzdF92YWN1dW1f cGFyYW1zLnRvYXN0X3BhcmVudCA9IHJlbGlkOwogCi0JCXZhY3V1bV9yZWwodG9hc3RfcmVs aWQsIE5VTEwsIHRvYXN0X3ZhY3V1bV9wYXJhbXMsIGJzdHJhdGVneSwKKwkJdmFjdXVtX3Jl bCh0b2FzdF9yZWxpZCwgTlVMTCwgdG9hc3RfdmFjdXVtX3BhcmFtcywKIAkJCQkgICBpc1Rv cExldmVsKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmlu ZGV4IDQxY2VmY2YuLjhiNGI4MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwpAQCAtMTI1LDEyICsxMjUsNiBAQCB0eXBlZGVmIHN0cnVjdCBQVlNoYXJlZAog CSAqLwogCWludAkJCW1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlcjsKIAotCS8qCi0JICog VGhlIG51bWJlciBvZiBidWZmZXJzIGVhY2ggd29ya2VyJ3MgQnVmZmVyIEFjY2VzcyBTdHJh dGVneSByaW5nIHNob3VsZAotCSAqIGNvbnRhaW4uCi0JICovCi0JaW50CQkJcmluZ19uYnVm ZmVyczsKLQogCS8qCiAJICogU2hhcmVkIHZhY3V1bSBjb3N0IGJhbGFuY2UuICBEdXJpbmcg cGFyYWxsZWwgdmFjdXVtLAogCSAqIFZhY3V1bVNoYXJlZENvc3RCYWxhbmNlIHBvaW50cyB0 byB0aGlzIHZhbHVlIGFuZCBpdCBhY2N1bXVsYXRlcyB0aGUKQEAgLTI1Nyw5ICsyNTEsNiBA QCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCWludAkJCW5pbmRleGVzX3BhcmFsbGVs X2NsZWFudXA7CiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfY29uZGNsZWFudXA7CiAKLQkv KiBCdWZmZXIgYWNjZXNzIHN0cmF0ZWd5IHVzZWQgYnkgbGVhZGVyIHByb2Nlc3MgKi8KLQlC dWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7Ci0KIAkvKgogCSAqIEVycm9yIHJlcG9y dGluZyBzdGF0ZS4gIFRoZSBlcnJvciBjYWxsYmFjayBpcyBzZXQgb25seSBmb3Igd29ya2Vy cwogCSAqIHByb2Nlc3NlcyBkdXJpbmcgcGFyYWxsZWwgaW5kZXggdmFjdXVtLgpAQCAtMzA0 LDcgKzI5NSw3IEBAIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9kc21fZGV0YWNoKGRz bV9zZWdtZW50ICpzZWcsIERhdHVtIGFyZyk7CiBQYXJhbGxlbFZhY3V1bVN0YXRlICoKIHBh cmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGlu dCBuaW5kZXhlcywKIAkJCQkJIGludCBucmVxdWVzdGVkX3dvcmtlcnMsIGludCB2YWNfd29y a19tZW0sCi0JCQkJCSBpbnQgZWxldmVsLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRl Z3kpCisJCQkJCSBpbnQgZWxldmVsKQogewogCVBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2czsK IAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CkBAIC0zNDUsNyArMzM2LDYgQEAgcGFyYWxsZWxf dmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRl eGVzLAogCXB2cy0+aW5kcmVscyA9IGluZHJlbHM7CiAJcHZzLT5uaW5kZXhlcyA9IG5pbmRl eGVzOwogCXB2cy0+d2lsbF9wYXJhbGxlbF92YWN1dW0gPSB3aWxsX3BhcmFsbGVsX3ZhY3V1 bTsKLQlwdnMtPmJzdHJhdGVneSA9IGJzdHJhdGVneTsKIAlwdnMtPmhlYXByZWwgPSByZWw7 CiAKIAlFbnRlclBhcmFsbGVsTW9kZSgpOwpAQCAtNDQ3LDkgKzQzNyw2IEBAIHBhcmFsbGVs X3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5k ZXhlcywKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaGFuZGxlID0gVGlkU3RvcmVHZXRIYW5kbGUo ZGVhZF9pdGVtcyk7CiAJc2hhcmVkLT5kZWFkX2l0ZW1zX2RzYV9oYW5kbGUgPSBkc2FfZ2V0 X2hhbmRsZShUaWRTdG9yZUdldERTQShkZWFkX2l0ZW1zKSk7CiAKLQkvKiBVc2UgdGhlIHNh bWUgYnVmZmVyIHNpemUgZm9yIGFsbCB3b3JrZXJzICovCi0Jc2hhcmVkLT5yaW5nX25idWZm ZXJzID0gR2V0QWNjZXNzU3RyYXRlZ3lCdWZmZXJDb3VudChic3RyYXRlZ3kpOwotCiAJcGdf YXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5jb3N0X2JhbGFuY2UpLCAwKTsKIAlwZ19hdG9t aWNfaW5pdF91MzIoJihzaGFyZWQtPmFjdGl2ZV9ud29ya2VycyksIDApOwogCXBnX2F0b21p Y19pbml0X3UzMigmKHNoYXJlZC0+aWR4KSwgMCk7CkBAIC0xMDkxLDcgKzEwNzgsNiBAQCBw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7 CiAJaXZpbmZvLmVzdGltYXRlZF9jb3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291 bnQ7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7 Ci0JaXZpbmZvLnN0cmF0ZWd5ID0gcHZzLT5ic3RyYXRlZ3k7CiAKIAkvKiBVcGRhdGUgZXJy b3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1lID0gcHN0cmR1cChS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKQEAgLTEyOTQsMTAgKzEyODAsNiBA QCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2Mp CiAJcHZzLmluZG5hbWUgPSBOVUxMOwogCXB2cy5zdGF0dXMgPSBQQVJBTExFTF9JTkRWQUNf U1RBVFVTX0lOSVRJQUw7CiAKLQkvKiBFYWNoIHBhcmFsbGVsIFZBQ1VVTSB3b3JrZXIgZ2V0 cyBpdHMgb3duIGFjY2VzcyBzdHJhdGVneS4gKi8KLQlwdnMuYnN0cmF0ZWd5ID0gR2V0QWNj ZXNzU3RyYXRlZ3lXaXRoU2l6ZShCQVNfVkFDVVVNLAotCQkJCQkJCQkJCQkgIHNoYXJlZC0+ cmluZ19uYnVmZmVycyAqIChCTENLU1ogLyAxMDI0KSk7Ci0KIAkvKiBTZXR1cCBlcnJvciB0 cmFjZWJhY2sgc3VwcG9ydCBmb3IgZXJlcG9ydCgpICovCiAJZXJyY2FsbGJhY2suY2FsbGJh Y2sgPSBwYXJhbGxlbF92YWN1dW1fZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2suYXJn ID0gJnB2czsKQEAgLTEzMjgsNyArMTMxMCw2IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCXZhY19jbG9zZV9pbmRleGVzKG5p bmRleGVzLCBpbmRyZWxzLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAl0YWJsZV9jbG9zZShyZWws IFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7Ci0JRnJlZUFjY2Vzc1N0cmF0ZWd5KHB2cy5i c3RyYXRlZ3kpOwogCiAJaWYgKHNoYXJlZC0+aXNfYXV0b3ZhY3V1bSkKIAkJcHZfc2hhcmVk X2Nvc3RfcGFyYW1zID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK aW5kZXggNDVhYmY0OC4uZTAyMWU3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKQEAgLTM4Niw4ICszODYsNyBAQCBzdGF0aWMgdm9pZCByZWxhdGlvbl9uZWVkc192 YWNhbmFseXplKE9pZCByZWxpZCwgQXV0b1ZhY09wdHMgKnJlbG9wdHMsCiAJCQkJCQkJCQkg IGJvb2wgKmRvdmFjdXVtLCBib29sICpkb2FuYWx5emUsIGJvb2wgKndyYXBhcm91bmQsCiAJ CQkJCQkJCQkgIEF1dG9WYWN1dW1TY29yZXMgKnNjb3Jlcyk7CiAKLXN0YXRpYyB2b2lkIGF1 dG92YWN1dW1fZG9fdmFjX2FuYWx5emUoYXV0b3ZhY190YWJsZSAqdGFiLAotCQkJCQkJCQkJ ICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOworc3RhdGljIHZvaWQgYXV0b3Zh Y3V1bV9kb192YWNfYW5hbHl6ZShhdXRvdmFjX3RhYmxlICp0YWIpOwogc3RhdGljIEF1dG9W YWNPcHRzICpleHRyYWN0X2F1dG92YWNfb3B0cyhIZWFwVHVwbGUgdHVwLAogCQkJCQkJCQkJ CSBUdXBsZURlc2MgcGdfY2xhc3NfZGVzYyk7CiBzdGF0aWMgdm9pZCBwZXJmb3JtX3dvcmtf aXRlbShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtKTsKQEAgLTE5MzYsNyArMTkzNSw2 IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFi bGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZvbGF0aWxlIGNlbGw7Ci0JQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5OwogCVNjYW5LZXlEYXRhIGtleTsKIAlUdXBsZURlc2MJ cGdfY2xhc3NfZGVzYzsKIAlpbnQJCQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhf YWdlOwpAQCAtMjMyMiwyMyArMjMyMCw2IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJYXV0 b3ZhY3V1bV9hbmFseXplX3Njb3JlX3dlaWdodCAhPSAwLjApCiAJCWxpc3Rfc29ydCh0YWJs ZXNfdG9fcHJvY2VzcywgVGFibGVUb1Byb2Nlc3NDb21wYXJhdG9yKTsKIAotCS8qCi0JICog T3B0aW9uYWxseSwgY3JlYXRlIGEgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBvYmplY3QgZm9y IFZBQ1VVTSB0byB1c2UuCi0JICogV2UgdXNlIHRoZSBzYW1lIEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IG9iamVjdCBmb3IgYWxsIHRhYmxlcyBWQUNVVU1lZCBieQotCSAqIHRoaXMgd29ya2Vy IHRvIHByZXZlbnQgYXV0b3ZhY3V1bSBmcm9tIGJsb3dpbmcgb3V0IHNoYXJlZCBidWZmZXJz LgotCSAqCi0JICogVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCBiZWluZyBzZXQgdG8gMCByZXN1 bHRzIGluCi0JICogR2V0QWNjZXNzU3RyYXRlZ3lXaXRoU2l6ZSByZXR1cm5pbmcgTlVMTCwg ZWZmZWN0aXZlbHkgbWVhbmluZyB3ZSBjYW4KLQkgKiB1c2UgdXAgdG8gYWxsIG9mIHNoYXJl ZCBidWZmZXJzLgotCSAqCi0JICogSWYgd2UgbGF0ZXIgZW50ZXIgZmFpbHNhZmUgbW9kZSBv biBhbnkgb2YgdGhlIHRhYmxlcyBiZWluZyB2YWN1dW1lZCwgd2UKLQkgKiB3aWxsIGNlYXNl IHVzZSBvZiB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb25seSBmb3IgdGhhdCB0YWJsZS4K LQkgKgotCSAqIFhYWCBzaG91bGQgd2UgY29uc2lkZXIgYWRkaW5nIGNvZGUgdG8gYWRqdXN0 IHRoZSBzaXplIG9mIHRoaXMgaWYKLQkgKiBWYWN1dW1CdWZmZXJVc2FnZUxpbWl0IGNoYW5n ZXM/Ci0JICovCi0JYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3lXaXRoU2l6ZShCQVNf VkFDVVVNLCBWYWN1dW1CdWZmZXJVc2FnZUxpbWl0KTsKLQogCS8qCiAJICogY3JlYXRlIGEg bWVtb3J5IGNvbnRleHQgdG8gYWN0IGFzIGZha2UgUG9ydGFsQ29udGV4dCwgc28gdGhhdCB0 aGUKIAkgKiBjb250ZXh0cyBjcmVhdGVkIGluIHRoZSB2YWN1dW0gY29kZSBhcmUgY2xlYW5l ZCB1cCBmb3IgZWFjaCB0YWJsZS4KQEAgLTI1MTYsNyArMjQ5Nyw3IEBAIGRvX2F1dG92YWN1 dW0odm9pZCkKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhQb3J0YWxDb250ZXh0KTsKIAog CQkJLyogaGF2ZSBhdCBpdCAqLwotCQkJYXV0b3ZhY3V1bV9kb192YWNfYW5hbHl6ZSh0YWIs IGJzdHJhdGVneSk7CisJCQlhdXRvdmFjdXVtX2RvX3ZhY19hbmFseXplKHRhYik7CiAKIAkJ CS8qCiAJCQkgKiBDbGVhciBhIHBvc3NpYmxlIHF1ZXJ5LWNhbmNlbCBzaWduYWwsIHRvIGF2 b2lkIGEgbGF0ZSByZWFjdGlvbgpAQCAtMjYzNiw4ICsyNjE3LDYgQEAgZGVsZXRlZDoKICNp ZmRlZiBVU0VfVkFMR1JJTkQKIAloYXNoX2Rlc3Ryb3kodGFibGVfdG9hc3RfbWFwKTsKIAlG cmVlVHVwbGVEZXNjKHBnX2NsYXNzX2Rlc2MpOwotCWlmIChic3RyYXRlZ3kpCi0JCXBmcmVl KGJzdHJhdGVneSk7CiAjZW5kaWYKIAogCS8qIFJ1biB0aGUgcmVzdCBpbiB4YWN0IGNvbnRl eHQsIG1haW5seSB0byBhdm9pZCBWYWxncmluZCBsZWFrIHdhcm5pbmdzICovCkBAIC0zMzQ4 LDcgKzMzMjcsNyBAQCByZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKICAq IGRpc2FwcGVhciBhdCB0cmFuc2FjdGlvbiBjb21taXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1h dXRvdmFjdXVtX2RvX3ZhY19hbmFseXplKGF1dG92YWNfdGFibGUgKnRhYiwgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQorYXV0b3ZhY3V1bV9kb192YWNfYW5hbHl6ZShhdXRv dmFjX3RhYmxlICp0YWIpCiB7CiAJUmFuZ2VWYXIgICAqcmFuZ2V2YXI7CiAJVmFjdXVtUmVs YXRpb24gKnJlbDsKQEAgLTMzNzEsNyArMzM1MCw3IEBAIGF1dG92YWN1dW1fZG9fdmFjX2Fu YWx5emUoYXV0b3ZhY190YWJsZSAqdGFiLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRl Z3kpCiAJcmVsX2xpc3QgPSBsaXN0X21ha2UxKHJlbCk7CiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZF9jb250ZXh0KTsKIAotCXZhY3V1bShyZWxfbGlzdCwgJnRhYi0+YXRfcGFyYW1z LCBic3RyYXRlZ3ksIHZhY19jb250ZXh0LCB0cnVlKTsKKwl2YWN1dW0ocmVsX2xpc3QsICZ0 YWItPmF0X3BhcmFtcywgdmFjX2NvbnRleHQsIHRydWUpOwogCiAJTWVtb3J5Q29udGV4dERl bGV0ZSh2YWNfY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuYwppbmRleCA3M2RjNTM5Li5iNjYxMmYxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKQEAgLTM5MCw3ICszOTAs NyBAQCBzdGF0aWMgTGlzdCAqQnVpbGRSZWxhdGlvbkxpc3QoYm9vbCB0ZW1wX3JlbGF0aW9u cywgYm9vbCBpbmNsdWRlX3NoYXJlZCk7CiBzdGF0aWMgdm9pZCBGcmVlRGF0YWJhc2VMaXN0 KExpc3QgKmRibGlzdCk7CiBzdGF0aWMgRGF0YUNoZWNrc3Vtc1dvcmtlclJlc3VsdCBQcm9j ZXNzRGF0YWJhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckRhdGFiYXNlICpkYik7CiBzdGF0aWMg Ym9vbCBQcm9jZXNzQWxsRGF0YWJhc2VzKHZvaWQpOwotc3RhdGljIGJvb2wgUHJvY2Vzc1Np bmdsZVJlbGF0aW9uRm9yayhSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKK3N0YXRpYyBib29sIFByb2Nlc3NTaW5n bGVSZWxhdGlvbkZvcmsoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVtKTsKIHN0 YXRpYyB2b2lkIFJlc2V0RGF0YUNoZWNrc3Vtc1Byb2dyZXNzQ291bnRlcnModm9pZCk7CiBz dGF0aWMgdm9pZCBsYXVuY2hlcl9jYW5jZWxfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0 aWMgdm9pZCBXYWl0Rm9yQWxsVHJhbnNhY3Rpb25zVG9GaW5pc2godm9pZCk7CkBAIC02ODcs NyArNjg3LDcgQEAgU3RhcnREYXRhQ2hlY2tzdW1zV29ya2VyTGF1bmNoZXIoRGF0YUNoZWNr c3Vtc1dvcmtlck9wZXJhdGlvbiBvcCwKICAqIGVycm9yIGlzIHJhaXNlZCBpbiB0aGUgbG93 ZXIgbGV2ZWxzLgogICovCiBzdGF0aWMgYm9vbAotUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9y ayhSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IHN0cmF0ZWd5KQorUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhSZWxhdGlvbiByZWxu LCBGb3JrTnVtYmVyIGZvcmtOdW0pCiB7CiAJQmxvY2tOdW1iZXIgbnVtYmxvY2tzID0gUmVs YXRpb25HZXROdW1iZXJPZkJsb2Nrc0luRm9yayhyZWxuLCBmb3JrTnVtKTsKIAljaGFyCQlh Y3Rpdml0eVtOQU1FREFUQUxFTiAqIDIgKyAxMjhdOwpAQCAtNzIyLDcgKzcyMiw3IEBAIFBy b2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3Jr TnVtLCBCdWZmZXJBY2Nlc3NTdHJhdGVnCiAJICovCiAJZm9yIChCbG9ja051bWJlciBibGtu dW0gPSAwOyBibGtudW0gPCBudW1ibG9ja3M7IGJsa251bSsrKQogCXsKLQkJQnVmZmVyCQli dWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsbiwgZm9ya051bSwgYmxrbnVtLCBSQk1fTk9S TUFMLCBzdHJhdGVneSk7CisJCUJ1ZmZlcgkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJl bG4sIGZvcmtOdW0sIGJsa251bSwgUkJNX05PUk1BTCk7CiAKIAkJLyogTmVlZCB0byBnZXQg YW4gZXhjbHVzaXZlIGxvY2sgdG8gbWFyayB0aGUgYnVmZmVyIGFzIGRpcnR5ICovCiAJCUxv Y2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwpAQCAtODA4LDcgKzgwOCw3 IEBAIFJlc2V0RGF0YUNoZWNrc3Vtc1Byb2dyZXNzQ291bnRlcnModm9pZCkKICAqIGVycm9y IGlzIHJhaXNlZCBpbiB0aGUgbG93ZXIgbGV2ZWxzLgogICovCiBzdGF0aWMgYm9vbAotUHJv Y2Vzc1NpbmdsZVJlbGF0aW9uQnlPaWQoT2lkIHJlbGF0aW9uSWQsIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5KQorUHJvY2Vzc1NpbmdsZVJlbGF0aW9uQnlPaWQoT2lkIHJlbGF0 aW9uSWQpCiB7CiAJUmVsYXRpb24JcmVsOwogCWJvb2wJCWFib3J0ZWQgPSBmYWxzZTsKQEAg LTgzNSw3ICs4MzUsNyBAQCBQcm9jZXNzU2luZ2xlUmVsYXRpb25CeU9pZChPaWQgcmVsYXRp b25JZCwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpCiAJewogCQlpZiAoc21ncmV4 aXN0cyhyZWwtPnJkX3NtZ3IsIGZudW0pKQogCQl7Ci0JCQlpZiAoIVByb2Nlc3NTaW5nbGVS ZWxhdGlvbkZvcmsocmVsLCBmbnVtLCBzdHJhdGVneSkpCisJCQlpZiAoIVByb2Nlc3NTaW5n bGVSZWxhdGlvbkZvcmsocmVsLCBmbnVtKSkKIAkJCXsKIAkJCQlhYm9ydGVkID0gdHJ1ZTsK IAkJCQlicmVhazsKQEAgLTE1ODIsNyArMTU4Miw2IEBAIERhdGFDaGVja3N1bXNXb3JrZXJN YWluKERhdHVtIGFyZykKIAlPaWQJCQlkYm9pZDsKIAlMaXN0CSAgICpSZWxhdGlvbkxpc3Qg PSBOSUw7CiAJTGlzdAkgICAqSW5pdGlhbFRlbXBUYWJsZUxpc3QgPSBOSUw7Ci0JQnVmZmVy QWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3k7CiAJYm9vbAkJYWJvcnRlZCA9IGZhbHNlOwogCWlu dDY0CQlyZWxzX2RvbmU7CiAJYm9vbAkJcHJvY2Vzc19zaGFyZWQ7CkBAIC0xNjUwLDExICsx NjQ5LDYgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKQogCVZhY3V1bVVw ZGF0ZUNvc3RzKCk7CiAJVmFjdXVtQ29zdEJhbGFuY2UgPSAwOwogCi0JLyoKLQkgKiBDcmVh dGUgYW5kIHNldCB0aGUgdmFjdXVtIHN0cmF0ZWd5IGFzIG91ciBidWZmZXIgc3RyYXRlZ3ku Ci0JICovCi0Jc3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfVkFDVVVNKTsKLQog CVJlbGF0aW9uTGlzdCA9IEJ1aWxkUmVsYXRpb25MaXN0KGZhbHNlLCBwcm9jZXNzX3NoYXJl ZCk7CiAKIAkvKiBVcGRhdGUgdGhlIHRvdGFsIG51bWJlciBvZiByZWxhdGlvbnMgdG8gYmUg cHJvY2Vzc2VkIGluIHRoaXMgREIuICovCkBAIC0xNjc2LDkgKzE2NzAsNyBAQCBEYXRhQ2hl Y2tzdW1zV29ya2VyTWFpbihEYXR1bSBhcmcpCiAJcmVsc19kb25lID0gMDsKIAlmb3JlYWNo X29pZChyZWxvaWQsIFJlbGF0aW9uTGlzdCkKIAl7Ci0JCWJvb2wJCWNvc3RzX3VwZGF0ZWQg PSBmYWxzZTsKLQotCQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkJ5T2lkKHJlbG9pZCwg c3RyYXRlZ3kpKQorCQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkJ5T2lkKHJlbG9pZCkp CiAJCXsKIAkJCWFib3J0ZWQgPSB0cnVlOwogCQkJYnJlYWs7CkBAIC0xNjk0LDggKzE2ODYs NyBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1bSBhcmcpCiAKIAkJLyoKIAkJICog Q2hlY2sgaWYgdGhlIGNvc3Qgc2V0dGluZ3MgY2hhbmdlZCBkdXJpbmcgcnVudGltZSBhbmQg aWYgc28sIHVwZGF0ZQotCQkgKiB0byByZWZsZWN0IHRoZSBuZXcgdmFsdWVzIGFuZCBzaWdu YWwgdGhhdCB0aGUgYWNjZXNzIHN0cmF0ZWd5IG5lZWRzCi0JCSAqIHRvIGJlIHJlZnJlc2hl ZC4KKwkJICogdG8gcmVmbGVjdCB0aGUgbmV3IHZhbHVlcy4KIAkJICovCiAJCUxXTG9ja0Fj cXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCWlmIChE YXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX2ludm9jYXRpb24gIT0gd29ya2VyX2ludm9jYXRp b24pCkBAIC0xNzA2LDcgKzE2OTcsNiBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1 bSBhcmcpCiAJCWlmICgoRGF0YUNoZWNrc3VtU3RhdGUtPmxhdW5jaF9jb3N0X2RlbGF5ICE9 IERhdGFDaGVja3N1bVN0YXRlLT5jb3N0X2RlbGF5KQogCQkJfHwgKERhdGFDaGVja3N1bVN0 YXRlLT5sYXVuY2hfY29zdF9saW1pdCAhPSBEYXRhQ2hlY2tzdW1TdGF0ZS0+Y29zdF9saW1p dCkpCiAJCXsKLQkJCWNvc3RzX3VwZGF0ZWQgPSB0cnVlOwogCQkJVmFjdXVtQ29zdERlbGF5 ID0gRGF0YUNoZWNrc3VtU3RhdGUtPmxhdW5jaF9jb3N0X2RlbGF5OwogCQkJVmFjdXVtQ29z dExpbWl0ID0gRGF0YUNoZWNrc3VtU3RhdGUtPmxhdW5jaF9jb3N0X2xpbWl0OwogCQkJVmFj dXVtVXBkYXRlQ29zdHMoKTsKQEAgLTE3MTQsMTkgKzE3MDQsMTAgQEAgRGF0YUNoZWNrc3Vt c1dvcmtlck1haW4oRGF0dW0gYXJnKQogCQkJRGF0YUNoZWNrc3VtU3RhdGUtPmNvc3RfZGVs YXkgPSBEYXRhQ2hlY2tzdW1TdGF0ZS0+bGF1bmNoX2Nvc3RfZGVsYXk7CiAJCQlEYXRhQ2hl Y2tzdW1TdGF0ZS0+Y29zdF9saW1pdCA9IERhdGFDaGVja3N1bVN0YXRlLT5sYXVuY2hfY29z dF9saW1pdDsKIAkJfQotCQllbHNlCi0JCQljb3N0c191cGRhdGVkID0gZmFsc2U7CiAJCUxX TG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2spOwotCi0JCWlmIChjb3N0c191 cGRhdGVkKQotCQl7Ci0JCQlGcmVlQWNjZXNzU3RyYXRlZ3koc3RyYXRlZ3kpOwotCQkJc3Ry YXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfVkFDVVVNKTsKLQkJfQogCX0KIAogCWxp c3RfZnJlZShSZWxhdGlvbkxpc3QpOwotCUZyZWVBY2Nlc3NTdHJhdGVneShzdHJhdGVneSk7 CiAKIAlpZiAoYWJvcnRlZCB8fCBhYm9ydF9yZXF1ZXN0ZWQpCiAJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0uYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKaW5kZXggYTMxODUzOS4uMDhkMzQ0ZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJlYW0uYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCkBAIC03NTcsNyArNzU3LDYgQEAg cmVhZF9zdHJlYW1fbG9va19haGVhZChSZWFkU3RyZWFtICpzdHJlYW0pCiAgKi8KIHN0YXRp YyBSZWFkU3RyZWFtICoKIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoaW50IGZsYWdzLAotCQkJ CQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJICAgUmVsYXRpb24g cmVsLAogCQkJCQkgICBTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJICAgY2hhciBwZXJzaXN0 ZW5jZSwKQEAgLTc3MSw3ICs3NzAsNiBAQCByZWFkX3N0cmVhbV9iZWdpbl9pbXBsKGludCBm bGFncywKIAlpbnQxNgkJcXVldWVfc2l6ZTsKIAlpbnQxNgkJcXVldWVfb3ZlcmZsb3c7CiAJ aW50CQkJbWF4X2lvczsKLQlpbnQJCQlzdHJhdGVneV9waW5fbGltaXQ7CiAJdWludDMyCQlt YXhfcGlubmVkX2J1ZmZlcnM7CiAJdWludDMyCQltYXhfcG9zc2libGVfYnVmZmVyX2xpbWl0 OwogCU9pZAkJCXRhYmxlc3BhY2VfaWQ7CkBAIC04MzUsMTAgKzgzMyw2IEBAIHJlYWRfc3Ry ZWFtX2JlZ2luX2ltcGwoaW50IGZsYWdzLAogCW1heF9waW5uZWRfYnVmZmVycyA9IE1pbiht YXhfcGlubmVkX2J1ZmZlcnMsCiAJCQkJCQkJIFBHX0lOVDE2X01BWCAtIHF1ZXVlX292ZXJm bG93IC0gMSk7CiAKLQkvKiBHaXZlIHRoZSBzdHJhdGVneSBhIGNoYW5jZSB0byBsaW1pdCB0 aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgd2UgcGluLiAqLwotCXN0cmF0ZWd5X3Bpbl9saW1pdCA9 IEdldEFjY2Vzc1N0cmF0ZWd5UGluTGltaXQoc3RyYXRlZ3kpOwotCW1heF9waW5uZWRfYnVm ZmVycyA9IE1pbihzdHJhdGVneV9waW5fbGltaXQsIG1heF9waW5uZWRfYnVmZmVycyk7Ci0K IAkvKgogCSAqIEFsc28gbGltaXQgb3VyIHF1ZXVlIHRvIHRoZSBtYXhpbXVtIG51bWJlciBv ZiBwaW5zIHdlIGNvdWxkIGV2ZXIgYmUKIAkgKiBhbGxvd2VkIHRvIGFjcXVpcmUgYWNjb3Jk aW5nIHRvIHRoZSBidWZmZXIgbWFuYWdlci4gIFdlIG1heSBub3QgcmVhbGx5CkBAIC05NjIs NyArOTU2LDYgQEAgcmVhZF9zdHJlYW1fYmVnaW5faW1wbChpbnQgZmxhZ3MsCiAJCXN0cmVh bS0+aW9zW2ldLm9wLnNtZ3IgPSBzbWdyOwogCQlzdHJlYW0tPmlvc1tpXS5vcC5wZXJzaXN0 ZW5jZSA9IHBlcnNpc3RlbmNlOwogCQlzdHJlYW0tPmlvc1tpXS5vcC5mb3JrbnVtID0gZm9y a251bTsKLQkJc3RyZWFtLT5pb3NbaV0ub3Auc3RyYXRlZ3kgPSBzdHJhdGVneTsKIAl9CiAK IAlyZXR1cm4gc3RyZWFtOwpAQCAtOTc0LDcgKzk2Nyw2IEBAIHJlYWRfc3RyZWFtX2JlZ2lu X2ltcGwoaW50IGZsYWdzLAogICovCiBSZWFkU3RyZWFtICoKIHJlYWRfc3RyZWFtX2JlZ2lu X3JlbGF0aW9uKGludCBmbGFncywKLQkJCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5LAogCQkJCQkJICAgUmVsYXRpb24gcmVsLAogCQkJCQkJICAgRm9ya051bWJlciBm b3JrbnVtLAogCQkJCQkJICAgUmVhZFN0cmVhbUJsb2NrTnVtYmVyQ0IgY2FsbGJhY2ssCkBA IC05ODIsNyArOTc0LDYgQEAgcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oaW50IGZsYWdz LAogCQkJCQkJICAgc2l6ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplKQogewogCXJldHVybiBy ZWFkX3N0cmVhbV9iZWdpbl9pbXBsKGZsYWdzLAotCQkJCQkJCQkgIHN0cmF0ZWd5LAogCQkJ CQkJCQkgIHJlbCwKIAkJCQkJCQkJICBSZWxhdGlvbkdldFNtZ3IocmVsKSwKIAkJCQkJCQkJ ICByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UsCkBAIC05OTgsNyArOTg5LDYgQEAgcmVh ZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oaW50IGZsYWdzLAogICovCiBSZWFkU3RyZWFtICoK IHJlYWRfc3RyZWFtX2JlZ2luX3NtZ3JfcmVsYXRpb24oaW50IGZsYWdzLAotCQkJCQkJCQlC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJCQkJU01nclJlbGF0aW9uIHNt Z3IsCiAJCQkJCQkJCWNoYXIgc21ncl9wZXJzaXN0ZW5jZSwKIAkJCQkJCQkJRm9ya051bWJl ciBmb3JrbnVtLApAQCAtMTAwNyw3ICs5OTcsNiBAQCByZWFkX3N0cmVhbV9iZWdpbl9zbWdy X3JlbGF0aW9uKGludCBmbGFncywKIAkJCQkJCQkJc2l6ZV90IHBlcl9idWZmZXJfZGF0YV9z aXplKQogewogCXJldHVybiByZWFkX3N0cmVhbV9iZWdpbl9pbXBsKGZsYWdzLAotCQkJCQkJ CQkgIHN0cmF0ZWd5LAogCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCSAgc21nciwKIAkJCQkJ CQkJICBzbWdyX3BlcnNpc3RlbmNlLApAQCAtMTM3MCwxMyArMTM1OSwxMSBAQCByZWFkX3N0 cmVhbV9uZXh0X2J1ZmZlcihSZWFkU3RyZWFtICpzdHJlYW0sIHZvaWQgKipwZXJfYnVmZmVy X2RhdGEpCiAgKiBUcmFuc2l0aW9uYWwgc3VwcG9ydCBmb3IgY29kZSB0aGF0IHdvdWxkIGxp a2UgdG8gcGVyZm9ybSBvciBza2lwIHJlYWRzCiAgKiBpdHNlbGYsIHdpdGhvdXQgdXNpbmcg dGhlIHN0cmVhbS4gIFJldHVybnMsIGFuZCBjb25zdW1lcywgdGhlIG5leHQgYmxvY2sKICAq IG51bWJlciB0aGF0IHdvdWxkIGJlIHJlYWQgYnkgdGhlIHN0cmVhbSdzIGxvb2stYWhlYWQg YWxnb3JpdGhtLCBvcgotICogSW52YWxpZEJsb2NrTnVtYmVyIGlmIHRoZSBlbmQgb2YgdGhl IHN0cmVhbSBpcyByZWFjaGVkLiAgQWxzbyByZXBvcnRzIHRoZQotICogc3RyYXRlZ3kgdGhh dCB3b3VsZCBiZSB1c2VkIHRvIHJlYWQgaXQuCisgKiBJbnZhbGlkQmxvY2tOdW1iZXIgaWYg dGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIHJlYWNoZWQuCiAgKi8KIEJsb2NrTnVtYmVyCi1y ZWFkX3N0cmVhbV9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwgQnVmZmVyQWNjZXNz U3RyYXRlZ3kgKnN0cmF0ZWd5KQorcmVhZF9zdHJlYW1fbmV4dF9ibG9jayhSZWFkU3RyZWFt ICpzdHJlYW0pCiB7Ci0JKnN0cmF0ZWd5ID0gc3RyZWFtLT5pb3NbMF0ub3Auc3RyYXRlZ3k7 CiAJcmV0dXJuIHJlYWRfc3RyZWFtX2dldF9ibG9jayhzdHJlYW0sIE5VTEwpOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9SRUFETUUgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9SRUFETUUKaW5kZXggYjMzMmUwMC4uNThkZjZiZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvUkVBRE1FCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL1JFQURNRQpAQCAtMjAzLDUwICsyMDMsNiBAQCBoYXZl IHRvIGdpdmUgdXAgYW5kIHRyeSBhbm90aGVyIGJ1ZmZlci4gIFRoaXMgaG93ZXZlciBpcyBu b3QgYSBjb25jZXJuCiBvZiB0aGUgYmFzaWMgc2VsZWN0LWEtdmljdGltLWJ1ZmZlciBhbGdv cml0aG0uKQogCiAKLUJ1ZmZlciBSaW5nIFJlcGxhY2VtZW50IFN0cmF0ZWd5Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotV2hlbiBydW5uaW5nIGEgcXVlcnkgdGhh dCBuZWVkcyB0byBhY2Nlc3MgYSBsYXJnZSBudW1iZXIgb2YgcGFnZXMganVzdCBvbmNlLAot c3VjaCBhcyBWQUNVVU0gb3IgYSBsYXJnZSBzZXF1ZW50aWFsIHNjYW4sIGEgZGlmZmVyZW50 IHN0cmF0ZWd5IGlzIHVzZWQuCi1BIHBhZ2UgdGhhdCBoYXMgYmVlbiB0b3VjaGVkIG9ubHkg Ynkgc3VjaCBhIHNjYW4gaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkCi1hZ2FpbiBzb29uLCBz byBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIG5vcm1hbCBjbG9jay1zd2VlcCBhbGdvcml0aG0g YW5kCi1ibG93aW5nIG91dCB0aGUgZW50aXJlIGJ1ZmZlciBjYWNoZSwgYSBzbWFsbCByaW5n IG9mIGJ1ZmZlcnMgaXMgYWxsb2NhdGVkCi11c2luZyB0aGUgbm9ybWFsIGNsb2NrLXN3ZWVw IGFsZ29yaXRobSBhbmQgdGhvc2UgYnVmZmVycyBhcmUgcmV1c2VkIGZvciB0aGUKLXdob2xl IHNjYW4uICBUaGlzIGFsc28gaW1wbGllcyB0aGF0IG11Y2ggb2YgdGhlIHdyaXRlIHRyYWZm aWMgY2F1c2VkIGJ5IHN1Y2gKLWEgc3RhdGVtZW50IHdpbGwgYmUgZG9uZSBieSB0aGUgYmFj a2VuZCBpdHNlbGYgYW5kIG5vdCBwdXNoZWQgb2ZmIG9udG8gb3RoZXIKLXByb2Nlc3Nlcy4K LQotRm9yIHNlcXVlbnRpYWwgc2NhbnMsIGEgMjU2S0IgcmluZyBpcyB1c2VkLiBUaGF0J3Mg c21hbGwgZW5vdWdoIHRvIGZpdCBpbiBMMgotY2FjaGUsIHdoaWNoIG1ha2VzIHRyYW5zZmVy cmluZyBwYWdlcyBmcm9tIE9TIGNhY2hlIHRvIHNoYXJlZCBidWZmZXIgY2FjaGUKLWVmZmlj aWVudC4gIEV2ZW4gbGVzcyB3b3VsZCBvZnRlbiBiZSBlbm91Z2gsIGJ1dCB0aGUgcmluZyBt dXN0IGJlIGJpZyBlbm91Z2gKLXRvIGFjY29tbW9kYXRlIGFsbCBwYWdlcyBpbiB0aGUgc2Nh biB0aGF0IGFyZSBwaW5uZWQgY29uY3VycmVudGx5LiAgMjU2S0IKLXNob3VsZCBhbHNvIGJl IGVub3VnaCB0byBsZWF2ZSBhIHNtYWxsIGNhY2hlIHRyYWlsIGZvciBvdGhlciBiYWNrZW5k cyB0bwotam9pbiBpbiBhIHN5bmNocm9uaXplZCBzZXEgc2Nhbi4gIElmIGEgcmluZyBidWZm ZXIgaXMgZGlydGllZCBhbmQgaXRzIExTTgotdXBkYXRlZCwgd2Ugd291bGQgbm9ybWFsbHkg aGF2ZSB0byB3cml0ZSBhbmQgZmx1c2ggV0FMIGJlZm9yZSB3ZSBjb3VsZAotcmUtdXNlIHRo ZSBidWZmZXI7IGluIHRoaXMgY2FzZSB3ZSBpbnN0ZWFkIGRpc2NhcmQgdGhlIGJ1ZmZlciBm cm9tIHRoZSByaW5nCi1hbmQgKGxhdGVyKSBjaG9vc2UgYSByZXBsYWNlbWVudCB1c2luZyB0 aGUgbm9ybWFsIGNsb2NrLXN3ZWVwIGFsZ29yaXRobS4KLUhlbmNlIHRoaXMgc3RyYXRlZ3kg d29ya3MgYmVzdCBmb3Igc2NhbnMgdGhhdCBhcmUgcmVhZC1vbmx5IChvciBhdCB3b3JzdAot dXBkYXRlIGhpbnQgYml0cykuICBJbiBhIHNjYW4gdGhhdCBtb2RpZmllcyBldmVyeSBwYWdl IGluIHRoZSBzY2FuLCBsaWtlIGEKLWJ1bGsgVVBEQVRFIG9yIERFTEVURSwgdGhlIGJ1ZmZl cnMgaW4gdGhlIHJpbmcgd2lsbCBhbHdheXMgYmUgZGlydGllZCBhbmQKLXRoZSByaW5nIHN0 cmF0ZWd5IGVmZmVjdGl2ZWx5IGRlZ3JhZGVzIHRvIHRoZSBub3JtYWwgc3RyYXRlZ3kuCi0K LVZBQ1VVTSB1c2VzIGEgcmluZyBsaWtlIHNlcXVlbnRpYWwgc2NhbnMsIGhvd2V2ZXIsIHRo ZSBzaXplIG9mIHRoaXMgcmluZyBpcwotY29udHJvbGxlZCBieSB0aGUgdmFjdXVtX2J1ZmZl cl91c2FnZV9saW1pdCBHVUMuICBEaXJ0eSBwYWdlcyBhcmUgbm90IHJlbW92ZWQKLWZyb20g dGhlIHJpbmcuICBJbnN0ZWFkLCB0aGUgV0FMIGlzIGZsdXNoZWQgaWYgbmVlZGVkIHRvIGFs bG93IHJldXNlIG9mIHRoZQotYnVmZmVycy4gIEJlZm9yZSBpbnRyb2R1Y2luZyB0aGUgYnVm ZmVyIHJpbmcgc3RyYXRlZ3kgaW4gOC4zLCBWQUNVVU0ncyBidWZmZXJzCi13ZXJlIHNlbnQg dG8gdGhlIGZyZWVsaXN0LCB3aGljaCB3YXMgZWZmZWN0aXZlbHkgYSBidWZmZXIgcmluZyBv ZiAxIGJ1ZmZlciwKLXJlc3VsdGluZyBpbiBleGNlc3NpdmUgV0FMIGZsdXNoaW5nLgotCi1C dWxrIHdyaXRlcyB3b3JrIHNpbWlsYXJseSB0byBWQUNVVU0uICBDdXJyZW50bHkgdGhpcyBh cHBsaWVzIG9ubHkgdG8KLUNPUFkgSU4gYW5kIENSRUFURSBUQUJMRSBBUyBTRUxFQ1QuICAo TWlnaHQgaXQgYmUgaW50ZXJlc3RpbmcgdG8gbWFrZQotc2Vxc2NhbiBVUERBVEUgYW5kIERF TEVURSB1c2UgdGhlIGJ1bGt3cml0ZSBzdHJhdGVneT8pICBGb3IgYnVsayB3cml0ZXMKLXdl IHVzZSBhIHJpbmcgc2l6ZSBvZiAxNk1CIChidXQgbm90IG1vcmUgdGhhbiAxLzh0aCBvZiBz aGFyZWRfYnVmZmVycykuCi1TbWFsbGVyIHNpemVzIGhhdmUgYmVlbiBzaG93biB0byByZXN1 bHQgaW4gdGhlIENPUFkgYmxvY2tpbmcgdG9vIG9mdGVuCi1mb3IgV0FMIGZsdXNoZXMuICBX aGlsZSBpdCdzIG9rYXkgZm9yIGEgYmFja2dyb3VuZCB2YWN1dW0gdG8gYmUgc2xvd2VkIGJ5 Ci1kb2luZyBpdHMgb3duIFdBTCBmbHVzaGluZywgd2UnZCBwcmVmZXIgdGhhdCBDT1BZIG5v dCBiZSBzdWJqZWN0IHRvIHRoYXQsCi1zbyB3ZSBsZXQgaXQgdXNlIHVwIGEgYml0IG1vcmUg b2YgdGhlIGJ1ZmZlciBhcmVuYS4KLQotCiBCYWNrZ3JvdW5kIFdyaXRlcidzIFByb2Nlc3Np bmcKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCmluZGV4IDFmNWEwMDguLmNjMmZhYjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC02MTIsMTAgKzYxMiw5IEBAIEZvcmdldFByaXZh dGVSZWZDb3VudEVudHJ5KFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiBzdGF0aWMgQnVm ZmVyIFJlYWRCdWZmZXJfY29tbW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJU01nclJlbGF0 aW9uIHNtZ3IsIGNoYXIgc21ncl9wZXJzaXN0ZW5jZSwKIAkJCQkJCQkJRm9ya051bWJlciBm b3JrTnVtLCBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkJCQkJUmVhZEJ1ZmZlck1vZGUg bW9kZSwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOworCQkJCQkJCQlSZWFkQnVm ZmVyTW9kZSBtb2RlKTsKIHN0YXRpYyBCbG9ja051bWJlciBFeHRlbmRCdWZmZXJlZFJlbENv bW1vbihCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJCQkJCSAgIEZvcmtOdW1i ZXIgZm9yaywKLQkJCQkJCQkJCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwK IAkJCQkJCQkJCQkgICB1aW50MzIgZmxhZ3MsCiAJCQkJCQkJCQkJICAgdWludDMyIGV4dGVu ZF9ieSwKIAkJCQkJCQkJCQkgICBCbG9ja051bWJlciBleHRlbmRfdXB0bywKQEAgLTYyMywx MyArNjIyLDEyIEBAIHN0YXRpYyBCbG9ja051bWJlciBFeHRlbmRCdWZmZXJlZFJlbENvbW1v bihCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJCQkJCSAgIHVpbnQzMiAqZXh0 ZW5kZWRfYnkpOwogc3RhdGljIEJsb2NrTnVtYmVyIEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVk KEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJCQkJCQkJICAgRm9ya051bWJlciBm b3JrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJ CQkJCQkJCSAgIHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCQkgICB1aW50MzIgZXh0ZW5kX2J5 LAogCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGV4dGVuZF91cHRvLAogCQkJCQkJCQkJCSAg IEJ1ZmZlciAqYnVmZmVycywKIAkJCQkJCQkJCQkgICB1aW50MzIgKmV4dGVuZGVkX2J5KTsK LXN0YXRpYyBib29sIFBpbkJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5LAorc3RhdGljIGJvb2wgUGluQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1 ZiwKIAkJCQkJICBib29sIHNraXBfaWZfbm90X3ZhbGlkKTsKIHN0YXRpYyB2b2lkIFBpbkJ1 ZmZlcl9Mb2NrZWQoQnVmZmVyRGVzYyAqYnVmKTsKIHN0YXRpYyB2b2lkIFVucGluQnVmZmVy KEJ1ZmZlckRlc2MgKmJ1Zik7CkBAIC02NDUsNyArNjQzLDYgQEAgc3RhdGljIGlubGluZSBC dWZmZXJEZXNjICpCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJCQkJCSAg Y2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAog CQkJCQkJCQkJICBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkJCQkJCSAgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQkJCQkgIGJvb2wgKmZvdW5kUHRyLCBJT0Nv bnRleHQgaW9fY29udGV4dCk7CiBzdGF0aWMgYm9vbCBBc3luY1JlYWRCdWZmZXJzKFJlYWRC dWZmZXJzT3BlcmF0aW9uICpvcGVyYXRpb24sIGludCAqbmJsb2Nrc19wcm9ncmVzcyk7CiBz dGF0aWMgdm9pZCBDaGVja1JlYWRCdWZmZXJzT3BlcmF0aW9uKFJlYWRCdWZmZXJzT3BlcmF0 aW9uICpvcGVyYXRpb24sIGJvb2wgaXNfY29tcGxldGUpOwpAQCAtNjU0LDcgKzY1MSw3IEBA IHN0YXRpYyBwZ19hbHdheXNfaW5saW5lIHZvaWQgVHJhY2tCdWZmZXJIaXQoSU9PYmplY3Qg aW9fb2JqZWN0LAogCQkJCQkJCQkJCQlJT0NvbnRleHQgaW9fY29udGV4dCwKIAkJCQkJCQkJ CQkJUmVsYXRpb24gcmVsLCBjaGFyIHBlcnNpc3RlbmNlLCBTTWdyUmVsYXRpb24gc21nciwK IAkJCQkJCQkJCQkJRm9ya051bWJlciBmb3JrbnVtLCBCbG9ja051bWJlciBibG9ja251bSk7 Ci1zdGF0aWMgQnVmZmVyIEdldFZpY3RpbUJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwgSU9Db250ZXh0IGlvX2NvbnRleHQpOworc3RhdGljIEJ1ZmZlciBHZXRWaWN0 aW1CdWZmZXIoSU9Db250ZXh0IGlvX2NvbnRleHQpOwogc3RhdGljIHZvaWQgRmx1c2hVbmxv Y2tlZEJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIFNNZ3JSZWxhdGlvbiByZWxuLAogCQkJCQkJ CQlJT09iamVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0KTsKIHN0YXRpYyB2 b2lkIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJlbG4sCkBA IC04NTgsNyArODU1LDcgQEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9j YXRvciwgRm9ya051bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja04KIAkJICogcGlu LgogCQkgKi8KIAkJaWYgKEJ1ZmZlclRhZ3NFcXVhbCgmdGFnLCAmYnVmSGRyLT50YWcpICYm Ci0JCQlQaW5CdWZmZXIoYnVmSGRyLCBOVUxMLCB0cnVlKSkKKwkJCVBpbkJ1ZmZlcihidWZI ZHIsIHRydWUpKQogCQl7CiAJCQlpZiAoQnVmZmVyVGFnc0VxdWFsKCZ0YWcsICZidWZIZHIt PnRhZykpCiAJCQl7CkBAIC04NzQsMTIgKzg3MSwxMiBAQCBSZWFkUmVjZW50QnVmZmVyKFJl bEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVy IGJsb2NrTgogCiAvKgogICogUmVhZEJ1ZmZlciAtLSBhIHNob3J0aGFuZCBmb3IgUmVhZEJ1 ZmZlckV4dGVuZGVkLCBmb3IgcmVhZGluZyBmcm9tIG1haW4KLSAqCQlmb3JrIHdpdGggUkJN X05PUk1BTCBtb2RlIGFuZCBkZWZhdWx0IHN0cmF0ZWd5LgorICoJCWZvcmsgd2l0aCBSQk1f Tk9STUFMIG1vZGUuCiAgKi8KIEJ1ZmZlcgogUmVhZEJ1ZmZlcihSZWxhdGlvbiByZWxuLCBC bG9ja051bWJlciBibG9ja051bSkKIHsKLQlyZXR1cm4gUmVhZEJ1ZmZlckV4dGVuZGVkKHJl bG4sIE1BSU5fRk9SS05VTSwgYmxvY2tOdW0sIFJCTV9OT1JNQUwsIE5VTEwpOworCXJldHVy biBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsbiwgTUFJTl9GT1JLTlVNLCBibG9ja051bSwgUkJN X05PUk1BTCk7CiB9CiAKIC8qCkBAIC05MTksMTMgKzkxNiwxMCBAQCBSZWFkQnVmZmVyKFJl bGF0aW9uIHJlbG4sIEJsb2NrTnVtYmVyIGJsb2NrTnVtKQogICogYSBjbGVhbnVwLXN0cmVu Z3RoIGxvY2sgb24gdGhlIHBhZ2UuCiAgKgogICogUkJNX05PUk1BTF9OT19MT0cgbW9kZSBp cyB0cmVhdGVkIHRoZSBzYW1lIGFzIFJCTV9OT1JNQUwgaGVyZS4KLSAqCi0gKiBJZiBzdHJh dGVneSBpcyBub3QgTlVMTCwgYSBub25kZWZhdWx0IGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kg aXMgdXNlZC4KLSAqIFNlZSBidWZmZXIvUkVBRE1FIGZvciBkZXRhaWxzLgogICovCiBpbmxp bmUgQnVmZmVyCiBSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsYXRpb24gcmVsbiwgRm9ya051bWJl ciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkgICBSZWFkQnVmZmVyTW9k ZSBtb2RlLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSkKKwkJCQkgICBSZWFkQnVm ZmVyTW9kZSBtb2RlKQogewogCUJ1ZmZlcgkJYnVmOwogCkBAIC05MzUsNyArOTI5LDcgQEAg UmVhZEJ1ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwg QmxvY2tOdW1iZXIgYmxvY2tOdW0sCiAJICogUmVhZEJ1ZmZlcl9jb21tb24oKS4KIAkgKi8K IAlidWYgPSBSZWFkQnVmZmVyX2NvbW1vbihyZWxuLCBSZWxhdGlvbkdldFNtZ3IocmVsbiks IDAsCi0JCQkJCQkJZm9ya051bSwgYmxvY2tOdW0sIG1vZGUsIHN0cmF0ZWd5KTsKKwkJCQkJ CQlmb3JrTnVtLCBibG9ja051bSwgbW9kZSk7CiAKIAlyZXR1cm4gYnVmOwogfQpAQCAtOTU0 LDE0ICs5NDgsMTQgQEAgUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtO dW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0sCiBCdWZmZXIKIFJlYWRCdWZm ZXJXaXRob3V0UmVsY2FjaGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIg Zm9ya051bSwKIAkJCQkJCSAgQmxvY2tOdW1iZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2Rl IG1vZGUsCi0JCQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBib29sIHBl cm1hbmVudCkKKwkJCQkJCSAgYm9vbCBwZXJtYW5lbnQpCiB7CiAJU01nclJlbGF0aW9uIHNt Z3IgPSBzbWdyb3BlbihybG9jYXRvciwgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAlyZXR1 cm4gUmVhZEJ1ZmZlcl9jb21tb24oTlVMTCwgc21nciwKIAkJCQkJCQkgcGVybWFuZW50ID8g UkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIDogUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQsCiAJ CQkJCQkJIGZvcmtOdW0sIGJsb2NrTnVtLAotCQkJCQkJCSBtb2RlLCBzdHJhdGVneSk7CisJ CQkJCQkJIG1vZGUpOwogfQogCiAvKgpAQCAtOTcwLDEzICs5NjQsMTIgQEAgUmVhZEJ1ZmZl cldpdGhvdXRSZWxjYWNoZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJlciBm b3JrTnVtLAogQnVmZmVyCiBFeHRlbmRCdWZmZXJlZFJlbChCdWZmZXJNYW5hZ2VyUmVsYXRp b24gYm1yLAogCQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAotCQkJCSAgQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJICB1aW50MzIgZmxhZ3MpCiB7CiAJQnVmZmVyCQli dWY7CiAJdWludDMyCQlleHRlbmRfYnkgPSAxOwogCi0JRXh0ZW5kQnVmZmVyZWRSZWxCeShi bXIsIGZvcmtOdW0sIHN0cmF0ZWd5LCBmbGFncywgZXh0ZW5kX2J5LAorCUV4dGVuZEJ1ZmZl cmVkUmVsQnkoYm1yLCBmb3JrTnVtLCBmbGFncywgZXh0ZW5kX2J5LAogCQkJCQkJJmJ1Ziwg JmV4dGVuZF9ieSk7CiAKIAlyZXR1cm4gYnVmOwpAQCAtMTAwMiw3ICs5OTUsNiBAQCBFeHRl bmRCdWZmZXJlZFJlbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogQmxvY2tOdW1iZXIK IEV4dGVuZEJ1ZmZlcmVkUmVsQnkoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAkJCQkJ Rm9ya051bWJlciBmb3JrLAotCQkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwK IAkJCQkJdWludDMyIGZsYWdzLAogCQkJCQl1aW50MzIgZXh0ZW5kX2J5LAogCQkJCQlCdWZm ZXIgKmJ1ZmZlcnMsCkBAIC0xMDE1LDcgKzEwMDcsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbEJ5 KEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJaWYgKGJtci5yZWxwZXJzaXN0ZW5jZSA9 PSAnXDAnKQogCQlibXIucmVscGVyc2lzdGVuY2UgPSBibXIucmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlOwogCi0JcmV0dXJuIEV4dGVuZEJ1ZmZlcmVkUmVsQ29tbW9uKGJtciwgZm9y aywgc3RyYXRlZ3ksIGZsYWdzLAorCXJldHVybiBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihi bXIsIGZvcmssIGZsYWdzLAogCQkJCQkJCQkgICBleHRlbmRfYnksIEludmFsaWRCbG9ja051 bWJlciwKIAkJCQkJCQkJICAgYnVmZmVycywgZXh0ZW5kZWRfYnkpOwogfQpAQCAtMTAzMSw3 ICsxMDIzLDYgQEAgRXh0ZW5kQnVmZmVyZWRSZWxCeShCdWZmZXJNYW5hZ2VyUmVsYXRpb24g Ym1yLAogQnVmZmVyCiBFeHRlbmRCdWZmZXJlZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlv biBibXIsCiAJCQkJCUZvcmtOdW1iZXIgZm9yaywKLQkJCQkJQnVmZmVyQWNjZXNzU3RyYXRl Z3kgc3RyYXRlZ3ksCiAJCQkJCXVpbnQzMiBmbGFncywKIAkJCQkJQmxvY2tOdW1iZXIgZXh0 ZW5kX3RvLAogCQkJCQlSZWFkQnVmZmVyTW9kZSBtb2RlKQpAQCAtMTA5Nyw3ICsxMDg4LDcg QEAgRXh0ZW5kQnVmZmVyZWRSZWxUbyhCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQlp ZiAoKHVpbnQ2NCkgY3VycmVudF9zaXplICsgbnVtX3BhZ2VzID4gZXh0ZW5kX3RvKQogCQkJ bnVtX3BhZ2VzID0gZXh0ZW5kX3RvIC0gY3VycmVudF9zaXplOwogCi0JCWZpcnN0X2Jsb2Nr ID0gRXh0ZW5kQnVmZmVyZWRSZWxDb21tb24oYm1yLCBmb3JrLCBzdHJhdGVneSwgZmxhZ3Ms CisJCWZpcnN0X2Jsb2NrID0gRXh0ZW5kQnVmZmVyZWRSZWxDb21tb24oYm1yLCBmb3JrLCBm bGFncywKIAkJCQkJCQkJCQkJICBudW1fcGFnZXMsIGV4dGVuZF90bywKIAkJCQkJCQkJCQkJ ICBidWZmZXJzLCAmZXh0ZW5kZWRfYnkpOwogCkBAIC0xMTIzLDcgKzExMTQsNyBAQCBFeHRl bmRCdWZmZXJlZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJewogCQlBc3Nl cnQoZXh0ZW5kZWRfYnkgPT0gMCk7CiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJfY29tbW9uKGJt ci5yZWwsIEJNUl9HRVRfU01HUihibXIpLCBibXIucmVscGVyc2lzdGVuY2UsCi0JCQkJCQkJ CSAgIGZvcmssIGV4dGVuZF90byAtIDEsIG1vZGUsIHN0cmF0ZWd5KTsKKwkJCQkJCQkJICAg Zm9yaywgZXh0ZW5kX3RvIC0gMSwgbW9kZSk7CiAJfQogCiAJcmV0dXJuIGJ1ZmZlcjsKQEAg LTEyMjYsNyArMTIxNyw2IEBAIFBpbkJ1ZmZlckZvckJsb2NrKFJlbGF0aW9uIHJlbCwKIAkJ CQkgIGNoYXIgcGVyc2lzdGVuY2UsCiAJCQkJICBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJCQkJ ICBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5LAogCQkJCSAgSU9PYmplY3QgaW9fb2JqZWN0LAogCQkJCSAgSU9Db250ZXh0IGlv X2NvbnRleHQsCiAJCQkJICBib29sICpmb3VuZFB0cikKQEAgLTEyNTAsNyArMTI0MCw3IEBA IFBpbkJ1ZmZlckZvckJsb2NrKFJlbGF0aW9uIHJlbCwKIAkJYnVmSGRyID0gTG9jYWxCdWZm ZXJBbGxvYyhzbWdyLCBmb3JrTnVtLCBibG9ja051bSwgZm91bmRQdHIpOwogCWVsc2UKIAkJ YnVmSGRyID0gQnVmZmVyQWxsb2Moc21nciwgcGVyc2lzdGVuY2UsIGZvcmtOdW0sIGJsb2Nr TnVtLAotCQkJCQkJCSBzdHJhdGVneSwgZm91bmRQdHIsIGlvX2NvbnRleHQpOworCQkJCQkJ CSBmb3VuZFB0ciwgaW9fY29udGV4dCk7CiAKIAlpZiAoKmZvdW5kUHRyKQogCQlUcmFja0J1 ZmZlckhpdChpb19vYmplY3QsIGlvX2NvbnRleHQsIHJlbCwgcGVyc2lzdGVuY2UsIHNtZ3Is IGZvcmtOdW0sIGJsb2NrTnVtKTsKQEAgLTEyNzYsOCArMTI2Niw3IEBAIFBpbkJ1ZmZlckZv ckJsb2NrKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBwZ19hbHdheXNfaW5saW5lIEJ1ZmZlcgog UmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hh ciBzbWdyX3BlcnNpc3RlbmNlLAogCQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAotCQkJCSAg QmxvY2tOdW1iZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2RlIG1vZGUsCi0JCQkJICBCdWZm ZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSkKKwkJCQkgIEJsb2NrTnVtYmVyIGJsb2NrTnVt LCBSZWFkQnVmZmVyTW9kZSBtb2RlKQogewogCVJlYWRCdWZmZXJzT3BlcmF0aW9uIG9wZXJh dGlvbjsKIAlCdWZmZXIJCWJ1ZmZlcjsKQEAgLTEzMTMsNyArMTMwMiw3IEBAIFJlYWRCdWZm ZXJfY29tbW9uKFJlbGF0aW9uIHJlbCwgU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgc21ncl9w ZXJzaXN0ZW5jZSwKIAkJaWYgKG1vZGUgPT0gUkJNX1pFUk9fQU5EX0xPQ0sgfHwgbW9kZSA9 PSBSQk1fWkVST19BTkRfQ0xFQU5VUF9MT0NLKQogCQkJZmxhZ3MgfD0gRUJfTE9DS19GSVJT VDsKIAotCQlyZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBmb3JrTnVt LCBzdHJhdGVneSwgZmxhZ3MpOworCQlyZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JF TChyZWwpLCBmb3JrTnVtLCBmbGFncyk7CiAJfQogCiAJaWYgKHJlbCkKQEAgLTEzMzUsMTIg KzEzMjQsMTIgQEAgUmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRp b24gc21nciwgY2hhciBzbWdyX3BlcnNpc3RlbmNlLAogCQl9CiAJCWVsc2UKIAkJewotCQkJ aW9fY29udGV4dCA9IElPQ29udGV4dEZvclN0cmF0ZWd5KHN0cmF0ZWd5KTsKKwkJCWlvX2Nv bnRleHQgPSBJT0NPTlRFWFRfTk9STUFMOwogCQkJaW9fb2JqZWN0ID0gSU9PQkpFQ1RfUkVM QVRJT047CiAJCX0KIAogCQlidWZmZXIgPSBQaW5CdWZmZXJGb3JCbG9jayhyZWwsIHNtZ3Is IHBlcnNpc3RlbmNlLAotCQkJCQkJCQkgICBmb3JrTnVtLCBibG9ja051bSwgc3RyYXRlZ3ks CisJCQkJCQkJCSAgIGZvcmtOdW0sIGJsb2NrTnVtLAogCQkJCQkJCQkgICBpb19vYmplY3Qs IGlvX2NvbnRleHQsICZmb3VuZCk7CiAJCVplcm9BbmRMb2NrQnVmZmVyKGJ1ZmZlciwgbW9k ZSwgZm91bmQpOwogCQlyZXR1cm4gYnVmZmVyOwpAQCAtMTM1OCw3ICsxMzQ3LDYgQEAgUmVh ZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hhciBz bWdyX3BlcnNpc3RlbmNlLAogCW9wZXJhdGlvbi5yZWwgPSByZWw7CiAJb3BlcmF0aW9uLnBl cnNpc3RlbmNlID0gcGVyc2lzdGVuY2U7CiAJb3BlcmF0aW9uLmZvcmtudW0gPSBmb3JrTnVt OwotCW9wZXJhdGlvbi5zdHJhdGVneSA9IHN0cmF0ZWd5OwogCWlmIChTdGFydFJlYWRCdWZm ZXIoJm9wZXJhdGlvbiwKIAkJCQkJCSZidWZmZXIsCiAJCQkJCQlibG9ja051bSwKQEAgLTEz OTksNyArMTM4Nyw3IEBAIFN0YXJ0UmVhZEJ1ZmZlcnNJbXBsKFJlYWRCdWZmZXJzT3BlcmF0 aW9uICpvcGVyYXRpb24sCiAJfQogCWVsc2UKIAl7Ci0JCWlvX2NvbnRleHQgPSBJT0NvbnRl eHRGb3JTdHJhdGVneShvcGVyYXRpb24tPnN0cmF0ZWd5KTsKKwkJaW9fY29udGV4dCA9IElP Q09OVEVYVF9OT1JNQUw7CiAJCWlvX29iamVjdCA9IElPT0JKRUNUX1JFTEFUSU9OOwogCX0K IApAQCAtMTQ1MCw3ICsxNDM4LDYgQEAgU3RhcnRSZWFkQnVmZmVyc0ltcGwoUmVhZEJ1ZmZl cnNPcGVyYXRpb24gKm9wZXJhdGlvbiwKIAkJCQkJCQkJCQkgICBvcGVyYXRpb24tPnBlcnNp c3RlbmNlLAogCQkJCQkJCQkJCSAgIG9wZXJhdGlvbi0+Zm9ya251bSwKIAkJCQkJCQkJCQkg ICBibG9ja051bSArIGksCi0JCQkJCQkJCQkJICAgb3BlcmF0aW9uLT5zdHJhdGVneSwKIAkJ CQkJCQkJCQkgICBpb19vYmplY3QsIGlvX2NvbnRleHQsCiAJCQkJCQkJCQkJICAgJmZvdW5k KTsKIAkJfQpAQCAtMTc3MSw3ICsxNzU4LDcgQEAgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZm ZXJzT3BlcmF0aW9uICpvcGVyYXRpb24pCiAJfQogCWVsc2UKIAl7Ci0JCWlvX2NvbnRleHQg PSBJT0NvbnRleHRGb3JTdHJhdGVneShvcGVyYXRpb24tPnN0cmF0ZWd5KTsKKwkJaW9fY29u dGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJCWlvX29iamVjdCA9IElPT0JKRUNUX1JFTEFU SU9OOwogCX0KIApAQCAtMTk2MSw3ICsxOTQ4LDcgQEAgQXN5bmNSZWFkQnVmZmVycyhSZWFk QnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJ fQogCWVsc2UKIAl7Ci0JCWlvX2NvbnRleHQgPSBJT0NvbnRleHRGb3JTdHJhdGVneShvcGVy YXRpb24tPnN0cmF0ZWd5KTsKKwkJaW9fY29udGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJ CWlvX29iamVjdCA9IElPT0JKRUNUX1JFTEFUSU9OOwogCX0KIApAQCAtMjE4MCwyNCArMjE2 NywxOCBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKICAqCQlidWZmZXIuICBJZiBubyBidWZmZXIg ZXhpc3RzIGFscmVhZHksIHNlbGVjdHMgYSByZXBsYWNlbWVudCB2aWN0aW0gYW5kCiAgKgkJ ZXZpY3RzIHRoZSBvbGQgcGFnZSwgYnV0IGRvZXMgTk9UIHJlYWQgaW4gbmV3IHBhZ2UuCiAg KgotICogInN0cmF0ZWd5IiBjYW4gYmUgYSBidWZmZXIgcmVwbGFjZW1lbnQgc3RyYXRlZ3kg b2JqZWN0LCBvciBOVUxMIGZvcgotICogdGhlIGRlZmF1bHQgc3RyYXRlZ3kuICBUaGUgc2Vs ZWN0ZWQgYnVmZmVyJ3MgdXNhZ2VfY291bnQgaXMgYWR2YW5jZWQgd2hlbgotICogdXNpbmcg dGhlIGRlZmF1bHQgc3RyYXRlZ3ksIGJ1dCBvdGhlcndpc2UgcG9zc2libHkgbm90IChzZWUg UGluQnVmZmVyKS4KLSAqCiAgKiBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIHBpbm5lZCBhbmQg aXMgYWxyZWFkeSBtYXJrZWQgYXMgaG9sZGluZyB0aGUKICAqIGRlc2lyZWQgcGFnZS4gIElm IGl0IGFscmVhZHkgZGlkIGhhdmUgdGhlIGRlc2lyZWQgcGFnZSwgKmZvdW5kUHRyIGlzCiAg KiBzZXQgdHJ1ZS4gIE90aGVyd2lzZSwgKmZvdW5kUHRyIGlzIHNldCBmYWxzZS4KICAqCi0g KiBpb19jb250ZXh0IGlzIHBhc3NlZCBhcyBhbiBvdXRwdXQgcGFyYW1ldGVyIHRvIGF2b2lk IGNhbGxpbmcKLSAqIElPQ29udGV4dEZvclN0cmF0ZWd5KCkgd2hlbiB0aGVyZSBpcyBhIHNo YXJlZCBidWZmZXJzIGhpdCBhbmQgbm8gSU8KLSAqIHN0YXRpc3RpY3MgbmVlZCBiZSBjYXB0 dXJlZC4KKyAqIGlvX2NvbnRleHQgaXMgcGFzc2VkIGFzIGFuIG91dHB1dCBwYXJhbWV0ZXIg dG8gYXZvaWQgY2FwdHVyaW5nIElPCisgKiBzdGF0aXN0aWNzIHdoZW4gdGhlcmUgaXMgYSBz aGFyZWQgYnVmZmVycyBoaXQgYW5kIG5vIElPIG9jY3Vycy4KICAqCiAgKiBObyBsb2NrcyBh cmUgaGVsZCBlaXRoZXIgYXQgZW50cnkgb3IgZXhpdC4KICAqLwogc3RhdGljIHBnX2Fsd2F5 c19pbmxpbmUgQnVmZmVyRGVzYyAqCiBCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwg Y2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCQkJQmxvY2tOdW1i ZXIgYmxvY2tOdW0sCi0JCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCWJv b2wgKmZvdW5kUHRyLCBJT0NvbnRleHQgaW9fY29udGV4dCkKIHsKIAlCdWZmZXJUYWcJbmV3 VGFnOwkJCS8qIGlkZW50aXR5IG9mIHJlcXVlc3RlZCBibG9jayAqLwpAQCAtMjIzNSw3ICsy MjE2LDcgQEAgQnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lz dGVuY2UsIEZvcmtOdW1iZXIgZm9ya051bSwKIAkJICovCiAJCWJ1ZiA9IEdldEJ1ZmZlckRl c2NyaXB0b3IoZXhpc3RpbmdfYnVmX2lkKTsKIAotCQl2YWxpZCA9IFBpbkJ1ZmZlcihidWYs IHN0cmF0ZWd5LCBmYWxzZSk7CisJCXZhbGlkID0gUGluQnVmZmVyKGJ1ZiwgZmFsc2UpOwog CiAJCS8qIENhbiByZWxlYXNlIHRoZSBtYXBwaW5nIGxvY2sgYXMgc29vbiBhcyB3ZSd2ZSBw aW5uZWQgaXQgKi8KIAkJTFdMb2NrUmVsZWFzZShuZXdQYXJ0aXRpb25Mb2NrKTsKQEAgLTIy NjYsNyArMjI0Nyw3IEBAIEJ1ZmZlckFsbG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJl bHBlcnNpc3RlbmNlLCBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJICogZG9uJ3QgaG9sZCBhbnkg Y29uZmxpY3RpbmcgbG9ja3MuIElmIHNvIHdlJ2xsIGhhdmUgdG8gdW5kbyBvdXIgd29yawog CSAqIGxhdGVyLgogCSAqLwotCXZpY3RpbV9idWZmZXIgPSBHZXRWaWN0aW1CdWZmZXIoc3Ry YXRlZ3ksIGlvX2NvbnRleHQpOworCXZpY3RpbV9idWZmZXIgPSBHZXRWaWN0aW1CdWZmZXIo aW9fY29udGV4dCk7CiAJdmljdGltX2J1Zl9oZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKHZp Y3RpbV9idWZmZXIgLSAxKTsKIAogCS8qCkBAIC0yMjk3LDcgKzIyNzgsNyBAQCBCdWZmZXJB bGxvYyhTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJl ciBmb3JrTnVtLAogCiAJCWV4aXN0aW5nX2J1Zl9oZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9y KGV4aXN0aW5nX2J1Zl9pZCk7CiAKLQkJdmFsaWQgPSBQaW5CdWZmZXIoZXhpc3RpbmdfYnVm X2hkciwgc3RyYXRlZ3ksIGZhbHNlKTsKKwkJdmFsaWQgPSBQaW5CdWZmZXIoZXhpc3Rpbmdf YnVmX2hkciwgZmFsc2UpOwogCiAJCS8qIENhbiByZWxlYXNlIHRoZSBtYXBwaW5nIGxvY2sg YXMgc29vbiBhcyB3ZSd2ZSBwaW5uZWQgaXQgKi8KIAkJTFdMb2NrUmVsZWFzZShuZXdQYXJ0 aXRpb25Mb2NrKTsKQEAgLTIzMzUsOSArMjMxNiwxMiBAQCBCdWZmZXJBbGxvYyhTTWdyUmVs YXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAog CSAqIGp1c3QgbGlrZSBwZXJtYW5lbnQgcmVsYXRpb25zLgogCSAqLwogCXNldF9iaXRzIHw9 IEJNX1RBR19WQUxJRDsKLQkvKiBBZG1pdCB0aGUgbmV3bHkgbG9hZGVkIHBhZ2UgQ09PTCAo cHJvYmF0aW9uKTsgYSBzZWNvbmQgYWNjZXNzIHZpYQorCisJLyoKKwkgKiBBZG1pdCB0aGUg bmV3bHkgbG9hZGVkIHBhZ2UgQ09PTCAocHJvYmF0aW9uKTsgYSBzZWNvbmQgYWNjZXNzIHZp YQogCSAqIFBpbkJ1ZmZlciBwcm9tb3RlcyBpdCB0byBIT1QuICBUaGlzIGlzIHdoYXQgbWFr ZXMgYSBvbmUtdG91Y2ggc2NhbgotCSAqIHNlbGYtZXZpY3RpbmcgLS0gc2VlIHRoZSBjb29s aW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8KKwkgKiBzZWxmLWV2aWN0 aW5nIC0tIHNlZSB0aGUgY29vbGluZy1zdGF0ZSBub3RlcyBpbiBidWZfaW50ZXJuYWxzLmgu CisJICovCiAJaWYgKHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVO VCB8fCBmb3JrTnVtID09IElOSVRfRk9SS05VTSkKIAkJc2V0X2JpdHMgfD0gQk1fUEVSTUFO RU5UOwogCkBAIC0yNTQ5LDEyICsyNTMzLDExIEBAIEludmFsaWRhdGVWaWN0aW1CdWZmZXIo QnVmZmVyRGVzYyAqYnVmX2hkcikKIH0KIAogc3RhdGljIEJ1ZmZlcgotR2V0VmljdGltQnVm ZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBJT0NvbnRleHQgaW9fY29udGV4 dCkKK0dldFZpY3RpbUJ1ZmZlcihJT0NvbnRleHQgaW9fY29udGV4dCkKIHsKIAlCdWZmZXJE ZXNjICpidWZfaGRyOwogCUJ1ZmZlcgkJYnVmOwogCXVpbnQ2NAkJYnVmX3N0YXRlOwotCWJv b2wJCWZyb21fcmluZzsKIAogCS8qCiAJICogRW5zdXJlLCBiZWZvcmUgd2UgcGluIGEgdmlj dGltIGJ1ZmZlciwgdGhhdCB0aGVyZSdzIGEgZnJlZSByZWZjb3VudApAQCAtMjU3MCw3ICsy NTUzLDcgQEAgYWdhaW46CiAJICogU2VsZWN0IGEgdmljdGltIGJ1ZmZlci4gIFRoZSBidWZm ZXIgaXMgcmV0dXJuZWQgcGlubmVkIGFuZCBvd25lZCBieQogCSAqIHRoaXMgYmFja2VuZC4K IAkgKi8KLQlidWZfaGRyID0gU3RyYXRlZ3lHZXRCdWZmZXIoc3RyYXRlZ3ksICZidWZfc3Rh dGUsICZmcm9tX3JpbmcpOworCWJ1Zl9oZHIgPSBTdHJhdGVneUdldEJ1ZmZlcigmYnVmX3N0 YXRlKTsKIAlidWYgPSBCdWZmZXJEZXNjcmlwdG9yR2V0QnVmZmVyKGJ1Zl9oZHIpOwogCiAJ LyoKQEAgLTI2MTQsMjYgKzI1OTcsNiBAQCBhZ2FpbjoKIAkJCWdvdG8gYWdhaW47CiAJCX0K IAotCQkvKgotCQkgKiBJZiB1c2luZyBhIG5vbmRlZmF1bHQgc3RyYXRlZ3ksIGFuZCB0aGlz IHZpY3RpbSBjYW1lIGZyb20gdGhlCi0JCSAqIHN0cmF0ZWd5IHJpbmcsIGxldCB0aGUgc3Ry YXRlZ3kgZGVjaWRlIHdoZXRoZXIgdG8gcmVqZWN0IGl0IHdoZW4KLQkJICogcmV1c2luZyBp dCB3b3VsZCByZXF1aXJlIGEgV0FMIGZsdXNoLiAgVGhpcyBvbmx5IGFwcGxpZXMgdG8KLQkJ ICogcGVybWFuZW50IGJ1ZmZlcnM7IHVubG9nZ2VkIGJ1ZmZlcnMgY2FuIGhhdmUgZmFrZSBM U05zLCBzbwotCQkgKiBYTG9nTmVlZHNGbHVzaCgpIGlzIG5vdCBtZWFuaW5nZnVsIGZvciB0 aGVtLgotCQkgKgotCQkgKiBXZSBuZWVkIHRvIGhvbGQgdGhlIGNvbnRlbnQgbG9jayBpbiBh dCBsZWFzdCBzaGFyZS1leGNsdXNpdmUgbW9kZQotCQkgKiB0byBzYWZlbHkgaW5zcGVjdCB0 aGUgcGFnZSBMU04sIHNvIHRoaXMgY291bGRuJ3QgaGF2ZSBiZWVuIGRvbmUKLQkJICogaW5z aWRlIFN0cmF0ZWd5R2V0QnVmZmVyKCkuCi0JCSAqLwotCQlpZiAoc3RyYXRlZ3kgJiYgZnJv bV9yaW5nICYmCi0JCQlidWZfc3RhdGUgJiBCTV9QRVJNQU5FTlQgJiYKLQkJCVhMb2dOZWVk c0ZsdXNoKEJ1ZmZlckdldExTTihidWZfaGRyKSkgJiYKLQkJCVN0cmF0ZWd5UmVqZWN0QnVm ZmVyKHN0cmF0ZWd5LCBidWZfaGRyLCBmcm9tX3JpbmcpKQotCQl7Ci0JCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1Zik7Ci0JCQlnb3RvIGFnYWluOwotCQl9Ci0KIAkJLyogT0ssIGRvIHRo ZSBJL08gKi8KIAkJRmx1c2hCdWZmZXIoYnVmX2hkciwgTlVMTCwgSU9PQkpFQ1RfUkVMQVRJ T04sIGlvX2NvbnRleHQpOwogCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NL KTsKQEAgLTI2NDYsMjMgKzI2MDksMTUgQEAgYWdhaW46CiAJaWYgKGJ1Zl9zdGF0ZSAmIEJN X1ZBTElEKQogCXsKIAkJLyoKLQkJICogV2hlbiBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGlz IGluIHVzZSwgYmxvY2tzIGV2aWN0ZWQgZnJvbSBzaGFyZWQKLQkJICogYnVmZmVycyBhcmUg Y291bnRlZCBhcyBJT09QX0VWSUNUIGluIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQKLQkJ ICogKGUuZy4gSU9DT05URVhUX0JVTEtXUklURSkuIFNoYXJlZCBidWZmZXJzIGFyZSBldmlj dGVkIGJ5IGEKLQkJICogc3RyYXRlZ3kgaW4gdHdvIGNhc2VzOiAxKSB3aGlsZSBpbml0aWFs bHkgY2xhaW1pbmcgYnVmZmVycyBmb3IgdGhlCi0JCSAqIHN0cmF0ZWd5IHJpbmcgMikgdG8g cmVwbGFjZSBhbiBleGlzdGluZyBzdHJhdGVneSByaW5nIGJ1ZmZlcgotCQkgKiBiZWNhdXNl IGl0IGlzIHBpbm5lZCBvciBpbiB1c2UgYW5kIGNhbm5vdCBiZSByZXVzZWQuCisJCSAqIEJs b2NrcyBldmljdGVkIGZyb20gc2hhcmVkIGJ1ZmZlcnMgYXJlIGNvdW50ZWQgYXMgSU9PUF9F VklDVC4KIAkJICoKLQkJICogQmxvY2tzIGV2aWN0ZWQgZnJvbSBidWZmZXJzIGFscmVhZHkg aW4gdGhlIHN0cmF0ZWd5IHJpbmcgYXJlCi0JCSAqIGNvdW50ZWQgYXMgSU9PUF9SRVVTRSBp biB0aGUgY29ycmVzcG9uZGluZyBzdHJhdGVneSBjb250ZXh0LgotCQkgKgotCQkgKiBBdCB0 aGlzIHBvaW50LCB3ZSBjYW4gYWNjdXJhdGVseSBjb3VudCBldmljdGlvbnMgYW5kIHJldXNl cywKLQkJICogYmVjYXVzZSB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBjbGFpbWVkIHRoZSB2YWxp ZCBidWZmZXIuIFByZXZpb3VzbHksCi0JCSAqIHdlIG1heSBoYXZlIGJlZW4gZm9yY2VkIHRv IHJlbGVhc2UgdGhlIGJ1ZmZlciBkdWUgdG8gY29uY3VycmVudAotCQkgKiBwaW5uZXJzIG9y IGVycm9yaW5nIG91dC4KKwkJICogQXQgdGhpcyBwb2ludCwgd2UgY2FuIGFjY3VyYXRlbHkg Y291bnQgZXZpY3Rpb25zLCBiZWNhdXNlIHdlIGhhdmUKKwkJICogc3VjY2Vzc2Z1bGx5IGNs YWltZWQgdGhlIHZhbGlkIGJ1ZmZlci4gUHJldmlvdXNseSwgd2UgbWF5IGhhdmUgYmVlbgor CQkgKiBmb3JjZWQgdG8gcmVsZWFzZSB0aGUgYnVmZmVyIGR1ZSB0byBjb25jdXJyZW50IHBp bm5lcnMgb3IgZXJyb3JpbmcKKwkJICogb3V0LgogCQkgKi8KIAkJcGdzdGF0X2NvdW50X2lv X29wKElPT0JKRUNUX1JFTEFUSU9OLCBpb19jb250ZXh0LAotCQkJCQkJICAgZnJvbV9yaW5n ID8gSU9PUF9SRVVTRSA6IElPT1BfRVZJQ1QsIDEsIDApOworCQkJCQkJICAgSU9PUF9FVklD VCwgMSwgMCk7CiAJfQogCiAJLyoKQEAgLTI3NTQsNyArMjcwOSw2IEBAIExpbWl0QWRkaXRp b25hbFBpbnModWludDMyICphZGRpdGlvbmFsX3BpbnMpCiBzdGF0aWMgQmxvY2tOdW1iZXIK IEV4dGVuZEJ1ZmZlcmVkUmVsQ29tbW9uKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJ CQkJCQlGb3JrTnVtYmVyIGZvcmssCi0JCQkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJh dGVneSwKIAkJCQkJCXVpbnQzMiBmbGFncywKIAkJCQkJCXVpbnQzMiBleHRlbmRfYnksCiAJ CQkJCQlCbG9ja051bWJlciBleHRlbmRfdXB0bywKQEAgLTI3ODksNyArMjc0Myw3IEBAIEV4 dGVuZEJ1ZmZlcmVkUmVsQ29tbW9uKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJ CQkJCQkJCSBidWZmZXJzLCAmZXh0ZW5kX2J5KTsKIAl9CiAJZWxzZQotCQlmaXJzdF9ibG9j ayA9IEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVkKGJtciwgZm9yaywgc3RyYXRlZ3ksIGZsYWdz LAorCQlmaXJzdF9ibG9jayA9IEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVkKGJtciwgZm9yaywg ZmxhZ3MsCiAJCQkJCQkJCQkJCSAgZXh0ZW5kX2J5LCBleHRlbmRfdXB0bywKIAkJCQkJCQkJ CQkJICBidWZmZXJzLCAmZXh0ZW5kX2J5KTsKIAkqZXh0ZW5kZWRfYnkgPSBleHRlbmRfYnk7 CkBAIC0yODEyLDcgKzI3NjYsNiBAQCBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihCdWZmZXJN YW5hZ2VyUmVsYXRpb24gYm1yLAogc3RhdGljIEJsb2NrTnVtYmVyCiBFeHRlbmRCdWZmZXJl ZFJlbFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJRm9ya051bWJl ciBmb3JrLAotCQkJCQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQl1 aW50MzIgZmxhZ3MsCiAJCQkJCQl1aW50MzIgZXh0ZW5kX2J5LAogCQkJCQkJQmxvY2tOdW1i ZXIgZXh0ZW5kX3VwdG8sCkBAIC0yODIwLDcgKzI3NzMsNyBAQCBFeHRlbmRCdWZmZXJlZFJl bFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJdWludDMyICpleHRl bmRlZF9ieSkKIHsKIAlCbG9ja051bWJlciBmaXJzdF9ibG9jazsKLQlJT0NvbnRleHQJaW9f Y29udGV4dCA9IElPQ29udGV4dEZvclN0cmF0ZWd5KHN0cmF0ZWd5KTsKKwlJT0NvbnRleHQJ aW9fY29udGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJaW5zdHJfdGltZQlpb19zdGFydDsK IAogCUxpbWl0QWRkaXRpb25hbFBpbnMoJmV4dGVuZF9ieSk7CkBAIC0yODM5LDcgKzI3OTIs NyBAQCBFeHRlbmRCdWZmZXJlZFJlbFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1y LAogCXsKIAkJQmxvY2sJCWJ1Zl9ibG9jazsKIAotCQlidWZmZXJzW2ldID0gR2V0VmljdGlt QnVmZmVyKHN0cmF0ZWd5LCBpb19jb250ZXh0KTsKKwkJYnVmZmVyc1tpXSA9IEdldFZpY3Rp bUJ1ZmZlcihpb19jb250ZXh0KTsKIAkJYnVmX2Jsb2NrID0gQnVmSGRyR2V0QmxvY2soR2V0 QnVmZmVyRGVzY3JpcHRvcihidWZmZXJzW2ldIC0gMSkpOwogCiAJCS8qIG5ldyBidWZmZXJz IGFyZSB6ZXJvLWZpbGxlZCAqLwpAQCAtMjk1Nyw3ICsyOTEwLDcgQEAgRXh0ZW5kQnVmZmVy ZWRSZWxTaGFyZWQoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAkJCSAqIFBpbiB0aGUg ZXhpc3RpbmcgYnVmZmVyIGJlZm9yZSByZWxlYXNpbmcgdGhlIHBhcnRpdGlvbiBsb2NrLAog CQkJICogcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIGV2aWN0ZWQuCiAJCQkgKi8KLQkJCXZh bGlkID0gUGluQnVmZmVyKGV4aXN0aW5nX2hkciwgc3RyYXRlZ3ksIGZhbHNlKTsKKwkJCXZh bGlkID0gUGluQnVmZmVyKGV4aXN0aW5nX2hkciwgZmFsc2UpOwogCiAJCQlMV0xvY2tSZWxl YXNlKHBhcnRpdGlvbl9sb2NrKTsKIAkJCVVucGluQnVmZmVyKHZpY3RpbV9idWZfaGRyKTsK QEAgLTMwMDcsOCArMjk2MCwxMSBAQCBFeHRlbmRCdWZmZXJlZFJlbFNoYXJlZChCdWZmZXJN YW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJdmljdGltX2J1Zl9oZHItPnRhZyA9IHRhZzsKIAog CQkJc2V0X2JpdHMgfD0gQk1fVEFHX1ZBTElEOwotCQkJLyogQWRtaXQgQ09PTCAocHJvYmF0 aW9uKTsgc2VlIHRoZSBjb21tZW50IGF0IHRoZSBvdGhlciBhZG1pc3Npb24KLQkJCSAqIHNp dGUgYW5kIHRoZSBjb29saW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8K KworCQkJLyoKKwkJCSAqIEFkbWl0IENPT0wgKHByb2JhdGlvbik7IHNlZSB0aGUgY29tbWVu dCBhdCB0aGUgb3RoZXIgYWRtaXNzaW9uCisJCQkgKiBzaXRlIGFuZCB0aGUgY29vbGluZy1z dGF0ZSBub3RlcyBpbiBidWZfaW50ZXJuYWxzLmguCisJCQkgKi8KIAkJCWlmIChibXIucmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIHx8IGZvcmsgPT0gSU5J VF9GT1JLTlVNKQogCQkJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsKIApAQCAtMzI3NSwx MyArMzIzMSw4IEBAIFJlbGVhc2VBbmRSZWFkQnVmZmVyKEJ1ZmZlciBidWZmZXIsCiAvKgog ICogUGluQnVmZmVyIC0tIG1ha2UgYnVmZmVyIHVuYXZhaWxhYmxlIGZvciByZXBsYWNlbWVu dC4KICAqCi0gKiBGb3IgdGhlIGRlZmF1bHQgYWNjZXNzIHN0cmF0ZWd5LCB0aGUgYnVmZmVy J3MgdXNhZ2VfY291bnQgaXMgaW5jcmVtZW50ZWQKLSAqIHdoZW4gd2UgZmlyc3QgcGluIGl0 OyBmb3Igb3RoZXIgc3RyYXRlZ2llcyB3ZSBqdXN0IG1ha2Ugc3VyZSB0aGUgdXNhZ2VfY291 bnQKLSAqIGlzbid0IHplcm8uICAoVGhlIGlkZWEgb2YgdGhlIGxhdHRlciBpcyB0aGF0IHdl IGRvbid0IHdhbnQgc3luY2hyb25pemVkCi0gKiBoZWFwIHNjYW5zIHRvIGluZmxhdGUgdGhl IGNvdW50LCBidXQgd2UgbmVlZCBpdCB0byBub3QgYmUgemVybyB0byBkaXNjb3VyYWdlCi0g KiBvdGhlciBiYWNrZW5kcyBmcm9tIHN0ZWFsaW5nIGJ1ZmZlcnMgZnJvbSBvdXIgcmluZy4g IEFzIGxvbmcgYXMgd2UgY3ljbGUKLSAqIHRocm91Z2ggdGhlIHJpbmcgZmFzdGVyIHRoYW4g dGhlIGdsb2JhbCBjbG9jay1zd2VlcCBjeWNsZXMsIGJ1ZmZlcnMgaW4KLSAqIG91ciByaW5n IHdvbid0IGJlIGNob3NlbiBhcyB2aWN0aW1zIGZvciByZXBsYWNlbWVudCBieSBvdGhlciBi YWNrZW5kcy4pCisgKiBUaGUgYnVmZmVyJ3MgY29vbGluZyBzdGF0ZSBpcyBwcm9tb3RlZCB0 byBIT1QgKHRoZSAyUSByZXNjdWUpIHdoZW4gd2UgcGluCisgKiBpdDsgc2VlIHRoZSBjb29s aW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4KICAqCiAgKiBUaGlzIHNob3Vs ZCBiZSBhcHBsaWVkIG9ubHkgdG8gc2hhcmVkIGJ1ZmZlcnMsIG5ldmVyIGxvY2FsIG9uZXMu CiAgKgpAQCAtMzI5OCw3ICszMjQ5LDcgQEAgUmVsZWFzZUFuZFJlYWRCdWZmZXIoQnVmZmVy IGJ1ZmZlciwKICAqIChyZWNlbnRseSkgaW52YWxpZCBhbmQgaGFzIG5vdCBiZWVuIHBpbm5l ZC4KICAqLwogc3RhdGljIGJvb2wKLVBpbkJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAorUGluQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwK IAkJICBib29sIHNraXBfaWZfbm90X3ZhbGlkKQogewogCUJ1ZmZlcgkJYiA9IEJ1ZmZlckRl c2NyaXB0b3JHZXRCdWZmZXIoYnVmKTsKQEAgLTMzOTYsNyArMzM0Nyw3IEBAIFBpbkJ1ZmZl cihCdWZmZXJEZXNjICpidWYsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogICog UmVzb3VyY2VPd25lckVubGFyZ2UoQ3VycmVudFJlc291cmNlT3duZXIpOwogICoKICAqIEN1 cnJlbnRseSwgbm8gY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIHdhbnQgdG8gbW9kaWZ5IHRo ZSBidWZmZXIncwotICogdXNhZ2VfY291bnQgYXQgYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWQg Zm9yIGEgc3RyYXRlZ3kgcGFyYW1ldGVyLgorICogY29vbGluZyBzdGF0ZSBhdCBhbGwuCiAg KiBBbHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIGEgQk1fVkFMSUQgdGVzdCAodGhlIGNhbGxl ciBjb3VsZCBjaGVjayB0aGF0IGZvcgogICogaXRzZWxmKS4KICAqCkBAIC00Njc0LDIyICs0 NjI1LDggQEAgRmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRpb24gcmVs biwgSU9PYmplY3QgaW9fb2JqZWN0LAogCQkJICBmYWxzZSk7CiAKIAkvKgotCSAqIFdoZW4g YSBzdHJhdGVneSBpcyBpbiB1c2UsIG9ubHkgZmx1c2hlcyBvZiBkaXJ0eSBidWZmZXJzIGFs cmVhZHkgaW4gdGhlCi0JICogc3RyYXRlZ3kgcmluZyBhcmUgY291bnRlZCBhcyBzdHJhdGVn eSB3cml0ZXMgKElPQ09OVEVYVAotCSAqIFtCVUxLUkVBRHxCVUxLV1JJVEV8VkFDVVVNXSBJ T09QX1dSSVRFKSBmb3IgdGhlIHB1cnBvc2Ugb2YgSU8KLQkgKiBzdGF0aXN0aWNzIHRyYWNr aW5nLgotCSAqCi0JICogSWYgYSBzaGFyZWQgYnVmZmVyIGluaXRpYWxseSBhZGRlZCB0byB0 aGUgcmluZyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlCi0JICogYmVpbmcgdXNlZCwgdGhpcyBp cyBjb3VudGVkIGFzIGFuIElPQ09OVEVYVF9OT1JNQUwgSU9PUF9XUklURS4KLQkgKgotCSAq IElmIGEgc2hhcmVkIGJ1ZmZlciB3aGljaCB3YXMgYWRkZWQgdG8gdGhlIHJpbmcgbGF0ZXIg YmVjYXVzZSB0aGUKLQkgKiBjdXJyZW50IHN0cmF0ZWd5IGJ1ZmZlciBpcyBwaW5uZWQgb3Ig aW4gdXNlIG9yIGJlY2F1c2UgYWxsIHN0cmF0ZWd5Ci0JICogYnVmZmVycyB3ZXJlIGRpcnR5 IGFuZCByZWplY3RlZCAoZm9yIEJBU19CVUxLUkVBRCBvcGVyYXRpb25zIG9ubHkpCi0JICog cmVxdWlyZXMgZmx1c2hpbmcsIHRoaXMgaXMgY291bnRlZCBhcyBhbiBJT0NPTlRFWFRfTk9S TUFMIElPT1BfV1JJVEUKLQkgKiAoZnJvbV9yaW5nIHdpbGwgYmUgZmFsc2UpLgotCSAqCi0J ICogV2hlbiBhIHN0cmF0ZWd5IGlzIG5vdCBpbiB1c2UsIHRoZSB3cml0ZSBjYW4gb25seSBi ZSBhICJyZWd1bGFyIiB3cml0ZQotCSAqIG9mIGEgZGlydHkgc2hhcmVkIGJ1ZmZlciAoSU9D T05URVhUX05PUk1BTCBJT09QX1dSSVRFKS4KKwkgKiBBbGwgd3JpdGVzIG9mIGEgZGlydHkg c2hhcmVkIGJ1ZmZlciBhcmUgY291bnRlZCBhcyBhbiBJT0NPTlRFWFRfTk9STUFMCisJICog SU9PUF9XUklURSBmb3IgdGhlIHB1cnBvc2Ugb2YgSU8gc3RhdGlzdGljcyB0cmFja2luZy4K IAkgKi8KIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShpb19vYmplY3QsIGlvX2NvbnRleHQs CiAJCQkJCQkJSU9PUF9XUklURSwgaW9fc3RhcnQsIDEsIEJMQ0tTWik7CkBAIC01NDUwLDgg KzUzODcsNiBAQCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIoUmVsRmlsZUxvY2F0 b3Igc3JjbG9jYXRvciwKIAlCbG9ja051bWJlciBuYmxvY2tzOwogCUJsb2NrTnVtYmVyIGJs a25vOwogCVBHSU9BbGlnbmVkQmxvY2sgYnVmOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJz dHJhdGVneV9zcmM7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5X2RzdDsKIAlC bG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKIAlSZWFkU3RyZWFtICpzcmNfc3RyZWFt OwogCVNNZ3JSZWxhdGlvbiBzcmNfc21ncjsKQEAgLTU0NzksMTAgKzU0MTQsNiBAQCBSZWxh dGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwK IAlzbWdyZXh0ZW5kKHNtZ3JvcGVuKGRzdGxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIp LCBmb3JrTnVtLCBuYmxvY2tzIC0gMSwKIAkJCSAgIGJ1Zi5kYXRhLCB0cnVlKTsKIAotCS8q IFRoaXMgaXMgYSBidWxrIG9wZXJhdGlvbiwgc28gdXNlIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRl Z2llcy4gKi8KLQlic3RyYXRlZ3lfc3JjID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtS RUFEKTsKLQlic3RyYXRlZ3lfZHN0ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtXUklU RSk7Ci0KIAkvKiBJbml0aWFsaXplIHN0cmVhbWluZyByZWFkICovCiAJcC5jdXJyZW50X2Js b2NrbnVtID0gMDsKIAlwLmxhc3RfZXhjbHVzaXZlID0gbmJsb2NrczsKQEAgLTU0OTQsNyAr NTQyNSw2IEBAIFJlbGF0aW9uQ29weVN0b3JhZ2VVc2luZ0J1ZmZlcihSZWxGaWxlTG9jYXRv ciBzcmNsb2NhdG9yLAogCSAqLwogCXNyY19zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9z bWdyX3JlbGF0aW9uKFJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCQkJIFJFQURfU1RS RUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQkJCSBic3RyYXRlZ3lfc3JjLAogCQkJCQkJ CQkJCQkJIHNyY19zbWdyLAogCQkJCQkJCQkJCQkJIHBlcm1hbmVudCA/IFJFTFBFUlNJU1RF TkNFX1BFUk1BTkVOVCA6IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VELAogCQkJCQkJCQkJCQkJ IGZvcmtOdW0sCkBAIC01NTE0LDcgKzU0NDQsNyBAQCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNp bmdCdWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwKIAogCQlkc3RCdWYgPSBSZWFk QnVmZmVyV2l0aG91dFJlbGNhY2hlKGRzdGxvY2F0b3IsIGZvcmtOdW0sCiAJCQkJCQkJCQkJ ICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoc3JjQnVmKSwKLQkJCQkJCQkJCQkgICBSQk1fWkVS T19BTkRfTE9DSywgYnN0cmF0ZWd5X2RzdCwKKwkJCQkJCQkJCQkgICBSQk1fWkVST19BTkRf TE9DSywKIAkJCQkJCQkJCQkgICBwZXJtYW5lbnQpOwogCQlkc3RQYWdlID0gQnVmZmVyR2V0 UGFnZShkc3RCdWYpOwogCkBAIC01NTM1LDkgKzU0NjUsNiBAQCBSZWxhdGlvbkNvcHlTdG9y YWdlVXNpbmdCdWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwKIAl9CiAJQXNzZXJ0 KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHNyY19zdHJlYW0sIE5VTEwpID09IEludmFsaWRC dWZmZXIpOwogCXJlYWRfc3RyZWFtX2VuZChzcmNfc3RyZWFtKTsKLQotCUZyZWVBY2Nlc3NT dHJhdGVneShic3RyYXRlZ3lfc3JjKTsKLQlGcmVlQWNjZXNzU3RyYXRlZ3koYnN0cmF0ZWd5 X2RzdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2ZyZWVsaXN0LmMKaW5kZXggZThjZjEzZi4uZWU2MmIzMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC03Nyw0MCArNzcsNiBAQCBjb25zdCBTaG1l bUNhbGxiYWNrcyBTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tzID0gewogCS5pbml0X2ZuID0g U3RyYXRlZ3lDdGxTaG1lbUluaXQsCiB9OwogCi0vKgotICogUHJpdmF0ZSAobm9uLXNoYXJl ZCkgc3RhdGUgZm9yIG1hbmFnaW5nIGEgcmluZyBvZiBzaGFyZWQgYnVmZmVycyB0byByZS11 c2UuCi0gKiBUaGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBraW5kIG9mIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IG9iamVjdCwgYnV0IHNvbWVkYXkKLSAqIHdlIG1pZ2h0IGhhdmUgbW9yZSBr aW5kcy4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgQnVmZmVyQWNjZXNzU3RyYXRlZ3lEYXRhCi17 Ci0JLyogT3ZlcmFsbCBzdHJhdGVneSB0eXBlICovCi0JQnVmZmVyQWNjZXNzU3RyYXRlZ3lU eXBlIGJ0eXBlOwotCS8qIE51bWJlciBvZiBlbGVtZW50cyBpbiBidWZmZXJzW10gYXJyYXkg Ki8KLQlpbnQJCQluYnVmZmVyczsKLQotCS8qCi0JICogSW5kZXggb2YgdGhlICJjdXJyZW50 IiBzbG90IGluIHRoZSByaW5nLCBpZSwgdGhlIG9uZSBtb3N0IHJlY2VudGx5Ci0JICogcmV0 dXJuZWQgYnkgR2V0QnVmZmVyRnJvbVJpbmcuCi0JICovCi0JaW50CQkJY3VycmVudDsKLQot CS8qCi0JICogQXJyYXkgb2YgYnVmZmVyIG51bWJlcnMuICBJbnZhbGlkQnVmZmVyICh0aGF0 IGlzLCB6ZXJvKSBpbmRpY2F0ZXMgd2UKLQkgKiBoYXZlIG5vdCB5ZXQgc2VsZWN0ZWQgYSBi dWZmZXIgZm9yIHRoaXMgcmluZyBzbG90LiAgRm9yIGFsbG9jYXRpb24KLQkgKiBzaW1wbGlj aXR5IHRoaXMgaXMgcGFsbG9jJ2QgdG9nZXRoZXIgd2l0aCB0aGUgZml4ZWQgZmllbGRzIG9m IHRoZQotCSAqIHN0cnVjdC4KLQkgKi8KLQlCdWZmZXIJCWJ1ZmZlcnNbRkxFWElCTEVfQVJS QVlfTUVNQkVSXTsKLX0JCQlCdWZmZXJBY2Nlc3NTdHJhdGVneURhdGE7Ci0KLQotLyogUHJv dG90eXBlcyBmb3IgaW50ZXJuYWwgZnVuY3Rpb25zICovCi1zdGF0aWMgQnVmZmVyRGVzYyAq R2V0QnVmZmVyRnJvbVJpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCi0JCQkJ CQkJCQkgdWludDY0ICpidWZfc3RhdGUpOwotc3RhdGljIHZvaWQgQWRkQnVmZmVyVG9SaW5n KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAotCQkJCQkJCUJ1ZmZlckRlc2MgKmJ1 Zik7Ci0KIC8qCiAgKiBQZXItYmFja2VuZCBzdGF0ZSBmb3IgdGhlIGJhdGNoZWQgY2xvY2sg c3dlZXAuICBFYWNoIGJhY2tlbmQgY2xhaW1zIGEgcnVuCiAgKiBvZiBjb25zZWN1dGl2ZSBj bG9jay1oYW5kIHZhbHVlcyB3aXRoIGEgc2luZ2xlIGF0b21pYyBmZXRjaC1hZGQgYW5kIHRo ZW4KQEAgLTE1Nyw4ICsxMjMsOCBAQCBDbG9ja1N3ZWVwVGljayh2b2lkKQogCQkJICogbXVz dCBob2xkIHRoZSBzcGlubG9jayBzbyBTdHJhdGVneVN5bmNTdGFydCgpIGNhbiByZWFkCiAJ CQkgKiBuZXh0VmljdGltQnVmZmVyIGFuZCBjb21wbGV0ZVBhc3NlcyBjb25zaXN0ZW50bHku CiAJCQkgKgotCQkJICogV2l0aCBiYXRjaGluZywgbXVsdGlwbGUgYmFja2VuZHMgbWF5IGVh Y2ggbGFuZCBhIGZldGNoLWFkZAotCQkJICogdGhhdCByZXR1cm5zIGEgdmFsdWUgcGFzdCBO QnVmZmVycyBpbiB0aGUgc2FtZSBwYXNzLiAgQWZ0ZXIKKwkJCSAqIFdpdGggYmF0Y2hpbmcs IG11bHRpcGxlIGJhY2tlbmRzIG1heSBlYWNoIGxhbmQgYSBmZXRjaC1hZGQgdGhhdAorCQkJ ICogcmV0dXJucyBhIHZhbHVlIHBhc3QgTkJ1ZmZlcnMgaW4gdGhlIHNhbWUgcGFzcy4gIEFm dGVyCiAJCQkgKiBhY3F1aXJpbmcgdGhlIHNwaW5sb2NrIHdlIHJlLXJlYWQgdGhlIGNvdW50 ZXI6IGlmIGFub3RoZXIKIAkJCSAqIGJhY2tlbmQgYWxyZWFkeSB3cmFwcGVkIGl0IGJlbG93 IE5CdWZmZXJzIHdlIGFyZSBkb25lLgogCQkJICovCkBAIC0yMTQsOCArMTgwLDYgQEAgQ2xv Y2tTd2VlcFRpY2sodm9pZCkKICAqCUdldFZpY3RpbUJ1ZmZlcigpLiBUaGUgb25seSBoYXJk IHJlcXVpcmVtZW50IEdldFZpY3RpbUJ1ZmZlcigpIGhhcyBpcyB0aGF0CiAgKgl0aGUgc2Vs ZWN0ZWQgYnVmZmVyIG11c3Qgbm90IGN1cnJlbnRseSBiZSBwaW5uZWQgYnkgYW55b25lLgog ICoKLSAqCXN0cmF0ZWd5IGlzIGEgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb2JqZWN0LCBvciBO VUxMIGZvciBkZWZhdWx0IHN0cmF0ZWd5LgotICoKICAqCUl0IGlzIHRoZSBjYWxsZXJzIHJl c3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgYnVmZmVyIG93bmVyc2hpcCBjYW4gYmUKICAq CXRyYWNrZWQgdmlhIFRyYWNrTmV3QnVmZmVyUGluKCkuCiAgKgpAQCAtMjIzLDI5ICsxODcs MTMgQEAgQ2xvY2tTd2VlcFRpY2sodm9pZCkKICAqCWJlZm9yZSByZXR1cm5pbmcuCiAgKi8K IEJ1ZmZlckRlc2MgKgotU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlLCBib29sICpmcm9tX3JpbmcpCitTdHJhdGVn eUdldEJ1ZmZlcih1aW50NjQgKmJ1Zl9zdGF0ZSkKIHsKIAlCdWZmZXJEZXNjICpidWY7CiAJ aW50CQkJYmd3cHJvY25vOwogCWludAkJCXRyeWNvdW50ZXI7CiAJYm9vbAkJZm9yY2VfY29v bDsKIAotCSpmcm9tX3JpbmcgPSBmYWxzZTsKLQotCS8qCi0JICogSWYgZ2l2ZW4gYSBzdHJh dGVneSBvYmplY3QsIHNlZSB3aGV0aGVyIGl0IGNhbiBzZWxlY3QgYSBidWZmZXIuIFdlCi0J ICogYXNzdW1lIHN0cmF0ZWd5IG9iamVjdHMgZG9uJ3QgbmVlZCBidWZmZXJfc3RyYXRlZ3lf bG9jay4KLQkgKi8KLQlpZiAoc3RyYXRlZ3kgIT0gTlVMTCkKLQl7Ci0JCWJ1ZiA9IEdldEJ1 ZmZlckZyb21SaW5nKHN0cmF0ZWd5LCBidWZfc3RhdGUpOwotCQlpZiAoYnVmICE9IE5VTEwp Ci0JCXsKLQkJCSpmcm9tX3JpbmcgPSB0cnVlOwotCQkJcmV0dXJuIGJ1ZjsKLQkJfQotCX0K LQogCS8qCiAJICogSWYgYXNrZWQsIHdlIG5lZWQgdG8gd2FrZW4gdGhlIGJnd3JpdGVyLiBT aW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlbHkgb24KIAkgKiBhIHNwaW5sb2NrIGZvciB0aGlz IHdlIGZvcmNlIGEgcmVhZCBmcm9tIHNoYXJlZCBtZW1vcnkgb25jZSwgYW5kIHRoZW4KQEAg LTI3NCw4ICsyMjIsNyBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVn eSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCiAJLyoKIAkg KiBXZSBjb3VudCBidWZmZXIgYWxsb2NhdGlvbiByZXF1ZXN0cyBzbyB0aGF0IHRoZSBiZ3dy aXRlciBjYW4gZXN0aW1hdGUKLQkgKiB0aGUgcmF0ZSBvZiBidWZmZXIgY29uc3VtcHRpb24u ICBOb3RlIHRoYXQgYnVmZmVycyByZWN5Y2xlZCBieSBhCi0JICogc3RyYXRlZ3kgb2JqZWN0 IGFyZSBpbnRlbnRpb25hbGx5IG5vdCBjb3VudGVkIGhlcmUuCisJICogdGhlIHJhdGUgb2Yg YnVmZmVyIGNvbnN1bXB0aW9uLgogCSAqLwogCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZT dHJhdGVneUNvbnRyb2wtPm51bUJ1ZmZlckFsbG9jcywgMSk7CiAKQEAgLTM0Nyw3ICsyOTQs NyBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwg dWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCQkJCWlmICghZm9yY2VfY29vbCkK IAkJCQl7CiAJCQkJCW5vX3Byb2dyZXNzID0gdHJ1ZTsKLQkJCQkJYnJlYWs7CQkJLyogYWR2 YW5jZSB0aGUgaGFuZCwgbG9vayBmb3IgQ09PTCAqLworCQkJCQlicmVhazsJCS8qIGFkdmFu Y2UgdGhlIGhhbmQsIGxvb2sgZm9yIENPT0wgKi8KIAkJCQl9CiAKIAkJCQlpZiAoQlVGX1NU QVRFX0dFVF9SRUZCSVQobG9jYWxfYnVmX3N0YXRlKSkKQEAgLTM4Nyw4ICszMzQsNiBAQCBT dHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0 ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCQkJCQkJCQkJCQkJICAgbG9jYWxfYnVmX3N0 YXRlKSkKIAkJCQl7CiAJCQkJCS8qIEZvdW5kIGEgdXNhYmxlIGJ1ZmZlciAqLwotCQkJCQlp ZiAoc3RyYXRlZ3kgIT0gTlVMTCkKLQkJCQkJCUFkZEJ1ZmZlclRvUmluZyhzdHJhdGVneSwg YnVmKTsKIAkJCQkJKmJ1Zl9zdGF0ZSA9IGxvY2FsX2J1Zl9zdGF0ZTsKIAogCQkJCQlUcmFj a05ld0J1ZmZlclBpbihCdWZmZXJEZXNjcmlwdG9yR2V0QnVmZmVyKGJ1ZikpOwpAQCAtMzk5 LDExICszNDQsMTIgQEAgU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlLCBib29sICpmcm9tX3IKIAkJfQogCiAJCS8q Ci0JCSAqIEEgdGljayB0aGF0IG1hZGUgbm8gcHJvZ3Jlc3MgdG93YXJkIGEgdmljdGltIGNv dW50cyBkb3duIHRyeWNvdW50ZXIuCi0JCSAqIEEgZnVsbCB1bnByb2R1Y3RpdmUgcGFzcyBl c2NhbGF0ZXMgdG8gZm9yY2VfY29vbCAoY29vbCBIT1QgYnVmZmVycwotCQkgKiBpbnRvIHZp Y3RpbXMpOyBhIHNlY29uZCB1bnByb2R1Y3RpdmUgZnVsbCBwYXNzIG1lYW5zIGV2ZXJ5dGhp bmcgaXMKLQkJICogcGlubmVkLCBzbyBmYWlsIHJhdGhlciB0aGFuIHNwaW4gZm9yZXZlci4g IChBIGZhaWxlZCBDQVMgYWJvdmUgaXMKLQkJICogbmVpdGhlciBwcm9ncmVzcyBub3IgYSBm dWxsIG1pc3M6IHdlIHNpbXBseSByZXRyeSB0aGUgc2FtZSBidWZmZXIuKQorCQkgKiBBIHRp Y2sgdGhhdCBtYWRlIG5vIHByb2dyZXNzIHRvd2FyZCBhIHZpY3RpbSBjb3VudHMgZG93bgor CQkgKiB0cnljb3VudGVyLiBBIGZ1bGwgdW5wcm9kdWN0aXZlIHBhc3MgZXNjYWxhdGVzIHRv IGZvcmNlX2Nvb2wgKGNvb2wKKwkJICogSE9UIGJ1ZmZlcnMgaW50byB2aWN0aW1zKTsgYSBz ZWNvbmQgdW5wcm9kdWN0aXZlIGZ1bGwgcGFzcyBtZWFucworCQkgKiBldmVyeXRoaW5nIGlz IHBpbm5lZCwgc28gZmFpbCByYXRoZXIgdGhhbiBzcGluIGZvcmV2ZXIuICAoQSBmYWlsZWQK KwkJICogQ0FTIGFib3ZlIGlzIG5laXRoZXIgcHJvZ3Jlc3Mgbm9yIGEgZnVsbCBtaXNzOiB3 ZSBzaW1wbHkgcmV0cnkgdGhlCisJCSAqIHNhbWUgYnVmZmVyLikKIAkJICovCiAJCWlmIChu b19wcm9ncmVzcyAmJiAtLXRyeWNvdW50ZXIgPT0gMCkKIAkJewpAQCAtNTMxLDM2MSArNDc3 LDMgQEAgU3RyYXRlZ3lDdGxTaG1lbUluaXQodm9pZCAqYXJnKQogCWVsc2UKIAkJU3RyYXRl Z3lDb250cm9sLT5iYXRjaFNpemUgPSAxOwogfQotCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCQkJ CUJhY2tlbmQtcHJpdmF0ZSBidWZmZXIgcmluZyBtYW5hZ2VtZW50Ci0gKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0gKi8KLQotCi0vKgotICogR2V0QWNjZXNzU3RyYXRlZ3kgLS0gY3JlYXRlIGEgQnVmZmVy QWNjZXNzU3RyYXRlZ3kgb2JqZWN0Ci0gKgotICogVGhlIG9iamVjdCBpcyBhbGxvY2F0ZWQg aW4gdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQuCi0gKi8KLUJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5Ci1HZXRBY2Nlc3NTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUgYnR5cGUp Ci17Ci0JaW50CQkJcmluZ19zaXplX2tiOwotCi0JLyoKLQkgKiBTZWxlY3QgcmluZyBzaXpl IHRvIHVzZS4gIFNlZSBidWZmZXIvUkVBRE1FIGZvciByYXRpb25hbGVzLgotCSAqCi0JICog Tm90ZTogaWYgeW91IGNoYW5nZSB0aGUgcmluZyBzaXplIGZvciBCQVNfQlVMS1JFQUQsIHNl ZSBhbHNvCi0JICogU1lOQ19TQ0FOX1JFUE9SVF9JTlRFUlZBTCBpbiBhY2Nlc3MvaGVhcC9z eW5jc2Nhbi5jLgotCSAqLwotCXN3aXRjaCAoYnR5cGUpCi0JewotCQljYXNlIEJBU19OT1JN QUw6Ci0JCQkvKiBpZiBzb21lb25lIGFza3MgZm9yIE5PUk1BTCwganVzdCBnaXZlICdlbSBh ICJkZWZhdWx0IiBvYmplY3QgKi8KLQkJCXJldHVybiBOVUxMOwotCi0JCWNhc2UgQkFTX0JV TEtSRUFEOgotCQkJewotCQkJCWludAkJCXJpbmdfbWF4X2tiOwotCi0JCQkJLyoKLQkJCQkg KiBUaGUgcmluZyBhbHdheXMgbmVlZHMgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGFsbG93IHNv bWUKLQkJCQkgKiBzZXBhcmF0aW9uIGluIHRpbWUgYmV0d2VlbiBwcm92aWRpbmcgYSBidWZm ZXIgdG8gdGhlIHVzZXIKLQkJCQkgKiBvZiB0aGUgc3RyYXRlZ3kgYW5kIHRoYXQgYnVmZmVy IGJlaW5nIHJldXNlZC4gT3RoZXJ3aXNlIHRoZQotCQkJCSAqIHVzZXIncyBwaW4gd2lsbCBw cmV2ZW50IHJldXNlIG9mIHRoZSBidWZmZXIsIGV2ZW4gd2l0aG91dAotCQkJCSAqIGNvbmN1 cnJlbnQgYWN0aXZpdHkuCi0JCQkJICoKLQkJCQkgKiBXZSBhbHNvIG5lZWQgdG8gZW5zdXJl IHRoZSByaW5nIGFsd2F5cyBpcyBsYXJnZSBlbm91Z2ggZm9yCi0JCQkJICogU1lOQ19TQ0FO X1JFUE9SVF9JTlRFUlZBTCwgYXMgbm90ZWQgYWJvdmUuCi0JCQkJICoKLQkJCQkgKiBUaHVz IHdlIHN0YXJ0IG91dCBhIG1pbmltYWwgc2l6ZSBhbmQgaW5jcmVhc2UgdGhlIHNpemUKLQkJ CQkgKiBmdXJ0aGVyIGlmIGFwcHJvcHJpYXRlLgotCQkJCSAqLwotCQkJCXJpbmdfc2l6ZV9r YiA9IDI1NjsKLQotCQkJCS8qCi0JCQkJICogVGhlcmUncyBubyBwb2ludCBpbiBhIGxhcmdl ciByaW5nIGlmIHdlIHdvbid0IGJlIGFsbG93ZWQgdG8KLQkJCQkgKiBwaW4gc3VmZmljaWVu dGx5IG1hbnkgYnVmZmVycy4gIEJ1dCB3ZSBuZXZlciBsaW1pdCB0byBsZXNzCi0JCQkJICog dGhhbiB0aGUgbWluaW1hbCBzaXplIGFib3ZlLgotCQkJCSAqLwotCQkJCXJpbmdfbWF4X2ti ID0gR2V0UGluTGltaXQoKSAqIChCTENLU1ogLyAxMDI0KTsKLQkJCQlyaW5nX21heF9rYiA9 IE1heChyaW5nX3NpemVfa2IsIHJpbmdfbWF4X2tiKTsKLQotCQkJCS8qCi0JCQkJICogV2Ug d291bGQgbGlrZSB0aGUgcmluZyB0byBhZGRpdGlvbmFsbHkgaGF2ZSBzcGFjZSBmb3IgdGhl Ci0JCQkJICogY29uZmlndXJlZCBkZWdyZWUgb2YgSU8gY29uY3VycmVuY3kuIFdoaWxlIGJl aW5nIHJlYWQgaW4sCi0JCQkJICogYnVmZmVycyBjYW4gb2J2aW91c2x5IG5vdCB5ZXQgYmUg cmV1c2VkLgotCQkJCSAqCi0JCQkJICogRWFjaCBJTyBjYW4gYmUgdXAgdG8gaW9fY29tYmlu ZV9saW1pdCBibG9ja3MgbGFyZ2UsIGFuZCB3ZQotCQkJCSAqIHdhbnQgdG8gc3RhcnQgdXAg dG8gZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5IElPcy4KLQkJCQkgKgotCQkJCSAqIE5vdGUg dGhhdCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kgbWF5IGJlIDAsIHdoaWNoIGRpc2FibGVz Ci0JCQkJICogQUlPLgotCQkJCSAqLwotCQkJCXJpbmdfc2l6ZV9rYiArPSAoQkxDS1NaIC8g MTAyNCkgKgotCQkJCQlpb19jb21iaW5lX2xpbWl0ICogZWZmZWN0aXZlX2lvX2NvbmN1cnJl bmN5OwotCi0JCQkJaWYgKHJpbmdfc2l6ZV9rYiA+IHJpbmdfbWF4X2tiKQotCQkJCQlyaW5n X3NpemVfa2IgPSByaW5nX21heF9rYjsKLQkJCQlicmVhazsKLQkJCX0KLQkJY2FzZSBCQVNf QlVMS1dSSVRFOgotCQkJcmluZ19zaXplX2tiID0gMTYgKiAxMDI0OwotCQkJYnJlYWs7Ci0J CWNhc2UgQkFTX1ZBQ1VVTToKLQkJCXJpbmdfc2l6ZV9rYiA9IDIwNDg7Ci0JCQlicmVhazsK LQotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBidWZmZXIgYWNj ZXNzIHN0cmF0ZWd5OiAlZCIsCi0JCQkJIChpbnQpIGJ0eXBlKTsKLQkJCXJldHVybiBOVUxM OwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCX0KLQotCXJldHVybiBHZXRBY2Nlc3NT dHJhdGVneVdpdGhTaXplKGJ0eXBlLCByaW5nX3NpemVfa2IpOwotfQotCi0vKgotICogR2V0 QWNjZXNzU3RyYXRlZ3lXaXRoU2l6ZSAtLSBjcmVhdGUgYSBCdWZmZXJBY2Nlc3NTdHJhdGVn eSBvYmplY3Qgd2l0aCBhCi0gKgkJbnVtYmVyIG9mIGJ1ZmZlcnMgZXF1aXZhbGVudCB0byB0 aGUgcGFzc2VkIGluIHNpemUuCi0gKgotICogSWYgdGhlIGdpdmVuIHJpbmcgc2l6ZSBpcyAw LCBubyBCdWZmZXJBY2Nlc3NTdHJhdGVneSB3aWxsIGJlIGNyZWF0ZWQgYW5kCi0gKiB0aGUg ZnVuY3Rpb24gd2lsbCByZXR1cm4gTlVMTC4gIHJpbmdfc2l6ZV9rYiBtdXN0IG5vdCBiZSBu ZWdhdGl2ZS4KLSAqLwotQnVmZmVyQWNjZXNzU3RyYXRlZ3kKLUdldEFjY2Vzc1N0cmF0ZWd5 V2l0aFNpemUoQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlIGJ0eXBlLCBpbnQgcmluZ19zaXpl X2tiKQotewotCWludAkJCXJpbmdfYnVmZmVyczsKLQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneTsKLQotCUFzc2VydChyaW5nX3NpemVfa2IgPj0gMCk7Ci0KLQkvKiBGaWd1cmUg b3V0IGhvdyBtYW55IGJ1ZmZlcnMgcmluZ19zaXplX2tiIGlzICovCi0JcmluZ19idWZmZXJz ID0gcmluZ19zaXplX2tiIC8gKEJMQ0tTWiAvIDEwMjQpOwotCi0JLyogMCBtZWFucyB1bmxp bWl0ZWQsIHNvIG5vIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHJlcXVpcmVkICovCi0JaWYgKHJp bmdfYnVmZmVycyA9PSAwKQotCQlyZXR1cm4gTlVMTDsKLQotCS8qIENhcCB0byAxLzh0aCBv ZiBzaGFyZWRfYnVmZmVycyAqLwotCXJpbmdfYnVmZmVycyA9IE1pbihOQnVmZmVycyAvIDgs IHJpbmdfYnVmZmVycyk7Ci0KLQkvKiBOQnVmZmVycyBzaG91bGQgbmV2ZXIgYmUgbGVzcyB0 aGFuIDE2LCBzbyB0aGlzIHNob3VsZG4ndCBoYXBwZW4gKi8KLQlBc3NlcnQocmluZ19idWZm ZXJzID4gMCk7Ci0KLQkvKiBBbGxvY2F0ZSB0aGUgb2JqZWN0IGFuZCBpbml0aWFsaXplIGFs bCBlbGVtZW50cyB0byB6ZXJvZXMgKi8KLQlzdHJhdGVneSA9IChCdWZmZXJBY2Nlc3NTdHJh dGVneSkKLQkJcGFsbG9jMChvZmZzZXRvZihCdWZmZXJBY2Nlc3NTdHJhdGVneURhdGEsIGJ1 ZmZlcnMpICsKLQkJCQlyaW5nX2J1ZmZlcnMgKiBzaXplb2YoQnVmZmVyKSk7Ci0KLQkvKiBT ZXQgZmllbGRzIHRoYXQgZG9uJ3Qgc3RhcnQgb3V0IHplcm8gKi8KLQlzdHJhdGVneS0+YnR5 cGUgPSBidHlwZTsKLQlzdHJhdGVneS0+bmJ1ZmZlcnMgPSByaW5nX2J1ZmZlcnM7Ci0KLQly ZXR1cm4gc3RyYXRlZ3k7Ci19Ci0KLS8qCi0gKiBHZXRBY2Nlc3NTdHJhdGVneUJ1ZmZlckNv dW50IC0tIGFuIGFjY2Vzc29yIGZvciB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgaW4KLSAqCQl0 aGUgcmluZwotICoKLSAqIFJldHVybnMgMCBvbiBOVUxMIGlucHV0IHRvIG1hdGNoIGJlaGF2 aW9yIG9mIEdldEFjY2Vzc1N0cmF0ZWd5V2l0aFNpemUoKQotICogcmV0dXJuaW5nIE5VTEwg d2l0aCAwIHNpemUuCi0gKi8KLWludAotR2V0QWNjZXNzU3RyYXRlZ3lCdWZmZXJDb3VudChC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSkKLXsKLQlpZiAoc3RyYXRlZ3kgPT0gTlVM TCkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1cm4gc3RyYXRlZ3ktPm5idWZmZXJzOwotfQotCi0v KgotICogR2V0QWNjZXNzU3RyYXRlZ3lQaW5MaW1pdCAtLSBnZXQgY2FwIG9mIG51bWJlciBv ZiBidWZmZXJzIHRoYXQgc2hvdWxkIGJlIHBpbm5lZAotICoKLSAqIFdoZW4gcGlubmluZyBl eHRyYSBidWZmZXJzIHRvIGxvb2sgYWhlYWQsIHVzZXJzIG9mIGEgcmluZy1iYXNlZCBzdHJh dGVneSBhcmUKLSAqIGluIGRhbmdlciBvZiBwaW5uaW5nIHRvbyBtdWNoIG9mIHRoZSByaW5n IGF0IG9uY2Ugd2hpbGUgcGVyZm9ybWluZyBsb29rLWFoZWFkLgotICogRm9yIHNvbWUgc3Ry YXRlZ2llcywgdGhhdCBtZWFucyAiZXNjYXBpbmciIGZyb20gdGhlIHJpbmcsIGFuZCBpbiBv dGhlcnMgaXQKLSAqIG1lYW5zIGZvcmNpbmcgZGlydHkgZGF0YSB0byBkaXNrIHZlcnkgZnJl cXVlbnRseSB3aXRoIGFzc29jaWF0ZWQgV0FMCi0gKiBmbHVzaGluZy4gIFNpbmNlIGV4dGVy bmFsIGNvZGUgaGFzIG5vIGluc2lnaHQgaW50byBhbnkgb2YgdGhhdCwgYWxsb3cKLSAqIGlu ZGl2aWR1YWwgc3RyYXRlZ3kgdHlwZXMgdG8gZXhwb3NlIGEgY2xhbXAgdGhhdCBzaG91bGQg YmUgYXBwbGllZCB3aGVuCi0gKiBkZWNpZGluZyBvbiBhIG1heGltdW0gbnVtYmVyIG9mIGJ1 ZmZlcnMgdG8gcGluIGF0IG9uY2UuCi0gKgotICogQ2FsbGVycyBzaG91bGQgY29tYmluZSB0 aGlzIG51bWJlciB3aXRoIG90aGVyIHJlbGV2YW50IGxpbWl0cyBhbmQgdGFrZSB0aGUKLSAq IG1pbmltdW0uCi0gKi8KLWludAotR2V0QWNjZXNzU3RyYXRlZ3lQaW5MaW1pdChCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSkKLXsKLQlpZiAoc3RyYXRlZ3kgPT0gTlVMTCkKLQkJ cmV0dXJuIE5CdWZmZXJzOwotCi0Jc3dpdGNoIChzdHJhdGVneS0+YnR5cGUpCi0JewotCQlj YXNlIEJBU19CVUxLUkVBRDoKLQotCQkJLyoKLQkJCSAqIFNpbmNlIEJBU19CVUxLUkVBRCB1 c2VzIFN0cmF0ZWd5UmVqZWN0QnVmZmVyKCksIGRpcnR5IGJ1ZmZlcnMKLQkJCSAqIHNob3Vs ZG4ndCBiZSBhIHByb2JsZW0gYW5kIHRoZSBjYWxsZXIgaXMgZnJlZSB0byBwaW4gdXAgdG8g dGhlCi0JCQkgKiBlbnRpcmUgcmluZyBhdCBvbmNlLgotCQkJICovCi0JCQlyZXR1cm4gc3Ry YXRlZ3ktPm5idWZmZXJzOwotCi0JCWRlZmF1bHQ6Ci0KLQkJCS8qCi0JCQkgKiBUZWxsIGNh bGxlciBub3QgdG8gcGluIG1vcmUgdGhhbiBoYWxmIHRoZSBidWZmZXJzIGluIHRoZSByaW5n LgotCQkJICogVGhpcyBpcyBhIHRyYWRlLW9mZiBiZXR3ZWVuIGxvb2sgYWhlYWQgZGlzdGFu Y2UgYW5kIGRlZmVycmluZwotCQkJICogd3JpdGViYWNrIGFuZCBhc3NvY2lhdGVkIFdBTCB0 cmFmZmljLgotCQkJICovCi0JCQlyZXR1cm4gc3RyYXRlZ3ktPm5idWZmZXJzIC8gMjsKLQl9 Ci19Ci0KLS8qCi0gKiBGcmVlQWNjZXNzU3RyYXRlZ3kgLS0gcmVsZWFzZSBhIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IG9iamVjdAotICoKLSAqIEEgc2ltcGxlIHBmcmVlIHdvdWxkIGRvIGF0 IHRoZSBtb21lbnQsIGJ1dCB3ZSB3b3VsZCBwcmVmZXIgdGhhdCBjYWxsZXJzCi0gKiBkb24n dCBhc3N1bWUgdGhhdCBtdWNoIGFib3V0IHRoZSByZXByZXNlbnRhdGlvbiBvZiBCdWZmZXJB Y2Nlc3NTdHJhdGVneS4KLSAqLwotdm9pZAotRnJlZUFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQotewotCS8qIGRvbid0IGNyYXNoIGlmIGNhbGxlZCBv biBhICJkZWZhdWx0IiBzdHJhdGVneSAqLwotCWlmIChzdHJhdGVneSAhPSBOVUxMKQotCQlw ZnJlZShzdHJhdGVneSk7Ci19Ci0KLS8qCi0gKiBHZXRCdWZmZXJGcm9tUmluZyAtLSByZXR1 cm5zIGEgYnVmZmVyIGZyb20gdGhlIHJpbmcsIG9yIE5VTEwgaWYgdGhlCi0gKgkJcmluZyBp cyBlbXB0eSAvIG5vdCB1c2FibGUuCi0gKgotICogVGhlIGJ1ZmZlciBpcyBwaW5uZWQgYW5k IG1hcmtlZCBhcyBvd25lZCwgdXNpbmcgVHJhY2tOZXdCdWZmZXJQaW4oKSwgYmVmb3JlCi0g KiByZXR1cm5pbmcuCi0gKi8KLXN0YXRpYyBCdWZmZXJEZXNjICoKLUdldEJ1ZmZlckZyb21S aW5nKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSkK LXsKLQlCdWZmZXJEZXNjICpidWY7Ci0JQnVmZmVyCQlidWZudW07Ci0JdWludDY0CQlvbGRf YnVmX3N0YXRlOwotCXVpbnQ2NAkJbG9jYWxfYnVmX3N0YXRlOwkvKiB0byBhdm9pZCByZXBl YXRlZCAoZGUtKXJlZmVyZW5jaW5nICovCi0KLQotCS8qIEFkdmFuY2UgdG8gbmV4dCByaW5n IHNsb3QgKi8KLQlpZiAoKytzdHJhdGVneS0+Y3VycmVudCA+PSBzdHJhdGVneS0+bmJ1ZmZl cnMpCi0JCXN0cmF0ZWd5LT5jdXJyZW50ID0gMDsKLQotCS8qCi0JICogSWYgdGhlIHNsb3Qg aGFzbid0IGJlZW4gZmlsbGVkIHlldCwgdGVsbCB0aGUgY2FsbGVyIHRvIGFsbG9jYXRlIGEg bmV3Ci0JICogYnVmZmVyIHdpdGggdGhlIG5vcm1hbCBhbGxvY2F0aW9uIHN0cmF0ZWd5LiAg SGUgd2lsbCB0aGVuIGZpbGwgdGhpcwotCSAqIHNsb3QgYnkgY2FsbGluZyBBZGRCdWZmZXJU b1Jpbmcgd2l0aCB0aGUgbmV3IGJ1ZmZlci4KLQkgKi8KLQlidWZudW0gPSBzdHJhdGVneS0+ YnVmZmVyc1tzdHJhdGVneS0+Y3VycmVudF07Ci0JaWYgKGJ1Zm51bSA9PSBJbnZhbGlkQnVm ZmVyKQotCQlyZXR1cm4gTlVMTDsKLQotCWJ1ZiA9IEdldEJ1ZmZlckRlc2NyaXB0b3IoYnVm bnVtIC0gMSk7Ci0KLQkvKgotCSAqIENoZWNrIHdoZXRoZXIgdGhlIGJ1ZmZlciBjYW4gYmUg dXNlZCBhbmQgcGluIGl0IGlmIHNvLiBEbyB0aGlzIHVzaW5nIGEKLQkgKiBDQVMgbG9vcCwg dG8gYXZvaWQgaGF2aW5nIHRvIGxvY2sgdGhlIGJ1ZmZlciBoZWFkZXIuCi0JICovCi0Jb2xk X2J1Zl9zdGF0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmYnVmLT5zdGF0ZSk7Ci0JZm9yICg7 OykKLQl7Ci0JCWxvY2FsX2J1Zl9zdGF0ZSA9IG9sZF9idWZfc3RhdGU7Ci0KLQkJLyoKLQkJ ICogSWYgdGhlIGJ1ZmZlciBpcyBwaW5uZWQgd2UgY2Fubm90IHVzZSBpdCB1bmRlciBhbnkg Y2lyY3Vtc3RhbmNlcy4KLQkJICoKLQkJICogV2l0aCB0aGUgY29vbGluZy1zdGF0ZSByZXBs YWNlbWVudCB0aGUgZmllbGQgaG9sZHMgb25seSBDT09MIG9yIEhPVCwKLQkJICogc28gdGhl IHN0b2NrICJ1c2FnZV9jb3VudCA+IDEgbWVhbnMgYW5vdGhlciBiYWNrZW5kIHRvdWNoZWQg aXQiCi0JCSAqIGhldXJpc3RpYyBubyBsb25nZXIgYXBwbGllczogYSByaW5nIGVsZW1lbnQg aXMgcmV1c2FibGUgd2hlbmV2ZXIgaXQKLQkJICogaXMgdW5waW5uZWQuICAoVGhlIHdob2xl IHJpbmcgbWVjaGFuaXNtIGlzIHJlbW92ZWQgaW4gYSBsYXRlciBwYXRjaDsKLQkJICogc2Nh biByZXNpc3RhbmNlIGlzIG5vdyBpbnRyaW5zaWMgdG8gdGhlIHN3ZWVwLikKLQkJICovCi0J CWlmIChCVUZfU1RBVEVfR0VUX1JFRkNPVU5UKGxvY2FsX2J1Zl9zdGF0ZSkgIT0gMCkKLQkJ CWJyZWFrOwotCi0JCS8qIFNlZSBlcXVpdmFsZW50IGNvZGUgaW4gUGluQnVmZmVyKCkgKi8K LQkJaWYgKHVubGlrZWx5KGxvY2FsX2J1Zl9zdGF0ZSAmIEJNX0xPQ0tFRCkpCi0JCXsKLQkJ CW9sZF9idWZfc3RhdGUgPSBXYWl0QnVmSGRyVW5sb2NrZWQoYnVmKTsKLQkJCWNvbnRpbnVl OwotCQl9Ci0KLQkJLyogcGluIHRoZSBidWZmZXIgaWYgdGhlIENBUyBzdWNjZWVkcyAqLwot CQlsb2NhbF9idWZfc3RhdGUgKz0gQlVGX1JFRkNPVU5UX09ORTsKLQotCQlpZiAocGdfYXRv bWljX2NvbXBhcmVfZXhjaGFuZ2VfdTY0KCZidWYtPnN0YXRlLCAmb2xkX2J1Zl9zdGF0ZSwK LQkJCQkJCQkJCQkgICBsb2NhbF9idWZfc3RhdGUpKQotCQl7Ci0JCQkqYnVmX3N0YXRlID0g bG9jYWxfYnVmX3N0YXRlOwotCi0JCQlUcmFja05ld0J1ZmZlclBpbihCdWZmZXJEZXNjcmlw dG9yR2V0QnVmZmVyKGJ1ZikpOwotCQkJcmV0dXJuIGJ1ZjsKLQkJfQotCX0KLQotCS8qCi0J ICogVGVsbCBjYWxsZXIgdG8gYWxsb2NhdGUgYSBuZXcgYnVmZmVyIHdpdGggdGhlIG5vcm1h bCBhbGxvY2F0aW9uCi0JICogc3RyYXRlZ3kuICBIZSdsbCB0aGVuIHJlcGxhY2UgdGhpcyBy aW5nIGVsZW1lbnQgdmlhIEFkZEJ1ZmZlclRvUmluZy4KLQkgKi8KLQlyZXR1cm4gTlVMTDsK LX0KLQotLyoKLSAqIEFkZEJ1ZmZlclRvUmluZyAtLSBhZGQgYSBidWZmZXIgdG8gdGhlIGJ1 ZmZlciByaW5nCi0gKgotICogQ2FsbGVyIG11c3QgaG9sZCB0aGUgYnVmZmVyIGhlYWRlciBz cGlubG9jayBvbiB0aGUgYnVmZmVyLiAgU2luY2UgdGhpcwotICogaXMgY2FsbGVkIHdpdGgg dGhlIHNwaW5sb2NrIGhlbGQsIGl0IGhhZCBiZXR0ZXIgYmUgcXVpdGUgY2hlYXAuCi0gKi8K LXN0YXRpYyB2b2lkCi1BZGRCdWZmZXJUb1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksIEJ1ZmZlckRlc2MgKmJ1ZikKLXsKLQlzdHJhdGVneS0+YnVmZmVyc1tzdHJhdGVn eS0+Y3VycmVudF0gPSBCdWZmZXJEZXNjcmlwdG9yR2V0QnVmZmVyKGJ1Zik7Ci19Ci0KLS8q Ci0gKiBVdGlsaXR5IGZ1bmN0aW9uIHJldHVybmluZyB0aGUgSU9Db250ZXh0IG9mIGEgZ2l2 ZW4gQnVmZmVyQWNjZXNzU3RyYXRlZ3kncwotICogc3RyYXRlZ3kgcmluZy4KLSAqLwotSU9D b250ZXh0Ci1JT0NvbnRleHRGb3JTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJh dGVneSkKLXsKLQlpZiAoIXN0cmF0ZWd5KQotCQlyZXR1cm4gSU9DT05URVhUX05PUk1BTDsK LQotCXN3aXRjaCAoc3RyYXRlZ3ktPmJ0eXBlKQotCXsKLQkJY2FzZSBCQVNfTk9STUFMOgot Ci0JCQkvKgotCQkJICogQ3VycmVudGx5LCBHZXRBY2Nlc3NTdHJhdGVneSgpIHJldHVybnMg TlVMTCBmb3IKLQkJCSAqIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZSBCQVNfTk9STUFMLCBz byB0aGlzIGNhc2UgaXMKLQkJCSAqIHVucmVhY2hhYmxlLgotCQkJICovCi0JCQlwZ191bnJl YWNoYWJsZSgpOwotCQkJcmV0dXJuIElPQ09OVEVYVF9OT1JNQUw7Ci0JCWNhc2UgQkFTX0JV TEtSRUFEOgotCQkJcmV0dXJuIElPQ09OVEVYVF9CVUxLUkVBRDsKLQkJY2FzZSBCQVNfQlVM S1dSSVRFOgotCQkJcmV0dXJuIElPQ09OVEVYVF9CVUxLV1JJVEU7Ci0JCWNhc2UgQkFTX1ZB Q1VVTToKLQkJCXJldHVybiBJT0NPTlRFWFRfVkFDVVVNOwotCX0KLQotCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlOiAlZCIsIHN0cmF0ZWd5 LT5idHlwZSk7Ci0JcGdfdW5yZWFjaGFibGUoKTsKLX0KLQotLyoKLSAqIFN0cmF0ZWd5UmVq ZWN0QnVmZmVyIC0tIGNvbnNpZGVyIHJlamVjdGluZyBhIGRpcnR5IGJ1ZmZlcgotICoKLSAq IFdoZW4gYSBub25kZWZhdWx0IHN0cmF0ZWd5IGlzIHVzZWQsIHRoZSBidWZmZXIgbWFuYWdl ciBjYWxscyB0aGlzIGZ1bmN0aW9uCi0gKiB3aGVuIGl0IHR1cm5zIG91dCB0aGF0IHRoZSBi dWZmZXIgc2VsZWN0ZWQgYnkgU3RyYXRlZ3lHZXRCdWZmZXIgbmVlZHMgdG8KLSAqIGJlIHdy aXR0ZW4gb3V0IGFuZCBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGZsdXNoaW5nIFdBTCB0b28u ICBUaGlzIGdpdmVzIHVzCi0gKiBhIGNoYW5jZSB0byBjaG9vc2UgYSBkaWZmZXJlbnQgdmlj dGltLgotICoKLSAqIFJldHVybnMgdHJ1ZSBpZiBidWZmZXIgbWFuYWdlciBzaG91bGQgYXNr IGZvciBhIG5ldyB2aWN0aW0sIGFuZCBmYWxzZQotICogaWYgdGhpcyBidWZmZXIgc2hvdWxk IGJlIHdyaXR0ZW4gYW5kIHJlLXVzZWQuCi0gKi8KLWJvb2wKLVN0cmF0ZWd5UmVqZWN0QnVm ZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBCdWZmZXJEZXNjICpidWYsIGJv b2wgZnJvbV9yaW5nKQotewotCS8qIFdlIG9ubHkgZG8gdGhpcyBpbiBidWxrcmVhZCBtb2Rl ICovCi0JaWYgKHN0cmF0ZWd5LT5idHlwZSAhPSBCQVNfQlVMS1JFQUQpCi0JCXJldHVybiBm YWxzZTsKLQotCS8qIERvbid0IG11Y2sgd2l0aCBiZWhhdmlvciBvZiBub3JtYWwgYnVmZmVy LXJlcGxhY2VtZW50IHN0cmF0ZWd5ICovCi0JaWYgKCFmcm9tX3JpbmcgfHwKLQkJc3RyYXRl Z3ktPmJ1ZmZlcnNbc3RyYXRlZ3ktPmN1cnJlbnRdICE9IEJ1ZmZlckRlc2NyaXB0b3JHZXRC dWZmZXIoYnVmKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyoKLQkgKiBSZW1vdmUgdGhlIGRp cnR5IGJ1ZmZlciBmcm9tIHRoZSByaW5nOyBuZWNlc3NhcnkgdG8gcHJldmVudCBpbmZpbml0 ZQotCSAqIGxvb3AgaWYgYWxsIHJpbmcgbWVtYmVycyBhcmUgZGlydHkuCi0JICovCi0Jc3Ry YXRlZ3ktPmJ1ZmZlcnNbc3RyYXRlZ3ktPmN1cnJlbnRdID0gSW52YWxpZEJ1ZmZlcjsKLQot CXJldHVybiB0cnVlOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9mcmVl c3BhY2UvZnJlZXNwYWNlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZyZWVzcGFjZS9mcmVl c3BhY2UuYwppbmRleCAwMDZlZGFiLi4yOWNiMmQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2ZyZWVzcGFjZS9mcmVlc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2ZyZWVzcGFjZS9mcmVlc3BhY2UuYwpAQCAtNjAzLDcgKzYwMyw3IEBAIGZzbV9yZWFk YnVmKFJlbGF0aW9uIHJlbCwgRlNNQWRkcmVzcyBhZGRyLCBib29sIGV4dGVuZCkKIAkJCXJl dHVybiBJbnZhbGlkQnVmZmVyOwogCX0KIAllbHNlCi0JCWJ1ZiA9IFJlYWRCdWZmZXJFeHRl bmRlZChyZWwsIEZTTV9GT1JLTlVNLCBibGtubywgUkJNX1pFUk9fT05fRVJST1IsIE5VTEwp OworCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBGU01fRk9SS05VTSwgYmxrbm8s IFJCTV9aRVJPX09OX0VSUk9SKTsKIAogCS8qCiAJICogSW5pdGlhbGl6aW5nIHRoZSBwYWdl IHdoZW4gbmVlZGVkIGlzIHRyaWNraWVyIHRoYW4gaXQgbG9va3MsIGJlY2F1c2Ugb2YKQEAg LTYzOCw3ICs2MzgsNyBAQCBmc21fcmVhZGJ1ZihSZWxhdGlvbiByZWwsIEZTTUFkZHJlc3Mg YWRkciwgYm9vbCBleHRlbmQpCiBzdGF0aWMgQnVmZmVyCiBmc21fZXh0ZW5kKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgZnNtX25ibG9ja3MpCiB7Ci0JcmV0dXJuIEV4dGVuZEJ1ZmZl cmVkUmVsVG8oQk1SX1JFTChyZWwpLCBGU01fRk9SS05VTSwgTlVMTCwKKwlyZXR1cm4gRXh0 ZW5kQnVmZmVyZWRSZWxUbyhCTVJfUkVMKHJlbCksIEZTTV9GT1JLTlVNLAogCQkJCQkJCSAg IEVCX0NSRUFURV9GT1JLX0lGX05FRURFRCB8CiAJCQkJCQkJICAgRUJfQ0xFQVJfU0laRV9D QUNIRSwKIAkJCQkJCQkgICBmc21fbmJsb2NrcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc21nci9tZC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMKaW5k ZXggOWY5NmQ5Yy4uMjhlMjU4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9z bWdyL21kLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMKQEAgLTE1NDAs MTUgKzE1NDAsOCBAQCByZWdpc3Rlcl9kaXJ0eV9zZWdtZW50KFNNZ3JSZWxhdGlvbiByZWxu LCBGb3JrTnVtYmVyIGZvcmtudW0sIE1kZmRWZWMgKnNlZykKIAkJCQkJCQlGaWxlUGF0aE5h bWUoc2VnLT5tZGZkX3ZmZCkpKSk7CiAKIAkJLyoKLQkJICogV2UgaGF2ZSBubyB3YXkgb2Yg a25vd2luZyBpZiB0aGUgY3VycmVudCBJT0NvbnRleHQgaXMKLQkJICogSU9DT05URVhUX05P Uk1BTCBvciBJT0NPTlRFWFRfW0JVTEtSRUFELCBCVUxLV1JJVEUsIFZBQ1VVTV0gYXQgdGhp cwotCQkgKiBwb2ludCwgc28gY291bnQgdGhlIGZzeW5jIGFzIGJlaW5nIGluIHRoZSBJT0NP TlRFWFRfTk9STUFMCi0JCSAqIElPQ29udGV4dC4gVGhpcyBpcyBwcm9iYWJseSBva2F5LCBi ZWNhdXNlIHRoZSBudW1iZXIgb2YgYmFja2VuZAotCQkgKiBmc3luY3MgZG9lc24ndCBzYXkg YW55dGhpbmcgYWJvdXQgdGhlIGVmZmljYWN5IG9mIHRoZQotCQkgKiBCdWZmZXJBY2Nlc3NT dHJhdGVneS4gQW5kIGNvdW50aW5nIGJvdGggZnN5bmNzIGRvbmUgaW4KLQkJICogSU9DT05U RVhUX05PUk1BTCBhbmQgSU9DT05URVhUX1tCVUxLUkVBRCwgQlVMS1dSSVRFLCBWQUNVVU1d IHVuZGVyCi0JCSAqIElPQ09OVEVYVF9OT1JNQUwgaXMgbGlrZWx5IGNsZWFyZXIgd2hlbiBp bnZlc3RpZ2F0aW5nIHRoZSBudW1iZXIgb2YKLQkJICogYmFja2VuZCBmc3luY3MuCisJCSAq IENvdW50IHRoZSBmc3luYyBpbiB0aGUgSU9DT05URVhUX05PUk1BTCBJT0NvbnRleHQsIHRo ZSBvbmx5CisJCSAqIElPQ29udGV4dCByZWxhdGlvbnMgYXJlIHJlYWQvd3JpdHRlbiB1bmRl ci4KIAkJICovCiAJCXBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT0JKRUNUX1JFTEFUSU9O LCBJT0NPTlRFWFRfTk9STUFMLAogCQkJCQkJCQlJT09QX0ZTWU5DLCBpb19zdGFydCwgMSwg MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8u YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDRmN2Ez OWEuLjJjZjU3NDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdF9pby5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5j CkBAIC0yNDEsMTYgKzI0MSwxMCBAQCBwZ3N0YXRfZ2V0X2lvX2NvbnRleHRfbmFtZShJT0Nv bnRleHQgaW9fY29udGV4dCkKIHsKIAlzd2l0Y2ggKGlvX2NvbnRleHQpCiAJewotCQljYXNl IElPQ09OVEVYVF9CVUxLUkVBRDoKLQkJCXJldHVybiAiYnVsa3JlYWQiOwotCQljYXNlIElP Q09OVEVYVF9CVUxLV1JJVEU6Ci0JCQlyZXR1cm4gImJ1bGt3cml0ZSI7CiAJCWNhc2UgSU9D T05URVhUX0lOSVQ6CiAJCQlyZXR1cm4gImluaXQiOwogCQljYXNlIElPQ09OVEVYVF9OT1JN QUw6CiAJCQlyZXR1cm4gIm5vcm1hbCI7Ci0JCWNhc2UgSU9DT05URVhUX1ZBQ1VVTToKLQkJ CXJldHVybiAidmFjdXVtIjsKIAl9CiAKIAllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIElP Q29udGV4dCB2YWx1ZTogJWQiLCBpb19jb250ZXh0KTsKQEAgLTQ1MSw0NSArNDQ1LDMyIEBA IHBnc3RhdF90cmFja3NfaW9fb2JqZWN0KEJhY2tlbmRUeXBlIGJrdHlwZSwgSU9PYmplY3Qg aW9fb2JqZWN0LAogCSAqIElPQ29udGV4dHMsIGFuZCwgd2hpbGUgaXQgbWF5IG5vdCBiZSBp bmhlcmVudGx5IGluY29ycmVjdCBmb3IgdGhlbSB0bwogCSAqIGRvIHNvLCBleGNsdWRpbmcg dGhvc2Ugcm93cyBmcm9tIHRoZSB2aWV3IG1ha2VzIHRoZSB2aWV3IGVhc2llciB0byB1c2Uu CiAJICovCi0JaWYgKChia3R5cGUgPT0gQl9DSEVDS1BPSU5URVIgfHwgYmt0eXBlID09IEJf QkdfV1JJVEVSKSAmJgotCQkoaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfQlVMS1JFQUQgfHwK LQkJIGlvX2NvbnRleHQgPT0gSU9DT05URVhUX0JVTEtXUklURSB8fAotCQkgaW9fY29udGV4 dCA9PSBJT0NPTlRFWFRfVkFDVVVNKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKGJrdHlw ZSA9PSBCX0FVVE9WQUNfTEFVTkNIRVIgJiYgaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfVkFD VVVNKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlpZiAoKGJrdHlwZSA9PSBCX0FVVE9WQUNfV09S S0VSIHx8IGJrdHlwZSA9PSBCX0FVVE9WQUNfTEFVTkNIRVIpICYmCi0JCWlvX2NvbnRleHQg PT0gSU9DT05URVhUX0JVTEtXUklURSkKLQkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBU aGUgZGF0YSBjaGVja3N1bXMgbGF1bmNoZXIgc2NhbnMgY2F0YWxvZ3MgYW5kIGVtaXRzIFdB TCByZWNvcmRzIGZvcgotCSAqIGNoZWNrc3VtIHN0YXRlIGNoYW5nZXMuIENhdGFsb2cgc2Nh bnMgY2FuIHVzZSBhIGJ1bGtyZWFkIHN0cmF0ZWd5LgorCSAqIGNoZWNrc3VtIHN0YXRlIGNo YW5nZXMuICBXaXRoIHRoZSBhY2Nlc3Mtc3RyYXRlZ3kgcmluZ3MgcmVtb3ZlZCwgaXRzCisJ ICogY2F0YWxvZyBzY2FucyBhcmUgdHJhY2tlZCB1bmRlciB0aGUgbm9ybWFsIGNvbnRleHQu CiAJICovCiAJaWYgKGJrdHlwZSA9PSBCX0RBVEFDSEVDS1NVTVNXT1JLRVJfTEFVTkNIRVIp CiAJewogCQlpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1dBTCB8fAogCQkJKGlvX29iamVj dCA9PSBJT09CSkVDVF9SRUxBVElPTiAmJgotCQkJIChpb19jb250ZXh0ID09IElPQ09OVEVY VF9CVUxLUkVBRCB8fAotCQkJICBpb19jb250ZXh0ID09IElPQ09OVEVYVF9OT1JNQUwpKSkK KwkJCSBpb19jb250ZXh0ID09IElPQ09OVEVYVF9OT1JNQUwpKQogCQkJcmV0dXJuIHRydWU7 CiAKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCi0JICogVGhlIHdvcmtlciBhbHNvIHNj YW5zIGNhdGFsb2dzLCB0aGVuIHByb2Nlc3NlcyByZWxhdGlvbnMgdXNpbmcgYSB2YWN1dW0K LQkgKiBhY2Nlc3Mgc3RyYXRlZ3kuIENhdGFsb2cgc2NhbnMgY2FuIHVzZSBhIGJ1bGtyZWFk IHN0cmF0ZWd5LgorCSAqIFRoZSB3b3JrZXIgYWxzbyBzY2FucyBjYXRhbG9ncywgdGhlbiBw cm9jZXNzZXMgcmVsYXRpb25zLiAgV2l0aCB0aGUKKwkgKiBhY2Nlc3Mtc3RyYXRlZ3kgcmlu Z3MgcmVtb3ZlZCwgYm90aCBhcmUgdHJhY2tlZCB1bmRlciB0aGUgbm9ybWFsCisJICogY29u dGV4dC4KIAkgKi8KIAlpZiAoYmt0eXBlID09IEJfREFUQUNIRUNLU1VNU1dPUktFUl9XT1JL RVIpCiAJewogCQlpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1dBTCB8fAogCQkJKGlvX29i amVjdCA9PSBJT09CSkVDVF9SRUxBVElPTiAmJgotCQkJIChpb19jb250ZXh0ID09IElPQ09O VEVYVF9CVUxLUkVBRCB8fAotCQkJICBpb19jb250ZXh0ID09IElPQ09OVEVYVF9OT1JNQUwg fHwKLQkJCSAgaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfVkFDVVVNKSkpCisJCQkgaW9fY29u dGV4dCA9PSBJT0NPTlRFWFRfTk9STUFMKSkKIAkJCXJldHVybiB0cnVlOwogCiAJCXJldHVy biBmYWxzZTsKQEAgLTUxMCw4ICs0OTEsNiBAQCBib29sCiBwZ3N0YXRfdHJhY2tzX2lvX29w KEJhY2tlbmRUeXBlIGJrdHlwZSwgSU9PYmplY3QgaW9fb2JqZWN0LAogCQkJCQlJT0NvbnRl eHQgaW9fY29udGV4dCwgSU9PcCBpb19vcCkKIHsKLQlib29sCQlzdHJhdGVneV9pb19jb250 ZXh0OwotCiAJLyogaWYgKGlvX2NvbnRleHQsIGlvX29iamVjdCkgd2lsbCBuZXZlciBjb2xs ZWN0IHN0YXRzLCB3ZSdyZSBkb25lICovCiAJaWYgKCFwZ3N0YXRfdHJhY2tzX2lvX29iamVj dChia3R5cGUsIGlvX29iamVjdCwgaW9fY29udGV4dCkpCiAJCXJldHVybiBmYWxzZTsKQEAg LTU1NCwxNyArNTMzLDEzIEBAIHBnc3RhdF90cmFja3NfaW9fb3AoQmFja2VuZFR5cGUgYmt0 eXBlLCBJT09iamVjdCBpb19vYmplY3QsCiAJLyoKIAkgKiBTb21lIElPT3BzIGFyZSBub3Qg dmFsaWQgaW4gY2VydGFpbiBJT0NvbnRleHRzIGFuZCBzb21lIElPT3BzIGFyZSBvbmx5CiAJ ICogdmFsaWQgaW4gY2VydGFpbiBjb250ZXh0cy4KKwkgKgorCSAqIElPT1BfUkVVU0Ugd2Fz IG9ubHkgcmVsZXZhbnQgd2hlbiBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHdhcyBpbiB1c2Uu CisJICogQnVmZmVyIGFjY2VzcyBzdHJhdGVnaWVzIChyaW5nIGJ1ZmZlcnMpIGhhdmUgYmVl biByZW1vdmVkIC0tIHNjYW4KKwkgKiByZXNpc3RhbmNlIGlzIG5vdyBpbnRyaW5zaWMgdG8g dGhlIGNvb2xpbmctc3RhZ2UgY2xvY2sgc3dlZXAgLS0gc28KKwkgKiBJT09QX1JFVVNFIG5l dmVyIG9jY3Vycy4KIAkgKi8KLQlpZiAoaW9fY29udGV4dCA9PSBJT0NPTlRFWFRfQlVMS1JF QUQgJiYgaW9fb3AgPT0gSU9PUF9FWFRFTkQpCi0JCXJldHVybiBmYWxzZTsKLQotCXN0cmF0 ZWd5X2lvX2NvbnRleHQgPSBpb19jb250ZXh0ID09IElPQ09OVEVYVF9CVUxLUkVBRCB8fAot CQlpb19jb250ZXh0ID09IElPQ09OVEVYVF9CVUxLV1JJVEUgfHwgaW9fY29udGV4dCA9PSBJ T0NPTlRFWFRfVkFDVVVNOwotCi0JLyoKLQkgKiBJT09QX1JFVVNFIGlzIG9ubHkgcmVsZXZh bnQgd2hlbiBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGlzIGluIHVzZS4KLQkgKi8KLQlpZiAo IXN0cmF0ZWd5X2lvX2NvbnRleHQgJiYgaW9fb3AgPT0gSU9PUF9SRVVTRSkKKwlpZiAoaW9f b3AgPT0gSU9PUF9SRVVTRSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKQEAgLTU3OCwxNCAr NTUzLDUgQEAgcGdzdGF0X3RyYWNrc19pb19vcChCYWNrZW5kVHlwZSBia3R5cGUsIElPT2Jq ZWN0IGlvX29iamVjdCwKIAkJIShpb19vcCA9PSBJT09QX1dSSVRFIHx8IGlvX29wID09IElP T1BfUkVBRCB8fCBpb19vcCA9PSBJT09QX0ZTWU5DKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J LyoKLQkgKiBJT09QX0ZTWU5DIElPT3BzIGRvbmUgYnkgYSBiYWNrZW5kIHVzaW5nIGEgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYXJlCi0JICogY291bnRlZCBpbiB0aGUgSU9DT05URVhUX05P Uk1BTCBJT0NvbnRleHQuIFNlZSBjb21tZW50IGluCi0JICogcmVnaXN0ZXJfZGlydHlfc2Vn bWVudCgpIGZvciBtb3JlIGRldGFpbHMuCi0JICovCi0JaWYgKHN0cmF0ZWd5X2lvX2NvbnRl eHQgJiYgaW9fb3AgPT0gSU9PUF9GU1lOQykKLQkJcmV0dXJuIGZhbHNlOwotCi0KIAlyZXR1 cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFs cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggYmJkMjhkMS4u NTU1YzA0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTE0OSw3ICsxNDks NiBAQCBpbnQJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMDsKIGludAkJ CU1heEJhY2tlbmRzID0gMDsKIAogLyogR1VDIHBhcmFtZXRlcnMgZm9yIHZhY3V1bSAqLwot aW50CQkJVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCA9IDIwNDg7CiAKIGludAkJCVZhY3V1bUNv c3RQYWdlSGl0ID0gMTsKIGludAkJCVZhY3V1bUNvc3RQYWdlTWlzcyA9IDI7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IGQ0MjFjZGIuLmIx ZWE4MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRl cnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0 CkBAIC0zMzI2LDE2ICszMzI2LDYgQEAKICAgYm9vdF92YWwgPT4gJ0RFRkFVTFRfVVBEQVRF X1BST0NFU1NfVElUTEUnLAogfSwKIAoteyBuYW1lID0+ICd2YWN1dW1fYnVmZmVyX3VzYWdl X2xpbWl0JywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91 cCA9PiAnUkVTT1VSQ0VTX01FTScsCi0gIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIGJ1ZmZl ciBwb29sIHNpemUgZm9yIFZBQ1VVTSwgQU5BTFlaRSwgYW5kIGF1dG92YWN1dW0uJywKLSAg ZmxhZ3MgPT4gJ0dVQ19VTklUX0tCJywKLSAgdmFyaWFibGUgPT4gJ1ZhY3V1bUJ1ZmZlclVz YWdlTGltaXQnLAotICBib290X3ZhbCA9PiAnMjA0OCcsCi0gIG1pbiA9PiAnMCcsCi0gIG1h eCA9PiAnTUFYX0JBU19WQUNfUklOR19TSVpFX0tCJywKLSAgY2hlY2tfaG9vayA9PiAnY2hl Y2tfdmFjdXVtX2J1ZmZlcl91c2FnZV9saW1pdCcsCi19LAotCiB7IG5hbWUgPT4gJ3ZhY3V1 bV9jb3N0X2RlbGF5JywgdHlwZSA9PiAncmVhbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VU JywgZ3JvdXAgPT4gJ1ZBQ1VVTV9DT1NUX0RFTEFZJywKICAgc2hvcnRfZGVzYyA9PiAnVmFj dXVtIGNvc3QgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLicsCiAgIGZsYWdzID0+ICdHVUNfVU5J VF9NUycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggNzk1ODY1My4uY2IxZWI4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMTY0LDkgKzE2NCw2IEBACiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIG1tYXAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVxdWlyZXMg cmVzdGFydCkKICNtaW5fZHluYW1pY19zaGFyZWRfbWVtb3J5ID0gME1CICAgICAgICAjIChj aGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKLSN2YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0ID0g Mk1CICAgICAgICAjIHNpemUgb2YgdmFjdXVtIGFuZCBhbmFseXplIGJ1ZmZlciBhY2Nlc3Mg c3RyYXRlZ3kgcmluZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIDAgdG8gZGlzYWJsZSB2YWN1dW0gYnVmZmVyIGFjY2VzcyBzdHJhdGVneTsKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJhbmdlIDEyOGtCIHRvIDE2 R0IKIAogIyBTTFJVIGJ1ZmZlcnMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI2NvbW1p dF90aW1lc3RhbXBfYnVmZmVycyA9IDAgICAgICAgICAgICMgbWVtb3J5IGZvciBwZ19jb21t aXRfdHMgKDAgPSBhdXRvKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWRi LmMgYi9zcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYwppbmRleCBmODE1OGNhLi5mNzhlNTdm IDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYworKysgYi9zcmMvYmlu L3NjcmlwdHMvdmFjdXVtZGIuYwpAQCAtNTcsNyArNTcsNiBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCXsibm8tdHJ1bmNhdGUiLCBub19hcmd1bWVudCwgTlVMTCwgMTB9 LAogCQl7Im5vLXByb2Nlc3MtdG9hc3QiLCBub19hcmd1bWVudCwgTlVMTCwgMTF9LAogCQl7 Im5vLXByb2Nlc3MtbWFpbiIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxMn0sCi0JCXsiYnVmZmVy LXVzYWdlLWxpbWl0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDEzfSwKIAkJeyJtaXNz aW5nLXN0YXRzLW9ubHkiLCBub19hcmd1bWVudCwgTlVMTCwgMTR9LAogCQl7ImRyeS1ydW4i LCBub19hcmd1bWVudCwgTlVMTCwgMTV9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KQEAgLTIw Miw5ICsyMDEsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlIDEy OgogCQkJCXZhY29wdHMucHJvY2Vzc19tYWluID0gZmFsc2U7CiAJCQkJYnJlYWs7Ci0JCQlj YXNlIDEzOgotCQkJCXZhY29wdHMuYnVmZmVyX3VzYWdlX2xpbWl0ID0gZXNjYXBlX3F1b3Rl cyhvcHRhcmcpOwotCQkJCWJyZWFrOwogCQkJY2FzZSAxNDoKIAkJCQl2YWNvcHRzLm1pc3Np bmdfc3RhdHNfb25seSA9IHRydWU7CiAJCQkJYnJlYWs7CkBAIC0yOTAsMTQgKzI4Niw2IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJcGdfZmF0YWwoImNhbm5vdCB1c2Ug dGhlIFwiJXNcIiBvcHRpb24gd2l0aCB0aGUgXCIlc1wiIG9wdGlvbiIsCiAJCQkJICJuby1p bmRleC1jbGVhbnVwIiwgImZvcmNlLWluZGV4LWNsZWFudXAiKTsKIAotCS8qCi0JICogYnVm ZmVyLXVzYWdlLWxpbWl0IGlzIG5vdCBhbGxvd2VkIHdpdGggVkFDVVVNIEZVTEwgdW5sZXNz IEFOQUxZWkUgaXMKLQkgKiBpbmNsdWRlZCB0b28uCi0JICovCi0JaWYgKHZhY29wdHMuYnVm ZmVyX3VzYWdlX2xpbWl0ICYmIHZhY29wdHMuZnVsbCAmJiAhdmFjb3B0cy5hbmRfYW5hbHl6 ZSkKLQkJcGdfZmF0YWwoImNhbm5vdCB1c2UgdGhlIFwiJXNcIiBvcHRpb24gd2l0aCB0aGUg XCIlc1wiIG9wdGlvbiIsCi0JCQkJICJidWZmZXItdXNhZ2UtbGltaXQiLCAiZnVsbCIpOwot CiAJLyoKIAkgKiBQcm9oaWJpdCAtLW1pc3Npbmctc3RhdHMtb25seSB3aXRob3V0IC0tYW5h bHl6ZS1vbmx5IG9yCiAJICogLS1hbmFseXplLWluLXN0YWdlcy4KQEAgLTM1Miw3ICszNDAs NiBAQCBoZWxwKGNvbnN0IGNoYXIgKnByb2duYW1lKQogCXByaW50ZihfKCIgICVzIFtPUFRJ T05dLi4uIFtEQk5BTUVdXG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJcbk9wdGlvbnM6 XG4iKSk7CiAJcHJpbnRmKF8oIiAgLWEsIC0tYWxsICAgICAgICAgICAgICAgICAgICAgICB2 YWN1dW0gYWxsIGRhdGFiYXNlc1xuIikpOwotCXByaW50ZihfKCIgICAgICAtLWJ1ZmZlci11 c2FnZS1saW1pdD1TSVpFICAgc2l6ZSBvZiByaW5nIGJ1ZmZlciB1c2VkIGZvciB2YWN1dW1c biIpKTsKIAlwcmludGYoXygiICAtZCwgLS1kYm5hbWU9REJOQU1FICAgICAgICAgICAgIGRh dGFiYXNlIHRvIHZhY3V1bVxuIikpOwogCXByaW50ZihfKCIgICAgICAtLWRpc2FibGUtcGFn ZS1za2lwcGluZyAgICAgZGlzYWJsZSBhbGwgcGFnZS1za2lwcGluZyBiZWhhdmlvclxuIikp OwogCXByaW50ZihfKCIgICAgICAtLWRyeS1ydW4gICAgICAgICAgICAgICAgICAgc2hvdyB0 aGUgY29tbWFuZHMgdGhhdCB3b3VsZCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcbiIpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuYyBiL3NyYy9iaW4vc2NyaXB0 cy92YWN1dW1pbmcuYwppbmRleCA4NTVhNTc1Li4wNzhhM2JiIDEwMDY0NAotLS0gYS9zcmMv YmluL3NjcmlwdHMvdmFjdXVtaW5nLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWlu Zy5jCkBAIC0yNjQsMTMgKzI2NCw2IEBAIHZhY3V1bV9vbmVfZGF0YWJhc2UoQ29ublBhcmFt cyAqY3BhcmFtcywKIAkJCQkgIi0tcGFyYWxsZWwiLCAiMTMiKTsKIAl9CiAKLQlpZiAodmFj b3B0cy0+YnVmZmVyX3VzYWdlX2xpbWl0ICYmIFBRc2VydmVyVmVyc2lvbihjb25uKSA8IDE2 MDAwMCkKLQl7Ci0JCVBRZmluaXNoKGNvbm4pOwotCQlwZ19mYXRhbCgiY2Fubm90IHVzZSB0 aGUgXCIlc1wiIG9wdGlvbiBvbiBzZXJ2ZXIgdmVyc2lvbnMgb2xkZXIgdGhhbiBQb3N0Z3Jl U1FMICVzIiwKLQkJCQkgIi0tYnVmZmVyLXVzYWdlLWxpbWl0IiwgIjE2Iik7Ci0JfQotCiAJ aWYgKHZhY29wdHMtPm1pc3Npbmdfc3RhdHNfb25seSAmJiBQUXNlcnZlclZlcnNpb24oY29u bikgPCAxNTAwMDApCiAJewogCQlQUWZpbmlzaChjb25uKTsKQEAgLTg2NSwxMyArODU4LDYg QEAgcHJlcGFyZV92YWN1dW1fY29tbWFuZChQR2Nvbm4gKmNvbm4sIFBRRXhwQnVmZmVyIHNx bCwKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihzcWwsICIlc1ZFUkJPU0UiLCBzZXApOwogCQkJ CXNlcCA9IGNvbW1hOwogCQkJfQotCQkJaWYgKHZhY29wdHMtPmJ1ZmZlcl91c2FnZV9saW1p dCkKLQkJCXsKLQkJCQlBc3NlcnQoc2VydmVyVmVyc2lvbiA+PSAxNjAwMDApOwotCQkJCWFw cGVuZFBRRXhwQnVmZmVyKHNxbCwgIiVzQlVGRkVSX1VTQUdFX0xJTUlUICclcyciLCBzZXAs Ci0JCQkJCQkJCSAgdmFjb3B0cy0+YnVmZmVyX3VzYWdlX2xpbWl0KTsKLQkJCQlzZXAgPSBj b21tYTsKLQkJCX0KIAkJCWlmIChzZXAgIT0gcGFyZW4pCiAJCQkJYXBwZW5kUFFFeHBCdWZm ZXJDaGFyKHNxbCwgJyknKTsKIAkJfQpAQCAtOTc0LDEzICs5NjAsNiBAQCBwcmVwYXJlX3Zh Y3V1bV9jb21tYW5kKFBHY29ubiAqY29ubiwgUFFFeHBCdWZmZXIgc3FsLAogCQkJCQkJCQkg IHZhY29wdHMtPnBhcmFsbGVsX3dvcmtlcnMpOwogCQkJCXNlcCA9IGNvbW1hOwogCQkJfQot CQkJaWYgKHZhY29wdHMtPmJ1ZmZlcl91c2FnZV9saW1pdCkKLQkJCXsKLQkJCQlBc3NlcnQo c2VydmVyVmVyc2lvbiA+PSAxNjAwMDApOwotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHNxbCwg IiVzQlVGRkVSX1VTQUdFX0xJTUlUICclcyciLCBzZXAsCi0JCQkJCQkJCSAgdmFjb3B0cy0+ YnVmZmVyX3VzYWdlX2xpbWl0KTsKLQkJCQlzZXAgPSBjb21tYTsKLQkJCX0KIAkJCWlmIChz ZXAgIT0gcGFyZW4pCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHNxbCwgJyknKTsKIAkJ fQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5oIGIvc3JjL2Jpbi9z Y3JpcHRzL3ZhY3V1bWluZy5oCmluZGV4IDVhNDkxZGIuLjgzYTI0NjkgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuaAorKysgYi9zcmMvYmluL3NjcmlwdHMvdmFj dXVtaW5nLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgdmFjdXVtaW5nT3B0 aW9ucwogCWJvb2wJCXByb2Nlc3NfbWFpbjsKIAlib29sCQlwcm9jZXNzX3RvYXN0OwogCWJv b2wJCXNraXBfZGF0YWJhc2Vfc3RhdHM7Ci0JY2hhcgkgICAqYnVmZmVyX3VzYWdlX2xpbWl0 OwogCWJvb2wJCW1pc3Npbmdfc3RhdHNfb25seTsKIAlib29sCQllY2hvOwogCWJvb2wJCXF1 aWV0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA2OGJmZTQwLi5iYzg3ZjZmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaApAQCAtNTgsNyArNTgsNiBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUlu Zm8KIAlib29sCQllc3RpbWF0ZWRfY291bnQ7CS8qIG51bV9oZWFwX3R1cGxlcyBpcyBhbiBl c3RpbWF0ZSAqLwogCWludAkJCW1lc3NhZ2VfbGV2ZWw7CS8qIGVyZXBvcnQgbGV2ZWwgZm9y IHByb2dyZXNzIG1lc3NhZ2VzICovCiAJZG91YmxlCQludW1faGVhcF90dXBsZXM7CS8qIHR1 cGxlcyByZW1haW5pbmcgaW4gaGVhcCAqLwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5OwkvKiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCiB9IEluZGV4VmFjdXVtSW5m bzsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGFzaC5oCmluZGV4IGE4NzAyZjAuLjdjOTI2OGYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hhc2guaApAQCAtNDA1LDEyICs0MDUsMTEgQEAgZXh0ZXJuIHZvaWQgX2hhc2hfcGdhZGRt dWx0aXR1cChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVwbGUgKml0dXBzLAog ZXh0ZXJuIEJ1ZmZlciBfaGFzaF9hZGRvdmZscGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBt ZXRhYnVmLCBCdWZmZXIgYnVmLCBib29sIHJldGFpbl9waW4pOwogZXh0ZXJuIEJsb2NrTnVt YmVyIF9oYXNoX2ZyZWVvdmZscGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWNrZXRidWYs IEJ1ZmZlciBvdmZsYnVmLAogCQkJCQkJCQkJICBCdWZmZXIgd2J1ZiwgSW5kZXhUdXBsZSAq aXR1cHMsIE9mZnNldE51bWJlciAqaXR1cF9vZmZzZXRzLAotCQkJCQkJCQkJICBTaXplICp0 dXBzX3NpemUsIHVpbnQxNiBuaXR1cHMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVn eSk7CisJCQkJCQkJCQkgIFNpemUgKnR1cHNfc2l6ZSwgdWludDE2IG5pdHVwcyk7CiBleHRl cm4gdm9pZCBfaGFzaF9pbml0Yml0bWFwYnVmZmVyKEJ1ZmZlciBidWYsIHVpbnQxNiBibXNp emUsIGJvb2wgaW5pdHBhZ2UpOwogZXh0ZXJuIHZvaWQgX2hhc2hfc3F1ZWV6ZWJ1Y2tldChS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCUJ1Y2tldCBidWNrZXQsIEJsb2NrTnVtYmVyIGJ1Y2tl dF9ibGtubywKLQkJCQkJCQkJQnVmZmVyIGJ1Y2tldF9idWYsCi0JCQkJCQkJCUJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJCUJ1ZmZlciBidWNrZXRfYnVmKTsK IGV4dGVybiB1aW50MzIgX2hhc2hfb3ZmbGJsa25vX3RvX2JpdG5vKEhhc2hNZXRhUGFnZSBt ZXRhcCwgQmxvY2tOdW1iZXIgb3ZmbGJsa25vKTsKIAogLyogaGFzaHBhZ2UuYyAqLwpAQCAt NDI4LDkgKzQyNyw2IEBAIGV4dGVybiB2b2lkIF9oYXNoX2luaXRidWYoQnVmZmVyIGJ1Ziwg dWludDMyIG1heF9idWNrZXQsIHVpbnQzMiBudW1fYnVja2V0LAogCQkJCQkJICB1aW50MzIg ZmxhZywgYm9vbCBpbml0cGFnZSk7CiBleHRlcm4gQnVmZmVyIF9oYXNoX2dldG5ld2J1ZihS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCSAgRm9ya051bWJlciBm b3JrTnVtKTsKLWV4dGVybiBCdWZmZXIgX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRlZ3koUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkJCQkgaW50IGFjY2Vzcywg aW50IGZsYWdzLAotCQkJCQkJCQkJCSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kp OwogZXh0ZXJuIHZvaWQgX2hhc2hfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7 CiBleHRlcm4gdm9pZCBfaGFzaF9kcm9wYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7 CiBleHRlcm4gdm9pZCBfaGFzaF9kcm9wc2NhbmJ1ZihSZWxhdGlvbiByZWwsIEhhc2hTY2Fu T3BhcXVlIHNvKTsKQEAgLTQ4MSw3ICs0NzcsNiBAQCBleHRlcm4gdm9pZCBfaGFzaF9raWxs X2l0ZW1zKEluZGV4U2NhbkRlc2Mgc2Nhbik7CiAvKiBoYXNoLmMgKi8KIGV4dGVybiB2b2lk IGhhc2hidWNrZXRjbGVhbnVwKFJlbGF0aW9uIHJlbCwgQnVja2V0IGN1cl9idWNrZXQsCiAJ CQkJCQkJICBCdWZmZXIgYnVja2V0X2J1ZiwgQmxvY2tOdW1iZXIgYnVja2V0X2Jsa25vLAot CQkJCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LAogCQkJCQkJCSAgdWlu dDMyIG1heGJ1Y2tldCwgdWludDMyIGhpZ2htYXNrLCB1aW50MzIgbG93bWFzaywKIAkJCQkJ CQkgIGRvdWJsZSAqdHVwbGVzX3JlbW92ZWQsIGRvdWJsZSAqbnVtX2luZGV4X3R1cGxlcywK IAkJCQkJCQkgIGJvb2wgc3BsaXRfY2xlYW51cCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA1 MTc2NDc4Li4wOTY3YjY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC03Miw4ICs3Miw2IEBA IHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAlCdWZmZXIJCXJzX2NidWY7CQkv KiBjdXJyZW50IGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgcnNfY2J1 ZiBpcyBub3QgSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAq LwogCi0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgcnNfc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJh dGVneSBmb3IgcmVhZHMgKi8KLQogCUhlYXBUdXBsZURhdGEgcnNfY3R1cDsJCS8qIGN1cnJl bnQgdHVwbGUgaW4gc2NhbiwgaWYgYW55ICovCiAKIAkvKiBGb3Igc2NhbnMgdGhhdCBzdHJl YW0gcmVhZHMgKi8KQEAgLTQ2Niw3ICs0NjQsNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAv KiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVs KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKKwkJCQkJCQljb25zdCBWYWN1dW1QYXJh bXMgKnBhcmFtcyk7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogZXh0ZXJuIGJvb2wg aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJ CQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oaW8uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oaW8uaAppbmRleCA2MGNm YzM3Li42M2JmY2M4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGlvLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hpby5oCkBAIC0yOCw3ICsyOCw2IEBACiAgKi8KIHR5 cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEKIHsKLQlCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneTsJLyogb3VyIEJVTEtXUklURSBzdHJhdGVneSBvYmplY3QgKi8KIAlC dWZmZXIJCWN1cnJlbnRfYnVmOwkvKiBjdXJyZW50IGluc2VydGlvbiB0YXJnZXQgcGFnZSAq LwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGYyYzM2NjkuLjgzYmEwZjMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjg5LDggKzY4OSw3IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlQW1Sb3V0aW5lCiAJICogaW50ZWdyYXRlIHdpdGggYXV0b3ZhY3V1bSdzIHNjaGVk dWxpbmcuCiAJICovCiAJdm9pZAkJKCpyZWxhdGlvbl92YWN1dW0pIChSZWxhdGlvbiByZWws Ci0JCQkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJCQkJCQkJCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJCQljb25zdCBWYWN1dW1QYXJh bXMgKnBhcmFtcyk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gYW5hbHl6ZSBibG9jayBgYmxv Y2tub2Agb2YgYHNjYW5gLiBUaGUgc2NhbiBoYXMgYmVlbiBzdGFydGVkCkBAIC0xNzc0LDEw ICsxNzczLDkgQEAgdGFibGVfcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBP bGRUYWJsZSwgUmVsYXRpb24gTmV3VGFibGUsCiAgKiByb3V0aW5lLCBldmVuIGlmIChmb3Ig QU5BTFlaRSkgaXQgaXMgcGFydCBvZiB0aGUgc2FtZSBWQUNVVU0gY29tbWFuZC4KICAqLwog c3RhdGljIGlubGluZSB2b2lkCi10YWJsZV9yZWxhdGlvbl92YWN1dW0oUmVsYXRpb24gcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJCQkJICBCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kpCit0YWJsZV9yZWxhdGlvbl92YWN1dW0oUmVsYXRpb24gcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKIHsKLQlyZWwtPnJkX3RhYmxlYW0tPnJlbGF0 aW9uX3ZhY3V1bShyZWwsIHBhcmFtcywgYnN0cmF0ZWd5KTsKKwlyZWwtPnJkX3RhYmxlYW0t PnJlbGF0aW9uX3ZhY3V1bShyZWwsIHBhcmFtcyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Zh Y3V1bS5oCmluZGV4IDk1NmQ5Y2UuLjE0YTliNTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o CkBAIC0zNjMsNyArMzYzLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludDY0IHBhcmFsbGVs X3ZhY3V1bV93b3JrZXJfZGVsYXlfbnM7CiAvKiBpbiBjb21tYW5kcy92YWN1dW0uYyAqLwog ZXh0ZXJuIHZvaWQgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQg KnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCk7CiBleHRlcm4gdm9pZCB2YWN1dW0oTGlzdCAq cmVsYXRpb25zLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJCQkgICBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksIE1lbW9yeUNvbnRleHQgdmFjX2NvbnRleHQsCisJ CQkJICAgTWVtb3J5Q29udGV4dCB2YWNfY29udGV4dCwKIAkJCQkgICBib29sIGlzVG9wTGV2 ZWwpOwogZXh0ZXJuIHZvaWQgdmFjX29wZW5faW5kZXhlcyhSZWxhdGlvbiByZWxhdGlvbiwg TE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJIGludCAqbmluZGV4ZXMsIFJlbGF0aW9uICoq SXJlbCk7CkBAIC00MDcsOCArNDA3LDcgQEAgZXh0ZXJuIHZvaWQgVmFjdXVtVXBkYXRlQ29z dHModm9pZCk7CiAvKiBpbiBjb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICovCiBleHRlcm4g UGFyYWxsZWxWYWN1dW1TdGF0ZSAqcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiAqaW5kcmVscywKIAkJCQkJCQkJCQkJCSBpbnQgbmluZGV4ZXMsIGludCBu cmVxdWVzdGVkX3dvcmtlcnMsCi0JCQkJCQkJCQkJCQkgaW50IHZhY193b3JrX21lbSwgaW50 IGVsZXZlbCwKLQkJCQkJCQkJCQkJCSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kp OworCQkJCQkJCQkJCQkJIGludCB2YWNfd29ya19tZW0sIGludCBlbGV2ZWwpOwogZXh0ZXJu IHZvaWQgcGFyYWxsZWxfdmFjdXVtX2VuZChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqKmlzdGF0cyk7CiBleHRlcm4gVGlkU3RvcmUgKnBhcmFs bGVsX3ZhY3V1bV9nZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiAJ CQkJCQkJCQkJCQlWYWNEZWFkSXRlbXNJbmZvICoqZGVhZF9pdGVtc19pbmZvX3ApOwpAQCAt NDI4LDggKzQyNyw3IEBAIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYyk7CiAKIC8qIGluIGNvbW1hbmRzL2FuYWx5emUu YyAqLwogZXh0ZXJuIHZvaWQgYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVs YXRpb24sCi0JCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgTGlzdCAqdmFfY29s cywgYm9vbCBpbl9vdXRlcl94YWN0LAotCQkJCQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0 cmF0ZWd5KTsKKwkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBMaXN0ICp2YV9j b2xzLCBib29sIGluX291dGVyX3hhY3QpOwogZXh0ZXJuIGJvb2wgYXR0cmlidXRlX2lzX2Fu YWx5emFibGUoUmVsYXRpb24gb25lcmVsLCBpbnQgYXR0bnVtLCBGb3JtX3BnX2F0dHJpYnV0 ZSBhdHRyLAogCQkJCQkJCQkJaW50ICpwX2F0dHN0YXR0YXJnZXQpOwogZXh0ZXJuIGJvb2wg c3RkX3R5cGFuYWx5emUoVmFjQXR0clN0YXRzICpzdGF0cyk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDcx NzBhNGIuLmM1ZDU4MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisr KyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0yNzMsMTUgKzI3Myw2IEBAIGV4dGVy biBQR0RMTElNUE9SVCBkb3VibGUgaGFzaF9tZW1fbXVsdGlwbGllcjsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgbWFpbnRlbmFuY2Vfd29ya19tZW07CiBleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzOwogCi0vKgotICogVXBwZXIg YW5kIGxvd2VyIGhhcmQgbGltaXRzIGZvciB0aGUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBy aW5nIHNpemUKLSAqIHNwZWNpZmllZCBieSB0aGUgVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCBH VUMgYW5kIEJVRkZFUl9VU0FHRV9MSU1JVCBvcHRpb24KLSAqIHRvIFZBQ1VVTSBhbmQgQU5B TFlaRS4KLSAqLwotI2RlZmluZSBNSU5fQkFTX1ZBQ19SSU5HX1NJWkVfS0IgMTI4Ci0jZGVm aW5lIE1BWF9CQVNfVkFDX1JJTkdfU0laRV9LQiAoMTYgKiAxMDI0ICogMTAyNCkKLQotZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBWYWN1dW1CdWZmZXJVc2FnZUxpbWl0OwogZXh0ZXJuIFBH RExMSU1QT1JUIGludCBWYWN1dW1Db3N0UGFnZUhpdDsKIGV4dGVybiBQR0RMTElNUE9SVCBp bnQgVmFjdXVtQ29zdFBhZ2VNaXNzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBWYWN1dW1D b3N0UGFnZURpcnR5OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMv aW5jbHVkZS9wZ3N0YXQuaAppbmRleCA1OGE0NDg1Li42OGI0ZTUwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtMjg3 LDE0ICsyODcsMTEgQEAgdHlwZWRlZiBlbnVtIElPT2JqZWN0CiAKIHR5cGVkZWYgZW51bSBJ T0NvbnRleHQKIHsKLQlJT0NPTlRFWFRfQlVMS1JFQUQsCi0JSU9DT05URVhUX0JVTEtXUklU RSwKIAlJT0NPTlRFWFRfSU5JVCwKIAlJT0NPTlRFWFRfTk9STUFMLAotCUlPQ09OVEVYVF9W QUNVVU0sCiB9IElPQ29udGV4dDsKIAotI2RlZmluZSBJT0NPTlRFWFRfTlVNX1RZUEVTIChJ T0NPTlRFWFRfVkFDVVVNICsgMSkKKyNkZWZpbmUgSU9DT05URVhUX05VTV9UWVBFUyAoSU9D T05URVhUX05PUk1BTCArIDEpCiAKIC8qCiAgKiBFbnVtZXJhdGlvbiBvZiBJTyBvcGVyYXRp b25zLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWYuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmLmgKaW5kZXggYjIxNDQ1NS4uZmE5NDJhNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9idWYuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1 Zi5oCkBAIC0zNiwxMSArMzYsNCBAQCB0eXBlZGVmIGludCBCdWZmZXI7CiAgKi8KICNkZWZp bmUgQnVmZmVySXNMb2NhbChidWZmZXIpCSgoYnVmZmVyKSA8IDApCiAKLS8qCi0gKiBCdWZm ZXIgYWNjZXNzIHN0cmF0ZWd5IG9iamVjdHMuCi0gKgotICogQnVmZmVyQWNjZXNzU3RyYXRl Z3lEYXRhIGlzIHByaXZhdGUgdG8gZnJlZWxpc3QuYwotICovCi10eXBlZGVmIHN0cnVjdCBC dWZmZXJBY2Nlc3NTdHJhdGVneURhdGEgKkJ1ZmZlckFjY2Vzc1N0cmF0ZWd5OwotCiAjZW5k aWYJCQkJCQkJLyogQlVGX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv YnVmX2ludGVybmFscy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgK aW5kZXggMTMxZGYxMi4uM2I0NGFkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWZfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJu YWxzLmgKQEAgLTYzMiwxMSArNjMyLDcgQEAgZXh0ZXJuIHZvaWQgVGVybWluYXRlQnVmZmVy SU8oQnVmZmVyRGVzYyAqYnVmLCBib29sIGNsZWFyX2RpcnR5LCB1aW50NjQgc2V0X2ZsYWcK IAogCiAvKiBmcmVlbGlzdC5jICovCi1leHRlcm4gSU9Db250ZXh0IElPQ29udGV4dEZvclN0 cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKLWV4dGVybiBCdWZmZXJE ZXNjICpTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwK LQkJCQkJCQkJCSB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yaW5nKTsKLWV4dGVy biBib29sIFN0cmF0ZWd5UmVqZWN0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5LAotCQkJCQkJCQkgQnVmZmVyRGVzYyAqYnVmLCBib29sIGZyb21fcmluZyk7CitleHRl cm4gQnVmZmVyRGVzYyAqU3RyYXRlZ3lHZXRCdWZmZXIodWludDY0ICpidWZfc3RhdGUpOwog CiBleHRlcm4gaW50CVN0cmF0ZWd5U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2Vz LCB1aW50MzIgKm51bV9idWZfYWxsb2MpOwogZXh0ZXJuIHZvaWQgU3RyYXRlZ3lOb3RpZnlC Z1dyaXRlcihpbnQgYmd3cHJvY25vKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IDY4Mzdi MzUuLjM2MDIzNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgK KysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApAQCAtMjUsMjEgKzI1LDYgQEAK IAogdHlwZWRlZiB2b2lkICpCbG9jazsKIAotLyoKLSAqIFBvc3NpYmxlIGFyZ3VtZW50cyBm b3IgR2V0QWNjZXNzU3RyYXRlZ3koKS4KLSAqCi0gKiBJZiBhZGRpbmcgYSBuZXcgQnVmZmVy QWNjZXNzU3RyYXRlZ3lUeXBlLCBhbHNvIGFkZCBhIG5ldyBJT0NvbnRleHQgc28KLSAqIElP IHN0YXRpc3RpY3MgdXNpbmcgdGhpcyBzdHJhdGVneSBhcmUgdHJhY2tlZC4KLSAqLwotdHlw ZWRlZiBlbnVtIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZQotewotCUJBU19OT1JNQUwsCQkJ CQkvKiBOb3JtYWwgcmFuZG9tIGFjY2VzcyAqLwotCUJBU19CVUxLUkVBRCwJCQkJLyogTGFy Z2UgcmVhZC1vbmx5IHNjYW4gKGhpbnQgYml0IHVwZGF0ZXMgYXJlCi0JCQkJCQkJCSAqIG9r KSAqLwotCUJBU19CVUxLV1JJVEUsCQkJCS8qIExhcmdlIG11bHRpLWJsb2NrIHdyaXRlIChl LmcuIENPUFkgSU4pICovCi0JQkFTX1ZBQ1VVTSwJCQkJCS8qIFZBQ1VVTSAqLwotfSBCdWZm ZXJBY2Nlc3NTdHJhdGVneVR5cGU7Ci0KIC8qIFBvc3NpYmxlIG1vZGVzIGZvciBSZWFkQnVm ZmVyRXh0ZW5kZWQoKSAqLwogdHlwZWRlZiBlbnVtCiB7CkBAIC0xMzUsNyArMTIwLDYgQEAg c3RydWN0IFJlYWRCdWZmZXJzT3BlcmF0aW9uCiAJU01nclJlbGF0aW9uIHNtZ3I7CiAJY2hh cgkJcGVyc2lzdGVuY2U7CiAJRm9ya051bWJlcglmb3JrbnVtOwotCUJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5OwogCiAJLyoKIAkgKiBUaGUgZm9sbG93aW5nIHByaXZhdGUgbWVt YmVycyBhcmUgcHJpdmF0ZSBzdGF0ZSBmb3IgY29tbXVuaWNhdGlvbgpAQCAtMjM1LDExICsy MTksMTAgQEAgZXh0ZXJuIGJvb2wgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBy bG9jYXRvciwgRm9ya051bWJlciBmb3JrTnVtLAogCQkJCQkJCSBCbG9ja051bWJlciBibG9j a051bSwgQnVmZmVyIHJlY2VudF9idWZmZXIpOwogZXh0ZXJuIEJ1ZmZlciBSZWFkQnVmZmVy KFJlbGF0aW9uIHJlbG4sIEJsb2NrTnVtYmVyIGJsb2NrTnVtKTsKIGV4dGVybiBCdWZmZXIg UmVhZEJ1ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwK LQkJCQkJCQkJIEJsb2NrTnVtYmVyIGJsb2NrTnVtLCBSZWFkQnVmZmVyTW9kZSBtb2RlLAot CQkJCQkJCQkgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOworCQkJCQkJCQkgQmxv Y2tOdW1iZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2RlIG1vZGUpOwogZXh0ZXJuIEJ1ZmZl ciBSZWFkQnVmZmVyV2l0aG91dFJlbGNhY2hlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAog CQkJCQkJCQkJCUZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0sCi0J CQkJCQkJCQkJUmVhZEJ1ZmZlck1vZGUgbW9kZSwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksCisJCQkJCQkJCQkJUmVhZEJ1ZmZlck1vZGUgbW9kZSwKIAkJCQkJCQkJCQlib29s IHBlcm1hbmVudCk7CiAKIGV4dGVybiBib29sIFN0YXJ0UmVhZEJ1ZmZlcihSZWFkQnVmZmVy c09wZXJhdGlvbiAqb3BlcmF0aW9uLApAQCAtMjY2LDE4ICsyNDksMTUgQEAgZXh0ZXJuIEJ1 ZmZlciBSZWxlYXNlQW5kUmVhZEJ1ZmZlcihCdWZmZXIgYnVmZmVyLCBSZWxhdGlvbiByZWxh dGlvbiwKIAogZXh0ZXJuIEJ1ZmZlciBFeHRlbmRCdWZmZXJlZFJlbChCdWZmZXJNYW5hZ2Vy UmVsYXRpb24gYm1yLAogCQkJCQkJCQlGb3JrTnVtYmVyIGZvcmtOdW0sCi0JCQkJCQkJCUJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQl1aW50MzIgZmxhZ3MpOwog ZXh0ZXJuIEJsb2NrTnVtYmVyIEV4dGVuZEJ1ZmZlcmVkUmVsQnkoQnVmZmVyTWFuYWdlclJl bGF0aW9uIGJtciwKIAkJCQkJCQkJCSAgIEZvcmtOdW1iZXIgZm9yaywKLQkJCQkJCQkJCSAg IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkJICAgdWludDMyIGZs YWdzLAogCQkJCQkJCQkJICAgdWludDMyIGV4dGVuZF9ieSwKIAkJCQkJCQkJCSAgIEJ1ZmZl ciAqYnVmZmVycywKIAkJCQkJCQkJCSAgIHVpbnQzMiAqZXh0ZW5kZWRfYnkpOwogZXh0ZXJu IEJ1ZmZlciBFeHRlbmRCdWZmZXJlZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIs CiAJCQkJCQkJCSAgRm9ya051bWJlciBmb3JrLAotCQkJCQkJCQkgIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkgIHVpbnQzMiBmbGFncywKIAkJCQkJCQkJICBC bG9ja051bWJlciBleHRlbmRfdG8sCiAJCQkJCQkJCSAgUmVhZEJ1ZmZlck1vZGUgbW9kZSk7 CkBAIC0zNzYsMTQgKzM1Niw2IEBAIGV4dGVybiB2b2lkIEF0UHJvY0V4aXRfTG9jYWxCdWZm ZXJzKHZvaWQpOwogCiAvKiBpbiBmcmVlbGlzdC5jICovCiAKLWV4dGVybiBCdWZmZXJBY2Nl c3NTdHJhdGVneSBHZXRBY2Nlc3NTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUg YnR5cGUpOwotZXh0ZXJuIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IEdldEFjY2Vzc1N0cmF0ZWd5 V2l0aFNpemUoQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlIGJ0eXBlLAotCQkJCQkJCQkJCQkJ CSAgaW50IHJpbmdfc2l6ZV9rYik7Ci1leHRlcm4gaW50CUdldEFjY2Vzc1N0cmF0ZWd5QnVm ZmVyQ291bnQoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOwotZXh0ZXJuIGludAlH ZXRBY2Nlc3NTdHJhdGVneVBpbkxpbWl0KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5 KTsKLQotZXh0ZXJuIHZvaWQgRnJlZUFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IHN0cmF0ZWd5KTsKLQogCiAvKiBpbmxpbmUgZnVuY3Rpb25zICovCiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcmVhZF9zdHJlYW0uaAppbmRleCA0ODk5NWM2Li45ZTVmYmJlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9yZWFkX3N0cmVhbS5oCkBAIC04MywxNyArODMsMTQgQEAgZXh0ZXJuIEJsb2Nr TnVtYmVyIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiKFJlYWRTdHJlYW0gKnN0cmVhbSwK IAkJCQkJCQkJCQkJICB2b2lkICpjYWxsYmFja19wcml2YXRlX2RhdGEsCiAJCQkJCQkJCQkJ CSAgdm9pZCAqcGVyX2J1ZmZlcl9kYXRhKTsKIGV4dGVybiBSZWFkU3RyZWFtICpyZWFkX3N0 cmVhbV9iZWdpbl9yZWxhdGlvbihpbnQgZmxhZ3MsCi0JCQkJCQkJCQkJCSAgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQkJCQkJCSAgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJCQkgIEZvcmtOdW1iZXIgZm9ya251bSwKIAkJCQkJCQkJCQkJICBSZWFkU3RyZWFt QmxvY2tOdW1iZXJDQiBjYWxsYmFjaywKIAkJCQkJCQkJCQkJICB2b2lkICpjYWxsYmFja19w cml2YXRlX2RhdGEsCiAJCQkJCQkJCQkJCSAgc2l6ZV90IHBlcl9idWZmZXJfZGF0YV9zaXpl KTsKIGV4dGVybiBCdWZmZXIgcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoUmVhZFN0cmVhbSAq c3RyZWFtLCB2b2lkICoqcGVyX2J1ZmZlcl9kYXRhKTsKLWV4dGVybiBCbG9ja051bWJlciBy ZWFkX3N0cmVhbV9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwKLQkJCQkJCQkJCQkg IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5ICpzdHJhdGVneSk7CitleHRlcm4gQmxvY2tOdW1iZXIg cmVhZF9zdHJlYW1fbmV4dF9ibG9jayhSZWFkU3RyZWFtICpzdHJlYW0pOwogZXh0ZXJuIFJl YWRTdHJlYW0gKnJlYWRfc3RyZWFtX2JlZ2luX3NtZ3JfcmVsYXRpb24oaW50IGZsYWdzLAot CQkJCQkJCQkJCQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQkJ CQkJCQkgICBTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJCQkJCQkJCSAgIGNoYXIgc21ncl9w ZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCQkJCSAgIEZvcmtOdW1iZXIgZm9ya251bSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvZ3VjX2hvb2tzLmgKaW5kZXggMzA3ZjRmYi4uM2YyODU1OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZ3Vj X2hvb2tzLmgKQEAgLTMxLDggKzMxLDYgQEAgZXh0ZXJuIHZvaWQgYXNzaWduX2FwcGxpY2F0 aW9uX25hbWUoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSk7CiBleHRlcm4gY29u c3QgY2hhciAqc2hvd19hcmNoaXZlX2NvbW1hbmQodm9pZCk7CiBleHRlcm4gYm9vbCBjaGVj a19hdXRvdmFjdXVtX3dvcmtfbWVtKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsCiAJCQkJ CQkJCQkgIEd1Y1NvdXJjZSBzb3VyY2UpOwotZXh0ZXJuIGJvb2wgY2hlY2tfdmFjdXVtX2J1 ZmZlcl91c2FnZV9saW1pdChpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAotCQkJCQkJCQkJ CQlHdWNTb3VyY2Ugc291cmNlKTsKIGV4dGVybiBib29sIGNoZWNrX2JhY2t0cmFjZV9mdW5j dGlvbnMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAogCQkJCQkJCQkJICBHdWNTb3Vy Y2Ugc291cmNlKTsKIGV4dGVybiB2b2lkIGFzc2lnbl9iYWNrdHJhY2VfZnVuY3Rpb25zKGNv bnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fpby5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fp by90ZXN0X2Fpby5jCmluZGV4IDYyNzA3NzUuLjhkN2IyYTcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYworKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYWlvL3Rlc3RfYWlvLmMKQEAgLTE5NCw3ICsxOTQsNiBAQCBncm93X3JlbChQR19G VU5DVElPTl9BUkdTKQogCiAJCUV4dGVuZEJ1ZmZlcmVkUmVsQnkoQk1SX1JFTChyZWwpLAog CQkJCQkJCU1BSU5fRk9SS05VTSwKLQkJCQkJCQlOVUxMLAogCQkJCQkJCTAsCiAJCQkJCQkJ ZXh0ZW5kX2J5X3BhZ2VzLAogCQkJCQkJCXZpY3RpbV9idWZmZXJzLApAQCAtMjMxLDcgKzIz MCw3IEBAIG1vZGlmeV9yZWxfYmxvY2soUEdfRlVOQ1RJT05fQVJHUykKIAlyZWwgPSByZWxh dGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAogCWJ1ZiA9IFJlYWRC dWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJIFJCTV9a RVJPX09OX0VSUk9SLCBOVUxMKTsKKwkJCQkJCQkgUkJNX1pFUk9fT05fRVJST1IpOwogCiAJ TG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKQEAgLTMzMSw3ICsz MzAsNyBAQCBjcmVhdGVfdG95X2J1ZmZlcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vKQogCXVpbnQ2NAkJdW5zZXRfYml0cyA9IDA7CiAKIAkvKiBwbGFjZSBidWZmZXIgaW4g c2hhcmVkIGJ1ZmZlcnMgd2l0aG91dCBlcnJvcmluZyBvdXQgKi8KLQlidWYgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fWkVST19BTkRfTE9D SywgTlVMTCk7CisJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVN LCBibGtubywgUkJNX1pFUk9fQU5EX0xPQ0spOwogCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJf TE9DS19VTkxPQ0spOwogCiAJaWYgKFJlbGF0aW9uVXNlc0xvY2FsQnVmZmVycyhyZWwpKQpA QCAtNzM3LDcgKzczNiw2IEBAIHJlYWRfYnVmZmVycyhQR19GVU5DVElPTl9BUkdTKQogCQlv cGVyYXRpb24tPnJlbCA9IHJlbDsKIAkJb3BlcmF0aW9uLT5zbWdyID0gc21ncjsKIAkJb3Bl cmF0aW9uLT5wZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKLQkJ b3BlcmF0aW9uLT5zdHJhdGVneSA9IE5VTEw7CiAJCW9wZXJhdGlvbi0+Zm9ya251bSA9IE1B SU5fRk9SS05VTTsKIAogCQlpb19yZXFkc1tuaW9zXSA9IFN0YXJ0UmVhZEJ1ZmZlcnMob3Bl cmF0aW9uLApAQCAtODc5LDcgKzg3Nyw2IEBAIHJlYWRfc3RyZWFtX2Zvcl9ibG9ja3MoUEdf RlVOQ1RJT05fQVJHUykKIAlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFy ZUxvY2spOwogCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9T VFJFQU1fRlVMTCwKLQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXJlbCwKIAkJCQkJCQkJ CQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJcmVhZF9zdHJlYW1fZm9yX2Jsb2Nrc19jYiwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKaW5kZXggZTIzMDM1Ni4uYWM0ZmY0 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKQEAgLTE2LDIyICsxNiwx NiBAQCBTSE9XIHRyYWNrX2NvdW50czsgIC0tIG11c3QgYmUgb24KIFNFTEVDVCBiYWNrZW5k X3R5cGUsIG9iamVjdCwgY29udGV4dCBGUk9NIHBnX3N0YXRfaW8KICAgT1JERVIgQlkgYmFj a2VuZF90eXBlIENPTExBVEUgIkMiLCBvYmplY3QgQ09MTEFURSAiQyIsIGNvbnRleHQgQ09M TEFURSAiQyI7CiBiYWNrZW5kX3R5cGV8b2JqZWN0fGNvbnRleHQKLWF1dG92YWN1dW0gbGF1 bmNoZXJ8cmVsYXRpb258YnVsa3JlYWQKIGF1dG92YWN1dW0gbGF1bmNoZXJ8cmVsYXRpb258 aW5pdAogYXV0b3ZhY3V1bSBsYXVuY2hlcnxyZWxhdGlvbnxub3JtYWwKIGF1dG92YWN1dW0g bGF1bmNoZXJ8d2FsfGluaXQKIGF1dG92YWN1dW0gbGF1bmNoZXJ8d2FsfG5vcm1hbAotYXV0 b3ZhY3V1bSB3b3JrZXJ8cmVsYXRpb258YnVsa3JlYWQKIGF1dG92YWN1dW0gd29ya2VyfHJl bGF0aW9ufGluaXQKIGF1dG92YWN1dW0gd29ya2VyfHJlbGF0aW9ufG5vcm1hbAotYXV0b3Zh Y3V1bSB3b3JrZXJ8cmVsYXRpb258dmFjdXVtCiBhdXRvdmFjdXVtIHdvcmtlcnx3YWx8aW5p dAogYXV0b3ZhY3V1bSB3b3JrZXJ8d2FsfG5vcm1hbAotYmFja2dyb3VuZCB3b3JrZXJ8cmVs YXRpb258YnVsa3JlYWQKLWJhY2tncm91bmQgd29ya2VyfHJlbGF0aW9ufGJ1bGt3cml0ZQog YmFja2dyb3VuZCB3b3JrZXJ8cmVsYXRpb258aW5pdAogYmFja2dyb3VuZCB3b3JrZXJ8cmVs YXRpb258bm9ybWFsCi1iYWNrZ3JvdW5kIHdvcmtlcnxyZWxhdGlvbnx2YWN1dW0KIGJhY2tn cm91bmQgd29ya2VyfHRlbXAgcmVsYXRpb258bm9ybWFsCiBiYWNrZ3JvdW5kIHdvcmtlcnx3 YWx8aW5pdAogYmFja2dyb3VuZCB3b3JrZXJ8d2FsfG5vcm1hbApAQCAtNDMsNjAgKzM3LDM5 IEBAIGNoZWNrcG9pbnRlcnxyZWxhdGlvbnxpbml0CiBjaGVja3BvaW50ZXJ8cmVsYXRpb258 bm9ybWFsCiBjaGVja3BvaW50ZXJ8d2FsfGluaXQKIGNoZWNrcG9pbnRlcnx3YWx8bm9ybWFs Ci1jbGllbnQgYmFja2VuZHxyZWxhdGlvbnxidWxrcmVhZAotY2xpZW50IGJhY2tlbmR8cmVs YXRpb258YnVsa3dyaXRlCiBjbGllbnQgYmFja2VuZHxyZWxhdGlvbnxpbml0CiBjbGllbnQg YmFja2VuZHxyZWxhdGlvbnxub3JtYWwKLWNsaWVudCBiYWNrZW5kfHJlbGF0aW9ufHZhY3V1 bQogY2xpZW50IGJhY2tlbmR8dGVtcCByZWxhdGlvbnxub3JtYWwKIGNsaWVudCBiYWNrZW5k fHdhbHxpbml0CiBjbGllbnQgYmFja2VuZHx3YWx8bm9ybWFsCi1kYXRhY2hlY2tzdW1zIGxh dW5jaGVyfHJlbGF0aW9ufGJ1bGtyZWFkCiBkYXRhY2hlY2tzdW1zIGxhdW5jaGVyfHJlbGF0 aW9ufG5vcm1hbAogZGF0YWNoZWNrc3VtcyBsYXVuY2hlcnx3YWx8aW5pdAogZGF0YWNoZWNr c3VtcyBsYXVuY2hlcnx3YWx8bm9ybWFsCi1kYXRhY2hlY2tzdW1zIHdvcmtlcnxyZWxhdGlv bnxidWxrcmVhZAogZGF0YWNoZWNrc3VtcyB3b3JrZXJ8cmVsYXRpb258bm9ybWFsCi1kYXRh Y2hlY2tzdW1zIHdvcmtlcnxyZWxhdGlvbnx2YWN1dW0KIGRhdGFjaGVja3N1bXMgd29ya2Vy fHdhbHxpbml0CiBkYXRhY2hlY2tzdW1zIHdvcmtlcnx3YWx8bm9ybWFsCi1pbyB3b3JrZXJ8 cmVsYXRpb258YnVsa3JlYWQKLWlvIHdvcmtlcnxyZWxhdGlvbnxidWxrd3JpdGUKIGlvIHdv cmtlcnxyZWxhdGlvbnxpbml0CiBpbyB3b3JrZXJ8cmVsYXRpb258bm9ybWFsCi1pbyB3b3Jr ZXJ8cmVsYXRpb258dmFjdXVtCiBpbyB3b3JrZXJ8dGVtcCByZWxhdGlvbnxub3JtYWwKIGlv IHdvcmtlcnx3YWx8aW5pdAogaW8gd29ya2VyfHdhbHxub3JtYWwKLXNsb3RzeW5jIHdvcmtl cnxyZWxhdGlvbnxidWxrcmVhZAotc2xvdHN5bmMgd29ya2VyfHJlbGF0aW9ufGJ1bGt3cml0 ZQogc2xvdHN5bmMgd29ya2VyfHJlbGF0aW9ufGluaXQKIHNsb3RzeW5jIHdvcmtlcnxyZWxh dGlvbnxub3JtYWwKLXNsb3RzeW5jIHdvcmtlcnxyZWxhdGlvbnx2YWN1dW0KIHNsb3RzeW5j IHdvcmtlcnx0ZW1wIHJlbGF0aW9ufG5vcm1hbAogc2xvdHN5bmMgd29ya2VyfHdhbHxpbml0 CiBzbG90c3luYyB3b3JrZXJ8d2FsfG5vcm1hbAotc3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0 aW9ufGJ1bGtyZWFkCi1zdGFuZGFsb25lIGJhY2tlbmR8cmVsYXRpb258YnVsa3dyaXRlCiBz dGFuZGFsb25lIGJhY2tlbmR8cmVsYXRpb258aW5pdAogc3RhbmRhbG9uZSBiYWNrZW5kfHJl bGF0aW9ufG5vcm1hbAotc3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0aW9ufHZhY3V1bQogc3Rh bmRhbG9uZSBiYWNrZW5kfHdhbHxpbml0CiBzdGFuZGFsb25lIGJhY2tlbmR8d2FsfG5vcm1h bAotc3RhcnR1cHxyZWxhdGlvbnxidWxrcmVhZAotc3RhcnR1cHxyZWxhdGlvbnxidWxrd3Jp dGUKIHN0YXJ0dXB8cmVsYXRpb258aW5pdAogc3RhcnR1cHxyZWxhdGlvbnxub3JtYWwKLXN0 YXJ0dXB8cmVsYXRpb258dmFjdXVtCiBzdGFydHVwfHdhbHxpbml0CiBzdGFydHVwfHdhbHxu b3JtYWwKIHdhbHJlY2VpdmVyfHdhbHxpbml0CiB3YWxyZWNlaXZlcnx3YWx8bm9ybWFsCi13 YWxzZW5kZXJ8cmVsYXRpb258YnVsa3JlYWQKLXdhbHNlbmRlcnxyZWxhdGlvbnxidWxrd3Jp dGUKIHdhbHNlbmRlcnxyZWxhdGlvbnxpbml0CiB3YWxzZW5kZXJ8cmVsYXRpb258bm9ybWFs Ci13YWxzZW5kZXJ8cmVsYXRpb258dmFjdXVtCiB3YWxzZW5kZXJ8dGVtcCByZWxhdGlvbnxu b3JtYWwKIHdhbHNlbmRlcnx3YWx8aW5pdAogd2Fsc2VuZGVyfHdhbHxub3JtYWwKQEAgLTEw NCw3ICs3Nyw3IEBAIHdhbHN1bW1hcml6ZXJ8d2FsfGluaXQKIHdhbHN1bW1hcml6ZXJ8d2Fs fG5vcm1hbAogd2Fsd3JpdGVyfHdhbHxpbml0CiB3YWx3cml0ZXJ8d2FsfG5vcm1hbAotKDg4 IHJvd3MpCisoNjEgcm93cykKIFxhCiAtLSBMaXN0IG9mIHJlZ2lzdGVyZWQgc3RhdGlzdGlj cyBraW5kcy4KIFNFTEVDVCBpZCwgbmFtZSwgZml4ZWRfYW1vdW50LApAQCAtMTc1MCw4MCAr MTcyMywyMCBAQCBTRUxFQ1QgOmlvX3N1bV9sb2NhbF9uZXdfdGJsc3BjX3dyaXRlcyA+IDpp b19zdW1fbG9jYWxfYWZ0ZXJfd3JpdGVzOwogKDEgcm93KQogCiBSRVNFVCB0ZW1wX2J1ZmZl cnM7Ci0tLSBUZXN0IHRoYXQgcmV1c2Ugb2Ygc3RyYXRlZ3kgYnVmZmVycyBhbmQgcmVhZHMg b2YgYmxvY2tzIGludG8gdGhlc2UgcmV1c2VkCi0tLSBidWZmZXJzIHdoaWxlIFZBQ1VVTWlu ZyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvLiBJZiB0aGVyZSBpcyBzdWZmaWNpZW50Ci0t LSBkZW1hbmQgZm9yIHNoYXJlZCBidWZmZXJzIGZyb20gY29uY3VycmVudCBxdWVyaWVzLCBz b21lIGJ1ZmZlcnMgbWF5IGJlCi0tLSBwaW5uZWQgYnkgb3RoZXIgYmFja2VuZHMgYmVmb3Jl IHRoZXkgY2FuIGJlIHJldXNlZC4gSW4gc3VjaCBjYXNlcywgdGhlCi0tLSBiYWNrZW5kIHdp bGwgZXZpY3QgYSBidWZmZXIgZnJvbSBvdXRzaWRlIHRoZSByaW5nIGFuZCBhZGQgaXQgdG8g dGhlCi0tLSByaW5nLiBUaGlzIGlzIGNvbnNpZGVyZWQgYW4gZXZpY3Rpb24gYW5kIG5vdCBh IHJldXNlLgotLS0gU2V0IHdhbF9za2lwX3RocmVzaG9sZCBzbWFsbGVyIHRoYW4gdGhlIGV4 cGVjdGVkIHNpemUgb2YKLS0tIHRlc3RfaW9fdmFjX3N0cmF0ZWd5IHNvIHRoYXQsIGV2ZW4g aWYgd2FsX2xldmVsIGlzIG1pbmltYWwsIFZBQ1VVTSBGVUxMIHdpbGwKLS0tIGZzeW5jIHRo ZSBuZXdseSByZXdyaXR0ZW4gdGVzdF9pb192YWNfc3RyYXRlZ3kgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIFdBTC4KLS0tIFdyaXRpbmcgaXQgdG8gV0FMIHdpbGwgcmVzdWx0IGluIHRo ZSBuZXdseSB3cml0dGVuIHJlbGF0aW9uIHBhZ2VzIGJlaW5nIGluCi0tLSBzaGFyZWQgYnVm ZmVycyAtLSBwcmV2ZW50aW5nIHVzIGZyb20gdGVzdGluZyBCQVNfVkFDVVVNIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5Ci0tLSByZWFkcy4KLVNFVCB3YWxfc2tpcF90aHJlc2hvbGQgPSAnMSBr Qic7Ci1TRUxFQ1Qgc3VtKHJldXNlcykgQVMgcmV1c2VzLCBzdW0ocmVhZHMpIEFTIHJlYWRz LCBzdW0oZXZpY3Rpb25zKSBBUyBldmljdGlvbnMKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJF IGNvbnRleHQgPSAndmFjdXVtJyBcZ3NldCBpb19zdW1fdmFjX3N0cmF0ZWd5X2JlZm9yZV8K LUNSRUFURSBUQUJMRSB0ZXN0X2lvX3ZhY19zdHJhdGVneShhIGludCwgYiBpbnQpIFdJVEgg KGF1dG92YWN1dW1fZW5hYmxlZCA9ICdmYWxzZScpOwotSU5TRVJUIElOVE8gdGVzdF9pb192 YWNfc3RyYXRlZ3kgU0VMRUNUIGksIGkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDUwMClp OwotLS0gRW5zdXJlIHRoYXQgdGhlIG5leHQgVkFDVVVNIHdpbGwgbmVlZCB0byBwZXJmb3Jt IElPIGJ5IHJld3JpdGluZyB0aGUgdGFibGUKLS0tIGZpcnN0IHdpdGggVkFDVVVNIChGVUxM KS4KLVZBQ1VVTSAoRlVMTCkgdGVzdF9pb192YWNfc3RyYXRlZ3k7Ci0tLSBVc2UgdGhlIG1p bmltdW0gQlVGRkVSX1VTQUdFX0xJTUlUIHRvIGNhdXNlIHJldXNlcyBvciBldmljdGlvbnMg d2l0aCB0aGUKLS0tIHNtYWxsZXN0IHRhYmxlIHBvc3NpYmxlLgotVkFDVVVNIChQQVJBTExF TCAwLCBCVUZGRVJfVVNBR0VfTElNSVQgMTI4KSB0ZXN0X2lvX3ZhY19zdHJhdGVneTsKLVNF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKLSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxF Q1Qgc3VtKHJldXNlcykgQVMgcmV1c2VzLCBzdW0ocmVhZHMpIEFTIHJlYWRzLCBzdW0oZXZp Y3Rpb25zKSBBUyBldmljdGlvbnMKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQg PSAndmFjdXVtJyBcZ3NldCBpb19zdW1fdmFjX3N0cmF0ZWd5X2FmdGVyXwotU0VMRUNUIDpp b19zdW1fdmFjX3N0cmF0ZWd5X2FmdGVyX3JlYWRzID4gOmlvX3N1bV92YWNfc3RyYXRlZ3lf YmVmb3JlX3JlYWRzOwotID9jb2x1bW4/IAotLS0tLS0tLS0tLQotIHQKLSgxIHJvdykKLQot U0VMRUNUICg6aW9fc3VtX3ZhY19zdHJhdGVneV9hZnRlcl9yZXVzZXMgKyA6aW9fc3VtX3Zh Y19zdHJhdGVneV9hZnRlcl9ldmljdGlvbnMpID4KLSAgKDppb19zdW1fdmFjX3N0cmF0ZWd5 X2JlZm9yZV9yZXVzZXMgKyA6aW9fc3VtX3ZhY19zdHJhdGVneV9iZWZvcmVfZXZpY3Rpb25z KTsKLSA/Y29sdW1uPyAKLS0tLS0tLS0tLS0KLSB0Ci0oMSByb3cpCi0KLVJFU0VUIHdhbF9z a2lwX3RocmVzaG9sZDsKLS0tIFRlc3QgdGhhdCBleHRlbmRzIGRvbmUgYnkgYSBDVEFTLCB3 aGljaCB1c2VzIGEgQkFTX0JVTEtXUklURQotLS0gQnVmZmVyQWNjZXNzU3RyYXRlZ3ksIGFy ZSB0cmFja2VkIGluIHBnX3N0YXRfaW8uCi1TRUxFQ1Qgc3VtKGV4dGVuZHMpIEFTIGlvX3N1 bV9idWxrd3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19iZWZvcmUKLSAgRlJPTSBwZ19zdGF0X2lv IFdIRVJFIGNvbnRleHQgPSAnYnVsa3dyaXRlJyBcZ3NldAotQ1JFQVRFIFRBQkxFIHRlc3Rf aW9fYnVsa3dyaXRlX3N0cmF0ZWd5IEFTIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKWk7Ci1TRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Ci0gcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgx IHJvdykKLQotU0VMRUNUIHN1bShleHRlbmRzKSBBUyBpb19zdW1fYnVsa3dyaXRlX3N0cmF0 ZWd5X2V4dGVuZHNfYWZ0ZXIKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAn YnVsa3dyaXRlJyBcZ3NldAotU0VMRUNUIDppb19zdW1fYnVsa3dyaXRlX3N0cmF0ZWd5X2V4 dGVuZHNfYWZ0ZXIgPiA6aW9fc3VtX2J1bGt3cml0ZV9zdHJhdGVneV9leHRlbmRzX2JlZm9y ZTsKLSA/Y29sdW1uPyAKLS0tLS0tLS0tLS0KLSB0Ci0oMSByb3cpCi0KIC0tIFRlc3QgSU8g c3RhdHMgcmVzZXQKKy0tIE5vdGU6IHJldXNlcyBpcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVk IGZyb20gdGhlc2UgdG90YWxzLiAgV2l0aCB0aGUKKy0tIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHJpbmcgYnVmZmVycyByZW1vdmVkLCBJT09QX1JFVVNFIGlzIG5ldmVyIHRyYWNrZWQsIHNv CistLSB0aGUgcmV1c2VzIGNvbHVtbiBpcyBOVUxMIGZvciBldmVyeSByb3c7IHN1bW1pbmcg aXQgd291bGQgbWFrZSB0aGUgd2hvbGUKKy0tIHRvdGFsIE5VTEwuCiBTRUxFQ1QgcGdfc3Rh dF9oYXZlX3N0YXRzKCdpbycsIDAsIDApOwogIHBnX3N0YXRfaGF2ZV9zdGF0cyAKIC0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgdAogKDEgcm93KQogCi1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykg KyBzdW0ocmV1c2VzKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRz KSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIGlvX3N0 YXRzX3ByZV9yZXNldAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMpICsg c3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNr cykgKyBzdW0oaGl0cykgQVMgaW9fc3RhdHNfcHJlX3Jlc2V0CiAgIEZST00gcGdfc3RhdF9p byBcZ3NldAotU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0 ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3 cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBteV9pb19zdGF0c19wcmVfcmVzZXQKK1NFTEVD VCBzdW0oZXZpY3Rpb25zKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJl YWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15 X2lvX3N0YXRzX3ByZV9yZXNldAogICBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaW8ocGdf YmFja2VuZF9waWQoKSkgXGdzZXQKIFNFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnaW8n KTsKICBwZ19zdGF0X3Jlc2V0X3NoYXJlZCAKQEAgLTE4MzEsNyArMTc0NCw3IEBAIFNFTEVD VCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnaW8nKTsKICAKICgxIHJvdykKIAotU0VMRUNUIHN1 bShldmljdGlvbnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNz KSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bSho aXRzKSBBUyBpb19zdGF0c19wb3N0X3Jlc2V0CitTRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBz dW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSAr IHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBpb19zdGF0c19wb3N0X3Jlc2V0CiAg IEZST00gcGdfc3RhdF9pbyBcZ3NldAogU0VMRUNUIDppb19zdGF0c19wb3N0X3Jlc2V0IDwg OmlvX3N0YXRzX3ByZV9yZXNldDsKICA/Y29sdW1uPyAKQEAgLTE4MzksNyArMTc1Miw3IEBA IFNFTEVDVCA6aW9fc3RhdHNfcG9zdF9yZXNldCA8IDppb19zdGF0c19wcmVfcmVzZXQ7CiAg dAogKDEgcm93KQogCi1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1c2VzKSArIHN1 bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsg c3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bvc3RfcmVzZXQK K1NFTEVDVCBzdW0oZXZpY3Rpb25zKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsg c3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMp IEFTIG15X2lvX3N0YXRzX3Bvc3RfcmVzZXQKICAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5k X2lvKHBnX2JhY2tlbmRfcGlkKCkpIFxnc2V0CiAtLSBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgp IGRpZCBub3QgcmVzZXQgYmFja2VuZCBJTyBzdGF0cwogU0VMRUNUIDpteV9pb19zdGF0c19w cmVfcmVzZXQgPD0gOm15X2lvX3N0YXRzX3Bvc3RfcmVzZXQ7CkBAIC0xODU1LDcgKzE3Njgs NyBAQCBTRUxFQ1QgcGdfc3RhdF9yZXNldF9iYWNrZW5kX3N0YXRzKHBnX2JhY2tlbmRfcGlk KCkpOwogIAogKDEgcm93KQogCi1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1c2Vz KSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0 ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bvc3Rf YmFja2VuZF9yZXNldAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMpICsg c3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNr cykgKyBzdW0oaGl0cykgQVMgbXlfaW9fc3RhdHNfcG9zdF9iYWNrZW5kX3Jlc2V0CiAgIEZS T00gcGdfc3RhdF9nZXRfYmFja2VuZF9pbyhwZ19iYWNrZW5kX3BpZCgpKSBcZ3NldAogU0VM RUNUIDpteV9pb19zdGF0c19wcmVfcmVzZXQgPiA6bXlfaW9fc3RhdHNfcG9zdF9iYWNrZW5k X3Jlc2V0OwogID9jb2x1bW4/IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC92YWN1dW0ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0 CmluZGV4IGQ0Njk2YmMuLjg1ZDA2OTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdmFjdXVtLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Zh Y3V1bS5vdXQKQEAgLTUyNiwyNSArNTI2LDYgQEAgU0VMRUNUIHQucmVsZmlsZW5vZGUgPSA6 dG9hc3RfZmlsZW5vZGUgQVMgaXNfc2FtZV90b2FzdF9maWxlbm9kZQogIGYKICgxIHJvdykK IAotLS0gQlVGRkVSX1VTQUdFX0xJTUlUIG9wdGlvbgotVkFDVVVNIChCVUZGRVJfVVNBR0Vf TElNSVQgJzUxMiBrQicpIHZhY19vcHRpb25fdGFiOwotQU5BTFlaRSAoQlVGRkVSX1VTQUdF X0xJTUlUICc1MTIga0InKSB2YWNfb3B0aW9uX3RhYjsKLS0tIHRyeSBkaXNhYmxpbmcgdGhl IGJ1ZmZlciB1c2FnZSBsaW1pdAotVkFDVVVNIChCVUZGRVJfVVNBR0VfTElNSVQgMCkgdmFj X29wdGlvbl90YWI7Ci1BTkFMWVpFIChCVUZGRVJfVVNBR0VfTElNSVQgMCkgdmFjX29wdGlv bl90YWI7Ci0tLSB2YWx1ZSBleGNlZWRzIG1heCBzaXplIGVycm9yCi1WQUNVVU0gKEJVRkZF Ul9VU0FHRV9MSU1JVCAxNjc3NzIyMCkgdmFjX29wdGlvbl90YWI7Ci1FUlJPUjogIEJVRkZF Ul9VU0FHRV9MSU1JVCBvcHRpb24gbXVzdCBiZSAwIG9yIGJldHdlZW4gMTI4IGtCIGFuZCAx Njc3NzIxNiBrQgotLS0gdmFsdWUgaXMgbGVzcyB0aGFuIG1pbiBzaXplIGVycm9yCi1WQUNV VU0gKEJVRkZFUl9VU0FHRV9MSU1JVCAxMjApIHZhY19vcHRpb25fdGFiOwotRVJST1I6ICBC VUZGRVJfVVNBR0VfTElNSVQgb3B0aW9uIG11c3QgYmUgMCBvciBiZXR3ZWVuIDEyOCBrQiBh bmQgMTY3NzcyMTYga0IKLS0tIGludGVnZXIgb3ZlcmZsb3cgZXJyb3IKLVZBQ1VVTSAoQlVG RkVSX1VTQUdFX0xJTUlUIDEwMDAwMDAwMDAwKSB2YWNfb3B0aW9uX3RhYjsKLUVSUk9SOiAg QlVGRkVSX1VTQUdFX0xJTUlUIG9wdGlvbiBtdXN0IGJlIDAgb3IgYmV0d2VlbiAxMjgga0Ig YW5kIDE2Nzc3MjE2IGtCCi1ISU5UOiAgVmFsdWUgZXhjZWVkcyBpbnRlZ2VyIHJhbmdlLgot LS0gaW5jb21wYXRpYmxlIHdpdGggVkFDVVVNIEZVTEwgZXJyb3IKLVZBQ1VVTSAoQlVGRkVS X1VTQUdFX0xJTUlUICc1MTIga0InLCBGVUxMKSB2YWNfb3B0aW9uX3RhYjsKLUVSUk9SOiAg QlVGRkVSX1VTQUdFX0xJTUlUIGNhbm5vdCBiZSBzcGVjaWZpZWQgZm9yIFZBQ1VVTSBGVUxM CiAtLSBTS0lQX0RBVEFCQVNFX1NUQVRTIG9wdGlvbgogVkFDVVVNIChTS0lQX0RBVEFCQVNF X1NUQVRTKSB2YWN0c3Q7CiAtLSBPTkxZX0RBVEFCQVNFX1NUQVRTIG9wdGlvbgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHMuc3FsCmluZGV4IDRjMjY1ZDEuLjRlYjQ4MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0cy5zcWwKQEAgLTgxNCw2NSArODE0LDI3IEBAIFNFTEVDVCBzdW0od3JpdGVzKSBB UyBpb19zdW1fbG9jYWxfbmV3X3RibHNwY193cml0ZXMKIFNFTEVDVCA6aW9fc3VtX2xvY2Fs X25ld190YmxzcGNfd3JpdGVzID4gOmlvX3N1bV9sb2NhbF9hZnRlcl93cml0ZXM7CiBSRVNF VCB0ZW1wX2J1ZmZlcnM7CiAKLS0tIFRlc3QgdGhhdCByZXVzZSBvZiBzdHJhdGVneSBidWZm ZXJzIGFuZCByZWFkcyBvZiBibG9ja3MgaW50byB0aGVzZSByZXVzZWQKLS0tIGJ1ZmZlcnMg d2hpbGUgVkFDVVVNaW5nIGFyZSB0cmFja2VkIGluIHBnX3N0YXRfaW8uIElmIHRoZXJlIGlz IHN1ZmZpY2llbnQKLS0tIGRlbWFuZCBmb3Igc2hhcmVkIGJ1ZmZlcnMgZnJvbSBjb25jdXJy ZW50IHF1ZXJpZXMsIHNvbWUgYnVmZmVycyBtYXkgYmUKLS0tIHBpbm5lZCBieSBvdGhlciBi YWNrZW5kcyBiZWZvcmUgdGhleSBjYW4gYmUgcmV1c2VkLiBJbiBzdWNoIGNhc2VzLCB0aGUK LS0tIGJhY2tlbmQgd2lsbCBldmljdCBhIGJ1ZmZlciBmcm9tIG91dHNpZGUgdGhlIHJpbmcg YW5kIGFkZCBpdCB0byB0aGUKLS0tIHJpbmcuIFRoaXMgaXMgY29uc2lkZXJlZCBhbiBldmlj dGlvbiBhbmQgbm90IGEgcmV1c2UuCi0KLS0tIFNldCB3YWxfc2tpcF90aHJlc2hvbGQgc21h bGxlciB0aGFuIHRoZSBleHBlY3RlZCBzaXplIG9mCi0tLSB0ZXN0X2lvX3ZhY19zdHJhdGVn eSBzbyB0aGF0LCBldmVuIGlmIHdhbF9sZXZlbCBpcyBtaW5pbWFsLCBWQUNVVU0gRlVMTCB3 aWxsCi0tLSBmc3luYyB0aGUgbmV3bHkgcmV3cml0dGVuIHRlc3RfaW9fdmFjX3N0cmF0ZWd5 IGluc3RlYWQgb2Ygd3JpdGluZyBpdCB0byBXQUwuCi0tLSBXcml0aW5nIGl0IHRvIFdBTCB3 aWxsIHJlc3VsdCBpbiB0aGUgbmV3bHkgd3JpdHRlbiByZWxhdGlvbiBwYWdlcyBiZWluZyBp bgotLS0gc2hhcmVkIGJ1ZmZlcnMgLS0gcHJldmVudGluZyB1cyBmcm9tIHRlc3RpbmcgQkFT X1ZBQ1VVTSBCdWZmZXJBY2Nlc3NTdHJhdGVneQotLS0gcmVhZHMuCi1TRVQgd2FsX3NraXBf dGhyZXNob2xkID0gJzEga0InOwotU0VMRUNUIHN1bShyZXVzZXMpIEFTIHJldXNlcywgc3Vt KHJlYWRzKSBBUyByZWFkcywgc3VtKGV2aWN0aW9ucykgQVMgZXZpY3Rpb25zCi0gIEZST00g cGdfc3RhdF9pbyBXSEVSRSBjb250ZXh0ID0gJ3ZhY3V1bScgXGdzZXQgaW9fc3VtX3ZhY19z dHJhdGVneV9iZWZvcmVfCi1DUkVBVEUgVEFCTEUgdGVzdF9pb192YWNfc3RyYXRlZ3koYSBp bnQsIGIgaW50KSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSAnZmFsc2UnKTsKLUlOU0VS VCBJTlRPIHRlc3RfaW9fdmFjX3N0cmF0ZWd5IFNFTEVDVCBpLCBpIGZyb20gZ2VuZXJhdGVf c2VyaWVzKDEsIDQ1MDApaTsKLS0tIEVuc3VyZSB0aGF0IHRoZSBuZXh0IFZBQ1VVTSB3aWxs IG5lZWQgdG8gcGVyZm9ybSBJTyBieSByZXdyaXRpbmcgdGhlIHRhYmxlCi0tLSBmaXJzdCB3 aXRoIFZBQ1VVTSAoRlVMTCkuCi1WQUNVVU0gKEZVTEwpIHRlc3RfaW9fdmFjX3N0cmF0ZWd5 OwotLS0gVXNlIHRoZSBtaW5pbXVtIEJVRkZFUl9VU0FHRV9MSU1JVCB0byBjYXVzZSByZXVz ZXMgb3IgZXZpY3Rpb25zIHdpdGggdGhlCi0tLSBzbWFsbGVzdCB0YWJsZSBwb3NzaWJsZS4K LVZBQ1VVTSAoUEFSQUxMRUwgMCwgQlVGRkVSX1VTQUdFX0xJTUlUIDEyOCkgdGVzdF9pb192 YWNfc3RyYXRlZ3k7Ci1TRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Ci1TRUxF Q1Qgc3VtKHJldXNlcykgQVMgcmV1c2VzLCBzdW0ocmVhZHMpIEFTIHJlYWRzLCBzdW0oZXZp Y3Rpb25zKSBBUyBldmljdGlvbnMKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQg PSAndmFjdXVtJyBcZ3NldCBpb19zdW1fdmFjX3N0cmF0ZWd5X2FmdGVyXwotU0VMRUNUIDpp b19zdW1fdmFjX3N0cmF0ZWd5X2FmdGVyX3JlYWRzID4gOmlvX3N1bV92YWNfc3RyYXRlZ3lf YmVmb3JlX3JlYWRzOwotU0VMRUNUICg6aW9fc3VtX3ZhY19zdHJhdGVneV9hZnRlcl9yZXVz ZXMgKyA6aW9fc3VtX3ZhY19zdHJhdGVneV9hZnRlcl9ldmljdGlvbnMpID4KLSAgKDppb19z dW1fdmFjX3N0cmF0ZWd5X2JlZm9yZV9yZXVzZXMgKyA6aW9fc3VtX3ZhY19zdHJhdGVneV9i ZWZvcmVfZXZpY3Rpb25zKTsKLVJFU0VUIHdhbF9za2lwX3RocmVzaG9sZDsKLQotLS0gVGVz dCB0aGF0IGV4dGVuZHMgZG9uZSBieSBhIENUQVMsIHdoaWNoIHVzZXMgYSBCQVNfQlVMS1dS SVRFCi0tLSBCdWZmZXJBY2Nlc3NTdHJhdGVneSwgYXJlIHRyYWNrZWQgaW4gcGdfc3RhdF9p by4KLVNFTEVDVCBzdW0oZXh0ZW5kcykgQVMgaW9fc3VtX2J1bGt3cml0ZV9zdHJhdGVneV9l eHRlbmRzX2JlZm9yZQotICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICdidWxr d3JpdGUnIFxnc2V0Ci1DUkVBVEUgVEFCTEUgdGVzdF9pb19idWxrd3JpdGVfc3RyYXRlZ3kg QVMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApaTsKLVNFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKLVNFTEVDVCBzdW0oZXh0ZW5kcykgQVMgaW9fc3Vt X2J1bGt3cml0ZV9zdHJhdGVneV9leHRlbmRzX2FmdGVyCi0gIEZST00gcGdfc3RhdF9pbyBX SEVSRSBjb250ZXh0ID0gJ2J1bGt3cml0ZScgXGdzZXQKLVNFTEVDVCA6aW9fc3VtX2J1bGt3 cml0ZV9zdHJhdGVneV9leHRlbmRzX2FmdGVyID4gOmlvX3N1bV9idWxrd3JpdGVfc3RyYXRl Z3lfZXh0ZW5kc19iZWZvcmU7Ci0KIC0tIFRlc3QgSU8gc3RhdHMgcmVzZXQKKy0tIE5vdGU6 IHJldXNlcyBpcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIGZyb20gdGhlc2UgdG90YWxzLiAg V2l0aCB0aGUKKy0tIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHJpbmcgYnVmZmVycyByZW1vdmVk LCBJT09QX1JFVVNFIGlzIG5ldmVyIHRyYWNrZWQsIHNvCistLSB0aGUgcmV1c2VzIGNvbHVt biBpcyBOVUxMIGZvciBldmVyeSByb3c7IHN1bW1pbmcgaXQgd291bGQgbWFrZSB0aGUgd2hv bGUKKy0tIHRvdGFsIE5VTEwuCiBTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRzKCdpbycsIDAs IDApOwotU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0ZW5k cykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0 ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBpb19zdGF0c19wcmVfcmVzZXQKK1NFTEVDVCBzdW0o ZXZpY3Rpb25zKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSAr IHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIGlvX3N0YXRz X3ByZV9yZXNldAogICBGUk9NIHBnX3N0YXRfaW8gXGdzZXQKLVNFTEVDVCBzdW0oZXZpY3Rp b25zKSArIHN1bShyZXVzZXMpICsgc3VtKGV4dGVuZHMpICsgc3VtKGZzeW5jcykgKyBzdW0o cmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNrcykgKyBzdW0oaGl0cykgQVMg bXlfaW9fc3RhdHNfcHJlX3Jlc2V0CitTRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0oZXh0 ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3 cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBteV9pb19zdGF0c19wcmVfcmVzZXQKICAgRlJP TSBwZ19zdGF0X2dldF9iYWNrZW5kX2lvKHBnX2JhY2tlbmRfcGlkKCkpIFxnc2V0CiBTRUxF Q1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ2lvJyk7Ci1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykg KyBzdW0ocmV1c2VzKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRz KSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIGlvX3N0 YXRzX3Bvc3RfcmVzZXQKK1NFTEVDVCBzdW0oZXZpY3Rpb25zKSArIHN1bShleHRlbmRzKSAr IHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFj a3MpICsgc3VtKGhpdHMpIEFTIGlvX3N0YXRzX3Bvc3RfcmVzZXQKICAgRlJPTSBwZ19zdGF0 X2lvIFxnc2V0CiBTRUxFQ1QgOmlvX3N0YXRzX3Bvc3RfcmVzZXQgPCA6aW9fc3RhdHNfcHJl X3Jlc2V0OwotU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0 ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3 cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBteV9pb19zdGF0c19wb3N0X3Jlc2V0CitTRUxF Q1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShy ZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBt eV9pb19zdGF0c19wb3N0X3Jlc2V0CiAgIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pbyhw Z19iYWNrZW5kX3BpZCgpKSBcZ3NldAogLS0gcGdfc3RhdF9yZXNldF9zaGFyZWQoKSBkaWQg bm90IHJlc2V0IGJhY2tlbmQgSU8gc3RhdHMKIFNFTEVDVCA6bXlfaW9fc3RhdHNfcHJlX3Jl c2V0IDw9IDpteV9pb19zdGF0c19wb3N0X3Jlc2V0OwogLS0gYnV0IHBnX3N0YXRfcmVzZXRf YmFja2VuZF9zdGF0cygpIGRvZXMKIFNFTEVDVCBwZ19zdGF0X3Jlc2V0X2JhY2tlbmRfc3Rh dHMocGdfYmFja2VuZF9waWQoKSk7Ci1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1 c2VzKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3 cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bv c3RfYmFja2VuZF9yZXNldAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMp ICsgc3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGVi YWNrcykgKyBzdW0oaGl0cykgQVMgbXlfaW9fc3RhdHNfcG9zdF9iYWNrZW5kX3Jlc2V0CiAg IEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pbyhwZ19iYWNrZW5kX3BpZCgpKSBcZ3NldAog U0VMRUNUIDpteV9pb19zdGF0c19wcmVfcmVzZXQgPiA6bXlfaW9fc3RhdHNfcG9zdF9iYWNr ZW5kX3Jlc2V0OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0u c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbAppbmRleCAyNDdiOGUyLi41 MDZjNDM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwKQEAgLTM5MCwyMSArMzkwLDYg QEAgU0VMRUNUIHQucmVsZmlsZW5vZGUgPSA6dG9hc3RfZmlsZW5vZGUgQVMgaXNfc2FtZV90 b2FzdF9maWxlbm9kZQogICBGUk9NIHBnX2NsYXNzIGMsIHBnX2NsYXNzIHQKICAgV0hFUkUg Yy5yZWx0b2FzdHJlbGlkID0gdC5vaWQgQU5EIGMucmVsbmFtZSA9ICd2YWNfb3B0aW9uX3Rh Yic7CiAKLS0tIEJVRkZFUl9VU0FHRV9MSU1JVCBvcHRpb24KLVZBQ1VVTSAoQlVGRkVSX1VT QUdFX0xJTUlUICc1MTIga0InKSB2YWNfb3B0aW9uX3RhYjsKLUFOQUxZWkUgKEJVRkZFUl9V U0FHRV9MSU1JVCAnNTEyIGtCJykgdmFjX29wdGlvbl90YWI7Ci0tLSB0cnkgZGlzYWJsaW5n IHRoZSBidWZmZXIgdXNhZ2UgbGltaXQKLVZBQ1VVTSAoQlVGRkVSX1VTQUdFX0xJTUlUIDAp IHZhY19vcHRpb25fdGFiOwotQU5BTFlaRSAoQlVGRkVSX1VTQUdFX0xJTUlUIDApIHZhY19v cHRpb25fdGFiOwotLS0gdmFsdWUgZXhjZWVkcyBtYXggc2l6ZSBlcnJvcgotVkFDVVVNIChC VUZGRVJfVVNBR0VfTElNSVQgMTY3NzcyMjApIHZhY19vcHRpb25fdGFiOwotLS0gdmFsdWUg aXMgbGVzcyB0aGFuIG1pbiBzaXplIGVycm9yCi1WQUNVVU0gKEJVRkZFUl9VU0FHRV9MSU1J VCAxMjApIHZhY19vcHRpb25fdGFiOwotLS0gaW50ZWdlciBvdmVyZmxvdyBlcnJvcgotVkFD VVVNIChCVUZGRVJfVVNBR0VfTElNSVQgMTAwMDAwMDAwMDApIHZhY19vcHRpb25fdGFiOwot LS0gaW5jb21wYXRpYmxlIHdpdGggVkFDVVVNIEZVTEwgZXJyb3IKLVZBQ1VVTSAoQlVGRkVS X1VTQUdFX0xJTUlUICc1MTIga0InLCBGVUxMKSB2YWNfb3B0aW9uX3RhYjsKLQogLS0gU0tJ UF9EQVRBQkFTRV9TVEFUUyBvcHRpb24KIFZBQ1VVTSAoU0tJUF9EQVRBQkFTRV9TVEFUUykg dmFjdHN0OwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDU2YzFmOTkuLjA2 NGE5ODcgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cisr KyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0zNTUsOCArMzU1LDYg QEAgQnRyZWVMZXZlbAogQnVja2V0CiBCdWZGaWxlCiBCdWZmZXIKLUJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5Ci1CdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUKIEJ1ZmZlckNhY2hlT3NQYWdlc0Nv bnRleHQKIEJ1ZmZlckNhY2hlT3NQYWdlc1JlYwogQnVmZmVyRGVzYwotLSAKMi41MC4xCgo= --e43c6d4d37c2dc6715842cce56a0acb5f2fc7668--