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 1vtRPM-007uD9-1e for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 14:23:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vtRPL-008Elk-1Y for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 14:23:03 +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 1vtRPK-008ElU-2G for pgsql-hackers@lists.postgresql.org; Fri, 20 Feb 2026 14:23:02 +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 1vtRPF-00000000OMf-1EFG for pgsql-hackers@postgresql.org; Fri, 20 Feb 2026 14:23:02 +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 4fHXXG4vKcz49Q71; Fri, 20 Feb 2026 16:22:54 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1771597376; 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=dVIM6HLRM6ccRb81wcFzH7tKn6Mcm/h+Ey440sMme5w=; b=gA2yPdb/5t7ZNeiKrLuSy6St/zFYvkfjPVYLVEEUHBxUq8x/Yc0dh2F1ivP41UmuwDMO+z E8Ck21xKvYlTLr/iPVCh7c/VY+AG3WzqlLQmv7LvPkshJa0grw/KRZCSkM2TSJhhOQVdjQ gOuC0CE8zARq7RGpDavG0Rg8UGxC4B0b9CYX9Olx3F7IVU7CIKMtZf3+6El2kaVpLonQuH TduG9uFV1N/p0iBlBkdNsn2bvriahSDtzZ6BzwEc+rUsuIUJWHMdc8qRpo65Kq6etkbAvq 8R76Xl3S1XicsAkphxT0YgCF3H7uAx8zDa1LJciF1EIe/insTm6FCRpnx+JHaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1771597376; 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=dVIM6HLRM6ccRb81wcFzH7tKn6Mcm/h+Ey440sMme5w=; b=OZ9gl7iecnaep/FWNV4wY8bYH6FDgd3EYVXOaT4lHrk5danHDJN7nf38avdRK87FtXNe+H Ommmw0lQ3p95Sjf5IJMwGg7rShKAL2tx7JfoZwO2kD/Rtum13p4vItDJAd1lDngGqeMetc Pg5vJIOVSlOQ34TiHFsTAMf+YXhRLeF0nVT3DtL+KBZwoCNqHWs2g477TnmTug68CGFj2V xtrZYcavNVfQQVfCJAClQAD/XUAqXVx9KT9jQzcmloA1Z7EpuzX8d+KAWc/qd1S6SLrG29 /b9xrHadhOCpMhfjFPjIMOOnyPf9Ua9fOaCseYRyAKdFnykpkF5Bs5Dgu8VibQ== 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=1771597376; b=wApgplAr9ST3y0CFwjcrqZ54RxPMAskTXMZyjmwFKj2bjOXEhiURxqPjcEr6e684VGcbj6 7ZqsXvL1xnh8a1vYaR5dFCb1d2SXM/wgU1yaT/cr76ivK0R9MIbeCycswpcH/f5sldm5xp xEoMEaRyVZI0eFS2FKA3DI1bKpwYd79K++42rIxnyoqQQZOEyahAsz8NYkkdJ5zcUe90vD IuxXjhTh0J5VuYabCnALX0X8C4Fhu0G3IfJqRTpZkmE5TO8Gw1vBheACLRxuEGyPOzSXQP OErZYrQI+RBMNIG+HZgY4RFj5JCDrhEWRaksRkU05p6Ze2UlKmxdr323jisr1Q== Content-Type: multipart/mixed; boundary="------------Xsr2PBMWcn0m5VqN9pqECXzS" Message-ID: Date: Fri, 20 Feb 2026 16:22:48 +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> <818bafaf-1e77-4c78-8037-d7120878d87c@iki.fi> <78c102b3-f1a6-4c70-a46f-2f04221b6193@iki.fi> Content-Language: en-US In-Reply-To: <78c102b3-f1a6-4c70-a46f-2f04221b6193@iki.fi> 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. --------------Xsr2PBMWcn0m5VqN9pqECXzS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 18/02/2026 02:11, Heikki Linnakangas wrote: > On 14/02/2026 23:56, Andres Freund wrote: >> Could we have the mask of interrupts that WaitInterrupt() is waiting >> for in a >> second variable? That way we could avoid interrupting WaitInterrupt() >> when >> raising or sending a signal that WaitInterrupt() is not waiting for. >> I think >> that can be one race-freely with a bit of care? > > Yeah, I thought of that, but I'm not sure what the right tradeoff here > is. I doubt the spurious wakeups matter much in practice. Then again, > maybe it's not much more complicated, so maybe I should try that. > > Now with this new version, the same consideration applies to the > CFI_ATTENTION flag I added. We could expose a process's > CheckForInterruptsMask alongside the pending interrupts, so it would be > SendInterrupt()'s responsibility to check if the receiving backend's > CheckForInterruptsMask includes the interrupt that's being sent. That > would similarly eliminate the "false positive" ProcessInterrupts() calls > from CHECK_FOR_INTERRUPTS(), by moving the logic to the senders. The > SLEEPING_ON_INTERRUPTS and CFI_ATTENTION flags are quite symmetrical. I tried that approach, exposing an "attention bitmask" where a backend advertises which interrupts it's currently interested in. I think I like it. Patch attached. The relevant changes for this "attention mechanism" are in the last patch, but there are some other small changes too so this split into patches is a little messy. I moved the list of standard interrupts to a separate header file, for example. So for reviewing, I recommend reading the resulting interrupt.h and interrupt.c files after applying all the patches, instead of trying to read the diff for those. - Heikki --------------Xsr2PBMWcn0m5VqN9pqECXzS Content-Type: text/x-patch; charset=UTF-8; name="v11-0001-Centralize-resetting-SIGCHLD-handler.patch" Content-Disposition: attachment; filename="v11-0001-Centralize-resetting-SIGCHLD-handler.patch" Content-Transfer-Encoding: base64 RnJvbSBiZTgxZDk1N2ZlNzQ4MjE1YzhiODJjMDMyNWI2ZTQ3OTMwYWE2ZjE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgOCBKYW4gMjAyNiAyMDoyMjo0MyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjExIDEvNF0gQ2VudHJhbGl6ZSByZXNldHRpbmcgU0lHQ0hMRCBo YW5kbGVyCgotLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAg ICB8ICAyIC0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAg fCAgMSAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMgICAgICAgICAgfCAg NSAtLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgIHwg IDUgLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgICAgICAgICAgICB8 ICAzIC0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMgICAgICAgICAgIHwg IDUgLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMgICAgICAgICB8 ICA1IC0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyAgICAg fCAgNSAtLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYyAgICAgICAg IHwgIDUgLS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMu YyB8ICAxIC0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICB8 ICAzIC0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgIHwg IDMgLS0tCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgfCAg NyAtLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAgICAgICAg fCAxNCArKysrKysrKysrKysrKwogMTQgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygr KSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpp bmRleCA2ZmRlNzQwNDY1Zi4uODljMmI0Zjk1MDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCkBAIC00MTEsNyArNDExLDYgQEAgQXV0b1ZhY0xhdW5jaGVyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBx c2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25h bChTSUdVU1IyLCBhdmxfc2lndXNyMl9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdGUEUsIEZs b2F0RXhjZXB0aW9uSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7CiAK IAkvKgogCSAqIENyZWF0ZSBhIHBlci1iYWNrZW5kIFBHUFJPQyBzdHJ1Y3QgaW4gc2hhcmVk IG1lbW9yeS4gIFdlIG11c3QgZG8gdGhpcwpAQCAtMTQyMiw3ICsxNDIxLDYgQEAgQXV0b1Zh Y1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxl cik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHRlBFLCBG bG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwotCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwog CiAJLyoKIAkgKiBDcmVhdGUgYSBwZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNoYXJl ZCBtZW1vcnkuICBXZSBtdXN0IGRvIHRoaXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIu YwppbmRleCA4Njc4ZWE0ZTEzOS4uMTMzYWY1YWVlOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd29ya2VyLmMKQEAgLTc4MSw3ICs3ODEsNiBAQCBCYWNrZ3JvdW5kV29ya2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCiAJ cHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lH Tik7Ci0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7CiAKIAkvKgogCSAqIElmIGFuIGV4 Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCwgcHJvY2Vzc2luZyByZXN1bWVzIGhlcmUuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKaW5kZXggMDk1NmJkMzlhODUuLmRiZDY3MGMxNmNj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCkBAIC0xMDgsMTEgKzEwOCw2IEBA IEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90 IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOwogCi0JLyoKLQkg KiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBi dXQgbm90IGhlcmUKLQkgKi8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsKLQogCS8q CiAJICogV2UganVzdCBzdGFydGVkLCBhc3N1bWUgdGhlcmUgaGFzIGJlZW4gZWl0aGVyIGEg c2h1dGRvd24gb3IKIAkgKiBlbmQtb2YtcmVjb3Zlcnkgc25hcHNob3QuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwppbmRleCBlMDNjMTkxMjNiYy4uMDNhZWZhNWI2 NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtMjIwLDEx ICsyMjAsNiBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwg c2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25h bF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNpZ25hbEhhbmRsZXJG b3JTaHV0ZG93blJlcXVlc3QpOwogCi0JLyoKLQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhh dCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGhlcmUKLQkgKi8KLQlwcXNp Z25hbChTSUdDSExELCBTSUdfREZMKTsKLQogCS8qCiAJICogSW5pdGlhbGl6ZSBzbyB0aGF0 IGZpcnN0IHRpbWUtZHJpdmVuIGV2ZW50IGhhcHBlbnMgYXQgdGhlIGNvcnJlY3QgdGltZS4K IAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IDgyNzMxZTQ1MmZjLi4xMGE1 ZWY5ZTE1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC0yMzcsOSArMjM3LDYg QEAgUGdBcmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgcGdhcmNoX3dha2VuX3N0b3ApOwogCi0J LyogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIg YnV0IG5vdCBoZXJlICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7Ci0KIAkvKiBV bmJsb2NrIHNpZ25hbHMgKHRoZXkgd2VyZSBibG9ja2VkIHdoZW4gdGhlIHBvc3RtYXN0ZXIg Zm9ya2VkIHVzKSAqLwogCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmVW5CbG9ja1NpZywg TlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKaW5kZXggY2RiZTUzZGQyNjIu LjMzMGMxMGRkYjBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0 dXAuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYwpAQCAtMjM0LDEx ICsyMzQsNiBAQCBTdGFydHVwUHJvY2Vzc01haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2ln bmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU3RhcnR1cFByb2NU cmlnZ2VySGFuZGxlcik7CiAKLQkvKgotCSAqIFJlc2V0IHNvbWUgc2lnbmFscyB0aGF0IGFy ZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZQotCSAqLwotCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOwotCiAJLyoKIAkgKiBSZWdpc3RlciB0aW1lb3V0cyBuZWVk ZWQgZm9yIHN0YW5kYnkgbW9kZQogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2Vy LmMKaW5kZXggODZjNWUzNzZiNDAuLjg1MTViZmI5NjUzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3lzbG9nZ2VyLmMKQEAgLTI4MywxMSArMjgzLDYgQEAgU3lzTG9nZ2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2ln bmFsKFNJR1VTUjEsIHNpZ1VzcjFIYW5kbGVyKTsJLyogcmVxdWVzdCBsb2cgcm90YXRpb24g Ki8KIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKIAotCS8qCi0JICogUmVzZXQgc29t ZSBzaWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJl Ci0JICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7Ci0KIAlzaWdwcm9jbWFzayhT SUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCiAjaWZkZWYgV0lOMzIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXggNzQyMTM3ZWRhZDYuLjRl NGVlZDRkMDc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1h cml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpA QCAtMjYzLDExICsyNjMsNiBAQCBXYWxTdW1tYXJpemVyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCQkJCQkJQUxMT0NTRVRf REVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNvbnRleHQpOwogCi0J LyoKLQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1h c3RlciBidXQgbm90IGhlcmUKLQkgKi8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsK LQogCS8qCiAJICogSWYgYW4gZXhjZXB0aW9uIGlzIGVuY291bnRlcmVkLCBwcm9jZXNzaW5n IHJlc3VtZXMgaGVyZS4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvd2Fsd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCmlu ZGV4IDdjMGUyODA5YzE3Li44Y2E3YjA3ZTk0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWx3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHdyaXRlci5jCkBAIC0xMDgsMTEgKzEwOCw2IEBAIFdhbFdyaXRlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChT SUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWduYWwoU0lHVVNS MiwgU0lHX0lHTik7IC8qIG5vdCB1c2VkICovCiAKLQkvKgotCSAqIFJlc2V0IHNvbWUgc2ln bmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZQotCSAq LwotCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwotCiAJLyoKIAkgKiBDcmVhdGUgYSBt ZW1vcnkgY29udGV4dCB0aGF0IHdlIHdpbGwgZG8gYWxsIG91ciB3b3JrIGluLiAgV2UgZG8g dGhpcyBzbwogCSAqIHRoYXQgd2UgY2FuIHJlc2V0IHRoZSBjb250ZXh0IGR1cmluZyBlcnJv ciByZWNvdmVyeSBhbmQgdGhlcmVieSBhdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDA2MmEwOGNjYjg4Li41ZTFlZTdlNDcyOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAt MTUzNiw3ICsxNTM2LDYgQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXBxc2lnbmFsKFNJR1VT UjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBT SUdfSUdOKTsKIAlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdD SExELCBTSUdfREZMKTsKIAogCWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKE15UHJvY1BpZCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCmluZGV4IDdjMWI4NzU3 ZDdkLi5lYzZjNTE2NTMwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jCkBAIC0yNTcsOSArMjU3LDYgQEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0 YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJcHFzaWduYWwoU0lHVVNS MSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJ R19JR04pOwogCi0JLyogUmVzZXQgc29tZSBzaWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5 IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlICovCi0JcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RG TCk7Ci0KIAkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KIAlsb2Fk X2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAJaWYgKFdhbFJlY2VpdmVyRnVu Y3Rpb25zID09IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IDJjZGU4ZWJjNzI5Li41YWNjOGVlM2FjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTM3NDMsOSArMzc0Myw2IEBAIFdhbFNuZFNpZ25hbHModm9pZCkKIAlw cXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CiAJcHFzaWdu YWwoU0lHVVNSMiwgV2FsU25kTGFzdEN5Y2xlSGFuZGxlcik7CS8qIHJlcXVlc3QgYSBsYXN0 IGN5Y2xlIGFuZAogCQkJCQkJCQkJCQkJICogc2h1dGRvd24gKi8KLQotCS8qIFJlc2V0IHNv bWUgc2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVy ZSAqLwotCXBxc2lnbmFsKFNJR0NITEQsIFNJR19ERkwpOwogfQogCiAvKiBSZXBvcnQgc2hh cmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgV2FsU25kU2htZW1Jbml0ICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggZDAxYTA5ZGQwYzQuLjVkNjZjODA1NjdjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCkBAIC00Mjg1LDEzICs0Mjg1LDYgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIg KmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCXBxc2lnbmFsKFNJR1VTUjEsIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAkJcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lH Tik7CiAJCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKLQotCQkv KgotCQkgKiBSZXNldCBzb21lIHNpZ25hbHMgdGhhdCBhcmUgYWNjZXB0ZWQgYnkgcG9zdG1h c3RlciBidXQgbm90IGJ5Ci0JCSAqIGJhY2tlbmQKLQkJICovCi0JCXBxc2lnbmFsKFNJR0NI TEQsIFNJR19ERkwpOyAvKiBzeXN0ZW0oKSByZXF1aXJlcyB0aGlzIG9uIHNvbWUKLQkJCQkJ CQkJCSAqIHBsYXRmb3JtcyAqLwogCX0KIAogCS8qIEVhcmx5IGluaXRpYWxpemF0aW9uICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgYi9zcmMv YmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKaW5kZXggMDNmNmM4NDc5ZjIuLmZhZGY4 NTZkOWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCkBAIC0xNDIsNiArMTQy LDE1IEBAIEluaXRQb3N0bWFzdGVyQ2hpbGQodm9pZCkKIAkJZWxvZyhGQVRBTCwgInNldHNp ZCgpIGZhaWxlZDogJW0iKTsKICNlbmRpZgogCisJLyoKKwkgKiBSZXNldCBzaWduYWxzIHRo YXQgYXJlIHVzZWQgYnkgcG9zdG1hc3RlciBidXQgbm90IGJ5IGNoaWxkIHByb2Nlc3Nlcy4K KwkgKgorCSAqIEN1cnJlbnRseSBqdXN0IFNJR0NITEQuICBUaGUgaGFuZGxlcnMgZm9yIG90 aGVyIHNpZ25hbHMgYXJlIG92ZXJyaWRkZW4KKwkgKiBsYXRlciwgZGVwZW5kaW5nIG9uIHRo ZSBjaGlsZCBwcm9jZXNzIHR5cGUuCisJICovCisJcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RG TCk7IC8qIHN5c3RlbSgpIHJlcXVpcmVzIHRoaXMgdG8gYmUgU0lHX0RGTCByYXRoZXIKKwkJ CQkJCQkJICogdGhhbiBTSUdfSUdOIG9uIHNvbWUgcGxhdGZvcm1zICovCisKIAkvKgogCSAq IEV2ZXJ5IHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2VzcyBpcyBleHBlY3RlZCB0byByZXNwb25k IHByb21wdGx5IHRvCiAJICogU0lHUVVJVCBhdCBhbGwgdGltZXMuICBUaGVyZWZvcmUgd2Ug Y2VudHJhbGx5IHJlbW92ZSBTSUdRVUlUIGZyb20KQEAgLTE1NCw2ICsxNjMsMTEgQEAgSW5p dFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQogCXNpZ2RlbHNldCgmQmxvY2tTaWcsIFNJR1FVSVQp OwogCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tTaWcsIE5VTEwpOwogCisJLyoK KwkgKiBJdCBpcyB1cCB0byB0aGUgKk1haW4oKSBmdW5jdGlvbiB0byBzZXQgc2lnbmFsIGhh bmRsZXJzIGFwcHJvcHJpYXRlIGZvcgorCSAqIHRoZSBjaGlsZCBwcm9jZXNzIGFuZCB1bmJs b2NrIHRoZSByZXN0IG9mIHRoZSBzaWduYWxzLgorCSAqLworCiAJLyogUmVxdWVzdCBhIHNp Z25hbCBpZiB0aGUgcG9zdG1hc3RlciBkaWVzLCBpZiBwb3NzaWJsZS4gKi8KIAlQb3N0bWFz dGVyRGVhdGhTaWduYWxJbml0KCk7CiAKLS0gCjIuNDcuMwoK --------------Xsr2PBMWcn0m5VqN9pqECXzS Content-Type: text/x-patch; charset=UTF-8; name="v11-0002-Refactor-how-some-aux-processes-advertise-their-.patch" Content-Disposition: attachment; filename*0="v11-0002-Refactor-how-some-aux-processes-advertise-their-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2ZGQxMGJiYTU0YzJmN2JhZTdlYTdiY2FhNzk4MWQ4YThjMGEwZWI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMTMgRmViIDIwMjYgMTQ6MjM6MzUgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAyLzRdIFJlZmFjdG9yIGhvdyBzb21lIGF1eCBwcm9jZXNz ZXMgYWR2ZXJ0aXNlIHRoZWlyCiBQcm9jTnVtYmVyCgpUaGlzIG1vdmVzIHRoZSByZXNwb25z aWJpbGl0eSBvZiBzZXR0aW5nIHRoZQpQcm9jR2xvYmFsLT53YWxyZXdyaXRlclByb2MgYW5k IGNoZWNrcG9pbnRlclByb2MgZmllbGRzIHRvCkluaXRBdXhpbGlhcnlQcm9jZXNzLiBBbHNv IHN3aXRjaCB0byB0aGUgc2FtZSBwYXR0ZXJuIHRvIGFkdmVydGlzZSB0aGUKYXV0b3ZhY3V1 bSBsYXVuY2hlcidzIFByb2NOdW1iZXIsIHJlcGxhY2luZyB0aGUgYWQgaG9jIGF2X2xhdW5j aGVycGlkCmZpZWxkIGluIHNoYXJlZCBtZW1vcnkuIFRoaXMgY2FuIGVhc2lseSBiZSBleHRl bmRlZCB0byBvdGhlciBhdXgKcHJvY2Vzc2VzIGluIHRoZSBmdXR1cmUsIGlmIG90aGVyIHBy b2Nlc3NlcyBuZWVkIHRvIGZpbmQgdGhlbS4KClN3aXRjaCB0byBwZ19hdG9taWNfdWludDMy IGZvciB0aGUgZmllbGRzLiBTZWVtcyBlYXNpZXIgdG8gcmVhc29uCmFib3V0IHRoYW4gdm9s YXRpbGUgcG9pbnRlcnMuIFRoZXJlIHdhcyBzb21lIHByZWNlZGVuY2UgZm9yIHRoYXQsIGFz CndlcmUgYWxyZWFkeSB1c2luZyBwZ19hdG9taWNfdWludDMyIGZvciB0aGUgcHJvY0FycmF5 R3JvdXBGaXJzdCBhbmQKY2xvZ0dyb3VwRmlyc3QgZmllbGRzLCB3aGljaCBhbHNvIHN0b3Jl IFByb2NOdW1iZXJzLgoKVE9ETzogY291bGQgYWxzbyByZXBsYWNlIFdhbFJlY3YtPnByb2Nu byB3aXRoIHRoaXMKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAg IHwgIDMgKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgIHwgMTkg KysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMgfCAxNCArKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRl ci5jICAgIHwgIDYgLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAg ICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCAgICAgICAgICAgIHwgIDcgKysrKy0tLQogNiBmaWxlcyBjaGFuZ2VkLCA0 NyBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKaW5kZXggMTNjY2U5YjQ5ZjEuLmQxMmIxYzAyZjNhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0yNjUzLDggKzI2NTMsNyBAQCBYTG9nU2V0QXN5bmNY YWN0TFNOKFhMb2dSZWNQdHIgYXN5bmNYYWN0TFNOKQogCiAJaWYgKHdha2V1cCkKIAl7Ci0J CXZvbGF0aWxlIFBST0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKLQkJUHJvY051 bWJlcgl3YWx3cml0ZXJQcm9jID0gcHJvY2dsb2JhbC0+d2Fsd3JpdGVyUHJvYzsKKwkJUHJv Y051bWJlcgl3YWx3cml0ZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFs LT53YWx3cml0ZXJQcm9jKTsKIAogCQlpZiAod2Fsd3JpdGVyUHJvYyAhPSBJTlZBTElEX1BS T0NfTlVNQkVSKQogCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHdyaXRlclBy b2MpLT5wcm9jTGF0Y2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRl eCA4OWMyYjRmOTUwMC4uMGE3MzBmYjViNDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCkBAIC0yNzcsNyArMjc3LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY3V1 bVdvcmtJdGVtCiAgKiBzdHJ1Y3QgYW5kIHRoZSBhcnJheSBvZiBXb3JrZXJJbmZvIHN0cnVj dHMuICBUaGlzIHN0cnVjdCBrZWVwczoKICAqCiAgKiBhdl9zaWduYWwJCXNldCBieSBvdGhl ciBwcm9jZXNzZXMgdG8gaW5kaWNhdGUgdmFyaW91cyBjb25kaXRpb25zCi0gKiBhdl9sYXVu Y2hlcnBpZAl0aGUgUElEIG9mIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyCiAgKiBhdl9mcmVl V29ya2Vycwl0aGUgV29ya2VySW5mbyBmcmVlbGlzdAogICogYXZfcnVubmluZ1dvcmtlcnMg dGhlIFdvcmtlckluZm8gbm9uLWZyZWUgcXVldWUKICAqIGF2X3N0YXJ0aW5nV29ya2VyIHBv aW50ZXIgdG8gV29ya2VySW5mbyBjdXJyZW50bHkgYmVpbmcgc3RhcnRlZCAoY2xlYXJlZCBi eQpAQCAtMjkzLDcgKzI5Miw2IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRl bQogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlzaWdfYXRvbWljX3QgYXZfc2lnbmFsW0F1dG9WYWNO dW1TaWduYWxzXTsKLQlwaWRfdAkJYXZfbGF1bmNoZXJwaWQ7CiAJZGNsaXN0X2hlYWQgYXZf ZnJlZVdvcmtlcnM7CiAJZGxpc3RfaGVhZAlhdl9ydW5uaW5nV29ya2VyczsKIAlXb3JrZXJJ bmZvCWF2X3N0YXJ0aW5nV29ya2VyOwpAQCAtNTYzLDggKzU2MSw2IEBAIEF1dG9WYWNMYXVu Y2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAkJcHJvY19leGl0KDApOwkJCS8qIGRvbmUgKi8KIAl9CiAKLQlBdXRvVmFjdXVt U2htZW0tPmF2X2xhdW5jaGVycGlkID0gTXlQcm9jUGlkOwotCiAJLyoKIAkgKiBDcmVhdGUg dGhlIGluaXRpYWwgZGF0YWJhc2UgbGlzdC4gIFRoZSBpbnZhcmlhbnQgd2Ugd2FudCB0aGlz IGxpc3QgdG8KIAkgKiBrZWVwIGlzIHRoYXQgaXQncyBvcmRlcmVkIGJ5IGRlY3JlYXNpbmcg bmV4dF93b3JrZXIuICBBcyBzb29uIGFzIGFuCkBAIC03OTgsOCArNzk0LDYgQEAgQXV0b1Zh Y0xhdW5jaGVyU2h1dGRvd24odm9pZCkKIHsKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJt c2dfaW50ZXJuYWwoImF1dG92YWN1dW0gbGF1bmNoZXIgc2h1dHRpbmcgZG93biIpKSk7Ci0J QXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCA9IDA7Ci0KIAlwcm9jX2V4aXQoMCk7 CQkJCS8qIGRvbmUgKi8KIH0KIApAQCAtMTUyOSw2ICsxNTIzLDggQEAgQXV0b1ZhY1dvcmtl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkgKi8KIAlpZiAoQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciAhPSBO VUxMKQogCXsKKwkJUHJvY051bWJlcglsYXVuY2hlclByb2M7CisKIAkJTXlXb3JrZXJJbmZv ID0gQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlcjsKIAkJZGJpZCA9IE15V29y a2VySW5mby0+d2lfZGJvaWQ7CiAJCU15V29ya2VySW5mby0+d2lfcHJvYyA9IE15UHJvYzsK QEAgLTE1NDcsOCArMTU0MywxNCBAQCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQlvbl9zaG1lbV9leGl0 KEZyZWVXb3JrZXJJbmZvLCAwKTsKIAogCQkvKiB3YWtlIHVwIHRoZSBsYXVuY2hlciAqLwot CQlpZiAoQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hlcnBpZCAhPSAwKQotCQkJa2lsbChB dXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkLCBTSUdVU1IyKTsKKwkJbGF1bmNoZXJQ cm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJvYyk7 CisJCWlmIChsYXVuY2hlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJeworCQkJ aW50CQkJcGlkID0gR2V0UEdQcm9jQnlOdW1iZXIobGF1bmNoZXJQcm9jKS0+cGlkOworCisJ CQlpZiAocGlkICE9IDApCisJCQkJa2lsbChwaWQsIFNJR1VTUjIpOworCQl9CiAJfQogCWVs c2UKIAl7CkBAIC0zMzkxLDcgKzMzOTMsNiBAQCBBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQp CiAKIAkJQXNzZXJ0KCFmb3VuZCk7CiAKLQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9sYXVuY2hl cnBpZCA9IDA7CiAJCWRjbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3Jr ZXJzKTsKIAkJZGxpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9ydW5uaW5nV29ya2Vy cyk7CiAJCUF1dG9WYWN1dW1TaG1lbS0+YXZfc3RhcnRpbmdXb3JrZXIgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggMDNhZWZhNWI2NzAuLjk3 OGE3ZDBlNjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9p bnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAg LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvcnQvYXRv bWljcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUg InBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVw dC5oIgpAQCAtMzQzLDEyICszNDQsNiBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJICovCiAJVXBkYXRl U2hhcmVkTWVtb3J5Q29uZmlnKCk7CiAKLQkvKgotCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBu dW1iZXIgdGhhdCBiYWNrZW5kcyBjYW4gdXNlIHRvIHdha2UgdXMgdXAgd2hpbGUKLQkgKiB3 ZSdyZSBzbGVlcGluZy4KLQkgKi8KLQlQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jID0g TXlQcm9jTnVtYmVyOwotCiAJLyoKIAkgKiBMb29wIHVudGlsIHdlJ3ZlIGJlZW4gYXNrZWQg dG8gd3JpdGUgdGhlIHNodXRkb3duIGNoZWNrcG9pbnQgb3IKIAkgKiB0ZXJtaW5hdGUuCkBA IC0xMTIwLDcgKzExMTUsNyBAQCBSZXF1ZXN0Q2hlY2twb2ludChpbnQgZmxhZ3MpCiAJZm9y IChudHJpZXMgPSAwOzsgbnRyaWVzKyspCiAJewogCQl2b2xhdGlsZSBQUk9DX0hEUiAqcHJv Y2dsb2JhbCA9IFByb2NHbG9iYWw7Ci0JCVByb2NOdW1iZXIJY2hlY2twb2ludGVyUHJvYyA9 IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2M7CisJCVByb2NOdW1iZXIJY2hlY2twb2lu dGVyUHJvYyA9IHBnX2F0b21pY19yZWFkX3UzMigmcHJvY2dsb2JhbC0+Y2hlY2twb2ludGVy UHJvYyk7CiAKIAkJaWYgKGNoZWNrcG9pbnRlclByb2MgPT0gSU5WQUxJRF9QUk9DX05VTUJF UikKIAkJewpAQCAtMTI2MSw4ICsxMjU2LDcgQEAgRm9yd2FyZFN5bmNSZXF1ZXN0KGNvbnN0 IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCS8qIC4uLiBidXQgbm90 IHRpbGwgYWZ0ZXIgd2UgcmVsZWFzZSB0aGUgbG9jayAqLwogCWlmICh0b29fZnVsbCkKIAl7 Ci0JCXZvbGF0aWxlIFBST0NfSERSICpwcm9jZ2xvYmFsID0gUHJvY0dsb2JhbDsKLQkJUHJv Y051bWJlcgljaGVja3BvaW50ZXJQcm9jID0gcHJvY2dsb2JhbC0+Y2hlY2twb2ludGVyUHJv YzsKKwkJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMy KCZQcm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jKTsKIAogCQlpZiAoY2hlY2twb2ludGVy UHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5 TnVtYmVyKGNoZWNrcG9pbnRlclByb2MpLT5wcm9jTGF0Y2gpOwpAQCAtMTU0Myw3ICsxNTM3 LDcgQEAgdm9pZAogV2FrZXVwQ2hlY2twb2ludGVyKHZvaWQpCiB7CiAJdm9sYXRpbGUgUFJP Q19IRFIgKnByb2NnbG9iYWwgPSBQcm9jR2xvYmFsOwotCVByb2NOdW1iZXIJY2hlY2twb2lu dGVyUHJvYyA9IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2M7CisJUHJvY051bWJlcglj aGVja3BvaW50ZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZwcm9jZ2xvYmFsLT5jaGVj a3BvaW50ZXJQcm9jKTsKIAogCWlmIChjaGVja3BvaW50ZXJQcm9jICE9IElOVkFMSURfUFJP Q19OVU1CRVIpCiAJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50ZXJQ cm9jKS0+cHJvY0xhdGNoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv d2Fsd3JpdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCmluZGV4 IDhjYTdiMDdlOTQ3Li4xODUxNDE3YWQxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWx3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdy aXRlci5jCkBAIC0yMDAsMTIgKzIwMCw2IEBAIFdhbFdyaXRlck1haW4oY29uc3Qgdm9pZCAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAloaWJlcm5hdGluZyA9 IGZhbHNlOwogCVNldFdhbFdyaXRlclNsZWVwaW5nKGZhbHNlKTsKIAotCS8qCi0JICogQWR2 ZXJ0aXNlIG91ciBwcm9jIG51bWJlciB0aGF0IGJhY2tlbmRzIGNhbiB1c2UgdG8gd2FrZSB1 cyB1cCB3aGlsZQotCSAqIHdlJ3JlIHNsZWVwaW5nLgotCSAqLwotCVByb2NHbG9iYWwtPndh bHdyaXRlclByb2MgPSBNeVByb2NOdW1iZXI7Ci0KIAkvKgogCSAqIExvb3AgZm9yZXZlcgog CSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggZmQ4MzE4YmRmM2QuLmJhN2Vh ZWQxYTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTIxMSw4ICsyMTEsOSBA QCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCWRsaXN0X2luaXQoJlByb2NHbG9iYWwtPmJnd29y a2VyRnJlZVByb2NzKTsKIAlkbGlzdF9pbml0KCZQcm9jR2xvYmFsLT53YWxzZW5kZXJGcmVl UHJvY3MpOwogCVByb2NHbG9iYWwtPnN0YXJ0dXBCdWZmZXJQaW5XYWl0QnVmSWQgPSAtMTsK LQlQcm9jR2xvYmFsLT53YWx3cml0ZXJQcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKLQlQ cm9jR2xvYmFsLT5jaGVja3BvaW50ZXJQcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwlw Z19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmF2TGF1bmNoZXJQcm9jLCBJTlZBTElE X1BST0NfTlVNQkVSKTsKKwlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPndhbHdy aXRlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCXBnX2F0b21pY19pbml0X3UzMigm UHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJ cGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJ TlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIApAQCAtNzA5LDYgKzcx MCwxNCBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQogCSAqLwogCVBHU2VtYXBob3Jl UmVzZXQoTXlQcm9jLT5zZW0pOwogCisJLyogU29tZSBhdXggcHJvY2Vzc2VzIGFyZSBhbHNv IGFkdmVydGlzZWQgaW4gUHJvY0dsb2JhbCAqLworCWlmIChNeUJhY2tlbmRUeXBlID09IEJf QVVUT1ZBQ19MQVVOQ0hFUikKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+ YXZMYXVuY2hlclByb2MsIE15UHJvY051bWJlcik7CisJaWYgKE15QmFja2VuZFR5cGUgPT0g Ql9XQUxfV1JJVEVSKQorCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xvYmFsLT53YWx3 cml0ZXJQcm9jLCBNeVByb2NOdW1iZXIpOworCWlmIChNeUJhY2tlbmRUeXBlID09IEJfQ0hF Q0tQT0lOVEVSKQorCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xvYmFsLT5jaGVja3Bv aW50ZXJQcm9jLCBNeVByb2NOdW1iZXIpOworCiAJLyoKIAkgKiBBcnJhbmdlIHRvIGNsZWFu IHVwIGF0IHByb2Nlc3MgZXhpdC4KIAkgKi8KQEAgLTEwNTMsNiArMTA2MiwyMyBAQCBBdXhp bGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKQogCVN3aXRjaEJhY2tUb0xvY2Fs TGF0Y2goKTsKIAlwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKCk7CiAKKwkvKiBJ ZiB0aGlzIHdhcyBvbmUgb2YgYXV4IHByb2Nlc3NlcyBhZHZlcnRpc2VkIGluIFByb2NHbG9i YWwsIGNsZWFyIGl0ICovCisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9BVVRPVkFDX0xBVU5D SEVSKQorCXsKKwkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+YXZM YXVuY2hlclByb2MpID09IE15UHJvY051bWJlcik7CisJCXBnX2F0b21pY193cml0ZV91MzIo JlByb2NHbG9iYWwtPmF2TGF1bmNoZXJQcm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwl9 CisJaWYgKE15QmFja2VuZFR5cGUgPT0gQl9XQUxfV1JJVEVSKQorCXsKKwkJQXNzZXJ0KHBn X2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJvYykgPT0gTXlQcm9j TnVtYmVyKTsKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+d2Fsd3JpdGVy UHJvYywgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJfQorCWlmIChNeUJhY2tlbmRUeXBlID09 IEJfQ0hFQ0tQT0lOVEVSKQorCXsKKwkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmUHJv Y0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKKwkJcGdfYXRv bWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYywgSU5WQUxJRF9Q Uk9DX05VTUJFUik7CisJfQorCiAJcHJvYyA9IE15UHJvYzsKIAlNeVByb2MgPSBOVUxMOwog CU15UHJvY051bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmlu ZGV4IDIzZTVjZDk4MTYxLi4xZjFhYjdkMDJjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTQ0 NSwxMSArNDQ1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBST0NfSERSCiAJcGdfYXRvbWljX3Vp bnQzMiBjbG9nR3JvdXBGaXJzdDsKIAogCS8qCi0JICogQ3VycmVudCBzbG90IG51bWJlcnMg b2Ygc29tZSBhdXhpbGlhcnkgcHJvY2Vzc2VzLiBUaGVyZSBjYW4gYmUgb25seSBvbmUKKwkg KiBDdXJyZW50IHByb2MgbnVtYmVycyBvZiBzb21lIGF1eGlsaWFyeSBwcm9jZXNzZXMuIFRo ZXJlIGNhbiBiZSBvbmx5IG9uZQogCSAqIG9mIGVhY2ggb2YgdGhlc2UgcnVubmluZyBhdCBh IHRpbWUuCiAJICovCi0JUHJvY051bWJlcgl3YWx3cml0ZXJQcm9jOwotCVByb2NOdW1iZXIJ Y2hlY2twb2ludGVyUHJvYzsKKwlwZ19hdG9taWNfdWludDMyIGF2TGF1bmNoZXJQcm9jOwor CXBnX2F0b21pY191aW50MzIgd2Fsd3JpdGVyUHJvYzsKKwlwZ19hdG9taWNfdWludDMyIGNo ZWNrcG9pbnRlclByb2M7CiAKIAkvKiBDdXJyZW50IHNoYXJlZCBlc3RpbWF0ZSBvZiBhcHBy b3ByaWF0ZSBzcGluc19wZXJfZGVsYXkgdmFsdWUgKi8KIAlpbnQJCQlzcGluc19wZXJfZGVs YXk7Ci0tIAoyLjQ3LjMKCg== --------------Xsr2PBMWcn0m5VqN9pqECXzS Content-Type: text/x-patch; charset=UTF-8; name="v11-0003-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v11-0003-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSBhMjZiODkzN2IxN2U0MDc3MzhlYjQ5Zjk1ZWNiMmY0MjFjYmExNTM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgMTIgRmViIDIwMjYgMTc6MDc6MjggKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSAzLzRdIFJlcGxhY2UgTGF0Y2hlcyB3aXRoIEludGVycnVw dHMKClRoZSBMYXRjaCB3YXMgYSBmbGFnLCB3aXRoIGFuIGludGVyLXByb2Nlc3Mgc2lnbmFs bGluZyBtZWNoYW5pc20gdGhhdAphbGxvd2VkIGEgcHJvY2VzcyB0byB3YWl0IGZvciB0aGUg TGF0Y2ggdG8gYmUgc2V0LiBNeSBvcmlnaW5hbCB2aXNpb24KZm9yIExhdGNoZXMgd2FzIHRo YXQgeW91IGNvdWxkIGhhdmUgZGlmZmVyZW50IGxhdGNoZXMgZm9yIGRpZmZlcmVudAp0aGlu Z3MgdGhhdCB5b3UgbmVlZCB0byB3YWl0IGZvciwgYnV0IGluIHByYWN0aWNlLCBhbG1vc3Qg YWxsIGNvZGUKdXNlZCBvbmUgInByb2Nlc3MgbGF0Y2giIHRoYXQgd2FzIHNoYXJlZCBmb3Ig YWxsIHdha2V1cHMuIFRoZSBvbmx5CmV4Y2VwdGlvbiB3YXMgdGhlICJyZWNvdmVyeVdha2V1 cExhdGNoIi4gSSB0aGluayB0aGUgcmVhc29uIHRoYXQgd2UKZW5kZWQgdXAganVzdCBzaGFy aW5nIHRoZSBzYW1lIGxhdGNoIGZvciBhbGwgd2FrZXVwcyBpcyB0aGF0IGl0IHdhcwpjdW1i ZXJzb21lIGluIHByYWN0aWNlIHRvIGRlYWwgd2l0aCBtdWx0aXBsZSBsYXRjaGVzLiBGb3Ig c3RhcnRlcnMsCnRoZXJlIHdhcyBubyBtYWNoaW5lcnkgZm9yIHdhaXRpbmcgZm9yIG11bHRp cGxlIGxhdGNoZXMgYXQgdGhlIHNhbWUKdGltZS4gU2Vjb25kbHksIGNoYW5naW5nIHRoZSAi b3duZXJzaGlwIiBvZiBhIGxhdGNoIG5lZWRlZCBleHRyYQpsb2NraW5nIG9yIG90aGVyIGNv b3JkaW5hdGlvbi4gVGhpcmRseSwgZWFjaCBpbnRlci1wcm9jZXNzIGxhdGNoCm5lZWRlZCB0 byBiZSBpbml0aWFsaXplZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgdGltZS4KClRoaXMgcGF0 Y2ggZW1icmFjZXMgdGhlIHJlYWxpdHkgb2YgaG93IExhdGNoZXMgd2VyZSB1c2VkLCBhbmQg cmVwbGFjZXMKdGhlIExhdGNoZXMgd2l0aCBhIHBlci1wcm9jZXNzIGludGVycnVwdCBtYXNr LiBZb3UgY2FuIG5vIGxvbmdlcgphbGxvY2F0ZSBMYXRjaGVzIGluIGFyYml0cmFyeSBzaGFy ZWQgbWVtb3J5IHN0cnVjdHMgYW5kIGFuIGludGVycnVwdAppcyBhbHdheXMgZGlyZWN0ZWQg YXQgYSBwYXJ0aWN1bGFyIHByb2Nlc3MsIGFkZHJlc3NlZCBieSBpdHMKUHJvY051bWJlci4g RWFjaCBwcm9jZXNzIGhhcyBhIGJpdG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzIGluClBH UFJPQy4KClRoaXMgcmVwbGFjZXMgUHJvY1NpZ25hbHMgYW5kIG1hbnkgZGlyZWN0IHVzZXMg b2YgVW5peCBzaWduYWxzIHdpdGgKaW50ZXJydXB0cy4gRm9yIGV4YW1wbGUsIHRoZSBiYWNr ZW5kLXByaXZhdGUgUHJvY0RpZVBlbmRpbmcgZmxhZyBpcwpyZXBsYWNlZCB3aXRoIHRoZSBJ TlRFUlJVUFRfVEVSTUlOQVRFIGludGVycnVwdC4gU0lHVEVSTSBjYW4gc3RpbGwgYmUKdXNl ZCB0byByYWlzZSBpdCwgYnV0IHRoZSBkZWZhdWx0IFNJR1RFUk0gc2lnbmFsIGhhbmRsZXIg bm93IGp1c3QKcmFpc2VzIElOVEVSUlVQVF9URVJNSU5BVEUuCgpIYW5kbGluZyBpbnRlcnJ1 cHRzCi0tLS0tLS0tLS0tLS0tLS0tLS0KClRvIGNvbnRyb2wgd2hpY2ggaW50ZXJydXB0cyBj YW4gYmUgcHJvY2Vzc2VkIGF0IHdoYXQgdGltZSwgdGhlcmUgYXJlIGEKZmV3IG1lY2hhbmlz bXMuIEZpcnN0bHksIHlvdSBjYW4gcmVnaXN0ZXIgYSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBl YWNoCmludGVycnVwdCwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgZnJvbSBDSEVDS19GT1JfSU5U RVJSVVBUUygpIGlmIHRoZQppbnRlcnJ1cHQgaXMgcGVuZGluZy4gQWZ0ZXIgdGhpcyBjb21t aXQsIFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIG5vCmtub3dsZWRnZSBhYm91dCB0aGUgbWVh bmluZyBvZiB0aGUgZGlmZmVyZW50IGludGVycnVwdHMsIGl0IGp1c3QgY2FsbHMKdGhlIHJl Z2lzdGVyZWQgY2FsbGJhY2sgZnVuY3Rpb25zLiBEaWZmZXJlbnQgcHJvY2VzZXNzIGNhbiBz ZXQgdXAKZGlmZmVyZW50IGhhbmRsZXJzLCBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIGJ1 dCBzb21lIGNvbW1vbmx5IHVzZWQKaGFuZGxlcnMgYXJlIHByb3ZpZGVkIGFuZCBpbnN0YWxs ZWQgZHVyaW5nIGJhY2tlbmQgc3RhcnR1cC4KCkluIGFkZGl0aW9uIHRvIENIRUNLX0ZPUl9J TlRFUlJVUFRTKCksIHlvdSBjYW4gYWxzbyBjaGVjayB3aGV0aGVyIGEKcGFydGljdWxhciBp bnRlcnJ1cHQgaXMgcGVuZGluZyBhbmQgaGFuZGxlIGl0IHlvdXJzZWxmLgoKTW9zdCBjYWxs ZXJzIG9mIFdhaXRJbnRlcnJ1cHQgKHdoaWNoIHJlcGxhY2VzIFdhaXRMYXRjaCkgdXNlCkNo ZWNrRm9ySW50ZXJydXB0TWFzaywgd2hpY2ggaXMgYSBiaXRtYXNrIHRoYXQgaW5jbHVkZXMg YWxsIHRoZQppbnRlcnJ1cHRzIHRoYXQgYXJlIGhhbmRsZWQgYnkgQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKSBpbiB0aGUgY3VycmVudApzdGF0ZS4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBj bGVhcnMgdGhlIGludGVycnVwdHMgYml0cyB0aGF0IGl0CnByb2Nlc3NlcywgdGhlIGNhbGxl ciBpcyBubyBsb25nZXIgcmVxdWlyZWQgdG8gZG8gQ2xlYXJJbnRlcnJ1cHQgKG9yClJlc2V0 TGF0Y2gpIGZvciB0aG9zZSBiaXRzLiBJZiB5b3Ugd2FrZSB1cCBmb3Igb3RoZXIgaW50ZXJy dXB0cyB0aGF0CmFyZSBub3QgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB5 b3Ugc3RpbGwgbmVlZCB0byBjbGVhcgp0aG9zZS4KCk5vdyB0aGF0IHRoZXJlIGFyZSBzZXBh cmF0ZSBiaXRzIGZvciBkaWZmZXJlbnQgdGhpbmdzLCBpdCdzIHBvc3NpYmxlCnRvIGRvIGUu Zy4gV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CklOVEVSUlVQVF9R VUVSWV9DQU5DRUwpIHRvIHdhaXQganVzdCBmb3IgYSBjb25maWcgcmVsb2FkIHJlcXVlc3Qg b3IKcXVlcnkgY2FuY2VsbGF0aW9uLCBhbmQgbm90IHdha2UgdXAgb24gb3RoZXIgZXZlbnRz IGxpa2UgYSBzaHV0ZG93bgpyZXF1ZXN0LiBUaGF0J3Mgbm90IHZlcnkgdXNlZnVsIGluIHBy YWN0aWNlLCBhcyBDSEVDS19GT1JfSU5URVJSVVBUUygpCnN0aWxsIHByb2Nlc3NlcyB0aG9z ZSBpbnRlcnJ1cHRzIGlmIHlvdSBjYWxsIGl0LCBhbmQgeW91IHdvdWxkIHdhbnQgdG8KcHJv Y2VzcyBhbGwgdGhlIHN0YW5kYXJkIGludGVycnVwdHMgcHJvbXB0bHkgYW55d2F5LiBJdCBt aWdodCBiZQp1c2VmdWwgdG8gY2hlY2sgZm9yIHNwZWNpZmljIGludGVycnVwdHMgd2l0aCBJ bnRlcnJ1cHRQZW5kaW5nKCksCndpdGhvdXQgaW1tZWRpYXRlbHkgcHJvY2Vzc2luZyB0aGVt LCBob3dldmVyLiBzcGdkb2luc2VydCgpIGRvZXMKc29tZXRoaW5nIGxpa2UgdGhhdC4gSW4g dGhpcyBjb21taXQgSSBkaWRuJ3QgY2hhbmdlIGl0cyBvdmVyYWxsIGxvZ2ljLApidXQgaXQg cHJvYmFibHkgY291bGQgYmUgbWFkZSBtb3JlIGZpbmUtZ3JhaW5lZCBub3cuCgpNb3JlIGlt cG9ydGFudGx5LCB5b3UgY2FuIG5vdyBoYXZlIGFkZGl0aW9uYWwgaW50ZXJydXB0cyB0aGF0 IGFyZQpwcm9jZXNzZWQgbGVzcyBmcmVxdWVudGx5IGFuZCBkbyBub3Qgd2FrZSB1cCB0aGUg YmFja2VuZCB3aGVuIGl0J3Mgbm90CnByZXBhcmVkIHRvIHByb2Nlc3MgdGhlbS4gRm9yIGV4 YW1wbGUsIHRoZSBTSU5WQUxfQ0FUQ0hVUCBpbnRlcnJ1cHQgaXMKb25seSBwcm9jZXNzZWQg d2hlbiB0aGUgYmFja2VuZCBpcyBpZGxlLiBQcmV2aW91c2x5LCBhIGNhdGNodXAgcmVxdWVz dAp3b3VsZCB3YWtlIHVwIHRoZSBwcm9jZXNzIHdoZXRoZXIgaXQgd2FzIHJlYWR5IHRvIGhh bmRsZSBpdCBvciBub3Q7Cm5vdyBpdCBvbmx5IHdha2VzIHVwIHdoZW4gdGhlIGJhY2tlbmQg aXMgaWRsZS4gVGhhdCdzIG5vdCB0b28Kc2lnbmlmaWNhbnQgZm9yIGNhdGNodXAgaW50ZXJy dXB0cyBiZWNhdXNlIHRoZXkgZG9uJ3Qgb2NjdXIgdGhhdCBvZnRlbgphbnl3YXksIGJ1dCBp dCdzIHN0aWxsIG5pY2UgYW5kIGNvdWxkIGJlIG1vcmUgc2lnbmlmaWNhbnQgd2l0aCBvdGhl cgppbnRlcnJ1cHRzLgoKVGhlcmUncyBzdGlsbCBhIGdlbmVyYWwtcHVycG9zZSBJTlRFUlJV UFRfV0FJVF9XQUtFVVAgaW50ZXJydXB0IHRoYXQKaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkg ZGlmZmVyZW50IHB1cnBvc2VzIGluIGRpZmZlcmVudCBwcm9jZXNzZXMsIGZvcgpleGFtcGxl IHRvIHdha2UgdXAgdGhlIHdhbHdyaXRlciB3aGVuIGl0IGhhcyB3b3JrIHRvIGRvLCBhbmQg dG8gd2FrZQp1cCBwcm9jZXNzZXMgd2FpdGluZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZS4g VGhlIGNvbW1vbiBwcm9wZXJ0eSBvZgp0aG9zZSB1c2VzIGlzIHRoYXQgdGhlcmUncyBzb21l IG90aGVyIGZsYWcgb3IgY29uZGl0aW9uIHRoYXQgaXMKY2hlY2tlZCBvbiBlYWNoIHdha2V1 cCwgdGhlIHdha2V1cCBpbnRlcnJ1cHQgaXRzZWxmIG1lYW5zIG1lcmVseSB0aGF0CnNvbWV0 aGluZyBpbnRlcmVzdGluZyBtaWdodCd2ZSBoYXBwZW5lZC4KClJlcGxhY2luZyByZWNvdmVy eVdha2V1cExhdGNoCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgSU5URVJS VVBUX1JFQ09WRVJZX0NPTlRJTlVFIHJlcGxhY2VzIHJlY292ZXJ5V2FrZXVwTGF0Y2guIFdp dGgKdGhpcyBuZXcgaW50ZXJmYWNlLCB0aGUgc3RhcnR1cCBwcm9jZXNzIGNhbiBlYXNpbHkg d2FpdCBmb3IgdGhlIGNvbW1vbgppbnRlcnJ1cHRzIGF0IHRoZSBzYW1lIHRpbWUgYXMgSU5U RVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFLgpQcmV2aW91c2x5LCB0aGUgY29kZSB0aGF0IHdh aXRlZCBvbiByZWNvdmVyeVdha2V1cExhdGNoIGhhZCB0byByZXNvcnQKdG8gdGltZW91dHMg dG8gcmVhY3QgdG8gb3RoZXIgc2lnbmFscywgYmVjYXVzZSBpdCB3YXMgbm90IHBvc3NpYmxl IHRvCndhaXQgZm9yIHR3byBsYXRjaGVzIGF0IHRoZSBzYW1lIHRpbWUuIFByZXZpb3VzIGF0 dGVtcHQgYXQgdW5pZnlpbmcKdGhvc2Ugd2FrZXVwcyB3YXMgaW4gY29tbWl0IGFjMjI5Mjlh MjYsIGJ1dCBpdCB3YXMgcmV2ZXJ0ZWQgaW4gY29tbWl0CjAwZjY5MGEyMzkgYmVjYXVzZSBp dCBjYXVzZWQgYSBsb3Qgb2Ygc3B1cmlvdXMgd2FrZXVwcyB3aGVuIHRoZQpzdGFydHVwIHBy b2Nlc3Mgd2FzIHdhaXRpbmcgZm9yIHJlY292ZXJ5IGNvbmZsaWN0cy4gVGhlIG5ldyBtYWNo aW5lcnkKYXZvaWRzIHRoYXQgcHJvYmxlbSBieSBtYWtpbmcgaXQgZWFzeSB0byB3YWl0IGZv ciB0d28gaW50ZXJydXB0cyBhdAp0aGUgc2FtZSB0aW1lLgoKRml4IGxvc3Qgd2FrZXVwIGlz c3VlIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClNpbWlsYXJseSB0aGVyZSdz IG5vdyBhIGRlZGljYXRlZCBpbnRlcnJ1cHQgYml0IHRvIG5vdGlmeSB0aGUgbG9naWNhbApy ZXBsaWNhdGlvbiBsYXVuY2hlciBhYm91dCBzdWJzY3JpcHRpb24gY2hhbmdlcy4gVGhhdCBm aXhlcyB0aGUgbG9zdCB3YWtldXAgaXNzdWUgZGlzY3Vzc2VkIGF0OgogIERpc2N1c3Npb246 IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvNDc2NjcyZTctNjJmMS00 Y2FiLWE4MjItZjNhOGU5NDlkZDNmQGlraS5maQogIERpc2N1c3Npb246IGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmYwNjYzZDktODAxMS00MjBmLWExNjktZWZi ZjU3MzI3Y2I1QGlraS5maQoKQmFja2dyb3VuZCB3b3JrZXIgc3RhdGUgY2hhbmdlIG5vdGlm aWNhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJ TlRFUlJVUFRfV0FJVF9XQUtFVVAgaXMgdXNlZCBmb3IgYmd3b3JrZXIgc3RhdGUgY2hhbmdl IG5vdGlmaWNhdGlvbi4KQXMgcGFydCBvZiBhIHByb2plY3QgdG8gcmVtb3ZlIHRoZSByZWxp YW5jZSBvbiBQSURzIHRvIGlkZW50aWZ5CmJhY2tlbmRzLCBiYWNrZW5kcyB0aGF0IHJlZ2lz dGVyIGR5bmFtaWMgYmFja2dyb3VuZCB3b3JrZXJzIHdpbGwgbm93CnJlY2VpdmUgSU5URVJS VVBUX1dBSVRfV0FLRVVQIHNlbnQgZGlyZWN0bHkgYnkgdGhlIHBvc3RtYXN0ZXIgd2hlbiB0 aGUKd29ya2VyIHN0YXRlIGNoYW5nZXMuICBQcmV2aW91c2x5LCB0aGUgcG9zdG1hc3RlciB3 b3VsZCBzZW5kIGEgU0lHVVNSMQpzaWduYWwsIHdoaWNoIHJlbGllZCBvbiB0aGUgUHJvY1Np Z25hbCBzeXN0ZW0ncyBoYW5kbGVyIHNldHRpbmcgdGhlCmludGVycnVwdCBmbGFnLCB3aXRo IHRoZSBzYW1lIGVuZCBlZmZlY3QuICBOb3cgdGhhdCBpbnRlcm1lZGlhdGUgc3RlcAppcyBz a2lwcGVkLgoKVGhlIGZpZWxkIGJnd19ub3RpZnlfcGlkIHN0aWxsIGV4aXN0cyBmb3IgYmFj a3dhcmRzIGNvbXBhdGliaWxpdHksIGJ1dApoYXMgbm8gZWZmZWN0IGFuZCBtYXkgYmUgcmVt b3ZlZCBpbiBhIGxhdGVyIHJlbGVhc2UuClJlZ2lzdGVyQmFja2dyb3VuZFdvcmtlcigpIG5v dyBhdXRvbWF0aWNhbGx5IGFzc3VtZXMgdGhhdCB0aGUgY2FsbGVyCndvdWxkIGxpa2Ugc3Rh dGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgZGVsaXZlcmVkIHRvIGl0cyBwcm9jIG51bWJlciwK dW5sZXNzIEJHV19OT19OT1RJRlkgaXMgc2V0IGluIGJnd19mbGFncy4KClJlbW92aW5nIG90 aGVyIGNhc2VzIG9mIFBJRHMgZnJvbSB0aGUgYmd3b3JrZXIgQVBJIGlzIGxlZnQgZm9yIGxh dGVyCndvcms7IHRoaXMgcGF0Y2ggaXMgY29uY2VybmVkIG9ubHkgd2l0aCByZW1vdmluZyBh IGRlcGVuZGVuY3kgb24KUHJvY1NpZ25hbCBpbmZyYXN0cnVjdHVyZSB0aGF0IGlzIGR1ZSB0 byBiZSByZW1vdmVkIGJ5IGEgbGF0ZXIgY29tbWl0LgoKWFhYOiBvcmlnaW5hbCB0ZXh0IGZy b20gVGhvbWFzJ3MgcGF0Y2gKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiJQcm9jU2lnbmFscyIgd2VyZSBhIHR3by1zdGVwIHdheSBmb3Igb25lIGJhY2tlbmQg dG8gYXNrIGFub3RoZXIgYmFja2VuZAp0byBkbyBzb21ldGhpbmcsIGJ5IG11bHRpcGxleGlu ZyBTSUdVU1IxLiAgSGlzdG9yaWNhbGx5LCByZWFsIHdvcmsgd2FzCmRvbmUgaW4gdGhlIFNJ R1VTUjEgaGFuZGxlciwgYnV0IGNvbW1pdCAwZGEwOTZkNyByZW1vdmVkIHRoZSBsYXN0IGNh c2UKb2YgdGhhdC4gIE5vdyB0aGUgaGFuZGxlciBqdXN0IHNldCAiaW50ZXJydXB0IHBlbmRp bmciIGZsYWdzLCBjYWxsZWQKU2V0TGF0Y2goTXlMYXRjaCkgdG8gY2xvc2UgcmFjZXMsIGFu ZCB0aGVuIGRpZCBhbGwgdGhlIGludGVyZXN0aW5nIHdvcmsKYXQgdGhlIG5leHQgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSBjYWxsLgoKVGhpcyBjb21taXQgcmVtb3ZlcyB0aGUgUHJvY1Np Z25hbCBzdGVwLCByZXBsYWNpbmcgUHJvY1NpZ25hbHMgd2l0aApJbnRlcnJ1cHRzLgoKQmVu ZWZpdHMgb2YgdGhpcyByZWZhY3RvcmluZyBpbmNsdWRlIHJlbW92aW5nIHVubmVjZXNzYXJ5 IGNvbmNlcHRzIGFuZAp0ZXJtaW5vbG9neSwgYXZvaWRpbmcgdGhlIHJpc2sgb2YgcGVvcGxl IHB1dHRpbmcgYnVnZ3kgY29kZSBiYWNrIGludG8Kc2lnbmFsIGhhbmRsZXJzLCByZW1vdmlu ZyBhIHdob2xlIGxvdCBvZiBnbG9iYWwgdmFyaWFibGVzLCByZW1vdmluZwpkZXBlbmRlbmNp ZXMgb24gUElEcyBhbmQgdGhlIHByb2Nlc3MgbW9kZWwsIHJlbW92aW5nIHJpc2tzIG9mIHNl bmRpbmcKYSBzaWduYWwgdGhhdCBoYXMgZGVmYXVsdCBhY3Rpb24gb2YgdGVybWluYXRpb24g dG8gdGhlIHdyb25nIHByb2Nlc3MsCmFuZCB0YWtpbmcgYSBzdGVwIHRvd2FyZHMgYmVpbmcg YWJsZSByZW1vdmUgdGhlIGZha2Ugc2lnbmFsIHN5c3RlbQpmcm9tIHRoZSBXaW5kb3dzIHBv cnQuCgpOb3RhYmxlIGNoYW5nZXM6CgogKiBhbGwgY2FsbHMgdG8gU2VuZFByb2NTaWduYWwo cGlkLCBQUk9DU0lHX1hYWCkgYmVjb21lCiAgIFNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1hY WCwgcHJvY25vKQogKiBhbGwgWHh4UGVuZGluZyBnbG9iYWwgdmFyaWFibGVzIGFyZSBnb25l OyB0aGV5IGFyZSByZXByZXNlbnRlZAogICBhcyBiaXRzIGluIE15UHJvYy0+cGVuZGluZ19p bnRlcnJ1cHRzCiAqIHRoZSBTSUdVU1IxIGhhbmRsZXIgaXMgZ29uZQogKiBwbGFjZXMgdGhh dCBrbm93IHRoZSBQSURzIG9mIG90aGVyIGJhY2tlbmRzIG11c3Qgbm93IHVzZSBwcm9jbm9z CiAgIGluc3RlYWQKClRoZSBvbmx5IGNvZGUgbGVmdCBpbiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMgcmVsYXRlcyB0bwpQcm9jU2lnbmFsQmFycmllcnMuICBYWFgg VGhvc2Ugc2hvdWxkIHBlcmhhcHMgYmUgcmVuYW1lZC4KClNJR1VTUjEgY2FuIG5vdyBiZSBz ZXQgdG8gU0lHX0lHTiBpbiBtb3N0IGJhY2tlbmRzLiAgU29tZSBzcGVjaWFsIGNhc2VzCnJl bWFpbiwgdGhhdCB3ZXJlIG5vdCB1c2luZyB0aGUgZ2VuZXJhbCBzaWd1c3IxX2hhbmRsZXIg KG5vdyByZW1vdmVkKS4KLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAg ICAgICAgICAgICAgfCAgNjMgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YyAgICAgICAgICAgICB8ICAyMSArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNf ZmR3LmMgICAgICAgICAgIHwgICA0ICstCiBkb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbCAg ICAgICAgICAgICAgICAgICAgfCAgMzIgKy0KIGRvYy9zcmMvc2dtbC9vYXV0aC12YWxpZGF0 b3JzLnNnbWwgICAgICAgICAgICB8ICAgMiArLQogZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dt bCAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbl9wYWdlb3BzLmMgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX3Jldm1hcC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9jb21tb24vdG9hc3RfaW50ZXJuYWxzLmMgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5idHJlZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmRhdGFwYWdlLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2luZmFzdC5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmdldC5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW51dGlsLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyAgICAgICAgICAgICB8ICAgMiArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jICAgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyAgICAgICAgICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92ZmwuYyAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzZWFyY2guYyAgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNvcnQuYyAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAg ICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5j ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2Vy dC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFn ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNl YXJjaC5jICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn ZG9pbnNlcnQuYyAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdpbnNlcnQuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3NjYW4uYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdp c3Qvc3BndmFjdXVtLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vUkVBRE1FICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9SRUFETUUucGFyYWxsZWwgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgIDc3ICstLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vc2xydS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgICB8IDEyMCArKy0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jICAgICAgICAgfCAgMzkgKy0K IHNyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgICAgICB8ICAxOCAr LQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55ICAgICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAgICAgICAgfCAx NTEgKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYyAgICAgICAg ICB8ICAxMSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAg ICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAg ICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgIHwgIDE5ICsKIHNyYy9iYWNrZW5kL2lwYy9SRUFETUUubWQgICAgICAgICAg ICAgICAgICAgICB8IDI2MCArKysrKysrKwogc3JjL2JhY2tlbmQvaXBjL2ludGVycnVwdC5j ICAgICAgICAgICAgICAgICAgIHwgNDMxICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvaXBj L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL2lw Yy9zaWduYWxfaGFuZGxlcnMuYyAgICAgICAgICAgICB8IDE2MCArKysrKwogc3JjL2JhY2tl bmQvbGlicHEvYXV0aC5jICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy9i YWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMgICAgICAgICB8ICAgNyArLQogc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMgICAgICAgICAgICAgICAgIHwgIDYxICstCiBz cmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMzYgKy0K IHNyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyOSAr LQogc3JjL2JhY2tlbmQvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAg MSAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAx NTEgKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAg ICAgIHwgMTczICsrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd3JpdGVyLmMgICAg ICAgICAgICAgfCAgNTEgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMgICAgICAgICB8IDE5MSArKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJy dXB0LmMgICAgICAgICAgICB8IDEwOCAtLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVz b24uYnVpbGQgICAgICAgICAgICB8ICAgMSAtCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bn YXJjaC5jICAgICAgICAgICAgICAgfCAxMDAgKystCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgNTcgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3RhcnR1cC5jICAgICAgICAgICAgICB8IDEwNCArKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvc3lzbG9nZ2VyLmMgICAgICAgICAgICB8ICAzNyArLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmMgICAgICAgIHwgIDgzICsrLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWx3cml0ZXIuYyAgICAgICAgICAgIHwgIDQ2ICstCiAuLi4vbGlicHF3 YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgIDEgLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTQ5ICsrLS0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgfCAxMjUgKystLQog Li4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgICA2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMgICAgfCAgOTAg Ky0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAg MzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICA0OCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAg IHwgIDM3ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgICAgICAgICAg ICAgfCAgNDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAg ICAgICB8ICA1NiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5j cy5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAg ICAgICAgICAgfCAyMjcgKysrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvLmMg ICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9f aW8uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21l dGhvZF93b3JrZXIuYyAgICAgICB8ICA3MSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jICAgICAgICAgfCAgMjcgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9kc21faW1wbC5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwYy5jICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvbGF0Y2guYyAgICAgICAgICAgICAgIHwgMzg5IC0tLS0tLS0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDEgLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICAgIHwgIDIyICstCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAyMjUgKy0t LS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgICAgICAgICAgICAgIHwg MTI3ICsrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgICAgICAg ICB8ICAxNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMgICAgICAgICAg ICAgIHwgIDY4ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyAgICAg ICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgICAgICB8ICA0MyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0 LmMgICAgICAgIHwgMzk2ICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv Y29uZGl0aW9uX3ZhcmlhYmxlLmMgfCAgMzUgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9wcmVkaWNhdGUuYyAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYyAgICAgICAgICAgICAgIHwgMTQ4ICsrLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL3NtZ3Ivc21nci5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2Uvc3luYy9zeW5jLmMgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQv dGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8IDYxNSArKysrKysrKystLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkgICAgICAgICB8 ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jICAgICAgICAgICAg IHwgIDExICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jICAgICAgICAgICAgICAg ICAgfCAgMjUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAgICAg ICAgICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAg ICAgICAgICB8ICAyMyAtCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMgICAg ICAgICAgICAgfCAgNzggKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMg ICAgICAgICAgICAgfCAgNDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5j ICAgICAgICAgICAgICB8ICAgNyAtCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYyAg ICAgICAgICAgICAgICAgfCAgMjQgKy0KIHNyYy9jb21tb24vc2NyYW0tY29tbW9uLmMgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvTWFrZWZpbGUgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxl bC5oICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9hc3lu Yy5oICAgICAgICAgICAgICAgICAgfCAgIDYgLQogc3JjL2luY2x1ZGUvaXBjL2ludGVycnVw dC5oICAgICAgICAgICAgICAgICAgIHwgMzcwICsrKysrKysrKysrCiAuLi4vaW50ZXJydXB0 LmggPT4gaXBjL3NpZ25hbF9oYW5kbGVycy5ofSAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaCAgICAgICB8ICA0OCArLQogc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEuaCAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5j bHVkZS9saWJwcS9wcW1xLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9p bmNsdWRlL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAxMzUgKy0tLQog c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oICAgICAgICAgICAgIHwgIDEwICst CiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oICAgfCAgIDQg Ky0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvc3RhcnR1cC5oICAgICAgICAgICAgICB8ICAg NCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICA1IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oICAgICAgICAgICB8 ICAgMSAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oICAg fCAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAg IHwgICA1ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmggICAgICAgICAgICAgICAg ICAgfCAxNDAgLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAg ICAgICAgIHwgIDM3ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oICAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAg ICAgICAgICAgICB8ICAzMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oICAgICAg ICAgICAgICAgICAgfCAgIDUgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQu aCAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggICAg ICAgICAgICAgICAgICAgfCAgIDcgLQogc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCAg ICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRl cm5hbC5oICAgICAgICAgICB8ICAgMSArCiBzcmMvcG9ydC9wZ19udW1hLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9wb3J0L3Bnc2xlZXAuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbnRlc3Rlci5jICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htX21xL3NldHVwLmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1fbXEvdGVzdC5jICAgICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMv dGVzdF9zaG1fbXEvd29ya2VyLmMgICAgICAgICB8ICAxMSArLQogc3JjL3Rlc3QvbW9kdWxl cy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYyAgICAgIHwgIDQ1ICstCiBzcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDMgKy0KIDE2MyBmaWxlcyBj aGFuZ2VkLCAzNTQ5IGluc2VydGlvbnMoKyksIDM1ODMgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i YWNrZW5kL2lwYy9pbnRlcnJ1cHQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5k L2lwYy9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2lwYy9z aWduYWxfaGFuZGxlcnMuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvaW50ZXJydXB0LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9sYXRjaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvaXBjL2lu dGVycnVwdC5oCiByZW5hbWUgc3JjL2luY2x1ZGUve3Bvc3RtYXN0ZXIvaW50ZXJydXB0Lmgg PT4gaXBjL3NpZ25hbF9oYW5kbGVycy5ofSAoODIlKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcHJl d2FybS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMK aW5kZXggODllMTg3NDI1Y2MuLjZiZTVjYTljMTgzIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3ByZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3By ZXdhcm0uYwpAQCAtMzAsMTcgKzMwLDE1IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRp b24uaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29y a2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9j c2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKQEAgLTE3MCwx MCArMTY4LDEzIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJYm9vbAkJ ZmluYWxfZHVtcF9hbGxvd2VkID0gdHJ1ZTsKIAlUaW1lc3RhbXBUeiBsYXN0X2R1bXBfdGlt ZSA9IDA7CiAKLQkvKiBFc3RhYmxpc2ggc2lnbmFsIGhhbmRsZXJzOyBvbmNlIHRoYXQncyBk b25lLCB1bmJsb2NrIHNpZ25hbHMuICovCi0JcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFu ZGxlckZvclNodXRkb3duUmVxdWVzdCk7Ci0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3Np Z3VzcjFfaGFuZGxlcik7CisJLyoKKwkgKiBXZSB3aWxsIGNoZWNrIGZvciBJTlRFUlJVUFRf VEVSTUlOQVRFIGV4cGxpY2l0bHkgaW4gdGhlIG1haW4gbG9vcCwgc28KKwkgKiBkaXNhYmxl IHRoZSBub3JtYWwgaW50ZXJydXB0IGhhbmRsZXIuCisJICovCisJRGlzYWJsZUludGVycnVw dChJTlRFUlJVUFRfVEVSTUlOQVRFKTsKKworCS8qIERlZmF1bHQgc2lnbmFsIGhhbmRsZXJz IGFyZSBPSyBmb3IgdXM7IHVuYmxvY2sgc2lnbmFscy4gKi8KIAlCYWNrZ3JvdW5kV29ya2Vy VW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENyZWF0ZSAoaWYgbmVjZXNzYXJ5KSBhbmQgYXR0 YWNoIHRvIG91ciBzaGFyZWQgbWVtb3J5IGFyZWEuICovCkBAIC0yMjIsMjcgKzIyMywyNyBA QCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChmaXJzdF90aW1lKQog CXsKIAkJYXB3X2xvYWRfYnVmZmVycygpOwotCQlmaW5hbF9kdW1wX2FsbG93ZWQgPSAhU2h1 dGRvd25SZXF1ZXN0UGVuZGluZzsKKwkJZmluYWxfZHVtcF9hbGxvd2VkID0gIUludGVycnVw dFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSk7CiAJCWxhc3RfZHVtcF90aW1lID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOwogCX0KIAogCS8qIFBlcmlvZGljYWxseSBkdW1wIGJ1ZmZl cnMgdW50aWwgdGVybWluYXRlZC4gKi8KLQl3aGlsZSAoIVNodXRkb3duUmVxdWVzdFBlbmRp bmcpCisJd2hpbGUgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQog CXsKLQkJLyogSW4gY2FzZSBvZiBhIFNJR0hVUCwganVzdCByZWxvYWQgdGhlIGNvbmZpZ3Vy YXRpb24uICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQl7Ci0JCQlDb25maWdS ZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCS8qIENoZWNrIGZvciBzdGFuZGFyZCBpbnRlcnJ1 cHRzIGFuZCBjb25maWcgcmVsb2FkICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJ CWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCVBy b2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCQl9CiAKIAkJaWYgKGF1dG9wcmV3YXJt X2ludGVydmFsIDw9IDApCiAJCXsKIAkJCS8qIFdlJ3JlIG9ubHkgZHVtcGluZyBhdCBzaHV0 ZG93biwgc28ganVzdCB3YWl0IGZvcmV2ZXIuICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0J CQkJCQkJIC0xTCwKLQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSBJTlRFUlJV UFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCQkJCSBJTlRFUlJVUFRfVEVSTUlOQVRFLAorCQkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIC0x TCwKKwkJCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKIAkJfQogCQllbHNlCiAJCXsKQEAg LTI2NiwxNCArMjY3LDEzIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9hcmcpCiAJ CQl9CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZSBuZXh0IGR1bXAgdGltZS4gKi8KLQkJCSh2 b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIGRlbGF5X2luX21zLAotCQkJ CQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdfUkVMT0FE IHwKKwkJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUsCisJCQkJCQkJCSBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIGRlbGF5 X2luX21zLAorCQkJCQkJCQkgUEdfV0FJVF9FWFRFTlNJT04pOwogCQl9Ci0KLQkJLyogUmVz ZXQgdGhlIGxhdGNoLCBsb29wLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOwogCX0KIAog CS8qCkBAIC00MjMsNyArNDIzLDcgQEAgYXB3X2xvYWRfYnVmZmVycyh2b2lkKQogCQkgKiBM aWtld2lzZSwgZG9uJ3QgbGF1bmNoIGlmIHdlJ3ZlIGFscmVhZHkgYmVlbiB0b2xkIHRvIHNo dXQgZG93bi4KIAkJICogKFRoZSBsYXVuY2ggd291bGQgZmFpbCBhbnl3YXksIGJ1dCB3ZSBt aWdodCBhcyB3ZWxsIHNraXAgaXQuKQogCQkgKi8KLQkJaWYgKFNodXRkb3duUmVxdWVzdFBl bmRpbmcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQog CQkJYnJlYWs7CiAKIAkJLyoKQEAgLTQ0NCw3ICs0NDQsNyBAQCBhcHdfbG9hZF9idWZmZXJz KHZvaWQpCiAJTFdMb2NrUmVsZWFzZSgmYXB3X3N0YXRlLT5sb2NrKTsKIAogCS8qIFJlcG9y dCBvdXIgc3VjY2VzcywgaWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmlzaC4gKi8KLQlpZiAoIVNo dXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKCFJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9URVJNSU5BVEUpKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJhdXRvcHJld2Fy bSBzdWNjZXNzZnVsbHkgcHJld2FybWVkICVkIG9mICVkIHByZXZpb3VzbHktbG9hZGVkIGJs b2NrcyIsCiAJCQkJCQlhcHdfc3RhdGUtPnByZXdhcm1lZF9ibG9ja3MsIG51bV9lbGVtZW50 cykpKTsKQEAgLTUwNCw4ICs1MDQsNyBAQCBhdXRvcHJld2FybV9kYXRhYmFzZV9tYWluKERh dHVtIG1haW5fYXJnKQogCUJsb2NrSW5mb1JlY29yZCBibGs7CiAJZHNtX3NlZ21lbnQgKnNl ZzsKIAotCS8qIEVzdGFibGlzaCBzaWduYWwgaGFuZGxlcnM7IG9uY2UgdGhhdCdzIGRvbmUs IHVuYmxvY2sgc2lnbmFscy4gKi8KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCS8qIERl ZmF1bHQgc2lnbmFsIGhhbmRsZXJzIGFyZSBPSyBmb3IgdXM7IHVuYmxvY2sgc2lnbmFscy4g Ki8KIAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENvbm5lY3Qg dG8gY29ycmVjdCBkYXRhYmFzZSBhbmQgZ2V0IGJsb2NrIGluZm9ybWF0aW9uLiAqLwpAQCAt OTIzLDkgKzkyMiw2IEBAIGFwd19zdGFydF9sZWFkZXJfd29ya2VyKHZvaWQpCiAJCXJldHVy bjsKIAl9CiAKLQkvKiBtdXN0IHNldCBub3RpZnkgUElEIHRvIHdhaXQgZm9yIHN0YXJ0dXAg Ki8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lz dGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VT KSwKQEAgLTk1OCw5ICs5NTQsNiBAQCBhcHdfc3RhcnRfZGF0YWJhc2Vfd29ya2VyKHZvaWQp CiAJc3RyY3B5KHdvcmtlci5iZ3dfbmFtZSwgImF1dG9wcmV3YXJtIHdvcmtlciIpOwogCXN0 cmNweSh3b3JrZXIuYmd3X3R5cGUsICJhdXRvcHJld2FybSB3b3JrZXIiKTsKIAotCS8qIG11 c3Qgc2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBmb3Igc2h1dGRvd24gKi8KLQl3b3JrZXIuYmd3 X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tn cm91bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTKSwKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2Nvbm5lY3Rpb24uYwppbmRleCBhZGQ2NzNhNDc3Ni4uYTFjODAxNmQwZjMgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTIyLDEzICsyMiwxMyBAQAogI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgImxpYnBxL2xpYnBxLWJlLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUtZmUtaGVs cGVycy5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3LmgiCi0j aW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CkBAIC04MzAsOCArODMwLDggQEAgZG9fc3FsX2NvbW1hbmRfZW5kKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqc3FsLCBib29sIGNvbnN1bWVfaW5wdXQpCiAJLyoKIAkgKiBJZiByZXF1 ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29j a2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGlzIGFs bG93cyBwZ2Zkd19nZXRfcmVzdWx0IHRvIGNhbGwKLQkgKiBQUWdldFJlc3VsdCB3aXRob3V0 IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0LCB3aGljaAotCSAq IHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJ bnB1dC4pCisJICogUFFnZXRSZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBv ZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQsCisJICogd2hpY2ggd291bGQgYmUgbGFyZ2UgY29t cGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9mIFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlpZiAo Y29uc3VtZV9pbnB1dCAmJiAhUFFjb25zdW1lSW5wdXQoY29ubikpCiAJCXBnZmR3X3JlcG9y dF9lcnJvcihOVUxMLCBjb25uLCBzcWwpOwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgcGdmZHdf Y2FuY2VsX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUsCiAJ LyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFi bGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYgYWxsIGRhdGEgaXMgYXZh aWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1bHQgdG8KLQkgKiBj YWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdExh dGNoT3JTb2NrZXQsCisJICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhl IG92ZXJoZWFkIG9mIFdhaXRJbnRlcnJ1cHRPclNvY2tldCwKIAkgKiB3aGljaCB3b3VsZCBi ZSBsYXJnZSBjb21wYXJlZCB0byB0aGUgb3ZlcmhlYWQgb2YgUFFjb25zdW1lSW5wdXQuKQog CSAqLwogCWlmIChjb25zdW1lX2lucHV0ICYmICFQUWNvbnN1bWVJbnB1dChjb25uKSkKQEAg LTE1NzksNyArMTU3OSw3IEBAIHBnZmR3X2V4ZWNfY2xlYW51cF9xdWVyeV9lbmQoUEdjb25u ICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSwKIAkvKgogCSAqIElmIHJlcXVlc3RlZCwgY29u c3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQuIChOb3Rl CiAJICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRoaXMgYWxsb3dzIHBnZmR3 X2dldF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRSZXN1bHQgd2l0aG91dCBm b3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tldCwKKwkgKiBjYWxsIFBR Z2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQgb2YgV2FpdEludGVycnVw dE9yU29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVkIHRvIHRoZSBv dmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYgKGNvbnN1bWVfaW5wdXQg JiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTY4NywxMiArMTY4NywxMSBAQCBwZ2Zk d19nZXRfY2xlYW51cF9yZXN1bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1l LAogCQkJCXBnZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3 KCJQb3N0Z3Jlc0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJLyogU2xlZXAgdW50aWwgdGhl cmUncyBzb21ldGhpbmcgdG8gZG8gKi8KLQkJCXdjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlM YXRjaCwKLQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwK LQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJ CSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2Vf Y2xlYW51cF9yZXN1bHQpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCXdjID0gV2Fp dEludGVycnVwdE9yU29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJCQkg ICBXTF9JTlRFUlJVUFQgfCBXTF9TT0NLRVRfUkVBREFCTEUgfAorCQkJCQkJCQkJICAgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCQkgICBQUXNvY2tldChj b25uKSwKKwkJCQkJCQkJCSAgIGN1cl90aW1lb3V0LCBwZ2Zkd193ZV9jbGVhbnVwX3Jlc3Vs dCk7CiAKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKaW5kZXggNjBkOTAzMjlhNjUuLmViOTI1ZmRhMzllIDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwpAQCAtMzksNyArMzksNyBAQAogI2luY2x1 ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIK ICNpbmNsdWRlICJwb3N0Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgi CisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCkBAIC03Mjc2LDcgKzcyNzYsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZp Z3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0FyZXEgPT0g YXJlcSk7CiAKIAlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwg UFFzb2NrZXQoZnNzdGF0ZS0+Y29ubiksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJCQkJCSAg MCwgYXJlcSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIu c2dtbCBiL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IDJhZmZiYTc0MzgyLi4w NmJjNTdmMTBiZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgogICAgIGNoYXIgICAgICAgIGJnd19mdW5jdGlv bl9uYW1lW0JHV19NQVhMRU5dOwogICAgIERhdHVtICAgICAgIGJnd19tYWluX2FyZzsKICAg ICBjaGFyICAgICAgICBiZ3dfZXh0cmFbQkdXX0VYVFJBTEVOXTsKLSAgICBwaWRfdCAgICAg ICBiZ3dfbm90aWZ5X3BpZDsKKyAgICBwaWRfdCAgICAgICBiZ3dfbm90aWZ5X3BpZDsJCQkv KiBub3QgdXNlZCAqLwogfSBCYWNrZ3JvdW5kV29ya2VyOwogPC9wcm9ncmFtbGlzdGluZz4K ICAgPC9wYXJhPgpAQCAtMTMxLDYgKzEzMSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3Jv dW5kV29ya2VyCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5CR1dPUktFUl9OT19OT1RJ Rlk8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PkJHV09SS0VSX05PX05PVElGWTwvcHJpbWFyeT48 L2luZGV4dGVybT4gTm9ybWFsbHksCisgICAgICAgdGhlIGJhY2tlbmQgdGhhdCByZWdpc3Rl cnMgYSBkeW5hbWljIHdvcmtlciB3aWxsIGJlIG5vdGlmaWVkCisgICAgICAgd2l0aCA8bGl0 ZXJhbD5JTlRFUlJVUFRfV0FJVF9XQUtFVVA8L2xpdGVyYWw+IHdoZW4gdGhlIHdvcmtlcidz IHN0YXRlCisgICAgICAgY2hhbmdlcywgd2hpY2ggYWxsb3dzIHRoZSBjYWxsZXIgdG8gd2Fp dCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCBhbmQKKyAgICAgICBzaHV0IGRvd24uICBUaGF0 IGNhbiBiZSBzdXBwcmVzc2VkIGJ5IHNldHRpbmcgdGhpcyBmbGFnLgorICAgICAgIDwhLS0g RklYTUU6IFNob3VsZCB3ZSByZXNlcnZlIGEgZGVkaWNhdGVkIElOVEVSUlVQVCBiaXQgZm9y IGl0PyBBbmQgaWYKKyAgICAgICAgICAgIHdlIGRvLCBkbyB3ZSBldmVuIG5lZWQgdGhlIEJH V09SS0VSX05PX05PVElGWSBmbGFnLCB0aGVyZSdzIHZlcnkgbGl0dGxlCisgICAgICAgICAg ICBvdmVyaGVhZCBpbiBzZW5kaW5nIGEgdXNlbGVzcyBpbnRlcnJ1cHQgLS0+CisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CiAgICA8L3Zh cmlhYmxlbGlzdD4KIAogICA8L3BhcmE+CkBAIC0yMDQsMTIgKzIxOSw4IEBAIHR5cGVkZWYg c3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgPC9wYXJhPgogCiAgIDxwYXJhPgotICAgPHN0 cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIFBJRCBvZiBh IFBvc3RncmVTUUwKLSAgIGJhY2tlbmQgcHJvY2VzcyB0byB3aGljaCB0aGUgcG9zdG1hc3Rl ciBzaG91bGQgc2VuZCA8bGl0ZXJhbD5TSUdVU1IxPC9saXRlcmFsPgotICAgd2hlbiB0aGUg cHJvY2VzcyBpcyBzdGFydGVkIG9yIGV4aXRzLiAgSXQgc2hvdWxkIGJlIDAgZm9yIHdvcmtl cnMgcmVnaXN0ZXJlZAotICAgYXQgcG9zdG1hc3RlciBzdGFydHVwIHRpbWUsIG9yIHdoZW4g dGhlIGJhY2tlbmQgcmVnaXN0ZXJpbmcgdGhlIHdvcmtlciBkb2VzCi0gICBub3Qgd2lzaCB0 byB3YWl0IGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IHVwLiAgT3RoZXJ3aXNlLCBpdCBzaG91 bGQgYmUKLSAgIGluaXRpYWxpemVkIHRvIDxsaXRlcmFsPk15UHJvY1BpZDwvbGl0ZXJhbD4u CisgICA8c3RydWN0ZmllbGQ+Ymd3X25vdGlmeV9waWQ8L3N0cnVjdGZpZWxkPiBpcyBub3Qg dXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQKKyAgIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgIDwv cGFyYT4KIAogICA8cGFyYT5PbmNlIHJ1bm5pbmcsIHRoZSBwcm9jZXNzIGNhbiBjb25uZWN0 IHRvIGEgZGF0YWJhc2UgYnkgY2FsbGluZwpAQCAtMjYwLDcgKzI3MSw3IEBAIHR5cGVkZWYg c3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgIHJlaW5pdGlhbGl6ZXMgdGhlIGNsdXN0ZXIg ZHVlIHRvIGEgYmFja2VuZCBmYWlsdXJlLiAgQmFja2VuZHMgd2hpY2ggbmVlZAogICAgdG8g c3VzcGVuZCBleGVjdXRpb24gb25seSB0ZW1wb3JhcmlseSBzaG91bGQgdXNlIGFuIGludGVy cnVwdGlibGUgc2xlZXAKICAgIHJhdGhlciB0aGFuIGV4aXRpbmc7IHRoaXMgY2FuIGJlIGFj aGlldmVkIGJ5IGNhbGxpbmcKLSAgIDxmdW5jdGlvbj5XYWl0TGF0Y2goKTwvZnVuY3Rpb24+ LiBNYWtlIHN1cmUgdGhlCisgICA8ZnVuY3Rpb24+V2FpdEludGVycnVwdCgpPC9mdW5jdGlv bj4uIE1ha2Ugc3VyZSB0aGUKICAgIDxsaXRlcmFsPldMX1BPU1RNQVNURVJfREVBVEg8L2xp dGVyYWw+IGZsYWcgaXMgc2V0IHdoZW4gY2FsbGluZyB0aGF0IGZ1bmN0aW9uLCBhbmQKICAg IHZlcmlmeSB0aGUgcmV0dXJuIGNvZGUgZm9yIGEgcHJvbXB0IGV4aXQgaW4gdGhlIGVtZXJn ZW5jeSBjYXNlIHRoYXQKICAgIDxjb21tYW5kPnBvc3RncmVzPC9jb21tYW5kPiBpdHNlbGYg aGFzIHRlcm1pbmF0ZWQuCkBAIC0yOTEsMTAgKzMwMiw3IEBAIHR5cGVkZWYgc3RydWN0IEJh Y2tncm91bmRXb3JrZXIKIAogICA8cGFyYT4KICAgIEluIHNvbWUgY2FzZXMsIGEgcHJvY2Vz cyB3aGljaCByZWdpc3RlcnMgYSBiYWNrZ3JvdW5kIHdvcmtlciBtYXkgd2lzaCB0bwotICAg d2FpdCBmb3IgdGhlIHdvcmtlciB0byBzdGFydCB1cC4gIFRoaXMgY2FuIGJlIGFjY29tcGxp c2hlZCBieSBpbml0aWFsaXppbmcKLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90aWZ5X3BpZDwv c3RydWN0ZmllbGQ+IHRvIDxsaXRlcmFsPk15UHJvY1BpZDwvbGl0ZXJhbD4gYW5kCi0gICB0 aGVuIHBhc3NpbmcgdGhlIDx0eXBlPkJhY2tncm91bmRXb3JrZXJIYW5kbGUgKjwvdHlwZT4g b2J0YWluZWQgYXQKLSAgIHJlZ2lzdHJhdGlvbiB0aW1lIHRvCisgICB3YWl0IGZvciB0aGUg d29ya2VyIHRvIHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIHdpdGggdGhl CiAgICA8ZnVuY3Rpb24+V2FpdEZvckJhY2tncm91bmRXb3JrZXJTdGFydHVwKDxwYXJhbWV0 ZXI+QmFja2dyb3VuZFdvcmtlckhhbmRsZQogICAgKmhhbmRsZTwvcGFyYW1ldGVyPiwgPHBh cmFtZXRlcj5waWRfdCAqPC9wYXJhbWV0ZXI+KTwvZnVuY3Rpb24+IGZ1bmN0aW9uLgogICAg VGhpcyBmdW5jdGlvbiB3aWxsIGJsb2NrIHVudGlsIHRoZSBwb3N0bWFzdGVyIGhhcyBhdHRl bXB0ZWQgdG8gc3RhcnQgdGhlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvb2F1dGgtdmFs aWRhdG9ycy5zZ21sIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRvcnMuc2dtbAppbmRl eCA3MDQwODlkZDdiMy4uM2M0MjY4Zjc0MWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9v YXV0aC12YWxpZGF0b3JzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL29hdXRoLXZhbGlkYXRv cnMuc2dtbApAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgICAgY29ycmVjdGx5IGhhbmRsZSBh dXRoZW50aWNhdGlvbiB0aW1lb3V0cyBhbmQgc2h1dGRvd24gc2lnbmFscyBmcm9tCiAgICAg ICAgPGFwcGxpY2F0aW9uPnBnX2N0bDwvYXBwbGljYXRpb24+LiBGb3IgZXhhbXBsZSwgYmxv Y2tpbmcgY2FsbHMgb24gc29ja2V0cwogICAgICAgIHNob3VsZCBnZW5lcmFsbHkgYmUgcmVw bGFjZWQgd2l0aCBjb2RlIHRoYXQgaGFuZGxlcyBib3RoIHNvY2tldCBldmVudHMKLSAgICAg ICBhbmQgaW50ZXJydXB0cyB3aXRob3V0IHJhY2VzIChzZWUgPGZ1bmN0aW9uPldhaXRMYXRj aE9yU29ja2V0KCk8L2Z1bmN0aW9uPiwKKyAgICAgICBhbmQgaW50ZXJydXB0cyB3aXRob3V0 IHJhY2VzIChzZWUgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHRPclNvY2tldCgpPC9mdW5jdGlv bj4sCiAgICAgICAgPGZ1bmN0aW9uPldhaXRFdmVudFNldFdhaXQoKTwvZnVuY3Rpb24+LCBl dCBhbCksIGFuZCBsb25nLXJ1bm5pbmcgbG9vcHMKICAgICAgICBzaG91bGQgcGVyaW9kaWNh bGx5IGNhbGwgPGZ1bmN0aW9uPkNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk8L2Z1bmN0aW9uPi4K ICAgICAgICBGYWlsdXJlIHRvIGZvbGxvdyB0aGlzIGd1aWRhbmNlIG1heSByZXN1bHQgaW4g dW5yZXNwb25zaXZlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zb3VyY2Vz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCmluZGV4IDc2MGY5YjY5ZDQ3Li42 MmZmOWUzZTM5NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCkBAIC05ODgsMjIgKzk4OCwyNSBAQCBNZW1v cnlDb250ZXh0U3dpdGNoVG8oTWVtb3J5Q29udGV4dCBjb250ZXh0KQogICAgICBjYWxsIGFz eW5jLXNpZ25hbCBzYWZlIGZ1bmN0aW9ucyAoYXMgZGVmaW5lZCBpbiBQT1NJWCkgYW5kIGFj Y2VzcwogICAgICB2YXJpYWJsZXMgb2YgdHlwZSA8bGl0ZXJhbD52b2xhdGlsZSBzaWdfYXRv bWljX3Q8L2xpdGVyYWw+LiBBIGZldwogICAgICBmdW5jdGlvbnMgaW4gPGNvbW1hbmQ+cG9z dGdyZXM8L2NvbW1hbmQ+IGFyZSBhbHNvIGRlZW1lZCBzaWduYWwgc2FmZSwgaW1wb3J0YW50 bHkKLSAgICAgPGZ1bmN0aW9uPlNldExhdGNoKCk8L2Z1bmN0aW9uPi4KKyAgICAgPGZ1bmN0 aW9uPlJhaXNlSW50ZXJydXB0KCk8L2Z1bmN0aW9uPi4KICAgICA8L3BhcmE+CiAgICAgPHBh cmE+CiAgICAgIEluIG1vc3QgY2FzZXMgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBkbyBub3Ro aW5nIG1vcmUgdGhhbiBub3RlCiAgICAgIHRoYXQgYSBzaWduYWwgaGFzIGFycml2ZWQsIGFu ZCB3YWtlIHVwIGNvZGUgcnVubmluZyBvdXRzaWRlIG9mCi0gICAgIHRoZSBoYW5kbGVyIHVz aW5nIGEgbGF0Y2guIEFuIGV4YW1wbGUgb2Ygc3VjaCBhIGhhbmRsZXIgaXMgdGhlCisgICAg IHRoZSBoYW5kbGVyIHVzaW5nIFJhaXNlSW50ZXJydXB0KCkuIEFuIGV4YW1wbGUgb2Ygc3Vj aCBhIGhhbmRsZXIgaXMgdGhlCiAgICAgIGZvbGxvd2luZzoKIDxwcm9ncmFtbGlzdGluZz4K IHN0YXRpYyB2b2lkCiBoYW5kbGVfc2lnaHVwKFNJR05BTF9BUkdTKQogewotICAgIGdvdF9T SUdIVVAgPSB0cnVlOwotICAgIFNldExhdGNoKE15TGF0Y2gpOworICAgIFJhaXNlSW50ZXJy dXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIH0KIDwvcHJvZ3JhbWxpc3Rpbmc+CiAg ICAgPC9wYXJhPgorICAgIDwhLS0gVE9ETzogVGhpcyBzZWN0aW9uIGlzIG5vdCB3cm9uZywg YnV0IHNob3VsZCBiZSB1cGRhdGVkLiBTaG91bGQKKyAgICAgICAgIGRvY3VtZW50IGFuZCBl bXBoYXNpemUgdGhlIGludGVycnVwdCBtZWNoYW5pc20gbW9yZSwgYW5kIHRoZQorICAgICAg ICAgaGFuZGxlX3NpZ2h1cCBleGFtcGxlIGlzIGJhZCBiZWNhdXNlIHRoZSBzdGFuZGFyZCBz aWduYWwgaGFuZGxlciBmb3IKKyAgICAgICAgIFNJR0hVUCBhbHJlYWR5IGRvZXMgdGhhdCAt LT4KICAgIDwvc2ltcGxlc2VjdD4KIAogICAgPHNpbXBsZXNlY3QgaWQ9InNvdXJjZS1jb252 ZW50aW9ucy1mdW5jdGlvbi1wb2ludGVycyI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9N YWtlZmlsZSBiL3NyYy9iYWNrZW5kL01ha2VmaWxlCmluZGV4IDA1NjQyZGMwMmUzLi45ODgx OTA4Nzg3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvTWFrZWZpbGUKKysrIGIvc3JjL2Jh Y2tlbmQvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcgQEAgU1VCRElSUyA9IFwKIAljb21tYW5k cyBcCiAJZXhlY3V0b3IgXAogCWZvcmVpZ24gXAorCWlwYyBcCiAJbGliIFwKIAlsaWJwcSBc CiAJbWFpbiBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Bh Z2VvcHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcGFnZW9wcy5jCmluZGV4 IDdkYTk3YmVjNDNiLi4zMDhmZmQ3ZTU2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl9wYWdlb3BzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9wYWdlb3BzLmMKQEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvYnJp bl9yZXZtYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl94bG9nLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9yZXZtYXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMKaW5kZXggMjMzMzU1Y2IyZDUu LjUyNmJhNzQ3YzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu X3Jldm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fcmV2bWFwLmMK QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvYnJpbl94bG9nLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3JtZ3IuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3RvYXN0X2ludGVybmFscy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90b2FzdF9pbnRlcm5hbHMuYwppbmRleCA0 ZDBkYTA3MTM1ZS4uZThlODRlMjQ4Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9jb21tb24vdG9hc3RfaW50ZXJuYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi90b2FzdF9pbnRlcm5hbHMuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy90b2FzdF9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYwppbmRleCAzZDNhOWRhNTZiMS4uYzRmMjhiZmIx MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luYnRyZWUuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmJ0cmVlLmMKQEAgLTE3LDcgKzE3LDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvZ2luX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2lu eGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naW4vZ2luZGF0YXBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0 YXBhZ2UuYwppbmRleCBjNWQ3ZGIyODA3Ny4uMDZjOTk2ZjZmYzAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZGF0YXBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmRhdGFwYWdlLmMKQEAgLTE3LDggKzE3LDggQEAKICNpbmNsdWRlICJh Y2Nlc3MvZ2luX3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2lueGxvZy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZmFzdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW5mYXN0LmMKaW5kZXggZjUwODQ4ZWI2NWEuLmRkZjQxNDY2 MGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmZhc3QuYwpAQCAtMjQsNiArMjQsNyBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19h bS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jp dHV0aWxzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmdldC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5nZXQuYwppbmRleCA2YjE0OGU2OWE4ZS4uMGVmNTVkMzA0YjggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luZ2V0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpbi9naW5nZXQuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9naW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5j bHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIK ICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW51dGlsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYwpp bmRleCBmZjkyNzI3OWNjMy4uNDYwY2Q5ZjlkOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naW4vZ2ludXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu dXRpbC5jCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5oIgogI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5kZXhfc2VsZnVuY3MuaCIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IGM5ZjE0M2Y2YzMxLi5iMmFjNmUyNDdl NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0xOCw2ICsxOCw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL2dpbnhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2lu c2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdl L2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0LmMKaW5kZXggZGZmZmNlM2UzOTYuLjlmYzAzMTM0ODA0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b2xsYXRpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibm9k ZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0Z2V0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMK aW5kZXggMTFiMjE0ZWI5OWIuLjllMjM2Nzk5ZjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdGdldC5jCkBAIC0xOCw4ICsxOCw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL2dpc3RfcHJp dmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgImxpYi9wYWlyaW5naGVhcC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5j bHVkZSAidXRpbHMvZmxvYXQuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3R2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWN1dW0u YwppbmRleCA5ZTcxNDk4MGQyNi4uZTEzYWE0OTczMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dmFjdXVtLmMKQEAgLTE4LDggKzE4LDggQEAKICNpbmNsdWRlICJhY2Nlc3Mv Z2lzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRl ICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAibGliL2ludGVnZXJzZXQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5j CmluZGV4IGU4OGRkYjMyYTA1Li4xMjkyNDA2ZWJiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hh c2guYwpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0Lmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hpbnNlcnQuYwppbmRleCAwY2VmYmFjYzk2ZS4uNzdlOTM5MGIxZjkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTE4LDcgKzE4LDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9oYXNoX3hsb2cuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRp Y2F0ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaG92ZmwuYwppbmRleCA4Y2ZiNmNlNzVkNi4uNWFlOTExNGNkNjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hvdmZsLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaG92ZmwuYwpAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9oYXNoLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hhc2hfeGxvZy5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCmluZGV4IDhlMjIwYTNhZTE2Li45NjE3MmMzMjIz NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2UuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCkBAIC0zMSw3ICszMSw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaGFzaF94bG9n LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19i aXR1dGlscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoc2VhcmNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc2VhcmNoLmMKaW5k ZXggODlkMWM1YmM2ZDcuLjRjNmE4OTgwZTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoc2VhcmNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaHNlYXJjaC5jCkBAIC0xNiw4ICsxNiw4IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGFz aC5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoc29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hhc2gvaGFzaHNvcnQuYwppbmRleCA3N2JiZmFhNDYxYi4uMWJiZjBkMzM5NjYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hzb3J0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaHNvcnQuYwpAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5j bHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCmluZGV4IDYzMmMyNDI3OTUyLi45Y2I0Yjc2Njc5NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA0YmUyNjdmZjY1Ny4uYWU3ZTc5OTNjOGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE0Myw2ICsxNDMs NyBAQAogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJu Zy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgpAQCAtMzMwMCwxMSAr MzMwMSwxMCBAQCBsYXp5X3RydW5jYXRlX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkJ CXJldHVybjsKIAkJCX0KIAotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJ CSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJ CQkJCQkgVkFDVVVNX1RSVU5DQVRFX0xPQ0tfV0FJVF9JTlRFUlZBTCwKLQkJCQkJCQkgV0FJ VF9FVkVOVF9WQUNVVU1fVFJVTkNBVEUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJ CSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUwsCisJCQkJCQkJCSBX QUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDMwNDdiZDQ2ZGVmLi5kYTE5NTJl OTQxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1h cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAt OTEsNyArOTEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxz LmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYwppbmRleCA1ZTg5Yjg2YTYyYy4uNzBhNGU0ZWUwMGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9nZW5hbS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGli L3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRkZWR1cC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCmluZGV4 IDk1YmUwYjE3OTM5Li40ZDk5OGFkYzJhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRkZWR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYwpAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9uYnR4bG9n LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2luc2VydC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogc3RhdGljIHZvaWQgX2J0X2Jv dHRvbXVwZGVsX2ZpbmlzaF9wZW5kaW5nKFBhZ2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRl LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZDE3YWFhNWFh MGYuLmUwMDdiMmVhNTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0 LmMKQEAgLTIyLDggKzIyLDggQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgog I2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJjb21tb24vcGdfcHJuZy5oIgor I2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvcXVuaXF1ZS5oIgot I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBh Z2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDQxMjVj MTg1ZThiLi45MzhmOTA0N2MzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdl LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1 ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUu aCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCmluZGV4IDMyYWUwYmRh ODkyLi42ZjFmOWRjMGQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzZWFyY2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJj aC5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNp bmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRf bm9kZS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0 ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGdkb2luc2VydC5jCmluZGV4IDdjNzM3MWM2OWU4Li5iOGI1ZWFhYzU3YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwpAQCAtMjAzNSw4 ICsyMDM1LDExIEBAIHNwZ2RvaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAq c3RhdGUsCiAJCSAqIHBlbmRpbmcsIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBhbmQgZGVhbCB3 aXRoIHRoZSBzaXR1YXRpb24gYmVsb3cuCiAJCSAqIFNldCByZXN1bHQgPSBmYWxzZSBiZWNh dXNlIHdlIG11c3QgcmVzdGFydCB0aGUgaW5zZXJ0aW9uIGlmIHRoZQogCQkgKiBpbnRlcnJ1 cHQgaXNuJ3QgYSBxdWVyeS1jYW5jZWwtb3ItZGllIGNhc2UuCisJCSAqCisJCSAqIEZJWE1F OiBDaGVja0ZvckludGVycnVwdHNNYXNrIGNvdmVycyBtb3JlIHRoYW4ganVzdCBxdWVyeSBj YW5jZWwKKwkJICogYW5kIGRpZS4gIENvdWxkIHdlIGJlIG1vcmUgcHJlY2lzZSBoZXJlPwog CQkgKi8KLQkJaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSkKKwkJaWYgKElO VEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJ CXsKIAkJCXJlc3VsdCA9IGZhbHNlOwogCQkJYnJlYWs7CkBAIC0yMTYyLDcgKzIxNjUsNyBA QCBzcGdkb2luc2VydChSZWxhdGlvbiBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAogCQkJ ICogcmVwZWF0ZWRseSwgY2hlY2sgZm9yIHF1ZXJ5IGNhbmNlbCAoc2VlIGNvbW1lbnRzIGFi b3ZlKS4KIAkJCSAqLwogCXByb2Nlc3NfaW5uZXJfdHVwbGU6Ci0JCQlpZiAoSU5URVJSVVBU U19QRU5ESU5HX0NPTkRJVElPTigpKQorCQkJaWYgKElOVEVSUlVQVFNfUEVORElOR19DT05E SVRJT04oQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJCQl7CiAJCQkJcmVzdWx0ID0gZmFs c2U7CiAJCQkJYnJlYWs7CkBAIC0yMzM4LDcgKzIzNDEsNyBAQCBzcGdkb2luc2VydChSZWxh dGlvbiBpbmRleCwgU3BHaXN0U3RhdGUgKnN0YXRlLAogCSAqIHdlcmUgdGhlIGNhc2UsIHRl bGxpbmcgdGhlIGNhbGxlciB0byByZXRyeSB3b3VsZCBjcmVhdGUgYW4gaW5maW5pdGUKIAkg KiBsb29wLgogCSAqLwotCUFzc2VydChJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSk7 CisJQXNzZXJ0KElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChDaGVja0ZvckludGVycnVw dHNNYXNrKSk7CiAKIAkvKgogCSAqIEZpbmFsbHksIGNoZWNrIGZvciBpbnRlcnJ1cHRzIGFn YWluLiAgSWYgdGhlcmUgd2FzIGEgcXVlcnkgY2FuY2VsLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2NDZhNTQuLmMyZDdjYWY2ZjY4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTIwLDcgKzIwLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3Mvc3BnaXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3Mv dGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm5v ZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3NjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nh bi5jCmluZGV4IDJjYzVmMDZmNWQ3Li40NzVhNTBjZGRjZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGdzY2FuLmMKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mv cmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA2YjcxMTdiNTZiMi4u ODg0YWNiNjhjMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpA QCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIK LSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2luZGV4ZnNt LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9S RUFETUUKaW5kZXggMjMxMTA2MjcwZmQuLjczYTcyN2Q1M2Q2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vUkVBRE1FCkBAIC03OTQsNyArNzk0LDcgQEAgY29tbWl0IHRvIG1pbmltaXpl IHRoZSB3aW5kb3cgaW4gd2hpY2ggdGhlIGZpbGVzeXN0ZW0gY2hhbmdlIGhhcyBiZWVuIG1h ZGUKIGJ1dCB0aGUgdHJhbnNhY3Rpb24gaXNuJ3QgZ3VhcmFudGVlZCBjb21taXR0ZWQuCiAK IFRoZSB3YWx3cml0ZXIgcmVndWxhcmx5IHdha2VzIHVwICh2aWEgd2FsX3dyaXRlcl9kZWxh eSkgb3IgaXMgd29rZW4gdXAKLSh2aWEgaXRzIGxhdGNoLCB3aGljaCBpcyBzZXQgYnkgYmFj a2VuZHMgY29tbWl0dGluZyBhc3luY2hyb25vdXNseSkgYW5kCisodmlhIGFuIGludGVycnVw dCwgd2hpY2ggaXMgc2VudCBieSBiYWNrZW5kcyBjb21taXR0aW5nIGFzeW5jaHJvbm91c2x5 KSBhbmQKIHBlcmZvcm1zIGFuIFhMb2dCYWNrZ3JvdW5kRmx1c2goKS4gIFRoaXMgY2hlY2tz IHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdAogY29tcGxldGVseSBmaWxsZWQgV0FMIHBhZ2Uu ICBJZiB0aGF0IGhhcyBtb3ZlZCBmb3J3YXJkcywgdGhlbiB3ZSB3cml0ZSBhbGwKIHRoZSBj aGFuZ2VkIGJ1ZmZlcnMgdXAgdG8gdGhhdCBwb2ludCwgc28gdGhhdCB1bmRlciBmdWxsIGxv YWQgd2Ugd3JpdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JF QURNRS5wYXJhbGxlbCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJh bGxlbAppbmRleCA5ZGYzZGE5MWIwYy4uYTM1OTNkZDRmNTQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbAorKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9SRUFETUUucGFyYWxsZWwKQEAgLTM3LDcgKzM3LDcgQEAgd2l0 aCBmZXdlciBwYXJhbGxlbCB3b3JrZXJzIHRoYW4gaXQgb3JpZ2luYWxseSByZXF1ZXN0ZWQs IHNvIGNhdGVyaW5nIHRvCiB0aGlzIGNhc2UgaW1wb3NlcyBubyBhZGRpdGlvbmFsIGJ1cmRl bi4KIAogV2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSAob3IgcGFydGlhbCBtZXNzYWdlOyB2ZXJ5 IGxhcmdlIG1lc3NhZ2VzIG1heSB3cmFwKSBpcwotc2VudCB0byB0aGUgZXJyb3ItcmVwb3J0 aW5nIHF1ZXVlLCBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UgaXMgc2VudCB0byB0aGUKK3Nl bnQgdG8gdGhlIGVycm9yLXJlcG9ydGluZyBxdWV1ZSwgSU5URVJSVVBUX1BBUkFMTEVMX01F U1NBR0UgaXMgc2VudCB0byB0aGUKIGluaXRpYXRpbmcgYmFja2VuZC4gIFRoaXMgY2F1c2Vz IHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4gdGhlCiBpbml0aWF0aW5nIGJh Y2tlbmQgdG8gcmVhZCBhbmQgcmV0aHJvdyB0aGUgbWVzc2FnZS4gIEZvciB0aGUgbW9zdCBw YXJ0LCB0aGlzCiBtYWtlcyBlcnJvciByZXBvcnRpbmcgaW4gcGFyYWxsZWwgbW9kZSAianVz dCB3b3JrIi4gIE9mIGNvdXJzZSwgdG8gd29yawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vZ2VuZXJpY194bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9nZW5lcmljX3hsb2cuYwppbmRleCA3ZjgyMTg2ZDBkNi4uNmVjYTI0NTFhNzAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2dlbmVyaWNfeGxvZy5jCkBAIC0xNiw3 ICsxNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2J1Zm1hc2suaCIKICNpbmNsdWRlICJhY2Nl c3MvZ2VuZXJpY194bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgotI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKIAogLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJbnRlcm5hbGx5LCBhIGRlbHRhIGJldHdlZW4gcGFn ZXMgY29uc2lzdHMgb2YgYSBzZXQgb2YgZnJhZ21lbnRzLiAgRWFjaApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggNDQ3ODZkYzEzMWYuLjY1YzQ2N2YyNWY5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTI4LDYgKzI4 LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1 ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5oIgpAQCAtMTE0 LDkgKzExNSw2IEBAIHR5cGVkZWYgc3RydWN0IEZpeGVkUGFyYWxsZWxTdGF0ZQogICovCiBp bnQJCQlQYXJhbGxlbFdvcmtlck51bWJlciA9IC0xOwogCi0vKiBJcyB0aGVyZSBhIHBhcmFs bGVsIG1lc3NhZ2UgcGVuZGluZyB3aGljaCB3ZSBuZWVkIHRvIHJlY2VpdmU/ICovCi12b2xh dGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IGZhbHNlOwotCiAv KiBBcmUgd2UgaW5pdGlhbGl6aW5nIGEgcGFyYWxsZWwgd29ya2VyPyAqLwogYm9vbAkJSW5p dGlhbGl6aW5nUGFyYWxsZWxXb3JrZXIgPSBmYWxzZTsKIApAQCAtMTI2LDkgKzEyNCw2IEBA IHN0YXRpYyBGaXhlZFBhcmFsbGVsU3RhdGUgKk15Rml4ZWRQYXJhbGxlbFN0YXRlOwogLyog TGlzdCBvZiBhY3RpdmUgcGFyYWxsZWwgY29udGV4dHMuICovCiBzdGF0aWMgZGxpc3RfaGVh ZCBwY3h0X2xpc3QgPSBETElTVF9TVEFUSUNfSU5JVChwY3h0X2xpc3QpOwogCi0vKiBCYWNr ZW5kLWxvY2FsIGNvcHkgb2YgZGF0YSBmcm9tIEZpeGVkUGFyYWxsZWxTdGF0ZS4gKi8KLXN0 YXRpYyBwaWRfdCBQYXJhbGxlbExlYWRlclBpZDsKLQogLyoKICAqIExpc3Qgb2YgaW50ZXJu YWwgcGFyYWxsZWwgd29ya2VyIGVudHJ5IHBvaW50cy4gIFdlIG5lZWQgdGhpcyBmb3IKICAq IHJlYXNvbnMgZXhwbGFpbmVkIGluIExvb2t1cFBhcmFsbGVsV29ya2VyRnVuY3Rpb24oKSwg YmVsb3cuCkBAIC0yNDIsNyArMjM3LDcgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFs bGVsQ29udGV4dCAqcGN4dCkKIAkgKiBXZSBjYW4gZGVhbCB3aXRoIHRoYXQgZWRnZSBjYXNl IGJ5IHByZXRlbmRpbmcgbm8gd29ya2VycyB3ZXJlCiAJICogcmVxdWVzdGVkLgogCSAqLwot CWlmICghSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpCisJaWYgKCFJTlRFUlJVUFRT X0NBTl9CRV9QUk9DRVNTRUQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykpCiAJCXBjeHQtPm53 b3JrZXJzID0gMDsKIAogCS8qCkBAIC02MTEsNyArNjA2LDYgQEAgTGF1bmNoUGFyYWxsZWxX b3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAlzcHJpbnRmKHdvcmtlci5iZ3dfbGli cmFyeV9uYW1lLCAicG9zdGdyZXMiKTsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVuY3Rpb25f bmFtZSwgIlBhcmFsbGVsV29ya2VyTWFpbiIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBV SW50MzJHZXREYXR1bShkc21fc2VnbWVudF9oYW5kbGUocGN4dC0+c2VnKSk7Ci0Jd29ya2Vy LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCiAJLyoKIAkgKiBTdGFydCB3b3JrZXJz LgpAQCAtNzY2LDE2ICs3NjAsMjEgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNo KFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFdvcmtlciBu b3QgeWV0IHN0YXJ0ZWQsIHNvIHdlIG11c3Qgd2FpdC4gIFRoZSBwb3N0bWFzdGVyCi0JCQkJ ICogd2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuICBPdXIg bGF0Y2gKLQkJCQkgKiBtaWdodCBhbHNvIGdldCBzZXQgZm9yIHNvbWUgb3RoZXIgcmVhc29u LCBidXQgaWYgc28gd2UnbGwKLQkJCQkgKiBqdXN0IGVuZCB1cCB3YWl0aW5nIGZvciB0aGUg c2FtZSB3b3JrZXIgYWdhaW4uCisJCQkJICogd2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtl cidzIHN0YXRlIGNoYW5nZXMgd2l0aAorCQkJCSAqIElOVEVSUlVQVF9XQUlUX1dBS0VVUC4g IFRoZSBpbnRlcnJ1cHQgbWlnaHQgYWxzbyBnZXQgc2V0CisJCQkJICogZm9yIHNvbWUgb3Ro ZXIgcmVhc29uLCBidXQgaWYgc28gd2UnbGwganVzdCBlbmQgdXAgd2FpdGluZworCQkJCSAq IGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCiAJCQkJICovCi0JCQkJcmMgPSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQkJ CXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkJ ICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgICAtMSwgV0FJVF9FVkVOVF9CR1dPUktF Ul9TVEFSVFVQKTsKIAotCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJeworCQkJ CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOworCQkJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQkJCX0KIAkJCX0KIAkJfQogCkBAIC04ODQsMTUgKzg4Mywx NiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCQkJCSAqIHRoZSB3b3JrZXIgd3JpdGVzIG1lc3NhZ2VzIGFuZCB0ZXJtaW5hdGVz IGFmdGVyIHRoZQogCQkJCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbmVhciB0aGUgdG9w IG9mIHRoaXMgZnVuY3Rpb24gYW5kCiAJCQkJICogYmVmb3JlIHRoZSBjYWxsIHRvIEdldEJh Y2tncm91bmRXb3JrZXJQaWQoKS4gIEluIHRoYXQgY2FzZSwKLQkJCQkgKiBvdXIgbGF0Y2gg c2hvdWxkIGhhdmUgYmVlbiBzZXQgYXMgd2VsbCBhbmQgdGhlIHJpZ2h0IHRoaW5ncwotCQkJ CSAqIHdpbGwgaGFwcGVuIG9uIHRoZSBuZXh0IHBhc3MgdGhyb3VnaCB0aGUgbG9vcC4KKwkJ CQkgKiBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgc2hvdWxkIGhhdmUgYmVlbiBzZXQgYXMgd2Vs bCBhbmQgdGhlCisJCQkJICogcmlnaHQgdGhpbmdzIHdpbGwgaGFwcGVuIG9uIHRoZSBuZXh0 IHBhc3MgdGhyb3VnaCB0aGUgbG9vcC4KIAkJCQkgKi8KIAkJCX0KIAkJfQogCi0JCSh2b2lk KSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwgLTEsCi0JCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9GSU5JU0gpOwotCQlSZXNldExh dGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVw dHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9FWElUX09OX1BNX0RFQVRILCAtMSwKKwkJCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExF TF9GSU5JU0gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwog CX0KIAogCWlmIChwY3h0LT50b2MgIT0gTlVMTCkKQEAgLTEwMzMsMjEgKzEwMzMsNiBAQCBQ YXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCkKIAlyZXR1cm4gIWRsaXN0X2lzX2VtcHR5KCZw Y3h0X2xpc3QpOwogfQogCi0vKgotICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0 IGluZGljYXRpbmcgYSBwYXJhbGxlbCB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0 aGlzIGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgIEFsbCB3ZSBjYW4gZG8g aXMgc2V0Ci0gKiBhIGZsYWcgdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9J TlRFUlJVUFRTKCkgdG8gaW52b2tlCi0gKiBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpLgot ICovCi12b2lkCi1IYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJ bnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nID0gdHJ1 ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKLX0KLQogLyoKICAqIFByb2Nlc3MgYW55IHF1ZXVl ZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIHdvcmtlcnMuCiAg Ki8KQEAgLTEwODIsOSArMTA2Nyw3IEBAIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQp CiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsK IAotCS8qIE9LIHRvIHByb2Nlc3MgbWVzc2FnZXMuICBSZXNldCB0aGUgZmxhZyBzYXlpbmcg dGhlcmUgYXJlIG1vcmUgdG8gZG8uICovCi0JUGFyYWxsZWxNZXNzYWdlUGVuZGluZyA9IGZh bHNlOwotCisJLyogT0sgdG8gcHJvY2VzcyBtZXNzYWdlcyAqLwogCWRsaXN0X2ZvcmVhY2go aXRlciwgJnBjeHRfbGlzdCkKIAl7CiAJCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKQEAgLTEz MjYsNyArMTMwOSwxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJ LyogU2V0IGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSBpbml0aWFsaXppbmcgYSBwYXJh bGxlbCB3b3JrZXIuICovCiAJSW5pdGlhbGl6aW5nUGFyYWxsZWxXb3JrZXIgPSB0cnVlOwog Ci0JLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KKwkvKgorCSAqIFN0YW5kYXJk IGludGVycnVwdCBoYW5kbGVycyBoYXZlIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQ7IHVuYmxv Y2sKKwkgKiBzaWduYWxzLgorCSAqLwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFs cygpOwogCiAJLyogRGV0ZXJtaW5lIGFuZCBzZXQgb3VyIHBhcmFsbGVsIHdvcmtlciBudW1i ZXIuICovCkBAIC0xMzYyLDggKzEzNDgsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiAJZnBzID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfRklY RUQsIGZhbHNlKTsKIAlNeUZpeGVkUGFyYWxsZWxTdGF0ZSA9IGZwczsKIAotCS8qIEFycmFu Z2UgdG8gc2lnbmFsIHRoZSBsZWFkZXIgaWYgd2UgZXhpdC4gKi8KLQlQYXJhbGxlbExlYWRl clBpZCA9IGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BpZDsKKwkvKiBBcnJhbmdlIHRvIHNlbmQg YW4gaW50ZXJydXB0IHRvIHRoZSBsZWFkZXIgaWYgd2UgZXhpdC4gKi8KIAlQYXJhbGxlbExl YWRlclByb2NOdW1iZXIgPSBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcjsKIAli ZWZvcmVfc2htZW1fZXhpdChQYXJhbGxlbFdvcmtlclNodXRkb3duLCBQb2ludGVyR2V0RGF0 dW0oc2VnKSk7CiAKQEAgLTEzNzksOCArMTM2NCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKIAltcWgg PSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwogCXBxX3JlZGlyZWN0X3RvX3NobV9t cShzZWcsIG1xaCk7Ci0JcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihmcHMtPnBhcmFsbGVsX2xl YWRlcl9waWQsCi0JCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7 CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251 bWJlcik7CiAKIAkvKgogCSAqIEhvb3JheSEgUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBj b21wbGV0ZS4gIE5vdywgd2UgbmVlZCB0byBzZXQgdXAgb3VyCkBAIC0xNjE5LDkgKzE2MDMs OCBAQCBQYXJhbGxlbFdvcmtlclJlcG9ydExhc3RSZWNFbmQoWExvZ1JlY1B0ciBsYXN0X3hs b2dfZW5kKQogc3RhdGljIHZvaWQKIFBhcmFsbGVsV29ya2VyU2h1dGRvd24oaW50IGNvZGUs IERhdHVtIGFyZykKIHsKLQlTZW5kUHJvY1NpZ25hbChQYXJhbGxlbExlYWRlclBpZCwKLQkJ CQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJICAgUGFyYWxsZWxMZWFkZXJQ cm9jTnVtYmVyKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdF LAorCQkJCSAgUGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVyKTsKIAogCWRzbV9kZXRhY2goKGRz bV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3NscnUuYwppbmRleCA1NDljN2UzZTY0Yi4uNTU5MmRmMzBmOGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2d1dGlscy5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXggZWFiYzRkNDgyMDguLjI0Nzc2MThlODcwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKQEAgLTkxLDYgKzkxLDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0 b3JhZ2UuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVw dC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXgg ZDEyYjFjMDJmM2EuLjg4NDBjYzQzNjE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2NvbnRyb2xkYXRhX3V0 aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJleGVj dXRvci9pbnN0cnVtZW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC04OCw3ICs4OSw2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3Qu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVk aWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2NhcnJheS5oIgpAQCAtMjY1Niw3ICsyNjU2LDcgQEAgWExvZ1NldEFzeW5jWGFjdExT TihYTG9nUmVjUHRyIGFzeW5jWGFjdExTTikKIAkJUHJvY051bWJlcgl3YWx3cml0ZXJQcm9j ID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQcm9jKTsKIAog CQlpZiAod2Fsd3JpdGVyUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQkJU2V0TGF0 Y2goJkdldFBHUHJvY0J5TnVtYmVyKHdhbHdyaXRlclByb2MpLT5wcm9jTGF0Y2gpOworCQkJ U2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIHdhbHdyaXRlclByb2MpOwog CX0KIH0KIApAQCAtOTUxOSwxMSArOTUxOSwxMSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNr dXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJCQkJcmVwb3J0ZWRfd2Fp dGluZyA9IHRydWU7CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJ CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkJIDEwMDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9B UkNISVZFKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkodm9pZCkgV2FpdEludGVy cnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAor CQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJCSAxMDAwTCwKKwkJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQX1dBSVRf V0FMX0FSQ0hJVkUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ KTsKIAogCQkJaWYgKCsrd2FpdHMgPj0gc2Vjb25kc19iZWZvcmVfd2FybmluZykKIAkJCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggMmVmZTQxMDVl ZmIuLjhjNzRlY2VlYzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVu Y3MuYwpAQCAtMjQsMTEgKzI0LDExIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVy eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGku aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcxOCwxNyArNzE4 LDE1IEBAIHBnX3Byb21vdGUoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCWludAkJCXJjOwog Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KIAkJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3Mo KSkKIAkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VU IHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCSAgIDEwMDBMIC8g V0FJVFNfUEVSX1NFQ09ORCwKLQkJCQkJICAgV0FJVF9FVkVOVF9QUk9NT1RFKTsKKwkJcmMg PSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkgICBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJCSAg IDEwMDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfUFJPTU9U RSk7CiAKIAkJLyoKIAkJICogRW1lcmdlbmN5IGJhaWxvdXQgaWYgcG9zdG1hc3RlciBoYXMg ZGllZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IGZjNzk0NjkzNDQyLi5iZTdhYjIxMmFjMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAgLTQ0LDYg KzQ0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJj b21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC01 NCw4ICs1NSw4IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0ZXRp bWUuaCIKQEAgLTMyMiwyMyArMzIzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ1JlY292ZXJ5 Q3RsRGF0YQogCSAqLwogCWJvb2wJCVNoYXJlZFByb21vdGVJc1RyaWdnZXJlZDsKIAotCS8q Ci0JICogcmVjb3ZlcnlXYWtldXBMYXRjaCBpcyB1c2VkIHRvIHdha2UgdXAgdGhlIHN0YXJ0 dXAgcHJvY2VzcyB0byBjb250aW51ZQotCSAqIFdBTCByZXBsYXksIGlmIGl0IGlzIHdhaXRp bmcgZm9yIFdBTCB0byBhcnJpdmUgb3IgcHJvbW90aW9uIHRvIGJlCi0JICogcmVxdWVzdGVk LgotCSAqCi0JICogTm90ZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgYWxzbyB1c2VzIGFu b3RoZXIgbGF0Y2gsIGl0cyBwcm9jTGF0Y2gsCi0JICogdG8gd2FpdCBmb3IgcmVjb3Zlcnkg Y29uZmxpY3QuIElmIHdlIGdldCByaWQgb2YgcmVjb3ZlcnlXYWtldXBMYXRjaCBmb3IKLQkg KiBzaWduYWxpbmcgdGhlIHN0YXJ0dXAgcHJvY2VzcyBpbiBmYXZvciBvZiB1c2luZyBpdHMg cHJvY0xhdGNoLCB3aGljaAotCSAqIGNvbXBvcnRzIGJldHRlciB3aXRoIHBvc3NpYmxlIGdl bmVyaWMgc2lnbmFsIGhhbmRsZXJzIHVzaW5nIHRoYXQgbGF0Y2guCi0JICogQnV0IHdlIHNo b3VsZCBub3QgZG8gdGhhdCBiZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgZG9lc24ndCBh c3N1bWUKLQkgKiB0aGF0IGl0J3Mgd2FrZW4gdXAgYnkgd2FscmVjZWl2ZXIgcHJvY2VzcyBv ciBTSUdIVVAgc2lnbmFsIGhhbmRsZXIKLQkgKiB3aGlsZSBpdCdzIHdhaXRpbmcgZm9yIHJl Y292ZXJ5IGNvbmZsaWN0LiBUaGUgc2VwYXJhdGUgbGF0Y2hlcywKLQkgKiByZWNvdmVyeVdh a2V1cExhdGNoIGFuZCBwcm9jTGF0Y2gsIHNob3VsZCBiZSB1c2VkIGZvciBpbnRlci1wcm9j ZXNzCi0JICogY29tbXVuaWNhdGlvbiBmb3IgV0FMIHJlcGxheSBhbmQgcmVjb3ZlcnkgY29u ZmxpY3QsIHJlc3BlY3RpdmVseS4KLQkgKi8KLQlMYXRjaAkJcmVjb3ZlcnlXYWtldXBMYXRj aDsKLQogCS8qCiAJICogTGFzdCByZWNvcmQgc3VjY2Vzc2Z1bGx5IHJlcGxheWVkLgogCSAq LwpAQCAtNDczLDcgKzQ1Nyw2IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCW1l bXNldChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNpemVvZihYTG9nUmVjb3ZlcnlDdGxEYXRhKSk7 CiAKIAlTcGluTG9ja0luaXQoJlhMb2dSZWNvdmVyeUN0bC0+aW5mb19sY2spOwotCUluaXRT aGFyZWRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIAlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlOb3RQYXVz ZWRDVik7CiB9CiAKQEAgLTU0NywxMyArNTMwLDYgQEAgSW5pdFdhbFJlY292ZXJ5KENvbnRy b2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsIGJvb2wgKndhc1NodXRkb3duX3B0ciwKIAlyZWFk UmVjb3ZlcnlTaWduYWxGaWxlKCk7CiAJdmFsaWRhdGVSZWNvdmVyeVBhcmFtZXRlcnMoKTsK IAotCS8qCi0JICogVGFrZSBvd25lcnNoaXAgb2YgdGhlIHdha2V1cCBsYXRjaCBpZiB3ZSdy ZSBnb2luZyB0byBzbGVlcCBkdXJpbmcKLQkgKiByZWNvdmVyeSwgaWYgcmVxdWlyZWQuCi0J ICovCi0JaWYgKEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJT3duTGF0Y2goJlhMb2dS ZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7Ci0KIAkvKgogCSAqIFNldCB0aGUg V0FMIHJlYWRpbmcgcHJvY2Vzc29yIG5vdywgYXMgaXQgd2lsbCBiZSBuZWVkZWQgd2hlbiBy ZWFkaW5nCiAJICogdGhlIGNoZWNrcG9pbnQgcmVjb3JkIHJlcXVpcmVkIChiYWNrdXBfbGFi ZWwgb3Igbm90KS4KQEAgLTE2NTYsMTMgKzE2MzIsNiBAQCBTaHV0ZG93bldhbFJlY292ZXJ5 KHZvaWQpCiAJCXNucHJpbnRmKHJlY292ZXJ5UGF0aCwgTUFYUEdQQVRILCBYTE9HRElSICIv UkVDT1ZFUllISVNUT1JZIik7CiAJCXVubGluayhyZWNvdmVyeVBhdGgpOwkvKiBpZ25vcmUg YW55IGVycm9yICovCiAJfQotCi0JLyoKLQkgKiBXZSBkb24ndCBuZWVkIHRoZSBsYXRjaCBh bnltb3JlLiBJdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gZGlzb3duCi0JICogaXQs IGJ1dCBsZXQncyBkbyBpdCBmb3IgdGhlIHNha2Ugb2YgdGlkaW5lc3MuCi0JICovCi0JaWYg KEFyY2hpdmVSZWNvdmVyeVJlcXVlc3RlZCkKLQkJRGlzb3duTGF0Y2goJlhMb2dSZWNvdmVy eUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiB9CiAKIC8qCkBAIC0xNzkyLDggKzE3NjEs OCBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCX0KICNlbmRpZgogCi0JCQkvKiBI YW5kbGUgaW50ZXJydXB0IHNpZ25hbHMgb2Ygc3RhcnR1cCBwcm9jZXNzICovCi0JCQlQcm9j ZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCQkJU3RhcnR1cFByb2NDaGVja1Bvc3RtYXN0ZXJEZWF0aCgpOwogCiAJCQkvKgogCQkJ ICogUGF1c2UgV0FMIHJlcGxheSwgaWYgcmVxdWVzdGVkIGJ5IGEgaG90LXN0YW5kYnkgc2Vz c2lvbiB2aWEKQEAgLTE4MjIsOCArMTc5MSw4IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lk KQogCQkJfQogCiAJCQkvKgotCQkJICogSWYgd2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhl IHByaW1hcnksIHdhaXQgb24gbGF0Y2ggdW50aWwKLQkJCSAqIGVub3VnaCB0aW1lIGhhcyBw YXNzZWQuCisJCQkgKiBJZiB3ZSd2ZSBiZWVuIGFza2VkIHRvIGxhZyB0aGUgcHJpbWFyeSwg d2FpdCB1bnRpbCBlbm91Z2ggdGltZQorCQkJICogaGFzIHBhc3NlZC4KIAkJCSAqLwogCQkJ aWYgKHJlY292ZXJ5QXBwbHlEZWxheSh4bG9ncmVhZGVyKSkKIAkJCXsKQEAgLTE4NDQsOSAr MTgxMyw4IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJQXBwbHlXYWxSZWNvcmQo eGxvZ3JlYWRlciwgcmVjb3JkLCAmcmVwbGF5VExJKTsKIAogCQkJLyoKLQkJCSAqIElmIHdl IHJlcGxheWVkIGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yIHRoZW4gd2Fs awotCQkJICogb3ZlciB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheSBhbmQgc2V0IGxhdGNoZXMg dG8gbm90aWZ5IHRoZQotCQkJICogd2FpdGVycy4KKwkJCSAqIElmIHdlIHJlcGxheWVkIGFu IExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLCB3YWtlIHRoZW0KKwkJCSAqIHVw LgogCQkJICovCiAJCQlpZiAod2FpdExTTlN0YXRlICYmCiAJCQkJKFhMb2dSZWNvdmVyeUN0 bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyID49CkBAIC0yOTc5LDcgKzI5NDcsNyBAQCByZWNv dmVyeVBhdXNlc0hlcmUoYm9vbCBlbmRPZlJlY292ZXJ5KQogCS8qIGxvb3AgdW50aWwgcmVj b3ZlcnlQYXVzZVN0YXRlIGlzIHNldCB0byBSRUNPVkVSWV9OT1RfUEFVU0VEICovCiAJd2hp bGUgKEdldFJlY292ZXJ5UGF1c2VTdGF0ZSgpICE9IFJFQ09WRVJZX05PVF9QQVVTRUQpCiAJ ewotCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CiAJCWlmIChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkpCiAJCQlyZXR1cm47 CiAKQEAgLTMwNTYsOCArMzAyNCw4IEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAlkZWxheVVudGlsID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNv bmRzKHh0aW1lLCByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkpOwogCiAJLyoKLQkgKiBFeGl0 IHdpdGhvdXQgYXJtaW5nIHRoZSBsYXRjaCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRv IGFwcGx5IHRoaXMKLQkgKiByZWNvcmQKKwkgKiBFeGl0IHdpdGhvdXQgY2xlYXJpbmcgdGhl IGludGVycnVwdCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5CisJICogdGhp cyByZWNvcmQKIAkgKi8KIAltc2VjcyA9IFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29u ZHMoR2V0Q3VycmVudFRpbWVzdGFtcCgpLCBkZWxheVVudGlsKTsKIAlpZiAobXNlY3MgPD0g MCkKQEAgLTMwNjUsMTEgKzMwMzMsMTYgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCiAJd2hpbGUgKHRydWUpCiAJewotCQlSZXNldExhdGNoKCZY TG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwotCiAJCS8qIFRoaXMgbWln aHQgY2hhbmdlIHJlY292ZXJ5X21pbl9hcHBseV9kZWxheS4gKi8KLQkJUHJvY2Vzc1N0YXJ0 dXBQcm9jSW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCS8q CisJCSAqIFdhaXQgdW50aWwgbW9yZSBXQUwgYXJyaXZlcy4gIChXZSB1c2UgYSBkZWRpY2F0 ZWQgaW50ZXJydXB0IHJhdGhlcgorCQkgKiB0aGFuIElOVEVSUlVQVF9XQUlUX1dBS0VVUCBm b3IgdGhpcywgc28gdGhhdCBtb3JlIFdBTCBhcnJpdmluZworCQkgKiBkb2Vzbid0IHdha2Ug dXAgdGhlIHN0YXJ0dXAgcHJvY2VzcyBleGNlc3NpdmVseSB3aGVuIHdlJ3JlIHdhaXRpbmcK KwkJICogaW4gb3RoZXIgcGxhY2VzLCBsaWtlIGZvciByZWNvdmVyeSBjb25mbGljdHMpLgor CQkgKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBTF9BUlJJVkVEKTsKIAkJaWYg KENoZWNrRm9yU3RhbmRieVRyaWdnZXIoKSkKIAkJCWJyZWFrOwogCkBAIC0zMDkwLDEwICsz MDYzLDEyIEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAogCQllbG9nKERFQlVHMiwgInJlY292ZXJ5IGFwcGx5IGRlbGF5ICVsZCBtaWxsaXNlY29u ZHMiLCBtc2Vjcyk7CiAKLQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5y ZWNvdmVyeVdha2V1cExhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIG1zZWNzLAotCQkJCQkJIFdBSVRfRVZF TlRfUkVDT1ZFUllfQVBQTFlfREVMQVkpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1dBTF9BUlJJVkVEIHwK KwkJCQkJCQkgSU5URVJSVVBUX0NIRUNLX1BST01PVEUsCisJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBtc2VjcywK KwkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9BUFBMWV9ERUxBWSk7CiAJfQogCXJldHVy biB0cnVlOwogfQpAQCAtMzc3MSwxNiArMzc0NiwxNiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVB dmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJCS8q IERvIGJhY2tncm91bmQgdGFza3MgdGhhdCBtaWdodCBiZW5lZml0IHVzIGxhdGVyLiAqLwog CQkJCQkJS25vd25Bc3NpZ25lZFRyYW5zYWN0aW9uSWRzSWRsZU1haW50ZW5hbmNlKCk7CiAK LQkJCQkJCSh2b2lkKSBXYWl0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtl dXBMYXRjaCwKLQkJCQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8Ci0JCQkJ CQkJCQkJIFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkJIHdhaXRfdGltZSwKLQkJ CQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7 Ci0JCQkJCQlSZXNldExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0 Y2gpOworCQkJCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFz ayB8CisJCQkJCQkJCQkJCSBJTlRFUlJVUFRfV0FMX0FSUklWRUQsCisJCQkJCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwKKwkJCQkJCQkJCQkJIFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJCQkJCSB3YWl0X3RpbWUsCisJCQkJCQkJCQkJCSBXQUlUX0VWRU5U X1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKKwkJCQkJCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9XQUxfQVJSSVZFRCk7CiAJCQkJCQlub3cgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7CiAKLQkJCQkJCS8qIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBvZiBzdGFy dHVwIHByb2Nlc3MgKi8KLQkJCQkJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMoKTsK KwkJCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCQkJCX0KIAkJCQkJbGFzdF9mYWls X3RpbWUgPSBub3c7CiAJCQkJCWN1cnJlbnRTb3VyY2UgPSBYTE9HX0ZST01fQVJDSElWRTsK QEAgLTQwNDYsMTEgKzQwMjEsMTIgQEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhM b2dSZWNQdHIgUmVjUHRyLCBib29sIHJhbmRBY2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1v cmUgV0FMIHRvIGFycml2ZSwgd2hlbiB3ZSB3aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVk aWF0ZWx5IGJ5IHRoZSBXQUwgcmVjZWl2ZXIuCiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2Fp dExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkJ CQkgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAtMUws Ci0JCQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNKTsKLQkJCQkJUmVz ZXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKKwkJCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJ CQkJIElOVEVSUlVQVF9XQUxfQVJSSVZFRCwKKwkJCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkgLTFMLAorCQkJCQkJCQkJCSBXQUlU X0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU0pOworCQkJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FMX0FSUklWRUQpOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTQwNjYsMTEg KzQwNDIsOCBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQ dHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCVJFQ09WRVJZX05PVF9QQVVTRUQpCiAJCQlyZWNv dmVyeVBhdXNlc0hlcmUoZmFsc2UpOwogCi0JCS8qCi0JCSAqIFRoaXMgcG9zc2libHktbG9u ZyBsb29wIG5lZWRzIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIG9mIHN0YXJ0dXAKLQkJICogcHJv Y2Vzcy4KLQkJICovCi0JCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMoKTsKKwkJLyog VGhpcyBwb3NzaWJseS1sb25nIGxvb3AgbmVlZHMgdG8gaGFuZGxlIGludGVycnVwdHMuICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQogCiAJcmV0dXJuIFhMUkVBRF9GQUlM OwkJCS8qIG5vdCByZWFjaGVkICovCkBAIC00NTAyLDExICs0NDc1LDExIEBAIENoZWNrRm9y U3RhbmRieVRyaWdnZXIodm9pZCkKIAlpZiAoTG9jYWxQcm9tb3RlSXNUcmlnZ2VyZWQpCiAJ CXJldHVybiB0cnVlOwogCi0JaWYgKElzUHJvbW90ZVNpZ25hbGVkKCkgJiYgQ2hlY2tQcm9t b3RlU2lnbmFsKCkpCisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0NIRUNLX1BS T01PVEUpICYmIENoZWNrUHJvbW90ZVNpZ25hbCgpKQogCXsKIAkJZXJlcG9ydChMT0csIChl cnJtc2coInJlY2VpdmVkIHByb21vdGUgcmVxdWVzdCIpKSk7CiAJCVJlbW92ZVByb21vdGVT aWduYWxGaWxlcygpOwotCQlSZXNldFByb21vdGVTaWduYWxlZCgpOworCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9URSk7CiAJCVNldFByb21vdGVJc1RyaWdnZXJl ZCgpOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CkBAIC00NTQ0LDcgKzQ1MTcsMTAgQEAgQ2hlY2tQ cm9tb3RlU2lnbmFsKHZvaWQpCiB2b2lkCiBXYWtldXBSZWNvdmVyeSh2b2lkKQogewotCVNl dExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCVByb2NO dW1iZXIJc3RhcnR1cFByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPnN0 YXJ0dXBQcm9jKTsKKworCWlmIChzdGFydHVwUHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVS KQorCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUxfQVJSSVZFRCwgc3RhcnR1cFByb2Mp OwogfQogCiAvKgpAQCAtNDc0OCw3ICs0NzI0LDcgQEAgUmVjb3ZlcnlSZXF1aXJlc0ludFBh cmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLCBpbnQgbWlu VmFsdWUKIAogCQkJd2hpbGUgKEdldFJlY292ZXJ5UGF1c2VTdGF0ZSgpICE9IFJFQ09WRVJZ X05PVF9QQVVTRUQpCiAJCQl7Ci0JCQkJUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cygp OworCQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCQlpZiAoQ2hlY2tGb3JTdGFu ZGJ5VHJpZ2dlcigpKQogCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2d3YWl0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2Fp dC5jCmluZGV4IGQyODZmZjYzMTIzLi5lZmUwOGM0ZWJmZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nd2FpdC5jCkBAIC0yNCw5ICsyNCwxMCBAQAogICoKICAqCQlJbiBh ZGRpdGlvbiwgdGhlIGxlYXN0LWF3YWl0ZWQgTFNOIGZvciBlYWNoIHR5cGUgaXMgY2FjaGVk IGluIHRoZQogICoJCW1pbldhaXRlZExTTiBhcnJheS4gIFRoZSB3YWl0ZXIgcHJvY2VzcyBw dWJsaXNoZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAqCQlpdHNlbGYgdG8gdGhlIHNoYXJlZCBt ZW1vcnkgYW5kIHdhaXRzIG9uIHRoZSBsYXRjaCB1bnRpbCBpdCBpcyB3b2tlbgotICoJCXVw IGJ5IHRoZSBhcHByb3ByaWF0ZSBwcm9jZXNzLCBzdGFuZGJ5IGlzIHByb21vdGVkLCBvciB0 aGUgcG9zdG1hc3RlcgotICoJCWRpZXMuICBUaGVuLCBpdCBjbGVhbnMgaW5mb3JtYXRpb24g YWJvdXQgaXRzZWxmIGluIHRoZSBzaGFyZWQgbWVtb3J5LgorICoJCWl0c2VsZiB0byB0aGUg c2hhcmVkIG1lbW9yeSBhbmQgd2FpdHMgb24gSU5URVJSVVBUX1dBSVRfV0FLRVVQIHVudGls CisgKgkJaXQgaXMgd29rZW4gdXAgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MsIHN0YW5k YnkgaXMgcHJvbW90ZWQsIG9yIHRoZQorICoJCXBvc3RtYXN0ZXIgZGllcy4gIFRoZW4sIGl0 IGNsZWFucyBpbmZvcm1hdGlvbiBhYm91dCBpdHNlbGYgaW4gdGhlCisgKgkJc2hhcmVkIG1l bW9yeS4KICAqCiAgKgkJT24gc3RhbmRieSBzZXJ2ZXJzOgogICoJCS0gQWZ0ZXIgcmVwbGF5 aW5nIGEgV0FMIHJlY29yZCwgdGhlIHN0YXJ0dXAgcHJvY2VzcyBwZXJmb3JtcyBhIGZhc3QK QEAgLTU0LDcgKzU1LDYgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgpA QCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgaW50CXdhaXRsc25fY21wKGNvbnN0IHBhaXJpbmdo ZWFwX25vZGUgKmEsIGNvbnN0IHBhaXJpbmdoZWFwX25vZGUgKmIsCiBzdHJ1Y3QgV2FpdExT TlN0YXRlICp3YWl0TFNOU3RhdGUgPSBOVUxMOwogCiAvKgotICogV2FpdCBldmVudCBmb3Ig ZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdhaXRMYXRjaCgpIHRvIHJlcG9ydAorICog V2FpdCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdhaXRJbnRlcnJ1 cHQoKSB0byByZXBvcnQKICAqIHRoZSB3YWl0IGluIHBnX3N0YXRfYWN0aXZpdHkuCiAgKi8K IHN0YXRpYyBjb25zdCB1aW50MzIgV2FpdExTTldhaXRFdmVudHNbXSA9IHsKQEAgLTI0MSw5 ICsyNDEsOSBAQCBkZWxldGVMU05XYWl0ZXIoV2FpdExTTlR5cGUgbHNuVHlwZSkKICNkZWZp bmUJV0FLRVVQX1BST0NfU1RBVElDX0FSUkFZX1NJWkUgKDE2KQogCiAvKgotICogUmVtb3Zl IHdhaXRlcnMgd2hvc2UgTFNOIGhhcyBiZWVuIHJlYWNoZWQgZnJvbSB0aGUgaGVhcCBhbmQg c2V0IHRoZWlyCi0gKiBsYXRjaGVzLiAgSWYgSW52YWxpZFhMb2dSZWNQdHIgaXMgZ2l2ZW4s IHJlbW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBoZWFwCi0gKiBhbmQgc2V0IGxhdGNoZXMg Zm9yIGFsbCB3YWl0ZXJzLgorICogUmVtb3ZlIHdhaXRlcnMgd2hvc2UgTFNOIGhhcyBiZWVu IHJlYWNoZWQgZnJvbSB0aGUgaGVhcCBhbmQgd2FrZSB0aGVtIHVwLgorICogSWYgSW52YWxp ZFhMb2dSZWNQdHIgaXMgZ2l2ZW4sIHJlbW92ZSBhbGwgd2FpdGVycyBmcm9tIHRoZSBoZWFw IGFuZCB3YWtlCisgKiB0aGVtIGFsbCB1cC4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGZpcnN0 IGFjY3VtdWxhdGVzIHdhaXRlcnMgdG8gd2FrZSB1cCBpbnRvIGFuIGFycmF5LCB0aGVuCiAg KiB3YWtlcyB0aGVtIHVwIHdpdGhvdXQgaG9sZGluZyBhIFdhaXRMU05Mb2NrLiAgVGhlIGFy cmF5IHNpemUgaXMgc3RhdGljIGFuZApAQCAtMjk4LDE0ICsyOTgsMTMgQEAgd2FrZXVwV2Fp dGVycyhXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIGN1cnJlbnRMU04pCiAJCUxX TG9ja1JlbGVhc2UoV2FpdExTTkxvY2spOwogCiAJCS8qCi0JCSAqIFNldCBsYXRjaGVzIGZv ciBwcm9jZXNzZXMgd2hvc2Ugd2FpdGVkIExTTnMgaGF2ZSBiZWVuIHJlYWNoZWQuCi0JCSAq IFNpbmNlIFNldExhdGNoKCkgaXMgYSB0aW1lLWNvbnN1bWluZyBvcGVyYXRpb24sIHdlIGRv IHRoaXMgb3V0c2lkZQotCQkgKiBvZiBXYWl0TFNOTG9jay4gVGhpcyBpcyBzYWZlIGJlY2F1 c2UgcHJvY0xhdGNoIGlzIG5ldmVyIGZyZWVkLCBzbwotCQkgKiBhdCB3b3JzdCB3ZSBtYXkg c2V0IGEgbGF0Y2ggZm9yIHRoZSB3cm9uZyBwcm9jZXNzIG9yIGZvciBubyBwcm9jZXNzCi0J CSAqIGF0IGFsbCwgd2hpY2ggaXMgaGFybWxlc3MuCisJCSAqIFdha2UgdXAgcHJvY2Vzc2Vz IHdob3NlIHdhaXRlZCBMU05zIGhhdmUgYmVlbiByZWFjaGVkLiAgU2luY2UKKwkJICogU2Vu ZEludGVycnVwdCBpcyBhIHRpbWUtY29uc3VtaW5nIG9wZXJhdGlvbiwgd2UgZG8gdGhpcyBv dXRzaWRlIG9mCisJCSAqIFdhaXRMU05Mb2NrLiAoSWYgdGhlIGJhY2tlbmQgZXhpdHMgb3Ig aXMgbm8gbG9uZ2VyIHdhaXRpbmcsIHdlJ2xsCisJCSAqIHNlbmQgc3B1cmlvdXMgd2FrZXVw LCBidXQgdGhhdCdzIGhhcm1sZXNzKQogCQkgKi8KIAkJZm9yIChqID0gMDsgaiA8IG51bVdh a2VVcFByb2NzOyBqKyspCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIod2FrZVVw UHJvY3Nbal0pLT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsIHdha2VVcFByb2NzW2pdKTsKIAogCX0gd2hpbGUgKG51bVdha2VVcFByb2Nz ID09IFdBS0VVUF9QUk9DX1NUQVRJQ19BUlJBWV9TSVpFKTsKIH0KQEAgLTM2NCw3ICszNjMs NyBAQCBXYWl0TFNOVHlwZVJlcXVpcmVzUmVjb3ZlcnkoV2FpdExTTlR5cGUgdCkKIH0KIAog LyoKLSAqIFdhaXQgdXNpbmcgTXlMYXRjaCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVhY2hl ZCwgdGhlIHJlcGxpY2EgZ2V0cworICogV2FpdCB1c2luZyBXYWl0SW50ZXJydXB0IHRpbGwg dGhlIGdpdmVuIExTTiBpcyByZWFjaGVkLCB0aGUgcmVwbGljYSBnZXRzCiAgKiBwcm9tb3Rl ZCwgb3IgdGhlIHBvc3RtYXN0ZXIgZGllcy4KICAqCiAgKiBSZXR1cm5zIFdBSVRfTFNOX1JF U1VMVF9TVUNDRVNTIGlmIHRhcmdldCBMU04gd2FzIHJlYWNoZWQuCkBAIC0zNzYsNyArMzc1 LDcgQEAgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIHRhcmdl dExTTiwgaW50NjQgdGltZW91dCkKIHsKIAlYTG9nUmVjUHRyCWN1cnJlbnRMU047CiAJVGlt ZXN0YW1wVHogZW5kdGltZSA9IDA7Ci0JaW50CQkJd2FrZV9ldmVudHMgPSBXTF9MQVRDSF9T RVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRIOworCWludAkJCXdha2VfZXZlbnRzID0gV0xfSU5U RVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSDsKIAogCS8qIFNob3VsZG4ndCBiZSBjYWxs ZWQgd2hlbiBzaG1lbSBpc24ndCBpbml0aWFsaXplZCAqLwogCUFzc2VydCh3YWl0TFNOU3Rh dGUpOwpAQCAtNDM0LDggKzQzMyw5IEBAIFdhaXRGb3JMU04oV2FpdExTTlR5cGUgbHNuVHlw ZSwgWExvZ1JlY1B0ciB0YXJnZXRMU04sIGludDY0IHRpbWVvdXQpCiAKIAkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCB3YWtlX2V2ZW50 cywgZGVsYXlfbXMsCi0JCQkJCSAgIFdhaXRMU05XYWl0RXZlbnRzW2xzblR5cGVdKTsKKwkJ cmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRf V0FJVF9XQUtFVVAsCisJCQkJCQkgICB3YWtlX2V2ZW50cywgZGVsYXlfbXMsCisJCQkJCQkg ICBXYWl0TFNOV2FpdEV2ZW50c1tsc25UeXBlXSk7CiAKIAkJLyoKIAkJICogRW1lcmdlbmN5 IGJhaWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGllZC4gIFRoaXMgaXMgdG8gYXZvaWQgdGhl CkBAIC00NDcsOCArNDQ3LDcgQEAgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBsc25UeXBlLCBY TG9nUmVjUHRyIHRhcmdldExTTiwgaW50NjQgdGltZW91dCkKIAkJCQkJZXJybXNnKCJ0ZXJt aW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIp LAogCQkJCQllcnJjb250ZXh0KCJ3aGlsZSB3YWl0aW5nIGZvciBMU04iKSk7CiAKLQkJaWYg KHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyBiL3NyYy9iYWNr ZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKaW5kZXggZTExMmVlZDc0ODUuLmU0 OWZkYzFlZmEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90 aHJvdHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxl LmMKQEAgLTE1LDkgKzE1LDkgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVk ZSAiYmFja3VwL2Jhc2ViYWNrdXBfc2luay5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAK IHR5cGVkZWYgc3RydWN0IGJic2lua190aHJvdHRsZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHRo cm90dGxlKGJic2lua190aHJvdHRsZSAqc2luaywgc2l6ZV90IGluY3JlbWVudCkKIAkJKHNp bmstPnRocm90dGxpbmdfY291bnRlciAvIHNpbmstPnRocm90dGxpbmdfc2FtcGxlKTsKIAog CS8qCi0JICogU2luY2UgdGhlIGxhdGNoIGNvdWxkIGJlIHNldCByZXBlYXRlZGx5IGJlY2F1 c2Ugb2YgY29uY3VycmVudGx5IFdBTAorCSAqIFNpbmNlIHRoZSBpbnRlcnJ1cHQgY291bGQg YmUgc2V0IHJlcGVhdGVkbHkgYmVjYXVzZSBvZiBjb25jdXJyZW50bHkgV0FMCiAJICogYWN0 aXZpdHksIHNsZWVwIGluIGEgbG9vcCB0byBlbnN1cmUgZW5vdWdoIHRpbWUgaGFzIHBhc3Nl ZC4KIAkgKi8KIAlmb3IgKDs7KQpAQCAtMTYzLDIyICsxNjMsMTYgQEAgdGhyb3R0bGUoYmJz aW5rX3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50KQogCQlpZiAoc2xlZXAgPD0g MCkKIAkJCWJyZWFrOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7Ci0KLQkJLyogV2UncmUg ZWF0aW5nIGEgcG90ZW50aWFsbHkgc2V0IGxhdGNoLCBzbyBjaGVjayBmb3IgaW50ZXJydXB0 cyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCiAJCSAqIChUQVJfU0VO RF9TSVpFIC8gdGhyb3R0bGluZ19zYW1wbGUgKiBlbGFwc2VkX21pbl91bml0KSBzaG91bGQg YmUKIAkJICogdGhlIG1heGltdW0gdGltZSB0byBzbGVlcC4gVGh1cyB0aGUgY2FzdCB0byBs b25nIGlzIHNhZmUuCiAJCSAqLwotCQl3YWl0X3Jlc3VsdCA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJCQlXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAotCQkJCQkJCQlXQUlUX0VW RU5UX0JBU0VfQkFDS1VQX1RIUk9UVExFKTsKLQotCQlpZiAod2FpdF9yZXN1bHQgJiBXTF9M QVRDSF9TRVQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl3YWl0X3Jlc3VsdCA9 IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJCQkJCVdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkJ KGxvbmcpIChzbGVlcCAvIDEwMDApLAorCQkJCQkJCQkJV0FJVF9FVkVOVF9CQVNFX0JBQ0tV UF9USFJPVFRMRSk7CiAKIAkJLyogRG9uZSB3YWl0aW5nPyAqLwogCQlpZiAod2FpdF9yZXN1 bHQgJiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jv b3RwYXJzZS55IGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55CmluZGV4IDk0 M2ZmNDczM2QzLi5jNGFkMTFiZTBiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0 cmFwL2Jvb3RwYXJzZS55CisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2Uu eQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvdG9hc3RpbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9k ZWZyZW0uaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJy dXB0LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggNjU3YzU5MTYxOGQuLjAz NWExMGFlZWU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTM2LDcgKzM2LDcgQEAKICAq CSAgaXMgbm8gbmVlZCBmb3IgV0FMIHN1cHBvcnQgb3IgZnN5bmMnaW5nLgogICoKICAqIDMu IEV2ZXJ5IGJhY2tlbmQgdGhhdCBpcyBsaXN0ZW5pbmcgb24gYXQgbGVhc3Qgb25lIGNoYW5u ZWwgcmVnaXN0ZXJzIGJ5Ci0gKgkgIGVudGVyaW5nIGl0cyBQSUQgaW50byB0aGUgYXJyYXkg aW4gQXN5bmNRdWV1ZUNvbnRyb2wuIEl0IHRoZW4gc2NhbnMgYWxsCisgKgkgIGVudGVyaW5n IGl0c2VsZiBpbnRvIHRoZSBhcnJheSBpbiBBc3luY1F1ZXVlQ29udHJvbC4gSXQgdGhlbiBz Y2FucyBhbGwKICAqCSAgaW5jb21pbmcgbm90aWZpY2F0aW9ucyBpbiB0aGUgY2VudHJhbCBx dWV1ZSBhbmQgZmlyc3QgY29tcGFyZXMgdGhlCiAgKgkgIGRhdGFiYXNlIE9JRCBvZiB0aGUg bm90aWZpY2F0aW9uIHdpdGggaXRzIG93biBkYXRhYmFzZSBPSUQgYW5kIHRoZW4KICAqCSAg Y29tcGFyZXMgdGhlIG5vdGlmaWVkIGNoYW5uZWwgd2l0aCB0aGUgbGlzdCBvZiBjaGFubmVs cyB0aGF0IGl0IGxpc3RlbnMKQEAgLTY4LDggKzY4LDggQEAKICAqCSAgbWFrZSBhbnkgcmVx dWlyZWQgdXBkYXRlcyB0byB0aGUgZWZmZWN0aXZlIGxpc3RlbiBzdGF0ZSAoc2VlIGJlbG93 KS4KICAqCSAgVGhlbiB3ZSBzaWduYWwgYW55IGJhY2tlbmRzIHRoYXQgbWF5IGJlIGludGVy ZXN0ZWQgaW4gb3VyIG1lc3NhZ2VzCiAgKgkgIChpbmNsdWRpbmcgb3VyIG93biBiYWNrZW5k LCBpZiBsaXN0ZW5pbmcpLiAgVGhpcyBpcyBkb25lIGJ5Ci0gKgkgIFNpZ25hbEJhY2tlbmRz KCksIHdoaWNoIHNlbmRzIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUIHNpZ25hbCB0bwot ICoJICBlYWNoIHJlbGV2YW50IGJhY2tlbmQsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKyAqCSAg U2lnbmFsQmFja2VuZHMoKSwgd2hpY2ggc2VuZHMgSU5URVJSVVBUX0FTWU5DX05PVElGWSB0 byBlYWNoIHJlbGV2YW50CisgKgkgIGJhY2tlbmQsIGFzIGRlc2NyaWJlZCBiZWxvdy4KICAq CiAgKgkgIEZpbmFsbHksIGFmdGVyIHdlIGFyZSBvdXQgb2YgdGhlIHRyYW5zYWN0aW9uIGFs dG9nZXRoZXIgYW5kIGFib3V0IHRvIGdvCiAgKgkgIGlkbGUsIHdlIHNjYW4gdGhlIHF1ZXVl IGZvciBtZXNzYWdlcyB0aGF0IG5lZWQgdG8gYmUgc2VudCB0byBvdXIKQEAgLTgyLDEzICs4 MiwxMSBAQAogICoJICBmcm9udGVuZCB1bnRpbCB0aGUgY29tbWFuZCBpcyBkb25lOyBidXQg bm90aWZpZXMgdG8gb3RoZXIgYmFja2VuZHMKICAqCSAgc2hvdWxkIGdvIG91dCBpbW1lZGlh dGVseSBhZnRlciBlYWNoIGNvbW1pdC4KICAqCi0gKiA1LiBVcG9uIHJlY2VpcHQgb2YgYSBQ Uk9DU0lHX05PVElGWV9JTlRFUlJVUFQgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIKLSAq CSAgc2V0cyB0aGUgcHJvY2VzcydzIGxhdGNoLCB3aGljaCB0cmlnZ2VycyB0aGUgZXZlbnQg dG8gYmUgcHJvY2Vzc2VkCi0gKgkgIGltbWVkaWF0ZWx5IGlmIHRoaXMgYmFja2VuZCBpcyBp ZGxlIChpLmUuLCBpdCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCisgKiA1LiBUaGUgSU5U RVJSVVBUX0FTWU5DX05PVElGWSBpbnRlcnJ1cHQgaXMgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5 IGluIHRoZQorICoJICBsaXN0ZW5pbmcgYmFja2VuZCBpZiBpdCBpcyBpZGxlIChpLmUuLCBp dCBpcyB3YWl0aW5nIGZvciBhIGZyb250ZW5kCiAgKgkgIGNvbW1hbmQgYW5kIGlzIG5vdCB3 aXRoaW4gYSB0cmFuc2FjdGlvbiBibG9jay4gQy5mLgotICoJICBQcm9jZXNzQ2xpZW50UmVh ZEludGVycnVwdCgpKS4gIE90aGVyd2lzZSB0aGUgaGFuZGxlciBtYXkgb25seSBzZXQgYQot ICoJICBmbGFnLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBwcm9jZXNzaW5nIHRvIG9jY3VyIGp1 c3QgYmVmb3JlIHdlIG5leHQgZ28KLSAqCSAgaWRsZS4KKyAqCSAgbWFpbiBsb29wIGluIFBv c3RncmVzQmFja2VuZCgpKS4gIE90aGVyd2lzZSB0aGUgaW50ZXJydXB0IGlzIHByb2Nlc3Nl ZAorICoJICBsYXRlciwganVzdCBiZWZvcmUgd2UgbmV4dCBnbyBpZGxlLgogICoKICAqCSAg SW5ib3VuZC1ub3RpZnkgcHJvY2Vzc2luZyBjb25zaXN0cyBvZiByZWFkaW5nIGFsbCBvZiB0 aGUgbm90aWZpY2F0aW9ucwogICoJICB0aGF0IGhhdmUgYXJyaXZlZCBzaW5jZSBzY2Fubmlu ZyBsYXN0IHRpbWUuIFdlIHJlYWQgZXZlcnkgbm90aWZpY2F0aW9uCkBAIC0xMjYsOSArMTI0 LDggQEAKICAqCiAgKgkgIFNpZ25hbEJhY2tlbmRzKCkgY29uc3VsdHMgdGhlIHNoYXJlZCBn bG9iYWwgY2hhbm5lbCB0YWJsZSB0byBpZGVudGlmeQogICoJICBsaXN0ZW5lcnMgZm9yIHRo ZSBjaGFubmVscyB0aGF0IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNlbnQKLSAqCSAgbm90 aWZpY2F0aW9uKHMpIHRvLiAgRWFjaCBzZWxlY3RlZCBiYWNrZW5kIGlzIG1hcmtlZCBhcyBo YXZpbmcgYSB3YWtldXAKLSAqCSAgcGVuZGluZyB0byBhdm9pZCBkdXBsaWNhdGUgc2lnbmFs cywgYW5kIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUCi0gKgkgIHNpZ25hbCBpcyBzZW50 IHRvIGl0LgorICoJICBub3RpZmljYXRpb24ocykgdG8uICBJTlRFUlJVUFRfQVNZTkNfTk9U SUZZIGlzIHNlbnQgdG8gZWFjaCBzZWxlY3RlZAorICoJICBiYWNrZW5kLgogICoKICAqIDgu IFdoaWxlIHdyaXRpbmcgbm90aWZpY2F0aW9ucywgUHJlQ29tbWl0X05vdGlmeSgpIHJlY29y ZHMgdGhlIHF1ZXVlIGhlYWQKICAqCSAgcG9zaXRpb24gYm90aCBiZWZvcmUgYW5kIGFmdGVy IHRoZSB3cml0ZS4gIEJlY2F1c2UgYWxsIHdyaXRlcnMgc2VyaWFsaXplCkBAIC0xNjAsNyAr MTU3LDYgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgot I2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3NscnUuaCIKQEAgLTE3MCw2ICsxNjYsNyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bGliL2RzaGFzaC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGli cHEvcHFmb3JtYXQuaCIKQEAgLTE3Nyw3ICsxNzQsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv ZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xtZ3IuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNs dWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9kc2EuaCIKQEAgLTI4OCw3ICsyODQsOCBAQCB0eXBlZGVmIHN0cnVj dCBRdWV1ZUJhY2tlbmRTdGF0dXMKIAlPaWQJCQlkYm9pZDsJCQkvKiBiYWNrZW5kJ3MgZGF0 YWJhc2UgT0lELCBvciBJbnZhbGlkT2lkICovCiAJUHJvY051bWJlcgluZXh0TGlzdGVuZXI7 CS8qIGlkIG9mIG5leHQgbGlzdGVuZXIsIG9yIElOVkFMSURfUFJPQ19OVU1CRVIgKi8KIAlR dWV1ZVBvc2l0aW9uIHBvczsJCQkvKiBiYWNrZW5kIGhhcyByZWFkIHF1ZXVlIHVwIHRvIGhl cmUgKi8KLQlib29sCQl3YWtldXBQZW5kaW5nOwkvKiBzaWduYWwgc2VudCB0byBiYWNrZW5k LCBub3QgeWV0IHByb2Nlc3NlZCAqLworCWJvb2wJCXdha2V1cFBlbmRpbmc7CS8qIGludGVy cnVwdCBzZW50IHRvIGJhY2tlbmQsIG5vdCB5ZXQKKwkJCQkJCQkJICogcHJvY2Vzc2VkICov CiAJYm9vbAkJaXNBZHZhbmNpbmc7CS8qIGJhY2tlbmQgaXMgYWR2YW5jaW5nIGl0cyBwb3Np dGlvbiAqLwogfSBRdWV1ZUJhY2tlbmRTdGF0dXM7CiAKQEAgLTMxOCw3ICszMTUsNyBAQCB0 eXBlZGVmIHN0cnVjdCBRdWV1ZUJhY2tlbmRTdGF0dXMKICAqIGdsb2JhbENoYW5uZWxUYWJs ZSBwYXJ0aXRpb24gbG9ja3MuCiAgKgogICogRWFjaCBiYWNrZW5kIHVzZXMgdGhlIGJhY2tl bmRbXSBhcnJheSBlbnRyeSB3aXRoIGluZGV4IGVxdWFsIHRvIGl0cwotICogUHJvY051bWJl ci4gIFdlIHJlbHkgb24gdGhpcyB0byBtYWtlIFNlbmRQcm9jU2lnbmFsIGZhc3QuCisgKiBQ cm9jTnVtYmVyLiAgV2UgcmVseSBvbiB0aGlzIGZvciBzZW5kaW5nIGludGVycnVwdHMuCiAg KgogICogVGhlIGJhY2tlbmRbXSBhcnJheSBlbnRyaWVzIGZvciBhY3RpdmVseS1saXN0ZW5p bmcgYmFja2VuZHMgYXJlIHRocmVhZGVkCiAgKiB0b2dldGhlciB1c2luZyBmaXJzdExpc3Rl bmVyIGFuZCB0aGUgbmV4dExpc3RlbmVyIGxpbmtzLCBzbyB0aGF0IHdlIGNhbgpAQCAtNTI3 LDE1ICs1MjQsNiBAQCB0eXBlZGVmIHN0cnVjdCBDaGFubmVsTmFtZQogCWNoYXIJCWNoYW5u ZWxbTkFNRURBVEFMRU5dOwkvKiBoYXNoIGtleSAqLwogfSBDaGFubmVsTmFtZTsKIAotLyoK LSAqIEluYm91bmQgbm90aWZpY2F0aW9ucyBhcmUgaW5pdGlhbGx5IHByb2Nlc3NlZCBieSBI YW5kbGVOb3RpZnlJbnRlcnJ1cHQoKSwKLSAqIGNhbGxlZCBmcm9tIGluc2lkZSBhIHNpZ25h bCBoYW5kbGVyLiBUaGF0IGp1c3Qgc2V0cyB0aGUKLSAqIG5vdGlmeUludGVycnVwdFBlbmRp bmcgZmxhZyBhbmQgc2V0cyB0aGUgcHJvY2VzcwotICogbGF0Y2guIFByb2Nlc3NOb3RpZnlJ bnRlcnJ1cHQoKSB3aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5ldmVyIGl0J3Mgc2FmZSB0bwot ICogYWN0dWFsbHkgZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQuCi0gKi8KLXZvbGF0aWxlIHNp Z19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci0KIC8qIFRydWUg aWYgd2UndmUgcmVnaXN0ZXJlZCBhbiBvbl9zaG1lbV9leGl0IGNsZWFudXAgKi8KIHN0YXRp YyBib29sIHVubGlzdGVuRXhpdFJlZ2lzdGVyZWQgPSBmYWxzZTsKIApAQCAtNTUyLDExICs1 NDAsMTAgQEAgc3RhdGljIFF1ZXVlUG9zaXRpb24gcXVldWVIZWFkQmVmb3JlV3JpdGU7CiBz dGF0aWMgUXVldWVQb3NpdGlvbiBxdWV1ZUhlYWRBZnRlcldyaXRlOwogCiAvKgotICogV29y a3NwYWNlIGFycmF5cyBmb3IgU2lnbmFsQmFja2VuZHMuICBUaGVzZSBhcmUgcHJlYWxsb2Nh dGVkIGluCisgKiBXb3Jrc3BhY2UgYXJyYXkgZm9yIFNpZ25hbEJhY2tlbmRzLiAgVGhpcyBp cyBwcmVhbGxvY2F0ZWQgaW4KICAqIFByZUNvbW1pdF9Ob3RpZnkgdG8gYXZvaWQgbmVlZGlu ZyBtZW1vcnkgYWxsb2NhdGlvbiBhZnRlciBjb21taXR0aW5nIHRvCiAgKiBjbG9nLgogICov Ci1zdGF0aWMgaW50MzIgKnNpZ25hbFBpZHMgPSBOVUxMOwogc3RhdGljIFByb2NOdW1iZXIg KnNpZ25hbFByb2Nub3MgPSBOVUxMOwogCiAvKiBoYXZlIHdlIGFkdmFuY2VkIHRvIGEgcGFn ZSB0aGF0J3MgYSBtdWx0aXBsZSBvZiBRVUVVRV9DTEVBTlVQX0RFTEFZPyAqLwpAQCAtMTI2 NSwxMCArMTI1Miw2IEBAIFByZUNvbW1pdF9Ob3RpZnkodm9pZCkKIAkJfQogCiAJCS8qIFBy ZWFsbG9jYXRlIHdvcmtzcGFjZSB0aGF0IHdpbGwgYmUgbmVlZGVkIGJ5IFNpZ25hbEJhY2tl bmRzKCkgKi8KLQkJaWYgKHNpZ25hbFBpZHMgPT0gTlVMTCkKLQkJCXNpZ25hbFBpZHMgPSBN ZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCQkJTWF4QmFj a2VuZHMgKiBzaXplb2YoaW50MzIpKTsKLQogCQlpZiAoc2lnbmFsUHJvY25vcyA9PSBOVUxM KQogCQkJc2lnbmFsUHJvY25vcyA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250 ZXh0LAogCQkJCQkJCQkJCQkgICBNYXhCYWNrZW5kcyAqIHNpemVvZihQcm9jTnVtYmVyKSk7 CkBAIC0xMzYwLDcgKzEzNDMsNyBAQCBQcmVDb21taXRfTm90aWZ5KHZvaWQpCiAgKgogICoJ CUFwcGx5IHBlbmRpbmcgbGlzdGVuL3VubGlzdGVuIGNoYW5nZXMgYW5kIGNsZWFyIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRlLgogICoKLSAqCQlJZiB3ZSBpc3N1ZWQgYW55IG5vdGlmaWNh dGlvbnMgaW4gdGhlIHRyYW5zYWN0aW9uLCBzZW5kIHNpZ25hbHMgdG8KKyAqCQlJZiB3ZSBp c3N1ZWQgYW55IG5vdGlmaWNhdGlvbnMgaW4gdGhlIHRyYW5zYWN0aW9uLCBzZW5kIGludGVy cnVwdHMgdG8KICAqCQlsaXN0ZW5pbmcgYmFja2VuZHMgKHBvc3NpYmx5IGluY2x1ZGluZyBv dXJzZWx2ZXMpIHRvIHByb2Nlc3MgdGhlbS4KICAqCQlBbHNvLCBpZiB3ZSBmaWxsZWQgZW5v dWdoIHF1ZXVlIHBhZ2VzIHdpdGggbmV3IG5vdGlmaWVzLCB0cnkgdG8KICAqCQlhZHZhbmNl IHRoZSBxdWV1ZSB0YWlsIHBvaW50ZXIuCkBAIC0xMzg2LDkgKzEzNjksOSBAQCBBdENvbW1p dF9Ob3RpZnkodm9pZCkKIAkJYXN5bmNRdWV1ZVVucmVnaXN0ZXIoKTsKIAogCS8qCi0JICog U2VuZCBzaWduYWxzIHRvIGxpc3RlbmluZyBiYWNrZW5kcy4gIFdlIG5lZWQgZG8gdGhpcyBv bmx5IGlmIHRoZXJlIGFyZQotCSAqIHBlbmRpbmcgbm90aWZpZXMsIHdoaWNoIHdlcmUgcHJl dmlvdXNseSBhZGRlZCB0byB0aGUgc2hhcmVkIHF1ZXVlIGJ5Ci0JICogUHJlQ29tbWl0X05v dGlmeSgpLgorCSAqIFNlbmQgaW50ZXJydXB0cyB0byBsaXN0ZW5pbmcgYmFja2VuZHMuICBX ZSBuZWVkIGRvIHRoaXMgb25seSBpZiB0aGVyZQorCSAqIGFyZSBwZW5kaW5nIG5vdGlmaWVz LCB3aGljaCB3ZXJlIHByZXZpb3VzbHkgYWRkZWQgdG8gdGhlIHNoYXJlZCBxdWV1ZQorCSAq IGJ5IFByZUNvbW1pdF9Ob3RpZnkoKS4KIAkgKi8KIAlpZiAocGVuZGluZ05vdGlmaWVzICE9 IE5VTEwpCiAJCVNpZ25hbEJhY2tlbmRzKCk7CkBAIC0xNjE4LDcgKzE2MDEsNyBAQCBQcmVw YXJlVGFibGVFbnRyaWVzRm9yTGlzdGVuKGNvbnN0IGNoYXIgKmNoYW5uZWwpCiAgKgogICog UHJlcGFyZSBhbiBVTkxJU1RFTiBieSByZWNvcmRpbmcgaXQgaW4gcGVuZGluZ0xpc3RlbkFj dGlvbnMsIGJ1dCBvbmx5IGlmCiAgKiB3ZSdyZSBjdXJyZW50bHkgbGlzdGVuaW5nIChjb21t aXR0ZWQgb3Igc3RhZ2VkKS4gIFdlIGRvbid0IHRvdWNoCi0gKiBnbG9iYWxDaGFubmVsVGFi bGUgeWV0IC0gdGhlIGxpc3RlbmVyIGtlZXBzIHJlY2VpdmluZyBzaWduYWxzIHVudGlsCisg KiBnbG9iYWxDaGFubmVsVGFibGUgeWV0IC0gdGhlIGxpc3RlbmVyIGtlZXBzIHJlY2Vpdmlu ZyBub3RpZmljYXRpb25zIHVudGlsCiAgKiBjb21taXQsIHdoZW4gdGhlIGVudHJ5IGlzIHJl bW92ZWQuCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xNjM4LDcgKzE2MjEsNyBAQCBQcmVwYXJl VGFibGVFbnRyaWVzRm9yVW5saXN0ZW4oY29uc3QgY2hhciAqY2hhbm5lbCkKIAkvKgogCSAq IFJlY29yZCBpbiBsb2NhbCBwZW5kaW5nIGhhc2ggdGhhdCB3ZSB3YW50IHRvIFVOTElTVEVO LCBvdmVyd3JpdGluZyBhbnkKIAkgKiBlYXJsaWVyIGF0dGVtcHQgdG8gTElTVEVOLiAgRG9u J3QgdG91Y2ggbG9jYWxDaGFubmVsVGFibGUgb3IKLQkgKiBnbG9iYWxDaGFubmVsVGFibGUg eWV0IC0gd2Uga2VlcCByZWNlaXZpbmcgc2lnbmFscyB1bnRpbCBjb21taXQuCisJICogZ2xv YmFsQ2hhbm5lbFRhYmxlIHlldCAtIHdlIGtlZXAgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMg dW50aWwgY29tbWl0LgogCSAqLwogCXBlbmRpbmcgPSAoUGVuZGluZ0xpc3RlbkVudHJ5ICop CiAJCWhhc2hfc2VhcmNoKHBlbmRpbmdMaXN0ZW5BY3Rpb25zLCBjaGFubmVsLCBIQVNIX0VO VEVSLCBOVUxMKTsKQEAgLTIyNDIsMTQgKzIyMjUsMTQgQEAgYXN5bmNRdWV1ZUZpbGxXYXJu aW5nKHZvaWQpCiB9CiAKIC8qCi0gKiBTZW5kIHNpZ25hbHMgdG8gbGlzdGVuaW5nIGJhY2tl bmRzLgorICogU2VuZCBpbnRlcnJ1cHRzIHRvIGxpc3RlbmluZyBiYWNrZW5kcy4KICAqCiAg KiBOb3JtYWxseSB3ZSBzaWduYWwgb25seSBiYWNrZW5kcyB0aGF0IGFyZSBpbnRlcmVzdGVk IGluIHRoZSBub3RpZmllcyB0aGF0CiAgKiB3ZSBqdXN0IHNlbnQuICBIb3dldmVyLCB0aGF0 IHdpbGwgbGVhdmUgaWRsZSBsaXN0ZW5lcnMgZmFsbGluZyBmdXJ0aGVyIGFuZAogICogZnVy dGhlciBiZWhpbmQuICBXYWtlbiB0aGVtIGFueXdheSBpZiB0aGV5J3JlIGZhciBlbm91Z2gg YmVoaW5kLCBzbyB0aGV5J2xsCiAgKiBhZHZhbmNlIHRoZWlyIHF1ZXVlIHBvc2l0aW9uIHBv aW50ZXJzLCBhbGxvd2luZyB0aGUgZ2xvYmFsIHRhaWwgdG8gYWR2YW5jZS4KICAqCi0gKiBT aW5jZSB3ZSBrbm93IHRoZSBQcm9jTnVtYmVyIGFuZCB0aGUgUGlkIHRoZSBzaWduYWxpbmcg aXMgcXVpdGUgY2hlYXAuCisgKiBTaW5jZSB3ZSBrbm93IHRoZSBQcm9jTnVtYmVyIHRoZSBz aWduYWxpbmcgaXMgcXVpdGUgY2hlYXAuCiAgKgogICogVGhpcyBpcyBjYWxsZWQgZHVyaW5n IENvbW1pdFRyYW5zYWN0aW9uKCksIHNvIGl0J3MgaW1wb3J0YW50IGZvciBpdAogICogdG8g aGF2ZSB2ZXJ5IGxvdyBwcm9iYWJpbGl0eSBvZiBmYWlsdXJlLgpAQCAtMjI2MiwxMyArMjI0 NSwxMyBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCS8qIENhbid0IGdldCBoZXJlIHdpdGhv dXQgUHJlQ29tbWl0X05vdGlmeSBoYXZpbmcgbWFkZSB0aGUgZ2xvYmFsIHRhYmxlICovCiAJ QXNzZXJ0KGdsb2JhbENoYW5uZWxUYWJsZSAhPSBOVUxMKTsKIAotCS8qIEl0IHNob3VsZCBo YXZlIHNldCB1cCB0aGVzZSBhcnJheXMsIHRvbyAqLwotCUFzc2VydChzaWduYWxQaWRzICE9 IE5VTEwgJiYgc2lnbmFsUHJvY25vcyAhPSBOVUxMKTsKKwkvKiBJdCBzaG91bGQgaGF2ZSBz ZXQgdXAgdGhpcyBhcnJheSwgdG9vICovCisJQXNzZXJ0KHNpZ25hbFByb2Nub3MgIT0gTlVM TCk7CiAKIAkvKgogCSAqIElkZW50aWZ5IGJhY2tlbmRzIHRoYXQgd2UgbmVlZCB0byBzaWdu YWwuICBXZSBkb24ndCB3YW50IHRvIHNlbmQKIAkgKiBzaWduYWxzIHdoaWxlIGhvbGRpbmcg dGhlIE5vdGlmeVF1ZXVlTG9jaywgc28gdGhpcyBwYXJ0IGp1c3QgYnVpbGRzIGEKLQkgKiBs aXN0IG9mIHRhcmdldCBQSURzIGluIHNpZ25hbFBpZHNbXSBhbmQgc2lnbmFsUHJvY25vc1td LgorCSAqIGxpc3Qgb2YgdGFyZ2V0IGJhY2tlbmRzIGluIHNpZ25hbFByb2Nub3NbXS4KIAkg Ki8KIAljb3VudCA9IDA7CiAKQEAgLTIyOTMsNyArMjI3Niw2IEBAIFNpZ25hbEJhY2tlbmRz KHZvaWQpCiAJCWZvciAoaW50IGogPSAwOyBqIDwgZW50cnktPm51bUxpc3RlbmVyczsgaisr KQogCQl7CiAJCQlQcm9jTnVtYmVyCWk7Ci0JCQlpbnQzMgkJcGlkOwogCQkJUXVldWVQb3Np dGlvbiBwb3M7CiAKIAkJCWlmICghbGlzdGVuZXJzW2pdLmxpc3RlbmluZykKQEAgLTIzMDQs MTYgKzIyODYsMTQgQEAgU2lnbmFsQmFja2VuZHModm9pZCkKIAkJCWlmIChRVUVVRV9CQUNL RU5EX1dBS0VVUF9QRU5ESU5HKGkpKQogCQkJCWNvbnRpbnVlOwkJLyogYWxyZWFkeSBzaWdu YWxlZCwgbm8gbmVlZCB0byByZXBlYXQgKi8KIAotCQkJcGlkID0gUVVFVUVfQkFDS0VORF9Q SUQoaSk7CiAJCQlwb3MgPSBRVUVVRV9CQUNLRU5EX1BPUyhpKTsKIAogCQkJaWYgKFFVRVVF X1BPU19FUVVBTChwb3MsIFFVRVVFX0hFQUQpKQogCQkJCWNvbnRpbnVlOwkJLyogaXQncyBm dWxseSBjYXVnaHQgdXAgYWxyZWFkeSAqLwogCi0JCQlBc3NlcnQocGlkICE9IEludmFsaWRQ aWQpOworCQkJQXNzZXJ0KGkgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkJCVFVRVVF X0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlkc1tjb3Vu dF0gPSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3VudCsrOwog CQl9CkBAIC0yMzMwLDcgKzIzMTAsNiBAQCBTaWduYWxCYWNrZW5kcyh2b2lkKQogCSAqLwog CWZvciAoUHJvY051bWJlciBpID0gUVVFVUVfRklSU1RfTElTVEVORVI7IGkgIT0gSU5WQUxJ RF9QUk9DX05VTUJFUjsgaSA9IFFVRVVFX05FWFRfTElTVEVORVIoaSkpCiAJewotCQlpbnQz MgkJcGlkOwogCQlRdWV1ZVBvc2l0aW9uIHBvczsKIAogCQlpZiAoUVVFVUVfQkFDS0VORF9X QUtFVVBfUEVORElORyhpKSkKQEAgLTIzNDAsNyArMjMxOSw2IEBAIFNpZ25hbEJhY2tlbmRz KHZvaWQpCiAJCWlmIChRVUVVRV9CQUNLRU5EX0lTX0FEVkFOQ0lORyhpKSkKIAkJCWNvbnRp bnVlOwogCi0JCXBpZCA9IFFVRVVFX0JBQ0tFTkRfUElEKGkpOwogCQlwb3MgPSBRVUVVRV9C QUNLRU5EX1BPUyhpKTsKIAogCQkvKgpAQCAtMjM2MCwxMCArMjMzOCw3IEBAIFNpZ25hbEJh Y2tlbmRzKHZvaWQpCiAJCQkJCQkJCQlRVUVVRV9QT1NfUEFHRShwb3MpKSA+PSBRVUVVRV9D TEVBTlVQX0RFTEFZKQogCQl7CiAJCQkvKiBJdCdzIGlkbGUgYW5kIGZhciBiZWhpbmQsIHNv IHdha2UgaXQgdXAgKi8KLQkJCUFzc2VydChwaWQgIT0gSW52YWxpZFBpZCk7Ci0KIAkJCVFV RVVFX0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSB0cnVlOwotCQkJc2lnbmFsUGlkc1tj b3VudF0gPSBwaWQ7CiAJCQlzaWduYWxQcm9jbm9zW2NvdW50XSA9IGk7CiAJCQljb3VudCsr OwogCQl9CkBAIC0yMzcxLDI5ICsyMzQ2LDIwIEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiAK IAlMV0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAKLQkvKiBOb3cgc2VuZCBzaWdu YWxzICovCisJLyogTm93IHNlbmQgdGhlIGludGVycnVwdHMgKi8KIAlmb3IgKGludCBpID0g MDsgaSA8IGNvdW50OyBpKyspCiAJewotCQlpbnQzMgkJcGlkID0gc2lnbmFsUGlkc1tpXTsK KwkJUHJvY051bWJlcglwcm9jbm8gPSBzaWduYWxQcm9jbm9zW2ldOwogCiAJCS8qCi0JCSAq IElmIHdlIGFyZSBzaWduYWxpbmcgb3VyIG93biBwcm9jZXNzLCBubyBuZWVkIHRvIGludm9s dmUgdGhlIGtlcm5lbDsKLQkJICoganVzdCBzZXQgdGhlIGZsYWcgZGlyZWN0bHkuCisJCSAq IE5vdGU6IGl0J3MgdW5saWtlbHkgYnV0IGNlcnRhaW5seSBwb3NzaWJsZSB0aGF0IHRoZSBi YWNrZW5kIGV4aXRlZAorCQkgKiBzaW5jZSB3ZSByZWxlYXNlZCBOb3RpZnlRdWV1ZUxvY2su IFdlJ2xsIHNlbmQgdGhlIGludGVycnVwdCB0bworCQkgKiB3cm9uZyBiYWNrZW5kIGluIHRo YXQgY2FzZSwgYnV0IHRoYXQncyBoYXJtbGVzcy4KIAkJICovCi0JCWlmIChwaWQgPT0gTXlQ cm9jUGlkKQotCQl7Ci0JCQlub3RpZnlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJCWNv bnRpbnVlOwotCQl9Ci0KLQkJLyoKLQkJICogTm90ZTogYXNzdW1pbmcgdGhpbmdzIGFyZW4n dCBicm9rZW4sIGEgc2lnbmFsIGZhaWx1cmUgaGVyZSBjb3VsZAotCQkgKiBvbmx5IG9jY3Vy IGlmIHRoZSB0YXJnZXQgYmFja2VuZCBleGl0ZWQgc2luY2Ugd2UgcmVsZWFzZWQKLQkJICog Tm90aWZ5UXVldWVMb2NrOyB3aGljaCBpcyB1bmxpa2VseSBidXQgY2VydGFpbmx5IHBvc3Np YmxlLiBTbyB3ZQotCQkgKiBqdXN0IGxvZyBhIGxvdy1sZXZlbCBkZWJ1ZyBtZXNzYWdlIGlm IGl0IGhhcHBlbnMuCi0JCSAqLwotCQlpZiAoU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lH X05PVElGWV9JTlRFUlJVUFQsIHNpZ25hbFByb2Nub3NbaV0pIDwgMCkKLQkJCWVsb2coREVC VUczLCAiY291bGQgbm90IHNpZ25hbCBiYWNrZW5kIHdpdGggUElEICVkOiAlbSIsIHBpZCk7 CisJCWlmIChwcm9jbm8gPT0gTXlQcm9jTnVtYmVyKQorCQkJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX0FTWU5DX05PVElGWSk7CisJCWVsc2UKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX0FTWU5DX05PVElGWSwgcHJvY25vKTsKIAl9CiB9CiAKQEAgLTI1MzAsMzkgKzI0OTYs MTIgQEAgQXRTdWJBYm9ydF9Ob3RpZnkodm9pZCkKIAl9CiB9CiAKLS8qCi0gKiBIYW5kbGVO b3RpZnlJbnRlcnJ1cHQKLSAqCi0gKgkJU2lnbmFsIGhhbmRsZXIgcG9ydGlvbiBvZiBpbnRl cnJ1cHQgaGFuZGxpbmcuIExldCB0aGUgYmFja2VuZCBrbm93Ci0gKgkJdGhhdCB0aGVyZSdz IGEgcGVuZGluZyBub3RpZnkgaW50ZXJydXB0LiBJZiB3ZSdyZSBjdXJyZW50bHkgcmVhZGlu ZwotICoJCWZyb20gdGhlIGNsaWVudCwgdGhpcyB3aWxsIGludGVycnVwdCB0aGUgcmVhZCBh bmQKLSAqCQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2FsbCBQcm9jZXNz Tm90aWZ5SW50ZXJydXB0KCkuCi0gKi8KLXZvaWQKLUhhbmRsZU5vdGlmeUludGVycnVwdCh2 b2lkKQotewotCS8qCi0JICogTm90ZTogdGhpcyBpcyBjYWxsZWQgYnkgYSBTSUdOQUwgSEFO RExFUi4gWW91IG11c3QgYmUgdmVyeSB3YXJ5IHdoYXQKLQkgKiB5b3UgZG8gaGVyZS4KLQkg Ki8KLQotCS8qIHNpZ25hbCB0aGF0IHdvcmsgbmVlZHMgdG8gYmUgZG9uZSAqLwotCW5vdGlm eUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbWFrZSBzdXJlIHRoZSBldmVudCBp cyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQot CiAvKgogICogUHJvY2Vzc05vdGlmeUludGVycnVwdAogICoKLSAqCQlUaGlzIGlzIGNhbGxl ZCBpZiB3ZSBzZWUgbm90aWZ5SW50ZXJydXB0UGVuZGluZyBzZXQsIGp1c3QgYmVmb3JlCi0g KgkJdHJhbnNtaXR0aW5nIFJlYWR5Rm9yUXVlcnkgYXQgdGhlIGVuZCBvZiBhIGZyb250ZW5k IGNvbW1hbmQsIGFuZAotICoJCWFsc28gaWYgYSBub3RpZnkgc2lnbmFsIG9jY3VycyB3aGls ZSByZWFkaW5nIGZyb20gdGhlIGZyb250ZW5kLgotICoJCUhhbmRsZU5vdGlmeUludGVycnVw dCgpIHdpbGwgY2F1c2UgdGhlIHJlYWQgdG8gYmUgaW50ZXJydXB0ZWQKLSAqCQl2aWEgdGhl IHByb2Nlc3MncyBsYXRjaCwgYW5kIHRoaXMgcm91dGluZSB3aWxsIGdldCBjYWxsZWQuCi0g KgkJSWYgd2UgYXJlIHRydWx5IGlkbGUgKGllLCAqbm90KiBpbnNpZGUgYSB0cmFuc2FjdGlv biBibG9jayksCi0gKgkJcHJvY2VzcyB0aGUgaW5jb21pbmcgbm90aWZpZXMuCisgKgkJVGhp cyBpcyBjYWxsZWQgaWYgd2Ugc2VlIElOVEVSUlVQVF9BU1lOQ19OT1RJRlkgc2V0LCBqdXN0 IGJlZm9yZQorICoJCXRyYW5zbWl0dGluZyBSZWFkeUZvclF1ZXJ5IGF0IHRoZSBlbmQgb2Yg YSBmcm9udGVuZCBjb21tYW5kLCBhbmQgYWxzbworICoJCWlmIHRoZSBpbnRlcnJ1cHQgb2Nj dXJzIHdoaWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQuCiAgKgogICoJCUlmICJmbHVz aCIgaXMgdHJ1ZSwgZm9yY2UgYW55IGZyb250ZW5kIG1lc3NhZ2VzIG91dCBpbW1lZGlhdGVs eS4KICAqCQlUaGlzIGNhbiBiZSBmYWxzZSB3aGVuIGJlaW5nIGNhbGxlZCBhdCB0aGUgZW5k IG9mIGEgZnJvbnRlbmQgY29tbWFuZCwKQEAgLTI1NzEsMTIgKzI1MTAsMTMgQEAgSGFuZGxl Tm90aWZ5SW50ZXJydXB0KHZvaWQpCiB2b2lkCiBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGJv b2wgZmx1c2gpCiB7Ci0JaWYgKElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKSkK LQkJcmV0dXJuOwkJCQkJLyogbm90IHJlYWxseSBpZGxlICovCisJQXNzZXJ0KCFJc1RyYW5z YWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpOwogCi0JLyogTG9vcCBpbiBjYXNlIGFub3Ro ZXIgc2lnbmFsIGFycml2ZXMgd2hpbGUgc2VuZGluZyBtZXNzYWdlcyAqLwotCXdoaWxlIChu b3RpZnlJbnRlcnJ1cHRQZW5kaW5nKQorCS8qIExvb3AgaW4gY2FzZSBhbm90aGVyIGludGVy cnVwdCBhcnJpdmVzIHdoaWxlIHNlbmRpbmcgbWVzc2FnZXMgKi8KKwlkbworCXsKIAkJUHJv Y2Vzc0luY29taW5nTm90aWZ5KGZsdXNoKTsKKwl9IHdoaWxlIChDb25zdW1lSW50ZXJydXB0 KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpKTsKIH0KIAogCkBAIC0yNjg2LDcgKzI2MjYsNyBA QCBhc3luY1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnModm9pZCkKIAkJCSAqIE91ciBzdG9w IHBvc2l0aW9uIGlzIHdoYXQgd2UgZm91bmQgdG8gYmUgdGhlIGhlYWQncyBwb3NpdGlvbgog CQkJICogd2hlbiB3ZSBlbnRlcmVkIHRoaXMgZnVuY3Rpb24uIEl0IG1pZ2h0IGhhdmUgY2hh bmdlZCBhbHJlYWR5LgogCQkJICogQnV0IGlmIGl0IGhhcywgd2Ugd2lsbCByZWNlaXZlIChv ciBoYXZlIGFscmVhZHkgcmVjZWl2ZWQgYW5kCi0JCQkgKiBxdWV1ZWQpIGFub3RoZXIgc2ln bmFsIGFuZCBjb21lIGhlcmUgYWdhaW4uCisJCQkgKiBxdWV1ZWQpIGFub3RoZXIgaW50ZXJy dXB0IGFuZCBjb21lIGhlcmUgYWdhaW4uCiAJCQkgKgogCQkJICogV2UgYXJlIG5vdCBob2xk aW5nIE5vdGlmeVF1ZXVlTG9jayBoZXJlISBUaGUgcXVldWUgY2FuIG9ubHkKIAkJCSAqIGV4 dGVuZCBiZXlvbmQgdGhlIGhlYWQgcG9pbnRlciAoc2VlIGFib3ZlKSBhbmQgd2UgbGVhdmUg b3VyCkBAIC0zMDUwLDkgKzI5OTAsNiBAQCBBc3luY05vdGlmeUZyZWV6ZVhpZHMoVHJhbnNh Y3Rpb25JZCBuZXdGcm96ZW5YaWQpCiBzdGF0aWMgdm9pZAogUHJvY2Vzc0luY29taW5nTm90 aWZ5KGJvb2wgZmx1c2gpCiB7Ci0JLyogV2UgKm11c3QqIHJlc2V0IHRoZSBmbGFnICovCi0J bm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCiAJLyogRG8gbm90aGluZyBlbHNl IGlmIHdlIGFyZW4ndCBhY3RpdmVseSBsaXN0ZW5pbmcgKi8KIAlpZiAoTG9jYWxDaGFubmVs VGFibGVJc0VtcHR5KCkpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYwppbmRleCA5NGQ2ZjQxNWEwNi4uNTAwNTAzMGNkN2IgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTI2OSw5ICsyNjksMTMgQEAgQ29weUdldERh dGEoQ29weUZyb21TdGF0ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBtaW5yZWFkLCBp bnQgbWF4cmVhZCkKIAkJCQkJLyogVHJ5IHRvIHJlY2VpdmUgYW5vdGhlciBtZXNzYWdlICov CiAJCQkJCWludAkJCW10eXBlOwogCQkJCQlpbnQJCQltYXhtc2dsZW47CisJCQkJCWJvb2wJ CXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQ7CiAKIAkJCXJlYWRtZXNzYWdlOgotCQkJCQlI T0xEX0NBTkNFTF9JTlRFUlJVUFRTKCk7CisJCQkJCXNhdmVfcXVlcnlfY2FuY2VsX2VuYWJs ZWQgPSAoRW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZX0NBTkNFTCkg IT0gMDsKKwkJCQkJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQpCisJCQkJCQlEaXNh YmxlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOworCiAJCQkJCXBxX3N0YXJ0 bXNncmVhZCgpOwogCQkJCQltdHlwZSA9IHBxX2dldGJ5dGUoKTsKIAkJCQkJaWYgKG10eXBl ID09IEVPRikKQEAgLTMwMyw3ICszMDcsMTAgQEAgQ29weUdldERhdGEoQ29weUZyb21TdGF0 ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKIAkJ CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElP Tl9GQUlMVVJFKSwKIAkJCQkJCQkJIGVycm1zZygidW5leHBlY3RlZCBFT0Ygb24gY2xpZW50 IGNvbm5lY3Rpb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uIikpKTsKLQkJCQkJUkVTVU1F X0NBTkNFTF9JTlRFUlJVUFRTKCk7CisKKwkJCQkJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2Vu YWJsZWQpCisJCQkJCQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7 CisKIAkJCQkJLyogLi4uIGFuZCBwcm9jZXNzIGl0ICovCiAJCQkJCXN3aXRjaCAobXR5cGUp CiAJCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXggMDM5MzJmNDVjOGEuLmNjMzRm NDBmMmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNDIsMTIgKzQyLDEyIEBACiAj aW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jl c3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9h dXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMu aCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgpAQCAtMjQzMCw4ICsyNDMwLDcgQEAgdmFjdXVtX2RlbGF5X3Bv aW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMg Ki8KIAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcg fHwKLQkJKCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlp ZiAoIVZhY3V1bUNvc3RBY3RpdmUgJiYgIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0NP TkZJR19SRUxPQUQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMjQ0MCw5ICsyNDM5LDkgQEAg dmFjdXVtX2RlbGF5X3BvaW50KGJvb2wgaXNfYW5hbHl6ZSkKIAkgKiBbYXV0b3ZhY3V1bV9d dmFjdXVtX2Nvc3RfZGVsYXkgdG8gdGFrZSBlZmZlY3Qgd2hpbGUgYSB0YWJsZSBpcyBiZWlu ZwogCSAqIHZhY3V1bWVkIG9yIGFuYWx5emVkLgogCSAqLwotCWlmIChDb25maWdSZWxvYWRQ ZW5kaW5nICYmIEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSkKKwlpZiAoSW50ZXJydXB0 UGVuZGluZyhJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkgJiYgQW1BdXRvVmFjdXVtV29ya2Vy UHJvY2VzcygpKQogCXsKLQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CiAJCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOwogCQlWYWN1dW1VcGRhdGVDb3N0cygpOwogCX0KQEAgLTI1Mjks OCArMjUyOCw4IEBAIHZhY3V1bV9kZWxheV9wb2ludChib29sIGlzX2FuYWx5emUpCiAJCS8q CiAJCSAqIFdlIGRvbid0IHdhbnQgdG8gaWdub3JlIHBvc3RtYXN0ZXIgZGVhdGggZHVyaW5n IHZlcnkgbG9uZyB2YWN1dW1zCiAJCSAqIHdpdGggdmFjdXVtX2Nvc3RfZGVsYXkgY29uZmln dXJlZC4gIFdlIGNhbid0IHVzZSB0aGUgdXN1YWwKLQkJICogV2FpdExhdGNoKCkgYXBwcm9h Y2ggaGVyZSBiZWNhdXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFzZWQgc2xlZXAKLQkJICog ZHVyYXRpb25zIGFib3ZlLgorCQkgKiBXYWl0SW50ZXJydXB0KCkgYXBwcm9hY2ggaGVyZSBi ZWNhdXNlIHdlIHdhbnQgbWljcm9zZWNvbmQtYmFzZWQKKwkJICogc2xlZXAgZHVyYXRpb25z IGFib3ZlLgogCQkgKi8KIAkJaWYgKElzVW5kZXJQb3N0bWFzdGVyICYmICFQb3N0bWFzdGVy SXNBbGl2ZSgpKQogCQkJZXhpdCgxKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpp bmRleCA3MTM4ZGM2OTJjNi4uMTY2YjZmNWVlYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKQEAgLTYxLDkgKzYxLDkgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFy dGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJl eGVjdXRvci9ub2RlQXBwZW5kLmgiCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIAog LyogU2hhcmVkIHN0YXRlIGZvciBwYXJhbGxlbC1hd2FyZSBBcHBlbmQuICovCiBzdHJ1Y3Qg UGFyYWxsZWxBcHBlbmRTdGF0ZQpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgRXhlY0FwcGVuZEFz eW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQogCUFzc2VydChub2RlLT5hc19ldmVu dHNldCA9PSBOVUxMKTsKIAlub2RlLT5hc19ldmVudHNldCA9IENyZWF0ZVdhaXRFdmVudFNl dChDdXJyZW50UmVzb3VyY2VPd25lciwgbmV2ZW50cyk7CiAJQWRkV2FpdEV2ZW50VG9TZXQo bm9kZS0+YXNfZXZlbnRzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NL RVQsCi0JCQkJCSAgTlVMTCwgTlVMTCk7CisJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHaXZl IGVhY2ggd2FpdGluZyBzdWJwbGFuIGEgY2hhbmNlIHRvIGFkZCBhbiBldmVudC4gKi8KIAlp ID0gLTE7CkBAIC0xMDY3LDggKzEwNjcsOCBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQo QXBwZW5kU3RhdGUgKm5vZGUpCiAJfQogCiAJLyoKLQkgKiBBZGQgdGhlIHByb2Nlc3MgbGF0 Y2ggdG8gdGhlIHNldCwgc28gdGhhdCB3ZSB3YWtlIHVwIHRvIHByb2Nlc3MgdGhlCi0JICog c3RhbmRhcmQgaW50ZXJydXB0cyB3aXRoIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJICog QWRkIHRoZSBjdXJyZW50bHkgZW5hYmxlZCBpbnRlcnJ1cHRzIHRvIHRoZSBzZXQsIHNvIHRo YXQgd2Ugd2FrZSB1cCB0bworCSAqIHByb2Nlc3MgdGhlbSB3aXRoIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkuCiAJICoKIAkgKiBOT1RFOiBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBpdCdz IGltcG9ydGFudCB0aGF0IHRoaXMgaXMgYWRkZWQgdG8gdGhlCiAJICogV2FpdEV2ZW50U2V0 IGFmdGVyIHRoZSBFeGVjQXN5bmNDb25maWd1cmVXYWl0KCkgY2FsbHMuICBOYW1lbHksCkBA IC0xMDc4LDggKzEwNzgsOCBAQCBFeGVjQXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3Rh dGUgKm5vZGUpCiAJICogd2UgY2Fubm90IGNoYW5nZSBpdCBub3cuICBUaGUgcGF0dGVybiBo YXMgcG9zc2libHkgYmVlbiBjb3BpZWQgdG8gb3RoZXIKIAkgKiBleHRlbnNpb25zIHRvby4K IAkgKi8KLQlBZGRXYWl0RXZlbnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfTEFUQ0hf U0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCUFkZFdh aXRFdmVudFRvU2V0KG5vZGUtPmFzX2V2ZW50c2V0LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJ RF9TT0NLRVQsCisJCQkJCSAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywgTlVMTCk7CiAKIAkv KiBSZXR1cm4gYXQgbW9zdCBFVkVOVF9CVUZGRVJfU0laRSBldmVudHMgaW4gb25lIGNhbGwu ICovCiAJaWYgKG5ldmVudHMgPiBFVkVOVF9CVUZGRVJfU0laRSkKQEAgLTExMjIsMTQgKzEx MjIsMTAgQEAgRXhlY0FwcGVuZEFzeW5jRXZlbnRXYWl0KEFwcGVuZFN0YXRlICpub2RlKQog CQkJCUV4ZWNBc3luY05vdGlmeShhcmVxKTsKIAkJCX0KIAkJfQotCi0JCS8qIEhhbmRsZSBz dGFuZGFyZCBpbnRlcnJ1cHRzICovCi0JCWlmICgody0+ZXZlbnRzICYgV0xfTEFUQ0hfU0VU KSAhPSAwKQotCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKLQkJfQogCX0KKworCS8qIEhhbmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRz ICovCisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IDQxMDVmMWQxOTY4Li5hMzdkNmU5MDZi MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMzQsNyArMzQsNyBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9k ZUdhdGhlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RxdWV1ZS5oIgotI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCkBA IC0zODIsOSArMzgyLDExIEBAIGdhdGhlcl9yZWFkbmV4dChHYXRoZXJTdGF0ZSAqZ2F0aGVy c3RhdGUpCiAJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qIE5vdGhpbmcgdG8gZG8gZXhjZXB0 IHdhaXQgZm9yIGRldmVsb3BtZW50cy4gKi8KLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRj aCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgV0FJ VF9FVkVOVF9FWEVDVVRFX0dBVEhFUik7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJ CSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9F WElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9FWEVDVVRFX0dBVEhF Uik7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQkJbnZp c2l0ZWQgPSAwOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaXBjL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvaXBjL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi43ZDQ2NWJjOTdkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9i YWNrZW5kL2lwYy9NYWtlZmlsZQpAQCAtMCwwICsxLDE5IEBACisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxlIGZvciBiYWNrZW5kL2lwYwor IworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9pcGMvTWFrZWZpbGUKKyMK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy9iYWNrZW5kL2lwYwordG9w X2J1aWxkZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlpbnRlcnJ1cHQubyBcCisJc2lnbmFsX2hhbmRs ZXJzLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5tZCBiL3NyYy9iYWNrZW5kL2lw Yy9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1 OWYzZDNjYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvaXBjL1JFQURNRS5t ZApAQCAtMCwwICsxLDI2MCBAQAorSW50ZXJydXB0cworPT09PT09PT09PQorCisiSW50ZXJy dXB0cyIgYXJlIGEgc2V0IG9mIGZsYWdzIHRoYXQgcmVwcmVzZW50IGNvbmRpdGlvbnMgdGhh dCBzaG91bGQKK2JlIGhhbmRsZWQgYXQgYSBsYXRlciB0aW1lLiAgVGhleSBhcmUgcm91Z2hs eSBhbmFsb2dvdXMgdG8gVW5peAorc2lnbmFscywgZXhjZXB0IHRoYXQgdGhleSBhcmUgaGFu ZGxlZCBjb29wZXJhdGl2ZWx5IGJ5IGNoZWNraW5nIGZvcgordGhlbSBhdCBtYW55IHBvaW50 cyBpbiB0aGUgY29kZS4gVGhlIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbWFjcm8gaXMKK2Nh bGxlZCBhdCBzdHJhdGVnaWNhbGx5IGxvY2F0ZWQgc3BvdHMgd2hlcmUgaXQgaXMgbm9ybWFs bHkgc2FmZSB0bworcHJvY2VzcyBpbnRlcnJ1cHRzLgorCitXZWxsIGJlaGF2ZWQgYmFja2Vu ZCBjb2RlIGNhbGxzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5IGluCith bnkgbG9uZy1ydW5uaW5nIGxvb3BzIG9yIG90aGVyIGxvbmcgY29tcHV0YXRpb25zLCBhbmQg bmV2ZXIgc2xlZXBzCit1c2luZyBtZWNoYW5pc21zIG90aGVyIHRoYW4gdGhlIFdhaXRFdmVu dFNldCBtZWNoYW5pc20gb3IgdGhlIG1vcmUKK2NvbnZlbmllbnQgV2FpdEludGVycnVwdCAv IFdhaXRTb2NrZXJPckludGVycnVwdCBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IKK2JvdW5kZWQg c2hvcnQgcGVyaW9kcywgZWcgTFdMb2NrIHdhaXRzKS4gRm9sbG93aW5nIHRoZXNlIHJ1bGVz IGVuc3VyZXMKK3RoYXQgdGhlIGJhY2tlbmQgZG9lc24ndCBiZWNvbWUgdW5jYW5jZWxsYWJs ZSBmb3IgdG9vIGxvbmcuCisKK0VhY2ggaW50ZXJydXB0IHR5cGUgY2FuIGhhdmUgYSBoYW5k bGVyIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdCwKK3doaWNoIHdpbGwgYmUgY2FsbGVk IGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlIGludGVycnVwdCBpcworcGVuZGlu Zy4gIEEgc3RhbmRhcmQgc2V0IG9mIGludGVycnVwdCBoYW5kbGVycyBhcmUgaW5zdGFsbGVk IGF0Citwcm9jZXNzIHN0YXJ0dXAsIGJ1dCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5CitT ZXRJbnRlcnJ1cHRIYW5kbGVyKCkuIEEgaGFuZGxlciBjYW4gYWxzbyBiZSB0ZW1wb3Jhcmls eSBkaXNhYmxlZCBieQorY2FsbGluZyBEaXNhYmxlSW50ZXJydXB0IGFuZCByZS1lbmFibGVk IGJ5IEVuYWJsZUludGVycnVwdC4KKworSWYgYW4gaW50ZXJydXB0IGlzIHJhaXNlZCB0aGF0 IGRvZXNuJ3QgaGF2ZSBhIGhhbmRsZXIgZnVuY3Rpb24gb3IgaXQKK2lzIG5vdCBlbmFibGVk LCB0aGUgaW50ZXJydXB0IHdpbGwgcmVtYWluIHBlbmRpbmcgdW50aWwgaXQgaXMgY2xlYXJl ZCwKK29yIHRoZSBoYW5kbGVyIGlzIHJlLWVuYWJsZWQuCisKK0lmIGFuIGludGVycnVwdCBp cyBzZW50IHRoYXQgd2FzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIHRhcmdldAorcHJvY2Vz cywgaXQgaXMgY29hbGVzY2VkLCBpZS4gdGhlIHRhcmdldCBwcm9jZXNzIHdpbGwgcHJvY2Vz cyBpdCBvbmx5CitvbmNlLiBBdHRlbXB0aW5nIHRvIHNldCBhbiBpbnRlcnJ1cHQgYml0IHRo YXQgaXMgYWxyZWFkeSBzZXQgaXMgdmVyeQorZmFzdCwgYW1vdW50aW5nIHRvIG1lcmVseSBh biBhdG9taWMgb3AgaW4gc2hhcmVkIG1lbW9yeS4KKworU2VlIHNyYy9pbmNsdWRlL2lwYy9p bnRlcnJ1cHQuaCBmb3IgYSBsaXN0IG9mIGFsbCB0aGUgaW50ZXJydXB0cyB1c2VkCitpbiBj b3JlIGNvZGUuIEV4dGVuc2lvbnMgY2FuIGRlZmluZSB0aGVpciBvd24gaW50ZXJydXB0cy4K KworSE9MRC9SRVNVTUVfSU5URVJSVVBUUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQ cm9jZXNzaW5nIGFuIGludGVycnVwdCBtYXkgdGhyb3cgYW4gZXJyb3Igd2l0aCBlcmVwb3J0 KCkgKGZvcgorZXhhbXBsZSwgcXVlcnkgY2FuY2VsbGF0aW9uKSBvciB0ZXJtaW5hdGUgdGhl IHByb2Nlc3MgZ3JhY2VmdWxseS4gSW4KK3NvbWUgY2FzZXMsIHdlIGludm9rZSBDSEVDS19G T1JfSU5URVJSVVBUUygpIGluc2lkZSBsb3ctbGV2ZWwKK3N1YnJvdXRpbmVzIHRoYXQgbWln aHQgc29tZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0cyB0aGF0IGRvICpub3QqCit3YW50 IHRvIGFsbG93IGludGVycnVwdCBwcm9jZXNzaW5nLiAgVGhlIEhPTERfSU5URVJSVVBUUygp IGFuZAorUkVTVU1FX0lOVEVSUlVQVFMoKSBtYWNyb3MgYWxsb3cgY29kZSB0byBlbnN1cmUg dGhhdCBubyBpbnRlcnJ1cHQKK2hhbmRsZXJzIGFyZSBjYWxsZWQsIGV2ZW4gaWYgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSBnZXRzIGNhbGxlZCBpbiBhCitzdWJyb3V0aW5lLiAgVGhlIGlu dGVycnVwdCB3aWxsIGJlIGhlbGQgb2ZmIHVudGlsCitDSEVDS19GT1JfSU5URVJSVVBUUygp IGlzIGRvbmUgb3V0c2lkZSBhbnkgSE9MRF9JTlRFUlJVUFRTKCkgLi4uCitSRVNVTUVfSU5U RVJSVVBUUygpIHNlY3Rpb24uCisKK0hPTERfSU5URVJSVVBUUygpIGJsb2NrcyBjYW4gYmUg bmVzdGVkLiBJZiBIT0xEX0lOVEVSUlVQVFMoKSBpcyBjYWxsZWQKK211bHRpcGxlIHRpbWVz LCBpbnRlcnJ1cHRzIGFyZSBoZWxkIHVudGlsIGV2ZXJ5IEhPTERfSU5URVJSVVBUUygpIGNh bGwKK2hhcyBiZWVuIGJhbGFuY2VkIHdpdGggYSBSRVNVTUVfSU5URVJSVVBUUygpIGNhbGwu CisKK0NyaXRpY2FsIHNlY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLQorCitBIHJlbGF0ZWQs IGJ1dCBjb25jZXB0dWFsbHkgZGlzdGluY3QsIG1lY2hhbmlzbSBpcyB0aGUgImNyaXRpY2Fs CitzZWN0aW9uIiBtZWNoYW5pc20uICBBIGNyaXRpY2FsIHNlY3Rpb24gbm90IG9ubHkgaG9s ZHMgb2ZmIGNhbmNlbC9kaWUKK2ludGVycnVwdHMsIGJ1dCBjYXVzZXMgYW55IGVyZXBvcnQo RVJST1IpIG9yIGVyZXBvcnQoRkFUQUwpIHRvIGJlY29tZQorZXJlcG9ydChQQU5JQykgLS0t IHRoYXQgaXMsIGEgc3lzdGVtLXdpZGUgcmVzZXQgaXMgZm9yY2VkLiAgTmVlZGxlc3MKK3Rv IHNheSwgb25seSByZWFsbHkgKmNyaXRpY2FsKiBjb2RlIHNob3VsZCBiZSBtYXJrZWQgYXMg YSBjcml0aWNhbAorc2VjdGlvbiEgVGhpcyBtZWNoYW5pc20gaXMgbW9zdGx5IHVzZWQgZm9y IFhMT0ctcmVsYXRlZCBjb2RlLgorCitTZW5kaW5nIGludGVycnVwdHMKKy0tLS0tLS0tLS0t LS0tLS0tLQorCitJbnRlcnJ1cHQgZmxhZ3MgY2FuIGJlICJyYWlzZWQiIGluIGRpZmZlcmVu dCB3YXlzOgorLSBzeW5jaHJvbm91c2x5IGJ5IGNvZGUgdGhhdCB3YW50cyB0byBkZWZlciBh biBhY3Rpb24sIGJ5IGNhbGxpbmcKKyAgUmFpc2VJbnRlcnJ1cHQsCistIGFzeW5jaHJvbm91 c2x5IGJ5IHRpbWVycyBvciBvdGhlciBzaWduYWwgaGFuZGxlcnMsIGFsc28gYnkgY2FsbGlu ZworICBSYWlzZUludGVycnVwdCwgb3IKKy0gInNlbnQiIGJ5IG90aGVyIGJhY2tlbmRzIHdp dGggU2VuZEludGVycnVwdAorCitQcm9jZXNzaW5nIGludGVycnVwdHMKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCitJbnRlcnJ1cHRzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkgaGFuZGxl ciBmdW5jdGlvbnMsIHdoaWNoIGFyZSBjYWxsZWQKK2Zyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKSB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBpcworcGVuZGluZy4gVXNl IFNldEludGVycnVwdEhhbmRsZXIoKSB0byBpbnN0YWxsIGEgaGFuZGxlciBmdW5jdGlvbi4K KworU29tZXRpbWVzIHlvdSBkb24ndCB3YW50IGFuIGludGVycnVwdCB0byBiZSBwcm9jZXNz ZWQgYXQgYW55IHJhbmRvbQorQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBpbnZvY2F0aW9uLiBJ biB0aGF0IGNhc2UsIHlvdSBjYW4gbGVhdmUgdGhlCitpbnRlcnJ1cHQgaGFuZGxlciBkaXNh YmxlZCwgYW5kIGNoZWNrIGZvciB0aGUgaW50ZXJydXB0IGV4cGxpY2l0bHkgYXQKK3N1aXRh YmxlIHNwb3RzIHdpdGggSW50ZXJydXB0UGVuZGluZygpLgorCitJTlRFUlJVUFRTX1BFTkRJ TkdfQ09ORElUSU9OKCkgY2FuIGJlIGNoZWNrZWQgdG8gc2VlIHdoZXRoZXIgYW4KK2ludGVy cnVwdCBuZWVkcyB0byBiZSBzZXJ2aWNlZCwgd2l0aG91dCB0cnlpbmcgdG8gZG8gc28gaW1t ZWRpYXRlbHkuCitTb21lIGNhbGxlcnMgYXJlIGFsc28gaW50ZXJlc3RlZCBpbiBJTlRFUlJV UFRTX0NBTl9CRV9QUk9DRVNTRUQoKSwKK3doaWNoIHRlbGxzIHdoZXRoZXIgQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKSBpcyBzdXJlIHRvIGNsZWFyIHRoZQoraW50ZXJydXB0LgorCisKK1dh aXRpbmcgZm9yIGFuIGludGVycnVwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUg Y29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGFuIGV2ZW50KHMpIHRoYXQgcmFpc2VzIGFu IGludGVycnVwdAoraXM6CisKK2BgYAorZm9yICg7OykKK3sKKwkvKiBIYW5kbGUgYW55IG90 aGVyIGludGVycnVwdHMgcmVjZWl2ZWQgd2hpbGUgd2UncmUgd2FpdGluZyAqLworCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkvKiBDaGVjayBpZiBvdXIgaW50ZXJydXB0IHdhcyBy YWlzZWQgKGNsZWFyaW5nIGl0IGlmIGl0IHdhcykgKi8KKwlpZiAoQ29uc3VtZUludGVycnVw dChJTlRFUlJVUFRfUFJJTlRFUl9PTl9GSVJFKSkKKwkJYnJlYWs7CisKKwkvKgorCSAqIFNs ZWVwIHVudGlsIG91ciBpbnRlcnJ1cHQgb3Igb25lIG9mIHRoZSBzdGFuZGFyZCBpbnRlcnJ1 cHRzIGlzCisJICogcmVjZWl2ZWQuCisJICovCisJV2FpdEludGVycnVwdChJTlRFUlJVUFRf Q0ZJX01BU0sgfAorCQkJCSAgSU5URVJSVVBUX1BSSU5URVJfT05fRklSRSwKKwkJCQkgIC4u Lik7Cit9CitgYGAKKworT2Z0ZW4gYW4gaW50ZXJydXB0IGlzIHVzZWQgdG8gd2FrZSB1cCBh IHByb2Nlc3MgdGhhdCBpcyBrbm93biB0byBiZQord2FpdGluZyBhbmQgbm90IGRvaW5nIGFu eXRoaW5nIGVsc2UuIFRoZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKK2ludGVycnVwdCBpcyBy ZXNlcnZlZCBmb3Igc3VjaCB1c2UgY2FzZXMgd2hlcmUgeW91IGRvbid0IG5lZWQgYQorZGVk aWNhdGVkIGludGVycnVwdCBmbGFnLiBXaGVuIHVzaW5nIElOVEVSUlVQVF9XQUlUX1dBS0VV UCwgeW91IG5lZWQKK3NvbWUgb3RoZXIgc2lnbmFsaW5nLCBlLmcuIGEgZmxhZyBpbiBzaGFy ZWQgbWVtb3J5LCB0byBpbmRpY2F0ZSB0aGF0Cit0aGUgZGVzaXJlZCBldmVudCBoYXMgaGFw cGVuLCBhcyB5b3UgbWF5IHNvbWV0aW1lcyByZWNlaXZlIGZhbHNlCit3YWtldXBzLiBUaGUg cGF0dGVybiB1c2luZyBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgbG9va3MgbGlrZSB0aGlzOgor CitgYGAKK2ZvciAoOzspCit7CisJLyogSGFuZGxlIGFueSBvdGhlciBpbnRlcnJ1cHRzIHJl Y2VpdmVkIHdoaWxlIHdlJ3JlIHdhaXRpbmcgKi8KKwlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKKwlpZiAod29y ayB0byBkbykKKwl7CisJCS8qIGluIHBhcnRpY3VsYXIsIGV4aXQgdGhlIGxvb3AgaWYgc29t ZSBjb25kaXRpb24gc2F0aXNmaWVkICovCisJCURvIFN0dWZmKCk7CisJfQorCVdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCAuLi4pOworfQorYGBgCisKK0l0J3MgaW1w b3J0YW50IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhl cmUncword29yayB0byBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGludGVy cnVwdCBiZXR3ZWVuIHRoZSBjaGVjaworYW5kIHRoZSBDbGVhckludGVycnVwdCgpIGNhbGws IHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbAoraW5jb3JyZWN0bHkgYmxvY2suIEFu b3RoZXIgdmFsaWQgY29kaW5nIHBhdHRlcm4gbG9va3MgbGlrZToKKworYGBgCitmb3IgKDs7 KQoreworCWlmICh3b3JrIHRvIGRvKQorCXsKKwkJLyogaW4gcGFydGljdWxhciwgZXhpdCB0 aGUgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQgKi8KKwkJRG8gU3R1ZmYoKTsK Kwl9CisJV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIC4uLik7CisJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKK30KK2BgYAorCitUaGlzIGlz IHVzZWZ1bCB0byByZWR1Y2UgaW50ZXJydXB0IHRyYWZmaWMgaWYgaXQncyBleHBlY3RlZCB0 aGF0IHRoZQorbG9vcCdzIHRlcm1pbmF0aW9uIGNvbmRpdGlvbiB3aWxsIG9mdGVuIGJlIHNh dGlzZmllZCBpbiB0aGUgZmlyc3QKK2l0ZXJhdGlvbjsgdGhlIGNvc3QgaXMgYW4gZXh0cmEg bG9vcCBpdGVyYXRpb24gYmVmb3JlIGJsb2NraW5nIHdoZW4gaXQKK2lzIG5vdC4gIFdoYXQg bXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3Vz CitldmVudHMgYWZ0ZXIgV2FpdEludGVycnVwdCBhbmQgYmVmb3JlIENsZWFySW50ZXJydXB0 LCBhcyB0aGF0IGNyZWF0ZXMKK2EgcmFjZSBjb25kaXRpb24uCisKK0N1c3RvbSBpbnRlcnJ1 cHRzIGluIGV4dGVuc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor QW4gZXh0ZW5zaW9uIGNhbiBhbGxvY2F0ZSBpbnRlcnJ1cHQgYml0cyBmb3IgaXRzIG93biBw dXJwb3NlcyBieQorY2FsbGluZyBSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQoKS4gTm90ZSB0aGF0 IGludGVycnVwdHMgYXJlIGEgc29tZXdoYXQKK3NjYXJjZSByZXNvdXJjZSwgc28gY29uc2lk ZXIgdXNpbmcgSU5URVJSVVBUX1dBSVRfV0FLRVVQIGlmIGFsbCB5b3UKK25lZWQgaXMgYSBz aW1wbGUgd2FrZXVwIGluIHNvbWUgbG9vcC4KKworCitVbml4IFNpZ25hbHMKKz09PT09PT09 PT09PQorCitQb3N0bWFzdGVyIGFuZCBtb3N0IGNoaWxkIHByb2Nlc3NlcyBhbHNvIHJlc3Bv bmQgdG8gYSBmZXcgc3RhbmRhcmQKK1VuaXggc2lnbmFsczoKKworU0lHSFVQIC0+IFJhaXNl cyBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRAorU0lHSU5UIC0+IFJhaXNlcyBJTlRFUlJVUFRf UVVFUllfQ0FOQ0VMCitTSUdURVJNIC0+IFJhaXNlcyBJTlRFUlJVUFRfVEVSTUlOQVRFCitT SUdRVUlUIC0+IGltbWVkaWF0ZSBzaHV0ZG93biwgYWJvcnQgdGhlIHByb2Nlc3MKKworcGdf Y3RsIHVzZXMgdGhlc2UgVW5peCBzaWduYWxzIHRvIHRlbGwgcG9zdG1hc3RlciB0byByZWxv YWQgY29uZmlnLAorc3RvcCwgZXRjLiBUaGVzZSBhcmUgYWxzbyBtZW50aW9uZWQgaW4gdGhl IHVzZXIgZG9jdW1lbnRhdGlvbi4KKworUG9zdG1hc3RlciBjYW5ub3Qgc2VuZCBpbnRlcnJ1 cHRzIHRvIHByb2Nlc3NlcyB3aXRob3V0IFBHUFJPQyBlbnRyaWVzCisoanVzdCBzeXNsb2dn ZXIgbm93YWRheXMpLCBhbmQgaXQgZG9lc24ndCBrbm93IHRoZSBQR1BST0MgZW50cmllcyBv Zgorb3RoZXIgY2hpbGQgcHJvY2Vzc2VzIGFueXdheS4gSGVuY2UsIGl0IHN0aWxsIHVzZXMg dGhlIGFib3ZlIFVuaXgKK3NpZ25hbHMgZm9yIHBvc3RtYXN0ZXIgLT4gY2hpbGQgc2lnbmFs aW5nLiBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbgorcG9zdG1hc3RlciBub3RpZmllcyBh IGJhY2tlbmQgdGhhdCBhIGJnd29ya2VyIGl0IGxhdW5jaGVkIGhhcworZXhpdGVkLiBQb3N0 bWFzdGVyIHNlbmRzIHRoYXQgaW50ZXJydXB0IGRpcmVjdGx5LiBUaGUgYmFja2VuZAorcmVn aXN0ZXJzIGV4cGxpY2l0bHkgZm9yIHRoYXQgbm90aWZpY2F0aW9uLCBhbmQgc3VwcGxpZXMg dGhlCitQcm9jTnVtYmVyIHRvIHBvc3RtYXN0ZXIgd2hlbiByZWdpc3RlcmluZy4KKworVGhl cmUgYXJlIGEgZmV3IG1vcmUgZXhjZXB0aW9uczoKKworLSBBIGZldyBwcm9jZXNzZXMgbGlr ZSB0aGUgY2hlY2twb2ludGVyLCBhcmNoaXZlciwgYW5kIElPIHdvcmtlcnMKKyAgZG9uJ3Qg cmVhY3QgdG8gU0lHVEVSTSwgYmVjYXVzZSBVbml4IHN5c3RlbSBzaHV0ZG93biBzZW5kcyBh IFNJR1RFUk0KKyAgdG8gYWxsIHByb2Nlc3NlcywgYW5kIHdlIHdhbnQgdGhlbSB0byBleGl0 IG9ubHkgb25seSBhZnRlciBhbGwgb3RoZXIKKyAgcHJvY2Vzcy4gSW5zdGVhZCwgdGhlIHBv c3RtYXN0ZXIgc2VuZHMgdGhlbSBTSUdVU1IyIGFmdGVyIGFsbCB0aGUKKyAgb3RoZXIgcHJv Y2Vzc2VzIGhhdmUgZXhpdGVkLgorCistIENoaWxkIHByb2Nlc3NlcyB1c2UgU0lHVVNSMSB0 byByZXF1ZXN0IHRoZSBwb3N0bWFzdGVyIHRvIGRvIHZhcmlvdXMKKyAgYWN0aW9ucyBvciBu b3RpZnkgdGhhdCBzb21lIGV2ZW50IGhhcyBvY2N1cnJlZC4gU2VlIHBtc2lnbmFsLmMgZm9y CisgIGRldGFpbHMgb24gdGhhdCBtZWNoYW5pc20KKworCitUT0RPOiBPcGVuIHF1ZXN0aW9u cworPT09PT09PT09PT09PT09PT09PT0KKworVE9ETzogUHV0IHBlbmRpbmdJbnRlcnJ1cHRz IGluIFBNQ2hpbGRTbG90IG9yIFBHUFJPQz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUG9zdG1hc3RlciBjYW5ub3Qgc2VuZCBp bnRlcnJ1cHRzIHRvIHByb2Nlc3NlcyB3aXRob3V0IFBHUFJPQworZW50cmllcy4gSGVuY2Us IGl0IHN0aWxsIHVzZXMgcGxhaW4gVW5peCBzaWduYWxzLiBXb3VsZCBiZSBuaWNlIGlmCitw b3N0bWFzdGVyIGNvdWxkIHNlbmQgaW50ZXJydXB0cyBkaXJlY3RseS4gSWYgd2UgbW92ZWQg dGhlIGludGVycnVwdAorbWFzayB0byBQTUNoaWxkU2xvdCwgaXQgY291bGQuICBIb3dldmVy LCBQR1BST0Mgc2VlbXMgbGlrZSBhIG1vcmUKK25hdHVyYWwgbG9jYXRpb24gb3RoZXJ3aXNl LgorCitPcHRpb25zOgorCithKSBNb3ZlIHBlbmRpbmdJbnRlcnJ1cHRzIHRvIFBNQ2hpbGRT bG90LiBUaGF0IHdheSwgeW91IGNhbiBzZW5kIHNpZ25hbHMKKyAgIHRvIHByb2Nlc3NlcyBh bHNvIHRvIHByb2Nlc3NlcyB0aGF0IGRvbid0IGhhdmUgYSBQR1BST0MgZW50cnkuCisKK2Ip IEFkZCBhIHBlbmRpbmdJbnRlcnJ1cHRzIG1hc2sgdG8gUE1DaGlsZFNsb3QsIGJ1dCBhbHNv IGhhdmUgaXQgaW4gUEdQUk9DLgorICAgV2hlbiBwb3N0bWFzdGVyIHNlbnMgYW4gaW50ZXJy dXB0LCBpdCBjYW4gY2hlY2sgaWYgaXQgaGFzIGEgUEdQUk9DIGVudHJ5LAorICAgYW5kIGlm IG5vdCwgdXNlIHRoZSBwZW5kaW5nSW50ZXJydXB0cyBmaWVsZCBpbiBQTUNoaWxkU2xvdCBp bnN0ZWFkLgorCitjKSBBc3NpZ24gYSBQR1BST0MgZW50cnkgZm9yIGV2ZXJ5IGNoaWxkIHBy b2Nlc3MgaW4gcG9zdG1hc3RlciBhbHJlYWR5LgorICAgKEV4Y2VwdCBkZWFkLWVuZCBiYWNr ZW5kcykuCisKK2QpIEtlZXAgaXQgYXMgaXQgaXMsIGNvbnRpbnVlIHRvIHVzZSBzaWduYWxz IGZvciBwb3N0bWFzdGVyIC0+IGNoaWxkCisgICBzaWduYWxpbmcKKworCitUT0RPOiBVbmlx dWUgc2Vzc2lvbiBpZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBzb21lIHBsYWNl cywgd2UgcmVhZCB0aGUgcGlkIG9mIGEgcHJvY2VzcyAoZnJvbSBQR1BST0Mgb3IKK2Vsc2V3 aGVyZSksIGFuZCBzZW5kIHNpZ25hbCB0byBpdCwgYWNjZXB0aW5nIHRoYXQgdGhlIHByb2Nl c3MgbWF5IGhhdmUKK2FscmVhZHkgZXhpdGVkLiAgSWYgd2UgZGlyZWN0bHkgcmVwbGFjZSB0 aG9zZSB1c2VzIG9mICdwaWQnIHdpdGggYQorUHJvY051bWJlciwgdGhlIFByb2NOdW1iZXIg bWlnaHQgZ2V0IHJldXNlZCBtdWNoIGZhc3RlciB0aGFuIHRoZSBwaWQKK3dvdWxkLiBTb2x1 dGlvbnM6CisKK2EpIEludHJvZHVjZSB0aGUgY29uY2VwdCBvZiBhIHVuaXF1ZSBzZXNzaW9u IElEIHRoYXQgaXMgbmV2ZXIgcmVjeWNsZWQKKyAgIChvciBub3QgZm9yIGEgbG9uZyB0aW1l LCBhbnl3YXkpLiBXaGVuIHJlYWRpbmcgdGhlIFByb2NOdW1iZXIgdG8KKyAgIHNlbmQgYW4g aW50ZXJydXB0IHRvLCBhbHNvIHJlYWQgdGhlIHNlc3Npb24gSUQuIFdoZW4gc2VuZGluZyB0 aGUKKyAgIGludGVycnVwdCwgY2hlY2sgdGhhdCB0aGUgc2Vzc2lvbiBJRCBtYXRjaGVzLgor CisKK1RPRE86IE90aGVyCistLS0tLS0tLS0tLQorCistIENoZWNrIHBlcmZvcm1hbmNlIG9m IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuIEl0J3MgdmVyeSBjaGVhcCwgYnV0CisgIGl0J3Mg bmV2ZXJ0aGVsZXNzIG1vcmUgaW5zdHJ1Y3Rpb25zIHRoYW4gaXQgdXNlZCB0byBiZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2lwYy9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL2lw Yy9pbnRlcnJ1cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NjFkMTQ4NDA5YmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9pcGMvaW50ZXJy dXB0LmMKQEAgLTAsMCArMSw0MzEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IGludGVycnVwdC5jCisgKgkgIEludGVyLXByb2Nlc3MgaW50ZXJydXB0cy4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNs dWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1 ZGUgInV0aWxzL3Jlc293bmVyLmgiCisKKy8qCisgKiBDdXJyZW50bHkgaW5zdGFsbGVkIGlu dGVycnVwdCBoYW5kbGVycworICovCitzdGF0aWMgcGdfaW50ZXJydXB0X2hhbmRsZXJfdCBp bnRlcnJ1cHRfaGFuZGxlcnNbNjRdOworCisvKgorICogWFhYOiBpcyAndm9sYXRpbGUnIHN0 aWxsIG5lZWRlZCBvbiBhbGwgdGhlIHZhcmlhYmxlcyBiZWxvdz8gV2hpY2ggb25lcyBhcmUK KyAqIGFjY2Vzc2VkIGZyb20gc2lnbmFsIGhhbmRsZXJzPworICovCisKKy8qIEJpdG1hc2sg b2YgY3VycmVudGx5IGVuYWJsZWQgaW50ZXJydXB0cyAqLwordm9sYXRpbGUgSW50ZXJydXB0 TWFzayBFbmFibGVkSW50ZXJydXB0c01hc2s7CisKKy8qCisgKiBJbnRlcnJ1cHRzIHRoYXQg d291bGQgYmUgcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuICBUaGlzIGlz CisgKiBlcXVhbCB0byBFbmFibGVkSW50ZXJydXB0c01hc2ssIGV4Y2VwdCB3aGVuIGludGVy cnVwdHMgYXJlIGhlbGQgb2ZmIGJ5CisgKiBIT0xEL1JFU1VNRV9JTlRFUlJVUFRTKCkgb3Ig YSBjcml0aWNhbCBzZWN0aW9uLgorICovCit2b2xhdGlsZSBJbnRlcnJ1cHRNYXNrIENoZWNr Rm9ySW50ZXJydXB0c01hc2s7CisKKy8qIFZhcmlhYmxlcyBmb3IgaG9sZG9mZiBtZWNoYW5p c20gKi8KK3ZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAwOwordm9s YXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQgPSAwOworCisvKiBBIGNvbW1vbiBXYWl0 RXZlbnRTZXQgdXNlZCB0byBpbXBsZW1lbnQgV2FpdEludGVycnVwdCgpICovCitzdGF0aWMg V2FpdEV2ZW50U2V0ICpJbnRlcnJ1cHRXYWl0U2V0OworCisvKiBUaGUgcG9zaXRpb24gb2Yg dGhlIGludGVycnVwdCBpbiBJbnRlcnJ1cHRXYWl0U2V0LiAqLworI2RlZmluZSBJbnRlcnJ1 cHRXYWl0U2V0SW50ZXJydXB0UG9zIDAKKyNkZWZpbmUgSW50ZXJydXB0V2FpdFNldFBvc3Rt YXN0ZXJEZWF0aFBvcyAxCisKK3N0YXRpYyBwZ19hdG9taWNfdWludDY0IExvY2FsUGVuZGlu Z0ludGVycnVwdHM7CisKK3BnX2F0b21pY191aW50NjQgKk15UGVuZGluZ0ludGVycnVwdHMg PSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKKworc3RhdGljIGludAluZXh0QWRkaW5JbnRl cnJ1cHRCaXQgPSBCRUdJTl9BRERJTl9JTlRFUlJVUFRTOworCisvKgorICogSW5zdGFsbCBh biBpbnRlcnJ1cHQgaGFuZGxlciBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIGlu dGVycnVwdC4KKyAqCisgKiBZb3UgbmVlZCB0byBhbHNvIGVuYWJsZSB0aGUgaW50ZXJydXB0 IHdpdGggRW5hYmxlSW50ZXJydXB0KCksIHVubGVzcyB5b3UncmUKKyAqIHJlcGxhY2luZyBh biBleGlzdGluZyBoYW5kbGVyIGZ1bmN0aW9uLgorICovCit2b2lkCitTZXRJbnRlcnJ1cHRI YW5kbGVyKEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgcGdfaW50ZXJydXB0X2hhbmRs ZXJfdCBoYW5kbGVyKQoreworCS8qCisJICogWFhYOiBJdCdzIHNvbWV3aGF0IGluZWZmaWNp ZW50IHRvIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGJpdHMsIGJ1dCB0aGlzCisJICogaXNuJ3Qg cGVyZm9ybWFuY2UgY3JpdGljYWwuCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5n dGhvZihpbnRlcnJ1cHRfaGFuZGxlcnMpOyBpKyspCisJeworCQlpZiAoKGludGVycnVwdE1h c2sgJiBVSU5UNjRfQklUKGkpKSAhPSAwKQorCQl7CisJCQkvKiBSZXBsYWNlIG9sZCBoYW5k bGVyICovCisJCQlpbnRlcnJ1cHRfaGFuZGxlcnNbaV0gPSBoYW5kbGVyOworCQl9CisJfQor fQorCisvKiBFbmFibGUgYW4gaW50ZXJydXB0IHRvIGJlIHByb2Nlc3NlZCBieSBDSEVDS19G T1JfSU5URVJSVVBUUygpICovCit2b2lkCitFbmFibGVJbnRlcnJ1cHQoSW50ZXJydXB0TWFz ayBpbnRlcnJ1cHRNYXNrKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiBD aGVjayB0aGF0IHRoZSBpbnRlcnJ1cHQgaGFzIGEgaGFuZGxlciBkZWZpbmVkICovCisJZm9y IChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpbnRlcnJ1cHRfaGFuZGxlcnMpOyBpKyspCisJ eworCQlpZiAoKGludGVycnVwdE1hc2sgJiBVSU5UNjRfQklUKGkpKSAhPSAwKQorCQkJQXNz ZXJ0KGludGVycnVwdF9oYW5kbGVyc1tpXSAhPSBOVUxMKTsKKwl9CisjZW5kaWYKKworCUVu YWJsZWRJbnRlcnJ1cHRzTWFzayB8PSBpbnRlcnJ1cHRNYXNrOworCWlmIChJbnRlcnJ1cHRI b2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDApCisJCUNoZWNrRm9y SW50ZXJydXB0c01hc2sgPSBFbmFibGVkSW50ZXJydXB0c01hc2s7Cit9CisKKy8qCisgKiBE aXNhYmxlIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIGZvciBhbiBpbnRlcnJ1cHQuCisgKgorICog V2hlbiBkaXNhYmxlZCwgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB3aWxsIG5vdCBjYWxsIHRo ZSBoYW5kbGVyIGZ1bmN0aW9uCisgKiBmb3IgdGhlIGdpdmVuIGludGVycnVwdC4gIElmIHRo ZSBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQsIGl0IHdpbGwgcmVtYWluCisgKiBwZW5kaW5nIHVu dGlsIHlvdSBtYW51YWxseSBjaGVjayBhbmQgY2xlYXIgaXQgd2l0aCBDbGVhckludGVycnVw dCgpLCBvcgorICogcmUtZW5hYmxlIHRoZSBoYW5kbGVyIGZ1bmN0aW9uLgorICovCit2b2lk CitEaXNhYmxlSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwlF bmFibGVkSW50ZXJydXB0c01hc2sgJj0gfmludGVycnVwdE1hc2s7CisJaWYgKEludGVycnVw dEhvbGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKKwkJQ2hlY2tG b3JJbnRlcnJ1cHRzTWFzayA9IEVuYWJsZWRJbnRlcnJ1cHRzTWFzazsKK30KKworLyoKKyAq IFByb2Nlc3NJbnRlcnJ1cHRzOiBvdXQtb2YtbGluZSBwb3J0aW9uIG9mIENIRUNLX0ZPUl9J TlRFUlJVUFRTKCkgbWFjcm8KKyAqCisgKiBJZiBhbiBpbnRlcnJ1cHQgY29uZGl0aW9uIGlz IHBlbmRpbmcsIGFuZCBpdCdzIHNhZmUgdG8gc2VydmljZSBpdCwKKyAqIHRoZW4gY2xlYXIg dGhlIGZsYWcgYW5kIGNhbGwgdGhlIGludGVycnVwdCBoYW5kbGVyLgorICoKKyAqIE5vdGU6 IGlmIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChpbnRlcnJ1cHQpIGlzIHRydWUsIHRo ZW4KKyAqIFByb2Nlc3NJbnRlcnJ1cHRzIGlzIGd1YXJhbnRlZWQgdG8gY2xlYXIgdGhlIGdp dmVuIGludGVycnVwdCBiZWZvcmUKKyAqIHJldHVybmluZywgaWYgaXQgd2FzIHNldCB3aGVu IGVudGVyaW5nLiAgKFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzCisgKiBndWFyYW50ZWVpbmcg dGhhdCBpdCdzIHN0aWxsIGNsZWFyIHdoZW4gd2UgcmV0dXJuOyBhbm90aGVyIGludGVycnVw dCBjb3VsZAorICogaGF2ZSBhcnJpdmVkLiAgQnV0IHdlIHByb21pc2UgdGhhdCBhbnkgcHJl LWV4aXN0aW5nIG9uZSB3aWxsIGhhdmUgYmVlbgorICogc2VydmljZWQuKQorICovCit2b2lk CitQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQoreworCUludGVycnVwdE1hc2sgaW50ZXJydXB0 c1RvUHJvY2VzczsKKworCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBD cml0U2VjdGlvbkNvdW50ID09IDApOworCisJLyogQ2hlY2sgb25jZSB3aGF0IGludGVycnVw dHMgYXJlIHBlbmRpbmcgKi8KKwlpbnRlcnJ1cHRzVG9Qcm9jZXNzID0KKwkJcGdfYXRvbWlj X3JlYWRfdTY0KE15UGVuZGluZ0ludGVycnVwdHMpICYgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFz azsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3Rob2YoaW50ZXJydXB0X2hhbmRsZXJz KTsgaSsrKQorCXsKKwkJaWYgKChpbnRlcnJ1cHRzVG9Qcm9jZXNzICYgVUlOVDY0X0JJVChp KSkgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIENsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9y ZSogY2FsbGluZyB0aGUgaGFuZGxlciBmdW5jdGlvbiwgc28KKwkJCSAqIHRoYXQgaWYgdGhl IGludGVycnVwdCBpcyByZWNlaXZlZCBhZ2FpbiB3aGlsZSB0aGUgaGFuZGxlcgorCQkJICog ZnVuY3Rpb24gaXMgYmVpbmcgZXhlY3V0ZWQsIHdlIHdvbid0IG1pc3MgaXQuCisJCQkgKgor CQkJICogRm9yIHNpbWlsYXIgcmVhc29ucywgd2UgYWxzbyBjbGVhciB0aGUgZmxhZ3Mgb25l IGJ5IG9uZSBldmVuIGlmCisJCQkgKiBtdWx0aXBsZSBpbnRlcnJ1cHRzIGFyZSBwZW5kaW5n LiAgT3RoZXJ3aXNlIGlmIG9uZSBvZiB0aGUKKwkJCSAqIGludGVycnVwdCBoYW5kbGVycyBi YWlsIG91dCB3aXRoIGFuIEVSUk9SLCB3ZSB3b3VsZCBoYXZlCisJCQkgKiBhbHJlYWR5IGNs ZWFyZWQgdGhlIG90aGVyIGJpdHMsIGFuZCB3b3VsZCBtaXNzIHByb2Nlc3NpbmcgdGhlbS4K KwkJCSAqLworCQkJQ2xlYXJJbnRlcnJ1cHQoVUlOVDY0X0JJVChpKSk7CisKKwkJCS8qIENh bGwgdGhlIGhhbmRsZXIgZnVuY3Rpb24gKi8KKwkJCSgqaW50ZXJydXB0X2hhbmRsZXJzW2ld KSAoKTsKKwkJfQorCX0KK30KKworLyoKKyAqIFN3aXRjaCB0byBsb2NhbCBpbnRlcnJ1cHRz LiAgT3RoZXIgYmFja2VuZHMgY2FuJ3Qgc2VuZCBpbnRlcnJ1cHRzIHRvIHRoaXMKKyAqIG9u ZS4gIE9ubHkgUmFpc2VJbnRlcnJ1cHQoKSBjYW4gc2V0IHRoZW0sIGZyb20gaW5zaWRlIHRo aXMgcHJvY2Vzcy4KKyAqLwordm9pZAorU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCkK K3sKKwlpZiAoTXlQZW5kaW5nSW50ZXJydXB0cyA9PSAmTG9jYWxQZW5kaW5nSW50ZXJydXB0 cykKKwkJcmV0dXJuOworCisJTXlQZW5kaW5nSW50ZXJydXB0cyA9ICZMb2NhbFBlbmRpbmdJ bnRlcnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJz IHRoYXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5l dyBNeVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9i YXJyaWVyKCk7CisKKwkvKgorCSAqIE1peCBpbiB0aGUgaW50ZXJydXB0cyB0aGF0IHdlIGhh dmUgcmVjZWl2ZWQgYWxyZWFkeSBpbiBvdXIgc2hhcmVkCisJICogaW50ZXJydXB0IHZlY3Rv ciwgd2hpbGUgYXRvbWljYWxseSBjbGVhcmluZyBpdC4gIE90aGVyIGJhY2tlbmRzIG1heQor CSAqIGNvbnRpbnVlIHRvIHNldCBiaXRzIGluIGl0IGFmdGVyIHRoaXMgcG9pbnQsIGJ1dCB3 ZSd2ZSBhdG9taWNhbGx5CisJICogdHJhbnNmZXJyZWQgdGhlIGV4aXN0aW5nIGJpdHMgdG8g b3VyIGxvY2FsIHZlY3RvciBzbyB3ZSB3b24ndCBnZXQKKwkgKiBkdXBsaWNhdGVkIGludGVy cnVwdHMgbGF0ZXIgaWYgd2Ugc3dpdGNoIGJhY2suCisJICovCisJcGdfYXRvbWljX2ZldGNo X29yX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdfYXRvbWljX2V4Y2hh bmdlX3U2NCgmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgMCkpOworfQorCisvKgorICog U3dpdGNoIHRvIHNoYXJlZCBtZW1vcnkgaW50ZXJydXB0cy4gIE90aGVyIGJhY2tlbmRzIGNh biBzZW5kIGludGVycnVwdHMgdG8KKyAqIHRoaXMgb25lIGlmIHRoZXkga25vdyBpdHMgUHJv Y051bWJlciwgYW5kIHdlJ2xsIG5vdyBzZWUgYW55IHRoYXQgd2UgbWlzc2VkLgorICovCit2 b2lkCitTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCkKK3sKKwlpZiAoTXlQZW5kaW5n SW50ZXJydXB0cyA9PSAmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cykKKwkJcmV0dXJuOwor CisJTXlQZW5kaW5nSW50ZXJydXB0cyA9ICZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzOwor CisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBS YWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5ldyBNeVBlbmRpbmdJ bnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9iYXJyaWVyKCk7CisK KwkvKiBNaXggaW4gYW55IHVuaGFuZGxlZCBiaXRzIGZyb20gTG9jYWxQZW5kaW5nSW50ZXJy dXB0cy4gKi8KKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTY0KE15UGVuZGluZ0ludGVycnVwdHMs CisJCQkJCQkgICBwZ19hdG9taWNfZXhjaGFuZ2VfdTY0KCZMb2NhbFBlbmRpbmdJbnRlcnJ1 cHRzLCAwKSk7Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZsYWcgaW4gdGhpcyBi YWNrZW5kLgorICoKKyAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRs ZXJzLCBzbyBuZWVkcyB0byBiZSBhc3luYy1zaWduYWwKKyAqIHNhZmUhCisgKi8KK3ZvaWQK K1JhaXNlSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwl1aW50 NjQJCW9sZF9wZW5kaW5nOworCisJb2xkX3BlbmRpbmcgPSBwZ19hdG9taWNfZmV0Y2hfb3Jf dTY0KE15UGVuZGluZ0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOworCisJLyoKKwkgKiBJ ZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3YWl0aW5nIGZvciBhbiBpbnRl cnJ1cHQgdG8gYXJyaXZlLAorCSAqIGFuZCB0aGUgaW50ZXJydXB0IHdhc24ndCBhbHJlYWR5 IHBlbmRpbmcsIHdha2UgaXQgdXAuCisJICovCisJaWYgKChvbGRfcGVuZGluZyAmIChpbnRl cnJ1cHRNYXNrIHwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpID09IFNMRUVQSU5HX09OX0lO VEVSUlVQVFMpCisJCVdha2V1cE15UHJvYygpOworfQorCisvKgorICogU2V0IGFuIGludGVy cnVwdCBmbGFnIGluIGFub3RoZXIgYmFja2VuZC4KKyAqCisgKiBOb3RlOiBUaGlzIGNhbiBh bHNvIGJlIGNhbGxlZCBmcm9tIHRoZSBwb3N0bWFzdGVyLCBzbyBiZSBjYXJlZnVsIHRvIG5v dAorICogdHJ1c3QgdGhlIGNvbnRlbnRzIG9mIHNoYXJlZCBtZW1vcnkuCisgKgorICogRklY TUU6IGl0J3MgZWFzeSB0byBhY2NpZGVudGFsbHkgc3dhcCB0aGUgb3JkZXIgb2YgdGhlIGFy Z3MuICBDb3VsZCB3ZSBoYXZlCisgKiBzdHJpY3RlciB0eXBlIGNoZWNraW5nPworICovCit2 b2lkCitTZW5kSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaywgUHJvY051 bWJlciBwZ3Byb2NubykKK3sKKwlQR1BST0MJICAgKnByb2M7CisJdWludDY0CQlvbGRfcGVu ZGluZzsKKworCUFzc2VydChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlB c3NlcnQocGdwcm9jbm8gPj0gMCk7CisJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+ YWxsUHJvY0NvdW50KTsKKworCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9j bm9dOworCW9sZF9wZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3U2NCgmcHJvYy0+cGVu ZGluZ0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOworCisJZWxvZyhERUJVRzEsICJzZW5k aW5nIGludGVycnVwdCAweDAxNiUiIFBSSXg2NCAiIHRvIHBpZCAlZCIsIGludGVycnVwdE1h c2ssIHByb2MtPnBpZCk7CisKKwkvKgorCSAqIElmIHRoZSBwcm9jZXNzIGlzIGN1cnJlbnRs eSBibG9ja2VkIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCB0byBhcnJpdmUsCisJICogYW5k IHRoZSBpbnRlcnJ1cHQgd2Fzbid0IGFscmVhZHkgcGVuZGluZywgd2FrZSBpdCB1cC4KKwkg Ki8KKwlpZiAoKG9sZF9wZW5kaW5nICYgKGludGVycnVwdE1hc2sgfCBTTEVFUElOR19PTl9J TlRFUlJVUFRTKSkgPT0gU0xFRVBJTkdfT05fSU5URVJSVVBUUykKKwkJV2FrZXVwT3RoZXJQ cm9jKHByb2MpOworfQorCit2b2lkCitJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lk KQoreworCWludAkJCWludGVycnVwdF9wb3MgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwor CisJQXNzZXJ0KEludGVycnVwdFdhaXRTZXQgPT0gTlVMTCk7CisKKwkvKiBTZXQgdXAgdGhl IFdhaXRFdmVudFNldCB1c2VkIGJ5IFdhaXRJbnRlcnJ1cHQoKS4gKi8KKwlJbnRlcnJ1cHRX YWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIDIpOworCWludGVycnVwdF9wb3Mg PSBBZGRXYWl0RXZlbnRUb1NldChJbnRlcnJ1cHRXYWl0U2V0LCBXTF9JTlRFUlJVUFQsIFBH SU5WQUxJRF9TT0NLRVQsCisJCQkJCQkJCQkgIDAsIE5VTEwpOworCWlmIChJc1VuZGVyUG9z dG1hc3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoSW50ZXJydXB0V2FpdFNldCwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgUEdJTlZBTElEX1NPQ0tFVCwgMCwgTlVMTCk7CisK KwlBc3NlcnQoaW50ZXJydXB0X3BvcyA9PSBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9z KTsKK30KKworLyoKKyAqIFdhaXQgZm9yIGFueSBvZiB0aGUgaW50ZXJydXB0cyBpbiBpbnRl cnJ1cHRNYXNrIHRvIGJlIHNldCwgb3IgZm9yCisgKiBwb3N0bWFzdGVyIGRlYXRoLCBvciB1 bnRpbCB0aW1lb3V0IGlzIGV4Y2VlZGVkLiAnd2FrZUV2ZW50cycgaXMgYSBiaXRtYXNrCisg KiB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMgdG8gd2FpdCBmb3IuIElm IHRoZSBpbnRlcnJ1cHQgaXMKKyAqIGFscmVhZHkgcGVuZGluZyAoYW5kIFdMX0lOVEVSUlVQ VCBpcyBnaXZlbiksIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgKiBpbW1lZGlhdGVseS4KKyAq CisgKiBUaGUgInRpbWVvdXQiIGlzIGdpdmVuIGluIG1pbGxpc2Vjb25kcy4gSXQgbXVzdCBi ZSA+PSAwIGlmIFdMX1RJTUVPVVQgZmxhZworICogaXMgZ2l2ZW4uICBBbHRob3VnaCBpdCBp cyBkZWNsYXJlZCBhcyAibG9uZyIsIHdlIGRvbid0IGFjdHVhbGx5IHN1cHBvcnQKKyAqIHRp bWVvdXRzIGxvbmdlciB0aGFuIElOVF9NQVggbWlsbGlzZWNvbmRzLiAgTm90ZSB0aGF0IHNv bWUgZXh0cmEgb3ZlcmhlYWQKKyAqIGlzIGluY3VycmVkIHdoZW4gV0xfVElNRU9VVCBpcyBn aXZlbiwgc28gYXZvaWQgdXNpbmcgYSB0aW1lb3V0IGlmIHBvc3NpYmxlLgorICoKKyAqIFJl dHVybnMgYml0IG1hc2sgaW5kaWNhdGluZyB3aGljaCBjb25kaXRpb24ocykgY2F1c2VkIHRo ZSB3YWtlLXVwLiBOb3RlCisgKiB0aGF0IGlmIG11bHRpcGxlIHdha2UtdXAgY29uZGl0aW9u cyBhcmUgdHJ1ZSwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQKKyAqIHdlIHJldHVybiBh bGwgb2YgdGhlbSBpbiBvbmUgY2FsbCwgYnV0IHdlIHdpbGwgcmV0dXJuIGF0IGxlYXN0IG9u ZS4KKyAqLworaW50CitXYWl0SW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFz aywgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKKwkJCSAgdWludDMyIHdhaXRfZXZl bnRfaW5mbykKK3sKKwlXYWl0RXZlbnQJZXZlbnQ7CisKKwkvKiBQb3N0bWFzdGVyLW1hbmFn ZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIHNvbWVob3cuICovCisJ QXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fAorCQkgICAod2FrZUV2ZW50cyAmIFdMX0VY SVRfT05fUE1fREVBVEgpIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9E RUFUSCkpOworCisJLyoKKwkgKiBTb21lIGNhbGxlcnMgbWF5IGhhdmUgYW4gaW50ZXJydXB0 IG1hc2sgZGlmZmVyZW50IGZyb20gbGFzdCB0aW1lLCBvciBubworCSAqIGludGVycnVwdCBt YXNrIGF0IGFsbCwgb3Igd2FudCB0byBoYW5kbGUgcG9zdG1hc3RlciBkZWF0aCBkaWZmZXJl bnRseS4KKwkgKiBJdCdzIGNoZWFwIHRvIGFzc2lnbiB0aG9zZSwgc28ganVzdCBkbyBpdCBl dmVyeSB0aW1lLgorCSAqLworCWlmICghKHdha2VFdmVudHMgJiBXTF9JTlRFUlJVUFQpKQor CQlpbnRlcnJ1cHRNYXNrID0gMDsKKwlNb2RpZnlXYWl0RXZlbnQoSW50ZXJydXB0V2FpdFNl dCwgSW50ZXJydXB0V2FpdFNldEludGVycnVwdFBvcywKKwkJCQkJV0xfSU5URVJSVVBULCBp bnRlcnJ1cHRNYXNrKTsKKworCU1vZGlmeVdhaXRFdmVudChJbnRlcnJ1cHRXYWl0U2V0LCBJ bnRlcnJ1cHRXYWl0U2V0UG9zdG1hc3RlckRlYXRoUG9zLAorCQkJCQkod2FrZUV2ZW50cyAm IChXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCkpLAorCQkJCQkw KTsKKworCWlmIChXYWl0RXZlbnRTZXRXYWl0KEludGVycnVwdFdhaXRTZXQsCisJCQkJCQkg KHdha2VFdmVudHMgJiBXTF9USU1FT1VUKSA/IHRpbWVvdXQgOiAtMSwKKwkJCQkJCSAmZXZl bnQsIDEsCisJCQkJCQkgd2FpdF9ldmVudF9pbmZvKSA9PSAwKQorCQlyZXR1cm4gV0xfVElN RU9VVDsKKwllbHNlCisJCXJldHVybiBldmVudC5ldmVudHM7Cit9CisKKy8qCisgKiBMaWtl IFdhaXRJbnRlcnJ1cHQsIGJ1dCB3aXRoIGFuIGV4dHJhIHNvY2tldCBhcmd1bWVudCBmb3Ig V0xfU09DS0VUXyoKKyAqIGNvbmRpdGlvbnMuCisgKgorICogV2hlbiB3YWl0aW5nIG9uIGEg c29ja2V0LCBFT0YgYW5kIGVycm9yIGNvbmRpdGlvbnMgYWx3YXlzIGNhdXNlIHRoZSBzb2Nr ZXQKKyAqIHRvIGJlIHJlcG9ydGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxlL2Nvbm5lY3RlZCwg c28gdGhhdCB0aGUgY2FsbGVyIGNhbiBkZWFsCisgKiB3aXRoIHRoZSBjb25kaXRpb24uCisg KgorICogd2FrZUV2ZW50cyBtdXN0IGluY2x1ZGUgZWl0aGVyIFdMX0VYSVRfT05fUE1fREVB VEggZm9yIGF1dG9tYXRpYyBleGl0CisgKiBpZiB0aGUgcG9zdG1hc3RlciBkaWVzIG9yIFdM X1BPU1RNQVNURVJfREVBVEggZm9yIGEgZmxhZyBzZXQgaW4gdGhlCisgKiByZXR1cm4gdmFs dWUgaWYgdGhlIHBvc3RtYXN0ZXIgZGllcy4gIFRoZSBsYXR0ZXIgaXMgdXNlZnVsIGZvciBy YXJlIGNhc2VzCisgKiB3aGVyZSBzb21lIGJlaGF2aW9yIG90aGVyIHRoYW4gaW1tZWRpYXRl IGV4aXQgaXMgbmVlZGVkLgorICoKKyAqIE5COiBUaGVzZSBkYXlzIHRoaXMgaXMganVzdCBh IHdyYXBwZXIgYXJvdW5kIHRoZSBXYWl0RXZlbnRTZXQgQVBJLiBXaGVuCisgKiB1c2luZyBh biBpbnRlcnJ1cHQgdmVyeSBmcmVxdWVudGx5LCBjb25zaWRlciBjcmVhdGluZyBhIGxvbmdl ciBsaXZpbmcKKyAqIFdhaXRFdmVudFNldCBpbnN0ZWFkOyB0aGF0J3MgbW9yZSBlZmZpY2ll bnQuCisgKi8KK2ludAorV2FpdEludGVycnVwdE9yU29ja2V0KEludGVycnVwdE1hc2sgaW50 ZXJydXB0TWFzaywgaW50IHdha2VFdmVudHMsIHBnc29ja2V0IHNvY2ssCisJCQkJCSAgbG9u ZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQoreworCWludAkJCXJldDsKKwlp bnQJCQlyYzsKKwlXYWl0RXZlbnQJZXZlbnQ7CisJV2FpdEV2ZW50U2V0ICpzZXQgPSBDcmVh dGVXYWl0RXZlbnRTZXQoQ3VycmVudFJlc291cmNlT3duZXIsIDMpOworCisJaWYgKHdha2VF dmVudHMgJiBXTF9USU1FT1VUKQorCQlBc3NlcnQodGltZW91dCA+PSAwKTsKKwllbHNlCisJ CXRpbWVvdXQgPSAtMTsKKworCWlmICh3YWtlRXZlbnRzICYgV0xfSU5URVJSVVBUKQorCQlB ZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwK KwkJCQkJCSAgaW50ZXJydXB0TWFzaywgTlVMTCk7CisKKwkvKiBQb3N0bWFzdGVyLW1hbmFn ZWQgY2FsbGVycyBtdXN0IGhhbmRsZSBwb3N0bWFzdGVyIGRlYXRoIHNvbWVob3cuICovCisJ QXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3RlciB8fAorCQkgICAod2FrZUV2ZW50cyAmIFdMX0VY SVRfT05fUE1fREVBVEgpIHx8CisJCSAgICh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9E RUFUSCkpOworCisJaWYgKCh3YWtlRXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkgJiYg SXNVbmRlclBvc3RtYXN0ZXIpCisJCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfUE9TVE1B U1RFUl9ERUFUSCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJCSAgMCwgTlVMTCk7CisKKwlp ZiAoKHdha2VFdmVudHMgJiBXTF9FWElUX09OX1BNX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1h c3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9FWElUX09OX1BNX0RFQVRILCBQ R0lOVkFMSURfU09DS0VULAorCQkJCQkJICAwLCBOVUxMKTsKKworCWlmICh3YWtlRXZlbnRz ICYgV0xfU09DS0VUX01BU0spCisJeworCQlpbnQJCQlldjsKKworCQlldiA9IHdha2VFdmVu dHMgJiBXTF9TT0NLRVRfTUFTSzsKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBldiwgc29j aywgMCwgTlVMTCk7CisJfQorCisJcmMgPSBXYWl0RXZlbnRTZXRXYWl0KHNldCwgdGltZW91 dCwgJmV2ZW50LCAxLCB3YWl0X2V2ZW50X2luZm8pOworCWlmIChyYyA9PSAwKQorCQlyZXQg PSBXTF9USU1FT1VUOworCWVsc2UKKwl7CisJCXJldCA9IGV2ZW50LmV2ZW50cyAmIChXTF9J TlRFUlJVUFQgfAorCQkJCQkJCSAgV0xfUE9TVE1BU1RFUl9ERUFUSCB8CisJCQkJCQkJICBX TF9TT0NLRVRfTUFTSyk7CisJfQorCisJRnJlZVdhaXRFdmVudFNldChzZXQpOworCisJcmV0 dXJuIHJldDsKK30KKworLyoKKyAqIFRoaXMgaXMgdXNlZCBhcyB0aGUgSU5URVJSVVBUX1RF Uk1JTkFURSBoYW5kbGVyIGluIHNvbWUgYXV4IHByb2Nlc3NlcyB0aGF0CisgKiB3YW50IHRv IGp1c3QgZXhpdCBpbW1lZGlhdGVseS4KKyAqLwordm9pZAorUHJvY2Vzc0F1eFByb2Nlc3NT aHV0ZG93bkludGVycnVwdCh2b2lkKQoreworCXByb2NfZXhpdCgwKTsKK30KKworLyogUmVz ZXJ2ZSBhbiBpbnRlcnJ1cHQgYml0IGZvciB1c2UgaW4gYW4gZXh0ZW5zaW9uICovCitJbnRl cnJ1cHRNYXNrCitSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRN YXNrIHJlc3VsdDsKKworCWlmIChuZXh0QWRkaW5JbnRlcnJ1cHRCaXQgPT0gRU5EX0FERElO X0lOVEVSUlVQVFMpCisJCWVsb2coRVJST1IsICJvdXQgb2YgYWRkaW4gaW50ZXJydXB0IGJp dHMiKTsKKworCXJlc3VsdCA9IFVJTlQ2NF9CSVQobmV4dEFkZGluSW50ZXJydXB0Qml0KTsK KwluZXh0QWRkaW5JbnRlcnJ1cHRCaXQrKzsKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvaXBjL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvaXBjL21l c29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZjY5 OGJkMGM2OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2lwYy9tZXNvbi5idWls ZApAQCAtMCwwICsxLDYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisg ICdpbnRlcnJ1cHQuYycsCisgICdzaWduYWxfaGFuZGxlcnMuYycsCispCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9pcGMvc2lnbmFsX2hhbmRsZXJzLmMgYi9zcmMvYmFja2VuZC9pcGMv c2lnbmFsX2hhbmRsZXJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjU4OWY3NTU2MjJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvaXBjL3Np Z25hbF9oYW5kbGVycy5jCkBAIC0wLDAgKzEsMTYwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBzaWduYWxfaGFuZGxlcnMuYworICoJICBTdGFuZGFyZCBzaWduYWwgaGFu ZGxlcnMuCisgKgorICogVGhlc2UganVzdCByYWlzZSB0aGUgY29ycmVzcG9uZGluZyBJTlRF UlJVUFRfKiBmbGFnczoKKyAqCisgKiBTSUdIVVAgLT4gIHJlcXVlc3QgY29uZmlnIHJlbG9h ZAorICogU0lHSU5UID09IHF1ZXJ5IGNhbmNlbAorICogU0lHVEVSTSA9PSBncmFjZWZ1bCB0 ZXJtaW5hdGUgb2YgdGhlIHByb2Nlc3MKKyAqIFNJR1FVSVQgPT0gZXhpdCBpbW1lZGlhdGVs eSAoY2F1c2VzIGNyYXNoIHJlc3RhcnQpCisgKgorICogWFhYOiBXZSBzaG91bGQgbm90IHNl bmQgc2lnbmFscyBkaXJlY3RseSBiZXR3ZWVuIHByb2Nlc3NlcyBhbnltb3JlLiBVc2UKKyAq IFNlbmRJbnRlcnJ1cHQgaW5zdGVhZC4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL2lwYy9zaWduYWxfaGFuZGxlcnMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisK KyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5k bGVycy5oIgorI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCisKKy8qCisgKiBTZXQgdGhl IHN0YW5kYXJkIHNpZ25hbCBoYW5kbGVycyBzdWl0YWJsZSBmb3IgbW9zdCBwb3N0bWFzdGVy IGNoaWxkCisgKiBwcm9jZXNzZXMuCisgKgorICogTm90ZTogdGhpcyBkb2Vzbid0IHVuYmxv Y2sgdGhlIHNpZ25hbHMgeWV0LiBZb3UgY2FuIG1ha2UgYWRkaXRpb25hbAorICogcHFzaWdu YWwoKSBjYWxscyB0byBtb2RpZnkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYmVmb3JlIHVuYmxv Y2tpbmcuCisgKi8KK3ZvaWQKK1NldFBvc3RtYXN0ZXJDaGlsZFNpZ25hbEhhbmRsZXJzKHZv aWQpCit7CisJLyotLS0tLS0tLS0tCisJICogVGhlc2UgcmFpc2UgdGhlIGNvcnJlc3BvbmRp bmcgaW50ZXJydXB0cyBpbiB0aGUgcHJvY2VzczoKKwkgKgorCSAqIFNJR0hVUCAtPiBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRAorCSAqIFNJR0lOVCAtPiBJTlRFUlJVUFRfUVVFUllfQ0FO Q0VMCisJICogU0lHVEVSTSAtPiBJTlRFUlJVUFRfVEVSTUlOQVRFCisJICoKKwkgKiBUaGUg cHJvY2VzcyBtYXkgaWdub3JlIHRoZSBpbnRlcnJ1cHRzIHRoYXQgdGhlc2UgcmFpc2UsIGUu ZyBpZiBxdWVyeQorCSAqIGNhbmNlbGxhdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gIEJ1dCB0 aGVyZSdzIG5vIGhhcm0gaW4gaGF2aW5nIHRoZQorCSAqIHNpZ25hbCBoYW5kbGVycyBpbiBw bGFjZSBhbnl3YXkuCisJICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9y Q29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JRdWVy eUNhbmNlbCk7CisJcHFzaWduYWwoU0lHVEVSTSwgU2lnbmFsSGFuZGxlckZvclNodXRkb3du UmVxdWVzdCk7CisKKwlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKKwlwcXNpZ25hbChT SUdVU1IxLCBTSUdfSUdOKTsKKworCS8qCisJICogU0lHVVNSMiBpcyBzZW50IGJ5IHBvc3Rt YXN0ZXIgdG8gc29tZSBhdXggcHJvY2Vzc2VzLCBmb3IgZGlmZmVyZW50CisJICogcHVycG9z ZXMuICBTdWNoIHByb2Nlc3NlcyBvdmVycmlkZSB0aGlzIGJlZm9yZSB1bmJsb2NraW5nIHNp Z25hbHMsIGJ1dAorCSAqIGlnbm9yZSBpdCBieSBkZWZhdWx0LgorCSAqLworCXBxc2lnbmFs KFNJR1VTUjIsIFNJR19JR04pOworCisJLyogRklYTUU6IHNob3VsZCB3ZSBkbyB0aGlzIGlu IGFsbCBwcm9jZXNzZXM/ICovCisJLyogcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlv bkhhbmRsZXIpOyAqLworCisJLyoKKwkgKiBTSUdBTFJNIGlzIHVzZWQgZm9yIHRpbWVvdXRz LCBidXQgdGhlIGhhbmRsZXIgaXMgZXN0YWJsaXNoZWQgbGF0ZXIgaW4KKwkgKiBJbml0aWFs aXplVGltZW91dHMoKQorCSAqLworCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOworCisJ LyogU0lHVVJHIGlzIGhhbmRsZWQgaW4gd2FpdGV2ZW50c2V0LmMgKi8KKworCS8qCisJICog UmVzZXQgc2lnbmFscyB0aGF0IGFyZSB1c2VkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBieSBj aGlsZCBwcm9jZXNzZXMuCisJICoKKwkgKiBDdXJyZW50bHkganVzdCBTSUdDSExELiAgVGhl IGhhbmRsZXJzIGZvciBvdGhlciBzaWduYWxzIGFyZSBvdmVycmlkZGVuCisJICogbGF0ZXIs IGRlcGVuZGluZyBvbiB0aGUgY2hpbGQgcHJvY2VzcyB0eXBlLgorCSAqLworCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOyAvKiBzeXN0ZW0oKSByZXF1aXJlcyB0aGlzIHRvIGJlIFNJ R19ERkwgcmF0aGVyCisJCQkJCQkJCSAqIHRoYW4gU0lHX0lHTiBvbiBzb21lIHBsYXRmb3Jt cyAqLworCisJLyoKKwkgKiBFdmVyeSBwb3N0bWFzdGVyIGNoaWxkIHByb2Nlc3MgaXMgZXhw ZWN0ZWQgdG8gcmVzcG9uZCBwcm9tcHRseSB0bworCSAqIFNJR1FVSVQgYXQgYWxsIHRpbWVz LiAgVGhlcmVmb3JlIHdlIGNlbnRyYWxseSByZW1vdmUgU0lHUVVJVCBmcm9tCisJICogQmxv Y2tTaWcgYW5kIGluc3RhbGwgYSBzdWl0YWJsZSBzaWduYWwgaGFuZGxlci4gIChDbGllbnQt ZmFjaW5nCisJICogcHJvY2Vzc2VzIG1heSBjaG9vc2UgdG8gcmVwbGFjZSB0aGlzIGRlZmF1 bHQgY2hvaWNlIG9mIGhhbmRsZXIgd2l0aAorCSAqIHF1aWNrZGllKCkuKSAgQWxsIG90aGVy IGJsb2NrYWJsZSBzaWduYWxzIHJlbWFpbiBibG9ja2VkIGZvciBub3cuCisJICovCisJcHFz aWduYWwoU0lHUVVJVCwgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdCk7CisKKwlzaWdkZWxz ZXQoJkJsb2NrU2lnLCBTSUdRVUlUKTsKKwlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJkJs b2NrU2lnLCBOVUxMKTsKK30KKworLyoKKyAqIFNpbXBsZSBzaWduYWwgaGFuZGxlciBmb3Ig dHJpZ2dlcmluZyBhIGNvbmZpZ3VyYXRpb24gcmVsb2FkLgorICoKKyAqIE5vcm1hbGx5LCB0 aGlzIGhhbmRsZXIgd291bGQgYmUgdXNlZCBmb3IgU0lHSFVQLiBUaGUgaWRlYSBpcyB0aGF0 IGNvZGUKKyAqIHdoaWNoIHVzZXMgaXQgd291bGQgYXJyYW5nZSB0byBjaGVjayB0aGUgSU5U RVJSVVBUX0NPTkZJR19SRUxPQUQgaW50ZXJydXB0CisgKiBhdCBjb252ZW5pZW50IHBsYWNl cyBpbnNpZGUgbWFpbiBsb29wcy4KKyAqLwordm9pZAorU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZChTSUdOQUxfQVJHUykKK3sKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCk7Cit9CisKKy8qCisgKiBTaW1wbGUgc2lnbmFsIGhhbmRsZXIgZm9yIGV4 aXRpbmcgcXVpY2tseSBhcyBpZiBkdWUgdG8gYSBjcmFzaC4KKyAqCisgKiBOb3JtYWxseSwg dGhpcyB3b3VsZCBiZSB1c2VkIGZvciBoYW5kbGluZyBTSUdRVUlULgorICovCit2b2lkCitT aWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQoreworCS8qCisJICogV2Ug RE8gTk9UIHdhbnQgdG8gcnVuIHByb2NfZXhpdCgpIG9yIGF0ZXhpdCgpIGNhbGxiYWNrcyAt LSB3ZSdyZSBoZXJlCisJICogYmVjYXVzZSBzaGFyZWQgbWVtb3J5IG1heSBiZSBjb3JydXB0 ZWQsIHNvIHdlIGRvbid0IHdhbnQgdG8gdHJ5IHRvCisJICogY2xlYW4gdXAgb3VyIHRyYW5z YWN0aW9uLiAgSnVzdCBuYWlsIHRoZSB3aW5kb3dzIHNodXQgYW5kIGdldCBvdXQgb2YKKwkg KiB0b3duLiAgVGhlIGNhbGxiYWNrcyB3b3VsZG4ndCBiZSBzYWZlIHRvIHJ1biBmcm9tIGEg c2lnbmFsIGhhbmRsZXIsCisJICogYW55d2F5LgorCSAqCisJICogTm90ZSB3ZSBkbyBfZXhp dCgyKSBub3QgX2V4aXQoMCkuICBUaGlzIGlzIHRvIGZvcmNlIHRoZSBwb3N0bWFzdGVyIGlu dG8KKwkgKiBhIHN5c3RlbSByZXNldCBjeWNsZSBpZiBzb21lb25lIHNlbmRzIGEgbWFudWFs IFNJR1FVSVQgdG8gYSByYW5kb20KKwkgKiBiYWNrZW5kLiAgVGhpcyBpcyBuZWNlc3Nhcnkg cHJlY2lzZWx5IGJlY2F1c2Ugd2UgZG9uJ3QgY2xlYW4gdXAgb3VyCisJICogc2hhcmVkIG1l bW9yeSBzdGF0ZS4gIChUaGUgImRlYWQgbWFuIHN3aXRjaCIgbWVjaGFuaXNtIGluIHBtc2ln bmFsLmMKKwkgKiBzaG91bGQgZW5zdXJlIHRoZSBwb3N0bWFzdGVyIHNlZXMgdGhpcyBhcyBh IGNyYXNoLCB0b28sIGJ1dCBubyBoYXJtIGluCisJICogYmVpbmcgZG91Ymx5IHN1cmUuKQor CSAqLworCV9leGl0KDIpOworfQorCisvKgorICogU2ltcGxlIHNpZ25hbCBoYW5kbGVyIGZv ciB0cmlnZ2VyaW5nIGEgbG9uZy1ydW5uaW5nIHByb2Nlc3MgdG8gc2h1dCBkb3duCisgKiBh bmQgZXhpdC4KKyAqCisgKiBJbiBtb3N0IHByb2Nlc3NlcywgdGhpcyBoYW5kbGVyIGlzIHVz ZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKKyAqIG90aGVyIHNpZ25h bHMuCisgKi8KK3ZvaWQKK1NpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QoU0lHTkFM X0FSR1MpCit7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFURSk7Cit9CisK Ky8qCisgKiBRdWVyeS1jYW5jZWwgc2lnbmFsOiBhYm9ydCBjdXJyZW50IHRyYW5zYWN0aW9u IGF0IHNvb25lc3QgY29udmVuaWVudCB0aW1lCisgKi8KK3ZvaWQKK1NpZ25hbEhhbmRsZXJG b3JRdWVyeUNhbmNlbChTSUdOQUxfQVJHUykKK3sKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfUVVFUllfQ0FOQ0VMKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1 dGguYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwppbmRleCBlMDRhYTJlNjhlZC4uZjhm YmRkMDkwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9hdXRoLmMKQEAgLTE2NzMsOCArMTY3Myw5IEBAIGludGVycHJl dF9pZGVudF9yZXNwb25zZShjb25zdCBjaGFyICppZGVudF9yZXNwb25zZSwKICAqCW93bnMg dGhlIHRjcCBjb25uZWN0aW9uIHRvICJsb2NhbF9hZGRyIgogICoJSWYgdGhlIHVzZXJuYW1l IGlzIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQsIGNoZWNrIHRoZSB1c2VybWFwLgogICoKLSAq CVhYWDogVXNpbmcgV2FpdExhdGNoT3JTb2NrZXQoKSBhbmQgZG9pbmcgYSBDSEVDS19GT1Jf SU5URVJSVVBUUygpIGlmIHRoZQotICoJbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRo ZSByZXNwb25zaXZlbmVzcyB0byB0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgorICoJWFhYOiBV c2luZyBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSBhbmQgZG9pbmcgYSBDSEVDS19GT1JfSU5U RVJSVVBUUygpCisgKglpZiB0aGUgaW50ZXJydXB0IHdhcyBwZW5kaW5nIHdvdWxkIGltcHJv dmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvCisgKgl0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgog ICovCiBzdGF0aWMgaW50CiBpZGVudF9pbmV0KFBvcnQgKnBvcnQpCkBAIC0zMTA4LDggKzMx MDksOCBAQCBQZXJmb3JtUmFkaXVzVHJhbnNhY3Rpb24oY29uc3QgY2hhciAqc2VydmVyLCBj b25zdCBjaGFyICpzZWNyZXQsIGNvbnN0IGNoYXIgKnBvcgogCSAqIHBhY2tldHMgdG8gb3Vy IHBvcnQgdGh1cyBjYXVzaW5nIHVzIHRvIHJldHJ5IGluIGEgbG9vcCBhbmQgbmV2ZXIgdGlt ZQogCSAqIG91dC4KIAkgKgotCSAqIFhYWDogVXNpbmcgV2FpdExhdGNoT3JTb2NrZXQoKSBh bmQgZG9pbmcgYSBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlmCi0JICogdGhlIGxhdGNoIHdh cyBzZXQgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KKwkgKiBYWFg6IFVz aW5nIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkKKwkgKiBpZiB0aGUgaW50ZXJydXB0IHdhcyBwZW5kaW5nIHdvdWxkIGltcHJv dmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvCiAJICogdGltZW91dHMvY2FuY2VsbGF0aW9ucy4K IAkgKi8KIAlnZXR0aW1lb2ZkYXkoJmVuZHRpbWUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jIGIvc3JjL2JhY2tlbmQvbGlicHEv YmUtc2VjdXJlLWdzc2FwaS5jCmluZGV4IGRmN2RjNzliODI3Li4xYTYwY2E4Zjc4YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWdzc2FwaS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYwpAQCAtMTUsNiArMTUsNyBAQAog CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAibGlicHEvYXV0aC5oIgogI2luY2x1ZGUgImxpYnBxL2JlLWdzc2FwaS1jb21t b24uaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgpAQCAtNDIxLDcgKzQyMiw3IEBAIGJl X2dzc2FwaV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAogLyoK ICAqIFJlYWQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgb2ZmIHRoZSB3aXJlLCB3 YWl0aW5nIHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4K KyAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4KICAqCiAgKiBS ZXN1bHRzIGFyZSByZWFkIGludG8gUHFHU1NSZWN2QnVmZmVyLgogICoKQEAgLTQ1Nyw5ICs0 NTgsOCBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAJCSAqLwog CQlpZiAocmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0KE5VTEwsCi0JCQkJ CQkJICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJ CSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOworCQkJV2Fp dEludGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0VYSVRfT05f UE1fREVBVEgsCisJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BF Tl9TRVJWRVIpOwogCiAJCQkvKgogCQkJICogSWYgd2UgZ290IGJhY2sgemVybyBieXRlcywg YW5kIHRoZW4gd2FpdGVkIG9uIHRoZSBzb2NrZXQgdG8gYmUKQEAgLTQ5Niw3ICs0OTYsNyBA QCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAgKgogICogTm90ZSB0 aGF0IHVubGlrZSB0aGUgYmVfZ3NzYXBpX3JlYWQvYmVfZ3NzYXBpX3dyaXRlIGZ1bmN0aW9u cywgdGhpcwogICogZnVuY3Rpb24gV0lMTCBibG9jayBvbiB0aGUgc29ja2V0IHRvIGJlIHJl YWR5IGZvciByZWFkL3dyaXRlICh1c2luZwotICogV2FpdExhdGNoT3JTb2NrZXQpIGFzIGFw cHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJCisgKiBXYWl0SW50ZXJy dXB0T3JTb2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NT QVBJCiAgKiBzZXNzaW9uLgogICovCiBzc2l6ZV90CkBAIC02NzgsOSArNjc4LDggQEAgc2Vj dXJlX29wZW5fZ3NzYXBpKFBvcnQgKnBvcnQpCiAJCQkJLyogV2FpdCBhbmQgcmV0cnkgaWYg d2UgY291bGRuJ3Qgd3JpdGUgeWV0ICovCiAJCQkJaWYgKHJldCA8PSAwKQogCQkJCXsKLQkJ CQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkJCSAgV0xfU09DS0VUX1dSSVRF QUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgIHBvcnQtPnNvY2ssIDAs IFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCQkJV2FpdEludGVycnVwdE9yU29j a2V0KDAsIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJ CQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIpOwog CQkJCQljb250aW51ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3Bl bnNzbC5jCmluZGV4IDRkYTZhYzIyZmY5Li4zYTBmZjk1NjgyMyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0yOCwxMSArMjgsMTIgQEAKICNpbmNsdWRl IDxhcnBhL2luZXQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInV0aWxzL2J1 aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKIApAQCAtNTMzLDggKzUzNCw4IEBAIGFsb29wOgogCQkJCWVsc2UKIAkJCQkJ d2FpdGZvciA9IFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRIOwog Ci0JCQkJKHZvaWQpIFdhaXRMYXRjaE9yU29ja2V0KE5VTEwsIHdhaXRmb3IsIHBvcnQtPnNv Y2ssIDAsCi0JCQkJCQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVSKTsKKwkJCQko dm9pZCkgV2FpdEludGVycnVwdE9yU29ja2V0KDAsIHdhaXRmb3IsIHBvcnQtPnNvY2ssIDAs CisJCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1NTTF9PUEVOX1NFUlZFUik7CiAJCQkJZ290byBh bG9vcDsKIAkJCWNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CiAJCQkJaWYgKHIgPCAwICYmIGVy cm5vICE9IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyBi L3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jCmluZGV4IDNmOTI1N2FiMDEwLi44YWJh ZmE2NDliNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKKysr IGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKQEAgLTI3LDggKzI3LDggQEAKICNp bmNsdWRlIDxuZXRpbmV0L3RjcC5oPgogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogCisjaW5j bHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCi0jaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1 ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZl bnQuaCIKQEAgLTE3NCw2ICsxNzQsOSBAQCBzZWN1cmVfY2xvc2UoUG9ydCAqcG9ydCkKIAog LyoKICAqCVJlYWQgZGF0YSBmcm9tIGEgc2VjdXJlIGNvbm5lY3Rpb24uCisgKgorICogSW4g YmxvY2tpbmcgbW9kZSwgd2lsbCBwcm9jZXNzIGFueSBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZl IHdoaWxlIHdlJ3JlCisgKiB3YWl0aW5nLgogICovCiBzc2l6ZV90CiBzZWN1cmVfcmVhZChQ b3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCkBAIC0xODEsOSArMTg0LDYgQEAg c2VjdXJlX3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQogCXNzaXpl X3QJCW47CiAJaW50CQkJd2FpdGZvcjsKIAotCS8qIERlYWwgd2l0aCBhbnkgYWxyZWFkeS1w ZW5kaW5nIGludGVycnVwdCBjb25kaXRpb24uICovCi0JUHJvY2Vzc0NsaWVudFJlYWRJbnRl cnJ1cHQoZmFsc2UpOwotCiByZXRyeToKICNpZmRlZiBVU0VfU1NMCiAJd2FpdGZvciA9IDA7 CkBAIC0yMTMsNyArMjEzLDggQEAgcmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0J CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdh aXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0 U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0 U2V0LCBGZUJlV2FpdFNldEludGVycnVwdFBvcywgV0xfSU5URVJSVVBULCBDaGVja0Zvcklu dGVycnVwdHNNYXNrKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAv KiBubyB0aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5U X1JFQUQpOwpAQCAtMjI4LDIzICsyMjksMjIgQEAgcmV0cnk6CiAJCSAqIG5ldyBjb25uZWN0 aW9ucyBjYW4gYmUgYWNjZXB0ZWQuICBFeGl0aW5nIGNsZWFycyB0aGUgZGVjayBmb3IgYQog CQkgKiBwb3N0bWFzdGVyIHJlc3RhcnQuCiAJCSAqCi0JCSAqIChOb3RlIHRoYXQgd2Ugb25s eSBtYWtlIHRoaXMgY2hlY2sgd2hlbiB3ZSB3b3VsZCBvdGhlcndpc2Ugc2xlZXAgb24KLQkJ ICogb3VyIGxhdGNoLiAgV2UgbWlnaHQgc3RpbGwgY29udGludWUgcnVubmluZyBmb3IgYSB3 aGlsZSBpZiB0aGUKLQkJICogcG9zdG1hc3RlciBpcyBraWxsZWQgaW4gbWlkLXF1ZXJ5LCBv ciBldmVuIHRocm91Z2ggbXVsdGlwbGUgcXVlcmllcwotCQkgKiBpZiB3ZSBuZXZlciBoYXZl IHRvIHdhaXQgZm9yIHJlYWQuICBXZSBkb24ndCB3YW50IHRvIGJ1cm4gdG9vIG1hbnkKLQkJ ICogY3ljbGVzIGNoZWNraW5nIGZvciB0aGlzIHZlcnkgcmFyZSBjb25kaXRpb24sIGFuZCB0 aGlzIHNob3VsZCBjYXVzZQotCQkgKiB1cyB0byBleGl0IHF1aWNrbHkgaW4gbW9zdCBjYXNl cy4pCisJCSAqIChOb3RlIHRoYXQgd2Ugb25seSBtYWtlIHRoaXMgY2hlY2sgd2hlbiB3ZSB3 b3VsZCBvdGhlcndpc2Ugc2xlZXAKKwkJICogd2FpdGluZyBmb3IgaW50ZXJydXB0LiAgV2Ug bWlnaHQgc3RpbGwgY29udGludWUgcnVubmluZyBmb3IgYSB3aGlsZQorCQkgKiBpZiB0aGUg cG9zdG1hc3RlciBpcyBraWxsZWQgaW4gbWlkLXF1ZXJ5LCBvciBldmVuIHRocm91Z2ggbXVs dGlwbGUKKwkJICogcXVlcmllcyBpZiB3ZSBuZXZlciBoYXZlIHRvIHdhaXQgZm9yIHJlYWQu ICBXZSBkb24ndCB3YW50IHRvIGJ1cm4KKwkJICogdG9vIG1hbnkgY3ljbGVzIGNoZWNraW5n IGZvciB0aGlzIHZlcnkgcmFyZSBjb25kaXRpb24sIGFuZCB0aGlzCisJCSAqIHNob3VsZCBj YXVzZSB1cyB0byBleGl0IHF1aWNrbHkgaW4gbW9zdCBjYXNlcy4pCiAJCSAqLwogCQlpZiAo ZXZlbnQuZXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJCWVyZXBvcnQoRkFUQUws CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLAogCQkJCQkgZXJybXNn KCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIg ZXhpdCIpKSk7CiAKLQkJLyogSGFuZGxlIGludGVycnVwdC4gKi8KLQkJaWYgKGV2ZW50LmV2 ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJLyogSGFuZGxlIGludGVycnVwdHMuICovCisJCWlm IChldmVudC5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7Ci0JCQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCh0cnVlKTsKKwkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJCS8qCiAJCQkgKiBXZSdsbCByZXRyeSB0aGUgcmVh ZC4gTW9zdCBsaWtlbHkgaXQgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkKQEAgLTI1NSwxMiAr MjU1LDYgQEAgcmV0cnk6CiAJCWdvdG8gcmV0cnk7CiAJfQogCi0JLyoKLQkgKiBQcm9jZXNz IGludGVycnVwdHMgdGhhdCBoYXBwZW5lZCBkdXJpbmcgYSBzdWNjZXNzZnVsIChvciBub24t YmxvY2tpbmcsCi0JICogb3IgaGFyZC1mYWlsZWQpIHJlYWQuCi0JICovCi0JUHJvY2Vzc0Ns aWVudFJlYWRJbnRlcnJ1cHQoZmFsc2UpOwotCiAJcmV0dXJuIG47CiB9CiAKQEAgLTI4NCw3 ICsyNzgsOCBAQCBzZWN1cmVfcmF3X3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAqcHRyLCBzaXpl X3QgbGVuKQogCiAJLyoKIAkgKiBUcnkgdG8gcmVhZCBmcm9tIHRoZSBzb2NrZXQgd2l0aG91 dCBibG9ja2luZy4gSWYgaXQgc3VjY2VlZHMgd2UncmUKLQkgKiBkb25lLCBvdGhlcndpc2Ug d2UnbGwgd2FpdCBmb3IgdGhlIHNvY2tldCB1c2luZyB0aGUgbGF0Y2ggbWVjaGFuaXNtLgor CSAqIGRvbmUsIG90aGVyd2lzZSB3ZSdsbCB3YWl0IGZvciB0aGUgc29ja2V0IHVzaW5nIHRo ZSBpbnRlcnJ1cHQKKwkgKiBtZWNoYW5pc20uCiAJICovCiAjaWZkZWYgV0lOMzIKIAlwZ3dp bjMyX25vYmxvY2sgPSB0cnVlOwpAQCAtMzAwLDYgKzI5NSw5IEBAIHNlY3VyZV9yYXdfcmVh ZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAKIC8qCiAgKglXcml0ZSBk YXRhIHRvIGEgc2VjdXJlIGNvbm5lY3Rpb24uCisgKgorICogSW4gYmxvY2tpbmcgbW9kZSwg d2lsbCBwcm9jZXNzIGFueSBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZlIHdoaWxlIHdlJ3JlCisg KiB3YWl0aW5nLgogICovCiBzc2l6ZV90CiBzZWN1cmVfd3JpdGUoUG9ydCAqcG9ydCwgY29u c3Qgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQpAQCAtMzA3LDkgKzMwNSw2IEBAIHNlY3VyZV93 cml0ZShQb3J0ICpwb3J0LCBjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiAJc3NpemVf dAkJbjsKIAlpbnQJCQl3YWl0Zm9yOwogCi0JLyogRGVhbCB3aXRoIGFueSBhbHJlYWR5LXBl bmRpbmcgaW50ZXJydXB0IGNvbmRpdGlvbi4gKi8KLQlQcm9jZXNzQ2xpZW50V3JpdGVJbnRl cnJ1cHQoZmFsc2UpOwotCiByZXRyeToKIAl3YWl0Zm9yID0gMDsKICNpZmRlZiBVU0VfU1NM CkBAIC0zMzgsNyArMzMzLDggQEAgcmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0J CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdh aXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0 U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKKwkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0 U2V0LCBGZUJlV2FpdFNldEludGVycnVwdFBvcywgV0xfSU5URVJSVVBULCBDaGVja0Zvcklu dGVycnVwdHNNYXNrKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAtMSAv KiBubyB0aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRfRVZFTlRfQ0xJRU5U X1dSSVRFKTsKQEAgLTM0OSwxMSArMzQ1LDEwIEBAIHJldHJ5OgogCQkJCQkoZXJyY29kZShF UlJDT0RFX0FETUlOX1NIVVRET1dOKSwKIAkJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29u bmVjdGlvbiBkdWUgdG8gdW5leHBlY3RlZCBwb3N0bWFzdGVyIGV4aXQiKSkpOwogCi0JCS8q IEhhbmRsZSBpbnRlcnJ1cHQuICovCi0JCWlmIChldmVudC5ldmVudHMgJiBXTF9MQVRDSF9T RVQpCisJCS8qIEhhbmRsZSBpbnRlcnJ1cHRzLiAqLworCQlpZiAoZXZlbnQuZXZlbnRzICYg V0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCQkJUHJvY2Vz c0NsaWVudFdyaXRlSW50ZXJydXB0KHRydWUpOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAogCQkJLyoKIAkJCSAqIFdlJ2xsIHJldHJ5IHRoZSB3cml0ZS4gTW9zdCBsaWtlbHkg aXQgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkKQEAgLTM2NCwxMiArMzU5LDYgQEAgcmV0cnk6 CiAJCWdvdG8gcmV0cnk7CiAJfQogCi0JLyoKLQkgKiBQcm9jZXNzIGludGVycnVwdHMgdGhh dCBoYXBwZW5lZCBkdXJpbmcgYSBzdWNjZXNzZnVsIChvciBub24tYmxvY2tpbmcsCi0JICog b3IgaGFyZC1mYWlsZWQpIHdyaXRlLgotCSAqLwotCVByb2Nlc3NDbGllbnRXcml0ZUludGVy cnVwdChmYWxzZSk7Ci0KIAlyZXR1cm4gbjsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGlicHEvcHFjb21tLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYwppbmRleCA2 NTcwZjI3Mjk3Yi4uZmY0YjA0ZjllMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBx L3BxY29tbS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCkBAIC03Myw4ICs3 Myw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbW1vbi9pcC5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgotI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnQvcGdfYnN3YXAuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtMTc1 LDcgKzE3NSw3IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIHsKIAlQ b3J0CSAgICpwb3J0OwogCWludAkJCXNvY2tldF9wb3MgUEdfVVNFRF9GT1JfQVNTRVJUU19P TkxZOwotCWludAkJCWxhdGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJaW50 CQkJaW50ZXJydXB0X3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkvKiBhbGxv Y2F0ZSB0aGUgUG9ydCBzdHJ1Y3QgYW5kIGNvcHkgdGhlIENsaWVudFNvY2tldCBjb250ZW50 cyB0byBpdCAqLwogCXBvcnQgPSBwYWxsb2MwX29iamVjdChQb3J0KTsKQEAgLTI4Nyw4ICsy ODcsOCBAQCBwcV9pbml0KENsaWVudFNvY2tldCAqY2xpZW50X3NvY2spCiAKIAkvKgogCSAq IEluIGJhY2tlbmRzIChhcyBzb29uIGFzIGZvcmtlZCkgd2Ugb3BlcmF0ZSB0aGUgdW5kZXJs eWluZyBzb2NrZXQgaW4KLQkgKiBub25ibG9ja2luZyBtb2RlIGFuZCB1c2UgbGF0Y2hlcyB0 byBpbXBsZW1lbnQgYmxvY2tpbmcgc2VtYW50aWNzIGlmCi0JICogbmVlZGVkLiBUaGF0IGFs bG93cyB1cyB0byBwcm92aWRlIHNhZmVseSBpbnRlcnJ1cHRpYmxlIHJlYWRzIGFuZAorCSAq IG5vbmJsb2NraW5nIG1vZGUgYW5kIHVzZSBXYWl0RXZlbnRTZXQgdG8gaW1wbGVtZW50IGJs b2NraW5nIHNlbWFudGljcworCSAqIGlmIG5lZWRlZC4gVGhhdCBhbGxvd3MgdXMgdG8gcHJv dmlkZSBzYWZlbHkgaW50ZXJydXB0aWJsZSByZWFkcyBhbmQKIAkgKiB3cml0ZXMuCiAJICov CiAjaWZuZGVmIFdJTjMyCkBAIC0zMDYsMTggKzMwNiwxOCBAQCBwcV9pbml0KENsaWVudFNv Y2tldCAqY2xpZW50X3NvY2spCiAKIAlGZUJlV2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNl dChOVUxMLCBGZUJlV2FpdFNldE5FdmVudHMpOwogCXNvY2tldF9wb3MgPSBBZGRXYWl0RXZl bnRUb1NldChGZUJlV2FpdFNldCwgV0xfU09DS0VUX1dSSVRFQUJMRSwKLQkJCQkJCQkJICAg cG9ydC0+c29jaywgTlVMTCwgTlVMTCk7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50VG9T ZXQoRmVCZVdhaXRTZXQsIFdMX0xBVENIX1NFVCwgUEdJTlZBTElEX1NPQ0tFVCwKLQkJCQkJ CQkJICBNeUxhdGNoLCBOVUxMKTsKKwkJCQkJCQkJICAgcG9ydC0+c29jaywgMCwgTlVMTCk7 CisJaW50ZXJydXB0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9J TlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkJCQkgIENoZWNrRm9ySW50ZXJy dXB0c01hc2ssIE5VTEwpOwogCUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9Q T1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkgIE5VTEwsIE5VTEwp OworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyoKIAkgKiBUaGUgZXZlbnQgcG9zaXRpb25zIG1h dGNoIHRoZSBvcmRlciB3ZSBhZGRlZCB0aGVtLCBidXQgbGV0J3Mgc2FuaXR5CiAJICogY2hl Y2sgdGhlbSB0byBiZSBzdXJlLgogCSAqLwogCUFzc2VydChzb2NrZXRfcG9zID09IEZlQmVX YWl0U2V0U29ja2V0UG9zKTsKLQlBc3NlcnQobGF0Y2hfcG9zID09IEZlQmVXYWl0U2V0TGF0 Y2hQb3MpOworCUFzc2VydChpbnRlcnJ1cHRfcG9zID09IEZlQmVXYWl0U2V0SW50ZXJydXB0 UG9zKTsKIAogCXJldHVybiBwb3J0OwogfQpAQCAtMTQxMSw4ICsxNDExLDcgQEAgaW50ZXJu YWxfZmx1c2hfYnVmZmVyKGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90ICpzdGFydCwgc2l6ZV90 ICplbmQpCiAJCQkgKiB0aGUgY29ubmVjdGlvbi4KIAkJCSAqLwogCQkJKnN0YXJ0ID0gKmVu ZCA9IDA7Ci0JCQlDbGllbnRDb25uZWN0aW9uTG9zdCA9IDE7Ci0JCQlJbnRlcnJ1cHRQZW5k aW5nID0gMTsKKwkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElP Tl9MT1NUKTsKIAkJCXJldHVybiBFT0Y7CiAJCX0KIApAQCAtMjA2MiwyNSArMjA2MSwxNCBA QCBwcV9jaGVja19jb25uZWN0aW9uKHZvaWQpCiAJICogSXQncyBPSyB0byBtb2RpZnkgdGhl IHNvY2tldCBldmVudCBmaWx0ZXIgd2l0aG91dCByZXN0b3JpbmcsIGJlY2F1c2UKIAkgKiBh bGwgRmVCZVdhaXRTZXQgc29ja2V0IHdhaXQgc2l0ZXMgZG8gdGhlIHNhbWUuCiAJICovCi0J TW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgV0xf U09DS0VUX0NMT1NFRCwgTlVMTCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBG ZUJlV2FpdFNldFNvY2tldFBvcywgV0xfU09DS0VUX0NMT1NFRCwgMCk7CisJTW9kaWZ5V2Fp dEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldEludGVycnVwdFBvcywgV0xfSU5URVJS VVBULCAwKTsKIAotcmV0cnk6CiAJcmMgPSBXYWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0 LCAwLCBldmVudHMsIGxlbmd0aG9mKGV2ZW50cyksIDApOwogCWZvciAoaW50IGkgPSAwOyBp IDwgcmM7ICsraSkKIAl7CiAJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfU09DS0VUX0NM T1NFRCkKIAkJCXJldHVybiBmYWxzZTsKLQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9M QVRDSF9TRVQpCi0JCXsKLQkJCS8qCi0JCQkgKiBBIGxhdGNoIGV2ZW50IG1pZ2h0IGJlIHBy ZXZlbnRpbmcgb3RoZXIgZXZlbnRzIGZyb20gYmVpbmcKLQkJCSAqIHJlcG9ydGVkLiAgUmVz ZXQgaXQgYW5kIHBvbGwgYWdhaW4uICBObyBuZWVkIHRvIHJlc3RvcmUgaXQKLQkJCSAqIGJl Y2F1c2Ugbm8gY29kZSBzaG91bGQgZXhwZWN0IGxhdGNoZXMgdG8gc3Vydml2ZSBhY3Jvc3MK LQkJCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCi0JCQkgKi8KLQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7Ci0JCQlnb3RvIHJldHJ5OwotCQl9CiAJfQogCiAJcmV0dXJuIHRydWU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9zcmMvYmFja2VuZC9saWJw cS9wcW1xLmMKaW5kZXggNmU0YmJmYjVhYTEuLjBhMDI5ZWIwMmE4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5j CkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUg ImFjY2Vzcy9wYXJhbGxlbC5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNs dWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5j bHVkZSAibGlicHEvcHFtcS5oIgpAQCAtMjUsNyArMjYsNiBAQAogCiBzdGF0aWMgc2htX21x X2hhbmRsZSAqcHFfbXFfaGFuZGxlID0gTlVMTDsKIHN0YXRpYyBib29sIHBxX21xX2J1c3kg PSBmYWxzZTsKLXN0YXRpYyBwaWRfdCBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkID0gMDsK IHN0YXRpYyBQcm9jTnVtYmVyIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlciA9 IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIHN0YXRpYyB2b2lkIHBxX2NsZWFudXBfcmVkaXJl Y3RfdG9fc2htX21xKGRzbV9zZWdtZW50ICpzZWcsIERhdHVtIGFyZyk7CkBAIC03NSwxNCAr NzUsMTMgQEAgcHFfY2xlYW51cF9yZWRpcmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNl ZywgRGF0dW0gYXJnKQogfQogCiAvKgotICogQXJyYW5nZSB0byBTZW5kUHJvY1NpZ25hbCgp IHRvIHRoZSBwYXJhbGxlbCBsZWFkZXIgZWFjaCB0aW1lIHdlIHRyYW5zbWl0CisgKiBBcnJh bmdlIHRvIHNlbmQgYW4gaW50ZXJydXB0IHRvIHRoZSBwYXJhbGxlbCBsZWFkZXIgZWFjaCB0 aW1lIHdlIHRyYW5zbWl0CiAgKiBtZXNzYWdlIGRhdGEgdmlhIHRoZSBzaG1fbXEuCiAgKi8K IHZvaWQKLXBxX3NldF9wYXJhbGxlbF9sZWFkZXIocGlkX3QgcGlkLCBQcm9jTnVtYmVyIHBy b2NOdW1iZXIpCitwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKFByb2NOdW1iZXIgcHJvY051bWJl cikKIHsKIAlBc3NlcnQoUHFDb21tTWV0aG9kcyA9PSAmUHFDb21tTXFNZXRob2RzKTsKLQlw cV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkID0gcGlkOwogCXBxX21xX3BhcmFsbGVsX2xlYWRl cl9wcm9jX251bWJlciA9IHByb2NOdW1iZXI7CiB9CiAKQEAgLTE2OSwyNyArMTY4LDE5IEBA IG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVu KQogCQlBc3NlcnQocHFfbXFfaGFuZGxlICE9IE5VTEwpOwogCQlyZXN1bHQgPSBzaG1fbXFf c2VuZHYocHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCi0JCWlmIChwcV9t cV9wYXJhbGxlbF9sZWFkZXJfcGlkICE9IDApCisJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJewotCQkJaWYgKElz TG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIoKSkKLQkJCQlTZW5kUHJvY1NpZ25hbChwcV9t cV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQ TFlfTUVTU0FHRSwKLQkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJvY19udW1i ZXIpOwotCQkJZWxzZQotCQkJewotCQkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOwot CQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkJ ICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVs X2xlYWRlcl9wcm9jX251bWJlcik7Ci0JCQl9CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcHJv Y19udW1iZXIpOwogCQl9CiAKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFfV09VTERfQkxPQ0sp CiAJCQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdF X1FVRVVFX1BVVF9NRVNTQUdFKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlU X1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1BVVF9NRVNTQUdFKTsKKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvbWVzb24uYnVpbGQKaW5kZXggNzEyYTg1N2NkYjQuLmQyMGU2ZmJh Mjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFj a2VuZC9tZXNvbi5idWlsZApAQCAtMTUsNiArMTUsNyBAQCBzdWJkaXIoJ2NhdGFsb2cnKQog c3ViZGlyKCdjb21tYW5kcycpCiBzdWJkaXIoJ2V4ZWN1dG9yJykKIHN1YmRpcignZm9yZWln bicpCitzdWJkaXIoJ2lwYycpCiBzdWJkaXIoJ2ppdCcpCiBzdWJkaXIoJ2xpYicpCiBzdWJk aXIoJ2xpYnBxJykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCmluZGV4IDBmNDQzNWQyZDk3 Li43MjlhMGJjYmJlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL01ha2VmaWxlCkBAIC0xOSw3ICsx OSw2IEBAIE9CSlMgPSBcCiAJYmd3cml0ZXIubyBcCiAJY2hlY2twb2ludGVyLm8gXAogCWZv cmtfcHJvY2Vzcy5vIFwKLQlpbnRlcnJ1cHQubyBcCiAJbGF1bmNoX2JhY2tlbmQubyBcCiAJ cGdhcmNoLm8gXAogCXBtY2hpbGQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jCmluZGV4IDBhNzMwZmI1YjQ1Li41NzYzMDU3YTg3YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKQEAgLTI3LDE1ICsyNywxNyBAQAogICogbGF1bmNoZXIgaGFz IHNldCB1cC4KICAqCiAgKiBJZiB0aGUgZm9yaygpIGNhbGwgZmFpbHMgaW4gdGhlIHBvc3Rt YXN0ZXIsIGl0IHNldHMgYSBmbGFnIGluIHRoZSBzaGFyZWQKLSAqIG1lbW9yeSBhcmVhLCBh bmQgc2VuZHMgYSBzaWduYWwgdG8gdGhlIGxhdW5jaGVyLiAgVGhlIGxhdW5jaGVyLCB1cG9u Ci0gKiBub3RpY2luZyB0aGUgZmxhZywgY2FuIHRyeSBzdGFydGluZyB0aGUgd29ya2VyIGFn YWluIGJ5IHJlc2VuZGluZyB0aGUKKyAqIG1lbW9yeSBhcmVhLCBzZW5kcyBhIHNpZ25hbCB0 byB0aGUgbGF1bmNoZXIsIHJhaXNpbmcgdGhlCisgKiBJTlRFUlJVUFRfQVVUT1ZBQ1VVTV9X T1JLRVJfRklOSVNIRUQgaW50ZXJydXB0LiBUaGUgbGF1bmNoZXIsIHVwb24KKyAqIG5vdGlj aW5nIHRoZSBpbnRlcnJ1cHQsIGNhbiB0cnkgc3RhcnRpbmcgdGhlIHdvcmtlciBhZ2FpbiBi eSByZXNlbmRpbmcgdGhlCiAgKiBzaWduYWwuICBOb3RlIHRoYXQgdGhlIGZhaWx1cmUgY2Fu IG9ubHkgYmUgdHJhbnNpZW50IChmb3JrIGZhaWx1cmUgZHVlIHRvCiAgKiBoaWdoIGxvYWQs IG1lbW9yeSBwcmVzc3VyZSwgdG9vIG1hbnkgcHJvY2Vzc2VzLCBldGMpOyBtb3JlIHBlcm1h bmVudAogICogcHJvYmxlbXMsIGxpa2UgZmFpbHVyZSB0byBjb25uZWN0IHRvIGEgZGF0YWJh c2UsIGFyZSBkZXRlY3RlZCBsYXRlciBpbiB0aGUKICAqIHdvcmtlciBhbmQgZGVhbHQgd2l0 aCBqdXN0IGJ5IGhhdmluZyB0aGUgd29ya2VyIGV4aXQgbm9ybWFsbHkuICBUaGUgbGF1bmNo ZXIKICAqIHdpbGwgbGF1bmNoIGEgbmV3IHdvcmtlciBhZ2FpbiBsYXRlciwgcGVyIHNjaGVk dWxlLgogICoKLSAqIFdoZW4gdGhlIHdvcmtlciBpcyBkb25lIHZhY3V1bWluZyBpdCBzZW5k cyBTSUdVU1IyIHRvIHRoZSBsYXVuY2hlci4gIFRoZQorICogV2hlbiB0aGUgd29ya2VyIGlz IGRvbmUgdmFjdXVtaW5nIGFuZCBleGl0cywgdGhlIHBvc3RtYXN0ZXIgc2VuZHMgU0lHVVNS MgorICogdG8gdGhlIGxhdW5jaGVyLCByYWlzaW5nIElOVEVSUlVQVF9BVVRPVkFDVVVNX1dP UktFUl9GSU5JU0hFRC4gIFRoZQogICogbGF1bmNoZXIgdGhlbiB3YWtlcyB1cCBhbmQgaXMg YWJsZSB0byBsYXVuY2ggYW5vdGhlciB3b3JrZXIsIGlmIHRoZSBzY2hlZHVsZQogICogaXMg c28gdGlnaHQgdGhhdCBhIG5ldyB3b3JrZXIgaXMgbmVlZGVkIGltbWVkaWF0ZWx5LiAgQXQg dGhpcyB0aW1lIHRoZQogICogbGF1bmNoZXIgY2FuIGFsc28gYmFsYW5jZSB0aGUgc2V0dGlu Z3MgZm9yIHRoZSB2YXJpb3VzIHJlbWFpbmluZyB3b3JrZXJzJwpAQCAtNzksMTggKzgxLDE4 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNs dWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgotI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9w b3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBA IC0xNTEsOSArMTUzLDYgQEAgaW50CQkJTG9nX2F1dG9hbmFseXplX21pbl9kdXJhdGlvbiA9 IDYwMDAwMDsKIHN0YXRpYyBkb3VibGUgYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2RlbGF5ID0g LTE7CiBzdGF0aWMgaW50CWF2X3N0b3JhZ2VfcGFyYW1fY29zdF9saW1pdCA9IC0xOwogCi0v KiBGbGFncyBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzICovCi1zdGF0aWMgdm9sYXRpbGUgc2ln X2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7Ci0KIC8qIENvbXBhcmlzb24gcG9pbnRz IGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIGZyZWV6ZV9tYXhfYWdlIGlzIGV4Y2VlZGVkICov CiBzdGF0aWMgVHJhbnNhY3Rpb25JZCByZWNlbnRYaWQ7CiBzdGF0aWMgTXVsdGlYYWN0SWQg cmVjZW50TXVsdGk7CkBAIC0yODcsNiArMjg2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQXV0b1Zh Y3V1bVdvcmtJdGVtCiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5IEF1dG92 YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAqIG9mIHRoZSB3 b3JrZXIgbGlzdCAoc2VlIGFib3ZlKS4KKyAqCisgKiBYWFg6IGF2X3NpZ25hbCBjb3VsZCBi ZSByZXBsYWNlZCB3aXRoIGluZGl2aWR1YWwgaW50ZXJydXB0cy4gVGhpcyB3b3JrcworICog dG9vLCB0aG91Z2guCiAgKi0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QKQEAg LTMyMiw3ICszMjQsNyBAQCBhdmxfZGJhc2UgICphdmxfZGJhc2VfYXJyYXk7CiBzdGF0aWMg V29ya2VySW5mbyBNeVdvcmtlckluZm8gPSBOVUxMOwogCiBzdGF0aWMgT2lkCWRvX3N0YXJ0 X3dvcmtlcih2b2lkKTsKLXN0YXRpYyB2b2lkIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRl cnJ1cHRzKHZvaWQpOworc3RhdGljIHZvaWQgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckNvbmZp Z1JlbG9hZEludGVycnVwdCh2b2lkKTsKIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lkIEF1dG9W YWNMYXVuY2hlclNodXRkb3duKHZvaWQpOwogc3RhdGljIHZvaWQgbGF1bmNoZXJfZGV0ZXJt aW5lX3NsZWVwKGJvb2wgY2FubGF1bmNoLCBib29sIHJlY3Vyc2luZywKIAkJCQkJCQkJCSBz dHJ1Y3QgdGltZXZhbCAqbmFwKTsKQEAgLTM5NCwyMSArMzk2LDIzIEBAIEF1dG9WYWNMYXVu Y2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAlBc3NlcnQoR2V0UHJvY2Vzc2luZ01vZGUoKSA9PSBJbml0UHJvY2Vzc2luZyk7 CiAKIAkvKgotCSAqIFNldCB1cCBzaWduYWwgaGFuZGxlcnMuICBXZSBvcGVyYXRlIG9uIGRh dGFiYXNlcyBtdWNoIGxpa2UgYSByZWd1bGFyCi0JICogYmFja2VuZCwgc28gd2UgdXNlIHRo ZSBzYW1lIHNpZ25hbCBoYW5kbGluZy4gIFNlZSBlcXVpdmFsZW50IGNvZGUgaW4KLQkgKiB0 Y29wL3Bvc3RncmVzLmMuCisJICogU2V0IHVwIHNpZ25hbCBhbmQgaW50ZXJydXB0IGhhbmRs ZXJzLiAgV2Ugb3BlcmF0ZSBvbiBkYXRhYmFzZXMgbXVjaAorCSAqIGxpa2UgYSByZWd1bGFy IGJhY2tlbmQsIHNvIHdlIHVzZSBtb3N0bHkgdGhlIHNhbWUgaGFuZGxpbmcuICBTZWUKKwkg KiBlcXVpdmFsZW50IGNvZGUgaW4gdGNvcC9wb3N0Z3Jlcy5jLgogCSAqLwotCXBxc2lnbmFs KFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lH SU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdURVJNLCBTaWdu YWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2Fz IGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KLQorCVNldFN0YW5k YXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKIAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVz dGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCi0JcHFzaWduYWwoU0lHUElQRSwgU0lH X0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIp OworCS8qIFBvc3RtYXN0ZXIgdXNlcyBTSUdVU1IyIHRvIHJhaXNlIElOVEVSUlVQVF9BVVRP VkFDVVVNX1dPUktFUl9GSU5JU0hFRCAqLwogCXBxc2lnbmFsKFNJR1VTUjIsIGF2bF9zaWd1 c3IyX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVy KTsKKworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCwgUHJv Y2Vzc1F1ZXJ5Q2FuY2VsSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBU X1FVRVJZX0NBTkNFTCk7CisKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9URVJN SU5BVEUsIEF1dG9WYWNMYXVuY2hlclNodXRkb3duKTsKKworCS8qIFdlIGNhbiBzYWZlbHkg cmVsb2FkIGNvbmZpZyBhdCBhbnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSAqLworCVNldElu dGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsIFByb2Nlc3NBdXRvVmFj TGF1bmNoZXJDb25maWdSZWxvYWRJbnRlcnJ1cHQpOwogCiAJLyoKIAkgKiBDcmVhdGUgYSBw ZXItYmFja2VuZCBQR1BST0Mgc3RydWN0IGluIHNoYXJlZCBtZW1vcnkuICBXZSBtdXN0IGRv IHRoaXMKQEAgLTQ1NSw3ICs0NTksOCBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyogRm9y Z2V0IGFueSBwZW5kaW5nIFF1ZXJ5Q2FuY2VsIG9yIHRpbWVvdXQgcmVxdWVzdCAqLwogCQlk aXNhYmxlX2FsbF90aW1lb3V0cyhmYWxzZSk7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZh bHNlOyAvKiBzZWNvbmQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KKwkJQ2xlYXJJbnRl cnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIHNlY29uZCB0byBhdm9pZCByYWNl CisJCQkJCQkJCQkJCQkgKiBjb25kaXRpb24gKi8KIAogCQkvKiBSZXBvcnQgdGhlIGVycm9y IHRvIHRoZSBzZXJ2ZXIgbG9nICovCiAJCUVtaXRFcnJvclJlcG9ydCgpOwpAQCAtNDk3LDcg KzUwMiw3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRh LCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKIAog CQkvKiBpZiBpbiBzaHV0ZG93biBtb2RlLCBubyBuZWVkIGZvciBhbnl0aGluZyBmdXJ0aGVy OyBqdXN0IGdvIGF3YXkgKi8KLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQkJQXV0b1ZhY0xh dW5jaGVyU2h1dGRvd24oKTsKIAogCQkvKgpAQCAtNTU2LDcgKzU2MSw3IEBAIEF1dG9WYWNM YXVuY2hlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkgKi8KIAlpZiAoIUF1dG9WYWN1dW1pbmdBY3RpdmUoKSkKIAl7Ci0JCWlm ICghU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5U RVJSVVBUX1RFUk1JTkFURSkpCiAJCQlkb19zdGFydF93b3JrZXIoKTsKIAkJcHJvY19leGl0 KDApOwkJCS8qIGRvbmUgKi8KIAl9CkBAIC01NzEsNDEgKzU3Niw0NCBAQCBBdXRvVmFjTGF1 bmNoZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJcmVidWlsZF9kYXRhYmFzZV9saXN0KEludmFsaWRPaWQpOwogCiAJLyogbG9v cCB1bnRpbCBzaHV0ZG93biByZXF1ZXN0ICovCi0Jd2hpbGUgKCFTaHV0ZG93blJlcXVlc3RQ ZW5kaW5nKQorCXdoaWxlICghSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfVEVSTUlOQVRF KSkKIAl7CiAJCXN0cnVjdCB0aW1ldmFsIG5hcDsKIAkJVGltZXN0YW1wVHogY3VycmVudF90 aW1lID0gMDsKIAkJYm9vbAkJY2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBUaGlzIGxvb3Ag aXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdExhdGNoLAor CQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ug b2YgV2FpdEludGVycnVwdCwKIAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8gc2xlZXAgYmVm b3JlIHRoZSBmaXJzdCBsYXVuY2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNzLiAgU28gaXQn cyBXYWl0TGF0Y2gsIHRoZW4gUmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IKLQkJICogd2Fr ZW5pbmcgY29uZGl0aW9ucy4KKwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2FpdEludGVycnVw dCwgdGhlbiBDbGVhckludGVycnVwdCwgdGhlbiBjaGVjaworCQkgKiBmb3Igd2FrZW5pbmcg Y29uZGl0aW9ucy4KIAkJICovCiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVwKGF2X3dv cmtlcl9hdmFpbGFibGUoKSwgZmFsc2UsICZuYXApOwogCiAJCS8qCi0JCSAqIFdhaXQgdW50 aWwgbmFwdGltZSBleHBpcmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2Ygc2lnbmFsIChhbGwg dGhlCi0JCSAqIHNpZ25hbCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBTZXRM YXRjaCkuCisJCSAqIFdhaXQgdW50aWwgbmFwdGltZSBleHBpcmVzIG9yIHdlIGdldCBzb21l IHR5cGUgb2YgaW50ZXJydXB0LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50dl91c2VjIC8gMTAw MEwpLAotCQkJCQkJIFdBSVRfRVZFTlRfQVVUT1ZBQ1VVTV9NQUlOKTsKKwkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQ VF9XQUlUX1dBS0VVUCB8CisJCQkJCQkJIElOVEVSUlVQVF9BVVRPVkFDVVVNX1dPUktFUl9G SU5JU0hFRCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50dl91 c2VjIC8gMTAwMEwpLAorCQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1fTUFJTik7CiAK LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAot CQlQcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJydXB0cygpOworCQkvKgorCQkgKiBGSVhN RTogaXMgdGhpcyBzdGlsbCBuZWVkZWQ/IERvZXMgYW55b25lIHNlbmQgSU5URVJSVVBUX1dB SVRfV0FLRVVQCisJCSAqIHRvIGF2IGxhdW5jaGVyPworCQkgKi8KKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQkvKgogCQkgKiBhIHdvcmtlciBmaW5p c2hlZCwgb3IgcG9zdG1hc3RlciBzaWduYWxlZCBmYWlsdXJlIHRvIHN0YXJ0IGEgd29ya2Vy CiAJCSAqLwotCQlpZiAoZ290X1NJR1VTUjIpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElO VEVSUlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRCkpCiAJCXsKLQkJCWdvdF9TSUdV U1IyID0gZmFsc2U7Ci0KIAkJCS8qIHJlYmFsYW5jZSBjb3N0IGxpbWl0cywgaWYgbmVlZGVk ICovCiAJCQlpZiAoQXV0b1ZhY3V1bVNobWVtLT5hdl9zaWduYWxbQXV0b1ZhY1JlYmFsYW5j ZV0pCiAJCQl7CkBAIC03NDEsMjEgKzc0OSwxNyBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJQXV0 b1ZhY0xhdW5jaGVyU2h1dGRvd24oKTsKIH0KIAotLyoKLSAqIFByb2Nlc3MgYW55IG5ldyBp bnRlcnJ1cHRzLgotICovCiBzdGF0aWMgdm9pZAotUHJvY2Vzc0F1dG9WYWNMYXVuY2hlcklu dGVycnVwdHModm9pZCkKK1Byb2Nlc3NBdXRvVmFjTGF1bmNoZXJDb25maWdSZWxvYWRJbnRl cnJ1cHQodm9pZCkKIHsKIAkvKiB0aGUgbm9ybWFsIHNodXRkb3duIGNhc2UgKi8KLQlpZiAo U2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJV UFRfVEVSTUlOQVRFKSkKIAkJQXV0b1ZhY0xhdW5jaGVyU2h1dGRvd24oKTsKIAotCWlmIChD b25maWdSZWxvYWRQZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9D T05GSUdfUkVMT0FEKSkKIAl7CiAJCWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJl diA9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7CiAKLQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9 IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCQkvKiBzaHV0 ZG93biByZXF1ZXN0ZWQgaW4gY29uZmlnIGZpbGU/ICovCkBAIC03NzMsMTcgKzc3Nyw2IEBA IFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQpCiAJCS8qIHJlYnVpbGQg dGhlIGxpc3QgaW4gY2FzZSB0aGUgbmFwdGltZSBjaGFuZ2VkICovCiAJCXJlYnVpbGRfZGF0 YWJhc2VfbGlzdChJbnZhbGlkT2lkKTsKIAl9Ci0KLQkvKiBQcm9jZXNzIGJhcnJpZXIgZXZl bnRzICovCi0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NT aWduYWxCYXJyaWVyKCk7Ci0KLQkvKiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRl eHRzIG9mIHRoaXMgcHJvY2VzcyAqLwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykK LQkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKLQotCS8qIFByb2Nlc3Mg c2ludmFsIGNhdGNodXAgaW50ZXJydXB0cyB0aGF0IGhhcHBlbmVkIHdoaWxlIHNsZWVwaW5n ICovCi0JUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQoKTsKIH0KIAogLyoKQEAgLTEzNTAsOCAr MTM0Myw4IEBAIGxhdW5jaF93b3JrZXIoVGltZXN0YW1wVHogbm93KQogCiAvKgogICogQ2Fs bGVkIGZyb20gcG9zdG1hc3RlciB0byBzaWduYWwgYSBmYWlsdXJlIHRvIGZvcmsgYSBwcm9j ZXNzIHRvIGJlY29tZQotICogd29ya2VyLiAgVGhlIHBvc3RtYXN0ZXIgc2hvdWxkIGtpbGwo U0lHVVNSMikgdGhlIGxhdW5jaGVyIHNob3J0bHkKLSAqIGFmdGVyIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4KKyAqIHdvcmtlci4gIFRoZSBwb3N0bWFzdGVyIHNob3VsZCBzZW5kIElOVEVS UlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRCB0bworICogdGhlIGxhdW5jaGVyIHNo b3J0bHkgYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgogICovCiB2b2lkCiBBdXRvVmFj V29ya2VyRmFpbGVkKHZvaWQpCkBAIC0xMzYzLDggKzEzNTYsNyBAQCBBdXRvVmFjV29ya2Vy RmFpbGVkKHZvaWQpCiBzdGF0aWMgdm9pZAogYXZsX3NpZ3VzcjJfaGFuZGxlcihTSUdOQUxf QVJHUykKIHsKLQlnb3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJ UmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0FVVE9WQUNVVU1fV09SS0VSX0ZJTklTSEVEKTsK IH0KIAogCkBAIC0xMzk5LDIyICsxMzkxLDE4IEBAIEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJICogYmFj a2VuZCwgc28gd2UgdXNlIHRoZSBzYW1lIHNpZ25hbCBoYW5kbGluZy4gIFNlZSBlcXVpdmFs ZW50IGNvZGUgaW4KIAkgKiB0Y29wL3Bvc3RncmVzLmMuCiAJICovCi0JcHFzaWduYWwoU0lH SFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQotCS8qCi0JICogU0lHSU5U IGlzIHVzZWQgdG8gc2lnbmFsIGNhbmNlbGluZyB0aGUgY3VycmVudCB0YWJsZSdzIHZhY3V1 bTsgU0lHVEVSTQotCSAqIG1lYW5zIGFib3J0IGFuZCBleGl0IGNsZWFubHksIGFuZCBTSUdR VUlUIG1lYW5zIGFiYW5kb24gc2hpcC4KLQkgKi8KLQlwcXNpZ25hbChTSUdJTlQsIFN0YXRl bWVudENhbmNlbEhhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JLyogU0lH UVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxk ICovCiAKIAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0g aGFuZGxlciAqLwogCi0JcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwo U0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VT UjIsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVy KTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisKKwkvKgorCSAqIElOVEVS UlVQVF9RVUVSWV9DQU5DRUwgKFNJR0lOVCkgaXMgdXNlZCB0byBjYW5jZWwgdGhlIGN1cnJl bnQgdGFibGUncworCSAqIHZhY3V1bTsgSU5URVJSVVBUX1RFUk1JTkFUIChTSUdURVJNKSBt ZWFucyBhYm9ydCBhbmQgZXhpdCBjbGVhbmx5IGFzCisJICogdXN1YWwuCisJICovCisJU2V0 SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlD YW5jZWxJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FO Q0VMKTsKIAogCS8qCiAJICogQ3JlYXRlIGEgcGVyLWJhY2tlbmQgUEdQUk9DIHN0cnVjdCBp biBzaGFyZWQgbWVtb3J5LiAgV2UgbXVzdCBkbyB0aGlzCkBAIC0xNTQ1LDEyICsxNTMzLDcg QEAgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIAkJLyogd2FrZSB1cCB0aGUgbGF1bmNoZXIgKi8KIAkJbGF1 bmNoZXJQcm9jID0gcGdfYXRvbWljX3JlYWRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVy UHJvYyk7CiAJCWlmIChsYXVuY2hlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJ ewotCQkJaW50CQkJcGlkID0gR2V0UEdQcm9jQnlOdW1iZXIobGF1bmNoZXJQcm9jKS0+cGlk OwotCi0JCQlpZiAocGlkICE9IDApCi0JCQkJa2lsbChwaWQsIFNJR1VTUjIpOwotCQl9CisJ CQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9BVVRPVkFDVVVNX1dPUktFUl9GSU5JU0hFRCwg bGF1bmNoZXJQcm9jKTsKIAl9CiAJZWxzZQogCXsKQEAgLTIyOTIsOSArMjI3NSw4IEBAIGRv X2F1dG92YWN1dW0odm9pZCkKIAkJLyoKIAkJICogQ2hlY2sgZm9yIGNvbmZpZyBjaGFuZ2Vz IGJlZm9yZSBwcm9jZXNzaW5nIGVhY2ggY29sbGVjdGVkIHRhYmxlLgogCQkgKi8KLQkJaWYg KENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQ VF9DT05GSUdfUkVMT0FEKSkKIAkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CiAKIAkJCS8qCkBAIC0yNDUy LDcgKzI0MzQsNyBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCQkgKiBjdXJyZW50IHRhYmxl ICh3ZSdyZSBkb25lIHdpdGggaXQsIHNvIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8KIAkJ CSAqIGNhbmNlbCBhdCB0aGlzIHBvaW50LikKIAkJCSAqLwotCQkJUXVlcnlDYW5jZWxQZW5k aW5nID0gZmFsc2U7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM KTsKIAkJfQogCQlQR19DQVRDSCgpOwogCQl7CkBAIC0yNTQxLDkgKzI1MjMsOCBAQCBkZWxl dGVkOgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5nZXMgYmVmb3JlIGFjcXVpcmluZyBs b2NrIGZvciBmdXJ0aGVyIGpvYnMuCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQo SU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5n ID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCVZhY3V1 bVVwZGF0ZUNvc3RzKCk7CiAJCX0KQEAgLTI2NjUsNyArMjY0Niw3IEBAIHBlcmZvcm1fd29y a19pdGVtKEF1dG9WYWN1dW1Xb3JrSXRlbSAqd29ya2l0ZW0pCiAJCSAqICh3ZSdyZSBkb25l IHdpdGggaXQsIHNvIGl0IHdvdWxkIG1ha2Ugbm8gc2Vuc2UgdG8gY2FuY2VsIGF0IHRoaXMK IAkJICogcG9pbnQuKQogCQkgKi8KLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCX0KIAlQR19DQVRD SCgpOwogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vz cy5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMKaW5kZXggOGVhODAw YzBiYmQuLmVlMTZlOWNiMDI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1eHByb2Nlc3MuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3Mu YwpAQCAtMTUsNyArMTUsNiBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHNp Z25hbC5oPgogCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9jb25kaXRpb25fdmFyaWFibGUuaCIKQEAgLTIzLDYgKzIyLDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAj aW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jCmluZGV4IDEzM2FmNWFlZTk3Li4yMGI3YmE3MzdiYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKKyNpbmNsdWRlICJpcGMvaW50 ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUg ImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCkBAIC0yMiwxMiArMjQsMTAgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Bt c2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jYXJyYXkuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2lu Y2x1ZGUgInV0aWxzL2FzY2lpLmgiCkBAIC03OSw2ICs3OSw4IEBAIHR5cGVkZWYgc3RydWN0 IEJhY2tncm91bmRXb3JrZXJTbG90CiAJcGlkX3QJCXBpZDsJCQkvKiBJbnZhbGlkUGlkID0g bm90IHN0YXJ0ZWQgeWV0OyAwID0gZGVhZCAqLwogCXVpbnQ2NAkJZ2VuZXJhdGlvbjsJCS8q IGluY3JlbWVudGVkIHdoZW4gc2xvdCBpcyByZWN5Y2xlZCAqLwogCUJhY2tncm91bmRXb3Jr ZXIgd29ya2VyOworCWludAkJCW5vdGlmeV9wbWNoaWxkOworCVByb2NOdW1iZXIJbm90aWZ5 X3Byb2NfbnVtYmVyOwogfSBCYWNrZ3JvdW5kV29ya2VyU2xvdDsKIAogLyoKQEAgLTIwMiw4 ICsyMDQsOSBAQCBCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQpCiAJCQlzbG90LT50 ZXJtaW5hdGUgPSBmYWxzZTsKIAkJCXNsb3QtPnBpZCA9IEludmFsaWRQaWQ7CiAJCQlzbG90 LT5nZW5lcmF0aW9uID0gMDsKKwkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJCXNs b3QtPm5vdGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCQlydy0+ cndfc2htZW1fc2xvdCA9IHNsb3RubzsKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9w aWQgPSAwOwkvKiBtaWdodCBiZSByZWluaXQgYWZ0ZXIgY3Jhc2ggKi8KIAkJCW1lbWNweSgm c2xvdC0+d29ya2VyLCAmcnctPnJ3X3dvcmtlciwgc2l6ZW9mKEJhY2tncm91bmRXb3JrZXIp KTsKIAkJCSsrc2xvdG5vOwogCQl9CkBAIC0yNDQsNiArMjQ3LDE5IEBAIEZpbmRSZWdpc3Rl cmVkV29ya2VyQnlTbG90TnVtYmVyKGludCBzbG90bm8pCiAJcmV0dXJuIE5VTEw7CiB9CiAK K1Byb2NOdW1iZXIKK0dldE5vdGlmeVByb2NOdW1iZXJGb3JSZWdpc3RlcmVkV29ya2VyKFJl Z2lzdGVyZWRCZ1dvcmtlciAqcncpCit7CisJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3Qg PSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3RdOworCisJ LyoKKwkgKiBGSVhNRTogYmUgZXh0cmEgcGFyYW5vaWQgYW5kIHNhbml0eSBjaGVjayB0aGUg cHJvYyBudW1iZXIsIHNpbmNlIHRoaXMKKwkgKiBydW5zIGluIHRoZSBwb3N0bWFzdGVyCisJ ICovCisKKwlyZXR1cm4gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOworfQorCiAvKgogICog Tm90aWNlIGNoYW5nZXMgdG8gc2hhcmVkIG1lbW9yeSBtYWRlIGJ5IG90aGVyIGJhY2tlbmRz LgogICogQWNjZXB0IG5ldyB3b3JrZXIgcmVxdWVzdHMgb25seSBpZiBhbGxvd19uZXdfd29y a2VycyBpcyB0cnVlLgpAQCAtMzI1LDIwICszNDEsMjAgQEAgQmFja2dyb3VuZFdvcmtlclN0 YXRlQ2hhbmdlKGJvb2wgYWxsb3dfbmV3X3dvcmtlcnMpCiAJCS8qCiAJCSAqIElmIHRoZSB3 b3JrZXIgaXMgbWFya2VkIGZvciB0ZXJtaW5hdGlvbiwgd2UgZG9uJ3QgbmVlZCB0byBhZGQg aXQgdG8KIAkJICogdGhlIHJlZ2lzdGVyZWQgd29ya2VycyBsaXN0OyB3ZSBjYW4ganVzdCBm cmVlIHRoZSBzbG90LiBIb3dldmVyLCBpZgotCQkgKiBiZ3dfbm90aWZ5X3BpZCBpcyBzZXQs IHRoZSBwcm9jZXNzIHRoYXQgcmVnaXN0ZXJlZCB0aGUgd29ya2VyIG1heQotCQkgKiBuZWVk IHRvIGtub3cgdGhhdCB3ZSd2ZSBwcm9jZXNzZWQgdGhlIHRlcm1pbmF0ZSByZXF1ZXN0LCBz byBiZSBzdXJlCi0JCSAqIHRvIHNpZ25hbCBpdC4KKwkJICogYmd3X25vdGlmeV9wcm9jX251 bWJlciBpcyBzZXQsIHRoZSBwcm9jZXNzIHRoYXQgcmVnaXN0ZXJlZCB0aGUKKwkJICogd29y a2VyIG1heSBuZWVkIHRvIGtub3cgdGhhdCB3ZSd2ZSBwcm9jZXNzZWQgdGhlIHRlcm1pbmF0 ZSByZXF1ZXN0LAorCQkgKiBzbyBiZSBzdXJlIHRvIHNpZ25hbCBpdC4KIAkJICovCiAJCWlm IChzbG90LT50ZXJtaW5hdGUpCiAJCXsKLQkJCWludAkJCW5vdGlmeV9waWQ7CisJCQlQcm9j TnVtYmVyCW5vdGlmeV9wcm9jX251bWJlcjsKIAogCQkJLyoKIAkJCSAqIFdlIG5lZWQgYSBt ZW1vcnkgYmFycmllciBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsb2FkIG9mCi0JCQkg KiBiZ3dfbm90aWZ5X3BpZCBhbmQgdGhlIHVwZGF0ZSBvZiBwYXJhbGxlbF90ZXJtaW5hdGVf Y291bnQKLQkJCSAqIGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5fdXNlLgorCQkJ ICogYmd3X25vdGlmeV9wcm9jX251bWJlciBhbmQgdGhlIHVwZGF0ZSBvZgorCQkJICogcGFy YWxsZWxfdGVybWluYXRlX2NvdW50IGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5f dXNlLgogCQkJICovCi0JCQlub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlf cGlkOworCQkJbm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVy OwogCQkJaWYgKChzbG90LT53b3JrZXIuYmd3X2ZsYWdzICYgQkdXT1JLRVJfQ0xBU1NfUEFS QUxMRUwpICE9IDApCiAJCQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3Rlcm1p bmF0ZV9jb3VudCsrOwogCQkJc2xvdC0+cGlkID0gMDsKQEAgLTM0Niw4ICszNjIsOCBAQCBC YWNrZ3JvdW5kV29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJ CXBnX21lbW9yeV9iYXJyaWVyKCk7CiAJCQlzbG90LT5pbl91c2UgPSBmYWxzZTsKIAotCQkJ aWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJCQlraWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOwor CQkJaWYgKG5vdGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJ CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBub3RpZnlfcHJvY19udW1i ZXIpOwogCiAJCQljb250aW51ZTsKIAkJfQpAQCAtMzkzLDIzICs0MDksNiBAQCBCYWNrZ3Jv dW5kV29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJcnctPnJ3 X3dvcmtlci5iZ3dfbWFpbl9hcmcgPSBzbG90LT53b3JrZXIuYmd3X21haW5fYXJnOwogCQlt ZW1jcHkocnctPnJ3X3dvcmtlci5iZ3dfZXh0cmEsIHNsb3QtPndvcmtlci5iZ3dfZXh0cmEs IEJHV19FWFRSQUxFTik7CiAKLQkJLyoKLQkJICogQ29weSB0aGUgUElEIHRvIGJlIG5vdGlm aWVkIGFib3V0IHN0YXRlIGNoYW5nZXMsIGJ1dCBvbmx5IGlmIHRoZQotCQkgKiBwb3N0bWFz dGVyIGtub3dzIGFib3V0IGEgYmFja2VuZCB3aXRoIHRoYXQgUElELiAgSXQgaXNuJ3QgYW4g ZXJyb3IKLQkJICogaWYgdGhlIHBvc3RtYXN0ZXIgZG9lc24ndCBrbm93IGFib3V0IHRoZSBQ SUQsIGJlY2F1c2UgdGhlIGJhY2tlbmQKLQkJICogdGhhdCByZXF1ZXN0ZWQgdGhlIHdvcmtl ciBjb3VsZCBoYXZlIGRpZWQgKG9yIGJlZW4ga2lsbGVkKSBqdXN0Ci0JCSAqIGFmdGVyIGRv aW5nIHNvLiAgTm9uZXRoZWxlc3MsIGF0IGxlYXN0IHVudGlsIHdlIGdldCBzb21lIGV4cGVy aWVuY2UKLQkJICogd2l0aCBob3cgdGhpcyBwbGF5cyBvdXQgaW4gdGhlIHdpbGQsIGxvZyBh IG1lc3NhZ2UgYXQgYSByZWxhdGl2ZQotCQkgKiBoaWdoIGRlYnVnIGxldmVsLgotCQkgKi8K LQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IHNsb3QtPndvcmtlci5iZ3dfbm90 aWZ5X3BpZDsKLQkJaWYgKCFQb3N0bWFzdGVyTWFya1BJREZvcldvcmtlck5vdGlmeShydy0+ cndfd29ya2VyLmJnd19ub3RpZnlfcGlkKSkKLQkJewotCQkJZWxvZyhERUJVRzEsICJ3b3Jr ZXIgbm90aWZpY2F0aW9uIFBJRCAlZCBpcyBub3QgdmFsaWQiLAotCQkJCSAoaW50KSBydy0+ cndfd29ya2VyLmJnd19ub3RpZnlfcGlkKTsKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlm eV9waWQgPSAwOwotCQl9Ci0KIAkJLyogSW5pdGlhbGl6ZSBwb3N0bWFzdGVyIGJvb2trZWVw aW5nLiAqLwogCQlydy0+cndfcGlkID0gMDsKIAkJcnctPnJ3X2NyYXNoZWRfYXQgPSAwOwpA QCAtNDMxLDcgKzQzMCw3IEBAIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFs bG93X25ld193b3JrZXJzKQogICogTk9URTogVGhlIGVudHJ5IGlzIHVubGlua2VkIGZyb20g QmFja2dyb3VuZFdvcmtlckxpc3QuICBJZiB0aGUgY2FsbGVyIGlzCiAgKiBpdGVyYXRpbmcg dGhyb3VnaCBpdCwgYmV0dGVyIHVzZSBhIG11dGFibGUgaXRlcmF0b3IhCiAgKgotICogQ2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgYmd3X25vdGlmeV9waWQsIGlmIGFw cHJvcHJpYXRlLgorICogQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgYmd3 X25vdGlmeV9wcm9jX251bWJlciwgaWYgYXBwcm9wcmlhdGUuCiAgKgogICogVGhpcyBmdW5j dGlvbiBtdXN0IGJlIGludm9rZWQgb25seSBpbiB0aGUgcG9zdG1hc3Rlci4KICAqLwpAQCAt NDc2LDggKzQ3NSw4IEBAIFJlcG9ydEJhY2tncm91bmRXb3JrZXJQSUQoUmVnaXN0ZXJlZEJn V29ya2VyICpydykKIAlzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3J3LT5y d19zaG1lbV9zbG90XTsKIAlzbG90LT5waWQgPSBydy0+cndfcGlkOwogCi0JaWYgKHJ3LT5y d193b3JrZXIuYmd3X25vdGlmeV9waWQgIT0gMCkKLQkJa2lsbChydy0+cndfd29ya2VyLmJn d19ub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwlpZiAoc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVy ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQLCBzbG90LT5ub3RpZnlfcHJvY19udW1iZXIpOwogfQogCiAvKgpAQCAtNDkz LDEyICs0OTIsMTIgQEAgdm9pZAogUmVwb3J0QmFja2dyb3VuZFdvcmtlckV4aXQoUmVnaXN0 ZXJlZEJnV29ya2VyICpydykKIHsKIAlCYWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xvdDsKLQlp bnQJCQlub3RpZnlfcGlkOworCVByb2NOdW1iZXIJbm90aWZ5X3Byb2NfbnVtYmVyOwogCiAJ QXNzZXJ0KHJ3LT5yd19zaG1lbV9zbG90IDwgbWF4X3dvcmtlcl9wcm9jZXNzZXMpOwogCXNs b3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3RdOwog CXNsb3QtPnBpZCA9IHJ3LT5yd19waWQ7Ci0Jbm90aWZ5X3BpZCA9IHJ3LT5yd193b3JrZXIu Ymd3X25vdGlmeV9waWQ7CisJbm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3By b2NfbnVtYmVyOwogCiAJLyoKIAkgKiBJZiB0aGlzIHdvcmtlciBpcyBzbGF0ZWQgZm9yIGRl cmVnaXN0cmF0aW9uLCBkbyB0aGF0IGJlZm9yZSBub3RpZnlpbmcKQEAgLTUxMSwyNyArNTEw LDM0IEBAIFJlcG9ydEJhY2tncm91bmRXb3JrZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtlciAq cncpCiAJCXJ3LT5yd193b3JrZXIuYmd3X3Jlc3RhcnRfdGltZSA9PSBCR1dfTkVWRVJfUkVT VEFSVCkKIAkJRm9yZ2V0QmFja2dyb3VuZFdvcmtlcihydyk7CiAKLQlpZiAobm90aWZ5X3Bp ZCAhPSAwKQotCQlraWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCWlmIChub3RpZnlfcHJv Y19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVAsIG5vdGlmeV9wcm9jX251bWJlcik7CiB9CiAKIC8qCi0gKiBD YW5jZWwgU0lHVVNSMSBub3RpZmljYXRpb25zIGZvciBhIFBJRCBiZWxvbmdpbmcgdG8gYW4g ZXhpdGluZyBiYWNrZW5kLgorICogQ2FuY2VsIG5vdGlmaWNhdGlvbnMgZm9yIGEgYmd3b3Jr ZXIgYmVsb25naW5nIHRvIGFuIGV4aXRpbmcgYmFja2VuZC4KICAqCiAgKiBUaGlzIGZ1bmN0 aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBwb3N0bWFzdGVyLgogICovCiB2 b2lkCi1CYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNhdGlvbnMocGlkX3QgcGlkKQorQmFj a2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGludCBwbWNoaWxkKQogewogCWRsaXN0 X2l0ZXIJaXRlcjsKIAogCWRsaXN0X2ZvcmVhY2goaXRlciwgJkJhY2tncm91bmRXb3JrZXJM aXN0KQogCXsKIAkJUmVnaXN0ZXJlZEJnV29ya2VyICpydzsKKwkJQmFja2dyb3VuZFdvcmtl clNsb3QgKnNsb3Q7CiAKIAkJcncgPSBkbGlzdF9jb250YWluZXIoUmVnaXN0ZXJlZEJnV29y a2VyLCByd19sbm9kZSwgaXRlci5jdXIpOwotCQlpZiAocnctPnJ3X3dvcmtlci5iZ3dfbm90 aWZ5X3BpZCA9PSBwaWQpCi0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkID0gMDsK KwkJQXNzZXJ0KHJ3LT5yd19zaG1lbV9zbG90IDwgbWF4X3dvcmtlcl9wcm9jZXNzZXMpOwor CQlzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3J3LT5yd19zaG1lbV9zbG90 XTsKKworCQlpZiAoc2xvdC0+bm90aWZ5X3BtY2hpbGQgPT0gcG1jaGlsZCkKKwkJeworCQkJ c2xvdC0+bm90aWZ5X3BtY2hpbGQgPSAwOworCQkJc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVy ID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwkJfQogCX0KIH0KIApAQCAtNTYzLDE0ICs1Njks MTQgQEAgRm9yZ2V0VW5zdGFydGVkQmFja2dyb3VuZFdvcmtlcnModm9pZCkKIAogCQkvKiBJ ZiBpdCdzIG5vdCB5ZXQgc3RhcnRlZCwgYW5kIHRoZXJlJ3Mgc29tZW9uZSB3YWl0aW5nIC4u LiAqLwogCQlpZiAoc2xvdC0+cGlkID09IEludmFsaWRQaWQgJiYKLQkJCXJ3LT5yd193b3Jr ZXIuYmd3X25vdGlmeV9waWQgIT0gMCkKKwkJCXNsb3QtPm5vdGlmeV9wcm9jX251bWJlciAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7CiAJCQkvKiAuLi4gdGhlbiB6YXAgaXQsIGFu ZCBub3RpZnkgdGhlIHdhaXRlciAqLwotCQkJaW50CQkJbm90aWZ5X3BpZCA9IHJ3LT5yd193 b3JrZXIuYmd3X25vdGlmeV9waWQ7CisJCQlQcm9jTnVtYmVyCW5vdGlmeV9wcm9jX251bWJl ciA9IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKIAogCQkJRm9yZ2V0QmFja2dyb3VuZFdv cmtlcihydyk7Ci0JCQlpZiAobm90aWZ5X3BpZCAhPSAwKQotCQkJCWtpbGwobm90aWZ5X3Bp ZCwgU0lHVVNSMSk7CisJCQlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJP Q19OVU1CRVIpCisJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIG5v dGlmeV9wcm9jX251bWJlcik7CiAJCX0KIAl9CiB9CkBAIC02MjQsMTEgKzYzMCw2IEBAIFJl c2V0QmFja2dyb3VuZFdvcmtlckNyYXNoVGltZXModm9pZCkKIAkJCSAqLwogCQkJcnctPnJ3 X2NyYXNoZWRfYXQgPSAwOwogCQkJcnctPnJ3X3BpZCA9IDA7Ci0KLQkJCS8qCi0JCQkgKiBJ ZiB0aGVyZSB3YXMgYW55b25lIHdhaXRpbmcgZm9yIGl0LCB0aGV5J3JlIGhpc3RvcnkuCi0J CQkgKi8KLQkJCXJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOwogCQl9CiAJfQog fQpAQCAtNzU2LDMyICs3NTcsMjggQEAgQmFja2dyb3VuZFdvcmtlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkvKgogCSAqIFNl dCB1cCBzaWduYWwgaGFuZGxlcnMuCiAJICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5k bGVycygpOwogCWlmICh3b3JrZXItPmJnd19mbGFncyAmIEJHV09SS0VSX0JBQ0tFTkRfREFU QUJBU0VfQ09OTkVDVElPTikKIAl7CiAJCS8qCi0JCSAqIFNJR0lOVCBpcyB1c2VkIHRvIHNp Z25hbCBjYW5jZWxpbmcgdGhlIGN1cnJlbnQgYWN0aW9uCisJCSAqIEVuYWJsZSBxdWVyeSBj YW5jZWxsYXRpb24gYnkgZGVmYXVsdC4gVGhlIGJhY2tncm91bmQgd29ya2VyIG1heQorCQkg KiBkaXNhYmxlIGZvciBtb3JlIGNvbnRyb2wgb24gd2hlbiBjYW5jZWxsYXRpb25zIGFyZSBh Y2NlcHRlZC4KIAkJICovCi0JCXBxc2lnbmFsKFNJR0lOVCwgU3RhdGVtZW50Q2FuY2VsSGFu ZGxlcik7Ci0JCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KTsKLQkJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOworCQlTZXRJ bnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9RVUVSWV9DQU5DRUwsIFByb2Nlc3NRdWVyeUNh bmNlbEludGVycnVwdCk7CisJCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FO Q0VMKTsKIAotCQkvKiBYWFggQW55IG90aGVyIGhhbmRsZXJzIG5lZWRlZCBoZXJlPyAqLwor CQkvKiBsaWtlIGluIHJlZ3VsYXIgYmFja2VuZHMgKi8KKwkJcHFzaWduYWwoU0lHRlBFLCBG bG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCX0KIAllbHNlCiAJeworCQkvKiBubyBjYW5jZWxs YXRpb24gaW4gYmFja2VuZHMgdGhhdCBkb24ndCBydW4gcXVlcmllcyAqLwogCQlwcXNpZ25h bChTSUdJTlQsIFNJR19JR04pOwotCQlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAkJ cHFzaWduYWwoU0lHRlBFLCBTSUdfSUdOKTsKIAl9Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGll KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0 bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNJR19JR04pOwogCiAJSW5pdGlh bGl6ZVRpbWVvdXRzKCk7CQkvKiBlc3RhYmxpc2hlcyBTSUdBTFJNIGhhbmRsZXIgKi8KIAot CXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19J R04pOwotCiAJLyoKIAkgKiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nl c3NpbmcgcmVzdW1lcyBoZXJlLgogCSAqCkBAIC05ODcsMTUgKzk4NCw2IEBAIFJlZ2lzdGVy QmFja2dyb3VuZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIpCiAJaWYgKCFTYW5p dHlDaGVja0JhY2tncm91bmRXb3JrZXIod29ya2VyLCBMT0cpKQogCQlyZXR1cm47CiAKLQlp ZiAod29ya2VyLT5iZ3dfbm90aWZ5X3BpZCAhPSAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJt c2coImJhY2tncm91bmQgd29ya2VyIFwiJXNcIjogb25seSBkeW5hbWljIGJhY2tncm91bmQg d29ya2VycyBjYW4gcmVxdWVzdCBub3RpZmljYXRpb24iLAotCQkJCQkJd29ya2VyLT5iZ3df bmFtZSkpKTsKLQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICogRW5mb3JjZSBtYXhpbXVtIG51 bWJlciBvZiB3b3JrZXJzLiAgTm90ZSB0aGlzIGlzIG92ZXJseSByZXN0cmljdGl2ZTogd2UK IAkgKiBjb3VsZCBhbGxvdyBtb3JlIG5vbi1zaG1lbS1jb25uZWN0ZWQgd29ya2VycywgYmVj YXVzZSB0aGVzZSBkb24ndCBjb3VudApAQCAtMTExMSw2ICsxMDk5LDI1IEBAIFJlZ2lzdGVy RHluYW1pY0JhY2tncm91bmRXb3JrZXIoQmFja2dyb3VuZFdvcmtlciAqd29ya2VyLAogCQkJ aWYgKHBhcmFsbGVsKQogCQkJCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdp c3Rlcl9jb3VudCsrOwogCisJCQlpZiAoKHNsb3QtPndvcmtlci5iZ3dfZmxhZ3MgJiBCR1dP UktFUl9TSE1FTV9BQ0NFU1MpICE9IDAgJiYKKwkJCQkoc2xvdC0+d29ya2VyLmJnd19mbGFn cyAmIEJHV09SS0VSX05PX05PVElGWSkgPT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFNl dCBub3RpZnlfcHJvY19udW1iZXIgc28gdGhhdCBwb3N0bWFzdGVyIHdpbGwgc2VuZCB1cyBh bgorCQkJCSAqIGludGVycnVwdC4gQWxzbyByZW1lbWJlciB0aGUgcG1jaGlsZCBzbG90IG51 bWJlcjsKKwkJCQkgKiBwb3N0bWFzdGVyIG5lZWRzIGl0IHRvIGRldGVjdCB3aGVuIHdlIGV4 aXQsIHRvIGRpc2FybSB0aGUKKwkJCQkgKiBub3RpZmljYXRpb24uCisJCQkJICovCisJCQkJ c2xvdC0+bm90aWZ5X3BtY2hpbGQgPSBNeVBNQ2hpbGRTbG90OworCQkJCXNsb3QtPm5vdGlm eV9wcm9jX251bWJlciA9IE15UHJvY051bWJlcjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJ CQkvKiBObyBub3RpZmljYXRpb25zLiAqLworCQkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0g MDsKKwkJCQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVS OworCQkJfQorCiAJCQkvKgogCQkJICogTWFrZSBzdXJlIHBvc3RtYXN0ZXIgZG9lc24ndCBz ZWUgdGhlIHNsb3QgYXMgaW4gdXNlIGJlZm9yZSBpdAogCQkJICogc2VlcyB0aGUgbmV3IGNv bnRlbnRzLgpAQCAtMTIxMSw4ICsxMjE4LDkgQEAgR2V0QmFja2dyb3VuZFdvcmtlclBpZChC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogICogQkdXSF9Q T1NUTUFTVEVSX0RJRUQsIHNpbmNlIGl0IHRoYXQgY2FzZSB3ZSBrbm93IHRoYXQgc3RhcnR1 cCB3aWxsIG5vdAogICogdGFrZSBwbGFjZS4KICAqCi0gKiBUaGUgY2FsbGVyICptdXN0KiBo YXZlIHNldCBvdXIgUElEIGFzIHRoZSB3b3JrZXIncyBiZ3dfbm90aWZ5X3BpZCwKLSAqIGVs c2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4gdGhlIHdvcmtlcidzIHN0 YXRlIGNoYW5nZXMuCisgKiBUaGlzIHdvcmtzIG9ubHkgaWYgdGhlIHdvcmtlciB3YXMgcmVn aXN0ZXJlZCB3aXRoIEJHV09SS0VSX1NITUVNX0FDQ0VTUyBhbmQKKyAqIHdpdGhvdXQgQkdX T1JLRVJfTk9fTk9USUZZLCBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRseSB3 aGVuIHRoZQorICogd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KICAqLwogQmd3SGFuZGxlU3Rh dHVzCiBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhh bmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKQEAgLTEyMzIsOSArMTI0MCw5IEBAIFdhaXRG b3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5k bGUsIHBpZF90ICpwaWRwKQogCQlpZiAoc3RhdHVzICE9IEJHV0hfTk9UX1lFVF9TVEFSVEVE KQogCQkJYnJlYWs7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xf TEFUQ0hfU0VUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwgMCwKLQkJCQkJICAgV0FJVF9FVkVO VF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50 ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRF UlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9C R1dPUktFUl9TVEFSVFVQKTsKIAogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKQog CQl7CkBAIC0xMjQyLDcgKzEyNTAsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0 dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKIAkJCWJy ZWFrOwogCQl9CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAl9CiAKIAlyZXR1cm4gc3RhdHVzOwpAQCAtMTI1 Niw4ICsxMjY0LDkgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTdGFydHVwKEJhY2tncm91 bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSwgcGlkX3QgKnBpZHApCiAgKiB1cCBhbmQgcmV0dXJu IEJHV0hfUE9TVE1BU1RFUl9ESUVELCBiZWNhdXNlIGl0J3MgdGhlIHBvc3RtYXN0ZXIgdGhh dAogICogbm90aWZpZXMgdXMgd2hlbiBhIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuCiAgKgot ICogVGhlIGNhbGxlciAqbXVzdCogaGF2ZSBzZXQgb3VyIFBJRCBhcyB0aGUgd29ya2VyJ3Mg Ymd3X25vdGlmeV9waWQsCi0gKiBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRs eSB3aGVuIHRoZSB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgorICogVGhpcyB3b3JrcyBvbmx5 IGlmIHRoZSB3b3JrZXIgd2FzIHJlZ2lzdGVyZWQgd2l0aCBCR1dPUktFUl9TSE1FTV9BQ0NF U1MgYW5kCisgKiB3aXRob3V0IEJHV09SS0VSX05PX05PVElGWSwgZWxzZSB3ZSB3aWxsIG5v dCBiZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUKKyAqIHdvcmtlcidzIHN0YXRlIGNoYW5n ZXMuCiAgKi8KIEJnd0hhbmRsZVN0YXR1cwogV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0 ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xMjc1LDkgKzEyODQs OSBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclNodXRkb3duKEJhY2tncm91bmRXb3JrZXJI YW5kbGUgKmhhbmRsZSkKIAkJaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCiAJCQlicmVh azsKIAotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQg fCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAotCQkJCQkgICBXQUlUX0VWRU5UX0JHV09SS0VS X1NIVVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01h c2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9QT1NUTUFTVEVSX0RFQVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9T SFVURE9XTik7CiAKIAkJaWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAt MTI4NSw3ICsxMjk0LDcgQEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNr Z3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCk7CiAJfQogCiAJcmV0dXJuIHN0YXR1czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIu YwppbmRleCBkYmQ2NzBjMTZjYy4uYTUzNTk2ZDQ5ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2Jnd3JpdGVyLmMKQEAgLTMyLDEyICszMiwxMyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgi CiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQu aCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEv cHFzaWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2Jnd3JpdGVyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpAQCAtOTcsMTYg Kzk4LDExIEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21t b24oKTsKIAogCS8qCi0JICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRo YXQgbWlnaHQgYmUgc2VudCB0byB1cy4KKwkgKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRsaW5n CiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKLQlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1RFUk0sIFNp Z25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwotCS8qIFNJR1FVSVQgaGFuZGxlciB3 YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFs KFNJR0FMUk0sIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBx c2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQlwcXNpZ25h bChTSUdVU1IyLCBTSUdfSUdOKTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7 CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfVEVSTUlOQVRFLCBQcm9jZXNzQXV4 UHJvY2Vzc1NodXRkb3duSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpOwogCiAJLyoKIAkgKiBXZSBqdXN0IHN0YXJ0ZWQsIGFzc3VtZSB0 aGVyZSBoYXMgYmVlbiBlaXRoZXIgYSBzaHV0ZG93biBvcgpAQCAtMjIwLDkgKzIxNiw5IEBA IEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90 IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWludAkJCXJjOwogCiAJCS8qIENsZWFyIGFueSBhbHJl YWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCi0JCVByb2Nlc3NNYWluTG9v cEludGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKgogCQkg KiBEbyBvbmUgY3ljbGUgb2YgZGlydHktYnVmZmVyIHdyaXRpbmcuCkBAIC0yOTUsMjIgKzI5 MSwyMiBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEs IHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiB3aWxsIGNhbGwgaXQgZXZlcnkgQmdX cml0ZXJEZWxheSBtc2VjLiAgV2hpbGUgaXQncyBub3QgY3JpdGljYWwgZm9yCiAJCSAqIGNv cnJlY3RuZXNzIHRoYXQgdGhhdCBiZSBleGFjdCwgdGhlIGZlZWRiYWNrIGxvb3AgbWlnaHQg bWlzYmVoYXZlCiAJCSAqIGlmIHdlIHN0cmF5IHRvbyBmYXIgZnJvbSB0aGF0LiAgSGVuY2Us IGF2b2lkIGxvYWRpbmcgdGhpcyBwcm9jZXNzCi0JCSAqIGRvd24gd2l0aCBsYXRjaCBldmVu dHMgdGhhdCBhcmUgbGlrZWx5IHRvIGhhcHBlbiBmcmVxdWVudGx5IGR1cmluZwotCQkgKiBu b3JtYWwgb3BlcmF0aW9uLgorCQkgKiBkb3duIHdpdGggaW50ZXJydXB0IGV2ZW50cyB0aGF0 IGFyZSBsaWtlbHkgdG8gaGFwcGVuIGZyZXF1ZW50bHkKKwkJICogZHVyaW5nIG5vcm1hbCBv cGVyYXRpb24uCiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ ICAgQmdXcml0ZXJEZWxheSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7 CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrLAorCQkJCQkJ ICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCQkgICBCZ1dyaXRlckRlbGF5IC8qIG1zICovICwgV0FJVF9FVkVOVF9CR1dSSVRFUl9N QUlOKTsKIAogCQkvKgotCQkgKiBJZiBubyBsYXRjaCBldmVudCBhbmQgQmdCdWZmZXJTeW5j IHNheXMgbm90aGluZydzIGhhcHBlbmluZywgZXh0ZW5kCisJCSAqIElmIG5vIGludGVycnVw dCBhbmQgQmdCdWZmZXJTeW5jIHNheXMgbm90aGluZydzIGhhcHBlbmluZywgZXh0ZW5kCiAJ CSAqIHRoZSBzbGVlcCBpbiAiaGliZXJuYXRpb24iIG1vZGUsIHdoZXJlIHdlIHNsZWVwIGZv ciBtdWNoIGxvbmdlcgogCQkgKiB0aGFuIGJnd3JpdGVyX2RlbGF5IHNheXMuICBGZXdlciB3 YWtldXBzIHNhdmUgZWxlY3RyaWNpdHkuICBXaGVuIGEKLQkJICogYmFja2VuZCBzdGFydHMg dXNpbmcgYnVmZmVycyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVzIHVwIGJ5IHNldHRpbmcKLQkJ ICogb3VyIGxhdGNoLiAgQmVjYXVzZSB0aGUgZXh0cmEgc2xlZXAgd2lsbCBwZXJzaXN0IG9u bHkgYXMgbG9uZyBhcyBubwotCQkgKiBidWZmZXIgYWxsb2NhdGlvbnMgaGFwcGVuLCB0aGlz IHNob3VsZCBub3QgZGlzdG9ydCB0aGUgYmVoYXZpb3Igb2YKLQkJICogQmdCdWZmZXJTeW5j J3MgY29udHJvbCBsb29wIHRvbyBiYWRseTsgZXNzZW50aWFsbHksIGl0IHdpbGwgdGhpbmsK LQkJICogdGhhdCB0aGUgc3lzdGVtLXdpZGUgaWRsZSBpbnRlcnZhbCBkaWRuJ3QgZXhpc3Qu CisJCSAqIGJhY2tlbmQgc3RhcnRzIHVzaW5nIGJ1ZmZlcnMgYWdhaW4sIGl0IHdpbGwgd2Fr ZSB1cyB1cCBieSBzZW5kaW5nCisJCSAqIHVzIGFuIGludGVycnVwdC4gIEJlY2F1c2UgdGhl IGV4dHJhIHNsZWVwIHdpbGwgcGVyc2lzdCBvbmx5IGFzIGxvbmcKKwkJICogYXMgbm8gYnVm ZmVyIGFsbG9jYXRpb25zIGhhcHBlbiwgdGhpcyBzaG91bGQgbm90IGRpc3RvcnQgdGhlCisJ CSAqIGJlaGF2aW9yIG9mIEJnQnVmZmVyU3luYydzIGNvbnRyb2wgbG9vcCB0b28gYmFkbHk7 IGVzc2VudGlhbGx5LCBpdAorCQkgKiB3aWxsIHRoaW5rIHRoYXQgdGhlIHN5c3RlbS13aWRl IGlkbGUgaW50ZXJ2YWwgZGlkbid0IGV4aXN0LgogCQkgKgogCQkgKiBUaGVyZSBpcyBhIHJh Y2UgY29uZGl0aW9uIGhlcmUsIGluIHRoYXQgYSBiYWNrZW5kIG1pZ2h0IGFsbG9jYXRlIGEK IAkJICogYnVmZmVyIGJldHdlZW4gdGhlIHRpbWUgQmdCdWZmZXJTeW5jIHNhdyB0aGUgYWxs b2MgY291bnQgYXMgemVybwpAQCAtMzI1LDEwICszMjEsMTEgQEAgQmFja2dyb3VuZFdyaXRl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAkJCS8qIEFzayBmb3Igbm90aWZpY2F0aW9uIGF0IG5leHQgYnVmZmVyIGFsbG9jYXRp b24gKi8KIAkJCVN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoTXlQcm9jTnVtYmVyKTsKIAkJCS8q IFNsZWVwIC4uLiAqLwotCQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJ CQkgQmdXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1IsCi0JCQkJCQkJIFdBSVRfRVZF TlRfQkdXUklURVJfSElCRVJOQVRFKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNr Rm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAor CQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RPUiwKKwkJCQkJ CQkJIFdBSVRfRVZFTlRfQkdXUklURVJfSElCRVJOQVRFKTsKIAkJCS8qIFJlc2V0IHRoZSBu b3RpZmljYXRpb24gcmVxdWVzdCBpbiBjYXNlIHdlIHRpbWVkIG91dCAqLwogCQkJU3RyYXRl Z3lOb3RpZnlCZ1dyaXRlcigtMSk7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNr cG9pbnRlci5jCmluZGV4IDk3OGE3ZDBlNjQ5Li4wNTQ4NzJhYWJjZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC0xMSw4ICsxMSwxMCBAQAogICogY29u ZGl0aW9uLikKICAqCiAgKiBUaGUgbm9ybWFsIHRlcm1pbmF0aW9uIHNlcXVlbmNlIGlzIHRo YXQgY2hlY2twb2ludGVyIGlzIGluc3RydWN0ZWQgdG8KLSAqIGV4ZWN1dGUgdGhlIHNodXRk b3duIGNoZWNrcG9pbnQgYnkgU0lHSU5ULiAgQWZ0ZXIgdGhhdCBjaGVja3BvaW50ZXIgd2Fp dHMKLSAqIHRvIGJlIHRlcm1pbmF0ZWQgdmlhIFNJR1VTUjIsIHdoaWNoIGluc3RydWN0cyB0 aGUgY2hlY2twb2ludGVyIHRvIGV4aXQoMCkuCisgKiBleGVjdXRlIHRoZSBzaHV0ZG93biBj aGVja3BvaW50IGJ5IFNJR0lOVCwgd2hpY2ggcmFpc2VzIHRoZQorICogSU5URVJSVVBUX1NI VVRET1dOX1hMT0cgaW50ZXJydXB0LiAgQWZ0ZXIgdGhhdCBjaGVja3BvaW50ZXIgd2FpdHMK KyAqIHRvIGJlIHRlcm1pbmF0ZWQgdmlhIFNJR1VTUjIsIHJhaXNpbmcgSU5URVJSVVBfVEVS TUlOQVRFLCB3aGljaCBpbnN0cnVjdHMKKyAqIHRoZSBjaGVja3BvaW50ZXIgdG8gZXhpdCgw KS4KICAqIEFsbCBiYWNrZW5kcyBtdXN0IGJlIHN0b3BwZWQgYmVmb3JlIFNJR0lOVCBvciBT SUdVU1IyIGlzIGlzc3VlZCEKICAqCiAgKiBFbWVyZ2VuY3kgdGVybWluYXRpb24gaXMgYnkg U0lHUVVJVDsgbGlrZSBhbnkgYmFja2VuZCwgdGhlIGNoZWNrcG9pbnRlcgpAQCAtNDQsMTMg KzQ2LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisj aW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxl cnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvYmd3cml0ZXIuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19z dWJzeXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgpAQCAtODUsMTAgKzg4LDEx IEBACiAgKiBUaGUgYWxnb3JpdGhtIGZvciBiYWNrZW5kcyBpczoKICAqCTEuIFJlY29yZCBj dXJyZW50IHZhbHVlcyBvZiBja3B0X2ZhaWxlZCBhbmQgY2twdF9zdGFydGVkLCBhbmQKICAq CSAgIHNldCByZXF1ZXN0IGZsYWdzLCB3aGlsZSBob2xkaW5nIGNrcHRfbGNrLgotICoJMi4g U2VuZCBzaWduYWwgdG8gcmVxdWVzdCBjaGVja3BvaW50LgorICoJMi4gU2VuZCBJTlRFUlJV UFRfV0FJVF9XQUtFVVAgdG8gd2FrZSB1cCB0aGUgY2hlY2twb2ludGVyLgogICoJMy4gU2xl ZXAgdW50aWwgY2twdF9zdGFydGVkIGNoYW5nZXMuICBOb3cgeW91IGtub3cgYSBjaGVja3Bv aW50IGhhcwogICoJICAgYmVndW4gc2luY2UgeW91IHN0YXJ0ZWQgdGhpcyBhbGdvcml0aG0g KGFsdGhvdWdoICpub3QqIHRoYXQgaXQgd2FzCi0gKgkgICBzcGVjaWZpY2FsbHkgaW5pdGlh dGVkIGJ5IHlvdXIgc2lnbmFsKSwgYW5kIHRoYXQgaXQgaXMgdXNpbmcgeW91ciBmbGFncy4K KyAqCSAgIHNwZWNpZmljYWxseSBpbml0aWF0ZWQgYnkgeW91ciBpbnRlcnJ1cHQpLCBhbmQg dGhhdCBpdCBpcyB1c2luZyB5b3VyCisgKgkgICBmbGFncy4KICAqCTQuIFJlY29yZCBuZXcg dmFsdWUgb2YgY2twdF9zdGFydGVkLgogICoJNS4gU2xlZXAgdW50aWwgY2twdF9kb25lID49 IHNhdmVkIHZhbHVlIG9mIGNrcHRfc3RhcnRlZC4gIChVc2UgbW9kdWxvCiAgKgkgICBhcml0 aG1ldGljIGhlcmUgaW4gY2FzZSBjb3VudGVycyB3cmFwIGFyb3VuZC4pICBOb3cgeW91IGtu b3cgYQpAQCAtMTYzLDcgKzE2Nyw2IEBAIGRvdWJsZQkJQ2hlY2tQb2ludENvbXBsZXRpb25U YXJnZXQgPSAwLjk7CiAgKiBQcml2YXRlIHN0YXRlCiAgKi8KIHN0YXRpYyBib29sIGNrcHRf YWN0aXZlID0gZmFsc2U7Ci1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IFNodXRkb3du WExPR1BlbmRpbmcgPSBmYWxzZTsKIAogLyogdGhlc2UgdmFsdWVzIGFyZSB2YWxpZCB3aGVu IGNrcHRfYWN0aXZlIGlzIHRydWU6ICovCiBzdGF0aWMgcGdfdGltZV90IGNrcHRfc3RhcnRf dGltZTsKQEAgLTE3NSw3ICsxNzgsNyBAQCBzdGF0aWMgcGdfdGltZV90IGxhc3RfeGxvZ19z d2l0Y2hfdGltZTsKIAogLyogUHJvdG90eXBlcyBmb3IgcHJpdmF0ZSBmdW5jdGlvbnMgKi8K IAotc3RhdGljIHZvaWQgUHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHModm9pZCk7Citz dGF0aWMgdm9pZCBQcm9jZXNzQ2hlY2twb2ludGVyQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZv aWQpOwogc3RhdGljIHZvaWQgQ2hlY2tBcmNoaXZlVGltZW91dCh2b2lkKTsKIHN0YXRpYyBi b29sIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHByb2dyZXNzKTsKIHN0YXRpYyBi b29sIEZhc3RDaGVja3BvaW50UmVxdWVzdGVkKHZvaWQpOwpAQCAtMjA1LDIyICsyMDgsMjgg QEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCUNoZWNrcG9pbnRlclNobWVtLT5jaGVja3BvaW50ZXJfcGlk ID0gTXlQcm9jUGlkOwogCiAJLyoKLQkgKiBQcm9wZXJseSBhY2NlcHQgb3IgaWdub3JlIHNp Z25hbHMgdGhlIHBvc3RtYXN0ZXIgbWlnaHQgc2VuZCB1cwotCSAqCi0JICogTm90ZTogd2Ug ZGVsaWJlcmF0ZWx5IGlnbm9yZSBTSUdURVJNLCBiZWNhdXNlIGR1cmluZyBhIHN0YW5kYXJk IFVuaXgKLQkgKiBzeXN0ZW0gc2h1dGRvd24gY3ljbGUsIGluaXQgd2lsbCBTSUdURVJNIGFs bCBwcm9jZXNzZXMgYXQgb25jZS4gIFdlCi0JICogd2FudCB0byB3YWl0IGZvciB0aGUgYmFj a2VuZHMgdG8gZXhpdCwgd2hlcmV1cG9uIHRoZSBwb3N0bWFzdGVyIHdpbGwKLQkgKiB0ZWxs IHVzIGl0J3Mgb2theSB0byBzaHV0IGRvd24gKHZpYSBTSUdVU1IyKS4KKwkgKiBJZ25vcmUg U0lHVEVSTSwgYmVjYXVzZSBkdXJpbmcgYSBzdGFuZGFyZCBVbml4IHN5c3RlbSBzaHV0ZG93 biBjeWNsZSwKKwkgKiBpbml0IHdpbGwgU0lHVEVSTSBhbGwgcHJvY2Vzc2VzIGF0IG9uY2Uu ICBXZSB3YW50IHRvIHdhaXQgZm9yIHRoZQorCSAqIGJhY2tlbmRzIHRvIGV4aXQsIHdoZXJl dXBvbiB0aGUgcG9zdG1hc3RlciB3aWxsIHRlbGwgdXMgaXQncyBva2F5IHRvCisJICogc2h1 dCBkb3duICh2aWEgSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpLgorCSAqLworCXBxc2lnbmFs KFNJR1RFUk0sIFNJR19JR04pOworCisJLyoKKwkgKiBQb3N0bWFzdGVyIHVzZXMgU0lHSU5U IHRvIHNlbmQgdXMgSU5URVJSVVBUX1NIVVRET1dOX1hMT0csIGFuZCBTSUdVU1IyCisJICog Zm9yIElOVEVSUlVQX1RFUk1JTkFURQogCSAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFs SGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CiAJcHFzaWduYWwoU0lHSU5ULCBSZXFTaHV0ZG93 blhMT0cpOwotCXBxc2lnbmFsKFNJR1RFUk0sIFNJR19JR04pOyAvKiBpZ25vcmUgU0lHVEVS TSAqLwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBv c3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwotCXBxc2ln bmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTaWduYWxIYW5kbGVyRm9y U2h1dGRvd25SZXF1ZXN0KTsKIAorCS8qIFNldCB1cCBpbnRlcnJ1cHQgaGFuZGxpbmcgKi8K KwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisJU2V0SW50ZXJydXB0SGFuZGxl cihJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwgUHJvY2Vzc0NoZWNrcG9pbnRlckNvbmZpZ1Jl bG9hZEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVM T0FEKTsKKworCS8qIHdlIHdpbGwgY2hlY2sgZm9yIElOVEVSUlVQVF9URVJNSU5BVEUgZXhw bGljaXRseSBpbiB0aGUgbG9vcCAqLworCURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1RF Uk1JTkFURSk7CisKIAkvKgogCSAqIEluaXRpYWxpemUgc28gdGhhdCBmaXJzdCB0aW1lLWRy aXZlbiBldmVudCBoYXBwZW5zIGF0IHRoZSBjb3JyZWN0IHRpbWUuCiAJICovCkBAIC0zNTks MTUgKzM2OCwxNSBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWJvb2wJCWNoa3B0X29yX3JzdHB0X3Rp bWVkID0gZmFsc2U7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBz ICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCk7CiAKIAkJLyoKLQkJICogUHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Ig c2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KKwkJICogUHJvY2VzcyBhbnkgcmVxdWVzdHMg b3IgaW50ZXJydXB0cyByZWNlaXZlZCByZWNlbnRseS4KIAkJICovCiAJCUFic29yYlN5bmNS ZXF1ZXN0cygpOwogCi0JCVByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1cHRzKCk7Ci0JCWlm IChTaHV0ZG93blhMT0dQZW5kaW5nIHx8IFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9TSFVURE9XTl9YTE9HKSB8fCBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5B VEUpKQogCQkJYnJlYWs7CiAKIAkJLyoKQEAgLTU0MSwxMCArNTUwLDEwIEBAIENoZWNrcG9p bnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAogCQkJLyoKIAkJCSAqIFdlIG1heSBoYXZlIHJlY2VpdmVkIGFuIGludGVycnVw dCBkdXJpbmcgdGhlIGNoZWNrcG9pbnQgYW5kIHRoZQotCQkJICogbGF0Y2ggbWlnaHQgaGF2 ZSBiZWVuIHJlc2V0IChlLmcuIGluIENoZWNrcG9pbnRXcml0ZURlbGF5KS4KKwkJCSAqIGlu dGVycnVwdCBtaWdodCBoYXZlIGJlZW4gcmVzZXQgKGUuZy4gaW4gQ2hlY2twb2ludFdyaXRl RGVsYXkpLgogCQkJICovCi0JCQlQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cygpOwot CQkJaWYgKFNodXRkb3duWExPR1BlbmRpbmcgfHwgU2h1dGRvd25SZXF1ZXN0UGVuZGluZykK KwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfU0hVVERPV05fWExPRykgfHwgSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRf VEVSTUlOQVRFKSkKIAkJCQlicmVhazsKIAkJfQogCkBAIC01NjksNyArNTc4LDcgQEAgQ2hl Y2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2xlZXAgdW50aWwgd2Ug YXJlIHNpZ25hbGVkIG9yIGl0J3MgdGltZSBmb3IgYW5vdGhlciBjaGVja3BvaW50IG9yCisJ CSAqIFNsZWVwIHVudGlsIHdlIGFyZSB3b2tlbiB1cCBvciBpdCdzIHRpbWUgZm9yIGFub3Ro ZXIgY2hlY2twb2ludCBvcgogCQkgKiB4bG9nIGZpbGUgc3dpdGNoLgogCQkgKi8KIAkJbm93 ID0gKHBnX3RpbWVfdCkgdGltZShOVUxMKTsKQEAgLTU4NSwxMCArNTk0LDEzIEBAIENoZWNr cG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkJCWN1cl90aW1lb3V0ID0gTWluKGN1cl90aW1lb3V0LCBYTG9nQXJjaGl2 ZVRpbWVvdXQgLSBlbGFwc2VkX3NlY3MpOwogCQl9CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChN eUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09O X1BNX0RFQVRILAotCQkJCQkJIGN1cl90aW1lb3V0ICogMTAwMEwgLyogY29udmVydCB0byBt cyAqLyAsCi0JCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfTUFJTik7CisJCSh2b2lk KSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCSBJTlRF UlJVUFRfV0FJVF9XQUtFVVAgfAorCQkJCQkJCSBJTlRFUlJVUFRfU0hVVERPV05fWExPRyB8 CisJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBjdXJfdGltZW91 dCAqIDEwMDBMIC8qIGNvbnZlcnQgdG8gbXMgKi8gLAorCQkJCQkJCSBXQUlUX0VWRU5UX0NI RUNLUE9JTlRFUl9NQUlOKTsKIAl9CiAKIAkvKgpAQCAtNTk3LDcgKzYwOSw3IEBAIENoZWNr cG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkgKi8KIAlFeGl0T25BbnlFcnJvciA9IHRydWU7CiAKLQlpZiAoU2h1dGRv d25YTE9HUGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERP V05fWExPRykpCiAJewogCQkvKgogCQkgKiBDbG9zZSBkb3duIHRoZSBkYXRhYmFzZS4KQEAg LTYxNSw3ICs2MjcsNyBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFRlbGwgcG9zdG1hc3RlciB0 aGF0IHdlJ3JlIGRvbmUuCiAJCSAqLwogCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05B TF9YTE9HX0lTX1NIVVRET1dOKTsKLQkJU2h1dGRvd25YTE9HUGVuZGluZyA9IGZhbHNlOwor CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfU0hVVERPV05fWExPRyk7CiAJfQogCiAJLyoK QEAgLTYyNSw1NSArNjM3LDM4IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKi8KIAlmb3IgKDs7KQog CXsKLQkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7Ci0KLQkJUHJvY2Vzc0NoZWNrcG9pbnRlckludGVycnVwdHMoKTsK KwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVu ZGluZykKKwkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkpCiAJ CQlicmVhazsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFU Q0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAwLAotCQkJCQkJIFdBSVRf RVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQVF9URVJNSU5BVEUs CisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJ IDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKIAl9CiAK IAkvKiBOb3JtYWwgZXhpdCBmcm9tIHRoZSBjaGVja3BvaW50ZXIgaXMgaGVyZSAqLwogCXBy b2NfZXhpdCgwKTsJCQkJLyogZG9uZSAqLwogfQogCi0vKgotICogUHJvY2VzcyBhbnkgbmV3 IGludGVycnVwdHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzQ2hlY2twb2ludGVySW50 ZXJydXB0cyh2b2lkKQorUHJvY2Vzc0NoZWNrcG9pbnRlckNvbmZpZ1JlbG9hZEludGVycnVw dCh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nlc3NQ cm9jU2lnbmFsQmFycmllcigpOwotCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0Jewot CQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7Ci0JCVByb2Nlc3NDb25maWdGaWxlKFBH Q19TSUdIVVApOworCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCi0JCS8qCi0J CSAqIENoZWNrcG9pbnRlciBpcyB0aGUgbGFzdCBwcm9jZXNzIHRvIHNodXQgZG93biwgc28g d2UgYXNrIGl0IHRvIGhvbGQKLQkJICogdGhlIGtleXMgZm9yIGEgcmFuZ2Ugb2Ygb3RoZXIg dGFza3MgcmVxdWlyZWQgbW9zdCBvZiB3aGljaCBoYXZlCi0JCSAqIG5vdGhpbmcgdG8gZG8g d2l0aCBjaGVja3BvaW50aW5nIGF0IGFsbC4KLQkJICoKLQkJICogRm9yIHZhcmlvdXMgcmVh c29ucywgc29tZSBjb25maWcgdmFsdWVzIGNhbiBjaGFuZ2UgZHluYW1pY2FsbHkgc28KLQkJ ICogdGhlIHByaW1hcnkgY29weSBvZiB0aGVtIGlzIGhlbGQgaW4gc2hhcmVkIG1lbW9yeSB0 byBtYWtlIHN1cmUgYWxsCi0JCSAqIGJhY2tlbmRzIHNlZSB0aGUgc2FtZSB2YWx1ZS4gIFdl IG1ha2UgQ2hlY2twb2ludGVyIHJlc3BvbnNpYmxlIGZvcgotCQkgKiB1cGRhdGluZyB0aGUg c2hhcmVkIG1lbW9yeSBjb3B5IGlmIHRoZSBwYXJhbWV0ZXIgc2V0dGluZyBjaGFuZ2VzCi0J CSAqIGJlY2F1c2Ugb2YgU0lHSFVQLgotCQkgKi8KLQkJVXBkYXRlU2hhcmVkTWVtb3J5Q29u ZmlnKCk7Ci0JfQotCi0JLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBv ZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisJLyoKKwkgKiBDaGVja3BvaW50 ZXIgaXMgdGhlIGxhc3QgcHJvY2VzcyB0byBzaHV0IGRvd24sIHNvIHdlIGFzayBpdCB0byBo b2xkIHRoZQorCSAqIGtleXMgZm9yIGEgcmFuZ2Ugb2Ygb3RoZXIgdGFza3MgcmVxdWlyZWQg bW9zdCBvZiB3aGljaCBoYXZlIG5vdGhpbmcgdG8KKwkgKiBkbyB3aXRoIGNoZWNrcG9pbnRp bmcgYXQgYWxsLgorCSAqCisJICogRm9yIHZhcmlvdXMgcmVhc29ucywgc29tZSBjb25maWcg dmFsdWVzIGNhbiBjaGFuZ2UgZHluYW1pY2FsbHkgc28gdGhlCisJICogcHJpbWFyeSBjb3B5 IG9mIHRoZW0gaXMgaGVsZCBpbiBzaGFyZWQgbWVtb3J5IHRvIG1ha2Ugc3VyZSBhbGwgYmFj a2VuZHMKKwkgKiBzZWUgdGhlIHNhbWUgdmFsdWUuICBXZSBtYWtlIENoZWNrcG9pbnRlciBy ZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlCisJICogc2hhcmVkIG1lbW9yeSBjb3B5IGlm IHRoZSBwYXJhbWV0ZXIgc2V0dGluZyBjaGFuZ2VzIGJlY2F1c2Ugb2YgU0lHSFVQLgorCSAq LworCVVwZGF0ZVNoYXJlZE1lbW9yeUNvbmZpZygpOwogfQogCiAvKgpAQCAtNzg1LDI0ICs3 ODAsMTggQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jl c3MpCiAJaWYgKCFBbUNoZWNrcG9pbnRlclByb2Nlc3MoKSkKIAkJcmV0dXJuOwogCisJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKKwogCS8qCiAJICogUGVyZm9ybSB0aGUgdXN1YWwgZHV0 aWVzIGFuZCB0YWtlIGEgbmFwLCB1bmxlc3Mgd2UncmUgYmVoaW5kIHNjaGVkdWxlLAogCSAq IGluIHdoaWNoIGNhc2Ugd2UganVzdCB0cnkgdG8gY2F0Y2ggdXAgYXMgcXVpY2tseSBhcyBw b3NzaWJsZS4KIAkgKi8KIAlpZiAoIShmbGFncyAmIENIRUNLUE9JTlRfRkFTVCkgJiYKLQkJ IVNodXRkb3duWExPR1BlbmRpbmcgJiYKLQkJIVNodXRkb3duUmVxdWVzdFBlbmRpbmcgJiYK KwkJIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpICYmCisJCSFJ bnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpICYmCiAJCSFGYXN0Q2hlY2tw b2ludFJlcXVlc3RlZCgpICYmCiAJCUlzQ2hlY2twb2ludE9uU2NoZWR1bGUocHJvZ3Jlc3Mp KQogCXsKLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKLQkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwot CQkJLyogdXBkYXRlIHNobWVtIGNvcGllcyBvZiBjb25maWcgdmFyaWFibGVzICovCi0JCQlV cGRhdGVTaGFyZWRNZW1vcnlDb25maWcoKTsKLQkJfQotCiAJCUFic29yYlN5bmNSZXF1ZXN0 cygpOwogCQlhYnNvcmJfY291bnRlciA9IFdSSVRFU19QRVJfQUJTT1JCOwogCkBAIC04MTcs MTAgKzgwNiwxMiBAQCBDaGVja3BvaW50V3JpdGVEZWxheShpbnQgZmxhZ3MsIGRvdWJsZSBw cm9ncmVzcykKIAkJICogQ2hlY2twb2ludGVyIGFuZCBiZ3dyaXRlciBhcmUgbm8gbG9uZ2Vy IHJlbGF0ZWQgc28gdGFrZSB0aGUgQmlnCiAJCSAqIFNsZWVwLgogCQkgKi8KLQkJV2FpdExh dGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9U SU1FT1VULAotCQkJCSAgMTAwLAotCQkJCSAgV0FJVF9FVkVOVF9DSEVDS1BPSU5UX1dSSVRF X0RFTEFZKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJV2FpdEludGVycnVwdChDaGVj a0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJ CQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQs CisJCQkJCSAgMTAwLAorCQkJCQkgIFdBSVRfRVZFTlRfQ0hFQ0tQT0lOVF9XUklURV9ERUxB WSk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJfQogCWVs c2UgaWYgKC0tYWJzb3JiX2NvdW50ZXIgPD0gMCkKIAl7CkBAIC04MzIsMTAgKzgyMyw2IEBA IENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHByb2dyZXNzKQogCQlB YnNvcmJTeW5jUmVxdWVzdHMoKTsKIAkJYWJzb3JiX2NvdW50ZXIgPSBXUklURVNfUEVSX0FC U09SQjsKIAl9Ci0KLQkvKiBDaGVjayBmb3IgYmFycmllciBldmVudHMuICovCi0JaWYgKFBy b2NTaWduYWxCYXJyaWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7 CiB9CiAKIC8qCkBAIC05MjQsMTIgKzkxMSwxMSBAQCBJc0NoZWNrcG9pbnRPblNjaGVkdWxl KGRvdWJsZSBwcm9ncmVzcykKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKi8KIAotLyogU0lHSU5UOiBzZXQgZmxhZyB0byB0cmlnZ2VyIHdyaXRpbmcgb2Ygc2h1 dGRvd24gY2hlY2twb2ludCAqLworLyogU0lHSU5UOiByYWlzZSBpbnRlcnJ1cHQgdG8gdHJp Z2dlciB3cml0aW5nIG9mIHNodXRkb3duIGNoZWNrcG9pbnQgKi8KIHN0YXRpYyB2b2lkCiBS ZXFTaHV0ZG93blhMT0coU0lHTkFMX0FSR1MpCiB7Ci0JU2h1dGRvd25YTE9HUGVuZGluZyA9 IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X1NIVVRET1dOX1hMT0cpOwogfQogCiAKQEAgLTExMDIsMTQgKzEwODgsMTUgQEAgUmVxdWVz dENoZWNrcG9pbnQoaW50IGZsYWdzKQogCVNwaW5Mb2NrUmVsZWFzZSgmQ2hlY2twb2ludGVy U2htZW0tPmNrcHRfbGNrKTsKIAogCS8qCi0JICogU2V0IGNoZWNrcG9pbnRlcidzIGxhdGNo IHRvIHJlcXVlc3QgY2hlY2twb2ludC4gIEl0J3MgcG9zc2libGUgdGhhdCB0aGUKLQkgKiBj aGVja3BvaW50ZXIgaGFzbid0IHN0YXJ0ZWQgeWV0LCBzbyB3ZSB3aWxsIHJldHJ5IGEgZmV3 IHRpbWVzIGlmCi0JICogbmVlZGVkLiAgKEFjdHVhbGx5LCBtb3JlIHRoYW4gYSBmZXcgdGlt ZXMsIHNpbmNlIG9uIHNsb3cgb3Igb3ZlcmxvYWRlZAotCSAqIGJ1aWxkZmFybSBtYWNoaW5l cywgaXQncyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIGNoZWNrcG9pbnRlciBjYW4gdGFrZQot CSAqIHNldmVyYWwgc2Vjb25kcyB0byBzdGFydC4pICBIb3dldmVyLCBpZiBub3QgdG9sZCB0 byB3YWl0IGZvciB0aGUKLQkgKiBjaGVja3BvaW50IHRvIG9jY3VyLCB3ZSBjb25zaWRlciBm YWlsdXJlIHRvIHNldCB0aGUgbGF0Y2ggdG8gYmUKLQkgKiBub25mYXRhbCBhbmQgbWVyZWx5 IExPRyBpdC4gIFRoZSBjaGVja3BvaW50ZXIgc2hvdWxkIHNlZSB0aGUgcmVxdWVzdAotCSAq IHdoZW4gaXQgZG9lcyBzdGFydCwgd2l0aCBvciB3aXRob3V0IHRoZSBTZXRMYXRjaCgpLgor CSAqIFNlbmQgSU5URVJSVVBUX1dBSVRfV0FLRVVQIHRvIHdha2UgdXAgdGhlIGNoZWNrcG9p bnRlci4gIEl0J3MgcG9zc2libGUKKwkgKiB0aGF0IHRoZSBjaGVja3BvaW50ZXIgaGFzbid0 IHN0YXJ0ZWQgeWV0LCBzbyB3ZSB3aWxsIHJldHJ5IGEgZmV3IHRpbWVzCisJICogaWYgbmVl ZGVkLiAgKEFjdHVhbGx5LCBtb3JlIHRoYW4gYSBmZXcgdGltZXMsIHNpbmNlIG9uIHNsb3cg b3IKKwkgKiBvdmVybG9hZGVkIGJ1aWxkZmFybSBtYWNoaW5lcywgaXQncyBiZWVuIG9ic2Vy dmVkIHRoYXQgdGhlIGNoZWNrcG9pbnRlcgorCSAqIGNhbiB0YWtlIHNldmVyYWwgc2Vjb25k cyB0byBzdGFydC4pICBIb3dldmVyLCBpZiBub3QgdG9sZCB0byB3YWl0IGZvcgorCSAqIHRo ZSBjaGVja3BvaW50IHRvIG9jY3VyLCB3ZSBjb25zaWRlciBmYWlsdXJlIHRvIHdha2UgdXAg dGhlCisJICogY2hlY2twb2ludGVyIHRvIGJlIG5vbmZhdGFsIGFuZCBtZXJlbHkgTE9HIGl0 LiAgVGhlIGNoZWNrcG9pbnRlciBzaG91bGQKKwkgKiBzZWUgdGhlIHJlcXVlc3Qgd2hlbiBp dCBkb2VzIHN0YXJ0LCB3aXRoIG9yIHdpdGhvdXQgdGhlCisJICogU2VuZEludGVycnVwdCgp LgogCSAqLwogI2RlZmluZSBNQVhfU0lHTkFMX1RSSUVTIDYwMAkvKiBtYXggd2FpdCA2MC4w IHNlYyAqLwogCWZvciAobnRyaWVzID0gMDs7IG50cmllcysrKQpAQCAtMTEyOCw3ICsxMTE1 LDcgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdzKQogCQl9CiAJCWVsc2UKIAkJewot CQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNoZWNrcG9pbnRlclByb2MpLT5wcm9j TGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIGNoZWNr cG9pbnRlclByb2MpOwogCQkJLyogbm90aWZpZWQgc3VjY2Vzc2Z1bGx5ICovCiAJCQlicmVh azsKIAkJfQpAQCAtMTI1OSw3ICsxMjQ2LDcgQEAgRm9yd2FyZFN5bmNSZXF1ZXN0KGNvbnN0 IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0VHlwZSB0eXBlKQogCQlQcm9jTnVtYmVyCWNo ZWNrcG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJlByb2NHbG9iYWwtPmNoZWNr cG9pbnRlclByb2MpOwogCiAJCWlmIChjaGVja3BvaW50ZXJQcm9jICE9IElOVkFMSURfUFJP Q19OVU1CRVIpCi0JCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoY2hlY2twb2ludGVy UHJvYyktPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCwgY2hlY2twb2ludGVyUHJvYyk7CiAJfQogCiAJcmV0dXJuIHRydWU7CkBAIC0xNTQw LDUgKzE1MjcsNSBAQCBXYWtldXBDaGVja3BvaW50ZXIodm9pZCkKIAlQcm9jTnVtYmVyCWNo ZWNrcG9pbnRlclByb2MgPSBwZ19hdG9taWNfcmVhZF91MzIoJnByb2NnbG9iYWwtPmNoZWNr cG9pbnRlclByb2MpOwogCiAJaWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9D X05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNoZWNrcG9pbnRlclBy b2MpLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCwgY2hlY2twb2ludGVyUHJvYyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQu YwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJjMGZmMDEyYzUuLjAwMDAwMDAw MDAwCi0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKKysrIC9kZXYv bnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICog aW50ZXJydXB0LmMKLSAqCSAgSW50ZXJydXB0IGhhbmRsaW5nIHJvdXRpbmVzLgotICoKLSAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBJREVOVElGSUNB VElPTgotICoJICBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCi0gKgotICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLQotI2luY2x1ZGUgInBvc3RncmVzLmgiCi0KLSNp bmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUg InBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFs LmgiCi0jaW5jbHVkZSAidXRpbHMvZ3VjLmgiCi0jaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKLQotdm9sYXRpbGUgc2lnX2F0b21pY190IENvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nID0gZmFs c2U7Ci0KLS8qCi0gKiBTaW1wbGUgaW50ZXJydXB0IGhhbmRsZXIgZm9yIG1haW4gbG9vcHMg b2YgYmFja2dyb3VuZCBwcm9jZXNzZXMuCi0gKi8KLXZvaWQKLVByb2Nlc3NNYWluTG9vcElu dGVycnVwdHModm9pZCkKLXsKLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQ cm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKLQotCWlmIChDb25maWdSZWxvYWRQZW5kaW5n KQotCXsKLQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwotCQlQcm9jZXNzQ29uZmln RmlsZShQR0NfU0lHSFVQKTsKLQl9Ci0KLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykK LQkJcHJvY19leGl0KDApOwotCi0JLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250 ZXh0cyBvZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcp Ci0JCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7Ci19Ci0KLS8qCi0gKiBT aW1wbGUgc2lnbmFsIGhhbmRsZXIgZm9yIHRyaWdnZXJpbmcgYSBjb25maWd1cmF0aW9uIHJl bG9hZC4KLSAqCi0gKiBOb3JtYWxseSwgdGhpcyBoYW5kbGVyIHdvdWxkIGJlIHVzZWQgZm9y IFNJR0hVUC4gVGhlIGlkZWEgaXMgdGhhdCBjb2RlCi0gKiB3aGljaCB1c2VzIGl0IHdvdWxk IGFycmFuZ2UgdG8gY2hlY2sgdGhlIENvbmZpZ1JlbG9hZFBlbmRpbmcgZmxhZyBhdAotICog Y29udmVuaWVudCBwbGFjZXMgaW5zaWRlIG1haW4gbG9vcHMsIG9yIGVsc2UgY2FsbCBQcm9j ZXNzTWFpbkxvb3BJbnRlcnJ1cHRzLgotICovCi12b2lkCi1TaWduYWxIYW5kbGVyRm9yQ29u ZmlnUmVsb2FkKFNJR05BTF9BUkdTKQotewotCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi0vKgotICogU2ltcGxlIHNpZ25hbCBoYW5k bGVyIGZvciBleGl0aW5nIHF1aWNrbHkgYXMgaWYgZHVlIHRvIGEgY3Jhc2guCi0gKgotICog Tm9ybWFsbHksIHRoaXMgd291bGQgYmUgdXNlZCBmb3IgaGFuZGxpbmcgU0lHUVVJVC4KLSAq Lwotdm9pZAotU2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdChTSUdOQUxfQVJHUykKLXsKLQkv KgotCSAqIFdlIERPIE5PVCB3YW50IHRvIHJ1biBwcm9jX2V4aXQoKSBvciBhdGV4aXQoKSBj YWxsYmFja3MgLS0gd2UncmUgaGVyZQotCSAqIGJlY2F1c2Ugc2hhcmVkIG1lbW9yeSBtYXkg YmUgY29ycnVwdGVkLCBzbyB3ZSBkb24ndCB3YW50IHRvIHRyeSB0bwotCSAqIGNsZWFuIHVw IG91ciB0cmFuc2FjdGlvbi4gIEp1c3QgbmFpbCB0aGUgd2luZG93cyBzaHV0IGFuZCBnZXQg b3V0IG9mCi0JICogdG93bi4gIFRoZSBjYWxsYmFja3Mgd291bGRuJ3QgYmUgc2FmZSB0byBy dW4gZnJvbSBhIHNpZ25hbCBoYW5kbGVyLAotCSAqIGFueXdheS4KLQkgKgotCSAqIE5vdGUg d2UgZG8gX2V4aXQoMikgbm90IF9leGl0KDApLiAgVGhpcyBpcyB0byBmb3JjZSB0aGUgcG9z dG1hc3RlciBpbnRvCi0JICogYSBzeXN0ZW0gcmVzZXQgY3ljbGUgaWYgc29tZW9uZSBzZW5k cyBhIG1hbnVhbCBTSUdRVUlUIHRvIGEgcmFuZG9tCi0JICogYmFja2VuZC4gIFRoaXMgaXMg bmVjZXNzYXJ5IHByZWNpc2VseSBiZWNhdXNlIHdlIGRvbid0IGNsZWFuIHVwIG91cgotCSAq IHNoYXJlZCBtZW1vcnkgc3RhdGUuICAoVGhlICJkZWFkIG1hbiBzd2l0Y2giIG1lY2hhbmlz bSBpbiBwbXNpZ25hbC5jCi0JICogc2hvdWxkIGVuc3VyZSB0aGUgcG9zdG1hc3RlciBzZWVz IHRoaXMgYXMgYSBjcmFzaCwgdG9vLCBidXQgbm8gaGFybSBpbgotCSAqIGJlaW5nIGRvdWJs eSBzdXJlLikKLQkgKi8KLQlfZXhpdCgyKTsKLX0KLQotLyoKLSAqIFNpbXBsZSBzaWduYWwg aGFuZGxlciBmb3IgdHJpZ2dlcmluZyBhIGxvbmctcnVubmluZyBiYWNrZ3JvdW5kIHByb2Nl c3MgdG8KLSAqIHNodXQgZG93biBhbmQgZXhpdC4KLSAqCi0gKiBUeXBpY2FsbHksIHRoaXMg aGFuZGxlciB3b3VsZCBiZSB1c2VkIGZvciBTSUdURVJNLCBidXQgc29tZSBwcm9jZXNzZXMg dXNlCi0gKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVy IGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIKLSAqIGV4aXQgb24gU0lHVVNSMiwgYW5kIHRo ZSBXQUwgd3JpdGVyIGV4aXRzIG9uIGVpdGhlciBTSUdJTlQgb3IgU0lHVEVSTS4KLSAqCi0g KiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHNob3VsZCBiZSBjaGVja2VkIGF0IGEgY29udmVu aWVudCBwbGFjZSB3aXRoaW4gdGhlCi0gKiBtYWluIGxvb3AsIG9yIGVsc2UgdGhlIG1haW4g bG9vcCBzaG91bGQgY2FsbCBQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzLgotICovCi12b2lk Ci1TaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KFNJR05BTF9BUkdTKQotewotCVNo dXRkb3duUmVxdWVzdFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOwotfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9tZXNvbi5idWlsZCBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvbWVzb24uYnVpbGQKaW5kZXggZTFmNzA3MjY2MDQuLmZiZDQw Y2IxMGRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL21lc29uLmJ1aWxk CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbWVzb24uYnVpbGQKQEAgLTcsNyArNyw2 IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2Jnd3JpdGVyLmMnLAogICAnY2hl Y2twb2ludGVyLmMnLAogICAnZm9ya19wcm9jZXNzLmMnLAotICAnaW50ZXJydXB0LmMnLAog ICAnbGF1bmNoX2JhY2tlbmQuYycsCiAgICdwZ2FyY2guYycsCiAgICdwbWNoaWxkLmMnLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKaW5kZXggMTBhNWVmOWUxNWMuLjFmNGMzNTc2ZTVi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTMzLDE3ICszMywxNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiYXJjaGl2ZS9hcmNo aXZlX21vZHVsZS5oIgogI2luY2x1ZGUgImFyY2hpdmUvc2hlbGxfYXJjaGl2ZS5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJz LmgiCiAjaW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNp Z25hbC5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4 cHJvY2Vzcy5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9wZ2FyY2guaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92 YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5cy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBA IC0xMzIsMTEgKzEzMiw2IEBAIHN0cnVjdCBhcmNoX2ZpbGVzX3N0YXRlCiAKIHN0YXRpYyBz dHJ1Y3QgYXJjaF9maWxlc19zdGF0ZSAqYXJjaF9maWxlcyA9IE5VTEw7CiAKLS8qCi0gKiBG bGFncyBzZXQgYnkgaW50ZXJydXB0IGhhbmRsZXJzIGZvciBsYXRlciBzZXJ2aWNlIGluIHRo ZSBtYWluIGxvb3AuCi0gKi8KLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVhZHlf dG9fc3RvcCA9IGZhbHNlOwotCiAvKiAtLS0tLS0tLS0tCiAgKiBMb2NhbCBmdW5jdGlvbiBm b3J3YXJkIGRlY2xhcmF0aW9ucwogICogLS0tLS0tLS0tLQpAQCAtMTQ4LDEwICsxNDMsMTEg QEAgc3RhdGljIGJvb2wgcGdhcmNoX2FyY2hpdmVYbG9nKGNoYXIgKnhsb2cpOwogc3RhdGlj IGJvb2wgcGdhcmNoX3JlYWR5WGxvZyhjaGFyICp4bG9nKTsKIHN0YXRpYyB2b2lkIHBnYXJj aF9hcmNoaXZlRG9uZShjaGFyICp4bG9nKTsKIHN0YXRpYyB2b2lkIHBnYXJjaF9kaWUoaW50 IGNvZGUsIERhdHVtIGFyZyk7Ci1zdGF0aWMgdm9pZCBQcm9jZXNzUGdBcmNoSW50ZXJydXB0 cyh2b2lkKTsKIHN0YXRpYyBpbnQJcmVhZHlfZmlsZV9jb21wYXJhdG9yKERhdHVtIGEsIERh dHVtIGIsIHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBMb2FkQXJjaGl2ZUxpYnJhcnkodm9p ZCk7CiBzdGF0aWMgdm9pZCBwZ2FyY2hfY2FsbF9tb2R1bGVfc2h1dGRvd25fY2IoaW50IGNv ZGUsIERhdHVtIGFyZyk7CitzdGF0aWMgdm9pZCBwZ2FyY2hfUHJvY2Vzc0NvbmZpZ1JlbG9h ZEludGVycnVwdCh2b2lkKTsKKwogCiAvKiBSZXBvcnQgc2hhcmVkIG1lbW9yeSBzcGFjZSBu ZWVkZWQgYnkgUGdBcmNoU2htZW1Jbml0ICovCiBTaXplCkBAIC0yMjUsMTggKzIyMSwyNyBA QCBQZ0FyY2hpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCUF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9uKCk7CiAKIAkvKgot CSAqIElnbm9yZSBhbGwgc2lnbmFscyB1c3VhbGx5IGJvdW5kIHRvIHNvbWUgYWN0aW9uIGlu IHRoZSBwb3N0bWFzdGVyLAotCSAqIGV4Y2VwdCBmb3IgU0lHSFVQLCBTSUdURVJNLCBTSUdV U1IxLCBTSUdVU1IyLCBhbmQgU0lHUVVJVC4KKwkgKiBubyBxdWVyeSBjYW5jZWwuIFhYWDog c2hvdWxkIHdlIGxlYXZlIHRoZSBzaWduYWwgaGFuZGxlciBpbiBwbGFjZSBhbmQKKwkgKiBq dXN0IG5vdCBpbnN0YWxsIGFuIGludGVycnVwdCBoYW5kbGVyIGZvciBpdD8KIAkgKi8KLQlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCS8qIGFu IGludGVycnVwdCBoYW5kbGVyIGZvciBpdD8gKi8KIAlwcXNpZ25hbChTSUdJTlQsIFNJR19J R04pOwotCXBxc2lnbmFsKFNJR1RFUk0sIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVl c3QpOwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBv c3RtYXN0ZXJDaGlsZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwotCXBxc2ln bmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKTsKKworCS8qIFRPRE86IHVzZSBpbnRlcnJ1cHQgZm9yIHRoaXMg ZGlyZWN0bHkgKi8KIAlwcXNpZ25hbChTSUdVU1IyLCBwZ2FyY2hfd2FrZW5fc3RvcCk7CiAK KwkvKgorCSAqIFRoZXNlIGludGVycnVwdCBoYW5kbGVycyBhcmUgY2FsbGVkIGluIHRoZSBs b29wcyBwZ2FyY2hfTWFpbkxvb3AgYW5kCisJICogcGdhcmNoX0FyY2hpdmVyQ29weUxvb3Au IERvIG5vdCBzZXQgSU5URVJSVVBUX1RFUk1JTkFURSBoYW5kbGVyLAorCSAqIGJlY2F1c2Ug dGhhdCdzIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBsb29wcy4KKwkgKi8KKwlTZXRJbnRlcnJ1 cHRIYW5kbGVyKElOVEVSUlVQVF9DT05GSUdfUkVMT0FELCBwZ2FyY2hfUHJvY2Vzc0NvbmZp Z1JlbG9hZEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdf UkVMT0FEKTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9CQVJSSUVSLCBQcm9j ZXNzUHJvY1NpZ25hbEJhcnJpZXIpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQkFS UklFUik7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05U RVhULCBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCk7CisJRW5hYmxlSW50ZXJy dXB0KElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpOworCiAJLyogVW5ibG9jayBzaWdu YWxzICh0aGV5IHdlcmUgYmxvY2tlZCB3aGVuIHRoZSBwb3N0bWFzdGVyIGZvcmtlZCB1cykg Ki8KIAlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCkBA IC0yNDcsOCArMjUyLDggQEAgUGdBcmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlvbl9zaG1lbV9leGl0KHBnYXJjaF9k aWUsIDApOwogCiAJLyoKLQkgKiBBZHZlcnRpc2Ugb3VyIHByb2MgbnVtYmVyIHNvIHRoYXQg YmFja2VuZHMgY2FuIHVzZSBvdXIgbGF0Y2ggdG8gd2FrZSB1cwotCSAqIHVwIHdoaWxlIHdl J3JlIHNsZWVwaW5nLgorCSAqIEFkdmVydGlzZSBvdXIgcHJvYyBudW1iZXIgc28gdGhhdCBi YWNrZW5kcyBjYW4gd2FrZSB1cyB1cCB3aGlsZSB3ZSdyZQorCSAqIHNsZWVwaW5nLgogCSAq LwogCVBnQXJjaC0+cGdwcm9jbm8gPSBNeVByb2NOdW1iZXI7CiAKQEAgLTI4MiwxMyArMjg3 LDEyIEBAIFBnQXJjaFdha2V1cCh2b2lkKQogCWludAkJCWFyY2hfcGdwcm9jbm8gPSBQZ0Fy Y2gtPnBncHJvY25vOwogCiAJLyoKLQkgKiBXZSBkb24ndCBhY3F1aXJlIFByb2NBcnJheUxv Y2sgaGVyZS4gIEl0J3MgYWN0dWFsbHkgZmluZSBiZWNhdXNlCi0JICogcHJvY0xhdGNoIGlz bid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuIHBvdGVudGlhbGx5IHNldCB0aGUgd3Jv bmcKLQkgKiBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLiAgRXZlbiBpbiB0aGF0 IGNhc2UgdGhlIGFyY2hpdmVyIHdpbGwKLQkgKiBiZSByZWxhdW5jaGVkIHNob3J0bHkgYW5k IHdpbGwgc3RhcnQgYXJjaGl2aW5nLgorCSAqIFdlIGRvbid0IGFjcXVpcmUgUHJvY0FycmF5 TG9jayBoZXJlLCBzbyB3ZSBtYXkgc2VuZCB0aGUgaW50ZXJydXB0IHRvCisJICogd3Jvbmcg cHJvY2VzcywgYnV0IHRoYXQncyBoYXJtbGVzcy4gIEV2ZW4gaW4gdGhhdCBjYXNlIHRoZSBh cmNoaXZlcgorCSAqIHdpbGwgYmUgcmVsYXVuY2hlZCBzaG9ydGx5IGFuZCB3aWxsIHN0YXJ0 IGFyY2hpdmluZy4KIAkgKi8KIAlpZiAoYXJjaF9wZ3Byb2NubyAhPSBJTlZBTElEX1BST0Nf TlVNQkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoYXJjaF9wZ3Byb2Nubykt PnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBh cmNoX3BncHJvY25vKTsKIH0KIAogCkBAIC0yOTcsOCArMzAxLDcgQEAgc3RhdGljIHZvaWQK IHBnYXJjaF93YWtlbl9zdG9wKFNJR05BTF9BUkdTKQogewogCS8qIHNldCBmbGFnIHRvIGRv IGEgZmluYWwgY3ljbGUgYW5kIHNodXQgZG93biBhZnRlcndhcmRzICovCi0JcmVhZHlfdG9f c3RvcCA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX1NIVVRET1dOX1BHQVJDSCk7CiB9CiAKIC8qCkBAIC0zMDksNyArMzEyLDcgQEAg cGdhcmNoX3dha2VuX3N0b3AoU0lHTkFMX0FSR1MpCiBzdGF0aWMgdm9pZAogcGdhcmNoX01h aW5Mb29wKHZvaWQpCiB7Ci0JYm9vbAkJdGltZV90b19zdG9wOworCWJvb2wJCXRpbWVfdG9f c3RvcCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55dGhpbmcg Zm9yIHRoZSBhcmNoaXZlciB0byBkbyBleGNlcHQgdG8gd2FpdCBmb3IgYQpAQCAtMzE4LDEz ICszMjEsMTUgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJICovCiAJZG8KIAl7Ci0JCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIEZJWE1FOiBpcyB0aGlzIHVzZWQgZm9yIHNvbWV0 aGluZyBpbiBwZ2FyY2g/IFRvIG51ZGdlIGl0PyAqLworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIFdoZW4gd2UgZ2V0IFNJR1VTUjIsIHdlIGRv IG9uZSBtb3JlIGFyY2hpdmUgY3ljbGUsIHRoZW4gZXhpdCAqLwotCQl0aW1lX3RvX3N0b3Ag PSByZWFkeV90b19zdG9wOworCQlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hV VERPV05fUEdBUkNIKSkKKwkJCXRpbWVfdG9fc3RvcCA9IHRydWU7CiAKIAkJLyogQ2hlY2sg Zm9yIGJhcnJpZXIgZXZlbnRzIGFuZCBjb25maWcgdXBkYXRlICovCi0JCVByb2Nlc3NQZ0Fy Y2hJbnRlcnJ1cHRzKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyoKIAkJ ICogSWYgd2UndmUgZ290dGVuIFNJR1RFUk0sIHdlIG5vcm1hbGx5IGp1c3Qgc2l0IGFuZCBk byBub3RoaW5nIHVudGlsCkBAIC0zMzQsNyArMzM5LDcgQEAgcGdhcmNoX01haW5Mb29wKHZv aWQpCiAJCSAqIHRoYXQgdGhlIHBvc3RtYXN0ZXIgY2FuIHN0YXJ0IGEgbmV3IGFyY2hpdmVy IGlmIG5lZWRlZC4gIEFsc28gZXhpdAogCQkgKiBpZiB0aW1lIHVuZXhwZWN0ZWRseSBnb2Vz IGJhY2t3YXJkLgogCQkgKi8KLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQl7CiAJCQl0aW1l X3QJCWN1cnRpbWUgPSB0aW1lKE5VTEwpOwogCkBAIC0zNDYsNiArMzUxLDcgQEAgcGdhcmNo X01haW5Mb29wKHZvaWQpCiAJCX0KIAogCQkvKiBEbyB3aGF0IHdlJ3JlIGhlcmUgZm9yICov CisKIAkJcGdhcmNoX0FyY2hpdmVyQ29weUxvb3AoKTsKIAogCQkvKgpAQCAtMzU2LDEwICsz NjIsMTMgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCXsKIAkJCWludAkJCXJjOwogCi0J CQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0JCQkJCQkgICBQR0FSQ0hfQVVUT1dB S0VfSU5URVJWQUwgKiAxMDAwTCwKLQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJ Tik7CisJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQIHwKKwkJ CQkJCQkgICBJTlRFUlJVUFRfVEVSTUlOQVRFIHwKKwkJCQkJCQkgICBJTlRFUlJVUFRfU0hV VERPV05fUEdBUkNIIHwKKwkJCQkJCQkgICBDaGVja0ZvckludGVycnVwdHNNYXNrLAorCQkJ CQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NUTUFTVEVSX0RFQVRI LAorCQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRFUlZBTCAqIDEwMDBMLAorCQkJCQkJ CSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CiAJCQlpZiAocmMgJiBXTF9QT1NUTUFT VEVSX0RFQVRIKQogCQkJCXRpbWVfdG9fc3RvcCA9IHRydWU7CiAJCX0KQEAgLTQwOCw3ICs0 MTcsNyBAQCBwZ2FyY2hfQXJjaGl2ZXJDb3B5TG9vcCh2b2lkKQogCQkJICogY29tbWFuZCwg YW5kIHRoZSBzZWNvbmQgaXMgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggYW5vdGhlcgogCQkJ ICogYXJjaGl2ZXIgc3Bhd25lZCBieSBhIG5ld2VyIHBvc3RtYXN0ZXIuCiAJCQkgKi8KLQkJ CWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHx8ICFQb3N0bWFzdGVySXNBbGl2ZSgpKQor CQkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFURSkgfHwgIVBvc3Rt YXN0ZXJJc0FsaXZlKCkpCiAJCQkJcmV0dXJuOwogCiAJCQkvKgpAQCAtNDE2LDcgKzQyNSw3 IEBAIHBnYXJjaF9BcmNoaXZlckNvcHlMb29wKHZvaWQpCiAJCQkgKiB3ZSdsbCBhZG9wdCBh IG5ldyBzZXR0aW5nIGZvciBhcmNoaXZlX2NvbW1hbmQgYXMgc29vbiBhcwogCQkJICogcG9z c2libGUsIGV2ZW4gaWYgdGhlcmUgaXMgYSBiYWNrbG9nIG9mIGZpbGVzIHRvIGJlIGFyY2hp dmVkLgogCQkJICovCi0JCQlQcm9jZXNzUGdBcmNoSW50ZXJydXB0cygpOworCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAogCQkJLyogUmVzZXQgdmFyaWFibGVzIHRoYXQgbWlnaHQg YmUgc2V0IGJ5IHRoZSBjYWxsYmFjayAqLwogCQkJYXJjaF9tb2R1bGVfY2hlY2tfZXJyZGV0 YWlsX3N0cmluZyA9IE5VTEw7CkBAIC04NDksMzAgKzg1OCwxMyBAQCBwZ2FyY2hfZGllKGlu dCBjb2RlLCBEYXR1bSBhcmcpCiAJUGdBcmNoLT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19O VU1CRVI7CiB9CiAKLS8qCi0gKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgV0FMIGFyY2hpdmVy IHByb2Nlc3MuCi0gKgotICogVGhpcyBpcyBjYWxsZWQgaW4gdGhlIGxvb3BzIHBnYXJjaF9N YWluTG9vcCBhbmQgcGdhcmNoX0FyY2hpdmVyQ29weUxvb3AuCi0gKiBJdCBjaGVja3MgZm9y IGJhcnJpZXIgZXZlbnRzLCBjb25maWcgdXBkYXRlIGFuZCByZXF1ZXN0IGZvciBsb2dnaW5n IG9mCi0gKiBtZW1vcnkgY29udGV4dHMsIGJ1dCBub3Qgc2h1dGRvd24gcmVxdWVzdCBiZWNh dXNlIGhvdyB0byBoYW5kbGUKLSAqIHNodXRkb3duIHJlcXVlc3QgaXMgZGlmZmVyZW50IGJl dHdlZW4gdGhvc2UgbG9vcHMuCi0gKi8KIHN0YXRpYyB2b2lkCi1Qcm9jZXNzUGdBcmNoSW50 ZXJydXB0cyh2b2lkKQorcGdhcmNoX1Byb2Nlc3NDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9p ZCkKIHsKLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQotCQlQcm9jZXNzUHJvY1Np Z25hbEJhcnJpZXIoKTsKLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4 dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQot CQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwotCi0JaWYgKENvbmZpZ1Jl bG9hZFBlbmRpbmcpCiAJewogCQljaGFyCSAgICphcmNoaXZlTGliID0gcHN0cmR1cChYTG9n QXJjaGl2ZUxpYnJhcnkpOwogCQlib29sCQlhcmNoaXZlTGliQ2hhbmdlZDsKIAotCQlDb25m aWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdI VVApOwogCiAJCWlmIChYTG9nQXJjaGl2ZUxpYnJhcnlbMF0gIT0gJ1wwJyAmJiBYTG9nQXJj aGl2ZUNvbW1hbmRbMF0gIT0gJ1wwJykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKaW5kZXggM2ZhYzQ2YzQwMmIuLjZlZmM1Njk2OTk2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYwpAQCAtNTM5LDEwICs1MzksOCBAQCBQb3N0bWFzdGVyTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqIFNldCB1cCBzaWduYWwgaGFuZGxlcnMgZm9y IHRoZSBwb3N0bWFzdGVyIHByb2Nlc3MuCiAJICoKIAkgKiBDQVVUSU9OOiB3aGVuIGNoYW5n aW5nIHRoaXMgbGlzdCwgY2hlY2sgZm9yIHNpZGUtZWZmZWN0cyBvbiB0aGUgc2lnbmFsCi0J ICogaGFuZGxpbmcgc2V0dXAgb2YgY2hpbGQgcHJvY2Vzc2VzLiAgU2VlIHRjb3AvcG9zdGdy ZXMuYywKLQkgKiBib290c3RyYXAvYm9vdHN0cmFwLmMsIHBvc3RtYXN0ZXIvYmd3cml0ZXIu YywgcG9zdG1hc3Rlci93YWx3cml0ZXIuYywKLQkgKiBwb3N0bWFzdGVyL2F1dG92YWN1dW0u YywgcG9zdG1hc3Rlci9wZ2FyY2guYywgcG9zdG1hc3Rlci9zeXNsb2dnZXIuYywKLQkgKiBw b3N0bWFzdGVyL2Jnd29ya2VyLmMgYW5kIHBvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMuCisJ ICogaGFuZGxpbmcgc2V0dXAgb2YgY2hpbGQgcHJvY2Vzc2VzLiAgU2VlCisJICogU2V0UG9z dG1hc3RlckNoaWxkU2lnbmFsSGFuZGxlcnMoKQogCSAqLwogCXBxaW5pdG1hc2soKTsKIAlz aWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJkJsb2NrU2lnLCBOVUxMKTsKQEAgLTU1OSw3ICs1 NTcsNiBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJLyog VGhpcyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVwZW5kaW5nIG9uIHBsYXRmb3JtLiAqLwog CUluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7Ci0JSW5pdFByb2Nlc3NMb2NhbExhdGNo KCk7CiAKIAkvKgogCSAqIE5vIG90aGVyIHBsYWNlIGluIFBvc3RncmVzIHNob3VsZCB0b3Vj aCBTSUdUVElOL1NJR1RUT1UgaGFuZGxpbmcuICBXZQpAQCAtNTgwLDYgKzU3Nyw4IEBAIFBv c3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJcHFzaWduYWwoU0lHWEZT WiwgU0lHX0lHTik7IC8qIGlnbm9yZWQgKi8KICNlbmRpZgogCisJLyogbm90ZTogd2UgZG8g bm90IGluc3RhbGwgdGhlIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGVycyBpbiBwb3N0bWFz dGVyICovCisKIAkvKiBCZWdpbiBhY2NlcHRpbmcgc2lnbmFscy4gKi8KIAlzaWdwcm9jbWFz ayhTSUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwogCkBAIC0xNjQ1LDE0ICsxNjQ0 LDE1IEBAIENvbmZpZ3VyZVBvc3RtYXN0ZXJXYWl0U2V0KGJvb2wgYWNjZXB0X2Nvbm5lY3Rp b25zKQogCiAJcG1fd2FpdF9zZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwKIAkJCQkJ CQkJCSBhY2NlcHRfY29ubmVjdGlvbnMgPyAoMSArIE51bUxpc3RlblNvY2tldHMpIDogMSk7 Ci0JQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX0xBVENIX1NFVCwgUEdJTlZB TElEX1NPQ0tFVCwgTXlMYXRjaCwKKwlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwg V0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkgIElOVEVSUlVQVF9DT05G SUdfUkVMT0FEIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAogCQkJCQkgIE5VTEwpOwogCiAJ aWYgKGFjY2VwdF9jb25uZWN0aW9ucykKIAl7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgTnVt TGlzdGVuU29ja2V0czsgaSsrKQogCQkJQWRkV2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQs IFdMX1NPQ0tFVF9BQ0NFUFQsIExpc3RlblNvY2tldHNbaV0sCi0JCQkJCQkJICBOVUxMLCBO VUxMKTsKKwkJCQkJCQkgIDAsIE5VTEwpOwogCX0KIH0KIApAQCAtMTY4MSwxOSArMTY4MSwy MCBAQCBTZXJ2ZXJMb29wKHZvaWQpCiAJCQkJCQkJCSAgIDAgLyogcG9zdG1hc3RlciBwb3N0 cyBubyB3YWl0X2V2ZW50cyAqLyApOwogCiAJCS8qCi0JCSAqIExhdGNoIHNldCBieSBzaWdu YWwgaGFuZGxlciwgb3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbiBhbnkgb2YKLQkJICog b3VyIHNvY2tldHM/IElmIHRoZSBsYXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRl YWwgd2l0aCBpdC4KKwkJICogSW50ZXJydXB0IHJhaXNlZCBieSBzaWduYWwgaGFuZGxlciwg b3IgbmV3IGNvbm5lY3Rpb24gcGVuZGluZyBvbgorCQkgKiBhbnkgb2Ygb3VyIHNvY2tldHM/ ICBJZiB0aGUgbGF0dGVyLCBmb3JrIGEgY2hpbGQgcHJvY2VzcyB0byBkZWFsCisJCSAqIHdp dGggaXQuCiAJCSAqLwogCQlmb3IgKGludCBpID0gMDsgaSA8IG5ldmVudHM7IGkrKykKIAkJ ewotCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJCWlmIChldmVudHNbaV0uZXZlbnRzICYgV0xfSU5URVJSVVBU KQorCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJCS8q CiAJCQkgKiBUaGUgZm9sbG93aW5nIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHVuY29uZGl0aW9u YWxseSwgZXZlbiBpZiB3ZQotCQkJICogZGlkbid0IHNlZSBXTF9MQVRDSF9TRVQuICBUaGlz IGdpdmVzIGhpZ2ggcHJpb3JpdHkgdG8gc2h1dGRvd24KLQkJCSAqIGFuZCByZWxvYWQgcmVx dWVzdHMgd2hlcmUgdGhlIGxhdGNoIGhhcHBlbnMgdG8gYXBwZWFyIGxhdGVyIGluCi0JCQkg KiBldmVudHNbXSBvciB3aWxsIGJlIHJlcG9ydGVkIGJ5IGEgbGF0ZXIgY2FsbCB0bworCQkJ ICogZGlkbid0IHNlZSBXTF9JTlRFUlJVUFQuICBUaGlzIGdpdmVzIGhpZ2ggcHJpb3JpdHkg dG8gc2h1dGRvd24KKwkJCSAqIGFuZCByZWxvYWQgcmVxdWVzdHMgd2hlcmUgdGhlIGludGVy cnVwdCBldmVudCBoYXBwZW5zIHRvIGFwcGVhcgorCQkJICogbGF0ZXIgaW4gZXZlbnRzW10g b3Igd2lsbCBiZSByZXBvcnRlZCBieSBhIGxhdGVyIGNhbGwgdG8KIAkJCSAqIFdhaXRFdmVu dFNldFdhaXQoKS4KIAkJCSAqLwogCQkJaWYgKHBlbmRpbmdfcG1fc2h1dGRvd25fcmVxdWVz dCkKQEAgLTE5ODUsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfcG1fcG1zaWdu YWxfc2lnbmFsKFNJR05BTF9BUkdTKQogewogCXBlbmRpbmdfcG1fcG1zaWduYWwgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0xOTk1LDcgKzE5OTYsNyBAQCBzdGF0aWMgdm9pZAog aGFuZGxlX3BtX3JlbG9hZF9yZXF1ZXN0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5k aW5nX3BtX3JlbG9hZF9yZXF1ZXN0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlS YWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjA3 Miw3ICsyMDczLDcgQEAgaGFuZGxlX3BtX3NodXRkb3duX3JlcXVlc3Rfc2lnbmFsKFNJR05B TF9BUkdTKQogCQkJcGVuZGluZ19wbV9zaHV0ZG93bl9yZXF1ZXN0ID0gdHJ1ZTsKIAkJCWJy ZWFrOwogCX0KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVApOwogfQogCiAvKgpAQCAtMjIzMyw3ICsyMjM0LDcgQEAgc3RhdGlj IHZvaWQKIGhhbmRsZV9wbV9jaGlsZF9leGl0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlw ZW5kaW5nX3BtX2NoaWxkX2V4aXQgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJh aXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0yNTgx LDYgKzI1ODIsNyBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxkICpicCwKIAlib29sCQljcmFz aGVkID0gZmFsc2U7CiAJYm9vbAkJbG9nZ2VkID0gZmFsc2U7CiAJcGlkX3QJCWJwX3BpZDsK KwlpbnQJCQlicF9jaGlsZF9zbG90OwogCWJvb2wJCWJwX2Jnd29ya2VyX25vdGlmeTsKIAlC YWNrZW5kVHlwZSBicF9ia2VuZF90eXBlOwogCVJlZ2lzdGVyZWRCZ1dvcmtlciAqcnc7CkBA IC0yNjI4LDYgKzI2MzAsNyBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxkICpicCwKIAkgKiBk ZXRhY2hlZCBjbGVhbmx5LgogCSAqLwogCWJwX3BpZCA9IGJwLT5waWQ7CisJYnBfY2hpbGRf c2xvdCA9IGJwLT5jaGlsZF9zbG90OwogCWJwX2Jnd29ya2VyX25vdGlmeSA9IGJwLT5iZ3dv cmtlcl9ub3RpZnk7CiAJYnBfYmtlbmRfdHlwZSA9IGJwLT5ia2VuZF90eXBlOwogCXJ3ID0g YnAtPnJ3OwpAQCAtMjY1NSwxNCArMjY1OCwxNCBAQCBDbGVhbnVwQmFja2VuZChQTUNoaWxk ICpicCwKIAl9CiAKIAkvKgotCSAqIFRoaXMgYmFja2VuZCBtYXkgaGF2ZSBiZWVuIHNsYXRl ZCB0byByZWNlaXZlIFNJR1VTUjEgd2hlbiBzb21lCi0JICogYmFja2dyb3VuZCB3b3JrZXIg c3RhcnRlZCBvciBzdG9wcGVkLiAgQ2FuY2VsIHRob3NlIG5vdGlmaWNhdGlvbnMsIGFzCi0J ICogd2UgZG9uJ3Qgd2FudCB0byBzaWduYWwgUElEcyB0aGF0IGFyZSBub3QgUG9zdGdyZVNR TCBiYWNrZW5kcy4gIFRoaXMKKwkgKiBUaGlzIGJhY2tlbmQgbWF5IGhhdmUgYmVlbiBzbGF0 ZWQgdG8gcmVjZWl2ZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgd2hlbgorCSAqIHNvbWUgYmFj a2dyb3VuZCB3b3JrZXIgc3RhcnRlZCBvciBzdG9wcGVkLiAgQ2FuY2VsIHRob3NlIG5vdGlm aWNhdGlvbnMsCisJICogYXMgd2UgZG9uJ3Qgd2FudCB0byBzaWduYWwgUElEcyB0aGF0IGFy ZSBub3QgUG9zdGdyZVNRTCBiYWNrZW5kcy4gIFRoaXMKIAkgKiBnZXRzIHNraXBwZWQgaW4g dGhlIChwcm9iYWJseSB2ZXJ5IGNvbW1vbikgY2FzZSB3aGVyZSB0aGUgYmFja2VuZCBoYXMK IAkgKiBuZXZlciByZXF1ZXN0ZWQgYW55IHN1Y2ggbm90aWZpY2F0aW9ucy4KIAkgKi8KIAlp ZiAoYnBfYmd3b3JrZXJfbm90aWZ5KQotCQlCYWNrZ3JvdW5kV29ya2VyU3RvcE5vdGlmaWNh dGlvbnMoYnBfcGlkKTsKKwkJQmFja2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGJw X2NoaWxkX3Nsb3QpOwogCiAJLyoKIAkgKiBJZiBpdCB3YXMgYW4gYXV0b3ZhY3V1bSB3b3Jr ZXIsIHdha2UgdXAgdGhlIGxhdW5jaGVyIHNvIHRoYXQgaXQgY2FuCkBAIC0zOTIxLDcgKzM5 MjQsNyBAQCBwcm9jZXNzX3BtX3Btc2lnbmFsKHZvaWQpCiAgKiBidXQgd2UgZG8gdXNlIGlu IGJhY2tlbmRzLiAgSWYgd2Ugd2VyZSB0byBTSUdfSUdOIHN1Y2ggc2lnbmFscyBpbiB0aGUK ICAqIHBvc3RtYXN0ZXIsIHRoZW4gYSBuZXdseSBzdGFydGVkIGJhY2tlbmQgbWlnaHQgZHJv cCBhIHNpZ25hbCB0aGF0IGFycml2ZXMKICAqIGJlZm9yZSBpdCdzIGFibGUgdG8gcmVjb25m aWd1cmUgaXRzIHNpZ25hbCBwcm9jZXNzaW5nLiAgKFNlZSBub3RlcyBpbgotICogdGNvcC9w b3N0Z3Jlcy5jLikKKyAqIHRjb3AvcG9zdGdyZXMuYy4pIFhYWDogd2hlcmUgYXJlIHRob3Nl IG5vdGVzIG5vdz8KICAqLwogc3RhdGljIHZvaWQKIGR1bW15X2hhbmRsZXIoU0lHTkFMX0FS R1MpCkBAIC00Mjk2LDE1ICs0Mjk5LDE1IEBAIG1heWJlX3N0YXJ0X2Jnd29ya2Vycyh2b2lk KQogCQl7CiAJCQlpZiAocnctPnJ3X3dvcmtlci5iZ3dfcmVzdGFydF90aW1lID09IEJHV19O RVZFUl9SRVNUQVJUKQogCQkJewotCQkJCWludAkJCW5vdGlmeV9waWQ7CisJCQkJUHJvY051 bWJlcglub3RpZnlfcHJvY19udW1iZXI7CiAKLQkJCQlub3RpZnlfcGlkID0gcnctPnJ3X3dv cmtlci5iZ3dfbm90aWZ5X3BpZDsKKwkJCQlub3RpZnlfcHJvY19udW1iZXIgPSBHZXROb3Rp ZnlQcm9jTnVtYmVyRm9yUmVnaXN0ZXJlZFdvcmtlcihydyk7CiAKIAkJCQlGb3JnZXRCYWNr Z3JvdW5kV29ya2VyKHJ3KTsKIAogCQkJCS8qIFJlcG9ydCB3b3JrZXIgaXMgZ29uZSBub3cu ICovCi0JCQkJaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJCQkJa2lsbChub3RpZnlfcGlkLCBT SUdVU1IxKTsKKwkJCQlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFMSURfUFJPQ19O VU1CRVIpCisJCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBub3Rp ZnlfcHJvY19udW1iZXIpOwogCiAJCQkJY29udGludWU7CiAJCQl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3RhcnR1cC5jCmluZGV4IDMzMGMxMGRkYjBiLi5iYjIzNjQyYjczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9zdGFydHVwLmMKQEAgLTIyLDEyICsyMiwxNSBAQAogI2luY2x1ZGUgImFj Y2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1 ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCisj aW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2ln bmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9h dXhwcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zdGFydHVwLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CkBAIC0zOCwyMSArNDEsMTQgQEAKICNpZm5kZWYgVVNFX1BPU1RNQVNURVJfREVBVEhfU0lH TkFMCiAvKgogICogT24gc3lzdGVtcyB0aGF0IG5lZWQgdG8gbWFrZSBhIHN5c3RlbSBjYWxs IHRvIGZpbmQgb3V0IGlmIHRoZSBwb3N0bWFzdGVyIGhhcwotICogZ29uZSBhd2F5LCB3ZSds bCBkbyBzbyBvbmx5IGV2ZXJ5IE50aCBjYWxsIHRvIFByb2Nlc3NTdGFydHVwUHJvY0ludGVy cnVwdHMoKS4KKyAqIGdvbmUgYXdheSwgd2UnbGwgZG8gc28gb25seSBldmVyeSBOdGggY2Fs bCB0byBTdGFydHVwQ2hlY2tQb3N0bWFzdGVyRGVhdGgoKS4KICAqIFRoaXMgb25seSBhZmZl Y3RzIGhvdyBsb25nIGl0IHRha2VzIHVzIHRvIGRldGVjdCB0aGUgY29uZGl0aW9uIHdoaWxl IHdlJ3JlCi0gKiBidXN5IHJlcGxheWluZyBXQUwuICBMYXRjaCB3YWl0cyBhbmQgc2ltaWxh ciB3aGljaCBzaG91bGQgcmVhY3QgaW1tZWRpYXRlbHkKKyAqIGJ1c3kgcmVwbGF5aW5nIFdB TC4gIEludGVycnVwdCB3YWl0cyBhbmQgc2ltaWxhciBzaG91bGQgcmVhY3QgaW1tZWRpYXRl bHkKICAqIHRocm91Z2ggdGhlIHVzdWFsIHRlY2huaXF1ZXMuCiAgKi8KICNkZWZpbmUgUE9T VE1BU1RFUl9QT0xMX1JBVEVfTElNSVQgMTAyNAogI2VuZGlmCiAKLS8qCi0gKiBGbGFncyBz ZXQgYnkgaW50ZXJydXB0IGhhbmRsZXJzIGZvciBsYXRlciBzZXJ2aWNlIGluIHRoZSByZWRv IGxvb3AuCi0gKi8KLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X1NJR0hVUCA9 IGZhbHNlOwotc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBzaHV0ZG93bl9yZXF1ZXN0 ZWQgPSBmYWxzZTsKLXN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcHJvbW90ZV9zaWdu YWxlZCA9IGZhbHNlOwotCiAvKgogICogRmxhZyBzZXQgd2hlbiBleGVjdXRpbmcgYSByZXN0 b3JlIGNvbW1hbmQsIHRvIHRlbGwgU0lHVEVSTSBzaWduYWwgaGFuZGxlcgogICogdGhhdCBp dCdzIHNhZmUgdG8ganVzdCBwcm9jX2V4aXQuCkBAIC03Nyw3ICs3Myw3IEBAIGludAkJCWxv Z19zdGFydHVwX3Byb2dyZXNzX2ludGVydmFsID0gMTAwMDA7CS8qIDEwIHNlYyAqLwogCiAv KiBTaWduYWwgaGFuZGxlcnMgKi8KIHN0YXRpYyB2b2lkIFN0YXJ0dXBQcm9jVHJpZ2dlckhh bmRsZXIoU0lHTkFMX0FSR1MpOwotc3RhdGljIHZvaWQgU3RhcnR1cFByb2NTaWdIdXBIYW5k bGVyKFNJR05BTF9BUkdTKTsKK3N0YXRpYyB2b2lkIFN0YXJ0dXBQcm9jU2h1dGRvd25IYW5k bGVyKFNJR05BTF9BUkdTKTsKIAogLyogQ2FsbGJhY2tzICovCiBzdGF0aWMgdm9pZCBTdGFy dHVwUHJvY0V4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CkBAIC05MiwxNiArODgsMTIgQEAg c3RhdGljIHZvaWQgU3RhcnR1cFByb2NFeGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3Rh dGljIHZvaWQKIFN0YXJ0dXBQcm9jVHJpZ2dlckhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7Ci0J cHJvbW90ZV9zaWduYWxlZCA9IHRydWU7Ci0JV2FrZXVwUmVjb3ZlcnkoKTsKLX0KLQotLyog U0lHSFVQOiBzZXQgZmxhZyB0byByZS1yZWFkIGNvbmZpZyBmaWxlIGF0IG5leHQgY29udmVu aWVudCB0aW1lICovCi1zdGF0aWMgdm9pZAotU3RhcnR1cFByb2NTaWdIdXBIYW5kbGVyKFNJ R05BTF9BUkdTKQotewotCWdvdF9TSUdIVVAgPSB0cnVlOwotCVdha2V1cFJlY292ZXJ5KCk7 CisJLyoKKwkgKiBUaGUgSU5URVJSVVBUX0NIRUNLX1BST01PVEUgZmxhZyBoaW50cyB0aGUg c3RhcnR1cCBwcm9jZXNzIHRvIGNoZWNrIGZvcgorCSAqIHRoZSBzaWduYWwgZmlsZSwgd2hp bGUgSU5URVJSVVBUX1dBTF9BUlJJVkVEIHdha2VzIHVwIHRoZSBwcm9jZXNzIGZyb20KKwkg KiBzbGVlcC4KKwkgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ0hFQ0tfUFJPTU9U RSB8IElOVEVSUlVQVF9XQUxfQVJSSVZFRCk7CiB9CiAKIC8qIFNJR1RFUk06IHNldCBmbGFn IHRvIGFib3J0IHJlZG8gYW5kIGV4aXQgKi8KQEAgLTExMSw4ICsxMDMsMTYgQEAgU3RhcnR1 cFByb2NTaHV0ZG93bkhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKGluX3Jlc3RvcmVfY29t bWFuZCkKIAkJcHJvY19leGl0KDEpOwogCWVsc2UKLQkJc2h1dGRvd25fcmVxdWVzdGVkID0g dHJ1ZTsKLQlXYWtldXBSZWNvdmVyeSgpOworCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf VEVSTUlOQVRFKTsKK30KKworLyogUHJvY2VzcyB2YXJpb3VzIGludGVycnVwdHMgdGhhdCBt aWdodCBiZSBzZW50IHRvIHRoZSBzdGFydHVwIHByb2Nlc3MgKi8KKworc3RhdGljIHZvaWQK K1Byb2Nlc3NTdGFydHVwUHJvY1Rlcm1pbmF0ZUludGVycnVwdCh2b2lkKQoreworCS8qIHdl IHdlcmUgcmVxdWVzdGVkIHRvIGV4aXQgd2l0aG91dCBmaW5pc2hpbmcgcmVjb3ZlcnkuICov CisJcHJvY19leGl0KDEpOwogfQogCiAvKgpAQCAtMTIyLDcgKzEyMiw4IEBAIFN0YXJ0dXBQ cm9jU2h1dGRvd25IYW5kbGVyKFNJR05BTF9BUkdTKQogICogdG8gcmVzdGFydCBpdC4KICAq Lwogc3RhdGljIHZvaWQKLVN0YXJ0dXBSZXJlYWRDb25maWcodm9pZCkKK1Byb2Nlc3NTdGFy dHVwUHJvY0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKQorCiB7CiAJY2hhcgkgICAqY29u bmluZm8gPSBwc3RyZHVwKFByaW1hcnlDb25uSW5mbyk7CiAJY2hhcgkgICAqc2xvdG5hbWUg PSBwc3RyZHVwKFByaW1hcnlTbG90TmFtZSk7CkBAIC0xNDksMjkgKzE1MCwxMyBAQCBTdGFy dHVwUmVyZWFkQ29uZmlnKHZvaWQpCiAJCVN0YXJ0dXBSZXF1ZXN0V2FsUmVjZWl2ZXJSZXN0 YXJ0KCk7CiB9CiAKLS8qIFByb2Nlc3MgdmFyaW91cyBzaWduYWxzIHRoYXQgbWlnaHQgYmUg c2VudCB0byB0aGUgc3RhcnR1cCBwcm9jZXNzICovCiB2b2lkCi1Qcm9jZXNzU3RhcnR1cFBy b2NJbnRlcnJ1cHRzKHZvaWQpCitTdGFydHVwUHJvY0NoZWNrUG9zdG1hc3RlckRlYXRoKHZv aWQpCiB7CiAjaWZkZWYgUE9TVE1BU1RFUl9QT0xMX1JBVEVfTElNSVQKIAlzdGF0aWMgdWlu dDMyIHBvc3RtYXN0ZXJfcG9sbF9jb3VudCA9IDA7CiAjZW5kaWYKIAotCS8qCi0JICogUHJv Y2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KLQkgKi8K LQlpZiAoZ290X1NJR0hVUCkKLQl7Ci0JCWdvdF9TSUdIVVAgPSBmYWxzZTsKLQkJU3RhcnR1 cFJlcmVhZENvbmZpZygpOwotCX0KLQotCS8qCi0JICogQ2hlY2sgaWYgd2Ugd2VyZSByZXF1 ZXN0ZWQgdG8gZXhpdCB3aXRob3V0IGZpbmlzaGluZyByZWNvdmVyeS4KLQkgKi8KLQlpZiAo c2h1dGRvd25fcmVxdWVzdGVkKQotCQlwcm9jX2V4aXQoMSk7Ci0KIAkvKgogCSAqIEVtZXJn ZW5jeSBiYWlsb3V0IGlmIHBvc3RtYXN0ZXIgaGFzIGRpZWQuICBUaGlzIGlzIHRvIGF2b2lk IHRoZQogCSAqIG5lY2Vzc2l0eSBmb3IgbWFudWFsIGNsZWFudXAgb2YgYWxsIHBvc3RtYXN0 ZXIgY2hpbGRyZW4uICBEbyB0aGlzIGxlc3MKQEAgLTE4NCwxNCArMTY5LDYgQEAgUHJvY2Vz c1N0YXJ0dXBQcm9jSW50ZXJydXB0cyh2b2lkKQogI2VuZGlmCiAJCSFQb3N0bWFzdGVySXNB bGl2ZSgpKQogCQlleGl0KDEpOwotCi0JLyogUHJvY2VzcyBiYXJyaWVyIGV2ZW50cyAqLwot CWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCi0JCVByb2Nlc3NQcm9jU2lnbmFsQmFy cmllcigpOwotCi0JLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0 aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiB9CiAKIApAQCAtMjI1LDE1ICsyMDIs MTMgQEAgU3RhcnR1cFByb2Nlc3NNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJLyoKIAkgKiBQcm9wZXJseSBhY2NlcHQgb3IgaWdu b3JlIHNpZ25hbHMgdGhlIHBvc3RtYXN0ZXIgbWlnaHQgc2VuZCB1cy4KIAkgKi8KLQlwcXNp Z25hbChTSUdIVVAsIFN0YXJ0dXBQcm9jU2lnSHVwSGFuZGxlcik7IC8qIHJlbG9hZCBjb25m aWcgZmlsZSAqLwotCXBxc2lnbmFsKFNJR0lOVCwgU0lHX0lHTik7CS8qIGlnbm9yZSBxdWVy eSBjYW5jZWwgKi8KKworCS8qIG92ZXJyaWRlIFNJR1RFUk0gYmVjYXVzZSB3ZSBuZWVkIGEg bGl0dGxlIG1vcmUgY29tcGxpY2F0ZWQgaGFuZGxpbmcgKi8KIAlwcXNpZ25hbChTSUdURVJN LCBTdGFydHVwUHJvY1NodXRkb3duSGFuZGxlcik7CS8qIHJlcXVlc3Qgc2h1dGRvd24gKi8K LQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFz dGVyQ2hpbGQgKi8KLQlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJ R0FMUk0gaGFuZGxlciAqLwotCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2ln bmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKIAlwcXNpZ25hbChT SUdVU1IyLCBTdGFydHVwUHJvY1RyaWdnZXJIYW5kbGVyKTsKIAorCUluaXRpYWxpemVUaW1l b3V0cygpOwkJLyogZXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCisKIAkvKgogCSAq IFJlZ2lzdGVyIHRpbWVvdXRzIG5lZWRlZCBmb3Igc3RhbmRieSBtb2RlCiAJICovCkBAIC0y NDEsNiArMjE2LDEzIEBAIFN0YXJ0dXBQcm9jZXNzTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCVJlZ2lzdGVyVGltZW91dChTVEFO REJZX1RJTUVPVVQsIFN0YW5kYnlUaW1lb3V0SGFuZGxlcik7CiAJUmVnaXN0ZXJUaW1lb3V0 KFNUQU5EQllfTE9DS19USU1FT1VULCBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKTsKIAor CS8qIE9ubHkgc2V0IHVwIGEgc3Vic2V0IG9mIHRoZSBzdGFuZGFyZCBpbnRlcnJ1cHQgaGFu ZGxlcnMgKi8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisJU2V0SW50ZXJy dXB0SGFuZGxlcihJTlRFUlJVUFRfVEVSTUlOQVRFLCBQcm9jZXNzU3RhcnR1cFByb2NUZXJt aW5hdGVJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRF KTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9DT05GSUdfUkVMT0FELCBQcm9j ZXNzU3RhcnR1cFByb2NDb25maWdSZWxvYWRJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVw dChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7CisKIAkvKgogCSAqIFVuYmxvY2sgc2lnbmFs cyAodGhleSB3ZXJlIGJsb2NrZWQgd2hlbiB0aGUgcG9zdG1hc3RlciBmb3JrZWQgdXMpCiAJ ICovCkBAIC0yNjgsNyArMjUwLDcgQEAgUHJlUmVzdG9yZUNvbW1hbmQodm9pZCkKIAkgKiBz aHV0ZG93biByZXF1ZXN0IHJlY2VpdmVkIGp1c3QgYmVmb3JlIHRoaXMuCiAJICovCiAJaW5f cmVzdG9yZV9jb21tYW5kID0gdHJ1ZTsKLQlpZiAoc2h1dGRvd25fcmVxdWVzdGVkKQorCWlm IChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQlwcm9jX2V4aXQo MSk7CiB9CiAKQEAgLTI3OCwxOCArMjYwLDYgQEAgUG9zdFJlc3RvcmVDb21tYW5kKHZvaWQp CiAJaW5fcmVzdG9yZV9jb21tYW5kID0gZmFsc2U7CiB9CiAKLWJvb2wKLUlzUHJvbW90ZVNp Z25hbGVkKHZvaWQpCi17Ci0JcmV0dXJuIHByb21vdGVfc2lnbmFsZWQ7Ci19Ci0KLXZvaWQK LVJlc2V0UHJvbW90ZVNpZ25hbGVkKHZvaWQpCi17Ci0JcHJvbW90ZV9zaWduYWxlZCA9IGZh bHNlOwotfQotCiAvKgogICogU2V0IGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgaXQncyB0aW1l IHRvIGxvZyBhIHByb2dyZXNzIHJlcG9ydC4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lz bG9nZ2VyLmMKaW5kZXggODUxNWJmYjk2NTMuLmM5ZmFhNzZiNmE5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvc3lzbG9nZ2VyLmMKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlIDxzeXMv dGltZS5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5j bHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMzksMTMgKzQxLDExIEBACiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicGd0aW1lLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dn ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2gu aCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29w cHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMjcyLDE2ICsyNzIsMTQgQEAg U3lzTG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCSAqIHVwc3RyZWFtIHByb2Nlc3NlcyBhcmUgZ29uZSwgdG8gZW5zdXJl IHdlIGRvbid0IG1pc3MgYW55IGR5aW5nIGdhc3BzIG9mCiAJICogYnJva2VuIGJhY2tlbmRz Li4uCiAJICovCi0KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdS ZWxvYWQpOyAvKiBzZXQgZmxhZyB0byByZWFkIGNvbmZpZwotCQkJCQkJCQkJCQkJCSAqIGZp bGUgKi8KIAlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1RFUk0s IFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1FVSVQsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJ R0FMUk0sIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworCiAJcHFz aWduYWwoU0lHVVNSMSwgc2lnVXNyMUhhbmRsZXIpOwkvKiByZXF1ZXN0IGxvZyByb3RhdGlv biAqLwotCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOworCisJU2V0U3RhbmRhcmRJbnRl cnJ1cHRIYW5kbGVycygpOworCURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1RFUk1JTkFU RSk7CiAKIAlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJlVuQmxvY2tTaWcsIE5VTEwpOwog CkBAIC0zMjIsNyArMzIwLDcgQEAgU3lzTG9nZ2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXdoZXJlVG9TZW5kT3V0cHV0ID0g RGVzdE5vbmU7CiAKIAkvKgotCSAqIFNldCB1cCBhIHJldXNhYmxlIFdhaXRFdmVudFNldCBv YmplY3Qgd2UnbGwgdXNlIHRvIHdhaXQgZm9yIG91ciBsYXRjaCwKKwkgKiBTZXQgdXAgYSBy ZXVzYWJsZSBXYWl0RXZlbnRTZXQgb2JqZWN0IHdlJ2xsIHVzZSB0byB3YWl0IGZvciBpbnRl cnJ1cHRzLAogCSAqIGFuZCAoZXhjZXB0IG9uIFdpbmRvd3MpIG91ciBzb2NrZXQuCiAJICoK IAkgKiBVbmxpa2UgYWxsIG90aGVyIHBvc3RtYXN0ZXIgY2hpbGQgcHJvY2Vzc2VzLCB3ZSds bCBpZ25vcmUgcG9zdG1hc3RlcgpAQCAtMzMyLDkgKzMzMCwxMiBAQCBTeXNMb2dnZXJNYWlu KGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJ ICogKGluY2x1ZGluZyB0aGUgcG9zdG1hc3RlcikuCiAJICovCiAJd2VzID0gQ3JlYXRlV2Fp dEV2ZW50U2V0KE5VTEwsIDIpOwotCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfTEFUQ0hf U0VULCBQR0lOVkFMSURfU09DS0VULCBNeUxhdGNoLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRU b1NldCh3ZXMsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJICBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCSAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAkv KiBmb3IgbG9nIHJvdGF0aW9uICovCisJCQkJCSAgTlVMTCk7CiAjaWZuZGVmIFdJTjMyCi0J QWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVb MF0sIE5VTEwsIE5VTEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JF QURBQkxFLCBzeXNsb2dQaXBlWzBdLCAwLCBOVUxMKTsKICNlbmRpZgogCiAJLyogbWFpbiB3 b3JrZXIgbG9vcCAqLwpAQCAtMzUwLDE0ICszNTEsMTMgQEAgU3lzTG9nZ2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogI2VuZGlm CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VV UCk7CiAKIAkJLyoKIAkJICogUHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNl aXZlZCByZWNlbnRseS4KIAkJICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlp ZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJ CUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBH Q19TSUdIVVApOwogCiAJCQkvKgpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgcGlwZVRocmVhZCh2 b2lkICphcmcpCiAJCQkJIGZ0ZWxsbyhjc3Zsb2dGaWxlKSA+PSBMb2dfUm90YXRpb25TaXpl ICogKHBnb2ZmX3QpIDEwMjQpIHx8CiAJCQkJKGpzb25sb2dGaWxlICE9IE5VTEwgJiYKIAkJ CQkgZnRlbGxvKGpzb25sb2dGaWxlKSA+PSBMb2dfUm90YXRpb25TaXplICogKHBnb2ZmX3Qp IDEwMjQpKQotCQkJCVNldExhdGNoKE15TGF0Y2gpOworCQkJCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJCX0KIAkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5 c2xvZ2dlclNlY3Rpb24pOwogCX0KQEAgLTExOTMsOCArMTE5Myw4IEBAIHBpcGVUaHJlYWQo dm9pZCAqYXJnKQogCS8qIGlmIHRoZXJlJ3MgYW55IGRhdGEgbGVmdCB0aGVuIGZvcmNlIGl0 IG91dCBub3cgKi8KIAlmbHVzaF9waXBlX2lucHV0KGxvZ2J1ZmZlciwgJmJ5dGVzX2luX2xv Z2J1ZmZlcik7CiAKLQkvKiBzZXQgdGhlIGxhdGNoIHRvIHdha2VuIHRoZSBtYWluIHRocmVh ZCwgd2hpY2ggd2lsbCBxdWl0ICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmFpc2Ug dGhlIGludGVycnVwdCB0byB3YWtlbiB0aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVp dCAqLworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAlMZWF2 ZUNyaXRpY2FsU2VjdGlvbigmc3lzbG9nZ2VyU2VjdGlvbik7CiAJX2VuZHRocmVhZCgpOwpA QCAtMTU4NSw5ICsxNTg1LDEwIEBAIFJlbW92ZUxvZ3JvdGF0ZVNpZ25hbEZpbGVzKHZvaWQp CiB9CiAKIC8qIFNJR1VTUjE6IHNldCBmbGFnIHRvIHJvdGF0ZSBsb2dmaWxlICovCisvKiAg VE9ETzogVXNlIGFuIGludGVycnVwdCBmbGFnIGZvciB0aGlzICovCiBzdGF0aWMgdm9pZAog c2lnVXNyMUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJcm90YXRpb25fcmVxdWVzdGVkID0g dHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf V0FJVF9XQUtFVVApOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIu YwppbmRleCA0ZTRlZWQ0ZDA3Ni4uZDhjNzU0YWQyODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC0zMSwxNyArMzEsMTcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3N0b3JhZ2VfeGxvZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHNf eGxvZy5oIgogI2luY2x1ZGUgImNvbW1vbi9ibGtyZWZ0YWJsZS5oIgorI2luY2x1ZGUgImlw Yy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5j bHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv d2Fsc3VtbWFyaXplci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCkBAIC0xNDYsNyArMTQ2 LDcgQEAgaW50CQkJd2FsX3N1bW1hcnlfa2VlcF90aW1lID0gMTAgKiBIT1VSU19QRVJfREFZ ICogTUlOU19QRVJfSE9VUjsKIAogc3RhdGljIHZvaWQgV2FsU3VtbWFyaXplclNodXRkb3du KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIFhMb2dSZWNQdHIgR2V0TGF0ZXN0TFNO KFRpbWVMaW5lSUQgKnRsaSk7Ci1zdGF0aWMgdm9pZCBQcm9jZXNzV2FsU3VtbWFyaXplcklu dGVycnVwdHModm9pZCk7CitzdGF0aWMgdm9pZCBQcm9jZXNzV2FsU3VtbWFyaXplckNvbmZp Z1JlbG9hZEludGVycnVwdCh2b2lkKTsKIHN0YXRpYyBYTG9nUmVjUHRyIFN1bW1hcml6ZVdB TChUaW1lTGluZUlEIHRsaSwgWExvZ1JlY1B0ciBzdGFydF9sc24sCiAJCQkJCQkJICAgYm9v bCBleGFjdCwgWExvZ1JlY1B0ciBzd2l0Y2hfbHNuLAogCQkJCQkJCSAgIFhMb2dSZWNQdHIg bWF4aW11bV9sc24pOwpAQCAtMjQwLDE2ICsyNDAsMTUgQEAgV2FsU3VtbWFyaXplck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJ CShlcnJtc2dfaW50ZXJuYWwoIldBTCBzdW1tYXJpemVyIHN0YXJ0ZWQiKSkpOwogCiAJLyoK LQkgKiBQcm9wZXJseSBhY2NlcHQgb3IgaWdub3JlIHNpZ25hbHMgdGhlIHBvc3RtYXN0ZXIg bWlnaHQgc2VuZCB1cworCSAqIFNldCB1cCBpbnRlcnJ1cHQgaGFuZGxlcnMKIAkgKi8KLQlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2ln bmFsKFNJR0lOVCwgU0lHX0lHTik7CS8qIG5vIHF1ZXJ5IHRvIGNhbmNlbCAqLwotCXBxc2ln bmFsKFNJR1RFUk0sIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwotCS8qIFNJ R1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGls ZCAqLwotCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1BJUEUs IFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsgLyogbm90IHVzZWQgKi8KKwlT ZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CisKKwkvKiB3ZSBjYW4ganVzdCBwcm9j X2V4aXQoMCkgYXQgYW55IHBvaW50IGlmIHJlcXVlc3RlZCB0byB0ZXJtaW5hdGUgKi8KKwlT ZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9URVJNSU5BVEUsIFByb2Nlc3NBdXhQcm9j ZXNzU2h1dGRvd25JbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfVEVS TUlOQVRFKTsKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9DT05GSUdfUkVMT0FE LCBQcm9jZXNzV2FsU3VtbWFyaXplckNvbmZpZ1JlbG9hZEludGVycnVwdCk7CisJRW5hYmxl SW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIAogCS8qIEFkdmVydGlzZSBv dXJzZWx2ZXMuICovCiAJb25fc2htZW1fZXhpdChXYWxTdW1tYXJpemVyU2h1dGRvd24sIChE YXR1bSkgMCk7CkBAIC0zMDksMTAgKzMwOCw4IEBAIFdhbFN1bW1hcml6ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFNv IGEgcmVhbGx5IGZhc3QgcmV0cnkgdGltZSBkb2Vzbid0IHNlZW0gdG8gYmUgZXNwZWNpYWxs eQogCQkgKiBiZW5lZmljaWFsLCBhbmQgaXQgd2lsbCBjbHV0dGVyIHRoZSBsb2dzLgogCQkg Ki8KLQkJKHZvaWQpIFdhaXRMYXRjaChOVUxMLAotCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJIDEwMDAwLAotCQkJCQkJIFdBSVRfRVZFTlRfV0FM X1NVTU1BUklaRVJfRVJST1IpOworCQkodm9pZCkgV2FpdEludGVycnVwdCgwLCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMTAwMDAsCisJCQkJCQkJIFdBSVRfRVZFTlRf V0FMX1NVTU1BUklaRVJfRVJST1IpOwogCX0KIAogCS8qIFdlIGNhbiBub3cgaGFuZGxlIGVy ZXBvcnQoRVJST1IpICovCkBAIC0zNDksNyArMzQ2LDcgQEAgV2FsU3VtbWFyaXplck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJ TWVtb3J5Q29udGV4dFJlc2V0KGNvbnRleHQpOwogCiAJCS8qIFByb2Nlc3MgYW55IHNpZ25h bHMgcmVjZWl2ZWQgcmVjZW50bHkuICovCi0JCVByb2Nlc3NXYWxTdW1tYXJpemVySW50ZXJy dXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qIElmIGl0J3MgdGlt ZSB0byByZW1vdmUgYW55IG9sZCBXQUwgc3VtbWFyaWVzLCBkbyB0aGF0IG5vdy4gKi8KIAkJ TWF5YmVSZW1vdmVPbGRXYWxTdW1tYXJpZXMoKTsKQEAgLTYyNCw4ICs2MjEsOCBAQCBHZXRP bGRlc3RVbnN1bW1hcml6ZWRMU04oVGltZUxpbmVJRCAqdGxpLCBib29sICpsc25faXNfZXhh Y3QpCiAgKgogICogVGhpcyBtaWdodCBub3Qgd29yaywgYmVjYXVzZSB0aGVyZSdzIG5vIGd1 YXJhbnRlZSB0aGF0IHRoZSBXQUwgc3VtbWFyaXplcgogICogcHJvY2VzcyB3YXMgc3VjY2Vz c2Z1bGx5IHN0YXJ0ZWQsIGFuZCBpdCBhbHNvIG1pZ2h0IGhhdmUgc3RhcnRlZCBidXQKLSAq IHN1YnNlcXVlbnRseSB0ZXJtaW5hdGVkLiBTbywgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5j ZXMsIHRoaXMgd2lsbCBnZXQgdGhlCi0gKiBsYXRjaCBzZXQsIGJ1dCB0aGVyZSdzIG5vIGd1 YXJhbnRlZS4KKyAqIHN1YnNlcXVlbnRseSB0ZXJtaW5hdGVkLiBTbywgdW5kZXIgbm9ybWFs IGNpcmN1bXN0YW5jZXMsIHRoaXMgd2lsbCBzZW5kCisgKiB0aGUgaW50ZXJydXB0LCBidXQg dGhlcmUncyBubyBndWFyYW50ZWUuCiAgKi8KIHZvaWQKIFdha2V1cFdhbFN1bW1hcml6ZXIo dm9pZCkKQEAgLTY0MCw3ICs2MzcsNyBAQCBXYWtldXBXYWxTdW1tYXJpemVyKHZvaWQpCiAJ TFdMb2NrUmVsZWFzZShXQUxTdW1tYXJpemVyTG9jayk7CiAKIAlpZiAocGdwcm9jbm8gIT0g SU5WQUxJRF9QUk9DX05VTUJFUikKLQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKHBn cHJvY25vKS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVAsIHBncHJvY25vKTsKIH0KIAogLyoKQEAgLTg0OSwyNyArODQ2LDE3IEBAIEdldExh dGVzdExTTihUaW1lTGluZUlEICp0bGkpCiAgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFp biBsb29wIG9mIFdBTCBzdW1tYXJpemVyIHByb2Nlc3MuCiAgKi8KIHN0YXRpYyB2b2lkCi1Q cm9jZXNzV2FsU3VtbWFyaXplckludGVycnVwdHModm9pZCkKK1Byb2Nlc3NXYWxTdW1tYXJp emVyQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZvaWQpCiB7Ci0JaWYgKFByb2NTaWduYWxCYXJy aWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7Ci0KLQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKLQl7Ci0JCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsK LQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JfQorCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOwogCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcgfHwgIXN1 bW1hcml6ZV93YWwpCisJLyogSWYgJ3N1bW1hcml6ZV93YWwnIHdhcyB0dXJuZWQgb2ZmLCBl eGl0ICovCisJaWYgKCFzdW1tYXJpemVfd2FsICYmICFJbnRlcnJ1cHRQZW5kaW5nKElOVEVS UlVQVF9URVJNSU5BVEUpKQogCXsKIAkJZXJlcG9ydChERUJVRzEsCi0JCQkJZXJybXNnX2lu dGVybmFsKCJXQUwgc3VtbWFyaXplciBzaHV0dGluZyBkb3duIikpOwotCQlwcm9jX2V4aXQo MCk7CisJCQkJZXJybXNnX2ludGVybmFsKCJXQUwgc3VtbWFyaXplciBzaHV0dGluZyBkb3du IGJlY2F1c2Ugc3VtbWFyaXplX3dhbCB3YXMgZGlzYWJsZWQiKSk7CisJCVJhaXNlSW50ZXJy dXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOwogCX0KLQotCS8qIFBlcmZvcm0gbG9nZ2luZyBv ZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICovCi0JaWYgKExvZ01lbW9yeUNv bnRleHRQZW5kaW5nKQotCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwog fQogCiAvKgpAQCAtMTAwOCw3ICs5OTUsNyBAQCBTdW1tYXJpemVXQUwoVGltZUxpbmVJRCB0 bGksIFhMb2dSZWNQdHIgc3RhcnRfbHNuLCBib29sIGV4YWN0LAogCQlYTG9nUmVjb3JkICpy ZWNvcmQ7CiAJCXVpbnQ4CQlybWlkOwogCi0JCVByb2Nlc3NXYWxTdW1tYXJpemVySW50ZXJy dXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qIFdlIHNob3VsZG4n dCBnbyBiYWNrd2FyZC4gKi8KIAkJQXNzZXJ0KHN1bW1hcnlfc3RhcnRfbHNuIDw9IHhsb2dy ZWFkZXItPkVuZFJlY1B0cik7CkBAIC0xNDk1LDcgKzE0ODIsNyBAQCBzdW1tYXJpemVyX3Jl YWRfbG9jYWxfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsCiAJV0FMUmVhZEVy cm9yIGVycmluZm87CiAJU3VtbWFyaXplclJlYWRMb2NhbFhMb2dQcml2YXRlICpwcml2YXRl X2RhdGE7CiAKLQlQcm9jZXNzV2FsU3VtbWFyaXplckludGVycnVwdHMoKTsKKwlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCiAJcHJpdmF0ZV9kYXRhID0gKFN1bW1hcml6ZXJSZWFkTG9j YWxYTG9nUHJpdmF0ZSAqKQogCQlzdGF0ZS0+cHJpdmF0ZV9kYXRhOwpAQCAtMTUzMyw3ICsx NTIwLDcgQEAgc3VtbWFyaXplcl9yZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnN0YXRlLAogCQkJCSAqIGN1cnJlbnQgdGltZWxpbmUsIHNvIG1vcmUgZGF0YSBtaWdo dCBzaG93IHVwLiAgRGVsYXkgaGVyZQogCQkJCSAqIHNvIHdlIGRvbid0IHRpZ2h0LWxvb3Au CiAJCQkJICovCi0JCQkJUHJvY2Vzc1dhbFN1bW1hcml6ZXJJbnRlcnJ1cHRzKCk7CisJCQkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCQlzdW1tYXJpemVyX3dhaXRfZm9yX3dhbCgp OwogCiAJCQkJLyogUmVjaGVjayBlbmQtb2YtV0FMLiAqLwpAQCAtMTYzMywxMSArMTYyMCwx NSBAQCBzdW1tYXJpemVyX3dhaXRfZm9yX3dhbCh2b2lkKQogCXBnc3RhdF9yZXBvcnRfd2Fs KGZhbHNlKTsKIAogCS8qIE9LLCBub3cgc2xlZXAuICovCi0JKHZvaWQpIFdhaXRMYXRjaChN eUxhdGNoLAotCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCi0JCQkJCSBzbGVlcF9xdWFudGEgKiBNU19QRVJfU0xFRVBfUVVBTlRVTSwK LQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfV0FMKTsKLQlSZXNldExhdGNoKE15 TGF0Y2gpOworCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCB8 CisJCQkJCQkgSU5URVJSVVBUX1RFUk1JTkFURSB8CisJCQkJCQkgSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQgfAorCQkJCQkJIElOVEVSUlVQVF9CQVJSSUVSIHwKKwkJCQkJCSBJTlRFUlJV UFRfTE9HX01FTU9SWV9DT05URVhULAorCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIHNsZWVwX3F1YW50YSAqIE1TX1BF Ul9TTEVFUF9RVUFOVFVNLAorCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NVTU1BUklaRVJfV0FM KTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJLyogUmVz ZXQgY291bnQgb2YgcGFnZXMgcmVhZC4gKi8KIAlwYWdlc19yZWFkX3NpbmNlX2xhc3Rfc2xl ZXAgPSAwOwpAQCAtMTY4NCw3ICsxNjc1LDcgQEAgTWF5YmVSZW1vdmVPbGRXYWxTdW1tYXJp ZXModm9pZCkKIAkJWExvZ1JlY1B0cglvbGRlc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CiAJCVRpbWVMaW5lSUQJc2VsZWN0ZWRfdGxpOwogCi0JCVByb2Nlc3NXYWxTdW1tYXJpemVy SW50ZXJydXB0cygpOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCiAJCSAq IFBpY2sgYSB0aW1lbGluZSBmb3Igd2hpY2ggc29tZSBzdW1tYXJ5IGZpbGVzIHN0aWxsIGV4 aXN0IG9uIGRpc2ssCkBAIC0xNzAzLDcgKzE2OTQsNyBAQCBNYXliZVJlbW92ZU9sZFdhbFN1 bW1hcmllcyh2b2lkKQogCQl7CiAJCQlXYWxTdW1tYXJ5RmlsZSAqd3MgPSBsZmlyc3QobGMp OwogCi0JCQlQcm9jZXNzV2FsU3VtbWFyaXplckludGVycnVwdHMoKTsKKwkJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKIAkJCS8qIElmIGl0J3Mgbm90IG9uIHRoaXMgdGltZWxpbmUs IGl0J3Mgbm90IHRpbWUgdG8gY29uc2lkZXIgaXQuICovCiAJCQlpZiAoc2VsZWN0ZWRfdGxp ICE9IHdzLT50bGkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHdy aXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIuYwppbmRleCAxODUx NDE3YWQxYi4uOTNkZmM5OGNjMzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvd2Fsd3JpdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIu YwpAQCAtNDUsMTEgKzQ1LDEyIEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRl ICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1eHByb2Nlc3MuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVy cnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsd3JpdGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKQEAg LTk3LDE2ICs5OCwxNCBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21t b24oKTsKIAogCS8qCi0JICogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9yZSBzaWduYWxzIHRo ZSBwb3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMKKwkgKiBTZXQgdXAgaW50ZXJydXB0IGhhbmRs ZXJzCiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVs b2FkKTsKLQlwcXNpZ25hbChTSUdJTlQsIFNJR19JR04pOwkvKiBubyBxdWVyeSB0byBjYW5j ZWwgKi8KLQlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1 ZXN0KTsKLQkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQ b3N0bWFzdGVyQ2hpbGQgKi8KLQlwcXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKLQlwcXNp Z25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFs X3NpZ3VzcjFfaGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMiwgU0lHX0lHTik7IC8qIG5v dCB1c2VkICovCisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCisJRW5hYmxl SW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKKwkvKiB3ZSBjYW4ganVzdCBw cm9jX2V4aXQoMCkgYXQgYW55IHBvaW50IGlmIHJlcXVlc3RlZCB0byB0ZXJtaW5hdGUgKi8K KwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9URVJNSU5BVEUsIFByb2Nlc3NBdXhQ cm9jZXNzU2h1dGRvd25JbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRf VEVSTUlOQVRFKTsKIAogCS8qCiAJICogQ3JlYXRlIGEgbWVtb3J5IGNvbnRleHQgdGhhdCB3 ZSB3aWxsIGRvIGFsbCBvdXIgd29yayBpbi4gIFdlIGRvIHRoaXMgc28KQEAgLTIwOSwxMiAr MjA4LDEyIEBAIFdhbFdyaXRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAogCQkvKgogCQkgKiBBZHZlcnRpc2Ugd2hldGhlciB3 ZSBtaWdodCBoaWJlcm5hdGUgaW4gdGhpcyBjeWNsZS4gIFdlIGRvIHRoaXMKLQkJICogYmVm b3JlIHJlc2V0dGluZyB0aGUgbGF0Y2ggdG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNvbW1p dHMgd2lsbAotCQkgKiBzZWUgdGhlIGZsYWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2libHkg bmVlZCB0byB3YWtlIHVzIHVwLCBhbmQKLQkJICogdGhhdCB3ZSB3b24ndCBtaXNzIGFueSBz aWduYWwgdGhleSBzZW5kIHVzLiAgKElmIHdlIGRpc2NvdmVyIHdvcmsKLQkJICogdG8gZG8g aW4gdGhlIGxhc3QgY3ljbGUgYmVmb3JlIHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGdsb2Jh bCBmbGFnCi0JCSAqIHdpbGwgYmUgc2V0IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUgaGFy bSBpcyBkb25lLikgIEJ1dCBhdm9pZAotCQkgKiB0b3VjaGluZyB0aGUgZ2xvYmFsIGZsYWcg aWYgaXQgZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KKwkJICogYmVmb3JlIGNsZWFyaW5nIHRo ZSBpbnRlcnJ1cHQgZmxhZyB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmMgY29tbWl0cworCQkg KiB3aWxsIHNlZSB0aGUgZmxhZyBzZXQgaWYgdGhleSBtaWdodCBwb3NzaWJseSBuZWVkIHRv IHdha2UgdXMgdXAsCisJCSAqIGFuZCB0aGF0IHdlIHdvbid0IG1pc3MgYW55IHNpZ25hbCB0 aGV5IHNlbmQgdXMuICAoSWYgd2UgZGlzY292ZXIKKwkJICogd29yayB0byBkbyBpbiB0aGUg bGFzdCBjeWNsZSBiZWZvcmUgd2Ugd291bGQgaGliZXJuYXRlLCB0aGUgZ2xvYmFsCisJCSAq IGZsYWcgd2lsbCBiZSBzZXQgdW5uZWNlc3NhcmlseSwgYnV0IGxpdHRsZSBoYXJtIGlzIGRv bmUuKSAgQnV0CisJCSAqIGF2b2lkIHRvdWNoaW5nIHRoZSBnbG9iYWwgZmxhZyBpZiBpdCBk b2Vzbid0IG5lZWQgdG8gY2hhbmdlLgogCQkgKi8KIAkJaWYgKGhpYmVybmF0aW5nICE9IChs ZWZ0X3RpbGxfaGliZXJuYXRlIDw9IDEpKQogCQl7CkBAIC0yMjIsMTEgKzIyMSwxMCBAQCBX YWxXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBf ZGF0YV9sZW4pCiAJCQlTZXRXYWxXcml0ZXJTbGVlcGluZyhoaWJlcm5hdGluZyk7CiAJCX0K IAotCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ KTsKIAotCQkvKiBQcm9jZXNzIGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCi0J CVByb2Nlc3NNYWluTG9vcEludGVycnVwdHMoKTsKKwkJLyogUHJvY2VzcyBhbnkgaW50ZXJy dXB0cyByZWNlaXZlZCByZWNlbnRseSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCS8qCiAJCSAqIERvIHdoYXQgd2UncmUgaGVyZSBmb3I7IHRoZW4sIGlmIFhMb2dCYWNr Z3JvdW5kRmx1c2goKSBmb3VuZCB1c2VmdWwKQEAgLTI1MCw5ICsyNDgsOSBAQCBXYWxXcml0 ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiAJCWVsc2UKIAkJCWN1cl90aW1lb3V0ID0gV2FsV3JpdGVyRGVsYXkgKiBISUJFUk5B VEVfRkFDVE9SOwogCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBj dXJfdGltZW91dCwKLQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTik7CisJCSh2 b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRf V0FJVF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBjdXJfdGltZW91dCwKKwkJCQkJCQkgV0FJVF9F VkVOVF9XQUxfV1JJVEVSX01BSU4pOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKaW5kZXggN2M4NjM5YjMyZTkuLjE1NmNiOTc2Njc3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2lu Y2x1ZGUgInBxZXhwYnVmZmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxz L3BnX2xzbi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAxNzMwYWNlNTQ5MC4uYmZkYjA3YTNi NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNTcsMTAgKzE1NywxMiBAQAogCiAjaW5jbHVk ZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJpcGMvc2lnbmFsX2hhbmRsZXJzLmgi CiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v b3JpZ2luLmgiCkBAIC0yMzgsMTIgKzI0MCw2IEBAIHN0YXRpYyBMaXN0ICpQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCA9IE5JTDsKICAqLwogUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq TXlQYXJhbGxlbFNoYXJlZCA9IE5VTEw7CiAKLS8qCi0gKiBJcyB0aGVyZSBhIG1lc3NhZ2Ug c2VudCBieSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkK LSAqIHdvcmtlciBuZWVkcyB0byByZWNlaXZlPwotICovCi12b2xhdGlsZSBzaWdfYXRvbWlj X3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7Ci0KIC8qCiAgKiBDYWNo ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBh cHBseWluZyB0aGUKICAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1 c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQpAQCAtNzA2LDMwICs3MDIs NiBAQCBwYV9wcm9jZXNzX3Nwb29sZWRfbWVzc2FnZXNfaWZfcmVxdWlyZWQodm9pZCkKIAly ZXR1cm4gdHJ1ZTsKIH0KIAotLyoKLSAqIEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxv b3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotICovCi1zdGF0aWMgdm9pZAotUHJvY2Vz c1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCi17Ci0JQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKLQotCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQotCXsKLQkJZXJlcG9ydChM T0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwKLQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwotCi0JCXByb2NfZXhpdCgwKTsKLQl9Ci0KLQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKLQl7Ci0JCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKLQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JfQotfQotCiAvKiBQYXJh bGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLwogc3RhdGljIHZvaWQKIExvZ2ljYWxQ YXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCkBAIC03NTksNyArNzMxLDE4 IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCiAJCXZv aWQJICAgKmRhdGE7CiAJCVNpemUJCWxlbjsKIAotCQlQcm9jZXNzUGFyYWxsZWxBcHBseUlu dGVycnVwdHMoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKEludGVycnVw dFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dPUktFUikpCisJ CXsKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgZmlu aXNoZWQiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkJcHJvY19leGl0 KDApOworCQl9CisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUp KQorCQkJUHJvY2Vzc1Rlcm1pbmF0ZUludGVycnVwdCgpOworCQlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCisJCQlQcm9jZXNzQ29uZmlnRmlsZShQ R0NfU0lHSFVQKTsKIAogCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50 byBvdXIgbWVtb3J5IGNvbnRleHQuICovCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eU1lc3NhZ2VDb250ZXh0KTsKQEAgLTgwNSwxMyArNzg4LDE3IEBAIExvZ2ljYWxQYXJhbGxl bEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCiAJCQkJaW50CQkJcmM7CiAKIAkJCQkv KiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwK LQkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJCQkgICAxMDAwTCwKLQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxf UEFSQUxMRUxfQVBQTFlfTUFJTik7Ci0KLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0J CQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNr Rm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkgICBJTlRFUlJVUFRfU0hVVERPV05fUEFS QUxMRUxfQVBQTFlfV09SS0VSIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX1RFUk1JTkFURSB8 CisJCQkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCQkJICAgSU5U RVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJICAgMTAwMEwsCisJCQkJCQkJ CSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKKworCQkJCWlm IChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQKTsKIAkJCX0KIAkJfQogCQllbHNlCkBAIC04NDQsOSArODMxLDggQEAgTG9n aWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIHN0YXRpYyB2b2lk CiBwYV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCVNlbmRQcm9jU2lnbmFs KE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3BpZCwKLQkJCQkgICBQUk9DU0lHX1BBUkFM TEVMX0FQUExZX01FU1NBR0UsCi0JCQkJICAgSU5WQUxJRF9QUk9DX05VTUJFUik7CisJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRSwKKwkJCQkgIE15TG9naWNh bFJlcFdvcmtlci0+bGVhZGVyX3BncHJvY25vKTsKIAogCWRzbV9kZXRhY2goKGRzbV9zZWdt ZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKIH0KQEAgLTg3MSwxNSArODU3LDE4IEBA IFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCUluaXRpYWxpemlu Z0FwcGx5V29ya2VyID0gdHJ1ZTsKIAogCS8qCi0JICogU2V0dXAgc2lnbmFsIGhhbmRsaW5n LgorCSAqIFNldHVwIGludGVycnVwdCBoYW5kbGluZy4KIAkgKgotCSAqIE5vdGU6IFdlIGlu dGVudGlvbmFsbHkgdXNlZCBTSUdVU1IyIHRvIHRyaWdnZXIgYSBncmFjZWZ1bCBzaHV0ZG93 bgotCSAqIGluaXRpYXRlZCBieSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4gVGhpcyBoZWxw cyB0byBkaWZmZXJlbnRpYXRlIGl0Ci0JICogZnJvbSB0aGUgY2FzZSB3aGVyZSB3ZSBhYm9y dCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBhbmQgZXhpdCBvbgotCSAqIHJlY2VpdmluZyBT SUdURVJNLgorCSAqIEluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBpbnRlcnJ1cHRzLCB3ZSB1 c2UKKwkgKiBJTlRFUlJVUFRfU0hVVERPV05fUEFSQUxMRUxfQVBQTFlfV09SS0VSIGFzIGFs dGVybmF0aXZlIHRvCisJICogSU5URVJSVVBUX1RFUk1JTkFURSB0byB0cmlnZ2VyIGEgZ3Jh Y2VmdWwgc2h1dGRvd24gaW5pdGlhdGVkIGJ5IHRoZQorCSAqIGxlYWRlciBhcHBseSB3b3Jr ZXIuIFRoaXMgaGVscHMgdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIHRoZSBjYXNlIHdoZXJl CisJICogd2UgYWJvcnQgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gYW5kIGV4aXQgb24gcmVj ZWl2aW5nIFNJR1RFUk0uCisJICoKKwkgKiBGSVhNRTogSXQgaGFzIHRoZSBzYW1lIGVmZmVj dCwgYnV0IHByaW50cyBhbiBhZGRpdGlvbmFsIG1lc3NhZ2UgdG8gdGhlCisJICogbG9nLiBJ cyBpdCB3b3J0aCBkaXN0aW5ndWlzaGluZywgYW5kIGRvIHdlIGV2ZW4gd2FudCB0aGUgbG9n IG1lc3NhZ2U/CiAJICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29u ZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRv d25SZXF1ZXN0KTsKKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CiAJQmFja2dy b3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CiAKIAkvKgpAQCAtOTQwLDggKzkyOSw3IEBA IFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWVycm9yX21xaCA9 IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CiAKIAlwcV9yZWRpcmVjdF90b19zaG1f bXEoc2VnLCBlcnJvcl9tcWgpOwotCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2Fs UmVwV29ya2VyLT5sZWFkZXJfcGlkLAotCQkJCQkJICAgSU5WQUxJRF9QUk9DX05VTUJFUik7 CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRlcl9w Z3Byb2Nubyk7CiAKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlM b2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CiAJCU15TG9naWNhbFJlcFdvcmtl ci0+cmVwbHlfdGltZSA9IDA7CkBAIC05NzUsMjkgKzk2Myw3IEBAIFBhcmFsbGVsQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29y aWdpbihvcmlnaW5uYW1lKTsKIAogCUxvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChtcWgpOwot Ci0JLyoKLQkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG11c3Qgbm90IGdldCBoZXJl IGJlY2F1c2UgdGhlIHBhcmFsbGVsIGFwcGx5Ci0JICogd29ya2VyIHdpbGwgb25seSBzdG9w IHdoZW4gaXQgcmVjZWl2ZXMgYSBTSUdURVJNIG9yIFNJR1VTUjIgZnJvbSB0aGUKLQkgKiBs ZWFkZXIsIG9yIFNJR0lOVCBmcm9tIGl0c2VsZiwgb3Igd2hlbiB0aGVyZSBpcyBhbiBlcnJv ci4gTm9uZSBvZiB0aGVzZQotCSAqIGNhc2VzIHdpbGwgYWxsb3cgdGhlIGNvZGUgdG8gcmVh Y2ggaGVyZS4KLQkgKi8KLQlBc3NlcnQoZmFsc2UpOwotfQotCi0vKgotICogSGFuZGxlIHJl Y2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRoaW4gYSBzaWdu YWwgaGFuZGxlciEgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCi0gKiB0aGF0IHdpbGwg Y2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKLSAqIFBy b2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KLSAqLwotdm9pZAotSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRlcnJ1cHRQZW5kaW5nID0g dHJ1ZTsKLQlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNo KE15TGF0Y2gpOworCUFzc2VydChmYWxzZSk7CQkJCS8qIExvZ2ljYWxQYXJhbGxlbEFwcGx5 TG9vcCBuZXZlciByZXR1cm5zICovCiB9CiAKIC8qCkBAIC0xMDY0LDcgKzEwMzAsNyBAQCBQ cm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2UoU3RyaW5nSW5mbyBtc2cpCiB9CiAKIC8qCi0g KiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKiBQcm9jZXNzIGFueSBxdWV1ZWQgcHJvdG9jb2wg bWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgogICovCiB2 b2lkCiBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCkBAIC0xMDc0LDYgKzEw NDAsOSBAQCBQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCiAKIAlzdGF0aWMg TWVtb3J5Q29udGV4dCBocGFtX2NvbnRleHQgPSBOVUxMOwogCisJLyogV2UgZG9uJ3QgZXhw ZWN0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIGFsc28gcnVuIHBhcmFsbGVsIHF1ZXJp ZXMgKi8KKwlBc3NlcnQoIVBhcmFsbGVsQ29udGV4dEFjdGl2ZSgpKTsKKwogCS8qCiAJICog VGhpcyBpcyBpbnZva2VkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNv bWUgb2YgdGhlCiAJICogZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwKQEAgLTEwOTcsOCArMTA2Niw2IEBA IFByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCkKIAogCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oaHBhbV9jb250ZXh0KTsKIAotCVBhcmFsbGVsQXBwbHlN ZXNzYWdlUGVuZGluZyA9IGZhbHNlOwotCiAJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdv cmtlclBvb2wpCiAJewogCQlzaG1fbXFfcmVzdWx0IHJlczsKQEAgLTExODksMTQgKzExNTYs MTUgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6 ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJCUFzc2VydChyZXN1bHQgPT0gU0hNX01R X1dPVUxEX0JMT0NLKTsKIAogCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KLQkJcmMg PSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVS VkFMX01TLAotCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfU0VORF9EQVRBKTsK KwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkJ ICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICBTSE1fU0VORF9SRVRS WV9JTlRFUlZBTF9NUywKKwkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9TRU5E X0RBVEEpOwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5U RVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CiAJCX0KIApAQCAtMTI2MSwxMyArMTIyOSwxNCBAQCBwYV93YWl0X2Zvcl94YWN0X3N0YXRl KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCWJyZWFrOwogCiAJCS8qIFdh aXQgdG8gYmUgc2lnbmFsbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkgMTBMLAotCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBM WV9TVEFURV9DSEFOR0UpOwotCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBz cGluLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVw dChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX1dBSVRfV0FL RVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKKwkJCQkJCQkgMTBMLAorCQkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFS QUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0 IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X1dBSVRfV0FLRVVQKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQg d2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGU2 MTEyZTExZWMyLi5kNjZiYTBiNmY1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtMjUsMTEgKzI1LDEyIEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlw dGlvbl9yZWwuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAiaXBjL2ludGVy cnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJs aWIvZHNoYXNoLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgotI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vc2xvdC5oIgpAQCAtNTgsNyArNTksNyBAQCBMb2dpY2FsUmVwV29ya2VyICpN eUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcEN0 eFN0cnVjdAogewogCS8qIFN1cGVydmlzb3IgcHJvY2Vzcy4gKi8KLQlwaWRfdAkJbGF1bmNo ZXJfcGlkOworCVByb2NOdW1iZXIJbGF1bmNoZXJfcHJvY25vOwogCiAJLyogSGFzaCB0YWJs ZSBob2xkaW5nIGxhc3Qgc3RhcnQgdGltZXMgb2Ygc3Vic2NyaXB0aW9ucycgYXBwbHkgd29y a2Vycy4gKi8KIAlkc2FfaGFuZGxlCWxhc3Rfc3RhcnRfZHNhOwpAQCAtMTgzLDcgKzE4NCw2 IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsCiAJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogewog CWJvb2wJCXJlc3VsdCA9IGZhbHNlOwotCWJvb2wJCWRyb3BwZWRfbGF0Y2ggPSBmYWxzZTsK IAogCWZvciAoOzspCiAJewpAQCAtMjE5LDI3ICsyMTksMjggQEAgV2FpdEZvclJlcGxpY2F0 aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJfQogCiAJCS8q Ci0JCSAqIFdlIG5lZWQgdGltZW91dCBiZWNhdXNlIHdlIGdlbmVyYWxseSBkb24ndCBnZXQg bm90aWZpZWQgdmlhIGxhdGNoCi0JCSAqIGFib3V0IHRoZSB3b3JrZXIgYXR0YWNoLiAgQnV0 IHdlIGRvbid0IGV4cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZy4KKwkJICogV2UgbmVlZCB0 aW1lb3V0IGJlY2F1c2Ugd2UgZ2VuZXJhbGx5IGRvbid0IGdldCBub3RpZmllZCB2aWEgYW4K KwkJICogaW50ZXJydXB0IGFib3V0IHRoZSB3b3JrZXIgYXR0YWNoLiAgQnV0IHdlIGRvbid0 IGV4cGVjdCB0byBoYXZlIHRvCisJCSAqIHdhaXQgbG9uZy4KIAkJICovCi0JCXJjID0gV2Fp dExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJf U1RBUlRVUCk7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNr IHwKKwkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBM LCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCQlkcm9wcGVkX2xhdGNoID0gdHJ1ZTsKIAkJ fQogCX0KIAogCS8qCi0JICogSWYgd2UgaGFkIHRvIGNsZWFyIGEgbGF0Y2ggZXZlbnQgaW4g b3JkZXIgdG8gd2FpdCwgYmUgc3VyZSB0byByZXN0b3JlCi0JICogaXQgYmVmb3JlIGV4aXRp bmcuICBPdGhlcndpc2UgY2FsbGVyIG1heSBtaXNzIGV2ZW50cy4KKwkgKiBYWFg6IFdlIHVz ZWQgdG8gaGF2ZSB0byByZXN0b3JlIHRoZSBwcm9jZXNzIGxhdGNoLCBiZWNhdXNlIHRoZSBs YXVuY2hlcgorCSAqIHJlbGllZCBvbiB0aGUgc2FtZSBsYXRjaCB0byB3YWl0IGZvciBvdGhl ciBzdGF0dXMgY2hhbmdlcy4gQnV0IFdlIG5vdworCSAqIHVzZSBJTlRFUlJVUFRfU1VCU0NS SVBUSU9OX0NIQU5HRSBmb3IgdGhhdC4gQnV0IGZvciBjbGFyaXksIHBlcmhhcHMgd2UKKwkg KiBzaG91bGQgdXNlIGEgZGVzaWduZWQgaW50ZXJydXB0IGZvciB0aGlzIHdhaXQgdG9vPwog CSAqLwotCWlmIChkcm9wcGVkX2xhdGNoKQotCQlTZXRMYXRjaChNeUxhdGNoKTsKIAogCXJl dHVybiByZXN1bHQ7CiB9CkBAIC00NzMsNiArNDc0LDcgQEAgcmV0cnk6CiAJd29ya2VyLT5y ZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxl c2V0ID0gTlVMTDsKIAl3b3JrZXItPmxlYWRlcl9waWQgPSBpc19wYXJhbGxlbF9hcHBseV93 b3JrZXIgPyBNeVByb2NQaWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+bGVhZGVyX3BncHJv Y25vID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jTnVtYmVyIDogSU5WQUxJ RF9QUk9DX05VTUJFUjsKIAl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxf YXBwbHlfd29ya2VyOwogCXdvcmtlci0+b2xkZXN0X25vbnJlbW92YWJsZV94aWQgPSByZXRh aW5fZGVhZF90dXBsZXMKIAkJPyBNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluCkBAIC01 MzksNyArNTQxLDYgQEAgcmV0cnk6CiAJfQogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBC R1dfTkVWRVJfUkVTVEFSVDsKLQliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJ Ymd3LmJnd19tYWluX2FyZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKIAlpZiAoIVJlZ2lz dGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQpAQCAtNTY2 LDcgKzU2Nyw3IEBAIHJldHJ5OgogICogc2xvdC4KICAqLwogc3RhdGljIHZvaWQKLWxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLCBp bnQgc2lnbm8pCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBX b3JrZXIgKndvcmtlciwgSW50ZXJydXB0TWFzayBpbnRlcnJ1cHQpCiB7CiAJdWludDE2CQln ZW5lcmF0aW9uOwogCkBAIC01ODksMTMgKzU5MCwxNCBAQCBsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0 IC0tLSB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JL RVJfU1RBUlRVUCk7CisJCXJjID0gV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNN YXNrIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAg MTBMLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCWlmIChyYyAmIFdMX0xB VENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsK IAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtNjE2LDcgKzYxOCw3IEBA IGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLCBpbnQgc2lnbm8pCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4u LiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKKwlTZW5kSW50ZXJydXB0 KGludGVycnVwdCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh3b3JrZXItPnByb2MpKTsKIAogCS8q IC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC02MzAsMTMg KzYzMiwxNCBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBX b3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBX b3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBlY3QgdG8g aGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJ CSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAot CQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdh aXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkgICBJTlRFUlJV UFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktF Ul9TSFVURE9XTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBX TF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKIAkJfQogCkBAIC02NjMsNyArNjY2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChMb2dpY2FsUmVwV29ya2VyVHlwZSB3dHlwZSwgT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJ aWYgKHdvcmtlcikKIAl7CiAJCUFzc2VydCghaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtl cikpOwotCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHVEVS TSk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBJTlRFUlJV UFRfVEVSTUlOQVRFKTsKIAl9CiAKIAlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKQEAgLTY3Miw4ICs2NzUsOSBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKExvZ2lj YWxSZXBXb3JrZXJUeXBlIHd0eXBlLCBPaWQgc3ViaWQsIE9pZCByZWxpZCkKIC8qCiAgKiBT dG9wIHRoZSBnaXZlbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KICAqCi0gKiBOb2RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNlbmRzIFNJR1VTUjIgaW5zdGVh ZCBvZiBTSUdURVJNIHRvIHRoZSBwYXJhbGxlbCBhcHBseQotICogd29ya2VyIHNvIHRoYXQg dGhlIHdvcmtlciBleGl0cyBjbGVhbmx5LgorICogTm9kZSB0aGF0IHRoZSBmdW5jdGlvbiBz ZW5kcyBJTlRFUlJVUFRfU0hVVERPV05fUEFSQUxMRUxfQVBQTFlfV09SS0VSCisgKiBpbnN0 ZWFkIG9mIElOVEVSUlVQVF9URVJNSU5BVEUgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBzbyB0aGF0IHRoZQorICogd29ya2VyIGV4aXRzIG1vcmUgY2xlYW5seS4gKEZJWE1FOiB3 aGF0J3MgdGhlIGRpZmZlcmVuY2UgcmVhbGx5PykKICAqLwogdm9pZAogbG9naWNhbHJlcF9w YV93b3JrZXJfc3RvcChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCkBAIC03MTAs MTMgKzcxNCwxMyBAQCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbykKIAkgKiBPbmx5IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgZ2Vu ZXJhdGlvbiBtYXRjaGVzIGFuZCB0aGUgd29ya2VyIGlzIGFsaXZlLgogCSAqLwogCWlmICh3 b3JrZXItPmdlbmVyYXRpb24gPT0gZ2VuZXJhdGlvbiAmJiB3b3JrZXItPnByb2MpCi0JCWxv Z2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdVU1IyKTsKKwkJbG9n aWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIElOVEVSUlVQVF9TSFVURE9X Tl9QQVJBTExFTF9BUFBMWV9XT1JLRVIpOwogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVw V29ya2VyTG9jayk7CiB9CiAKIC8qCi0gKiBXYWtlIHVwICh1c2luZyBsYXRjaCkgYW55IGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHRoYXQgbWF0Y2hlcyB0aGUKKyAqIFdha2UgdXAg KHVzaW5nIGludGVycnVwdCkgYW55IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHRoYXQg bWF0Y2hlcyB0aGUKICAqIHNwZWNpZmllZCB3b3JrZXIgdHlwZSwgc3Vic2NyaXB0aW9uIGlk LCBhbmQgcmVsYXRpb24gaWQuCiAgKi8KIHZvaWQKQEAgLTczOCw3ICs3NDIsNyBAQCBsb2dp Y2FscmVwX3dvcmtlcl93YWtldXAoTG9naWNhbFJlcFdvcmtlclR5cGUgd3R5cGUsIE9pZCBz dWJpZCwgT2lkIHJlbGlkKQogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgbGF0Y2gpIHRo ZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKiBXYWtlIHVwICh1 c2luZyBpbnRlcnJ1cHQpIHRoZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIuCiAgKgogICogQ2FsbGVyIG11c3QgaG9sZCBsb2NrLCBlbHNlIHdvcmtlci0+cHJvYyBj b3VsZCBjaGFuZ2UgdW5kZXIgdXMuCiAgKi8KQEAgLTc0Nyw3ICs3NTEsNyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIHsKIAlB c3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKIAotCVNldExh dGNoKCZ3b3JrZXItPnByb2MtPnByb2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1Byb2Mod29ya2VyLT5wcm9jKSk7CiB9 CiAKIC8qCkBAIC04MTUsNyArODE5LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZv aWQpCiAJCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZp cnN0KGxjKTsKIAogCQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKLQkJCQlsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcsIFNJR1RFUk0pOworCQkJCWxvZ2ljYWxy ZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgSU5URVJSVVBUX1RFUk1JTkFURSk7CiAJCX0K IAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTg0Nyw2ICs4 NTEsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlcikKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0g SW52YWxpZE9pZDsKIAl3b3JrZXItPmxlYWRlcl9waWQgPSBJbnZhbGlkUGlkOworCXdvcmtl ci0+bGVhZGVyX3BncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAl3b3JrZXItPnBh cmFsbGVsX2FwcGx5ID0gZmFsc2U7CiB9CiAKQEAgLTg1OCw3ICs4NjMsNyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIHN0YXRpYyB2 b2lkCiBsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQog ewotCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9IDA7CisJTG9naWNhbFJlcEN0eC0+ bGF1bmNoZXJfcHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIH0KIAogLyoKQEAgLTEw MTksNyArMTAyNCw2IEBAIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKQogCXNucHJpbnRm KGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwKIAkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBs YXVuY2hlciIpOwogCWJndy5iZ3dfcmVzdGFydF90aW1lID0gNTsKLQliZ3cuYmd3X25vdGlm eV9waWQgPSAwOwogCWJndy5iZ3dfbWFpbl9hcmcgPSAoRGF0dW0pIDA7CiAKIAlSZWdpc3Rl ckJhY2tncm91bmRXb3JrZXIoJmJndyk7CkBAIC0xMDQ1LDYgKzEwNDksNyBAQCBBcHBseUxh dW5jaGVyU2htZW1Jbml0KHZvaWQpCiAKIAkJbWVtc2V0KExvZ2ljYWxSZXBDdHgsIDAsIEFw cGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7CiAKKwkJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJf cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJTG9naWNhbFJlcEN0eC0+bGFzdF9z dGFydF9kc2EgPSBEU0FfSEFORExFX0lOVkFMSUQ7CiAJCUxvZ2ljYWxSZXBDdHgtPmxhc3Rf c3RhcnRfZHNoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwogCkBAIC0xMTkzLDggKzExOTgs MTIgQEAgQXBwbHlMYXVuY2hlcldha2V1cEF0Q29tbWl0KHZvaWQpCiB2b2lkCiBBcHBseUxh dW5jaGVyV2FrZXVwKHZvaWQpCiB7Ci0JaWYgKExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3Bp ZCAhPSAwKQotCQlraWxsKExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCwgU0lHVVNSMSk7 CisJdm9sYXRpbGUgTG9naWNhbFJlcEN0eFN0cnVjdCAqcmVwY3R4ID0gTG9naWNhbFJlcEN0 eDsKKwlQcm9jTnVtYmVyCWxhdW5jaGVyX3Byb2NubzsKKworCWxhdW5jaGVyX3Byb2NubyA9 IHJlcGN0eC0+bGF1bmNoZXJfcHJvY25vOworCWlmIChsYXVuY2hlcl9wcm9jbm8gIT0gSU5W QUxJRF9QUk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfU1VCU0NSSVBU SU9OX0NIQU5HRSwgbGF1bmNoZXJfcHJvY25vKTsKIH0KIAogLyoKQEAgLTEyMDgsMTMgKzEy MTcsMTYgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAliZWZvcmVf c2htZW1fZXhpdChsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdCwgKERhdHVtKSAwKTsKIAot CUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPT0gMCk7Ci0JTG9naWNhbFJl cEN0eC0+bGF1bmNoZXJfcGlkID0gTXlQcm9jUGlkOworCUFzc2VydChMb2dpY2FsUmVwQ3R4 LT5sYXVuY2hlcl9wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CisJTG9naWNhbFJl cEN0eC0+bGF1bmNoZXJfcHJvY25vID0gTXlQcm9jTnVtYmVyOwogCi0JLyogRXN0YWJsaXNo IHNpZ25hbCBoYW5kbGVycy4gKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJG b3JDb25maWdSZWxvYWQpOworCS8qIEVzdGFibGlzaCBpbnRlcnJ1cHQgaGFuZGxlcnMuICov CiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CiAKKwlTZXRTdGFuZGFyZElu dGVycnVwdEhhbmRsZXJzKCk7CisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlDYW5jZWxJbnRlcnJ1cHQpOworCUVuYWJsZUludGVy cnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKKwogCS8qCiAJICogRXN0YWJsaXNoIGNv bm5lY3Rpb24gdG8gbmFpbGVkIGNhdGFsb2dzICh3ZSBvbmx5IGV2ZXIgYWNjZXNzCiAJICog cGdfc3Vic2NyaXB0aW9uKS4KQEAgLTEyNTYsNiArMTI2OCw3IEBAIEFwcGx5TGF1bmNoZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQkgKiBkZXRlY3Rpb24gaWYgb25lIG9mIHRoZSBzdWJz Y3JpcHRpb24gZW5hYmxlcyByZXRhaW5fZGVhZF90dXBsZXMKIAkJICogb3B0aW9uLgogCQkg Ki8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UpOwog CQlzdWJsaXN0ID0gZ2V0X3N1YnNjcmlwdGlvbl9saXN0KCk7CiAJCWZvcmVhY2gobGMsIHN1 Ymxpc3QpCiAJCXsKQEAgLTE0MTYsMjEgKzE0MjksMTkgQEAgQXBwbHlMYXVuY2hlck1haW4o RGF0dW0gbWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRleHREZWxldGUoc3ViY3R4KTsKIAogCQkv KiBXYWl0IGZvciBtb3JlIHdvcmsuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkgICB3YWl0X3RpbWUsCi0JCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVO Q0hFUl9NQUlOKTsKLQotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXJjID0gV2FpdElu dGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9D T05GSUdfUkVMT0FEIHwKKwkJCQkJCSAgIElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdF LAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkgICB3YWl0X3RpbWUsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lD QUxfTEFVTkNIRVJfTUFJTik7CisKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0J CQlSZXNldExhdGNoKE15TGF0Y2gpOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJ fQogCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQl7Ci0JCQlDb25maWdSZWxvYWRQ ZW5kaW5nID0gZmFsc2U7Ci0JCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJ CWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKKwkJCQlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJfQogCX0KIApAQCAtMTU4NSw3ICsx NTk2LDcgQEAgQ3JlYXRlQ29uZmxpY3REZXRlY3Rpb25TbG90KHZvaWQpCiBib29sCiBJc0xv Z2ljYWxMYXVuY2hlcih2b2lkKQogewotCXJldHVybiBMb2dpY2FsUmVwQ3R4LT5sYXVuY2hl cl9waWQgPT0gTXlQcm9jUGlkOworCXJldHVybiBMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9w cm9jbm8gPT0gTXlQcm9jTnVtYmVyOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggOWM5MmZkZGQ2MjQuLjY3 NzUwMjQyZjdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3NlcXVlbmNlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2VxdWVuY2VzeW5jLmMKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgpA QCAtNDk0LDExICs0OTMsOCBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNv bm4pCiAKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJCWlmIChDb25maWdSZWxv YWRQZW5kaW5nKQotCQkJewotCQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJ CWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJCQlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJCX0KIAogCQkJc3luY19zdGF0dXMg PSBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKHNsb3QsICZzZXF1ZW5jZV9yZWwsCiAJCQkJ CQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zbG90c3luYy5jCmluZGV4IDVlMWVlN2U0NzI4Li45ZGJmODljYjgzMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAt NTksOSArNTksMTAgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Rh dGFiYXNlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9z aWduYWxfaGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Ns b3RzeW5jLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc25hcGJ1aWxkLmgiCkBAIC03OSw5 ICs4MCw5IEBACiAvKgogICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIHRvIGNv bnRyb2wgc2xvdCBzeW5jaHJvbml6YXRpb24uCiAgKgotICogVGhlICdwaWQnIGlzIGVpdGhl ciB0aGUgc2xvdCBzeW5jIHdvcmtlcidzIHBpZCBvciB0aGUgYmFja2VuZCdzIHBpZCBydW5u aW5nCisgKiBUaGUgJ3Byb2NubycgaXMgZWl0aGVyIHRoZSBzbG90IHN5bmMgd29ya2VyJ3Mg cHJvY25vIG9yIHRoZSBiYWNrZW5kJ3MgcHJvY25vIHJ1bm5pbmcKICAqIHRoZSBTUUwgZnVu Y3Rpb24gcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpLiBXaGVuIHRoZSBzdGFydHVwIHBy b2Nlc3Mgc2V0cwotICogJ3N0b3BTaWduYWxlZCcgZHVyaW5nIHByb21vdGlvbiwgaXQgdXNl cyB0aGlzICdwaWQnIHRvIHdha2UgdXAgdGhlIGN1cnJlbnRseQorICogJ3N0b3BTaWduYWxl ZCcgZHVyaW5nIHByb21vdGlvbiwgaXQgdXNlcyB0aGlzICdwcm9jbm8nIHRvIHdha2UgdXAg dGhlIGN1cnJlbnRseQogICogc3luY2hyb25pemluZyBwcm9jZXNzIHNvIHRoYXQgdGhlIHBy b2Nlc3MgY2FuIGltbWVkaWF0ZWx5IHN0b3AgaXRzCiAgKiBzeW5jaHJvbml6aW5nIHdvcmsg b24gc2VlaW5nICdzdG9wU2lnbmFsZWQnIHNldC4KICAqIFNldHRpbmcgJ3N0b3BTaWduYWxl ZCcgaXMgYWxzbyB1c2VkIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gd2hlbiB0aGUK QEAgLTEwNCw3ICsxMDUsNyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBTbG90U3luY0N0eFN0 cnVjdAogewotCXBpZF90CQlwaWQ7CisJUHJvY051bWJlcglwcm9jbm87CiAJYm9vbAkJc3Rv cFNpZ25hbGVkOwogCWJvb2wJCXN5bmNpbmc7CiAJdGltZV90CQlsYXN0X3N0YXJ0X3RpbWU7 CkBAIC0xMjIzLDcgKzEyMjQsNyBAQCBzbG90c3luY19yZXJlYWRfY29uZmlnKHZvaWQpCiAJ aWYgKGlzX3Nsb3RzeW5jX3dvcmtlcikKIAkJQXNzZXJ0KHN5bmNfcmVwbGljYXRpb25fc2xv dHMpOwogCi0JQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIAlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lH SFVQKTsKIAogCWNvbm5pbmZvX2NoYW5nZWQgPSBzdHJjbXAob2xkX3ByaW1hcnlfY29ubmlu Zm8sIFByaW1hcnlDb25uSW5mbykgIT0gMDsKQEAgLTEyODYsMTMgKzEyODcsMTQgQEAgc2xv dHN5bmNfcmVyZWFkX2NvbmZpZyh2b2lkKQogfQogCiAvKgotICogSW50ZXJydXB0IGhhbmRs ZXIgZm9yIHByb2Nlc3MgcGVyZm9ybWluZyBzbG90IHN5bmNocm9uaXphdGlvbi4KKyAqIENo ZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHBlcmZvcm1pbmcgc2xvdCBzeW5jaHJvbml6YXRp b24uCisgKgorICogVGhpcyBkb2VzIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGJ1dCBhbHNv IGNoZWNrcyBmb3IKKyAqIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIGFuZCBjaGVja3MgZm9y ICdzdG9wU2lnbmFsZWQnLgogICovCiBzdGF0aWMgdm9pZAogUHJvY2Vzc1Nsb3RTeW5jSW50 ZXJydXB0cyh2b2lkKQogewotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0KIAlpZiAoU2xv dFN5bmNDdHgtPnN0b3BTaWduYWxlZCkKIAl7CiAJCWlmIChBbUxvZ2ljYWxTbG90U3luY1dv cmtlclByb2Nlc3MoKSkKQEAgLTEzMTQsNyArMTMxNiw5IEBAIFByb2Nlc3NTbG90U3luY0lu dGVycnVwdHModm9pZCkKIAkJfQogCX0KIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQor CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXNsb3RzeW5jX3JlcmVhZF9jb25maWcoKTsKIH0K IApAQCAtMTM1OCw3ICsxMzYyLDcgQEAgc2xvdHN5bmNfd29ya2VyX29uZXhpdChpbnQgY29k ZSwgRGF0dW0gYXJnKQogCiAJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgp OwogCi0JU2xvdFN5bmNDdHgtPnBpZCA9IEludmFsaWRQaWQ7CisJU2xvdFN5bmNDdHgtPnBy b2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIAkvKgogCSAqIElmIHN5bmNpbmdfc2xv dHMgaXMgdHJ1ZSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZXJyb3JlZCBvdXQK QEAgLTE0MDQsMTMgKzE0MDgsMTYgQEAgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNv bWVfc2xvdF91cGRhdGVkKQogCQlzbGVlcF9tcyA9IE1JTl9TTE9UU1lOQ19XT1JLRVJfTkFQ VElNRV9NUzsKIAl9CiAKLQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCSAgIFdMX0xB VENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCSAgIHNs ZWVwX21zLAotCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7 CisJLyogV2FpdCBmb3IgdGhlIGludGVycnVwdHMgdGhhdCBQcm9jZXNzU2xvdFN5bmNJbnRl cnJ1cHRzKCkgd2lsbCBoYW5kbGUgKi8KKwlyYyA9IFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayB8CisJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCB8CisJCQkJ CSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAorCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgc2xlZXBfbXMsCisJ CQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfTUFJTik7CiAKLQlpZiAo cmMgJiBXTF9MQVRDSF9TRVQpCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJaWYgKHJjICYg V0xfSU5URVJSVVBUKQorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OwogfQogCiAvKgpAQCAtMTQxOCw3ICsxNDI1LDcgQEAgd2FpdF9mb3Jfc2xvdF9hY3Rpdml0 eShib29sIHNvbWVfc2xvdF91cGRhdGVkKQogICogT3RoZXJ3aXNlLCBhZHZlcnRpc2UgdGhh dCBhIHN5bmMgaXMgaW4gcHJvZ3Jlc3MuCiAgKi8KIHN0YXRpYyB2b2lkCi1jaGVja19hbmRf c2V0X3N5bmNfaW5mbyhwaWRfdCBzeW5jX3Byb2Nlc3NfcGlkKQorY2hlY2tfYW5kX3NldF9z eW5jX2luZm8oUHJvY051bWJlciBzeW5jX3Byb2Nlc3NfcHJvY25vKQogewogCVNwaW5Mb2Nr QWNxdWlyZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIApAQCAtMTQzMCwxNiArMTQzNywxNiBA QCBjaGVja19hbmRfc2V0X3N5bmNfaW5mbyhwaWRfdCBzeW5jX3Byb2Nlc3NfcGlkKQogCQkJ CWVycm1zZygiY2Fubm90IHN5bmNocm9uaXplIHJlcGxpY2F0aW9uIHNsb3RzIGNvbmN1cnJl bnRseSIpKTsKIAl9CiAKLQkvKiBUaGUgcGlkIG11c3Qgbm90IGJlIGFscmVhZHkgYXNzaWdu ZWQgaW4gU2xvdFN5bmNDdHggKi8KLQlBc3NlcnQoU2xvdFN5bmNDdHgtPnBpZCA9PSBJbnZh bGlkUGlkKTsKKwkvKiBUaGUgcHJvY25vIG11c3Qgbm90IGJlIGFscmVhZHkgYXNzaWduZWQg aW4gU2xvdFN5bmNDdHggKi8KKwlBc3NlcnQoU2xvdFN5bmNDdHgtPnByb2NubyA9PSBJTlZB TElEX1BST0NfTlVNQkVSKTsKIAogCVNsb3RTeW5jQ3R4LT5zeW5jaW5nID0gdHJ1ZTsKIAog CS8qCi0JICogQWR2ZXJ0aXNlIHRoZSByZXF1aXJlZCBQSUQgc28gdGhhdCB0aGUgc3RhcnR1 cCBwcm9jZXNzIGNhbiBraWxsIHRoZQotCSAqIHNsb3Qgc3luYyBwcm9jZXNzIG9uIHByb21v dGlvbi4KKwkgKiBBZHZlcnRpc2UgdGhlIHJlcXVpcmVkIHByb2MgbnVtYmVyIHNvIHRoYXQg dGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4ga2lsbAorCSAqIHRoZSBzbG90IHN5bmMgcHJvY2Vz cyBvbiBwcm9tb3Rpb24uCiAJICovCi0JU2xvdFN5bmNDdHgtPnBpZCA9IHN5bmNfcHJvY2Vz c19waWQ7CisJU2xvdFN5bmNDdHgtPnByb2NubyA9IHN5bmNfcHJvY2Vzc19wcm9jbm87CiAK IAlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKQEAgLTE0NTQsNyAr MTQ2MSw3IEBAIHJlc2V0X3N5bmNpbmdfZmxhZyh2b2lkKQogewogCVNwaW5Mb2NrQWNxdWly ZSgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIAlTbG90U3luY0N0eC0+c3luY2luZyA9IGZhbHNl OwotCVNsb3RTeW5jQ3R4LT5waWQgPSBJbnZhbGlkUGlkOworCVNsb3RTeW5jQ3R4LT5wcm9j bm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCVNwaW5Mb2NrUmVsZWFzZSgmU2xvdFN5bmND dHgtPm11dGV4KTsKIAogCXN5bmNpbmdfc2xvdHMgPSBmYWxzZTsKQEAgLTE1MjksMTkgKzE1 MzYsMTUgQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2Rh dGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCVBHX2V4Y2VwdGlvbl9zdGFjayA9ICZs b2NhbF9zaWdqbXBfYnVmOwogCiAJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFz aWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25h bChTSUdJTlQsIFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1RFUk0s IGRpZSk7CiAJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwotCXBx c2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQlwcXNpZ25h bChTSUdVU1IyLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKIAot CWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKE15UHJvY1BpZCk7CisJU2V0U3RhbmRhcmRJbnRl cnJ1cHRIYW5kbGVycygpOworCisJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9jTnVt YmVyKTsKIAogCWVyZXBvcnQoTE9HLCBlcnJtc2coInNsb3Qgc3luYyB3b3JrZXIgc3RhcnRl ZCIpKTsKIAotCS8qIFJlZ2lzdGVyIGl0IGFzIHNvb24gYXMgU2xvdFN5bmNDdHgtPnBpZCBp cyBpbml0aWFsaXplZC4gKi8KKwkvKiBSZWdpc3RlciBpdCBhcyBzb29uIGFzIFNsb3RTeW5j Q3R4LT5wcm9jbm8gaXMgaW5pdGlhbGl6ZWQuICovCiAJYmVmb3JlX3NobWVtX2V4aXQoc2xv dHN5bmNfd29ya2VyX29uZXhpdCwgKERhdHVtKSAwKTsKIAogCS8qCkBAIC0xNjgxLDcgKzE2 ODQsNyBAQCB1cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiAJCXJl dHVybjsKIAogCS8qIFRoZSBzbG90IHN5bmMgd29ya2VyIG9yIHRoZSBTUUwgZnVuY3Rpb24g bXVzdG4ndCBiZSBydW5uaW5nIGJ5IG5vdyAqLwotCUFzc2VydCgoU2xvdFN5bmNDdHgtPnBp ZCA9PSBJbnZhbGlkUGlkKSAmJiAhU2xvdFN5bmNDdHgtPnN5bmNpbmcpOworCUFzc2VydCgo U2xvdFN5bmNDdHgtPnByb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKSAmJiAhU2xvdFN5 bmNDdHgtPnN5bmNpbmcpOwogCiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250 cm9sTG9jaywgTFdfU0hBUkVEKTsKIApAQCAtMTcyMCw3ICsxNzIzLDcgQEAgdXBkYXRlX3N5 bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQogdm9pZAogU2h1dERvd25TbG90U3lu Yyh2b2lkKQogewotCXBpZF90CQlzeW5jX3Byb2Nlc3NfcGlkOworCVByb2NOdW1iZXIJc3lu Y19wcm9jZXNzX3Byb2NubzsKIAogCVNwaW5Mb2NrQWNxdWlyZSgmU2xvdFN5bmNDdHgtPm11 dGV4KTsKIApAQCAtMTczNyw3ICsxNzQwLDcgQEAgU2h1dERvd25TbG90U3luYyh2b2lkKQog CQlyZXR1cm47CiAJfQogCi0Jc3luY19wcm9jZXNzX3BpZCA9IFNsb3RTeW5jQ3R4LT5waWQ7 CisJc3luY19wcm9jZXNzX3Byb2NubyA9IFNsb3RTeW5jQ3R4LT5wcm9jbm87CiAKIAlTcGlu TG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKQEAgLTE3NDUsOCArMTc0OCw4 IEBAIFNodXREb3duU2xvdFN5bmModm9pZCkKIAkgKiBTaWduYWwgcHJvY2VzcyBkb2luZyBz bG90c3luYywgaWYgYW55LiBUaGUgcHJvY2VzcyB3aWxsIHN0b3AgdXBvbgogCSAqIGRldGVj dGluZyB0aGF0IHRoZSBzdG9wU2lnbmFsZWQgZmxhZyBpcyBzZXQgdG8gdHJ1ZS4KIAkgKi8K LQlpZiAoc3luY19wcm9jZXNzX3BpZCAhPSBJbnZhbGlkUGlkKQotCQlraWxsKHN5bmNfcHJv Y2Vzc19waWQsIFNJR1VTUjEpOworCWlmIChzeW5jX3Byb2Nlc3NfcHJvY25vICE9IElOVkFM SURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQ LCBzeW5jX3Byb2Nlc3NfcHJvY25vKTsKIAogCS8qIFdhaXQgZm9yIHNsb3Qgc3luYyB0byBl bmQgKi8KIAlmb3IgKDs7KQpAQCAtMTc1NCwxMyArMTc1NywxNCBAQCBTaHV0RG93blNsb3RT eW5jKHZvaWQpCiAJCWludAkJCXJjOwogCiAJCS8qIFdhaXQgYSBiaXQsIHdlIGRvbid0IGV4 cGVjdCB0byBoYXZlIHRvIHdhaXQgbG9uZyAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NI VVRET1dOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sg fAorCQkJCQkJICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMEws IFdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVFNZTkNfU0hVVERPV04pOwogCi0JCWlmIChy YyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApAQCAtMTg0NSw3 ICsxODQ5LDcgQEAgU2xvdFN5bmNTaG1lbUluaXQodm9pZCkKIAlpZiAoIWZvdW5kKQogCXsK IAkJbWVtc2V0KFNsb3RTeW5jQ3R4LCAwLCBzaXplKTsKLQkJU2xvdFN5bmNDdHgtPnBpZCA9 IEludmFsaWRQaWQ7CisJCVNsb3RTeW5jQ3R4LT5wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVN QkVSOwogCQlTcGluTG9ja0luaXQoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAJfQogfQpAQCAt MTkyMyw3ICsxOTI3LDcgQEAgU3luY1JlcGxpY2F0aW9uU2xvdHMoV2FsUmVjZWl2ZXJDb25u ICp3cmNvbm4pCiAJCUxpc3QJICAgKnJlbW90ZV9zbG90cyA9IE5JTDsKIAkJTGlzdAkgICAq c2xvdF9uYW1lcyA9IE5JTDsJLyogTGlzdCBvZiBzbG90IG5hbWVzIHRvIHRyYWNrICovCiAK LQkJY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9jUGlkKTsKKwkJY2hlY2tfYW5kX3Nl dF9zeW5jX2luZm8oTXlQcm9jTnVtYmVyKTsKIAogCQkvKiBDaGVjayBmb3IgaW50ZXJydXB0 cyBhbmQgY29uZmlnIGNoYW5nZXMgKi8KIAkJUHJvY2Vzc1Nsb3RTeW5jSW50ZXJydXB0cygp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5k ZXggMmYyZjAxMjFlY2YuLmY4NWJiZDY3YjNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTEwMCw2ICsxMDAsNyBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvcHkuaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCkBAIC0x NjcsMTEgKzE2OCwxMiBAQCB3YWl0X2Zvcl90YWJsZV9zdGF0ZV9jaGFuZ2UoT2lkIHJlbGlk LCBjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQlpZiAoIXdvcmtlcikKIAkJCWJyZWFrOwogCi0J CSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMDAwTCwgV0FJVF9FVkVO VF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJIElOVEVSUlVQVF9XQUlUX1dBS0VV UCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCisJCQkJCQkJIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9D SEFOR0UpOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJuIGZhbHNlOwpAQCAtMjE4LDE1 ICsyMjAsMTYgQEAgd2FpdF9mb3Jfd29ya2VyX3N0YXRlX2NoYW5nZShjaGFyIGV4cGVjdGVk X3N0YXRlKQogCQkJYnJlYWs7CiAKIAkJLyoKLQkJICogV2FpdC4gIFdlIGV4cGVjdCB0byBn ZXQgYSBsYXRjaCBzaWduYWwgYmFjayBmcm9tIHRoZSBhcHBseSB3b3JrZXIsCisJCSAqIFdh aXQuICBXZSBleHBlY3QgdG8gZ2V0IGFuIGludGVycnVwdCB3YWtldXAgZnJvbSB0aGUgYXBw bHkgd29ya2VyLAogCQkgKiBidXQgdXNlIGEgdGltZW91dCBpbiBjYXNlIGl0IGRpZXMgd2l0 aG91dCBzZW5kaW5nIG9uZS4KIAkJICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkgICAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdF KTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJ CQkJICAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMDAwTCwgV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKIAotCQlpZiAocmMgJiBXTF9M QVRDSF9TRVQpCi0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlpZiAocmMgJiBXTF9JTlRF UlJVUFQpCisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCX0K IAogCXJldHVybiBmYWxzZTsKQEAgLTUxOCw3ICs1MjEsNyBAQCBQcm9jZXNzU3luY2luZ1Rh Ymxlc0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkgKiB0aGUgZXhp c3RpbmcgbG9ja3MgYmVmb3JlIGVudGVyaW5nIGEgYnVzeSBsb29wLgogCQkJCQkJICogVGhp cyBpcyByZXF1aXJlZCB0byBhdm9pZCBhbnkgdW5kZXRlY3RlZCBkZWFkbG9ja3MKIAkJCQkJ CSAqIGR1ZSB0byBhbnkgZXhpc3RpbmcgbG9jayBhcyBkZWFkbG9jayBkZXRlY3RvciB3b24n dAotCQkJCQkJICogYmUgYWJsZSB0byBkZXRlY3QgdGhlIHdhaXRzIG9uIHRoZSBsYXRjaC4K KwkJCQkJCSAqIGJlIGFibGUgdG8gZGV0ZWN0IHRoZSB3YWl0cyBvbiB0aGUgaW50ZXJydXB0 LgogCQkJCQkJICoKIAkJCQkJCSAqIEFsc28gY2xvc2UgYW55IHRhYmxlcyBwcmlvciB0byB0 aGUgY29tbWl0LgogCQkJCQkJICovCkBAIC02OTcsMTQgKzcwMCwxMiBAQCBjb3B5X3JlYWRf ZGF0YSh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCkKIAkJfQogCiAJ CS8qCi0JCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBsYXRjaC4KKwkJICogV2FpdCBmb3Ig bW9yZSBkYXRhIG9yIGludGVycnVwdC4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2hPclNv Y2tldChNeUxhdGNoLAotCQkJCQkJCQkgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfTEFUQ0hf U0VUIHwKLQkJCQkJCQkJIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJ CQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBKTsKLQotCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdE9yU29ja2V0KENo ZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJCQkgV0xfU09DS0VUX1JFQURBQkxFIHwg V0xfSU5URVJSVVBUIHwKKwkJCQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCQkJCSBmZCwgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RB VEEpOwogCX0KIAogCXJldHVybiBieXRlc3JlYWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYwppbmRleCBiYWU4YzAxMTM5MC4uOGMzMWJjYWQ0M2UgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjYxLDEz ICsyNjEsMTQgQEAKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9u LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxf aGFuZGxlcnMuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2NvbmZsaWN0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgiCkBAIC00MDU1LDExICs0MDU2LDggQEAgTG9naWNhbFJlcEFwcGx5TG9v cChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCQkJCWludAkJCWM7CiAJCQkJCVN0cmlu Z0luZm9EYXRhIHM7CiAKLQkJCQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCQkJCXsK LQkJCQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCQkJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCQkJCX0KIAogCQkJCQkvKiBSZXNldCB0aW1lb3V0LiAq LwogCQkJCQlsYXN0X3JlY3ZfdGltZXN0YW1wID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwpA QCAtNDE3OCwxMSArNDE3NiwxMSBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIg bGFzdF9yZWNlaXZlZCkKIAkJCWJyZWFrOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9yIG1vcmUg ZGF0YSBvciBsYXRjaC4gIElmIHdlIGhhdmUgdW5mbHVzaGVkIHRyYW5zYWN0aW9ucywKLQkJ ICogd2FrZSB1cCBhZnRlciBXYWxXcml0ZXJEZWxheSB0byBzZWUgaWYgdGhleSd2ZSBiZWVu IGZsdXNoZWQgeWV0IChpbgotCQkgKiB3aGljaCBjYXNlIHdlIHNob3VsZCBzZW5kIGEgZmVl ZGJhY2sgbWVzc2FnZSkuICBPdGhlcndpc2UsIHRoZXJlJ3MKLQkJICogbm8gcGFydGljdWxh ciB1cmdlbmN5IGFib3V0IHdha2luZyB1cCB1bmxlc3Mgd2UgZ2V0IGRhdGEgb3IgYQotCQkg KiBzaWduYWwuCisJCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuICBJZiB3 ZSBoYXZlIHVuZmx1c2hlZAorCQkgKiB0cmFuc2FjdGlvbnMsIHdha2UgdXAgYWZ0ZXIgV2Fs V3JpdGVyRGVsYXkgdG8gc2VlIGlmIHRoZXkndmUgYmVlbgorCQkgKiBmbHVzaGVkIHlldCAo aW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgc2VuZCBhIGZlZWRiYWNrIG1lc3NhZ2UpLgorCQkg KiBPdGhlcndpc2UsIHRoZXJlJ3Mgbm8gcGFydGljdWxhciB1cmdlbmN5IGFib3V0IHdha2lu ZyB1cCB1bmxlc3Mgd2UKKwkJICogZ2V0IGRhdGEgb3IgYSBzaWduYWwuCiAJCSAqLwogCQlp ZiAoIWRsaXN0X2lzX2VtcHR5KCZsc25fbWFwcGluZykpCiAJCQl3YWl0X3RpbWUgPSBXYWxX cml0ZXJEZWxheTsKQEAgLTQyMDMsMjMgKzQyMDEsMjIgQEAgTG9naWNhbFJlcEFwcGx5TG9v cChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCQkJd2FpdF90aW1lID0gTWluKHdhaXRf dGltZSwgTXlTdWJzY3JpcHRpb24tPm1heHJldGVudGlvbik7CiAJCX0KIAotCQlyYyA9IFdh aXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfU09DS0VUX1JFQURBQkxF IHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKLQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLAotCQkJCQkJCSAgIFdBSVRfRVZF TlRfTE9HSUNBTF9BUFBMWV9NQUlOKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0T3JTb2NrZXQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dB S0VVUCB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAorCQkJCQkJCQkg ICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9JTlRFUlJVUFQgfAorCQkJCQkJCQkgICBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJICAgZmQsIHdhaXRfdGlt ZSwKKwkJCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4pOwogCi0JCWlm IChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0J CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAotCQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZh bHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkp CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCWlmIChyYyAm IFdMX1RJTUVPVVQpCiAJCXsKQEAgLTU5MjgsOCArNTkyNSwxMyBAQCBTZXR1cEFwcGx5T3JT eW5jV29ya2VyKGludCB3b3JrZXJfc2xvdCkKIAogCUFzc2VydChhbV90YWJsZXN5bmNfd29y a2VyKCkgfHwgYW1fc2VxdWVuY2VzeW5jX3dvcmtlcigpIHx8IGFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSk7CiAKLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChT SUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCS8qIFNldHVwIGludGVy cnVwdCBoYW5kbGluZyAqLworCVNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnMoKTsKKwor CS8qIE92ZXJyaWRlIHRoZSBoYW5kbGVyIGZvciBwYXJhbGxsZWwgbWVzc2FnZXMgKi8KKwlT ZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFLCBQcm9jZXNz UGFyYWxsZWxBcHBseU1lc3NhZ2VzKTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1BB UkFMTEVMX01FU1NBR0UpOworCiAJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDI4YzcwMTk0MDJiLi45NzQy ZGRkMWZkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNDQsOSArNDQsOSBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjb21tb24vZmls ZV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJpcGMv aW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90 c3luYy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKQEAgLTYyMiw3ICs2MjIs NiBAQCBSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93 YWl0LCBib29sIGVycm9yX2lmX2ludmFsaWQpCiB7CiAJUmVwbGljYXRpb25TbG90ICpzOwog CVByb2NOdW1iZXIJYWN0aXZlX3Byb2M7Ci0JaW50CQkJYWN0aXZlX3BpZDsKIAogCUFzc2Vy dChuYW1lICE9IE5VTEwpOwogCkBAIC02ODUsNyArNjg0LDYgQEAgcmV0cnk6CiAJCXMtPmFj dGl2ZV9wcm9jID0gYWN0aXZlX3Byb2MgPSBNeVByb2NOdW1iZXI7CiAJCVJlcGxpY2F0aW9u U2xvdFNldEluYWN0aXZlU2luY2UocywgMCwgdHJ1ZSk7CiAJfQotCWFjdGl2ZV9waWQgPSBH ZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyktPnBpZDsKIAlMV0xvY2tSZWxlYXNlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKIAogCS8qCkBAIC03MDcsNyArNzA1LDcgQEAg cmV0cnk6CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf SU5fVVNFKSwKIAkJCQkgZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpcyBhY3Rp dmUgZm9yIFBJRCAlZCIsCi0JCQkJCQlOYW1lU3RyKHMtPmRhdGEubmFtZSksIGFjdGl2ZV9w aWQpKSk7CisJCQkJCQlOYW1lU3RyKHMtPmRhdGEubmFtZSksIEdldFBHUHJvY0J5TnVtYmVy KGFjdGl2ZV9wcm9jKS0+cGlkKSkpOwogCX0KIAllbHNlIGlmICghbm93YWl0KQogCQlDb25k aXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7IC8qIG5vIHNsZWVwIG5lZWRlZCBhZnRlciBh bGwgKi8KQEAgLTE5NjgsNyArMTk2Niw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl U2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQkJCQkJCSAgIE9pZCBkYm9pZCwgVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkgICBib29sICpy ZWxlYXNlZF9sb2NrX291dCkKIHsKLQlpbnQJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IDA7CisJ UHJvY051bWJlcglsYXN0X3NpZ25hbGVkX3Byb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwog CWJvb2wJCXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKIAlib29sCQlpbnZhbGlkYXRlZCA9IGZh bHNlOwogCVRpbWVzdGFtcFR6IGluYWN0aXZlX3NpbmNlID0gMDsKQEAgLTE5NzgsNyArMTk3 Niw2IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVf Y2F1c2VzLAogCQlYTG9nUmVjUHRyCXJlc3RhcnRfbHNuOwogCQlOYW1lRGF0YQlzbG90bmFt ZTsKIAkJUHJvY051bWJlcglhY3RpdmVfcHJvYzsKLQkJaW50CQkJYWN0aXZlX3BpZCA9IDA7 CiAJCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGludmFsaWRhdGlvbl9jYXVz ZSA9IFJTX0lOVkFMX05PTkU7CiAJCVRpbWVzdGFtcFR6IG5vdyA9IDA7CiAJCWxvbmcJCXNs b3RfaWRsZV9zZWNzID0gMDsKQEAgLTIwNjIsMTEgKzIwNTksNiBAQCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCS8qIExldCBj YWxsZXIga25vdyAqLwogCQkJaW52YWxpZGF0ZWQgPSB0cnVlOwogCQl9Ci0JCWVsc2UKLQkJ ewotCQkJYWN0aXZlX3BpZCA9IEdldFBHUHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKS0+cGlk OwotCQkJQXNzZXJ0KGFjdGl2ZV9waWQgIT0gMCk7Ci0JCX0KIAogCQlTcGluTG9ja1JlbGVh c2UoJnMtPm11dGV4KTsKIApAQCAtMjEwNSwyMiArMjA5NywyNSBAQCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCSAqIHByb2Nl c3Mgb3ducyBpdC4gVG8gaGFuZGxlIHRoYXQsIHdlIHNpZ25hbCBvbmx5IGlmIHRoZSBQSUQg b2YKIAkJCSAqIHRoZSBvd25pbmcgcHJvY2VzcyBoYXMgY2hhbmdlZCBmcm9tIHRoZSBwcmV2 aW91cyB0aW1lLiAoVGhpcwogCQkJICogbG9naWMgYXNzdW1lcyB0aGF0IHRoZSBzYW1lIFBJ RCBpcyBub3QgcmV1c2VkIHZlcnkgcXVpY2tseS4pCisJCQkgKgorCQkJICogRklYTUU6IG5l ZWQgYW5vdGhlciBjaGVjayBub3cgdGhhdCB3ZSdyZSB1c2luZyBQcm9jTnVtYmVycywKKwkJ CSAqIHdoaWNoIGRvIGdldCByZWN5Y2xlZCBxdWlja2x5CiAJCQkgKi8KLQkJCWlmIChsYXN0 X3NpZ25hbGVkX3BpZCAhPSBhY3RpdmVfcGlkKQorCQkJaWYgKGxhc3Rfc2lnbmFsZWRfcHJv YyAhPSBhY3RpdmVfcHJvYykKIAkJCXsKLQkJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9uKGlu dmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwgYWN0aXZlX3BpZCwKKwkJCQlSZXBvcnRTbG90SW52 YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwKKwkJCQkJCQkJCSAgIEdldFBH UHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKS0+cGlkLAogCQkJCQkJCQkJICAgc2xvdG5hbWUs IHJlc3RhcnRfbHNuLAogCQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKIAkJCQkJCQkJCSAgIHNsb3RfaWRsZV9zZWNzKTsKIAogCQkJCWlmIChNeUJh Y2tlbmRUeXBlID09IEJfU1RBUlRVUCkKIAkJCQkJKHZvaWQpIFNpZ25hbFJlY292ZXJ5Q29u ZmxpY3QoR2V0UEdQcm9jQnlOdW1iZXIoYWN0aXZlX3Byb2MpLAotCQkJCQkJCQkJCQkJICBh Y3RpdmVfcGlkLAogCQkJCQkJCQkJCQkJICBSRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCk7CiAJCQkJZWxzZQotCQkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsK KwkJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfVEVSTUlOQVRFLCBhY3RpdmVfcHJvYyk7 CiAKLQkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFjdGl2ZV9waWQ7CisJCQkJbGFzdF9zaWdu YWxlZF9wcm9jID0gYWN0aXZlX3Byb2M7CiAJCQl9CiAKIAkJCS8qIFdhaXQgdW50aWwgdGhl IHNsb3QgaXMgcmVsZWFzZWQuICovCkBAIC0yMTYxLDcgKzIxNTYsOCBAQCBJbnZhbGlkYXRl UG9zc2libHlPYnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCVJlcGxp Y2F0aW9uU2xvdFNhdmUoKTsKIAkJCVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKIAotCQkJ UmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIGZhbHNlLCBhY3Rp dmVfcGlkLAorCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2Us IGZhbHNlLAorCQkJCQkJCQkgICBHZXRQR1Byb2NCeU51bWJlcihhY3RpdmVfcHJvYyktPnBp ZCwKIAkJCQkJCQkJICAgc2xvdG5hbWUsIHJlc3RhcnRfbHNuLAogCQkJCQkJCQkgICBvbGRl c3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkgICBzbG90X2lkbGVf c2Vjcyk7CkBAIC0zMjUzLDExICszMjQ5LDggQEAgV2FpdEZvclN0YW5kYnlDb25maXJtYXRp b24oWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24pCiAJewogCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwogCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCQl7Ci0JCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CisJCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9D T05GSUdfUkVMT0FEKSkKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwotCQl9 CiAKIAkJLyogRXhpdCBpZiBkb25lIHdhaXRpbmcgZm9yIGV2ZXJ5IHNsb3QuICovCiAJCWlm IChTdGFuZGJ5U2xvdHNIYXZlQ2F1Z2h0dXAod2FpdF9mb3JfbHNuLCBXQVJOSU5HKSkKQEAg LTMyNjcsNiArMzI2MCw4IEBAIFdhaXRGb3JTdGFuZGJ5Q29uZmlybWF0aW9uKFhMb2dSZWNQ dHIgd2FpdF9mb3JfbHNuKQogCQkgKiBXYWl0IGZvciB0aGUgc2xvdHMgaW4gdGhlIHN5bmNo cm9uaXplZF9zdGFuZGJ5X3Nsb3RzIHRvIGNhdGNoIHVwLAogCQkgKiBidXQgdXNlIGEgdGlt ZW91dCAoMXMpIHNvIHdlIGNhbiBhbHNvIGNoZWNrIGlmIHRoZQogCQkgKiBzeW5jaHJvbml6 ZWRfc3RhbmRieV9zbG90cyBoYXMgYmVlbiBjaGFuZ2VkLgorCQkgKgorCQkgKiBGSVhNRTog SSB0aGluayB3ZSBuZWVkIGEgd2F5IHRvIGFkZCBhIENWIHRvIFdhaXRFdmVudFNldAogCQkg Ki8KIAkJQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVwKCZXYWxTbmRDdGwtPndhbF9jb25m aXJtX3Jjdl9jdiwgMTAwMCwKIAkJCQkJCQkJCVdBSVRfRVZFTlRfV0FJVF9GT1JfU1RBTkRC WV9DT05GSVJNQVRJT04pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCmluZGV4IGQx NTgyYTVkNzExLi40YmE1ZWQ4MjhiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAu YwpAQCAtNzYsNiArNzYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjb21tb24vaW50LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3N5bmNyZXAuaCIKQEAgLTI2NSwyMiArMjY2LDIyIEBAIFN5bmNSZXBXYWl0Rm9y TFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkvKgogCSAqIFdhaXQgZm9yIHNw ZWNpZmllZCBMU04gdG8gYmUgY29uZmlybWVkLgogCSAqCi0JICogRWFjaCBwcm9jIGhhcyBp dHMgb3duIHdhaXQgbGF0Y2gsIHNvIHdlIHBlcmZvcm0gYSBub3JtYWwgbGF0Y2gKKwkgKiBF YWNoIHByb2MgaGFzIGl0cyBvd24gd2FpdCBpbnRlcnJ1cHQgdmVjdG9yLCBzbyB3ZSBwZXJm b3JtIGEgbm9ybWFsCiAJICogY2hlY2svd2FpdCBsb29wIGhlcmUuCiAJICovCiAJZm9yICg7 OykKIAl7CiAJCWludAkJCXJjOwogCi0JCS8qIE11c3QgcmVzZXQgdGhlIGxhdGNoIGJlZm9y ZSB0ZXN0aW5nIHN0YXRlLiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKiBNdXN0 IGNsZWFyIHRoZSBpbnRlcnJ1cHQgZmxhZyBiZWZvcmUgdGVzdGluZyBzdGF0ZS4gKi8KKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsKIAogCQkvKgotCQkgKiBB Y3F1aXJpbmcgdGhlIGxvY2sgaXMgbm90IG5lZWRlZCwgdGhlIGxhdGNoIGVuc3VyZXMgcHJv cGVyCi0JCSAqIGJhcnJpZXJzLiBJZiBpdCBsb29rcyBsaWtlIHdlJ3JlIGRvbmUsIHdlIG11 c3QgcmVhbGx5IGJlIGRvbmUsCi0JCSAqIGJlY2F1c2Ugb25jZSB3YWxzZW5kZXIgY2hhbmdl cyB0aGUgc3RhdGUgdG8gU1lOQ19SRVBfV0FJVF9DT01QTEVURSwKLQkJICogaXQgd2lsbCBu ZXZlciB1cGRhdGUgaXQgYWdhaW4sIHNvIHdlIGNhbid0IGJlIHNlZWluZyBhIHN0YWxlIHZh bHVlCi0JCSAqIGluIHRoYXQgY2FzZS4KKwkJICogQWNxdWlyaW5nIHRoZSBsb2NrIGlzIG5v dCBuZWVkZWQsIHRoZSBpbnRlcnJ1cHQgZW5zdXJlcyBwcm9wZXIKKwkJICogYmFycmllcnMg KEZJWE1FOiBpcyB0aGF0IHNvPykuIElmIGl0IGxvb2tzIGxpa2Ugd2UncmUgZG9uZSwgd2Ug bXVzdAorCQkgKiByZWFsbHkgYmUgZG9uZSwgYmVjYXVzZSBvbmNlIHdhbHNlbmRlciBjaGFu Z2VzIHRoZSBzdGF0ZSB0bworCQkgKiBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFLCBpdCB3aWxs IG5ldmVyIHVwZGF0ZSBpdCBhZ2Fpbiwgc28gd2UgY2FuJ3QKKwkJICogYmUgc2VlaW5nIGEg c3RhbGUgdmFsdWUgaW4gdGhhdCBjYXNlLgogCQkgKi8KIAkJaWYgKE15UHJvYy0+c3luY1Jl cFN0YXRlID09IFNZTkNfUkVQX1dBSVRfQ09NUExFVEUpCiAJCQlicmVhazsKQEAgLTI5NCwx MCArMjk1LDEwIEBAIFN5bmNSZXBXYWl0Rm9yTFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNv bW1pdCkKIAkJICogZW50aXRsZWQgdG8gYXNzdW1lIHRoYXQgYW4gYWNrbm93bGVkZ2VkIGNv bW1pdCBpcyBhbHNvIHJlcGxpY2F0ZWQsCiAJCSAqIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVl LiBTbyBpbiB0aGlzIGNhc2Ugd2UgaXNzdWUgYSBXQVJOSU5HICh3aGljaAogCQkgKiBzb21l IGNsaWVudHMgbWF5IGJlIGFibGUgdG8gaW50ZXJwcmV0KSBhbmQgc2h1dCBvZmYgZnVydGhl ciBvdXRwdXQuCi0JCSAqIFdlIGRvIE5PVCByZXNldCBQcm9jRGllUGVuZGluZywgc28gdGhh dCB0aGUgcHJvY2VzcyB3aWxsIGRpZSBhZnRlcgotCQkgKiB0aGUgY29tbWl0IGlzIGNsZWFu ZWQgdXAuCisJCSAqIFdlIGRvIE5PVCBjbGVhciB0aGUgaW50ZXJydXB0IGJpdCwgc28gdGhh dCB0aGUgcHJvY2VzcyB3aWxsIGRpZQorCQkgKiBhZnRlciB0aGUgY29tbWl0IGlzIGNsZWFu ZWQgdXAuCiAJCSAqLwotCQlpZiAoUHJvY0RpZVBlbmRpbmcpCisJCWlmIChJbnRlcnJ1cHRQ ZW5kaW5nKElOVEVSUlVQVF9URVJNSU5BVEUpKQogCQl7CiAJCQllcmVwb3J0KFdBUk5JTkcs CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLApAQCAtMzE0LDkgKzMx NSw4IEBAIFN5bmNSZXBXYWl0Rm9yTFNOKFhMb2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkK IAkJICogYWx0b2dldGhlciBpcyBub3QgaGVscGZ1bCwgc28gd2UganVzdCB0ZXJtaW5hdGUg dGhlIHdhaXQgd2l0aCBhCiAJCSAqIHN1aXRhYmxlIHdhcm5pbmcuCiAJCSAqLwotCQlpZiAo UXVlcnlDYW5jZWxQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRf UVVFUllfQ0FOQ0VMKSkKIAkJewotCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CiAJ CQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShlcnJtc2coImNhbmNlbGluZyB3YWl0IGZvciBz eW5jaHJvbm91cyByZXBsaWNhdGlvbiBkdWUgdG8gdXNlciByZXF1ZXN0IiksCiAJCQkJCSBl cnJkZXRhaWwoIlRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBjb21taXR0ZWQgbG9jYWxs eSwgYnV0IG1pZ2h0IG5vdCBoYXZlIGJlZW4gcmVwbGljYXRlZCB0byB0aGUgc3RhbmRieS4i KSkpOwpAQCAtMzI1LDExICszMjUsMTUgQEAgU3luY1JlcFdhaXRGb3JMU04oWExvZ1JlY1B0 ciBsc24sIGJvb2wgY29tbWl0KQogCQl9CiAKIAkJLyoKLQkJICogV2FpdCBvbiBsYXRjaC4g IEFueSBjb25kaXRpb24gdGhhdCBzaG91bGQgd2FrZSB1cyB1cCB3aWxsIHNldCB0aGUKLQkJ ICogbGF0Y2gsIHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQuCisJCSAqIFdhaXQgb24gaW50ZXJy dXB0LiAgQW55IGNvbmRpdGlvbiB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0CisJ CSAqIHRoZSBhcHByb3ByaWF0ZSBpbnRlcnJ1cHQsIHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQu CiAJCSAqLwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9Q T1NUTUFTVEVSX0RFQVRILCAtMSwKLQkJCQkJICAgV0FJVF9FVkVOVF9TWU5DX1JFUCk7CisJ CXJjID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAgfAorCQkJCQkJICAg SU5URVJSVVBUX1RFUk1JTkFURSB8CisJCQkJCQkgICBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM LAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCwKKwkJCQkJ CSAgIC0xLAorCQkJCQkJICAgV0FJVF9FVkVOVF9TWU5DX1JFUCk7CiAKIAkJLyoKIAkJICog SWYgdGhlIHBvc3RtYXN0ZXIgZGllcywgd2UnbGwgcHJvYmFibHkgbmV2ZXIgZ2V0IGFuIGFj a25vd2xlZGdtZW50LApAQCAtMzM3LDcgKzM0MSw3IEBAIFN5bmNSZXBXYWl0Rm9yTFNOKFhM b2dSZWNQdHIgbHNuLCBib29sIGNvbW1pdCkKIAkJICovCiAJCWlmIChyYyAmIFdMX1BPU1RN QVNURVJfREVBVEgpCiAJCXsKLQkJCVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKKwkJCVJhaXNl SW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOwogCQkJd2hlcmVUb1NlbmRPdXRwdXQg PSBEZXN0Tm9uZTsKIAkJCVN5bmNSZXBDYW5jZWxXYWl0KCk7CiAJCQlicmVhazsKQEAgLTk0 NCw3ICs5NDgsNyBAQCBTeW5jUmVwV2FrZVF1ZXVlKGJvb2wgYWxsLCBpbnQgbW9kZSkKIAkJ LyoKIAkJICogV2FrZSBvbmx5IHdoZW4gd2UgaGF2ZSBzZXQgc3RhdGUgYW5kIHJlbW92ZWQg ZnJvbSBxdWV1ZS4KIAkJICovCi0JCVNldExhdGNoKCYocHJvYy0+cHJvY0xhdGNoKSk7CisJ CVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQ cm9jKHByb2MpKTsKIAogCQludW1wcm9jcysrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5jCmluZGV4IGVjNmM1MTY1MzBkLi5lZDUzZDk2YzMxNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC02MCwxMiArNjAsMTMgQEAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ3dhaXQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2F1 dGhpZC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBx L3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVy L2F1eHByb2Nlc3MuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTI0NiwxNiAr MjQ3LDggQEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6 ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJLyogQXJyYW5nZSB0byBjbGVhbiB1cCBhdCB3YWxy ZWNlaXZlciBleGl0ICovCiAJb25fc2htZW1fZXhpdChXYWxSY3ZEaWUsIFBvaW50ZXJHZXRE YXR1bSgmc3RhcnRwb2ludFRMSSkpOwogCi0JLyogUHJvcGVybHkgYWNjZXB0IG9yIGlnbm9y ZSBzaWduYWxzIHRoZSBwb3N0bWFzdGVyIG1pZ2h0IHNlbmQgdXMgKi8KLQlwcXNpZ25hbChT SUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOyAvKiBzZXQgZmxhZyB0byBy ZWFkIGNvbmZpZwotCQkJCQkJCQkJCQkJCSAqIGZpbGUgKi8KLQlwcXNpZ25hbChTSUdJTlQs IFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CQkvKiByZXF1ZXN0IHNodXRk b3duICovCi0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0 UG9zdG1hc3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Ci0JcHFz aWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25h bF9zaWd1c3IxX2hhbmRsZXIpOwotCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOworCS8q IFNldCB1cCBpbnRlcnJ1cHQgaGFuZGxlcnMuIFdlIGhhdmUgbm8gc3BlY2lhbCBuZWVkcy4g Ki8KKwlTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKCk7CiAKIAkvKiBMb2FkIHRoZSBs aWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2 ZXIiLCBmYWxzZSk7CkBAIC00MzksOSArNDMyLDggQEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQkJLyog UHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwog CQkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJCQlpZiAoQ29uZmlnUmVsb2FkUGVu ZGluZykKKwkJCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCkpCiAJCQkJewotCQkJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQkJCVBy b2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJCQkvKiByZWNvbXB1dGUgd2FrZXVw IHRpbWVzICovCiAJCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKQEAgLTUxNCwy NSArNTA2LDI3IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEs IHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCiAJCQkJLyoKIAkJCQkgKiBJZGVhbGx5IHdl IHdvdWxkIHJldXNlIGEgV2FpdEV2ZW50U2V0IG9iamVjdCByZXBlYXRlZGx5Ci0JCQkJICog aGVyZSB0byBhdm9pZCB0aGUgb3ZlcmhlYWRzIG9mIFdhaXRMYXRjaE9yU29ja2V0IG9uIGVw b2xsCi0JCQkJICogc3lzdGVtcywgYnV0IHdlIGNhbid0IGJlIHN1cmUgdGhhdCBsaWJwcSAo b3IgYW55IG90aGVyCi0JCQkJICogd2FscmVjZWl2ZXIgaW1wbGVtZW50YXRpb24pIGhhcyB0 aGUgc2FtZSBzb2NrZXQgKGV2ZW4gaWYKLQkJCQkgKiB0aGUgZmQgaXMgdGhlIHNhbWUgbnVt YmVyLCBpdCBtYXkgaGF2ZSBiZWVuIGNsb3NlZCBhbmQKKwkJCQkgKiBoZXJlIHRvIGF2b2lk IHRoZSBvdmVyaGVhZHMgb2YgV2FpdEludGVycnVwdE9yU29ja2V0IG9uCisJCQkJICogZXBv bGwgc3lzdGVtcywgYnV0IHdlIGNhbid0IGJlIHN1cmUgdGhhdCBsaWJwcSAob3IgYW55CisJ CQkJICogb3RoZXIgd2FscmVjZWl2ZXIgaW1wbGVtZW50YXRpb24pIGhhcyB0aGUgc2FtZSBz b2NrZXQgKGV2ZW4KKwkJCQkgKiBpZiB0aGUgZmQgaXMgdGhlIHNhbWUgbnVtYmVyLCBpdCBt YXkgaGF2ZSBiZWVuIGNsb3NlZCBhbmQKIAkJCQkgKiByZW9wZW5lZCBzaW5jZSB0aGUgbGFz dCB0aW1lKS4gIEluIGZ1dHVyZSwgaWYgdGhlcmUgaXMgYQogCQkJCSAqIGZ1bmN0aW9uIGZv ciByZW1vdmluZyBzb2NrZXRzIGZyb20gV2FpdEV2ZW50U2V0LCB0aGVuIHdlCiAJCQkJICog Y291bGQgYWRkIGFuZCByZW1vdmUganVzdCB0aGUgc29ja2V0IGVhY2ggdGltZSwgcG90ZW50 aWFsbHkKIAkJCQkgKiBhdm9pZGluZyBzb21lIHN5c3RlbSBjYWxscy4KIAkJCQkgKi8KIAkJ CQlBc3NlcnQod2FpdF9mZCAhPSBQR0lOVkFMSURfU09DS0VUKTsKLQkJCQlyYyA9IFdhaXRM YXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRI IHwgV0xfU09DS0VUX1JFQURBQkxFIHwKLQkJCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9M QVRDSF9TRVQsCi0JCQkJCQkJCQkgICB3YWl0X2ZkLAotCQkJCQkJCQkJICAgbmFwLAotCQkJ CQkJCQkJICAgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTik7Ci0JCQkJaWYgKHJjICYg V0xfTEFUQ0hfU0VUKQorCQkJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KENoZWNrRm9y SW50ZXJydXB0c01hc2sgfAorCQkJCQkJCQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUCB8 CisJCQkJCQkJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCisJCQkJCQkJCQkJICAg V0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8CisJCQkJCQkJCQkJ ICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQVCwKKwkJCQkJCQkJCQkgICB3YWl0X2ZkLAor CQkJCQkJCQkJCSAgIG5hcCwKKwkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZF Ul9NQUlOKTsKKwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCQkJewotCQkJCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9X QUtFVVApOwogCQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkJCWlmICh3YWxy Y3YtPmZvcmNlX3JlcGx5KQpAQCAtNjgwLDcgKzY3NCw3IEBAIFdhbFJjdldhaXRGb3JTdGFy dFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9p bnRUTEkpCiAJV2FrZXVwUmVjb3ZlcnkoKTsKIAlmb3IgKDs7KQogCXsKLQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQKTsK IAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC03MTIsOCArNzA2LDEyIEBAIFdh bFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0YXJ0cG9pbnQsIFRpbWVM aW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJCX0KIAkJU3BpbkxvY2tSZWxlYXNlKCZ3YWxyY3Yt Pm11dGV4KTsKIAotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgV0FJVF9FVkVOVF9XQUxfUkVDRUlW RVJfV0FJVF9TVEFSVCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJy dXB0c01hc2sgfAorCQkJCQkJCSBJTlRFUlJVUFRfVEVSTUlOQVRFIHwKKwkJCQkJCQkgSU5U RVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILAorCQkJCQkJCSAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9SRUNFSVZF Ul9XQUlUX1NUQVJUKTsKIAl9CiAKIAlpZiAodXBkYXRlX3Byb2Nlc3NfdGl0bGUpCkBAIC0x Mzg0LDcgKzEzODIsNyBAQCBXYWxSY3ZGb3JjZVJlcGx5KHZvaWQpCiAJcHJvY25vID0gV2Fs UmN2LT5wcm9jbm87CiAJU3BpbkxvY2tSZWxlYXNlKCZXYWxSY3YtPm11dGV4KTsKIAlpZiAo cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNoKCZHZXRQR1Byb2NC eU51bWJlcihwcm9jbm8pLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwgcHJvY25vKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRleCBlNjJlOGEyMDQyMC4uOTMzYzRlNDE1 NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMK QEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgorI2luY2x1ZGUgImlwYy9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKQEAgLTMzMiw3 ICszMzMsNyBAQCBSZXF1ZXN0WExvZ1N0cmVhbWluZyhUaW1lTGluZUlEIHRsaSwgWExvZ1Jl Y1B0ciByZWNwdHIsIGNvbnN0IGNoYXIgKmNvbm5pbmZvLAogCWlmIChsYXVuY2gpCiAJCVNl bmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX1dBTFJFQ0VJVkVSKTsKIAllbHNl IGlmICh3YWxyY3ZfcHJvYyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgm R2V0UEdQcm9jQnlOdW1iZXIod2FscmN2X3Byb2MpLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgd2FscmN2X3Byb2MpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA1YWNjOGVlM2FjOC4uNDQ2 ZWFmZTY5NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0yNSwx NCArMjUsMTQgQEAKICAqIHRoZSB3YWxzZW5kZXIgd2lsbCBleGl0IHF1aWNrbHkgd2l0aG91 dCBzZW5kaW5nIGFueSBtb3JlIFhMT0cgcmVjb3Jkcy4KICAqCiAgKiBJZiB0aGUgc2VydmVy IGlzIHNodXQgZG93biwgY2hlY2twb2ludGVyIHNlbmRzIHVzCi0gKiBQUk9DU0lHX1dBTFNO RF9JTklUX1NUT1BQSU5HIGFmdGVyIGFsbCByZWd1bGFyIGJhY2tlbmRzIGhhdmUgZXhpdGVk LiAgSWYKKyAqIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBhZnRlciBhbGwgcmVn dWxhciBiYWNrZW5kcyBoYXZlIGV4aXRlZC4gIElmCiAgKiB0aGUgYmFja2VuZCBpcyBpZGxl IG9yIHJ1bnMgYW4gU1FMIHF1ZXJ5IHRoaXMgY2F1c2VzIHRoZSBiYWNrZW5kIHRvCiAgKiBz aHV0ZG93biwgaWYgbG9naWNhbCByZXBsaWNhdGlvbiBpcyBpbiBwcm9ncmVzcyBhbGwgZXhp c3RpbmcgV0FMIHJlY29yZHMKICAqIGFyZSBwcm9jZXNzZWQgZm9sbG93ZWQgYnkgYSBzaHV0 ZG93bi4gIE90aGVyd2lzZSB0aGlzIGNhdXNlcyB0aGUgd2Fsc2VuZGVyCiAgKiB0byBzd2l0 Y2ggdG8gdGhlICJzdG9wcGluZyIgc3RhdGUuIEluIHRoaXMgc3RhdGUsIHRoZSB3YWxzZW5k ZXIgd2lsbCByZWplY3QKICAqIGFueSBmdXJ0aGVyIHJlcGxpY2F0aW9uIGNvbW1hbmRzLiBU aGUgY2hlY2twb2ludGVyIGJlZ2lucyB0aGUgc2h1dGRvd24KICAqIGNoZWNrcG9pbnQgb25j ZSBhbGwgd2Fsc2VuZGVycyBhcmUgY29uZmlybWVkIGFzIHN0b3BwaW5nLiBXaGVuIHRoZSBz aHV0ZG93bgotICogY2hlY2twb2ludCBmaW5pc2hlcywgdGhlIHBvc3RtYXN0ZXIgc2VuZHMg dXMgU0lHVVNSMi4gVGhpcyBpbnN0cnVjdHMKKyAqIGNoZWNrcG9pbnQgZmluaXNoZXMsIHRo ZSBwb3N0bWFzdGVyIHNlbmRzIHVzIElOVEVSUlVQVF9XQUxTTkRfU1RPUC4gVGhpcyBpbnN0 cnVjdHMKICAqIHdhbHNlbmRlciB0byBzZW5kIGFueSBvdXRzdGFuZGluZyBXQUwsIGluY2x1 ZGluZyB0aGUgc2h1dGRvd24gY2hlY2twb2ludAogICogcmVjb3JkLCB3YWl0IGZvciBpdCB0 byBiZSByZXBsaWNhdGVkIHRvIHRoZSBzdGFuZGJ5LCBhbmQgdGhlbiBleGl0LgogICoKQEAg LTYzLDEzICs2MywxNCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgog I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIK ICNpbmNsdWRlICJsaWJwcS9wcm90b2NvbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgIm5vZGVzL3JlcGxub2Rlcy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v ZGVjb2RlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCkBAIC0yMDEsMTUgKzIwMiwxMiBAQCBzdGF0aWMg Ym9vbCBzdHJlYW1pbmdEb25lUmVjZWl2aW5nOwogLyogQXJlIHdlIHRoZXJlIHlldD8gKi8K IHN0YXRpYyBib29sIFdhbFNuZENhdWdodFVwID0gZmFsc2U7CiAKLS8qIEZsYWdzIHNldCBi eSBzaWduYWwgaGFuZGxlcnMgZm9yIGxhdGVyIHNlcnZpY2UgaW4gbWFpbiBsb29wICovCi1z dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdVU1IyID0gZmFsc2U7Ci1zdGF0 aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TVE9QUElORyA9IGZhbHNlOwotCiAvKgog ICogVGhpcyBpcyBzZXQgd2hpbGUgd2UgYXJlIHN0cmVhbWluZy4gV2hlbiBub3Qgc2V0Ci0g KiBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HIHNpZ25hbCB3aWxsIGJlIGhhbmRsZWQg bGlrZSBTSUdURVJNLiBXaGVuIHNldCwKLSAqIHRoZSBtYWluIGxvb3AgaXMgcmVzcG9uc2li bGUgZm9yIGNoZWNraW5nIGdvdF9TVE9QUElORyBhbmQgdGVybWluYXRpbmcgd2hlbgotICog aXQncyBzZXQgKGFmdGVyIHN0cmVhbWluZyBhbnkgcmVtYWluaW5nIFdBTCkuCisgKiBJTlRF UlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgaW50ZXJydXB0IHdpbGwgYmUgaGFuZGxlZCBs aWtlIFNJR1RFUk0uCisgKiBXaGVuIHNldCwgdGhlIG1haW4gbG9vcCBpcyByZXNwb25zaWJs ZSBmb3IgY2hlY2tpbmcKKyAqIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBhbmQg dGVybWluYXRpbmcgd2hlbiBpdCdzIHNldCAoYWZ0ZXIKKyAqIHN0cmVhbWluZyBhbnkgcmVt YWluaW5nIFdBTCkuCiAgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVwbGlj YXRpb25fYWN0aXZlID0gZmFsc2U7CiAKQEAgLTI4Miw3ICsyODAsNyBAQCBzdGF0aWMgdm9p ZCBXYWxTbmRLZWVwYWxpdmUoYm9vbCByZXF1ZXN0UmVwbHksIFhMb2dSZWNQdHIgd3JpdGVQ dHIpOwogc3RhdGljIHZvaWQgV2FsU25kS2VlcGFsaXZlSWZOZWNlc3Nhcnkodm9pZCk7CiBz dGF0aWMgdm9pZCBXYWxTbmRDaGVja1RpbWVPdXQodm9pZCk7CiBzdGF0aWMgbG9uZyBXYWxT bmRDb21wdXRlU2xlZXB0aW1lKFRpbWVzdGFtcFR6IG5vdyk7Ci1zdGF0aWMgdm9pZCBXYWxT bmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0 X2V2ZW50KTsKK3N0YXRpYyB2b2lkIFdhbFNuZFdhaXQodWludDMyIHNvY2tldF9ldmVudHMs IGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQsIHVpbnQzMiBpbnRlcnJ1cHRNYXNr KTsKIHN0YXRpYyB2b2lkIFdhbFNuZFByZXBhcmVXcml0ZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBsYXN0 X3dyaXRlKTsKIHN0YXRpYyB2b2lkIFdhbFNuZFdyaXRlRGF0YShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBs YXN0X3dyaXRlKTsKIHN0YXRpYyB2b2lkIFdhbFNuZFVwZGF0ZVByb2dyZXNzKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY1B0ciBsc24sIFRyYW5zYWN0aW9uSWQgeGlk LApAQCAtMzcwLDcgKzM2OCw4IEBAIFdhbFNuZEVycm9yQ2xlYW51cCh2b2lkKQogCWlmICgh SXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQogCQlSZWxlYXNlQXV4UHJvY2Vz c1Jlc291cmNlcyhmYWxzZSk7CiAKLQlpZiAoZ290X1NUT1BQSU5HIHx8IGdvdF9TSUdVU1Iy KQorCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElO RykgfHwKKwkJSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX1NUT1ApKQogCQlw cm9jX2V4aXQoMCk7CiAKIAkvKiBSZXZlcnQgYmFjayB0byBzdGFydHVwIHN0YXRlICovCkBA IC03MzgsOCArNzM3LDE2IEBAIEhhbmRsZVVwbG9hZE1hbmlmZXN0UGFja2V0KFN0cmluZ0lu Zm8gYnVmLCBvZmZfdCAqb2Zmc2V0LAogewogCWludAkJCW10eXBlOwogCWludAkJCW1heG1z Z2xlbjsKKwlib29sCQlzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkOwogCi0JSE9MRF9DQU5D RUxfSU5URVJSVVBUUygpOworCS8qCisJICogTGlrZSBpbiBTb2NrZXRCYWNrZW5kLCBkb24n dCBhbGxvdyBxdWVyeSBjYW5jZWwgaW50ZXJydXB0cyB3aGlsZQorCSAqIHJlYWRpbmcgaW5w dXQgZnJvbSB0aGUgY2xpZW50LCBiZWNhdXNlIHdlIG1pZ2h0IGxvc2Ugc3luYyBpbiB0aGUg RkUvQkUKKwkgKiBwcm90b2NvbC4KKwkgKi8KKwlzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVk ID0gKEVuYWJsZWRJbnRlcnJ1cHRzTWFzayAmIElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpICE9 IDA7CisJaWYgKHNhdmVfcXVlcnlfY2FuY2VsX2VuYWJsZWQpCisJCURpc2FibGVJbnRlcnJ1 cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAKIAlwcV9zdGFydG1zZ3JlYWQoKTsKIAlt dHlwZSA9IHBxX2dldGJ5dGUoKTsKQEAgLTc3Myw3ICs3ODAsOSBAQCBIYW5kbGVVcGxvYWRN YW5pZmVzdFBhY2tldChTdHJpbmdJbmZvIGJ1Ziwgb2ZmX3QgKm9mZnNldCwKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCiAJ CQkJIGVycm1zZygidW5leHBlY3RlZCBFT0Ygb24gY2xpZW50IGNvbm5lY3Rpb24gd2l0aCBh biBvcGVuIHRyYW5zYWN0aW9uIikpKTsKLQlSRVNVTUVfQ0FOQ0VMX0lOVEVSUlVQVFMoKTsK KworCWlmIChzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFibGVkKQorCQlFbmFibGVJbnRlcnJ1cHQo SU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAKIAkvKiBQcm9jZXNzIHRoZSBtZXNzYWdlICov CiAJc3dpdGNoIChtdHlwZSkKQEAgLTk3MiwxMiArOTgxLDE0IEBAIFN0YXJ0UmVwbGljYXRp b24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQogCQlTeW5jUmVwSW5pdENvbmZpZygpOwog CiAJCS8qIE1haW4gbG9vcCBvZiB3YWxzZW5kZXIgKi8KKwkJRGlzYWJsZUludGVycnVwdChJ TlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpOwogCQlyZXBsaWNhdGlvbl9hY3RpdmUg PSB0cnVlOwogCiAJCVdhbFNuZExvb3AoWExvZ1NlbmRQaHlzaWNhbCk7CiAKIAkJcmVwbGlj YXRpb25fYWN0aXZlID0gZmFsc2U7Ci0JCWlmIChnb3RfU1RPUFBJTkcpCisJCUVuYWJsZUlu dGVycnVwdChJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpOworCQlpZiAoSW50ZXJy dXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQogCQkJcHJvY19l eGl0KDApOwogCQlXYWxTbmRTZXRTdGF0ZShXQUxTTkRTVEFURV9TVEFSVFVQKTsKIApAQCAt MTAzNiw5ICsxMDQ3LDkgQEAgU3RhcnRSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21k ICpjbWQpCiAgKiBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIGZvciBs b2dpY2FsIGRlY29kaW5nIGNvbnRleHRzLCBhcyBhCiAgKiB3YWxzZW5kZXIgcHJvY2Vzcy4K ICAqCi0gKiBJbnNpZGUgdGhlIHdhbHNlbmRlciB3ZSBjYW4gZG8gYmV0dGVyIHRoYW4gcmVh ZF9sb2NhbF94bG9nX3BhZ2UsCi0gKiB3aGljaCBoYXMgdG8gZG8gYSBwbGFpbiBzbGVlcC9i dXN5IGxvb3AsIGJlY2F1c2UgdGhlIHdhbHNlbmRlcidzIGxhdGNoIGdldHMKLSAqIHNldCBl dmVyeSB0aW1lIFdBTCBpcyBmbHVzaGVkLgorICogSW5zaWRlIHRoZSB3YWxzZW5kZXIgd2Ug Y2FuIGRvIGJldHRlciB0aGFuIHJlYWRfbG9jYWxfeGxvZ19wYWdlLCB3aGljaCBoYXMKKyAq IHRvIGRvIGEgcGxhaW4gc2xlZXAvYnVzeSBsb29wLCBiZWNhdXNlIHRoZSB3YWxzZW5kZXIn cyBpbnRlcnJ1cHQgZ2V0cyBzZXQKKyAqIGV2ZXJ5IHRpbWUgV0FMIGlzIGZsdXNoZWQuCiAg Ki8KIHN0YXRpYyBpbnQKIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLApAQCAtMTQ3 NSw3ICsxNDg2LDcgQEAgU3RhcnRMb2dpY2FsUmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlv bkNtZCAqY21kKQogCXsKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1zZygidGVybWluYXRp bmcgd2Fsc2VuZGVyIHByb2Nlc3MgYWZ0ZXIgcHJvbW90aW9uIikpKTsKLQkJZ290X1NUT1BQ SU5HID0gdHJ1ZTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1dBTFNORF9JTklUX1NU T1BQSU5HKTsKIAl9CiAKIAkvKgpAQCAtMTUyOSw3ICsxNTQwLDcgQEAgU3RhcnRMb2dpY2Fs UmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQogCVJlcGxpY2F0aW9uU2xv dFJlbGVhc2UoKTsKIAogCXJlcGxpY2F0aW9uX2FjdGl2ZSA9IGZhbHNlOwotCWlmIChnb3Rf U1RPUFBJTkcpCisJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklU X1NUT1BQSU5HKSkKIAkJcHJvY19leGl0KDApOwogCVdhbFNuZFNldFN0YXRlKFdBTFNORFNU QVRFX1NUQVJUVVApOwogCkBAIC0xNjE5LDEyICsxNjMwLDggQEAgV2FsU25kV3JpdGVEYXRh KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY1B0ciBsc24sIFRyYW5zYWN0 aW9uSWQgeGlkLAogICogdG8gY2hhbmdlcyBpbiBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBy ZXF1aXJlbWVudHMuCiAgKi8KIHN0YXRpYyB2b2lkCi1XYWxTbmRIYW5kbGVDb25maWdSZWxv YWQodm9pZCkKK1Byb2Nlc3NXYWxTbmRDb25maWdSZWxvYWRJbnRlcnJ1cHQodm9pZCkKIHsK LQlpZiAoIUNvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXJldHVybjsKLQotCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKIAlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAlT eW5jUmVwSW5pdENvbmZpZygpOwogCkBAIC0xNjY0LDIzICsxNjcxLDI3IEBAIFByb2Nlc3NQ ZW5kaW5nV3JpdGVzKHZvaWQpCiAKIAkJLyogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBl bnMgb3Igd2UgdGltZSBvdXQgKi8KIAkJV2FsU25kV2FpdChXTF9TT0NLRVRfV1JJVEVBQkxF IHwgV0xfU09DS0VUX1JFQURBQkxFLCBzbGVlcHRpbWUsCi0JCQkJICAgV0FJVF9FVkVOVF9X QUxfU0VOREVSX1dSSVRFX0RBVEEpOworCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9X UklURV9EQVRBLAorCQkJCSAgIENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCSAgIElO VEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkgICBJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNl dExhdGNoKE15TGF0Y2gpOwotCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogUHJvY2VzcyBhbnkg cmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlXYWxTbmRIYW5k bGVDb25maWdSZWxvYWQoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYgKENv bnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQorCQkJUHJvY2Vzc1dh bFNuZENvbmZpZ1JlbG9hZEludGVycnVwdCgpOwogCiAJCS8qIFRyeSB0byBmbHVzaCBwZW5k aW5nIG91dHB1dCB0byB0aGUgY2xpZW50ICovCiAJCWlmIChwcV9mbHVzaF9pZl93cml0YWJs ZSgpICE9IDApCiAJCQlXYWxTbmRTaHV0ZG93bigpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUg bGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwotCVNldExhdGNoKE15 TGF0Y2gpOworCS8qIHJlYWN0aXZhdGUgaW50ZXJydXB0IHNvIFdhbFNuZExvb3Aga25vd3Mg dG8gY29udGludWUgKi8KKwkvKiBGSVhNRTogc3RpbGwgbmVlZGVkPyAqLworCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAKIC8qCkBAIC0xNzgzLDcgKzE3 OTQsNyBAQCBQaHlzaWNhbFdha2V1cExvZ2ljYWxXYWxTbmQodm9pZCkKIHN0YXRpYyBib29s CiBOZWVkVG9XYWl0Rm9yU3RhbmRieXMoWExvZ1JlY1B0ciBmbHVzaGVkX2xzbiwgdWludDMy ICp3YWl0X2V2ZW50KQogewotCWludAkJCWVsZXZlbCA9IGdvdF9TVE9QUElORyA/IEVSUk9S IDogV0FSTklORzsKKwlpbnQJCQllbGV2ZWwgPSBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9XQUxTTkRfSU5JVF9TVE9QUElORykgPyBFUlJPUiA6IFdBUk5JTkc7CiAJYm9vbAkJZmFp bG92ZXJfc2xvdDsKIAogCWZhaWxvdmVyX3Nsb3QgPSAocmVwbGljYXRpb25fYWN0aXZlICYm IE15UmVwbGljYXRpb25TbG90LT5kYXRhLmZhaWxvdmVyKTsKQEAgLTE4NzAsMTIgKzE4ODEs MTIgQEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJVGltZXN0YW1wVHog bm93OwogCiAJCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlS ZXNldExhdGNoKE15TGF0Y2gpOwotCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyogUHJvY2VzcyBh bnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlXYWxTbmRI YW5kbGVDb25maWdSZWxvYWQoKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJaWYg KENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQorCQkJUHJvY2Vz c1dhbFNuZENvbmZpZ1JlbG9hZEludGVycnVwdCgpOwogCiAJCS8qIENoZWNrIGZvciBpbnB1 dCBmcm9tIHRoZSBjbGllbnQgKi8KIAkJUHJvY2Vzc1JlcGxpZXNJZkFueSgpOwpAQCAtMTg4 NSw3ICsxODk2LDcgQEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJICog b3RoZXJ3aXNlIHdlJ2QgcG9zc2libHkgZW5kIHVwIHdhaXRpbmcgZm9yIFdBTCB0aGF0IG5l dmVyIGdldHMKIAkJICogd3JpdHRlbiwgYmVjYXVzZSB3YWx3cml0ZXIgaGFzIHNodXQgZG93 biBhbHJlYWR5LgogCQkgKi8KLQkJaWYgKGdvdF9TVE9QUElORykKKwkJaWYgKEludGVycnVw dFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKSkKIAkJCVhMb2dCYWNr Z3JvdW5kRmx1c2goKTsKIAogCQkvKgpAQCAtMTkxMCw3ICsxOTIxLDcgQEAgV2FsU25kV2Fp dEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJICogUmVjZW50Rmx1c2hQdHIsIHNvIHdlIGNh biBzZW5kIGFsbCByZW1haW5pbmcgZGF0YSBiZWZvcmUgc2h1dHRpbmcKIAkJICogZG93bi4K IAkJICovCi0JCWlmIChnb3RfU1RPUFBJTkcpCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKElO VEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORykpCiAJCXsKIAkJCWlmIChOZWVkVG9XYWl0 Rm9yU3RhbmRieXMoUmVjZW50Rmx1c2hQdHIsICZ3YWl0X2V2ZW50KSkKIAkJCQl3YWl0X2Zv cl9zdGFuZGJ5X2F0X3N0b3AgPSB0cnVlOwpAQCAtMTk5MiwxMSArMjAwMywxNSBAQCBXYWxT bmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQkJbGFzdF9mbHVzaCA9IG5vdzsKIAkJ fQogCi0JCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCB3YWl0X2V2ZW50KTsK KwkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIHdhaXRfZXZlbnQsCisJCQkJ ICAgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8CisJCQkJICAgKHdhaXRfZm9yX3N0YW5kYnlf YXRfc3RvcCA/IDAgOiBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpIHwKKwkJCQkg ICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJICAgSU5URVJSVVBUX1dBSVRfV0FL RVVQKTsKIAl9CiAKLQkvKiByZWFjdGl2YXRlIGxhdGNoIHNvIFdhbFNuZExvb3Aga25vd3Mg dG8gY29udGludWUgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiByZWFjdGl2YXRlIGlu dGVycnVwdCBmbGFnIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KKwlSYWlz ZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCXJldHVybiBSZWNlbnRGbHVz aFB0cjsKIH0KIApAQCAtMjAyMiw3ICsyMDM3LDcgQEAgZXhlY19yZXBsaWNhdGlvbl9jb21t YW5kKGNvbnN0IGNoYXIgKmNtZF9zdHJpbmcpCiAJICogSWYgV0FMIHNlbmRlciBoYXMgYmVl biB0b2xkIHRoYXQgc2h1dGRvd24gaXMgZ2V0dGluZyBjbG9zZSwgc3dpdGNoIGl0cwogCSAq IHN0YXR1cyBhY2NvcmRpbmdseSB0byBoYW5kbGUgdGhlIG5leHQgcmVwbGljYXRpb24gY29t bWFuZHMgY29ycmVjdGx5LgogCSAqLwotCWlmIChnb3RfU1RPUFBJTkcpCisJaWYgKEludGVy cnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HKSkKIAkJV2FsU25k U2V0U3RhdGUoV0FMU05EU1RBVEVfU1RPUFBJTkcpOwogCiAJLyoKQEAgLTI4OTUsNiArMjkx MCw3IEBAIHN0YXRpYyB2b2lkCiBXYWxTbmRMb29wKFdhbFNuZFNlbmREYXRhQ2FsbGJhY2sg c2VuZF9kYXRhKQogewogCVRpbWVzdGFtcFR6IGxhc3RfZmx1c2ggPSAwOworCWJvb2wJCXN0 b3BwaW5nID0gZmFsc2U7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgdGhlIGxhc3QgcmVwbHkg dGltZXN0YW1wLiBUaGF0IGVuYWJsZXMgdGltZW91dCBwcm9jZXNzaW5nCkBAIC0yOTA5LDEz ICsyOTI1LDIwIEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2Rh dGEpCiAJICovCiAJZm9yICg7OykKIAl7Ci0JCS8qIENsZWFyIGFueSBhbHJlYWR5LXBlbmRp bmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkvKgorCQkgKiBSZW1l bWJlciBpZiB3ZSByZWNlaXZlZCBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgYmVm b3JlIHRoZQorCQkgKiBwcm9jZXNzaW5nIGJlbG93IGFscmVhZHkuCisJCSAqLworCQlpZiAo SW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQorCQkJ c3RvcHBpbmcgPSB0cnVlOwogCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCS8qIENs ZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLworCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJCS8qIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9y IHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KLQkJV2FsU25kSGFuZGxlQ29uZmlnUmVs b2FkKCk7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCWlmIChDb25zdW1lSW50ZXJy dXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKKwkJCVByb2Nlc3NXYWxTbmRDb25maWdS ZWxvYWRJbnRlcnJ1cHQoKTsKIAogCQkvKiBDaGVjayBmb3IgaW5wdXQgZnJvbSB0aGUgY2xp ZW50ICovCiAJCVByb2Nlc3NSZXBsaWVzSWZBbnkoKTsKQEAgLTI5NjQsMTMgKzI5ODcsMTMg QEAgV2FsU25kTG9vcChXYWxTbmRTZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0YSkKIAkJCX0K IAogCQkJLyoKLQkJCSAqIFdoZW4gU0lHVVNSMiBhcnJpdmVzLCB3ZSBzZW5kIGFueSBvdXRz dGFuZGluZyBsb2dzIHVwIHRvIHRoZQotCQkJICogc2h1dGRvd24gY2hlY2twb2ludCByZWNv cmQgKGkuZS4sIHRoZSBsYXRlc3QgcmVjb3JkKSwgd2FpdCBmb3IKLQkJCSAqIHRoZW0gdG8g YmUgcmVwbGljYXRlZCB0byB0aGUgc3RhbmRieSwgYW5kIGV4aXQuIFRoaXMgbWF5IGJlIGEK LQkJCSAqIG5vcm1hbCB0ZXJtaW5hdGlvbiBhdCBzaHV0ZG93biwgb3IgYSBwcm9tb3Rpb24s IHRoZSB3YWxzZW5kZXIKLQkJCSAqIGlzIG5vdCBzdXJlIHdoaWNoLgorCQkJICogV2hlbiBJ TlRFUlJVUFRfV0FMU05EX1NUT1AgYXJyaXZlcywgd2Ugc2VuZCBhbnkgb3V0c3RhbmRpbmcK KwkJCSAqIGxvZ3MgdXAgdG8gdGhlIHNodXRkb3duIGNoZWNrcG9pbnQgcmVjb3JkIChpLmUu LCB0aGUgbGF0ZXN0CisJCQkgKiByZWNvcmQpLCB3YWl0IGZvciB0aGVtIHRvIGJlIHJlcGxp Y2F0ZWQgdG8gdGhlIHN0YW5kYnksIGFuZAorCQkJICogZXhpdC4gVGhpcyBtYXkgYmUgYSBu b3JtYWwgdGVybWluYXRpb24gYXQgc2h1dGRvd24sIG9yIGEKKwkJCSAqIHByb21vdGlvbiwg dGhlIHdhbHNlbmRlciBpcyBub3Qgc3VyZSB3aGljaC4KIAkJCSAqLwotCQkJaWYgKGdvdF9T SUdVU1IyKQorCQkJaWYgKEludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1dBTFNORF9TVE9Q KSkKIAkJCQlXYWxTbmREb25lKHNlbmRfZGF0YSk7CiAJCX0KIApAQCAtMzAyMiw3ICszMDQ1 LDEyIEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFjayBzZW5kX2RhdGEpCiAJ CQl9CiAKIAkJCS8qIFNsZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUg b3V0ICovCi0JCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9FVkVO VF9XQUxfU0VOREVSX01BSU4pOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRp bWUsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9NQUlOLAorCQkJCQkgICBDaGVja0ZvckludGVy cnVwdHNNYXNrIHwKKwkJCQkJICAgKHN0b3BwaW5nID8gMCA6IElOVEVSUlVQVF9XQUxTTkRf SU5JVF9TVE9QUElORykgfAorCQkJCQkgICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCB8CisJ CQkJCSAgIElOVEVSUlVQVF9XQUlUX1dBS0VVUAorCQkJCSk7CiAJCX0KIAl9CiB9CkBAIC0z MDYwLDYgKzMwODgsNyBAQCBJbml0V2FsU2VuZGVyU2xvdCh2b2lkKQogCQkJLyoKIAkJCSAq IEZvdW5kIGEgZnJlZSBzbG90LiBSZXNlcnZlIGl0IGZvciB1cy4KIAkJCSAqLworCQkJd2Fs c25kLT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIAkJCXdhbHNuZC0+cGlkID0gTXlQcm9j UGlkOwogCQkJd2Fsc25kLT5zdGF0ZSA9IFdBTFNORFNUQVRFX1NUQVJUVVA7CiAJCQl3YWxz bmQtPnNlbnRQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTMxMTYsNiArMzE0NSw3IEBA IFdhbFNuZEtpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlTcGluTG9ja0FjcXVpcmUoJndh bHNuZC0+bXV0ZXgpOwogCS8qIE1hcmsgV2FsU25kIHN0cnVjdCBhcyBubyBsb25nZXIgYmVp bmcgaW4gdXNlLiAqLwogCXdhbHNuZC0+cGlkID0gMDsKKwl3YWxzbmQtPnBncHJvY25vID0g MDsKIAlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwogfQogCkBAIC0zMjEwLDcg KzMyNDAsNyBAQCBYTG9nU2VuZFBoeXNpY2FsKHZvaWQpCiAJU2l6ZQkJcmJ5dGVzOwogCiAJ LyogSWYgcmVxdWVzdGVkIHN3aXRjaCB0aGUgV0FMIHNlbmRlciB0byB0aGUgc3RvcHBpbmcg c3RhdGUuICovCi0JaWYgKGdvdF9TVE9QUElORykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQogCQlXYWxTbmRTZXRTdGF0ZShXQUxT TkRTVEFURV9TVE9QUElORyk7CiAKIAlpZiAoc3RyZWFtaW5nRG9uZVNlbmRpbmcpCkBAIC0z NTc5LDggKzM2MDksOCBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiB0ZXJtaW5hdGUg dGhlIGNvbm5lY3Rpb24gaW4gYW4gb3JkZXJseSBtYW5uZXIsIGFmdGVyIHdyaXRpbmcgb3V0 IGFsbAogCSAqIHRoZSBwZW5kaW5nIGRhdGEuCiAJICovCi0JaWYgKFdhbFNuZENhdWdodFVw ICYmIGdvdF9TVE9QUElORykKLQkJZ290X1NJR1VTUjIgPSB0cnVlOworCWlmIChXYWxTbmRD YXVnaHRVcCAmJiBJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9Q UElORykpCisJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUxTTkRfU1RPUCk7CiAKIAkv KiBVcGRhdGUgc2hhcmVkIG1lbW9yeSBzdGF0dXMgKi8KIAl7CkBAIC0zNjk3LDUyICszNzI3 LDQzIEBAIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQpCiAJfQogfQogCi0vKgotICogSGFu ZGxlIFBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcgc2lnbmFsLgotICovCi12b2lkCi1I YW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCkKLXsKLQlBc3NlcnQoYW1fd2Fsc2VuZGVy KTsKLQotCS8qCi0JICogSWYgcmVwbGljYXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZCwgZGll IGxpa2Ugd2l0aCBTSUdURVJNLiBJZgotCSAqIHJlcGxpY2F0aW9uIGlzIGFjdGl2ZSwgb25s eSBzZXQgYSBmbGFnIGFuZCB3YWtlIHVwIHRoZSBtYWluIGxvb3AuIEl0Ci0JICogd2lsbCBz ZW5kIGFueSBvdXRzdGFuZGluZyBXQUwsIHdhaXQgZm9yIGl0IHRvIGJlIHJlcGxpY2F0ZWQg dG8gdGhlCi0JICogc3RhbmRieSwgYW5kIHRoZW4gZXhpdCBncmFjZWZ1bGx5LgotCSAqLwot CWlmICghcmVwbGljYXRpb25fYWN0aXZlKQotCQlraWxsKE15UHJvY1BpZCwgU0lHVEVSTSk7 Ci0JZWxzZQotCQlnb3RfU1RPUFBJTkcgPSB0cnVlOwotfQotCiAvKgogICogU0lHVVNSMjog c2V0IGZsYWcgdG8gZG8gYSBsYXN0IGN5Y2xlIGFuZCBzaHV0IGRvd24gYWZ0ZXJ3YXJkcy4g VGhlIFdBTAogICogc2VuZGVyIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzd2l0Y2hlZCB0 byBXQUxTTkRTVEFURV9TVE9QUElORyBhdAogICogdGhpcyBwb2ludC4KKyAqCisgKiBYWFg6 IFRoaXMgaXMgc3RpbGwgbmVlZGVkIGJlY2F1c2UgdGhlIHBvc3RtYXN0ZXIgY2Fubm90IHNl bmQKKyAqIElOVEVSUlVQVF9XQUxTTkRfU1RPUCBkaXJlY3RseS4KICAqLwogc3RhdGljIHZv aWQKIFdhbFNuZExhc3RDeWNsZUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7Ci0JZ290X1NJR1VT UjIgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9XQUxTTkRfU1RPUCk7CiB9CiAKIC8qIFNldCB1cCBzaWduYWwgaGFuZGxlcnMgKi8K IHZvaWQKIFdhbFNuZFNpZ25hbHModm9pZCkKIHsKLQkvKiBTZXQgdXAgc2lnbmFsIGhhbmRs ZXJzICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKLQlwcXNpZ25hbChTSUdJTlQsIFN0YXRlbWVudENhbmNlbEhhbmRsZXIpOwkvKiBxdWVy eSBjYW5jZWwgKi8KLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwkJLyogcmVxdWVzdCBzaHV0 ZG93biAqLwotCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5p dFBvc3RtYXN0ZXJDaGlsZCAqLworCS8qIFNldCB1cCBpbnRlcnJ1cHQgaGFuZGxlcnMgKi8K IAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxl ciAqLwotCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEs IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQlwcXNpZ25hbChTSUdVU1IyLCBXYWxT bmRMYXN0Q3ljbGVIYW5kbGVyKTsJLyogcmVxdWVzdCBhIGxhc3QgY3ljbGUgYW5kCi0JCQkJ CQkJCQkJCQkgKiBzaHV0ZG93biAqLworCisJLyoKKwkgKiBJZiByZXBsaWNhdGlvbiBoYXMg bm90IHlldCBzdGFydGVkLCBkaWUgbGlrZSB3aXRoIFNJR1RFUk0uIFdoZW4KKwkgKiByZXBs aWNhdGlvbiBzdGFydHMsIHdlIGRpc2FibGUgdGhpcyBoYW5kbGVyIGFuZCBjaGVjayB0aGUg ZmxhZworCSAqIGV4cGxpY2l0bHkuIFRoZSBtYWluIGxvb3Agd2lsbCBzZW5kIGFueSBvdXRz dGFuZGluZyBXQUwsIHdhaXQgZm9yIGl0IHRvCisJICogYmUgcmVwbGljYXRlZCB0byB0aGUg c3RhbmRieSwgYW5kIHRoZW4gZXhpdCBncmFjZWZ1bGx5LgorCSAqLworCVNldEludGVycnVw dEhhbmRsZXIoSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HLCBQcm9jZXNzVGVybWlu YXRlSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1dBTFNORF9JTklU X1NUT1BQSU5HKTsKKworCS8qCisJICogT24gSU5URVJSVVBUX1dBTFNORF9TVE9QIGlzIHVz ZWQgdG8gZmx1c2ggcmVtYWluaW5nIFdBTCAodGhlIHNodXRkb3duCisJICogY2hlY2twb2lu dCByZWNvcmQpIGFuZCBleGl0LiBXZSBjaGVjayBmb3IgdGhhdCBleHBsaWNpdGx5LCBzbyBu bworCSAqIGhhbmRsZXIgZnVuY3Rpb24uIFBvc3RtYXN0ZXIgY2Fubm90IHNlbmQgdGhlIGlu dGVycnVwdCBkaXJlY3RseSwgc28gd2UKKwkgKiBzZXQgdXAgYSBVbml4IHNpZ25hbCBoYW5k bGVyIHRvIHJhaXNlIGl0LgorCSAqLworCXBxc2lnbmFsKFNJR1VTUjIsIFdhbFNuZExhc3RD eWNsZUhhbmRsZXIpOwogfQogCiAvKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVk ZWQgYnkgV2FsU25kU2htZW1Jbml0ICovCkBAIC0zODI1LDI0ICszODQ2LDI4IEBAIFdhbFNu ZFdha2V1cChib29sIHBoeXNpY2FsLCBib29sIGxvZ2ljYWwpCiAgKiBvbiBwb3N0bWFzdGVy IGRlYXRoLgogICovCiBzdGF0aWMgdm9pZAotV2FsU25kV2FpdCh1aW50MzIgc29ja2V0X2V2 ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVudCkKK1dhbFNuZFdhaXQodWlu dDMyIHNvY2tldF9ldmVudHMsIGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnQsIHVp bnQzMiBpbnRlcnJ1cHRNYXNrKQogewogCVdhaXRFdmVudAlldmVudDsKIAotCU1vZGlmeVdh aXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVu dHMsIE5VTEwpOworCS8qIGZvciBjb25kaXRpb24gdmFyaWFibGVzICovCisJaW50ZXJydXB0 TWFzayB8PSBJTlRFUlJVUFRfV0FJVF9XQUtFVVA7CisKKwlNb2RpZnlXYWl0RXZlbnQoRmVC ZVdhaXRTZXQsIEZlQmVXYWl0U2V0U29ja2V0UG9zLCBzb2NrZXRfZXZlbnRzLCAwKTsKKwlN b2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zLCBX TF9JTlRFUlJVUFQsIGludGVycnVwdE1hc2spOwogCiAJLyoKIAkgKiBXZSB1c2UgYSBjb25k aXRpb24gdmFyaWFibGUgdG8gZWZmaWNpZW50bHkgd2FrZSB1cCB3YWxzZW5kZXJzIGluCiAJ ICogV2FsU25kV2FrZXVwKCkuCiAJICoKIAkgKiBFdmVyeSB3YWxzZW5kZXIgcHJlcGFyZXMg dG8gc2xlZXAgb24gYSBzaGFyZWQgbWVtb3J5IENWLiBOb3RlIHRoYXQgaXQKLQkgKiBqdXN0 IHByZXBhcmVzIHRvIHNsZWVwIG9uIHRoZSBDViAoaS5lLiwgYWRkcyBpdHNlbGYgdG8gdGhl IENWJ3MKLQkgKiB3YWl0bGlzdCksIGJ1dCBkb2VzIG5vdCBhY3R1YWxseSB3YWl0IG9uIHRo ZSBDViAoSU9XLCBpdCBuZXZlciBjYWxscwotCSAqIENvbmRpdGlvblZhcmlhYmxlU2xlZXAo KSkuIEl0IHN0aWxsIHVzZXMgV2FpdEV2ZW50U2V0V2FpdCgpIGZvcgotCSAqIHdhaXRpbmcs IGJlY2F1c2Ugd2UgYWxzbyBuZWVkIHRvIHdhaXQgZm9yIHNvY2tldCBldmVudHMuIFRoZSBw cm9jZXNzZXMKLQkgKiAoc3RhcnR1cCBwcm9jZXNzLCB3YWxyZWNlaXZlciBldGMuKSB3YW50 aW5nIHRvIHdha2UgdXAgd2Fsc2VuZGVycyB1c2UKLQkgKiBDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdCgpLCB3aGljaCBpbiB0dXJuIGNhbGxzIFNldExhdGNoKCksIGhlbHBpbmcKLQkg KiB3YWxzZW5kZXJzIGNvbWUgb3V0IG9mIFdhaXRFdmVudFNldFdhaXQoKS4KKwkgKiBqdXN0 IHByZXBhcmVzIHRvIHNsZWVwIG9uIHRoZSBDViB3YWl0bGlzdCksIGJ1dCBkb2VzIG5vdCBh Y3R1YWxseSB3YWl0CisJICogb24gdGhlIENWIChJT1csIGl0IG5ldmVyIGNhbGxzIENvbmRp dGlvblZhcmlhYmxlU2xlZXAoKSkuIEl0IHN0aWxsIHVzZXMKKwkgKiBXYWl0RXZlbnRTZXRX YWl0KCkgZm9yIHdhaXRpbmcsIGJlY2F1c2Ugd2UgYWxzbyBuZWVkIHRvIHdhaXQgZm9yIHNv Y2tldAorCSAqIGV2ZW50cy4gVGhlIHByb2Nlc3NlcyAoc3RhcnR1cCBwcm9jZXNzLCB3YWxy ZWNlaXZlciBldGMuKSB3YW50aW5nIHRvCisJICogd2FrZSB1cCB3YWxzZW5kZXJzIHVzZSBD b25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgpLCB3aGljaCBpbiB0dXJuCisJICogY2FsbHMg U2VuZEludGVycnVwdCgpLCBoZWxwaW5nIHdhbHNlbmRlcnMgY29tZSBvdXQgb2YKKwkgKiBX YWl0RXZlbnRTZXRXYWl0KCkuCiAJICoKIAkgKiBUaGlzIGFwcHJvYWNoIGlzIHNpbXBsZSBh bmQgZWZmaWNpZW50IGJlY2F1c2UsIG9uZSBkb2Vzbid0IGhhdmUgdG8gbG9vcAogCSAqIHRo cm91Z2ggYWxsIHRoZSB3YWxzZW5kZXJzIHNsb3RzLCB3aXRoIGEgc3BpbmxvY2sgYWNxdWlz aXRpb24gYW5kCkBAIC0zODkwLDE2ICszOTE1LDE2IEBAIFdhbFNuZEluaXRTdG9wcGluZyh2 b2lkKQogCWZvciAoaSA9IDA7IGkgPCBtYXhfd2FsX3NlbmRlcnM7IGkrKykKIAl7CiAJCVdh bFNuZAkgICAqd2Fsc25kID0gJldhbFNuZEN0bC0+d2Fsc25kc1tpXTsKLQkJcGlkX3QJCXBp ZDsKKwkJUHJvY051bWJlcglwcm9jbm87CiAKIAkJU3BpbkxvY2tBY3F1aXJlKCZ3YWxzbmQt Pm11dGV4KTsKLQkJcGlkID0gd2Fsc25kLT5waWQ7CisJCXByb2NubyA9IHdhbHNuZC0+cGdw cm9jbm87CiAJCVNwaW5Mb2NrUmVsZWFzZSgmd2Fsc25kLT5tdXRleCk7CiAKLQkJaWYgKHBp ZCA9PSAwKQorCQlpZiAocHJvY25vID09IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCQljb250 aW51ZTsKIAotCQlTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfV0FMU05EX0lOSVRfU1RP UFBJTkcsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9XQUxTTkRfSU5JVF9TVE9QUElORywgcHJvY25vKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpby5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9h aW8vYWlvLmMKaW5kZXggZTRhZTMwMzFmZWYuLmRhMjYwMWU4YjkyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW8uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2Fpby9haW8uYwpAQCAtMzkwLDcgKzM5MCw3IEBAIHBnYWlvX2lvX3VwZGF0ZV9zdGF0ZShQ Z0Fpb0hhbmRsZSAqaW9oLCBQZ0Fpb0hhbmRsZVN0YXRlIG5ld19zdGF0ZSkKIAkgKiBpbnRl cnJ1cHQgcHJvY2Vzc2luZyBjb3VsZCB3YWl0IGZvciB0aGUgSU8gdG8gY29tcGxldGUsIHdo aWxlIGluIGFuCiAJICogaW50ZXJtZWRpYXJ5IHN0YXRlLgogCSAqLwotCUFzc2VydCghSU5U RVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpOworCUFzc2VydChDaGVja0ZvckludGVycnVw dHNNYXNrID09IDApOwogCiAJcGdhaW9fZGVidWdfaW8oREVCVUc1LCBpb2gsCiAJCQkJICAg InVwZGF0aW5nIHN0YXRlIHRvICVzIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYWlvL2Fpb19pby5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vYWlvX2lvLmMKaW5k ZXggNzJiNGM5ZmViM2EuLjc4Nzg5YjNmOGYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2Fpby9haW9faW8uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9f aW8uYwpAQCAtMTY0LDcgKzE2NCw3IEBAIHBnYWlvX2lvX2JlZm9yZV9zdGFydChQZ0Fpb0hh bmRsZSAqaW9oKQogCSAqIE90aGVyd2lzZSB0aGUgRkRzIHJlZmVyZW5jZWQgYnkgdGhlIElP IGNvdWxkIGJlIGNsb3NlZCBkdWUgdG8gaW50ZXJydXB0CiAJICogcHJvY2Vzc2luZy4KIAkg Ki8KLQlBc3NlcnQoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpKTsKKwlBc3NlcnQo Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9PSAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYwppbmRleCBkOTYxN2MyMGU3Ni4uNGMyMWIwZjQ4 YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKQEAgLTEz LDcgKzEzLDcgQEAKICAqCiAgKiBTbyB0aGF0IHRoZSBzdWJtaXR0ZXIgY2FuIG1ha2UganVz dCBvbmUgc3lzdGVtIGNhbGwgd2hlbiBzdWJtaXR0aW5nIGEgYmF0Y2gKICAqIG9mIElPcywg d2FrZXVwcyAiZmFuIG91dCI7IGVhY2ggd29rZW4gSU8gd29ya2VyIGNhbiB3YWtlIHR3byBt b3JlLiBYWFggVGhpcwotICogY291bGQgYmUgaW1wcm92ZWQgYnkgdXNpbmcgZnV0ZXhlcyBp bnN0ZWFkIG9mIGxhdGNoZXMgdG8gd2FrZSBOIHdhaXRlcnMuCisgKiBjb3VsZCBiZSBpbXBy b3ZlZCBieSB1c2luZyBmdXRleGVzIGluc3RlYWQgb2YgaW50ZXJydXB0cyB0byB3YWtlIE4g d2FpdGVycy4KICAqCiAgKiBUaGlzIG1ldGhvZCBvZiBBSU8gaXMgYXZhaWxhYmxlIGluIGFs bCBidWlsZHMgb24gYWxsIG9wZXJhdGluZyBzeXN0ZW1zLCBhbmQKICAqIGlzIHRoZSBkZWZh dWx0LgpAQCAtMjksMTcgKzI5LDE2IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisj aW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2ln bmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5oIgotI2luY2x1ZGUg InBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9haW8uaCIKICNp bmNsdWRlICJzdG9yYWdlL2Fpb19pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlv X3N1YnN5cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaW9fd29ya2VyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2luamVjdGlvbl9wb2ludC5oIgpAQCAtNjIsNyArNjEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQZ0Fpb1dvcmtlclN1Ym1pc3Npb25RdWV1ZQogCiB0eXBlZGVmIHN0cnVjdCBQZ0Fp b1dvcmtlclNsb3QKIHsKLQlMYXRjaAkgICAqbGF0Y2g7CisJUHJvY051bWJlcglwcm9jbm87 CiAJYm9vbAkJaW5fdXNlOwogfSBQZ0Fpb1dvcmtlclNsb3Q7CiAKQEAgLTE1NCw3ICsxNTMs NyBAQCBwZ2Fpb193b3JrZXJfc2htZW1faW5pdChib29sIGZpcnN0X3RpbWUpCiAJCWlvX3dv cmtlcl9jb250cm9sLT5pZGxlX3dvcmtlcl9tYXNrID0gMDsKIAkJZm9yIChpbnQgaSA9IDA7 IGkgPCBNQVhfSU9fV09SS0VSUzsgKytpKQogCQl7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+ d29ya2Vyc1tpXS5sYXRjaCA9IE5VTEw7CisJCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vy c1tpXS5wcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJaW9fd29ya2VyX2NvbnRy b2wtPndvcmtlcnNbaV0uaW5fdXNlID0gZmFsc2U7CiAJCX0KIAl9CkBAIC0yNDQsNyArMjQz LDcgQEAgcGdhaW9fd29ya2VyX3N1Ym1pdF9pbnRlcm5hbChpbnQgbnVtX3N0YWdlZF9pb3Ms IFBnQWlvSGFuZGxlICoqc3RhZ2VkX2lvcykKIHsKIAlQZ0Fpb0hhbmRsZSAqc3luY2hyb25v dXNfaW9zW1BHQUlPX1NVQk1JVF9CQVRDSF9TSVpFXTsKIAlpbnQJCQluc3luYyA9IDA7Ci0J TGF0Y2gJICAgKndha2V1cCA9IE5VTEw7CisJUHJvY051bWJlcgl3YWtldXAgPSBJTlZBTElE X1BST0NfTlVNQkVSOwogCWludAkJCXdvcmtlcjsKIAogCUFzc2VydChudW1fc3RhZ2VkX2lv cyA8PSBQR0FJT19TVUJNSVRfQkFUQ0hfU0laRSk7CkBAIC0yNjMsMTIgKzI2MiwxMiBAQCBw Z2Fpb193b3JrZXJfc3VibWl0X2ludGVybmFsKGludCBudW1fc3RhZ2VkX2lvcywgUGdBaW9I YW5kbGUgKipzdGFnZWRfaW9zKQogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAod2FrZXVw ID09IE5VTEwpCisJCWlmICh3YWtldXAgPT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJewog CQkJLyogQ2hvb3NlIGFuIGlkbGUgd29ya2VyIHRvIHdha2UgdXAgaWYgd2UgaGF2ZW4ndCBh bHJlYWR5LiAqLwogCQkJd29ya2VyID0gcGdhaW9fd29ya2VyX2Nob29zZV9pZGxlKCk7CiAJ CQlpZiAod29ya2VyID49IDApCi0JCQkJd2FrZXVwID0gaW9fd29ya2VyX2NvbnRyb2wtPndv cmtlcnNbd29ya2VyXS5sYXRjaDsKKwkJCQl3YWtldXAgPSBpb193b3JrZXJfY29udHJvbC0+ d29ya2Vyc1t3b3JrZXJdLnByb2NubzsKIAogCQkJcGdhaW9fZGVidWdfaW8oREVCVUc0LCBz dGFnZWRfaW9zW2ldLAogCQkJCQkJICAgImNob29zaW5nIHdvcmtlciAlZCIsCkBAIC0yNzcs OCArMjc2LDEwIEBAIHBnYWlvX3dvcmtlcl9zdWJtaXRfaW50ZXJuYWwoaW50IG51bV9zdGFn ZWRfaW9zLCBQZ0Fpb0hhbmRsZSAqKnN0YWdlZF9pb3MpCiAJfQogCUxXTG9ja1JlbGVhc2Uo QWlvV29ya2VyU3VibWlzc2lvblF1ZXVlTG9jayk7CiAKLQlpZiAod2FrZXVwKQotCQlTZXRM YXRjaCh3YWtldXApOworCWlmICh3YWtldXAgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwl7 CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCB3YWtldXApOworCX0K IAogCS8qIFJ1biB3aGF0ZXZlciBpcyBsZWZ0IHN5bmNocm9ub3VzbHkuICovCiAJaWYgKG5z eW5jID4gMCkKQEAgLTMxNCwxMSArMzE1LDExIEBAIHBnYWlvX3dvcmtlcl9kaWUoaW50IGNv ZGUsIERhdHVtIGFyZykKIHsKIAlMV0xvY2tBY3F1aXJlKEFpb1dvcmtlclN1Ym1pc3Npb25R dWV1ZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJQXNzZXJ0KGlvX3dvcmtlcl9jb250cm9sLT53 b3JrZXJzW015SW9Xb3JrZXJJZF0uaW5fdXNlKTsKLQlBc3NlcnQoaW9fd29ya2VyX2NvbnRy b2wtPndvcmtlcnNbTXlJb1dvcmtlcklkXS5sYXRjaCA9PSBNeUxhdGNoKTsKKwlBc3NlcnQo aW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbTXlJb1dvcmtlcklkXS5wcm9jbm8gPT0gTXlQ cm9jTnVtYmVyKTsKIAogCWlvX3dvcmtlcl9jb250cm9sLT5pZGxlX3dvcmtlcl9tYXNrICY9 IH4oVUlOVDY0X0MoMSkgPDwgTXlJb1dvcmtlcklkKTsKIAlpb193b3JrZXJfY29udHJvbC0+ d29ya2Vyc1tNeUlvV29ya2VySWRdLmluX3VzZSA9IGZhbHNlOwotCWlvX3dvcmtlcl9jb250 cm9sLT53b3JrZXJzW015SW9Xb3JrZXJJZF0ubGF0Y2ggPSBOVUxMOworCWlvX3dvcmtlcl9j b250cm9sLT53b3JrZXJzW015SW9Xb3JrZXJJZF0ucHJvY25vID0gSU5WQUxJRF9QUk9DX05V TUJFUjsKIAlMV0xvY2tSZWxlYXNlKEFpb1dvcmtlclN1Ym1pc3Npb25RdWV1ZUxvY2spOwog fQogCkBAIC0zNDEsMjAgKzM0MiwyMCBAQCBwZ2Fpb193b3JrZXJfcmVnaXN0ZXIodm9pZCkK IAl7CiAJCWlmICghaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbaV0uaW5fdXNlKQogCQl7 Ci0JCQlBc3NlcnQoaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbaV0ubGF0Y2ggPT0gTlVM TCk7CisJCQlBc3NlcnQoaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbaV0ucHJvY25vID09 IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCQkJaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNb aV0uaW5fdXNlID0gdHJ1ZTsKIAkJCU15SW9Xb3JrZXJJZCA9IGk7CiAJCQlicmVhazsKIAkJ fQogCQllbHNlCi0JCQlBc3NlcnQoaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbaV0ubGF0 Y2ggIT0gTlVMTCk7CisJCQlBc3NlcnQoaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbaV0u cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCX0KIAogCWlmIChNeUlvV29ya2Vy SWQgPT0gLTEpCiAJCWVsb2coRVJST1IsICJjb3VsZG4ndCBmaW5kIGEgZnJlZSB3b3JrZXIg c2xvdCIpOwogCiAJaW9fd29ya2VyX2NvbnRyb2wtPmlkbGVfd29ya2VyX21hc2sgfD0gKFVJ TlQ2NF9DKDEpIDw8IE15SW9Xb3JrZXJJZCk7Ci0JaW9fd29ya2VyX2NvbnRyb2wtPndvcmtl cnNbTXlJb1dvcmtlcklkXS5sYXRjaCA9IE15TGF0Y2g7CisJaW9fd29ya2VyX2NvbnRyb2wt PndvcmtlcnNbTXlJb1dvcmtlcklkXS5wcm9jbm8gPSBNeVByb2NOdW1iZXI7CiAJTFdMb2Nr UmVsZWFzZShBaW9Xb3JrZXJTdWJtaXNzaW9uUXVldWVMb2NrKTsKIAogCW9uX3NobWVtX2V4 aXQocGdhaW9fd29ya2VyX2RpZSwgMCk7CkBAIC0zOTIsMjAgKzM5MywyMCBAQCBJb1dvcmtl ck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xl bikKIAogCUF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9uKCk7CiAKLQlwcXNpZ25hbChTSUdI VVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR0lOVCwg ZGllKTsJCS8qIHRvIGFsbG93IG1hbnVhbGx5IHRyaWdnZXJpbmcgd29ya2VyIHJlc3RhcnQg Ki8KKwkvKiB4eHg6IHRoaXMgdXNlZCAnZGllJy4gQW55IHJlYXNvbj8gKi8KKwlwcXNpZ25h bChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwkvKiB0byBhbGxv dyBtYW51YWxseQorCQkJCQkJCQkJCQkJCQkgKiB0cmlnZ2VyaW5nIHdvcmtlcgorCQkJCQkJ CQkJCQkJCQkgKiByZXN0YXJ0ICovCiAKIAkvKgogCSAqIElnbm9yZSBTSUdURVJNLCB3aWxs IGdldCBleHBsaWNpdCBzaHV0ZG93biB2aWEgU0lHVVNSMiBsYXRlciBpbiB0aGUKIAkgKiBz aHV0ZG93biBzZXF1ZW5jZSwgc2ltaWxhciB0byBjaGVja3BvaW50ZXIuCiAJICovCiAJcHFz aWduYWwoU0lHVEVSTSwgU0lHX0lHTik7Ci0JLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJl YWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCi0JcHFzaWduYWwoU0lHQUxS TSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwo U0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR1VT UjIsIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOwogCisJU2V0U3RhbmRhcmRJ bnRlcnJ1cHRIYW5kbGVycygpOworCiAJLyogYWxzbyByZWdpc3RlcnMgYSBzaHV0ZG93biBj YWxsYmFjayB0byB1bnJlZ2lzdGVyICovCiAJcGdhaW9fd29ya2VyX3JlZ2lzdGVyKCk7CiAK QEAgLTQ1MywxMSArNDU0LDExIEBAIElvV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVw X2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCiAJc2lncHJvY21hc2soU0lHX1NF VE1BU0ssICZVbkJsb2NrU2lnLCBOVUxMKTsKIAotCXdoaWxlICghU2h1dGRvd25SZXF1ZXN0 UGVuZGluZykKKwl3aGlsZSAoIUludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1RFUk1JTkFU RSkpCiAJewogCQl1aW50MzIJCWlvX2luZGV4OwotCQlMYXRjaAkgICAqbGF0Y2hlc1tJT19X T1JLRVJfV0FLRVVQX0ZBTk9VVF07Ci0JCWludAkJCW5sYXRjaGVzID0gMDsKKwkJUHJvY051 bWJlcglwcm9jbm9zW0lPX1dPUktFUl9XQUtFVVBfRkFOT1VUXTsKKwkJaW50CQkJbnByb2Nu b3MgPSAwOwogCQlpbnQJCQlud2FrZXVwcyA9IDA7CiAJCWludAkJCXdvcmtlcjsKIApAQCAt NDkwLDEzICs0OTEsMTMgQEAgSW9Xb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQl7CiAJCQkJaWYgKCh3b3JrZXIgPSBw Z2Fpb193b3JrZXJfY2hvb3NlX2lkbGUoKSkgPCAwKQogCQkJCQlicmVhazsKLQkJCQlsYXRj aGVzW25sYXRjaGVzKytdID0gaW9fd29ya2VyX2NvbnRyb2wtPndvcmtlcnNbd29ya2VyXS5s YXRjaDsKKwkJCQlwcm9jbm9zW25wcm9jbm9zKytdID0gaW9fd29ya2VyX2NvbnRyb2wtPndv cmtlcnNbd29ya2VyXS5wcm9jbm87CiAJCQl9CiAJCX0KIAkJTFdMb2NrUmVsZWFzZShBaW9X b3JrZXJTdWJtaXNzaW9uUXVldWVMb2NrKTsKIAotCQlmb3IgKGludCBpID0gMDsgaSA8IG5s YXRjaGVzOyArK2kpCi0JCQlTZXRMYXRjaChsYXRjaGVzW2ldKTsKKwkJZm9yIChpbnQgaSA9 IDA7IGkgPCBucHJvY25vczsgKytpKQorCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsIHByb2Nub3NbaV0pOwogCiAJCWlmIChpb19pbmRleCAhPSAtMSkKIAkJewpA QCAtNTY3LDE4ICs1NjgsMjAgQEAgSW9Xb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg LTEsCi0JCQkJCSAgV0FJVF9FVkVOVF9JT19XT1JLRVJfTUFJTik7Ci0JCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQkJV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwK KwkJCQkJCSAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJICBJTlRFUlJVUFRf VEVSTUlOQVRFIHwKKwkJCQkJCSAgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJICBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAtMSwKKwkJCQkJ CSAgV0FJVF9FVkVOVF9JT19XT1JLRVJfTUFJTik7CisJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVApOwogCQl9CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVu ZGluZyA9IGZhbHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklH X1JFTE9BRCkpCiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCX0K IAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggZDFiYWJhZmYwMjMuLmNiNjFlNmUx ZmNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtNDYsNiArNDYs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvc3RvcmFnZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv c3RvcmFnZV94bG9nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgorI2lu Y2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWIvYmluYXJ5aGVhcC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zMzQ1 LDcgKzMzNDYsNyBAQCBXYWtlUGluQ291bnRXYWl0ZXIoQnVmZmVyRGVzYyAqYnVmKQogCQlV bmxvY2tCdWZIZHJFeHQoYnVmLCBidWZfc3RhdGUsCiAJCQkJCQkwLCBCTV9QSU5fQ09VTlRf V0FJVEVSLAogCQkJCQkJMCk7Ci0JCVByb2NTZW5kU2lnbmFsKHdhaXRfYmFja2VuZF9wZ3By b2Nubyk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCB3YWl0X2Jh Y2tlbmRfcGdwcm9jbm8pOwogCX0KIAllbHNlCiAJCVVubG9ja0J1ZkhkcihidWYpOwpAQCAt MzUyNSw3ICszNTI2LDcgQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJCQkJCQkwKTsKIAog CQkvKiBDaGVjayBmb3IgYmFycmllciBldmVudHMgaW4gY2FzZSBOQnVmZmVycyBpcyBsYXJn ZS4gKi8KLQkJaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKKwkJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpKQogCQkJUHJvY2Vzc1Byb2NTaWduYWxCYXJy aWVyKCk7CiAJfQogCkBAIC0zNjA2LDcgKzM2MDcsNyBAQCBCdWZmZXJTeW5jKGludCBmbGFn cykKIAkJcy0+bnVtX3RvX3NjYW4rKzsKIAogCQkvKiBDaGVjayBmb3IgYmFycmllciBldmVu dHMuICovCi0JCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJCWlmIChDb25zdW1l SW50ZXJydXB0KElOVEVSUlVQVF9CQVJSSUVSKSkKIAkJCVByb2Nlc3NQcm9jU2lnbmFsQmFy cmllcigpOwogCX0KIApAQCAtMzY5Nyw3ICszNjk4LDcgQEAgQnVmZmVyU3luYyhpbnQgZmxh Z3MpCiAJCS8qCiAJCSAqIFNsZWVwIHRvIHRocm90dGxlIG91ciBJL08gcmF0ZS4KIAkJICoK LQkJICogKFRoaXMgd2lsbCBjaGVjayBmb3IgYmFycmllciBldmVudHMgZXZlbiBpZiBpdCBk b2Vzbid0IHNsZWVwLikKKwkJICogKFRoaXMgd2lsbCBjaGVjayBmb3IgaW50ZXJydXB0cyBl dmVuIGlmIGl0IGRvZXNuJ3Qgc2xlZXAuKQogCQkgKi8KIAkJQ2hlY2twb2ludFdyaXRlRGVs YXkoZmxhZ3MsIChkb3VibGUpIG51bV9wcm9jZXNzZWQgLyBudW1fdG9fc2Nhbik7CiAJfQpA QCAtNjY0MywxMiArNjY0NCwxOCBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVm ZmVyKQogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCgtMSk7CiAJCX0KIAkJZWxz ZQotCQkJUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfQ0xFQU5VUCk7CisJ CXsKKwkJCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwKKwkJCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfQ0xFQU5VUCk7CisJCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOworCQkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKwkJfQogCiAJCS8qCiAJCSAqIFJlbW92ZSBmbGFnIG1hcmtpbmcgdXMgYXMg d2FpdGVyLiBOb3JtYWxseSB0aGlzIHdpbGwgbm90IGJlIHNldAotCQkgKiBhbnltb3JlLCBi dXQgUHJvY1dhaXRGb3JTaWduYWwoKSBjYW4gcmV0dXJuIGZvciBvdGhlciBzaWduYWxzIGFz Ci0JCSAqIHdlbGwuICBXZSB0YWtlIGNhcmUgdG8gb25seSByZXNldCB0aGUgZmxhZyBpZiB3 ZSdyZSB0aGUgd2FpdGVyLCBhcworCQkgKiBhbnltb3JlLCBidXQgV2FpdEludGVycnVwdCBj YW4gcmV0dXJuIGZvciBvdGhlciBzaWduYWxzIGFzIHdlbGwuIFdlCisJCSAqIHRha2UgY2Fy ZSB0byBvbmx5IHJlc2V0IHRoZSBmbGFnIGlmIHdlJ3JlIHRoZSB3YWl0ZXIsIGFzCiAJCSAq IHRoZW9yZXRpY2FsbHkgYW5vdGhlciBiYWNrZW5kIGNvdWxkIGhhdmUgc3RhcnRlZCB3YWl0 aW5nLiBUaGF0J3MKIAkJICogaW1wb3NzaWJsZSB3aXRoIHRoZSBjdXJyZW50IHVzYWdlcyBk dWUgdG8gdGFibGUgbGV2ZWwgbG9ja2luZywgYnV0CiAJCSAqIGJldHRlciBiZSBzYWZlLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggYjc2ODc4MzYxODgu LmMzZTk3NTliOWIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9m cmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMK QEAgLTE1LDYgKzE1LDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNs dWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi cG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZfaW50ZXJuYWxzLmgiCkBA IC0xOTYsMjcgKzE5NywyNSBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCS8qCiAJ ICogSWYgYXNrZWQsIHdlIG5lZWQgdG8gd2FrZW4gdGhlIGJnd3JpdGVyLiBTaW5jZSB3ZSBk b24ndCB3YW50IHRvIHJlbHkgb24KIAkgKiBhIHNwaW5sb2NrIGZvciB0aGlzIHdlIGZvcmNl IGEgcmVhZCBmcm9tIHNoYXJlZCBtZW1vcnkgb25jZSwgYW5kIHRoZW4KLQkgKiBzZXQgdGhl IGxhdGNoIGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGF0 IGxlbmd0aAotCSAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3Byb2NubyBtaWdodCBiZSByZXNl dCB3aGlsZS9hZnRlciB3ZSBjaGVjayBiZWNhdXNlCi0JICogdGhlIGNvbXBpbGVyIG1pZ2h0 IGp1c3QgcmVyZWFkIGZyb20gbWVtb3J5LgorCSAqIHNlbmQgdGhlIGludGVycnVwdCBiYXNl ZCBvbiB0aGF0IHZhbHVlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhhdAorCSAqIGxlbmd0 aCBiZWNhdXNlIG90aGVyd2lzZSBiZ3dwcm9jbm8gbWlnaHQgYmUgcmVzZXQgd2hpbGUvYWZ0 ZXIgd2UgY2hlY2sKKwkgKiBiZWNhdXNlIHRoZSBjb21waWxlciBtaWdodCBqdXN0IHJlcmVh ZCBmcm9tIG1lbW9yeS4KIAkgKgotCSAqIFRoaXMgY2FuIHBvc3NpYmx5IHNldCB0aGUgbGF0 Y2ggb2YgdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlIGJnd3JpdGVyCi0JICogZGllcyBpbiB0 aGUgd3JvbmcgbW9tZW50LiBCdXQgc2luY2UgUEdQUk9DLT5wcm9jTGF0Y2ggaXMgbmV2ZXIK LQkgKiBkZWFsbG9jYXRlZCB0aGUgd29yc3QgY29uc2VxdWVuY2Ugb2YgdGhhdCBpcyB0aGF0 IHdlIHNldCB0aGUgbGF0Y2ggb2YKLQkgKiBzb21lIGFyYml0cmFyeSBwcm9jZXNzLgorCSAq IFRoaXMgY2FuIHBvc3NpYmx5IHNlbmQgdGhlIGludGVycnVwdCB0byB0aGUgd3JvbmcgcHJv Y2VzcyBpZiB0aGUKKwkgKiBiZ3dyaXRlciBkaWVzIGluIHRoZSB3cm9uZyBtb21lbnQsIGJ1 dCB0aGF0J3MgaGFybWxlc3MuCiAJICovCiAJYmd3cHJvY25vID0gSU5UX0FDQ0VTU19PTkNF KFN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vKTsKIAlpZiAoYmd3cHJvY25vICE9IC0xKQog CXsKLQkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZvcmUgc2V0dGluZyB0aGUgbGF0 Y2ggKi8KKwkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZvcmUgc2VuZGluZyB0aGUg aW50ZXJydXB0ICovCiAJCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7CiAKIAkJ LyoKLQkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2ggaXMgc2xp Z2h0bHkgaWNreS4gSXQncwotCQkgKiBhY3R1YWxseSBmaW5lIGJlY2F1c2UgcHJvY0xhdGNo IGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuCi0JCSAqIHBvdGVudGlhbGx5IHNl dCB0aGUgd3JvbmcgcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRjaC4KKwkJICogTm90 IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2ggaXMgc2xpZ2h0bHkgaWNreSwg YmVjYXVzZSB3ZQorCQkgKiBjYW4gcG90ZW50aWFsbHkgc2VuZCB0aGUgaW50ZXJydXB0IHRv IHRoZSB3cm9uZyBwcm9jZXNzIChvciBubworCQkgKiBwcm9jZXNzKSwgYnV0IGl0J3MgaGFy bWxlc3MuCiAJCSAqLwotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIoYmd3cHJvY25v KS0+cHJvY0xhdGNoKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAs IGJnd3Byb2Nubyk7CiAJfQogCiAJLyoKQEAgLTM0NywxMCArMzQ2LDEwIEBAIFN0cmF0ZWd5 U3luY1N0YXJ0KHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm51bV9idWZfYWxs b2MpCiB9CiAKIC8qCi0gKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyIC0tIHNldCBvciBjbGVh ciBhbGxvY2F0aW9uIG5vdGlmaWNhdGlvbiBsYXRjaAorICogU3RyYXRlZ3lOb3RpZnlCZ1dy aXRlciAtLSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24gcHJvY2Vzcwog ICoKICAqIElmIGJnd3Byb2NubyBpc24ndCAtMSwgdGhlIG5leHQgaW52b2NhdGlvbiBvZiBT dHJhdGVneUdldEJ1ZmZlciB3aWxsCi0gKiBzZXQgdGhhdCBsYXRjaC4gIFBhc3MgLTEgdG8g Y2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0aW9uIGJlZm9yZSBpdAorICogaW50ZXJydXB0 IHRoYXQgcHJvY2Vzcy4gIFBhc3MgLTEgdG8gY2xlYXIgdGhlIHBlbmRpbmcgbm90aWZpY2F0 aW9uIGJlZm9yZSBpdAogICogaGFwcGVucy4gIFRoaXMgZmVhdHVyZSBpcyB1c2VkIGJ5IHRo ZSBiZ3dyaXRlciBwcm9jZXNzIHRvIHdha2UgaXRzZWxmIHVwCiAgKiBmcm9tIGhpYmVybmF0 aW9uLCBhbmQgaXMgbm90IG1lYW50IGZvciBhbnlib2R5IGVsc2UgdG8gdXNlLgogICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCmluZGV4IDlhMDdmNmUxZDkyLi4yZDk4YTQzZTc0 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUKQEAgLTE1LDcgKzE1LDYgQEAgT0JK UyA9IFwKIAlkc21fcmVnaXN0cnkubyBcCiAJaXBjLm8gXAogCWlwY2kubyBcCi0JbGF0Y2gu byBcCiAJcG1zaWduYWwubyBcCiAJcHJvY2FycmF5Lm8gXAogCXByb2NzaWduYWwubyBcCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwppbmRleCBlMjA4NDU3ZGYyNy4uMzY3YzEx NjgyMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwuYwpAQCAtMzU3LDggKzM1 Nyw4IEBAIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZShpbnQgZmQsIG9mZl90IHNpemUpCiAJLyoK IAkgKiBCbG9jayBhbGwgYmxvY2thYmxlIHNpZ25hbHMsIGV4Y2VwdCBTSUdRVUlULiAgcG9z aXhfZmFsbG9jYXRlKCkgY2FuIHJ1bgogCSAqIGZvciBxdWl0ZSBhIGxvbmcgdGltZSwgYW5k IGlzIGFuIGFsbC1vci1ub3RoaW5nIG9wZXJhdGlvbi4gIElmIHdlCi0JICogYWxsb3dlZCBT SUdVU1IxIHRvIGludGVycnVwdCB1cyByZXBlYXRlZGx5IChmb3IgZXhhbXBsZSwgZHVlIHRv Ci0JICogcmVjb3ZlcnkgY29uZmxpY3RzKSwgdGhlIHJldHJ5IGxvb3AgbWlnaHQgbmV2ZXIg c3VjY2VlZC4KKwkgKiBhbGxvd2VkIHNpZ25hbHMgdG8gaW50ZXJydXB0IHVzIHJlcGVhdGVk bHkgKGZvciBleGFtcGxlLCBkdWUgdG8gY29uZmlnCisJICogZmlsZSByZWxvYWRzKSwgdGhl IHJldHJ5IGxvb3AgbWlnaHQgbmV2ZXIgc3VjY2VlZC4KIAkgKi8KIAlpZiAoSXNVbmRlclBv c3RtYXN0ZXIpCiAJCXNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmQmxvY2tTaWcsICZzYXZl X3NpZ21hc2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYwppbmRleCBjYjk0NGVkZDhkZi4uODA2 OTQ3NTcxYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCkBAIC0yMyw2ICsyMyw3IEBACiAj aW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorI2luY2x1ZGUg ImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpZmRlZiBQUk9G SUxFX1BJRF9ESVIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE3 MiwxMyArMTczLDEyIEBAIHByb2NfZXhpdF9wcmVwYXJlKGludCBjb2RlKQogCXByb2NfZXhp dF9pbnByb2dyZXNzID0gdHJ1ZTsKIAogCS8qCi0JICogRm9yZ2V0IGFueSBwZW5kaW5nIGNh bmNlbCBvciBkaWUgcmVxdWVzdHM7IHdlJ3JlIGRvaW5nIG91ciBiZXN0IHRvCi0JICogY2xv c2UgdXAgc2hvcCBhbHJlYWR5LiAgTm90ZSB0aGF0IHRoZSBzaWduYWwgaGFuZGxlcnMgd2ls bCBub3Qgc2V0Ci0JICogdGhlc2UgZmxhZ3MgYWdhaW4sIG5vdyB0aGF0IHByb2NfZXhpdF9p bnByb2dyZXNzIGlzIHNldC4KKwkgKiBGb3JnZXQgYW55IHBlbmRpbmcgY2FuY2VsIG9yIGRp ZSByZXF1ZXN0cyBhbmQgc2V0IEludGVycnVwdEhvbGRvZmZDb3VudAorCSAqIHRvIHByZXZl bnQgYW55IG1vcmUgaW50ZXJydXB0cyBmcm9tIGJlaW5nIHByb2Nlc3NlZDsgd2UncmUgZG9p bmcgb3VyCisJICogYmVzdCB0byBjbG9zZSB1cCBzaG9wIGFscmVhZHkuCiAJICovCi0JSW50 ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCVByb2NEaWVQZW5kaW5nID0gZmFsc2U7Ci0JUXVl cnlDYW5jZWxQZW5kaW5nID0gZmFsc2U7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1RF Uk1JTkFURSk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAJ SW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMTsKIAlDcml0U2VjdGlvbkNvdW50ID0gMDsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDg1MzdlOWZlZjJkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9sYXRjaC5jCisrKyAvZGV2L251bGwKQEAgLTEsMzg5ICswLDAgQEAKLS8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotICoKLSAqIGxhdGNoLmMKLSAqCSAgUm91dGluZXMgZm9yIGludGVyLXBy b2Nlc3MgbGF0Y2hlcwotICoKLSAqIFRoZSBsYXRjaCBpbnRlcmZhY2UgaXMgYSByZWxpYWJs ZSByZXBsYWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mCi0gKiB1c2luZyBwZ191 c2xlZXAoKSBvciBzZWxlY3QoKSB0byB3YWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMsIHdo ZXJlIHRoZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBhIGZsYWcgdmFyaWFibGUuICBTZWUg bGF0Y2guaCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICogb24gaG93IHRvIHVzZSB0aGVtLgot ICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0 LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBJREVO VElGSUNBVElPTgotICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jCi0gKgot ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpbmNsdWRlICJwb3N0Z3Jlcy5oIgotCi0j aW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9sYXRjaC5oIgotI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0 LmgiCi0jaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKLQotLyogQSBjb21tb24gV2FpdEV2 ZW50U2V0IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRMYXRjaCgpICovCi1zdGF0aWMgV2FpdEV2 ZW50U2V0ICpMYXRjaFdhaXRTZXQ7Ci0KLS8qIFRoZSBwb3NpdGlvbnMgb2YgdGhlIGxhdGNo IGFuZCBQTSBkZWF0aCBldmVudHMgaW4gTGF0Y2hXYWl0U2V0ICovCi0jZGVmaW5lIExhdGNo V2FpdFNldExhdGNoUG9zIDAKLSNkZWZpbmUgTGF0Y2hXYWl0U2V0UG9zdG1hc3RlckRlYXRo UG9zIDEKLQotdm9pZAotSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCh2b2lkKQotewotCWludAkJ CWxhdGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7Ci0KLQlBc3NlcnQoTGF0Y2hX YWl0U2V0ID09IE5VTEwpOwotCi0JLyogU2V0IHVwIHRoZSBXYWl0RXZlbnRTZXQgdXNlZCBi eSBXYWl0TGF0Y2goKS4gKi8KLQlMYXRjaFdhaXRTZXQgPSBDcmVhdGVXYWl0RXZlbnRTZXQo TlVMTCwgMik7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoTGF0Y2hXYWl0U2V0 LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkJCSAgTXlMYXRjaCwg TlVMTCk7Ci0JQXNzZXJ0KGxhdGNoX3BvcyA9PSBMYXRjaFdhaXRTZXRMYXRjaFBvcyk7Ci0K LQkvKgotCSAqIFdhaXRMYXRjaCB3aWxsIG1vZGlmeSB0aGlzIHRvIFdMX0VYSVRfT05fUE1f REVBVEggb3IKLQkgKiBXTF9QT1NUTUFTVEVSX0RFQVRIIG9uIGVhY2ggY2FsbC4KLQkgKi8K LQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZl bnRUb1NldChMYXRjaFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkg IFBHSU5WQUxJRF9TT0NLRVQsIE5VTEwsIE5VTEwpOwotCQlBc3NlcnQobGF0Y2hfcG9zID09 IExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcyk7Ci0JfQotfQotCi0vKgotICogSW5p dGlhbGl6ZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2guCi0gKi8KLXZvaWQKLUluaXRMYXRjaChM YXRjaCAqbGF0Y2gpCi17Ci0JbGF0Y2gtPmlzX3NldCA9IGZhbHNlOwotCWxhdGNoLT5tYXli ZV9zbGVlcGluZyA9IGZhbHNlOwotCWxhdGNoLT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci0J bGF0Y2gtPmlzX3NoYXJlZCA9IGZhbHNlOwotCi0jaWZkZWYgV0lOMzIKLQlsYXRjaC0+ZXZl bnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0JaWYgKGxhdGNo LT5ldmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBl cnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKLSNlbmRpZgkJCQkJCQkvKiBXSU4z MiAqLwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHNoYXJlZCBsYXRjaCB0aGF0IGNhbiBi ZSBzZXQgZnJvbSBvdGhlciBwcm9jZXNzZXMuIFRoZSBsYXRjaAotICogaXMgaW5pdGlhbGx5 IG93bmVkIGJ5IG5vLW9uZTsgdXNlIE93bkxhdGNoIHRvIGFzc29jaWF0ZSBpdCB3aXRoIHRo ZQotICogY3VycmVudCBwcm9jZXNzLgotICoKLSAqIEluaXRTaGFyZWRMYXRjaCBuZWVkcyB0 byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUgZm9ya2luZyBjaGlsZAotICogcHJv Y2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcgdGhlIHNoYXJlZCBtZW1v cnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoIHdpdGggU2htZW1Jbml0U3RydWN0 LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRvZXNuJ3QgYWN0dWFsbHkgcmVxdWly ZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMuKSBCZWNhdXNlIG9mCi0gKiB0aGlz IHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJlbmN5IGlzc3VlcyB0byB3b3JyeSBh Ym91dCBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCBvdGhlciBoYW5kbGVzIGNyZWF0ZWQgaW4g dGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwotICogaW5oZXJpdGFibGUuICBUaHVz IHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFuaW5nIHVwIGNoaWxkCi0gKiBw cm9jZXNzIHJlZmVyZW5jZXMgdG8gcG9zdG1hc3Rlci1wcml2YXRlIGxhdGNoZXMgb3IgV2Fp dEV2ZW50U2V0cy4KLSAqLwotdm9pZAotSW5pdFNoYXJlZExhdGNoKExhdGNoICpsYXRjaCkK LXsKLSNpZmRlZiBXSU4zMgotCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7Ci0KLQkvKgotCSAq IFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZlbnRz IGFyZSBpbmhlcml0ZWQuCi0JICovCi0JWmVyb01lbW9yeSgmc2EsIHNpemVvZihzYSkpOwot CXNhLm5MZW5ndGggPSBzaXplb2Yoc2EpOwotCXNhLmJJbmhlcml0SGFuZGxlID0gVFJVRTsK LQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50KCZzYSwgVFJVRSwgRkFMU0UsIE5VTEwp OwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJPUiwgIkNyZWF0ZUV2 ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7Ci0jZW5kaWYK LQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVfc2xlZXBpbmcgPSBm YWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLQlsYXRjaC0+aXNfc2hhcmVkID0gdHJ1 ZTsKLX0KLQotLyoKLSAqIEFzc29jaWF0ZSBhIHNoYXJlZCBsYXRjaCB3aXRoIHRoZSBjdXJy ZW50IHByb2Nlc3MsIGFsbG93aW5nIGl0IHRvCi0gKiB3YWl0IG9uIHRoZSBsYXRjaC4KLSAq Ci0gKiBBbHRob3VnaCB0aGVyZSBpcyBhIHNhbml0eSBjaGVjayBmb3IgbGF0Y2gtYWxyZWFk eS1vd25lZCwgd2UgZG9uJ3QgZG8KLSAqIGFueSBzb3J0IG9mIGxvY2tpbmcgaGVyZSwgbWVh bmluZyB0aGF0IHdlIGNvdWxkIGZhaWwgdG8gZGV0ZWN0IHRoZSBlcnJvcgotICogaWYgdHdv IHByb2Nlc3NlcyB0cnkgdG8gb3duIHRoZSBzYW1lIGxhdGNoIGF0IGFib3V0IHRoZSBzYW1l IHRpbWUuICBJZgotICogdGhlcmUgaXMgYW55IHJpc2sgb2YgdGhhdCwgY2FsbGVyIG11c3Qg cHJvdmlkZSBhbiBpbnRlcmxvY2sgdG8gcHJldmVudCBpdC4KLSAqLwotdm9pZAotT3duTGF0 Y2goTGF0Y2ggKmxhdGNoKQotewotCWludAkJCW93bmVyX3BpZDsKLQotCS8qIFNhbml0eSBj aGVja3MgKi8KLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0KLQlvd25lcl9waWQgPSBs YXRjaC0+b3duZXJfcGlkOwotCWlmIChvd25lcl9waWQgIT0gMCkKLQkJZWxvZyhQQU5JQywg ImxhdGNoIGFscmVhZHkgb3duZWQgYnkgUElEICVkIiwgb3duZXJfcGlkKTsKLQotCWxhdGNo LT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci19Ci0KLS8qCi0gKiBEaXNvd24gYSBzaGFyZWQg bGF0Y2ggY3VycmVudGx5IG93bmVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MuCi0gKi8KLXZv aWQKLURpc293bkxhdGNoKExhdGNoICpsYXRjaCkKLXsKLQlBc3NlcnQobGF0Y2gtPmlzX3No YXJlZCk7Ci0JQXNzZXJ0KGxhdGNoLT5vd25lcl9waWQgPT0gTXlQcm9jUGlkKTsKLQotCWxh dGNoLT5vd25lcl9waWQgPSAwOwotfQotCi0vKgotICogV2FpdCBmb3IgYSBnaXZlbiBsYXRj aCB0byBiZSBzZXQsIG9yIGZvciBwb3N0bWFzdGVyIGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0 Ci0gKiBpcyBleGNlZWRlZC4gJ3dha2VFdmVudHMnIGlzIGEgYml0bWFzayB0aGF0IHNwZWNp ZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMKLSAqIHRvIHdhaXQgZm9yLiBJZiB0aGUgbGF0 Y2ggaXMgYWxyZWFkeSBzZXQgKGFuZCBXTF9MQVRDSF9TRVQgaXMgZ2l2ZW4pLCB0aGUKLSAq IGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuCi0gKgotICogVGhlICJ0aW1lb3V0IiBp cyBnaXZlbiBpbiBtaWxsaXNlY29uZHMuIEl0IG11c3QgYmUgPj0gMCBpZiBXTF9USU1FT1VU IGZsYWcKLSAqIGlzIGdpdmVuLiAgQWx0aG91Z2ggaXQgaXMgZGVjbGFyZWQgYXMgImxvbmci LCB3ZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0Ci0gKiB0aW1lb3V0cyBsb25nZXIgdGhhbiBJ TlRfTUFYIG1pbGxpc2Vjb25kcy4gIE5vdGUgdGhhdCBzb21lIGV4dHJhIG92ZXJoZWFkCi0g KiBpcyBpbmN1cnJlZCB3aGVuIFdMX1RJTUVPVVQgaXMgZ2l2ZW4sIHNvIGF2b2lkIHVzaW5n IGEgdGltZW91dCBpZiBwb3NzaWJsZS4KLSAqCi0gKiBUaGUgbGF0Y2ggbXVzdCBiZSBvd25l ZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLCBpZS4gaXQgbXVzdCBiZSBhCi0gKiBwcm9jZXNz LWxvY2FsIGxhdGNoIGluaXRpYWxpemVkIHdpdGggSW5pdExhdGNoLCBvciBhIHNoYXJlZCBs YXRjaAotICogYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MgYnkgY2FsbGlu ZyBPd25MYXRjaC4KLSAqCi0gKiBSZXR1cm5zIGJpdCBtYXNrIGluZGljYXRpbmcgd2hpY2gg Y29uZGl0aW9uKHMpIGNhdXNlZCB0aGUgd2FrZS11cC4gTm90ZQotICogdGhhdCBpZiBtdWx0 aXBsZSB3YWtlLXVwIGNvbmRpdGlvbnMgYXJlIHRydWUsIHRoZXJlIGlzIG5vIGd1YXJhbnRl ZSB0aGF0Ci0gKiB3ZSByZXR1cm4gYWxsIG9mIHRoZW0gaW4gb25lIGNhbGwsIGJ1dCB3ZSB3 aWxsIHJldHVybiBhdCBsZWFzdCBvbmUuCi0gKi8KLWludAotV2FpdExhdGNoKExhdGNoICps YXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKLQkJICB1aW50MzIgd2FpdF9l dmVudF9pbmZvKQotewotCVdhaXRFdmVudAlldmVudDsKLQotCS8qIFBvc3RtYXN0ZXItbWFu YWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8K LQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8Ci0JCSAgICh3YWtlRXZlbnRzICYgV0xf RVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVS X0RFQVRIKSk7Ci0KLQkvKgotCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBhIGxhdGNoIG90 aGVyIHRoYW4gTXlMYXRjaCwgb3Igbm8gbGF0Y2ggYXQgYWxsLAotCSAqIG9yIHdhbnQgdG8g aGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggZGlmZmVyZW50bHkuICBJdCdzIGNoZWFwIHRvIGFz c2lnbgotCSAqIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2ZXJ5IHRpbWUuCi0JICovCi0JaWYg KCEod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkpCi0JCWxhdGNoID0gTlVMTDsKLQlNb2Rp ZnlXYWl0RXZlbnQoTGF0Y2hXYWl0U2V0LCBMYXRjaFdhaXRTZXRMYXRjaFBvcywgV0xfTEFU Q0hfU0VULCBsYXRjaCk7Ci0KLQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JCU1vZGlmeVdh aXRFdmVudChMYXRjaFdhaXRTZXQsIExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcywK LQkJCQkJCSh3YWtlRXZlbnRzICYgKFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFT VEVSX0RFQVRIKSksCi0JCQkJCQlOVUxMKTsKLQotCWlmIChXYWl0RXZlbnRTZXRXYWl0KExh dGNoV2FpdFNldCwKLQkJCQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91 dCA6IC0xLAotCQkJCQkJICZldmVudCwgMSwKLQkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09 IDApCi0JCXJldHVybiBXTF9USU1FT1VUOwotCWVsc2UKLQkJcmV0dXJuIGV2ZW50LmV2ZW50 czsKLX0KLQotLyoKLSAqIExpa2UgV2FpdExhdGNoLCBidXQgd2l0aCBhbiBleHRyYSBzb2Nr ZXQgYXJndW1lbnQgZm9yIFdMX1NPQ0tFVF8qCi0gKiBjb25kaXRpb25zLgotICoKLSAqIFdo ZW4gd2FpdGluZyBvbiBhIHNvY2tldCwgRU9GIGFuZCBlcnJvciBjb25kaXRpb25zIGFsd2F5 cyBjYXVzZSB0aGUgc29ja2V0Ci0gKiB0byBiZSByZXBvcnRlZCBhcyByZWFkYWJsZS93cml0 YWJsZS9jb25uZWN0ZWQsIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbAotICogd2l0aCB0 aGUgY29uZGl0aW9uLgotICoKLSAqIHdha2VFdmVudHMgbXVzdCBpbmNsdWRlIGVpdGhlciBX TF9FWElUX09OX1BNX0RFQVRIIGZvciBhdXRvbWF0aWMgZXhpdAotICogaWYgdGhlIHBvc3Rt YXN0ZXIgZGllcyBvciBXTF9QT1NUTUFTVEVSX0RFQVRIIGZvciBhIGZsYWcgc2V0IGluIHRo ZQotICogcmV0dXJuIHZhbHVlIGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMuICBUaGUgbGF0dGVy IGlzIHVzZWZ1bCBmb3IgcmFyZSBjYXNlcwotICogd2hlcmUgc29tZSBiZWhhdmlvciBvdGhl ciB0aGFuIGltbWVkaWF0ZSBleGl0IGlzIG5lZWRlZC4KLSAqCi0gKiBOQjogVGhlc2UgZGF5 cyB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCB0aGUgV2FpdEV2ZW50U2V0IEFQSS4g V2hlbgotICogdXNpbmcgYSBsYXRjaCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0 aW5nIGEgbG9uZ2VyIGxpdmluZwotICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBt b3JlIGVmZmljaWVudC4KLSAqLwotaW50Ci1XYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0 Y2gsIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAotCQkJCSAgbG9uZyB0aW1lb3V0 LCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCWludAkJCXJldCA9IDA7Ci0JaW50CQkJ cmM7Ci0JV2FpdEV2ZW50CWV2ZW50OwotCVdhaXRFdmVudFNldCAqc2V0ID0gQ3JlYXRlV2Fp dEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLCAzKTsKLQotCWlmICh3YWtlRXZlbnRz ICYgV0xfVElNRU9VVCkKLQkJQXNzZXJ0KHRpbWVvdXQgPj0gMCk7Ci0JZWxzZQotCQl0aW1l b3V0ID0gLTE7Ci0KLQlpZiAod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJQWRkV2Fp dEV2ZW50VG9TZXQoc2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJ CQkgIGxhdGNoLCBOVUxMKTsKLQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11 c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5k ZXJQb3N0bWFzdGVyIHx8Ci0JCSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFU SCkgfHwKLQkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQlp ZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1h c3RlcikKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQ R0lOVkFMSURfU09DS0VULAotCQkJCQkJICBOVUxMLCBOVUxMKTsKLQotCWlmICgod2FrZUV2 ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQotCQlB ZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9T T0NLRVQsCi0JCQkJCQkgIE5VTEwsIE5VTEwpOwotCi0JaWYgKHdha2VFdmVudHMgJiBXTF9T T0NLRVRfTUFTSykKLQl7Ci0JCWludAkJCWV2OwotCi0JCWV2ID0gd2FrZUV2ZW50cyAmIFdM X1NPQ0tFVF9NQVNLOwotCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCBOVUxM LCBOVUxMKTsKLQl9Ci0KLQlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAm ZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7Ci0KLQlpZiAocmMgPT0gMCkKLQkJcmV0IHw9 IFdMX1RJTUVPVVQ7Ci0JZWxzZQotCXsKLQkJcmV0IHw9IGV2ZW50LmV2ZW50cyAmIChXTF9M QVRDSF9TRVQgfAotCQkJCQkJCSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAotCQkJCQkJCSAg IFdMX1NPQ0tFVF9NQVNLKTsKLQl9Ci0KLQlGcmVlV2FpdEV2ZW50U2V0KHNldCk7Ci0KLQly ZXR1cm4gcmV0OwotfQotCi0vKgotICogU2V0cyBhIGxhdGNoIGFuZCB3YWtlcyB1cCBhbnlv bmUgd2FpdGluZyBvbiBpdC4KLSAqCi0gKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBsYXRjaCBp cyBhbHJlYWR5IHNldCwgb3RoZXJ3aXNlIG5vdCBzbyBtdWNoLgotICoKLSAqIE5COiB3aGVu IGNhbGxpbmcgdGhpcyBpbiBhIHNpZ25hbCBoYW5kbGVyLCBiZSBzdXJlIHRvIHNhdmUgYW5k IHJlc3RvcmUKLSAqIGVycm5vIGFyb3VuZCBpdC4gIChUaGF0J3Mgc3RhbmRhcmQgcHJhY3Rp Y2UgaW4gbW9zdCBzaWduYWwgaGFuZGxlcnMsIG9mCi0gKiBjb3Vyc2UsIGJ1dCB3ZSB1c2Vk IHRvIG9taXQgaXQgaW4gaGFuZGxlcnMgdGhhdCBvbmx5IHNldCBhIGZsYWcuKQotICoKLSAq IE5COiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFu ZCBzaWduYWwgaGFuZGxlcnMgc28KLSAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdv b2QgaWRlYS4KLSAqLwotdm9pZAotU2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotI2lmbmRl ZiBXSU4zMgotCXBpZF90CQlvd25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwot I2VuZGlmCi0KLQkvKgotCSAqIFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2Vk IGhlcmUgdG8gZW5zdXJlIHRoYXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkg Y2hhbmdlZCBieSB0aGlzIHByb2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAq IG1lbW9yeSwgYmVmb3JlIHdlIGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5 X2JhcnJpZXIoKTsKLQotCS8qIFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAo bGF0Y2gtPmlzX3NldCkKLQkJcmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0K LQlwZ19tZW1vcnlfYmFycmllcigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQot CQlyZXR1cm47Ci0KLSNpZm5kZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdz IHdhaXRpbmcgZm9yIHRoZSBsYXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3Mg aWYKLQkgKiB3ZSdyZSBpbiBhIHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlw ZSBvciBTSUdVUkcgdG8gb3Vyc2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRX YWl0QmxvY2soKSB3aXRob3V0IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFu b3RoZXIgcHJvY2Vzcywgc2VuZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3Bp ZCBvbmx5IG9uY2UsIGluIGNhc2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5n Ci0JICogb3duZWQgb3IgZGlzb3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3Qg aXMgYXRvbWljLCB3aGljaCBpc24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4g cHJhY3RpY2UsIHRoZSBlZmZlY3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEg MzIgYml0IGludGVnZXIsIGFuZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3Qg Y2FzZSwgd2UKLQkgKiBtaWdodCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNz LiBFdmVuIHRoZW4sIHlvdSdyZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0 aCB0aGF0IGJvZ3VzIHBpZCBleGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3Jlczsg YW5kIFBHIGRhdGFiYXNlIHByb2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1Ix Ci0JICogaW50ZXJydXB0cyB3aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBB bm90aGVyIHNvcnQgb2YgcmFjZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMg Zm9yIGEgbmV3Ci0JICogcHJvY2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFm dGVyIHdlIGxvb2ssIHNvIHdlIGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkg c28gbG9uZyBhcyBhbGwgY2FsbGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cK LQkgKiB0aGUgc3RhbmRhcmQgY29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUg Ym90dG9tIG9mIHRoZWlyIGxvb3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXkn bGwgY29ycmVjdGx5IHByb2Nlc3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhh cHBlbiBiZWZvcmUgdGhleSBlbnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBs YXRjaC0+b3duZXJfcGlkOwotCWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVs c2UgaWYgKG93bmVyX3BpZCA9PSBNeVByb2NQaWQpCi0JCVdha2V1cE15UHJvYygpOwotCWVs c2UKLQkJV2FrZXVwT3RoZXJQcm9jKG93bmVyX3BpZCk7Ci0KLSNlbHNlCi0KLQkvKgotCSAq IFNlZSBpZiBhbnlvbmUncyB3YWl0aW5nIGZvciB0aGUgbGF0Y2guIEl0IGNhbiBiZSB0aGUg Y3VycmVudCBwcm9jZXNzIGlmCi0JICogd2UncmUgaW4gYSBzaWduYWwgaGFuZGxlci4KLQkg KgotCSAqIFVzZSBhIGxvY2FsIHZhcmlhYmxlIGhlcmUganVzdCBpbiBjYXNlIHNvbWVib2R5 IGNoYW5nZXMgdGhlIGV2ZW50IGZpZWxkCi0JICogY29uY3VycmVudGx5ICh3aGljaCByZWFs bHkgc2hvdWxkIG5vdCBoYXBwZW4pLgotCSAqLwotCWhhbmRsZSA9IGxhdGNoLT5ldmVudDsK LQlpZiAoaGFuZGxlKQotCXsKLQkJU2V0RXZlbnQoaGFuZGxlKTsKLQotCQkvKgotCQkgKiBO b3RlIHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGlu IGEgc2lnbmFsCi0JCSAqIGhhbmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBp dCdzIG5vdCBzYWZlIHRvIGNhbGwgZWxvZygpLgotCQkgKi8KLQl9Ci0jZW5kaWYKLX0KLQot LyoKLSAqIENsZWFyIHRoZSBsYXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3 aWxsIHNsZWVwLCB1bmxlc3MKLSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRo ZSBXYWl0TGF0Y2ggY2FsbC4KLSAqLwotdm9pZAotUmVzZXRMYXRjaChMYXRjaCAqbGF0Y2gp Ci17Ci0JLyogT25seSB0aGUgb3duZXIgc2hvdWxkIHJlc2V0IHRoZSBsYXRjaCAqLwotCUFz c2VydChsYXRjaC0+b3duZXJfcGlkID09IE15UHJvY1BpZCk7Ci0JQXNzZXJ0KGxhdGNoLT5t YXliZV9zbGVlcGluZyA9PSBmYWxzZSk7Ci0KLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0K LQkvKgotCSAqIEVuc3VyZSB0aGF0IHRoZSB3cml0ZSB0byBpc19zZXQgZ2V0cyBmbHVzaGVk IHRvIG1haW4gbWVtb3J5IGJlZm9yZSB3ZQotCSAqIGV4YW1pbmUgYW55IGZsYWcgdmFyaWFi bGVzLiAgT3RoZXJ3aXNlIGEgY29uY3VycmVudCBTZXRMYXRjaCBtaWdodAotCSAqIGZhbHNl bHkgY29uY2x1ZGUgdGhhdCBpdCBuZWVkbid0IHNpZ25hbCB1cywgZXZlbiB0aG91Z2ggd2Ug aGF2ZSBtaXNzZWQKLQkgKiBzZWVpbmcgc29tZSBmbGFnIHVwZGF0ZXMgdGhhdCBTZXRMYXRj aCB3YXMgc3VwcG9zZWQgdG8gaW5mb3JtIHVzIG9mLgotCSAqLwotCXBnX21lbW9yeV9iYXJy aWVyKCk7Ci19CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5i dWlsZCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4IDljMWNh OTU0ZDlkLi4xNDc0NWMwNGUxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVp bGQKQEAgLTcsNyArNyw2IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2RzbV9y ZWdpc3RyeS5jJywKICAgJ2lwYy5jJywKICAgJ2lwY2kuYycsCi0gICdsYXRjaC5jJywKICAg J3Btc2lnbmFsLmMnLAogICAncHJvY2FycmF5LmMnLAogICAncHJvY3NpZ25hbC5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggNDAzMTJkZjJjYWMuLmIzNGUy Y2I3MzFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNTQsNiAr NTQsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJjYXRh bG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1 ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCkBAIC0zNDUw LDI3ICszNDUxLDI3IEBAIEdldENvbmZsaWN0aW5nVmlydHVhbFhJRHMoVHJhbnNhY3Rpb25J ZCBsaW1pdFhtaW4sIE9pZCBkYk9pZCkKICAqCiAgKiBUaGUgJ3BpZCcgaXMgcmVkdW5kYW50 IHdpdGggJ3Byb2MnLCBidXQgaXQgYWN0cyBhcyBhIGNyb3NzLWNoZWNrIHRvCiAgKiBkZXRl Y3QgcHJvY2VzcyBoYWQgZXhpdGVkIGFuZCB0aGUgUEdQUk9DIGVudHJ5IHdhcyByZXVzZWQg Zm9yIGEgZGlmZmVyZW50Ci0gKiBwcm9jZXNzLgorICogcHJvY2Vzcy4gRklYTUU6IGxvc3Qg dGhlIGNyb3NzY2hlY2suIFJlLWludHJvZHVjZSBhIHNlc3Npb24gSUQgb3Igc29tZXRoaW5n PwogICoKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvY2VzcyB3YXMgc2lnbmFsZWQsIG9y IGZhbHNlIGlmIG5vdCBmb3VuZC4KICAqLwogYm9vbAotU2lnbmFsUmVjb3ZlcnlDb25mbGlj dChQR1BST0MgKnByb2MsIHBpZF90IHBpZCwgUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFz b24pCitTaWduYWxSZWNvdmVyeUNvbmZsaWN0KFBHUFJPQyAqcHJvYywgUmVjb3ZlcnlDb25m bGljdFJlYXNvbiByZWFzb24pCiB7CiAJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAogCUxXTG9j a0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVEKTsKIAogCS8qCi0JICogS2lsbCB0 aGUgcGlkIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90LCB0aGF0J3Mgd2hhdCB3ZSB3YW50 ZWQgc28KKwkgKiBLaWxsIHRoZSBwcm9jZXNzIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90 LCB0aGF0J3Mgd2hhdCB3ZSB3YW50ZWQgc28KIAkgKiBpZ25vcmUgYW55IGVycm9ycy4KIAkg Ki8KLQlpZiAocHJvYy0+cGlkID09IHBpZCkKKwlpZiAocHJvYy0+cGlkICE9IDApCiAJewog CQkodm9pZCkgcGdfYXRvbWljX2ZldGNoX29yX3UzMigmcHJvYy0+cGVuZGluZ1JlY292ZXJ5 Q29uZmxpY3RzLCAoMSA8PCByZWFzb24pKTsKIAogCQkvKiB3YWtlIHVwIHRoZSBwcm9jZXNz ICovCi0JCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1QsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOworCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7 CiAJCWZvdW5kID0gdHJ1ZTsKIAl9CiAKQEAgLTM1MTAsMTAgKzM1MTEsMTAgQEAgU2lnbmFs UmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4 aWQsIFJlY292ZXJ5Q29uZmxpY3QKIAkJCQkodm9pZCkgcGdfYXRvbWljX2ZldGNoX29yX3Uz MigmcHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3RzLCAoMSA8PCByZWFzb24pKTsKIAog CQkJCS8qCi0JCQkJICogS2lsbCB0aGUgcGlkIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90 LCB0aGF0J3Mgd2hhdCB3ZQorCQkJCSAqIEtpbGwgdGhlIHByb2Nlc3MgaWYgaXQncyBzdGls bCBoZXJlLiBJZiBub3QsIHRoYXQncyB3aGF0IHdlCiAJCQkJICogd2FudGVkIHNvIGlnbm9y ZSBhbnkgZXJyb3JzLgogCQkJCSAqLwotCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChwaWQs IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QsIHZ4aWQucHJvY051bWJlcik7CisJCQkJU2Vu ZEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1QsIHZ4aWQucHJvY051bWJl cik7CiAJCQl9CiAJCQlicmVhazsKIAkJfQpAQCAtMzU0NSwyMSArMzU0NiwxOCBAQCBTaWdu YWxSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9pZCBkYXRhYmFzZWlkLCBSZWNvdmVy eUNvbmZsaWN0UmVhc29uIHJlYXNvbgogCiAJCWlmIChkYXRhYmFzZWlkID09IEludmFsaWRP aWQgfHwgcHJvYy0+ZGF0YWJhc2VJZCA9PSBkYXRhYmFzZWlkKQogCQl7Ci0JCQlWaXJ0dWFs VHJhbnNhY3Rpb25JZCBwcm9jdnhpZDsKIAkJCXBpZF90CQlwaWQ7CiAKLQkJCUdFVF9WWElE X0ZST01fUEdQUk9DKHByb2N2eGlkLCAqcHJvYyk7Ci0KIAkJCXBpZCA9IHByb2MtPnBpZDsK IAkJCWlmIChwaWQgIT0gMCkKIAkJCXsKIAkJCQkodm9pZCkgcGdfYXRvbWljX2ZldGNoX29y X3UzMigmcHJvYy0+cGVuZGluZ1JlY292ZXJ5Q29uZmxpY3RzLCAoMSA8PCByZWFzb24pKTsK IAogCQkJCS8qCi0JCQkJICogS2lsbCB0aGUgcGlkIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYg bm90LCB0aGF0J3Mgd2hhdCB3ZQorCQkJCSAqIEtpbGwgdGhlIHByb2Nlc3MgaWYgaXQncyBz dGlsbCBoZXJlLiBJZiBub3QsIHRoYXQncyB3aGF0IHdlCiAJCQkJICogd2FudGVkIHNvIGln bm9yZSBhbnkgZXJyb3JzLgogCQkJCSAqLwotCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChw aWQsIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QsIHByb2N2eGlkLnByb2NOdW1iZXIpOwor CQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNULCBHZXROdW1i ZXJGcm9tUEdQcm9jKHByb2MpKTsKIAkJCX0KIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYwppbmRleCA3NTA1YzlkM2EzNy4uZDE3YThjYzRlNGYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAgLTE5LDYgKzE5LDcgQEAKIAog I2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5j LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIK QEAgLTI3LDcgKzI4LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNs dWRlICJzdG9yYWdlL3NpbnZhbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgpAQCAt MzUsMjggKzM2LDIxIEBACiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogLyoKLSAq IFRoZSBTSUdVU1IxIHNpZ25hbCBpcyBtdWx0aXBsZXhlZCB0byBzdXBwb3J0IHNpZ25hbGlu ZyBtdWx0aXBsZSBldmVudAotICogdHlwZXMuIFRoZSBzcGVjaWZpYyByZWFzb24gaXMgY29t bXVuaWNhdGVkIHZpYSBmbGFncyBpbiBzaGFyZWQgbWVtb3J5LgotICogV2Uga2VlcCBhIGJv b2xlYW4gZmxhZyBmb3IgZWFjaCBwb3NzaWJsZSAicmVhc29uIiwgc28gdGhhdCBkaWZmZXJl bnQKLSAqIHJlYXNvbnMgY2FuIGJlIHNpZ25hbGVkIHRvIGEgcHJvY2VzcyBjb25jdXJyZW50 bHkuICAoSG93ZXZlciwgaWYgdGhlIHNhbWUKLSAqIHJlYXNvbiBpcyBzaWduYWxlZCBtb3Jl IHRoYW4gb25jZSBuZWFybHkgc2ltdWx0YW5lb3VzbHksIHRoZSBwcm9jZXNzIG1heQotICog b2JzZXJ2ZSBpdCBvbmx5IG9uY2UuKQorICogU3RhdGUgZm9yIHRoZSBQcm9jU2lnbmFsQmFy cmllciBtZWNoYW5pc20gYW5kIHF1ZXJ5IGNhbmNlbGxhdGlvbi4KICAqCi0gKiBFYWNoIHBy b2Nlc3MgdGhhdCB3YW50cyB0byByZWNlaXZlIHNpZ25hbHMgcmVnaXN0ZXJzIGl0cyBwcm9j ZXNzIElECi0gKiBpbiB0aGUgUHJvY1NpZ25hbFNsb3RzIGFycmF5LiBUaGUgYXJyYXkgaXMg aW5kZXhlZCBieSBQcm9jTnVtYmVyIHRvIG1ha2UKLSAqIHNsb3QgYWxsb2NhdGlvbiBzaW1w bGUsIGFuZCB0byBhdm9pZCBoYXZpbmcgdG8gc2VhcmNoIHRoZSBhcnJheSB3aGVuIHlvdQot ICoga25vdyB0aGUgUHJvY051bWJlciBvZiB0aGUgcHJvY2VzcyB5b3UncmUgc2lnbmFsaW5n LiAgKFdlIGRvIHN1cHBvcnQKLSAqIHNpZ25hbGluZyB3aXRob3V0IFByb2NOdW1iZXIsIGJ1 dCBpdCdzIGEgYml0IGxlc3MgZWZmaWNpZW50LikKKyAqIEVhY2ggcHJvY2VzcyB0aGF0IHdh bnRzIHRvIHBhcnRpY2lwYXRlIGluIGJhcnJpZXJzIG9yIHF1ZXJ5IGNhbmNlbGxhdGlvbgor ICogcmVnaXN0ZXJzIGl0cyBwcm9jZXNzIElEIGluIHRoZSBQcm9jU2lnbmFsU2xvdHMgYXJy YXkuIFRoZSBhcnJheSBpcyBpbmRleGVkCisgKiBieSBQcm9jTnVtYmVyIHRvIG1ha2Ugc2xv dCBhbGxvY2F0aW9uIHNpbXBsZS4KICAqCiAgKiBUaGUgZmllbGRzIGluIGVhY2ggc2xvdCBh cmUgcHJvdGVjdGVkIGJ5IGEgc3BpbmxvY2ssIHBzc19tdXRleC4gcHNzX3BpZCBjYW4KICAq IGFsc28gYmUgcmVhZCB3aXRob3V0IGhvbGRpbmcgdGhlIHNwaW5sb2NrLCBhcyBhIHF1aWNr IHByZWxpbWluYXJ5IGNoZWNrCiAgKiB3aGVuIHNlYXJjaGluZyBmb3IgYSBwYXJ0aWN1bGFy IFBJRCBpbiB0aGUgYXJyYXkuCiAgKgotICogcHNzX3NpZ25hbEZsYWdzIGFyZSBpbnRlbmRl ZCB0byBiZSBzZXQgaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCB0bwotICoga2VlcCB0 cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGFyZ2V0IHByb2Nlc3MgaGFzIGhhbmRsZWQg dGhlIHNpZ25hbCwKLSAqIGJ1dCBzb21ldGltZXMgd2UgbmVlZCBjb25maXJtYXRpb24sIGFz IHdoZW4gbWFraW5nIGEgZ2xvYmFsIHN0YXRlIGNoYW5nZQotICogdGhhdCBjYW5ub3QgYmUg Y29uc2lkZXJlZCBjb21wbGV0ZSB1bnRpbCBhbGwgYmFja2VuZHMgaGF2ZSB0YWtlbiBub3Rp Y2UKLSAqIG9mIGl0LiBGb3Igc3VjaCB1c2UgY2FzZXMsIHdlIHNldCBhIGJpdCBpbiBwc3Nf YmFycmllckNoZWNrTWFzayBhbmQgdGhlbgorICogUGxhaW4gaW50ZXJydXB0cyBhcmUgaW50 ZW5kZWQgdG8gYmUgc2V0IGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IG5lZWQgdG8KKyAqIGtl ZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3QgdGhlIHRhcmdldCBwcm9jZXNzIGhhcyBoYW5k bGVkIHRoZSBzaWduYWwsIGJ1dAorICogc29tZXRpbWVzIHdlIG5lZWQgY29uZmlybWF0aW9u LCBhcyB3aGVuIG1ha2luZyBhIGdsb2JhbCBzdGF0ZSBjaGFuZ2UgdGhhdAorICogY2Fubm90 IGJlIGNvbnNpZGVyZWQgY29tcGxldGUgdW50aWwgYWxsIGJhY2tlbmRzIGhhdmUgdGFrZW4g bm90aWNlIG9mCisgKiBpdC4gRm9yIHN1Y2ggdXNlIGNhc2VzLCB3ZSBzZXQgYSBiaXQgaW4g cHNzX2JhcnJpZXJDaGVja01hc2sgYW5kIHRoZW4KICAqIGluY3JlbWVudCB0aGUgY3VycmVu dCAiYmFycmllciBnZW5lcmF0aW9uIjsgd2hlbiB0aGUgbmV3IGJhcnJpZXIgZ2VuZXJhdGlv bgogICogKG9yIGdyZWF0ZXIpIGFwcGVhcnMgaW4gdGhlIHBzc19iYXJyaWVyR2VuZXJhdGlv biBmbGFnIG9mIGV2ZXJ5IHByb2Nlc3MsCiAgKiB3ZSBrbm93IHRoYXQgdGhlIG1lc3NhZ2Ug aGFzIGJlZW4gcmVjZWl2ZWQgZXZlcnl3aGVyZS4KQEAgLTY2LDcgKzYwLDYgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlwZ19hdG9taWNfdWludDMyIHBzc19waWQ7CiAJaW50CQkJcHNzX2NhbmNl bF9rZXlfbGVuOyAvKiAwIG1lYW5zIG5vIGNhbmNlbGxhdGlvbiBpcyBwb3NzaWJsZSAqLwog CXVpbnQ4CQlwc3NfY2FuY2VsX2tleVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOwotCXZvbGF0 aWxlIHNpZ19hdG9taWNfdCBwc3Nfc2lnbmFsRmxhZ3NbTlVNX1BST0NTSUdOQUxTXTsKIAlz bG9ja190CQlwc3NfbXV0ZXg7CQkvKiBwcm90ZWN0cyB0aGUgYWJvdmUgZmllbGRzICovCiAK IAkvKiBCYXJyaWVyLXJlbGF0ZWQgZmllbGRzIChub3QgcHJvdGVjdGVkIGJ5IHBzc19tdXRl eCkgKi8KQEAgLTEwNiw3ICs5OSw2IEBAIHN0cnVjdCBQcm9jU2lnbmFsSGVhZGVyCiBOT05f RVhFQ19TVEFUSUMgUHJvY1NpZ25hbEhlYWRlciAqUHJvY1NpZ25hbCA9IE5VTEw7CiBzdGF0 aWMgUHJvY1NpZ25hbFNsb3QgKk15UHJvY1NpZ25hbFNsb3QgPSBOVUxMOwogCi1zdGF0aWMg Ym9vbCBDaGVja1Byb2NTaWduYWwoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogc3RhdGlj IHZvaWQgQ2xlYW51cFByb2NTaWduYWxTdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpOwog c3RhdGljIHZvaWQgUmVzZXRQcm9jU2lnbmFsQmFycmllckJpdHModWludDMyIGZsYWdzKTsK IApAQCAtMTUxLDcgKzE0Myw2IEBAIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCkKIAkJCVNw aW5Mb2NrSW5pdCgmc2xvdC0+cHNzX211dGV4KTsKIAkJCXBnX2F0b21pY19pbml0X3UzMigm c2xvdC0+cHNzX3BpZCwgMCk7CiAJCQlzbG90LT5wc3NfY2FuY2VsX2tleV9sZW4gPSAwOwot CQkJTWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBzc19z aWduYWxGbGFncykpOwogCQkJcGdfYXRvbWljX2luaXRfdTY0KCZzbG90LT5wc3NfYmFycmll ckdlbmVyYXRpb24sIFBHX1VJTlQ2NF9NQVgpOwogCQkJcGdfYXRvbWljX2luaXRfdTMyKCZz bG90LT5wc3NfYmFycmllckNoZWNrTWFzaywgMCk7CiAJCQlDb25kaXRpb25WYXJpYWJsZUlu aXQoJnNsb3QtPnBzc19iYXJyaWVyQ1YpOwpAQCAtMTgyLDkgKzE3Myw2IEBAIFByb2NTaWdu YWxJbml0KGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4pCiAJ LyogVmFsdWUgdXNlZCBmb3Igc2FuaXR5IGNoZWNrIGJlbG93ICovCiAJb2xkX3Bzc19waWQg PSBwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpOwogCi0JLyogQ2xlYXIgb3V0 IGFueSBsZWZ0b3ZlciBzaWduYWwgcmVhc29ucyAqLwotCU1lbVNldChzbG90LT5wc3Nfc2ln bmFsRmxhZ3MsIDAsIE5VTV9QUk9DU0lHTkFMUyAqIHNpemVvZihzaWdfYXRvbWljX3QpKTsK LQogCS8qCiAJICogSW5pdGlhbGl6ZSBiYXJyaWVyIHN0YXRlLiBTaW5jZSB3ZSdyZSBhIGJy YW5kLW5ldyBwcm9jZXNzLCB0aGVyZQogCSAqIHNob3VsZG4ndCBiZSBhbnkgbGVmdG92ZXIg YmFja2VuZC1wcml2YXRlIHN0YXRlIHRoYXQgbmVlZHMgdG8gYmUKQEAgLTIzMyw5ICsyMjEs MTAgQEAgQ2xlYW51cFByb2NTaWduYWxTdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpCiAJ UHJvY1NpZ25hbFNsb3QgKnNsb3QgPSBNeVByb2NTaWduYWxTbG90OwogCiAJLyoKLQkgKiBD bGVhciBNeVByb2NTaWduYWxTbG90LCBzbyB0aGF0IGEgU0lHVVNSMSByZWNlaXZlZCBhZnRl ciB0aGlzIHBvaW50Ci0JICogd29uJ3QgdHJ5IHRvIGFjY2VzcyBpdCBhZnRlciBpdCdzIG5v IGxvbmdlciBvdXJzIChhbmQgcGVyaGFwcyBldmVuCi0JICogYWZ0ZXIgd2UndmUgdW5tYXBw ZWQgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCkuCisJICogQ2xlYXIgTXlQcm9jU2lnbmFs U2xvdCwgc28gdGhhdCBpZiBJTlRFUlJVUFRfQkFSUklFUiBpcyByZWNlaXZlZCBhZnRlcgor CSAqIHRoaXMgcG9pbnQsIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpIHdvbid0IHRyeSB0 byBhY2Nlc3MgaXQgYWZ0ZXIKKwkgKiBpdCdzIG5vIGxvbmdlciBvdXJzIChhbmQgcGVyaGFw cyBldmVuIGFmdGVyIHdlJ3ZlIHVubWFwcGVkIHRoZSBzaGFyZWQKKwkgKiBtZW1vcnkgc2Vn bWVudCkuCiAJICovCiAJQXNzZXJ0KE15UHJvY1NpZ25hbFNsb3QgIT0gTlVMTCk7CiAJTXlQ cm9jU2lnbmFsU2xvdCA9IE5VTEw7CkBAIC0yNzAsNzMgKzI1OSw2IEBAIENsZWFudXBQcm9j U2lnbmFsU3RhdGUoaW50IHN0YXR1cywgRGF0dW0gYXJnKQogCUNvbmRpdGlvblZhcmlhYmxl QnJvYWRjYXN0KCZzbG90LT5wc3NfYmFycmllckNWKTsKIH0KIAotLyoKLSAqIFNlbmRQcm9j U2lnbmFsCi0gKgkJU2VuZCBhIHNpZ25hbCB0byBhIFBvc3RncmVzIHByb2Nlc3MKLSAqCi0g KiBQcm92aWRpbmcgcHJvY051bWJlciBpcyBvcHRpb25hbCwgYnV0IGl0IHdpbGwgc3BlZWQg dXAgdGhlIG9wZXJhdGlvbi4KLSAqCi0gKiBPbiBzdWNjZXNzIChhIHNpZ25hbCB3YXMgc2Vu dCksIHplcm8gaXMgcmV0dXJuZWQuCi0gKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQsIGFu ZCBlcnJubyBpcyBzZXQgKHR5cGljYWxseSB0byBFU1JDSCBvciBFUEVSTSkuCi0gKgotICog Tm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggUHJvY1NlbmRTaWduYWwKLSAqLwotaW50Ci1TZW5k UHJvY1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLCBQcm9jTnVt YmVyIHByb2NOdW1iZXIpCi17Ci0Jdm9sYXRpbGUgUHJvY1NpZ25hbFNsb3QgKnNsb3Q7Ci0K LQlpZiAocHJvY051bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCXsKLQkJQXNzZXJ0 KHByb2NOdW1iZXIgPCBOdW1Qcm9jU2lnbmFsU2xvdHMpOwotCQlzbG90ID0gJlByb2NTaWdu YWwtPnBzaF9zbG90W3Byb2NOdW1iZXJdOwotCi0JCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+ cHNzX211dGV4KTsKLQkJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCkg PT0gcGlkKQotCQl7Ci0JCQkvKiBBdG9taWNhbGx5IHNldCB0aGUgcHJvcGVyIGZsYWcgKi8K LQkJCXNsb3QtPnBzc19zaWduYWxGbGFnc1tyZWFzb25dID0gdHJ1ZTsKLQkJCVNwaW5Mb2Nr UmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCS8qIFNlbmQgc2lnbmFsICovCi0JCQly ZXR1cm4ga2lsbChwaWQsIFNJR1VTUjEpOwotCQl9Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmc2xv dC0+cHNzX211dGV4KTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogcHJvY051bWJlciBu b3QgcHJvdmlkZWQsIHNvIHNlYXJjaCB0aGUgYXJyYXkgdXNpbmcgcGlkLiAgV2Ugc2VhcmNo Ci0JCSAqIHRoZSBhcnJheSBiYWNrIHRvIGZyb250IHNvIGFzIHRvIHJlZHVjZSBzZWFyY2gg b3ZlcmhlYWQuICBQYXNzaW5nCi0JCSAqIElOVkFMSURfUFJPQ19OVU1CRVIgbWVhbnMgdGhh dCB0aGUgdGFyZ2V0IGlzIG1vc3QgbGlrZWx5IGFuCi0JCSAqIGF1eGlsaWFyeSBwcm9jZXNz LCB3aGljaCB3aWxsIGhhdmUgYSBzbG90IG5lYXIgdGhlIGVuZCBvZiB0aGUKLQkJICogYXJy YXkuCi0JCSAqLwotCQlpbnQJCQlpOwotCi0JCWZvciAoaSA9IE51bVByb2NTaWduYWxTbG90 cyAtIDE7IGkgPj0gMDsgaS0tKQotCQl7Ci0JCQlzbG90ID0gJlByb2NTaWduYWwtPnBzaF9z bG90W2ldOwotCi0JCQlpZiAocGdfYXRvbWljX3JlYWRfdTMyKCZzbG90LT5wc3NfcGlkKSA9 PSBwaWQpCi0JCQl7Ci0JCQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5wc3NfbXV0ZXgpOwot CQkJCWlmIChwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpID09IHBpZCkKLQkJ CQl7Ci0JCQkJCS8qIEF0b21pY2FsbHkgc2V0IHRoZSBwcm9wZXIgZmxhZyAqLwotCQkJCQlz bG90LT5wc3Nfc2lnbmFsRmxhZ3NbcmVhc29uXSA9IHRydWU7Ci0JCQkJCVNwaW5Mb2NrUmVs ZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCQkJLyogU2VuZCBzaWduYWwgKi8KLQkJCQkJ cmV0dXJuIGtpbGwocGlkLCBTSUdVU1IxKTsKLQkJCQl9Ci0JCQkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJfQotCQl9Ci0JfQotCi0JZXJybm8gPSBFU1JDSDsK LQlyZXR1cm4gLTE7Ci19Ci0KIC8qCiAgKiBFbWl0UHJvY1NpZ25hbEJhcnJpZXIKICAqCQlT ZW5kIGEgc2lnbmFsIHRvIGV2ZXJ5IFBvc3RncmVzIHByb2Nlc3MKQEAgLTM4MSw4ICszMDMs OCBAQCBFbWl0UHJvY1NpZ25hbEJhcnJpZXIoUHJvY1NpZ25hbEJhcnJpZXJUeXBlIHR5cGUp CiAJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTY0KCZQcm9jU2lnbmFsLT5wc2hfYmFycmllckdl bmVyYXRpb24sIDEpOwogCiAJLyoKLQkgKiBTaWduYWwgYWxsIHRoZSBwcm9jZXNzZXMsIHNv IHRoYXQgdGhleSB1cGRhdGUgdGhlaXIgYWR2ZXJ0aXNlZCBiYXJyaWVyCi0JICogZ2VuZXJh dGlvbi4KKwkgKiBTZW5kIGFuIGludGVycnVwdCB0byBhbGwgdGhlIHByb2Nlc3Nlcywgc28g dGhhdCB0aGV5IHVwZGF0ZSB0aGVpcgorCSAqIGFkdmVydGlzZWQgYmFycmllciBnZW5lcmF0 aW9uLgogCSAqCiAJICogQ29uY3VycmVuY3kgaXMgbm90IGEgcHJvYmxlbSBoZXJlLiBCYWNr ZW5kcyB0aGF0IGhhdmUgZXhpdGVkIGRvbid0CiAJICogbWF0dGVyLCBhbmQgbmV3IGJhY2tl bmRzIHRoYXQgaGF2ZSBqb2luZWQgc2luY2Ugd2UgZW50ZXJlZCB0aGlzCkBAIC0zOTMsMjUg KzMxNSwxMiBAQCBFbWl0UHJvY1NpZ25hbEJhcnJpZXIoUHJvY1NpZ25hbEJhcnJpZXJUeXBl IHR5cGUpCiAJICogYmFja2VuZHMgdGhhdCBuZWVkIHRvIHVwZGF0ZSBzdGF0ZSAtIGJ1dCB0 aGV5IHdvbid0IGFjdHVhbGx5IG5lZWQgdG8KIAkgKiBjaGFuZ2UgYW55IHN0YXRlLgogCSAq LwotCWZvciAoaW50IGkgPSBOdW1Qcm9jU2lnbmFsU2xvdHMgLSAxOyBpID49IDA7IGktLSkK Kwlmb3IgKFByb2NOdW1iZXIgcGdwcm9jbm8gPSAwOyBwZ3Byb2NubyA8IE51bVByb2NTaWdu YWxTbG90czsgcGdwcm9jbm8rKykKIAl7Ci0JCXZvbGF0aWxlIFByb2NTaWduYWxTbG90ICpz bG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W2ldOwotCQlwaWRfdAkJcGlkID0gcGdfYXRv bWljX3JlYWRfdTMyKCZzbG90LT5wc3NfcGlkKTsKLQotCQlpZiAocGlkICE9IDApCi0JCXsK LQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCXBpZCA9IHBnX2F0 b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCk7Ci0JCQlpZiAocGlkICE9IDApCi0JCQl7 Ci0JCQkJLyogc2VlIFNlbmRQcm9jU2lnbmFsIGZvciBkZXRhaWxzICovCi0JCQkJc2xvdC0+ cHNzX3NpZ25hbEZsYWdzW1BST0NTSUdfQkFSUklFUl0gPSB0cnVlOwotCQkJCVNwaW5Mb2Nr UmVsZWFzZSgmc2xvdC0+cHNzX211dGV4KTsKLQkJCQlraWxsKHBpZCwgU0lHVVNSMSk7Ci0J CQl9Ci0JCQllbHNlCi0JCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwot CQl9CisJCWlmIChwZ3Byb2NubyA9PSBNeVByb2NOdW1iZXIpCisJCQlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfQkFSUklFUik7CisJCWVsc2UKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX0JBUlJJRVIsIHBncHJvY25vKTsKIAl9CiAKIAlyZXR1cm4gZ2VuZXJhdGlvbjsKQEAg LTQ3MSwyMyArMzgwLDYgQEAgV2FpdEZvclByb2NTaWduYWxCYXJyaWVyKHVpbnQ2NCBnZW5l cmF0aW9uKQogCXBnX21lbW9yeV9iYXJyaWVyKCk7CiB9CiAKLS8qCi0gKiBIYW5kbGUgcmVj ZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIGdsb2JhbCBiYXJyaWVyIGV2ZW50 LgotICoKLSAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVmZXJyZWQgdG8gUHJvY2Vzc1By b2NTaWduYWxCYXJyaWVyKCksIGJlY2F1c2Ugd2UKLSAqIGNhbm5vdCBzYWZlbHkgYWNjZXNz IHRoZSBiYXJyaWVyIGdlbmVyYXRpb24gaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlciBhcwot ICogNjRiaXQgYXRvbWljcyBtaWdodCB1c2Ugc3BpbmxvY2sgYmFzZWQgZW11bGF0aW9uLCBl dmVuIGZvciByZWFkcy4gQXMgdGhpcwotICogcm91dGluZSBvbmx5IGdldHMgY2FsbGVkIHdo ZW4gUFJPQ1NJR19CQVJSSUVSIGlzIHNlbnQgdGhhdCB3b24ndCBjYXVzZSBhCi0gKiBsb3Qg b2YgdW5uZWNlc3Nhcnkgd29yay4KLSAqLwotc3RhdGljIHZvaWQKLUhhbmRsZVByb2NTaWdu YWxCYXJyaWVySW50ZXJydXB0KHZvaWQpCi17Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7 Ci0JUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gdHJ1ZTsKLQkvKiBsYXRjaCB3aWxsIGJl IHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwotfQotCiAvKgogICogUGVy Zm9ybSBnbG9iYWwgYmFycmllciByZWxhdGVkIGludGVycnVwdCBjaGVja2luZy4KICAqCkBA IC01MDMsMTIgKzM5NSw4IEBAIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcih2b2lkKQogCXVp bnQ2NAkJc2hhcmVkX2dlbjsKIAl2b2xhdGlsZSB1aW50MzIgZmxhZ3M7CiAKLQlBc3NlcnQo TXlQcm9jU2lnbmFsU2xvdCk7Ci0KLQkvKiBFeGl0IHF1aWNrbHkgaWYgdGhlcmUncyBubyB3 b3JrIHRvIGRvLiAqLwotCWlmICghUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQorCWlmIChN eVByb2NTaWduYWxTbG90ID09IE5VTEwpCiAJCXJldHVybjsKLQlQcm9jU2lnbmFsQmFycmll clBlbmRpbmcgPSBmYWxzZTsKIAogCS8qCiAJICogSXQncyBub3QgdW5saWtlbHkgdG8gcHJv Y2VzcyBtdWx0aXBsZSBiYXJyaWVycyBhdCBvbmNlLCBiZWZvcmUgdGhlCkBAIC02NDAsNjgg KzUyOCw3IEBAIHN0YXRpYyB2b2lkCiBSZXNldFByb2NTaWduYWxCYXJyaWVyQml0cyh1aW50 MzIgZmxhZ3MpCiB7CiAJcGdfYXRvbWljX2ZldGNoX29yX3UzMigmTXlQcm9jU2lnbmFsU2xv dC0+cHNzX2JhcnJpZXJDaGVja01hc2ssIGZsYWdzKTsKLQlQcm9jU2lnbmFsQmFycmllclBl bmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotfQotCi0vKgotICog Q2hlY2tQcm9jU2lnbmFsIC0gY2hlY2sgdG8gc2VlIGlmIGEgcGFydGljdWxhciByZWFzb24g aGFzIGJlZW4KLSAqIHNpZ25hbGVkLCBhbmQgY2xlYXIgdGhlIHNpZ25hbCBmbGFnLiAgU2hv dWxkIGJlIGNhbGxlZCBhZnRlciByZWNlaXZpbmcKLSAqIFNJR1VTUjEuCi0gKi8KLXN0YXRp YyBib29sCi1DaGVja1Byb2NTaWduYWwoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCi17Ci0J dm9sYXRpbGUgUHJvY1NpZ25hbFNsb3QgKnNsb3QgPSBNeVByb2NTaWduYWxTbG90OwotCi0J aWYgKHNsb3QgIT0gTlVMTCkKLQl7Ci0JCS8qCi0JCSAqIENhcmVmdWwgaGVyZSAtLS0gZG9u J3QgY2xlYXIgZmxhZyBpZiB3ZSBoYXZlbid0IHNlZW4gaXQgc2V0LgotCQkgKiBwc3Nfc2ln bmFsRmxhZ3MgaXMgb2YgdHlwZSAidm9sYXRpbGUgc2lnX2F0b21pY190IiB0byBhbGxvdyB1 cyB0bwotCQkgKiByZWFkIGl0IGhlcmUgc2FmZWx5LCB3aXRob3V0IGhvbGRpbmcgdGhlIHNw aW5sb2NrLgotCQkgKi8KLQkJaWYgKHNsb3QtPnBzc19zaWduYWxGbGFnc1tyZWFzb25dKQot CQl7Ci0JCQlzbG90LT5wc3Nfc2lnbmFsRmxhZ3NbcmVhc29uXSA9IGZhbHNlOwotCQkJcmV0 dXJuIHRydWU7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLS8qCi0gKiBwcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAtIGhhbmRsZSBTSUdVU1IxIHNpZ25hbC4KLSAqLwot dm9pZAotcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCi17Ci0JaWYg KENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUKSkKLQkJSGFuZGxl Q2F0Y2h1cEludGVycnVwdCgpOwotCi0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX05P VElGWV9JTlRFUlJVUFQpKQotCQlIYW5kbGVOb3RpZnlJbnRlcnJ1cHQoKTsKLQotCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFKSkKLQkJSGFuZGxlUGFy YWxsZWxNZXNzYWdlSW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NT SUdfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQotCQlIYW5kbGVXYWxTbmRJbml0U3RvcHBpbmco KTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19CQVJSSUVSKSkKLQkJSGFuZGxl UHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQoKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwo UFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQotCQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0 SW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxMRUxf QVBQTFlfTUVTU0FHRSkpCi0JCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0 KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Qp KQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KCk7Ci0KLQlTZXRMYXRjaChN eUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQkFSUklFUik7CiB9CiAKIC8q CkBAIC03NjAsNiArNTg3LDEwIEBAIFNlbmRDYW5jZWxSZXF1ZXN0KGludCBiYWNrZW5kUElE LCBjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKQogCQkJCS8q CiAJCQkJICogSWYgd2UgaGF2ZSBzZXRzaWQoKSwgc2lnbmFsIHRoZSBiYWNrZW5kJ3Mgd2hv bGUgcHJvY2VzcwogCQkJCSAqIGdyb3VwCisJCQkJICoKKwkJCQkgKiBGSVhNRTogY291bGQg d2Ugc2VuZCBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMIGhlcmUgZGlyZWN0bHk/CisJCQkJICog V2UgZG9uJ3QgaGF2ZSBhIFBHUFJPQyBlbnRyeSB5ZXQsIGJ1dCB0aGUgdGFyZ2V0IGJhY2tl bmQKKwkJCQkgKiBwcmVzdW1hYmx5IGRvZXMuCiAJCQkJICovCiAjaWZkZWYgSEFWRV9TRVRT SUQKIAkJCQlraWxsKC1iYWNrZW5kUElELCBTSUdJTlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1fbXEuYwppbmRleCAzY2U2MDY4YWM1NC4uYWI5OTUwOTMxNDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobV9tcS5jCkBAIC00LDcgKzQsNyBAQAogICoJICBzaW5nbGUtcmVhZGVyLCBz aW5nbGUtd3JpdGVyIHNoYXJlZCBtZW1vcnkgbWVzc2FnZSBxdWV1ZQogICoKICAqIEJvdGgg dGhlIHNlbmRlciBhbmQgdGhlIHJlY2VpdmVyIG11c3QgaGF2ZSBhIFBHUFJPQzsgdGhlaXIg cmVzcGVjdGl2ZQotICogcHJvY2VzcyBsYXRjaGVzIGFyZSB1c2VkIGZvciBzeW5jaHJvbml6 YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCisgKiBwcm9jZXNzIGludGVycnVw dHMgYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlIHNlbmRlciBtYXkg c2VuZCwKICAqIGFuZCBvbmx5IHRoZSByZWNlaXZlciBtYXkgcmVjZWl2ZS4gIFRoaXMgaXMg aW50ZW5kZWQgdG8gYWxsb3cgYSB1c2VyCiAgKiBiYWNrZW5kIHRvIGNvbW11bmljYXRlIHdp dGggd29ya2VyIGJhY2tlbmRzIHRoYXQgaXQgaGFzIHJlZ2lzdGVyZWQuCiAgKgpAQCAtMTgs NiArMTgsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImlwYy9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCkBAIC00NCwxMCArNDUsMTEgQEAK ICAqCiAgKiBtcV9kZXRhY2hlZCBuZWVkcyBubyBsb2NraW5nLiAgSXQgY2FuIGJlIHNldCBi eSBlaXRoZXIgdGhlIHNlbmRlciBvciB0aGUKICAqIHJlY2VpdmVyLCBidXQgb25seSBldmVy IGZyb20gZmFsc2UgdG8gdHJ1ZSwgc28gcmVkdW5kYW50IHdyaXRlcyBkb24ndAotICogbWF0 dGVyLiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0 aGVuIHNldCB0aGUKLSAqIGNvdW50ZXJwYXJ0eSdzIGxhdGNoLCB0aGUgY291bnRlcnBhcnR5 IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlIGNoYW5nZQotICogYWZ0ZXIgd2FraW5nIHVw LiAgU2luY2UgU2V0TGF0Y2ggYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFycmllciBhbmQgUmVz ZXRMYXRjaAotICogZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91bGQgYmUgT0suCisgKiBtYXR0 ZXIuICBJdCBpcyBpbXBvcnRhbnQgdGhhdCBpZiB3ZSBzZXQgbXFfZGV0YWNoZWQgYW5kIHRo ZW4gc2VuZCB0aGUKKyAqIGludGVycnVwdCB0byB0aGUgY291bnRlcnBhcnR5LCB0aGUgY291 bnRlcnBhcnR5IG11c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlCisgKiBjaGFuZ2UgYWZ0ZXIg d2FraW5nIHVwLiAgU2luY2UgU2VuZEludGVycnVwdCBiZWdpbnMgd2l0aCBhIG1lbW9yeSBi YXJyaWVyCisgKiBhbmQgQ2xlYXJJbnRlcnJ1cHQgZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91 bGQgYmUgT0suCisgKiBYWFg6IE5vIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycyBpbiBTZW5k SW50ZXJydXB0L0NsZWFySW50ZXJydXB0LCBkbyB3ZSBuZWVkIHRvIGFkZCBzb21lPwogICoK ICAqIG1xX3Jpbmdfc2l6ZSBhbmQgbXFfcmluZ19vZmZzZXQgbmV2ZXIgY2hhbmdlIGFmdGVy IGluaXRpYWxpemF0aW9uLCBhbmQKICAqIGNhbiB0aGVyZWZvcmUgYmUgcmVhZCB3aXRob3V0 IHRoZSBsb2NrLgpAQCAtMTEyLDcgKzExNCw3IEBAIHN0cnVjdCBzaG1fbXEKICAqIHlldCB1 cGRhdGVkIGluIHRoZSBzaGFyZWQgbWVtb3J5LiAgV2Ugd2lsbCBub3QgdXBkYXRlIGl0IHVu dGlsIHRoZSB3cml0dGVuCiAgKiBkYXRhIGlzIDEvNHRoIG9mIHRoZSByaW5nIHNpemUgb3Ig dGhlIHR1cGxlIHF1ZXVlIGlzIGZ1bGwuICBUaGlzIHdpbGwKICAqIHByZXZlbnQgZnJlcXVl bnQgQ1BVIGNhY2hlIG1pc3NlcywgYW5kIGl0IHdpbGwgYWxzbyBhdm9pZCBmcmVxdWVudAot ICogU2V0TGF0Y2goKSBjYWxscywgd2hpY2ggYXJlIHF1aXRlIGV4cGVuc2l2ZS4KKyAqIFNl bmRJbnRlcnJ1cHQoKSBjYWxscywgd2hpY2ggYXJlIHF1aXRlIGV4cGVuc2l2ZS4KICAqCiAg KiBtcWhfcGFydGlhbF9ieXRlcywgbXFoX2V4cGVjdGVkX2J5dGVzLCBhbmQgbXFoX2xlbmd0 aF93b3JkX2NvbXBsZXRlCiAgKiBhcmUgdXNlZCB0byB0cmFjayB0aGUgc3RhdGUgb2Ygbm9u LWJsb2NraW5nIG9wZXJhdGlvbnMuICBXaGVuIHRoZSBjYWxsZXIKQEAgLTIxNCw3ICsyMTYs NyBAQCBzaG1fbXFfc2V0X3JlY2VpdmVyKHNobV9tcSAqbXEsIFBHUFJPQyAqcHJvYykKIAlT cGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAoc2VuZGVyICE9IE5VTEwp Ci0JCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5U RVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHNlbmRlcikpOwogfQog CiAvKgpAQCAtMjMyLDcgKzIzNCw3IEBAIHNobV9tcV9zZXRfc2VuZGVyKHNobV9tcSAqbXEs IFBHUFJPQyAqcHJvYykKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlp ZiAocmVjZWl2ZXIgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnJlY2VpdmVyLT5wcm9jTGF0Y2gp OworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJv bVBHUHJvYyhyZWNlaXZlcikpOwogfQogCiAvKgpAQCAtMzQxLDE2ICszNDMsMTUgQEAgc2ht X21xX3NlbmQoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAq ZGF0YSwgYm9vbCBub3dhaXQsCiAgKiBXcml0ZSBhIG1lc3NhZ2UgaW50byBhIHNoYXJlZCBt ZXNzYWdlIHF1ZXVlLCBnYXRoZXJlZCBmcm9tIG11bHRpcGxlCiAgKiBhZGRyZXNzZXMuCiAg KgotICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIgcHJvY2VzcyBs YXRjaCB3aGVuIHRoZSByaW5nIGJ1ZmZlcgotICogZmlsbHMgdXAsIGFuZCB0aGVuIGNvbnRp bnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIgaGFzIGRyYWluZWQgc29tZSBkYXRhLgot ICogVGhlIHByb2Nlc3MgbGF0Y2ggaXMgcmVzZXQgYWZ0ZXIgZWFjaCB3YWl0LgorICogV2hl biBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCB3aGVuIHRoZSByaW5nIGJ1ZmZlciBmaWxs cyB1cCwgYW5kIHRoZW4KKyAqIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIg aGFzIGRyYWluZWQgc29tZSBkYXRhLgogICoKLSAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2Ug ZG8gbm90IG1hbmlwdWxhdGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGxhdGNoOwotICog aW5zdGVhZCwgaWYgdGhlIGJ1ZmZlciBiZWNvbWVzIGZ1bGwsIHdlIHJldHVybiBTSE1fTVFf V09VTERfQkxPQ0suICBJbgotICogdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBjYWxs IHRoaXMgZnVuY3Rpb24gYWdhaW4sIHdpdGggdGhlIHNhbWUKLSAqIGFyZ3VtZW50cywgZWFj aCB0aW1lIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldC4gIChPbmNlIGJlZ3VuLCB0aGUgc2Vu ZGluZwotICogb2YgYSBtZXNzYWdlIGNhbm5vdCBiZSBhYm9ydGVkIGV4Y2VwdCBieSBkZXRh Y2hpbmcgZnJvbSB0aGUgcXVldWU7IGNoYW5naW5nCi0gKiB0aGUgbGVuZ3RoIG9yIHBheWxv YWQgd2lsbCBjb3JydXB0IHRoZSBxdWV1ZS4pCisgKiBXaGVuIG5vd2FpdCA9IHRydWUsIGlm IHRoZSBidWZmZXIgYmVjb21lcyBmdWxsLCB3ZSByZXR1cm4KKyAqIFNITV9NUV9XT1VMRF9C TE9DSy4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0 aW9uCisgKiBhZ2Fpbiwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMsIGVhY2ggdGltZSB0aGUg SU5URVJSVVBUX1dBSVRfV0FLRVVQCisgKiBpbnRlcnJ1cHQgaXMgc2V0LiAgKE9uY2UgYmVn dW4sIHRoZSBzZW5kaW5nIG9mIGEgbWVzc2FnZSBjYW5ub3QgYmUgYWJvcnRlZAorICogZXhj ZXB0IGJ5IGRldGFjaGluZyBmcm9tIHRoZSBxdWV1ZTsgY2hhbmdpbmcgdGhlIGxlbmd0aCBv ciBwYXlsb2FkIHdpbGwKKyAqIGNvcnJ1cHQgdGhlIHF1ZXVlLikKICAqCiAgKiBXaGVuIGZv cmNlX2ZsdXNoID0gdHJ1ZSwgd2UgaW1tZWRpYXRlbHkgdXBkYXRlIHRoZSBzaG1fbXEncyBt cV9ieXRlc193cml0dGVuCiAgKiBhbmQgbm90aWZ5IHRoZSByZWNlaXZlciAoaWYgaXQgaXMg YWxyZWFkeSBhdHRhY2hlZCkuICBPdGhlcndpc2UsIHdlIGRvbid0CkBAIC01MzksNyArNTQw LDcgQEAgc2htX21xX3NlbmR2KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21xX2lvdmVjICpp b3YsIGludCBpb3ZjbnQsIGJvb2wgbm93YWl0LAogCXsKIAkJc2htX21xX2luY19ieXRlc193 cml0dGVuKG1xLCBtcWgtPm1xaF9zZW5kX3BlbmRpbmcpOwogCQlpZiAocmVjZWl2ZXIgIT0g TlVMTCkKLQkJCVNldExhdGNoKCZyZWNlaXZlci0+cHJvY0xhdGNoKTsKKwkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJlY2Vp dmVyKSk7CiAJCW1xaC0+bXFoX3NlbmRfcGVuZGluZyA9IDA7CiAJfQogCkBAIC01NTcsMTYg KzU1OCwxNSBAQCBzaG1fbXFfc2VuZHYoc2htX21xX2hhbmRsZSAqbXFoLCBzaG1fbXFfaW92 ZWMgKmlvdiwgaW50IGlvdmNudCwgYm9vbCBub3dhaXQsCiAgKiB3aGlsZSBzdGlsbCBhbGxv d2luZyBsb25nZXIgbWVzc2FnZXMuICBJbiBlaXRoZXIgY2FzZSwgdGhlIHJldHVybiB2YWx1 ZQogICogcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgbmV4dCByZWNlaXZlIG9wZXJhdGlvbiBp cyBwZXJmb3JtZWQgb24gdGhlIHF1ZXVlLgogICoKLSAqIFdoZW4gbm93YWl0ID0gZmFsc2Us IHdlJ2xsIHdhaXQgb24gb3VyIHByb2Nlc3MgbGF0Y2ggd2hlbiB0aGUgcmluZyBidWZmZXIK LSAqIGlzIGVtcHR5IGFuZCB3ZSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3Nh Z2UuICBUaGUgc2VuZGVyIHdpbGwKLSAqIHNldCBvdXIgcHJvY2VzcyBsYXRjaCBhZnRlciBt b3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdlJ2xsIHJlc3VtZQotICogcHJvY2Vz c2luZy4gIEVhY2ggY2FsbCB3aWxsIHRoZXJlZm9yZSByZXR1cm4gYSBjb21wbGV0ZSBtZXNz YWdlCi0gKiAodW5sZXNzIHRoZSBzZW5kZXIgZGV0YWNoZXMgdGhlIHF1ZXVlKS4KKyAqIFdo ZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdoZW4gdGhlIHJpbmcgYnVmZmVyIGlzIGVtcHR5 IGFuZCB3ZSBoYXZlIG5vdAorICogeWV0IHJlY2VpdmVkIGEgZnVsbCBtZXNzYWdlLiAgVGhl IHNlbmRlciB3aWxsIHNlbmQgdXMgSU5URVJSVVBUX1dBSVRfV0FLRVVQCisgKiBhZnRlciBt b3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdlJ2xsIHJlc3VtZSBwcm9jZXNzaW5n LiAgRWFjaCBjYWxsCisgKiB3aWxsIHRoZXJlZm9yZSByZXR1cm4gYSBjb21wbGV0ZSBtZXNz YWdlICh1bmxlc3MgdGhlIHNlbmRlciBkZXRhY2hlcyB0aGUKKyAqIHF1ZXVlKS4KICAqCi0g KiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBv ZiB0aGUgcHJvY2VzcyBsYXRjaDsKLSAqIGluc3RlYWQsIHdoZW5ldmVyIHRoZSBidWZmZXIg aXMgZW1wdHkgYW5kIHdlIG5lZWQgdG8gcmVhZCBmcm9tIGl0LCB3ZQotICogcmV0dXJuIFNI TV9NUV9XT1VMRF9CTE9DSy4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2Fs bCB0aGlzCi0gKiBmdW5jdGlvbiBhZ2FpbiBhZnRlciB0aGUgcHJvY2VzcyBsYXRjaCBoYXMg YmVlbiBzZXQuCisgKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCB3YWl0IHdoZW4g dGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgcmV0dXJuCisgKiBTSE1fTVFfV09VTERfQkxPQ0sg aW5zdGVhZC4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2FsbCB0aGlzCisg KiBmdW5jdGlvbiBhZ2FpbiBhZnRlciBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgaGFzIGJlZW4g c2V0LgogICovCiBzaG1fbXFfcmVzdWx0CiBzaG1fbXFfcmVjZWl2ZShzaG1fbXFfaGFuZGxl ICptcWgsIFNpemUgKm5ieXRlc3AsIHZvaWQgKipkYXRhcCwgYm9vbCBub3dhaXQpCkBAIC02 MTksOCArNjE5LDggQEAgc2htX21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXpl ICpuYnl0ZXNwLCB2b2lkICoqZGF0YXAsIGJvb2wgbm93YWl0KQogCSAqIElmIHdlJ3ZlIGNv bnN1bWVkIGFuIGFtb3VudCBvZiBkYXRhIGdyZWF0ZXIgdGhhbiAxLzR0aCBvZiB0aGUgcmlu ZwogCSAqIHNpemUsIG1hcmsgaXQgY29uc3VtZWQgaW4gc2hhcmVkIG1lbW9yeS4gIFdlIHRy eSB0byBhdm9pZCBkb2luZyB0aGlzCiAJICogdW5uZWNlc3NhcmlseSB3aGVuIG9ubHkgYSBz bWFsbCBhbW91bnQgb2YgZGF0YSBoYXMgYmVlbiBjb25zdW1lZCwKLQkgKiBiZWNhdXNlIFNl dExhdGNoKCkgaXMgZmFpcmx5IGV4cGVuc2l2ZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkbyBp dCB0b28KLQkgKiBvZnRlbi4KKwkgKiBiZWNhdXNlIFNlbmRJbnRlcnJ1cHQoKSBpcyBmYWly bHkgZXhwZW5zaXZlIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRvIGl0CisJICogdG9vIG9mdGVu LgogCSAqLwogCWlmIChtcWgtPm1xaF9jb25zdW1lX3BlbmRpbmcgPiBtcS0+bXFfcmluZ19z aXplIC8gNCkKIAl7CkBAIC04OTUsNyArODk1LDcgQEAgc2htX21xX2RldGFjaF9pbnRlcm5h bChzaG1fbXEgKm1xKQogCVNwaW5Mb2NrUmVsZWFzZSgmbXEtPm1xX211dGV4KTsKIAogCWlm ICh2aWN0aW0gIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnZpY3RpbS0+cHJvY0xhdGNoKTsKKwkJ U2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21QR1By b2ModmljdGltKSk7CiB9CiAKIC8qCkBAIC05OTMsNyArOTkzLDcgQEAgc2htX21xX3NlbmRf Ynl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0 YSwKIAkJCSAqIFRoZXJlZm9yZSwgd2UgY2FuIHJlYWQgaXQgd2l0aG91dCBhY3F1aXJpbmcg dGhlIHNwaW5sb2NrLgogCQkJICovCiAJCQlBc3NlcnQobXFoLT5tcWhfY291bnRlcnBhcnR5 X2F0dGFjaGVkKTsKLQkJCVNldExhdGNoKCZtcS0+bXFfcmVjZWl2ZXItPnByb2NMYXRjaCk7 CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJv bVBHUHJvYyhtcS0+bXFfcmVjZWl2ZXIpKTsKIAogCQkJLyoKIAkJCSAqIFdlIGhhdmUganVz dCB1cGRhdGVkIHRoZSBtcWhfc2VuZF9wZW5kaW5nIGJ5dGVzIGluIHRoZSBzaGFyZWQKQEAg LTEwMDEsNyArMTAwMSw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1x aCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQkgKi8KIAkJCW1xaC0+bXFo X3NlbmRfcGVuZGluZyA9IDA7CiAKLQkJCS8qIFNraXAgbWFuaXB1bGF0aW9uIG9mIG91ciBs YXRjaCBpZiBub3dhaXQgPSB0cnVlLiAqLworCQkJLyogU2tpcCB3YWl0aW5nIGlmIG5vd2Fp dCA9IHRydWUuICovCiAJCQlpZiAobm93YWl0KQogCQkJewogCQkJCSpieXRlc193cml0dGVu ID0gc2VudDsKQEAgLTEwMDksMTcgKzEwMDksMTggQEAgc2htX21xX3NlbmRfYnl0ZXMoc2ht X21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAkJCX0K IAogCQkJLyoKLQkJCSAqIFdhaXQgZm9yIG91ciBsYXRjaCB0byBiZSBzZXQuICBJdCBtaWdo dCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQorCQkJICogV2FpdCBmb3IgdGhlIGludGVycnVw dC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21lCiAJCQkgKiB1bnJlbGF0ZWQg cmVhc29uLCBidXQgdGhhdCdsbCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcAotCQkJ ICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgcmVzZXR0aW5n IHRoZSBsYXRjaAotCQkJICogYXQgdG9wIG9mIGxvb3AsIGJlY2F1c2Ugc2V0dGluZyBhbiBh bHJlYWR5LXNldCBsYXRjaCBpcyBtdWNoCi0JCQkgKiBjaGVhcGVyIHRoYW4gc2V0dGluZyBv bmUgdGhhdCBoYXMgYmVlbiByZXNldC4KKwkJCSAqIHRocm91Z2ggdGhlIGxvb3AuICBJdCdz IHdvcnRoIGl0IHRvIGF2b2lkIGNsZWFyaW5nIHRoZQorCQkJICogaW50ZXJydXB0IGF0IHRv cCBvZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQKKwkJCSAqIGludGVy cnVwdCBpcyBtdWNoIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIHJl c2V0LgogCQkJICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NF VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FH RV9RVUVVRV9TRU5EKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJy dXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJV UFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9NRVNT QUdFX1FVRVVFX1NFTkQpOwogCi0JCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qg c3Bpbi4gKi8KLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkvKiBDbGVhciB0aGUgaW50 ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVApOwogCiAJCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJy ZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKQEAgLTEwNTQsNyArMTA1NSw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5k bGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAKIAkJCS8qCiAJCQkg KiBGb3IgZWZmaWNpZW5jeSwgd2UgZG9uJ3QgdXBkYXRlIHRoZSBieXRlcyB3cml0dGVuIGlu IHRoZSBzaGFyZWQKLQkJCSAqIG1lbW9yeSBhbmQgYWxzbyBkb24ndCBzZXQgdGhlIHJlYWRl cidzIGxhdGNoIGhlcmUuICBSZWZlciB0bworCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0 IHNlbmQgdGhlIHJlYWRlciBpbnRlcnJ1cHQgaGVyZS4gIFJlZmVyIHRvCiAJCQkgKiB0aGUg Y29tbWVudHMgYXRvcCB0aGUgc2htX21xX2hhbmRsZSBzdHJ1Y3R1cmUgZm9yIG1vcmUKIAkJ CSAqIGluZm9ybWF0aW9uLgogCQkJICovCkBAIC0xMTUwLDI1ICsxMTUxLDI5IEBAIHNobV9t cV9yZWNlaXZlX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBieXRlc19uZWVkZWQs IGJvb2wgbm93YWl0LAogCQkJbXFoLT5tcWhfY29uc3VtZV9wZW5kaW5nID0gMDsKIAkJfQog Ci0JCS8qIFNraXAgbWFuaXB1bGF0aW9uIG9mIG91ciBsYXRjaCBpZiBub3dhaXQgPSB0cnVl LiAqLworCQkvKiBTa2lwIHdhaXRpbmcgaWYgbm93YWl0ID0gdHJ1ZS4gKi8KIAkJaWYgKG5v d2FpdCkKIAkJCXJldHVybiBTSE1fTVFfV09VTERfQkxPQ0s7CiAKIAkJLyoKLQkJICogV2Fp dCBmb3Igb3VyIGxhdGNoIHRvIGJlIHNldC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZv ciBzb21lCisJCSAqIFdhaXQgZm9yIHRoZSBpbnRlcnJ1cHQgdG8gYmUgc2V0LiAgSXQgbWln aHQgYWxyZWFkeSBiZSBzZXQgZm9yIHNvbWUKIAkJICogdW5yZWxhdGVkIHJlYXNvbiwgYnV0 IHRoYXQnbGwganVzdCByZXN1bHQgaW4gb25lIGV4dHJhIHRyaXAgdGhyb3VnaAotCQkgKiB0 aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBsYXRjaCBh dCB0b3Agb2YKLQkJICogbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGxh dGNoIGlzIG11Y2ggY2hlYXBlciB0aGFuCi0JCSAqIHNldHRpbmcgb25lIHRoYXQgaGFzIGJl ZW4gcmVzZXQuCisJCSAqIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCBjbGVh cmluZyB0aGUgaW50ZXJydXB0IGF0IHRvcCBvZgorCQkgKiBsb29wLCBiZWNhdXNlIHNldHRp bmcgYW4gYWxyZWFkeS1zZXQgaW50ZXJydXB0IGlzIG11Y2ggY2hlYXBlciB0aGFuCisJCSAq IHNldHRpbmcgb25lIHRoYXQgaGFzIGJlZW4gY2xlYXJlZC4KIAkJICovCi0JCSh2b2lkKSBX YWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKLQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUkVDRUlWRSk7CisJCSh2b2lk KSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJ VF9XQUtFVVAsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKIAotCQkv KiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChN eUxhdGNoKTsKLQotCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUg d2Ugd2VyZSB3YWl0aW5nLiAqLworCQkvKgorCQkgKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJy dXB0cyB0aGF0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUKKwkJICogd2FpdGlu Zy4KKwkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogQ2xlYXIgdGhl IGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfV0FJVF9XQUtFVVApOwogCX0KIH0KIApAQCAtMTI1MCwxNCArMTI1NSwxOCBAQCBz aG1fbXFfd2FpdF9pbnRlcm5hbChzaG1fbXEgKm1xLCBQR1BST0MgKipwdHIsIEJhY2tncm91 bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKIAkJfQogCiAJCS8qIFdhaXQgdG8gYmUgc2lnbmFs ZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVf SU5URVJOQUwpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNN YXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVF VUVfSU5URVJOQUwpOwogCi0JCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGlu LiAqLwotCQlSZXNldExhdGNoKE15TGF0Y2gpOwotCi0JCS8qIEFuIGludGVycnVwdCBtYXkg aGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCS8qCisJCSAqIEhh bmRsZSBzdGFuZGFyZCBpbnRlcnJ1cHRzIHRoYXQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUg d2Ugd2VyZQorCQkgKiB3YWl0aW5nLgorCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKKworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJfQogCiAJcmV0dXJu IHJlc3VsdDsKQEAgLTEyOTMsNyArMTMwMiw3IEBAIHNobV9tcV9pbmNfYnl0ZXNfcmVhZChz aG1fbXEgKm1xLCBTaXplIG4pCiAJICovCiAJc2VuZGVyID0gbXEtPm1xX3NlbmRlcjsKIAlB c3NlcnQoc2VuZGVyICE9IE5VTEwpOwotCVNldExhdGNoKCZzZW5kZXItPnByb2NMYXRjaCk7 CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAsIEdldE51bWJlckZyb21Q R1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaWduYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFs ZnVuY3MuYwppbmRleCBkNDhiNGZlMzc5OS4uYWFlZWJjYTZjOTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUg PHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dnZXIuaCIKQEAgLTQxLDYg KzQyLDkgQEAKICAqIEluIHRoZSBldmVudCBvZiBhIGdlbmVyYWwgZmFpbHVyZSAocmV0dXJu IGNvZGUgMSksIGEgd2FybmluZyBtZXNzYWdlIHdpbGwKICAqIGJlIGVtaXR0ZWQuIEZvciBw ZXJtaXNzaW9uIGVycm9ycywgZG9pbmcgdGhhdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YK ICAqIHRoZSBjYWxsZXIuCisgKgorICogVE9ETzogVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHRv IHNlbmQgYW4gaW50ZXJydXB0IGRpcmVjdGx5IG5vdy4gQnV0IHNlbmRpbmcKKyAqIGEgU0lH VEVSTSBvciBTSUdJTlQgc3RpbGwgd29ya3MgdG9vLgogICovCiAjZGVmaW5lIFNJR05BTF9C QUNLRU5EX1NVQ0NFU1MgMAogI2RlZmluZSBTSUdOQUxfQkFDS0VORF9FUlJPUiAxCkBAIC0y MDEsMTIgKzIwNSwxMiBAQCBwZ193YWl0X3VudGlsX3Rlcm1pbmF0aW9uKGludCBwaWQsIGlu dDY0IHRpbWVvdXQpCiAJCS8qIFByb2Nlc3MgaW50ZXJydXB0cywgaWYgYW55LCBiZWZvcmUg d2FpdGluZyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCSh2b2lkKSBXYWl0 TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSB3YWl0dGltZSwKLQkJCQkJCSBXQUlUX0VWRU5U X0JBQ0tFTkRfVEVSTUlOQVRJT04pOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zv ckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dBSVRfV0FLRVVQLAorCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkg d2FpdHRpbWUsCisJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS0VORF9URVJNSU5BVElPTik7CiAK LQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dB SVRfV0FLRVVQKTsKIAogCQlyZW1haW5pbmd0aW1lIC09IHdhaXR0aW1lOwogCX0gd2hpbGUg KHJlbWFpbmluZ3RpbWUgPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NpbnZhbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKaW5kZXgg NTU1OWY3YzFjZmEuLmRjYWJkMjU5NTZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaW52YWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwu YwpAQCAtMTUsMzAgKzE1LDEzIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAKLQog dWludDY0CQlTaGFyZWRJbnZhbGlkTWVzc2FnZUNvdW50ZXI7CiAKLQotLyoKLSAqIEJlY2F1 c2UgYmFja2VuZHMgc2l0dGluZyBpZGxlIHdpbGwgbm90IGJlIHJlYWRpbmcgc2ludmFsIGV2 ZW50cywgd2UKLSAqIG5lZWQgYSB3YXkgdG8gZ2l2ZSBhbiBpZGxlIGJhY2tlbmQgYSBzd2lm dCBraWNrIGluIHRoZSByZWFyIGFuZCBtYWtlCi0gKiBpdCBjYXRjaCB1cCBiZWZvcmUgdGhl IHNpbnZhbCBxdWV1ZSBvdmVyZmxvd3MgYW5kIGZvcmNlcyBpdCB0byBnbwotICogdGhyb3Vn aCBhIGNhY2hlIHJlc2V0IGV4ZXJjaXNlLiAgVGhpcyBpcyBkb25lIGJ5IHNlbmRpbmcKLSAq IFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQgdG8gYW55IGJhY2tlbmQgdGhhdCBnZXRzIHRv byBmYXIgYmVoaW5kLgotICoKLSAqIFRoZSBzaWduYWwgaGFuZGxlciB3aWxsIHNldCBhbiBp bnRlcnJ1cHQgcGVuZGluZyBmbGFnIGFuZCB3aWxsIHNldCB0aGUKLSAqIHByb2Nlc3NlcyBs YXRjaC4gV2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGllbnQsIG9yIHdo ZW4KLSAqIGludGVycnVwdGVkIHdoaWxlIGRvaW5nIHNvLCBQcm9jZXNzQ2xpZW50UmVhZElu dGVycnVwdCgpIHdpbGwgY2FsbAotICogUHJvY2Vzc0NhdGNodXBFdmVudCgpLgotICovCi12 b2xhdGlsZSBzaWdfYXRvbWljX3QgY2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsK LQotCiAvKgogICogU2VuZFNoYXJlZEludmFsaWRNZXNzYWdlcwogICoJQWRkIHNoYXJlZC1j YWNoZS1pbnZhbGlkYXRpb24gbWVzc2FnZShzKSB0byB0aGUgZ2xvYmFsIFNJIG1lc3NhZ2Ug cXVldWUuCkBAIC0xMzIsMzggKzExNSwxMyBAQCBSZWNlaXZlU2hhcmVkSW52YWxpZE1lc3Nh Z2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAq bQogCSAqIGNhdGNodXAgc2lnbmFsIHRoaXMgd2F5IGF2b2lkcyBjcmVhdGluZyBzcGlrZXMg aW4gc3lzdGVtIGxvYWQgZm9yIHdoYXQKIAkgKiBzaG91bGQgYmUganVzdCBhIGJhY2tncm91 bmQgbWFpbnRlbmFuY2UgYWN0aXZpdHkuCiAJICovCi0JaWYgKGNhdGNodXBJbnRlcnJ1cHRQ ZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hV UCkpCiAJewotCQljYXRjaHVwSW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwogCQllbG9nKERF QlVHNCwgInNpbnZhbCBjYXRjaHVwIGNvbXBsZXRlLCBjbGVhbmluZyBxdWV1ZSIpOwogCQlT SUNsZWFudXBRdWV1ZShmYWxzZSwgMCk7CiAJfQogfQogCi0KLS8qCi0gKiBIYW5kbGVDYXRj aHVwSW50ZXJydXB0Ci0gKgotICogVGhpcyBpcyBjYWxsZWQgd2hlbiBQUk9DU0lHX0NBVENI VVBfSU5URVJSVVBUIGlzIHJlY2VpdmVkLgotICoKLSAqIFdlIHVzZWQgdG8gZGlyZWN0bHkg Y2FsbCBQcm9jZXNzQ2F0Y2h1cEV2ZW50IGRpcmVjdGx5IHdoZW4gaWRsZS4gVGhlc2UgZGF5 cwotICogd2UganVzdCBzZXQgYSBmbGFnIHRvIGRvIGl0IGxhdGVyIGFuZCBub3RpZnkgdGhl IHByb2Nlc3Mgb2YgdGhhdCBmYWN0IGJ5Ci0gKiBzZXR0aW5nIHRoZSBwcm9jZXNzJ3MgbGF0 Y2guCi0gKi8KLXZvaWQKLUhhbmRsZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKLXsKLQkvKgot CSAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIGJ5IGEgU0lHTkFMIEhBTkRMRVIuIFlvdSBtdXN0 IGJlIHZlcnkgd2FyeSB3aGF0Ci0JICogeW91IGRvIGhlcmUuCi0JICovCi0KLQljYXRjaHVw SW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0KLQkvKiBtYWtlIHN1cmUgdGhlIGV2ZW50IGlz IHByb2Nlc3NlZCBpbiBkdWUgY291cnNlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7Ci19Ci0K IC8qCiAgKiBQcm9jZXNzQ2F0Y2h1cEludGVycnVwdAogICoKQEAgLTE3MywxNSArMTMxLDE1 IEBAIEhhbmRsZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKIHZvaWQKIFByb2Nlc3NDYXRjaHVw SW50ZXJydXB0KHZvaWQpCiB7Ci0Jd2hpbGUgKGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nKQor CWRvCiAJewogCQkvKgogCQkgKiBXaGF0IHdlIG5lZWQgdG8gZG8gaGVyZSBpcyBjYXVzZSBS ZWNlaXZlU2hhcmVkSW52YWxpZE1lc3NhZ2VzKCkgdG8KLQkJICogcnVuLCB3aGljaCB3aWxs IGRvIHRoZSBuZWNlc3Nhcnkgd29yayBhbmQgYWxzbyByZXNldCB0aGUKLQkJICogY2F0Y2h1 cEludGVycnVwdFBlbmRpbmcgZmxhZy4gIElmIHdlIGFyZSBpbnNpZGUgYSB0cmFuc2FjdGlv biB3ZQotCQkgKiBjYW4ganVzdCBjYWxsIEFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCkg dG8gZG8gdGhpcy4gIElmIHdlCi0JCSAqIGFyZW4ndCwgd2Ugc3RhcnQgYW5kIGltbWVkaWF0 ZWx5IGVuZCBhIHRyYW5zYWN0aW9uOyB0aGUgY2FsbCB0bwotCQkgKiBBY2NlcHRJbnZhbGlk YXRpb25NZXNzYWdlcygpIGhhcHBlbnMgZG93biBpbnNpZGUgdHJhbnNhY3Rpb24gc3RhcnQu CisJCSAqIHJ1biwgd2hpY2ggd2lsbCBkbyB0aGUgbmVjZXNzYXJ5IHdvcmsuICBJZiB3ZSBh cmUgaW5zaWRlIGEKKwkJICogdHJhbnNhY3Rpb24gd2UgY2FuIGp1c3QgY2FsbCBBY2NlcHRJ bnZhbGlkYXRpb25NZXNzYWdlcygpIHRvIGRvCisJCSAqIHRoaXMuICBJZiB3ZSBhcmVuJ3Qs IHdlIHN0YXJ0IGFuZCBpbW1lZGlhdGVseSBlbmQgYSB0cmFuc2FjdGlvbjsKKwkJICogdGhl IGNhbGwgdG8gQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBoYXBwZW5zIGRvd24gaW5z aWRlCisJCSAqIHRyYW5zYWN0aW9uIHN0YXJ0LgogCQkgKgogCQkgKiBJdCBpcyBhd2Z1bGx5 IHRlbXB0aW5nIHRvIGp1c3QgY2FsbCBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpCiAJ CSAqIHdpdGhvdXQgdGhlIHJlc3Qgb2YgdGhlIHhhY3Qgc3RhcnQvc3RvcCBvdmVyaGVhZCwg YW5kIEkgdGhpbmsgdGhhdApAQCAtMTkwLDE0ICsxNDgsMjAgQEAgUHJvY2Vzc0NhdGNodXBJ bnRlcnJ1cHQodm9pZCkKIAkJICovCiAJCWlmIChJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlv bkJsb2NrKCkpCiAJCXsKLQkJCWVsb2coREVCVUc0LCAiUHJvY2Vzc0NhdGNodXBFdmVudCBp bnNpZGUgdHJhbnNhY3Rpb24iKTsKKwkJCWVsb2coREVCVUc0LCAiUHJvY2Vzc0NhdGNodXBJ bnRlcnJ1cHQgaW5zaWRlIHRyYW5zYWN0aW9uIik7CiAJCQlBY2NlcHRJbnZhbGlkYXRpb25N ZXNzYWdlcygpOwogCQl9CiAJCWVsc2UKIAkJewotCQkJZWxvZyhERUJVRzQsICJQcm9jZXNz Q2F0Y2h1cEV2ZW50IG91dHNpZGUgdHJhbnNhY3Rpb24iKTsKKwkJCWVsb2coREVCVUc0LCAi UHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQgb3V0c2lkZSB0cmFuc2FjdGlvbiIpOwogCQkJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCQl9CisKKwkJLyoKKwkJICogSWYgYW5vdGhlciBjYXRjaHVwIGludGVycnVwdCBhcnJp dmVkIHdoaWxlIHdlIHdlcmUgcHJvY2VzaW5nIHRoZQorCQkgKiBwcmV2aW91cyBvbmUsIHBy b2Nlc3MgdGhlIG5ldyBvbmUgdG9vLgorCQkgKi8KIAl9CisJd2hpbGUgKENvbnN1bWVJbnRl cnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQKSk7CiB9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NpbnZhbGFkdC5jCmluZGV4IGE3YTdjYzRmMGE5Li40MmM5ODdkY2I5MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKQEAgLTE3LDExICsxNywxMSBAQAogI2lu Y2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAiaXBj L2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCkBAIC0xMTgsNyArMTE4LDcgQEAKICAqIHdl IGV4Y2VlZCBDTEVBTlVQX01JTi4gIFNob3VsZCBiZSBhIHBvd2VyIG9mIDIgZm9yIHNwZWVk LgogICoKICAqIFNJR19USFJFU0hPTEQ6IHRoZSBtaW5pbXVtIG51bWJlciBvZiBtZXNzYWdl cyBhIGJhY2tlbmQgbXVzdCBoYXZlIGZhbGxlbgotICogYmVoaW5kIGJlZm9yZSB3ZSdsbCBz ZW5kIGl0IFBST0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQuCisgKiBiZWhpbmQgYmVmb3JlIHdl J2xsIHNlbmQgaXQgSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQLgogICoKICAqIFdSSVRFX1FV QU5UVU06IHRoZSBtYXggbnVtYmVyIG9mIG1lc3NhZ2VzIHRvIHB1c2ggaW50byB0aGUgYnVm ZmVyIHBlcgogICogaXRlcmF0aW9uIG9mIFNJSW5zZXJ0RGF0YUVudHJpZXMuICBOb25jcml0 aWNhbCBidXQgc2hvdWxkIGJlIGxlc3MgdGhhbgpAQCAtMzE0LDYgKzMxNCwxNCBAQCBTaGFy ZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9ubHkpCiAKIAkvKiByZWdpc3RlciBleGl0 IHJvdXRpbmUgdG8gbWFyayBteSBlbnRyeSBpbmFjdGl2ZSBhdCBleGl0ICovCiAJb25fc2ht ZW1fZXhpdChDbGVhbnVwSW52YWxpZGF0aW9uU3RhdGUsIFBvaW50ZXJHZXREYXR1bShzZWdQ KSk7CisKKwkvKgorCSAqIGFsbCBwcm9jZXNzZXMgdGhhdCBwYXJ0aWNpcGF0ZSBpbiBzaGFy ZWQgaW52YWxpZGF0aW9ucyBtdXN0IGhhbmRsZQorCSAqIGNhdGNodXAgaW50ZXJydXB0cyBw cm9tcHRseS4gKENsaWVudCBiYWNrZW5kcyB3aWxsIGRpc2FibGUgdGhpcyB3aGlsZQorCSAq IHByb2Nlc3NpbmcgYSBxdWVyeSwgYnV0IGVuYWJsZSBieSBkZWZhdWx0LikKKwkgKi8KKwlT ZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hVUCwgUHJvY2Vzc0Nh dGNodXBJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfU0lOVkFMX0NB VENIVVApOwogfQogCiAvKgpAQCAtNTY1LDcgKzU3Myw3IEBAIFNJR2V0RGF0YUVudHJpZXMo U2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IGRhdGFzaXplKQogICogbWlu RnJlZSBpcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWVzc2FnZSBzbG90cyB0byBtYWtlIGZy ZWUuCiAgKgogICogUG9zc2libGUgc2lkZSBlZmZlY3RzIG9mIHRoaXMgcm91dGluZSBpbmNs dWRlIG1hcmtpbmcgb25lIG9yIG1vcmUKLSAqIGJhY2tlbmRzIGFzICJyZXNldCIgaW4gdGhl IGFycmF5LCBhbmQgc2VuZGluZyBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUCisgKiBiYWNr ZW5kcyBhcyAicmVzZXQiIGluIHRoZSBhcnJheSwgYW5kIHNlbmRpbmcgSU5URVJSVVBUX1NJ TlZBTF9DQVRDSFVQCiAgKiB0byBzb21lIGJhY2tlbmQgdGhhdCBzZWVtcyB0byBiZSBnZXR0 aW5nIHRvbyBmYXIgYmVoaW5kLiAgV2Ugc2lnbmFsIGF0CiAgKiBtb3N0IG9uZSBiYWNrZW5k IGF0IGEgdGltZSwgZm9yIHJlYXNvbnMgZXhwbGFpbmVkIGF0IHRoZSB0b3Agb2YgdGhlIGZp bGUuCiAgKgpAQCAtNjU4LDggKzY2Niw4IEBAIFNJQ2xlYW51cFF1ZXVlKGJvb2wgY2FsbGVy SGFzV3JpdGVMb2NrLCBpbnQgbWluRnJlZSkKIAkJc2VnUC0+bmV4dFRocmVzaG9sZCA9IChu dW1Nc2dzIC8gQ0xFQU5VUF9RVUFOVFVNICsgMSkgKiBDTEVBTlVQX1FVQU5UVU07CiAKIAkv KgotCSAqIExhc3RseSwgc2lnbmFsIGFueW9uZSB3aG8gbmVlZHMgYSBjYXRjaHVwIGludGVy cnVwdC4gIFNpbmNlCi0JICogU2VuZFByb2NTaWduYWwoKSBtaWdodCBub3QgYmUgZmFzdCwg d2UgZG9uJ3Qgd2FudCB0byBob2xkIGxvY2tzIHdoaWxlCisJICogTGFzdGx5LCBzaWduYWwg YW55b25lIHdobyBuZWVkcyBhIGNhdGNodXAgaW50ZXJydXB0LiAgU2VuZEludGVycnVwdCgp CisJICogaXMgcHJldHR5IGZhc3QsIGJ1dCB3ZSBuZXZlcnRoZWxlc3MgZG9uJ3Qgd2FudCB0 byBob2xkIGxvY2tzIHdoaWxlCiAJICogZXhlY3V0aW5nIGl0LgogCSAqLwogCWlmIChuZWVk U2lnKQpAQCAtNjcwLDggKzY3OCw4IEBAIFNJQ2xlYW51cFF1ZXVlKGJvb2wgY2FsbGVySGFz V3JpdGVMb2NrLCBpbnQgbWluRnJlZSkKIAkJbmVlZFNpZy0+c2lnbmFsZWQgPSB0cnVlOwog CQlMV0xvY2tSZWxlYXNlKFNJbnZhbFJlYWRMb2NrKTsKIAkJTFdMb2NrUmVsZWFzZShTSW52 YWxXcml0ZUxvY2spOwotCQllbG9nKERFQlVHNCwgInNlbmRpbmcgc2ludmFsIGNhdGNodXAg c2lnbmFsIHRvIFBJRCAlZCIsIChpbnQpIGhpc19waWQpOwotCQlTZW5kUHJvY1NpZ25hbCho aXNfcGlkLCBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBULCBoaXNfcHJvY051bWJlcik7CisJ CWVsb2coREVCVUc0LCAic2VuZGluZyBzaW52YWwgY2F0Y2h1cCBpbnRlcnJ1cHQgdG8gYmFj a2VuZCBQSUQgJWQiLCAoaW50KSBoaXNfcGlkKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJV UFRfU0lOVkFMX0NBVENIVVAsIGhpc19wcm9jTnVtYmVyKTsKIAkJaWYgKGNhbGxlckhhc1dy aXRlTG9jaykKIAkJCUxXTG9ja0FjcXVpcmUoU0ludmFsV3JpdGVMb2NrLCBMV19FWENMVVNJ VkUpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCBkODNhZmJmYjlk Ni4uYzkyNDJkNmZiODkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0 YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTIy LDYgKzIyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgi CisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKQEAg LTU5Niw3ICs1OTcsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShP aWQgZGJpZCkKICAqIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2sgaXMgY2FsbGVk IGZyb20gUHJvY1NsZWVwKCkKICAqIHRvIHJlc29sdmUgY29uZmxpY3RzIHdpdGggb3RoZXIg YmFja2VuZHMgaG9sZGluZyByZWxhdGlvbiBsb2Nrcy4KICAqCi0gKiBUaGUgV2FpdExhdGNo IHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJvY1NsZWVwKCkKKyAqIFRoZSBXYWl0SW50ZXJy dXB0IHNsZWVwIG5vcm1hbGx5IGRvbmUgaW4gUHJvY1NsZWVwKCkKICAqICh3aGVuIG5vdCBJ bkhvdFN0YW5kYnkpIGlzIHBlcmZvcm1lZCBoZXJlLCBmb3IgY29kZSBjbGFyaXR5LgogICoK ICAqIFdlIGVpdGhlciByZXNvbHZlIGNvbmZsaWN0cyBpbW1lZGlhdGVseSBvciBzZXQgYSB0 aW1lb3V0IHRvIHdha2UgdXMgYXQKQEAgLTY5OCw3ICs2OTksMTEgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0YWcsIGJvb2wgbG9nZ2luZ19jb25m bGljdCkKIAl9CiAKIAkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkIGJ5IHRoZSByZWxlYXNlIG9m IHRoZSBSZWxhdGlvbiBMb2NrICovCi0JUHJvY1dhaXRGb3JTaWduYWwoUEdfV0FJVF9MT0NL IHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOworCVdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRl cnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkgIFdMX0lOVEVSUlVQ VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJICBQR19XQUlUX0xPQ0sgfCBsb2Nr dGFnLmxvY2t0YWdfdHlwZSk7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwogCiAJLyoKIAkgKiBFeGl0IGlmIGx0 aW1lIGlzIHJlYWNoZWQuIFRoZW4gYWxsIHRoZSBiYWNrZW5kcyBob2xkaW5nIGNvbmZsaWN0 aW5nCkBAIC03NDYsNyArNzUxLDExIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExv Y2soTE9DS1RBRyBsb2NrdGFnLCBib29sIGxvZ2dpbmdfY29uZmxpY3QpCiAJCSAqIHVudGls IHRoZSByZWxhdGlvbiBsb2NrcyBhcmUgcmVsZWFzZWQgb3IgbHRpbWUgaXMgcmVhY2hlZC4K IAkJICovCiAJCWdvdF9zdGFuZGJ5X2RlYWRsb2NrX3RpbWVvdXQgPSBmYWxzZTsKLQkJUHJv Y1dhaXRGb3JTaWduYWwoUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUpOwor CQlXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfAorCQkJCQkgIElOVEVS UlVQVF9XQUlUX1dBS0VVUCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkJICBQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9XQUlU X1dBS0VVUCk7CiAJfQogCiBjbGVhbnVwOgpAQCAtNzY2LDE1ICs3NzUsMTYgQEAgY2xlYW51 cDoKICAqIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbiBpcyBjYWxsZWQg ZnJvbSBMb2NrQnVmZmVyRm9yQ2xlYW51cCgpCiAgKiB0byByZXNvbHZlIGNvbmZsaWN0cyB3 aXRoIG90aGVyIGJhY2tlbmRzIGhvbGRpbmcgYnVmZmVyIHBpbnMuCiAgKgotICogVGhlIFBy b2NXYWl0Rm9yU2lnbmFsKCkgc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBMb2NrQnVmZmVyRm9y Q2xlYW51cCgpCi0gKiAod2hlbiBub3QgSW5Ib3RTdGFuZGJ5KSBpcyBwZXJmb3JtZWQgaGVy ZSwgZm9yIGNvZGUgY2xhcml0eS4KKyAqIFRoZSBXYWl0SW50ZXJydXB0IHNsZWVwIG5vcm1h bGx5IGRvbmUgaW4gTG9ja0J1ZmZlckZvckNsZWFudXAoKSAod2hlbiBub3QKKyAqIEluSG90 U3RhbmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBjb2RlIGNsYXJpdHkuCiAgKgogICog V2UgZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNldCBhIHRpbWVv dXQgdG8gd2FrZSB1cyBhdAogICogdGhlIGxpbWl0IG9mIG91ciBwYXRpZW5jZS4KICAqCi0g KiBSZXNvbHZlIGNvbmZsaWN0cyBieSBzZW5kaW5nIGEgUFJPQ1NJRyBzaWduYWwgdG8gYWxs IGJhY2tlbmRzIHRvIGNoZWNrIGlmCi0gKiB0aGV5IGhvbGQgb25lIG9mIHRoZSBidWZmZXIg cGlucyB0aGF0IGlzIGJsb2NraW5nIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sCi0gKiB0aG9z ZSBiYWNrZW5kcyB3aWxsIHRha2UgYW4gYXBwcm9wcmlhdGUgZXJyb3IgYWN0aW9uLCBFUlJP UiBvciBGQVRBTC4KKyAqIFJlc29sdmUgY29uZmxpY3RzIGJ5IHNlbmRpbmcgUkVDT1ZFUllf Q09ORkxJQ1RfQlVGRkVSUElOIHRvIGFsbAorICogYmFja2VuZHMgdG8gY2hlY2sgaWYgdGhl eSBob2xkIG9uZSBvZiB0aGUgYnVmZmVyIHBpbnMgdGhhdCBpcyBibG9ja2luZworICogU3Rh cnR1cCBwcm9jZXNzLiBJZiBzbywgdGhvc2UgYmFja2VuZHMgd2lsbCB0YWtlIGFuIGFwcHJv cHJpYXRlIGVycm9yCisgKiBhY3Rpb24sIEVSUk9SIG9yIEZBVEFMLgogICoKICAqIFdlIGFs c28gbXVzdCBjaGVjayBmb3IgZGVhZGxvY2tzLiAgRGVhZGxvY2tzIG9jY3VyIGJlY2F1c2Ug aWYgcXVlcmllcwogICogd2FpdCBvbiBhIGxvY2ssIHRoYXQgbXVzdCBiZSBiZWhpbmQgYW4g QWNjZXNzRXhjbHVzaXZlTG9jaywgd2hpY2ggY2FuIG9ubHkKQEAgLTgzOCw5ICs4NDgsMTkg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCiAJICogV2Ug YXNzdW1lIHRoYXQgb25seSBVbnBpbkJ1ZmZlcigpIGFuZCB0aGUgdGltZW91dCByZXF1ZXN0 cyBlc3RhYmxpc2hlZAogCSAqIGFib3ZlIGNhbiB3YWtlIHVzIHVwIGhlcmUuIFdha2V1cFJl Y292ZXJ5KCkgY2FsbGVkIGJ5IHdhbHJlY2VpdmVyIG9yCiAJICogU0lHSFVQIHNpZ25hbCBo YW5kbGVyLCBldGMgY2Fubm90IGRvIHRoYXQgYmVjYXVzZSBpdCB1c2VzIHRoZSBkaWZmZXJl bnQKLQkgKiBsYXRjaCBmcm9tIHRoYXQgUHJvY1dhaXRGb3JTaWduYWwoKSB3YWl0cyBvbi4K KwkgKiBpbnRlcnJ1cHQgZmxhZy4KKwkgKgorCSAqIEZJWE1FOiBzZWVtcyBsaWtlIGEgc2hh a3kgYXNzdW1wdGlvbi4gV2FrZXVwUmVjb3ZlcnkoKSBpbmRlZWQgdXNlcyBhCisJICogZGlm ZmVyZW50IGludGVycnVwdCBmbGFnIChkaWZmZXJlbnQgbGF0Y2ggZWFybGllciksIGJ1dCBv dGhlcgorCSAqIGludGVycnVwdHMgY3VycmVudGx5IGluIENoZWNrRm9ySW50ZXJydXB0c01h c2sgY291bGQgc3VyZWx5IHdha2UgdXMgdXAKKwkgKiB0b28uIEhvd2V2ZXIsIHRoZSBjYWxs ZXIgbG9vcHMgaWYgdGhlIGJ1ZmZlciBpcyBzdGlsbCBwaW5uZWQsIHNvIHRoaXMKKwkgKiBp c24ndCBjb21wbGV0ZWx5IGJyb2tlbi4gVGhlIHRpbWVvdXRzIGdldCByZXNldCB0aG91Z2gu CiAJICovCi0JUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfQ0xFQU5VUCk7 CisJV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrIHwgSU5URVJSVVBUX1dB SVRfV0FLRVVQLAorCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX0NMRUFOVVApOworCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAog CWlmIChnb3Rfc3RhbmRieV9kZWxheV90aW1lb3V0KQogCQlTZW5kUmVjb3ZlcnlDb25mbGlj dFdpdGhCdWZmZXJQaW4oUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKTsKQEAgLTkzNiw2 ICs5NTYsNyBAQCB2b2lkCiBTdGFuZGJ5RGVhZExvY2tIYW5kbGVyKHZvaWQpCiB7CiAJZ290 X3N0YW5kYnlfZGVhZGxvY2tfdGltZW91dCA9IHRydWU7CisJUmFpc2VJbnRlcnJ1cHQoSU5U RVJSVVBUX1dBSVRfV0FLRVVQKTsKIH0KIAogLyoKQEAgLTk0NSw2ICs5NjYsNyBAQCB2b2lk CiBTdGFuZGJ5VGltZW91dEhhbmRsZXIodm9pZCkKIHsKIAlnb3Rfc3RhbmRieV9kZWxheV90 aW1lb3V0ID0gdHJ1ZTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OwogfQogCiAvKgpAQCAtOTU0LDYgKzk3Niw3IEBAIHZvaWQKIFN0YW5kYnlMb2NrVGltZW91 dEhhbmRsZXIodm9pZCkKIHsKIAlnb3Rfc3RhbmRieV9sb2NrX3RpbWVvdXQgPSB0cnVlOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCmluZGV4IDc3MmUzNTBhMGMwLi42 MTJkZThiMzVlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2 ZW50c2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMK QEAgLTgsOCArOCw4IEBACiAgKiBwc2VsZWN0KCkgKGFzIG9wcG9zZWQgdG8gcGxhaW4gcG9s bCgpL3NlbGVjdCgpKS4KICAqCiAgKiBZb3UgY2FuIHdhaXQgZm9yOgotICogLSBhIGxhdGNo IGJlaW5nIHNldCBmcm9tIGFub3RoZXIgcHJvY2VzcyBvciBmcm9tIHNpZ25hbCBoYW5kbGVy IGluIHRoZSBzYW1lCi0gKiAgIHByb2Nlc3MgKFdMX0xBVENIX1NFVCkKKyAqIC0gYW4gaW50 ZXJydXB0IGZyb20gYW5vdGhlciBwcm9jZXNzIG9yIGZyb20gc2lnbmFsIGhhbmRsZXIgaW4g dGhlIHNhbWUKKyAqICAgcHJvY2VzcyAoV0xfSU5URVJSVVBUKQogICogLSBkYXRhIHRvIGJl Y29tZSByZWFkYWJsZSBvciB3cml0ZWFibGUgb24gYSBzb2NrZXQgKFdMX1NPQ0tFVF8qKQog ICogLSBwb3N0bWFzdGVyIGRlYXRoIChXTF9QT1NUTUFTVEVSX0RFQVRIIG9yIFdMX0VYSVRf T05fUE1fREVBVEgpCiAgKiAtIHRpbWVvdXQgKFdMX1RJTUVPVVQpCkBAIC0xNywxNSArMTcs MTYgQEAKICAqIEltcGxlbWVudGF0aW9uCiAgKiAtLS0tLS0tLS0tLS0tLQogICoKLSAqIFRo ZSBwb2xsKCkgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc28tY2FsbGVkIHNlbGYtcGlwZSB0 cmljayB0byBvdmVyY29tZSB0aGUKLSAqIHJhY2UgY29uZGl0aW9uIGludm9sdmVkIHdpdGgg cG9sbCgpIGFuZCBzZXR0aW5nIGEgZ2xvYmFsIGZsYWcgaW4gdGhlIHNpZ25hbAotICogaGFu ZGxlci4gV2hlbiBhIGxhdGNoIGlzIHNldCBhbmQgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyB3 YWl0aW5nIGZvciBpdCwgdGhlCi0gKiBzaWduYWwgaGFuZGxlciB3YWtlcyB1cCB0aGUgcG9s bCgpIGluIFdhaXRMYXRjaCBieSB3cml0aW5nIGEgYnl0ZSB0byBhIHBpcGUuCi0gKiBBIHNp Z25hbCBieSBpdHNlbGYgZG9lc24ndCBpbnRlcnJ1cHQgcG9sbCgpIG9uIGFsbCBwbGF0Zm9y bXMsIGFuZCBldmVuIG9uCi0gKiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9lcywgYSBzaWduYWwg dGhhdCBhcnJpdmVzIGp1c3QgYmVmb3JlIHRoZSBwb2xsKCkgY2FsbAotICogZG9lcyBub3Qg cHJldmVudCBwb2xsKCkgZnJvbSBlbnRlcmluZyBzbGVlcC4gQW4gaW5jb21pbmcgYnl0ZSBv biBhIHBpcGUKLSAqIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cyB0aGUgc2xlZXAsIGFu ZCBjYXVzZXMgcG9sbCgpIHRvIHJldHVybgotICogaW1tZWRpYXRlbHkgZXZlbiBpZiB0aGUg c2lnbmFsIGFycml2ZXMgYmVmb3JlIHBvbGwoKSBiZWdpbnMuCisgKiBUaGUgcG9sbCgpIGlt cGxlbWVudGF0aW9uIHVzZXMgdGhlIHNvLWNhbGxlZCBzZWxmLXBpcGUgdHJpY2sgdG8gb3Zl cmNvbWUKKyAqIHRoZSByYWNlIGNvbmRpdGlvbiBpbnZvbHZlZCB3aXRoIHBvbGwoKSBhbmQg c2V0dGluZyBhIGdsb2JhbCBmbGFnIGluIHRoZQorICogc2lnbmFsIGhhbmRsZXIuIFdoZW4g YW4gaW50ZXJydXB0IGlzIHJlY2VpdmVkIGFuZCB0aGUgY3VycmVudCBwcm9jZXNzIGlzCisg KiB3YWl0aW5nIHdhaXRpbmcgZm9yIGl0LCB0aGUgc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAg dGhlIHBvbGwoKSBpbgorICogV2FpdEludGVycnVwdCBieSB3cml0aW5nIGEgYnl0ZSB0byBh IHBpcGUuICBBIHNpZ25hbCBieSBpdHNlbGYgZG9lc24ndAorICogaW50ZXJydXB0IHBvbGwo KSBvbiBhbGwgcGxhdGZvcm1zLCBhbmQgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgaXQgZG9l cywgYQorICogc2lnbmFsIHRoYXQgYXJyaXZlcyBqdXN0IGJlZm9yZSB0aGUgcG9sbCgpIGNh bGwgZG9lcyBub3QgcHJldmVudCBwb2xsKCkKKyAqIGZyb20gZW50ZXJpbmcgc2xlZXAuIEFu IGluY29taW5nIGJ5dGUgb24gYSBwaXBlIGhvd2V2ZXIgcmVsaWFibHkgaW50ZXJydXB0cwor ICogdGhlIHNsZWVwLCBhbmQgY2F1c2VzIHBvbGwoKSB0byByZXR1cm4gaW1tZWRpYXRlbHkg ZXZlbiBpZiB0aGUgc2lnbmFsCisgKiBhcnJpdmVzIGJlZm9yZSBwb2xsKCkgYmVnaW5zLgog ICoKICAqIFRoZSBlcG9sbCgpIGltcGxlbWVudGF0aW9uIG92ZXJjb21lcyB0aGUgcmFjZSB3 aXRoIGEgZGlmZmVyZW50IHRlY2huaXF1ZTogaXQKICAqIGtlZXBzIFNJR1VSRyBibG9ja2Vk IGFuZCBjb25zdW1lcyBmcm9tIGEgc2lnbmFsZmQoKSBkZXNjcmlwdG9yIGluc3RlYWQuICBX ZQpAQCAtNzMsNyArNzQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBAIC0xMjgsMTMgKzEyOSwxMyBA QCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiAJV2FpdEV2ZW50ICAqZXZlbnRzOwogCiAJLyoKLQkg KiBJZiBXTF9MQVRDSF9TRVQgaXMgc3BlY2lmaWVkIGluIGFueSB3YWl0IGV2ZW50LCBsYXRj aCBpcyBhIHBvaW50ZXIgdG8KLQkgKiBzYWlkIGxhdGNoLCBhbmQgbGF0Y2hfcG9zIHRoZSBv ZmZzZXQgaW4gdGhlIC0+ZXZlbnRzIGFycmF5LiBUaGlzIGlzCi0JICogdXNlZnVsIGJlY2F1 c2Ugd2UgY2hlY2sgdGhlIHN0YXRlIG9mIHRoZSBsYXRjaCBiZWZvcmUgcGVyZm9ybWluZyBk b2luZwotCSAqIHN5c2NhbGxzIHJlbGF0ZWQgdG8gd2FpdGluZy4KKwkgKiBJZiBXTF9JTlRF UlJVUFQgaXMgc3BlY2lmaWVkIGluIGFueSB3YWl0IGV2ZW50LCBpbnRlcnJ1cHRNYXNrIGlz IHRoZQorCSAqIGludGVycnVwdHMgdG8gd2FpdCBmb3IsIGFuZCBpbnRlcnJ1cHRfcG9zIHRo ZSBvZmZzZXQgaW4gdGhlIC0+ZXZlbnRzCisJICogYXJyYXkuIFRoaXMgaXMgdXNlZnVsIGJl Y2F1c2Ugd2UgY2hlY2sgdGhlIHN0YXRlIG9mIHBlbmRpbmcgaW50ZXJydXB0cworCSAqIGJl Zm9yZSBwZXJmb3JtaW5nIHN5c2NhbGxzIHJlbGF0ZWQgdG8gd2FpdGluZy4KIAkgKi8KLQlM YXRjaAkgICAqbGF0Y2g7Ci0JaW50CQkJbGF0Y2hfcG9zOworCUludGVycnVwdE1hc2sgaW50 ZXJydXB0X21hc2s7CisJaW50CQkJaW50ZXJydXB0X3BvczsKIAogCS8qCiAJICogV0xfRVhJ VF9PTl9QTV9ERUFUSCBpcyBjb252ZXJ0ZWQgdG8gV0xfUE9TVE1BU1RFUl9ERUFUSCwgYnV0 IHRoaXMgZmxhZwpAQCAtMTY3LDcgKzE2OCw3IEBAIHN0cnVjdCBXYWl0RXZlbnRTZXQKIH07 CiAKICNpZm5kZWYgV0lOMzIKLS8qIEFyZSB3ZSBjdXJyZW50bHkgaW4gV2FpdExhdGNoPyBU aGUgc2lnbmFsIGhhbmRsZXIgd291bGQgbGlrZSB0byBrbm93LiAqLworLyogQXJlIHdlIGN1 cnJlbnRseSBvbiBhIFdhaXRFdmVudFNldD8gVGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGxp a2UgdG8ga25vdy4gKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgd2FpdGluZyA9 IGZhbHNlOwogI2VuZGlmCiAKQEAgLTE4Myw5ICsxODQsMTYgQEAgc3RhdGljIGludAlzZWxm cGlwZV93cml0ZWZkID0gLTE7CiAKIC8qIFByb2Nlc3Mgb3duaW5nIHRoZSBzZWxmLXBpcGUg LS0tIG5lZWRlZCBmb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KIHN0YXRpYyBpbnQJc2VsZnBp cGVfb3duZXJfcGlkID0gMDsKKyNlbmRpZgorCisjaWZkZWYgV0FJVF9VU0VfV0lOMzIKK3N0 YXRpYyBIQU5ETEUgTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudDsKKyNlbmRpZgogCiAvKiBQ cml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KLXN0YXRpYyB2b2lkIGxhdGNoX3NpZ3Vy Z19oYW5kbGVyKFNJR05BTF9BUkdTKTsKKworI2lmZGVmIFdBSVRfVVNFX1NFTEZfUElQRQor c3RhdGljIHZvaWQgaW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKFNJR05BTF9BUkdTKTsKIHN0 YXRpYyB2b2lkIHNlbmRTZWxmUGlwZUJ5dGUodm9pZCk7CiAjZW5kaWYKIApAQCAtMjM1LDcg KzI0Myw3IEBAIFJlc291cmNlT3duZXJGb3JnZXRXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25l ciBvd25lciwgV2FpdEV2ZW50U2V0ICpzZXQpCiAgKiBJbml0aWFsaXplIHRoZSBwcm9jZXNz LWxvY2FsIHdhaXQgZXZlbnQgaW5mcmFzdHJ1Y3R1cmUuCiAgKgogICogVGhpcyBtdXN0IGJl IGNhbGxlZCBvbmNlIGR1cmluZyBzdGFydHVwIG9mIGFueSBwcm9jZXNzIHRoYXQgY2FuIHdh aXQgb24KLSAqIGxhdGNoZXMsIGJlZm9yZSBpdCBpc3N1ZXMgYW55IEluaXRMYXRjaCgpIG9y IE93bkxhdGNoKCkgY2FsbHMuCisgKiBpbnRlcnJ1cHRzLgogICovCiB2b2lkCiBJbml0aWFs aXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKQpAQCAtMjg1LDEyICsyOTMsMTIgQEAgSW5pdGlh bGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkKIAogCS8qCiAJICogU2V0IHVwIHRoZSBzZWxm LXBpcGUgdGhhdCBhbGxvd3MgYSBzaWduYWwgaGFuZGxlciB0byB3YWtlIHVwIHRoZQotCSAq IHBvbGwoKS9lcG9sbF93YWl0KCkgaW4gV2FpdExhdGNoLiBNYWtlIHRoZSB3cml0ZS1lbmQg bm9uLWJsb2NraW5nLCBzbwotCSAqIHRoYXQgU2V0TGF0Y2ggd29uJ3QgYmxvY2sgaWYgdGhl IGV2ZW50IGhhcyBhbHJlYWR5IGJlZW4gc2V0IG1hbnkgdGltZXMKLQkgKiBmaWxsaW5nIHRo ZSBrZXJuZWwgYnVmZmVyLiBNYWtlIHRoZSByZWFkLWVuZCBub24tYmxvY2tpbmcgdG9vLCBz byB0aGF0Ci0JICogd2UgY2FuIGVhc2lseSBjbGVhciB0aGUgcGlwZSBieSByZWFkaW5nIHVu dGlsIEVBR0FJTiBvciBFV09VTERCTE9DSy4KLQkgKiBBbHNvLCBtYWtlIGJvdGggRkRzIGNs b3NlLW9uLWV4ZWMsIHNpbmNlIHdlIHN1cmVseSBkbyBub3Qgd2FudCBhbnkKLQkgKiBjaGls ZCBwcm9jZXNzZXMgbWVzc2luZyB3aXRoIHRoZW0uCisJICogcG9sbCgpL2Vwb2xsX3dhaXQo KSBpbiBXYWl0SW50ZXJydXB0LiBNYWtlIHRoZSB3cml0ZS1lbmQgbm9uLWJsb2NraW5nLAor CSAqIHNvIHRoYXQgU2VuZEludGVycnVwdCB3b24ndCBibG9jayBpZiB0aGUgZXZlbnQgaGFz IGFscmVhZHkgYmVlbiBzZXQKKwkgKiBtYW55IHRpbWVzIGZpbGxpbmcgdGhlIGtlcm5lbCBi dWZmZXIuIE1ha2UgdGhlIHJlYWQtZW5kIG5vbi1ibG9ja2luZworCSAqIHRvbywgc28gdGhh dCB3ZSBjYW4gZWFzaWx5IGNsZWFyIHRoZSBwaXBlIGJ5IHJlYWRpbmcgdW50aWwgRUFHQUlO IG9yCisJICogRVdPVUxEQkxPQ0suIEFsc28sIG1ha2UgYm90aCBGRHMgY2xvc2Utb24tZXhl Yywgc2luY2Ugd2Ugc3VyZWx5IGRvIG5vdAorCSAqIHdhbnQgYW55IGNoaWxkIHByb2Nlc3Nl cyBtZXNzaW5nIHdpdGggdGhlbS4KIAkgKi8KIAlpZiAocGlwZShwaXBlZmQpIDwgMCkKIAkJ ZWxvZyhGQVRBTCwgInBpcGUoKSBmYWlsZWQ6ICVtIik7CkBAIC0zMTEsNyArMzE5LDcgQEAg SW5pdGlhbGl6ZVdhaXRFdmVudFN1cHBvcnQodm9pZCkKIAlSZXNlcnZlRXh0ZXJuYWxGRCgp OwogCVJlc2VydmVFeHRlcm5hbEZEKCk7CiAKLQlwcXNpZ25hbChTSUdVUkcsIGxhdGNoX3Np Z3VyZ19oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVUkcsIGludGVycnVwdF9zaWd1cmdfaGFu ZGxlcik7CiAjZW5kaWYKIAogI2lmZGVmIFdBSVRfVVNFX1NJR05BTEZECkBAIC0zNDksNiAr MzU3LDEyIEBAIEluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KHZvaWQpCiAJLyogSWdub3Jl IFNJR1VSRywgYmVjYXVzZSB3ZSdsbCByZWNlaXZlIGl0IHZpYSBrcXVldWUuICovCiAJcHFz aWduYWwoU0lHVVJHLCBTSUdfSUdOKTsKICNlbmRpZgorCisjaWZkZWYgV0FJVF9VU0VfV0lO MzIKKwlMb2NhbEludGVycnVwdFdha2V1cEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJV RSwgRkFMU0UsIE5VTEwpOworCWlmIChMb2NhbEludGVycnVwdFdha2V1cEV2ZW50ID09IE5V TEwpCisJCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1 IiwgR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCiB9CiAKIC8qCkBAIC00MTIsNyArNDI2LDgg QEAgQ3JlYXRlV2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgcmVzb3duZXIsIGludCBuZXZl bnRzKQogCWRhdGEgKz0gTUFYQUxJR04oc2l6ZW9mKEhBTkRMRSkgKiBuZXZlbnRzKTsKICNl bmRpZgogCi0Jc2V0LT5sYXRjaCA9IE5VTEw7CisJc2V0LT5pbnRlcnJ1cHRfbWFzayA9IDA7 CisJc2V0LT5pbnRlcnJ1cHRfcG9zID0gLTE7CiAJc2V0LT5uZXZlbnRzX3NwYWNlID0gbmV2 ZW50czsKIAlzZXQtPmV4aXRfb25fcG9zdG1hc3Rlcl9kZWF0aCA9IGZhbHNlOwogCkBAIC00 OTYsOSArNTExLDkgQEAgRnJlZVdhaXRFdmVudFNldChXYWl0RXZlbnRTZXQgKnNldCkKIAkJ IGN1cl9ldmVudCA8IChzZXQtPmV2ZW50cyArIHNldC0+bmV2ZW50cyk7CiAJCSBjdXJfZXZl bnQrKykKIAl7Ci0JCWlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKKwkJ aWYgKGN1cl9ldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQkvKiB1c2Vz IHRoZSBsYXRjaCdzIEhBTkRMRSAqLworCQkJLyogdXNlcyB0aGUgcHJvY2VzcydzIHdha2V1 cCBIQU5ETEUgKi8KIAkJfQogCQllbHNlIGlmIChjdXJfZXZlbnQtPmV2ZW50cyAmIFdMX1BP U1RNQVNURVJfREVBVEgpCiAJCXsKQEAgLTUzNSw3ICs1NTAsNyBAQCBGcmVlV2FpdEV2ZW50 U2V0QWZ0ZXJGb3JrKFdhaXRFdmVudFNldCAqc2V0KQogCiAvKiAtLS0KICAqIEFkZCBhbiBl dmVudCB0byB0aGUgc2V0LiBQb3NzaWJsZSBldmVudHMgYXJlOgotICogLSBXTF9MQVRDSF9T RVQ6IFdhaXQgZm9yIHRoZSBsYXRjaCB0byBiZSBzZXQKKyAqIC0gV0xfSU5URVJSVVBUOiBX YWl0IGZvciB0aGUgaW50ZXJydXB0IHRvIGJlIHJhaXNlZAogICogLSBXTF9QT1NUTUFTVEVS X0RFQVRIOiBXYWl0IGZvciBwb3N0bWFzdGVyIHRvIGRpZQogICogLSBXTF9TT0NLRVRfUkVB REFCTEU6IFdhaXQgZm9yIHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUsCiAgKgkgY2FuIGJl IGNvbWJpbmVkIGluIG9uZSBldmVudCB3aXRoIG90aGVyIFdMX1NPQ0tFVF8qIGV2ZW50cwpA QCAtNTUzLDEwICs1NjgsNiBAQCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJGb3JrKFdhaXRFdmVu dFNldCAqc2V0KQogICogUmV0dXJucyB0aGUgb2Zmc2V0IGluIFdhaXRFdmVudFNldC0+ZXZl bnRzIChzdGFydGluZyBmcm9tIDApLCB3aGljaCBjYW4gYmUKICAqIHVzZWQgdG8gbW9kaWZ5 IHByZXZpb3VzbHkgYWRkZWQgd2FpdCBldmVudHMgdXNpbmcgTW9kaWZ5V2FpdEV2ZW50KCku CiAgKgotICogSW4gdGhlIFdMX0xBVENIX1NFVCBjYXNlIHRoZSBsYXRjaCBtdXN0IGJlIG93 bmVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MsCi0gKiBpLmUuIGl0IG11c3QgYmUgYSBwcm9j ZXNzLWxvY2FsIGxhdGNoIGluaXRpYWxpemVkIHdpdGggSW5pdExhdGNoLCBvciBhCi0gKiBz aGFyZWQgbGF0Y2ggYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MgYnkgY2Fs bGluZyBPd25MYXRjaC4KLSAqCiAgKiBJbiB0aGUgV0xfU09DS0VUX1JFQURBQkxFL1dSSVRF QUJMRS9DT05ORUNURUQvQUNDRVBUIGNhc2VzLCBFT0YgYW5kIGVycm9yCiAgKiBjb25kaXRp b25zIGNhdXNlIHRoZSBzb2NrZXQgdG8gYmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFi bGUvY29ubmVjdGVkLAogICogc28gdGhhdCB0aGUgY2FsbGVyIGNhbiBkZWFsIHdpdGggdGhl IGNvbmRpdGlvbi4KQEAgLTU2Niw3ICs1NzcsNyBAQCBGcmVlV2FpdEV2ZW50U2V0QWZ0ZXJG b3JrKFdhaXRFdmVudFNldCAqc2V0KQogICogZXZlbnRzLgogICovCiBpbnQKLUFkZFdhaXRF dmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBm ZCwgTGF0Y2ggKmxhdGNoLAorQWRkV2FpdEV2ZW50VG9TZXQoV2FpdEV2ZW50U2V0ICpzZXQs IHVpbnQzMiBldmVudHMsIHBnc29ja2V0IGZkLCBJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1h c2ssCiAJCQkJICB2b2lkICp1c2VyX2RhdGEpCiB7CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CkBA IC01ODAsMTkgKzU5MSwxNiBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNl dCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIAkJc2V0LT5l eGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPSB0cnVlOwogCX0KIAotCWlmIChsYXRjaCkKLQl7 Ci0JCWlmIChsYXRjaC0+b3duZXJfcGlkICE9IE15UHJvY1BpZCkKLQkJCWVsb2coRVJST1Is ICJjYW5ub3Qgd2FpdCBvbiBhIGxhdGNoIG93bmVkIGJ5IGFub3RoZXIgcHJvY2VzcyIpOwot CQlpZiAoc2V0LT5sYXRjaCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBtb3Jl IHRoYW4gb25lIGxhdGNoIik7Ci0JCWlmICgoZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAhPSBX TF9MQVRDSF9TRVQpCi0JCQllbG9nKEVSUk9SLCAibGF0Y2ggZXZlbnRzIG9ubHkgc3VwcG9y dCBiZWluZyBzZXQiKTsKLQl9Ci0JZWxzZQorCS8qCisJICogSXQgZG9lc24ndCBtYWtlIG11 Y2ggc2Vuc2UgdG8gd2FpdCBmb3IgV0xfSU5URVJSVVBUIHdpdGggZW1wdHkKKwkgKiBpbnRl cnJ1cHRNYXNrLCBidXQgd2UgYWxsb3cgaXQgc28gdGhhdCB5b3UgY2FuIHVzZSBNb2RpZnlF dmVudCB0byBzZXQKKwkgKiB0aGUgaW50ZXJydXB0TWFzayBsYXRlci4gTm9uLXplcm8gaW50 ZXJydXB0TWFzayBkb2Vzbid0IG1ha2Ugc2Vuc2UKKwkgKiB3aXRob3V0IFdMX0lOVEVSUlVQ VCwgaG93ZXZlci4KKwkgKi8KKwlpZiAoaW50ZXJydXB0TWFzayAhPSAwKQogCXsKLQkJaWYg KGV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBv biBsYXRjaCB3aXRob3V0IGEgc3BlY2lmaWVkIGxhdGNoIik7CisJCWlmICgoZXZlbnRzICYg V0xfSU5URVJSVVBUKSAhPSBXTF9JTlRFUlJVUFQpCisJCQllbG9nKEVSUk9SLCAiaW50ZXJy dXB0ZWQgZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsKIAl9CiAKIAkvKiB3YWl0 aW5nIGZvciBzb2NrZXQgcmVhZGluZXNzIHdpdGhvdXQgYSBzb2NrZXQgaW5kaWNhdGVzIGEg YnVnICovCkBAIC02MDgsMTAgKzYxNiwxMCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZl bnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwK IAlldmVudC0+cmVzZXQgPSBmYWxzZTsKICNlbmRpZgogCi0JaWYgKGV2ZW50cyA9PSBXTF9M QVRDSF9TRVQpCisJaWYgKGV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlzZXQtPmxh dGNoID0gbGF0Y2g7Ci0JCXNldC0+bGF0Y2hfcG9zID0gZXZlbnQtPnBvczsKKwkJc2V0LT5p bnRlcnJ1cHRfbWFzayA9IGludGVycnVwdE1hc2s7CisJCXNldC0+aW50ZXJydXB0X3BvcyA9 IGV2ZW50LT5wb3M7CiAjaWYgZGVmaW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAJCWV2ZW50 LT5mZCA9IHNlbGZwaXBlX3JlYWRmZDsKICNlbGlmIGRlZmluZWQoV0FJVF9VU0VfU0lHTkFM RkQpCkBAIC02NDUsMTQgKzY1MywxNCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRT ZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIH0K IAogLyoKLSAqIENoYW5nZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9MQVRDSF9T RVQgY2FzZSwgdGhlIGxhdGNoIGFzc29jaWF0ZWQKLSAqIHdpdGggdGhlIFdhaXRFdmVudC4g IFRoZSBsYXRjaCBtYXkgYmUgY2hhbmdlZCB0byBOVUxMIHRvIGRpc2FibGUgdGhlIGxhdGNo Ci0gKiB0ZW1wb3JhcmlseSwgYW5kIHRoZW4gc2V0IGJhY2sgdG8gYSBsYXRjaCBsYXRlci4K KyAqIENoYW5nZSB0aGUgZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9JTlRFUlJVUFQgY2Fz ZSwgdGhlIGludGVycnVwdCBtYXNrCisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIFdhaXRFdmVu dC4gIFRoZSBpbnRlcnJ1cHQgbWFzayBtYXkgYmUgY2hhbmdlZCB0byAwIHRvCisgKiBkaXNh YmxlIHRoZSB3YWtldXBzIG9uIGludGVycnVwdHMgdGVtcG9yYXJpbHksIGFuZCB0aGVuIHNl dCBiYWNrIGxhdGVyLgogICoKICAqICdwb3MnIGlzIHRoZSBpZCByZXR1cm5lZCBieSBBZGRX YWl0RXZlbnRUb1NldC4KICAqLwogdm9pZAotTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNl dCAqc2V0LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCitNb2RpZnlX YWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIElu dGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIHsKIAlXYWl0RXZlbnQgICpldmVudDsKICNp ZiBkZWZpbmVkKFdBSVRfVVNFX0tRVUVVRSkKQEAgLTY4Miw0MCArNjkwLDM0IEBAIE1vZGlm eVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywg TGF0Y2ggKmxhdGNoKQogCX0KIAogCS8qCi0JICogSWYgbmVpdGhlciB0aGUgZXZlbnQgbWFz ayBub3IgdGhlIGFzc29jaWF0ZWQgbGF0Y2ggY2hhbmdlcywgcmV0dXJuCi0JICogZWFybHku IFRoYXQncyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciBzb21lIHNvY2tldHMsIHdo ZXJlCisJICogSWYgbmVpdGhlciB0aGUgZXZlbnQgbWFzayBub3IgdGhlIGFzc29jaWF0ZWQg aW50ZXJydXB0IG1hc2sgY2hhbmdlcywKKwkgKiByZXR1cm4gZWFybHkuIFRoYXQncyBhbiBp bXBvcnRhbnQgb3B0aW1pemF0aW9uIGZvciBzb21lIHNvY2tldHMsIHdoZXJlCiAJICogTW9k aWZ5V2FpdEV2ZW50IGlzIGZyZXF1ZW50bHkgdXNlZCB0byBzd2l0Y2ggZnJvbSB3YWl0aW5n IGZvciByZWFkcyB0bwogCSAqIHdhaXRpbmcgb24gd3JpdGVzLgogCSAqLwogCWlmIChldmVu dHMgPT0gZXZlbnQtPmV2ZW50cyAmJgotCQkoIShldmVudC0+ZXZlbnRzICYgV0xfTEFUQ0hf U0VUKSB8fCBzZXQtPmxhdGNoID09IGxhdGNoKSkKKwkJKCEoZXZlbnQtPmV2ZW50cyAmIFdM X0lOVEVSUlVQVCkgfHwgc2V0LT5pbnRlcnJ1cHRfbWFzayA9PSBpbnRlcnJ1cHRNYXNrKSkK IAkJcmV0dXJuOwogCi0JaWYgKGV2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQgJiYgZXZl bnRzICE9IGV2ZW50LT5ldmVudHMpCi0JCWVsb2coRVJST1IsICJjYW5ub3QgbW9kaWZ5IGxh dGNoIGV2ZW50Iik7CisJaWYgKGV2ZW50LT5ldmVudHMgJiBXTF9JTlRFUlJVUFQgJiYgZXZl bnRzICE9IGV2ZW50LT5ldmVudHMpCisJCWVsb2coRVJST1IsICJjYW5ub3QgbW9kaWZ5IGlu dGVycnVwdHMgZXZlbnQiKTsKIAogCS8qIEZJWE1FOiB2YWxpZGF0ZSBldmVudCBtYXNrICov CiAJZXZlbnQtPmV2ZW50cyA9IGV2ZW50czsKIAotCWlmIChldmVudHMgPT0gV0xfTEFUQ0hf U0VUKQorCWlmIChldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJaWYgKGxhdGNoICYm IGxhdGNoLT5vd25lcl9waWQgIT0gTXlQcm9jUGlkKQotCQkJZWxvZyhFUlJPUiwgImNhbm5v dCB3YWl0IG9uIGEgbGF0Y2ggb3duZWQgYnkgYW5vdGhlciBwcm9jZXNzIik7Ci0JCXNldC0+ bGF0Y2ggPSBsYXRjaDsKKwkJc2V0LT5pbnRlcnJ1cHRfbWFzayA9IGludGVycnVwdE1hc2s7 CiAKIAkJLyoKLQkJICogT24gVW5peCwgd2UgZG9uJ3QgbmVlZCB0byBtb2RpZnkgdGhlIGtl cm5lbCBvYmplY3QgYmVjYXVzZSB0aGUKLQkJICogdW5kZXJseWluZyBwaXBlIChpZiB0aGVy ZSBpcyBvbmUpIGlzIHRoZSBzYW1lIGZvciBhbGwgbGF0Y2hlcyBzbyB3ZQotCQkgKiBjYW4g cmV0dXJuIGltbWVkaWF0ZWx5LiAgT24gV2luZG93cywgd2UgbmVlZCB0byB1cGRhdGUgb3Vy IGFycmF5IG9mCi0JCSAqIGhhbmRsZXMsIGJ1dCB3ZSBsZWF2ZSB0aGUgb2xkIG9uZSBpbiBw bGFjZSBhbmQgdG9sZXJhdGUgc3B1cmlvdXMKLQkJICogd2FrZXVwcyBpZiB0aGUgbGF0Y2gg aXMgZGlzYWJsZWQuCisJCSAqIFdlIGRvbid0IGJvdGhlciB0byBhZGp1c3QgdGhlIGV2ZW50 IHdoZW4gdGhlIGludGVycnVwdCBtYXNrCisJCSAqIGNoYW5nZXMuICBJdCBtZWFucyB0aGF0 IHdoZW4gaW50ZXJydXB0IG1hc2sgaXMgc2V0IHRvIDAsIHdlIHdpbGwKKwkJICogbGlzdGVu IG9uIHRoZSBrZXJuZWwgb2JqZWN0IHVubmVjZXNzYXJpbHksIGFuZCBtaWdodCBnZXQgc29t ZQorCQkgKiBzcHVyaW91cyB3YWtldXBzLiBUaGUgaW50ZXJydXB0IHNlbmRpbmcgY29kZSBz aG91bGQgbm90IHdha2UgdXMgdXAKKwkJICogaWYgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQ VFMgYml0IGlzIG5vdCBhcm1lZCwgdGhvdWdoLCBzbyBpdAorCQkgKiBzaG91bGQgYmUgcmFy ZS4KIAkJICovCi0jaWYgZGVmaW5lZChXQUlUX1VTRV9XSU4zMikKLQkJaWYgKCFsYXRjaCkK LQkJCXJldHVybjsKLSNlbHNlCiAJCXJldHVybjsKLSNlbmRpZgogCX0KIAogI2lmIGRlZmlu ZWQoV0FJVF9VU0VfRVBPTEwpCkBAIC03NDUsOSArNzQ3LDggQEAgV2FpdEV2ZW50QWRqdXN0 RXBvbGwoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQsIGludCBhY3Rpb24p CiAJZXBvbGxfZXYuZXZlbnRzID0gRVBPTExFUlIgfCBFUE9MTEhVUDsKIAogCS8qIHByZXBh cmUgcG9sbGZkIGVudHJ5IG9uY2UgKi8KLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRD SF9TRVQpCisJaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNz ZXJ0KHNldC0+bGF0Y2ggIT0gTlVMTCk7CiAJCWVwb2xsX2V2LmV2ZW50cyB8PSBFUE9MTElO OwogCX0KIAllbHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgp CkBAIC03OTQsOSArNzk1LDggQEAgV2FpdEV2ZW50QWRqdXN0UG9sbChXYWl0RXZlbnRTZXQg KnNldCwgV2FpdEV2ZW50ICpldmVudCkKIAlwb2xsZmQtPmZkID0gZXZlbnQtPmZkOwogCiAJ LyogcHJlcGFyZSBwb2xsZmQgZW50cnkgb25jZSAqLwotCWlmIChldmVudC0+ZXZlbnRzID09 IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJ ewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKIAkJcG9sbGZkLT5ldmVudHMgPSBQ T0xMSU47CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfUE9TVE1BU1RFUl9E RUFUSCkKQEAgLTg1OCw5ICs4NTgsOSBAQCBXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0 bWFzdGVyKHN0cnVjdCBrZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZAotV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkTGF0Y2goc3RydWN0 IGtldmVudCAqa19ldiwgV2FpdEV2ZW50ICpldmVudCkKK1dhaXRFdmVudEFkanVzdEtxdWV1 ZUFkZEludGVycnVwdFdha2V1cChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2 ZW50KQogewotCS8qIEZvciBub3cgbGF0Y2ggY2FuIG9ubHkgYmUgYWRkZWQsIG5vdCByZW1v dmVkLiAqLworCS8qIEZvciBub3cgaW50ZXJydXB0IHdha2V1cCBjYW4gb25seSBiZSBhZGRl ZCwgbm90IHJlbW92ZWQuICovCiAJa19ldi0+aWRlbnQgPSBTSUdVUkc7CiAJa19ldi0+Zmls dGVyID0gRVZGSUxUX1NJR05BTDsKIAlrX2V2LT5mbGFncyA9IEVWX0FERDsKQEAgLTg4Niw4 ICs4ODYsNyBAQCBXYWl0RXZlbnRBZGp1c3RLcXVldWUoV2FpdEV2ZW50U2V0ICpzZXQsIFdh aXRFdmVudCAqZXZlbnQsIGludCBvbGRfZXZlbnRzKQogCWlmIChvbGRfZXZlbnRzID09IGV2 ZW50LT5ldmVudHMpCiAJCXJldHVybjsKIAotCUFzc2VydChldmVudC0+ZXZlbnRzICE9IFdM X0xBVENIX1NFVCB8fCBzZXQtPmxhdGNoICE9IE5VTEwpOwotCUFzc2VydChldmVudC0+ZXZl bnRzID09IFdMX0xBVENIX1NFVCB8fAorCUFzc2VydChldmVudC0+ZXZlbnRzID09IFdMX0lO VEVSUlVQVCB8fAogCQkgICBldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgg fHwKIAkJICAgKGV2ZW50LT5ldmVudHMgJiAoV0xfU09DS0VUX1JFQURBQkxFIHwKIAkJCQkJ CQkgV0xfU09DS0VUX1dSSVRFQUJMRSB8CkBAIC05MDIsMTAgKzkwMSwxMCBAQCBXYWl0RXZl bnRBZGp1c3RLcXVldWUoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQsIGlu dCBvbGRfZXZlbnRzKQogCQkgKi8KIAkJV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkUG9zdG1h c3Rlcigma19ldltjb3VudCsrXSwgZXZlbnQpOwogCX0KLQllbHNlIGlmIChldmVudC0+ZXZl bnRzID09IFdMX0xBVENIX1NFVCkKKwllbHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdMX0lO VEVSUlVQVCkKIAl7Ci0JCS8qIFdlIGRldGVjdCBsYXRjaCB3YWtldXAgdXNpbmcgYSBzaWdu YWwgZXZlbnQuICovCi0JCVdhaXRFdmVudEFkanVzdEtxdWV1ZUFkZExhdGNoKCZrX2V2W2Nv dW50KytdLCBldmVudCk7CisJCS8qIFdlIGRldGVjdCBpbnRlcnJ1cHQgd2FrZXVwIHVzaW5n IGEgc2lnbmFsIGV2ZW50LiAqLworCQlXYWl0RXZlbnRBZGp1c3RLcXVldWVBZGRJbnRlcnJ1 cHRXYWtldXAoJmtfZXZbY291bnQrK10sIGV2ZW50KTsKIAl9CiAJZWxzZQogCXsKQEAgLTk4 NSwxMCArOTg0LDEzIEBAIFdhaXRFdmVudEFkanVzdFdpbjMyKFdhaXRFdmVudFNldCAqc2V0 LCBXYWl0RXZlbnQgKmV2ZW50KQogewogCUhBTkRMRQkgICAqaGFuZGxlID0gJnNldC0+aGFu ZGxlc1tldmVudC0+cG9zICsgMV07CiAKLQlpZiAoZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRD SF9TRVQpCisJaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJQXNz ZXJ0KHNldC0+bGF0Y2ggIT0gTlVMTCk7Ci0JCSpoYW5kbGUgPSBzZXQtPmxhdGNoLT5ldmVu dDsKKwkJLyoKKwkJICogV2UgcmVnaXN0ZXIgdGhlIGV2ZW50IGV2ZW4gaWYgaW50ZXJydXB0 X21hc2sgaXMgemVyby4gV2UgbWlnaHQgZ2V0CisJCSAqIHNvbWUgc3B1cmlvdXMgd2FrZXVw cywgYnV0IHRoYXQncyBPSworCQkgKi8KKwkJKmhhbmRsZSA9IE15UHJvYyA/IE15UHJvYy0+ aW50ZXJydXB0V2FrZXVwRXZlbnQgOiBMb2NhbEludGVycnVwdFdha2V1cEV2ZW50OwogCX0K IAllbHNlIGlmIChldmVudC0+ZXZlbnRzID09IFdMX1BPU1RNQVNURVJfREVBVEgpCiAJewpA QCAtMTA0NCw2ICsxMDQ2LDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNl dCwgbG9uZyB0aW1lb3V0LAogCWluc3RyX3RpbWUJc3RhcnRfdGltZTsKIAlpbnN0cl90aW1l CWN1cl90aW1lOwogCWxvbmcJCWN1cl90aW1lb3V0ID0gLTE7CisJYm9vbAkJc2xlZXBpbmdf ZmxhZ19hcm1lZCA9IGZhbHNlOwogCiAJQXNzZXJ0KG5ldmVudHMgPiAwKTsKIApAQCAtMTA2 NSwxMDAgKzEwNjgsMTE3IEBAIFdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQs IGxvbmcgdGltZW91dCwKICNpZm5kZWYgV0lOMzIKIAl3YWl0aW5nID0gdHJ1ZTsKICNlbHNl Ci0JLyogRW5zdXJlIHRoYXQgc2lnbmFscyBhcmUgc2VydmljZWQgZXZlbiBpZiBsYXRjaCBp cyBhbHJlYWR5IHNldCAqLworCS8qIEVuc3VyZSB0aGF0IHNpZ25hbHMgYXJlIHNlcnZpY2Vk IGV2ZW4gaWYgaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZyAqLwogCXBnd2luMzJfZGlz cGF0Y2hfcXVldWVkX3NpZ25hbHMoKTsKICNlbmRpZgotCXdoaWxlIChyZXR1cm5lZF9ldmVu dHMgPT0gMCkKKworCS8qCisJICogQXRvbWljYWxseSBjaGVjayBpZiB0aGUgaW50ZXJydXB0 IGlzIGFscmVhZHkgcGVuZGluZyBhbmQgYWR2ZXJ0aXNlIHRoYXQKKwkgKiB3ZSBhcmUgYWJv dXQgdG8gc3RhcnQgc2xlZXBpbmcuIElmIGl0IHdhcyBhbHJlYWR5IHBlbmRpbmcsIGF2b2lk CisJICogYmxvY2tpbmcgYWx0b2dldGhlci4KKwkgKgorCSAqIElmIHNvbWVvbmUgc2V0cyB0 aGUgaW50ZXJydXB0IGZsYWcgYmV0d2VlbiB0aGlzIGFuZCB0aGUKKwkgKiBXYWl0RXZlbnRT ZXRXYWl0QmxvY2soKSBiZWxvdywgdGhlIHNldHRlciB3aWxsIHdyaXRlIGEgYnl0ZSB0byB0 aGUgcGlwZQorCSAqIChvciBzaWduYWwgdXMgYW5kIHRoZSBzaWduYWwgaGFuZGxlciB3aWxs IGRvIHRoYXQpLCBhbmQgdGhlIHJlYWRpbmVzcworCSAqIHJvdXRpbmUgd2lsbCByZXR1cm4g aW1tZWRpYXRlbHkuCisJICovCisJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCkKIAl7 Ci0JCWludAkJCXJjOworCQlJbnRlcnJ1cHRNYXNrIG9sZF9tYXNrOworCQlib29sCQlhbHJl YWR5X3BlbmRpbmcgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBDaGVjayBpZiB0aGUgbGF0Y2gg aXMgc2V0IGFscmVhZHkgZmlyc3QuICBJZiBzbywgd2UgZWl0aGVyIGV4aXQKLQkJICogaW1t ZWRpYXRlbHkgb3IgYXNrIHRoZSBrZXJuZWwgZm9yIGZ1cnRoZXIgZXZlbnRzIGF2YWlsYWJs ZSByaWdodAotCQkgKiBub3cgd2l0aG91dCB3YWl0aW5nLCBkZXBlbmRpbmcgb24gaG93IG1h bnkgZXZlbnRzIHRoZSBjYWxsZXIgd2FudHMuCi0JCSAqCi0JCSAqIElmIHNvbWVvbmUgc2V0 cyB0aGUgbGF0Y2ggYmV0d2VlbiB0aGlzIGFuZCB0aGUKLQkJICogV2FpdEV2ZW50U2V0V2Fp dEJsb2NrKCkgYmVsb3csIHRoZSBzZXR0ZXIgd2lsbCB3cml0ZSBhIGJ5dGUgdG8gdGhlCi0J CSAqIHBpcGUgKG9yIHNpZ25hbCB1cyBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHdpbGwgZG8g dGhhdCksIGFuZCB0aGUKLQkJICogcmVhZGluZXNzIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1t ZWRpYXRlbHkuCi0JCSAqCi0JCSAqIE9uIHVuaXgsIElmIHRoZXJlJ3MgYSBwZW5kaW5nIGJ5 dGUgaW4gdGhlIHNlbGYgcGlwZSwgd2UnbGwgbm90aWNlCi0JCSAqIHdoZW5ldmVyIGJsb2Nr aW5nLiBPbmx5IGNsZWFyaW5nIHRoZSBwaXBlIGluIHRoYXQgY2FzZSBhdm9pZHMKLQkJICog aGF2aW5nIHRvIGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdExhdGNoT3JTb2NrZXQoKSBpcyB1 c2VkLiBTaG91bGQKLQkJICogdGhlIHBpcGUtYnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwg b2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMgaW4KLQkJICogbm9uYmxvY2tpbmcgbW9kZS4gSXQn cyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhlCi0JCSAqIHNlbGYg cGlwZSBpc24ndCBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3YWl0aW5nID0gdHJ1 ZSksIG9yCi0JCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhhbmRsZXIgaW4gbGF0Y2hfc2ln dXJnX2hhbmRsZXIoKS4KLQkJICoKLQkJICogT24gd2luZG93cywgd2UnbGwgYWxzbyBub3Rp Y2UgaWYgdGhlcmUncyBhIHBlbmRpbmcgZXZlbnQgZm9yIHRoZQotCQkgKiBsYXRjaCB3aGVu IGJsb2NraW5nLCBidXQgdGhlcmUncyBubyBkYW5nZXIgb2YgYW55dGhpbmcgZmlsbGluZyB1 cCwKLQkJICogYXMgIlNldHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBhbHJlYWR5IHNldCBoYXMg bm8gZWZmZWN0LiIuCi0JCSAqCi0JCSAqIE5vdGU6IHdlIGFzc3VtZSB0aGF0IHRoZSBrZXJu ZWwgY2FsbHMgaW52b2x2ZWQgaW4gbGF0Y2ggbWFuYWdlbWVudAotCQkgKiB3aWxsIHByb3Zp ZGUgYWRlcXVhdGUgc3luY2hyb25pemF0aW9uIG9uIG1hY2hpbmVzIHdpdGggd2VhayBtZW1v cnkKLQkJICogb3JkZXJpbmcsIHNvIHRoYXQgd2UgY2Fubm90IG1pc3Mgc2VlaW5nIGlzX3Nl dCBpZiBhIG5vdGlmaWNhdGlvbgotCQkgKiBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC4KKwkJ ICogUGVyZm9ybSBhIHBsYWluIGF0b21pYyByZWFkIGZpcnN0IGFzIGEgZmFzdCBwYXRoIGZv ciB0aGUgY2FzZSB0aGF0CisJCSAqIGFuIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcu CiAJCSAqLwotCQlpZiAoc2V0LT5sYXRjaCAmJiAhc2V0LT5sYXRjaC0+aXNfc2V0KQorCQlv bGRfbWFzayA9IHBnX2F0b21pY19yZWFkX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzKTsKKwkJ YWxyZWFkeV9wZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0X21hc2spICE9 IDApOworCisJCWlmICghYWxyZWFkeV9wZW5kaW5nKQogCQl7Ci0JCQkvKiBhYm91dCB0byBz bGVlcCBvbiBhIGxhdGNoICovCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IHRy dWU7Ci0JCQlwZ19tZW1vcnlfYmFycmllcigpOwotCQkJLyogYW5kIHJlY2hlY2sgKi8KKwkJ CS8qCisJCQkgKiBBdG9taWNhbGx5IHNldCB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBi aXQgYW5kIHJlLWNoZWNrIGlmCisJCQkgKiBhbiBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBwZW5k aW5nLiBUaGUgYXRvbWljIG9wIHByb3ZpZGVzCisJCQkgKiBzeW5jaHJvbml6YXRpb24gc28g dGhhdCBpZiBhbiBpbnRlcnJ1cHQgYml0IGlzIHNldCBhZnRlciB0aGlzLAorCQkJICogdGhl IHNldHRlciB3aWxsIHdha2UgdXMgdXAuCisJCQkgKi8KKwkJCW9sZF9tYXNrID0gcGdfYXRv bWljX2ZldGNoX29yX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLCBTTEVFUElOR19PTl9JTlRF UlJVUFRTKTsKKwkJCWFscmVhZHlfcGVuZGluZyA9ICgob2xkX21hc2sgJiBzZXQtPmludGVy cnVwdF9tYXNrKSAhPSAwKTsKKworCQkJLyogcmVtZW1iZXIgdG8gY2xlYXIgdGhlIFNMRUVQ SU5HX09OX0lOVEVSUlVQVFMgZmxhZyBsYXRlciAqLworCQkJc2xlZXBpbmdfZmxhZ19hcm1l ZCA9IHRydWU7CiAJCX0KIAotCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5pc19z ZXQpCisJCWlmIChhbHJlYWR5X3BlbmRpbmcpCiAJCXsKIAkJCW9jY3VycmVkX2V2ZW50cy0+ ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJb2NjdXJyZWRfZXZlbnRzLT5wb3MgPSBzZXQt PmxhdGNoX3BvczsKKwkJCW9jY3VycmVkX2V2ZW50cy0+cG9zID0gc2V0LT5pbnRlcnJ1cHRf cG9zOwogCQkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPQotCQkJCXNldC0+ZXZlbnRz W3NldC0+bGF0Y2hfcG9zXS51c2VyX2RhdGE7Ci0JCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50 cyA9IFdMX0xBVENIX1NFVDsKKwkJCQlzZXQtPmV2ZW50c1tzZXQtPmludGVycnVwdF9wb3Nd LnVzZXJfZGF0YTsKKwkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBU OwogCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAotCQkJ LyogY291bGQgaGF2ZSBiZWVuIHNldCBhYm92ZSAqLwotCQkJc2V0LT5sYXRjaC0+bWF5YmVf c2xlZXBpbmcgPSBmYWxzZTsKLQotCQkJaWYgKHJldHVybmVkX2V2ZW50cyA9PSBuZXZlbnRz KQotCQkJCWJyZWFrOwkJCS8qIG91dHB1dCBidWZmZXIgZnVsbCBhbHJlYWR5ICovCi0KIAkJ CS8qCiAJCQkgKiBFdmVuIHRob3VnaCB3ZSBhbHJlYWR5IGhhdmUgYW4gZXZlbnQsIHdlJ2xs IHBvbGwganVzdCBvbmNlIHdpdGgKLQkJCSAqIHplcm8gdGltZW91dCB0byBzZWUgd2hhdCBu b24tbGF0Y2ggZXZlbnRzIHdlIGNhbiBmaXQgaW50byB0aGUKLQkJCSAqIG91dHB1dCBidWZm ZXIgYXQgdGhlIHNhbWUgdGltZS4KKwkJCSAqIHplcm8gdGltZW91dCB0byBzZWUgd2hhdCBu b24taW50ZXJydXB0IGV2ZW50cyB3ZSBjYW4gZml0IGludG8KKwkJCSAqIHRoZSBvdXRwdXQg YnVmZmVyIGF0IHRoZSBzYW1lIHRpbWUuCiAJCQkgKi8KIAkJCWN1cl90aW1lb3V0ID0gMDsK IAkJCXRpbWVvdXQgPSAwOwogCQl9CisJfQogCisJaWYgKG5ldmVudHMgPiByZXR1cm5lZF9l dmVudHMpCisJewogCQkvKgogCQkgKiBXYWl0IGZvciBldmVudHMgdXNpbmcgdGhlIHJlYWRp bmVzcyBwcmltaXRpdmUgY2hvc2VuIGF0IHRoZSB0b3Agb2YKIAkJICogdGhpcyBmaWxlLiBJ ZiAtMSBpcyByZXR1cm5lZCwgYSB0aW1lb3V0IGhhcyBvY2N1cnJlZCwgaWYgMCB3ZSBoYXZl CiAJCSAqIHRvIHJldHJ5LCBldmVyeXRoaW5nID49IDEgaXMgdGhlIG51bWJlciBvZiByZXR1 cm5lZCBldmVudHMuCisJCSAqCisJCSAqIE9uIHVuaXgsIElmIHRoZXJlJ3MgYSBwZW5kaW5n IGJ5dGUgaW4gdGhlIHNlbGYgcGlwZSwgd2UnbGwgbm90aWNlCisJCSAqIHdoZW5ldmVyIGJs b2NraW5nLiBPbmx5IGNsZWFyaW5nIHRoZSBwaXBlIGluIHRoYXQgY2FzZSBhdm9pZHMKKwkJ ICogaGF2aW5nIHRvIGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdEludGVycnVwdE9yU29ja2V0 KCkgaXMgdXNlZC4KKwkJICogU2hvdWxkIHRoZSBwaXBlLWJ1ZmZlciBmaWxsIHVwIHdlJ3Jl IHN0aWxsIG9rLCBiZWNhdXNlIHRoZSBwaXBlIGlzCisJCSAqIGluIG5vbmJsb2NraW5nIG1v ZGUuIEl0J3MgdW5saWtlbHkgZm9yIHRoYXQgdG8gaGFwcGVuLCBiZWNhdXNlIHRoZQorCQkg KiBzZWxmIHBpcGUgaXNuJ3QgZmlsbGVkIHVubGVzcyB3ZSdyZSBibG9ja2luZyAod2FpdGlu ZyA9IHRydWUpLCBvcgorCQkgKiBmcm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyIGluIGlu dGVycnVwdF9zaWd1cmdfaGFuZGxlcigpLgorCQkgKgorCQkgKiBPbiB3aW5kb3dzLCB3ZSds bCBhbHNvIG5vdGljZSBpZiB0aGVyZSdzIGEgcGVuZGluZyBldmVudCBmb3IgdGhlCisJCSAq IGludGVycnVwdCB3aGVuIGJsb2NraW5nLCBidXQgdGhlcmUncyBubyBkYW5nZXIgb2YgYW55 dGhpbmcgZmlsbGluZworCQkgKiB1cCwgYXMgIlNldHRpbmcgYW4gZXZlbnQgdGhhdCBpcyBh bHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0LiIuCiAJCSAqLwotCQlyYyA9IFdhaXRFdmVudFNl dFdhaXRCbG9jayhzZXQsIGN1cl90aW1lb3V0LAotCQkJCQkJCQkgICBvY2N1cnJlZF9ldmVu dHMsIG5ldmVudHMgLSByZXR1cm5lZF9ldmVudHMpOworCQlmb3IgKDs7KQorCQl7CisJCQlp bnQJCQlyYzsKIAotCQlpZiAoc2V0LT5sYXRjaCAmJgotCQkJc2V0LT5sYXRjaC0+bWF5YmVf c2xlZXBpbmcpCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOworCQkJ cmMgPSBXYWl0RXZlbnRTZXRXYWl0QmxvY2soc2V0LCBjdXJfdGltZW91dCwKKwkJCQkJCQkJ CSAgIG9jY3VycmVkX2V2ZW50cywgbmV2ZW50cyAtIHJldHVybmVkX2V2ZW50cyk7CiAKLQkJ aWYgKHJjID09IC0xKQotCQkJYnJlYWs7CQkJCS8qIHRpbWVvdXQgb2NjdXJyZWQgKi8KLQkJ ZWxzZQotCQkJcmV0dXJuZWRfZXZlbnRzICs9IHJjOworCQkJaWYgKHJjID09IC0xKQorCQkJ CWJyZWFrOwkJCS8qIHRpbWVvdXQgb2NjdXJyZWQgKi8KKwkJCWVsc2UKKwkJCQlyZXR1cm5l ZF9ldmVudHMgKz0gcmM7CiAKLQkJLyogSWYgd2UncmUgbm90IGRvbmUsIHVwZGF0ZSBjdXJf dGltZW91dCBmb3IgbmV4dCBpdGVyYXRpb24gKi8KLQkJaWYgKHJldHVybmVkX2V2ZW50cyA9 PSAwICYmIHRpbWVvdXQgPj0gMCkKLQkJewotCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChj dXJfdGltZSk7Ci0JCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFydF90aW1l KTsKLQkJCWN1cl90aW1lb3V0ID0gdGltZW91dCAtIChsb25nKSBJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhjdXJfdGltZSk7Ci0JCQlpZiAoY3VyX3RpbWVvdXQgPD0gMCkKKwkJCWlmIChy ZXR1cm5lZF9ldmVudHMgPiAwKQogCQkJCWJyZWFrOworCisJCQkvKiBJZiB3ZSdyZSBub3Qg ZG9uZSwgdXBkYXRlIGN1cl90aW1lb3V0IGZvciBuZXh0IGl0ZXJhdGlvbiAqLworCQkJaWYg KHRpbWVvdXQgPj0gMCkKKwkJCXsKKwkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1cl90 aW1lKTsKKwkJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFydF90aW1lKTsK KwkJCQljdXJfdGltZW91dCA9IHRpbWVvdXQgLSAobG9uZykgSU5TVFJfVElNRV9HRVRfTUlM TElTRUMoY3VyX3RpbWUpOworCQkJCWlmIChjdXJfdGltZW91dCA8PSAwKQorCQkJCQlicmVh azsKKwkJCX0KIAkJfQogCX0KKworCS8qIElmIHdlIHNldCB0aGUgU0xFRVBJTkdfT05fSU5U RVJSVVBUUyBmbGFnLCByZXNldCBpdCBhZ2FpbiAqLworCWlmIChzbGVlcGluZ19mbGFnX2Fy bWVkKQorCQlwZ19hdG9taWNfZmV0Y2hfYW5kX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLCB+ KCh1aW50MzIpIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpKTsKKwogI2lmbmRlZiBXSU4zMgog CXdhaXRpbmcgPSBmYWxzZTsKICNlbmRpZgpAQCAtMTIyOSwxNiArMTI0OSwxNiBAQCBXYWl0 RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwK IAkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsK IAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2 ZW50cyA9PSBXTF9MQVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdM X0lOVEVSUlVQVCAmJgogCQkJY3VyX2Vwb2xsX2V2ZW50LT5ldmVudHMgJiAoRVBPTExJTiB8 IEVQT0xMRVJSIHwgRVBPTExIVVApKQogCQl7CiAJCQkvKiBEcmFpbiB0aGUgc2lnbmFsZmQu ICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5t YXliZV9zbGVlcGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRl cnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91NjQoTXlQZW5kaW5nSW50ZXJy dXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVk X2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0g V0xfSU5URVJSVVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2 ZW50cysrOwogCQkJfQpAQCAtMTM5MSwxMyArMTQxMSwxMyBAQCBXYWl0RXZlbnRTZXRXYWl0 QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJb2NjdXJyZWRf ZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQtPnVzZXJfZGF0YTsKIAkJb2NjdXJyZWRf ZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9M QVRDSF9TRVQgJiYKKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0lOVEVSUlVQVCAm JgogCQkJY3VyX2txdWV1ZV9ldmVudC0+ZmlsdGVyID09IEVWRklMVF9TSUdOQUwpCiAJCXsK LQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nICYmIHNl dC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVycnVwdF9tYXNrICE9IDAgJiYg KHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAmIHNldC0+aW50ZXJy dXB0X21hc2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5W QUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9MQVRDSF9T RVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQkJ b2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRzKys7CiAJCQl9CkBAIC0x NTEzLDE2ICsxNTMzLDE2IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQg KnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9 IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7 CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAo Y3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYmCiAJCQkoY3VyX3BvbGxmZC0+ cmV2ZW50cyAmIChQT0xMSU4gfCBQT0xMSFVQIHwgUE9MTEVSUiB8IFBPTExOVkFMKSkpCiAJ CXsKIAkJCS8qIFRoZXJlJ3MgZGF0YSBpbiB0aGUgc2VsZi1waXBlLCBjbGVhciBpdC4gKi8K IAkJCWRyYWluKCk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPm1heWJl X3NsZWVwaW5nICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVycnVw dF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRz KSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRfZXZl bnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVu dHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9J TlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZlbnRz Kys7CiAJCQl9CkBAIC0xNjIxLDYgKzE2NDEsMTUgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2Nr KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCQljdXJfZXZlbnQtPnJl c2V0ID0gZmFsc2U7CiAJCX0KIAorCQkvKgorCQkgKiBXZSBuZWVkIHRvIHVzZSBkaWZmZXJl bnQgZXZlbnQgb2JqZWN0IGRlcGVuZGluZyBvbiB3aGV0aGVyICJsb2NhbCIKKwkJICogb3Ig InNoYXJlZCBtZW1vcnkiIGludGVycnVwdHMgYXJlIGluIHVzZS4gVGhlcmUncyBubyBlYXN5 IHdheSB0bworCQkgKiBhZGp1c3QgYWxsIGV4aXN0aW5nIFdhaXRFdmVudFNldCB3aGVuIHlv dSBzd2l0Y2ggZnJvbSBsb2NhbCB0bworCQkgKiBzaGFyZWQgb3IgYmFjaywgc28gd2UgcmVm cmVzaCBpdCBvbiBldmVyeSBjYWxsLgorCQkgKi8KKwkJaWYgKGN1cl9ldmVudC0+ZXZlbnRz ICYgV0xfSU5URVJSVVBUKQorCQkJV2FpdEV2ZW50QWRqdXN0V2luMzIoc2V0LCBjdXJfZXZl bnQpOworCiAJCS8qCiAJCSAqIFdlIGFzc29jaWF0ZSB0aGUgc29ja2V0IHdpdGggYSBuZXcg ZXZlbnQgaGFuZGxlIGZvciBlYWNoCiAJCSAqIFdhaXRFdmVudFNldC4gIEZEX0NMT1NFIGlz IG9ubHkgZ2VuZXJhdGVkIG9uY2UgaWYgdGhlIG90aGVyIGVuZApAQCAtMTcyNiwxOSArMTc1 NSwxNSBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soV2FpdEV2ZW50U2V0ICpzZXQsIGludCBj dXJfdGltZW91dCwKIAkJb2NjdXJyZWRfZXZlbnRzLT51c2VyX2RhdGEgPSBjdXJfZXZlbnQt PnVzZXJfZGF0YTsKIAkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSAwOwogCi0JCWlmIChj dXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJCWlmIChjdXJfZXZlbnQtPmV2 ZW50cyA9PSBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCS8qCi0JCQkgKiBXZSBjYW5ub3QgdXNl IHNldC0+bGF0Y2gtPmV2ZW50IHRvIHJlc2V0IHRoZSBmaXJlZCBldmVudCBpZiB3ZQotCQkJ ICogYXJlbid0IHdhaXRpbmcgb24gdGhpcyBsYXRjaCBub3cuCi0JCQkgKi8KIAkJCWlmICgh UmVzZXRFdmVudChzZXQtPmhhbmRsZXNbY3VyX2V2ZW50LT5wb3MgKyAxXSkpCiAJCQkJZWxv ZyhFUlJPUiwgIlJlc2V0RXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RF cnJvcigpKTsKIAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVfc2xl ZXBpbmcgJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21h c2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYg c2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMt PmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9 IFdMX0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVS UlVQVDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsK IAkJCX0KQEAgLTE3ODMsNyArMTgwOCw3IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0 RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCiAJCQkJLyotLS0tLS0KIAkJCQkg KiBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGRvZXNuJ3QgZ3VhcmFudGVlIHRoYXQgYSByZWFk IGV2ZW50Ci0JCQkJICogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgbGF0Y2ggaXMgc2V0IGF0 IHRoZSBzYW1lIHRpbWUuICBFdmVuCisJCQkJICogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUg aW50ZXJydXB0IGlzIHNldCBhdCB0aGUgc2FtZSB0aW1lLiAgRXZlbgogCQkJCSAqIGlmIGl0 IGRpZCwgdGhlIGNhbGxlciBtaWdodCBkcm9wIHRoYXQgZXZlbnQgZXhwZWN0aW5nIGl0IHRv CiAJCQkJICogcmVvY2N1ciBvbiBuZXh0IGNhbGwuICBTbywgd2UgbXVzdCBmb3JjZSB0aGUg ZXZlbnQgdG8gYmUKIAkJCQkgKiByZXNldCBpZiB0aGlzIFdhaXRFdmVudFNldCBpcyB1c2Vk IGFnYWluIGluIG9yZGVyIHRvIGF2b2lkCkBAIC0xODg5LDE4ICsxOTE0LDE3IEBAIEdldE51 bVJlZ2lzdGVyZWRXYWl0RXZlbnRzKFdhaXRFdmVudFNldCAqc2V0KQogI2lmIGRlZmluZWQo V0FJVF9VU0VfU0VMRl9QSVBFKQogCiAvKgotICogU2V0TGF0Y2ggdXNlcyBTSUdVUkcgdG8g d2FrZSB1cCB0aGUgcHJvY2VzcyB3YWl0aW5nIG9uIHRoZSBsYXRjaC4KLSAqCi0gKiBXYWtl IHVwIFdhaXRMYXRjaCwgaWYgd2UncmUgd2FpdGluZy4KKyAqIFdha2V1cE90aGVyUHJvYyBh bmQgV2FrdXBNeVByb2MgdXNlIFNJR1VSRyB0byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRp bmcKKyAqIGZvciBhbiBpbnRlcnJ1cHQKICAqLwogc3RhdGljIHZvaWQKLWxhdGNoX3NpZ3Vy Z19oYW5kbGVyKFNJR05BTF9BUkdTKQoraW50ZXJydXB0X3NpZ3VyZ19oYW5kbGVyKFNJR05B TF9BUkdTKQogewogCWlmICh3YWl0aW5nKQogCQlzZW5kU2VsZlBpcGVCeXRlKCk7CiB9CiAK LS8qIFNlbmQgb25lIGJ5dGUgdG8gdGhlIHNlbGYtcGlwZSwgdG8gd2FrZSB1cCBXYWl0TGF0 Y2ggKi8KKy8qIFNlbmQgb25lIGJ5dGUgdG8gdGhlIHNlbGYtcGlwZSwgdG8gd2FrZSB1cCBX YWl0SW50ZXJydXB0ICovCiBzdGF0aWMgdm9pZAogc2VuZFNlbGZQaXBlQnl0ZSh2b2lkKQog ewpAQCAtMTkxNyw3ICsxOTQxLDcgQEAgcmV0cnk6CiAKIAkJLyoKIAkJICogSWYgdGhlIHBp cGUgaXMgZnVsbCwgd2UgZG9uJ3QgbmVlZCB0byByZXRyeSwgdGhlIGRhdGEgdGhhdCdzIHRo ZXJlCi0JCSAqIGFscmVhZHkgaXMgZW5vdWdoIHRvIHdha2UgdXAgV2FpdExhdGNoLgorCQkg KiBhbHJlYWR5IGlzIGVub3VnaCB0byB3YWtlIHVwIFdhaXRJbnRlcnJ1cHQuCiAJCSAqLwog CQlpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVXT1VMREJMT0NLKQogCQkJcmV0 dXJuOwpAQCAtMjAwNCw3ICsyMDI4LDYgQEAgUmVzT3duZXJSZWxlYXNlV2FpdEV2ZW50U2V0 KERhdHVtIHJlcykKIAlGcmVlV2FpdEV2ZW50U2V0KHNldCk7CiB9CiAKLSNpZm5kZWYgV0lO MzIKIC8qCiAgKiBXYWtlIHVwIG15IHByb2Nlc3MgaWYgaXQncyBjdXJyZW50bHkgc2xlZXBp bmcgaW4gV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkKICAqCkBAIC0yMDE0LDEyICsyMDM3LDEx IEBAIFJlc093bmVyUmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpCiAgKgogICogTkI6 IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gY3JpdGljYWwgc2VjdGlvbnMgYW5kIHNp Z25hbCBoYW5kbGVycyBzbwogICogdGhyb3dpbmcgYW4gZXJyb3IgaXMgbm90IGEgZ29vZCBp ZGVhLgotICoKLSAqIE9uIFdpbmRvd3MsIExhdGNoIHVzZXMgU2V0RXZlbnQgZGlyZWN0bHkg YW5kIHRoaXMgaXMgbm90IHVzZWQuCiAgKi8KIHZvaWQKIFdha2V1cE15UHJvYyh2b2lkKQog eworI2lmbmRlZiBXSU4zMgogI2lmIGRlZmluZWQoV0FJVF9VU0VfU0VMRl9QSVBFKQogCWlm ICh3YWl0aW5nKQogCQlzZW5kU2VsZlBpcGVCeXRlKCk7CkBAIC0yMDI3LDEyICsyMDQ5LDI4 IEBAIFdha2V1cE15UHJvYyh2b2lkKQogCWlmICh3YWl0aW5nKQogCQlraWxsKE15UHJvY1Bp ZCwgU0lHVVJHKTsKICNlbmRpZgorI2Vsc2UKKwlTZXRFdmVudChNeVByb2MgPyBNeVByb2Mt PmludGVycnVwdFdha2V1cEV2ZW50IDogTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCk7Cisj ZW5kaWYKIH0KIAogLyogU2ltaWxhciB0byBXYWtldXBNeVByb2MsIGJ1dCB3YWtlIHVwIGFu b3RoZXIgcHJvY2VzcyAqLwogdm9pZAotV2FrZXVwT3RoZXJQcm9jKGludCBwaWQpCitXYWtl dXBPdGhlclByb2MoUEdQUk9DICpwcm9jKQogewotCWtpbGwocGlkLCBTSUdVUkcpOwotfQor CS8qCisJICogTm90ZTogVGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgZnJvbSB0aGUgcG9zdG1h c3Rlciwgc28gYmUgY2FyZWZ1bCB0byBub3QKKwkgKiBhc3N1bWUgdGhhdCB0aGUgY29udGVu dHMgb2Ygc2hhcmVkIG1lbW9yeSBhcmUgdmFsaWQuICBSZWFkaW5nIHRoZSAncGlkJworCSAq IChvciBldmVudCBoYW5kbGUgb24gV2luZG93cykgaXMgc2FmZSBlbm91Z2guCisJICovCisj aWZuZGVmIFdJTjMyCisJa2lsbChwcm9jLT5waWQsIFNJR1VSRyk7CisjZWxzZQorCVNldEV2 ZW50KHByb2MtPmludGVycnVwdFdha2V1cEV2ZW50KTsKKworCS8qCisJICogTm90ZSB0aGF0 IHdlIHNpbGVudGx5IGlnbm9yZSBhbnkgZXJyb3JzLiBXZSBtaWdodCBiZSBpbiBhIHNpZ25h bAorCSAqIGhhbmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBz YWZlIHRvIGNhbGwgZWxvZygpLgorCSAqLwogI2VuZGlmCit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKaW5kZXggMWYxNmIzZjc0NzUu LjBiYTgzNmNmOWYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29u ZGl0aW9uX3ZhcmlhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRp dGlvbl92YXJpYWJsZS5jCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMu aD4KIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKQEAgLTE0OSwyMyArMTUwLDI0IEBAIENvbmRp dGlvblZhcmlhYmxlVGltZWRTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGlt ZW91dCwKIAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFydF90aW1lKTsKIAkJQXNzZXJ0 KHRpbWVvdXQgPj0gMCAmJiB0aW1lb3V0IDw9IElOVF9NQVgpOwogCQljdXJfdGltZW91dCA9 IHRpbWVvdXQ7Ci0JCXdhaXRfZXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCXdhaXRfZXZlbnRzID0gV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CiAJfQogCWVsc2UKLQkJd2FpdF9l dmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCQl3YWl0X2V2 ZW50cyA9IFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CiAKIAl3aGlsZSAo dHJ1ZSkKIAl7CiAJCWJvb2wJCWRvbmUgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBXYWl0IGZv ciBsYXRjaCB0byBiZSBzZXQuICAoSWYgd2UncmUgYXdha2VuZWQgZm9yIHNvbWUgb3RoZXIK LQkJICogcmVhc29uLCB0aGUgY29kZSBiZWxvdyB3aWxsIGNvcGUgYW55d2F5LikKKwkJICog V2FpdCBmb3IgaW50ZXJydXB0LiAgKElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVy IHJlYXNvbiwgdGhlCisJCSAqIGNvZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4pCiAJCSAq LwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIHdhaXRfZXZlbnRzLCBjdXJfdGltZW91 dCwgd2FpdF9ldmVudF9pbmZvKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJ bnRlcnJ1cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkgd2FpdF9l dmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOwogCi0JCS8qIFJlc2V0IGxh dGNoIGJlZm9yZSBleGFtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCi0J CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBmbGFnIGJlZm9yZSBleGFt aW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCisJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAKIAkJLyoKIAkJICogSWYgdGhpcyBwcm9jZXNz IGhhcyBiZWVuIHRha2VuIG91dCBvZiB0aGUgd2FpdCBsaXN0LCB0aGVuIHdlIGtub3cKQEAg LTE3OCw5ICsxODAsMTAgQEAgQ29uZGl0aW9uVmFyaWFibGVUaW1lZFNsZWVwKENvbmRpdGlv blZhcmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQkgKiB0aGUgd2FpdCBsaXN0IG9ubHkg d2hlbiB0aGUgY2FsbGVyIGNhbGxzCiAJCSAqIENvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xl ZXAuCiAJCSAqCi0JCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0IGxpc3QsIHRoZW4g dGhlIGxhdGNoIG11c3QgaGF2ZSBiZWVuIHNldAotCQkgKiBieSBzb21ldGhpbmcgb3RoZXIg dGhhbiBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsgdGhvdWdoIHdlIGRvbid0Ci0JCSAqIGd1 YXJhbnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3VzbHksIHdlJ2xsIGF2b2lkIHRoaXMgb2J2 aW91cyBjYXNlLgorCQkgKiBJZiB3ZSdyZSBzdGlsbCBpbiB0aGUgd2FpdCBsaXN0LCB0aGVu IHRoZSBpbnRlcnJ1cHQgbXVzdCBoYXZlIGJlZW4KKwkJICogc2VudCBieSBzb21ldGhpbmcg b3RoZXIgdGhhbiBDb25kaXRpb25WYXJpYWJsZVNpZ25hbDsgdGhvdWdoIHdlCisJCSAqIGRv bid0IGd1YXJhbnRlZSBub3QgdG8gcmV0dXJuIHNwdXJpb3VzbHksIHdlJ2xsIGF2b2lkIHRo aXMgb2J2aW91cworCQkgKiBjYXNlLgogCQkgKi8KIAkJU3BpbkxvY2tBY3F1aXJlKCZjdi0+ bXV0ZXgpOwogCQlpZiAoIXByb2NsaXN0X2NvbnRhaW5zKCZjdi0+d2FrZXVwLCBNeVByb2NO dW1iZXIsIGN2V2FpdExpbmspKQpAQCAtMjY4LDkgKzI3MSw5IEBAIENvbmRpdGlvblZhcmlh YmxlU2lnbmFsKENvbmRpdGlvblZhcmlhYmxlICpjdikKIAkJcHJvYyA9IHByb2NsaXN0X3Bv cF9oZWFkX25vZGUoJmN2LT53YWtldXAsIGN2V2FpdExpbmspOwogCVNwaW5Mb2NrUmVsZWFz ZSgmY3YtPm11dGV4KTsKIAotCS8qIElmIHdlIGZvdW5kIHNvbWVvbmUgc2xlZXBpbmcsIHNl dCB0aGVpciBsYXRjaCB0byB3YWtlIHRoZW0gdXAuICovCisJLyogSWYgd2UgZm91bmQgc29t ZW9uZSBzbGVlcGluZywgd2FrZSB0aGVtIHVwLiAqLwogCWlmIChwcm9jICE9IE5VTEwpCi0J CVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9XQUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiB9CiAKIC8qCkBA IC0yOTksOCArMzAyLDggQEAgQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoQ29uZGl0aW9u VmFyaWFibGUgKmN2KQogCSAqIENWIGFuZCBpbiBkb2luZyBzbyByZW1vdmUgb3VyIHNlbnRp bmVsIGVudHJ5LiAgQnV0IHRoYXQncyBmaW5lOiBzaW5jZQogCSAqIENWIHdhaXRlcnMgYXJl IGFsd2F5cyBhZGRlZCBhbmQgcmVtb3ZlZCBpbiBvcmRlciwgdGhhdCBtdXN0IG1lYW4gdGhh dAogCSAqIGV2ZXJ5IHByZXZpb3VzIHdhaXRlciBoYXMgYmVlbiB3YWtlbmVkLCBzbyB3ZSdy ZSBkb25lLiAgV2UnbGwgZ2V0IGFuCi0JICogZXh0cmEgInNldCIgb24gb3VyIGxhdGNoIGZy b20gdGhlIHNvbWVvbmUgZWxzZSdzIHNpZ25hbCwgd2hpY2ggaXMKLQkgKiBzbGlnaHRseSBp bmVmZmljaWVudCBidXQgaGFybWxlc3MuCisJICogZXh0cmEgaW50ZXJydXB0IGZyb20gdGhl IHNvbWVvbmUgZWxzZSdzIHNpZ25hbCwgd2hpY2ggaXMgc2xpZ2h0bHkKKwkgKiBpbmVmZmlj aWVudCBidXQgaGFybWxlc3MuCiAJICoKIAkgKiBXZSBjYW4ndCBpbnNlcnQgb3VyIGN2V2Fp dExpbmsgYXMgYSBzZW50aW5lbCBpZiBpdCdzIGFscmVhZHkgaW4gdXNlIGluCiAJICogc29t ZSBvdGhlciBwcm9jbGlzdC4gIFdoaWxlIHRoYXQncyBub3QgZXhwZWN0ZWQgdG8gYmUgdHJ1 ZSBmb3IgdHlwaWNhbApAQCAtMzMzLDcgKzMzNiw3IEBAIENvbmRpdGlvblZhcmlhYmxlQnJv YWRjYXN0KENvbmRpdGlvblZhcmlhYmxlICpjdikKIAogCS8qIEF3YWtlbiBmaXJzdCB3YWl0 ZXIsIGlmIHRoZXJlIHdhcyBvbmUuICovCiAJaWYgKHByb2MgIT0gTlVMTCkKLQkJU2V0TGF0 Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRf V0FLRVVQLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCXdoaWxlIChoYXZlX3Nl bnRpbmVsKQogCXsKQEAgLTM1Nyw2ICszNjAsNiBAQCBDb25kaXRpb25WYXJpYWJsZUJyb2Fk Y2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJCVNwaW5Mb2NrUmVsZWFzZSgmY3YtPm11 dGV4KTsKIAogCQlpZiAocHJvYyAhPSBOVUxMICYmIHByb2MgIT0gTXlQcm9jKQotCQkJU2V0 TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9X QUlUX1dBS0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAJfQogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGZlNzVlYWQzNTAxLi5mOTYxMDU0 YTRiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMjA0LDYg KzIwNCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlX3JtZ3IuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAi aXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBn c3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfbGZpbmQuaCIKQEAgLTE1ODQsNyArMTU4NSwx MSBAQCBHZXRTYWZlU25hcHNob3QoU25hcHNob3Qgb3JpZ1NuYXBzaG90KQogCQkJCSBTeGFj dElzUk9VbnNhZmUoTXlTZXJpYWxpemFibGVYYWN0KSkpCiAJCXsKIAkJCUxXTG9ja1JlbGVh c2UoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrKTsKLQkJCVByb2NXYWl0Rm9yU2lnbmFsKFdB SVRfRVZFTlRfU0FGRV9TTkFQU0hPVCk7CisJCQlXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50 ZXJydXB0c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkgIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkgIFdBSVRfRVZFTlRfU0FG RV9TTkFQU0hPVCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVAp OworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCUxXTG9ja0FjcXVpcmUoU2VyaWFs aXphYmxlWGFjdEhhc2hMb2NrLCBMV19FWENMVVNJVkUpOwogCQl9CiAJCU15U2VyaWFsaXph YmxlWGFjdC0+ZmxhZ3MgJj0gflNYQUNUX0ZMQUdfREVGRVJSQUJMRV9XQUlUSU5HOwpAQCAt MzYxNyw3ICszNjIyLDcgQEAgUmVsZWFzZVByZWRpY2F0ZUxvY2tzKGJvb2wgaXNDb21taXQs IGJvb2wgaXNSZWFkT25seVNhZmUpCiAJCQkgKi8KIAkJCWlmIChTeGFjdElzRGVmZXJyYWJs ZVdhaXRpbmcocm9YYWN0KSAmJgogCQkJCShTeGFjdElzUk9VbnNhZmUocm9YYWN0KSB8fCBT eGFjdElzUk9TYWZlKHJvWGFjdCkpKQotCQkJCVByb2NTZW5kU2lnbmFsKHJvWGFjdC0+cGdw cm9jbm8pOworCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FLRVVQLCByb1hh Y3QtPnBncHJvY25vKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5k ZXggYmE3ZWFlZDFhMTMuLjQ0ODA5ZmVhMjEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d3YWl0 LmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJcGdfYXRv bWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5hdkxhdW5jaGVyUHJvYywgSU5WQUxJRF9QUk9D X05VTUJFUik7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT53YWx3cml0ZXJQ cm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NH bG9iYWwtPmNoZWNrcG9pbnRlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCXBnX2F0 b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+d2FscmVjZWl2ZXJQcm9jLCBJTlZBTElEX1BS T0NfTlVNQkVSKTsKKwlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPnN0YXJ0dXBQ cm9jLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NH bG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCXBn X2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+Y2xvZ0dyb3VwRmlyc3QsIElOVkFMSURf UFJPQ19OVU1CRVIpOwogCkBAIC0zMDEsMTQgKzMwNCwyOCBAQCBJbml0UHJvY0dsb2JhbCh2 b2lkKQogCQlBc3NlcnQoZnBQdHIgPD0gZnBFbmRQdHIpOwogCiAJCS8qCi0JCSAqIFNldCB1 cCBwZXItUEdQUk9DIHNlbWFwaG9yZSwgbGF0Y2gsIGFuZCBmcEluZm9Mb2NrLiAgUHJlcGFy ZWQgeGFjdAotCQkgKiBkdW1teSBQR1BST0NzIGRvbid0IG5lZWQgdGhlc2UgdGhvdWdoIC0g dGhleSdyZSBuZXZlciBhc3NvY2lhdGVkCi0JCSAqIHdpdGggYSByZWFsIHByb2Nlc3MKKwkJ ICogU2V0IHVwIHBlci1QR1BST0Mgc2VtYXBob3JlLCBpbnRlcnJ1cHQgd2FrZXVwIGV2ZW50 IChvbiBXaW5kb3dzKSwKKwkJICogYW5kIGZwSW5mb0xvY2suICBQcmVwYXJlZCB4YWN0IGR1 bW15IFBHUFJPQ3MgZG9uJ3QgbmVlZCB0aGVzZQorCQkgKiB0aG91Z2ggLSB0aGV5J3JlIG5l dmVyIGFzc29jaWF0ZWQgd2l0aCBhIHJlYWwgcHJvY2VzcwogCQkgKi8KIAkJaWYgKGkgPCBN YXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpCiAJCXsKKyNpZmRlZiBXSU4zMgor CQkJU0VDVVJJVFlfQVRUUklCVVRFUyBzYTsKKworCQkJLyoKKwkJCSAqIFNldCB1cCBzZWN1 cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZQorCQkJICog aW5oZXJpdGVkLgorCQkJICovCisJCQlaZXJvTWVtb3J5KCZzYSwgc2l6ZW9mKHNhKSk7CisJ CQlzYS5uTGVuZ3RoID0gc2l6ZW9mKHNhKTsKKwkJCXNhLmJJbmhlcml0SGFuZGxlID0gVFJV RTsKKworCQkJcHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgPSBDcmVhdGVFdmVudCgmc2Es IFRSVUUsIEZBTFNFLCBOVUxMKTsKKwkJCWlmIChwcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVu dCA9PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJDcmVhdGVFdmVudCBmYWlsZWQ6IGVycm9y IGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCiAJCQlwcm9jLT5zZW0gPSBQ R1NlbWFwaG9yZUNyZWF0ZSgpOwotCQkJSW5pdFNoYXJlZExhdGNoKCYocHJvYy0+cHJvY0xh dGNoKSk7CiAJCQlMV0xvY2tJbml0aWFsaXplKCYocHJvYy0+ZnBJbmZvTG9jayksIExXVFJB TkNIRV9MT0NLX0ZBU1RQQVRIKTsKIAkJfQogCkBAIC01MTgsMTMgKzUzNSw4IEBAIEluaXRQ cm9jZXNzKHZvaWQpCiAJTXlQcm9jLT5jbG9nR3JvdXBNZW1iZXJMc24gPSBJbnZhbGlkWExv Z1JlY1B0cjsKIAlBc3NlcnQocGdfYXRvbWljX3JlYWRfdTMyKCZNeVByb2MtPmNsb2dHcm91 cE5leHQpID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCi0JLyoKLQkgKiBBY3F1aXJlIG93 bmVyc2hpcCBvZiB0aGUgUEdQUk9DJ3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0 TGF0Y2gKLQkgKiBvbiBpdC4gIFRoYXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nl c3MgbGF0Y2gsIHdoaWNoIHNvIGZhcgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9u ZSwgdG8gdGhlIHNoYXJlZCBvbmUuCi0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xh dGNoKTsKLQlTd2l0Y2hUb1NoYXJlZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGlu dGVycnVwdHMgZnJvbSBvdGhlciBwcm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVy cnVwdHMoKTsKIAogCS8qIG5vdyB0aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBl dmVudHMgdG8gc2hhcmVkIG1lbW9yeSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9y YWdlKCZNeVByb2MtPndhaXRfZXZlbnRfaW5mbyk7CkBAIC02ODgsMTMgKzcwMCw4IEBAIElu aXRBdXhpbGlhcnlQcm9jZXNzKHZvaWQpCiAJfQogI2VuZGlmCiAKLQkvKgotCSAqIEFjcXVp cmUgb3duZXJzaGlwIG9mIHRoZSBQR1BST0MncyBsYXRjaCwgc28gdGhhdCB3ZSBjYW4gdXNl IFdhaXRMYXRjaAotCSAqIG9uIGl0LiAgVGhhdCBhbGxvd3MgdXMgdG8gcmVwb2ludCB0aGUg cHJvY2VzcyBsYXRjaCwgd2hpY2ggc28gZmFyCi0JICogcG9pbnRzIHRvIHByb2Nlc3MgbG9j YWwgb25lLCB0byB0aGUgc2hhcmVkIG9uZS4KLQkgKi8KLQlPd25MYXRjaCgmTXlQcm9jLT5w cm9jTGF0Y2gpOwotCVN3aXRjaFRvU2hhcmVkTGF0Y2goKTsKKwkvKiBTdGFydCBhY2NlcHRp bmcgaW50ZXJydXB0cyBmcm9tIG90aGVyIHByb2Nlc3NlcyAqLworCVN3aXRjaFRvU2hhcmVk SW50ZXJydXB0cygpOwogCiAJLyogbm93IHRoYXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3 YWl0IGV2ZW50cyB0byBzaGFyZWQgbWVtb3J5ICovCiAJcGdzdGF0X3NldF93YWl0X2V2ZW50 X3N0b3JhZ2UoJk15UHJvYy0+d2FpdF9ldmVudF9pbmZvKTsKQEAgLTcxNyw2ICs3MjQsMTAg QEAgSW5pdEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAkJcGdfYXRvbWljX3dyaXRlX3UzMigm UHJvY0dsb2JhbC0+d2Fsd3JpdGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKIAlpZiAoTXlCYWNr ZW5kVHlwZSA9PSBCX0NIRUNLUE9JTlRFUikKIAkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJv Y0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYywgTXlQcm9jTnVtYmVyKTsKKwlpZiAoTXlCYWNr ZW5kVHlwZSA9PSBCX1dBTF9SRUNFSVZFUikKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJv Y0dsb2JhbC0+d2FscmVjZWl2ZXJQcm9jLCBNeVByb2NOdW1iZXIpOworCWlmIChNeUJhY2tl bmRUeXBlID09IEJfU1RBUlRVUCkKKwkJcGdfYXRvbWljX3dyaXRlX3UzMigmUHJvY0dsb2Jh bC0+c3RhcnR1cFByb2MsIE15UHJvY051bWJlcik7CiAKIAkvKgogCSAqIEFycmFuZ2UgdG8g Y2xlYW4gdXAgYXQgcHJvY2VzcyBleGl0LgpAQCAtOTg2LDIxICs5OTcsMjAgQEAgUHJvY0tp bGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAl9CiAKIAkvKgotCSAqIFJlc2V0IE15TGF0Y2gg dG8gdGhlIHByb2Nlc3MgbG9jYWwgb25lLiAgVGhpcyBpcyBzbyB0aGF0IHNpZ25hbAotCSAq IGhhbmRsZXJzIGV0IGFsIGNhbiBjb250aW51ZSB1c2luZyB0aGUgbGF0Y2ggYWZ0ZXIgdGhl IHNoYXJlZCBsYXRjaAotCSAqIGlzbid0IG91cnMgYW55bW9yZS4KKwkgKiBSZXNldCBpbnRl cnJ1cHQgdmVjdG9yIHRvIHRoZSBwcm9jZXNzIGxvY2FsIG9uZS4gIFRoaXMgaXMgc28gdGhh dAorCSAqIHNpZ25hbCBoYW5kbGVycyBldCBhbCBjYW4gY29udGludWUgdXNpbmcgaW50ZXJy dXB0cyBhZnRlciB0aGUgUEdQUk9DCisJICogZW50cnkgaXNuJ3Qgb3VycyBhbnltb3JlLgog CSAqCiAJICogU2ltaWxhcmx5LCBzdG9wIHJlcG9ydGluZyB3YWl0IGV2ZW50cyB0byBNeVBy b2MtPndhaXRfZXZlbnRfaW5mby4KIAkgKgotCSAqIEFmdGVyIHRoYXQgY2xlYXIgTXlQcm9j IGFuZCBkaXNvd24gdGhlIHNoYXJlZCBsYXRjaC4KKwkgKiBBZnRlciB0aGF0IGNsZWFyIE15 UHJvYy4KIAkgKi8KLQlTd2l0Y2hCYWNrVG9Mb2NhbExhdGNoKCk7CisJU3dpdGNoVG9Mb2Nh bEludGVycnVwdHMoKTsKIAlwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKCk7CiAK IAlwcm9jID0gTXlQcm9jOwogCU15UHJvYyA9IE5VTEw7CiAJTXlQcm9jTnVtYmVyID0gSU5W QUxJRF9QUk9DX05VTUJFUjsKLQlEaXNvd25MYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKIAog CS8qIE1hcmsgdGhlIHByb2Mgbm8gbG9uZ2VyIGluIHVzZSAqLwogCXByb2MtPnBpZCA9IDA7 CkBAIC0xMDU5LDcgKzEwNjksNyBAQCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0 dW0gYXJnKQogCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIAogCS8qIGxvb2sg YXQgdGhlIGVxdWl2YWxlbnQgUHJvY0tpbGwoKSBjb2RlIGZvciBjb21tZW50cyAqLwotCVN3 aXRjaEJhY2tUb0xvY2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cygpOwog CXBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAogCS8qIElmIHRoaXMgd2Fz IG9uZSBvZiBhdXggcHJvY2Vzc2VzIGFkdmVydGlzZWQgaW4gUHJvY0dsb2JhbCwgY2xlYXIg aXQgKi8KQEAgLTEwNzgsMTEgKzEwODgsMjAgQEAgQXV4aWxpYXJ5UHJvY0tpbGwoaW50IGNv ZGUsIERhdHVtIGFyZykKIAkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2Jh bC0+Y2hlY2twb2ludGVyUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKIAkJcGdfYXRvbWljX3dy aXRlX3UzMigmUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYywgSU5WQUxJRF9QUk9DX05V TUJFUik7CiAJfQorCWlmIChNeUJhY2tlbmRUeXBlID09IEJfV0FMX1JFQ0VJVkVSKQorCXsK KwkJQXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmUHJvY0dsb2JhbC0+d2FscmVjZWl2ZXJQ cm9jKSA9PSBNeVByb2NOdW1iZXIpOworCQlwZ19hdG9taWNfd3JpdGVfdTMyKCZQcm9jR2xv YmFsLT53YWxyZWNlaXZlclByb2MsIElOVkFMSURfUFJPQ19OVU1CRVIpOworCX0KKwlpZiAo TXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCisJeworCQlBc3NlcnQocGdfYXRvbWljX3Jl YWRfdTMyKCZQcm9jR2xvYmFsLT5zdGFydHVwUHJvYykgPT0gTXlQcm9jTnVtYmVyKTsKKwkJ cGdfYXRvbWljX3dyaXRlX3UzMigmUHJvY0dsb2JhbC0+c3RhcnR1cFByb2MsIElOVkFMSURf UFJPQ19OVU1CRVIpOworCX0KIAogCXByb2MgPSBNeVByb2M7CiAJTXlQcm9jID0gTlVMTDsK IAlNeVByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCURpc293bkxhdGNoKCZw cm9jLT5wcm9jTGF0Y2gpOwogCiAJU3BpbkxvY2tBY3F1aXJlKCZQcm9jR2xvYmFsLT5mcmVl UHJvY3NMb2NrKTsKIApAQCAtMTQxMCwxOCArMTQyOSwxOCBAQCBQcm9jU2xlZXAoTE9DQUxM T0NLICpsb2NhbGxvY2spCiAJfQogCiAJLyoKLQkgKiBJZiBzb21lYm9keSB3YWtlcyB1cyBi ZXR3ZWVuIExXTG9ja1JlbGVhc2UgYW5kIFdhaXRMYXRjaCwgdGhlIGxhdGNoCi0JICogd2ls bCBub3Qgd2FpdC4gQnV0IGEgc2V0IGxhdGNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4g dGhhdCB0aGUgbG9jawotCSAqIGlzIGZyZWUgbm93LCBhcyB0aGVyZSBhcmUgbWFueSBvdGhl ciBzb3VyY2VzIGZvciBsYXRjaCBzZXRzIHRoYW4KLQkgKiBzb21lYm9keSByZWxlYXNpbmcg dGhlIGxvY2suCisJICogSWYgc29tZWJvZHkgd2FrZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxl YXNlIGFuZCBXYWl0SW50ZXJydXB0LAorCSAqIFdhaXRJbnRlcnJ1cHQgd2lsbCBub3Qgd2Fp dC4gQnV0IGFuIGludGVycnVwdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuCisJICogdGhh dCB0aGUgbG9jayBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1hbnkgb3RoZXIgc291cmNl cyBmb3IgdGhlCisJICogaW50ZXJydXB0IHRoYW4gc29tZWJvZHkgcmVsZWFzaW5nIHRoZSBs b2NrLgogCSAqCi0JICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRoZSBsYXRj aCBoYXMgYmVlbiBzZXQsIHNvIGNhbmNlbC9kaWUKLQkgKiBpbnRlcnJ1cHRzIGFyZSBwcm9j ZXNzZWQgcXVpY2tseS4gVGhpcyBtZWFucyB3ZSBtdXN0IG5vdCBtaW5kIGxvc2luZwotCSAq IGNvbnRyb2wgdG8gYSBjYW5jZWwvZGllIGludGVycnVwdCBoZXJlLiAgV2UgZG9uJ3QsIGJl Y2F1c2Ugd2UgaGF2ZSBubwotCSAqIHNoYXJlZC1zdGF0ZS1jaGFuZ2Ugd29yayB0byBkbyBh ZnRlciBiZWluZyBncmFudGVkIHRoZSBsb2NrICh0aGUKLQkgKiBncmFudG9yIGRpZCBpdCBh bGwpLiAgV2UgZG8gaGF2ZSB0byB3b3JyeSBhYm91dCBjYW5jZWxpbmcgdGhlIGRlYWRsb2Nr Ci0JICogdGltZW91dCBhbmQgdXBkYXRpbmcgdGhlIGxvY2FsbG9jayB0YWJsZSwgYnV0IGlm IHdlIGxvc2UgY29udHJvbCB0byBhbgotCSAqIGVycm9yLCBMb2NrRXJyb3JDbGVhbnVwIHdp bGwgZml4IHRoYXQgdXAuCisJICogV2UgcHJvY2VzcyBpbnRlcnJ1cHRzIHdoZW5ldmVyIHRo ZSBpbnRlcnJ1cHQgaGFzIGJlZW4gc2V0LCBzbworCSAqIGNhbmNlbC9kaWUgaW50ZXJydXB0 cyBhcmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMgd2UgbXVzdCBub3QKKwkgKiBt aW5kIGxvc2luZyBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBpbnRlcnJ1cHQgaGVyZS4gIFdl IGRvbid0LCBiZWNhdXNlCisJICogd2UgaGF2ZSBubyBzaGFyZWQtc3RhdGUtY2hhbmdlIHdv cmsgdG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9jaworCSAqICh0aGUgZ3JhbnRv ciBkaWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkgYWJvdXQgY2FuY2VsaW5nIHRo ZQorCSAqIGRlYWRsb2NrIHRpbWVvdXQgYW5kIHVwZGF0aW5nIHRoZSBsb2NhbGxvY2sgdGFi bGUsIGJ1dCBpZiB3ZSBsb3NlCisJICogY29udHJvbCB0byBhbiBlcnJvciwgTG9ja0Vycm9y Q2xlYW51cCB3aWxsIGZpeCB0aGF0IHVwLgogCSAqLwogCWRvCiAJewpAQCAtMTQ2Nyw5ICsx NDg2LDEwIEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAkJfQogCQllbHNl CiAJCXsKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgUEdfV0FJVF9MT0NLIHwgbG9jYWxsb2Nr LT50YWcubG9jay5sb2NrdGFnX3R5cGUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgfCBJTlRFUlJV UFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAorCQkJCQkJCQkgUEdfV0FJVF9MT0NLIHwgbG9jYWxsb2NrLT50YWcubG9j ay5sb2NrdGFnX3R5cGUpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1dBSVRfV0FL RVVQKTsKIAkJCS8qIGNoZWNrIGZvciBkZWFkbG9ja3MgZmlyc3QsIGFzIHRoYXQncyBwcm9i YWJseSBsb2ctd29ydGh5ICovCiAJCQlpZiAoZ290X2RlYWRsb2NrX3RpbWVvdXQpCiAJCQl7 CkBAIC0xNjc1LDggKzE2OTUsOCBAQCBQcm9jU2xlZXAoTE9DQUxMT0NLICpsb2NhbGxvY2sp CiAJLyoKIAkgKiBEaXNhYmxlIHRoZSB0aW1lcnMsIGlmIHRoZXkgYXJlIHN0aWxsIHJ1bm5p bmcuICBBcyBpbiBMb2NrRXJyb3JDbGVhbnVwLAogCSAqIHdlIG11c3QgcHJlc2VydmUgdGhl IExPQ0tfVElNRU9VVCBpbmRpY2F0b3IgZmxhZzogaWYgYSBsb2NrIHRpbWVvdXQgaGFzCi0J ICogYWxyZWFkeSBjYXVzZWQgUXVlcnlDYW5jZWxQZW5kaW5nIHRvIGJlY29tZSBzZXQsIHdl IHdhbnQgdGhlIGNhbmNlbCB0bwotCSAqIGJlIHJlcG9ydGVkIGFzIGEgbG9jayB0aW1lb3V0 LCBub3QgYSB1c2VyIGNhbmNlbC4KKwkgKiBhbHJlYWR5IHJhaXNlZCBJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMLCB3ZSB3YW50IHRoZSBjYW5jZWwgdG8gYmUKKwkgKiByZXBvcnRlZCBhcyBh IGxvY2sgdGltZW91dCwgbm90IGEgdXNlciBjYW5jZWwuCiAJICovCiAJaWYgKCFJbkhvdFN0 YW5kYnkpCiAJewpAQCAtMTcxMyw3ICsxNzMzLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAq bG9jYWxsb2NrKQogCiAKIC8qCi0gKiBQcm9jV2FrZXVwIC0tIHdha2UgdXAgYSBwcm9jZXNz IGJ5IHNldHRpbmcgaXRzIGxhdGNoLgorICogUHJvY1dha2V1cCAtLSB3YWtlIHVwIGEgcHJv Y2VzcyBieSBzZW5kaW5nIGl0IGFuIGludGVycnVwdC4KICAqCiAgKgkgQWxzbyByZW1vdmUg dGhlIHByb2Nlc3MgZnJvbSB0aGUgd2FpdCBxdWV1ZSBhbmQgc2V0IGl0cyBsaW5rcyBpbnZh bGlkLgogICoKQEAgLTE3NDIsNyArMTc2Miw3IEBAIFByb2NXYWtldXAoUEdQUk9DICpwcm9j LCBQcm9jV2FpdFN0YXR1cyB3YWl0U3RhdHVzKQogCXBnX2F0b21pY193cml0ZV91NjQoJk15 UHJvYy0+d2FpdFN0YXJ0LCAwKTsKIAogCS8qIEFuZCBhd2FrZW4gaXQgKi8KLQlTZXRMYXRj aCgmcHJvYy0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dB S0VVUCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiB9CiAKIC8qCkBAIC0xODk5LDE0 ICsxOTE5LDEyIEBAIENoZWNrRGVhZExvY2tBbGVydCh2b2lkKQogCWdvdF9kZWFkbG9ja190 aW1lb3V0ID0gdHJ1ZTsKIAogCS8qCi0JICogSGF2ZSB0byBzZXQgdGhlIGxhdGNoIGFnYWlu LCBldmVuIGlmIGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeSBkaWQuIEJhY2sKLQkgKiB0aGVu IGdvdF9kZWFkbG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5saWtlbHkg dGhhdCB0aGlzCi0JICogZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCBzZXR0aW5nIGEg c2V0IGxhdGNoIGFnYWluIGlzIGNoZWFwLgotCSAqCi0JICogTm90ZSB0aGF0LCB3aGVuIHRo aXMgZnVuY3Rpb24gcnVucyBpbnNpZGUgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoKSwK LQkgKiB0aGUgaGFuZGxlciBmdW5jdGlvbiBzZXRzIHRoZSBsYXRjaCBhZ2FpbiBhZnRlciB0 aGUgbGF0Y2ggaXMgc2V0IGhlcmUuCisJICogSGF2ZSB0byByYWlzZSB0aGUgaW50ZXJydXB0 IGFnYWluLCBldmVuIGlmIGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeQorCSAqIGRpZC4gQmFj ayB0aGVuIGdvdF9kZWFkbG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5s aWtlbHkKKwkgKiB0aGF0IHRoaXMgZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCByYWlz aW5nIGFuIGludGVycnVwdCBhZ2FpbiBpcworCSAqIGNoZWFwLgogCSAqLwotCVNldExhdGNo KE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCk7CiAJ ZXJybm8gPSBzYXZlX2Vycm5vOwogfQogCkBAIC0xOTg1LDM0ICsyMDAzLDYgQEAgR2V0TG9j a0hvbGRlcnNBbmRXYWl0ZXJzKExPQ0FMTE9DSyAqbG9jYWxsb2NrLCBTdHJpbmdJbmZvIGxv Y2tfaG9sZGVyc19zYnVmLAogCX0KIH0KIAotLyoKLSAqIFByb2NXYWl0Rm9yU2lnbmFsIC0g d2FpdCBmb3IgYSBzaWduYWwgZnJvbSBhbm90aGVyIGJhY2tlbmQuCi0gKgotICogQXMgdGhp cyB1c2VzIHRoZSBnZW5lcmljIHByb2Nlc3MgbGF0Y2ggdGhlIGNhbGxlciBoYXMgdG8gYmUg cm9idXN0IGFnYWluc3QKLSAqIHVucmVsYXRlZCB3YWtldXBzOiBBbHdheXMgY2hlY2sgdGhh dCB0aGUgZGVzaXJlZCBzdGF0ZSBoYXMgb2NjdXJyZWQsIGFuZAotICogd2FpdCBhZ2FpbiBp ZiBub3QuCi0gKi8KLXZvaWQKLVByb2NXYWl0Rm9yU2lnbmFsKHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pCi17Ci0JKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBX TF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJCQkgd2FpdF9ldmVudF9pbmZvKTsKLQlSZXNl dExhdGNoKE15TGF0Y2gpOwotCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci19Ci0KLS8qCi0g KiBQcm9jU2VuZFNpZ25hbCAtIHNldCB0aGUgbGF0Y2ggb2YgYSBiYWNrZW5kIGlkZW50aWZp ZWQgYnkgUHJvY051bWJlcgotICovCi12b2lkCi1Qcm9jU2VuZFNpZ25hbChQcm9jTnVtYmVy IHByb2NOdW1iZXIpCi17Ci0JaWYgKHByb2NOdW1iZXIgPCAwIHx8IHByb2NOdW1iZXIgPj0g UHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KQotCQllbG9nKEVSUk9SLCAicHJvY051bWJlciBv dXQgb2YgcmFuZ2UiKTsKLQotCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihwcm9jTnVt YmVyKS0+cHJvY0xhdGNoKTsKLX0KLQogLyoKICAqIEJlY29tZUxvY2tHcm91cExlYWRlciAt IGRlc2lnbmF0ZSBwcm9jZXNzIGFzIGxvY2sgZ3JvdXAgbGVhZGVyCiAgKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2Uvc21nci9zbWdyLmMKaW5kZXggMzc4YzJhMDNmMzkuLmRkOGIxZmMxMGY1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTk5NCw3ICs5OTQsNyBAQCBzbWdyZmQoU01nclJl bGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya251bSwgQmxvY2tOdW1iZXIgYmxvY2tudW0s IHVpbnQzMiAqb2ZmKQogCSAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gcHJldmVudCBpbnRlcnJ1 cHRzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLCBvdGhlcndpc2UKIAkgKiB0aGUgRkQgY291bGQg YmUgY2xvc2VkIHByZW1hdHVyZWx5LgogCSAqLwotCUFzc2VydCghSU5URVJSVVBUU19DQU5f QkVfUFJPQ0VTU0VEKCkpOworCUFzc2VydChDaGVja0ZvckludGVycnVwdHNNYXNrID09IDAp OwogCiAJZmQgPSBzbWdyc3dbcmVsbi0+c21ncl93aGljaF0uc21ncl9mZChyZWxuLCBmb3Jr bnVtLCBibG9ja251bSwgb2ZmKTsKIApAQCAtMTA3Myw3ICsxMDczLDcgQEAgc21ncl9haW9f cmVvcGVuKFBnQWlvSGFuZGxlICppb2gpCiAJICogVGhlIGNhbGxlciBuZWVkcyB0byBwcmV2 ZW50IGludGVycnVwdHMgZnJvbSBiZWluZyBwcm9jZXNzZWQsIG90aGVyd2lzZQogCSAqIHRo ZSBGRCBjb3VsZCBiZSBjbG9zZWQgYWdhaW4gYmVmb3JlIHdlIGdldCB0byBleGVjdXRpbmcg dGhlIElPLgogCSAqLwotCUFzc2VydCghSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkp OworCUFzc2VydChDaGVja0ZvckludGVycnVwdHNNYXNrID09IDApOwogCiAJaWYgKHNkLT5z bWdyLmlzX3RlbXApCiAJCXByb2NubyA9IHBnYWlvX2lvX2dldF9vd25lcihpb2gpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMKaW5kZXggYjFhY2NjNjhiOTUuLmZiZWQ3ZDgyZTk4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKQEAgLTIyLDEyICsyMiwxMiBAQAogI2luY2x1 ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0Lmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3 cml0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9s YXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbWQuaCIKICNpbmNsdWRlICJ1dGlscy9oc2Vh cmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxMSw4ICs2MTEsOCBA QCBSZWdpc3RlclN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0 VHlwZSB0eXBlLAogCQlpZiAocmV0IHx8ICghcmV0ICYmICFyZXRyeU9uRXJyb3IpKQogCQkJ YnJlYWs7CiAKLQkJV2FpdExhdGNoKE5VTEwsIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9U SU1FT1VULCAxMCwKLQkJCQkgIFdBSVRfRVZFTlRfUkVHSVNURVJfU1lOQ19SRVFVRVNUKTsK KwkJV2FpdEludGVycnVwdCgwLCBXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfVElNRU9VVCwg MTAsCisJCQkJCSAgV0FJVF9FVkVOVF9SRUdJU1RFUl9TWU5DX1JFUVVFU1QpOwogCX0KIAog CXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3Rh cnR1cC5jIGIvc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYwppbmRleCBjNTE3 MTE1OTI3Yy4uOTU5NTQ3NmM4ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvYmFj a2VuZF9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAu YwpAQCAtMTk4LDYgKzE5OCwxNCBAQCBCYWNrZW5kSW5pdGlhbGl6ZShDbGllbnRTb2NrZXQg KmNsaWVudF9zb2NrLCBDQUNfc3RhdGUgY2FjKQogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJ LyogZXN0YWJsaXNoZXMgU0lHQUxSTSBoYW5kbGVyICovCiAJc2lncHJvY21hc2soU0lHX1NF VE1BU0ssICZTdGFydHVwQmxvY2tTaWcsIE5VTEwpOwogCisJLyoKKwkgKiBGSVhNRTogaW5z dGFsbCBJTlRFUlJVUFRfVEVSTUlOQVRFIGhhbmRsZXIgYXQgbGVhc3Q/IE5vdCByZWFsbHkg bmVlZGVkCisJICogYmVjYXVzZSBubyBvbmUgZWxzZSBjYW4gc2VuZCB1cyBpbnRlcnJ1cHRz IHlldCwgYW5kIHdlIGRvbid0IHJhaXNlIHRoZW0KKwkgKiB3aXRoaW4gdGhlIGJhY2tlbmQg eWV0IGVpdGhlci4gQnV0IGlmIHdlIGNoYW5nZWQgcG9zdG1hc3RlciB0byBzZW5kCisJICog SU5URVJSVVBUX1RFUk1JTkFURSBkaXJlY3RseSwgZm9yIGV4YW1wbGUsIHdlJ2QgbmVlZCB0 byBoYW5kbGUgaXQKKwkgKiBhbHJlYWR5LgorCSAqLworCiAJLyoKIAkgKiBHZXQgdGhlIHJl bW90ZSBob3N0IG5hbWUgYW5kIHBvcnQgZm9yIGxvZ2dpbmcgYW5kIHN0YXR1cyBkaXNwbGF5 LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDVkNjZjODA1NjdjLi41ZTU5NWU1MTk4 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2V4cGxhaW5fc3RhdGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgi CiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0 LmgiCisjaW5jbHVkZSAiaXBjL3NpZ25hbF9oYW5kbGVycy5oIgogI2luY2x1ZGUgImppdC9q aXQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCkBAIC01NCw3ICs1Niw2IEBACiAjaW5jbHVkZSAicGdfZ2V0b3B0LmgiCiAjaW5j bHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0 bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcG9zdG1hc3Rlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKQEAgLTE3OSw4ICsxODAsOCBAQCBzdGF0 aWMgYm9vbCBJc1RyYW5zYWN0aW9uRXhpdFN0bXQoTm9kZSAqcGFyc2V0cmVlKTsKIHN0YXRp YyBib29sIElzVHJhbnNhY3Rpb25FeGl0U3RtdExpc3QoTGlzdCAqcHN0bXRzKTsKIHN0YXRp YyBib29sIElzVHJhbnNhY3Rpb25TdG10TGlzdChMaXN0ICpwc3RtdHMpOwogc3RhdGljIHZv aWQgZHJvcF91bm5hbWVkX3N0bXQodm9pZCk7Ci1zdGF0aWMgdm9pZCBQcm9jZXNzUmVjb3Zl cnlDb25mbGljdEludGVycnVwdHModm9pZCk7Ci1zdGF0aWMgdm9pZCBQcm9jZXNzUmVjb3Zl cnlDb25mbGljdEludGVycnVwdChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbik7Citz dGF0aWMgdm9pZCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdCh2b2lkKTsKK3N0 YXRpYyB2b2lkIFByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0KFJlY292ZXJ5Q29uZmxpY3RSZWFz b24gcmVhc29uKTsKIHN0YXRpYyB2b2lkIHJlcG9ydF9yZWNvdmVyeV9jb25mbGljdChSZWNv dmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbik7CiBzdGF0aWMgdm9pZCBsb2dfZGlzY29ubmVj dGlvbnMoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBlbmFibGVfc3RhdGVt ZW50X3RpbWVvdXQodm9pZCk7CkBAIC0zMzUsOCArMzM2LDYgQEAgaW50ZXJhY3RpdmVfZ2V0 Yyh2b2lkKQogCiAJYyA9IGdldGMoc3RkaW4pOwogCi0JUHJvY2Vzc0NsaWVudFJlYWRJbnRl cnJ1cHQoZmFsc2UpOwotCiAJcmV0dXJuIGM7CiB9CiAKQEAgLTM1MywxMSArMzUyLDIzIEBA IFNvY2tldEJhY2tlbmQoU3RyaW5nSW5mbyBpbkJ1ZikKIHsKIAlpbnQJCQlxdHlwZTsKIAlp bnQJCQltYXhtc2dsZW47CisJYm9vbAkJc2F2ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZDsKKwor CS8qCisJICogRG9uJ3QgYWxsb3cgcXVlcnkgY2FuY2VsIGludGVycnVwdHMgd2hpbGUgcmVh ZGluZyBpbnB1dCBmcm9tIHRoZQorCSAqIGNsaWVudCwgYmVjYXVzZSB3ZSBtaWdodCBsb3Nl IHN5bmMgaW4gdGhlIEZFL0JFIHByb3RvY29sLiAgKERpZQorCSAqIGludGVycnVwdHMgYXJl IE9LLCBiZWNhdXNlIHdlIHdvbid0IHJlYWQgYW55IGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0 aGUKKwkgKiBjbGllbnQgaW4gdGhhdCBjYXNlLikKKwkgKgorCSAqIFNlZSBzaW1pbGFyIGxv Z2ljIGluIFByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KCkuCisJICovCisJc2F2 ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCA9IChFbmFibGVkSW50ZXJydXB0c01hc2sgJiBJTlRF UlJVUFRfUVVFUllfQ0FOQ0VMKSAhPSAwOworCWlmIChzYXZlX3F1ZXJ5X2NhbmNlbF9lbmFi bGVkKQorCQlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwpOwogCiAJ LyoKIAkgKiBHZXQgbWVzc2FnZSB0eXBlIGNvZGUgZnJvbSB0aGUgZnJvbnRlbmQuCiAJICov Ci0JSE9MRF9DQU5DRUxfSU5URVJSVVBUUygpOwogCXBxX3N0YXJ0bXNncmVhZCgpOwogCXF0 eXBlID0gcHFfZ2V0Ynl0ZSgpOwogCkBAIC00NjQsNyArNDc1LDkgQEAgU29ja2V0QmFja2Vu ZChTdHJpbmdJbmZvIGluQnVmKQogCSAqLwogCWlmIChwcV9nZXRtZXNzYWdlKGluQnVmLCBt YXhtc2dsZW4pKQogCQlyZXR1cm4gRU9GOwkJCQkvKiBzdWl0YWJsZSBtZXNzYWdlIGFscmVh ZHkgbG9nZ2VkICovCi0JUkVTVU1FX0NBTkNFTF9JTlRFUlJVUFRTKCk7CisKKwlpZiAoc2F2 ZV9xdWVyeV9jYW5jZWxfZW5hYmxlZCkKKwkJRW5hYmxlSW50ZXJydXB0KElOVEVSUlVQVF9R VUVSWV9DQU5DRUwpOwogCiAJcmV0dXJuIHF0eXBlOwogfQpAQCAtNDg4LDEwNCArNTAxLDYg QEAgUmVhZENvbW1hbmQoU3RyaW5nSW5mbyBpbkJ1ZikKIAlyZXR1cm4gcmVzdWx0OwogfQog Ci0vKgotICogUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSAtIFByb2Nlc3MgaW50ZXJy dXB0cyBzcGVjaWZpYyB0byBjbGllbnQgcmVhZHMKLSAqCi0gKiBUaGlzIGlzIGNhbGxlZCBq dXN0IGJlZm9yZSBhbmQgYWZ0ZXIgbG93LWxldmVsIHJlYWRzLgotICogJ2Jsb2NrZWQnIGlz IHRydWUgaWYgbm8gZGF0YSB3YXMgYXZhaWxhYmxlIHRvIHJlYWQgYW5kIHdlIHBsYW4gdG8g cmV0cnksCi0gKiBmYWxzZSBpZiBhYm91dCB0byByZWFkIG9yIGRvbmUgcmVhZGluZy4KLSAq Ci0gKiBNdXN0IHByZXNlcnZlIGVycm5vIQotICovCi12b2lkCi1Qcm9jZXNzQ2xpZW50UmVh ZEludGVycnVwdChib29sIGJsb2NrZWQpCi17Ci0JaW50CQkJc2F2ZV9lcnJubyA9IGVycm5v OwotCi0JaWYgKERvaW5nQ29tbWFuZFJlYWQpCi0JewotCQkvKiBDaGVjayBmb3IgZ2VuZXJh bCBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZlZCBiZWZvcmUvd2hpbGUgcmVhZGluZyAqLwotCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwotCi0JCS8qIFByb2Nlc3Mgc2ludmFsIGNhdGNodXAg aW50ZXJydXB0cywgaWYgYW55ICovCi0JCWlmIChjYXRjaHVwSW50ZXJydXB0UGVuZGluZykK LQkJCVByb2Nlc3NDYXRjaHVwSW50ZXJydXB0KCk7Ci0KLQkJLyogUHJvY2VzcyBub3RpZnkg aW50ZXJydXB0cywgaWYgYW55ICovCi0JCWlmIChub3RpZnlJbnRlcnJ1cHRQZW5kaW5nKQot CQkJUHJvY2Vzc05vdGlmeUludGVycnVwdCh0cnVlKTsKLQl9Ci0JZWxzZSBpZiAoUHJvY0Rp ZVBlbmRpbmcpCi0JewotCQkvKgotCQkgKiBXZSdyZSBkeWluZy4gIElmIHRoZXJlIGlzIG5v IGRhdGEgYXZhaWxhYmxlIHRvIHJlYWQsIHRoZW4gaXQncyBzYWZlCi0JCSAqIChhbmQgc2Fu ZSkgdG8gaGFuZGxlIHRoYXQgbm93LiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byByZWFkIHll dCwKLQkJICogbWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgc28gdGhhdCBp ZiB0aGVyZSBpcyBubyBkYXRhCi0JCSAqIHRoZW4gd2UnbGwgY29tZSBiYWNrIGhlcmUgYW5k IGRpZS4gIElmIHdlJ3JlIGRvbmUgcmVhZGluZywgYWxzbwotCQkgKiBtYWtlIHN1cmUgdGhl IHByb2Nlc3MgbGF0Y2ggaXMgc2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2lyYWJseQotCQkg KiBjbGVhcmVkIGl0IHdoaWxlIHJlYWRpbmcuCi0JCSAqLwotCQlpZiAoYmxvY2tlZCkKLQkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gp OwotCX0KLQotCWVycm5vID0gc2F2ZV9lcnJubzsKLX0KLQotLyoKLSAqIFByb2Nlc3NDbGll bnRXcml0ZUludGVycnVwdCgpIC0gUHJvY2VzcyBpbnRlcnJ1cHRzIHNwZWNpZmljIHRvIGNs aWVudCB3cml0ZXMKLSAqCi0gKiBUaGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhbmQgYWZ0 ZXIgbG93LWxldmVsIHdyaXRlcy4KLSAqICdibG9ja2VkJyBpcyB0cnVlIGlmIG5vIGRhdGEg Y291bGQgYmUgd3JpdHRlbiBhbmQgd2UgcGxhbiB0byByZXRyeSwKLSAqIGZhbHNlIGlmIGFi b3V0IHRvIHdyaXRlIG9yIGRvbmUgd3JpdGluZy4KLSAqCi0gKiBNdXN0IHByZXNlcnZlIGVy cm5vIQotICovCi12b2lkCi1Qcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9j a2VkKQotewotCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsKLQotCWlmIChQcm9jRGllUGVu ZGluZykKLQl7Ci0JCS8qCi0JCSAqIFdlJ3JlIGR5aW5nLiAgSWYgaXQncyBub3QgcG9zc2li bGUgdG8gd3JpdGUsIHRoZW4gd2Ugc2hvdWxkIGhhbmRsZQotCQkgKiB0aGF0IGltbWVkaWF0 ZWx5LCBlbHNlIGEgc3R1Y2sgY2xpZW50IGNvdWxkIGluZGVmaW5pdGVseSBkZWxheSBvdXIK LQkJICogcmVzcG9uc2UgdG8gdGhlIHNpZ25hbC4gIElmIHdlIGhhdmVuJ3QgdHJpZWQgdG8g d3JpdGUgeWV0LCBtYWtlCi0JCSAqIHN1cmUgdGhlIHByb2Nlc3MgbGF0Y2ggaXMgc2V0LCBz byB0aGF0IGlmIHRoZSB3cml0ZSB3b3VsZCBibG9jawotCQkgKiB0aGVuIHdlJ2xsIGNvbWUg YmFjayBoZXJlIGFuZCBkaWUuICBJZiB3ZSdyZSBkb25lIHdyaXRpbmcsIGFsc28KLQkJICog bWFrZSBzdXJlIHRoZSBwcm9jZXNzIGxhdGNoIGlzIHNldCwgYXMgd2UgbWlnaHQndmUgdW5k ZXNpcmFibHkKLQkJICogY2xlYXJlZCBpdCB3aGlsZSB3cml0aW5nLgotCQkgKi8KLQkJaWYg KGJsb2NrZWQpCi0JCXsKLQkJCS8qCi0JCQkgKiBEb24ndCBtZXNzIHdpdGggd2hlcmVUb1Nl bmRPdXRwdXQgaWYgUHJvY2Vzc0ludGVycnVwdHMgd291bGRuJ3QKLQkJCSAqIHNlcnZpY2Ug UHJvY0RpZVBlbmRpbmcuCi0JCQkgKi8KLQkJCWlmIChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQg PT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDApCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBX ZSBkb24ndCB3YW50IHRvIHNlbmQgdGhlIGNsaWVudCB0aGUgZXJyb3IgbWVzc2FnZSwgYXMg YSkKLQkJCQkgKiB0aGF0IHdvdWxkIHBvc3NpYmx5IGJsb2NrIGFnYWluLCBhbmQgYikgaXQg d291bGQgbGlrZWx5Ci0JCQkJICogbGVhZCB0byBsb3NzIG9mIHByb3RvY29sIHN5bmMgYmVj YXVzZSB3ZSBtYXkgaGF2ZSBhbHJlYWR5Ci0JCQkJICogc2VudCBhIHBhcnRpYWwgcHJvdG9j b2wgbWVzc2FnZS4KLQkJCQkgKi8KLQkJCQlpZiAod2hlcmVUb1NlbmRPdXRwdXQgPT0gRGVz dFJlbW90ZSkKLQkJCQkJd2hlcmVUb1NlbmRPdXRwdXQgPSBEZXN0Tm9uZTsKLQotCQkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQkJU2V0TGF0Y2go TXlMYXRjaCk7Ci0JfQotCi0JZXJybm8gPSBzYXZlX2Vycm5vOwotfQotCiAvKgogICogRG8g cmF3IHBhcnNpbmcgKG9ubHkpLgogICoKQEAgLTI5MTAsNyArMjgyNSw3IEBAIGRyb3BfdW5u YW1lZF9zdG10KHZvaWQpCiAgKiBFaXRoZXIgc29tZSBiYWNrZW5kIGhhcyBib3VnaHQgdGhl IGZhcm0sIG9yIHdlJ3ZlIGJlZW4gdG9sZCB0byBzaHV0IGRvd24KICAqICJpbW1lZGlhdGVs eSI7IHNvIHdlIG5lZWQgdG8gc3RvcCB3aGF0IHdlJ3JlIGRvaW5nIGFuZCBleGl0LgogICov Ci12b2lkCitzdGF0aWMgdm9pZAogcXVpY2tkaWUoU0lHTkFMX0FSR1MpCiB7CiAJc2lnYWRk c2V0KCZCbG9ja1NpZywgU0lHUVVJVCk7CS8qIHByZXZlbnQgbmVzdGVkIGNhbGxzICovCkBA IC0zMDA3LDUwICsyOTIyLDI2IEBAIHF1aWNrZGllKFNJR05BTF9BUkdTKQogICogU2h1dGRv d24gc2lnbmFsIGZyb20gcG9zdG1hc3RlcjogYWJvcnQgdHJhbnNhY3Rpb24gYW5kIGV4aXQK ICAqIGF0IHNvb25lc3QgY29udmVuaWVudCB0aW1lCiAgKi8KLXZvaWQKK3N0YXRpYyB2b2lk CiBkaWUoU0lHTkFMX0FSR1MpCiB7Ci0JLyogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBw cm9jX2V4aXQgKi8KLQlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQotCXsKLQkJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JCVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKLQl9Ci0KIAkv KiBmb3IgdGhlIGN1bXVsYXRpdmUgc3RhdHMgc3lzdGVtICovCiAJcGdTdGF0U2Vzc2lvbkVu ZENhdXNlID0gRElTQ09OTkVDVF9LSUxMRUQ7CiAKLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJl LCB3YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBwcm9jZXNzIGxhdGNoICovCi0JU2V0 TGF0Y2goTXlMYXRjaCk7CisJLyogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBwcm9jX2V4 aXQgKi8KKwlpZiAocHJvY19leGl0X2lucHJvZ3Jlc3MpCisJCXJldHVybjsKKworCVJhaXNl SW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOwogCiAJLyoKIAkgKiBJZiB3ZSdyZSBp biBzaW5nbGUgdXNlciBtb2RlLCB3ZSB3YW50IHRvIHF1aXQgaW1tZWRpYXRlbHkgLSB3ZSBj YW4ndAotCSAqIHJlbHkgb24gbGF0Y2hlcyBhcyB0aGV5IHdvdWxkbid0IHdvcmsgd2hlbiBz dGRpbi9zdGRvdXQgaXMgYSBmaWxlLgorCSAqIHJlbHkgb24gaW50ZXJydXB0cyBhcyB0aGV5 IHdvdWxkbid0IHdvcmsgd2hlbiBzdGRpbi9zdGRvdXQgaXMgYSBmaWxlLgogCSAqIFJhdGhl ciB1Z2x5LCBidXQgaXQncyB1bmxpa2VseSB0byBiZSB3b3J0aHdoaWxlIHRvIGludmVzdCBt dWNoIG1vcmUKIAkgKiBlZmZvcnQganVzdCBmb3IgdGhlIGJlbmVmaXQgb2Ygc2luZ2xlIHVz ZXIgbW9kZS4KIAkgKi8KIAlpZiAoRG9pbmdDb21tYW5kUmVhZCAmJiB3aGVyZVRvU2VuZE91 dHB1dCAhPSBEZXN0UmVtb3RlKQotCQlQcm9jZXNzSW50ZXJydXB0cygpOwotfQotCi0vKgot ICogUXVlcnktY2FuY2VsIHNpZ25hbCBmcm9tIHBvc3RtYXN0ZXI6IGFib3J0IGN1cnJlbnQg dHJhbnNhY3Rpb24KLSAqIGF0IHNvb25lc3QgY29udmVuaWVudCB0aW1lCi0gKi8KLXZvaWQK LVN0YXRlbWVudENhbmNlbEhhbmRsZXIoU0lHTkFMX0FSR1MpCi17Ci0JLyoKLQkgKiBEb24n dCBqb2dnbGUgdGhlIGVsYm93IG9mIHByb2NfZXhpdAotCSAqLwotCWlmICghcHJvY19leGl0 X2lucHJvZ3Jlc3MpCi0JewotCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJUXVlcnlD YW5jZWxQZW5kaW5nID0gdHJ1ZTsKLQl9Ci0KLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3 YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBwcm9jZXNzIGxhdGNoICovCi0JU2V0TGF0 Y2goTXlMYXRjaCk7CisJCVByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQoKTsKIH0KIAogLyog c2lnbmFsIGhhbmRsZXIgZm9yIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbiAqLwpAQCAtMzA2 NywyMiArMjk1OCw5MSBAQCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpCiB9 CiAKIC8qCi0gKiBUZWxsIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJv Y2VzcyByZWNvdmVyeSBjb25mbGljdHMuICBSdW5zCi0gKiBpbiBhIFNJR1VTUjEgaGFuZGxl ci4KKyAqIFNldCB0aGUgInN0YW5kYXJkIiBzZXQgb2YgaW50ZXJydXB0IGhhbmRsZXJzLCB0 byBoYW5kbGUgY29tbW9uIGludGVycnVwdHMKKyAqIHRoYXQgc2hvdWxkIGJlIGhhbmRsZWQg YnkgYWxsIG9yIG1vc3QgY2hpbGQgcHJvY2Vzc2VzLgorICoKKyAqIFRoZSBjYWxsZXIgbWF5 IG1vZGlmeSB0aGUgZGVmYXVsdHMgYWZ0ZXIgY2FsbGluZyB0aGlzIHdpdGggZnVydGhlcgor ICogU2V0SW50ZXJydXB0SGFuZGxlcigpIG9yIEVuYWJsZS9EaXNhYmxlSW50ZXJydXB0KCkg Y2FsbHMuCiAgKi8KIHZvaWQKLUhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQodm9p ZCkKK1NldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnModm9pZCkKIHsKLQlpZiAocGdfYXRv bWljX3JlYWRfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cykgIT0gMCkK LQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkg cHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KKwkvKiBBbGwgcHJvY2Vzc2VzIHNob3Vs ZCByZWFjdCB0byBiYXJyaWVycyBhbmQgbWVtb3J5IGNvbnRleHQgZGVidWdnaW5nICovCisJ U2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQkFSUklFUiwgUHJvY2Vzc1Byb2NTaWdu YWxCYXJyaWVyKTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpOworCVNl dEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCwgUHJvY2Vz c0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJV UFRfTE9HX01FTU9SWV9DT05URVhUKTsKKworCS8qCisJICogQ2F0Y2h1cCBpbnRlcnJ1cHRz IG11c3QgYmUgaGFuZGxlZCBpbiBhbnl0aGluZyB0aGF0IHBhcnRpY2lwYXRlcyBpbgorCSAq IHNoYXJlZCBpbnZhbGlkYXRpb24KKwkgKi8KKwkvKiBYWFg6IGRvbmUgaW4gc2ludmFsYWR0 LmMgKi8KKwkvKiBTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hV UCwgUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQpOyAqLworCisJLyoKKwkgKiBFdmVyeSBwcm9j ZXNzIHNob3VsZCByZWFjdCB0byBJTlRFUlJVUFRfVEVSTUlOQVRFLiBCdXQgbWFueSBwcm9j ZXNzZXMKKwkgKiBkaXNhYmxlIHRoaXMgYW5kIGRvIHRoZWlyIG93biBjaGVja3MgYXQgYXBw cm9wcmlhdGUgdGltZXMuCisJICovCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRf VEVSTUlOQVRFLCBQcm9jZXNzVGVybWluYXRlSW50ZXJydXB0KTsKKwlFbmFibGVJbnRlcnJ1 cHQoSU5URVJSVVBUX1RFUk1JTkFURSk7CisKKwkvKgorCSAqIEJhY2tlbmRzIGFuZCBwcm9j ZXNzZXMgdGhhdCBjb25uZWN0IHRvIGEgcGFydGljdWxhciBkYXRhYmFzZSBjYW4KKwkgKiBj b25mbGljdCB3aXRoIHJlY292ZXJ5CisJICoKKwkgKiB4eHg6IFNldCB0aGlzIGluIEluaXRQ b3N0Z3JlcyBpZiB3ZSdyZSBjb25uZWN0aW5nIHRvIGEgcGFydGljdWxhcgorCSAqIGRhdGFi YXNlPworCSAqLworCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1JFQ09WRVJZX0NP TkZMSUNULCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdCk7CisJRW5hYmxlSW50 ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCk7CisKKwkvKgorCSAqIEFsbCBw cm9jZXNzZXMgc2hvdWxkIGhhbmRsZSBjb25maWcgcmVsb2Fkcy4gQnV0IHVzdWFsbHkgb25s eSBpbgorCSAqIHNwZWNpZmljIHNwb3RzLCBsaWtlIHdoZW4gbm90IGluIGEgdHJhbnNhY3Rp b24sIHNvIHRoaXMgaXMgZGlzYWJsZWQgYnkKKwkgKiBkZWZhdWx0LgorCSAqCisJICogVGhp cyByZWxpZXMgb24gdGhlIFNJR0hVUCBzaWduYWwgaGFuZGxlciB0byByYWlzZQorCSAqIElO VEVSUlVQVF9DT05GSUdfUkVMT0FEIG9uIFNJR0hVUC4KKwkgKi8KKwlTZXRJbnRlcnJ1cHRI YW5kbGVyKElOVEVSUlVQVF9DT05GSUdfUkVMT0FELCBQcm9jZXNzQ29uZmlnUmVsb2FkSW50 ZXJydXB0KTsKIH0KIAogLyoKLSAqIENoZWNrIG9uZSBpbmRpdmlkdWFsIGNvbmZsaWN0IHJl YXNvbi4KKyAqIENoZWNrIGVhY2ggcG9zc2libGUgcmVjb3ZlcnkgY29uZmxpY3QgcmVhc29u LgogICovCiBzdGF0aWMgdm9pZAotUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQo UmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pCitQcm9jZXNzUmVjb3ZlcnlDb25mbGlj dEludGVycnVwdCh2b2lkKQoreworCXVpbnQzMgkJcGVuZGluZzsKKworCS8qIEFyZSBhbnkg cmVjb3ZlcnkgY29uZmxpY3RzIHBlbmRpbmc/ICovCisJcGVuZGluZyA9IHBnX2F0b21pY19y ZWFkX21lbWJhcnJpZXJfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cyk7 CisJaWYgKHBlbmRpbmcgPT0gMCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDaGVjayB0aGUg Y29uZmxpY3RzIG9uZSBieSBvbmUsIGNsZWFyaW5nIGVhY2ggZmxhZyBvbmx5IGJlZm9yZQor CSAqIHByb2Nlc3NpbmcgdGhlIHBhcnRpY3VsYXIgY29uZmxpY3QuICBUaGlzIGVuc3VyZXMg dGhhdCBpZiBtdWx0aXBsZQorCSAqIGNvbmZsaWN0cyBhcmUgcGVuZGluZywgd2UgY29tZSBi YWNrIGhlcmUgdG8gcHJvY2VzcyB0aGUgcmVtYWluaW5nCisJICogY29uZmxpY3RzLCBpZiBh biBlcnJvciBpcyB0aHJvd24gZHVyaW5nIHByb2Nlc3Npbmcgb25lIG9mIHRoZW0uCisJICov CisJZm9yIChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbiA9IDA7CisJCSByZWFzb24g PCBOVU1fUkVDT1ZFUllfQ09ORkxJQ1RfUkVBU09OUzsKKwkJIHJlYXNvbisrKQorCXsKKwkJ aWYgKChwZW5kaW5nICYgKDEgPDwgcmVhc29uKSkgIT0gMCkKKwkJeworCQkJLyogY2xlYXIg dGhlIGZsYWcgKi8KKwkJCSh2b2lkKSBwZ19hdG9taWNfZmV0Y2hfYW5kX3UzMigmTXlQcm9j LT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMsIH4oMSA8PCByZWFzb24pKTsKKworCQkJUHJv Y2Vzc1JlY292ZXJ5Q29uZmxpY3QocmVhc29uKTsKKwkJfQorCX0KK30KKwordm9pZAorUHJv Y2Vzc1JlY292ZXJ5Q29uZmxpY3QoUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pCiB7 CiAJc3dpdGNoIChyZWFzb24pCiAJewpAQCAtMzI0MiwxNCArMzIwMiwxNCBAQCByZXBvcnRf cmVjb3ZlcnlfY29uZmxpY3QoUmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pCiAJCWlm ICghRG9pbmdDb21tYW5kUmVhZCkKIAkJewogCQkJLyogQXZvaWQgbG9zaW5nIHN5bmMgaW4g dGhlIEZFL0JFIHByb3RvY29sLiAqLwotCQkJaWYgKFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50 ICE9IDApCisJCQlpZiAoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChJTlRFUlJVUFRf UVVFUllfQ0FOQ0VMKSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFJlLWFybSBhbmQgZGVmZXIg dGhpcyBpbnRlcnJ1cHQgdW50aWwgbGF0ZXIuICBTZWUgc2ltaWxhcgogCQkJCSAqIGNvZGUg aW4gUHJvY2Vzc0ludGVycnVwdHMoKS4KIAkJCQkgKi8KIAkJCQkodm9pZCkgcGdfYXRvbWlj X2ZldGNoX29yX3UzMigmTXlQcm9jLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMsICgxIDw8 IHJlYXNvbikpOwotCQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCQkJCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCk7CiAJCQkJcmV0dXJuOwogCQkJ fQogCkBAIC0zMjgwLDcyICszMjQwLDMxIEBAIHJlcG9ydF9yZWNvdmVyeV9jb25mbGljdChS ZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbikKIAkJCQkJICIgZGF0YWJhc2UgYW5kIHJl cGVhdCB5b3VyIGNvbW1hbmQuIikpKTsKIH0KIAotLyoKLSAqIENoZWNrIGVhY2ggcG9zc2li bGUgcmVjb3ZlcnkgY29uZmxpY3QgcmVhc29uLgotICovCi1zdGF0aWMgdm9pZAotUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKHZvaWQpCit2b2lkCitQcm9jZXNzQ29uZmln UmVsb2FkSW50ZXJydXB0KHZvaWQpCiB7Ci0JdWludDMyCQlwZW5kaW5nOwotCi0JLyoKLQkg KiBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGpvZ2dsaW5nIHRoZSBlbGJvdyBvZiBw cm9jX2V4aXQsIGJlY2F1c2UKLQkgKiBwcm9jX2V4aXRfcHJlcGFyZSgpIGhvbGRzIGludGVy cnVwdHMsIHNvIFByb2Nlc3NJbnRlcnJ1cHRzKCkgd29uJ3QgY2FsbAotCSAqIHVzLgotCSAq LwotCUFzc2VydCghcHJvY19leGl0X2lucHJvZ3Jlc3MpOwotCUFzc2VydChJbnRlcnJ1cHRI b2xkb2ZmQ291bnQgPT0gMCk7Ci0KLQkvKiBBcmUgYW55IHJlY292ZXJ5IGNvbmZsaWN0IHBl bmRpbmc/ICovCi0JcGVuZGluZyA9IHBnX2F0b21pY19yZWFkX21lbWJhcnJpZXJfdTMyKCZN eVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cyk7Ci0JaWYgKHBlbmRpbmcgPT0gMCkK LQkJcmV0dXJuOworCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworfQogCit2b2lk CitQcm9jZXNzQXN5bmNOb3RpZnlJbnRlcnJ1cHQodm9pZCkKK3sKIAkvKgotCSAqIENoZWNr IHRoZSBjb25mbGljdHMgb25lIGJ5IG9uZSwgY2xlYXJpbmcgZWFjaCBmbGFnIG9ubHkgYmVm b3JlCi0JICogcHJvY2Vzc2luZyB0aGUgcGFydGljdWxhciBjb25mbGljdC4gIFRoaXMgZW5z dXJlcyB0aGF0IGlmIG11bHRpcGxlCi0JICogY29uZmxpY3RzIGFyZSBwZW5kaW5nLCB3ZSBj b21lIGJhY2sgaGVyZSB0byBwcm9jZXNzIHRoZSByZW1haW5pbmcKLQkgKiBjb25mbGljdHMs IGlmIGFuIGVycm9yIGlzIHRocm93biBkdXJpbmcgcHJvY2Vzc2luZyBvbmUgb2YgdGhlbS4K KwkgKiBUaGlzIGlzIG9ubHkgZW5hYmxlZCB3aGlsZSBEb2luZ0NvbW1hbmRSZWFkLCBzbyB3 ZSB3YW50IHRvIGZsdXNoIHRoZQorCSAqIGFzeW5jIG5vdGlmeSB0byB0aGUgY2xpZW50IGlt bWVkaWF0ZWx5CiAJICovCi0JZm9yIChSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNvbiA9 IDA7Ci0JCSByZWFzb24gPCBOVU1fUkVDT1ZFUllfQ09ORkxJQ1RfUkVBU09OUzsKLQkJIHJl YXNvbisrKQotCXsKLQkJaWYgKChwZW5kaW5nICYgKDEgPDwgcmVhc29uKSkgIT0gMCkKLQkJ ewotCQkJLyogY2xlYXIgdGhlIGZsYWcgKi8KLQkJCSh2b2lkKSBwZ19hdG9taWNfZmV0Y2hf YW5kX3UzMigmTXlQcm9jLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMsIH4oMSA8PCByZWFz b24pKTsKLQotCQkJUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQocmVhc29uKTsK LQkJfQotCX0KKwlBc3NlcnQoRG9pbmdDb21tYW5kUmVhZCk7CisJUHJvY2Vzc05vdGlmeUlu dGVycnVwdCh0cnVlKTsKIH0KIAotLyoKLSAqIFByb2Nlc3NJbnRlcnJ1cHRzOiBvdXQtb2Yt bGluZSBwb3J0aW9uIG9mIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgbWFjcm8KLSAqCi0gKiBJ ZiBhbiBpbnRlcnJ1cHQgY29uZGl0aW9uIGlzIHBlbmRpbmcsIGFuZCBpdCdzIHNhZmUgdG8g c2VydmljZSBpdCwKLSAqIHRoZW4gY2xlYXIgdGhlIGZsYWcgYW5kIGFjY2VwdCB0aGUgaW50 ZXJydXB0LiAgQ2FsbGVkIG9ubHkgd2hlbgotICogSW50ZXJydXB0UGVuZGluZyBpcyB0cnVl LgotICoKLSAqIE5vdGU6IGlmIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpIGlzIHRy dWUsIHRoZW4gUHJvY2Vzc0ludGVycnVwdHMKLSAqIGlzIGd1YXJhbnRlZWQgdG8gY2xlYXIg dGhlIEludGVycnVwdFBlbmRpbmcgZmxhZyBiZWZvcmUgcmV0dXJuaW5nLgotICogKFRoaXMg aXMgbm90IHRoZSBzYW1lIGFzIGd1YXJhbnRlZWluZyB0aGF0IGl0J3Mgc3RpbGwgY2xlYXIg d2hlbiB3ZQotICogcmV0dXJuOyBhbm90aGVyIGludGVycnVwdCBjb3VsZCBoYXZlIGFycml2 ZWQuICBCdXQgd2UgcHJvbWlzZSB0aGF0Ci0gKiBhbnkgcHJlLWV4aXN0aW5nIG9uZSB3aWxs IGhhdmUgYmVlbiBzZXJ2aWNlZC4pCi0gKi8KIHZvaWQKLVByb2Nlc3NJbnRlcnJ1cHRzKHZv aWQpCitQcm9jZXNzVGVybWluYXRlSW50ZXJydXB0KHZvaWQpCiB7CiAJLyogT0sgdG8gYWNj ZXB0IGFueSBpbnRlcnJ1cHRzIG5vdz8gKi8KLQlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50 ICE9IDAgfHwgQ3JpdFNlY3Rpb25Db3VudCAhPSAwKQotCQlyZXR1cm47Ci0JSW50ZXJydXB0 UGVuZGluZyA9IGZhbHNlOworCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCk7 CisJQXNzZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7CiAKLQlpZiAoUHJvY0RpZVBlbmRp bmcpCiAJewotCQlQcm9jRGllUGVuZGluZyA9IGZhbHNlOwotCQlRdWVyeUNhbmNlbFBlbmRp bmcgPSBmYWxzZTsgLyogUHJvY0RpZSB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KIAkJTG9ja0Vy cm9yQ2xlYW51cCgpOwogCQkvKiBBcyBpbiBxdWlja2RpZSwgZG9uJ3QgcmlzayBzZW5kaW5n IHRvIGNsaWVudCBkdXJpbmcgYXV0aCAqLwogCQlpZiAoQ2xpZW50QXV0aEluUHJvZ3Jlc3Mg JiYgd2hlcmVUb1NlbmRPdXRwdXQgPT0gRGVzdFJlbW90ZSkKQEAgLTMzOTQsNjUgKzMzMTMs NTUgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9B RE1JTl9TSFVURE9XTiksCiAJCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24g ZHVlIHRvIGFkbWluaXN0cmF0b3IgY29tbWFuZCIpKSk7CiAJfQorfQogCi0JaWYgKENoZWNr Q2xpZW50Q29ubmVjdGlvblBlbmRpbmcpCi0JewotCQlDaGVja0NsaWVudENvbm5lY3Rpb25Q ZW5kaW5nID0gZmFsc2U7Ci0KLQkJLyoKLQkJICogQ2hlY2sgZm9yIGxvc3QgY29ubmVjdGlv biBhbmQgcmUtYXJtLCBpZiBzdGlsbCBjb25maWd1cmVkLCBidXQgbm90Ci0JCSAqIGlmIHdl J3ZlIGFycml2ZWQgYmFjayBhdCBEb2luZ0NvbW1hbmRSZWFkIHN0YXRlLiAgV2UgZG9uJ3Qg d2FudCB0bwotCQkgKiB3YWtlIHVwIGlkbGUgc2Vzc2lvbnMsIGFuZCB0aGV5IGFscmVhZHkg a25vdyBob3cgdG8gZGV0ZWN0IGxvc3QKLQkJICogY29ubmVjdGlvbnMuCi0JCSAqLwotCQlp ZiAoIURvaW5nQ29tbWFuZFJlYWQgJiYgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2 YWwgPiAwKQotCQl7Ci0JCQlpZiAoIXBxX2NoZWNrX2Nvbm5lY3Rpb24oKSkKLQkJCQlDbGll bnRDb25uZWN0aW9uTG9zdCA9IHRydWU7Ci0JCQllbHNlCi0JCQkJZW5hYmxlX3RpbWVvdXRf YWZ0ZXIoQ0xJRU5UX0NPTk5FQ1RJT05fQ0hFQ0tfVElNRU9VVCwKLQkJCQkJCQkJCSBjbGll bnRfY29ubmVjdGlvbl9jaGVja19pbnRlcnZhbCk7Ci0JCX0KLQl9CiAKLQlpZiAoQ2xpZW50 Q29ubmVjdGlvbkxvc3QpCit2b2lkCitQcm9jZXNzQ2xpZW50Q2hlY2tUaW1lb3V0SW50ZXJy dXB0KHZvaWQpCit7CisJLyoKKwkgKiBDaGVjayBmb3IgbG9zdCBjb25uZWN0aW9uIGFuZCBy ZS1hcm0sIGlmIHN0aWxsIGNvbmZpZ3VyZWQsIGJ1dCBub3QgaWYKKwkgKiB3ZSd2ZSBhcnJp dmVkIGJhY2sgYXQgRG9pbmdDb21tYW5kUmVhZCBzdGF0ZS4gIFdlIGRvbid0IHdhbnQgdG8g d2FrZSB1cAorCSAqIGlkbGUgc2Vzc2lvbnMsIGFuZCB0aGV5IGFscmVhZHkga25vdyBob3cg dG8gZGV0ZWN0IGxvc3QgY29ubmVjdGlvbnMuCisJICovCisJaWYgKCFEb2luZ0NvbW1hbmRS ZWFkICYmIGNsaWVudF9jb25uZWN0aW9uX2NoZWNrX2ludGVydmFsID4gMCkKIAl7Ci0JCVF1 ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOyAvKiBsb3N0IGNvbm5lY3Rpb24gdHJ1bXBzIFF1 ZXJ5Q2FuY2VsICovCi0JCUxvY2tFcnJvckNsZWFudXAoKTsKLQkJLyogZG9uJ3Qgc2VuZCB0 byBjbGllbnQsIHdlIGFscmVhZHkga25vdyB0aGUgY29ubmVjdGlvbiB0byBiZSBkZWFkLiAq LwotCQl3aGVyZVRvU2VuZE91dHB1dCA9IERlc3ROb25lOwotCQllcmVwb3J0KEZBVEFMLAot CQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKLQkJCQkgZXJybXNn KCJjb25uZWN0aW9uIHRvIGNsaWVudCBsb3N0IikpKTsKKwkJaWYgKCFwcV9jaGVja19jb25u ZWN0aW9uKCkpCisJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ0xJRU5UX0NPTk5FQ1RJ T05fTE9TVCk7CisJCWVsc2UKKwkJCWVuYWJsZV90aW1lb3V0X2FmdGVyKENMSUVOVF9DT05O RUNUSU9OX0NIRUNLX1RJTUVPVVQsCisJCQkJCQkJCSBjbGllbnRfY29ubmVjdGlvbl9jaGVj a19pbnRlcnZhbCk7CiAJfQorfQorCit2b2lkCitQcm9jZXNzQ2xpZW50Q29ubmVjdGlvbkxv c3Qodm9pZCkKK3sKKwkvKiBGSVhNRTogY2hlY2sgcHJvY2RpZSBmaXJzdCAqLwogCisJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIGxvc3QgY29ubmVjdGlv biB0cnVtcHMKKwkJCQkJCQkJCQkJICogUXVlcnlDYW5jZWwgKi8KKwlMb2NrRXJyb3JDbGVh bnVwKCk7CisJLyogZG9uJ3Qgc2VuZCB0byBjbGllbnQsIHdlIGFscmVhZHkga25vdyB0aGUg Y29ubmVjdGlvbiB0byBiZSBkZWFkLiAqLworCXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5v bmU7CisJZXJlcG9ydChGQVRBTCwKKwkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9G QUlMVVJFKSwKKwkJCSBlcnJtc2coImNvbm5lY3Rpb24gdG8gY2xpZW50IGxvc3QiKSkpOwor fQorCit2b2lkCitQcm9jZXNzUXVlcnlDYW5jZWxJbnRlcnJ1cHQodm9pZCkKK3sKIAkvKgot CSAqIERvbid0IGFsbG93IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRzIHdoaWxlIHJlYWRpbmcg aW5wdXQgZnJvbSB0aGUKLQkgKiBjbGllbnQsIGJlY2F1c2Ugd2UgbWlnaHQgbG9zZSBzeW5j IGluIHRoZSBGRS9CRSBwcm90b2NvbC4gIChEaWUKLQkgKiBpbnRlcnJ1cHRzIGFyZSBPSywg YmVjYXVzZSB3ZSB3b24ndCByZWFkIGFueSBmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlCi0J ICogY2xpZW50IGluIHRoYXQgY2FzZS4pCi0JICoKLQkgKiBTZWUgc2ltaWxhciBsb2dpYyBp biBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdHMoKS4KKwkgKiBGSVhNRTogQ2hl Y2sgY2xpZW50IGNvbm5lY3Rpb24gbG9zdCBhbmQgdGVybWluYXRlIGludGVycnVwdHMgZmly c3QsIHNvCisJICogdGhhdCBpZiB3ZSdyZSBhYm91dCB0byB0ZXJtaW5hdGUgdGhlIHdob2xl IGJhY2tlbmQgYW55d2F5LCB3ZSBkbyB0aGF0CisJICogc3RyYWlnaHQgYXdheSBhbmQgc2tp cCB0aGUgcXVlcnkgY2FuY2VsbGF0aW9uLgogCSAqLwotCWlmIChRdWVyeUNhbmNlbFBlbmRp bmcgJiYgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgIT0gMCkKLQl7Ci0JCS8qCi0JCSAqIFJl LWFybSBJbnRlcnJ1cHRQZW5kaW5nIHNvIHRoYXQgd2UgcHJvY2VzcyB0aGUgY2FuY2VsIHJl cXVlc3QgYXMKLQkJICogc29vbiBhcyB3ZSdyZSBkb25lIHJlYWRpbmcgdGhlIG1lc3NhZ2Uu ICAoWFhYIHRoaXMgaXMgc2VyaW91c2x5Ci0JCSAqIHVnbHk6IGl0IGNvbXBsaWNhdGVzIElO VEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgpLCBhbmQgaXQgbWVhbnMgd2UKLQkJICogY2Fu J3QgdXNlIHRoYXQgbWFjcm8gZGlyZWN0bHkgYXMgdGhlIGluaXRpYWwgdGVzdCBpbiB0aGlz IGZ1bmN0aW9uLAotCQkgKiBtZWFuaW5nIHRoYXQgdGhpcyBjb2RlIGFsc28gY3JlYXRlcyBv cHBvcnR1bml0aWVzIGZvciBvdGhlciBidWdzIHRvCi0JCSAqIGFwcGVhci4pCi0JCSAqLwot CQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQl9Ci0JZWxzZSBpZiAoUXVlcnlDYW5jZWxQ ZW5kaW5nKQorCiAJewogCQlib29sCQlsb2NrX3RpbWVvdXRfb2NjdXJyZWQ7CiAJCWJvb2wJ CXN0bXRfdGltZW91dF9vY2N1cnJlZDsKIAotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxz ZTsKLQogCQkvKgogCQkgKiBJZiBMT0NLX1RJTUVPVVQgYW5kIFNUQVRFTUVOVF9USU1FT1VU IGluZGljYXRvcnMgYXJlIGJvdGggc2V0LCB3ZQogCQkgKiBuZWVkIHRvIGNsZWFyIGJvdGgs IHNvIGFsd2F5cyBmZXRjaCBib3RoLgpAQCAtMzUwNSw3NiArMzQxNCw2NiBAQCBQcm9jZXNz SW50ZXJydXB0cyh2b2lkKQogCQkJCQkgZXJybXNnKCJjYW5jZWxpbmcgc3RhdGVtZW50IGR1 ZSB0byB1c2VyIHJlcXVlc3QiKSkpOwogCQl9CiAJfQorfQogCi0JaWYgKHBnX2F0b21pY19y ZWFkX3UzMigmTXlQcm9jLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMpICE9IDApCi0JCVBy b2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0cygpOwogCi0JaWYgKElkbGVJblRyYW5z YWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nKQordm9pZAorUHJvY2Vzc0lkbGVJblRyYW5z YWN0aW9uU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCkKK3sKKwkvKgorCSAqIElmIHRo ZSBHVUMgaGFzIGJlZW4gcmVzZXQgdG8gemVybywgaWdub3JlIHRoZSBpbnRlcnJ1cHQuICBU aGlzIGlzCisJICogaW1wb3J0YW50IGJlY2F1c2UgdGhlIEdVQyB1cGRhdGUgaXRzZWxmIHdv bid0IGRpc2FibGUgYW55IHBlbmRpbmcKKwkgKiBpbnRlcnJ1cHQuICBXZSBuZWVkIHRvIHVu c2V0IHRoZSBmbGFnIGJlZm9yZSB0aGUgaW5qZWN0aW9uIHBvaW50LAorCSAqIG90aGVyd2lz ZSB3ZSBjb3VsZCBsb29wIGluIGludGVycnVwdHMgY2hlY2tpbmcuCisJICovCisJaWYgKElk bGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXQgPiAwKQogCXsKLQkJLyoKLQkJICogSWYg dGhlIEdVQyBoYXMgYmVlbiByZXNldCB0byB6ZXJvLCBpZ25vcmUgdGhlIHNpZ25hbC4gIFRo aXMgaXMKLQkJICogaW1wb3J0YW50IGJlY2F1c2UgdGhlIEdVQyB1cGRhdGUgaXRzZWxmIHdv bid0IGRpc2FibGUgYW55IHBlbmRpbmcKLQkJICogaW50ZXJydXB0LiAgV2UgbmVlZCB0byB1 bnNldCB0aGUgZmxhZyBiZWZvcmUgdGhlIGluamVjdGlvbiBwb2ludCwKLQkJICogb3RoZXJ3 aXNlIHdlIGNvdWxkIGxvb3AgaW4gaW50ZXJydXB0cyBjaGVja2luZy4KLQkJICovCi0JCUlk bGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7Ci0JCWlmIChJ ZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0ID4gMCkKLQkJewotCQkJSU5KRUNUSU9O X1BPSU5UKCJpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91dCIsIE5VTEwpOwot CQkJZXJlcG9ydChGQVRBTCwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JRExFX0lOX1RSQU5T QUNUSU9OX1NFU1NJT05fVElNRU9VVCksCi0JCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGNv bm5lY3Rpb24gZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24gdGltZW91dCIpKSk7Ci0JCX0K KwkJSU5KRUNUSU9OX1BPSU5UKCJpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91 dCIsIE5VTEwpOworCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSURM RV9JTl9UUkFOU0FDVElPTl9TRVNTSU9OX1RJTUVPVVQpLAorCQkJCSBlcnJtc2coInRlcm1p bmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24gdGltZW91dCIp KSk7CiAJfQorfQogCi0JaWYgKFRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmcpCit2b2lkCitQ cm9jZXNzVHJhbnNhY3Rpb25UaW1lb3V0SW50ZXJydXB0KHZvaWQpCit7CisJLyogQXMgYWJv dmUsIGlnbm9yZSB0aGUgc2lnbmFsIGlmIHRoZSBHVUMgaGFzIGJlZW4gcmVzZXQgdG8gemVy by4gKi8KKwlpZiAoVHJhbnNhY3Rpb25UaW1lb3V0ID4gMCkKIAl7Ci0JCS8qIEFzIGFib3Zl LCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHplcm8u ICovCi0JCVRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLQkJaWYgKFRyYW5z YWN0aW9uVGltZW91dCA+IDApCi0JCXsKLQkJCUlOSkVDVElPTl9QT0lOVCgidHJhbnNhY3Rp b24tdGltZW91dCIsIE5VTEwpOwotCQkJZXJlcG9ydChGQVRBTCwKLQkJCQkJKGVycmNvZGUo RVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUKSwKLQkJCQkJIGVycm1zZygidGVybWluYXRp bmcgY29ubmVjdGlvbiBkdWUgdG8gdHJhbnNhY3Rpb24gdGltZW91dCIpKSk7Ci0JCX0KKwkJ SU5KRUNUSU9OX1BPSU5UKCJ0cmFuc2FjdGlvbi10aW1lb3V0IiwgTlVMTCk7CisJCWVyZXBv cnQoRkFUQUwsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUKSwK KwkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byB0cmFuc2FjdGlv biB0aW1lb3V0IikpKTsKIAl9Cit9CiAKLQlpZiAoSWRsZVNlc3Npb25UaW1lb3V0UGVuZGlu ZykKK3ZvaWQKK1Byb2Nlc3NJZGxlU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCkKK3sK KwkvKiBBcyBhYm92ZSwgaWdub3JlIHRoZSBzaWduYWwgaWYgdGhlIEdVQyBoYXMgYmVlbiBy ZXNldCB0byB6ZXJvLiAqLworCWlmIChJZGxlU2Vzc2lvblRpbWVvdXQgPiAwKQogCXsKLQkJ LyogQXMgYWJvdmUsIGlnbm9yZSB0aGUgc2lnbmFsIGlmIHRoZSBHVUMgaGFzIGJlZW4gcmVz ZXQgdG8gemVyby4gKi8KLQkJSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwot CQlpZiAoSWRsZVNlc3Npb25UaW1lb3V0ID4gMCkKLQkJewotCQkJSU5KRUNUSU9OX1BPSU5U KCJpZGxlLXNlc3Npb24tdGltZW91dCIsIE5VTEwpOwotCQkJZXJlcG9ydChGQVRBTCwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JRExFX1NFU1NJT05fVElNRU9VVCksCi0JCQkJCSBlcnJt c2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIGlkbGUtc2Vzc2lvbiB0aW1lb3V0 IikpKTsKLQkJfQorCQlJTkpFQ1RJT05fUE9JTlQoImlkbGUtc2Vzc2lvbi10aW1lb3V0Iiwg TlVMTCk7CisJCWVyZXBvcnQoRkFUQUwsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JRExFX1NF U1NJT05fVElNRU9VVCksCisJCQkJIGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBk dWUgdG8gaWRsZS1zZXNzaW9uIHRpbWVvdXQiKSkpOwogCX0KK30KIAordm9pZAorUHJvY2Vz c0lkbGVTdGF0c1RpbWVvdXRJbnRlcnJ1cHQodm9pZCkKK3sKIAkvKgotCSAqIElmIHRoZXJl IGFyZSBwZW5kaW5nIHN0YXRzIHVwZGF0ZXMgYW5kIHdlIGN1cnJlbnRseSBhcmUgdHJ1bHkg aWRsZQotCSAqIChtYXRjaGluZyB0aGUgY29uZGl0aW9ucyBpbiBQb3N0Z3Jlc01haW4oKSwg cmVwb3J0IHN0YXRzIG5vdy4KKwkgKiBTdGF0cyB1cGRhdGUgd2FzIHJlcXVlc3RlZC4gVGhp cyBoYW5kbGVyIGlzIG9ubHkgZW5hYmxlZCB3aGVuIHdlJ3JlCisJICogdHJ1bHkgaWRsZSwg d2l0aCBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcwogCSAqLwotCWlmIChJZGxlU3RhdHNV cGRhdGVUaW1lb3V0UGVuZGluZyAmJgotCQlEb2luZ0NvbW1hbmRSZWFkICYmICFJc1RyYW5z YWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCi0JewotCQlJZGxlU3RhdHNVcGRhdGVUaW1l b3V0UGVuZGluZyA9IGZhbHNlOwotCQlwZ3N0YXRfcmVwb3J0X3N0YXQodHJ1ZSk7Ci0JfQot Ci0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKLQkJUHJvY2Vzc1Byb2NTaWduYWxC YXJyaWVyKCk7Ci0KLQlpZiAoUGFyYWxsZWxNZXNzYWdlUGVuZGluZykKLQkJUHJvY2Vzc1Bh cmFsbGVsTWVzc2FnZXMoKTsKLQotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKLQkJ UHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKLQotCWlmIChQYXJhbGxlbEFw cGx5TWVzc2FnZVBlbmRpbmcpCi0JCVByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsK KwkvKgorCSAqIEZJWE1FOiBjaGVjayB0aGF0IHRoaXMgaXMgY2FsbGVkIHVuZGVyIHJpZ2h0 IGNvbmRpdGlvbnMgYWxzbyBpbgorCSAqIHdhbHNlbmRlcnMKKwkgKi8KKwlBc3NlcnQoIUlz VHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxvY2soKSk7CisJcGdzdGF0X3JlcG9ydF9zdGF0 KHRydWUpOwogfQogCiAvKgpAQCAtNDIzOCw5ICs0MTM3LDEzIEBAIFBvc3RncmVzTWFpbihj b25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogCiAJQXNzZXJ0KEdl dFByb2Nlc3NpbmdNb2RlKCkgPT0gSW5pdFByb2Nlc3NpbmcpOwogCisJSE9MRF9JTlRFUlJV UFRTKCk7CisJU2V0U3RhbmRhcmRJbnRlcnJ1cHRIYW5kbGVycygpOworCiAJLyoKLQkgKiBT ZXQgdXAgc2lnbmFsIGhhbmRsZXJzLiAgKEluaXRQb3N0bWFzdGVyQ2hpbGQgb3IgSW5pdFN0 YW5kYWxvbmVQcm9jZXNzCi0JICogaGFzIGFscmVhZHkgc2V0IHVwIEJsb2NrU2lnIGFuZCBt YWRlIHRoYXQgdGhlIGFjdGl2ZSBzaWduYWwgbWFzay4pCisJICogU2V0IHVwIHNpZ25hbCBh bmQgaW50ZXJydXB0IGhhbmRsZXJzLiAgKEluaXRQb3N0bWFzdGVyQ2hpbGQgb3IKKwkgKiBJ bml0U3RhbmRhbG9uZVByb2Nlc3MgaGFzIGFscmVhZHkgc2V0IHVwIEJsb2NrU2lnIGFuZCBt YWRlIHRoYXQgdGhlCisJICogYWN0aXZlIHNpZ25hbCBtYXNrLikKIAkgKgogCSAqIE5vdGUg dGhhdCBwb3N0bWFzdGVyIGJsb2NrZWQgYWxsIHNpZ25hbHMgYmVmb3JlIGZvcmtpbmcgY2hp bGQgcHJvY2VzcywKIAkgKiBzbyB0aGVyZSBpcyBubyByYWNlIGNvbmRpdGlvbiB3aGVyZWJ5 IHdlIG1pZ2h0IHJlY2VpdmUgYSBzaWduYWwgYmVmb3JlCkBAIC00MjUzLDEzICs0MTU2LDI1 IEBAIFBvc3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJu YW1lKQogCSAqIGFuIGlzc3VlIGZvciBzaWduYWxzIHRoYXQgYXJlIGxvY2FsbHkgZ2VuZXJh dGVkLCBzdWNoIGFzIFNJR0FMUk0gYW5kCiAJICogU0lHUElQRS4pCiAJICovCisJU2V0SW50 ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLCBQcm9jZXNzUXVlcnlDYW5j ZWxJbnRlcnJ1cHQpOworCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM KTsKKwogCWlmIChhbV93YWxzZW5kZXIpCisJeworCQlwcXNpZ25hbChTSUdURVJNLCBTaWdu YWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwogCQlXYWxTbmRTaWduYWxzKCk7CisJ fQogCWVsc2UKIAl7Ci0JCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZCk7Ci0JCXBxc2lnbmFsKFNJR0lOVCwgU3RhdGVtZW50Q2FuY2VsSGFuZGxlcik7 CS8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5ICovCi0JCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7 IC8qIGNhbmNlbCBjdXJyZW50IHF1ZXJ5IGFuZCBleGl0ICovCisJCXBxc2lnbmFsKFNJR0lO VCwgU2lnbmFsSGFuZGxlckZvclF1ZXJ5Q2FuY2VsKTsJLyogY2FuY2VsIGN1cnJlbnQgcXVl cnkgKi8KKworCQkvKgorCQkgKiBDYW5jZWwgY3VycmVudCBxdWVyeSBhbmQgZXhpdC4gVGhp cyBpcyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIGluCisJCSAqIGJhY2tlbmQgcHJvY2Vzc2Vz LiBzbyB3ZSB3ZSBjYW5ub3QgdXNlCisJCSAqIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJl cXVlc3QgaGVyZS4KKwkJICovCisJCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7IC8qICovCiAK IAkJLyoKIAkJICogSW4gYSBwb3N0bWFzdGVyIGNoaWxkIGJhY2tlbmQsIHJlcGxhY2UgU2ln bmFsSGFuZGxlckZvckNyYXNoRXhpdApAQCAtNDI3Myw3ICs0MTg4LDE0IEBAIFBvc3RncmVz TWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogCQkJcHFz aWduYWwoU0lHUVVJVCwgcXVpY2tkaWUpOwkvKiBoYXJkIGNyYXNoIHRpbWUgKi8KIAkJZWxz ZQogCQkJcHFzaWduYWwoU0lHUVVJVCwgZGllKTsgLyogY2FuY2VsIGN1cnJlbnQgcXVlcnkg YW5kIGV4aXQgKi8KKwogCQlJbml0aWFsaXplVGltZW91dHMoKTsJLyogZXN0YWJsaXNoZXMg U0lHQUxSTSBoYW5kbGVyICovCisJCVNldEludGVycnVwdEhhbmRsZXIoSU5URVJSVVBUX1RS QU5TQUNUSU9OX1RJTUVPVVQsIFByb2Nlc3NUcmFuc2FjdGlvblRpbWVvdXRJbnRlcnJ1cHQp OworCQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1RSQU5TQUNUSU9OX1RJTUVPVVQpOwor CQlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9JRExFX1NFU1NJT05fVElNRU9VVCwg UHJvY2Vzc0lkbGVTZXNzaW9uVGltZW91dEludGVycnVwdCk7CisJCUVuYWJsZUludGVycnVw dChJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQpOworCQlTZXRJbnRlcnJ1cHRIYW5k bGVyKElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCwgUHJv Y2Vzc0lkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQpOworCQlFbmFi bGVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1F T1VUKTsKIAogCQkvKgogCQkgKiBJZ25vcmUgZmFpbHVyZSB0byB3cml0ZSB0byBmcm9udGVu ZC4gTm90ZTogaWYgZnJvbnRlbmQgY2xvc2VzCkBAIC00MjgyLDExICs0MjA0LDMxIEBAIFBv c3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1lKQog CQkgKiBtaWRzdCBvZiBvdXRwdXQgZHVyaW5nIHdoby1rbm93cy13aGF0IG9wZXJhdGlvbi4u LgogCQkgKi8KIAkJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JCXBxc2lnbmFsKFNJ R1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKLQkJcHFzaWduYWwoU0lHVVNS MiwgU0lHX0lHTik7CiAJCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVy KTsKIAl9CiAKKwlTZXRJbnRlcnJ1cHRIYW5kbGVyKElOVEVSUlVQVF9DTElFTlRfQ0hFQ0tf VElNRU9VVCwgUHJvY2Vzc0NsaWVudENoZWNrVGltZW91dEludGVycnVwdCk7CisJU2V0SW50 ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfQ0xJRU5UX0NPTk5FQ1RJT05fTE9TVCwgUHJvY2Vz c0NsaWVudENvbm5lY3Rpb25Mb3N0KTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NM SUVOVF9DSEVDS19USU1FT1VUKTsKKwlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVO VF9DT05ORUNUSU9OX0xPU1QpOworCisJLyogc3RhdHMgdXBkYXRlcyBhcmUgb25seSBzZW50 IHdoZW4gd2UncmUgaWRsZSwgc28gZG9uJ3QgZW5hYmxlIHRoaXMgeWV0ICovCisJU2V0SW50 ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfSURMRV9TVEFUU19USU1FT1VULCBQcm9jZXNzSWRs ZVN0YXRzVGltZW91dEludGVycnVwdCk7CisKKwkvKgorCSAqIEJhY2tlbmRzIHRoYXQgY2Fu IExJU1RFTiBuZWVkIHRoaXMuIChJdCBpcyBvbmx5IGVuYWJsZWQgd2hlbiBpZGxlCisJICog b3V0c2lkZSBhIHRyYW5zYWN0aW9uLCBob3dldmVyLikKKwkgKgorCSAqIEZJWE1FOiBzaG91 bGQgYmd3b3JrZXJzIGRvIHRoaXMgdG9vPyBPciBpdCdzIHVwIHRvIHRoZW0gdG8gc2V0IHVw IHRoZQorCSAqIGhhbmRsZXIgaWYgdGhleSBMSVNURU4/CisJICovCisJU2V0SW50ZXJydXB0 SGFuZGxlcihJTlRFUlJVUFRfQVNZTkNfTk9USUZZLCBQcm9jZXNzQXN5bmNOb3RpZnlJbnRl cnJ1cHQpOworCisJU2V0SW50ZXJydXB0SGFuZGxlcihJTlRFUlJVUFRfUEFSQUxMRUxfTUVT U0FHRSwgUHJvY2Vzc1BhcmFsbGVsTWVzc2FnZXMpOworCUVuYWJsZUludGVycnVwdChJTlRF UlJVUFRfUEFSQUxMRUxfTUVTU0FHRSk7CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworCiAJ LyogRWFybHkgaW5pdGlhbGl6YXRpb24gKi8KIAlCYXNlSW5pdCgpOwogCkBAIC00NDU0LDEx ICs0Mzk2LDE0IEBAIFBvc3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNo YXIgKnVzZXJuYW1lKQogCQkgKiBmb3JnZXR0aW5nIGEgdGltZW91dCBjYW5jZWwuCiAJCSAq LwogCQlkaXNhYmxlX2FsbF90aW1lb3V0cyhmYWxzZSk7CS8qIGRvIGZpcnN0IHRvIGF2b2lk IHJhY2UgY29uZGl0aW9uICovCi0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOworCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAkJaWRsZV9pbl90cmFu c2FjdGlvbl90aW1lb3V0X2VuYWJsZWQgPSBmYWxzZTsKIAkJaWRsZV9zZXNzaW9uX3RpbWVv dXRfZW5hYmxlZCA9IGZhbHNlOwogCiAJCS8qIE5vdCByZWFkaW5nIGZyb20gdGhlIGNsaWVu dCBhbnltb3JlLiAqLworCQlEaXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9TSU5WQUxfQ0FU Q0hVUCk7CisJCURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0FTWU5DX05PVElGWSk7CisJ CURpc2FibGVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU1RBVFNfVElNRU9VVCk7CiAJCURv aW5nQ29tbWFuZFJlYWQgPSBmYWxzZTsKIAogCQkvKiBNYWtlIHN1cmUgbGlicHEgaXMgaW4g YSBnb29kIHN0YXRlICovCkBAIC00NjM5LDcgKzQ1ODQsNyBAQCBQb3N0Z3Jlc01haW4oY29u c3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAkJCQkgKiB3ZXJlIHJl Y2VpdmVkIGR1cmluZyB0aGUganVzdC1maW5pc2hlZCB0cmFuc2FjdGlvbiwgdGhleSdsbAog CQkJCSAqIGJlIHNlZW4gYnkgdGhlIGNsaWVudCBiZWZvcmUgUmVhZHlGb3JRdWVyeSBpcy4K IAkJCQkgKi8KLQkJCQlpZiAobm90aWZ5SW50ZXJydXB0UGVuZGluZykKKwkJCQlpZiAoQ29u c3VtZUludGVycnVwdChJTlRFUlJVUFRfQVNZTkNfTk9USUZZKSkKIAkJCQkJUHJvY2Vzc05v dGlmeUludGVycnVwdChmYWxzZSk7CiAKIAkJCQkvKgpAQCAtNDcyOCw2ICs0NjczLDI4IEBA IFBvc3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnVzZXJuYW1l KQogCQkgKi8KIAkJRG9pbmdDb21tYW5kUmVhZCA9IHRydWU7CiAKKwkJLyoKKwkJICogTGV0 IGNhY2hlIGludmFsIGNhdGNodXAgcmVxdWVzdHMgdG8gYmUgcHJvY2Vzc2VkIHdoaWxlIHdl J3JlIGlkbGUuCisJCSAqLworCQlFbmFibGVJbnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9D QVRDSFVQKTsKKworCQkvKgorCQkgKiBXaGVuIHdlJ3JlIHRydWx5IGlkbGUsIGkuZS4gbm8g dHJhbnNhY3Rpb24gaW4gcHJvZ3Jlc3MsIHdlIGNhbgorCQkgKiBhZGRpdGlvbmFsbHkgcHJv Y2VzcyBhbnkgYXN5bmMgTElTVEVOL05PVElGWSBtZXNzYWdlcyBhbmQgc3RhdHMKKwkJICog dXBkYXRlIHJlcXVlc3RzLgorCQkgKi8KKwkJaWYgKCFJc1RyYW5zYWN0aW9uT3JUcmFuc2Fj dGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfQVNZTkNf Tk9USUZZKTsKKwkJCUVuYWJsZUludGVycnVwdChJTlRFUlJVUFRfSURMRV9TVEFUU19USU1F T1VUKTsKKwkJfQorCisJCS8qCisJCSAqIElmIGFueSBvZiB0aGUgbmV3bHktZW5hYmxlZCBp bnRlcnJ1cHRzIGFyZSBhbHJlYWR5IHBlbmRpbmcsIHByb2Nlc3MKKwkJICogdGhlbSBub3cu CisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCiAJCS8qCiAJCSAqICgzKSBy ZWFkIGEgY29tbWFuZCAobG9vcCBibG9ja3MgaGVyZSkKIAkJICovCkBAIC00NzU3LDIyICs0 NzI0LDIyIEBAIFBvc3RncmVzTWFpbihjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIg KnVzZXJuYW1lKQogCQkgKgogCQkgKiBRdWVyeSBjYW5jZWwgaXMgc3VwcG9zZWQgdG8gYmUg YSBuby1vcCB3aGVuIHRoZXJlIGlzIG5vIHF1ZXJ5IGluCiAJCSAqIHByb2dyZXNzLCBzbyBp ZiBhIHF1ZXJ5IGNhbmNlbCBhcnJpdmVkIHdoaWxlIHdlIHdlcmUgaWRsZSwganVzdAotCQkg KiByZXNldCBRdWVyeUNhbmNlbFBlbmRpbmcuIFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIHRo YXQgZWZmZWN0IHdoZW4KLQkJICogaXQncyBjYWxsZWQgd2hlbiBEb2luZ0NvbW1hbmRSZWFk IGlzIHNldCwgc28gY2hlY2sgZm9yIGludGVycnVwdHMKLQkJICogYmVmb3JlIHJlc2V0dGlu ZyBEb2luZ0NvbW1hbmRSZWFkLgorCQkgKiByZXNldCBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM LiBQcm9jZXNzSW50ZXJydXB0cygpIGhhcyB0aGF0IGVmZmVjdAorCQkgKiB3aGVuIGl0J3Mg Y2FsbGVkIHdoZW4gRG9pbmdDb21tYW5kUmVhZCBpcyBzZXQsIHNvIGNoZWNrIGZvcgorCQkg KiBpbnRlcnJ1cHRzIGJlZm9yZSByZXNldHRpbmcgRG9pbmdDb21tYW5kUmVhZC4KIAkJICov CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCURvaW5nQ29tbWFuZFJlYWQgPSBmYWxz ZTsKKwkJRGlzYWJsZUludGVycnVwdChJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVApOworCQlE aXNhYmxlSW50ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpOworCQlEaXNhYmxlSW50 ZXJydXB0KElOVEVSUlVQVF9JRExFX1NUQVRTX1RJTUVPVVQpOwogCiAJCS8qCiAJCSAqICg2 KSBjaGVjayBmb3IgYW55IG90aGVyIGludGVyZXN0aW5nIGV2ZW50cyB0aGF0IGhhcHBlbmVk IHdoaWxlIHdlCiAJCSAqIHNsZXB0LgogCQkgKi8KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRp bmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1 bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZp Z0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKgogCQkgKiAoNykgcHJvY2VzcyB0aGUg Y29tbWFuZC4gIEJ1dCBpZ25vcmUgaXQgaWYgd2UncmUgc2tpcHBpbmcgdGlsbApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkKaW5kZXggODcwNzAyMzVkMTEuLjZhYTY5 ODA1ODkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZ3Jh bS55CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9ncmFtLnkKQEAgLTE4 LDggKzE4LDggQEAKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5j bHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJq c29ucGF0aF9pbnRlcm5hbC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJyZWdleC9yZWdleC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXgg YzdmN2I4YmMyZGQuLjE4ODAzOGM5ZjY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5j cy5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAi bWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgpAQCAtMjY2LDcgKzI2Nyw2IEBAIHBnX2xvZ19iYWNrZW5k X21lbW9yeV9jb250ZXh0cyhQR19GVU5DVElPTl9BUkdTKQogewogCWludAkJCXBpZCA9IFBH X0dFVEFSR19JTlQzMigwKTsKIAlQR1BST0MJICAgKnByb2M7Ci0JUHJvY051bWJlcglwcm9j TnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAogCS8qCiAJICogU2VlIGlmIHRoZSBw cm9jZXNzIHdpdGggZ2l2ZW4gcGlkIGlzIGEgYmFja2VuZCBvciBhbiBhdXhpbGlhcnkgcHJv Y2Vzcy4KQEAgLTI5NSwxNCArMjk1LDcgQEAgcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRl eHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKIAl9CiAK LQlwcm9jTnVtYmVyID0gR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKTsKLQlpZiAoU2VuZFBy b2NTaWduYWwocGlkLCBQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgcHJvY051bWJlcikg PCAwKQotCXsKLQkJLyogQWdhaW4sIGp1c3QgYSB3YXJuaW5nIHRvIGFsbG93IGxvb3BzICov Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBzaWdu YWwgdG8gcHJvY2VzcyAlZDogJW0iLCBwaWQpKSk7Ci0JCVBHX1JFVFVSTl9CT09MKGZhbHNl KTsKLQl9CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhULCBH ZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCVBHX1JFVFVSTl9CT09MKHRydWUpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggMzJhNzg3ZDdkZjcuLjlmNjYwMzYzOTIxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbW9uL2tleXdvcmRzLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfdHlwZS5oIgpAQCAtMzgsNyArMzksNiBAQAogI2luY2x1ZGUgInBv c3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNo LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTM0NiwxNiArMzQ2LDE2 IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJdXNlY3MgPSAoaW50NjQpIE1pbihz ZWNzLCAoZmxvYXQ4KSAoUEdfSU5UNjRfTUFYIC8gMikpOwogCiAJLyoKLQkgKiBXZSBzbGVl cCB1c2luZyBXYWl0TGF0Y2gsIHRvIGVuc3VyZSB0aGF0IHdlJ2xsIHdha2UgdXAgcHJvbXB0 bHkgaWYgYW4KLQkgKiBpbXBvcnRhbnQgc2lnbmFsIChzdWNoIGFzIFNJR0FMUk0gb3IgU0lH SU5UKSBhcnJpdmVzLiAgQmVjYXVzZQotCSAqIFdhaXRMYXRjaCdzIHVwcGVyIGxpbWl0IG9m IGRlbGF5IGlzIElOVF9NQVggbWlsbGlzZWNvbmRzLCBhbmQgdGhlIHVzZXIKLQkgKiBtaWdo dCBhc2sgZm9yIG1vcmUgdGhhbiB0aGF0LCB3ZSBzbGVlcCBmb3IgYXQgbW9zdCAxMCBtaW51 dGVzIGFuZCB0aGVuCi0JICogbG9vcC4KKwkgKiBXZSBzbGVlcCB1c2luZyBXYWl0SW50ZXJy dXB0LCB0byBlbnN1cmUgdGhhdCB3ZSdsbCB3YWtlIHVwIHByb21wdGx5IGlmCisJICogYW4g aW1wb3J0YW50IHNpZ25hbCAoc3VjaCBhcyBTSUdBTFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4g IEJlY2F1c2UKKwkgKiBXYWl0SW50ZXJydXB0J3MgdXBwZXIgbGltaXQgb2YgZGVsYXkgaXMg SU5UX01BWCBtaWxsaXNlY29uZHMsIGFuZCB0aGUKKwkgKiB1c2VyIG1pZ2h0IGFzayBmb3Ig bW9yZSB0aGFuIHRoYXQsIHdlIHNsZWVwIGZvciBhdCBtb3N0IDEwIG1pbnV0ZXMgYW5kCisJ ICogdGhlbiBsb29wLgogCSAqCiAJICogQnkgY29tcHV0aW5nIHRoZSBpbnRlbmRlZCBzdG9w IHRpbWUgaW5pdGlhbGx5LCB3ZSBhdm9pZCBhY2N1bXVsYXRpb24gb2YKIAkgKiBleHRyYSBk ZWxheSBhY3Jvc3MgbXVsdGlwbGUgc2xlZXBzLiAgVGhpcyBhbHNvIGVuc3VyZXMgd2Ugd29u J3QgZGVsYXkKLQkgKiBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCB0aW1lIHdoZW4gV2FpdExh dGNoIGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkgYQotCSAqIG5vbi1xdWVyeS1jYW5jZWxpbmcg c2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgorCSAqIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkIHRp bWUgd2hlbiBXYWl0SW50ZXJydXB0IGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkKKwkgKiBhIG5v bi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgogCSAqLwogCWVuZHRp bWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCkgKyB1c2VjczsKIApAQCAtMzc0LDExICszNzQs MTAgQEAgcGdfc2xlZXAoUEdfRlVOQ1RJT05fQVJHUykKIAkJZWxzZQogCQkJYnJlYWs7CiAK LQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIGRlbGF5X21zLAotCQkJ CQkJIFdBSVRfRVZFTlRfUEdfU0xFRVApOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQko dm9pZCkgV2FpdEludGVycnVwdChDaGVja0ZvckludGVycnVwdHNNYXNrLAorCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkgZGVsYXlfbXMsCisJCQkJCQkJIFdBSVRfRVZFTlRfUEdfU0xFRVApOwogCX0KIAogCVBH X1JFVFVSTl9WT0lEKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdGlt ZXN0YW1wLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMKaW5kZXggZTI2 MDMxODNmMWMuLmM0OWJiNTlhZDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5j CkBAIC0xNzM5LDEwICsxNzM5LDEwIEBAIFRpbWVzdGFtcERpZmZlcmVuY2UoVGltZXN0YW1w VHogc3RhcnRfdGltZSwgVGltZXN0YW1wVHogc3RvcF90aW1lLAogICogVGltZXN0YW1wRGlm ZmVyZW5jZU1pbGxpc2Vjb25kcyAtLSBjb252ZXJ0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4g dHdvCiAgKiAJCXRpbWVzdGFtcHMgaW50byBpbnRlZ2VyIG1pbGxpc2Vjb25kcwogICoKLSAq IFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZv ciBXYWl0TGF0Y2goKQorICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBjYWxjdWxhdGUg YSB3YWl0IHRpbWVvdXQgZm9yIFdhaXRJbnRlcnJ1cHQoKQogICogb3IgYSByZWxhdGVkIGZ1 bmN0aW9uLiAgVGhlIGNob2ljZSBvZiAibG9uZyIgYXMgdGhlIHJlc3VsdCB0eXBlCiAgKiBp cyB0byBoYXJtb25pemUgd2l0aCB0aGF0OyBmdXJ0aGVybW9yZSwgd2UgY2xhbXAgdGhlIHJl c3VsdCB0byBhdCBtb3N0Ci0gKiBJTlRfTUFYIG1pbGxpc2Vjb25kcywgYmVjYXVzZSB0aGF0 J3MgYWxsIHRoYXQgV2FpdExhdGNoKCkgYWxsb3dzLgorICogSU5UX01BWCBtaWxsaXNlY29u ZHMsIGJlY2F1c2UgdGhhdCdzIGFsbCB0aGF0IFdhaXRJbnRlcnJ1cHQoKSBhbGxvd3MuCiAg KgogICogV2UgZXhwZWN0IHN0YXJ0X3RpbWUgPD0gc3RvcF90aW1lLiAgSWYgbm90LCB3ZSBy ZXR1cm4gemVybywKICAqIHNpbmNlIHRoZW4gd2UncmUgYWxyZWFkeSBwYXN0IHRoZSBwcmV2 aW91c2x5IGRldGVybWluZWQgc3RvcF90aW1lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvZWxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jCmlu ZGV4IGNiMWM5ZDg1ZmZlLi5iZWNmYzYyZmQzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvZXJyb3IvZWxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cu YwpAQCAtNTI3LDcgKzUyNyw2IEBAIGVycmZpbmlzaChjb25zdCBjaGFyICpmaWxlbmFtZSwg aW50IGxpbmVubywgY29uc3QgY2hhciAqZnVuY25hbWUpCiAJCSAqIHNob3VsZCBtYWtlIGxp ZmUgZWFzaWVyIGZvciBtb3N0LikKIAkJICovCiAJCUludGVycnVwdEhvbGRvZmZDb3VudCA9 IDA7Ci0JCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsKIAogCQlDcml0U2VjdGlvbkNv dW50ID0gMDsJLyogc2hvdWxkIGJlIHVubmVjZXNzYXJ5LCBidXQuLi4gKi8KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCAzNmFkNzA4YjM2MC4uYTg3NDc1MzE5YTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0yOSwyMCArMjksNiBAQAogCiBQcm90 b2NvbFZlcnNpb24gRnJvbnRlbmRQcm90b2NvbDsKIAotdm9sYXRpbGUgc2lnX2F0b21pY190 IEludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBRdWVy eUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jRGll UGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IENoZWNrQ2xpZW50Q29u bmVjdGlvblBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHNpZ19hdG9taWNfdCBDbGllbnRD b25uZWN0aW9uTG9zdCA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVJblRy YW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdf YXRvbWljX3QgVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUg c2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0 aWxlIHNpZ19hdG9taWNfdCBQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKLXZv bGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOwot dm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0g ZmFsc2U7Ci12b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKLXZv bGF0aWxlIHVpbnQzMiBRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7Ci12b2xhdGlsZSB1 aW50MzIgQ3JpdFNlY3Rpb25Db3VudCA9IDA7CiAKIGludAkJCU15UHJvY1BpZDsKIHBnX3Rp bWVfdAlNeVN0YXJ0VGltZTsKQEAgLTUzLDE1ICszOSw2IEBAIHVpbnQ4CQlNeUNhbmNlbEtl eVtNQVhfQ0FOQ0VMX0tFWV9MRU5HVEhdOwogaW50CQkJTXlDYW5jZWxLZXlMZW5ndGggPSAw OwogaW50CQkJTXlQTUNoaWxkU2xvdDsKIAotLyoKLSAqIE15TGF0Y2ggcG9pbnRzIHRvIHRo ZSBsYXRjaCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBzaWduYWwgaGFuZGxpbmcgYnkgdGhl Ci0gKiBjdXJyZW50IHByb2Nlc3MuIEl0IHdpbGwgZWl0aGVyIHBvaW50IHRvIGEgcHJvY2Vz cyBsb2NhbCBsYXRjaCBpZiB0aGUKLSAqIGN1cnJlbnQgcHJvY2VzcyBkb2VzIG5vdCBoYXZl IGEgUEdQUk9DIGVudHJ5IGluIHRoYXQgbW9tZW50LCBvciB0bwotICogUEdQUk9DLT5wcm9j TGF0Y2ggaWYgaXQgaGFzLiBUaHVzIGl0IGNhbiBhbHdheXMgYmUgdXNlZCBpbiBzaWduYWwg aGFuZGxlcnMsCi0gKiB3aXRob3V0IGNoZWNraW5nIGZvciBpdHMgZXhpc3RlbmNlLgotICov Ci1zdHJ1Y3QgTGF0Y2ggKk15TGF0Y2g7Ci0KIC8qCiAgKiBEYXRhRGlyIGlzIHRoZSBhYnNv bHV0ZSBwYXRoIHRvIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIFBHREFUQSBkaXJlY3RvcnkgdHJl ZS4KICAqIEV4Y2VwdCBkdXJpbmcgZWFybHkgc3RhcnR1cCwgdGhpcyBpcyBhbHNvIHRoZSBz ZXJ2ZXIncyB3b3JraW5nIGRpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvbWlzY2luaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQu YwppbmRleCBmYWRmODU2ZDliYy4uZmRjZWU5NDY0MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0 L21pc2Npbml0LmMKQEAgLTMyLDE4ICszMiwxNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJh bGxlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY29t bW9uL2ZpbGVfcGVybS5oIgorI2luY2x1ZGUgImlwYy9zaWduYWxfaGFuZGxlcnMuaCIKICNp bmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKLSNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIv cG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3RzeW5jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKICNp bmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC02Niw4ICs2NSw2IEBAIEJhY2tlbmRUeXBlIE15QmFja2VuZFR5cGU7CiAvKiBMaXN0 IG9mIGxvY2sgZmlsZXMgdG8gYmUgcmVtb3ZlZCBhdCBwcm9jIGV4aXQgKi8KIHN0YXRpYyBM aXN0ICpsb2NrX2ZpbGVzID0gTklMOwogCi1zdGF0aWMgTGF0Y2ggTG9jYWxMYXRjaERhdGE7 Ci0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCQlpZ25vcmluZyBzeXN0ZW0gaW5kZXhlcyBzdXBwb3J0 IHN0dWZmCiAgKgpAQCAtMTI2LDEwICsxMjMsOSBAQCBJbml0UG9zdG1hc3RlckNoaWxkKHZv aWQpCiAJcHFpbml0bWFzaygpOwogI2VuZGlmCiAKLQkvKiBJbml0aWFsaXplIHByb2Nlc3Mt bG9jYWwgbGF0Y2ggc3VwcG9ydCAqLworCS8qIEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBp bnRlcnJ1cHQgc3VwcG9ydCAqLwogCUluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7Ci0J SW5pdFByb2Nlc3NMb2NhbExhdGNoKCk7Ci0JSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCgpOwor CUluaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KCk7CiAKIAkvKgogCSAqIElmIHBvc3NpYmxl LCBtYWtlIHRoaXMgcHJvY2VzcyBhIGdyb3VwIGxlYWRlciwgc28gdGhhdCB0aGUgcG9zdG1h c3RlcgpAQCAtMTQzLDI1ICsxMzksMTIgQEAgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKQog I2VuZGlmCiAKIAkvKgotCSAqIFJlc2V0IHNpZ25hbHMgdGhhdCBhcmUgdXNlZCBieSBwb3N0 bWFzdGVyIGJ1dCBub3QgYnkgY2hpbGQgcHJvY2Vzc2VzLgorCSAqIFNldCBzdGFuZGFyZCBz aWduYWwgaGFuZGxlcnMgc3VpdGFibGUgZm9yIG1vc3QgYmFja2VuZCBwcm9jZXNzZXMuCiAJ ICoKLQkgKiBDdXJyZW50bHkganVzdCBTSUdDSExELiAgVGhlIGhhbmRsZXJzIGZvciBvdGhl ciBzaWduYWxzIGFyZSBvdmVycmlkZGVuCi0JICogbGF0ZXIsIGRlcGVuZGluZyBvbiB0aGUg Y2hpbGQgcHJvY2VzcyB0eXBlLgorCSAqIFdlIGRvbid0IHVuYmxvY2sgdGhlIHNpZ25hbHMg eWV0LCBzbyB0aGF0IGlmIHRoZSBwcm9jZXNzIG5lZWRzIHNwZWNpYWwKKwkgKiBzaWduYWwg aGFuZGxpbmcsIGl0IGNhbiBpbnN0YWxsIGN1c3RvbSBoYW5kbGVycyBiZWZvcmUgdW5ibG9j a2luZy4KIAkgKi8KLQlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsgLyogc3lzdGVtKCkg cmVxdWlyZXMgdGhpcyB0byBiZSBTSUdfREZMIHJhdGhlcgotCQkJCQkJCQkgKiB0aGFuIFNJ R19JR04gb24gc29tZSBwbGF0Zm9ybXMgKi8KLQotCS8qCi0JICogRXZlcnkgcG9zdG1hc3Rl ciBjaGlsZCBwcm9jZXNzIGlzIGV4cGVjdGVkIHRvIHJlc3BvbmQgcHJvbXB0bHkgdG8KLQkg KiBTSUdRVUlUIGF0IGFsbCB0aW1lcy4gIFRoZXJlZm9yZSB3ZSBjZW50cmFsbHkgcmVtb3Zl IFNJR1FVSVQgZnJvbQotCSAqIEJsb2NrU2lnIGFuZCBpbnN0YWxsIGEgc3VpdGFibGUgc2ln bmFsIGhhbmRsZXIuICAoQ2xpZW50LWZhY2luZwotCSAqIHByb2Nlc3NlcyBtYXkgY2hvb3Nl IHRvIHJlcGxhY2UgdGhpcyBkZWZhdWx0IGNob2ljZSBvZiBoYW5kbGVyIHdpdGgKLQkgKiBx dWlja2RpZSgpLikgIEFsbCBvdGhlciBibG9ja2FibGUgc2lnbmFscyByZW1haW4gYmxvY2tl ZCBmb3Igbm93LgotCSAqLwotCXBxc2lnbmFsKFNJR1FVSVQsIFNpZ25hbEhhbmRsZXJGb3JD cmFzaEV4aXQpOwotCi0Jc2lnZGVsc2V0KCZCbG9ja1NpZywgU0lHUVVJVCk7Ci0Jc2lncHJv Y21hc2soU0lHX1NFVE1BU0ssICZCbG9ja1NpZywgTlVMTCk7CisJU2V0UG9zdG1hc3RlckNo aWxkU2lnbmFsSGFuZGxlcnMoKTsKIAogCS8qCiAJICogSXQgaXMgdXAgdG8gdGhlICpNYWlu KCkgZnVuY3Rpb24gdG8gc2V0IHNpZ25hbCBoYW5kbGVycyBhcHByb3ByaWF0ZSBmb3IKQEAg LTIwMSwxMCArMTg0LDkgQEAgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNoYXIgKmFy Z3YwKQogCiAJSW5pdFByb2Nlc3NHbG9iYWxzKCk7CiAKLQkvKiBJbml0aWFsaXplIHByb2Nl c3MtbG9jYWwgbGF0Y2ggc3VwcG9ydCAqLworCS8qIEluaXRpYWxpemUgcHJvY2Vzcy1sb2Nh bCBpbnRlcnJ1cHQgc3VwcG9ydCAqLwogCUluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7 Ci0JSW5pdFByb2Nlc3NMb2NhbExhdGNoKCk7Ci0JSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCgp OworCUluaXRpYWxpemVJbnRlcnJ1cHRXYWl0U2V0KCk7CiAKIAkvKgogCSAqIEZvciBjb25z aXN0ZW5jeSB3aXRoIEluaXRQb3N0bWFzdGVyQ2hpbGQsIGluaXRpYWxpemUgc2lnbmFsIG1h c2sgaGVyZS4KQEAgLTIyNSw0OCArMjA3LDYgQEAgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNv bnN0IGNoYXIgKmFyZ3YwKQogCQlnZXRfcGtnbGliX3BhdGgobXlfZXhlY19wYXRoLCBwa2ds aWJfcGF0aCk7CiB9CiAKLXZvaWQKLVN3aXRjaFRvU2hhcmVkTGF0Y2godm9pZCkKLXsKLQlB c3NlcnQoTXlMYXRjaCA9PSAmTG9jYWxMYXRjaERhdGEpOwotCUFzc2VydChNeVByb2MgIT0g TlVMTCk7Ci0KLQlNeUxhdGNoID0gJk15UHJvYy0+cHJvY0xhdGNoOwotCi0JaWYgKEZlQmVX YWl0U2V0KQotCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0TGF0 Y2hQb3MsIFdMX0xBVENIX1NFVCwKLQkJCQkJCU15TGF0Y2gpOwotCi0JLyoKLQkgKiBTZXQg dGhlIHNoYXJlZCBsYXRjaCBhcyB0aGUgbG9jYWwgb25lIG1pZ2h0IGhhdmUgYmVlbiBzZXQu IFRoaXMKLQkgKiBzaG91bGRuJ3Qgbm9ybWFsbHkgYmUgbmVjZXNzYXJ5IGFzIGNvZGUgaXMg c3VwcG9zZWQgdG8gY2hlY2sgdGhlCi0JICogY29uZGl0aW9uIGJlZm9yZSB3YWl0aW5nIGZv ciB0aGUgbGF0Y2gsIGJ1dCBhIGJpdCBjYXJlIGNhbid0IGh1cnQuCi0JICovCi0JU2V0TGF0 Y2goTXlMYXRjaCk7Ci19Ci0KLXZvaWQKLUluaXRQcm9jZXNzTG9jYWxMYXRjaCh2b2lkKQot ewotCU15TGF0Y2ggPSAmTG9jYWxMYXRjaERhdGE7Ci0JSW5pdExhdGNoKE15TGF0Y2gpOwot fQotCi12b2lkCi1Td2l0Y2hCYWNrVG9Mb2NhbExhdGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15 TGF0Y2ggIT0gJkxvY2FsTGF0Y2hEYXRhKTsKLQlBc3NlcnQoTXlQcm9jICE9IE5VTEwgJiYg TXlMYXRjaCA9PSAmTXlQcm9jLT5wcm9jTGF0Y2gpOwotCi0JTXlMYXRjaCA9ICZMb2NhbExh dGNoRGF0YTsKLQotCWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVX YWl0U2V0LCBGZUJlV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJCQlNeUxh dGNoKTsKLQotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCiAvKgogICogUmV0dXJuIGEgaHVt YW4tcmVhZGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgQmFja2VuZFR5cGUuCiAg KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IGI1OWUwODYwNWNjLi40ZjFh YTk0YTY2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwpAQCAtMzMsNiArMzMs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RiX3JvbGVfc2V0dGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVz cGFjZS5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJsaWJwcS9h dXRoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIKICNpbmNsdWRlICJtYi9wZ193 Y2hhci5oIgpAQCAtMTM3MSwyMCArMTM3MiwxOSBAQCBTaHV0ZG93blBvc3RncmVzKGludCBj b2RlLCBEYXR1bSBhcmcpCiBzdGF0aWMgdm9pZAogU3RhdGVtZW50VGltZW91dEhhbmRsZXIo dm9pZCkKIHsKLQlpbnQJCQlzaWcgPSBTSUdJTlQ7Ci0KIAkvKgogCSAqIER1cmluZyBhdXRo ZW50aWNhdGlvbiB0aGUgdGltZW91dCBpcyB1c2VkIHRvIGRlYWwgd2l0aAogCSAqIGF1dGhl bnRpY2F0aW9uX3RpbWVvdXQgLSB3ZSB3YW50IHRvIHF1aXQgaW4gcmVzcG9uc2UgdG8gc3Vj aCB0aW1lb3V0cy4KIAkgKi8KIAlpZiAoQ2xpZW50QXV0aEluUHJvZ3Jlc3MpCi0JCXNpZyA9 IFNJR1RFUk07CisJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9URVJNSU5BVEUpOworCWVs c2UKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAKLSNpZmRl ZiBIQVZFX1NFVFNJRAotCS8qIHRyeSB0byBzaWduYWwgd2hvbGUgcHJvY2VzcyBncm91cCAq LwotCWtpbGwoLU15UHJvY1BpZCwgc2lnKTsKLSNlbmRpZgotCWtpbGwoTXlQcm9jUGlkLCBz aWcpOworCS8qCisJICogRklYTUU6IHdlIHVzZWQgdG8gc2lnbmFsIHRoZSB3aG9sZSBwcm9j ZXNzIGdyb3VwLiBJcyB0aGF0IGltcG9ydGFudCwgaWYKKwkgKiB3ZSdyZSBlLmcuIGV4ZWN1 dGluZyBhcmNoaXZlX2NvbW1hbmQgPworCSAqLwogfQogCiAvKgpAQCAtMTM5Myw1MSArMTM5 MywzNyBAQCBTdGF0ZW1lbnRUaW1lb3V0SGFuZGxlcih2b2lkKQogc3RhdGljIHZvaWQKIExv Y2tUaW1lb3V0SGFuZGxlcih2b2lkKQogewotI2lmZGVmIEhBVkVfU0VUU0lECi0JLyogdHJ5 IHRvIHNpZ25hbCB3aG9sZSBwcm9jZXNzIGdyb3VwICovCi0Ja2lsbCgtTXlQcm9jUGlkLCBT SUdJTlQpOwotI2VuZGlmCi0Ja2lsbChNeVByb2NQaWQsIFNJR0lOVCk7CisJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBUcmFu c2FjdGlvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JVHJhbnNhY3Rpb25UaW1lb3V0UGVu ZGluZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlM YXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1RSQU5TQUNUSU9OX1RJTUVPVVQp OwogfQogCiBzdGF0aWMgdm9pZAogSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dEhh bmRsZXIodm9pZCkKIHsKLQlJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGlu ZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRj aCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VT U0lPTl9USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQKIElkbGVTZXNzaW9uVGltZW91dEhh bmRsZXIodm9pZCkKIHsKLQlJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJ bnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQpOwogfQogCiBzdGF0aWMg dm9pZAogSWRsZVN0YXRzVXBkYXRlVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlJZGxlU3Rh dHNVcGRhdGVUaW1lb3V0UGVuZGluZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0lE TEVfU1RBVFNfVElNRU9VVCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBDbGllbnRDaGVja1RpbWVv dXRIYW5kbGVyKHZvaWQpCiB7Ci0JQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRy dWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJ UmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NMSUVOVF9DSEVDS19USU1FT1VUKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy90aW1lb3V0LmMKaW5kZXggZGRiYTVkYzYwN2MuLjFmM2Fk M2RiZjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYwpAQCAtMTcsNyArMTcsNiBA QAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNp bmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgog I2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogCkBAIC0zNzAsMTIgKzM2OSw2IEBAIGhh bmRsZV9zaWdfYWxhcm0oU0lHTkFMX0FSR1MpCiAJICovCiAJSE9MRF9JTlRFUlJVUFRTKCk7 CiAKLQkvKgotCSAqIFNJR0FMUk0gaXMgYWx3YXlzIGNhdXNlIGZvciB3YWtpbmcgYW55dGhp bmcgd2FpdGluZyBvbiB0aGUgcHJvY2VzcwotCSAqIGxhdGNoLgotCSAqLwotCVNldExhdGNo KE15TGF0Y2gpOwotCiAJLyoKIAkgKiBBbHdheXMgcmVzZXQgc2lnbmFsX3BlbmRpbmcsIGV2 ZW4gaWYgIWFsYXJtX2VuYWJsZWQsIHNpbmNlIGluZGVlZCBubwogCSAqIHNpZ25hbCBpcyBu b3cgcGVuZGluZy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMKaW5kZXggMDczYmRiMzVkMmEuLjk5 NmNhZTA1YjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwpAQCAtMTMxMSwzNiArMTMxMSwx NiBAQCBNZW1vcnlDb250ZXh0QWxsb2NFeHRlbmRlZChNZW1vcnlDb250ZXh0IGNvbnRleHQs IFNpemUgc2l6ZSwgaW50IGZsYWdzKQogCXJldHVybiByZXQ7CiB9CiAKLS8qCi0gKiBIYW5k bGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0Ci0gKgkJSGFuZGxlIHJlY2VpcHQgb2YgYW4g aW50ZXJydXB0IGluZGljYXRpbmcgbG9nZ2luZyBvZiBtZW1vcnkKLSAqCQljb250ZXh0cy4K LSAqCi0gKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nlc3NMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCksCi0gKiBiZWNhdXNlIHdlIGNhbm5vdCBzYWZlbHkg ZW1pdCBhIGxvZyBtZXNzYWdlIGluc2lkZSB0aGUgc2lnbmFsIGhhbmRsZXIuCi0gKi8KLXZv aWQKLUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRlcnJ1 cHRQZW5kaW5nID0gdHJ1ZTsKLQlMb2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IHRydWU7Ci0J LyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8K LX0KLQogLyoKICAqIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0CiAgKiAJCVBl cmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBiYWNrZW5kIHByb2Nl c3MuCiAgKgotICogQW55IGJhY2tlbmQgdGhhdCBwYXJ0aWNpcGF0ZXMgaW4gUHJvY1NpZ25h bCBzaWduYWxpbmcgbXVzdCBhcnJhbmdlCi0gKiB0byBjYWxsIHRoaXMgZnVuY3Rpb24gaWYg d2Ugc2VlIExvZ01lbW9yeUNvbnRleHRQZW5kaW5nIHNldC4KLSAqIEl0IGlzIGNhbGxlZCBm cm9tIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHdoaWNoIGlzIGVub3VnaCBiZWNhdXNlCi0g KiB0aGUgdGFyZ2V0IHByb2Nlc3MgZm9yIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIGlz IGEgYmFja2VuZC4KKyAqIFRoaXMgaXMgdGhlIGhhbmRsZXIgZm9yIElOVEVSUlVQVF9MT0df TUVNT1JZX0NPTlRFWFQsIG5vcm1hbGx5IGNhbGxlZCBmcm9tCisgKiBDSEVDS19GT1JfSU5U RVJSVVBUUygpLgogICovCiB2b2lkCiBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVw dCh2b2lkKQogewotCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gZmFsc2U7Ci0KIAkvKgog CSAqIEV4aXQgaW1tZWRpYXRlbHkgaWYgbWVtb3J5IGNvbnRleHQgbG9nZ2luZyBpcyBhbHJl YWR5IGluIHByb2dyZXNzLiBUaGlzCiAJICogcHJldmVudHMgcmVjdXJzaXZlIGNhbGxzLCB3 aGljaCBjb3VsZCBvY2N1ciBpZiBsb2dnaW5nIGlzIHJlcXVlc3RlZApkaWZmIC0tZ2l0IGEv c3JjL2NvbW1vbi9zY3JhbS1jb21tb24uYyBiL3NyYy9jb21tb24vc2NyYW0tY29tbW9uLmMK aW5kZXggMjU5ZmE1NTU0YjYuLjAwYjkyYTdmZWExIDEwMDY0NAotLS0gYS9zcmMvY29tbW9u L3NjcmFtLWNvbW1vbi5jCisrKyBiL3NyYy9jb21tb24vc2NyYW0tY29tbW9uLmMKQEAgLTIz LDcgKzIzLDcgQEAKICNpbmNsdWRlICJjb21tb24vaG1hYy5oIgogI2luY2x1ZGUgImNvbW1v bi9zY3JhbS1jb21tb24uaCIKICNpZm5kZWYgRlJPTlRFTkQKLSNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJw b3J0L3BnX2Jzd2FwLmgiCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL01ha2VmaWxlIGIv c3JjL2luY2x1ZGUvTWFrZWZpbGUKaW5kZXggYWM2NzNmNGNmMTcuLmM0NzRkNmZiZTNjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9NYWtlZmlsZQorKysgYi9zcmMvaW5jbHVkZS9NYWtl ZmlsZQpAQCAtMjgsNiArMjgsNyBAQCBTVUJESVJTID0gXAogCWV4ZWN1dG9yIFwKIAlmZV91 dGlscyBcCiAJZm9yZWlnbiBcCisJaXBjIFwKIAlqaXQgXAogCWxpYiBcCiAJbGlicHEgXApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCAwMWJkZjJiZWMxZi4uMjFiMGIwYTFlYzcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC01Myw3ICs1Myw2IEBAIHR5cGVkZWYgc3RydWN0 IFBhcmFsbGVsV29ya2VyQ29udGV4dAogCXNobV90b2MgICAgKnRvYzsKIH0gUGFyYWxsZWxX b3JrZXJDb250ZXh0OwogCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IFBhcmFsbGVsTWVzc2FnZVBlbmRpbmc7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IFBh cmFsbGVsV29ya2VyTnVtYmVyOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgSW5pdGlhbGl6 aW5nUGFyYWxsZWxXb3JrZXI7CiAKQEAgLTcwLDcgKzY5LDYgQEAgZXh0ZXJuIHZvaWQgV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBl eHRlcm4gdm9pZCBEZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4 dCk7CiBleHRlcm4gYm9vbCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CiAKLWV4dGVy biB2b2lkIEhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2 b2lkIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRFT1hh Y3RfUGFyYWxsZWwoYm9vbCBpc0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9Q YXJhbGxlbChib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViSWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2FzeW5jLmgKaW5kZXggM2JhYWU3Y2I4ZGMuLmFjZDlhZmJjYzRiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2FzeW5jLmgKQEAgLTEzLDExICsxMyw4IEBACiAjaWZuZGVmIEFTWU5DX0gKICNk ZWZpbmUgQVNZTkNfSAogCi0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KIGV4dGVybiBQR0RMTElN UE9SVCBib29sIFRyYWNlX25vdGlmeTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X25v dGlmeV9xdWV1ZV9wYWdlczsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRv bWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZzsKIAogZXh0ZXJuIFNpemUgQXN5bmNTaG1l bVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBBc3luY1NobWVtSW5pdCh2b2lkKTsKQEAgLTQw LDkgKzM3LDYgQEAgZXh0ZXJuIHZvaWQgQXRTdWJDb21taXRfTm90aWZ5KHZvaWQpOwogZXh0 ZXJuIHZvaWQgQXRTdWJBYm9ydF9Ob3RpZnkodm9pZCk7CiBleHRlcm4gdm9pZCBBdFByZXBh cmVfTm90aWZ5KHZvaWQpOwogCi0vKiBzaWduYWwgaGFuZGxlciBmb3IgaW5ib3VuZCBub3Rp ZmllcyAoUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUKSAqLwotZXh0ZXJuIHZvaWQgSGFuZGxl Tm90aWZ5SW50ZXJydXB0KHZvaWQpOwotCiAvKiBwcm9jZXNzIGludGVycnVwdHMgKi8KIGV4 dGVybiB2b2lkIFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoYm9vbCBmbHVzaCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL2lwYy9p bnRlcnJ1cHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjM5 ZDU4Zjc1OTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0 LmgKQEAgLTAsMCArMSwzNzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGlu dGVycnVwdC5oCisgKgkgIEludGVyLXByb2Nlc3MgaW50ZXJydXB0cworICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9m IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvaW5jbHVkZS9pcGMvaW50ZXJydXB0LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCisjaWZuZGVmIElQQ19JTlRFUlJVUFRfSAorI2RlZmluZSBJUENfSU5U RVJSVVBUX0gKKworI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY251bWJlci5oIgorCisvKgorICogSW5jbHVkZSB3YWl0ZXZlbnRzZXQuaCBmb3Ig dGhlIFdMXyogZmxhZ3MuIFRoZXkncmUgbm90IG5lZWRlZCBoZXIsIGJ1dCBhcmUKKyAqIG5l ZWRlZCB3aGljaCBhcmUgbmVlZGVkIGJ5IGFsbCBjYWxsZXJzIG9mIFdhaXRJbnRlcnJ1cHQs IHNvIGluY2x1ZGUgaXQKKyAqIGhlcmUuCisgKgorICogTm90ZTogSW50ZXJydXB0TWFzayBp cyBkZWZpbmQgaW4gd2FpdGV2ZW50c2V0LmggdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5j eQorICovCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKKworCisvKgorICog RmxhZ3MgaW4gdGhlIHBlbmRpbmcgaW50ZXJydXB0cyBiaXRtYXNrLiBFYWNoIHZhbHVlIGlz IGEgZGlmZmVyZW50IGJpdCwgc28gdGhhdAorICogdGhlc2UgY2FuIGJlIGNvbnZlbmllbnRs eSBPUidkIHRvZ2V0aGVyLgorICovCisjZGVmaW5lIFVJTlQ2NF9CSVQoc2hpZnQpIChVSU5U NjRfQygxKSA8PCAoc2hpZnQpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEJlZ2luIGRl ZmluaXRpb25zIG9mIGJ1aWx0LWluIGludGVycnVwdCBiaXRzCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKy8qCisgKiBJTlRFUlJVUFRfV0FJVF9XQUtFVVAgaXMgc2hhcmVkIGJ5IG1hbnkg dXNlIGNhc2VzIHRoYXQgbmVlZCB0byB3YWtlIHVwCisgKiBhIHByb2Nlc3MsIHdoaWNoIGRv bid0IG5lZWQgYSBkZWRpY2F0ZWQgaW50ZXJydXB0IGJpdC4KKyAqLworI2RlZmluZSBJTlRF UlJVUFRfV0FJVF9XQUtFVVAJCQkJCVVJTlQ2NF9CSVQoMCkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqIFN0YW5kYXJkIGludGVycnVwdHMgaGFuZGxlZCB0aGUgc2FtZSBieSBtb3N0 IHByb2Nlc3NlcworICoKKyAqIE1vc3Qgb2YgdGhlc2UgYXJlIG5vcm1hbGx5IHByb2Nlc3Nl ZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpIG9uY2UKKyAqIHByb2Nlc3Mgc3RhcnR1cCBo YXMgcmVhY2hlZCBTZXRTdGFuZGFyZEludGVycnVwdHMoKS4KKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworLyoKKyAqIEJhY2tlbmQgaGFzIGJlZW4gcmVxdWVzdGVkIHRvIHRlcm1pbmF0ZSBn cmFjZWZ1bGx5LgorICoKKyAqIFRoaXMgaXMgcmFpc2VkIGJ5IHRoZSBTSUdURVJNIHNpZ25h bCBoYW5kbGVyLCBvciBjYW4gYmUgc2VudCBkaXJlY3RseSBieQorICogYW5vdGhlciBiYWNr ZW5kIGUuZy4gd2l0aCBwZ190ZXJtaW5hdGVfYmFja2VuZCgpLgorICovCisjZGVmaW5lIElO VEVSUlVQVF9URVJNSU5BVEUJCQkJCQlVSU5UNjRfQklUKDEpCisKKy8qCisgKiBDYW5jZWwg Y3VycmVudCBxdWVyeSwgaWYgYW55LgorICoKKyAqIFNlbnQgdG8gcmVndWxhciBiYWNrZW5k cyBieSBwZ19jYW5jZWxfYmFja2VuZCgpLCBTSUdJTlQsIG9yIGluIHJlc3BvbnNlIHRvCisg KiBhIHF1ZXJ5IGNhbmNlbGxhdGlvbiBwYWNrZXQuICBTb21lIG90aGVyIHByb2Nlc3NlcyBs aWtlIGF1dG92YWN1dW0gd29ya2VycworICogYW5kIGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2Vz c2VzIGFsc28gcmVhY3QgdG8gdGhpcy4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfUVVFUllf Q0FOQ0VMCQkJCQlVSU5UNjRfQklUKDIpCisKKy8qCisgKiBSZWNvdmVyeSBjb25mbGljdC4g VGhpcyBpcyBzZW50IGJ5IHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gaG90IHN0YW5kYnkgbW9k ZQorICogd2hlbiBhIGJhY2tlbmQgaG9sZHMgYmFjayB0aGUgV0FMIHJlcGxheSBmb3IgdG9v IGxvbmcuIFRoZSByZWFzb24gZm9yIHRoZQorICogY29uZmxpY3QgaW5kaWNhdGVkIGJ5IHRo ZSBQR1BST0MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cworICogYml0bWFzay4gQ29uZmxp Y3RzIGFyZSBnZW5lcmFsbHkgcmVzb2x2ZWQgYnkgdGVybWluYXRpbmcgdGhlIGN1cnJlbnQg cXVlcnkKKyAqIG9yIHNlc3Npb24uIFRoZSBleGFjdCByZWFjdGlvbiBkZXBlbmRzIG9uIHRo ZSByZWFzb24gYW5kIHdoYXQgc3RhdGUgdGhlCisgKiBiYWNrZW5kIGlzIGluLgorICovCisj ZGVmaW5lIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCAJCQlVSU5UNjRfQklUKDMpCisK Ky8qCisgKiBDb25maWcgZmlsZSByZWxvYWQgaXMgcmVxdWVzdGVkLgorICoKKyAqIFRoaXMg aXMgbm9ybWFsbHkgZGlzYWJsZWQgYW5kIHRoZXJlZm9yZSBub3QgaGFuZGxlZCBhdAorICog Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4gVGhlICJtYWluIGxvb3AiIGluIGVhY2ggcHJvY2Vz cyBpcyBleHBlY3RlZCB0bworICogY2hlY2sgZm9yIGl0IGV4cGxpY2l0bHkuCisgKi8KKyNk ZWZpbmUgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQJCQkJCVVJTlQ2NF9CSVQoNCkKKworLyoK KyAqIExvZyBjdXJyZW50IG1lbW9yeSBjb250ZXh0cywgc2VudCBieSBwZ19sb2dfYmFja2Vu ZF9tZW1vcnlfY29udGV4dHMoKQorICovCisjZGVmaW5lIElOVEVSUlVQVF9MT0dfTUVNT1JZ X0NPTlRFWFQgCQkJVUlOVDY0X0JJVCg1KQorCisvKgorICogcHJvY3NpZ25hbCBnbG9iYWwg YmFycmllciBpbnRlcnJ1cHQKKyAqLworI2RlZmluZSBJTlRFUlJVUFRfQkFSUklFUgkJCQkJ CVVJTlQ2NF9CSVQoNikKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEludGVycnVwdHMg dXNlZCBieSBjbGllbnQgYmFja2VuZHMgYW5kIG1vc3Qgb3RoZXIgcHJvY2Vzc2VzIHRoYXQK KyAqIGNvbm5lY3QgdG8gYSBwYXJ0aWN1bGFyIGRhdGFiYXNlLgorICoKKyAqIE1vc3Qgb2Yg dGhlc2UgYXJlIGFsc28gcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgb25j ZSBwcm9jZXNzCisgKiBzdGFydHVwIGhhcyByZWFjaGVkIFNldFN0YW5kYXJkSW50ZXJydXB0 cygpLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBSYWlzZWQgYnkgdGltZXJzICovCisj ZGVmaW5lIElOVEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VUCQkJVUlOVDY0X0JJVCg3KQor I2RlZmluZSBJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQJCQlVSU5UNjRfQklUKDgp CisjZGVmaW5lIElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9V VCBVSU5UNjRfQklUKDkpCisjZGVmaW5lIElOVEVSUlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9V VAkJCVVJTlQ2NF9CSVQoMTApCisKKy8qIFJhaXNlZCBieSB0aW1lciB3aGlsZSBpZGxlLCB0 byBzZW5kIGEgc3RhdHMgdXBkYXRlICovCisjZGVmaW5lIElOVEVSUlVQVF9JRExFX1NUQVRT X1RJTUVPVVQJCQlVSU5UNjRfQklUKDExKQorCisvKiBSYWlzZWQgc3luY2hyb25vdXNseSB3 aGVuIHRoZSBjbGllbnQgY29ubmVjdGlvbiBpcyBsb3N0ICovCisjZGVmaW5lIElOVEVSUlVQ VF9DTElFTlRfQ09OTkVDVElPTl9MT1NUCQkgVUlOVDY0X0JJVCgxMikKKworLyoKKyAqIElO VEVSUlVQVF9BU1lOQ19OT1RJRlkgaXMgc2VudCB0byBub3RpZnkgYmFja2VuZHMgdGhhdCBo YXZlIHJlZ2lzdGVyZWQgdG8KKyAqIExJU1RFTiBvbiBhbnkgY2hhbm5lbHMgdGhhdCB0aGV5 IG1pZ2h0IGhhdmUgbWVzc2FnZXMgdGhleSBuZWVkIHRvIGRlbGl2ZXIKKyAqIHRvIHRoZSBm cm9udGVuZC4gSXQgaXMgYWxzbyBwcm9jZXNzZWQgd2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVh ZCBmcm9tIHRoZQorICogY2xpZW50IG9yIHdoaWxlIGRvaW5nIHNvLCBidXQgb25seSB3aGVu IHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluCisgKiBwcm9ncmVzcy4KKyAqLworI2RlZmlu ZSBJTlRFUlJVUFRfQVNZTkNfTk9USUZZCQkJCQlVSU5UNjRfQklUKDEzKQorCisvKgorICog QmVjYXVzZSBiYWNrZW5kcyBzaXR0aW5nIGlkbGUgd2lsbCBub3QgYmUgcmVhZGluZyBzaW52 YWwgZXZlbnRzLCB3ZSBuZWVkIGEKKyAqIHdheSB0byBnaXZlIGFuIGlkbGUgYmFja2VuZCBh IHN3aWZ0IGtpY2sgaW4gdGhlIHJlYXIgYW5kIG1ha2UgaXQgY2F0Y2ggdXAKKyAqIGJlZm9y ZSB0aGUgc2ludmFsIHF1ZXVlIG92ZXJmbG93cyBhbmQgZm9yY2VzIGl0IHRvIGdvIHRocm91 Z2ggYSBjYWNoZSByZXNldAorICogZXhlcmNpc2UuICBUaGlzIGlzIGRvbmUgYnkgc2VuZGlu ZyBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAgdG8gYW55IGJhY2tlbmQKKyAqIHRoYXQgZ2V0 cyB0b28gZmFyIGJlaGluZC4KKyAqCisgKiBUaGUgaW50ZXJydXB0IGlzIHByb2Nlc3NlZCB3 aGVuZXZlciBzdGFydGluZyB0byByZWFkIGZyb20gdGhlIGNsaWVudCwgb3IKKyAqIHdoZW4g aW50ZXJydXB0ZWQgd2hpbGUgZG9pbmcgc28uCisgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1NJ TlZBTF9DQVRDSFVQCQkJCVVJTlQ2NF9CSVQoMTQpCisKKy8qIE1lc3NhZ2UgZnJvbSBhIGNv b3BlcmF0aW5nIHBhcmFsbGVsIGJhY2tlbmQgb3IgYXBwbHkgd29ya2VyICovCisjZGVmaW5l IElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFCQkJCVVJTlQ2NF9CSVQoMTUpCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiBQcm9jZXNzLXNwZWNpZmljIGludGVycnVwdHMKKyAqCisg KiBTb21lIHByb2Nlc3NlcyBuZWVkIGRlZGljYXRlZCBpbnRlcnJ1cHRzIGZvciB2YXJpb3Vz IHB1cnBvc2VzLiAgSWdub3JlZAorICogYnkgb3RoZXIgcHJvY2Vzc2VzLgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCisvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBzaHV0ZG93 biAgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HCQkJVUlOVDY0 X0JJVCgxNikKKworLyogVE9ETzogZG9jdW1lbnQgdGhlIGRpZmZlcmVuY2Ugd2l0aCBJTlRF UlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1dBTFNO RF9TVE9QCQkJCQlVSU5UNjRfQklUKDE3KQorCisvKgorICogSU5URVJSVVBUX1dBTF9BUlJJ VkVEIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3RhcnR1cCBwcm9jZXNzLCB0byB0ZWxsCisg KiBpdCB0aGF0IGl0IHNob3VsZCBjb250aW51ZSBXQUwgcmVwbGF5LiBJdCdzIHNlbnQgYnkg V0FMIHJlY2VpdmVyIHdoZW4KKyAqIG1vcmUgV0FMIGFycml2ZXMsIG9yIHdoZW4gcHJvbW90 aW9uIGlzIHJlcXVlc3RlZC4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfV0FMX0FSUklWRUQJ CQkJCVVJTlQ2NF9CSVQoMTgpCisKKy8qIFdha2UgdXAgc3RhcnR1cCBwcm9jZXNzIHRvIGNo ZWNrIGZvciB0aGUgcHJvbW90aW9uIHNpZ25hbCBmaWxlICovCisjZGVmaW5lIElOVEVSUlVQ VF9DSEVDS19QUk9NT1RFCQkJCQlVSU5UNjRfQklUKDE5KQorCisvKiBzZW50IHRvIGxvZ2lj YWwgcmVwbGljYXRpb24gbGF1bmNoZXIsIHdoZW4gYSBzdWJzY3JpcHRpb24gY2hhbmdlcyAq LworI2RlZmluZSBJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5HRQkJCVVJTlQ2NF9CSVQo MjApCisKKy8qIEdyYWNlZnVsIHNodXRkb3duIHJlcXVlc3QgZm9yIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyICovCisjZGVmaW5lIElOVEVSUlVQVF9TSFVURE9XTl9QQVJBTExFTF9BUFBM WV9XT1JLRVIgVUlOVDY0X0JJVCgyMSkKKworLyogUmVxdWVzdCBjaGVja3BvaW50ZXIgdG8g cGVyZm9ybSBvbmUgbGFzdCBjaGVja3BvaW50LCB0aGVuIHNodXQgZG93bi4gKi8KKyNkZWZp bmUgSU5URVJSVVBUX1NIVVRET1dOX1hMT0cJCQkJCVVJTlQ2NF9CSVQoMjIpCisKKyNkZWZp bmUgSU5URVJSVVBUX1NIVVRET1dOX1BHQVJDSAkJCQlVSU5UNjRfQklUKDIzKQorCisvKgor ICogVGhpcyBpcyBzZW50IHRvIHRoZSBhdXRvdmFjdXVtIGxhdW5jaGVyIHdoZW4gYW4gYXV0 b3ZhY3V1bSB3b3JrZXIgZXhpdHMKKyAqLworI2RlZmluZSBJTlRFUlJVUFRfQVVUT1ZBQ1VV TV9XT1JLRVJfRklOSVNIRUQgCVVJTlQ2NF9CSVQoMjQpCisKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKiBFbmQgb2YgYnVpbHQtaW4gaW50ZXJydXB0IGJpdHMKKyAqCisgKiBUaGUgcmVt YWluaW5nIGJpdHMgYXJlIGhhbmRlZCBvdXQgYnkgUmVxdWVzdEFkZGluSW50ZXJydXB0LCBm b3IKKyAqIGV4dGVuc2lvbnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQkVHSU5f QURESU5fSU5URVJSVVBUUyAyNQorI2RlZmluZSBFTkRfQURESU5fSU5URVJSVVBUUyA2Mwor CisvKgorICogU0xFRVBJTkdfT05fSU5URVJSVVBUUyBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFj a2VuZCBpcyBjdXJyZW50bHkgYmxvY2tlZAorICogd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0 LiAgSWYgc2V0LCB0aGUgYmFja2VuZCBuZWVkcyB0byBiZSB3b2tlbiB1cCB3aGVuIGEKKyAq IGJpdCBpbiB0aGUgcGVuZGluZyBpbnRlcnJ1cHRzIG1hc2sgaXMgc2V0LiAgSXQncyB1c2Vk IGludGVybmFsbHkgYnkgdGhlCisgKiBpbnRlcnJ1cHQgbWFjaGluZXJ5LCBhbmQgY2Fubm90 IGJlIHVzZWQgZGlyZWN0bHkgaW4gdGhlIHB1YmxpYyBmdW5jdGlvbnMuCisgKiBJdCdzIG5h bWVkIGRpZmZlcmVudGx5IHRvIGRpc3Rpbmd1aXNoIGl0IGZyb20gdGhlIGFjdHVhbCBpbnRl cnJ1cHQgZmxhZ3MuCisgKi8KKyNkZWZpbmUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBVSU5U NjRfQklUKDYzKQorCitleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQ2NCAqTXlQ ZW5kaW5nSW50ZXJydXB0czsKKworLyoKKyAqIFRlc3QgYW4gaW50ZXJydXB0IGZsYWcgKG9y IGZsYWdzKS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitJbnRlcnJ1cHRQZW5kaW5nKElu dGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwkvKgorCSAqIE5vdGUgdGhhdCB0aGVy ZSBpcyBubyBtZW1vcnkgYmFycmllciBoZXJlLiBUaGlzIGlzIHVzZWQgaW4KKwkgKiBDSEVD S19GT1JfSU5URVJSVVBUUygpLCBzbyB3ZSB3YW50IHRoaXMgdG8gYmUgYXMgY2hlYXAgYXMg cG9zc2libGUuCisJICoKKwkgKiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIGludGVycnVwdCBp cyBjb25jdXJyZW50bHkgc2V0IGJ5IGFub3RoZXIKKwkgKiBwcm9jZXNzLCB3ZSBtaWdodCBt aXNzIGl0LiBUaGF0IHNob3VsZCBiZSBPSywgYmVjYXVzZSB0aGUgbmV4dAorCSAqIFdhaXRJ bnRlcnJ1cHQoKSBvciBlcXVpdmFsZW50IGNhbGwgYWN0cyBhcyBhIHN5bmNocm9uaXphdGlv biBiYXJyaWVyLgorCSAqIFdlIHdpbGwgc2VlIHRoZSB1cGRhdGVkIHZhbHVlIGJlZm9yZSBz bGVlcGluZy4KKwkgKi8KKwlyZXR1cm4gKHBnX2F0b21pY19yZWFkX3U2NChNeVBlbmRpbmdJ bnRlcnJ1cHRzKSAmIGludGVycnVwdE1hc2spICE9IDA7Cit9CisKKy8qCisgKiBDbGVhciBh biBpbnRlcnJ1cHQgZmxhZyAob3IgZmxhZ3MpLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQK K0NsZWFySW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKK3sKKwlwZ19h dG9taWNfZmV0Y2hfYW5kX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLCB+aW50ZXJydXB0TWFz ayk7Cit9CisKKy8qCisgKiBUZXN0IGFuZCBjbGVhciBhbiBpbnRlcnJ1cHQgZmxhZyAob3Ig ZmxhZ3MpLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NvbnN1bWVJbnRlcnJ1cHQoSW50 ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKQoreworCWlmIChsaWtlbHkoIUludGVycnVwdFBl bmRpbmcoaW50ZXJydXB0TWFzaykpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlDbGVhckludGVy cnVwdChpbnRlcnJ1cHRNYXNrKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworZXh0ZXJuIHZvaWQg UmFpc2VJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrKTsKK2V4dGVybiB2 b2lkIFNlbmRJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBQcm9jTnVt YmVyIHBncHJvY25vKTsKK2V4dGVybiBpbnQJV2FpdEludGVycnVwdChJbnRlcnJ1cHRNYXNr IGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBsb25nIHRpbWVvdXQsCisJCQkJCQkg IHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0T3JT b2NrZXQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdz b2NrZXQgc29jaywKKwkJCQkJCQkJICBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pOworZXh0ZXJuIHZvaWQgU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCk7Citl eHRlcm4gdm9pZCBTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9p ZCBJbml0aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKTsKKwordHlwZWRlZiB2b2lkICgq cGdfaW50ZXJydXB0X2hhbmRsZXJfdCkgKHZvaWQpOworZXh0ZXJuIHZvaWQgU2V0SW50ZXJy dXB0SGFuZGxlcihJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2ssIHBnX2ludGVycnVwdF9o YW5kbGVyX3QgaGFuZGxlcik7CisKK2V4dGVybiB2b2lkIEVuYWJsZUludGVycnVwdChJbnRl cnJ1cHRNYXNrIGludGVycnVwdE1hc2spOworZXh0ZXJuIHZvaWQgRGlzYWJsZUludGVycnVw dChJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2spOworCisvKiBmb3IgZXh0ZW5zaW9ucyAq LworZXh0ZXJuIEludGVycnVwdE1hc2sgUmVxdWVzdEFkZGluSW50ZXJydXB0KHZvaWQpOwor CisvKiBTdGFuZGFyZCBpbnRlcnJ1cHQgaGFuZGxlcnMuIERlZmluZWQgaW4gdGNvcC9wb3N0 Z3Jlcy5jICovCitleHRlcm4gdm9pZCBTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKHZv aWQpOworCitleHRlcm4gdm9pZCBQcm9jZXNzUXVlcnlDYW5jZWxJbnRlcnJ1cHQodm9pZCk7 CitleHRlcm4gdm9pZCBQcm9jZXNzVGVybWluYXRlSW50ZXJydXB0KHZvaWQpOworZXh0ZXJu IHZvaWQgUHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lk IFByb2Nlc3NBc3luY05vdGlmeUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nl c3NJZGxlU3RhdHNUaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vz c1RyYW5zYWN0aW9uVGltZW91dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nl c3NJZGxlU2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9j ZXNzSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dEludGVycnVwdCh2b2lkKTsKK2V4 dGVybiB2b2lkIFByb2Nlc3NDbGllbnRDaGVja1RpbWVvdXRJbnRlcnJ1cHQodm9pZCk7Citl eHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50Q29ubmVjdGlvbkxvc3Qodm9pZCk7CisKK2V4dGVy biB2b2lkIFByb2Nlc3NBdXhQcm9jZXNzU2h1dGRvd25JbnRlcnJ1cHQodm9pZCk7CisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKgkgIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkg YW5kIGZyaWVuZHMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitleHRlcm4gUEdE TExJTVBPUlQgdm9sYXRpbGUgSW50ZXJydXB0TWFzayBFbmFibGVkSW50ZXJydXB0c01hc2s7 CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgSW50ZXJydXB0TWFzayBDaGVja0Zvcklu dGVycnVwdHNNYXNrOworCitleHRlcm4gdm9pZCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKTsK KworLyogVGVzdCB3aGV0aGVyIGFuIGludGVycnVwdCBpcyBwZW5kaW5nICovCisjaWZuZGVm IFdJTjMyCisjZGVmaW5lIElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04obWFzaykgXAor CSh1bmxpa2VseShJbnRlcnJ1cHRQZW5kaW5nKG1hc2spKSkKKyNlbHNlCisjZGVmaW5lIElO VEVSUlVQVFNfUEVORElOR19DT05ESVRJT04obWFzaykgXAorCSh1bmxpa2VseShVTkJMT0NL RURfU0lHTkFMX1FVRVVFKCkpID8gXAorCSBwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9zaWdu YWxzKCkgOiAodm9pZCkgMCwJXAorCSB1bmxpa2VseShJbnRlcnJ1cHRQZW5kaW5nKG1hc2sp KSkKKyNlbmRpZgorCisvKgorICogSXMgUHJvY2Vzc0ludGVycnVwdHMoKSBndWFyYW50ZWVk IHRvIGNsZWFyIGFsbCB0aGUgYml0cyBpbiAnbWFzayc/CisgKgorICogKFRoZSBpbnRlcnJ1 cHQgaGFuZGxlciBtYXkgcmUtcmFpc2UgdGhlIGludGVycnVwdCwgdGhvdWdoKQorICovCisj ZGVmaW5lIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChtYXNrKSBcCisJKCgobWFzaykg JiBDaGVja0ZvckludGVycnVwdHNNYXNrKSA9PSAobWFzaykpCisKKy8qIFNlcnZpY2UgaW50 ZXJydXB0LCBpZiBvbmUgaXMgcGVuZGluZyBhbmQgaXQncyBzYWZlIHRvIHNlcnZpY2UgaXQg bm93ICovCisjZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkJCQkJCVwKK2RvIHsgXAor CWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKENoZWNrRm9ySW50ZXJydXB0c01h c2spKSBcCisJCVByb2Nlc3NJbnRlcnJ1cHRzKCk7CQkJCQkJCQkJCQlcCit9IHdoaWxlKDAp CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgkgIENyaXRpY2FsIHNlY3Rpb24g YW5kIGludGVycnVwdCBob2xkb2ZmIG1lY2hhbmlzbQorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisvKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxlIGJlY2F1c2UgdGhleSBhcmUg ZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAqLworLyoKKyAqIFhYWDogaXMgdGhhdCBz dGlsbCB0cnVlPyBTaG91bGQgd2UgdXNlIGxvY2FsIHZhcnMgdG8gYXZvaWQgcmVwZWF0ZWQg YWNjZXNzCisgKiBlLmcuIGluc2lkZSBSRVNVTUVfSU5URVJSVVBUUygpID8KKyAqLworZXh0 ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQ7 CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7 CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorSE9MRF9JTlRFUlJVUFRTKHZvaWQpCit7CisJSW50 ZXJydXB0SG9sZG9mZkNvdW50Kys7CisJQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9IChJbnRl cnJ1cHRNYXNrKSAwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1JFU1VNRV9JTlRFUlJV UFRTKHZvaWQpCit7CisJQXNzZXJ0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgPT0gMCk7CisJ QXNzZXJ0KEludGVycnVwdEhvbGRvZmZDb3VudCA+IDApOworCUludGVycnVwdEhvbGRvZmZD b3VudC0tOworCWlmIChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlv bkNvdW50ID09IDApCisJCUNoZWNrRm9ySW50ZXJydXB0c01hc2sgPSBFbmFibGVkSW50ZXJy dXB0c01hc2s7CisJZWxzZQorCQlBc3NlcnQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9PSAw KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitTVEFSVF9DUklUX1NFQ1RJT04odm9pZCkK K3sKKwlDcml0U2VjdGlvbkNvdW50Kys7CisJQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9IDA7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorRU5EX0NSSVRfU0VDVElPTih2b2lkKQorewor CUFzc2VydChDcml0U2VjdGlvbkNvdW50ID4gMCk7CisJQ3JpdFNlY3Rpb25Db3VudC0tOwor CWlmIChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09 IDApCisJCUNoZWNrRm9ySW50ZXJydXB0c01hc2sgPSBFbmFibGVkSW50ZXJydXB0c01hc2s7 CisJZWxzZQorCQlBc3NlcnQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9PSAwKTsKK30KKwor I2VuZGlmCQkJCQkJCS8qIElQQ19JTlRFUlJVUFRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL2lwYy9zaWduYWxf aGFuZGxlcnMuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBzcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oCnJlbmFtZSB0byBzcmMvaW5jbHVkZS9pcGMvc2ln bmFsX2hhbmRsZXJzLmgKaW5kZXggZTE0ODI2MjZkZmQuLmNiZTkxNDNjZmRmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oCisrKyBiL3NyYy9pbmNs dWRlL2lwYy9zaWduYWxfaGFuZGxlcnMuaApAQCAtMjEsMTIgKzIxLDEwIEBACiAKICNpbmNs dWRlIDxzaWduYWwuaD4KIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBDb25maWdSZWxvYWRQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nOwotCi1leHRlcm4gdm9pZCBQ cm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzKHZvaWQpOworZXh0ZXJuIHZvaWQgU2V0UG9zdG1h c3RlckNoaWxkU2lnbmFsSGFuZGxlcnModm9pZCk7CiBleHRlcm4gdm9pZCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKFNJR05BTF9BUkdTKTsKIGV4dGVybiB2b2lkIFNpZ25hbEhh bmRsZXJGb3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFu ZGxlckZvclNodXRkb3duUmVxdWVzdChTSUdOQUxfQVJHUyk7CitleHRlcm4gdm9pZCBTaWdu YWxIYW5kbGVyRm9yUXVlcnlDYW5jZWwoU0lHTkFMX0FSR1MpOwogCiAjZW5kaWYKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaCBiL3NyYy9p bmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaAppbmRleCA4NWQ4YjYzZjAxOS4u NTNkODBmNDBkMTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZl LWhlbHBlcnMuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJz LmgKQEAgLTMwLDEwICszMCw5IEBACiAjaWZuZGVmIExJQlBRX0JFX0ZFX0hFTFBFUlNfSAog I2RlZmluZSBMSUJQUV9CRV9GRV9IRUxQRVJTX0gKIAorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS1mZS5oIgotI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xh dGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMv d2FpdF9ldmVudC5oIgogCkBAIC0xNjcsOCArMTY2LDggQEAgbGlicHFzcnZfY29ubmVjdF9p bnRlcm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCXJldHVy bjsKIAogCS8qCi0JICogV2FpdExhdGNoT3JTb2NrZXQoKSBjYW4gY29uY2VpdmFibHkgZmFp bCwgaGFuZGxlIHRoYXQgY2FzZSBoZXJlIGluc3RlYWQKLQkgKiBvZiByZXF1aXJpbmcgYWxs IGNhbGxlcnMgdG8gZG8gc28uCisJICogV2FpdEludGVycnVwdE9yU29ja2V0KCkgY2FuIGNv bmNlaXZhYmx5IGZhaWwsIGhhbmRsZSB0aGF0IGNhc2UgaGVyZQorCSAqIGluc3RlYWQgb2Yg cmVxdWlyaW5nIGFsbCBjYWxsZXJzIHRvIGRvIHNvLgogCSAqLwogCVBHX1RSWSgpOwogCXsK QEAgLTE5OSwxOCArMTk4LDE1IEBAIGxpYnBxc3J2X2Nvbm5lY3RfaW50ZXJuYWwoUEdjb25u ICpjb25uLCB1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogCQkJZWxzZQogCQkJCWlvX2ZsYWcg PSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0JCQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15 TGF0Y2gsCi0JCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9MQVRDSF9TRVQg fCBpb19mbGFnLAotCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKLQkJCQkJCQkJICAgMCwK LQkJCQkJCQkJICAgd2FpdF9ldmVudF9pbmZvKTsKKwkJCXJjID0gV2FpdEludGVycnVwdE9y U29ja2V0KENoZWNrRm9ySW50ZXJydXB0c01hc2ssCisJCQkJCQkJCQkgICBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKKwkJCQkJCQkJCSAgIFBRc29j a2V0KGNvbm4pLAorCQkJCQkJCQkJICAgMCwKKwkJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5m byk7CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwotCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQotCQkJewotCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlpZiAocmMgJiBXTF9JTlRF UlJVUFQpCiAJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJCX0KIAogCQkJLyogSWYg c29ja2V0IGlzIHJlYWR5LCBhZHZhbmNlIHRoZSBsaWJwcSBzdGF0ZSBtYWNoaW5lICovCiAJ CQlpZiAocmMgJiBpb19mbGFnKQpAQCAtMzIwLDE5ICszMTYsMTYgQEAgbGlicHFzcnZfZ2V0 X3Jlc3VsdChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJewogCQlp bnQJCQlyYzsKIAotCQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJ ICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJICAgV0xf U09DS0VUX1JFQURBQkxFLAotCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLAotCQkJCQkJCSAg IDAsCi0JCQkJCQkJICAgd2FpdF9ldmVudF9pbmZvKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0 T3JTb2NrZXQoQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaywKKwkJCQkJCQkJICAgV0xfRVhJVF9P Tl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8CisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFE QUJMRSwKKwkJCQkJCQkJICAgUFFzb2NrZXQoY29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJ CQkJCSAgIHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlm IChyYyAmIFdMX0xBVENIX1NFVCkKLQkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ aWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJ fQogCiAJCS8qIENvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUg c29ja2V0ICovCiAJCWlmIChQUWNvbnN1bWVJbnB1dChjb25uKSA9PSAwKQpAQCAtMzg2LDcg KzM3OSw3IEBAIGxpYnBxc3J2X2NhbmNlbChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVu ZHRpbWUpCiAJCQlQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHBvbGxyZXM7CiAJCQlUaW1l c3RhbXBUeiBub3c7CiAJCQlsb25nCQljdXJfdGltZW91dDsKLQkJCWludAkJCXdhaXRFdmVu dHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsK KwkJCWludAkJCXdhaXRFdmVudHMgPSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSDsKIAogCQkJcG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxf Y29ubik7CiAJCQlpZiAocG9sbHJlcyA9PSBQR1JFU19QT0xMSU5HX09LKQpAQCAtNDE1LDEw ICs0MDgsOSBAQCBsaWJwcXNydl9jYW5jZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBl bmR0aW1lKQogCQkJfQogCiAJCQkvKiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0 byBkbyAqLwotCQkJV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwgd2FpdEV2ZW50cywgUFFj YW5jZWxTb2NrZXQoY2FuY2VsX2Nvbm4pLAotCQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBHX1dB SVRfQ0xJRU5UKTsKLQotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCVdhaXRJbnRlcnJ1 cHRPclNvY2tldChDaGVja0ZvckludGVycnVwdHNNYXNrLCB3YWl0RXZlbnRzLAorCQkJCQkJ CQkgIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwKKwkJCQkJCQkJICBjdXJfdGltZW91 dCwgUEdfV0FJVF9DTElFTlQpOwogCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oIGIvc3JjL2luY2x1ZGUv bGlicHEvbGlicHEuaAppbmRleCA0MTJiYzk3NThmYi4uMzVmYmZmOWE3NjMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEv bGlicHEuaApAQCAtMTgsNyArMTgsNyBAQAogCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8u aCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0 Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNldC5oIgogCiAKIC8qCkBAIC02 MSw3ICs2MSw3IEBAIGV4dGVybiBjb25zdCBQR0RMTElNUE9SVCBQUWNvbW1NZXRob2RzICpQ cUNvbW1NZXRob2RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhaXRFdmVudFNldCAqRmVCZVdh aXRTZXQ7CiAKICNkZWZpbmUgRmVCZVdhaXRTZXRTb2NrZXRQb3MgMAotI2RlZmluZSBGZUJl V2FpdFNldExhdGNoUG9zIDEKKyNkZWZpbmUgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MgMQog I2RlZmluZSBGZUJlV2FpdFNldE5FdmVudHMgMwogCiBleHRlcm4gaW50CUxpc3RlblNlcnZl clBvcnQoaW50IGZhbWlseSwgY29uc3QgY2hhciAqaG9zdE5hbWUsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWJwcS9wcW1xLmggYi9zcmMvaW5jbHVkZS9saWJwcS9wcW1xLmgKaW5k ZXggYzYyZmZmYjU5OTguLjNiYTJiODJiM2E4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9s aWJwcS9wcW1xLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oCkBAIC0xNyw3ICsx Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKIAogZXh0ZXJuIHZvaWQgcHFf cmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdtZW50ICpzZWcsIHNobV9tcV9oYW5kbGUgKm1x aCk7Ci1leHRlcm4gdm9pZCBwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKHBpZF90IHBpZCwgUHJv Y051bWJlciBwcm9jTnVtYmVyKTsKK2V4dGVybiB2b2lkIHBxX3NldF9wYXJhbGxlbF9sZWFk ZXIoUHJvY051bWJlciBwcm9jTnVtYmVyKTsKIAogZXh0ZXJuIHZvaWQgcHFfcGFyc2VfZXJy b3Jub3RpY2UoU3RyaW5nSW5mbyBtc2csIEVycm9yRGF0YSAqZWRhdGEpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL21lc29uLmJ1aWxk CmluZGV4IDdkNzM0ZDkyZGFiLi5kYTgxMjkzNTVjYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUvbWVzb24uYnVpbGQKQEAgLTEzNSw2 ICsxMzUsNyBAQCBoZWFkZXJfc3ViZGlycyA9IFsKICAgJ2V4ZWN1dG9yJywKICAgJ2ZlX3V0 aWxzJywKICAgJ2ZvcmVpZ24nLAorICAnaXBjJywKICAgJ2ppdCcsCiAgICdsaWInLAogICAn bGlicHEnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaAppbmRleCBmMTZmMzU2NTliOS4uNDc2ZTYwYTRkMDYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCkBAIC0yOCwxMzIgKzI4LDE1IEBACiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0 YW1wLmgiIC8qIGZvciBUaW1lc3RhbXBUeiAqLwogI2luY2x1ZGUgInBndGltZS5oIgkJCQkv KiBmb3IgcGdfdGltZV90ICovCiAKLQotI2RlZmluZSBJbnZhbGlkUGlkCQkJCSgtMSkKLQot Ci0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCSAgU3lzdGVtIGludGVycnVwdCBhbmQg Y3JpdGljYWwgc2VjdGlvbiBoYW5kbGluZwotICoKLSAqIFRoZXJlIGFyZSB0d28gdHlwZXMg b2YgaW50ZXJydXB0cyB0aGF0IGEgcnVubmluZyBiYWNrZW5kIG5lZWRzIHRvIGFjY2VwdAot ICogd2l0aG91dCBtZXNzaW5nIHVwIGl0cyBzdGF0ZTogUXVlcnlDYW5jZWwgKFNJR0lOVCkg YW5kIFByb2NEaWUgKFNJR1RFUk0pLgotICogSW4gYm90aCBjYXNlcywgd2UgbmVlZCB0byBi ZSBhYmxlIHRvIGNsZWFuIHVwIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uCi0gKiBncmFjZWZ1 bGx5LCBzbyB3ZSBjYW4ndCByZXNwb25kIHRvIHRoZSBpbnRlcnJ1cHQgaW5zdGFudGFuZW91 c2x5IC0tLQotICogdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCBpbnRlcm5hbCBkYXRhIHN0 cnVjdHVyZXMgd291bGQgYmUgc2VsZi1jb25zaXN0ZW50Ci0gKiBpZiB0aGUgY29kZSBpcyBp bnRlcnJ1cHRlZCBhdCBhbiBhcmJpdHJhcnkgaW5zdGFudC4gIEluc3RlYWQsIHRoZSBzaWdu YWwKLSAqIGhhbmRsZXJzIHNldCBmbGFncyB0aGF0IGFyZSBjaGVja2VkIHBlcmlvZGljYWxs eSBkdXJpbmcgZXhlY3V0aW9uLgotICoKLSAqIFRoZSBDSEVDS19GT1JfSU5URVJSVVBUUygp IG1hY3JvIGlzIGNhbGxlZCBhdCBzdHJhdGVnaWNhbGx5IGxvY2F0ZWQgc3BvdHMKLSAqIHdo ZXJlIGl0IGlzIG5vcm1hbGx5IHNhZmUgdG8gYWNjZXB0IGEgY2FuY2VsIG9yIGRpZSBpbnRl cnJ1cHQuICBJbiBzb21lCi0gKiBjYXNlcywgd2UgaW52b2tlIENIRUNLX0ZPUl9JTlRFUlJV UFRTKCkgaW5zaWRlIGxvdy1sZXZlbCBzdWJyb3V0aW5lcyB0aGF0Ci0gKiBtaWdodCBzb21l dGltZXMgYmUgY2FsbGVkIGluIGNvbnRleHRzIHRoYXQgZG8gKm5vdCogd2FudCB0byBhbGxv dyBhIGNhbmNlbAotICogb3IgZGllIGludGVycnVwdC4gIFRoZSBIT0xEX0lOVEVSUlVQVFMo KSBhbmQgUkVTVU1FX0lOVEVSUlVQVFMoKSBtYWNyb3MKLSAqIGFsbG93IGNvZGUgdG8gZW5z dXJlIHRoYXQgbm8gY2FuY2VsIG9yIGRpZSBpbnRlcnJ1cHQgd2lsbCBiZSBhY2NlcHRlZCwK LSAqIGV2ZW4gaWYgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBnZXRzIGNhbGxlZCBpbiBhIHN1 YnJvdXRpbmUuICBUaGUgaW50ZXJydXB0Ci0gKiB3aWxsIGJlIGhlbGQgb2ZmIHVudGlsIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgaXMgZG9uZSBvdXRzaWRlIGFueQotICogSE9MRF9JTlRF UlJVUFRTKCkgLi4uIFJFU1VNRV9JTlRFUlJVUFRTKCkgc2VjdGlvbi4KLSAqCi0gKiBUaGVy ZSBpcyBhbHNvIGEgbWVjaGFuaXNtIHRvIHByZXZlbnQgcXVlcnkgY2FuY2VsIGludGVycnVw dHMsIHdoaWxlIHN0aWxsCi0gKiBhbGxvd2luZyBkaWUgaW50ZXJydXB0czogSE9MRF9DQU5D RUxfSU5URVJSVVBUUygpIGFuZAotICogUkVTVU1FX0NBTkNFTF9JTlRFUlJVUFRTKCkuCi0g KgotICogTm90ZSB0aGF0IFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIGFsc28gYWNxdWlyZWQg YSBudW1iZXIgb2YgdGFza3MgdGhhdAotICogZG8gbm90IG5lY2Vzc2FyaWx5IGNhdXNlIGEg cXVlcnktY2FuY2VsLW9yLWRpZSByZXNwb25zZS4gIEhlbmNlLCBpdCdzCi0gKiBwb3NzaWJs ZSB0aGF0IGl0IHdpbGwganVzdCBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nIGFuZCByZXR1cm4u Ci0gKgotICogSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpIGNhbiBiZSBjaGVja2Vk IHRvIHNlZSB3aGV0aGVyIGFuCi0gKiBpbnRlcnJ1cHQgbmVlZHMgdG8gYmUgc2VydmljZWQs IHdpdGhvdXQgdHJ5aW5nIHRvIGRvIHNvIGltbWVkaWF0ZWx5LgotICogU29tZSBjYWxsZXJz IGFyZSBhbHNvIGludGVyZXN0ZWQgaW4gSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCks Ci0gKiB3aGljaCB0ZWxscyB3aGV0aGVyIFByb2Nlc3NJbnRlcnJ1cHRzIGlzIHN1cmUgdG8g Y2xlYXIgdGhlIGludGVycnVwdC4KLSAqCi0gKiBTcGVjaWFsIG1lY2hhbmlzbXMgYXJlIHVz ZWQgdG8gbGV0IGFuIGludGVycnVwdCBiZSBhY2NlcHRlZCB3aGVuIHdlIGFyZQotICogd2Fp dGluZyBmb3IgYSBsb2NrIG9yIHdoZW4gd2UgYXJlIHdhaXRpbmcgZm9yIGNvbW1hbmQgaW5w dXQgKGJ1dCwgb2YKLSAqIGNvdXJzZSwgb25seSBpZiB0aGUgaW50ZXJydXB0IGhvbGRvZmYg Y291bnRlciBpcyB6ZXJvKS4gIFNlZSB0aGUKLSAqIHJlbGF0ZWQgY29kZSBmb3IgZGV0YWls cy4KLSAqCi0gKiBBIGxvc3QgY29ubmVjdGlvbiBpcyBoYW5kbGVkIHNpbWlsYXJseSwgYWx0 aG91Z2ggdGhlIGxvc3Mgb2YgY29ubmVjdGlvbgotICogZG9lcyBub3QgcmFpc2UgYSBzaWdu YWwsIGJ1dCBpcyBkZXRlY3RlZCB3aGVuIHdlIGZhaWwgdG8gd3JpdGUgdG8gdGhlCi0gKiBz b2NrZXQuIElmIHRoZXJlIHdhcyBhIHNpZ25hbCBmb3IgYSBicm9rZW4gY29ubmVjdGlvbiwg d2UgY291bGQgbWFrZSB1c2Ugb2YKLSAqIGl0IGJ5IHNldHRpbmcgQ2xpZW50Q29ubmVjdGlv bkxvc3QgaW4gdGhlIHNpZ25hbCBoYW5kbGVyLgotICoKLSAqIEEgcmVsYXRlZCwgYnV0IGNv bmNlcHR1YWxseSBkaXN0aW5jdCwgbWVjaGFuaXNtIGlzIHRoZSAiY3JpdGljYWwgc2VjdGlv biIKLSAqIG1lY2hhbmlzbS4gIEEgY3JpdGljYWwgc2VjdGlvbiBub3Qgb25seSBob2xkcyBv ZmYgY2FuY2VsL2RpZSBpbnRlcnJ1cHRzLAotICogYnV0IGNhdXNlcyBhbnkgZXJlcG9ydChF UlJPUikgb3IgZXJlcG9ydChGQVRBTCkgdG8gYmVjb21lIGVyZXBvcnQoUEFOSUMpCi0gKiAt LS0gdGhhdCBpcywgYSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3JjZWQuICBOZWVkbGVzcyB0 byBzYXksIG9ubHkgcmVhbGx5Ci0gKiAqY3JpdGljYWwqIGNvZGUgc2hvdWxkIGJlIG1hcmtl ZCBhcyBhIGNyaXRpY2FsIHNlY3Rpb24hCUN1cnJlbnRseSwgdGhpcwotICogbWVjaGFuaXNt IGlzIG9ubHkgdXNlZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCi0gKgotICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwotCi0vKiBpbiBnbG9iYWxzLmMgKi8KLS8qIHRoZXNlIGFyZSBtYXJr ZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBzZXQgYnkgc2lnbmFsIGhhbmRsZXJzOiAq LwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBJbnRlcnJ1cHRQ ZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBRdWVy eUNhbmNlbFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IFByb2NEaWVQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19h dG9taWNfdCBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgVHJhbnNhY3Rpb25UaW1lb3V0 UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRs ZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBz aWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nOwotZXh0ZXJuIFBHRExMSU1Q T1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250ZXh0UGVuZGluZzsKLWV4 dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBkYXRl VGltZW91dFBlbmRpbmc7Ci0KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRv bWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9S VCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7Ci0KLS8qIHRo ZXNlIGFyZSBtYXJrZWQgdm9sYXRpbGUgYmVjYXVzZSB0aGV5IGFyZSBleGFtaW5lZCBieSBz aWduYWwgaGFuZGxlcnM6ICovCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMy IEludGVycnVwdEhvbGRvZmZDb3VudDsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1 aW50MzIgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQ7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7Ci0KLS8qIGluIHRjb3AvcG9zdGdyZXMu YyAqLwotZXh0ZXJuIHZvaWQgUHJvY2Vzc0ludGVycnVwdHModm9pZCk7Ci0KLS8qIFRlc3Qg d2hldGhlciBhbiBpbnRlcnJ1cHQgaXMgcGVuZGluZyAqLwotI2lmbmRlZiBXSU4zMgotI2Rl ZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkgXAotCSh1bmxpa2VseShJbnRl cnJ1cHRQZW5kaW5nKSkKLSNlbHNlCi0jZGVmaW5lIElOVEVSUlVQVFNfUEVORElOR19DT05E SVRJT04oKSBcCi0JKHVubGlrZWx5KFVOQkxPQ0tFRF9TSUdOQUxfUVVFVUUoKSkgPyBcCi0J IHBnd2luMzJfZGlzcGF0Y2hfcXVldWVkX3NpZ25hbHMoKSA6ICh2b2lkKSAwLCBcCi0JIHVu bGlrZWx5KEludGVycnVwdFBlbmRpbmcpKQorLyoKKyAqIFhYWDogbWFueSBmaWxlcyBpbmNs dWRlIG1pc2NhZG1pbi5oIGZvciBDSEVDS19GT1JfSU5URVJSVVBUUygpLiBLZWVwIHRoZW0K KyAqIHdvcmtpbmcgd2l0aG91dCBjaGFuZ2VzCisgKi8KKyNpZm5kZWYgRlJPTlRFTkQKKyNp bmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjZW5kaWYKIAotLyogU2VydmljZSBpbnRlcnJ1 cHQsIGlmIG9uZSBpcyBwZW5kaW5nIGFuZCBpdCdzIHNhZmUgdG8gc2VydmljZSBpdCBub3cg Ki8KLSNkZWZpbmUgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBcCi1kbyB7IFwKLQlpZiAoSU5U RVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpKSBcCi0JCVByb2Nlc3NJbnRlcnJ1cHRzKCk7 IFwKLX0gd2hpbGUoMCkKLQotLyogSXMgUHJvY2Vzc0ludGVycnVwdHMoKSBndWFyYW50ZWVk IHRvIGNsZWFyIEludGVycnVwdFBlbmRpbmc/ICovCi0jZGVmaW5lIElOVEVSUlVQVFNfQ0FO X0JFX1BST0NFU1NFRCgpIFwKLQkoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3Jp dFNlY3Rpb25Db3VudCA9PSAwICYmIFwKLQkgUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPT0g MCkKLQotI2RlZmluZSBIT0xEX0lOVEVSUlVQVFMoKSAgKEludGVycnVwdEhvbGRvZmZDb3Vu dCsrKQotCi0jZGVmaW5lIFJFU1VNRV9JTlRFUlJVUFRTKCkgXAotZG8geyBcCi0JQXNzZXJ0 KEludGVycnVwdEhvbGRvZmZDb3VudCA+IDApOyBcCi0JSW50ZXJydXB0SG9sZG9mZkNvdW50 LS07IFwKLX0gd2hpbGUoMCkKLQotI2RlZmluZSBIT0xEX0NBTkNFTF9JTlRFUlJVUFRTKCkg IChRdWVyeUNhbmNlbEhvbGRvZmZDb3VudCsrKQotCi0jZGVmaW5lIFJFU1VNRV9DQU5DRUxf SU5URVJSVVBUUygpIFwKLWRvIHsgXAotCUFzc2VydChRdWVyeUNhbmNlbEhvbGRvZmZDb3Vu dCA+IDApOyBcCi0JUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQtLTsgXAotfSB3aGlsZSgwKQot Ci0jZGVmaW5lIFNUQVJUX0NSSVRfU0VDVElPTigpICAoQ3JpdFNlY3Rpb25Db3VudCsrKQot Ci0jZGVmaW5lIEVORF9DUklUX1NFQ1RJT04oKSBcCi1kbyB7IFwKLQlBc3NlcnQoQ3JpdFNl Y3Rpb25Db3VudCA+IDApOyBcCi0JQ3JpdFNlY3Rpb25Db3VudC0tOyBcCi19IHdoaWxlKDAp CisjZGVmaW5lIEludmFsaWRQaWQJCQkJKC0xKQogCiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgpAQCAtMTkxLDcgKzc0LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVByb2NQ aWQ7CiBleHRlcm4gUEdETExJTVBPUlQgcGdfdGltZV90IE15U3RhcnRUaW1lOwogZXh0ZXJu IFBHRExMSU1QT1JUIFRpbWVzdGFtcFR6IE15U3RhcnRUaW1lc3RhbXA7CiBleHRlcm4gUEdE TExJTVBPUlQgc3RydWN0IFBvcnQgKk15UHJvY1BvcnQ7Ci1leHRlcm4gUEdETExJTVBPUlQg c3RydWN0IExhdGNoICpNeUxhdGNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ4IE15Q2Fu Y2VsS2V5W107CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE15Q2FuY2VsS2V5TGVuZ3RoOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVBNQ2hpbGRTbG90OwpAQCAtMzI0LDkgKzIwNiw2 IEBAIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpEYXRhYmFzZVBhdGg7CiAvKiBub3cgaW4g dXRpbHMvaW5pdC9taXNjaW5pdC5jICovCiBleHRlcm4gdm9pZCBJbml0UG9zdG1hc3RlckNo aWxkKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdFN0YW5kYWxvbmVQcm9jZXNzKGNvbnN0IGNo YXIgKmFyZ3YwKTsKLWV4dGVybiB2b2lkIEluaXRQcm9jZXNzTG9jYWxMYXRjaCh2b2lkKTsK LWV4dGVybiB2b2lkIFN3aXRjaFRvU2hhcmVkTGF0Y2godm9pZCk7Ci1leHRlcm4gdm9pZCBT d2l0Y2hCYWNrVG9Mb2NhbExhdGNoKHZvaWQpOwogCiAvKgogICogTXlCYWNrZW5kVHlwZSBp bmRpY2F0ZXMgd2hhdCBraW5kIG9mIGEgYmFja2VuZCB0aGlzIGlzLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9iZ3dvcmtlci5oCmluZGV4IDc0MThlNjRlMTliLi41M2FlMTA3MjJkZSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCisrKyBiL3NyYy9pbmNs dWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuaApAQCAtNjYsNiArNjYsMTQgQEAKICAqLwogI2Rl ZmluZSBCR1dPUktFUl9JTlRFUlJVUFRJQkxFCQkJMHgwMDA0CiAKKy8qCisgKiBEeW5hbWlj IHdvcmtlcnMgY3JlYXRlZCB3aXRoIHNoYXJlZCBtZW1vcnkgYWNjZXNzIHVzdWFsbHkgc2Vu ZCBhbiBpbnRlcnJ1cHQKKyAqIHRvIHRoZSBjcmVhdGluZyBiYWNrZW5kIHdoZW4gdGhleSBz dGFydCBhbmQgc3RvcCwgYWxsb3dpbmcKKyAqIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2Vye1N0 YXJ0dXAsU2h1dGRvd259KCkgdG8gd29yay4gIFN1Y2ggbm90aWZpY2F0aW9ucworICogY2Fu IGJlIHN1cHByZXNzZWQgd2l0aCB0aGlzIGZsYWcuCisgKi8KKyNkZWZpbmUgQkdXT1JLRVJf Tk9fTk9USUZZCQkJCQkJCTB4MDAwOAorCiAvKgogICogVGhpcyBjbGFzcyBpcyB1c2VkIGlu dGVybmFsbHkgZm9yIHBhcmFsbGVsIHF1ZXJpZXMsIHRvIGtlZXAgdHJhY2sgb2YgdGhlCiAg KiBudW1iZXIgb2YgYWN0aXZlIHBhcmFsbGVsIHdvcmtlcnMgYW5kIG1ha2Ugc3VyZSB3ZSBu ZXZlciBsYXVuY2ggbW9yZSB0aGFuCkBAIC0xMDQsNyArMTEyLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQmFja2dyb3VuZFdvcmtlcgogCWNoYXIJCWJnd19mdW5jdGlvbl9uYW1lW0JHV19NQVhM RU5dOwogCURhdHVtCQliZ3dfbWFpbl9hcmc7CiAJY2hhcgkJYmd3X2V4dHJhW0JHV19FWFRS QUxFTl07Ci0JcGlkX3QJCWJnd19ub3RpZnlfcGlkOyAvKiBTSUdVU1IxIHRoaXMgYmFja2Vu ZCBvbiBzdGFydC9zdG9wICovCisJcGlkX3QJCWJnd19ub3RpZnlfcGlkOyAvKiBub3QgdXNl ZCAqLwogfSBCYWNrZ3JvdW5kV29ya2VyOwogCiB0eXBlZGVmIGVudW0gQmd3SGFuZGxlU3Rh dHVzCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVy bmFscy5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaApp bmRleCBiNzg5Y2FmNDAzNC4uOGRjYTlmODQzMzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1 ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2Nu dW1iZXIuaCIKIAogLyogR1VDIG9wdGlvbnMgKi8KIApAQCAtNDcsOSArNDgsMTAgQEAgZXh0 ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3dfbmV3X3dv cmtlcnMpOwogZXh0ZXJuIHZvaWQgRm9yZ2V0QmFja2dyb3VuZFdvcmtlcihSZWdpc3RlcmVk QmdXb3JrZXIgKnJ3KTsKIGV4dGVybiB2b2lkIFJlcG9ydEJhY2tncm91bmRXb3JrZXJQSUQo UmVnaXN0ZXJlZEJnV29ya2VyICpydyk7CiBleHRlcm4gdm9pZCBSZXBvcnRCYWNrZ3JvdW5k V29ya2VyRXhpdChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKLWV4dGVybiB2b2lkIEJhY2tn cm91bmRXb3JrZXJTdG9wTm90aWZpY2F0aW9ucyhwaWRfdCBwaWQpOworZXh0ZXJuIHZvaWQg QmFja2dyb3VuZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGludCBwbWNoaWxkKTsKIGV4dGVy biB2b2lkIEZvcmdldFVuc3RhcnRlZEJhY2tncm91bmRXb3JrZXJzKHZvaWQpOwogZXh0ZXJu IHZvaWQgUmVzZXRCYWNrZ3JvdW5kV29ya2VyQ3Jhc2hUaW1lcyh2b2lkKTsKK2V4dGVybiBQ cm9jTnVtYmVyIEdldE5vdGlmeVByb2NOdW1iZXJGb3JSZWdpc3RlcmVkV29ya2VyKFJlZ2lz dGVyZWRCZ1dvcmtlciAqcncpOwogCiAvKiBFbnRyeSBwb2ludCBmb3IgYmFja2dyb3VuZCB3 b3JrZXIgcHJvY2Vzc2VzICovCiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBCYWNrZ3JvdW5k V29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2Rh dGFfbGVuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvc3RhcnR1cC5o IGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmgKaW5kZXggNGQxZTEyMTMxZDMu LmRmYjJiMGI2NWNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0 dXAuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaApAQCAtMjUsMTIg KzI1LDEwIEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbG9nX3N0YXJ0dXBfcHJvZ3Jl c3NfaW50ZXJ2YWw7CiAKLWV4dGVybiB2b2lkIFByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVw dHModm9pZCk7CitleHRlcm4gdm9pZCBTdGFydHVwUHJvY0NoZWNrUG9zdG1hc3RlckRlYXRo KHZvaWQpOwogcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgU3RhcnR1cFByb2Nlc3NNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pOwogZXh0 ZXJuIHZvaWQgUHJlUmVzdG9yZUNvbW1hbmQodm9pZCk7CiBleHRlcm4gdm9pZCBQb3N0UmVz dG9yZUNvbW1hbmQodm9pZCk7Ci1leHRlcm4gYm9vbCBJc1Byb21vdGVTaWduYWxlZCh2b2lk KTsKLWV4dGVybiB2b2lkIFJlc2V0UHJvbW90ZVNpZ25hbGVkKHZvaWQpOwogCiBleHRlcm4g dm9pZCBlbmFibGVfc3RhcnR1cF9wcm9ncmVzc190aW1lb3V0KHZvaWQpOwogZXh0ZXJuIHZv aWQgZGlzYWJsZV9zdGFydHVwX3Byb2dyZXNzX3RpbWVvdXQodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggN2Q3NDhhMjhkYTguLjM4MjI2 OTAwMWNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBA IC0xMiwxMCArMTIsNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9H SUNBTFdPUktFUl9ICiAKLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotZXh0ZXJuIFBHRExMSU1Q T1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7 Ci0KIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiBleHRl cm4gdm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiBleHRl cm4gdm9pZCBUYWJsZVN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKQEAgLTI0LDcg KzIwLDYgQEAgZXh0ZXJuIHZvaWQgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZyk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiBleHRlcm4gYm9v bCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOwogCi1leHRlcm4gdm9pZCBI YW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lk IFByb2Nlc3NQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CiAKIGV4dGVybiB2b2lkIExv Z2ljYWxSZXBXb3JrZXJzV2FrZXVwQXRDb21taXQoT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggYTRkZjNiOGUwYWUuLjY5Yjk1YmIyN2VjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtNDYsNyArNDYsNiBAQCBl eHRlcm4gdm9pZCBXYWxTbmRTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRX YWtldXAoYm9vbCBwaHlzaWNhbCwgYm9vbCBsb2dpY2FsKTsKIGV4dGVybiB2b2lkIFdhbFNu ZEluaXRTdG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFdhaXRTdG9wcGluZyh2 b2lkKTsKLWV4dGVybiB2b2lkIEhhbmRsZVdhbFNuZEluaXRTdG9wcGluZyh2b2lkKTsKIGV4 dGVybiB2b2lkIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQpOwogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKaW5kZXggNWRlNjc0ZDU0 MTAuLmMxOGI2NDM1OWRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxzZW5kZXJfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNl bmRlcl9wcml2YXRlLmgKQEAgLTQwLDYgKzQwLDggQEAgdHlwZWRlZiBlbnVtIFdhbFNuZFN0 YXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IFdhbFNuZAogeworCVByb2NOdW1iZXIJcGdwcm9j bm87CQkvKiB0aGlzIHdhbHNlbmRlcidzIFByb2NOdW1iZXIsIG9yIGludmFsaWQgaWYKKwkJ CQkJCQkJICogbm90IGFjdGl2ZSAqLwogCXBpZF90CQlwaWQ7CQkJLyogdGhpcyB3YWxzZW5k ZXIncyBQSUQsIG9yIDAgaWYgbm90IGFjdGl2ZSAqLwogCiAJV2FsU25kU3RhdGUgc3RhdGU7 CQkJLyogdGhpcyB3YWxzZW5kZXIncyBzdGF0ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA0ZWNiZGNmYWRhYy4uZDM2OGJjNjA1MzYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC03 OSw5ICs3OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJRmlsZVNl dCAgICAqc3RyZWFtX2ZpbGVzZXQ7CiAKIAkvKgotCSAqIFBJRCBvZiBsZWFkZXIgYXBwbHkg d29ya2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5Ci0JICog d29ya2VyLCBJbnZhbGlkUGlkIG90aGVyd2lzZS4KKwkgKiBMZWFkZXIgYXBwbHkgd29ya2Vy IGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwKKwkg KiBJTlZBTElEX1BST0NfTlVNQkVSL0ludmFsaWRQaWQgb3RoZXJ3aXNlLgogCSAqLworCVBy b2NOdW1iZXIJbGVhZGVyX3BncHJvY25vOwogCXBpZF90CQlsZWFkZXJfcGlkOwogCiAJLyog SW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2guaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvbGF0Y2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJk YWRjODY5NTkuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbGF0Y2gu aAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAqCi0gKiBsYXRjaC5oCi0gKgkgIFJvdXRpbmVzIGZvciBpbnRlcnByb2Nlc3MgbGF0 Y2hlcwotICoKLSAqIEEgbGF0Y2ggaXMgYSBib29sZWFuIHZhcmlhYmxlLCB3aXRoIG9wZXJh dGlvbnMgdGhhdCBsZXQgcHJvY2Vzc2VzIHNsZWVwCi0gKiB1bnRpbCBpdCBpcyBzZXQuIEEg bGF0Y2ggY2FuIGJlIHNldCBmcm9tIGFub3RoZXIgcHJvY2Vzcywgb3IgYSBzaWduYWwKLSAq IGhhbmRsZXIgd2l0aGluIHRoZSBzYW1lIHByb2Nlc3MuCi0gKgotICogVGhlIGxhdGNoIGlu dGVyZmFjZSBpcyBhIHJlbGlhYmxlIHJlcGxhY2VtZW50IGZvciB0aGUgY29tbW9uIHBhdHRl cm4gb2YKLSAqIHVzaW5nIHBnX3VzbGVlcCgpIG9yIHNlbGVjdCgpIHRvIHdhaXQgdW50aWwg YSBzaWduYWwgYXJyaXZlcywgd2hlcmUgdGhlCi0gKiBzaWduYWwgaGFuZGxlciBzZXRzIGEg ZmxhZyB2YXJpYWJsZS4gQmVjYXVzZSBvbiBzb21lIHBsYXRmb3JtcyBhbgotICogaW5jb21p bmcgc2lnbmFsIGRvZXNuJ3QgaW50ZXJydXB0IHNsZWVwLCBhbmQgZXZlbiBvbiBwbGF0Zm9y bXMgd2hlcmUgaXQKLSAqIGRvZXMgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUg c2lnbmFsIGFycml2ZXMganVzdCBiZWZvcmUKLSAqIGVudGVyaW5nIHRoZSBzbGVlcCwgdGhl IGNvbW1vbiBwYXR0ZXJuIG11c3QgcGVyaW9kaWNhbGx5IHdha2UgdXAgYW5kCi0gKiBwb2xs IHRoZSBmbGFnIHZhcmlhYmxlLiBUaGUgcHNlbGVjdCgpIHN5c3RlbSBjYWxsIHdhcyBpbnZl bnRlZCB0byBzb2x2ZQotICogdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgbm90IHBvcnRhYmxl IGVub3VnaC4gTGF0Y2hlcyBhcmUgZGVzaWduZWQgdG8KLSAqIG92ZXJjb21lIHRoZXNlIGxp bWl0YXRpb25zLCBhbGxvd2luZyB5b3UgdG8gc2xlZXAgd2l0aG91dCBwb2xsaW5nIGFuZAot ICogZW5zdXJpbmcgcXVpY2sgcmVzcG9uc2UgdG8gc2lnbmFscyBmcm9tIG90aGVyIHByb2Nl c3Nlcy4KLSAqCi0gKiBUaGVyZSBhcmUgdHdvIGtpbmRzIG9mIGxhdGNoZXM6IGxvY2FsIGFu ZCBzaGFyZWQuIEEgbG9jYWwgbGF0Y2ggaXMKLSAqIGluaXRpYWxpemVkIGJ5IEluaXRMYXRj aCwgYW5kIGNhbiBvbmx5IGJlIHNldCBmcm9tIHRoZSBzYW1lIHByb2Nlc3MuCi0gKiBBIGxv Y2FsIGxhdGNoIGNhbiBiZSB1c2VkIHRvIHdhaXQgZm9yIGEgc2lnbmFsIHRvIGFycml2ZSwg YnkgY2FsbGluZwotICogU2V0TGF0Y2ggaW4gdGhlIHNpZ25hbCBoYW5kbGVyLiBBIHNoYXJl ZCBsYXRjaCByZXNpZGVzIGluIHNoYXJlZCBtZW1vcnksCi0gKiBhbmQgbXVzdCBiZSBpbml0 aWFsaXplZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgYnkgSW5pdFNoYXJlZExhdGNoLiBCZWZv cmUKLSAqIGEgc2hhcmVkIGxhdGNoIGNhbiBiZSB3YWl0ZWQgb24sIGl0IG11c3QgYmUgYXNz b2NpYXRlZCB3aXRoIGEgcHJvY2VzcwotICogd2l0aCBPd25MYXRjaC4gT25seSB0aGUgcHJv Y2VzcyBvd25pbmcgdGhlIGxhdGNoIGNhbiB3YWl0IG9uIGl0LCBidXQgYW55Ci0gKiBwcm9j ZXNzIGNhbiBzZXQgaXQuCi0gKgotICogVGhlcmUgYXJlIHRocmVlIGJhc2ljIG9wZXJhdGlv bnMgb24gYSBsYXRjaDoKLSAqCi0gKiBTZXRMYXRjaAkJLSBTZXRzIHRoZSBsYXRjaAotICog UmVzZXRMYXRjaAktIENsZWFycyB0aGUgbGF0Y2gsIGFsbG93aW5nIGl0IHRvIGJlIHNldCBh Z2FpbgotICogV2FpdExhdGNoCS0gV2FpdHMgZm9yIHRoZSBsYXRjaCB0byBiZWNvbWUgc2V0 Ci0gKgotICogV2FpdExhdGNoIGluY2x1ZGVzIGEgcHJvdmlzaW9uIGZvciB0aW1lb3V0cyAo d2hpY2ggc2hvdWxkIGJlIGF2b2lkZWQKLSAqIHdoZW4gcG9zc2libGUsIGFzIHRoZXkgaW5j dXIgZXh0cmEgb3ZlcmhlYWQpIGFuZCBhIHByb3Zpc2lvbiBmb3IKLSAqIHBvc3RtYXN0ZXIg Y2hpbGQgcHJvY2Vzc2VzIHRvIHdha2UgdXAgaW1tZWRpYXRlbHkgb24gcG9zdG1hc3RlciBk ZWF0aC4KLSAqIFNlZSBsYXRjaC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3Ig dGhlIGV4cG9ydGVkIGZ1bmN0aW9ucy4KLSAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRv IHdhaXQgZm9yIGV2ZW50KHMpIGlzOgotICoKLSAqIGZvciAoOzspCi0gKiB7Ci0gKgkgICBS ZXNldExhdGNoKCk7Ci0gKgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigp OwotICoJICAgV2FpdExhdGNoKCk7Ci0gKiB9Ci0gKgotICogSXQncyBpbXBvcnRhbnQgdG8g cmVzZXQgdGhlIGxhdGNoICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwot ICogZG8uIE90aGVyd2lzZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBsYXRjaCBiZXR3ZWVuIHRo ZSBjaGVjayBhbmQgdGhlCi0gKiBSZXNldExhdGNoIGNhbGwsIHlvdSB3aWxsIG1pc3MgaXQg YW5kIFdhaXQgd2lsbCBpbmNvcnJlY3RseSBibG9jay4KLSAqCi0gKiBBbm90aGVyIHZhbGlk IGNvZGluZyBwYXR0ZXJuIGxvb2tzIGxpa2U6Ci0gKgotICogZm9yICg7OykKLSAqIHsKLSAq CSAgIGlmICh3b3JrIHRvIGRvKQotICoJCSAgIERvIFN0dWZmKCk7IC8vIGluIHBhcnRpY3Vs YXIsIGV4aXQgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRpc2ZpZWQKLSAqCSAgIFdhaXRM YXRjaCgpOwotICoJICAgUmVzZXRMYXRjaCgpOwotICogfQotICoKLSAqIFRoaXMgaXMgdXNl ZnVsIHRvIHJlZHVjZSBsYXRjaCB0cmFmZmljIGlmIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUg bG9vcCdzCi0gKiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBvZnRlbiBiZSBzYXRpc2Zp ZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbjsKLSAqIHRoZSBjb3N0IGlzIGFuIGV4dHJhIGxv b3AgaXRlcmF0aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlzIG5vdC4KLSAqIFdoYXQg bXVzdCBiZSBhdm9pZGVkIGlzIHBsYWNpbmcgYW55IGNoZWNrcyBmb3IgYXN5bmNocm9ub3Vz IGV2ZW50cyBhZnRlcgotICogV2FpdExhdGNoIGFuZCBiZWZvcmUgUmVzZXRMYXRjaCwgYXMg dGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uCi0gKgotICogVG8gd2FrZSB1cCB0aGUg d2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBnbG9iYWwgZmxhZyBvciBzb21ldGhpbmcK LSAqIGVsc2UgdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAiaWYgKHdvcmsgdG8g ZG8pIiBwYXJ0LCBhbmQgY2FsbAotICogU2V0TGF0Y2ggKmFmdGVyKiB0aGF0LiBTZXRMYXRj aCBpcyBkZXNpZ25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUKLSAqIGxhdGNoIGlzIGFs cmVhZHkgc2V0LgotICoKLSAqIE9uIHNvbWUgcGxhdGZvcm1zLCBzaWduYWxzIHdpbGwgbm90 IGludGVycnVwdCB0aGUgbGF0Y2ggd2FpdCBwcmltaXRpdmUKLSAqIGJ5IHRoZW1zZWx2ZXMu ICBUaGVyZWZvcmUsIGl0IGlzIGNyaXRpY2FsIHRoYXQgYW55IHNpZ25hbCBoYW5kbGVyIHRo YXQKLSAqIGlzIG1lYW50IHRvIHRlcm1pbmF0ZSBhIFdhaXRMYXRjaCB3YWl0IGNhbGxzIFNl dExhdGNoLgotICoKLSAqIE5vdGUgdGhhdCB1c2Ugb2YgdGhlIHByb2Nlc3MgbGF0Y2ggKFBH UFJPQy5wcm9jTGF0Y2gpIGlzIGdlbmVyYWxseSBiZXR0ZXIKLSAqIHRoYW4gYW4gYWQtaG9j IHNoYXJlZCBsYXRjaCBmb3Igc2lnbmFsaW5nIGF1eGlsaWFyeSBwcm9jZXNzZXMuICBUaGlz IGlzCi0gKiBiZWNhdXNlIGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJzIHdpbGwgY2FsbCBTZXRM YXRjaCBvbiB0aGUgcHJvY2VzcyBsYXRjaAotICogb25seSwgc28gdXNpbmcgYW55IGxhdGNo IG90aGVyIHRoYW4gdGhlIHByb2Nlc3MgbGF0Y2ggZWZmZWN0aXZlbHkgcHJlY2x1ZGVzCi0g KiB1c2Ugb2YgYW55IGdlbmVyaWMgaGFuZGxlci4KLSAqCi0gKgotICogU2VlIGFsc28gV2Fp dEV2ZW50U2V0cyBpbiB3YWl0ZXZlbnRzZXQuaC4gVGhleSBhbGxvdyB0byB3YWl0IGZvciBs YXRjaGVzCi0gKiBiZWluZyBzZXQgYW5kIGFkZGl0aW9uYWwgZXZlbnRzIC0gcG9zdG1hc3Rl ciBkeWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZgotICogc2V2ZXJhbCBzb2NrZXRzIGN1 cnJlbnRseSAtIGF0IHRoZSBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBh Ci0gKiBsb25nIGxpdmVkIGV2ZW50IHNldCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHVzaW5n IFdhaXRMYXRjaCBvcgotICogV2FpdExhdGNoT3JTb2NrZXQuCi0gKgotICoKLSAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9m IHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKLSAqCi0gKiBzcmMvaW5jbHVkZS9zdG9y YWdlL2xhdGNoLmgKLSAqCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwotI2lmbmRlZiBM QVRDSF9ICi0jZGVmaW5lIExBVENIX0gKLQotI2luY2x1ZGUgPHNpZ25hbC5oPgotCi0jaW5j bHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIJLyogZm9yIFdMXyogYXJndW1lbnRzIHRv IFdhaXRMYXRjaCAqLwotCi0vKgotICogTGF0Y2ggc3RydWN0dXJlIHNob3VsZCBiZSB0cmVh dGVkIGFzIG9wYXF1ZSBhbmQgb25seSBhY2Nlc3NlZCB0aHJvdWdoCi0gKiB0aGUgcHVibGlj IGZ1bmN0aW9ucy4gSXQgaXMgZGVmaW5lZCBoZXJlIHRvIGFsbG93IGVtYmVkZGluZyBMYXRj aGVzIGFzCi0gKiBwYXJ0IG9mIGJpZ2dlciBzdHJ1Y3RzLgotICovCi10eXBlZGVmIHN0cnVj dCBMYXRjaAotewotCXNpZ19hdG9taWNfdCBpc19zZXQ7Ci0Jc2lnX2F0b21pY190IG1heWJl X3NsZWVwaW5nOwotCWJvb2wJCWlzX3NoYXJlZDsKLQlpbnQJCQlvd25lcl9waWQ7Ci0jaWZk ZWYgV0lOMzIKLQlIQU5ETEUJCWV2ZW50OwotI2VuZGlmCi19IExhdGNoOwotCi0vKgotICog cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGxhdGNoLmMKLSAqLwotZXh0ZXJuIHZvaWQg SW5pdExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBJbml0U2hhcmVkTGF0Y2go TGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIE93bkxhdGNoKExhdGNoICpsYXRjaCk7Ci1l eHRlcm4gdm9pZCBEaXNvd25MYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgU2V0 TGF0Y2goTGF0Y2ggKmxhdGNoKTsKLWV4dGVybiB2b2lkIFJlc2V0TGF0Y2goTGF0Y2ggKmxh dGNoKTsKLQotZXh0ZXJuIGludAlXYWl0TGF0Y2goTGF0Y2ggKmxhdGNoLCBpbnQgd2FrZUV2 ZW50cywgbG9uZyB0aW1lb3V0LAotCQkJCQkgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwot ZXh0ZXJuIGludAlXYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZl bnRzLAotCQkJCQkJCSAgcGdzb2NrZXQgc29jaywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2Fp dF9ldmVudF9pbmZvKTsKLWV4dGVybiB2b2lkIEluaXRpYWxpemVMYXRjaFdhaXRTZXQodm9p ZCk7Ci0KLSNlbmRpZgkJCQkJCQkvKiBMQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4 IDFmMWFiN2QwMmNhLi4wMGVhOWY4NjQyMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTE4LDcg KzE4LDYgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJsaWIv aWxpc3QuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xh dGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w Z19zZW1hLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jbGlzdF90eXBlcy5oIgpAQCAtMTkw LDkgKzE4OSw2IEBAIHN0cnVjdCBQR1BST0MKIAlQR1NlbWFwaG9yZSBzZW07CQkJLyogT05F IHNlbWFwaG9yZSB0byBzbGVlcCBvbiAqLwogCVByb2NXYWl0U3RhdHVzIHdhaXRTdGF0dXM7 CiAKLQlMYXRjaAkJcHJvY0xhdGNoOwkJLyogZ2VuZXJpYyBsYXRjaCBmb3IgcHJvY2VzcyAq LwotCi0KIAlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBpZCBvZiB0b3AtbGV2ZWwgdHJhbnNh Y3Rpb24gY3VycmVudGx5IGJlaW5nCiAJCQkJCQkJCSAqIGV4ZWN1dGVkIGJ5IHRoaXMgcHJv YywgaWYgcnVubmluZyBhbmQgWElECiAJCQkJCQkJCSAqIGlzIGFzc2lnbmVkOyBlbHNlIElu dmFsaWRUcmFuc2FjdGlvbklkLgpAQCAtMjM2LDE2ICsyMzIsNiBAQCBzdHJ1Y3QgUEdQUk9D CiAKIAlCYWNrZW5kVHlwZSBiYWNrZW5kVHlwZTsJLyogd2hhdCBraW5kIG9mIHByb2Nlc3Mg aXMgdGhpcz8gKi8KIAotCS8qCi0JICogV2hpbGUgaW4gaG90IHN0YW5kYnkgbW9kZSwgc2hv d3MgdGhhdCBhIGNvbmZsaWN0IHNpZ25hbCBoYXMgYmVlbiBzZW50Ci0JICogZm9yIHRoZSBj dXJyZW50IHRyYW5zYWN0aW9uLiBTZXQvY2xlYXJlZCB3aGlsZSBob2xkaW5nIFByb2NBcnJh eUxvY2ssCi0JICogdGhvdWdoIG5vdCByZXF1aXJlZC4gQWNjZXNzZWQgd2l0aG91dCBsb2Nr LCBpZiBuZWVkZWQuCi0JICoKLQkgKiBUaGlzIGlzIGEgYml0bWFzazsgZWFjaCBiaXQgY29y cmVzcG9uZHMgdG8gYSBSZWNvdmVyeUNvbmZsaWN0UmVhc29uCi0JICogZW51bSB2YWx1ZS4K LQkgKi8KLQlwZ19hdG9taWNfdWludDMyIHBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0czsKLQog CS8qCiAJICogSW5mbyBhYm91dCBMV0xvY2sgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5IHdh aXRpbmcgZm9yLCBpZiBhbnkuCiAJICoKQEAgLTMzNyw2ICszMjMsMjQgQEAgc3RydWN0IFBH UFJPQwogCVBHUFJPQwkgICAqbG9ja0dyb3VwTGVhZGVyOwkvKiBsb2NrIGdyb3VwIGxlYWRl ciwgaWYgSSdtIGEgbWVtYmVyICovCiAJZGxpc3RfaGVhZAlsb2NrR3JvdXBNZW1iZXJzOwkv KiBsaXN0IG9mIG1lbWJlcnMsIGlmIEknbSBhIGxlYWRlciAqLwogCWRsaXN0X25vZGUJbG9j a0dyb3VwTGluazsJLyogbXkgbWVtYmVyIGxpbmssIGlmIEknbSBhIG1lbWJlciAqLworCisJ LyogQml0IG1hc2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzLCB3YWl0aW5nIHRvIGJlIHByb2Nl c3NlZCAqLworCXBnX2F0b21pY191aW50NjQgcGVuZGluZ0ludGVycnVwdHM7CisKKwkvKgor CSAqIFdoaWxlIGluIGhvdCBzdGFuZGJ5IG1vZGUsIHNob3dzIHRoYXQgYSBjb25mbGljdCBz aWduYWwgaGFzIGJlZW4gc2VudAorCSAqIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4g U2V0L2NsZWFyZWQgd2hpbGUgaG9sZGluZyBQcm9jQXJyYXlMb2NrLAorCSAqIHRob3VnaCBu b3QgcmVxdWlyZWQuIEFjY2Vzc2VkIHdpdGhvdXQgbG9jaywgaWYgbmVlZGVkLgorCSAqCisJ ICogVGhpcyBpcyBhIGJpdG1hc2s7IGVhY2ggYml0IGNvcnJlc3BvbmRzIHRvIGEgUmVjb3Zl cnlDb25mbGljdFJlYXNvbgorCSAqIGVudW0gdmFsdWUuCisJICovCisJcGdfYXRvbWljX3Vp bnQzMiBwZW5kaW5nUmVjb3ZlcnlDb25mbGljdHM7CisKKyNpZmRlZiBXSU4zMgorCS8qIEV2 ZW50IGhhbmRsZSB0byB3YWtlIHVwIHRoZSBwcm9jZXNzIHdoZW4gc2VuZGluZyBhbiBpbnRl cnJ1cHQgKi8KKwlIQU5ETEUJCWludGVycnVwdFdha2V1cEV2ZW50OworI2VuZGlmCiB9Owog CiAvKiBOT1RFOiAidHlwZWRlZiBzdHJ1Y3QgUEdQUk9DIFBHUFJPQyIgYXBwZWFycyBpbiBz dG9yYWdlL2xvY2suaC4gKi8KQEAgLTQ1MSw2ICs0NTUsOCBAQCB0eXBlZGVmIHN0cnVjdCBQ Uk9DX0hEUgogCXBnX2F0b21pY191aW50MzIgYXZMYXVuY2hlclByb2M7CiAJcGdfYXRvbWlj X3VpbnQzMiB3YWx3cml0ZXJQcm9jOwogCXBnX2F0b21pY191aW50MzIgY2hlY2twb2ludGVy UHJvYzsKKwlwZ19hdG9taWNfdWludDMyIHdhbHJlY2VpdmVyUHJvYzsKKwlwZ19hdG9taWNf dWludDMyIHN0YXJ0dXBQcm9jOwogCiAJLyogQ3VycmVudCBzaGFyZWQgZXN0aW1hdGUgb2Yg YXBwcm9wcmlhdGUgc3BpbnNfcGVyX2RlbGF5IHZhbHVlICovCiAJaW50CQkJc3BpbnNfcGVy X2RlbGF5OwpAQCAtNTMzLDkgKzUzOSw2IEBAIGV4dGVybiB2b2lkIEdldExvY2tIb2xkZXJz QW5kV2FpdGVycyhMT0NBTExPQ0sgKmxvY2FsbG9jaywKIAkJCQkJCQkJCSBTdHJpbmdJbmZv IGxvY2tfd2FpdGVyc19zYnVmLAogCQkJCQkJCQkJIGludCAqbG9ja0hvbGRlcnNOdW0pOwog Ci1leHRlcm4gdm9pZCBQcm9jV2FpdEZvclNpZ25hbCh1aW50MzIgd2FpdF9ldmVudF9pbmZv KTsKLWV4dGVybiB2b2lkIFByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051bWJlcik7 Ci0KIGV4dGVybiBQR1BST0MgKkF1eGlsaWFyeVBpZEdldFByb2MoaW50IHBpZCk7CiAKIGV4 dGVybiB2b2lkIEJlY29tZUxvY2tHcm91cExlYWRlcih2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3By b2NhcnJheS5oCmluZGV4IGM1YWIxNTc0ZmUzLi5iNzIwMWQxYTkxNyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NhcnJheS5oCkBAIC03OCw3ICs3OCw3IEBAIGV4dGVybiBWaXJ0dWFsVHJhbnNh Y3Rpb25JZCAqR2V0Q3VycmVudFZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWlu LAogCQkJCQkJCQkJCQkJICAgaW50ICpudnhpZHMpOwogZXh0ZXJuIFZpcnR1YWxUcmFuc2Fj dGlvbklkICpHZXRDb25mbGljdGluZ1ZpcnR1YWxYSURzKFRyYW5zYWN0aW9uSWQgbGltaXRY bWluLCBPaWQgZGJPaWQpOwogCi1leHRlcm4gYm9vbCBTaWduYWxSZWNvdmVyeUNvbmZsaWN0 KFBHUFJPQyAqcHJvYywgcGlkX3QgcGlkLCBSZWNvdmVyeUNvbmZsaWN0UmVhc29uIHJlYXNv bik7CitleHRlcm4gYm9vbCBTaWduYWxSZWNvdmVyeUNvbmZsaWN0KFBHUFJPQyAqcHJvYywg UmVjb3ZlcnlDb25mbGljdFJlYXNvbiByZWFzb24pOwogZXh0ZXJuIGJvb2wgU2lnbmFsUmVj b3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQs IFJlY292ZXJ5Q29uZmxpY3RSZWFzb24gcmVhc29uKTsKIGV4dGVybiB2b2lkIFNpZ25hbFJl Y292ZXJ5Q29uZmxpY3RXaXRoRGF0YWJhc2UoT2lkIGRhdGFiYXNlaWQsIFJlY292ZXJ5Q29u ZmxpY3RSZWFzb24gcmVhc29uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCAzNDhmYmE1M2E5My4uMThiMjhiN2I3MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oCkBAIC0xNCwzNSArMTQsNiBAQAogI2lmbmRlZiBQUk9DU0lHTkFMX0gKICNkZWZpbmUg UFJPQ1NJR05BTF9ICiAKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKLQotCi0v KgotICogUmVhc29ucyBmb3Igc2lnbmFsaW5nIGEgUG9zdGdyZXMgY2hpbGQgcHJvY2VzcyAo YSBiYWNrZW5kIG9yIGFuIGF1eGlsaWFyeQotICogcHJvY2VzcywgbGlrZSBjaGVja3BvaW50 ZXIpLiAgV2UgY2FuIGNvcGUgd2l0aCBjb25jdXJyZW50IHNpZ25hbHMgZm9yIGRpZmZlcmVu dAotICogcmVhc29ucy4gIEhvd2V2ZXIsIGlmIHRoZSBzYW1lIHJlYXNvbiBpcyBzaWduYWxl ZCBtdWx0aXBsZSB0aW1lcyBpbiBxdWljawotICogc3VjY2Vzc2lvbiwgdGhlIHByb2Nlc3Mg aXMgbGlrZWx5IHRvIG9ic2VydmUgb25seSBvbmUgbm90aWZpY2F0aW9uIG9mIGl0LgotICog VGhpcyBpcyBva2F5IGZvciB0aGUgcHJlc2VudCB1c2VzLgotICoKLSAqIEFsc28sIGJlY2F1 c2Ugb2YgcmFjZSBjb25kaXRpb25zLCBpdCdzIGltcG9ydGFudCB0aGF0IGFsbCB0aGUgc2ln bmFscyBiZQotICogZGVmaW5lZCBzbyB0aGF0IG5vIGhhcm0gaXMgZG9uZSBpZiBhIHByb2Nl c3MgbWlzdGFrZW5seSByZWNlaXZlcyBvbmUuCi0gKi8KLXR5cGVkZWYgZW51bQotewotCVBS T0NTSUdfQ0FUQ0hVUF9JTlRFUlJVUFQsCS8qIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdCAq LwotCVBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCwJLyogbGlzdGVuL25vdGlmeSBpbnRlcnJ1 cHQgKi8KLQlQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCS8qIG1lc3NhZ2UgZnJvbSBjb29w ZXJhdGluZyBwYXJhbGxlbCBiYWNrZW5kICovCi0JUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9Q UElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCi0J UFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KLQlQ Uk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBt ZW1vcnkgY29udGV4dHMgKi8KLQlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8q IE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCi0JUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVCwJLyogYmFja2VuZCBpcyBibG9ja2luZyByZWNvdmVyeSwgY2hlY2sK LQkJCQkJCQkJICogUEdQUk9DLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMgZm9yIHRoZQot CQkJCQkJCQkgKiByZWFzb24gKi8KLX0gUHJvY1NpZ25hbFJlYXNvbjsKLQotI2RlZmluZSBO VU1fUFJPQ1NJR05BTFMgKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1QgKyAxKQotCiB0eXBl ZGVmIGVudW0KIHsKIAlQUk9DU0lHTkFMX0JBUlJJRVJfU01HUlJFTEVBU0UsIC8qIGFzayBz bWdyIHRvIGNsb3NlIGZpbGVzICovCkBAIC02NywxNiArMzgsMTIgQEAgZXh0ZXJuIFNpemUg UHJvY1NpZ25hbFNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2NTaWduYWxTaG1l bUluaXQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFByb2NTaWduYWxJbml0KGNvbnN0IHVpbnQ4 ICpjYW5jZWxfa2V5LCBpbnQgY2FuY2VsX2tleV9sZW4pOwotZXh0ZXJuIGludAlTZW5kUHJv Y1NpZ25hbChwaWRfdCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLAotCQkJCQkJICAg UHJvY051bWJlciBwcm9jTnVtYmVyKTsKIGV4dGVybiB2b2lkIFNlbmRDYW5jZWxSZXF1ZXN0 KGludCBiYWNrZW5kUElELCBjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9r ZXlfbGVuKTsKIAogZXh0ZXJuIHVpbnQ2NCBFbWl0UHJvY1NpZ25hbEJhcnJpZXIoUHJvY1Np Z25hbEJhcnJpZXJUeXBlIHR5cGUpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclByb2NTaWduYWxC YXJyaWVyKHVpbnQ2NCBnZW5lcmF0aW9uKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQcm9jU2ln bmFsQmFycmllcih2b2lkKTsKIAotZXh0ZXJuIHZvaWQgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIoU0lHTkFMX0FSR1MpOwotCiAvKiBQcm9jU2lnbmFsSGVhZGVyIGlzIGFuIG9wYXF1 ZSBzdHJ1Y3QsIGRldGFpbHMga25vd24gb25seSB3aXRoaW4gcHJvY3NpZ25hbC5jICovCiB0 eXBlZGVmIHN0cnVjdCBQcm9jU2lnbmFsSGVhZGVyIFByb2NTaWduYWxIZWFkZXI7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NpbnZhbC5oCmluZGV4IDRkMzNmZGNhYmUxLi42Y2VjYmZkOWNmOCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NpbnZhbC5oCkBAIC0xMzcsMTYgKzEzNywxMSBAQCB0eXBlZGVmIHVuaW9uCiAv KiBDb3VudGVyIG9mIG1lc3NhZ2VzIHByb2Nlc3NlZDsgZG9uJ3Qgd29ycnkgYWJvdXQgb3Zl cmZsb3cuICovCiBleHRlcm4gUEdETExJTVBPUlQgdWludDY0IFNoYXJlZEludmFsaWRNZXNz YWdlQ291bnRlcjsKIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNf dCBjYXRjaHVwSW50ZXJydXB0UGVuZGluZzsKLQogZXh0ZXJuIHZvaWQgU2VuZFNoYXJlZElu dmFsaWRNZXNzYWdlcyhjb25zdCBTaGFyZWRJbnZhbGlkYXRpb25NZXNzYWdlICptc2dzLAog CQkJCQkJCQkJICBpbnQgbik7CiBleHRlcm4gdm9pZCBSZWNlaXZlU2hhcmVkSW52YWxpZE1l c3NhZ2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAoU2hhcmVkSW52YWxpZGF0aW9uTWVzc2Fn ZSAqbXNnKSwKIAkJCQkJCQkJCQkgdm9pZCAoKnJlc2V0RnVuY3Rpb24pICh2b2lkKSk7CiAK LS8qIHNpZ25hbCBoYW5kbGVyIGZvciBjYXRjaHVwIGV2ZW50cyAoUFJPQ1NJR19DQVRDSFVQ X0lOVEVSUlVQVCkgKi8KLWV4dGVybiB2b2lkIEhhbmRsZUNhdGNodXBJbnRlcnJ1cHQodm9p ZCk7Ci0KIC8qCiAgKiBlbmFibGUvZGlzYWJsZSBwcm9jZXNzaW5nIG9mIGNhdGNodXAgZXZl bnRzIGRpcmVjdGx5IGZyb20gc2lnbmFsIGhhbmRsZXIuCiAgKiBUaGUgZW5hYmxlIHJvdXRp bmUgZmlyc3QgcGVyZm9ybXMgcHJvY2Vzc2luZyBvZiBhbnkgY2F0Y2h1cCBldmVudHMgdGhh dApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaCBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKaW5kZXggNTM0MTI2N2YwYTAuLmE3 Zjk3NGM1YmEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNl dC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgKQEAgLTMsMTYg KzMsMTUgQEAKICAqIHdhaXRldmVudHNldC5oCiAgKgkJcHBvbGwoKSAvIHBzZWxlY3QoKSBs aWtlIGludGVyZmFjZSBmb3Igd2FpdGluZyBmb3IgZXZlbnRzCiAgKgotICogV2FpdEV2ZW50 U2V0cyBhbGxvdyB0byB3YWl0IGZvciBsYXRjaGVzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25h bCBldmVudHMgLQorICogV2FpdEV2ZW50U2V0cyBhbGxvdyB0byB3YWl0IGZvciBpbnRlcnJ1 cHRzIGJlaW5nIHNldCBhbmQgYWRkaXRpb25hbCBldmVudHMgLQogICogcG9zdG1hc3RlciBk eWluZyBhbmQgc29ja2V0IHJlYWRpbmVzcyBvZiBzZXZlcmFsIHNvY2tldHMgY3VycmVudGx5 IC0gYXQgdGhlCiAgKiBzYW1lIHRpbWUuICBPbiBtYW55IHBsYXRmb3JtcyB1c2luZyBhIGxv bmcgbGl2ZWQgZXZlbnQgc2V0IGlzIG1vcmUKLSAqIGVmZmljaWVudCB0aGFuIHVzaW5nIFdh aXRMYXRjaCBvciBXYWl0TGF0Y2hPclNvY2tldC4KKyAqIGVmZmljaWVudCB0aGFuIHVzaW5n IFdhaXRJbnRlcnJ1cHQgb3IgV2FpdEludGVycnVwdE9yU29ja2V0LgogICoKLSAqIFdhaXRF dmVudFNldFdhaXQgaW5jbHVkZXMgYSBwcm92aXNpb24gZm9yIHRpbWVvdXRzICh3aGljaCBz aG91bGQgYmUgYXZvaWRlZAorICogV2FpdEludGVycnVwdCBpbmNsdWRlcyBhIHByb3Zpc2lv biBmb3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCiAgKiB3aGVuIHBvc3Np YmxlLCBhcyB0aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBwcm92aXNpb24gZm9y IHBvc3RtYXN0ZXIKICAqIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVwIGltbWVkaWF0ZWx5 IG9uIHBvc3RtYXN0ZXIgZGVhdGguICBTZWUKLSAqIHN0b3JhZ2UvaXBjL3dhaXRldmVudHNl dC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkCi0gKiBm dW5jdGlvbnMuCisgKiBpcGMvaW50ZXJydXB0LmMgZm9yIGRldGFpbGVkIHNwZWNpZmljYXRp b25zIGZvciB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zLgogICoKICAqCiAgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKQEAgLTI1LDEzICsyNCwxNyBAQAogI2lmbmRlZiBXQUlURVZFTlRTRVRfSAogI2Rl ZmluZSBXQUlURVZFTlRTRVRfSAogCi0jaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKKworLyogZGVmaW5lZCBoZXJlIHRvIGF2 b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgdG8gaW50ZXJydXB0LmggKi8KK3R5cGVkZWYgdWlu dDY0IEludGVycnVwdE1hc2s7CisKIAogLyoKLSAqIEJpdG1hc2tzIGZvciBldmVudHMgdGhh dCBtYXkgd2FrZS11cCBXYWl0TGF0Y2goKSwgV2FpdExhdGNoT3JTb2NrZXQoKSwgb3IKLSAq IFdhaXRFdmVudFNldFdhaXQoKS4KKyAqIEJpdG1hc2tzIGZvciBldmVudHMgdGhhdCBtYXkg d2FrZS11cCBXYWl0SW50ZXJydXB0KCksCisgKiBXYWl0SW50ZXJydXB0T3JTb2NrZXQoKSwg b3IgV2FpdEV2ZW50U2V0V2FpdCgpLgogICovCi0jZGVmaW5lIFdMX0xBVENIX1NFVAkJICgx IDw8IDApCisjZGVmaW5lIFdMX0lOVEVSUlVQVAkJICgxIDw8IDApCiAjZGVmaW5lIFdMX1NP Q0tFVF9SRUFEQUJMRQkgKDEgPDwgMSkKICNkZWZpbmUgV0xfU09DS0VUX1dSSVRFQUJMRSAg KDEgPDwgMikKICNkZWZpbmUgV0xfVElNRU9VVAkJCSAoMSA8PCAzKQkvKiBub3QgZm9yIFdh aXRFdmVudFNldFdhaXQoKSAqLwpAQCAtNzAsMjkgKzczLDMzIEBAIHR5cGVkZWYgc3RydWN0 IFdhaXRFdmVudAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgZXhwb3Npbmcg d2FpdGV2ZW50c2V0LmMgaW1wbGVtZW50YXRpb24gZGV0YWlscyAqLwogdHlwZWRlZiBzdHJ1 Y3QgV2FpdEV2ZW50U2V0IFdhaXRFdmVudFNldDsKIAotc3RydWN0IExhdGNoOworc3RydWN0 IFBHUFJPQzsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB3YWl0ZXZl bnRzZXQuYwogICovCiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2 b2lkKTsKKyNpZmRlZiBXSU4zMgorZXh0ZXJuIEhBTkRMRSBDcmVhdGVTaGFyZWRXYWtldXBI YW5kbGUodm9pZCk7CisjZW5kaWYKKworc3RydWN0IFJlc291cmNlT3duZXJEYXRhOwogCi1l eHRlcm4gV2FpdEV2ZW50U2V0ICpDcmVhdGVXYWl0RXZlbnRTZXQoUmVzb3VyY2VPd25lciBy ZXNvd25lciwgaW50IG5ldmVudHMpOworZXh0ZXJuIFdhaXRFdmVudFNldCAqQ3JlYXRlV2Fp dEV2ZW50U2V0KHN0cnVjdCBSZXNvdXJjZU93bmVyRGF0YSAqcmVzb3duZXIsIGludCBuZXZl bnRzKTsKIGV4dGVybiB2b2lkIEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQp OwogZXh0ZXJuIHZvaWQgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQg KnNldCk7CiBleHRlcm4gaW50CUFkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0 LCB1aW50MzIgZXZlbnRzLCBwZ3NvY2tldCBmZCwKLQkJCQkJCQkgIHN0cnVjdCBMYXRjaCAq bGF0Y2gsIHZvaWQgKnVzZXJfZGF0YSk7CisJCQkJCQkJICB1aW50NjQgaW50ZXJydXB0TWFz aywgdm9pZCAqdXNlcl9kYXRhKTsKIGV4dGVybiB2b2lkIE1vZGlmeVdhaXRFdmVudChXYWl0 RXZlbnRTZXQgKnNldCwgaW50IHBvcywgdWludDMyIGV2ZW50cywKLQkJCQkJCQlzdHJ1Y3Qg TGF0Y2ggKmxhdGNoKTsKKwkJCQkJCQl1aW50NjQgaW50ZXJydXB0TWFzayk7CiBleHRlcm4g aW50CVdhaXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwK IAkJCQkJCQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9ldmVudHMsIGludCBuZXZlbnRzLAogCQkJ CQkJCSB1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIGV4dGVybiBpbnQJR2V0TnVtUmVnaXN0 ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpOwogZXh0ZXJuIGJvb2wgV2FpdEV2 ZW50U2V0Q2FuUmVwb3J0Q2xvc2VkKHZvaWQpOwogCi0jaWZuZGVmIFdJTjMyCisvKiBsb3cg bGV2ZWwgZnVuY3Rpb25zIHVzZWQgdG8gaW1wbGVtZW50IFNlbmRJbnRlcnJ1cHQgKi8KIGV4 dGVybiB2b2lkIFdha2V1cE15UHJvYyh2b2lkKTsKLWV4dGVybiB2b2lkIFdha2V1cE90aGVy UHJvYyhpbnQgcGlkKTsKLSNlbmRpZgorZXh0ZXJuIHZvaWQgV2FrZXVwT3RoZXJQcm9jKHN0 cnVjdCBQR1BST0MgKnByb2MpOwogCiAjZW5kaWYJCQkJCQkJLyogV0FJVEVWRU5UU0VUX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNs dWRlL3Rjb3AvdGNvcHByb3QuaAppbmRleCA1YmM1YmNmYjIwZC4uNzdhYjk1MGVhZTIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVk ZS90Y29wL3Rjb3Bwcm90LmgKQEAgLTE2LDcgKzE2LDYgQEAKIAogI2luY2x1ZGUgIm5vZGVz L3BhcmFtcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUg InV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKIApAQCAtNzAsMTMgKzY5LDcgQEAgZXh0ZXJu IExpc3QgKnBnX3BsYW5fcXVlcmllcyhMaXN0ICpxdWVyeXRyZWVzLCBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsCiAJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCSBQYXJh bUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIAotZXh0ZXJuIHZvaWQgZGllKFNJR05BTF9BUkdT KTsKLXBnX25vcmV0dXJuIGV4dGVybiB2b2lkIHF1aWNrZGllKFNJR05BTF9BUkdTKTsKLWV4 dGVybiB2b2lkIFN0YXRlbWVudENhbmNlbEhhbmRsZXIoU0lHTkFMX0FSR1MpOwogcGdfbm9y ZXR1cm4gZXh0ZXJuIHZvaWQgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05BTF9BUkdTKTsK LWV4dGVybiB2b2lkIEhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQodm9pZCk7Ci1l eHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpOwot ZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCk7 CiAKIGV4dGVybiB2b2lkIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSwKIAkJCQkJCQkJCSAgR3VjQ29udGV4dCBjdHgsIGNvbnN0IGNoYXIgKipk Ym5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKaW5kZXggMTFhYjE3MTdhMTYuLjVkNDc2NDNl Yjc3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKQEAgLTEwMSw3ICsxMDEsNiBAQCBleHRlcm4g dm9pZCBNZW1vcnlDb250ZXh0Q2hlY2soTWVtb3J5Q29udGV4dCBjb250ZXh0KTsKICNkZWZp bmUgTWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVudGlmaWVyKGN4dCwgaWQpIFwKIAlNZW1v cnlDb250ZXh0U2V0SWRlbnRpZmllcihjeHQsIE1lbW9yeUNvbnRleHRTdHJkdXAoY3h0LCBp ZCkpCiAKLWV4dGVybiB2b2lkIEhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9p ZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lk KTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5h bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgKaW5kZXggOWI4ZmJh ZTAwZWQuLjJjZjgwOWNkN2MyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0 YXRfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50ZXJuYWwu aApAQCAtMTUsNiArMTUsNyBAQAogCiAKICNpbmNsdWRlICJjb21tb24vaGFzaGZuX3Vuc3Rh YmxlLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgImxpYi9kc2hh c2guaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKZGlm ZiAtLWdpdCBhL3NyYy9wb3J0L3BnX251bWEuYyBiL3NyYy9wb3J0L3BnX251bWEuYwppbmRl eCA4OTU0NjY5MjczYS4uMWRmNWVlMzAzM2YgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX251 bWEuYworKysgYi9zcmMvcG9ydC9wZ19udW1hLmMKQEAgLTE2LDcgKzE2LDEwIEBACiAjaW5j bHVkZSAiYy5oIgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCi0jaW5jbHVkZSAibWlzY2FkbWlu LmgiCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl ICJpcGMvaW50ZXJydXB0LmgiCisjZW5kaWYKICNpbmNsdWRlICJwb3J0L3BnX251bWEuaCIK IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3Bnc2xlZXAuYyBiL3NyYy9wb3J0L3Bnc2xl ZXAuYwppbmRleCA0YzMxZTUwM2ViMS4uMGJkNTBiZGIyM2YgMTAwNjQ0Ci0tLSBhL3NyYy9w b3J0L3Bnc2xlZXAuYworKysgYi9zcmMvcG9ydC9wZ3NsZWVwLmMKQEAgLTMyLDEwICszMiwx MCBAQAogICoKICAqIENBVVRJT046IEl0J3Mgbm90IGEgZ29vZCBpZGVhIHRvIHVzZSBsb25n IHNsZWVwcyBpbiB0aGUgYmFja2VuZC4gIFRoZXkgd2lsbAogICogc2lsZW50bHkgcmV0dXJu IGVhcmx5IGlmIGEgc2lnbmFsIGlzIGNhdWdodCwgYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRl Ci0gKiBsYXRjaGVzIGJlaW5nIHNldCBvbiBtb3N0IE9TZXMsIGFuZCBldmVuIHNpZ25hbCBo YW5kbGVycyB0aGF0IHNldCBNeUxhdGNoCi0gKiBtaWdodCBoYXBwZW4gdG8gcnVuIGJlZm9y ZSB0aGUgc2xlZXAgYmVnaW5zLCBhbGxvd2luZyB0aGUgZnVsbCBkZWxheS4KLSAqIEJldHRl ciBwcmFjdGljZSBpcyB0byB1c2UgV2FpdExhdGNoKCkgd2l0aCBhIHRpbWVvdXQsIHNvIHRo YXQgYmFja2VuZHMKLSAqIHJlc3BvbmQgdG8gbGF0Y2hlcyBhbmQgc2lnbmFscyBwcm9tcHRs eS4KKyAqIGludGVycnVwdHMgYmVpbmcgcmVjZWl2ZWQgb24gbW9zdCBPU2VzLCBhbmQgZXZl biBzaWduYWwgaGFuZGxlcnMgdGhhdCByYWlzZQorICogYW4gaW50ZXJydXB0IG1pZ2h0IGhh cHBlbiB0byBydW4gYmVmb3JlIHRoZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBmdWxs CisgKiBkZWxheS4gIEJldHRlciBwcmFjdGljZSBpcyB0byB1c2UgV2FpdEludGVycnVwdCgp IHdpdGggYSB0aW1lb3V0LCBzbyB0aGF0CisgKiBiYWNrZW5kcyByZXNwb25kIHRvIGludGVy cnVwdHMgYW5kIHNpZ25hbHMgcHJvbXB0bHkuCiAgKi8KIHZvaWQKIHBnX3VzbGVlcChsb25n IG1pY3Jvc2VjKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRl c3Rlci5jIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCmluZGV4IGEw YWVjMDRkOTk0Li43NzdkMDAyODNkYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9u L2lzb2xhdGlvbnRlc3Rlci5jCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250 ZXN0ZXIuYwpAQCAtNzYyLDcgKzc2Miw3IEBAIHRyeV9jb21wbGV0ZV9zdGVwcyhUZXN0U3Bl YyAqdGVzdHNwZWMsIFBlcm11dGF0aW9uU3RlcCAqKndhaXRpbmcsCiAJewogCQlpbnQJCQl3 ID0gMDsKIAotCQkvKiBSZXNldCBsYXRjaDsgd2Ugb25seSBjYXJlIGFib3V0IG5vdGljZXMg cmVjZWl2ZWQgd2l0aGluIGxvb3AuICovCisJCS8qIFJlc2V0IGZsYWc7IHdlIG9ubHkgY2Fy ZSBhYm91dCBub3RpY2VzIHJlY2VpdmVkIHdpdGhpbiBsb29wLiAqLwogCQlhbnlfbmV3X25v dGljZSA9IGZhbHNlOwogCiAJCS8qIExpa2V3aXNlLCB0aGVzZSB2YXJpYWJsZXMgcmVzZXQg Zm9yIGVhY2ggcmV0cnkuICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htX21xL3NldHVwLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMK aW5kZXggNTc5ZTU5MzNkMjguLmU2MTY5Zjk3YTllIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NobV9tcS9zZXR1cC5jCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jl cy5oIgogCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3Jr ZXIuaCIKQEAgLTEzMyw2ICsxMzQsNyBAQCBzZXR1cF9keW5hbWljX3NoYXJlZF9tZW1vcnko aW50NjQgcXVldWVfc2l6ZSwgaW50IG53b3JrZXJzLAogCiAJLyogU2V0IHVwIHRoZSBoZWFk ZXIgcmVnaW9uLiAqLwogCWhkciA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YodGVz dF9zaG1fbXFfaGVhZGVyKSk7CisJaGRyLT5sZWFkZXJfcHJvY19udW1iZXIgPSBNeVByb2NO dW1iZXI7CiAJU3BpbkxvY2tJbml0KCZoZHItPm11dGV4KTsKIAloZHItPndvcmtlcnNfdG90 YWwgPSBud29ya2VyczsKIAloZHItPndvcmtlcnNfYXR0YWNoZWQgPSAwOwpAQCAtMjIyLDgg KzIyNCw2IEBAIHNldHVwX2JhY2tncm91bmRfd29ya2VycyhpbnQgbndvcmtlcnMsIGRzbV9z ZWdtZW50ICpzZWcpCiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJ0ZXN0 X3NobV9tcV9tYWluIik7CiAJc25wcmludGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFYTEVO LCAidGVzdF9zaG1fbXEiKTsKIAl3b3JrZXIuYmd3X21haW5fYXJnID0gVUludDMyR2V0RGF0 dW0oZHNtX3NlZ21lbnRfaGFuZGxlKHNlZykpOwotCS8qIHNldCBiZ3dfbm90aWZ5X3BpZCwg c28gd2UgY2FuIGRldGVjdCBpZiB0aGUgd29ya2VyIHN0b3BzICovCi0Jd29ya2VyLmJnd19u b3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCiAJLyogUmVnaXN0ZXIgdGhlIHdvcmtlcnMuICov CiAJZm9yIChpID0gMDsgaSA8IG53b3JrZXJzOyArK2kpCkBAIC0yNjQsNiArMjY0LDkgQEAg d2FpdF9mb3Jfd29ya2Vyc190b19iZWNvbWVfcmVhZHkod29ya2VyX3N0YXRlICp3c3RhdGUs CiAJewogCQlpbnQJCQl3b3JrZXJzX3JlYWR5OwogCisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1 cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfV0FJVF9XQUtFVVApOworCiAJCS8qIElmIGFsbCB0aGUgd29ya2VycyBhcmUgcmVhZHks IHdlIGhhdmUgc3VjY2VlZGVkLiAqLwogCQlTcGluTG9ja0FjcXVpcmUoJmhkci0+bXV0ZXgp OwogCQl3b3JrZXJzX3JlYWR5ID0gaGRyLT53b3JrZXJzX3JlYWR5OwpAQCAtMjg2LDExICsy ODksOSBAQCB3YWl0X2Zvcl93b3JrZXJzX3RvX2JlY29tZV9yZWFkeSh3b3JrZXJfc3RhdGUg KndzdGF0ZSwKIAkJCXdlX2Jnd29ya2VyX3N0YXJ0dXAgPSBXYWl0RXZlbnRFeHRlbnNpb25O ZXcoIlRlc3RTaG1NcUJnV29ya2VyU3RhcnR1cCIpOwogCiAJCS8qIFdhaXQgdG8gYmUgc2ln bmFsZWQuICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCSB3ZV9iZ3dvcmtlcl9zdGFydHVwKTsK LQotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoQ2hlY2tGb3JJbnRlcnJ1 cHRzTWFzayB8IElOVEVSUlVQVF9XQUlUX1dBS0VVUCwKKwkJCQkJCQkgV0xfSU5URVJSVVBU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkgd2VfYmd3b3JrZXJfc3RhcnR1 cCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdl cmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobV9tcS90ZXN0LmMKaW5kZXggZmUxNzk0YzYwNzcuLmQ4Njc1YWMxNDIzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYworKysgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwpAQCAtMTQsNyArMTQsNyBAQAog I2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJmbWdyLmgiCi0jaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAiaXBjL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBn c3RhdC5oIgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC0xNzAsNiArMTcwLDggQEAgdGVz dF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJewogCQlib29sCQl3YWl0 ID0gdHJ1ZTsKIAorCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfV0FJVF9XQUtFVVApOwor CiAJCS8qCiAJCSAqIElmIHdlIGhhdmVuJ3QgeWV0IHNlbnQgdGhlIG1lc3NhZ2UgdGhlIHJl cXVpc2l0ZSBudW1iZXIgb2YgdGltZXMsCiAJCSAqIHRyeSBhZ2FpbiB0byBzZW5kIGl0IG5v dy4gIE5vdGUgdGhhdCB3aGVuIHNobV9tcV9zZW5kKCkgcmV0dXJucwpAQCAtMjM0LDEzICsy MzYsMTMgQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkJ CS8qCiAJCQkgKiBJZiB3ZSBtYWRlIG5vIHByb2dyZXNzLCB3YWl0IGZvciBvbmUgb2YgdGhl IG90aGVyIHByb2Nlc3NlcyB0bwotCQkJICogd2hpY2ggd2UgYXJlIGNvbm5lY3RlZCB0byBz ZXQgb3VyIGxhdGNoLCBpbmRpY2F0aW5nIHRoYXQgdGhleQotCQkJICogaGF2ZSByZWFkIG9y IHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBub3cgYmUgd29yawotCQkJ ICogZm9yIHVzIHRvIGRvLgorCQkJICogd2hpY2ggd2UgYXJlIGNvbm5lY3RlZCB0byBzZW5k IHVzIHRoZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAKKwkJCSAqIGludGVycnVwdCwgaW5kaWNh dGluZyB0aGF0IHRoZXkgaGF2ZSByZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQKKwkJCSAqIHRo ZXJlZm9yZSB0aGVyZSBtYXkgbm93IGJlIHdvcmsgZm9yIHVzIHRvIGRvLgogCQkJICovCi0J CQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCi0JCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOwotCQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KENoZWNrRm9ySW50ZXJydXB0 c01hc2sgfCBJTlRFUlJVUFRfV0FJVF9XQUtFVVAsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQg fCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgd2VfbWVzc2FnZV9xdWV1ZSk7 CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oIGIvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9tcS5oCmluZGV4IGI2YTAyOTAyODljLi42ZjA4 MjZiZTM0MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0 X3NobV9tcS5oCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdF9zaG1f bXEuaApAQCAtMjgsNiArMjgsOCBAQAogICovCiB0eXBlZGVmIHN0cnVjdAogeworCVByb2NO dW1iZXIJbGVhZGVyX3Byb2NfbnVtYmVyOworCiAJc2xvY2tfdAkJbXV0ZXg7CiAJaW50CQkJ d29ya2Vyc190b3RhbDsKIAlpbnQJCQl3b3JrZXJzX2F0dGFjaGVkOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKaW5kZXggNmE0MTQ3NTU0YmIuLjJlNzg4MmExMmQx IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKQEAgLTE5LDcgKzE5 LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKLSNpbmNsdWRlICJtaXNjYWRtaW4u aCIKKyNpbmNsdWRlICJpcGMvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2htX21xLmgiCkBAIC01Miw3ICs1Miw2IEBAIHRlc3Rfc2htX21xX21haW4oRGF0dW0gbWFp bl9hcmcpCiAJc2htX21xX2hhbmRsZSAqb3V0cWg7CiAJdm9sYXRpbGUgdGVzdF9zaG1fbXFf aGVhZGVyICpoZHI7CiAJaW50CQkJbXl3b3JrZXJudW1iZXI7Ci0JUEdQUk9DCSAgICpyZWdp c3RyYW50OwogCiAJLyogVW5ibG9jayBzaWduYWxzLiAgVGhlIHN0YW5kYXJkIHNpZ25hbCBo YW5kbGVycyBhcmUgT0sgZm9yIHVzLiAqLwogCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOwpAQCAtMTE2LDEzICsxMTUsNyBAQCB0ZXN0X3NobV9tcV9tYWluKERhdHVtIG1h aW5fYXJnKQogCVNwaW5Mb2NrQWNxdWlyZSgmaGRyLT5tdXRleCk7CiAJKytoZHItPndvcmtl cnNfcmVhZHk7CiAJU3BpbkxvY2tSZWxlYXNlKCZoZHItPm11dGV4KTsKLQlyZWdpc3RyYW50 ID0gQmFja2VuZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7 Ci0JaWYgKHJlZ2lzdHJhbnQgPT0gTlVMTCkKLQl7Ci0JCWVsb2coREVCVUcxLCAicmVnaXN0 cmFudCBiYWNrZW5kIGhhcyBleGl0ZWQgcHJlbWF0dXJlbHkiKTsKLQkJcHJvY19leGl0KDEp OwotCX0KLQlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKwlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9XQUlUX1dBS0VVUCwgaGRyLT5sZWFkZXJfcHJvY19udW1iZXIpOwog CiAJLyogRG8gdGhlIHdvcmsuICovCiAJY29weV9tZXNzYWdlcyhpbnFoLCBvdXRxaCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jIGIv c3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwppbmRleCBkMWU0YTJi ZDk1Mi4uOGY5ZmE5ZTE4MzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2Vy X3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dv cmtlcl9zcGkuYwpAQCAtNCw4ICs0LDggQEAKICAqCQlTYW1wbGUgYmFja2dyb3VuZCB3b3Jr ZXIgY29kZSB0aGF0IGRlbW9uc3RyYXRlcyB2YXJpb3VzIGNvZGluZwogICoJCXBhdHRlcm5z OiBlc3RhYmxpc2hpbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uOyBzdGFydGluZyBhbmQgY29t bWl0dGluZwogICoJCXRyYW5zYWN0aW9uczsgdXNpbmcgR1VDIHZhcmlhYmxlcywgYW5kIGhl ZWRpbmcgU0lHSFVQIHRvIHJlcmVhZAotICoJCXRoZSBjb25maWd1cmF0aW9uIGZpbGU7IHJl cG9ydGluZyB0byBwZ19zdGF0X2FjdGl2aXR5OyB1c2luZyB0aGUKLSAqCQlwcm9jZXNzIGxh dGNoIHRvIHNsZWVwIGFuZCBleGl0IGluIGNhc2Ugb2YgcG9zdG1hc3RlciBkZWF0aC4KKyAq CQl0aGUgY29uZmlndXJhdGlvbiBmaWxlOyByZXBvcnRpbmcgdG8gcGdfc3RhdF9hY3Rpdml0 eTsgdXNpbmcKKyAqCQlXYWl0SW50ZXJydXB0IHRvIHNsZWVwIGFuZCBleGl0IGluIGNhc2Ug b2YgcG9zdG1hc3RlciBkZWF0aC4KICAqCiAgKiBUaGlzIGNvZGUgY29ubmVjdHMgdG8gYSBk YXRhYmFzZSwgY3JlYXRlcyBhIHNjaGVtYSBhbmQgdGFibGUsIGFuZCBzdW1tYXJpemVzCiAg KiB0aGUgbnVtYmVycyBjb250YWluZWQgdGhlcmVpbi4gIFRvIHNlZSBpdCB3b3JraW5nLCBp bnNlcnQgYW4gaW5pdGlhbCB2YWx1ZQpAQCAtMjMsMTAgKzIzLDggQEAKICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCiAvKiBUaGVzZSBhcmUgYWx3YXlzIG5lY2Vzc2FyeSBmb3IgYSBiZ3dv cmtlciAqLwotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImlwYy9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCi0jaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAKIC8q IHRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcidzIGNv ZGUgKi8KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgpAQCAtMTU1LDExICsxNTMsMTAgQEAg d29ya2VyX3NwaV9tYWluKERhdHVtIG1haW5fYXJnKQogCXAgKz0gc2l6ZW9mKE9pZCk7CiAJ bWVtY3B5KCZmbGFncywgcCwgc2l6ZW9mKGJpdHMzMikpOwogCi0JLyogRXN0YWJsaXNoIHNp Z25hbCBoYW5kbGVycyBiZWZvcmUgdW5ibG9ja2luZyBzaWduYWxzLiAqLwotCXBxc2lnbmFs KFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lH VEVSTSwgZGllKTsKLQotCS8qIFdlJ3JlIG5vdyByZWFkeSB0byByZWNlaXZlIHNpZ25hbHMg Ki8KKwkvKgorCSAqIFRoZSBzdGFuZGFyZCBpbnRlcnJ1cHQgYW5kIHNpZ25hbCBoYW5kbGVy cyBhcmUgT0sgZm9yIHVzOyB1bmJsb2NrCisJICogc2lnbmFscy4KKwkgKi8KIAlCYWNrZ3Jv dW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKIAogCS8qIENvbm5lY3QgdG8gb3VyIGRhdGFi YXNlICovCkBAIC0yMTMsMjYgKzIxMCwyNSBAQCB3b3JrZXJfc3BpX21haW4oRGF0dW0gbWFp bl9hcmcpCiAKIAkJLyoKIAkJICogQmFja2dyb3VuZCB3b3JrZXJzIG11c3RuJ3QgY2FsbCB1 c2xlZXAoKSBvciBhbnkgZGlyZWN0IGVxdWl2YWxlbnQ6Ci0JCSAqIGluc3RlYWQsIHRoZXkg bWF5IHdhaXQgb24gdGhlaXIgcHJvY2VzcyBsYXRjaCwgd2hpY2ggc2xlZXBzIGFzCi0JCSAq IG5lY2Vzc2FyeSwgYnV0IGlzIGF3YWtlbmVkIGlmIHBvc3RtYXN0ZXIgZGllcy4gIFRoYXQg d2F5IHRoZQotCQkgKiBiYWNrZ3JvdW5kIHByb2Nlc3MgZ29lcyBhd2F5IGltbWVkaWF0ZWx5 IGluIGFuIGVtZXJnZW5jeS4KKwkJICogaW5zdGVhZCwgdGhleSBtYXkgdXNlIFdhaXRJbnRl cnJ1cHQsIHdoaWNoIHNsZWVwcyBhcyBuZWNlc3NhcnksIGJ1dAorCQkgKiBpcyBhd2FrZW5l ZCBpZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdheSB0aGUgYmFja2dyb3VuZCBwcm9jZXNz CisJCSAqIGdvZXMgYXdheSBpbW1lZGlhdGVseSBpbiBhbiBlbWVyZ2VuY3kuCiAJCSAqLwot CQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgd29ya2VyX3NwaV9uYXB0 aW1lICogMTAwMEwsCi0JCQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21haW4pOwotCQlS ZXNldExhdGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChDaGVja0Zvcklu dGVycnVwdHNNYXNrIHwKKwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCisJCQkJ CQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJCSB3b3JrZXJfc3BpX25hcHRpbWUgKiAxMDAwTCwKKwkJCQkJCQkgd29ya2VyX3Nw aV93YWl0X2V2ZW50X21haW4pOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJ LyoKLQkJICogSW4gY2FzZSBvZiBhIFNJR0hVUCwganVzdCByZWxvYWQgdGhlIGNvbmZpZ3Vy YXRpb24uCisJCSAqIFJlbG9hZCBjb25maWd1cmF0aW9uIGlmIHJlcXVlc3RlZC4gIFRoaXMg aXMgbm90IGRvbmUgYnkKKwkJICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBiZWNhdXNlIHdl IG9ubHkgd2FudCBpdCB0byBoYXBwZW4gaGVyZSBpbgorCQkgKiB0aGUgbWFpbiBsb29wLgog CQkgKi8KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NP TkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0K IAogCQkvKgogCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHdoaWNoIHdlIGNhbiBydW4g cXVlcmllcy4gIE5vdGUgdGhhdCBlYWNoCkBAIC0zNjYsNyArMzYyLDYgQEAgX1BHX2luaXQo dm9pZCkKIAl3b3JrZXIuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwog CXNwcmludGYod29ya2VyLmJnd19saWJyYXJ5X25hbWUsICJ3b3JrZXJfc3BpIik7CiAJc3By aW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJ3b3JrZXJfc3BpX21haW4iKTsKLQl3 b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOwogCiAJLyoKIAkgKiBOb3cgZmlsbCBpbiB3b3Jr ZXItc3BlY2lmaWMgZGF0YSwgYW5kIGRvIHRoZSBhY3R1YWwgcmVnaXN0cmF0aW9ucy4KQEAg LTQyMCw4ICs0MTUsNiBAQCB3b3JrZXJfc3BpX2xhdW5jaChQR19GVU5DVElPTl9BUkdTKQog CXNucHJpbnRmKHdvcmtlci5iZ3dfbmFtZSwgQkdXX01BWExFTiwgIndvcmtlcl9zcGkgZHlu YW1pYyB3b3JrZXIgJWQiLCBpKTsKIAlzbnByaW50Zih3b3JrZXIuYmd3X3R5cGUsIEJHV19N QVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFtaWMiKTsKIAl3b3JrZXIuYmd3X21haW5fYXJnID0g SW50MzJHZXREYXR1bShpKTsKLQkvKiBzZXQgYmd3X25vdGlmeV9waWQgc28gdGhhdCB3ZSBj YW4gdXNlIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU3RhcnR1cCAqLwotCXdvcmtlci5iZ3df bm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAogCS8qIGV4dHJhY3QgZmxhZ3MsIGlmIGFueSAq LwogCW5kaW0gPSBBUlJfTkRJTShhcnIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCAyNDE5NDU3MzRlYy4uOWE1ZDhhYzEwZTkgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CkBAIC0xMzI3LDYgKzEzMjcsNyBAQCBJbnRlZ2VyCiBJbnRlZ2VyU2V0CiBJbnRl cm5hbERlZmF1bHRBQ0wKIEludGVybmFsR3JhbnQKK0ludGVycnVwdE1hc2sKIEludGVydmFs CiBJbnRlcnZhbEFnZ1N0YXRlCiBJbnRvQ2xhdXNlCkBAIC0xNTY0LDcgKzE1NjUsNiBAQCBM WjRTdGF0ZQogTGFiZWxQcm92aWRlcgogTGFnVHJhY2tlcgogTGFyZ2VPYmplY3REZXNjCi1M YXRjaAogTGF1bmNoZXJMYXN0U3RhcnRUaW1lc0VudHJ5CiBMZXJwRnVuYwogTGV4RGVzY3IK QEAgLTIwMjgsNiArMjAyOCw3IEBAIFBMeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemVfdAog UEx5X2Vsb2dfaW1wbF90CiBQTUNoaWxkCiBQTUNoaWxkUG9vbAorUE1DaGlsZFNsb3REYXRh CiBQTUlOSURVTVBfQ0FMTEJBQ0tfSU5GT1JNQVRJT04KIFBNSU5JRFVNUF9FWENFUFRJT05f SU5GT1JNQVRJT04KIFBNSU5JRFVNUF9VU0VSX1NUUkVBTV9JTkZPUk1BVElPTgotLSAKMi40 Ny4zCgo= --------------Xsr2PBMWcn0m5VqN9pqECXzS Content-Type: text/x-patch; charset=UTF-8; name="v11-0004-Introduce-PendingInterrupts-with-separate-flags-.patch" Content-Disposition: attachment; filename*0="v11-0004-Introduce-PendingInterrupts-with-separate-flags-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4OTI3ZTY5NWE1NmUxNWQ0MTJjMzM5MTVkZTExYjNhNDYxMGI0NzYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjAgRmViIDIwMjYgMTY6MTQ6MDkgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxMSA0LzRdIEludHJvZHVjZSBQZW5kaW5nSW50ZXJydXB0cyB3 aXRoIHNlcGFyYXRlICdmbGFncycKIGZpZWxkIGFuZCAiYXR0ZW50aW9uIgoKVGhpcyBkb2Vz IGEgY291cGxlIG9mIHRoaW5nczoKCi0gU3BsaXQgdGhlIGludGVycnVwdHMgbWFzayBpbnRv IHR3byAzMi1iaXQgZmllbGRzIG9uCiAgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVMQVRJT04g c3lzdGVtcy4gVGhpcyBmaXhlcyB0aGUgc2VsZi1kZWFkbG9jawogIHJpc2sgd2hlbiB1c2Vk IGZyb20gc2lnbmFsIGhhbmRsZXJzLgoKLSBJbnRyb2R1Y2UgYW4gImF0dGVudGlvbiBtYXNr IiBmaWVsZCwgd2hlcmUgdGhlIGJhY2tlbmQgY2FuIGFkdmVydGlzZQogIHRoZSBpbnRlcnJ1 cHRzIGl0IGlzIGN1cnJlbnRseSBpbnRlcmVzdGVkIGluLCBhbmQgYSBzZXBhcmF0ZSAiZmxh Z3MiCiAgZmllbGQuIFdlIG5vIGxvbmdlciBuZWVkIHRvIHN0ZWFsIGJpdHMgZnJvbSB0aGUg aW50ZXJydXB0IG1hc2sgZm9yCiAgdGhlIGZsYWdzLgoKICBXaGVuZXZlciBhIGJhY2tlbmQg c2VuZHMgYW4gaW50ZXJydXB0LCBpdCBjaGVja3MgdGhlIGF0dGVudGlvbiBtYXNrCiAgYW5k IG9ubHkgd2FrZXMgdXAgdGhlIGJhY2tlbmQgaWYgdGhlIGludGVycnVwdCBpcyBpbiB0aGUg YXR0ZW50aW9uCiAgbWFzay4gV2hlbiBub3Qgc2xlZXBpbmcsIHRoZSBzYW1lIG1lY2hhbmlz bSBpcyB1c2VkIHRvIHNldCBhIGZsYWcKICBmb3IgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwg dGVsbGluZyB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpCiAgdGhhdCBpdCBoYXMg c29tZSB3b3JrIHRvIGRvLiBCeSBtb3ZpbmcgdGhhdCB3b3JrIG9mIGNoZWNraW5nIHRoZQog IGF0dGVudGlvbiBtYXNrIHRvIHRoZSBzZW5kZXIsIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkg bmVlZHMgZmV3ZXIKICBpbnN0cnVjdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdkb2luc2VydC5jIHwgICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2lwYy9pbnRlcnJ1cHQuYyAg ICAgICAgICAgICB8IDMxNyArKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjLmMgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy93YWl0ZXZlbnRzZXQuYyAgfCAgNTggKystLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC91dGlscy9lcnJvci9l bG9nLmMgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaCAg ICAgICAgICAgICB8IDM4MyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRl L2lwYy9zdGFuZGFyZF9pbnRlcnJ1cHRzLmggICB8IDE5NCArKysrKysrKysrKysKIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgIHwgICAxICsKIDExIGZpbGVzIGNoYW5n ZWQsIDYzNCBpbnNlcnRpb25zKCspLCAzNTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvaXBjL3N0YW5kYXJkX2ludGVycnVwdHMuaAoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwppbmRleCBiOGI1ZWFhYzU3YS4uN2M3 MzcxYzY5ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9p bnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5zZXJ0LmMK QEAgLTIwMzUsMTEgKzIwMzUsOCBAQCBzcGdkb2luc2VydChSZWxhdGlvbiBpbmRleCwgU3BH aXN0U3RhdGUgKnN0YXRlLAogCQkgKiBwZW5kaW5nLCBicmVhayBvdXQgb2YgdGhlIGxvb3Ag YW5kIGRlYWwgd2l0aCB0aGUgc2l0dWF0aW9uIGJlbG93LgogCQkgKiBTZXQgcmVzdWx0ID0g ZmFsc2UgYmVjYXVzZSB3ZSBtdXN0IHJlc3RhcnQgdGhlIGluc2VydGlvbiBpZiB0aGUKIAkJ ICogaW50ZXJydXB0IGlzbid0IGEgcXVlcnktY2FuY2VsLW9yLWRpZSBjYXNlLgotCQkgKgot CQkgKiBGSVhNRTogQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayBjb3ZlcnMgbW9yZSB0aGFuIGp1 c3QgcXVlcnkgY2FuY2VsCi0JCSAqIGFuZCBkaWUuICBDb3VsZCB3ZSBiZSBtb3JlIHByZWNp c2UgaGVyZT8KIAkJICovCi0JCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKENo ZWNrRm9ySW50ZXJydXB0c01hc2spKQorCQlpZiAoSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJ VElPTigpKQogCQl7CiAJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCWJyZWFrOwpAQCAtMjE2NSw3 ICsyMTYyLDcgQEAgc3BnZG9pbnNlcnQoUmVsYXRpb24gaW5kZXgsIFNwR2lzdFN0YXRlICpz dGF0ZSwKIAkJCSAqIHJlcGVhdGVkbHksIGNoZWNrIGZvciBxdWVyeSBjYW5jZWwgKHNlZSBj b21tZW50cyBhYm92ZSkuCiAJCQkgKi8KIAlwcm9jZXNzX2lubmVyX3R1cGxlOgotCQkJaWYg KElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykp CisJCQlpZiAoSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpKQogCQkJewogCQkJCXJl c3VsdCA9IGZhbHNlOwogCQkJCWJyZWFrOwpAQCAtMjM0MSw3ICsyMzM4LDcgQEAgc3BnZG9p bnNlcnQoUmVsYXRpb24gaW5kZXgsIFNwR2lzdFN0YXRlICpzdGF0ZSwKIAkgKiB3ZXJlIHRo ZSBjYXNlLCB0ZWxsaW5nIHRoZSBjYWxsZXIgdG8gcmV0cnkgd291bGQgY3JlYXRlIGFuIGlu ZmluaXRlCiAJICogbG9vcC4KIAkgKi8KLQlBc3NlcnQoSU5URVJSVVBUU19DQU5fQkVfUFJP Q0VTU0VEKENoZWNrRm9ySW50ZXJydXB0c01hc2spKTsKKwlBc3NlcnQoSU5URVJSVVBUU19D QU5fQkVfUFJPQ0VTU0VEKCkpOwogCiAJLyoKIAkgKiBGaW5hbGx5LCBjaGVjayBmb3IgaW50 ZXJydXB0cyBhZ2Fpbi4gIElmIHRoZXJlIHdhcyBhIHF1ZXJ5IGNhbmNlbCwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDY1YzQ2N2YyNWY5Li40ODUzZmMw MWZiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC0yMzcs NyArMjM3LDcgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4 dCkKIAkgKiBXZSBjYW4gZGVhbCB3aXRoIHRoYXQgZWRnZSBjYXNlIGJ5IHByZXRlbmRpbmcg bm8gd29ya2VycyB3ZXJlCiAJICogcmVxdWVzdGVkLgogCSAqLwotCWlmICghSU5URVJSVVBU U19DQU5fQkVfUFJPQ0VTU0VEKENoZWNrRm9ySW50ZXJydXB0c01hc2spKQorCWlmICghSU5U RVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkpCiAJCXBjeHQtPm53b3JrZXJzID0gMDsKIAog CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMgYi9zcmMvYmFj a2VuZC9pcGMvaW50ZXJydXB0LmMKaW5kZXggNjFkMTQ4NDA5YmMuLmNmOTAxZWIxZDlkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9pcGMvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tl bmQvaXBjL2ludGVycnVwdC5jCkBAIC0yMiwyOSArMjIsMTggQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogCisKKy8qIFZhcmlh YmxlcyBmb3IgdGhlIGhvbGRvZmYgbWVjaGFuaXNtICovCit1aW50MzIJCUludGVycnVwdEhv bGRvZmZDb3VudCA9IDA7Cit1aW50MzIJCUNyaXRTZWN0aW9uQ291bnQgPSAwOworCiAvKgog ICogQ3VycmVudGx5IGluc3RhbGxlZCBpbnRlcnJ1cHQgaGFuZGxlcnMKICAqLwogc3RhdGlj IHBnX2ludGVycnVwdF9oYW5kbGVyX3QgaW50ZXJydXB0X2hhbmRsZXJzWzY0XTsKIAotLyoK LSAqIFhYWDogaXMgJ3ZvbGF0aWxlJyBzdGlsbCBuZWVkZWQgb24gYWxsIHRoZSB2YXJpYWJs ZXMgYmVsb3c/IFdoaWNoIG9uZXMgYXJlCi0gKiBhY2Nlc3NlZCBmcm9tIHNpZ25hbCBoYW5k bGVycz8KLSAqLwotCiAvKiBCaXRtYXNrIG9mIGN1cnJlbnRseSBlbmFibGVkIGludGVycnVw dHMgKi8KLXZvbGF0aWxlIEludGVycnVwdE1hc2sgRW5hYmxlZEludGVycnVwdHNNYXNrOwot Ci0vKgotICogSW50ZXJydXB0cyB0aGF0IHdvdWxkIGJlIHByb2Nlc3NlZCBieSBDSEVDS19G T1JfSU5URVJSVVBUUygpLiAgVGhpcyBpcwotICogZXF1YWwgdG8gRW5hYmxlZEludGVycnVw dHNNYXNrLCBleGNlcHQgd2hlbiBpbnRlcnJ1cHRzIGFyZSBoZWxkIG9mZiBieQotICogSE9M RC9SRVNVTUVfSU5URVJSVVBUUygpIG9yIGEgY3JpdGljYWwgc2VjdGlvbi4KLSAqLwotdm9s YXRpbGUgSW50ZXJydXB0TWFzayBDaGVja0ZvckludGVycnVwdHNNYXNrOwotCi0vKiBWYXJp YWJsZXMgZm9yIGhvbGRvZmYgbWVjaGFuaXNtICovCi12b2xhdGlsZSB1aW50MzIgSW50ZXJy dXB0SG9sZG9mZkNvdW50ID0gMDsKLXZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50 ID0gMDsKK0ludGVycnVwdE1hc2sgRW5hYmxlZEludGVycnVwdHNNYXNrOwogCiAvKiBBIGNv bW1vbiBXYWl0RXZlbnRTZXQgdXNlZCB0byBpbXBsZW1lbnQgV2FpdEludGVycnVwdCgpICov CiBzdGF0aWMgV2FpdEV2ZW50U2V0ICpJbnRlcnJ1cHRXYWl0U2V0OwpAQCAtNTMsOSArNDIs MTAgQEAgc3RhdGljIFdhaXRFdmVudFNldCAqSW50ZXJydXB0V2FpdFNldDsKICNkZWZpbmUg SW50ZXJydXB0V2FpdFNldEludGVycnVwdFBvcyAwCiAjZGVmaW5lIEludGVycnVwdFdhaXRT ZXRQb3N0bWFzdGVyRGVhdGhQb3MgMQogCi1zdGF0aWMgcGdfYXRvbWljX3VpbnQ2NCBMb2Nh bFBlbmRpbmdJbnRlcnJ1cHRzOwotCi1wZ19hdG9taWNfdWludDY0ICpNeVBlbmRpbmdJbnRl cnJ1cHRzID0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHM7CitzdGF0aWMgUGVuZGluZ0ludGVy cnVwdHMgTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKK1BlbmRpbmdJbnRlcnJ1cHRzICpNeVBl bmRpbmdJbnRlcnJ1cHRzID0gJkxvY2FsUGVuZGluZ0ludGVycnVwdHM7CitwZ19hdG9taWNf dWludDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRzRmxhZ3MgPSAmTG9jYWxQZW5kaW5nSW50ZXJy dXB0cy5mbGFnczsKK2NvbnN0IHBnX2F0b21pY191aW50MzIgWmVyb1BlbmRpbmdJbnRlcnJ1 cHRzRmxhZ3M7CiAKIHN0YXRpYyBpbnQJbmV4dEFkZGluSW50ZXJydXB0Qml0ID0gQkVHSU5f QURESU5fSU5URVJSVVBUUzsKIApAQCAtOTQsMTAgKzg0LDggQEAgRW5hYmxlSW50ZXJydXB0 KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIAkJCUFzc2VydChpbnRlcnJ1cHRfaGFu ZGxlcnNbaV0gIT0gTlVMTCk7CiAJfQogI2VuZGlmCi0KIAlFbmFibGVkSW50ZXJydXB0c01h c2sgfD0gaW50ZXJydXB0TWFzazsKLQlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAg JiYgQ3JpdFNlY3Rpb25Db3VudCA9PSAwKQotCQlDaGVja0ZvckludGVycnVwdHNNYXNrID0g RW5hYmxlZEludGVycnVwdHNNYXNrOworCVNldEludGVycnVwdEF0dGVudGlvbk1hc2soRW5h YmxlZEludGVycnVwdHNNYXNrKTsKIH0KIAogLyoKQEAgLTExMiw2NyArMTAwLDE3MyBAQCB2 b2lkCiBEaXNhYmxlSW50ZXJydXB0KEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIHsK IAlFbmFibGVkSW50ZXJydXB0c01hc2sgJj0gfmludGVycnVwdE1hc2s7CisjaWZuZGVmIFBH X0hBVkVfQVRPTUlDX1U2NF9TSU1VTEFUSU9OCisJcGdfYXRvbWljX3dyaXRlX3U2NCgmTXlQ ZW5kaW5nSW50ZXJydXB0cy0+YXR0ZW50aW9uX21hc2ssIEVuYWJsZWRJbnRlcnJ1cHRzTWFz ayk7CisjZWxzZQorCXBnX2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVycnVwdHMt PmF0dGVudGlvbl9tYXNrX2xvLCAodWludDMyKSBFbmFibGVkSW50ZXJydXB0c01hc2spOwor CXBnX2F0b21pY193cml0ZV91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPmF0dGVudGlvbl9t YXNrX2hpLCAodWludDMyKSAoRW5hYmxlZEludGVycnVwdHNNYXNrID4+IDMyKSk7CisjZW5k aWYKKworCS8qCisJICogTm90ZTogdGhlIEFUVEVOVElPTiBmbGFnIG1pZ2h0IG5vdyBiZSB1 bm5lY2Vzc2FyaWx5IHNldC4gV2UgZG9uJ3QgdHJ5CisJICogdG8gY2xlYXIgaXQgaGVyZSwg dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4K KwkgKi8KK30KKworLyoKKyAqIFJlc2V0IEludGVycnVwdEhvbGRvZmZDb3VudCBhbmQgQ3Jp dFNlY3Rpb25Db3VudCB0byBnaXZlbiB2YWx1ZXMuICBVc2VkCisgKiB3aGVuIHJlY292ZXJp bmcgZnJvbSBhbiBlcnJvci4KKyAqLwordm9pZAorUmVzZXRJbnRlcnJ1cHRIb2xkb2ZmQ291 bnRzKHVpbnQzMiBuZXdfaG9sZG9mZl9jb3VudCwgdWludDMyIG5ld19jcml0X3NlY3Rpb25f Y291bnQpCit7CisJSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gbmV3X2hvbGRvZmZfY291bnQ7 CisJQ3JpdFNlY3Rpb25Db3VudCA9IG5ld19jcml0X3NlY3Rpb25fY291bnQ7CiAJaWYgKElu dGVycnVwdEhvbGRvZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKLQkJ Q2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9IEVuYWJsZWRJbnRlcnJ1cHRzTWFzazsKKwkJTXlQ ZW5kaW5nSW50ZXJydXB0c0ZsYWdzID0gJk15UGVuZGluZ0ludGVycnVwdHMtPmZsYWdzOwor CWVsc2UKKwkJTXlQZW5kaW5nSW50ZXJydXB0c0ZsYWdzID0gdW5jb25zdGlmeShwZ19hdG9t aWNfdWludDMyICosICZaZXJvUGVuZGluZ0ludGVycnVwdHNGbGFncyk7CiB9CiAKIC8qCiAg KiBQcm9jZXNzSW50ZXJydXB0czogb3V0LW9mLWxpbmUgcG9ydGlvbiBvZiBDSEVDS19GT1Jf SU5URVJSVVBUUygpIG1hY3JvCiAgKgotICogSWYgYW4gaW50ZXJydXB0IGNvbmRpdGlvbiBp cyBwZW5kaW5nLCBhbmQgaXQncyBzYWZlIHRvIHNlcnZpY2UgaXQsCi0gKiB0aGVuIGNsZWFy IHRoZSBmbGFnIGFuZCBjYWxsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4KKyAqIElmIGFuIGlu dGVycnVwdCBjb25kaXRpb24gaXMgcGVuZGluZywgYW5kIGl0J3Mgc2FmZSB0byBzZXJ2aWNl IGl0LCB0aGVuCisgKiBjbGVhciB0aGUgZmxhZyBhbmQgY2FsbCB0aGUgaW50ZXJydXB0IGhh bmRsZXIuCiAgKgotICogTm90ZTogaWYgSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKGlu dGVycnVwdCkgaXMgdHJ1ZSwgdGhlbgotICogUHJvY2Vzc0ludGVycnVwdHMgaXMgZ3VhcmFu dGVlZCB0byBjbGVhciB0aGUgZ2l2ZW4gaW50ZXJydXB0IGJlZm9yZQotICogcmV0dXJuaW5n LCBpZiBpdCB3YXMgc2V0IHdoZW4gZW50ZXJpbmcuICAoVGhpcyBpcyBub3QgdGhlIHNhbWUg YXMKLSAqIGd1YXJhbnRlZWluZyB0aGF0IGl0J3Mgc3RpbGwgY2xlYXIgd2hlbiB3ZSByZXR1 cm47IGFub3RoZXIgaW50ZXJydXB0IGNvdWxkCi0gKiBoYXZlIGFycml2ZWQuICBCdXQgd2Ug cHJvbWlzZSB0aGF0IGFueSBwcmUtZXhpc3Rpbmcgb25lIHdpbGwgaGF2ZSBiZWVuCi0gKiBz ZXJ2aWNlZC4pCisgKiBOb3RlOiBpZiBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBp cyB0cnVlLCBQcm9jZXNzSW50ZXJydXB0cygpIGlzCisgKiBndWFyYW50ZWVkIHRvIGNsZWFy IGFsbCB0aGUgZW5hYmxlZCBpbnRlcnJ1cHRzIGJlZm9yZSByZXR1cm5pbmcuICAoVGhpcyBp cworICogbm90IHRoZSBzYW1lIGFzIGd1YXJhbnRlZWluZyB0aGF0IGl0J3Mgc3RpbGwgY2xl YXIgd2hlbiB3ZSByZXR1cm47IGFub3RoZXIKKyAqIGludGVycnVwdCBjb3VsZCBoYXZlIGFy cml2ZWQuICBCdXQgd2UgcHJvbWlzZSB0aGF0IGFueSBwcmUtZXhpc3Rpbmcgb25lCisgKiB3 aWxsIGhhdmUgYmVlbiBzZXJ2aWNlZC4pCiAgKi8KIHZvaWQKIFByb2Nlc3NJbnRlcnJ1cHRz KHZvaWQpCiB7CisJdWludDY0CQlwZW5kaW5nOwogCUludGVycnVwdE1hc2sgaW50ZXJydXB0 c1RvUHJvY2VzczsKIAotCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBD cml0U2VjdGlvbkNvdW50ID09IDApOworCUFzc2VydChJTlRFUlJVUFRTX0NBTl9CRV9QUk9D RVNTRUQoKSk7CisJQXNzZXJ0KChwZ19hdG9taWNfcmVhZF91MzIoJk15UGVuZGluZ0ludGVy cnVwdHMtPmZsYWdzKSAmIFBJX0ZMQUdfU0xFRVBJTkcpID09IDApOworCisJLyoKKwkgKiBD bGVhciB0aGUgQVRURU5USU9OIGZsYWcgZmlyc3QuIFRoaXMgZW5zdXJlcyB0aGF0IGlmIGFu eSBpbnRlcnJ1cHRzIGFyZQorCSAqIHJlY2VpdmVkIHdoaWxlIHdlJ3JlIHByb2Nlc3Npbmcs IHRoZSBmbGFnIGlzIHNldCBhZ2Fpbi4KKwkgKi8KKwkodm9pZCkgcGdfYXRvbWljX3dyaXRl X3UzMigmTXlQZW5kaW5nSW50ZXJydXB0cy0+ZmxhZ3MsIDApOworCisJLyoKKwkgKiBNYWtl IHN1cmUgb3RoZXJzIHNlZSB0aGUgY2xlYXJpbmcgb2YgdGhlIGZsYWdzLCBiZWZvcmUgd2Ug cmVhZCB0aGUKKwkgKiBwZW5kaW5nIGludGVycnVwdHMuCisJICovCisJcGdfbWVtb3J5X2Jh cnJpZXIoKTsKIAogCS8qIENoZWNrIG9uY2Ugd2hhdCBpbnRlcnJ1cHRzIGFyZSBwZW5kaW5n ICovCi0JaW50ZXJydXB0c1RvUHJvY2VzcyA9Ci0JCXBnX2F0b21pY19yZWFkX3U2NChNeVBl bmRpbmdJbnRlcnJ1cHRzKSAmIENoZWNrRm9ySW50ZXJydXB0c01hc2s7CisjaWZuZGVmIFBH X0hBVkVfQVRPTUlDX1U2NF9TSU1VTEFUSU9OCisJcGVuZGluZyA9IHBnX2F0b21pY19yZWFk X3U2NCgmTXlQZW5kaW5nSW50ZXJydXB0cy0+aW50ZXJydXB0cyk7CisjZWxzZQorCXBlbmRp bmcgPSAodWludDY0KSBwZ19hdG9taWNfcmVhZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMt PmludGVycnVwdHNfbG8pOworCXBlbmRpbmcgfD0gKHVpbnQ2NCkgcGdfYXRvbWljX3JlYWRf dTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5pbnRlcnJ1cHRzX2hpKSA8PCAzMjsKKyNlbmRp ZgorCWludGVycnVwdHNUb1Byb2Nlc3MgPSBwZW5kaW5nICYgRW5hYmxlZEludGVycnVwdHNN YXNrOwogCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhvZihpbnRlcnJ1cHRfaGFuZGxl cnMpOyBpKyspCisJaWYgKGludGVycnVwdHNUb1Byb2Nlc3MgIT0gMCkKIAl7Ci0JCWlmICgo aW50ZXJydXB0c1RvUHJvY2VzcyAmIFVJTlQ2NF9CSVQoaSkpICE9IDApCisJCUFzc2VydChJ bnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDApOwor CisJCS8qIEludGVycnVwdCBoYW5kbGVycyBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIHJlLWVu dHJhbnQuICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCWZvciAoaW50IGkgPSAwOyBp IDwgbGVuZ3Rob2YoaW50ZXJydXB0X2hhbmRsZXJzKTsgaSsrKQogCQl7Ci0JCQkvKgotCQkJ ICogQ2xlYXIgdGhlIGludGVycnVwdCAqYmVmb3JlKiBjYWxsaW5nIHRoZSBoYW5kbGVyIGZ1 bmN0aW9uLCBzbwotCQkJICogdGhhdCBpZiB0aGUgaW50ZXJydXB0IGlzIHJlY2VpdmVkIGFn YWluIHdoaWxlIHRoZSBoYW5kbGVyCi0JCQkgKiBmdW5jdGlvbiBpcyBiZWluZyBleGVjdXRl ZCwgd2Ugd29uJ3QgbWlzcyBpdC4KLQkJCSAqCi0JCQkgKiBGb3Igc2ltaWxhciByZWFzb25z LCB3ZSBhbHNvIGNsZWFyIHRoZSBmbGFncyBvbmUgYnkgb25lIGV2ZW4gaWYKLQkJCSAqIG11 bHRpcGxlIGludGVycnVwdHMgYXJlIHBlbmRpbmcuICBPdGhlcndpc2UgaWYgb25lIG9mIHRo ZQotCQkJICogaW50ZXJydXB0IGhhbmRsZXJzIGJhaWwgb3V0IHdpdGggYW4gRVJST1IsIHdl IHdvdWxkIGhhdmUKLQkJCSAqIGFscmVhZHkgY2xlYXJlZCB0aGUgb3RoZXIgYml0cywgYW5k IHdvdWxkIG1pc3MgcHJvY2Vzc2luZyB0aGVtLgotCQkJICovCi0JCQlDbGVhckludGVycnVw dChVSU5UNjRfQklUKGkpKTsKLQotCQkJLyogQ2FsbCB0aGUgaGFuZGxlciBmdW5jdGlvbiAq LwotCQkJKCppbnRlcnJ1cHRfaGFuZGxlcnNbaV0pICgpOworCQkJaWYgKChpbnRlcnJ1cHRz VG9Qcm9jZXNzICYgVUlOVDY0X0JJVChpKSkgIT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAq IENsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2FsbGluZyB0aGUgaGFuZGxlciBmdW5j dGlvbiwKKwkJCQkgKiBzbyB0aGF0IGlmIHRoZSBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQgYWdh aW4gd2hpbGUgdGhlCisJCQkJICogaGFuZGxlciBmdW5jdGlvbiBpcyBiZWluZyBleGVjdXRl ZCwgd2Ugd29uJ3QgbWlzcyBpdC4KKwkJCQkgKgorCQkJCSAqIEZvciBzaW1pbGFyIHJlYXNv bnMsIHdlIGFsc28gY2xlYXIgdGhlIGZsYWdzIG9uZSBieSBvbmUKKwkJCQkgKiBldmVuIGlm IG11bHRpcGxlIGludGVycnVwdHMgYXJlIHBlbmRpbmcuICBPdGhlcndpc2UgaWYgb25lCisJ CQkJICogb2YgdGhlIGludGVycnVwdCBoYW5kbGVycyBiYWlsIG91dCB3aXRoIGFuIEVSUk9S LCB3ZSB3b3VsZAorCQkJCSAqIGhhdmUgYWxyZWFkeSBjbGVhcmVkIHRoZSBvdGhlciBiaXRz LCBhbmQgd291bGQgbWlzcworCQkJCSAqIHByb2Nlc3NpbmcgdGhlbS4KKwkJCQkgKi8KKwkJ CQlDbGVhckludGVycnVwdChVSU5UNjRfQklUKGkpKTsKKworCQkJCS8qIENhbGwgdGhlIGhh bmRsZXIgZnVuY3Rpb24gKi8KKwkJCQkoKmludGVycnVwdF9oYW5kbGVyc1tpXSkgKCk7CisJ CQl9CiAJCX0KKworCQlSRVNVTUVfSU5URVJSVVBUUygpOwogCX0KKworCS8qCisJICogSWYg d2UgZ2V0IGhlcmUsIHdlIHByb2Nlc3NlZCBhbGwgdGhlIGludGVycnVwdHMgdGhhdCB3ZXJl IHBlbmRpbmcgd2hlbgorCSAqIHdlIHN0YXJ0ZWQuICBJZiBhbnkgbmV3IGludGVycnVwdHMg YXJyaXZlZCB3aGlsZSB3ZSB3ZXJlIHByb2Nlc3NpbmcsCisJICogdGhleSBtdXN0J3ZlIHNl dCB0aGUgQVRURU5USU9OIGZsYWcgYWdhaW4gc28gd2UnbGwgZ2V0IGJhY2sgaGVyZSBvbiB0 aGUKKwkgKiBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisJICovCiB9CiAKIC8qCi0g KiBTd2l0Y2ggdG8gbG9jYWwgaW50ZXJydXB0cy4gIE90aGVyIGJhY2tlbmRzIGNhbid0IHNl bmQgaW50ZXJydXB0cyB0byB0aGlzCi0gKiBvbmUuICBPbmx5IFJhaXNlSW50ZXJydXB0KCkg Y2FuIHNldCB0aGVtLCBmcm9tIGluc2lkZSB0aGlzIHByb2Nlc3MuCisgKiBVcGRhdGUgTXlQ ZW5kaW5nSW50ZXJydXB0cy0+YXR0ZW50aW9uX21hc2ssIHNldHRpbmcgUElfRkxBR19BVFRF TlRJT04gaWYKKyAqIGFueSBvZiB0aGUgaW50ZXJydXB0cyBpbiB0aGUgbmV3IG1hc2sgYXJl IGFscmVhZHkgcGVuZGluZy4gIFRoaXMgc2hvdWxkIGJlCisgKiBjYWxsZWQgZXZlcnkgdGlt ZSBhZnRlciBlbmFibGluZyBuZXcgYml0cyBpbiBFbmFibGVkSW50ZXJydXB0c01hc2ssIHNv IHRoYXQKKyAqIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgd2lsbCByZWFjdCBj b3JyZWN0bHkgdG8gdGhlIG5ld2x5IGVuYWJsZWQKKyAqIGludGVycnVwdHMuCiAgKi8KIHZv aWQKLVN3aXRjaFRvTG9jYWxJbnRlcnJ1cHRzKHZvaWQpCitTZXRJbnRlcnJ1cHRBdHRlbnRp b25NYXNrKEludGVycnVwdE1hc2sgbWFzaykKK3sKKwkvKgorCSAqIFRoaXMgc2hvdWxkIG5v dCBiZSBjYWxsZWQgd2hpbGUgc2xlZXBpbmcuIE5vIG90aGVyIHByb2Nlc3Mgc2V0cyB0aGUK KwkgKiBmbGFnLCBzbyB3aGVuIHdlIGNsZWFyL3NldCAnZmxhZ3MnIGJlbG93LCB3ZSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0CisJICogb3ZlcndyaXRpbmcgaXQuCisJICovCisJQXNz ZXJ0KChwZ19hdG9taWNfcmVhZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPmZsYWdzKSAm IFBJX0ZMQUdfU0xFRVBJTkcpID09IDApOworCisjaWZuZGVmIFBHX0hBVkVfQVRPTUlDX1U2 NF9TSU1VTEFUSU9OCisJcGdfYXRvbWljX3dyaXRlX3U2NCgmTXlQZW5kaW5nSW50ZXJydXB0 cy0+YXR0ZW50aW9uX21hc2ssIG1hc2spOworI2Vsc2UKKwlwZ19hdG9taWNfd3JpdGVfdTMy KCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFza19sbywgKHVpbnQzMikgbWFz ayk7CisJcGdfYXRvbWljX3dyaXRlX3UzMigmTXlQZW5kaW5nSW50ZXJydXB0cy0+YXR0ZW50 aW9uX21hc2tfaGksICh1aW50MzIpIChtYXNrID4+IDMyKSk7CisjZW5kaWYKKworCS8qCisJ ICogTWFrZSBzdXJlIG90aGVyIHByb2Nlc3NlcyBzZWUgdGhlIHVwZGF0ZWQgYXR0ZW50aW9u X21hc2sgYmVmb3JlIHdlIHJlYWQKKwkgKiB0aGUgaW50ZXJydXB0cyB0aGF0IGFyZSBjdXJy ZW50bHkgcGVuZGluZy4KKwkgKgorCSAqIFhYWDogSXQgbWlnaHQgYmUgY2hlYXBlciB0byB1 c2UgcGdfYXRvbWljX3dyaXRlX21lbWJhcnJpZXJfdTY0IHZhcmlhbnQKKwkgKiBhYm92ZSwg cGFpcmVkIHdpdGggcGdfYXRvbWljX3JlYWRfbWVtYmFycmllcl91NjQoKSBoZXJlIHRvIHJl YWQgdGhlCisJICogcGVuZGluZyBpbnRlcnJ1cHRzIGluc3RlYWQgb2YgdGhlIGJhcnJpZXIt bGVzcyBJbnRlcnJ1cHRQZW5kaW5nKCkuCisJICovCisJcGdfbWVtb3J5X2JhcnJpZXIoKTsK KworCWlmIChJbnRlcnJ1cHRQZW5kaW5nKG1hc2spKQorCQlwZ19hdG9taWNfd3JpdGVfdTMy KCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFncywgUElfRkxBR19BVFRFTlRJT04pOworfQor CisKKy8qCisgKiBNYWtlICduZXdfcHRyJyB0aGUgYWN0aXZlIGludGVycnVwdCB2ZWN0b3Is IHRyYW5zZmVyaW5nIGFsbCB0aGUgcGVuZGluZworICogaW50ZXJydXB0IGJpdHMgZnJvbSB0 aGUgb2xkIE15UGVuZGluZ0ludGVycnVwdHMgdmVjdG9yIHRvIHRoZSBuZXcgb25lLgorICov CitzdGF0aWMgdm9pZAorU3dpdGNoTXlQZW5kaW5nSW50ZXJydXB0c1B0cihQZW5kaW5nSW50 ZXJydXB0cyAqbmV3X3B0cikKIHsKLQlpZiAoTXlQZW5kaW5nSW50ZXJydXB0cyA9PSAmTG9j YWxQZW5kaW5nSW50ZXJydXB0cykKKwlQZW5kaW5nSW50ZXJydXB0cyAqb2xkX3B0ciA9IE15 UGVuZGluZ0ludGVycnVwdHM7CisKKwkvKiBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGlsZSBz bGVlcGluZyAqLworCUFzc2VydCgocGdfYXRvbWljX3JlYWRfdTMyKCZNeVBlbmRpbmdJbnRl cnJ1cHRzLT5mbGFncykgJiBQSV9GTEFHX1NMRUVQSU5HKSA9PSAwKTsKKworCWlmIChuZXdf cHRyID09IG9sZF9wdHIpCiAJCXJldHVybjsKIAotCU15UGVuZGluZ0ludGVycnVwdHMgPSAm TG9jYWxQZW5kaW5nSW50ZXJydXB0czsKKwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gbmV3X3B0 cjsKKwlpZiAoTXlQZW5kaW5nSW50ZXJydXB0c0ZsYWdzID09ICZvbGRfcHRyLT5mbGFncykK KwkJTXlQZW5kaW5nSW50ZXJydXB0c0ZsYWdzID0gJm5ld19wdHItPmZsYWdzOwogCiAJLyoK IAkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJzIHRoYXQgY2FsbCBSYWlzZUlu dGVycnVwdCgpIGFyZSBub3cKQEAgLTE4MSwxNCArMjc1LDQyIEBAIFN3aXRjaFRvTG9jYWxJ bnRlcnJ1cHRzKHZvaWQpCiAJcGdfbWVtb3J5X2JhcnJpZXIoKTsKIAogCS8qCi0JICogTWl4 IGluIHRoZSBpbnRlcnJ1cHRzIHRoYXQgd2UgaGF2ZSByZWNlaXZlZCBhbHJlYWR5IGluIG91 ciBzaGFyZWQKLQkgKiBpbnRlcnJ1cHQgdmVjdG9yLCB3aGlsZSBhdG9taWNhbGx5IGNsZWFy aW5nIGl0LiAgT3RoZXIgYmFja2VuZHMgbWF5Ci0JICogY29udGludWUgdG8gc2V0IGJpdHMg aW4gaXQgYWZ0ZXIgdGhpcyBwb2ludCwgYnV0IHdlJ3ZlIGF0b21pY2FsbHkKKwkgKiBNaXgg aW4gdGhlIGludGVycnVwdHMgdGhhdCB3ZSBoYXZlIHJlY2VpdmVkIGFscmVhZHkgaW4gJ25l d19wdHInLCB3aGlsZQorCSAqIGF0b21pY2FsbHkgY2xlYXJpbmcgdGhlbSBmcm9tICdvbGRf cHRyJy4gIE90aGVyIGJhY2tlbmRzIG1heSBjb250aW51ZQorCSAqIHRvIHNldCBiaXRzIGlu ICdvbGRfcHRyJyBhZnRlciB0aGlzIHBvaW50LCBidXQgd2UndmUgYXRvbWljYWxseQogCSAq IHRyYW5zZmVycmVkIHRoZSBleGlzdGluZyBiaXRzIHRvIG91ciBsb2NhbCB2ZWN0b3Igc28g d2Ugd29uJ3QgZ2V0CiAJICogZHVwbGljYXRlZCBpbnRlcnJ1cHRzIGxhdGVyIGlmIHdlIHN3 aXRjaCBiYWNrLgogCSAqLwotCXBnX2F0b21pY19mZXRjaF9vcl91NjQoTXlQZW5kaW5nSW50 ZXJydXB0cywKLQkJCQkJCSAgIHBnX2F0b21pY19leGNoYW5nZV91NjQoJk15UHJvYy0+cGVu ZGluZ0ludGVycnVwdHMsIDApKTsKKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVM QVRJT04KKwl7CisJCXVpbnQ2NAkJb2xkX2ludGVycnVwdHM7CisKKwkJb2xkX2ludGVycnVw dHMgPSBwZ19hdG9taWNfZXhjaGFuZ2VfdTY0KCZvbGRfcHRyLT5pbnRlcnJ1cHRzLCAwKTsK KwkJcGdfYXRvbWljX2ZldGNoX29yX3U2NCgmbmV3X3B0ci0+aW50ZXJydXB0cywgb2xkX2lu dGVycnVwdHMpOworCX0KKyNlbHNlCisJeworCQl1aW50MzIJCW9sZF9pbnRlcnJ1cHRzX2xv OworCQl1aW50MzIJCW9sZF9pbnRlcnJ1cHRzX2hpOworCisJCW9sZF9pbnRlcnJ1cHRzX2xv ID0gcGdfYXRvbWljX2V4Y2hhbmdlX3UzMigmb2xkX3B0ci0+aW50ZXJydXB0c19sbywgMCk7 CisJCW9sZF9pbnRlcnJ1cHRzX2hpID0gcGdfYXRvbWljX2V4Y2hhbmdlX3UzMigmb2xkX3B0 ci0+aW50ZXJydXB0c19oaSwgMCk7CisJCXBnX2F0b21pY19mZXRjaF9vcl91MzIoJm5ld19w dHItPmludGVycnVwdHNfbG8sIG9sZF9pbnRlcnJ1cHRzX2xvKTsKKwkJcGdfYXRvbWljX2Zl dGNoX29yX3UzMigmbmV3X3B0ci0+aW50ZXJydXB0c19oaSwgb2xkX2ludGVycnVwdHNfaGkp OworCX0KKyNlbmRpZgorCisJU2V0SW50ZXJydXB0QXR0ZW50aW9uTWFzayhFbmFibGVkSW50 ZXJydXB0c01hc2spOworfQorCisvKgorICogU3dpdGNoIHRvIGxvY2FsIGludGVycnVwdHMu ICBPdGhlciBiYWNrZW5kcyBjYW4ndCBzZW5kIGludGVycnVwdHMgdG8gdGhpcworICogb25l LiAgT25seSBSYWlzZUludGVycnVwdCgpIGNhbiBzZXQgdGhlbSwgZnJvbSBpbnNpZGUgdGhp cyBwcm9jZXNzLgorICovCit2b2lkCitTd2l0Y2hUb0xvY2FsSW50ZXJydXB0cyh2b2lkKQor eworCVN3aXRjaE15UGVuZGluZ0ludGVycnVwdHNQdHIoJkxvY2FsUGVuZGluZ0ludGVycnVw dHMpOwogfQogCiAvKgpAQCAtMTk4LDIwICszMjAsNjEgQEAgU3dpdGNoVG9Mb2NhbEludGVy cnVwdHModm9pZCkKIHZvaWQKIFN3aXRjaFRvU2hhcmVkSW50ZXJydXB0cyh2b2lkKQogewot CWlmIChNeVBlbmRpbmdJbnRlcnJ1cHRzID09ICZNeVByb2MtPnBlbmRpbmdJbnRlcnJ1cHRz KQotCQlyZXR1cm47CisJU3dpdGNoTXlQZW5kaW5nSW50ZXJydXB0c1B0cigmTXlQcm9jLT5w ZW5kaW5nSW50ZXJydXB0cyk7Cit9CiAKLQlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJk15UHJv Yy0+cGVuZGluZ0ludGVycnVwdHM7CitzdGF0aWMgYm9vbAorU2VuZE9yUmFpc2VJbnRlcnJ1 cHQoUGVuZGluZ0ludGVycnVwdHMgKnB0ciwgSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNr KQoreworCXVpbnQ2NAkJb2xkX3BlbmRpbmc7CisJdWludDY0CQlhdHRlbnRpb25fbWFzazsK Kwl1aW50MzIJCW9sZF9mbGFnczsKKwlib29sCQl3YWtldXAgPSBmYWxzZTsKIAogCS8qCi0J ICogTWFrZSBzdXJlIHRoYXQgU0lHQUxSTSBoYW5kbGVycyB0aGF0IGNhbGwgUmFpc2VJbnRl cnJ1cHQoKSBhcmUgbm93Ci0JICogc2VlaW5nIHRoZSBuZXcgTXlQZW5kaW5nSW50ZXJydXB0 cyBkZXN0aW5hdGlvbi4KKwkgKiBEbyBhbiAidW5sb2NrZWQiIHJlYWQgZmlyc3QsIGZvciBh IHF1aWNrIGV4aXQgaWYgYWxsIHRoZSBiaXRzIGFyZQorCSAqIGFscmVhZHkgc2V0LgogCSAq LwotCXBnX21lbW9yeV9iYXJyaWVyKCk7CisjaWZuZGVmIFBHX0hBVkVfQVRPTUlDX1U2NF9T SU1VTEFUSU9OCisJb2xkX3BlbmRpbmcgPSBwZ19hdG9taWNfcmVhZF91NjQoJnB0ci0+aW50 ZXJydXB0cyk7CisjZWxzZQorCW9sZF9wZW5kaW5nID0gKHVpbnQ2NCkgcGdfYXRvbWljX3Jl YWRfdTMyKCZwdHItPmludGVycnVwdHNfbG8pOworCW9sZF9wZW5kaW5nIHw9ICh1aW50NjQp IHBnX2F0b21pY19yZWFkX3UzMigmcHRyLT5pbnRlcnJ1cHRzX2hpKSA8PCAzMjsKKyNlbmRp ZgorCisJaWYgKChpbnRlcnJ1cHRNYXNrICYgfm9sZF9wZW5kaW5nKSA9PSAwKQorCQlyZXR1 cm4gZmFsc2U7CQkJLyogbm8gbmV3IGJpdHMgd2VyZSBzZXQgKi8KKworCS8qIE9SIG91ciBi aXRzIHRvIHRoZSB0YXJnZXQgKi8KKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVM QVRJT04KKwkodm9pZCkgcGdfYXRvbWljX2ZldGNoX29yX3U2NCgmcHRyLT5pbnRlcnJ1cHRz LCBpbnRlcnJ1cHRNYXNrKTsKKyNlbHNlCisJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9vcl91 MzIoJnB0ci0+aW50ZXJydXB0c19sbywgKHVpbnQzMikgaW50ZXJydXB0TWFzayk7CisJKHZv aWQpIHBnX2F0b21pY19mZXRjaF9vcl91MzIoJnB0ci0+aW50ZXJydXB0c19oaSwgKHVpbnQz MikgKGludGVycnVwdE1hc2sgPj4gMzIpKTsKKyNlbmRpZgogCi0JLyogTWl4IGluIGFueSB1 bmhhbmRsZWQgYml0cyBmcm9tIExvY2FsUGVuZGluZ0ludGVycnVwdHMuICovCi0JcGdfYXRv bWljX2ZldGNoX29yX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLAotCQkJCQkJICAgcGdfYXRv bWljX2V4Y2hhbmdlX3U2NCgmTG9jYWxQZW5kaW5nSW50ZXJydXB0cywgMCkpOworCS8qCisJ ICogRGlkIHdlIHNldCBhbnkgYml0cyB0aGF0IHRoZSByZXF1aXJlcyB0aGUgdGFyZ2V0IHBy b2Nlc3MncyBBVFRFTlRJT04/CisJICovCisjaWZuZGVmIFBHX0hBVkVfQVRPTUlDX1U2NF9T SU1VTEFUSU9OCisJYXR0ZW50aW9uX21hc2sgPSBwZ19hdG9taWNfcmVhZF91NjQoJnB0ci0+ YXR0ZW50aW9uX21hc2spOworI2Vsc2UKKwlhdHRlbnRpb25fbWFzayA9ICh1aW50NjQpIHBn X2F0b21pY19yZWFkX3UzMigmcHRyLT5hdHRlbnRpb25fbWFza19sbyk7CisJYXR0ZW50aW9u X21hc2sgfD0gKHVpbnQ2NCkgcGdfYXRvbWljX3JlYWRfdTMyKCZwdHItPmF0dGVudGlvbl9t YXNrX2hpKSA8PCAzMjsKKyNlbmRpZgorCWlmICgoYXR0ZW50aW9uX21hc2sgJiBpbnRlcnJ1 cHRNYXNrKSAhPSAwKQorCXsKKwkJb2xkX2ZsYWdzID0gcGdfYXRvbWljX2ZldGNoX29yX3Uz MigmcHRyLT5mbGFncywgUElfRkxBR19BVFRFTlRJT04pOworCisJCS8qCisJCSAqIEZ1cnRo ZXJtb3JlLCBpZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgc2xlZXBpbmcgb24gdGhlc2UK KwkJICogaW50ZXJydXB0cywgd2FrZSBpdCB1cC4KKwkJICovCisJCWlmICgob2xkX2ZsYWdz ICYgUElfRkxBR19TTEVFUElORykgIT0gMCkKKwkJCXdha2V1cCA9IHRydWU7CisJfQorCisJ cmV0dXJuIHdha2V1cDsKIH0KIAogLyoKQEAgLTIyMywxNSArMzg2LDcgQEAgU3dpdGNoVG9T aGFyZWRJbnRlcnJ1cHRzKHZvaWQpCiB2b2lkCiBSYWlzZUludGVycnVwdChJbnRlcnJ1cHRN YXNrIGludGVycnVwdE1hc2spCiB7Ci0JdWludDY0CQlvbGRfcGVuZGluZzsKLQotCW9sZF9w ZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLCBp bnRlcnJ1cHRNYXNrKTsKLQotCS8qCi0JICogSWYgdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5 IGJsb2NrZWQgd2FpdGluZyBmb3IgYW4gaW50ZXJydXB0IHRvIGFycml2ZSwKLQkgKiBhbmQg dGhlIGludGVycnVwdCB3YXNuJ3QgYWxyZWFkeSBwZW5kaW5nLCB3YWtlIGl0IHVwLgotCSAq LwotCWlmICgob2xkX3BlbmRpbmcgJiAoaW50ZXJydXB0TWFzayB8IFNMRUVQSU5HX09OX0lO VEVSUlVQVFMpKSA9PSBTTEVFUElOR19PTl9JTlRFUlJVUFRTKQorCWlmIChTZW5kT3JSYWlz ZUludGVycnVwdChNeVBlbmRpbmdJbnRlcnJ1cHRzLCBpbnRlcnJ1cHRNYXNrKSkKIAkJV2Fr ZXVwTXlQcm9jKCk7CiB9CiAKQEAgLTI0OCwxNCArNDAzLDEyIEBAIHZvaWQKIFNlbmRJbnRl cnJ1cHQoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBQcm9jTnVtYmVyIHBncHJvY25v KQogewogCVBHUFJPQwkgICAqcHJvYzsKLQl1aW50NjQJCW9sZF9wZW5kaW5nOwogCiAJQXNz ZXJ0KHBncHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCUFzc2VydChwZ3Byb2Nu byA+PSAwKTsKIAlBc3NlcnQocGdwcm9jbm8gPCBQcm9jR2xvYmFsLT5hbGxQcm9jQ291bnQp OwogCiAJcHJvYyA9ICZQcm9jR2xvYmFsLT5hbGxQcm9jc1twZ3Byb2Nub107Ci0Jb2xkX3Bl bmRpbmcgPSBwZ19hdG9taWNfZmV0Y2hfb3JfdTY0KCZwcm9jLT5wZW5kaW5nSW50ZXJydXB0 cywgaW50ZXJydXB0TWFzayk7CiAKIAllbG9nKERFQlVHMSwgInNlbmRpbmcgaW50ZXJydXB0 IDB4MDE2JSIgUFJJeDY0ICIgdG8gcGlkICVkIiwgaW50ZXJydXB0TWFzaywgcHJvYy0+cGlk KTsKIApAQCAtMjYzLDcgKzQxNiw3IEBAIFNlbmRJbnRlcnJ1cHQoSW50ZXJydXB0TWFzayBp bnRlcnJ1cHRNYXNrLCBQcm9jTnVtYmVyIHBncHJvY25vKQogCSAqIElmIHRoZSBwcm9jZXNz IGlzIGN1cnJlbnRseSBibG9ja2VkIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCB0byBhcnJp dmUsCiAJICogYW5kIHRoZSBpbnRlcnJ1cHQgd2Fzbid0IGFscmVhZHkgcGVuZGluZywgd2Fr ZSBpdCB1cC4KIAkgKi8KLQlpZiAoKG9sZF9wZW5kaW5nICYgKGludGVycnVwdE1hc2sgfCBT TEVFUElOR19PTl9JTlRFUlJVUFRTKSkgPT0gU0xFRVBJTkdfT05fSU5URVJSVVBUUykKKwlp ZiAoU2VuZE9yUmFpc2VJbnRlcnJ1cHQoJnByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCBpbnRl cnJ1cHRNYXNrKSkKIAkJV2FrZXVwT3RoZXJQcm9jKHByb2MpOwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwYy5jCmluZGV4IDgwNjk0NzU3MWFlLi4wZTg2NDkxZTFiNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjLmMKQEAgLTE3MywxNCArMTczLDEzIEBAIHByb2NfZXhpdF9wcmVwYXJlKGlu dCBjb2RlKQogCXByb2NfZXhpdF9pbnByb2dyZXNzID0gdHJ1ZTsKIAogCS8qCi0JICogRm9y Z2V0IGFueSBwZW5kaW5nIGNhbmNlbCBvciBkaWUgcmVxdWVzdHMgYW5kIHNldCBJbnRlcnJ1 cHRIb2xkb2ZmQ291bnQKLQkgKiB0byBwcmV2ZW50IGFueSBtb3JlIGludGVycnVwdHMgZnJv bSBiZWluZyBwcm9jZXNzZWQ7IHdlJ3JlIGRvaW5nIG91cgotCSAqIGJlc3QgdG8gY2xvc2Ug dXAgc2hvcCBhbHJlYWR5LgorCSAqIEZvcmdldCBhbnkgcGVuZGluZyBjYW5jZWwgb3IgZGll IHJlcXVlc3RzIGFuZCBob2xkIGludGVycnVwdHMgdG8KKwkgKiBwcmV2ZW50IGFueSBtb3Jl IGludGVycnVwdHMgZnJvbSBiZWluZyBwcm9jZXNzZWQ7IHdlJ3JlIGRvaW5nIG91ciBiZXN0 CisJICogdG8gY2xvc2UgdXAgc2hvcCBhbHJlYWR5LgogCSAqLwogCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9URVJNSU5BVEUpOwogCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVS WV9DQU5DRUwpOwotCUludGVycnVwdEhvbGRvZmZDb3VudCA9IDE7Ci0JQ3JpdFNlY3Rpb25D b3VudCA9IDA7CisJUmVzZXRJbnRlcnJ1cHRIb2xkb2ZmQ291bnRzKDEsIDApOwogCiAJLyoK IAkgKiBBbHNvIGNsZWFyIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrLCB0byBwcmV2ZW50IGVy cm9yIGNhbGxiYWNrcyBmcm9tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy93YWl0ZXZlbnRzZXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNl dC5jCmluZGV4IDYxMmRlOGIzNWU5Li5iZDUyMTEwMzg5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMKQEAgLTcxNCw4ICs3MTQsNyBAQCBNb2RpZnlXYWl0 RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIEludGVy cnVwdE1hc2sgaW50ZXJydQogCQkgKiBjaGFuZ2VzLiAgSXQgbWVhbnMgdGhhdCB3aGVuIGlu dGVycnVwdCBtYXNrIGlzIHNldCB0byAwLCB3ZSB3aWxsCiAJCSAqIGxpc3RlbiBvbiB0aGUg a2VybmVsIG9iamVjdCB1bm5lY2Vzc2FyaWx5LCBhbmQgbWlnaHQgZ2V0IHNvbWUKIAkJICog c3B1cmlvdXMgd2FrZXVwcy4gVGhlIGludGVycnVwdCBzZW5kaW5nIGNvZGUgc2hvdWxkIG5v dCB3YWtlIHVzIHVwCi0JCSAqIGlmIHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGJpdCBp cyBub3QgYXJtZWQsIHRob3VnaCwgc28gaXQKLQkJICogc2hvdWxkIGJlIHJhcmUuCisJCSAq IGlmIHRoZSBTTEVFUElORyBiaXQgaXMgbm90IGFybWVkLCB0aG91Z2gsIHNvIGl0IHNob3Vs ZCBiZSByYXJlLgogCQkgKi8KIAkJcmV0dXJuOwogCX0KQEAgLTEwNzIsNiArMTA3MSwxNCBA QCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJ cGd3aW4zMl9kaXNwYXRjaF9xdWV1ZWRfc2lnbmFscygpOwogI2VuZGlmCiAKKwkvKgorCSAq IFdlIHdpbGwgY2hhbmdlIHRoZSAnYXR0ZW50aW9uX21hc2snIGluIE15UGVuZGluZ0ludGVy cnVwdHMgZm9yIHRoZQorCSAqIHNsZWVwLCB3aGljaCBtZWFucyB0aGF0IENIRUNLX0ZPUl9J TlRFUlJVUFRTKCkgd29uJ3Qgd29yayBjb3JyZWN0bHkuCisJICogVGhlcmUgYXJlIG5vIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgY2FsbHMgYmVsb3csIGJ1dCBob2xkIGludGVycnVwdHMK KwkgKiB1bnRpbCB3ZSd2ZSByZXN0b3JlZCAnYXR0ZW50aW9uX21hc2snIGp1c3QgdG8gYmUg c3VyZS4KKwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKwogCS8qCiAJICogQXRvbWljYWxs eSBjaGVjayBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZyBhbmQgYWR2ZXJ0 aXNlIHRoYXQKIAkgKiB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgc2xlZXBpbmcuIElmIGl0IHdh cyBhbHJlYWR5IHBlbmRpbmcsIGF2b2lkCkBAIC0xMDg0LDI4ICsxMDkxLDM1IEBAIFdhaXRF dmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAkgKi8KIAlp ZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwKQogCXsKLQkJSW50ZXJydXB0TWFzayBvbGRf bWFzazsKIAkJYm9vbAkJYWxyZWFkeV9wZW5kaW5nID0gZmFsc2U7CiAKIAkJLyoKIAkJICog UGVyZm9ybSBhIHBsYWluIGF0b21pYyByZWFkIGZpcnN0IGFzIGEgZmFzdCBwYXRoIGZvciB0 aGUgY2FzZSB0aGF0CiAJCSAqIGFuIGludGVycnVwdCBpcyBhbHJlYWR5IHBlbmRpbmcuCiAJ CSAqLwotCQlvbGRfbWFzayA9IHBnX2F0b21pY19yZWFkX3U2NChNeVBlbmRpbmdJbnRlcnJ1 cHRzKTsKLQkJYWxyZWFkeV9wZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0 X21hc2spICE9IDApOworCQlhbHJlYWR5X3BlbmRpbmcgPSBJbnRlcnJ1cHRQZW5kaW5nKHNl dC0+aW50ZXJydXB0X21hc2spOwogCiAJCWlmICghYWxyZWFkeV9wZW5kaW5nKQogCQl7CiAJ CQkvKgotCQkJICogQXRvbWljYWxseSBzZXQgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMg Yml0IGFuZCByZS1jaGVjayBpZgotCQkJICogYW4gaW50ZXJydXB0IGlzIGFscmVhZHkgcGVu ZGluZy4gVGhlIGF0b21pYyBvcCBwcm92aWRlcwotCQkJICogc3luY2hyb25pemF0aW9uIHNv IHRoYXQgaWYgYW4gaW50ZXJydXB0IGJpdCBpcyBzZXQgYWZ0ZXIgdGhpcywKLQkJCSAqIHRo ZSBzZXR0ZXIgd2lsbCB3YWtlIHVzIHVwLgorCQkJICogU2V0IHRoZSBhdHRlbnRpb24gbWFz ayBhbmQgU0xFRVBJTkcgYml0IGFuZCByZS1jaGVjayBpZiBhbgorCQkJICogaW50ZXJydXB0 IGlzIGFscmVhZHkgcGVuZGluZy4gIFRoZSBtZW1vcnkgYmFycmllciBzeW5jaHJvbml6ZXMK KwkJCSAqIHdpdGggdGhlIGF0b21pYyBmZXRjaC1vciBpbiBTZW5kT3JSYWlzZUludGVycnVw dCgpIHNvIHRoYXQgaWYKKwkJCSAqIGFuIGludGVycnVwdCBiaXQgaXMgc2V0IGFmdGVyIHNl dHRpbmcgdGhlIGZsYWcsIHRoZSBzZXR0ZXIgd2lsbAorCQkJICogc2VlIHRoZSBTTEVFUElO RyBmbGFnIGFuZCB3aWxsIHdha2UgdXMgdXAuCiAJCQkgKi8KLQkJCW9sZF9tYXNrID0gcGdf YXRvbWljX2ZldGNoX29yX3U2NChNeVBlbmRpbmdJbnRlcnJ1cHRzLCBTTEVFUElOR19PTl9J TlRFUlJVUFRTKTsKLQkJCWFscmVhZHlfcGVuZGluZyA9ICgob2xkX21hc2sgJiBzZXQtPmlu dGVycnVwdF9tYXNrKSAhPSAwKTsKKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVM QVRJT04KKwkJCXBnX2F0b21pY193cml0ZV91NjQoJk15UGVuZGluZ0ludGVycnVwdHMtPmF0 dGVudGlvbl9tYXNrLCBzZXQtPmludGVycnVwdF9tYXNrKTsKKyNlbHNlCisJCQlwZ19hdG9t aWNfd3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFza19sbywg KHVpbnQzMikgc2V0LT5pbnRlcnJ1cHRfbWFzayk7CisJCQlwZ19hdG9taWNfd3JpdGVfdTMy KCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5hdHRlbnRpb25fbWFza19oaSwgKHVpbnQzMikgKHNl dC0+aW50ZXJydXB0X21hc2sgPj4gMzIpKTsKKyNlbmRpZgorCQkJcGdfYXRvbWljX3dyaXRl X3UzMigmTXlQZW5kaW5nSW50ZXJydXB0cy0+ZmxhZ3MsIFBJX0ZMQUdfU0xFRVBJTkcpOwor CisJCQlwZ19tZW1vcnlfYmFycmllcigpOworCQkJYWxyZWFkeV9wZW5kaW5nID0gSW50ZXJy dXB0UGVuZGluZyhzZXQtPmludGVycnVwdF9tYXNrKTsKIAotCQkJLyogcmVtZW1iZXIgdG8g Y2xlYXIgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgZmxhZyBsYXRlciAqLworCQkJLyog UmVtZW1iZXIgdG8gY2xlYXIgdGhlIFNMRUVQSU5HIGZsYWcgYWZ0ZXJ3YXJkcy4gKi8KIAkJ CXNsZWVwaW5nX2ZsYWdfYXJtZWQgPSB0cnVlOwogCQl9CiAKQEAgLTExNzUsOSArMTE4OSwx NyBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQs CiAJCX0KIAl9CiAKLQkvKiBJZiB3ZSBzZXQgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMg ZmxhZywgcmVzZXQgaXQgYWdhaW4gKi8KKwkvKgorCSAqIElmIHdlIHNsZXB0LCBjbGVhciB0 aGUgU0xFRVBJTkcgZmxhZyBhZ2FpbiBhbmQgcmVzZXQgdGhlIGF0dGVudGlvbiBtYXNrCisJ ICogZm9yIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKKwkgKi8KIAlpZiAoc2xlZXBpbmdfZmxh Z19hcm1lZCkKLQkJcGdfYXRvbWljX2ZldGNoX2FuZF91NjQoTXlQZW5kaW5nSW50ZXJydXB0 cywgfigodWludDMyKSBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSk7CisJeworCQlwZ19hdG9t aWNfd3JpdGVfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFncywgMCk7CisJCVNldElu dGVycnVwdEF0dGVudGlvbk1hc2soRW5hYmxlZEludGVycnVwdHNNYXNrKTsKKwl9CisKKwlS RVNVTUVfSU5URVJSVVBUUygpOwogCiAjaWZuZGVmIFdJTjMyCiAJd2FpdGluZyA9IGZhbHNl OwpAQCAtMTI1NSw3ICsxMjc3LDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVu dFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCQkvKiBEcmFpbiB0aGUgc2lnbmFsZmQu ICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFzayAhPSAwICYm IChwZ19hdG9taWNfcmVhZF91NjQoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBzZXQtPmludGVy cnVwdF9tYXNrKSAhPSAwKQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiBJ bnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJydXB0X21hc2spKQogCQkJewogCQkJCW9jY3Vy cmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwogCQkJCW9jY3VycmVkX2V2ZW50 cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwpAQCAtMTQxNCw3ICsxNDM2LDcgQEAgV2FpdEV2 ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJ CWlmIChjdXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCWN1cl9rcXVl dWVfZXZlbnQtPmZpbHRlciA9PSBFVkZJTFRfU0lHTkFMKQogCQl7Ci0JCQlpZiAoc2V0LT5p bnRlcnJ1cHRfbWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50 ZXJydXB0cykgJiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQorCQkJaWYgKHNldC0+aW50 ZXJydXB0X21hc2sgIT0gMCAmJiBJbnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJydXB0X21h c2spKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VU OwogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwpAQCAtMTUz OSw3ICsxNTYxLDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0 LCBpbnQgY3VyX3RpbWVvdXQsCiAJCQkvKiBUaGVyZSdzIGRhdGEgaW4gdGhlIHNlbGYtcGlw ZSwgY2xlYXIgaXQuICovCiAJCQlkcmFpbigpOwogCi0JCQlpZiAoc2V0LT5pbnRlcnJ1cHRf bWFzayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykg JiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21h c2sgIT0gMCAmJiBJbnRlcnJ1cHRQZW5kaW5nKHNldC0+aW50ZXJydXB0X21hc2spKQogCQkJ ewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ZmQgPSBQR0lOVkFMSURfU09DS0VUOwogCQkJCW9j Y3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJSVVBUOwpAQCAtMTc2MCw3ICsxNzgy LDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAqc2V0LCBpbnQgY3Vy X3RpbWVvdXQsCiAJCQlpZiAoIVJlc2V0RXZlbnQoc2V0LT5oYW5kbGVzW2N1cl9ldmVudC0+ cG9zICsgMV0pKQogCQkJCWVsb2coRVJST1IsICJSZXNldEV2ZW50IGZhaWxlZDogZXJyb3Ig Y29kZSAlbHUiLCBHZXRMYXN0RXJyb3IoKSk7CiAKLQkJCWlmIChzZXQtPmludGVycnVwdF9t YXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzKSAm IHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFz ayAhPSAwICYmIEludGVycnVwdFBlbmRpbmcoc2V0LT5pbnRlcnJ1cHRfbWFzaykpCiAJCQl7 CiAJCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7CiAJCQkJb2Nj dXJyZWRfZXZlbnRzLT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggNWU1OTVlNTE5ODcuLjk0ZTU5YWZmNGVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC0zMjAyLDExICszMjAyLDExIEBAIHJlcG9ydF9yZWNvdmVyeV9jb25mbGljdChSZWNvdmVy eUNvbmZsaWN0UmVhc29uIHJlYXNvbikKIAkJaWYgKCFEb2luZ0NvbW1hbmRSZWFkKQogCQl7 CiAJCQkvKiBBdm9pZCBsb3Npbmcgc3luYyBpbiB0aGUgRkUvQkUgcHJvdG9jb2wuICovCi0J CQlpZiAoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChJTlRFUlJVUFRfUVVFUllfQ0FO Q0VMKSkKKwkJCWlmICgoRW5hYmxlZEludGVycnVwdHNNYXNrICYgSU5URVJSVVBUX1FVRVJZ X0NBTkNFTCkgPT0gMCkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFJlLWFybSBhbmQgZGVmZXIg dGhpcyBpbnRlcnJ1cHQgdW50aWwgbGF0ZXIuICBTZWUgc2ltaWxhcgotCQkJCSAqIGNvZGUg aW4gUHJvY2Vzc0ludGVycnVwdHMoKS4KKwkJCQkgKiBjb2RlIGluIFByb2Nlc3NJbnRlcnJ1 cHRzKCkuIEZJWE1FOiB3aGF0IHNpbWlsYXIgY29kZQogCQkJCSAqLwogCQkJCSh2b2lkKSBw Z19hdG9taWNfZmV0Y2hfb3JfdTMyKCZNeVByb2MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0 cywgKDEgPDwgcmVhc29uKSk7CiAJCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNUKTsKQEAgLTMyNjEsNyArMzI2MSw2IEBAIHZvaWQKIFByb2Nlc3NUZXJt aW5hdGVJbnRlcnJ1cHQodm9pZCkKIHsKIAkvKiBPSyB0byBhY2NlcHQgYW55IGludGVycnVw dHMgbm93PyAqLwotCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPT0gMCk7CiAJQXNz ZXJ0KENyaXRTZWN0aW9uQ291bnQgPT0gMCk7CiAKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9lcnJvci9lbG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9n LmMKaW5kZXggYmVjZmM2MmZkMzIuLjI2NDZlYmM2YzBmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9lcnJvci9lbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3Iv ZWxvZy5jCkBAIC01MjYsOSArNTI2LDcgQEAgZXJyZmluaXNoKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBpbnQgbGluZW5vLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIAkJICogY291bGQgc2F2 ZSBhbmQgcmVzdG9yZSBJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgZm9yIGl0c2VsZiwgYnV0IHRo aXMKIAkJICogc2hvdWxkIG1ha2UgbGlmZSBlYXNpZXIgZm9yIG1vc3QuKQogCQkgKi8KLQkJ SW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKLQotCQlDcml0U2VjdGlvbkNvdW50ID0gMDsJ Lyogc2hvdWxkIGJlIHVubmVjZXNzYXJ5LCBidXQuLi4gKi8KKwkJUmVzZXRJbnRlcnJ1cHRI b2xkb2ZmQ291bnRzKDAsIDApOwogCiAJCS8qCiAJCSAqIE5vdGUgdGhhdCB3ZSBsZWF2ZSBD dXJyZW50TWVtb3J5Q29udGV4dCBzZXQgdG8gRXJyb3JDb250ZXh0LiBUaGUKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaCBiL3NyYy9pbmNsdWRlL2lwYy9pbnRl cnJ1cHQuaAppbmRleCAyMzlkNThmNzU5Ny4uMTAyMzRkNGY5ODcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2lwYy9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9pcGMvaW50ZXJy dXB0LmgKQEAgLTE1LDYgKzE1LDcgQEAKICNpZm5kZWYgSVBDX0lOVEVSUlVQVF9ICiAjZGVm aW5lIElQQ19JTlRFUlJVUFRfSAogCisjaW5jbHVkZSAiaXBjL3N0YW5kYXJkX2ludGVycnVw dHMuaCIKICNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2NudW1iZXIuaCIKIApAQCAtMjMsMjEyICsyNCwxMjggQEAKICAqIG5lZWRlZCB3aGljaCBh cmUgbmVlZGVkIGJ5IGFsbCBjYWxsZXJzIG9mIFdhaXRJbnRlcnJ1cHQsIHNvIGluY2x1ZGUg aXQKICAqIGhlcmUuCiAgKgotICogTm90ZTogSW50ZXJydXB0TWFzayBpcyBkZWZpbmQgaW4g d2FpdGV2ZW50c2V0LmggdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeQorICogTm90ZTog SW50ZXJydXB0TWFzayBpcyBkZWZpbmVkIGluIHdhaXRldmVudHNldC5oIHRvIGF2b2lkIGNp cmN1bGFyIGRlcGVuZGVuY3kKICAqLwogI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0 LmgiCiAKLQogLyoKLSAqIEZsYWdzIGluIHRoZSBwZW5kaW5nIGludGVycnVwdHMgYml0bWFz ay4gRWFjaCB2YWx1ZSBpcyBhIGRpZmZlcmVudCBiaXQsIHNvIHRoYXQKLSAqIHRoZXNlIGNh biBiZSBjb252ZW5pZW50bHkgT1InZCB0b2dldGhlci4KLSAqLwotI2RlZmluZSBVSU5UNjRf QklUKHNoaWZ0KSAoVUlOVDY0X0MoMSkgPDwgKHNoaWZ0KSkKLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCi0gKiBCZWdpbiBkZWZpbml0aW9ucyBvZiBidWlsdC1pbiBpbnRlcnJ1cHQgYml0cwot ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwotCi0vKgotICogSU5URVJSVVBUX1dBSVRfV0FLRVVQIGlz IHNoYXJlZCBieSBtYW55IHVzZSBjYXNlcyB0aGF0IG5lZWQgdG8gd2FrZSB1cAotICogYSBw cm9jZXNzLCB3aGljaCBkb24ndCBuZWVkIGEgZGVkaWNhdGVkIGludGVycnVwdCBiaXQuCi0g Ki8KLSNkZWZpbmUgSU5URVJSVVBUX1dBSVRfV0FLRVVQCQkJCQlVSU5UNjRfQklUKDApCi0K LQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiBTdGFuZGFyZCBpbnRlcnJ1cHRzIGhhbmRsZWQg dGhlIHNhbWUgYnkgbW9zdCBwcm9jZXNzZXMKKyAqIFBlbmRpbmdJbnRlcnJ1cHRzIGlzIHVz ZWQgdG8gcmVjZWl2ZSBhbmQgd2FpdCBmb3IgaW50ZXJydXB0cy4gIFRoZQorICogJ2ludGVy cnVwdHMnIGZpZWxkIGlzIGEgYml0bWFzayByZXByZXNlbnRpbmcgaW50ZXJydXB0cyB0aGF0 IGFyZSBjdXJyZW50bHkKKyAqIHBlbmRpbmcgZm9yIHRoZSBwcm9jZXNzLgogICoKLSAqIE1v c3Qgb2YgdGhlc2UgYXJlIG5vcm1hbGx5IHByb2Nlc3NlZCBieSBDSEVDS19GT1JfSU5URVJS VVBUUygpIG9uY2UKLSAqIHByb2Nlc3Mgc3RhcnR1cCBoYXMgcmVhY2hlZCBTZXRTdGFuZGFy ZEludGVycnVwdHMoKS4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIEJhY2tlbmQg aGFzIGJlZW4gcmVxdWVzdGVkIHRvIHRlcm1pbmF0ZSBncmFjZWZ1bGx5LgorICogV2Ugc3Vw cG9ydCB1cCB0byA2NCBkaWZmZXJlbnQgaW50ZXJydXB0cy4gIFRoYXQgd2F5LCBhbiBpbnRl cnJ1cHQgbWFzayBjYW4KKyAqIGJlIGNvbnZlbmllbnRseSBzdG9yZWQgYXMgb25lIDY0LWJp dCBhdG9taWMgaW50ZWdlciwgb24gc3lzdGVtcyB3aXRoIDY0LWJpdAorICogYXRvbWljcy4g IE9uIG90aGVyIHN5c3RlbXMsIGl0J3Mgc3BsaXQgaW50byB0d28gMzItYml0IGF0b21pYyBm aWVsZHMsIHdoaWNoCisgKiBpcyBnb29kIGVub3VnaCBiZWNhdXNlIHdlIGRvbid0IHJlbHkg b24gYXRvbWljaXR5IGJldHdlZW4gZGlmZmVyZW50CisgKiBpbnRlcnJ1cHQgYml0cy4gIChO b3RlIHRoYXQgdGhlIDY0LWJpdCBhdG9taWNzIHNpbXVsYXRpb24gcmVsaWVzIG9uCisgKiBz cGlubG9ja3MsIHdoaWNoIGNyZWF0ZXMgYSBkZWFkbG9jayByaXNrIHdoZW4gdXNlZCBmcm9t IHNpZ25hbCBoYW5kbGVycywgc28KKyAqIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBzaW11bGF0 ZWQgNjQtYml0IGF0b21pY3MuKQogICoKLSAqIFRoaXMgaXMgcmFpc2VkIGJ5IHRoZSBTSUdU RVJNIHNpZ25hbCBoYW5kbGVyLCBvciBjYW4gYmUgc2VudCBkaXJlY3RseSBieQotICogYW5v dGhlciBiYWNrZW5kIGUuZy4gd2l0aCBwZ190ZXJtaW5hdGVfYmFja2VuZCgpLgotICovCi0j ZGVmaW5lIElOVEVSUlVQVF9URVJNSU5BVEUJCQkJCQlVSU5UNjRfQklUKDEpCi0KLS8qCi0g KiBDYW5jZWwgY3VycmVudCBxdWVyeSwgaWYgYW55LgorICogQXR0ZW50aW9uIG1lY2hhbmlz bQorICogLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKLSAqIFNlbnQgdG8gcmVndWxhciBiYWNr ZW5kcyBieSBwZ19jYW5jZWxfYmFja2VuZCgpLCBTSUdJTlQsIG9yIGluIHJlc3BvbnNlIHRv Ci0gKiBhIHF1ZXJ5IGNhbmNlbGxhdGlvbiBwYWNrZXQuICBTb21lIG90aGVyIHByb2Nlc3Nl cyBsaWtlIGF1dG92YWN1dW0gd29ya2VycwotICogYW5kIGxvZ2ljYWwgZGVjb2RpbmcgcHJv Y2Vzc2VzIGFsc28gcmVhY3QgdG8gdGhpcy4KLSAqLwotI2RlZmluZSBJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMCQkJCQlVSU5UNjRfQklUKDIpCi0KLS8qCi0gKiBSZWNvdmVyeSBjb25mbGlj dC4gVGhpcyBpcyBzZW50IGJ5IHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gaG90IHN0YW5kYnkg bW9kZQotICogd2hlbiBhIGJhY2tlbmQgaG9sZHMgYmFjayB0aGUgV0FMIHJlcGxheSBmb3Ig dG9vIGxvbmcuIFRoZSByZWFzb24gZm9yIHRoZQotICogY29uZmxpY3QgaW5kaWNhdGVkIGJ5 IHRoZSBQR1BST0MtPnBlbmRpbmdSZWNvdmVyeUNvbmZsaWN0cwotICogYml0bWFzay4gQ29u ZmxpY3RzIGFyZSBnZW5lcmFsbHkgcmVzb2x2ZWQgYnkgdGVybWluYXRpbmcgdGhlIGN1cnJl bnQgcXVlcnkKLSAqIG9yIHNlc3Npb24uIFRoZSBleGFjdCByZWFjdGlvbiBkZXBlbmRzIG9u IHRoZSByZWFzb24gYW5kIHdoYXQgc3RhdGUgdGhlCi0gKiBiYWNrZW5kIGlzIGluLgotICov Ci0jZGVmaW5lIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVCAJCQlVSU5UNjRfQklUKDMp Ci0KLS8qCi0gKiBDb25maWcgZmlsZSByZWxvYWQgaXMgcmVxdWVzdGVkLgorICogVGhlICdh dHRlbnRpb25fbWFzaycgZmllbGQgbGV0cyBhIGJhY2tlbmQgYWR2ZXJ0aXNlIHdoaWNoIGlu dGVycnVwdHMgaXQgaXMKKyAqIGN1cnJlbnRseSBpbnRlcmVzdGVkIGluLiAgV2hlbiBhIGJh Y2tlbmQgaXMgc2xlZXBpbmcsIHdhaXRpbmcgZm9yIGFuCisgKiBpbnRlcnJ1cHQgdG8gYXJy aXZlLCBpdCBzZXRzIHRoZSBiaXRzIGZvciB0aGUgd2FpdGVkLWZvciBpbnRlcnJ1cHRzIGlu CisgKiAnYXR0ZW50aW9uX21hc2snLiAgQXQgb3RoZXIgdGltZXMsIHRoZSAnYXR0ZW50aW9u X21hc2snIGVxdWFscworICogRW5hYmxlZEludGVycnVwdHNNYXNrLCBpLmUuIHRoZSBpbnRl cnJ1cHRzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBieSBhCisgKiBDSEVDS19GT1JfSU5URVJS VVBUUygpLgogICoKLSAqIFRoaXMgaXMgbm9ybWFsbHkgZGlzYWJsZWQgYW5kIHRoZXJlZm9y ZSBub3QgaGFuZGxlZCBhdAotICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4gVGhlICJtYWlu IGxvb3AiIGluIGVhY2ggcHJvY2VzcyBpcyBleHBlY3RlZCB0bwotICogY2hlY2sgZm9yIGl0 IGV4cGxpY2l0bHkuCi0gKi8KLSNkZWZpbmUgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQJCQkJ CVVJTlQ2NF9CSVQoNCkKLQotLyoKLSAqIExvZyBjdXJyZW50IG1lbW9yeSBjb250ZXh0cywg c2VudCBieSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQotICovCi0jZGVmaW5l IElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQgCQkJVUlOVDY0X0JJVCg1KQotCi0vKgot ICogcHJvY3NpZ25hbCBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQKLSAqLwotI2RlZmluZSBJ TlRFUlJVUFRfQkFSUklFUgkJCQkJCVVJTlQ2NF9CSVQoNikKLQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIEludGVycnVwdHMgdXNlZCBieSBjbGllbnQgYmFja2VuZHMgYW5kIG1vc3Qg b3RoZXIgcHJvY2Vzc2VzIHRoYXQKLSAqIGNvbm5lY3QgdG8gYSBwYXJ0aWN1bGFyIGRhdGFi YXNlLgorICogV2hlbiBhIGJhY2tlbmQgc2V0cyB0aGUgaW50ZXJydXB0IGJpdCBvZiBhbm90 aGVyIGJhY2tlbmQgKG9yIHRoZSBzYW1lCisgKiBiYWNrZW5kKSwgaXQgYWxzbyBjaGVja3Mg aWYgdGhhdCBpbnRlcnJ1cHQgaXMgaW4gdGhlIHRhcmdldCdzCisgKiAnYXR0ZW50aW9uX21h c2snLiAgSWYgc28sIGl0IHNldHMgdGhlIEFUVEVOVElPTiBmbGFnLiAgRnVydGhlcm1vcmUs IGlmIHRoZQorICogdGFyZ2V0IGJhY2tlbmQgaXMgY3VycmVudGx5IHNsZWVwaW5nLCBpLmUu IGlmIHRoZSBTTEVFUElORyBpcyBzZXQsIGl0IGFsc28KKyAqIHdha2VzIGl0IHVwLgogICoK LSAqIE1vc3Qgb2YgdGhlc2UgYXJlIGFsc28gcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgb25jZSBwcm9jZXNzCi0gKiBzdGFydHVwIGhhcyByZWFjaGVkIFNldFN0YW5k YXJkSW50ZXJydXB0cygpLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBSYWlzZWQgYnkg dGltZXJzICovCi0jZGVmaW5lIElOVEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VUCQkJVUlO VDY0X0JJVCg3KQotI2RlZmluZSBJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQJCQlV SU5UNjRfQklUKDgpCi0jZGVmaW5lIElOVEVSUlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NF U1NJT05fVElNRU9VVCBVSU5UNjRfQklUKDkpCi0jZGVmaW5lIElOVEVSUlVQVF9DTElFTlRf Q0hFQ0tfVElNRU9VVAkJCVVJTlQ2NF9CSVQoMTApCi0KLS8qIFJhaXNlZCBieSB0aW1lciB3 aGlsZSBpZGxlLCB0byBzZW5kIGEgc3RhdHMgdXBkYXRlICovCi0jZGVmaW5lIElOVEVSUlVQ VF9JRExFX1NUQVRTX1RJTUVPVVQJCQlVSU5UNjRfQklUKDExKQotCi0vKiBSYWlzZWQgc3lu Y2hyb25vdXNseSB3aGVuIHRoZSBjbGllbnQgY29ubmVjdGlvbiBpcyBsb3N0ICovCi0jZGVm aW5lIElOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElPTl9MT1NUCQkgVUlOVDY0X0JJVCgxMikK LQotLyoKLSAqIElOVEVSUlVQVF9BU1lOQ19OT1RJRlkgaXMgc2VudCB0byBub3RpZnkgYmFj a2VuZHMgdGhhdCBoYXZlIHJlZ2lzdGVyZWQgdG8KLSAqIExJU1RFTiBvbiBhbnkgY2hhbm5l bHMgdGhhdCB0aGV5IG1pZ2h0IGhhdmUgbWVzc2FnZXMgdGhleSBuZWVkIHRvIGRlbGl2ZXIK LSAqIHRvIHRoZSBmcm9udGVuZC4gSXQgaXMgYWxzbyBwcm9jZXNzZWQgd2hlbmV2ZXIgc3Rh cnRpbmcgdG8gcmVhZCBmcm9tIHRoZQotICogY2xpZW50IG9yIHdoaWxlIGRvaW5nIHNvLCBi dXQgb25seSB3aGVuIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluCi0gKiBwcm9ncmVzcy4K LSAqLwotI2RlZmluZSBJTlRFUlJVUFRfQVNZTkNfTk9USUZZCQkJCQlVSU5UNjRfQklUKDEz KQotCi0vKgotICogQmVjYXVzZSBiYWNrZW5kcyBzaXR0aW5nIGlkbGUgd2lsbCBub3QgYmUg cmVhZGluZyBzaW52YWwgZXZlbnRzLCB3ZSBuZWVkIGEKLSAqIHdheSB0byBnaXZlIGFuIGlk bGUgYmFja2VuZCBhIHN3aWZ0IGtpY2sgaW4gdGhlIHJlYXIgYW5kIG1ha2UgaXQgY2F0Y2gg dXAKLSAqIGJlZm9yZSB0aGUgc2ludmFsIHF1ZXVlIG92ZXJmbG93cyBhbmQgZm9yY2VzIGl0 IHRvIGdvIHRocm91Z2ggYSBjYWNoZSByZXNldAotICogZXhlcmNpc2UuICBUaGlzIGlzIGRv bmUgYnkgc2VuZGluZyBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAgdG8gYW55IGJhY2tlbmQK LSAqIHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KKyAqIFdoZW4gbm90IHNsZWVwaW5nLCB0 aGUgQVRURU5USU9OIGZsYWcgaXMgdXNlZCBhcyBhIHF1aWNrIGNoZWNrIGluCisgKiBDSEVD S19GT1JfSU5URVJSVVBUUygpIGZvciB3aGV0aGVyIGFueSBpbnRlcnJ1cHRzIG5lZWQgdG8g YmUgcHJvY2Vzc2VkLgorICogQ2hlY2tpbmcgYSBzaW5nbGUgZmxhZyByZXF1aXJlcyBmZXdl ciBpbnN0cnVjdGlvbnMgdGhhbiBjaGVja2luZyB0aGUKKyAqIGludGVycnVwdCBiaXRzIGFn YWluc3QgRW5hYmxlZEludGVycnVwdHNNYXNrOyB0aGUgYXR0ZW50aW9uIG1lY2hhbmlzbQor ICogc2hpZnRzIHRoYXQgd29yayB0byB0aGUgc2VuZGluZyBiYWNrZW5kLgogICoKLSAqIFRo ZSBpbnRlcnJ1cHQgaXMgcHJvY2Vzc2VkIHdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJlYWQgZnJv bSB0aGUgY2xpZW50LCBvcgotICogd2hlbiBpbnRlcnJ1cHRlZCB3aGlsZSBkb2luZyBzby4K KyAqIFRoZXJlIGFyZSByYWNlIGNvbmRpdGlvbnMgaW4gaG93IHRoZSBBVFRFTlRJT04gZmxh ZyBpcyBzZXQuICBJZiBhIGJhY2tlbmQKKyAqIGNsZWFycyBhIGJpdCBmcm9tIGl0cyAnYXR0 ZW50aW9uX21hc2snLCBhbmQgYW5vdGhlciBiYWNrZW5kIGlzIGNvbmN1cnJlbnRseQorICog c2VuZGluZyB0aGF0IGludGVycnVwdCwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBBVFRFTlRJ T04gZmxhZyBnZXRzIHNldCBvcgorICogdGhlIHByb2Nlc3MgaXMgd29rZW4gdXAgYWZ0ZXIg dGhlICdhdHRlbnRpb25fbWFzaycgaGFzIGFscmVhZHkgYmVlbgorICogY2xlYXJlZC4gIFRo ZSBzeXN0ZW0gdG9sZXJhdGVzIHNwdXJpb3VzbHkgc2V0IEFUVEVOVElPTiBmbGFnIGFuZCB3 YWtldXBzLAorICogc28gdGhhdCdzIE9LLiAgVGhlIG9wZXJhdGlvbnMgYXJlIG9yZGVyZWQg c28gdGhhdCB0aGUgb3Bwb3NpdGUgaXMgbm90CisgKiBwb3NzaWJsZTogaWYgeW91IHNldCBh IGJpdCBpbiB0aGUgJ2F0dGVudGlvbl9tYXNrJyBhbmQgdGhlbiBjaGVjayB0aGF0IHRoZQor ICogYml0IGlzIG5vdCBzZXQgaW4gdGhlICdpbnRlcnJ1cHRzJyBtYXNrLCB5b3UgYXJlIGd1 YXJhbnRlZWQgdG8gcmVjZWl2ZSB0aGUKKyAqIGF0dGVudGlvbiBmbGFnIG9yIGEgd2FrZXVw IGlmIHRoZSBpbnRlcnJ1cHQgaXMgc2V0IGxhdGVyLgogICovCi0jZGVmaW5lIElOVEVSUlVQ VF9TSU5WQUxfQ0FUQ0hVUAkJCQlVSU5UNjRfQklUKDE0KQotCi0vKiBNZXNzYWdlIGZyb20g YSBjb29wZXJhdGluZyBwYXJhbGxlbCBiYWNrZW5kIG9yIGFwcGx5IHdvcmtlciAqLwotI2Rl ZmluZSBJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRQkJCQlVSU5UNjRfQklUKDE1KQotCi0K LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotICogUHJvY2Vzcy1zcGVjaWZpYyBpbnRlcnJ1cHRzCi0g KgotICogU29tZSBwcm9jZXNzZXMgbmVlZCBkZWRpY2F0ZWQgaW50ZXJydXB0cyBmb3IgdmFy aW91cyBwdXJwb3Nlcy4gIElnbm9yZWQKLSAqIGJ5IG90aGVyIHByb2Nlc3Nlcy4KLSAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJcGdfYXRvbWljX3VpbnQzMiBm bGFnczsJCS8qIFBJX0ZMQUdfKiAqLwogCi0vKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJl IGZvciBzaHV0ZG93biAgKi8KLSNkZWZpbmUgSU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQ SU5HCQkJVUlOVDY0X0JJVCgxNikKKyNpZm5kZWYgUEdfSEFWRV9BVE9NSUNfVTY0X1NJTVVM QVRJT04KKwlwZ19hdG9taWNfdWludDY0IGludGVycnVwdHM7CS8qIHBlbmRpbmcgaW50ZXJy dXB0cyAqLworCXBnX2F0b21pY191aW50NjQgYXR0ZW50aW9uX21hc2s7CS8qIGludGVycnVw dHMgdGhhdCBzZXQgdGhlIEFUVEVOVElPTgorCQkJCQkJCQkJCSAqIGZsYWcgKi8KKyNlbHNl CisJcGdfYXRvbWljX3VpbnQzMiBpbnRlcnJ1cHRzX2xvOworCXBnX2F0b21pY191aW50MzIg aW50ZXJydXB0c19oaTsKKwlwZ19hdG9taWNfdWludDMyIGF0dGVudGlvbl9tYXNrX2xvOwor CXBnX2F0b21pY191aW50MzIgYXR0ZW50aW9uX21hc2tfaGk7CisjZW5kaWYKK30gUGVuZGlu Z0ludGVycnVwdHM7CiAKLS8qIFRPRE86IGRvY3VtZW50IHRoZSBkaWZmZXJlbmNlIHdpdGgg SU5URVJSVVBUX1dBTFNORF9JTklUX1NUT1BQSU5HICovCi0jZGVmaW5lIElOVEVSUlVQVF9X QUxTTkRfU1RPUAkJCQkJVUlOVDY0X0JJVCgxNykKKyNkZWZpbmUgUElfRkxBR19BVFRFTlRJ T04JCTB4MDEKKyNkZWZpbmUgUElfRkxBR19TTEVFUElORwkJMHgwMgogCiAvKgotICogSU5U RVJSVVBUX1dBTF9BUlJJVkVEIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3RhcnR1cCBwcm9j ZXNzLCB0byB0ZWxsCi0gKiBpdCB0aGF0IGl0IHNob3VsZCBjb250aW51ZSBXQUwgcmVwbGF5 LiBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyIHdoZW4KLSAqIG1vcmUgV0FMIGFycml2ZXMs IG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KKyAqIEludGVycnVwdCB2ZWN0b3Ig Y3VycmVudGx5IGluIHVzZSBmb3IgdGhpcyBwcm9jZXNzLiAgTW9zdCBvZiB0aGUgdGltZSB0 aGlzCisgKiBwb2ludHMgdG8gTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgYnV0IGluIHBy b2Nlc3NlcyB0aGF0IGhhdmUgbm8gUEdQUk9DCisgKiBlbnRyeSAoeWV0KSwgaXQgcG9pbnRz IHRvIGEgcHJvY2Vzcy1wcml2YXRlIHZhcmlhYmxlLCBzbyB0aGF0IGludGVycnVwdHMKKyAq IGNhbiBuZXZlcnRoZWxlc3MgYmUgdXNlZCBmcm9tIHNpZ25hbCBoYW5kbGVycyBpbiB0aGUg c2FtZSBwcm9jZXNzLgogICovCi0jZGVmaW5lIElOVEVSUlVQVF9XQUxfQVJSSVZFRAkJCQkJ VUlOVDY0X0JJVCgxOCkKLQotLyogV2FrZSB1cCBzdGFydHVwIHByb2Nlc3MgdG8gY2hlY2sg Zm9yIHRoZSBwcm9tb3Rpb24gc2lnbmFsIGZpbGUgKi8KLSNkZWZpbmUgSU5URVJSVVBUX0NI RUNLX1BST01PVEUJCQkJCVVJTlQ2NF9CSVQoMTkpCi0KLS8qIHNlbnQgdG8gbG9naWNhbCBy ZXBsaWNhdGlvbiBsYXVuY2hlciwgd2hlbiBhIHN1YnNjcmlwdGlvbiBjaGFuZ2VzICovCi0j ZGVmaW5lIElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFCQkJVUlOVDY0X0JJVCgyMCkK LQotLyogR3JhY2VmdWwgc2h1dGRvd24gcmVxdWVzdCBmb3IgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKi8KLSNkZWZpbmUgSU5URVJSVVBUX1NIVVRET1dOX1BBUkFMTEVMX0FQUExZX1dP UktFUiBVSU5UNjRfQklUKDIxKQotCi0vKiBSZXF1ZXN0IGNoZWNrcG9pbnRlciB0byBwZXJm b3JtIG9uZSBsYXN0IGNoZWNrcG9pbnQsIHRoZW4gc2h1dCBkb3duLiAqLwotI2RlZmluZSBJ TlRFUlJVUFRfU0hVVERPV05fWExPRwkJCQkJVUlOVDY0X0JJVCgyMikKLQotI2RlZmluZSBJ TlRFUlJVUFRfU0hVVERPV05fUEdBUkNICQkJCVVJTlQ2NF9CSVQoMjMpCitleHRlcm4gUEdE TExJTVBPUlQgUGVuZGluZ0ludGVycnVwdHMgKk15UGVuZGluZ0ludGVycnVwdHM7CiAKIC8q Ci0gKiBUaGlzIGlzIHNlbnQgdG8gdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIgd2hlbiBhbiBh dXRvdmFjdXVtIHdvcmtlciBleGl0cwotICovCi0jZGVmaW5lIElOVEVSUlVQVF9BVVRPVkFD VVVNX1dPUktFUl9GSU5JU0hFRCAJVUlOVDY0X0JJVCgyNCkKLQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIEVuZCBvZiBidWlsdC1pbiBpbnRlcnJ1cHQgYml0cworICogVGVzdCBpZiBh biBpbnRlcnJ1cHQgaXMgcGVuZGluZwogICoKLSAqIFRoZSByZW1haW5pbmcgYml0cyBhcmUg aGFuZGVkIG91dCBieSBSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQsIGZvcgotICogZXh0ZW5zaW9u cwotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLwotI2RlZmluZSBCRUdJTl9BRERJTl9JTlRFUlJVUFRT IDI1Ci0jZGVmaW5lIEVORF9BRERJTl9JTlRFUlJVUFRTIDYzCi0KLS8qCi0gKiBTTEVFUElO R19PTl9JTlRFUlJVUFRTIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGlzIGN1cnJlbnRs eSBibG9ja2VkCi0gKiB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQuICBJZiBzZXQsIHRoZSBi YWNrZW5kIG5lZWRzIHRvIGJlIHdva2VuIHVwIHdoZW4gYQotICogYml0IGluIHRoZSBwZW5k aW5nIGludGVycnVwdHMgbWFzayBpcyBzZXQuICBJdCdzIHVzZWQgaW50ZXJuYWxseSBieSB0 aGUKLSAqIGludGVycnVwdCBtYWNoaW5lcnksIGFuZCBjYW5ub3QgYmUgdXNlZCBkaXJlY3Rs eSBpbiB0aGUgcHVibGljIGZ1bmN0aW9ucy4KLSAqIEl0J3MgbmFtZWQgZGlmZmVyZW50bHkg dG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYWN0dWFsIGludGVycnVwdCBmbGFncy4KLSAq LwotI2RlZmluZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIFVJTlQ2NF9CSVQoNjMpCi0KLWV4 dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDY0ICpNeVBlbmRpbmdJbnRlcnJ1cHRz OwotCi0vKgotICogVGVzdCBhbiBpbnRlcnJ1cHQgZmxhZyAob3IgZmxhZ3MpLgorICogSWYg J2ludGVycnVwdE1hc2snIGhhcyBtdWx0aXBsZSBiaXRzIHNldCwgcmV0dXJucyB0cnVlIGlm IGFueSBvZiB0aGVtIGFyZQorICogcGVuZGluZy4KICAqLwogc3RhdGljIGlubGluZSBib29s CiBJbnRlcnJ1cHRQZW5kaW5nKEludGVycnVwdE1hc2sgaW50ZXJydXB0TWFzaykKIHsKIAkv KgotCSAqIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBtZW1vcnkgYmFycmllciBoZXJlLiBUaGlz IGlzIHVzZWQgaW4KLQkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCBzbyB3ZSB3YW50IHRo aXMgdG8gYmUgYXMgY2hlYXAgYXMgcG9zc2libGUuCi0JICoKLQkgKiBUaGF0IG1lYW5zIHRo YXQgaWYgdGhlIGludGVycnVwdCBpcyBjb25jdXJyZW50bHkgc2V0IGJ5IGFub3RoZXIKLQkg KiBwcm9jZXNzLCB3ZSBtaWdodCBtaXNzIGl0LiBUaGF0IHNob3VsZCBiZSBPSywgYmVjYXVz ZSB0aGUgbmV4dAotCSAqIFdhaXRJbnRlcnJ1cHQoKSBvciBlcXVpdmFsZW50IGNhbGwgYWN0 cyBhcyBhIHN5bmNocm9uaXphdGlvbiBiYXJyaWVyLgotCSAqIFdlIHdpbGwgc2VlIHRoZSB1 cGRhdGVkIHZhbHVlIGJlZm9yZSBzbGVlcGluZy4KKwkgKiBOb3RlIHRoYXQgdGhlcmUgaXMg bm8gbWVtb3J5IGJhcnJpZXIgaGVyZSwgYmVjYXVzZSB3ZSB3YW50IHRoaXMgdG8gYmUKKwkg KiBhcyBjaGVhcCBhcyBwb3NzaWJsZS4gIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGUgaW50ZXJy dXB0IGlzIGNvbmN1cnJlbnRseQorCSAqIHNldCBieSBhbm90aGVyIHByb2Nlc3MsIHdlIG1p Z2h0IG1pc3MgaXQuICBUaGF0IHNob3VsZCBiZSBPSywgYmVjYXVzZQorCSAqIHRoZSBuZXh0 IFdhaXRJbnRlcnJ1cHQoKSBvciBlcXVpdmFsZW50IGNhbGwgYWN0cyBhcyBhIHN5bmNocm9u aXphdGlvbgorCSAqIGJhcnJpZXI7IHdlIHdpbGwgc2VlIHRoZSB1cGRhdGVkIHZhbHVlIGJl Zm9yZSBzbGVlcGluZy4KIAkgKi8KLQlyZXR1cm4gKHBnX2F0b21pY19yZWFkX3U2NChNeVBl bmRpbmdJbnRlcnJ1cHRzKSAmIGludGVycnVwdE1hc2spICE9IDA7CisJdWludDY0CQlwZW5k aW5nOworCisjaWZuZGVmIFBHX0hBVkVfQVRPTUlDX1U2NF9TSU1VTEFUSU9OCisJcGVuZGlu ZyA9IHBnX2F0b21pY19yZWFkX3U2NCgmTXlQZW5kaW5nSW50ZXJydXB0cy0+aW50ZXJydXB0 cyk7CisjZWxzZQorCXBlbmRpbmcgPSAodWludDY0KSBwZ19hdG9taWNfcmVhZF91MzIoJk15 UGVuZGluZ0ludGVycnVwdHMtPmludGVycnVwdHNfbG8pOworCXBlbmRpbmcgfD0gKHVpbnQ2 NCkgcGdfYXRvbWljX3JlYWRfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5pbnRlcnJ1cHRz X2hpKSA8PCAzMjsKKyNlbmRpZgorCisJcmV0dXJuIChwZW5kaW5nICYgaW50ZXJydXB0TWFz aykgIT0gMDsKIH0KIAogLyoKICAqIENsZWFyIGFuIGludGVycnVwdCBmbGFnIChvciBmbGFn cykuCisgKgorICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2xlYXIgdGhlIEFUVEVOVElP TiBmbGFnLCBzbyBpZiBpdCB3YXMgYWxyZWFkeSBzZXQsCisgKiB0aGUgbmV4dCBDSEVDS19G T1JfSU5URVJSVVBUUygpIHdpbGwgbWFrZSBhbiB1bm5lY2Vzc2FyeSBidXQgaGFybWxlc3MK KyAqIFByb2Nlc3NJbnRlcnJ1cHRzKCkgY2FsbC4KICAqLwogc3RhdGljIGlubGluZSB2b2lk CiBDbGVhckludGVycnVwdChJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2spCiB7Ci0JcGdf YXRvbWljX2ZldGNoX2FuZF91NjQoTXlQZW5kaW5nSW50ZXJydXB0cywgfmludGVycnVwdE1h c2spOworCXVpbnQ2NAkJbWFzayA9IH5pbnRlcnJ1cHRNYXNrOworCisjaWZuZGVmIFBHX0hB VkVfQVRPTUlDX1U2NF9TSU1VTEFUSU9OCisJKHZvaWQpIHBnX2F0b21pY19mZXRjaF9hbmRf dTY0KCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5pbnRlcnJ1cHRzLCBtYXNrKTsKKyNlbHNlCisJ KHZvaWQpIHBnX2F0b21pY19mZXRjaF9hbmRfdTMyKCZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5p bnRlcnJ1cHRzX2xvLCAodWludDMyKSBtYXNrKTsKKwkodm9pZCkgcGdfYXRvbWljX2ZldGNo X2FuZF91MzIoJk15UGVuZGluZ0ludGVycnVwdHMtPmludGVycnVwdHNfaGksICh1aW50MzIp IChtYXNrID4+IDMyKSk7CisjZW5kaWYKIH0KIAogLyoKQEAgLTI1NCwxMDYgKzE3MSwxMTAg QEAgZXh0ZXJuIHZvaWQgU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCk7CiBleHRlcm4g dm9pZCBTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCk7CiBleHRlcm4gdm9pZCBJbml0 aWFsaXplSW50ZXJydXB0V2FpdFNldCh2b2lkKTsKIAotdHlwZWRlZiB2b2lkICgqcGdfaW50 ZXJydXB0X2hhbmRsZXJfdCkgKHZvaWQpOwotZXh0ZXJuIHZvaWQgU2V0SW50ZXJydXB0SGFu ZGxlcihJbnRlcnJ1cHRNYXNrIGludGVycnVwdE1hc2ssIHBnX2ludGVycnVwdF9oYW5kbGVy X3QgaGFuZGxlcik7Ci0KLWV4dGVybiB2b2lkIEVuYWJsZUludGVycnVwdChJbnRlcnJ1cHRN YXNrIGludGVycnVwdE1hc2spOwotZXh0ZXJuIHZvaWQgRGlzYWJsZUludGVycnVwdChJbnRl cnJ1cHRNYXNrIGludGVycnVwdE1hc2spOwotCi0vKiBmb3IgZXh0ZW5zaW9ucyAqLwotZXh0 ZXJuIEludGVycnVwdE1hc2sgUmVxdWVzdEFkZGluSW50ZXJydXB0KHZvaWQpOwotCi0vKiBT dGFuZGFyZCBpbnRlcnJ1cHQgaGFuZGxlcnMuIERlZmluZWQgaW4gdGNvcC9wb3N0Z3Jlcy5j ICovCi1leHRlcm4gdm9pZCBTZXRTdGFuZGFyZEludGVycnVwdEhhbmRsZXJzKHZvaWQpOwot Ci1leHRlcm4gdm9pZCBQcm9jZXNzUXVlcnlDYW5jZWxJbnRlcnJ1cHQodm9pZCk7Ci1leHRl cm4gdm9pZCBQcm9jZXNzVGVybWluYXRlSW50ZXJydXB0KHZvaWQpOwotZXh0ZXJuIHZvaWQg UHJvY2Vzc0NvbmZpZ1JlbG9hZEludGVycnVwdCh2b2lkKTsKLWV4dGVybiB2b2lkIFByb2Nl c3NBc3luY05vdGlmeUludGVycnVwdCh2b2lkKTsKLWV4dGVybiB2b2lkIFByb2Nlc3NJZGxl U3RhdHNUaW1lb3V0SW50ZXJydXB0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY2Vzc1JlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY2Vzc1RyYW5z YWN0aW9uVGltZW91dEludGVycnVwdCh2b2lkKTsKLWV4dGVybiB2b2lkIFByb2Nlc3NJZGxl U2Vzc2lvblRpbWVvdXRJbnRlcnJ1cHQodm9pZCk7Ci1leHRlcm4gdm9pZCBQcm9jZXNzSWRs ZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dEludGVycnVwdCh2b2lkKTsKLWV4dGVybiB2 b2lkIFByb2Nlc3NDbGllbnRDaGVja1RpbWVvdXRJbnRlcnJ1cHQodm9pZCk7Ci1leHRlcm4g dm9pZCBQcm9jZXNzQ2xpZW50Q29ubmVjdGlvbkxvc3Qodm9pZCk7Ci0KLWV4dGVybiB2b2lk IFByb2Nlc3NBdXhQcm9jZXNzU2h1dGRvd25JbnRlcnJ1cHQodm9pZCk7Ci0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKgkgIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgYW5kIGZy aWVuZHMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAorLyogSW50ZXJydXB0cyBjdXJy ZW50bHkgZW5hYmxlZCBmb3IgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBwcm9jZXNzaW5nICov CitleHRlcm4gUEdETExJTVBPUlQgSW50ZXJydXB0TWFzayBFbmFibGVkSW50ZXJydXB0c01h c2s7CiAKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBJbnRlcnJ1cHRNYXNrIEVuYWJs ZWRJbnRlcnJ1cHRzTWFzazsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBJbnRlcnJ1 cHRNYXNrIENoZWNrRm9ySW50ZXJydXB0c01hc2s7Ci0KLWV4dGVybiB2b2lkIFByb2Nlc3NJ bnRlcnJ1cHRzKHZvaWQpOworLyoKKyAqIFBvaW50ZXIgdG8gTXlQZW5kaW5nSW50ZXJydXB0 cy0+ZmxhZ3MsIGV4Y2VwdCB3aGVuIGludGVycnVwdCBob2xkb2ZmIG9yIGEKKyAqIGNyaXRp Y2FsIHNlY3Rpb24gcHJldmVudHMgaW50ZXJydXB0cyBwcm9jZXNzaW5nLCBpbiB3aGljaCBj YXNlIHRoaXMgcG9pbnRzCisgKiB0byBhIGR1bW15IGFsbC16ZXJvcyB2YXJpYWJsZSAoWmVy b1BlbmRpbmdJbnRlcnJ1cHRzRmxhZ3MpIGluc3RlYWQuICBUaGlzCisgKiBhbGxvd3MgQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKSB0byBmb2xsb3cganVzdCB0aGlzIG9uZSBwb2ludGVyLCBh bmQgbm90IGhhdmUKKyAqIHRvIGNoZWNrIHRoZSBob2xkb2ZmIGNvdW50cyBzZXBhcmF0ZWx5 LgorICovCitleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqTXlQZW5kaW5n SW50ZXJydXB0c0ZsYWdzOwogCi0vKiBUZXN0IHdoZXRoZXIgYW4gaW50ZXJydXB0IGlzIHBl bmRpbmcgKi8KKy8qCisgKiBDaGVjayB3aGV0aGVyIGFueSBlbmFibGVkIGludGVycnVwdCBp cyBwZW5kaW5nLCB3aXRob3V0IHRyeWluZyB0byBzZXJ2aWNlCisgKiBpdCBpbW1lZGlhdGVs eS4gIFRoaXMgaXMgY2FuIGJlIHVzZWQgaW4gYSBIT0xEX0lOVEVSUlVQVFMoKSBibG9jayB0 byBjaGVjaworICogaWYgdGhlIEhPTERfSU5URVJSVVBUUygpIGlzIGRlbGF5aW5nIHRoZSBp bnRlcnJ1cHQgcHJvY2Vzc2luZy4KKyAqLwogI2lmbmRlZiBXSU4zMgotI2RlZmluZSBJTlRF UlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKG1hc2spIFwKLQkodW5saWtlbHkoSW50ZXJydXB0 UGVuZGluZyhtYXNrKSkpCisjZGVmaW5lIElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04o KSBcCisJKHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcoRW5hYmxlZEludGVycnVwdHNNYXNr KSkpCiAjZWxzZQotI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKG1hc2sp IFwKKyNkZWZpbmUgSU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpIFwKIAkodW5saWtl bHkoVU5CTE9DS0VEX1NJR05BTF9RVUVVRSgpKSA/IFwKIAkgcGd3aW4zMl9kaXNwYXRjaF9x dWV1ZWRfc2lnbmFscygpIDogKHZvaWQpIDAsCVwKLQkgdW5saWtlbHkoSW50ZXJydXB0UGVu ZGluZyhtYXNrKSkpCisJIHVubGlrZWx5KEludGVycnVwdFBlbmRpbmcoRW5hYmxlZEludGVy cnVwdHNNYXNrKSkpCiAjZW5kaWYKIAogLyoKLSAqIElzIFByb2Nlc3NJbnRlcnJ1cHRzKCkg Z3VhcmFudGVlZCB0byBjbGVhciBhbGwgdGhlIGJpdHMgaW4gJ21hc2snPwotICoKLSAqIChU aGUgaW50ZXJydXB0IGhhbmRsZXIgbWF5IHJlLXJhaXNlIHRoZSBpbnRlcnJ1cHQsIHRob3Vn aCkKKyAqIENhbiBpbnRlcnJ1cHRzIGJlIHByb2Nlc3NlZCBpbiB0aGUgY3VycmVudCBzdGF0 ZSwgaS5lLiBhcmUgdGhlIGludGVycnVwdHMKKyAqIG5vdCBwcmV2ZW50ZWQgYnkgdGhlIEhP TERfSU5URVJSVVBUUygpIG9yIGEgY3JpdGljYWwgc2VjdGlvbiBjcml0aWNhbAorICogc2Vj dGlvbj8KICAqLwotI2RlZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQobWFzaykg XAotCSgoKG1hc2spICYgQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzaykgPT0gKG1hc2spKQorI2Rl ZmluZSBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBcCisJKEludGVycnVwdEhvbGRv ZmZDb3VudCA9PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKIAotLyogU2VydmljZSBp bnRlcnJ1cHQsIGlmIG9uZSBpcyBwZW5kaW5nIGFuZCBpdCdzIHNhZmUgdG8gc2VydmljZSBp dCBub3cgKi8KKy8qCisgKiBJbnRlcnJ1cHRzIHRoYXQgd291bGQgYmUgcHJvY2Vzc2VkIGJ5 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuICBUaGlzIGlzCisgKiBlcXVhbCB0byBFbmFibGVk SW50ZXJydXB0c01hc2ssIGV4Y2VwdCB3aGVuIGludGVycnVwdHMgYXJlIGhlbGQgb2ZmIGJ5 CisgKiBIT0xEL1JFU1VNRV9JTlRFUlJVUFRTKCkgb3IgYSBjcml0aWNhbCBzZWN0aW9uLgor ICovCisjZGVmaW5lIENoZWNrRm9ySW50ZXJydXB0c01hc2sgXAorCShJTlRFUlJVUFRTX0NB Tl9CRV9QUk9DRVNTRUQoKSA/IEVuYWJsZWRJbnRlcnJ1cHRzTWFzayA6IDApCisKKy8qCisg KiBTZXJ2aWNlIGFuIGludGVycnVwdCwgaWYgb25lIGlzIHBlbmRpbmcgYW5kIGl0J3Mgc2Fm ZSB0byBzZXJ2aWNlIGl0IG5vdy4KKyAqCisgKiBOQjogVGhpcyBpcyBjYWxsZWQgZnJvbSBh bGwgb3ZlciB0aGUgY29kZWJhc2UsIGFuZCBpbiBmYWlybHkgdGlnaHQgbG9vcHMsCisgKiBz byB0aGlzIG5lZWRzIHRvIGJlIHZlcnkgc2hvcnQgYW5kIGZhc3Qgd2hlbiB0aGVyZSBpcyBu byB3b3JrIHRvIGRvIQorICovCiAjZGVmaW5lIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkJCQkJ CVwKIGRvIHsgXAotCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKENoZWNrRm9y SW50ZXJydXB0c01hc2spKSBcCisJaWYgKHVubGlrZWx5KHBnX2F0b21pY19yZWFkX3UzMihN eVBlbmRpbmdJbnRlcnJ1cHRzRmxhZ3MpICE9IDApKSBcCiAJCVByb2Nlc3NJbnRlcnJ1cHRz KCk7CQkJCQkJCQkJCQlcCiB9IHdoaWxlKDApCiAKK3R5cGVkZWYgdm9pZCAoKnBnX2ludGVy cnVwdF9oYW5kbGVyX3QpICh2b2lkKTsKK2V4dGVybiB2b2lkIFNldEludGVycnVwdEhhbmRs ZXIoSW50ZXJydXB0TWFzayBpbnRlcnJ1cHRNYXNrLCBwZ19pbnRlcnJ1cHRfaGFuZGxlcl90 IGhhbmRsZXIpOworCitleHRlcm4gdm9pZCBFbmFibGVJbnRlcnJ1cHQoSW50ZXJydXB0TWFz ayBpbnRlcnJ1cHRNYXNrKTsKK2V4dGVybiB2b2lkIERpc2FibGVJbnRlcnJ1cHQoSW50ZXJy dXB0TWFzayBpbnRlcnJ1cHRNYXNrKTsKKworZXh0ZXJuIHZvaWQgUHJvY2Vzc0ludGVycnVw dHModm9pZCk7CitleHRlcm4gdm9pZCBTZXRJbnRlcnJ1cHRBdHRlbnRpb25NYXNrKEludGVy cnVwdE1hc2sgbWFzayk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoJICBDcml0 aWNhbCBzZWN0aW9uIGFuZCBpbnRlcnJ1cHQgaG9sZG9mZiBtZWNoYW5pc20KICAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KIAotLyogdGhlc2UgYXJlIG1hcmtlZCB2b2xhdGlsZSBiZWNh dXNlIHRoZXkgYXJlIGV4YW1pbmVkIGJ5IHNpZ25hbCBoYW5kbGVyczogKi8KLS8qCi0gKiBY WFg6IGlzIHRoYXQgc3RpbGwgdHJ1ZT8gU2hvdWxkIHdlIHVzZSBsb2NhbCB2YXJzIHRvIGF2 b2lkIHJlcGVhdGVkIGFjY2VzcwotICogZS5nLiBpbnNpZGUgUkVTVU1FX0lOVEVSUlVQVFMo KSA/Ci0gKi8KLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1aW50MzIgSW50ZXJydXB0 SG9sZG9mZkNvdW50OwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBDcml0 U2VjdGlvbkNvdW50OworZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQzMiBJbnRlcnJ1cHRIb2xk b2ZmQ291bnQ7CitleHRlcm4gUEdETExJTVBPUlQgdWludDMyIENyaXRTZWN0aW9uQ291bnQ7 CisKK2V4dGVybiBjb25zdCBwZ19hdG9taWNfdWludDMyIFplcm9QZW5kaW5nSW50ZXJydXB0 c0ZsYWdzOwogCiBzdGF0aWMgaW5saW5lIHZvaWQKIEhPTERfSU5URVJSVVBUUyh2b2lkKQog ewogCUludGVycnVwdEhvbGRvZmZDb3VudCsrOwotCUNoZWNrRm9ySW50ZXJydXB0c01hc2sg PSAoSW50ZXJydXB0TWFzaykgMDsKKworCS8qCisJICogRGlzYWJsZSBDSEVDS19GT1JfSU5U RVJSVVBUUygpIGJ5IHBvaW50aW5nIE15UGVuZGluZ0ludGVycnVwdHNGbGFncyB0bworCSAq IGFuIGFsbC16ZXJvcyBjb25zdGFudC4KKwkgKi8KKwlNeVBlbmRpbmdJbnRlcnJ1cHRzRmxh Z3MgPSB1bmNvbnN0aWZ5KHBnX2F0b21pY191aW50MzIgKiwgJlplcm9QZW5kaW5nSW50ZXJy dXB0c0ZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBSRVNVTUVfSU5URVJSVVBU Uyh2b2lkKQogewotCUFzc2VydChDaGVja0ZvckludGVycnVwdHNNYXNrID09IDApOwogCUFz c2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPiAwKTsKIAlJbnRlcnJ1cHRIb2xkb2ZmQ291 bnQtLTsKIAlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25D b3VudCA9PSAwKQotCQlDaGVja0ZvckludGVycnVwdHNNYXNrID0gRW5hYmxlZEludGVycnVw dHNNYXNrOwotCWVsc2UKLQkJQXNzZXJ0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgPT0gMCk7 CisJCU15UGVuZGluZ0ludGVycnVwdHNGbGFncyA9ICZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5m bGFnczsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBTVEFSVF9DUklUX1NFQ1RJT04odm9p ZCkKIHsKIAlDcml0U2VjdGlvbkNvdW50Kys7Ci0JQ2hlY2tGb3JJbnRlcnJ1cHRzTWFzayA9 IDA7CisJTXlQZW5kaW5nSW50ZXJydXB0c0ZsYWdzID0gdW5jb25zdGlmeShwZ19hdG9taWNf dWludDMyICosICZaZXJvUGVuZGluZ0ludGVycnVwdHNGbGFncyk7CiB9CiAKIHN0YXRpYyBp bmxpbmUgdm9pZApAQCAtMzYyLDkgKzI4Myw5IEBAIEVORF9DUklUX1NFQ1RJT04odm9pZCkK IAlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA+IDApOwogCUNyaXRTZWN0aW9uQ291bnQtLTsK IAlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDAgJiYgQ3JpdFNlY3Rpb25Db3VudCA9 PSAwKQotCQlDaGVja0ZvckludGVycnVwdHNNYXNrID0gRW5hYmxlZEludGVycnVwdHNNYXNr OwotCWVsc2UKLQkJQXNzZXJ0KENoZWNrRm9ySW50ZXJydXB0c01hc2sgPT0gMCk7CisJCU15 UGVuZGluZ0ludGVycnVwdHNGbGFncyA9ICZNeVBlbmRpbmdJbnRlcnJ1cHRzLT5mbGFnczsK IH0KIAorZXh0ZXJuIHZvaWQgUmVzZXRJbnRlcnJ1cHRIb2xkb2ZmQ291bnRzKHVpbnQzMiBu ZXdfaG9sZG9mZl9jb3VudCwgdWludDMyIG5ld19jcml0X3NlY3Rpb25fY291bnQpOworCiAj ZW5kaWYJCQkJCQkJLyogSVBDX0lOVEVSUlVQVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9pcGMvc3RhbmRhcmRfaW50ZXJydXB0cy5oIGIvc3JjL2luY2x1ZGUvaXBjL3N0YW5k YXJkX2ludGVycnVwdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uODkwN2IzNzhmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9pcGMvc3Rh bmRhcmRfaW50ZXJydXB0cy5oCkBAIC0wLDAgKzEsMTk0IEBACisjaWZuZGVmIElQQ19TVEFO REFSRF9JTlRFUlJVUFRTX0gKKyNkZWZpbmUgSVBDX1NUQU5EQVJEX0lOVEVSUlVQVFNfSAor CisvKiBkZWZpbmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSB0byBpbnRl cnJ1cHQuaCAqLwordHlwZWRlZiB1aW50NjQgSW50ZXJydXB0TWFzazsKKworLyoKKyAqIElu dGVycnVwdCBiaXRzIHRoYXQgdXNlZCBpbiBQZW5kaW5nSW50cnJ1cHRzLT5pbnRlcnJ1cHRz IGJpdG1hc2suICBFYWNoCisgKiB2YWx1ZSBpcyBhIGRpZmZlcmVudCBiaXQsIHNvIHRoYXQg dGhlc2UgY2FuIGJlIGNvbnZlbmllbnRseSBPUidkIHRvZ2V0aGVyLgorICovCisjZGVmaW5l IFVJTlQ2NF9CSVQoc2hpZnQpIChVSU5UNjRfQygxKSA8PCAoc2hpZnQpKQorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqIEJlZ2luIGRlZmluaXRpb25zIG9mIGJ1aWx0LWluIGludGVycnVw dCBiaXRzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBJTlRFUlJVUFRfV0FJVF9X QUtFVVAgaXMgc2hhcmVkIGJ5IG1hbnkgdXNlIGNhc2VzIHRoYXQgbmVlZCB0byB3YWtlIHVw CisgKiBhIHByb2Nlc3MsIHdoaWNoIGRvbid0IG5lZWQgYSBkZWRpY2F0ZWQgaW50ZXJydXB0 IGJpdC4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfV0FJVF9XQUtFVVAJCQkJCVVJTlQ2NF9C SVQoMCkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFN0YW5kYXJkIGludGVycnVwdHMg aGFuZGxlZCB0aGUgc2FtZSBieSBtb3N0IHByb2Nlc3NlcworICoKKyAqIE1vc3Qgb2YgdGhl c2UgYXJlIG5vcm1hbGx5IHByb2Nlc3NlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpIG9u Y2UKKyAqIHByb2Nlc3Mgc3RhcnR1cCBoYXMgcmVhY2hlZCBTZXRTdGFuZGFyZEludGVycnVw dHMoKS4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEJhY2tlbmQgaGFzIGJlZW4g cmVxdWVzdGVkIHRvIHRlcm1pbmF0ZSBncmFjZWZ1bGx5LgorICoKKyAqIFRoaXMgaXMgcmFp c2VkIGJ5IHRoZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyLCBvciBjYW4gYmUgc2VudCBkaXJl Y3RseSBieQorICogYW5vdGhlciBiYWNrZW5kIGUuZy4gd2l0aCBwZ190ZXJtaW5hdGVfYmFj a2VuZCgpLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9URVJNSU5BVEUJCQkJCQlVSU5UNjRf QklUKDEpCisKKy8qCisgKiBDYW5jZWwgY3VycmVudCBxdWVyeSwgaWYgYW55LgorICoKKyAq IFNlbnQgdG8gcmVndWxhciBiYWNrZW5kcyBieSBwZ19jYW5jZWxfYmFja2VuZCgpLCBTSUdJ TlQsIG9yIGluIHJlc3BvbnNlIHRvCisgKiBhIHF1ZXJ5IGNhbmNlbGxhdGlvbiBwYWNrZXQu ICBTb21lIG90aGVyIHByb2Nlc3NlcyBsaWtlIGF1dG92YWN1dW0gd29ya2VycworICogYW5k IGxvZ2ljYWwgZGVjb2RpbmcgcHJvY2Vzc2VzIGFsc28gcmVhY3QgdG8gdGhpcy4KKyAqLwor I2RlZmluZSBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMCQkJCQlVSU5UNjRfQklUKDIpCisKKy8q CisgKiBSZWNvdmVyeSBjb25mbGljdC4gVGhpcyBpcyBzZW50IGJ5IHRoZSBzdGFydHVwIHBy b2Nlc3MgaW4gaG90IHN0YW5kYnkgbW9kZQorICogd2hlbiBhIGJhY2tlbmQgaG9sZHMgYmFj ayB0aGUgV0FMIHJlcGxheSBmb3IgdG9vIGxvbmcuIFRoZSByZWFzb24gZm9yIHRoZQorICog Y29uZmxpY3QgaW5kaWNhdGVkIGJ5IHRoZSBQR1BST0MtPnBlbmRpbmdSZWNvdmVyeUNvbmZs aWN0cworICogYml0bWFzay4gQ29uZmxpY3RzIGFyZSBnZW5lcmFsbHkgcmVzb2x2ZWQgYnkg dGVybWluYXRpbmcgdGhlIGN1cnJlbnQgcXVlcnkKKyAqIG9yIHNlc3Npb24uIFRoZSBleGFj dCByZWFjdGlvbiBkZXBlbmRzIG9uIHRoZSByZWFzb24gYW5kIHdoYXQgc3RhdGUgdGhlCisg KiBiYWNrZW5kIGlzIGluLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9SRUNPVkVSWV9DT05G TElDVCAJCQlVSU5UNjRfQklUKDMpCisKKy8qCisgKiBDb25maWcgZmlsZSByZWxvYWQgaXMg cmVxdWVzdGVkLgorICoKKyAqIFRoaXMgaXMgbm9ybWFsbHkgZGlzYWJsZWQgYW5kIHRoZXJl Zm9yZSBub3QgaGFuZGxlZCBhdAorICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKS4gVGhlICJt YWluIGxvb3AiIGluIGVhY2ggcHJvY2VzcyBpcyBleHBlY3RlZCB0bworICogY2hlY2sgZm9y IGl0IGV4cGxpY2l0bHkuCisgKi8KKyNkZWZpbmUgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQJ CQkJCVVJTlQ2NF9CSVQoNCkKKworLyoKKyAqIExvZyBjdXJyZW50IG1lbW9yeSBjb250ZXh0 cywgc2VudCBieSBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoKQorICovCisjZGVm aW5lIElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQgCQkJVUlOVDY0X0JJVCg1KQorCisv KgorICogcHJvY3NpZ25hbCBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQKKyAqLworI2RlZmlu ZSBJTlRFUlJVUFRfQkFSUklFUgkJCQkJCVVJTlQ2NF9CSVQoNikKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqIEludGVycnVwdHMgdXNlZCBieSBjbGllbnQgYmFja2VuZHMgYW5kIG1v c3Qgb3RoZXIgcHJvY2Vzc2VzIHRoYXQKKyAqIGNvbm5lY3QgdG8gYSBwYXJ0aWN1bGFyIGRh dGFiYXNlLgorICoKKyAqIE1vc3Qgb2YgdGhlc2UgYXJlIGFsc28gcHJvY2Vzc2VkIGJ5IENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgb25jZSBwcm9jZXNzCisgKiBzdGFydHVwIGhhcyByZWFj aGVkIFNldFN0YW5kYXJkSW50ZXJydXB0cygpLgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisv KiBSYWlzZWQgYnkgdGltZXJzICovCisjZGVmaW5lIElOVEVSUlVQVF9UUkFOU0FDVElPTl9U SU1FT1VUCQkJVUlOVDY0X0JJVCg3KQorI2RlZmluZSBJTlRFUlJVUFRfSURMRV9TRVNTSU9O X1RJTUVPVVQJCQlVSU5UNjRfQklUKDgpCisjZGVmaW5lIElOVEVSUlVQVF9JRExFX0lOX1RS QU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCBVSU5UNjRfQklUKDkpCisjZGVmaW5lIElOVEVS UlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9VVAkJCVVJTlQ2NF9CSVQoMTApCisKKy8qIFJhaXNl ZCBieSB0aW1lciB3aGlsZSBpZGxlLCB0byBzZW5kIGEgc3RhdHMgdXBkYXRlICovCisjZGVm aW5lIElOVEVSUlVQVF9JRExFX1NUQVRTX1RJTUVPVVQJCQlVSU5UNjRfQklUKDExKQorCisv KiBSYWlzZWQgc3luY2hyb25vdXNseSB3aGVuIHRoZSBjbGllbnQgY29ubmVjdGlvbiBpcyBs b3N0ICovCisjZGVmaW5lIElOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElPTl9MT1NUCQkgVUlO VDY0X0JJVCgxMikKKworLyoKKyAqIElOVEVSUlVQVF9BU1lOQ19OT1RJRlkgaXMgc2VudCB0 byBub3RpZnkgYmFja2VuZHMgdGhhdCBoYXZlIHJlZ2lzdGVyZWQgdG8KKyAqIExJU1RFTiBv biBhbnkgY2hhbm5lbHMgdGhhdCB0aGV5IG1pZ2h0IGhhdmUgbWVzc2FnZXMgdGhleSBuZWVk IHRvIGRlbGl2ZXIKKyAqIHRvIHRoZSBmcm9udGVuZC4gSXQgaXMgYWxzbyBwcm9jZXNzZWQg d2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZQorICogY2xpZW50IG9yIHdoaWxl IGRvaW5nIHNvLCBidXQgb25seSB3aGVuIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluCisg KiBwcm9ncmVzcy4KKyAqLworI2RlZmluZSBJTlRFUlJVUFRfQVNZTkNfTk9USUZZCQkJCQlV SU5UNjRfQklUKDEzKQorCisvKgorICogQmVjYXVzZSBiYWNrZW5kcyBzaXR0aW5nIGlkbGUg d2lsbCBub3QgYmUgcmVhZGluZyBzaW52YWwgZXZlbnRzLCB3ZSBuZWVkIGEKKyAqIHdheSB0 byBnaXZlIGFuIGlkbGUgYmFja2VuZCBhIHN3aWZ0IGtpY2sgaW4gdGhlIHJlYXIgYW5kIG1h a2UgaXQgY2F0Y2ggdXAKKyAqIGJlZm9yZSB0aGUgc2ludmFsIHF1ZXVlIG92ZXJmbG93cyBh bmQgZm9yY2VzIGl0IHRvIGdvIHRocm91Z2ggYSBjYWNoZSByZXNldAorICogZXhlcmNpc2Uu ICBUaGlzIGlzIGRvbmUgYnkgc2VuZGluZyBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAgdG8g YW55IGJhY2tlbmQKKyAqIHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KKyAqCisgKiBUaGUg aW50ZXJydXB0IGlzIHByb2Nlc3NlZCB3aGVuZXZlciBzdGFydGluZyB0byByZWFkIGZyb20g dGhlIGNsaWVudCwgb3IKKyAqIHdoZW4gaW50ZXJydXB0ZWQgd2hpbGUgZG9pbmcgc28uCisg Ki8KKyNkZWZpbmUgSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQCQkJCVVJTlQ2NF9CSVQoMTQp CisKKy8qIE1lc3NhZ2UgZnJvbSBhIGNvb3BlcmF0aW5nIHBhcmFsbGVsIGJhY2tlbmQgb3Ig YXBwbHkgd29ya2VyICovCisjZGVmaW5lIElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFCQkJ CVVJTlQ2NF9CSVQoMTUpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBQcm9jZXNzLXNw ZWNpZmljIGludGVycnVwdHMKKyAqCisgKiBTb21lIHByb2Nlc3NlcyBuZWVkIGRlZGljYXRl ZCBpbnRlcnJ1cHRzIGZvciB2YXJpb3VzIHB1cnBvc2VzLiAgSWdub3JlZAorICogYnkgb3Ro ZXIgcHJvY2Vzc2VzLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBhc2sgd2Fsc2VuZGVy cyB0byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KKyNkZWZpbmUgSU5URVJSVVBUX1dBTFNO RF9JTklUX1NUT1BQSU5HCQkJVUlOVDY0X0JJVCgxNikKKworLyogVE9ETzogZG9jdW1lbnQg dGhlIGRpZmZlcmVuY2Ugd2l0aCBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgKi8K KyNkZWZpbmUgSU5URVJSVVBUX1dBTFNORF9TVE9QCQkJCQlVSU5UNjRfQklUKDE3KQorCisv KgorICogSU5URVJSVVBUX1dBTF9BUlJJVkVEIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUgc3Rh cnR1cCBwcm9jZXNzLCB0byB0ZWxsCisgKiBpdCB0aGF0IGl0IHNob3VsZCBjb250aW51ZSBX QUwgcmVwbGF5LiBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyIHdoZW4KKyAqIG1vcmUgV0FM IGFycml2ZXMsIG9yIHdoZW4gcHJvbW90aW9uIGlzIHJlcXVlc3RlZC4KKyAqLworI2RlZmlu ZSBJTlRFUlJVUFRfV0FMX0FSUklWRUQJCQkJCVVJTlQ2NF9CSVQoMTgpCisKKy8qIFdha2Ug dXAgc3RhcnR1cCBwcm9jZXNzIHRvIGNoZWNrIGZvciB0aGUgcHJvbW90aW9uIHNpZ25hbCBm aWxlICovCisjZGVmaW5lIElOVEVSUlVQVF9DSEVDS19QUk9NT1RFCQkJCQlVSU5UNjRfQklU KDE5KQorCisvKiBzZW50IHRvIGxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIsIHdoZW4g YSBzdWJzY3JpcHRpb24gY2hhbmdlcyAqLworI2RlZmluZSBJTlRFUlJVUFRfU1VCU0NSSVBU SU9OX0NIQU5HRQkJCVVJTlQ2NF9CSVQoMjApCisKKy8qIEdyYWNlZnVsIHNodXRkb3duIHJl cXVlc3QgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisjZGVmaW5lIElOVEVSUlVQ VF9TSFVURE9XTl9QQVJBTExFTF9BUFBMWV9XT1JLRVIgVUlOVDY0X0JJVCgyMSkKKworLyog UmVxdWVzdCBjaGVja3BvaW50ZXIgdG8gcGVyZm9ybSBvbmUgbGFzdCBjaGVja3BvaW50LCB0 aGVuIHNodXQgZG93bi4gKi8KKyNkZWZpbmUgSU5URVJSVVBUX1NIVVRET1dOX1hMT0cJCQkJ CVVJTlQ2NF9CSVQoMjIpCisKKyNkZWZpbmUgSU5URVJSVVBUX1NIVVRET1dOX1BHQVJDSAkJ CQlVSU5UNjRfQklUKDIzKQorCisvKgorICogVGhpcyBpcyBzZW50IHRvIHRoZSBhdXRvdmFj dXVtIGxhdW5jaGVyIHdoZW4gYW4gYXV0b3ZhY3V1bSB3b3JrZXIgZXhpdHMKKyAqLworI2Rl ZmluZSBJTlRFUlJVUFRfQVVUT1ZBQ1VVTV9XT1JLRVJfRklOSVNIRUQgCVVJTlQ2NF9CSVQo MjQpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2YgYnVpbHQtaW4gaW50ZXJy dXB0IGJpdHMKKyAqCisgKiBUaGUgcmVtYWluaW5nIGJpdHMgYXJlIGhhbmRlZCBvdXQgYnkg UmVxdWVzdEFkZGluSW50ZXJydXB0LCBmb3IKKyAqIGV4dGVuc2lvbnMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKyNkZWZpbmUgQkVHSU5fQURESU5fSU5URVJSVVBUUyAyNQorI2RlZmluZSBF TkRfQURESU5fSU5URVJSVVBUUyA2NAorCisKKy8qIGZvciBleHRlbnNpb25zICovCitleHRl cm4gSW50ZXJydXB0TWFzayBSZXF1ZXN0QWRkaW5JbnRlcnJ1cHQodm9pZCk7CisKKy8qIFN0 YW5kYXJkIGludGVycnVwdCBoYW5kbGVycy4gRGVmaW5lZCBpbiB0Y29wL3Bvc3RncmVzLmMg Ki8KK2V4dGVybiB2b2lkIFNldFN0YW5kYXJkSW50ZXJydXB0SGFuZGxlcnModm9pZCk7CisK K2V4dGVybiB2b2lkIFByb2Nlc3NRdWVyeUNhbmNlbEludGVycnVwdCh2b2lkKTsKK2V4dGVy biB2b2lkIFByb2Nlc3NUZXJtaW5hdGVJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQ cm9jZXNzQ29uZmlnUmVsb2FkSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vz c0FzeW5jTm90aWZ5SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0lkbGVT dGF0c1RpbWVvdXRJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzUmVjb3Zl cnlDb25mbGljdEludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzVHJhbnNh Y3Rpb25UaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0lkbGVT ZXNzaW9uVGltZW91dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NJZGxl SW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0SW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZv aWQgUHJvY2Vzc0NsaWVudENoZWNrVGltZW91dEludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2 b2lkIFByb2Nlc3NDbGllbnRDb25uZWN0aW9uTG9zdCh2b2lkKTsKKworZXh0ZXJuIHZvaWQg UHJvY2Vzc0F1eFByb2Nlc3NTaHV0ZG93bkludGVycnVwdCh2b2lkKTsKKworCisjZW5kaWYJ CQkJCQkJLyogSVBDX1NUQU5EQVJEX0lOVEVSUlVQVFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApp bmRleCAwMGVhOWY4NjQyMi4uZmFiODkyZjhiM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC0z MjUsNyArMzI1LDcgQEAgc3RydWN0IFBHUFJPQwogCWRsaXN0X25vZGUJbG9ja0dyb3VwTGlu azsJLyogbXkgbWVtYmVyIGxpbmssIGlmIEknbSBhIG1lbWJlciAqLwogCiAJLyogQml0IG1h c2sgb2YgcGVuZGluZyBpbnRlcnJ1cHRzLCB3YWl0aW5nIHRvIGJlIHByb2Nlc3NlZCAqLwot CXBnX2F0b21pY191aW50NjQgcGVuZGluZ0ludGVycnVwdHM7CisJUGVuZGluZ0ludGVycnVw dHMgcGVuZGluZ0ludGVycnVwdHM7CiAKIAkvKgogCSAqIFdoaWxlIGluIGhvdCBzdGFuZGJ5 IG1vZGUsIHNob3dzIHRoYXQgYSBjb25mbGljdCBzaWduYWwgaGFzIGJlZW4gc2VudApkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5YTVkOGFjMTBlOS4uYmZiOGEwMDFkODEg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yMTg0LDYgKzIxODQsNyBAQCBQ YXR0ZXJuSW5mb0FycmF5CiBQYXR0ZXJuX1ByZWZpeF9TdGF0dXMKIFBhdHRlcm5fVHlwZQog UGVuZGluZ0ZzeW5jRW50cnkKK1BlbmRpbmdJbnRlcnJ1cHRzCiBQZW5kaW5nTGlzdGVuQWN0 aW9uCiBQZW5kaW5nTGlzdGVuRW50cnkKIFBlbmRpbmdSZWxEZWxldGUKLS0gCjIuNDcuMwoK --------------Xsr2PBMWcn0m5VqN9pqECXzS--