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 1vqwi5-003lOq-26 for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Feb 2026 17:12:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vqwi4-00FWHr-2o for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Feb 2026 17:12:05 +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 1vqwi4-00FWHe-06 for pgsql-hackers@lists.postgresql.org; Fri, 13 Feb 2026 17:12:05 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vqwi0-00000000WPg-0sWz for pgsql-hackers@postgresql.org; Fri, 13 Feb 2026 17:12:04 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4fCJcT3jqmz49PxG; Fri, 13 Feb 2026 19:11:53 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1771002715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=DXFcHLo9x7a9p4mHKozz+JkjJUAfgL9RJlIeBcwdQEU=; b=JQVhfqJdrTdCRVynE/PsKgjp0sw6/1vIllpGO1YKLFrGqp9MhOxcilNqOzmznb8c/p06D2 uVhUmh6Bib9Lvp/vsIkLBZX8ZLsYyTr6lcjTW18XUi0RFJYFS+bJc0fk/ptT3vJsiBLzj7 aFgUVmTjg7mRyYwOAzwG38E+IsYHahenu/VhRJaJOPx1dk3pgypwDy3uFLfxLurWcoDX+0 q5S5RofS49c8PsSwrUzFkkrm2kHY9/WjwdH67KkPT6jUIoCZcODMdKnclTMu1pVRFEOzBO ABnL+RAWv5VePuCJsCPWcYBKhpMJcqgUF/f/jogpmJ4wU2Rd2+mTg5pqK7upOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1771002715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=DXFcHLo9x7a9p4mHKozz+JkjJUAfgL9RJlIeBcwdQEU=; b=dEXuxh8WwVg4nK6OkCLNX7ftdVsz6rU1eZWoNGXDQdiuEzaLUw/FI/f4dOclTWu/8l42X5 9EGTT3pqDv42fj4nGOsSExIgWCML0oPL9HQiaJGPUHb02S8BfaPMZQenW8MT77Ww/c0sQf 80K/Xz1Yk7TUxM0+JbpZfgyrsngeH3su6pXI7bzbYCBJgOCDf8os5ydklGNBf2WOVFMBg+ dSQ2X34gRxKsAfO28ubgDLibxat8ZzPTqIYkY+GfxO5xr1+qWBqF+jixP6q5euw7lLp4QL Hw96YCLUo/uhjyzH+NDaOY0AHHMt5de65J09HKc4MLiT8PAFNHKHD9kncz16YA== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1771002715; b=bCrqLGaLN9CxYqBdtNClHmVkeRJUBFISKJmmQ8qdy+y1B12ohgzD3pQ1cTXKLK6WG8B4d0 eB8DLVt1xKKvqz5ZcXx0SQGyuNlczrVVtByxsWS8wtm8r9G0HUd+b+Xi5pF1uvoenYS90x rdZJClyJVSCsSNJGHtA4NGwXhQugN5619VZbniF2jv8z2ObZ+rt7S30uVyrDSTsFJF3OFR 3XKXpmi4odWFhYjlR7x4Mq9t4NHhazu0jBSDRTs7E7OqtLw9yJGQxnsBdkHt1wOq0Im2ol 31dqZMgYdmoJ6ifSmT9trUhXHxJIPFUt1IhWAINKi+Y9KPLLCM9x/JgkMfKOBA== Content-Type: multipart/mixed; boundary="------------ZHgTx0qFX1GNOQa2CNNq5QhB" Message-ID: <818bafaf-1e77-4c78-8037-d7120878d87c@iki.fi> Date: Fri, 13 Feb 2026 19:11:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals From: Heikki Linnakangas To: Andres Freund Cc: Thomas Munro , Michael Paquier , Robert Haas , Fujii Masao , pgsql-hackers References: <8a0ff52f-de8e-49d2-a3af-ea5bc12f5b97@iki.fi> <4ddab51d-e932-40c5-b6fa-18c52db0e082@iki.fi> <08382e5c-a820-4aca-90ac-fab50cd4599c@iki.fi> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 29/01/2026 03:05, Heikki Linnakangas wrote: > Here's a new rebased and massively re-worked patch. > > The patches are split differently than in the previous version: > - Patches 0001-0005 are just refactoring around recovery conflicts which > I posted on a separate thread [1]. Please review and comment there. > - Patches 0006 and 0007 are small cleanups that could be applied early > (after updating the docs, as noted in TODO comment there). > - All the interesting bits for this thread are in the last, massive patch. > > To review this, I suggest starting from the new src/backend/ipc/ > README.md file. It gives a good overview of the mechanism (or if it > doesn't, that's valuable feedback :-) ). It also contains a bunch of > Open Questions at the bottom; I'd love to hear opinions and ideas on those. New version attached. Lots of little cleanups, and a few more notable changes: - Switched to 64-bit interrupt masks. This gives more headroom for extensions to reserve their own custom interrupts - I mostly gave up on sending interrupts from postmaster to child processes. So postmaster still uses kill() to tell child processes to exit or do other things. There's a TODO section in the README about that, but this is fine for now. - Implemented a RequestAddinInterrupt() function for extensions to request interrupt bits. (TODO: use it in one of the example extensions, to show how to use it and to test that it works) > On 15/07/2025 18:50, Andres Freund wrote: >>> @@ -205,6 +206,8 @@ StartupProcExit(int code, Datum arg) >>> /* Shutdown the recovery environment */ >>> if (standbyState != STANDBY_DISABLED) >>> ShutdownRecoveryTransactionEnvironment(); >>> + >>> + ProcGlobal->startupProc = INVALID_PROC_NUMBER; >>> } >> >> >> What if we instead had a ProcGlobal->auxProc[auxproxtype]? We have >> different >> versions of this for different types auf aux processes, which doesn't >> really >> make sense. > > I like that idea, but didn't try it yet. The attached patches move a little in that direction. There's no array like that, but I moved the responsibility of setting those startupProc/walreceiverProc/checkpointerProc fields to InitAuxiliaryProcess(), so there's now a clear pattern to copy if other processes need to be advertised like that. - Heikki --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/x-patch; charset=UTF-8; name="0001-Ignore-SIGINT-in-walwriter-and-walsummarizer.patch" Content-Disposition: attachment; filename="0001-Ignore-SIGINT-in-walwriter-and-walsummarizer.patch" Content-Transfer-Encoding: base64 RnJvbSAzYTgxYzQ1N2RjMmI3ZGFmODliOGNkZjRmMDU4YzFhYWE1MjM0MmRhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMTMgRmViIDIwMjYgMTM6MTk6NDcgKzAyMDAK U3ViamVjdDogW1BBVENIIDEvNV0gSWdub3JlIFNJR0lOVCBpbiB3YWx3cml0ZXIgYW5kIHdh bHN1bW1hcml6ZXIKClByZXZpb3VzbHksIFNJR0lOVCB3YXMgdHJlYXRlZCB0aGUgc2FtZSBh cyBTSUdURVJNIGluIHdhbHdyaXRlciBhbmQKd2Fsc3VtbWFyaXplci4gVGhhdCBkZWNpc2lv biBnb2VzIGJhY2sgdG8gd2hlbiB0aGUgd2Fsd3JpdGVyIHByb2Nlc3MKd2FzIGludHJvZHVj ZWQgKGNvbW1pdCBhZDQyOTU3MjhlMDQpLCBhbmQgd2FzIGxhdGVyIGNvcGllZCB0bwp3YWxz dW1tYXJpemVyLiBJdCB3YXMgYSBwcmV0dHkgYXJiaXRyYXJ5IGRlY2lzaW9uIGJhY2sgdGhl biwgYW5kIHdlCmhhdmVuJ3QgYWRvcHRlZCB0aGF0IGNvbnZlbnRpb24gaW4gYWxsIHRoZSBv dGhlciBwcm9jZXNzZXMgdGhhdCBoYXZlCmJlZW4gaW50cm9kdWNlZCBsYXRlci4KClN1bW1h cnkgb2YgaG93IG90aGVyIHByb2Nlc3NlcyByZXNwb25kIHRvIFNJR0lOVDoKLSBBdXRvdmFj dXVtIGxhdW5jaGVyOiBDYW5jZWwgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIG9mIGxhdW5jaGlu ZwotIGJnd29ya2VyOiBJZ25vcmUgKHVubGVzcyBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSkK LSBjaGVja3BvaW50ZXI6IFJlcXVlc3Qgc2h1dGRvd24gY2hlY2twb2ludAotIHBnYXJjaDog SWdub3JlCi0gc3RhcnR1cCBwcm9jZXNzOiBJZ25vcmUKLSB3YWxyZWNlaXZlcjogSWdub3Jl Ci0gSU8gd29ya2VyOiBkaWUoKQoKSU8gd29ya2VycyBhcmUgYSBub3RhYmxlIGV4Y2VwdGlv biBpbiB0aGF0IHRoZXkgZXhpdCBvbiBTSUdJTlQsIGFuZAp0aGVyZSdzIGEgZG9jdW1lbnRl ZCByZWFzb24gZm9yIHRoYXQ6IElPIHdvcmtlcnMgaWdub3JlIFNJR1RFUk0sIHNvClNJR0lO VCBwcm92aWRlcyBhIHdheSB0byBtYW51YWxseSBraWxsIHRoZW0uIChUaGV5IGRvIHJlc3Bv bmQgdG8KU0lHVVNSMiwgdGhvdWdoLCBsaWtlIGFsbCB0aGUgb3RoZXIgcHJvY2Vzc2VzIHRo YXQgd2UgZG9uJ3Qgd2FudCB0bwpleGl0IGltbWVkaWF0ZWx5IG9uIFNJR1RFUk0gb24gb3Bl cmF0aW5nIHN5c3RlbSBzaHV0ZG93bi4pCgpUbyBtYWtlIHRoaXMgYSBsaXR0bGUgbW9yZSBj b25zaXN0ZW50LCBpZ25vcmUgU0lHSU5UIGluIHdhbHdyaXRlciBhbmQKd2Fsc3VtbWFyaXpl ci4gVGhleSBoYXZlIG5vICJxdWVyeSIgdG8gY2FuY2VsLCBhbmQgdGhleSByZWFjdCB0bwpT SUdURVJNIGp1c3QgZmluZS4KLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYyB8IDUgKy0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMg ICAgIHwgNSArLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1t YXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRl eCAyZDhmNTcwOTlmZC4uNzQyMTM3ZWRhZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsc3VtbWFyaXplci5jCkBAIC0yNDEsMTIgKzI0MSw5IEBAIFdhbFN1bW1hcml6ZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAK IAkvKgogCSAqIFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUgc2lnbmFscyB0aGUgcG9zdG1h c3RlciBtaWdodCBzZW5kIHVzCi0JICoKLQkgKiBXZSBoYXZlIG5vIHBhcnRpY3VsYXIgdXNl IGZvciBTSUdJTlQgYXQgdGhlIG1vbWVudCwgYnV0IHNlZW1zCi0JICogcmVhc29uYWJsZSB0 byB0cmVhdCBsaWtlIFNJR1RFUk0uCiAJICovCiAJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxI YW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRs ZXJGb3JTaHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7CS8q IG5vIHF1ZXJ5IHRvIGNhbmNlbCAqLwogCXBxc2lnbmFsKFNJR1RFUk0sIFNpZ25hbEhhbmRs ZXJGb3JTaHV0ZG93blJlcXVlc3QpOwogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFk eSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBxc2lnbmFsKFNJR0FMUk0s IFNJR19JR04pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0 ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggMjNlNzlh MzIzNDUuLjdjMGUyODA5YzE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMK QEAgLTk4LDEyICs5OCw5IEBAIFdhbFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCS8qCiAJICogUHJvcGVybHkgYWNj ZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRoZSBwb3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMKLQkg KgotCSAqIFdlIGhhdmUgbm8gcGFydGljdWxhciB1c2UgZm9yIFNJR0lOVCBhdCB0aGUgbW9t ZW50LCBidXQgc2VlbXMKLQkgKiByZWFzb25hYmxlIHRvIHRyZWF0IGxpa2UgU0lHVEVSTS4K IAkgKi8KIAlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OwotCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7 CisJcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsJLyogbm8gcXVlcnkgdG8gY2FuY2VsICov CiAJcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7 CiAJLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1h c3RlckNoaWxkICovCiAJcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Ci0tIAoyLjQ3LjMK Cg== --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/x-patch; charset=UTF-8; name="0002-Centralize-resetting-SIGCHLD-handler.patch" Content-Disposition: attachment; filename="0002-Centralize-resetting-SIGCHLD-handler.patch" Content-Transfer-Encoding: base64 RnJvbSAzY2FiZTkwMTQzMzQyNDA4YTk2NGI3YTA1ZTNjMjEyMDUxYTcxZTIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgOCBKYW4gMjAyNiAyMDoyMjo0MyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMi81XSBDZW50cmFsaXplIHJlc2V0dGluZyBTSUdDSExEIGhhbmRs ZXIKCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgIHwg IDIgLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICB8ICAx IC0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICB8ICA1IC0t LS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgfCAgNSAt LS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAgIHwgIDMg LS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyAgICAgICAgICAgfCAgNSAt LS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAgICAgICAgIHwgIDUg LS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICAgICB8ICA1 IC0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jICAgICAgICAgfCAg NSAtLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIHwg IDEgLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgIHwgIDMg LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgfCAgMyAt LS0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICB8ICA3IC0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyAgICAgICAgICB8IDE0 ICsrKysrKysrKysrKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA1 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4 IDZmZGU3NDA0NjVmLi44OWMyYjRmOTUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKQEAgLTQxMSw3ICs0MTEsNiBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWdu YWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJ R1VTUjIsIGF2bF9zaWd1c3IyX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRF eGNlcHRpb25IYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKIAogCS8q CiAJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVjdCBpbiBzaGFyZWQgbWVt b3J5LiAgV2UgbXVzdCBkbyB0aGlzCkBAIC0xNDIyLDcgKzE0MjEsNiBAQCBBdXRvVmFjV29y a2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsK IAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdGUEUsIEZsb2F0 RXhjZXB0aW9uSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7CiAKIAkv KgogCSAqIENyZWF0ZSBhIHBlci1iYWNrZW5kIFBHUFJPQyBzdHJ1Y3QgaW4gc2hhcmVkIG1l bW9yeS4gIFdlIG11c3QgZG8gdGhpcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmlu ZGV4IDI2MWNjZDNmNTljLi5kNDAzMWFjMzc4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYwpAQCAtNzk1LDcgKzc5NSw2IEBAIEJhY2tncm91bmRXb3JrZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAlwcXNp Z25hbChTSUdQSVBFLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsK LQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKIAogCS8qCiAJICogSWYgYW4gZXhjZXB0 aW9uIGlzIGVuY291bnRlcmVkLCBwcm9jZXNzaW5nIHJlc3VtZXMgaGVyZS4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3cml0ZXIuYwppbmRleCAwOTU2YmQzOWE4NS4uZGJkNjcwYzE2Y2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKQEAgLTEwOCwxMSArMTA4LDYgQEAgQmFj a2dyb3VuZFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7CiAKLQkvKgotCSAqIFJl c2V0IHNvbWUgc2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBu b3QgaGVyZQotCSAqLwotCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwotCiAJLyoKIAkg KiBXZSBqdXN0IHN0YXJ0ZWQsIGFzc3VtZSB0aGVyZSBoYXMgYmVlbiBlaXRoZXIgYSBzaHV0 ZG93biBvcgogCSAqIGVuZC1vZi1yZWNvdmVyeSBzbmFwc2hvdC4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IGUwM2MxOTEyM2JjLi4wM2FlZmE1YjY3MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC0yMjAsMTEgKzIy MCw2IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3Np Z3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU2lnbmFsSGFuZGxlckZvclNo dXRkb3duUmVxdWVzdCk7CiAKLQkvKgotCSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFy ZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZQotCSAqLwotCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOwotCiAJLyoKIAkgKiBJbml0aWFsaXplIHNvIHRoYXQgZmly c3QgdGltZS1kcml2ZW4gZXZlbnQgaGFwcGVucyBhdCB0aGUgY29ycmVjdCB0aW1lLgogCSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKaW5kZXggODI3MzFlNDUyZmMuLjEwYTVlZjll MTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTIzNyw5ICsyMzcsNiBAQCBQ Z0FyY2hpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBwZ2FyY2hfd2FrZW5fc3RvcCk7CiAKLQkvKiBS ZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQg bm90IGhlcmUgKi8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKLQogCS8qIFVuYmxv Y2sgc2lnbmFscyAodGhleSB3ZXJlIGJsb2NrZWQgd2hlbiB0aGUgcG9zdG1hc3RlciBmb3Jr ZWQgdXMpICovCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZVbkJsb2NrU2lnLCBOVUxM KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwppbmRleCBjZGJlNTNkZDI2Mi4uMzMw YzEwZGRiMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCkBAIC0yMzQsMTEgKzIz NCw2IEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTdGFydHVwUHJvY1RyaWdn ZXJIYW5kbGVyKTsKIAotCS8qCi0JICogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQgYXJlIGFj Y2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlCi0JICovCi0JcHFzaWduYWwoU0lH Q0hMRCwgU0lHX0RGTCk7Ci0KIAkvKgogCSAqIFJlZ2lzdGVyIHRpbWVvdXRzIG5lZWRlZCBm b3Igc3RhbmRieSBtb2RlCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwpp bmRleCA4NmM1ZTM3NmI0MC4uODUxNWJmYjk2NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9z eXNsb2dnZXIuYwpAQCAtMjgzLDExICsyODMsNiBAQCBTeXNMb2dnZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwo U0lHVVNSMSwgc2lnVXNyMUhhbmRsZXIpOwkvKiByZXF1ZXN0IGxvZyByb3RhdGlvbiAqLwog CXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOwogCi0JLyoKLQkgKiBSZXNldCBzb21lIHNp Z25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGhlcmUKLQkg Ki8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKLQogCXNpZ3Byb2NtYXNrKFNJR19T RVRNQVNLLCAmVW5CbG9ja1NpZywgTlVMTCk7CiAKICNpZmRlZiBXSU4zMgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCA3NDIxMzdlZGFkNi4uNGU0ZWVk NGQwNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC0y NjMsMTEgKzI2Myw2IEBAIFdhbFN1bW1hcml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQkJCQkJCQlBTExPQ1NFVF9ERUZB VUxUX1NJWkVTKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oY29udGV4dCk7CiAKLQkvKgot CSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVy IGJ1dCBub3QgaGVyZQotCSAqLwotCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwotCiAJ LyoKIAkgKiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nlc3NpbmcgcmVz dW1lcyBoZXJlLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWx3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXgg N2MwZTI4MDljMTcuLjhjYTdiMDdlOTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3Jp dGVyLmMKQEAgLTEwOCwxMSArMTA4LDYgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR1VT UjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBT SUdfSUdOKTsgLyogbm90IHVzZWQgKi8KIAotCS8qCi0JICogUmVzZXQgc29tZSBzaWduYWxz IHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlCi0JICovCi0J cHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7Ci0KIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9y eSBjb250ZXh0IHRoYXQgd2Ugd2lsbCBkbyBhbGwgb3VyIHdvcmsgaW4uICBXZSBkbyB0aGlz IHNvCiAJICogdGhhdCB3ZSBjYW4gcmVzZXQgdGhlIGNvbnRleHQgZHVyaW5nIGVycm9yIHJl Y292ZXJ5IGFuZCB0aGVyZWJ5IGF2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Nsb3RzeW5jLmMKaW5kZXggMDYyYTA4Y2NiODguLjVlMWVlN2U0NzI4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC0xNTM2 LDcgKzE1MzYsNiBAQCBSZXBsU2xvdFN5bmNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0 dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwg cHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19J R04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR0NITEQs IFNJR19ERkwpOwogCiAJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9jUGlkKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggMTBlNjRhN2QxZjQu LjM1MmEzZjMxZTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMK QEAgLTI1Nyw5ICsyNTcsNiBAQCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBw cm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lH Tik7CiAKLQkvKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9z dG1hc3RlciBidXQgbm90IGhlcmUgKi8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsK LQogCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwogCWxvYWRfZmls ZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAlpZiAoV2FsUmVjZWl2ZXJGdW5jdGlv bnMgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMmNk ZThlYmM3MjkuLjVhY2M4ZWUzYWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwpAQCAtMzc0Myw5ICszNzQzLDYgQEAgV2FsU25kU2lnbmFscyh2b2lkKQogCXBxc2ln bmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChT SUdVU1IyLCBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKTsJLyogcmVxdWVzdCBhIGxhc3QgY3lj bGUgYW5kCiAJCQkJCQkJCQkJCQkgKiBzaHV0ZG93biAqLwotCi0JLyogUmVzZXQgc29tZSBz aWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlICov Ci0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7CiB9CiAKIC8qIFJlcG9ydCBzaGFyZWQt bWVtb3J5IHNwYWNlIG5lZWRlZCBieSBXYWxTbmRTaG1lbUluaXQgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYwppbmRleCAyMWRlMTU4YWRiYi4uYjg4Y2U0NDBiMWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKQEAgLTQyODUsMTMgKzQyODUsNiBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJu YW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3Np Z25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCQlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsK IAkJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwotCi0JCS8qCi0J CSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVy IGJ1dCBub3QgYnkKLQkJICogYmFja2VuZAotCQkgKi8KLQkJcHFzaWduYWwoU0lHQ0hMRCwg U0lHX0RGTCk7IC8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgb24gc29tZQotCQkJCQkJCQkJ ICogcGxhdGZvcm1zICovCiAJfQogCiAJLyogRWFybHkgaW5pdGlhbGl6YXRpb24gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYwppbmRleCAwM2Y2Yzg0NzlmMi4uZmFkZjg1NmQ5 YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTE0Miw2ICsxNDIsMTUg QEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCQllbG9nKEZBVEFMLCAic2V0c2lkKCkg ZmFpbGVkOiAlbSIpOwogI2VuZGlmCiAKKwkvKgorCSAqIFJlc2V0IHNpZ25hbHMgdGhhdCBh cmUgdXNlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgYnkgY2hpbGQgcHJvY2Vzc2VzLgorCSAq CisJICogQ3VycmVudGx5IGp1c3QgU0lHQ0hMRC4gIFRoZSBoYW5kbGVycyBmb3Igb3RoZXIg c2lnbmFscyBhcmUgb3ZlcnJpZGRlbgorCSAqIGxhdGVyLCBkZXBlbmRpbmcgb24gdGhlIGNo aWxkIHByb2Nlc3MgdHlwZS4KKwkgKi8KKwlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsg Lyogc3lzdGVtKCkgcmVxdWlyZXMgdGhpcyB0byBiZSBTSUdfREZMIHJhdGhlcgorCQkJCQkJ CQkgKiB0aGFuIFNJR19JR04gb24gc29tZSBwbGF0Zm9ybXMgKi8KKwogCS8qCiAJICogRXZl cnkgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlzIGV4cGVjdGVkIHRvIHJlc3BvbmQgcHJv bXB0bHkgdG8KIAkgKiBTSUdRVUlUIGF0IGFsbCB0aW1lcy4gIFRoZXJlZm9yZSB3ZSBjZW50 cmFsbHkgcmVtb3ZlIFNJR1FVSVQgZnJvbQpAQCAtMTU0LDYgKzE2MywxMSBAQCBJbml0UG9z dG1hc3RlckNoaWxkKHZvaWQpCiAJc2lnZGVsc2V0KCZCbG9ja1NpZywgU0lHUVVJVCk7CiAJ c2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZCbG9ja1NpZywgTlVMTCk7CiAKKwkvKgorCSAq IEl0IGlzIHVwIHRvIHRoZSAqTWFpbigpIGZ1bmN0aW9uIHRvIHNldCBzaWduYWwgaGFuZGxl cnMgYXBwcm9wcmlhdGUgZm9yCisJICogdGhlIGNoaWxkIHByb2Nlc3MgYW5kIHVuYmxvY2sg dGhlIHJlc3Qgb2YgdGhlIHNpZ25hbHMuCisJICovCisKIAkvKiBSZXF1ZXN0IGEgc2lnbmFs IGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIGlmIHBvc3NpYmxlLiAqLwogCVBvc3RtYXN0ZXJE ZWF0aFNpZ25hbEluaXQoKTsKIAotLSAKMi40Ny4zCgo= --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/x-patch; charset=UTF-8; name="0003-Use-standard-die-handler-for-SIGTERM-in-bgworkers.patch" Content-Disposition: attachment; filename*0="0003-Use-standard-die-handler-for-SIGTERM-in-bgworkers.patch" Content-Transfer-Encoding: base64 RnJvbSA2M2QxYTU3ZjQ5MDZhOTI0YzQyNmRlZjRlMWE3ZjI3YTcxNjExYjI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMjAgSmFuIDIwMjYgMTY6NTc6MjUgKzAyMDAK U3ViamVjdDogW1BBVENIIDMvNV0gVXNlIHN0YW5kYXJkIGRpZSgpIGhhbmRsZXIgZm9yIFNJ R1RFUk0gaW4gYmd3b3JrZXJzCgotLS0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAg ICAgICAgICAgICAgICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgICAgfCAgMSAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMgICAgICAgICAgICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgfCAgMSAtCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgICAgfCAgMSAt CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgfCAg MSAtCiA2IGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvYmd3b3JrZXIuc2dtbAppbmRleCA0Njk5ZWY2MzQ1Zi4uYjIzOWUzOGFhYWUgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9i Z3dvcmtlci5zZ21sCkBAIC0yNTQsNiArMjU0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dy b3VuZFdvcmtlcgogICAgPGxpdGVyYWw+V0xfUE9TVE1BU1RFUl9ERUFUSDwvbGl0ZXJhbD4g ZmxhZyBpcyBzZXQgd2hlbiBjYWxsaW5nIHRoYXQgZnVuY3Rpb24sIGFuZAogICAgdmVyaWZ5 IHRoZSByZXR1cm4gY29kZSBmb3IgYSBwcm9tcHQgZXhpdCBpbiB0aGUgZW1lcmdlbmN5IGNh c2UgdGhhdAogICAgPGNvbW1hbmQ+cG9zdGdyZXM8L2NvbW1hbmQ+IGl0c2VsZiBoYXMgdGVy bWluYXRlZC4KKworICAgVE9ETyBkb2N1bWVudCB0aGF0OiB5b3Ugc2hvdWxkIGNhbGwgQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKSwgdG8gcmVhY3QgcHJvbXB0bHkgdG8gdGVybWluYXRlIHJl cXVlc3QgKFNJR1RFUk0pCiAgIDwvcGFyYT4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IGZlMDA0ODg0ODdkLi40NDc4NmRjMTMxZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC0xMzI3LDcgKzEz MjcsNiBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJSW5pdGlhbGl6 aW5nUGFyYWxsZWxXb3JrZXIgPSB0cnVlOwogCiAJLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5k bGVycy4gKi8KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwogCUJhY2tncm91bmRXb3JrZXJV bmJsb2NrU2lnbmFscygpOwogCiAJLyogRGV0ZXJtaW5lIGFuZCBzZXQgb3VyIHBhcmFsbGVs IHdvcmtlciBudW1iZXIuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXgg ZDQwMzFhYzM3ODcuLjEzM2FmNWFlZTk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtl ci5jCkBAIC03MTgsMjAgKzcxOCw2IEBAIFNhbml0eUNoZWNrQmFja2dyb3VuZFdvcmtlcihC YWNrZ3JvdW5kV29ya2VyICp3b3JrZXIsIGludCBlbGV2ZWwpCiAJcmV0dXJuIHRydWU7CiB9 CiAKLS8qCi0gKiBTdGFuZGFyZCBTSUdURVJNIGhhbmRsZXIgZm9yIGJhY2tncm91bmQgd29y a2VycwotICovCi1zdGF0aWMgdm9pZAotYmd3b3JrZXJfZGllKFNJR05BTF9BUkdTKQotewot CXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tTaWcsIE5VTEwpOwotCi0JZXJlcG9y dChGQVRBTCwKLQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLAotCQkJIGVy cm1zZygidGVybWluYXRpbmcgYmFja2dyb3VuZCB3b3JrZXIgXCIlc1wiIGR1ZSB0byBhZG1p bmlzdHJhdG9yIGNvbW1hbmQiLAotCQkJCQlNeUJnd29ya2VyRW50cnktPmJnd190eXBlKSkp OwotfQotCiAvKgogICogTWFpbiBlbnRyeSBwb2ludCBmb3IgYmFja2dyb3VuZCB3b3JrZXIg cHJvY2Vzc2VzLgogICovCkBAIC03ODcsNyArNzczLDcgQEAgQmFja2dyb3VuZFdvcmtlck1h aW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikK IAkJcHFzaWduYWwoU0lHVVNSMSwgU0lHX0lHTik7CiAJCXBxc2lnbmFsKFNJR0ZQRSwgU0lH X0lHTik7CiAJfQotCXBxc2lnbmFsKFNJR1RFUk0sIGJnd29ya2VyX2RpZSk7CisJcHFzaWdu YWwoU0lHVEVSTSwgZGllKTsKIAkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0 IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KIAlwcXNpZ25hbChTSUdIVVAsIFNJR19J R04pOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDhhMDFmMTZhMmNhLi4xNzMwYWNlNTQ5MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMKQEAgLTg3OSw3ICs4NzksNiBAQCBQYXJhbGxlbEFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkgKiByZWNlaXZpbmcgU0lHVEVSTS4KIAkgKi8K IAlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBx c2lnbmFsKFNJR1RFUk0sIGRpZSk7CiAJcHFzaWduYWwoU0lHVVNSMiwgU2lnbmFsSGFuZGxl ckZvclNodXRkb3duUmVxdWVzdCk7CiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxz KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpp bmRleCAzZWQ4NjQ4MGJlMi4uZTYxMTJlMTFlYzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEyMTMsNyArMTIxMyw2IEBAIEFwcGx5 TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJLyogRXN0YWJsaXNoIHNpZ25hbCBo YW5kbGVycy4gKi8KIAlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdS ZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CiAJQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggMzI3MjVjNDg2MjMuLjc1YWYzYTcxY2E4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTU4OTAsNyArNTg5MCw2 IEBAIFNldHVwQXBwbHlPclN5bmNXb3JrZXIoaW50IHdvcmtlcl9zbG90KQogCiAJLyogU2V0 dXAgc2lnbmFsIGhhbmRsaW5nICovCiAJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVy Rm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwogCUJhY2tncm91 bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwogCiAJLyoKLS0gCjIuNDcuMwoK --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/x-patch; charset=UTF-8; name="0004-Refactor-how-some-aux-processes-advertise-their-Proc.patch" Content-Disposition: attachment; filename*0="0004-Refactor-how-some-aux-processes-advertise-their-Proc.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjMTgxMzc5MzlhMGQyNTYxZmVkYzI0N2EzZjMxMzUzNTU5MjNmZmE4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMTMgRmViIDIwMjYgMTQ6MjM6MzUgKzAyMDAK U3ViamVjdDogW1BBVENIIDQvNV0gUmVmYWN0b3IgaG93IHNvbWUgYXV4IHByb2Nlc3NlcyBh ZHZlcnRpc2UgdGhlaXIKIFByb2NOdW1iZXIKClRoaXMgbW92ZXMgdGhlIHJlc3BvbnNpYmls aXR5IG9mIHNldHRpbmcgdGhlClByb2NHbG9iYWwtPndhbHJld3JpdGVyUHJvYyBhbmQgY2hl Y2twb2ludGVyUHJvYyBmaWVsZHMgdG8KSW5pdEF1eGlsaWFyeVByb2Nlc3MuIEFsc28gc3dp dGNoIHRvIHRoZSBzYW1lIHBhdHRlcm4gdG8gYWR2ZXJ0aXNlIHRoZQphdXRvdmFjdXVtIGxh dW5jaGVyJ3MgUHJvY051bWJlciwgcmVwbGFjaW5nIHRoZSBhZCBob2MgYXZfbGF1bmNoZXJw aWQKZmllbGQgaW4gc2hhcmVkIG1lbW9yeS4gVGhpcyBjYW4gZWFzaWx5IGJlIGV4dGVuZGVk IHRvIG90aGVyIGF1eApwcm9jZXNzZXMgaW4gdGhlIGZ1dHVyZSwgaWYgb3RoZXIgcHJvY2Vz c2VzIG5lZWQgdG8gZmluZCB0aGVtLgoKU3dpdGNoIHRvIHBnX2F0b21pY191aW50MzIgZm9y IHRoZSBmaWVsZHMuIFNlZW1zIGVhc2llciB0byByZWFzb24KYWJvdXQgdGhhbiB2b2xhdGls ZSBwb2ludGVycy4gVGhlcmUgd2FzIHNvbWUgcHJlY2VkZW5jZSBmb3IgdGhhdCwgYXMKd2Vy ZSBhbHJlYWR5IHVzaW5nIHBnX2F0b21pY191aW50MzIgZm9yIHRoZSBwcm9jQXJyYXlHcm91 cEZpcnN0IGFuZApjbG9nR3JvdXBGaXJzdCBmaWVsZHMsIHdoaWNoIGFsc28gc3RvcmUgUHJv Y051bWJlcnMuCgpUT0RPOiBjb3VsZCBhbHNvIHJlcGxhY2UgV2FsUmVjdi0+cHJvY25vIHdp dGggdGhpcwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgfCAg MyArLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgfCAxOSArKysr KysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyB8 IDE0ICsrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMg ICAgfCAgNiAtLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAg fCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvYy5oICAgICAgICAgICAgfCAgNyArKysrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDQ3IGlu c2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwppbmRleCAxM2VjNjIyNWI4NS4uOGUyZTQ2NTk5NzQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKQEAgLTI2NTMsOCArMjY1Myw3IEBAIFhMb2dTZXRBc3luY1hhY3RM U04oWExvZ1JlY1B0ciBhc3luY1hhY3RMU04pCiAKIAlpZiAod2FrZXVwKQogCXsKLQkJdm9s YXRpbGUgUFJPQ19IRFIgKnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOwotCQlQcm9jTnVtYmVy CXdhbHdyaXRlclByb2MgPSBwcm9jZ2xvYmFsLT53YWx3cml0ZXJQcm9jOworCQlQcm9jTnVt YmVyCXdhbHdyaXRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPndh bHdyaXRlclByb2MpOwogCiAJCWlmICh3YWx3cml0ZXJQcm9jICE9IElOVkFMSURfUFJPQ19O VU1CRVIpCiAJCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2Fsd3JpdGVyUHJvYykt PnByb2NMYXRjaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDg5 YzJiNGY5NTAwLi4wYTczMGZiNWI0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKQEAgLTI3Nyw3ICsyNzcsNiBAQCB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVtV29y a0l0ZW0KICAqIHN0cnVjdCBhbmQgdGhlIGFycmF5IG9mIFdvcmtlckluZm8gc3RydWN0cy4g IFRoaXMgc3RydWN0IGtlZXBzOgogICoKICAqIGF2X3NpZ25hbAkJc2V0IGJ5IG90aGVyIHBy b2Nlc3NlcyB0byBpbmRpY2F0ZSB2YXJpb3VzIGNvbmRpdGlvbnMKLSAqIGF2X2xhdW5jaGVy cGlkCXRoZSBQSUQgb2YgdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIKICAqIGF2X2ZyZWVXb3Jr ZXJzCXRoZSBXb3JrZXJJbmZvIGZyZWVsaXN0CiAgKiBhdl9ydW5uaW5nV29ya2VycyB0aGUg V29ya2VySW5mbyBub24tZnJlZSBxdWV1ZQogICogYXZfc3RhcnRpbmdXb3JrZXIgcG9pbnRl ciB0byBXb3JrZXJJbmZvIGN1cnJlbnRseSBiZWluZyBzdGFydGVkIChjbGVhcmVkIGJ5CkBA IC0yOTMsNyArMjkyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY3V1bVdvcmtJdGVtCiB0 eXBlZGVmIHN0cnVjdAogewogCXNpZ19hdG9taWNfdCBhdl9zaWduYWxbQXV0b1ZhY051bVNp Z25hbHNdOwotCXBpZF90CQlhdl9sYXVuY2hlcnBpZDsKIAlkY2xpc3RfaGVhZCBhdl9mcmVl V29ya2VyczsKIAlkbGlzdF9oZWFkCWF2X3J1bm5pbmdXb3JrZXJzOwogCVdvcmtlckluZm8J YXZfc3RhcnRpbmdXb3JrZXI7CkBAIC01NjMsOCArNTYxLDYgQEAgQXV0b1ZhY0xhdW5jaGVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCQlwcm9jX2V4aXQoMCk7CQkJLyogZG9uZSAqLwogCX0KIAotCUF1dG9WYWN1dW1TaG1l bS0+YXZfbGF1bmNoZXJwaWQgPSBNeVByb2NQaWQ7Ci0KIAkvKgogCSAqIENyZWF0ZSB0aGUg aW5pdGlhbCBkYXRhYmFzZSBsaXN0LiAgVGhlIGludmFyaWFudCB3ZSB3YW50IHRoaXMgbGlz dCB0bwogCSAqIGtlZXAgaXMgdGhhdCBpdCdzIG9yZGVyZWQgYnkgZGVjcmVhc2luZyBuZXh0 X3dvcmtlci4gIEFzIHNvb24gYXMgYW4KQEAgLTc5OCw4ICs3OTQsNiBAQCBBdXRvVmFjTGF1 bmNoZXJTaHV0ZG93bih2b2lkKQogewogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19p bnRlcm5hbCgiYXV0b3ZhY3V1bSBsYXVuY2hlciBzaHV0dGluZyBkb3duIikpKTsKLQlBdXRv VmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsKLQogCXByb2NfZXhpdCgwKTsJCQkJ LyogZG9uZSAqLwogfQogCkBAIC0xNTI5LDYgKzE1MjMsOCBAQCBBdXRvVmFjV29ya2VyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CSAqLwogCWlmIChBdXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyICE9IE5VTEwp CiAJeworCQlQcm9jTnVtYmVyCWxhdW5jaGVyUHJvYzsKKwogCQlNeVdvcmtlckluZm8gPSBB dXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyOwogCQlkYmlkID0gTXlXb3JrZXJJ bmZvLT53aV9kYm9pZDsKIAkJTXlXb3JrZXJJbmZvLT53aV9wcm9jID0gTXlQcm9jOwpAQCAt MTU0Nyw4ICsxNTQzLDE0IEBAIEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0 dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCW9uX3NobWVtX2V4aXQoRnJl ZVdvcmtlckluZm8sIDApOwogCiAJCS8qIHdha2UgdXAgdGhlIGxhdW5jaGVyICovCi0JCWlm IChBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkICE9IDApCi0JCQlraWxsKEF1dG9W YWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQsIFNJR1VTUjIpOworCQlsYXVuY2hlclByb2Mg PSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPmF2TGF1bmNoZXJQcm9jKTsKKwkJ aWYgKGxhdW5jaGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQl7CisJCQlpbnQJ CQlwaWQgPSBHZXRQR1Byb2NCeU51bWJlcihsYXVuY2hlclByb2MpLT5waWQ7CisKKwkJCWlm IChwaWQgIT0gMCkKKwkJCQlraWxsKHBpZCwgU0lHVVNSMik7CisJCX0KIAl9CiAJZWxzZQog CXsKQEAgLTMzOTEsNyArMzM5Myw2IEBAIEF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCkKIAog CQlBc3NlcnQoIWZvdW5kKTsKIAotCQlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlk ID0gMDsKIAkJZGNsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMp OwogCQlkbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKTsK IAkJQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCAwM2FlZmE1YjY3MC4uOTc4YTdk MGU2NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNDcs NiArNDcsNyBAQAogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9ydC9hdG9taWNz LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9iZ3dyaXRlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0Lmgi CkBAIC0zNDMsMTIgKzM0NCw2IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKi8KIAlVcGRhdGVTaGFy ZWRNZW1vcnlDb25maWcoKTsKIAotCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJl ciB0aGF0IGJhY2tlbmRzIGNhbiB1c2UgdG8gd2FrZSB1cyB1cCB3aGlsZQotCSAqIHdlJ3Jl IHNsZWVwaW5nLgotCSAqLwotCVByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MgPSBNeVBy b2NOdW1iZXI7Ci0KIAkvKgogCSAqIExvb3AgdW50aWwgd2UndmUgYmVlbiBhc2tlZCB0byB3 cml0ZSB0aGUgc2h1dGRvd24gY2hlY2twb2ludCBvcgogCSAqIHRlcm1pbmF0ZS4KQEAgLTEx MjAsNyArMTExNSw3IEBAIFJlcXVlc3RDaGVja3BvaW50KGludCBmbGFncykKIAlmb3IgKG50 cmllcyA9IDA7OyBudHJpZXMrKykKIAl7CiAJCXZvbGF0aWxlIFBST0NfSERSICpwcm9jZ2xv YmFsID0gUHJvY0dsb2JhbDsKLQkJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jID0gcHJv Y2dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYzsKKwkJUHJvY051bWJlcgljaGVja3BvaW50ZXJQ cm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9j KTsKIAogCQlpZiAoY2hlY2twb2ludGVyUHJvYyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQog CQl7CkBAIC0xMjYxLDggKzEyNTYsNyBAQCBGb3J3YXJkU3luY1JlcXVlc3QoY29uc3QgRmls ZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJLyogLi4uIGJ1dCBub3QgdGls bCBhZnRlciB3ZSByZWxlYXNlIHRoZSBsb2NrICovCiAJaWYgKHRvb19mdWxsKQogCXsKLQkJ dm9sYXRpbGUgUFJPQ19IRFIgKnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOwotCQlQcm9jTnVt YmVyCWNoZWNrcG9pbnRlclByb2MgPSBwcm9jZ2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jOwor CQlQcm9jTnVtYmVyCWNoZWNrcG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlBy b2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MpOwogCiAJCWlmIChjaGVja3BvaW50ZXJQcm9j ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1i ZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NMYXRjaCk7CkBAIC0xNTQzLDcgKzE1MzcsNyBA QCB2b2lkCiBXYWtldXBDaGVja3BvaW50ZXIodm9pZCkKIHsKIAl2b2xhdGlsZSBQUk9DX0hE UiAqcHJvY2dsb2JhbCA9IFByb2NHbG9iYWw7Ci0JUHJvY051bWJlcgljaGVja3BvaW50ZXJQ cm9jID0gcHJvY2dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYzsKKwlQcm9jTnVtYmVyCWNoZWNr cG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJnByb2NnbG9iYWwtPmNoZWNrcG9p bnRlclByb2MpOwogCiAJaWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05V TUJFUikKIAkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNoZWNrcG9pbnRlclByb2Mp LT5wcm9jTGF0Y2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3 cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggOGNh N2IwN2U5NDcuLjE4NTE0MTdhZDFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVy LmMKQEAgLTIwMCwxMiArMjAwLDYgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCWhpYmVybmF0aW5nID0gZmFs c2U7CiAJU2V0V2FsV3JpdGVyU2xlZXBpbmcoZmFsc2UpOwogCi0JLyoKLQkgKiBBZHZlcnRp c2Ugb3VyIHByb2MgbnVtYmVyIHRoYXQgYmFja2VuZHMgY2FuIHVzZSB0byB3YWtlIHVzIHVw IHdoaWxlCi0JICogd2UncmUgc2xlZXBpbmcuCi0JICovCi0JUHJvY0dsb2JhbC0+d2Fsd3Jp dGVyUHJvYyA9IE15UHJvY051bWJlcjsKLQogCS8qCiAJICogTG9vcCBmb3JldmVyCiAJICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBmZDgzMThiZGYzZC4uYmE3ZWFlZDFh MTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMjExLDggKzIxMSw5IEBAIElu aXRQcm9jR2xvYmFsKHZvaWQpCiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+Ymd3b3JrZXJG cmVlUHJvY3MpOwogCWRsaXN0X2luaXQoJlByb2NHbG9iYWwtPndhbHNlbmRlckZyZWVQcm9j cyk7CiAJUHJvY0dsb2JhbC0+c3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCA9IC0xOwotCVBy b2NHbG9iYWwtPndhbHdyaXRlclByb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCVByb2NH bG9iYWwtPmNoZWNrcG9pbnRlclByb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCXBnX2F0 b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+YXZMYXVuY2hlclByb2MsIElOVkFMSURfUFJP Q19OVU1CRVIpOworCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVy UHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9j R2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19h dG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsIElOVkFM SURfUFJPQ19OVU1CRVIpOwogCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+Y2xv Z0dyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCkBAIC03MDksNiArNzEwLDE0 IEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJICovCiAJUEdTZW1hcGhvcmVSZXNl dChNeVByb2MtPnNlbSk7CiAKKwkvKiBTb21lIGF1eCBwcm9jZXNzZXMgYXJlIGFsc28gYWR2 ZXJ0aXNlZCBpbiBQcm9jR2xvYmFsICovCisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9BVVRP VkFDX0xBVU5DSEVSKQorCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xvYmFsLT5hdkxh dW5jaGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKKwlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1dB TF9XUklURVIpCisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPndhbHdyaXRl clByb2MsIE15UHJvY051bWJlcik7CisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BP SU5URVIpCisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPmNoZWNrcG9pbnRl clByb2MsIE15UHJvY051bWJlcik7CisKIAkvKgogCSAqIEFycmFuZ2UgdG8gY2xlYW4gdXAg YXQgcHJvY2VzcyBleGl0LgogCSAqLwpAQCAtMTA1Myw2ICsxMDYyLDIzIEBAIEF1eGlsaWFy eVByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJU3dpdGNoQmFja1RvTG9jYWxMYXRj aCgpOwogCXBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAorCS8qIElmIHRo aXMgd2FzIG9uZSBvZiBhdXggcHJvY2Vzc2VzIGFkdmVydGlzZWQgaW4gUHJvY0dsb2JhbCwg Y2xlYXIgaXQgKi8KKwlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX0FVVE9WQUNfTEFVTkNIRVIp CisJeworCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5j aGVyUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJv Y0dsb2JhbC0+YXZMYXVuY2hlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCX0KKwlp ZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1dBTF9XUklURVIpCisJeworCQlBc3NlcnQocGdfYXRv bWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQcm9jKSA9PSBNeVByb2NOdW1i ZXIpOworCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQcm9j LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwl9CisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9D SEVDS1BPSU5URVIpCisJeworCQlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xv YmFsLT5jaGVja3BvaW50ZXJQcm9jKSA9PSBNeVByb2NOdW1iZXIpOworCQlwZ19hdG9taWNf d3JpdGVfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJTlZBTElEX1BST0Nf TlVNQkVSKTsKKwl9CisKIAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7CiAJTXlQ cm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXgg MjNlNWNkOTgxNjEuLjFmMWFiN2QwMmNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNDQ1LDEx ICs0NDUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAlwZ19hdG9taWNfdWludDMy IGNsb2dHcm91cEZpcnN0OwogCiAJLyoKLQkgKiBDdXJyZW50IHNsb3QgbnVtYmVycyBvZiBz b21lIGF1eGlsaWFyeSBwcm9jZXNzZXMuIFRoZXJlIGNhbiBiZSBvbmx5IG9uZQorCSAqIEN1 cnJlbnQgcHJvYyBudW1iZXJzIG9mIHNvbWUgYXV4aWxpYXJ5IHByb2Nlc3Nlcy4gVGhlcmUg Y2FuIGJlIG9ubHkgb25lCiAJICogb2YgZWFjaCBvZiB0aGVzZSBydW5uaW5nIGF0IGEgdGlt ZS4KIAkgKi8KLQlQcm9jTnVtYmVyCXdhbHdyaXRlclByb2M7Ci0JUHJvY051bWJlcgljaGVj a3BvaW50ZXJQcm9jOworCXBnX2F0b21pY191aW50MzIgYXZMYXVuY2hlclByb2M7CisJcGdf YXRvbWljX3VpbnQzMiB3YWx3cml0ZXJQcm9jOworCXBnX2F0b21pY191aW50MzIgY2hlY2tw b2ludGVyUHJvYzsKIAogCS8qIEN1cnJlbnQgc2hhcmVkIGVzdGltYXRlIG9mIGFwcHJvcHJp YXRlIHNwaW5zX3Blcl9kZWxheSB2YWx1ZSAqLwogCWludAkJCXNwaW5zX3Blcl9kZWxheTsK LS0gCjIuNDcuMwoK --------------ZHgTx0qFX1GNOQa2CNNq5QhB Content-Type: text/x-patch; charset=UTF-8; name="0005-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="0005-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSAxMjhmZjRmZTQ1N2Q5ODZjZjM4ZWRiNWUyODZhYWNjMjkyM2FiODJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMTIgRmViIDIwMjYgMTc6MDc6MjggKzAyMDAK U3ViamVjdDogW1BBVENIIDUvNV0gUmVwbGFjZSBMYXRjaGVzIHdpdGggSW50ZXJydXB0cwoK VGhlIExhdGNoIHdhcyBhIGZsYWcsIHdpdGggYW4gaW50ZXItcHJvY2VzcyBzaWduYWxsaW5n IG1lY2hhbmlzbSB0aGF0CmFsbG93ZWQgYSBwcm9jZXNzIHRvIHdhaXQgZm9yIHRoZSBMYXRj aCB0byBiZSBzZXQuIE15IG9yaWdpbmFsIHZpc2lvbgpmb3IgTGF0Y2hlcyB3YXMgdGhhdCB5 b3UgY291bGQgaGF2ZSBkaWZmZXJlbnQgbGF0Y2hlcyBmb3IgZGlmZmVyZW50CnRoaW5ncyB0 aGF0IHlvdSBuZWVkIHRvIHdhaXQgZm9yLCBidXQgaW4gcHJhY3RpY2UsIGFsbW9zdCBhbGwg Y29kZQp1c2VkIG9uZSAicHJvY2VzcyBsYXRjaCIgdGhhdCB3YXMgc2hhcmVkIGZvciBhbGwg d2FrZXVwcy4gVGhlIG9ubHkKZXhjZXB0aW9uIHdhcyB0aGUgInJlY292ZXJ5V2FrZXVwTGF0 Y2giLiBJIHRoaW5rIHRoZSByZWFzb24gdGhhdCB3ZQplbmRlZCB1cCBqdXN0IHNoYXJpbmcg dGhlIHNhbWUgbGF0Y2ggZm9yIGFsbCB3YWtldXBzIGlzIHRoYXQgaXQgd2FzCmN1bWJlcnNv bWUgaW4gcHJhY3RpY2UgdG8gZGVhbCB3aXRoIG11bHRpcGxlIGxhdGNoZXMuIEZvciBzdGFy dGVycywKdGhlcmUgd2FzIG5vIG1hY2hpbmVyeSBmb3Igd2FpdGluZyBmb3IgbXVsdGlwbGUg bGF0Y2hlcyBhdCB0aGUgc2FtZQp0aW1lLiBTZWNvbmRseSwgY2hhbmdpbmcgdGhlICJvd25l cnNoaXAiIG9mIGEgbGF0Y2ggbmVlZGVkIGV4dHJhCmxvY2tpbmcgb3Igb3RoZXIgY29vcmRp bmF0aW9uLiBUaGlyZGx5LCBlYWNoIGludGVyLXByb2Nlc3MgbGF0Y2gKbmVlZGVkIHRvIGJl IGluaXRpYWxpemVkIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCB0aW1lLgoKVGhpcyBwYXRjaCBl bWJyYWNlcyB0aGUgcmVhbGl0eSBvZiBob3cgTGF0Y2hlcyB3ZXJlIHVzZWQsIGFuZCByZXBs YWNlcwp0aGUgTGF0Y2hlcyB3aXRoIGEgcGVyLXByb2Nlc3MgaW50ZXJydXB0IG1hc2suIFlv dSBjYW4gbm8gbG9uZ2VyCmFsbG9jYXRlIExhdGNoZXMgaW4gYXJiaXRyYXJ5IHNoYXJlZCBt ZW1vcnkgc3RydWN0cyBhbmQgYW4gaW50ZXJydXB0CmlzIGFsd2F5cyBkaXJlY3RlZCBhdCBh IHBhcnRpY3VsYXIgcHJvY2VzcywgYWRkcmVzc2VkIGJ5IGl0cwpQcm9jTnVtYmVyLiBFYWNo IHByb2Nlc3MgaGFzIGEgYml0bWFzayBvZiBwZW5kaW5nIGludGVycnVwdHMgaW4KUEdQUk9D LgoKVGhpcyByZXBsYWNlcyBQcm9jU2lnbmFscyBhbmQgbWFueSBkaXJlY3QgdXNlcyBvZiBV bml4IHNpZ25hbHMgd2l0aAppbnRlcnJ1cHRzLiBGb3IgZXhhbXBsZSwgdGhlIGJhY2tlbmQt cHJpdmF0ZSBQcm9jRGllUGVuZGluZyBmbGFnIGlzCnJlcGxhY2VkIHdpdGggdGhlIElOVEVS UlVQVF9URVJNSU5BVEUgaW50ZXJydXB0LiBTSUdURVJNIGNhbiBzdGlsbCBiZQp1c2VkIHRv IHJhaXNlIGl0LCBidXQgdGhlIGRlZmF1bHQgU0lHVEVSTSBzaWduYWwgaGFuZGxlciBub3cg anVzdApyYWlzZXMgSU5URVJSVVBUX1RFUk1JTkFURS4KCkhhbmRsaW5nIGludGVycnVwdHMK LS0tLS0tLS0tLS0tLS0tLS0tLQoKVG8gY29udHJvbCB3aGljaCBpbnRlcnJ1cHRzIGNhbiBi ZSBwcm9jZXNzZWQgYXQgd2hhdCB0aW1lLCB0aGVyZSBhcmUgYQpmZXcgbWVjaGFuaXNtcy4g Rmlyc3RseSwgeW91IGNhbiByZWdpc3RlciBhIGhhbmRsZXIgZnVuY3Rpb24gZm9yIGVhY2gK aW50ZXJydXB0LCB3aGljaCB3aWxsIGJlIGNhbGxlZCBmcm9tIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgaWYgdGhlCmludGVycnVwdCBpcyBwZW5kaW5nLiBBZnRlciB0aGlzIGNvbW1pdCwg UHJvY2Vzc0ludGVycnVwdHMoKSBoYXMgbm8Ka25vd2xlZGdlIGFib3V0IHRoZSBtZWFuaW5n IG9mIHRoZSBkaWZmZXJlbnQgaW50ZXJydXB0cywgaXQganVzdCBjYWxscwp0aGUgcmVnaXN0 ZXJlZCBjYWxsYmFjayBmdW5jdGlvbnMuIERpZmZlcmVudCBwcm9jZXNlc3MgY2FuIHNldCB1 cApkaWZmZXJlbnQgaGFuZGxlcnMsIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgYnV0IHNv bWUgY29tbW9ubHkgdXNlZApoYW5kbGVycyBhcmUgcHJvdmlkZWQgYW5kIGluc3RhbGxlZCBk dXJpbmcgYmFja2VuZCBzdGFydHVwLgoKSW4gYWRkaXRpb24gdG8gQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKSwgeW91IGNhbiBhbHNvIGNoZWNrIHdoZXRoZXIgYQpwYXJ0aWN1bGFyIGludGVy cnVwdCBpcyBwZW5kaW5nIGFuZCBoYW5kbGUgaXQgeW91cnNlbGYuCgpNb3N0IGNhbGxlcnMg b2YgV2FpdEludGVycnVwdCAod2hpY2ggcmVwbGFjZXMgV2FpdExhdGNoKSB1c2UKQ2hlY2tG b3JJbnRlcnJ1cHRNYXNrLCB3aGljaCBpcyBhIGJpdG1hc2sgdGhhdCBpbmNsdWRlcyBhbGwg dGhlCmludGVycnVwdHMgdGhhdCBhcmUgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBU UygpIGluIHRoZSBjdXJyZW50CnN0YXRlLiBDSEVDS19GT1JfSU5URVJSVVBUUygpIGNsZWFy cyB0aGUgaW50ZXJydXB0cyBiaXRzIHRoYXQgaXQKcHJvY2Vzc2VzLCB0aGUgY2FsbGVyIGlz IG5vIGxvbmdlciByZXF1aXJlZCB0byBkbyBDbGVhckludGVycnVwdCAob3IKUmVzZXRMYXRj aCkgZm9yIHRob3NlIGJpdHMuIElmIHlvdSB3YWtlIHVwIGZvciBvdGhlciBpbnRlcnJ1cHRz IHRoYXQKYXJlIG5vdCBoYW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHlvdSBz dGlsbCBuZWVkIHRvIGNsZWFyCnRob3NlLgoKTm93IHRoYXQgdGhlcmUgYXJlIHNlcGFyYXRl IGJpdHMgZm9yIGRpZmZlcmVudCB0aGluZ3MsIGl0J3MgcG9zc2libGUKdG8gZG8gZS5nLiBX YWl0SW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKSU5URVJSVVBUX1FVRVJZ X0NBTkNFTCkgdG8gd2FpdCBqdXN0IGZvciBhIGNvbmZpZyByZWxvYWQgcmVxdWVzdCBvcgpx dWVyeSBjYW5jZWxsYXRpb24sIGFuZCBub3Qgd2FrZSB1cCBvbiBvdGhlciBldmVudHMgbGlr ZSBhIHNodXRkb3duCnJlcXVlc3QuIFRoYXQncyBub3QgdmVyeSB1c2VmdWwgaW4gcHJhY3Rp Y2UsIGFzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKc3RpbGwgcHJvY2Vzc2VzIHRob3NlIGlu dGVycnVwdHMgaWYgeW91IGNhbGwgaXQsIGFuZCB5b3Ugd291bGQgd2FudCB0bwpwcm9jZXNz IGFsbCB0aGUgc3RhbmRhcmQgaW50ZXJydXB0cyBwcm9tcHRseSBhbnl3YXkuIEl0IG1pZ2h0 IGJlCnVzZWZ1bCB0byBjaGVjayBmb3Igc3BlY2lmaWMgaW50ZXJydXB0cyB3aXRoIEludGVy cnVwdFBlbmRpbmcoKSwKd2l0aG91dCBpbW1lZGlhdGVseSBwcm9jZXNzaW5nIHRoZW0sIGhv d2V2ZXIuIHNwZ2RvaW5zZXJ0KCkgZG9lcwpzb21ldGhpbmcgbGlrZSB0aGF0LiBJbiB0aGlz IGNvbW1pdCBJIGRpZG4ndCBjaGFuZ2UgaXRzIG92ZXJhbGwgbG9naWMsCmJ1dCBpdCBwcm9i YWJseSBjb3VsZCBiZSBtYWRlIG1vcmUgZmluZS1ncmFpbmVkIG5vdy4KCk1vcmUgaW1wb3J0 YW50bHksIHlvdSBjYW4gbm93IGhhdmUgYWRkaXRpb25hbCBpbnRlcnJ1cHRzIHRoYXQgYXJl CnByb2Nlc3NlZCBsZXNzIGZyZXF1ZW50bHkgYW5kIGRvIG5vdCB3YWtlIHVwIHRoZSBiYWNr ZW5kIHdoZW4gaXQncyBub3QKcHJlcGFyZWQgdG8gcHJvY2VzcyB0aGVtLiBGb3IgZXhhbXBs ZSwgdGhlIFNJTlZBTF9DQVRDSFVQIGludGVycnVwdCBpcwpvbmx5IHByb2Nlc3NlZCB3aGVu IHRoZSBiYWNrZW5kIGlzIGlkbGUuIFByZXZpb3VzbHksIGEgY2F0Y2h1cCByZXF1ZXN0Cndv dWxkIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2hldGhlciBpdCB3YXMgcmVhZHkgdG8gaGFuZGxl IGl0IG9yIG5vdDsKbm93IGl0IG9ubHkgd2FrZXMgdXAgd2hlbiB0aGUgYmFja2VuZCBpcyBp ZGxlLiBUaGF0J3Mgbm90IHRvbwpzaWduaWZpY2FudCBmb3IgY2F0Y2h1cCBpbnRlcnJ1cHRz IGJlY2F1c2UgdGhleSBkb24ndCBvY2N1ciB0aGF0IG9mdGVuCmFueXdheSwgYnV0IGl0J3Mg c3RpbGwgbmljZSBhbmQgY291bGQgYmUgbW9yZSBzaWduaWZpY2FudCB3aXRoIG90aGVyCmlu dGVycnVwdHMuCgpUaGVyZSdzIHN0aWxsIGEgZ2VuZXJhbC1wdXJwb3NlIElOVEVSUlVQVF9X QUlUX1dBS0VVUCBpbnRlcnJ1cHQgdGhhdAppcyBtdWx0aXBsZXhlZCBmb3IgbWFueSBkaWZm ZXJlbnQgcHVycG9zZXMgaW4gZGlmZmVyZW50IHByb2Nlc3NlcywgZm9yCmV4YW1wbGUgdG8g d2FrZSB1cCB0aGUgd2Fsd3JpdGVyIHdoZW4gaXQgaGFzIHdvcmsgdG8gZG8sIGFuZCB0byB3 YWtlCnVwIHByb2Nlc3NlcyB3YWl0aW5nIG9uIGEgY29uZGl0aW9uIHZhcmlhYmxlLiBUaGUg Y29tbW9uIHByb3BlcnR5IG9mCnRob3NlIHVzZXMgaXMgdGhhdCB0aGVyZSdzIHNvbWUgb3Ro ZXIgZmxhZyBvciBjb25kaXRpb24gdGhhdCBpcwpjaGVja2VkIG9uIGVhY2ggd2FrZXVwLCB0 aGUgd2FrZXVwIGludGVycnVwdCBpdHNlbGYgbWVhbnMgbWVyZWx5IHRoYXQKc29tZXRoaW5n IGludGVyZXN0aW5nIG1pZ2h0J3ZlIGhhcHBlbmVkLgoKUmVwbGFjaW5nIHJlY292ZXJ5V2Fr ZXVwTGF0Y2gKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBJTlRFUlJVUFRf UkVDT1ZFUllfQ09OVElOVUUgcmVwbGFjZXMgcmVjb3ZlcnlXYWtldXBMYXRjaC4gV2l0aAp0 aGlzIG5ldyBpbnRlcmZhY2UsIHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGVhc2lseSB3YWl0 IGZvciB0aGUgY29tbW9uCmludGVycnVwdHMgYXQgdGhlIHNhbWUgdGltZSBhcyBJTlRFUlJV UFRfUkVDT1ZFUllfQ09OVElOVUUuClByZXZpb3VzbHksIHRoZSBjb2RlIHRoYXQgd2FpdGVk IG9uIHJlY292ZXJ5V2FrZXVwTGF0Y2ggaGFkIHRvIHJlc29ydAp0byB0aW1lb3V0cyB0byBy ZWFjdCB0byBvdGhlciBzaWduYWxzLCBiZWNhdXNlIGl0IHdhcyBub3QgcG9zc2libGUgdG8K d2FpdCBmb3IgdHdvIGxhdGNoZXMgYXQgdGhlIHNhbWUgdGltZS4gUHJldmlvdXMgYXR0ZW1w dCBhdCB1bmlmeWluZwp0aG9zZSB3YWtldXBzIHdhcyBpbiBjb21taXQgYWMyMjkyOWEyNiwg YnV0IGl0IHdhcyByZXZlcnRlZCBpbiBjb21taXQKMDBmNjkwYTIzOSBiZWNhdXNlIGl0IGNh dXNlZCBhIGxvdCBvZiBzcHVyaW91cyB3YWtldXBzIHdoZW4gdGhlCnN0YXJ0dXAgcHJvY2Vz cyB3YXMgd2FpdGluZyBmb3IgcmVjb3ZlcnkgY29uZmxpY3RzLiBUaGUgbmV3IG1hY2hpbmVy eQphdm9pZHMgdGhhdCBwcm9ibGVtIGJ5IG1ha2luZyBpdCBlYXN5IHRvIHdhaXQgZm9yIHR3 byBpbnRlcnJ1cHRzIGF0CnRoZSBzYW1lIHRpbWUuCgpGaXggbG9zdCB3YWtldXAgaXNzdWUg aW4gbG9naWNhbCByZXBsaWNhdGlvbiBsYXVuY2hlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKU2ltaWxhcmx5IHRoZXJlJ3Mgbm93 IGEgZGVkaWNhdGVkIGludGVycnVwdCBiaXQgdG8gbm90aWZ5IHRoZSBsb2dpY2FsCnJlcGxp Y2F0aW9uIGxhdW5jaGVyIGFib3V0IHN1YnNjcmlwdGlvbiBjaGFuZ2VzLiBUaGF0IGZpeGVz IHRoZSBsb3N0IHdha2V1cCBpc3N1ZSBkaXNjdXNzZWQgYXQ6CiAgRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC80NzY2NzJlNy02MmYxLTRjYWIt YTgyMi1mM2E4ZTk0OWRkM2ZAaWtpLmZpCiAgRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTcz MjdjYjVAaWtpLmZpCgpCYWNrZ3JvdW5kIHdvcmtlciBzdGF0ZSBjaGFuZ2Ugbm90aWZpY2F0 aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCklOVEVS UlVQVF9XQUlUX1dBS0VVUCBpcyB1c2VkIGZvciBiZ3dvcmtlciBzdGF0ZSBjaGFuZ2Ugbm90 aWZpY2F0aW9uLgpBcyBwYXJ0IG9mIGEgcHJvamVjdCB0byByZW1vdmUgdGhlIHJlbGlhbmNl IG9uIFBJRHMgdG8gaWRlbnRpZnkKYmFja2VuZHMsIGJhY2tlbmRzIHRoYXQgcmVnaXN0ZXIg ZHluYW1pYyBiYWNrZ3JvdW5kIHdvcmtlcnMgd2lsbCBub3cKcmVjZWl2ZSBJTlRFUlJVUFRf V0FJVF9XQUtFVVAgc2VudCBkaXJlY3RseSBieSB0aGUgcG9zdG1hc3RlciB3aGVuIHRoZQp3 b3JrZXIgc3RhdGUgY2hhbmdlcy4gIFByZXZpb3VzbHksIHRoZSBwb3N0bWFzdGVyIHdvdWxk IHNlbmQgYSBTSUdVU1IxCnNpZ25hbCwgd2hpY2ggcmVsaWVkIG9uIHRoZSBQcm9jU2lnbmFs IHN5c3RlbSdzIGhhbmRsZXIgc2V0dGluZyB0aGUKaW50ZXJydXB0IGZsYWcsIHdpdGggdGhl IHNhbWUgZW5kIGVmZmVjdC4gIE5vdyB0aGF0IGludGVybWVkaWF0ZSBzdGVwCmlzIHNraXBw ZWQuCgpUaGUgZmllbGQgYmd3X25vdGlmeV9waWQgc3RpbGwgZXhpc3RzIGZvciBiYWNrd2Fy ZHMgY29tcGF0aWJpbGl0eSwgYnV0CmhhcyBubyBlZmZlY3QgYW5kIG1heSBiZSByZW1vdmVk IGluIGEgbGF0ZXIgcmVsZWFzZS4KUmVnaXN0ZXJCYWNrZ3JvdW5kV29ya2VyKCkgbm93IGF1 dG9tYXRpY2FsbHkgYXNzdW1lcyB0aGF0IHRoZSBjYWxsZXIKd291bGQgbGlrZSBzdGF0ZSBj aGFuZ2Ugbm90aWZpY2F0aW9ucyBkZWxpdmVyZWQgdG8gaXRzIHByb2MgbnVtYmVyLAp1bmxl c3MgQkdXX05PX05PVElGWSBpcyBzZXQgaW4gYmd3X2ZsYWdzLgoKUmVtb3Zpbmcgb3RoZXIg Y2FzZXMgb2YgUElEcyBmcm9tIHRoZSBiZ3dvcmtlciBBUEkgaXMgbGVmdCBmb3IgbGF0ZXIK d29yazsgdGhpcyBwYXRjaCBpcyBjb25jZXJuZWQgb25seSB3aXRoIHJlbW92aW5nIGEgZGVw ZW5kZW5jeSBvbgpQcm9jU2lnbmFsIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgZHVlIHRvIGJl IHJlbW92ZWQgYnkgYSBsYXRlciBjb21taXQuCgpYWFg6IG9yaWdpbmFsIHRleHQgZnJvbSBU aG9tYXMncyBwYXRjaAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK IlByb2NTaWduYWxzIiB3ZXJlIGEgdHdvLXN0ZXAgd2F5IGZvciBvbmUgYmFja2VuZCB0byBh c2sgYW5vdGhlciBiYWNrZW5kCnRvIGRvIHNvbWV0aGluZywgYnkgbXVsdGlwbGV4aW5nIFNJ R1VTUjEuICBIaXN0b3JpY2FsbHksIHJlYWwgd29yayB3YXMKZG9uZSBpbiB0aGUgU0lHVVNS MSBoYW5kbGVyLCBidXQgY29tbWl0IDBkYTA5NmQ3IHJlbW92ZWQgdGhlIGxhc3QgY2FzZQpv ZiB0aGF0LiAgTm93IHRoZSBoYW5kbGVyIGp1c3Qgc2V0ICJpbnRlcnJ1cHQgcGVuZGluZyIg ZmxhZ3MsIGNhbGxlZApTZXRMYXRjaChNeUxhdGNoKSB0byBjbG9zZSByYWNlcywgYW5kIHRo ZW4gZGlkIGFsbCB0aGUgaW50ZXJlc3Rpbmcgd29yawphdCB0aGUgbmV4dCBDSEVDS19GT1Jf SU5URVJSVVBUUygpIGNhbGwuCgpUaGlzIGNvbW1pdCByZW1vdmVzIHRoZSBQcm9jU2lnbmFs IHN0ZXAsIHJlcGxhY2luZyBQcm9jU2lnbmFscyB3aXRoCkludGVycnVwdHMuCgpCZW5lZml0 cyBvZiB0aGlzIHJlZmFjdG9yaW5nIGluY2x1ZGUgcmVtb3ZpbmcgdW5uZWNlc3NhcnkgY29u Y2VwdHMgYW5kCnRlcm1pbm9sb2d5LCBhdm9pZGluZyB0aGUgcmlzayBvZiBwZW9wbGUgcHV0 dGluZyBidWdneSBjb2RlIGJhY2sgaW50bwpzaWduYWwgaGFuZGxlcnMsIHJlbW92aW5nIGEg d2hvbGUgbG90IG9mIGdsb2JhbCB2YXJpYWJsZXMsIHJlbW92aW5nCmRlcGVuZGVuY2llcyBv biBQSURzIGFuZCB0aGUgcHJvY2VzcyBtb2RlbCwgcmVtb3Zpbmcgcmlza3Mgb2Ygc2VuZGlu ZwphIHNpZ25hbCB0aGF0IGhhcyBkZWZhdWx0IGFjdGlvbiBvZiB0ZXJtaW5hdGlvbiB0byB0 aGUgd3JvbmcgcHJvY2VzcywKYW5kIHRha2luZyBhIHN0ZXAgdG93YXJkcyBiZWluZyBhYmxl IHJlbW92ZSB0aGUgZmFrZSBzaWduYWwgc3lzdGVtCmZyb20gdGhlIFdpbmRvd3MgcG9ydC4K Ck5vdGFibGUgY2hhbmdlczoKCiAqIGFsbCBjYWxscyB0byBTZW5kUHJvY1NpZ25hbChwaWQs IFBST0NTSUdfWFhYKSBiZWNvbWUKICAgU2VuZEludGVycnVwdChJTlRFUlJVUFRfWFhYLCBw cm9jbm8pCiAqIGFsbCBYeHhQZW5kaW5nIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGdvbmU7IHRo ZXkgYXJlIHJlcHJlc2VudGVkCiAgIGFzIGJpdHMgaW4gTXlQcm9jLT5wZW5kaW5nX2ludGVy cnVwdHMKICogdGhlIFNJR1VTUjEgaGFuZGxlciBpcyBnb25lCiAqIHBsYWNlcyB0aGF0IGtu b3cgdGhlIFBJRHMgb2Ygb3RoZXIgYmFja2VuZHMgbXVzdCBub3cgdXNlIHByb2Nub3MKICAg aW5zdGVhZAoKVGhlIG9ubHkgY29kZSBsZWZ0IGluIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyByZWxhdGVzIHRvClByb2NTaWduYWxCYXJyaWVycy4gIFhYWCBUaG9z ZSBzaG91bGQgcGVyaGFwcyBiZSByZW5hbWVkLgoKU0lHVVNSMSBjYW4gbm93IGJlIHNldCB0 byBTSUdfSUdOIGluIG1vc3QgYmFja2VuZHMuICBTb21lIHNwZWNpYWwgY2FzZXMKcmVtYWlu LCB0aGF0IHdlcmUgbm90IHVzaW5nIHRoZSBnZW5lcmFsIHNpZ3VzcjFfaGFuZGxlciAobm93 IHJlbW92ZWQpLgotLS0KIGNvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jICAgICAg ICAgICAgICB8ICA2MyArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAg ICAgICAgICAgIHwgIDIxICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAzMiArLQogZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMu c2dtbCAgICAgICAgICAgIHwgICAyICstCiBkb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sICAg ICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX3BhZ2VvcHMuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW5fcmV2bWFwLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90b2FzdF9pbnRlcm5hbHMuYyAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmJ0cmVlLmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZGF0YXBhZ2UuYyAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5mYXN0LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luZ2V0LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbnV0aWwuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMgICAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNlYXJjaC5jICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICAg IHwgIDEwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNo LmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2lu c2VydC5jICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2lu c2VydC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn c2Nhbi5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd2YWN1dW0uYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9SRUFETUUgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL1JFQURNRS5wYXJhbGxlbCAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vZ2VuZXJpY194bG9nLmMgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9wYXJhbGxlbC5jICAgICAgICAgfCAgNzcgKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zbHJ1LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgMTIwICsrLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgICAgICAgICB8ICAzOSArLQogc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyAgICAgIHwgIDE4ICstCiBz cmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHBhcnNlLnkgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDE1MSAr Ky0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jICAgICAgICAgIHwg IDExICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAg fCAgMTMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAg ICB8ICAyNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAg ICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9pcGMvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgfCAgMTkgKwogc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZCAgICAgICAgICAgICAg ICAgICAgIHwgMjYwICsrKysrKysrCiBzcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMgICAg ICAgICAgICAgICAgICAgfCA0MzEgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9pcGMvbWVz b24uYnVpbGQgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2JhY2tlbmQvaXBjL3Np Z25hbF9oYW5kbGVycy5jICAgICAgICAgICAgIHwgMTYwICsrKysrCiBzcmMvYmFja2VuZC9s aWJwcS9hdXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYyAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tl bmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyAgICAgICAgIHwgICA3ICstCiBzcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgNjEgKy0KIHNyYy9i YWNrZW5kL2xpYnBxL3BxY29tbS5jICAgICAgICAgICAgICAgICAgICB8ICAzNiArLQogc3Jj L2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDI5ICstCiBz cmMvYmFja2VuZC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxIC0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAgICAgICB8IDE1MSAr Ky0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAg fCAxNzMgKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAg ICAgICB8ICA1MSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAg ICAgICAgIHwgMTkxICsrKy0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQu YyAgICAgICAgICAgIHwgMTA4IC0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9tZXNvbi5i dWlsZCAgICAgICAgICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNo LmMgICAgICAgICAgICAgICB8IDEwMCArKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jICAgICAgICAgICB8ICA1OCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9z dGFydHVwLmMgICAgICAgICAgICAgIHwgMTA0ICsrLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9zeXNsb2dnZXIuYyAgICAgICAgICAgIHwgIDM3ICstCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYyAgICAgICAgfCAgODMgKystCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHdyaXRlci5jICAgICAgICAgICAgfCAgNDYgKy0KIC4uLi9saWJwcXdhbHJl Y2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICB8ICAgMSAtCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxNDkgKystLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8IDEyNSArKy0tCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICA5MCArLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAzNyAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDQ4 ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAg MzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyAgICAgICAgICAgICB8 ICA0MiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgICAg IHwgIDU2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMg ICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAg ICAgICB8IDIyNyArKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW8uYyAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pby5j ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9k X3dvcmtlci5jICAgICAgIHwgIDczICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmbWdyLmMgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9mcmVlbGlzdC5jICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9kc21faW1wbC5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwYy5jICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvbGF0Y2guYyAgICAgICAgICAgICAgIHwgMzg5IC0tLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDEgLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICAgIHwgIDIyICstCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAyMjUgKy0tLS0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgICAgICAgICAgICAgIHwgMTI3 ICsrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgICAgICAgICB8 ICAxNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMgICAgICAgICAgICAg IHwgIDY4ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyAgICAgICAg ICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAg ICAgICB8ICA0MyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMg ICAgICAgIHwgMzk2ICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29u ZGl0aW9uX3ZhcmlhYmxlLmMgfCAgMzUgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYyAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3Byb2MuYyAgICAgICAgICAgICAgIHwgMTQ4ICsrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmMgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvdGNv cC9iYWNrZW5kX3N0YXJ0dXAuYyAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8IDYxNSArKysrKysrKystLS0tLS0t LS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwg IDExICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAgICAgICAgICAg fCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAgICAgICAg ICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAg ICAgICB8ICAyMyAtCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAg ICAgICAgfCAgNzggKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAg ICAgICAgICAgfCAgNDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jICAg ICAgICAgICAgICB8ICAgNyAtCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyAgICAg ICAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9jb21tb24vc2NyYW0tY29tbW9uLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o ICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5o ICAgICAgICAgICAgICAgICAgfCAgIDYgLQogc3JjL2luY2x1ZGUvaXBjL2ludGVycnVwdC5o ICAgICAgICAgICAgICAgICAgIHwgMzcwICsrKysrKysrKysrCiAuLi4vaW50ZXJydXB0Lmgg PT4gaXBjL3NpZ25hbF9oYW5kbGVycy5ofSAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaCAgICAgICB8ICA0OCArLQogc3JjL2luY2x1ZGUv bGlicHEvbGlicHEuaCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVk ZS9saWJwcS9wcW1xLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAxMzUgKy0tLQogc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oICAgICAgICAgICAgIHwgIDEwICstCiBz cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvc3RhcnR1cC5oICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwgICA1 IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oICAgICAgICAgICB8ICAg MSAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oICAgfCAg IDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwg ICA1ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggICAgICAgICAgICAgICAgICAg fCAxNDAgLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAg ICAgIHwgIDM3ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAg ICAgICAgICB8ICAzMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oICAgICAgICAg ICAgICAgICAgfCAgIDUgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaCAg ICAgICAgICAgIHwgIDM5ICstCiBzcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggICAgICAg ICAgICAgICAgICAgfCAgIDcgLQogc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCAgICAg ICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5h bC5oICAgICAgICAgICB8ICAgMSArCiBzcmMvcG9ydC9wZ19udW1hLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9wb3J0L3Bnc2xlZXAuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bnRlc3Rlci5jICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3NldHVwLmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvdGVzdC5jICAgICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NobV9tcS90ZXN0X3NobV9tcS5oICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1fbXEvd29ya2VyLmMgICAgICAgICB8ICAxOSArLQogc3JjL3Rlc3QvbW9kdWxlcy93 b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyAgICAgIHwgIDQ1ICstCiBzcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDE2MyBmaWxlcyBjaGFu Z2VkLCAzNTU0IGluc2VydGlvbnMoKyksIDM1ODkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL2lwYy9pbnRlcnJ1cHQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2lw Yy9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2lwYy9zaWdu YWxfaGFuZGxlcnMuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9sYXRjaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvaXBjL2ludGVy cnVwdC5oCiByZW5hbWUgc3JjL2luY2x1ZGUve3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmggPT4g aXBjL3NpZ25hbF9oYW5kbGVycy5ofSAoODIlKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcHJld2Fy bS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMKaW5k ZXggODllMTg3NDI1Y2MuLjZiZTVjYTljMTgzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3By ZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdh cm0uYwpAQCAtMzAsMTcgKzMwLDE1IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24u aCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2Vy LmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogI2luY2x1ZGUgInN0 b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKQEAgLTE3MCwxMCAr MTY4LDEzIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJYm9vbAkJZmlu YWxfZHVtcF9hbGxvd2VkID0gdHJ1ZTsKIAlUaW1lc3RhbXBUeiBsYXN0X2R1bXBfdGltZSA9 IDA7CiAKLQkvKiBFc3RhYmxpc2ggc2lnbmFsIGhhbmRsZXJzOyBvbmNlIHRoYXQncyBkb25l LCB1bmJsb2NrIHNpZ25hbHMuICovCi0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxl ckZvclNodXRkb3duUmVxdWVzdCk7Ci0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVy Rm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3Vz cjFfaGFuZGxlcik7CisJLyoKKwkgKiBXZSB3aWxsIGNoZWNrIGZvciBJTlRFUlJVUFRfVEVS TUlOQVRFIGV4cGxpY2l0bHkgaW4gdGhlIG1haW4gbG9vcCwgc28KKwkgKiBkaXNhYmxlIHRo ZSBub3JtYWwgaW50ZXJydXB0IGhhbmRsZXIuCisJICovCisJRGlzYWJsZUludGVycnVwdChJ TlRFUlJVUFRfVEVSTUlOQVRFKTsKKworCS8qIERlZmF1bHQgc2lnbmFsIGhhbmRsZXJzIGFy ZSBPSyBmb3IgdXM7IHVuYmxvY2sgc2lnbmFscy4gKi8KIAlCYWNrZ3JvdW5kV29ya2VyVW5i bG9ja1NpZ25hbHMoKTsKIAogCS8qIENyZWF0ZSAoaWYgbmVjZXNzYXJ5KSBhbmQgYXR0YWNo IHRvIG91ciBzaGFyZWQgbWVtb3J5IGFyZWEuICovCkBAIC0yMjIsMjcgKzIyMywyNyBAQCBh dXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChmaXJzdF90aW1lKQogCXsK IAkJYXB3X2xvYWRfYnVmZmVycygpOwotCQlmaW5hbF9kdW1wX2FsbG93ZWQgPSAhU2h1dGRv d25SZXF1ZXN0UGVuZGluZzsKKwkJZmluYWxfZHVtcF9hbGxvd2VkID0gIUludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSk7CiAJCWxhc3RfZHVtcF90aW1lID0gR2V0Q3Vy cmVudFRpbWVzdGFtcCgpOwogCX0KIAogCS8qIFBlcmlvZGljYWxseSBkdW1wIGJ1ZmZlcnMg dW50aWwgdGVybWluYXRlZC4gKi8KLQl3aGlsZSAoIVNodXRkb3duUmVxdWVzdFBlbmRpbmcp CisJd2hpbGUgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCXsK LQkJLyogSW4gY2FzZSBvZiBhIFNJR0hVUCwganVzdCByZWxvYWQgdGhlIGNvbmZpZ3VyYXRp b24uICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQl7Ci0JCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CisJCS8qIENoZWNrIGZvciBzdGFuZGFyZCBpbnRlcnJ1cHRz IGFuZCBjb25maWcgcmVsb2FkICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWlm IChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCVByb2Nl c3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCQl9CiAKIAkJaWYgKGF1dG9wcmV3YXJtX2lu dGVydmFsIDw9IDApCiAJCXsKIAkJCS8qIFdlJ3JlIG9ubHkgZHVtcGluZyBhdCBzaHV0ZG93 biwgc28ganVzdCB3YWl0IGZvcmV2ZXIuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0 Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJ CQkJIC0xTCwKLQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJTlRFUlJVUFRf Q09ORklHX1JFTE9BRCB8CisJCQkJCQkJCSBJTlRFUlJVUFRfVEVSTUlOQVRFLAorCQkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIC0xTCwK KwkJCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTI2 NiwxNCArMjY3LDEzIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQl9 CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZSBuZXh0IGR1bXAgdGltZS4gKi8KLQkJCSh2b2lk KSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIGRlbGF5X2luX21zLAotCQkJCQkJ CSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwK KwkJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIGRlbGF5X2lu X21zLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9Ci0KLQkJLyogUmVzZXQg dGhlIGxhdGNoLCBsb29wLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOwogCX0KIAogCS8q CkBAIC00MjMsNyArNDIzLDcgQEAgYXB3X2xvYWRfYnVmZmVycyh2b2lkKQogCQkgKiBMaWtl d2lzZSwgZG9uJ3QgbGF1bmNoIGlmIHdlJ3ZlIGFscmVhZHkgYmVlbiB0b2xkIHRvIHNodXQg ZG93bi4KIAkJICogKFRoZSBsYXVuY2ggd291bGQgZmFpbCBhbnl3YXksIGJ1dCB3ZSBtaWdo dCBhcyB3ZWxsIHNraXAgaXQuKQogCQkgKi8KLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRp bmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQkJ YnJlYWs7CiAKIAkJLyoKQEAgLTQ0NCw3ICs0NDQsNyBAQCBhcHdfbG9hZF9idWZmZXJzKHZv aWQpCiAJTFdMb2NrUmVsZWFzZSgmYXB3X3N0YXRlLT5sb2NrKTsKIAogCS8qIFJlcG9ydCBv dXIgc3VjY2VzcywgaWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmlzaC4gKi8KLQlpZiAoIVNodXRk b3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9U RVJNSU5BVEUpKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJhdXRvcHJld2FybSBz dWNjZXNzZnVsbHkgcHJld2FybWVkICVkIG9mICVkIHByZXZpb3VzbHktbG9hZGVkIGJsb2Nr cyIsCiAJCQkJCQlhcHdfc3RhdGUtPnByZXdhcm1lZF9ibG9ja3MsIG51bV9lbGVtZW50cykp KTsKQEAgLTUwNCw4ICs1MDQsNyBAQCBhdXRvcHJld2FybV9kYXRhYmFzZV9tYWluKERhdHVt IG1haW5fYXJnKQogCUJsb2NrSW5mb1JlY29yZCBibGs7CiAJZHNtX3NlZ21lbnQgKnNlZzsK IAotCS8qIEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnM7IG9uY2UgdGhhdCdzIGRvbmUsIHVu YmxvY2sgc2lnbmFscy4gKi8KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCS8qIERlZmF1 bHQgc2lnbmFsIGhhbmRsZXJzIGFyZSBPSyBmb3IgdXM7IHVuYmxvY2sgc2lnbmFscy4gKi8K IAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENvbm5lY3QgdG8g Y29ycmVjdCBkYXRhYmFzZSBhbmQgZ2V0IGJsb2NrIGluZm9ybWF0aW9uLiAqLwpAQCAtOTIz LDkgKzkyMiw2IEBAIGFwd19zdGFydF9sZWFkZXJfd29ya2VyKHZvaWQpCiAJCXJldHVybjsK IAl9CiAKLQkvKiBtdXN0IHNldCBub3RpZnkgUElEIHRvIHdhaXQgZm9yIHN0YXJ0dXAgKi8K LQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lzdGVy RHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTKSwK QEAgLTk1OCw5ICs5NTQsNiBAQCBhcHdfc3RhcnRfZGF0YWJhc2Vfd29ya2VyKHZvaWQpCiAJ c3RyY3B5KHdvcmtlci5iZ3dfbmFtZSwgImF1dG9wcmV3YXJtIHdvcmtlciIpOwogCXN0cmNw eSh3b3JrZXIuYmd3X3R5cGUsICJhdXRvcHJld2FybSB3b3JrZXIiKTsKIAotCS8qIG11c3Qg c2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBmb3Igc2h1dGRvd24gKi8KLQl3b3JrZXIuYmd3X25v dGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91 bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTKSwKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYwppbmRleCA0ODdhMWEyMzE3MC4uM2JmNzNlNGQyYTkgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTIyLDEzICsyMiwxMyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg ImxpYnBxL2xpYnBxLWJlLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUtZmUtaGVscGVy cy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3LmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCkBA IC04MjksOCArODI5LDggQEAgZG9fc3FsX2NvbW1hbmRfZW5kKFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc3FsLCBib29sIGNvbnN1bWVfaW5wdXQpCiAJLyoKIAkgKiBJZiByZXF1ZXN0 ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29ja2V0 LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGlzIGFsbG93 cyBwZ2Zkd19nZXRfcmVzdWx0IHRvIGNhbGwKLQkgKiBQUWdldFJlc3VsdCB3aXRob3V0IGZv cmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0LCB3aGljaAotCSAqIHdv dWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1 dC4pCisJICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBX YWl0SW50ZXJydXB0T3JTb2NrZXQsCisJICogd2hpY2ggd291bGQgYmUgbGFyZ2UgY29tcGFy ZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlpZiAoY29u c3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCiAJCXBnZmR3X3JlcG9ydF9l cnJvcihOVUxMLCBjb25uLCBzcWwpOwpAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgcGdmZHdfY2Fu Y2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUsCiAJLyoK IAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUg ZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZhaWxh YmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQgdG8KLQkgKiBjYWxs IFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdExhdGNo T3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhlIG92 ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKIAkgKiB3aGljaCB3b3VsZCBiZSBs YXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQogCSAq LwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChjb25uKSkKQEAgLTE1 NzgsNyArMTU3OCw3IEBAIHBnZmR3X2V4ZWNfY2xlYW51cF9xdWVyeV9lbmQoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29uc3Vt ZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3RlCiAJ ICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3X2dl dF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBmb3Jj aW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxsIFBRZ2V0 UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVycnVwdE9y U29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVy aGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5wdXQgJiYg IVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTY4NiwxMiArMTY4NiwxMSBAQCBwZ2Zkd19n ZXRfY2xlYW51cF9yZXN1bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lLAog CQkJCXBnZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJQ b3N0Z3Jlc0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJLyogU2xlZXAgdW50aWwgdGhlcmUn cyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCXdjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRj aCwKLQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKLQkJ CQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCSAg IFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2VfY2xl YW51cF9yZXN1bHQpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCXdjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJCQkgICBX TF9JTlRFUlJVUFQgfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkJICAgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgICBQUXNvY2tldChjb25u KSwKKwkJCQkJCQkJCSAgIGN1cl90aW1lb3V0LCBwZ2Zkd193ZV9jbGVhbnVwX3Jlc3VsdCk7 CiAKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LmMKaW5kZXggNjBkOTAzMjlhNjUuLmViOTI1ZmRhMzllIDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUg Im9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNp bmNsdWRlICJwb3N0Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisj aW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3Vj LmgiCkBAIC03Mjc2LDcgKzcyNzYsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZpZ3Vy ZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0FyZXEgPT0gYXJl cSk7CiAKIAlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgUFFz b2NrZXQoZnNzdGF0ZS0+Y29ubiksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJCQkJCSAgMCwg YXJlcSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dt bCBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IGIyMzllMzhhYWFlLi42N2Ex MDA1M2JiYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogICAgIGNoYXIgICAgICAgIGJnd19mdW5jdGlvbl9u YW1lW0JHV19NQVhMRU5dOwogICAgIERhdHVtICAgICAgIGJnd19tYWluX2FyZzsKICAgICBj aGFyICAgICAgICBiZ3dfZXh0cmFbQkdXX0VYVFJBTEVOXTsKLSAgICBwaWRfdCAgICAgICBi Z3dfbm90aWZ5X3BpZDsKKyAgICBwaWRfdCAgICAgICBiZ3dfbm90aWZ5X3BpZDsJCQkvKiBu b3QgdXNlZCAqLwogfSBCYWNrZ3JvdW5kV29ya2VyOwogPC9wcm9ncmFtbGlzdGluZz4KICAg PC9wYXJhPgpAQCAtMTMxLDYgKzEzMSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5k V29ya2VyCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8 dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5CR1dPUktFUl9OT19OT1RJRlk8 L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJHV09SS0VSX05PX05PVElGWTwvcHJpbWFyeT48L2lu ZGV4dGVybT4gTm9ybWFsbHksCisgICAgICAgdGhlIGJhY2tlbmQgdGhhdCByZWdpc3RlcnMg YSBkeW5hbWljIHdvcmtlciB3aWxsIGJlIG5vdGlmaWVkCisgICAgICAgd2l0aCA8bGl0ZXJh bD5JTlRFUlJVUFRfV0FJVF9XQUtFVVA8L2xpdGVyYWw+IHdoZW4gdGhlIHdvcmtlcidzIHN0 YXRlCisgICAgICAgY2hhbmdlcywgd2hpY2ggYWxsb3dzIHRoZSBjYWxsZXIgdG8gd2FpdCBm b3IgdGhlIHdvcmtlciB0byBzdGFydCBhbmQKKyAgICAgICBzaHV0IGRvd24uICBUaGF0IGNh biBiZSBzdXBwcmVzc2VkIGJ5IHNldHRpbmcgdGhpcyBmbGFnLgorICAgICAgIDwhLS0gRklY TUU6IFNob3VsZCB3ZSByZXNlcnZlIGEgZGVkaWNhdGVkIElOVEVSUlVQVCBiaXQgZm9yIGl0 PyBBbmQgaWYKKyAgICAgICAgICAgIHdlIGRvLCBkbyB3ZSBldmVuIG5lZWQgdGhlIEJHV09S S0VSX05PX05PVElGWSBmbGFnLCB0aGVyZSdzIHZlcnkgbGl0dGxlCisgICAgICAgICAgICBv dmVyaGVhZCBpbiBzZW5kaW5nIGEgdXNlbGVzcyBpbnRlcnJ1cHQgLS0+CisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CiAgICA8L3Zhcmlh YmxlbGlzdD4KIAogICA8L3BhcmE+CkBAIC0yMDQsMTIgKzIxOSw4IEBAIHR5cGVkZWYgc3Ry dWN0IEJhY2tncm91bmRXb3JrZXIKICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgPHN0cnVj dGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIFBJRCBvZiBhIFBv c3RncmVTUUwKLSAgIGJhY2tlbmQgcHJvY2VzcyB0byB3aGljaCB0aGUgcG9zdG1hc3RlciBz aG91bGQgc2VuZCA8bGl0ZXJhbD5TSUdVU1IxPC9saXRlcmFsPgotICAgd2hlbiB0aGUgcHJv Y2VzcyBpcyBzdGFydGVkIG9yIGV4aXRzLiAgSXQgc2hvdWxkIGJlIDAgZm9yIHdvcmtlcnMg cmVnaXN0ZXJlZAotICAgYXQgcG9zdG1hc3RlciBzdGFydHVwIHRpbWUsIG9yIHdoZW4gdGhl IGJhY2tlbmQgcmVnaXN0ZXJpbmcgdGhlIHdvcmtlciBkb2VzCi0gICBub3Qgd2lzaCB0byB3 YWl0IGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IHVwLiAgT3RoZXJ3aXNlLCBpdCBzaG91bGQg YmUKLSAgIGluaXRpYWxpemVkIHRvIDxsaXRlcmFsPk15UHJvY1BpZDwvbGl0ZXJhbD4uCisg ICA8c3RydWN0ZmllbGQ+Ymd3X25vdGlmeV9waWQ8L3N0cnVjdGZpZWxkPiBpcyBub3QgdXNl ZCBhbmQgbWF5IGJlIHJlbW92ZWQKKyAgIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgIDwvcGFy YT4KIAogICA8cGFyYT5PbmNlIHJ1bm5pbmcsIHRoZSBwcm9jZXNzIGNhbiBjb25uZWN0IHRv IGEgZGF0YWJhc2UgYnkgY2FsbGluZwpAQCAtMjUwLDcgKzI2MSw3IEBAIHR5cGVkZWYgc3Ry dWN0IEJhY2tncm91bmRXb3JrZXIKICAgIHJlaW5pdGlhbGl6ZXMgdGhlIGNsdXN0ZXIgZHVl IHRvIGEgYmFja2VuZCBmYWlsdXJlLiAgQmFja2VuZHMgd2hpY2ggbmVlZAogICAgdG8gc3Vz cGVuZCBleGVjdXRpb24gb25seSB0ZW1wb3JhcmlseSBzaG91bGQgdXNlIGFuIGludGVycnVw dGlibGUgc2xlZXAKICAgIHJhdGhlciB0aGFuIGV4aXRpbmc7IHRoaXMgY2FuIGJlIGFjaGll dmVkIGJ5IGNhbGxpbmcKLSAgIDxmdW5jdGlvbj5XYWl0TGF0Y2goKTwvZnVuY3Rpb24+LiBN YWtlIHN1cmUgdGhlCisgICA8ZnVuY3Rpb24+V2FpdEludGVycnVwdCgpPC9mdW5jdGlvbj4u IE1ha2Ugc3VyZSB0aGUKICAgIDxsaXRlcmFsPldMX1BPU1RNQVNURVJfREVBVEg8L2xpdGVy YWw+IGZsYWcgaXMgc2V0IHdoZW4gY2FsbGluZyB0aGF0IGZ1bmN0aW9uLCBhbmQKICAgIHZl cmlmeSB0aGUgcmV0dXJuIGNvZGUgZm9yIGEgcHJvbXB0IGV4aXQgaW4gdGhlIGVtZXJnZW5j eSBjYXNlIHRoYXQKICAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBpdHNlbGYgaGFz IHRlcm1pbmF0ZWQuCkBAIC0yODMsMTAgKzI5NCw3IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tn cm91bmRXb3JrZXIKIAogICA8cGFyYT4KICAgIEluIHNvbWUgY2FzZXMsIGEgcHJvY2VzcyB3 aGljaCByZWdpc3RlcnMgYSBiYWNrZ3JvdW5kIHdvcmtlciBtYXkgd2lzaCB0bwotICAgd2Fp dCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCB1cC4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hl ZCBieSBpbml0aWFsaXppbmcKLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90aWZ5X3BpZDwvc3Ry dWN0ZmllbGQ+IHRvIDxsaXRlcmFsPk15UHJvY1BpZDwvbGl0ZXJhbD4gYW5kCi0gICB0aGVu IHBhc3NpbmcgdGhlIDx0eXBlPkJhY2tncm91bmRXb3JrZXJIYW5kbGUgKjwvdHlwZT4gb2J0 YWluZWQgYXQKLSAgIHJlZ2lzdHJhdGlvbiB0aW1lIHRvCisgICB3YWl0IGZvciB0aGUgd29y a2VyIHRvIHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIHdpdGggdGhlCiAg ICA8ZnVuY3Rpb24+V2FpdEZvckJhY2tncm91bmRXb3JrZXJTdGFydHVwKDxwYXJhbWV0ZXI+ QmFja2dyb3VuZFdvcmtlckhhbmRsZQogICAgKmhhbmRsZTwvcGFyYW1ldGVyPiwgPHBhcmFt ZXRlcj5waWRfdCAqPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+IGZ1bmN0aW9uLgogICAgVGhp cyBmdW5jdGlvbiB3aWxsIGJsb2NrIHVudGlsIHRoZSBwb3N0bWFzdGVyIGhhcyBhdHRlbXB0 ZWQgdG8gc3RhcnQgdGhlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvb2F1dGgtdmFsaWRh dG9ycy5zZ21sIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMuc2dtbAppbmRleCA3 MDQwODlkZDdiMy4uM2M0MjY4Zjc0MWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9vYXV0 aC12YWxpZGF0b3JzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMu c2dtbApAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgICAgY29ycmVjdGx5IGhhbmRsZSBhdXRo ZW50aWNhdGlvbiB0aW1lb3V0cyBhbmQgc2h1dGRvd24gc2lnbmFscyBmcm9tCiAgICAgICAg PGFwcGxpY2F0aW9uPnBnX2N0bDwvYXBwbGljYXRpb24+LiBGb3IgZXhhbXBsZSwgYmxvY2tp bmcgY2FsbHMgb24gc29ja2V0cwogICAgICAgIHNob3VsZCBnZW5lcmFsbHkgYmUgcmVwbGFj ZWQgd2l0aCBjb2RlIHRoYXQgaGFuZGxlcyBib3RoIHNvY2tldCBldmVudHMKLSAgICAgICBh bmQgaW50ZXJydXB0cyB3aXRob3V0IHJhY2VzIChzZWUgPGZ1bmN0aW9uPldhaXRMYXRjaE9y U29ja2V0KCk8L2Z1bmN0aW9uPiwKKyAgICAgICBhbmQgaW50ZXJydXB0cyB3aXRob3V0IHJh Y2VzIChzZWUgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHRPclNvY2tldCgpPC9mdW5jdGlvbj4s CiAgICAgICAgPGZ1bmN0aW9uPldhaXRFdmVudFNldFdhaXQoKTwvZnVuY3Rpb24+LCBldCBh bCksIGFuZCBsb25nLXJ1bm5pbmcgbG9vcHMKICAgICAgICBzaG91bGQgcGVyaW9kaWNhbGx5 IGNhbGwgPGZ1bmN0aW9uPkNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk8L2Z1bmN0aW9uPi4KICAg ICAgICBGYWlsdXJlIHRvIGZvbGxvdyB0aGlzIGd1aWRhbmNlIG1heSByZXN1bHQgaW4gdW5y ZXNwb25zaXZlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zb3VyY2VzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCmluZGV4IDc2MGY5YjY5ZDQ3Li42MmZm OWUzZTM5NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCkBAIC05ODgsMjIgKzk4OCwyNSBAQCBNZW1vcnlD b250ZXh0U3dpdGNoVG8oTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICAgICBjYWxsIGFzeW5j LXNpZ25hbCBzYWZlIGZ1bmN0aW9ucyAoYXMgZGVmaW5lZCBpbiBQT1NJWCkgYW5kIGFjY2Vz cwogICAgICB2YXJpYWJsZXMgb2YgdHlwZSA8bGl0ZXJhbD52b2xhdGlsZSBzaWdfYXRvbWlj X3Q8L2xpdGVyYWw+LiBBIGZldwogICAgICBmdW5jdGlvbnMgaW4gPGNvbW1hbmQ+cG9zdGdy ZXM8L2NvbW1hbmQ+IGFyZSBhbHNvIGRlZW1lZCBzaWduYWwgc2FmZSwgaW1wb3J0YW50bHkK LSAgICAgPGZ1bmN0aW9uPlNldExhdGNoKCk8L2Z1bmN0aW9uPi4KKyAgICAgPGZ1bmN0aW9u PlJhaXNlSW50ZXJydXB0KCk8L2Z1bmN0aW9uPi4KICAgICA8L3BhcmE+CiAgICAgPHBhcmE+ CiAgICAgIEluIG1vc3QgY2FzZXMgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBkbyBub3RoaW5n IG1vcmUgdGhhbiBub3RlCiAgICAgIHRoYXQgYSBzaWduYWwgaGFzIGFycml2ZWQsIGFuZCB3 YWtlIHVwIGNvZGUgcnVubmluZyBvdXRzaWRlIG9mCi0gICAgIHRoZSBoYW5kbGVyIHVzaW5n IGEgbGF0Y2guIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGhhbmRsZXIgaXMgdGhlCisgICAgIHRo ZSBoYW5kbGVyIHVzaW5nIFJhaXNlSW50ZXJydXB0KCkuIEFuIGV4YW1wbGUgb2Ygc3VjaCBh IGhhbmRsZXIgaXMgdGhlCiAgICAgIGZvbGxvd2luZzoKIDxwcm9ncmFtbGlzdGluZz4KIHN0 YXRpYyB2b2lkCiBoYW5kbGVfc2lnaHVwKFNJR05BTF9BUkdTKQogewotICAgIGdvdF9TSUdI VVAgPSB0cnVlOwotICAgIFNldExhdGNoKE15TGF0Y2gpOworICAgIFJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIH0KIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAg PC9wYXJhPgorICAgIDwhLS0gVE9ETzogVGhpcyBzZWN0aW9uIGlzIG5vdCB3cm9uZywgYnV0 IHNob3VsZCBiZSB1cGRhdGVkLiBTaG91bGQKKyAgICAgICAgIGRvY3VtZW50IGFuZCBlbXBo YXNpemUgdGhlIGludGVycnVwdCBtZWNoYW5pc20gbW9yZSwgYW5kIHRoZQorICAgICAgICAg aGFuZGxlX3NpZ2h1cCBleGFtcGxlIGlzIGJhZCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBzaWdu YWwgaGFuZGxlciBmb3IKKyAgICAgICAgIFNJR0hVUCBhbHJlYWR5IGRvZXMgdGhhdCAtLT4K ICAgIDwvc2ltcGxlc2VjdD4KIAogICAgPHNpbXBsZXNlY3QgaWQ9InNvdXJjZS1jb252ZW50 aW9ucy1mdW5jdGlvbi1wb2ludGVycyI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL01ha2VmaWxlCmluZGV4IDA1NjQyZGMwMmUzLi45ODgxOTA4 Nzg3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcgQEAgU1VCRElSUyA9IFwKIAljb21tYW5kcyBc CiAJZXhlY3V0b3IgXAogCWZvcmVpZ24gXAorCWlwYyBcCiAJbGliIFwKIAlsaWJwcSBcCiAJ bWFpbiBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3BhZ2Vv cHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9wcy5jCmluZGV4IDdk YTk3YmVjNDNiLi4zMDhmZmQ3ZTU2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbl9wYWdlb3BzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJp bl9wYWdlb3BzLmMKQEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl9y ZXZtYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKaW5kZXggMjMzMzU1Y2IyZDUuLjUy NmJhNzQ3YzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jl dm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKQEAg LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl94bG9nLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JtZ3IuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMuYwppbmRleCA0ZDBk YTA3MTM1ZS4uZThlODRlMjQ4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vdG9hc3RfaW50ZXJuYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi90b2FzdF9pbnRlcm5hbHMuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy90b2FzdF9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1 ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luYnRyZWUuYwppbmRleCAzZDNhOWRhNTZiMS4uYzRmMjhiZmIxMWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKQEAgLTE3LDcgKzE3LDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvZ2luX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2lueGxv Zy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luZGF0YXBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBh Z2UuYwppbmRleCA0MzZlNTRmMjA2Ni4uNDI2MjU5OTM1ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmRhdGFwYWdlLmMKQEAgLTE3LDggKzE3LDggQEAKICNpbmNsdWRlICJhY2Nl c3MvZ2luX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2lueGxvZy5oIgogI2luY2x1 ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKaW5kZXggN2E2YjE3Nzk3N2IuLjU1YjEwNmQzNDBk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwpAQCAtMjQsNiArMjQsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0 aWxzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmdldC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5nZXQuYwppbmRleCA2YjE0OGU2OWE4ZS4uMGVmNTVkMzA0YjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW5nZXQuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy9naW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVk ZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW51dGlsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYwppbmRl eCBkMjA1MDkzZTIxZC4uZGEyYzk0NmM3ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2ludXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRp bC5jCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1 dW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IDExYTY2NzRhMTBiLi4yYTY2N2Q2NTgzOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0xOCw2ICsxOCw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL2dpbnhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2Vy dC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2lu ZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0LmMKaW5kZXggZGZmZmNlM2UzOTYuLjlmYzAzMTM0ODA0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xs YXRpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdycHJvdG9zLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0Z2V0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKaW5k ZXggMTFiMjE0ZWI5OWIuLjllMjM2Nzk5ZjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0Z2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGdldC5jCkBAIC0xOCw4ICsxOCw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dpc3RfcHJpdmF0 ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv aW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImxpYi9wYWlyaW5naGVhcC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVk ZSAidXRpbHMvZmxvYXQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWN1dW0uYwpp bmRleCA5ZTcxNDk4MGQyNi4uZTEzYWE0OTczMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3R2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dmFjdXVtLmMKQEAgLTE4LDggKzE4LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2lz dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJj b21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAibGliL2ludGVnZXJzZXQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCmlu ZGV4IGU4OGRkYjMyYTA1Li4xMjkyNDA2ZWJiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2gu YwpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1 dW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVy L3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2hpbnNlcnQuYwppbmRleCAwY2VmYmFjYzk2ZS4uNzdlOTM5MGIxZjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9oYXNoX3hsb2cuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0 ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aG92ZmwuYwppbmRleCA4Y2ZiNmNlNzVkNi4uNWFlOTExNGNkNjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hvdmZsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaG92ZmwuYwpAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy9oYXNoLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hhc2hfeGxvZy5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNocGFnZS5jCmluZGV4IDhlMjIwYTNhZTE2Li45NjE3MmMzMjIzNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCkBAIC0zMSw3ICszMSw3IEBACiAj aW5jbHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaGFzaF94bG9nLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo c2VhcmNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc2VhcmNoLmMKaW5kZXgg ODlkMWM1YmM2ZDcuLjRjNmE4OTgwZTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoc2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aHNlYXJjaC5jCkBAIC0xNiw4ICsxNiw4IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5o IgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaHNvcnQuYwppbmRleCA3N2JiZmFhNDYxYi4uMWJiZjBkMzM5NjYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaHNvcnQuYwpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVk ZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvdHVwbGVzb3J0LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IDYzMmMyNDI3OTUyLi45Y2I0Yjc2Njc5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2luc2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL2luc3RydW1lbnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA0YmUyNjdmZjY1Ny4uYWU3ZTc5OTNjOGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE0Myw2ICsxNDMsNyBA QAogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgpAQCAtMzMwMCwxMSArMzMw MSwxMCBAQCBsYXp5X3RydW5jYXRlX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkJCXJl dHVybjsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRFUlZBTCwKLQkJCQkJCQkgV0FJVF9F VkVOVF9WQUNVVU1fVFJVTkNBVEUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUwsCisJCQkJCQkJCSBXQUlU X0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDMwNDdiZDQ2ZGVmLi5kYTE5NTJlOTQx MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtOTEs NyArOTEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgi Ci0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2Vu YW0uYwppbmRleCA1ZTg5Yjg2YTYyYy4uNzBhNGU0ZWUwMGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9p bmRleC9nZW5hbS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxl YW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXguaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRk ZWR1cC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCmluZGV4IDk1 YmUwYjE3OTM5Li40ZDk5OGFkYzJhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRkZWR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 ZGVkdXAuYwpAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9uYnR4bG9nLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogc3RhdGljIHZvaWQgX2J0X2JvdHRv bXVwZGVsX2ZpbmlzaF9wZW5kaW5nKFBhZ2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRlLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZDE3YWFhNWFhMGYu LmUwMDdiMmVhNTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMK QEAgLTIyLDggKzIyLDggQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2lu Y2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvcXVuaXF1ZS5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3Bv aW50LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2Uu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDQxMjVjMTg1 ZThiLi45MzhmOTA0N2MzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCmluZGV4IDMyYWUwYmRhODky Li42ZjFmOWRjMGQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5j CkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNs dWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9k ZS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdkb2luc2VydC5jCmluZGV4IDdjNzM3MWM2OWU4Li5iOGI1ZWFhYzU3YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwpAQCAtMjAzNSw4ICsy MDM1LDExIEBAIHNwZ2RvaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3Rh dGUsCiAJCSAqIHBlbmRpbmcsIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBhbmQgZGVhbCB3aXRo IHRoZSBzaXR1YXRpb24gYmVsb3cuCiAJCSAqIFNldCByZXN1bHQgPSBmYWxzZSBiZWNhdXNl IHdlIG11c3QgcmVzdGFydCB0aGUgaW5zZXJ0aW9uIGlmIHRoZQogCQkgKiBpbnRlcnJ1cHQg aXNuJ3QgYSBxdWVyeS1jYW5jZWwtb3ItZGllIGNhc2UuCisJCSAqCisJCSAqIEZJWE1FOiBD aGVja0ZvckludGVycnVwdHNNYXNrIGNvdmVycyBtb3JlIHRoYW4ganVzdCBxdWVyeSBjYW5j ZWwKKwkJICogYW5kIGRpZS4gIENvdWxkIHdlIGJlIG1vcmUgcHJlY2lzZSBoZXJlPwogCQkg Ki8KLQkJaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSkKKwkJaWYgKElOVEVS UlVQVFNfUEVORElOR19DT05ESVRJT04oQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJCXsK IAkJCXJlc3VsdCA9IGZhbHNlOwogCQkJYnJlYWs7CkBAIC0yMTYyLDcgKzIxNjUsNyBAQCBz cGdkb2luc2VydChSZWxhdGlvbiBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAogCQkJICog cmVwZWF0ZWRseSwgY2hlY2sgZm9yIHF1ZXJ5IGNhbmNlbCAoc2VlIGNvbW1lbnRzIGFib3Zl KS4KIAkJCSAqLwogCXByb2Nlc3NfaW5uZXJfdHVwbGU6Ci0JCQlpZiAoSU5URVJSVVBUU19Q RU5ESU5HX0NPTkRJVElPTigpKQorCQkJaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJ T04oQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJCQl7CiAJCQkJcmVzdWx0ID0gZmFsc2U7 CiAJCQkJYnJlYWs7CkBAIC0yMzM4LDcgKzIzNDEsNyBAQCBzcGdkb2luc2VydChSZWxhdGlv biBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAogCSAqIHdlcmUgdGhlIGNhc2UsIHRlbGxp bmcgdGhlIGNhbGxlciB0byByZXRyeSB3b3VsZCBjcmVhdGUgYW4gaW5maW5pdGUKIAkgKiBs b29wLgogCSAqLwotCUFzc2VydChJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSk7CisJ QXNzZXJ0KElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChDaGVja0ZvckludGVycnVwdHNN YXNrKSk7CiAKIAkvKgogCSAqIEZpbmFsbHksIGNoZWNrIGZvciBpbnRlcnJ1cHRzIGFnYWlu LiAgSWYgdGhlcmUgd2FzIGEgcXVlcnkgY2FuY2VsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2NDZhNTQuLmMyZDdjYWY2ZjY4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICNp bmNsdWRlICJhY2Nlc3Mvc3BnaXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFi bGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm5vZGVz L2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWxrX3dyaXRlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3NjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5j CmluZGV4IDJjYzVmMDZmNWQ3Li40NzVhNTBjZGRjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdzY2FuLmMKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVs c2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA2YjcxMTdiNTZiMi4uODg0 YWNiNjhjMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAt MjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKLSNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2luZGV4ZnNtLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9SRUFETUUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFE TUUKaW5kZXggMjMxMTA2MjcwZmQuLjczYTcyN2Q1M2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vUkVBRE1FCkBAIC03OTQsNyArNzk0LDcgQEAgY29tbWl0IHRvIG1pbmltaXplIHRo ZSB3aW5kb3cgaW4gd2hpY2ggdGhlIGZpbGVzeXN0ZW0gY2hhbmdlIGhhcyBiZWVuIG1hZGUK IGJ1dCB0aGUgdHJhbnNhY3Rpb24gaXNuJ3QgZ3VhcmFudGVlZCBjb21taXR0ZWQuCiAKIFRo ZSB3YWx3cml0ZXIgcmVndWxhcmx5IHdha2VzIHVwICh2aWEgd2FsX3dyaXRlcl9kZWxheSkg b3IgaXMgd29rZW4gdXAKLSh2aWEgaXRzIGxhdGNoLCB3aGljaCBpcyBzZXQgYnkgYmFja2Vu ZHMgY29tbWl0dGluZyBhc3luY2hyb25vdXNseSkgYW5kCisodmlhIGFuIGludGVycnVwdCwg d2hpY2ggaXMgc2VudCBieSBiYWNrZW5kcyBjb21taXR0aW5nIGFzeW5jaHJvbm91c2x5KSBh bmQKIHBlcmZvcm1zIGFuIFhMb2dCYWNrZ3JvdW5kRmx1c2goKS4gIFRoaXMgY2hlY2tzIHRo ZSBsb2NhdGlvbiBvZiB0aGUgbGFzdAogY29tcGxldGVseSBmaWxsZWQgV0FMIHBhZ2UuICBJ ZiB0aGF0IGhhcyBtb3ZlZCBmb3J3YXJkcywgdGhlbiB3ZSB3cml0ZSBhbGwKIHRoZSBjaGFu Z2VkIGJ1ZmZlcnMgdXAgdG8gdGhhdCBwb2ludCwgc28gdGhhdCB1bmRlciBmdWxsIGxvYWQg d2Ugd3JpdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURN RS5wYXJhbGxlbCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxl bAppbmRleCA5ZGYzZGE5MWIwYy4uYTM1OTNkZDRmNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbAorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9SRUFETUUucGFyYWxsZWwKQEAgLTM3LDcgKzM3LDcgQEAgd2l0aCBm ZXdlciBwYXJhbGxlbCB3b3JrZXJzIHRoYW4gaXQgb3JpZ2luYWxseSByZXF1ZXN0ZWQsIHNv IGNhdGVyaW5nIHRvCiB0aGlzIGNhc2UgaW1wb3NlcyBubyBhZGRpdGlvbmFsIGJ1cmRlbi4K IAogV2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSAob3IgcGFydGlhbCBtZXNzYWdlOyB2ZXJ5IGxh cmdlIG1lc3NhZ2VzIG1heSB3cmFwKSBpcwotc2VudCB0byB0aGUgZXJyb3ItcmVwb3J0aW5n IHF1ZXVlLCBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UgaXMgc2VudCB0byB0aGUKK3NlbnQg dG8gdGhlIGVycm9yLXJlcG9ydGluZyBxdWV1ZSwgSU5URVJSVVBUX1BBUkFMTEVMX01FU1NB R0UgaXMgc2VudCB0byB0aGUKIGluaXRpYXRpbmcgYmFja2VuZC4gIFRoaXMgY2F1c2VzIHRo ZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4gdGhlCiBpbml0aWF0aW5nIGJhY2tl bmQgdG8gcmVhZCBhbmQgcmV0aHJvdyB0aGUgbWVzc2FnZS4gIEZvciB0aGUgbW9zdCBwYXJ0 LCB0aGlzCiBtYWtlcyBlcnJvciByZXBvcnRpbmcgaW4gcGFyYWxsZWwgbW9kZSAianVzdCB3 b3JrIi4gIE9mIGNvdXJzZSwgdG8gd29yawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vZ2VuZXJpY194bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9nZW5lcmljX3hsb2cuYwppbmRleCA3ZjgyMTg2ZDBkNi4uNmVjYTI0NTFhNzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jCkBAIC0xNiw3ICsx Niw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2J1Zm1hc2suaCIKICNpbmNsdWRlICJhY2Nlc3Mv Z2VuZXJpY194bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgotI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKIAogLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKiBJbnRlcm5hbGx5LCBhIGRlbHRhIGJldHdlZW4gcGFnZXMg Y29uc2lzdHMgb2YgYSBzZXQgb2YgZnJhZ21lbnRzLiAgRWFjaApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggNDQ3ODZkYzEzMWYuLjY1YzQ2N2YyNWY5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Zh Y3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIgorI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUg ImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgpAQCAtMTE0LDkg KzExNSw2IEBAIHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxTdGF0ZQogICovCiBpbnQJ CQlQYXJhbGxlbFdvcmtlck51bWJlciA9IC0xOwogCi0vKiBJcyB0aGVyZSBhIHBhcmFsbGVs IG1lc3NhZ2UgcGVuZGluZyB3aGljaCB3ZSBuZWVkIHRvIHJlY2VpdmU/ICovCi12b2xhdGls ZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IGZhbHNlOwotCiAvKiBB cmUgd2UgaW5pdGlhbGl6aW5nIGEgcGFyYWxsZWwgd29ya2VyPyAqLwogYm9vbAkJSW5pdGlh bGl6aW5nUGFyYWxsZWxXb3JrZXIgPSBmYWxzZTsKIApAQCAtMTI2LDkgKzEyNCw2IEBAIHN0 YXRpYyBGaXhlZFBhcmFsbGVsU3RhdGUgKk15Rml4ZWRQYXJhbGxlbFN0YXRlOwogLyogTGlz dCBvZiBhY3RpdmUgcGFyYWxsZWwgY29udGV4dHMuICovCiBzdGF0aWMgZGxpc3RfaGVhZCBw Y3h0X2xpc3QgPSBETElTVF9TVEFUSUNfSU5JVChwY3h0X2xpc3QpOwogCi0vKiBCYWNrZW5k LWxvY2FsIGNvcHkgb2YgZGF0YSBmcm9tIEZpeGVkUGFyYWxsZWxTdGF0ZS4gKi8KLXN0YXRp YyBwaWRfdCBQYXJhbGxlbExlYWRlclBpZDsKLQogLyoKICAqIExpc3Qgb2YgaW50ZXJuYWwg cGFyYWxsZWwgd29ya2VyIGVudHJ5IHBvaW50cy4gIFdlIG5lZWQgdGhpcyBmb3IKICAqIHJl YXNvbnMgZXhwbGFpbmVkIGluIExvb2t1cFBhcmFsbGVsV29ya2VyRnVuY3Rpb24oKSwgYmVs b3cuCkBAIC0yNDIsNyArMjM3LDcgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIAkgKiBXZSBjYW4gZGVhbCB3aXRoIHRoYXQgZWRnZSBjYXNlIGJ5 IHByZXRlbmRpbmcgbm8gd29ya2VycyB3ZXJlCiAJICogcmVxdWVzdGVkLgogCSAqLwotCWlm ICghSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpCisJaWYgKCFJTlRFUlJVUFRTX0NB Tl9CRV9QUk9DRVNTRUQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJCXBjeHQtPm53b3Jr ZXJzID0gMDsKIAogCS8qCkBAIC02MTEsNyArNjA2LDYgQEAgTGF1bmNoUGFyYWxsZWxXb3Jr ZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAlzcHJpbnRmKHdvcmtlci5iZ3dfbGlicmFy eV9uYW1lLCAicG9zdGdyZXMiKTsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVuY3Rpb25fbmFt ZSwgIlBhcmFsbGVsV29ya2VyTWFpbiIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBVSW50 MzJHZXREYXR1bShkc21fc2VnbWVudF9oYW5kbGUocGN4dC0+c2VnKSk7Ci0Jd29ya2VyLmJn d19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCiAJLyoKIAkgKiBTdGFydCB3b3JrZXJzLgpA QCAtNzY2LDE2ICs3NjAsMjEgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFdvcmtlciBub3Qg eWV0IHN0YXJ0ZWQsIHNvIHdlIG11c3Qgd2FpdC4gIFRoZSBwb3N0bWFzdGVyCi0JCQkJICog d2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuICBPdXIgbGF0 Y2gKLQkJCQkgKiBtaWdodCBhbHNvIGdldCBzZXQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLCBi dXQgaWYgc28gd2UnbGwKLQkJCQkgKiBqdXN0IGVuZCB1cCB3YWl0aW5nIGZvciB0aGUgc2Ft ZSB3b3JrZXIgYWdhaW4uCisJCQkJICogd2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtlcidz IHN0YXRlIGNoYW5nZXMgd2l0aAorCQkJCSAqIElOVEVSUlVQVF9XQUlUX1dBS0VVUC4gIFRo ZSBpbnRlcnJ1cHQgbWlnaHQgYWxzbyBnZXQgc2V0CisJCQkJICogZm9yIHNvbWUgb3RoZXIg cmVhc29uLCBidXQgaWYgc28gd2UnbGwganVzdCBlbmQgdXAgd2FpdGluZworCQkJCSAqIGZv ciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCiAJCQkJICovCi0JCQkJcmMgPSBXYWl0TGF0Y2go TXlMYXRjaCwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQkJCXJj ID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJICAg SU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9T VEFSVFVQKTsKIAotCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJeworCQkJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOworCQkJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOworCQkJCX0KIAkJCX0KIAkJfQogCkBAIC04ODQsMTUgKzg4MywxNiBA QCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpwY3h0 KQogCQkJCSAqIHRoZSB3b3JrZXIgd3JpdGVzIG1lc3NhZ2VzIGFuZCB0ZXJtaW5hdGVzIGFm dGVyIHRoZQogCQkJCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbmVhciB0aGUgdG9wIG9m IHRoaXMgZnVuY3Rpb24gYW5kCiAJCQkJICogYmVmb3JlIHRoZSBjYWxsIHRvIEdldEJhY2tn cm91bmRXb3JrZXJQaWQoKS4gIEluIHRoYXQgY2FzZSwKLQkJCQkgKiBvdXIgbGF0Y2ggc2hv dWxkIGhhdmUgYmVlbiBzZXQgYXMgd2VsbCBhbmQgdGhlIHJpZ2h0IHRoaW5ncwotCQkJCSAq IHdpbGwgaGFwcGVuIG9uIHRoZSBuZXh0IHBhc3MgdGhyb3VnaCB0aGUgbG9vcC4KKwkJCQkg KiBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgc2hvdWxkIGhhdmUgYmVlbiBzZXQgYXMgd2VsbCBh bmQgdGhlCisJCQkJICogcmlnaHQgdGhpbmdzIHdpbGwgaGFwcGVuIG9uIHRoZSBuZXh0IHBh c3MgdGhyb3VnaCB0aGUgbG9vcC4KIAkJCQkgKi8KIAkJCX0KIAkJfQogCi0JCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg LTEsCi0JCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9GSU5JU0gpOwotCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNN YXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAtMSwKKwkJCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9G SU5JU0gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0K IAogCWlmIChwY3h0LT50b2MgIT0gTlVMTCkKQEAgLTEwMzMsMjEgKzEwMzMsNiBAQCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCkKIAlyZXR1cm4gIWRsaXN0X2lzX2VtcHR5KCZwY3h0 X2xpc3QpOwogfQogCi0vKgotICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGlu ZGljYXRpbmcgYSBwYXJhbGxlbCB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlz IGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgIEFsbCB3ZSBjYW4gZG8gaXMg c2V0Ci0gKiBhIGZsYWcgdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgdG8gaW52b2tlCi0gKiBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpLgotICov Ci12b2lkCi1IYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRl cnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsK LQlTZXRMYXRjaChNeUxhdGNoKTsKLX0KLQogLyoKICAqIFByb2Nlc3MgYW55IHF1ZXVlZCBw cm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIHdvcmtlcnMuCiAgKi8K QEAgLTEwODIsOSArMTA2Nyw3IEBAIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQpCiAK IAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsKIAot CS8qIE9LIHRvIHByb2Nlc3MgbWVzc2FnZXMuICBSZXNldCB0aGUgZmxhZyBzYXlpbmcgdGhl cmUgYXJlIG1vcmUgdG8gZG8uICovCi0JUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IGZhbHNl OwotCisJLyogT0sgdG8gcHJvY2VzcyBtZXNzYWdlcyAqLwogCWRsaXN0X2ZvcmVhY2goaXRl ciwgJnBjeHRfbGlzdCkKIAl7CiAJCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKQEAgLTEzMjYs NyArMTMwOSwxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJLyog U2V0IGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSBpbml0aWFsaXppbmcgYSBwYXJhbGxl bCB3b3JrZXIuICovCiAJSW5pdGlhbGl6aW5nUGFyYWxsZWxXb3JrZXIgPSB0cnVlOwogCi0J LyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KKwkvKgorCSAqIFN0YW5kYXJkIGlu dGVycnVwdCBoYW5kbGVycyBoYXZlIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQ7IHVuYmxvY2sK KwkgKiBzaWduYWxzLgorCSAqLwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygp OwogCiAJLyogRGV0ZXJtaW5lIGFuZCBzZXQgb3VyIHBhcmFsbGVsIHdvcmtlciBudW1iZXIu ICovCkBAIC0xMzYyLDggKzEzNDgsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJZnBzID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfRklYRUQs IGZhbHNlKTsKIAlNeUZpeGVkUGFyYWxsZWxTdGF0ZSA9IGZwczsKIAotCS8qIEFycmFuZ2Ug dG8gc2lnbmFsIHRoZSBsZWFkZXIgaWYgd2UgZXhpdC4gKi8KLQlQYXJhbGxlbExlYWRlclBp ZCA9IGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BpZDsKKwkvKiBBcnJhbmdlIHRvIHNlbmQgYW4g aW50ZXJydXB0IHRvIHRoZSBsZWFkZXIgaWYgd2UgZXhpdC4gKi8KIAlQYXJhbGxlbExlYWRl clByb2NOdW1iZXIgPSBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcjsKIAliZWZv cmVfc2htZW1fZXhpdChQYXJhbGxlbFdvcmtlclNodXRkb3duLCBQb2ludGVyR2V0RGF0dW0o c2VnKSk7CiAKQEAgLTEzNzksOCArMTM2NCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKIAltcWggPSBz aG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwogCXBxX3JlZGlyZWN0X3RvX3NobV9tcShz ZWcsIG1xaCk7Ci0JcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihmcHMtPnBhcmFsbGVsX2xlYWRl cl9waWQsCi0JCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CisJ cHFfc2V0X3BhcmFsbGVsX2xlYWRlcihmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJl cik7CiAKIAkvKgogCSAqIEhvb3JheSEgUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBjb21w bGV0ZS4gIE5vdywgd2UgbmVlZCB0byBzZXQgdXAgb3VyCkBAIC0xNjE5LDkgKzE2MDMsOCBA QCBQYXJhbGxlbFdvcmtlclJlcG9ydExhc3RSZWNFbmQoWExvZ1JlY1B0ciBsYXN0X3hsb2df ZW5kKQogc3RhdGljIHZvaWQKIFBhcmFsbGVsV29ya2VyU2h1dGRvd24oaW50IGNvZGUsIERh dHVtIGFyZykKIHsKLQlTZW5kUHJvY1NpZ25hbChQYXJhbGxlbExlYWRlclBpZCwKLQkJCQkg ICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJICAgUGFyYWxsZWxMZWFkZXJQcm9j TnVtYmVyKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFLAor CQkJCSAgUGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVyKTsKIAogCWRzbV9kZXRhY2goKGRzbV9z ZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3NscnUuYwppbmRleCA1NDljN2UzZTY0Yi4uNTU5MmRmMzBmOGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJhY2Nl c3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2d1dGlscy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggZWFiYzRkNDgyMDguLjI0Nzc2MThlODcwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKQEAgLTkxLDYgKzkxLDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3Jh Z2UuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggOGUy ZTQ2NTk5NzQuLmI2ZjQzYjM1OWM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j CkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxz LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJleGVjdXRv ci9pbnN0cnVtZW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCkBAIC04OCw3ICs4OSw2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIK LSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNh dGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2NhcnJheS5oIgpAQCAtMjY1Niw3ICsyNjU2LDcgQEAgWExvZ1NldEFzeW5jWGFjdExTTihY TG9nUmVjUHRyIGFzeW5jWGFjdExTTikKIAkJUHJvY051bWJlcgl3YWx3cml0ZXJQcm9jID0g cGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQcm9jKTsKIAogCQlp ZiAod2Fsd3JpdGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQkJU2V0TGF0Y2go JkdldFBHUHJvY0J5TnVtYmVyKHdhbHdyaXRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIHdhbHdyaXRlclByb2MpOwogCX0K IH0KIApAQCAtOTUwOSwxMSArOTUwOSwxMSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNrdXBT dGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2FpdGlu ZyA9IHRydWU7CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJ CQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0J CQkJCQkJIDEwMDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNI SVZFKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVw dChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkJCSAxMDAwTCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQX1dBSVRfV0FM X0FSQ0hJVkUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsK IAogCQkJaWYgKCsrd2FpdHMgPj0gc2Vjb25kc19iZWZvcmVfd2FybmluZykKIAkJCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggMmVmZTQxMDVlZmIu LjhjNzRlY2VlYzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3Mu YwpAQCAtMjQsMTEgKzI0LDExIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcxOCwxNyArNzE4LDE1 IEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwogCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkK IAkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwg V0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCSAgIDEwMDBMIC8gV0FJ VFNfUEVSX1NFQ09ORCwKLQkJCQkJICAgV0FJVF9FVkVOVF9QUk9NT1RFKTsKKwkJcmMgPSBX YWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkgICBXTF9JTlRF UlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJCSAgIDEw MDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfUFJPTU9URSk7 CiAKIAkJLyoKIAkJICogRW1lcmdlbmN5IGJhaWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGll ZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jCmluZGV4IDRmYzM3YTAzMWQ5Li4yZDRlYjQ2NjdmMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTQ0LDYgKzQ0 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21t YW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC01NCw4 ICs1NSw4IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRpbWUu aCIKQEAgLTMyMiwyMyArMzIzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ1JlY292ZXJ5Q3Rs RGF0YQogCSAqLwogCWJvb2wJCVNoYXJlZFByb21vdGVJc1RyaWdnZXJlZDsKIAotCS8qCi0J ICogcmVjb3ZlcnlXYWtldXBMYXRjaCBpcyB1c2VkIHRvIHdha2UgdXAgdGhlIHN0YXJ0dXAg cHJvY2VzcyB0byBjb250aW51ZQotCSAqIFdBTCByZXBsYXksIGlmIGl0IGlzIHdhaXRpbmcg Zm9yIFdBTCB0byBhcnJpdmUgb3IgcHJvbW90aW9uIHRvIGJlCi0JICogcmVxdWVzdGVkLgot CSAqCi0JICogTm90ZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgYWxzbyB1c2VzIGFub3Ro ZXIgbGF0Y2gsIGl0cyBwcm9jTGF0Y2gsCi0JICogdG8gd2FpdCBmb3IgcmVjb3ZlcnkgY29u ZmxpY3QuIElmIHdlIGdldCByaWQgb2YgcmVjb3ZlcnlXYWtldXBMYXRjaCBmb3IKLQkgKiBz aWduYWxpbmcgdGhlIHN0YXJ0dXAgcHJvY2VzcyBpbiBmYXZvciBvZiB1c2luZyBpdHMgcHJv Y0xhdGNoLCB3aGljaAotCSAqIGNvbXBvcnRzIGJldHRlciB3aXRoIHBvc3NpYmxlIGdlbmVy aWMgc2lnbmFsIGhhbmRsZXJzIHVzaW5nIHRoYXQgbGF0Y2guCi0JICogQnV0IHdlIHNob3Vs ZCBub3QgZG8gdGhhdCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgZG9lc24ndCBhc3N1 bWUKLQkgKiB0aGF0IGl0J3Mgd2FrZW4gdXAgYnkgd2FscmVjZWl2ZXIgcHJvY2VzcyBvciBT SUdIVVAgc2lnbmFsIGhhbmRsZXIKLQkgKiB3aGlsZSBpdCdzIHdhaXRpbmcgZm9yIHJlY292 ZXJ5IGNvbmZsaWN0LiBUaGUgc2VwYXJhdGUgbGF0Y2hlcywKLQkgKiByZWNvdmVyeVdha2V1 cExhdGNoIGFuZCBwcm9jTGF0Y2gsIHNob3VsZCBiZSB1c2VkIGZvciBpbnRlci1wcm9jZXNz Ci0JICogY29tbXVuaWNhdGlvbiBmb3IgV0FMIHJlcGxheSBhbmQgcmVjb3ZlcnkgY29uZmxp Y3QsIHJlc3BlY3RpdmVseS4KLQkgKi8KLQlMYXRjaAkJcmVjb3ZlcnlXYWtldXBMYXRjaDsK LQogCS8qCiAJICogTGFzdCByZWNvcmQgc3VjY2Vzc2Z1bGx5IHJlcGxheWVkLgogCSAqLwpA QCAtNDczLDcgKzQ1Nyw2IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCW1lbXNl dChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNpemVvZihYTG9nUmVjb3ZlcnlDdGxEYXRhKSk7CiAK IAlTcGluTG9ja0luaXQoJlhMb2dSZWNvdmVyeUN0bC0+aW5mb19sY2spOwotCUluaXRTaGFy ZWRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIAlDb25k aXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlOb3RQYXVzZWRD Vik7CiB9CiAKQEAgLTU0NywxMyArNTMwLDYgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRyb2xG aWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAlyZWFkUmVj b3ZlcnlTaWduYWxGaWxlKCk7CiAJdmFsaWRhdGVSZWNvdmVyeVBhcmFtZXRlcnMoKTsKIAot CS8qCi0JICogVGFrZSBvd25lcnNoaXAgb2YgdGhlIHdha2V1cCBsYXRjaCBpZiB3ZSdyZSBn b2luZyB0byBzbGVlcCBkdXJpbmcKLQkgKiByZWNvdmVyeSwgaWYgcmVxdWlyZWQuCi0JICov Ci0JaWYgKEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJT3duTGF0Y2goJlhMb2dSZWNv dmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7Ci0KIAkvKgogCSAqIFNldCB0aGUgV0FM IHJlYWRpbmcgcHJvY2Vzc29yIG5vdywgYXMgaXQgd2lsbCBiZSBuZWVkZWQgd2hlbiByZWFk aW5nCiAJICogdGhlIGNoZWNrcG9pbnQgcmVjb3JkIHJlcXVpcmVkIChiYWNrdXBfbGFiZWwg b3Igbm90KS4KQEAgLTE2NTQsMTMgKzE2MzAsNiBAQCBTaHV0ZG93bldhbFJlY292ZXJ5KHZv aWQpCiAJCXNucHJpbnRmKHJlY292ZXJ5UGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIvUkVD T1ZFUllISVNUT1JZIik7CiAJCXVubGluayhyZWNvdmVyeVBhdGgpOwkvKiBpZ25vcmUgYW55 IGVycm9yICovCiAJfQotCi0JLyoKLQkgKiBXZSBkb24ndCBuZWVkIHRoZSBsYXRjaCBhbnlt b3JlLiBJdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gZGlzb3duCi0JICogaXQsIGJ1 dCBsZXQncyBkbyBpdCBmb3IgdGhlIHNha2Ugb2YgdGlkaW5lc3MuCi0JICovCi0JaWYgKEFy Y2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJRGlzb3duTGF0Y2goJlhMb2dSZWNvdmVyeUN0 bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiB9CiAKIC8qCkBAIC0xNzkwLDggKzE3NTksOCBA QCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCX0KICNlbmRpZgogCi0JCQkvKiBIYW5k bGUgaW50ZXJydXB0IHNpZ25hbHMgb2Ygc3RhcnR1cCBwcm9jZXNzICovCi0JCQlQcm9jZXNz U3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkJU3RhcnR1cFByb2NDaGVja1Bvc3RtYXN0ZXJEZWF0aCgpOwogCiAJCQkvKgogCQkJICog UGF1c2UgV0FMIHJlcGxheSwgaWYgcmVxdWVzdGVkIGJ5IGEgaG90LXN0YW5kYnkgc2Vzc2lv biB2aWEKQEAgLTE4MjAsOCArMTc4OSw4IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQog CQkJfQogCiAJCQkvKgotCQkJICogSWYgd2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhlIHBy aW1hcnksIHdhaXQgb24gbGF0Y2ggdW50aWwKLQkJCSAqIGVub3VnaCB0aW1lIGhhcyBwYXNz ZWQuCisJCQkgKiBJZiB3ZSd2ZSBiZWVuIGFza2VkIHRvIGxhZyB0aGUgcHJpbWFyeSwgd2Fp dCB1bnRpbCBlbm91Z2ggdGltZQorCQkJICogaGFzIHBhc3NlZC4KIAkJCSAqLwogCQkJaWYg KHJlY292ZXJ5QXBwbHlEZWxheSh4bG9ncmVhZGVyKSkKIAkJCXsKQEAgLTE4NDIsOSArMTgx MSw4IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJQXBwbHlXYWxSZWNvcmQoeGxv Z3JlYWRlciwgcmVjb3JkLCAmcmVwbGF5VExJKTsKIAogCQkJLyoKLQkJCSAqIElmIHdlIHJl cGxheWVkIGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yIHRoZW4gd2Fsawot CQkJICogb3ZlciB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheSBhbmQgc2V0IGxhdGNoZXMgdG8g bm90aWZ5IHRoZQotCQkJICogd2FpdGVycy4KKwkJCSAqIElmIHdlIHJlcGxheWVkIGFuIExT TiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLCB3YWtlIHRoZW0KKwkJCSAqIHVwLgog CQkJICovCiAJCQlpZiAod2FpdExTTlN0YXRlICYmCiAJCQkJKFhMb2dSZWNvdmVyeUN0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyID49CkBAIC0yOTc3LDcgKzI5NDUsNyBAQCByZWNvdmVy eVBhdXNlc0hlcmUoYm9vbCBlbmRPZlJlY292ZXJ5KQogCS8qIGxvb3AgdW50aWwgcmVjb3Zl cnlQYXVzZVN0YXRlIGlzIHNldCB0byBSRUNPVkVSWV9OT1RfUEFVU0VEICovCiAJd2hpbGUg KEdldFJlY292ZXJ5UGF1c2VTdGF0ZSgpICE9IFJFQ09WRVJZX05PVF9QQVVTRUQpCiAJewot CQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAJCWlmIChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkpCiAJCQlyZXR1cm47CiAK QEAgLTMwNTQsOCArMzAyMiw4IEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAlkZWxheVVudGlsID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRz KHh0aW1lLCByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkpOwogCiAJLyoKLQkgKiBFeGl0IHdp dGhvdXQgYXJtaW5nIHRoZSBsYXRjaCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFw cGx5IHRoaXMKLQkgKiByZWNvcmQKKwkgKiBFeGl0IHdpdGhvdXQgY2xlYXJpbmcgdGhlIGlu dGVycnVwdCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5CisJICogdGhpcyBy ZWNvcmQKIAkgKi8KIAltc2VjcyA9IFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMo R2V0Q3VycmVudFRpbWVzdGFtcCgpLCBkZWxheVVudGlsKTsKIAlpZiAobXNlY3MgPD0gMCkK QEAgLTMwNjMsMTEgKzMwMzEsMTYgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCiAJd2hpbGUgKHRydWUpCiAJewotCQlSZXNldExhdGNoKCZYTG9n UmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwotCiAJCS8qIFRoaXMgbWlnaHQg Y2hhbmdlIHJlY292ZXJ5X21pbl9hcHBseV9kZWxheS4gKi8KLQkJUHJvY2Vzc1N0YXJ0dXBQ cm9jSW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCS8qCisJ CSAqIFdhaXQgdW50aWwgbW9yZSBXQUwgYXJyaXZlcy4gIChXZSB1c2UgYSBkZWRpY2F0ZWQg aW50ZXJydXB0IHJhdGhlcgorCQkgKiB0aGFuIElOVEVSUlVQVF9XQUlUX1dBS0VVUCBmb3Ig dGhpcywgc28gdGhhdCBtb3JlIFdBTCBhcnJpdmluZworCQkgKiBkb2Vzbid0IHdha2UgdXAg dGhlIHN0YXJ0dXAgcHJvY2VzcyBleGNlc3NpdmVseSB3aGVuIHdlJ3JlIHdhaXRpbmcKKwkJ ICogaW4gb3RoZXIgcGxhY2VzLCBsaWtlIGZvciByZWNvdmVyeSBjb25mbGljdHMpLgorCQkg Ki8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBTF9BUlJJVkVEKTsKIAkJaWYgKENo ZWNrRm9yU3RhbmRieVRyaWdnZXIoKSkKIAkJCWJyZWFrOwogCkBAIC0zMDg4LDEwICszMDYx LDEyIEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQllbG9nKERFQlVHMiwgInJlY292ZXJ5IGFwcGx5IGRlbGF5ICVsZCBtaWxsaXNlY29uZHMi LCBtc2Vjcyk7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNv dmVyeVdha2V1cExhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIG1zZWNzLAotCQkJCQkJIFdBSVRfRVZFTlRf UkVDT1ZFUllfQVBQTFlfREVMQVkpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1dBTF9BUlJJVkVEIHwKKwkJ CQkJCQkgSU5URVJSVVBUX0NIRUNLX1BST01PVEUsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBtc2VjcywKKwkJ CQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9BUFBMWV9ERUxBWSk7CiAJfQogCXJldHVybiB0 cnVlOwogfQpAQCAtMzc2OSwxNiArMzc0NCwxNiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFp bGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJCS8qIERv IGJhY2tncm91bmQgdGFza3MgdGhhdCBtaWdodCBiZW5lZml0IHVzIGxhdGVyLiAqLwogCQkJ CQkJS25vd25Bc3NpZ25lZFRyYW5zYWN0aW9uSWRzSWRsZU1haW50ZW5hbmNlKCk7CiAKLQkJ CQkJCSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBM YXRjaCwKLQkJCQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8Ci0JCQkJCQkJ CQkJIFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkJIHdhaXRfdGltZSwKLQkJCQkJ CQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7Ci0J CQkJCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gp OworCQkJCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8 CisJCQkJCQkJCQkJCSBJTlRFUlJVUFRfV0FMX0FSUklWRUQsCisJCQkJCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwKKwkJCQkJCQkJCQkJIFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJCQkJCSB3YWl0X3RpbWUsCisJCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JF Q09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKKwkJCQkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9XQUxfQVJSSVZFRCk7CiAJCQkJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0 YW1wKCk7CiAKLQkJCQkJCS8qIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBvZiBzdGFydHVw IHByb2Nlc3MgKi8KLQkJCQkJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMoKTsKKwkJ CQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQkJCX0KIAkJCQkJbGFzdF9mYWlsX3Rp bWUgPSBub3c7CiAJCQkJCWN1cnJlbnRTb3VyY2UgPSBYTE9HX0ZST01fQVJDSElWRTsKQEAg LTQwNDQsMTEgKzQwMTksMTIgQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dS ZWNQdHIgUmVjUHRyLCBib29sIHJhbmRBY2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1vcmUg V0FMIHRvIGFycml2ZSwgd2hlbiB3ZSB3aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVkaWF0 ZWx5IGJ5IHRoZSBXQUwgcmVjZWl2ZXIuCiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2FpdExh dGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkJCQkg V0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAtMUwsCi0J CQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNKTsKLQkJCQkJUmVzZXRM YXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKKwkJCQkJKHZv aWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCQkJ IElOVEVSUlVQVF9XQUxfQVJSSVZFRCwKKwkJCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkgLTFMLAorCQkJCQkJCQkJCSBXQUlUX0VW RU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0pOworCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfV0FMX0FSUklWRUQpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTQwNjQsMTEgKzQw NDAsOCBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIs IGJvb2wgcmFuZEFjY2VzcywKIAkJCVJFQ09WRVJZX05PVF9QQVVTRUQpCiAJCQlyZWNvdmVy eVBhdXNlc0hlcmUoZmFsc2UpOwogCi0JCS8qCi0JCSAqIFRoaXMgcG9zc2libHktbG9uZyBs b29wIG5lZWRzIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAKLQkJICogcHJvY2Vz cy4KLQkJICovCi0JCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMoKTsKKwkJLyogVGhp cyBwb3NzaWJseS1sb25nIGxvb3AgbmVlZHMgdG8gaGFuZGxlIGludGVycnVwdHMuICovCisJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQogCiAJcmV0dXJuIFhMUkVBRF9GQUlMOwkJ CS8qIG5vdCByZWFjaGVkICovCkBAIC00NTAwLDExICs0NDczLDExIEBAIENoZWNrRm9yU3Rh bmRieVRyaWdnZXIodm9pZCkKIAlpZiAoTG9jYWxQcm9tb3RlSXNUcmlnZ2VyZWQpCiAJCXJl dHVybiB0cnVlOwogCi0JaWYgKElzUHJvbW90ZVNpZ25hbGVkKCkgJiYgQ2hlY2tQcm9tb3Rl U2lnbmFsKCkpCisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0NIRUNLX1BST01P VEUpICYmIENoZWNrUHJvbW90ZVNpZ25hbCgpKQogCXsKIAkJZXJlcG9ydChMT0csIChlcnJt c2coInJlY2VpdmVkIHByb21vdGUgcmVxdWVzdCIpKSk7CiAJCVJlbW92ZVByb21vdGVTaWdu YWxGaWxlcygpOwotCQlSZXNldFByb21vdGVTaWduYWxlZCgpOworCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URSk7CiAJCVNldFByb21vdGVJc1RyaWdnZXJlZCgp OwogCQlyZXR1cm4gdHJ1ZTsKIAl9CkBAIC00NTQyLDcgKzQ1MTUsMTAgQEAgQ2hlY2tQcm9t b3RlU2lnbmFsKHZvaWQpCiB2b2lkCiBXYWtldXBSZWNvdmVyeSh2b2lkKQogewotCVNldExh dGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCVByb2NOdW1i ZXIJc3RhcnR1cFByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPnN0YXJ0 dXBQcm9jKTsKKworCWlmIChzdGFydHVwUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQor CQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUxfQVJSSVZFRCwgc3RhcnR1cFByb2MpOwog fQogCiAvKgpAQCAtNDc0Niw3ICs0NzIyLDcgQEAgUmVjb3ZlcnlSZXF1aXJlc0ludFBhcmFt ZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLCBpbnQgbWluVmFs dWUKIAogCQkJd2hpbGUgKEdldFJlY292ZXJ5UGF1c2VTdGF0ZSgpICE9IFJFQ09WRVJZX05P VF9QQVVTRUQpCiAJCQl7Ci0JCQkJUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cygpOwor CQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCQlpZiAoQ2hlY2tGb3JTdGFuZGJ5 VHJpZ2dlcigpKQogCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2d3YWl0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5j CmluZGV4IGQyODZmZjYzMTIzLi5lZmUwOGM0ZWJmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nd2FpdC5jCkBAIC0yNCw5ICsyNCwxMCBAQAogICoKICAqCQlJbiBhZGRp dGlvbiwgdGhlIGxlYXN0LWF3YWl0ZWQgTFNOIGZvciBlYWNoIHR5cGUgaXMgY2FjaGVkIGlu IHRoZQogICoJCW1pbldhaXRlZExTTiBhcnJheS4gIFRoZSB3YWl0ZXIgcHJvY2VzcyBwdWJs aXNoZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAqCQlpdHNlbGYgdG8gdGhlIHNoYXJlZCBtZW1v cnkgYW5kIHdhaXRzIG9uIHRoZSBsYXRjaCB1bnRpbCBpdCBpcyB3b2tlbgotICoJCXVwIGJ5 IHRoZSBhcHByb3ByaWF0ZSBwcm9jZXNzLCBzdGFuZGJ5IGlzIHByb21vdGVkLCBvciB0aGUg cG9zdG1hc3RlcgotICoJCWRpZXMuICBUaGVuLCBpdCBjbGVhbnMgaW5mb3JtYXRpb24gYWJv dXQgaXRzZWxmIGluIHRoZSBzaGFyZWQgbWVtb3J5LgorICoJCWl0c2VsZiB0byB0aGUgc2hh cmVkIG1lbW9yeSBhbmQgd2FpdHMgb24gSU5URVJSVVBUX1dBSVRfV0FLRVVQIHVudGlsCisg KgkJaXQgaXMgd29rZW4gdXAgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MsIHN0YW5kYnkg aXMgcHJvbW90ZWQsIG9yIHRoZQorICoJCXBvc3RtYXN0ZXIgZGllcy4gIFRoZW4sIGl0IGNs ZWFucyBpbmZvcm1hdGlvbiBhYm91dCBpdHNlbGYgaW4gdGhlCisgKgkJc2hhcmVkIG1lbW9y eS4KICAqCiAgKgkJT24gc3RhbmRieSBzZXJ2ZXJzOgogICoJCS0gQWZ0ZXIgcmVwbGF5aW5n IGEgV0FMIHJlY29yZCwgdGhlIHN0YXJ0dXAgcHJvY2VzcyBwZXJmb3JtcyBhIGZhc3QKQEAg LTU0LDcgKzU1LDYgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUg InN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgpAQCAt NjgsNyArNjgsNyBAQCBzdGF0aWMgaW50CXdhaXRsc25fY21wKGNvbnN0IHBhaXJpbmdoZWFw X25vZGUgKmEsIGNvbnN0IHBhaXJpbmdoZWFwX25vZGUgKmIsCiBzdHJ1Y3QgV2FpdExTTlN0 YXRlICp3YWl0TFNOU3RhdGUgPSBOVUxMOwogCiAvKgotICogV2FpdCBldmVudCBmb3IgZWFj aCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdhaXRMYXRjaCgpIHRvIHJlcG9ydAorICogV2Fp dCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdhaXRJbnRlcnJ1cHQo KSB0byByZXBvcnQKICAqIHRoZSB3YWl0IGluIHBnX3N0YXRfYWN0aXZpdHkuCiAgKi8KIHN0 YXRpYyBjb25zdCB1aW50MzIgV2FpdExTTldhaXRFdmVudHNbXSA9IHsKQEAgLTI0MSw5ICsy NDEsOSBAQCBkZWxldGVMU05XYWl0ZXIoV2FpdExTTlR5cGUgbHNuVHlwZSkKICNkZWZpbmUJ V0FLRVVQX1BST0NfU1RBVElDX0FSUkFZX1NJWkUgKDE2KQogCiAvKgotICogUmVtb3ZlIHdh aXRlcnMgd2hvc2UgTFNOIGhhcyBiZWVuIHJlYWNoZWQgZnJvbSB0aGUgaGVhcCBhbmQgc2V0 IHRoZWlyCi0gKiBsYXRjaGVzLiAgSWYgSW52YWxpZFhMb2dSZWNQdHIgaXMgZ2l2ZW4sIHJl bW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBoZWFwCi0gKiBhbmQgc2V0IGxhdGNoZXMgZm9y IGFsbCB3YWl0ZXJzLgorICogUmVtb3ZlIHdhaXRlcnMgd2hvc2UgTFNOIGhhcyBiZWVuIHJl YWNoZWQgZnJvbSB0aGUgaGVhcCBhbmQgd2FrZSB0aGVtIHVwLgorICogSWYgSW52YWxpZFhM b2dSZWNQdHIgaXMgZ2l2ZW4sIHJlbW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBoZWFwIGFu ZCB3YWtlCisgKiB0aGVtIGFsbCB1cC4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGZpcnN0IGFj Y3VtdWxhdGVzIHdhaXRlcnMgdG8gd2FrZSB1cCBpbnRvIGFuIGFycmF5LCB0aGVuCiAgKiB3 YWtlcyB0aGVtIHVwIHdpdGhvdXQgaG9sZGluZyBhIFdhaXRMU05Mb2NrLiAgVGhlIGFycmF5 IHNpemUgaXMgc3RhdGljIGFuZApAQCAtMjk4LDE0ICsyOTgsMTMgQEAgd2FrZXVwV2FpdGVy cyhXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIGN1cnJlbnRMU04pCiAJCUxXTG9j a1JlbGVhc2UoV2FpdExTTkxvY2spOwogCiAJCS8qCi0JCSAqIFNldCBsYXRjaGVzIGZvciBw cm9jZXNzZXMgd2hvc2Ugd2FpdGVkIExTTnMgaGF2ZSBiZWVuIHJlYWNoZWQuCi0JCSAqIFNp bmNlIFNldExhdGNoKCkgaXMgYSB0aW1lLWNvbnN1bWluZyBvcGVyYXRpb24sIHdlIGRvIHRo aXMgb3V0c2lkZQotCQkgKiBvZiBXYWl0TFNOTG9jay4gVGhpcyBpcyBzYWZlIGJlY2F1c2Ug cHJvY0xhdGNoIGlzIG5ldmVyIGZyZWVkLCBzbwotCQkgKiBhdCB3b3JzdCB3ZSBtYXkgc2V0 IGEgbGF0Y2ggZm9yIHRoZSB3cm9uZyBwcm9jZXNzIG9yIGZvciBubyBwcm9jZXNzCi0JCSAq IGF0IGFsbCwgd2hpY2ggaXMgaGFybWxlc3MuCisJCSAqIFdha2UgdXAgcHJvY2Vzc2VzIHdo b3NlIHdhaXRlZCBMU05zIGhhdmUgYmVlbiByZWFjaGVkLiAgU2luY2UKKwkJICogU2VuZElu dGVycnVwdCBpcyBhIHRpbWUtY29uc3VtaW5nIG9wZXJhdGlvbiwgd2UgZG8gdGhpcyBvdXRz aWRlIG9mCisJCSAqIFdhaXRMU05Mb2NrLiAoSWYgdGhlIGJhY2tlbmQgZXhpdHMgb3IgaXMg bm8gbG9uZ2VyIHdhaXRpbmcsIHdlJ2xsCisJCSAqIHNlbmQgc3B1cmlvdXMgd2FrZXVwLCBi dXQgdGhhdCdzIGhhcm1sZXNzKQogCQkgKi8KIAkJZm9yIChqID0gMDsgaiA8IG51bVdha2VV cFByb2NzOyBqKyspCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2FrZVVwUHJv Y3Nbal0pLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVAsIHdha2VVcFByb2NzW2pdKTsKIAogCX0gd2hpbGUgKG51bVdha2VVcFByb2NzID09 IFdBS0VVUF9QUk9DX1NUQVRJQ19BUlJBWV9TSVpFKTsKIH0KQEAgLTM2NCw3ICszNjMsNyBA QCBXYWl0TFNOVHlwZVJlcXVpcmVzUmVjb3ZlcnkoV2FpdExTTlR5cGUgdCkKIH0KIAogLyoK LSAqIFdhaXQgdXNpbmcgTXlMYXRjaCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVhY2hlZCwg dGhlIHJlcGxpY2EgZ2V0cworICogV2FpdCB1c2luZyBXYWl0SW50ZXJydXB0IHRpbGwgdGhl IGdpdmVuIExTTiBpcyByZWFjaGVkLCB0aGUgcmVwbGljYSBnZXRzCiAgKiBwcm9tb3RlZCwg b3IgdGhlIHBvc3RtYXN0ZXIgZGllcy4KICAqCiAgKiBSZXR1cm5zIFdBSVRfTFNOX1JFU1VM VF9TVUNDRVNTIGlmIHRhcmdldCBMU04gd2FzIHJlYWNoZWQuCkBAIC0zNzYsNyArMzc1LDcg QEAgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIHRhcmdldExT TiwgaW50NjQgdGltZW91dCkKIHsKIAlYTG9nUmVjUHRyCWN1cnJlbnRMU047CiAJVGltZXN0 YW1wVHogZW5kdGltZSA9IDA7Ci0JaW50CQkJd2FrZV9ldmVudHMgPSBXTF9MQVRDSF9TRVQg fCBXTF9QT1NUTUFTVEVSX0RFQVRIOworCWludAkJCXdha2VfZXZlbnRzID0gV0xfSU5URVJS VVBUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSDsKIAogCS8qIFNob3VsZG4ndCBiZSBjYWxsZWQg d2hlbiBzaG1lbSBpc24ndCBpbml0aWFsaXplZCAqLwogCUFzc2VydCh3YWl0TFNOU3RhdGUp OwpAQCAtNDM0LDggKzQzMyw5IEBAIFdhaXRGb3JMU04oV2FpdExTTlR5cGUgbHNuVHlwZSwg WExvZ1JlY1B0ciB0YXJnZXRMU04sIGludDY0IHRpbWVvdXQpCiAKIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCB3YWtlX2V2ZW50cywg ZGVsYXlfbXMsCi0JCQkJCSAgIFdhaXRMU05XYWl0RXZlbnRzW2xzblR5cGVdKTsKKwkJcmMg PSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsCisJCQkJCQkgICB3YWtlX2V2ZW50cywgZGVsYXlfbXMsCisJCQkJCQkgICBX YWl0TFNOV2FpdEV2ZW50c1tsc25UeXBlXSk7CiAKIAkJLyoKIAkJICogRW1lcmdlbmN5IGJh aWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGllZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhlCkBA IC00NDcsOCArNDQ3LDcgQEAgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9n UmVjUHRyIHRhcmdldExTTiwgaW50NjQgdGltZW91dCkKIAkJCQkJZXJybXNnKCJ0ZXJtaW5h dGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIpLAog CQkJCQllcnJjb250ZXh0KCJ3aGlsZSB3YWl0aW5nIGZvciBMU04iKSk7CiAKLQkJaWYgKHJj ICYgV0xfTEFUQ0hfU0VUKQotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyBiL3NyYy9iYWNrZW5k L2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKaW5kZXggZTExMmVlZDc0ODUuLmU0OWZk YzFlZmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJv dHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMK QEAgLTE1LDkgKzE1LDkgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAi YmFja3VwL2Jhc2ViYWNrdXBfc2luay5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5 cGVkZWYgc3RydWN0IGJic2lua190aHJvdHRsZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHRocm90 dGxlKGJic2lua190aHJvdHRsZSAqc2luaywgc2l6ZV90IGluY3JlbWVudCkKIAkJKHNpbmst PnRocm90dGxpbmdfY291bnRlciAvIHNpbmstPnRocm90dGxpbmdfc2FtcGxlKTsKIAogCS8q Ci0JICogU2luY2UgdGhlIGxhdGNoIGNvdWxkIGJlIHNldCByZXBlYXRlZGx5IGJlY2F1c2Ug b2YgY29uY3VycmVudGx5IFdBTAorCSAqIFNpbmNlIHRoZSBpbnRlcnJ1cHQgY291bGQgYmUg c2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkgV0FMCiAJICogYWN0aXZp dHksIHNsZWVwIGluIGEgbG9vcCB0byBlbnN1cmUgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZC4K IAkgKi8KIAlmb3IgKDs7KQpAQCAtMTYzLDIyICsxNjMsMTYgQEAgdGhyb3R0bGUoYmJzaW5r X3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQlpZiAoc2xlZXAgPD0gMCkK IAkJCWJyZWFrOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJLyogV2UncmUgZWF0 aW5nIGEgcG90ZW50aWFsbHkgc2V0IGxhdGNoLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0cyAq LwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCiAJCSAqIChUQVJfU0VORF9T SVpFIC8gdGhyb3R0bGluZ19zYW1wbGUgKiBlbGFwc2VkX21pbl91bml0KSBzaG91bGQgYmUK IAkJICogdGhlIG1heGltdW0gdGltZSB0byBzbGVlcC4gVGh1cyB0aGUgY2FzdCB0byBsb25n IGlzIHNhZmUuCiAJCSAqLwotCQl3YWl0X3Jlc3VsdCA9IFdhaXRMYXRjaChNeUxhdGNoLAot CQkJCQkJCQlXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAotCQkJCQkJCQlXQUlUX0VWRU5U X0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKLQotCQlpZiAod2FpdF9yZXN1bHQgJiBXTF9MQVRD SF9TRVQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl3YWl0X3Jlc3VsdCA9IFdh aXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJCQkJCVdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJKGxv bmcpIChzbGVlcCAvIDEwMDApLAorCQkJCQkJCQkJV0FJVF9FVkVOVF9CQVNFX0JBQ0tVUF9U SFJPVFRMRSk7CiAKIAkJLyogRG9uZSB3YWl0aW5nPyAqLwogCQlpZiAod2FpdF9yZXN1bHQg JiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3Rw YXJzZS55IGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55CmluZGV4IDk0M2Zm NDczM2QzLi5jNGFkMTFiZTBiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RwYXJzZS55CisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQpA QCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvdG9hc3RpbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZy ZW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggNjU3YzU5MTYxOGQuLjAzNWEx MGFlZWU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTM2LDcgKzM2LDcgQEAKICAqCSAg aXMgbm8gbmVlZCBmb3IgV0FMIHN1cHBvcnQgb3IgZnN5bmMnaW5nLgogICoKICAqIDMuIEV2 ZXJ5IGJhY2tlbmQgdGhhdCBpcyBsaXN0ZW5pbmcgb24gYXQgbGVhc3Qgb25lIGNoYW5uZWwg cmVnaXN0ZXJzIGJ5Ci0gKgkgIGVudGVyaW5nIGl0cyBQSUQgaW50byB0aGUgYXJyYXkgaW4g QXN5bmNRdWV1ZUNvbnRyb2wuIEl0IHRoZW4gc2NhbnMgYWxsCisgKgkgIGVudGVyaW5nIGl0 c2VsZiBpbnRvIHRoZSBhcnJheSBpbiBBc3luY1F1ZXVlQ29udHJvbC4gSXQgdGhlbiBzY2Fu cyBhbGwKICAqCSAgaW5jb21pbmcgbm90aWZpY2F0aW9ucyBpbiB0aGUgY2VudHJhbCBxdWV1 ZSBhbmQgZmlyc3QgY29tcGFyZXMgdGhlCiAgKgkgIGRhdGFiYXNlIE9JRCBvZiB0aGUgbm90 aWZpY2F0aW9uIHdpdGggaXRzIG93biBkYXRhYmFzZSBPSUQgYW5kIHRoZW4KICAqCSAgY29t cGFyZXMgdGhlIG5vdGlmaWVkIGNoYW5uZWwgd2l0aCB0aGUgbGlzdCBvZiBjaGFubmVscyB0 aGF0IGl0IGxpc3RlbnMKQEAgLTY4LDggKzY4LDggQEAKICAqCSAgbWFrZSBhbnkgcmVxdWly ZWQgdXBkYXRlcyB0byB0aGUgZWZmZWN0aXZlIGxpc3RlbiBzdGF0ZSAoc2VlIGJlbG93KS4K ICAqCSAgVGhlbiB3ZSBzaWduYWwgYW55IGJhY2tlbmRzIHRoYXQgbWF5IGJlIGludGVyZXN0 ZWQgaW4gb3VyIG1lc3NhZ2VzCiAgKgkgIChpbmNsdWRpbmcgb3VyIG93biBiYWNrZW5kLCBp ZiBsaXN0ZW5pbmcpLiAgVGhpcyBpcyBkb25lIGJ5Ci0gKgkgIFNpZ25hbEJhY2tlbmRzKCks IHdoaWNoIHNlbmRzIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUIHNpZ25hbCB0bwotICoJ ICBlYWNoIHJlbGV2YW50IGJhY2tlbmQsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAqCSAgU2ln bmFsQmFja2VuZHMoKSwgd2hpY2ggc2VuZHMgSU5URVJSVVBUX0FTWU5DX05PVElGWSB0byBl YWNoIHJlbGV2YW50CisgKgkgIGJhY2tlbmQsIGFzIGRlc2NyaWJlZCBiZWxvdy4KICAqCiAg KgkgIEZpbmFsbHksIGFmdGVyIHdlIGFyZSBvdXQgb2YgdGhlIHRyYW5zYWN0aW9uIGFsdG9n ZXRoZXIgYW5kIGFib3V0IHRvIGdvCiAgKgkgIGlkbGUsIHdlIHNjYW4gdGhlIHF1ZXVlIGZv ciBtZXNzYWdlcyB0aGF0IG5lZWQgdG8gYmUgc2VudCB0byBvdXIKQEAgLTgyLDEzICs4Miwx MSBAQAogICoJICBmcm9udGVuZCB1bnRpbCB0aGUgY29tbWFuZCBpcyBkb25lOyBidXQgbm90 aWZpZXMgdG8gb3RoZXIgYmFja2VuZHMKICAqCSAgc2hvdWxkIGdvIG91dCBpbW1lZGlhdGVs eSBhZnRlciBlYWNoIGNvbW1pdC4KICAqCi0gKiA1LiBVcG9uIHJlY2VpcHQgb2YgYSBQUk9D U0lHX05PVElGWV9JTlRFUlJVUFQgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIKLSAqCSAg c2V0cyB0aGUgcHJvY2VzcydzIGxhdGNoLCB3aGljaCB0cmlnZ2VycyB0aGUgZXZlbnQgdG8g YmUgcHJvY2Vzc2VkCi0gKgkgIGltbWVkaWF0ZWx5IGlmIHRoaXMgYmFja2VuZCBpcyBpZGxl IChpLmUuLCBpdCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCisgKiA1LiBUaGUgSU5URVJS VVBUX0FTWU5DX05PVElGWSBpbnRlcnJ1cHQgaXMgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5IGlu IHRoZQorICoJICBsaXN0ZW5pbmcgYmFja2VuZCBpZiBpdCBpcyBpZGxlIChpLmUuLCBpdCBp cyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCiAgKgkgIGNvbW1hbmQgYW5kIGlzIG5vdCB3aXRo aW4gYSB0cmFuc2FjdGlvbiBibG9jay4gQy5mLgotICoJICBQcm9jZXNzQ2xpZW50UmVhZElu dGVycnVwdCgpKS4gIE90aGVyd2lzZSB0aGUgaGFuZGxlciBtYXkgb25seSBzZXQgYQotICoJ ICBmbGFnLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBwcm9jZXNzaW5nIHRvIG9jY3VyIGp1c3Qg YmVmb3JlIHdlIG5leHQgZ28KLSAqCSAgaWRsZS4KKyAqCSAgbWFpbiBsb29wIGluIFBvc3Rn cmVzQmFja2VuZCgpKS4gIE90aGVyd2lzZSB0aGUgaW50ZXJydXB0IGlzIHByb2Nlc3NlZAor ICoJICBsYXRlciwganVzdCBiZWZvcmUgd2UgbmV4dCBnbyBpZGxlLgogICoKICAqCSAgSW5i b3VuZC1ub3RpZnkgcHJvY2Vzc2luZyBjb25zaXN0cyBvZiByZWFkaW5nIGFsbCBvZiB0aGUg bm90aWZpY2F0aW9ucwogICoJICB0aGF0IGhhdmUgYXJyaXZlZCBzaW5jZSBzY2FubmluZyBs YXN0IHRpbWUuIFdlIHJlYWQgZXZlcnkgbm90aWZpY2F0aW9uCkBAIC0xMjYsOSArMTI0LDgg QEAKICAqCiAgKgkgIFNpZ25hbEJhY2tlbmRzKCkgY29uc3VsdHMgdGhlIHNoYXJlZCBnbG9i YWwgY2hhbm5lbCB0YWJsZSB0byBpZGVudGlmeQogICoJICBsaXN0ZW5lcnMgZm9yIHRoZSBj aGFubmVscyB0aGF0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNlbnQKLSAqCSAgbm90aWZp Y2F0aW9uKHMpIHRvLiAgRWFjaCBzZWxlY3RlZCBiYWNrZW5kIGlzIG1hcmtlZCBhcyBoYXZp bmcgYSB3YWtldXAKLSAqCSAgcGVuZGluZyB0byBhdm9pZCBkdXBsaWNhdGUgc2lnbmFscywg YW5kIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUCi0gKgkgIHNpZ25hbCBpcyBzZW50IHRv IGl0LgorICoJICBub3RpZmljYXRpb24ocykgdG8uICBJTlRFUlJVUFRfQVNZTkNfTk9USUZZ IGlzIHNlbnQgdG8gZWFjaCBzZWxlY3RlZAorICoJICBiYWNrZW5kLgogICoKICAqIDguIFdo aWxlIHdyaXRpbmcgbm90aWZpY2F0aW9ucywgUHJlQ29tbWl0X05vdGlmeSgpIHJlY29yZHMg dGhlIHF1ZXVlIGhlYWQKICAqCSAgcG9zaXRpb24gYm90aCBiZWZvcmUgYW5kIGFmdGVyIHRo ZSB3cml0ZS4gIEJlY2F1c2UgYWxsIHdyaXRlcnMgc2VyaWFsaXplCkBAIC0xNjAsNyArMTU3 LDYgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2lu Y2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3NscnUuaCIKQEAgLTE3MCw2ICsxNjYsNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgogI2luY2x1ZGUg ImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGli L2RzaGFzaC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEv cHFmb3JtYXQuaCIKQEAgLTE3Nyw3ICsxNzQsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNt X3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xtZ3IuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9kc2EuaCIKQEAgLTI4OCw3ICsyODQsOCBAQCB0eXBlZGVmIHN0cnVjdCBR dWV1ZUJhY2tlbmRTdGF0dXMKIAlPaWQJCQlkYm9pZDsJCQkvKiBiYWNrZW5kJ3MgZGF0YWJh c2UgT0lELCBvciBJbnZhbGlkT2lkICovCiAJUHJvY051bWJlcgluZXh0TGlzdGVuZXI7CS8q IGlkIG9mIG5leHQgbGlzdGVuZXIsIG9yIElOVkFMSURfUFJPQ19OVU1CRVIgKi8KIAlRdWV1 ZVBvc2l0aW9uIHBvczsJCQkvKiBiYWNrZW5kIGhhcyByZWFkIHF1ZXVlIHVwIHRvIGhlcmUg Ki8KLQlib29sCQl3YWtldXBQZW5kaW5nOwkvKiBzaWduYWwgc2VudCB0byBiYWNrZW5kLCBu b3QgeWV0IHByb2Nlc3NlZCAqLworCWJvb2wJCXdha2V1cFBlbmRpbmc7CS8qIGludGVycnVw dCBzZW50IHRvIGJhY2tlbmQsIG5vdCB5ZXQKKwkJCQkJCQkJICogcHJvY2Vzc2VkICovCiAJ Ym9vbAkJaXNBZHZhbmNpbmc7CS8qIGJhY2tlbmQgaXMgYWR2YW5jaW5nIGl0cyBwb3NpdGlv biAqLwogfSBRdWV1ZUJhY2tlbmRTdGF0dXM7CiAKQEAgLTMxOCw3ICszMTUsNyBAQCB0eXBl ZGVmIHN0cnVjdCBRdWV1ZUJhY2tlbmRTdGF0dXMKICAqIGdsb2JhbENoYW5uZWxUYWJsZSBw YXJ0aXRpb24gbG9ja3MuCiAgKgogICogRWFjaCBiYWNrZW5kIHVzZXMgdGhlIGJhY2tlbmRb XSBhcnJheSBlbnRyeSB3aXRoIGluZGV4IGVxdWFsIHRvIGl0cwotICogUHJvY051bWJlci4g IFdlIHJlbHkgb24gdGhpcyB0byBtYWtlIFNlbmRQcm9jU2lnbmFsIGZhc3QuCisgKiBQcm9j TnVtYmVyLiAgV2UgcmVseSBvbiB0aGlzIGZvciBzZW5kaW5nIGludGVycnVwdHMuCiAgKgog ICogVGhlIGJhY2tlbmRbXSBhcnJheSBlbnRyaWVzIGZvciBhY3RpdmVseS1saXN0ZW5pbmcg YmFja2VuZHMgYXJlIHRocmVhZGVkCiAgKiB0b2dldGhlciB1c2luZyBmaXJzdExpc3RlbmVy IGFuZCB0aGUgbmV4dExpc3RlbmVyIGxpbmtzLCBzbyB0aGF0IHdlIGNhbgpAQCAtNTI3LDE1 ICs1MjQsNiBAQCB0eXBlZGVmIHN0cnVjdCBDaGFubmVsTmFtZQogCWNoYXIJCWNoYW5uZWxb TkFNRURBVEFMRU5dOwkvKiBoYXNoIGtleSAqLwogfSBDaGFubmVsTmFtZTsKIAotLyoKLSAq IEluYm91bmQgbm90aWZpY2F0aW9ucyBhcmUgaW5pdGlhbGx5IHByb2Nlc3NlZCBieSBIYW5k bGVOb3RpZnlJbnRlcnJ1cHQoKSwKLSAqIGNhbGxlZCBmcm9tIGluc2lkZSBhIHNpZ25hbCBo YW5kbGVyLiBUaGF0IGp1c3Qgc2V0cyB0aGUKLSAqIG5vdGlmeUludGVycnVwdFBlbmRpbmcg ZmxhZyBhbmQgc2V0cyB0aGUgcHJvY2VzcwotICogbGF0Y2guIFByb2Nlc3NOb3RpZnlJbnRl cnJ1cHQoKSB3aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5ldmVyIGl0J3Mgc2FmZSB0bwotICog YWN0dWFsbHkgZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQuCi0gKi8KLXZvbGF0aWxlIHNpZ19h dG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci0KIC8qIFRydWUgaWYg d2UndmUgcmVnaXN0ZXJlZCBhbiBvbl9zaG1lbV9leGl0IGNsZWFudXAgKi8KIHN0YXRpYyBi b29sIHVubGlzdGVuRXhpdFJlZ2lzdGVyZWQgPSBmYWxzZTsKIApAQCAtNTUyLDExICs1NDAs MTAgQEAgc3RhdGljIFF1ZXVlUG9zaXRpb24gcXVldWVIZWFkQmVmb3JlV3JpdGU7CiBzdGF0 aWMgUXVldWVQb3NpdGlvbiBxdWV1ZUhlYWRBZnRlcldyaXRlOwogCiAvKgotICogV29ya3Nw YWNlIGFycmF5cyBmb3IgU2lnbmFsQmFja2VuZHMuICBUaGVzZSBhcmUgcHJlYWxsb2NhdGVk IGluCisgKiBXb3Jrc3BhY2UgYXJyYXkgZm9yIFNpZ25hbEJhY2tlbmRzLiAgVGhpcyBpcyBw cmVhbGxvY2F0ZWQgaW4KICAqIFByZUNvbW1pdF9Ob3RpZnkgdG8gYXZvaWQgbmVlZGluZyBt ZW1vcnkgYWxsb2NhdGlvbiBhZnRlciBjb21taXR0aW5nIHRvCiAgKiBjbG9nLgogICovCi1z dGF0aWMgaW50MzIgKnNpZ25hbFBpZHMgPSBOVUxMOwogc3RhdGljIFByb2NOdW1iZXIgKnNp Z25hbFByb2Nub3MgPSBOVUxMOwogCiAvKiBoYXZlIHdlIGFkdmFuY2VkIHRvIGEgcGFnZSB0 aGF0J3MgYSBtdWx0aXBsZSBvZiBRVUVVRV9DTEVBTlVQX0RFTEFZPyAqLwpAQCAtMTI2NSwx MCArMTI1Miw2IEBAIFByZUNvbW1pdF9Ob3RpZnkodm9pZCkKIAkJfQogCiAJCS8qIFByZWFs bG9jYXRlIHdvcmtzcGFjZSB0aGF0IHdpbGwgYmUgbmVlZGVkIGJ5IFNpZ25hbEJhY2tlbmRz KCkgKi8KLQkJaWYgKHNpZ25hbFBpZHMgPT0gTlVMTCkKLQkJCXNpZ25hbFBpZHMgPSBNZW1v cnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCQkJTWF4QmFja2Vu ZHMgKiBzaXplb2YoaW50MzIpKTsKLQogCQlpZiAoc2lnbmFsUHJvY25vcyA9PSBOVUxMKQog CQkJc2lnbmFsUHJvY25vcyA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0 LAogCQkJCQkJCQkJCQkgICBNYXhCYWNrZW5kcyAqIHNpemVvZihQcm9jTnVtYmVyKSk7CkBA IC0xMzYwLDcgKzEzNDMsNyBAQCBQcmVDb21taXRfTm90aWZ5KHZvaWQpCiAgKgogICoJCUFw cGx5IHBlbmRpbmcgbGlzdGVuL3VubGlzdGVuIGNoYW5nZXMgYW5kIGNsZWFyIHRyYW5zYWN0 aW9uLWxvY2FsIHN0YXRlLgogICoKLSAqCQlJZiB3ZSBpc3N1ZWQgYW55IG5vdGlmaWNhdGlv bnMgaW4gdGhlIHRyYW5zYWN0aW9uLCBzZW5kIHNpZ25hbHMgdG8KKyAqCQlJZiB3ZSBpc3N1 ZWQgYW55IG5vdGlmaWNhdGlvbnMgaW4gdGhlIHRyYW5zYWN0aW9uLCBzZW5kIGludGVycnVw dHMgdG8KICAqCQlsaXN0ZW5pbmcgYmFja2VuZHMgKHBvc3NpYmx5IGluY2x1ZGluZyBvdXJz ZWx2ZXMpIHRvIHByb2Nlc3MgdGhlbS4KICAqCQlBbHNvLCBpZiB3ZSBmaWxsZWQgZW5vdWdo IHF1ZXVlIHBhZ2VzIHdpdGggbmV3IG5vdGlmaWVzLCB0cnkgdG8KICAqCQlhZHZhbmNlIHRo ZSBxdWV1ZSB0YWlsIHBvaW50ZXIuCkBAIC0xMzg2LDkgKzEzNjksOSBAQCBBdENvbW1pdF9O b3RpZnkodm9pZCkKIAkJYXN5bmNRdWV1ZVVucmVnaXN0ZXIoKTsKIAogCS8qCi0JICogU2Vu ZCBzaWduYWxzIHRvIGxpc3RlbmluZyBiYWNrZW5kcy4gIFdlIG5lZWQgZG8gdGhpcyBvbmx5 IGlmIHRoZXJlIGFyZQotCSAqIHBlbmRpbmcgbm90aWZpZXMsIHdoaWNoIHdlcmUgcHJldmlv dXNseSBhZGRlZCB0byB0aGUgc2hhcmVkIHF1ZXVlIGJ5Ci0JICogUHJlQ29tbWl0X05vdGlm eSgpLgorCSAqIFNlbmQgaW50ZXJydXB0cyB0byBsaXN0ZW5pbmcgYmFja2VuZHMuICBXZSBu ZWVkIGRvIHRoaXMgb25seSBpZiB0aGVyZQorCSAqIGFyZSBwZW5kaW5nIG5vdGlmaWVzLCB3 aGljaCB3ZXJlIHByZXZpb3VzbHkgYWRkZWQgdG8gdGhlIHNoYXJlZCBxdWV1ZQorCSAqIGJ5 IFByZUNvbW1pdF9Ob3RpZnkoKS4KIAkgKi8KIAlpZiAocGVuZGluZ05vdGlmaWVzICE9IE5V TEwpCiAJCVNpZ25hbEJhY2tlbmRzKCk7CkBAIC0xNjE4LDcgKzE2MDEsNyBAQCBQcmVwYXJl VGFibGVFbnRyaWVzRm9yTGlzdGVuKGNvbnN0IGNoYXIgKmNoYW5uZWwpCiAgKgogICogUHJl cGFyZSBhbiBVTkxJU1RFTiBieSByZWNvcmRpbmcgaXQgaW4gcGVuZGluZ0xpc3RlbkFjdGlv bnMsIGJ1dCBvbmx5IGlmCiAgKiB3ZSdyZSBjdXJyZW50bHkgbGlzdGVuaW5nIChjb21taXR0 ZWQgb3Igc3RhZ2VkKS4gIFdlIGRvbid0IHRvdWNoCi0gKiBnbG9iYWxDaGFubmVsVGFibGUg eWV0IC0gdGhlIGxpc3RlbmVyIGtlZXBzIHJlY2VpdmluZyBzaWduYWxzIHVudGlsCisgKiBn bG9iYWxDaGFubmVsVGFibGUgeWV0IC0gdGhlIGxpc3RlbmVyIGtlZXBzIHJlY2VpdmluZyBu b3RpZmljYXRpb25zIHVudGlsCiAgKiBjb21taXQsIHdoZW4gdGhlIGVudHJ5IGlzIHJlbW92 ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xNjM4LDcgKzE2MjEsNyBAQCBQcmVwYXJlVGFi bGVFbnRyaWVzRm9yVW5saXN0ZW4oY29uc3QgY2hhciAqY2hhbm5lbCkKIAkvKgogCSAqIFJl Y29yZCBpbiBsb2NhbCBwZW5kaW5nIGhhc2ggdGhhdCB3ZSB3YW50IHRvIFVOTElTVEVOLCBv dmVyd3JpdGluZyBhbnkKIAkgKiBlYXJsaWVyIGF0dGVtcHQgdG8gTElTVEVOLiAgRG9uJ3Qg dG91Y2ggbG9jYWxDaGFubmVsVGFibGUgb3IKLQkgKiBnbG9iYWxDaGFubmVsVGFibGUgeWV0 IC0gd2Uga2VlcCByZWNlaXZpbmcgc2lnbmFscyB1bnRpbCBjb21taXQuCisJICogZ2xvYmFs Q2hhbm5lbFRhYmxlIHlldCAtIHdlIGtlZXAgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgdW50 aWwgY29tbWl0LgogCSAqLwogCXBlbmRpbmcgPSAoUGVuZGluZ0xpc3RlbkVudHJ5ICopCiAJ CWhhc2hfc2VhcmNoKHBlbmRpbmdMaXN0ZW5BY3Rpb25zLCBjaGFubmVsLCBIQVNIX0VOVEVS LCBOVUxMKTsKQEAgLTIyNDIsMTQgKzIyMjUsMTQgQEAgYXN5bmNRdWV1ZUZpbGxXYXJuaW5n KHZvaWQpCiB9CiAKIC8qCi0gKiBTZW5kIHNpZ25hbHMgdG8gbGlzdGVuaW5nIGJhY2tlbmRz LgorICogU2VuZCBpbnRlcnJ1cHRzIHRvIGxpc3RlbmluZyBiYWNrZW5kcy4KICAqCiAgKiBO b3JtYWxseSB3ZSBzaWduYWwgb25seSBiYWNrZW5kcyB0aGF0IGFyZSBpbnRlcmVzdGVkIGlu IHRoZSBub3RpZmllcyB0aGF0CiAgKiB3ZSBqdXN0IHNlbnQuICBIb3dldmVyLCB0aGF0IHdp bGwgbGVhdmUgaWRsZSBsaXN0ZW5lcnMgZmFsbGluZyBmdXJ0aGVyIGFuZAogICogZnVydGhl ciBiZWhpbmQuICBXYWtlbiB0aGVtIGFueXdheSBpZiB0aGV5J3JlIGZhciBlbm91Z2ggYmVo aW5kLCBzbyB0aGV5J2xsCiAgKiBhZHZhbmNlIHRoZWlyIHF1ZXVlIHBvc2l0aW9uIHBvaW50 ZXJzLCBhbGxvd2luZyB0aGUgZ2xvYmFsIHRhaWwgdG8gYWR2YW5jZS4KICAqCi0gKiBTaW5j ZSB3ZSBrbm93IHRoZSBQcm9jTnVtYmVyIGFuZCB0aGUgUGlkIHRoZSBzaWduYWxpbmcgaXMg cXVpdGUgY2hlYXAuCisgKiBTaW5jZSB3ZSBrbm93IHRoZSBQcm9jTnVtYmVyIHRoZSBzaWdu YWxpbmcgaXMgcXVpdGUgY2hlYXAuCiAgKgogICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIENv bW1pdFRyYW5zYWN0aW9uKCksIHNvIGl0J3MgaW1wb3J0YW50IGZvciBpdAogICogdG8gaGF2 ZSB2ZXJ5IGxvdyBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLgpAQCAtMjI2MiwxMyArMjI0NSwx MyBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCS8qIENhbid0IGdldCBoZXJlIHdpdGhvdXQg UHJlQ29tbWl0X05vdGlmeSBoYXZpbmcgbWFkZSB0aGUgZ2xvYmFsIHRhYmxlICovCiAJQXNz ZXJ0KGdsb2JhbENoYW5uZWxUYWJsZSAhPSBOVUxMKTsKIAotCS8qIEl0IHNob3VsZCBoYXZl IHNldCB1cCB0aGVzZSBhcnJheXMsIHRvbyAqLwotCUFzc2VydChzaWduYWxQaWRzICE9IE5V TEwgJiYgc2lnbmFsUHJvY25vcyAhPSBOVUxMKTsKKwkvKiBJdCBzaG91bGQgaGF2ZSBzZXQg dXAgdGhpcyBhcnJheSwgdG9vICovCisJQXNzZXJ0KHNpZ25hbFByb2Nub3MgIT0gTlVMTCk7 CiAKIAkvKgogCSAqIElkZW50aWZ5IGJhY2tlbmRzIHRoYXQgd2UgbmVlZCB0byBzaWduYWwu ICBXZSBkb24ndCB3YW50IHRvIHNlbmQKIAkgKiBzaWduYWxzIHdoaWxlIGhvbGRpbmcgdGhl IE5vdGlmeVF1ZXVlTG9jaywgc28gdGhpcyBwYXJ0IGp1c3QgYnVpbGRzIGEKLQkgKiBsaXN0 IG9mIHRhcmdldCBQSURzIGluIHNpZ25hbFBpZHNbXSBhbmQgc2lnbmFsUHJvY25vc1tdLgor CSAqIGxpc3Qgb2YgdGFyZ2V0IGJhY2tlbmRzIGluIHNpZ25hbFByb2Nub3NbXS4KIAkgKi8K IAljb3VudCA9IDA7CiAKQEAgLTIyOTMsNyArMjI3Niw2IEBAIFNpZ25hbEJhY2tlbmRzKHZv aWQpCiAJCWZvciAoaW50IGogPSAwOyBqIDwgZW50cnktPm51bUxpc3RlbmVyczsgaisrKQog CQl7CiAJCQlQcm9jTnVtYmVyCWk7Ci0JCQlpbnQzMgkJcGlkOwogCQkJUXVldWVQb3NpdGlv biBwb3M7CiAKIAkJCWlmICghbGlzdGVuZXJzW2pdLmxpc3RlbmluZykKQEAgLTIzMDQsMTYg KzIyODYsMTQgQEAgU2lnbmFsQmFja2VuZHModm9pZCkKIAkJCWlmIChRVUVVRV9CQUNLRU5E X1dBS0VVUF9QRU5ESU5HKGkpKQogCQkJCWNvbnRpbnVlOwkJLyogYWxyZWFkeSBzaWduYWxl ZCwgbm8gbmVlZCB0byByZXBlYXQgKi8KIAotCQkJcGlkID0gUVVFVUVfQkFDS0VORF9QSUQo aSk7CiAJCQlwb3MgPSBRVUVVRV9CQUNLRU5EX1BPUyhpKTsKIAogCQkJaWYgKFFVRVVFX1BP U19FUVVBTChwb3MsIFFVRVVFX0hFQUQpKQogCQkJCWNvbnRpbnVlOwkJLyogaXQncyBmdWxs eSBjYXVnaHQgdXAgYWxyZWFkeSAqLwogCi0JCQlBc3NlcnQocGlkICE9IEludmFsaWRQaWQp OworCQkJQXNzZXJ0KGkgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkJCVFVRVVFX0JB Q0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlkc1tjb3VudF0g PSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3VudCsrOwogCQl9 CkBAIC0yMzMwLDcgKzIzMTAsNiBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCSAqLwogCWZv ciAoUHJvY051bWJlciBpID0gUVVFVUVfRklSU1RfTElTVEVORVI7IGkgIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUjsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCiAJewotCQlpbnQzMgkJ cGlkOwogCQlRdWV1ZVBvc2l0aW9uIHBvczsKIAogCQlpZiAoUVVFVUVfQkFDS0VORF9XQUtF VVBfUEVORElORyhpKSkKQEAgLTIzNDAsNyArMjMxOSw2IEBAIFNpZ25hbEJhY2tlbmRzKHZv aWQpCiAJCWlmIChRVUVVRV9CQUNLRU5EX0lTX0FEVkFOQ0lORyhpKSkKIAkJCWNvbnRpbnVl OwogCi0JCXBpZCA9IFFVRVVFX0JBQ0tFTkRfUElEKGkpOwogCQlwb3MgPSBRVUVVRV9CQUNL RU5EX1BPUyhpKTsKIAogCQkvKgpAQCAtMjM2MCwxMCArMjMzOCw3IEBAIFNpZ25hbEJhY2tl bmRzKHZvaWQpCiAJCQkJCQkJCQlRVUVVRV9QT1NfUEFHRShwb3MpKSA+PSBRVUVVRV9DTEVB TlVQX0RFTEFZKQogCQl7CiAJCQkvKiBJdCdzIGlkbGUgYW5kIGZhciBiZWhpbmQsIHNvIHdh a2UgaXQgdXAgKi8KLQkJCUFzc2VydChwaWQgIT0gSW52YWxpZFBpZCk7Ci0KIAkJCVFVRVVF X0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlkc1tjb3Vu dF0gPSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3VudCsrOwog CQl9CkBAIC0yMzcxLDI5ICsyMzQ2LDIwIEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiAKIAlM V0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAKLQkvKiBOb3cgc2VuZCBzaWduYWxz ICovCisJLyogTm93IHNlbmQgdGhlIGludGVycnVwdHMgKi8KIAlmb3IgKGludCBpID0gMDsg aSA8IGNvdW50OyBpKyspCiAJewotCQlpbnQzMgkJcGlkID0gc2lnbmFsUGlkc1tpXTsKKwkJ UHJvY051bWJlcglwcm9jbm8gPSBzaWduYWxQcm9jbm9zW2ldOwogCiAJCS8qCi0JCSAqIElm IHdlIGFyZSBzaWduYWxpbmcgb3VyIG93biBwcm9jZXNzLCBubyBuZWVkIHRvIGludm9sdmUg dGhlIGtlcm5lbDsKLQkJICoganVzdCBzZXQgdGhlIGZsYWcgZGlyZWN0bHkuCisJCSAqIE5v dGU6IGl0J3MgdW5saWtlbHkgYnV0IGNlcnRhaW5seSBwb3NzaWJsZSB0aGF0IHRoZSBiYWNr ZW5kIGV4aXRlZAorCQkgKiBzaW5jZSB3ZSByZWxlYXNlZCBOb3RpZnlRdWV1ZUxvY2suIFdl J2xsIHNlbmQgdGhlIGludGVycnVwdCB0bworCQkgKiB3cm9uZyBiYWNrZW5kIGluIHRoYXQg Y2FzZSwgYnV0IHRoYXQncyBoYXJtbGVzcy4KIAkJICovCi0JCWlmIChwaWQgPT0gTXlQcm9j UGlkKQotCQl7Ci0JCQlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJCWNvbnRp bnVlOwotCQl9Ci0KLQkJLyoKLQkJICogTm90ZTogYXNzdW1pbmcgdGhpbmdzIGFyZW4ndCBi cm9rZW4sIGEgc2lnbmFsIGZhaWx1cmUgaGVyZSBjb3VsZAotCQkgKiBvbmx5IG9jY3VyIGlm IHRoZSB0YXJnZXQgYmFja2VuZCBleGl0ZWQgc2luY2Ugd2UgcmVsZWFzZWQKLQkJICogTm90 aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1bmxpa2VseSBidXQgY2VydGFpbmx5IHBvc3NpYmxl LiBTbyB3ZQotCQkgKiBqdXN0IGxvZyBhIGxvdy1sZXZlbCBkZWJ1ZyBtZXNzYWdlIGlmIGl0 IGhhcHBlbnMuCi0JCSAqLwotCQlpZiAoU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX05P VElGWV9JTlRFUlJVUFQsIHNpZ25hbFByb2Nub3NbaV0pIDwgMCkKLQkJCWVsb2coREVCVUcz LCAiY291bGQgbm90IHNpZ25hbCBiYWNrZW5kIHdpdGggUElEICVkOiAlbSIsIHBpZCk7CisJ CWlmIChwcm9jbm8gPT0gTXlQcm9jTnVtYmVyKQorCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0FTWU5DX05PVElGWSk7CisJCWVsc2UKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X0FTWU5DX05PVElGWSwgcHJvY25vKTsKIAl9CiB9CiAKQEAgLTI1MzAsMzkgKzI0OTYsMTIg QEAgQXRTdWJBYm9ydF9Ob3RpZnkodm9pZCkKIAl9CiB9CiAKLS8qCi0gKiBIYW5kbGVOb3Rp ZnlJbnRlcnJ1cHQKLSAqCi0gKgkJU2lnbmFsIGhhbmRsZXIgcG9ydGlvbiBvZiBpbnRlcnJ1 cHQgaGFuZGxpbmcuIExldCB0aGUgYmFja2VuZCBrbm93Ci0gKgkJdGhhdCB0aGVyZSdzIGEg cGVuZGluZyBub3RpZnkgaW50ZXJydXB0LiBJZiB3ZSdyZSBjdXJyZW50bHkgcmVhZGluZwot ICoJCWZyb20gdGhlIGNsaWVudCwgdGhpcyB3aWxsIGludGVycnVwdCB0aGUgcmVhZCBhbmQK LSAqCQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2FsbCBQcm9jZXNzTm90 aWZ5SW50ZXJydXB0KCkuCi0gKi8KLXZvaWQKLUhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lk KQotewotCS8qCi0JICogTm90ZTogdGhpcyBpcyBjYWxsZWQgYnkgYSBTSUdOQUwgSEFORExF Ui4gWW91IG11c3QgYmUgdmVyeSB3YXJ5IHdoYXQKLQkgKiB5b3UgZG8gaGVyZS4KLQkgKi8K LQotCS8qIHNpZ25hbCB0aGF0IHdvcmsgbmVlZHMgdG8gYmUgZG9uZSAqLwotCW5vdGlmeUlu dGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbWFrZSBzdXJlIHRoZSBldmVudCBpcyBw cm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCiAv KgogICogUHJvY2Vzc05vdGlmeUludGVycnVwdAogICoKLSAqCQlUaGlzIGlzIGNhbGxlZCBp ZiB3ZSBzZWUgbm90aWZ5SW50ZXJydXB0UGVuZGluZyBzZXQsIGp1c3QgYmVmb3JlCi0gKgkJ dHJhbnNtaXR0aW5nIFJlYWR5Rm9yUXVlcnkgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5kIGNv bW1hbmQsIGFuZAotICoJCWFsc28gaWYgYSBub3RpZnkgc2lnbmFsIG9jY3VycyB3aGlsZSBy ZWFkaW5nIGZyb20gdGhlIGZyb250ZW5kLgotICoJCUhhbmRsZU5vdGlmeUludGVycnVwdCgp IHdpbGwgY2F1c2UgdGhlIHJlYWQgdG8gYmUgaW50ZXJydXB0ZWQKLSAqCQl2aWEgdGhlIHBy b2Nlc3MncyBsYXRjaCwgYW5kIHRoaXMgcm91dGluZSB3aWxsIGdldCBjYWxsZWQuCi0gKgkJ SWYgd2UgYXJlIHRydWx5IGlkbGUgKGllLCAqbm90KiBpbnNpZGUgYSB0cmFuc2FjdGlvbiBi bG9jayksCi0gKgkJcHJvY2VzcyB0aGUgaW5jb21pbmcgbm90aWZpZXMuCisgKgkJVGhpcyBp cyBjYWxsZWQgaWYgd2Ugc2VlIElOVEVSUlVQVF9BU1lOQ19OT1RJRlkgc2V0LCBqdXN0IGJl Zm9yZQorICoJCXRyYW5zbWl0dGluZyBSZWFkeUZvclF1ZXJ5IGF0IHRoZSBlbmQgb2YgYSBm cm9udGVuZCBjb21tYW5kLCBhbmQgYWxzbworICoJCWlmIHRoZSBpbnRlcnJ1cHQgb2NjdXJz IHdoaWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQuCiAgKgogICoJCUlmICJmbHVzaCIg aXMgdHJ1ZSwgZm9yY2UgYW55IGZyb250ZW5kIG1lc3NhZ2VzIG91dCBpbW1lZGlhdGVseS4K ICAqCQlUaGlzIGNhbiBiZSBmYWxzZSB3aGVuIGJlaW5nIGNhbGxlZCBhdCB0aGUgZW5kIG9m IGEgZnJvbnRlbmQgY29tbWFuZCwKQEAgLTI1NzEsMTIgKzI1MTAsMTMgQEAgSGFuZGxlTm90 aWZ5SW50ZXJydXB0KHZvaWQpCiB2b2lkCiBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGJvb2wg Zmx1c2gpCiB7Ci0JaWYgKElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKSkKLQkJ cmV0dXJuOwkJCQkJLyogbm90IHJlYWxseSBpZGxlICovCisJQXNzZXJ0KCFJc1RyYW5zYWN0 aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpOwogCi0JLyogTG9vcCBpbiBjYXNlIGFub3RoZXIg c2lnbmFsIGFycml2ZXMgd2hpbGUgc2VuZGluZyBtZXNzYWdlcyAqLwotCXdoaWxlIChub3Rp ZnlJbnRlcnJ1cHRQZW5kaW5nKQorCS8qIExvb3AgaW4gY2FzZSBhbm90aGVyIGludGVycnVw dCBhcnJpdmVzIHdoaWxlIHNlbmRpbmcgbWVzc2FnZXMgKi8KKwlkbworCXsKIAkJUHJvY2Vz c0luY29taW5nTm90aWZ5KGZsdXNoKTsKKwl9IHdoaWxlIChDb25zdW1lSW50ZXJydXB0KElO VEVSUlVQVF9BU1lOQ19OT1RJRlkpKTsKIH0KIAogCkBAIC0yNjg2LDcgKzI2MjYsNyBAQCBh c3luY1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnModm9pZCkKIAkJCSAqIE91ciBzdG9wIHBv c2l0aW9uIGlzIHdoYXQgd2UgZm91bmQgdG8gYmUgdGhlIGhlYWQncyBwb3NpdGlvbgogCQkJ ICogd2hlbiB3ZSBlbnRlcmVkIHRoaXMgZnVuY3Rpb24uIEl0IG1pZ2h0IGhhdmUgY2hhbmdl ZCBhbHJlYWR5LgogCQkJICogQnV0IGlmIGl0IGhhcywgd2Ugd2lsbCByZWNlaXZlIChvciBo YXZlIGFscmVhZHkgcmVjZWl2ZWQgYW5kCi0JCQkgKiBxdWV1ZWQpIGFub3RoZXIgc2lnbmFs IGFuZCBjb21lIGhlcmUgYWdhaW4uCisJCQkgKiBxdWV1ZWQpIGFub3RoZXIgaW50ZXJydXB0 IGFuZCBjb21lIGhlcmUgYWdhaW4uCiAJCQkgKgogCQkJICogV2UgYXJlIG5vdCBob2xkaW5n IE5vdGlmeVF1ZXVlTG9jayBoZXJlISBUaGUgcXVldWUgY2FuIG9ubHkKIAkJCSAqIGV4dGVu ZCBiZXlvbmQgdGhlIGhlYWQgcG9pbnRlciAoc2VlIGFib3ZlKSBhbmQgd2UgbGVhdmUgb3Vy CkBAIC0zMDUwLDkgKzI5OTAsNiBAQCBBc3luY05vdGlmeUZyZWV6ZVhpZHMoVHJhbnNhY3Rp b25JZCBuZXdGcm96ZW5YaWQpCiBzdGF0aWMgdm9pZAogUHJvY2Vzc0luY29taW5nTm90aWZ5 KGJvb2wgZmx1c2gpCiB7Ci0JLyogV2UgKm11c3QqIHJlc2V0IHRoZSBmbGFnICovCi0Jbm90 aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCiAJLyogRG8gbm90aGluZyBlbHNlIGlm IHdlIGFyZW4ndCBhY3RpdmVseSBsaXN0ZW5pbmcgKi8KIAlpZiAoTG9jYWxDaGFubmVsVGFi bGVJc0VtcHR5KCkpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFy c2UuYwppbmRleCA5NGQ2ZjQxNWEwNi4uNTAwNTAzMGNkN2IgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTI2OSw5ICsyNjksMTMgQEAgQ29weUdldERhdGEo Q29weUZyb21TdGF0ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBtaW5yZWFkLCBpbnQg bWF4cmVhZCkKIAkJCQkJLyogVHJ5IHRvIHJlY2VpdmUgYW5vdGhlciBtZXNzYWdlICovCiAJ CQkJCWludAkJCW10eXBlOwogCQkJCQlpbnQJCQltYXhtc2dsZW47CisJCQkJCWJvb2wJCXNh dmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQ7CiAKIAkJCXJlYWRtZXNzYWdlOgotCQkJCQlIT0xE X0NBTkNFTF9JTlRFUlJVUFRTKCk7CisJCQkJCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQg PSAoRW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkgIT0g MDsKKwkJCQkJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQpCisJCQkJCQlEaXNhYmxl SW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOworCiAJCQkJCXBxX3N0YXJ0bXNn cmVhZCgpOwogCQkJCQltdHlwZSA9IHBxX2dldGJ5dGUoKTsKIAkJCQkJaWYgKG10eXBlID09 IEVPRikKQEAgLTMwMyw3ICszMDcsMTAgQEAgQ29weUdldERhdGEoQ29weUZyb21TdGF0ZSBj c3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKIAkJCQkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9G QUlMVVJFKSwKIAkJCQkJCQkJIGVycm1zZygidW5leHBlY3RlZCBFT0Ygb24gY2xpZW50IGNv bm5lY3Rpb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uIikpKTsKLQkJCQkJUkVTVU1FX0NB TkNFTF9JTlRFUlJVUFRTKCk7CisKKwkJCQkJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJs ZWQpCisJCQkJCQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CisK IAkJCQkJLyogLi4uIGFuZCBwcm9jZXNzIGl0ICovCiAJCQkJCXN3aXRjaCAobXR5cGUpCiAJ CQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggMDM5MzJmNDVjOGEuLmNjMzRmNDBm MmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNDIsMTIgKzQyLDEyIEBACiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3Mu aCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1 bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCIK LSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgpAQCAtMjQzMCw4ICsyNDMwLDcgQEAgdmFjdXVtX2RlbGF5X3BvaW50 KGJvb2wgaXNfYW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8K IAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwK LQkJKCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAo IVZhY3V1bUNvc3RBY3RpdmUgJiYgIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMjQ0MCw5ICsyNDM5LDkgQEAgdmFj dXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkgKiBbYXV0b3ZhY3V1bV9ddmFj dXVtX2Nvc3RfZGVsYXkgdG8gdGFrZSBlZmZlY3Qgd2hpbGUgYSB0YWJsZSBpcyBiZWluZwog CSAqIHZhY3V1bWVkIG9yIGFuYWx5emVkLgogCSAqLwotCWlmIChDb25maWdSZWxvYWRQZW5k aW5nICYmIEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkgJiYgQW1BdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpKQogCXsKLQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CiAJCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOwogCX0KQEAgLTI1MjksOCAr MjUyOCw4IEBAIHZhY3V1bV9kZWxheV9wb2ludChib29sIGlzX2FuYWx5emUpCiAJCS8qCiAJ CSAqIFdlIGRvbid0IHdhbnQgdG8gaWdub3JlIHBvc3RtYXN0ZXIgZGVhdGggZHVyaW5nIHZl cnkgbG9uZyB2YWN1dW1zCiAJCSAqIHdpdGggdmFjdXVtX2Nvc3RfZGVsYXkgY29uZmlndXJl ZC4gIFdlIGNhbid0IHVzZSB0aGUgdXN1YWwKLQkJICogV2FpdExhdGNoKCkgYXBwcm9hY2gg aGVyZSBiZWNhdXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFzZWQgc2xlZXAKLQkJICogZHVy YXRpb25zIGFib3ZlLgorCQkgKiBXYWl0SW50ZXJydXB0KCkgYXBwcm9hY2ggaGVyZSBiZWNh dXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFzZWQKKwkJICogc2xlZXAgZHVyYXRpb25zIGFi b3ZlLgogCQkgKi8KIAkJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFQb3N0bWFzdGVySXNB bGl2ZSgpKQogCQkJZXhpdCgxKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRl eCA3MTM4ZGM2OTJjNi4uMTY2YjZmNWVlYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKQEAgLTYxLDkgKzYxLDkgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0 aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVj dXRvci9ub2RlQXBwZW5kLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvd2FpdGV2ZW50c2V0LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIAogLyog U2hhcmVkIHN0YXRlIGZvciBwYXJhbGxlbC1hd2FyZSBBcHBlbmQuICovCiBzdHJ1Y3QgUGFy YWxsZWxBcHBlbmRTdGF0ZQpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgRXhlY0FwcGVuZEFzeW5j RXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCUFzc2VydChub2RlLT5hc19ldmVudHNl dCA9PSBOVUxMKTsKIAlub2RlLT5hc19ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNldChD dXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7CiAJQWRkV2FpdEV2ZW50VG9TZXQobm9k ZS0+YXNfZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQs Ci0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHaXZlIGVh Y2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4gKi8KIAlpID0g LTE7CkBAIC0xMDY3LDggKzEwNjcsOCBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBw ZW5kU3RhdGUgKm5vZGUpCiAJfQogCiAJLyoKLQkgKiBBZGQgdGhlIHByb2Nlc3MgbGF0Y2gg dG8gdGhlIHNldCwgc28gdGhhdCB3ZSB3YWtlIHVwIHRvIHByb2Nlc3MgdGhlCi0JICogc3Rh bmRhcmQgaW50ZXJydXB0cyB3aXRoIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJICogQWRk IHRoZSBjdXJyZW50bHkgZW5hYmxlZCBpbnRlcnJ1cHRzIHRvIHRoZSBzZXQsIHNvIHRoYXQg d2Ugd2FrZSB1cCB0bworCSAqIHByb2Nlc3MgdGhlbSB3aXRoIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkuCiAJICoKIAkgKiBOT1RFOiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdCdzIGlt cG9ydGFudCB0aGF0IHRoaXMgaXMgYWRkZWQgdG8gdGhlCiAJICogV2FpdEV2ZW50U2V0IGFm dGVyIHRoZSBFeGVjQXN5bmNDb25maWd1cmVXYWl0KCkgY2FsbHMuICBOYW1lbHksCkBAIC0x MDc4LDggKzEwNzgsOCBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUg Km5vZGUpCiAJICogd2UgY2Fubm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBoYXMg cG9zc2libHkgYmVlbiBjb3BpZWQgdG8gb3RoZXIKIAkgKiBleHRlbnNpb25zIHRvby4KIAkg Ki8KLQlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfTEFUQ0hfU0VU LCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCUFkZFdhaXRF dmVudFRvU2V0KG5vZGUtPmFzX2V2ZW50c2V0LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9T T0NLRVQsCisJCQkJCSAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywgTlVMTCk7CiAKIAkvKiBS ZXR1cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwuICov CiAJaWYgKG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0laRSkKQEAgLTExMjIsMTQgKzExMjIs MTAgQEAgRXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCQkJ CUV4ZWNBc3luY05vdGlmeShhcmVxKTsKIAkJCX0KIAkJfQotCi0JCS8qIEhhbmRsZSBzdGFu ZGFyZCBpbnRlcnJ1cHRzICovCi0JCWlmICgody0+ZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAh PSAwKQotCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKLQkJfQogCX0KKworCS8qIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzICov CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDQxMDVmMWQxOTY4Li5hMzdkNmU5MDZiMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMzQsNyArMzQsNyBAQAogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUdh dGhlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgotI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCkBAIC0z ODIsOSArMzgyLDExIEBAIGdhdGhlcl9yZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVyc3Rh dGUpCiAJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qIE5vdGhpbmcgdG8gZG8gZXhjZXB0IHdh aXQgZm9yIGRldmVsb3BtZW50cy4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwg V0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJVF9F VkVOVF9FWEVDVVRFX0dBVEhFUik7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJKHZv aWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJ TlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElU X09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7 CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQkJbnZpc2l0 ZWQgPSAwOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxl IGIvc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi43ZDQ2NWJjOTdkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL2lwYy9NYWtlZmlsZQpAQCAtMCwwICsxLDE5IEBACisjLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxlIGZvciBiYWNrZW5kL2lwYworIwor IyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9pcGMvTWFrZWZpbGUKKyMKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy9iYWNrZW5kL2lwYwordG9wX2J1 aWxkZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKKworT0JKUyA9IFwKKwlpbnRlcnJ1cHQubyBcCisJc2lnbmFsX2hhbmRsZXJz Lm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZCBiL3NyYy9iYWNrZW5kL2lwYy9S RUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1OWYz ZDNjYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZApA QCAtMCwwICsxLDI2MCBAQAorSW50ZXJydXB0cworPT09PT09PT09PQorCisiSW50ZXJydXB0 cyIgYXJlIGEgc2V0IG9mIGZsYWdzIHRoYXQgcmVwcmVzZW50IGNvbmRpdGlvbnMgdGhhdCBz aG91bGQKK2JlIGhhbmRsZWQgYXQgYSBsYXRlciB0aW1lLiAgVGhleSBhcmUgcm91Z2hseSBh bmFsb2dvdXMgdG8gVW5peAorc2lnbmFscywgZXhjZXB0IHRoYXQgdGhleSBhcmUgaGFuZGxl ZCBjb29wZXJhdGl2ZWx5IGJ5IGNoZWNraW5nIGZvcgordGhlbSBhdCBtYW55IHBvaW50cyBp biB0aGUgY29kZS4gVGhlIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbWFjcm8gaXMKK2NhbGxl ZCBhdCBzdHJhdGVnaWNhbGx5IGxvY2F0ZWQgc3BvdHMgd2hlcmUgaXQgaXMgbm9ybWFsbHkg c2FmZSB0bworcHJvY2VzcyBpbnRlcnJ1cHRzLgorCitXZWxsIGJlaGF2ZWQgYmFja2VuZCBj b2RlIGNhbGxzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5IGluCithbnkg bG9uZy1ydW5uaW5nIGxvb3BzIG9yIG90aGVyIGxvbmcgY29tcHV0YXRpb25zLCBhbmQgbmV2 ZXIgc2xlZXBzCit1c2luZyBtZWNoYW5pc21zIG90aGVyIHRoYW4gdGhlIFdhaXRFdmVudFNl dCBtZWNoYW5pc20gb3IgdGhlIG1vcmUKK2NvbnZlbmllbnQgV2FpdEludGVycnVwdCAvIFdh aXRTb2NrZXJPckludGVycnVwdCBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IKK2JvdW5kZWQgc2hv cnQgcGVyaW9kcywgZWcgTFdMb2NrIHdhaXRzKS4gRm9sbG93aW5nIHRoZXNlIHJ1bGVzIGVu c3VyZXMKK3RoYXQgdGhlIGJhY2tlbmQgZG9lc24ndCBiZWNvbWUgdW5jYW5jZWxsYWJsZSBm b3IgdG9vIGxvbmcuCisKK0VhY2ggaW50ZXJydXB0IHR5cGUgY2FuIGhhdmUgYSBoYW5kbGVy IGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdCwKK3doaWNoIHdpbGwgYmUgY2FsbGVkIGJ5 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlIGludGVycnVwdCBpcworcGVuZGluZy4g IEEgc3RhbmRhcmQgc2V0IG9mIGludGVycnVwdCBoYW5kbGVycyBhcmUgaW5zdGFsbGVkIGF0 Citwcm9jZXNzIHN0YXJ0dXAsIGJ1dCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5CitTZXRJ bnRlcnJ1cHRIYW5kbGVyKCkuIEEgaGFuZGxlciBjYW4gYWxzbyBiZSB0ZW1wb3JhcmlseSBk aXNhYmxlZCBieQorY2FsbGluZyBEaXNhYmxlSW50ZXJydXB0IGFuZCByZS1lbmFibGVkIGJ5 IEVuYWJsZUludGVycnVwdC4KKworSWYgYW4gaW50ZXJydXB0IGlzIHJhaXNlZCB0aGF0IGRv ZXNuJ3QgaGF2ZSBhIGhhbmRsZXIgZnVuY3Rpb24gb3IgaXQKK2lzIG5vdCBlbmFibGVkLCB0 aGUgaW50ZXJydXB0IHdpbGwgcmVtYWluIHBlbmRpbmcgdW50aWwgaXQgaXMgY2xlYXJlZCwK K29yIHRoZSBoYW5kbGVyIGlzIHJlLWVuYWJsZWQuCisKK0lmIGFuIGludGVycnVwdCBpcyBz ZW50IHRoYXQgd2FzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIHRhcmdldAorcHJvY2Vzcywg aXQgaXMgY29hbGVzY2VkLCBpZS4gdGhlIHRhcmdldCBwcm9jZXNzIHdpbGwgcHJvY2VzcyBp dCBvbmx5CitvbmNlLiBBdHRlbXB0aW5nIHRvIHNldCBhbiBpbnRlcnJ1cHQgYml0IHRoYXQg aXMgYWxyZWFkeSBzZXQgaXMgdmVyeQorZmFzdCwgYW1vdW50aW5nIHRvIG1lcmVseSBhbiBh dG9taWMgb3AgaW4gc2hhcmVkIG1lbW9yeS4KKworU2VlIHNyYy9pbmNsdWRlL2lwYy9pbnRl cnJ1cHQuaCBmb3IgYSBsaXN0IG9mIGFsbCB0aGUgaW50ZXJydXB0cyB1c2VkCitpbiBjb3Jl IGNvZGUuIEV4dGVuc2lvbnMgY2FuIGRlZmluZSB0aGVpciBvd24gaW50ZXJydXB0cy4KKwor SE9MRC9SRVNVTUVfSU5URVJSVVBUUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQcm9j ZXNzaW5nIGFuIGludGVycnVwdCBtYXkgdGhyb3cgYW4gZXJyb3Igd2l0aCBlcmVwb3J0KCkg KGZvcgorZXhhbXBsZSwgcXVlcnkgY2FuY2VsbGF0aW9uKSBvciB0ZXJtaW5hdGUgdGhlIHBy b2Nlc3MgZ3JhY2VmdWxseS4gSW4KK3NvbWUgY2FzZXMsIHdlIGludm9rZSBDSEVDS19GT1Jf SU5URVJSVVBUUygpIGluc2lkZSBsb3ctbGV2ZWwKK3N1YnJvdXRpbmVzIHRoYXQgbWlnaHQg c29tZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0cyB0aGF0IGRvICpub3QqCit3YW50IHRv IGFsbG93IGludGVycnVwdCBwcm9jZXNzaW5nLiAgVGhlIEhPTERfSU5URVJSVVBUUygpIGFu ZAorUkVTVU1FX0lOVEVSUlVQVFMoKSBtYWNyb3MgYWxsb3cgY29kZSB0byBlbnN1cmUgdGhh dCBubyBpbnRlcnJ1cHQKK2hhbmRsZXJzIGFyZSBjYWxsZWQsIGV2ZW4gaWYgQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKSBnZXRzIGNhbGxlZCBpbiBhCitzdWJyb3V0aW5lLiAgVGhlIGludGVy cnVwdCB3aWxsIGJlIGhlbGQgb2ZmIHVudGlsCitDSEVDS19GT1JfSU5URVJSVVBUUygpIGlz IGRvbmUgb3V0c2lkZSBhbnkgSE9MRF9JTlRFUlJVUFRTKCkgLi4uCitSRVNVTUVfSU5URVJS VVBUUygpIHNlY3Rpb24uCisKK0hPTERfSU5URVJSVVBUUygpIGJsb2NrcyBjYW4gYmUgbmVz dGVkLiBJZiBIT0xEX0lOVEVSUlVQVFMoKSBpcyBjYWxsZWQKK211bHRpcGxlIHRpbWVzLCBp bnRlcnJ1cHRzIGFyZSBoZWxkIHVudGlsIGV2ZXJ5IEhPTERfSU5URVJSVVBUUygpIGNhbGwK K2hhcyBiZWVuIGJhbGFuY2VkIHdpdGggYSBSRVNVTUVfSU5URVJSVVBUUygpIGNhbGwuCisK K0NyaXRpY2FsIHNlY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLQorCitBIHJlbGF0ZWQsIGJ1 dCBjb25jZXB0dWFsbHkgZGlzdGluY3QsIG1lY2hhbmlzbSBpcyB0aGUgImNyaXRpY2FsCitz ZWN0aW9uIiBtZWNoYW5pc20uICBBIGNyaXRpY2FsIHNlY3Rpb24gbm90IG9ubHkgaG9sZHMg b2ZmIGNhbmNlbC9kaWUKK2ludGVycnVwdHMsIGJ1dCBjYXVzZXMgYW55IGVyZXBvcnQoRVJS T1IpIG9yIGVyZXBvcnQoRkFUQUwpIHRvIGJlY29tZQorZXJlcG9ydChQQU5JQykgLS0tIHRo YXQgaXMsIGEgc3lzdGVtLXdpZGUgcmVzZXQgaXMgZm9yY2VkLiAgTmVlZGxlc3MKK3RvIHNh eSwgb25seSByZWFsbHkgKmNyaXRpY2FsKiBjb2RlIHNob3VsZCBiZSBtYXJrZWQgYXMgYSBj cml0aWNhbAorc2VjdGlvbiEgVGhpcyBtZWNoYW5pc20gaXMgbW9zdGx5IHVzZWQgZm9yIFhM T0ctcmVsYXRlZCBjb2RlLgorCitTZW5kaW5nIGludGVycnVwdHMKKy0tLS0tLS0tLS0tLS0t LS0tLQorCitJbnRlcnJ1cHQgZmxhZ3MgY2FuIGJlICJyYWlzZWQiIGluIGRpZmZlcmVudCB3 YXlzOgorLSBzeW5jaHJvbm91c2x5IGJ5IGNvZGUgdGhhdCB3YW50cyB0byBkZWZlciBhbiBh Y3Rpb24sIGJ5IGNhbGxpbmcKKyAgUmFpc2VJbnRlcnJ1cHQsCistIGFzeW5jaHJvbm91c2x5 IGJ5IHRpbWVycyBvciBvdGhlciBzaWduYWwgaGFuZGxlcnMsIGFsc28gYnkgY2FsbGluZwor ICBSYWlzZUludGVycnVwdCwgb3IKKy0gInNlbnQiIGJ5IG90aGVyIGJhY2tlbmRzIHdpdGgg U2VuZEludGVycnVwdAorCitQcm9jZXNzaW5nIGludGVycnVwdHMKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitJbnRlcnJ1cHRzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkgaGFuZGxlciBm dW5jdGlvbnMsIHdoaWNoIGFyZSBjYWxsZWQKK2Zyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworcGVuZGluZy4gVXNlIFNl dEludGVycnVwdEhhbmRsZXIoKSB0byBpbnN0YWxsIGEgaGFuZGxlciBmdW5jdGlvbi4KKwor U29tZXRpbWVzIHlvdSBkb24ndCB3YW50IGFuIGludGVycnVwdCB0byBiZSBwcm9jZXNzZWQg YXQgYW55IHJhbmRvbQorQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBpbnZvY2F0aW9uLiBJbiB0 aGF0IGNhc2UsIHlvdSBjYW4gbGVhdmUgdGhlCitpbnRlcnJ1cHQgaGFuZGxlciBkaXNhYmxl ZCwgYW5kIGNoZWNrIGZvciB0aGUgaW50ZXJydXB0IGV4cGxpY2l0bHkgYXQKK3N1aXRhYmxl IHNwb3RzIHdpdGggSW50ZXJydXB0UGVuZGluZygpLgorCitJTlRFUlJVUFRTX1BFTkRJTkdf Q09ORElUSU9OKCkgY2FuIGJlIGNoZWNrZWQgdG8gc2VlIHdoZXRoZXIgYW4KK2ludGVycnVw dCBuZWVkcyB0byBiZSBzZXJ2aWNlZCwgd2l0aG91dCB0cnlpbmcgdG8gZG8gc28gaW1tZWRp YXRlbHkuCitTb21lIGNhbGxlcnMgYXJlIGFsc28gaW50ZXJlc3RlZCBpbiBJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoKSwKK3doaWNoIHRlbGxzIHdoZXRoZXIgQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSBpcyBzdXJlIHRvIGNsZWFyIHRoZQoraW50ZXJydXB0LgorCisKK1dhaXRp bmcgZm9yIGFuIGludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgY29y cmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGFuIGV2ZW50KHMpIHRoYXQgcmFpc2VzIGFuIGlu dGVycnVwdAoraXM6CisKK2BgYAorZm9yICg7OykKK3sKKwkvKiBIYW5kbGUgYW55IG90aGVy IGludGVycnVwdHMgcmVjZWl2ZWQgd2hpbGUgd2UncmUgd2FpdGluZyAqLworCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisKKwkvKiBDaGVjayBpZiBvdXIgaW50ZXJydXB0IHdhcyByYWlz ZWQgKGNsZWFyaW5nIGl0IGlmIGl0IHdhcykgKi8KKwlpZiAoQ29uc3VtZUludGVycnVwdChJ TlRFUlJVUFRfUFJJTlRFUl9PTl9GSVJFKSkKKwkJYnJlYWs7CisKKwkvKgorCSAqIFNsZWVw IHVudGlsIG91ciBpbnRlcnJ1cHQgb3Igb25lIG9mIHRoZSBzdGFuZGFyZCBpbnRlcnJ1cHRz IGlzCisJICogcmVjZWl2ZWQuCisJICovCisJV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJ X01BU0sgfAorCQkJCSAgSU5URVJSVVBUX1BSSU5URVJfT05fRklSRSwKKwkJCQkgIC4uLik7 Cit9CitgYGAKKworT2Z0ZW4gYW4gaW50ZXJydXB0IGlzIHVzZWQgdG8gd2FrZSB1cCBhIHBy b2Nlc3MgdGhhdCBpcyBrbm93biB0byBiZQord2FpdGluZyBhbmQgbm90IGRvaW5nIGFueXRo aW5nIGVsc2UuIFRoZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKK2ludGVycnVwdCBpcyByZXNl cnZlZCBmb3Igc3VjaCB1c2UgY2FzZXMgd2hlcmUgeW91IGRvbid0IG5lZWQgYQorZGVkaWNh dGVkIGludGVycnVwdCBmbGFnLiBXaGVuIHVzaW5nIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwg eW91IG5lZWQKK3NvbWUgb3RoZXIgc2lnbmFsaW5nLCBlLmcuIGEgZmxhZyBpbiBzaGFyZWQg bWVtb3J5LCB0byBpbmRpY2F0ZSB0aGF0Cit0aGUgZGVzaXJlZCBldmVudCBoYXMgaGFwcGVu LCBhcyB5b3UgbWF5IHNvbWV0aW1lcyByZWNlaXZlIGZhbHNlCit3YWtldXBzLiBUaGUgcGF0 dGVybiB1c2luZyBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgbG9va3MgbGlrZSB0aGlzOgorCitg YGAKK2ZvciAoOzspCit7CisJLyogSGFuZGxlIGFueSBvdGhlciBpbnRlcnJ1cHRzIHJlY2Vp dmVkIHdoaWxlIHdlJ3JlIHdhaXRpbmcgKi8KKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwlpZiAod29yayB0 byBkbykKKwl7CisJCS8qIGluIHBhcnRpY3VsYXIsIGV4aXQgdGhlIGxvb3AgaWYgc29tZSBj b25kaXRpb24gc2F0aXNmaWVkICovCisJCURvIFN0dWZmKCk7CisJfQorCVdhaXRJbnRlcnJ1 cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCAuLi4pOworfQorYGBgCisKK0l0J3MgaW1wb3J0 YW50IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlcmUn cword29yayB0byBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGludGVycnVw dCBiZXR3ZWVuIHRoZSBjaGVjaworYW5kIHRoZSBDbGVhckludGVycnVwdCgpIGNhbGwsIHlv dSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbAoraW5jb3JyZWN0bHkgYmxvY2suIEFub3Ro ZXIgdmFsaWQgY29kaW5nIHBhdHRlcm4gbG9va3MgbGlrZToKKworYGBgCitmb3IgKDs7KQor eworCWlmICh3b3JrIHRvIGRvKQorCXsKKwkJLyogaW4gcGFydGljdWxhciwgZXhpdCB0aGUg bG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQgKi8KKwkJRG8gU3R1ZmYoKTsKKwl9 CisJV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIC4uLik7CisJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKK30KK2BgYAorCitUaGlzIGlzIHVz ZWZ1bCB0byByZWR1Y2UgaW50ZXJydXB0IHRyYWZmaWMgaWYgaXQncyBleHBlY3RlZCB0aGF0 IHRoZQorbG9vcCdzIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiB3aWxsIG9mdGVuIGJlIHNhdGlz ZmllZCBpbiB0aGUgZmlyc3QKK2l0ZXJhdGlvbjsgdGhlIGNvc3QgaXMgYW4gZXh0cmEgbG9v cCBpdGVyYXRpb24gYmVmb3JlIGJsb2NraW5nIHdoZW4gaXQKK2lzIG5vdC4gIFdoYXQgbXVz dCBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3VzCitl dmVudHMgYWZ0ZXIgV2FpdEludGVycnVwdCBhbmQgYmVmb3JlIENsZWFySW50ZXJydXB0LCBh cyB0aGF0IGNyZWF0ZXMKK2EgcmFjZSBjb25kaXRpb24uCisKK0N1c3RvbSBpbnRlcnJ1cHRz IGluIGV4dGVuc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4g ZXh0ZW5zaW9uIGNhbiBhbGxvY2F0ZSBpbnRlcnJ1cHQgYml0cyBmb3IgaXRzIG93biBwdXJw b3NlcyBieQorY2FsbGluZyBSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQoKS4gTm90ZSB0aGF0IGlu dGVycnVwdHMgYXJlIGEgc29tZXdoYXQKK3NjYXJjZSByZXNvdXJjZSwgc28gY29uc2lkZXIg dXNpbmcgSU5URVJSVVBUX1dBSVRfV0FLRVVQIGlmIGFsbCB5b3UKK25lZWQgaXMgYSBzaW1w bGUgd2FrZXVwIGluIHNvbWUgbG9vcC4KKworCitVbml4IFNpZ25hbHMKKz09PT09PT09PT09 PQorCitQb3N0bWFzdGVyIGFuZCBtb3N0IGNoaWxkIHByb2Nlc3NlcyBhbHNvIHJlc3BvbmQg dG8gYSBmZXcgc3RhbmRhcmQKK1VuaXggc2lnbmFsczoKKworU0lHSFVQIC0+IFJhaXNlcyBJ TlRFUlJVUFRfQ09ORklHX1JFTE9BRAorU0lHSU5UIC0+IFJhaXNlcyBJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMCitTSUdURVJNIC0+IFJhaXNlcyBJTlRFUlJVUFRfVEVSTUlOQVRFCitTSUdR VUlUIC0+IGltbWVkaWF0ZSBzaHV0ZG93biwgYWJvcnQgdGhlIHByb2Nlc3MKKworcGdfY3Rs IHVzZXMgdGhlc2UgVW5peCBzaWduYWxzIHRvIHRlbGwgcG9zdG1hc3RlciB0byByZWxvYWQg Y29uZmlnLAorc3RvcCwgZXRjLiBUaGVzZSBhcmUgYWxzbyBtZW50aW9uZWQgaW4gdGhlIHVz ZXIgZG9jdW1lbnRhdGlvbi4KKworUG9zdG1hc3RlciBjYW5ub3Qgc2VuZCBpbnRlcnJ1cHRz IHRvIHByb2Nlc3NlcyB3aXRob3V0IFBHUFJPQyBlbnRyaWVzCisoanVzdCBzeXNsb2dnZXIg bm93YWRheXMpLCBhbmQgaXQgZG9lc24ndCBrbm93IHRoZSBQR1BST0MgZW50cmllcyBvZgor b3RoZXIgY2hpbGQgcHJvY2Vzc2VzIGFueXdheS4gSGVuY2UsIGl0IHN0aWxsIHVzZXMgdGhl IGFib3ZlIFVuaXgKK3NpZ25hbHMgZm9yIHBvc3RtYXN0ZXIgLT4gY2hpbGQgc2lnbmFsaW5n LiBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbgorcG9zdG1hc3RlciBub3RpZmllcyBhIGJh Y2tlbmQgdGhhdCBhIGJnd29ya2VyIGl0IGxhdW5jaGVkIGhhcworZXhpdGVkLiBQb3N0bWFz dGVyIHNlbmRzIHRoYXQgaW50ZXJydXB0IGRpcmVjdGx5LiBUaGUgYmFja2VuZAorcmVnaXN0 ZXJzIGV4cGxpY2l0bHkgZm9yIHRoYXQgbm90aWZpY2F0aW9uLCBhbmQgc3VwcGxpZXMgdGhl CitQcm9jTnVtYmVyIHRvIHBvc3RtYXN0ZXIgd2hlbiByZWdpc3RlcmluZy4KKworVGhlcmUg YXJlIGEgZmV3IG1vcmUgZXhjZXB0aW9uczoKKworLSBBIGZldyBwcm9jZXNzZXMgbGlrZSB0 aGUgY2hlY2twb2ludGVyLCBhcmNoaXZlciwgYW5kIElPIHdvcmtlcnMKKyAgZG9uJ3QgcmVh Y3QgdG8gU0lHVEVSTSwgYmVjYXVzZSBVbml4IHN5c3RlbSBzaHV0ZG93biBzZW5kcyBhIFNJ R1RFUk0KKyAgdG8gYWxsIHByb2Nlc3NlcywgYW5kIHdlIHdhbnQgdGhlbSB0byBleGl0IG9u bHkgb25seSBhZnRlciBhbGwgb3RoZXIKKyAgcHJvY2Vzcy4gSW5zdGVhZCwgdGhlIHBvc3Rt YXN0ZXIgc2VuZHMgdGhlbSBTSUdVU1IyIGFmdGVyIGFsbCB0aGUKKyAgb3RoZXIgcHJvY2Vz c2VzIGhhdmUgZXhpdGVkLgorCistIENoaWxkIHByb2Nlc3NlcyB1c2UgU0lHVVNSMSB0byBy ZXF1ZXN0IHRoZSBwb3N0bWFzdGVyIHRvIGRvIHZhcmlvdXMKKyAgYWN0aW9ucyBvciBub3Rp ZnkgdGhhdCBzb21lIGV2ZW50IGhhcyBvY2N1cnJlZC4gU2VlIHBtc2lnbmFsLmMgZm9yCisg IGRldGFpbHMgb24gdGhhdCBtZWNoYW5pc20KKworCitUT0RPOiBPcGVuIHF1ZXN0aW9ucwor PT09PT09PT09PT09PT09PT09PT0KKworVE9ETzogUHV0IHBlbmRpbmdJbnRlcnJ1cHRzIGlu IFBNQ2hpbGRTbG90IG9yIFBHUFJPQz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUG9zdG1hc3RlciBjYW5ub3Qgc2VuZCBpbnRl cnJ1cHRzIHRvIHByb2Nlc3NlcyB3aXRob3V0IFBHUFJPQworZW50cmllcy4gSGVuY2UsIGl0 IHN0aWxsIHVzZXMgcGxhaW4gVW5peCBzaWduYWxzLiBXb3VsZCBiZSBuaWNlIGlmCitwb3N0 bWFzdGVyIGNvdWxkIHNlbmQgaW50ZXJydXB0cyBkaXJlY3RseS4gSWYgd2UgbW92ZWQgdGhl IGludGVycnVwdAorbWFzayB0byBQTUNoaWxkU2xvdCwgaXQgY291bGQuICBIb3dldmVyLCBQ R1BST0Mgc2VlbXMgbGlrZSBhIG1vcmUKK25hdHVyYWwgbG9jYXRpb24gb3RoZXJ3aXNlLgor CitPcHRpb25zOgorCithKSBNb3ZlIHBlbmRpbmdJbnRlcnJ1cHRzIHRvIFBNQ2hpbGRTbG90 LiBUaGF0IHdheSwgeW91IGNhbiBzZW5kIHNpZ25hbHMKKyAgIHRvIHByb2Nlc3NlcyBhbHNv IHRvIHByb2Nlc3NlcyB0aGF0IGRvbid0IGhhdmUgYSBQR1BST0MgZW50cnkuCisKK2IpIEFk ZCBhIHBlbmRpbmdJbnRlcnJ1cHRzIG1hc2sgdG8gUE1DaGlsZFNsb3QsIGJ1dCBhbHNvIGhh dmUgaXQgaW4gUEdQUk9DLgorICAgV2hlbiBwb3N0bWFzdGVyIHNlbnMgYW4gaW50ZXJydXB0 LCBpdCBjYW4gY2hlY2sgaWYgaXQgaGFzIGEgUEdQUk9DIGVudHJ5LAorICAgYW5kIGlmIG5v dCwgdXNlIHRoZSBwZW5kaW5nSW50ZXJydXB0cyBmaWVsZCBpbiBQTUNoaWxkU2xvdCBpbnN0 ZWFkLgorCitjKSBBc3NpZ24gYSBQR1BST0MgZW50cnkgZm9yIGV2ZXJ5IGNoaWxkIHByb2Nl c3MgaW4gcG9zdG1hc3RlciBhbHJlYWR5LgorICAgKEV4Y2VwdCBkZWFkLWVuZCBiYWNrZW5k cykuCisKK2QpIEtlZXAgaXQgYXMgaXQgaXMsIGNvbnRpbnVlIHRvIHVzZSBzaWduYWxzIGZv ciBwb3N0bWFzdGVyIC0+IGNoaWxkCisgICBzaWduYWxpbmcKKworCitUT0RPOiBVbmlxdWUg c2Vzc2lvbiBpZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBzb21lIHBsYWNlcywg d2UgcmVhZCB0aGUgcGlkIG9mIGEgcHJvY2VzcyAoZnJvbSBQR1BST0Mgb3IKK2Vsc2V3aGVy ZSksIGFuZCBzZW5kIHNpZ25hbCB0byBpdCwgYWNjZXB0aW5nIHRoYXQgdGhlIHByb2Nlc3Mg bWF5IGhhdmUKK2FscmVhZHkgZXhpdGVkLiAgSWYgd2UgZGlyZWN0bHkgcmVwbGFjZSB0aG9z ZSB1c2VzIG9mICdwaWQnIHdpdGggYQorUHJvY051bWJlciwgdGhlIFByb2NOdW1iZXIgbWln aHQgZ2V0IHJldXNlZCBtdWNoIGZhc3RlciB0aGFuIHRoZSBwaWQKK3dvdWxkLiBTb2x1dGlv bnM6CisKK2EpIEludHJvZHVjZSB0aGUgY29uY2VwdCBvZiBhIHVuaXF1ZSBzZXNzaW9uIElE IHRoYXQgaXMgbmV2ZXIgcmVjeWNsZWQKKyAgIChvciBub3QgZm9yIGEgbG9uZyB0aW1lLCBh bnl3YXkpLiBXaGVuIHJlYWRpbmcgdGhlIFByb2NOdW1iZXIgdG8KKyAgIHNlbmQgYW4gaW50 ZXJydXB0IHRvLCBhbHNvIHJlYWQgdGhlIHNlc3Npb24gSUQuIFdoZW4gc2VuZGluZyB0aGUK KyAgIGludGVycnVwdCwgY2hlY2sgdGhhdCB0aGUgc2Vzc2lvbiBJRCBtYXRjaGVzLgorCisK K1RPRE86IE90aGVyCistLS0tLS0tLS0tLQorCistIENoZWNrIHBlcmZvcm1hbmNlIG9mIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkuIEl0J3MgdmVyeSBjaGVhcCwgYnV0CisgIGl0J3MgbmV2 ZXJ0aGVsZXNzIG1vcmUgaW5zdHJ1Y3Rpb25zIHRoYW4gaXQgdXNlZCB0byBiZS4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2lwYy9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL2lwYy9p bnRlcnJ1cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTk3 ZjA4NzRlNDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0 LmMKQEAgLTAsMCArMSw0MzEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGlu dGVycnVwdC5jCisgKgkgIEludGVyLXByb2Nlc3MgaW50ZXJydXB0cy4KKyAqCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUg InV0aWxzL3Jlc293bmVyLmgiCisKKy8qCisgKiBDdXJyZW50bHkgaW5zdGFsbGVkIGludGVy cnVwdCBoYW5kbGVycworICovCitzdGF0aWMgcGdfaW50ZXJydXB0X2hhbmRsZXJfdCBpbnRl cnJ1cHRfaGFuZGxlcnNbNjRdOworCisvKgorICogWFhYOiBpcyAndm9sYXRpbGUnIHN0aWxs IG5lZWRlZCBvbiBhbGwgdGhlIHZhcmlhYmxlcyBiZWxvdz8gV2hpY2ggb25lcyBhcmUKKyAq IGFjY2Vzc2VkIGZyb20gc2lnbmFsIGhhbmRsZXJzPworICovCisKKy8qIEJpdG1hc2sgb2Yg Y3VycmVudGx5IGVuYWJsZWQgaW50ZXJydXB0cyAqLwordm9sYXRpbGUgSW50ZXJydXB0TWFz ayBFbmFibGVkSW50ZXJydXB0c01hc2s7CisKKy8qCisgKiBJbnRlcnJ1cHRzIHRoYXQgd291 bGQgYmUgcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuICBUaGlzIGlzCisg KiBlcXVhbCB0byBFbmFibGVkSW50ZXJydXB0c01hc2ssIGV4Y2VwdCB3aGVuIGludGVycnVw dHMgYXJlIGhlbGQgb2ZmIGJ5CisgKiBIT0xEL1JFU1VNRV9JTlRFUlJVUFRTKCkgb3IgYSBj cml0aWNhbCBzZWN0aW9uLgorICovCit2b2xhdGlsZSBJbnRlcnJ1cHRNYXNrIENoZWNrRm9y SW50ZXJydXB0c01hc2s7CisKKy8qIFZhcmlhYmxlcyBmb3IgaG9sZG9mZiBtZWNoYW5pc20g Ki8KK3ZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAwOwordm9sYXRp bGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQgPSAwOworCisvKiBBIGNvbW1vbiBXYWl0RXZl bnRTZXQgdXNlZCB0byBpbXBsZW1lbnQgV2FpdEludGVycnVwdCgpICovCitzdGF0aWMgV2Fp dEV2ZW50U2V0ICpJbnRlcnJ1cHRXYWl0U2V0OworCisvKiBUaGUgcG9zaXRpb24gb2YgdGhl IGludGVycnVwdCBpbiBJbnRlcnJ1cHRXYWl0U2V0LiAqLworI2RlZmluZSBJbnRlcnJ1cHRX YWl0U2V0SW50ZXJydXB0UG9zIDAKKyNkZWZpbmUgSW50ZXJydXB0V2FpdFNldFBvc3RtYXN0 ZXJEZWF0aFBvcyAxCisKK3N0YXRpYyBwZ19hdG9taWNfdWludDY0IExvY2FsUGVuZGluZ0lu dGVycnVwdHM7CisKK3BnX2F0b21pY191aW50NjQgKk15UGVuZGluZ0ludGVycnVwdHMgPSAm TG9jYWxQZW5kaW5nSW50ZXJydXB0czsKKworc3RhdGljIGludCBuZXh0QWRkaW5JbnRlcnJ1 cHRCaXQgPSBCRUdJTl9BRERJTl9JTlRFUlJVUFRTOworCisvKgorICogSW5zdGFsbCBhbiBp bnRlcnJ1cHQgaGFuZGxlciBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIGludGVy cnVwdC4KKyAqCisgKiBZb3UgbmVlZCB0byBhbHNvIGVuYWJsZSB0aGUgaW50ZXJydXB0IHdp dGggRW5hYmxlSW50ZXJydXB0KCksIHVubGVzcyB5b3UncmUKKyAqIHJlcGxhY2luZyBhbiBl eGlzdGluZyBoYW5kbGVyIGZ1bmN0aW9uLgorICovCit2b2lkCitTZXRJbnRlcnJ1cHRIYW5k bGVyKEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgcGdfaW50ZXJydXB0X2hhbmRsZXJf dCBoYW5kbGVyKQoreworCS8qCisJICogWFhYOiBJdCdzIHNvbWV3aGF0IGluZWZmaWNpZW50 IHRvIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGJpdHMsIGJ1dCB0aGlzCisJICogaXNuJ3QgcGVy Zm9ybWFuY2UgY3JpdGljYWwuCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhv ZihpbnRlcnJ1cHRfaGFuZGxlcnMpOyBpKyspCisJeworCQlpZiAoKGludGVycnVwdE1hc2sg JiBVSU5UNjRfQklUKGkpKSAhPSAwKQorCQl7CisJCQkvKiBSZXBsYWNlIG9sZCBoYW5kbGVy ICovCisJCQlpbnRlcnJ1cHRfaGFuZGxlcnNbaV0gPSBoYW5kbGVyOworCQl9CisJfQorfQor CisvKiBFbmFibGUgYW4gaW50ZXJydXB0IHRvIGJlIHByb2Nlc3NlZCBieSBDSEVDS19GT1Jf SU5URVJSVVBUUygpICovCit2b2lkCitFbmFibGVJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBp bnRlcnJ1cHRNYXNrKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiBDaGVj ayB0aGF0IHRoZSBpbnRlcnJ1cHQgaGFzIGEgaGFuZGxlciBkZWZpbmVkICovCisJZm9yIChp bnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpbnRlcnJ1cHRfaGFuZGxlcnMpOyBpKyspCisJewor CQlpZiAoKGludGVycnVwdE1hc2sgJiBVSU5UNjRfQklUKGkpKSAhPSAwKQorCQkJQXNzZXJ0 KGludGVycnVwdF9oYW5kbGVyc1tpXSAhPSBOVUxMKTsKKwl9CisjZW5kaWYKKworCUVuYWJs ZWRJbnRlcnJ1cHRzTWFzayB8PSBpbnRlcnJ1cHRNYXNrOworCWlmIChJbnRlcnJ1cHRIb2xk b2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDApCisJCUNoZWNrRm9ySW50 ZXJydXB0c01hc2sgPSBFbmFibGVkSW50ZXJydXB0c01hc2s7Cit9CisKKy8qCisgKiBEaXNh YmxlIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBhbiBpbnRlcnJ1cHQuCisgKgorICogV2hl biBkaXNhYmxlZCwgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB3aWxsIG5vdCBjYWxsIHRoZSBo YW5kbGVyIGZ1bmN0aW9uCisgKiBmb3IgdGhlIGdpdmVuIGludGVycnVwdC4gIElmIHRoZSBp bnRlcnJ1cHQgaXMgcmVjZWl2ZWQsIGl0IHdpbGwgcmVtYWluCisgKiBwZW5kaW5nIHVudGls IHlvdSBtYW51YWxseSBjaGVjayBhbmQgY2xlYXIgaXQgd2l0aCBDbGVhckludGVycnVwdCgp LCBvcgorICogcmUtZW5hYmxlIHRoZSBoYW5kbGVyIGZ1bmN0aW9uLgorICovCit2b2lkCitE aXNhYmxlSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwlFbmFi bGVkSW50ZXJydXB0c01hc2sgJj0gfmludGVycnVwdE1hc2s7CisJaWYgKEludGVycnVwdEhv bGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKKwkJQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayA9IEVuYWJsZWRJbnRlcnJ1cHRzTWFzazsKK30KKworLyoKKyAqIFBy b2Nlc3NJbnRlcnJ1cHRzOiBvdXQtb2YtbGluZSBwb3J0aW9uIG9mIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgbWFjcm8KKyAqCisgKiBJZiBhbiBpbnRlcnJ1cHQgY29uZGl0aW9uIGlzIHBl bmRpbmcsIGFuZCBpdCdzIHNhZmUgdG8gc2VydmljZSBpdCwKKyAqIHRoZW4gY2xlYXIgdGhl IGZsYWcgYW5kIGNhbGwgdGhlIGludGVycnVwdCBoYW5kbGVyLgorICoKKyAqIE5vdGU6IGlm IElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChpbnRlcnJ1cHQpIGlzIHRydWUsIHRoZW4K KyAqIFByb2Nlc3NJbnRlcnJ1cHRzIGlzIGd1YXJhbnRlZWQgdG8gY2xlYXIgdGhlIGdpdmVu IGludGVycnVwdCBiZWZvcmUKKyAqIHJldHVybmluZywgaWYgaXQgd2FzIHNldCB3aGVuIGVu dGVyaW5nLiAgKFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzCisgKiBndWFyYW50ZWVpbmcgdGhh dCBpdCdzIHN0aWxsIGNsZWFyIHdoZW4gd2UgcmV0dXJuOyBhbm90aGVyIGludGVycnVwdCBj b3VsZAorICogaGF2ZSBhcnJpdmVkLiAgQnV0IHdlIHByb21pc2UgdGhhdCBhbnkgcHJlLWV4 aXN0aW5nIG9uZSB3aWxsIGhhdmUgYmVlbgorICogc2VydmljZWQuKQorICovCit2b2lkCitQ cm9jZXNzSW50ZXJydXB0cyh2b2lkKQoreworCUludGVycnVwdE1hc2sgaW50ZXJydXB0c1Rv UHJvY2VzczsKKworCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0 U2VjdGlvbkNvdW50ID09IDApOworCisJLyogQ2hlY2sgb25jZSB3aGF0IGludGVycnVwdHMg YXJlIHBlbmRpbmcgKi8KKwlpbnRlcnJ1cHRzVG9Qcm9jZXNzID0KKwkJcGdfYXRvbWljX3Jl YWRfdTY0KE15UGVuZGluZ0ludGVycnVwdHMpICYgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzazsK KworCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Rob2YoaW50ZXJydXB0X2hhbmRsZXJzKTsg aSsrKQorCXsKKwkJaWYgKChpbnRlcnJ1cHRzVG9Qcm9jZXNzICYgVUlOVDY0X0JJVChpKSkg IT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIENsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSog Y2FsbGluZyB0aGUgaGFuZGxlciBmdW5jdGlvbiwgc28KKwkJCSAqIHRoYXQgaWYgdGhlIGlu dGVycnVwdCBpcyByZWNlaXZlZCBhZ2FpbiB3aGlsZSB0aGUgaGFuZGxlcgorCQkJICogZnVu Y3Rpb24gaXMgYmVpbmcgZXhlY3V0ZWQsIHdlIHdvbid0IG1pc3MgaXQuCisJCQkgKgorCQkJ ICogRm9yIHNpbWlsYXIgcmVhc29ucywgd2UgYWxzbyBjbGVhciB0aGUgZmxhZ3Mgb25lIGJ5 IG9uZSBldmVuIGlmCisJCQkgKiBtdWx0aXBsZSBpbnRlcnJ1cHRzIGFyZSBwZW5kaW5nLiAg T3RoZXJ3aXNlIGlmIG9uZSBvZiB0aGUKKwkJCSAqIGludGVycnVwdCBoYW5kbGVycyBiYWls IG91dCB3aXRoIGFuIEVSUk9SLCB3ZSB3b3VsZCBoYXZlCisJCQkgKiBhbHJlYWR5IGNsZWFy ZWQgdGhlIG90aGVyIGJpdHMsIGFuZCB3b3VsZCBtaXNzIHByb2Nlc3NpbmcgdGhlbS4KKwkJ CSAqLworCQkJQ2xlYXJJbnRlcnJ1cHQoVUlOVDY0X0JJVChpKSk7CisKKwkJCS8qIENhbGwg dGhlIGhhbmRsZXIgZnVuY3Rpb24gKi8KKwkJCSgqaW50ZXJydXB0X2hhbmRsZXJzW2ldKSAo KTsKKwkJfQorCX0KK30KKworLyoKKyAqIFN3aXRjaCB0byBsb2NhbCBpbnRlcnJ1cHRzLiAg T3RoZXIgYmFja2VuZHMgY2FuJ3Qgc2VuZCBpbnRlcnJ1cHRzIHRvIHRoaXMKKyAqIG9uZS4g IE9ubHkgUmFpc2VJbnRlcnJ1cHQoKSBjYW4gc2V0IHRoZW0sIGZyb20gaW5zaWRlIHRoaXMg cHJvY2Vzcy4KKyAqLwordm9pZAorU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCkKK3sK KwlpZiAoTXlQZW5kaW5nSW50ZXJydXB0cyA9PSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0cykK KwkJcmV0dXJuOworCisJTXlQZW5kaW5nSW50ZXJydXB0cyA9ICZMb2NhbFBlbmRpbmdJbnRl cnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRo YXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5ldyBN eVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9iYXJy aWVyKCk7CisKKwkvKgorCSAqIE1peCBpbiB0aGUgaW50ZXJydXB0cyB0aGF0IHdlIGhhdmUg cmVjZWl2ZWQgYWxyZWFkeSBpbiBvdXIgc2hhcmVkCisJICogaW50ZXJydXB0IHZlY3Rvciwg d2hpbGUgYXRvbWljYWxseSBjbGVhcmluZyBpdC4gIE90aGVyIGJhY2tlbmRzIG1heQorCSAq IGNvbnRpbnVlIHRvIHNldCBiaXRzIGluIGl0IGFmdGVyIHRoaXMgcG9pbnQsIGJ1dCB3ZSd2 ZSBhdG9taWNhbGx5CisJICogdHJhbnNmZXJyZWQgdGhlIGV4aXN0aW5nIGJpdHMgdG8gb3Vy IGxvY2FsIHZlY3RvciBzbyB3ZSB3b24ndCBnZXQKKwkgKiBkdXBsaWNhdGVkIGludGVycnVw dHMgbGF0ZXIgaWYgd2Ugc3dpdGNoIGJhY2suCisJICovCisJcGdfYXRvbWljX2ZldGNoX29y X3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWljX2V4Y2hhbmdl X3U2NCgmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgorICogU3dp dGNoIHRvIHNoYXJlZCBtZW1vcnkgaW50ZXJydXB0cy4gIE90aGVyIGJhY2tlbmRzIGNhbiBz ZW5kIGludGVycnVwdHMgdG8KKyAqIHRoaXMgb25lIGlmIHRoZXkga25vdyBpdHMgUHJvY051 bWJlciwgYW5kIHdlJ2xsIG5vdyBzZWUgYW55IHRoYXQgd2UgbWlzc2VkLgorICovCit2b2lk CitTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCkKK3sKKwlpZiAoTXlQZW5kaW5nSW50 ZXJydXB0cyA9PSAmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cykKKwkJcmV0dXJuOworCisJ TXlQZW5kaW5nSW50ZXJydXB0cyA9ICZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzOworCisJ LyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlz ZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5ldyBNeVBlbmRpbmdJbnRl cnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9iYXJyaWVyKCk7CisKKwkv KiBNaXggaW4gYW55IHVuaGFuZGxlZCBiaXRzIGZyb20gTG9jYWxQZW5kaW5nSW50ZXJydXB0 cy4gKi8KKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTY0KE15UGVuZGluZ0ludGVycnVwdHMsCisJ CQkJCQkgICBwZ19hdG9taWNfZXhjaGFuZ2VfdTY0KCZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRz LCAwKSk7Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gdGhpcyBiYWNr ZW5kLgorICoKKyAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRsZXJz LCBzbyBuZWVkcyB0byBiZSBhc3luYy1zaWduYWwKKyAqIHNhZmUhCisgKi8KK3ZvaWQKK1Jh aXNlSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwl1aW50NjQJ CW9sZF9wZW5kaW5nOworCisJb2xkX3BlbmRpbmcgPSBwZ19hdG9taWNfZmV0Y2hfb3JfdTY0 KE15UGVuZGluZ0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOworCisJLyoKKwkgKiBJZiB0 aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1 cHQgdG8gYXJyaXZlLAorCSAqIGFuZCB0aGUgaW50ZXJydXB0IHdhc24ndCBhbHJlYWR5IHBl bmRpbmcsIHdha2UgaXQgdXAuCisJICovCisJaWYgKChvbGRfcGVuZGluZyAmIChpbnRlcnJ1 cHRNYXNrIHwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpID09IFNMRUVQSU5HX09OX0lOVEVS UlVQVFMpCisJCVdha2V1cE15UHJvYygpOworfQorCisvKgorICogU2V0IGFuIGludGVycnVw dCBmbGFnIGluIGFub3RoZXIgYmFja2VuZC4KKyAqCisgKiBOb3RlOiBUaGlzIGNhbiBhbHNv IGJlIGNhbGxlZCBmcm9tIHRoZSBwb3N0bWFzdGVyLCBzbyBiZSBjYXJlZnVsIHRvIG5vdAor ICogdHJ1c3QgdGhlIGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkuCisgKgorICogRklYTUU6 IGl0J3MgZWFzeSB0byBhY2NpZGVudGFsbHkgc3dhcCB0aGUgb3JkZXIgb2YgdGhlIGFyZ3Mu ICBDb3VsZCB3ZSBoYXZlCisgKiBzdHJpY3RlciB0eXBlIGNoZWNraW5nPworICovCit2b2lk CitTZW5kSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgUHJvY051bWJl ciBwZ3Byb2NubykKK3sKKwlQR1BST0MJICAgKnByb2M7CisJdWludDY0CQlvbGRfcGVuZGlu ZzsKKworCUFzc2VydChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlBc3Nl cnQocGdwcm9jbm8gPj0gMCk7CisJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+YWxs UHJvY0NvdW50KTsKKworCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9d OworCW9sZF9wZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3U2NCgmcHJvYy0+cGVuZGlu Z0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOworCisJZWxvZyhERUJVRzEsICJzZW5kaW5n IGludGVycnVwdCAweDAxNiUiIFBSSXg2NCIgdG8gcGlkICVkIiwgaW50ZXJydXB0TWFzaywg cHJvYy0+cGlkKTsKKworCS8qCisJICogSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5IGJs b2NrZWQgd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IHRvIGFycml2ZSwKKwkgKiBhbmQgdGhl IGludGVycnVwdCB3YXNuJ3QgYWxyZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVwLgorCSAqLwor CWlmICgob2xkX3BlbmRpbmcgJiAoaW50ZXJydXB0TWFzayB8IFNMRUVQSU5HX09OX0lOVEVS UlVQVFMpKSA9PSBTTEVFUElOR19PTl9JTlRFUlJVUFRTKQorCQlXYWtldXBPdGhlclByb2Mo cHJvYyk7Cit9CisKK3ZvaWQKK0luaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KHZvaWQpCit7 CisJaW50CQkJaW50ZXJydXB0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwlB c3NlcnQoSW50ZXJydXB0V2FpdFNldCA9PSBOVUxMKTsKKworCS8qIFNldCB1cCB0aGUgV2Fp dEV2ZW50U2V0IHVzZWQgYnkgV2FpdEludGVycnVwdCgpLiAqLworCUludGVycnVwdFdhaXRT ZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7CisJaW50ZXJydXB0X3BvcyA9IEFk ZFdhaXRFdmVudFRvU2V0KEludGVycnVwdFdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZB TElEX1NPQ0tFVCwKKwkJCQkJCQkJCSAgMCwgTlVMTCk7CisJaWYgKElzVW5kZXJQb3N0bWFz dGVyKQorCQlBZGRXYWl0RXZlbnRUb1NldChJbnRlcnJ1cHRXYWl0U2V0LCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJICBQR0lOVkFMSURfU09DS0VULCAwLCBOVUxMKTsKKworCUFz c2VydChpbnRlcnJ1cHRfcG9zID09IEludGVycnVwdFdhaXRTZXRJbnRlcnJ1cHRQb3MpOwor fQorCisvKgorICogV2FpdCBmb3IgYW55IG9mIHRoZSBpbnRlcnJ1cHRzIGluIGludGVycnVw dE1hc2sgdG8gYmUgc2V0LCBvciBmb3IKKyAqIHBvc3RtYXN0ZXIgZGVhdGgsIG9yIHVudGls IHRpbWVvdXQgaXMgZXhjZWVkZWQuICd3YWtlRXZlbnRzJyBpcyBhIGJpdG1hc2sKKyAqIHRo YXQgc3BlY2lmaWVzIHdoaWNoIG9mIHRob3NlIGV2ZW50cyB0byB3YWl0IGZvci4gSWYgdGhl IGludGVycnVwdCBpcworICogYWxyZWFkeSBwZW5kaW5nIChhbmQgV0xfSU5URVJSVVBUIGlz IGdpdmVuKSwgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAqIGltbWVkaWF0ZWx5LgorICoKKyAq IFRoZSAidGltZW91dCIgaXMgZ2l2ZW4gaW4gbWlsbGlzZWNvbmRzLiBJdCBtdXN0IGJlID49 IDAgaWYgV0xfVElNRU9VVCBmbGFnCisgKiBpcyBnaXZlbi4gIEFsdGhvdWdoIGl0IGlzIGRl Y2xhcmVkIGFzICJsb25nIiwgd2UgZG9uJ3QgYWN0dWFsbHkgc3VwcG9ydAorICogdGltZW91 dHMgbG9uZ2VyIHRoYW4gSU5UX01BWCBtaWxsaXNlY29uZHMuICBOb3RlIHRoYXQgc29tZSBl eHRyYSBvdmVyaGVhZAorICogaXMgaW5jdXJyZWQgd2hlbiBXTF9USU1FT1VUIGlzIGdpdmVu LCBzbyBhdm9pZCB1c2luZyBhIHRpbWVvdXQgaWYgcG9zc2libGUuCisgKgorICogUmV0dXJu cyBiaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIGNvbmRpdGlvbihzKSBjYXVzZWQgdGhlIHdh a2UtdXAuIE5vdGUKKyAqIHRoYXQgaWYgbXVsdGlwbGUgd2FrZS11cCBjb25kaXRpb25zIGFy ZSB0cnVlLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAorICogd2UgcmV0dXJuIGFsbCBv ZiB0aGVtIGluIG9uZSBjYWxsLCBidXQgd2Ugd2lsbCByZXR1cm4gYXQgbGVhc3Qgb25lLgor ICovCitpbnQKK1dhaXRJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBp bnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJICB1aW50MzIgd2FpdF9ldmVudF9p bmZvKQoreworCVdhaXRFdmVudAlldmVudDsKKworCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBj YWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KKwlBc3Nl cnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9P Tl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KSk7CisKKwkvKgorCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhbiBpbnRlcnJ1cHQgbWFz ayBkaWZmZXJlbnQgZnJvbSBsYXN0IHRpbWUsIG9yIG5vCisJICogaW50ZXJydXB0IG1hc2sg YXQgYWxsLCBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIGRpZmZlcmVudGx5 LgorCSAqIEl0J3MgY2hlYXAgdG8gYXNzaWduIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2ZXJ5 IHRpbWUuCisJICovCisJaWYgKCEod2FrZUV2ZW50cyAmIFdMX0lOVEVSUlVQVCkpCisJCWlu dGVycnVwdE1hc2sgPSAwOworCU1vZGlmeVdhaXRFdmVudChJbnRlcnJ1cHRXYWl0U2V0LCBJ bnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9zLAorCQkJCQlXTF9JTlRFUlJVUFQsIGludGVy cnVwdE1hc2spOworCisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVwdFdhaXRTZXQsIEludGVy cnVwdFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MsCisJCQkJCSh3YWtlRXZlbnRzICYgKFdM X0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFTVEVSX0RFQVRIKSksCisJCQkJCTApOwor CisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJydXB0V2FpdFNldCwKKwkJCQkJCSAod2Fr ZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAorCQkJCQkJICZldmVudCwg MSwKKwkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCisJCXJldHVybiBXTF9USU1FT1VU OworCWVsc2UKKwkJcmV0dXJuIGV2ZW50LmV2ZW50czsKK30KKworLyoKKyAqIExpa2UgV2Fp dEludGVycnVwdCwgYnV0IHdpdGggYW4gZXh0cmEgc29ja2V0IGFyZ3VtZW50IGZvciBXTF9T T0NLRVRfKgorICogY29uZGl0aW9ucy4KKyAqCisgKiBXaGVuIHdhaXRpbmcgb24gYSBzb2Nr ZXQsIEVPRiBhbmQgZXJyb3IgY29uZGl0aW9ucyBhbHdheXMgY2F1c2UgdGhlIHNvY2tldAor ICogdG8gYmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFibGUvY29ubmVjdGVkLCBzbyB0 aGF0IHRoZSBjYWxsZXIgY2FuIGRlYWwKKyAqIHdpdGggdGhlIGNvbmRpdGlvbi4KKyAqCisg KiB3YWtlRXZlbnRzIG11c3QgaW5jbHVkZSBlaXRoZXIgV0xfRVhJVF9PTl9QTV9ERUFUSCBm b3IgYXV0b21hdGljIGV4aXQKKyAqIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMgb3IgV0xfUE9T VE1BU1RFUl9ERUFUSCBmb3IgYSBmbGFnIHNldCBpbiB0aGUKKyAqIHJldHVybiB2YWx1ZSBp ZiB0aGUgcG9zdG1hc3RlciBkaWVzLiAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHJhcmUg Y2FzZXMKKyAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhhbiBpbW1lZGlhdGUgZXhp dCBpcyBuZWVkZWQuCisgKgorICogTkI6IFRoZXNlIGRheXMgdGhpcyBpcyBqdXN0IGEgd3Jh cHBlciBhcm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4KKyAqIHVzaW5nIGFuIGlu dGVycnVwdCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9uZ2VyIGxp dmluZworICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVmZmljaWVudC4K KyAqLworaW50CitXYWl0SW50ZXJydXB0T3JTb2NrZXQoSW50ZXJydXB0TWFzayBpbnRlcnJ1 cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKKwkJCQkJICBsb25nIHRp bWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCit7CisJaW50CQkJcmV0OworCWludAkJ CXJjOworCVdhaXRFdmVudAlldmVudDsKKwlXYWl0RXZlbnRTZXQgKnNldCA9IENyZWF0ZVdh aXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgMyk7CisKKwlpZiAod2FrZUV2ZW50 cyAmIFdMX1RJTUVPVVQpCisJCUFzc2VydCh0aW1lb3V0ID49IDApOworCWVsc2UKKwkJdGlt ZW91dCA9IC0xOworCisJaWYgKHdha2VFdmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCUFkZFdh aXRFdmVudFRvU2V0KHNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJ CQkJICBpbnRlcnJ1cHRNYXNrLCBOVUxMKTsKKworCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBj YWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KKwlBc3Nl cnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9P Tl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KSk7CisKKwlpZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1Vu ZGVyUG9zdG1hc3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVS X0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJICAwLCBOVUxMKTsKKworCWlmICgo d2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVy KQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5W QUxJRF9TT0NLRVQsCisJCQkJCQkgIDAsIE5VTEwpOworCisJaWYgKHdha2VFdmVudHMgJiBX TF9TT0NLRVRfTUFTSykKKwl7CisJCWludAkJCWV2OworCisJCWV2ID0gd2FrZUV2ZW50cyAm IFdMX1NPQ0tFVF9NQVNLOworCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCAw LCBOVUxMKTsKKwl9CisKKwlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAm ZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7CisJaWYgKHJjID09IDApCisJCXJldCA9IFdM X1RJTUVPVVQ7CisJZWxzZQorCXsKKwkJcmV0ID0gZXZlbnQuZXZlbnRzICYgKFdMX0lOVEVS UlVQVCB8CisJCQkJCQkJICBXTF9QT1NUTUFTVEVSX0RFQVRIIHwKKwkJCQkJCQkgIFdMX1NP Q0tFVF9NQVNLKTsKKwl9CisKKwlGcmVlV2FpdEV2ZW50U2V0KHNldCk7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogVGhpcyBpcyB1c2VkIGFzIHRoZSBJTlRFUlJVUFRfVEVSTUlO QVRFIGhhbmRsZXIgaW4gc29tZSBhdXggcHJvY2Vzc2VzIHRoYXQKKyAqIHdhbnQgdG8ganVz dCBleGl0IGltbWVkaWF0ZWx5LgorICovCit2b2lkCitQcm9jZXNzQXV4UHJvY2Vzc1NodXRk b3duSW50ZXJydXB0KHZvaWQpCit7CisJcHJvY19leGl0KDApOworfQorCisvKiBSZXNlcnZl IGFuIGludGVycnVwdCBiaXQgZm9yIHVzZSBpbiBhbiBleHRlbnNpb24gKi8KK0ludGVycnVw dE1hc2sKK1JlcXVlc3RBZGRpbkludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdE1hc2sg cmVzdWx0OworCisJaWYgKG5leHRBZGRpbkludGVycnVwdEJpdCA9PSBFTkRfQURESU5fSU5U RVJSVVBUUykKKwkJZWxvZyhFUlJPUiwgIm91dCBvZiBhZGRpbiBpbnRlcnJ1cHQgYml0cyIp OworCisJcmVzdWx0ID0gVUlOVDY0X0JJVChuZXh0QWRkaW5JbnRlcnJ1cHRCaXQpOworCW5l eHRBZGRpbkludGVycnVwdEJpdCsrOworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9pcGMvbWVzb24u YnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmNjk4YmQw YzY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvaXBjL21lc29uLmJ1aWxkCkBA IC0wLDAgKzEsNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKyAgJ2lu dGVycnVwdC5jJywKKyAgJ3NpZ25hbF9oYW5kbGVycy5jJywKKykKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2lwYy9zaWduYWxfaGFuZGxlcnMuYyBiL3NyYy9iYWNrZW5kL2lwYy9zaWdu YWxfaGFuZGxlcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NTg5Zjc1NTYyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9pcGMvc2lnbmFs X2hhbmRsZXJzLmMKQEAgLTAsMCArMSwxNjAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHNpZ25hbF9oYW5kbGVycy5jCisgKgkgIFN0YW5kYXJkIHNpZ25hbCBoYW5kbGVy cy4KKyAqCisgKiBUaGVzZSBqdXN0IHJhaXNlIHRoZSBjb3JyZXNwb25kaW5nIElOVEVSUlVQ VF8qIGZsYWdzOgorICoKKyAqIFNJR0hVUCAtPiAgcmVxdWVzdCBjb25maWcgcmVsb2FkCisg KiBTSUdJTlQgPT0gcXVlcnkgY2FuY2VsCisgKiBTSUdURVJNID09IGdyYWNlZnVsIHRlcm1p bmF0ZSBvZiB0aGUgcHJvY2VzcworICogU0lHUVVJVCA9PSBleGl0IGltbWVkaWF0ZWx5IChj YXVzZXMgY3Jhc2ggcmVzdGFydCkKKyAqCisgKiBYWFg6IFdlIHNob3VsZCBub3Qgc2VuZCBz aWduYWxzIGRpcmVjdGx5IGJldHdlZW4gcHJvY2Vzc2VzIGFueW1vcmUuIFVzZQorICogU2Vu ZEludGVycnVwdCBpbnN0ZWFkLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv aXBjL3NpZ25hbF9oYW5kbGVycy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJz LmgiCisjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKKworLyoKKyAqIFNldCB0aGUgc3Rh bmRhcmQgc2lnbmFsIGhhbmRsZXJzIHN1aXRhYmxlIGZvciBtb3N0IHBvc3RtYXN0ZXIgY2hp bGQKKyAqIHByb2Nlc3Nlcy4KKyAqCisgKiBOb3RlOiB0aGlzIGRvZXNuJ3QgdW5ibG9jayB0 aGUgc2lnbmFscyB5ZXQuIFlvdSBjYW4gbWFrZSBhZGRpdGlvbmFsCisgKiBwcXNpZ25hbCgp IGNhbGxzIHRvIG1vZGlmeSB0aGUgZGVmYXVsdCBiZWhhdmlvciBiZWZvcmUgdW5ibG9ja2lu Zy4KKyAqLwordm9pZAorU2V0UG9zdG1hc3RlckNoaWxkU2lnbmFsSGFuZGxlcnModm9pZCkK K3sKKwkvKi0tLS0tLS0tLS0KKwkgKiBUaGVzZSByYWlzZSB0aGUgY29ycmVzcG9uZGluZyBp bnRlcnJ1cHRzIGluIHRoZSBwcm9jZXNzOgorCSAqCisJICogU0lHSFVQIC0+IElOVEVSUlVQ VF9DT05GSUdfUkVMT0FECisJICogU0lHSU5UIC0+IElOVEVSUlVQVF9RVUVSWV9DQU5DRUwK KwkgKiBTSUdURVJNIC0+IElOVEVSUlVQVF9URVJNSU5BVEUKKwkgKgorCSAqIFRoZSBwcm9j ZXNzIG1heSBpZ25vcmUgdGhlIGludGVycnVwdHMgdGhhdCB0aGVzZSByYWlzZSwgZS5nIGlm IHF1ZXJ5CisJICogY2FuY2VsbGF0aW9uIGlzIG5vdCBhcHBsaWNhYmxlLiAgQnV0IHRoZXJl J3Mgbm8gaGFybSBpbiBoYXZpbmcgdGhlCisJICogc2lnbmFsIGhhbmRsZXJzIGluIHBsYWNl IGFueXdheS4KKwkgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclF1ZXJ5Q2Fu Y2VsKTsKKwlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1 ZXN0KTsKKworCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworCXBxc2lnbmFsKFNJR1VT UjEsIFNJR19JR04pOworCisJLyoKKwkgKiBTSUdVU1IyIGlzIHNlbnQgYnkgcG9zdG1hc3Rl ciB0byBzb21lIGF1eCBwcm9jZXNzZXMsIGZvciBkaWZmZXJlbnQKKwkgKiBwdXJwb3Nlcy4g IFN1Y2ggcHJvY2Vzc2VzIG92ZXJyaWRlIHRoaXMgYmVmb3JlIHVuYmxvY2tpbmcgc2lnbmFs cywgYnV0CisJICogaWdub3JlIGl0IGJ5IGRlZmF1bHQuCisJICovCisJcHFzaWduYWwoU0lH VVNSMiwgU0lHX0lHTik7CisKKwkvKiBGSVhNRTogc2hvdWxkIHdlIGRvIHRoaXMgaW4gYWxs IHByb2Nlc3Nlcz8gKi8KKwkvKiBwcXNpZ25hbChTSUdGUEUsIEZsb2F0RXhjZXB0aW9uSGFu ZGxlcik7ICovCisKKwkvKgorCSAqIFNJR0FMUk0gaXMgdXNlZCBmb3IgdGltZW91dHMsIGJ1 dCB0aGUgaGFuZGxlciBpcyBlc3RhYmxpc2hlZCBsYXRlciBpbgorCSAqIEluaXRpYWxpemVU aW1lb3V0cygpCisJICovCisJcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7CisKKwkvKiBT SUdVUkcgaXMgaGFuZGxlZCBpbiB3YWl0ZXZlbnRzZXQuYyAqLworCisJLyoKKwkgKiBSZXNl dCBzaWduYWxzIHRoYXQgYXJlIHVzZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5IGNoaWxk IHByb2Nlc3Nlcy4KKwkgKgorCSAqIEN1cnJlbnRseSBqdXN0IFNJR0NITEQuICBUaGUgaGFu ZGxlcnMgZm9yIG90aGVyIHNpZ25hbHMgYXJlIG92ZXJyaWRkZW4KKwkgKiBsYXRlciwgZGVw ZW5kaW5nIG9uIHRoZSBjaGlsZCBwcm9jZXNzIHR5cGUuCisJICovCisJcHFzaWduYWwoU0lH Q0hMRCwgU0lHX0RGTCk7IC8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgdG8gYmUgU0lHX0RG TCByYXRoZXIKKwkJCQkJCQkJICogdGhhbiBTSUdfSUdOIG9uIHNvbWUgcGxhdGZvcm1zICov CisKKwkvKgorCSAqIEV2ZXJ5IHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2VzcyBpcyBleHBlY3Rl ZCB0byByZXNwb25kIHByb21wdGx5IHRvCisJICogU0lHUVVJVCBhdCBhbGwgdGltZXMuICBU aGVyZWZvcmUgd2UgY2VudHJhbGx5IHJlbW92ZSBTSUdRVUlUIGZyb20KKwkgKiBCbG9ja1Np ZyBhbmQgaW5zdGFsbCBhIHN1aXRhYmxlIHNpZ25hbCBoYW5kbGVyLiAgKENsaWVudC1mYWNp bmcKKwkgKiBwcm9jZXNzZXMgbWF5IGNob29zZSB0byByZXBsYWNlIHRoaXMgZGVmYXVsdCBj aG9pY2Ugb2YgaGFuZGxlciB3aXRoCisJICogcXVpY2tkaWUoKS4pICBBbGwgb3RoZXIgYmxv Y2thYmxlIHNpZ25hbHMgcmVtYWluIGJsb2NrZWQgZm9yIG5vdy4KKwkgKi8KKwlwcXNpZ25h bChTSUdRVUlULCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KTsKKworCXNpZ2RlbHNldCgm QmxvY2tTaWcsIFNJR1FVSVQpOworCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tT aWcsIE5VTEwpOworfQorCisvKgorICogU2ltcGxlIHNpZ25hbCBoYW5kbGVyIGZvciB0cmln Z2VyaW5nIGEgY29uZmlndXJhdGlvbiByZWxvYWQuCisgKgorICogTm9ybWFsbHksIHRoaXMg aGFuZGxlciB3b3VsZCBiZSB1c2VkIGZvciBTSUdIVVAuIFRoZSBpZGVhIGlzIHRoYXQgY29k ZQorICogd2hpY2ggdXNlcyBpdCB3b3VsZCBhcnJhbmdlIHRvIGNoZWNrIHRoZSBJTlRFUlJV UFRfQ09ORklHX1JFTE9BRCBpbnRlcnJ1cHQKKyAqIGF0IGNvbnZlbmllbnQgcGxhY2VzIGlu c2lkZSBtYWluIGxvb3BzLgorICovCit2b2lkCitTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVs b2FkKFNJR05BTF9BUkdTKQoreworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdf UkVMT0FEKTsKK30KKworLyoKKyAqIFNpbXBsZSBzaWduYWwgaGFuZGxlciBmb3IgZXhpdGlu ZyBxdWlja2x5IGFzIGlmIGR1ZSB0byBhIGNyYXNoLgorICoKKyAqIE5vcm1hbGx5LCB0aGlz IHdvdWxkIGJlIHVzZWQgZm9yIGhhbmRsaW5nIFNJR1FVSVQuCisgKi8KK3ZvaWQKK1NpZ25h bEhhbmRsZXJGb3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCit7CisJLyoKKwkgKiBXZSBETyBO T1Qgd2FudCB0byBydW4gcHJvY19leGl0KCkgb3IgYXRleGl0KCkgY2FsbGJhY2tzIC0tIHdl J3JlIGhlcmUKKwkgKiBiZWNhdXNlIHNoYXJlZCBtZW1vcnkgbWF5IGJlIGNvcnJ1cHRlZCwg c28gd2UgZG9uJ3Qgd2FudCB0byB0cnkgdG8KKwkgKiBjbGVhbiB1cCBvdXIgdHJhbnNhY3Rp b24uICBKdXN0IG5haWwgdGhlIHdpbmRvd3Mgc2h1dCBhbmQgZ2V0IG91dCBvZgorCSAqIHRv d24uICBUaGUgY2FsbGJhY2tzIHdvdWxkbid0IGJlIHNhZmUgdG8gcnVuIGZyb20gYSBzaWdu YWwgaGFuZGxlciwKKwkgKiBhbnl3YXkuCisJICoKKwkgKiBOb3RlIHdlIGRvIF9leGl0KDIp IG5vdCBfZXhpdCgwKS4gIFRoaXMgaXMgdG8gZm9yY2UgdGhlIHBvc3RtYXN0ZXIgaW50bwor CSAqIGEgc3lzdGVtIHJlc2V0IGN5Y2xlIGlmIHNvbWVvbmUgc2VuZHMgYSBtYW51YWwgU0lH UVVJVCB0byBhIHJhbmRvbQorCSAqIGJhY2tlbmQuICBUaGlzIGlzIG5lY2Vzc2FyeSBwcmVj aXNlbHkgYmVjYXVzZSB3ZSBkb24ndCBjbGVhbiB1cCBvdXIKKwkgKiBzaGFyZWQgbWVtb3J5 IHN0YXRlLiAgKFRoZSAiZGVhZCBtYW4gc3dpdGNoIiBtZWNoYW5pc20gaW4gcG1zaWduYWwu YworCSAqIHNob3VsZCBlbnN1cmUgdGhlIHBvc3RtYXN0ZXIgc2VlcyB0aGlzIGFzIGEgY3Jh c2gsIHRvbywgYnV0IG5vIGhhcm0gaW4KKwkgKiBiZWluZyBkb3VibHkgc3VyZS4pCisJICov CisJX2V4aXQoMik7Cit9CisKKy8qCisgKiBTaW1wbGUgc2lnbmFsIGhhbmRsZXIgZm9yIHRy aWdnZXJpbmcgYSBsb25nLXJ1bm5pbmcgcHJvY2VzcyB0byBzaHV0IGRvd24KKyAqIGFuZCBl eGl0LgorICoKKyAqIEluIG1vc3QgcHJvY2Vzc2VzLCB0aGlzIGhhbmRsZXIgaXMgdXNlZCBm b3IgU0lHVEVSTSwgYnV0IHNvbWUgcHJvY2Vzc2VzIHVzZQorICogb3RoZXIgc2lnbmFscy4K KyAqLwordm9pZAorU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdChTSUdOQUxfQVJH UykKK3sKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKK30KKworLyoK KyAqIFF1ZXJ5LWNhbmNlbCBzaWduYWw6IGFib3J0IGN1cnJlbnQgdHJhbnNhY3Rpb24gYXQg c29vbmVzdCBjb252ZW5pZW50IHRpbWUKKyAqLwordm9pZAorU2lnbmFsSGFuZGxlckZvclF1 ZXJ5Q2FuY2VsKFNJR05BTF9BUkdTKQoreworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9R VUVSWV9DQU5DRUwpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5j IGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCmluZGV4IDc5NWJmZWQ4ZDE5Li4zMTRkMzRh OTU5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9i YWNrZW5kL2xpYnBxL2F1dGguYwpAQCAtMTY3Myw4ICsxNjczLDkgQEAgaW50ZXJwcmV0X2lk ZW50X3Jlc3BvbnNlKGNvbnN0IGNoYXIgKmlkZW50X3Jlc3BvbnNlLAogICoJb3ducyB0aGUg dGNwIGNvbm5lY3Rpb24gdG8gImxvY2FsX2FkZHIiCiAgKglJZiB0aGUgdXNlcm5hbWUgaXMg c3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCwgY2hlY2sgdGhlIHVzZXJtYXAuCiAgKgotICoJWFhY OiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgaWYgdGhlCi0gKglsYXRjaCB3YXMgc2V0IHdvdWxkIGltcHJvdmUgdGhlIHJl c3BvbnNpdmVuZXNzIHRvIHRpbWVvdXRzL2NhbmNlbGxhdGlvbnMuCisgKglYWFg6IFVzaW5n IFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkKKyAqCWlmIHRoZSBpbnRlcnJ1cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0 aGUgcmVzcG9uc2l2ZW5lc3MgdG8KKyAqCXRpbWVvdXRzL2NhbmNlbGxhdGlvbnMuCiAgKi8K IHN0YXRpYyBpbnQKIGlkZW50X2luZXQoUG9ydCAqcG9ydCkKQEAgLTMxMDgsOCArMzEwOSw4 IEBAIFBlcmZvcm1SYWRpdXNUcmFuc2FjdGlvbihjb25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0 IGNoYXIgKnNlY3JldCwgY29uc3QgY2hhciAqcG9yCiAJICogcGFja2V0cyB0byBvdXIgcG9y dCB0aHVzIGNhdXNpbmcgdXMgdG8gcmV0cnkgaW4gYSBsb29wIGFuZCBuZXZlciB0aW1lCiAJ ICogb3V0LgogCSAqCi0JICogWFhYOiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBk b2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYKLQkgKiB0aGUgbGF0Y2ggd2FzIHNl dCB3b3VsZCBpbXByb3ZlIHRoZSByZXNwb25zaXZlbmVzcyB0bworCSAqIFhYWDogVXNpbmcg V2FpdEludGVycnVwdE9yU29ja2V0KCkgYW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKQorCSAqIGlmIHRoZSBpbnRlcnJ1cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0 aGUgcmVzcG9uc2l2ZW5lc3MgdG8KIAkgKiB0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgogCSAq LwogCWdldHRpbWVvZmRheSgmZW5kdGltZSwgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtZ3NzYXBpLmMKaW5kZXggZGY3ZGM3OWI4MjcuLjFhNjBjYThmNzhhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jCkBAIC0xNSw2ICsxNSw3IEBACiAKICNp bmNsdWRlIDx1bmlzdGQuaD4KIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJsaWJwcS9hdXRoLmgiCiAjaW5jbHVkZSAibGlicHEvYmUtZ3NzYXBpLWNvbW1vbi5o IgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCkBAIC00MjEsNyArNDIyLDcgQEAgYmVfZ3Nz YXBpX3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCiAvKgogICog UmVhZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBvZmYgdGhlIHdpcmUsIHdhaXRp bmcgdXNpbmcKLSAqIFdhaXRMYXRjaE9yU29ja2V0IGlmIHdlIHdvdWxkIGJsb2NrLgorICog V2FpdEludGVycnVwdE9yU29ja2V0IGlmIHdlIHdvdWxkIGJsb2NrLgogICoKICAqIFJlc3Vs dHMgYXJlIHJlYWQgaW50byBQcUdTU1JlY3ZCdWZmZXIuCiAgKgpAQCAtNDU3LDkgKzQ1OCw4 IEBAIHJlYWRfb3Jfd2FpdChQb3J0ICpwb3J0LCBzc2l6ZV90IGxlbikKIAkJICovCiAJCWlm IChyZXQgPD0gMCkKIAkJewotCQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkg IFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICBw b3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CisJCQlXYWl0SW50 ZXJydXB0T3JTb2NrZXQoMCwgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NF UlZFUik7CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBnb3QgYmFjayB6ZXJvIGJ5dGVzLCBhbmQg dGhlbiB3YWl0ZWQgb24gdGhlIHNvY2tldCB0byBiZQpAQCAtNDk2LDcgKzQ5Niw3IEBAIHJl YWRfb3Jfd2FpdChQb3J0ICpwb3J0LCBzc2l6ZV90IGxlbikKICAqCiAgKiBOb3RlIHRoYXQg dW5saWtlIHRoZSBiZV9nc3NhcGlfcmVhZC9iZV9nc3NhcGlfd3JpdGUgZnVuY3Rpb25zLCB0 aGlzCiAgKiBmdW5jdGlvbiBXSUxMIGJsb2NrIG9uIHRoZSBzb2NrZXQgdG8gYmUgcmVhZHkg Zm9yIHJlYWQvd3JpdGUgKHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCkgYXMgYXBwcm9w cmlhdGUgd2hpbGUgZXN0YWJsaXNoaW5nIHRoZSBHU1NBUEkKKyAqIFdhaXRJbnRlcnJ1cHRP clNvY2tldCkgYXMgYXBwcm9wcmlhdGUgd2hpbGUgZXN0YWJsaXNoaW5nIHRoZSBHU1NBUEkK ICAqIHNlc3Npb24uCiAgKi8KIHNzaXplX3QKQEAgLTY3OCw5ICs2NzgsOCBAQCBzZWN1cmVf b3Blbl9nc3NhcGkoUG9ydCAqcG9ydCkKIAkJCQkvKiBXYWl0IGFuZCByZXRyeSBpZiB3ZSBj b3VsZG4ndCB3cml0ZSB5ZXQgKi8KIAkJCQlpZiAocmV0IDw9IDApCiAJCQkJewotCQkJCQlX YWl0TGF0Y2hPclNvY2tldChOVUxMLAotCQkJCQkJCQkJICBXTF9TT0NLRVRfV1JJVEVBQkxF IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJ VF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOworCQkJCQlXYWl0SW50ZXJydXB0T3JTb2NrZXQo MCwgV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJ CQkJICBwb3J0LT5zb2NrLCAwLCBXQUlUX0VWRU5UX0dTU19PUEVOX1NFUlZFUik7CiAJCQkJ CWNvbnRpbnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLW9wZW5zc2wuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3Ns LmMKaW5kZXggNGRhNmFjMjJmZjkuLjNhMGZmOTU2ODIzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS1vcGVuc3NsLmMKQEAgLTI4LDExICsyOCwxMiBAQAogI2luY2x1ZGUgPGFy cGEvaW5ldC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL3N0cmluZy5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogCkBAIC01MzMsOCArNTM0LDggQEAgYWxvb3A6CiAJCQkJZWxzZQogCQkJCQl3YWl0 Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEg7CiAKLQkJ CQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwgd2FpdGZvciwgcG9ydC0+c29jaywg MCwKLQkJCQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BFTl9TRVJWRVIpOworCQkJCSh2b2lk KSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMCwgd2FpdGZvciwgcG9ydC0+c29jaywgMCwKKwkJ CQkJCQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKIAkJCQlnb3RvIGFsb29w OwogCQkJY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKIAkJCQlpZiAociA8IDAgJiYgZXJybm8g IT0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jIGIvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKaW5kZXggM2Y5MjU3YWIwMTAuLjhhYmFmYTY0 OWI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYwpAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1 ZGUgPG5ldGluZXQvdGNwLmg+CiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKLSNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5o IgpAQCAtMTc0LDYgKzE3NCw5IEBAIHNlY3VyZV9jbG9zZShQb3J0ICpwb3J0KQogCiAvKgog ICoJUmVhZCBkYXRhIGZyb20gYSBzZWN1cmUgY29ubmVjdGlvbi4KKyAqCisgKiBJbiBibG9j a2luZyBtb2RlLCB3aWxsIHByb2Nlc3MgYW55IGludGVycnVwdHMgdGhhdCBhcnJpdmUgd2hp bGUgd2UncmUKKyAqIHdhaXRpbmcuCiAgKi8KIHNzaXplX3QKIHNlY3VyZV9yZWFkKFBvcnQg KnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKQEAgLTE4MSw5ICsxODQsNiBAQCBzZWN1 cmVfcmVhZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJc3NpemVfdAkJ bjsKIAlpbnQJCQl3YWl0Zm9yOwogCi0JLyogRGVhbCB3aXRoIGFueSBhbHJlYWR5LXBlbmRp bmcgaW50ZXJydXB0IGNvbmRpdGlvbi4gKi8KLQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVw dChmYWxzZSk7Ci0KIHJldHJ5OgogI2lmZGVmIFVTRV9TU0wKIAl3YWl0Zm9yID0gMDsKQEAg LTIxMyw3ICsyMTMsOCBAQCByZXRyeToKIAogCQlBc3NlcnQod2FpdGZvcik7CiAKLQkJTW9k aWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZv ciwgTlVMTCk7CisJCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRT b2NrZXRQb3MsIHdhaXRmb3IsIDApOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQs IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIENoZWNrRm9ySW50ZXJy dXB0c01hc2spOwogCiAJCVdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIC0xIC8qIG5v IHRpbWVvdXQgKi8gLCAmZXZlbnQsIDEsCiAJCQkJCQkgV0FJVF9FVkVOVF9DTElFTlRfUkVB RCk7CkBAIC0yMjgsMjMgKzIyOSwyMiBAQCByZXRyeToKIAkJICogbmV3IGNvbm5lY3Rpb25z IGNhbiBiZSBhY2NlcHRlZC4gIEV4aXRpbmcgY2xlYXJzIHRoZSBkZWNrIGZvciBhCiAJCSAq IHBvc3RtYXN0ZXIgcmVzdGFydC4KIAkJICoKLQkJICogKE5vdGUgdGhhdCB3ZSBvbmx5IG1h a2UgdGhpcyBjaGVjayB3aGVuIHdlIHdvdWxkIG90aGVyd2lzZSBzbGVlcCBvbgotCQkgKiBv dXIgbGF0Y2guICBXZSBtaWdodCBzdGlsbCBjb250aW51ZSBydW5uaW5nIGZvciBhIHdoaWxl IGlmIHRoZQotCQkgKiBwb3N0bWFzdGVyIGlzIGtpbGxlZCBpbiBtaWQtcXVlcnksIG9yIGV2 ZW4gdGhyb3VnaCBtdWx0aXBsZSBxdWVyaWVzCi0JCSAqIGlmIHdlIG5ldmVyIGhhdmUgdG8g d2FpdCBmb3IgcmVhZC4gIFdlIGRvbid0IHdhbnQgdG8gYnVybiB0b28gbWFueQotCQkgKiBj eWNsZXMgY2hlY2tpbmcgZm9yIHRoaXMgdmVyeSByYXJlIGNvbmRpdGlvbiwgYW5kIHRoaXMg c2hvdWxkIGNhdXNlCi0JCSAqIHVzIHRvIGV4aXQgcXVpY2tseSBpbiBtb3N0IGNhc2VzLikK KwkJICogKE5vdGUgdGhhdCB3ZSBvbmx5IG1ha2UgdGhpcyBjaGVjayB3aGVuIHdlIHdvdWxk IG90aGVyd2lzZSBzbGVlcAorCQkgKiB3YWl0aW5nIGZvciBpbnRlcnJ1cHQuICBXZSBtaWdo dCBzdGlsbCBjb250aW51ZSBydW5uaW5nIGZvciBhIHdoaWxlCisJCSAqIGlmIHRoZSBwb3N0 bWFzdGVyIGlzIGtpbGxlZCBpbiBtaWQtcXVlcnksIG9yIGV2ZW4gdGhyb3VnaCBtdWx0aXBs ZQorCQkgKiBxdWVyaWVzIGlmIHdlIG5ldmVyIGhhdmUgdG8gd2FpdCBmb3IgcmVhZC4gIFdl IGRvbid0IHdhbnQgdG8gYnVybgorCQkgKiB0b28gbWFueSBjeWNsZXMgY2hlY2tpbmcgZm9y IHRoaXMgdmVyeSByYXJlIGNvbmRpdGlvbiwgYW5kIHRoaXMKKwkJICogc2hvdWxkIGNhdXNl IHVzIHRvIGV4aXQgcXVpY2tseSBpbiBtb3N0IGNhc2VzLikKIAkJICovCiAJCWlmIChldmVu dC5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQkJZXJlcG9ydChGQVRBTCwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCiAJCQkJCSBlcnJtc2coInRl cm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHVuZXhwZWN0ZWQgcG9zdG1hc3RlciBleGl0 IikpKTsKIAotCQkvKiBIYW5kbGUgaW50ZXJydXB0LiAqLwotCQlpZiAoZXZlbnQuZXZlbnRz ICYgV0xfTEFUQ0hfU0VUKQorCQkvKiBIYW5kbGUgaW50ZXJydXB0cy4gKi8KKwkJaWYgKGV2 ZW50LmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKLQkJCVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KHRydWUpOworCQkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAogCQkJLyoKIAkJCSAqIFdlJ2xsIHJldHJ5IHRoZSByZWFkLiBN b3N0IGxpa2VseSBpdCB3aWxsIHJldHVybiBpbW1lZGlhdGVseQpAQCAtMjU1LDEyICsyNTUs NiBAQCByZXRyeToKIAkJZ290byByZXRyeTsKIAl9CiAKLQkvKgotCSAqIFByb2Nlc3MgaW50 ZXJydXB0cyB0aGF0IGhhcHBlbmVkIGR1cmluZyBhIHN1Y2Nlc3NmdWwgKG9yIG5vbi1ibG9j a2luZywKLQkgKiBvciBoYXJkLWZhaWxlZCkgcmVhZC4KLQkgKi8KLQlQcm9jZXNzQ2xpZW50 UmVhZEludGVycnVwdChmYWxzZSk7Ci0KIAlyZXR1cm4gbjsKIH0KIApAQCAtMjg0LDcgKzI3 OCw4IEBAIHNlY3VyZV9yYXdfcmVhZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBs ZW4pCiAKIAkvKgogCSAqIFRyeSB0byByZWFkIGZyb20gdGhlIHNvY2tldCB3aXRob3V0IGJs b2NraW5nLiBJZiBpdCBzdWNjZWVkcyB3ZSdyZQotCSAqIGRvbmUsIG90aGVyd2lzZSB3ZSds bCB3YWl0IGZvciB0aGUgc29ja2V0IHVzaW5nIHRoZSBsYXRjaCBtZWNoYW5pc20uCisJICog ZG9uZSwgb3RoZXJ3aXNlIHdlJ2xsIHdhaXQgZm9yIHRoZSBzb2NrZXQgdXNpbmcgdGhlIGlu dGVycnVwdAorCSAqIG1lY2hhbmlzbS4KIAkgKi8KICNpZmRlZiBXSU4zMgogCXBnd2luMzJf bm9ibG9jayA9IHRydWU7CkBAIC0zMDAsNiArMjk1LDkgQEAgc2VjdXJlX3Jhd19yZWFkKFBv cnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAogLyoKICAqCVdyaXRlIGRhdGEg dG8gYSBzZWN1cmUgY29ubmVjdGlvbi4KKyAqCisgKiBJbiBibG9ja2luZyBtb2RlLCB3aWxs IHByb2Nlc3MgYW55IGludGVycnVwdHMgdGhhdCBhcnJpdmUgd2hpbGUgd2UncmUKKyAqIHdh aXRpbmcuCiAgKi8KIHNzaXplX3QKIHNlY3VyZV93cml0ZShQb3J0ICpwb3J0LCBjb25zdCB2 b2lkICpwdHIsIHNpemVfdCBsZW4pCkBAIC0zMDcsOSArMzA1LDYgQEAgc2VjdXJlX3dyaXRl KFBvcnQgKnBvcnQsIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAlzc2l6ZV90CQlu OwogCWludAkJCXdhaXRmb3I7CiAKLQkvKiBEZWFsIHdpdGggYW55IGFscmVhZHktcGVuZGlu ZyBpbnRlcnJ1cHQgY29uZGl0aW9uLiAqLwotCVByb2Nlc3NDbGllbnRXcml0ZUludGVycnVw dChmYWxzZSk7Ci0KIHJldHJ5OgogCXdhaXRmb3IgPSAwOwogI2lmZGVmIFVTRV9TU0wKQEAg LTMzOCw3ICszMzMsOCBAQCByZXRyeToKIAogCQlBc3NlcnQod2FpdGZvcik7CiAKLQkJTW9k aWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZv ciwgTlVMTCk7CisJCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRT b2NrZXRQb3MsIHdhaXRmb3IsIDApOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQs IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIENoZWNrRm9ySW50ZXJy dXB0c01hc2spOwogCiAJCVdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIC0xIC8qIG5v IHRpbWVvdXQgKi8gLCAmZXZlbnQsIDEsCiAJCQkJCQkgV0FJVF9FVkVOVF9DTElFTlRfV1JJ VEUpOwpAQCAtMzQ5LDExICszNDUsMTAgQEAgcmV0cnk6CiAJCQkJCShlcnJjb2RlKEVSUkNP REVfQURNSU5fU0hVVERPV04pLAogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0 aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIpKSk7CiAKLQkJLyogSGFu ZGxlIGludGVycnVwdC4gKi8KLQkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX0xBVENIX1NFVCkK KwkJLyogSGFuZGxlIGludGVycnVwdHMuICovCisJCWlmIChldmVudC5ldmVudHMgJiBXTF9J TlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0JCQlQcm9jZXNzQ2xp ZW50V3JpdGVJbnRlcnJ1cHQodHJ1ZSk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCQkvKgogCQkJICogV2UnbGwgcmV0cnkgdGhlIHdyaXRlLiBNb3N0IGxpa2VseSBpdCB3 aWxsIHJldHVybiBpbW1lZGlhdGVseQpAQCAtMzY0LDEyICszNTksNiBAQCByZXRyeToKIAkJ Z290byByZXRyeTsKIAl9CiAKLQkvKgotCSAqIFByb2Nlc3MgaW50ZXJydXB0cyB0aGF0IGhh cHBlbmVkIGR1cmluZyBhIHN1Y2Nlc3NmdWwgKG9yIG5vbi1ibG9ja2luZywKLQkgKiBvciBo YXJkLWZhaWxlZCkgd3JpdGUuCi0JICovCi0JUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0 KGZhbHNlKTsKLQogCXJldHVybiBuOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9s aWJwcS9wcWNvbW0uYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCmluZGV4IDY1NzBm MjcyOTdiLi5mZjRiMDRmOWUxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFj b21tLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKQEAgLTczLDggKzczLDgg QEAKICNlbmRpZgogCiAjaW5jbHVkZSAiY29tbW9uL2lwLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC0xNzUsNyAr MTc1LDcgQEAgcHFfaW5pdChDbGllbnRTb2NrZXQgKmNsaWVudF9zb2NrKQogewogCVBvcnQJ ICAgKnBvcnQ7CiAJaW50CQkJc29ja2V0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7 Ci0JaW50CQkJbGF0Y2hfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwlpbnQJCQlp bnRlcnJ1cHRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAogCS8qIGFsbG9jYXRl IHRoZSBQb3J0IHN0cnVjdCBhbmQgY29weSB0aGUgQ2xpZW50U29ja2V0IGNvbnRlbnRzIHRv IGl0ICovCiAJcG9ydCA9IHBhbGxvYzBfb2JqZWN0KFBvcnQpOwpAQCAtMjg3LDggKzI4Nyw4 IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIAogCS8qCiAJICogSW4g YmFja2VuZHMgKGFzIHNvb24gYXMgZm9ya2VkKSB3ZSBvcGVyYXRlIHRoZSB1bmRlcmx5aW5n IHNvY2tldCBpbgotCSAqIG5vbmJsb2NraW5nIG1vZGUgYW5kIHVzZSBsYXRjaGVzIHRvIGlt cGxlbWVudCBibG9ja2luZyBzZW1hbnRpY3MgaWYKLQkgKiBuZWVkZWQuIFRoYXQgYWxsb3dz IHVzIHRvIHByb3ZpZGUgc2FmZWx5IGludGVycnVwdGlibGUgcmVhZHMgYW5kCisJICogbm9u YmxvY2tpbmcgbW9kZSBhbmQgdXNlIFdhaXRFdmVudFNldCB0byBpbXBsZW1lbnQgYmxvY2tp bmcgc2VtYW50aWNzCisJICogaWYgbmVlZGVkLiBUaGF0IGFsbG93cyB1cyB0byBwcm92aWRl IHNhZmVseSBpbnRlcnJ1cHRpYmxlIHJlYWRzIGFuZAogCSAqIHdyaXRlcy4KIAkgKi8KICNp Zm5kZWYgV0lOMzIKQEAgLTMwNiwxOCArMzA2LDE4IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0 ICpjbGllbnRfc29jaykKIAogCUZlQmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5V TEwsIEZlQmVXYWl0U2V0TkV2ZW50cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRFdmVudFRv U2V0KEZlQmVXYWl0U2V0LCBXTF9TT0NLRVRfV1JJVEVBQkxFLAotCQkJCQkJCQkgICBwb3J0 LT5zb2NrLCBOVUxMLCBOVUxMKTsKLQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChG ZUJlV2FpdFNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJCQkg IE15TGF0Y2gsIE5VTEwpOworCQkJCQkJCQkgICBwb3J0LT5zb2NrLCAwLCBOVUxMKTsKKwlp bnRlcnJ1cHRfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX0lOVEVS UlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJCQkJCSAgQ2hlY2tGb3JJbnRlcnJ1cHRz TWFzaywgTlVMTCk7CiAJQWRkV2FpdEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX1BPU1RN QVNURVJfREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJ CQkJCSAgMCwgTlVMTCk7CiAKIAkvKgogCSAqIFRoZSBldmVudCBwb3NpdGlvbnMgbWF0Y2gg dGhlIG9yZGVyIHdlIGFkZGVkIHRoZW0sIGJ1dCBsZXQncyBzYW5pdHkKIAkgKiBjaGVjayB0 aGVtIHRvIGJlIHN1cmUuCiAJICovCiAJQXNzZXJ0KHNvY2tldF9wb3MgPT0gRmVCZVdhaXRT ZXRTb2NrZXRQb3MpOwotCUFzc2VydChsYXRjaF9wb3MgPT0gRmVCZVdhaXRTZXRMYXRjaFBv cyk7CisJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0gRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3Mp OwogCiAJcmV0dXJuIHBvcnQ7CiB9CkBAIC0xNDExLDggKzE0MTEsNyBAQCBpbnRlcm5hbF9m bHVzaF9idWZmZXIoY29uc3QgY2hhciAqYnVmLCBzaXplX3QgKnN0YXJ0LCBzaXplX3QgKmVu ZCkKIAkJCSAqIHRoZSBjb25uZWN0aW9uLgogCQkJICovCiAJCQkqc3RhcnQgPSAqZW5kID0g MDsKLQkJCUNsaWVudENvbm5lY3Rpb25Mb3N0ID0gMTsKLQkJCUludGVycnVwdFBlbmRpbmcg PSAxOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xP U1QpOwogCQkJcmV0dXJuIEVPRjsKIAkJfQogCkBAIC0yMDYyLDI1ICsyMDYxLDE0IEBAIHBx X2NoZWNrX2Nvbm5lY3Rpb24odm9pZCkKIAkgKiBJdCdzIE9LIHRvIG1vZGlmeSB0aGUgc29j a2V0IGV2ZW50IGZpbHRlciB3aXRob3V0IHJlc3RvcmluZywgYmVjYXVzZQogCSAqIGFsbCBG ZUJlV2FpdFNldCBzb2NrZXQgd2FpdCBzaXRlcyBkbyB0aGUgc2FtZS4KIAkgKi8KLQlNb2Rp ZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBXTF9TT0NL RVRfQ0xPU0VELCBOVUxMKTsKKwlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVX YWl0U2V0U29ja2V0UG9zLCBXTF9TT0NLRVRfQ0xPU0VELCAwKTsKKwlNb2RpZnlXYWl0RXZl bnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQs IDApOwogCi1yZXRyeToKIAlyYyA9IFdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIDAs IGV2ZW50cywgbGVuZ3Rob2YoZXZlbnRzKSwgMCk7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBy YzsgKytpKQogCXsKIAkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9TT0NLRVRfQ0xPU0VE KQogCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENI X1NFVCkKLQkJewotCQkJLyoKLQkJCSAqIEEgbGF0Y2ggZXZlbnQgbWlnaHQgYmUgcHJldmVu dGluZyBvdGhlciBldmVudHMgZnJvbSBiZWluZwotCQkJICogcmVwb3J0ZWQuICBSZXNldCBp dCBhbmQgcG9sbCBhZ2Fpbi4gIE5vIG5lZWQgdG8gcmVzdG9yZSBpdAotCQkJICogYmVjYXVz ZSBubyBjb2RlIHNob3VsZCBleHBlY3QgbGF0Y2hlcyB0byBzdXJ2aXZlIGFjcm9zcwotCQkJ ICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KLQkJCSAqLwotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKLQkJCWdvdG8gcmV0cnk7Ci0JCX0KIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYwppbmRleCA2ZTRiYmZiNWFhMS4uMGEwMjllYjAyYTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAg LTE0LDYgKzE0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNj ZXNzL3BhcmFsbGVsLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUg ImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRl ICJsaWJwcS9wcW1xLmgiCkBAIC0yNSw3ICsyNiw2IEBACiAKIHN0YXRpYyBzaG1fbXFfaGFu ZGxlICpwcV9tcV9oYW5kbGUgPSBOVUxMOwogc3RhdGljIGJvb2wgcHFfbXFfYnVzeSA9IGZh bHNlOwotc3RhdGljIHBpZF90IHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgPSAwOwogc3Rh dGljIFByb2NOdW1iZXIgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyID0gSU5W QUxJRF9QUk9DX05VTUJFUjsKIAogc3RhdGljIHZvaWQgcHFfY2xlYW51cF9yZWRpcmVjdF90 b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgRGF0dW0gYXJnKTsKQEAgLTc1LDE0ICs3NSwx MyBAQCBwcV9jbGVhbnVwX3JlZGlyZWN0X3RvX3NobV9tcShkc21fc2VnbWVudCAqc2VnLCBE YXR1bSBhcmcpCiB9CiAKIC8qCi0gKiBBcnJhbmdlIHRvIFNlbmRQcm9jU2lnbmFsKCkgdG8g dGhlIHBhcmFsbGVsIGxlYWRlciBlYWNoIHRpbWUgd2UgdHJhbnNtaXQKKyAqIEFycmFuZ2Ug dG8gc2VuZCBhbiBpbnRlcnJ1cHQgdG8gdGhlIHBhcmFsbGVsIGxlYWRlciBlYWNoIHRpbWUg d2UgdHJhbnNtaXQKICAqIG1lc3NhZ2UgZGF0YSB2aWEgdGhlIHNobV9tcS4KICAqLwogdm9p ZAotcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihwaWRfdCBwaWQsIFByb2NOdW1iZXIgcHJvY051 bWJlcikKK3BxX3NldF9wYXJhbGxlbF9sZWFkZXIoUHJvY051bWJlciBwcm9jTnVtYmVyKQog ewogCUFzc2VydChQcUNvbW1NZXRob2RzID09ICZQcUNvbW1NcU1ldGhvZHMpOwotCXBxX21x X3BhcmFsbGVsX2xlYWRlcl9waWQgPSBwaWQ7CiAJcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3By b2NfbnVtYmVyID0gcHJvY051bWJlcjsKIH0KIApAQCAtMTY5LDI3ICsxNjgsMTkgQEAgbXFf cHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJ CUFzc2VydChwcV9tcV9oYW5kbGUgIT0gTlVMTCk7CiAJCXJlc3VsdCA9IHNobV9tcV9zZW5k dihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKLQkJaWYgKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKKwkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9w cm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7Ci0JCQlpZiAoSXNMb2dp Y2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKQotCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9N RVNTQUdFLAotCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7 Ci0JCQllbHNlCi0JCQl7Ci0JCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7Ci0JCQkJ U2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJCQkgICBQ Uk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVh ZGVyX3Byb2NfbnVtYmVyKTsKLQkJCX0KKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1BB UkFMTEVMX01FU1NBR0UsCisJCQkJCQkgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251 bWJlcik7CiAJCX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJ CWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVF VUVfUFVUX01FU1NBR0UpOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2Fp dEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FL RVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAor CQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UpOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbWVzb24uYnVpbGQgYi9z cmMvYmFja2VuZC9tZXNvbi5idWlsZAppbmRleCA3MTJhODU3Y2RiNC4uZDIwZTZmYmEyODUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5k L21lc29uLmJ1aWxkCkBAIC0xNSw2ICsxNSw3IEBAIHN1YmRpcignY2F0YWxvZycpCiBzdWJk aXIoJ2NvbW1hbmRzJykKIHN1YmRpcignZXhlY3V0b3InKQogc3ViZGlyKCdmb3JlaWduJykK K3N1YmRpcignaXBjJykKIHN1YmRpcignaml0JykKIHN1YmRpcignbGliJykKIHN1YmRpcign bGlicHEnKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKaW5kZXggMGY0NDM1ZDJkOTcuLjcy OWEwYmNiYmU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDYg QEAgT0JKUyA9IFwKIAliZ3dyaXRlci5vIFwKIAljaGVja3BvaW50ZXIubyBcCiAJZm9ya19w cm9jZXNzLm8gXAotCWludGVycnVwdC5vIFwKIAlsYXVuY2hfYmFja2VuZC5vIFwKIAlwZ2Fy Y2gubyBcCiAJcG1jaGlsZC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK aW5kZXggMGE3MzBmYjViNDUuLjU3NjMwNTdhODdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYwpAQCAtMjcsMTUgKzI3LDE3IEBACiAgKiBsYXVuY2hlciBoYXMgc2V0 IHVwLgogICoKICAqIElmIHRoZSBmb3JrKCkgY2FsbCBmYWlscyBpbiB0aGUgcG9zdG1hc3Rl ciwgaXQgc2V0cyBhIGZsYWcgaW4gdGhlIHNoYXJlZAotICogbWVtb3J5IGFyZWEsIGFuZCBz ZW5kcyBhIHNpZ25hbCB0byB0aGUgbGF1bmNoZXIuICBUaGUgbGF1bmNoZXIsIHVwb24KLSAq IG5vdGljaW5nIHRoZSBmbGFnLCBjYW4gdHJ5IHN0YXJ0aW5nIHRoZSB3b3JrZXIgYWdhaW4g YnkgcmVzZW5kaW5nIHRoZQorICogbWVtb3J5IGFyZWEsIHNlbmRzIGEgc2lnbmFsIHRvIHRo ZSBsYXVuY2hlciwgcmFpc2luZyB0aGUKKyAqIElOVEVSUlVQVF9BVVRPVkFDVVVNX1dPUktF Ul9GSU5JU0hFRCBpbnRlcnJ1cHQuIFRoZSBsYXVuY2hlciwgdXBvbgorICogbm90aWNpbmcg dGhlIGludGVycnVwdCwgY2FuIHRyeSBzdGFydGluZyB0aGUgd29ya2VyIGFnYWluIGJ5IHJl c2VuZGluZyB0aGUKICAqIHNpZ25hbC4gIE5vdGUgdGhhdCB0aGUgZmFpbHVyZSBjYW4gb25s eSBiZSB0cmFuc2llbnQgKGZvcmsgZmFpbHVyZSBkdWUgdG8KICAqIGhpZ2ggbG9hZCwgbWVt b3J5IHByZXNzdXJlLCB0b28gbWFueSBwcm9jZXNzZXMsIGV0Yyk7IG1vcmUgcGVybWFuZW50 CiAgKiBwcm9ibGVtcywgbGlrZSBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gYSBkYXRhYmFzZSwg YXJlIGRldGVjdGVkIGxhdGVyIGluIHRoZQogICogd29ya2VyIGFuZCBkZWFsdCB3aXRoIGp1 c3QgYnkgaGF2aW5nIHRoZSB3b3JrZXIgZXhpdCBub3JtYWxseS4gIFRoZSBsYXVuY2hlcgog ICogd2lsbCBsYXVuY2ggYSBuZXcgd29ya2VyIGFnYWluIGxhdGVyLCBwZXIgc2NoZWR1bGUu CiAgKgotICogV2hlbiB0aGUgd29ya2VyIGlzIGRvbmUgdmFjdXVtaW5nIGl0IHNlbmRzIFNJ R1VTUjIgdG8gdGhlIGxhdW5jaGVyLiAgVGhlCisgKiBXaGVuIHRoZSB3b3JrZXIgaXMgZG9u ZSB2YWN1dW1pbmcgYW5kIGV4aXRzLCB0aGUgcG9zdG1hc3RlciBzZW5kcyBTSUdVU1IyCisg KiB0byB0aGUgbGF1bmNoZXIsIHJhaXNpbmcgSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VS X0ZJTklTSEVELiAgVGhlCiAgKiBsYXVuY2hlciB0aGVuIHdha2VzIHVwIGFuZCBpcyBhYmxl IHRvIGxhdW5jaCBhbm90aGVyIHdvcmtlciwgaWYgdGhlIHNjaGVkdWxlCiAgKiBpcyBzbyB0 aWdodCB0aGF0IGEgbmV3IHdvcmtlciBpcyBuZWVkZWQgaW1tZWRpYXRlbHkuICBBdCB0aGlz IHRpbWUgdGhlCiAgKiBsYXVuY2hlciBjYW4gYWxzbyBiYWxhbmNlIHRoZSBzZXR0aW5ncyBm b3IgdGhlIHZhcmlvdXMgcmVtYWluaW5nIHdvcmtlcnMnCkBAIC03OSwxOCArODEsMTggQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUg ImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCi0jaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAi c3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTE1 MSw5ICsxNTMsNiBAQCBpbnQJCQlMb2dfYXV0b2FuYWx5emVfbWluX2R1cmF0aW9uID0gNjAw MDAwOwogc3RhdGljIGRvdWJsZSBhdl9zdG9yYWdlX3BhcmFtX2Nvc3RfZGVsYXkgPSAtMTsK IHN0YXRpYyBpbnQJYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2xpbWl0ID0gLTE7CiAKLS8qIEZs YWdzIHNldCBieSBzaWduYWwgaGFuZGxlcnMgKi8KLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRv bWljX3QgZ290X1NJR1VTUjIgPSBmYWxzZTsKLQogLyogQ29tcGFyaXNvbiBwb2ludHMgZm9y IGRldGVybWluaW5nIHdoZXRoZXIgZnJlZXplX21heF9hZ2UgaXMgZXhjZWVkZWQgKi8KIHN0 YXRpYyBUcmFuc2FjdGlvbklkIHJlY2VudFhpZDsKIHN0YXRpYyBNdWx0aVhhY3RJZCByZWNl bnRNdWx0aTsKQEAgLTI4Nyw2ICsyODYsOSBAQCB0eXBlZGVmIHN0cnVjdCBBdXRvVmFjdXVt V29ya0l0ZW0KICAqCiAgKiBUaGlzIHN0cnVjdCBpcyBwcm90ZWN0ZWQgYnkgQXV0b3ZhY3V1 bUxvY2ssIGV4Y2VwdCBmb3IgYXZfc2lnbmFsIGFuZCBwYXJ0cwogICogb2YgdGhlIHdvcmtl ciBsaXN0IChzZWUgYWJvdmUpLgorICoKKyAqIFhYWDogYXZfc2lnbmFsIGNvdWxkIGJlIHJl cGxhY2VkIHdpdGggaW5kaXZpZHVhbCBpbnRlcnJ1cHRzLiBUaGlzIHdvcmtzCisgKiB0b28s IHRob3VnaC4KICAqLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMzIy LDcgKzMyNCw3IEBAIGF2bF9kYmFzZSAgKmF2bF9kYmFzZV9hcnJheTsKIHN0YXRpYyBXb3Jr ZXJJbmZvIE15V29ya2VySW5mbyA9IE5VTEw7CiAKIHN0YXRpYyBPaWQJZG9fc3RhcnRfd29y a2VyKHZvaWQpOwotc3RhdGljIHZvaWQgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVw dHModm9pZCk7CitzdGF0aWMgdm9pZCBQcm9jZXNzQXV0b1ZhY0xhdW5jaGVyQ29uZmlnUmVs b2FkSW50ZXJydXB0KHZvaWQpOwogcGdfbm9yZXR1cm4gc3RhdGljIHZvaWQgQXV0b1ZhY0xh dW5jaGVyU2h1dGRvd24odm9pZCk7CiBzdGF0aWMgdm9pZCBsYXVuY2hlcl9kZXRlcm1pbmVf c2xlZXAoYm9vbCBjYW5sYXVuY2gsIGJvb2wgcmVjdXJzaW5nLAogCQkJCQkJCQkJIHN0cnVj dCB0aW1ldmFsICpuYXApOwpAQCAtMzk0LDIxICszOTYsMjMgQEAgQXV0b1ZhY0xhdW5jaGVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCUFzc2VydChHZXRQcm9jZXNzaW5nTW9kZSgpID09IEluaXRQcm9jZXNzaW5nKTsKIAog CS8qCi0JICogU2V0IHVwIHNpZ25hbCBoYW5kbGVycy4gIFdlIG9wZXJhdGUgb24gZGF0YWJh c2VzIG11Y2ggbGlrZSBhIHJlZ3VsYXIKLQkgKiBiYWNrZW5kLCBzbyB3ZSB1c2UgdGhlIHNh bWUgc2lnbmFsIGhhbmRsaW5nLiAgU2VlIGVxdWl2YWxlbnQgY29kZSBpbgotCSAqIHRjb3Av cG9zdGdyZXMuYy4KKwkgKiBTZXQgdXAgc2lnbmFsIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMu ICBXZSBvcGVyYXRlIG9uIGRhdGFiYXNlcyBtdWNoCisJICogbGlrZSBhIHJlZ3VsYXIgYmFj a2VuZCwgc28gd2UgdXNlIG1vc3RseSB0aGUgc2FtZSBoYW5kbGluZy4gIFNlZQorCSAqIGVx dWl2YWxlbnQgY29kZSBpbiB0Y29wL3Bvc3RncmVzLmMuCiAJICovCi0JcHFzaWduYWwoU0lH SFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdJTlQs IFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1RFUk0sIFNpZ25hbEhh bmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxy ZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwotCisJU2V0U3RhbmRhcmRJ bnRlcnJ1cHRIYW5kbGVycygpOwogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJs aXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCiAKLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdO KTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJ LyogUG9zdG1hc3RlciB1c2VzIFNJR1VTUjIgdG8gcmFpc2UgSU5URVJSVVBUX0FVVE9WQUNV VU1fV09SS0VSX0ZJTklTSEVEICovCiAJcHFzaWduYWwoU0lHVVNSMiwgYXZsX3NpZ3VzcjJf aGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwor CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLCBQcm9jZXNz UXVlcnlDYW5jZWxJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMKTsKKworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RFUk1JTkFU RSwgQXV0b1ZhY0xhdW5jaGVyU2h1dGRvd24pOworCisJLyogV2UgY2FuIHNhZmVseSByZWxv YWQgY29uZmlnIGF0IGFueSBDSEVDS19GT1JfSU5URVJSVVBUUygpICovCisJU2V0SW50ZXJy dXB0SGFuZGxlcihJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwgUHJvY2Vzc0F1dG9WYWNMYXVu Y2hlckNvbmZpZ1JlbG9hZEludGVycnVwdCk7CiAKIAkvKgogCSAqIENyZWF0ZSBhIHBlci1i YWNrZW5kIFBHUFJPQyBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeS4gIFdlIG11c3QgZG8gdGhp cwpAQCAtNDU1LDcgKzQ1OSw4IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkvKiBGb3JnZXQg YW55IHBlbmRpbmcgUXVlcnlDYW5jZWwgb3IgdGltZW91dCByZXF1ZXN0ICovCiAJCWRpc2Fi bGVfYWxsX3RpbWVvdXRzKGZhbHNlKTsKLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7 IC8qIHNlY29uZCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbiAqLworCQlDbGVhckludGVycnVw dChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsgLyogc2Vjb25kIHRvIGF2b2lkIHJhY2UKKwkJ CQkJCQkJCQkJCSAqIGNvbmRpdGlvbiAqLwogCiAJCS8qIFJlcG9ydCB0aGUgZXJyb3IgdG8g dGhlIHNlcnZlciBsb2cgKi8KIAkJRW1pdEVycm9yUmVwb3J0KCk7CkBAIC00OTcsNyArNTAy LDcgQEAgQXV0b1ZhY0xhdW5jaGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlSRVNVTUVfSU5URVJSVVBUUygpOwogCiAJCS8q IGlmIGluIHNodXRkb3duIG1vZGUsIG5vIG5lZWQgZm9yIGFueXRoaW5nIGZ1cnRoZXI7IGp1 c3QgZ28gYXdheSAqLwotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKElu dGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJCQlBdXRvVmFjTGF1bmNo ZXJTaHV0ZG93bigpOwogCiAJCS8qCkBAIC01NTYsNyArNTYxLDcgQEAgQXV0b1ZhY0xhdW5j aGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCSAqLwogCWlmICghQXV0b1ZhY3V1bWluZ0FjdGl2ZSgpKQogCXsKLQkJaWYgKCFT aHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJV UFRfVEVSTUlOQVRFKSkKIAkJCWRvX3N0YXJ0X3dvcmtlcigpOwogCQlwcm9jX2V4aXQoMCk7 CQkJLyogZG9uZSAqLwogCX0KQEAgLTU3MSw0MSArNTc2LDQ0IEBAIEF1dG9WYWNMYXVuY2hl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxpZE9pZCk7CiAKIAkvKiBsb29wIHVu dGlsIHNodXRkb3duIHJlcXVlc3QgKi8KLQl3aGlsZSAoIVNodXRkb3duUmVxdWVzdFBlbmRp bmcpCisJd2hpbGUgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQog CXsKIAkJc3RydWN0IHRpbWV2YWwgbmFwOwogCQlUaW1lc3RhbXBUeiBjdXJyZW50X3RpbWUg PSAwOwogCQlib29sCQljYW5fbGF1bmNoOwogCiAJCS8qCi0JCSAqIFRoaXMgbG9vcCBpcyBh IGJpdCBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsIHVzZSBvZiBXYWl0TGF0Y2gsCisJCSAq IFRoaXMgbG9vcCBpcyBhIGJpdCBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsIHVzZSBvZiBX YWl0SW50ZXJydXB0LAogCQkgKiBiZWNhdXNlIHdlJ2QgbGlrZSB0byBzbGVlcCBiZWZvcmUg dGhlIGZpcnN0IGxhdW5jaCBvZiBhIGNoaWxkCi0JCSAqIHByb2Nlc3MuICBTbyBpdCdzIFdh aXRMYXRjaCwgdGhlbiBSZXNldExhdGNoLCB0aGVuIGNoZWNrIGZvcgotCQkgKiB3YWtlbmlu ZyBjb25kaXRpb25zLgorCQkgKiBwcm9jZXNzLiAgU28gaXQncyBXYWl0SW50ZXJydXB0LCB0 aGVuIENsZWFySW50ZXJydXB0LCB0aGVuIGNoZWNrCisJCSAqIGZvciB3YWtlbmluZyBjb25k aXRpb25zLgogCQkgKi8KIAogCQlsYXVuY2hlcl9kZXRlcm1pbmVfc2xlZXAoYXZfd29ya2Vy X2F2YWlsYWJsZSgpLCBmYWxzZSwgJm5hcCk7CiAKIAkJLyoKLQkJICogV2FpdCB1bnRpbCBu YXB0aW1lIGV4cGlyZXMgb3Igd2UgZ2V0IHNvbWUgdHlwZSBvZiBzaWduYWwgKGFsbCB0aGUK LQkJICogc2lnbmFsIGhhbmRsZXJzIHdpbGwgd2FrZSB1cyBieSBjYWxsaW5nIFNldExhdGNo KS4KKwkJICogV2FpdCB1bnRpbCBuYXB0aW1lIGV4cGlyZXMgb3Igd2UgZ2V0IHNvbWUgdHlw ZSBvZiBpbnRlcnJ1cHQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkgKG5hcC50dl9zZWMgKiAxMDAwTCkgKyAobmFwLnR2X3VzZWMgLyAxMDAwTCks Ci0JCQkJCQkgV0FJVF9FVkVOVF9BVVRPVkFDVVVNX01BSU4pOworCQkodm9pZCkgV2FpdElu dGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1dB SVRfV0FLRVVQIHwKKwkJCQkJCQkgSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklT SEVELAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCQkgKG5hcC50dl9zZWMgKiAxMDAwTCkgKyAobmFwLnR2X3VzZWMg LyAxMDAwTCksCisJCQkJCQkJIFdBSVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsKIAotCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCVBy b2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKCk7CisJCS8qCisJCSAqIEZJWE1FOiBp cyB0aGlzIHN0aWxsIG5lZWRlZD8gRG9lcyBhbnlvbmUgc2VuZCBJTlRFUlJVUFRfV0FJVF9X QUtFVVAKKwkJICogdG8gYXYgbGF1bmNoZXI/CisJCSAqLworCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qCiAJCSAqIGEgd29ya2VyIGZpbmlzaGVk LCBvciBwb3N0bWFzdGVyIHNpZ25hbGVkIGZhaWx1cmUgdG8gc3RhcnQgYSB3b3JrZXIKIAkJ ICovCi0JCWlmIChnb3RfU0lHVVNSMikKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJS VVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVEKSkKIAkJewotCQkJZ290X1NJR1VTUjIg PSBmYWxzZTsKLQogCQkJLyogcmViYWxhbmNlIGNvc3QgbGltaXRzLCBpZiBuZWVkZWQgKi8K IAkJCWlmIChBdXRvVmFjdXVtU2htZW0tPmF2X3NpZ25hbFtBdXRvVmFjUmViYWxhbmNlXSkK IAkJCXsKQEAgLTc0MSwyMSArNzQ5LDE3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlBdXRvVmFj TGF1bmNoZXJTaHV0ZG93bigpOwogfQogCi0vKgotICogUHJvY2VzcyBhbnkgbmV3IGludGVy cnVwdHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJy dXB0cyh2b2lkKQorUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckNvbmZpZ1JlbG9hZEludGVycnVw dCh2b2lkKQogewogCS8qIHRoZSBub3JtYWwgc2h1dGRvd24gY2FzZSAqLwotCWlmIChTaHV0 ZG93blJlcXVlc3RQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9U RVJNSU5BVEUpKQogCQlBdXRvVmFjTGF1bmNoZXJTaHV0ZG93bigpOwogCi0JaWYgKENvbmZp Z1JlbG9hZFBlbmRpbmcpCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQpKQogCXsKIAkJaW50CQkJYXV0b3ZhY3V1bV9tYXhfd29ya2Vyc19wcmV2ID0g YXV0b3ZhY3V1bV9tYXhfd29ya2VyczsKIAotCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFs c2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCiAJCS8qIHNodXRkb3du IHJlcXVlc3RlZCBpbiBjb25maWcgZmlsZT8gKi8KQEAgLTc3MywxNyArNzc3LDYgQEAgUHJv Y2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAkJLyogcmVidWlsZCB0aGUg bGlzdCBpbiBjYXNlIHRoZSBuYXB0aW1lIGNoYW5nZWQgKi8KIAkJcmVidWlsZF9kYXRhYmFz ZV9saXN0KEludmFsaWRPaWQpOwogCX0KLQotCS8qIFByb2Nlc3MgYmFycmllciBldmVudHMg Ki8KLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1NpZ25h bEJhcnJpZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMg b2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQotCQlQ cm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwotCi0JLyogUHJvY2VzcyBzaW52 YWwgY2F0Y2h1cCBpbnRlcnJ1cHRzIHRoYXQgaGFwcGVuZWQgd2hpbGUgc2xlZXBpbmcgKi8K LQlQcm9jZXNzQ2F0Y2h1cEludGVycnVwdCgpOwogfQogCiAvKgpAQCAtMTM1MCw4ICsxMzQz LDggQEAgbGF1bmNoX3dvcmtlcihUaW1lc3RhbXBUeiBub3cpCiAKIC8qCiAgKiBDYWxsZWQg ZnJvbSBwb3N0bWFzdGVyIHRvIHNpZ25hbCBhIGZhaWx1cmUgdG8gZm9yayBhIHByb2Nlc3Mg dG8gYmVjb21lCi0gKiB3b3JrZXIuICBUaGUgcG9zdG1hc3RlciBzaG91bGQga2lsbChTSUdV U1IyKSB0aGUgbGF1bmNoZXIgc2hvcnRseQotICogYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0 aW9uLgorICogd29ya2VyLiAgVGhlIHBvc3RtYXN0ZXIgc2hvdWxkIHNlbmQgSU5URVJSVVBU X0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVEIHRvCisgKiB0aGUgbGF1bmNoZXIgc2hvcnRs eSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKi8KIHZvaWQKIEF1dG9WYWNXb3Jr ZXJGYWlsZWQodm9pZCkKQEAgLTEzNjMsOCArMTM1Niw3IEBAIEF1dG9WYWNXb3JrZXJGYWls ZWQodm9pZCkKIHN0YXRpYyB2b2lkCiBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdT KQogewotCWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlz ZUludGVycnVwdChJTlRFUlJVUFRfQVVUT1ZBQ1VVTV9XT1JLRVJfRklOSVNIRUQpOwogfQog CiAKQEAgLTEzOTksMjIgKzEzOTEsMTggQEAgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKiBiYWNrZW5k LCBzbyB3ZSB1c2UgdGhlIHNhbWUgc2lnbmFsIGhhbmRsaW5nLiAgU2VlIGVxdWl2YWxlbnQg Y29kZSBpbgogCSAqIHRjb3AvcG9zdGdyZXMuYy4KIAkgKi8KLQlwcXNpZ25hbChTSUdIVVAs IFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCi0JLyoKLQkgKiBTSUdJTlQgaXMg dXNlZCB0byBzaWduYWwgY2FuY2VsaW5nIHRoZSBjdXJyZW50IHRhYmxlJ3MgdmFjdXVtOyBT SUdURVJNCi0JICogbWVhbnMgYWJvcnQgYW5kIGV4aXQgY2xlYW5seSwgYW5kIFNJR1FVSVQg bWVhbnMgYWJhbmRvbiBzaGlwLgotCSAqLwotCXBxc2lnbmFsKFNJR0lOVCwgU3RhdGVtZW50 Q2FuY2VsSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQkvKiBTSUdRVUlU IGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8K IAogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5k bGVyICovCiAKLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdV U1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMiwg U0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwor CVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKworCS8qCisJICogSU5URVJSVVBU X1FVRVJZX0NBTkNFTCAoU0lHSU5UKSBpcyB1c2VkIHRvIGNhbmNlbCB0aGUgY3VycmVudCB0 YWJsZSdzCisJICogdmFjdXVtOyBJTlRFUlJVUFRfVEVSTUlOQVQgKFNJR1RFUk0pIG1lYW5z IGFib3J0IGFuZCBleGl0IGNsZWFubHkgYXMKKwkgKiB1c3VhbC4KKwkgKi8KKwlTZXRJbnRl cnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9RVUVSWV9DQU5DRUwsIFByb2Nlc3NRdWVyeUNhbmNl bEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwp OwogCiAJLyoKIAkgKiBDcmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNo YXJlZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKQEAgLTE1NDUsMTIgKzE1MzMsNyBAQCBB dXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCQkvKiB3YWtlIHVwIHRoZSBsYXVuY2hlciAqLwogCQlsYXVuY2hl clByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPmF2TGF1bmNoZXJQcm9j KTsKIAkJaWYgKGxhdW5jaGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQl7Ci0J CQlpbnQJCQlwaWQgPSBHZXRQR1Byb2NCeU51bWJlcihsYXVuY2hlclByb2MpLT5waWQ7Ci0K LQkJCWlmIChwaWQgIT0gMCkKLQkJCQlraWxsKHBpZCwgU0lHVVNSMik7Ci0JCX0KKwkJCVNl bmRJbnRlcnJ1cHQoSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVELCBsYXVu Y2hlclByb2MpOwogCX0KIAllbHNlCiAJewpAQCAtMjI5Miw5ICsyMjc1LDggQEAgZG9fYXV0 b3ZhY3V1bSh2b2lkKQogCQkvKgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5nZXMgYmVm b3JlIHByb2Nlc3NpbmcgZWFjaCBjb2xsZWN0ZWQgdGFibGUuCiAJCSAqLwotCQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NP TkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJ CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCQkJLyoKQEAgLTI0NTIsNyAr MjQzNCw3IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJCSAqIGN1cnJlbnQgdGFibGUgKHdl J3JlIGRvbmUgd2l0aCBpdCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0bwogCQkJICog Y2FuY2VsIGF0IHRoaXMgcG9pbnQuKQogCQkJICovCi0JCQlRdWVyeUNhbmNlbFBlbmRpbmcg PSBmYWxzZTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwog CQl9CiAJCVBHX0NBVENIKCk7CiAJCXsKQEAgLTI1NDEsOSArMjUyMyw4IEBAIGRlbGV0ZWQ6 CiAJCSAqIENoZWNrIGZvciBjb25maWcgY2hhbmdlcyBiZWZvcmUgYWNxdWlyaW5nIGxvY2sg Zm9yIGZ1cnRoZXIgam9icy4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0J CWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBm YWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJVmFjdXVtVXBk YXRlQ29zdHMoKTsKIAkJfQpAQCAtMjY2NSw3ICsyNjQ2LDcgQEAgcGVyZm9ybV93b3JrX2l0 ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSkKIAkJICogKHdlJ3JlIGRvbmUgd2l0 aCBpdCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjYW5jZWwgYXQgdGhpcwogCQkg KiBwb2ludC4pCiAJCSAqLwotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAJfQogCVBHX0NBVENIKCk7 CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRleCA4ZWE4MDBjMGJi ZC4uZWUxNmU5Y2IwMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4 cHJvY2Vzcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBA IC0xNSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c2lnbmFs Lmg+CiAKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Nv bmRpdGlvbl92YXJpYWJsZS5oIgpAQCAtMjMsNiArMjIsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKICNpbmNs dWRlICJ1dGlscy9wc19zdGF0dXMuaCIKIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2Vy LmMKaW5kZXggMTMzYWY1YWVlOTcuLjIwYjdiYTczN2JhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jCkBAIC0xMyw2ICsxMyw4IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGli cHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0 YXQuaCIKQEAgLTIyLDEyICsyNCwxMCBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIK ICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWdu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2NhcnJheS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVk ZSAidXRpbHMvYXNjaWkuaCIKQEAgLTc5LDYgKzc5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQmFj a2dyb3VuZFdvcmtlclNsb3QKIAlwaWRfdAkJcGlkOwkJCS8qIEludmFsaWRQaWQgPSBub3Qg c3RhcnRlZCB5ZXQ7IDAgPSBkZWFkICovCiAJdWludDY0CQlnZW5lcmF0aW9uOwkJLyogaW5j cmVtZW50ZWQgd2hlbiBzbG90IGlzIHJlY3ljbGVkICovCiAJQmFja2dyb3VuZFdvcmtlciB3 b3JrZXI7CisJaW50CQkJbm90aWZ5X3BtY2hpbGQ7CisJUHJvY051bWJlcglub3RpZnlfcHJv Y19udW1iZXI7CiB9IEJhY2tncm91bmRXb3JrZXJTbG90OwogCiAvKgpAQCAtMjAyLDggKzIw NCw5IEBAIEJhY2tncm91bmRXb3JrZXJTaG1lbUluaXQodm9pZCkKIAkJCXNsb3QtPnRlcm1p bmF0ZSA9IGZhbHNlOwogCQkJc2xvdC0+cGlkID0gSW52YWxpZFBpZDsKIAkJCXNsb3QtPmdl bmVyYXRpb24gPSAwOworCQkJc2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOworCQkJc2xvdC0+ bm90aWZ5X3Byb2NfbnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCXJ3LT5yd19z aG1lbV9zbG90ID0gc2xvdG5vOwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9 IDA7CS8qIG1pZ2h0IGJlIHJlaW5pdCBhZnRlciBjcmFzaCAqLwogCQkJbWVtY3B5KCZzbG90 LT53b3JrZXIsICZydy0+cndfd29ya2VyLCBzaXplb2YoQmFja2dyb3VuZFdvcmtlcikpOwog CQkJKytzbG90bm87CiAJCX0KQEAgLTI0NCw2ICsyNDcsMTkgQEAgRmluZFJlZ2lzdGVyZWRX b3JrZXJCeVNsb3ROdW1iZXIoaW50IHNsb3RubykKIAlyZXR1cm4gTlVMTDsKIH0KIAorUHJv Y051bWJlcgorR2V0Tm90aWZ5UHJvY051bWJlckZvclJlZ2lzdGVyZWRXb3JrZXIoUmVnaXN0 ZXJlZEJnV29ya2VyICpydykKK3sKKwlCYWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xvdCA9ICZC YWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CisKKwkvKgor CSAqIEZJWE1FOiBiZSBleHRyYSBwYXJhbm9pZCBhbmQgc2FuaXR5IGNoZWNrIHRoZSBwcm9j IG51bWJlciwgc2luY2UgdGhpcworCSAqIHJ1bnMgaW4gdGhlIHBvc3RtYXN0ZXIKKwkgKi8K KworCXJldHVybiBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7Cit9CisKIC8qCiAgKiBOb3Rp Y2UgY2hhbmdlcyB0byBzaGFyZWQgbWVtb3J5IG1hZGUgYnkgb3RoZXIgYmFja2VuZHMuCiAg KiBBY2NlcHQgbmV3IHdvcmtlciByZXF1ZXN0cyBvbmx5IGlmIGFsbG93X25ld193b3JrZXJz IGlzIHRydWUuCkBAIC0zMjUsMjAgKzM0MSwyMCBAQCBCYWNrZ3JvdW5kV29ya2VyU3RhdGVD aGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJLyoKIAkJICogSWYgdGhlIHdvcmtl ciBpcyBtYXJrZWQgZm9yIHRlcm1pbmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCBpdCB0 bwogCQkgKiB0aGUgcmVnaXN0ZXJlZCB3b3JrZXJzIGxpc3Q7IHdlIGNhbiBqdXN0IGZyZWUg dGhlIHNsb3QuIEhvd2V2ZXIsIGlmCi0JCSAqIGJnd19ub3RpZnlfcGlkIGlzIHNldCwgdGhl IHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZSB3b3JrZXIgbWF5Ci0JCSAqIG5lZWQgdG8g a25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJlcXVlc3QsIHNvIGJl IHN1cmUKLQkJICogdG8gc2lnbmFsIGl0LgorCQkgKiBiZ3dfbm90aWZ5X3Byb2NfbnVtYmVy IGlzIHNldCwgdGhlIHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZQorCQkgKiB3b3JrZXIg bWF5IG5lZWQgdG8ga25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJl cXVlc3QsCisJCSAqIHNvIGJlIHN1cmUgdG8gc2lnbmFsIGl0LgogCQkgKi8KIAkJaWYgKHNs b3QtPnRlcm1pbmF0ZSkKIAkJewotCQkJaW50CQkJbm90aWZ5X3BpZDsKKwkJCVByb2NOdW1i ZXIJbm90aWZ5X3Byb2NfbnVtYmVyOwogCiAJCQkvKgogCQkJICogV2UgbmVlZCBhIG1lbW9y eSBiYXJyaWVyIGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxvYWQgb2YKLQkJCSAqIGJn d19ub3RpZnlfcGlkIGFuZCB0aGUgdXBkYXRlIG9mIHBhcmFsbGVsX3Rlcm1pbmF0ZV9jb3Vu dAotCQkJICogY29tcGxldGUgYmVmb3JlIHRoZSBzdG9yZSB0byBpbl91c2UuCisJCQkgKiBi Z3dfbm90aWZ5X3Byb2NfbnVtYmVyIGFuZCB0aGUgdXBkYXRlIG9mCisJCQkgKiBwYXJhbGxl bF90ZXJtaW5hdGVfY291bnQgY29tcGxldGUgYmVmb3JlIHRoZSBzdG9yZSB0byBpbl91c2Uu CiAJCQkgKi8KLQkJCW5vdGlmeV9waWQgPSBzbG90LT53b3JrZXIuYmd3X25vdGlmeV9waWQ7 CisJCQlub3RpZnlfcHJvY19udW1iZXIgPSBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7CiAJ CQlpZiAoKHNsb3QtPndvcmtlci5iZ3dfZmxhZ3MgJiBCR1dPUktFUl9DTEFTU19QQVJBTExF TCkgIT0gMCkKIAkJCQlCYWNrZ3JvdW5kV29ya2VyRGF0YS0+cGFyYWxsZWxfdGVybWluYXRl X2NvdW50Kys7CiAJCQlzbG90LT5waWQgPSAwOwpAQCAtMzQ2LDggKzM2Miw4IEBAIEJhY2tn cm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKQogCQkJcGdf bWVtb3J5X2JhcnJpZXIoKTsKIAkJCXNsb3QtPmluX3VzZSA9IGZhbHNlOwogCi0JCQlpZiAo bm90aWZ5X3BpZCAhPSAwKQotCQkJCWtpbGwobm90aWZ5X3BpZCwgU0lHVVNSMSk7CisJCQlp ZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCQkJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIG5vdGlmeV9wcm9jX251bWJlcik7 CiAKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0zOTMsMjMgKzQwOSw2IEBAIEJhY2tncm91bmRX b3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKQogCQlydy0+cndfd29y a2VyLmJnd19tYWluX2FyZyA9IHNsb3QtPndvcmtlci5iZ3dfbWFpbl9hcmc7CiAJCW1lbWNw eShydy0+cndfd29ya2VyLmJnd19leHRyYSwgc2xvdC0+d29ya2VyLmJnd19leHRyYSwgQkdX X0VYVFJBTEVOKTsKIAotCQkvKgotCQkgKiBDb3B5IHRoZSBQSUQgdG8gYmUgbm90aWZpZWQg YWJvdXQgc3RhdGUgY2hhbmdlcywgYnV0IG9ubHkgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIg a25vd3MgYWJvdXQgYSBiYWNrZW5kIHdpdGggdGhhdCBQSUQuICBJdCBpc24ndCBhbiBlcnJv cgotCQkgKiBpZiB0aGUgcG9zdG1hc3RlciBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIFBJRCwg YmVjYXVzZSB0aGUgYmFja2VuZAotCQkgKiB0aGF0IHJlcXVlc3RlZCB0aGUgd29ya2VyIGNv dWxkIGhhdmUgZGllZCAob3IgYmVlbiBraWxsZWQpIGp1c3QKLQkJICogYWZ0ZXIgZG9pbmcg c28uICBOb25ldGhlbGVzcywgYXQgbGVhc3QgdW50aWwgd2UgZ2V0IHNvbWUgZXhwZXJpZW5j ZQotCQkgKiB3aXRoIGhvdyB0aGlzIHBsYXlzIG91dCBpbiB0aGUgd2lsZCwgbG9nIGEgbWVz c2FnZSBhdCBhIHJlbGF0aXZlCi0JCSAqIGhpZ2ggZGVidWcgbGV2ZWwuCi0JCSAqLwotCQly dy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlf cGlkOwotCQlpZiAoIVBvc3RtYXN0ZXJNYXJrUElERm9yV29ya2VyTm90aWZ5KHJ3LT5yd193 b3JrZXIuYmd3X25vdGlmeV9waWQpKQotCQl7Ci0JCQllbG9nKERFQlVHMSwgIndvcmtlciBu b3RpZmljYXRpb24gUElEICVkIGlzIG5vdCB2YWxpZCIsCi0JCQkJIChpbnQpIHJ3LT5yd193 b3JrZXIuYmd3X25vdGlmeV9waWQpOwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZCA9IDA7Ci0JCX0KLQogCQkvKiBJbml0aWFsaXplIHBvc3RtYXN0ZXIgYm9va2tlZXBpbmcu ICovCiAJCXJ3LT5yd19waWQgPSAwOwogCQlydy0+cndfY3Jhc2hlZF9hdCA9IDA7CkBAIC00 MzEsNyArNDMwLDcgQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3df bmV3X3dvcmtlcnMpCiAgKiBOT1RFOiBUaGUgZW50cnkgaXMgdW5saW5rZWQgZnJvbSBCYWNr Z3JvdW5kV29ya2VyTGlzdC4gIElmIHRoZSBjYWxsZXIgaXMKICAqIGl0ZXJhdGluZyB0aHJv dWdoIGl0LCBiZXR0ZXIgdXNlIGEgbXV0YWJsZSBpdGVyYXRvciEKICAqCi0gKiBDYWxsZXIg aXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90aWZ5X3BpZCwgaWYgYXBwcm9w cmlhdGUuCisgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90 aWZ5X3Byb2NfbnVtYmVyLCBpZiBhcHByb3ByaWF0ZS4KICAqCiAgKiBUaGlzIGZ1bmN0aW9u IG11c3QgYmUgaW52b2tlZCBvbmx5IGluIHRoZSBwb3N0bWFzdGVyLgogICovCkBAIC00NzYs OCArNDc1LDggQEAgUmVwb3J0QmFja2dyb3VuZFdvcmtlclBJRChSZWdpc3RlcmVkQmdXb3Jr ZXIgKnJ3KQogCXNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3No bWVtX3Nsb3RdOwogCXNsb3QtPnBpZCA9IHJ3LT5yd19waWQ7CiAKLQlpZiAocnctPnJ3X3dv cmtlci5iZ3dfbm90aWZ5X3BpZCAhPSAwKQotCQlraWxsKHJ3LT5yd193b3JrZXIuYmd3X25v dGlmeV9waWQsIFNJR1VTUjEpOworCWlmIChzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0g SU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVAsIHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcik7CiB9CiAKIC8qCkBAIC00OTMsMTIg KzQ5MiwxMiBAQCB2b2lkCiBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyRXhpdChSZWdpc3RlcmVk QmdXb3JrZXIgKnJ3KQogewogCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90OwotCWludAkJ CW5vdGlmeV9waWQ7CisJUHJvY051bWJlcglub3RpZnlfcHJvY19udW1iZXI7CiAKIAlBc3Nl cnQocnctPnJ3X3NobWVtX3Nsb3QgPCBtYXhfd29ya2VyX3Byb2Nlc3Nlcyk7CiAJc2xvdCA9 ICZCYWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CiAJc2xv dC0+cGlkID0gcnctPnJ3X3BpZDsKLQlub3RpZnlfcGlkID0gcnctPnJ3X3dvcmtlci5iZ3df bm90aWZ5X3BpZDsKKwlub3RpZnlfcHJvY19udW1iZXIgPSBzbG90LT5ub3RpZnlfcHJvY19u dW1iZXI7CiAKIAkvKgogCSAqIElmIHRoaXMgd29ya2VyIGlzIHNsYXRlZCBmb3IgZGVyZWdp c3RyYXRpb24sIGRvIHRoYXQgYmVmb3JlIG5vdGlmeWluZwpAQCAtNTExLDI3ICs1MTAsMzQg QEAgUmVwb3J0QmFja2dyb3VuZFdvcmtlckV4aXQoUmVnaXN0ZXJlZEJnV29ya2VyICpydykK IAkJcnctPnJ3X3dvcmtlci5iZ3dfcmVzdGFydF90aW1lID09IEJHV19ORVZFUl9SRVNUQVJU KQogCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2VyKHJ3KTsKIAotCWlmIChub3RpZnlfcGlkICE9 IDApCi0JCWtpbGwobm90aWZ5X3BpZCwgU0lHVVNSMSk7CisJaWYgKG5vdGlmeV9wcm9jX251 bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwgbm90aWZ5X3Byb2NfbnVtYmVyKTsKIH0KIAogLyoKLSAqIENhbmNl bCBTSUdVU1IxIG5vdGlmaWNhdGlvbnMgZm9yIGEgUElEIGJlbG9uZ2luZyB0byBhbiBleGl0 aW5nIGJhY2tlbmQuCisgKiBDYW5jZWwgbm90aWZpY2F0aW9ucyBmb3IgYSBiZ3dvcmtlciBi ZWxvbmdpbmcgdG8gYW4gZXhpdGluZyBiYWNrZW5kLgogICoKICAqIFRoaXMgZnVuY3Rpb24g c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIHBvc3RtYXN0ZXIuCiAgKi8KIHZvaWQK LUJhY2tncm91bmRXb3JrZXJTdG9wTm90aWZpY2F0aW9ucyhwaWRfdCBwaWQpCitCYWNrZ3Jv dW5kV29ya2VyU3RvcE5vdGlmaWNhdGlvbnMoaW50IHBtY2hpbGQpCiB7CiAJZGxpc3RfaXRl cglpdGVyOwogCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmQmFja2dyb3VuZFdvcmtlckxpc3Qp CiAJewogCQlSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3OworCQlCYWNrZ3JvdW5kV29ya2VyU2xv dCAqc2xvdDsKIAogCQlydyA9IGRsaXN0X2NvbnRhaW5lcihSZWdpc3RlcmVkQmdXb3JrZXIs IHJ3X2xub2RlLCBpdGVyLmN1cik7Ci0JCWlmIChydy0+cndfd29ya2VyLmJnd19ub3RpZnlf cGlkID09IHBpZCkKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOworCQlB c3NlcnQocnctPnJ3X3NobWVtX3Nsb3QgPCBtYXhfd29ya2VyX3Byb2Nlc3Nlcyk7CisJCXNs b3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3RdOwor CisJCWlmIChzbG90LT5ub3RpZnlfcG1jaGlsZCA9PSBwbWNoaWxkKQorCQl7CisJCQlzbG90 LT5ub3RpZnlfcG1jaGlsZCA9IDA7CisJCQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJ TlZBTElEX1BST0NfTlVNQkVSOworCQl9CiAJfQogfQogCkBAIC01NjMsMTQgKzU2OSwxNCBA QCBGb3JnZXRVbnN0YXJ0ZWRCYWNrZ3JvdW5kV29ya2Vycyh2b2lkKQogCiAJCS8qIElmIGl0 J3Mgbm90IHlldCBzdGFydGVkLCBhbmQgdGhlcmUncyBzb21lb25lIHdhaXRpbmcgLi4uICov CiAJCWlmIChzbG90LT5waWQgPT0gSW52YWxpZFBpZCAmJgotCQkJcnctPnJ3X3dvcmtlci5i Z3dfbm90aWZ5X3BpZCAhPSAwKQorCQkJc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyICE9IElO VkFMSURfUFJPQ19OVU1CRVIpCiAJCXsKIAkJCS8qIC4uLiB0aGVuIHphcCBpdCwgYW5kIG5v dGlmeSB0aGUgd2FpdGVyICovCi0JCQlpbnQJCQlub3RpZnlfcGlkID0gcnctPnJ3X3dvcmtl ci5iZ3dfbm90aWZ5X3BpZDsKKwkJCVByb2NOdW1iZXIJbm90aWZ5X3Byb2NfbnVtYmVyID0g c2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwogCiAJCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2Vy KHJ3KTsKLQkJCWlmIChub3RpZnlfcGlkICE9IDApCi0JCQkJa2lsbChub3RpZnlfcGlkLCBT SUdVU1IxKTsKKwkJCWlmIChub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05V TUJFUikKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgbm90aWZ5 X3Byb2NfbnVtYmVyKTsKIAkJfQogCX0KIH0KQEAgLTYyNCwxMSArNjMwLDYgQEAgUmVzZXRC YWNrZ3JvdW5kV29ya2VyQ3Jhc2hUaW1lcyh2b2lkKQogCQkJICovCiAJCQlydy0+cndfY3Jh c2hlZF9hdCA9IDA7CiAJCQlydy0+cndfcGlkID0gMDsKLQotCQkJLyoKLQkJCSAqIElmIHRo ZXJlIHdhcyBhbnlvbmUgd2FpdGluZyBmb3IgaXQsIHRoZXkncmUgaGlzdG9yeS4KLQkJCSAq LwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7CiAJCX0KIAl9CiB9CkBA IC03NTYsMzIgKzc1NywyOCBAQCBCYWNrZ3JvdW5kV29ya2VyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qCiAJICogU2V0IHVw IHNpZ25hbCBoYW5kbGVycy4KIAkgKi8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJz KCk7CiAJaWYgKHdvcmtlci0+Ymd3X2ZsYWdzICYgQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFT RV9DT05ORUNUSU9OKQogCXsKIAkJLyoKLQkJICogU0lHSU5UIGlzIHVzZWQgdG8gc2lnbmFs IGNhbmNlbGluZyB0aGUgY3VycmVudCBhY3Rpb24KKwkJICogRW5hYmxlIHF1ZXJ5IGNhbmNl bGxhdGlvbiBieSBkZWZhdWx0LiBUaGUgYmFja2dyb3VuZCB3b3JrZXIgbWF5CisJCSAqIGRp c2FibGUgZm9yIG1vcmUgY29udHJvbCBvbiB3aGVuIGNhbmNlbGxhdGlvbnMgYXJlIGFjY2Vw dGVkLgogCQkgKi8KLQkJcHFzaWduYWwoU0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVy KTsKLQkJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwot CQlwcXNpZ25hbChTSUdGUEUsIEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7CisJCVNldEludGVy cnVwdEhhbmRsZXIoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCwgUHJvY2Vzc1F1ZXJ5Q2FuY2Vs SW50ZXJydXB0KTsKKwkJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwp OwogCi0JCS8qIFhYWCBBbnkgb3RoZXIgaGFuZGxlcnMgbmVlZGVkIGhlcmU/ICovCisJCS8q IGxpa2UgaW4gcmVndWxhciBiYWNrZW5kcyAqLworCQlwcXNpZ25hbChTSUdGUEUsIEZsb2F0 RXhjZXB0aW9uSGFuZGxlcik7CiAJfQogCWVsc2UKIAl7CisJCS8qIG5vIGNhbmNlbGxhdGlv biBpbiBiYWNrZW5kcyB0aGF0IGRvbid0IHJ1biBxdWVyaWVzICovCiAJCXBxc2lnbmFsKFNJ R0lOVCwgU0lHX0lHTik7Ci0JCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCQlwcXNp Z25hbChTSUdGUEUsIFNJR19JR04pOwogCX0KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwot CS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0 ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7CiAKIAlJbml0aWFsaXpl VGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCi0JcHFz aWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7 Ci0KIAkvKgogCSAqIElmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCwgcHJvY2Vzc2lu ZyByZXN1bWVzIGhlcmUuCiAJICoKQEAgLTk4NywxNSArOTg0LDYgQEAgUmVnaXN0ZXJCYWNr Z3JvdW5kV29ya2VyKEJhY2tncm91bmRXb3JrZXIgKndvcmtlcikKIAlpZiAoIVNhbml0eUNo ZWNrQmFja2dyb3VuZFdvcmtlcih3b3JrZXIsIExPRykpCiAJCXJldHVybjsKIAotCWlmICh3 b3JrZXItPmJnd19ub3RpZnlfcGlkICE9IDApCi0JewotCQllcmVwb3J0KExPRywKLQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygi YmFja2dyb3VuZCB3b3JrZXIgXCIlc1wiOiBvbmx5IGR5bmFtaWMgYmFja2dyb3VuZCB3b3Jr ZXJzIGNhbiByZXF1ZXN0IG5vdGlmaWNhdGlvbiIsCi0JCQkJCQl3b3JrZXItPmJnd19uYW1l KSkpOwotCQlyZXR1cm47Ci0JfQotCiAJLyoKIAkgKiBFbmZvcmNlIG1heGltdW0gbnVtYmVy IG9mIHdvcmtlcnMuICBOb3RlIHRoaXMgaXMgb3Zlcmx5IHJlc3RyaWN0aXZlOiB3ZQogCSAq IGNvdWxkIGFsbG93IG1vcmUgbm9uLXNobWVtLWNvbm5lY3RlZCB3b3JrZXJzLCBiZWNhdXNl IHRoZXNlIGRvbid0IGNvdW50CkBAIC0xMTExLDYgKzEwOTksMjUgQEAgUmVnaXN0ZXJEeW5h bWljQmFja2dyb3VuZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIsCiAJCQlpZiAo cGFyYWxsZWwpCiAJCQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3JlZ2lzdGVy X2NvdW50Kys7CiAKKwkJCWlmICgoc2xvdC0+d29ya2VyLmJnd19mbGFncyAmIEJHV09SS0VS X1NITUVNX0FDQ0VTUykgIT0gMCAmJgorCQkJCShzbG90LT53b3JrZXIuYmd3X2ZsYWdzICYg QkdXT1JLRVJfTk9fTk9USUZZKSA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJICogU2V0IG5v dGlmeV9wcm9jX251bWJlciBzbyB0aGF0IHBvc3RtYXN0ZXIgd2lsbCBzZW5kIHVzIGFuCisJ CQkJICogaW50ZXJydXB0LiBBbHNvIHJlbWVtYmVyIHRoZSBwbWNoaWxkIHNsb3QgbnVtYmVy OworCQkJCSAqIHBvc3RtYXN0ZXIgbmVlZHMgaXQgdG8gZGV0ZWN0IHdoZW4gd2UgZXhpdCwg dG8gZGlzYXJtIHRoZQorCQkJCSAqIG5vdGlmaWNhdGlvbi4KKwkJCQkgKi8KKwkJCQlzbG90 LT5ub3RpZnlfcG1jaGlsZCA9IE15UE1DaGlsZFNsb3Q7CisJCQkJc2xvdC0+bm90aWZ5X3By b2NfbnVtYmVyID0gTXlQcm9jTnVtYmVyOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8q IE5vIG5vdGlmaWNhdGlvbnMuICovCisJCQkJc2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOwor CQkJCXNsb3QtPm5vdGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJ CQl9CisKIAkJCS8qCiAJCQkgKiBNYWtlIHN1cmUgcG9zdG1hc3RlciBkb2Vzbid0IHNlZSB0 aGUgc2xvdCBhcyBpbiB1c2UgYmVmb3JlIGl0CiAJCQkgKiBzZWVzIHRoZSBuZXcgY29udGVu dHMuCkBAIC0xMjExLDggKzEyMTgsOSBAQCBHZXRCYWNrZ3JvdW5kV29ya2VyUGlkKEJhY2tn cm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHApCiAgKiBCR1dIX1BPU1RN QVNURVJfRElFRCwgc2luY2UgaXQgdGhhdCBjYXNlIHdlIGtub3cgdGhhdCBzdGFydHVwIHdp bGwgbm90CiAgKiB0YWtlIHBsYWNlLgogICoKLSAqIFRoZSBjYWxsZXIgKm11c3QqIGhhdmUg c2V0IG91ciBQSUQgYXMgdGhlIHdvcmtlcidzIGJnd19ub3RpZnlfcGlkLAotICogZWxzZSB3 ZSB3aWxsIG5vdCBiZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUgd29ya2VyJ3Mgc3RhdGUg Y2hhbmdlcy4KKyAqIFRoaXMgd29ya3Mgb25seSBpZiB0aGUgd29ya2VyIHdhcyByZWdpc3Rl cmVkIHdpdGggQkdXT1JLRVJfU0hNRU1fQUNDRVNTIGFuZAorICogd2l0aG91dCBCR1dPUktF Ul9OT19OT1RJRlksIGVsc2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4g dGhlCisgKiB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgogICovCiBCZ3dIYW5kbGVTdGF0dXMK IFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxl ICpoYW5kbGUsIHBpZF90ICpwaWRwKQpAQCAtMTIzMiw5ICsxMjQwLDkgQEAgV2FpdEZvckJh Y2tncm91bmRXb3JrZXJTdGFydHVwKEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwg cGlkX3QgKnBpZHApCiAJCWlmIChzdGF0dXMgIT0gQkdXSF9OT1RfWUVUX1NUQVJURUQpCiAJ CQlicmVhazsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRD SF9TRVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0JH V09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkgICBXQUlUX0VWRU5UX0JHV09S S0VSX1NUQVJUVVApOwogCiAJCWlmIChyYyAmIFdMX1BPU1RNQVNURVJfREVBVEgpCiAJCXsK QEAgLTEyNDIsNyArMTI1MCw3IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1cChC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogCQkJYnJlYWs7 CiAJCX0KIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIAogCXJldHVybiBzdGF0dXM7CkBAIC0xMjU2LDgg KzEyNjQsOSBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdv cmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKICAqIHVwIGFuZCByZXR1cm4gQkdX SF9QT1NUTUFTVEVSX0RJRUQsIGJlY2F1c2UgaXQncyB0aGUgcG9zdG1hc3RlciB0aGF0CiAg KiBub3RpZmllcyB1cyB3aGVuIGEgd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KICAqCi0gKiBU aGUgY2FsbGVyICptdXN0KiBoYXZlIHNldCBvdXIgUElEIGFzIHRoZSB3b3JrZXIncyBiZ3df bm90aWZ5X3BpZCwKLSAqIGVsc2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdo ZW4gdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuCisgKiBUaGlzIHdvcmtzIG9ubHkgaWYg dGhlIHdvcmtlciB3YXMgcmVnaXN0ZXJlZCB3aXRoIEJHV09SS0VSX1NITUVNX0FDQ0VTUyBh bmQKKyAqIHdpdGhvdXQgQkdXT1JLRVJfTk9fTk9USUZZLCBlbHNlIHdlIHdpbGwgbm90IGJl IGF3b2tlbiBwcm9tcHRseSB3aGVuIHRoZQorICogd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4K ICAqLwogQmd3SGFuZGxlU3RhdHVzCiBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3du KEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAgLTEyNzUsOSArMTI4NCw5IEBA IFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1dGRvd24oQmFja2dyb3VuZFdvcmtlckhhbmRs ZSAqaGFuZGxlKQogCQlpZiAoc3RhdHVzID09IEJHV0hfU1RPUFBFRCkKIAkJCWJyZWFrOwog Ci0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdM X1BPU1RNQVNURVJfREVBVEgsIDAsCi0JCQkJCSAgIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hV VERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8 IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BP U1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRE T1dOKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC0xMjg1 LDcgKzEyOTQsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKEJhY2tncm91 bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJCWJyZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsK IAl9CiAKIAlyZXR1cm4gc3RhdHVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmlu ZGV4IGRiZDY3MGMxNmNjLi5hNTM1OTZkNDllZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 cml0ZXIuYwpAQCAtMzIsMTIgKzMyLDEzIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgor I2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNp Z25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYmd3cml0ZXIuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2lu dGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCkBAIC05NywxNiArOTgs MTEgQEAgQmFja2dyb3VuZFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBz aXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlBdXhpbGlhcnlQcm9jZXNzTWFpbkNvbW1vbigp OwogCiAJLyoKLQkgKiBQcm9wZXJseSBhY2NlcHQgb3IgaWdub3JlIHNpZ25hbHMgdGhhdCBt aWdodCBiZSBzZW50IHRvIHVzLgorCSAqIFNldCB1cCBpbnRlcnJ1cHQgaGFuZGxpbmcKIAkg Ki8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwot CXBxc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFs SGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBh bHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lH QUxSTSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWdu YWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJ R1VTUjIsIFNJR19JR04pOworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwlT ZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9URVJNSU5BVEUsIFByb2Nlc3NBdXhQcm9j ZXNzU2h1dGRvd25JbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCk7CiAKIAkvKgogCSAqIFdlIGp1c3Qgc3RhcnRlZCwgYXNzdW1lIHRoZXJl IGhhcyBiZWVuIGVpdGhlciBhIHNodXRkb3duIG9yCkBAIC0yMjAsOSArMjE2LDkgQEAgQmFj a2dyb3VuZFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAkJaW50CQkJcmM7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHkt cGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKLQkJUHJvY2Vzc01haW5Mb29wSW50 ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCiAJCSAqIERv IG9uZSBjeWNsZSBvZiBkaXJ0eS1idWZmZXIgd3JpdGluZy4KQEAgLTI5NSwyMiArMjkxLDIy IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIHdpbGwgY2FsbCBpdCBldmVyeSBCZ1dyaXRl ckRlbGF5IG1zZWMuICBXaGlsZSBpdCdzIG5vdCBjcml0aWNhbCBmb3IKIAkJICogY29ycmVj dG5lc3MgdGhhdCB0aGF0IGJlIGV4YWN0LCB0aGUgZmVlZGJhY2sgbG9vcCBtaWdodCBtaXNi ZWhhdmUKIAkJICogaWYgd2Ugc3RyYXkgdG9vIGZhciBmcm9tIHRoYXQuICBIZW5jZSwgYXZv aWQgbG9hZGluZyB0aGlzIHByb2Nlc3MKLQkJICogZG93biB3aXRoIGxhdGNoIGV2ZW50cyB0 aGF0IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50bHkgZHVyaW5nCi0JCSAqIG5vcm1h bCBvcGVyYXRpb24uCisJCSAqIGRvd24gd2l0aCBpbnRlcnJ1cHQgZXZlbnRzIHRoYXQgYXJl IGxpa2VseSB0byBoYXBwZW4gZnJlcXVlbnRseQorCQkgKiBkdXJpbmcgbm9ybWFsIG9wZXJh dGlvbi4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICBC Z1dyaXRlckRlbGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dSSVRFUl9NQUlOKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkgICBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CSAgIEJnV3JpdGVyRGVsYXkgLyogbXMgKi8gLCBXQUlUX0VWRU5UX0JHV1JJVEVSX01BSU4p OwogCiAJCS8qCi0JCSAqIElmIG5vIGxhdGNoIGV2ZW50IGFuZCBCZ0J1ZmZlclN5bmMgc2F5 cyBub3RoaW5nJ3MgaGFwcGVuaW5nLCBleHRlbmQKKwkJICogSWYgbm8gaW50ZXJydXB0IGFu ZCBCZ0J1ZmZlclN5bmMgc2F5cyBub3RoaW5nJ3MgaGFwcGVuaW5nLCBleHRlbmQKIAkJICog dGhlIHNsZWVwIGluICJoaWJlcm5hdGlvbiIgbW9kZSwgd2hlcmUgd2Ugc2xlZXAgZm9yIG11 Y2ggbG9uZ2VyCiAJCSAqIHRoYW4gYmd3cml0ZXJfZGVsYXkgc2F5cy4gIEZld2VyIHdha2V1 cHMgc2F2ZSBlbGVjdHJpY2l0eS4gIFdoZW4gYQotCQkgKiBiYWNrZW5kIHN0YXJ0cyB1c2lu ZyBidWZmZXJzIGFnYWluLCBpdCB3aWxsIHdha2UgdXMgdXAgYnkgc2V0dGluZwotCQkgKiBv dXIgbGF0Y2guICBCZWNhdXNlIHRoZSBleHRyYSBzbGVlcCB3aWxsIHBlcnNpc3Qgb25seSBh cyBsb25nIGFzIG5vCi0JCSAqIGJ1ZmZlciBhbGxvY2F0aW9ucyBoYXBwZW4sIHRoaXMgc2hv dWxkIG5vdCBkaXN0b3J0IHRoZSBiZWhhdmlvciBvZgotCQkgKiBCZ0J1ZmZlclN5bmMncyBj b250cm9sIGxvb3AgdG9vIGJhZGx5OyBlc3NlbnRpYWxseSwgaXQgd2lsbCB0aGluawotCQkg KiB0aGF0IHRoZSBzeXN0ZW0td2lkZSBpZGxlIGludGVydmFsIGRpZG4ndCBleGlzdC4KKwkJ ICogYmFja2VuZCBzdGFydHMgdXNpbmcgYnVmZmVycyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVz IHVwIGJ5IHNlbmRpbmcKKwkJICogdXMgYW4gaW50ZXJydXB0LiAgQmVjYXVzZSB0aGUgZXh0 cmEgc2xlZXAgd2lsbCBwZXJzaXN0IG9ubHkgYXMgbG9uZworCQkgKiBhcyBubyBidWZmZXIg YWxsb2NhdGlvbnMgaGFwcGVuLCB0aGlzIHNob3VsZCBub3QgZGlzdG9ydCB0aGUKKwkJICog YmVoYXZpb3Igb2YgQmdCdWZmZXJTeW5jJ3MgY29udHJvbCBsb29wIHRvbyBiYWRseTsgZXNz ZW50aWFsbHksIGl0CisJCSAqIHdpbGwgdGhpbmsgdGhhdCB0aGUgc3lzdGVtLXdpZGUgaWRs ZSBpbnRlcnZhbCBkaWRuJ3QgZXhpc3QuCiAJCSAqCiAJCSAqIFRoZXJlIGlzIGEgcmFjZSBj b25kaXRpb24gaGVyZSwgaW4gdGhhdCBhIGJhY2tlbmQgbWlnaHQgYWxsb2NhdGUgYQogCQkg KiBidWZmZXIgYmV0d2VlbiB0aGUgdGltZSBCZ0J1ZmZlclN5bmMgc2F3IHRoZSBhbGxvYyBj b3VudCBhcyB6ZXJvCkBAIC0zMjUsMTAgKzMyMSwxMSBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CQkJLyogQXNrIGZvciBub3RpZmljYXRpb24gYXQgbmV4dCBidWZmZXIgYWxsb2NhdGlvbiAq LwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihNeVByb2NOdW1iZXIpOwogCQkJLyogU2xl ZXAgLi4uICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBC Z1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKLQkJCQkJCQkgV0FJVF9FVkVOVF9C R1dSSVRFUl9ISUJFUk5BVEUpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJ CQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkJIEJnV3JpdGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SLAorCQkJCQkJCQkg V0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUpOwogCQkJLyogUmVzZXQgdGhlIG5vdGlm aWNhdGlvbiByZXF1ZXN0IGluIGNhc2Ugd2UgdGltZWQgb3V0ICovCiAJCQlTdHJhdGVneU5v dGlmeUJnV3JpdGVyKC0xKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2lu dGVyLmMKaW5kZXggOTc4YTdkMGU2NDkuLjA1NDg3MmFhYmNlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTExLDggKzExLDEwIEBACiAgKiBjb25kaXRp b24uKQogICoKICAqIFRoZSBub3JtYWwgdGVybWluYXRpb24gc2VxdWVuY2UgaXMgdGhhdCBj aGVja3BvaW50ZXIgaXMgaW5zdHJ1Y3RlZCB0bwotICogZXhlY3V0ZSB0aGUgc2h1dGRvd24g Y2hlY2twb2ludCBieSBTSUdJTlQuICBBZnRlciB0aGF0IGNoZWNrcG9pbnRlciB3YWl0cwot ICogdG8gYmUgdGVybWluYXRlZCB2aWEgU0lHVVNSMiwgd2hpY2ggaW5zdHJ1Y3RzIHRoZSBj aGVja3BvaW50ZXIgdG8gZXhpdCgwKS4KKyAqIGV4ZWN1dGUgdGhlIHNodXRkb3duIGNoZWNr cG9pbnQgYnkgU0lHSU5ULCB3aGljaCByYWlzZXMgdGhlCisgKiBJTlRFUlJVUFRfU0hVVERP V05fWExPRyBpbnRlcnJ1cHQuICBBZnRlciB0aGF0IGNoZWNrcG9pbnRlciB3YWl0cworICog dG8gYmUgdGVybWluYXRlZCB2aWEgU0lHVVNSMiwgcmFpc2luZyBJTlRFUlJVUF9URVJNSU5B VEUsIHdoaWNoIGluc3RydWN0cworICogdGhlIGNoZWNrcG9pbnRlciB0byBleGl0KDApLgog ICogQWxsIGJhY2tlbmRzIG11c3QgYmUgc3RvcHBlZCBiZWZvcmUgU0lHSU5UIG9yIFNJR1VT UjIgaXMgaXNzdWVkIQogICoKICAqIEVtZXJnZW5jeSB0ZXJtaW5hdGlvbiBpcyBieSBTSUdR VUlUOyBsaWtlIGFueSBiYWNrZW5kLCB0aGUgY2hlY2twb2ludGVyCkBAIC00NCwxMyArNDYs MTQgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5o IgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5j bHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9i Z3dyaXRlci5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5 cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCkBAIC04NSwxMCArODgsMTEgQEAK ICAqIFRoZSBhbGdvcml0aG0gZm9yIGJhY2tlbmRzIGlzOgogICoJMS4gUmVjb3JkIGN1cnJl bnQgdmFsdWVzIG9mIGNrcHRfZmFpbGVkIGFuZCBja3B0X3N0YXJ0ZWQsIGFuZAogICoJICAg c2V0IHJlcXVlc3QgZmxhZ3MsIHdoaWxlIGhvbGRpbmcgY2twdF9sY2suCi0gKgkyLiBTZW5k IHNpZ25hbCB0byByZXF1ZXN0IGNoZWNrcG9pbnQuCisgKgkyLiBTZW5kIElOVEVSUlVQVF9X QUlUX1dBS0VVUCB0byB3YWtlIHVwIHRoZSBjaGVja3BvaW50ZXIuCiAgKgkzLiBTbGVlcCB1 bnRpbCBja3B0X3N0YXJ0ZWQgY2hhbmdlcy4gIE5vdyB5b3Uga25vdyBhIGNoZWNrcG9pbnQg aGFzCiAgKgkgICBiZWd1biBzaW5jZSB5b3Ugc3RhcnRlZCB0aGlzIGFsZ29yaXRobSAoYWx0 aG91Z2ggKm5vdCogdGhhdCBpdCB3YXMKLSAqCSAgIHNwZWNpZmljYWxseSBpbml0aWF0ZWQg YnkgeW91ciBzaWduYWwpLCBhbmQgdGhhdCBpdCBpcyB1c2luZyB5b3VyIGZsYWdzLgorICoJ ICAgc3BlY2lmaWNhbGx5IGluaXRpYXRlZCBieSB5b3VyIGludGVycnVwdCksIGFuZCB0aGF0 IGl0IGlzIHVzaW5nIHlvdXIKKyAqCSAgIGZsYWdzLgogICoJNC4gUmVjb3JkIG5ldyB2YWx1 ZSBvZiBja3B0X3N0YXJ0ZWQuCiAgKgk1LiBTbGVlcCB1bnRpbCBja3B0X2RvbmUgPj0gc2F2 ZWQgdmFsdWUgb2YgY2twdF9zdGFydGVkLiAgKFVzZSBtb2R1bG8KICAqCSAgIGFyaXRobWV0 aWMgaGVyZSBpbiBjYXNlIGNvdW50ZXJzIHdyYXAgYXJvdW5kLikgIE5vdyB5b3Uga25vdyBh CkBAIC0xNjMsNyArMTY3LDYgQEAgZG91YmxlCQlDaGVja1BvaW50Q29tcGxldGlvblRhcmdl dCA9IDAuOTsKICAqIFByaXZhdGUgc3RhdGUKICAqLwogc3RhdGljIGJvb2wgY2twdF9hY3Rp dmUgPSBmYWxzZTsKLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgU2h1dGRvd25YTE9H UGVuZGluZyA9IGZhbHNlOwogCiAvKiB0aGVzZSB2YWx1ZXMgYXJlIHZhbGlkIHdoZW4gY2tw dF9hY3RpdmUgaXMgdHJ1ZTogKi8KIHN0YXRpYyBwZ190aW1lX3QgY2twdF9zdGFydF90aW1l OwpAQCAtMTc1LDcgKzE3OCw3IEBAIHN0YXRpYyBwZ190aW1lX3QgbGFzdF94bG9nX3N3aXRj aF90aW1lOwogCiAvKiBQcm90b3R5cGVzIGZvciBwcml2YXRlIGZ1bmN0aW9ucyAqLwogCi1z dGF0aWMgdm9pZCBQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cyh2b2lkKTsKK3N0YXRp YyB2b2lkIFByb2Nlc3NDaGVja3BvaW50ZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCk7 CiBzdGF0aWMgdm9pZCBDaGVja0FyY2hpdmVUaW1lb3V0KHZvaWQpOwogc3RhdGljIGJvb2wg SXNDaGVja3BvaW50T25TY2hlZHVsZShkb3VibGUgcHJvZ3Jlc3MpOwogc3RhdGljIGJvb2wg RmFzdENoZWNrcG9pbnRSZXF1ZXN0ZWQodm9pZCk7CkBAIC0yMDUsMjIgKzIwOCwyOCBAQCBD aGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJQ2hlY2twb2ludGVyU2htZW0tPmNoZWNrcG9pbnRlcl9waWQgPSBN eVByb2NQaWQ7CiAKIAkvKgotCSAqIFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUgc2lnbmFs cyB0aGUgcG9zdG1hc3RlciBtaWdodCBzZW5kIHVzCi0JICoKLQkgKiBOb3RlOiB3ZSBkZWxp YmVyYXRlbHkgaWdub3JlIFNJR1RFUk0sIGJlY2F1c2UgZHVyaW5nIGEgc3RhbmRhcmQgVW5p eAotCSAqIHN5c3RlbSBzaHV0ZG93biBjeWNsZSwgaW5pdCB3aWxsIFNJR1RFUk0gYWxsIHBy b2Nlc3NlcyBhdCBvbmNlLiAgV2UKLQkgKiB3YW50IHRvIHdhaXQgZm9yIHRoZSBiYWNrZW5k cyB0byBleGl0LCB3aGVyZXVwb24gdGhlIHBvc3RtYXN0ZXIgd2lsbAotCSAqIHRlbGwgdXMg aXQncyBva2F5IHRvIHNodXQgZG93biAodmlhIFNJR1VTUjIpLgorCSAqIElnbm9yZSBTSUdU RVJNLCBiZWNhdXNlIGR1cmluZyBhIHN0YW5kYXJkIFVuaXggc3lzdGVtIHNodXRkb3duIGN5 Y2xlLAorCSAqIGluaXQgd2lsbCBTSUdURVJNIGFsbCBwcm9jZXNzZXMgYXQgb25jZS4gIFdl IHdhbnQgdG8gd2FpdCBmb3IgdGhlCisJICogYmFja2VuZHMgdG8gZXhpdCwgd2hlcmV1cG9u IHRoZSBwb3N0bWFzdGVyIHdpbGwgdGVsbCB1cyBpdCdzIG9rYXkgdG8KKwkgKiBzaHV0IGRv d24gKHZpYSBJTlRFUlJVUFRfU0hVVERPV05fWExPRykuCisJICovCisJcHFzaWduYWwoU0lH VEVSTSwgU0lHX0lHTik7CisKKwkvKgorCSAqIFBvc3RtYXN0ZXIgdXNlcyBTSUdJTlQgdG8g c2VuZCB1cyBJTlRFUlJVUFRfU0hVVERPV05fWExPRywgYW5kIFNJR1VTUjIKKwkgKiBmb3Ig SU5URVJSVVBfVEVSTUlOQVRFCiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKIAlwcXNpZ25hbChTSUdJTlQsIFJlcVNodXRkb3duWExP Ryk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgU0lHX0lHTik7IC8qIGlnbm9yZSBTSUdURVJNICov Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1h c3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Ci0JcHFzaWduYWwo U0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNpZ25hbEhhbmRsZXJGb3JTaHV0 ZG93blJlcXVlc3QpOwogCisJLyogU2V0IHVwIGludGVycnVwdCBoYW5kbGluZyAqLworCVNl dFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElO VEVSUlVQVF9DT05GSUdfUkVMT0FELCBQcm9jZXNzQ2hlY2twb2ludGVyQ29uZmlnUmVsb2Fk SW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQp OworCisJLyogd2Ugd2lsbCBjaGVjayBmb3IgSU5URVJSVVBUX1RFUk1JTkFURSBleHBsaWNp dGx5IGluIHRoZSBsb29wICovCisJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlO QVRFKTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSBzbyB0aGF0IGZpcnN0IHRpbWUtZHJpdmVu IGV2ZW50IGhhcHBlbnMgYXQgdGhlIGNvcnJlY3QgdGltZS4KIAkgKi8KQEAgLTM1OSwxNSAr MzY4LDE1IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBz aXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJYm9vbAkJY2hrcHRfb3JfcnN0cHRfdGltZWQg PSBmYWxzZTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8K LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQKTsKIAogCQkvKgotCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWdu YWxzIHJlY2VpdmVkIHJlY2VudGx5LgorCQkgKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBp bnRlcnJ1cHRzIHJlY2VpdmVkIHJlY2VudGx5LgogCQkgKi8KIAkJQWJzb3JiU3luY1JlcXVl c3RzKCk7CiAKLQkJUHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHMoKTsKLQkJaWYgKFNo dXRkb3duWExPR1BlbmRpbmcgfHwgU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NI VVRET1dOX1hMT0cpIHx8IEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkp CiAJCQlicmVhazsKIAogCQkvKgpAQCAtNTQxLDEwICs1NTAsMTAgQEAgQ2hlY2twb2ludGVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCiAJCQkvKgogCQkJICogV2UgbWF5IGhhdmUgcmVjZWl2ZWQgYW4gaW50ZXJydXB0IGR1 cmluZyB0aGUgY2hlY2twb2ludCBhbmQgdGhlCi0JCQkgKiBsYXRjaCBtaWdodCBoYXZlIGJl ZW4gcmVzZXQgKGUuZy4gaW4gQ2hlY2twb2ludFdyaXRlRGVsYXkpLgorCQkJICogaW50ZXJy dXB0IG1pZ2h0IGhhdmUgYmVlbiByZXNldCAoZS5nLiBpbiBDaGVja3BvaW50V3JpdGVEZWxh eSkuCiAJCQkgKi8KLQkJCVByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1cHRzKCk7Ci0JCQlp ZiAoU2h1dGRvd25YTE9HUGVuZGluZyB8fCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVS UlVQVF9TSFVURE9XTl9YTE9HKSB8fCBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJN SU5BVEUpKQogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTU2OSw3ICs1NzgsNyBAQCBDaGVja3Bv aW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJCQljb250aW51ZTsKIAogCQkvKgotCQkgKiBTbGVlcCB1bnRpbCB3ZSBhcmUg c2lnbmFsZWQgb3IgaXQncyB0aW1lIGZvciBhbm90aGVyIGNoZWNrcG9pbnQgb3IKKwkJICog U2xlZXAgdW50aWwgd2UgYXJlIHdva2VuIHVwIG9yIGl0J3MgdGltZSBmb3IgYW5vdGhlciBj aGVja3BvaW50IG9yCiAJCSAqIHhsb2cgZmlsZSBzd2l0Y2guCiAJCSAqLwogCQlub3cgPSAo cGdfdGltZV90KSB0aW1lKE5VTEwpOwpAQCAtNTg1LDEwICs1OTQsMTMgQEAgQ2hlY2twb2lu dGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCQkJY3VyX3RpbWVvdXQgPSBNaW4oY3VyX3RpbWVvdXQsIFhMb2dBcmNoaXZlVGlt ZW91dCAtIGVsYXBzZWRfc2Vjcyk7CiAJCX0KIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0 Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCQkgY3VyX3RpbWVvdXQgKiAxMDAwTCAvKiBjb252ZXJ0IHRvIG1zICov ICwKLQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOKTsKKwkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQ VF9XQUlUX1dBS0VVUCB8CisJCQkJCQkJIElOVEVSUlVQVF9TSFVURE9XTl9YTE9HIHwKKwkJ CQkJCQkgSU5URVJSVVBUX1RFUk1JTkFURSwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGN1cl90aW1lb3V0ICog MTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCisJCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQ T0lOVEVSX01BSU4pOwogCX0KIAogCS8qCkBAIC01OTcsNyArNjA5LDcgQEAgQ2hlY2twb2lu dGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCSAqLwogCUV4aXRPbkFueUVycm9yID0gdHJ1ZTsKIAotCWlmIChTaHV0ZG93blhM T0dQZW5kaW5nKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9Y TE9HKSkKIAl7CiAJCS8qCiAJCSAqIENsb3NlIGRvd24gdGhlIGRhdGFiYXNlLgpAQCAtNjE1 LDcgKzYyNyw3IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJICogVGVsbCBwb3N0bWFzdGVyIHRoYXQg d2UncmUgZG9uZS4KIAkJICovCiAJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1hM T0dfSVNfU0hVVERPV04pOwotCQlTaHV0ZG93blhMT0dQZW5kaW5nID0gZmFsc2U7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9TSFVURE9XTl9YTE9HKTsKIAl9CiAKIAkvKgpAQCAt NjI1LDU1ICs2MzcsMzggQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqLwogCWZvciAoOzspCiAJewot CQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKLQotCQlQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cygpOworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5n KQorCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAkJCWJy ZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9T RVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIDAsCi0JCQkJCQkgV0FJVF9FVkVO VF9DSEVDS1BPSU5URVJfU0hVVERPV04pOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1RFUk1JTkFURSwKKwkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgMCwK KwkJCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfU0hVVERPV04pOwogCX0KIAogCS8q IE5vcm1hbCBleGl0IGZyb20gdGhlIGNoZWNrcG9pbnRlciBpcyBoZXJlICovCiAJcHJvY19l eGl0KDApOwkJCQkvKiBkb25lICovCiB9CiAKLS8qCi0gKiBQcm9jZXNzIGFueSBuZXcgaW50 ZXJydXB0cy4KLSAqLwogc3RhdGljIHZvaWQKLVByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1 cHRzKHZvaWQpCitQcm9jZXNzQ2hlY2twb2ludGVyQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZv aWQpCiB7Ci0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NT aWduYWxCYXJyaWVyKCk7Ci0KLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQl7Ci0JCUNv bmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKLQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJ R0hVUCk7CisJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKLQkJLyoKLQkJICog Q2hlY2twb2ludGVyIGlzIHRoZSBsYXN0IHByb2Nlc3MgdG8gc2h1dCBkb3duLCBzbyB3ZSBh c2sgaXQgdG8gaG9sZAotCQkgKiB0aGUga2V5cyBmb3IgYSByYW5nZSBvZiBvdGhlciB0YXNr cyByZXF1aXJlZCBtb3N0IG9mIHdoaWNoIGhhdmUKLQkJICogbm90aGluZyB0byBkbyB3aXRo IGNoZWNrcG9pbnRpbmcgYXQgYWxsLgotCQkgKgotCQkgKiBGb3IgdmFyaW91cyByZWFzb25z LCBzb21lIGNvbmZpZyB2YWx1ZXMgY2FuIGNoYW5nZSBkeW5hbWljYWxseSBzbwotCQkgKiB0 aGUgcHJpbWFyeSBjb3B5IG9mIHRoZW0gaXMgaGVsZCBpbiBzaGFyZWQgbWVtb3J5IHRvIG1h a2Ugc3VyZSBhbGwKLQkJICogYmFja2VuZHMgc2VlIHRoZSBzYW1lIHZhbHVlLiAgV2UgbWFr ZSBDaGVja3BvaW50ZXIgcmVzcG9uc2libGUgZm9yCi0JCSAqIHVwZGF0aW5nIHRoZSBzaGFy ZWQgbWVtb3J5IGNvcHkgaWYgdGhlIHBhcmFtZXRlciBzZXR0aW5nIGNoYW5nZXMKLQkJICog YmVjYXVzZSBvZiBTSUdIVVAuCi0JCSAqLwotCQlVcGRhdGVTaGFyZWRNZW1vcnlDb25maWco KTsKLQl9Ci0KLQkvKiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRo aXMgcHJvY2VzcyAqLwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKLQkJUHJvY2Vz c0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKKwkvKgorCSAqIENoZWNrcG9pbnRlciBp cyB0aGUgbGFzdCBwcm9jZXNzIHRvIHNodXQgZG93biwgc28gd2UgYXNrIGl0IHRvIGhvbGQg dGhlCisJICoga2V5cyBmb3IgYSByYW5nZSBvZiBvdGhlciB0YXNrcyByZXF1aXJlZCBtb3N0 IG9mIHdoaWNoIGhhdmUgbm90aGluZyB0bworCSAqIGRvIHdpdGggY2hlY2twb2ludGluZyBh dCBhbGwuCisJICoKKwkgKiBGb3IgdmFyaW91cyByZWFzb25zLCBzb21lIGNvbmZpZyB2YWx1 ZXMgY2FuIGNoYW5nZSBkeW5hbWljYWxseSBzbyB0aGUKKwkgKiBwcmltYXJ5IGNvcHkgb2Yg dGhlbSBpcyBoZWxkIGluIHNoYXJlZCBtZW1vcnkgdG8gbWFrZSBzdXJlIGFsbCBiYWNrZW5k cworCSAqIHNlZSB0aGUgc2FtZSB2YWx1ZS4gIFdlIG1ha2UgQ2hlY2twb2ludGVyIHJlc3Bv bnNpYmxlIGZvciB1cGRhdGluZyB0aGUKKwkgKiBzaGFyZWQgbWVtb3J5IGNvcHkgaWYgdGhl IHBhcmFtZXRlciBzZXR0aW5nIGNoYW5nZXMgYmVjYXVzZSBvZiBTSUdIVVAuCisJICovCisJ VXBkYXRlU2hhcmVkTWVtb3J5Q29uZmlnKCk7CiB9CiAKIC8qCkBAIC03ODUsMjQgKzc4MCwx OCBAQCBDaGVja3BvaW50V3JpdGVEZWxheShpbnQgZmxhZ3MsIGRvdWJsZSBwcm9ncmVzcykK IAlpZiAoIUFtQ2hlY2twb2ludGVyUHJvY2VzcygpKQogCQlyZXR1cm47CiAKKwlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCiAJLyoKIAkgKiBQZXJmb3JtIHRoZSB1c3VhbCBkdXRpZXMg YW5kIHRha2UgYSBuYXAsIHVubGVzcyB3ZSdyZSBiZWhpbmQgc2NoZWR1bGUsCiAJICogaW4g d2hpY2ggY2FzZSB3ZSBqdXN0IHRyeSB0byBjYXRjaCB1cCBhcyBxdWlja2x5IGFzIHBvc3Np YmxlLgogCSAqLwogCWlmICghKGZsYWdzICYgQ0hFQ0tQT0lOVF9GQVNUKSAmJgotCQkhU2h1 dGRvd25YTE9HUGVuZGluZyAmJgotCQkhU2h1dGRvd25SZXF1ZXN0UGVuZGluZyAmJgorCQkh SW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fWExPRykgJiYKKwkJIUludGVy cnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkgJiYKIAkJIUZhc3RDaGVja3BvaW50 UmVxdWVzdGVkKCkgJiYKIAkJSXNDaGVja3BvaW50T25TY2hlZHVsZShwcm9ncmVzcykpCiAJ ewotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVu ZGluZyA9IGZhbHNlOwotCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCQkv KiB1cGRhdGUgc2htZW0gY29waWVzIG9mIGNvbmZpZyB2YXJpYWJsZXMgKi8KLQkJCVVwZGF0 ZVNoYXJlZE1lbW9yeUNvbmZpZygpOwotCQl9Ci0KIAkJQWJzb3JiU3luY1JlcXVlc3RzKCk7 CiAJCWFic29yYl9jb3VudGVyID0gV1JJVEVTX1BFUl9BQlNPUkI7CiAKQEAgLTgxNywxMCAr ODA2LDEyIEBAIENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHByb2dy ZXNzKQogCQkgKiBDaGVja3BvaW50ZXIgYW5kIGJnd3JpdGVyIGFyZSBubyBsb25nZXIgcmVs YXRlZCBzbyB0YWtlIHRoZSBCaWcKIAkJICogU2xlZXAuCiAJCSAqLwotCQlXYWl0TGF0Y2go TXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVP VVQsCi0JCQkJICAxMDAsCi0JCQkJICBXQUlUX0VWRU5UX0NIRUNLUE9JTlRfV1JJVEVfREVM QVkpOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlXYWl0SW50ZXJydXB0KENoZWNrRm9y SW50ZXJydXB0c01hc2sgfAorCQkJCQkgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJ ICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwKKwkJ CQkJICAxMDAsCisJCQkJCSAgV0FJVF9FVkVOVF9DSEVDS1BPSU5UX1dSSVRFX0RFTEFZKTsK KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAJZWxzZSBp ZiAoLS1hYnNvcmJfY291bnRlciA8PSAwKQogCXsKQEAgLTgzMiwxMCArODIzLDYgQEAgQ2hl Y2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCiAJCUFic29y YlN5bmNSZXF1ZXN0cygpOwogCQlhYnNvcmJfY291bnRlciA9IFdSSVRFU19QRVJfQUJTT1JC OwogCX0KLQotCS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50cy4gKi8KLQlpZiAoUHJvY1Np Z25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIH0K IAogLyoKQEAgLTkyNCwxMiArOTExLDExIEBAIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91 YmxlIHByb2dyZXNzKQogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq LwogCi0vKiBTSUdJTlQ6IHNldCBmbGFnIHRvIHRyaWdnZXIgd3JpdGluZyBvZiBzaHV0ZG93 biBjaGVja3BvaW50ICovCisvKiBTSUdJTlQ6IHJhaXNlIGludGVycnVwdCB0byB0cmlnZ2Vy IHdyaXRpbmcgb2Ygc2h1dGRvd24gY2hlY2twb2ludCAqLwogc3RhdGljIHZvaWQKIFJlcVNo dXRkb3duWExPRyhTSUdOQUxfQVJHUykKIHsKLQlTaHV0ZG93blhMT0dQZW5kaW5nID0gdHJ1 ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfU0hV VERPV05fWExPRyk7CiB9CiAKIApAQCAtMTEwMiwxNCArMTA4OCwxNSBAQCBSZXF1ZXN0Q2hl Y2twb2ludChpbnQgZmxhZ3MpCiAJU3BpbkxvY2tSZWxlYXNlKCZDaGVja3BvaW50ZXJTaG1l bS0+Y2twdF9sY2spOwogCiAJLyoKLQkgKiBTZXQgY2hlY2twb2ludGVyJ3MgbGF0Y2ggdG8g cmVxdWVzdCBjaGVja3BvaW50LiAgSXQncyBwb3NzaWJsZSB0aGF0IHRoZQotCSAqIGNoZWNr cG9pbnRlciBoYXNuJ3Qgc3RhcnRlZCB5ZXQsIHNvIHdlIHdpbGwgcmV0cnkgYSBmZXcgdGlt ZXMgaWYKLQkgKiBuZWVkZWQuICAoQWN0dWFsbHksIG1vcmUgdGhhbiBhIGZldyB0aW1lcywg c2luY2Ugb24gc2xvdyBvciBvdmVybG9hZGVkCi0JICogYnVpbGRmYXJtIG1hY2hpbmVzLCBp dCdzIGJlZW4gb2JzZXJ2ZWQgdGhhdCB0aGUgY2hlY2twb2ludGVyIGNhbiB0YWtlCi0JICog c2V2ZXJhbCBzZWNvbmRzIHRvIHN0YXJ0LikgIEhvd2V2ZXIsIGlmIG5vdCB0b2xkIHRvIHdh aXQgZm9yIHRoZQotCSAqIGNoZWNrcG9pbnQgdG8gb2NjdXIsIHdlIGNvbnNpZGVyIGZhaWx1 cmUgdG8gc2V0IHRoZSBsYXRjaCB0byBiZQotCSAqIG5vbmZhdGFsIGFuZCBtZXJlbHkgTE9H IGl0LiAgVGhlIGNoZWNrcG9pbnRlciBzaG91bGQgc2VlIHRoZSByZXF1ZXN0Ci0JICogd2hl biBpdCBkb2VzIHN0YXJ0LCB3aXRoIG9yIHdpdGhvdXQgdGhlIFNldExhdGNoKCkuCisJICog U2VuZCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgdG8gd2FrZSB1cCB0aGUgY2hlY2twb2ludGVy LiAgSXQncyBwb3NzaWJsZQorCSAqIHRoYXQgdGhlIGNoZWNrcG9pbnRlciBoYXNuJ3Qgc3Rh cnRlZCB5ZXQsIHNvIHdlIHdpbGwgcmV0cnkgYSBmZXcgdGltZXMKKwkgKiBpZiBuZWVkZWQu ICAoQWN0dWFsbHksIG1vcmUgdGhhbiBhIGZldyB0aW1lcywgc2luY2Ugb24gc2xvdyBvcgor CSAqIG92ZXJsb2FkZWQgYnVpbGRmYXJtIG1hY2hpbmVzLCBpdCdzIGJlZW4gb2JzZXJ2ZWQg dGhhdCB0aGUgY2hlY2twb2ludGVyCisJICogY2FuIHRha2Ugc2V2ZXJhbCBzZWNvbmRzIHRv IHN0YXJ0LikgIEhvd2V2ZXIsIGlmIG5vdCB0b2xkIHRvIHdhaXQgZm9yCisJICogdGhlIGNo ZWNrcG9pbnQgdG8gb2NjdXIsIHdlIGNvbnNpZGVyIGZhaWx1cmUgdG8gd2FrZSB1cCB0aGUK KwkgKiBjaGVja3BvaW50ZXIgdG8gYmUgbm9uZmF0YWwgYW5kIG1lcmVseSBMT0cgaXQuICBU aGUgY2hlY2twb2ludGVyIHNob3VsZAorCSAqIHNlZSB0aGUgcmVxdWVzdCB3aGVuIGl0IGRv ZXMgc3RhcnQsIHdpdGggb3Igd2l0aG91dCB0aGUKKwkgKiBTZW5kSW50ZXJydXB0KCkuCiAJ ICovCiAjZGVmaW5lIE1BWF9TSUdOQUxfVFJJRVMgNjAwCS8qIG1heCB3YWl0IDYwLjAgc2Vj ICovCiAJZm9yIChudHJpZXMgPSAwOzsgbnRyaWVzKyspCkBAIC0xMTI4LDcgKzExMTUsNyBA QCBSZXF1ZXN0Q2hlY2twb2ludChpbnQgZmxhZ3MpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlT ZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYyktPnByb2NMYXRj aCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgY2hlY2twb2lu dGVyUHJvYyk7CiAJCQkvKiBub3RpZmllZCBzdWNjZXNzZnVsbHkgKi8KIAkJCWJyZWFrOwog CQl9CkBAIC0xMjU5LDcgKzEyNDYsNyBAQCBGb3J3YXJkU3luY1JlcXVlc3QoY29uc3QgRmls ZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJCVByb2NOdW1iZXIJY2hlY2tw b2ludGVyUHJvYyA9IHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+Y2hlY2twb2lu dGVyUHJvYyk7CiAKIAkJaWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05V TUJFUikKLQkJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50ZXJQcm9j KS0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ LCBjaGVja3BvaW50ZXJQcm9jKTsKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKQEAgLTE1NDAsNSAr MTUyNyw1IEBAIFdha2V1cENoZWNrcG9pbnRlcih2b2lkKQogCVByb2NOdW1iZXIJY2hlY2tw b2ludGVyUHJvYyA9IHBnX2F0b21pY19yZWFkX3UzMigmcHJvY2dsb2JhbC0+Y2hlY2twb2lu dGVyUHJvYyk7CiAKIAlpZiAoY2hlY2twb2ludGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVN QkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoY2hlY2twb2ludGVyUHJvYykt PnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBj aGVja3BvaW50ZXJQcm9jKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmMwZmYwMTJjNS4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgL2Rldi9udWxs CkBAIC0xLDEwOCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBpbnRl cnJ1cHQuYwotICoJICBJbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMuCi0gKgotICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQotICoKLSAqIElERU5USUZJQ0FUSU9O Ci0gKgkgIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKLSAqCi0gKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSAqLwotCi0jaW5jbHVkZSAicG9zdGdyZXMuaCIKLQotI2luY2x1 ZGUgPHVuaXN0ZC5oPgotCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK LSNpbmNsdWRlICJ1dGlscy9ndWMuaCIKLSNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgot Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwot dm9sYXRpbGUgc2lnX2F0b21pY190IFNodXRkb3duUmVxdWVzdFBlbmRpbmcgPSBmYWxzZTsK LQotLyoKLSAqIFNpbXBsZSBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wcyBvZiBi YWNrZ3JvdW5kIHByb2Nlc3Nlcy4KLSAqLwotdm9pZAotUHJvY2Vzc01haW5Mb29wSW50ZXJy dXB0cyh2b2lkKQotewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nl c3NQcm9jU2lnbmFsQmFycmllcigpOwotCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0J ewotCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0JCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOwotCX0KLQotCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQotCQlw cm9jX2V4aXQoMCk7Ci0KLQkvKiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRz IG9mIHRoaXMgcHJvY2VzcyAqLwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKLQkJ UHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKLX0KLQotLyoKLSAqIFNpbXBs ZSBzaWduYWwgaGFuZGxlciBmb3IgdHJpZ2dlcmluZyBhIGNvbmZpZ3VyYXRpb24gcmVsb2Fk LgotICoKLSAqIE5vcm1hbGx5LCB0aGlzIGhhbmRsZXIgd291bGQgYmUgdXNlZCBmb3IgU0lH SFVQLiBUaGUgaWRlYSBpcyB0aGF0IGNvZGUKLSAqIHdoaWNoIHVzZXMgaXQgd291bGQgYXJy YW5nZSB0byBjaGVjayB0aGUgQ29uZmlnUmVsb2FkUGVuZGluZyBmbGFnIGF0Ci0gKiBjb252 ZW5pZW50IHBsYWNlcyBpbnNpZGUgbWFpbiBsb29wcywgb3IgZWxzZSBjYWxsIFByb2Nlc3NN YWluTG9vcEludGVycnVwdHMuCi0gKi8KLXZvaWQKLVNpZ25hbEhhbmRsZXJGb3JDb25maWdS ZWxvYWQoU0lHTkFMX0FSR1MpCi17Ci0JQ29uZmlnUmVsb2FkUGVuZGluZyA9IHRydWU7Ci0J U2V0TGF0Y2goTXlMYXRjaCk7Ci19Ci0KLS8qCi0gKiBTaW1wbGUgc2lnbmFsIGhhbmRsZXIg Zm9yIGV4aXRpbmcgcXVpY2tseSBhcyBpZiBkdWUgdG8gYSBjcmFzaC4KLSAqCi0gKiBOb3Jt YWxseSwgdGhpcyB3b3VsZCBiZSB1c2VkIGZvciBoYW5kbGluZyBTSUdRVUlULgotICovCi12 b2lkCi1TaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQotewotCS8qCi0J ICogV2UgRE8gTk9UIHdhbnQgdG8gcnVuIHByb2NfZXhpdCgpIG9yIGF0ZXhpdCgpIGNhbGxi YWNrcyAtLSB3ZSdyZSBoZXJlCi0JICogYmVjYXVzZSBzaGFyZWQgbWVtb3J5IG1heSBiZSBj b3JydXB0ZWQsIHNvIHdlIGRvbid0IHdhbnQgdG8gdHJ5IHRvCi0JICogY2xlYW4gdXAgb3Vy IHRyYW5zYWN0aW9uLiAgSnVzdCBuYWlsIHRoZSB3aW5kb3dzIHNodXQgYW5kIGdldCBvdXQg b2YKLQkgKiB0b3duLiAgVGhlIGNhbGxiYWNrcyB3b3VsZG4ndCBiZSBzYWZlIHRvIHJ1biBm cm9tIGEgc2lnbmFsIGhhbmRsZXIsCi0JICogYW55d2F5LgotCSAqCi0JICogTm90ZSB3ZSBk byBfZXhpdCgyKSBub3QgX2V4aXQoMCkuICBUaGlzIGlzIHRvIGZvcmNlIHRoZSBwb3N0bWFz dGVyIGludG8KLQkgKiBhIHN5c3RlbSByZXNldCBjeWNsZSBpZiBzb21lb25lIHNlbmRzIGEg bWFudWFsIFNJR1FVSVQgdG8gYSByYW5kb20KLQkgKiBiYWNrZW5kLiAgVGhpcyBpcyBuZWNl c3NhcnkgcHJlY2lzZWx5IGJlY2F1c2Ugd2UgZG9uJ3QgY2xlYW4gdXAgb3VyCi0JICogc2hh cmVkIG1lbW9yeSBzdGF0ZS4gIChUaGUgImRlYWQgbWFuIHN3aXRjaCIgbWVjaGFuaXNtIGlu IHBtc2lnbmFsLmMKLQkgKiBzaG91bGQgZW5zdXJlIHRoZSBwb3N0bWFzdGVyIHNlZXMgdGhp cyBhcyBhIGNyYXNoLCB0b28sIGJ1dCBubyBoYXJtIGluCi0JICogYmVpbmcgZG91Ymx5IHN1 cmUuKQotCSAqLwotCV9leGl0KDIpOwotfQotCi0vKgotICogU2ltcGxlIHNpZ25hbCBoYW5k bGVyIGZvciB0cmlnZ2VyaW5nIGEgbG9uZy1ydW5uaW5nIGJhY2tncm91bmQgcHJvY2VzcyB0 bwotICogc2h1dCBkb3duIGFuZCBleGl0LgotICoKLSAqIFR5cGljYWxseSwgdGhpcyBoYW5k bGVyIHdvdWxkIGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UK LSAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgYW5k IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgotICogZXhpdCBvbiBTSUdVU1IyLCBhbmQgdGhlIFdB TCB3cml0ZXIgZXhpdHMgb24gZWl0aGVyIFNJR0lOVCBvciBTSUdURVJNLgotICoKLSAqIFNo dXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNoZWNrZWQgYXQgYSBjb252ZW5pZW50 IHBsYWNlIHdpdGhpbiB0aGUKLSAqIG1haW4gbG9vcCwgb3IgZWxzZSB0aGUgbWFpbiBsb29w IHNob3VsZCBjYWxsIFByb2Nlc3NNYWluTG9vcEludGVycnVwdHMuCi0gKi8KLXZvaWQKLVNp Z25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QoU0lHTkFMX0FSR1MpCi17Ci0JU2h1dGRv d25SZXF1ZXN0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7Ci19CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZAppbmRleCBlMWY3MDcyNjYwNC4uZmJkNDBjYjEw ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZApAQCAtNyw3ICs3LDYgQEAg YmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnYmd3cml0ZXIuYycsCiAgICdjaGVja3Bv aW50ZXIuYycsCiAgICdmb3JrX3Byb2Nlc3MuYycsCi0gICdpbnRlcnJ1cHQuYycsCiAgICds YXVuY2hfYmFja2VuZC5jJywKICAgJ3BnYXJjaC5jJywKICAgJ3BtY2hpbGQuYycsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCAxMGE1ZWY5ZTE1Yy4uMWY0YzM1NzZlNWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtMzMsMTcgKzMzLDE3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJhcmNoaXZlL2FyY2hpdmVf bW9kdWxlLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZS9zaGVsbF9hcmNoaXZlLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIK ICNpbmNsdWRlICJsaWIvYmluYXJ5aGVhcC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFs LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9j ZXNzLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJw b3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3Zhcmlh YmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKQEAgLTEz MiwxMSArMTMyLDYgQEAgc3RydWN0IGFyY2hfZmlsZXNfc3RhdGUKIAogc3RhdGljIHN0cnVj dCBhcmNoX2ZpbGVzX3N0YXRlICphcmNoX2ZpbGVzID0gTlVMTDsKIAotLyoKLSAqIEZsYWdz IHNldCBieSBpbnRlcnJ1cHQgaGFuZGxlcnMgZm9yIGxhdGVyIHNlcnZpY2UgaW4gdGhlIG1h aW4gbG9vcC4KLSAqLwotc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCByZWFkeV90b19z dG9wID0gZmFsc2U7Ci0KIC8qIC0tLS0tLS0tLS0KICAqIExvY2FsIGZ1bmN0aW9uIGZvcndh cmQgZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tCkBAIC0xNDgsMTAgKzE0MywxMSBAQCBz dGF0aWMgYm9vbCBwZ2FyY2hfYXJjaGl2ZVhsb2coY2hhciAqeGxvZyk7CiBzdGF0aWMgYm9v bCBwZ2FyY2hfcmVhZHlYbG9nKGNoYXIgKnhsb2cpOwogc3RhdGljIHZvaWQgcGdhcmNoX2Fy Y2hpdmVEb25lKGNoYXIgKnhsb2cpOwogc3RhdGljIHZvaWQgcGdhcmNoX2RpZShpbnQgY29k ZSwgRGF0dW0gYXJnKTsKLXN0YXRpYyB2b2lkIFByb2Nlc3NQZ0FyY2hJbnRlcnJ1cHRzKHZv aWQpOwogc3RhdGljIGludAlyZWFkeV9maWxlX2NvbXBhcmF0b3IoRGF0dW0gYSwgRGF0dW0g Yiwgdm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIExvYWRBcmNoaXZlTGlicmFyeSh2b2lkKTsK IHN0YXRpYyB2b2lkIHBnYXJjaF9jYWxsX21vZHVsZV9zaHV0ZG93bl9jYihpbnQgY29kZSwg RGF0dW0gYXJnKTsKK3N0YXRpYyB2b2lkIHBnYXJjaF9Qcm9jZXNzQ29uZmlnUmVsb2FkSW50 ZXJydXB0KHZvaWQpOworCiAKIC8qIFJlcG9ydCBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRl ZCBieSBQZ0FyY2hTaG1lbUluaXQgKi8KIFNpemUKQEAgLTIyNSwxOCArMjIxLDI3IEBAIFBn QXJjaGl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBf ZGF0YV9sZW4pCiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb24oKTsKIAogCS8qCi0JICog SWdub3JlIGFsbCBzaWduYWxzIHVzdWFsbHkgYm91bmQgdG8gc29tZSBhY3Rpb24gaW4gdGhl IHBvc3RtYXN0ZXIsCi0JICogZXhjZXB0IGZvciBTSUdIVVAsIFNJR1RFUk0sIFNJR1VTUjEs IFNJR1VTUjIsIGFuZCBTSUdRVUlULgorCSAqIG5vIHF1ZXJ5IGNhbmNlbC4gWFhYOiBzaG91 bGQgd2UgbGVhdmUgdGhlIHNpZ25hbCBoYW5kbGVyIGluIHBsYWNlIGFuZAorCSAqIGp1c3Qg bm90IGluc3RhbGwgYW4gaW50ZXJydXB0IGhhbmRsZXIgZm9yIGl0PwogCSAqLwotCXBxc2ln bmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJLyogYW4gaW50 ZXJydXB0IGhhbmRsZXIgZm9yIGl0PyAqLwogCXBxc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7 Ci0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7 Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1h c3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Ci0JcHFzaWduYWwo U0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIpOworCisJLyogVE9ETzogdXNlIGludGVycnVwdCBmb3IgdGhpcyBkaXJl Y3RseSAqLwogCXBxc2lnbmFsKFNJR1VTUjIsIHBnYXJjaF93YWtlbl9zdG9wKTsKIAorCS8q CisJICogVGhlc2UgaW50ZXJydXB0IGhhbmRsZXJzIGFyZSBjYWxsZWQgaW4gdGhlIGxvb3Bz IHBnYXJjaF9NYWluTG9vcCBhbmQKKwkgKiBwZ2FyY2hfQXJjaGl2ZXJDb3B5TG9vcC4gRG8g bm90IHNldCBJTlRFUlJVUFRfVEVSTUlOQVRFIGhhbmRsZXIsCisJICogYmVjYXVzZSB0aGF0 J3MgZGlmZmVyZW50IGJldHdlZW4gdGhlIGxvb3BzLgorCSAqLworCVNldEludGVycnVwdEhh bmRsZXIoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsIHBnYXJjaF9Qcm9jZXNzQ29uZmlnUmVs b2FkSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxP QUQpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0JBUlJJRVIsIFByb2Nlc3NQ cm9jU2lnbmFsQmFycmllcik7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9CQVJSSUVS KTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQs IFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQo SU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCk7CisKIAkvKiBVbmJsb2NrIHNpZ25hbHMg KHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0ZXIgZm9ya2VkIHVzKSAqLwog CXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmVW5CbG9ja1NpZywgTlVMTCk7CiAKQEAgLTI0 Nyw4ICsyNTIsOCBAQCBQZ0FyY2hpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEs IHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCW9uX3NobWVtX2V4aXQocGdhcmNoX2RpZSwg MCk7CiAKIAkvKgotCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBudW1iZXIgc28gdGhhdCBiYWNr ZW5kcyBjYW4gdXNlIG91ciBsYXRjaCB0byB3YWtlIHVzCi0JICogdXAgd2hpbGUgd2UncmUg c2xlZXBpbmcuCisJICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0IGJhY2tl bmRzIGNhbiB3YWtlIHVzIHVwIHdoaWxlIHdlJ3JlCisJICogc2xlZXBpbmcuCiAJICovCiAJ UGdBcmNoLT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIApAQCAtMjgyLDEzICsyODcsMTIg QEAgUGdBcmNoV2FrZXVwKHZvaWQpCiAJaW50CQkJYXJjaF9wZ3Byb2NubyA9IFBnQXJjaC0+ cGdwcm9jbm87CiAKIAkvKgotCSAqIFdlIGRvbid0IGFjcXVpcmUgUHJvY0FycmF5TG9jayBo ZXJlLiAgSXQncyBhY3R1YWxseSBmaW5lIGJlY2F1c2UKLQkgKiBwcm9jTGF0Y2ggaXNuJ3Qg ZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4gcG90ZW50aWFsbHkgc2V0IHRoZSB3cm9uZwot CSAqIHByb2Nlc3MnIChvciBubyBwcm9jZXNzJykgbGF0Y2guICBFdmVuIGluIHRoYXQgY2Fz ZSB0aGUgYXJjaGl2ZXIgd2lsbAotCSAqIGJlIHJlbGF1bmNoZWQgc2hvcnRseSBhbmQgd2ls bCBzdGFydCBhcmNoaXZpbmcuCisJICogV2UgZG9uJ3QgYWNxdWlyZSBQcm9jQXJyYXlMb2Nr IGhlcmUsIHNvIHdlIG1heSBzZW5kIHRoZSBpbnRlcnJ1cHQgdG8KKwkgKiB3cm9uZyBwcm9j ZXNzLCBidXQgdGhhdCdzIGhhcm1sZXNzLiAgRXZlbiBpbiB0aGF0IGNhc2UgdGhlIGFyY2hp dmVyCisJICogd2lsbCBiZSByZWxhdW5jaGVkIHNob3J0bHkgYW5kIHdpbGwgc3RhcnQgYXJj aGl2aW5nLgogCSAqLwogCWlmIChhcmNoX3BncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1C RVIpCi0JCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihhcmNoX3BncHJvY25vKS0+cHJv Y0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIGFyY2hf cGdwcm9jbm8pOwogfQogCiAKQEAgLTI5Nyw4ICszMDEsNyBAQCBzdGF0aWMgdm9pZAogcGdh cmNoX3dha2VuX3N0b3AoU0lHTkFMX0FSR1MpCiB7CiAJLyogc2V0IGZsYWcgdG8gZG8gYSBm aW5hbCBjeWNsZSBhbmQgc2h1dCBkb3duIGFmdGVyd2FyZHMgKi8KLQlyZWFkeV90b19zdG9w ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfU0hVVERPV05fUEdBUkNIKTsKIH0KIAogLyoKQEAgLTMwOSw3ICszMTIsNyBAQCBwZ2Fy Y2hfd2FrZW5fc3RvcChTSUdOQUxfQVJHUykKIHN0YXRpYyB2b2lkCiBwZ2FyY2hfTWFpbkxv b3Aodm9pZCkKIHsKLQlib29sCQl0aW1lX3RvX3N0b3A7CisJYm9vbAkJdGltZV90b19zdG9w ID0gZmFsc2U7CiAKIAkvKgogCSAqIFRoZXJlIHNob3VsZG4ndCBiZSBhbnl0aGluZyBmb3Ig dGhlIGFyY2hpdmVyIHRvIGRvIGV4Y2VwdCB0byB3YWl0IGZvciBhCkBAIC0zMTgsMTMgKzMy MSwxNSBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkgKi8KIAlkbwogCXsKLQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJLyogRklYTUU6IGlzIHRoaXMgdXNlZCBmb3Igc29tZXRoaW5n IGluIHBnYXJjaD8gVG8gbnVkZ2UgaXQ/ICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogV2hlbiB3ZSBnZXQgU0lHVVNSMiwgd2UgZG8gb25l IG1vcmUgYXJjaGl2ZSBjeWNsZSwgdGhlbiBleGl0ICovCi0JCXRpbWVfdG9fc3RvcCA9IHJl YWR5X3RvX3N0b3A7CisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9X Tl9QR0FSQ0gpKQorCQkJdGltZV90b19zdG9wID0gdHJ1ZTsKIAogCQkvKiBDaGVjayBmb3Ig YmFycmllciBldmVudHMgYW5kIGNvbmZpZyB1cGRhdGUgKi8KLQkJUHJvY2Vzc1BnQXJjaElu dGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgogCQkgKiBJ ZiB3ZSd2ZSBnb3R0ZW4gU0lHVEVSTSwgd2Ugbm9ybWFsbHkganVzdCBzaXQgYW5kIGRvIG5v dGhpbmcgdW50aWwKQEAgLTMzNCw3ICszMzksNyBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkK IAkJICogdGhhdCB0aGUgcG9zdG1hc3RlciBjYW4gc3RhcnQgYSBuZXcgYXJjaGl2ZXIgaWYg bmVlZGVkLiAgQWxzbyBleGl0CiAJCSAqIGlmIHRpbWUgdW5leHBlY3RlZGx5IGdvZXMgYmFj a3dhcmQuCiAJCSAqLwotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKElu dGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJCXsKIAkJCXRpbWVfdAkJ Y3VydGltZSA9IHRpbWUoTlVMTCk7CiAKQEAgLTM0Niw2ICszNTEsNyBAQCBwZ2FyY2hfTWFp bkxvb3Aodm9pZCkKIAkJfQogCiAJCS8qIERvIHdoYXQgd2UncmUgaGVyZSBmb3IgKi8KKwog CQlwZ2FyY2hfQXJjaGl2ZXJDb3B5TG9vcCgpOwogCiAJCS8qCkBAIC0zNTYsMTAgKzM2Miwx MyBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkJewogCQkJaW50CQkJcmM7CiAKLQkJCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKLQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9J TlRFUlZBTCAqIDEwMDBMLAotCQkJCQkJICAgV0FJVF9FVkVOVF9BUkNISVZFUl9NQUlOKTsK KwkJCXJjID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAgfAorCQkJCQkJ CSAgIElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJCSAgIElOVEVSUlVQVF9TSFVURE9X Tl9QR0FSQ0ggfAorCQkJCQkJCSAgIENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJ ICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJ CQkJCQkJICAgUEdBUkNIX0FVVE9XQUtFX0lOVEVSVkFMICogMTAwMEwsCisJCQkJCQkJICAg V0FJVF9FVkVOVF9BUkNISVZFUl9NQUlOKTsKIAkJCWlmIChyYyAmIFdMX1BPU1RNQVNURVJf REVBVEgpCiAJCQkJdGltZV90b19zdG9wID0gdHJ1ZTsKIAkJfQpAQCAtNDA4LDcgKzQxNyw3 IEBAIHBnYXJjaF9BcmNoaXZlckNvcHlMb29wKHZvaWQpCiAJCQkgKiBjb21tYW5kLCBhbmQg dGhlIHNlY29uZCBpcyB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBhbm90aGVyCiAJCQkgKiBh cmNoaXZlciBzcGF3bmVkIGJ5IGEgbmV3ZXIgcG9zdG1hc3Rlci4KIAkJCSAqLwotCQkJaWYg KFNodXRkb3duUmVxdWVzdFBlbmRpbmcgfHwgIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCisJCQlp ZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSB8fCAhUG9zdG1hc3Rl cklzQWxpdmUoKSkKIAkJCQlyZXR1cm47CiAKIAkJCS8qCkBAIC00MTYsNyArNDI1LDcgQEAg cGdhcmNoX0FyY2hpdmVyQ29weUxvb3Aodm9pZCkKIAkJCSAqIHdlJ2xsIGFkb3B0IGEgbmV3 IHNldHRpbmcgZm9yIGFyY2hpdmVfY29tbWFuZCBhcyBzb29uIGFzCiAJCQkgKiBwb3NzaWJs ZSwgZXZlbiBpZiB0aGVyZSBpcyBhIGJhY2tsb2cgb2YgZmlsZXMgdG8gYmUgYXJjaGl2ZWQu CiAJCQkgKi8KLQkJCVByb2Nlc3NQZ0FyY2hJbnRlcnJ1cHRzKCk7CisJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCiAJCQkvKiBSZXNldCB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSBz ZXQgYnkgdGhlIGNhbGxiYWNrICovCiAJCQlhcmNoX21vZHVsZV9jaGVja19lcnJkZXRhaWxf c3RyaW5nID0gTlVMTDsKQEAgLTg0OSwzMCArODU4LDEzIEBAIHBnYXJjaF9kaWUoaW50IGNv ZGUsIERhdHVtIGFyZykKIAlQZ0FyY2gtPnBncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKIH0KIAotLyoKLSAqIEludGVycnVwdCBoYW5kbGVyIGZvciBXQUwgYXJjaGl2ZXIgcHJv Y2Vzcy4KLSAqCi0gKiBUaGlzIGlzIGNhbGxlZCBpbiB0aGUgbG9vcHMgcGdhcmNoX01haW5M b29wIGFuZCBwZ2FyY2hfQXJjaGl2ZXJDb3B5TG9vcC4KLSAqIEl0IGNoZWNrcyBmb3IgYmFy cmllciBldmVudHMsIGNvbmZpZyB1cGRhdGUgYW5kIHJlcXVlc3QgZm9yIGxvZ2dpbmcgb2YK LSAqIG1lbW9yeSBjb250ZXh0cywgYnV0IG5vdCBzaHV0ZG93biByZXF1ZXN0IGJlY2F1c2Ug aG93IHRvIGhhbmRsZQotICogc2h1dGRvd24gcmVxdWVzdCBpcyBkaWZmZXJlbnQgYmV0d2Vl biB0aG9zZSBsb29wcy4KLSAqLwogc3RhdGljIHZvaWQKLVByb2Nlc3NQZ0FyY2hJbnRlcnJ1 cHRzKHZvaWQpCitwZ2FyY2hfUHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQog ewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nlc3NQcm9jU2lnbmFs QmFycmllcigpOwotCi0JLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBv ZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7Ci0KLQlpZiAoQ29uZmlnUmVsb2Fk UGVuZGluZykKIAl7CiAJCWNoYXIJICAgKmFyY2hpdmVMaWIgPSBwc3RyZHVwKFhMb2dBcmNo aXZlTGlicmFyeSk7CiAJCWJvb2wJCWFyY2hpdmVMaWJDaGFuZ2VkOwogCi0JCUNvbmZpZ1Jl bG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CiAKIAkJaWYgKFhMb2dBcmNoaXZlTGlicmFyeVswXSAhPSAnXDAnICYmIFhMb2dBcmNoaXZl Q29tbWFuZFswXSAhPSAnXDAnKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpp bmRleCBkNjEzM2JmZWJjNi4uZWEyYmZjZjIxN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv cG9zdG1hc3Rlci5jCkBAIC01MzksMTAgKzUzOSw4IEBAIFBvc3RtYXN0ZXJNYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJICogU2V0IHVwIHNpZ25hbCBoYW5kbGVycyBmb3IgdGhl IHBvc3RtYXN0ZXIgcHJvY2Vzcy4KIAkgKgogCSAqIENBVVRJT046IHdoZW4gY2hhbmdpbmcg dGhpcyBsaXN0LCBjaGVjayBmb3Igc2lkZS1lZmZlY3RzIG9uIHRoZSBzaWduYWwKLQkgKiBo YW5kbGluZyBzZXR1cCBvZiBjaGlsZCBwcm9jZXNzZXMuICBTZWUgdGNvcC9wb3N0Z3Jlcy5j LAotCSAqIGJvb3RzdHJhcC9ib290c3RyYXAuYywgcG9zdG1hc3Rlci9iZ3dyaXRlci5jLCBw b3N0bWFzdGVyL3dhbHdyaXRlci5jLAotCSAqIHBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jLCBw b3N0bWFzdGVyL3BnYXJjaC5jLCBwb3N0bWFzdGVyL3N5c2xvZ2dlci5jLAotCSAqIHBvc3Rt YXN0ZXIvYmd3b3JrZXIuYyBhbmQgcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYy4KKwkgKiBo YW5kbGluZyBzZXR1cCBvZiBjaGlsZCBwcm9jZXNzZXMuICBTZWUKKwkgKiBTZXRQb3N0bWFz dGVyQ2hpbGRTaWduYWxIYW5kbGVycygpCiAJICovCiAJcHFpbml0bWFzaygpOwogCXNpZ3By b2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tTaWcsIE5VTEwpOwpAQCAtNTU5LDcgKzU1Nyw2 IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBUaGlz IG1heSBjb25maWd1cmUgU0lHVVJHLCBkZXBlbmRpbmcgb24gcGxhdGZvcm0uICovCiAJSW5p dGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsK IAogCS8qCiAJICogTm8gb3RoZXIgcGxhY2UgaW4gUG9zdGdyZXMgc2hvdWxkIHRvdWNoIFNJ R1RUSU4vU0lHVFRPVSBoYW5kbGluZy4gIFdlCkBAIC01ODAsNiArNTc3LDggQEAgUG9zdG1h c3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlwcXNpZ25hbChTSUdYRlNaLCBT SUdfSUdOKTsgLyogaWdub3JlZCAqLwogI2VuZGlmCiAKKwkvKiBub3RlOiB3ZSBkbyBub3Qg aW5zdGFsbCB0aGUgc3RhbmRhcmQgaW50ZXJydXB0IGhhbmRsZXJzIGluIHBvc3RtYXN0ZXIg Ki8KKwogCS8qIEJlZ2luIGFjY2VwdGluZyBzaWduYWxzLiAqLwogCXNpZ3Byb2NtYXNrKFNJ R19TRVRNQVNLLCAmVW5CbG9ja1NpZywgTlVMTCk7CiAKQEAgLTE2NDUsMTQgKzE2NDQsMTUg QEAgQ29uZmlndXJlUG9zdG1hc3RlcldhaXRTZXQoYm9vbCBhY2NlcHRfY29ubmVjdGlvbnMp CiAKIAlwbV93YWl0X3NldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLAogCQkJCQkJCQkJ IGFjY2VwdF9jb25uZWN0aW9ucyA/ICgxICsgTnVtTGlzdGVuU29ja2V0cykgOiAxKTsKLQlB ZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURf U09DS0VULCBNeUxhdGNoLAorCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9J TlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCSAgSU5URVJSVVBUX0NPTkZJR19S RUxPQUQgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCiAJCQkJCSAgTlVMTCk7CiAKIAlpZiAo YWNjZXB0X2Nvbm5lY3Rpb25zKQogCXsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1MaXN0 ZW5Tb2NrZXRzOyBpKyspCiAJCQlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xf U09DS0VUX0FDQ0VQVCwgTGlzdGVuU29ja2V0c1tpXSwKLQkJCQkJCQkgIE5VTEwsIE5VTEwp OworCQkJCQkJCSAgMCwgTlVMTCk7CiAJfQogfQogCkBAIC0xNjgxLDE5ICsxNjgxLDIwIEBA IFNlcnZlckxvb3Aodm9pZCkKIAkJCQkJCQkJICAgMCAvKiBwb3N0bWFzdGVyIHBvc3RzIG5v IHdhaXRfZXZlbnRzICovICk7CiAKIAkJLyoKLQkJICogTGF0Y2ggc2V0IGJ5IHNpZ25hbCBo YW5kbGVyLCBvciBuZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uIGFueSBvZgotCQkgKiBvdXIg c29ja2V0cz8gSWYgdGhlIGxhdHRlciwgZm9yayBhIGNoaWxkIHByb2Nlc3MgdG8gZGVhbCB3 aXRoIGl0LgorCQkgKiBJbnRlcnJ1cHQgcmFpc2VkIGJ5IHNpZ25hbCBoYW5kbGVyLCBvciBu ZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uCisJCSAqIGFueSBvZiBvdXIgc29ja2V0cz8gIElm IHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwKKwkJICogd2l0aCBp dC4KIAkJICovCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbmV2ZW50czsgaSsrKQogCQl7Ci0J CQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCisJ CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQkJLyoKIAkJ CSAqIFRoZSBmb2xsb3dpbmcgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdW5jb25kaXRpb25hbGx5 LCBldmVuIGlmIHdlCi0JCQkgKiBkaWRuJ3Qgc2VlIFdMX0xBVENIX1NFVC4gIFRoaXMgZ2l2 ZXMgaGlnaCBwcmlvcml0eSB0byBzaHV0ZG93bgotCQkJICogYW5kIHJlbG9hZCByZXF1ZXN0 cyB3aGVyZSB0aGUgbGF0Y2ggaGFwcGVucyB0byBhcHBlYXIgbGF0ZXIgaW4KLQkJCSAqIGV2 ZW50c1tdIG9yIHdpbGwgYmUgcmVwb3J0ZWQgYnkgYSBsYXRlciBjYWxsIHRvCisJCQkgKiBk aWRuJ3Qgc2VlIFdMX0lOVEVSUlVQVC4gIFRoaXMgZ2l2ZXMgaGlnaCBwcmlvcml0eSB0byBz aHV0ZG93bgorCQkJICogYW5kIHJlbG9hZCByZXF1ZXN0cyB3aGVyZSB0aGUgaW50ZXJydXB0 IGV2ZW50IGhhcHBlbnMgdG8gYXBwZWFyCisJCQkgKiBsYXRlciBpbiBldmVudHNbXSBvciB3 aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bwogCQkJICogV2FpdEV2ZW50U2V0 V2FpdCgpLgogCQkJICovCiAJCQlpZiAocGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0KQpA QCAtMTk4NSw3ICsxOTg2LDcgQEAgc3RhdGljIHZvaWQKIGhhbmRsZV9wbV9wbXNpZ25hbF9z aWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVuZGluZ19wbV9wbXNpZ25hbCA9IHRydWU7Ci0J U2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FL RVVQKTsKIH0KIAogLyoKQEAgLTE5OTUsNyArMTk5Niw3IEBAIHN0YXRpYyB2b2lkCiBoYW5k bGVfcG1fcmVsb2FkX3JlcXVlc3Rfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdf cG1fcmVsb2FkX3JlcXVlc3QgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNl SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yMDcyLDcg KzIwNzMsNyBAQCBoYW5kbGVfcG1fc2h1dGRvd25fcmVxdWVzdF9zaWduYWwoU0lHTkFMX0FS R1MpCiAJCQlwZW5kaW5nX3BtX3NodXRkb3duX3JlcXVlc3QgPSB0cnVlOwogCQkJYnJlYWs7 CiAJfQotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9X QUlUX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yMjMzLDcgKzIyMzQsNyBAQCBzdGF0aWMgdm9p ZAogaGFuZGxlX3BtX2NoaWxkX2V4aXRfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRp bmdfcG1fY2hpbGRfZXhpdCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTIyNTksNiAr MjI2MCw3IEBAIHByb2Nlc3NfcG1fY2hpbGRfZXhpdCh2b2lkKQogCQkgKi8KIAkJaWYgKFN0 YXJ0dXBQTUNoaWxkICYmIHBpZCA9PSBTdGFydHVwUE1DaGlsZC0+cGlkKQogCQl7CisJCQll bG9nKExPRywgIlNUQVJUVVAgUFJPQyBFWElURUQiKTsKIAkJCVJlbGVhc2VQb3N0bWFzdGVy Q2hpbGRTbG90KFN0YXJ0dXBQTUNoaWxkKTsKIAkJCVN0YXJ0dXBQTUNoaWxkID0gTlVMTDsK IApAQCAtMjU4MSw2ICsyNTgzLDcgQEAgQ2xlYW51cEJhY2tlbmQoUE1DaGlsZCAqYnAsCiAJ Ym9vbAkJY3Jhc2hlZCA9IGZhbHNlOwogCWJvb2wJCWxvZ2dlZCA9IGZhbHNlOwogCXBpZF90 CQlicF9waWQ7CisJaW50CQkJYnBfY2hpbGRfc2xvdDsKIAlib29sCQlicF9iZ3dvcmtlcl9u b3RpZnk7CiAJQmFja2VuZFR5cGUgYnBfYmtlbmRfdHlwZTsKIAlSZWdpc3RlcmVkQmdXb3Jr ZXIgKnJ3OwpAQCAtMjYyOCw2ICsyNjMxLDcgQEAgQ2xlYW51cEJhY2tlbmQoUE1DaGlsZCAq YnAsCiAJICogZGV0YWNoZWQgY2xlYW5seS4KIAkgKi8KIAlicF9waWQgPSBicC0+cGlkOwor CWJwX2NoaWxkX3Nsb3QgPSBicC0+Y2hpbGRfc2xvdDsKIAlicF9iZ3dvcmtlcl9ub3RpZnkg PSBicC0+Ymd3b3JrZXJfbm90aWZ5OwogCWJwX2JrZW5kX3R5cGUgPSBicC0+YmtlbmRfdHlw ZTsKIAlydyA9IGJwLT5ydzsKQEAgLTI2NTUsMTQgKzI2NTksMTQgQEAgQ2xlYW51cEJhY2tl bmQoUE1DaGlsZCAqYnAsCiAJfQogCiAJLyoKLQkgKiBUaGlzIGJhY2tlbmQgbWF5IGhhdmUg YmVlbiBzbGF0ZWQgdG8gcmVjZWl2ZSBTSUdVU1IxIHdoZW4gc29tZQotCSAqIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0ZWQgb3Igc3RvcHBlZC4gIENhbmNlbCB0aG9zZSBub3RpZmljYXRp b25zLCBhcwotCSAqIHdlIGRvbid0IHdhbnQgdG8gc2lnbmFsIFBJRHMgdGhhdCBhcmUgbm90 IFBvc3RncmVTUUwgYmFja2VuZHMuICBUaGlzCisJICogVGhpcyBiYWNrZW5kIG1heSBoYXZl IGJlZW4gc2xhdGVkIHRvIHJlY2VpdmUgSU5URVJSVVBUX1dBSVRfV0FLRVVQIHdoZW4KKwkg KiBzb21lIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0ZWQgb3Igc3RvcHBlZC4gIENhbmNlbCB0 aG9zZSBub3RpZmljYXRpb25zLAorCSAqIGFzIHdlIGRvbid0IHdhbnQgdG8gc2lnbmFsIFBJ RHMgdGhhdCBhcmUgbm90IFBvc3RncmVTUUwgYmFja2VuZHMuICBUaGlzCiAJICogZ2V0cyBz a2lwcGVkIGluIHRoZSAocHJvYmFibHkgdmVyeSBjb21tb24pIGNhc2Ugd2hlcmUgdGhlIGJh Y2tlbmQgaGFzCiAJICogbmV2ZXIgcmVxdWVzdGVkIGFueSBzdWNoIG5vdGlmaWNhdGlvbnMu CiAJICovCiAJaWYgKGJwX2Jnd29ya2VyX25vdGlmeSkKLQkJQmFja2dyb3VuZFdvcmtlclN0 b3BOb3RpZmljYXRpb25zKGJwX3BpZCk7CisJCUJhY2tncm91bmRXb3JrZXJTdG9wTm90aWZp Y2F0aW9ucyhicF9jaGlsZF9zbG90KTsKIAogCS8qCiAJICogSWYgaXQgd2FzIGFuIGF1dG92 YWN1dW0gd29ya2VyLCB3YWtlIHVwIHRoZSBsYXVuY2hlciBzbyB0aGF0IGl0IGNhbgpAQCAt MzkyMSw3ICszOTI1LDcgQEAgcHJvY2Vzc19wbV9wbXNpZ25hbCh2b2lkKQogICogYnV0IHdl IGRvIHVzZSBpbiBiYWNrZW5kcy4gIElmIHdlIHdlcmUgdG8gU0lHX0lHTiBzdWNoIHNpZ25h bHMgaW4gdGhlCiAgKiBwb3N0bWFzdGVyLCB0aGVuIGEgbmV3bHkgc3RhcnRlZCBiYWNrZW5k IG1pZ2h0IGRyb3AgYSBzaWduYWwgdGhhdCBhcnJpdmVzCiAgKiBiZWZvcmUgaXQncyBhYmxl IHRvIHJlY29uZmlndXJlIGl0cyBzaWduYWwgcHJvY2Vzc2luZy4gIChTZWUgbm90ZXMgaW4K LSAqIHRjb3AvcG9zdGdyZXMuYy4pCisgKiB0Y29wL3Bvc3RncmVzLmMuKSBYWFg6IHdoZXJl IGFyZSB0aG9zZSBub3RlcyBub3c/CiAgKi8KIHN0YXRpYyB2b2lkCiBkdW1teV9oYW5kbGVy KFNJR05BTF9BUkdTKQpAQCAtNDI5NywxNSArNDMwMSwxNSBAQCBtYXliZV9zdGFydF9iZ3dv cmtlcnModm9pZCkKIAkJewogCQkJaWYgKHJ3LT5yd193b3JrZXIuYmd3X3Jlc3RhcnRfdGlt ZSA9PSBCR1dfTkVWRVJfUkVTVEFSVCkKIAkJCXsKLQkJCQlpbnQJCQlub3RpZnlfcGlkOwor CQkJCVByb2NOdW1iZXIJbm90aWZ5X3Byb2NfbnVtYmVyOwogCi0JCQkJbm90aWZ5X3BpZCA9 IHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQ7CisJCQkJbm90aWZ5X3Byb2NfbnVtYmVy ID0gR2V0Tm90aWZ5UHJvY051bWJlckZvclJlZ2lzdGVyZWRXb3JrZXIocncpOwogCiAJCQkJ Rm9yZ2V0QmFja2dyb3VuZFdvcmtlcihydyk7CiAKIAkJCQkvKiBSZXBvcnQgd29ya2VyIGlz IGdvbmUgbm93LiAqLwotCQkJCWlmIChub3RpZnlfcGlkICE9IDApCi0JCQkJCWtpbGwobm90 aWZ5X3BpZCwgU0lHVVNSMSk7CisJCQkJaWYgKG5vdGlmeV9wcm9jX251bWJlciAhPSBJTlZB TElEX1BST0NfTlVNQkVSKQorCQkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCwgbm90aWZ5X3Byb2NfbnVtYmVyKTsKIAogCQkJCWNvbnRpbnVlOwogCQkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwppbmRleCAzMzBjMTBkZGIwYi4uN2EwNWExYWQzMzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCkBAIC0yMiwxMiArMjIsMTUgQEAKICNp bmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3Zlcnku aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJs aWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25h bC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0 aWxzL2d1Yy5oIgpAQCAtMzgsMjEgKzQxLDE0IEBACiAjaWZuZGVmIFVTRV9QT1NUTUFTVEVS X0RFQVRIX1NJR05BTAogLyoKICAqIE9uIHN5c3RlbXMgdGhhdCBuZWVkIHRvIG1ha2UgYSBz eXN0ZW0gY2FsbCB0byBmaW5kIG91dCBpZiB0aGUgcG9zdG1hc3RlciBoYXMKLSAqIGdvbmUg YXdheSwgd2UnbGwgZG8gc28gb25seSBldmVyeSBOdGggY2FsbCB0byBQcm9jZXNzU3RhcnR1 cFByb2NJbnRlcnJ1cHRzKCkuCisgKiBnb25lIGF3YXksIHdlJ2xsIGRvIHNvIG9ubHkgZXZl cnkgTnRoIGNhbGwgdG8gU3RhcnR1cENoZWNrUG9zdG1hc3RlckRlYXRoKCkuCiAgKiBUaGlz IG9ubHkgYWZmZWN0cyBob3cgbG9uZyBpdCB0YWtlcyB1cyB0byBkZXRlY3QgdGhlIGNvbmRp dGlvbiB3aGlsZSB3ZSdyZQotICogYnVzeSByZXBsYXlpbmcgV0FMLiAgTGF0Y2ggd2FpdHMg YW5kIHNpbWlsYXIgd2hpY2ggc2hvdWxkIHJlYWN0IGltbWVkaWF0ZWx5CisgKiBidXN5IHJl cGxheWluZyBXQUwuICBJbnRlcnJ1cHQgd2FpdHMgYW5kIHNpbWlsYXIgc2hvdWxkIHJlYWN0 IGltbWVkaWF0ZWx5CiAgKiB0aHJvdWdoIHRoZSB1c3VhbCB0ZWNobmlxdWVzLgogICovCiAj ZGVmaW5lIFBPU1RNQVNURVJfUE9MTF9SQVRFX0xJTUlUIDEwMjQKICNlbmRpZgogCi0vKgot ICogRmxhZ3Mgc2V0IGJ5IGludGVycnVwdCBoYW5kbGVycyBmb3IgbGF0ZXIgc2VydmljZSBp biB0aGUgcmVkbyBsb29wLgotICovCi1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdv dF9TSUdIVVAgPSBmYWxzZTsKLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc2h1dGRv d25fcmVxdWVzdGVkID0gZmFsc2U7Ci1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHBy b21vdGVfc2lnbmFsZWQgPSBmYWxzZTsKLQogLyoKICAqIEZsYWcgc2V0IHdoZW4gZXhlY3V0 aW5nIGEgcmVzdG9yZSBjb21tYW5kLCB0byB0ZWxsIFNJR1RFUk0gc2lnbmFsIGhhbmRsZXIK ICAqIHRoYXQgaXQncyBzYWZlIHRvIGp1c3QgcHJvY19leGl0LgpAQCAtNzcsNyArNzMsNyBA QCBpbnQJCQlsb2dfc3RhcnR1cF9wcm9ncmVzc19pbnRlcnZhbCA9IDEwMDAwOwkvKiAxMCBz ZWMgKi8KIAogLyogU2lnbmFsIGhhbmRsZXJzICovCiBzdGF0aWMgdm9pZCBTdGFydHVwUHJv Y1RyaWdnZXJIYW5kbGVyKFNJR05BTF9BUkdTKTsKLXN0YXRpYyB2b2lkIFN0YXJ0dXBQcm9j U2lnSHVwSGFuZGxlcihTSUdOQUxfQVJHUyk7CitzdGF0aWMgdm9pZCBTdGFydHVwUHJvY1No dXRkb3duSGFuZGxlcihTSUdOQUxfQVJHUyk7CiAKIC8qIENhbGxiYWNrcyAqLwogc3RhdGlj IHZvaWQgU3RhcnR1cFByb2NFeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwpAQCAtOTIsMTYg Kzg4LDEyIEBAIHN0YXRpYyB2b2lkIFN0YXJ0dXBQcm9jRXhpdChpbnQgY29kZSwgRGF0dW0g YXJnKTsKIHN0YXRpYyB2b2lkCiBTdGFydHVwUHJvY1RyaWdnZXJIYW5kbGVyKFNJR05BTF9B UkdTKQogewotCXByb21vdGVfc2lnbmFsZWQgPSB0cnVlOwotCVdha2V1cFJlY292ZXJ5KCk7 Ci19Ci0KLS8qIFNJR0hVUDogc2V0IGZsYWcgdG8gcmUtcmVhZCBjb25maWcgZmlsZSBhdCBu ZXh0IGNvbnZlbmllbnQgdGltZSAqLwotc3RhdGljIHZvaWQKLVN0YXJ0dXBQcm9jU2lnSHVw SGFuZGxlcihTSUdOQUxfQVJHUykKLXsKLQlnb3RfU0lHSFVQID0gdHJ1ZTsKLQlXYWtldXBS ZWNvdmVyeSgpOworCS8qCisJICogVGhlIElOVEVSUlVQVF9DSEVDS19QUk9NT1RFIGZsYWcg aGludHMgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byBjaGVjaworCSAqIGZvciB0aGUgc2lnbmFs IGZpbGUsIHdoaWxlIElOVEVSUlVQVF9XQUxfQVJSSVZFRCB3YWtlcyB1cCB0aGUKKwkgKiBw cm9jZXNzIGZyb20gc2xlZXAuCisJICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NI RUNLX1BST01PVEUgfCBJTlRFUlJVUFRfV0FMX0FSUklWRUQpOwogfQogCiAvKiBTSUdURVJN OiBzZXQgZmxhZyB0byBhYm9ydCByZWRvIGFuZCBleGl0ICovCkBAIC0xMTEsOCArMTAzLDE2 IEBAIFN0YXJ0dXBQcm9jU2h1dGRvd25IYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChpbl9y ZXN0b3JlX2NvbW1hbmQpCiAJCXByb2NfZXhpdCgxKTsKIAllbHNlCi0JCXNodXRkb3duX3Jl cXVlc3RlZCA9IHRydWU7Ci0JV2FrZXVwUmVjb3ZlcnkoKTsKKwkJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX1RFUk1JTkFURSk7Cit9CisKKy8qIFByb2Nlc3MgdmFyaW91cyBpbnRlcnJ1 cHRzIHRoYXQgbWlnaHQgYmUgc2VudCB0byB0aGUgc3RhcnR1cCBwcm9jZXNzICovCisKK3N0 YXRpYyB2b2lkCitQcm9jZXNzU3RhcnR1cFByb2NUZXJtaW5hdGVJbnRlcnJ1cHQodm9pZCkK K3sKKwkvKiB3ZSB3ZXJlIHJlcXVlc3RlZCB0byBleGl0IHdpdGhvdXQgZmluaXNoaW5nIHJl Y292ZXJ5LiAqLworCXByb2NfZXhpdCgxKTsKIH0KIAogLyoKQEAgLTEyMiw3ICsxMjIsOCBA QCBTdGFydHVwUHJvY1NodXRkb3duSGFuZGxlcihTSUdOQUxfQVJHUykKICAqIHRvIHJlc3Rh cnQgaXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1TdGFydHVwUmVyZWFkQ29uZmlnKHZvaWQpCitQ cm9jZXNzU3RhcnR1cFByb2NDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKKwogewogCWNo YXIJICAgKmNvbm5pbmZvID0gcHN0cmR1cChQcmltYXJ5Q29ubkluZm8pOwogCWNoYXIJICAg KnNsb3RuYW1lID0gcHN0cmR1cChQcmltYXJ5U2xvdE5hbWUpOwpAQCAtMTQ5LDI5ICsxNTAs MTMgQEAgU3RhcnR1cFJlcmVhZENvbmZpZyh2b2lkKQogCQlTdGFydHVwUmVxdWVzdFdhbFJl Y2VpdmVyUmVzdGFydCgpOwogfQogCi0vKiBQcm9jZXNzIHZhcmlvdXMgc2lnbmFscyB0aGF0 IG1pZ2h0IGJlIHNlbnQgdG8gdGhlIHN0YXJ0dXAgcHJvY2VzcyAqLwogdm9pZAotUHJvY2Vz c1N0YXJ0dXBQcm9jSW50ZXJydXB0cyh2b2lkKQorU3RhcnR1cFByb2NDaGVja1Bvc3RtYXN0 ZXJEZWF0aCh2b2lkKQogewogI2lmZGVmIFBPU1RNQVNURVJfUE9MTF9SQVRFX0xJTUlUCiAJ c3RhdGljIHVpbnQzMiBwb3N0bWFzdGVyX3BvbGxfY291bnQgPSAwOwogI2VuZGlmCiAKLQkv KgotCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50 bHkuCi0JICovCi0JaWYgKGdvdF9TSUdIVVApCi0JewotCQlnb3RfU0lHSFVQID0gZmFsc2U7 Ci0JCVN0YXJ0dXBSZXJlYWRDb25maWcoKTsKLQl9Ci0KLQkvKgotCSAqIENoZWNrIGlmIHdl IHdlcmUgcmVxdWVzdGVkIHRvIGV4aXQgd2l0aG91dCBmaW5pc2hpbmcgcmVjb3ZlcnkuCi0J ICovCi0JaWYgKHNodXRkb3duX3JlcXVlc3RlZCkKLQkJcHJvY19leGl0KDEpOwotCiAJLyoK IAkgKiBFbWVyZ2VuY3kgYmFpbG91dCBpZiBwb3N0bWFzdGVyIGhhcyBkaWVkLiAgVGhpcyBp cyB0byBhdm9pZCB0aGUKIAkgKiBuZWNlc3NpdHkgZm9yIG1hbnVhbCBjbGVhbnVwIG9mIGFs bCBwb3N0bWFzdGVyIGNoaWxkcmVuLiAgRG8gdGhpcyBsZXNzCkBAIC0xODQsMTQgKzE2OSw2 IEBAIFByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHModm9pZCkKICNlbmRpZgogCQkhUG9z dG1hc3RlcklzQWxpdmUoKSkKIAkJZXhpdCgxKTsKLQotCS8qIFByb2Nlc3MgYmFycmllciBl dmVudHMgKi8KLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJv Y1NpZ25hbEJhcnJpZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29u dGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5n KQotCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCiAKQEAgLTIy NSwxNSArMjAyLDEzIEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qCiAJICogUHJvcGVybHkgYWNj ZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRoZSBwb3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMuCiAJ ICovCi0JcHFzaWduYWwoU0lHSFVQLCBTdGFydHVwUHJvY1NpZ0h1cEhhbmRsZXIpOyAvKiBy ZWxvYWQgY29uZmlnIGZpbGUgKi8KLQlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwkvKiBp Z25vcmUgcXVlcnkgY2FuY2VsICovCisKKwkvKiBvdmVycmlkZSBTSUdURVJNIGJlY2F1c2Ug d2UgbmVlZCBhIGxpdHRsZSBtb3JlIGNvbXBsaWNhdGVkIGhhbmRsaW5nICovCiAJcHFzaWdu YWwoU0lHVEVSTSwgU3RhcnR1cFByb2NTaHV0ZG93bkhhbmRsZXIpOwkvKiByZXF1ZXN0IHNo dXRkb3duICovCi0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJ bml0UG9zdG1hc3RlckNoaWxkICovCi0JSW5pdGlhbGl6ZVRpbWVvdXRzKCk7CQkvKiBlc3Rh Ymxpc2hlcyBTSUdBTFJNIGhhbmRsZXIgKi8KLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdO KTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJ cHFzaWduYWwoU0lHVVNSMiwgU3RhcnR1cFByb2NUcmlnZ2VySGFuZGxlcik7CiAKKwlJbml0 aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwor CiAJLyoKIAkgKiBSZWdpc3RlciB0aW1lb3V0cyBuZWVkZWQgZm9yIHN0YW5kYnkgbW9kZQog CSAqLwpAQCAtMjQxLDYgKzIxNiwxMyBAQCBTdGFydHVwUHJvY2Vzc01haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlSZWdpc3RlclRp bWVvdXQoU1RBTkRCWV9USU1FT1VULCBTdGFuZGJ5VGltZW91dEhhbmRsZXIpOwogCVJlZ2lz dGVyVGltZW91dChTVEFOREJZX0xPQ0tfVElNRU9VVCwgU3RhbmRieUxvY2tUaW1lb3V0SGFu ZGxlcik7CiAKKwkvKiBPbmx5IHNldCB1cCBhIHN1YnNldCBvZiB0aGUgc3RhbmRhcmQgaW50 ZXJydXB0IGhhbmRsZXJzICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOwor CVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RFUk1JTkFURSwgUHJvY2Vzc1N0YXJ0 dXBQcm9jVGVybWluYXRlSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBU X1RFUk1JTkFURSk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09ORklHX1JF TE9BRCwgUHJvY2Vzc1N0YXJ0dXBQcm9jQ29uZmlnUmVsb2FkSW50ZXJydXB0KTsKKwlFbmFi bGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOworCiAJLyoKIAkgKiBVbmJs b2NrIHNpZ25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0ZXIgZm9y a2VkIHVzKQogCSAqLwpAQCAtMjY4LDcgKzI1MCw3IEBAIFByZVJlc3RvcmVDb21tYW5kKHZv aWQpCiAJICogc2h1dGRvd24gcmVxdWVzdCByZWNlaXZlZCBqdXN0IGJlZm9yZSB0aGlzLgog CSAqLwogCWluX3Jlc3RvcmVfY29tbWFuZCA9IHRydWU7Ci0JaWYgKHNodXRkb3duX3JlcXVl c3RlZCkKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAkJ cHJvY19leGl0KDEpOwogfQogCkBAIC0yNzgsMTggKzI2MCw2IEBAIFBvc3RSZXN0b3JlQ29t bWFuZCh2b2lkKQogCWluX3Jlc3RvcmVfY29tbWFuZCA9IGZhbHNlOwogfQogCi1ib29sCi1J c1Byb21vdGVTaWduYWxlZCh2b2lkKQotewotCXJldHVybiBwcm9tb3RlX3NpZ25hbGVkOwot fQotCi12b2lkCi1SZXNldFByb21vdGVTaWduYWxlZCh2b2lkKQotewotCXByb21vdGVfc2ln bmFsZWQgPSBmYWxzZTsKLX0KLQogLyoKICAqIFNldCBhIGZsYWcgaW5kaWNhdGluZyB0aGF0 IGl0J3MgdGltZSB0byBsb2cgYSBwcm9ncmVzcyByZXBvcnQuCiAgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3N5c2xvZ2dlci5jCmluZGV4IDg1MTViZmI5NjUzLi5jOWZhYTc2YjZhOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCkBAIC0zMiw2ICszMiw4IEBACiAjaW5j bHVkZSA8c3lzL3RpbWUuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVy cy5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvcHFz aWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTM5LDEzICs0MSwxMSBAQAog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBndGltZS5oIgogI2luY2x1ZGUgInBv cnQvcGdfYml0dXRpbHMuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9kc20uaCIKICNpbmNsdWRlICJz dG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUg InRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTI3MiwxNiAr MjcyLDE0IEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKiB1cHN0cmVhbSBwcm9jZXNzZXMgYXJlIGdvbmUs IHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGFueSBkeWluZyBnYXNwcyBvZgogCSAqIGJyb2tl biBiYWNrZW5kcy4uLgogCSAqLwotCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVy Rm9yQ29uZmlnUmVsb2FkKTsgLyogc2V0IGZsYWcgdG8gcmVhZCBjb25maWcKLQkJCQkJCQkJ CQkJCQkgKiBmaWxlICovCiAJcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsKIAlwcXNpZ25h bChTSUdURVJNLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdRVUlULCBTSUdfSUdOKTsKLQlw cXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdO KTsKKwogCXBxc2lnbmFsKFNJR1VTUjEsIHNpZ1VzcjFIYW5kbGVyKTsJLyogcmVxdWVzdCBs b2cgcm90YXRpb24gKi8KLQlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKKworCVNldFN0 YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQ VF9URVJNSU5BVEUpOwogCiAJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZVbkJsb2NrU2ln LCBOVUxMKTsKIApAQCAtMzIyLDcgKzMyMCw3IEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAl3aGVyZVRvU2Vu ZE91dHB1dCA9IERlc3ROb25lOwogCiAJLyoKLQkgKiBTZXQgdXAgYSByZXVzYWJsZSBXYWl0 RXZlbnRTZXQgb2JqZWN0IHdlJ2xsIHVzZSB0byB3YWl0IGZvciBvdXIgbGF0Y2gsCisJICog U2V0IHVwIGEgcmV1c2FibGUgV2FpdEV2ZW50U2V0IG9iamVjdCB3ZSdsbCB1c2UgdG8gd2Fp dCBmb3IgaW50ZXJydXB0cywKIAkgKiBhbmQgKGV4Y2VwdCBvbiBXaW5kb3dzKSBvdXIgc29j a2V0LgogCSAqCiAJICogVW5saWtlIGFsbCBvdGhlciBwb3N0bWFzdGVyIGNoaWxkIHByb2Nl c3Nlcywgd2UnbGwgaWdub3JlIHBvc3RtYXN0ZXIKQEAgLTMzMiw5ICszMzAsMTIgQEAgU3lz TG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2Rh dGFfbGVuKQogCSAqIChpbmNsdWRpbmcgdGhlIHBvc3RtYXN0ZXIpLgogCSAqLwogCXdlcyA9 IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsKLQlBZGRXYWl0RXZlbnRUb1NldCh3ZXMs IFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwgTXlMYXRjaCwgTlVMTCk7CisJQWRk V2FpdEV2ZW50VG9TZXQod2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJ CQkJCSAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkgIElOVEVSUlVQVF9XQUlU X1dBS0VVUCwJLyogZm9yIGxvZyByb3RhdGlvbiAqLworCQkJCQkgIE5VTEwpOwogI2lmbmRl ZiBXSU4zMgotCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBz eXNsb2dQaXBlWzBdLCBOVUxMLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRUb1NldCh3ZXMsIFdM X1NPQ0tFVF9SRUFEQUJMRSwgc3lzbG9nUGlwZVswXSwgMCwgTlVMTCk7CiAjZW5kaWYKIAog CS8qIG1haW4gd29ya2VyIGxvb3AgKi8KQEAgLTM1MCwxNCArMzUxLDEzIEBAIFN5c0xvZ2dl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKICNlbmRpZgogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAq LwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOwogCiAJCS8qCiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNp Z25hbHMgcmVjZWl2ZWQgcmVjZW50bHkuCiAJCSAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVu ZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQp KQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCQkJLyoKQEAgLTExODIsNyArMTE4Miw3IEBAIHBp cGVUaHJlYWQodm9pZCAqYXJnKQogCQkJCSBmdGVsbG8oY3N2bG9nRmlsZSkgPj0gTG9nX1Jv dGF0aW9uU2l6ZSAqIChwZ29mZl90KSAxMDI0KSB8fAogCQkJCShqc29ubG9nRmlsZSAhPSBO VUxMICYmCiAJCQkJIGZ0ZWxsbyhqc29ubG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAq IChwZ29mZl90KSAxMDI0KSkKLQkJCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCQlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQl9CiAJCUxlYXZlQ3JpdGljYWxT ZWN0aW9uKCZzeXNsb2dnZXJTZWN0aW9uKTsKIAl9CkBAIC0xMTkzLDggKzExOTMsOCBAQCBw aXBlVGhyZWFkKHZvaWQgKmFyZykKIAkvKiBpZiB0aGVyZSdzIGFueSBkYXRhIGxlZnQgdGhl biBmb3JjZSBpdCBvdXQgbm93ICovCiAJZmx1c2hfcGlwZV9pbnB1dChsb2didWZmZXIsICZi eXRlc19pbl9sb2didWZmZXIpOwogCi0JLyogc2V0IHRoZSBsYXRjaCB0byB3YWtlbiB0aGUg bWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAqLwotCVNldExhdGNoKE15TGF0Y2gpOwor CS8qIHJhaXNlIHRoZSBpbnRlcnJ1cHQgdG8gd2FrZW4gdGhlIG1haW4gdGhyZWFkLCB3aGlj aCB3aWxsIHF1aXQgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OwogCiAJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24pOwogCV9lbmR0 aHJlYWQoKTsKQEAgLTE1ODUsOSArMTU4NSwxMCBAQCBSZW1vdmVMb2dyb3RhdGVTaWduYWxG aWxlcyh2b2lkKQogfQogCiAvKiBTSUdVU1IxOiBzZXQgZmxhZyB0byByb3RhdGUgbG9nZmls ZSAqLworLyogIFRPRE86IFVzZSBhbiBpbnRlcnJ1cHQgZmxhZyBmb3IgdGhpcyAqLwogc3Rh dGljIHZvaWQKIHNpZ1VzcjFIYW5kbGVyKFNJR05BTF9BUkdTKQogewogCXJvdGF0aW9uX3Jl cXVlc3RlZCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxz dW1tYXJpemVyLmMKaW5kZXggNGU0ZWVkNGQwNzYuLmQ4Yzc1NGFkMjgwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtMzEsMTcgKzMxLDE3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hsb2cuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k YmNvbW1hbmRzX3hsb2cuaCIKICNpbmNsdWRlICJjb21tb24vYmxrcmVmdGFibGUuaCIKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVy cy5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9j ZXNzLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJw b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAt MTQ2LDcgKzE0Niw3IEBAIGludAkJCXdhbF9zdW1tYXJ5X2tlZXBfdGltZSA9IDEwICogSE9V UlNfUEVSX0RBWSAqIE1JTlNfUEVSX0hPVVI7CiAKIHN0YXRpYyB2b2lkIFdhbFN1bW1hcml6 ZXJTaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyBYTG9nUmVjUHRyIEdl dExhdGVzdExTTihUaW1lTGluZUlEICp0bGkpOwotc3RhdGljIHZvaWQgUHJvY2Vzc1dhbFN1 bW1hcml6ZXJJbnRlcnJ1cHRzKHZvaWQpOworc3RhdGljIHZvaWQgUHJvY2Vzc1dhbFN1bW1h cml6ZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCk7CiBzdGF0aWMgWExvZ1JlY1B0ciBT dW1tYXJpemVXQUwoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgc3RhcnRfbHNuLAogCQkJ CQkJCSAgIGJvb2wgZXhhY3QsIFhMb2dSZWNQdHIgc3dpdGNoX2xzbiwKIAkJCQkJCQkgICBY TG9nUmVjUHRyIG1heGltdW1fbHNuKTsKQEAgLTI0MCwxNiArMjQwLDE1IEBAIFdhbFN1bW1h cml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJCQkoZXJybXNnX2ludGVybmFsKCJXQUwgc3VtbWFyaXplciBzdGFydGVkIikp KTsKIAogCS8qCi0JICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRoZSBw b3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMKKwkgKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJz CiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKLQlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwkvKiBubyBxdWVyeSB0byBjYW5jZWwg Ki8KLQlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0 KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0 bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKLQlwcXNpZ25h bChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3Np Z3VzcjFfaGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7IC8qIG5vdCB1 c2VkICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCisJLyogd2UgY2Fu IGp1c3QgcHJvY19leGl0KDApIGF0IGFueSBwb2ludCBpZiByZXF1ZXN0ZWQgdG8gdGVybWlu YXRlICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfVEVSTUlOQVRFLCBQcm9j ZXNzQXV4UHJvY2Vzc1NodXRkb3duSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5U RVJSVVBUX1RFUk1JTkFURSk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCwgUHJvY2Vzc1dhbFN1bW1hcml6ZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQp OworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CiAKIAkvKiBB ZHZlcnRpc2Ugb3Vyc2VsdmVzLiAqLwogCW9uX3NobWVtX2V4aXQoV2FsU3VtbWFyaXplclNo dXRkb3duLCAoRGF0dW0pIDApOwpAQCAtMzA5LDEwICszMDgsOCBAQCBXYWxTdW1tYXJpemVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCQkgKiBTbyBhIHJlYWxseSBmYXN0IHJldHJ5IHRpbWUgZG9lc24ndCBzZWVtIHRvIGJl IGVzcGVjaWFsbHkKIAkJICogYmVuZWZpY2lhbCwgYW5kIGl0IHdpbGwgY2x1dHRlciB0aGUg bG9ncy4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTlVMTCwKLQkJCQkJCSBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMDAwMCwKLQkJCQkJCSBXQUlU X0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo MCwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDEwMDAwLAorCQkJCQkJCSBX QUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKIAl9CiAKIAkvKiBXZSBjYW4gbm93 IGhhbmRsZSBlcmVwb3J0KEVSUk9SKSAqLwpAQCAtMzQ5LDcgKzM0Niw3IEBAIFdhbFN1bW1h cml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJCU1lbW9yeUNvbnRleHRSZXNldChjb250ZXh0KTsKIAogCQkvKiBQcm9jZXNz IGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5LiAqLwotCQlQcm9jZXNzV2FsU3VtbWFy aXplckludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiBJ ZiBpdCdzIHRpbWUgdG8gcmVtb3ZlIGFueSBvbGQgV0FMIHN1bW1hcmllcywgZG8gdGhhdCBu b3cuICovCiAJCU1heWJlUmVtb3ZlT2xkV2FsU3VtbWFyaWVzKCk7CkBAIC02MjQsOCArNjIx LDggQEAgR2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKFRpbWVMaW5lSUQgKnRsaSwgYm9vbCAq bHNuX2lzX2V4YWN0KQogICoKICAqIFRoaXMgbWlnaHQgbm90IHdvcmssIGJlY2F1c2UgdGhl cmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGUgV0FMIHN1bW1hcml6ZXIKICAqIHByb2Nlc3Mg d2FzIHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBhbmQgaXQgYWxzbyBtaWdodCBoYXZlIHN0YXJ0 ZWQgYnV0Ci0gKiBzdWJzZXF1ZW50bHkgdGVybWluYXRlZC4gU28sIHVuZGVyIG5vcm1hbCBj aXJjdW1zdGFuY2VzLCB0aGlzIHdpbGwgZ2V0IHRoZQotICogbGF0Y2ggc2V0LCBidXQgdGhl cmUncyBubyBndWFyYW50ZWUuCisgKiBzdWJzZXF1ZW50bHkgdGVybWluYXRlZC4gU28sIHVu ZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCB0aGlzIHdpbGwgc2VuZAorICogdGhlIGludGVy cnVwdCwgYnV0IHRoZXJlJ3Mgbm8gZ3VhcmFudGVlLgogICovCiB2b2lkCiBXYWtldXBXYWxT dW1tYXJpemVyKHZvaWQpCkBAIC02NDAsNyArNjM3LDcgQEAgV2FrZXVwV2FsU3VtbWFyaXpl cih2b2lkKQogCUxXTG9ja1JlbGVhc2UoV0FMU3VtbWFyaXplckxvY2spOwogCiAJaWYgKHBn cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNoKCZHZXRQR1Byb2NC eU51bWJlcihwZ3Byb2NubyktPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX1dBSVRfV0FLRVVQLCBwZ3Byb2Nubyk7CiB9CiAKIC8qCkBAIC04NDksMjcgKzg0Niwx NyBAQCBHZXRMYXRlc3RMU04oVGltZUxpbmVJRCAqdGxpKQogICogSW50ZXJydXB0IGhhbmRs ZXIgZm9yIG1haW4gbG9vcCBvZiBXQUwgc3VtbWFyaXplciBwcm9jZXNzLgogICovCiBzdGF0 aWMgdm9pZAotUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKHZvaWQpCitQcm9jZXNz V2FsU3VtbWFyaXplckNvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQogewotCWlmIChQcm9j U2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwot Ci0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdSZWxvYWRQZW5kaW5n ID0gZmFsc2U7Ci0JCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCX0KKwlQcm9j ZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAotCWlmIChTaHV0ZG93blJlcXVlc3RQZW5k aW5nIHx8ICFzdW1tYXJpemVfd2FsKQorCS8qIElmICdzdW1tYXJpemVfd2FsJyB3YXMgdHVy bmVkIG9mZiwgZXhpdCAqLworCWlmICghc3VtbWFyaXplX3dhbCAmJiAhSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAl7CiAJCWVyZXBvcnQoREVCVUcxLAotCQkJ CWVycm1zZ19pbnRlcm5hbCgiV0FMIHN1bW1hcml6ZXIgc2h1dHRpbmcgZG93biIpKTsKLQkJ cHJvY19leGl0KDApOworCQkJCWVycm1zZ19pbnRlcm5hbCgiV0FMIHN1bW1hcml6ZXIgc2h1 dHRpbmcgZG93biBiZWNhdXNlIHN1bW1hcml6ZV93YWwgd2FzIGRpc2FibGVkIikpOworCQlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKIAl9Ci0KLQkvKiBQZXJmb3Jt IGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJvY2VzcyAqLwotCWlmIChM b2dNZW1vcnlDb250ZXh0UGVuZGluZykKLQkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRl cnJ1cHQoKTsKIH0KIAogLyoKQEAgLTEwMDgsNyArOTk1LDcgQEAgU3VtbWFyaXplV0FMKFRp bWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAkJWExv Z1JlY29yZCAqcmVjb3JkOwogCQl1aW50OAkJcm1pZDsKIAotCQlQcm9jZXNzV2FsU3VtbWFy aXplckludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiBX ZSBzaG91bGRuJ3QgZ28gYmFja3dhcmQuICovCiAJCUFzc2VydChzdW1tYXJ5X3N0YXJ0X2xz biA8PSB4bG9ncmVhZGVyLT5FbmRSZWNQdHIpOwpAQCAtMTQ5NSw3ICsxNDgyLDcgQEAgc3Vt bWFyaXplcl9yZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLAog CVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCVN1bW1hcml6ZXJSZWFkTG9jYWxYTG9nUHJpdmF0 ZSAqcHJpdmF0ZV9kYXRhOwogCi0JUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKCk7 CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCXByaXZhdGVfZGF0YSA9IChTdW1tYXJp emVyUmVhZExvY2FsWExvZ1ByaXZhdGUgKikKIAkJc3RhdGUtPnByaXZhdGVfZGF0YTsKQEAg LTE1MzMsNyArMTUyMCw3IEBAIHN1bW1hcml6ZXJfcmVhZF9sb2NhbF94bG9nX3BhZ2UoWExv Z1JlYWRlclN0YXRlICpzdGF0ZSwKIAkJCQkgKiBjdXJyZW50IHRpbWVsaW5lLCBzbyBtb3Jl IGRhdGEgbWlnaHQgc2hvdyB1cC4gIERlbGF5IGhlcmUKIAkJCQkgKiBzbyB3ZSBkb24ndCB0 aWdodC1sb29wLgogCQkJCSAqLwotCQkJCVByb2Nlc3NXYWxTdW1tYXJpemVySW50ZXJydXB0 cygpOworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQkJc3VtbWFyaXplcl93YWl0 X2Zvcl93YWwoKTsKIAogCQkJCS8qIFJlY2hlY2sgZW5kLW9mLVdBTC4gKi8KQEAgLTE2MzMs MTEgKzE2MjAsMTUgQEAgc3VtbWFyaXplcl93YWl0X2Zvcl93YWwodm9pZCkKIAlwZ3N0YXRf cmVwb3J0X3dhbChmYWxzZSk7CiAKIAkvKiBPSywgbm93IHNsZWVwLiAqLwotCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQ X1FVQU5UVU0sCi0JCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7Ci0JUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJ VF9XQUtFVVAgfAorCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJIElOVEVS UlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCSBJTlRFUlJVUFRfQkFSUklFUiB8CisJCQkJ CQkgSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCwKKwkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSBzbGVlcF9xdWFu dGEgKiBNU19QRVJfU0xFRVBfUVVBTlRVTSwKKwkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1N QVJJWkVSX1dBTCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsK IAogCS8qIFJlc2V0IGNvdW50IG9mIHBhZ2VzIHJlYWQuICovCiAJcGFnZXNfcmVhZF9zaW5j ZV9sYXN0X3NsZWVwID0gMDsKQEAgLTE2ODQsNyArMTY3NSw3IEBAIE1heWJlUmVtb3ZlT2xk V2FsU3VtbWFyaWVzKHZvaWQpCiAJCVhMb2dSZWNQdHIJb2xkZXN0X2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwogCQlUaW1lTGluZUlECXNlbGVjdGVkX3RsaTsKIAotCQlQcm9jZXNzV2Fs U3VtbWFyaXplckludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAog CQkvKgogCQkgKiBQaWNrIGEgdGltZWxpbmUgZm9yIHdoaWNoIHNvbWUgc3VtbWFyeSBmaWxl cyBzdGlsbCBleGlzdCBvbiBkaXNrLApAQCAtMTcwMyw3ICsxNjk0LDcgQEAgTWF5YmVSZW1v dmVPbGRXYWxTdW1tYXJpZXModm9pZCkKIAkJewogCQkJV2FsU3VtbWFyeUZpbGUgKndzID0g bGZpcnN0KGxjKTsKIAotCQkJUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKCk7CisJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkvKiBJZiBpdCdzIG5vdCBvbiB0aGlz IHRpbWVsaW5lLCBpdCdzIG5vdCB0aW1lIHRvIGNvbnNpZGVyIGl0LiAqLwogCQkJaWYgKHNl bGVjdGVkX3RsaSAhPSB3cy0+dGxpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci93YWx3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMK aW5kZXggMTg1MTQxN2FkMWIuLjkzZGZjOThjYzM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsd3JpdGVyLmMKQEAgLTQ1LDExICs0NSwxMiBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgog CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL3Bx c2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCi0jaW5jbHVkZSAicG9zdG1h c3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm bWdyLmgiCkBAIC05NywxNiArOTgsMTQgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCUF1eGlsaWFyeVByb2Nl c3NNYWluQ29tbW9uKCk7CiAKIAkvKgotCSAqIFByb3Blcmx5IGFjY2VwdCBvciBpZ25vcmUg c2lnbmFscyB0aGUgcG9zdG1hc3RlciBtaWdodCBzZW5kIHVzCisJICogU2V0IHVwIGludGVy cnVwdCBoYW5kbGVycwogCSAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZv ckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsJLyogbm8gcXVl cnkgdG8gY2FuY2VsICovCi0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNo dXRkb3duUmVxdWVzdCk7Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1 cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lH Tik7Ci0JcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwg cHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19J R04pOyAvKiBub3QgdXNlZCAqLworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsK KworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CisJLyogd2Ug Y2FuIGp1c3QgcHJvY19leGl0KDApIGF0IGFueSBwb2ludCBpZiByZXF1ZXN0ZWQgdG8gdGVy bWluYXRlICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfVEVSTUlOQVRFLCBQ cm9jZXNzQXV4UHJvY2Vzc1NodXRkb3duSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQo SU5URVJSVVBUX1RFUk1JTkFURSk7CiAKIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250 ZXh0IHRoYXQgd2Ugd2lsbCBkbyBhbGwgb3VyIHdvcmsgaW4uICBXZSBkbyB0aGlzIHNvCkBA IC0yMDksMTIgKzIwOCwxMiBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyoKIAkJICogQWR2ZXJ0aXNl IHdoZXRoZXIgd2UgbWlnaHQgaGliZXJuYXRlIGluIHRoaXMgY3ljbGUuICBXZSBkbyB0aGlz Ci0JCSAqIGJlZm9yZSByZXNldHRpbmcgdGhlIGxhdGNoIHRvIGVuc3VyZSB0aGF0IGFueSBh c3luYyBjb21taXRzIHdpbGwKLQkJICogc2VlIHRoZSBmbGFnIHNldCBpZiB0aGV5IG1pZ2h0 IHBvc3NpYmx5IG5lZWQgdG8gd2FrZSB1cyB1cCwgYW5kCi0JCSAqIHRoYXQgd2Ugd29uJ3Qg bWlzcyBhbnkgc2lnbmFsIHRoZXkgc2VuZCB1cy4gIChJZiB3ZSBkaXNjb3ZlciB3b3JrCi0J CSAqIHRvIGRvIGluIHRoZSBsYXN0IGN5Y2xlIGJlZm9yZSB3ZSB3b3VsZCBoaWJlcm5hdGUs IHRoZSBnbG9iYWwgZmxhZwotCQkgKiB3aWxsIGJlIHNldCB1bm5lY2Vzc2FyaWx5LCBidXQg bGl0dGxlIGhhcm0gaXMgZG9uZS4pICBCdXQgYXZvaWQKLQkJICogdG91Y2hpbmcgdGhlIGds b2JhbCBmbGFnIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UuCisJCSAqIGJlZm9yZSBj bGVhcmluZyB0aGUgaW50ZXJydXB0IGZsYWcgdG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNv bW1pdHMKKwkJICogd2lsbCBzZWUgdGhlIGZsYWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2li bHkgbmVlZCB0byB3YWtlIHVzIHVwLAorCQkgKiBhbmQgdGhhdCB3ZSB3b24ndCBtaXNzIGFu eSBzaWduYWwgdGhleSBzZW5kIHVzLiAgKElmIHdlIGRpc2NvdmVyCisJCSAqIHdvcmsgdG8g ZG8gaW4gdGhlIGxhc3QgY3ljbGUgYmVmb3JlIHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGds b2JhbAorCQkgKiBmbGFnIHdpbGwgYmUgc2V0IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUg aGFybSBpcyBkb25lLikgIEJ1dAorCQkgKiBhdm9pZCB0b3VjaGluZyB0aGUgZ2xvYmFsIGZs YWcgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KIAkJICovCiAJCWlmIChoaWJlcm5h dGluZyAhPSAobGVmdF90aWxsX2hpYmVybmF0ZSA8PSAxKSkKIAkJewpAQCAtMjIyLDExICsy MjEsMTAgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVf dCBzdGFydHVwX2RhdGFfbGVuKQogCQkJU2V0V2FsV3JpdGVyU2xlZXBpbmcoaGliZXJuYXRp bmcpOwogCQl9CiAKLQkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICov Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9X QUlUX1dBS0VVUCk7CiAKLQkJLyogUHJvY2VzcyBhbnkgc2lnbmFscyByZWNlaXZlZCByZWNl bnRseSAqLwotCQlQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzKCk7CisJCS8qIFByb2Nlc3Mg YW55IGludGVycnVwdHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAogCQkvKgogCQkgKiBEbyB3aGF0IHdlJ3JlIGhlcmUgZm9yOyB0aGVuLCBp ZiBYTG9nQmFja2dyb3VuZEZsdXNoKCkgZm91bmQgdXNlZnVsCkBAIC0yNTAsOSArMjQ4LDkg QEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCQllbHNlCiAJCQljdXJfdGltZW91dCA9IFdhbFdyaXRlckRlbGF5 ICogSElCRVJOQVRFX0ZBQ1RPUjsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkgY3VyX3RpbWVvdXQsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfV1JJVEVSX01B SU4pOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwg SU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQsCisJCQkJ CQkJIFdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOKTsKIAl9CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2 ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jCmluZGV4IDdjODYzOWIzMmU5Li4xNTZjYjk3NjY3NyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJwZ3N0 YXQuaCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9wZ19sc24uaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMTczMGFjZTU0OTAu LjE1NDRkMGNkNzZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTU3LDEwICsxNTcsMTIgQEAK IAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwu aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9o YW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGli cHEvcHFtcS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL29yaWdpbi5oIgpAQCAtMjM4LDEyICsyNDAsNiBAQCBzdGF0aWMgTGlzdCAq UGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBOSUw7CiAgKi8KIFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOwogCi0vKgotICogSXMgdGhlcmUg YSBtZXNzYWdlIHNlbnQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB0aGUgbGVh ZGVyIGFwcGx5Ci0gKiB3b3JrZXIgbmVlZHMgdG8gcmVjZWl2ZT8KLSAqLwotdm9sYXRpbGUg c2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOwotCiAv KgogICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiByZXF1 aXJlZCBmb3IgYXBwbHlpbmcgdGhlCiAgKiBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2FjdGlv bi4gSXQgaXMgdXNlZCB0byBzYXZlIHRoZSBjb3N0IG9mIHNlYXJjaGluZyB0aGUKQEAgLTcw NiwzMCArNzAyLDYgQEAgcGFfcHJvY2Vzc19zcG9vbGVkX21lc3NhZ2VzX2lmX3JlcXVpcmVk KHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qCi0gKiBJbnRlcnJ1cHQgaGFuZGxlciBm b3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLSAqLwotc3RhdGljIHZv aWQKLVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQotewotCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7Ci0KLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKLQl7Ci0J CWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBmaW5pc2hlZCIs Ci0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKLQotCQlwcm9jX2V4aXQoMCk7Ci0J fQotCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JewotCQlDb25maWdSZWxvYWRQZW5k aW5nID0gZmFsc2U7Ci0JCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCX0KLX0K LQogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KIHN0YXRpYyB2b2lk CiBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQpAQCAtNzU5 LDcgKzczMSwxOCBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAq bXFoKQogCQl2b2lkCSAgICpkYXRhOwogCQlTaXplCQlsZW47CiAKLQkJUHJvY2Vzc1BhcmFs bGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9QQVJBTExFTF9BUFBMWV9X T1JLRVIpKQorCQl7CisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgaGFzIGZpbmlzaGVkIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJ CXByb2NfZXhpdCgwKTsKKwkJfQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRf VEVSTUlOQVRFKSkKKwkJCVByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQoKTsKKwkJaWYgKENv bnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQorCQkJUHJvY2Vzc0Nv bmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRo ZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLwogCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CkBAIC04MDUsMTMgKzc4OCwxNyBAQCBMb2dp Y2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJCWludAkJCXJj OwogCiAJCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQkJCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgMTAwMEwsCi0JCQkJCQkJICAgV0FJVF9FVkVO VF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOwotCi0JCQkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQotCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCXJjID0gV2FpdEludGVy cnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX1NI VVRET1dOX1BBUkFMTEVMX0FQUExZX1dPUktFUiB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9U RVJNSU5BVEUgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJ CQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkJICAgV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIDEwMDBM LAorCQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7 CisKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJCQl9CiAJCX0KIAkJZWxzZQpAQCAtODQ0LDkgKzgz MSw4IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCiBz dGF0aWMgdm9pZAogcGFfc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlTZW5k UHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRlcl9waWQsCi0JCQkJICAgUFJP Q1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAotCQkJCSAgIElOVkFMSURfUFJPQ19OVU1C RVIpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJ ICBNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRlcl9wZ3Byb2Nubyk7CiAKIAlkc21fZGV0YWNo KChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7CiB9CkBAIC04NzEsMTUg Kzg1NywxOCBAQCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlJ bml0aWFsaXppbmdBcHBseVdvcmtlciA9IHRydWU7CiAKIAkvKgotCSAqIFNldHVwIHNpZ25h bCBoYW5kbGluZy4KKwkgKiBTZXR1cCBpbnRlcnJ1cHQgaGFuZGxpbmcuCiAJICoKLQkgKiBO b3RlOiBXZSBpbnRlbnRpb25hbGx5IHVzZWQgU0lHVVNSMiB0byB0cmlnZ2VyIGEgZ3JhY2Vm dWwgc2h1dGRvd24KLQkgKiBpbml0aWF0ZWQgYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIu IFRoaXMgaGVscHMgdG8gZGlmZmVyZW50aWF0ZSBpdAotCSAqIGZyb20gdGhlIGNhc2Ugd2hl cmUgd2UgYWJvcnQgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gYW5kIGV4aXQgb24KLQkgKiBy ZWNlaXZpbmcgU0lHVEVSTS4KKwkgKiBJbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgaW50ZXJy dXB0cywgd2UgdXNlCisJICogSU5URVJSVVBUX1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dP UktFUiBhcyBhbHRlcm5hdGl2ZSB0bworCSAqIElOVEVSUlVQVF9URVJNSU5BVEUgdG8gdHJp Z2dlciBhIGdyYWNlZnVsIHNodXRkb3duIGluaXRpYXRlZCBieSB0aGUKKwkgKiBsZWFkZXIg YXBwbHkgd29ya2VyLiBUaGlzIGhlbHBzIHRvIGRpZmZlcmVudGlhdGUgaXQgZnJvbSB0aGUg Y2FzZSB3aGVyZQorCSAqIHdlIGFib3J0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGFuZCBl eGl0IG9uIHJlY2VpdmluZyBTSUdURVJNLgorCSAqCisJICogRklYTUU6IEl0IGhhcyB0aGUg c2FtZSBlZmZlY3QsIGJ1dCBwcmludHMgYW4gYWRkaXRpb25hbCBtZXNzYWdlIHRvIHRoZQor CSAqIGxvZy4gSXMgaXQgd29ydGggZGlzdGluZ3Vpc2hpbmcsIGFuZCBkbyB3ZSBldmVuIHdh bnQgdGhlIGxvZyBtZXNzYWdlPwogCSAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFu ZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVVNSMiwgU2lnbmFsSGFuZGxl ckZvclNodXRkb3duUmVxdWVzdCk7CisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygp OwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwogCiAJLyoKQEAgLTk0MCw4 ICs5MjksNyBAQCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAll cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwogCiAJcHFfcmVkaXJl Y3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKLQlwcV9zZXRfcGFyYWxsZWxfbGVhZGVy KE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3BpZCwKLQkJCQkJCSAgIElOVkFMSURfUFJP Q19OVU1CRVIpOworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2Vy LT5sZWFkZXJfcGdwcm9jbm8pOwogCiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQogCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOwpAQCAtOTc1LDI5ICs5NjMsNyBAQCBQYXJh bGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CiAKIAlMb2dpY2FsUGFyYWxsZWxBcHBseUxv b3AobXFoKTsKLQotCS8qCi0JICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IG5v dCBnZXQgaGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQotCSAqIHdvcmtlciB3aWxs IG9ubHkgc3RvcCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBTSUdVU1IyIGZyb20g dGhlCi0JICogbGVhZGVyLCBvciBTSUdJTlQgZnJvbSBpdHNlbGYsIG9yIHdoZW4gdGhlcmUg aXMgYW4gZXJyb3IuIE5vbmUgb2YgdGhlc2UKLQkgKiBjYXNlcyB3aWxsIGFsbG93IHRoZSBj b2RlIHRvIHJlYWNoIGhlcmUuCi0JICovCi0JQXNzZXJ0KGZhbHNlKTsKLX0KLQotLyoKLSAq IEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyIG1lc3NhZ2UuCi0gKgotICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0 aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEgZmxhZwotICog dGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gaW52 b2tlCi0gKiBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCi0gKi8KLXZvaWQKLUhh bmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCi17Ci0JSW50ZXJydXB0 UGVuZGluZyA9IHRydWU7Ci0JUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsK LQlTZXRMYXRjaChNeUxhdGNoKTsKKwlBc3NlcnQoZmFsc2UpOyAvKiBMb2dpY2FsUGFyYWxs ZWxBcHBseUxvb3AgbmV2ZXIgcmV0dXJucyAqLwogfQogCiAvKgpAQCAtMTA2NCw3ICsxMDMw LDcgQEAgUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlKFN0cmluZ0luZm8gbXNnKQogfQog CiAvKgotICogSGFuZGxlIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQg ZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICogUHJvY2VzcyBhbnkgcXVldWVkIHBy b3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4K ICAqLwogdm9pZAogUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQpAQCAtMTA3 NCw2ICsxMDQwLDkgQEAgUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQogCiAJ c3RhdGljIE1lbW9yeUNvbnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsKIAorCS8qIFdlIGRv bid0IGV4cGVjdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0byBhbHNvIHJ1biBwYXJhbGxl bCBxdWVyaWVzICovCisJQXNzZXJ0KCFQYXJhbGxlbENvbnRleHRBY3RpdmUoKSk7CisKIAkv KgogCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBz aW5jZSBzb21lIG9mIHRoZQogCSAqIGZ1bmN0aW9ucyBpdCBjYWxscyBjb250YWluIENIRUNL X0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50aWFsCkBAIC0xMDk3LDggKzEw NjYsNiBAQCBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCiAKIAlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CiAKLQlQYXJhbGxl bEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKLQogCWZvcmVhY2gobGMsIFBhcmFsbGVs QXBwbHlXb3JrZXJQb29sKQogCXsKIAkJc2htX21xX3Jlc3VsdCByZXM7CkBAIC0xMTg5LDE0 ICsxMTU2LDE1IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCQlBc3NlcnQocmVzdWx0ID09 IFNITV9NUV9XT1VMRF9CTE9DSyk7CiAKIAkJLyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICov Ci0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICBTSE1fU0VORF9SRVRS WV9JTlRFUlZBTF9NUywKLQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRf REFUQSk7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwK KwkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgU0hNX1NF TkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQ TFlfU0VORF9EQVRBKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCQl9CiAKQEAgLTEyNjEsMTMgKzEyMjksMTQgQEAgcGFfd2FpdF9mb3JfeGFj dF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJCQlicmVhazsKIAog CQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAotCQkJCQkJIDEwTCwKLQkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxM RUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKLQotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2Ug ZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQVF9X QUlUX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDEwTCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJ Q0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogQ2xlYXIgdGhlIGlu dGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9j Y3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpp bmRleCBlNjExMmUxMWVjMi4uZDY2YmEwYjZmNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTI1LDExICsyNSwxMiBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19z dWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5j bHVkZSAibGliL2RzaGFzaC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKLSNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKQEAgLTU4LDcgKzU5LDcgQEAgTG9naWNhbFJlcFdv cmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBDdHhTdHJ1Y3QKIHsKIAkvKiBTdXBlcnZpc29yIHByb2Nlc3MuICovCi0JcGlkX3QJ CWxhdW5jaGVyX3BpZDsKKwlQcm9jTnVtYmVyCWxhdW5jaGVyX3Byb2NubzsKIAogCS8qIEhh c2ggdGFibGUgaG9sZGluZyBsYXN0IHN0YXJ0IHRpbWVzIG9mIHN1YnNjcmlwdGlvbnMnIGFw cGx5IHdvcmtlcnMuICovCiAJZHNhX2hhbmRsZQlsYXN0X3N0YXJ0X2RzYTsKQEAgLTE4Myw3 ICsxODQsNiBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRs ZSkKIHsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKLQlib29sCQlkcm9wcGVkX2xhdGNoID0g ZmFsc2U7CiAKIAlmb3IgKDs7KQogCXsKQEAgLTIxOSwyNyArMjE5LDI4IEBAIFdhaXRGb3JS ZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCX0K IAogCQkvKgotCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgZG9u J3QgZ2V0IG5vdGlmaWVkIHZpYSBsYXRjaAotCQkgKiBhYm91dCB0aGUgd29ya2VyIGF0dGFj aC4gIEJ1dCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuCisJCSAqIFdl IG5lZWQgdGltZW91dCBiZWNhdXNlIHdlIGdlbmVyYWxseSBkb24ndCBnZXQgbm90aWZpZWQg dmlhIGFuCisJCSAqIGludGVycnVwdCBhYm91dCB0aGUgd29ya2VyIGF0dGFjaC4gIEJ1dCB3 ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0bworCQkgKiB3YWl0IGxvbmcuCiAJCSAqLwotCQly YyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX0JH V09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayB8CisJCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMgJiBX TF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQkJZHJvcHBlZF9sYXRjaCA9IHRy dWU7CiAJCX0KIAl9CiAKIAkvKgotCSAqIElmIHdlIGhhZCB0byBjbGVhciBhIGxhdGNoIGV2 ZW50IGluIG9yZGVyIHRvIHdhaXQsIGJlIHN1cmUgdG8gcmVzdG9yZQotCSAqIGl0IGJlZm9y ZSBleGl0aW5nLiAgT3RoZXJ3aXNlIGNhbGxlciBtYXkgbWlzcyBldmVudHMuCisJICogWFhY OiBXZSB1c2VkIHRvIGhhdmUgdG8gcmVzdG9yZSB0aGUgcHJvY2VzcyBsYXRjaCwgYmVjYXVz ZSB0aGUgbGF1bmNoZXIKKwkgKiByZWxpZWQgb24gdGhlIHNhbWUgbGF0Y2ggdG8gd2FpdCBm b3Igb3RoZXIgc3RhdHVzIGNoYW5nZXMuIEJ1dCBXZSBub3cKKwkgKiB1c2UgSU5URVJSVVBU X1NVQlNDUklQVElPTl9DSEFOR0UgZm9yIHRoYXQuIEJ1dCBmb3IgY2xhcml5LCBwZXJoYXBz IHdlCisJICogc2hvdWxkIHVzZSBhIGRlc2lnbmVkIGludGVycnVwdCBmb3IgdGhpcyB3YWl0 IHRvbz8KIAkgKi8KLQlpZiAoZHJvcHBlZF9sYXRjaCkKLQkJU2V0TGF0Y2goTXlMYXRjaCk7 CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpAQCAtNDczLDYgKzQ3NCw3IEBAIHJldHJ5OgogCXdv cmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IE5VTEw7CiAJd29ya2VyLT5sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxf YXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPmxlYWRl cl9wZ3Byb2NubyA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA/IE15UHJvY051bWJlciA6 IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGlzX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPm9sZGVzdF9ub25yZW1vdmFibGVfeGlk ID0gcmV0YWluX2RlYWRfdHVwbGVzCiAJCT8gTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEueG1p bgpAQCAtNTM5LDcgKzU0MSw2IEBAIHJldHJ5OgogCX0KIAogCWJndy5iZ3dfcmVzdGFydF90 aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7Ci0JYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9j UGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCiAJaWYg KCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkK QEAgLTU2Niw3ICs1NjcsNyBAQCByZXRyeToKICAqIHNsb3QuCiAgKi8KIHN0YXRpYyB2b2lk Ci1sb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwgaW50IHNpZ25vKQorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIsIEludGVycnVwdE1hc2sgaW50ZXJydXB0KQogewogCXVp bnQxNgkJZ2VuZXJhdGlvbjsKIApAQCAtNTg5LDEzICs1OTAsMTQgQEAgbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdu bykKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAKIAkJLyogV2Fp dCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nLiAqLwot CQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5U X0JHV09SS0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRl cnJ1cHRzTWFzayB8CisJCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkg ICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAotCQlpZiAocmMg JiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVz ZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAgLTYxNiw3ICs2 MTgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlciwgaW50IHNpZ25vKQogCX0KIAogCS8qIE5vdyB0ZXJtaW5hdGUgdGhlIHdv cmtlciAuLi4gKi8KLQlraWxsKHdvcmtlci0+cHJvYy0+cGlkLCBzaWdubyk7CisJU2VuZElu dGVycnVwdChpbnRlcnJ1cHQsIEdldE51bWJlckZyb21QR1Byb2Mod29ya2VyLT5wcm9jKSk7 CiAKIAkvKiAuLi4gYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4gKi8KIAlmb3IgKDs7KQpAQCAt NjMwLDEzICs2MzIsMTQgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIAkJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7CiAKIAkJLyogV2FpdCBhIGJpdCAtLS0gd2UgZG9uJ3QgZXhw ZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NIVVRET1dOKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJICAg SU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRf QkdXT1JLRVJfU0hVVERPV04pOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYg KHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNjYzLDcgKzY2Niw3IEBAIGxvZ2ljYWxyZXBfd29y a2VyX3N0b3AoTG9naWNhbFJlcFdvcmtlclR5cGUgd3R5cGUsIE9pZCBzdWJpZCwgT2lkIHJl bGlkKQogCWlmICh3b3JrZXIpCiAJewogCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtl cih3b3JrZXIpKTsKLQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIs IFNJR1RFUk0pOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwg SU5URVJSVVBUX1RFUk1JTkFURSk7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVw V29ya2VyTG9jayk7CkBAIC02NzIsOCArNjc1LDkgQEAgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChMb2dpY2FsUmVwV29ya2VyVHlwZSB3dHlwZSwgT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAv KgogICogU3RvcCB0aGUgZ2l2ZW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCiAgKgotICogTm9kZSB0aGF0IHRoZSBmdW5jdGlvbiBzZW5kcyBTSUdVU1Iy IGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBwbHkKLSAqIHdvcmtlciBz byB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqIE5vZGUgdGhhdCB0aGUgZnVu Y3Rpb24gc2VuZHMgSU5URVJSVVBUX1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dPUktFUgor ICogaW5zdGVhZCBvZiBJTlRFUlJVUFRfVEVSTUlOQVRFIHRvIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgc28gdGhhdCB0aGUKKyAqIHdvcmtlciBleGl0cyBtb3JlIGNsZWFubHkuIChG SVhNRTogd2hhdCdzIHRoZSBkaWZmZXJlbmNlIHJlYWxseT8pCiAgKi8KIHZvaWQKIGxvZ2lj YWxyZXBfcGFfd29ya2VyX3N0b3AoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQpA QCAtNzEwLDEzICs3MTQsMTMgQEAgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYg dGhlIGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KIAkgKi8K IAlpZiAod29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9j KQotCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHVVNSMik7 CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBJTlRFUlJVUFRf U0hVVERPV05fUEFSQUxMRUxfQVBQTFlfV09SS0VSKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgbGF0Y2gp IGFueSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciB0aGF0IG1hdGNoZXMgdGhlCisgKiBX YWtlIHVwICh1c2luZyBpbnRlcnJ1cHQpIGFueSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciB0aGF0IG1hdGNoZXMgdGhlCiAgKiBzcGVjaWZpZWQgd29ya2VyIHR5cGUsIHN1YnNjcmlw dGlvbiBpZCwgYW5kIHJlbGF0aW9uIGlkLgogICovCiB2b2lkCkBAIC03MzgsNyArNzQyLDcg QEAgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKExvZ2ljYWxSZXBXb3JrZXJUeXBlIHd0eXBl LCBPaWQgc3ViaWQsIE9pZCByZWxpZCkKIH0KIAogLyoKLSAqIFdha2UgdXAgKHVzaW5nIGxh dGNoKSB0aGUgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyLgorICogV2Fr ZSB1cCAodXNpbmcgaW50ZXJydXB0KSB0aGUgc3BlY2lmaWVkIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyLgogICoKICAqIENhbGxlciBtdXN0IGhvbGQgbG9jaywgZWxzZSB3b3JrZXIt PnByb2MgY291bGQgY2hhbmdlIHVuZGVyIHVzLgogICovCkBAIC03NDcsNyArNzUxLDcgQEAg bG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIp CiB7CiAJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CiAK LQlTZXRMYXRjaCgmd29ya2VyLT5wcm9jLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQo SU5URVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHdvcmtlci0+cHJv YykpOwogfQogCiAvKgpAQCAtODE1LDcgKzgxOSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2Rl dGFjaCh2b2lkKQogCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVwV29ya2Vy ICopIGxmaXJzdChsYyk7CiAKIAkJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCi0J CQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3LCBTSUdURVJNKTsKKwkJCQls b2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcsIElOVEVSUlVQVF9URVJNSU5BVEUp OwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC04 NDcsNiArODUxLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29y a2VyICp3b3JrZXIpCiAJd29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5y ZWxpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5sZWFkZXJfcGlkID0gSW52YWxpZFBpZDsK Kwl3b3JrZXItPmxlYWRlcl9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJd29y a2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCkBAIC04NTgsNyArODYzLDcgQEAg bG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiBz dGF0aWMgdm9pZAogbG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVt IGFyZykKIHsKLQlMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPSAwOworCUxvZ2ljYWxS ZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIC8q CkBAIC0xMDE5LDcgKzEwMjQsNiBAQCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCkKIAlz bnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sCiAJCQkgImxvZ2ljYWwgcmVwbGlj YXRpb24gbGF1bmNoZXIiKTsKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IDU7Ci0JYmd3LmJn d19ub3RpZnlfcGlkID0gMDsKIAliZ3cuYmd3X21haW5fYXJnID0gKERhdHVtKSAwOwogCiAJ UmVnaXN0ZXJCYWNrZ3JvdW5kV29ya2VyKCZiZ3cpOwpAQCAtMTA0NSw2ICsxMDQ5LDcgQEAg QXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKQogCiAJCW1lbXNldChMb2dpY2FsUmVwQ3R4 LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwogCisJCUxvZ2ljYWxSZXBDdHgtPmxh dW5jaGVyX3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCUxvZ2ljYWxSZXBDdHgt Pmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwogCQlMb2dpY2FsUmVwQ3R4 LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIApAQCAtMTE5Myw4 ICsxMTk4LDEyIEBAIEFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCh2b2lkKQogdm9pZAog QXBwbHlMYXVuY2hlcldha2V1cCh2b2lkKQogewotCWlmIChMb2dpY2FsUmVwQ3R4LT5sYXVu Y2hlcl9waWQgIT0gMCkKLQkJa2lsbChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQsIFNJ R1VTUjEpOworCXZvbGF0aWxlIExvZ2ljYWxSZXBDdHhTdHJ1Y3QgKnJlcGN0eCA9IExvZ2lj YWxSZXBDdHg7CisJUHJvY051bWJlcglsYXVuY2hlcl9wcm9jbm87CisKKwlsYXVuY2hlcl9w cm9jbm8gPSByZXBjdHgtPmxhdW5jaGVyX3Byb2NubzsKKwlpZiAobGF1bmNoZXJfcHJvY25v ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1NV QlNDUklQVElPTl9DSEFOR0UsIGxhdW5jaGVyX3Byb2Nubyk7CiB9CiAKIC8qCkBAIC0xMjA4 LDEzICsxMjE3LDE2IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJ YmVmb3JlX3NobWVtX2V4aXQobG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQsIChEYXR1bSkg MCk7CiAKLQlBc3NlcnQoTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID09IDApOwotCUxv Z2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9IE15UHJvY1BpZDsKKwlBc3NlcnQoTG9naWNh bFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID09IElOVkFMSURfUFJPQ19OVU1CRVIpOworCUxv Z2ljYWxSZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9IE15UHJvY051bWJlcjsKIAotCS8qIEVz dGFibGlzaCBzaWduYWwgaGFuZGxlcnMuICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxI YW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwkvKiBFc3RhYmxpc2ggaW50ZXJydXB0IGhhbmRs ZXJzLiAqLwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwogCisJU2V0U3Rh bmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJS VVBUX1FVRVJZX0NBTkNFTCwgUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KTsKKwlFbmFi bGVJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CisKIAkvKgogCSAqIEVzdGFi bGlzaCBjb25uZWN0aW9uIHRvIG5haWxlZCBjYXRhbG9ncyAod2Ugb25seSBldmVyIGFjY2Vz cwogCSAqIHBnX3N1YnNjcmlwdGlvbikuCkBAIC0xMjU2LDYgKzEyNjgsNyBAQCBBcHBseUxh dW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJICogZGV0ZWN0aW9uIGlmIG9uZSBvZiB0 aGUgc3Vic2NyaXB0aW9uIGVuYWJsZXMgcmV0YWluX2RlYWRfdHVwbGVzCiAJCSAqIG9wdGlv bi4KIAkJICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hB TkdFKTsKIAkJc3VibGlzdCA9IGdldF9zdWJzY3JpcHRpb25fbGlzdCgpOwogCQlmb3JlYWNo KGxjLCBzdWJsaXN0KQogCQl7CkBAIC0xNDE2LDIxICsxNDI5LDE5IEBAIEFwcGx5TGF1bmNo ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7 CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJICAgd2FpdF90aW1lLAotCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lD QUxfTEFVTkNIRVJfTUFJTik7Ci0KLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlyYyA9 IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkgICBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCQkgICBJTlRFUlJVUFRfU1VCU0NSSVBUSU9O X0NIQU5HRSwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJICAgd2FpdF90aW1lLAorCQkJCQkJICAgV0FJVF9FVkVO VF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4pOworCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkK IAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7Ci0JCX0KIAotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmln UmVsb2FkUGVuZGluZyA9IGZhbHNlOwotCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CisJCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkp CisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAJCX0KIAl9CiAKQEAgLTE1 ODUsNyArMTU5Niw3IEBAIENyZWF0ZUNvbmZsaWN0RGV0ZWN0aW9uU2xvdCh2b2lkKQogYm9v bAogSXNMb2dpY2FsTGF1bmNoZXIodm9pZCkKIHsKLQlyZXR1cm4gTG9naWNhbFJlcEN0eC0+ bGF1bmNoZXJfcGlkID09IE15UHJvY1BpZDsKKwlyZXR1cm4gTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcHJvY25vID09IE15UHJvY051bWJlcjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCmluZGV4IDE2NWY5MDli M2JhLi45MmM5MDNkN2Y5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zZXF1ZW5jZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3NlcXVlbmNlc3luYy5jCkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVu Y2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGlscy9h Y2wuaCIKQEAgLTQ5NCwxMSArNDkzLDggQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJD b25uICpjb25uKQogCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKLQkJCXsKLQkJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFs c2U7CisJCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkp CiAJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCQl9CiAKIAkJCXN5bmNf c3RhdHVzID0gZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhzbG90LCAmc2VxdWVuY2VfcmVs LAogCQkJCQkJCQkJCQkJCSZzZXFpbmZvLCAmc2VxaWR4KTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCA1ZTFlZTdlNDcyOC4uOWRiZjg5 Y2I4MzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xv dHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5j LmMKQEAgLTU5LDkgKzU5LDEwIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwu aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19kYXRhYmFzZS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3NuYXBidWlsZC5oIgpA QCAtNzksOSArODAsOSBAQAogLyoKICAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlv biB0byBjb250cm9sIHNsb3Qgc3luY2hyb25pemF0aW9uLgogICoKLSAqIFRoZSAncGlkJyBp cyBlaXRoZXIgdGhlIHNsb3Qgc3luYyB3b3JrZXIncyBwaWQgb3IgdGhlIGJhY2tlbmQncyBw aWQgcnVubmluZworICogVGhlICdwcm9jbm8nIGlzIGVpdGhlciB0aGUgc2xvdCBzeW5jIHdv cmtlcidzIHByb2NubyBvciB0aGUgYmFja2VuZCdzIHByb2NubyBydW5uaW5nCiAgKiB0aGUg U1FMIGZ1bmN0aW9uIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKS4gV2hlbiB0aGUgc3Rh cnR1cCBwcm9jZXNzIHNldHMKLSAqICdzdG9wU2lnbmFsZWQnIGR1cmluZyBwcm9tb3Rpb24s IGl0IHVzZXMgdGhpcyAncGlkJyB0byB3YWtlIHVwIHRoZSBjdXJyZW50bHkKKyAqICdzdG9w U2lnbmFsZWQnIGR1cmluZyBwcm9tb3Rpb24sIGl0IHVzZXMgdGhpcyAncHJvY25vJyB0byB3 YWtlIHVwIHRoZSBjdXJyZW50bHkKICAqIHN5bmNocm9uaXppbmcgcHJvY2VzcyBzbyB0aGF0 IHRoZSBwcm9jZXNzIGNhbiBpbW1lZGlhdGVseSBzdG9wIGl0cwogICogc3luY2hyb25pemlu ZyB3b3JrIG9uIHNlZWluZyAnc3RvcFNpZ25hbGVkJyBzZXQuCiAgKiBTZXR0aW5nICdzdG9w U2lnbmFsZWQnIGlzIGFsc28gdXNlZCB0byBoYW5kbGUgdGhlIHJhY2UgY29uZGl0aW9uIHdo ZW4gdGhlCkBAIC0xMDQsNyArMTA1LDcgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgU2xvdFN5 bmNDdHhTdHJ1Y3QKIHsKLQlwaWRfdAkJcGlkOworCVByb2NOdW1iZXIJcHJvY25vOwogCWJv b2wJCXN0b3BTaWduYWxlZDsKIAlib29sCQlzeW5jaW5nOwogCXRpbWVfdAkJbGFzdF9zdGFy dF90aW1lOwpAQCAtMTIyMyw3ICsxMjI0LDcgQEAgc2xvdHN5bmNfcmVyZWFkX2NvbmZpZyh2 b2lkKQogCWlmIChpc19zbG90c3luY193b3JrZXIpCiAJCUFzc2VydChzeW5jX3JlcGxpY2F0 aW9uX3Nsb3RzKTsKIAotCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CiAJUHJvY2Vzc0NvbmZpZ0ZpbGUo UEdDX1NJR0hVUCk7CiAKIAljb25uaW5mb19jaGFuZ2VkID0gc3RyY21wKG9sZF9wcmltYXJ5 X2Nvbm5pbmZvLCBQcmltYXJ5Q29ubkluZm8pICE9IDA7CkBAIC0xMjg2LDEzICsxMjg3LDE0 IEBAIHNsb3RzeW5jX3JlcmVhZF9jb25maWcodm9pZCkKIH0KIAogLyoKLSAqIEludGVycnVw dCBoYW5kbGVyIGZvciBwcm9jZXNzIHBlcmZvcm1pbmcgc2xvdCBzeW5jaHJvbml6YXRpb24u CisgKiBDaGVjayBmb3IgaW50ZXJydXB0cyB3aGlsZSBwZXJmb3JtaW5nIHNsb3Qgc3luY2hy b25pemF0aW9uLgorICoKKyAqIFRoaXMgZG9lcyBDSEVDS19GT1JfSU5URVJSVVBUUygpLCBi dXQgYWxzbyBjaGVja3MgZm9yCisgKiBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCBhbmQgY2hl Y2tzIGZvciAnc3RvcFNpZ25hbGVkJy4KICAqLwogc3RhdGljIHZvaWQKIFByb2Nlc3NTbG90 U3luY0ludGVycnVwdHModm9pZCkKIHsKLQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCiAJ aWYgKFNsb3RTeW5jQ3R4LT5zdG9wU2lnbmFsZWQpCiAJewogCQlpZiAoQW1Mb2dpY2FsU2xv dFN5bmNXb3JrZXJQcm9jZXNzKCkpCkBAIC0xMzE0LDcgKzEzMTYsOSBAQCBQcm9jZXNzU2xv dFN5bmNJbnRlcnJ1cHRzKHZvaWQpCiAJCX0KIAl9CiAKLQlpZiAoQ29uZmlnUmVsb2FkUGVu ZGluZykKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJaWYgKEludGVycnVwdFBlbmRp bmcoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQlzbG90c3luY19yZXJlYWRfY29uZmln KCk7CiB9CiAKQEAgLTEzNTgsNyArMTM2Miw3IEBAIHNsb3RzeW5jX3dvcmtlcl9vbmV4aXQo aW50IGNvZGUsIERhdHVtIGFyZykKIAogCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNDdHgt Pm11dGV4KTsKIAotCVNsb3RTeW5jQ3R4LT5waWQgPSBJbnZhbGlkUGlkOworCVNsb3RTeW5j Q3R4LT5wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCiAJLyoKIAkgKiBJZiBzeW5j aW5nX3Nsb3RzIGlzIHRydWUsIGl0IGluZGljYXRlcyB0aGF0IHRoZSBwcm9jZXNzIGVycm9y ZWQgb3V0CkBAIC0xNDA0LDEzICsxNDA4LDE2IEBAIHdhaXRfZm9yX3Nsb3RfYWN0aXZpdHko Ym9vbCBzb21lX3Nsb3RfdXBkYXRlZCkKIAkJc2xlZXBfbXMgPSBNSU5fU0xPVFNZTkNfV09S S0VSX05BUFRJTUVfTVM7CiAJfQogCi0JcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkgICBzbGVlcF9tcywKLQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5D X01BSU4pOworCS8qIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHRzIHRoYXQgUHJvY2Vzc1Nsb3RT eW5jSW50ZXJydXB0cygpIHdpbGwgaGFuZGxlICovCisJcmMgPSBXYWl0SW50ZXJydXB0KENo ZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAg fAorCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKKwkJCQkJICAgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCSAgIHNsZWVw X21zLAorCQkJCQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX01BSU4pOwog Ci0JaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCWlm IChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQKTsKIH0KIAogLyoKQEAgLTE0MTgsNyArMTQyNSw3IEBAIHdhaXRfZm9yX3Nsb3Rf YWN0aXZpdHkoYm9vbCBzb21lX3Nsb3RfdXBkYXRlZCkKICAqIE90aGVyd2lzZSwgYWR2ZXJ0 aXNlIHRoYXQgYSBzeW5jIGlzIGluIHByb2dyZXNzLgogICovCiBzdGF0aWMgdm9pZAotY2hl Y2tfYW5kX3NldF9zeW5jX2luZm8ocGlkX3Qgc3luY19wcm9jZXNzX3BpZCkKK2NoZWNrX2Fu ZF9zZXRfc3luY19pbmZvKFByb2NOdW1iZXIgc3luY19wcm9jZXNzX3Byb2NubykKIHsKIAlT cGluTG9ja0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKQEAgLTE0MzAsMTYgKzE0 MzcsMTYgQEAgY2hlY2tfYW5kX3NldF9zeW5jX2luZm8ocGlkX3Qgc3luY19wcm9jZXNzX3Bp ZCkKIAkJCQllcnJtc2coImNhbm5vdCBzeW5jaHJvbml6ZSByZXBsaWNhdGlvbiBzbG90cyBj b25jdXJyZW50bHkiKSk7CiAJfQogCi0JLyogVGhlIHBpZCBtdXN0IG5vdCBiZSBhbHJlYWR5 IGFzc2lnbmVkIGluIFNsb3RTeW5jQ3R4ICovCi0JQXNzZXJ0KFNsb3RTeW5jQ3R4LT5waWQg PT0gSW52YWxpZFBpZCk7CisJLyogVGhlIHByb2NubyBtdXN0IG5vdCBiZSBhbHJlYWR5IGFz c2lnbmVkIGluIFNsb3RTeW5jQ3R4ICovCisJQXNzZXJ0KFNsb3RTeW5jQ3R4LT5wcm9jbm8g PT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAlTbG90U3luY0N0eC0+c3luY2luZyA9IHRy dWU7CiAKIAkvKgotCSAqIEFkdmVydGlzZSB0aGUgcmVxdWlyZWQgUElEIHNvIHRoYXQgdGhl IHN0YXJ0dXAgcHJvY2VzcyBjYW4ga2lsbCB0aGUKLQkgKiBzbG90IHN5bmMgcHJvY2VzcyBv biBwcm9tb3Rpb24uCisJICogQWR2ZXJ0aXNlIHRoZSByZXF1aXJlZCBwcm9jIG51bWJlciBz byB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwKKwkgKiB0aGUgc2xvdCBzeW5j IHByb2Nlc3Mgb24gcHJvbW90aW9uLgogCSAqLwotCVNsb3RTeW5jQ3R4LT5waWQgPSBzeW5j X3Byb2Nlc3NfcGlkOworCVNsb3RTeW5jQ3R4LT5wcm9jbm8gPSBzeW5jX3Byb2Nlc3NfcHJv Y25vOwogCiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCkBAIC0x NDU0LDcgKzE0NjEsNyBAQCByZXNldF9zeW5jaW5nX2ZsYWcodm9pZCkKIHsKIAlTcGluTG9j a0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAJU2xvdFN5bmNDdHgtPnN5bmNpbmcg PSBmYWxzZTsKLQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwlTbG90U3luY0N0 eC0+cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAlTcGluTG9ja1JlbGVhc2UoJlNs b3RTeW5jQ3R4LT5tdXRleCk7CiAKIAlzeW5jaW5nX3Nsb3RzID0gZmFsc2U7CkBAIC0xNTI5 LDE5ICsxNTM2LDE1IEBAIFJlcGxTbG90U3luY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlQR19leGNlcHRpb25fc3Rh Y2sgPSAmbG9jYWxfc2lnam1wX2J1ZjsKIAogCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAq LwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0J cHFzaWduYWwoU0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsKLQlwcXNpZ25hbChT SUdURVJNLCBkaWUpOwogCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVy KTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0J cHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHUElQRSwgU0lHX0lH Tik7CiAKLQljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhNeVByb2NQaWQpOworCVNldFN0YW5k YXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKworCWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKE15 UHJvY051bWJlcik7CiAKIAllcmVwb3J0KExPRywgZXJybXNnKCJzbG90IHN5bmMgd29ya2Vy IHN0YXJ0ZWQiKSk7CiAKLQkvKiBSZWdpc3RlciBpdCBhcyBzb29uIGFzIFNsb3RTeW5jQ3R4 LT5waWQgaXMgaW5pdGlhbGl6ZWQuICovCisJLyogUmVnaXN0ZXIgaXQgYXMgc29vbiBhcyBT bG90U3luY0N0eC0+cHJvY25vIGlzIGluaXRpYWxpemVkLiAqLwogCWJlZm9yZV9zaG1lbV9l eGl0KHNsb3RzeW5jX3dvcmtlcl9vbmV4aXQsIChEYXR1bSkgMCk7CiAKIAkvKgpAQCAtMTY4 MSw3ICsxNjg0LDcgQEAgdXBkYXRlX3N5bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lk KQogCQlyZXR1cm47CiAKIAkvKiBUaGUgc2xvdCBzeW5jIHdvcmtlciBvciB0aGUgU1FMIGZ1 bmN0aW9uIG11c3RuJ3QgYmUgcnVubmluZyBieSBub3cgKi8KLQlBc3NlcnQoKFNsb3RTeW5j Q3R4LT5waWQgPT0gSW52YWxpZFBpZCkgJiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsKKwlB c3NlcnQoKFNsb3RTeW5jQ3R4LT5wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUikgJiYg IVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsKIAogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25T bG90Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CiAKQEAgLTE3MjAsNyArMTcyMyw3IEBAIHVw ZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkKIHZvaWQKIFNodXREb3du U2xvdFN5bmModm9pZCkKIHsKLQlwaWRfdAkJc3luY19wcm9jZXNzX3BpZDsKKwlQcm9jTnVt YmVyCXN5bmNfcHJvY2Vzc19wcm9jbm87CiAKIAlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5j Q3R4LT5tdXRleCk7CiAKQEAgLTE3MzcsNyArMTc0MCw3IEBAIFNodXREb3duU2xvdFN5bmMo dm9pZCkKIAkJcmV0dXJuOwogCX0KIAotCXN5bmNfcHJvY2Vzc19waWQgPSBTbG90U3luY0N0 eC0+cGlkOworCXN5bmNfcHJvY2Vzc19wcm9jbm8gPSBTbG90U3luY0N0eC0+cHJvY25vOwog CiAJU3BpbkxvY2tSZWxlYXNlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCkBAIC0xNzQ1LDgg KzE3NDgsOCBAQCBTaHV0RG93blNsb3RTeW5jKHZvaWQpCiAJICogU2lnbmFsIHByb2Nlc3Mg ZG9pbmcgc2xvdHN5bmMsIGlmIGFueS4gVGhlIHByb2Nlc3Mgd2lsbCBzdG9wIHVwb24KIAkg KiBkZXRlY3RpbmcgdGhhdCB0aGUgc3RvcFNpZ25hbGVkIGZsYWcgaXMgc2V0IHRvIHRydWUu CiAJICovCi0JaWYgKHN5bmNfcHJvY2Vzc19waWQgIT0gSW52YWxpZFBpZCkKLQkJa2lsbChz eW5jX3Byb2Nlc3NfcGlkLCBTSUdVU1IxKTsKKwlpZiAoc3luY19wcm9jZXNzX3Byb2NubyAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCwgc3luY19wcm9jZXNzX3Byb2Nubyk7CiAKIAkvKiBXYWl0IGZvciBzbG90IHN5 bmMgdG8gZW5kICovCiAJZm9yICg7OykKQEAgLTE3NTQsMTMgKzE3NTcsMTQgQEAgU2h1dERv d25TbG90U3luYyh2b2lkKQogCQlpbnQJCQlyYzsKIAogCQkvKiBXYWl0IGEgYml0LCB3ZSBk b24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcgKi8KLQkJcmMgPSBXYWl0TGF0Y2go TXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCi0JCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9U U1lOQ19TSFVURE9XTik7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVw dHNNYXNrIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdM X0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJ ICAgMTBMLCBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOKTsKIAot CQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJ ewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKQEAg LTE4NDUsNyArMTg0OSw3IEBAIFNsb3RTeW5jU2htZW1Jbml0KHZvaWQpCiAJaWYgKCFmb3Vu ZCkKIAl7CiAJCW1lbXNldChTbG90U3luY0N0eCwgMCwgc2l6ZSk7Ci0JCVNsb3RTeW5jQ3R4 LT5waWQgPSBJbnZhbGlkUGlkOworCQlTbG90U3luY0N0eC0+cHJvY25vID0gSU5WQUxJRF9Q Uk9DX05VTUJFUjsKIAkJU3BpbkxvY2tJbml0KCZTbG90U3luY0N0eC0+bXV0ZXgpOwogCX0K IH0KQEAgLTE5MjMsNyArMTkyNyw3IEBAIFN5bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJlY2Vp dmVyQ29ubiAqd3Jjb25uKQogCQlMaXN0CSAgICpyZW1vdGVfc2xvdHMgPSBOSUw7CiAJCUxp c3QJICAgKnNsb3RfbmFtZXMgPSBOSUw7CS8qIExpc3Qgb2Ygc2xvdCBuYW1lcyB0byB0cmFj ayAqLwogCi0JCWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKE15UHJvY1BpZCk7CisJCWNoZWNr X2FuZF9zZXRfc3luY19pbmZvKE15UHJvY051bWJlcik7CiAKIAkJLyogQ2hlY2sgZm9yIGlu dGVycnVwdHMgYW5kIGNvbmZpZyBjaGFuZ2VzICovCiAJCVByb2Nlc3NTbG90U3luY0ludGVy cnVwdHMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv dGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCmluZGV4IDE5YTNjMjFhODYzLi4xY2VmOWE0OTllNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMDAsNiArMTAwLDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb3B5LmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5o IgpAQCAtMTY3LDExICsxNjgsMTIgQEAgd2FpdF9mb3JfdGFibGVfc3RhdGVfY2hhbmdlKE9p ZCByZWxpZCwgY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJaWYgKCF3b3JrZXIpCiAJCQlicmVh azsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgMTAwMEwsIFdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCSBJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJCSAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNf U1RBVEVfQ0hBTkdFKTsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAg LTIxOCwxNSArMjIwLDE2IEBAIHdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9jaGFuZ2UoY2hhciBl eHBlY3RlZF9zdGF0ZSkKIAkJCWJyZWFrOwogCiAJCS8qCi0JCSAqIFdhaXQuICBXZSBleHBl Y3QgdG8gZ2V0IGEgbGF0Y2ggc2lnbmFsIGJhY2sgZnJvbSB0aGUgYXBwbHkgd29ya2VyLAor CQkgKiBXYWl0LiAgV2UgZXhwZWN0IHRvIGdldCBhbiBpbnRlcnJ1cHQgd2FrZXVwIGZyb20g dGhlIGFwcGx5IHdvcmtlciwKIAkJICogYnV0IHVzZSBhIHRpbWVvdXQgaW4gY2FzZSBpdCBk aWVzIHdpdGhvdXQgc2VuZGluZyBvbmUuCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJICAgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRF X0NIQU5HRSk7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNr IHwKKwkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTAw MEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CiAKLQkJaWYgKHJj ICYgV0xfTEFUQ0hfU0VUKQotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJaWYgKHJjICYg V0xfSU5URVJSVVBUKQorCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ KTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC01MTgsNyArNTIxLDcgQEAgUHJvY2Vzc1N5 bmNpbmdUYWJsZXNGb3JBcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJICog dGhlIGV4aXN0aW5nIGxvY2tzIGJlZm9yZSBlbnRlcmluZyBhIGJ1c3kgbG9vcC4KIAkJCQkJ CSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gYXZvaWQgYW55IHVuZGV0ZWN0ZWQgZGVhZGxvY2tz CiAJCQkJCQkgKiBkdWUgdG8gYW55IGV4aXN0aW5nIGxvY2sgYXMgZGVhZGxvY2sgZGV0ZWN0 b3Igd29uJ3QKLQkJCQkJCSAqIGJlIGFibGUgdG8gZGV0ZWN0IHRoZSB3YWl0cyBvbiB0aGUg bGF0Y2guCisJCQkJCQkgKiBiZSBhYmxlIHRvIGRldGVjdCB0aGUgd2FpdHMgb24gdGhlIGlu dGVycnVwdC4KIAkJCQkJCSAqCiAJCQkJCQkgKiBBbHNvIGNsb3NlIGFueSB0YWJsZXMgcHJp b3IgdG8gdGhlIGNvbW1pdC4KIAkJCQkJCSAqLwpAQCAtNjk3LDE0ICs3MDAsMTIgQEAgY29w eV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJ CX0KIAogCQkvKgotCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgbGF0Y2guCisJCSAqIFdh aXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExh dGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdM X0xBVENIX1NFVCB8Ci0JCQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKLQkJCQkJCQkJIGZkLCAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSk7 Ci0KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHRPclNv Y2tldChDaGVja0ZvckludGVycnVwdHNNYXNrLAorCQkJCQkJCQkJIFdMX1NPQ0tFVF9SRUFE QUJMRSB8IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCQkgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxf U1lOQ19EQVRBKTsKIAl9CiAKIAlyZXR1cm4gYnl0ZXNyZWFkOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNzVhZjNhNzFjYTguLjI5YWQyYWM0 ZjkyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAg LTI2MSwxMyArMjYxLDE0IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMv c2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgotI2luY2x1ZGUgInBvc3RtYXN0 ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci93YWx3cml0ZXIuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9jb25mbGljdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIgpAQCAtNDA1MywxMSArNDA1NCw4IEBAIExvZ2ljYWxSZXBB cHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCQkJCQlpbnQJCQljOwogCQkJ CQlTdHJpbmdJbmZvRGF0YSBzOwogCi0JCQkJCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQot CQkJCQl7Ci0JCQkJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQkJCWlmIChD b25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCQkJCVByb2Nl c3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCQkJCQl9CiAKIAkJCQkJLyogUmVzZXQgdGlt ZW91dC4gKi8KIAkJCQkJbGFzdF9yZWN2X3RpbWVzdGFtcCA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKQEAgLTQxNzYsMTEgKzQxNzQsMTEgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9n UmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCQlicmVhazsKIAogCQkvKgotCQkgKiBXYWl0IGZv ciBtb3JlIGRhdGEgb3IgbGF0Y2guICBJZiB3ZSBoYXZlIHVuZmx1c2hlZCB0cmFuc2FjdGlv bnMsCi0JCSAqIHdha2UgdXAgYWZ0ZXIgV2FsV3JpdGVyRGVsYXkgdG8gc2VlIGlmIHRoZXkn dmUgYmVlbiBmbHVzaGVkIHlldCAoaW4KLQkJICogd2hpY2ggY2FzZSB3ZSBzaG91bGQgc2Vu ZCBhIGZlZWRiYWNrIG1lc3NhZ2UpLiAgT3RoZXJ3aXNlLCB0aGVyZSdzCi0JCSAqIG5vIHBh cnRpY3VsYXIgdXJnZW5jeSBhYm91dCB3YWtpbmcgdXAgdW5sZXNzIHdlIGdldCBkYXRhIG9y IGEKLQkJICogc2lnbmFsLgorCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgaW50ZXJydXB0 LiAgSWYgd2UgaGF2ZSB1bmZsdXNoZWQKKwkJICogdHJhbnNhY3Rpb25zLCB3YWtlIHVwIGFm dGVyIFdhbFdyaXRlckRlbGF5IHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4KKwkJICogZmx1c2hl ZCB5ZXQgKGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIHNlbmQgYSBmZWVkYmFjayBtZXNzYWdl KS4KKwkJICogT3RoZXJ3aXNlLCB0aGVyZSdzIG5vIHBhcnRpY3VsYXIgdXJnZW5jeSBhYm91 dCB3YWtpbmcgdXAgdW5sZXNzIHdlCisJCSAqIGdldCBkYXRhIG9yIGEgc2lnbmFsLgogCQkg Ki8KIAkJaWYgKCFkbGlzdF9pc19lbXB0eSgmbHNuX21hcHBpbmcpKQogCQkJd2FpdF90aW1l ID0gV2FsV3JpdGVyRGVsYXk7CkBAIC00MjAxLDIzICs0MTk5LDIyIEBAIExvZ2ljYWxSZXBB cHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCQkJCXdhaXRfdGltZSA9IE1p bih3YWl0X3RpbWUsIE15U3Vic2NyaXB0aW9uLT5tYXhyZXRlbnRpb24pOwogCQl9CiAKLQkJ cmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9S RUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgZmQsIHdhaXRfdGltZSwKLQkJCQkJCQkgICBX QUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfTUFJTik7CisJCXJjID0gV2FpdEludGVycnVwdE9y U29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRf V0FJVF9XQUtFVVAgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKKwkJ CQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfSU5URVJSVVBUIHwKKwkJCQkJCQkJ ICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIGZkLCB3 YWl0X3RpbWUsCisJCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOKTsK IAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkK IAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9XQUlUX1dBS0VVUCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAK LQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRp bmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19S RUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQlp ZiAocmMgJiBXTF9USU1FT1VUKQogCQl7CkBAIC01ODg4LDggKzU4ODUsMTMgQEAgU2V0dXBB cHBseU9yU3luY1dvcmtlcihpbnQgd29ya2VyX3Nsb3QpCiAKIAlBc3NlcnQoYW1fdGFibGVz eW5jX3dvcmtlcigpIHx8IGFtX3NlcXVlbmNlc3luY193b3JrZXIoKSB8fCBhbV9sZWFkZXJf YXBwbHlfd29ya2VyKCkpOwogCi0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFz aWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwkvKiBTZXR1 cCBpbnRlcnJ1cHQgaGFuZGxpbmcgKi8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJz KCk7CisKKwkvKiBPdmVycmlkZSB0aGUgaGFuZGxlciBmb3IgcGFyYWxsbGVsIG1lc3NhZ2Vz ICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRSwg UHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlcyk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVS UlVQVF9QQVJBTExFTF9NRVNTQUdFKTsKKwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCAyOGM3MDE5NDAy Yi4uOTc0MmRkZDFmZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTQ0LDkgKzQ0 LDkgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY29t bW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC02MjIs NyArNjIyLDYgQEAgUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25zdCBjaGFyICpuYW1lLCBi b29sIG5vd2FpdCwgYm9vbCBlcnJvcl9pZl9pbnZhbGlkKQogewogCVJlcGxpY2F0aW9uU2xv dCAqczsKIAlQcm9jTnVtYmVyCWFjdGl2ZV9wcm9jOwotCWludAkJCWFjdGl2ZV9waWQ7CiAK IAlBc3NlcnQobmFtZSAhPSBOVUxMKTsKIApAQCAtNjg1LDcgKzY4NCw2IEBAIHJldHJ5Ogog CQlzLT5hY3RpdmVfcHJvYyA9IGFjdGl2ZV9wcm9jID0gTXlQcm9jTnVtYmVyOwogCQlSZXBs aWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKHMsIDAsIHRydWUpOwogCX0KLQlhY3RpdmVf cGlkID0gR2V0UEdQcm9jQnlOdW1iZXIoYWN0aXZlX3Byb2MpLT5waWQ7CiAJTFdMb2NrUmVs ZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgpAQCAtNzA3LDcgKzcw NSw3IEBAIHJldHJ5OgogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX0lOX1VTRSksCiAJCQkJIGVycm1zZygicmVwbGljYXRpb24gc2xvdCBcIiVzXCIg aXMgYWN0aXZlIGZvciBQSUQgJWQiLAotCQkJCQkJTmFtZVN0cihzLT5kYXRhLm5hbWUpLCBh Y3RpdmVfcGlkKSkpOworCQkJCQkJTmFtZVN0cihzLT5kYXRhLm5hbWUpLCBHZXRQR1Byb2NC eU51bWJlcihhY3RpdmVfcHJvYyktPnBpZCkpKTsKIAl9CiAJZWxzZSBpZiAoIW5vd2FpdCkK IAkJQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOyAvKiBubyBzbGVlcCBuZWVkZWQg YWZ0ZXIgYWxsICovCkBAIC0xOTY4LDcgKzE5NjYsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlP YnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCQkJCQkgICBPaWQgZGJv aWQsIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJCQkJCQkJICAg Ym9vbCAqcmVsZWFzZWRfbG9ja19vdXQpCiB7Ci0JaW50CQkJbGFzdF9zaWduYWxlZF9waWQg PSAwOworCVByb2NOdW1iZXIJbGFzdF9zaWduYWxlZF9wcm9jID0gSU5WQUxJRF9QUk9DX05V TUJFUjsKIAlib29sCQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CiAJYm9vbAkJaW52YWxpZGF0 ZWQgPSBmYWxzZTsKIAlUaW1lc3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSA9IDA7CkBAIC0xOTc4 LDcgKzE5NzYsNiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBv c3NpYmxlX2NhdXNlcywKIAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsKIAkJTmFtZURhdGEJ c2xvdG5hbWU7CiAJCVByb2NOdW1iZXIJYWN0aXZlX3Byb2M7Ci0JCWludAkJCWFjdGl2ZV9w aWQgPSAwOwogCQlSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlkYXRp b25fY2F1c2UgPSBSU19JTlZBTF9OT05FOwogCQlUaW1lc3RhbXBUeiBub3cgPSAwOwogCQls b25nCQlzbG90X2lkbGVfc2VjcyA9IDA7CkBAIC0yMDYyLDExICsyMDU5LDYgQEAgSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkv KiBMZXQgY2FsbGVyIGtub3cgKi8KIAkJCWludmFsaWRhdGVkID0gdHJ1ZTsKIAkJfQotCQll bHNlCi0JCXsKLQkJCWFjdGl2ZV9waWQgPSBHZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJv YyktPnBpZDsKLQkJCUFzc2VydChhY3RpdmVfcGlkICE9IDApOwotCQl9CiAKIAkJU3Bpbkxv Y2tSZWxlYXNlKCZzLT5tdXRleCk7CiAKQEAgLTIxMDUsMjIgKzIwOTcsMjUgQEAgSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkg KiBwcm9jZXNzIG93bnMgaXQuIFRvIGhhbmRsZSB0aGF0LCB3ZSBzaWduYWwgb25seSBpZiB0 aGUgUElEIG9mCiAJCQkgKiB0aGUgb3duaW5nIHByb2Nlc3MgaGFzIGNoYW5nZWQgZnJvbSB0 aGUgcHJldmlvdXMgdGltZS4gKFRoaXMKIAkJCSAqIGxvZ2ljIGFzc3VtZXMgdGhhdCB0aGUg c2FtZSBQSUQgaXMgbm90IHJldXNlZCB2ZXJ5IHF1aWNrbHkuKQorCQkJICoKKwkJCSAqIEZJ WE1FOiBuZWVkIGFub3RoZXIgY2hlY2sgbm93IHRoYXQgd2UncmUgdXNpbmcgUHJvY051bWJl cnMsCisJCQkgKiB3aGljaCBkbyBnZXQgcmVjeWNsZWQgcXVpY2tseQogCQkJICovCi0JCQlp ZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKKwkJCWlmIChsYXN0X3NpZ25h bGVkX3Byb2MgIT0gYWN0aXZlX3Byb2MpCiAJCQl7Ci0JCQkJUmVwb3J0U2xvdEludmFsaWRh dGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUsIGFjdGl2ZV9waWQsCisJCQkJUmVwb3J0 U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUsCisJCQkJCQkJCQkg ICBHZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyktPnBpZCwKIAkJCQkJCQkJCSAgIHNs b3RuYW1lLCByZXN0YXJ0X2xzbiwKIAkJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RD b25mbGljdEhvcml6b24sCiAJCQkJCQkJCQkgICBzbG90X2lkbGVfc2Vjcyk7CiAKIAkJCQlp ZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTaWduYWxSZWNv dmVyeUNvbmZsaWN0KEdldFBHUHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKSwKLQkJCQkJCQkJ CQkJCSAgYWN0aXZlX3BpZCwKIAkJCQkJCQkJCQkJCSAgUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1QpOwogCQkJCWVsc2UKLQkJCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3BpZCwgU0lH VEVSTSk7CisJCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFURSwgYWN0aXZl X3Byb2MpOwogCi0JCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3RpdmVfcGlkOworCQkJCWxh c3Rfc2lnbmFsZWRfcHJvYyA9IGFjdGl2ZV9wcm9jOwogCQkJfQogCiAJCQkvKiBXYWl0IHVu dGlsIHRoZSBzbG90IGlzIHJlbGVhc2VkLiAqLwpAQCAtMjE2MSw3ICsyMTU2LDggQEAgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJ CQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7 CiAKLQkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9uX2NhdXNlLCBmYWxz ZSwgYWN0aXZlX3BpZCwKKwkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9u X2NhdXNlLCBmYWxzZSwKKwkJCQkJCQkJICAgR2V0UEdQcm9jQnlOdW1iZXIoYWN0aXZlX3By b2MpLT5waWQsCiAJCQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xzbiwKIAkJCQkJCQkJ ICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJICAgc2xv dF9pZGxlX3NlY3MpOwpAQCAtMzI1MywxMSArMzI0OSw4IEBAIFdhaXRGb3JTdGFuZGJ5Q29u ZmlybWF0aW9uKFhMb2dSZWNQdHIgd2FpdF9mb3JfbHNuKQogCXsKIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQ KTsKLQkJfQogCiAJCS8qIEV4aXQgaWYgZG9uZSB3YWl0aW5nIGZvciBldmVyeSBzbG90LiAq LwogCQlpZiAoU3RhbmRieVNsb3RzSGF2ZUNhdWdodHVwKHdhaXRfZm9yX2xzbiwgV0FSTklO RykpCkBAIC0zMjY3LDYgKzMyNjAsOCBAQCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihY TG9nUmVjUHRyIHdhaXRfZm9yX2xzbikKIAkJICogV2FpdCBmb3IgdGhlIHNsb3RzIGluIHRo ZSBzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90cyB0byBjYXRjaCB1cCwKIAkJICogYnV0IHVz ZSBhIHRpbWVvdXQgKDFzKSBzbyB3ZSBjYW4gYWxzbyBjaGVjayBpZiB0aGUKIAkJICogc3lu Y2hyb25pemVkX3N0YW5kYnlfc2xvdHMgaGFzIGJlZW4gY2hhbmdlZC4KKwkJICoKKwkJICog RklYTUU6IEkgdGhpbmsgd2UgbmVlZCBhIHdheSB0byBhZGQgYSBDViB0byBXYWl0RXZlbnRT ZXQKIAkJICovCiAJCUNvbmRpdGlvblZhcmlhYmxlVGltZWRTbGVlcCgmV2FsU25kQ3RsLT53 YWxfY29uZmlybV9yY3ZfY3YsIDEwMDAsCiAJCQkJCQkJCQlXQUlUX0VWRU5UX1dBSVRfRk9S X1NUQU5EQllfQ09ORklSTUFUSU9OKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3N5bmNyZXAuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYwpp bmRleCA3ZWE2MDAxZTlhZC4uMzVlYzgwNDczOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3N5bmNyZXAuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z eW5jcmVwLmMKQEAgLTc2LDYgKzc2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0Lmgi CiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCkBAIC0yNjUsMjIgKzI2NiwyMiBAQCBTeW5jUmVw V2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJLyoKIAkgKiBXYWl0 IGZvciBzcGVjaWZpZWQgTFNOIHRvIGJlIGNvbmZpcm1lZC4KIAkgKgotCSAqIEVhY2ggcHJv YyBoYXMgaXRzIG93biB3YWl0IGxhdGNoLCBzbyB3ZSBwZXJmb3JtIGEgbm9ybWFsIGxhdGNo CisJICogRWFjaCBwcm9jIGhhcyBpdHMgb3duIHdhaXQgaW50ZXJydXB0IHZlY3Rvciwgc28g d2UgcGVyZm9ybSBhIG5vcm1hbAogCSAqIGNoZWNrL3dhaXQgbG9vcCBoZXJlLgogCSAqLwog CWZvciAoOzspCiAJewogCQlpbnQJCQlyYzsKIAotCQkvKiBNdXN0IHJlc2V0IHRoZSBsYXRj aCBiZWZvcmUgdGVzdGluZyBzdGF0ZS4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ LyogTXVzdCBjbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgYmVmb3JlIHRlc3Rpbmcgc3RhdGUu ICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyoK LQkJICogQWNxdWlyaW5nIHRoZSBsb2NrIGlzIG5vdCBuZWVkZWQsIHRoZSBsYXRjaCBlbnN1 cmVzIHByb3BlcgotCQkgKiBiYXJyaWVycy4gSWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBkb25l LCB3ZSBtdXN0IHJlYWxseSBiZSBkb25lLAotCQkgKiBiZWNhdXNlIG9uY2Ugd2Fsc2VuZGVy IGNoYW5nZXMgdGhlIHN0YXRlIHRvIFNZTkNfUkVQX1dBSVRfQ09NUExFVEUsCi0JCSAqIGl0 IHdpbGwgbmV2ZXIgdXBkYXRlIGl0IGFnYWluLCBzbyB3ZSBjYW4ndCBiZSBzZWVpbmcgYSBz dGFsZSB2YWx1ZQotCQkgKiBpbiB0aGF0IGNhc2UuCisJCSAqIEFjcXVpcmluZyB0aGUgbG9j ayBpcyBub3QgbmVlZGVkLCB0aGUgaW50ZXJydXB0IGVuc3VyZXMgcHJvcGVyCisJCSAqIGJh cnJpZXJzIChGSVhNRTogaXMgdGhhdCBzbz8pLiBJZiBpdCBsb29rcyBsaWtlIHdlJ3JlIGRv bmUsIHdlIG11c3QKKwkJICogcmVhbGx5IGJlIGRvbmUsIGJlY2F1c2Ugb25jZSB3YWxzZW5k ZXIgY2hhbmdlcyB0aGUgc3RhdGUgdG8KKwkJICogU1lOQ19SRVBfV0FJVF9DT01QTEVURSwg aXQgd2lsbCBuZXZlciB1cGRhdGUgaXQgYWdhaW4sIHNvIHdlIGNhbid0CisJCSAqIGJlIHNl ZWluZyBhIHN0YWxlIHZhbHVlIGluIHRoYXQgY2FzZS4KIAkJICovCiAJCWlmIChNeVByb2Mt PnN5bmNSZXBTdGF0ZSA9PSBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFKQogCQkJYnJlYWs7CkBA IC0yOTQsMTAgKzI5NSwxMCBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwg Ym9vbCBjb21taXQpCiAJCSAqIGVudGl0bGVkIHRvIGFzc3VtZSB0aGF0IGFuIGFja25vd2xl ZGdlZCBjb21taXQgaXMgYWxzbyByZXBsaWNhdGVkLAogCQkgKiB3aGljaCBtaWdodCBub3Qg YmUgdHJ1ZS4gU28gaW4gdGhpcyBjYXNlIHdlIGlzc3VlIGEgV0FSTklORyAod2hpY2gKIAkJ ICogc29tZSBjbGllbnRzIG1heSBiZSBhYmxlIHRvIGludGVycHJldCkgYW5kIHNodXQgb2Zm IGZ1cnRoZXIgb3V0cHV0LgotCQkgKiBXZSBkbyBOT1QgcmVzZXQgUHJvY0RpZVBlbmRpbmcs IHNvIHRoYXQgdGhlIHByb2Nlc3Mgd2lsbCBkaWUgYWZ0ZXIKLQkJICogdGhlIGNvbW1pdCBp cyBjbGVhbmVkIHVwLgorCQkgKiBXZSBkbyBOT1QgY2xlYXIgdGhlIGludGVycnVwdCBiaXQs IHNvIHRoYXQgdGhlIHByb2Nlc3Mgd2lsbCBkaWUKKwkJICogYWZ0ZXIgdGhlIGNvbW1pdCBp cyBjbGVhbmVkIHVwLgogCQkgKi8KLQkJaWYgKFByb2NEaWVQZW5kaW5nKQorCQlpZiAoSW50 ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRFKSkKIAkJewogCQkJZXJlcG9ydChX QVJOSU5HLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKQEAgLTMx NCw5ICszMTUsOCBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBj b21taXQpCiAJCSAqIGFsdG9nZXRoZXIgaXMgbm90IGhlbHBmdWwsIHNvIHdlIGp1c3QgdGVy bWluYXRlIHRoZSB3YWl0IHdpdGggYQogCQkgKiBzdWl0YWJsZSB3YXJuaW5nLgogCQkgKi8K LQkJaWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5U RVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCXsKLQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZh bHNlOwogCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJjYW5jZWxpbmcgd2Fp dCBmb3Igc3luY2hyb25vdXMgcmVwbGljYXRpb24gZHVlIHRvIHVzZXIgcmVxdWVzdCIpLAog CQkJCQkgZXJyZGV0YWlsKCJUaGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgY29tbWl0dGVk IGxvY2FsbHksIGJ1dCBtaWdodCBub3QgaGF2ZSBiZWVuIHJlcGxpY2F0ZWQgdG8gdGhlIHN0 YW5kYnkuIikpKTsKQEAgLTMyNSwxMSArMzI1LDE1IEBAIFN5bmNSZXBXYWl0Rm9yTFNOKFhM b2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJfQogCiAJCS8qCi0JCSAqIFdhaXQgb24g bGF0Y2guICBBbnkgY29uZGl0aW9uIHRoYXQgc2hvdWxkIHdha2UgdXMgdXAgd2lsbCBzZXQg dGhlCi0JCSAqIGxhdGNoLCBzbyBubyBuZWVkIGZvciB0aW1lb3V0LgorCQkgKiBXYWl0IG9u IGludGVycnVwdC4gIEFueSBjb25kaXRpb24gdGhhdCBzaG91bGQgd2FrZSB1cyB1cCB3aWxs IHNldAorCQkgKiB0aGUgYXBwcm9wcmlhdGUgaW50ZXJydXB0LCBzbyBubyBuZWVkIGZvciB0 aW1lb3V0LgogCQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VU IHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgLTEsCi0JCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19S RVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQIHwKKwkJ CQkJCSAgIElOVEVSUlVQVF9URVJNSU5BVEUgfAorCQkJCQkJICAgSU5URVJSVVBUX1FVRVJZ X0NBTkNFTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgs CisJCQkJCQkgICAtMSwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfU1lOQ19SRVApOwogCiAJCS8q CiAJCSAqIElmIHRoZSBwb3N0bWFzdGVyIGRpZXMsIHdlJ2xsIHByb2JhYmx5IG5ldmVyIGdl dCBhbiBhY2tub3dsZWRnbWVudCwKQEAgLTMzNyw3ICszNDEsNyBAQCBTeW5jUmVwV2FpdEZv ckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJCSAqLwogCQlpZiAocmMgJiBX TF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7Ci0JCQlQcm9jRGllUGVuZGluZyA9IHRydWU7CisJ CQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKIAkJCXdoZXJlVG9TZW5k T3V0cHV0ID0gRGVzdE5vbmU7CiAJCQlTeW5jUmVwQ2FuY2VsV2FpdCgpOwogCQkJYnJlYWs7 CkBAIC05NDQsNyArOTQ4LDcgQEAgU3luY1JlcFdha2VRdWV1ZShib29sIGFsbCwgaW50IG1v ZGUpCiAJCS8qCiAJCSAqIFdha2Ugb25seSB3aGVuIHdlIGhhdmUgc2V0IHN0YXRlIGFuZCBy ZW1vdmVkIGZyb20gcXVldWUuCiAJCSAqLwotCQlTZXRMYXRjaCgmKHByb2MtPnByb2NMYXRj aCkpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhwcm9jKSk7CiAKIAkJbnVtcHJvY3MrKzsKIAl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCAzNTJhM2YzMWU5NS4uZjA2OThlNjExOTQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNjAsMTIgKzYw LDEzIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d3YWl0LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2lu dGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRl ICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9hdXhwcm9jZXNzLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC0y NDYsMTYgKzI0Nyw4IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCS8qIEFycmFuZ2UgdG8gY2xlYW4gdXAg YXQgd2FscmVjZWl2ZXIgZXhpdCAqLwogCW9uX3NobWVtX2V4aXQoV2FsUmN2RGllLCBQb2lu dGVyR2V0RGF0dW0oJnN0YXJ0cG9pbnRUTEkpKTsKIAotCS8qIFByb3Blcmx5IGFjY2VwdCBv ciBpZ25vcmUgc2lnbmFscyB0aGUgcG9zdG1hc3RlciBtaWdodCBzZW5kIHVzICovCi0JcHFz aWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsgLyogc2V0IGZs YWcgdG8gcmVhZCBjb25maWcKLQkJCQkJCQkJCQkJCQkgKiBmaWxlICovCi0JcHFzaWduYWwo U0lHSU5ULCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwkJLyogcmVxdWVz dCBzaHV0ZG93biAqLwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAg YnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04p OwotCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdO KTsKKwkvKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRsZXJzLiBXZSBoYXZlIG5vIHNwZWNpYWwg bmVlZHMuICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOwogCiAJLyogTG9h ZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCiAJbG9hZF9maWxlKCJsaWJwcXdh bHJlY2VpdmVyIiwgZmFsc2UpOwpAQCAtNDM5LDkgKzQzMiw4IEBAIFdhbFJlY2VpdmVyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CQkJCS8qIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50 bHkgKi8KIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCQkJaWYgKENvbmZpZ1Jl bG9hZFBlbmRpbmcpCisJCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQpKQogCQkJCXsKLQkJCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwog CQkJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCQkJLyogcmVjb21wdXRl IHdha2V1cCB0aW1lcyAqLwogCQkJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CkBA IC01MTQsMjUgKzUwNiwyNyBAQCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1 cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkJCS8qCiAJCQkJICogSWRl YWxseSB3ZSB3b3VsZCByZXVzZSBhIFdhaXRFdmVudFNldCBvYmplY3QgcmVwZWF0ZWRseQot CQkJCSAqIGhlcmUgdG8gYXZvaWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0TGF0Y2hPclNvY2tl dCBvbiBlcG9sbAotCQkJCSAqIHN5c3RlbXMsIGJ1dCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQg bGlicHEgKG9yIGFueSBvdGhlcgotCQkJCSAqIHdhbHJlY2VpdmVyIGltcGxlbWVudGF0aW9u KSBoYXMgdGhlIHNhbWUgc29ja2V0IChldmVuIGlmCi0JCQkJICogdGhlIGZkIGlzIHRoZSBz YW1lIG51bWJlciwgaXQgbWF5IGhhdmUgYmVlbiBjbG9zZWQgYW5kCisJCQkJICogaGVyZSB0 byBhdm9pZCB0aGUgb3ZlcmhlYWRzIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBvbgorCQkJ CSAqIGVwb2xsIHN5c3RlbXMsIGJ1dCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgbGlicHEgKG9y IGFueQorCQkJCSAqIG90aGVyIHdhbHJlY2VpdmVyIGltcGxlbWVudGF0aW9uKSBoYXMgdGhl IHNhbWUgc29ja2V0IChldmVuCisJCQkJICogaWYgdGhlIGZkIGlzIHRoZSBzYW1lIG51bWJl ciwgaXQgbWF5IGhhdmUgYmVlbiBjbG9zZWQgYW5kCiAJCQkJICogcmVvcGVuZWQgc2luY2Ug dGhlIGxhc3QgdGltZSkuICBJbiBmdXR1cmUsIGlmIHRoZXJlIGlzIGEKIAkJCQkgKiBmdW5j dGlvbiBmb3IgcmVtb3Zpbmcgc29ja2V0cyBmcm9tIFdhaXRFdmVudFNldCwgdGhlbiB3ZQog CQkJCSAqIGNvdWxkIGFkZCBhbmQgcmVtb3ZlIGp1c3QgdGhlIHNvY2tldCBlYWNoIHRpbWUs IHBvdGVudGlhbGx5CiAJCQkJICogYXZvaWRpbmcgc29tZSBzeXN0ZW0gY2FsbHMuCiAJCQkJ ICovCiAJCQkJQXNzZXJ0KHdhaXRfZmQgIT0gUEdJTlZBTElEX1NPQ0tFVCk7Ci0JCQkJcmMg PSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9Q TV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8Ci0JCQkJCQkJCQkgICBXTF9USU1FT1VU IHwgV0xfTEFUQ0hfU0VULAotCQkJCQkJCQkJICAgd2FpdF9mZCwKLQkJCQkJCQkJCSAgIG5h cCwKLQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOwotCQkJCWlm IChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldChD aGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9X QUtFVVAgfAorCQkJCQkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAorCQkJCQkJ CQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJ CQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9JTlRFUlJVUFQsCisJCQkJCQkJCQkJICAgd2Fp dF9mZCwKKwkJCQkJCQkJCQkgICBuYXAsCisJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9XQUxf UkVDRUlWRVJfTUFJTik7CisJCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJCXsKLQkJ CQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQKTsKIAkJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJCQlp ZiAod2FscmN2LT5mb3JjZV9yZXBseSkKQEAgLTY4MCw3ICs2NzQsNyBAQCBXYWxSY3ZXYWl0 Rm9yU3RhcnRQb3NpdGlvbihYTG9nUmVjUHRyICpzdGFydHBvaW50LCBUaW1lTGluZUlEICpz dGFydHBvaW50VExJKQogCVdha2V1cFJlY292ZXJ5KCk7CiAJZm9yICg7OykKIAl7Ci0JCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCk7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtNzEyLDggKzcwNiwx MiBAQCBXYWxSY3ZXYWl0Rm9yU3RhcnRQb3NpdGlvbihYTG9nUmVjUHRyICpzdGFydHBvaW50 LCBUaW1lTGluZUlEICpzdGFydHBvaW50VExJKQogCQl9CiAJCVNwaW5Mb2NrUmVsZWFzZSgm d2FscmN2LT5tdXRleCk7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRD SF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfV0FM X1JFQ0VJVkVSX1dBSVRfU1RBUlQpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1RFUk1JTkFURSB8CisJCQkJ CQkJIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgMCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9XQUxf UkVDRUlWRVJfV0FJVF9TVEFSVCk7CiAJfQogCiAJaWYgKHVwZGF0ZV9wcm9jZXNzX3RpdGxl KQpAQCAtMTM4NCw3ICsxMzgyLDcgQEAgV2FsUmN2Rm9yY2VSZXBseSh2b2lkKQogCXByb2Nu byA9IFdhbFJjdi0+cHJvY25vOwogCVNwaW5Mb2NrUmVsZWFzZSgmV2FsUmN2LT5tdXRleCk7 CiAJaWYgKHByb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmR2V0 UEdQcm9jQnlOdW1iZXIocHJvY25vKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfV0FJVF9XQUtFVVAsIHByb2Nubyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKaW5kZXggNDJlM2UxNzBiYzAuLjU2 Y2E4ZjczODljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNl aXZlcmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJm dW5jcy5jCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRl cm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBA IC0zMzIsNyArMzMzLDcgQEAgUmVxdWVzdFhMb2dTdHJlYW1pbmcoVGltZUxpbmVJRCB0bGks IFhMb2dSZWNQdHIgcmVjcHRyLCBjb25zdCBjaGFyICpjb25uaW5mbywKIAlpZiAobGF1bmNo KQogCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9TVEFSVF9XQUxSRUNFSVZFUik7 CiAJZWxzZSBpZiAod2FscmN2X3Byb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0 TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHJjdl9wcm9jKS0+cHJvY0xhdGNoKTsKKwkJ U2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIHdhbHJjdl9wcm9jKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNWFjYzhlZTNh YzguLjQ0NmVhZmU2OTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpA QCAtMjUsMTQgKzI1LDE0IEBACiAgKiB0aGUgd2Fsc2VuZGVyIHdpbGwgZXhpdCBxdWlja2x5 IHdpdGhvdXQgc2VuZGluZyBhbnkgbW9yZSBYTE9HIHJlY29yZHMuCiAgKgogICogSWYgdGhl IHNlcnZlciBpcyBzaHV0IGRvd24sIGNoZWNrcG9pbnRlciBzZW5kcyB1cwotICogUFJPQ1NJ R19XQUxTTkRfSU5JVF9TVE9QUElORyBhZnRlciBhbGwgcmVndWxhciBiYWNrZW5kcyBoYXZl IGV4aXRlZC4gIElmCisgKiBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgYWZ0ZXIg YWxsIHJlZ3VsYXIgYmFja2VuZHMgaGF2ZSBleGl0ZWQuICBJZgogICogdGhlIGJhY2tlbmQg aXMgaWRsZSBvciBydW5zIGFuIFNRTCBxdWVyeSB0aGlzIGNhdXNlcyB0aGUgYmFja2VuZCB0 bwogICogc2h1dGRvd24sIGlmIGxvZ2ljYWwgcmVwbGljYXRpb24gaXMgaW4gcHJvZ3Jlc3Mg YWxsIGV4aXN0aW5nIFdBTCByZWNvcmRzCiAgKiBhcmUgcHJvY2Vzc2VkIGZvbGxvd2VkIGJ5 IGEgc2h1dGRvd24uICBPdGhlcndpc2UgdGhpcyBjYXVzZXMgdGhlIHdhbHNlbmRlcgogICog dG8gc3dpdGNoIHRvIHRoZSAic3RvcHBpbmciIHN0YXRlLiBJbiB0aGlzIHN0YXRlLCB0aGUg d2Fsc2VuZGVyIHdpbGwgcmVqZWN0CiAgKiBhbnkgZnVydGhlciByZXBsaWNhdGlvbiBjb21t YW5kcy4gVGhlIGNoZWNrcG9pbnRlciBiZWdpbnMgdGhlIHNodXRkb3duCiAgKiBjaGVja3Bv aW50IG9uY2UgYWxsIHdhbHNlbmRlcnMgYXJlIGNvbmZpcm1lZCBhcyBzdG9wcGluZy4gV2hl biB0aGUgc2h1dGRvd24KLSAqIGNoZWNrcG9pbnQgZmluaXNoZXMsIHRoZSBwb3N0bWFzdGVy IHNlbmRzIHVzIFNJR1VTUjIuIFRoaXMgaW5zdHJ1Y3RzCisgKiBjaGVja3BvaW50IGZpbmlz aGVzLCB0aGUgcG9zdG1hc3RlciBzZW5kcyB1cyBJTlRFUlJVUFRfV0FMU05EX1NUT1AuIFRo aXMgaW5zdHJ1Y3RzCiAgKiB3YWxzZW5kZXIgdG8gc2VuZCBhbnkgb3V0c3RhbmRpbmcgV0FM LCBpbmNsdWRpbmcgdGhlIHNodXRkb3duIGNoZWNrcG9pbnQKICAqIHJlY29yZCwgd2FpdCBm b3IgaXQgdG8gYmUgcmVwbGljYXRlZCB0byB0aGUgc3RhbmRieSwgYW5kIHRoZW4gZXhpdC4K ICAqCkBAIC02MywxMyArNjMsMTQgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisj aW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxl cnMuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHJvdG9jb2wuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJub2Rlcy9yZXBsbm9kZXMuaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgpAQCAtMjAxLDE1ICsyMDIsMTIgQEAg c3RhdGljIGJvb2wgc3RyZWFtaW5nRG9uZVJlY2VpdmluZzsKIC8qIEFyZSB3ZSB0aGVyZSB5 ZXQ/ICovCiBzdGF0aWMgYm9vbCBXYWxTbmRDYXVnaHRVcCA9IGZhbHNlOwogCi0vKiBGbGFn cyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzIGZvciBsYXRlciBzZXJ2aWNlIGluIG1haW4gbG9v cCAqLwotc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBnb3RfU0lHVVNSMiA9IGZhbHNl Owotc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBnb3RfU1RPUFBJTkcgPSBmYWxzZTsK LQogLyoKICAqIFRoaXMgaXMgc2V0IHdoaWxlIHdlIGFyZSBzdHJlYW1pbmcuIFdoZW4gbm90 IHNldAotICogUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORyBzaWduYWwgd2lsbCBiZSBo YW5kbGVkIGxpa2UgU0lHVEVSTS4gV2hlbiBzZXQsCi0gKiB0aGUgbWFpbiBsb29wIGlzIHJl c3BvbnNpYmxlIGZvciBjaGVja2luZyBnb3RfU1RPUFBJTkcgYW5kIHRlcm1pbmF0aW5nIHdo ZW4KLSAqIGl0J3Mgc2V0IChhZnRlciBzdHJlYW1pbmcgYW55IHJlbWFpbmluZyBXQUwpLgor ICogSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HIGludGVycnVwdCB3aWxsIGJlIGhh bmRsZWQgbGlrZSBTSUdURVJNLgorICogV2hlbiBzZXQsIHRoZSBtYWluIGxvb3AgaXMgcmVz cG9uc2libGUgZm9yIGNoZWNraW5nCisgKiBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJ TkcgYW5kIHRlcm1pbmF0aW5nIHdoZW4gaXQncyBzZXQgKGFmdGVyCisgKiBzdHJlYW1pbmcg YW55IHJlbWFpbmluZyBXQUwpLgogICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190 IHJlcGxpY2F0aW9uX2FjdGl2ZSA9IGZhbHNlOwogCkBAIC0yODIsNyArMjgwLDcgQEAgc3Rh dGljIHZvaWQgV2FsU25kS2VlcGFsaXZlKGJvb2wgcmVxdWVzdFJlcGx5LCBYTG9nUmVjUHRy IHdyaXRlUHRyKTsKIHN0YXRpYyB2b2lkIFdhbFNuZEtlZXBhbGl2ZUlmTmVjZXNzYXJ5KHZv aWQpOwogc3RhdGljIHZvaWQgV2FsU25kQ2hlY2tUaW1lT3V0KHZvaWQpOwogc3RhdGljIGxv bmcgV2FsU25kQ29tcHV0ZVNsZWVwdGltZShUaW1lc3RhbXBUeiBub3cpOwotc3RhdGljIHZv aWQgV2FsU25kV2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50 MzIgd2FpdF9ldmVudCk7CitzdGF0aWMgdm9pZCBXYWxTbmRXYWl0KHVpbnQzMiBzb2NrZXRf ZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50LCB1aW50MzIgaW50ZXJy dXB0TWFzayk7CiBzdGF0aWMgdm9pZCBXYWxTbmRQcmVwYXJlV3JpdGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgbGFzdF93cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRXcml0ZURhdGEoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQs IGJvb2wgbGFzdF93cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRVcGRhdGVQcm9ncmVzcyhM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlv bklkIHhpZCwKQEAgLTM3MCw3ICszNjgsOCBAQCBXYWxTbmRFcnJvckNsZWFudXAodm9pZCkK IAlpZiAoIUlzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKSkKIAkJUmVsZWFzZUF1 eFByb2Nlc3NSZXNvdXJjZXMoZmFsc2UpOwogCi0JaWYgKGdvdF9TVE9QUElORyB8fCBnb3Rf U0lHVVNSMikKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX0lOSVRf U1RPUFBJTkcpIHx8CisJCUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9TVE9Q KSkKIAkJcHJvY19leGl0KDApOwogCiAJLyogUmV2ZXJ0IGJhY2sgdG8gc3RhcnR1cCBzdGF0 ZSAqLwpAQCAtNzM4LDggKzczNywxNiBAQCBIYW5kbGVVcGxvYWRNYW5pZmVzdFBhY2tldChT dHJpbmdJbmZvIGJ1Ziwgb2ZmX3QgKm9mZnNldCwKIHsKIAlpbnQJCQltdHlwZTsKIAlpbnQJ CQltYXhtc2dsZW47CisJYm9vbAkJc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZDsKIAotCUhP TERfQ0FOQ0VMX0lOVEVSUlVQVFMoKTsKKwkvKgorCSAqIExpa2UgaW4gU29ja2V0QmFja2Vu ZCwgZG9uJ3QgYWxsb3cgcXVlcnkgY2FuY2VsIGludGVycnVwdHMgd2hpbGUKKwkgKiByZWFk aW5nIGlucHV0IGZyb20gdGhlIGNsaWVudCwgYmVjYXVzZSB3ZSBtaWdodCBsb3NlIHN5bmMg aW4gdGhlIEZFL0JFCisJICogcHJvdG9jb2wuCisJICovCisJc2F2ZV9xdWVyeV9jYW5jZWxf ZW5hYmxlZCA9IChFbmFibGVkSW50ZXJydXB0c01hc2sgJiBJTlRFUlJVUFRfUVVFUllfQ0FO Q0VMKSAhPSAwOworCWlmIChzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkKQorCQlEaXNhYmxl SW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCiAJcHFfc3RhcnRtc2dyZWFk KCk7CiAJbXR5cGUgPSBwcV9nZXRieXRlKCk7CkBAIC03NzMsNyArNzgwLDkgQEAgSGFuZGxl VXBsb2FkTWFuaWZlc3RQYWNrZXQoU3RyaW5nSW5mbyBidWYsIG9mZl90ICpvZmZzZXQsCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxV UkUpLAogCQkJCSBlcnJtc2coInVuZXhwZWN0ZWQgRU9GIG9uIGNsaWVudCBjb25uZWN0aW9u IHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbiIpKSk7Ci0JUkVTVU1FX0NBTkNFTF9JTlRFUlJV UFRTKCk7CisKKwlpZiAoc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCkKKwkJRW5hYmxlSW50 ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCiAJLyogUHJvY2VzcyB0aGUgbWVz c2FnZSAqLwogCXN3aXRjaCAobXR5cGUpCkBAIC05NzIsMTIgKzk4MSwxNCBAQCBTdGFydFJl cGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAkJU3luY1JlcEluaXRDb25m aWcoKTsKIAogCQkvKiBNYWluIGxvb3Agb2Ygd2Fsc2VuZGVyICovCisJCURpc2FibGVJbnRl cnJ1cHQoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKTsKIAkJcmVwbGljYXRpb25f YWN0aXZlID0gdHJ1ZTsKIAogCQlXYWxTbmRMb29wKFhMb2dTZW5kUGh5c2ljYWwpOwogCiAJ CXJlcGxpY2F0aW9uX2FjdGl2ZSA9IGZhbHNlOwotCQlpZiAoZ290X1NUT1BQSU5HKQorCQlF bmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKTsKKwkJaWYg KEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKSkKIAkJ CXByb2NfZXhpdCgwKTsKIAkJV2FsU25kU2V0U3RhdGUoV0FMU05EU1RBVEVfU1RBUlRVUCk7 CiAKQEAgLTEwMzYsOSArMTA0Nyw5IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNh dGlvbkNtZCAqY21kKQogICogWExvZ1JlYWRlclJvdXRpbmUtPnBhZ2VfcmVhZCBjYWxsYmFj ayBmb3IgbG9naWNhbCBkZWNvZGluZyBjb250ZXh0cywgYXMgYQogICogd2Fsc2VuZGVyIHBy b2Nlc3MuCiAgKgotICogSW5zaWRlIHRoZSB3YWxzZW5kZXIgd2UgY2FuIGRvIGJldHRlciB0 aGFuIHJlYWRfbG9jYWxfeGxvZ19wYWdlLAotICogd2hpY2ggaGFzIHRvIGRvIGEgcGxhaW4g c2xlZXAvYnVzeSBsb29wLCBiZWNhdXNlIHRoZSB3YWxzZW5kZXIncyBsYXRjaCBnZXRzCi0g KiBzZXQgZXZlcnkgdGltZSBXQUwgaXMgZmx1c2hlZC4KKyAqIEluc2lkZSB0aGUgd2Fsc2Vu ZGVyIHdlIGNhbiBkbyBiZXR0ZXIgdGhhbiByZWFkX2xvY2FsX3hsb2dfcGFnZSwgd2hpY2gg aGFzCisgKiB0byBkbyBhIHBsYWluIHNsZWVwL2J1c3kgbG9vcCwgYmVjYXVzZSB0aGUgd2Fs c2VuZGVyJ3MgaW50ZXJydXB0IGdldHMgc2V0CisgKiBldmVyeSB0aW1lIFdBTCBpcyBmbHVz aGVkLgogICovCiBzdGF0aWMgaW50CiBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlKFhMb2dSZWFk ZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwK QEAgLTE0NzUsNyArMTQ4Niw3IEBAIFN0YXJ0TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVw bGljYXRpb25DbWQgKmNtZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coInRl cm1pbmF0aW5nIHdhbHNlbmRlciBwcm9jZXNzIGFmdGVyIHByb21vdGlvbiIpKSk7Ci0JCWdv dF9TVE9QUElORyA9IHRydWU7CisJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUxTTkRf SU5JVF9TVE9QUElORyk7CiAJfQogCiAJLyoKQEAgLTE1MjksNyArMTU0MCw3IEBAIFN0YXJ0 TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAlSZXBsaWNh dGlvblNsb3RSZWxlYXNlKCk7CiAKIAlyZXBsaWNhdGlvbl9hY3RpdmUgPSBmYWxzZTsKLQlp ZiAoZ290X1NUT1BQSU5HKQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxT TkRfSU5JVF9TVE9QUElORykpCiAJCXByb2NfZXhpdCgwKTsKIAlXYWxTbmRTZXRTdGF0ZShX QUxTTkRTVEFURV9TVEFSVFVQKTsKIApAQCAtMTYxOSwxMiArMTYzMCw4IEBAIFdhbFNuZFdy aXRlRGF0YShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBU cmFuc2FjdGlvbklkIHhpZCwKICAqIHRvIGNoYW5nZXMgaW4gc3luY2hyb25vdXMgcmVwbGlj YXRpb24gcmVxdWlyZW1lbnRzLgogICovCiBzdGF0aWMgdm9pZAotV2FsU25kSGFuZGxlQ29u ZmlnUmVsb2FkKHZvaWQpCitQcm9jZXNzV2FsU25kQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZv aWQpCiB7Ci0JaWYgKCFDb25maWdSZWxvYWRQZW5kaW5nKQotCQlyZXR1cm47Ci0KLQlDb25m aWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CiAJU3luY1JlcEluaXRDb25maWcoKTsKIApAQCAtMTY2NCwyMyArMTY3MSwyNyBAQCBQ cm9jZXNzUGVuZGluZ1dyaXRlcyh2b2lkKQogCiAJCS8qIFNsZWVwIHVudGlsIHNvbWV0aGlu ZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0ICovCiAJCVdhbFNuZFdhaXQoV0xfU09DS0VUX1dS SVRFQUJMRSB8IFdMX1NPQ0tFVF9SRUFEQUJMRSwgc2xlZXB0aW1lLAotCQkJCSAgIFdBSVRf RVZFTlRfV0FMX1NFTkRFUl9XUklURV9EQVRBKTsKKwkJCQkgICBXQUlUX0VWRU5UX1dBTF9T RU5ERVJfV1JJVEVfREFUQSwKKwkJCQkgICBDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJ CQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJICAgSU5URVJSVVBUX1dBSVRf V0FLRVVQKTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8K LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIFByb2Nl c3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KLQkJV2Fs U25kSGFuZGxlQ29uZmlnUmVsb2FkKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJ CWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKKwkJCVBy b2Nlc3NXYWxTbmRDb25maWdSZWxvYWRJbnRlcnJ1cHQoKTsKIAogCQkvKiBUcnkgdG8gZmx1 c2ggcGVuZGluZyBvdXRwdXQgdG8gdGhlIGNsaWVudCAqLwogCQlpZiAocHFfZmx1c2hfaWZf d3JpdGFibGUoKSAhPSAwKQogCQkJV2FsU25kU2h1dGRvd24oKTsKIAl9CiAKLQkvKiByZWFj dGl2YXRlIGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KLQlTZXRM YXRjaChNeUxhdGNoKTsKKwkvKiByZWFjdGl2YXRlIGludGVycnVwdCBzbyBXYWxTbmRMb29w IGtub3dzIHRvIGNvbnRpbnVlICovCisJLyogRklYTUU6IHN0aWxsIG5lZWRlZD8gKi8KKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtMTc4 Myw3ICsxNzk0LDcgQEAgUGh5c2ljYWxXYWtldXBMb2dpY2FsV2FsU25kKHZvaWQpCiBzdGF0 aWMgYm9vbAogTmVlZFRvV2FpdEZvclN0YW5kYnlzKFhMb2dSZWNQdHIgZmx1c2hlZF9sc24s IHVpbnQzMiAqd2FpdF9ldmVudCkKIHsKLQlpbnQJCQllbGV2ZWwgPSBnb3RfU1RPUFBJTkcg PyBFUlJPUiA6IFdBUk5JTkc7CisJaW50CQkJZWxldmVsID0gSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpID8gRVJST1IgOiBXQVJOSU5HOwogCWJv b2wJCWZhaWxvdmVyX3Nsb3Q7CiAKIAlmYWlsb3Zlcl9zbG90ID0gKHJlcGxpY2F0aW9uX2Fj dGl2ZSAmJiBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5mYWlsb3Zlcik7CkBAIC0xODcwLDEy ICsxODgxLDEyIEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCVRpbWVz dGFtcFR6IG5vdzsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMg Ki8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIFBy b2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KLQkJ V2FsU25kSGFuZGxlQ29uZmlnUmVsb2FkKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKKwkJ CVByb2Nlc3NXYWxTbmRDb25maWdSZWxvYWRJbnRlcnJ1cHQoKTsKIAogCQkvKiBDaGVjayBm b3IgaW5wdXQgZnJvbSB0aGUgY2xpZW50ICovCiAJCVByb2Nlc3NSZXBsaWVzSWZBbnkoKTsK QEAgLTE4ODUsNyArMTg5Niw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2Mp CiAJCSAqIG90aGVyd2lzZSB3ZSdkIHBvc3NpYmx5IGVuZCB1cCB3YWl0aW5nIGZvciBXQUwg dGhhdCBuZXZlciBnZXRzCiAJCSAqIHdyaXR0ZW4sIGJlY2F1c2Ugd2Fsd3JpdGVyIGhhcyBz aHV0IGRvd24gYWxyZWFkeS4KIAkJICovCi0JCWlmIChnb3RfU1RPUFBJTkcpCisJCWlmIChJ bnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORykpCiAJCQlY TG9nQmFja2dyb3VuZEZsdXNoKCk7CiAKIAkJLyoKQEAgLTE5MTAsNyArMTkyMSw3IEBAIFdh bFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAJCSAqIFJlY2VudEZsdXNoUHRyLCBz byB3ZSBjYW4gc2VuZCBhbGwgcmVtYWluaW5nIGRhdGEgYmVmb3JlIHNodXR0aW5nCiAJCSAq IGRvd24uCiAJCSAqLwotCQlpZiAoZ290X1NUT1BQSU5HKQorCQlpZiAoSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQogCQl7CiAJCQlpZiAoTmVl ZFRvV2FpdEZvclN0YW5kYnlzKFJlY2VudEZsdXNoUHRyLCAmd2FpdF9ldmVudCkpCiAJCQkJ d2FpdF9mb3Jfc3RhbmRieV9hdF9zdG9wID0gdHJ1ZTsKQEAgLTE5OTIsMTEgKzIwMDMsMTUg QEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJCWxhc3RfZmx1c2ggPSBu b3c7CiAJCX0KIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9l dmVudCk7CisJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCB3YWl0X2V2ZW50 LAorCQkJCSAgIENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCSAgICh3YWl0X2Zvcl9z dGFuZGJ5X2F0X3N0b3AgPyAwIDogSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKSB8 CisJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCSAgIElOVEVSUlVQVF9X QUlUX1dBS0VVUCk7CiAJfQogCi0JLyogcmVhY3RpdmF0ZSBsYXRjaCBzbyBXYWxTbmRMb29w IGtub3dzIHRvIGNvbnRpbnVlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmVhY3Rp dmF0ZSBpbnRlcnJ1cHQgZmxhZyBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICov CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAlyZXR1cm4gUmVj ZW50Rmx1c2hQdHI7CiB9CiAKQEAgLTIwMjIsNyArMjAzNyw3IEBAIGV4ZWNfcmVwbGljYXRp b25fY29tbWFuZChjb25zdCBjaGFyICpjbWRfc3RyaW5nKQogCSAqIElmIFdBTCBzZW5kZXIg aGFzIGJlZW4gdG9sZCB0aGF0IHNodXRkb3duIGlzIGdldHRpbmcgY2xvc2UsIHN3aXRjaCBp dHMKIAkgKiBzdGF0dXMgYWNjb3JkaW5nbHkgdG8gaGFuZGxlIHRoZSBuZXh0IHJlcGxpY2F0 aW9uIGNvbW1hbmRzIGNvcnJlY3RseS4KIAkgKi8KLQlpZiAoZ290X1NUT1BQSU5HKQorCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORykpCiAJ CVdhbFNuZFNldFN0YXRlKFdBTFNORFNUQVRFX1NUT1BQSU5HKTsKIAogCS8qCkBAIC0yODk1 LDYgKzI5MTAsNyBAQCBzdGF0aWMgdm9pZAogV2FsU25kTG9vcChXYWxTbmRTZW5kRGF0YUNh bGxiYWNrIHNlbmRfZGF0YSkKIHsKIAlUaW1lc3RhbXBUeiBsYXN0X2ZsdXNoID0gMDsKKwli b29sCQlzdG9wcGluZyA9IGZhbHNlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHRoZSBsYXN0 IHJlcGx5IHRpbWVzdGFtcC4gVGhhdCBlbmFibGVzIHRpbWVvdXQgcHJvY2Vzc2luZwpAQCAt MjkwOSwxMyArMjkyNSwyMCBAQCBXYWxTbmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sg c2VuZF9kYXRhKQogCSAqLwogCWZvciAoOzspCiAJewotCQkvKiBDbGVhciBhbnkgYWxyZWFk eS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyoKKwkJ ICogUmVtZW1iZXIgaWYgd2UgcmVjZWl2ZWQgSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQ SU5HIGJlZm9yZSB0aGUKKwkJICogcHJvY2Vzc2luZyBiZWxvdyBhbHJlYWR5LgorCQkgKi8K KwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5H KSkKKwkJCXN0b3BwaW5nID0gdHJ1ZTsKIAotCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQkvKiBQcm9jZXNzIGFueSByZXF1 ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCi0JCVdhbFNuZEhhbmRsZUNv bmZpZ1JlbG9hZCgpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQlpZiAoQ29uc3Vt ZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCisJCQlQcm9jZXNzV2FsU25k Q29uZmlnUmVsb2FkSW50ZXJydXB0KCk7CiAKIAkJLyogQ2hlY2sgZm9yIGlucHV0IGZyb20g dGhlIGNsaWVudCAqLwogCQlQcm9jZXNzUmVwbGllc0lmQW55KCk7CkBAIC0yOTY0LDEzICsy OTg3LDEzIEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEp CiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBXaGVuIFNJR1VTUjIgYXJyaXZlcywgd2Ugc2VuZCBh bnkgb3V0c3RhbmRpbmcgbG9ncyB1cCB0byB0aGUKLQkJCSAqIHNodXRkb3duIGNoZWNrcG9p bnQgcmVjb3JkIChpLmUuLCB0aGUgbGF0ZXN0IHJlY29yZCksIHdhaXQgZm9yCi0JCQkgKiB0 aGVtIHRvIGJlIHJlcGxpY2F0ZWQgdG8gdGhlIHN0YW5kYnksIGFuZCBleGl0LiBUaGlzIG1h eSBiZSBhCi0JCQkgKiBub3JtYWwgdGVybWluYXRpb24gYXQgc2h1dGRvd24sIG9yIGEgcHJv bW90aW9uLCB0aGUgd2Fsc2VuZGVyCi0JCQkgKiBpcyBub3Qgc3VyZSB3aGljaC4KKwkJCSAq IFdoZW4gSU5URVJSVVBUX1dBTFNORF9TVE9QIGFycml2ZXMsIHdlIHNlbmQgYW55IG91dHN0 YW5kaW5nCisJCQkgKiBsb2dzIHVwIHRvIHRoZSBzaHV0ZG93biBjaGVja3BvaW50IHJlY29y ZCAoaS5lLiwgdGhlIGxhdGVzdAorCQkJICogcmVjb3JkKSwgd2FpdCBmb3IgdGhlbSB0byBi ZSByZXBsaWNhdGVkIHRvIHRoZSBzdGFuZGJ5LCBhbmQKKwkJCSAqIGV4aXQuIFRoaXMgbWF5 IGJlIGEgbm9ybWFsIHRlcm1pbmF0aW9uIGF0IHNodXRkb3duLCBvciBhCisJCQkgKiBwcm9t b3Rpb24sIHRoZSB3YWxzZW5kZXIgaXMgbm90IHN1cmUgd2hpY2guCiAJCQkgKi8KLQkJCWlm IChnb3RfU0lHVVNSMikKKwkJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxT TkRfU1RPUCkpCiAJCQkJV2FsU25kRG9uZShzZW5kX2RhdGEpOwogCQl9CiAKQEAgLTMwMjIs NyArMzA0NSwxMiBAQCBXYWxTbmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sgc2VuZF9k YXRhKQogCQkJfQogCiAJCQkvKiBTbGVlcCB1bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3 ZSB0aW1lIG91dCAqLwotCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIFdB SVRfRVZFTlRfV0FMX1NFTkRFUl9NQUlOKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywg c2xlZXB0aW1lLCBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfTUFJTiwKKwkJCQkJICAgQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCSAgIChzdG9wcGluZyA/IDAgOiBJTlRFUlJVUFRf V0FMU05EX0lOSVRfU1RPUFBJTkcpIHwKKwkJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxP QUQgfAorCQkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKKwkJCQkpOwogCQl9CiAJfQog fQpAQCAtMzA2MCw2ICszMDg4LDcgQEAgSW5pdFdhbFNlbmRlclNsb3Qodm9pZCkKIAkJCS8q CiAJCQkgKiBGb3VuZCBhIGZyZWUgc2xvdC4gUmVzZXJ2ZSBpdCBmb3IgdXMuCiAJCQkgKi8K KwkJCXdhbHNuZC0+cGdwcm9jbm8gPSBNeVByb2NOdW1iZXI7CiAJCQl3YWxzbmQtPnBpZCA9 IE15UHJvY1BpZDsKIAkJCXdhbHNuZC0+c3RhdGUgPSBXQUxTTkRTVEFURV9TVEFSVFVQOwog CQkJd2Fsc25kLT5zZW50UHRyID0gSW52YWxpZFhMb2dSZWNQdHI7CkBAIC0zMTE2LDYgKzMx NDUsNyBAQCBXYWxTbmRLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJU3BpbkxvY2tBY3F1 aXJlKCZ3YWxzbmQtPm11dGV4KTsKIAkvKiBNYXJrIFdhbFNuZCBzdHJ1Y3QgYXMgbm8gbG9u Z2VyIGJlaW5nIGluIHVzZS4gKi8KIAl3YWxzbmQtPnBpZCA9IDA7CisJd2Fsc25kLT5wZ3By b2NubyA9IDA7CiAJU3BpbkxvY2tSZWxlYXNlKCZ3YWxzbmQtPm11dGV4KTsKIH0KIApAQCAt MzIxMCw3ICszMjQwLDcgQEAgWExvZ1NlbmRQaHlzaWNhbCh2b2lkKQogCVNpemUJCXJieXRl czsKIAogCS8qIElmIHJlcXVlc3RlZCBzd2l0Y2ggdGhlIFdBTCBzZW5kZXIgdG8gdGhlIHN0 b3BwaW5nIHN0YXRlLiAqLwotCWlmIChnb3RfU1RPUFBJTkcpCisJaWYgKEludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKSkKIAkJV2FsU25kU2V0U3Rh dGUoV0FMU05EU1RBVEVfU1RPUFBJTkcpOwogCiAJaWYgKHN0cmVhbWluZ0RvbmVTZW5kaW5n KQpAQCAtMzU3OSw4ICszNjA5LDggQEAgWExvZ1NlbmRMb2dpY2FsKHZvaWQpCiAJICogdGVy bWluYXRlIHRoZSBjb25uZWN0aW9uIGluIGFuIG9yZGVybHkgbWFubmVyLCBhZnRlciB3cml0 aW5nIG91dCBhbGwKIAkgKiB0aGUgcGVuZGluZyBkYXRhLgogCSAqLwotCWlmIChXYWxTbmRD YXVnaHRVcCAmJiBnb3RfU1RPUFBJTkcpCi0JCWdvdF9TSUdVU1IyID0gdHJ1ZTsKKwlpZiAo V2FsU25kQ2F1Z2h0VXAgJiYgSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX0lO SVRfU1RPUFBJTkcpKQorCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FMU05EX1NUT1Ap OwogCiAJLyogVXBkYXRlIHNoYXJlZCBtZW1vcnkgc3RhdHVzICovCiAJewpAQCAtMzY5Nyw1 MiArMzcyNyw0MyBAQCBXYWxTbmRScXN0RmlsZVJlbG9hZCh2b2lkKQogCX0KIH0KIAotLyoK LSAqIEhhbmRsZSBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HIHNpZ25hbC4KLSAqLwot dm9pZAotSGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpCi17Ci0JQXNzZXJ0KGFtX3dh bHNlbmRlcik7Ci0KLQkvKgotCSAqIElmIHJlcGxpY2F0aW9uIGhhcyBub3QgeWV0IHN0YXJ0 ZWQsIGRpZSBsaWtlIHdpdGggU0lHVEVSTS4gSWYKLQkgKiByZXBsaWNhdGlvbiBpcyBhY3Rp dmUsIG9ubHkgc2V0IGEgZmxhZyBhbmQgd2FrZSB1cCB0aGUgbWFpbiBsb29wLiBJdAotCSAq IHdpbGwgc2VuZCBhbnkgb3V0c3RhbmRpbmcgV0FMLCB3YWl0IGZvciBpdCB0byBiZSByZXBs aWNhdGVkIHRvIHRoZQotCSAqIHN0YW5kYnksIGFuZCB0aGVuIGV4aXQgZ3JhY2VmdWxseS4K LQkgKi8KLQlpZiAoIXJlcGxpY2F0aW9uX2FjdGl2ZSkKLQkJa2lsbChNeVByb2NQaWQsIFNJ R1RFUk0pOwotCWVsc2UKLQkJZ290X1NUT1BQSU5HID0gdHJ1ZTsKLX0KLQogLyoKICAqIFNJ R1VTUjI6IHNldCBmbGFnIHRvIGRvIGEgbGFzdCBjeWNsZSBhbmQgc2h1dCBkb3duIGFmdGVy d2FyZHMuIFRoZSBXQUwKICAqIHNlbmRlciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gc3dp dGNoZWQgdG8gV0FMU05EU1RBVEVfU1RPUFBJTkcgYXQKICAqIHRoaXMgcG9pbnQuCisgKgor ICogWFhYOiBUaGlzIGlzIHN0aWxsIG5lZWRlZCBiZWNhdXNlIHRoZSBwb3N0bWFzdGVyIGNh bm5vdCBzZW5kCisgKiBJTlRFUlJVUFRfV0FMU05EX1NUT1AgZGlyZWN0bHkuCiAgKi8KIHN0 YXRpYyB2b2lkCiBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKFNJR05BTF9BUkdTKQogewotCWdv dF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfV0FMU05EX1NUT1ApOwogfQogCiAvKiBTZXQgdXAgc2lnbmFsIGhhbmRs ZXJzICovCiB2b2lkCiBXYWxTbmRTaWduYWxzKHZvaWQpCiB7Ci0JLyogU2V0IHVwIHNpZ25h bCBoYW5kbGVycyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsJ LyogcXVlcnkgY2FuY2VsICovCi0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsJCS8qIHJlcXVl c3Qgc2h1dGRvd24gKi8KLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVw IGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KKwkvKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRs ZXJzICovCiAJSW5pdGlhbGl6ZVRpbWVvdXRzKCk7CQkvKiBlc3RhYmxpc2hlcyBTSUdBTFJN IGhhbmRsZXIgKi8KLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChT SUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNS MiwgV2FsU25kTGFzdEN5Y2xlSGFuZGxlcik7CS8qIHJlcXVlc3QgYSBsYXN0IGN5Y2xlIGFu ZAotCQkJCQkJCQkJCQkJICogc2h1dGRvd24gKi8KKworCS8qCisJICogSWYgcmVwbGljYXRp b24gaGFzIG5vdCB5ZXQgc3RhcnRlZCwgZGllIGxpa2Ugd2l0aCBTSUdURVJNLiBXaGVuCisJ ICogcmVwbGljYXRpb24gc3RhcnRzLCB3ZSBkaXNhYmxlIHRoaXMgaGFuZGxlciBhbmQgY2hl Y2sgdGhlIGZsYWcKKwkgKiBleHBsaWNpdGx5LiBUaGUgbWFpbiBsb29wIHdpbGwgc2VuZCBh bnkgb3V0c3RhbmRpbmcgV0FMLCB3YWl0IGZvciBpdCB0bworCSAqIGJlIHJlcGxpY2F0ZWQg dG8gdGhlIHN0YW5kYnksIGFuZCB0aGVuIGV4aXQgZ3JhY2VmdWxseS4KKwkgKi8KKwlTZXRJ bnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORywgUHJvY2Vz c1Rlcm1pbmF0ZUludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9XQUxT TkRfSU5JVF9TVE9QUElORyk7CisKKwkvKgorCSAqIE9uIElOVEVSUlVQVF9XQUxTTkRfU1RP UCBpcyB1c2VkIHRvIGZsdXNoIHJlbWFpbmluZyBXQUwgKHRoZSBzaHV0ZG93bgorCSAqIGNo ZWNrcG9pbnQgcmVjb3JkKSBhbmQgZXhpdC4gV2UgY2hlY2sgZm9yIHRoYXQgZXhwbGljaXRs eSwgc28gbm8KKwkgKiBoYW5kbGVyIGZ1bmN0aW9uLiBQb3N0bWFzdGVyIGNhbm5vdCBzZW5k IHRoZSBpbnRlcnJ1cHQgZGlyZWN0bHksIHNvIHdlCisJICogc2V0IHVwIGEgVW5peCBzaWdu YWwgaGFuZGxlciB0byByYWlzZSBpdC4KKwkgKi8KKwlwcXNpZ25hbChTSUdVU1IyLCBXYWxT bmRMYXN0Q3ljbGVIYW5kbGVyKTsKIH0KIAogLyogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3Bh Y2UgbmVlZGVkIGJ5IFdhbFNuZFNobWVtSW5pdCAqLwpAQCAtMzgyNSwyNCArMzg0NiwyOCBA QCBXYWxTbmRXYWtldXAoYm9vbCBwaHlzaWNhbCwgYm9vbCBsb2dpY2FsKQogICogb24gcG9z dG1hc3RlciBkZWF0aC4KICAqLwogc3RhdGljIHZvaWQKLVdhbFNuZFdhaXQodWludDMyIHNv Y2tldF9ldmVudHMsIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQpCitXYWxTbmRX YWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2 ZW50LCB1aW50MzIgaW50ZXJydXB0TWFzaykKIHsKIAlXYWl0RXZlbnQJZXZlbnQ7CiAKLQlN b2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBzb2Nr ZXRfZXZlbnRzLCBOVUxMKTsKKwkvKiBmb3IgY29uZGl0aW9uIHZhcmlhYmxlcyAqLworCWlu dGVycnVwdE1hc2sgfD0gSU5URVJSVVBUX1dBSVRfV0FLRVVQOworCisJTW9kaWZ5V2FpdEV2 ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgc29ja2V0X2V2ZW50cywg MCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldEludGVycnVw dFBvcywgV0xfSU5URVJSVVBULCBpbnRlcnJ1cHRNYXNrKTsKIAogCS8qCiAJICogV2UgdXNl IGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGVmZmljaWVudGx5IHdha2UgdXAgd2Fsc2VuZGVy cyBpbgogCSAqIFdhbFNuZFdha2V1cCgpLgogCSAqCiAJICogRXZlcnkgd2Fsc2VuZGVyIHBy ZXBhcmVzIHRvIHNsZWVwIG9uIGEgc2hhcmVkIG1lbW9yeSBDVi4gTm90ZSB0aGF0IGl0Ci0J ICoganVzdCBwcmVwYXJlcyB0byBzbGVlcCBvbiB0aGUgQ1YgKGkuZS4sIGFkZHMgaXRzZWxm IHRvIHRoZSBDVidzCi0JICogd2FpdGxpc3QpLCBidXQgZG9lcyBub3QgYWN0dWFsbHkgd2Fp dCBvbiB0aGUgQ1YgKElPVywgaXQgbmV2ZXIgY2FsbHMKLQkgKiBDb25kaXRpb25WYXJpYWJs ZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzIFdhaXRFdmVudFNldFdhaXQoKSBmb3IKLQkgKiB3 YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0byB3YWl0IGZvciBzb2NrZXQgZXZlbnRz LiBUaGUgcHJvY2Vzc2VzCi0JICogKHN0YXJ0dXAgcHJvY2Vzcywgd2FscmVjZWl2ZXIgZXRj Likgd2FudGluZyB0byB3YWtlIHVwIHdhbHNlbmRlcnMgdXNlCi0JICogQ29uZGl0aW9uVmFy aWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVybiBjYWxscyBTZXRMYXRjaCgpLCBoZWxw aW5nCi0JICogd2Fsc2VuZGVycyBjb21lIG91dCBvZiBXYWl0RXZlbnRTZXRXYWl0KCkuCisJ ICoganVzdCBwcmVwYXJlcyB0byBzbGVlcCBvbiB0aGUgQ1Ygd2FpdGxpc3QpLCBidXQgZG9l cyBub3QgYWN0dWFsbHkgd2FpdAorCSAqIG9uIHRoZSBDViAoSU9XLCBpdCBuZXZlciBjYWxs cyBDb25kaXRpb25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzCisJICogV2FpdEV2 ZW50U2V0V2FpdCgpIGZvciB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0byB3YWl0 IGZvciBzb2NrZXQKKwkgKiBldmVudHMuIFRoZSBwcm9jZXNzZXMgKHN0YXJ0dXAgcHJvY2Vz cywgd2FscmVjZWl2ZXIgZXRjLikgd2FudGluZyB0bworCSAqIHdha2UgdXAgd2Fsc2VuZGVy cyB1c2UgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVybgorCSAq IGNhbGxzIFNlbmRJbnRlcnJ1cHQoKSwgaGVscGluZyB3YWxzZW5kZXJzIGNvbWUgb3V0IG9m CisJICogV2FpdEV2ZW50U2V0V2FpdCgpLgogCSAqCiAJICogVGhpcyBhcHByb2FjaCBpcyBz aW1wbGUgYW5kIGVmZmljaWVudCBiZWNhdXNlLCBvbmUgZG9lc24ndCBoYXZlIHRvIGxvb3AK IAkgKiB0aHJvdWdoIGFsbCB0aGUgd2Fsc2VuZGVycyBzbG90cywgd2l0aCBhIHNwaW5sb2Nr IGFjcXVpc2l0aW9uIGFuZApAQCAtMzg5MCwxNiArMzkxNSwxNiBAQCBXYWxTbmRJbml0U3Rv cHBpbmcodm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCiAJ ewogCQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxTbmRDdGwtPndhbHNuZHNbaV07Ci0JCXBp ZF90CQlwaWQ7CisJCVByb2NOdW1iZXIJcHJvY25vOwogCiAJCVNwaW5Mb2NrQWNxdWlyZSgm d2Fsc25kLT5tdXRleCk7Ci0JCXBpZCA9IHdhbHNuZC0+cGlkOworCQlwcm9jbm8gPSB3YWxz bmQtPnBncHJvY25vOwogCQlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwogCi0J CWlmIChwaWQgPT0gMCkKKwkJaWYgKHByb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQog CQkJY29udGludWU7CiAKLQkJU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1dBTFNORF9J TklUX1NUT1BQSU5HLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcsIHByb2Nubyk7CiAJfQogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW8uYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYWlvL2Fpby5jCmluZGV4IGQyYzljZDZmMjBhLi42NGRmMzg0NjU2YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9haW8vYWlvLmMKQEAgLTM5MCw3ICszOTAsNyBAQCBwZ2Fpb19pb191cGRhdGVf c3RhdGUoUGdBaW9IYW5kbGUgKmlvaCwgUGdBaW9IYW5kbGVTdGF0ZSBuZXdfc3RhdGUpCiAJ ICogaW50ZXJydXB0IHByb2Nlc3NpbmcgY291bGQgd2FpdCBmb3IgdGhlIElPIHRvIGNvbXBs ZXRlLCB3aGlsZSBpbiBhbgogCSAqIGludGVybWVkaWFyeSBzdGF0ZS4KIAkgKi8KLQlBc3Nl cnQoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKTsKKwlBc3NlcnQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayA9PSAwKTsKIAogCXBnYWlvX2RlYnVnX2lvKERFQlVHNSwgaW9oLAog CQkJCSAgICJ1cGRhdGluZyBzdGF0ZSB0byAlcyIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2Fpby9haW9faW8uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19p by5jCmluZGV4IDcyYjRjOWZlYjNhLi43ODc4OWIzZjhmMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9h aW8vYWlvX2lvLmMKQEAgLTE2NCw3ICsxNjQsNyBAQCBwZ2Fpb19pb19iZWZvcmVfc3RhcnQo UGdBaW9IYW5kbGUgKmlvaCkKIAkgKiBPdGhlcndpc2UgdGhlIEZEcyByZWZlcmVuY2VkIGJ5 IHRoZSBJTyBjb3VsZCBiZSBjbG9zZWQgZHVlIHRvIGludGVycnVwdAogCSAqIHByb2Nlc3Np bmcuCiAJICovCi0JQXNzZXJ0KCFJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSk7CisJ QXNzZXJ0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgPT0gMCk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKaW5kZXggZDk2MTdjMjBlNzYuLjgw ZWFkZWZjZDFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rf d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5j CkBAIC0xMyw3ICsxMyw3IEBACiAgKgogICogU28gdGhhdCB0aGUgc3VibWl0dGVyIGNhbiBt YWtlIGp1c3Qgb25lIHN5c3RlbSBjYWxsIHdoZW4gc3VibWl0dGluZyBhIGJhdGNoCiAgKiBv ZiBJT3MsIHdha2V1cHMgImZhbiBvdXQiOyBlYWNoIHdva2VuIElPIHdvcmtlciBjYW4gd2Fr ZSB0d28gbW9yZS4gWFhYIFRoaXMKLSAqIGNvdWxkIGJlIGltcHJvdmVkIGJ5IHVzaW5nIGZ1 dGV4ZXMgaW5zdGVhZCBvZiBsYXRjaGVzIHRvIHdha2UgTiB3YWl0ZXJzLgorICogY291bGQg YmUgaW1wcm92ZWQgYnkgdXNpbmcgZnV0ZXhlcyBpbnN0ZWFkIG9mIGludGVycnVwdHMgdG8g d2FrZSBOIHdhaXRlcnMuCiAgKgogICogVGhpcyBtZXRob2Qgb2YgQUlPIGlzIGF2YWlsYWJs ZSBpbiBhbGwgYnVpbGRzIG9uIGFsbCBvcGVyYXRpbmcgc3lzdGVtcywgYW5kCiAgKiBpcyB0 aGUgZGVmYXVsdC4KQEAgLTI5LDE3ICsyOSwxNiBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJw cS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnQv cGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlv LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW9faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9y YWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lvX3dvcmtlci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNp bmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKQEAgLTYyLDcgKzYxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdBaW9Xb3JrZXJTdWJtaXNzaW9uUXVldWUKIAogdHlwZWRlZiBzdHJ1 Y3QgUGdBaW9Xb3JrZXJTbG90CiB7Ci0JTGF0Y2gJICAgKmxhdGNoOworCVByb2NOdW1iZXIJ cHJvY25vOwogCWJvb2wJCWluX3VzZTsKIH0gUGdBaW9Xb3JrZXJTbG90OwogCkBAIC0xNTQs NyArMTUzLDcgQEAgcGdhaW9fd29ya2VyX3NobWVtX2luaXQoYm9vbCBmaXJzdF90aW1lKQog CQlpb193b3JrZXJfY29udHJvbC0+aWRsZV93b3JrZXJfbWFzayA9IDA7CiAJCWZvciAoaW50 IGkgPSAwOyBpIDwgTUFYX0lPX1dPUktFUlM7ICsraSkKIAkJewotCQkJaW9fd29ya2VyX2Nv bnRyb2wtPndvcmtlcnNbaV0ubGF0Y2ggPSBOVUxMOworCQkJaW9fd29ya2VyX2NvbnRyb2wt PndvcmtlcnNbaV0ucHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCWlvX3dvcmtl cl9jb250cm9sLT53b3JrZXJzW2ldLmluX3VzZSA9IGZhbHNlOwogCQl9CiAJfQpAQCAtMjQ0 LDcgKzI0Myw3IEBAIHBnYWlvX3dvcmtlcl9zdWJtaXRfaW50ZXJuYWwoaW50IG51bV9zdGFn ZWRfaW9zLCBQZ0Fpb0hhbmRsZSAqKnN0YWdlZF9pb3MpCiB7CiAJUGdBaW9IYW5kbGUgKnN5 bmNocm9ub3VzX2lvc1tQR0FJT19TVUJNSVRfQkFUQ0hfU0laRV07CiAJaW50CQkJbnN5bmMg PSAwOwotCUxhdGNoCSAgICp3YWtldXAgPSBOVUxMOworCVByb2NOdW1iZXIJd2FrZXVwID0g SU5WQUxJRF9QUk9DX05VTUJFUjsKIAlpbnQJCQl3b3JrZXI7CiAKIAlBc3NlcnQobnVtX3N0 YWdlZF9pb3MgPD0gUEdBSU9fU1VCTUlUX0JBVENIX1NJWkUpOwpAQCAtMjYzLDIyICsyNjIs MjQgQEAgcGdhaW9fd29ya2VyX3N1Ym1pdF9pbnRlcm5hbChpbnQgbnVtX3N0YWdlZF9pb3Ms IFBnQWlvSGFuZGxlICoqc3RhZ2VkX2lvcykKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYg KHdha2V1cCA9PSBOVUxMKQorCQlpZiAod2FrZXVwID09IElOVkFMSURfUFJPQ19OVU1CRVIp CiAJCXsKIAkJCS8qIENob29zZSBhbiBpZGxlIHdvcmtlciB0byB3YWtlIHVwIGlmIHdlIGhh dmVuJ3QgYWxyZWFkeS4gKi8KIAkJCXdvcmtlciA9IHBnYWlvX3dvcmtlcl9jaG9vc2VfaWRs ZSgpOwogCQkJaWYgKHdvcmtlciA+PSAwKQotCQkJCXdha2V1cCA9IGlvX3dvcmtlcl9jb250 cm9sLT53b3JrZXJzW3dvcmtlcl0ubGF0Y2g7CisJCQkJd2FrZXVwID0gaW9fd29ya2VyX2Nv bnRyb2wtPndvcmtlcnNbd29ya2VyXS5wcm9jbm87CiAKLQkJCXBnYWlvX2RlYnVnX2lvKERF QlVHNCwgc3RhZ2VkX2lvc1tpXSwKKwkJCXBnYWlvX2RlYnVnX2lvKExPRywgc3RhZ2VkX2lv c1tpXSwKIAkJCQkJCSAgICJjaG9vc2luZyB3b3JrZXIgJWQiLAogCQkJCQkJICAgd29ya2Vy KTsKIAkJfQogCX0KIAlMV0xvY2tSZWxlYXNlKEFpb1dvcmtlclN1Ym1pc3Npb25RdWV1ZUxv Y2spOwogCi0JaWYgKHdha2V1cCkKLQkJU2V0TGF0Y2god2FrZXVwKTsKKwlpZiAod2FrZXVw ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJeworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwgd2FrZXVwKTsKKwl9CiAKIAkvKiBSdW4gd2hhdGV2ZXIgaXMgbGVm dCBzeW5jaHJvbm91c2x5LiAqLwogCWlmIChuc3luYyA+IDApCkBAIC0zMTQsMTEgKzMxNSwx MSBAQCBwZ2Fpb193b3JrZXJfZGllKGludCBjb2RlLCBEYXR1bSBhcmcpCiB7CiAJTFdMb2Nr QWNxdWlyZShBaW9Xb3JrZXJTdWJtaXNzaW9uUXVldWVMb2NrLCBMV19FWENMVVNJVkUpOwog CUFzc2VydChpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tNeUlvV29ya2VySWRdLmluX3Vz ZSk7Ci0JQXNzZXJ0KGlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW015SW9Xb3JrZXJJZF0u bGF0Y2ggPT0gTXlMYXRjaCk7CisJQXNzZXJ0KGlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJz W015SW9Xb3JrZXJJZF0ucHJvY25vID09IE15UHJvY051bWJlcik7CiAKIAlpb193b3JrZXJf Y29udHJvbC0+aWRsZV93b3JrZXJfbWFzayAmPSB+KFVJTlQ2NF9DKDEpIDw8IE15SW9Xb3Jr ZXJJZCk7CiAJaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbTXlJb1dvcmtlcklkXS5pbl91 c2UgPSBmYWxzZTsKLQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tNeUlvV29ya2VySWRd LmxhdGNoID0gTlVMTDsKKwlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tNeUlvV29ya2Vy SWRdLnByb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJTFdMb2NrUmVsZWFzZShBaW9X b3JrZXJTdWJtaXNzaW9uUXVldWVMb2NrKTsKIH0KIApAQCAtMzQxLDIwICszNDIsMjAgQEAg cGdhaW9fd29ya2VyX3JlZ2lzdGVyKHZvaWQpCiAJewogCQlpZiAoIWlvX3dvcmtlcl9jb250 cm9sLT53b3JrZXJzW2ldLmluX3VzZSkKIAkJewotCQkJQXNzZXJ0KGlvX3dvcmtlcl9jb250 cm9sLT53b3JrZXJzW2ldLmxhdGNoID09IE5VTEwpOworCQkJQXNzZXJ0KGlvX3dvcmtlcl9j b250cm9sLT53b3JrZXJzW2ldLnByb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAkJ CWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmluX3VzZSA9IHRydWU7CiAJCQlNeUlv V29ya2VySWQgPSBpOwogCQkJYnJlYWs7CiAJCX0KIAkJZWxzZQotCQkJQXNzZXJ0KGlvX3dv cmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmxhdGNoICE9IE5VTEwpOworCQkJQXNzZXJ0KGlv X3dvcmtlcl9jb250cm9sLT53b3JrZXJzW2ldLnByb2NubyAhPSBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAl9CiAKIAlpZiAoTXlJb1dvcmtlcklkID09IC0xKQogCQllbG9nKEVSUk9SLCAi Y291bGRuJ3QgZmluZCBhIGZyZWUgd29ya2VyIHNsb3QiKTsKIAogCWlvX3dvcmtlcl9jb250 cm9sLT5pZGxlX3dvcmtlcl9tYXNrIHw9IChVSU5UNjRfQygxKSA8PCBNeUlvV29ya2VySWQp OwotCWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW015SW9Xb3JrZXJJZF0ubGF0Y2ggPSBN eUxhdGNoOworCWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW015SW9Xb3JrZXJJZF0ucHJv Y25vID0gTXlQcm9jTnVtYmVyOwogCUxXTG9ja1JlbGVhc2UoQWlvV29ya2VyU3VibWlzc2lv blF1ZXVlTG9jayk7CiAKIAlvbl9zaG1lbV9leGl0KHBnYWlvX3dvcmtlcl9kaWUsIDApOwpA QCAtMzkyLDIwICszOTMsMjAgQEAgSW9Xb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAlBdXhpbGlhcnlQcm9jZXNzTWFp bkNvbW1vbigpOwogCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmln UmVsb2FkKTsKLQlwcXNpZ25hbChTSUdJTlQsIGRpZSk7CQkvKiB0byBhbGxvdyBtYW51YWxs eSB0cmlnZ2VyaW5nIHdvcmtlciByZXN0YXJ0ICovCisJLyogeHh4OiB0aGlzIHVzZWQgJ2Rp ZScuIEFueSByZWFzb24/ICovCisJcHFzaWduYWwoU0lHSU5ULCBTaWduYWxIYW5kbGVyRm9y U2h1dGRvd25SZXF1ZXN0KTsJLyogdG8gYWxsb3cgbWFudWFsbHkKKwkJCQkJCQkJCQkJCQkJ ICogdHJpZ2dlcmluZyB3b3JrZXIKKwkJCQkJCQkJCQkJCQkJICogcmVzdGFydCAqLwogCiAJ LyoKIAkgKiBJZ25vcmUgU0lHVEVSTSwgd2lsbCBnZXQgZXhwbGljaXQgc2h1dGRvd24gdmlh IFNJR1VTUjIgbGF0ZXIgaW4gdGhlCiAJICogc2h1dGRvd24gc2VxdWVuY2UsIHNpbWlsYXIg dG8gY2hlY2twb2ludGVyLgogCSAqLwogCXBxc2lnbmFsKFNJR1RFUk0sIFNJR19JR04pOwot CS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0 ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwotCXBxc2lnbmFsKFNJ R1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNy MV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRv d25SZXF1ZXN0KTsKIAorCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwogCS8q IGFsc28gcmVnaXN0ZXJzIGEgc2h1dGRvd24gY2FsbGJhY2sgdG8gdW5yZWdpc3RlciAqLwog CXBnYWlvX3dvcmtlcl9yZWdpc3RlcigpOwogCkBAIC00NTMsMTEgKzQ1NCwxMSBAQCBJb1dv cmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAogCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmVW5CbG9ja1NpZywgTlVMTCk7 CiAKLQl3aGlsZSAoIVNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJd2hpbGUgKCFJbnRlcnJ1 cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCXsKIAkJdWludDMyCQlpb19pbmRl eDsKLQkJTGF0Y2gJICAgKmxhdGNoZXNbSU9fV09SS0VSX1dBS0VVUF9GQU5PVVRdOwotCQlp bnQJCQlubGF0Y2hlcyA9IDA7CisJCVByb2NOdW1iZXIJcHJvY25vc1tJT19XT1JLRVJfV0FL RVVQX0ZBTk9VVF07CisJCWludAkJCW5wcm9jbm9zID0gMDsKIAkJaW50CQkJbndha2V1cHMg PSAwOwogCQlpbnQJCQl3b3JrZXI7CiAKQEAgLTQ5MCwxMyArNDkxLDEzIEBAIElvV29ya2Vy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCQkJewogCQkJCWlmICgod29ya2VyID0gcGdhaW9fd29ya2VyX2Nob29zZV9pZGxlKCkp IDwgMCkKIAkJCQkJYnJlYWs7Ci0JCQkJbGF0Y2hlc1tubGF0Y2hlcysrXSA9IGlvX3dvcmtl cl9jb250cm9sLT53b3JrZXJzW3dvcmtlcl0ubGF0Y2g7CisJCQkJcHJvY25vc1tucHJvY25v cysrXSA9IGlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW3dvcmtlcl0ucHJvY25vOwogCQkJ fQogCQl9CiAJCUxXTG9ja1JlbGVhc2UoQWlvV29ya2VyU3VibWlzc2lvblF1ZXVlTG9jayk7 CiAKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBubGF0Y2hlczsgKytpKQotCQkJU2V0TGF0Y2go bGF0Y2hlc1tpXSk7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgbnByb2Nub3M7ICsraSkKKwkJ CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBwcm9jbm9zW2ldKTsKIAog CQlpZiAoaW9faW5kZXggIT0gLTEpCiAJCXsKQEAgLTU2NywxOCArNTY4LDIwIEBAIElvV29y a2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCQl9CiAJCWVsc2UKIAkJewotCQkJV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENI X1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIC0xLAotCQkJCQkgIFdBSVRfRVZFTlRfSU9f V09SS0VSX01BSU4pOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCVdhaXRJbnRlcnJ1 cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkgIElOVEVSUlVQVF9DT05GSUdf UkVMT0FEIHwKKwkJCQkJCSAgSU5URVJSVVBUX1RFUk1JTkFURSB8CisJCQkJCQkgIElOVEVS UlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCSAgLTEsCisJCQkJCQkgIFdBSVRfRVZFTlRfSU9fV09SS0VSX01B SU4pOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJfQog CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRp bmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1 bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAl9CiAKIAllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5j CmluZGV4IGQxYmFiYWZmMDIzLi5jYjYxZTZlMWZjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3N0 b3JhZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwZ190cmFjZS5oIgpAQCAtMzM0NSw3ICszMzQ2LDcgQEAgV2FrZVBpbkNvdW50 V2FpdGVyKEJ1ZmZlckRlc2MgKmJ1ZikKIAkJVW5sb2NrQnVmSGRyRXh0KGJ1ZiwgYnVmX3N0 YXRlLAogCQkJCQkJMCwgQk1fUElOX0NPVU5UX1dBSVRFUiwKIAkJCQkJCTApOwotCQlQcm9j U2VuZFNpZ25hbCh3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOworCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9XQUlUX1dBS0VVUCwgd2FpdF9iYWNrZW5kX3BncHJvY25vKTsKIAl9CiAJZWxz ZQogCQlVbmxvY2tCdWZIZHIoYnVmKTsKQEAgLTM1MjUsNyArMzUyNiw3IEBAIEJ1ZmZlclN5 bmMoaW50IGZsYWdzKQogCQkJCQkJMCk7CiAKIAkJLyogQ2hlY2sgZm9yIGJhcnJpZXIgZXZl bnRzIGluIGNhc2UgTkJ1ZmZlcnMgaXMgbGFyZ2UuICovCi0JCWlmIChQcm9jU2lnbmFsQmFy cmllclBlbmRpbmcpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9CQVJSSUVS KSkKIAkJCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwogCX0KIApAQCAtMzYwNiw3ICsz NjA3LDcgQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJCXMtPm51bV90b19zY2FuKys7CiAK IAkJLyogQ2hlY2sgZm9yIGJhcnJpZXIgZXZlbnRzLiAqLwotCQlpZiAoUHJvY1NpZ25hbEJh cnJpZXJQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQkFSUklF UikpCiAJCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIAl9CiAKQEAgLTM2OTcsNyAr MzY5OCw3IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCQkvKgogCQkgKiBTbGVlcCB0byB0 aHJvdHRsZSBvdXIgSS9PIHJhdGUuCiAJCSAqCi0JCSAqIChUaGlzIHdpbGwgY2hlY2sgZm9y IGJhcnJpZXIgZXZlbnRzIGV2ZW4gaWYgaXQgZG9lc24ndCBzbGVlcC4pCisJCSAqIChUaGlz IHdpbGwgY2hlY2sgZm9yIGludGVycnVwdHMgZXZlbiBpZiBpdCBkb2Vzbid0IHNsZWVwLikK IAkJICovCiAJCUNoZWNrcG9pbnRXcml0ZURlbGF5KGZsYWdzLCAoZG91YmxlKSBudW1fcHJv Y2Vzc2VkIC8gbnVtX3RvX3NjYW4pOwogCX0KQEAgLTY2NDMsMTIgKzY2NDQsMTggQEAgTG9j a0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJCVNldFN0YXJ0dXBCdWZmZXJQ aW5XYWl0QnVmSWQoLTEpOwogCQl9CiAJCWVsc2UKLQkJCVByb2NXYWl0Rm9yU2lnbmFsKFdB SVRfRVZFTlRfQlVGRkVSX0NMRUFOVVApOworCQl7CisJCQlXYWl0SW50ZXJydXB0KENoZWNr Rm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgIFdM X0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkgIFdBSVRfRVZF TlRfQlVGRkVSX0NMRUFOVVApOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KIAogCQkvKgogCQkg KiBSZW1vdmUgZmxhZyBtYXJraW5nIHVzIGFzIHdhaXRlci4gTm9ybWFsbHkgdGhpcyB3aWxs IG5vdCBiZSBzZXQKLQkJICogYW55bW9yZSwgYnV0IFByb2NXYWl0Rm9yU2lnbmFsKCkgY2Fu IHJldHVybiBmb3Igb3RoZXIgc2lnbmFscyBhcwotCQkgKiB3ZWxsLiAgV2UgdGFrZSBjYXJl IHRvIG9ubHkgcmVzZXQgdGhlIGZsYWcgaWYgd2UncmUgdGhlIHdhaXRlciwgYXMKKwkJICog YW55bW9yZSwgYnV0IFdhaXRJbnRlcnJ1cHQgY2FuIHJldHVybiBmb3Igb3RoZXIgc2lnbmFs cyBhcyB3ZWxsLiBXZQorCQkgKiB0YWtlIGNhcmUgdG8gb25seSByZXNldCB0aGUgZmxhZyBp ZiB3ZSdyZSB0aGUgd2FpdGVyLCBhcwogCQkgKiB0aGVvcmV0aWNhbGx5IGFub3RoZXIgYmFj a2VuZCBjb3VsZCBoYXZlIHN0YXJ0ZWQgd2FpdGluZy4gVGhhdCdzCiAJCSAqIGltcG9zc2li bGUgd2l0aCB0aGUgY3VycmVudCB1c2FnZXMgZHVlIHRvIHRhYmxlIGxldmVsIGxvY2tpbmcs IGJ1dAogCQkgKiBiZXR0ZXIgYmUgc2FmZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9m cmVlbGlzdC5jCmluZGV4IGI3Njg3ODM2MTg4Li5jM2U5NzU5YjliMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAgKi8KICNp bmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgpAQCAtMTk2LDI3ICsxOTcsMjUgQEAgU3RyYXRl Z3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVm X3N0YXRlLCBib29sICpmcm9tX3IKIAkvKgogCSAqIElmIGFza2VkLCB3ZSBuZWVkIHRvIHdh a2VuIHRoZSBiZ3dyaXRlci4gU2luY2Ugd2UgZG9uJ3Qgd2FudCB0byByZWx5IG9uCiAJICog YSBzcGlubG9jayBmb3IgdGhpcyB3ZSBmb3JjZSBhIHJlYWQgZnJvbSBzaGFyZWQgbWVtb3J5 IG9uY2UsIGFuZCB0aGVuCi0JICogc2V0IHRoZSBsYXRjaCBiYXNlZCBvbiB0aGF0IHZhbHVl LiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhhdCBsZW5ndGgKLQkgKiBiZWNhdXNlIG90aGVy d2lzZSBiZ3dwcm9jbm8gbWlnaHQgYmUgcmVzZXQgd2hpbGUvYWZ0ZXIgd2UgY2hlY2sgYmVj YXVzZQotCSAqIHRoZSBjb21waWxlciBtaWdodCBqdXN0IHJlcmVhZCBmcm9tIG1lbW9yeS4K KwkgKiBzZW5kIHRoZSBpbnRlcnJ1cHQgYmFzZWQgb24gdGhhdCB2YWx1ZS4gV2UgbmVlZCB0 byBnbyB0aHJvdWdoIHRoYXQKKwkgKiBsZW5ndGggYmVjYXVzZSBvdGhlcndpc2UgYmd3cHJv Y25vIG1pZ2h0IGJlIHJlc2V0IHdoaWxlL2FmdGVyIHdlIGNoZWNrCisJICogYmVjYXVzZSB0 aGUgY29tcGlsZXIgbWlnaHQganVzdCByZXJlYWQgZnJvbSBtZW1vcnkuCiAJICoKLQkgKiBU aGlzIGNhbiBwb3NzaWJseSBzZXQgdGhlIGxhdGNoIG9mIHRoZSB3cm9uZyBwcm9jZXNzIGlm IHRoZSBiZ3dyaXRlcgotCSAqIGRpZXMgaW4gdGhlIHdyb25nIG1vbWVudC4gQnV0IHNpbmNl IFBHUFJPQy0+cHJvY0xhdGNoIGlzIG5ldmVyCi0JICogZGVhbGxvY2F0ZWQgdGhlIHdvcnN0 IGNvbnNlcXVlbmNlIG9mIHRoYXQgaXMgdGhhdCB3ZSBzZXQgdGhlIGxhdGNoIG9mCi0JICog c29tZSBhcmJpdHJhcnkgcHJvY2Vzcy4KKwkgKiBUaGlzIGNhbiBwb3NzaWJseSBzZW5kIHRo ZSBpbnRlcnJ1cHQgdG8gdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlCisJICogYmd3cml0ZXIg ZGllcyBpbiB0aGUgd3JvbmcgbW9tZW50LCBidXQgdGhhdCdzIGhhcm1sZXNzLgogCSAqLwog CWJnd3Byb2NubyA9IElOVF9BQ0NFU1NfT05DRShTdHJhdGVneUNvbnRyb2wtPmJnd3Byb2Nu byk7CiAJaWYgKGJnd3Byb2NubyAhPSAtMSkKIAl7Ci0JCS8qIHJlc2V0IGJnd3Byb2NubyBm aXJzdCwgYmVmb3JlIHNldHRpbmcgdGhlIGxhdGNoICovCisJCS8qIHJlc2V0IGJnd3Byb2Nu byBmaXJzdCwgYmVmb3JlIHNlbmRpbmcgdGhlIGludGVycnVwdCAqLwogCQlTdHJhdGVneUNv bnRyb2wtPmJnd3Byb2NubyA9IC0xOwogCiAJCS8qCi0JCSAqIE5vdCBhY3F1aXJpbmcgUHJv Y0FycmF5TG9jayBoZXJlIHdoaWNoIGlzIHNsaWdodGx5IGlja3kuIEl0J3MKLQkJICogYWN0 dWFsbHkgZmluZSBiZWNhdXNlIHByb2NMYXRjaCBpc24ndCBldmVyIGZyZWVkLCBzbyB3ZSBq dXN0IGNhbgotCQkgKiBwb3RlbnRpYWxseSBzZXQgdGhlIHdyb25nIHByb2Nlc3MnIChvciBu byBwcm9jZXNzJykgbGF0Y2guCisJCSAqIE5vdCBhY3F1aXJpbmcgUHJvY0FycmF5TG9jayBo ZXJlIHdoaWNoIGlzIHNsaWdodGx5IGlja3ksIGJlY2F1c2Ugd2UKKwkJICogY2FuIHBvdGVu dGlhbGx5IHNlbmQgdGhlIGludGVycnVwdCB0byB0aGUgd3JvbmcgcHJvY2VzcyAob3Igbm8K KwkJICogcHJvY2VzcyksIGJ1dCBpdCdzIGhhcm1sZXNzLgogCQkgKi8KLQkJU2V0TGF0Y2go JkdldFBHUHJvY0J5TnVtYmVyKGJnd3Byb2NubyktPnByb2NMYXRjaCk7CisJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBiZ3dwcm9jbm8pOwogCX0KIAogCS8qCkBA IC0zNDcsMTAgKzM0NiwxMCBAQCBTdHJhdGVneVN5bmNTdGFydCh1aW50MzIgKmNvbXBsZXRl X3Bhc3NlcywgdWludDMyICpudW1fYnVmX2FsbG9jKQogfQogCiAvKgotICogU3RyYXRlZ3lO b3RpZnlCZ1dyaXRlciAtLSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24g bGF0Y2gKKyAqIFN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIgLS0gc2V0IG9yIGNsZWFyIGFsbG9j YXRpb24gbm90aWZpY2F0aW9uIHByb2Nlc3MKICAqCiAgKiBJZiBiZ3dwcm9jbm8gaXNuJ3Qg LTEsIHRoZSBuZXh0IGludm9jYXRpb24gb2YgU3RyYXRlZ3lHZXRCdWZmZXIgd2lsbAotICog c2V0IHRoYXQgbGF0Y2guICBQYXNzIC0xIHRvIGNsZWFyIHRoZSBwZW5kaW5nIG5vdGlmaWNh dGlvbiBiZWZvcmUgaXQKKyAqIGludGVycnVwdCB0aGF0IHByb2Nlc3MuICBQYXNzIC0xIHRv IGNsZWFyIHRoZSBwZW5kaW5nIG5vdGlmaWNhdGlvbiBiZWZvcmUgaXQKICAqIGhhcHBlbnMu ICBUaGlzIGZlYXR1cmUgaXMgdXNlZCBieSB0aGUgYmd3cml0ZXIgcHJvY2VzcyB0byB3YWtl IGl0c2VsZiB1cAogICogZnJvbSBoaWJlcm5hdGlvbiwgYW5kIGlzIG5vdCBtZWFudCBmb3Ig YW55Ym9keSBlbHNlIHRvIHVzZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQpp bmRleCA5YTA3ZjZlMWQ5Mi4uMmQ5OGE0M2U3NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01h a2VmaWxlCkBAIC0xNSw3ICsxNSw2IEBAIE9CSlMgPSBcCiAJZHNtX3JlZ2lzdHJ5Lm8gXAog CWlwYy5vIFwKIAlpcGNpLm8gXAotCWxhdGNoLm8gXAogCXBtc2lnbmFsLm8gXAogCXByb2Nh cnJheS5vIFwKIAlwcm9jc2lnbmFsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtX2ltcGwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBs LmMKaW5kZXggZTIwODQ1N2RmMjcuLjM2N2MxMTY4MjE2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2RzbV9pbXBsLmMKQEAgLTM1Nyw4ICszNTcsOCBAQCBkc21faW1wbF9wb3NpeF9yZXNp emUoaW50IGZkLCBvZmZfdCBzaXplKQogCS8qCiAJICogQmxvY2sgYWxsIGJsb2NrYWJsZSBz aWduYWxzLCBleGNlcHQgU0lHUVVJVC4gIHBvc2l4X2ZhbGxvY2F0ZSgpIGNhbiBydW4KIAkg KiBmb3IgcXVpdGUgYSBsb25nIHRpbWUsIGFuZCBpcyBhbiBhbGwtb3Itbm90aGluZyBvcGVy YXRpb24uICBJZiB3ZQotCSAqIGFsbG93ZWQgU0lHVVNSMSB0byBpbnRlcnJ1cHQgdXMgcmVw ZWF0ZWRseSAoZm9yIGV4YW1wbGUsIGR1ZSB0bwotCSAqIHJlY292ZXJ5IGNvbmZsaWN0cyks IHRoZSByZXRyeSBsb29wIG1pZ2h0IG5ldmVyIHN1Y2NlZWQuCisJICogYWxsb3dlZCBzaWdu YWxzIHRvIGludGVycnVwdCB1cyByZXBlYXRlZGx5IChmb3IgZXhhbXBsZSwgZHVlIHRvIGNv bmZpZworCSAqIGZpbGUgcmVsb2FkcyksIHRoZSByZXRyeSBsb29wIG1pZ2h0IG5ldmVyIHN1 Y2NlZWQuCiAJICovCiAJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQogCQlzaWdwcm9jbWFzayhT SUdfU0VUTUFTSywgJkJsb2NrU2lnLCAmc2F2ZV9zaWdtYXNrKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjLmMKaW5kZXggY2I5NDRlZGQ4ZGYuLjgwNjk0NzU3MWFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGMuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaWZkZWYgUFJPRklMRV9QSURfRElSCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9hdXRvdmFjdXVtLmgiCkBAIC0xNzIsMTMgKzE3MywxMiBAQCBwcm9jX2V4aXRf cHJlcGFyZShpbnQgY29kZSkKIAlwcm9jX2V4aXRfaW5wcm9ncmVzcyA9IHRydWU7CiAKIAkv KgotCSAqIEZvcmdldCBhbnkgcGVuZGluZyBjYW5jZWwgb3IgZGllIHJlcXVlc3RzOyB3ZSdy ZSBkb2luZyBvdXIgYmVzdCB0bwotCSAqIGNsb3NlIHVwIHNob3AgYWxyZWFkeS4gIE5vdGUg dGhhdCB0aGUgc2lnbmFsIGhhbmRsZXJzIHdpbGwgbm90IHNldAotCSAqIHRoZXNlIGZsYWdz IGFnYWluLCBub3cgdGhhdCBwcm9jX2V4aXRfaW5wcm9ncmVzcyBpcyBzZXQuCisJICogRm9y Z2V0IGFueSBwZW5kaW5nIGNhbmNlbCBvciBkaWUgcmVxdWVzdHMgYW5kIHNldCBJbnRlcnJ1 cHRIb2xkb2ZmQ291bnQKKwkgKiB0byBwcmV2ZW50IGFueSBtb3JlIGludGVycnVwdHMgZnJv bSBiZWluZyBwcm9jZXNzZWQ7IHdlJ3JlIGRvaW5nIG91cgorCSAqIGJlc3QgdG8gY2xvc2Ug dXAgc2hvcCBhbHJlYWR5LgogCSAqLwotCUludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKLQlQ cm9jRGllUGVuZGluZyA9IGZhbHNlOwotCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOwor CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOworCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCUludGVycnVwdEhvbGRvZmZDb3VudCA9IDE7 CiAJQ3JpdFNlY3Rpb25Db3VudCA9IDA7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2xhdGNoLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTM3ZTlmZWYyZC4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworKysgL2Rldi9udWxsCkBA IC0xLDM4OSArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBsYXRjaC5j Ci0gKgkgIFJvdXRpbmVzIGZvciBpbnRlci1wcm9jZXNzIGxhdGNoZXMKLSAqCi0gKiBUaGUg bGF0Y2ggaW50ZXJmYWNlIGlzIGEgcmVsaWFibGUgcmVwbGFjZW1lbnQgZm9yIHRoZSBjb21t b24gcGF0dGVybiBvZgotICogdXNpbmcgcGdfdXNsZWVwKCkgb3Igc2VsZWN0KCkgdG8gd2Fp dCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLCB3aGVyZSB0aGUKLSAqIHNpZ25hbCBoYW5kbGVy IHNldHMgYSBmbGFnIHZhcmlhYmxlLiAgU2VlIGxhdGNoLmggZm9yIG1vcmUgaW5mb3JtYXRp b24KLSAqIG9uIGhvdyB0byB1c2UgdGhlbS4KLSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCi0gKgotICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvbGF0Y2guYwotICoKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICov Ci0jaW5jbHVkZSAicG9zdGdyZXMuaCIKLQotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2lu Y2x1ZGUgInBvcnQvYXRvbWljcy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKLSNp bmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgotI2luY2x1ZGUgInV0aWxzL3Jlc293 bmVyLmgiCi0KLS8qIEEgY29tbW9uIFdhaXRFdmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBX YWl0TGF0Y2goKSAqLwotc3RhdGljIFdhaXRFdmVudFNldCAqTGF0Y2hXYWl0U2V0OwotCi0v KiBUaGUgcG9zaXRpb25zIG9mIHRoZSBsYXRjaCBhbmQgUE0gZGVhdGggZXZlbnRzIGluIExh dGNoV2FpdFNldCAqLwotI2RlZmluZSBMYXRjaFdhaXRTZXRMYXRjaFBvcyAwCi0jZGVmaW5l IExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcyAxCi0KLXZvaWQKLUluaXRpYWxpemVM YXRjaFdhaXRTZXQodm9pZCkKLXsKLQlpbnQJCQlsYXRjaF9wb3MgUEdfVVNFRF9GT1JfQVNT RVJUU19PTkxZOwotCi0JQXNzZXJ0KExhdGNoV2FpdFNldCA9PSBOVUxMKTsKLQotCS8qIFNl dCB1cCB0aGUgV2FpdEV2ZW50U2V0IHVzZWQgYnkgV2FpdExhdGNoKCkuICovCi0JTGF0Y2hX YWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIDIpOwotCWxhdGNoX3BvcyA9IEFk ZFdhaXRFdmVudFRvU2V0KExhdGNoV2FpdFNldCwgV0xfTEFUQ0hfU0VULCBQR0lOVkFMSURf U09DS0VULAotCQkJCQkJCQkgIE15TGF0Y2gsIE5VTEwpOwotCUFzc2VydChsYXRjaF9wb3Mg PT0gTGF0Y2hXYWl0U2V0TGF0Y2hQb3MpOwotCi0JLyoKLQkgKiBXYWl0TGF0Y2ggd2lsbCBt b2RpZnkgdGhpcyB0byBXTF9FWElUX09OX1BNX0RFQVRIIG9yCi0JICogV0xfUE9TVE1BU1RF Ul9ERUFUSCBvbiBlYWNoIGNhbGwuCi0JICovCi0JaWYgKElzVW5kZXJQb3N0bWFzdGVyKQot CXsKLQkJbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoTGF0Y2hXYWl0U2V0LCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJICBQR0lOVkFMSURfU09DS0VULCBOVUxMLCBO VUxMKTsKLQkJQXNzZXJ0KGxhdGNoX3BvcyA9PSBMYXRjaFdhaXRTZXRQb3N0bWFzdGVyRGVh dGhQb3MpOwotCX0KLX0KLQotLyoKLSAqIEluaXRpYWxpemUgYSBwcm9jZXNzLWxvY2FsIGxh dGNoLgotICovCi12b2lkCi1Jbml0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWxhdGNoLT5p c19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRj aC0+b3duZXJfcGlkID0gTXlQcm9jUGlkOwotCWxhdGNoLT5pc19zaGFyZWQgPSBmYWxzZTsK LQotI2lmZGVmIFdJTjMyCi0JbGF0Y2gtPmV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJV RSwgRkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhF UlJPUiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJy b3IoKSk7Ci0jZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KLX0KLQotLyoKLSAqIEluaXRpYWxp emUgYSBzaGFyZWQgbGF0Y2ggdGhhdCBjYW4gYmUgc2V0IGZyb20gb3RoZXIgcHJvY2Vzc2Vz LiBUaGUgbGF0Y2gKLSAqIGlzIGluaXRpYWxseSBvd25lZCBieSBuby1vbmU7IHVzZSBPd25M YXRjaCB0byBhc3NvY2lhdGUgaXQgd2l0aCB0aGUKLSAqIGN1cnJlbnQgcHJvY2Vzcy4KLSAq Ci0gKiBJbml0U2hhcmVkTGF0Y2ggbmVlZHMgdG8gYmUgY2FsbGVkIGluIHBvc3RtYXN0ZXIg YmVmb3JlIGZvcmtpbmcgY2hpbGQKLSAqIHByb2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRl ciBhbGxvY2F0aW5nIHRoZSBzaGFyZWQgbWVtb3J5IGJsb2NrCi0gKiBjb250YWluaW5nIHRo ZSBsYXRjaCB3aXRoIFNobWVtSW5pdFN0cnVjdC4gKFRoZSBVbml4IGltcGxlbWVudGF0aW9u Ci0gKiBkb2Vzbid0IGFjdHVhbGx5IHJlcXVpcmUgdGhhdCwgYnV0IHRoZSBXaW5kb3dzIG9u ZSBkb2VzLikgQmVjYXVzZSBvZgotICogdGhpcyByZXN0cmljdGlvbiwgd2UgaGF2ZSBubyBj b25jdXJyZW5jeSBpc3N1ZXMgdG8gd29ycnkgYWJvdXQgaGVyZS4KLSAqCi0gKiBOb3RlIHRo YXQgb3RoZXIgaGFuZGxlcyBjcmVhdGVkIGluIHRoaXMgbW9kdWxlIGFyZSBuZXZlciBtYXJr ZWQgYXMKLSAqIGluaGVyaXRhYmxlLiAgVGh1cyB3ZSBkbyBub3QgbmVlZCB0byB3b3JyeSBh Ym91dCBjbGVhbmluZyB1cCBjaGlsZAotICogcHJvY2VzcyByZWZlcmVuY2VzIHRvIHBvc3Rt YXN0ZXItcHJpdmF0ZSBsYXRjaGVzIG9yIFdhaXRFdmVudFNldHMuCi0gKi8KLXZvaWQKLUlu aXRTaGFyZWRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0jaWZkZWYgV0lOMzIKLQlTRUNVUklU WV9BVFRSSUJVVEVTIHNhOwotCi0JLyoKLQkgKiBTZXQgdXAgc2VjdXJpdHkgYXR0cmlidXRl cyB0byBzcGVjaWZ5IHRoYXQgdGhlIGV2ZW50cyBhcmUgaW5oZXJpdGVkLgotCSAqLwotCVpl cm9NZW1vcnkoJnNhLCBzaXplb2Yoc2EpKTsKLQlzYS5uTGVuZ3RoID0gc2l6ZW9mKHNhKTsK LQlzYS5iSW5oZXJpdEhhbmRsZSA9IFRSVUU7Ci0KLQlsYXRjaC0+ZXZlbnQgPSBDcmVhdGVF dmVudCgmc2EsIFRSVUUsIEZBTFNFLCBOVUxMKTsKLQlpZiAobGF0Y2gtPmV2ZW50ID09IE5V TEwpCi0JCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1 IiwgR2V0TGFzdEVycm9yKCkpOwotI2VuZGlmCi0KLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7 Ci0JbGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7Ci0JbGF0Y2gtPm93bmVyX3BpZCA9 IDA7Ci0JbGF0Y2gtPmlzX3NoYXJlZCA9IHRydWU7Ci19Ci0KLS8qCi0gKiBBc3NvY2lhdGUg YSBzaGFyZWQgbGF0Y2ggd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzLCBhbGxvd2luZyBpdCB0 bwotICogd2FpdCBvbiB0aGUgbGF0Y2guCi0gKgotICogQWx0aG91Z2ggdGhlcmUgaXMgYSBz YW5pdHkgY2hlY2sgZm9yIGxhdGNoLWFscmVhZHktb3duZWQsIHdlIGRvbid0IGRvCi0gKiBh bnkgc29ydCBvZiBsb2NraW5nIGhlcmUsIG1lYW5pbmcgdGhhdCB3ZSBjb3VsZCBmYWlsIHRv IGRldGVjdCB0aGUgZXJyb3IKLSAqIGlmIHR3byBwcm9jZXNzZXMgdHJ5IHRvIG93biB0aGUg c2FtZSBsYXRjaCBhdCBhYm91dCB0aGUgc2FtZSB0aW1lLiAgSWYKLSAqIHRoZXJlIGlzIGFu eSByaXNrIG9mIHRoYXQsIGNhbGxlciBtdXN0IHByb3ZpZGUgYW4gaW50ZXJsb2NrIHRvIHBy ZXZlbnQgaXQuCi0gKi8KLXZvaWQKLU93bkxhdGNoKExhdGNoICpsYXRjaCkKLXsKLQlpbnQJ CQlvd25lcl9waWQ7Ci0KLQkvKiBTYW5pdHkgY2hlY2tzICovCi0JQXNzZXJ0KGxhdGNoLT5p c19zaGFyZWQpOwotCi0Jb3duZXJfcGlkID0gbGF0Y2gtPm93bmVyX3BpZDsKLQlpZiAob3du ZXJfcGlkICE9IDApCi0JCWVsb2coUEFOSUMsICJsYXRjaCBhbHJlYWR5IG93bmVkIGJ5IFBJ RCAlZCIsIG93bmVyX3BpZCk7Ci0KLQlsYXRjaC0+b3duZXJfcGlkID0gTXlQcm9jUGlkOwot fQotCi0vKgotICogRGlzb3duIGEgc2hhcmVkIGxhdGNoIGN1cnJlbnRseSBvd25lZCBieSB0 aGUgY3VycmVudCBwcm9jZXNzLgotICovCi12b2lkCi1EaXNvd25MYXRjaChMYXRjaCAqbGF0 Y2gpCi17Ci0JQXNzZXJ0KGxhdGNoLT5pc19zaGFyZWQpOwotCUFzc2VydChsYXRjaC0+b3du ZXJfcGlkID09IE15UHJvY1BpZCk7Ci0KLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLX0KLQot LyoKLSAqIFdhaXQgZm9yIGEgZ2l2ZW4gbGF0Y2ggdG8gYmUgc2V0LCBvciBmb3IgcG9zdG1h c3RlciBkZWF0aCwgb3IgdW50aWwgdGltZW91dAotICogaXMgZXhjZWVkZWQuICd3YWtlRXZl bnRzJyBpcyBhIGJpdG1hc2sgdGhhdCBzcGVjaWZpZXMgd2hpY2ggb2YgdGhvc2UgZXZlbnRz Ci0gKiB0byB3YWl0IGZvci4gSWYgdGhlIGxhdGNoIGlzIGFscmVhZHkgc2V0IChhbmQgV0xf TEFUQ0hfU0VUIGlzIGdpdmVuKSwgdGhlCi0gKiBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0 ZWx5LgotICoKLSAqIFRoZSAidGltZW91dCIgaXMgZ2l2ZW4gaW4gbWlsbGlzZWNvbmRzLiBJ dCBtdXN0IGJlID49IDAgaWYgV0xfVElNRU9VVCBmbGFnCi0gKiBpcyBnaXZlbi4gIEFsdGhv dWdoIGl0IGlzIGRlY2xhcmVkIGFzICJsb25nIiwgd2UgZG9uJ3QgYWN0dWFsbHkgc3VwcG9y dAotICogdGltZW91dHMgbG9uZ2VyIHRoYW4gSU5UX01BWCBtaWxsaXNlY29uZHMuICBOb3Rl IHRoYXQgc29tZSBleHRyYSBvdmVyaGVhZAotICogaXMgaW5jdXJyZWQgd2hlbiBXTF9USU1F T1VUIGlzIGdpdmVuLCBzbyBhdm9pZCB1c2luZyBhIHRpbWVvdXQgaWYgcG9zc2libGUuCi0g KgotICogVGhlIGxhdGNoIG11c3QgYmUgb3duZWQgYnkgdGhlIGN1cnJlbnQgcHJvY2Vzcywg aWUuIGl0IG11c3QgYmUgYQotICogcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0aWFsaXplZCB3 aXRoIEluaXRMYXRjaCwgb3IgYSBzaGFyZWQgbGF0Y2gKLSAqIGFzc29jaWF0ZWQgd2l0aCB0 aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgotICogUmV0dXJu cyBiaXQgbWFzayBpbmRpY2F0aW5nIHdoaWNoIGNvbmRpdGlvbihzKSBjYXVzZWQgdGhlIHdh a2UtdXAuIE5vdGUKLSAqIHRoYXQgaWYgbXVsdGlwbGUgd2FrZS11cCBjb25kaXRpb25zIGFy ZSB0cnVlLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdAotICogd2UgcmV0dXJuIGFsbCBv ZiB0aGVtIGluIG9uZSBjYWxsLCBidXQgd2Ugd2lsbCByZXR1cm4gYXQgbGVhc3Qgb25lLgot ICovCi1pbnQKLVdhaXRMYXRjaChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRzLCBsb25n IHRpbWVvdXQsCi0JCSAgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKLXsKLQlXYWl0RXZlbnQJ ZXZlbnQ7Ci0KLQkvKiBQb3N0bWFzdGVyLW1hbmFnZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBw b3N0bWFzdGVyIGRlYXRoIHNvbWVob3cuICovCi0JQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rl ciB8fAotCQkgICAod2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpIHx8Ci0JCSAg ICh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkpOwotCi0JLyoKLQkgKiBTb21l IGNhbGxlcnMgbWF5IGhhdmUgYSBsYXRjaCBvdGhlciB0aGFuIE15TGF0Y2gsIG9yIG5vIGxh dGNoIGF0IGFsbCwKLQkgKiBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIGRp ZmZlcmVudGx5LiAgSXQncyBjaGVhcCB0byBhc3NpZ24KLQkgKiB0aG9zZSwgc28ganVzdCBk byBpdCBldmVyeSB0aW1lLgotCSAqLwotCWlmICghKHdha2VFdmVudHMgJiBXTF9MQVRDSF9T RVQpKQotCQlsYXRjaCA9IE5VTEw7Ci0JTW9kaWZ5V2FpdEV2ZW50KExhdGNoV2FpdFNldCwg TGF0Y2hXYWl0U2V0TGF0Y2hQb3MsIFdMX0xBVENIX1NFVCwgbGF0Y2gpOwotCi0JaWYgKElz VW5kZXJQb3N0bWFzdGVyKQotCQlNb2RpZnlXYWl0RXZlbnQoTGF0Y2hXYWl0U2V0LCBMYXRj aFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MsCi0JCQkJCQkod2FrZUV2ZW50cyAmIChXTF9F WElUX09OX1BNX0RFQVRIIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCkpLAotCQkJCQkJTlVMTCk7 Ci0KLQlpZiAoV2FpdEV2ZW50U2V0V2FpdChMYXRjaFdhaXRTZXQsCi0JCQkJCQkgKHdha2VF dmVudHMgJiBXTF9USU1FT1VUKSA/IHRpbWVvdXQgOiAtMSwKLQkJCQkJCSAmZXZlbnQsIDEs Ci0JCQkJCQkgd2FpdF9ldmVudF9pbmZvKSA9PSAwKQotCQlyZXR1cm4gV0xfVElNRU9VVDsK LQllbHNlCi0JCXJldHVybiBldmVudC5ldmVudHM7Ci19Ci0KLS8qCi0gKiBMaWtlIFdhaXRM YXRjaCwgYnV0IHdpdGggYW4gZXh0cmEgc29ja2V0IGFyZ3VtZW50IGZvciBXTF9TT0NLRVRf KgotICogY29uZGl0aW9ucy4KLSAqCi0gKiBXaGVuIHdhaXRpbmcgb24gYSBzb2NrZXQsIEVP RiBhbmQgZXJyb3IgY29uZGl0aW9ucyBhbHdheXMgY2F1c2UgdGhlIHNvY2tldAotICogdG8g YmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFibGUvY29ubmVjdGVkLCBzbyB0aGF0IHRo ZSBjYWxsZXIgY2FuIGRlYWwKLSAqIHdpdGggdGhlIGNvbmRpdGlvbi4KLSAqCi0gKiB3YWtl RXZlbnRzIG11c3QgaW5jbHVkZSBlaXRoZXIgV0xfRVhJVF9PTl9QTV9ERUFUSCBmb3IgYXV0 b21hdGljIGV4aXQKLSAqIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMgb3IgV0xfUE9TVE1BU1RF Ul9ERUFUSCBmb3IgYSBmbGFnIHNldCBpbiB0aGUKLSAqIHJldHVybiB2YWx1ZSBpZiB0aGUg cG9zdG1hc3RlciBkaWVzLiAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHJhcmUgY2FzZXMK LSAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhhbiBpbW1lZGlhdGUgZXhpdCBpcyBu ZWVkZWQuCi0gKgotICogTkI6IFRoZXNlIGRheXMgdGhpcyBpcyBqdXN0IGEgd3JhcHBlciBh cm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4KLSAqIHVzaW5nIGEgbGF0Y2ggdmVy eSBmcmVxdWVudGx5LCBjb25zaWRlciBjcmVhdGluZyBhIGxvbmdlciBsaXZpbmcKLSAqIFdh aXRFdmVudFNldCBpbnN0ZWFkOyB0aGF0J3MgbW9yZSBlZmZpY2llbnQuCi0gKi8KLWludAot V2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywgcGdzb2Nr ZXQgc29jaywKLQkJCQkgIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykK LXsKLQlpbnQJCQlyZXQgPSAwOwotCWludAkJCXJjOwotCVdhaXRFdmVudAlldmVudDsKLQlX YWl0RXZlbnRTZXQgKnNldCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VP d25lciwgMyk7Ci0KLQlpZiAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpCi0JCUFzc2VydCh0 aW1lb3V0ID49IDApOwotCWVsc2UKLQkJdGltZW91dCA9IC0xOwotCi0JaWYgKHdha2VFdmVu dHMgJiBXTF9MQVRDSF9TRVQpCi0JCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfTEFUQ0hf U0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJICBsYXRjaCwgTlVMTCk7Ci0KLQkvKiBQ b3N0bWFzdGVyLW1hbmFnZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRo IHNvbWVob3cuICovCi0JQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fAotCQkgICAod2Fr ZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpIHx8Ci0JCSAgICh3YWtlRXZlbnRzICYg V0xfUE9TVE1BU1RFUl9ERUFUSCkpOwotCi0JaWYgKCh3YWtlRXZlbnRzICYgV0xfUE9TVE1B U1RFUl9ERUFUSCkgJiYgSXNVbmRlclBvc3RtYXN0ZXIpCi0JCUFkZFdhaXRFdmVudFRvU2V0 KHNldCwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJCSAg TlVMTCwgTlVMTCk7Ci0KLQlpZiAoKHdha2VFdmVudHMgJiBXTF9FWElUX09OX1BNX0RFQVRI KSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9F WElUX09OX1BNX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJICBOVUxMLCBOVUxM KTsKLQotCWlmICh3YWtlRXZlbnRzICYgV0xfU09DS0VUX01BU0spCi0JewotCQlpbnQJCQll djsKLQotCQlldiA9IHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSzsKLQkJQWRkV2FpdEV2 ZW50VG9TZXQoc2V0LCBldiwgc29jaywgTlVMTCwgTlVMTCk7Ci0JfQotCi0JcmMgPSBXYWl0 RXZlbnRTZXRXYWl0KHNldCwgdGltZW91dCwgJmV2ZW50LCAxLCB3YWl0X2V2ZW50X2luZm8p OwotCi0JaWYgKHJjID09IDApCi0JCXJldCB8PSBXTF9USU1FT1VUOwotCWVsc2UKLQl7Ci0J CXJldCB8PSBldmVudC5ldmVudHMgJiAoV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9Q T1NUTUFTVEVSX0RFQVRIIHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfTUFTSyk7Ci0JfQotCi0J RnJlZVdhaXRFdmVudFNldChzZXQpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotLyoKLSAqIFNl dHMgYSBsYXRjaCBhbmQgd2FrZXMgdXAgYW55b25lIHdhaXRpbmcgb24gaXQuCi0gKgotICog VGhpcyBpcyBjaGVhcCBpZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQsIG90aGVyd2lzZSBu b3Qgc28gbXVjaC4KLSAqCi0gKiBOQjogd2hlbiBjYWxsaW5nIHRoaXMgaW4gYSBzaWduYWwg aGFuZGxlciwgYmUgc3VyZSB0byBzYXZlIGFuZCByZXN0b3JlCi0gKiBlcnJubyBhcm91bmQg aXQuICAoVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlIGluIG1vc3Qgc2lnbmFsIGhhbmRsZXJz LCBvZgotICogY291cnNlLCBidXQgd2UgdXNlZCB0byBvbWl0IGl0IGluIGhhbmRsZXJzIHRo YXQgb25seSBzZXQgYSBmbGFnLikKLSAqCi0gKiBOQjogdGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgZnJvbSBjcml0aWNhbCBzZWN0aW9ucyBhbmQgc2lnbmFsIGhhbmRsZXJzIHNvCi0gKiB0 aHJvd2luZyBhbiBlcnJvciBpcyBub3QgYSBnb29kIGlkZWEuCi0gKi8KLXZvaWQKLVNldExh dGNoKExhdGNoICpsYXRjaCkKLXsKLSNpZm5kZWYgV0lOMzIKLQlwaWRfdAkJb3duZXJfcGlk OwotI2Vsc2UKLQlIQU5ETEUJCWhhbmRsZTsKLSNlbmRpZgotCi0JLyoKLQkgKiBUaGUgbWVt b3J5IGJhcnJpZXIgaGFzIHRvIGJlIHBsYWNlZCBoZXJlIHRvIGVuc3VyZSB0aGF0IGFueSBm bGFnCi0JICogdmFyaWFibGVzIHBvc3NpYmx5IGNoYW5nZWQgYnkgdGhpcyBwcm9jZXNzIGhh dmUgYmVlbiBmbHVzaGVkIHRvIG1haW4KLQkgKiBtZW1vcnksIGJlZm9yZSB3ZSBjaGVjay9z ZXQgaXNfc2V0LgotCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci0KLQkvKiBRdWljayBl eGl0IGlmIGFscmVhZHkgc2V0ICovCi0JaWYgKGxhdGNoLT5pc19zZXQpCi0JCXJldHVybjsK LQotCWxhdGNoLT5pc19zZXQgPSB0cnVlOwotCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKLQlp ZiAoIWxhdGNoLT5tYXliZV9zbGVlcGluZykKLQkJcmV0dXJuOwotCi0jaWZuZGVmIFdJTjMy Ci0KLQkvKgotCSAqIFNlZSBpZiBhbnlvbmUncyB3YWl0aW5nIGZvciB0aGUgbGF0Y2guIEl0 IGNhbiBiZSB0aGUgY3VycmVudCBwcm9jZXNzIGlmCi0JICogd2UncmUgaW4gYSBzaWduYWwg aGFuZGxlci4gV2UgdXNlIHRoZSBzZWxmLXBpcGUgb3IgU0lHVVJHIHRvIG91cnNlbHZlcwot CSAqIHRvIHdha2UgdXAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgd2l0aG91dCByYWNlcyBp biB0aGF0IGNhc2UuIElmIGl0J3MKLQkgKiBhbm90aGVyIHByb2Nlc3MsIHNlbmQgYSBzaWdu YWwuCi0JICoKLQkgKiBGZXRjaCBvd25lcl9waWQgb25seSBvbmNlLCBpbiBjYXNlIHRoZSBs YXRjaCBpcyBjb25jdXJyZW50bHkgZ2V0dGluZwotCSAqIG93bmVkIG9yIGRpc293bmVkLiBY WFg6IFRoaXMgYXNzdW1lcyB0aGF0IHBpZF90IGlzIGF0b21pYywgd2hpY2ggaXNuJ3QKLQkg KiBndWFyYW50ZWVkIHRvIGJlIHRydWUhIEluIHByYWN0aWNlLCB0aGUgZWZmZWN0aXZlIHJh bmdlIG9mIHBpZF90IGZpdHMKLQkgKiBpbiBhIDMyIGJpdCBpbnRlZ2VyLCBhbmQgc28gc2hv dWxkIGJlIGF0b21pYy4gSW4gdGhlIHdvcnN0IGNhc2UsIHdlCi0JICogbWlnaHQgZW5kIHVw IHNpZ25hbGluZyB0aGUgd3JvbmcgcHJvY2Vzcy4gRXZlbiB0aGVuLCB5b3UncmUgdmVyeQot CSAqIHVubHVja3kgaWYgYSBwcm9jZXNzIHdpdGggdGhhdCBib2d1cyBwaWQgZXhpc3RzIGFu ZCBiZWxvbmdzIHRvCi0JICogUG9zdGdyZXM7IGFuZCBQRyBkYXRhYmFzZSBwcm9jZXNzZXMg c2hvdWxkIGhhbmRsZSBleGNlc3MgU0lHVVNSMQotCSAqIGludGVycnVwdHMgd2l0aG91dCBh IHByb2JsZW0gYW55aG93LgotCSAqCi0JICogQW5vdGhlciBzb3J0IG9mIHJhY2UgY29uZGl0 aW9uIHRoYXQncyBwb3NzaWJsZSBoZXJlIGlzIGZvciBhIG5ldwotCSAqIHByb2Nlc3MgdG8g b3duIHRoZSBsYXRjaCBpbW1lZGlhdGVseSBhZnRlciB3ZSBsb29rLCBzbyB3ZSBkb24ndCBz aWduYWwKLQkgKiBpdC4gVGhpcyBpcyBva2F5IHNvIGxvbmcgYXMgYWxsIGNhbGxlcnMgb2Yg UmVzZXRMYXRjaC9XYWl0TGF0Y2ggZm9sbG93Ci0JICogdGhlIHN0YW5kYXJkIGNvZGluZyBj b252ZW50aW9uIG9mIHdhaXRpbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGVpciBsb29wcywKLQkg KiBub3QgdGhlIHRvcCwgc28gdGhhdCB0aGV5J2xsIGNvcnJlY3RseSBwcm9jZXNzIGxhdGNo LXNldHRpbmcgZXZlbnRzCi0JICogdGhhdCBoYXBwZW4gYmVmb3JlIHRoZXkgZW50ZXIgdGhl IGxvb3AuCi0JICovCi0Jb3duZXJfcGlkID0gbGF0Y2gtPm93bmVyX3BpZDsKLQlpZiAob3du ZXJfcGlkID09IDApCi0JCXJldHVybjsKLQllbHNlIGlmIChvd25lcl9waWQgPT0gTXlQcm9j UGlkKQotCQlXYWtldXBNeVByb2MoKTsKLQllbHNlCi0JCVdha2V1cE90aGVyUHJvYyhvd25l cl9waWQpOwotCi0jZWxzZQotCi0JLyoKLQkgKiBTZWUgaWYgYW55b25lJ3Mgd2FpdGluZyBm b3IgdGhlIGxhdGNoLiBJdCBjYW4gYmUgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZgotCSAqIHdl J3JlIGluIGEgc2lnbmFsIGhhbmRsZXIuCi0JICoKLQkgKiBVc2UgYSBsb2NhbCB2YXJpYWJs ZSBoZXJlIGp1c3QgaW4gY2FzZSBzb21lYm9keSBjaGFuZ2VzIHRoZSBldmVudCBmaWVsZAot CSAqIGNvbmN1cnJlbnRseSAod2hpY2ggcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuKS4KLQkg Ki8KLQloYW5kbGUgPSBsYXRjaC0+ZXZlbnQ7Ci0JaWYgKGhhbmRsZSkKLQl7Ci0JCVNldEV2 ZW50KGhhbmRsZSk7Ci0KLQkJLyoKLQkJICogTm90ZSB0aGF0IHdlIHNpbGVudGx5IGlnbm9y ZSBhbnkgZXJyb3JzLiBXZSBtaWdodCBiZSBpbiBhIHNpZ25hbAotCQkgKiBoYW5kbGVyIG9y IG90aGVyIGNyaXRpY2FsIHBhdGggd2hlcmUgaXQncyBub3Qgc2FmZSB0byBjYWxsIGVsb2co KS4KLQkJICovCi0JfQotI2VuZGlmCi19Ci0KLS8qCi0gKiBDbGVhciB0aGUgbGF0Y2guIENh bGxpbmcgV2FpdExhdGNoIGFmdGVyIHRoaXMgd2lsbCBzbGVlcCwgdW5sZXNzCi0gKiB0aGUg bGF0Y2ggaXMgc2V0IGFnYWluIGJlZm9yZSB0aGUgV2FpdExhdGNoIGNhbGwuCi0gKi8KLXZv aWQKLVJlc2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCS8qIE9ubHkgdGhlIG93bmVyIHNo b3VsZCByZXNldCB0aGUgbGF0Y2ggKi8KLQlBc3NlcnQobGF0Y2gtPm93bmVyX3BpZCA9PSBN eVByb2NQaWQpOwotCUFzc2VydChsYXRjaC0+bWF5YmVfc2xlZXBpbmcgPT0gZmFsc2UpOwot Ci0JbGF0Y2gtPmlzX3NldCA9IGZhbHNlOwotCi0JLyoKLQkgKiBFbnN1cmUgdGhhdCB0aGUg d3JpdGUgdG8gaXNfc2V0IGdldHMgZmx1c2hlZCB0byBtYWluIG1lbW9yeSBiZWZvcmUgd2UK LQkgKiBleGFtaW5lIGFueSBmbGFnIHZhcmlhYmxlcy4gIE90aGVyd2lzZSBhIGNvbmN1cnJl bnQgU2V0TGF0Y2ggbWlnaHQKLQkgKiBmYWxzZWx5IGNvbmNsdWRlIHRoYXQgaXQgbmVlZG4n dCBzaWduYWwgdXMsIGV2ZW4gdGhvdWdoIHdlIGhhdmUgbWlzc2VkCi0JICogc2VlaW5nIHNv bWUgZmxhZyB1cGRhdGVzIHRoYXQgU2V0TGF0Y2ggd2FzIHN1cHBvc2VkIHRvIGluZm9ybSB1 cyBvZi4KLQkgKi8KLQlwZ19tZW1vcnlfYmFycmllcigpOwotfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9tZXNvbi5idWlsZAppbmRleCA5YzFjYTk1NGQ5ZC4uMTQ3NDVjMDRlMTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCkBAIC03LDcgKzcsNiBAQCBiYWNrZW5k X3NvdXJjZXMgKz0gZmlsZXMoCiAgICdkc21fcmVnaXN0cnkuYycsCiAgICdpcGMuYycsCiAg ICdpcGNpLmMnLAotICAnbGF0Y2guYycsCiAgICdwbXNpZ25hbC5jJywKICAgJ3Byb2NhcnJh eS5jJywKICAgJ3Byb2NzaWduYWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJh eS5jCmluZGV4IDQwMzEyZGYyY2FjLi5iMzRlMmNiNzMxZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19hdXRoaWQuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9iZ3dvcmtlci5oIgpAQCAtMzQ1MCwyNyArMzQ1MSwyNyBAQCBHZXRDb25mbGlj dGluZ1ZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBPaWQgZGJPaWQpCiAg KgogICogVGhlICdwaWQnIGlzIHJlZHVuZGFudCB3aXRoICdwcm9jJywgYnV0IGl0IGFjdHMg YXMgYSBjcm9zcy1jaGVjayB0bwogICogZGV0ZWN0IHByb2Nlc3MgaGFkIGV4aXRlZCBhbmQg dGhlIFBHUFJPQyBlbnRyeSB3YXMgcmV1c2VkIGZvciBhIGRpZmZlcmVudAotICogcHJvY2Vz cy4KKyAqIHByb2Nlc3MuIEZJWE1FOiBsb3N0IHRoZSBjcm9zc2NoZWNrLiBSZS1pbnRyb2R1 Y2UgYSBzZXNzaW9uIElEIG9yIHNvbWV0aGluZz8KICAqCiAgKiBSZXR1cm5zIHRydWUgaWYg dGhlIHByb2Nlc3Mgd2FzIHNpZ25hbGVkLCBvciBmYWxzZSBpZiBub3QgZm91bmQuCiAgKi8K IGJvb2wKLVNpZ25hbFJlY292ZXJ5Q29uZmxpY3QoUEdQUk9DICpwcm9jLCBwaWRfdCBwaWQs IFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uKQorU2lnbmFsUmVjb3ZlcnlDb25mbGlj dChQR1BST0MgKnByb2MsIFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uKQogewogCWJv b2wJCWZvdW5kID0gZmFsc2U7CiAKIAlMV0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExX X1NIQVJFRCk7CiAKIAkvKgotCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUu IElmIG5vdCwgdGhhdCdzIHdoYXQgd2Ugd2FudGVkIHNvCisJICogS2lsbCB0aGUgcHJvY2Vz cyBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQgd2Ugd2FudGVkIHNv CiAJICogaWdub3JlIGFueSBlcnJvcnMuCiAJICovCi0JaWYgKHByb2MtPnBpZCA9PSBwaWQp CisJaWYgKHByb2MtPnBpZCAhPSAwKQogCXsKIAkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9v cl91MzIoJnByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cywgKDEgPDwgcmVhc29uKSk7 CiAKIAkJLyogd2FrZSB1cCB0aGUgcHJvY2VzcyAqLwotCQkodm9pZCkgU2VuZFByb2NTaWdu YWwocGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNULCBHZXROdW1iZXJGcm9tUEdQcm9j KHByb2MpKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Qs IEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogCQlmb3VuZCA9IHRydWU7CiAJfQogCkBA IC0zNTEwLDEwICszNTExLDEwIEBAIFNpZ25hbFJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVh bFhJRChWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBSZWNvdmVyeUNvbmZsaWN0CiAJCQkJ KHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnByb2MtPnBlbmRpbmdSZWNvdmVyeUNv bmZsaWN0cywgKDEgPDwgcmVhc29uKSk7CiAKIAkJCQkvKgotCQkJCSAqIEtpbGwgdGhlIHBp ZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQgd2UKKwkJCQkgKiBL aWxsIHRoZSBwcm9jZXNzIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90LCB0aGF0J3Mgd2hh dCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUgYW55IGVycm9ycy4KIAkJCQkgKi8KLQkJ CQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU LCB2eGlkLnByb2NOdW1iZXIpOworCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNULCB2eGlkLnByb2NOdW1iZXIpOwogCQkJfQogCQkJYnJlYWs7CiAJCX0K QEAgLTM1NDUsMjEgKzM1NDYsMTggQEAgU2lnbmFsUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRh YmFzZShPaWQgZGF0YWJhc2VpZCwgUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24KIAog CQlpZiAoZGF0YWJhc2VpZCA9PSBJbnZhbGlkT2lkIHx8IHByb2MtPmRhdGFiYXNlSWQgPT0g ZGF0YWJhc2VpZCkKIAkJewotCQkJVmlydHVhbFRyYW5zYWN0aW9uSWQgcHJvY3Z4aWQ7CiAJ CQlwaWRfdAkJcGlkOwogCi0JCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhpZCwgKnBy b2MpOwotCiAJCQlwaWQgPSBwcm9jLT5waWQ7CiAJCQlpZiAocGlkICE9IDApCiAJCQl7CiAJ CQkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnByb2MtPnBlbmRpbmdSZWNvdmVy eUNvbmZsaWN0cywgKDEgPDwgcmVhc29uKSk7CiAKIAkJCQkvKgotCQkJCSAqIEtpbGwgdGhl IHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUuIElmIG5vdCwgdGhhdCdzIHdoYXQgd2UKKwkJCQkg KiBLaWxsIHRoZSBwcm9jZXNzIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90LCB0aGF0J3Mg d2hhdCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUgYW55IGVycm9ycy4KIAkJCQkgKi8K LQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNULCBwcm9jdnhpZC5wcm9jTnVtYmVyKTsKKwkJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9SRUNPVkVSWV9DT05GTElDVCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAJCQl9 CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2ln bmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNWQz MzU1OTkyNmEuLmI4MDQyNjgyOGIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwu aCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCkBAIC0yNiw3ICsyNyw3IEBACiAjaW5jbHVk ZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWwuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKQEAgLTM0LDI4ICszNSwyMSBAQAogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAKIC8qCi0gKiBUaGUgU0lHVVNSMSBzaWduYWwgaXMgbXVs dGlwbGV4ZWQgdG8gc3VwcG9ydCBzaWduYWxpbmcgbXVsdGlwbGUgZXZlbnQKLSAqIHR5cGVz LiBUaGUgc3BlY2lmaWMgcmVhc29uIGlzIGNvbW11bmljYXRlZCB2aWEgZmxhZ3MgaW4gc2hh cmVkIG1lbW9yeS4KLSAqIFdlIGtlZXAgYSBib29sZWFuIGZsYWcgZm9yIGVhY2ggcG9zc2li bGUgInJlYXNvbiIsIHNvIHRoYXQgZGlmZmVyZW50Ci0gKiByZWFzb25zIGNhbiBiZSBzaWdu YWxlZCB0byBhIHByb2Nlc3MgY29uY3VycmVudGx5LiAgKEhvd2V2ZXIsIGlmIHRoZSBzYW1l Ci0gKiByZWFzb24gaXMgc2lnbmFsZWQgbW9yZSB0aGFuIG9uY2UgbmVhcmx5IHNpbXVsdGFu ZW91c2x5LCB0aGUgcHJvY2VzcyBtYXkKLSAqIG9ic2VydmUgaXQgb25seSBvbmNlLikKKyAq IFN0YXRlIGZvciB0aGUgUHJvY1NpZ25hbEJhcnJpZXIgbWVjaGFuaXNtIGFuZCBxdWVyeSBj YW5jZWxsYXRpb24uCiAgKgotICogRWFjaCBwcm9jZXNzIHRoYXQgd2FudHMgdG8gcmVjZWl2 ZSBzaWduYWxzIHJlZ2lzdGVycyBpdHMgcHJvY2VzcyBJRAotICogaW4gdGhlIFByb2NTaWdu YWxTbG90cyBhcnJheS4gVGhlIGFycmF5IGlzIGluZGV4ZWQgYnkgUHJvY051bWJlciB0byBt YWtlCi0gKiBzbG90IGFsbG9jYXRpb24gc2ltcGxlLCBhbmQgdG8gYXZvaWQgaGF2aW5nIHRv IHNlYXJjaCB0aGUgYXJyYXkgd2hlbiB5b3UKLSAqIGtub3cgdGhlIFByb2NOdW1iZXIgb2Yg dGhlIHByb2Nlc3MgeW91J3JlIHNpZ25hbGluZy4gIChXZSBkbyBzdXBwb3J0Ci0gKiBzaWdu YWxpbmcgd2l0aG91dCBQcm9jTnVtYmVyLCBidXQgaXQncyBhIGJpdCBsZXNzIGVmZmljaWVu dC4pCisgKiBFYWNoIHByb2Nlc3MgdGhhdCB3YW50cyB0byBwYXJ0aWNpcGF0ZSBpbiBiYXJy aWVycyBvciBxdWVyeSBjYW5jZWxsYXRpb24KKyAqIHJlZ2lzdGVycyBpdHMgcHJvY2VzcyBJ RCBpbiB0aGUgUHJvY1NpZ25hbFNsb3RzIGFycmF5LiBUaGUgYXJyYXkgaXMgaW5kZXhlZAor ICogYnkgUHJvY051bWJlciB0byBtYWtlIHNsb3QgYWxsb2NhdGlvbiBzaW1wbGUuCiAgKgog ICogVGhlIGZpZWxkcyBpbiBlYWNoIHNsb3QgYXJlIHByb3RlY3RlZCBieSBhIHNwaW5sb2Nr LCBwc3NfbXV0ZXguIHBzc19waWQgY2FuCiAgKiBhbHNvIGJlIHJlYWQgd2l0aG91dCBob2xk aW5nIHRoZSBzcGlubG9jaywgYXMgYSBxdWljayBwcmVsaW1pbmFyeSBjaGVjawogICogd2hl biBzZWFyY2hpbmcgZm9yIGEgcGFydGljdWxhciBQSUQgaW4gdGhlIGFycmF5LgogICoKLSAq IHBzc19zaWduYWxGbGFncyBhcmUgaW50ZW5kZWQgdG8gYmUgc2V0IGluIGNhc2VzIHdoZXJl IHdlIGRvbid0IG5lZWQgdG8KLSAqIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3QgdGhl IHRhcmdldCBwcm9jZXNzIGhhcyBoYW5kbGVkIHRoZSBzaWduYWwsCi0gKiBidXQgc29tZXRp bWVzIHdlIG5lZWQgY29uZmlybWF0aW9uLCBhcyB3aGVuIG1ha2luZyBhIGdsb2JhbCBzdGF0 ZSBjaGFuZ2UKLSAqIHRoYXQgY2Fubm90IGJlIGNvbnNpZGVyZWQgY29tcGxldGUgdW50aWwg YWxsIGJhY2tlbmRzIGhhdmUgdGFrZW4gbm90aWNlCi0gKiBvZiBpdC4gRm9yIHN1Y2ggdXNl IGNhc2VzLCB3ZSBzZXQgYSBiaXQgaW4gcHNzX2JhcnJpZXJDaGVja01hc2sgYW5kIHRoZW4K KyAqIFBsYWluIGludGVycnVwdHMgYXJlIGludGVuZGVkIHRvIGJlIHNldCBpbiBjYXNlcyB3 aGVyZSB3ZSBkb24ndCBuZWVkIHRvCisgKiBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90 IHRoZSB0YXJnZXQgcHJvY2VzcyBoYXMgaGFuZGxlZCB0aGUgc2lnbmFsLCBidXQKKyAqIHNv bWV0aW1lcyB3ZSBuZWVkIGNvbmZpcm1hdGlvbiwgYXMgd2hlbiBtYWtpbmcgYSBnbG9iYWwg c3RhdGUgY2hhbmdlIHRoYXQKKyAqIGNhbm5vdCBiZSBjb25zaWRlcmVkIGNvbXBsZXRlIHVu dGlsIGFsbCBiYWNrZW5kcyBoYXZlIHRha2VuIG5vdGljZSBvZgorICogaXQuIEZvciBzdWNo IHVzZSBjYXNlcywgd2Ugc2V0IGEgYml0IGluIHBzc19iYXJyaWVyQ2hlY2tNYXNrIGFuZCB0 aGVuCiAgKiBpbmNyZW1lbnQgdGhlIGN1cnJlbnQgImJhcnJpZXIgZ2VuZXJhdGlvbiI7IHdo ZW4gdGhlIG5ldyBiYXJyaWVyIGdlbmVyYXRpb24KICAqIChvciBncmVhdGVyKSBhcHBlYXJz IGluIHRoZSBwc3NfYmFycmllckdlbmVyYXRpb24gZmxhZyBvZiBldmVyeSBwcm9jZXNzLAog ICogd2Uga25vdyB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuIHJlY2VpdmVkIGV2ZXJ5d2hl cmUuCkBAIC02NSw3ICs1OSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJcGdfYXRvbWljX3VpbnQz MiBwc3NfcGlkOwogCWludAkJCXBzc19jYW5jZWxfa2V5X2xlbjsgLyogMCBtZWFucyBubyBj YW5jZWxsYXRpb24gaXMgcG9zc2libGUgKi8KIAl1aW50OAkJcHNzX2NhbmNlbF9rZXlbTUFY X0NBTkNFTF9LRVlfTEVOR1RIXTsKLQl2b2xhdGlsZSBzaWdfYXRvbWljX3QgcHNzX3NpZ25h bEZsYWdzW05VTV9QUk9DU0lHTkFMU107CiAJc2xvY2tfdAkJcHNzX211dGV4OwkJLyogcHJv dGVjdHMgdGhlIGFib3ZlIGZpZWxkcyAqLwogCiAJLyogQmFycmllci1yZWxhdGVkIGZpZWxk cyAobm90IHByb3RlY3RlZCBieSBwc3NfbXV0ZXgpICovCkBAIC0xMDUsNyArOTgsNiBAQCBz dHJ1Y3QgUHJvY1NpZ25hbEhlYWRlcgogTk9OX0VYRUNfU1RBVElDIFByb2NTaWduYWxIZWFk ZXIgKlByb2NTaWduYWwgPSBOVUxMOwogc3RhdGljIFByb2NTaWduYWxTbG90ICpNeVByb2NT aWduYWxTbG90ID0gTlVMTDsKIAotc3RhdGljIGJvb2wgQ2hlY2tQcm9jU2lnbmFsKFByb2NT aWduYWxSZWFzb24gcmVhc29uKTsKIHN0YXRpYyB2b2lkIENsZWFudXBQcm9jU2lnbmFsU3Rh dGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFJlc2V0UHJvY1NpZ25h bEJhcnJpZXJCaXRzKHVpbnQzMiBmbGFncyk7CiAKQEAgLTE1MCw3ICsxNDIsNiBAQCBQcm9j U2lnbmFsU2htZW1Jbml0KHZvaWQpCiAJCQlTcGluTG9ja0luaXQoJnNsb3QtPnBzc19tdXRl eCk7CiAJCQlwZ19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19waWQsIDApOwogCQkJc2xv dC0+cHNzX2NhbmNlbF9rZXlfbGVuID0gMDsKLQkJCU1lbVNldChzbG90LT5wc3Nfc2lnbmFs RmxhZ3MsIDAsIHNpemVvZihzbG90LT5wc3Nfc2lnbmFsRmxhZ3MpKTsKIAkJCXBnX2F0b21p Y19pbml0X3U2NCgmc2xvdC0+cHNzX2JhcnJpZXJHZW5lcmF0aW9uLCBQR19VSU5UNjRfTUFY KTsKIAkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX2JhcnJpZXJDaGVja01hc2ss IDApOwogCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5wc3NfYmFycmllckNWKTsK QEAgLTE4MSw5ICsxNzIsNiBAQCBQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2FuY2Vs X2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKQogCS8qIFZhbHVlIHVzZWQgZm9yIHNhbml0eSBj aGVjayBiZWxvdyAqLwogCW9sZF9wc3NfcGlkID0gcGdfYXRvbWljX3JlYWRfdTMyKCZzbG90 LT5wc3NfcGlkKTsKIAotCS8qIENsZWFyIG91dCBhbnkgbGVmdG92ZXIgc2lnbmFsIHJlYXNv bnMgKi8KLQlNZW1TZXQoc2xvdC0+cHNzX3NpZ25hbEZsYWdzLCAwLCBOVU1fUFJPQ1NJR05B TFMgKiBzaXplb2Yoc2lnX2F0b21pY190KSk7Ci0KIAkvKgogCSAqIEluaXRpYWxpemUgYmFy cmllciBzdGF0ZS4gU2luY2Ugd2UncmUgYSBicmFuZC1uZXcgcHJvY2VzcywgdGhlcmUKIAkg KiBzaG91bGRuJ3QgYmUgYW55IGxlZnRvdmVyIGJhY2tlbmQtcHJpdmF0ZSBzdGF0ZSB0aGF0 IG5lZWRzIHRvIGJlCkBAIC0yMzIsOSArMjIwLDEwIEBAIENsZWFudXBQcm9jU2lnbmFsU3Rh dGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogCVByb2NTaWduYWxTbG90ICpzbG90ID0gTXlQ cm9jU2lnbmFsU2xvdDsKIAogCS8qCi0JICogQ2xlYXIgTXlQcm9jU2lnbmFsU2xvdCwgc28g dGhhdCBhIFNJR1VTUjEgcmVjZWl2ZWQgYWZ0ZXIgdGhpcyBwb2ludAotCSAqIHdvbid0IHRy eSB0byBhY2Nlc3MgaXQgYWZ0ZXIgaXQncyBubyBsb25nZXIgb3VycyAoYW5kIHBlcmhhcHMg ZXZlbgotCSAqIGFmdGVyIHdlJ3ZlIHVubWFwcGVkIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21l bnQpLgorCSAqIENsZWFyIE15UHJvY1NpZ25hbFNsb3QsIHNvIHRoYXQgaWYgSU5URVJSVVBU X0JBUlJJRVIgaXMgcmVjZWl2ZWQgYWZ0ZXIKKwkgKiB0aGlzIHBvaW50LCBQcm9jZXNzUHJv Y1NpZ25hbEJhcnJpZXIoKSB3b24ndCB0cnkgdG8gYWNjZXNzIGl0IGFmdGVyCisJICogaXQn cyBubyBsb25nZXIgb3VycyAoYW5kIHBlcmhhcHMgZXZlbiBhZnRlciB3ZSd2ZSB1bm1hcHBl ZCB0aGUgc2hhcmVkCisJICogbWVtb3J5IHNlZ21lbnQpLgogCSAqLwogCUFzc2VydChNeVBy b2NTaWduYWxTbG90ICE9IE5VTEwpOwogCU15UHJvY1NpZ25hbFNsb3QgPSBOVUxMOwpAQCAt MjY5LDczICsyNTgsNiBAQCBDbGVhbnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERh dHVtIGFyZykKIAlDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgmc2xvdC0+cHNzX2JhcnJp ZXJDVik7CiB9CiAKLS8qCi0gKiBTZW5kUHJvY1NpZ25hbAotICoJCVNlbmQgYSBzaWduYWwg dG8gYSBQb3N0Z3JlcyBwcm9jZXNzCi0gKgotICogUHJvdmlkaW5nIHByb2NOdW1iZXIgaXMg b3B0aW9uYWwsIGJ1dCBpdCB3aWxsIHNwZWVkIHVwIHRoZSBvcGVyYXRpb24uCi0gKgotICog T24gc3VjY2VzcyAoYSBzaWduYWwgd2FzIHNlbnQpLCB6ZXJvIGlzIHJldHVybmVkLgotICog T24gZXJyb3IsIC0xIGlzIHJldHVybmVkLCBhbmQgZXJybm8gaXMgc2V0ICh0eXBpY2FsbHkg dG8gRVNSQ0ggb3IgRVBFUk0pLgotICoKLSAqIE5vdCB0byBiZSBjb25mdXNlZCB3aXRoIFBy b2NTZW5kU2lnbmFsCi0gKi8KLWludAotU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9j U2lnbmFsUmVhc29uIHJlYXNvbiwgUHJvY051bWJlciBwcm9jTnVtYmVyKQotewotCXZvbGF0 aWxlIFByb2NTaWduYWxTbG90ICpzbG90OwotCi0JaWYgKHByb2NOdW1iZXIgIT0gSU5WQUxJ RF9QUk9DX05VTUJFUikKLQl7Ci0JCUFzc2VydChwcm9jTnVtYmVyIDwgTnVtUHJvY1NpZ25h bFNsb3RzKTsKLQkJc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtwcm9jTnVtYmVyXTsK LQotCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPnBzc19tdXRleCk7Ci0JCWlmIChwZ19hdG9t aWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpID09IHBpZCkKLQkJewotCQkJLyogQXRvbWlj YWxseSBzZXQgdGhlIHByb3BlciBmbGFnICovCi0JCQlzbG90LT5wc3Nfc2lnbmFsRmxhZ3Nb cmVhc29uXSA9IHRydWU7Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7 Ci0JCQkvKiBTZW5kIHNpZ25hbCAqLwotCQkJcmV0dXJuIGtpbGwocGlkLCBTSUdVU1IxKTsK LQkJfQotCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0JfQotCWVsc2UK LQl7Ci0JCS8qCi0JCSAqIHByb2NOdW1iZXIgbm90IHByb3ZpZGVkLCBzbyBzZWFyY2ggdGhl IGFycmF5IHVzaW5nIHBpZC4gIFdlIHNlYXJjaAotCQkgKiB0aGUgYXJyYXkgYmFjayB0byBm cm9udCBzbyBhcyB0byByZWR1Y2Ugc2VhcmNoIG92ZXJoZWFkLiAgUGFzc2luZwotCQkgKiBJ TlZBTElEX1BST0NfTlVNQkVSIG1lYW5zIHRoYXQgdGhlIHRhcmdldCBpcyBtb3N0IGxpa2Vs eSBhbgotCQkgKiBhdXhpbGlhcnkgcHJvY2Vzcywgd2hpY2ggd2lsbCBoYXZlIGEgc2xvdCBu ZWFyIHRoZSBlbmQgb2YgdGhlCi0JCSAqIGFycmF5LgotCQkgKi8KLQkJaW50CQkJaTsKLQot CQlmb3IgKGkgPSBOdW1Qcm9jU2lnbmFsU2xvdHMgLSAxOyBpID49IDA7IGktLSkKLQkJewot CQkJc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKLQotCQkJaWYgKHBnX2F0b21p Y19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCkgPT0gcGlkKQotCQkJewotCQkJCVNwaW5Mb2Nr QWNxdWlyZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCQlpZiAocGdfYXRvbWljX3JlYWRfdTMy KCZzbG90LT5wc3NfcGlkKSA9PSBwaWQpCi0JCQkJewotCQkJCQkvKiBBdG9taWNhbGx5IHNl dCB0aGUgcHJvcGVyIGZsYWcgKi8KLQkJCQkJc2xvdC0+cHNzX3NpZ25hbEZsYWdzW3JlYXNv bl0gPSB0cnVlOwotCQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0J CQkJCS8qIFNlbmQgc2lnbmFsICovCi0JCQkJCXJldHVybiBraWxsKHBpZCwgU0lHVVNSMSk7 Ci0JCQkJfQotCQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCX0K LQkJfQotCX0KLQotCWVycm5vID0gRVNSQ0g7Ci0JcmV0dXJuIC0xOwotfQotCiAvKgogICog RW1pdFByb2NTaWduYWxCYXJyaWVyCiAgKgkJU2VuZCBhIHNpZ25hbCB0byBldmVyeSBQb3N0 Z3JlcyBwcm9jZXNzCkBAIC0zODAsOCArMzAyLDggQEAgRW1pdFByb2NTaWduYWxCYXJyaWVy KFByb2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKQogCQlwZ19hdG9taWNfYWRkX2ZldGNoX3U2 NCgmUHJvY1NpZ25hbC0+cHNoX2JhcnJpZXJHZW5lcmF0aW9uLCAxKTsKIAogCS8qCi0JICog U2lnbmFsIGFsbCB0aGUgcHJvY2Vzc2VzLCBzbyB0aGF0IHRoZXkgdXBkYXRlIHRoZWlyIGFk dmVydGlzZWQgYmFycmllcgotCSAqIGdlbmVyYXRpb24uCisJICogU2VuZCBhbiBpbnRlcnJ1 cHQgdG8gYWxsIHRoZSBwcm9jZXNzZXMsIHNvIHRoYXQgdGhleSB1cGRhdGUgdGhlaXIKKwkg KiBhZHZlcnRpc2VkIGJhcnJpZXIgZ2VuZXJhdGlvbi4KIAkgKgogCSAqIENvbmN1cnJlbmN5 IGlzIG5vdCBhIHByb2JsZW0gaGVyZS4gQmFja2VuZHMgdGhhdCBoYXZlIGV4aXRlZCBkb24n dAogCSAqIG1hdHRlciwgYW5kIG5ldyBiYWNrZW5kcyB0aGF0IGhhdmUgam9pbmVkIHNpbmNl IHdlIGVudGVyZWQgdGhpcwpAQCAtMzkyLDI1ICszMTQsMTIgQEAgRW1pdFByb2NTaWduYWxC YXJyaWVyKFByb2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKQogCSAqIGJhY2tlbmRzIHRoYXQg bmVlZCB0byB1cGRhdGUgc3RhdGUgLSBidXQgdGhleSB3b24ndCBhY3R1YWxseSBuZWVkIHRv CiAJICogY2hhbmdlIGFueSBzdGF0ZS4KIAkgKi8KLQlmb3IgKGludCBpID0gTnVtUHJvY1Np Z25hbFNsb3RzIC0gMTsgaSA+PSAwOyBpLS0pCisJZm9yIChQcm9jTnVtYmVyIHBncHJvY25v ID0gMDsgcGdwcm9jbm8gPCBOdW1Qcm9jU2lnbmFsU2xvdHM7IHBncHJvY25vKyspCiAJewot CQl2b2xhdGlsZSBQcm9jU2lnbmFsU2xvdCAqc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xv dFtpXTsKLQkJcGlkX3QJCXBpZCA9IHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3Bp ZCk7Ci0KLQkJaWYgKHBpZCAhPSAwKQotCQl7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3Qt PnBzc19tdXRleCk7Ci0JCQlwaWQgPSBwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19w aWQpOwotCQkJaWYgKHBpZCAhPSAwKQotCQkJewotCQkJCS8qIHNlZSBTZW5kUHJvY1NpZ25h bCBmb3IgZGV0YWlscyAqLwotCQkJCXNsb3QtPnBzc19zaWduYWxGbGFnc1tQUk9DU0lHX0JB UlJJRVJdID0gdHJ1ZTsKLQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7 Ci0JCQkJa2lsbChwaWQsIFNJR1VTUjEpOwotCQkJfQotCQkJZWxzZQotCQkJCVNwaW5Mb2Nr UmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJfQorCQlpZiAocGdwcm9jbm8gPT0gTXlQ cm9jTnVtYmVyKQorCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpOworCQll bHNlCisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9CQVJSSUVSLCBwZ3Byb2Nubyk7CiAJ fQogCiAJcmV0dXJuIGdlbmVyYXRpb247CkBAIC00NzAsMjMgKzM3OSw2IEBAIFdhaXRGb3JQ cm9jU2lnbmFsQmFycmllcih1aW50NjQgZ2VuZXJhdGlvbikKIAlwZ19tZW1vcnlfYmFycmll cigpOwogfQogCi0vKgotICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGlj YXRpbmcgYSBnbG9iYWwgYmFycmllciBldmVudC4KLSAqCi0gKiBBbGwgdGhlIGFjdHVhbCB3 b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpLCBiZWNhdXNl IHdlCi0gKiBjYW5ub3Qgc2FmZWx5IGFjY2VzcyB0aGUgYmFycmllciBnZW5lcmF0aW9uIGlu c2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIgYXMKLSAqIDY0Yml0IGF0b21pY3MgbWlnaHQgdXNl IHNwaW5sb2NrIGJhc2VkIGVtdWxhdGlvbiwgZXZlbiBmb3IgcmVhZHMuIEFzIHRoaXMKLSAq IHJvdXRpbmUgb25seSBnZXRzIGNhbGxlZCB3aGVuIFBST0NTSUdfQkFSUklFUiBpcyBzZW50 IHRoYXQgd29uJ3QgY2F1c2UgYQotICogbG90IG9mIHVubmVjZXNzYXJ5IHdvcmsuCi0gKi8K LXN0YXRpYyB2b2lkCi1IYW5kbGVQcm9jU2lnbmFsQmFycmllckludGVycnVwdCh2b2lkKQot ewotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVByb2NTaWduYWxCYXJyaWVyUGVuZGlu ZyA9IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3Ix X2hhbmRsZXIgKi8KLX0KLQogLyoKICAqIFBlcmZvcm0gZ2xvYmFsIGJhcnJpZXIgcmVsYXRl ZCBpbnRlcnJ1cHQgY2hlY2tpbmcuCiAgKgpAQCAtNTAyLDEyICszOTQsOCBAQCBQcm9jZXNz UHJvY1NpZ25hbEJhcnJpZXIodm9pZCkKIAl1aW50NjQJCXNoYXJlZF9nZW47CiAJdm9sYXRp bGUgdWludDMyIGZsYWdzOwogCi0JQXNzZXJ0KE15UHJvY1NpZ25hbFNsb3QpOwotCi0JLyog RXhpdCBxdWlja2x5IGlmIHRoZXJlJ3Mgbm8gd29yayB0byBkby4gKi8KLQlpZiAoIVByb2NT aWduYWxCYXJyaWVyUGVuZGluZykKKwlpZiAoTXlQcm9jU2lnbmFsU2xvdCA9PSBOVUxMKQog CQlyZXR1cm47Ci0JUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gZmFsc2U7CiAKIAkvKgog CSAqIEl0J3Mgbm90IHVubGlrZWx5IHRvIHByb2Nlc3MgbXVsdGlwbGUgYmFycmllcnMgYXQg b25jZSwgYmVmb3JlIHRoZQpAQCAtNjM5LDY4ICs1MjcsNyBAQCBzdGF0aWMgdm9pZAogUmVz ZXRQcm9jU2lnbmFsQmFycmllckJpdHModWludDMyIGZsYWdzKQogewogCXBnX2F0b21pY19m ZXRjaF9vcl91MzIoJk15UHJvY1NpZ25hbFNsb3QtPnBzc19iYXJyaWVyQ2hlY2tNYXNrLCBm bGFncyk7Ci0JUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKLX0KLQotLyoKLSAqIENoZWNrUHJvY1NpZ25hbCAtIGNoZWNrIHRv IHNlZSBpZiBhIHBhcnRpY3VsYXIgcmVhc29uIGhhcyBiZWVuCi0gKiBzaWduYWxlZCwgYW5k IGNsZWFyIHRoZSBzaWduYWwgZmxhZy4gIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgcmVjZWl2 aW5nCi0gKiBTSUdVU1IxLgotICovCi1zdGF0aWMgYm9vbAotQ2hlY2tQcm9jU2lnbmFsKFBy b2NTaWduYWxSZWFzb24gcmVhc29uKQotewotCXZvbGF0aWxlIFByb2NTaWduYWxTbG90ICpz bG90ID0gTXlQcm9jU2lnbmFsU2xvdDsKLQotCWlmIChzbG90ICE9IE5VTEwpCi0JewotCQkv KgotCQkgKiBDYXJlZnVsIGhlcmUgLS0tIGRvbid0IGNsZWFyIGZsYWcgaWYgd2UgaGF2ZW4n dCBzZWVuIGl0IHNldC4KLQkJICogcHNzX3NpZ25hbEZsYWdzIGlzIG9mIHR5cGUgInZvbGF0 aWxlIHNpZ19hdG9taWNfdCIgdG8gYWxsb3cgdXMgdG8KLQkJICogcmVhZCBpdCBoZXJlIHNh ZmVseSwgd2l0aG91dCBob2xkaW5nIHRoZSBzcGlubG9jay4KLQkJICovCi0JCWlmIChzbG90 LT5wc3Nfc2lnbmFsRmxhZ3NbcmVhc29uXSkKLQkJewotCQkJc2xvdC0+cHNzX3NpZ25hbEZs YWdzW3JlYXNvbl0gPSBmYWxzZTsKLQkJCXJldHVybiB0cnVlOwotCQl9Ci0JfQotCi0JcmV0 dXJuIGZhbHNlOwotfQotCi0vKgotICogcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgLSBo YW5kbGUgU0lHVVNSMSBzaWduYWwuCi0gKi8KLXZvaWQKLXByb2NzaWduYWxfc2lndXNyMV9o YW5kbGVyKFNJR05BTF9BUkdTKQotewotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19D QVRDSFVQX0lOVEVSUlVQVCkpCi0JCUhhbmRsZUNhdGNodXBJbnRlcnJ1cHQoKTsKLQotCWlm IChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUKSkKLQkJSGFuZGxl Tm90aWZ5SW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFS QUxMRUxfTUVTU0FHRSkpCi0JCUhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCgpOwot Ci0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HKSkK LQkJSGFuZGxlV2FsU25kSW5pdFN0b3BwaW5nKCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfQkFSUklFUikpCi0JCUhhbmRsZVByb2NTaWduYWxCYXJyaWVySW50ZXJydXB0 KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhU KSkKLQkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwotCi0JaWYgKENoZWNr UHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQotCQlIYW5kbGVQ YXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25h bChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUKSkKLQkJSGFuZGxlUmVjb3ZlcnlDb25mbGlj dEludGVycnVwdCgpOwotCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0JBUlJJRVIpOwogfQogCiAvKgpAQCAtNzU5LDYgKzU4NiwxMCBAQCBTZW5k Q2FuY2VsUmVxdWVzdChpbnQgYmFja2VuZFBJRCwgY29uc3QgdWludDggKmNhbmNlbF9rZXks IGludCBjYW5jZWxfa2V5X2xlbikKIAkJCQkvKgogCQkJCSAqIElmIHdlIGhhdmUgc2V0c2lk KCksIHNpZ25hbCB0aGUgYmFja2VuZCdzIHdob2xlIHByb2Nlc3MKIAkJCQkgKiBncm91cAor CQkJCSAqCisJCQkJICogRklYTUU6IGNvdWxkIHdlIHNlbmQgSU5URVJSVVBUX1FVRVJZX0NB TkNFTCBoZXJlIGRpcmVjdGx5PworCQkJCSAqIFdlIGRvbid0IGhhdmUgYSBQR1BST0MgZW50 cnkgeWV0LCBidXQgdGhlIHRhcmdldCBiYWNrZW5kCisJCQkJICogcHJlc3VtYWJseSBkb2Vz LgogCQkJCSAqLwogI2lmZGVmIEhBVkVfU0VUU0lECiAJCQkJa2lsbCgtYmFja2VuZFBJRCwg U0lHSU5UKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXggM2NlNjA2OGFjNTQu LmFiOTk1MDkzMTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1f bXEuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAtNCw3ICs0 LDcgQEAKICAqCSAgc2luZ2xlLXJlYWRlciwgc2luZ2xlLXdyaXRlciBzaGFyZWQgbWVtb3J5 IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBCb3RoIHRoZSBzZW5kZXIgYW5kIHRoZSByZWNlaXZl ciBtdXN0IGhhdmUgYSBQR1BST0M7IHRoZWlyIHJlc3BlY3RpdmUKLSAqIHByb2Nlc3MgbGF0 Y2hlcyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVyIG1h eSBzZW5kLAorICogcHJvY2VzcyBpbnRlcnJ1cHRzIGFyZSB1c2VkIGZvciBzeW5jaHJvbml6 YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCiAgKiBhbmQgb25seSB0aGUgcmVj ZWl2ZXIgbWF5IHJlY2VpdmUuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93IGEgdXNlcgog ICogYmFja2VuZCB0byBjb21tdW5pY2F0ZSB3aXRoIHdvcmtlciBiYWNrZW5kcyB0aGF0IGl0 IGhhcyByZWdpc3RlcmVkLgogICoKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgInBv c3RncmVzLmgiCiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgpAQCAtNDQsMTAgKzQ1LDExIEBACiAgKgogICogbXFfZGV0YWNoZWQgbmVlZHMg bm8gbG9ja2luZy4gIEl0IGNhbiBiZSBzZXQgYnkgZWl0aGVyIHRoZSBzZW5kZXIgb3IgdGhl CiAgKiByZWNlaXZlciwgYnV0IG9ubHkgZXZlciBmcm9tIGZhbHNlIHRvIHRydWUsIHNvIHJl ZHVuZGFudCB3cml0ZXMgZG9uJ3QKLSAqIG1hdHRlci4gIEl0IGlzIGltcG9ydGFudCB0aGF0 IGlmIHdlIHNldCBtcV9kZXRhY2hlZCBhbmQgdGhlbiBzZXQgdGhlCi0gKiBjb3VudGVycGFy dHkncyBsYXRjaCwgdGhlIGNvdW50ZXJwYXJ0eSBtdXN0IGJlIGNlcnRhaW4gdG8gc2VlIHRo ZSBjaGFuZ2UKLSAqIGFmdGVyIHdha2luZyB1cC4gIFNpbmNlIFNldExhdGNoIGJlZ2lucyB3 aXRoIGEgbWVtb3J5IGJhcnJpZXIgYW5kIFJlc2V0TGF0Y2gKLSAqIGVuZHMgd2l0aCBvbmUs IHRoaXMgc2hvdWxkIGJlIE9LLgorICogbWF0dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQg aWYgd2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0aGVuIHNlbmQgdGhlCisgKiBpbnRlcnJ1cHQg dG8gdGhlIGNvdW50ZXJwYXJ0eSwgdGhlIGNvdW50ZXJwYXJ0eSBtdXN0IGJlIGNlcnRhaW4g dG8gc2VlIHRoZQorICogY2hhbmdlIGFmdGVyIHdha2luZyB1cC4gIFNpbmNlIFNlbmRJbnRl cnJ1cHQgYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFycmllcgorICogYW5kIENsZWFySW50ZXJy dXB0IGVuZHMgd2l0aCBvbmUsIHRoaXMgc2hvdWxkIGJlIE9LLgorICogWFhYOiBObyBleHBs aWNpdCBtZW1vcnkgYmFycmllcnMgaW4gU2VuZEludGVycnVwdC9DbGVhckludGVycnVwdCwg ZG8gd2UgbmVlZCB0byBhZGQgc29tZT8KICAqCiAgKiBtcV9yaW5nX3NpemUgYW5kIG1xX3Jp bmdfb2Zmc2V0IG5ldmVyIGNoYW5nZSBhZnRlciBpbml0aWFsaXphdGlvbiwgYW5kCiAgKiBj YW4gdGhlcmVmb3JlIGJlIHJlYWQgd2l0aG91dCB0aGUgbG9jay4KQEAgLTExMiw3ICsxMTQs NyBAQCBzdHJ1Y3Qgc2htX21xCiAgKiB5ZXQgdXBkYXRlZCBpbiB0aGUgc2hhcmVkIG1lbW9y eS4gIFdlIHdpbGwgbm90IHVwZGF0ZSBpdCB1bnRpbCB0aGUgd3JpdHRlbgogICogZGF0YSBp cyAxLzR0aCBvZiB0aGUgcmluZyBzaXplIG9yIHRoZSB0dXBsZSBxdWV1ZSBpcyBmdWxsLiAg VGhpcyB3aWxsCiAgKiBwcmV2ZW50IGZyZXF1ZW50IENQVSBjYWNoZSBtaXNzZXMsIGFuZCBp dCB3aWxsIGFsc28gYXZvaWQgZnJlcXVlbnQKLSAqIFNldExhdGNoKCkgY2FsbHMsIHdoaWNo IGFyZSBxdWl0ZSBleHBlbnNpdmUuCisgKiBTZW5kSW50ZXJydXB0KCkgY2FsbHMsIHdoaWNo IGFyZSBxdWl0ZSBleHBlbnNpdmUuCiAgKgogICogbXFoX3BhcnRpYWxfYnl0ZXMsIG1xaF9l eHBlY3RlZF9ieXRlcywgYW5kIG1xaF9sZW5ndGhfd29yZF9jb21wbGV0ZQogICogYXJlIHVz ZWQgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIG5vbi1ibG9ja2luZyBvcGVyYXRpb25zLiAgV2hl biB0aGUgY2FsbGVyCkBAIC0yMTQsNyArMjE2LDcgQEAgc2htX21xX3NldF9yZWNlaXZlcihz aG1fbXEgKm1xLCBQR1BST0MgKnByb2MpCiAJU3BpbkxvY2tSZWxlYXNlKCZtcS0+bXFfbXV0 ZXgpOwogCiAJaWYgKHNlbmRlciAhPSBOVUxMKQotCQlTZXRMYXRjaCgmc2VuZGVyLT5wcm9j TGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVt YmVyRnJvbVBHUHJvYyhzZW5kZXIpKTsKIH0KIAogLyoKQEAgLTIzMiw3ICsyMzQsNyBAQCBz aG1fbXFfc2V0X3NlbmRlcihzaG1fbXEgKm1xLCBQR1BST0MgKnByb2MpCiAJU3BpbkxvY2tS ZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCVNl dExhdGNoKCZyZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MocmVjZWl2ZXIpKTsKIH0KIAog LyoKQEAgLTM0MSwxNiArMzQzLDE1IEBAIHNobV9tcV9zZW5kKHNobV9tcV9oYW5kbGUgKm1x aCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsIGJvb2wgbm93YWl0LAogICogV3Jp dGUgYSBtZXNzYWdlIGludG8gYSBzaGFyZWQgbWVzc2FnZSBxdWV1ZSwgZ2F0aGVyZWQgZnJv bSBtdWx0aXBsZQogICogYWRkcmVzc2VzLgogICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2Us IHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3MgbGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIK LSAqIGZpbGxzIHVwLCBhbmQgdGhlbiBjb250aW51ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2Vp dmVyIGhhcyBkcmFpbmVkIHNvbWUgZGF0YS4KLSAqIFRoZSBwcm9jZXNzIGxhdGNoIGlzIHJl c2V0IGFmdGVyIGVhY2ggd2FpdC4KKyAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdh aXQgd2hlbiB0aGUgcmluZyBidWZmZXIgZmlsbHMgdXAsIGFuZCB0aGVuCisgKiBjb250aW51 ZSB3cml0aW5nIG9uY2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFpbmVkIHNvbWUgZGF0YS4KICAq Ci0gKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0 ZSBvZiB0aGUgcHJvY2VzcyBsYXRjaDsKLSAqIGluc3RlYWQsIGlmIHRoZSBidWZmZXIgYmVj b21lcyBmdWxsLCB3ZSByZXR1cm4gU0hNX01RX1dPVUxEX0JMT0NLLiAgSW4KLSAqIHRoaXMg Y2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGFnYWluLCB3aXRo IHRoZSBzYW1lCi0gKiBhcmd1bWVudHMsIGVhY2ggdGltZSB0aGUgcHJvY2VzcyBsYXRjaCBp cyBzZXQuICAoT25jZSBiZWd1biwgdGhlIHNlbmRpbmcKLSAqIG9mIGEgbWVzc2FnZSBjYW5u b3QgYmUgYWJvcnRlZCBleGNlcHQgYnkgZGV0YWNoaW5nIGZyb20gdGhlIHF1ZXVlOyBjaGFu Z2luZwotICogdGhlIGxlbmd0aCBvciBwYXlsb2FkIHdpbGwgY29ycnVwdCB0aGUgcXVldWUu KQorICogV2hlbiBub3dhaXQgPSB0cnVlLCBpZiB0aGUgYnVmZmVyIGJlY29tZXMgZnVsbCwg d2UgcmV0dXJuCisgKiBTSE1fTVFfV09VTERfQkxPQ0suICBJbiB0aGlzIGNhc2UsIHRoZSBj YWxsZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbgorICogYWdhaW4sIHdpdGggdGhlIHNh bWUgYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIElOVEVSUlVQVF9XQUlUX1dBS0VVUAorICog aW50ZXJydXB0IGlzIHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2VuZGluZyBvZiBhIG1lc3Nh Z2UgY2Fubm90IGJlIGFib3J0ZWQKKyAqIGV4Y2VwdCBieSBkZXRhY2hpbmcgZnJvbSB0aGUg cXVldWU7IGNoYW5naW5nIHRoZSBsZW5ndGggb3IgcGF5bG9hZCB3aWxsCisgKiBjb3JydXB0 IHRoZSBxdWV1ZS4pCiAgKgogICogV2hlbiBmb3JjZV9mbHVzaCA9IHRydWUsIHdlIGltbWVk aWF0ZWx5IHVwZGF0ZSB0aGUgc2htX21xJ3MgbXFfYnl0ZXNfd3JpdHRlbgogICogYW5kIG5v dGlmeSB0aGUgcmVjZWl2ZXIgKGlmIGl0IGlzIGFscmVhZHkgYXR0YWNoZWQpLiAgT3RoZXJ3 aXNlLCB3ZSBkb24ndApAQCAtNTM5LDcgKzU0MCw3IEBAIHNobV9tcV9zZW5kdihzaG1fbXFf aGFuZGxlICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBib29sIG5vd2Fp dCwKIAl7CiAJCXNobV9tcV9pbmNfYnl0ZXNfd3JpdHRlbihtcSwgbXFoLT5tcWhfc2VuZF9w ZW5kaW5nKTsKIAkJaWYgKHJlY2VpdmVyICE9IE5VTEwpCi0JCQlTZXRMYXRjaCgmcmVjZWl2 ZXItPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWNlaXZlcikpOwogCQltcWgtPm1xaF9zZW5kX3Bl bmRpbmcgPSAwOwogCX0KIApAQCAtNTU3LDE2ICs1NTgsMTUgQEAgc2htX21xX3NlbmR2KHNo bV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJvb2wg bm93YWl0LAogICogd2hpbGUgc3RpbGwgYWxsb3dpbmcgbG9uZ2VyIG1lc3NhZ2VzLiAgSW4g ZWl0aGVyIGNhc2UsIHRoZSByZXR1cm4gdmFsdWUKICAqIHJlbWFpbnMgdmFsaWQgdW50aWwg dGhlIG5leHQgcmVjZWl2ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBxdWV1ZS4K ICAqCi0gKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNz IGxhdGNoIHdoZW4gdGhlIHJpbmcgYnVmZmVyCi0gKiBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBu b3QgeWV0IHJlY2VpdmVkIGEgZnVsbCBtZXNzYWdlLiAgVGhlIHNlbmRlciB3aWxsCi0gKiBz ZXQgb3VyIHByb2Nlc3MgbGF0Y2ggYWZ0ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4s IGFuZCB3ZSdsbCByZXN1bWUKLSAqIHByb2Nlc3NpbmcuICBFYWNoIGNhbGwgd2lsbCB0aGVy ZWZvcmUgcmV0dXJuIGEgY29tcGxldGUgbWVzc2FnZQotICogKHVubGVzcyB0aGUgc2VuZGVy IGRldGFjaGVzIHRoZSBxdWV1ZSkuCisgKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3 aGVuIHRoZSByaW5nIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBub3QKKyAqIHlldCBy ZWNlaXZlZCBhIGZ1bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIgd2lsbCBzZW5kIHVzIElOVEVS UlVQVF9XQUlUX1dBS0VVUAorICogYWZ0ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4s IGFuZCB3ZSdsbCByZXN1bWUgcHJvY2Vzc2luZy4gIEVhY2ggY2FsbAorICogd2lsbCB0aGVy ZWZvcmUgcmV0dXJuIGEgY29tcGxldGUgbWVzc2FnZSAodW5sZXNzIHRoZSBzZW5kZXIgZGV0 YWNoZXMgdGhlCisgKiBxdWV1ZSkuCiAgKgotICogV2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBk byBub3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3MgbGF0Y2g7Ci0gKiBp bnN0ZWFkLCB3aGVuZXZlciB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCB3ZSBuZWVkIHRvIHJl YWQgZnJvbSBpdCwgd2UKLSAqIHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJbiB0aGlz IGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwgdGhpcwotICogZnVuY3Rpb24gYWdhaW4g YWZ0ZXIgdGhlIHByb2Nlc3MgbGF0Y2ggaGFzIGJlZW4gc2V0LgorICogV2hlbiBub3dhaXQg PSB0cnVlLCB3ZSBkbyBub3Qgd2FpdCB3aGVuIHRoZSBidWZmZXIgaXMgZW1wdHkgYW5kIHJl dHVybgorICogU0hNX01RX1dPVUxEX0JMT0NLIGluc3RlYWQuICBJbiB0aGlzIGNhc2UsIHRo ZSBjYWxsZXIgc2hvdWxkIGNhbGwgdGhpcworICogZnVuY3Rpb24gYWdhaW4gYWZ0ZXIgSU5U RVJSVVBUX1dBSVRfV0FLRVVQIGhhcyBiZWVuIHNldC4KICAqLwogc2htX21xX3Jlc3VsdAog c2htX21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplICpuYnl0ZXNwLCB2b2lk ICoqZGF0YXAsIGJvb2wgbm93YWl0KQpAQCAtNjE5LDggKzYxOSw4IEBAIHNobV9tcV9yZWNl aXZlKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwgdm9pZCAqKmRhdGFwLCBi b29sIG5vd2FpdCkKIAkgKiBJZiB3ZSd2ZSBjb25zdW1lZCBhbiBhbW91bnQgb2YgZGF0YSBn cmVhdGVyIHRoYW4gMS80dGggb2YgdGhlIHJpbmcKIAkgKiBzaXplLCBtYXJrIGl0IGNvbnN1 bWVkIGluIHNoYXJlZCBtZW1vcnkuICBXZSB0cnkgdG8gYXZvaWQgZG9pbmcgdGhpcwogCSAq IHVubmVjZXNzYXJpbHkgd2hlbiBvbmx5IGEgc21hbGwgYW1vdW50IG9mIGRhdGEgaGFzIGJl ZW4gY29uc3VtZWQsCi0JICogYmVjYXVzZSBTZXRMYXRjaCgpIGlzIGZhaXJseSBleHBlbnNp dmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQgdG9vCi0JICogb2Z0ZW4uCisJICogYmVj YXVzZSBTZW5kSW50ZXJydXB0KCkgaXMgZmFpcmx5IGV4cGVuc2l2ZSBhbmQgd2UgZG9uJ3Qg d2FudCB0byBkbyBpdAorCSAqIHRvbyBvZnRlbi4KIAkgKi8KIAlpZiAobXFoLT5tcWhfY29u c3VtZV9wZW5kaW5nID4gbXEtPm1xX3Jpbmdfc2l6ZSAvIDQpCiAJewpAQCAtODk1LDcgKzg5 NSw3IEBAIHNobV9tcV9kZXRhY2hfaW50ZXJuYWwoc2htX21xICptcSkKIAlTcGluTG9ja1Jl bGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAodmljdGltICE9IE5VTEwpCi0JCVNldExh dGNoKCZ2aWN0aW0tPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHZpY3RpbSkpOwogfQogCiAvKgpAQCAt OTkzLDcgKzk5Myw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwg U2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQkgKiBUaGVyZWZvcmUsIHdlIGNh biByZWFkIGl0IHdpdGhvdXQgYWNxdWlyaW5nIHRoZSBzcGlubG9jay4KIAkJCSAqLwogCQkJ QXNzZXJ0KG1xaC0+bXFoX2NvdW50ZXJwYXJ0eV9hdHRhY2hlZCk7Ci0JCQlTZXRMYXRjaCgm bXEtPm1xX3JlY2VpdmVyLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2MobXEtPm1xX3JlY2VpdmVyKSk7 CiAKIAkJCS8qCiAJCQkgKiBXZSBoYXZlIGp1c3QgdXBkYXRlZCB0aGUgbXFoX3NlbmRfcGVu ZGluZyBieXRlcyBpbiB0aGUgc2hhcmVkCkBAIC0xMDAxLDcgKzEwMDEsNyBAQCBzaG1fbXFf c2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lk ICpkYXRhLAogCQkJICovCiAJCQltcWgtPm1xaF9zZW5kX3BlbmRpbmcgPSAwOwogCi0JCQkv KiBTa2lwIG1hbmlwdWxhdGlvbiBvZiBvdXIgbGF0Y2ggaWYgbm93YWl0ID0gdHJ1ZS4gKi8K KwkJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVlLiAqLwogCQkJaWYgKG5vd2Fp dCkKIAkJCXsKIAkJCQkqYnl0ZXNfd3JpdHRlbiA9IHNlbnQ7CkBAIC0xMDA5LDE3ICsxMDA5 LDE4IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0 ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQl9CiAKIAkJCS8qCi0JCQkgKiBXYWl0IGZvciBv dXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNvbWUK KwkJCSAqIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQuICBJdCBtaWdodCBhbHJlYWR5IGJlIHNl dCBmb3Igc29tZQogCQkJICogdW5yZWxhdGVkIHJlYXNvbiwgYnV0IHRoYXQnbGwganVzdCBy ZXN1bHQgaW4gb25lIGV4dHJhIHRyaXAKLQkJCSAqIHRocm91Z2ggdGhlIGxvb3AuICBJdCdz IHdvcnRoIGl0IHRvIGF2b2lkIHJlc2V0dGluZyB0aGUgbGF0Y2gKLQkJCSAqIGF0IHRvcCBv ZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQgbGF0Y2ggaXMgbXVjaAot CQkJICogY2hlYXBlciB0aGFuIHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gcmVzZXQuCisJ CQkgKiB0aHJvdWdoIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCBjbGVhcmlu ZyB0aGUKKwkJCSAqIGludGVycnVwdCBhdCB0b3Agb2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5n IGFuIGFscmVhZHktc2V0CisJCQkgKiBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRoYW4g c2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4KIAkJCSAqLwotCQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAotCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfU0VORCk7CisJCQkodm9pZCkg V2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRf V0FLRVVQLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9TRU5EKTsKIAotCQkJLyog UmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAq LworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQkJLyog QW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4g Ki8KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC0xMDU0LDcgKzEwNTUsNyBAQCBz aG1fbXFfc2VuZF9ieXRlcyhzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25z dCB2b2lkICpkYXRhLAogCiAJCQkvKgogCQkJICogRm9yIGVmZmljaWVuY3ksIHdlIGRvbid0 IHVwZGF0ZSB0aGUgYnl0ZXMgd3JpdHRlbiBpbiB0aGUgc2hhcmVkCi0JCQkgKiBtZW1vcnkg YW5kIGFsc28gZG9uJ3Qgc2V0IHRoZSByZWFkZXIncyBsYXRjaCBoZXJlLiAgUmVmZXIgdG8K KwkJCSAqIG1lbW9yeSBhbmQgYWxzbyBkb24ndCBzZW5kIHRoZSByZWFkZXIgaW50ZXJydXB0 IGhlcmUuICBSZWZlciB0bwogCQkJICogdGhlIGNvbW1lbnRzIGF0b3AgdGhlIHNobV9tcV9o YW5kbGUgc3RydWN0dXJlIGZvciBtb3JlCiAJCQkgKiBpbmZvcm1hdGlvbi4KIAkJCSAqLwpA QCAtMTE1MCwyNSArMTE1MSwyOSBAQCBzaG1fbXFfcmVjZWl2ZV9ieXRlcyhzaG1fbXFfaGFu ZGxlICptcWgsIFNpemUgYnl0ZXNfbmVlZGVkLCBib29sIG5vd2FpdCwKIAkJCW1xaC0+bXFo X2NvbnN1bWVfcGVuZGluZyA9IDA7CiAJCX0KIAotCQkvKiBTa2lwIG1hbmlwdWxhdGlvbiBv ZiBvdXIgbGF0Y2ggaWYgbm93YWl0ID0gdHJ1ZS4gKi8KKwkJLyogU2tpcCB3YWl0aW5nIGlm IG5vd2FpdCA9IHRydWUuICovCiAJCWlmIChub3dhaXQpCiAJCQlyZXR1cm4gU0hNX01RX1dP VUxEX0JMT0NLOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG91ciBsYXRjaCB0byBiZSBzZXQu ICBJdCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQorCQkgKiBXYWl0IGZvciB0aGUg aW50ZXJydXB0IHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21l CiAJCSAqIHVucmVsYXRlZCByZWFzb24sIGJ1dCB0aGF0J2xsIGp1c3QgcmVzdWx0IGluIG9u ZSBleHRyYSB0cmlwIHRocm91Z2gKLQkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0IHRv IGF2b2lkIHJlc2V0dGluZyB0aGUgbGF0Y2ggYXQgdG9wIG9mCi0JCSAqIGxvb3AsIGJlY2F1 c2Ugc2V0dGluZyBhbiBhbHJlYWR5LXNldCBsYXRjaCBpcyBtdWNoIGNoZWFwZXIgdGhhbgot CQkgKiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJlc2V0LgorCQkgKiB0aGUgbG9vcC4g IEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgY2xlYXJpbmcgdGhlIGludGVycnVwdCBhdCB0b3Ag b2YKKwkJICogbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGludGVycnVw dCBpcyBtdWNoIGNoZWFwZXIgdGhhbgorCQkgKiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVu IGNsZWFyZWQuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENI X1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9NRVNT QUdFX1FVRVVFX1JFQ0VJVkUpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zvcklu dGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRF UlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX01F U1NBR0VfUVVFVUVfUkVDRUlWRSk7CiAKLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRv bid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJLyogQW4gaW50ZXJy dXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJLyoK KwkJICogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJl ZCB3aGlsZSB3ZSB3ZXJlCisJCSAqIHdhaXRpbmcuCisJCSAqLwogCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOworCisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bp bi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiB9 CiAKQEAgLTEyNTAsMTQgKzEyNTUsMTggQEAgc2htX21xX3dhaXRfaW50ZXJuYWwoc2htX21x ICptcSwgUEdQUk9DICoqcHRyLCBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJ CX0KIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJ CQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX0lOVEVSTkFMKTsKKwkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VV UCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX0lOVEVSTkFMKTsKIAotCQkvKiBSZXNl dCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKLQotCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2Vy ZSB3YWl0aW5nLiAqLworCQkvKgorCQkgKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJydXB0cyB0 aGF0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUKKwkJICogd2FpdGluZy4KKwkJ ICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogQ2xlYXIgdGhlIGludGVy cnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOwogCX0KIAogCXJldHVybiByZXN1bHQ7CkBAIC0xMjkzLDcgKzEzMDIs NyBAQCBzaG1fbXFfaW5jX2J5dGVzX3JlYWQoc2htX21xICptcSwgU2l6ZSBuKQogCSAqLwog CXNlbmRlciA9IG1xLT5tcV9zZW5kZXI7CiAJQXNzZXJ0KHNlbmRlciAhPSBOVUxMKTsKLQlT ZXRMYXRjaCgmc2VuZGVyLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHNlbmRlcikpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKaW5kZXggZDQ4YjRmZTM3OTku LmFhZWViY2E2YzkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWdu YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMK QEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KIAogI2luY2x1ZGUgImNh dGFsb2cvcGdfYXV0aGlkLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3Rt YXN0ZXIvc3lzbG9nZ2VyLmgiCkBAIC00MSw2ICs0Miw5IEBACiAgKiBJbiB0aGUgZXZlbnQg b2YgYSBnZW5lcmFsIGZhaWx1cmUgKHJldHVybiBjb2RlIDEpLCBhIHdhcm5pbmcgbWVzc2Fn ZSB3aWxsCiAgKiBiZSBlbWl0dGVkLiBGb3IgcGVybWlzc2lvbiBlcnJvcnMsIGRvaW5nIHRo YXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCiAgKiB0aGUgY2FsbGVyLgorICoKKyAqIFRP RE86IFRoaXMgY291bGQgYmUgY2hhbmdlZCB0byBzZW5kIGFuIGludGVycnVwdCBkaXJlY3Rs eSBub3cuIEJ1dCBzZW5kaW5nCisgKiBhIFNJR1RFUk0gb3IgU0lHSU5UIHN0aWxsIHdvcmtz IHRvby4KICAqLwogI2RlZmluZSBTSUdOQUxfQkFDS0VORF9TVUNDRVNTIDAKICNkZWZpbmUg U0lHTkFMX0JBQ0tFTkRfRVJST1IgMQpAQCAtMjAxLDEyICsyMDUsMTIgQEAgcGdfd2FpdF91 bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0aW1lb3V0KQogCQkvKiBQcm9jZXNz IGludGVycnVwdHMsIGlmIGFueSwgYmVmb3JlIHdhaXRpbmcgKi8KIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkg d2FpdHRpbWUsCi0JCQkJCQkgV0FJVF9FVkVOVF9CQUNLRU5EX1RFUk1JTkFUSU9OKTsKKwkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIHdhaXR0aW1lLAorCQkJCQkJCSBXQUlUX0VW RU5UX0JBQ0tFTkRfVEVSTUlOQVRJT04pOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJcmVtYWluaW5n dGltZSAtPSB3YWl0dGltZTsKIAl9IHdoaWxlIChyZW1haW5pbmd0aW1lID4gMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NpbnZhbC5jCmluZGV4IDU1NTlmN2MxY2ZhLi5kY2FiZDI1OTU2YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKQEAgLTE1LDMwICsxNSwxMyBAQAogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgogCi0KIHVpbnQ2NAkJU2hhcmVkSW52YWxpZE1lc3Nh Z2VDb3VudGVyOwogCi0KLS8qCi0gKiBCZWNhdXNlIGJhY2tlbmRzIHNpdHRpbmcgaWRsZSB3 aWxsIG5vdCBiZSByZWFkaW5nIHNpbnZhbCBldmVudHMsIHdlCi0gKiBuZWVkIGEgd2F5IHRv IGdpdmUgYW4gaWRsZSBiYWNrZW5kIGEgc3dpZnQga2ljayBpbiB0aGUgcmVhciBhbmQgbWFr ZQotICogaXQgY2F0Y2ggdXAgYmVmb3JlIHRoZSBzaW52YWwgcXVldWUgb3ZlcmZsb3dzIGFu ZCBmb3JjZXMgaXQgdG8gZ28KLSAqIHRocm91Z2ggYSBjYWNoZSByZXNldCBleGVyY2lzZS4g IFRoaXMgaXMgZG9uZSBieSBzZW5kaW5nCi0gKiBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBU IHRvIGFueSBiYWNrZW5kIHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KLSAqCi0gKiBUaGUg c2lnbmFsIGhhbmRsZXIgd2lsbCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQg d2lsbCBzZXQgdGhlCi0gKiBwcm9jZXNzZXMgbGF0Y2guIFdoZW5ldmVyIHN0YXJ0aW5nIHRv IHJlYWQgZnJvbSB0aGUgY2xpZW50LCBvciB3aGVuCi0gKiBpbnRlcnJ1cHRlZCB3aGlsZSBk b2luZyBzbywgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSB3aWxsIGNhbGwKLSAqIFBy b2Nlc3NDYXRjaHVwRXZlbnQoKS4KLSAqLwotdm9sYXRpbGUgc2lnX2F0b21pY190IGNhdGNo dXBJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci0KLQogLyoKICAqIFNlbmRTaGFyZWRJbnZh bGlkTWVzc2FnZXMKICAqCUFkZCBzaGFyZWQtY2FjaGUtaW52YWxpZGF0aW9uIG1lc3NhZ2Uo cykgdG8gdGhlIGdsb2JhbCBTSSBtZXNzYWdlIHF1ZXVlLgpAQCAtMTMyLDM4ICsxMTUsMTMg QEAgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52YWxGdW5jdGlvbikg KFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm0KIAkgKiBjYXRjaHVwIHNpZ25hbCB0aGlz IHdheSBhdm9pZHMgY3JlYXRpbmcgc3Bpa2VzIGluIHN5c3RlbSBsb2FkIGZvciB3aGF0CiAJ ICogc2hvdWxkIGJlIGp1c3QgYSBiYWNrZ3JvdW5kIG1haW50ZW5hbmNlIGFjdGl2aXR5Lgog CSAqLwotCWlmIChjYXRjaHVwSW50ZXJydXB0UGVuZGluZykKKwlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVApKQogCXsKLQkJY2F0Y2h1cEludGVycnVw dFBlbmRpbmcgPSBmYWxzZTsKIAkJZWxvZyhERUJVRzQsICJzaW52YWwgY2F0Y2h1cCBjb21w bGV0ZSwgY2xlYW5pbmcgcXVldWUiKTsKIAkJU0lDbGVhbnVwUXVldWUoZmFsc2UsIDApOwog CX0KIH0KIAotCi0vKgotICogSGFuZGxlQ2F0Y2h1cEludGVycnVwdAotICoKLSAqIFRoaXMg aXMgY2FsbGVkIHdoZW4gUFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVCBpcyByZWNlaXZlZC4K LSAqCi0gKiBXZSB1c2VkIHRvIGRpcmVjdGx5IGNhbGwgUHJvY2Vzc0NhdGNodXBFdmVudCBk aXJlY3RseSB3aGVuIGlkbGUuIFRoZXNlIGRheXMKLSAqIHdlIGp1c3Qgc2V0IGEgZmxhZyB0 byBkbyBpdCBsYXRlciBhbmQgbm90aWZ5IHRoZSBwcm9jZXNzIG9mIHRoYXQgZmFjdCBieQot ICogc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoLgotICovCi12b2lkCi1IYW5kbGVDYXRj aHVwSW50ZXJydXB0KHZvaWQpCi17Ci0JLyoKLQkgKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCBi eSBhIFNJR05BTCBIQU5ETEVSLiBZb3UgbXVzdCBiZSB2ZXJ5IHdhcnkgd2hhdAotCSAqIHlv dSBkbyBoZXJlLgotCSAqLwotCi0JY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwot Ci0JLyogbWFrZSBzdXJlIHRoZSBldmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAq LwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCiAvKgogICogUHJvY2Vzc0NhdGNodXBJbnRl cnJ1cHQKICAqCkBAIC0xNzMsMTUgKzEzMSwxNSBAQCBIYW5kbGVDYXRjaHVwSW50ZXJydXB0 KHZvaWQpCiB2b2lkCiBQcm9jZXNzQ2F0Y2h1cEludGVycnVwdCh2b2lkKQogewotCXdoaWxl IChjYXRjaHVwSW50ZXJydXB0UGVuZGluZykKKwlkbwogCXsKIAkJLyoKIAkJICogV2hhdCB3 ZSBuZWVkIHRvIGRvIGhlcmUgaXMgY2F1c2UgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdl cygpIHRvCi0JCSAqIHJ1biwgd2hpY2ggd2lsbCBkbyB0aGUgbmVjZXNzYXJ5IHdvcmsgYW5k IGFsc28gcmVzZXQgdGhlCi0JCSAqIGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nIGZsYWcuICBJ ZiB3ZSBhcmUgaW5zaWRlIGEgdHJhbnNhY3Rpb24gd2UKLQkJICogY2FuIGp1c3QgY2FsbCBB Y2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpIHRvIGRvIHRoaXMuICBJZiB3ZQotCQkgKiBh cmVuJ3QsIHdlIHN0YXJ0IGFuZCBpbW1lZGlhdGVseSBlbmQgYSB0cmFuc2FjdGlvbjsgdGhl IGNhbGwgdG8KLQkJICogQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBoYXBwZW5zIGRv d24gaW5zaWRlIHRyYW5zYWN0aW9uIHN0YXJ0LgorCQkgKiBydW4sIHdoaWNoIHdpbGwgZG8g dGhlIG5lY2Vzc2FyeSB3b3JrLiAgSWYgd2UgYXJlIGluc2lkZSBhCisJCSAqIHRyYW5zYWN0 aW9uIHdlIGNhbiBqdXN0IGNhbGwgQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSB0byBk bworCQkgKiB0aGlzLiAgSWYgd2UgYXJlbid0LCB3ZSBzdGFydCBhbmQgaW1tZWRpYXRlbHkg ZW5kIGEgdHJhbnNhY3Rpb247CisJCSAqIHRoZSBjYWxsIHRvIEFjY2VwdEludmFsaWRhdGlv bk1lc3NhZ2VzKCkgaGFwcGVucyBkb3duIGluc2lkZQorCQkgKiB0cmFuc2FjdGlvbiBzdGFy dC4KIAkJICoKIAkJICogSXQgaXMgYXdmdWxseSB0ZW1wdGluZyB0byBqdXN0IGNhbGwgQWNj ZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKQogCQkgKiB3aXRob3V0IHRoZSByZXN0IG9mIHRo ZSB4YWN0IHN0YXJ0L3N0b3Agb3ZlcmhlYWQsIGFuZCBJIHRoaW5rIHRoYXQKQEAgLTE5MCwx NCArMTQ4LDIwIEBAIFByb2Nlc3NDYXRjaHVwSW50ZXJydXB0KHZvaWQpCiAJCSAqLwogCQlp ZiAoSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQogCQl7Ci0JCQllbG9nKERF QlVHNCwgIlByb2Nlc3NDYXRjaHVwRXZlbnQgaW5zaWRlIHRyYW5zYWN0aW9uIik7CisJCQll bG9nKERFQlVHNCwgIlByb2Nlc3NDYXRjaHVwSW50ZXJydXB0IGluc2lkZSB0cmFuc2FjdGlv biIpOwogCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKIAkJfQogCQllbHNlCiAJ CXsKLQkJCWVsb2coREVCVUc0LCAiUHJvY2Vzc0NhdGNodXBFdmVudCBvdXRzaWRlIHRyYW5z YWN0aW9uIik7CisJCQllbG9nKERFQlVHNCwgIlByb2Nlc3NDYXRjaHVwSW50ZXJydXB0IG91 dHNpZGUgdHJhbnNhY3Rpb24iKTsKIAkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJ CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJfQorCisJCS8qCisJCSAqIElmIGFu b3RoZXIgY2F0Y2h1cCBpbnRlcnJ1cHQgYXJyaXZlZCB3aGlsZSB3ZSB3ZXJlIHByb2Nlc2lu ZyB0aGUKKwkJICogcHJldmlvdXMgb25lLCBwcm9jZXNzIHRoZSBuZXcgb25lIHRvby4KKwkJ ICovCiAJfQorCXdoaWxlIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9TSU5WQUxfQ0FU Q0hVUCkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFs YWR0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwppbmRleCBhN2E3 Y2M0ZjBhOS4uNDJjOTg3ZGNiOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NpbnZhbGFkdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFk dC5jCkBAIC0xNywxMSArMTcsMTEgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRl IDx1bmlzdGQuaD4KIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNp bmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5o IgpAQCAtMTE4LDcgKzExOCw3IEBACiAgKiB3ZSBleGNlZWQgQ0xFQU5VUF9NSU4uICBTaG91 bGQgYmUgYSBwb3dlciBvZiAyIGZvciBzcGVlZC4KICAqCiAgKiBTSUdfVEhSRVNIT0xEOiB0 aGUgbWluaW11bSBudW1iZXIgb2YgbWVzc2FnZXMgYSBiYWNrZW5kIG11c3QgaGF2ZSBmYWxs ZW4KLSAqIGJlaGluZCBiZWZvcmUgd2UnbGwgc2VuZCBpdCBQUk9DU0lHX0NBVENIVVBfSU5U RVJSVVBULgorICogYmVoaW5kIGJlZm9yZSB3ZSdsbCBzZW5kIGl0IElOVEVSUlVQVF9TSU5W QUxfQ0FUQ0hVUC4KICAqCiAgKiBXUklURV9RVUFOVFVNOiB0aGUgbWF4IG51bWJlciBvZiBt ZXNzYWdlcyB0byBwdXNoIGludG8gdGhlIGJ1ZmZlciBwZXIKICAqIGl0ZXJhdGlvbiBvZiBT SUluc2VydERhdGFFbnRyaWVzLiAgTm9uY3JpdGljYWwgYnV0IHNob3VsZCBiZSBsZXNzIHRo YW4KQEAgLTMxNCw2ICszMTQsMTQgQEAgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29sIHNl bmRPbmx5KQogCiAJLyogcmVnaXN0ZXIgZXhpdCByb3V0aW5lIHRvIG1hcmsgbXkgZW50cnkg aW5hY3RpdmUgYXQgZXhpdCAqLwogCW9uX3NobWVtX2V4aXQoQ2xlYW51cEludmFsaWRhdGlv blN0YXRlLCBQb2ludGVyR2V0RGF0dW0oc2VnUCkpOworCisJLyoKKwkgKiBhbGwgcHJvY2Vz c2VzIHRoYXQgcGFydGljaXBhdGUgaW4gc2hhcmVkIGludmFsaWRhdGlvbnMgbXVzdCBoYW5k bGUKKwkgKiBjYXRjaHVwIGludGVycnVwdHMgcHJvbXB0bHkuIChDbGllbnQgYmFja2VuZHMg d2lsbCBkaXNhYmxlIHRoaXMgd2hpbGUKKwkgKiBwcm9jZXNzaW5nIGEgcXVlcnksIGJ1dCBl bmFibGUgYnkgZGVmYXVsdC4pCisJICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJV UFRfU0lOVkFMX0NBVENIVVAsIFByb2Nlc3NDYXRjaHVwSW50ZXJydXB0KTsKKwlFbmFibGVJ bnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQKTsKIH0KIAogLyoKQEAgLTU2NSw3 ICs1NzMsNyBAQCBTSUdldERhdGFFbnRyaWVzKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2Ug KmRhdGEsIGludCBkYXRhc2l6ZSkKICAqIG1pbkZyZWUgaXMgdGhlIG1pbmltdW0gbnVtYmVy IG9mIG1lc3NhZ2Ugc2xvdHMgdG8gbWFrZSBmcmVlLgogICoKICAqIFBvc3NpYmxlIHNpZGUg ZWZmZWN0cyBvZiB0aGlzIHJvdXRpbmUgaW5jbHVkZSBtYXJraW5nIG9uZSBvciBtb3JlCi0g KiBiYWNrZW5kcyBhcyAicmVzZXQiIGluIHRoZSBhcnJheSwgYW5kIHNlbmRpbmcgUFJPQ1NJ R19DQVRDSFVQX0lOVEVSUlVQVAorICogYmFja2VuZHMgYXMgInJlc2V0IiBpbiB0aGUgYXJy YXksIGFuZCBzZW5kaW5nIElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUAogICogdG8gc29tZSBi YWNrZW5kIHRoYXQgc2VlbXMgdG8gYmUgZ2V0dGluZyB0b28gZmFyIGJlaGluZC4gIFdlIHNp Z25hbCBhdAogICogbW9zdCBvbmUgYmFja2VuZCBhdCBhIHRpbWUsIGZvciByZWFzb25zIGV4 cGxhaW5lZCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLgogICoKQEAgLTY1OCw4ICs2NjYsOCBA QCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9jaywgaW50IG1pbkZyZWUp CiAJCXNlZ1AtPm5leHRUaHJlc2hvbGQgPSAobnVtTXNncyAvIENMRUFOVVBfUVVBTlRVTSAr IDEpICogQ0xFQU5VUF9RVUFOVFVNOwogCiAJLyoKLQkgKiBMYXN0bHksIHNpZ25hbCBhbnlv bmUgd2hvIG5lZWRzIGEgY2F0Y2h1cCBpbnRlcnJ1cHQuICBTaW5jZQotCSAqIFNlbmRQcm9j U2lnbmFsKCkgbWlnaHQgbm90IGJlIGZhc3QsIHdlIGRvbid0IHdhbnQgdG8gaG9sZCBsb2Nr cyB3aGlsZQorCSAqIExhc3RseSwgc2lnbmFsIGFueW9uZSB3aG8gbmVlZHMgYSBjYXRjaHVw IGludGVycnVwdC4gIFNlbmRJbnRlcnJ1cHQoKQorCSAqIGlzIHByZXR0eSBmYXN0LCBidXQg d2UgbmV2ZXJ0aGVsZXNzIGRvbid0IHdhbnQgdG8gaG9sZCBsb2NrcyB3aGlsZQogCSAqIGV4 ZWN1dGluZyBpdC4KIAkgKi8KIAlpZiAobmVlZFNpZykKQEAgLTY3MCw4ICs2NzgsOCBAQCBT SUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9jaywgaW50IG1pbkZyZWUpCiAJ CW5lZWRTaWctPnNpZ25hbGVkID0gdHJ1ZTsKIAkJTFdMb2NrUmVsZWFzZShTSW52YWxSZWFk TG9jayk7CiAJCUxXTG9ja1JlbGVhc2UoU0ludmFsV3JpdGVMb2NrKTsKLQkJZWxvZyhERUJV RzQsICJzZW5kaW5nIHNpbnZhbCBjYXRjaHVwIHNpZ25hbCB0byBQSUQgJWQiLCAoaW50KSBo aXNfcGlkKTsKLQkJU2VuZFByb2NTaWduYWwoaGlzX3BpZCwgUFJPQ1NJR19DQVRDSFVQX0lO VEVSUlVQVCwgaGlzX3Byb2NOdW1iZXIpOworCQllbG9nKERFQlVHNCwgInNlbmRpbmcgc2lu dmFsIGNhdGNodXAgaW50ZXJydXB0IHRvIGJhY2tlbmQgUElEICVkIiwgKGludCkgaGlzX3Bp ZCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQLCBoaXNfcHJv Y051bWJlcik7CiAJCWlmIChjYWxsZXJIYXNXcml0ZUxvY2spCiAJCQlMV0xvY2tBY3F1aXJl KFNJbnZhbFdyaXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zdGFuZGJ5LmMKaW5kZXggZDgzYWZiZmI5ZDYuLmM5MjQyZDZmYjg5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC01OTYsNyArNTk3LDcgQEAgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoRGF0YWJhc2UoT2lkIGRiaWQpCiAgKiBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhMb2NrIGlzIGNhbGxlZCBmcm9tIFByb2NTbGVlcCgpCiAgKiB0byBy ZXNvbHZlIGNvbmZsaWN0cyB3aXRoIG90aGVyIGJhY2tlbmRzIGhvbGRpbmcgcmVsYXRpb24g bG9ja3MuCiAgKgotICogVGhlIFdhaXRMYXRjaCBzbGVlcCBub3JtYWxseSBkb25lIGluIFBy b2NTbGVlcCgpCisgKiBUaGUgV2FpdEludGVycnVwdCBzbGVlcCBub3JtYWxseSBkb25lIGlu IFByb2NTbGVlcCgpCiAgKiAod2hlbiBub3QgSW5Ib3RTdGFuZGJ5KSBpcyBwZXJmb3JtZWQg aGVyZSwgZm9yIGNvZGUgY2xhcml0eS4KICAqCiAgKiBXZSBlaXRoZXIgcmVzb2x2ZSBjb25m bGljdHMgaW1tZWRpYXRlbHkgb3Igc2V0IGEgdGltZW91dCB0byB3YWtlIHVzIGF0CkBAIC02 OTgsNyArNjk5LDExIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9DS1RB RyBsb2NrdGFnLCBib29sIGxvZ2dpbmdfY29uZmxpY3QpCiAJfQogCiAJLyogV2FpdCB0byBi ZSBzaWduYWxlZCBieSB0aGUgcmVsZWFzZSBvZiB0aGUgUmVsYXRpb24gTG9jayAqLwotCVBy b2NXYWl0Rm9yU2lnbmFsKFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsK KwlXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsCisJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAorCQkJCSAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FL RVVQKTsKIAogCS8qCiAJICogRXhpdCBpZiBsdGltZSBpcyByZWFjaGVkLiBUaGVuIGFsbCB0 aGUgYmFja2VuZHMgaG9sZGluZyBjb25mbGljdGluZwpAQCAtNzQ2LDcgKzc1MSwxMSBAQCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBs b2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRpbCB0aGUgcmVsYXRpb24gbG9ja3MgYXJlIHJl bGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQuCiAJCSAqLwogCQlnb3Rfc3RhbmRieV9kZWFk bG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVByb2NXYWl0Rm9yU2lnbmFsKFBHX1dBSVRfTE9D SyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJV2FpdEludGVycnVwdChDaGVja0Zvcklu dGVycnVwdHNNYXNrIHwKKwkJCQkJICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCSAgUEdfV0FJVF9MT0NLIHwg bG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIAogY2xlYW51cDoK QEAgLTc2NiwxNSArNzc1LDE2IEBAIGNsZWFudXA6CiAgKiBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhCdWZmZXJQaW4gaXMgY2FsbGVkIGZyb20gTG9ja0J1ZmZlckZvckNsZWFudXAo KQogICogdG8gcmVzb2x2ZSBjb25mbGljdHMgd2l0aCBvdGhlciBiYWNrZW5kcyBob2xkaW5n IGJ1ZmZlciBwaW5zLgogICoKLSAqIFRoZSBQcm9jV2FpdEZvclNpZ25hbCgpIHNsZWVwIG5v cm1hbGx5IGRvbmUgaW4gTG9ja0J1ZmZlckZvckNsZWFudXAoKQotICogKHdoZW4gbm90IElu SG90U3RhbmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBjb2RlIGNsYXJpdHkuCisgKiBU aGUgV2FpdEludGVycnVwdCBzbGVlcCBub3JtYWxseSBkb25lIGluIExvY2tCdWZmZXJGb3JD bGVhbnVwKCkgKHdoZW4gbm90CisgKiBJbkhvdFN0YW5kYnkpIGlzIHBlcmZvcm1lZCBoZXJl LCBmb3IgY29kZSBjbGFyaXR5LgogICoKICAqIFdlIGVpdGhlciByZXNvbHZlIGNvbmZsaWN0 cyBpbW1lZGlhdGVseSBvciBzZXQgYSB0aW1lb3V0IHRvIHdha2UgdXMgYXQKICAqIHRoZSBs aW1pdCBvZiBvdXIgcGF0aWVuY2UuCiAgKgotICogUmVzb2x2ZSBjb25mbGljdHMgYnkgc2Vu ZGluZyBhIFBST0NTSUcgc2lnbmFsIHRvIGFsbCBiYWNrZW5kcyB0byBjaGVjayBpZgotICog dGhleSBob2xkIG9uZSBvZiB0aGUgYnVmZmVyIHBpbnMgdGhhdCBpcyBibG9ja2luZyBTdGFy dHVwIHByb2Nlc3MuIElmIHNvLAotICogdGhvc2UgYmFja2VuZHMgd2lsbCB0YWtlIGFuIGFw cHJvcHJpYXRlIGVycm9yIGFjdGlvbiwgRVJST1Igb3IgRkFUQUwuCisgKiBSZXNvbHZlIGNv bmZsaWN0cyBieSBzZW5kaW5nIFJFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiB0byBhbGwK KyAqIGJhY2tlbmRzIHRvIGNoZWNrIGlmIHRoZXkgaG9sZCBvbmUgb2YgdGhlIGJ1ZmZlciBw aW5zIHRoYXQgaXMgYmxvY2tpbmcKKyAqIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sIHRob3Nl IGJhY2tlbmRzIHdpbGwgdGFrZSBhbiBhcHByb3ByaWF0ZSBlcnJvcgorICogYWN0aW9uLCBF UlJPUiBvciBGQVRBTC4KICAqCiAgKiBXZSBhbHNvIG11c3QgY2hlY2sgZm9yIGRlYWRsb2Nr cy4gIERlYWRsb2NrcyBvY2N1ciBiZWNhdXNlIGlmIHF1ZXJpZXMKICAqIHdhaXQgb24gYSBs b2NrLCB0aGF0IG11c3QgYmUgYmVoaW5kIGFuIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHdoaWNo IGNhbiBvbmx5CkBAIC04MzgsOSArODQ4LDE5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3VtZSB0aGF0IG9ubHkgVW5waW5CdWZm ZXIoKSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0YWJsaXNoZWQKIAkgKiBhYm92ZSBj YW4gd2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVyeSgpIGNhbGxlZCBieSB3YWxyZWNl aXZlciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxlciwgZXRjIGNhbm5vdCBkbyB0aGF0 IGJlY2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0JICogbGF0Y2ggZnJvbSB0aGF0IFBy b2NXYWl0Rm9yU2lnbmFsKCkgd2FpdHMgb24uCisJICogaW50ZXJydXB0IGZsYWcuCisJICoK KwkgKiBGSVhNRTogc2VlbXMgbGlrZSBhIHNoYWt5IGFzc3VtcHRpb24uIFdha2V1cFJlY292 ZXJ5KCkgaW5kZWVkIHVzZXMgYQorCSAqIGRpZmZlcmVudCBpbnRlcnJ1cHQgZmxhZyAoZGlm ZmVyZW50IGxhdGNoIGVhcmxpZXIpLCBidXQgb3RoZXIKKwkgKiBpbnRlcnJ1cHRzIGN1cnJl bnRseSBpbiBDaGVja0ZvckludGVycnVwdHNNYXNrIGNvdWxkIHN1cmVseSB3YWtlIHVzIHVw CisJICogdG9vLiBIb3dldmVyLCB0aGUgY2FsbGVyIGxvb3BzIGlmIHRoZSBidWZmZXIgaXMg c3RpbGwgcGlubmVkLCBzbyB0aGlzCisJICogaXNuJ3QgY29tcGxldGVseSBicm9rZW4uIFRo ZSB0aW1lb3V0cyBnZXQgcmVzZXQgdGhvdWdoLgogCSAqLwotCVByb2NXYWl0Rm9yU2lnbmFs KFdBSVRfRVZFTlRfQlVGRkVSX0NMRUFOVVApOworCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkgIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJICBXQUlUX0VWRU5UX0JVRkZF Ul9DTEVBTlVQKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwor CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAlpZiAoZ290X3N0YW5kYnlfZGVsYXlfdGlt ZW91dCkKIAkJU2VuZFJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKFJFQ09WRVJZX0NP TkZMSUNUX0JVRkZFUlBJTik7CkBAIC05MzYsNiArOTU2LDcgQEAgdm9pZAogU3RhbmRieURl YWRMb2NrSGFuZGxlcih2b2lkKQogewogCWdvdF9zdGFuZGJ5X2RlYWRsb2NrX3RpbWVvdXQg PSB0cnVlOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAK IC8qCkBAIC05NDUsNiArOTY2LDcgQEAgdm9pZAogU3RhbmRieVRpbWVvdXRIYW5kbGVyKHZv aWQpCiB7CiAJZ290X3N0YW5kYnlfZGVsYXlfdGltZW91dCA9IHRydWU7CisJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTk1NCw2ICs5NzYs NyBAQCB2b2lkCiBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJZ290X3N0 YW5kYnlfbG9ja190aW1lb3V0ID0gdHJ1ZTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvd2FpdGV2ZW50c2V0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZl bnRzZXQuYwppbmRleCA3NzJlMzUwYTBjMC4uNjEyZGU4YjM1ZTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCkBAIC04LDggKzgsOCBAQAogICogcHNlbGVj dCgpIChhcyBvcHBvc2VkIHRvIHBsYWluIHBvbGwoKS9zZWxlY3QoKSkuCiAgKgogICogWW91 IGNhbiB3YWl0IGZvcjoKLSAqIC0gYSBsYXRjaCBiZWluZyBzZXQgZnJvbSBhbm90aGVyIHBy b2Nlc3Mgb3IgZnJvbSBzaWduYWwgaGFuZGxlciBpbiB0aGUgc2FtZQotICogICBwcm9jZXNz IChXTF9MQVRDSF9TRVQpCisgKiAtIGFuIGludGVycnVwdCBmcm9tIGFub3RoZXIgcHJvY2Vz cyBvciBmcm9tIHNpZ25hbCBoYW5kbGVyIGluIHRoZSBzYW1lCisgKiAgIHByb2Nlc3MgKFdM X0lOVEVSUlVQVCkKICAqIC0gZGF0YSB0byBiZWNvbWUgcmVhZGFibGUgb3Igd3JpdGVhYmxl IG9uIGEgc29ja2V0IChXTF9TT0NLRVRfKikKICAqIC0gcG9zdG1hc3RlciBkZWF0aCAoV0xf UE9TVE1BU1RFUl9ERUFUSCBvciBXTF9FWElUX09OX1BNX0RFQVRIKQogICogLSB0aW1lb3V0 IChXTF9USU1FT1VUKQpAQCAtMTcsMTUgKzE3LDE2IEBACiAgKiBJbXBsZW1lbnRhdGlvbgog ICogLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBUaGUgcG9sbCgpIGltcGxlbWVudGF0aW9uIHVz ZXMgdGhlIHNvLWNhbGxlZCBzZWxmLXBpcGUgdHJpY2sgdG8gb3ZlcmNvbWUgdGhlCi0gKiBy YWNlIGNvbmRpdGlvbiBpbnZvbHZlZCB3aXRoIHBvbGwoKSBhbmQgc2V0dGluZyBhIGdsb2Jh bCBmbGFnIGluIHRoZSBzaWduYWwKLSAqIGhhbmRsZXIuIFdoZW4gYSBsYXRjaCBpcyBzZXQg YW5kIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgaXQsIHRoZQotICogc2ln bmFsIGhhbmRsZXIgd2FrZXMgdXAgdGhlIHBvbGwoKSBpbiBXYWl0TGF0Y2ggYnkgd3JpdGlu ZyBhIGJ5dGUgdG8gYSBwaXBlLgotICogQSBzaWduYWwgYnkgaXRzZWxmIGRvZXNuJ3QgaW50 ZXJydXB0IHBvbGwoKSBvbiBhbGwgcGxhdGZvcm1zLCBhbmQgZXZlbiBvbgotICogcGxhdGZv cm1zIHdoZXJlIGl0IGRvZXMsIGEgc2lnbmFsIHRoYXQgYXJyaXZlcyBqdXN0IGJlZm9yZSB0 aGUgcG9sbCgpIGNhbGwKLSAqIGRvZXMgbm90IHByZXZlbnQgcG9sbCgpIGZyb20gZW50ZXJp bmcgc2xlZXAuIEFuIGluY29taW5nIGJ5dGUgb24gYSBwaXBlCi0gKiBob3dldmVyIHJlbGlh Ymx5IGludGVycnVwdHMgdGhlIHNsZWVwLCBhbmQgY2F1c2VzIHBvbGwoKSB0byByZXR1cm4K LSAqIGltbWVkaWF0ZWx5IGV2ZW4gaWYgdGhlIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSBwb2xs KCkgYmVnaW5zLgorICogVGhlIHBvbGwoKSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1j YWxsZWQgc2VsZi1waXBlIHRyaWNrIHRvIG92ZXJjb21lCisgKiB0aGUgcmFjZSBjb25kaXRp b24gaW52b2x2ZWQgd2l0aCBwb2xsKCkgYW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0 aGUKKyAqIHNpZ25hbCBoYW5kbGVyLiBXaGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBh bmQgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcworICogd2FpdGluZyB3YWl0aW5nIGZvciBpdCwg dGhlIHNpZ25hbCBoYW5kbGVyIHdha2VzIHVwIHRoZSBwb2xsKCkgaW4KKyAqIFdhaXRJbnRl cnJ1cHQgYnkgd3JpdGluZyBhIGJ5dGUgdG8gYSBwaXBlLiAgQSBzaWduYWwgYnkgaXRzZWxm IGRvZXNuJ3QKKyAqIGludGVycnVwdCBwb2xsKCkgb24gYWxsIHBsYXRmb3JtcywgYW5kIGV2 ZW4gb24gcGxhdGZvcm1zIHdoZXJlIGl0IGRvZXMsIGEKKyAqIHNpZ25hbCB0aGF0IGFycml2 ZXMganVzdCBiZWZvcmUgdGhlIHBvbGwoKSBjYWxsIGRvZXMgbm90IHByZXZlbnQgcG9sbCgp CisgKiBmcm9tIGVudGVyaW5nIHNsZWVwLiBBbiBpbmNvbWluZyBieXRlIG9uIGEgcGlwZSBo b3dldmVyIHJlbGlhYmx5IGludGVycnVwdHMKKyAqIHRoZSBzbGVlcCwgYW5kIGNhdXNlcyBw b2xsKCkgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGV2ZW4gaWYgdGhlIHNpZ25hbAorICogYXJy aXZlcyBiZWZvcmUgcG9sbCgpIGJlZ2lucy4KICAqCiAgKiBUaGUgZXBvbGwoKSBpbXBsZW1l bnRhdGlvbiBvdmVyY29tZXMgdGhlIHJhY2Ugd2l0aCBhIGRpZmZlcmVudCB0ZWNobmlxdWU6 IGl0CiAgKiBrZWVwcyBTSUdVUkcgYmxvY2tlZCBhbmQgY29uc3VtZXMgZnJvbSBhIHNpZ25h bGZkKCkgZGVzY3JpcHRvciBpbnN0ZWFkLiAgV2UKQEAgLTczLDcgKzc0LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0 LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNv d25lci5oIgpAQCAtMTI4LDEzICsxMjksMTMgQEAgc3RydWN0IFdhaXRFdmVudFNldAogCVdh aXRFdmVudCAgKmV2ZW50czsKIAogCS8qCi0JICogSWYgV0xfTEFUQ0hfU0VUIGlzIHNwZWNp ZmllZCBpbiBhbnkgd2FpdCBldmVudCwgbGF0Y2ggaXMgYSBwb2ludGVyIHRvCi0JICogc2Fp ZCBsYXRjaCwgYW5kIGxhdGNoX3BvcyB0aGUgb2Zmc2V0IGluIHRoZSAtPmV2ZW50cyBhcnJh eS4gVGhpcyBpcwotCSAqIHVzZWZ1bCBiZWNhdXNlIHdlIGNoZWNrIHRoZSBzdGF0ZSBvZiB0 aGUgbGF0Y2ggYmVmb3JlIHBlcmZvcm1pbmcgZG9pbmcKLQkgKiBzeXNjYWxscyByZWxhdGVk IHRvIHdhaXRpbmcuCisJICogSWYgV0xfSU5URVJSVVBUIGlzIHNwZWNpZmllZCBpbiBhbnkg d2FpdCBldmVudCwgaW50ZXJydXB0TWFzayBpcyB0aGUKKwkgKiBpbnRlcnJ1cHRzIHRvIHdh aXQgZm9yLCBhbmQgaW50ZXJydXB0X3BvcyB0aGUgb2Zmc2V0IGluIHRoZSAtPmV2ZW50cwor CSAqIGFycmF5LiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIGNoZWNrIHRoZSBzdGF0ZSBv ZiBwZW5kaW5nIGludGVycnVwdHMKKwkgKiBiZWZvcmUgcGVyZm9ybWluZyBzeXNjYWxscyBy ZWxhdGVkIHRvIHdhaXRpbmcuCiAJICovCi0JTGF0Y2gJICAgKmxhdGNoOwotCWludAkJCWxh dGNoX3BvczsKKwlJbnRlcnJ1cHRNYXNrIGludGVycnVwdF9tYXNrOworCWludAkJCWludGVy cnVwdF9wb3M7CiAKIAkvKgogCSAqIFdMX0VYSVRfT05fUE1fREVBVEggaXMgY29udmVydGVk IHRvIFdMX1BPU1RNQVNURVJfREVBVEgsIGJ1dCB0aGlzIGZsYWcKQEAgLTE2Nyw3ICsxNjgs NyBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiB9OwogCiAjaWZuZGVmIFdJTjMyCi0vKiBBcmUg d2UgY3VycmVudGx5IGluIFdhaXRMYXRjaD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxp a2UgdG8ga25vdy4gKi8KKy8qIEFyZSB3ZSBjdXJyZW50bHkgb24gYSBXYWl0RXZlbnRTZXQ/ IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBsaWtlIHRvIGtub3cuICovCiBzdGF0aWMgdm9s YXRpbGUgc2lnX2F0b21pY190IHdhaXRpbmcgPSBmYWxzZTsKICNlbmRpZgogCkBAIC0xODMs OSArMTg0LDE2IEBAIHN0YXRpYyBpbnQJc2VsZnBpcGVfd3JpdGVmZCA9IC0xOwogCiAvKiBQ cm9jZXNzIG93bmluZyB0aGUgc2VsZi1waXBlIC0tLSBuZWVkZWQgZm9yIGNoZWNraW5nIHB1 cnBvc2VzICovCiBzdGF0aWMgaW50CXNlbGZwaXBlX293bmVyX3BpZCA9IDA7CisjZW5kaWYK KworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCitzdGF0aWMgSEFORExFIExvY2FsSW50ZXJydXB0 V2FrZXVwRXZlbnQ7CisjZW5kaWYKIAogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVz ICovCi1zdGF0aWMgdm9pZCBsYXRjaF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CisK KyNpZmRlZiBXQUlUX1VTRV9TRUxGX1BJUEUKK3N0YXRpYyB2b2lkIGludGVycnVwdF9zaWd1 cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgdm9pZCBzZW5kU2VsZlBpcGVCeXRl KHZvaWQpOwogI2VuZGlmCiAKQEAgLTIzNSw3ICsyNDMsNyBAQCBSZXNvdXJjZU93bmVyRm9y Z2V0V2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgb3duZXIsIFdhaXRFdmVudFNldCAqc2V0 KQogICogSW5pdGlhbGl6ZSB0aGUgcHJvY2Vzcy1sb2NhbCB3YWl0IGV2ZW50IGluZnJhc3Ry dWN0dXJlLgogICoKICAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25jZSBkdXJpbmcgc3RhcnR1 cCBvZiBhbnkgcHJvY2VzcyB0aGF0IGNhbiB3YWl0IG9uCi0gKiBsYXRjaGVzLCBiZWZvcmUg aXQgaXNzdWVzIGFueSBJbml0TGF0Y2goKSBvciBPd25MYXRjaCgpIGNhbGxzLgorICogaW50 ZXJydXB0cy4KICAqLwogdm9pZAogSW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkK QEAgLTI4NSwxMiArMjkzLDEyIEBAIEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQp CiAKIAkvKgogCSAqIFNldCB1cCB0aGUgc2VsZi1waXBlIHRoYXQgYWxsb3dzIGEgc2lnbmFs IGhhbmRsZXIgdG8gd2FrZSB1cCB0aGUKLQkgKiBwb2xsKCkvZXBvbGxfd2FpdCgpIGluIFdh aXRMYXRjaC4gTWFrZSB0aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2luZywgc28KLQkgKiB0aGF0 IFNldExhdGNoIHdvbid0IGJsb2NrIGlmIHRoZSBldmVudCBoYXMgYWxyZWFkeSBiZWVuIHNl dCBtYW55IHRpbWVzCi0JICogZmlsbGluZyB0aGUga2VybmVsIGJ1ZmZlci4gTWFrZSB0aGUg cmVhZC1lbmQgbm9uLWJsb2NraW5nIHRvbywgc28gdGhhdAotCSAqIHdlIGNhbiBlYXNpbHkg Y2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRpbCBFQUdBSU4gb3IgRVdPVUxEQkxPQ0su Ci0JICogQWxzbywgbWFrZSBib3RoIEZEcyBjbG9zZS1vbi1leGVjLCBzaW5jZSB3ZSBzdXJl bHkgZG8gbm90IHdhbnQgYW55Ci0JICogY2hpbGQgcHJvY2Vzc2VzIG1lc3Npbmcgd2l0aCB0 aGVtLgorCSAqIHBvbGwoKS9lcG9sbF93YWl0KCkgaW4gV2FpdEludGVycnVwdC4gTWFrZSB0 aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2luZywKKwkgKiBzbyB0aGF0IFNlbmRJbnRlcnJ1cHQg d29uJ3QgYmxvY2sgaWYgdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gc2V0CisJICogbWFu eSB0aW1lcyBmaWxsaW5nIHRoZSBrZXJuZWwgYnVmZmVyLiBNYWtlIHRoZSByZWFkLWVuZCBu b24tYmxvY2tpbmcKKwkgKiB0b28sIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBjbGVhciB0aGUg cGlwZSBieSByZWFkaW5nIHVudGlsIEVBR0FJTiBvcgorCSAqIEVXT1VMREJMT0NLLiBBbHNv LCBtYWtlIGJvdGggRkRzIGNsb3NlLW9uLWV4ZWMsIHNpbmNlIHdlIHN1cmVseSBkbyBub3QK KwkgKiB3YW50IGFueSBjaGlsZCBwcm9jZXNzZXMgbWVzc2luZyB3aXRoIHRoZW0uCiAJICov CiAJaWYgKHBpcGUocGlwZWZkKSA8IDApCiAJCWVsb2coRkFUQUwsICJwaXBlKCkgZmFpbGVk OiAlbSIpOwpAQCAtMzExLDcgKzMxOSw3IEBAIEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0 KHZvaWQpCiAJUmVzZXJ2ZUV4dGVybmFsRkQoKTsKIAlSZXNlcnZlRXh0ZXJuYWxGRCgpOwog Ci0JcHFzaWduYWwoU0lHVVJHLCBsYXRjaF9zaWd1cmdfaGFuZGxlcik7CisJcHFzaWduYWwo U0lHVVJHLCBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIpOwogI2VuZGlmCiAKICNpZmRlZiBX QUlUX1VTRV9TSUdOQUxGRApAQCAtMzQ5LDYgKzM1NywxMiBAQCBJbml0aWFsaXplV2FpdEV2 ZW50U3VwcG9ydCh2b2lkKQogCS8qIElnbm9yZSBTSUdVUkcsIGJlY2F1c2Ugd2UnbGwgcmVj ZWl2ZSBpdCB2aWEga3F1ZXVlLiAqLwogCXBxc2lnbmFsKFNJR1VSRywgU0lHX0lHTik7CiAj ZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCisJTG9jYWxJbnRlcnJ1cHRXYWtldXBF dmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKwlpZiAoTG9j YWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiQ3JlYXRl RXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKKyNlbmRp ZgogfQogCiAvKgpAQCAtNDEyLDcgKzQyNiw4IEBAIENyZWF0ZVdhaXRFdmVudFNldChSZXNv dXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cykKIAlkYXRhICs9IE1BWEFMSUdOKHNp emVvZihIQU5ETEUpICogbmV2ZW50cyk7CiAjZW5kaWYKIAotCXNldC0+bGF0Y2ggPSBOVUxM OworCXNldC0+aW50ZXJydXB0X21hc2sgPSAwOworCXNldC0+aW50ZXJydXB0X3BvcyA9IC0x OwogCXNldC0+bmV2ZW50c19zcGFjZSA9IG5ldmVudHM7CiAJc2V0LT5leGl0X29uX3Bvc3Rt YXN0ZXJfZGVhdGggPSBmYWxzZTsKIApAQCAtNDk2LDkgKzUxMSw5IEBAIEZyZWVXYWl0RXZl bnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiAJCSBjdXJfZXZlbnQgPCAoc2V0LT5ldmVudHMg KyBzZXQtPm5ldmVudHMpOwogCQkgY3VyX2V2ZW50KyspCiAJewotCQlpZiAoY3VyX2V2ZW50 LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdM X0lOVEVSUlVQVCkKIAkJewotCQkJLyogdXNlcyB0aGUgbGF0Y2gncyBIQU5ETEUgKi8KKwkJ CS8qIHVzZXMgdGhlIHByb2Nlc3MncyB3YWtldXAgSEFORExFICovCiAJCX0KIAkJZWxzZSBp ZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCQl7CkBAIC01 MzUsNyArNTUwLDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQg KnNldCkKIAogLyogLS0tCiAgKiBBZGQgYW4gZXZlbnQgdG8gdGhlIHNldC4gUG9zc2libGUg ZXZlbnRzIGFyZToKLSAqIC0gV0xfTEFUQ0hfU0VUOiBXYWl0IGZvciB0aGUgbGF0Y2ggdG8g YmUgc2V0CisgKiAtIFdMX0lOVEVSUlVQVDogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBi ZSByYWlzZWQKICAqIC0gV0xfUE9TVE1BU1RFUl9ERUFUSDogV2FpdCBmb3IgcG9zdG1hc3Rl ciB0byBkaWUKICAqIC0gV0xfU09DS0VUX1JFQURBQkxFOiBXYWl0IGZvciBzb2NrZXQgdG8g YmVjb21lIHJlYWRhYmxlLAogICoJIGNhbiBiZSBjb21iaW5lZCBpbiBvbmUgZXZlbnQgd2l0 aCBvdGhlciBXTF9TT0NLRVRfKiBldmVudHMKQEAgLTU1MywxMCArNTY4LDYgQEAgRnJlZVdh aXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAqIFJldHVybnMgdGhl IG9mZnNldCBpbiBXYWl0RXZlbnRTZXQtPmV2ZW50cyAoc3RhcnRpbmcgZnJvbSAwKSwgd2hp Y2ggY2FuIGJlCiAgKiB1c2VkIHRvIG1vZGlmeSBwcmV2aW91c2x5IGFkZGVkIHdhaXQgZXZl bnRzIHVzaW5nIE1vZGlmeVdhaXRFdmVudCgpLgogICoKLSAqIEluIHRoZSBXTF9MQVRDSF9T RVQgY2FzZSB0aGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNz LAotICogaS5lLiBpdCBtdXN0IGJlIGEgcHJvY2Vzcy1sb2NhbCBsYXRjaCBpbml0aWFsaXpl ZCB3aXRoIEluaXRMYXRjaCwgb3IgYQotICogc2hhcmVkIGxhdGNoIGFzc29jaWF0ZWQgd2l0 aCB0aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2guCi0gKgogICogSW4g dGhlIFdMX1NPQ0tFVF9SRUFEQUJMRS9XUklURUFCTEUvQ09OTkVDVEVEL0FDQ0VQVCBjYXNl cywgRU9GIGFuZCBlcnJvcgogICogY29uZGl0aW9ucyBjYXVzZSB0aGUgc29ja2V0IHRvIGJl IHJlcG9ydGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxlL2Nvbm5lY3RlZCwKICAqIHNvIHRoYXQg dGhlIGNhbGxlciBjYW4gZGVhbCB3aXRoIHRoZSBjb25kaXRpb24uCkBAIC01NjYsNyArNTc3 LDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAq IGV2ZW50cy4KICAqLwogaW50Ci1BZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNl dCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKK0FkZFdhaXRF dmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBm ZCwgSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLAogCQkJCSAgdm9pZCAqdXNlcl9kYXRh KQogewogCVdhaXRFdmVudCAgKmV2ZW50OwpAQCAtNTgwLDE5ICs1OTEsMTYgQEAgQWRkV2Fp dEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBnc29ja2V0 IGZkLCBMYXRjaCAqbGF0Y2gsCiAJCXNldC0+ZXhpdF9vbl9wb3N0bWFzdGVyX2RlYXRoID0g dHJ1ZTsKIAl9CiAKLQlpZiAobGF0Y2gpCi0JewotCQlpZiAobGF0Y2gtPm93bmVyX3BpZCAh PSBNeVByb2NQaWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBsYXRjaCBv d25lZCBieSBhbm90aGVyIHByb2Nlc3MiKTsKLQkJaWYgKHNldC0+bGF0Y2gpCi0JCQllbG9n KEVSUk9SLCAiY2Fubm90IHdhaXQgb24gbW9yZSB0aGFuIG9uZSBsYXRjaCIpOwotCQlpZiAo KGV2ZW50cyAmIFdMX0xBVENIX1NFVCkgIT0gV0xfTEFUQ0hfU0VUKQotCQkJZWxvZyhFUlJP UiwgImxhdGNoIGV2ZW50cyBvbmx5IHN1cHBvcnQgYmVpbmcgc2V0Iik7Ci0JfQotCWVsc2UK KwkvKgorCSAqIEl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHRvIHdhaXQgZm9yIFdMX0lO VEVSUlVQVCB3aXRoIGVtcHR5CisJICogaW50ZXJydXB0TWFzaywgYnV0IHdlIGFsbG93IGl0 IHNvIHRoYXQgeW91IGNhbiB1c2UgTW9kaWZ5RXZlbnQgdG8gc2V0CisJICogdGhlIGludGVy cnVwdE1hc2sgbGF0ZXIuIE5vbi16ZXJvIGludGVycnVwdE1hc2sgZG9lc24ndCBtYWtlIHNl bnNlCisJICogd2l0aG91dCBXTF9JTlRFUlJVUFQsIGhvd2V2ZXIuCisJICovCisJaWYgKGlu dGVycnVwdE1hc2sgIT0gMCkKIAl7Ci0JCWlmIChldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0J CQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gbGF0Y2ggd2l0aG91dCBhIHNwZWNpZmll ZCBsYXRjaCIpOworCQlpZiAoKGV2ZW50cyAmIFdMX0lOVEVSUlVQVCkgIT0gV0xfSU5URVJS VVBUKQorCQkJZWxvZyhFUlJPUiwgImludGVycnVwdGVkIGV2ZW50cyBvbmx5IHN1cHBvcnQg YmVpbmcgc2V0Iik7CiAJfQogCiAJLyogd2FpdGluZyBmb3Igc29ja2V0IHJlYWRpbmVzcyB3 aXRob3V0IGEgc29ja2V0IGluZGljYXRlcyBhIGJ1ZyAqLwpAQCAtNjA4LDEwICs2MTYsMTAg QEAgQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMs IHBnc29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiAJZXZlbnQtPnJlc2V0ID0gZmFsc2U7CiAj ZW5kaWYKIAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudHMgPT0g V0xfSU5URVJSVVBUKQogCXsKLQkJc2V0LT5sYXRjaCA9IGxhdGNoOwotCQlzZXQtPmxhdGNo X3BvcyA9IGV2ZW50LT5wb3M7CisJCXNldC0+aW50ZXJydXB0X21hc2sgPSBpbnRlcnJ1cHRN YXNrOworCQlzZXQtPmludGVycnVwdF9wb3MgPSBldmVudC0+cG9zOwogI2lmIGRlZmluZWQo V0FJVF9VU0VfU0VMRl9QSVBFKQogCQlldmVudC0+ZmQgPSBzZWxmcGlwZV9yZWFkZmQ7CiAj ZWxpZiBkZWZpbmVkKFdBSVRfVVNFX1NJR05BTEZEKQpAQCAtNjQ1LDE0ICs2NTMsMTQgQEAg QWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQsIHVpbnQzMiBldmVudHMsIHBn c29ja2V0IGZkLCBMYXRjaCAqbGF0Y2gsCiB9CiAKIC8qCi0gKiBDaGFuZ2UgdGhlIGV2ZW50 IG1hc2sgYW5kLCBpbiB0aGUgV0xfTEFUQ0hfU0VUIGNhc2UsIHRoZSBsYXRjaCBhc3NvY2lh dGVkCi0gKiB3aXRoIHRoZSBXYWl0RXZlbnQuICBUaGUgbGF0Y2ggbWF5IGJlIGNoYW5nZWQg dG8gTlVMTCB0byBkaXNhYmxlIHRoZSBsYXRjaAotICogdGVtcG9yYXJpbHksIGFuZCB0aGVu IHNldCBiYWNrIHRvIGEgbGF0Y2ggbGF0ZXIuCisgKiBDaGFuZ2UgdGhlIGV2ZW50IG1hc2sg YW5kLCBpbiB0aGUgV0xfSU5URVJSVVBUIGNhc2UsIHRoZSBpbnRlcnJ1cHQgbWFzaworICog YXNzb2NpYXRlZCB3aXRoIHRoZSBXYWl0RXZlbnQuICBUaGUgaW50ZXJydXB0IG1hc2sgbWF5 IGJlIGNoYW5nZWQgdG8gMCB0bworICogZGlzYWJsZSB0aGUgd2FrZXVwcyBvbiBpbnRlcnJ1 cHRzIHRlbXBvcmFyaWx5LCBhbmQgdGhlbiBzZXQgYmFjayBsYXRlci4KICAqCiAgKiAncG9z JyBpcyB0aGUgaWQgcmV0dXJuZWQgYnkgQWRkV2FpdEV2ZW50VG9TZXQuCiAgKi8KIHZvaWQK LU1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2 ZW50cywgTGF0Y2ggKmxhdGNoKQorTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0 LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2sp CiB7CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9LUVVFVUUp CkBAIC02ODIsNDAgKzY5MCwzNCBAQCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpz ZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIExhdGNoICpsYXRjaCkKIAl9CiAKIAkvKgot CSAqIElmIG5laXRoZXIgdGhlIGV2ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGxhdGNo IGNoYW5nZXMsIHJldHVybgotCSAqIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGlt aXphdGlvbiBmb3Igc29tZSBzb2NrZXRzLCB3aGVyZQorCSAqIElmIG5laXRoZXIgdGhlIGV2 ZW50IG1hc2sgbm9yIHRoZSBhc3NvY2lhdGVkIGludGVycnVwdCBtYXNrIGNoYW5nZXMsCisJ ICogcmV0dXJuIGVhcmx5LiBUaGF0J3MgYW4gaW1wb3J0YW50IG9wdGltaXphdGlvbiBmb3Ig c29tZSBzb2NrZXRzLCB3aGVyZQogCSAqIE1vZGlmeVdhaXRFdmVudCBpcyBmcmVxdWVudGx5 IHVzZWQgdG8gc3dpdGNoIGZyb20gd2FpdGluZyBmb3IgcmVhZHMgdG8KIAkgKiB3YWl0aW5n IG9uIHdyaXRlcy4KIAkgKi8KIAlpZiAoZXZlbnRzID09IGV2ZW50LT5ldmVudHMgJiYKLQkJ KCEoZXZlbnQtPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkgfHwgc2V0LT5sYXRjaCA9PSBsYXRj aCkpCisJCSghKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQpIHx8IHNldC0+aW50ZXJy dXB0X21hc2sgPT0gaW50ZXJydXB0TWFzaykpCiAJCXJldHVybjsKIAotCWlmIChldmVudC0+ ZXZlbnRzICYgV0xfTEFUQ0hfU0VUICYmIGV2ZW50cyAhPSBldmVudC0+ZXZlbnRzKQotCQll bG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBsYXRjaCBldmVudCIpOworCWlmIChldmVudC0+ ZXZlbnRzICYgV0xfSU5URVJSVVBUICYmIGV2ZW50cyAhPSBldmVudC0+ZXZlbnRzKQorCQll bG9nKEVSUk9SLCAiY2Fubm90IG1vZGlmeSBpbnRlcnJ1cHRzIGV2ZW50Iik7CiAKIAkvKiBG SVhNRTogdmFsaWRhdGUgZXZlbnQgbWFzayAqLwogCWV2ZW50LT5ldmVudHMgPSBldmVudHM7 CiAKLQlpZiAoZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnRzID09IFdMX0lO VEVSUlVQVCkKIAl7Ci0JCWlmIChsYXRjaCAmJiBsYXRjaC0+b3duZXJfcGlkICE9IE15UHJv Y1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNoIG93bmVkIGJ5 IGFub3RoZXIgcHJvY2VzcyIpOwotCQlzZXQtPmxhdGNoID0gbGF0Y2g7CisJCXNldC0+aW50 ZXJydXB0X21hc2sgPSBpbnRlcnJ1cHRNYXNrOwogCiAJCS8qCi0JCSAqIE9uIFVuaXgsIHdl IGRvbid0IG5lZWQgdG8gbW9kaWZ5IHRoZSBrZXJuZWwgb2JqZWN0IGJlY2F1c2UgdGhlCi0J CSAqIHVuZGVybHlpbmcgcGlwZSAoaWYgdGhlcmUgaXMgb25lKSBpcyB0aGUgc2FtZSBmb3Ig YWxsIGxhdGNoZXMgc28gd2UKLQkJICogY2FuIHJldHVybiBpbW1lZGlhdGVseS4gIE9uIFdp bmRvd3MsIHdlIG5lZWQgdG8gdXBkYXRlIG91ciBhcnJheSBvZgotCQkgKiBoYW5kbGVzLCBi dXQgd2UgbGVhdmUgdGhlIG9sZCBvbmUgaW4gcGxhY2UgYW5kIHRvbGVyYXRlIHNwdXJpb3Vz Ci0JCSAqIHdha2V1cHMgaWYgdGhlIGxhdGNoIGlzIGRpc2FibGVkLgorCQkgKiBXZSBkb24n dCBib3RoZXIgdG8gYWRqdXN0IHRoZSBldmVudCB3aGVuIHRoZSBpbnRlcnJ1cHQgbWFzawor CQkgKiBjaGFuZ2VzLiAgSXQgbWVhbnMgdGhhdCB3aGVuIGludGVycnVwdCBtYXNrIGlzIHNl dCB0byAwLCB3ZSB3aWxsCisJCSAqIGxpc3RlbiBvbiB0aGUga2VybmVsIG9iamVjdCB1bm5l Y2Vzc2FyaWx5LCBhbmQgbWlnaHQgZ2V0IHNvbWUKKwkJICogc3B1cmlvdXMgd2FrZXVwcy4g VGhlIGludGVycnVwdCBzZW5kaW5nIGNvZGUgc2hvdWxkIG5vdCB3YWtlIHVzIHVwCisJCSAq IGlmIHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGJpdCBpcyBub3QgYXJtZWQsIHRob3Vn aCwgc28gaXQKKwkJICogc2hvdWxkIGJlIHJhcmUuCiAJCSAqLwotI2lmIGRlZmluZWQoV0FJ VF9VU0VfV0lOMzIpCi0JCWlmICghbGF0Y2gpCi0JCQlyZXR1cm47Ci0jZWxzZQogCQlyZXR1 cm47Ci0jZW5kaWYKIAl9CiAKICNpZiBkZWZpbmVkKFdBSVRfVVNFX0VQT0xMKQpAQCAtNzQ1 LDkgKzc0Nyw4IEBAIFdhaXRFdmVudEFkanVzdEVwb2xsKFdhaXRFdmVudFNldCAqc2V0LCBX YWl0RXZlbnQgKmV2ZW50LCBpbnQgYWN0aW9uKQogCWVwb2xsX2V2LmV2ZW50cyA9IEVQT0xM RVJSIHwgRVBPTExIVVA7CiAKIAkvKiBwcmVwYXJlIHBvbGxmZCBlbnRyeSBvbmNlICovCi0J aWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudC0+ZXZlbnRz ID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQtPmxhdGNoICE9IE5VTEwpOwog CQllcG9sbF9ldi5ldmVudHMgfD0gRVBPTExJTjsKIAl9CiAJZWxzZSBpZiAoZXZlbnQtPmV2 ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtNzk0LDkgKzc5NSw4IEBAIFdhaXRF dmVudEFkanVzdFBvbGwoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQpCiAJ cG9sbGZkLT5mZCA9IGV2ZW50LT5mZDsKIAogCS8qIHByZXBhcmUgcG9sbGZkIGVudHJ5IG9u Y2UgKi8KLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50 LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNzZXJ0KHNldC0+bGF0Y2ggIT0g TlVMTCk7CiAJCXBvbGxmZC0+ZXZlbnRzID0gUE9MTElOOwogCX0KIAllbHNlIGlmIChldmVu dC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCkBAIC04NTgsOSArODU4LDkgQEAg V2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkUG9zdG1hc3RlcihzdHJ1Y3Qga2V2ZW50ICprX2V2 LCBXYWl0RXZlbnQgKmV2ZW50KQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKLVdhaXRFdmVu dEFkanVzdEtxdWV1ZUFkZExhdGNoKHN0cnVjdCBrZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAq ZXZlbnQpCitXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRJbnRlcnJ1cHRXYWtldXAoc3RydWN0 IGtldmVudCAqa19ldiwgV2FpdEV2ZW50ICpldmVudCkKIHsKLQkvKiBGb3Igbm93IGxhdGNo IGNhbiBvbmx5IGJlIGFkZGVkLCBub3QgcmVtb3ZlZC4gKi8KKwkvKiBGb3Igbm93IGludGVy cnVwdCB3YWtldXAgY2FuIG9ubHkgYmUgYWRkZWQsIG5vdCByZW1vdmVkLiAqLwogCWtfZXYt PmlkZW50ID0gU0lHVVJHOwogCWtfZXYtPmZpbHRlciA9IEVWRklMVF9TSUdOQUw7CiAJa19l di0+ZmxhZ3MgPSBFVl9BREQ7CkBAIC04ODYsOCArODg2LDcgQEAgV2FpdEV2ZW50QWRqdXN0 S3F1ZXVlKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgb2xkX2V2 ZW50cykKIAlpZiAob2xkX2V2ZW50cyA9PSBldmVudC0+ZXZlbnRzKQogCQlyZXR1cm47CiAK LQlBc3NlcnQoZXZlbnQtPmV2ZW50cyAhPSBXTF9MQVRDSF9TRVQgfHwgc2V0LT5sYXRjaCAh PSBOVUxMKTsKLQlBc3NlcnQoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQgfHwKKwlB c3NlcnQoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgfHwKIAkJICAgZXZlbnQtPmV2 ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIIHx8CiAJCSAgIChldmVudC0+ZXZlbnRzICYg KFdMX1NPQ0tFVF9SRUFEQUJMRSB8CiAJCQkJCQkJIFdMX1NPQ0tFVF9XUklURUFCTEUgfApA QCAtOTAyLDEwICs5MDEsMTAgQEAgV2FpdEV2ZW50QWRqdXN0S3F1ZXVlKFdhaXRFdmVudFNl dCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50LCBpbnQgb2xkX2V2ZW50cykKIAkJICovCiAJCVdh aXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoJmtfZXZbY291bnQrK10sIGV2ZW50 KTsKIAl9Ci0JZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJZWxz ZSBpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQkvKiBXZSBkZXRl Y3QgbGF0Y2ggd2FrZXVwIHVzaW5nIGEgc2lnbmFsIGV2ZW50LiAqLwotCQlXYWl0RXZlbnRB ZGp1c3RLcXVldWVBZGRMYXRjaCgma19ldltjb3VudCsrXSwgZXZlbnQpOworCQkvKiBXZSBk ZXRlY3QgaW50ZXJydXB0IHdha2V1cCB1c2luZyBhIHNpZ25hbCBldmVudC4gKi8KKwkJV2Fp dEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVwKCZrX2V2W2NvdW50KytdLCBl dmVudCk7CiAJfQogCWVsc2UKIAl7CkBAIC05ODUsMTAgKzk4NCwxMyBAQCBXYWl0RXZlbnRB ZGp1c3RXaW4zMihXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCkKIHsKIAlI QU5ETEUJICAgKmhhbmRsZSA9ICZzZXQtPmhhbmRsZXNbZXZlbnQtPnBvcyArIDFdOwogCi0J aWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudC0+ZXZlbnRz ID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQtPmxhdGNoICE9IE5VTEwpOwot CQkqaGFuZGxlID0gc2V0LT5sYXRjaC0+ZXZlbnQ7CisJCS8qCisJCSAqIFdlIHJlZ2lzdGVy IHRoZSBldmVudCBldmVuIGlmIGludGVycnVwdF9tYXNrIGlzIHplcm8uIFdlIG1pZ2h0IGdl dAorCQkgKiBzb21lIHNwdXJpb3VzIHdha2V1cHMsIGJ1dCB0aGF0J3MgT0sKKwkJICovCisJ CSpoYW5kbGUgPSBNeVByb2MgPyBNeVByb2MtPmludGVycnVwdFdha2V1cEV2ZW50IDogTG9j YWxJbnRlcnJ1cHRXYWtldXBFdmVudDsKIAl9CiAJZWxzZSBpZiAoZXZlbnQtPmV2ZW50cyA9 PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQogCXsKQEAgLTEwNDQsNiArMTA0Niw3IEBAIFdhaXRF dmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAlpbnN0cl90 aW1lCXN0YXJ0X3RpbWU7CiAJaW5zdHJfdGltZQljdXJfdGltZTsKIAlsb25nCQljdXJfdGlt ZW91dCA9IC0xOworCWJvb2wJCXNsZWVwaW5nX2ZsYWdfYXJtZWQgPSBmYWxzZTsKIAogCUFz c2VydChuZXZlbnRzID4gMCk7CiAKQEAgLTEwNjUsMTAwICsxMDY4LDExNyBAQCBXYWl0RXZl bnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAjaWZuZGVmIFdJ TjMyCiAJd2FpdGluZyA9IHRydWU7CiAjZWxzZQotCS8qIEVuc3VyZSB0aGF0IHNpZ25hbHMg YXJlIHNlcnZpY2VkIGV2ZW4gaWYgbGF0Y2ggaXMgYWxyZWFkeSBzZXQgKi8KKwkvKiBFbnN1 cmUgdGhhdCBzaWduYWxzIGFyZSBzZXJ2aWNlZCBldmVuIGlmIGludGVycnVwdCBpcyBhbHJl YWR5IHBlbmRpbmcgKi8KIAlwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9zaWduYWxzKCk7CiAj ZW5kaWYKLQl3aGlsZSAocmV0dXJuZWRfZXZlbnRzID09IDApCisKKwkvKgorCSAqIEF0b21p Y2FsbHkgY2hlY2sgaWYgdGhlIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcgYW5kIGFk dmVydGlzZSB0aGF0CisJICogd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHNsZWVwaW5nLiBJZiBp dCB3YXMgYWxyZWFkeSBwZW5kaW5nLCBhdm9pZAorCSAqIGJsb2NraW5nIGFsdG9nZXRoZXIu CisJICoKKwkgKiBJZiBzb21lb25lIHNldHMgdGhlIGludGVycnVwdCBmbGFnIGJldHdlZW4g dGhpcyBhbmQgdGhlCisJICogV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgYmVsb3csIHRoZSBz ZXR0ZXIgd2lsbCB3cml0ZSBhIGJ5dGUgdG8gdGhlIHBpcGUKKwkgKiAob3Igc2lnbmFsIHVz IGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBkbyB0aGF0KSwgYW5kIHRoZSByZWFkaW5l c3MKKwkgKiByb3V0aW5lIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5LgorCSAqLworCWlmIChz ZXQtPmludGVycnVwdF9tYXNrICE9IDApCiAJewotCQlpbnQJCQlyYzsKKwkJSW50ZXJydXB0 TWFzayBvbGRfbWFzazsKKwkJYm9vbAkJYWxyZWFkeV9wZW5kaW5nID0gZmFsc2U7CiAKIAkJ LyoKLQkJICogQ2hlY2sgaWYgdGhlIGxhdGNoIGlzIHNldCBhbHJlYWR5IGZpcnN0LiAgSWYg c28sIHdlIGVpdGhlciBleGl0Ci0JCSAqIGltbWVkaWF0ZWx5IG9yIGFzayB0aGUga2VybmVs IGZvciBmdXJ0aGVyIGV2ZW50cyBhdmFpbGFibGUgcmlnaHQKLQkJICogbm93IHdpdGhvdXQg d2FpdGluZywgZGVwZW5kaW5nIG9uIGhvdyBtYW55IGV2ZW50cyB0aGUgY2FsbGVyIHdhbnRz LgotCQkgKgotCQkgKiBJZiBzb21lb25lIHNldHMgdGhlIGxhdGNoIGJldHdlZW4gdGhpcyBh bmQgdGhlCi0JCSAqIFdhaXRFdmVudFNldFdhaXRCbG9jaygpIGJlbG93LCB0aGUgc2V0dGVy IHdpbGwgd3JpdGUgYSBieXRlIHRvIHRoZQotCQkgKiBwaXBlIChvciBzaWduYWwgdXMgYW5k IHRoZSBzaWduYWwgaGFuZGxlciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhlCi0JCSAqIHJlYWRp bmVzcyByb3V0aW5lIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5LgotCQkgKgotCQkgKiBPbiB1 bml4LCBJZiB0aGVyZSdzIGEgcGVuZGluZyBieXRlIGluIHRoZSBzZWxmIHBpcGUsIHdlJ2xs IG5vdGljZQotCQkgKiB3aGVuZXZlciBibG9ja2luZy4gT25seSBjbGVhcmluZyB0aGUgcGlw ZSBpbiB0aGF0IGNhc2UgYXZvaWRzCi0JCSAqIGhhdmluZyB0byBkcmFpbiBpdCBldmVyeSB0 aW1lIFdhaXRMYXRjaE9yU29ja2V0KCkgaXMgdXNlZC4gU2hvdWxkCi0JCSAqIHRoZSBwaXBl LWJ1ZmZlciBmaWxsIHVwIHdlJ3JlIHN0aWxsIG9rLCBiZWNhdXNlIHRoZSBwaXBlIGlzIGlu Ci0JCSAqIG5vbmJsb2NraW5nIG1vZGUuIEl0J3MgdW5saWtlbHkgZm9yIHRoYXQgdG8gaGFw cGVuLCBiZWNhdXNlIHRoZQotCQkgKiBzZWxmIHBpcGUgaXNuJ3QgZmlsbGVkIHVubGVzcyB3 ZSdyZSBibG9ja2luZyAod2FpdGluZyA9IHRydWUpLCBvcgotCQkgKiBmcm9tIGluc2lkZSBh IHNpZ25hbCBoYW5kbGVyIGluIGxhdGNoX3NpZ3VyZ19oYW5kbGVyKCkuCi0JCSAqCi0JCSAq IE9uIHdpbmRvd3MsIHdlJ2xsIGFsc28gbm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2 ZW50IGZvciB0aGUKLQkJICogbGF0Y2ggd2hlbiBibG9ja2luZywgYnV0IHRoZXJlJ3Mgbm8g ZGFuZ2VyIG9mIGFueXRoaW5nIGZpbGxpbmcgdXAsCi0JCSAqIGFzICJTZXR0aW5nIGFuIGV2 ZW50IHRoYXQgaXMgYWxyZWFkeSBzZXQgaGFzIG5vIGVmZmVjdC4iLgotCQkgKgotCQkgKiBO b3RlOiB3ZSBhc3N1bWUgdGhhdCB0aGUga2VybmVsIGNhbGxzIGludm9sdmVkIGluIGxhdGNo IG1hbmFnZW1lbnQKLQkJICogd2lsbCBwcm92aWRlIGFkZXF1YXRlIHN5bmNocm9uaXphdGlv biBvbiBtYWNoaW5lcyB3aXRoIHdlYWsgbWVtb3J5Ci0JCSAqIG9yZGVyaW5nLCBzbyB0aGF0 IHdlIGNhbm5vdCBtaXNzIHNlZWluZyBpc19zZXQgaWYgYSBub3RpZmljYXRpb24KLQkJICog aGFzIGFscmVhZHkgYmVlbiBxdWV1ZWQuCisJCSAqIFBlcmZvcm0gYSBwbGFpbiBhdG9taWMg cmVhZCBmaXJzdCBhcyBhIGZhc3QgcGF0aCBmb3IgdGhlIGNhc2UgdGhhdAorCQkgKiBhbiBp bnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5kaW5nLgogCQkgKi8KLQkJaWYgKHNldC0+bGF0Y2gg JiYgIXNldC0+bGF0Y2gtPmlzX3NldCkKKwkJb2xkX21hc2sgPSBwZ19hdG9taWNfcmVhZF91 NjQoTXlQZW5kaW5nSW50ZXJydXB0cyk7CisJCWFscmVhZHlfcGVuZGluZyA9ICgob2xkX21h c2sgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKTsKKworCQlpZiAoIWFscmVhZHlfcGVu ZGluZykKIAkJewotCQkJLyogYWJvdXQgdG8gc2xlZXAgb24gYSBsYXRjaCAqLwotCQkJc2V0 LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSB0cnVlOwotCQkJcGdfbWVtb3J5X2JhcnJpZXIo KTsKLQkJCS8qIGFuZCByZWNoZWNrICovCisJCQkvKgorCQkJICogQXRvbWljYWxseSBzZXQg dGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgYml0IGFuZCByZS1jaGVjayBpZgorCQkJICog YW4gaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZy4gVGhlIGF0b21pYyBvcCBwcm92aWRl cworCQkJICogc3luY2hyb25pemF0aW9uIHNvIHRoYXQgaWYgYW4gaW50ZXJydXB0IGJpdCBp cyBzZXQgYWZ0ZXIgdGhpcywKKwkJCSAqIHRoZSBzZXR0ZXIgd2lsbCB3YWtlIHVzIHVwLgor CQkJICovCisJCQlvbGRfbWFzayA9IHBnX2F0b21pY19mZXRjaF9vcl91NjQoTXlQZW5kaW5n SW50ZXJydXB0cywgU0xFRVBJTkdfT05fSU5URVJSVVBUUyk7CisJCQlhbHJlYWR5X3BlbmRp bmcgPSAoKG9sZF9tYXNrICYgc2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCk7CisKKwkJCS8q IHJlbWVtYmVyIHRvIGNsZWFyIHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGZsYWcgbGF0 ZXIgKi8KKwkJCXNsZWVwaW5nX2ZsYWdfYXJtZWQgPSB0cnVlOwogCQl9CiAKLQkJaWYgKHNl dC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlpZiAoYWxyZWFkeV9wZW5kaW5n KQogCQl7CiAJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJ CW9jY3VycmVkX2V2ZW50cy0+cG9zID0gc2V0LT5sYXRjaF9wb3M7CisJCQlvY2N1cnJlZF9l dmVudHMtPnBvcyA9IHNldC0+aW50ZXJydXB0X3BvczsKIAkJCW9jY3VycmVkX2V2ZW50cy0+ dXNlcl9kYXRhID0KLQkJCQlzZXQtPmV2ZW50c1tzZXQtPmxhdGNoX3Bvc10udXNlcl9kYXRh OwotCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJc2V0 LT5ldmVudHNbc2V0LT5pbnRlcnJ1cHRfcG9zXS51c2VyX2RhdGE7CisJCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCW9jY3VycmVkX2V2ZW50cysrOwog CQkJcmV0dXJuZWRfZXZlbnRzKys7CiAKLQkJCS8qIGNvdWxkIGhhdmUgYmVlbiBzZXQgYWJv dmUgKi8KLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7Ci0KLQkJCWlm IChyZXR1cm5lZF9ldmVudHMgPT0gbmV2ZW50cykKLQkJCQlicmVhazsJCQkvKiBvdXRwdXQg YnVmZmVyIGZ1bGwgYWxyZWFkeSAqLwotCiAJCQkvKgogCQkJICogRXZlbiB0aG91Z2ggd2Ug YWxyZWFkeSBoYXZlIGFuIGV2ZW50LCB3ZSdsbCBwb2xsIGp1c3Qgb25jZSB3aXRoCi0JCQkg KiB6ZXJvIHRpbWVvdXQgdG8gc2VlIHdoYXQgbm9uLWxhdGNoIGV2ZW50cyB3ZSBjYW4gZml0 IGludG8gdGhlCi0JCQkgKiBvdXRwdXQgYnVmZmVyIGF0IHRoZSBzYW1lIHRpbWUuCisJCQkg KiB6ZXJvIHRpbWVvdXQgdG8gc2VlIHdoYXQgbm9uLWludGVycnVwdCBldmVudHMgd2UgY2Fu IGZpdCBpbnRvCisJCQkgKiB0aGUgb3V0cHV0IGJ1ZmZlciBhdCB0aGUgc2FtZSB0aW1lLgog CQkJICovCiAJCQljdXJfdGltZW91dCA9IDA7CiAJCQl0aW1lb3V0ID0gMDsKIAkJfQorCX0K IAorCWlmIChuZXZlbnRzID4gcmV0dXJuZWRfZXZlbnRzKQorCXsKIAkJLyoKIAkJICogV2Fp dCBmb3IgZXZlbnRzIHVzaW5nIHRoZSByZWFkaW5lc3MgcHJpbWl0aXZlIGNob3NlbiBhdCB0 aGUgdG9wIG9mCiAJCSAqIHRoaXMgZmlsZS4gSWYgLTEgaXMgcmV0dXJuZWQsIGEgdGltZW91 dCBoYXMgb2NjdXJyZWQsIGlmIDAgd2UgaGF2ZQogCQkgKiB0byByZXRyeSwgZXZlcnl0aGlu ZyA+PSAxIGlzIHRoZSBudW1iZXIgb2YgcmV0dXJuZWQgZXZlbnRzLgorCQkgKgorCQkgKiBP biB1bml4LCBJZiB0aGVyZSdzIGEgcGVuZGluZyBieXRlIGluIHRoZSBzZWxmIHBpcGUsIHdl J2xsIG5vdGljZQorCQkgKiB3aGVuZXZlciBibG9ja2luZy4gT25seSBjbGVhcmluZyB0aGUg cGlwZSBpbiB0aGF0IGNhc2UgYXZvaWRzCisJCSAqIGhhdmluZyB0byBkcmFpbiBpdCBldmVy eSB0aW1lIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGlzIHVzZWQuCisJCSAqIFNob3VsZCB0 aGUgcGlwZS1idWZmZXIgZmlsbCB1cCB3ZSdyZSBzdGlsbCBvaywgYmVjYXVzZSB0aGUgcGlw ZSBpcworCQkgKiBpbiBub25ibG9ja2luZyBtb2RlLiBJdCdzIHVubGlrZWx5IGZvciB0aGF0 IHRvIGhhcHBlbiwgYmVjYXVzZSB0aGUKKwkJICogc2VsZiBwaXBlIGlzbid0IGZpbGxlZCB1 bmxlc3Mgd2UncmUgYmxvY2tpbmcgKHdhaXRpbmcgPSB0cnVlKSwgb3IKKwkJICogZnJvbSBp bnNpZGUgYSBzaWduYWwgaGFuZGxlciBpbiBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIoKS4K KwkJICoKKwkJICogT24gd2luZG93cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhlcmUncyBh IHBlbmRpbmcgZXZlbnQgZm9yIHRoZQorCQkgKiBpbnRlcnJ1cHQgd2hlbiBibG9ja2luZywg YnV0IHRoZXJlJ3Mgbm8gZGFuZ2VyIG9mIGFueXRoaW5nIGZpbGxpbmcKKwkJICogdXAsIGFz ICJTZXR0aW5nIGFuIGV2ZW50IHRoYXQgaXMgYWxyZWFkeSBzZXQgaGFzIG5vIGVmZmVjdC4i LgogCQkgKi8KLQkJcmMgPSBXYWl0RXZlbnRTZXRXYWl0QmxvY2soc2V0LCBjdXJfdGltZW91 dCwKLQkJCQkJCQkJICAgb2NjdXJyZWRfZXZlbnRzLCBuZXZlbnRzIC0gcmV0dXJuZWRfZXZl bnRzKTsKKwkJZm9yICg7OykKKwkJeworCQkJaW50CQkJcmM7CiAKLQkJaWYgKHNldC0+bGF0 Y2ggJiYKLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQkJc2V0LT5sYXRjaC0+ bWF5YmVfc2xlZXBpbmcgPSBmYWxzZTsKKwkJCXJjID0gV2FpdEV2ZW50U2V0V2FpdEJsb2Nr KHNldCwgY3VyX3RpbWVvdXQsCisJCQkJCQkJCQkgICBvY2N1cnJlZF9ldmVudHMsIG5ldmVu dHMgLSByZXR1cm5lZF9ldmVudHMpOwogCi0JCWlmIChyYyA9PSAtMSkKLQkJCWJyZWFrOwkJ CQkvKiB0aW1lb3V0IG9jY3VycmVkICovCi0JCWVsc2UKLQkJCXJldHVybmVkX2V2ZW50cyAr PSByYzsKKwkJCWlmIChyYyA9PSAtMSkKKwkJCQlicmVhazsJCQkvKiB0aW1lb3V0IG9jY3Vy cmVkICovCisJCQllbHNlCisJCQkJcmV0dXJuZWRfZXZlbnRzICs9IHJjOwogCi0JCS8qIElm IHdlJ3JlIG5vdCBkb25lLCB1cGRhdGUgY3VyX3RpbWVvdXQgZm9yIG5leHQgaXRlcmF0aW9u ICovCi0JCWlmIChyZXR1cm5lZF9ldmVudHMgPT0gMCAmJiB0aW1lb3V0ID49IDApCi0JCXsK LQkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoY3VyX3RpbWUpOwotCQkJSU5TVFJfVElNRV9T VUJUUkFDVChjdXJfdGltZSwgc3RhcnRfdGltZSk7Ci0JCQljdXJfdGltZW91dCA9IHRpbWVv dXQgLSAobG9uZykgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoY3VyX3RpbWUpOwotCQkJaWYg KGN1cl90aW1lb3V0IDw9IDApCisJCQlpZiAocmV0dXJuZWRfZXZlbnRzID4gMCkKIAkJCQli cmVhazsKKworCQkJLyogSWYgd2UncmUgbm90IGRvbmUsIHVwZGF0ZSBjdXJfdGltZW91dCBm b3IgbmV4dCBpdGVyYXRpb24gKi8KKwkJCWlmICh0aW1lb3V0ID49IDApCisJCQl7CisJCQkJ SU5TVFJfVElNRV9TRVRfQ1VSUkVOVChjdXJfdGltZSk7CisJCQkJSU5TVFJfVElNRV9TVUJU UkFDVChjdXJfdGltZSwgc3RhcnRfdGltZSk7CisJCQkJY3VyX3RpbWVvdXQgPSB0aW1lb3V0 IC0gKGxvbmcpIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGN1cl90aW1lKTsKKwkJCQlpZiAo Y3VyX3RpbWVvdXQgPD0gMCkKKwkJCQkJYnJlYWs7CisJCQl9CiAJCX0KIAl9CisKKwkvKiBJ ZiB3ZSBzZXQgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgZmxhZywgcmVzZXQgaXQgYWdh aW4gKi8KKwlpZiAoc2xlZXBpbmdfZmxhZ19hcm1lZCkKKwkJcGdfYXRvbWljX2ZldGNoX2Fu ZF91NjQoTXlQZW5kaW5nSW50ZXJydXB0cywgfigodWludDMyKSBTTEVFUElOR19PTl9JTlRF UlJVUFRTKSk7CisKICNpZm5kZWYgV0lOMzIKIAl3YWl0aW5nID0gZmFsc2U7CiAjZW5kaWYK QEAgLTEyMjksMTYgKzEyNDksMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVu dFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9k YXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRz ID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJ CWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCWN1cl9lcG9s bF9ldmVudC0+ZXZlbnRzICYgKEVQT0xMSU4gfCBFUE9MTEVSUiB8IEVQT0xMSFVQKSkKIAkJ ewogCQkJLyogRHJhaW4gdGhlIHNpZ25hbGZkLiAqLwogCQkJZHJhaW4oKTsKIAotCQkJaWYg KHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgJiYgc2V0LT5sYXRj aC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAocGdfYXRv bWljX3JlYWRfdTY0KE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1cHRfbWFz aykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZBTElEX1NP Q0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NFVDsKKwkJ CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlvY2N1cnJl ZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTEzOTEsMTMg KzE0MTEsMTMgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBp bnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2 ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlp ZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJCWlmIChjdXJfZXZl bnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCWN1cl9rcXVldWVfZXZlbnQtPmZp bHRlciA9PSBFVkZJTFRfU0lHTkFMKQogCQl7Ci0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQt PmxhdGNoLT5tYXliZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAo c2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5k aW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJ CW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVk X2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJl dHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTUxMywxNiArMTUzMywxNiBAQCBXYWl0RXZl bnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJ b2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsKIAkJ b2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2ZW50 cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lO VEVSUlVQVCAmJgogCQkJKGN1cl9wb2xsZmQtPnJldmVudHMgJiAoUE9MTElOIHwgUE9MTEhV UCB8IFBPTExFUlIgfCBQT0xMTlZBTCkpKQogCQl7CiAJCQkvKiBUaGVyZSdzIGRhdGEgaW4g dGhlIHNlbGYtcGlwZSwgY2xlYXIgaXQuICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0 LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5p c19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNf cmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAh PSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VU OwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9j Y3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2 ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwogCQkJfQpAQCAtMTYyMSw2ICsxNjQx LDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1 cl90aW1lb3V0LAogCQkJY3VyX2V2ZW50LT5yZXNldCA9IGZhbHNlOwogCQl9CiAKKwkJLyoK KwkJICogV2UgbmVlZCB0byB1c2UgZGlmZmVyZW50IGV2ZW50IG9iamVjdCBkZXBlbmRpbmcg b24gd2hldGhlciAibG9jYWwiCisJCSAqIG9yICJzaGFyZWQgbWVtb3J5IiBpbnRlcnJ1cHRz IGFyZSBpbiB1c2UuIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8KKwkJICogYWRqdXN0IGFsbCBl eGlzdGluZyBXYWl0RXZlbnRTZXQgd2hlbiB5b3Ugc3dpdGNoIGZyb20gbG9jYWwgdG8KKwkJ ICogc2hhcmVkIG9yIGJhY2ssIHNvIHdlIHJlZnJlc2ggaXQgb24gZXZlcnkgY2FsbC4KKwkJ ICovCisJCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKKwkJCVdhaXRF dmVudEFkanVzdFdpbjMyKHNldCwgY3VyX2V2ZW50KTsKKwogCQkvKgogCQkgKiBXZSBhc3Nv Y2lhdGUgdGhlIHNvY2tldCB3aXRoIGEgbmV3IGV2ZW50IGhhbmRsZSBmb3IgZWFjaAogCQkg KiBXYWl0RXZlbnRTZXQuICBGRF9DTE9TRSBpcyBvbmx5IGdlbmVyYXRlZCBvbmNlIGlmIHRo ZSBvdGhlciBlbmQKQEAgLTE3MjYsMTkgKzE3NTUsMTUgQEAgV2FpdEV2ZW50U2V0V2FpdEJs b2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2 ZW50cy0+dXNlcl9kYXRhID0gY3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2 ZW50cy0+ZXZlbnRzID0gMDsKIAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFU Q0hfU0VUKQorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCQl7 Ci0JCQkvKgotCQkJICogV2UgY2Fubm90IHVzZSBzZXQtPmxhdGNoLT5ldmVudCB0byByZXNl dCB0aGUgZmlyZWQgZXZlbnQgaWYgd2UKLQkJCSAqIGFyZW4ndCB3YWl0aW5nIG9uIHRoaXMg bGF0Y2ggbm93LgotCQkJICovCiAJCQlpZiAoIVJlc2V0RXZlbnQoc2V0LT5oYW5kbGVzW2N1 cl9ldmVudC0+cG9zICsgMV0pKQogCQkJCWVsb2coRVJST1IsICJSZXNldEV2ZW50IGZhaWxl ZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7CiAKLQkJCWlmIChzZXQtPmxh dGNoICYmIHNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nICYmIHNldC0+bGF0Y2gtPmlzX3Nl dCkKKwkJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFk X3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDAp CiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0J CQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJy ZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRz Kys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0xNzgzLDcgKzE4MDgsNyBA QCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGlt ZW91dCwKIAogCQkJCS8qLS0tLS0tCiAJCQkJICogV2FpdEZvck11bHRpcGxlT2JqZWN0cyBk b2Vzbid0IGd1YXJhbnRlZSB0aGF0IGEgcmVhZCBldmVudAotCQkJCSAqIHdpbGwgYmUgcmV0 dXJuZWQgaWYgdGhlIGxhdGNoIGlzIHNldCBhdCB0aGUgc2FtZSB0aW1lLiAgRXZlbgorCQkJ CSAqIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGludGVycnVwdCBpcyBzZXQgYXQgdGhlIHNh bWUgdGltZS4gIEV2ZW4KIAkJCQkgKiBpZiBpdCBkaWQsIHRoZSBjYWxsZXIgbWlnaHQgZHJv cCB0aGF0IGV2ZW50IGV4cGVjdGluZyBpdCB0bwogCQkJCSAqIHJlb2NjdXIgb24gbmV4dCBj YWxsLiAgU28sIHdlIG11c3QgZm9yY2UgdGhlIGV2ZW50IHRvIGJlCiAJCQkJICogcmVzZXQg aWYgdGhpcyBXYWl0RXZlbnRTZXQgaXMgdXNlZCBhZ2FpbiBpbiBvcmRlciB0byBhdm9pZApA QCAtMTg4OSwxOCArMTkxNCwxNyBAQCBHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50cyhXYWl0 RXZlbnRTZXQgKnNldCkKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKIAogLyoK LSAqIFNldExhdGNoIHVzZXMgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2FpdGlu ZyBvbiB0aGUgbGF0Y2guCi0gKgotICogV2FrZSB1cCBXYWl0TGF0Y2gsIGlmIHdlJ3JlIHdh aXRpbmcuCisgKiBXYWtldXBPdGhlclByb2MgYW5kIFdha3VwTXlQcm9jIHVzZSBTSUdVUkcg dG8gd2FrZSB1cCB0aGUgcHJvY2VzcyB3YWl0aW5nCisgKiBmb3IgYW4gaW50ZXJydXB0CiAg Ki8KIHN0YXRpYyB2b2lkCi1sYXRjaF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUykKK2lu dGVycnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUykKIHsKIAlpZiAod2FpdGluZykK IAkJc2VuZFNlbGZQaXBlQnl0ZSgpOwogfQogCi0vKiBTZW5kIG9uZSBieXRlIHRvIHRoZSBz ZWxmLXBpcGUsIHRvIHdha2UgdXAgV2FpdExhdGNoICovCisvKiBTZW5kIG9uZSBieXRlIHRv IHRoZSBzZWxmLXBpcGUsIHRvIHdha2UgdXAgV2FpdEludGVycnVwdCAqLwogc3RhdGljIHZv aWQKIHNlbmRTZWxmUGlwZUJ5dGUodm9pZCkKIHsKQEAgLTE5MTcsNyArMTk0MSw3IEBAIHJl dHJ5OgogCiAJCS8qCiAJCSAqIElmIHRoZSBwaXBlIGlzIGZ1bGwsIHdlIGRvbid0IG5lZWQg dG8gcmV0cnksIHRoZSBkYXRhIHRoYXQncyB0aGVyZQotCQkgKiBhbHJlYWR5IGlzIGVub3Vn aCB0byB3YWtlIHVwIFdhaXRMYXRjaC4KKwkJICogYWxyZWFkeSBpcyBlbm91Z2ggdG8gd2Fr ZSB1cCBXYWl0SW50ZXJydXB0LgogCQkgKi8KIAkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBl cnJubyA9PSBFV09VTERCTE9DSykKIAkJCXJldHVybjsKQEAgLTIwMDQsNyArMjAyOCw2IEBA IFJlc093bmVyUmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpCiAJRnJlZVdhaXRFdmVu dFNldChzZXQpOwogfQogCi0jaWZuZGVmIFdJTjMyCiAvKgogICogV2FrZSB1cCBteSBwcm9j ZXNzIGlmIGl0J3MgY3VycmVudGx5IHNsZWVwaW5nIGluIFdhaXRFdmVudFNldFdhaXRCbG9j aygpCiAgKgpAQCAtMjAxNCwxMiArMjAzNywxMSBAQCBSZXNPd25lclJlbGVhc2VXYWl0RXZl bnRTZXQoRGF0dW0gcmVzKQogICoKICAqIE5COiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBm cm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBzaWduYWwgaGFuZGxlcnMgc28KICAqIHRocm93 aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2QgaWRlYS4KLSAqCi0gKiBPbiBXaW5kb3dzLCBM YXRjaCB1c2VzIFNldEV2ZW50IGRpcmVjdGx5IGFuZCB0aGlzIGlzIG5vdCB1c2VkLgogICov CiB2b2lkCiBXYWtldXBNeVByb2Modm9pZCkKIHsKKyNpZm5kZWYgV0lOMzIKICNpZiBkZWZp bmVkKFdBSVRfVVNFX1NFTEZfUElQRSkKIAlpZiAod2FpdGluZykKIAkJc2VuZFNlbGZQaXBl Qnl0ZSgpOwpAQCAtMjAyNywxMiArMjA0OSwyOCBAQCBXYWtldXBNeVByb2Modm9pZCkKIAlp ZiAod2FpdGluZykKIAkJa2lsbChNeVByb2NQaWQsIFNJR1VSRyk7CiAjZW5kaWYKKyNlbHNl CisJU2V0RXZlbnQoTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExv Y2FsSW50ZXJydXB0V2FrZXVwRXZlbnQpOworI2VuZGlmCiB9CiAKIC8qIFNpbWlsYXIgdG8g V2FrZXVwTXlQcm9jLCBidXQgd2FrZSB1cCBhbm90aGVyIHByb2Nlc3MgKi8KIHZvaWQKLVdh a2V1cE90aGVyUHJvYyhpbnQgcGlkKQorV2FrZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykK IHsKLQlraWxsKHBpZCwgU0lHVVJHKTsKLX0KKwkvKgorCSAqIE5vdGU6IFRoaXMgY2FuIGFs c28gYmUgY2FsbGVkIGZyb20gdGhlIHBvc3RtYXN0ZXIsIHNvIGJlIGNhcmVmdWwgdG8gbm90 CisJICogYXNzdW1lIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkgYXJlIHZh bGlkLiAgUmVhZGluZyB0aGUgJ3BpZCcKKwkgKiAob3IgZXZlbnQgaGFuZGxlIG9uIFdpbmRv d3MpIGlzIHNhZmUgZW5vdWdoLgorCSAqLworI2lmbmRlZiBXSU4zMgorCWtpbGwocHJvYy0+ cGlkLCBTSUdVUkcpOworI2Vsc2UKKwlTZXRFdmVudChwcm9jLT5pbnRlcnJ1cHRXYWtldXBF dmVudCk7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3ZSBzaWxlbnRseSBpZ25vcmUgYW55IGVy cm9ycy4gV2UgbWlnaHQgYmUgaW4gYSBzaWduYWwKKwkgKiBoYW5kbGVyIG9yIG90aGVyIGNy aXRpY2FsIHBhdGggd2hlcmUgaXQncyBub3Qgc2FmZSB0byBjYWxsIGVsb2coKS4KKwkgKi8K ICNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRp dGlvbl92YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92 YXJpYWJsZS5jCmluZGV4IDFmMTZiM2Y3NDc1Li4wYmE4MzZjZjlmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtMjAsNiAr MjAsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkv aW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgi CkBAIC0xNDksMjMgKzE1MCwyNCBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoQ29u ZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoc3RhcnRfdGltZSk7CiAJCUFzc2VydCh0aW1lb3V0ID49IDAgJiYgdGltZW91dCA8 PSBJTlRfTUFYKTsKIAkJY3VyX3RpbWVvdXQgPSB0aW1lb3V0OwotCQl3YWl0X2V2ZW50cyA9 IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCQl3 YWl0X2V2ZW50cyA9IFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRIOwogCX0KIAllbHNlCi0JCXdhaXRfZXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSDsKKwkJd2FpdF9ldmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9F WElUX09OX1BNX0RFQVRIOwogCiAJd2hpbGUgKHRydWUpCiAJewogCQlib29sCQlkb25lID0g ZmFsc2U7CiAKIAkJLyoKLQkJICogV2FpdCBmb3IgbGF0Y2ggdG8gYmUgc2V0LiAgKElmIHdl J3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVyCi0JCSAqIHJlYXNvbiwgdGhlIGNvZGUgYmVs b3cgd2lsbCBjb3BlIGFueXdheS4pCisJCSAqIFdhaXQgZm9yIGludGVycnVwdC4gIChJZiB3 ZSdyZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhlciByZWFzb24sIHRoZQorCQkgKiBjb2RlIGJl bG93IHdpbGwgY29wZSBhbnl3YXkuKQogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxh dGNoLCB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CisJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRf V0FJVF9XQUtFVVAsCisJCQkJCQkJIHdhaXRfZXZlbnRzLCBjdXJfdGltZW91dCwgd2FpdF9l dmVudF9pbmZvKTsKIAotCQkvKiBSZXNldCBsYXRjaCBiZWZvcmUgZXhhbWluaW5nIHRoZSBz dGF0ZSBvZiB0aGUgd2FpdCBsaXN0LiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkv KiBDbGVhciB0aGUgZmxhZyBiZWZvcmUgZXhhbWluaW5nIHRoZSBzdGF0ZSBvZiB0aGUgd2Fp dCBsaXN0LiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwog CiAJCS8qCiAJCSAqIElmIHRoaXMgcHJvY2VzcyBoYXMgYmVlbiB0YWtlbiBvdXQgb2YgdGhl IHdhaXQgbGlzdCwgdGhlbiB3ZSBrbm93CkBAIC0xNzgsOSArMTgwLDEwIEBAIENvbmRpdGlv blZhcmlhYmxlVGltZWRTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91 dCwKIAkJICogdGhlIHdhaXQgbGlzdCBvbmx5IHdoZW4gdGhlIGNhbGxlciBjYWxscwogCQkg KiBDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwLgogCQkgKgotCQkgKiBJZiB3ZSdyZSBz dGlsbCBpbiB0aGUgd2FpdCBsaXN0LCB0aGVuIHRoZSBsYXRjaCBtdXN0IGhhdmUgYmVlbiBz ZXQKLQkJICogYnkgc29tZXRoaW5nIG90aGVyIHRoYW4gQ29uZGl0aW9uVmFyaWFibGVTaWdu YWw7IHRob3VnaCB3ZSBkb24ndAotCQkgKiBndWFyYW50ZWUgbm90IHRvIHJldHVybiBzcHVy aW91c2x5LCB3ZSdsbCBhdm9pZCB0aGlzIG9idmlvdXMgY2FzZS4KKwkJICogSWYgd2UncmUg c3RpbGwgaW4gdGhlIHdhaXQgbGlzdCwgdGhlbiB0aGUgaW50ZXJydXB0IG11c3QgaGF2ZSBi ZWVuCisJCSAqIHNlbnQgYnkgc29tZXRoaW5nIG90aGVyIHRoYW4gQ29uZGl0aW9uVmFyaWFi bGVTaWduYWw7IHRob3VnaCB3ZQorCQkgKiBkb24ndCBndWFyYW50ZWUgbm90IHRvIHJldHVy biBzcHVyaW91c2x5LCB3ZSdsbCBhdm9pZCB0aGlzIG9idmlvdXMKKwkJICogY2FzZS4KIAkJ ICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmY3YtPm11dGV4KTsKIAkJaWYgKCFwcm9jbGlzdF9j b250YWlucygmY3YtPndha2V1cCwgTXlQcm9jTnVtYmVyLCBjdldhaXRMaW5rKSkKQEAgLTI2 OCw5ICsyNzEsOSBAQCBDb25kaXRpb25WYXJpYWJsZVNpZ25hbChDb25kaXRpb25WYXJpYWJs ZSAqY3YpCiAJCXByb2MgPSBwcm9jbGlzdF9wb3BfaGVhZF9ub2RlKCZjdi0+d2FrZXVwLCBj dldhaXRMaW5rKTsKIAlTcGluTG9ja1JlbGVhc2UoJmN2LT5tdXRleCk7CiAKLQkvKiBJZiB3 ZSBmb3VuZCBzb21lb25lIHNsZWVwaW5nLCBzZXQgdGhlaXIgbGF0Y2ggdG8gd2FrZSB0aGVt IHVwLiAqLworCS8qIElmIHdlIGZvdW5kIHNvbWVvbmUgc2xlZXBpbmcsIHdha2UgdGhlbSB1 cC4gKi8KIAlpZiAocHJvYyAhPSBOVUxMKQotCQlTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNo KTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZy b21QR1Byb2MocHJvYykpOwogfQogCiAvKgpAQCAtMjk5LDggKzMwMiw4IEBAIENvbmRpdGlv blZhcmlhYmxlQnJvYWRjYXN0KENvbmRpdGlvblZhcmlhYmxlICpjdikKIAkgKiBDViBhbmQg aW4gZG9pbmcgc28gcmVtb3ZlIG91ciBzZW50aW5lbCBlbnRyeS4gIEJ1dCB0aGF0J3MgZmlu ZTogc2luY2UKIAkgKiBDViB3YWl0ZXJzIGFyZSBhbHdheXMgYWRkZWQgYW5kIHJlbW92ZWQg aW4gb3JkZXIsIHRoYXQgbXVzdCBtZWFuIHRoYXQKIAkgKiBldmVyeSBwcmV2aW91cyB3YWl0 ZXIgaGFzIGJlZW4gd2FrZW5lZCwgc28gd2UncmUgZG9uZS4gIFdlJ2xsIGdldCBhbgotCSAq IGV4dHJhICJzZXQiIG9uIG91ciBsYXRjaCBmcm9tIHRoZSBzb21lb25lIGVsc2UncyBzaWdu YWwsIHdoaWNoIGlzCi0JICogc2xpZ2h0bHkgaW5lZmZpY2llbnQgYnV0IGhhcm1sZXNzLgor CSAqIGV4dHJhIGludGVycnVwdCBmcm9tIHRoZSBzb21lb25lIGVsc2UncyBzaWduYWwsIHdo aWNoIGlzIHNsaWdodGx5CisJICogaW5lZmZpY2llbnQgYnV0IGhhcm1sZXNzLgogCSAqCiAJ ICogV2UgY2FuJ3QgaW5zZXJ0IG91ciBjdldhaXRMaW5rIGFzIGEgc2VudGluZWwgaWYgaXQn cyBhbHJlYWR5IGluIHVzZSBpbgogCSAqIHNvbWUgb3RoZXIgcHJvY2xpc3QuICBXaGlsZSB0 aGF0J3Mgbm90IGV4cGVjdGVkIHRvIGJlIHRydWUgZm9yIHR5cGljYWwKQEAgLTMzMyw3ICsz MzYsNyBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAq Y3YpCiAKIAkvKiBBd2FrZW4gZmlyc3Qgd2FpdGVyLCBpZiB0aGVyZSB3YXMgb25lLiAqLwog CWlmIChwcm9jICE9IE5VTEwpCi0JCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJv Yyhwcm9jKSk7CiAKIAl3aGlsZSAoaGF2ZV9zZW50aW5lbCkKIAl7CkBAIC0zNTcsNiArMzYw LDYgQEAgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9uVmFyaWFibGUgKmN2 KQogCQlTcGluTG9ja1JlbGVhc2UoJmN2LT5tdXRleCk7CiAKIAkJaWYgKHByb2MgIT0gTlVM TCAmJiBwcm9jICE9IE15UHJvYykKLQkJCVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwor CQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21Q R1Byb2MocHJvYykpOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUu YwppbmRleCBmZTc1ZWFkMzUwMS4uZjk2MTA1NGE0YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIwNCw2ICsyMDQsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy90d29waGFzZV9ybWdyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3Bn X2xmaW5kLmgiCkBAIC0xNTg0LDcgKzE1ODUsMTEgQEAgR2V0U2FmZVNuYXBzaG90KFNuYXBz aG90IG9yaWdTbmFwc2hvdCkKIAkJCQkgU3hhY3RJc1JPVW5zYWZlKE15U2VyaWFsaXphYmxl WGFjdCkpKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9j ayk7Ci0JCQlQcm9jV2FpdEZvclNpZ25hbChXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1QpOwor CQkJV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dB SVRfV0FLRVVQLAorCQkJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRI LCAwLAorCQkJCQkJICBXQUlUX0VWRU5UX1NBRkVfU05BUFNIT1QpOworCQkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAJCQlMV0xvY2tBY3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9jaywgTFdfRVhD TFVTSVZFKTsKIAkJfQogCQlNeVNlcmlhbGl6YWJsZVhhY3QtPmZsYWdzICY9IH5TWEFDVF9G TEFHX0RFRkVSUkFCTEVfV0FJVElORzsKQEAgLTM2MTcsNyArMzYyMiw3IEBAIFJlbGVhc2VQ cmVkaWNhdGVMb2Nrcyhib29sIGlzQ29tbWl0LCBib29sIGlzUmVhZE9ubHlTYWZlKQogCQkJ ICovCiAJCQlpZiAoU3hhY3RJc0RlZmVycmFibGVXYWl0aW5nKHJvWGFjdCkgJiYKIAkJCQko U3hhY3RJc1JPVW5zYWZlKHJvWGFjdCkgfHwgU3hhY3RJc1JPU2FmZShyb1hhY3QpKSkKLQkJ CQlQcm9jU2VuZFNpZ25hbChyb1hhY3QtPnBncHJvY25vKTsKKwkJCQlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgcm9YYWN0LT5wZ3Byb2Nubyk7CiAJCX0KIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IGJhN2VhZWQxYTEzLi40NDgwOWZlYTIx MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9nd2FpdC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTIxNCw2ICsyMTUsOCBAQCBJ bml0UHJvY0dsb2JhbCh2b2lkKQogCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+ YXZMYXVuY2hlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCXBnX2F0b21pY19pbml0 X3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7 CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jLCBJ TlZBTElEX1BST0NfTlVNQkVSKTsKKwlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PndhbHJlY2VpdmVyUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJcGdfYXRvbWljX2lu aXRfdTMyKCZQcm9jR2xvYmFsLT5zdGFydHVwUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7 CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0 LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9i YWwtPmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIApAQCAtMzAxLDE0 ICszMDQsMjggQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAkJQXNzZXJ0KGZwUHRyIDw9IGZw RW5kUHRyKTsKIAogCQkvKgotCQkgKiBTZXQgdXAgcGVyLVBHUFJPQyBzZW1hcGhvcmUsIGxh dGNoLCBhbmQgZnBJbmZvTG9jay4gIFByZXBhcmVkIHhhY3QKLQkJICogZHVtbXkgUEdQUk9D cyBkb24ndCBuZWVkIHRoZXNlIHRob3VnaCAtIHRoZXkncmUgbmV2ZXIgYXNzb2NpYXRlZAot CQkgKiB3aXRoIGEgcmVhbCBwcm9jZXNzCisJCSAqIFNldCB1cCBwZXItUEdQUk9DIHNlbWFw aG9yZSwgaW50ZXJydXB0IHdha2V1cCBldmVudCAob24gV2luZG93cyksCisJCSAqIGFuZCBm cEluZm9Mb2NrLiAgUHJlcGFyZWQgeGFjdCBkdW1teSBQR1BST0NzIGRvbid0IG5lZWQgdGhl c2UKKwkJICogdGhvdWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lhdGVkIHdpdGggYSByZWFs IHByb2Nlc3MKIAkJICovCiAJCWlmIChpIDwgTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZ X1BST0NTKQogCQl7CisjaWZkZWYgV0lOMzIKKwkJCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7 CisKKwkJCS8qCisJCQkgKiBTZXQgdXAgc2VjdXJpdHkgYXR0cmlidXRlcyB0byBzcGVjaWZ5 IHRoYXQgdGhlIGV2ZW50cyBhcmUKKwkJCSAqIGluaGVyaXRlZC4KKwkJCSAqLworCQkJWmVy b01lbW9yeSgmc2EsIHNpemVvZihzYSkpOworCQkJc2Eubkxlbmd0aCA9IHNpemVvZihzYSk7 CisJCQlzYS5iSW5oZXJpdEhhbmRsZSA9IFRSVUU7CisKKwkJCXByb2MtPmludGVycnVwdFdh a2V1cEV2ZW50ID0gQ3JlYXRlRXZlbnQoJnNhLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisJCQlp ZiAocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9S LCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigp KTsKKyNlbmRpZgogCQkJcHJvYy0+c2VtID0gUEdTZW1hcGhvcmVDcmVhdGUoKTsKLQkJCUlu aXRTaGFyZWRMYXRjaCgmKHByb2MtPnByb2NMYXRjaCkpOwogCQkJTFdMb2NrSW5pdGlhbGl6 ZSgmKHByb2MtPmZwSW5mb0xvY2spLCBMV1RSQU5DSEVfTE9DS19GQVNUUEFUSCk7CiAJCX0K IApAQCAtNTE4LDEzICs1MzUsOCBAQCBJbml0UHJvY2Vzcyh2b2lkKQogCU15UHJvYy0+Y2xv Z0dyb3VwTWVtYmVyTHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJQXNzZXJ0KHBnX2F0b21p Y19yZWFkX3UzMigmTXlQcm9jLT5jbG9nR3JvdXBOZXh0KSA9PSBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAotCS8qCi0JICogQWNxdWlyZSBvd25lcnNoaXAgb2YgdGhlIFBHUFJPQydzIGxh dGNoLCBzbyB0aGF0IHdlIGNhbiB1c2UgV2FpdExhdGNoCi0JICogb24gaXQuICBUaGF0IGFs bG93cyB1cyB0byByZXBvaW50IHRoZSBwcm9jZXNzIGxhdGNoLCB3aGljaCBzbyBmYXIKLQkg KiBwb2ludHMgdG8gcHJvY2VzcyBsb2NhbCBvbmUsIHRvIHRoZSBzaGFyZWQgb25lLgotCSAq LwotCU93bkxhdGNoKCZNeVByb2MtPnByb2NMYXRjaCk7Ci0JU3dpdGNoVG9TaGFyZWRMYXRj aCgpOworCS8qIFN0YXJ0IGFjY2VwdGluZyBpbnRlcnJ1cHRzIGZyb20gb3RoZXIgcHJvY2Vz c2VzICovCisJU3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKCk7CiAKIAkvKiBub3cgdGhhdCB3 ZSBoYXZlIGEgcHJvYywgcmVwb3J0IHdhaXQgZXZlbnRzIHRvIHNoYXJlZCBtZW1vcnkgKi8K IAlwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgmTXlQcm9jLT53YWl0X2V2ZW50X2lu Zm8pOwpAQCAtNjg4LDEzICs3MDAsOCBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQog CX0KICNlbmRpZgogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hpcCBvZiB0aGUgUEdQUk9D J3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gKLQkgKiBvbiBpdC4gIFRo YXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0Y2gsIHdoaWNoIHNvIGZh cgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8gdGhlIHNoYXJlZCBvbmUu Ci0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsKLQlTd2l0Y2hUb1NoYXJl ZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVwdHMgZnJvbSBvdGhlciBw cm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMoKTsKIAogCS8qIG5vdyB0 aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9y eSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZl bnRfaW5mbyk7CkBAIC03MTcsNiArNzI0LDEwIEBAIEluaXRBdXhpbGlhcnlQcm9jZXNzKHZv aWQpCiAJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPndhbHdyaXRlclByb2Ms IE15UHJvY051bWJlcik7CiAJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIp CiAJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2Ms IE15UHJvY051bWJlcik7CisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfUkVDRUlWRVIp CisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPndhbHJlY2VpdmVyUHJvYywg TXlQcm9jTnVtYmVyKTsKKwlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCisJCXBn X2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPnN0YXJ0dXBQcm9jLCBNeVByb2NOdW1i ZXIpOwogCiAJLyoKIAkgKiBBcnJhbmdlIHRvIGNsZWFuIHVwIGF0IHByb2Nlc3MgZXhpdC4K QEAgLTk4NiwyMSArOTk3LDIwIEBAIFByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJ fQogCiAJLyoKLQkgKiBSZXNldCBNeUxhdGNoIHRvIHRoZSBwcm9jZXNzIGxvY2FsIG9uZS4g IFRoaXMgaXMgc28gdGhhdCBzaWduYWwKLQkgKiBoYW5kbGVycyBldCBhbCBjYW4gY29udGlu dWUgdXNpbmcgdGhlIGxhdGNoIGFmdGVyIHRoZSBzaGFyZWQgbGF0Y2gKLQkgKiBpc24ndCBv dXJzIGFueW1vcmUuCisJICogUmVzZXQgaW50ZXJydXB0IHZlY3RvciB0byB0aGUgcHJvY2Vz cyBsb2NhbCBvbmUuICBUaGlzIGlzIHNvIHRoYXQKKwkgKiBzaWduYWwgaGFuZGxlcnMgZXQg YWwgY2FuIGNvbnRpbnVlIHVzaW5nIGludGVycnVwdHMgYWZ0ZXIgdGhlIFBHUFJPQworCSAq IGVudHJ5IGlzbid0IG91cnMgYW55bW9yZS4KIAkgKgogCSAqIFNpbWlsYXJseSwgc3RvcCBy ZXBvcnRpbmcgd2FpdCBldmVudHMgdG8gTXlQcm9jLT53YWl0X2V2ZW50X2luZm8uCiAJICoK LQkgKiBBZnRlciB0aGF0IGNsZWFyIE15UHJvYyBhbmQgZGlzb3duIHRoZSBzaGFyZWQgbGF0 Y2guCisJICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2MuCiAJICovCi0JU3dpdGNoQmFja1Rv TG9jYWxMYXRjaCgpOworCVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKCk7CiAJcGdzdGF0X3Jl c2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgpOwogCiAJcHJvYyA9IE15UHJvYzsKIAlNeVByb2Mg PSBOVUxMOwogCU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JRGlzb3du TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CiAKIAkvKiBNYXJrIHRoZSBwcm9jIG5vIGxvbmdl ciBpbiB1c2UgKi8KIAlwcm9jLT5waWQgPSAwOwpAQCAtMTA1OSw3ICsxMDY5LDcgQEAgQXV4 aWxpYXJ5UHJvY0tpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlDb25kaXRpb25WYXJpYWJs ZUNhbmNlbFNsZWVwKCk7CiAKIAkvKiBsb29rIGF0IHRoZSBlcXVpdmFsZW50IFByb2NLaWxs KCkgY29kZSBmb3IgY29tbWVudHMgKi8KLQlTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKCk7CisJ U3dpdGNoVG9Mb2NhbEludGVycnVwdHMoKTsKIAlwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9z dG9yYWdlKCk7CiAKIAkvKiBJZiB0aGlzIHdhcyBvbmUgb2YgYXV4IHByb2Nlc3NlcyBhZHZl cnRpc2VkIGluIFByb2NHbG9iYWwsIGNsZWFyIGl0ICovCkBAIC0xMDc4LDExICsxMDg4LDIw IEBAIEF1eGlsaWFyeVByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJCUFzc2VydChw Z19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPmNoZWNrcG9pbnRlclByb2MpID09IE15 UHJvY051bWJlcik7CiAJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NHbG9iYWwtPmNoZWNr cG9pbnRlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCX0KKwlpZiAoTXlCYWNrZW5k VHlwZSA9PSBCX1dBTF9SRUNFSVZFUikKKwl7CisJCUFzc2VydChwZ19hdG9taWNfcmVhZF91 MzIoJlByb2NHbG9iYWwtPndhbHJlY2VpdmVyUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKKwkJ cGdfYXRvbWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+d2FscmVjZWl2ZXJQcm9jLCBJTlZB TElEX1BST0NfTlVNQkVSKTsKKwl9CisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9TVEFSVFVQ KQorCXsKKwkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+c3RhcnR1 cFByb2MpID09IE15UHJvY051bWJlcik7CisJCXBnX2F0b21pY193cml0ZV91MzIoJlByb2NH bG9iYWwtPnN0YXJ0dXBQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwl9CiAKIAlwcm9j ID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7CiAJTXlQcm9jTnVtYmVyID0gSU5WQUxJRF9Q Uk9DX05VTUJFUjsKLQlEaXNvd25MYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKIAogCVNwaW5M b2NrQWNxdWlyZSgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzTG9jayk7CiAKQEAgLTE0MTAsMTgg KzE0MjksMTggQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCX0KIAogCS8q Ci0JICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNlIGFuZCBX YWl0TGF0Y2gsIHRoZSBsYXRjaAotCSAqIHdpbGwgbm90IHdhaXQuIEJ1dCBhIHNldCBsYXRj aCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgdGhlIGxvY2sKLQkgKiBpcyBmcmVl IG5vdywgYXMgdGhlcmUgYXJlIG1hbnkgb3RoZXIgc291cmNlcyBmb3IgbGF0Y2ggc2V0cyB0 aGFuCi0JICogc29tZWJvZHkgcmVsZWFzaW5nIHRoZSBsb2NrLgorCSAqIElmIHNvbWVib2R5 IHdha2VzIHVzIGJldHdlZW4gTFdMb2NrUmVsZWFzZSBhbmQgV2FpdEludGVycnVwdCwKKwkg KiBXYWl0SW50ZXJydXB0IHdpbGwgbm90IHdhaXQuIEJ1dCBhbiBpbnRlcnJ1cHQgZG9lcyBu b3QgbmVjZXNzYXJpbHkgbWVhbgorCSAqIHRoYXQgdGhlIGxvY2sgaXMgZnJlZSBub3csIGFz IHRoZXJlIGFyZSBtYW55IG90aGVyIHNvdXJjZXMgZm9yIHRoZQorCSAqIGludGVycnVwdCB0 aGFuIHNvbWVib2R5IHJlbGVhc2luZyB0aGUgbG9jay4KIAkgKgotCSAqIFdlIHByb2Nlc3Mg aW50ZXJydXB0cyB3aGVuZXZlciB0aGUgbGF0Y2ggaGFzIGJlZW4gc2V0LCBzbyBjYW5jZWwv ZGllCi0JICogaW50ZXJydXB0cyBhcmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMg d2UgbXVzdCBub3QgbWluZCBsb3NpbmcKLQkgKiBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBp bnRlcnJ1cHQgaGVyZS4gIFdlIGRvbid0LCBiZWNhdXNlIHdlIGhhdmUgbm8KLQkgKiBzaGFy ZWQtc3RhdGUtY2hhbmdlIHdvcmsgdG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9j ayAodGhlCi0JICogZ3JhbnRvciBkaWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkg YWJvdXQgY2FuY2VsaW5nIHRoZSBkZWFkbG9jawotCSAqIHRpbWVvdXQgYW5kIHVwZGF0aW5n IHRoZSBsb2NhbGxvY2sgdGFibGUsIGJ1dCBpZiB3ZSBsb3NlIGNvbnRyb2wgdG8gYW4KLQkg KiBlcnJvciwgTG9ja0Vycm9yQ2xlYW51cCB3aWxsIGZpeCB0aGF0IHVwLgorCSAqIFdlIHBy b2Nlc3MgaW50ZXJydXB0cyB3aGVuZXZlciB0aGUgaW50ZXJydXB0IGhhcyBiZWVuIHNldCwg c28KKwkgKiBjYW5jZWwvZGllIGludGVycnVwdHMgYXJlIHByb2Nlc3NlZCBxdWlja2x5LiBU aGlzIG1lYW5zIHdlIG11c3Qgbm90CisJICogbWluZCBsb3NpbmcgY29udHJvbCB0byBhIGNh bmNlbC9kaWUgaW50ZXJydXB0IGhlcmUuICBXZSBkb24ndCwgYmVjYXVzZQorCSAqIHdlIGhh dmUgbm8gc2hhcmVkLXN0YXRlLWNoYW5nZSB3b3JrIHRvIGRvIGFmdGVyIGJlaW5nIGdyYW50 ZWQgdGhlIGxvY2sKKwkgKiAodGhlIGdyYW50b3IgZGlkIGl0IGFsbCkuICBXZSBkbyBoYXZl IHRvIHdvcnJ5IGFib3V0IGNhbmNlbGluZyB0aGUKKwkgKiBkZWFkbG9jayB0aW1lb3V0IGFu ZCB1cGRhdGluZyB0aGUgbG9jYWxsb2NrIHRhYmxlLCBidXQgaWYgd2UgbG9zZQorCSAqIGNv bnRyb2wgdG8gYW4gZXJyb3IsIExvY2tFcnJvckNsZWFudXAgd2lsbCBmaXggdGhhdCB1cC4K IAkgKi8KIAlkbwogCXsKQEAgLTE0NjcsOSArMTQ4NiwxMCBAQCBQcm9jU2xlZXAoTE9DQUxM T0NLICpsb2NhbGxvY2spCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJ CQkJIFBHX1dBSVRfTE9DSyB8IGxvY2FsbG9jay0+dGFnLmxvY2subG9ja3RhZ190eXBlKTsK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCQkg V0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIFBHX1dB SVRfTE9DSyB8IGxvY2FsbG9jay0+dGFnLmxvY2subG9ja3RhZ190eXBlKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJCQkvKiBjaGVjayBmb3IgZGVh ZGxvY2tzIGZpcnN0LCBhcyB0aGF0J3MgcHJvYmFibHkgbG9nLXdvcnRoeSAqLwogCQkJaWYg KGdvdF9kZWFkbG9ja190aW1lb3V0KQogCQkJewpAQCAtMTY3NSw4ICsxNjk1LDggQEAgUHJv Y1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCS8qCiAJICogRGlzYWJsZSB0aGUgdGlt ZXJzLCBpZiB0aGV5IGFyZSBzdGlsbCBydW5uaW5nLiAgQXMgaW4gTG9ja0Vycm9yQ2xlYW51 cCwKIAkgKiB3ZSBtdXN0IHByZXNlcnZlIHRoZSBMT0NLX1RJTUVPVVQgaW5kaWNhdG9yIGZs YWc6IGlmIGEgbG9jayB0aW1lb3V0IGhhcwotCSAqIGFscmVhZHkgY2F1c2VkIFF1ZXJ5Q2Fu Y2VsUGVuZGluZyB0byBiZWNvbWUgc2V0LCB3ZSB3YW50IHRoZSBjYW5jZWwgdG8KLQkgKiBi ZSByZXBvcnRlZCBhcyBhIGxvY2sgdGltZW91dCwgbm90IGEgdXNlciBjYW5jZWwuCisJICog YWxyZWFkeSByYWlzZWQgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCwgd2Ugd2FudCB0aGUgY2Fu Y2VsIHRvIGJlCisJICogcmVwb3J0ZWQgYXMgYSBsb2NrIHRpbWVvdXQsIG5vdCBhIHVzZXIg Y2FuY2VsLgogCSAqLwogCWlmICghSW5Ib3RTdGFuZGJ5KQogCXsKQEAgLTE3MTMsNyArMTcz Myw3IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAogCiAvKgotICogUHJv Y1dha2V1cCAtLSB3YWtlIHVwIGEgcHJvY2VzcyBieSBzZXR0aW5nIGl0cyBsYXRjaC4KKyAq IFByb2NXYWtldXAgLS0gd2FrZSB1cCBhIHByb2Nlc3MgYnkgc2VuZGluZyBpdCBhbiBpbnRl cnJ1cHQuCiAgKgogICoJIEFsc28gcmVtb3ZlIHRoZSBwcm9jZXNzIGZyb20gdGhlIHdhaXQg cXVldWUgYW5kIHNldCBpdHMgbGlua3MgaW52YWxpZC4KICAqCkBAIC0xNzQyLDcgKzE3NjIs NyBAQCBQcm9jV2FrZXVwKFBHUFJPQyAqcHJvYywgUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1 cykKIAlwZ19hdG9taWNfd3JpdGVfdTY0KCZNeVByb2MtPndhaXRTdGFydCwgMCk7CiAKIAkv KiBBbmQgYXdha2VuIGl0ICovCi0JU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Mo cHJvYykpOwogfQogCiAvKgpAQCAtMTg5OSwxNCArMTkxOSwxMiBAQCBDaGVja0RlYWRMb2Nr QWxlcnQodm9pZCkKIAlnb3RfZGVhZGxvY2tfdGltZW91dCA9IHRydWU7CiAKIAkvKgotCSAq IEhhdmUgdG8gc2V0IHRoZSBsYXRjaCBhZ2FpbiwgZXZlbiBpZiBoYW5kbGVfc2lnX2FsYXJt IGFscmVhZHkgZGlkLiBCYWNrCi0JICogdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNu J3QgeWV0IHNldC4uLiBJdCdzIHVubGlrZWx5IHRoYXQgdGhpcwotCSAqIGV2ZXIgd291bGQg YmUgYSBwcm9ibGVtLCBidXQgc2V0dGluZyBhIHNldCBsYXRjaCBhZ2FpbiBpcyBjaGVhcC4K LQkgKgotCSAqIE5vdGUgdGhhdCwgd2hlbiB0aGlzIGZ1bmN0aW9uIHJ1bnMgaW5zaWRlIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKCksCi0JICogdGhlIGhhbmRsZXIgZnVuY3Rpb24g c2V0cyB0aGUgbGF0Y2ggYWdhaW4gYWZ0ZXIgdGhlIGxhdGNoIGlzIHNldCBoZXJlLgorCSAq IEhhdmUgdG8gcmFpc2UgdGhlIGludGVycnVwdCBhZ2FpbiwgZXZlbiBpZiBoYW5kbGVfc2ln X2FsYXJtIGFscmVhZHkKKwkgKiBkaWQuIEJhY2sgdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91 dCB3YXNuJ3QgeWV0IHNldC4uLiBJdCdzIHVubGlrZWx5CisJICogdGhhdCB0aGlzIGV2ZXIg d291bGQgYmUgYSBwcm9ibGVtLCBidXQgcmFpc2luZyBhbiBpbnRlcnJ1cHQgYWdhaW4gaXMK KwkgKiBjaGVhcC4KIAkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCWVycm5vID0gc2F2ZV9lcnJubzsKIH0KIApA QCAtMTk4NSwzNCArMjAwMyw2IEBAIEdldExvY2tIb2xkZXJzQW5kV2FpdGVycyhMT0NBTExP Q0sgKmxvY2FsbG9jaywgU3RyaW5nSW5mbyBsb2NrX2hvbGRlcnNfc2J1ZiwKIAl9CiB9CiAK LS8qCi0gKiBQcm9jV2FpdEZvclNpZ25hbCAtIHdhaXQgZm9yIGEgc2lnbmFsIGZyb20gYW5v dGhlciBiYWNrZW5kLgotICoKLSAqIEFzIHRoaXMgdXNlcyB0aGUgZ2VuZXJpYyBwcm9jZXNz IGxhdGNoIHRoZSBjYWxsZXIgaGFzIHRvIGJlIHJvYnVzdCBhZ2FpbnN0Ci0gKiB1bnJlbGF0 ZWQgd2FrZXVwczogQWx3YXlzIGNoZWNrIHRoYXQgdGhlIGRlc2lyZWQgc3RhdGUgaGFzIG9j Y3VycmVkLCBhbmQKLSAqIHdhaXQgYWdhaW4gaWYgbm90LgotICovCi12b2lkCi1Qcm9jV2Fp dEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJ CQkJIHdhaXRfZXZlbnRfaW5mbyk7Ci0JUmVzZXRMYXRjaChNeUxhdGNoKTsKLQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwotfQotCi0vKgotICogUHJvY1NlbmRTaWduYWwgLSBzZXQgdGhl IGxhdGNoIG9mIGEgYmFja2VuZCBpZGVudGlmaWVkIGJ5IFByb2NOdW1iZXIKLSAqLwotdm9p ZAotUHJvY1NlbmRTaWduYWwoUHJvY051bWJlciBwcm9jTnVtYmVyKQotewotCWlmIChwcm9j TnVtYmVyIDwgMCB8fCBwcm9jTnVtYmVyID49IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudCkK LQkJZWxvZyhFUlJPUiwgInByb2NOdW1iZXIgb3V0IG9mIHJhbmdlIik7Ci0KLQlTZXRMYXRj aCgmR2V0UEdQcm9jQnlOdW1iZXIocHJvY051bWJlciktPnByb2NMYXRjaCk7Ci19Ci0KIC8q CiAgKiBCZWNvbWVMb2NrR3JvdXBMZWFkZXIgLSBkZXNpZ25hdGUgcHJvY2VzcyBhcyBsb2Nr IGdyb3VwIGxlYWRlcgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21n ci9zbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCmluZGV4IDM3OGMy YTAzZjM5Li5kZDhiMWZjMTBmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9z bWdyL3NtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCkBAIC05 OTQsNyArOTk0LDcgQEAgc21ncmZkKFNNZ3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZv cmtudW0sIEJsb2NrTnVtYmVyIGJsb2NrbnVtLCB1aW50MzIgKm9mZikKIAkgKiBUaGUgY2Fs bGVyIG5lZWRzIHRvIHByZXZlbnQgaW50ZXJydXB0cyBmcm9tIGJlaW5nIHByb2Nlc3NlZCwg b3RoZXJ3aXNlCiAJICogdGhlIEZEIGNvdWxkIGJlIGNsb3NlZCBwcmVtYXR1cmVseS4KIAkg Ki8KLQlBc3NlcnQoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKTsKKwlBc3NlcnQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9PSAwKTsKIAogCWZkID0gc21ncnN3W3JlbG4tPnNt Z3Jfd2hpY2hdLnNtZ3JfZmQocmVsbiwgZm9ya251bSwgYmxvY2tudW0sIG9mZik7CiAKQEAg LTEwNzMsNyArMTA3Myw3IEBAIHNtZ3JfYWlvX3Jlb3BlbihQZ0Fpb0hhbmRsZSAqaW9oKQog CSAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gcHJldmVudCBpbnRlcnJ1cHRzIGZyb20gYmVpbmcg cHJvY2Vzc2VkLCBvdGhlcndpc2UKIAkgKiB0aGUgRkQgY291bGQgYmUgY2xvc2VkIGFnYWlu IGJlZm9yZSB3ZSBnZXQgdG8gZXhlY3V0aW5nIHRoZSBJTy4KIAkgKi8KLQlBc3NlcnQoIUlO VEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKTsKKwlBc3NlcnQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayA9PSAwKTsKIAogCWlmIChzZC0+c21nci5pc190ZW1wKQogCQlwcm9jbm8gPSBw Z2Fpb19pb19nZXRfb3duZXIoaW9oKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCmluZGV4 IGIxYWNjYzY4Yjk1Li5mYmVkN2Q4MmU5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5j CkBAIC0yMiwxMiArMjIsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3RzLmgiCiAj aW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgi CisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdl L21kLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCkBAIC02MTEsOCArNjExLDggQEAgUmVnaXN0ZXJTeW5jUmVxdWVzdChjb25z dCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlwZSwKIAkJaWYgKHJldCB8fCAo IXJldCAmJiAhcmV0cnlPbkVycm9yKSkKIAkJCWJyZWFrOwogCi0JCVdhaXRMYXRjaChOVUxM LCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwgMTAsCi0JCQkJICBXQUlUX0VW RU5UX1JFR0lTVEVSX1NZTkNfUkVRVUVTVCk7CisJCVdhaXRJbnRlcnJ1cHQoMCwgV0xfRVhJ VF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsIDEwLAorCQkJCQkgIFdBSVRfRVZFTlRfUkVH SVNURVJfU1lOQ19SRVFVRVNUKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av YmFja2VuZF9zdGFydHVwLmMKaW5kZXggYzUxNzExNTkyN2MuLjk1OTU0NzZjOGUwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMKQEAgLTE5OCw2ICsxOTgsMTQgQEAgQmFj a2VuZEluaXRpYWxpemUoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaywgQ0FDX3N0YXRlIGNh YykKIAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFu ZGxlciAqLwogCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmU3RhcnR1cEJsb2NrU2lnLCBO VUxMKTsKIAorCS8qCisJICogRklYTUU6IGluc3RhbGwgSU5URVJSVVBUX1RFUk1JTkFURSBo YW5kbGVyIGF0IGxlYXN0PyBOb3QgcmVhbGx5IG5lZWRlZAorCSAqIGJlY2F1c2Ugbm8gb25l IGVsc2UgY2FuIHNlbmQgdXMgaW50ZXJydXB0cyB5ZXQsIGFuZCB3ZSBkb24ndCByYWlzZSB0 aGVtCisJICogd2l0aGluIHRoZSBiYWNrZW5kIHlldCBlaXRoZXIuIEJ1dCBpZiB3ZSBjaGFu Z2VkIHBvc3RtYXN0ZXIgdG8gc2VuZAorCSAqIElOVEVSUlVQVF9URVJNSU5BVEUgZGlyZWN0 bHksIGZvciBleGFtcGxlLCB3ZSdkIG5lZWQgdG8gaGFuZGxlIGl0CisJICogYWxyZWFkeS4K KwkgKi8KKwogCS8qCiAJICogR2V0IHRoZSByZW1vdGUgaG9zdCBuYW1lIGFuZCBwb3J0IGZv ciBsb2dnaW5nIGFuZCBzdGF0dXMgZGlzcGxheS4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCBiODhjZTQ0MGIxZC4uYmIwMjIyNzBjNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluX3N0YXRlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5n LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxf aGFuZGxlcnMuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibGlicHEvbGli cHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgpAQCAtNTQsNyArNTYsNiBAQAog I2luY2x1ZGUgInBnX2dldG9wdC5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmgiCkBAIC0xNzksOCArMTgwLDggQEAgc3RhdGljIGJvb2wgSXNUcmFuc2FjdGlvbkV4aXRT dG10KE5vZGUgKnBhcnNldHJlZSk7CiBzdGF0aWMgYm9vbCBJc1RyYW5zYWN0aW9uRXhpdFN0 bXRMaXN0KExpc3QgKnBzdG10cyk7CiBzdGF0aWMgYm9vbCBJc1RyYW5zYWN0aW9uU3RtdExp c3QoTGlzdCAqcHN0bXRzKTsKIHN0YXRpYyB2b2lkIGRyb3BfdW5uYW1lZF9zdG10KHZvaWQp Owotc3RhdGljIHZvaWQgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKHZvaWQp Owotc3RhdGljIHZvaWQgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUmVjb3Zl cnlDb25mbGljdFJlYXNvbiByZWFzb24pOworc3RhdGljIHZvaWQgUHJvY2Vzc1JlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQodm9pZCk7CitzdGF0aWMgdm9pZCBQcm9jZXNzUmVjb3ZlcnlD b25mbGljdChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbik7CiBzdGF0aWMgdm9pZCBy ZXBvcnRfcmVjb3ZlcnlfY29uZmxpY3QoUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24p Owogc3RhdGljIHZvaWQgbG9nX2Rpc2Nvbm5lY3Rpb25zKGludCBjb2RlLCBEYXR1bSBhcmcp Owogc3RhdGljIHZvaWQgZW5hYmxlX3N0YXRlbWVudF90aW1lb3V0KHZvaWQpOwpAQCAtMzM1 LDggKzMzNiw2IEBAIGludGVyYWN0aXZlX2dldGModm9pZCkKIAogCWMgPSBnZXRjKHN0ZGlu KTsKIAotCVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KGZhbHNlKTsKLQogCXJldHVybiBj OwogfQogCkBAIC0zNTMsMTEgKzM1MiwyMyBAQCBTb2NrZXRCYWNrZW5kKFN0cmluZ0luZm8g aW5CdWYpCiB7CiAJaW50CQkJcXR5cGU7CiAJaW50CQkJbWF4bXNnbGVuOworCWJvb2wJCXNh dmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQ7CisKKwkvKgorCSAqIERvbid0IGFsbG93IHF1ZXJ5 IGNhbmNlbCBpbnRlcnJ1cHRzIHdoaWxlIHJlYWRpbmcgaW5wdXQgZnJvbSB0aGUKKwkgKiBj bGllbnQsIGJlY2F1c2Ugd2UgbWlnaHQgbG9zZSBzeW5jIGluIHRoZSBGRS9CRSBwcm90b2Nv bC4gIChEaWUKKwkgKiBpbnRlcnJ1cHRzIGFyZSBPSywgYmVjYXVzZSB3ZSB3b24ndCByZWFk IGFueSBmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlCisJICogY2xpZW50IGluIHRoYXQgY2Fz ZS4pCisJICoKKwkgKiBTZWUgc2ltaWxhciBsb2dpYyBpbiBQcm9jZXNzUmVjb3ZlcnlDb25m bGljdEludGVycnVwdCgpLgorCSAqLworCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQgPSAo RW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkgIT0gMDsK KwlpZiAoc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCkKKwkJRGlzYWJsZUludGVycnVwdChJ TlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCS8qCiAJICogR2V0IG1lc3NhZ2UgdHlwZSBj b2RlIGZyb20gdGhlIGZyb250ZW5kLgogCSAqLwotCUhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMo KTsKIAlwcV9zdGFydG1zZ3JlYWQoKTsKIAlxdHlwZSA9IHBxX2dldGJ5dGUoKTsKIApAQCAt NDY0LDcgKzQ3NSw5IEBAIFNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBpbkJ1ZikKIAkgKi8K IAlpZiAocHFfZ2V0bWVzc2FnZShpbkJ1ZiwgbWF4bXNnbGVuKSkKIAkJcmV0dXJuIEVPRjsJ CQkJLyogc3VpdGFibGUgbWVzc2FnZSBhbHJlYWR5IGxvZ2dlZCAqLwotCVJFU1VNRV9DQU5D RUxfSU5URVJSVVBUUygpOworCisJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQpCisJ CUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCXJldHVybiBx dHlwZTsKIH0KQEAgLTQ4OCwxMDQgKzUwMSw2IEBAIFJlYWRDb21tYW5kKFN0cmluZ0luZm8g aW5CdWYpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotLyoKLSAqIFByb2Nlc3NDbGllbnRSZWFk SW50ZXJydXB0KCkgLSBQcm9jZXNzIGludGVycnVwdHMgc3BlY2lmaWMgdG8gY2xpZW50IHJl YWRzCi0gKgotICogVGhpcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgYW5kIGFmdGVyIGxvdy1s ZXZlbCByZWFkcy4KLSAqICdibG9ja2VkJyBpcyB0cnVlIGlmIG5vIGRhdGEgd2FzIGF2YWls YWJsZSB0byByZWFkIGFuZCB3ZSBwbGFuIHRvIHJldHJ5LAotICogZmFsc2UgaWYgYWJvdXQg dG8gcmVhZCBvciBkb25lIHJlYWRpbmcuCi0gKgotICogTXVzdCBwcmVzZXJ2ZSBlcnJubyEK LSAqLwotdm9pZAotUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQot ewotCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKLQotCWlmIChEb2luZ0NvbW1hbmRSZWFk KQotCXsKLQkJLyogQ2hlY2sgZm9yIGdlbmVyYWwgaW50ZXJydXB0cyB0aGF0IGFycml2ZWQg YmVmb3JlL3doaWxlIHJlYWRpbmcgKi8KLQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQot CQkvKiBQcm9jZXNzIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdHMsIGlmIGFueSAqLwotCQlp ZiAoY2F0Y2h1cEludGVycnVwdFBlbmRpbmcpCi0JCQlQcm9jZXNzQ2F0Y2h1cEludGVycnVw dCgpOwotCi0JCS8qIFByb2Nlc3Mgbm90aWZ5IGludGVycnVwdHMsIGlmIGFueSAqLwotCQlp ZiAobm90aWZ5SW50ZXJydXB0UGVuZGluZykKLQkJCVByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQo dHJ1ZSk7Ci0JfQotCWVsc2UgaWYgKFByb2NEaWVQZW5kaW5nKQotCXsKLQkJLyoKLQkJICog V2UncmUgZHlpbmcuICBJZiB0aGVyZSBpcyBubyBkYXRhIGF2YWlsYWJsZSB0byByZWFkLCB0 aGVuIGl0J3Mgc2FmZQotCQkgKiAoYW5kIHNhbmUpIHRvIGhhbmRsZSB0aGF0IG5vdy4gIElm IHdlIGhhdmVuJ3QgdHJpZWQgdG8gcmVhZCB5ZXQsCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJv Y2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRoYXQgaWYgdGhlcmUgaXMgbm8gZGF0YQotCQkgKiB0 aGVuIHdlJ2xsIGNvbWUgYmFjayBoZXJlIGFuZCBkaWUuICBJZiB3ZSdyZSBkb25lIHJlYWRp bmcsIGFsc28KLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgYXMg d2UgbWlnaHQndmUgdW5kZXNpcmFibHkKLQkJICogY2xlYXJlZCBpdCB3aGlsZSByZWFkaW5n LgotCQkgKi8KLQkJaWYgKGJsb2NrZWQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot CQllbHNlCi0JCQlTZXRMYXRjaChNeUxhdGNoKTsKLQl9Ci0KLQllcnJubyA9IHNhdmVfZXJy bm87Ci19Ci0KLS8qCi0gKiBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoKSAtIFByb2Nl c3MgaW50ZXJydXB0cyBzcGVjaWZpYyB0byBjbGllbnQgd3JpdGVzCi0gKgotICogVGhpcyBp cyBjYWxsZWQganVzdCBiZWZvcmUgYW5kIGFmdGVyIGxvdy1sZXZlbCB3cml0ZXMuCi0gKiAn YmxvY2tlZCcgaXMgdHJ1ZSBpZiBubyBkYXRhIGNvdWxkIGJlIHdyaXR0ZW4gYW5kIHdlIHBs YW4gdG8gcmV0cnksCi0gKiBmYWxzZSBpZiBhYm91dCB0byB3cml0ZSBvciBkb25lIHdyaXRp bmcuCi0gKgotICogTXVzdCBwcmVzZXJ2ZSBlcnJubyEKLSAqLwotdm9pZAotUHJvY2Vzc0Ns aWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKLXsKLQlpbnQJCQlzYXZlX2Vycm5v ID0gZXJybm87Ci0KLQlpZiAoUHJvY0RpZVBlbmRpbmcpCi0JewotCQkvKgotCQkgKiBXZSdy ZSBkeWluZy4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHdyaXRlLCB0aGVuIHdlIHNob3Vs ZCBoYW5kbGUKLQkJICogdGhhdCBpbW1lZGlhdGVseSwgZWxzZSBhIHN0dWNrIGNsaWVudCBj b3VsZCBpbmRlZmluaXRlbHkgZGVsYXkgb3VyCi0JCSAqIHJlc3BvbnNlIHRvIHRoZSBzaWdu YWwuICBJZiB3ZSBoYXZlbid0IHRyaWVkIHRvIHdyaXRlIHlldCwgbWFrZQotCQkgKiBzdXJl IHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgc28gdGhhdCBpZiB0aGUgd3JpdGUgd291bGQg YmxvY2sKLQkJICogdGhlbiB3ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2Un cmUgZG9uZSB3cml0aW5nLCBhbHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRj aCBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5Ci0JCSAqIGNsZWFyZWQgaXQg d2hpbGUgd3JpdGluZy4KLQkJICovCi0JCWlmIChibG9ja2VkKQotCQl7Ci0JCQkvKgotCQkJ ICogRG9uJ3QgbWVzcyB3aXRoIHdoZXJlVG9TZW5kT3V0cHV0IGlmIFByb2Nlc3NJbnRlcnJ1 cHRzIHdvdWxkbid0Ci0JCQkgKiBzZXJ2aWNlIFByb2NEaWVQZW5kaW5nLgotCQkJICovCi0J CQlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9 PSAwKQotCQkJewotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgd2FudCB0byBzZW5kIHRoZSBj bGllbnQgdGhlIGVycm9yIG1lc3NhZ2UsIGFzIGEpCi0JCQkJICogdGhhdCB3b3VsZCBwb3Nz aWJseSBibG9jayBhZ2FpbiwgYW5kIGIpIGl0IHdvdWxkIGxpa2VseQotCQkJCSAqIGxlYWQg dG8gbG9zcyBvZiBwcm90b2NvbCBzeW5jIGJlY2F1c2Ugd2UgbWF5IGhhdmUgYWxyZWFkeQot CQkJCSAqIHNlbnQgYSBwYXJ0aWFsIHByb3RvY29sIG1lc3NhZ2UuCi0JCQkJICovCi0JCQkJ aWYgKHdoZXJlVG9TZW5kT3V0cHV0ID09IERlc3RSZW1vdGUpCi0JCQkJCXdoZXJlVG9TZW5k T3V0cHV0ID0gRGVzdE5vbmU7Ci0KLQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQkJ fQotCQl9Ci0JCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOwotCX0KLQotCWVycm5vID0g c2F2ZV9lcnJubzsKLX0KLQogLyoKICAqIERvIHJhdyBwYXJzaW5nIChvbmx5KS4KICAqCkBA IC0yOTEwLDcgKzI4MjUsNyBAQCBkcm9wX3VubmFtZWRfc3RtdCh2b2lkKQogICogRWl0aGVy IHNvbWUgYmFja2VuZCBoYXMgYm91Z2h0IHRoZSBmYXJtLCBvciB3ZSd2ZSBiZWVuIHRvbGQg dG8gc2h1dCBkb3duCiAgKiAiaW1tZWRpYXRlbHkiOyBzbyB3ZSBuZWVkIHRvIHN0b3Agd2hh dCB3ZSdyZSBkb2luZyBhbmQgZXhpdC4KICAqLwotdm9pZAorc3RhdGljIHZvaWQKIHF1aWNr ZGllKFNJR05BTF9BUkdTKQogewogCXNpZ2FkZHNldCgmQmxvY2tTaWcsIFNJR1FVSVQpOwkv KiBwcmV2ZW50IG5lc3RlZCBjYWxscyAqLwpAQCAtMzAwNyw1MCArMjkyMiwyNiBAQCBxdWlj a2RpZShTSUdOQUxfQVJHUykKICAqIFNodXRkb3duIHNpZ25hbCBmcm9tIHBvc3RtYXN0ZXI6 IGFib3J0IHRyYW5zYWN0aW9uIGFuZCBleGl0CiAgKiBhdCBzb29uZXN0IGNvbnZlbmllbnQg dGltZQogICovCi12b2lkCitzdGF0aWMgdm9pZAogZGllKFNJR05BTF9BUkdTKQogewotCS8q IERvbid0IGpvZ2dsZSB0aGUgZWxib3cgb2YgcHJvY19leGl0ICovCi0JaWYgKCFwcm9jX2V4 aXRfaW5wcm9ncmVzcykKLQl7Ci0JCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCQlQcm9j RGllUGVuZGluZyA9IHRydWU7Ci0JfQotCiAJLyogZm9yIHRoZSBjdW11bGF0aXZlIHN0YXRz IHN5c3RlbSAqLwogCXBnU3RhdFNlc3Npb25FbmRDYXVzZSA9IERJU0NPTk5FQ1RfS0lMTEVE OwogCi0JLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBv biB0aGUgcHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIERvbid0 IGpvZ2dsZSB0aGUgZWxib3cgb2YgcHJvY19leGl0ICovCisJaWYgKHByb2NfZXhpdF9pbnBy b2dyZXNzKQorCQlyZXR1cm47CisKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlO QVRFKTsKIAogCS8qCiAJICogSWYgd2UncmUgaW4gc2luZ2xlIHVzZXIgbW9kZSwgd2Ugd2Fu dCB0byBxdWl0IGltbWVkaWF0ZWx5IC0gd2UgY2FuJ3QKLQkgKiByZWx5IG9uIGxhdGNoZXMg YXMgdGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4vc3Rkb3V0IGlzIGEgZmlsZS4KKwkg KiByZWx5IG9uIGludGVycnVwdHMgYXMgdGhleSB3b3VsZG4ndCB3b3JrIHdoZW4gc3RkaW4v c3Rkb3V0IGlzIGEgZmlsZS4KIAkgKiBSYXRoZXIgdWdseSwgYnV0IGl0J3MgdW5saWtlbHkg dG8gYmUgd29ydGh3aGlsZSB0byBpbnZlc3QgbXVjaCBtb3JlCiAJICogZWZmb3J0IGp1c3Qg Zm9yIHRoZSBiZW5lZml0IG9mIHNpbmdsZSB1c2VyIG1vZGUuCiAJICovCiAJaWYgKERvaW5n Q29tbWFuZFJlYWQgJiYgd2hlcmVUb1NlbmRPdXRwdXQgIT0gRGVzdFJlbW90ZSkKLQkJUHJv Y2Vzc0ludGVycnVwdHMoKTsKLX0KLQotLyoKLSAqIFF1ZXJ5LWNhbmNlbCBzaWduYWwgZnJv bSBwb3N0bWFzdGVyOiBhYm9ydCBjdXJyZW50IHRyYW5zYWN0aW9uCi0gKiBhdCBzb29uZXN0 IGNvbnZlbmllbnQgdGltZQotICovCi12b2lkCi1TdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKFNJ R05BTF9BUkdTKQotewotCS8qCi0JICogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBwcm9j X2V4aXQKLQkgKi8KLQlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQotCXsKLQkJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7Ci0JfQot Ci0JLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0 aGUgcHJvY2VzcyBsYXRjaCAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCQlQcm9jZXNzVGVy bWluYXRlSW50ZXJydXB0KCk7CiB9CiAKIC8qIHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGlu ZyBwb2ludCBleGNlcHRpb24gKi8KQEAgLTMwNjcsMjIgKzI5NTgsOTEgQEAgRmxvYXRFeGNl cHRpb25IYW5kbGVyKFNJR05BTF9BUkdTKQogfQogCiAvKgotICogVGVsbCB0aGUgbmV4dCBD SEVDS19GT1JfSU5URVJSVVBUUygpIHRvIHByb2Nlc3MgcmVjb3ZlcnkgY29uZmxpY3RzLiAg UnVucwotICogaW4gYSBTSUdVU1IxIGhhbmRsZXIuCisgKiBTZXQgdGhlICJzdGFuZGFyZCIg c2V0IG9mIGludGVycnVwdCBoYW5kbGVycywgdG8gaGFuZGxlIGNvbW1vbiBpbnRlcnJ1cHRz CisgKiB0aGF0IHNob3VsZCBiZSBoYW5kbGVkIGJ5IGFsbCBvciBtb3N0IGNoaWxkIHByb2Nl c3Nlcy4KKyAqCisgKiBUaGUgY2FsbGVyIG1heSBtb2RpZnkgdGhlIGRlZmF1bHRzIGFmdGVy IGNhbGxpbmcgdGhpcyB3aXRoIGZ1cnRoZXIKKyAqIFNldEludGVycnVwdEhhbmRsZXIoKSBv ciBFbmFibGUvRGlzYWJsZUludGVycnVwdCgpIGNhbGxzLgogICovCiB2b2lkCi1IYW5kbGVS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KHZvaWQpCitTZXRTdGFuZGFyZEludGVycnVwdEhh bmRsZXJzKHZvaWQpCiB7Ci0JaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQcm9jLT5wZW5k aW5nUmVjb3ZlcnlDb25mbGljdHMpICE9IDApCi0JCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OwotCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy ICovCisJLyogQWxsIHByb2Nlc3NlcyBzaG91bGQgcmVhY3QgdG8gYmFycmllcnMgYW5kIG1l bW9yeSBjb250ZXh0IGRlYnVnZ2luZyAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJS VVBUX0JBUlJJRVIsIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcik7CisJRW5hYmxlSW50ZXJy dXB0KElOVEVSUlVQVF9CQVJSSUVSKTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQ VF9MT0dfTUVNT1JZX0NPTlRFWFQsIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0 KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCk7CisK KwkvKgorCSAqIENhdGNodXAgaW50ZXJydXB0cyBtdXN0IGJlIGhhbmRsZWQgaW4gYW55dGhp bmcgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4KKwkgKiBzaGFyZWQgaW52YWxpZGF0aW9uCisJICov CisJLyogWFhYOiBkb25lIGluIHNpbnZhbGFkdC5jICovCisJLyogU2V0SW50ZXJydXB0SGFu ZGxlcihJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAsIFByb2Nlc3NDYXRjaHVwSW50ZXJydXB0 KTsgKi8KKworCS8qCisJICogRXZlcnkgcHJvY2VzcyBzaG91bGQgcmVhY3QgdG8gSU5URVJS VVBUX1RFUk1JTkFURS4gQnV0IG1hbnkgcHJvY2Vzc2VzCisJICogZGlzYWJsZSB0aGlzIGFu ZCBkbyB0aGVpciBvd24gY2hlY2tzIGF0IGFwcHJvcHJpYXRlIHRpbWVzLgorCSAqLworCVNl dEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RFUk1JTkFURSwgUHJvY2Vzc1Rlcm1pbmF0 ZUludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOwor CisJLyoKKwkgKiBCYWNrZW5kcyBhbmQgcHJvY2Vzc2VzIHRoYXQgY29ubmVjdCB0byBhIHBh cnRpY3VsYXIgZGF0YWJhc2UgY2FuCisJICogY29uZmxpY3Qgd2l0aCByZWNvdmVyeQorCSAq CisJICogeHh4OiBTZXQgdGhpcyBpbiBJbml0UG9zdGdyZXMgaWYgd2UncmUgY29ubmVjdGlu ZyB0byBhIHBhcnRpY3VsYXIKKwkgKiBkYXRhYmFzZT8KKwkgKi8KKwlTZXRJbnRlcnJ1cHRI YW5kbGVyKElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCwgUHJvY2Vzc1JlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1QpOworCisJLyoKKwkgKiBBbGwgcHJvY2Vzc2VzIHNob3VsZCBoYW5kbGUgY29u ZmlnIHJlbG9hZHMuIEJ1dCB1c3VhbGx5IG9ubHkgaW4KKwkgKiBzcGVjaWZpYyBzcG90cywg bGlrZSB3aGVuIG5vdCBpbiBhIHRyYW5zYWN0aW9uLCBzbyB0aGlzIGlzIGRpc2FibGVkIGJ5 CisJICogZGVmYXVsdC4KKwkgKgorCSAqIFRoaXMgcmVsaWVzIG9uIHRoZSBTSUdIVVAgc2ln bmFsIGhhbmRsZXIgdG8gcmFpc2UKKwkgKiBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCBvbiBT SUdIVVAuCisJICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ09ORklHX1JF TE9BRCwgUHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCk7CiB9CiAKIC8qCi0gKiBDaGVj ayBvbmUgaW5kaXZpZHVhbCBjb25mbGljdCByZWFzb24uCisgKiBDaGVjayBlYWNoIHBvc3Np YmxlIHJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbi4KICAqLwogc3RhdGljIHZvaWQKLVByb2Nl c3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVh c29uKQorUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQodm9pZCkKK3sKKwl1aW50 MzIJCXBlbmRpbmc7CisKKwkvKiBBcmUgYW55IHJlY292ZXJ5IGNvbmZsaWN0cyBwZW5kaW5n PyAqLworCXBlbmRpbmcgPSBwZ19hdG9taWNfcmVhZF9tZW1iYXJyaWVyX3UzMigmTXlQcm9j LT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMpOworCWlmIChwZW5kaW5nID09IDApCisJCXJl dHVybjsKKworCS8qCisJICogQ2hlY2sgdGhlIGNvbmZsaWN0cyBvbmUgYnkgb25lLCBjbGVh cmluZyBlYWNoIGZsYWcgb25seSBiZWZvcmUKKwkgKiBwcm9jZXNzaW5nIHRoZSBwYXJ0aWN1 bGFyIGNvbmZsaWN0LiAgVGhpcyBlbnN1cmVzIHRoYXQgaWYgbXVsdGlwbGUKKwkgKiBjb25m bGljdHMgYXJlIHBlbmRpbmcsIHdlIGNvbWUgYmFjayBoZXJlIHRvIHByb2Nlc3MgdGhlIHJl bWFpbmluZworCSAqIGNvbmZsaWN0cywgaWYgYW4gZXJyb3IgaXMgdGhyb3duIGR1cmluZyBw cm9jZXNzaW5nIG9uZSBvZiB0aGVtLgorCSAqLworCWZvciAoUmVjb3ZlcnlDb25mbGljdFJl YXNvbiByZWFzb24gPSAwOworCQkgcmVhc29uIDwgTlVNX1JFQ09WRVJZX0NPTkZMSUNUX1JF QVNPTlM7CisJCSByZWFzb24rKykKKwl7CisJCWlmICgocGVuZGluZyAmICgxIDw8IHJlYXNv bikpICE9IDApCisJCXsKKwkJCS8qIGNsZWFyIHRoZSBmbGFnICovCisJCQkodm9pZCkgcGdf YXRvbWljX2ZldGNoX2FuZF91MzIoJk15UHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3Rz LCB+KDEgPDwgcmVhc29uKSk7CisKKwkJCVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0KHJlYXNv bik7CisJCX0KKwl9Cit9CisKK3ZvaWQKK1Byb2Nlc3NSZWNvdmVyeUNvbmZsaWN0KFJlY292 ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uKQogewogCXN3aXRjaCAocmVhc29uKQogCXsKQEAg LTMyNDIsMTQgKzMyMDIsMTQgQEAgcmVwb3J0X3JlY292ZXJ5X2NvbmZsaWN0KFJlY292ZXJ5 Q29uZmxpY3RSZWFzb24gcmVhc29uKQogCQlpZiAoIURvaW5nQ29tbWFuZFJlYWQpCiAJCXsK IAkJCS8qIEF2b2lkIGxvc2luZyBzeW5jIGluIHRoZSBGRS9CRSBwcm90b2NvbC4gKi8KLQkJ CWlmIChRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCAhPSAwKQorCQkJaWYgKCFJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkpCiAJCQl7CiAJCQkJ LyoKIAkJCQkgKiBSZS1hcm0gYW5kIGRlZmVyIHRoaXMgaW50ZXJydXB0IHVudGlsIGxhdGVy LiAgU2VlIHNpbWlsYXIKIAkJCQkgKiBjb2RlIGluIFByb2Nlc3NJbnRlcnJ1cHRzKCkuCiAJ CQkJICovCiAJCQkJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJk15UHJvYy0+cGVu ZGluZ1JlY292ZXJ5Q29uZmxpY3RzLCAoMSA8PCByZWFzb24pKTsKLQkJCQlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKKwkJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1QpOwogCQkJCXJldHVybjsKIAkJCX0KIApAQCAtMzI4MCw3MiArMzI0MCwzMSBA QCByZXBvcnRfcmVjb3ZlcnlfY29uZmxpY3QoUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFz b24pCiAJCQkJCSAiIGRhdGFiYXNlIGFuZCByZXBlYXQgeW91ciBjb21tYW5kLiIpKSk7CiB9 CiAKLS8qCi0gKiBDaGVjayBlYWNoIHBvc3NpYmxlIHJlY292ZXJ5IGNvbmZsaWN0IHJlYXNv bi4KLSAqLwotc3RhdGljIHZvaWQKLVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0 cyh2b2lkKQordm9pZAorUHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQogewot CXVpbnQzMgkJcGVuZGluZzsKLQotCS8qCi0JICogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBh Ym91dCBqb2dnbGluZyB0aGUgZWxib3cgb2YgcHJvY19leGl0LCBiZWNhdXNlCi0JICogcHJv Y19leGl0X3ByZXBhcmUoKSBob2xkcyBpbnRlcnJ1cHRzLCBzbyBQcm9jZXNzSW50ZXJydXB0 cygpIHdvbid0IGNhbGwKLQkgKiB1cy4KLQkgKi8KLQlBc3NlcnQoIXByb2NfZXhpdF9pbnBy b2dyZXNzKTsKLQlBc3NlcnQoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDApOwotCi0JLyog QXJlIGFueSByZWNvdmVyeSBjb25mbGljdCBwZW5kaW5nPyAqLwotCXBlbmRpbmcgPSBwZ19h dG9taWNfcmVhZF9tZW1iYXJyaWVyX3UzMigmTXlQcm9jLT5wZW5kaW5nUmVjb3ZlcnlDb25m bGljdHMpOwotCWlmIChwZW5kaW5nID09IDApCi0JCXJldHVybjsKKwlQcm9jZXNzQ29uZmln RmlsZShQR0NfU0lHSFVQKTsKK30KIAordm9pZAorUHJvY2Vzc0FzeW5jTm90aWZ5SW50ZXJy dXB0KHZvaWQpCit7CiAJLyoKLQkgKiBDaGVjayB0aGUgY29uZmxpY3RzIG9uZSBieSBvbmUs IGNsZWFyaW5nIGVhY2ggZmxhZyBvbmx5IGJlZm9yZQotCSAqIHByb2Nlc3NpbmcgdGhlIHBh cnRpY3VsYXIgY29uZmxpY3QuICBUaGlzIGVuc3VyZXMgdGhhdCBpZiBtdWx0aXBsZQotCSAq IGNvbmZsaWN0cyBhcmUgcGVuZGluZywgd2UgY29tZSBiYWNrIGhlcmUgdG8gcHJvY2VzcyB0 aGUgcmVtYWluaW5nCi0JICogY29uZmxpY3RzLCBpZiBhbiBlcnJvciBpcyB0aHJvd24gZHVy aW5nIHByb2Nlc3Npbmcgb25lIG9mIHRoZW0uCisJICogVGhpcyBpcyBvbmx5IGVuYWJsZWQg d2hpbGUgRG9pbmdDb21tYW5kUmVhZCwgc28gd2Ugd2FudCB0byBmbHVzaCB0aGUKKwkgKiBh c3luYyBub3RpZnkgdG8gdGhlIGNsaWVudCBpbW1lZGlhdGVseQogCSAqLwotCWZvciAoUmVj b3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24gPSAwOwotCQkgcmVhc29uIDwgTlVNX1JFQ09W RVJZX0NPTkZMSUNUX1JFQVNPTlM7Ci0JCSByZWFzb24rKykKLQl7Ci0JCWlmICgocGVuZGlu ZyAmICgxIDw8IHJlYXNvbikpICE9IDApCi0JCXsKLQkJCS8qIGNsZWFyIHRoZSBmbGFnICov Ci0JCQkodm9pZCkgcGdfYXRvbWljX2ZldGNoX2FuZF91MzIoJk15UHJvYy0+cGVuZGluZ1Jl Y292ZXJ5Q29uZmxpY3RzLCB+KDEgPDwgcmVhc29uKSk7Ci0KLQkJCVByb2Nlc3NSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KHJlYXNvbik7Ci0JCX0KLQl9CisJQXNzZXJ0KERvaW5nQ29t bWFuZFJlYWQpOworCVByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQodHJ1ZSk7CiB9CiAKLS8qCi0g KiBQcm9jZXNzSW50ZXJydXB0czogb3V0LW9mLWxpbmUgcG9ydGlvbiBvZiBDSEVDS19GT1Jf SU5URVJSVVBUUygpIG1hY3JvCi0gKgotICogSWYgYW4gaW50ZXJydXB0IGNvbmRpdGlvbiBp cyBwZW5kaW5nLCBhbmQgaXQncyBzYWZlIHRvIHNlcnZpY2UgaXQsCi0gKiB0aGVuIGNsZWFy IHRoZSBmbGFnIGFuZCBhY2NlcHQgdGhlIGludGVycnVwdC4gIENhbGxlZCBvbmx5IHdoZW4K LSAqIEludGVycnVwdFBlbmRpbmcgaXMgdHJ1ZS4KLSAqCi0gKiBOb3RlOiBpZiBJTlRFUlJV UFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBpcyB0cnVlLCB0aGVuIFByb2Nlc3NJbnRlcnJ1cHRz Ci0gKiBpcyBndWFyYW50ZWVkIHRvIGNsZWFyIHRoZSBJbnRlcnJ1cHRQZW5kaW5nIGZsYWcg YmVmb3JlIHJldHVybmluZy4KLSAqIChUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBndWFyYW50 ZWVpbmcgdGhhdCBpdCdzIHN0aWxsIGNsZWFyIHdoZW4gd2UKLSAqIHJldHVybjsgYW5vdGhl ciBpbnRlcnJ1cHQgY291bGQgaGF2ZSBhcnJpdmVkLiAgQnV0IHdlIHByb21pc2UgdGhhdAot ICogYW55IHByZS1leGlzdGluZyBvbmUgd2lsbCBoYXZlIGJlZW4gc2VydmljZWQuKQotICov CiB2b2lkCi1Qcm9jZXNzSW50ZXJydXB0cyh2b2lkKQorUHJvY2Vzc1Rlcm1pbmF0ZUludGVy cnVwdCh2b2lkKQogewogCS8qIE9LIHRvIGFjY2VwdCBhbnkgaW50ZXJydXB0cyBub3c/ICov Ci0JaWYgKEludGVycnVwdEhvbGRvZmZDb3VudCAhPSAwIHx8IENyaXRTZWN0aW9uQ291bnQg IT0gMCkKLQkJcmV0dXJuOwotCUludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKKwlBc3NlcnQo SW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDApOworCUFzc2VydChDcml0U2VjdGlvbkNvdW50 ID09IDApOwogCi0JaWYgKFByb2NEaWVQZW5kaW5nKQogCXsKLQkJUHJvY0RpZVBlbmRpbmcg PSBmYWxzZTsKLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7IC8qIFByb2NEaWUgdHJ1 bXBzIFF1ZXJ5Q2FuY2VsICovCiAJCUxvY2tFcnJvckNsZWFudXAoKTsKIAkJLyogQXMgaW4g cXVpY2tkaWUsIGRvbid0IHJpc2sgc2VuZGluZyB0byBjbGllbnQgZHVyaW5nIGF1dGggKi8K IAkJaWYgKENsaWVudEF1dGhJblByb2dyZXNzICYmIHdoZXJlVG9TZW5kT3V0cHV0ID09IERl c3RSZW1vdGUpCkBAIC0zMzk0LDY1ICszMzEzLDU1IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZv aWQpCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLAogCQkJCQkgZXJy bXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1h bmQiKSkpOwogCX0KK30KIAotCWlmIChDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nKQot CXsKLQkJQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IGZhbHNlOwotCi0JCS8qCi0J CSAqIENoZWNrIGZvciBsb3N0IGNvbm5lY3Rpb24gYW5kIHJlLWFybSwgaWYgc3RpbGwgY29u ZmlndXJlZCwgYnV0IG5vdAotCQkgKiBpZiB3ZSd2ZSBhcnJpdmVkIGJhY2sgYXQgRG9pbmdD b21tYW5kUmVhZCBzdGF0ZS4gIFdlIGRvbid0IHdhbnQgdG8KLQkJICogd2FrZSB1cCBpZGxl IHNlc3Npb25zLCBhbmQgdGhleSBhbHJlYWR5IGtub3cgaG93IHRvIGRldGVjdCBsb3N0Ci0J CSAqIGNvbm5lY3Rpb25zLgotCQkgKi8KLQkJaWYgKCFEb2luZ0NvbW1hbmRSZWFkICYmIGNs aWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsID4gMCkKLQkJewotCQkJaWYgKCFwcV9j aGVja19jb25uZWN0aW9uKCkpCi0JCQkJQ2xpZW50Q29ubmVjdGlvbkxvc3QgPSB0cnVlOwot CQkJZWxzZQotCQkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKENMSUVOVF9DT05ORUNUSU9OX0NI RUNLX1RJTUVPVVQsCi0JCQkJCQkJCQkgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2 YWwpOwotCQl9Ci0JfQogCi0JaWYgKENsaWVudENvbm5lY3Rpb25Mb3N0KQordm9pZAorUHJv Y2Vzc0NsaWVudENoZWNrVGltZW91dEludGVycnVwdCh2b2lkKQoreworCS8qCisJICogQ2hl Y2sgZm9yIGxvc3QgY29ubmVjdGlvbiBhbmQgcmUtYXJtLCBpZiBzdGlsbCBjb25maWd1cmVk LCBidXQgbm90IGlmCisJICogd2UndmUgYXJyaXZlZCBiYWNrIGF0IERvaW5nQ29tbWFuZFJl YWQgc3RhdGUuICBXZSBkb24ndCB3YW50IHRvIHdha2UgdXAKKwkgKiBpZGxlIHNlc3Npb25z LCBhbmQgdGhleSBhbHJlYWR5IGtub3cgaG93IHRvIGRldGVjdCBsb3N0IGNvbm5lY3Rpb25z LgorCSAqLworCWlmICghRG9pbmdDb21tYW5kUmVhZCAmJiBjbGllbnRfY29ubmVjdGlvbl9j aGVja19pbnRlcnZhbCA+IDApCiAJewotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsg LyogbG9zdCBjb25uZWN0aW9uIHRydW1wcyBRdWVyeUNhbmNlbCAqLwotCQlMb2NrRXJyb3JD bGVhbnVwKCk7Ci0JCS8qIGRvbid0IHNlbmQgdG8gY2xpZW50LCB3ZSBhbHJlYWR5IGtub3cg dGhlIGNvbm5lY3Rpb24gdG8gYmUgZGVhZC4gKi8KLQkJd2hlcmVUb1NlbmRPdXRwdXQgPSBE ZXN0Tm9uZTsKLQkJZXJlcG9ydChGQVRBTCwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5F Q1RJT05fRkFJTFVSRSksCi0JCQkJIGVycm1zZygiY29ubmVjdGlvbiB0byBjbGllbnQgbG9z dCIpKSk7CisJCWlmICghcHFfY2hlY2tfY29ubmVjdGlvbigpKQorCQkJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpOworCQllbHNlCisJCQllbmFi bGVfdGltZW91dF9hZnRlcihDTElFTlRfQ09OTkVDVElPTl9DSEVDS19USU1FT1VULAorCQkJ CQkJCQkgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpOwogCX0KK30KKwordm9p ZAorUHJvY2Vzc0NsaWVudENvbm5lY3Rpb25Mb3N0KHZvaWQpCit7CisJLyogRklYTUU6IGNo ZWNrIHByb2NkaWUgZmlyc3QgKi8KIAorCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVS WV9DQU5DRUwpOyAvKiBsb3N0IGNvbm5lY3Rpb24gdHJ1bXBzCisJCQkJCQkJCQkJCSAqIFF1 ZXJ5Q2FuY2VsICovCisJTG9ja0Vycm9yQ2xlYW51cCgpOworCS8qIGRvbid0IHNlbmQgdG8g Y2xpZW50LCB3ZSBhbHJlYWR5IGtub3cgdGhlIGNvbm5lY3Rpb24gdG8gYmUgZGVhZC4gKi8K Kwl3aGVyZVRvU2VuZE91dHB1dCA9IERlc3ROb25lOworCWVyZXBvcnQoRkFUQUwsCisJCQko ZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCisJCQkgZXJybXNnKCJjb25u ZWN0aW9uIHRvIGNsaWVudCBsb3N0IikpKTsKK30KKwordm9pZAorUHJvY2Vzc1F1ZXJ5Q2Fu Y2VsSW50ZXJydXB0KHZvaWQpCit7CiAJLyoKLQkgKiBEb24ndCBhbGxvdyBxdWVyeSBjYW5j ZWwgaW50ZXJydXB0cyB3aGlsZSByZWFkaW5nIGlucHV0IGZyb20gdGhlCi0JICogY2xpZW50 LCBiZWNhdXNlIHdlIG1pZ2h0IGxvc2Ugc3luYyBpbiB0aGUgRkUvQkUgcHJvdG9jb2wuICAo RGllCi0JICogaW50ZXJydXB0cyBhcmUgT0ssIGJlY2F1c2Ugd2Ugd29uJ3QgcmVhZCBhbnkg ZnVydGhlciBtZXNzYWdlcyBmcm9tIHRoZQotCSAqIGNsaWVudCBpbiB0aGF0IGNhc2UuKQot CSAqCi0JICogU2VlIHNpbWlsYXIgbG9naWMgaW4gUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJ bnRlcnJ1cHRzKCkuCisJICogRklYTUU6IENoZWNrIGNsaWVudCBjb25uZWN0aW9uIGxvc3Qg YW5kIHRlcm1pbmF0ZSBpbnRlcnJ1cHRzIGZpcnN0LCBzbworCSAqIHRoYXQgaWYgd2UncmUg YWJvdXQgdG8gdGVybWluYXRlIHRoZSB3aG9sZSBiYWNrZW5kIGFueXdheSwgd2UgZG8gdGhh dAorCSAqIHN0cmFpZ2h0IGF3YXkgYW5kIHNraXAgdGhlIHF1ZXJ5IGNhbmNlbGxhdGlvbi4K IAkgKi8KLQlpZiAoUXVlcnlDYW5jZWxQZW5kaW5nICYmIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNv dW50ICE9IDApCi0JewotCQkvKgotCQkgKiBSZS1hcm0gSW50ZXJydXB0UGVuZGluZyBzbyB0 aGF0IHdlIHByb2Nlc3MgdGhlIGNhbmNlbCByZXF1ZXN0IGFzCi0JCSAqIHNvb24gYXMgd2Un cmUgZG9uZSByZWFkaW5nIHRoZSBtZXNzYWdlLiAgKFhYWCB0aGlzIGlzIHNlcmlvdXNseQot CQkgKiB1Z2x5OiBpdCBjb21wbGljYXRlcyBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQo KSwgYW5kIGl0IG1lYW5zIHdlCi0JCSAqIGNhbid0IHVzZSB0aGF0IG1hY3JvIGRpcmVjdGx5 IGFzIHRoZSBpbml0aWFsIHRlc3QgaW4gdGhpcyBmdW5jdGlvbiwKLQkJICogbWVhbmluZyB0 aGF0IHRoaXMgY29kZSBhbHNvIGNyZWF0ZXMgb3Bwb3J0dW5pdGllcyBmb3Igb3RoZXIgYnVn cyB0bwotCQkgKiBhcHBlYXIuKQotCQkgKi8KLQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7 Ci0JfQotCWVsc2UgaWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwogCXsKIAkJYm9vbAkJbG9j a190aW1lb3V0X29jY3VycmVkOwogCQlib29sCQlzdG10X3RpbWVvdXRfb2NjdXJyZWQ7CiAK LQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7Ci0KIAkJLyoKIAkJICogSWYgTE9DS19U SU1FT1VUIGFuZCBTVEFURU1FTlRfVElNRU9VVCBpbmRpY2F0b3JzIGFyZSBib3RoIHNldCwg d2UKIAkJICogbmVlZCB0byBjbGVhciBib3RoLCBzbyBhbHdheXMgZmV0Y2ggYm90aC4KQEAg LTM1MDUsNzYgKzM0MTQsNjYgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJCQkJIGVy cm1zZygiY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0IikpKTsKIAkJ fQogCX0KK30KIAotCWlmIChwZ19hdG9taWNfcmVhZF91MzIoJk15UHJvYy0+cGVuZGluZ1Jl Y292ZXJ5Q29uZmxpY3RzKSAhPSAwKQotCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVy cnVwdHMoKTsKIAotCWlmIChJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGlu ZykKK3ZvaWQKK1Byb2Nlc3NJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SW50ZXJy dXB0KHZvaWQpCit7CisJLyoKKwkgKiBJZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHpl cm8sIGlnbm9yZSB0aGUgaW50ZXJydXB0LiAgVGhpcyBpcworCSAqIGltcG9ydGFudCBiZWNh dXNlIHRoZSBHVUMgdXBkYXRlIGl0c2VsZiB3b24ndCBkaXNhYmxlIGFueSBwZW5kaW5nCisJ ICogaW50ZXJydXB0LiAgV2UgbmVlZCB0byB1bnNldCB0aGUgZmxhZyBiZWZvcmUgdGhlIGlu amVjdGlvbiBwb2ludCwKKwkgKiBvdGhlcndpc2Ugd2UgY291bGQgbG9vcCBpbiBpbnRlcnJ1 cHRzIGNoZWNraW5nLgorCSAqLworCWlmIChJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1l b3V0ID4gMCkKIAl7Ci0JCS8qCi0JCSAqIElmIHRoZSBHVUMgaGFzIGJlZW4gcmVzZXQgdG8g emVybywgaWdub3JlIHRoZSBzaWduYWwuICBUaGlzIGlzCi0JCSAqIGltcG9ydGFudCBiZWNh dXNlIHRoZSBHVUMgdXBkYXRlIGl0c2VsZiB3b24ndCBkaXNhYmxlIGFueSBwZW5kaW5nCi0J CSAqIGludGVycnVwdC4gIFdlIG5lZWQgdG8gdW5zZXQgdGhlIGZsYWcgYmVmb3JlIHRoZSBp bmplY3Rpb24gcG9pbnQsCi0JCSAqIG90aGVyd2lzZSB3ZSBjb3VsZCBsb29wIGluIGludGVy cnVwdHMgY2hlY2tpbmcuCi0JCSAqLwotCQlJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1l b3V0UGVuZGluZyA9IGZhbHNlOwotCQlpZiAoSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGlt ZW91dCA+IDApCi0JCXsKLQkJCUlOSkVDVElPTl9QT0lOVCgiaWRsZS1pbi10cmFuc2FjdGlv bi1zZXNzaW9uLXRpbWVvdXQiLCBOVUxMKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShl cnJjb2RlKEVSUkNPREVfSURMRV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQpLAot CQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBpZGxlLWluLXRy YW5zYWN0aW9uIHRpbWVvdXQiKSkpOwotCQl9CisJCUlOSkVDVElPTl9QT0lOVCgiaWRsZS1p bi10cmFuc2FjdGlvbi1zZXNzaW9uLXRpbWVvdXQiLCBOVUxMKTsKKwkJZXJlcG9ydChGQVRB TCwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9U SU1FT1VUKSwKKwkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBp ZGxlLWluLXRyYW5zYWN0aW9uIHRpbWVvdXQiKSkpOwogCX0KK30KIAotCWlmIChUcmFuc2Fj dGlvblRpbWVvdXRQZW5kaW5nKQordm9pZAorUHJvY2Vzc1RyYW5zYWN0aW9uVGltZW91dElu dGVycnVwdCh2b2lkKQoreworCS8qIEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0 aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHplcm8uICovCisJaWYgKFRyYW5zYWN0aW9uVGlt ZW91dCA+IDApCiAJewotCQkvKiBBcyBhYm92ZSwgaWdub3JlIHRoZSBzaWduYWwgaWYgdGhl IEdVQyBoYXMgYmVlbiByZXNldCB0byB6ZXJvLiAqLwotCQlUcmFuc2FjdGlvblRpbWVvdXRQ ZW5kaW5nID0gZmFsc2U7Ci0JCWlmIChUcmFuc2FjdGlvblRpbWVvdXQgPiAwKQotCQl7Ci0J CQlJTkpFQ1RJT05fUE9JTlQoInRyYW5zYWN0aW9uLXRpbWVvdXQiLCBOVUxMKTsKLQkJCWVy ZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfVFJBTlNBQ1RJT05fVElNRU9V VCksCi0JCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5z YWN0aW9uIHRpbWVvdXQiKSkpOwotCQl9CisJCUlOSkVDVElPTl9QT0lOVCgidHJhbnNhY3Rp b24tdGltZW91dCIsIE5VTEwpOworCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2RlKEVS UkNPREVfVFJBTlNBQ1RJT05fVElNRU9VVCksCisJCQkJIGVycm1zZygidGVybWluYXRpbmcg Y29ubmVjdGlvbiBkdWUgdG8gdHJhbnNhY3Rpb24gdGltZW91dCIpKSk7CiAJfQorfQogCi0J aWYgKElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcpCit2b2lkCitQcm9jZXNzSWRsZVNlc3Np b25UaW1lb3V0SW50ZXJydXB0KHZvaWQpCit7CisJLyogQXMgYWJvdmUsIGlnbm9yZSB0aGUg c2lnbmFsIGlmIHRoZSBHVUMgaGFzIGJlZW4gcmVzZXQgdG8gemVyby4gKi8KKwlpZiAoSWRs ZVNlc3Npb25UaW1lb3V0ID4gMCkKIAl7Ci0JCS8qIEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNp Z25hbCBpZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHplcm8uICovCi0JCUlkbGVTZXNz aW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLQkJaWYgKElkbGVTZXNzaW9uVGltZW91dCA+ IDApCi0JCXsKLQkJCUlOSkVDVElPTl9QT0lOVCgiaWRsZS1zZXNzaW9uLXRpbWVvdXQiLCBO VUxMKTsKLQkJCWVyZXBvcnQoRkFUQUwsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSURMRV9T RVNTSU9OX1RJTUVPVVQpLAotCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9u IGR1ZSB0byBpZGxlLXNlc3Npb24gdGltZW91dCIpKSk7Ci0JCX0KKwkJSU5KRUNUSU9OX1BP SU5UKCJpZGxlLXNlc3Npb24tdGltZW91dCIsIE5VTEwpOworCQllcmVwb3J0KEZBVEFMLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSURMRV9TRVNTSU9OX1RJTUVPVVQpLAorCQkJCSBlcnJt c2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIGlkbGUtc2Vzc2lvbiB0aW1lb3V0 IikpKTsKIAl9Cit9CiAKK3ZvaWQKK1Byb2Nlc3NJZGxlU3RhdHNUaW1lb3V0SW50ZXJydXB0 KHZvaWQpCit7CiAJLyoKLQkgKiBJZiB0aGVyZSBhcmUgcGVuZGluZyBzdGF0cyB1cGRhdGVz IGFuZCB3ZSBjdXJyZW50bHkgYXJlIHRydWx5IGlkbGUKLQkgKiAobWF0Y2hpbmcgdGhlIGNv bmRpdGlvbnMgaW4gUG9zdGdyZXNNYWluKCksIHJlcG9ydCBzdGF0cyBub3cuCisJICogU3Rh dHMgdXBkYXRlIHdhcyByZXF1ZXN0ZWQuIFRoaXMgaGFuZGxlciBpcyBvbmx5IGVuYWJsZWQg d2hlbiB3ZSdyZQorCSAqIHRydWx5IGlkbGUsIHdpdGggbm8gdHJhbnNhY3Rpb24gaW4gcHJv Z3Jlc3MKIAkgKi8KLQlpZiAoSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgJiYKLQkJ RG9pbmdDb21tYW5kUmVhZCAmJiAhSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygp KQotCXsKLQkJSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLQkJcGdz dGF0X3JlcG9ydF9zdGF0KHRydWUpOwotCX0KLQotCWlmIChQcm9jU2lnbmFsQmFycmllclBl bmRpbmcpCi0JCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwotCi0JaWYgKFBhcmFsbGVs TWVzc2FnZVBlbmRpbmcpCi0JCVByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKCk7Ci0KLQlpZiAo TG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50 ZXJydXB0KCk7Ci0KLQlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQotCQlQcm9j ZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7CisJLyoKKwkgKiBGSVhNRTogY2hlY2sgdGhh dCB0aGlzIGlzIGNhbGxlZCB1bmRlciByaWdodCBjb25kaXRpb25zIGFsc28gaW4KKwkgKiB3 YWxzZW5kZXJzCisJICovCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJs b2NrKCkpOworCXBnc3RhdF9yZXBvcnRfc3RhdCh0cnVlKTsKIH0KIAogLyoKQEAgLTQyMzgs OSArNDEzNywxMyBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBj aGFyICp1c2VybmFtZSkKIAogCUFzc2VydChHZXRQcm9jZXNzaW5nTW9kZSgpID09IEluaXRQ cm9jZXNzaW5nKTsKIAorCUhPTERfSU5URVJSVVBUUygpOworCVNldFN0YW5kYXJkSW50ZXJy dXB0SGFuZGxlcnMoKTsKKwogCS8qCi0JICogU2V0IHVwIHNpZ25hbCBoYW5kbGVycy4gIChJ bml0UG9zdG1hc3RlckNoaWxkIG9yIEluaXRTdGFuZGFsb25lUHJvY2VzcwotCSAqIGhhcyBh bHJlYWR5IHNldCB1cCBCbG9ja1NpZyBhbmQgbWFkZSB0aGF0IHRoZSBhY3RpdmUgc2lnbmFs IG1hc2suKQorCSAqIFNldCB1cCBzaWduYWwgYW5kIGludGVycnVwdCBoYW5kbGVycy4gIChJ bml0UG9zdG1hc3RlckNoaWxkIG9yCisJICogSW5pdFN0YW5kYWxvbmVQcm9jZXNzIGhhcyBh bHJlYWR5IHNldCB1cCBCbG9ja1NpZyBhbmQgbWFkZSB0aGF0IHRoZQorCSAqIGFjdGl2ZSBz aWduYWwgbWFzay4pCiAJICoKIAkgKiBOb3RlIHRoYXQgcG9zdG1hc3RlciBibG9ja2VkIGFs bCBzaWduYWxzIGJlZm9yZSBmb3JraW5nIGNoaWxkIHByb2Nlc3MsCiAJICogc28gdGhlcmUg aXMgbm8gcmFjZSBjb25kaXRpb24gd2hlcmVieSB3ZSBtaWdodCByZWNlaXZlIGEgc2lnbmFs IGJlZm9yZQpAQCAtNDI1MywxMyArNDE1NiwyNSBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hh ciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkgKiBhbiBpc3N1ZSBmb3Igc2ln bmFscyB0aGF0IGFyZSBsb2NhbGx5IGdlbmVyYXRlZCwgc3VjaCBhcyBTSUdBTFJNIGFuZAog CSAqIFNJR1BJUEUuKQogCSAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1FV RVJZX0NBTkNFTCwgUHJvY2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KTsKKwlFbmFibGVJbnRl cnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CisKIAlpZiAoYW1fd2Fsc2VuZGVyKQor CXsKKwkJcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVz dCk7CisKIAkJV2FsU25kU2lnbmFscygpOworCX0KIAllbHNlCiAJewotCQlwcXNpZ25hbChT SUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCQlwcXNpZ25hbChTSUdJ TlQsIFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwkvKiBjYW5jZWwgY3VycmVudCBxdWVyeSAq LwotCQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOyAvKiBjYW5jZWwgY3VycmVudCBxdWVyeSBh bmQgZXhpdCAqLworCQlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JRdWVyeUNh bmNlbCk7CS8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5ICovCisKKwkJLyoKKwkJICogQ2FuY2Vs IGN1cnJlbnQgcXVlcnkgYW5kIGV4aXQuIFRoaXMgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRl ZCBpbgorCQkgKiBiYWNrZW5kIHByb2Nlc3Nlcy4gc28gd2Ugd2UgY2Fubm90IHVzZQorCQkg KiBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0IGhlcmUuCisJCSAqLworCQlwcXNp Z25hbChTSUdURVJNLCBkaWUpOyAvKiAqLwogCiAJCS8qCiAJCSAqIEluIGEgcG9zdG1hc3Rl ciBjaGlsZCBiYWNrZW5kLCByZXBsYWNlIFNpZ25hbEhhbmRsZXJGb3JDcmFzaEV4aXQKQEAg LTQyNzMsNyArNDE4OCwxNCBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBj b25zdCBjaGFyICp1c2VybmFtZSkKIAkJCXBxc2lnbmFsKFNJR1FVSVQsIHF1aWNrZGllKTsJ LyogaGFyZCBjcmFzaCB0aW1lICovCiAJCWVsc2UKIAkJCXBxc2lnbmFsKFNJR1FVSVQsIGRp ZSk7IC8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5IGFuZCBleGl0ICovCisKIAkJSW5pdGlhbGl6 ZVRpbWVvdXRzKCk7CS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLworCQlTZXRJ bnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VULCBQcm9jZXNz VHJhbnNhY3Rpb25UaW1lb3V0SW50ZXJydXB0KTsKKwkJRW5hYmxlSW50ZXJydXB0KElOVEVS UlVQVF9UUkFOU0FDVElPTl9USU1FT1VUKTsKKwkJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRF UlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQsIFByb2Nlc3NJZGxlU2Vzc2lvblRpbWVvdXRJ bnRlcnJ1cHQpOworCQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU0VTU0lPTl9U SU1FT1VUKTsKKwkJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfSURMRV9JTl9UUkFO U0FDVElPTl9TRVNTSU9OX1RJTUVPVVQsIFByb2Nlc3NJZGxlSW5UcmFuc2FjdGlvblNlc3Np b25UaW1lb3V0SW50ZXJydXB0KTsKKwkJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9JRExF X0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCk7CiAKIAkJLyoKIAkJICogSWdub3Jl IGZhaWx1cmUgdG8gd3JpdGUgdG8gZnJvbnRlbmQuIE5vdGU6IGlmIGZyb250ZW5kIGNsb3Nl cwpAQCAtNDI4MiwxMSArNDIwNCwzMSBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJu YW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJICogbWlkc3Qgb2Ygb3V0cHV0IGR1cmlu ZyB3aG8ta25vd3Mtd2hhdCBvcGVyYXRpb24uLi4KIAkJICovCiAJCXBxc2lnbmFsKFNJR1BJ UEUsIFNJR19JR04pOwotCQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlcik7Ci0JCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOwogCQlwcXNpZ25hbChT SUdGUEUsIEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7CiAJfQogCisJU2V0SW50ZXJydXB0SGFu ZGxlcihJTlRFUlJVUFRfQ0xJRU5UX0NIRUNLX1RJTUVPVVQsIFByb2Nlc3NDbGllbnRDaGVj a1RpbWVvdXRJbnRlcnJ1cHQpOworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0NM SUVOVF9DT05ORUNUSU9OX0xPU1QsIFByb2Nlc3NDbGllbnRDb25uZWN0aW9uTG9zdCk7CisJ RW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9VVCk7CisJRW5h YmxlSW50ZXJydXB0KElOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElPTl9MT1NUKTsKKworCS8q IHN0YXRzIHVwZGF0ZXMgYXJlIG9ubHkgc2VudCB3aGVuIHdlJ3JlIGlkbGUsIHNvIGRvbid0 IGVuYWJsZSB0aGlzIHlldCAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0lE TEVfU1RBVFNfVElNRU9VVCwgUHJvY2Vzc0lkbGVTdGF0c1RpbWVvdXRJbnRlcnJ1cHQpOwor CisJLyoKKwkgKiBCYWNrZW5kcyB0aGF0IGNhbiBMSVNURU4gbmVlZCB0aGlzLiAoSXQgaXMg b25seSBlbmFibGVkIHdoZW4gaWRsZQorCSAqIG91dHNpZGUgYSB0cmFuc2FjdGlvbiwgaG93 ZXZlci4pCisJICoKKwkgKiBGSVhNRTogc2hvdWxkIGJnd29ya2VycyBkbyB0aGlzIHRvbz8g T3IgaXQncyB1cCB0byB0aGVtIHRvIHNldCB1cCB0aGUKKwkgKiBoYW5kbGVyIGlmIHRoZXkg TElTVEVOPworCSAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0FTWU5DX05P VElGWSwgUHJvY2Vzc0FzeW5jTm90aWZ5SW50ZXJydXB0KTsKKworCVNldEludGVycnVwdEhh bmRsZXIoSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UsIFByb2Nlc3NQYXJhbGxlbE1lc3Nh Z2VzKTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UpOwor CisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKwogCS8qIEVhcmx5IGluaXRpYWxpemF0aW9uICov CiAJQmFzZUluaXQoKTsKIApAQCAtNDQ1NCwxMSArNDM5NiwxNCBAQCBQb3N0Z3Jlc01haW4o Y29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJICogZm9yZ2V0 dGluZyBhIHRpbWVvdXQgY2FuY2VsLgogCQkgKi8KIAkJZGlzYWJsZV9hbGxfdGltZW91dHMo ZmFsc2UpOwkvKiBkbyBmaXJzdCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbiAqLwotCQlRdWVy eUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FV RVJZX0NBTkNFTCk7CiAJCWlkbGVfaW5fdHJhbnNhY3Rpb25fdGltZW91dF9lbmFibGVkID0g ZmFsc2U7CiAJCWlkbGVfc2Vzc2lvbl90aW1lb3V0X2VuYWJsZWQgPSBmYWxzZTsKIAogCQkv KiBOb3QgcmVhZGluZyBmcm9tIHRoZSBjbGllbnQgYW55bW9yZS4gKi8KKwkJRGlzYWJsZUlu dGVycnVwdChJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVApOworCQlEaXNhYmxlSW50ZXJydXB0 KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpOworCQlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQ VF9JRExFX1NUQVRTX1RJTUVPVVQpOwogCQlEb2luZ0NvbW1hbmRSZWFkID0gZmFsc2U7CiAK IAkJLyogTWFrZSBzdXJlIGxpYnBxIGlzIGluIGEgZ29vZCBzdGF0ZSAqLwpAQCAtNDYzOSw3 ICs0NTg0LDcgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hh ciAqdXNlcm5hbWUpCiAJCQkJICogd2VyZSByZWNlaXZlZCBkdXJpbmcgdGhlIGp1c3QtZmlu aXNoZWQgdHJhbnNhY3Rpb24sIHRoZXknbGwKIAkJCQkgKiBiZSBzZWVuIGJ5IHRoZSBjbGll bnQgYmVmb3JlIFJlYWR5Rm9yUXVlcnkgaXMuCiAJCQkJICovCi0JCQkJaWYgKG5vdGlmeUlu dGVycnVwdFBlbmRpbmcpCisJCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0FT WU5DX05PVElGWSkpCiAJCQkJCVByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoZmFsc2UpOwogCiAJ CQkJLyoKQEAgLTQ3MjgsNiArNDY3MywyOCBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAq ZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJICovCiAJCURvaW5nQ29tbWFuZFJl YWQgPSB0cnVlOwogCisJCS8qCisJCSAqIExldCBjYWNoZSBpbnZhbCBjYXRjaHVwIHJlcXVl c3RzIHRvIGJlIHByb2Nlc3NlZCB3aGlsZSB3ZSdyZSBpZGxlLgorCQkgKi8KKwkJRW5hYmxl SW50ZXJydXB0KElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUCk7CisKKwkJLyoKKwkJICogV2hl biB3ZSdyZSB0cnVseSBpZGxlLCBpLmUuIG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzLCB3 ZSBjYW4KKwkJICogYWRkaXRpb25hbGx5IHByb2Nlc3MgYW55IGFzeW5jIExJU1RFTi9OT1RJ RlkgbWVzc2FnZXMgYW5kIHN0YXRzCisJCSAqIHVwZGF0ZSByZXF1ZXN0cy4KKwkJICovCisJ CWlmICghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmFi bGVJbnRlcnJ1cHQoSU5URVJSVVBUX0FTWU5DX05PVElGWSk7CisJCQlFbmFibGVJbnRlcnJ1 cHQoSU5URVJSVVBUX0lETEVfU1RBVFNfVElNRU9VVCk7CisJCX0KKworCQkvKgorCQkgKiBJ ZiBhbnkgb2YgdGhlIG5ld2x5LWVuYWJsZWQgaW50ZXJydXB0cyBhcmUgYWxyZWFkeSBwZW5k aW5nLCBwcm9jZXNzCisJCSAqIHRoZW0gbm93LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKwogCQkvKgogCQkgKiAoMykgcmVhZCBhIGNvbW1hbmQgKGxvb3AgYmxvY2tz IGhlcmUpCiAJCSAqLwpAQCAtNDc1NywyMiArNDcyNCwyMiBAQCBQb3N0Z3Jlc01haW4oY29u c3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJICoKIAkJICogUXVl cnkgY2FuY2VsIGlzIHN1cHBvc2VkIHRvIGJlIGEgbm8tb3Agd2hlbiB0aGVyZSBpcyBubyBx dWVyeSBpbgogCQkgKiBwcm9ncmVzcywgc28gaWYgYSBxdWVyeSBjYW5jZWwgYXJyaXZlZCB3 aGlsZSB3ZSB3ZXJlIGlkbGUsIGp1c3QKLQkJICogcmVzZXQgUXVlcnlDYW5jZWxQZW5kaW5n LiBQcm9jZXNzSW50ZXJydXB0cygpIGhhcyB0aGF0IGVmZmVjdCB3aGVuCi0JCSAqIGl0J3Mg Y2FsbGVkIHdoZW4gRG9pbmdDb21tYW5kUmVhZCBpcyBzZXQsIHNvIGNoZWNrIGZvciBpbnRl cnJ1cHRzCi0JCSAqIGJlZm9yZSByZXNldHRpbmcgRG9pbmdDb21tYW5kUmVhZC4KKwkJICog cmVzZXQgSU5URVJSVVBUX1FVRVJZX0NBTkNFTC4gUHJvY2Vzc0ludGVycnVwdHMoKSBoYXMg dGhhdCBlZmZlY3QKKwkJICogd2hlbiBpdCdzIGNhbGxlZCB3aGVuIERvaW5nQ29tbWFuZFJl YWQgaXMgc2V0LCBzbyBjaGVjayBmb3IKKwkJICogaW50ZXJydXB0cyBiZWZvcmUgcmVzZXR0 aW5nIERvaW5nQ29tbWFuZFJlYWQuCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCQlEb2luZ0NvbW1hbmRSZWFkID0gZmFsc2U7CisJCURpc2FibGVJbnRlcnJ1cHQoSU5U RVJSVVBUX1NJTlZBTF9DQVRDSFVQKTsKKwkJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRf QVNZTkNfTk9USUZZKTsKKwkJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRfSURMRV9TVEFU U19USU1FT1VUKTsKIAogCQkvKgogCQkgKiAoNikgY2hlY2sgZm9yIGFueSBvdGhlciBpbnRl cmVzdGluZyBldmVudHMgdGhhdCBoYXBwZW5lZCB3aGlsZSB3ZQogCQkgKiBzbGVwdC4KIAkJ ICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQl7Ci0JCQlDb25maWdSZWxvYWRQ ZW5kaW5nID0gZmFsc2U7CisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05G SUdfUkVMT0FEKSkKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCQl9CiAK IAkJLyoKIAkJICogKDcpIHByb2Nlc3MgdGhlIGNvbW1hbmQuICBCdXQgaWdub3JlIGl0IGlm IHdlJ3JlIHNraXBwaW5nIHRpbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9qc29ucGF0aF9ncmFtLnkgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZ3Jh bS55CmluZGV4IDg3MDcwMjM1ZDExLi42YWE2OTgwNTg5MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZ3JhbS55CkBAIC0xOCw4ICsxOCw4IEBACiAKICNpbmNsdWRlICJj YXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJp cGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAianNvbnBhdGhfaW50ZXJuYWwuaCIKLSNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCiAjaW5jbHVk ZSAicmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IGM3ZjdiOGJjMmRkLi4xODgwMzhjOWY2OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTYsNiArMTYsNyBAQAogI2lu Y2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKQEAgLTI2 Niw3ICsyNjcsNiBAQCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJ T05fQVJHUykKIHsKIAlpbnQJCQlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CiAJUEdQUk9D CSAgICpwcm9jOwotCVByb2NOdW1iZXIJcHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1C RVI7CiAKIAkvKgogCSAqIFNlZSBpZiB0aGUgcHJvY2VzcyB3aXRoIGdpdmVuIHBpZCBpcyBh IGJhY2tlbmQgb3IgYW4gYXV4aWxpYXJ5IHByb2Nlc3MuCkBAIC0yOTUsMTQgKzI5NSw3IEBA IHBnX2xvZ19iYWNrZW5kX21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogCQlQ R19SRVRVUk5fQk9PTChmYWxzZSk7CiAJfQogCi0JcHJvY051bWJlciA9IEdldE51bWJlckZy b21QR1Byb2MocHJvYyk7Ci0JaWYgKFNlbmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19MT0df TUVNT1JZX0NPTlRFWFQsIHByb2NOdW1iZXIpIDwgMCkKLQl7Ci0JCS8qIEFnYWluLCBqdXN0 IGEgd2FybmluZyB0byBhbGxvdyBsb29wcyAqLwotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJ KGVycm1zZygiY291bGQgbm90IHNlbmQgc2lnbmFsIHRvIHByb2Nlc3MgJWQ6ICVtIiwgcGlk KSkpOwotCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7Ci0JfQorCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7 CiAKIAlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9taXNjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCmluZGV4 IDMyYTc4N2Q3ZGY3Li45ZjY2MDM2MzkyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L21pc2MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCkBAIC0z MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1 ZGUgImNvbW1vbi9rZXl3b3Jkcy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi bm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKQEAg LTM4LDcgKzM5LDYgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zt Z3JvaWRzLmgiCkBAIC0zNDYsMTYgKzM0NiwxNiBAQCBwZ19zbGVlcChQR19GVU5DVElPTl9B UkdTKQogCXVzZWNzID0gKGludDY0KSBNaW4oc2VjcywgKGZsb2F0OCkgKFBHX0lOVDY0X01B WCAvIDIpKTsKIAogCS8qCi0JICogV2Ugc2xlZXAgdXNpbmcgV2FpdExhdGNoLCB0byBlbnN1 cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmIGFuCi0JICogaW1wb3J0YW50IHNp Z25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UKLQkg KiBXYWl0TGF0Y2gncyB1cHBlciBsaW1pdCBvZiBkZWxheSBpcyBJTlRfTUFYIG1pbGxpc2Vj b25kcywgYW5kIHRoZSB1c2VyCi0JICogbWlnaHQgYXNrIGZvciBtb3JlIHRoYW4gdGhhdCwg d2Ugc2xlZXAgZm9yIGF0IG1vc3QgMTAgbWludXRlcyBhbmQgdGhlbgotCSAqIGxvb3AuCisJ ICogV2Ugc2xlZXAgdXNpbmcgV2FpdEludGVycnVwdCwgdG8gZW5zdXJlIHRoYXQgd2UnbGwg d2FrZSB1cCBwcm9tcHRseSBpZgorCSAqIGFuIGltcG9ydGFudCBzaWduYWwgKHN1Y2ggYXMg U0lHQUxSTSBvciBTSUdJTlQpIGFycml2ZXMuICBCZWNhdXNlCisJICogV2FpdEludGVycnVw dCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlzIElOVF9NQVggbWlsbGlzZWNvbmRzLCBhbmQg dGhlCisJICogdXNlciBtaWdodCBhc2sgZm9yIG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVlcCBm b3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZAorCSAqIHRoZW4gbG9vcC4KIAkgKgogCSAqIEJ5 IGNvbXB1dGluZyB0aGUgaW50ZW5kZWQgc3RvcCB0aW1lIGluaXRpYWxseSwgd2UgYXZvaWQg YWNjdW11bGF0aW9uIG9mCiAJICogZXh0cmEgZGVsYXkgYWNyb3NzIG11bHRpcGxlIHNsZWVw cy4gIFRoaXMgYWxzbyBlbnN1cmVzIHdlIHdvbid0IGRlbGF5Ci0JICogbGVzcyB0aGFuIHRo ZSBzcGVjaWZpZWQgdGltZSB3aGVuIFdhaXRMYXRjaCBpcyB0ZXJtaW5hdGVkIGVhcmx5IGJ5 IGEKLQkgKiBub24tcXVlcnktY2FuY2VsaW5nIHNpZ25hbCBzdWNoIGFzIFNJR0hVUC4KKwkg KiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdEludGVycnVwdCBpcyB0 ZXJtaW5hdGVkIGVhcmx5IGJ5CisJICogYSBub24tcXVlcnktY2FuY2VsaW5nIHNpZ25hbCBz dWNoIGFzIFNJR0hVUC4KIAkgKi8KIAllbmR0aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp ICsgdXNlY3M7CiAKQEAgLTM3NCwxMSArMzc0LDEwIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWVsc2UKIAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRj aCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCSBkZWxheV9tcywKLQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsK LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIGRlbGF5X21zLAorCQkJCQkJCSBXQUlU X0VWRU5UX1BHX1NMRUVQKTsKIAl9CiAKIAlQR19SRVRVUk5fVk9JRCgpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3RpbWVzdGFtcC5jCmluZGV4IDhkZWIyMzY5NDcxLi5kZjc2NTcwMzFiMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwpAQCAtMTczOSwxMCArMTczOSwxMCBAQCBU aW1lc3RhbXBEaWZmZXJlbmNlKFRpbWVzdGFtcFR6IHN0YXJ0X3RpbWUsIFRpbWVzdGFtcFR6 IHN0b3BfdGltZSwKICAqIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMgLS0gY29u dmVydCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3bwogICogCQl0aW1lc3RhbXBzIGludG8g aW50ZWdlciBtaWxsaXNlY29uZHMKICAqCi0gKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHRv IGNhbGN1bGF0ZSBhIHdhaXQgdGltZW91dCBmb3IgV2FpdExhdGNoKCkKKyAqIFRoaXMgaXMg dHlwaWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZvciBXYWl0SW50 ZXJydXB0KCkKICAqIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gIFRoZSBjaG9pY2Ugb2YgImxv bmciIGFzIHRoZSByZXN1bHQgdHlwZQogICogaXMgdG8gaGFybW9uaXplIHdpdGggdGhhdDsg ZnVydGhlcm1vcmUsIHdlIGNsYW1wIHRoZSByZXN1bHQgdG8gYXQgbW9zdAotICogSU5UX01B WCBtaWxsaXNlY29uZHMsIGJlY2F1c2UgdGhhdCdzIGFsbCB0aGF0IFdhaXRMYXRjaCgpIGFs bG93cy4KKyAqIElOVF9NQVggbWlsbGlzZWNvbmRzLCBiZWNhdXNlIHRoYXQncyBhbGwgdGhh dCBXYWl0SW50ZXJydXB0KCkgYWxsb3dzLgogICoKICAqIFdlIGV4cGVjdCBzdGFydF90aW1l IDw9IHN0b3BfdGltZS4gIElmIG5vdCwgd2UgcmV0dXJuIHplcm8sCiAgKiBzaW5jZSB0aGVu IHdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgcHJldmlvdXNseSBkZXRlcm1pbmVkIHN0b3BfdGlt ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwppbmRleCA1OTMxNWU5NGUzZS4uMWEwZDgwMDhj NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKQEAgLTUyNyw3ICs1MjcsNiBAQCBlcnJm aW5pc2goY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGNvbnN0IGNoYXIgKmZ1 bmNuYW1lKQogCQkgKiBzaG91bGQgbWFrZSBsaWZlIGVhc2llciBmb3IgbW9zdC4pCiAJCSAq LwogCQlJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAwOwotCQlRdWVyeUNhbmNlbEhvbGRvZmZD b3VudCA9IDA7CiAKIAkJQ3JpdFNlY3Rpb25Db3VudCA9IDA7CS8qIHNob3VsZCBiZSB1bm5l Y2Vzc2FyeSwgYnV0Li4uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXgg MzZhZDcwOGIzNjAuLmE4NzQ3NTMxOWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YwpAQCAtMjksMjAgKzI5LDYgQEAKIAogUHJvdG9jb2xWZXJzaW9uIEZyb250ZW5kUHJvdG9j b2w7CiAKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7 Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7Ci12 b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY0RpZVBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxl IHNpZ19hdG9taWNfdCBDaGVja0NsaWVudENvbm5lY3Rpb25QZW5kaW5nID0gZmFsc2U7Ci12 b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3QgPSBmYWxzZTsKLXZv bGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVu ZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IFRyYW5zYWN0aW9uVGltZW91 dFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxlU2Vzc2lvblRp bWVvdXRQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25h bEJhcnJpZXJQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgTG9nTWVt b3J5Q29udGV4dFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBJZGxl U3RhdHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgdWludDMyIElu dGVycnVwdEhvbGRvZmZDb3VudCA9IDA7Ci12b2xhdGlsZSB1aW50MzIgUXVlcnlDYW5jZWxI b2xkb2ZmQ291bnQgPSAwOwotdm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQgPSAw OwogCiBpbnQJCQlNeVByb2NQaWQ7CiBwZ190aW1lX3QJTXlTdGFydFRpbWU7CkBAIC01Mywx NSArMzksNiBAQCB1aW50OAkJTXlDYW5jZWxLZXlbTUFYX0NBTkNFTF9LRVlfTEVOR1RIXTsK IGludAkJCU15Q2FuY2VsS2V5TGVuZ3RoID0gMDsKIGludAkJCU15UE1DaGlsZFNsb3Q7CiAK LS8qCi0gKiBNeUxhdGNoIHBvaW50cyB0byB0aGUgbGF0Y2ggdGhhdCBzaG91bGQgYmUgdXNl ZCBmb3Igc2lnbmFsIGhhbmRsaW5nIGJ5IHRoZQotICogY3VycmVudCBwcm9jZXNzLiBJdCB3 aWxsIGVpdGhlciBwb2ludCB0byBhIHByb2Nlc3MgbG9jYWwgbGF0Y2ggaWYgdGhlCi0gKiBj dXJyZW50IHByb2Nlc3MgZG9lcyBub3QgaGF2ZSBhIFBHUFJPQyBlbnRyeSBpbiB0aGF0IG1v bWVudCwgb3IgdG8KLSAqIFBHUFJPQy0+cHJvY0xhdGNoIGlmIGl0IGhhcy4gVGh1cyBpdCBj YW4gYWx3YXlzIGJlIHVzZWQgaW4gc2lnbmFsIGhhbmRsZXJzLAotICogd2l0aG91dCBjaGVj a2luZyBmb3IgaXRzIGV4aXN0ZW5jZS4KLSAqLwotc3RydWN0IExhdGNoICpNeUxhdGNoOwot CiAvKgogICogRGF0YURpciBpcyB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIGxldmVs IG9mIHRoZSBQR0RBVEEgZGlyZWN0b3J5IHRyZWUuCiAgKiBFeGNlcHQgZHVyaW5nIGVhcmx5 IHN0YXJ0dXAsIHRoaXMgaXMgYWxzbyB0aGUgc2VydmVyJ3Mgd29ya2luZyBkaXJlY3Rvcnk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKaW5kZXggZmFkZjg1NmQ5YmMuLmZkY2Vl OTQ2NDA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCkBAIC0zMiwxOCArMzIs MTcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Blcm0uaCIKKyNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNp bmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNs dWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNjYsOCArNjUsNiBAQCBCYWNrZW5k VHlwZSBNeUJhY2tlbmRUeXBlOwogLyogTGlzdCBvZiBsb2NrIGZpbGVzIHRvIGJlIHJlbW92 ZWQgYXQgcHJvYyBleGl0ICovCiBzdGF0aWMgTGlzdCAqbG9ja19maWxlcyA9IE5JTDsKIAot c3RhdGljIExhdGNoIExvY2FsTGF0Y2hEYXRhOwotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJaWdu b3Jpbmcgc3lzdGVtIGluZGV4ZXMgc3VwcG9ydCBzdHVmZgogICoKQEAgLTEyNiwxMCArMTIz LDkgQEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCXBxaW5pdG1hc2soKTsKICNlbmRp ZgogCi0JLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGxhdGNoIHN1cHBvcnQgKi8KKwkv KiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQgKi8KIAlJbml0 aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgpOwot CUluaXRpYWxpemVMYXRjaFdhaXRTZXQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2FpdFNl dCgpOwogCiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgbWFrZSB0aGlzIHByb2Nlc3MgYSBncm91 cCBsZWFkZXIsIHNvIHRoYXQgdGhlIHBvc3RtYXN0ZXIKQEAgLTE0MywyNSArMTM5LDEyIEBA IEluaXRQb3N0bWFzdGVyQ2hpbGQodm9pZCkKICNlbmRpZgogCiAJLyoKLQkgKiBSZXNldCBz aWduYWxzIHRoYXQgYXJlIHVzZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5IGNoaWxkIHBy b2Nlc3Nlcy4KKwkgKiBTZXQgc3RhbmRhcmQgc2lnbmFsIGhhbmRsZXJzIHN1aXRhYmxlIGZv ciBtb3N0IGJhY2tlbmQgcHJvY2Vzc2VzLgogCSAqCi0JICogQ3VycmVudGx5IGp1c3QgU0lH Q0hMRC4gIFRoZSBoYW5kbGVycyBmb3Igb3RoZXIgc2lnbmFscyBhcmUgb3ZlcnJpZGRlbgot CSAqIGxhdGVyLCBkZXBlbmRpbmcgb24gdGhlIGNoaWxkIHByb2Nlc3MgdHlwZS4KKwkgKiBX ZSBkb24ndCB1bmJsb2NrIHRoZSBzaWduYWxzIHlldCwgc28gdGhhdCBpZiB0aGUgcHJvY2Vz cyBuZWVkcyBzcGVjaWFsCisJICogc2lnbmFsIGhhbmRsaW5nLCBpdCBjYW4gaW5zdGFsbCBj dXN0b20gaGFuZGxlcnMgYmVmb3JlIHVuYmxvY2tpbmcuCiAJICovCi0JcHFzaWduYWwoU0lH Q0hMRCwgU0lHX0RGTCk7IC8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgdG8gYmUgU0lHX0RG TCByYXRoZXIKLQkJCQkJCQkJICogdGhhbiBTSUdfSUdOIG9uIHNvbWUgcGxhdGZvcm1zICov Ci0KLQkvKgotCSAqIEV2ZXJ5IHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2VzcyBpcyBleHBlY3Rl ZCB0byByZXNwb25kIHByb21wdGx5IHRvCi0JICogU0lHUVVJVCBhdCBhbGwgdGltZXMuICBU aGVyZWZvcmUgd2UgY2VudHJhbGx5IHJlbW92ZSBTSUdRVUlUIGZyb20KLQkgKiBCbG9ja1Np ZyBhbmQgaW5zdGFsbCBhIHN1aXRhYmxlIHNpZ25hbCBoYW5kbGVyLiAgKENsaWVudC1mYWNp bmcKLQkgKiBwcm9jZXNzZXMgbWF5IGNob29zZSB0byByZXBsYWNlIHRoaXMgZGVmYXVsdCBj aG9pY2Ugb2YgaGFuZGxlciB3aXRoCi0JICogcXVpY2tkaWUoKS4pICBBbGwgb3RoZXIgYmxv Y2thYmxlIHNpZ25hbHMgcmVtYWluIGJsb2NrZWQgZm9yIG5vdy4KLQkgKi8KLQlwcXNpZ25h bChTSUdRVUlULCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KTsKLQotCXNpZ2RlbHNldCgm QmxvY2tTaWcsIFNJR1FVSVQpOwotCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tT aWcsIE5VTEwpOworCVNldFBvc3RtYXN0ZXJDaGlsZFNpZ25hbEhhbmRsZXJzKCk7CiAKIAkv KgogCSAqIEl0IGlzIHVwIHRvIHRoZSAqTWFpbigpIGZ1bmN0aW9uIHRvIHNldCBzaWduYWwg aGFuZGxlcnMgYXBwcm9wcmlhdGUgZm9yCkBAIC0yMDEsMTAgKzE4NCw5IEBAIEluaXRTdGFu ZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAogCUluaXRQcm9jZXNzR2xvYmFs cygpOwogCi0JLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGxhdGNoIHN1cHBvcnQgKi8K KwkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQgKi8KIAlJ bml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgp OwotCUluaXRpYWxpemVMYXRjaFdhaXRTZXQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2Fp dFNldCgpOwogCiAJLyoKIAkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBJbml0UG9zdG1hc3Rl ckNoaWxkLCBpbml0aWFsaXplIHNpZ25hbCBtYXNrIGhlcmUuCkBAIC0yMjUsNDggKzIwNyw2 IEBAIEluaXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAkJZ2V0X3Br Z2xpYl9wYXRoKG15X2V4ZWNfcGF0aCwgcGtnbGliX3BhdGgpOwogfQogCi12b2lkCi1Td2l0 Y2hUb1NoYXJlZExhdGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggPT0gJkxvY2FsTGF0 Y2hEYXRhKTsKLQlBc3NlcnQoTXlQcm9jICE9IE5VTEwpOwotCi0JTXlMYXRjaCA9ICZNeVBy b2MtPnByb2NMYXRjaDsKLQotCWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50 KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJ CQlNeUxhdGNoKTsKLQotCS8qCi0JICogU2V0IHRoZSBzaGFyZWQgbGF0Y2ggYXMgdGhlIGxv Y2FsIG9uZSBtaWdodCBoYXZlIGJlZW4gc2V0LiBUaGlzCi0JICogc2hvdWxkbid0IG5vcm1h bGx5IGJlIG5lY2Vzc2FyeSBhcyBjb2RlIGlzIHN1cHBvc2VkIHRvIGNoZWNrIHRoZQotCSAq IGNvbmRpdGlvbiBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIGxhdGNoLCBidXQgYSBiaXQgY2Fy ZSBjYW4ndCBodXJ0LgotCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lkCi1J bml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCkKLXsKLQlNeUxhdGNoID0gJkxvY2FsTGF0Y2hE YXRhOwotCUluaXRMYXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotU3dpdGNoQmFja1RvTG9j YWxMYXRjaCh2b2lkKQotewotCUFzc2VydChNeUxhdGNoICE9ICZMb2NhbExhdGNoRGF0YSk7 Ci0JQXNzZXJ0KE15UHJvYyAhPSBOVUxMICYmIE15TGF0Y2ggPT0gJk15UHJvYy0+cHJvY0xh dGNoKTsKLQotCU15TGF0Y2ggPSAmTG9jYWxMYXRjaERhdGE7Ci0KLQlpZiAoRmVCZVdhaXRT ZXQpCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRMYXRjaFBv cywgV0xfTEFUQ0hfU0VULAotCQkJCQkJTXlMYXRjaCk7Ci0KLQlTZXRMYXRjaChNeUxhdGNo KTsKLX0KLQogLyoKICAqIFJldHVybiBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyByZXByZXNl bnRhdGlvbiBvZiBhIEJhY2tlbmRUeXBlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYwppbmRleCBiNTllMDg2MDVjYy4uNGYxYWE5NGE2NjEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYl9yb2xlX3NldHRpbmcuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvYXV0aC5oIgogI2luY2x1ZGUgImxpYnBxL2xp YnBxLWJlLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTEzNzEsMjAgKzEzNzIs MTkgQEAgU2h1dGRvd25Qb3N0Z3JlcyhpbnQgY29kZSwgRGF0dW0gYXJnKQogc3RhdGljIHZv aWQKIFN0YXRlbWVudFRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JaW50CQkJc2lnID0gU0lH SU5UOwotCiAJLyoKIAkgKiBEdXJpbmcgYXV0aGVudGljYXRpb24gdGhlIHRpbWVvdXQgaXMg dXNlZCB0byBkZWFsIHdpdGgKIAkgKiBhdXRoZW50aWNhdGlvbl90aW1lb3V0IC0gd2Ugd2Fu dCB0byBxdWl0IGluIHJlc3BvbnNlIHRvIHN1Y2ggdGltZW91dHMuCiAJICovCiAJaWYgKENs aWVudEF1dGhJblByb2dyZXNzKQotCQlzaWcgPSBTSUdURVJNOworCQlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKKwllbHNlCisJCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9RVUVSWV9DQU5DRUwpOwogCi0jaWZkZWYgSEFWRV9TRVRTSUQKLQkvKiB0cnkgdG8g c2lnbmFsIHdob2xlIHByb2Nlc3MgZ3JvdXAgKi8KLQlraWxsKC1NeVByb2NQaWQsIHNpZyk7 Ci0jZW5kaWYKLQlraWxsKE15UHJvY1BpZCwgc2lnKTsKKwkvKgorCSAqIEZJWE1FOiB3ZSB1 c2VkIHRvIHNpZ25hbCB0aGUgd2hvbGUgcHJvY2VzcyBncm91cC4gSXMgdGhhdCBpbXBvcnRh bnQsIGlmCisJICogd2UncmUgZS5nLiBleGVjdXRpbmcgYXJjaGl2ZV9jb21tYW5kID8KKwkg Ki8KIH0KIAogLyoKQEAgLTEzOTMsNTEgKzEzOTMsMzcgQEAgU3RhdGVtZW50VGltZW91dEhh bmRsZXIodm9pZCkKIHN0YXRpYyB2b2lkCiBMb2NrVGltZW91dEhhbmRsZXIodm9pZCkKIHsK LSNpZmRlZiBIQVZFX1NFVFNJRAotCS8qIHRyeSB0byBzaWduYWwgd2hvbGUgcHJvY2VzcyBn cm91cCAqLwotCWtpbGwoLU15UHJvY1BpZCwgU0lHSU5UKTsKLSNlbmRpZgotCWtpbGwoTXlQ cm9jUGlkLCBTSUdJTlQpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5D RUwpOwogfQogCiBzdGF0aWMgdm9pZAogVHJhbnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lk KQogewotCVRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQKIElkbGVJ blRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JSWRsZUluVHJh bnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCk7CiB9CiAKIHN0YXRp YyB2b2lkCiBJZGxlU2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JSWRsZVNlc3Np b25UaW1lb3V0UGVuZGluZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0J U2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU0VT U0lPTl9USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQKIElkbGVTdGF0c1VwZGF0ZVRpbWVv dXRIYW5kbGVyKHZvaWQpCiB7Ci0JSWRsZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmcgPSB0 cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9JRExFX1NUQVRTX1RJTUVPVVQpOwogfQogCiBz dGF0aWMgdm9pZAogQ2xpZW50Q2hlY2tUaW1lb3V0SGFuZGxlcih2b2lkKQogewotCUNoZWNr Q2xpZW50Q29ubmVjdGlvblBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0 cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9D TElFTlRfQ0hFQ0tfVElNRU9VVCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3RpbWVvdXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91 dC5jCmluZGV4IGRkYmE1ZGM2MDdjLi4xZjNhZDNkYmY1MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy90aW1lb3V0LmMKQEAgLTE3LDcgKzE3LDYgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgog CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgog I2luY2x1ZGUgInV0aWxzL3RpbWVvdXQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAu aCIKIApAQCAtMzcwLDEyICszNjksNiBAQCBoYW5kbGVfc2lnX2FsYXJtKFNJR05BTF9BUkdT KQogCSAqLwogCUhPTERfSU5URVJSVVBUUygpOwogCi0JLyoKLQkgKiBTSUdBTFJNIGlzIGFs d2F5cyBjYXVzZSBmb3Igd2FraW5nIGFueXRoaW5nIHdhaXRpbmcgb24gdGhlIHByb2Nlc3MK LQkgKiBsYXRjaC4KLQkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKLQogCS8qCiAJICogQWx3 YXlzIHJlc2V0IHNpZ25hbF9wZW5kaW5nLCBldmVuIGlmICFhbGFybV9lbmFibGVkLCBzaW5j ZSBpbmRlZWQgbm8KIAkgKiBzaWduYWwgaXMgbm93IHBlbmRpbmcuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Iv bWN4dC5jCmluZGV4IDA3M2JkYjM1ZDJhLi45OTZjYWUwNWIyNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9tY3h0LmMKQEAgLTEzMTEsMzYgKzEzMTEsMTYgQEAgTWVtb3J5Q29udGV4dEFsbG9jRXh0 ZW5kZWQoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUsIGludCBmbGFncykKIAly ZXR1cm4gcmV0OwogfQogCi0vKgotICogSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVw dAotICoJCUhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGxvZ2dp bmcgb2YgbWVtb3J5Ci0gKgkJY29udGV4dHMuCi0gKgotICogQWxsIHRoZSBhY3R1YWwgd29y ayBpcyBkZWZlcnJlZCB0byBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpLAot ICogYmVjYXVzZSB3ZSBjYW5ub3Qgc2FmZWx5IGVtaXQgYSBsb2cgbWVzc2FnZSBpbnNpZGUg dGhlIHNpZ25hbCBoYW5kbGVyLgotICovCi12b2lkCi1IYW5kbGVMb2dNZW1vcnlDb250ZXh0 SW50ZXJydXB0KHZvaWQpCi17Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JTG9nTWVt b3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCi19Ci0KIC8qCiAgKiBQcm9jZXNzTG9nTWVt b3J5Q29udGV4dEludGVycnVwdAogICogCQlQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNv bnRleHRzIG9mIHRoaXMgYmFja2VuZCBwcm9jZXNzLgogICoKLSAqIEFueSBiYWNrZW5kIHRo YXQgcGFydGljaXBhdGVzIGluIFByb2NTaWduYWwgc2lnbmFsaW5nIG11c3QgYXJyYW5nZQot ICogdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIHdlIHNlZSBMb2dNZW1vcnlDb250ZXh0UGVu ZGluZyBzZXQuCi0gKiBJdCBpcyBjYWxsZWQgZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUygp LCB3aGljaCBpcyBlbm91Z2ggYmVjYXVzZQotICogdGhlIHRhcmdldCBwcm9jZXNzIGZvciBs b2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBpcyBhIGJhY2tlbmQuCisgKiBUaGlzIGlzIHRo ZSBoYW5kbGVyIGZvciBJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhULCBub3JtYWxseSBj YWxsZWQgZnJvbQorICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4KICAqLwogdm9pZAogUHJv Y2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIHsKLQlMb2dNZW1vcnlDb250 ZXh0UGVuZGluZyA9IGZhbHNlOwotCiAJLyoKIAkgKiBFeGl0IGltbWVkaWF0ZWx5IGlmIG1l bW9yeSBjb250ZXh0IGxvZ2dpbmcgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4gVGhpcwogCSAq IHByZXZlbnRzIHJlY3Vyc2l2ZSBjYWxscywgd2hpY2ggY291bGQgb2NjdXIgaWYgbG9nZ2lu ZyBpcyByZXF1ZXN0ZWQKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vc2NyYW0tY29tbW9uLmMg Yi9zcmMvY29tbW9uL3NjcmFtLWNvbW1vbi5jCmluZGV4IDI1OWZhNTU1NGI2Li4wMGI5MmE3 ZmVhMSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9zY3JhbS1jb21tb24uYworKysgYi9zcmMv Y29tbW9uL3NjcmFtLWNvbW1vbi5jCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiY29t bW9uL2htYWMuaCIKICNpbmNsdWRlICJjb21tb24vc2NyYW0tY29tbW9uLmgiCiAjaWZuZGVm IEZST05URU5ECi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgogI2VuZGlmCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9NYWtlZmlsZSBiL3NyYy9pbmNsdWRlL01ha2VmaWxlCmluZGV4 IGFjNjczZjRjZjE3Li5jNDc0ZDZmYmUzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvTWFr ZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvTWFrZWZpbGUKQEAgLTI4LDYgKzI4LDcgQEAgU1VC RElSUyA9IFwKIAlleGVjdXRvciBcCiAJZmVfdXRpbHMgXAogCWZvcmVpZ24gXAorCWlwYyBc CiAJaml0IFwKIAlsaWIgXAogCWxpYnBxIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXgg MDFiZGYyYmVjMWYuLjIxYjBiMGExZWM3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAt NTMsNyArNTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckNvbnRleHQKIAlz aG1fdG9jICAgICp0b2M7CiB9IFBhcmFsbGVsV29ya2VyQ29udGV4dDsKIAotZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbE1lc3NhZ2VQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBQYXJhbGxlbFdvcmtlck51bWJlcjsKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIEluaXRpYWxpemluZ1BhcmFsbGVsV29ya2VyOwogCkBAIC03 MCw3ICs2OSw2IEBAIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0Zpbmlz aChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVs Q29udGV4dChQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxD b250ZXh0QWN0aXZlKHZvaWQpOwogCi1leHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbE1lc3Nh Z2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdl cyh2b2lkKTsKIGV4dGVybiB2b2lkIEF0RU9YYWN0X1BhcmFsbGVsKGJvb2wgaXNDb21taXQp OwogZXh0ZXJuIHZvaWQgQXRFT1N1YlhhY3RfUGFyYWxsZWwoYm9vbCBpc0NvbW1pdCwgU3Vi VHJhbnNhY3Rpb25JZCBteVN1YklkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2FzeW5jLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCmluZGV4IDNiYWFl N2NiOGRjLi5hY2Q5YWZiY2M0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv YXN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCkBAIC0xMywxMSAr MTMsOCBAQAogI2lmbmRlZiBBU1lOQ19ICiAjZGVmaW5lIEFTWU5DX0gKIAotI2luY2x1ZGUg PHNpZ25hbC5oPgotCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBUcmFjZV9ub3RpZnk7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9ub3RpZnlfcXVldWVfcGFnZXM7Ci1leHRlcm4g UEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IG5vdGlmeUludGVycnVwdFBlbmRp bmc7CiAKIGV4dGVybiBTaXplIEFzeW5jU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQg QXN5bmNTaG1lbUluaXQodm9pZCk7CkBAIC00MCw5ICszNyw2IEBAIGV4dGVybiB2b2lkIEF0 U3ViQ29tbWl0X05vdGlmeSh2b2lkKTsKIGV4dGVybiB2b2lkIEF0U3ViQWJvcnRfTm90aWZ5 KHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRQcmVwYXJlX05vdGlmeSh2b2lkKTsKIAotLyogc2ln bmFsIGhhbmRsZXIgZm9yIGluYm91bmQgbm90aWZpZXMgKFBST0NTSUdfTk9USUZZX0lOVEVS UlVQVCkgKi8KLWV4dGVybiB2b2lkIEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKTsKLQog LyogcHJvY2VzcyBpbnRlcnJ1cHRzICovCiBleHRlcm4gdm9pZCBQcm9jZXNzTm90aWZ5SW50 ZXJydXB0KGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9pcGMvaW50 ZXJydXB0LmggYi9zcmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIzOWQ1OGY3NTk3Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL2luY2x1ZGUvaXBjL2ludGVycnVwdC5oCkBAIC0wLDAgKzEsMzcwIEBACisvKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBpbnRlcnJ1cHQuaAorICoJICBJbnRlci1wcm9j ZXNzIGludGVycnVwdHMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy NCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2luY2x1ZGUvaXBjL2ludGVy cnVwdC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmbmRlZiBJUENf SU5URVJSVVBUX0gKKyNkZWZpbmUgSVBDX0lOVEVSUlVQVF9ICisKKyNpbmNsdWRlICJwb3J0 L2F0b21pY3MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKKworLyoKKyAq IEluY2x1ZGUgd2FpdGV2ZW50c2V0LmggZm9yIHRoZSBXTF8qIGZsYWdzLiBUaGV5J3JlIG5v dCBuZWVkZWQgaGVyLCBidXQgYXJlCisgKiBuZWVkZWQgd2hpY2ggYXJlIG5lZWRlZCBieSBh bGwgY2FsbGVycyBvZiBXYWl0SW50ZXJydXB0LCBzbyBpbmNsdWRlIGl0CisgKiBoZXJlLgor ICoKKyAqIE5vdGU6IEludGVycnVwdE1hc2sgaXMgZGVmaW5kIGluIHdhaXRldmVudHNldC5o IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kKKyAqLworI2luY2x1ZGUgInN0b3JhZ2Uv d2FpdGV2ZW50c2V0LmgiCisKKworLyoKKyAqIEZsYWdzIGluIHRoZSBwZW5kaW5nIGludGVy cnVwdHMgYml0bWFzay4gRWFjaCB2YWx1ZSBpcyBhIGRpZmZlcmVudCBiaXQsIHNvIHRoYXQK KyAqIHRoZXNlIGNhbiBiZSBjb252ZW5pZW50bHkgT1InZCB0b2dldGhlci4KKyAqLworI2Rl ZmluZSBVSU5UNjRfQklUKHNoaWZ0KSAoVUlOVDY0X0MoMSkgPDwgKHNoaWZ0KSkKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiBCZWdpbiBkZWZpbml0aW9ucyBvZiBidWlsdC1pbiBpbnRl cnJ1cHQgYml0cworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogSU5URVJSVVBUX1dB SVRfV0FLRVVQIGlzIHNoYXJlZCBieSBtYW55IHVzZSBjYXNlcyB0aGF0IG5lZWQgdG8gd2Fr ZSB1cAorICogYSBwcm9jZXNzLCB3aGljaCBkb24ndCBuZWVkIGEgZGVkaWNhdGVkIGludGVy cnVwdCBiaXQuCisgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1dBSVRfV0FLRVVQCQkJCQlVSU5U NjRfQklUKDApCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTdGFuZGFyZCBpbnRlcnJ1 cHRzIGhhbmRsZWQgdGhlIHNhbWUgYnkgbW9zdCBwcm9jZXNzZXMKKyAqCisgKiBNb3N0IG9m IHRoZXNlIGFyZSBub3JtYWxseSBwcm9jZXNzZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSBvbmNlCisgKiBwcm9jZXNzIHN0YXJ0dXAgaGFzIHJlYWNoZWQgU2V0U3RhbmRhcmRJbnRl cnJ1cHRzKCkuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBCYWNrZW5kIGhhcyBi ZWVuIHJlcXVlc3RlZCB0byB0ZXJtaW5hdGUgZ3JhY2VmdWxseS4KKyAqCisgKiBUaGlzIGlz IHJhaXNlZCBieSB0aGUgU0lHVEVSTSBzaWduYWwgaGFuZGxlciwgb3IgY2FuIGJlIHNlbnQg ZGlyZWN0bHkgYnkKKyAqIGFub3RoZXIgYmFja2VuZCBlLmcuIHdpdGggcGdfdGVybWluYXRl X2JhY2tlbmQoKS4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfVEVSTUlOQVRFCQkJCQkJVUlO VDY0X0JJVCgxKQorCisvKgorICogQ2FuY2VsIGN1cnJlbnQgcXVlcnksIGlmIGFueS4KKyAq CisgKiBTZW50IHRvIHJlZ3VsYXIgYmFja2VuZHMgYnkgcGdfY2FuY2VsX2JhY2tlbmQoKSwg U0lHSU5ULCBvciBpbiByZXNwb25zZSB0bworICogYSBxdWVyeSBjYW5jZWxsYXRpb24gcGFj a2V0LiAgU29tZSBvdGhlciBwcm9jZXNzZXMgbGlrZSBhdXRvdmFjdXVtIHdvcmtlcnMKKyAq IGFuZCBsb2dpY2FsIGRlY29kaW5nIHByb2Nlc3NlcyBhbHNvIHJlYWN0IHRvIHRoaXMuCisg Ki8KKyNkZWZpbmUgSU5URVJSVVBUX1FVRVJZX0NBTkNFTAkJCQkJVUlOVDY0X0JJVCgyKQor CisvKgorICogUmVjb3ZlcnkgY29uZmxpY3QuIFRoaXMgaXMgc2VudCBieSB0aGUgc3RhcnR1 cCBwcm9jZXNzIGluIGhvdCBzdGFuZGJ5IG1vZGUKKyAqIHdoZW4gYSBiYWNrZW5kIGhvbGRz IGJhY2sgdGhlIFdBTCByZXBsYXkgZm9yIHRvbyBsb25nLiBUaGUgcmVhc29uIGZvciB0aGUK KyAqIGNvbmZsaWN0IGluZGljYXRlZCBieSB0aGUgUEdQUk9DLT5wZW5kaW5nUmVjb3ZlcnlD b25mbGljdHMKKyAqIGJpdG1hc2suIENvbmZsaWN0cyBhcmUgZ2VuZXJhbGx5IHJlc29sdmVk IGJ5IHRlcm1pbmF0aW5nIHRoZSBjdXJyZW50IHF1ZXJ5CisgKiBvciBzZXNzaW9uLiBUaGUg ZXhhY3QgcmVhY3Rpb24gZGVwZW5kcyBvbiB0aGUgcmVhc29uIGFuZCB3aGF0IHN0YXRlIHRo ZQorICogYmFja2VuZCBpcyBpbi4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1QgCQkJVUlOVDY0X0JJVCgzKQorCisvKgorICogQ29uZmlnIGZpbGUgcmVsb2Fk IGlzIHJlcXVlc3RlZC4KKyAqCisgKiBUaGlzIGlzIG5vcm1hbGx5IGRpc2FibGVkIGFuZCB0 aGVyZWZvcmUgbm90IGhhbmRsZWQgYXQKKyAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuIFRo ZSAibWFpbiBsb29wIiBpbiBlYWNoIHByb2Nlc3MgaXMgZXhwZWN0ZWQgdG8KKyAqIGNoZWNr IGZvciBpdCBleHBsaWNpdGx5LgorICovCisjZGVmaW5lIElOVEVSUlVQVF9DT05GSUdfUkVM T0FECQkJCQlVSU5UNjRfQklUKDQpCisKKy8qCisgKiBMb2cgY3VycmVudCBtZW1vcnkgY29u dGV4dHMsIHNlbnQgYnkgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkKKyAqLwor I2RlZmluZSBJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUIAkJCVVJTlQ2NF9CSVQoNSkK KworLyoKKyAqIHByb2NzaWduYWwgZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0CisgKi8KKyNk ZWZpbmUgSU5URVJSVVBUX0JBUlJJRVIJCQkJCQlVSU5UNjRfQklUKDYpCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiBJbnRlcnJ1cHRzIHVzZWQgYnkgY2xpZW50IGJhY2tlbmRzIGFu ZCBtb3N0IG90aGVyIHByb2Nlc3NlcyB0aGF0CisgKiBjb25uZWN0IHRvIGEgcGFydGljdWxh ciBkYXRhYmFzZS4KKyAqCisgKiBNb3N0IG9mIHRoZXNlIGFyZSBhbHNvIHByb2Nlc3NlZCBi eSBDSEVDS19GT1JfSU5URVJSVVBUUygpIG9uY2UgcHJvY2VzcworICogc3RhcnR1cCBoYXMg cmVhY2hlZCBTZXRTdGFuZGFyZEludGVycnVwdHMoKS4KKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworLyogUmFpc2VkIGJ5IHRpbWVycyAqLworI2RlZmluZSBJTlRFUlJVUFRfVFJBTlNBQ1RJ T05fVElNRU9VVAkJCVVJTlQ2NF9CSVQoNykKKyNkZWZpbmUgSU5URVJSVVBUX0lETEVfU0VT U0lPTl9USU1FT1VUCQkJVUlOVDY0X0JJVCg4KQorI2RlZmluZSBJTlRFUlJVUFRfSURMRV9J Tl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQgVUlOVDY0X0JJVCg5KQorI2RlZmluZSBJ TlRFUlJVUFRfQ0xJRU5UX0NIRUNLX1RJTUVPVVQJCQlVSU5UNjRfQklUKDEwKQorCisvKiBS YWlzZWQgYnkgdGltZXIgd2hpbGUgaWRsZSwgdG8gc2VuZCBhIHN0YXRzIHVwZGF0ZSAqLwor I2RlZmluZSBJTlRFUlJVUFRfSURMRV9TVEFUU19USU1FT1VUCQkJVUlOVDY0X0JJVCgxMSkK KworLyogUmFpc2VkIHN5bmNocm9ub3VzbHkgd2hlbiB0aGUgY2xpZW50IGNvbm5lY3Rpb24g aXMgbG9zdCAqLworI2RlZmluZSBJTlRFUlJVUFRfQ0xJRU5UX0NPTk5FQ1RJT05fTE9TVAkJ IFVJTlQ2NF9CSVQoMTIpCisKKy8qCisgKiBJTlRFUlJVUFRfQVNZTkNfTk9USUZZIGlzIHNl bnQgdG8gbm90aWZ5IGJhY2tlbmRzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHRvCisgKiBMSVNU RU4gb24gYW55IGNoYW5uZWxzIHRoYXQgdGhleSBtaWdodCBoYXZlIG1lc3NhZ2VzIHRoZXkg bmVlZCB0byBkZWxpdmVyCisgKiB0byB0aGUgZnJvbnRlbmQuIEl0IGlzIGFsc28gcHJvY2Vz c2VkIHdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJlYWQgZnJvbSB0aGUKKyAqIGNsaWVudCBvciB3 aGlsZSBkb2luZyBzbywgYnV0IG9ubHkgd2hlbiB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBp bgorICogcHJvZ3Jlc3MuCisgKi8KKyNkZWZpbmUgSU5URVJSVVBUX0FTWU5DX05PVElGWQkJ CQkJVUlOVDY0X0JJVCgxMykKKworLyoKKyAqIEJlY2F1c2UgYmFja2VuZHMgc2l0dGluZyBp ZGxlIHdpbGwgbm90IGJlIHJlYWRpbmcgc2ludmFsIGV2ZW50cywgd2UgbmVlZCBhCisgKiB3 YXkgdG8gZ2l2ZSBhbiBpZGxlIGJhY2tlbmQgYSBzd2lmdCBraWNrIGluIHRoZSByZWFyIGFu ZCBtYWtlIGl0IGNhdGNoIHVwCisgKiBiZWZvcmUgdGhlIHNpbnZhbCBxdWV1ZSBvdmVyZmxv d3MgYW5kIGZvcmNlcyBpdCB0byBnbyB0aHJvdWdoIGEgY2FjaGUgcmVzZXQKKyAqIGV4ZXJj aXNlLiAgVGhpcyBpcyBkb25lIGJ5IHNlbmRpbmcgSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQ IHRvIGFueSBiYWNrZW5kCisgKiB0aGF0IGdldHMgdG9vIGZhciBiZWhpbmQuCisgKgorICog VGhlIGludGVycnVwdCBpcyBwcm9jZXNzZWQgd2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBm cm9tIHRoZSBjbGllbnQsIG9yCisgKiB3aGVuIGludGVycnVwdGVkIHdoaWxlIGRvaW5nIHNv LgorICovCisjZGVmaW5lIElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUAkJCQlVSU5UNjRfQklU KDE0KQorCisvKiBNZXNzYWdlIGZyb20gYSBjb29wZXJhdGluZyBwYXJhbGxlbCBiYWNrZW5k IG9yIGFwcGx5IHdvcmtlciAqLworI2RlZmluZSBJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FH RQkJCQlVSU5UNjRfQklUKDE1KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUHJvY2Vz cy1zcGVjaWZpYyBpbnRlcnJ1cHRzCisgKgorICogU29tZSBwcm9jZXNzZXMgbmVlZCBkZWRp Y2F0ZWQgaW50ZXJydXB0cyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4gIElnbm9yZWQKKyAqIGJ5 IG90aGVyIHByb2Nlc3Nlcy4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogYXNrIHdhbHNl bmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCisjZGVmaW5lIElOVEVSUlVQVF9X QUxTTkRfSU5JVF9TVE9QUElORwkJCVVJTlQ2NF9CSVQoMTYpCisKKy8qIFRPRE86IGRvY3Vt ZW50IHRoZSBkaWZmZXJlbmNlIHdpdGggSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5H ICovCisjZGVmaW5lIElOVEVSUlVQVF9XQUxTTkRfU1RPUAkJCQkJVUlOVDY0X0JJVCgxNykK KworLyoKKyAqIElOVEVSUlVQVF9XQUxfQVJSSVZFRCBpcyB1c2VkIHRvIHdha2UgdXAgdGhl IHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVsbAorICogaXQgdGhhdCBpdCBzaG91bGQgY29udGlu dWUgV0FMIHJlcGxheS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCisgKiBtb3Jl IFdBTCBhcnJpdmVzLCBvciB3aGVuIHByb21vdGlvbiBpcyByZXF1ZXN0ZWQuCisgKi8KKyNk ZWZpbmUgSU5URVJSVVBUX1dBTF9BUlJJVkVECQkJCQlVSU5UNjRfQklUKDE4KQorCisvKiBX YWtlIHVwIHN0YXJ0dXAgcHJvY2VzcyB0byBjaGVjayBmb3IgdGhlIHByb21vdGlvbiBzaWdu YWwgZmlsZSAqLworI2RlZmluZSBJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URQkJCQkJVUlOVDY0 X0JJVCgxOSkKKworLyogc2VudCB0byBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyLCB3 aGVuIGEgc3Vic2NyaXB0aW9uIGNoYW5nZXMgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1NVQlND UklQVElPTl9DSEFOR0UJCQlVSU5UNjRfQklUKDIwKQorCisvKiBHcmFjZWZ1bCBzaHV0ZG93 biByZXF1ZXN0IGZvciBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworI2RlZmluZSBJTlRF UlJVUFRfU0hVVERPV05fUEFSQUxMRUxfQVBQTFlfV09SS0VSIFVJTlQ2NF9CSVQoMjEpCisK Ky8qIFJlcXVlc3QgY2hlY2twb2ludGVyIHRvIHBlcmZvcm0gb25lIGxhc3QgY2hlY2twb2lu dCwgdGhlbiBzaHV0IGRvd24uICovCisjZGVmaW5lIElOVEVSUlVQVF9TSFVURE9XTl9YTE9H CQkJCQlVSU5UNjRfQklUKDIyKQorCisjZGVmaW5lIElOVEVSUlVQVF9TSFVURE9XTl9QR0FS Q0gJCQkJVUlOVDY0X0JJVCgyMykKKworLyoKKyAqIFRoaXMgaXMgc2VudCB0byB0aGUgYXV0 b3ZhY3V1bSBsYXVuY2hlciB3aGVuIGFuIGF1dG92YWN1dW0gd29ya2VyIGV4aXRzCisgKi8K KyNkZWZpbmUgSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVEIAlVSU5UNjRf QklUKDI0KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRW5kIG9mIGJ1aWx0LWluIGlu dGVycnVwdCBiaXRzCisgKgorICogVGhlIHJlbWFpbmluZyBiaXRzIGFyZSBoYW5kZWQgb3V0 IGJ5IFJlcXVlc3RBZGRpbkludGVycnVwdCwgZm9yCisgKiBleHRlbnNpb25zCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisjZGVmaW5lIEJFR0lOX0FERElOX0lOVEVSUlVQVFMgMjUKKyNkZWZp bmUgRU5EX0FERElOX0lOVEVSUlVQVFMgNjMKKworLyoKKyAqIFNMRUVQSU5HX09OX0lOVEVS UlVQVFMgaW5kaWNhdGVzIHRoYXQgdGhlIGJhY2tlbmQgaXMgY3VycmVudGx5IGJsb2NrZWQK KyAqIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdC4gIElmIHNldCwgdGhlIGJhY2tlbmQgbmVl ZHMgdG8gYmUgd29rZW4gdXAgd2hlbiBhCisgKiBiaXQgaW4gdGhlIHBlbmRpbmcgaW50ZXJy dXB0cyBtYXNrIGlzIHNldC4gIEl0J3MgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZQorICogaW50 ZXJydXB0IG1hY2hpbmVyeSwgYW5kIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGluIHRoZSBw dWJsaWMgZnVuY3Rpb25zLgorICogSXQncyBuYW1lZCBkaWZmZXJlbnRseSB0byBkaXN0aW5n dWlzaCBpdCBmcm9tIHRoZSBhY3R1YWwgaW50ZXJydXB0IGZsYWdzLgorICovCisjZGVmaW5l IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgVUlOVDY0X0JJVCg2MykKKworZXh0ZXJuIFBHRExM SU1QT1JUIHBnX2F0b21pY191aW50NjQgKk15UGVuZGluZ0ludGVycnVwdHM7CisKKy8qCisg KiBUZXN0IGFuIGludGVycnVwdCBmbGFnIChvciBmbGFncykuCisgKi8KK3N0YXRpYyBpbmxp bmUgYm9vbAorSW50ZXJydXB0UGVuZGluZyhJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2sp Cit7CisJLyoKKwkgKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gbWVtb3J5IGJhcnJpZXIgaGVy ZS4gVGhpcyBpcyB1c2VkIGluCisJICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgc28gd2Ug d2FudCB0aGlzIHRvIGJlIGFzIGNoZWFwIGFzIHBvc3NpYmxlLgorCSAqCisJICogVGhhdCBt ZWFucyB0aGF0IGlmIHRoZSBpbnRlcnJ1cHQgaXMgY29uY3VycmVudGx5IHNldCBieSBhbm90 aGVyCisJICogcHJvY2Vzcywgd2UgbWlnaHQgbWlzcyBpdC4gVGhhdCBzaG91bGQgYmUgT0ss IGJlY2F1c2UgdGhlIG5leHQKKwkgKiBXYWl0SW50ZXJydXB0KCkgb3IgZXF1aXZhbGVudCBj YWxsIGFjdHMgYXMgYSBzeW5jaHJvbml6YXRpb24gYmFycmllci4KKwkgKiBXZSB3aWxsIHNl ZSB0aGUgdXBkYXRlZCB2YWx1ZSBiZWZvcmUgc2xlZXBpbmcuCisJICovCisJcmV0dXJuIChw Z19hdG9taWNfcmVhZF91NjQoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBpbnRlcnJ1cHRNYXNr KSAhPSAwOworfQorCisvKgorICogQ2xlYXIgYW4gaW50ZXJydXB0IGZsYWcgKG9yIGZsYWdz KS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitDbGVhckludGVycnVwdChJbnRlcnJ1cHRN YXNrIGludGVycnVwdE1hc2spCit7CisJcGdfYXRvbWljX2ZldGNoX2FuZF91NjQoTXlQZW5k aW5nSW50ZXJydXB0cywgfmludGVycnVwdE1hc2spOworfQorCisvKgorICogVGVzdCBhbmQg Y2xlYXIgYW4gaW50ZXJydXB0IGZsYWcgKG9yIGZsYWdzKS4KKyAqLworc3RhdGljIGlubGlu ZSBib29sCitDb25zdW1lSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykK K3sKKwlpZiAobGlrZWx5KCFJbnRlcnJ1cHRQZW5kaW5nKGludGVycnVwdE1hc2spKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJQ2xlYXJJbnRlcnJ1cHQoaW50ZXJydXB0TWFzayk7CisJcmV0 dXJuIHRydWU7Cit9CisKK2V4dGVybiB2b2lkIFJhaXNlSW50ZXJydXB0KEludGVycnVwdE1h c2sgaW50ZXJydXB0TWFzayk7CitleHRlcm4gdm9pZCBTZW5kSW50ZXJydXB0KEludGVycnVw dE1hc2sgaW50ZXJydXB0TWFzaywgUHJvY051bWJlciBwZ3Byb2Nubyk7CitleHRlcm4gaW50 CVdhaXRJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2 ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJCQkJICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsK K2V4dGVybiBpbnQJV2FpdEludGVycnVwdE9yU29ja2V0KEludGVycnVwdE1hc2sgaW50ZXJy dXB0TWFzaywgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ssCisJCQkJCQkJCSAgbG9u ZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKK2V4dGVybiB2b2lkIFN3aXRj aFRvTG9jYWxJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgU3dpdGNoVG9TaGFyZWRJ bnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUludGVycnVwdFdhaXRT ZXQodm9pZCk7CisKK3R5cGVkZWYgdm9pZCAoKnBnX2ludGVycnVwdF9oYW5kbGVyX3QpICh2 b2lkKTsKK2V4dGVybiB2b2lkIFNldEludGVycnVwdEhhbmRsZXIoSW50ZXJydXB0TWFzayBp bnRlcnJ1cHRNYXNrLCBwZ19pbnRlcnJ1cHRfaGFuZGxlcl90IGhhbmRsZXIpOworCitleHRl cm4gdm9pZCBFbmFibGVJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKTsK K2V4dGVybiB2b2lkIERpc2FibGVJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRN YXNrKTsKKworLyogZm9yIGV4dGVuc2lvbnMgKi8KK2V4dGVybiBJbnRlcnJ1cHRNYXNrIFJl cXVlc3RBZGRpbkludGVycnVwdCh2b2lkKTsKKworLyogU3RhbmRhcmQgaW50ZXJydXB0IGhh bmRsZXJzLiBEZWZpbmVkIGluIHRjb3AvcG9zdGdyZXMuYyAqLworZXh0ZXJuIHZvaWQgU2V0 U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycyh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUHJvY2Vz c1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc1Rlcm1p bmF0ZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NDb25maWdSZWxvYWRJ bnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzQXN5bmNOb3RpZnlJbnRlcnJ1 cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzSWRsZVN0YXRzVGltZW91dEludGVycnVw dCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0 cyh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NUcmFuc2FjdGlvblRpbWVvdXRJbnRlcnJ1 cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzSWRsZVNlc3Npb25UaW1lb3V0SW50ZXJy dXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0lkbGVJblRyYW5zYWN0aW9uU2Vzc2lv blRpbWVvdXRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50Q2hl Y2tUaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudENv bm5lY3Rpb25Mb3N0KHZvaWQpOworCitleHRlcm4gdm9pZCBQcm9jZXNzQXV4UHJvY2Vzc1No dXRkb3duSW50ZXJydXB0KHZvaWQpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoJICBDSEVDS19GT1JfSU5URVJSVVBUUygpIGFuZCBmcmllbmRzCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIEludGVycnVw dE1hc2sgRW5hYmxlZEludGVycnVwdHNNYXNrOworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIEludGVycnVwdE1hc2sgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzazsKKworZXh0ZXJuIHZv aWQgUHJvY2Vzc0ludGVycnVwdHModm9pZCk7CisKKy8qIFRlc3Qgd2hldGhlciBhbiBpbnRl cnJ1cHQgaXMgcGVuZGluZyAqLworI2lmbmRlZiBXSU4zMgorI2RlZmluZSBJTlRFUlJVUFRT X1BFTkRJTkdfQ09ORElUSU9OKG1hc2spIFwKKwkodW5saWtlbHkoSW50ZXJydXB0UGVuZGlu ZyhtYXNrKSkpCisjZWxzZQorI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9O KG1hc2spIFwKKwkodW5saWtlbHkoVU5CTE9DS0VEX1NJR05BTF9RVUVVRSgpKSA/IFwKKwkg cGd3aW4zMl9kaXNwYXRjaF9xdWV1ZWRfc2lnbmFscygpIDogKHZvaWQpIDAsCVwKKwkgdW5s aWtlbHkoSW50ZXJydXB0UGVuZGluZyhtYXNrKSkpCisjZW5kaWYKKworLyoKKyAqIElzIFBy b2Nlc3NJbnRlcnJ1cHRzKCkgZ3VhcmFudGVlZCB0byBjbGVhciBhbGwgdGhlIGJpdHMgaW4g J21hc2snPworICoKKyAqIChUaGUgaW50ZXJydXB0IGhhbmRsZXIgbWF5IHJlLXJhaXNlIHRo ZSBpbnRlcnJ1cHQsIHRob3VnaCkKKyAqLworI2RlZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9Q Uk9DRVNTRUQobWFzaykgXAorCSgoKG1hc2spICYgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykg PT0gKG1hc2spKQorCisvKiBTZXJ2aWNlIGludGVycnVwdCwgaWYgb25lIGlzIHBlbmRpbmcg YW5kIGl0J3Mgc2FmZSB0byBzZXJ2aWNlIGl0IG5vdyAqLworI2RlZmluZSBDSEVDS19GT1Jf SU5URVJSVVBUUygpCQkJCQlcCitkbyB7IFwKKwlpZiAoSU5URVJSVVBUU19QRU5ESU5HX0NP TkRJVElPTihDaGVja0ZvckludGVycnVwdHNNYXNrKSkgXAorCQlQcm9jZXNzSW50ZXJydXB0 cygpOwkJCQkJCQkJCQkJXAorfSB3aGlsZSgwKQorCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoJICBDcml0aWNhbCBzZWN0aW9uIGFuZCBpbnRlcnJ1cHQgaG9sZG9mZiBtZWNo YW5pc20KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogdGhlc2UgYXJlIG1hcmtl ZCB2b2xhdGlsZSBiZWNhdXNlIHRoZXkgYXJlIGV4YW1pbmVkIGJ5IHNpZ25hbCBoYW5kbGVy czogKi8KKy8qCisgKiBYWFg6IGlzIHRoYXQgc3RpbGwgdHJ1ZT8gU2hvdWxkIHdlIHVzZSBs b2NhbCB2YXJzIHRvIGF2b2lkIHJlcGVhdGVkIGFjY2VzcworICogZS5nLiBpbnNpZGUgUkVT VU1FX0lOVEVSUlVQVFMoKSA/CisgKi8KK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1 aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50OworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0 aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50OworCitzdGF0aWMgaW5saW5lIHZvaWQKK0hP TERfSU5URVJSVVBUUyh2b2lkKQoreworCUludGVycnVwdEhvbGRvZmZDb3VudCsrOworCUNo ZWNrRm9ySW50ZXJydXB0c01hc2sgPSAoSW50ZXJydXB0TWFzaykgMDsKK30KKworc3RhdGlj IGlubGluZSB2b2lkCitSRVNVTUVfSU5URVJSVVBUUyh2b2lkKQoreworCUFzc2VydChDaGVj a0ZvckludGVycnVwdHNNYXNrID09IDApOworCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291 bnQgPiAwKTsKKwlJbnRlcnJ1cHRIb2xkb2ZmQ291bnQtLTsKKwlpZiAoSW50ZXJydXB0SG9s ZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9PSAwKQorCQlDaGVja0Zvcklu dGVycnVwdHNNYXNrID0gRW5hYmxlZEludGVycnVwdHNNYXNrOworCWVsc2UKKwkJQXNzZXJ0 KENoZWNrRm9ySW50ZXJydXB0c01hc2sgPT0gMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZAorU1RBUlRfQ1JJVF9TRUNUSU9OKHZvaWQpCit7CisJQ3JpdFNlY3Rpb25Db3VudCsrOwor CUNoZWNrRm9ySW50ZXJydXB0c01hc2sgPSAwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQK K0VORF9DUklUX1NFQ1RJT04odm9pZCkKK3sKKwlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA+ IDApOworCUNyaXRTZWN0aW9uQ291bnQtLTsKKwlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50 ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9PSAwKQorCQlDaGVja0ZvckludGVycnVwdHNN YXNrID0gRW5hYmxlZEludGVycnVwdHNNYXNrOworCWVsc2UKKwkJQXNzZXJ0KENoZWNrRm9y SW50ZXJydXB0c01hc2sgPT0gMCk7Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBJUENfSU5URVJS VVBUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvaW50ZXJydXB0 LmggYi9zcmMvaW5jbHVkZS9pcGMvc2lnbmFsX2hhbmRsZXJzLmgKc2ltaWxhcml0eSBpbmRl eCA4MiUKcmVuYW1lIGZyb20gc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaApy ZW5hbWUgdG8gc3JjL2luY2x1ZGUvaXBjL3NpZ25hbF9oYW5kbGVycy5oCmluZGV4IGUxNDgy NjI2ZGZkLi5jYmU5MTQzY2ZkZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9pcGMvc2lnbmFsX2hhbmRsZXJzLmgK QEAgLTIxLDEyICsyMSwxMCBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKLWV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZzsK LWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgU2h1dGRvd25SZXF1 ZXN0UGVuZGluZzsKLQotZXh0ZXJuIHZvaWQgUHJvY2Vzc01haW5Mb29wSW50ZXJydXB0cyh2 b2lkKTsKK2V4dGVybiB2b2lkIFNldFBvc3RtYXN0ZXJDaGlsZFNpZ25hbEhhbmRsZXJzKHZv aWQpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZChTSUdOQUxf QVJHUyk7CiBleHRlcm4gdm9pZCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9B UkdTKTsKIGV4dGVybiB2b2lkIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QoU0lH TkFMX0FSR1MpOworZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvclF1ZXJ5Q2FuY2VsKFNJ R05BTF9BUkdTKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9s aWJwcS1iZS1mZS1oZWxwZXJzLmggYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1o ZWxwZXJzLmgKaW5kZXggODVkOGI2M2YwMTkuLjUzZDgwZjQwZDEwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oCkBAIC0zMCwxMCArMzAsOSBAQAogI2lm bmRlZiBMSUJQUV9CRV9GRV9IRUxQRVJTX0gKICNkZWZpbmUgTElCUFFfQkVfRkVfSEVMUEVS U19ICiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvbGli cHEtYmUtZmUuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL3Rp bWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAtMTY3LDgg KzE2Niw4IEBAIGxpYnBxc3J2X2Nvbm5lY3RfaW50ZXJuYWwoUEdjb25uICpjb25uLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIFdhaXRMYXRjaE9y U29ja2V0KCkgY2FuIGNvbmNlaXZhYmx5IGZhaWwsIGhhbmRsZSB0aGF0IGNhc2UgaGVyZSBp bnN0ZWFkCi0JICogb2YgcmVxdWlyaW5nIGFsbCBjYWxsZXJzIHRvIGRvIHNvLgorCSAqIFdh aXRJbnRlcnJ1cHRPclNvY2tldCgpIGNhbiBjb25jZWl2YWJseSBmYWlsLCBoYW5kbGUgdGhh dCBjYXNlIGhlcmUKKwkgKiBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbGwgY2FsbGVycyB0byBk byBzby4KIAkgKi8KIAlQR19UUlkoKTsKIAl7CkBAIC0xOTksMTggKzE5OCwxNSBAQCBsaWJw cXNydl9jb25uZWN0X2ludGVybmFsKFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRfZXZlbnRf aW5mbykKIAkJCWVsc2UKIAkJCQlpb19mbGFnID0gV0xfU09DS0VUX1dSSVRFQUJMRTsKIAot CQkJcmMgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCQkgICBXTF9FWElU X09OX1BNX0RFQVRIIHwgV0xfTEFUQ0hfU0VUIHwgaW9fZmxhZywKLQkJCQkJCQkJICAgUFFz b2NrZXQoY29ubiksCi0JCQkJCQkJCSAgIDAsCi0JCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5m byk7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldChDaGVja0ZvckludGVycnVwdHNN YXNrLAorCQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8 IGlvX2ZsYWcsCisJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJCSAgIDAs CisJCQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOwogCiAJCQkvKiBJbnRlcnJ1cHRlZD8g Ki8KLQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCXsKLQkJCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7Ci0JCQl9CiAKIAkJCS8qIElmIHNvY2tldCBpcyByZWFkeSwgYWR2YW5jZSB0 aGUgbGlicHEgc3RhdGUgbWFjaGluZSAqLwogCQkJaWYgKHJjICYgaW9fZmxhZykKQEAgLTMy MCwxOSArMzE2LDE2IEBAIGxpYnBxc3J2X2dldF9yZXN1bHQoUEdjb25uICpjb25uLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvKQogCXsKIAkJaW50CQkJcmM7CiAKLQkJcmMgPSBXYWl0TGF0 Y2hPclNvY2tldChNeUxhdGNoLAotCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBX TF9MQVRDSF9TRVQgfAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKLQkJCQkJCQkg ICBQUXNvY2tldChjb25uKSwKLQkJCQkJCQkgICAwLAotCQkJCQkJCSAgIHdhaXRfZXZlbnRf aW5mbyk7CisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KENoZWNrRm9ySW50ZXJydXB0 c01hc2ssCisJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9JTlRFUlJVUFQg fAorCQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCisJCQkJCQkJCSAgIFBRc29ja2V0 KGNvbm4pLAorCQkJCQkJCQkgICAwLAorCQkJCQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOwog CiAJCS8qIEludGVycnVwdGVkPyAqLwotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCXsK LQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KIAogCQkvKiBDb25zdW1lIHdoYXRldmVy IGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldCAqLwogCQlpZiAoUFFjb25zdW1l SW5wdXQoY29ubikgPT0gMCkKQEAgLTM4Niw3ICszNzksNyBAQCBsaWJwcXNydl9jYW5jZWwo UEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJUG9zdGdyZXNQb2xsaW5n U3RhdHVzVHlwZSBwb2xscmVzOwogCQkJVGltZXN0YW1wVHogbm93OwogCQkJbG9uZwkJY3Vy X3RpbWVvdXQ7Ci0JCQlpbnQJCQl3YWl0RXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCQlpbnQJCQl3YWl0RXZlbnRzID0gV0xf SU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CiAKIAkJCXBv bGxyZXMgPSBQUWNhbmNlbFBvbGwoY2FuY2VsX2Nvbm4pOwogCQkJaWYgKHBvbGxyZXMgPT0g UEdSRVNfUE9MTElOR19PSykKQEAgLTQxNSwxMCArNDA4LDkgQEAgbGlicHFzcnZfY2FuY2Vs KFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCX0KIAogCQkJLyogU2xl ZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCVdhaXRMYXRjaE9yU29j a2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwK LQkJCQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0NMSUVOVCk7Ci0KLQkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisJCQlXYWl0SW50ZXJydXB0T3JTb2NrZXQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzaywgd2FpdEV2ZW50cywKKwkJCQkJCQkJICBQUWNhbmNlbFNvY2tldChjYW5jZWxf Y29ubiksCisJCQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBHX1dBSVRfQ0xJRU5UKTsKIAogCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bGlicHEvbGlicHEuaCBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKaW5kZXggNDEyYmM5 NzU4ZmIuLjM1ZmJmZjlhNzYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJw cS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKQEAgLTE4LDcgKzE4LDcgQEAK IAogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEt YmUuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93 YWl0ZXZlbnRzZXQuaCIKIAogCiAvKgpAQCAtNjEsNyArNjEsNyBAQCBleHRlcm4gY29uc3Qg UEdETExJTVBPUlQgUFFjb21tTWV0aG9kcyAqUHFDb21tTWV0aG9kczsKIGV4dGVybiBQR0RM TElNUE9SVCBXYWl0RXZlbnRTZXQgKkZlQmVXYWl0U2V0OwogCiAjZGVmaW5lIEZlQmVXYWl0 U2V0U29ja2V0UG9zIDAKLSNkZWZpbmUgRmVCZVdhaXRTZXRMYXRjaFBvcyAxCisjZGVmaW5l IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zIDEKICNkZWZpbmUgRmVCZVdhaXRTZXRORXZlbnRz IDMKIAogZXh0ZXJuIGludAlMaXN0ZW5TZXJ2ZXJQb3J0KGludCBmYW1pbHksIGNvbnN0IGNo YXIgKmhvc3ROYW1lLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oIGIv c3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oCmluZGV4IGM2MmZmZmI1OTk4Li4zYmEyYjgyYjNh OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oCisrKyBiL3NyYy9pbmNs dWRlL2xpYnBxL3BxbXEuaApAQCAtMTcsNyArMTcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv c2htX21xLmgiCiAKIGV4dGVybiB2b2lkIHBxX3JlZGlyZWN0X3RvX3NobV9tcShkc21fc2Vn bWVudCAqc2VnLCBzaG1fbXFfaGFuZGxlICptcWgpOwotZXh0ZXJuIHZvaWQgcHFfc2V0X3Bh cmFsbGVsX2xlYWRlcihwaWRfdCBwaWQsIFByb2NOdW1iZXIgcHJvY051bWJlcik7CitleHRl cm4gdm9pZCBwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKFByb2NOdW1iZXIgcHJvY051bWJlcik7 CiAKIGV4dGVybiB2b2lkIHBxX3BhcnNlX2Vycm9ybm90aWNlKFN0cmluZ0luZm8gbXNnLCBF cnJvckRhdGEgKmVkYXRhKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWVzb24uYnVp bGQgYi9zcmMvaW5jbHVkZS9tZXNvbi5idWlsZAppbmRleCBiOTQwYzVjZDNkNi4uZDBjZmNh ZWM4NGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9p bmNsdWRlL21lc29uLmJ1aWxkCkBAIC0xMzUsNiArMTM1LDcgQEAgaGVhZGVyX3N1YmRpcnMg PSBbCiAgICdleGVjdXRvcicsCiAgICdmZV91dGlscycsCiAgICdmb3JlaWduJywKKyAgJ2lw YycsCiAgICdqaXQnLAogICAnbGliJywKICAgJ2xpYnBxJywKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKaW5kZXggZjE2 ZjM1NjU5YjkuLjQ3NmU2MGE0ZDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRt aW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMjgsMTMyICsyOCwxNSBA QAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIiAvKiBmb3IgVGltZXN0YW1wVHog Ki8KICNpbmNsdWRlICJwZ3RpbWUuaCIJCQkJLyogZm9yIHBnX3RpbWVfdCAqLwogCi0KLSNk ZWZpbmUgSW52YWxpZFBpZAkJCQkoLTEpCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKgkgIFN5c3RlbSBpbnRlcnJ1cHQgYW5kIGNyaXRpY2FsIHNlY3Rpb24gaGFuZGxpbmcK LSAqCi0gKiBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVycnVwdHMgdGhhdCBhIHJ1bm5p bmcgYmFja2VuZCBuZWVkcyB0byBhY2NlcHQKLSAqIHdpdGhvdXQgbWVzc2luZyB1cCBpdHMg c3RhdGU6IFF1ZXJ5Q2FuY2VsIChTSUdJTlQpIGFuZCBQcm9jRGllIChTSUdURVJNKS4KLSAq IEluIGJvdGggY2FzZXMsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBjbGVhbiB1cCB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbgotICogZ3JhY2VmdWxseSwgc28gd2UgY2FuJ3QgcmVzcG9uZCB0 byB0aGUgaW50ZXJydXB0IGluc3RhbnRhbmVvdXNseSAtLS0KLSAqIHRoZXJlJ3Mgbm8gZ3Vh cmFudGVlIHRoYXQgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdvdWxkIGJlIHNlbGYtY29u c2lzdGVudAotICogaWYgdGhlIGNvZGUgaXMgaW50ZXJydXB0ZWQgYXQgYW4gYXJiaXRyYXJ5 IGluc3RhbnQuICBJbnN0ZWFkLCB0aGUgc2lnbmFsCi0gKiBoYW5kbGVycyBzZXQgZmxhZ3Mg dGhhdCBhcmUgY2hlY2tlZCBwZXJpb2RpY2FsbHkgZHVyaW5nIGV4ZWN1dGlvbi4KLSAqCi0g KiBUaGUgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBtYWNybyBpcyBjYWxsZWQgYXQgc3RyYXRl Z2ljYWxseSBsb2NhdGVkIHNwb3RzCi0gKiB3aGVyZSBpdCBpcyBub3JtYWxseSBzYWZlIHRv IGFjY2VwdCBhIGNhbmNlbCBvciBkaWUgaW50ZXJydXB0LiAgSW4gc29tZQotICogY2FzZXMs IHdlIGludm9rZSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGluc2lkZSBsb3ctbGV2ZWwgc3Vi cm91dGluZXMgdGhhdAotICogbWlnaHQgc29tZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0 cyB0aGF0IGRvICpub3QqIHdhbnQgdG8gYWxsb3cgYSBjYW5jZWwKLSAqIG9yIGRpZSBpbnRl cnJ1cHQuICBUaGUgSE9MRF9JTlRFUlJVUFRTKCkgYW5kIFJFU1VNRV9JTlRFUlJVUFRTKCkg bWFjcm9zCi0gKiBhbGxvdyBjb2RlIHRvIGVuc3VyZSB0aGF0IG5vIGNhbmNlbCBvciBkaWUg aW50ZXJydXB0IHdpbGwgYmUgYWNjZXB0ZWQsCi0gKiBldmVuIGlmIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgZ2V0cyBjYWxsZWQgaW4gYSBzdWJyb3V0aW5lLiAgVGhlIGludGVycnVwdAot ICogd2lsbCBiZSBoZWxkIG9mZiB1bnRpbCBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlzIGRv bmUgb3V0c2lkZSBhbnkKLSAqIEhPTERfSU5URVJSVVBUUygpIC4uLiBSRVNVTUVfSU5URVJS VVBUUygpIHNlY3Rpb24uCi0gKgotICogVGhlcmUgaXMgYWxzbyBhIG1lY2hhbmlzbSB0byBw cmV2ZW50IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRzLCB3aGlsZSBzdGlsbAotICogYWxsb3dp bmcgZGllIGludGVycnVwdHM6IEhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKSBhbmQKLSAqIFJF U1VNRV9DQU5DRUxfSU5URVJSVVBUUygpLgotICoKLSAqIE5vdGUgdGhhdCBQcm9jZXNzSW50 ZXJydXB0cygpIGhhcyBhbHNvIGFjcXVpcmVkIGEgbnVtYmVyIG9mIHRhc2tzIHRoYXQKLSAq IGRvIG5vdCBuZWNlc3NhcmlseSBjYXVzZSBhIHF1ZXJ5LWNhbmNlbC1vci1kaWUgcmVzcG9u c2UuICBIZW5jZSwgaXQncwotICogcG9zc2libGUgdGhhdCBpdCB3aWxsIGp1c3QgY2xlYXIg SW50ZXJydXB0UGVuZGluZyBhbmQgcmV0dXJuLgotICoKLSAqIElOVEVSUlVQVFNfUEVORElO R19DT05ESVRJT04oKSBjYW4gYmUgY2hlY2tlZCB0byBzZWUgd2hldGhlciBhbgotICogaW50 ZXJydXB0IG5lZWRzIHRvIGJlIHNlcnZpY2VkLCB3aXRob3V0IHRyeWluZyB0byBkbyBzbyBp bW1lZGlhdGVseS4KLSAqIFNvbWUgY2FsbGVycyBhcmUgYWxzbyBpbnRlcmVzdGVkIGluIElO VEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpLAotICogd2hpY2ggdGVsbHMgd2hldGhlciBQ cm9jZXNzSW50ZXJydXB0cyBpcyBzdXJlIHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQuCi0gKgot ICogU3BlY2lhbCBtZWNoYW5pc21zIGFyZSB1c2VkIHRvIGxldCBhbiBpbnRlcnJ1cHQgYmUg YWNjZXB0ZWQgd2hlbiB3ZSBhcmUKLSAqIHdhaXRpbmcgZm9yIGEgbG9jayBvciB3aGVuIHdl IGFyZSB3YWl0aW5nIGZvciBjb21tYW5kIGlucHV0IChidXQsIG9mCi0gKiBjb3Vyc2UsIG9u bHkgaWYgdGhlIGludGVycnVwdCBob2xkb2ZmIGNvdW50ZXIgaXMgemVybykuICBTZWUgdGhl Ci0gKiByZWxhdGVkIGNvZGUgZm9yIGRldGFpbHMuCi0gKgotICogQSBsb3N0IGNvbm5lY3Rp b24gaXMgaGFuZGxlZCBzaW1pbGFybHksIGFsdGhvdWdoIHRoZSBsb3NzIG9mIGNvbm5lY3Rp b24KLSAqIGRvZXMgbm90IHJhaXNlIGEgc2lnbmFsLCBidXQgaXMgZGV0ZWN0ZWQgd2hlbiB3 ZSBmYWlsIHRvIHdyaXRlIHRvIHRoZQotICogc29ja2V0LiBJZiB0aGVyZSB3YXMgYSBzaWdu YWwgZm9yIGEgYnJva2VuIGNvbm5lY3Rpb24sIHdlIGNvdWxkIG1ha2UgdXNlIG9mCi0gKiBp dCBieSBzZXR0aW5nIENsaWVudENvbm5lY3Rpb25Mb3N0IGluIHRoZSBzaWduYWwgaGFuZGxl ci4KLSAqCi0gKiBBIHJlbGF0ZWQsIGJ1dCBjb25jZXB0dWFsbHkgZGlzdGluY3QsIG1lY2hh bmlzbSBpcyB0aGUgImNyaXRpY2FsIHNlY3Rpb24iCi0gKiBtZWNoYW5pc20uICBBIGNyaXRp Y2FsIHNlY3Rpb24gbm90IG9ubHkgaG9sZHMgb2ZmIGNhbmNlbC9kaWUgaW50ZXJydXB0cywK LSAqIGJ1dCBjYXVzZXMgYW55IGVyZXBvcnQoRVJST1IpIG9yIGVyZXBvcnQoRkFUQUwpIHRv IGJlY29tZSBlcmVwb3J0KFBBTklDKQotICogLS0tIHRoYXQgaXMsIGEgc3lzdGVtLXdpZGUg cmVzZXQgaXMgZm9yY2VkLiAgTmVlZGxlc3MgdG8gc2F5LCBvbmx5IHJlYWxseQotICogKmNy aXRpY2FsKiBjb2RlIHNob3VsZCBiZSBtYXJrZWQgYXMgYSBjcml0aWNhbCBzZWN0aW9uIQlD dXJyZW50bHksIHRoaXMKLSAqIG1lY2hhbmlzbSBpcyBvbmx5IHVzZWQgZm9yIFhMT0ctcmVs YXRlZCBjb2RlLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogaW4gZ2xv YmFscy5jICovCi0vKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxlIGJlY2F1c2UgdGhleSBh cmUgc2V0IGJ5IHNpZ25hbCBoYW5kbGVyczogKi8KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBzaWdfYXRvbWljX3QgSW50ZXJydXB0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9S VCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUXVlcnlDYW5jZWxQZW5kaW5nOwotZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jRGllUGVuZGluZzsKLWV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZUluVHJhbnNhY3Rpb25T ZXNzaW9uVGltZW91dFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2ln X2F0b21pY190IFRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBP UlQgdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmc7Ci1l eHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJy aWVyUGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg TG9nTWVtb3J5Q29udGV4dFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nOwotCi1leHRlcm4g UEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENoZWNrQ2xpZW50Q29ubmVjdGlv blBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENs aWVudENvbm5lY3Rpb25Mb3N0OwotCi0vKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxlIGJl Y2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAqLwotZXh0ZXJu IFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQ7Ci1l eHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNv dW50OwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNv dW50OwotCi0vKiBpbiB0Y29wL3Bvc3RncmVzLmMgKi8KLWV4dGVybiB2b2lkIFByb2Nlc3NJ bnRlcnJ1cHRzKHZvaWQpOwotCi0vKiBUZXN0IHdoZXRoZXIgYW4gaW50ZXJydXB0IGlzIHBl bmRpbmcgKi8KLSNpZm5kZWYgV0lOMzIKLSNkZWZpbmUgSU5URVJSVVBUU19QRU5ESU5HX0NP TkRJVElPTigpIFwKLQkodW5saWtlbHkoSW50ZXJydXB0UGVuZGluZykpCi0jZWxzZQotI2Rl ZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkgXAotCSh1bmxpa2VseShVTkJM T0NLRURfU0lHTkFMX1FVRVVFKCkpID8gXAotCSBwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9z aWduYWxzKCkgOiAodm9pZCkgMCwgXAotCSB1bmxpa2VseShJbnRlcnJ1cHRQZW5kaW5nKSkK Ky8qCisgKiBYWFg6IG1hbnkgZmlsZXMgaW5jbHVkZSBtaXNjYWRtaW4uaCBmb3IgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKS4gS2VlcCB0aGVtCisgKiB3b3JraW5nIHdpdGhvdXQgY2hhbmdl cworICovCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgog I2VuZGlmCiAKLS8qIFNlcnZpY2UgaW50ZXJydXB0LCBpZiBvbmUgaXMgcGVuZGluZyBhbmQg aXQncyBzYWZlIHRvIHNlcnZpY2UgaXQgbm93ICovCi0jZGVmaW5lIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgXAotZG8geyBcCi0JaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04o KSkgXAotCQlQcm9jZXNzSW50ZXJydXB0cygpOyBcCi19IHdoaWxlKDApCi0KLS8qIElzIFBy b2Nlc3NJbnRlcnJ1cHRzKCkgZ3VhcmFudGVlZCB0byBjbGVhciBJbnRlcnJ1cHRQZW5kaW5n PyAqLwotI2RlZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBcCi0JKEludGVy cnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCAmJiBcCi0J IFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID09IDApCi0KLSNkZWZpbmUgSE9MRF9JTlRFUlJV UFRTKCkgIChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQrKykKLQotI2RlZmluZSBSRVNVTUVfSU5U RVJSVVBUUygpIFwKLWRvIHsgXAotCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPiAw KTsgXAotCUludGVycnVwdEhvbGRvZmZDb3VudC0tOyBcCi19IHdoaWxlKDApCi0KLSNkZWZp bmUgSE9MRF9DQU5DRUxfSU5URVJSVVBUUygpICAoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQr KykKLQotI2RlZmluZSBSRVNVTUVfQ0FOQ0VMX0lOVEVSUlVQVFMoKSBcCi1kbyB7IFwKLQlB c3NlcnQoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPiAwKTsgXAotCVF1ZXJ5Q2FuY2VsSG9s ZG9mZkNvdW50LS07IFwKLX0gd2hpbGUoMCkKLQotI2RlZmluZSBTVEFSVF9DUklUX1NFQ1RJ T04oKSAgKENyaXRTZWN0aW9uQ291bnQrKykKLQotI2RlZmluZSBFTkRfQ1JJVF9TRUNUSU9O KCkgXAotZG8geyBcCi0JQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPiAwKTsgXAotCUNyaXRT ZWN0aW9uQ291bnQtLTsgXAotfSB3aGlsZSgwKQorI2RlZmluZSBJbnZhbGlkUGlkCQkJCSgt MSkKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE5MSw3ICs3NCw2IEBAIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQcm9jUGlkOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBn X3RpbWVfdCBNeVN0YXJ0VGltZTsKIGV4dGVybiBQR0RMTElNUE9SVCBUaW1lc3RhbXBUeiBN eVN0YXJ0VGltZXN0YW1wOwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBQb3J0ICpNeVBy b2NQb3J0OwotZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBMYXRjaCAqTXlMYXRjaDsKIGV4 dGVybiBQR0RMTElNUE9SVCB1aW50OCBNeUNhbmNlbEtleVtdOwogZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBNeUNhbmNlbEtleUxlbmd0aDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTXlQ TUNoaWxkU2xvdDsKQEAgLTMyNCw5ICsyMDYsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgY2hh ciAqRGF0YWJhc2VQYXRoOwogLyogbm93IGluIHV0aWxzL2luaXQvbWlzY2luaXQuYyAqLwog ZXh0ZXJuIHZvaWQgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKTsKIGV4dGVybiB2b2lkIElu aXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCk7Ci1leHRlcm4gdm9pZCBJ bml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCk7Ci1leHRlcm4gdm9pZCBTd2l0Y2hUb1NoYXJl ZExhdGNoKHZvaWQpOwotZXh0ZXJuIHZvaWQgU3dpdGNoQmFja1RvTG9jYWxMYXRjaCh2b2lk KTsKIAogLyoKICAqIE15QmFja2VuZFR5cGUgaW5kaWNhdGVzIHdoYXQga2luZCBvZiBhIGJh Y2tlbmQgdGhpcyBpcy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaAppbmRleCA3NDE4 ZTY0ZTE5Yi4uNTNhZTEwNzIyZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyLmgK QEAgLTY2LDYgKzY2LDE0IEBACiAgKi8KICNkZWZpbmUgQkdXT1JLRVJfSU5URVJSVVBUSUJM RQkJCTB4MDAwNAogCisvKgorICogRHluYW1pYyB3b3JrZXJzIGNyZWF0ZWQgd2l0aCBzaGFy ZWQgbWVtb3J5IGFjY2VzcyB1c3VhbGx5IHNlbmQgYW4gaW50ZXJydXB0CisgKiB0byB0aGUg Y3JlYXRpbmcgYmFja2VuZCB3aGVuIHRoZXkgc3RhcnQgYW5kIHN0b3AsIGFsbG93aW5nCisg KiBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlcntTdGFydHVwLFNodXRkb3dufSgpIHRvIHdvcmsu ICBTdWNoIG5vdGlmaWNhdGlvbnMKKyAqIGNhbiBiZSBzdXBwcmVzc2VkIHdpdGggdGhpcyBm bGFnLgorICovCisjZGVmaW5lIEJHV09SS0VSX05PX05PVElGWQkJCQkJCQkweDAwMDgKKwog LyoKICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5IGZvciBwYXJhbGxlbCBxdWVy aWVzLCB0byBrZWVwIHRyYWNrIG9mIHRoZQogICogbnVtYmVyIG9mIGFjdGl2ZSBwYXJhbGxl bCB3b3JrZXJzIGFuZCBtYWtlIHN1cmUgd2UgbmV2ZXIgbGF1bmNoIG1vcmUgdGhhbgpAQCAt MTA0LDcgKzExMiw3IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKIAljaGFy CQliZ3dfZnVuY3Rpb25fbmFtZVtCR1dfTUFYTEVOXTsKIAlEYXR1bQkJYmd3X21haW5fYXJn OwogCWNoYXIJCWJnd19leHRyYVtCR1dfRVhUUkFMRU5dOwotCXBpZF90CQliZ3dfbm90aWZ5 X3BpZDsgLyogU0lHVVNSMSB0aGlzIGJhY2tlbmQgb24gc3RhcnQvc3RvcCAqLworCXBpZF90 CQliZ3dfbm90aWZ5X3BpZDsgLyogbm90IHVzZWQgKi8KIH0gQmFja2dyb3VuZFdvcmtlcjsK IAogdHlwZWRlZiBlbnVtIEJnd0hhbmRsZVN0YXR1cwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCBiL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXggYjc4OWNhZjQwMzQuLjhkY2E5Zjg0 MzM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVy bmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxz LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIK ICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2Vy LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCiAKIC8qIEdVQyBvcHRpb25z ICovCiAKQEAgLTQ3LDkgKzQ4LDEwIEBAIGV4dGVybiB2b2lkIEJhY2tncm91bmRXb3JrZXJT dGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKTsKIGV4dGVybiB2b2lkIEZvcmdl dEJhY2tncm91bmRXb3JrZXIoUmVnaXN0ZXJlZEJnV29ya2VyICpydyk7CiBleHRlcm4gdm9p ZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpOwog ZXh0ZXJuIHZvaWQgUmVwb3J0QmFja2dyb3VuZFdvcmtlckV4aXQoUmVnaXN0ZXJlZEJnV29y a2VyICpydyk7Ci1leHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNhdGlv bnMocGlkX3QgcGlkKTsKK2V4dGVybiB2b2lkIEJhY2tncm91bmRXb3JrZXJTdG9wTm90aWZp Y2F0aW9ucyhpbnQgcG1jaGlsZCk7CiBleHRlcm4gdm9pZCBGb3JnZXRVbnN0YXJ0ZWRCYWNr Z3JvdW5kV29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lkIFJlc2V0QmFja2dyb3VuZFdvcmtl ckNyYXNoVGltZXModm9pZCk7CitleHRlcm4gUHJvY051bWJlciBHZXROb3RpZnlQcm9jTnVt YmVyRm9yUmVnaXN0ZXJlZFdvcmtlcihSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKIAogLyog RW50cnkgcG9pbnQgZm9yIGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3NlcyAqLwogcGdfbm9y ZXR1cm4gZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv c3RhcnR1cC5oCmluZGV4IDRkMWUxMjEzMWQzLi5kZmIyYjBiNjVjZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9zdGFydHVwLmgKQEAgLTI1LDEyICsyNSwxMCBAQAogCiBleHRlcm4gUEdETExJ TVBPUlQgaW50IGxvZ19zdGFydHVwX3Byb2dyZXNzX2ludGVydmFsOwogCi1leHRlcm4gdm9p ZCBQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgU3Rh cnR1cFByb2NDaGVja1Bvc3RtYXN0ZXJEZWF0aCh2b2lkKTsKIHBnX25vcmV0dXJuIGV4dGVy biB2b2lkIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKTsKIGV4dGVybiB2b2lkIFByZVJlc3RvcmVDb21tYW5k KHZvaWQpOwogZXh0ZXJuIHZvaWQgUG9zdFJlc3RvcmVDb21tYW5kKHZvaWQpOwotZXh0ZXJu IGJvb2wgSXNQcm9tb3RlU2lnbmFsZWQodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXNldFByb21v dGVTaWduYWxlZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgZW5hYmxlX3N0YXJ0dXBfcHJvZ3Jl c3NfdGltZW91dCh2b2lkKTsKIGV4dGVybiB2b2lkIGRpc2FibGVfc3RhcnR1cF9wcm9ncmVz c190aW1lb3V0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oCmluZGV4IDdkNzQ4YTI4ZGE4Li4zODIyNjkwMDFjZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsMTAgKzEyLDYgQEAKICNpZm5kZWYg TE9HSUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCi0jaW5jbHVkZSA8 c2lnbmFsLmg+Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3Qg UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOwotCiBleHRlcm4gdm9pZCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIHZvaWQgUGFyYWxsZWxBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIHZvaWQgVGFibGVTeW5jV29ya2VyTWFp bihEYXR1bSBtYWluX2FyZyk7CkBAIC0yNCw3ICsyMCw2IEBAIGV4dGVybiB2b2lkIFNlcXVl bmNlU3luY1dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogZXh0ZXJuIGJvb2wgSXNMb2dp Y2FsV29ya2VyKHZvaWQpOwogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcih2b2lkKTsKIAotZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJ bnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3Nh Z2VzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBMb2dpY2FsUmVwV29ya2Vyc1dha2V1cEF0Q29t bWl0KE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4 IGE0ZGYzYjhlMGFlLi42OWI5NWJiMjdlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgZXh0ZXJuIHZvaWQgV2FsU25kU2htZW1Jbml0 KHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FsU25kV2FrZXVwKGJvb2wgcGh5c2ljYWwsIGJvb2wg bG9naWNhbCk7CiBleHRlcm4gdm9pZCBXYWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRl cm4gdm9pZCBXYWxTbmRXYWl0U3RvcHBpbmcodm9pZCk7Ci1leHRlcm4gdm9pZCBIYW5kbGVX YWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRScXN0RmlsZVJl bG9hZCh2b2lkKTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dhbHNlbmRlcl9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5k ZXJfcHJpdmF0ZS5oCmluZGV4IDVkZTY3NGQ1NDEwLi5jMThiNjQzNTlkZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oCkBAIC00MCw2ICs0 MCw4IEBAIHR5cGVkZWYgZW51bSBXYWxTbmRTdGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBX YWxTbmQKIHsKKwlQcm9jTnVtYmVyCXBncHJvY25vOwkJLyogdGhpcyB3YWxzZW5kZXIncyBQ cm9jTnVtYmVyLCBvciBpbnZhbGlkIGlmCisJCQkJCQkJCSAqIG5vdCBhY3RpdmUgKi8KIAlw aWRfdAkJcGlkOwkJCS8qIHRoaXMgd2Fsc2VuZGVyJ3MgUElELCBvciAwIGlmIG5vdCBhY3Rp dmUgKi8KIAogCVdhbFNuZFN0YXRlIHN0YXRlOwkJCS8qIHRoaXMgd2Fsc2VuZGVyJ3Mgc3Rh dGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5k ZXggYzEyODVmZGQxYmMuLjRiNjQ0OWU5NzRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtNzksOSArNzksMTAgQEAgdHlwZWRlZiBzdHJ1 Y3QgTG9naWNhbFJlcFdvcmtlcgogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCiAJ LyoKLQkgKiBQSUQgb2YgbGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNl ZCBmb3IgYSBwYXJhbGxlbCBhcHBseQotCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndp c2UuCisJICogTGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3Ig YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsCisJICogSU5WQUxJRF9QUk9DX05VTUJFUi9JbnZh bGlkUGlkIG90aGVyd2lzZS4KIAkgKi8KKwlQcm9jTnVtYmVyCWxlYWRlcl9wZ3Byb2NubzsK IAlwaWRfdAkJbGVhZGVyX3BpZDsKIAogCS8qIEluZGljYXRlcyB3aGV0aGVyIGFwcGx5IGNh biBiZSBwZXJmb3JtZWQgaW4gcGFyYWxsZWwuICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2xhdGNoLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZGFkYzg2OTU5Li4wMDAwMDAwMDAwMAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAg KzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogbGF0Y2guaAotICoJICBS b3V0aW5lcyBmb3IgaW50ZXJwcm9jZXNzIGxhdGNoZXMKLSAqCi0gKiBBIGxhdGNoIGlzIGEg Ym9vbGVhbiB2YXJpYWJsZSwgd2l0aCBvcGVyYXRpb25zIHRoYXQgbGV0IHByb2Nlc3NlcyBz bGVlcAotICogdW50aWwgaXQgaXMgc2V0LiBBIGxhdGNoIGNhbiBiZSBzZXQgZnJvbSBhbm90 aGVyIHByb2Nlc3MsIG9yIGEgc2lnbmFsCi0gKiBoYW5kbGVyIHdpdGhpbiB0aGUgc2FtZSBw cm9jZXNzLgotICoKLSAqIFRoZSBsYXRjaCBpbnRlcmZhY2UgaXMgYSByZWxpYWJsZSByZXBs YWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mCi0gKiB1c2luZyBwZ191c2xlZXAo KSBvciBzZWxlY3QoKSB0byB3YWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMsIHdoZXJlIHRo ZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBhIGZsYWcgdmFyaWFibGUuIEJlY2F1c2Ugb24g c29tZSBwbGF0Zm9ybXMgYW4KLSAqIGluY29taW5nIHNpZ25hbCBkb2Vzbid0IGludGVycnVw dCBzbGVlcCwgYW5kIGV2ZW4gb24gcGxhdGZvcm1zIHdoZXJlIGl0Ci0gKiBkb2VzIHRoZXJl IGlzIGEgcmFjZSBjb25kaXRpb24gaWYgdGhlIHNpZ25hbCBhcnJpdmVzIGp1c3QgYmVmb3Jl Ci0gKiBlbnRlcmluZyB0aGUgc2xlZXAsIHRoZSBjb21tb24gcGF0dGVybiBtdXN0IHBlcmlv ZGljYWxseSB3YWtlIHVwIGFuZAotICogcG9sbCB0aGUgZmxhZyB2YXJpYWJsZS4gVGhlIHBz ZWxlY3QoKSBzeXN0ZW0gY2FsbCB3YXMgaW52ZW50ZWQgdG8gc29sdmUKLSAqIHRoaXMgcHJv YmxlbSwgYnV0IGl0IGlzIG5vdCBwb3J0YWJsZSBlbm91Z2guIExhdGNoZXMgYXJlIGRlc2ln bmVkIHRvCi0gKiBvdmVyY29tZSB0aGVzZSBsaW1pdGF0aW9ucywgYWxsb3dpbmcgeW91IHRv IHNsZWVwIHdpdGhvdXQgcG9sbGluZyBhbmQKLSAqIGVuc3VyaW5nIHF1aWNrIHJlc3BvbnNl IHRvIHNpZ25hbHMgZnJvbSBvdGhlciBwcm9jZXNzZXMuCi0gKgotICogVGhlcmUgYXJlIHR3 byBraW5kcyBvZiBsYXRjaGVzOiBsb2NhbCBhbmQgc2hhcmVkLiBBIGxvY2FsIGxhdGNoIGlz Ci0gKiBpbml0aWFsaXplZCBieSBJbml0TGF0Y2gsIGFuZCBjYW4gb25seSBiZSBzZXQgZnJv bSB0aGUgc2FtZSBwcm9jZXNzLgotICogQSBsb2NhbCBsYXRjaCBjYW4gYmUgdXNlZCB0byB3 YWl0IGZvciBhIHNpZ25hbCB0byBhcnJpdmUsIGJ5IGNhbGxpbmcKLSAqIFNldExhdGNoIGlu IHRoZSBzaWduYWwgaGFuZGxlci4gQSBzaGFyZWQgbGF0Y2ggcmVzaWRlcyBpbiBzaGFyZWQg bWVtb3J5LAotICogYW5kIG11c3QgYmUgaW5pdGlhbGl6ZWQgYXQgcG9zdG1hc3RlciBzdGFy dHVwIGJ5IEluaXRTaGFyZWRMYXRjaC4gQmVmb3JlCi0gKiBhIHNoYXJlZCBsYXRjaCBjYW4g YmUgd2FpdGVkIG9uLCBpdCBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHByb2Nlc3MKLSAq IHdpdGggT3duTGF0Y2guIE9ubHkgdGhlIHByb2Nlc3Mgb3duaW5nIHRoZSBsYXRjaCBjYW4g d2FpdCBvbiBpdCwgYnV0IGFueQotICogcHJvY2VzcyBjYW4gc2V0IGl0LgotICoKLSAqIFRo ZXJlIGFyZSB0aHJlZSBiYXNpYyBvcGVyYXRpb25zIG9uIGEgbGF0Y2g6Ci0gKgotICogU2V0 TGF0Y2gJCS0gU2V0cyB0aGUgbGF0Y2gKLSAqIFJlc2V0TGF0Y2gJLSBDbGVhcnMgdGhlIGxh dGNoLCBhbGxvd2luZyBpdCB0byBiZSBzZXQgYWdhaW4KLSAqIFdhaXRMYXRjaAktIFdhaXRz IGZvciB0aGUgbGF0Y2ggdG8gYmVjb21lIHNldAotICoKLSAqIFdhaXRMYXRjaCBpbmNsdWRl cyBhIHByb3Zpc2lvbiBmb3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCi0g KiB3aGVuIHBvc3NpYmxlLCBhcyB0aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBw cm92aXNpb24gZm9yCi0gKiBwb3N0bWFzdGVyIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVw IGltbWVkaWF0ZWx5IG9uIHBvc3RtYXN0ZXIgZGVhdGguCi0gKiBTZWUgbGF0Y2guYyBmb3Ig ZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgZm9yIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMuCi0g KgotICogVGhlIGNvcnJlY3QgcGF0dGVybiB0byB3YWl0IGZvciBldmVudChzKSBpczoKLSAq Ci0gKiBmb3IgKDs7KQotICogewotICoJICAgUmVzZXRMYXRjaCgpOwotICoJICAgaWYgKHdv cmsgdG8gZG8pCi0gKgkJICAgRG8gU3R1ZmYoKTsKLSAqCSAgIFdhaXRMYXRjaCgpOwotICog fQotICoKLSAqIEl0J3MgaW1wb3J0YW50IHRvIHJlc2V0IHRoZSBsYXRjaCAqYmVmb3JlKiBj aGVja2luZyBpZiB0aGVyZSdzIHdvcmsgdG8KLSAqIGRvLiBPdGhlcndpc2UsIGlmIHNvbWVv bmUgc2V0cyB0aGUgbGF0Y2ggYmV0d2VlbiB0aGUgY2hlY2sgYW5kIHRoZQotICogUmVzZXRM YXRjaCBjYWxsLCB5b3Ugd2lsbCBtaXNzIGl0IGFuZCBXYWl0IHdpbGwgaW5jb3JyZWN0bHkg YmxvY2suCi0gKgotICogQW5vdGhlciB2YWxpZCBjb2RpbmcgcGF0dGVybiBsb29rcyBsaWtl OgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBpZiAod29yayB0byBkbykKLSAqCQkg ICBEbyBTdHVmZigpOyAvLyBpbiBwYXJ0aWN1bGFyLCBleGl0IGxvb3AgaWYgc29tZSBjb25k aXRpb24gc2F0aXNmaWVkCi0gKgkgICBXYWl0TGF0Y2goKTsKLSAqCSAgIFJlc2V0TGF0Y2go KTsKLSAqIH0KLSAqCi0gKiBUaGlzIGlzIHVzZWZ1bCB0byByZWR1Y2UgbGF0Y2ggdHJhZmZp YyBpZiBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGxvb3AncwotICogdGVybWluYXRpb24gY29u ZGl0aW9uIHdpbGwgb2Z0ZW4gYmUgc2F0aXNmaWVkIGluIHRoZSBmaXJzdCBpdGVyYXRpb247 Ci0gKiB0aGUgY29zdCBpcyBhbiBleHRyYSBsb29wIGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tp bmcgd2hlbiBpdCBpcyBub3QuCi0gKiBXaGF0IG11c3QgYmUgYXZvaWRlZCBpcyBwbGFjaW5n IGFueSBjaGVja3MgZm9yIGFzeW5jaHJvbm91cyBldmVudHMgYWZ0ZXIKLSAqIFdhaXRMYXRj aCBhbmQgYmVmb3JlIFJlc2V0TGF0Y2gsIGFzIHRoYXQgY3JlYXRlcyBhIHJhY2UgY29uZGl0 aW9uLgotICoKLSAqIFRvIHdha2UgdXAgdGhlIHdhaXRlciwgeW91IG11c3QgZmlyc3Qgc2V0 IGEgZ2xvYmFsIGZsYWcgb3Igc29tZXRoaW5nCi0gKiBlbHNlIHRoYXQgdGhlIHdhaXQgbG9v cCB0ZXN0cyBpbiB0aGUgImlmICh3b3JrIHRvIGRvKSIgcGFydCwgYW5kIGNhbGwKLSAqIFNl dExhdGNoICphZnRlciogdGhhdC4gU2V0TGF0Y2ggaXMgZGVzaWduZWQgdG8gcmV0dXJuIHF1 aWNrbHkgaWYgdGhlCi0gKiBsYXRjaCBpcyBhbHJlYWR5IHNldC4KLSAqCi0gKiBPbiBzb21l IHBsYXRmb3Jtcywgc2lnbmFscyB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIGxhdGNoIHdhaXQg cHJpbWl0aXZlCi0gKiBieSB0aGVtc2VsdmVzLiAgVGhlcmVmb3JlLCBpdCBpcyBjcml0aWNh bCB0aGF0IGFueSBzaWduYWwgaGFuZGxlciB0aGF0Ci0gKiBpcyBtZWFudCB0byB0ZXJtaW5h dGUgYSBXYWl0TGF0Y2ggd2FpdCBjYWxscyBTZXRMYXRjaC4KLSAqCi0gKiBOb3RlIHRoYXQg dXNlIG9mIHRoZSBwcm9jZXNzIGxhdGNoIChQR1BST0MucHJvY0xhdGNoKSBpcyBnZW5lcmFs bHkgYmV0dGVyCi0gKiB0aGFuIGFuIGFkLWhvYyBzaGFyZWQgbGF0Y2ggZm9yIHNpZ25hbGlu ZyBhdXhpbGlhcnkgcHJvY2Vzc2VzLiAgVGhpcyBpcwotICogYmVjYXVzZSBnZW5lcmljIHNp Z25hbCBoYW5kbGVycyB3aWxsIGNhbGwgU2V0TGF0Y2ggb24gdGhlIHByb2Nlc3MgbGF0Y2gK LSAqIG9ubHksIHNvIHVzaW5nIGFueSBsYXRjaCBvdGhlciB0aGFuIHRoZSBwcm9jZXNzIGxh dGNoIGVmZmVjdGl2ZWx5IHByZWNsdWRlcwotICogdXNlIG9mIGFueSBnZW5lcmljIGhhbmRs ZXIuCi0gKgotICoKLSAqIFNlZSBhbHNvIFdhaXRFdmVudFNldHMgaW4gd2FpdGV2ZW50c2V0 LmguIFRoZXkgYWxsb3cgdG8gd2FpdCBmb3IgbGF0Y2hlcwotICogYmVpbmcgc2V0IGFuZCBh ZGRpdGlvbmFsIGV2ZW50cyAtIHBvc3RtYXN0ZXIgZHlpbmcgYW5kIHNvY2tldCByZWFkaW5l c3Mgb2YKLSAqIHNldmVyYWwgc29ja2V0cyBjdXJyZW50bHkgLSBhdCB0aGUgc2FtZSB0aW1l LiAgT24gbWFueSBwbGF0Zm9ybXMgdXNpbmcgYQotICogbG9uZyBsaXZlZCBldmVudCBzZXQg aXMgbW9yZSBlZmZpY2llbnQgdGhhbiB1c2luZyBXYWl0TGF0Y2ggb3IKLSAqIFdhaXRMYXRj aE9yU29ja2V0LgotICoKLSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCi0gKgotICogc3JjL2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oCi0gKgotICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gKi8KLSNpZm5kZWYgTEFUQ0hfSAotI2RlZmluZSBMQVRDSF9ICi0K LSNpbmNsdWRlIDxzaWduYWwuaD4KLQotI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0 LmgiCS8qIGZvciBXTF8qIGFyZ3VtZW50cyB0byBXYWl0TGF0Y2ggKi8KLQotLyoKLSAqIExh dGNoIHN0cnVjdHVyZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvcGFxdWUgYW5kIG9ubHkgYWNj ZXNzZWQgdGhyb3VnaAotICogdGhlIHB1YmxpYyBmdW5jdGlvbnMuIEl0IGlzIGRlZmluZWQg aGVyZSB0byBhbGxvdyBlbWJlZGRpbmcgTGF0Y2hlcyBhcwotICogcGFydCBvZiBiaWdnZXIg c3RydWN0cy4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgTGF0Y2gKLXsKLQlzaWdfYXRvbWljX3Qg aXNfc2V0OwotCXNpZ19hdG9taWNfdCBtYXliZV9zbGVlcGluZzsKLQlib29sCQlpc19zaGFy ZWQ7Ci0JaW50CQkJb3duZXJfcGlkOwotI2lmZGVmIFdJTjMyCi0JSEFORExFCQlldmVudDsK LSNlbmRpZgotfSBMYXRjaDsKLQotLyoKLSAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBp biBsYXRjaC5jCi0gKi8KLWV4dGVybiB2b2lkIEluaXRMYXRjaChMYXRjaCAqbGF0Y2gpOwot ZXh0ZXJuIHZvaWQgSW5pdFNoYXJlZExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9p ZCBPd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgRGlzb3duTGF0Y2goTGF0 Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFNldExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRl cm4gdm9pZCBSZXNldExhdGNoKExhdGNoICpsYXRjaCk7Ci0KLWV4dGVybiBpbnQJV2FpdExh dGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKLQkJCQkJ ICB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKLWV4dGVybiBpbnQJV2FpdExhdGNoT3JTb2Nr ZXQoTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2ZW50cywKLQkJCQkJCQkgIHBnc29ja2V0IHNv Y2ssIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gdm9p ZCBJbml0aWFsaXplTGF0Y2hXYWl0U2V0KHZvaWQpOwotCi0jZW5kaWYJCQkJCQkJLyogTEFU Q0hfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAxZjFhYjdkMDJjYS4uMDBlYTlmODY0MjIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0xOCw3ICsxOCw2IEBACiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2VtYS5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2xpc3RfdHlwZXMuaCIKQEAgLTE5MCw5ICsxODksNiBAQCBzdHJ1Y3QgUEdQUk9D CiAJUEdTZW1hcGhvcmUgc2VtOwkJCS8qIE9ORSBzZW1hcGhvcmUgdG8gc2xlZXAgb24gKi8K IAlQcm9jV2FpdFN0YXR1cyB3YWl0U3RhdHVzOwogCi0JTGF0Y2gJCXByb2NMYXRjaDsJCS8q IGdlbmVyaWMgbGF0Y2ggZm9yIHByb2Nlc3MgKi8KLQotCiAJVHJhbnNhY3Rpb25JZCB4aWQ7 CQkJLyogaWQgb2YgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGN1cnJlbnRseSBiZWluZwogCQkJ CQkJCQkgKiBleGVjdXRlZCBieSB0aGlzIHByb2MsIGlmIHJ1bm5pbmcgYW5kIFhJRAogCQkJ CQkJCQkgKiBpcyBhc3NpZ25lZDsgZWxzZSBJbnZhbGlkVHJhbnNhY3Rpb25JZC4KQEAgLTIz NiwxNiArMjMyLDYgQEAgc3RydWN0IFBHUFJPQwogCiAJQmFja2VuZFR5cGUgYmFja2VuZFR5 cGU7CS8qIHdoYXQga2luZCBvZiBwcm9jZXNzIGlzIHRoaXM/ICovCiAKLQkvKgotCSAqIFdo aWxlIGluIGhvdCBzdGFuZGJ5IG1vZGUsIHNob3dzIHRoYXQgYSBjb25mbGljdCBzaWduYWwg aGFzIGJlZW4gc2VudAotCSAqIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4gU2V0L2Ns ZWFyZWQgd2hpbGUgaG9sZGluZyBQcm9jQXJyYXlMb2NrLAotCSAqIHRob3VnaCBub3QgcmVx dWlyZWQuIEFjY2Vzc2VkIHdpdGhvdXQgbG9jaywgaWYgbmVlZGVkLgotCSAqCi0JICogVGhp cyBpcyBhIGJpdG1hc2s7IGVhY2ggYml0IGNvcnJlc3BvbmRzIHRvIGEgUmVjb3ZlcnlDb25m bGljdFJlYXNvbgotCSAqIGVudW0gdmFsdWUuCi0JICovCi0JcGdfYXRvbWljX3VpbnQzMiBw ZW5kaW5nUmVjb3ZlcnlDb25mbGljdHM7Ci0KIAkvKgogCSAqIEluZm8gYWJvdXQgTFdMb2Nr IHRoZSBwcm9jZXNzIGlzIGN1cnJlbnRseSB3YWl0aW5nIGZvciwgaWYgYW55LgogCSAqCkBA IC0zMzcsNiArMzIzLDI0IEBAIHN0cnVjdCBQR1BST0MKIAlQR1BST0MJICAgKmxvY2tHcm91 cExlYWRlcjsJLyogbG9jayBncm91cCBsZWFkZXIsIGlmIEknbSBhIG1lbWJlciAqLwogCWRs aXN0X2hlYWQJbG9ja0dyb3VwTWVtYmVyczsJLyogbGlzdCBvZiBtZW1iZXJzLCBpZiBJJ20g YSBsZWFkZXIgKi8KIAlkbGlzdF9ub2RlCWxvY2tHcm91cExpbms7CS8qIG15IG1lbWJlciBs aW5rLCBpZiBJJ20gYSBtZW1iZXIgKi8KKworCS8qIEJpdCBtYXNrIG9mIHBlbmRpbmcgaW50 ZXJydXB0cywgd2FpdGluZyB0byBiZSBwcm9jZXNzZWQgKi8KKwlwZ19hdG9taWNfdWludDY0 IHBlbmRpbmdJbnRlcnJ1cHRzOworCisJLyoKKwkgKiBXaGlsZSBpbiBob3Qgc3RhbmRieSBt b2RlLCBzaG93cyB0aGF0IGEgY29uZmxpY3Qgc2lnbmFsIGhhcyBiZWVuIHNlbnQKKwkgKiBm b3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uIFNldC9jbGVhcmVkIHdoaWxlIGhvbGRpbmcg UHJvY0FycmF5TG9jaywKKwkgKiB0aG91Z2ggbm90IHJlcXVpcmVkLiBBY2Nlc3NlZCB3aXRo b3V0IGxvY2ssIGlmIG5lZWRlZC4KKwkgKgorCSAqIFRoaXMgaXMgYSBiaXRtYXNrOyBlYWNo IGJpdCBjb3JyZXNwb25kcyB0byBhIFJlY292ZXJ5Q29uZmxpY3RSZWFzb24KKwkgKiBlbnVt IHZhbHVlLgorCSAqLworCXBnX2F0b21pY191aW50MzIgcGVuZGluZ1JlY292ZXJ5Q29uZmxp Y3RzOworCisjaWZkZWYgV0lOMzIKKwkvKiBFdmVudCBoYW5kbGUgdG8gd2FrZSB1cCB0aGUg cHJvY2VzcyB3aGVuIHNlbmRpbmcgYW4gaW50ZXJydXB0ICovCisJSEFORExFCQlpbnRlcnJ1 cHRXYWtldXBFdmVudDsKKyNlbmRpZgogfTsKIAogLyogTk9URTogInR5cGVkZWYgc3RydWN0 IFBHUFJPQyBQR1BST0MiIGFwcGVhcnMgaW4gc3RvcmFnZS9sb2NrLmguICovCkBAIC00NTEs NiArNDU1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAlwZ19hdG9taWNfdWludDMy IGF2TGF1bmNoZXJQcm9jOwogCXBnX2F0b21pY191aW50MzIgd2Fsd3JpdGVyUHJvYzsKIAlw Z19hdG9taWNfdWludDMyIGNoZWNrcG9pbnRlclByb2M7CisJcGdfYXRvbWljX3VpbnQzMiB3 YWxyZWNlaXZlclByb2M7CisJcGdfYXRvbWljX3VpbnQzMiBzdGFydHVwUHJvYzsKIAogCS8q IEN1cnJlbnQgc2hhcmVkIGVzdGltYXRlIG9mIGFwcHJvcHJpYXRlIHNwaW5zX3Blcl9kZWxh eSB2YWx1ZSAqLwogCWludAkJCXNwaW5zX3Blcl9kZWxheTsKQEAgLTUzMyw5ICs1MzksNiBA QCBleHRlcm4gdm9pZCBHZXRMb2NrSG9sZGVyc0FuZFdhaXRlcnMoTE9DQUxMT0NLICpsb2Nh bGxvY2ssCiAJCQkJCQkJCQkgU3RyaW5nSW5mbyBsb2NrX3dhaXRlcnNfc2J1ZiwKIAkJCQkJ CQkJCSBpbnQgKmxvY2tIb2xkZXJzTnVtKTsKIAotZXh0ZXJuIHZvaWQgUHJvY1dhaXRGb3JT aWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gdm9pZCBQcm9jU2VuZFNp Z25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwotCiBleHRlcm4gUEdQUk9DICpBdXhpbGlh cnlQaWRHZXRQcm9jKGludCBwaWQpOwogCiBleHRlcm4gdm9pZCBCZWNvbWVMb2NrR3JvdXBM ZWFkZXIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJh eS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBjNWFiMTU3NGZl My4uYjcyMDFkMWE5MTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2Fy cmF5LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtNzgsNyAr NzgsNyBAQCBleHRlcm4gVmlydHVhbFRyYW5zYWN0aW9uSWQgKkdldEN1cnJlbnRWaXJ0dWFs WElEcyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwKIAkJCQkJCQkJCQkJCSAgIGludCAqbnZ4 aWRzKTsKIGV4dGVybiBWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqR2V0Q29uZmxpY3RpbmdWaXJ0 dWFsWElEcyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgT2lkIGRiT2lkKTsKIAotZXh0ZXJu IGJvb2wgU2lnbmFsUmVjb3ZlcnlDb25mbGljdChQR1BST0MgKnByb2MsIHBpZF90IHBpZCwg UmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pOworZXh0ZXJuIGJvb2wgU2lnbmFsUmVj b3ZlcnlDb25mbGljdChQR1BST0MgKnByb2MsIFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVh c29uKTsKIGV4dGVybiBib29sIFNpZ25hbFJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJ RChWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJl YXNvbik7CiBleHRlcm4gdm9pZCBTaWduYWxSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNl KE9pZCBkYXRhYmFzZWlkLCBSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbik7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggMzQ4ZmJhNTNhOTMuLjE4YjI4YjdiNzA0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMTQsMzUgKzE0LDYgQEAKICNp Zm5kZWYgUFJPQ1NJR05BTF9ICiAjZGVmaW5lIFBST0NTSUdOQUxfSAogCi0jaW5jbHVkZSAi c3RvcmFnZS9wcm9jbnVtYmVyLmgiCi0KLQotLyoKLSAqIFJlYXNvbnMgZm9yIHNpZ25hbGlu ZyBhIFBvc3RncmVzIGNoaWxkIHByb2Nlc3MgKGEgYmFja2VuZCBvciBhbiBhdXhpbGlhcnkK LSAqIHByb2Nlc3MsIGxpa2UgY2hlY2twb2ludGVyKS4gIFdlIGNhbiBjb3BlIHdpdGggY29u Y3VycmVudCBzaWduYWxzIGZvciBkaWZmZXJlbnQKLSAqIHJlYXNvbnMuICBIb3dldmVyLCBp ZiB0aGUgc2FtZSByZWFzb24gaXMgc2lnbmFsZWQgbXVsdGlwbGUgdGltZXMgaW4gcXVpY2sK LSAqIHN1Y2Nlc3Npb24sIHRoZSBwcm9jZXNzIGlzIGxpa2VseSB0byBvYnNlcnZlIG9ubHkg b25lIG5vdGlmaWNhdGlvbiBvZiBpdC4KLSAqIFRoaXMgaXMgb2theSBmb3IgdGhlIHByZXNl bnQgdXNlcy4KLSAqCi0gKiBBbHNvLCBiZWNhdXNlIG9mIHJhY2UgY29uZGl0aW9ucywgaXQn cyBpbXBvcnRhbnQgdGhhdCBhbGwgdGhlIHNpZ25hbHMgYmUKLSAqIGRlZmluZWQgc28gdGhh dCBubyBoYXJtIGlzIGRvbmUgaWYgYSBwcm9jZXNzIG1pc3Rha2VubHkgcmVjZWl2ZXMgb25l LgotICovCi10eXBlZGVmIGVudW0KLXsKLQlQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBULAkv KiBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHQgKi8KLQlQUk9DU0lHX05PVElGWV9JTlRFUlJV UFQsCS8qIGxpc3Rlbi9ub3RpZnkgaW50ZXJydXB0ICovCi0JUFJPQ1NJR19QQVJBTExFTF9N RVNTQUdFLAkvKiBtZXNzYWdlIGZyb20gY29vcGVyYXRpbmcgcGFyYWxsZWwgYmFja2VuZCAq LwotCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRv IHByZXBhcmUgZm9yIHNodXRkb3duICAqLwotCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9i YWwgYmFycmllciBpbnRlcnJ1cHQgICovCi0JUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQs IC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCi0JUFJPQ1NJ R19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwgYXBw bHkgd29ya2VycyAqLwotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QsCS8qIGJhY2tlbmQg aXMgYmxvY2tpbmcgcmVjb3ZlcnksIGNoZWNrCi0JCQkJCQkJCSAqIFBHUFJPQy0+cGVuZGlu Z1JlY292ZXJ5Q29uZmxpY3RzIGZvciB0aGUKLQkJCQkJCQkJICogcmVhc29uICovCi19IFBy b2NTaWduYWxSZWFzb247Ci0KLSNkZWZpbmUgTlVNX1BST0NTSUdOQUxTIChQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUICsgMSkKLQogdHlwZWRlZiBlbnVtCiB7CiAJUFJPQ1NJR05BTF9C QVJSSUVSX1NNR1JSRUxFQVNFLCAvKiBhc2sgc21nciB0byBjbG9zZSBmaWxlcyAqLwpAQCAt NjcsMTYgKzM4LDEyIEBAIGV4dGVybiBTaXplIFByb2NTaWduYWxTaG1lbVNpemUodm9pZCk7 CiBleHRlcm4gdm9pZCBQcm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpOwogCiBleHRlcm4gdm9p ZCBQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9r ZXlfbGVuKTsKLWV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2ln bmFsUmVhc29uIHJlYXNvbiwKLQkJCQkJCSAgIFByb2NOdW1iZXIgcHJvY051bWJlcik7CiBl eHRlcm4gdm9pZCBTZW5kQ2FuY2VsUmVxdWVzdChpbnQgYmFja2VuZFBJRCwgY29uc3QgdWlu dDggKmNhbmNlbF9rZXksIGludCBjYW5jZWxfa2V5X2xlbik7CiAKIGV4dGVybiB1aW50NjQg RW1pdFByb2NTaWduYWxCYXJyaWVyKFByb2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKTsKIGV4 dGVybiB2b2lkIFdhaXRGb3JQcm9jU2lnbmFsQmFycmllcih1aW50NjQgZ2VuZXJhdGlvbik7 CiBleHRlcm4gdm9pZCBQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIodm9pZCk7CiAKLWV4dGVy biB2b2lkIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKTsKLQogLyog UHJvY1NpZ25hbEhlYWRlciBpcyBhbiBvcGFxdWUgc3RydWN0LCBkZXRhaWxzIGtub3duIG9u bHkgd2l0aGluIHByb2NzaWduYWwuYyAqLwogdHlwZWRlZiBzdHJ1Y3QgUHJvY1NpZ25hbEhl YWRlciBQcm9jU2lnbmFsSGVhZGVyOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3NpbnZhbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaAppbmRleCA0ZDMz ZmRjYWJlMS4uNmNlY2JmZDljZjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaApAQCAtMTM3LDE2 ICsxMzcsMTEgQEAgdHlwZWRlZiB1bmlvbgogLyogQ291bnRlciBvZiBtZXNzYWdlcyBwcm9j ZXNzZWQ7IGRvbid0IHdvcnJ5IGFib3V0IG92ZXJmbG93LiAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQ2NCBTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50ZXI7CiAKLWV4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgY2F0Y2h1cEludGVycnVwdFBlbmRpbmc7 Ci0KIGV4dGVybiB2b2lkIFNlbmRTaGFyZWRJbnZhbGlkTWVzc2FnZXMoY29uc3QgU2hhcmVk SW52YWxpZGF0aW9uTWVzc2FnZSAqbXNncywKIAkJCQkJCQkJCSAgaW50IG4pOwogZXh0ZXJu IHZvaWQgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52YWxGdW5jdGlv bikgKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm1zZyksCiAJCQkJCQkJCQkJIHZvaWQg KCpyZXNldEZ1bmN0aW9uKSAodm9pZCkpOwogCi0vKiBzaWduYWwgaGFuZGxlciBmb3IgY2F0 Y2h1cCBldmVudHMgKFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQpICovCi1leHRlcm4gdm9p ZCBIYW5kbGVDYXRjaHVwSW50ZXJydXB0KHZvaWQpOwotCiAvKgogICogZW5hYmxlL2Rpc2Fi bGUgcHJvY2Vzc2luZyBvZiBjYXRjaHVwIGV2ZW50cyBkaXJlY3RseSBmcm9tIHNpZ25hbCBo YW5kbGVyLgogICogVGhlIGVuYWJsZSByb3V0aW5lIGZpcnN0IHBlcmZvcm1zIHByb2Nlc3Np bmcgb2YgYW55IGNhdGNodXAgZXZlbnRzIHRoYXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVu dHNldC5oCmluZGV4IDUzNDEyNjdmMGEwLi5hN2Y5NzRjNWJhMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3dhaXRldmVudHNldC5oCkBAIC0zLDE2ICszLDE1IEBACiAgKiB3YWl0ZXZlbnRzZXQu aAogICoJCXBwb2xsKCkgLyBwc2VsZWN0KCkgbGlrZSBpbnRlcmZhY2UgZm9yIHdhaXRpbmcg Zm9yIGV2ZW50cwogICoKLSAqIFdhaXRFdmVudFNldHMgYWxsb3cgdG8gd2FpdCBmb3IgbGF0 Y2hlcyBiZWluZyBzZXQgYW5kIGFkZGl0aW9uYWwgZXZlbnRzIC0KKyAqIFdhaXRFdmVudFNl dHMgYWxsb3cgdG8gd2FpdCBmb3IgaW50ZXJydXB0cyBiZWluZyBzZXQgYW5kIGFkZGl0aW9u YWwgZXZlbnRzIC0KICAqIHBvc3RtYXN0ZXIgZHlpbmcgYW5kIHNvY2tldCByZWFkaW5lc3Mg b2Ygc2V2ZXJhbCBzb2NrZXRzIGN1cnJlbnRseSAtIGF0IHRoZQogICogc2FtZSB0aW1lLiAg T24gbWFueSBwbGF0Zm9ybXMgdXNpbmcgYSBsb25nIGxpdmVkIGV2ZW50IHNldCBpcyBtb3Jl Ci0gKiBlZmZpY2llbnQgdGhhbiB1c2luZyBXYWl0TGF0Y2ggb3IgV2FpdExhdGNoT3JTb2Nr ZXQuCisgKiBlZmZpY2llbnQgdGhhbiB1c2luZyBXYWl0SW50ZXJydXB0IG9yIFdhaXRJbnRl cnJ1cHRPclNvY2tldC4KICAqCi0gKiBXYWl0RXZlbnRTZXRXYWl0IGluY2x1ZGVzIGEgcHJv dmlzaW9uIGZvciB0aW1lb3V0cyAod2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQKKyAqIFdhaXRJ bnRlcnJ1cHQgaW5jbHVkZXMgYSBwcm92aXNpb24gZm9yIHRpbWVvdXRzICh3aGljaCBzaG91 bGQgYmUgYXZvaWRlZAogICogd2hlbiBwb3NzaWJsZSwgYXMgdGhleSBpbmN1ciBleHRyYSBv dmVyaGVhZCkgYW5kIGEgcHJvdmlzaW9uIGZvciBwb3N0bWFzdGVyCiAgKiBjaGlsZCBwcm9j ZXNzZXMgdG8gd2FrZSB1cCBpbW1lZGlhdGVseSBvbiBwb3N0bWFzdGVyIGRlYXRoLiAgU2Vl Ci0gKiBzdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYyBmb3IgZGV0YWlsZWQgc3BlY2lmaWNh dGlvbnMgZm9yIHRoZSBleHBvcnRlZAotICogZnVuY3Rpb25zLgorICogaXBjL2ludGVycnVw dC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkIGZ1bmN0 aW9ucy4KICAqCiAgKgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCkBAIC0yNSwxMyArMjQsMTcgQEAK ICNpZm5kZWYgV0FJVEVWRU5UU0VUX0gKICNkZWZpbmUgV0FJVEVWRU5UU0VUX0gKIAotI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVy LmgiCisKKy8qIGRlZmluZWQgaGVyZSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IHRv IGludGVycnVwdC5oICovCit0eXBlZGVmIHVpbnQ2NCBJbnRlcnJ1cHRNYXNrOworCiAKIC8q Ci0gKiBCaXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQgbWF5IHdha2UtdXAgV2FpdExhdGNoKCks IFdhaXRMYXRjaE9yU29ja2V0KCksIG9yCi0gKiBXYWl0RXZlbnRTZXRXYWl0KCkuCisgKiBC aXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQgbWF5IHdha2UtdXAgV2FpdEludGVycnVwdCgpLAor ICogV2FpdEludGVycnVwdE9yU29ja2V0KCksIG9yIFdhaXRFdmVudFNldFdhaXQoKS4KICAq LwotI2RlZmluZSBXTF9MQVRDSF9TRVQJCSAoMSA8PCAwKQorI2RlZmluZSBXTF9JTlRFUlJV UFQJCSAoMSA8PCAwKQogI2RlZmluZSBXTF9TT0NLRVRfUkVBREFCTEUJICgxIDw8IDEpCiAj ZGVmaW5lIFdMX1NPQ0tFVF9XUklURUFCTEUgICgxIDw8IDIpCiAjZGVmaW5lIFdMX1RJTUVP VVQJCQkgKDEgPDwgMykJLyogbm90IGZvciBXYWl0RXZlbnRTZXRXYWl0KCkgKi8KQEAgLTcw LDI5ICs3MywzMyBAQCB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnQKIC8qIGZvcndhcmQgZGVj bGFyYXRpb25zIHRvIGF2b2lkIGV4cG9zaW5nIHdhaXRldmVudHNldC5jIGltcGxlbWVudGF0 aW9uIGRldGFpbHMgKi8KIHR5cGVkZWYgc3RydWN0IFdhaXRFdmVudFNldCBXYWl0RXZlbnRT ZXQ7CiAKLXN0cnVjdCBMYXRjaDsKK3N0cnVjdCBQR1BST0M7CiAKIC8qCiAgKiBwcm90b3R5 cGVzIGZvciBmdW5jdGlvbnMgaW4gd2FpdGV2ZW50c2V0LmMKICAqLwogZXh0ZXJuIHZvaWQg SW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCk7CisjaWZkZWYgV0lOMzIKK2V4dGVy biBIQU5ETEUgQ3JlYXRlU2hhcmVkV2FrZXVwSGFuZGxlKHZvaWQpOworI2VuZGlmCisKK3N0 cnVjdCBSZXNvdXJjZU93bmVyRGF0YTsKIAotZXh0ZXJuIFdhaXRFdmVudFNldCAqQ3JlYXRl V2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgcmVzb3duZXIsIGludCBuZXZlbnRzKTsKK2V4 dGVybiBXYWl0RXZlbnRTZXQgKkNyZWF0ZVdhaXRFdmVudFNldChzdHJ1Y3QgUmVzb3VyY2VP d25lckRhdGEgKnJlc293bmVyLCBpbnQgbmV2ZW50cyk7CiBleHRlcm4gdm9pZCBGcmVlV2Fp dEV2ZW50U2V0KFdhaXRFdmVudFNldCAqc2V0KTsKIGV4dGVybiB2b2lkIEZyZWVXYWl0RXZl bnRTZXRBZnRlckZvcmsoV2FpdEV2ZW50U2V0ICpzZXQpOwogZXh0ZXJuIGludAlBZGRXYWl0 RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQg ZmQsCi0JCQkJCQkJICBzdHJ1Y3QgTGF0Y2ggKmxhdGNoLCB2b2lkICp1c2VyX2RhdGEpOwor CQkJCQkJCSAgdWludDY0IGludGVycnVwdE1hc2ssIHZvaWQgKnVzZXJfZGF0YSk7CiBleHRl cm4gdm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVp bnQzMiBldmVudHMsCi0JCQkJCQkJc3RydWN0IExhdGNoICpsYXRjaCk7CisJCQkJCQkJdWlu dDY0IGludGVycnVwdE1hc2spOwogZXh0ZXJuIGludAlXYWl0RXZlbnRTZXRXYWl0KFdhaXRF dmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJCQkJCQkJIFdhaXRFdmVudCAqb2NjdXJy ZWRfZXZlbnRzLCBpbnQgbmV2ZW50cywKIAkJCQkJCQkgdWludDMyIHdhaXRfZXZlbnRfaW5m byk7CiBleHRlcm4gaW50CUdldE51bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKFdhaXRFdmVudFNl dCAqc2V0KTsKIGV4dGVybiBib29sIFdhaXRFdmVudFNldENhblJlcG9ydENsb3NlZCh2b2lk KTsKIAotI2lmbmRlZiBXSU4zMgorLyogbG93IGxldmVsIGZ1bmN0aW9ucyB1c2VkIHRvIGlt cGxlbWVudCBTZW5kSW50ZXJydXB0ICovCiBleHRlcm4gdm9pZCBXYWtldXBNeVByb2Modm9p ZCk7Ci1leHRlcm4gdm9pZCBXYWtldXBPdGhlclByb2MoaW50IHBpZCk7Ci0jZW5kaWYKK2V4 dGVybiB2b2lkIFdha2V1cE90aGVyUHJvYyhzdHJ1Y3QgUEdQUk9DICpwcm9jKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIFdBSVRFVkVOVFNFVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS90Y29wL3Rjb3Bwcm90LmggYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKaW5kZXgg NWJjNWJjZmIyMGQuLjc3YWI5NTBlYWUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29w L3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCkBAIC0xNiw3 ICsxNiw2IEBACiAKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJub2Rl cy9wbGFubm9kZXMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50Lmgi CiAKQEAgLTcwLDEzICs2OSw3IEBAIGV4dGVybiBMaXN0ICpwZ19wbGFuX3F1ZXJpZXMoTGlz dCAqcXVlcnl0cmVlcywgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJCSBpbnQg Y3Vyc29yT3B0aW9ucywKIAkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiAK LWV4dGVybiB2b2lkIGRpZShTSUdOQUxfQVJHUyk7Ci1wZ19ub3JldHVybiBleHRlcm4gdm9p ZCBxdWlja2RpZShTSUdOQUxfQVJHUyk7Ci1leHRlcm4gdm9pZCBTdGF0ZW1lbnRDYW5jZWxI YW5kbGVyKFNJR05BTF9BUkdTKTsKIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIEZsb2F0RXhj ZXB0aW9uSGFuZGxlcihTSUdOQUxfQVJHUyk7Ci1leHRlcm4gdm9pZCBIYW5kbGVSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudFJl YWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKLWV4dGVybiB2b2lkIFByb2Nlc3NDbGllbnRX cml0ZUludGVycnVwdChib29sIGJsb2NrZWQpOwogCiBleHRlcm4gdm9pZCBwcm9jZXNzX3Bv c3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJCQkJCQkJCQkgIEd1 Y0NvbnRleHQgY3R4LCBjb25zdCBjaGFyICoqZGJuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL21lbXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5o CmluZGV4IDExYWIxNzE3YTE2Li41ZDQ3NjQzZWI3NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvbWVtdXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5o CkBAIC0xMDEsNyArMTAxLDYgQEAgZXh0ZXJuIHZvaWQgTWVtb3J5Q29udGV4dENoZWNrKE1l bW9yeUNvbnRleHQgY29udGV4dCk7CiAjZGVmaW5lIE1lbW9yeUNvbnRleHRDb3B5QW5kU2V0 SWRlbnRpZmllcihjeHQsIGlkKSBcCiAJTWVtb3J5Q29udGV4dFNldElkZW50aWZpZXIoY3h0 LCBNZW1vcnlDb250ZXh0U3RyZHVwKGN4dCwgaWQpKQogCi1leHRlcm4gdm9pZCBIYW5kbGVM b2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc0xv Z01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bn c3RhdF9pbnRlcm5hbC5oCmluZGV4IDliOGZiYWUwMGVkLi4yY2Y4MDljZDdjMiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogCiAj aW5jbHVkZSAiY29tbW9uL2hhc2hmbl91bnN0YWJsZS5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvZHNoYXNoLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0 LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19udW1h LmMgYi9zcmMvcG9ydC9wZ19udW1hLmMKaW5kZXggODk1NDY2OTI3M2EuLjFkZjVlZTMwMzNm IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19udW1hLmMKKysrIGIvc3JjL3BvcnQvcGdfbnVt YS5jCkBAIC0xNiw3ICsxNiwxMCBAQAogI2luY2x1ZGUgImMuaCIKICNpbmNsdWRlIDx1bmlz dGQuaD4KIAotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lmbmRlZiBGUk9OVEVORAorI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2VuZGlm CiAjaW5jbHVkZSAicG9ydC9wZ19udW1hLmgiCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvcG9y dC9wZ3NsZWVwLmMgYi9zcmMvcG9ydC9wZ3NsZWVwLmMKaW5kZXggNGMzMWU1MDNlYjEuLjBi ZDUwYmRiMjNmIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ3NsZWVwLmMKKysrIGIvc3JjL3Bv cnQvcGdzbGVlcC5jCkBAIC0zMiwxMCArMzIsMTAgQEAKICAqCiAgKiBDQVVUSU9OOiBJdCdz IG5vdCBhIGdvb2QgaWRlYSB0byB1c2UgbG9uZyBzbGVlcHMgaW4gdGhlIGJhY2tlbmQuICBU aGV5IHdpbGwKICAqIHNpbGVudGx5IHJldHVybiBlYXJseSBpZiBhIHNpZ25hbCBpcyBjYXVn aHQsIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZQotICogbGF0Y2hlcyBiZWluZyBzZXQgb24g bW9zdCBPU2VzLCBhbmQgZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhhdCBzZXQgTXlMYXRjaAot ICogbWlnaHQgaGFwcGVuIHRvIHJ1biBiZWZvcmUgdGhlIHNsZWVwIGJlZ2lucywgYWxsb3dp bmcgdGhlIGZ1bGwgZGVsYXkuCi0gKiBCZXR0ZXIgcHJhY3RpY2UgaXMgdG8gdXNlIFdhaXRM YXRjaCgpIHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0IGJhY2tlbmRzCi0gKiByZXNwb25kIHRv IGxhdGNoZXMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCisgKiBpbnRlcnJ1cHRzIGJlaW5nIHJl Y2VpdmVkIG9uIG1vc3QgT1NlcywgYW5kIGV2ZW4gc2lnbmFsIGhhbmRsZXJzIHRoYXQgcmFp c2UKKyAqIGFuIGludGVycnVwdCBtaWdodCBoYXBwZW4gdG8gcnVuIGJlZm9yZSB0aGUgc2xl ZXAgYmVnaW5zLCBhbGxvd2luZyB0aGUgZnVsbAorICogZGVsYXkuICBCZXR0ZXIgcHJhY3Rp Y2UgaXMgdG8gdXNlIFdhaXRJbnRlcnJ1cHQoKSB3aXRoIGEgdGltZW91dCwgc28gdGhhdAor ICogYmFja2VuZHMgcmVzcG9uZCB0byBpbnRlcnJ1cHRzIGFuZCBzaWduYWxzIHByb21wdGx5 LgogICovCiB2b2lkCiBwZ191c2xlZXAobG9uZyBtaWNyb3NlYykKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb250ZXN0ZXIuYwppbmRleCBhMGFlYzA0ZDk5NC4uNzc3ZDAwMjgzZGEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYworKysgYi9z cmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKQEAgLTc2Miw3ICs3NjIsNyBA QCB0cnlfY29tcGxldGVfc3RlcHMoVGVzdFNwZWMgKnRlc3RzcGVjLCBQZXJtdXRhdGlvblN0 ZXAgKip3YWl0aW5nLAogCXsKIAkJaW50CQkJdyA9IDA7CiAKLQkJLyogUmVzZXQgbGF0Y2g7 IHdlIG9ubHkgY2FyZSBhYm91dCBub3RpY2VzIHJlY2VpdmVkIHdpdGhpbiBsb29wLiAqLwor CQkvKiBSZXNldCBmbGFnOyB3ZSBvbmx5IGNhcmUgYWJvdXQgbm90aWNlcyByZWNlaXZlZCB3 aXRoaW4gbG9vcC4gKi8KIAkJYW55X25ld19ub3RpY2UgPSBmYWxzZTsKIAogCQkvKiBMaWtl d2lzZSwgdGhlc2UgdmFyaWFibGVzIHJlc2V0IGZvciBlYWNoIHJldHJ5LiAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IDU3OWU1OTMzZDI4Li5lNjE2OWY5 N2E5ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5j CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwpAQCAtMTUsNiAr MTUsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCkBAIC0xMzMsNiArMTM0LDcgQEAg c2V0dXBfZHluYW1pY19zaGFyZWRfbWVtb3J5KGludDY0IHF1ZXVlX3NpemUsIGludCBud29y a2VycywKIAogCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KIAloZHIgPSBzaG1f dG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKHRlc3Rfc2htX21xX2hlYWRlcikpOworCWhkci0+ bGVhZGVyX3Byb2NfbnVtYmVyID0gTXlQcm9jTnVtYmVyOwogCVNwaW5Mb2NrSW5pdCgmaGRy LT5tdXRleCk7CiAJaGRyLT53b3JrZXJzX3RvdGFsID0gbndvcmtlcnM7CiAJaGRyLT53b3Jr ZXJzX2F0dGFjaGVkID0gMDsKQEAgLTIyMiw4ICsyMjQsNiBAQCBzZXR1cF9iYWNrZ3JvdW5k X3dvcmtlcnMoaW50IG53b3JrZXJzLCBkc21fc2VnbWVudCAqc2VnKQogCXNwcmludGYod29y a2VyLmJnd19mdW5jdGlvbl9uYW1lLCAidGVzdF9zaG1fbXFfbWFpbiIpOwogCXNucHJpbnRm KHdvcmtlci5iZ3dfdHlwZSwgQkdXX01BWExFTiwgInRlc3Rfc2htX21xIik7CiAJd29ya2Vy LmJnd19tYWluX2FyZyA9IFVJbnQzMkdldERhdHVtKGRzbV9zZWdtZW50X2hhbmRsZShzZWcp KTsKLQkvKiBzZXQgYmd3X25vdGlmeV9waWQsIHNvIHdlIGNhbiBkZXRlY3QgaWYgdGhlIHdv cmtlciBzdG9wcyAqLwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAog CS8qIFJlZ2lzdGVyIHRoZSB3b3JrZXJzLiAqLwogCWZvciAoaSA9IDA7IGkgPCBud29ya2Vy czsgKytpKQpAQCAtMjY0LDYgKzI2NCw5IEBAIHdhaXRfZm9yX3dvcmtlcnNfdG9fYmVjb21l X3JlYWR5KHdvcmtlcl9zdGF0ZSAqd3N0YXRlLAogCXsKIAkJaW50CQkJd29ya2Vyc19yZWFk eTsKIAorCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4g Ki8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwogCQkvKiBJ ZiBhbGwgdGhlIHdvcmtlcnMgYXJlIHJlYWR5LCB3ZSBoYXZlIHN1Y2NlZWRlZC4gKi8KIAkJ U3BpbkxvY2tBY3F1aXJlKCZoZHItPm11dGV4KTsKIAkJd29ya2Vyc19yZWFkeSA9IGhkci0+ d29ya2Vyc19yZWFkeTsKQEAgLTI4NiwxMSArMjg5LDkgQEAgd2FpdF9mb3Jfd29ya2Vyc190 b19iZWNvbWVfcmVhZHkod29ya2VyX3N0YXRlICp3c3RhdGUsCiAJCQl3ZV9iZ3dvcmtlcl9z dGFydHVwID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJUZXN0U2htTXFCZ1dvcmtlclN0YXJ0 dXAiKTsKIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0J CQkJCQkgd2VfYmd3b3JrZXJfc3RhcnR1cCk7Ci0KLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNv IHdlIGRvbid0IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBX YWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9X QUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAs CisJCQkJCQkJIHdlX2Jnd29ya2VyX3N0YXJ0dXApOwogCiAJCS8qIEFuIGludGVycnVwdCBt YXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht X21xL3Rlc3QuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCmluZGV4 IGZlMTc5NGM2MDc3Li5kODY3NWFjMTQyMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobV9tcS90ZXN0LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9t cS90ZXN0LmMKQEAgLTE0LDcgKzE0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAj aW5jbHVkZSAiZm1nci5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJ2YXJhdHQu aCIKIApAQCAtMTcwLDYgKzE3MCw4IEBAIHRlc3Rfc2htX21xX3BpcGVsaW5lZChQR19GVU5D VElPTl9BUkdTKQogCXsKIAkJYm9vbAkJd2FpdCA9IHRydWU7CiAKKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwogCQkvKgogCQkgKiBJZiB3ZSBoYXZlbid0 IHlldCBzZW50IHRoZSBtZXNzYWdlIHRoZSByZXF1aXNpdGUgbnVtYmVyIG9mIHRpbWVzLAog CQkgKiB0cnkgYWdhaW4gdG8gc2VuZCBpdCBub3cuICBOb3RlIHRoYXQgd2hlbiBzaG1fbXFf c2VuZCgpIHJldHVybnMKQEAgLTIzNCwxMyArMjM2LDEzIEBAIHRlc3Rfc2htX21xX3BpcGVs aW5lZChQR19GVU5DVElPTl9BUkdTKQogCiAJCQkvKgogCQkJICogSWYgd2UgbWFkZSBubyBw cm9ncmVzcywgd2FpdCBmb3Igb25lIG9mIHRoZSBvdGhlciBwcm9jZXNzZXMgdG8KLQkJCSAq IHdoaWNoIHdlIGFyZSBjb25uZWN0ZWQgdG8gc2V0IG91ciBsYXRjaCwgaW5kaWNhdGluZyB0 aGF0IHRoZXkKLQkJCSAqIGhhdmUgcmVhZCBvciB3cml0dGVuIGRhdGEgYW5kIHRoZXJlZm9y ZSB0aGVyZSBtYXkgbm93IGJlIHdvcmsKLQkJCSAqIGZvciB1cyB0byBkby4KKwkJCSAqIHdo aWNoIHdlIGFyZSBjb25uZWN0ZWQgdG8gc2VuZCB1cyB0aGUgSU5URVJSVVBUX1dBSVRfV0FL RVVQCisJCQkgKiBpbnRlcnJ1cHQsIGluZGljYXRpbmcgdGhhdCB0aGV5IGhhdmUgcmVhZCBv ciB3cml0dGVuIGRhdGEgYW5kCisJCQkgKiB0aGVyZWZvcmUgdGhlcmUgbWF5IG5vdyBiZSB3 b3JrIGZvciB1cyB0byBkby4KIAkJCSAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkJCSB3ZV9t ZXNzYWdlX3F1ZXVlKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2Fp dEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FL RVVQLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwK KwkJCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEv dGVzdF9zaG1fbXEuaCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdF9zaG1f bXEuaAppbmRleCBiNmEwMjkwMjg5Yy4uNmYwODI2YmUzNDAgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdF9zaG1fbXEuaAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Rfc2htX21xLmgKQEAgLTI4LDYgKzI4LDggQEAKICAq LwogdHlwZWRlZiBzdHJ1Y3QKIHsKKwlQcm9jTnVtYmVyCWxlYWRlcl9wcm9jX251bWJlcjsK KwogCXNsb2NrX3QJCW11dGV4OwogCWludAkJCXdvcmtlcnNfdG90YWw7CiAJaW50CQkJd29y a2Vyc19hdHRhY2hlZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1f bXEvd29ya2VyLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jCmlu ZGV4IDM2OGU0ZjNmMjM0Li5jNzViNWVkYWFmYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htX21xL3dvcmtlci5jCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jl cy5oIgogCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtNTIsMTUgKzUyLDEy IEBAIHRlc3Rfc2htX21xX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2htX21xX2hhbmRsZSAq b3V0cWg7CiAJdm9sYXRpbGUgdGVzdF9zaG1fbXFfaGVhZGVyICpoZHI7CiAJaW50CQkJbXl3 b3JrZXJudW1iZXI7Ci0JUEdQUk9DCSAgICpyZWdpc3RyYW50OwogCiAJLyoKLQkgKiBFc3Rh Ymxpc2ggc2lnbmFsIGhhbmRsZXJzLgotCSAqCi0JICogV2Ugd2FudCBDSEVDS19GT1JfSU5U RVJSVVBUUygpIHRvIGtpbGwgb2ZmIHRoaXMgd29ya2VyIHByb2Nlc3MganVzdCBhcwotCSAq IGl0IHdvdWxkIGEgbm9ybWFsIHVzZXIgYmFja2VuZC4gIFRvIG1ha2UgdGhhdCBoYXBwZW4s IHdlIHVzZSBkaWUoKS4KKwkgKiBUaGUgc3RhbmRhcmQgaW50ZXJydXB0IGFuZCBzaWduYWwg aGFuZGxlcnMgYXJlIE9LIGZvciB1cywgaW4gcGFydGljdWxhcgorCSAqIHdlIHdhbnQgQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKSB0byBraWxsIG9mZiB0aGlzIHdvcmtlciBwcm9jZXNzIGp1 c3QgYXMKKwkgKiBpdCB3b3VsZCBhIG5vcm1hbCB1c2VyIGJhY2tlbmQuIEp1c3QgdW5ibG9j ayBzaWduYWxzLgogCSAqLwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CiAJQmFja2dyb3Vu ZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CiAKIAkvKgpAQCAtMTIyLDEzICsxMTksNyBAQCB0 ZXN0X3NobV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQogCVNwaW5Mb2NrQWNxdWlyZSgmaGRy LT5tdXRleCk7CiAJKytoZHItPndvcmtlcnNfcmVhZHk7CiAJU3BpbkxvY2tSZWxlYXNlKCZo ZHItPm11dGV4KTsKLQlyZWdpc3RyYW50ID0gQmFja2VuZFBpZEdldFByb2MoTXlCZ3dvcmtl ckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7Ci0JaWYgKHJlZ2lzdHJhbnQgPT0gTlVMTCkKLQl7 Ci0JCWVsb2coREVCVUcxLCAicmVnaXN0cmFudCBiYWNrZW5kIGhhcyBleGl0ZWQgcHJlbWF0 dXJlbHkiKTsKLQkJcHJvY19leGl0KDEpOwotCX0KLQlTZXRMYXRjaCgmcmVnaXN0cmFudC0+ cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgaGRy LT5sZWFkZXJfcHJvY19udW1iZXIpOwogCiAJLyogRG8gdGhlIHdvcmsuICovCiAJY29weV9t ZXNzYWdlcyhpbnFoLCBvdXRxaCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3dv cmtlcl9zcGkvd29ya2VyX3NwaS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dv cmtlcl9zcGkuYwppbmRleCBkMWU0YTJiZDk1Mi4uOGY5ZmE5ZTE4MzQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtNCw4ICs0LDggQEAKICAq CQlTYW1wbGUgYmFja2dyb3VuZCB3b3JrZXIgY29kZSB0aGF0IGRlbW9uc3RyYXRlcyB2YXJp b3VzIGNvZGluZwogICoJCXBhdHRlcm5zOiBlc3RhYmxpc2hpbmcgYSBkYXRhYmFzZSBjb25u ZWN0aW9uOyBzdGFydGluZyBhbmQgY29tbWl0dGluZwogICoJCXRyYW5zYWN0aW9uczsgdXNp bmcgR1VDIHZhcmlhYmxlcywgYW5kIGhlZWRpbmcgU0lHSFVQIHRvIHJlcmVhZAotICoJCXRo ZSBjb25maWd1cmF0aW9uIGZpbGU7IHJlcG9ydGluZyB0byBwZ19zdGF0X2FjdGl2aXR5OyB1 c2luZyB0aGUKLSAqCQlwcm9jZXNzIGxhdGNoIHRvIHNsZWVwIGFuZCBleGl0IGluIGNhc2Ug b2YgcG9zdG1hc3RlciBkZWF0aC4KKyAqCQl0aGUgY29uZmlndXJhdGlvbiBmaWxlOyByZXBv cnRpbmcgdG8gcGdfc3RhdF9hY3Rpdml0eTsgdXNpbmcKKyAqCQlXYWl0SW50ZXJydXB0IHRv IHNsZWVwIGFuZCBleGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KICAqCiAgKiBU aGlzIGNvZGUgY29ubmVjdHMgdG8gYSBkYXRhYmFzZSwgY3JlYXRlcyBhIHNjaGVtYSBhbmQg dGFibGUsIGFuZCBzdW1tYXJpemVzCiAgKiB0aGUgbnVtYmVycyBjb250YWluZWQgdGhlcmVp bi4gIFRvIHNlZSBpdCB3b3JraW5nLCBpbnNlcnQgYW4gaW5pdGlhbCB2YWx1ZQpAQCAtMjMs MTAgKzIzLDggQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAvKiBUaGVzZSBhcmUgYWx3 YXlzIG5lY2Vzc2FyeSBmb3IgYSBiZ3dvcmtlciAqLwotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jn d29ya2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRl ICJzdG9yYWdlL2xhdGNoLmgiCiAKIC8qIHRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhp cyBwYXJ0aWN1bGFyIHdvcmtlcidzIGNvZGUgKi8KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5o IgpAQCAtMTU1LDExICsxNTMsMTAgQEAgd29ya2VyX3NwaV9tYWluKERhdHVtIG1haW5fYXJn KQogCXAgKz0gc2l6ZW9mKE9pZCk7CiAJbWVtY3B5KCZmbGFncywgcCwgc2l6ZW9mKGJpdHMz MikpOwogCi0JLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycyBiZWZvcmUgdW5ibG9ja2lu ZyBzaWduYWxzLiAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQotCS8qIFdlJ3JlIG5vdyBy ZWFkeSB0byByZWNlaXZlIHNpZ25hbHMgKi8KKwkvKgorCSAqIFRoZSBzdGFuZGFyZCBpbnRl cnJ1cHQgYW5kIHNpZ25hbCBoYW5kbGVycyBhcmUgT0sgZm9yIHVzOyB1bmJsb2NrCisJICog c2lnbmFscy4KKwkgKi8KIAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAog CS8qIENvbm5lY3QgdG8gb3VyIGRhdGFiYXNlICovCkBAIC0yMTMsMjYgKzIxMCwyNSBAQCB3 b3JrZXJfc3BpX21haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAkJLyoKIAkJICogQmFja2dyb3Vu ZCB3b3JrZXJzIG11c3RuJ3QgY2FsbCB1c2xlZXAoKSBvciBhbnkgZGlyZWN0IGVxdWl2YWxl bnQ6Ci0JCSAqIGluc3RlYWQsIHRoZXkgbWF5IHdhaXQgb24gdGhlaXIgcHJvY2VzcyBsYXRj aCwgd2hpY2ggc2xlZXBzIGFzCi0JCSAqIG5lY2Vzc2FyeSwgYnV0IGlzIGF3YWtlbmVkIGlm IHBvc3RtYXN0ZXIgZGllcy4gIFRoYXQgd2F5IHRoZQotCQkgKiBiYWNrZ3JvdW5kIHByb2Nl c3MgZ29lcyBhd2F5IGltbWVkaWF0ZWx5IGluIGFuIGVtZXJnZW5jeS4KKwkJICogaW5zdGVh ZCwgdGhleSBtYXkgdXNlIFdhaXRJbnRlcnJ1cHQsIHdoaWNoIHNsZWVwcyBhcyBuZWNlc3Nh cnksIGJ1dAorCQkgKiBpcyBhd2FrZW5lZCBpZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdh eSB0aGUgYmFja2dyb3VuZCBwcm9jZXNzCisJCSAqIGdvZXMgYXdheSBpbW1lZGlhdGVseSBp biBhbiBlbWVyZ2VuY3kuCiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkgd29ya2VyX3NwaV9uYXB0aW1lICogMTAwMEwsCi0JCQkJCQkgd29ya2VyX3Nw aV93YWl0X2V2ZW50X21haW4pOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkg V2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJS VVBUX0NPTkZJR19SRUxPQUQsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAx MDAwTCwKKwkJCQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21haW4pOwogCiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyoKLQkJICogSW4gY2FzZSBvZiBhIFNJR0hVUCwg anVzdCByZWxvYWQgdGhlIGNvbmZpZ3VyYXRpb24uCisJCSAqIFJlbG9hZCBjb25maWd1cmF0 aW9uIGlmIHJlcXVlc3RlZC4gIFRoaXMgaXMgbm90IGRvbmUgYnkKKwkJICogQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKSBiZWNhdXNlIHdlIG9ubHkgd2FudCBpdCB0byBoYXBwZW4gaGVyZSBp bgorCQkgKiB0aGUgbWFpbiBsb29wLgogCQkgKi8KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRp bmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1 bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKgogCQkgKiBTdGFydCBhIHRyYW5zYWN0 aW9uIG9uIHdoaWNoIHdlIGNhbiBydW4gcXVlcmllcy4gIE5vdGUgdGhhdCBlYWNoCkBAIC0z NjYsNyArMzYyLDYgQEAgX1BHX2luaXQodm9pZCkKIAl3b3JrZXIuYmd3X3Jlc3RhcnRfdGlt ZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCXNwcmludGYod29ya2VyLmJnd19saWJyYXJ5X25h bWUsICJ3b3JrZXJfc3BpIik7CiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUs ICJ3b3JrZXJfc3BpX21haW4iKTsKLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOwogCiAJ LyoKIAkgKiBOb3cgZmlsbCBpbiB3b3JrZXItc3BlY2lmaWMgZGF0YSwgYW5kIGRvIHRoZSBh Y3R1YWwgcmVnaXN0cmF0aW9ucy4KQEAgLTQyMCw4ICs0MTUsNiBAQCB3b3JrZXJfc3BpX2xh dW5jaChQR19GVU5DVElPTl9BUkdTKQogCXNucHJpbnRmKHdvcmtlci5iZ3dfbmFtZSwgQkdX X01BWExFTiwgIndvcmtlcl9zcGkgZHluYW1pYyB3b3JrZXIgJWQiLCBpKTsKIAlzbnByaW50 Zih3b3JrZXIuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFtaWMiKTsK IAl3b3JrZXIuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShpKTsKLQkvKiBzZXQgYmd3 X25vdGlmeV9waWQgc28gdGhhdCB3ZSBjYW4gdXNlIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2Vy U3RhcnR1cCAqLwotCXdvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAogCS8q IGV4dHJhY3QgZmxhZ3MsIGlmIGFueSAqLwogCW5kaW0gPSBBUlJfTkRJTShhcnIpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2ZTJkODc2YTQwZi4uZWIzYmRmYzMzZTkg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzI3LDYgKzEzMjcsNyBAQCBJ bnRlZ2VyCiBJbnRlZ2VyU2V0CiBJbnRlcm5hbERlZmF1bHRBQ0wKIEludGVybmFsR3JhbnQK K0ludGVycnVwdE1hc2sKIEludGVydmFsCiBJbnRlcnZhbEFnZ1N0YXRlCiBJbnRvQ2xhdXNl CkBAIC0xNTY0LDcgKzE1NjUsNiBAQCBMWjRTdGF0ZQogTGFiZWxQcm92aWRlcgogTGFnVHJh Y2tlcgogTGFyZ2VPYmplY3REZXNjCi1MYXRjaAogTGF1bmNoZXJMYXN0U3RhcnRUaW1lc0Vu dHJ5CiBMZXJwRnVuYwogTGV4RGVzY3IKQEAgLTIwMjgsNiArMjAyOCw3IEBAIFBMeVVuaWNv ZGVfRnJvbVN0cmluZ0FuZFNpemVfdAogUEx5X2Vsb2dfaW1wbF90CiBQTUNoaWxkCiBQTUNo aWxkUG9vbAorUE1DaGlsZFNsb3REYXRhCiBQTUlOSURVTVBfQ0FMTEJBQ0tfSU5GT1JNQVRJ T04KIFBNSU5JRFVNUF9FWENFUFRJT05fSU5GT1JNQVRJT04KIFBNSU5JRFVNUF9VU0VSX1NU UkVBTV9JTkZPUk1BVElPTgotLSAKMi40Ny4zCgo= --------------ZHgTx0qFX1GNOQa2CNNq5QhB--