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.94.2) (envelope-from ) id 1tqEKE-001YDD-GK for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 16:44:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tqEKD-0003U0-6H for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Mar 2025 16:43:57 +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.94.2) (envelope-from ) id 1tqEKC-0003Rm-7z for pgsql-hackers@lists.postgresql.org; Thu, 06 Mar 2025 16:43:56 +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.96) (envelope-from ) id 1tqEK6-001KaN-1n for pgsql-hackers@postgresql.org; Thu, 06 Mar 2025 16:43:55 +0000 Received: from [192.168.1.112] (iptv-hkibng21-58c090-167.dhcp.inet.fi [88.192.144.167]) (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 4Z7wGr17xcz49Q3S; Thu, 6 Mar 2025 18:43:48 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1741279429; 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=DW9Mp7drVhCGSzAR1vHwP3VomF/3/m9WiCtKT83bww0=; b=IpbxB5taCfUuY8N0Yz2CqAS7FEjxbZZ9A8/nEndfYTW4/khmHV/Jjl30bYpdcpduSiPxZw oXpycZuszGmwdDZajX1p4PjAzqijbS5HXMYPcNKbYUTOn/Vku95Mk3BdyL+kZoln26DpDV 37LS0gLpwZ1DUDVjDzjxxyiGnRbCdIJmq3q0mYiIW5dQZW87j4lvLW8TehgSy/AQHU7l5v 18Zg1+VKmkHbcB6iFY5OKPCvBZ1Sow7tF7ubEmi7j8ovlyW4BajWC3KoqQAvrZg268Mt0i VriBWbVeltRu3CHG+ctuWUItZeYPk4TPDdQznnmUTkEAQevTJILL+snIGsWIhA== ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1741279429; a=rsa-sha256; cv=none; b=MSQ55pZO/Q/6faFYrDFeFfqpY7a7UebXN9iorfzLZY83C52YqZFOzDkOU0ZueDO9+9OefS XZUmKwDvrCP4YV5UtY6vedV/oEnKAnSgaFdqB17eJwFaxoqe78OSS/qsrF6r4QLaLqsVK9 jtLY10PpdPoPiz3uhPMSByykQzGPb0yMdhl4y5FgevgCF4M3CN7c9jAGsN3X0xc/4ofNDA IJm7JzmWPzx325O3vrc9xf25/M9GDlovul5Pl0LCFXoyJjd8NsJ0bAo00T3ObtNeYfEXOH oWZRj8BrWYrP69Sx9pLTFRt54UihOMG9o5azHkNAeX3wdd95cfOw9r9S5WIjEw== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1741279429; 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=DW9Mp7drVhCGSzAR1vHwP3VomF/3/m9WiCtKT83bww0=; b=Vg94vhU+wHexks3QaA0b+iJRITUN+GvYqnIno/HceeY6/Z+1HSYMwX7gHGpAplewrHo34D WzeDNLW5HrGRl6RhRYpBZ6BVX8NXRaUqXaEMftX5mlqL43Ovbs6+C8iZwC+ee7dYPaOOel 0tzfpdCH4sKEgSNac6MFd0rERjbMSczgQawud+AOrooNk5EM1uMpmSrOB59fqG7A7xiUS1 zaT7swjmxdlasUwbhwYfSdkQj9Qs+/riUbpomT7e6bn9+dQdIicshngmlCCZb5JOdO7SvK Y7NyeslEesL5bx4SOL56MYZJTed+SRJ1M7vGqWNOTMM67cP25xPo3KTY9bWOPQ== Content-Type: multipart/mixed; boundary="------------kl7e3aDdgBl9cMvp58xJLWGu" Message-ID: Date: Thu, 6 Mar 2025 18:43:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Interrupts vs signals From: Heikki Linnakangas To: Andres Freund , Thomas Munro Cc: Michael Paquier , Robert Haas , Fujii Masao , pgsql-hackers References: <8a0ff52f-de8e-49d2-a3af-ea5bc12f5b97@iki.fi> <4ddab51d-e932-40c5-b6fa-18c52db0e082@iki.fi> <08382e5c-a820-4aca-90ac-fab50cd4599c@iki.fi> Content-Language: en-US In-Reply-To: <08382e5c-a820-4aca-90ac-fab50cd4599c@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. --------------kl7e3aDdgBl9cMvp58xJLWGu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 06/03/2025 02:47, Heikki Linnakangas wrote: > Here's a new patch set. It includes the previous work, and also goes the > whole hog and replaces procsignals and many other signalling with > interrupts. It's based on Thomas's v3-0002-Redesign-interrupts-remove- > ProcSignals.patch much earlier in this thread. And here's yet another version. It's the same at high level, but with a ton of little fixes. One notable change is that I merged storage/interrupt.[ch] with postmaster/interrupt.[ch], so the awkwardness of having two files with same name is gone. -- Heikki Linnakangas Neon (https://neon.tech) --------------kl7e3aDdgBl9cMvp58xJLWGu Content-Type: text/x-patch; charset=UTF-8; name="v7-0001-Replace-Latches-with-Interrupts.patch" Content-Disposition: attachment; filename="v7-0001-Replace-Latches-with-Interrupts.patch" Content-Transfer-Encoding: base64 RnJvbSAyNjE0ZjRlZGRhNzgxNjlmYTNmNzBiNjdmMDcwMzJjNzcwNzA2YTA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFNhdCwgMSBNYXIgMjAyNSAwMDoxODowMyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjcgMS80XSBSZXBsYWNlIExhdGNoZXMgd2l0aCBJbnRlcnJ1cHRz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGUgTGF0Y2ggd2FzIGEg ZmxhZywgd2l0aCBhbiBpbnRlci1wcm9jZXNzIHNpZ25hbGxpbmcgbWVjaGFuaXNtIHRoYXQK YWxsb3dlZCBhIHByb2Nlc3MgdG8gd2FpdCBmb3IgdGhlIExhdGNoIHRvIGJlIHNldC4gTXkg b3JpZ2luYWwgdmlzaW9uCmZvciBMYXRjaGVzIHdhcyB0aGF0IHlvdSBjb3VsZCBoYXZlIGRp ZmZlcmVudCBsYXRjaGVzIGZvciBkaWZmZXJlbnQKdGhpbmdzIHRoYXQgeW91IG5lZWQgdG8g d2FpdCBmb3IsIGJ1dCBpbiBwcmFjdGljZSwgYWxtb3N0IGFsbCBjb2RlCnVzZWQgb25lICJw cm9jZXNzIGxhdGNoIiB0aGF0IHdhcyBzaGFyZWQgZm9yIGFsbCB3YWtldXBzLiBUaGUgb25s eQpleGNlcHRpb24gd2FzIHRoZSAicmVjb3ZlcnlXYWtldXBMYXRjaCIuIEkgdGhpbmsgdGhl IHJlYXNvbiB0aGF0IHdlCmVuZGVkIHVwIGp1c3Qgc2hhcmluZyB0aGUgc2FtZSBsYXRjaCBm b3IgYWxsIHdha2V1cHMgaXMgdGhhdCBpdCB3YXMKY3VtYmVyc29tZSBpbiBwcmFjdGljZSB0 byBkZWFsIHdpdGggbXVsdGlwbGUgbGF0Y2hlcy4gRm9yIHN0YXJ0ZXJzLAp0aGVyZSB3YXMg bm8gbWFjaGluZXJ5IGZvciB3YWl0aW5nIGZvciBtdWx0aXBsZSBsYXRjaGVzIGF0IHRoZSBz YW1lCnRpbWUuIFNlY29uZGx5LCBjaGFuZ2luZyB0aGUgIm93bmVyc2hpcCIgb2YgYSBsYXRj aCBuZWVkZWQgZXh0cmEKbG9ja2luZyBvciBvdGhlciBjb29yZGluYXRpb24uIFRoaXJkbHks IGVhY2ggaW50ZXItcHJvY2VzcyBsYXRjaApuZWVkZWQgdG8gYmUgaW5pdGlhbGl6ZWQgYXQg cG9zdG1hc3RlciBzdGFydHVwIHRpbWUuCgpUaGlzIHBhdGNoIGVtYnJhY2VzIHRoZSByZWFs aXR5IG9mIGhvdyBMYXRjaGVzIHdlcmUgdXNlZCwgYW5kIHJlcGxhY2VzCnRoZSBMYXRjaGVz IHdpdGggYSBwZXItcHJvY2VzcyBpbnRlcnJ1cHQgbWFzay4gWW91IGNhbiBubyBsb25nZXIK YWxsb2NhdGUgTGF0Y2hlcyBpbiBhcmJpdHJhcnkgc2hhcmVkIG1lbW9yeSBzdHJ1Y3RzIGFu ZCBhbiBpbnRlcnJ1cHQKaXMgYWx3YXlzIGRpcmVjdGVkIGF0IGEgcGFydGljdWxhciBwcm9j ZXNzLCBhZGRyZXNzZWQgYnkgaXRzClByb2NOdW1iZXIuICBFYWNoIHByb2Nlc3MgaGFzIGEg Yml0bWFzayBvZiBwZW5kaW5nIGludGVycnVwdHMgaW4KUEdQUk9DLgoKVGhpcyBjb21taXQg aW50cm9kdWNlcyB0d28gaW50ZXJydXB0IGJpdHMuIElOVEVSUlVQVF9HRU5FUkFMIHJlcGxh Y2VzCnRoZSBnZW5lcmFsLXB1cnBvc2UgcGVyLXByb2Nlc3MgbGF0Y2guIEFsbCBjb2RlIHRo YXQgcHJldmlvdXNseSBzZXQgYQpwcm9jZXNzJ3MgcHJvY2VzcyBsYXRjaCBub3cgc2V0cyBp dHMgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0IGJpdAppbnN0ZWFkLgoKVGhlIHNlY29u ZCBpbnRlcnJ1cHQgYml0LCBJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUsIHJlcGxhY2Vz CnJlY292ZXJ5V2FrZXVwTGF0Y2guIFdpdGggdGhpcyBuZXcgaW50ZXJmYWNlLCB0aGUgY29k ZSBjYW4gZWFzaWx5IHdhaXQKZm9yIHRoZSByZWd1bGFyIGludGVycnVwdHMgKElOVEVSUlVQ VF9HRU5FUkFMKSBhdCB0aGUgc2FtZSB0aW1lIGFzCklOVEVSUlVQVF9SRUNPVkVSWV9DT05U SU5VRS4gUHJldmlvdXNseSwgdGhlIGNvZGUgdGhhdCB3YWl0ZWQgb24KcmVjb3ZlcnlXYWtl dXBMYXRjaCBoYWQgdG8gcmVzb3J0IHRvIHRpbWVvdXRzIHRvIHJlYWN0IHRvIG90aGVyCnNp Z25hbHMsIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byB3YWl0IGZvciB0d28gbGF0 Y2hlcyBhdCB0aGUKc2FtZSB0aW1lLiBQcmV2aW91cyBhdHRlbXB0IGF0IHVuaWZ5aW5nIHRo b3NlIHdha2V1cHMgd2FzIGluIGNvbW1pdAphYzIyOTI5YTI2LCBidXQgaXQgd2FzIHJldmVy dGVkIGluIGNvbW1pdCAwMGY2OTBhMjM5IGJlY2F1c2UgaXQgY2F1c2VkCmEgbG90IG9mIHNw dXJpb3VzIHdha2V1cHMgd2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzIHdhcyB3YWl0aW5nIGZv cgpyZWNvdmVyeSBjb25mbGljdHMuIFRoZSBuZXcgbWFjaGluZXJ5IGF2b2lkcyB0aGF0IHBy b2JsZW0gYnkgbWFraW5nIGl0CmVhc3kgdG8gd2FpdCBmb3IgdHdvIGludGVycnVwdHMgYXQg dGhlIHNhbWUgdGltZS4KCk1vcmUgaW50ZXJydXB0IGJpdHMgYXJlIHBsYW5uZWQgZm9yIGZv bGxvd3VwIHBhdGNoZXMsIHRvIHJlcGxhY2UgdGhlCnZhcmlvdXMgUHJvY1NpZ25hbCBiaXRz LCBhcyB3ZWxsIGFzIENvbmZpZ1JlbG9hZFBlbmRpbmcgYW5kClNodXRkb3duUmVxdWVzdFBl bmRpbmcuCgpSZXZpZXdlZC1ieTogVGhvbWFzIE11bnJvLCBBbmRyZXMgRnJldW5kLCBSb2Jl cnQgSGFhcywgw4FsdmFybyBIZXJyZXJhCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvNDc2NjcyZTctNjJmMS00Y2FiLWE4MjItZjNhOGU5NDlk ZDNmQGlraS5maQotLS0KIGNvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jICAgICAg ICAgICAgICB8ICAxOSArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jICAg ICAgICAgICAgIHwgIDIyICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcu YyAgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbCAgICAg ICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L1JFQURNRSAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcGFyYWxsZWwuYyAgICAgICAgIHwgIDMwICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dmdW5jcy5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgIDkxICsrLS0KIHNyYy9iYWNrZW5kL2Jh Y2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMv YmFja2VuZC9saWJwcS9hdXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNy Yy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1nc3NhcGkuYyAgICAgICAgICB8ICAxNSArLQog c3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYyAgICAgICAgIHwgICA3ICst CiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgMjkg Ky0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jICAgICAgICAgICAgICAgICAgICB8ICAy OSArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAgICAgICAgICAgIHwg ICA4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAg fCAgMjEgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAg ICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAg ICAgICB8ICAzNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAg ICAgICAgIHwgIDQ3ICstLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyAg ICAgICAgICAgIHwgMjYwICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w Z2FyY2guYyAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3RhcnR1cC5jICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9zeXNsb2dnZXIuYyAgICAgICAgICAgIHwgIDE3ICstCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyAgICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsd3JpdGVyLmMgICAgICAgICAgICB8ICAyMiArLQogLi4uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgIDMyICstCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMzggKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICA1MyArLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICAyMiArLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDM1ICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMjQgKy0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3N5bmNyZXAuYyAgICAgICAgICAgICB8ICAyOSAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgICAgIHwgIDQ2 ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jICAgIHwg ICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAg fCAgMjYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAg ICB8ICAxMCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAgICAg ICAgIHwgIDI3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZSAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyAgICAgICAg ICAgICAgIHwgMzg3IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htX21xLmMgICAgICAgICAgICAgIHwgMTAyICsrLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NpbnZhbC5jICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgIDIyICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYyAgICAgICAgfCAzODQgKysrKysrKysr LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUu YyB8ICAzNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAg ICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAg ICAgICAgfCAxMjcgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAg ICAgICAgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyAg ICAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdGltZXN0 YW1wLmMgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xv YmFscy5jICAgICAgICAgICAgICB8ICAgOSAtCiBzcmMvYmFja2VuZC91dGlscy9pbml0L21p c2Npbml0LmMgICAgICAgICAgICAgfCAgNTUgKy0tCiBzcmMvYmFja2VuZC91dGlscy9pbml0 L3Bvc3Rpbml0LmMgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvdGltZW91dC5jICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9tY3h0LmMgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvcGFyYWxsZWwuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbGli cHEvbGlicHEtYmUtZmUtaGVscGVycy5oICAgICAgIHwgIDQ1ICstCiBzcmMvaW5jbHVkZS9s aWJwcS9saWJwcS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRl L21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oICAgICAgICAgICAgfCAxNTEgKysrKysrLQogc3Jj L2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oICAgICAgICAgICAgICAgICAgIHwgMTQwIC0tLS0t LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICAx NiArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaCAgICAgICAgICAgIHwg IDM1ICstCiBzcmMvcG9ydC9wZ3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDggKy0KIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYyAgICAgICAg ICB8ICAgMiArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jICAgICAg ICAgIHwgICA5ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYyAgICAg ICAgICAgfCAgMTMgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMg ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9z cGkuYyAgICAgIHwgIDE5ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICAgfCAgIDIgKy0KIDgyIGZpbGVzIGNoYW5nZWQsIDEzODYgaW5zZXJ0aW9u cygrKSwgMTUyNyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUv c3RvcmFnZS9sYXRjaC5oCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9w cmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYwppbmRleCBiNDU3 NTViMzM0Ny4uMjBkYzc4ODVkNmEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcHJld2FybS9h dXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCkBA IC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3Iu aCIKQEAgLTIxNiwxMCArMjE1LDEwIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9h cmcpCiAJCWlmIChhdXRvcHJld2FybV9pbnRlcnZhbCA8PSAwKQogCQl7CiAJCQkvKiBXZSdy ZSBvbmx5IGR1bXBpbmcgYXQgc2h1dGRvd24sIHNvIGp1c3Qgd2FpdCBmb3JldmVyLiAqLwot CQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAtMUwsCi0JCQkJCQkJIFBHX1dBSVRfRVhU RU5TSU9OKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJ IC0xTCwKKwkJCQkJCQkJIFBHX1dBSVRfRVhURU5TSU9OKTsKIAkJfQogCQllbHNlCiAJCXsK QEAgLTI0MywxNCArMjQyLDE0IEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQl9CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZSBuZXh0IGR1bXAgdGltZS4gKi8KLQkJ CSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIGRlbGF5X2luX21zLAot CQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CisJCQkodm9pZCkgV2FpdEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkgZGVsYXlfaW5fbXMsCisJCQkJCQkJ CSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KIAogCQkvKiBSZXNldCB0aGUgbGF0Y2gsIGxv b3AuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5j CmluZGV4IDhlZjk3MDJjMDVjLi4wYzlmZGViOTJmZCAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nv bm5lY3Rpb24uYwpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RncmVzX2Zkdy5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCkBAIC04MDIsOCArODAyLDggQEAgZG9f c3FsX2NvbW1hbmRfZW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3FsLCBib29sIGNv bnN1bWVfaW5wdXQpCiAJLyoKIAkgKiBJZiByZXF1ZXN0ZWQsIGNvbnN1bWUgd2hhdGV2ZXIg ZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29ja2V0LiAoTm90ZQogCSAqIHRoYXQgaWYg YWxsIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGlzIGFsbG93cyBwZ2Zkd19nZXRfcmVzdWx0IHRv IGNhbGwKLQkgKiBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhlIG92ZXJoZWFkIG9m IFdhaXRMYXRjaE9yU29ja2V0LCB3aGljaAotCSAqIHdvdWxkIGJlIGxhcmdlIGNvbXBhcmVk IHRvIHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCisJICogUFFnZXRSZXN1bHQg d2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQs CisJICogd2hpY2ggd291bGQgYmUgbGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9m IFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlpZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25z dW1lSW5wdXQoY29ubikpCiAJCXBnZmR3X3JlcG9ydF9lcnJvcihFUlJPUiwgTlVMTCwgY29u biwgZmFsc2UsIHNxbCk7CkBAIC0xNDQ2LDcgKzE0NDYsNyBAQCBwZ2Zkd19jYW5jZWxfcXVl cnlfZW5kKFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSwKIAkvKgogCSAqIElm IHJlcXVlc3RlZCwgY29uc3VtZSB3aGF0ZXZlciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRo ZSBzb2NrZXQuIChOb3RlCiAJICogdGhhdCBpZiBhbGwgZGF0YSBpcyBhdmFpbGFibGUsIHRo aXMgYWxsb3dzIHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdCB0bwotCSAqIGNhbGwgUFFnZXRS ZXN1bHQgd2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0TGF0Y2hPclNvY2tl dCwKKwkgKiBjYWxsIFBRZ2V0UmVzdWx0IHdpdGhvdXQgZm9yY2luZyB0aGUgb3ZlcmhlYWQg b2YgV2FpdEludGVycnVwdE9yU29ja2V0LAogCSAqIHdoaWNoIHdvdWxkIGJlIGxhcmdlIGNv bXBhcmVkIHRvIHRoZSBvdmVyaGVhZCBvZiBQUWNvbnN1bWVJbnB1dC4pCiAJICovCiAJaWYg KGNvbnN1bWVfaW5wdXQgJiYgIVBRY29uc3VtZUlucHV0KGNvbm4pKQpAQCAtMTU0MSw3ICsx NTQxLDcgQEAgcGdmZHdfZXhlY19jbGVhbnVwX3F1ZXJ5X2VuZChQR2Nvbm4gKmNvbm4sIGNv bnN0IGNoYXIgKnF1ZXJ5LAogCS8qCiAJICogSWYgcmVxdWVzdGVkLCBjb25zdW1lIHdoYXRl dmVyIGRhdGEgaXMgYXZhaWxhYmxlIGZyb20gdGhlIHNvY2tldC4gKE5vdGUKIAkgKiB0aGF0 IGlmIGFsbCBkYXRhIGlzIGF2YWlsYWJsZSwgdGhpcyBhbGxvd3MgcGdmZHdfZ2V0X2NsZWFu dXBfcmVzdWx0IHRvCi0JICogY2FsbCBQUWdldFJlc3VsdCB3aXRob3V0IGZvcmNpbmcgdGhl IG92ZXJoZWFkIG9mIFdhaXRMYXRjaE9yU29ja2V0LAorCSAqIGNhbGwgUFFnZXRSZXN1bHQg d2l0aG91dCBmb3JjaW5nIHRoZSBvdmVyaGVhZCBvZiBXYWl0SW50ZXJydXB0T3JTb2NrZXQs CiAJICogd2hpY2ggd291bGQgYmUgbGFyZ2UgY29tcGFyZWQgdG8gdGhlIG92ZXJoZWFkIG9m IFBRY29uc3VtZUlucHV0LikKIAkgKi8KIAlpZiAoY29uc3VtZV9pbnB1dCAmJiAhUFFjb25z dW1lSW5wdXQoY29ubikpCkBAIC0xNjU0LDEyICsxNjU0LDEyIEBAIHBnZmR3X2dldF9jbGVh bnVwX3Jlc3VsdChQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IGVuZHRpbWUsCiAJCQkJCXBn ZmR3X3dlX2NsZWFudXBfcmVzdWx0ID0gV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJQb3N0Z3Jl c0Zkd0NsZWFudXBSZXN1bHQiKTsKIAogCQkJCS8qIFNsZWVwIHVudGlsIHRoZXJlJ3Mgc29t ZXRoaW5nIHRvIGRvICovCi0JCQkJd2MgPSBXYWl0TGF0Y2hPclNvY2tldChNeUxhdGNoLAot CQkJCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKLQkJCQkJ CQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJCQkJICAg UFFzb2NrZXQoY29ubiksCi0JCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2VfY2xl YW51cF9yZXN1bHQpOwotCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJd2MgPSBXYWl0 SW50ZXJydXB0T3JTb2NrZXQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCQkJICAgV0xf SU5URVJSVVBUIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJCQkgICBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJCQkgICBQUXNvY2tldChjb25u KSwKKwkJCQkJCQkJCQkgICBjdXJfdGltZW91dCwgcGdmZHdfd2VfY2xlYW51cF9yZXN1bHQp OworCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMK aW5kZXggMTEzMWE4YmY3N2UuLjMxY2Q5MmY5ZTM2IDEwMDY0NAotLS0gYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9w b3N0Z3Jlc19mZHcuYwpAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci90 bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwb3N0 Z3Jlc19mZHcuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3Rv cmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC03MzU1 LDcgKzczNTUsNyBAQCBwb3N0Z3Jlc0ZvcmVpZ25Bc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNS ZXF1ZXN0ICphcmVxKQogCQlBc3NlcnQocGVuZGluZ0FyZXEgPT0gYXJlcSk7CiAKIAlBZGRX YWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgUFFzb2NrZXQoZnNzdGF0 ZS0+Y29ubiksCi0JCQkJCSAgTlVMTCwgYXJlcSk7CisJCQkJCSAgMCwgYXJlcSk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbCBiL2RvYy9zcmMv c2dtbC9iZ3dvcmtlci5zZ21sCmluZGV4IDJjMzkzMzg1YTkxLi4zMTcxMDU0ZTU1ZCAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Jnd29ya2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2Jnd29ya2VyLnNnbWwKQEAgLTIyNyw3ICsyMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBCYWNr Z3JvdW5kV29ya2VyCiAgICByZWluaXRpYWxpemVzIHRoZSBjbHVzdGVyIGR1ZSB0byBhIGJh Y2tlbmQgZmFpbHVyZS4gIEJhY2tlbmRzIHdoaWNoIG5lZWQKICAgIHRvIHN1c3BlbmQgZXhl Y3V0aW9uIG9ubHkgdGVtcG9yYXJpbHkgc2hvdWxkIHVzZSBhbiBpbnRlcnJ1cHRpYmxlIHNs ZWVwCiAgICByYXRoZXIgdGhhbiBleGl0aW5nOyB0aGlzIGNhbiBiZSBhY2hpZXZlZCBieSBj YWxsaW5nCi0gICA8ZnVuY3Rpb24+V2FpdExhdGNoKCk8L2Z1bmN0aW9uPi4gTWFrZSBzdXJl IHRoZQorICAgPGZ1bmN0aW9uPldhaXRJbnRlcnJ1cHQoKTwvZnVuY3Rpb24+LiBNYWtlIHN1 cmUgdGhlCiAgICA8bGl0ZXJhbD5XTF9QT1NUTUFTVEVSX0RFQVRIPC9saXRlcmFsPiBmbGFn IGlzIHNldCB3aGVuIGNhbGxpbmcgdGhhdCBmdW5jdGlvbiwgYW5kCiAgICB2ZXJpZnkgdGhl IHJldHVybiBjb2RlIGZvciBhIHByb21wdCBleGl0IGluIHRoZSBlbWVyZ2VuY3kgY2FzZSB0 aGF0CiAgICA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4gaXRzZWxmIGhhcyB0ZXJtaW5h dGVkLgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbCBiL2RvYy9zcmMv c2dtbC9zb3VyY2VzLnNnbWwKaW5kZXggZmE2OGQ0ZDAyNGEuLmZjNjQyZjVmNzEzIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9z b3VyY2VzLnNnbWwKQEAgLTk4OSwxOSArOTg5LDE5IEBAIE1lbW9yeUNvbnRleHRTd2l0Y2hU byhNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAgICAgIGNhbGwgYXN5bmMtc2lnbmFsIHNhZmUg ZnVuY3Rpb25zIChhcyBkZWZpbmVkIGluIFBPU0lYKSBhbmQgYWNjZXNzCiAgICAgIHZhcmlh YmxlcyBvZiB0eXBlIDxsaXRlcmFsPnZvbGF0aWxlIHNpZ19hdG9taWNfdDwvbGl0ZXJhbD4u IEEgZmV3CiAgICAgIGZ1bmN0aW9ucyBpbiA8Y29tbWFuZD5wb3N0Z3JlczwvY29tbWFuZD4g YXJlIGFsc28gZGVlbWVkIHNpZ25hbCBzYWZlLCBpbXBvcnRhbnRseQotICAgICA8ZnVuY3Rp b24+U2V0TGF0Y2goKTwvZnVuY3Rpb24+LgorICAgICA8ZnVuY3Rpb24+UmFpc2VJbnRlcnJ1 cHQoKTwvZnVuY3Rpb24+LgogICAgIDwvcGFyYT4KICAgICA8cGFyYT4KICAgICAgSW4gbW9z dCBjYXNlcyBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGRvIG5vdGhpbmcgbW9yZSB0aGFuIG5v dGUKICAgICAgdGhhdCBhIHNpZ25hbCBoYXMgYXJyaXZlZCwgYW5kIHdha2UgdXAgY29kZSBy dW5uaW5nIG91dHNpZGUgb2YKLSAgICAgdGhlIGhhbmRsZXIgdXNpbmcgYSBsYXRjaC4gQW4g ZXhhbXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0aGUKKyAgICAgdGhlIGhhbmRsZXIgdXNp bmcgUmFpc2VJbnRlcnJ1cHQoKS4gQW4gZXhhbXBsZSBvZiBzdWNoIGEgaGFuZGxlciBpcyB0 aGUKICAgICAgZm9sbG93aW5nOgogPHByb2dyYW1saXN0aW5nPgogc3RhdGljIHZvaWQKIGhh bmRsZV9zaWdodXAoU0lHTkFMX0FSR1MpCiB7CiAgICAgZ290X1NJR0hVUCA9IHRydWU7Ci0g ICAgU2V0TGF0Y2goTXlMYXRjaCk7CisgICAgUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogfQogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggM2I5MWQwMjYwNWEuLjQ1ZjI1MjcwZGQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xNTAsNiArMTUw LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0 cl90aW1lLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZnJlZXNwYWNlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCkBAIC0zMjQyLDExICszMjQzLDExIEBAIGxhenlfdHJ1bmNhdGVfaGVhcChMVlJl bFN0YXRlICp2YWNyZWwpCiAJCQkJcmV0dXJuOwogCQkJfQogCi0JCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCSBWQUNVVU1fVFJVTkNBVEVfTE9DS19XQUlUX0lO VEVSVkFMLAotCQkJCQkJCSBXQUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7Ci0JCQlSZXNl dExhdGNoKE15TGF0Y2gpOworCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsCisJCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJW QUwsCisJCQkJCQkJCSBXQUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7CisJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vUkVBRE1FCmluZGV4IDIzMTEwNjI3MGZkLi43YzI5YjIzYjAxYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vUkVBRE1FCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRQpAQCAtNzk0LDcgKzc5NCw3IEBAIGNvbW1pdCB0 byBtaW5pbWl6ZSB0aGUgd2luZG93IGluIHdoaWNoIHRoZSBmaWxlc3lzdGVtIGNoYW5nZSBo YXMgYmVlbiBtYWRlCiBidXQgdGhlIHRyYW5zYWN0aW9uIGlzbid0IGd1YXJhbnRlZWQgY29t bWl0dGVkLgogCiBUaGUgd2Fsd3JpdGVyIHJlZ3VsYXJseSB3YWtlcyB1cCAodmlhIHdhbF93 cml0ZXJfZGVsYXkpIG9yIGlzIHdva2VuIHVwCi0odmlhIGl0cyBsYXRjaCwgd2hpY2ggaXMg c2V0IGJ5IGJhY2tlbmRzIGNvbW1pdHRpbmcgYXN5bmNocm9ub3VzbHkpIGFuZAorKHZpYSBh biBpbnRlcnJ1cHQsIHdoaWNoIGlzIHNldCBieSBiYWNrZW5kcyBjb21taXR0aW5nIGFzeW5j aHJvbm91c2x5KSBhbmQKIHBlcmZvcm1zIGFuIFhMb2dCYWNrZ3JvdW5kRmx1c2goKS4gIFRo aXMgY2hlY2tzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdAogY29tcGxldGVseSBmaWxsZWQg V0FMIHBhZ2UuICBJZiB0aGF0IGhhcyBtb3ZlZCBmb3J3YXJkcywgdGhlbiB3ZSB3cml0ZSBh bGwKIHRoZSBjaGFuZ2VkIGJ1ZmZlcnMgdXAgdG8gdGhhdCBwb2ludCwgc28gdGhhdCB1bmRl ciBmdWxsIGxvYWQgd2Ugd3JpdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jCmluZGV4IDk0ZGIxZWMzMDEyLi4zMGNkY2UwMGI0NyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgpAQCAtNzU5LDE2ICs3NjAsMTYgQEAgV2FpdEZvclBh cmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXsKIAkJ CQkvKgogCQkJCSAqIFdvcmtlciBub3QgeWV0IHN0YXJ0ZWQsIHNvIHdlIG11c3Qgd2FpdC4g IFRoZSBwb3N0bWFzdGVyCi0JCQkJICogd2lsbCBub3RpZnkgdXMgaWYgdGhlIHdvcmtlcidz IHN0YXRlIGNoYW5nZXMuICBPdXIgbGF0Y2gKLQkJCQkgKiBtaWdodCBhbHNvIGdldCBzZXQg Zm9yIHNvbWUgb3RoZXIgcmVhc29uLCBidXQgaWYgc28gd2UnbGwKLQkJCQkgKiBqdXN0IGVu ZCB1cCB3YWl0aW5nIGZvciB0aGUgc2FtZSB3b3JrZXIgYWdhaW4uCisJCQkJICogd2lsbCBu b3RpZnkgdXMgaWYgdGhlIHdvcmtlcidzIHN0YXRlIGNoYW5nZXMuICBUaGUKKwkJCQkgKiBp bnRlcnJ1cHQgbWlnaHQgYWxzbyBnZXQgc2V0IGZvciBzb21lIG90aGVyIHJlYXNvbiwgYnV0 IGlmCisJCQkJICogc28gd2UnbGwganVzdCBlbmQgdXAgd2FpdGluZyBmb3IgdGhlIHNhbWUg d29ya2VyIGFnYWluLgogCQkJCSAqLwotCQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0J CQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkg ICAtMSwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKKwkJCQlyYyA9IFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIC0xLCBXQUlUX0VWRU5UX0JHV09SS0VS X1NUQVJUVVApOwogCi0JCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCQlSZXNldExh dGNoKE15TGF0Y2gpOworCQkJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCQkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJfQogCQl9CiAKQEAgLTg3NywxNSAr ODc4LDE2IEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRl eHQgKnBjeHQpCiAJCQkJICogdGhlIHdvcmtlciB3cml0ZXMgbWVzc2FnZXMgYW5kIHRlcm1p bmF0ZXMgYWZ0ZXIgdGhlCiAJCQkJICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBuZWFyIHRo ZSB0b3Agb2YgdGhpcyBmdW5jdGlvbiBhbmQKIAkJCQkgKiBiZWZvcmUgdGhlIGNhbGwgdG8g R2V0QmFja2dyb3VuZFdvcmtlclBpZCgpLiAgSW4gdGhhdCBjYXNlLAotCQkJCSAqIG9yIGxh dGNoIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFzIHdlbGwgYW5kIHRoZSByaWdodCB0aGluZ3MK LQkJCQkgKiB3aWxsIGhhcHBlbiBvbiB0aGUgbmV4dCBwYXNzIHRocm91Z2ggdGhlIGxvb3Au CisJCQkJICogSU5URVJSVVBUX0dFTkVSQUwgc2hvdWxkIGhhdmUgYmVlbiBzZXQgYXMgd2Vs bCBhbmQgdGhlCisJCQkJICogcmlnaHQgdGhpbmdzIHdpbGwgaGFwcGVuIG9uIHRoZSBuZXh0 IHBhc3MgdGhyb3VnaCB0aGUgbG9vcC4KIAkJCQkgKi8KIAkJCX0KIAkJfQogCi0JCSh2b2lk KSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwgLTEsCi0JCQkJCQkgV0FJVF9FVkVOVF9QQVJBTExFTF9GSU5JU0gpOwotCQlSZXNldExh dGNoKE15TGF0Y2gpOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgLTEsCisJ CQkJCQkJIFdBSVRfRVZFTlRfUEFSQUxMRUxfRklOSVNIKTsKKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCWlmIChwY3h0LT50b2MgIT0gTlVMTCkKQEAg LTEwMzgsNyArMTA0MCw3IEBAIEhhbmRsZVBhcmFsbGVsTWVzc2FnZUludGVycnVwdCh2b2lk KQogewogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwogCVBhcmFsbGVsTWVzc2FnZVBlbmRp bmcgPSB0cnVlOwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpp bmRleCA3OTlmYzczOWUxOC4uOTQwNTU0ZGVmMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNs dWRlICJwb3J0L2F0b21pY3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgi CisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFz dGVyL3N0YXJ0dXAuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL3dhbHdyaXRlci5oIgpAQCAtODYsNyArODcsNiBAQAog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRj aC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKQEAgLTI2NjQsNyAr MjY2NCw3IEBAIFhMb2dTZXRBc3luY1hhY3RMU04oWExvZ1JlY1B0ciBhc3luY1hhY3RMU04p CiAJCVByb2NOdW1iZXIJd2Fsd3JpdGVyUHJvYyA9IHByb2NnbG9iYWwtPndhbHdyaXRlclBy b2M7CiAKIAkJaWYgKHdhbHdyaXRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJ CVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcih3YWx3cml0ZXJQcm9jKS0+cHJvY0xhdGNo KTsKKwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFByb2NHbG9iYWwtPndh bHdyaXRlclByb2MpOwogCX0KIH0KIApAQCAtOTM4MiwxMSArOTM4MiwxMSBAQCBkb19wZ19i YWNrdXBfc3RvcChCYWNrdXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZvcmFyY2hpdmUpCiAJ CQkJcmVwb3J0ZWRfd2FpdGluZyA9IHRydWU7CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0TGF0 Y2goTXlMYXRjaCwKLQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIDEwMDBMLAotCQkJCQkJCSBXQUlUX0VWRU5UX0JB Q0tVUF9XQUlUX1dBTF9BUkNISVZFKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQko dm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCQkg MTAwMEwsCisJCQkJCQkJCSBXQUlUX0VWRU5UX0JBQ0tVUF9XQUlUX1dBTF9BUkNISVZFKTsK KwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJaWYgKCsrd2Fp dHMgPj0gc2Vjb25kc19iZWZvcmVfd2FybmluZykKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ2Z1bmNzLmMKaW5kZXggOGMzMDkwMTY1ZjAuLjhmNDNjZTYyOTA5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwpAQCAtMjYsOSArMjYs OSBAQAogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9mZC5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdl L3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCkBAIC03MTgsMTcgKzcxOCwxNyBAQCBwZ19wcm9tb3RlKFBHX0ZV TkNUSU9OX0FSR1MpCiAJewogCQlpbnQJCQlyYzsKIAotCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJaWYgKCFSZWNv dmVyeUluUHJvZ3Jlc3MoKSkKIAkJCVBHX1JFVFVSTl9CT09MKHRydWUpOwogCiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJ ICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCi0J CQkJCSAgIDEwMDBMIC8gV0FJVFNfUEVSX1NFQ09ORCwKLQkJCQkJICAgV0FJVF9FVkVOVF9Q Uk9NT1RFKTsKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJ CQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgs CisJCQkJCQkgICAxMDAwTCAvIFdBSVRTX1BFUl9TRUNPTkQsCisJCQkJCQkgICBXQUlUX0VW RU5UX1BST01PVEUpOwogCiAJCS8qCiAJCSAqIEVtZXJnZW5jeSBiYWlsb3V0IGlmIHBvc3Rt YXN0ZXIgaGFzIGRpZWQuICBUaGlzIGlzIHRvIGF2b2lkIHRoZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBhODI5YTA1NWE5Ny4uYzI0NGY2 YzVlYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5j CkBAIC00NywxNCArNDcsMTUgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0 dXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgot I2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFs LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j YXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ1dGlscy9k YXRldGltZS5oIgpAQCAtMzE2LDIzICszMTcsNiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVj b3ZlcnlDdGxEYXRhCiAJICovCiAJYm9vbAkJU2hhcmVkUHJvbW90ZUlzVHJpZ2dlcmVkOwog Ci0JLyoKLQkgKiByZWNvdmVyeVdha2V1cExhdGNoIGlzIHVzZWQgdG8gd2FrZSB1cCB0aGUg c3RhcnR1cCBwcm9jZXNzIHRvIGNvbnRpbnVlCi0JICogV0FMIHJlcGxheSwgaWYgaXQgaXMg d2FpdGluZyBmb3IgV0FMIHRvIGFycml2ZSBvciBwcm9tb3Rpb24gdG8gYmUKLQkgKiByZXF1 ZXN0ZWQuCi0JICoKLQkgKiBOb3RlIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHNvIHVz ZXMgYW5vdGhlciBsYXRjaCwgaXRzIHByb2NMYXRjaCwKLQkgKiB0byB3YWl0IGZvciByZWNv dmVyeSBjb25mbGljdC4gSWYgd2UgZ2V0IHJpZCBvZiByZWNvdmVyeVdha2V1cExhdGNoIGZv cgotCSAqIHNpZ25hbGluZyB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIGZhdm9yIG9mIHVzaW5n IGl0cyBwcm9jTGF0Y2gsIHdoaWNoCi0JICogY29tcG9ydHMgYmV0dGVyIHdpdGggcG9zc2li bGUgZ2VuZXJpYyBzaWduYWwgaGFuZGxlcnMgdXNpbmcgdGhhdCBsYXRjaC4KLQkgKiBCdXQg d2Ugc2hvdWxkIG5vdCBkbyB0aGF0IGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBkb2Vz bid0IGFzc3VtZQotCSAqIHRoYXQgaXQncyB3YWtlbiB1cCBieSB3YWxyZWNlaXZlciBwcm9j ZXNzIG9yIFNJR0hVUCBzaWduYWwgaGFuZGxlcgotCSAqIHdoaWxlIGl0J3Mgd2FpdGluZyBm b3IgcmVjb3ZlcnkgY29uZmxpY3QuIFRoZSBzZXBhcmF0ZSBsYXRjaGVzLAotCSAqIHJlY292 ZXJ5V2FrZXVwTGF0Y2ggYW5kIHByb2NMYXRjaCwgc2hvdWxkIGJlIHVzZWQgZm9yIGludGVy LXByb2Nlc3MKLQkgKiBjb21tdW5pY2F0aW9uIGZvciBXQUwgcmVwbGF5IGFuZCByZWNvdmVy eSBjb25mbGljdCwgcmVzcGVjdGl2ZWx5LgotCSAqLwotCUxhdGNoCQlyZWNvdmVyeVdha2V1 cExhdGNoOwotCiAJLyoKIAkgKiBMYXN0IHJlY29yZCBzdWNjZXNzZnVsbHkgcmVwbGF5ZWQu CiAJICovCkBAIC00NjcsNyArNDUxLDYgQEAgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQp CiAJbWVtc2V0KFhMb2dSZWNvdmVyeUN0bCwgMCwgc2l6ZW9mKFhMb2dSZWNvdmVyeUN0bERh dGEpKTsKIAogCVNwaW5Mb2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7Ci0J SW5pdFNoYXJlZExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gp OwogCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5v dFBhdXNlZENWKTsKIH0KIApAQCAtNTQxLDEzICs1MjQsNiBAQCBJbml0V2FsUmVjb3Zlcnko Q29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2FzU2h1dGRvd25fcHRyLAog CXJlYWRSZWNvdmVyeVNpZ25hbEZpbGUoKTsKIAl2YWxpZGF0ZVJlY292ZXJ5UGFyYW1ldGVy cygpOwogCi0JLyoKLQkgKiBUYWtlIG93bmVyc2hpcCBvZiB0aGUgd2FrZXVwIGxhdGNoIGlm IHdlJ3JlIGdvaW5nIHRvIHNsZWVwIGR1cmluZwotCSAqIHJlY292ZXJ5LCBpZiByZXF1aXJl ZC4KLQkgKi8KLQlpZiAoQXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkKQotCQlPd25MYXRjaCgm WExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKLQogCS8qCiAJICogU2V0 IHRoZSBXQUwgcmVhZGluZyBwcm9jZXNzb3Igbm93LCBhcyBpdCB3aWxsIGJlIG5lZWRlZCB3 aGVuIHJlYWRpbmcKIAkgKiB0aGUgY2hlY2twb2ludCByZWNvcmQgcmVxdWlyZWQgKGJhY2t1 cF9sYWJlbCBvciBub3QpLgpAQCAtMTYzNywxMyArMTYxMyw2IEBAIFNodXRkb3duV2FsUmVj b3Zlcnkodm9pZCkKIAkJc25wcmludGYocmVjb3ZlcnlQYXRoLCBNQVhQR1BBVEgsIFhMT0dE SVIgIi9SRUNPVkVSWUhJU1RPUlkiKTsKIAkJdW5saW5rKHJlY292ZXJ5UGF0aCk7CS8qIGln bm9yZSBhbnkgZXJyb3IgKi8KIAl9Ci0KLQkvKgotCSAqIFdlIGRvbid0IG5lZWQgdGhlIGxh dGNoIGFueW1vcmUuIEl0J3Mgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSB0byBkaXNvd24KLQkg KiBpdCwgYnV0IGxldCdzIGRvIGl0IGZvciB0aGUgc2FrZSBvZiB0aWRpbmVzcy4KLQkgKi8K LQlpZiAoQXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkKQotCQlEaXNvd25MYXRjaCgmWExvZ1Jl Y292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIH0KIAogLyoKQEAgLTE4MDMsNyAr MTc3Miw3IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJfQogCiAJCQkvKgotCQkJ ICogSWYgd2UndmUgYmVlbiBhc2tlZCB0byBsYWcgdGhlIHByaW1hcnksIHdhaXQgb24gbGF0 Y2ggdW50aWwKKwkJCSAqIElmIHdlJ3ZlIGJlZW4gYXNrZWQgdG8gbGFnIHRoZSBwcmltYXJ5 LCB3YWl0IG9uIGludGVycnVwdCB1bnRpbAogCQkJICogZW5vdWdoIHRpbWUgaGFzIHBhc3Nl ZC4KIAkJCSAqLwogCQkJaWYgKHJlY292ZXJ5QXBwbHlEZWxheSh4bG9ncmVhZGVyKSkKQEAg LTMwMjYsOCArMjk5NSw4IEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAlkZWxheVVudGlsID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKHh0 aW1lLCByZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkpOwogCiAJLyoKLQkgKiBFeGl0IHdpdGhv dXQgYXJtaW5nIHRoZSBsYXRjaCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5 IHRoaXMKLQkgKiByZWNvcmQKKwkgKiBFeGl0IHdpdGhvdXQgY2xlYXJpbmcgdGhlIGludGVy cnVwdCBpZiBpdCdzIGFscmVhZHkgcGFzdCB0aW1lIHRvIGFwcGx5CisJICogdGhpcyByZWNv cmQKIAkgKi8KIAltc2VjcyA9IFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMoR2V0 Q3VycmVudFRpbWVzdGFtcCgpLCBkZWxheVVudGlsKTsKIAlpZiAobXNlY3MgPD0gMCkKQEAg LTMwMzUsMTEgKzMwMDQsMTkgQEAgcmVjb3ZlcnlBcHBseURlbGF5KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCiAJd2hpbGUgKHRydWUpCiAJewotCQlSZXNldExhdGNoKCZYTG9nUmVj b3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCQkvKgorCQkgKiBJTlRFUlJVUFRf R0VORVJBTCBpcyB1c2VkIGZvciBhbGwgdGhlIHVzdWFsIGludGVycnVwdHMsIGxpa2UgY29u ZmlnCisJCSAqIHJlbG9hZHMuICBUaGUgd2FrZXVwcyB3aGVuIG1vcmUgV0FMIGFycml2ZSB1 c2UgYSBkaWZmZXJlbnQKKwkJICogaW50ZXJydXB0IG51bWJlciAoSU5URVJSVVBUX1JFQ09W RVJZX0NPTlRJTlVFKSBzbyB0aGF0IG1vcmUgV0FMCisJCSAqIGFycml2aW5nIGRvbid0IHdh a2UgdXAgdGhlIHN0YXJ0dXAgcHJvY2VzcyBleGNlc3NpdmVseSB3aGVuIHdlJ3JlCisJCSAq IHdhaXRpbmcgaW4gb3RoZXIgcGxhY2VzLCBsaWtlIGZvciByZWNvdmVyeSBjb25mbGljdHMu CisJCSAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyog VGhpcyBtaWdodCBjaGFuZ2UgcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5LiAqLwogCQlQcm9j ZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7CiAKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX1JFQ09WRVJZX0NPTlRJTlVFKTsKIAkJaWYgKENoZWNrRm9yU3RhbmRieVRyaWdnZXIo KSkKIAkJCWJyZWFrOwogCkBAIC0zMDYwLDEwICszMDM3LDExIEBAIHJlY292ZXJ5QXBwbHlE ZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQllbG9nKERFQlVHMiwgInJlY292 ZXJ5IGFwcGx5IGRlbGF5ICVsZCBtaWxsaXNlY29uZHMiLCBtc2Vjcyk7CiAKLQkJKHZvaWQp IFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExhdGNoLAotCQkJ CQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAot CQkJCQkJIG1zZWNzLAotCQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfQVBQTFlfREVMQVkp OworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUg fAorCQkJCQkJCSBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJIG1zZWNzLAorCQkJ CQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKIAl9CiAJcmV0dXJuIHRy dWU7CiB9CkBAIC0zNzE4LDE1ICszNjk2LDE3IEBAIFdhaXRGb3JXQUxUb0JlY29tZUF2YWls YWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5kQWNjZXNzLAogCQkJCQkJLyogRG8g YmFja2dyb3VuZCB0YXNrcyB0aGF0IG1pZ2h0IGJlbmVmaXQgdXMgbGF0ZXIuICovCiAJCQkJ CQlLbm93bkFzc2lnbmVkVHJhbnNhY3Rpb25JZHNJZGxlTWFpbnRlbmFuY2UoKTsKIAotCQkJ CQkJKHZvaWQpIFdhaXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeVdha2V1cExh dGNoLAotCQkJCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwKLQkJCQkJCQkJ CQkgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJCQkgd2FpdF90aW1lLAotCQkJCQkJ CQkJCSBXQUlUX0VWRU5UX1JFQ09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKLQkJ CQkJCVJlc2V0TGF0Y2goJlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7 CisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElO VUUgfAorCQkJCQkJCQkJCQkgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9USU1FT1VUIHwKKwkJCQkJCQkJCQkJIFdMX0VYSVRfT05fUE1fREVB VEgsCisJCQkJCQkJCQkJCSB3YWl0X3RpbWUsCisJCQkJCQkJCQkJCSBXQUlUX0VWRU5UX1JF Q09WRVJZX1JFVFJJRVZFX1JFVFJZX0lOVEVSVkFMKTsKKwkJCQkJCUNsZWFySW50ZXJydXB0 KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSk7CiAJCQkJCQlub3cgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7CiAKIAkJCQkJCS8qIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBvZiBz dGFydHVwIHByb2Nlc3MgKi8KKwkJCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAkJCQkJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHMoKTsKIAkJCQkJfQog CQkJCQlsYXN0X2ZhaWxfdGltZSA9IG5vdzsKQEAgLTM5OTMsMTEgKzM5NzMsMTIgQEAgV2Fp dEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29sIHJhbmRB Y2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1vcmUgV0FMIHRvIGFycml2ZSwgd2hlbiB3ZSB3 aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVkaWF0ZWx5IGJ5IHRoZSBXQUwgcmVjZWl2ZXIu CiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2FpdExhdGNoKCZYTG9nUmVjb3ZlcnlDdGwtPnJl Y292ZXJ5V2FrZXVwTGF0Y2gsCi0JCQkJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKLQkJCQkJCQkJCSAtMUwsCi0JCQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNP VkVSWV9XQUxfU1RSRUFNKTsKLQkJCQkJUmVzZXRMYXRjaCgmWExvZ1JlY292ZXJ5Q3RsLT5y ZWNvdmVyeVdha2V1cExhdGNoKTsKKwkJCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX1JFQ09WRVJZX0NPTlRJTlVFIHwKKwkJCQkJCQkJCQkgSU5URVJSVVBUX0dFTkVSQUws CisJCQkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkJCQkJIC0xTCwKKwkJCQkJCQkJCQkgV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFN KTsKKwkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFKTsK IAkJCQkJYnJlYWs7CiAJCQkJfQogCkBAIC00MDE3LDYgKzM5OTgsNyBAQCBXYWl0Rm9yV0FM VG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywK IAkJICogVGhpcyBwb3NzaWJseS1sb25nIGxvb3AgbmVlZHMgdG8gaGFuZGxlIGludGVycnVw dHMgb2Ygc3RhcnR1cAogCQkgKiBwcm9jZXNzLgogCQkgKi8KKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCQlQcm9jZXNzU3RhcnR1cFByb2NJbnRlcnJ1cHRzKCk7 CiAJfQogCkBAIC00NDkxLDcgKzQ0NzMsMTAgQEAgQ2hlY2tQcm9tb3RlU2lnbmFsKHZvaWQp CiB2b2lkCiBXYWtldXBSZWNvdmVyeSh2b2lkKQogewotCVNldExhdGNoKCZYTG9nUmVjb3Zl cnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOworCVByb2NOdW1iZXIJcHJvY25vID0gKCh2 b2xhdGlsZSBQUk9DX0hEUiAqKSBQcm9jR2xvYmFsKS0+c3RhcnR1cFByb2M7CisKKwlpZiAo cHJvY25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX1JFQ09WRVJZX0NPTlRJTlVFLCBwcm9jbm8pOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYyBiL3NyYy9iYWNrZW5k L2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKaW5kZXggYjJiNzQzMjM4ZjkuLjg2MTA0 M2M2YjRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9iYWNrdXAvYmFzZWJhY2t1cF90aHJv dHRsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMK QEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJiYWNrdXAvYmFzZWJhY2t1cF9zaW5rLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIHR5cGVkZWYgc3RydWN0IGJic2lu a190aHJvdHRsZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHRocm90dGxlKGJic2lua190aHJvdHRs ZSAqc2luaywgc2l6ZV90IGluY3JlbWVudCkKIAkJKHNpbmstPnRocm90dGxpbmdfY291bnRl ciAvIHNpbmstPnRocm90dGxpbmdfc2FtcGxlKTsKIAogCS8qCi0JICogU2luY2UgdGhlIGxh dGNoIGNvdWxkIGJlIHNldCByZXBlYXRlZGx5IGJlY2F1c2Ugb2YgY29uY3VycmVudGx5IFdB TAorCSAqIFNpbmNlIHRoZSBpbnRlcnJ1cHQgY291bGQgYmUgc2V0IHJlcGVhdGVkbHkgYmVj YXVzZSBvZiBjb25jdXJyZW50bHkgV0FMCiAJICogYWN0aXZpdHksIHNsZWVwIGluIGEgbG9v cCB0byBlbnN1cmUgZW5vdWdoIHRpbWUgaGFzIHBhc3NlZC4KIAkgKi8KIAlmb3IgKDs7KQpA QCAtMTYzLDIxICsxNjMsMjEgQEAgdGhyb3R0bGUoYmJzaW5rX3Rocm90dGxlICpzaW5rLCBz aXplX3QgaW5jcmVtZW50KQogCQlpZiAoc2xlZXAgPD0gMCkKIAkJCWJyZWFrOwogCi0JCVJl c2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIAotCQkvKiBXZSdyZSBlYXRpbmcgYSBwb3RlbnRpYWxseSBzZXQgbGF0Y2gsIHNvIGNo ZWNrIGZvciBpbnRlcnJ1cHRzICovCisJCS8qIFdlJ3JlIGVhdGluZyBhIHdha2V1cCwgc28g Y2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAog CQkvKgogCQkgKiAoVEFSX1NFTkRfU0laRSAvIHRocm90dGxpbmdfc2FtcGxlICogZWxhcHNl ZF9taW5fdW5pdCkgc2hvdWxkIGJlCiAJCSAqIHRoZSBtYXhpbXVtIHRpbWUgdG8gc2xlZXAu IFRodXMgdGhlIGNhc3QgdG8gbG9uZyBpcyBzYWZlLgogCQkgKi8KLQkJd2FpdF9yZXN1bHQg PSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCQkJV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCShsb25nKSAoc2xlZXAgLyAxMDAw KSwKLQkJCQkJCQkJV0FJVF9FVkVOVF9CQVNFX0JBQ0tVUF9USFJPVFRMRSk7CisJCXdhaXRf cmVzdWx0ID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJCVdM X0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJ CQkJKGxvbmcpIChzbGVlcCAvIDEwMDApLAorCQkJCQkJCQkJV0FJVF9FVkVOVF9CQVNFX0JB Q0tVUF9USFJPVFRMRSk7CiAKLQkJaWYgKHdhaXRfcmVzdWx0ICYgV0xfTEFUQ0hfU0VUKQor CQlpZiAod2FpdF9yZXN1bHQgJiBXTF9JTlRFUlJVUFQpCiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCiAJCS8qIERvbmUgd2FpdGluZz8gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmlu ZGV4IDRiZDM3ZDViZWI1Li4yYjViOTJhYmUzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBA IC05MSw3ICs5MSw3IEBACiAgKgkgIHNob3VsZCBnbyBvdXQgaW1tZWRpYXRlbHkgYWZ0ZXIg ZWFjaCBjb21taXQuCiAgKgogICogNS4gVXBvbiByZWNlaXB0IG9mIGEgUFJPQ1NJR19OT1RJ RllfSU5URVJSVVBUIHNpZ25hbCwgdGhlIHNpZ25hbCBoYW5kbGVyCi0gKgkgIHNldHMgdGhl IHByb2Nlc3MncyBsYXRjaCwgd2hpY2ggdHJpZ2dlcnMgdGhlIGV2ZW50IHRvIGJlIHByb2Nl c3NlZAorICoJICByYWlzZXMgSU5URVJSVVBUX0dFTkVSQUwsIHdoaWNoIHRyaWdnZXJzIHRo ZSBldmVudCB0byBiZSBwcm9jZXNzZWQKICAqCSAgaW1tZWRpYXRlbHkgaWYgdGhpcyBiYWNr ZW5kIGlzIGlkbGUgKGkuZS4sIGl0IGlzIHdhaXRpbmcgZm9yIGEgZnJvbnRlbmQKICAqCSAg Y29tbWFuZCBhbmQgaXMgbm90IHdpdGhpbiBhIHRyYW5zYWN0aW9uIGJsb2NrLiBDLmYuCiAg KgkgIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkpLiAgT3RoZXJ3aXNlIHRoZSBoYW5k bGVyIG1heSBvbmx5IHNldCBhCkBAIC0xNDAsNiArMTQwLDcgQEAKICNpbmNsdWRlICJsaWJw cS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAtNDA2LDkgKzQwNyw5IEBAIHN0YXRpYyBOb3Rp ZmljYXRpb25MaXN0ICpwZW5kaW5nTm90aWZpZXMgPSBOVUxMOwogLyoKICAqIEluYm91bmQg bm90aWZpY2F0aW9ucyBhcmUgaW5pdGlhbGx5IHByb2Nlc3NlZCBieSBIYW5kbGVOb3RpZnlJ bnRlcnJ1cHQoKSwKICAqIGNhbGxlZCBmcm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyLiBU aGF0IGp1c3Qgc2V0cyB0aGUKLSAqIG5vdGlmeUludGVycnVwdFBlbmRpbmcgZmxhZyBhbmQg c2V0cyB0aGUgcHJvY2VzcwotICogbGF0Y2guIFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQoKSB3 aWxsIHRoZW4gYmUgY2FsbGVkIHdoZW5ldmVyIGl0J3Mgc2FmZSB0bwotICogYWN0dWFsbHkg ZGVhbCB3aXRoIHRoZSBpbnRlcnJ1cHQuCisgKiBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nIGZs YWcgYW5kIHJhaXNlcyB0aGUgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0LgorICogUHJv Y2Vzc05vdGlmeUludGVycnVwdCgpIHdpbGwgdGhlbiBiZSBjYWxsZWQgd2hlbmV2ZXIgaXQn cyBzYWZlIHRvIGFjdHVhbGx5CisgKiBkZWFsIHdpdGggdGhlIGludGVycnVwdC4KICAqLwog dm9sYXRpbGUgc2lnX2F0b21pY190IG5vdGlmeUludGVycnVwdFBlbmRpbmcgPSBmYWxzZTsK IApAQCAtMTgxMiw3ICsxODEzLDcgQEAgSGFuZGxlTm90aWZ5SW50ZXJydXB0KHZvaWQpCiAJ bm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAKIAkvKiBtYWtlIHN1cmUgdGhlIGV2 ZW50IGlzIHByb2Nlc3NlZCBpbiBkdWUgY291cnNlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7 CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpAQCAtMTgy MSwxMCArMTgyMiwxMCBAQCBIYW5kbGVOb3RpZnlJbnRlcnJ1cHQodm9pZCkKICAqCQlUaGlz IGlzIGNhbGxlZCBpZiB3ZSBzZWUgbm90aWZ5SW50ZXJydXB0UGVuZGluZyBzZXQsIGp1c3Qg YmVmb3JlCiAgKgkJdHJhbnNtaXR0aW5nIFJlYWR5Rm9yUXVlcnkgYXQgdGhlIGVuZCBvZiBh IGZyb250ZW5kIGNvbW1hbmQsIGFuZAogICoJCWFsc28gaWYgYSBub3RpZnkgc2lnbmFsIG9j Y3VycyB3aGlsZSByZWFkaW5nIGZyb20gdGhlIGZyb250ZW5kLgotICoJCUhhbmRsZU5vdGlm eUludGVycnVwdCgpIHdpbGwgY2F1c2UgdGhlIHJlYWQgdG8gYmUgaW50ZXJydXB0ZWQKLSAq CQl2aWEgdGhlIHByb2Nlc3MncyBsYXRjaCwgYW5kIHRoaXMgcm91dGluZSB3aWxsIGdldCBj YWxsZWQuCi0gKgkJSWYgd2UgYXJlIHRydWx5IGlkbGUgKGllLCAqbm90KiBpbnNpZGUgYSB0 cmFuc2FjdGlvbiBibG9jayksCi0gKgkJcHJvY2VzcyB0aGUgaW5jb21pbmcgbm90aWZpZXMu CisgKgkJSGFuZGxlTm90aWZ5SW50ZXJydXB0KCkgd2lsbCBjYXVzZSB0aGUgcmVhZCB0byBi ZSBpbnRlcnJ1cHRlZCB3aXRoCisgKgkJSU5URVJSVVBUX0dFTkVSQUwsIGFuZCB0aGlzIHJv dXRpbmUgd2lsbCBnZXQgY2FsbGVkLiAgSWYgd2UgYXJlIHRydWx5CisgKgkJaWRsZSAoaWUs ICpub3QqIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrKSwgcHJvY2VzcyB0aGUgaW5jb21p bmcKKyAqCQlub3RpZmllcy4KICAqCiAgKgkJSWYgImZsdXNoIiBpcyB0cnVlLCBmb3JjZSBh bnkgZnJvbnRlbmQgbWVzc2FnZXMgb3V0IGltbWVkaWF0ZWx5LgogICoJCVRoaXMgY2FuIGJl IGZhbHNlIHdoZW4gYmVpbmcgY2FsbGVkIGF0IHRoZSBlbmQgb2YgYSBmcm9udGVuZCBjb21t YW5kLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCBlODFjOWE4YWJhMy4uNjViODk3NDc2 Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0yNDk2LDggKzI0OTYsOCBAQCB2YWN1 dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCQkvKgogCQkgKiBXZSBkb24ndCB3 YW50IHRvIGlnbm9yZSBwb3N0bWFzdGVyIGRlYXRoIGR1cmluZyB2ZXJ5IGxvbmcgdmFjdXVt cwogCQkgKiB3aXRoIHZhY3V1bV9jb3N0X2RlbGF5IGNvbmZpZ3VyZWQuICBXZSBjYW4ndCB1 c2UgdGhlIHVzdWFsCi0JCSAqIFdhaXRMYXRjaCgpIGFwcHJvYWNoIGhlcmUgYmVjYXVzZSB3 ZSB3YW50IG1pY3Jvc2Vjb25kLWJhc2VkIHNsZWVwCi0JCSAqIGR1cmF0aW9ucyBhYm92ZS4K KwkJICogV2FpdEludGVycnVwdCgpIGFwcHJvYWNoIGhlcmUgYmVjYXVzZSB3ZSB3YW50IG1p Y3Jvc2Vjb25kLWJhc2VkCisJCSAqIHNsZWVwIGR1cmF0aW9ucyBhYm92ZS4KIAkJICovCiAJ CWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAhUG9zdG1hc3RlcklzQWxpdmUoKSkKIAkJCWV4 aXQoMSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggMTVjNDIyN2NjNjIu LmRmNGI1ZmUxNjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC02MSw5 ICs2MSw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFwcGVu ZC5oIgotI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3dhaXRldmVudHNl dC5oIgogCiAvKiBTaGFyZWQgc3RhdGUgZm9yIHBhcmFsbGVsLWF3YXJlIEFwcGVuZC4gKi8K IHN0cnVjdCBQYXJhbGxlbEFwcGVuZFN0YXRlCkBAIC0xMDQzLDcgKzEwNDIsNyBAQCBFeGVj QXBwZW5kQXN5bmNFdmVudFdhaXQoQXBwZW5kU3RhdGUgKm5vZGUpCiAJQXNzZXJ0KG5vZGUt PmFzX2V2ZW50c2V0ID09IE5VTEwpOwogCW5vZGUtPmFzX2V2ZW50c2V0ID0gQ3JlYXRlV2Fp dEV2ZW50U2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLCBuZXZlbnRzKTsKIAlBZGRXYWl0RXZl bnRUb1NldChub2RlLT5hc19ldmVudHNldCwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgUEdJTlZB TElEX1NPQ0tFVCwKLQkJCQkJICBOVUxMLCBOVUxMKTsKKwkJCQkJICAwLCBOVUxMKTsKIAog CS8qIEdpdmUgZWFjaCB3YWl0aW5nIHN1YnBsYW4gYSBjaGFuY2UgdG8gYWRkIGFuIGV2ZW50 LiAqLwogCWkgPSAtMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwppbmRleCBkYzdk MTgzMDI1OS4uMTFlNWIzZjA4M2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMK QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci90cXVldWUuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisj aW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0 X2V2ZW50LmgiCiAKIApAQCAtMzgyLDkgKzM4MywxMCBAQCBnYXRoZXJfcmVhZG5leHQoR2F0 aGVyU3RhdGUgKmdhdGhlcnN0YXRlKQogCQkJCXJldHVybiBOVUxMOwogCiAJCQkvKiBOb3Ro aW5nIHRvIGRvIGV4Y2VwdCB3YWl0IGZvciBkZXZlbG9wbWVudHMuICovCi0JCQkodm9pZCkg V2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCi0JCQkJCQkJIFdBSVRfRVZFTlRfRVhFQ1VURV9HQVRIRVIpOwotCQkJUmVzZXRMYXRj aChNeUxhdGNoKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM LAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkJCQkJIFdBSVRfRVZFTlRfRVhFQ1VURV9HQVRIRVIpOworCQkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCQkJbnZpc2l0ZWQgPSAwOwogCQl9CiAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0 aC5jCmluZGV4IDgxZTJmODE4NGUzLi5hZjI4MmIzZTgwMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAt MTY1Myw4ICsxNjUzLDkgQEAgaW50ZXJwcmV0X2lkZW50X3Jlc3BvbnNlKGNvbnN0IGNoYXIg KmlkZW50X3Jlc3BvbnNlLAogICoJb3ducyB0aGUgdGNwIGNvbm5lY3Rpb24gdG8gImxvY2Fs X2FkZHIiCiAgKglJZiB0aGUgdXNlcm5hbWUgaXMgc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCwg Y2hlY2sgdGhlIHVzZXJtYXAuCiAgKgotICoJWFhYOiBVc2luZyBXYWl0TGF0Y2hPclNvY2tl dCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaWYgdGhlCi0gKglsYXRj aCB3YXMgc2V0IHdvdWxkIGltcHJvdmUgdGhlIHJlc3BvbnNpdmVuZXNzIHRvIHRpbWVvdXRz L2NhbmNlbGxhdGlvbnMuCisgKglYWFg6IFVzaW5nIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgp IGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkKKyAqCWlmIHRoZSBpbnRlcnJ1 cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8KKyAq CXRpbWVvdXRzL2NhbmNlbGxhdGlvbnMuCiAgKi8KIHN0YXRpYyBpbnQKIGlkZW50X2luZXQo aGJhUG9ydCAqcG9ydCkKQEAgLTMwODgsOCArMzA4OSw4IEBAIFBlcmZvcm1SYWRpdXNUcmFu c2FjdGlvbihjb25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwgY29uc3Qg Y2hhciAqcG9yCiAJICogcGFja2V0cyB0byBvdXIgcG9ydCB0aHVzIGNhdXNpbmcgdXMgdG8g cmV0cnkgaW4gYSBsb29wIGFuZCBuZXZlciB0aW1lCiAJICogb3V0LgogCSAqCi0JICogWFhY OiBVc2luZyBXYWl0TGF0Y2hPclNvY2tldCgpIGFuZCBkb2luZyBhIENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgaWYKLQkgKiB0aGUgbGF0Y2ggd2FzIHNldCB3b3VsZCBpbXByb3ZlIHRoZSBy ZXNwb25zaXZlbmVzcyB0bworCSAqIFhYWDogVXNpbmcgV2FpdEludGVycnVwdE9yU29ja2V0 KCkgYW5kIGRvaW5nIGEgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQorCSAqIGlmIHRoZSBpbnRl cnJ1cHQgd2FzIHBlbmRpbmcgd291bGQgaW1wcm92ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgdG8K IAkgKiB0aW1lb3V0cy9jYW5jZWxsYXRpb25zLgogCSAqLwogCWdldHRpbWVvZmRheSgmZW5k dGltZSwgTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUt Z3NzYXBpLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtZ3NzYXBpLmMKaW5kZXgg YTNkNjEwYjEzNzMuLjA3YTRmYjNmM2QwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJw cS9iZS1zZWN1cmUtZ3NzYXBpLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJl LWdzc2FwaS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5oIgorI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIApAQCAtNDE0LDcgKzQx NSw3IEBAIGJlX2dzc2FwaV9yZWFkKFBvcnQgKnBvcnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxl bikKIAogLyoKICAqIFJlYWQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgb2ZmIHRo ZSB3aXJlLCB3YWl0aW5nIHVzaW5nCi0gKiBXYWl0TGF0Y2hPclNvY2tldCBpZiB3ZSB3b3Vs ZCBibG9jay4KKyAqIFdhaXRJbnRlcnJ1cHRPclNvY2tldCBpZiB3ZSB3b3VsZCBibG9jay4K ICAqCiAgKiBSZXN1bHRzIGFyZSByZWFkIGludG8gUHFHU1NSZWN2QnVmZmVyLgogICoKQEAg LTQ1MCw5ICs0NTEsOCBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4p CiAJCSAqLwogCQlpZiAocmV0IDw9IDApCiAJCXsKLQkJCVdhaXRMYXRjaE9yU29ja2V0KE5V TEwsCi0JCQkJCQkJICBXTF9TT0NLRVRfUkVBREFCTEUgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9TRVJWRVIp OworCQkJV2FpdEludGVycnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9SRUFEQUJMRSB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVO VF9HU1NfT1BFTl9TRVJWRVIpOwogCiAJCQkvKgogCQkJICogSWYgd2UgZ290IGJhY2sgemVy byBieXRlcywgYW5kIHRoZW4gd2FpdGVkIG9uIHRoZSBzb2NrZXQgdG8gYmUKQEAgLTQ4OSw3 ICs0ODksNyBAQCByZWFkX29yX3dhaXQoUG9ydCAqcG9ydCwgc3NpemVfdCBsZW4pCiAgKgog ICogTm90ZSB0aGF0IHVubGlrZSB0aGUgYmVfZ3NzYXBpX3JlYWQvYmVfZ3NzYXBpX3dyaXRl IGZ1bmN0aW9ucywgdGhpcwogICogZnVuY3Rpb24gV0lMTCBibG9jayBvbiB0aGUgc29ja2V0 IHRvIGJlIHJlYWR5IGZvciByZWFkL3dyaXRlICh1c2luZwotICogV2FpdExhdGNoT3JTb2Nr ZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGluZyB0aGUgR1NTQVBJCisgKiBX YWl0SW50ZXJydXB0T3JTb2NrZXQpIGFzIGFwcHJvcHJpYXRlIHdoaWxlIGVzdGFibGlzaGlu ZyB0aGUgR1NTQVBJCiAgKiBzZXNzaW9uLgogICovCiBzc2l6ZV90CkBAIC02NjgsOSArNjY4 LDggQEAgc2VjdXJlX29wZW5fZ3NzYXBpKFBvcnQgKnBvcnQpCiAJCQkJLyogV2FpdCBhbmQg cmV0cnkgaWYgd2UgY291bGRuJ3Qgd3JpdGUgeWV0ICovCiAJCQkJaWYgKHJldCA8PSAwKQog CQkJCXsKLQkJCQkJV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwKLQkJCQkJCQkJCSAgV0xfU09D S0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJCQkgIHBvcnQt PnNvY2ssIDAsIFdBSVRfRVZFTlRfR1NTX09QRU5fU0VSVkVSKTsKKwkJCQkJV2FpdEludGVy cnVwdE9yU29ja2V0KDAsIFdMX1NPQ0tFVF9XUklURUFCTEUgfCBXTF9FWElUX09OX1BNX0RF QVRILAorCQkJCQkJCQkJCSAgcG9ydC0+c29jaywgMCwgV0FJVF9FVkVOVF9HU1NfT1BFTl9T RVJWRVIpOwogCQkJCQljb250aW51ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtb3BlbnNzbC5jCmluZGV4IDY0ZmYzY2UzZDZhLi43ODJhMDI2NTk3OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMv YmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0zMSw4ICszMSw5IEBACiAj aW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC01MjIsOCArNTIzLDggQEAgYWxvb3A6CiAJ CQkJZWxzZQogCQkJCQl3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX0VYSVRf T05fUE1fREVBVEg7CiAKLQkJCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTlVMTCwgd2Fp dGZvciwgcG9ydC0+c29jaywgMCwKLQkJCQkJCQkJCQkgV0FJVF9FVkVOVF9TU0xfT1BFTl9T RVJWRVIpOworCQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoMCwgd2FpdGZvciwg cG9ydC0+c29jaywgMCwKKwkJCQkJCQkJCQkJIFdBSVRfRVZFTlRfU1NMX09QRU5fU0VSVkVS KTsKIAkJCQlnb3RvIGFsb29wOwogCQkJY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKIAkJCQlp ZiAociA8IDAgJiYgZXJybm8gIT0gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKaW5kZXggOTE1 NzZmOTQyODUuLjc2NWNhMGYzMTY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYwpAQCAtMjgs NyArMjgsNyBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogCiAjaW5jbHVkZSAibGlicHEv bGlicHEuaCIKLSNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVy L2ludGVycnVwdC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1 dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CkBAIC0yMTMsNyArMjEzLDcgQEAgcmV0cnk6CiAKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCi0J CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdh aXRmb3IsIE5VTEwpOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0 U2V0U29ja2V0UG9zLCB3YWl0Zm9yLCAwKTsKIAogCQlXYWl0RXZlbnRTZXRXYWl0KEZlQmVX YWl0U2V0LCAtMSAvKiBubyB0aW1lb3V0ICovICwgJmV2ZW50LCAxLAogCQkJCQkJIFdBSVRf RVZFTlRfQ0xJRU5UX1JFQUQpOwpAQCAtMjI4LDEyICsyMjgsMTIgQEAgcmV0cnk6CiAJCSAq IG5ldyBjb25uZWN0aW9ucyBjYW4gYmUgYWNjZXB0ZWQuICBFeGl0aW5nIGNsZWFycyB0aGUg ZGVjayBmb3IgYQogCQkgKiBwb3N0bWFzdGVyIHJlc3RhcnQuCiAJCSAqCi0JCSAqIChOb3Rl IHRoYXQgd2Ugb25seSBtYWtlIHRoaXMgY2hlY2sgd2hlbiB3ZSB3b3VsZCBvdGhlcndpc2Ug c2xlZXAgb24KLQkJICogb3VyIGxhdGNoLiAgV2UgbWlnaHQgc3RpbGwgY29udGludWUgcnVu bmluZyBmb3IgYSB3aGlsZSBpZiB0aGUKLQkJICogcG9zdG1hc3RlciBpcyBraWxsZWQgaW4g bWlkLXF1ZXJ5LCBvciBldmVuIHRocm91Z2ggbXVsdGlwbGUgcXVlcmllcwotCQkgKiBpZiB3 ZSBuZXZlciBoYXZlIHRvIHdhaXQgZm9yIHJlYWQuICBXZSBkb24ndCB3YW50IHRvIGJ1cm4g dG9vIG1hbnkKLQkJICogY3ljbGVzIGNoZWNraW5nIGZvciB0aGlzIHZlcnkgcmFyZSBjb25k aXRpb24sIGFuZCB0aGlzIHNob3VsZCBjYXVzZQotCQkgKiB1cyB0byBleGl0IHF1aWNrbHkg aW4gbW9zdCBjYXNlcy4pCisJCSAqIChOb3RlIHRoYXQgd2Ugb25seSBtYWtlIHRoaXMgY2hl Y2sgd2hlbiB3ZSB3b3VsZCBvdGhlcndpc2Ugc2xlZXAKKwkJICogd2FpdGluZyBmb3IgaW50 ZXJydXB0LiAgV2UgbWlnaHQgc3RpbGwgY29udGludWUgcnVubmluZyBmb3IgYSB3aGlsZQor CQkgKiBpZiB0aGUgcG9zdG1hc3RlciBpcyBraWxsZWQgaW4gbWlkLXF1ZXJ5LCBvciBldmVu IHRocm91Z2ggbXVsdGlwbGUKKwkJICogcXVlcmllcyBpZiB3ZSBuZXZlciBoYXZlIHRvIHdh aXQgZm9yIHJlYWQuICBXZSBkb24ndCB3YW50IHRvIGJ1cm4KKwkJICogdG9vIG1hbnkgY3lj bGVzIGNoZWNraW5nIGZvciB0aGlzIHZlcnkgcmFyZSBjb25kaXRpb24sIGFuZCB0aGlzCisJ CSAqIHNob3VsZCBjYXVzZSB1cyB0byBleGl0IHF1aWNrbHkgaW4gbW9zdCBjYXNlcy4pCiAJ CSAqLwogCQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJCWVy ZXBvcnQoRkFUQUwsCkBAIC0yNDEsOSArMjQxLDkgQEAgcmV0cnk6CiAJCQkJCSBlcnJtc2co InRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHVuZXhwZWN0ZWQgcG9zdG1hc3RlciBl eGl0IikpKTsKIAogCQkvKiBIYW5kbGUgaW50ZXJydXB0LiAqLwotCQlpZiAoZXZlbnQuZXZl bnRzICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAoZXZlbnQuZXZlbnRzICYgV0xfSU5URVJSVVBU KQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQodHJ1ZSk7 CiAKIAkJCS8qCkBAIC0yODQsNyArMjg0LDggQEAgc2VjdXJlX3Jhd19yZWFkKFBvcnQgKnBv cnQsIHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAogCS8qCiAJICogVHJ5IHRvIHJlYWQgZnJv bSB0aGUgc29ja2V0IHdpdGhvdXQgYmxvY2tpbmcuIElmIGl0IHN1Y2NlZWRzIHdlJ3JlCi0J ICogZG9uZSwgb3RoZXJ3aXNlIHdlJ2xsIHdhaXQgZm9yIHRoZSBzb2NrZXQgdXNpbmcgdGhl IGxhdGNoIG1lY2hhbmlzbS4KKwkgKiBkb25lLCBvdGhlcndpc2Ugd2UnbGwgd2FpdCBmb3Ig dGhlIHNvY2tldCB1c2luZyB0aGUgaW50ZXJydXB0CisJICogbWVjaGFuaXNtLgogCSAqLwog I2lmZGVmIFdJTjMyCiAJcGd3aW4zMl9ub2Jsb2NrID0gdHJ1ZTsKQEAgLTMzOCw3ICszMzks NyBAQCByZXRyeToKIAogCQlBc3NlcnQod2FpdGZvcik7CiAKLQkJTW9kaWZ5V2FpdEV2ZW50 KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgTlVMTCk7CisJ CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdh aXRmb3IsIDApOwogCiAJCVdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIC0xIC8qIG5v IHRpbWVvdXQgKi8gLCAmZXZlbnQsIDEsCiAJCQkJCQkgV0FJVF9FVkVOVF9DTElFTlRfV1JJ VEUpOwpAQCAtMzUwLDkgKzM1MSw5IEBAIHJldHJ5OgogCQkJCQkgZXJybXNnKCJ0ZXJtaW5h dGluZyBjb25uZWN0aW9uIGR1ZSB0byB1bmV4cGVjdGVkIHBvc3RtYXN0ZXIgZXhpdCIpKSk7 CiAKIAkJLyogSGFuZGxlIGludGVycnVwdC4gKi8KLQkJaWYgKGV2ZW50LmV2ZW50cyAmIFdM X0xBVENIX1NFVCkKKwkJaWYgKGV2ZW50LmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewot CQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAkJCVByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdCh0cnVlKTsKIAogCQkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFjb21tLmMKaW5kZXggZTUxNzE0NjdkZTEuLmY4NDY1Y2IyZDdiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0uYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9wcWNvbW0uYwpAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgImxpYnBxL2xpYnBx LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19ic3dhcC5o IgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9zdG1h c3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWNfaG9va3MuaCIKQEAgLTE3NSw3ICsxNzYsNyBAQCBwcV9pbml0KENsaWVu dFNvY2tldCAqY2xpZW50X3NvY2spCiB7CiAJUG9ydAkgICAqcG9ydDsKIAlpbnQJCQlzb2Nr ZXRfcG9zIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKLQlpbnQJCQlsYXRjaF9wb3MgUEdf VVNFRF9GT1JfQVNTRVJUU19PTkxZOworCWludAkJCWludGVycnVwdF9wb3MgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZOwogCiAJLyogYWxsb2NhdGUgdGhlIFBvcnQgc3RydWN0IGFuZCBj b3B5IHRoZSBDbGllbnRTb2NrZXQgY29udGVudHMgdG8gaXQgKi8KIAlwb3J0ID0gcGFsbG9j MChzaXplb2YoUG9ydCkpOwpAQCAtMjg3LDggKzI4OCw4IEBAIHBxX2luaXQoQ2xpZW50U29j a2V0ICpjbGllbnRfc29jaykKIAogCS8qCiAJICogSW4gYmFja2VuZHMgKGFzIHNvb24gYXMg Zm9ya2VkKSB3ZSBvcGVyYXRlIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpbgotCSAqIG5vbmJs b2NraW5nIG1vZGUgYW5kIHVzZSBsYXRjaGVzIHRvIGltcGxlbWVudCBibG9ja2luZyBzZW1h bnRpY3MgaWYKLQkgKiBuZWVkZWQuIFRoYXQgYWxsb3dzIHVzIHRvIHByb3ZpZGUgc2FmZWx5 IGludGVycnVwdGlibGUgcmVhZHMgYW5kCisJICogbm9uYmxvY2tpbmcgbW9kZSBhbmQgdXNl IFdhaXRFdmVudFNldCB0byBpbXBsZW1lbnQgYmxvY2tpbmcgc2VtYW50aWNzCisJICogaWYg bmVlZGVkLiBUaGF0IGFsbG93cyB1cyB0byBwcm92aWRlIHNhZmVseSBpbnRlcnJ1cHRpYmxl IHJlYWRzIGFuZAogCSAqIHdyaXRlcy4KIAkgKi8KICNpZm5kZWYgV0lOMzIKQEAgLTMwNiwx OCArMzA3LDE4IEBAIHBxX2luaXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIAogCUZl QmVXYWl0U2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KE5VTEwsIEZlQmVXYWl0U2V0TkV2ZW50 cyk7CiAJc29ja2V0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9T T0NLRVRfV1JJVEVBQkxFLAotCQkJCQkJCQkgICBwb3J0LT5zb2NrLCBOVUxMLCBOVUxMKTsK LQlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2FpdFNldCwgV0xfTEFUQ0hf U0VULCBQR0lOVkFMSURfU09DS0VULAotCQkJCQkJCQkgIE15TGF0Y2gsIE5VTEwpOworCQkJ CQkJCQkgICBwb3J0LT5zb2NrLCAwLCBOVUxMKTsKKwlpbnRlcnJ1cHRfcG9zID0gQWRkV2Fp dEV2ZW50VG9TZXQoRmVCZVdhaXRTZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tF VCwKKwkJCQkJCQkJCSAgSU5URVJSVVBUX0dFTkVSQUwsIE5VTEwpOwogCUFkZFdhaXRFdmVu dFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09D S0VULAotCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJCQkgIDAsIE5VTEwpOwogCiAJLyoKIAkg KiBUaGUgZXZlbnQgcG9zaXRpb25zIG1hdGNoIHRoZSBvcmRlciB3ZSBhZGRlZCB0aGVtLCBi dXQgbGV0J3Mgc2FuaXR5CiAJICogY2hlY2sgdGhlbSB0byBiZSBzdXJlLgogCSAqLwogCUFz c2VydChzb2NrZXRfcG9zID09IEZlQmVXYWl0U2V0U29ja2V0UG9zKTsKLQlBc3NlcnQobGF0 Y2hfcG9zID09IEZlQmVXYWl0U2V0TGF0Y2hQb3MpOworCUFzc2VydChpbnRlcnJ1cHRfcG9z ID09IEZlQmVXYWl0U2V0SW50ZXJydXB0UG9zKTsKIAogCXJldHVybiBwb3J0OwogfQpAQCAt MjA2Myw3ICsyMDY0LDcgQEAgcHFfY2hlY2tfY29ubmVjdGlvbih2b2lkKQogCSAqIEl0J3Mg T0sgdG8gbW9kaWZ5IHRoZSBzb2NrZXQgZXZlbnQgZmlsdGVyIHdpdGhvdXQgcmVzdG9yaW5n LCBiZWNhdXNlCiAJICogYWxsIEZlQmVXYWl0U2V0IHNvY2tldCB3YWl0IHNpdGVzIGRvIHRo ZSBzYW1lLgogCSAqLwotCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRT ZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9DTE9TRUQsIE5VTEwpOworCU1vZGlmeVdhaXRFdmVu dChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIFdMX1NPQ0tFVF9DTE9TRUQs IDApOwogCiByZXRyeToKIAlyYyA9IFdhaXRFdmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIDAs IGV2ZW50cywgbGVuZ3Rob2YoZXZlbnRzKSwgMCk7CkBAIC0yMDcxLDE1ICsyMDcyLDE1IEBA IHJldHJ5OgogCXsKIAkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9TT0NLRVRfQ0xPU0VE KQogCQkJcmV0dXJuIGZhbHNlOwotCQlpZiAoZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKIAkJ CS8qCi0JCQkgKiBBIGxhdGNoIGV2ZW50IG1pZ2h0IGJlIHByZXZlbnRpbmcgb3RoZXIgZXZl bnRzIGZyb20gYmVpbmcKKwkJCSAqIEFuIGludGVycnVwdCBldmVudCBtaWdodCBiZSBwcmV2 ZW50aW5nIG90aGVyIGV2ZW50cyBmcm9tIGJlaW5nCiAJCQkgKiByZXBvcnRlZC4gIFJlc2V0 IGl0IGFuZCBwb2xsIGFnYWluLiAgTm8gbmVlZCB0byByZXN0b3JlIGl0Ci0JCQkgKiBiZWNh dXNlIG5vIGNvZGUgc2hvdWxkIGV4cGVjdCBsYXRjaGVzIHRvIHN1cnZpdmUgYWNyb3NzCi0J CQkgKiBDSEVDS19GT1JfSU5URVJSVVBUUygpLgorCQkJICogYmVjYXVzZSBubyBjb2RlIHNo b3VsZCBleHBlY3QgSU5URVJSVVBUX0dFTkVSQUwgdG8gc3Vydml2ZQorCQkJICogYWNyb3Nz IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCiAJCQkgKi8KLQkJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlnb3RvIHJl dHJ5OwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIv c3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCmluZGV4IGYxYTA4YmMzMmNhLi5iNjkyODUzNjk4 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImxpYnBxL3Bx bXEuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE4MSw5ICsxODIsMTAgQEAgbXFfcHV0bWVzc2Fn ZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCWlmIChyZXN1 bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRM YXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAot CQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7Ci0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAor CQkJCQkJCSBXQUlUX0VWRU5UX01FU1NBR0VfUVVFVUVfUFVUX01FU1NBR0UpOworCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDgwMDgx NWRmYmNjLi5jNDViMzMyZTgyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKQEAgLTkwLDcgKzkwLDYgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKQEAgLTU3NSwyNCArNTc0LDI0IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJYm9v bAkJY2FuX2xhdW5jaDsKIAogCQkvKgotCQkgKiBUaGlzIGxvb3AgaXMgYSBiaXQgZGlmZmVy ZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdExhdGNoLAorCQkgKiBUaGlzIGxvb3Ag aXMgYSBiaXQgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCB1c2Ugb2YgV2FpdEludGVycnVw dCwKIAkJICogYmVjYXVzZSB3ZSdkIGxpa2UgdG8gc2xlZXAgYmVmb3JlIHRoZSBmaXJzdCBs YXVuY2ggb2YgYSBjaGlsZAotCQkgKiBwcm9jZXNzLiAgU28gaXQncyBXYWl0TGF0Y2gsIHRo ZW4gUmVzZXRMYXRjaCwgdGhlbiBjaGVjayBmb3IKLQkJICogd2FrZW5pbmcgY29uZGl0aW9u cy4KKwkJICogcHJvY2Vzcy4gIFNvIGl0J3MgV2FpdEludGVycnVwdCwgdGhlbiBDbGVhcklu dGVycnVwdCwgdGhlbiBjaGVjaworCQkgKiBmb3Igd2FrZW5pbmcgY29uZGl0aW9ucy4KIAkJ ICovCiAKIAkJbGF1bmNoZXJfZGV0ZXJtaW5lX3NsZWVwKGF2X3dvcmtlcl9hdmFpbGFibGUo KSwgZmFsc2UsICZuYXApOwogCiAJCS8qCiAJCSAqIFdhaXQgdW50aWwgbmFwdGltZSBleHBp cmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2Ygc2lnbmFsIChhbGwgdGhlCi0JCSAqIHNpZ25h bCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBTZXRMYXRjaCkuCisJCSAqIHNp Z25hbCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBSYWlzZUludGVycnVwdCku CiAJCSAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xfTEFUQ0hf U0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkgKG5hcC50 dl9zZWMgKiAxMDAwTCkgKyAobmFwLnR2X3VzZWMgLyAxMDAwTCksCi0JCQkJCQkgV0FJVF9F VkVOVF9BVVRPVkFDVVVNX01BSU4pOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJIChuYXAudHZfc2VjICogMTAwMEwpICsgKG5hcC50 dl91c2VjIC8gMTAwMEwpLAorCQkJCQkJCSBXQUlUX0VWRU5UX0FVVE9WQUNVVU1fTUFJTik7 CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwpOwogCiAJCVByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKCk7CiAK QEAgLTEzNTksNyArMTM1OCw3IEBAIHN0YXRpYyB2b2lkCiBhdmxfc2lndXNyMl9oYW5kbGVy KFNJR05BTF9BUkdTKQogewogCWdvdF9TSUdVU1IyID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxh dGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXhwcm9jZXNzLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1eHByb2Nlc3MuYwppbmRleCA0ZjY3OTVmNzI2NS4uNjFiY2Fj OGQ5ZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV4cHJvY2Vzcy5jCkBAIC0yMyw2ICsy Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCAxMTZkZGY3YjgzNS4uYzgyOTcxZTky NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTE4LDExICsxOCwxMSBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgiCisjaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xv Y2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCkBAIC0xMjI2LDkgKzEyMjYsOSBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtl clN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkK IAkJaWYgKHN0YXR1cyAhPSBCR1dIX05PVF9ZRVRfU1RBUlRFRCkKIAkJCWJyZWFrOwogCi0J CXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1BP U1RNQVNURVJfREVBVEgsIDAsCi0JCQkJCSAgIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRV UCk7CisJCXJjID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAg IFdMX0lOVEVSUlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCisJCQkJCQkgICBXQUlU X0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCiAJCWlmIChyYyAmIFdMX1BPU1RNQVNURVJf REVBVEgpCiAJCXsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29y a2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRw KQogCQkJYnJlYWs7CiAJCX0KIAotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJfQogCiAJcmV0dXJuIHN0YXR1czsKQEAg LTEyNjksOSArMTI2OSw5IEBAIFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1dGRvd24oQmFj a2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQogCQlpZiAoc3RhdHVzID09IEJHV0hfU1RP UFBFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAg IFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCi0JCQkJCSAgIFdBSVRf RVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFTVEVSX0RF QVRILCAwLAorCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dPUktFUl9TSFVURE9XTik7CiAKIAkJ aWYgKHJjICYgV0xfUE9TVE1BU1RFUl9ERUFUSCkKIAkJewpAQCAtMTI3OSw3ICsxMjc5LDcg QEAgV2FpdEZvckJhY2tncm91bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2VySGFu ZGxlICpoYW5kbGUpCiAJCQlicmVhazsKIAkJfQogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAlyZXR1cm4g c3RhdHVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4IGE2ODhjYzVkMmEx Li5hZTdkNmY2NmNjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dy aXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYwpAQCAtMjI0 LDcgKzIyNCw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWludAkJCXJjOwogCiAJCS8qIENs ZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJUHJvY2Vz c01haW5Mb29wSW50ZXJydXB0cygpOwogCkBAIC0yOTksMjIgKzI5OSwyMiBAQCBCYWNrZ3Jv dW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQkgKiB3aWxsIGNhbGwgaXQgZXZlcnkgQmdXcml0ZXJEZWxheSBtc2Vj LiAgV2hpbGUgaXQncyBub3QgY3JpdGljYWwgZm9yCiAJCSAqIGNvcnJlY3RuZXNzIHRoYXQg dGhhdCBiZSBleGFjdCwgdGhlIGZlZWRiYWNrIGxvb3AgbWlnaHQgbWlzYmVoYXZlCiAJCSAq IGlmIHdlIHN0cmF5IHRvbyBmYXIgZnJvbSB0aGF0LiAgSGVuY2UsIGF2b2lkIGxvYWRpbmcg dGhpcyBwcm9jZXNzCi0JCSAqIGRvd24gd2l0aCBsYXRjaCBldmVudHMgdGhhdCBhcmUgbGlr ZWx5IHRvIGhhcHBlbiBmcmVxdWVudGx5IGR1cmluZwotCQkgKiBub3JtYWwgb3BlcmF0aW9u LgorCQkgKiBkb3duIHdpdGggaW50ZXJydXB0IGV2ZW50cyB0aGF0IGFyZSBsaWtlbHkgdG8g aGFwcGVuIGZyZXF1ZW50bHkKKwkJICogZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24uCiAJCSAq LwotCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgQmdXcml0ZXJEZWxh eSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CisJCXJjID0gV2FpdElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgQmdXcml0ZXJEZWxh eSAvKiBtcyAqLyAsIFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CiAKIAkJLyoKLQkJICog SWYgbm8gbGF0Y2ggZXZlbnQgYW5kIEJnQnVmZmVyU3luYyBzYXlzIG5vdGhpbmcncyBoYXBw ZW5pbmcsIGV4dGVuZAotCQkgKiB0aGUgc2xlZXAgaW4gImhpYmVybmF0aW9uIiBtb2RlLCB3 aGVyZSB3ZSBzbGVlcCBmb3IgbXVjaCBsb25nZXIKLQkJICogdGhhbiBiZ3dyaXRlcl9kZWxh eSBzYXlzLiAgRmV3ZXIgd2FrZXVwcyBzYXZlIGVsZWN0cmljaXR5LiAgV2hlbiBhCi0JCSAq IGJhY2tlbmQgc3RhcnRzIHVzaW5nIGJ1ZmZlcnMgYWdhaW4sIGl0IHdpbGwgd2FrZSB1cyB1 cCBieSBzZXR0aW5nCi0JCSAqIG91ciBsYXRjaC4gIEJlY2F1c2UgdGhlIGV4dHJhIHNsZWVw IHdpbGwgcGVyc2lzdCBvbmx5IGFzIGxvbmcgYXMgbm8KLQkJICogYnVmZmVyIGFsbG9jYXRp b25zIGhhcHBlbiwgdGhpcyBzaG91bGQgbm90IGRpc3RvcnQgdGhlIGJlaGF2aW9yIG9mCi0J CSAqIEJnQnVmZmVyU3luYydzIGNvbnRyb2wgbG9vcCB0b28gYmFkbHk7IGVzc2VudGlhbGx5 LCBpdCB3aWxsIHRoaW5rCi0JCSAqIHRoYXQgdGhlIHN5c3RlbS13aWRlIGlkbGUgaW50ZXJ2 YWwgZGlkbid0IGV4aXN0LgorCQkgKiBJZiBubyBpbnRlcnJ1cHQgZXZlbnQgYW5kIEJnQnVm ZmVyU3luYyBzYXlzIG5vdGhpbmcncyBoYXBwZW5pbmcsCisJCSAqIGV4dGVuZCB0aGUgc2xl ZXAgaW4gImhpYmVybmF0aW9uIiBtb2RlLCB3aGVyZSB3ZSBzbGVlcCBmb3IgbXVjaAorCQkg KiBsb25nZXIgdGhhbiBiZ3dyaXRlcl9kZWxheSBzYXlzLiAgRmV3ZXIgd2FrZXVwcyBzYXZl IGVsZWN0cmljaXR5LgorCQkgKiBXaGVuIGEgYmFja2VuZCBzdGFydHMgdXNpbmcgYnVmZmVy cyBhZ2FpbiwgaXQgd2lsbCB3YWtlIHVzIHVwIGJ5CisJCSAqIHNlbmRpbmcgdXMgYW4gaW50 ZXJydXB0LiAgQmVjYXVzZSB0aGUgZXh0cmEgc2xlZXAgd2lsbCBwZXJzaXN0IG9ubHkKKwkJ ICogYXMgbG9uZyBhcyBubyBidWZmZXIgYWxsb2NhdGlvbnMgaGFwcGVuLCB0aGlzIHNob3Vs ZCBub3QgZGlzdG9ydAorCQkgKiB0aGUgYmVoYXZpb3Igb2YgQmdCdWZmZXJTeW5jJ3MgY29u dHJvbCBsb29wIHRvbyBiYWRseTsgZXNzZW50aWFsbHksCisJCSAqIGl0IHdpbGwgdGhpbmsg dGhhdCB0aGUgc3lzdGVtLXdpZGUgaWRsZSBpbnRlcnZhbCBkaWRuJ3QgZXhpc3QuCiAJCSAq CiAJCSAqIFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaGVyZSwgaW4gdGhhdCBhIGJhY2tl bmQgbWlnaHQgYWxsb2NhdGUgYQogCQkgKiBidWZmZXIgYmV0d2VlbiB0aGUgdGltZSBCZ0J1 ZmZlclN5bmMgc2F3IHRoZSBhbGxvYyBjb3VudCBhcyB6ZXJvCkBAIC0zMjksMTAgKzMyOSwx MCBAQCBCYWNrZ3JvdW5kV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNp emVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJLyogQXNrIGZvciBub3RpZmljYXRpb24gYXQg bmV4dCBidWZmZXIgYWxsb2NhdGlvbiAqLwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihN eVByb2NOdW1iZXIpOwogCQkJLyogU2xlZXAgLi4uICovCi0JCQkodm9pZCkgV2FpdExhdGNo KE15TGF0Y2gsCi0JCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAotCQkJCQkJCSBCZ1dyaXRlckRlbGF5ICogSElCRVJOQVRFX0ZBQ1RP UiwKLQkJCQkJCQkgV0FJVF9FVkVOVF9CR1dSSVRFUl9ISUJFUk5BVEUpOworCQkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCSBXTF9JTlRFUlJV UFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkJIEJnV3Jp dGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SLAorCQkJCQkJCQkgV0FJVF9FVkVOVF9CR1dS SVRFUl9ISUJFUk5BVEUpOwogCQkJLyogUmVzZXQgdGhlIG5vdGlmaWNhdGlvbiByZXF1ZXN0 IGluIGNhc2Ugd2UgdGltZWQgb3V0ICovCiAJCQlTdHJhdGVneU5vdGlmeUJnV3JpdGVyKC0x KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50 ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggMGUy MjhkMTQzYTAuLjM2M2E0MjAxOGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMKQEAgLTM1Miw3ICszNTIsNyBAQCBDaGVja3BvaW50ZXJNYWluKGNvbnN0IHZv aWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWJvb2wJCWNo a3B0X29yX3JzdHB0X3RpbWVkID0gZmFsc2U7CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHkt cGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKgogCQkgKiBQcm9jZXNzIGFueSBy ZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5LgpAQCAtNTM0LDcgKzUzNCw3 IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qg c3RhcnR1cF9kYXRhX2xlbikKIAogCQkJLyoKIAkJCSAqIFdlIG1heSBoYXZlIHJlY2VpdmVk IGFuIGludGVycnVwdCBkdXJpbmcgdGhlIGNoZWNrcG9pbnQgYW5kIHRoZQotCQkJICogbGF0 Y2ggbWlnaHQgaGF2ZSBiZWVuIHJlc2V0IChlLmcuIGluIENoZWNrcG9pbnRXcml0ZURlbGF5 KS4KKwkJCSAqIGludGVycnVwdCBtaWdodCBoYXZlIGJlZW4gcmVzZXQgKGUuZy4gaW4gQ2hl Y2twb2ludFdyaXRlRGVsYXkpLgogCQkJICovCiAJCQlQcm9jZXNzQ2hlY2twb2ludGVySW50 ZXJydXB0cygpOwogCQkJaWYgKFNodXRkb3duWExPR1BlbmRpbmcgfHwgU2h1dGRvd25SZXF1 ZXN0UGVuZGluZykKQEAgLTU3MiwxMCArNTcyLDEwIEBAIENoZWNrcG9pbnRlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCWN1 cl90aW1lb3V0ID0gTWluKGN1cl90aW1lb3V0LCBYTG9nQXJjaGl2ZVRpbWVvdXQgLSBlbGFw c2VkX3NlY3MpOwogCQl9CiAKLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJ IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJ CQkJIGN1cl90aW1lb3V0ICogMTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCi0JCQkJCQkg V0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQgKiAxMDAwTCAv KiBjb252ZXJ0IHRvIG1zICovICwKKwkJCQkJCQkgV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJf TUFJTik7CiAJfQogCiAJLyoKQEAgLTYxMywxNyArNjEzLDE3IEBAIENoZWNrcG9pbnRlck1h aW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikK IAlmb3IgKDs7KQogCXsKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBz ICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAogCQlQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0cygpOwogCiAJ CWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCQkgMCwKLQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9TSFVU RE9XTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJ CQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAwLAor CQkJCQkJCSBXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9TSFVURE9XTik7CiAJfQogCiAJLyog Tm9ybWFsIGV4aXQgZnJvbSB0aGUgY2hlY2twb2ludGVyIGlzIGhlcmUgKi8KQEAgLTgwNCwx MCArODA0LDExIEBAIENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHBy b2dyZXNzKQogCQkgKiBDaGVja3BvaW50ZXIgYW5kIGJnd3JpdGVyIGFyZSBubyBsb25nZXIg cmVsYXRlZCBzbyB0YWtlIHRoZSBCaWcKIAkJICogU2xlZXAuCiAJCSAqLwotCQlXYWl0TGF0 Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJ TUVPVVQsCi0JCQkJICAxMDAsCi0JCQkJICBXQUlUX0VWRU5UX0NIRUNLUE9JTlRfV1JJVEVf REVMQVkpOwotCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQlXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkgIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVB VEggfCBXTF9USU1FT1VULAorCQkJCQkgIDEwMCwKKwkJCQkJICBXQUlUX0VWRU5UX0NIRUNL UE9JTlRfV1JJVEVfREVMQVkpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CiAJfQogCWVsc2UgaWYgKC0tYWJzb3JiX2NvdW50ZXIgPD0gMCkKIAl7CkBAIC05MTYs NyArOTE3LDcgQEAgc3RhdGljIHZvaWQKIFJlcVNodXRkb3duWExPRyhTSUdOQUxfQVJHUykK IHsKIAlTaHV0ZG93blhMT0dQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsK KwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIApAQCAtMTAzMywx NCArMTAzNCwxNCBAQCBSZXF1ZXN0Q2hlY2twb2ludChpbnQgZmxhZ3MpCiAJU3BpbkxvY2tS ZWxlYXNlKCZDaGVja3BvaW50ZXJTaG1lbS0+Y2twdF9sY2spOwogCiAJLyoKLQkgKiBTZXQg Y2hlY2twb2ludGVyJ3MgbGF0Y2ggdG8gcmVxdWVzdCBjaGVja3BvaW50LiAgSXQncyBwb3Nz aWJsZSB0aGF0IHRoZQotCSAqIGNoZWNrcG9pbnRlciBoYXNuJ3Qgc3RhcnRlZCB5ZXQsIHNv IHdlIHdpbGwgcmV0cnkgYSBmZXcgdGltZXMgaWYKKwkgKiBTZW5kIElOVEVSUlVQVF9HRU5F UkFMIHRvIHdha2UgdXAgdGhlIGNoZWNrcG9pbnRlci4gIEl0J3MgcG9zc2libGUgdGhhdAor CSAqIHRoZSBjaGVja3BvaW50ZXIgaGFzbid0IHN0YXJ0ZWQgeWV0LCBzbyB3ZSB3aWxsIHJl dHJ5IGEgZmV3IHRpbWVzIGlmCiAJICogbmVlZGVkLiAgKEFjdHVhbGx5LCBtb3JlIHRoYW4g YSBmZXcgdGltZXMsIHNpbmNlIG9uIHNsb3cgb3Igb3ZlcmxvYWRlZAogCSAqIGJ1aWxkZmFy bSBtYWNoaW5lcywgaXQncyBiZWVuIG9ic2VydmVkIHRoYXQgdGhlIGNoZWNrcG9pbnRlciBj YW4gdGFrZQogCSAqIHNldmVyYWwgc2Vjb25kcyB0byBzdGFydC4pICBIb3dldmVyLCBpZiBu b3QgdG9sZCB0byB3YWl0IGZvciB0aGUKLQkgKiBjaGVja3BvaW50IHRvIG9jY3VyLCB3ZSBj b25zaWRlciBmYWlsdXJlIHRvIHNldCB0aGUgbGF0Y2ggdG8gYmUKLQkgKiBub25mYXRhbCBh bmQgbWVyZWx5IExPRyBpdC4gIFRoZSBjaGVja3BvaW50ZXIgc2hvdWxkIHNlZSB0aGUgcmVx dWVzdAotCSAqIHdoZW4gaXQgZG9lcyBzdGFydCwgd2l0aCBvciB3aXRob3V0IHRoZSBTZXRM YXRjaCgpLgorCSAqIGNoZWNrcG9pbnQgdG8gb2NjdXIsIHdlIGNvbnNpZGVyIGZhaWx1cmUg dG8gd2FrZSB1cCB0aGUgY2hlY2twb2ludGVyIHRvCisJICogYmUgbm9uZmF0YWwgYW5kIG1l cmVseSBMT0cgaXQuICBUaGUgY2hlY2twb2ludGVyIHNob3VsZCBzZWUgdGhlIHJlcXVlc3QK KwkgKiB3aGVuIGl0IGRvZXMgc3RhcnQsIHdpdGggb3Igd2l0aG91dCB0aGUgU2VuZEludGVy cnVwdCgpLgogCSAqLwogI2RlZmluZSBNQVhfU0lHTkFMX1RSSUVTIDYwMAkvKiBtYXggd2Fp dCA2MC4wIHNlYyAqLwogCWZvciAobnRyaWVzID0gMDs7IG50cmllcysrKQpAQCAtMTA1OSw3 ICsxMDYwLDcgQEAgUmVxdWVzdENoZWNrcG9pbnQoaW50IGZsYWdzKQogCQl9CiAJCWVsc2UK IAkJewotCQkJU2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGNoZWNrcG9pbnRlclByb2Mp LT5wcm9jTGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgY2hl Y2twb2ludGVyUHJvYyk7CiAJCQkvKiBub3RpZmllZCBzdWNjZXNzZnVsbHkgKi8KIAkJCWJy ZWFrOwogCQl9CkBAIC0xMTg2LDcgKzExODcsNyBAQCBGb3J3YXJkU3luY1JlcXVlc3QoY29u c3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpCiAJCVByb2NOdW1iZXIJ Y2hlY2twb2ludGVyUHJvYyA9IHByb2NnbG9iYWwtPmNoZWNrcG9pbnRlclByb2M7CiAKIAkJ aWYgKGNoZWNrcG9pbnRlclByb2MgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKLQkJCVNldExh dGNoKCZHZXRQR1Byb2NCeU51bWJlcihjaGVja3BvaW50ZXJQcm9jKS0+cHJvY0xhdGNoKTsK KwkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFByb2NHbG9iYWwtPmNoZWNr cG9pbnRlclByb2MpOwogCX0KIAogCXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv aW50ZXJydXB0LmMKaW5kZXggMGFlOWJmOTA2ZWMuLjRjZGU3ZDUyYmQzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKQEAgLTEsMTMgKzEsMTMgQEAKIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICoKICAqIGludGVycnVwdC5jCi0gKgkgIEludGVycnVwdCBoYW5kbGlu ZyByb3V0aW5lcy4KKyAqCSAgSW50ZXItcHJvY2VzcyBpbnRlcnJ1cHRzCiAgKgotICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAg KgogICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRl cnJ1cHQuYworICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pbnRlcnJ1cHQuYwogICoK ICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBAIC0xNywxNiArMTcsMjY0IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJw b3J0L2F0b21pY3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogdm9sYXRpbGUgc2lnX2F0 b21pY190IENvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nID0gZmFsc2U7CiAKKy8qIEEgY29tbW9uIFdh aXRFdmVudFNldCB1c2VkIHRvIGltcGxlbWVudCBXYWl0SW50ZXJydXB0KCkgKi8KK3N0YXRp YyBXYWl0RXZlbnRTZXQgKkludGVycnVwdFdhaXRTZXQ7CisKKy8qIFRoZSBwb3NpdGlvbiBv ZiB0aGUgaW50ZXJydXB0IGluIEludGVycnVwdFdhaXRTZXQuICovCisjZGVmaW5lIEludGVy cnVwdFdhaXRTZXRJbnRlcnJ1cHRQb3MgMAorI2RlZmluZSBJbnRlcnJ1cHRXYWl0U2V0UG9z dG1hc3RlckRlYXRoUG9zIDEKKworc3RhdGljIHBnX2F0b21pY191aW50MzIgTG9jYWxQZW5k aW5nSW50ZXJydXB0czsKKworcGdfYXRvbWljX3VpbnQzMiAqTXlQZW5kaW5nSW50ZXJydXB0 cyA9ICZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzOworCisvKgorICogU3dpdGNoIHRvIGxvY2Fs IGludGVycnVwdHMuICBPdGhlciBiYWNrZW5kcyBjYW4ndCBzZW5kIGludGVycnVwdHMgdG8g dGhpcworICogb25lLiAgT25seSBSYWlzZUludGVycnVwdCgpIGNhbiBzZXQgdGhlbSwgZnJv bSBpbnNpZGUgdGhpcyBwcm9jZXNzLgorICovCit2b2lkCitTd2l0Y2hUb0xvY2FsSW50ZXJy dXB0cyh2b2lkKQoreworCWlmIChNeVBlbmRpbmdJbnRlcnJ1cHRzID09ICZMb2NhbFBlbmRp bmdJbnRlcnJ1cHRzKQorCQlyZXR1cm47CisKKwlNeVBlbmRpbmdJbnRlcnJ1cHRzID0gJkxv Y2FsUGVuZGluZ0ludGVycnVwdHM7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGF0IFNJR0FM Uk0gaGFuZGxlcnMgdGhhdCBjYWxsIFJhaXNlSW50ZXJydXB0KCkgYXJlIG5vdworCSAqIHNl ZWluZyB0aGUgbmV3IE15UGVuZGluZ0ludGVycnVwdHMgZGVzdGluYXRpb24uCisJICovCisJ cGdfbWVtb3J5X2JhcnJpZXIoKTsKKworCS8qCisJICogTWl4IGluIHRoZSBpbnRlcnJ1cHRz IHRoYXQgd2UgaGF2ZSByZWNlaXZlZCBhbHJlYWR5IGluIG91ciBzaGFyZWQKKwkgKiBpbnRl cnJ1cHQgdmVjdG9yLCB3aGlsZSBhdG9taWNhbGx5IGNsZWFyaW5nIGl0LiAgT3RoZXIgYmFj a2VuZHMgbWF5CisJICogY29udGludWUgdG8gc2V0IGJpdHMgaW4gaXQgYWZ0ZXIgdGhpcyBw b2ludCwgYnV0IHdlJ3ZlIGF0b21pY2FsbHkKKwkgKiB0cmFuc2ZlcnJlZCB0aGUgZXhpc3Rp bmcgYml0cyB0byBvdXIgbG9jYWwgdmVjdG9yIHNvIHdlIHdvbid0IGdldAorCSAqIGR1cGxp Y2F0ZWQgaW50ZXJydXB0cyBsYXRlciBpZiB3ZSBzd2l0Y2ggYmFja3guCisJICovCisJcGdf YXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLAorCQkJCQkJICAgcGdf YXRvbWljX2V4Y2hhbmdlX3UzMigmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cywgMCkpOwor fQorCisvKgorICogU3dpdGNoIHRvIHNoYXJlZCBtZW1vcnkgaW50ZXJydXB0cy4gIE90aGVy IGJhY2tlbmRzIGNhbiBzZW5kIGludGVycnVwdHMgdG8KKyAqIHRoaXMgb25lIGlmIHRoZXkg a25vdyBpdHMgUHJvY051bWJlciwgYW5kIHdlJ2xsIG5vdyBzZWUgYW55IHRoYXQgd2UgbWlz c2VkLgorICovCit2b2lkCitTd2l0Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCkKK3sKKwlp ZiAoTXlQZW5kaW5nSW50ZXJydXB0cyA9PSAmTXlQcm9jLT5wZW5kaW5nSW50ZXJydXB0cykK KwkJcmV0dXJuOworCisJTXlQZW5kaW5nSW50ZXJydXB0cyA9ICZNeVByb2MtPnBlbmRpbmdJ bnRlcnJ1cHRzOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhhdCBTSUdBTFJNIGhhbmRsZXJz IHRoYXQgY2FsbCBSYWlzZUludGVycnVwdCgpIGFyZSBub3cKKwkgKiBzZWVpbmcgdGhlIG5l dyBNeVBlbmRpbmdJbnRlcnJ1cHRzIGRlc3RpbmF0aW9uLgorCSAqLworCXBnX21lbW9yeV9i YXJyaWVyKCk7CisKKwkvKiBNaXggaW4gYW55IHVuaGFuZGxlZCBiaXRzIGZyb20gTG9jYWxQ ZW5kaW5nSW50ZXJydXB0cy4gKi8KKwlwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKE15UGVuZGlu Z0ludGVycnVwdHMsCisJCQkJCQkgICBwZ19hdG9taWNfZXhjaGFuZ2VfdTMyKCZMb2NhbFBl bmRpbmdJbnRlcnJ1cHRzLCAwKSk7Cit9CisKKy8qCisgKiBTZXQgYW4gaW50ZXJydXB0IGZs YWcgaW4gdGhpcyBiYWNrZW5kLgorICovCit2b2lkCitSYWlzZUludGVycnVwdCh1aW50MzIg aW50ZXJydXB0TWFzaykKK3sKKwl1aW50MzIJCW9sZF9wZW5kaW5nOworCisJb2xkX3BlbmRp bmcgPSBwZ19hdG9taWNfZmV0Y2hfb3JfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIGludGVy cnVwdE1hc2spOworCisJLyoKKwkgKiBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxv Y2tlZCB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgdG8gYXJyaXZlLAorCSAqIGFuZCB0aGUg aW50ZXJydXB0IHdhc24ndCBhbHJlYWR5IHBlbmRpbmcsIHdha2UgaXQgdXAuCisJICovCisJ aWYgKChvbGRfcGVuZGluZyAmIChpbnRlcnJ1cHRNYXNrIHwgU0xFRVBJTkdfT05fSU5URVJS VVBUUykpID09IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpCisJCVdha2V1cE15UHJvYygpOwor fQorCisvKgorICogU2V0IGFuIGludGVycnVwdCBmbGFnIGluIGFub3RoZXIgYmFja2VuZC4K KyAqLwordm9pZAorU2VuZEludGVycnVwdCh1aW50MzIgaW50ZXJydXB0TWFzaywgUHJvY051 bWJlciBwZ3Byb2NubykKK3sKKwlQR1BST0MJICAgKnByb2M7CisJdWludDMyCQlvbGRfcGVu ZGluZzsKKworCUFzc2VydChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlB c3NlcnQocGdwcm9jbm8gPj0gMCk7CisJQXNzZXJ0KHBncHJvY25vIDwgUHJvY0dsb2JhbC0+ YWxsUHJvY0NvdW50KTsKKworCXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9j bm9dOworCW9sZF9wZW5kaW5nID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMigmcHJvYy0+cGVu ZGluZ0ludGVycnVwdHMsIGludGVycnVwdE1hc2spOworCisJLyoKKwkgKiBJZiB0aGUgcHJv Y2VzcyBpcyBjdXJyZW50bHkgYmxvY2tlZCB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgdG8g YXJyaXZlLAorCSAqIGFuZCB0aGUgaW50ZXJydXB0IHdhc24ndCBhbHJlYWR5IHBlbmRpbmcs IHdha2UgaXQgdXAuCisJICovCisJaWYgKChvbGRfcGVuZGluZyAmIChpbnRlcnJ1cHRNYXNr IHwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpID09IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMp CisJCVdha2V1cE90aGVyUHJvYyhwcm9jKTsKK30KKwordm9pZAorSW5pdGlhbGl6ZUludGVy cnVwdFdhaXRTZXQodm9pZCkKK3sKKwlpbnQJCQlpbnRlcnJ1cHRfcG9zIFBHX1VTRURfRk9S X0FTU0VSVFNfT05MWTsKKworCUFzc2VydChJbnRlcnJ1cHRXYWl0U2V0ID09IE5VTEwpOwor CisJLyogU2V0IHVwIHRoZSBXYWl0RXZlbnRTZXQgdXNlZCBieSBXYWl0SW50ZXJydXB0KCku ICovCisJSW50ZXJydXB0V2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCAyKTsK KwlpbnRlcnJ1cHRfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQoSW50ZXJydXB0V2FpdFNldCwg V0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJCQkJICAwLCBOVUxMKTsK KwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCUFkZFdhaXRFdmVudFRvU2V0KEludGVycnVw dFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgIFBHSU5WQUxJRF9TT0NL RVQsIDAsIE5VTEwpOworCisJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0gSW50ZXJydXB0V2Fp dFNldEludGVycnVwdFBvcyk7Cit9CisKKworLyoKKyAqIFdhaXQgZm9yIGFueSBvZiB0aGUg aW50ZXJydXB0cyBpbiBpbnRlcnJ1cHRNYXNrIHRvIGJlIHNldCwgb3IgZm9yCisgKiBwb3N0 bWFzdGVyIGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0IGlzIGV4Y2VlZGVkLiAnd2FrZUV2ZW50 cycgaXMgYSBiaXRtYXNrCisgKiB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVu dHMgdG8gd2FpdCBmb3IuIElmIHRoZSBpbnRlcnJ1cHQgaXMKKyAqIGFscmVhZHkgcGVuZGlu ZyAoYW5kIFdMX0lOVEVSUlVQVCBpcyBnaXZlbiksIHRoZSBmdW5jdGlvbiByZXR1cm5zCisg KiBpbW1lZGlhdGVseS4KKyAqCisgKiBUaGUgInRpbWVvdXQiIGlzIGdpdmVuIGluIG1pbGxp c2Vjb25kcy4gSXQgbXVzdCBiZSA+PSAwIGlmIFdMX1RJTUVPVVQgZmxhZworICogaXMgZ2l2 ZW4uICBBbHRob3VnaCBpdCBpcyBkZWNsYXJlZCBhcyAibG9uZyIsIHdlIGRvbid0IGFjdHVh bGx5IHN1cHBvcnQKKyAqIHRpbWVvdXRzIGxvbmdlciB0aGFuIElOVF9NQVggbWlsbGlzZWNv bmRzLiAgTm90ZSB0aGF0IHNvbWUgZXh0cmEgb3ZlcmhlYWQKKyAqIGlzIGluY3VycmVkIHdo ZW4gV0xfVElNRU9VVCBpcyBnaXZlbiwgc28gYXZvaWQgdXNpbmcgYSB0aW1lb3V0IGlmIHBv c3NpYmxlLgorICoKKyAqIFJldHVybnMgYml0IG1hc2sgaW5kaWNhdGluZyB3aGljaCBjb25k aXRpb24ocykgY2F1c2VkIHRoZSB3YWtlLXVwLiBOb3RlCisgKiB0aGF0IGlmIG11bHRpcGxl IHdha2UtdXAgY29uZGl0aW9ucyBhcmUgdHJ1ZSwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo YXQKKyAqIHdlIHJldHVybiBhbGwgb2YgdGhlbSBpbiBvbmUgY2FsbCwgYnV0IHdlIHdpbGwg cmV0dXJuIGF0IGxlYXN0IG9uZS4KKyAqLworaW50CitXYWl0SW50ZXJydXB0KHVpbnQzMiBp bnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJICB1aW50 MzIgd2FpdF9ldmVudF9pbmZvKQoreworCVdhaXRFdmVudAlldmVudDsKKworCS8qIFBvc3Rt YXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29t ZWhvdy4gKi8KKwlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZl bnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9Q T1NUTUFTVEVSX0RFQVRIKSk7CisKKwkvKgorCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2ZSBh biBpbnRlcnJ1cHQgbWFzayBkaWZmZXJlbnQgZnJvbSBsYXN0IHRpbWUsIG9yIG5vCisJICog aW50ZXJydXB0IG1hc2sgYXQgYWxsLCBvciB3YW50IHRvIGhhbmRsZSBwb3N0bWFzdGVyIGRl YXRoIGRpZmZlcmVudGx5LgorCSAqIEl0J3MgY2hlYXAgdG8gYXNzaWduIHRob3NlLCBzbyBq dXN0IGRvIGl0IGV2ZXJ5IHRpbWUuCisJICovCisJaWYgKCEod2FrZUV2ZW50cyAmIFdMX0lO VEVSUlVQVCkpCisJCWludGVycnVwdE1hc2sgPSAwOworCU1vZGlmeVdhaXRFdmVudChJbnRl cnJ1cHRXYWl0U2V0LCBJbnRlcnJ1cHRXYWl0U2V0SW50ZXJydXB0UG9zLAorCQkJCQlXTF9J TlRFUlJVUFQsIGludGVycnVwdE1hc2spOworCisJTW9kaWZ5V2FpdEV2ZW50KEludGVycnVw dFdhaXRTZXQsIEludGVycnVwdFdhaXRTZXRQb3N0bWFzdGVyRGVhdGhQb3MsCisJCQkJCSh3 YWtlRXZlbnRzICYgKFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9QT1NUTUFTVEVSX0RFQVRI KSksCisJCQkJCTApOworCisJaWYgKFdhaXRFdmVudFNldFdhaXQoSW50ZXJydXB0V2FpdFNl dCwKKwkJCQkJCSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAor CQkJCQkJICZldmVudCwgMSwKKwkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCisJCXJl dHVybiBXTF9USU1FT1VUOworCWVsc2UKKwkJcmV0dXJuIGV2ZW50LmV2ZW50czsKK30KKwor LyoKKyAqIExpa2UgV2FpdEludGVycnVwdCwgYnV0IHdpdGggYW4gZXh0cmEgc29ja2V0IGFy Z3VtZW50IGZvciBXTF9TT0NLRVRfKgorICogY29uZGl0aW9ucy4KKyAqCisgKiBXaGVuIHdh aXRpbmcgb24gYSBzb2NrZXQsIEVPRiBhbmQgZXJyb3IgY29uZGl0aW9ucyBhbHdheXMgY2F1 c2UgdGhlIHNvY2tldAorICogdG8gYmUgcmVwb3J0ZWQgYXMgcmVhZGFibGUvd3JpdGFibGUv Y29ubmVjdGVkLCBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGRlYWwKKyAqIHdpdGggdGhlIGNv bmRpdGlvbi4KKyAqCisgKiB3YWtlRXZlbnRzIG11c3QgaW5jbHVkZSBlaXRoZXIgV0xfRVhJ VF9PTl9QTV9ERUFUSCBmb3IgYXV0b21hdGljIGV4aXQKKyAqIGlmIHRoZSBwb3N0bWFzdGVy IGRpZXMgb3IgV0xfUE9TVE1BU1RFUl9ERUFUSCBmb3IgYSBmbGFnIHNldCBpbiB0aGUKKyAq IHJldHVybiB2YWx1ZSBpZiB0aGUgcG9zdG1hc3RlciBkaWVzLiAgVGhlIGxhdHRlciBpcyB1 c2VmdWwgZm9yIHJhcmUgY2FzZXMKKyAqIHdoZXJlIHNvbWUgYmVoYXZpb3Igb3RoZXIgdGhh biBpbW1lZGlhdGUgZXhpdCBpcyBuZWVkZWQuCisgKgorICogTkI6IFRoZXNlIGRheXMgdGhp cyBpcyBqdXN0IGEgd3JhcHBlciBhcm91bmQgdGhlIFdhaXRFdmVudFNldCBBUEkuIFdoZW4K KyAqIHVzaW5nIGFuIGludGVycnVwdCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0 aW5nIGEgbG9uZ2VyIGxpdmluZworICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBt b3JlIGVmZmljaWVudC4KKyAqLworaW50CitXYWl0SW50ZXJydXB0T3JTb2NrZXQodWludDMy IGludGVycnVwdE1hc2ssIGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAorCQkJCQkg IGxvbmcgdGltZW91dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbykKK3sKKwlpbnQJCQlyZXQg PSAwOworCWludAkJCXJjOworCVdhaXRFdmVudAlldmVudDsKKwlXYWl0RXZlbnRTZXQgKnNl dCA9IENyZWF0ZVdhaXRFdmVudFNldChDdXJyZW50UmVzb3VyY2VPd25lciwgMyk7CisKKwlp ZiAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpCisJCUFzc2VydCh0aW1lb3V0ID49IDApOwor CWVsc2UKKwkJdGltZW91dCA9IC0xOworCisJaWYgKHdha2VFdmVudHMgJiBXTF9JTlRFUlJV UFQpCisJCUFkZFdhaXRFdmVudFRvU2V0KHNldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURf U09DS0VULAorCQkJCQkJICBpbnRlcnJ1cHRNYXNrLCBOVUxMKTsKKworCS8qIFBvc3RtYXN0 ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggc29tZWhv dy4gKi8KKwlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8CisJCSAgICh3YWtlRXZlbnRz ICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKKwkJICAgKHdha2VFdmVudHMgJiBXTF9QT1NU TUFTVEVSX0RFQVRIKSk7CisKKwlpZiAoKHdha2VFdmVudHMgJiBXTF9QT1NUTUFTVEVSX0RF QVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKKwkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBX TF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAorCQkJCQkJICAwLCBOVUxM KTsKKworCWlmICgod2FrZUV2ZW50cyAmIFdMX0VYSVRfT05fUE1fREVBVEgpICYmIElzVW5k ZXJQb3N0bWFzdGVyKQorCQlBZGRXYWl0RXZlbnRUb1NldChzZXQsIFdMX0VYSVRfT05fUE1f REVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkgIDAsIE5VTEwpOworCisJaWYgKHdh a2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSykKKwl7CisJCWludAkJCWV2OworCisJCWV2ID0g d2FrZUV2ZW50cyAmIFdMX1NPQ0tFVF9NQVNLOworCQlBZGRXYWl0RXZlbnRUb1NldChzZXQs IGV2LCBzb2NrLCAwLCBOVUxMKTsKKwl9CisKKwlyYyA9IFdhaXRFdmVudFNldFdhaXQoc2V0 LCB0aW1lb3V0LCAmZXZlbnQsIDEsIHdhaXRfZXZlbnRfaW5mbyk7CisKKwlpZiAocmMgPT0g MCkKKwkJcmV0IHw9IFdMX1RJTUVPVVQ7CisJZWxzZQorCXsKKwkJcmV0IHw9IGV2ZW50LmV2 ZW50cyAmIChXTF9JTlRFUlJVUFQgfAorCQkJCQkJCSAgIFdMX1BPU1RNQVNURVJfREVBVEgg fAorCQkJCQkJCSAgIFdMX1NPQ0tFVF9NQVNLKTsKKwl9CisKKwlGcmVlV2FpdEV2ZW50U2V0 KHNldCk7CisKKwlyZXR1cm4gcmV0OworfQorCiAvKgogICogU2ltcGxlIGludGVycnVwdCBo YW5kbGVyIGZvciBtYWluIGxvb3BzIG9mIGJhY2tncm91bmQgcHJvY2Vzc2VzLgogICovCkBA IC02MSw3ICszMDksNyBAQCB2b2lkCiBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKFNJ R05BTF9BUkdTKQogewogCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSB0cnVlOwotCVNldExhdGNo KE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAog LyoKQEAgLTEwNSw1ICszNTMsNSBAQCB2b2lkCiBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25S ZXF1ZXN0KFNJR05BTF9BUkdTKQogewogCVNodXRkb3duUmVxdWVzdFBlbmRpbmcgPSB0cnVl OwotCVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IGRiZTRlMWQ0MjZiLi40 ZjI4ZWE1YjYxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2gu YworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC00Miw3ICs0Miw2 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKLSNpbmNsdWRlICJz dG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpA QCAtMjQ3LDggKzI0Niw4IEBAIFBnQXJjaGl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBf ZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJb25fc2htZW1fZXhpdChwZ2FyY2hf ZGllLCAwKTsKIAogCS8qCi0JICogQWR2ZXJ0aXNlIG91ciBwcm9jIG51bWJlciBzbyB0aGF0 IGJhY2tlbmRzIGNhbiB1c2Ugb3VyIGxhdGNoIHRvIHdha2UgdXMKLQkgKiB1cCB3aGlsZSB3 ZSdyZSBzbGVlcGluZy4KKwkgKiBBZHZlcnRpc2Ugb3VyIHByb2MgbnVtYmVyIHNvIHRoYXQg YmFja2VuZHMgY2FuIHdha2UgdXMgdXAgd2hpbGUgd2UncmUKKwkgKiBzbGVlcGluZy4KIAkg Ki8KIAlQZ0FyY2gtPnBncHJvY25vID0gTXlQcm9jTnVtYmVyOwogCkBAIC0yODIsMTMgKzI4 MSwxMiBAQCBQZ0FyY2hXYWtldXAodm9pZCkKIAlpbnQJCQlhcmNoX3BncHJvY25vID0gUGdB cmNoLT5wZ3Byb2NubzsKIAogCS8qCi0JICogV2UgZG9uJ3QgYWNxdWlyZSBQcm9jQXJyYXlM b2NrIGhlcmUuICBJdCdzIGFjdHVhbGx5IGZpbmUgYmVjYXVzZQotCSAqIHByb2NMYXRjaCBp c24ndCBldmVyIGZyZWVkLCBzbyB3ZSBqdXN0IGNhbiBwb3RlbnRpYWxseSBzZXQgdGhlIHdy b25nCi0JICogcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBsYXRjaC4gIEV2ZW4gaW4gdGhh dCBjYXNlIHRoZSBhcmNoaXZlciB3aWxsCi0JICogYmUgcmVsYXVuY2hlZCBzaG9ydGx5IGFu ZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KKwkgKiBXZSBkb24ndCBhY3F1aXJlIFByb2NBcnJh eUxvY2sgaGVyZSwgc28gd2UgbWF5IHNlbmQgdGhlIGludGVycnVwdCB0bworCSAqIHdyb25n IHByb2Nlc3MsIGJ1dCB0aGF0J3MgaGFybWxlc3MuICBFdmVuIGluIHRoYXQgY2FzZSB0aGUg YXJjaGl2ZXIKKwkgKiB3aWxsIGJlIHJlbGF1bmNoZWQgc2hvcnRseSBhbmQgd2lsbCBzdGFy dCBhcmNoaXZpbmcuCiAJICovCiAJaWYgKGFyY2hfcGdwcm9jbm8gIT0gSU5WQUxJRF9QUk9D X05VTUJFUikKLQkJU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2FyY2hfcGdwcm9j bm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIGFy Y2hfcGdwcm9jbm8pOwogfQogCiAKQEAgLTI5OCw3ICsyOTYsNyBAQCBwZ2FyY2hfd2FrZW5f c3RvcChTSUdOQUxfQVJHUykKIHsKIAkvKiBzZXQgZmxhZyB0byBkbyBhIGZpbmFsIGN5Y2xl IGFuZCBzaHV0IGRvd24gYWZ0ZXJ3YXJkcyAqLwogCXJlYWR5X3RvX3N0b3AgPSB0cnVlOwot CVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIH0KIAogLyoKQEAgLTMxOCw3ICszMTYsNyBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkK IAkgKi8KIAlkbwogCXsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8qIFdoZW4gd2UgZ2V0IFNJR1VTUjIsIHdl IGRvIG9uZSBtb3JlIGFyY2hpdmUgY3ljbGUsIHRoZW4gZXhpdCAqLwogCQl0aW1lX3RvX3N0 b3AgPSByZWFkeV90b19zdG9wOwpAQCAtMzU1LDEwICszNTMsMTAgQEAgcGdhcmNoX01haW5M b29wKHZvaWQpCiAJCXsKIAkJCWludAkJCXJjOwogCi0JCQlyYyA9IFdhaXRMYXRjaChNeUxh dGNoLAotCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX1BPU1RNQVNU RVJfREVBVEgsCi0JCQkJCQkgICBQR0FSQ0hfQVVUT1dBS0VfSU5URVJWQUwgKiAxMDAwTCwK LQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CisJCQlyYyA9IFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsCisJCQkJCQkJICAgUEdBUkNIX0FVVE9X QUtFX0lOVEVSVkFMICogMTAwMEwsCisJCQkJCQkJICAgV0FJVF9FVkVOVF9BUkNISVZFUl9N QUlOKTsKIAkJCWlmIChyYyAmIFdMX1BPU1RNQVNURVJfREVBVEgpCiAJCQkJdGltZV90b19z dG9wID0gdHJ1ZTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRl eCBkMmE3YTdhZGQ2Zi4uODIwNDRhYmRiNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jCkBAIC0xMDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJwb3J0L3BnX2Jzd2Fw LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNoLmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9zeXNsb2dn ZXIuaCIKQEAgLTU0OSw3ICs1NTAsNiBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCiAJLyogVGhpcyBtYXkgY29uZmlndXJlIFNJR1VSRywgZGVwZW5kaW5n IG9uIHBsYXRmb3JtLiAqLwogCUluaXRpYWxpemVXYWl0RXZlbnRTdXBwb3J0KCk7Ci0JSW5p dFByb2Nlc3NMb2NhbExhdGNoKCk7CiAKIAkvKgogCSAqIE5vIG90aGVyIHBsYWNlIGluIFBv c3RncmVzIHNob3VsZCB0b3VjaCBTSUdUVElOL1NJR1RUT1UgaGFuZGxpbmcuICBXZQpAQCAt MTYyMCwxNCArMTYyMCwxNCBAQCBDb25maWd1cmVQb3N0bWFzdGVyV2FpdFNldChib29sIGFj Y2VwdF9jb25uZWN0aW9ucykKIAogCXBtX3dhaXRfc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0 KE5VTEwsCiAJCQkJCQkJCQkgYWNjZXB0X2Nvbm5lY3Rpb25zID8gKDEgKyBOdW1MaXN0ZW5T b2NrZXRzKSA6IDEpOwotCUFkZFdhaXRFdmVudFRvU2V0KHBtX3dhaXRfc2V0LCBXTF9MQVRD SF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsIE15TGF0Y2gsCi0JCQkJCSAgTlVMTCk7CisJQWRk V2FpdEV2ZW50VG9TZXQocG1fd2FpdF9zZXQsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NP Q0tFVCwKKwkJCQkJICBJTlRFUlJVUFRfR0VORVJBTCwgTlVMTCk7CiAKIAlpZiAoYWNjZXB0 X2Nvbm5lY3Rpb25zKQogCXsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1MaXN0ZW5Tb2Nr ZXRzOyBpKyspCiAJCQlBZGRXYWl0RXZlbnRUb1NldChwbV93YWl0X3NldCwgV0xfU09DS0VU X0FDQ0VQVCwgTGlzdGVuU29ja2V0c1tpXSwKLQkJCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJ CQkJCSAgMCwgTlVMTCk7CiAJfQogfQogCkBAIC0xNjU2LDE5ICsxNjU2LDIwIEBAIFNlcnZl ckxvb3Aodm9pZCkKIAkJCQkJCQkJICAgMCAvKiBwb3N0bWFzdGVyIHBvc3RzIG5vIHdhaXRf ZXZlbnRzICovICk7CiAKIAkJLyoKLQkJICogTGF0Y2ggc2V0IGJ5IHNpZ25hbCBoYW5kbGVy LCBvciBuZXcgY29ubmVjdGlvbiBwZW5kaW5nIG9uIGFueSBvZgotCQkgKiBvdXIgc29ja2V0 cz8gSWYgdGhlIGxhdHRlciwgZm9yayBhIGNoaWxkIHByb2Nlc3MgdG8gZGVhbCB3aXRoIGl0 LgorCQkgKiBJbnRlcnJ1cHQgcmFpc2VkIGJ5IHNpZ25hbCBoYW5kbGVyLCBvciBuZXcgY29u bmVjdGlvbiBwZW5kaW5nIG9uCisJCSAqIGFueSBvZiBvdXIgc29ja2V0cz8gIElmIHRoZSBs YXR0ZXIsIGZvcmsgYSBjaGlsZCBwcm9jZXNzIHRvIGRlYWwKKwkJICogd2l0aCBpdC4KIAkJ ICovCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbmV2ZW50czsgaSsrKQogCQl7Ci0JCQlpZiAo ZXZlbnRzW2ldLmV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQkJaWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCisJCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCQkvKgogCQkJICogVGhlIGZv bGxvd2luZyByZXF1ZXN0cyBhcmUgaGFuZGxlZCB1bmNvbmRpdGlvbmFsbHksIGV2ZW4gaWYg d2UKLQkJCSAqIGRpZG4ndCBzZWUgV0xfTEFUQ0hfU0VULiAgVGhpcyBnaXZlcyBoaWdoIHBy aW9yaXR5IHRvIHNodXRkb3duCi0JCQkgKiBhbmQgcmVsb2FkIHJlcXVlc3RzIHdoZXJlIHRo ZSBsYXRjaCBoYXBwZW5zIHRvIGFwcGVhciBsYXRlciBpbgotCQkJICogZXZlbnRzW10gb3Ig d2lsbCBiZSByZXBvcnRlZCBieSBhIGxhdGVyIGNhbGwgdG8KKwkJCSAqIGRpZG4ndCBzZWUg V0xfSU5URVJSVVBULiAgVGhpcyBnaXZlcyBoaWdoIHByaW9yaXR5IHRvIHNodXRkb3duCisJ CQkgKiBhbmQgcmVsb2FkIHJlcXVlc3RzIHdoZXJlIHRoZSBpbnRlcnJ1cHQgZXZlbnQgaGFw cGVucyB0byBhcHBlYXIKKwkJCSAqIGxhdGVyIGluIGV2ZW50c1tdIG9yIHdpbGwgYmUgcmVw b3J0ZWQgYnkgYSBsYXRlciBjYWxsIHRvCiAJCQkgKiBXYWl0RXZlbnRTZXRXYWl0KCkuCiAJ CQkgKi8KIAkJCWlmIChwZW5kaW5nX3BtX3NodXRkb3duX3JlcXVlc3QpCkBAIC0xOTYxLDcg KzE5NjIsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX3Btc2lnbmFsX3NpZ25hbChTSUdO QUxfQVJHUykKIHsKIAlwZW5kaW5nX3BtX3Btc2lnbmFsID0gdHJ1ZTsKLQlTZXRMYXRjaChN eUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8q CkBAIC0xOTcxLDcgKzE5NzIsNyBAQCBzdGF0aWMgdm9pZAogaGFuZGxlX3BtX3JlbG9hZF9y ZXF1ZXN0X3NpZ25hbChTSUdOQUxfQVJHUykKIHsKIAlwZW5kaW5nX3BtX3JlbG9hZF9yZXF1 ZXN0ID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0yMDQ4LDcgKzIwNDksNyBAQCBoYW5kbGVf cG1fc2h1dGRvd25fcmVxdWVzdF9zaWduYWwoU0lHTkFMX0FSR1MpCiAJCQlwZW5kaW5nX3Bt X3NodXRkb3duX3JlcXVlc3QgPSB0cnVlOwogCQkJYnJlYWs7CiAJfQotCVNldExhdGNoKE15 TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoK QEAgLTIyMDksNyArMjIxMCw3IEBAIHN0YXRpYyB2b2lkCiBoYW5kbGVfcG1fY2hpbGRfZXhp dF9zaWduYWwoU0lHTkFMX0FSR1MpCiB7CiAJcGVuZGluZ19wbV9jaGlsZF9leGl0ID0gdHJ1 ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N0 YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCmluZGV4IDI3ZTg2 Y2YzOTNmLi5mMmFjODYyNTEzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFydHVwLmMKQEAg LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKICNpbmNs dWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwu aCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMu aCIKQEAgLTQwLDcgKzQxLDcgQEAKICAqIE9uIHN5c3RlbXMgdGhhdCBuZWVkIHRvIG1ha2Ug YSBzeXN0ZW0gY2FsbCB0byBmaW5kIG91dCBpZiB0aGUgcG9zdG1hc3RlciBoYXMKICAqIGdv bmUgYXdheSwgd2UnbGwgZG8gc28gb25seSBldmVyeSBOdGggY2FsbCB0byBQcm9jZXNzU3Rh cnR1cFByb2NJbnRlcnJ1cHRzKCkuCiAgKiBUaGlzIG9ubHkgYWZmZWN0cyBob3cgbG9uZyBp dCB0YWtlcyB1cyB0byBkZXRlY3QgdGhlIGNvbmRpdGlvbiB3aGlsZSB3ZSdyZQotICogYnVz eSByZXBsYXlpbmcgV0FMLiAgTGF0Y2ggd2FpdHMgYW5kIHNpbWlsYXIgd2hpY2ggc2hvdWxk IHJlYWN0IGltbWVkaWF0ZWx5CisgKiBidXN5IHJlcGxheWluZyBXQUwuICBJbnRlcnJ1cHQg d2FpdHMgYW5kIHNpbWlsYXIgc2hvdWxkIHJlYWN0IGltbWVkaWF0ZWx5CiAgKiB0aHJvdWdo IHRoZSB1c3VhbCB0ZWNobmlxdWVzLgogICovCiAjZGVmaW5lIFBPU1RNQVNURVJfUE9MTF9S QVRFX0xJTUlUIDEwMjQKQEAgLTIwNSw2ICsyMDYsOCBAQCBTdGFydHVwUHJvY0V4aXQoaW50 IGNvZGUsIERhdHVtIGFyZykKIAkvKiBTaHV0ZG93biB0aGUgcmVjb3ZlcnkgZW52aXJvbm1l bnQgKi8KIAlpZiAoc3RhbmRieVN0YXRlICE9IFNUQU5EQllfRElTQUJMRUQpCiAJCVNodXRk b3duUmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KCk7CisKKwlQcm9jR2xvYmFsLT5z dGFydHVwUHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIApAQCAtMjIwLDYgKzIy MywxMiBAQCBTdGFydHVwUHJvY2Vzc01haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBz aXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlNeUJhY2tlbmRUeXBlID0gQl9TVEFSVFVQOwog CUF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9uKCk7CiAKKwkvKgorCSAqIEFkdmVydGlzZSBv dXIgcHJvYyBudW1iZXIgc28gdGhhdCBiYWNrZW5kcyBjYW4gd2FrZSB1cyB1cCwgd2hlbiB0 aGUKKwkgKiBzZXJ2ZXIgaXMgcHJvbW90ZWQgb3IgcmVjb3ZlcnkgaXMgcGF1c2VkL3Jlc3Vt ZWQuCisJICovCisJUHJvY0dsb2JhbC0+c3RhcnR1cFByb2MgPSBNeVByb2NOdW1iZXI7CisK IAkvKiBBcnJhbmdlIHRvIGNsZWFuIHVwIGF0IHN0YXJ0dXAgcHJvY2VzcyBleGl0ICovCiAJ b25fc2htZW1fZXhpdChTdGFydHVwUHJvY0V4aXQsIDApOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9zeXNsb2dnZXIuYwppbmRleCA1MGMyZWRlYzFmNi4uYzRjMDRhZTg2ZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUg InN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcGdfc2htZW0uaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjLmgiCkBAIC0zMjgsNyArMzI3LDcgQEAgU3lzTG9nZ2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCXdoZXJl VG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CiAKIAkvKgotCSAqIFNldCB1cCBhIHJldXNhYmxl IFdhaXRFdmVudFNldCBvYmplY3Qgd2UnbGwgdXNlIHRvIHdhaXQgZm9yIG91ciBsYXRjaCwK KwkgKiBTZXQgdXAgYSByZXVzYWJsZSBXYWl0RXZlbnRTZXQgb2JqZWN0IHdlJ2xsIHVzZSB0 byB3YWl0IGZvciBpbnRlcnJ1cHRzLAogCSAqIGFuZCAoZXhjZXB0IG9uIFdpbmRvd3MpIG91 ciBzb2NrZXQuCiAJICoKIAkgKiBVbmxpa2UgYWxsIG90aGVyIHBvc3RtYXN0ZXIgY2hpbGQg cHJvY2Vzc2VzLCB3ZSdsbCBpZ25vcmUgcG9zdG1hc3RlcgpAQCAtMzM4LDkgKzMzNyw5IEBA IFN5c0xvZ2dlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIAkgKiAoaW5jbHVkaW5nIHRoZSBwb3N0bWFzdGVyKS4KIAkgKi8KIAl3 ZXMgPSBDcmVhdGVXYWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JQWRkV2FpdEV2ZW50VG9TZXQo d2VzLCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsIE15TGF0Y2gsIE5VTEwpOwor CUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VU LCBJTlRFUlJVUFRfR0VORVJBTCwgTlVMTCk7CiAjaWZuZGVmIFdJTjMyCi0JQWRkV2FpdEV2 ZW50VG9TZXQod2VzLCBXTF9TT0NLRVRfUkVBREFCTEUsIHN5c2xvZ1BpcGVbMF0sIE5VTEws IE5VTEwpOworCUFkZFdhaXRFdmVudFRvU2V0KHdlcywgV0xfU09DS0VUX1JFQURBQkxFLCBz eXNsb2dQaXBlWzBdLCAwLCBOVUxMKTsKICNlbmRpZgogCiAJLyogbWFpbiB3b3JrZXIgbG9v cCAqLwpAQCAtMzU2LDcgKzM1NSw3IEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKICNlbmRpZgogCiAJCS8qIENs ZWFyIGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyoKIAkJ ICogUHJvY2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4K QEAgLTExODgsNyArMTE4Nyw3IEBAIHBpcGVUaHJlYWQodm9pZCAqYXJnKQogCQkJCSBmdGVs bG8oY3N2bG9nRmlsZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAqIChwZ29mZl90KSAxMDI0KSB8 fAogCQkJCShqc29ubG9nRmlsZSAhPSBOVUxMICYmCiAJCQkJIGZ0ZWxsbyhqc29ubG9nRmls ZSkgPj0gTG9nX1JvdGF0aW9uU2l6ZSAqIChwZ29mZl90KSAxMDI0KSkKLQkJCQlTZXRMYXRj aChNeUxhdGNoKTsKKwkJCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJ CX0KIAkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnN5c2xvZ2dlclNlY3Rpb24pOwogCX0KQEAg LTExOTksOCArMTE5OCw4IEBAIHBpcGVUaHJlYWQodm9pZCAqYXJnKQogCS8qIGlmIHRoZXJl J3MgYW55IGRhdGEgbGVmdCB0aGVuIGZvcmNlIGl0IG91dCBub3cgKi8KIAlmbHVzaF9waXBl X2lucHV0KGxvZ2J1ZmZlciwgJmJ5dGVzX2luX2xvZ2J1ZmZlcik7CiAKLQkvKiBzZXQgdGhl IGxhdGNoIHRvIHdha2VuIHRoZSBtYWluIHRocmVhZCwgd2hpY2ggd2lsbCBxdWl0ICovCi0J U2V0TGF0Y2goTXlMYXRjaCk7CisJLyogcmFpc2UgdGhlIGludGVycnVwdCB0byB3YWtlbiB0 aGUgbWFpbiB0aHJlYWQsIHdoaWNoIHdpbGwgcXVpdCAqLworCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIAogCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzeXNsb2dnZXJT ZWN0aW9uKTsKIAlfZW5kdGhyZWFkKCk7CkBAIC0xNTk1LDUgKzE1OTQsNSBAQCBzdGF0aWMg dm9pZAogc2lnVXNyMUhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7CiAJcm90YXRpb25fcmVxdWVz dGVkID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3dhbHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXpl ci5jCmluZGV4IGNjYmEwZjg0ZTZlLi4zMzgxNzY3MTQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci93YWxzdW1tYXJpemVyLmMKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNp bmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgpAQCAtMzE2LDEwICszMTUsOCBAQCBX YWxTdW1tYXJpemVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogCQkgKiBTbyBhIHJlYWxseSBmYXN0IHJldHJ5IHRpbWUgZG9lc24n dCBzZWVtIHRvIGJlIGVzcGVjaWFsbHkKIAkJICogYmVuZWZpY2lhbCwgYW5kIGl0IHdpbGwg Y2x1dHRlciB0aGUgbG9ncy4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTlVMTCwKLQkJ CQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAxMDAwMCwK LQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKKwkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoMCwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDEwMDAw LAorCQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX0VSUk9SKTsKIAl9CiAKIAkv KiBXZSBjYW4gbm93IGhhbmRsZSBlcmVwb3J0KEVSUk9SKSAqLwpAQCAtNjMxLDggKzYyOCw4 IEBAIEdldE9sZGVzdFVuc3VtbWFyaXplZExTTihUaW1lTGluZUlEICp0bGksIGJvb2wgKmxz bl9pc19leGFjdCkKICAqCiAgKiBUaGlzIG1pZ2h0IG5vdCB3b3JrLCBiZWNhdXNlIHRoZXJl J3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIFdBTCBzdW1tYXJpemVyCiAgKiBwcm9jZXNzIHdh cyBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYW5kIGl0IGFsc28gbWlnaHQgaGF2ZSBzdGFydGVk IGJ1dAotICogc3Vic2VxdWVudGx5IHRlcm1pbmF0ZWQuIFNvLCB1bmRlciBub3JtYWwgY2ly Y3Vtc3RhbmNlcywgdGhpcyB3aWxsIGdldCB0aGUKLSAqIGxhdGNoIHNldCwgYnV0IHRoZXJl J3Mgbm8gZ3VhcmFudGVlLgorICogc3Vic2VxdWVudGx5IHRlcm1pbmF0ZWQuIFNvLCB1bmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhpcyB3aWxsIHNlbmQKKyAqIHRoZSBpbnRlcnJ1 cHQsIGJ1dCB0aGVyZSdzIG5vIGd1YXJhbnRlZS4KICAqLwogdm9pZAogV2FrZXVwV2FsU3Vt bWFyaXplcih2b2lkKQpAQCAtNjQ3LDcgKzY0NCw3IEBAIFdha2V1cFdhbFN1bW1hcml6ZXIo dm9pZCkKIAlMV0xvY2tSZWxlYXNlKFdBTFN1bW1hcml6ZXJMb2NrKTsKIAogCWlmIChwZ3By b2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+ YWxsUHJvY3NbcGdwcm9jbm9dLnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwsIHBncHJvY25vKTsKIH0KIAogLyoKQEAgLTE2NDEsMTEgKzE2MzgsMTEg QEAgc3VtbWFyaXplcl93YWl0X2Zvcl93YWwodm9pZCkKIAlwZ3N0YXRfcmVwb3J0X3dhbChm YWxzZSk7CiAKIAkvKiBPSywgbm93IHNsZWVwLiAqLwotCSh2b2lkKSBXYWl0TGF0Y2goTXlM YXRjaCwKLQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAotCQkJCQkgc2xlZXBfcXVhbnRhICogTVNfUEVSX1NMRUVQX1FVQU5UVU0sCi0J CQkJCSBXQUlUX0VWRU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7Ci0JUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ CSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCSBzbGVlcF9xdWFudGEgKiBNU19QRVJfU0xFRVBfUVVBTlRVTSwKKwkJCQkJCSBXQUlU X0VWRU5UX1dBTF9TVU1NQVJJWkVSX1dBTCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwpOwogCiAJLyogUmVzZXQgY291bnQgb2YgcGFnZXMgcmVhZC4gKi8KIAlwYWdl c19yZWFkX3NpbmNlX2xhc3Rfc2xlZXAgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWx3cml0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3Jp dGVyLmMKaW5kZXggMDM4MDYwMWJjYmIuLmFlMDk3NDcyMjAwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3dhbHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvd2Fsd3JpdGVyLmMKQEAgLTIyMiwxMiArMjIyLDEyIEBAIFdhbFdyaXRlck1haW4o Y29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAog CQkvKgogCQkgKiBBZHZlcnRpc2Ugd2hldGhlciB3ZSBtaWdodCBoaWJlcm5hdGUgaW4gdGhp cyBjeWNsZS4gIFdlIGRvIHRoaXMKLQkJICogYmVmb3JlIHJlc2V0dGluZyB0aGUgbGF0Y2gg dG8gZW5zdXJlIHRoYXQgYW55IGFzeW5jIGNvbW1pdHMgd2lsbAotCQkgKiBzZWUgdGhlIGZs YWcgc2V0IGlmIHRoZXkgbWlnaHQgcG9zc2libHkgbmVlZCB0byB3YWtlIHVzIHVwLCBhbmQK LQkJICogdGhhdCB3ZSB3b24ndCBtaXNzIGFueSBzaWduYWwgdGhleSBzZW5kIHVzLiAgKElm IHdlIGRpc2NvdmVyIHdvcmsKLQkJICogdG8gZG8gaW4gdGhlIGxhc3QgY3ljbGUgYmVmb3Jl IHdlIHdvdWxkIGhpYmVybmF0ZSwgdGhlIGdsb2JhbCBmbGFnCi0JCSAqIHdpbGwgYmUgc2V0 IHVubmVjZXNzYXJpbHksIGJ1dCBsaXR0bGUgaGFybSBpcyBkb25lLikgIEJ1dCBhdm9pZAot CQkgKiB0b3VjaGluZyB0aGUgZ2xvYmFsIGZsYWcgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGNo YW5nZS4KKwkJICogYmVmb3JlIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgZmxhZyB0byBlbnN1 cmUgdGhhdCBhbnkgYXN5bmMgY29tbWl0cworCQkgKiB3aWxsIHNlZSB0aGUgZmxhZyBzZXQg aWYgdGhleSBtaWdodCBwb3NzaWJseSBuZWVkIHRvIHdha2UgdXMgdXAsCisJCSAqIGFuZCB0 aGF0IHdlIHdvbid0IG1pc3MgYW55IHNpZ25hbCB0aGV5IHNlbmQgdXMuICAoSWYgd2UgZGlz Y292ZXIKKwkJICogd29yayB0byBkbyBpbiB0aGUgbGFzdCBjeWNsZSBiZWZvcmUgd2Ugd291 bGQgaGliZXJuYXRlLCB0aGUgZ2xvYmFsCisJCSAqIGZsYWcgd2lsbCBiZSBzZXQgdW5uZWNl c3NhcmlseSwgYnV0IGxpdHRsZSBoYXJtIGlzIGRvbmUuKSAgQnV0CisJCSAqIGF2b2lkIHRv dWNoaW5nIHRoZSBnbG9iYWwgZmxhZyBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gY2hhbmdlLgog CQkgKi8KIAkJaWYgKGhpYmVybmF0aW5nICE9IChsZWZ0X3RpbGxfaGliZXJuYXRlIDw9IDEp KQogCQl7CkBAIC0yMzYsNyArMjM2LDcgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpz dGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQl9CiAKIAkJLyogQ2xl YXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKiBQcm9j ZXNzIGFueSBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCiAJCVByb2Nlc3NNYWluTG9v cEludGVycnVwdHMoKTsKQEAgLTI2Myw5ICsyNjMsOSBAQCBXYWxXcml0ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCWVsc2UK IAkJCWN1cl90aW1lb3V0ID0gV2FsV3JpdGVyRGVsYXkgKiBISUJFUk5BVEVfRkFDVE9SOwog Ci0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBjdXJfdGltZW91dCwK LQkJCQkJCSBXQUlUX0VWRU5UX1dBTF9XUklURVJfTUFJTik7CisJCSh2b2lkKSBXYWl0SW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgY3VyX3RpbWVvdXQsCisJ CQkJCQkJIFdBSVRfRVZFTlRfV0FMX1dSSVRFUl9NQUlOKTsKIAl9CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVj ZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jCmluZGV4IDFiMTU4YzlkMjg4Li5hYWExMmNjZGJkMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdh bHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZl ci5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vd2FscmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgpAQCAtMjM3LDE2ICsyMzcsMTYgQEAgbGli cHFyY3ZfY29ubmVjdChjb25zdCBjaGFyICpjb25uaW5mbywgYm9vbCByZXBsaWNhdGlvbiwg Ym9vbCBsb2dpY2FsLAogCQllbHNlCiAJCQlpb19mbGFnID0gV0xfU09DS0VUX1dSSVRFQUJM RTsKIAotCQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJICAgV0xf RVhJVF9PTl9QTV9ERUFUSCB8IFdMX0xBVENIX1NFVCB8IGlvX2ZsYWcsCi0JCQkJCQkJICAg UFFzb2NrZXQoY29ubi0+c3RyZWFtQ29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICBX QUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfQ09OTkVDVCk7CisJCXJjID0gV2FpdEludGVy cnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9FWElUX09O X1BNX0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKKwkJCQkJCQkJICAgUFFzb2Nr ZXQoY29ubi0+c3RyZWFtQ29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIFdBSVRf RVZFTlRfTElCUFFXQUxSRUNFSVZFUl9DT05ORUNUKTsKIAogCQkvKiBJbnRlcnJ1cHRlZD8g Ki8KLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQp CiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAJCQlQcm9jZXNzV2FsUmN2SW50ZXJydXB0cygpOwogCQl9CiAK QEAgLTg0OCwxNyArODQ4LDE3IEBAIGxpYnBxcmN2X1BRZ2V0UmVzdWx0KFBHY29ubiAqc3Ry ZWFtQ29ubikKIAkJICogc2luY2Ugd2UnbGwgZ2V0IGludGVycnVwdGVkIGJ5IHNpZ25hbHMg YW5kIGNhbiBoYW5kbGUgYW55CiAJCSAqIGludGVycnVwdHMgaGVyZS4KIAkJICovCi0JCXJj ID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BN X0RFQVRIIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKLQkJCQkJCQkgICBXTF9MQVRDSF9TRVQs Ci0JCQkJCQkJICAgUFFzb2NrZXQoc3RyZWFtQ29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJ CQkgICBXQUlUX0VWRU5UX0xJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRSk7CisJCXJjID0gV2Fp dEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgICBXTF9F WElUX09OX1BNX0RFQVRIIHwgV0xfU09DS0VUX1JFQURBQkxFIHwKKwkJCQkJCQkJICAgV0xf SU5URVJSVVBULAorCQkJCQkJCQkgICBQUXNvY2tldChzdHJlYW1Db25uKSwKKwkJCQkJCQkJ ICAgMCwKKwkJCQkJCQkJICAgV0FJVF9FVkVOVF9MSUJQUVdBTFJFQ0VJVkVSX1JFQ0VJVkUp OwogCiAJCS8qIEludGVycnVwdGVkPyAqLwotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJ CWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCVByb2Nlc3NXYWxS Y3ZJbnRlcnJ1cHRzKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBkMjUwODVkMzUx NS4uMTc2ZGViNDA2YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC04MDQsMTMgKzgwNCwxMyBA QCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJCWlu dAkJCXJjOwogCiAJCQkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAqLwotCQkJCXJjID0gV2Fp dExhdGNoKE15TGF0Y2gsCi0JCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8 IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJICAgMTAwMEwsCi0JCQkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCQkJCXJjID0gV2FpdElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkJCSAgIDEwMDBMLAor CQkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7CiAK LQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQorCQkJCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAJCQl9CiAJCX0KIAkJZWxzZQpAQCAtOTkwLDcgKzk5MCw3IEBA IEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7CiAJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1 ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7CiB9CiAKIC8qCkBAIC0xMTgyLDE0ICsxMTgyLDE0IEBAIHBhX3NlbmRfZGF0YShQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lk ICpkYXRhKQogCQlBc3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7CiAKIAkJ LyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKLQkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX0FQUExZX1NFTkRfREFUQSk7CisJCXJjID0gV2FpdEludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5U RVJWQUxfTVMsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfU0VORF9EQVRB KTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQ VCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApA QCAtMTI1NCwxMyArMTI1NCwxMyBAQCBwYV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCWJyZWFrOwogCiAJCS8qIFdhaXQgdG8gYmUg c2lnbmFsbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgV0xf TEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkg MTBMLAotCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9D SEFOR0UpOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkJIDEwTCwKKwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQ UExZX1NUQVRFX0NIQU5HRSk7CiAKLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0 IHNwaW4uICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBpbnRl cnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVk IHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBh M2M3YWRiZjFhOC4uMDcxZDkzY2U4MTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTIwOSwxNiArMjA5LDE3IEBAIFdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCX0KIAog CQkvKgotCQkgKiBXZSBuZWVkIHRpbWVvdXQgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgZG9uJ3Qg Z2V0IG5vdGlmaWVkIHZpYSBsYXRjaAotCQkgKiBhYm91dCB0aGUgd29ya2VyIGF0dGFjaC4g IEJ1dCB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuCisJCSAqIFdlIG5l ZWQgdGltZW91dCBiZWNhdXNlIHdlIGdlbmVyYWxseSBkb24ndCBnZXQgbm90aWZpZWQgdmlh IGFuCisJCSAqIGludGVycnVwdCBhYm91dCB0aGUgd29ya2VyIGF0dGFjaC4gIEJ1dCB3ZSBk b24ndCBleHBlY3QgdG8gaGF2ZSB0bworCQkgKiB3YWl0IGxvbmcuCiAJCSAqLwotCQlyYyA9 IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX0JHV09S S0VSX1NUQVJUVVApOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUws CisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktFUl9TVEFSVFVQKTsKIAot CQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJ ewotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CkBAIC01 NDQsMTMgKzU0NSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBl Y3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gs Ci0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfQkdXT1JLRVJfU1RBUlRVUCk7CisJCXJj ID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCSAgIFdMX0lOVEVS UlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAgMTBM LCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOwogCi0JCWlmIChyYyAmIFdMX0xBVENI X1NFVCkKKwkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJfQogCkBAIC01ODUsMTMgKzU4NiwxMyBAQCBsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwg aW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAog CQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxv bmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NF VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdB SVRfRVZFTlRfQkdXT1JLRVJfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9CR1dPUktF Ul9TSFVURE9XTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBX TF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwogCQl9CiAKQEAgLTY2Nyw3ICs2NjgsNyBAQCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9w KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIH0KIAogLyoKLSAqIFdha2UgdXAg KHVzaW5nIGxhdGNoKSBhbnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHNwZWNp ZmllZCBzdWIvcmVsLgorICogV2FrZSB1cCAodXNpbmcgaW50ZXJydXB0KSBhbnkgbG9naWNh bCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHNwZWNpZmllZCBzdWIvcmVsLgogICovCiB2b2lk CiBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCkBAIC02 ODUsNyArNjg2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgbGF0Y2gpIHRoZSBzcGVjaWZp ZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKiBXYWtlIHVwICh1c2luZyBpbnRl cnJ1cHQpIHRoZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCiAgKgog ICogQ2FsbGVyIG11c3QgaG9sZCBsb2NrLCBlbHNlIHdvcmtlci0+cHJvYyBjb3VsZCBjaGFu Z2UgdW5kZXIgdXMuCiAgKi8KQEAgLTY5NCw3ICs2OTUsNyBAQCBsb2dpY2FscmVwX3dvcmtl cl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIHsKIAlBc3NlcnQoTFdM b2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKIAotCVNldExhdGNoKCZ3b3Jr ZXItPnByb2MtPnByb2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCwgR2V0TnVtYmVyRnJvbVBHUHJvYyh3b3JrZXItPnByb2MpKTsKIH0KIAogLyoKQEAgLTEy MTIsMTQgKzEyMTMsMTQgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJ CU1lbW9yeUNvbnRleHREZWxldGUoc3ViY3R4KTsKIAogCQkvKiBXYWl0IGZvciBtb3JlIHdv cmsuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NF VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICB3YWl0X3Rp bWUsCi0JCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKKwkJcmMg PSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xfSU5URVJS VVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICB3YWl0 X3RpbWUsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CiAK LQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJ CXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwppbmRleCAyYzBhNzQz OWJlNC4uMDliMmQwZDE4MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Nsb3RzeW5jLmMKQEAgLTEyNTIsMTMgKzEyNTIsMTMgQEAgd2FpdF9mb3Jfc2xvdF9h Y3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkKQogCQlzbGVlcF9tcyA9IE1JTl9TTE9U U1lOQ19XT1JLRVJfTkFQVElNRV9NUzsKIAl9CiAKLQlyYyA9IFdhaXRMYXRjaChNeUxhdGNo LAotCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RF QVRILAotCQkJCSAgIHNsZWVwX21zLAotCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJT05f U0xPVFNZTkNfTUFJTik7CisJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM LAorCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwKKwkJCQkJICAgc2xlZXBfbXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfUkVQTElDQVRJ T05fU0xPVFNZTkNfTUFJTik7CiAKLQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJaWYgKHJjICYgV0xfSU5URVJSVVBUKQorCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xNTg4LDEzICsxNTg4LDEz IEBAIFNodXREb3duU2xvdFN5bmModm9pZCkKIAkJaW50CQkJcmM7CiAKIAkJLyogV2FpdCBh IGJpdCwgd2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUgdG8gd2FpdCBsb25nICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICAxMEwsIFdBSVRfRVZFTlRfUkVQTElD QVRJT05fU0xPVFNZTkNfU0hVVERPV04pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwsCisJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAgIDEwTCwgV0FJVF9FVkVOVF9SRVBMSUNBVElP Tl9TTE9UU1lOQ19TSFVURE9XTik7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQlp ZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCmluZGV4IDZhZjVjOWZlMTZjLi5kYzkwNzdhZGI3NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xMDQsNiAr MTA0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKQEAgLTIxMCwxMSArMjEx LDExIEBAIHdhaXRfZm9yX3JlbGF0aW9uX3N0YXRlX2NoYW5nZShPaWQgcmVsaWQsIGNoYXIg ZXhwZWN0ZWRfc3RhdGUpCiAJCWlmICghd29ya2VyKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQp IFdhaXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lD QUxfU1lOQ19TVEFURV9DSEFOR0UpOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCQkJIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lO Q19TVEFURV9DSEFOR0UpOwogCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC0y NjAsMTUgKzI2MSwxNSBAQCB3YWl0X2Zvcl93b3JrZXJfc3RhdGVfY2hhbmdlKGNoYXIgZXhw ZWN0ZWRfc3RhdGUpCiAJCQlicmVhazsKIAogCQkvKgotCQkgKiBXYWl0LiAgV2UgZXhwZWN0 IHRvIGdldCBhIGxhdGNoIHNpZ25hbCBiYWNrIGZyb20gdGhlIGFwcGx5IHdvcmtlciwKKwkJ ICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQgYW4gaW50ZXJydXB0IHdha2V1cCBmcm9tIHRo ZSBhcHBseSB3b3JrZXIsCiAJCSAqIGJ1dCB1c2UgYSB0aW1lb3V0IGluIGNhc2UgaXQgZGll cyB3aXRob3V0IHNlbmRpbmcgb25lLgogCQkgKi8KLQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRj aCwKLQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsCi0JCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9D SEFOR0UpOworCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJ CQkgICBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCSAgIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0Up OwogCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC01NTUsNyArNTU2LDcgQEAg cHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xz bikKIAkJCQkJCSAqIHRoZSBleGlzdGluZyBsb2NrcyBiZWZvcmUgZW50ZXJpbmcgYSBidXN5 IGxvb3AuCiAJCQkJCQkgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIGF2b2lkIGFueSB1bmRldGVj dGVkIGRlYWRsb2NrcwogCQkJCQkJICogZHVlIHRvIGFueSBleGlzdGluZyBsb2NrIGFzIGRl YWRsb2NrIGRldGVjdG9yIHdvbid0Ci0JCQkJCQkgKiBiZSBhYmxlIHRvIGRldGVjdCB0aGUg d2FpdHMgb24gdGhlIGxhdGNoLgorCQkJCQkJICogYmUgYWJsZSB0byBkZXRlY3QgdGhlIHdh aXRzIG9uIHRoZSBpbnRlcnJ1cHQKIAkJCQkJCSAqLwogCQkJCQkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJCQkJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwpAQCAtNzcx LDE0ICs3NzIsMTQgQEAgY29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVh ZCwgaW50IG1heHJlYWQpCiAJCX0KIAogCQkvKgotCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEg b3IgbGF0Y2guCisJCSAqIFdhaXQgZm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuCiAJCSAq LwotCQkodm9pZCkgV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJIFdMX1NP Q0tFVF9SRUFEQUJMRSB8IFdMX0xBVENIX1NFVCB8Ci0JCQkJCQkJCSBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCQkJIGZkLCAxMDAwTCwgV0FJVF9FVkVOVF9M T0dJQ0FMX1NZTkNfREFUQSk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0T3JTb2NrZXQoSU5U RVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCQkgV0xfU09DS0VUX1JFQURBQkxFIHwgV0xfSU5U RVJSVVBUIHwKKwkJCQkJCQkJCSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwK KwkJCQkJCQkJCSBmZCwgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEpOwog Ci0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAl9CiAKIAlyZXR1cm4gYnl0ZXNyZWFkOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMzFhYjY5ZWExM2EuLmJiNTY2YzFlZTE5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM3 NDIsMjYgKzM3NDIsMjYgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3Rf cmVjZWl2ZWQpCiAJCQlicmVhazsKIAogCQkvKgotCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEg b3IgbGF0Y2guICBJZiB3ZSBoYXZlIHVuZmx1c2hlZCB0cmFuc2FjdGlvbnMsCi0JCSAqIHdh a2UgdXAgYWZ0ZXIgV2FsV3JpdGVyRGVsYXkgdG8gc2VlIGlmIHRoZXkndmUgYmVlbiBmbHVz aGVkIHlldCAoaW4KLQkJICogd2hpY2ggY2FzZSB3ZSBzaG91bGQgc2VuZCBhIGZlZWRiYWNr IG1lc3NhZ2UpLiAgT3RoZXJ3aXNlLCB0aGVyZSdzCi0JCSAqIG5vIHBhcnRpY3VsYXIgdXJn ZW5jeSBhYm91dCB3YWtpbmcgdXAgdW5sZXNzIHdlIGdldCBkYXRhIG9yIGEKLQkJICogc2ln bmFsLgorCQkgKiBXYWl0IGZvciBtb3JlIGRhdGEgb3IgaW50ZXJydXB0LiAgSWYgd2UgaGF2 ZSB1bmZsdXNoZWQKKwkJICogdHJhbnNhY3Rpb25zLCB3YWtlIHVwIGFmdGVyIFdhbFdyaXRl ckRlbGF5IHRvIHNlZSBpZiB0aGV5J3ZlIGJlZW4KKwkJICogZmx1c2hlZCB5ZXQgKGluIHdo aWNoIGNhc2Ugd2Ugc2hvdWxkIHNlbmQgYSBmZWVkYmFjayBtZXNzYWdlKS4KKwkJICogT3Ro ZXJ3aXNlLCB0aGVyZSdzIG5vIHBhcnRpY3VsYXIgdXJnZW5jeSBhYm91dCB3YWtpbmcgdXAg dW5sZXNzIHdlCisJCSAqIGdldCBkYXRhIG9yIGEgc2lnbmFsLgogCQkgKi8KIAkJaWYgKCFk bGlzdF9pc19lbXB0eSgmbHNuX21hcHBpbmcpKQogCQkJd2FpdF90aW1lID0gV2FsV3JpdGVy RGVsYXk7CiAJCWVsc2UKIAkJCXdhaXRfdGltZSA9IE5BUFRJTUVfUEVSX0NZQ0xFOwogCi0J CXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9TT0NLRVRf UkVBREFCTEUgfCBXTF9MQVRDSF9TRVQgfAotCQkJCQkJCSAgIFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAotCQkJCQkJCSAgIGZkLCB3YWl0X3RpbWUsCi0JCQkJCQkJICAg V0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRP clNvY2tldChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJICAgV0xfU09DS0VUX1JFQURB QkxFIHwgV0xfSU5URVJSVVBUIHwKKwkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkJCSAgIGZkLCB3YWl0X3RpbWUsCisJCQkJCQkJCSAgIFdB SVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOKTsKIAotCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJUmVzZXRMYXRjaChNeUxh dGNoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vc3luY3JlcC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5j CmluZGV4IGQ3NWUzOTY4MDM1Li45M2Q4YjlkMDYwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc3luY3JlcC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3N5bmNyZXAuYwpAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNy ZXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5oIgpAQCAtMjIyLDIyICsyMjMsMjIgQEAg U3luY1JlcFdhaXRGb3JMU04oWExvZ1JlY1B0ciBsc24sIGJvb2wgY29tbWl0KQogCS8qCiAJ ICogV2FpdCBmb3Igc3BlY2lmaWVkIExTTiB0byBiZSBjb25maXJtZWQuCiAJICoKLQkgKiBF YWNoIHByb2MgaGFzIGl0cyBvd24gd2FpdCBsYXRjaCwgc28gd2UgcGVyZm9ybSBhIG5vcm1h bCBsYXRjaAorCSAqIEVhY2ggcHJvYyBoYXMgaXRzIG93biB3YWl0IGludGVycnVwdCB2ZWN0 b3IsIHNvIHdlIHBlcmZvcm0gYSBub3JtYWwKIAkgKiBjaGVjay93YWl0IGxvb3AgaGVyZS4K IAkgKi8KIAlmb3IgKDs7KQogCXsKIAkJaW50CQkJcmM7CiAKLQkJLyogTXVzdCByZXNldCB0 aGUgbGF0Y2ggYmVmb3JlIHRlc3Rpbmcgc3RhdGUuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisJCS8qIE11c3QgY2xlYXIgdGhlIGludGVycnVwdCBmbGFnIGJlZm9yZSB0ZXN0aW5n IHN0YXRlLiAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJ LyoKLQkJICogQWNxdWlyaW5nIHRoZSBsb2NrIGlzIG5vdCBuZWVkZWQsIHRoZSBsYXRjaCBl bnN1cmVzIHByb3BlcgotCQkgKiBiYXJyaWVycy4gSWYgaXQgbG9va3MgbGlrZSB3ZSdyZSBk b25lLCB3ZSBtdXN0IHJlYWxseSBiZSBkb25lLAotCQkgKiBiZWNhdXNlIG9uY2Ugd2Fsc2Vu ZGVyIGNoYW5nZXMgdGhlIHN0YXRlIHRvIFNZTkNfUkVQX1dBSVRfQ09NUExFVEUsCi0JCSAq IGl0IHdpbGwgbmV2ZXIgdXBkYXRlIGl0IGFnYWluLCBzbyB3ZSBjYW4ndCBiZSBzZWVpbmcg YSBzdGFsZSB2YWx1ZQotCQkgKiBpbiB0aGF0IGNhc2UuCisJCSAqIEFjcXVpcmluZyB0aGUg bG9jayBpcyBub3QgbmVlZGVkLCB0aGUgaW50ZXJydXB0IGVuc3VyZXMgcHJvcGVyCisJCSAq IGJhcnJpZXJzIChGSVhNRTogaXMgdGhhdCBzbz8pLiBJZiBpdCBsb29rcyBsaWtlIHdlJ3Jl IGRvbmUsIHdlIG11c3QKKwkJICogcmVhbGx5IGJlIGRvbmUsIGJlY2F1c2Ugb25jZSB3YWxz ZW5kZXIgY2hhbmdlcyB0aGUgc3RhdGUgdG8KKwkJICogU1lOQ19SRVBfV0FJVF9DT01QTEVU RSwgaXQgd2lsbCBuZXZlciB1cGRhdGUgaXQgYWdhaW4sIHNvIHdlIGNhbid0CisJCSAqIGJl IHNlZWluZyBhIHN0YWxlIHZhbHVlIGluIHRoYXQgY2FzZS4KIAkJICovCiAJCWlmIChNeVBy b2MtPnN5bmNSZXBTdGF0ZSA9PSBTWU5DX1JFUF9XQUlUX0NPTVBMRVRFKQogCQkJYnJlYWs7 CkBAIC0yODIsMTEgKzI4MywxMyBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxz biwgYm9vbCBjb21taXQpCiAJCX0KIAogCQkvKgotCQkgKiBXYWl0IG9uIGxhdGNoLiAgQW55 IGNvbmRpdGlvbiB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0IHRoZQotCQkgKiBs YXRjaCwgc28gbm8gbmVlZCBmb3IgdGltZW91dC4KKwkJICogV2FpdCBvbiBpbnRlcnJ1cHQu ICBBbnkgY29uZGl0aW9uIHRoYXQgc2hvdWxkIHdha2UgdXMgdXAgd2lsbCBzZXQKKwkJICog dGhlIGludGVycnVwdCwgc28gbm8gbmVlZCBmb3IgdGltZW91dC4KIAkJICovCi0JCXJjID0g V2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX1BPU1RNQVNURVJfREVBVEgs IC0xLAotCQkJCQkgICBXQUlUX0VWRU5UX1NZTkNfUkVQKTsKKwkJcmMgPSBXYWl0SW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfUE9T VE1BU1RFUl9ERUFUSCwKKwkJCQkJCSAgIC0xLAorCQkJCQkJICAgV0FJVF9FVkVOVF9TWU5D X1JFUCk7CiAKIAkJLyoKIAkJICogSWYgdGhlIHBvc3RtYXN0ZXIgZGllcywgd2UnbGwgcHJv YmFibHkgbmV2ZXIgZ2V0IGFuIGFja25vd2xlZGdtZW50LApAQCAtOTAyLDcgKzkwNSw3IEBA IFN5bmNSZXBXYWtlUXVldWUoYm9vbCBhbGwsIGludCBtb2RlKQogCQkvKgogCQkgKiBXYWtl IG9ubHkgd2hlbiB3ZSBoYXZlIHNldCBzdGF0ZSBhbmQgcmVtb3ZlZCBmcm9tIHF1ZXVlLgog CQkgKi8KLQkJU2V0TGF0Y2goJihwcm9jLT5wcm9jTGF0Y2gpKTsKKwkJU2VuZEludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiAKIAkJ bnVtcHJvY3MrKzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpp bmRleCAyZTVkZDZkZWIyYy4uODdiMWJhZDI3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYwpAQCAtMTQ2LDE3ICsxNDYsMTcgQEAgc3RhdGljIHZvaWQgUHJv Y2Vzc1dhbFNuZHJNZXNzYWdlKFhMb2dSZWNQdHIgd2FsRW5kLCBUaW1lc3RhbXBUeiBzZW5k VGltZSk7CiBzdGF0aWMgdm9pZCBXYWxSY3ZDb21wdXRlTmV4dFdha2V1cChXYWxSY3ZXYWtl dXBSZWFzb24gcmVhc29uLCBUaW1lc3RhbXBUeiBub3cpOwogCiAvKgotICogUHJvY2VzcyBh bnkgaW50ZXJydXB0cyB0aGUgd2FscmVjZWl2ZXIgcHJvY2VzcyBtYXkgaGF2ZSByZWNlaXZl ZC4KLSAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhbnkgdGltZSB0aGUgcHJvY2VzcydzIGxh dGNoIGhhcyBiZWNvbWUgc2V0LgorICogUHJvY2VzcyBhbnkgaW50ZXJydXB0cyB0aGUgd2Fs cmVjZWl2ZXIgcHJvY2VzcyBtYXkgaGF2ZSByZWNlaXZlZC4gIFRoaXMKKyAqIHNob3VsZCBi ZSBjYWxsZWQgYW55IHRpbWUgdGhlIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVwdCBoYXMg YmVjb21lIHNldC4KICAqCiAgKiBDdXJyZW50bHksIG9ubHkgU0lHVEVSTSBpcyBvZiBpbnRl cmVzdC4gIFdlIGNhbid0IGp1c3QgZXhpdCgxKSB3aXRoaW4gdGhlCiAgKiBTSUdURVJNIHNp Z25hbCBoYW5kbGVyLCBiZWNhdXNlIHRoZSBzaWduYWwgbWlnaHQgYXJyaXZlIGluIHRoZSBt aWRkbGUgb2YKICAqIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9uLCBsaWtlIHdoaWxlIHdlJ3Jl IGhvbGRpbmcgYSBzcGlubG9jay4gIEluc3RlYWQsIHRoZQotICogc2lnbmFsIGhhbmRsZXIg c2V0cyBhIGZsYWcgdmFyaWFibGUgYXMgd2VsbCBhcyBzZXR0aW5nIHRoZSBwcm9jZXNzJ3Mg bGF0Y2guCisgKiBzaWduYWwgaGFuZGxlciBzZXRzIGEgZmxhZyB2YXJpYWJsZSBhcyB3ZWxs IGFzIHJhaXNpbmcgSU5URVJSVVBUX0dFTkVSQUwuCiAgKiBXZSBtdXN0IGNoZWNrIHRoZSBm bGFnIChieSBjYWxsaW5nIFByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKSBhbnl0aW1lIHRoZQot ICogbGF0Y2ggaGFzIGJlY29tZSBzZXQuICBPcGVyYXRpb25zIHRoYXQgY291bGQgYmxvY2sg Zm9yIGEgbG9uZyB0aW1lLCBzdWNoIGFzCi0gKiByZWFkaW5nIGZyb20gYSByZW1vdGUgc2Vy dmVyLCBtdXN0IHBheSBhdHRlbnRpb24gdG8gdGhlIGxhdGNoIHRvbzsgc2VlCi0gKiBsaWJw cXJjdl9QUWdldFJlc3VsdCBmb3IgZXhhbXBsZS4KKyAqIElOVEVSUlVQVF9HRU5FUkFMIGhh cyBiZWNvbWUgc2V0LiAgT3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJsb2NrIGZvciBhIGxvbmcK KyAqIHRpbWUsIHN1Y2ggYXMgcmVhZGluZyBmcm9tIGEgcmVtb3RlIHNlcnZlciwgbXVzdCBw YXkgYXR0ZW50aW9uIHRvIHRoZQorICogaW50ZXJydXB0IHRvbzsgc2VlIGxpYnBxcmN2X1BR Z2V0UmVzdWx0IGZvciBleGFtcGxlLgogICovCiB2b2lkCiBQcm9jZXNzV2FsUmN2SW50ZXJy dXB0cyh2b2lkKQpAQCAtNTM2LDI1ICs1MzYsMjUgQEAgV2FsUmVjZWl2ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJCQkv KgogCQkJCSAqIElkZWFsbHkgd2Ugd291bGQgcmV1c2UgYSBXYWl0RXZlbnRTZXQgb2JqZWN0 IHJlcGVhdGVkbHkKLQkJCQkgKiBoZXJlIHRvIGF2b2lkIHRoZSBvdmVyaGVhZHMgb2YgV2Fp dExhdGNoT3JTb2NrZXQgb24gZXBvbGwKLQkJCQkgKiBzeXN0ZW1zLCBidXQgd2UgY2FuJ3Qg YmUgc3VyZSB0aGF0IGxpYnBxIChvciBhbnkgb3RoZXIKLQkJCQkgKiB3YWxyZWNlaXZlciBp bXBsZW1lbnRhdGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbiBpZgotCQkJCSAqIHRo ZSBmZCBpcyB0aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAor CQkJCSAqIGhlcmUgdG8gYXZvaWQgdGhlIG92ZXJoZWFkcyBvZiBXYWl0SW50ZXJydXB0T3JT b2NrZXQgb24KKwkJCQkgKiBlcG9sbCBzeXN0ZW1zLCBidXQgd2UgY2FuJ3QgYmUgc3VyZSB0 aGF0IGxpYnBxIChvciBhbnkKKwkJCQkgKiBvdGhlciB3YWxyZWNlaXZlciBpbXBsZW1lbnRh dGlvbikgaGFzIHRoZSBzYW1lIHNvY2tldCAoZXZlbgorCQkJCSAqIGlmIHRoZSBmZCBpcyB0 aGUgc2FtZSBudW1iZXIsIGl0IG1heSBoYXZlIGJlZW4gY2xvc2VkIGFuZAogCQkJCSAqIHJl b3BlbmVkIHNpbmNlIHRoZSBsYXN0IHRpbWUpLiAgSW4gZnV0dXJlLCBpZiB0aGVyZSBpcyBh CiAJCQkJICogZnVuY3Rpb24gZm9yIHJlbW92aW5nIHNvY2tldHMgZnJvbSBXYWl0RXZlbnRT ZXQsIHRoZW4gd2UKIAkJCQkgKiBjb3VsZCBhZGQgYW5kIHJlbW92ZSBqdXN0IHRoZSBzb2Nr ZXQgZWFjaCB0aW1lLCBwb3RlbnRpYWxseQogCQkJCSAqIGF2b2lkaW5nIHNvbWUgc3lzdGVt IGNhbGxzLgogCQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5WQUxJRF9TT0NL RVQpOwotCQkJCXJjID0gV2FpdExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkJCSAg IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9TT0NLRVRfUkVBREFCTEUgfAotCQkJCQkJCQkJ ICAgV0xfVElNRU9VVCB8IFdMX0xBVENIX1NFVCwKLQkJCQkJCQkJCSAgIHdhaXRfZmQsCi0J CQkJCQkJCQkgICBuYXAsCi0JCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9N QUlOKTsKLQkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJcmMgPSBXYWl0SW50ZXJy dXB0T3JTb2NrZXQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJCQkJICAgV0xfRVhJVF9P Tl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8CisJCQkJCQkJCQkJICAgV0xfVElN RU9VVCB8IFdMX0lOVEVSUlVQVCwKKwkJCQkJCQkJCQkgICB3YWl0X2ZkLAorCQkJCQkJCQkJ CSAgIG5hcCwKKwkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9NQUlOKTsK KwkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCQkJewotCQkJCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQkJ CVByb2Nlc3NXYWxSY3ZJbnRlcnJ1cHRzKCk7CiAKIAkJCQkJaWYgKHdhbHJjdi0+Zm9yY2Vf cmVwbHkpCkBAIC03MDIsNyArNzAyLDcgQEAgV2FsUmN2V2FpdEZvclN0YXJ0UG9zaXRpb24o WExvZ1JlY1B0ciAqc3RhcnRwb2ludCwgVGltZUxpbmVJRCAqc3RhcnRwb2ludFRMSSkKIAlX YWtldXBSZWNvdmVyeSgpOwogCWZvciAoOzspCiAJewotCQlSZXNldExhdGNoKE15TGF0Y2gp OworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJUHJvY2Vzc1dh bFJjdkludGVycnVwdHMoKTsKIApAQCAtNzM0LDggKzczNCwxMCBAQCBXYWxSY3ZXYWl0Rm9y U3RhcnRQb3NpdGlvbihYTG9nUmVjUHRyICpzdGFydHBvaW50LCBUaW1lTGluZUlEICpzdGFy dHBvaW50VExJKQogCQl9CiAJCVNwaW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7CiAK LQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RB UlQpOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgMCwKKwkJ CQkJCQkgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCk7CiAJfQogCiAJaWYg KHVwZGF0ZV9wcm9jZXNzX3RpdGxlKQpAQCAtMTM4OCw3ICsxMzkwLDcgQEAgV2FsUmN2Rm9y Y2VSZXBseSh2b2lkKQogCXByb2NubyA9IFdhbFJjdi0+cHJvY25vOwogCVNwaW5Mb2NrUmVs ZWFzZSgmV2FsUmN2LT5tdXRleCk7CiAJaWYgKHByb2NubyAhPSBJTlZBTElEX1BST0NfTlVN QkVSKQotCQlTZXRMYXRjaCgmR2V0UEdQcm9jQnlOdW1iZXIocHJvY25vKS0+cHJvY0xhdGNo KTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgcHJvY25vKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRl eCA4ZGUyODg2ZmYwYi4uNDhlMjVmYjdkYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxyZWNlaXZlcmZ1bmNzLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3Zlcnku aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVw dC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtMzE3 LDcgKzMxOCw3IEBAIFJlcXVlc3RYTG9nU3RyZWFtaW5nKFRpbWVMaW5lSUQgdGxpLCBYTG9n UmVjUHRyIHJlY3B0ciwgY29uc3QgY2hhciAqY29ubmluZm8sCiAJaWYgKGxhdW5jaCkKIAkJ U2VuZFBvc3RtYXN0ZXJTaWduYWwoUE1TSUdOQUxfU1RBUlRfV0FMUkVDRUlWRVIpOwogCWVs c2UgaWYgKHdhbHJjdl9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JCVNldExhdGNo KCZHZXRQR1Byb2NCeU51bWJlcih3YWxyY3ZfcHJvYyktPnByb2NMYXRjaCk7CisJCVNlbmRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHdhbHJjdl9wcm9jKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNDQ2ZDEwYzFhN2QuLjBhZmEx ODE1NTBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMTAxMyw4 ICsxMDEzLDggQEAgU3RhcnRSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQp CiAgKiBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIGZvciBsb2dpY2Fs IGRlY29kaW5nIGNvbnRleHRzLCBhcyBhCiAgKiB3YWxzZW5kZXIgcHJvY2Vzcy4KICAqCi0g KiBJbnNpZGUgdGhlIHdhbHNlbmRlciB3ZSBjYW4gZG8gYmV0dGVyIHRoYW4gcmVhZF9sb2Nh bF94bG9nX3BhZ2UsCi0gKiB3aGljaCBoYXMgdG8gZG8gYSBwbGFpbiBzbGVlcC9idXN5IGxv b3AsIGJlY2F1c2UgdGhlIHdhbHNlbmRlcidzIGxhdGNoIGdldHMKKyAqIEluc2lkZSB0aGUg d2Fsc2VuZGVyIHdlIGNhbiBkbyBiZXR0ZXIgdGhhbiByZWFkX2xvY2FsX3hsb2dfcGFnZSwg d2hpY2gKKyAqIGhhcyB0byBkbyBhIHBsYWluIHNsZWVwL2J1c3kgbG9vcCwgYmVjYXVzZSB0 aGUgd2Fsc2VuZGVyJ3MgaW50ZXJydXB0IGdldHMKICAqIHNldCBldmVyeSB0aW1lIFdBTCBp cyBmbHVzaGVkLgogICovCiBzdGF0aWMgaW50CkBAIC0xNjExLDcgKzE2MTEsNyBAQCBQcm9j ZXNzUGVuZGluZ1dyaXRlcyh2b2lkKQogCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9X UklURV9EQVRBKTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMg Ki8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwpOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTE2MjgsOCAr MTYyOCw4IEBAIFByb2Nlc3NQZW5kaW5nV3JpdGVzKHZvaWQpCiAJCQlXYWxTbmRTaHV0ZG93 bigpOwogCX0KIAotCS8qIHJlYWN0aXZhdGUgbGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0 byBjb250aW51ZSAqLwotCVNldExhdGNoKE15TGF0Y2gpOworCS8qIHJlYWN0aXZhdGUgaW50 ZXJydXB0IHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8KKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xODE3LDcgKzE4MTcsNyBA QCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlsb25nCQlzbGVlcHRpbWU7 CiAKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0xOTM3LDggKzE5MzcsOCBAQCBX YWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIgbG9jKQogCQlXYWxTbmRXYWl0KHdha2VFdmVu dHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCk7CiAJfQogCi0JLyogcmVhY3RpdmF0ZSBsYXRj aCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCi0JU2V0TGF0Y2goTXlMYXRj aCk7CisJLyogcmVhY3RpdmF0ZSBpbnRlcnJ1cHQgZmxhZyBzbyBXYWxTbmRMb29wIGtub3dz IHRvIGNvbnRpbnVlICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwog CXJldHVybiBSZWNlbnRGbHVzaFB0cjsKIH0KIApAQCAtMjc1NCw3ICsyNzU0LDcgQEAgV2Fs U25kTG9vcChXYWxTbmRTZW5kRGF0YUNhbGxiYWNrIHNlbmRfZGF0YSkKIAlmb3IgKDs7KQog CXsKIAkJLyogQ2xlYXIgYW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0zNTUzLDcgKzM1NTMsNyBAQCBz dGF0aWMgdm9pZAogV2FsU25kTGFzdEN5Y2xlSGFuZGxlcihTSUdOQUxfQVJHUykKIHsKIAln b3RfU0lHVVNSMiA9IHRydWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKiBTZXQgdXAgc2lnbmFsIGhhbmRsZXJz ICovCkBAIC0zNjU5LDcgKzM2NTksNyBAQCBXYWxTbmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZl bnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50KQogewogCVdhaXRFdmVudAll dmVudDsKIAotCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2Nr ZXRQb3MsIHNvY2tldF9ldmVudHMsIE5VTEwpOworCU1vZGlmeVdhaXRFdmVudChGZUJlV2Fp dFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIDApOwogCiAJLyoK IAkgKiBXZSB1c2UgYSBjb25kaXRpb24gdmFyaWFibGUgdG8gZWZmaWNpZW50bHkgd2FrZSB1 cCB3YWxzZW5kZXJzIGluCkBAIC0zNjcxLDggKzM2NzEsOCBAQCBXYWxTbmRXYWl0KHVpbnQz MiBzb2NrZXRfZXZlbnRzLCBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50KQogCSAq IENvbmRpdGlvblZhcmlhYmxlU2xlZXAoKSkuIEl0IHN0aWxsIHVzZXMgV2FpdEV2ZW50U2V0 V2FpdCgpIGZvcgogCSAqIHdhaXRpbmcsIGJlY2F1c2Ugd2UgYWxzbyBuZWVkIHRvIHdhaXQg Zm9yIHNvY2tldCBldmVudHMuIFRoZSBwcm9jZXNzZXMKIAkgKiAoc3RhcnR1cCBwcm9jZXNz LCB3YWxyZWNlaXZlciBldGMuKSB3YW50aW5nIHRvIHdha2UgdXAgd2Fsc2VuZGVycyB1c2UK LQkgKiBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgpLCB3aGljaCBpbiB0dXJuIGNhbGxz IFNldExhdGNoKCksIGhlbHBpbmcKLQkgKiB3YWxzZW5kZXJzIGNvbWUgb3V0IG9mIFdhaXRF dmVudFNldFdhaXQoKS4KKwkgKiBDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgpLCB3aGlj aCBpbiB0dXJuIGNhbGxzIFNlbmRJbnRlcnJ1cHQoKSwKKwkgKiBoZWxwaW5nIHdhbHNlbmRl cnMgY29tZSBvdXQgb2YgV2FpdEV2ZW50U2V0V2FpdCgpLgogCSAqCiAJICogVGhpcyBhcHBy b2FjaCBpcyBzaW1wbGUgYW5kIGVmZmljaWVudCBiZWNhdXNlLCBvbmUgZG9lc24ndCBoYXZl IHRvIGxvb3AKIAkgKiB0aHJvdWdoIGFsbCB0aGUgd2Fsc2VuZGVycyBzbG90cywgd2l0aCBh IHNwaW5sb2NrIGFjcXVpc2l0aW9uIGFuZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYwppbmRleCA3OTE1ZWQ2MjRjMS4uZDdiZTQzMDlkNGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAicGdfdHJh Y2UuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3Jp dGVyLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKQEAgLTI4ODAsNyArMjg4MSw3IEBAIFVucGluQnVm ZmVyTm9Pd25lcihCdWZmZXJEZXNjICpidWYpCiAKIAkJCQlidWZfc3RhdGUgJj0gfkJNX1BJ Tl9DT1VOVF9XQUlURVI7CiAJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsKLQkJ CQlQcm9jU2VuZFNpZ25hbCh3YWl0X2JhY2tlbmRfcGdwcm9jbm8pOworCQkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIHdhaXRfYmFja2VuZF9wZ3Byb2Nubyk7CiAJCQl9 CiAJCQllbHNlCiAJCQkJVW5sb2NrQnVmSGRyKGJ1ZiwgYnVmX3N0YXRlKTsKQEAgLTUyODMs NyArNTI4NCwxMiBAQCBMb2NrQnVmZmVyRm9yQ2xlYW51cChCdWZmZXIgYnVmZmVyKQogCQkJ U2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCgtMSk7CiAJCX0KIAkJZWxzZQotCQkJUHJv Y1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJeworCQkJV2FpdElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwgMCwKKwkJCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwkJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisJCX0KIAogCQkvKgogCQkgKiBSZW1vdmUgZmxhZyBtYXJraW5nIHVzIGFzIHdhaXRl ci4gTm9ybWFsbHkgdGhpcyB3aWxsIG5vdCBiZSBzZXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jCmluZGV4IDMzNjcxNWI2YzYzLi4xOTM4OTc3MDM4NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xNyw2ICsxNyw3IEBACiAK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L2F0b21pY3MuaCIKKyNpbmNs dWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2lu dGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCkBAIC0yMTksMjcgKzIyMCwyNSBAQCBTdHJhdGVneUdldEJ1ZmZlcihC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDMyICpidWZfc3RhdGUsIGJvb2wg KmZyb21fcgogCS8qCiAJICogSWYgYXNrZWQsIHdlIG5lZWQgdG8gd2FrZW4gdGhlIGJnd3Jp dGVyLiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvIHJlbHkgb24KIAkgKiBhIHNwaW5sb2NrIGZv ciB0aGlzIHdlIGZvcmNlIGEgcmVhZCBmcm9tIHNoYXJlZCBtZW1vcnkgb25jZSwgYW5kIHRo ZW4KLQkgKiBzZXQgdGhlIGxhdGNoIGJhc2VkIG9uIHRoYXQgdmFsdWUuIFdlIG5lZWQgdG8g Z28gdGhyb3VnaCB0aGF0IGxlbmd0aAotCSAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGJnd3Byb2Nu byBtaWdodCBiZSByZXNldCB3aGlsZS9hZnRlciB3ZSBjaGVjayBiZWNhdXNlCi0JICogdGhl IGNvbXBpbGVyIG1pZ2h0IGp1c3QgcmVyZWFkIGZyb20gbWVtb3J5LgorCSAqIHNlbmQgdGhl IGludGVycnVwdCBiYXNlZCBvbiB0aGF0IHZhbHVlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2gg dGhhdAorCSAqIGxlbmd0aCBiZWNhdXNlIG90aGVyd2lzZSBiZ3dwcm9jbm8gbWlnaHQgYmUg cmVzZXQgd2hpbGUvYWZ0ZXIgd2UgY2hlY2sKKwkgKiBiZWNhdXNlIHRoZSBjb21waWxlciBt aWdodCBqdXN0IHJlcmVhZCBmcm9tIG1lbW9yeS4KIAkgKgotCSAqIFRoaXMgY2FuIHBvc3Np Ymx5IHNldCB0aGUgbGF0Y2ggb2YgdGhlIHdyb25nIHByb2Nlc3MgaWYgdGhlIGJnd3JpdGVy Ci0JICogZGllcyBpbiB0aGUgd3JvbmcgbW9tZW50LiBCdXQgc2luY2UgUEdQUk9DLT5wcm9j TGF0Y2ggaXMgbmV2ZXIKLQkgKiBkZWFsbG9jYXRlZCB0aGUgd29yc3QgY29uc2VxdWVuY2Ug b2YgdGhhdCBpcyB0aGF0IHdlIHNldCB0aGUgbGF0Y2ggb2YKLQkgKiBzb21lIGFyYml0cmFy eSBwcm9jZXNzLgorCSAqIFRoaXMgY2FuIHBvc3NpYmx5IHNlbmQgdGhlIGludGVycnVwdCB0 byB0aGUgd3JvbmcgcHJvY2VzcyBpZiB0aGUKKwkgKiBiZ3dyaXRlciBkaWVzIGluIHRoZSB3 cm9uZyBtb21lbnQsIGJ1dCB0aGF0J3MgaGFybWxlc3MuCiAJICovCiAJYmd3cHJvY25vID0g SU5UX0FDQ0VTU19PTkNFKFN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vKTsKIAlpZiAoYmd3 cHJvY25vICE9IC0xKQogCXsKLQkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZvcmUg c2V0dGluZyB0aGUgbGF0Y2ggKi8KKwkJLyogcmVzZXQgYmd3cHJvY25vIGZpcnN0LCBiZWZv cmUgc2VuZGluZyB0aGUgaW50ZXJydXB0ICovCiAJCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJv Y25vID0gLTE7CiAKIAkJLyoKLQkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhl cmUgd2hpY2ggaXMgc2xpZ2h0bHkgaWNreS4gSXQncwotCQkgKiBhY3R1YWxseSBmaW5lIGJl Y2F1c2UgcHJvY0xhdGNoIGlzbid0IGV2ZXIgZnJlZWQsIHNvIHdlIGp1c3QgY2FuCi0JCSAq IHBvdGVudGlhbGx5IHNldCB0aGUgd3JvbmcgcHJvY2VzcycgKG9yIG5vIHByb2Nlc3MnKSBs YXRjaC4KKwkJICogTm90IGFjcXVpcmluZyBQcm9jQXJyYXlMb2NrIGhlcmUgd2hpY2ggaXMg c2xpZ2h0bHkgaWNreSwgYmVjYXVzZSB3ZQorCQkgKiBjYW4gcG90ZW50aWFsbHkgc2VuZCB0 aGUgaW50ZXJydXB0IHRvIHRoZSB3cm9uZyBwcm9jZXNzIChvciBubworCQkgKiBwcm9jZXNz KSwgYnV0IGl0J3MgaGFybWxlc3MuCiAJCSAqLwotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+ YWxsUHJvY3NbYmd3cHJvY25vXS5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMLCBiZ3dwcm9jbm8pOwogCX0KIAogCS8qCkBAIC00MjAsMTAgKzQxOSwx MCBAQCBTdHJhdGVneVN5bmNTdGFydCh1aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywgdWludDMy ICpudW1fYnVmX2FsbG9jKQogfQogCiAvKgotICogU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlciAt LSBzZXQgb3IgY2xlYXIgYWxsb2NhdGlvbiBub3RpZmljYXRpb24gbGF0Y2gKKyAqIFN0cmF0 ZWd5Tm90aWZ5QmdXcml0ZXIgLS0gc2V0IG9yIGNsZWFyIGFsbG9jYXRpb24gbm90aWZpY2F0 aW9uIHByb2Nlc3MKICAqCiAgKiBJZiBiZ3dwcm9jbm8gaXNuJ3QgLTEsIHRoZSBuZXh0IGlu dm9jYXRpb24gb2YgU3RyYXRlZ3lHZXRCdWZmZXIgd2lsbAotICogc2V0IHRoYXQgbGF0Y2gu ICBQYXNzIC0xIHRvIGNsZWFyIHRoZSBwZW5kaW5nIG5vdGlmaWNhdGlvbiBiZWZvcmUgaXQK KyAqIGludGVycnVwdCB0aGF0IHByb2Nlc3MuICBQYXNzIC0xIHRvIGNsZWFyIHRoZSBwZW5k aW5nIG5vdGlmaWNhdGlvbiBiZWZvcmUgaXQKICAqIGhhcHBlbnMuICBUaGlzIGZlYXR1cmUg aXMgdXNlZCBieSB0aGUgYmd3cml0ZXIgcHJvY2VzcyB0byB3YWtlIGl0c2VsZiB1cAogICog ZnJvbSBoaWJlcm5hdGlvbiwgYW5kIGlzIG5vdCBtZWFudCBmb3IgYW55Ym9keSBlbHNlIHRv IHVzZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZp bGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQppbmRleCA5YTA3ZjZlMWQ5 Mi4uMmQ5OGE0M2U3NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCkBAIC0xNSw3 ICsxNSw2IEBAIE9CSlMgPSBcCiAJZHNtX3JlZ2lzdHJ5Lm8gXAogCWlwYy5vIFwKIAlpcGNp Lm8gXAotCWxhdGNoLm8gXAogCXBtc2lnbmFsLm8gXAogCXByb2NhcnJheS5vIFwKIAlwcm9j c2lnbmFsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2gu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGM2YWVmZDJmNjg4Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCisrKyAvZGV2L251bGwKQEAgLTEsMzg3ICswLDAgQEAK LS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIGxhdGNoLmMKLSAqCSAgUm91dGluZXMg Zm9yIGludGVyLXByb2Nlc3MgbGF0Y2hlcwotICoKLSAqIFRoZSBsYXRjaCBpbnRlcmZhY2Ug aXMgYSByZWxpYWJsZSByZXBsYWNlbWVudCBmb3IgdGhlIGNvbW1vbiBwYXR0ZXJuIG9mCi0g KiB1c2luZyBwZ191c2xlZXAoKSBvciBzZWxlY3QoKSB0byB3YWl0IHVudGlsIGEgc2lnbmFs IGFycml2ZXMsIHdoZXJlIHRoZQotICogc2lnbmFsIGhhbmRsZXIgc2V0cyBhIGZsYWcgdmFy aWFibGUuICBTZWUgbGF0Y2guaCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotICogb24gaG93IHRv IHVzZSB0aGVtLgotICoKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK LSAqCi0gKiBJREVOVElGSUNBVElPTgotICoJICBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9s YXRjaC5jCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKi8KLSNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgotCi0jaW5jbHVkZSAibWlzY2FkbWluLmgiCi0jaW5jbHVkZSAicG9ydC9hdG9t aWNzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgotI2luY2x1ZGUgInN0b3JhZ2Uv d2FpdGV2ZW50c2V0LmgiCi0jaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKLQotLyogQSBj b21tb24gV2FpdEV2ZW50U2V0IHVzZWQgdG8gaW1wbGVtZW50IFdhaXRMYXRjaCgpICovCi1z dGF0aWMgV2FpdEV2ZW50U2V0ICpMYXRjaFdhaXRTZXQ7Ci0KLS8qIFRoZSBwb3NpdGlvbnMg b2YgdGhlIGxhdGNoIGFuZCBQTSBkZWF0aCBldmVudHMgaW4gTGF0Y2hXYWl0U2V0ICovCi0j ZGVmaW5lIExhdGNoV2FpdFNldExhdGNoUG9zIDAKLSNkZWZpbmUgTGF0Y2hXYWl0U2V0UG9z dG1hc3RlckRlYXRoUG9zIDEKLQotdm9pZAotSW5pdGlhbGl6ZUxhdGNoV2FpdFNldCh2b2lk KQotewotCWludAkJCWxhdGNoX3BvcyBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7Ci0KLQlB c3NlcnQoTGF0Y2hXYWl0U2V0ID09IE5VTEwpOwotCi0JLyogU2V0IHVwIHRoZSBXYWl0RXZl bnRTZXQgdXNlZCBieSBXYWl0TGF0Y2goKS4gKi8KLQlMYXRjaFdhaXRTZXQgPSBDcmVhdGVX YWl0RXZlbnRTZXQoTlVMTCwgMik7Ci0JbGF0Y2hfcG9zID0gQWRkV2FpdEV2ZW50VG9TZXQo TGF0Y2hXYWl0U2V0LCBXTF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkJ CSAgTXlMYXRjaCwgTlVMTCk7Ci0JQXNzZXJ0KGxhdGNoX3BvcyA9PSBMYXRjaFdhaXRTZXRM YXRjaFBvcyk7Ci0KLQkvKgotCSAqIFdhaXRMYXRjaCB3aWxsIG1vZGlmeSB0aGlzIHRvIFdM X0VYSVRfT05fUE1fREVBVEggb3IKLQkgKiBXTF9QT1NUTUFTVEVSX0RFQVRIIG9uIGVhY2gg Y2FsbC4KLQkgKi8KLQlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlsYXRjaF9wb3Mg PSBBZGRXYWl0RXZlbnRUb1NldChMYXRjaFdhaXRTZXQsIFdMX0VYSVRfT05fUE1fREVBVEgs Ci0JCQkJCQkJCQkgIFBHSU5WQUxJRF9TT0NLRVQsIE5VTEwsIE5VTEwpOwotCQlBc3NlcnQo bGF0Y2hfcG9zID09IExhdGNoV2FpdFNldFBvc3RtYXN0ZXJEZWF0aFBvcyk7Ci0JfQotfQot Ci0vKgotICogSW5pdGlhbGl6ZSBhIHByb2Nlc3MtbG9jYWwgbGF0Y2guCi0gKi8KLXZvaWQK LUluaXRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JbGF0Y2gtPmlzX3NldCA9IGZhbHNlOwot CWxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwotCWxhdGNoLT5vd25lcl9waWQgPSBN eVByb2NQaWQ7Ci0JbGF0Y2gtPmlzX3NoYXJlZCA9IGZhbHNlOwotCi0jaWZkZWYgV0lOMzIK LQlsYXRjaC0+ZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7 Ci0JaWYgKGxhdGNoLT5ldmVudCA9PSBOVUxMKQotCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZl bnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKLSNlbmRpZgkJ CQkJCQkvKiBXSU4zMiAqLwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBhIHNoYXJlZCBsYXRj aCB0aGF0IGNhbiBiZSBzZXQgZnJvbSBvdGhlciBwcm9jZXNzZXMuIFRoZSBsYXRjaAotICog aXMgaW5pdGlhbGx5IG93bmVkIGJ5IG5vLW9uZTsgdXNlIE93bkxhdGNoIHRvIGFzc29jaWF0 ZSBpdCB3aXRoIHRoZQotICogY3VycmVudCBwcm9jZXNzLgotICoKLSAqIEluaXRTaGFyZWRM YXRjaCBuZWVkcyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBiZWZvcmUgZm9ya2luZyBj aGlsZAotICogcHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVyIGFsbG9jYXRpbmcgdGhl IHNoYXJlZCBtZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoIHdpdGggU2ht ZW1Jbml0U3RydWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24KLSAqIGRvZXNuJ3QgYWN0 dWFsbHkgcmVxdWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25lIGRvZXMuKSBCZWNhdXNl IG9mCi0gKiB0aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNvbmN1cnJlbmN5IGlzc3Vl cyB0byB3b3JyeSBhYm91dCBoZXJlLgotICoKLSAqIE5vdGUgdGhhdCBvdGhlciBoYW5kbGVz IGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwotICogaW5oZXJp dGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFuaW5nIHVw IGNoaWxkCi0gKiBwcm9jZXNzIHJlZmVyZW5jZXMgdG8gcG9zdG1hc3Rlci1wcml2YXRlIGxh dGNoZXMgb3IgV2FpdEV2ZW50U2V0cy4KLSAqLwotdm9pZAotSW5pdFNoYXJlZExhdGNoKExh dGNoICpsYXRjaCkKLXsKLSNpZmRlZiBXSU4zMgotCVNFQ1VSSVRZX0FUVFJJQlVURVMgc2E7 Ci0KLQkvKgotCSAqIFNldCB1cCBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgdGhh dCB0aGUgZXZlbnRzIGFyZSBpbmhlcml0ZWQuCi0JICovCi0JWmVyb01lbW9yeSgmc2EsIHNp emVvZihzYSkpOwotCXNhLm5MZW5ndGggPSBzaXplb2Yoc2EpOwotCXNhLmJJbmhlcml0SGFu ZGxlID0gVFJVRTsKLQotCWxhdGNoLT5ldmVudCA9IENyZWF0ZUV2ZW50KCZzYSwgVFJVRSwg RkFMU0UsIE5VTEwpOwotCWlmIChsYXRjaC0+ZXZlbnQgPT0gTlVMTCkKLQkJZWxvZyhFUlJP UiwgIkNyZWF0ZUV2ZW50IGZhaWxlZDogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3Io KSk7Ci0jZW5kaWYKLQotCWxhdGNoLT5pc19zZXQgPSBmYWxzZTsKLQlsYXRjaC0+bWF5YmVf c2xlZXBpbmcgPSBmYWxzZTsKLQlsYXRjaC0+b3duZXJfcGlkID0gMDsKLQlsYXRjaC0+aXNf c2hhcmVkID0gdHJ1ZTsKLX0KLQotLyoKLSAqIEFzc29jaWF0ZSBhIHNoYXJlZCBsYXRjaCB3 aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MsIGFsbG93aW5nIGl0IHRvCi0gKiB3YWl0IG9uIHRo ZSBsYXRjaC4KLSAqCi0gKiBBbHRob3VnaCB0aGVyZSBpcyBhIHNhbml0eSBjaGVjayBmb3Ig bGF0Y2gtYWxyZWFkeS1vd25lZCwgd2UgZG9uJ3QgZG8KLSAqIGFueSBzb3J0IG9mIGxvY2tp bmcgaGVyZSwgbWVhbmluZyB0aGF0IHdlIGNvdWxkIGZhaWwgdG8gZGV0ZWN0IHRoZSBlcnJv cgotICogaWYgdHdvIHByb2Nlc3NlcyB0cnkgdG8gb3duIHRoZSBzYW1lIGxhdGNoIGF0IGFi b3V0IHRoZSBzYW1lIHRpbWUuICBJZgotICogdGhlcmUgaXMgYW55IHJpc2sgb2YgdGhhdCwg Y2FsbGVyIG11c3QgcHJvdmlkZSBhbiBpbnRlcmxvY2sgdG8gcHJldmVudCBpdC4KLSAqLwot dm9pZAotT3duTGF0Y2goTGF0Y2ggKmxhdGNoKQotewotCWludAkJCW93bmVyX3BpZDsKLQot CS8qIFNhbml0eSBjaGVja3MgKi8KLQlBc3NlcnQobGF0Y2gtPmlzX3NoYXJlZCk7Ci0KLQlv d25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwotCWlmIChvd25lcl9waWQgIT0gMCkKLQkJ ZWxvZyhQQU5JQywgImxhdGNoIGFscmVhZHkgb3duZWQgYnkgUElEICVkIiwgb3duZXJfcGlk KTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSBNeVByb2NQaWQ7Ci19Ci0KLS8qCi0gKiBEaXNv d24gYSBzaGFyZWQgbGF0Y2ggY3VycmVudGx5IG93bmVkIGJ5IHRoZSBjdXJyZW50IHByb2Nl c3MuCi0gKi8KLXZvaWQKLURpc293bkxhdGNoKExhdGNoICpsYXRjaCkKLXsKLQlBc3NlcnQo bGF0Y2gtPmlzX3NoYXJlZCk7Ci0JQXNzZXJ0KGxhdGNoLT5vd25lcl9waWQgPT0gTXlQcm9j UGlkKTsKLQotCWxhdGNoLT5vd25lcl9waWQgPSAwOwotfQotCi0vKgotICogV2FpdCBmb3Ig YSBnaXZlbiBsYXRjaCB0byBiZSBzZXQsIG9yIGZvciBwb3N0bWFzdGVyIGRlYXRoLCBvciB1 bnRpbCB0aW1lb3V0Ci0gKiBpcyBleGNlZWRlZC4gJ3dha2VFdmVudHMnIGlzIGEgYml0bWFz ayB0aGF0IHNwZWNpZmllcyB3aGljaCBvZiB0aG9zZSBldmVudHMKLSAqIHRvIHdhaXQgZm9y LiBJZiB0aGUgbGF0Y2ggaXMgYWxyZWFkeSBzZXQgKGFuZCBXTF9MQVRDSF9TRVQgaXMgZ2l2 ZW4pLCB0aGUKLSAqIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuCi0gKgotICogVGhl ICJ0aW1lb3V0IiBpcyBnaXZlbiBpbiBtaWxsaXNlY29uZHMuIEl0IG11c3QgYmUgPj0gMCBp ZiBXTF9USU1FT1VUIGZsYWcKLSAqIGlzIGdpdmVuLiAgQWx0aG91Z2ggaXQgaXMgZGVjbGFy ZWQgYXMgImxvbmciLCB3ZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0Ci0gKiB0aW1lb3V0cyBs b25nZXIgdGhhbiBJTlRfTUFYIG1pbGxpc2Vjb25kcy4gIE5vdGUgdGhhdCBzb21lIGV4dHJh IG92ZXJoZWFkCi0gKiBpcyBpbmN1cnJlZCB3aGVuIFdMX1RJTUVPVVQgaXMgZ2l2ZW4sIHNv IGF2b2lkIHVzaW5nIGEgdGltZW91dCBpZiBwb3NzaWJsZS4KLSAqCi0gKiBUaGUgbGF0Y2gg bXVzdCBiZSBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLCBpZS4gaXQgbXVzdCBiZSBh Ci0gKiBwcm9jZXNzLWxvY2FsIGxhdGNoIGluaXRpYWxpemVkIHdpdGggSW5pdExhdGNoLCBv ciBhIHNoYXJlZCBsYXRjaAotICogYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nl c3MgYnkgY2FsbGluZyBPd25MYXRjaC4KLSAqCi0gKiBSZXR1cm5zIGJpdCBtYXNrIGluZGlj YXRpbmcgd2hpY2ggY29uZGl0aW9uKHMpIGNhdXNlZCB0aGUgd2FrZS11cC4gTm90ZQotICog dGhhdCBpZiBtdWx0aXBsZSB3YWtlLXVwIGNvbmRpdGlvbnMgYXJlIHRydWUsIHRoZXJlIGlz IG5vIGd1YXJhbnRlZSB0aGF0Ci0gKiB3ZSByZXR1cm4gYWxsIG9mIHRoZW0gaW4gb25lIGNh bGwsIGJ1dCB3ZSB3aWxsIHJldHVybiBhdCBsZWFzdCBvbmUuCi0gKi8KLWludAotV2FpdExh dGNoKExhdGNoICpsYXRjaCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKLQkJICB1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQotewotCVdhaXRFdmVudAlldmVudDsKLQotCS8qIFBv c3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGgg c29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8Ci0JCSAgICh3YWtl RXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJICAgKHdha2VFdmVudHMgJiBX TF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQkvKgotCSAqIFNvbWUgY2FsbGVycyBtYXkgaGF2 ZSBhIGxhdGNoIG90aGVyIHRoYW4gTXlMYXRjaCwgb3Igbm8gbGF0Y2ggYXQgYWxsLAotCSAq IG9yIHdhbnQgdG8gaGFuZGxlIHBvc3RtYXN0ZXIgZGVhdGggZGlmZmVyZW50bHkuICBJdCdz IGNoZWFwIHRvIGFzc2lnbgotCSAqIHRob3NlLCBzbyBqdXN0IGRvIGl0IGV2ZXJ5IHRpbWUu Ci0JICovCi0JaWYgKCEod2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkpCi0JCWxhdGNoID0g TlVMTDsKLQlNb2RpZnlXYWl0RXZlbnQoTGF0Y2hXYWl0U2V0LCBMYXRjaFdhaXRTZXRMYXRj aFBvcywgV0xfTEFUQ0hfU0VULCBsYXRjaCk7Ci0JTW9kaWZ5V2FpdEV2ZW50KExhdGNoV2Fp dFNldCwgTGF0Y2hXYWl0U2V0UG9zdG1hc3RlckRlYXRoUG9zLAotCQkJCQkod2FrZUV2ZW50 cyAmIChXTF9FWElUX09OX1BNX0RFQVRIIHwgV0xfUE9TVE1BU1RFUl9ERUFUSCkpLAotCQkJ CQlOVUxMKTsKLQotCWlmIChXYWl0RXZlbnRTZXRXYWl0KExhdGNoV2FpdFNldCwKLQkJCQkJ CSAod2FrZUV2ZW50cyAmIFdMX1RJTUVPVVQpID8gdGltZW91dCA6IC0xLAotCQkJCQkJICZl dmVudCwgMSwKLQkJCQkJCSB3YWl0X2V2ZW50X2luZm8pID09IDApCi0JCXJldHVybiBXTF9U SU1FT1VUOwotCWVsc2UKLQkJcmV0dXJuIGV2ZW50LmV2ZW50czsKLX0KLQotLyoKLSAqIExp a2UgV2FpdExhdGNoLCBidXQgd2l0aCBhbiBleHRyYSBzb2NrZXQgYXJndW1lbnQgZm9yIFdM X1NPQ0tFVF8qCi0gKiBjb25kaXRpb25zLgotICoKLSAqIFdoZW4gd2FpdGluZyBvbiBhIHNv Y2tldCwgRU9GIGFuZCBlcnJvciBjb25kaXRpb25zIGFsd2F5cyBjYXVzZSB0aGUgc29ja2V0 Ci0gKiB0byBiZSByZXBvcnRlZCBhcyByZWFkYWJsZS93cml0YWJsZS9jb25uZWN0ZWQsIHNv IHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbAotICogd2l0aCB0aGUgY29uZGl0aW9uLgotICoK LSAqIHdha2VFdmVudHMgbXVzdCBpbmNsdWRlIGVpdGhlciBXTF9FWElUX09OX1BNX0RFQVRI IGZvciBhdXRvbWF0aWMgZXhpdAotICogaWYgdGhlIHBvc3RtYXN0ZXIgZGllcyBvciBXTF9Q T1NUTUFTVEVSX0RFQVRIIGZvciBhIGZsYWcgc2V0IGluIHRoZQotICogcmV0dXJuIHZhbHVl IGlmIHRoZSBwb3N0bWFzdGVyIGRpZXMuICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCBmb3IgcmFy ZSBjYXNlcwotICogd2hlcmUgc29tZSBiZWhhdmlvciBvdGhlciB0aGFuIGltbWVkaWF0ZSBl eGl0IGlzIG5lZWRlZC4KLSAqCi0gKiBOQjogVGhlc2UgZGF5cyB0aGlzIGlzIGp1c3QgYSB3 cmFwcGVyIGFyb3VuZCB0aGUgV2FpdEV2ZW50U2V0IEFQSS4gV2hlbgotICogdXNpbmcgYSBs YXRjaCB2ZXJ5IGZyZXF1ZW50bHksIGNvbnNpZGVyIGNyZWF0aW5nIGEgbG9uZ2VyIGxpdmlu ZwotICogV2FpdEV2ZW50U2V0IGluc3RlYWQ7IHRoYXQncyBtb3JlIGVmZmljaWVudC4KLSAq LwotaW50Ci1XYWl0TGF0Y2hPclNvY2tldChMYXRjaCAqbGF0Y2gsIGludCB3YWtlRXZlbnRz LCBwZ3NvY2tldCBzb2NrLAotCQkJCSAgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVu dF9pbmZvKQotewotCWludAkJCXJldCA9IDA7Ci0JaW50CQkJcmM7Ci0JV2FpdEV2ZW50CWV2 ZW50OwotCVdhaXRFdmVudFNldCAqc2V0ID0gQ3JlYXRlV2FpdEV2ZW50U2V0KEN1cnJlbnRS ZXNvdXJjZU93bmVyLCAzKTsKLQotCWlmICh3YWtlRXZlbnRzICYgV0xfVElNRU9VVCkKLQkJ QXNzZXJ0KHRpbWVvdXQgPj0gMCk7Ci0JZWxzZQotCQl0aW1lb3V0ID0gLTE7Ci0KLQlpZiAo d2FrZUV2ZW50cyAmIFdMX0xBVENIX1NFVCkKLQkJQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkgIGxhdGNoLCBOVUxMKTsK LQotCS8qIFBvc3RtYXN0ZXItbWFuYWdlZCBjYWxsZXJzIG11c3QgaGFuZGxlIHBvc3RtYXN0 ZXIgZGVhdGggc29tZWhvdy4gKi8KLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyIHx8Ci0J CSAgICh3YWtlRXZlbnRzICYgV0xfRVhJVF9PTl9QTV9ERUFUSCkgfHwKLQkJICAgKHdha2VF dmVudHMgJiBXTF9QT1NUTUFTVEVSX0RFQVRIKSk7Ci0KLQlpZiAoKHdha2VFdmVudHMgJiBX TF9QT1NUTUFTVEVSX0RFQVRIKSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKLQkJQWRkV2FpdEV2 ZW50VG9TZXQoc2V0LCBXTF9QT1NUTUFTVEVSX0RFQVRILCBQR0lOVkFMSURfU09DS0VULAot CQkJCQkJICBOVUxMLCBOVUxMKTsKLQotCWlmICgod2FrZUV2ZW50cyAmIFdMX0VYSVRfT05f UE1fREVBVEgpICYmIElzVW5kZXJQb3N0bWFzdGVyKQotCQlBZGRXYWl0RXZlbnRUb1NldChz ZXQsIFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkgIE5V TEwsIE5VTEwpOwotCi0JaWYgKHdha2VFdmVudHMgJiBXTF9TT0NLRVRfTUFTSykKLQl7Ci0J CWludAkJCWV2OwotCi0JCWV2ID0gd2FrZUV2ZW50cyAmIFdMX1NPQ0tFVF9NQVNLOwotCQlB ZGRXYWl0RXZlbnRUb1NldChzZXQsIGV2LCBzb2NrLCBOVUxMLCBOVUxMKTsKLQl9Ci0KLQly YyA9IFdhaXRFdmVudFNldFdhaXQoc2V0LCB0aW1lb3V0LCAmZXZlbnQsIDEsIHdhaXRfZXZl bnRfaW5mbyk7Ci0KLQlpZiAocmMgPT0gMCkKLQkJcmV0IHw9IFdMX1RJTUVPVVQ7Ci0JZWxz ZQotCXsKLQkJcmV0IHw9IGV2ZW50LmV2ZW50cyAmIChXTF9MQVRDSF9TRVQgfAotCQkJCQkJ CSAgIFdMX1BPU1RNQVNURVJfREVBVEggfAotCQkJCQkJCSAgIFdMX1NPQ0tFVF9NQVNLKTsK LQl9Ci0KLQlGcmVlV2FpdEV2ZW50U2V0KHNldCk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi0v KgotICogU2V0cyBhIGxhdGNoIGFuZCB3YWtlcyB1cCBhbnlvbmUgd2FpdGluZyBvbiBpdC4K LSAqCi0gKiBUaGlzIGlzIGNoZWFwIGlmIHRoZSBsYXRjaCBpcyBhbHJlYWR5IHNldCwgb3Ro ZXJ3aXNlIG5vdCBzbyBtdWNoLgotICoKLSAqIE5COiB3aGVuIGNhbGxpbmcgdGhpcyBpbiBh IHNpZ25hbCBoYW5kbGVyLCBiZSBzdXJlIHRvIHNhdmUgYW5kIHJlc3RvcmUKLSAqIGVycm5v IGFyb3VuZCBpdC4gIChUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgaW4gbW9zdCBzaWduYWwg aGFuZGxlcnMsIG9mCi0gKiBjb3Vyc2UsIGJ1dCB3ZSB1c2VkIHRvIG9taXQgaXQgaW4gaGFu ZGxlcnMgdGhhdCBvbmx5IHNldCBhIGZsYWcuKQotICoKLSAqIE5COiB0aGlzIGZ1bmN0aW9u IGlzIGNhbGxlZCBmcm9tIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBzaWduYWwgaGFuZGxlcnMg c28KLSAqIHRocm93aW5nIGFuIGVycm9yIGlzIG5vdCBhIGdvb2QgaWRlYS4KLSAqLwotdm9p ZAotU2V0TGF0Y2goTGF0Y2ggKmxhdGNoKQotewotI2lmbmRlZiBXSU4zMgotCXBpZF90CQlv d25lcl9waWQ7Ci0jZWxzZQotCUhBTkRMRQkJaGFuZGxlOwotI2VuZGlmCi0KLQkvKgotCSAq IFRoZSBtZW1vcnkgYmFycmllciBoYXMgdG8gYmUgcGxhY2VkIGhlcmUgdG8gZW5zdXJlIHRo YXQgYW55IGZsYWcKLQkgKiB2YXJpYWJsZXMgcG9zc2libHkgY2hhbmdlZCBieSB0aGlzIHBy b2Nlc3MgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gbWFpbgotCSAqIG1lbW9yeSwgYmVmb3JlIHdl IGNoZWNrL3NldCBpc19zZXQuCi0JICovCi0JcGdfbWVtb3J5X2JhcnJpZXIoKTsKLQotCS8q IFF1aWNrIGV4aXQgaWYgYWxyZWFkeSBzZXQgKi8KLQlpZiAobGF0Y2gtPmlzX3NldCkKLQkJ cmV0dXJuOwotCi0JbGF0Y2gtPmlzX3NldCA9IHRydWU7Ci0KLQlwZ19tZW1vcnlfYmFycmll cigpOwotCWlmICghbGF0Y2gtPm1heWJlX3NsZWVwaW5nKQotCQlyZXR1cm47Ci0KLSNpZm5k ZWYgV0lOMzIKLQotCS8qCi0JICogU2VlIGlmIGFueW9uZSdzIHdhaXRpbmcgZm9yIHRoZSBs YXRjaC4gSXQgY2FuIGJlIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYKLQkgKiB3ZSdyZSBpbiBh IHNpZ25hbCBoYW5kbGVyLiBXZSB1c2UgdGhlIHNlbGYtcGlwZSBvciBTSUdVUkcgdG8gb3Vy c2VsdmVzCi0JICogdG8gd2FrZSB1cCBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSB3aXRob3V0 IHJhY2VzIGluIHRoYXQgY2FzZS4gSWYgaXQncwotCSAqIGFub3RoZXIgcHJvY2Vzcywgc2Vu ZCBhIHNpZ25hbC4KLQkgKgotCSAqIEZldGNoIG93bmVyX3BpZCBvbmx5IG9uY2UsIGluIGNh c2UgdGhlIGxhdGNoIGlzIGNvbmN1cnJlbnRseSBnZXR0aW5nCi0JICogb3duZWQgb3IgZGlz b3duZWQuIFhYWDogVGhpcyBhc3N1bWVzIHRoYXQgcGlkX3QgaXMgYXRvbWljLCB3aGljaCBp c24ndAotCSAqIGd1YXJhbnRlZWQgdG8gYmUgdHJ1ZSEgSW4gcHJhY3RpY2UsIHRoZSBlZmZl Y3RpdmUgcmFuZ2Ugb2YgcGlkX3QgZml0cwotCSAqIGluIGEgMzIgYml0IGludGVnZXIsIGFu ZCBzbyBzaG91bGQgYmUgYXRvbWljLiBJbiB0aGUgd29yc3QgY2FzZSwgd2UKLQkgKiBtaWdo dCBlbmQgdXAgc2lnbmFsaW5nIHRoZSB3cm9uZyBwcm9jZXNzLiBFdmVuIHRoZW4sIHlvdSdy ZSB2ZXJ5Ci0JICogdW5sdWNreSBpZiBhIHByb2Nlc3Mgd2l0aCB0aGF0IGJvZ3VzIHBpZCBl eGlzdHMgYW5kIGJlbG9uZ3MgdG8KLQkgKiBQb3N0Z3JlczsgYW5kIFBHIGRhdGFiYXNlIHBy b2Nlc3NlcyBzaG91bGQgaGFuZGxlIGV4Y2VzcyBTSUdVU1IxCi0JICogaW50ZXJydXB0cyB3 aXRob3V0IGEgcHJvYmxlbSBhbnlob3cuCi0JICoKLQkgKiBBbm90aGVyIHNvcnQgb2YgcmFj ZSBjb25kaXRpb24gdGhhdCdzIHBvc3NpYmxlIGhlcmUgaXMgZm9yIGEgbmV3Ci0JICogcHJv Y2VzcyB0byBvd24gdGhlIGxhdGNoIGltbWVkaWF0ZWx5IGFmdGVyIHdlIGxvb2ssIHNvIHdl IGRvbid0IHNpZ25hbAotCSAqIGl0LiBUaGlzIGlzIG9rYXkgc28gbG9uZyBhcyBhbGwgY2Fs bGVycyBvZiBSZXNldExhdGNoL1dhaXRMYXRjaCBmb2xsb3cKLQkgKiB0aGUgc3RhbmRhcmQg Y29kaW5nIGNvbnZlbnRpb24gb2Ygd2FpdGluZyBhdCB0aGUgYm90dG9tIG9mIHRoZWlyIGxv b3BzLAotCSAqIG5vdCB0aGUgdG9wLCBzbyB0aGF0IHRoZXknbGwgY29ycmVjdGx5IHByb2Nl c3MgbGF0Y2gtc2V0dGluZyBldmVudHMKLQkgKiB0aGF0IGhhcHBlbiBiZWZvcmUgdGhleSBl bnRlciB0aGUgbG9vcC4KLQkgKi8KLQlvd25lcl9waWQgPSBsYXRjaC0+b3duZXJfcGlkOwot CWlmIChvd25lcl9waWQgPT0gMCkKLQkJcmV0dXJuOwotCWVsc2UgaWYgKG93bmVyX3BpZCA9 PSBNeVByb2NQaWQpCi0JCVdha2V1cE15UHJvYygpOwotCWVsc2UKLQkJV2FrZXVwT3RoZXJQ cm9jKG93bmVyX3BpZCk7Ci0KLSNlbHNlCi0KLQkvKgotCSAqIFNlZSBpZiBhbnlvbmUncyB3 YWl0aW5nIGZvciB0aGUgbGF0Y2guIEl0IGNhbiBiZSB0aGUgY3VycmVudCBwcm9jZXNzIGlm Ci0JICogd2UncmUgaW4gYSBzaWduYWwgaGFuZGxlci4KLQkgKgotCSAqIFVzZSBhIGxvY2Fs IHZhcmlhYmxlIGhlcmUganVzdCBpbiBjYXNlIHNvbWVib2R5IGNoYW5nZXMgdGhlIGV2ZW50 IGZpZWxkCi0JICogY29uY3VycmVudGx5ICh3aGljaCByZWFsbHkgc2hvdWxkIG5vdCBoYXBw ZW4pLgotCSAqLwotCWhhbmRsZSA9IGxhdGNoLT5ldmVudDsKLQlpZiAoaGFuZGxlKQotCXsK LQkJU2V0RXZlbnQoaGFuZGxlKTsKLQotCQkvKgotCQkgKiBOb3RlIHRoYXQgd2Ugc2lsZW50 bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJlIGluIGEgc2lnbmFsCi0JCSAqIGhh bmRsZXIgb3Igb3RoZXIgY3JpdGljYWwgcGF0aCB3aGVyZSBpdCdzIG5vdCBzYWZlIHRvIGNh bGwgZWxvZygpLgotCQkgKi8KLQl9Ci0jZW5kaWYKLX0KLQotLyoKLSAqIENsZWFyIHRoZSBs YXRjaC4gQ2FsbGluZyBXYWl0TGF0Y2ggYWZ0ZXIgdGhpcyB3aWxsIHNsZWVwLCB1bmxlc3MK LSAqIHRoZSBsYXRjaCBpcyBzZXQgYWdhaW4gYmVmb3JlIHRoZSBXYWl0TGF0Y2ggY2FsbC4K LSAqLwotdm9pZAotUmVzZXRMYXRjaChMYXRjaCAqbGF0Y2gpCi17Ci0JLyogT25seSB0aGUg b3duZXIgc2hvdWxkIHJlc2V0IHRoZSBsYXRjaCAqLwotCUFzc2VydChsYXRjaC0+b3duZXJf cGlkID09IE15UHJvY1BpZCk7Ci0JQXNzZXJ0KGxhdGNoLT5tYXliZV9zbGVlcGluZyA9PSBm YWxzZSk7Ci0KLQlsYXRjaC0+aXNfc2V0ID0gZmFsc2U7Ci0KLQkvKgotCSAqIEVuc3VyZSB0 aGF0IHRoZSB3cml0ZSB0byBpc19zZXQgZ2V0cyBmbHVzaGVkIHRvIG1haW4gbWVtb3J5IGJl Zm9yZSB3ZQotCSAqIGV4YW1pbmUgYW55IGZsYWcgdmFyaWFibGVzLiAgT3RoZXJ3aXNlIGEg Y29uY3VycmVudCBTZXRMYXRjaCBtaWdodAotCSAqIGZhbHNlbHkgY29uY2x1ZGUgdGhhdCBp dCBuZWVkbid0IHNpZ25hbCB1cywgZXZlbiB0aG91Z2ggd2UgaGF2ZSBtaXNzZWQKLQkgKiBz ZWVpbmcgc29tZSBmbGFnIHVwZGF0ZXMgdGhhdCBTZXRMYXRjaCB3YXMgc3VwcG9zZWQgdG8g aW5mb3JtIHVzIG9mLgotCSAqLwotCXBnX21lbW9yeV9iYXJyaWVyKCk7Ci19CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4IGIxYjczZGFjM2JlLi4zMjE1ODMwZDQx YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVzb24uYnVpbGQKQEAgLTcsNyArNyw2IEBA IGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2RzbV9yZWdpc3RyeS5jJywKICAgJ2lw Yy5jJywKICAgJ2lwY2kuYycsCi0gICdsYXRjaC5jJywKICAgJ3Btc2lnbmFsLmMnLAogICAn cHJvY2FycmF5LmMnLAogICAncHJvY3NpZ25hbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYwppbmRleCA3ZDIwMTk2NTUwMy4uZGRiYjA0MWZmOWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAgLTIyLDExICsyMiwxMSBAQAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBv cnQvcGdfYml0dXRpbHMuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJp YWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9s YXRjaC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3NpbnZhbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgpAQCAtNDgzLDcgKzQ4Myw3 IEBAIEhhbmRsZVByb2NTaWduYWxCYXJyaWVySW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7CiAJUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nID0gdHJ1ZTsK LQkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAq LworCS8qIGludGVycnVwdCB3aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFf aGFuZGxlciAqLwogfQogCiAvKgpAQCAtNzE0LDcgKzcxNCw3IEBAIHByb2NzaWduYWxfc2ln dXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pKQogCQlIYW5kbGVSZWNvdmVyeUNvbmZs aWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKTsKIAot CVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9t cS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMKaW5kZXggMmM3OWE2NDlm NDYuLjBhOTg3OWQ3MDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1fbXEuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1fbXEuYwpAQCAtNCw3 ICs0LDcgQEAKICAqCSAgc2luZ2xlLXJlYWRlciwgc2luZ2xlLXdyaXRlciBzaGFyZWQgbWVt b3J5IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBCb3RoIHRoZSBzZW5kZXIgYW5kIHRoZSByZWNl aXZlciBtdXN0IGhhdmUgYSBQR1BST0M7IHRoZWlyIHJlc3BlY3RpdmUKLSAqIHByb2Nlc3Mg bGF0Y2hlcyBhcmUgdXNlZCBmb3Igc3luY2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVy IG1heSBzZW5kLAorICogcHJvY2VzcyBpbnRlcnJ1cHRzIGFyZSB1c2VkIGZvciBzeW5jaHJv bml6YXRpb24uICBPbmx5IHRoZSBzZW5kZXIgbWF5IHNlbmQsCiAgKiBhbmQgb25seSB0aGUg cmVjZWl2ZXIgbWF5IHJlY2VpdmUuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93IGEgdXNl cgogICogYmFja2VuZCB0byBjb21tdW5pY2F0ZSB3aXRoIHdvcmtlciBiYWNrZW5kcyB0aGF0 IGl0IGhhcyByZWdpc3RlcmVkLgogICoKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9iZ3dvcmtlci5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4u aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNDQsMTAgKzQ1LDExIEBACiAg KgogICogbXFfZGV0YWNoZWQgbmVlZHMgbm8gbG9ja2luZy4gIEl0IGNhbiBiZSBzZXQgYnkg ZWl0aGVyIHRoZSBzZW5kZXIgb3IgdGhlCiAgKiByZWNlaXZlciwgYnV0IG9ubHkgZXZlciBm cm9tIGZhbHNlIHRvIHRydWUsIHNvIHJlZHVuZGFudCB3cml0ZXMgZG9uJ3QKLSAqIG1hdHRl ci4gIEl0IGlzIGltcG9ydGFudCB0aGF0IGlmIHdlIHNldCBtcV9kZXRhY2hlZCBhbmQgdGhl biBzZXQgdGhlCi0gKiBjb3VudGVycGFydHkncyBsYXRjaCwgdGhlIGNvdW50ZXJwYXJ0eSBt dXN0IGJlIGNlcnRhaW4gdG8gc2VlIHRoZSBjaGFuZ2UKLSAqIGFmdGVyIHdha2luZyB1cC4g IFNpbmNlIFNldExhdGNoIGJlZ2lucyB3aXRoIGEgbWVtb3J5IGJhcnJpZXIgYW5kIFJlc2V0 TGF0Y2gKLSAqIGVuZHMgd2l0aCBvbmUsIHRoaXMgc2hvdWxkIGJlIE9LLgorICogbWF0dGVy LiAgSXQgaXMgaW1wb3J0YW50IHRoYXQgaWYgd2Ugc2V0IG1xX2RldGFjaGVkIGFuZCB0aGVu IHNlbmQgdGhlCisgKiBpbnRlcnJ1cHQgdG8gdGhlIGNvdW50ZXJwYXJ0eSwgdGhlIGNvdW50 ZXJwYXJ0eSBtdXN0IGJlIGNlcnRhaW4gdG8gc2VlIHRoZQorICogY2hhbmdlIGFmdGVyIHdh a2luZyB1cC4gIFNpbmNlIFNlbmRJbnRlcnJ1cHQgYmVnaW5zIHdpdGggYSBtZW1vcnkgYmFy cmllcgorICogYW5kIENsZWFySW50ZXJydXB0IGVuZHMgd2l0aCBvbmUsIHRoaXMgc2hvdWxk IGJlIE9LLgorICogWFhYOiBObyBleHBsaWNpdCBtZW1vcnkgYmFycmllcnMgaW4gU2VuZElu dHRlcnVwdC9DbGVhckludGVycnVwdCwgZG8gd2UgbmVlZCB0byBhZGQgc29tZT8KICAqCiAg KiBtcV9yaW5nX3NpemUgYW5kIG1xX3Jpbmdfb2Zmc2V0IG5ldmVyIGNoYW5nZSBhZnRlciBp bml0aWFsaXphdGlvbiwgYW5kCiAgKiBjYW4gdGhlcmVmb3JlIGJlIHJlYWQgd2l0aG91dCB0 aGUgbG9jay4KQEAgLTExMiw3ICsxMTQsNyBAQCBzdHJ1Y3Qgc2htX21xCiAgKiB5ZXQgdXBk YXRlZCBpbiB0aGUgc2hhcmVkIG1lbW9yeS4gIFdlIHdpbGwgbm90IHVwZGF0ZSBpdCB1bnRp bCB0aGUgd3JpdHRlbgogICogZGF0YSBpcyAxLzR0aCBvZiB0aGUgcmluZyBzaXplIG9yIHRo ZSB0dXBsZSBxdWV1ZSBpcyBmdWxsLiAgVGhpcyB3aWxsCiAgKiBwcmV2ZW50IGZyZXF1ZW50 IENQVSBjYWNoZSBtaXNzZXMsIGFuZCBpdCB3aWxsIGFsc28gYXZvaWQgZnJlcXVlbnQKLSAq IFNldExhdGNoKCkgY2FsbHMsIHdoaWNoIGFyZSBxdWl0ZSBleHBlbnNpdmUuCisgKiBTZW5k SW50ZXJydXB0KCkgY2FsbHMsIHdoaWNoIGFyZSBxdWl0ZSBleHBlbnNpdmUuCiAgKgogICog bXFoX3BhcnRpYWxfYnl0ZXMsIG1xaF9leHBlY3RlZF9ieXRlcywgYW5kIG1xaF9sZW5ndGhf d29yZF9jb21wbGV0ZQogICogYXJlIHVzZWQgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIG5vbi1i bG9ja2luZyBvcGVyYXRpb25zLiAgV2hlbiB0aGUgY2FsbGVyCkBAIC0yMTQsNyArMjE2LDcg QEAgc2htX21xX3NldF9yZWNlaXZlcihzaG1fbXEgKm1xLCBQR1BST0MgKnByb2MpCiAJU3Bp bkxvY2tSZWxlYXNlKCZtcS0+bXFfbXV0ZXgpOwogCiAJaWYgKHNlbmRlciAhPSBOVUxMKQot CQlTZXRMYXRjaCgmc2VuZGVyLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHNlbmRlcikpOwogfQogCiAvKgpA QCAtMjMyLDcgKzIzNCw3IEBAIHNobV9tcV9zZXRfc2VuZGVyKHNobV9tcSAqbXEsIFBHUFJP QyAqcHJvYykKIAlTcGluTG9ja1JlbGVhc2UoJm1xLT5tcV9tdXRleCk7CiAKIAlpZiAocmVj ZWl2ZXIgIT0gTlVMTCkKLQkJU2V0TGF0Y2goJnJlY2VpdmVyLT5wcm9jTGF0Y2gpOworCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHJl Y2VpdmVyKSk7CiB9CiAKIC8qCkBAIC0zNDEsMTQgKzM0MywxNCBAQCBzaG1fbXFfc2VuZChz aG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLCBib29s IG5vd2FpdCwKICAqIFdyaXRlIGEgbWVzc2FnZSBpbnRvIGEgc2hhcmVkIG1lc3NhZ2UgcXVl dWUsIGdhdGhlcmVkIGZyb20gbXVsdGlwbGUKICAqIGFkZHJlc3Nlcy4KICAqCi0gKiBXaGVu IG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGxhdGNoIHdoZW4g dGhlIHJpbmcgYnVmZmVyCi0gKiBmaWxscyB1cCwgYW5kIHRoZW4gY29udGludWUgd3JpdGlu ZyBvbmNlIHRoZSByZWNlaXZlciBoYXMgZHJhaW5lZCBzb21lIGRhdGEuCi0gKiBUaGUgcHJv Y2VzcyBsYXRjaCBpcyByZXNldCBhZnRlciBlYWNoIHdhaXQuCisgKiBXaGVuIG5vd2FpdCA9 IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGludGVycnVwdCB3aGVuIHRoZSBy aW5nCisgKiBidWZmZXIgZmlsbHMgdXAsIGFuZCB0aGVuIGNvbnRpbnVlIHdyaXRpbmcgb25j ZSB0aGUgcmVjZWl2ZXIgaGFzIGRyYWluZWQKKyAqIHNvbWUgZGF0YS4gIFRoZSBwcm9jZXNz IGludGVycnVwdCBpcyBjbGVhcmVkIGFmdGVyIGVhY2ggd2FpdC4KICAqCi0gKiBXaGVuIG5v d2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJv Y2VzcyBsYXRjaDsKKyAqIFdoZW4gbm93YWl0ID0gdHJ1ZSwgd2UgZG8gbm90IG1hbmlwdWxh dGUgdGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNzIGludGVycnVwdDsKICAqIGluc3RlYWQsIGlm IHRoZSBidWZmZXIgYmVjb21lcyBmdWxsLCB3ZSByZXR1cm4gU0hNX01RX1dPVUxEX0JMT0NL LiAgSW4KICAqIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0 aW9uIGFnYWluLCB3aXRoIHRoZSBzYW1lCi0gKiBhcmd1bWVudHMsIGVhY2ggdGltZSB0aGUg cHJvY2VzcyBsYXRjaCBpcyBzZXQuICAoT25jZSBiZWd1biwgdGhlIHNlbmRpbmcKKyAqIGFy Z3VtZW50cywgZWFjaCB0aW1lIHRoZSBwcm9jZXNzIGludGVycnVwdCBpcyBzZXQuICAoT25j ZSBiZWd1biwgdGhlIHNlbmRpbmcKICAqIG9mIGEgbWVzc2FnZSBjYW5ub3QgYmUgYWJvcnRl ZCBleGNlcHQgYnkgZGV0YWNoaW5nIGZyb20gdGhlIHF1ZXVlOyBjaGFuZ2luZwogICogdGhl IGxlbmd0aCBvciBwYXlsb2FkIHdpbGwgY29ycnVwdCB0aGUgcXVldWUuKQogICoKQEAgLTUz OSw3ICs1NDEsNyBAQCBzaG1fbXFfc2VuZHYoc2htX21xX2hhbmRsZSAqbXFoLCBzaG1fbXFf aW92ZWMgKmlvdiwgaW50IGlvdmNudCwgYm9vbCBub3dhaXQsCiAJewogCQlzaG1fbXFfaW5j X2J5dGVzX3dyaXR0ZW4obXEsIG1xaC0+bXFoX3NlbmRfcGVuZGluZyk7CiAJCWlmIChyZWNl aXZlciAhPSBOVUxMKQotCQkJU2V0TGF0Y2goJnJlY2VpdmVyLT5wcm9jTGF0Y2gpOworCQkJ U2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhy ZWNlaXZlcikpOwogCQltcWgtPm1xaF9zZW5kX3BlbmRpbmcgPSAwOwogCX0KIApAQCAtNTU3 LDE2ICs1NTksMTYgQEAgc2htX21xX3NlbmR2KHNobV9tcV9oYW5kbGUgKm1xaCwgc2htX21x X2lvdmVjICppb3YsIGludCBpb3ZjbnQsIGJvb2wgbm93YWl0LAogICogd2hpbGUgc3RpbGwg YWxsb3dpbmcgbG9uZ2VyIG1lc3NhZ2VzLiAgSW4gZWl0aGVyIGNhc2UsIHRoZSByZXR1cm4g dmFsdWUKICAqIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIG5leHQgcmVjZWl2ZSBvcGVyYXRp b24gaXMgcGVyZm9ybWVkIG9uIHRoZSBxdWV1ZS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IGZh bHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9jZXNzIGxhdGNoIHdoZW4gdGhlIHJpbmcgYnVm ZmVyCi0gKiBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBub3QgeWV0IHJlY2VpdmVkIGEgZnVsbCBt ZXNzYWdlLiAgVGhlIHNlbmRlciB3aWxsCi0gKiBzZXQgb3VyIHByb2Nlc3MgbGF0Y2ggYWZ0 ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIGFuZCB3ZSdsbCByZXN1bWUKLSAqIHBy b2Nlc3NpbmcuICBFYWNoIGNhbGwgd2lsbCB0aGVyZWZvcmUgcmV0dXJuIGEgY29tcGxldGUg bWVzc2FnZQorICogV2hlbiBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIgcHJv Y2VzcyBpbnRlcnJ1cHQgd2hlbiB0aGUgcmluZworICogYnVmZmVyIGlzIGVtcHR5IGFuZCB3 ZSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYSBmdWxsIG1lc3NhZ2UuICBUaGUgc2VuZGVyCisg KiB3aWxsIHNldCBvdXIgcHJvY2VzcyBpbnRlcnJ1cHQgYWZ0ZXIgbW9yZSBkYXRhIGhhcyBi ZWVuIHdyaXR0ZW4sIGFuZCB3ZSdsbAorICogcmVzdW1lIHByb2Nlc3NpbmcuICBFYWNoIGNh bGwgd2lsbCB0aGVyZWZvcmUgcmV0dXJuIGEgY29tcGxldGUgbWVzc2FnZQogICogKHVubGVz cyB0aGUgc2VuZGVyIGRldGFjaGVzIHRoZSBxdWV1ZSkuCiAgKgotICogV2hlbiBub3dhaXQg PSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2YgdGhlIHByb2Nlc3Mg bGF0Y2g7Ci0gKiBpbnN0ZWFkLCB3aGVuZXZlciB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCB3 ZSBuZWVkIHRvIHJlYWQgZnJvbSBpdCwgd2UKLSAqIHJldHVybiBTSE1fTVFfV09VTERfQkxP Q0suICBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwgdGhpcwotICogZnVu Y3Rpb24gYWdhaW4gYWZ0ZXIgdGhlIHByb2Nlc3MgbGF0Y2ggaGFzIGJlZW4gc2V0LgorICog V2hlbiBub3dhaXQgPSB0cnVlLCB3ZSBkbyBub3QgbWFuaXB1bGF0ZSB0aGUgc3RhdGUgb2Yg dGhlIHByb2Nlc3MKKyAqIGludGVycnVwdDsgaW5zdGVhZCwgd2hlbmV2ZXIgdGhlIGJ1ZmZl ciBpcyBlbXB0eSBhbmQgd2UgbmVlZCB0byByZWFkIGZyb20KKyAqIGl0LCB3ZSByZXR1cm4g U0hNX01RX1dPVUxEX0JMT0NLLiAgSW4gdGhpcyBjYXNlLCB0aGUgY2FsbGVyIHNob3VsZCBj YWxsCisgKiB0aGlzIGZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBwcm9jZXNzIGludGVycnVw dCBoYXMgYmVlbiBzZXQuCiAgKi8KIHNobV9tcV9yZXN1bHQKIHNobV9tcV9yZWNlaXZlKHNo bV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSAqbmJ5dGVzcCwgdm9pZCAqKmRhdGFwLCBib29sIG5v d2FpdCkKQEAgLTYxOSw4ICs2MjEsOCBAQCBzaG1fbXFfcmVjZWl2ZShzaG1fbXFfaGFuZGxl ICptcWgsIFNpemUgKm5ieXRlc3AsIHZvaWQgKipkYXRhcCwgYm9vbCBub3dhaXQpCiAJICog SWYgd2UndmUgY29uc3VtZWQgYW4gYW1vdW50IG9mIGRhdGEgZ3JlYXRlciB0aGFuIDEvNHRo IG9mIHRoZSByaW5nCiAJICogc2l6ZSwgbWFyayBpdCBjb25zdW1lZCBpbiBzaGFyZWQgbWVt b3J5LiAgV2UgdHJ5IHRvIGF2b2lkIGRvaW5nIHRoaXMKIAkgKiB1bm5lY2Vzc2FyaWx5IHdo ZW4gb25seSBhIHNtYWxsIGFtb3VudCBvZiBkYXRhIGhhcyBiZWVuIGNvbnN1bWVkLAotCSAq IGJlY2F1c2UgU2V0TGF0Y2goKSBpcyBmYWlybHkgZXhwZW5zaXZlIGFuZCB3ZSBkb24ndCB3 YW50IHRvIGRvIGl0IHRvbwotCSAqIG9mdGVuLgorCSAqIGJlY2F1c2UgU2VuZEludGVycnVw dCgpIGlzIGZhaXJseSBleHBlbnNpdmUgYW5kIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQKKwkg KiB0b28gb2Z0ZW4uCiAJICovCiAJaWYgKG1xaC0+bXFoX2NvbnN1bWVfcGVuZGluZyA+IG1x LT5tcV9yaW5nX3NpemUgLyA0KQogCXsKQEAgLTg5NSw3ICs4OTcsNyBAQCBzaG1fbXFfZGV0 YWNoX2ludGVybmFsKHNobV9tcSAqbXEpCiAJU3BpbkxvY2tSZWxlYXNlKCZtcS0+bXFfbXV0 ZXgpOwogCiAJaWYgKHZpY3RpbSAhPSBOVUxMKQotCQlTZXRMYXRjaCgmdmljdGltLT5wcm9j TGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBHZXROdW1iZXJG cm9tUEdQcm9jKHZpY3RpbSkpOwogfQogCiAvKgpAQCAtOTkzLDcgKzk5NSw3IEBAIHNobV9t cV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUgKm1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZv aWQgKmRhdGEsCiAJCQkgKiBUaGVyZWZvcmUsIHdlIGNhbiByZWFkIGl0IHdpdGhvdXQgYWNx dWlyaW5nIHRoZSBzcGlubG9jay4KIAkJCSAqLwogCQkJQXNzZXJ0KG1xaC0+bXFoX2NvdW50 ZXJwYXJ0eV9hdHRhY2hlZCk7Ci0JCQlTZXRMYXRjaCgmbXEtPm1xX3JlY2VpdmVyLT5wcm9j TGF0Y2gpOworCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgR2V0TnVtYmVy RnJvbVBHUHJvYyhtcS0+bXFfcmVjZWl2ZXIpKTsKIAogCQkJLyoKIAkJCSAqIFdlIGhhdmUg anVzdCB1cGRhdGVkIHRoZSBtcWhfc2VuZF9wZW5kaW5nIGJ5dGVzIGluIHRoZSBzaGFyZWQK QEAgLTEwMDEsNyArMTAwMyw3IEBAIHNobV9tcV9zZW5kX2J5dGVzKHNobV9tcV9oYW5kbGUg Km1xaCwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEsCiAJCQkgKi8KIAkJCW1xaC0+ bXFoX3NlbmRfcGVuZGluZyA9IDA7CiAKLQkJCS8qIFNraXAgbWFuaXB1bGF0aW9uIG9mIG91 ciBsYXRjaCBpZiBub3dhaXQgPSB0cnVlLiAqLworCQkJLyogU2tpcCB3YWl0aW5nIGlmIG5v d2FpdCA9IHRydWUuICovCiAJCQlpZiAobm93YWl0KQogCQkJewogCQkJCSpieXRlc193cml0 dGVuID0gc2VudDsKQEAgLTEwMDksMTcgKzEwMTEsMTcgQEAgc2htX21xX3NlbmRfYnl0ZXMo c2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKIAkJ CX0KIAogCQkJLyoKLQkJCSAqIFdhaXQgZm9yIG91ciBsYXRjaCB0byBiZSBzZXQuICBJdCBt aWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQorCQkJICogV2FpdCBmb3IgdGhlIGludGVy cnVwdC4gIEl0IG1pZ2h0IGFscmVhZHkgYmUgc2V0IGZvciBzb21lCiAJCQkgKiB1bnJlbGF0 ZWQgcmVhc29uLCBidXQgdGhhdCdsbCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcAot CQkJICogdGhyb3VnaCB0aGUgbG9vcC4gIEl0J3Mgd29ydGggaXQgdG8gYXZvaWQgcmVzZXR0 aW5nIHRoZSBsYXRjaAotCQkJICogYXQgdG9wIG9mIGxvb3AsIGJlY2F1c2Ugc2V0dGluZyBh biBhbHJlYWR5LXNldCBsYXRjaCBpcyBtdWNoCi0JCQkgKiBjaGVhcGVyIHRoYW4gc2V0dGlu ZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4KKwkJCSAqIHRocm91Z2ggdGhlIGxvb3AuICBJ dCdzIHdvcnRoIGl0IHRvIGF2b2lkIGNsZWFyaW5nIHRoZQorCQkJICogaW50ZXJydXB0IGF0 IHRvcCBvZiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4gYWxyZWFkeS1zZXQKKwkJCSAqIGlu dGVycnVwdCBpcyBtdWNoIGNoZWFwZXIgdGhhbiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVu IHJlc2V0LgogCQkJICovCi0JCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENI X1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkJIFdBSVRfRVZFTlRfTUVT U0FHRV9RVUVVRV9TRU5EKTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJ CQkgV0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX1NFTkQpOwogCi0JCQkvKiBSZXNldCB0aGUg bGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IHNvIHdlIGRvbid0IHNwaW4uICovCisJCQlDbGVh ckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJCS8qIEFuIGludGVycnVwdCBt YXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCiAJCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwpAQCAtMTA1NCw3ICsxMDU2LDcgQEAgc2htX21xX3NlbmRfYnl0 ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwK IAogCQkJLyoKIAkJCSAqIEZvciBlZmZpY2llbmN5LCB3ZSBkb24ndCB1cGRhdGUgdGhlIGJ5 dGVzIHdyaXR0ZW4gaW4gdGhlIHNoYXJlZAotCQkJICogbWVtb3J5IGFuZCBhbHNvIGRvbid0 IHNldCB0aGUgcmVhZGVyJ3MgbGF0Y2ggaGVyZS4gIFJlZmVyIHRvCisJCQkgKiBtZW1vcnkg YW5kIGFsc28gZG9uJ3Qgc2VuZCB0aGUgcmVhZGVyIGludGVycnVwdCBoZXJlLiAgUmVmZXIg dG8KIAkJCSAqIHRoZSBjb21tZW50cyBhdG9wIHRoZSBzaG1fbXFfaGFuZGxlIHN0cnVjdHVy ZSBmb3IgbW9yZQogCQkJICogaW5mb3JtYXRpb24uCiAJCQkgKi8KQEAgLTExNTAsMjIgKzEx NTIsMjIgQEAgc2htX21xX3JlY2VpdmVfYnl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXpl IGJ5dGVzX25lZWRlZCwgYm9vbCBub3dhaXQsCiAJCQltcWgtPm1xaF9jb25zdW1lX3BlbmRp bmcgPSAwOwogCQl9CiAKLQkJLyogU2tpcCBtYW5pcHVsYXRpb24gb2Ygb3VyIGxhdGNoIGlm IG5vd2FpdCA9IHRydWUuICovCisJCS8qIFNraXAgd2FpdGluZyBpZiBub3dhaXQgPSB0cnVl LiAqLwogCQlpZiAobm93YWl0KQogCQkJcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSzsKIAog CQkvKgotCQkgKiBXYWl0IGZvciBvdXIgbGF0Y2ggdG8gYmUgc2V0LiAgSXQgbWlnaHQgYWxy ZWFkeSBiZSBzZXQgZm9yIHNvbWUKKwkJICogV2FpdCBmb3IgdGhlIGludGVycnVwdCB0byBi ZSBzZXQuICBJdCBtaWdodCBhbHJlYWR5IGJlIHNldCBmb3Igc29tZQogCQkgKiB1bnJlbGF0 ZWQgcmVhc29uLCBidXQgdGhhdCdsbCBqdXN0IHJlc3VsdCBpbiBvbmUgZXh0cmEgdHJpcCB0 aHJvdWdoCi0JCSAqIHRoZSBsb29wLiAgSXQncyB3b3J0aCBpdCB0byBhdm9pZCByZXNldHRp bmcgdGhlIGxhdGNoIGF0IHRvcCBvZgotCQkgKiBsb29wLCBiZWNhdXNlIHNldHRpbmcgYW4g YWxyZWFkeS1zZXQgbGF0Y2ggaXMgbXVjaCBjaGVhcGVyIHRoYW4KLQkJICogc2V0dGluZyBv bmUgdGhhdCBoYXMgYmVlbiByZXNldC4KKwkJICogdGhlIGxvb3AuICBJdCdzIHdvcnRoIGl0 IHRvIGF2b2lkIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgYXQgdG9wIG9mCisJCSAqIGxvb3As IGJlY2F1c2Ugc2V0dGluZyBhbiBhbHJlYWR5LXNldCBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVh cGVyIHRoYW4KKwkJICogc2V0dGluZyBvbmUgdGhhdCBoYXMgYmVlbiBjbGVhcmVkLgogCQkg Ki8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElU X09OX1BNX0RFQVRILCAwLAotCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9SRUNF SVZFKTsKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lO VEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRf TUVTU0FHRV9RVUVVRV9SRUNFSVZFKTsKIAotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2Ug ZG9uJ3Qgc3Bpbi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogQ2xlYXIgdGhl IGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiAKIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVk IHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK QEAgLTEyNTAsMTEgKzEyNTIsMTEgQEAgc2htX21xX3dhaXRfaW50ZXJuYWwoc2htX21xICpt cSwgUEdQUk9DICoqcHRyLCBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCX0K IAogCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15 TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkg V0FJVF9FVkVOVF9NRVNTQUdFX1FVRVVFX0lOVEVSTkFMKTsKKwkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsIDAsCisJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9JTlRFUk5BTCk7 CiAKLQkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgc28gd2UgZG9uJ3Qg c3Bpbi4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCS8q IEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcu ICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC0xMjkzLDcgKzEyOTUsNyBAQCBz aG1fbXFfaW5jX2J5dGVzX3JlYWQoc2htX21xICptcSwgU2l6ZSBuKQogCSAqLwogCXNlbmRl ciA9IG1xLT5tcV9zZW5kZXI7CiAJQXNzZXJ0KHNlbmRlciAhPSBOVUxMKTsKLQlTZXRMYXRj aCgmc2VuZGVyLT5wcm9jTGF0Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwsIEdldE51bWJlckZyb21QR1Byb2Moc2VuZGVyKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwppbmRleCBiZWJjOTdlY2ZmZC4uYWIyMmUwYjk4 MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwpAQCAtMTksNiAr MTksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9p bnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAg LTIwNCwxMiArMjA1LDEyIEBAIHBnX3dhaXRfdW50aWxfdGVybWluYXRpb24oaW50IHBpZCwg aW50NjQgdGltZW91dCkKIAkJLyogUHJvY2VzcyBpbnRlcnJ1cHRzLCBpZiBhbnksIGJlZm9y ZSB3YWl0aW5nICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLAotCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkJIHdhaXR0aW1lLAotCQkJCQkJIFdBSVRfRVZF TlRfQkFDS0VORF9URVJNSU5BVElPTik7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgd2FpdHRpbWUsCisJCQkJCQkJIFdBSVRfRVZF TlRfQkFDS0VORF9URVJNSU5BVElPTik7CiAKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJCXJlbWFpbmluZ3RpbWUg LT0gd2FpdHRpbWU7CiAJfSB3aGlsZSAocmVtYWluaW5ndGltZSA+IDApOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaW52YWwuYwppbmRleCA2ZWVhOGU4NzE2OS4uNGE2NmUxYjdmN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgotI2luY2x1ZGUgInN0 b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIK IApAQCAtMzEsOCArMzEsOCBAQCB1aW50NjQJCVNoYXJlZEludmFsaWRNZXNzYWdlQ291bnRl cjsKICAqIHRocm91Z2ggYSBjYWNoZSByZXNldCBleGVyY2lzZS4gIFRoaXMgaXMgZG9uZSBi eSBzZW5kaW5nCiAgKiBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUIHRvIGFueSBiYWNrZW5k IHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KICAqCi0gKiBUaGUgc2lnbmFsIGhhbmRsZXIg d2lsbCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQgd2lsbCBzZXQgdGhlCi0g KiBwcm9jZXNzZXMgbGF0Y2guIFdoZW5ldmVyIHN0YXJ0aW5nIHRvIHJlYWQgZnJvbSB0aGUg Y2xpZW50LCBvciB3aGVuCisgKiBUaGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBzZXQgYW4gaW50 ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQgcmFpc2UgdGhlCisgKiBJTlRFUlJVUFRfR0VORVJB TC4gV2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGllbnQsIG9yIHdoZW4K ICAqIGludGVycnVwdGVkIHdoaWxlIGRvaW5nIHNvLCBQcm9jZXNzQ2xpZW50UmVhZEludGVy cnVwdCgpIHdpbGwgY2FsbAogICogUHJvY2Vzc0NhdGNodXBFdmVudCgpLgogICovCkBAIC0x NDgsNyArMTQ4LDcgQEAgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52 YWxGdW5jdGlvbikgKFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKm0KICAqCiAgKiBXZSB1 c2VkIHRvIGRpcmVjdGx5IGNhbGwgUHJvY2Vzc0NhdGNodXBFdmVudCBkaXJlY3RseSB3aGVu IGlkbGUuIFRoZXNlIGRheXMKICAqIHdlIGp1c3Qgc2V0IGEgZmxhZyB0byBkbyBpdCBsYXRl ciBhbmQgbm90aWZ5IHRoZSBwcm9jZXNzIG9mIHRoYXQgZmFjdCBieQotICogc2V0dGluZyB0 aGUgcHJvY2VzcydzIGxhdGNoLgorICogcmFpc2luZyBJTlRFUlJVUFRfR0VORVJBTC4KICAq Lwogdm9pZAogSGFuZGxlQ2F0Y2h1cEludGVycnVwdCh2b2lkKQpAQCAtMTYxLDcgKzE2MSw3 IEBAIEhhbmRsZUNhdGNodXBJbnRlcnJ1cHQodm9pZCkKIAljYXRjaHVwSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CiAKIAkvKiBtYWtlIHN1cmUgdGhlIGV2ZW50IGlzIHByb2Nlc3NlZCBp biBkdWUgY291cnNlICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCmluZGV4IDVhY2I0NTA4Zjg1Li4xZWY3NjAwNTIyYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9n dXRpbHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgpAQCAtNTk0LDcgKzU5NSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aERhdGFiYXNlKE9pZCBkYmlkKQogICogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoTG9jayBpcyBjYWxsZWQgZnJvbSBQcm9jU2xlZXAoKQogICogdG8gcmVzb2x2ZSBjb25m bGljdHMgd2l0aCBvdGhlciBiYWNrZW5kcyBob2xkaW5nIHJlbGF0aW9uIGxvY2tzLgogICoK LSAqIFRoZSBXYWl0TGF0Y2ggc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAoKQor ICogVGhlIFdhaXRJbnRlcnJ1cHQgc2xlZXAgbm9ybWFsbHkgZG9uZSBpbiBQcm9jU2xlZXAo KQogICogKHdoZW4gbm90IEluSG90U3RhbmRieSkgaXMgcGVyZm9ybWVkIGhlcmUsIGZvciBj b2RlIGNsYXJpdHkuCiAgKgogICogV2UgZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVk aWF0ZWx5IG9yIHNldCBhIHRpbWVvdXQgdG8gd2FrZSB1cyBhdApAQCAtNjk2LDcgKzY5Nywx MCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywg Ym9vbCBsb2dnaW5nX2NvbmZsaWN0KQogCX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQg YnkgdGhlIHJlbGVhc2Ugb2YgdGhlIFJlbGF0aW9uIExvY2sgKi8KLQlQcm9jV2FpdEZvclNp Z25hbChQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJV2FpdEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKKwkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsK KwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAogCS8qCiAJICogRXhpdCBpZiBsdGltZSBpcyByZWFjaGVkLiBUaGVuIGFs bCB0aGUgYmFja2VuZHMgaG9sZGluZyBjb25mbGljdGluZwpAQCAtNzQ1LDcgKzc0OSwxMCBA QCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9v bCBsb2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRpbCB0aGUgcmVsYXRpb24gbG9ja3MgYXJl IHJlbGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQuCiAJCSAqLwogCQlnb3Rfc3RhbmRieV9k ZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVByb2NXYWl0Rm9yU2lnbmFsKFBHX1dBSVRf TE9DSyB8IGxvY2t0YWcubG9ja3RhZ190eXBlKTsKKwkJV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJ CQkJICBQR19XQUlUX0xPQ0sgfCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7CisJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAl9CiAKIGNsZWFudXA6CkBAIC04MzcsOSArODQ0LDE0IEBAIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3VtZSB0aGF0IG9ubHkgVW5w aW5CdWZmZXIoKSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0YWJsaXNoZWQKIAkgKiBh Ym92ZSBjYW4gd2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVyeSgpIGNhbGxlZCBieSB3 YWxyZWNlaXZlciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxlciwgZXRjIGNhbm5vdCBk byB0aGF0IGJlY2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0JICogbGF0Y2ggZnJvbSB0 aGF0IFByb2NXYWl0Rm9yU2lnbmFsKCkgd2FpdHMgb24uCisJICogaW50ZXJydXB0IGZsYWcu IEZJWE1FOiBzZWVtcyBsaWtlIGEgc2hha3kgYXNzdW1wdGlvbi4gV2FrZXVwUmVjb3Zlcnko KQorCSAqIGluZGVlZCB1c2VzIGEgZGlmZmVyZW50IGludGVycnVwdCBmbGFnIChkaWZmZXJl bnQgbGF0Y2ggZWFybGllciksIGJ1dAorCSAqIHRoZSBzaWduYWwgaGFuZGxlcj8/CiAJICov Ci0JUHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwlXYWl0SW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BN X0RFQVRILCAwLAorCQkJCSAgV0FJVF9FVkVOVF9CVUZGRVJfUElOKTsKKwlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAog CWlmIChnb3Rfc3RhbmRieV9kZWxheV90aW1lb3V0KQogCQlTZW5kUmVjb3ZlcnlDb25mbGlj dFdpdGhCdWZmZXJQaW4oUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwppbmRleCA3YzBlNjY5MDBm OS4uMWViYTc2YTE5YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dh aXRldmVudHNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNl dC5jCkBAIC04LDggKzgsOCBAQAogICogcHNlbGVjdCgpIChhcyBvcHBvc2VkIHRvIHBsYWlu IHBvbGwoKS9zZWxlY3QoKSkuCiAgKgogICogWW91IGNhbiB3YWl0IGZvcjoKLSAqIC0gYSBs YXRjaCBiZWluZyBzZXQgZnJvbSBhbm90aGVyIHByb2Nlc3Mgb3IgZnJvbSBzaWduYWwgaGFu ZGxlciBpbiB0aGUgc2FtZQotICogICBwcm9jZXNzIChXTF9MQVRDSF9TRVQpCisgKiAtIGFu IGludGVycnVwdCBmcm9tIGFub3RoZXIgcHJvY2VzcyBvciBmcm9tIHNpZ25hbCBoYW5kbGVy IGluIHRoZSBzYW1lCisgKiAgIHByb2Nlc3MgKFdMX0lOVEVSUlVQVCkKICAqIC0gZGF0YSB0 byBiZWNvbWUgcmVhZGFibGUgb3Igd3JpdGVhYmxlIG9uIGEgc29ja2V0IChXTF9TT0NLRVRf KikKICAqIC0gcG9zdG1hc3RlciBkZWF0aCAoV0xfUE9TVE1BU1RFUl9ERUFUSCBvciBXTF9F WElUX09OX1BNX0RFQVRIKQogICogLSB0aW1lb3V0IChXTF9USU1FT1VUKQpAQCAtMTcsMTUg KzE3LDE2IEBACiAgKiBJbXBsZW1lbnRhdGlvbgogICogLS0tLS0tLS0tLS0tLS0KICAqCi0g KiBUaGUgcG9sbCgpIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIHNvLWNhbGxlZCBzZWxmLXBp cGUgdHJpY2sgdG8gb3ZlcmNvbWUgdGhlCi0gKiByYWNlIGNvbmRpdGlvbiBpbnZvbHZlZCB3 aXRoIHBvbGwoKSBhbmQgc2V0dGluZyBhIGdsb2JhbCBmbGFnIGluIHRoZSBzaWduYWwKLSAq IGhhbmRsZXIuIFdoZW4gYSBsYXRjaCBpcyBzZXQgYW5kIHRoZSBjdXJyZW50IHByb2Nlc3Mg aXMgd2FpdGluZyBmb3IgaXQsIHRoZQotICogc2lnbmFsIGhhbmRsZXIgd2FrZXMgdXAgdGhl IHBvbGwoKSBpbiBXYWl0TGF0Y2ggYnkgd3JpdGluZyBhIGJ5dGUgdG8gYSBwaXBlLgotICog QSBzaWduYWwgYnkgaXRzZWxmIGRvZXNuJ3QgaW50ZXJydXB0IHBvbGwoKSBvbiBhbGwgcGxh dGZvcm1zLCBhbmQgZXZlbiBvbgotICogcGxhdGZvcm1zIHdoZXJlIGl0IGRvZXMsIGEgc2ln bmFsIHRoYXQgYXJyaXZlcyBqdXN0IGJlZm9yZSB0aGUgcG9sbCgpIGNhbGwKLSAqIGRvZXMg bm90IHByZXZlbnQgcG9sbCgpIGZyb20gZW50ZXJpbmcgc2xlZXAuIEFuIGluY29taW5nIGJ5 dGUgb24gYSBwaXBlCi0gKiBob3dldmVyIHJlbGlhYmx5IGludGVycnVwdHMgdGhlIHNsZWVw LCBhbmQgY2F1c2VzIHBvbGwoKSB0byByZXR1cm4KLSAqIGltbWVkaWF0ZWx5IGV2ZW4gaWYg dGhlIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSBwb2xsKCkgYmVnaW5zLgorICogVGhlIHBvbGwo KSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSBzby1jYWxsZWQgc2VsZi1waXBlIHRyaWNrIHRv IG92ZXJjb21lCisgKiB0aGUgcmFjZSBjb25kaXRpb24gaW52b2x2ZWQgd2l0aCBwb2xsKCkg YW5kIHNldHRpbmcgYSBnbG9iYWwgZmxhZyBpbiB0aGUKKyAqIHNpZ25hbCBoYW5kbGVyLiBX aGVuIGFuIGludGVycnVwdCBpcyByZWNlaXZlZCBhbmQgdGhlIGN1cnJlbnQgcHJvY2VzcyBp cworICogd2FpdGluZyBmb3IgaXQsIHRoZSBzaWduYWwgaGFuZGxlciB3YWtlcyB1cCB0aGUg cG9sbCgpIGluIFdhaXRJbnRlcnJ1cHQgYnkKKyAqIHdyaXRpbmcgYSBieXRlIHRvIGEgcGlw ZS4gIEEgc2lnbmFsIGJ5IGl0c2VsZiBkb2Vzbid0IGludGVycnVwdCBwb2xsKCkgb24KKyAq IGFsbCBwbGF0Zm9ybXMsIGFuZCBldmVuIG9uIHBsYXRmb3JtcyB3aGVyZSBpdCBkb2VzLCBh IHNpZ25hbCB0aGF0IGFycml2ZXMKKyAqIGp1c3QgYmVmb3JlIHRoZSBwb2xsKCkgY2FsbCBk b2VzIG5vdCBwcmV2ZW50IHBvbGwoKSBmcm9tIGVudGVyaW5nIHNsZWVwLiBBbgorICogaW5j b21pbmcgYnl0ZSBvbiBhIHBpcGUgaG93ZXZlciByZWxpYWJseSBpbnRlcnJ1cHRzIHRoZSBz bGVlcCwgYW5kIGNhdXNlcworICogcG9sbCgpIHRvIHJldHVybiBpbW1lZGlhdGVseSBldmVu IGlmIHRoZSBzaWduYWwgYXJyaXZlcyBiZWZvcmUgcG9sbCgpCisgKiBiZWdpbnMuCiAgKgog ICogVGhlIGVwb2xsKCkgaW1wbGVtZW50YXRpb24gb3ZlcmNvbWVzIHRoZSByYWNlIHdpdGgg YSBkaWZmZXJlbnQgdGVjaG5pcXVlOiBpdAogICoga2VlcHMgU0lHVVJHIGJsb2NrZWQgYW5k IGNvbnN1bWVzIGZyb20gYSBzaWduYWxmZCgpIGRlc2NyaXB0b3IgaW5zdGVhZC4gIFdlCkBA IC02OCwxMSArNjksMTIgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1lLmgiCisjaW5jbHVk ZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvd2FpdGV2ZW50c2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtMTI3LDEzICsxMjksMTMgQEAgc3RydWN0IFdh aXRFdmVudFNldAogCVdhaXRFdmVudCAgKmV2ZW50czsKIAogCS8qCi0JICogSWYgV0xfTEFU Q0hfU0VUIGlzIHNwZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgbGF0Y2ggaXMgYSBwb2lu dGVyIHRvCi0JICogc2FpZCBsYXRjaCwgYW5kIGxhdGNoX3BvcyB0aGUgb2Zmc2V0IGluIHRo ZSAtPmV2ZW50cyBhcnJheS4gVGhpcyBpcwotCSAqIHVzZWZ1bCBiZWNhdXNlIHdlIGNoZWNr IHRoZSBzdGF0ZSBvZiB0aGUgbGF0Y2ggYmVmb3JlIHBlcmZvcm1pbmcgZG9pbmcKLQkgKiBz eXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCisJICogSWYgV0xfSU5URVJSVVBUIGlzIHNw ZWNpZmllZCBpbiBhbnkgd2FpdCBldmVudCwgaW50ZXJydXB0TWFzayBpcyB0aGUKKwkgKiBp bnRlcnJ1cHRzIHRvIHdhaXQgZm9yLCBhbmQgaW50ZXJydXB0X3BvcyB0aGUgb2Zmc2V0IGlu IHRoZSAtPmV2ZW50cworCSAqIGFycmF5LiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHdlIGNo ZWNrIHRoZSBzdGF0ZSBvZiBwZW5kaW5nIGludGVycnVwdHMKKwkgKiBiZWZvcmUgcGVyZm9y bWluZyBkb2luZyBzeXNjYWxscyByZWxhdGVkIHRvIHdhaXRpbmcuCiAJICovCi0JTGF0Y2gJ ICAgKmxhdGNoOwotCWludAkJCWxhdGNoX3BvczsKKwl1aW50MzIJCWludGVycnVwdF9tYXNr OworCWludAkJCWludGVycnVwdF9wb3M7CiAKIAkvKgogCSAqIFdMX0VYSVRfT05fUE1fREVB VEggaXMgY29udmVydGVkIHRvIFdMX1BPU1RNQVNURVJfREVBVEgsIGJ1dCB0aGlzIGZsYWcK QEAgLTE2Niw3ICsxNjgsNyBAQCBzdHJ1Y3QgV2FpdEV2ZW50U2V0CiB9OwogCiAjaWZuZGVm IFdJTjMyCi0vKiBBcmUgd2UgY3VycmVudGx5IGluIFdhaXRMYXRjaD8gVGhlIHNpZ25hbCBo YW5kbGVyIHdvdWxkIGxpa2UgdG8ga25vdy4gKi8KKy8qIEFyZSB3ZSBjdXJyZW50bHkgb24g YSBXYWl0RXZlbnRTZXQ/IFRoZSBzaWduYWwgaGFuZGxlciB3b3VsZCBsaWtlIHRvIGtub3cu ICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHdhaXRpbmcgPSBmYWxzZTsKICNl bmRpZgogCkBAIC0xODIsOSArMTg0LDE2IEBAIHN0YXRpYyBpbnQJc2VsZnBpcGVfd3JpdGVm ZCA9IC0xOwogCiAvKiBQcm9jZXNzIG93bmluZyB0aGUgc2VsZi1waXBlIC0tLSBuZWVkZWQg Zm9yIGNoZWNraW5nIHB1cnBvc2VzICovCiBzdGF0aWMgaW50CXNlbGZwaXBlX293bmVyX3Bp ZCA9IDA7CisjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCitzdGF0aWMgSEFORExF IExvY2FsSW50ZXJydXB0V2FrZXVwRXZlbnQ7CisjZW5kaWYKIAogLyogUHJpdmF0ZSBmdW5j dGlvbiBwcm90b3R5cGVzICovCi1zdGF0aWMgdm9pZCBsYXRjaF9zaWd1cmdfaGFuZGxlcihT SUdOQUxfQVJHUyk7CisKKyNpZmRlZiBXQUlUX1VTRV9TRUxGX1BJUEUKK3N0YXRpYyB2b2lk IGludGVycnVwdF9zaWd1cmdfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgdm9pZCBz ZW5kU2VsZlBpcGVCeXRlKHZvaWQpOwogI2VuZGlmCiAKQEAgLTIzNCw3ICsyNDMsNyBAQCBS ZXNvdXJjZU93bmVyRm9yZ2V0V2FpdEV2ZW50U2V0KFJlc291cmNlT3duZXIgb3duZXIsIFdh aXRFdmVudFNldCAqc2V0KQogICogSW5pdGlhbGl6ZSB0aGUgcHJvY2Vzcy1sb2NhbCB3YWl0 IGV2ZW50IGluZnJhc3RydWN0dXJlLgogICoKICAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25j ZSBkdXJpbmcgc3RhcnR1cCBvZiBhbnkgcHJvY2VzcyB0aGF0IGNhbiB3YWl0IG9uCi0gKiBs YXRjaGVzLCBiZWZvcmUgaXQgaXNzdWVzIGFueSBJbml0TGF0Y2goKSBvciBPd25MYXRjaCgp IGNhbGxzLgorICogaW50ZXJydXB0cy4KICAqLwogdm9pZAogSW5pdGlhbGl6ZVdhaXRFdmVu dFN1cHBvcnQodm9pZCkKQEAgLTI4NCwxMiArMjkzLDEyIEBAIEluaXRpYWxpemVXYWl0RXZl bnRTdXBwb3J0KHZvaWQpCiAKIAkvKgogCSAqIFNldCB1cCB0aGUgc2VsZi1waXBlIHRoYXQg YWxsb3dzIGEgc2lnbmFsIGhhbmRsZXIgdG8gd2FrZSB1cCB0aGUKLQkgKiBwb2xsKCkvZXBv bGxfd2FpdCgpIGluIFdhaXRMYXRjaC4gTWFrZSB0aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2lu Zywgc28KLQkgKiB0aGF0IFNldExhdGNoIHdvbid0IGJsb2NrIGlmIHRoZSBldmVudCBoYXMg YWxyZWFkeSBiZWVuIHNldCBtYW55IHRpbWVzCi0JICogZmlsbGluZyB0aGUga2VybmVsIGJ1 ZmZlci4gTWFrZSB0aGUgcmVhZC1lbmQgbm9uLWJsb2NraW5nIHRvbywgc28gdGhhdAotCSAq IHdlIGNhbiBlYXNpbHkgY2xlYXIgdGhlIHBpcGUgYnkgcmVhZGluZyB1bnRpbCBFQUdBSU4g b3IgRVdPVUxEQkxPQ0suCi0JICogQWxzbywgbWFrZSBib3RoIEZEcyBjbG9zZS1vbi1leGVj LCBzaW5jZSB3ZSBzdXJlbHkgZG8gbm90IHdhbnQgYW55Ci0JICogY2hpbGQgcHJvY2Vzc2Vz IG1lc3Npbmcgd2l0aCB0aGVtLgorCSAqIHBvbGwoKS9lcG9sbF93YWl0KCkgaW4gV2FpdElu dGVycnVwdC4gTWFrZSB0aGUgd3JpdGUtZW5kIG5vbi1ibG9ja2luZywKKwkgKiBzbyB0aGF0 IFNlbmRJbnRlcnJ1cHQgd29uJ3QgYmxvY2sgaWYgdGhlIGV2ZW50IGhhcyBhbHJlYWR5IGJl ZW4gc2V0CisJICogbWFueSB0aW1lcyBmaWxsaW5nIHRoZSBrZXJuZWwgYnVmZmVyLiBNYWtl IHRoZSByZWFkLWVuZCBub24tYmxvY2tpbmcKKwkgKiB0b28sIHNvIHRoYXQgd2UgY2FuIGVh c2lseSBjbGVhciB0aGUgcGlwZSBieSByZWFkaW5nIHVudGlsIEVBR0FJTiBvcgorCSAqIEVX T1VMREJMT0NLLiBBbHNvLCBtYWtlIGJvdGggRkRzIGNsb3NlLW9uLWV4ZWMsIHNpbmNlIHdl IHN1cmVseSBkbyBub3QKKwkgKiB3YW50IGFueSBjaGlsZCBwcm9jZXNzZXMgbWVzc2luZyB3 aXRoIHRoZW0uCiAJICovCiAJaWYgKHBpcGUocGlwZWZkKSA8IDApCiAJCWVsb2coRkFUQUws ICJwaXBlKCkgZmFpbGVkOiAlbSIpOwpAQCAtMzEwLDcgKzMxOSw3IEBAIEluaXRpYWxpemVX YWl0RXZlbnRTdXBwb3J0KHZvaWQpCiAJUmVzZXJ2ZUV4dGVybmFsRkQoKTsKIAlSZXNlcnZl RXh0ZXJuYWxGRCgpOwogCi0JcHFzaWduYWwoU0lHVVJHLCBsYXRjaF9zaWd1cmdfaGFuZGxl cik7CisJcHFzaWduYWwoU0lHVVJHLCBpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIpOwogI2Vu ZGlmCiAKICNpZmRlZiBXQUlUX1VTRV9TSUdOQUxGRApAQCAtMzQ4LDYgKzM1NywxMiBAQCBJ bml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKQogCS8qIElnbm9yZSBTSUdVUkcsIGJl Y2F1c2Ugd2UnbGwgcmVjZWl2ZSBpdCB2aWEga3F1ZXVlLiAqLwogCXBxc2lnbmFsKFNJR1VS RywgU0lHX0lHTik7CiAjZW5kaWYKKworI2lmZGVmIFdBSVRfVVNFX1dJTjMyCisJTG9jYWxJ bnRlcnJ1cHRXYWtldXBFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBO VUxMKTsKKwlpZiAoTG9jYWxJbnRlcnJ1cHRXYWtldXBFdmVudCA9PSBOVUxMKQorCQllbG9n KEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RF cnJvcigpKTsKKyNlbmRpZgogfQogCiAvKgpAQCAtNDExLDcgKzQyNiw4IEBAIENyZWF0ZVdh aXRFdmVudFNldChSZXNvdXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cykKIAlkYXRh ICs9IE1BWEFMSUdOKHNpemVvZihIQU5ETEUpICogbmV2ZW50cyk7CiAjZW5kaWYKIAotCXNl dC0+bGF0Y2ggPSBOVUxMOworCXNldC0+aW50ZXJydXB0X21hc2sgPSAwOworCXNldC0+aW50 ZXJydXB0X3BvcyA9IC0xOwogCXNldC0+bmV2ZW50c19zcGFjZSA9IG5ldmVudHM7CiAJc2V0 LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVhdGggPSBmYWxzZTsKIApAQCAtNDk2LDkgKzUxMiw5 IEBAIEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpCiAJCSBjdXJfZXZlbnQg PCAoc2V0LT5ldmVudHMgKyBzZXQtPm5ldmVudHMpOwogCQkgY3VyX2V2ZW50KyspCiAJewot CQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpCisJCWlmIChjdXJfZXZl bnQtPmV2ZW50cyAmIFdMX0lOVEVSUlVQVCkKIAkJewotCQkJLyogdXNlcyB0aGUgbGF0Y2gn cyBIQU5ETEUgKi8KKwkJCS8qIHVzZXMgdGhlIHByb2Nlc3MncyB3YWtldXAgSEFORExFICov CiAJCX0KIAkJZWxzZSBpZiAoY3VyX2V2ZW50LT5ldmVudHMgJiBXTF9QT1NUTUFTVEVSX0RF QVRIKQogCQl7CkBAIC01MzUsNyArNTUxLDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9y ayhXYWl0RXZlbnRTZXQgKnNldCkKIAogLyogLS0tCiAgKiBBZGQgYW4gZXZlbnQgdG8gdGhl IHNldC4gUG9zc2libGUgZXZlbnRzIGFyZToKLSAqIC0gV0xfTEFUQ0hfU0VUOiBXYWl0IGZv ciB0aGUgbGF0Y2ggdG8gYmUgc2V0CisgKiAtIFdMX0lOVEVSUlVQVDogV2FpdCBmb3IgdGhl IGludGVycnVwdCB0byBiZSBzZXQKICAqIC0gV0xfUE9TVE1BU1RFUl9ERUFUSDogV2FpdCBm b3IgcG9zdG1hc3RlciB0byBkaWUKICAqIC0gV0xfU09DS0VUX1JFQURBQkxFOiBXYWl0IGZv ciBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLAogICoJIGNhbiBiZSBjb21iaW5lZCBpbiBv bmUgZXZlbnQgd2l0aCBvdGhlciBXTF9TT0NLRVRfKiBldmVudHMKQEAgLTU1MywxMCArNTY5 LDYgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCkKICAq IFJldHVybnMgdGhlIG9mZnNldCBpbiBXYWl0RXZlbnRTZXQtPmV2ZW50cyAoc3RhcnRpbmcg ZnJvbSAwKSwgd2hpY2ggY2FuIGJlCiAgKiB1c2VkIHRvIG1vZGlmeSBwcmV2aW91c2x5IGFk ZGVkIHdhaXQgZXZlbnRzIHVzaW5nIE1vZGlmeVdhaXRFdmVudCgpLgogICoKLSAqIEluIHRo ZSBXTF9MQVRDSF9TRVQgY2FzZSB0aGUgbGF0Y2ggbXVzdCBiZSBvd25lZCBieSB0aGUgY3Vy cmVudCBwcm9jZXNzLAotICogaS5lLiBpdCBtdXN0IGJlIGEgcHJvY2Vzcy1sb2NhbCBsYXRj aCBpbml0aWFsaXplZCB3aXRoIEluaXRMYXRjaCwgb3IgYQotICogc2hhcmVkIGxhdGNoIGFz c29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzIGJ5IGNhbGxpbmcgT3duTGF0Y2gu Ci0gKgogICogSW4gdGhlIFdMX1NPQ0tFVF9SRUFEQUJMRS9XUklURUFCTEUvQ09OTkVDVEVE L0FDQ0VQVCBjYXNlcywgRU9GIGFuZCBlcnJvcgogICogY29uZGl0aW9ucyBjYXVzZSB0aGUg c29ja2V0IHRvIGJlIHJlcG9ydGVkIGFzIHJlYWRhYmxlL3dyaXRhYmxlL2Nvbm5lY3RlZCwK ICAqIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gZGVhbCB3aXRoIHRoZSBjb25kaXRpb24uCkBA IC01NjYsNyArNTc4LDcgQEAgRnJlZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRT ZXQgKnNldCkKICAqIGV2ZW50cy4KICAqLwogaW50Ci1BZGRXYWl0RXZlbnRUb1NldChXYWl0 RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRj aCwKK0FkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRz LCBwZ3NvY2tldCBmZCwgdWludDMyIGludGVycnVwdE1hc2ssCiAJCQkJICB2b2lkICp1c2Vy X2RhdGEpCiB7CiAJV2FpdEV2ZW50ICAqZXZlbnQ7CkBAIC01ODAsMTkgKzU5MiwxNiBAQCBB ZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdz b2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIAkJc2V0LT5leGl0X29uX3Bvc3RtYXN0ZXJfZGVh dGggPSB0cnVlOwogCX0KIAotCWlmIChsYXRjaCkKLQl7Ci0JCWlmIChsYXRjaC0+b3duZXJf cGlkICE9IE15UHJvY1BpZCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBhIGxh dGNoIG93bmVkIGJ5IGFub3RoZXIgcHJvY2VzcyIpOwotCQlpZiAoc2V0LT5sYXRjaCkKLQkJ CWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBtb3JlIHRoYW4gb25lIGxhdGNoIik7Ci0J CWlmICgoZXZlbnRzICYgV0xfTEFUQ0hfU0VUKSAhPSBXTF9MQVRDSF9TRVQpCi0JCQllbG9n KEVSUk9SLCAibGF0Y2ggZXZlbnRzIG9ubHkgc3VwcG9ydCBiZWluZyBzZXQiKTsKLQl9Ci0J ZWxzZQorCS8qCisJICogSXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgdG8gd2FpdCBmb3Ig V0xfSU5URVJSVVBUIHdpdGggZW1wdHkKKwkgKiBpbnRlcnJ1cHRNYXNrLCBidXQgd2UgYWxs b3cgaXQgc28gdGhhdCB5b3UgY2FuIHVzZSBNb2RpZnlFdmVudCB0byBzZXQKKwkgKiB0aGUg aW50ZXJydXB0TWFzayBsYXRlci4gTm9uLXplcm8gaW50ZXJydXB0TWFzayBkb2Vzbid0IG1h a2Ugc2Vuc2UKKwkgKiB3aXRob3V0IFdMX0lOVEVSUlVQVCwgaG93ZXZlci4KKwkgKi8KKwlp ZiAoaW50ZXJydXB0TWFzayAhPSAwKQogCXsKLQkJaWYgKGV2ZW50cyAmIFdMX0xBVENIX1NF VCkKLQkJCWVsb2coRVJST1IsICJjYW5ub3Qgd2FpdCBvbiBsYXRjaCB3aXRob3V0IGEgc3Bl Y2lmaWVkIGxhdGNoIik7CisJCWlmICgoZXZlbnRzICYgV0xfSU5URVJSVVBUKSAhPSBXTF9J TlRFUlJVUFQpCisJCQllbG9nKEVSUk9SLCAiaW50ZXJydXB0ZWQgZXZlbnRzIG9ubHkgc3Vw cG9ydCBiZWluZyBzZXQiKTsKIAl9CiAKIAkvKiB3YWl0aW5nIGZvciBzb2NrZXQgcmVhZGlu ZXNzIHdpdGhvdXQgYSBzb2NrZXQgaW5kaWNhdGVzIGEgYnVnICovCkBAIC02MDgsMTAgKzYx NywxMCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2 ZW50cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIAlldmVudC0+cmVzZXQgPSBmYWxz ZTsKICNlbmRpZgogCi0JaWYgKGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50 cyA9PSBXTF9JTlRFUlJVUFQpCiAJewotCQlzZXQtPmxhdGNoID0gbGF0Y2g7Ci0JCXNldC0+ bGF0Y2hfcG9zID0gZXZlbnQtPnBvczsKKwkJc2V0LT5pbnRlcnJ1cHRfbWFzayA9IGludGVy cnVwdE1hc2s7CisJCXNldC0+aW50ZXJydXB0X3BvcyA9IGV2ZW50LT5wb3M7CiAjaWYgZGVm aW5lZChXQUlUX1VTRV9TRUxGX1BJUEUpCiAJCWV2ZW50LT5mZCA9IHNlbGZwaXBlX3JlYWRm ZDsKICNlbGlmIGRlZmluZWQoV0FJVF9VU0VfU0lHTkFMRkQpCkBAIC02NDUsMTQgKzY1NCwx NCBAQCBBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRTZXQgKnNldCwgdWludDMyIGV2ZW50 cywgcGdzb2NrZXQgZmQsIExhdGNoICpsYXRjaCwKIH0KIAogLyoKLSAqIENoYW5nZSB0aGUg ZXZlbnQgbWFzayBhbmQsIGluIHRoZSBXTF9MQVRDSF9TRVQgY2FzZSwgdGhlIGxhdGNoIGFz c29jaWF0ZWQKLSAqIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBsYXRjaCBtYXkgYmUgY2hh bmdlZCB0byBOVUxMIHRvIGRpc2FibGUgdGhlIGxhdGNoCi0gKiB0ZW1wb3JhcmlseSwgYW5k IHRoZW4gc2V0IGJhY2sgdG8gYSBsYXRjaCBsYXRlci4KKyAqIENoYW5nZSB0aGUgZXZlbnQg bWFzayBhbmQsIGluIHRoZSBXTF9JTlRFUlJVUFQgY2FzZSwgdGhlIGludGVycnVwdCBtYXNr CisgKiBhc3NvY2lhdGVkIHdpdGggdGhlIFdhaXRFdmVudC4gIFRoZSBpbnRlcnJ1cHQgbWFz ayBtYXkgYmUgY2hhbmdlZCB0byAwIHRvCisgKiBkaXNhYmxlIHRoZSB3YWtldXBzIG9uIGlu dGVycnVwdHMgdGVtcG9yYXJpbHksIGFuZCB0aGVuIHNldCBiYWNrIGxhdGVyLgogICoKICAq ICdwb3MnIGlzIHRoZSBpZCByZXR1cm5lZCBieSBBZGRXYWl0RXZlbnRUb1NldC4KICAqLwog dm9pZAotTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0LCBpbnQgcG9zLCB1aW50 MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCitNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0 ICpzZXQsIGludCBwb3MsIHVpbnQzMiBldmVudHMsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQog ewogCVdhaXRFdmVudCAgKmV2ZW50OwogI2lmIGRlZmluZWQoV0FJVF9VU0VfS1FVRVVFKQpA QCAtNjg4LDM0ICs2OTcsMjggQEAgTW9kaWZ5V2FpdEV2ZW50KFdhaXRFdmVudFNldCAqc2V0 LCBpbnQgcG9zLCB1aW50MzIgZXZlbnRzLCBMYXRjaCAqbGF0Y2gpCiAJICogd2FpdGluZyBv biB3cml0ZXMuCiAJICovCiAJaWYgKGV2ZW50cyA9PSBldmVudC0+ZXZlbnRzICYmCi0JCSgh KGV2ZW50LT5ldmVudHMgJiBXTF9MQVRDSF9TRVQpIHx8IHNldC0+bGF0Y2ggPT0gbGF0Y2gp KQorCQkoIShldmVudC0+ZXZlbnRzICYgV0xfSU5URVJSVVBUKSB8fCBzZXQtPmludGVycnVw dF9tYXNrID09IGludGVycnVwdE1hc2spKQogCQlyZXR1cm47CiAKLQlpZiAoZXZlbnQtPmV2 ZW50cyAmIFdMX0xBVENIX1NFVCAmJiBldmVudHMgIT0gZXZlbnQtPmV2ZW50cykKLQkJZWxv ZyhFUlJPUiwgImNhbm5vdCBtb2RpZnkgbGF0Y2ggZXZlbnQiKTsKKwlpZiAoZXZlbnQtPmV2 ZW50cyAmIFdMX0lOVEVSUlVQVCAmJiBldmVudHMgIT0gZXZlbnQtPmV2ZW50cykKKwkJZWxv ZyhFUlJPUiwgImNhbm5vdCBtb2RpZnkgaW50ZXJydXB0cyBldmVudCIpOwogCiAJLyogRklY TUU6IHZhbGlkYXRlIGV2ZW50IG1hc2sgKi8KIAlldmVudC0+ZXZlbnRzID0gZXZlbnRzOwog Ci0JaWYgKGV2ZW50cyA9PSBXTF9MQVRDSF9TRVQpCisJaWYgKGV2ZW50cyA9PSBXTF9JTlRF UlJVUFQpCiAJewotCQlpZiAobGF0Y2ggJiYgbGF0Y2gtPm93bmVyX3BpZCAhPSBNeVByb2NQ aWQpCi0JCQllbG9nKEVSUk9SLCAiY2Fubm90IHdhaXQgb24gYSBsYXRjaCBvd25lZCBieSBh bm90aGVyIHByb2Nlc3MiKTsKLQkJc2V0LT5sYXRjaCA9IGxhdGNoOworCQlzZXQtPmludGVy cnVwdF9tYXNrID0gaW50ZXJydXB0TWFzazsKIAogCQkvKgotCQkgKiBPbiBVbml4LCB3ZSBk b24ndCBuZWVkIHRvIG1vZGlmeSB0aGUga2VybmVsIG9iamVjdCBiZWNhdXNlIHRoZQotCQkg KiB1bmRlcmx5aW5nIHBpcGUgKGlmIHRoZXJlIGlzIG9uZSkgaXMgdGhlIHNhbWUgZm9yIGFs bCBsYXRjaGVzIHNvIHdlCi0JCSAqIGNhbiByZXR1cm4gaW1tZWRpYXRlbHkuICBPbiBXaW5k b3dzLCB3ZSBuZWVkIHRvIHVwZGF0ZSBvdXIgYXJyYXkgb2YKLQkJICogaGFuZGxlcywgYnV0 IHdlIGxlYXZlIHRoZSBvbGQgb25lIGluIHBsYWNlIGFuZCB0b2xlcmF0ZSBzcHVyaW91cwot CQkgKiB3YWtldXBzIGlmIHRoZSBsYXRjaCBpcyBkaXNhYmxlZC4KKwkJICogV2UgZG9uJ3Qg Ym90aGVyIHRvIGFkanVzdCB0aGUgZXZlbnQgd2hlbiB0aGUgaW50ZXJydXB0IG1hc2sKKwkJ ICogY2hhbmdlcy4gIEl0IG1lYW5zIHRoYXQgd2hlbiBpbnRlcnJ1cHQgbWFzayBpcyBzZXQg dG8gMCwgd2Ugd2lsbAorCQkgKiBsaXN0ZW4gb24gdGhlIGtlcm5lbCBvYmplY3QgdW5uZWNl c3NhcmlseSwgYW5kIG1pZ2h0IGdldCBzb21lCisJCSAqIHNwdXJpb3VzIHdha2V1cHMuIFRo ZSBpbnRlcnJ1cHQgc2VuZGluZyBjb2RlIHNob3VsZCBub3Qgd2FrZSB1cyB1cAorCQkgKiBp ZiB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBiaXQgaXMgbm90IGFybWVkLCB0aG91Z2gs IHNvIGl0CisJCSAqIHNob3VsZCBiZSByYXJlLgogCQkgKi8KLSNpZiBkZWZpbmVkKFdBSVRf VVNFX1dJTjMyKQotCQlpZiAoIWxhdGNoKQotCQkJcmV0dXJuOwotI2Vsc2UKIAkJcmV0dXJu OwotI2VuZGlmCiAJfQogCiAjaWYgZGVmaW5lZChXQUlUX1VTRV9FUE9MTCkKQEAgLTc0NSw5 ICs3NDgsOCBAQCBXYWl0RXZlbnRBZGp1c3RFcG9sbChXYWl0RXZlbnRTZXQgKnNldCwgV2Fp dEV2ZW50ICpldmVudCwgaW50IGFjdGlvbikKIAllcG9sbF9ldi5ldmVudHMgPSBFUE9MTEVS UiB8IEVQT0xMSFVQOwogCiAJLyogcHJlcGFyZSBwb2xsZmQgZW50cnkgb25jZSAqLwotCWlm IChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9 PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKIAkJ ZXBvbGxfZXYuZXZlbnRzIHw9IEVQT0xMSU47CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVu dHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCkKQEAgLTc5NCw5ICs3OTYsOCBAQCBXYWl0RXZl bnRBZGp1c3RQb2xsKFdhaXRFdmVudFNldCAqc2V0LCBXYWl0RXZlbnQgKmV2ZW50KQogCXBv bGxmZC0+ZmQgPSBldmVudC0+ZmQ7CiAKIAkvKiBwcmVwYXJlIHBvbGxmZCBlbnRyeSBvbmNl ICovCi0JaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWlmIChldmVudC0+ ZXZlbnRzID09IFdMX0lOVEVSUlVQVCkKIAl7Ci0JCUFzc2VydChzZXQtPmxhdGNoICE9IE5V TEwpOwogCQlwb2xsZmQtPmV2ZW50cyA9IFBPTExJTjsKIAl9CiAJZWxzZSBpZiAoZXZlbnQt PmV2ZW50cyA9PSBXTF9QT1NUTUFTVEVSX0RFQVRIKQpAQCAtODU4LDkgKzg1OSw5IEBAIFdh aXRFdmVudEFkanVzdEtxdWV1ZUFkZFBvc3RtYXN0ZXIoc3RydWN0IGtldmVudCAqa19ldiwg V2FpdEV2ZW50ICpldmVudCkKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCi1XYWl0RXZlbnRB ZGp1c3RLcXVldWVBZGRMYXRjaChzdHJ1Y3Qga2V2ZW50ICprX2V2LCBXYWl0RXZlbnQgKmV2 ZW50KQorV2FpdEV2ZW50QWRqdXN0S3F1ZXVlQWRkSW50ZXJydXB0V2FrZXVwKHN0cnVjdCBr ZXZlbnQgKmtfZXYsIFdhaXRFdmVudCAqZXZlbnQpCiB7Ci0JLyogRm9yIG5vdyBsYXRjaCBj YW4gb25seSBiZSBhZGRlZCwgbm90IHJlbW92ZWQuICovCisJLyogRm9yIG5vdyBpbnRlcnJ1 cHQgd2FrZXVwIGNhbiBvbmx5IGJlIGFkZGVkLCBub3QgcmVtb3ZlZC4gKi8KIAlrX2V2LT5p ZGVudCA9IFNJR1VSRzsKIAlrX2V2LT5maWx0ZXIgPSBFVkZJTFRfU0lHTkFMOwogCWtfZXYt PmZsYWdzID0gRVZfQUREOwpAQCAtODg2LDggKzg4Nyw3IEBAIFdhaXRFdmVudEFkanVzdEtx dWV1ZShXYWl0RXZlbnRTZXQgKnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IG9sZF9ldmVu dHMpCiAJaWYgKG9sZF9ldmVudHMgPT0gZXZlbnQtPmV2ZW50cykKIAkJcmV0dXJuOwogCi0J QXNzZXJ0KGV2ZW50LT5ldmVudHMgIT0gV0xfTEFUQ0hfU0VUIHx8IHNldC0+bGF0Y2ggIT0g TlVMTCk7Ci0JQXNzZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUIHx8CisJQXNz ZXJ0KGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUIHx8CiAJCSAgIGV2ZW50LT5ldmVu dHMgPT0gV0xfUE9TVE1BU1RFUl9ERUFUSCB8fAogCQkgICAoZXZlbnQtPmV2ZW50cyAmIChX TF9TT0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCSBXTF9TT0NLRVRfV1JJVEVBQkxFIHwKQEAg LTkwMiwxMCArOTAyLDEwIEBAIFdhaXRFdmVudEFkanVzdEtxdWV1ZShXYWl0RXZlbnRTZXQg KnNldCwgV2FpdEV2ZW50ICpldmVudCwgaW50IG9sZF9ldmVudHMpCiAJCSAqLwogCQlXYWl0 RXZlbnRBZGp1c3RLcXVldWVBZGRQb3N0bWFzdGVyKCZrX2V2W2NvdW50KytdLCBldmVudCk7 CiAJfQotCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUKQorCWVsc2Ug aWYgKGV2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUKQogCXsKLQkJLyogV2UgZGV0ZWN0 IGxhdGNoIHdha2V1cCB1c2luZyBhIHNpZ25hbCBldmVudC4gKi8KLQkJV2FpdEV2ZW50QWRq dXN0S3F1ZXVlQWRkTGF0Y2goJmtfZXZbY291bnQrK10sIGV2ZW50KTsKKwkJLyogV2UgZGV0 ZWN0IGludGVycnVwdCB3YWtldXAgdXNpbmcgYSBzaWduYWwgZXZlbnQuICovCisJCVdhaXRF dmVudEFkanVzdEtxdWV1ZUFkZEludGVycnVwdFdha2V1cCgma19ldltjb3VudCsrXSwgZXZl bnQpOwogCX0KIAllbHNlCiAJewpAQCAtOTgzLDEwICs5ODMsMTMgQEAgV2FpdEV2ZW50QWRq dXN0V2luMzIoV2FpdEV2ZW50U2V0ICpzZXQsIFdhaXRFdmVudCAqZXZlbnQpCiB7CiAJSEFO RExFCSAgICpoYW5kbGUgPSAmc2V0LT5oYW5kbGVzW2V2ZW50LT5wb3MgKyAxXTsKIAotCWlm IChldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwlpZiAoZXZlbnQtPmV2ZW50cyA9 PSBXTF9JTlRFUlJVUFQpCiAJewotCQlBc3NlcnQoc2V0LT5sYXRjaCAhPSBOVUxMKTsKLQkJ KmhhbmRsZSA9IHNldC0+bGF0Y2gtPmV2ZW50OworCQkvKgorCQkgKiBXZSByZWdpc3RlciB0 aGUgZXZlbnQgZXZlbiBpZiBpbnRlcnJ1cHRfbWFzayBpcyB6ZXJvLiBXZSBtaWdodCBnZXQK KwkJICogc29tZSBzcHVyaW91cyB3YWtldXBzLCBidXQgdGhhdCdzIE9LCisJCSAqLworCQkq aGFuZGxlID0gTXlQcm9jID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExvY2Fs SW50ZXJydXB0V2FrZXVwRXZlbnQ7CiAJfQogCWVsc2UgaWYgKGV2ZW50LT5ldmVudHMgPT0g V0xfUE9TVE1BU1RFUl9ERUFUSCkKIAl7CkBAIC0xMDQyLDYgKzEwNDUsNyBAQCBXYWl0RXZl bnRTZXRXYWl0KFdhaXRFdmVudFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJaW5zdHJfdGlt ZQlzdGFydF90aW1lOwogCWluc3RyX3RpbWUJY3VyX3RpbWU7CiAJbG9uZwkJY3VyX3RpbWVv dXQgPSAtMTsKKwlib29sCQlzbGVlcGluZ19mbGFnX2FybWVkID0gZmFsc2U7CiAKIAlBc3Nl cnQobmV2ZW50cyA+IDApOwogCkBAIC0xMDYzLDY0ICsxMDY3LDU3IEBAIFdhaXRFdmVudFNl dFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKICNpZm5kZWYgV0lOMzIK IAl3YWl0aW5nID0gdHJ1ZTsKICNlbHNlCi0JLyogRW5zdXJlIHRoYXQgc2lnbmFscyBhcmUg c2VydmljZWQgZXZlbiBpZiBsYXRjaCBpcyBhbHJlYWR5IHNldCAqLworCS8qIEVuc3VyZSB0 aGF0IHNpZ25hbHMgYXJlIHNlcnZpY2VkIGV2ZW4gaWYgaW50ZXJydXB0IGlzIGFscmVhZHkg cGVuZGluZyAqLwogCXBnd2luMzJfZGlzcGF0Y2hfcXVldWVkX3NpZ25hbHMoKTsKICNlbmRp ZgotCXdoaWxlIChyZXR1cm5lZF9ldmVudHMgPT0gMCkKKworCS8qCisJICogQXRvbWljYWxs eSBjaGVjayBpZiB0aGUgaW50ZXJydXB0IGlzIGFscmVhZHkgcGVuZGluZyBhbmQgYWR2ZXJ0 aXNlIHRoYXQKKwkgKiB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgc2xlZXBpbmcuIElmIGl0IHdh cyBhbHJlYWR5IHBlbmRpbmcsIGF2b2lkCisJICogYmxvY2tpbmcgYWx0b2dldGhlci4KKwkg KgorCSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgaW50ZXJydXB0IGZsYWcgYmV0d2VlbiB0aGlz IGFuZCB0aGUKKwkgKiBXYWl0RXZlbnRTZXRXYWl0QmxvY2soKSBiZWxvdywgdGhlIHNldHRl ciB3aWxsIHdyaXRlIGEgYnl0ZSB0byB0aGUgcGlwZQorCSAqIChvciBzaWduYWwgdXMgYW5k IHRoZSBzaWduYWwgaGFuZGxlciB3aWxsIGRvIHRoYXQpLCBhbmQgdGhlIHJlYWRpbmVzcwor CSAqIHJvdXRpbmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCisJICovCisJaWYgKHNldC0+ aW50ZXJydXB0X21hc2sgIT0gMCkKIAl7Ci0JCWludAkJCXJjOworCQl1aW50MzIJCW9sZF9t YXNrOworCQlib29sCQlhbHJlYWR5X3BlbmRpbmcgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBD aGVjayBpZiB0aGUgbGF0Y2ggaXMgc2V0IGFscmVhZHkgZmlyc3QuICBJZiBzbywgd2UgZWl0 aGVyIGV4aXQKLQkJICogaW1tZWRpYXRlbHkgb3IgYXNrIHRoZSBrZXJuZWwgZm9yIGZ1cnRo ZXIgZXZlbnRzIGF2YWlsYWJsZSByaWdodAotCQkgKiBub3cgd2l0aG91dCB3YWl0aW5nLCBk ZXBlbmRpbmcgb24gaG93IG1hbnkgZXZlbnRzIHRoZSBjYWxsZXIgd2FudHMuCi0JCSAqCi0J CSAqIElmIHNvbWVvbmUgc2V0cyB0aGUgbGF0Y2ggYmV0d2VlbiB0aGlzIGFuZCB0aGUKLQkJ ICogV2FpdEV2ZW50U2V0V2FpdEJsb2NrKCkgYmVsb3csIHRoZSBzZXR0ZXIgd2lsbCB3cml0 ZSBhIGJ5dGUgdG8gdGhlCi0JCSAqIHBpcGUgKG9yIHNpZ25hbCB1cyBhbmQgdGhlIHNpZ25h bCBoYW5kbGVyIHdpbGwgZG8gdGhhdCksIGFuZCB0aGUKLQkJICogcmVhZGluZXNzIHJvdXRp bmUgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuCi0JCSAqCi0JCSAqIE9uIHVuaXgsIElmIHRo ZXJlJ3MgYSBwZW5kaW5nIGJ5dGUgaW4gdGhlIHNlbGYgcGlwZSwgd2UnbGwgbm90aWNlCi0J CSAqIHdoZW5ldmVyIGJsb2NraW5nLiBPbmx5IGNsZWFyaW5nIHRoZSBwaXBlIGluIHRoYXQg Y2FzZSBhdm9pZHMKLQkJICogaGF2aW5nIHRvIGRyYWluIGl0IGV2ZXJ5IHRpbWUgV2FpdExh dGNoT3JTb2NrZXQoKSBpcyB1c2VkLiBTaG91bGQKLQkJICogdGhlIHBpcGUtYnVmZmVyIGZp bGwgdXAgd2UncmUgc3RpbGwgb2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMgaW4KLQkJICogbm9u YmxvY2tpbmcgbW9kZS4gSXQncyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1 c2UgdGhlCi0JCSAqIHNlbGYgcGlwZSBpc24ndCBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2Nr aW5nICh3YWl0aW5nID0gdHJ1ZSksIG9yCi0JCSAqIGZyb20gaW5zaWRlIGEgc2lnbmFsIGhh bmRsZXIgaW4gbGF0Y2hfc2lndXJnX2hhbmRsZXIoKS4KLQkJICoKLQkJICogT24gd2luZG93 cywgd2UnbGwgYWxzbyBub3RpY2UgaWYgdGhlcmUncyBhIHBlbmRpbmcgZXZlbnQgZm9yIHRo ZQotCQkgKiBsYXRjaCB3aGVuIGJsb2NraW5nLCBidXQgdGhlcmUncyBubyBkYW5nZXIgb2Yg YW55dGhpbmcgZmlsbGluZyB1cCwKLQkJICogYXMgIlNldHRpbmcgYW4gZXZlbnQgdGhhdCBp cyBhbHJlYWR5IHNldCBoYXMgbm8gZWZmZWN0LiIuCi0JCSAqCi0JCSAqIE5vdGU6IHdlIGFz c3VtZSB0aGF0IHRoZSBrZXJuZWwgY2FsbHMgaW52b2x2ZWQgaW4gbGF0Y2ggbWFuYWdlbWVu dAotCQkgKiB3aWxsIHByb3ZpZGUgYWRlcXVhdGUgc3luY2hyb25pemF0aW9uIG9uIG1hY2hp bmVzIHdpdGggd2VhayBtZW1vcnkKLQkJICogb3JkZXJpbmcsIHNvIHRoYXQgd2UgY2Fubm90 IG1pc3Mgc2VlaW5nIGlzX3NldCBpZiBhIG5vdGlmaWNhdGlvbgotCQkgKiBoYXMgYWxyZWFk eSBiZWVuIHF1ZXVlZC4KKwkJICogUGVyZm9ybSBhIHBsYWluIGF0b21pYyByZWFkIGZpcnN0 IGFzIGEgZmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0CisJCSAqIGFuIGludGVycnVwdCBp cyBhbHJlYWR5IHBlbmRpbmcuCiAJCSAqLwotCQlpZiAoc2V0LT5sYXRjaCAmJiAhc2V0LT5s YXRjaC0+aXNfc2V0KQorCQlvbGRfbWFzayA9IHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRp bmdJbnRlcnJ1cHRzKTsKKwkJYWxyZWFkeV9wZW5kaW5nID0gKChvbGRfbWFzayAmIHNldC0+ aW50ZXJydXB0X21hc2spICE9IDApOworCisJCWlmICghYWxyZWFkeV9wZW5kaW5nKQogCQl7 Ci0JCQkvKiBhYm91dCB0byBzbGVlcCBvbiBhIGxhdGNoICovCi0JCQlzZXQtPmxhdGNoLT5t YXliZV9zbGVlcGluZyA9IHRydWU7Ci0JCQlwZ19tZW1vcnlfYmFycmllcigpOwotCQkJLyog YW5kIHJlY2hlY2sgKi8KKwkJCS8qCisJCQkgKiBBdG9taWNhbGx5IHNldCB0aGUgU0xFRVBJ TkdfT05fSU5URVJSVVBUUyBiaXQgYW5kIHJlLWNoZWNrIGlmCisJCQkgKiBhbiBpbnRlcnJ1 cHQgaXMgYWxyZWFkeSBwZW5kaW5nLiBUaGUgYXRvbWljIG9wIHByb3ZpZGVzCisJCQkgKiBz eW5jaHJvbml6YXRpb24gc28gdGhhdCBpZiBhbiBpbnRlcnJ1cHQgYml0IGlzIHNldCBhZnRl ciB0aGlzLAorCQkJICogdGhlIHNldHRlciB3aWxsIHdha2UgdXMgdXAuCisJCQkgKi8KKwkJ CW9sZF9tYXNrID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRz LCAxIDw8IFNMRUVQSU5HX09OX0lOVEVSUlVQVFMpOworCQkJYWxyZWFkeV9wZW5kaW5nID0g KChvbGRfbWFzayAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApOworCisJCQkvKiByZW1l bWJlciB0byBjbGVhciB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBUUyBmbGFnIGxhdGVyICov CisJCQlzbGVlcGluZ19mbGFnX2FybWVkID0gdHJ1ZTsKIAkJfQogCi0JCWlmIChzZXQtPmxh dGNoICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJaWYgKGFscmVhZHlfcGVuZGluZykKIAkJ ewogCQkJb2NjdXJyZWRfZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQlvY2N1 cnJlZF9ldmVudHMtPnBvcyA9IHNldC0+bGF0Y2hfcG9zOworCQkJb2NjdXJyZWRfZXZlbnRz LT5wb3MgPSBzZXQtPmludGVycnVwdF9wb3M7CiAJCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJf ZGF0YSA9Ci0JCQkJc2V0LT5ldmVudHNbc2V0LT5sYXRjaF9wb3NdLnVzZXJfZGF0YTsKLQkJ CW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfTEFUQ0hfU0VUOworCQkJCXNldC0+ZXZl bnRzW3NldC0+aW50ZXJydXB0X3Bvc10udXNlcl9kYXRhOworCQkJb2NjdXJyZWRfZXZlbnRz LT5ldmVudHMgPSBXTF9JTlRFUlJVUFQ7CiAJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCXJl dHVybmVkX2V2ZW50cysrOwogCi0JCQkvKiBjb3VsZCBoYXZlIGJlZW4gc2V0IGFib3ZlICov Ci0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGluZyA9IGZhbHNlOwotCi0JCQlpZiAocmV0 dXJuZWRfZXZlbnRzID09IG5ldmVudHMpCi0JCQkJYnJlYWs7CQkJLyogb3V0cHV0IGJ1ZmZl ciBmdWxsIGFscmVhZHkgKi8KLQogCQkJLyoKIAkJCSAqIEV2ZW4gdGhvdWdoIHdlIGFscmVh ZHkgaGF2ZSBhbiBldmVudCwgd2UnbGwgcG9sbCBqdXN0IG9uY2Ugd2l0aAogCQkJICogemVy byB0aW1lb3V0IHRvIHNlZSB3aGF0IG5vbi1sYXRjaCBldmVudHMgd2UgY2FuIGZpdCBpbnRv IHRoZQpAQCAtMTEyOSwzNCArMTEyNiw1OCBAQCBXYWl0RXZlbnRTZXRXYWl0KFdhaXRFdmVu dFNldCAqc2V0LCBsb25nIHRpbWVvdXQsCiAJCQljdXJfdGltZW91dCA9IDA7CiAJCQl0aW1l b3V0ID0gMDsKIAkJfQorCX0KIAorCWlmIChuZXZlbnRzID4gcmV0dXJuZWRfZXZlbnRzKQor CXsKIAkJLyoKIAkJICogV2FpdCBmb3IgZXZlbnRzIHVzaW5nIHRoZSByZWFkaW5lc3MgcHJp bWl0aXZlIGNob3NlbiBhdCB0aGUgdG9wIG9mCiAJCSAqIHRoaXMgZmlsZS4gSWYgLTEgaXMg cmV0dXJuZWQsIGEgdGltZW91dCBoYXMgb2NjdXJyZWQsIGlmIDAgd2UgaGF2ZQogCQkgKiB0 byByZXRyeSwgZXZlcnl0aGluZyA+PSAxIGlzIHRoZSBudW1iZXIgb2YgcmV0dXJuZWQgZXZl bnRzLgorCQkgKgorCQkgKiBPbiB1bml4LCBJZiB0aGVyZSdzIGEgcGVuZGluZyBieXRlIGlu IHRoZSBzZWxmIHBpcGUsIHdlJ2xsIG5vdGljZQorCQkgKiB3aGVuZXZlciBibG9ja2luZy4g T25seSBjbGVhcmluZyB0aGUgcGlwZSBpbiB0aGF0IGNhc2UgYXZvaWRzIGhhdmluZyB0bwor CQkgKiBkcmFpbiBpdCBldmVyeSB0aW1lIFdhaXRJbnRlcnJ1cHRPclNvY2tldCgpIGlzIHVz ZWQuICBTaG91bGQgdGhlCisJCSAqIHBpcGUtYnVmZmVyIGZpbGwgdXAgd2UncmUgc3RpbGwg b2ssIGJlY2F1c2UgdGhlIHBpcGUgaXMgaW4gbm9uYmxvY2tpbmcKKwkJICogbW9kZS4gSXQn cyB1bmxpa2VseSBmb3IgdGhhdCB0byBoYXBwZW4sIGJlY2F1c2UgdGhlIHNlbGYgcGlwZSBp c24ndAorCQkgKiBmaWxsZWQgdW5sZXNzIHdlJ3JlIGJsb2NraW5nICh3YWl0aW5nID0gdHJ1 ZSksIG9yIGZyb20gaW5zaWRlIGEgc2lnbmFsCisJCSAqIGhhbmRsZXIgaW4gaW50ZXJydXB0 X3NpZ3VyZ19oYW5kbGVyKCkuCisJCSAqCisJCSAqIE9uIHdpbmRvd3MsIHdlJ2xsIGFsc28g bm90aWNlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIGV2ZW50IGZvciB0aGUKKwkJICogaW50ZXJy dXB0IHdoZW4gYmxvY2tpbmcsIGJ1dCB0aGVyZSdzIG5vIGRhbmdlciBvZiBhbnl0aGluZyBm aWxsaW5nIHVwLAorCQkgKiBhcyAiU2V0dGluZyBhbiBldmVudCB0aGF0IGlzIGFscmVhZHkg c2V0IGhhcyBubyBlZmZlY3QuIi4KIAkJICovCi0JCXJjID0gV2FpdEV2ZW50U2V0V2FpdEJs b2NrKHNldCwgY3VyX3RpbWVvdXQsCi0JCQkJCQkJCSAgIG9jY3VycmVkX2V2ZW50cywgbmV2 ZW50cyAtIHJldHVybmVkX2V2ZW50cyk7CisJCWZvciAoOzspCisJCXsKKwkJCWludAkJCXJj OwogCi0JCWlmIChzZXQtPmxhdGNoICYmCi0JCQlzZXQtPmxhdGNoLT5tYXliZV9zbGVlcGlu ZykKLQkJCXNldC0+bGF0Y2gtPm1heWJlX3NsZWVwaW5nID0gZmFsc2U7CisJCQlyYyA9IFdh aXRFdmVudFNldFdhaXRCbG9jayhzZXQsIGN1cl90aW1lb3V0LAorCQkJCQkJCQkJICAgb2Nj dXJyZWRfZXZlbnRzLCBuZXZlbnRzIC0gcmV0dXJuZWRfZXZlbnRzKTsKIAotCQlpZiAocmMg PT0gLTEpCi0JCQlicmVhazsJCQkJLyogdGltZW91dCBvY2N1cnJlZCAqLwotCQllbHNlCi0J CQlyZXR1cm5lZF9ldmVudHMgKz0gcmM7CisJCQlpZiAocmMgPT0gLTEpCisJCQkJYnJlYWs7 CQkJCS8qIHRpbWVvdXQgb2NjdXJyZWQgKi8KKwkJCWVsc2UKKwkJCQlyZXR1cm5lZF9ldmVu dHMgKz0gcmM7CiAKLQkJLyogSWYgd2UncmUgbm90IGRvbmUsIHVwZGF0ZSBjdXJfdGltZW91 dCBmb3IgbmV4dCBpdGVyYXRpb24gKi8KLQkJaWYgKHJldHVybmVkX2V2ZW50cyA9PSAwICYm IHRpbWVvdXQgPj0gMCkKLQkJewotCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChjdXJfdGlt ZSk7Ci0JCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFydF90aW1lKTsKLQkJ CWN1cl90aW1lb3V0ID0gdGltZW91dCAtIChsb25nKSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF QyhjdXJfdGltZSk7Ci0JCQlpZiAoY3VyX3RpbWVvdXQgPD0gMCkKKwkJCWlmIChyZXR1cm5l ZF9ldmVudHMgPiAwKQogCQkJCWJyZWFrOworCisJCQkvKiBJZiB3ZSdyZSBub3QgZG9uZSwg dXBkYXRlIGN1cl90aW1lb3V0IGZvciBuZXh0IGl0ZXJhdGlvbiAqLworCQkJaWYgKHRpbWVv dXQgPj0gMCkKKwkJCXsKKwkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1cl90aW1lKTsK KwkJCQlJTlNUUl9USU1FX1NVQlRSQUNUKGN1cl90aW1lLCBzdGFydF90aW1lKTsKKwkJCQlj dXJfdGltZW91dCA9IHRpbWVvdXQgLSAobG9uZykgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMo Y3VyX3RpbWUpOworCQkJCWlmIChjdXJfdGltZW91dCA8PSAwKQorCQkJCQlicmVhazsKKwkJ CX0KIAkJfQogCX0KKworCS8qIElmIHdlIHNldCB0aGUgU0xFRVBJTkdfT05fSU5URVJSVVBU UyBmbGFnLCByZXNldCBpdCBhZ2FpbiAqLworCWlmIChzbGVlcGluZ19mbGFnX2FybWVkKQor CQlwZ19hdG9taWNfZmV0Y2hfYW5kX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCB+KCh1aW50 MzIpIDEgPDwgU0xFRVBJTkdfT05fSU5URVJSVVBUUykpOworCiAjaWZuZGVmIFdJTjMyCiAJ d2FpdGluZyA9IGZhbHNlOwogI2VuZGlmCkBAIC0xMjI3LDE2ICsxMjQ4LDE2IEBAIFdhaXRF dmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAog CQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwog CQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZl bnRzID09IFdMX0xBVENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xf SU5URVJSVVBUICYmCiAJCQljdXJfZXBvbGxfZXZlbnQtPmV2ZW50cyAmIChFUE9MTElOIHwg RVBPTExFUlIgfCBFUE9MTEhVUCkpCiAJCXsKIAkJCS8qIERyYWluIHRoZSBzaWduYWxmZC4g Ki8KIAkJCWRyYWluKCk7CiAKLQkJCWlmIChzZXQtPmxhdGNoICYmIHNldC0+bGF0Y2gtPm1h eWJlX3NsZWVwaW5nICYmIHNldC0+bGF0Y2gtPmlzX3NldCkKKwkJCWlmIChzZXQtPmludGVy cnVwdF9tYXNrICE9IDAgJiYgKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJbnRlcnJ1 cHRzKSAmIHNldC0+aW50ZXJydXB0X21hc2spICE9IDApCiAJCQl7CiAJCQkJb2NjdXJyZWRf ZXZlbnRzLT5mZCA9IFBHSU5WQUxJRF9TT0NLRVQ7Ci0JCQkJb2NjdXJyZWRfZXZlbnRzLT5l dmVudHMgPSBXTF9MQVRDSF9TRVQ7CisJCQkJb2NjdXJyZWRfZXZlbnRzLT5ldmVudHMgPSBX TF9JTlRFUlJVUFQ7CiAJCQkJb2NjdXJyZWRfZXZlbnRzKys7CiAJCQkJcmV0dXJuZWRfZXZl bnRzKys7CiAJCQl9CkBAIC0xMzg5LDEzICsxNDEwLDEzIEBAIFdhaXRFdmVudFNldFdhaXRC bG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1cl90aW1lb3V0LAogCQlvY2N1cnJlZF9l dmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9l dmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1cl9ldmVudC0+ZXZlbnRzID09IFdMX0xB VENIX1NFVCAmJgorCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfSU5URVJSVVBUICYm CiAJCQljdXJfa3F1ZXVlX2V2ZW50LT5maWx0ZXIgPT0gRVZGSUxUX1NJR05BTCkKIAkJewot CQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVfc2xlZXBpbmcgJiYgc2V0 LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0X21hc2sgIT0gMCAmJiAo cGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMpICYgc2V0LT5pbnRlcnJ1 cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVudHMtPmZkID0gUEdJTlZB TElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0xBVENIX1NF VDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lOVEVSUlVQVDsKIAkJCQlv Y2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMrKzsKIAkJCX0KQEAgLTE1 MTEsMTYgKzE1MzIsMTYgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRFdmVudFNldCAq c2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAJCW9jY3VycmVkX2V2ZW50cy0+dXNlcl9kYXRhID0g Y3VyX2V2ZW50LT51c2VyX2RhdGE7CiAJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gMDsK IAotCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMgPT0gV0xfTEFUQ0hfU0VUICYmCisJCWlmIChj dXJfZXZlbnQtPmV2ZW50cyA9PSBXTF9JTlRFUlJVUFQgJiYKIAkJCShjdXJfcG9sbGZkLT5y ZXZlbnRzICYgKFBPTExJTiB8IFBPTExIVVAgfCBQT0xMRVJSIHwgUE9MTE5WQUwpKSkKIAkJ ewogCQkJLyogVGhlcmUncyBkYXRhIGluIHRoZSBzZWxmLXBpcGUsIGNsZWFyIGl0LiAqLwog CQkJZHJhaW4oKTsKIAotCQkJaWYgKHNldC0+bGF0Y2ggJiYgc2V0LT5sYXRjaC0+bWF5YmVf c2xlZXBpbmcgJiYgc2V0LT5sYXRjaC0+aXNfc2V0KQorCQkJaWYgKHNldC0+aW50ZXJydXB0 X21hc2sgIT0gMCAmJiAocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMp ICYgc2V0LT5pbnRlcnJ1cHRfbWFzaykgIT0gMCkKIAkJCXsKIAkJCQlvY2N1cnJlZF9ldmVu dHMtPmZkID0gUEdJTlZBTElEX1NPQ0tFVDsKLQkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50 cyA9IFdMX0xBVENIX1NFVDsKKwkJCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IFdMX0lO VEVSUlVQVDsKIAkJCQlvY2N1cnJlZF9ldmVudHMrKzsKIAkJCQlyZXR1cm5lZF9ldmVudHMr KzsKIAkJCX0KQEAgLTE2MTksNiArMTY0MCwxNSBAQCBXYWl0RXZlbnRTZXRXYWl0QmxvY2so V2FpdEV2ZW50U2V0ICpzZXQsIGludCBjdXJfdGltZW91dCwKIAkJCWN1cl9ldmVudC0+cmVz ZXQgPSBmYWxzZTsKIAkJfQogCisJCS8qCisJCSAqIFdlIG5lZWQgdG8gdXNlIGRpZmZlcmVu dCBldmVudCBvYmplY3QgZGVwZW5kaW5nIG9uIHdoZXRoZXIgImxvY2FsIgorCQkgKiBvciAi c2hhcmVkIG1lbW9yeSIgaW50ZXJydXB0cyBhcmUgaW4gdXNlLiBUaGVyZSdzIG5vIGVhc3kg d2F5IHRvCisJCSAqIGFkanVzdCBhbGwgZXhpc3RpbmcgV2FpdEV2ZW50U2V0IHdoZW4geW91 IHN3aXRjaCBmcm9tIGxvY2FsIHRvCisJCSAqIHNoYXJlZCBvciBiYWNrLCBzbyB3ZSByZWZy ZXNoIGl0IG9uIGV2ZXJ5IGNhbGwuCisJCSAqLworCQlpZiAoY3VyX2V2ZW50LT5ldmVudHMg JiBXTF9JTlRFUlJVUFQpCisJCQlXYWl0RXZlbnRBZGp1c3RXaW4zMihzZXQsIGN1cl9ldmVu dCk7CisKIAkJLyoKIAkJICogV2UgYXNzb2NpYXRlIHRoZSBzb2NrZXQgd2l0aCBhIG5ldyBl dmVudCBoYW5kbGUgZm9yIGVhY2gKIAkJICogV2FpdEV2ZW50U2V0LiAgRkRfQ0xPU0UgaXMg b25seSBnZW5lcmF0ZWQgb25jZSBpZiB0aGUgb3RoZXIgZW5kCkBAIC0xNzI0LDE5ICsxNzU0 LDE1IEBAIFdhaXRFdmVudFNldFdhaXRCbG9jayhXYWl0RXZlbnRTZXQgKnNldCwgaW50IGN1 cl90aW1lb3V0LAogCQlvY2N1cnJlZF9ldmVudHMtPnVzZXJfZGF0YSA9IGN1cl9ldmVudC0+ dXNlcl9kYXRhOwogCQlvY2N1cnJlZF9ldmVudHMtPmV2ZW50cyA9IDA7CiAKLQkJaWYgKGN1 cl9ldmVudC0+ZXZlbnRzID09IFdMX0xBVENIX1NFVCkKKwkJaWYgKGN1cl9ldmVudC0+ZXZl bnRzID09IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJLyoKLQkJCSAqIFdlIGNhbm5vdCB1c2Ug c2V0LT5sYXRjaC0+ZXZlbnQgdG8gcmVzZXQgdGhlIGZpcmVkIGV2ZW50IGlmIHdlCi0JCQkg KiBhcmVuJ3Qgd2FpdGluZyBvbiB0aGlzIGxhdGNoIG5vdy4KLQkJCSAqLwogCQkJaWYgKCFS ZXNldEV2ZW50KHNldC0+aGFuZGxlc1tjdXJfZXZlbnQtPnBvcyArIDFdKSkKIAkJCQllbG9n KEVSUk9SLCAiUmVzZXRFdmVudCBmYWlsZWQ6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVy cm9yKCkpOwogCi0JCQlpZiAoc2V0LT5sYXRjaCAmJiBzZXQtPmxhdGNoLT5tYXliZV9zbGVl cGluZyAmJiBzZXQtPmxhdGNoLT5pc19zZXQpCisJCQlpZiAoc2V0LT5pbnRlcnJ1cHRfbWFz ayAhPSAwICYmIChwZ19hdG9taWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBz ZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKQogCQkJewogCQkJCW9jY3VycmVkX2V2ZW50cy0+ ZmQgPSBQR0lOVkFMSURfU09DS0VUOwotCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0g V0xfTEFUQ0hfU0VUOworCQkJCW9jY3VycmVkX2V2ZW50cy0+ZXZlbnRzID0gV0xfSU5URVJS VVBUOwogCQkJCW9jY3VycmVkX2V2ZW50cysrOwogCQkJCXJldHVybmVkX2V2ZW50cysrOwog CQkJfQpAQCAtMTc4MSw3ICsxODA3LDcgQEAgV2FpdEV2ZW50U2V0V2FpdEJsb2NrKFdhaXRF dmVudFNldCAqc2V0LCBpbnQgY3VyX3RpbWVvdXQsCiAKIAkJCQkvKi0tLS0tLQogCQkJCSAq IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgZG9lc24ndCBndWFyYW50ZWUgdGhhdCBhIHJlYWQg ZXZlbnQKLQkJCQkgKiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBsYXRjaCBpcyBzZXQgYXQg dGhlIHNhbWUgdGltZS4gIEV2ZW4KKwkJCQkgKiB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBp bnRlcnJ1cHQgaXMgc2V0IGF0IHRoZSBzYW1lIHRpbWUuICBFdmVuCiAJCQkJICogaWYgaXQg ZGlkLCB0aGUgY2FsbGVyIG1pZ2h0IGRyb3AgdGhhdCBldmVudCBleHBlY3RpbmcgaXQgdG8K IAkJCQkgKiByZW9jY3VyIG9uIG5leHQgY2FsbC4gIFNvLCB3ZSBtdXN0IGZvcmNlIHRoZSBl dmVudCB0byBiZQogCQkJCSAqIHJlc2V0IGlmIHRoaXMgV2FpdEV2ZW50U2V0IGlzIHVzZWQg YWdhaW4gaW4gb3JkZXIgdG8gYXZvaWQKQEAgLTE4ODcsMTggKzE5MTMsMTcgQEAgR2V0TnVt UmVnaXN0ZXJlZFdhaXRFdmVudHMoV2FpdEV2ZW50U2V0ICpzZXQpCiAjaWYgZGVmaW5lZChX QUlUX1VTRV9TRUxGX1BJUEUpCiAKIC8qCi0gKiBTZXRMYXRjaCB1c2VzIFNJR1VSRyB0byB3 YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcgb24gdGhlIGxhdGNoLgotICoKLSAqIFdha2Ug dXAgV2FpdExhdGNoLCBpZiB3ZSdyZSB3YWl0aW5nLgorICogV2FrZXVwT3RoZXJQcm9jIGFu ZCBXYWt1cE15UHJvYyB1c2UgU0lHVVJHIHRvIHdha2UgdXAgdGhlIHByb2Nlc3Mgd2FpdGlu ZworICogZm9yIGFuIGludGVycnVwdAogICovCiBzdGF0aWMgdm9pZAotbGF0Y2hfc2lndXJn X2hhbmRsZXIoU0lHTkFMX0FSR1MpCitpbnRlcnJ1cHRfc2lndXJnX2hhbmRsZXIoU0lHTkFM X0FSR1MpCiB7CiAJaWYgKHdhaXRpbmcpCiAJCXNlbmRTZWxmUGlwZUJ5dGUoKTsKIH0KIAot LyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0byB3YWtlIHVwIFdhaXRMYXRj aCAqLworLyogU2VuZCBvbmUgYnl0ZSB0byB0aGUgc2VsZi1waXBlLCB0byB3YWtlIHVwIFdh aXRJbnRlcnJ1cHQgKi8KIHN0YXRpYyB2b2lkCiBzZW5kU2VsZlBpcGVCeXRlKHZvaWQpCiB7 CkBAIC0xOTE1LDcgKzE5NDAsNyBAQCByZXRyeToKIAogCQkvKgogCQkgKiBJZiB0aGUgcGlw ZSBpcyBmdWxsLCB3ZSBkb24ndCBuZWVkIHRvIHJldHJ5LCB0aGUgZGF0YSB0aGF0J3MgdGhl cmUKLQkJICogYWxyZWFkeSBpcyBlbm91Z2ggdG8gd2FrZSB1cCBXYWl0TGF0Y2guCisJCSAq IGFscmVhZHkgaXMgZW5vdWdoIHRvIHdha2UgdXAgV2FpdEludGVycnVwdC4KIAkJICovCiAJ CWlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spCiAJCQlyZXR1 cm47CkBAIC0yMDAyLDE0ICsyMDI3LDEzIEBAIFJlc093bmVyUmVsZWFzZVdhaXRFdmVudFNl dChEYXR1bSByZXMpCiAJRnJlZVdhaXRFdmVudFNldChzZXQpOwogfQogCi0jaWZuZGVmIFdJ TjMyCiAvKgogICogV2FrZSB1cCBteSBwcm9jZXNzIGlmIGl0J3MgY3VycmVudGx5IHNsZWVw aW5nIGluIFdhaXRFdmVudFNldFdhaXRCbG9jaygpCiAgKgogICogTkI6IGJlIHN1cmUgdG8g c2F2ZSBhbmQgcmVzdG9yZSBlcnJubyBhcm91bmQgaXQuICAoVGhhdCdzIHN0YW5kYXJkIHBy YWN0aWNlCiAgKiBpbiBtb3N0IHNpZ25hbCBoYW5kbGVycywgb2YgY291cnNlLCBidXQgd2Ug dXNlZCB0byBvbWl0IGl0IGluIGhhbmRsZXJzIHRoYXQKICAqIG9ubHkgc2V0IGEgZmxhZy4p IFhYWAotICAqCisgKgogICogTkI6IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gY3Jp dGljYWwgc2VjdGlvbnMgYW5kIHNpZ25hbCBoYW5kbGVycyBzbwogICogdGhyb3dpbmcgYW4g ZXJyb3IgaXMgbm90IGEgZ29vZCBpZGVhLgogICoKQEAgLTIwMTgsNiArMjA0Miw3IEBAIFJl c093bmVyUmVsZWFzZVdhaXRFdmVudFNldChEYXR1bSByZXMpCiB2b2lkCiBXYWtldXBNeVBy b2Modm9pZCkKIHsKKyNpZm5kZWYgV0lOMzIKICNpZiBkZWZpbmVkKFdBSVRfVVNFX1NFTEZf UElQRSkKIAlpZiAod2FpdGluZykKIAkJc2VuZFNlbGZQaXBlQnl0ZSgpOwpAQCAtMjAyNSwx MiArMjA1MCwyMyBAQCBXYWtldXBNeVByb2Modm9pZCkKIAlpZiAod2FpdGluZykKIAkJa2ls bChNeVByb2NQaWQsIFNJR1VSRyk7CiAjZW5kaWYKKyNlbHNlCisJU2V0RXZlbnQoTXlQcm9j ID8gTXlQcm9jLT5pbnRlcnJ1cHRXYWtldXBFdmVudCA6IExvY2FsSW50ZXJydXB0V2FrZXVw RXZlbnQpOworI2VuZGlmCiB9CiAKIC8qIFNpbWlsYXIgdG8gV2FrZXVwTXlQcm9jLCBidXQg d2FrZSB1cCBhbm90aGVyIHByb2Nlc3MgKi8KIHZvaWQKLVdha2V1cE90aGVyUHJvYyhpbnQg cGlkKQorV2FrZXVwT3RoZXJQcm9jKFBHUFJPQyAqcHJvYykKIHsKLQlraWxsKHBpZCwgU0lH VVJHKTsKLX0KKyNpZm5kZWYgV0lOMzIKKwlraWxsKHByb2MtPnBpZCwgU0lHVVJHKTsKKyNl bHNlCisJU2V0RXZlbnQocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQpOworCisJLyoKKwkg KiBOb3RlIHRoYXQgd2Ugc2lsZW50bHkgaWdub3JlIGFueSBlcnJvcnMuIFdlIG1pZ2h0IGJl IGluIGEgc2lnbmFsCisJICogaGFuZGxlciBvciBvdGhlciBjcml0aWNhbCBwYXRoIHdoZXJl IGl0J3Mgbm90IHNhZmUgdG8gY2FsbCBlbG9nKCkuCisJICovCiAjZW5kaWYKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYwppbmRleCAy MjgzMDNlNzdmNy4uMjk1OTE0Y2YwMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUuaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jbGlzdC5oIgpAQCAtMTQ3LDIzICsxNDgsMjMgQEAgQ29uZGl0 aW9uVmFyaWFibGVUaW1lZFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwgbG9uZyB0aW1l b3V0LAogCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwogCQlBc3NlcnQo dGltZW91dCA+PSAwICYmIHRpbWVvdXQgPD0gSU5UX01BWCk7CiAJCWN1cl90aW1lb3V0ID0g dGltZW91dDsKLQkJd2FpdF9ldmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSDsKKwkJd2FpdF9ldmVudHMgPSBXTF9JTlRFUlJVUFQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAl9CiAJZWxzZQotCQl3YWl0X2V2 ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisJCXdhaXRfZXZl bnRzID0gV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsKIAogCXdoaWxlICh0 cnVlKQogCXsKIAkJYm9vbAkJZG9uZSA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIFdhaXQgZm9y IGxhdGNoIHRvIGJlIHNldC4gIChJZiB3ZSdyZSBhd2FrZW5lZCBmb3Igc29tZSBvdGhlcgot CQkgKiByZWFzb24sIHRoZSBjb2RlIGJlbG93IHdpbGwgY29wZSBhbnl3YXkuKQorCQkgKiBX YWl0IGZvciBpbnRlcnJ1cHQuICAoSWYgd2UncmUgYXdha2VuZWQgZm9yIHNvbWUgb3RoZXIg cmVhc29uLCB0aGUKKwkJICogY29kZSBiZWxvdyB3aWxsIGNvcGUgYW55d2F5LikKIAkJICov Ci0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgd2FpdF9ldmVudHMsIGN1cl90aW1lb3V0 LCB3YWl0X2V2ZW50X2luZm8pOworCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCwgd2FpdF9ldmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOwog Ci0JCS8qIFJlc2V0IGxhdGNoIGJlZm9yZSBleGFtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3 YWl0IGxpc3QuICovCi0JCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCS8qIENsZWFyIHRoZSBm bGFnIGJlZm9yZSBleGFtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSB3YWl0IGxpc3QuICovCisJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKgogCQkgKiBJZiB0 aGlzIHByb2Nlc3MgaGFzIGJlZW4gdGFrZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4g d2Uga25vdwpAQCAtMTc2LDkgKzE3NywxMCBAQCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xl ZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCSAqIHRoZSB3YWl0 IGxpc3Qgb25seSB3aGVuIHRoZSBjYWxsZXIgY2FsbHMKIAkJICogQ29uZGl0aW9uVmFyaWFi bGVDYW5jZWxTbGVlcC4KIAkJICoKLQkJICogSWYgd2UncmUgc3RpbGwgaW4gdGhlIHdhaXQg bGlzdCwgdGhlbiB0aGUgbGF0Y2ggbXVzdCBoYXZlIGJlZW4gc2V0Ci0JCSAqIGJ5IHNvbWV0 aGluZyBvdGhlciB0aGFuIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2ggd2UgZG9u J3QKLQkJICogZ3VhcmFudGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2UnbGwgYXZv aWQgdGhpcyBvYnZpb3VzIGNhc2UuCisJCSAqIElmIHdlJ3JlIHN0aWxsIGluIHRoZSB3YWl0 IGxpc3QsIHRoZW4gdGhlIGludGVycnVwdCBtdXN0IGhhdmUgYmVlbgorCQkgKiBzZW50IGJ5 IHNvbWV0aGluZyBvdGhlciB0aGFuIENvbmRpdGlvblZhcmlhYmxlU2lnbmFsOyB0aG91Z2gg d2UKKwkJICogZG9uJ3QgZ3VhcmFudGVlIG5vdCB0byByZXR1cm4gc3B1cmlvdXNseSwgd2Un bGwgYXZvaWQgdGhpcyBvYnZpb3VzCisJCSAqIGNhc2UuCiAJCSAqLwogCQlTcGluTG9ja0Fj cXVpcmUoJmN2LT5tdXRleCk7CiAJCWlmICghcHJvY2xpc3RfY29udGFpbnMoJmN2LT53YWtl dXAsIE15UHJvY051bWJlciwgY3ZXYWl0TGluaykpCkBAIC0yNjYsOSArMjY4LDkgQEAgQ29u ZGl0aW9uVmFyaWFibGVTaWduYWwoQ29uZGl0aW9uVmFyaWFibGUgKmN2KQogCQlwcm9jID0g cHJvY2xpc3RfcG9wX2hlYWRfbm9kZSgmY3YtPndha2V1cCwgY3ZXYWl0TGluayk7CiAJU3Bp bkxvY2tSZWxlYXNlKCZjdi0+bXV0ZXgpOwogCi0JLyogSWYgd2UgZm91bmQgc29tZW9uZSBz bGVlcGluZywgc2V0IHRoZWlyIGxhdGNoIHRvIHdha2UgdGhlbSB1cC4gKi8KKwkvKiBJZiB3 ZSBmb3VuZCBzb21lb25lIHNsZWVwaW5nLCB3YWtlIHRoZW0gdXAuICovCiAJaWYgKHByb2Mg IT0gTlVMTCkKLQkJU2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCVNlbmRJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21QR1Byb2MocHJvYykpOwogfQog CiAvKgpAQCAtMjk3LDggKzI5OSw4IEBAIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KENv bmRpdGlvblZhcmlhYmxlICpjdikKIAkgKiBDViBhbmQgaW4gZG9pbmcgc28gcmVtb3ZlIG91 ciBzZW50aW5lbCBlbnRyeS4gIEJ1dCB0aGF0J3MgZmluZTogc2luY2UKIAkgKiBDViB3YWl0 ZXJzIGFyZSBhbHdheXMgYWRkZWQgYW5kIHJlbW92ZWQgaW4gb3JkZXIsIHRoYXQgbXVzdCBt ZWFuIHRoYXQKIAkgKiBldmVyeSBwcmV2aW91cyB3YWl0ZXIgaGFzIGJlZW4gd2FrZW5lZCwg c28gd2UncmUgZG9uZS4gIFdlJ2xsIGdldCBhbgotCSAqIGV4dHJhICJzZXQiIG9uIG91ciBs YXRjaCBmcm9tIHRoZSBzb21lb25lIGVsc2UncyBzaWduYWwsIHdoaWNoIGlzCi0JICogc2xp Z2h0bHkgaW5lZmZpY2llbnQgYnV0IGhhcm1sZXNzLgorCSAqIGV4dHJhIGludGVycnVwdCBm cm9tIHRoZSBzb21lb25lIGVsc2UncyBzaWduYWwsIHdoaWNoIGlzIHNsaWdodGx5CisJICog aW5lZmZpY2llbnQgYnV0IGhhcm1sZXNzLgogCSAqCiAJICogV2UgY2FuJ3QgaW5zZXJ0IG91 ciBjdldhaXRMaW5rIGFzIGEgc2VudGluZWwgaWYgaXQncyBhbHJlYWR5IGluIHVzZSBpbgog CSAqIHNvbWUgb3RoZXIgcHJvY2xpc3QuICBXaGlsZSB0aGF0J3Mgbm90IGV4cGVjdGVkIHRv IGJlIHRydWUgZm9yIHR5cGljYWwKQEAgLTMzMSw3ICszMzMsNyBAQCBDb25kaXRpb25WYXJp YWJsZUJyb2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAKIAkvKiBBd2FrZW4gZmly c3Qgd2FpdGVyLCBpZiB0aGVyZSB3YXMgb25lLiAqLwogCWlmIChwcm9jICE9IE5VTEwpCi0J CVNldExhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOworCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAogCXdoaWxlIChoYXZl X3NlbnRpbmVsKQogCXsKQEAgLTM1NSw2ICszNTcsNiBAQCBDb25kaXRpb25WYXJpYWJsZUJy b2FkY2FzdChDb25kaXRpb25WYXJpYWJsZSAqY3YpCiAJCVNwaW5Mb2NrUmVsZWFzZSgmY3Yt Pm11dGV4KTsKIAogCQlpZiAocHJvYyAhPSBOVUxMICYmIHByb2MgIT0gTXlQcm9jKQotCQkJ U2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJCQlTZW5kSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpKTsKIAl9CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggNWIyMWEwNTM5ODEuLmFiOWI0NmI5 Y2I5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0yMDcsNiAr MjA3LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3J0L3BnX2xmaW5kLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRl cnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o IgpAQCAtMTU3Niw3ICsxNTc3LDEwIEBAIEdldFNhZmVTbmFwc2hvdChTbmFwc2hvdCBvcmln U25hcHNob3QpCiAJCQkJIFN4YWN0SXNST1Vuc2FmZShNeVNlcmlhbGl6YWJsZVhhY3QpKSkK IAkJewogCQkJTFdMb2NrUmVsZWFzZShTZXJpYWxpemFibGVYYWN0SGFzaExvY2spOwotCQkJ UHJvY1dhaXRGb3JTaWduYWwoV0FJVF9FVkVOVF9TQUZFX1NOQVBTSE9UKTsKKwkJCVdhaXRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCisJCQkJCQkgIFdBSVRfRVZFTlRfU0FGRV9TTkFQU0hPVCk7CisJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCQkJTFdMb2NrQWNxdWlyZShTZXJpYWxpemFibGVYYWN0SGFzaExvY2ssIExX X0VYQ0xVU0lWRSk7CiAJCX0KIAkJTXlTZXJpYWxpemFibGVYYWN0LT5mbGFncyAmPSB+U1hB Q1RfRkxBR19ERUZFUlJBQkxFX1dBSVRJTkc7CkBAIC0zNjA5LDcgKzM2MTMsNyBAQCBSZWxl YXNlUHJlZGljYXRlTG9ja3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1JlYWRPbmx5U2FmZSkK IAkJCSAqLwogCQkJaWYgKFN4YWN0SXNEZWZlcnJhYmxlV2FpdGluZyhyb1hhY3QpICYmCiAJ CQkJKFN4YWN0SXNST1Vuc2FmZShyb1hhY3QpIHx8IFN4YWN0SXNST1NhZmUocm9YYWN0KSkp Ci0JCQkJUHJvY1NlbmRTaWduYWwocm9YYWN0LT5wZ3Byb2Nubyk7CisJCQkJU2VuZEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCwgcm9YYWN0LT5wZ3Byb2Nubyk7CiAJCX0KIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDc0OWE3OWQ0OGVmLi40ZWJmZjlhNGIz NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9hdXRvdmFjdXVtLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3N5bmNyZXAuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJs ZS5oIgpAQCAtMjU4LDE0ICsyNTksMjggQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAkJQXNz ZXJ0KGZwUHRyIDw9IGZwRW5kUHRyKTsKIAogCQkvKgotCQkgKiBTZXQgdXAgcGVyLVBHUFJP QyBzZW1hcGhvcmUsIGxhdGNoLCBhbmQgZnBJbmZvTG9jay4gIFByZXBhcmVkIHhhY3QKLQkJ ICogZHVtbXkgUEdQUk9DcyBkb24ndCBuZWVkIHRoZXNlIHRob3VnaCAtIHRoZXkncmUgbmV2 ZXIgYXNzb2NpYXRlZAotCQkgKiB3aXRoIGEgcmVhbCBwcm9jZXNzCisJCSAqIFNldCB1cCBw ZXItUEdQUk9DIHNlbWFwaG9yZSwgaW50ZXJydXB0IHdha2V1cCBldmVudCAob24gV2luZG93 cyksCisJCSAqIGFuZCBmcEluZm9Mb2NrLiAgUHJlcGFyZWQgeGFjdCBkdW1teSBQR1BST0Nz IGRvbid0IG5lZWQgdGhlc2UKKwkJICogdGhvdWdoIC0gdGhleSdyZSBuZXZlciBhc3NvY2lh dGVkIHdpdGggYSByZWFsIHByb2Nlc3MKIAkJICovCiAJCWlmIChpIDwgTWF4QmFja2VuZHMg KyBOVU1fQVVYSUxJQVJZX1BST0NTKQogCQl7CisjaWZkZWYgV0lOMzIKKwkJCVNFQ1VSSVRZ X0FUVFJJQlVURVMgc2E7CisKKwkJCS8qCisJCQkgKiBTZXQgdXAgc2VjdXJpdHkgYXR0cmli dXRlcyB0byBzcGVjaWZ5IHRoYXQgdGhlIGV2ZW50cyBhcmUKKwkJCSAqIGluaGVyaXRlZC4K KwkJCSAqLworCQkJWmVyb01lbW9yeSgmc2EsIHNpemVvZihzYSkpOworCQkJc2Eubkxlbmd0 aCA9IHNpemVvZihzYSk7CisJCQlzYS5iSW5oZXJpdEhhbmRsZSA9IFRSVUU7CisKKwkJCXBy b2MtPmludGVycnVwdFdha2V1cEV2ZW50ID0gQ3JlYXRlRXZlbnQoJnNhLCBUUlVFLCBGQUxT RSwgTlVMTCk7CisJCQlpZiAocHJvYy0+aW50ZXJydXB0V2FrZXVwRXZlbnQgPT0gTlVMTCkK KwkJCQllbG9nKEVSUk9SLCAiQ3JlYXRlRXZlbnQgZmFpbGVkOiBlcnJvciBjb2RlICVsdSIs IEdldExhc3RFcnJvcigpKTsKKyNlbmRpZgogCQkJcHJvYy0+c2VtID0gUEdTZW1hcGhvcmVD cmVhdGUoKTsKLQkJCUluaXRTaGFyZWRMYXRjaCgmKHByb2MtPnByb2NMYXRjaCkpOwogCQkJ TFdMb2NrSW5pdGlhbGl6ZSgmKHByb2MtPmZwSW5mb0xvY2spLCBMV1RSQU5DSEVfTE9DS19G QVNUUEFUSCk7CiAJCX0KIApAQCAtNDc5LDEzICs0OTQsOCBAQCBJbml0UHJvY2Vzcyh2b2lk KQogCU15UHJvYy0+Y2xvZ0dyb3VwTWVtYmVyTHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJ QXNzZXJ0KHBnX2F0b21pY19yZWFkX3UzMigmTXlQcm9jLT5jbG9nR3JvdXBOZXh0KSA9PSBJ TlZBTElEX1BST0NfTlVNQkVSKTsKIAotCS8qCi0JICogQWNxdWlyZSBvd25lcnNoaXAgb2Yg dGhlIFBHUFJPQydzIGxhdGNoLCBzbyB0aGF0IHdlIGNhbiB1c2UgV2FpdExhdGNoCi0JICog b24gaXQuICBUaGF0IGFsbG93cyB1cyB0byByZXBvaW50IHRoZSBwcm9jZXNzIGxhdGNoLCB3 aGljaCBzbyBmYXIKLQkgKiBwb2ludHMgdG8gcHJvY2VzcyBsb2NhbCBvbmUsIHRvIHRoZSBz aGFyZWQgb25lLgotCSAqLwotCU93bkxhdGNoKCZNeVByb2MtPnByb2NMYXRjaCk7Ci0JU3dp dGNoVG9TaGFyZWRMYXRjaCgpOworCS8qIFN0YXJ0IGFjY2VwdGluZyBpbnRlcnJ1cHRzIGZy b20gb3RoZXIgcHJvY2Vzc2VzICovCisJU3dpdGNoVG9TaGFyZWRJbnRlcnJ1cHRzKCk7CiAK IAkvKiBub3cgdGhhdCB3ZSBoYXZlIGEgcHJvYywgcmVwb3J0IHdhaXQgZXZlbnRzIHRvIHNo YXJlZCBtZW1vcnkgKi8KIAlwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSgmTXlQcm9j LT53YWl0X2V2ZW50X2luZm8pOwpAQCAtNjQ5LDEzICs2NTksOCBAQCBJbml0QXV4aWxpYXJ5 UHJvY2Vzcyh2b2lkKQogCX0KICNlbmRpZgogCi0JLyoKLQkgKiBBY3F1aXJlIG93bmVyc2hp cCBvZiB0aGUgUEdQUk9DJ3MgbGF0Y2gsIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0TGF0Y2gK LQkgKiBvbiBpdC4gIFRoYXQgYWxsb3dzIHVzIHRvIHJlcG9pbnQgdGhlIHByb2Nlc3MgbGF0 Y2gsIHdoaWNoIHNvIGZhcgotCSAqIHBvaW50cyB0byBwcm9jZXNzIGxvY2FsIG9uZSwgdG8g dGhlIHNoYXJlZCBvbmUuCi0JICovCi0JT3duTGF0Y2goJk15UHJvYy0+cHJvY0xhdGNoKTsK LQlTd2l0Y2hUb1NoYXJlZExhdGNoKCk7CisJLyogU3RhcnQgYWNjZXB0aW5nIGludGVycnVw dHMgZnJvbSBvdGhlciBwcm9jZXNzZXMgKi8KKwlTd2l0Y2hUb1NoYXJlZEludGVycnVwdHMo KTsKIAogCS8qIG5vdyB0aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMg dG8gc2hhcmVkIG1lbW9yeSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZN eVByb2MtPndhaXRfZXZlbnRfaW5mbyk7CkBAIC05MzIsMjEgKzkzNywyMCBAQCBQcm9jS2ls bChpbnQgY29kZSwgRGF0dW0gYXJnKQogCX0KIAogCS8qCi0JICogUmVzZXQgTXlMYXRjaCB0 byB0aGUgcHJvY2VzcyBsb2NhbCBvbmUuICBUaGlzIGlzIHNvIHRoYXQgc2lnbmFsCi0JICog aGFuZGxlcnMgZXQgYWwgY2FuIGNvbnRpbnVlIHVzaW5nIHRoZSBsYXRjaCBhZnRlciB0aGUg c2hhcmVkIGxhdGNoCi0JICogaXNuJ3Qgb3VycyBhbnltb3JlLgorCSAqIFJlc2V0IGludGVy cnVwdCB2ZWN0b3IgdG8gdGhlIHByb2Nlc3MgbG9jYWwgb25lLiAgVGhpcyBpcyBzbyB0aGF0 CisJICogc2lnbmFsIGhhbmRsZXJzIGV0IGFsIGNhbiBjb250aW51ZSB1c2luZyBpbnRlcnJ1 cHRzIGFmdGVyIHRoZSBQR1BST0MKKwkgKiBlbnRyeSBpc24ndCBvdXJzIGFueW1vcmUuCiAJ ICoKIAkgKiBTaW1pbGFybHksIHN0b3AgcmVwb3J0aW5nIHdhaXQgZXZlbnRzIHRvIE15UHJv Yy0+d2FpdF9ldmVudF9pbmZvLgogCSAqCi0JICogQWZ0ZXIgdGhhdCBjbGVhciBNeVByb2Mg YW5kIGRpc293biB0aGUgc2hhcmVkIGxhdGNoLgorCSAqIEFmdGVyIHRoYXQgY2xlYXIgTXlQ cm9jLgogCSAqLwotCVN3aXRjaEJhY2tUb0xvY2FsTGF0Y2goKTsKKwlTd2l0Y2hUb0xvY2Fs SW50ZXJydXB0cygpOwogCXBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKTsKIAog CXByb2MgPSBNeVByb2M7CiAJTXlQcm9jID0gTlVMTDsKIAlNeVByb2NOdW1iZXIgPSBJTlZB TElEX1BST0NfTlVNQkVSOwotCURpc293bkxhdGNoKCZwcm9jLT5wcm9jTGF0Y2gpOwogCiAJ LyogTWFyayB0aGUgcHJvYyBubyBsb25nZXIgaW4gdXNlICovCiAJcHJvYy0+cGlkID0gMDsK QEAgLTEwMDksMTMgKzEwMTMsMTIgQEAgQXV4aWxpYXJ5UHJvY0tpbGwoaW50IGNvZGUsIERh dHVtIGFyZykKIAlDb25kaXRpb25WYXJpYWJsZUNhbmNlbFNsZWVwKCk7CiAKIAkvKiBsb29r IGF0IHRoZSBlcXVpdmFsZW50IFByb2NLaWxsKCkgY29kZSBmb3IgY29tbWVudHMgKi8KLQlT d2l0Y2hCYWNrVG9Mb2NhbExhdGNoKCk7CisJU3dpdGNoVG9Mb2NhbEludGVycnVwdHMoKTsK IAlwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKCk7CiAKIAlwcm9jID0gTXlQcm9j OwogCU15UHJvYyA9IE5VTEw7CiAJTXlQcm9jTnVtYmVyID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKLQlEaXNvd25MYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKIAogCVNwaW5Mb2NrQWNxdWly ZShQcm9jU3RydWN0TG9jayk7CiAKQEAgLTEzNDIsMTggKzEzNDUsMTggQEAgUHJvY1NsZWVw KExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCX0KIAogCS8qCi0JICogSWYgc29tZWJvZHkgd2Fr ZXMgdXMgYmV0d2VlbiBMV0xvY2tSZWxlYXNlIGFuZCBXYWl0TGF0Y2gsIHRoZSBsYXRjaAot CSAqIHdpbGwgbm90IHdhaXQuIEJ1dCBhIHNldCBsYXRjaCBkb2VzIG5vdCBuZWNlc3Nhcmls eSBtZWFuIHRoYXQgdGhlIGxvY2sKLQkgKiBpcyBmcmVlIG5vdywgYXMgdGhlcmUgYXJlIG1h bnkgb3RoZXIgc291cmNlcyBmb3IgbGF0Y2ggc2V0cyB0aGFuCi0JICogc29tZWJvZHkgcmVs ZWFzaW5nIHRoZSBsb2NrLgorCSAqIElmIHNvbWVib2R5IHdha2VzIHVzIGJldHdlZW4gTFdM b2NrUmVsZWFzZSBhbmQgV2FpdEludGVycnVwdCwKKwkgKiBXYWl0SW50ZXJydXB0IHdpbGwg bm90IHdhaXQuIEJ1dCBhbiBpbnRlcnJ1cHQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbgor CSAqIHRoYXQgdGhlIGxvY2sgaXMgZnJlZSBub3csIGFzIHRoZXJlIGFyZSBtYW55IG90aGVy IHNvdXJjZXMgZm9yIHRoZQorCSAqIGludGVycnVwdCB0aGFuIHNvbWVib2R5IHJlbGVhc2lu ZyB0aGUgbG9jay4KIAkgKgotCSAqIFdlIHByb2Nlc3MgaW50ZXJydXB0cyB3aGVuZXZlciB0 aGUgbGF0Y2ggaGFzIGJlZW4gc2V0LCBzbyBjYW5jZWwvZGllCi0JICogaW50ZXJydXB0cyBh cmUgcHJvY2Vzc2VkIHF1aWNrbHkuIFRoaXMgbWVhbnMgd2UgbXVzdCBub3QgbWluZCBsb3Np bmcKLQkgKiBjb250cm9sIHRvIGEgY2FuY2VsL2RpZSBpbnRlcnJ1cHQgaGVyZS4gIFdlIGRv bid0LCBiZWNhdXNlIHdlIGhhdmUgbm8KLQkgKiBzaGFyZWQtc3RhdGUtY2hhbmdlIHdvcmsg dG8gZG8gYWZ0ZXIgYmVpbmcgZ3JhbnRlZCB0aGUgbG9jayAodGhlCi0JICogZ3JhbnRvciBk aWQgaXQgYWxsKS4gIFdlIGRvIGhhdmUgdG8gd29ycnkgYWJvdXQgY2FuY2VsaW5nIHRoZSBk ZWFkbG9jawotCSAqIHRpbWVvdXQgYW5kIHVwZGF0aW5nIHRoZSBsb2NhbGxvY2sgdGFibGUs IGJ1dCBpZiB3ZSBsb3NlIGNvbnRyb2wgdG8gYW4KLQkgKiBlcnJvciwgTG9ja0Vycm9yQ2xl YW51cCB3aWxsIGZpeCB0aGF0IHVwLgorCSAqIFdlIHByb2Nlc3MgaW50ZXJydXB0cyB3aGVu ZXZlciB0aGUgaW50ZXJydXB0IGhhcyBiZWVuIHNldCwgc28KKwkgKiBjYW5jZWwvZGllIGlu dGVycnVwdHMgYXJlIHByb2Nlc3NlZCBxdWlja2x5LiBUaGlzIG1lYW5zIHdlIG11c3Qgbm90 CisJICogbWluZCBsb3NpbmcgY29udHJvbCB0byBhIGNhbmNlbC9kaWUgaW50ZXJydXB0IGhl cmUuICBXZSBkb24ndCwgYmVjYXVzZQorCSAqIHdlIGhhdmUgbm8gc2hhcmVkLXN0YXRlLWNo YW5nZSB3b3JrIHRvIGRvIGFmdGVyIGJlaW5nIGdyYW50ZWQgdGhlIGxvY2sKKwkgKiAodGhl IGdyYW50b3IgZGlkIGl0IGFsbCkuICBXZSBkbyBoYXZlIHRvIHdvcnJ5IGFib3V0IGNhbmNl bGluZyB0aGUKKwkgKiBkZWFkbG9jayB0aW1lb3V0IGFuZCB1cGRhdGluZyB0aGUgbG9jYWxs b2NrIHRhYmxlLCBidXQgaWYgd2UgbG9zZQorCSAqIGNvbnRyb2wgdG8gYW4gZXJyb3IsIExv Y2tFcnJvckNsZWFudXAgd2lsbCBmaXggdGhhdCB1cC4KIAkgKi8KIAlkbwogCXsKQEAgLTEz OTksOSArMTQwMiw5IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaykKIAkJfQog CQllbHNlCiAJCXsKLQkJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgV0xfTEFUQ0hfU0VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKLQkJCQkJCQkgUEdfV0FJVF9MT0NLIHwgbG9j YWxsb2NrLT50YWcubG9jay5sb2NrdGFnX3R5cGUpOwotCQkJUmVzZXRMYXRjaChNeUxhdGNo KTsKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRF UlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCQkgUEdfV0FJVF9MT0NL IHwgbG9jYWxsb2NrLT50YWcubG9jay5sb2NrdGFnX3R5cGUpOworCQkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJLyogY2hlY2sgZm9yIGRlYWRsb2NrcyBmaXJz dCwgYXMgdGhhdCdzIHByb2JhYmx5IGxvZy13b3J0aHkgKi8KIAkJCWlmIChnb3RfZGVhZGxv Y2tfdGltZW91dCkKIAkJCXsKQEAgLTE2OTMsNyArMTY5Niw3IEBAIFByb2NTbGVlcChMT0NB TExPQ0sgKmxvY2FsbG9jaykKIAogCiAvKgotICogUHJvY1dha2V1cCAtLSB3YWtlIHVwIGEg cHJvY2VzcyBieSBzZXR0aW5nIGl0cyBsYXRjaC4KKyAqIFByb2NXYWtldXAgLS0gd2FrZSB1 cCBhIHByb2Nlc3MgYnkgc2VuZGluZyBpdCBhbiBpbnRlcnJ1cHQuCiAgKgogICoJIEFsc28g cmVtb3ZlIHRoZSBwcm9jZXNzIGZyb20gdGhlIHdhaXQgcXVldWUgYW5kIHNldCBpdHMgbGlu a3MgaW52YWxpZC4KICAqCkBAIC0xNzIyLDcgKzE3MjUsNyBAQCBQcm9jV2FrZXVwKFBHUFJP QyAqcHJvYywgUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1cykKIAlwZ19hdG9taWNfd3JpdGVf dTY0KCZNeVByb2MtPndhaXRTdGFydCwgMCk7CiAKIAkvKiBBbmQgYXdha2VuIGl0ICovCi0J U2V0TGF0Y2goJnByb2MtPnByb2NMYXRjaCk7CisJU2VuZEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhwcm9jKSk7CiB9CiAKIC8qCkBAIC0xODc0 LDQ1ICsxODc3LDE5IEBAIENoZWNrRGVhZExvY2tBbGVydCh2b2lkKQogCWdvdF9kZWFkbG9j a190aW1lb3V0ID0gdHJ1ZTsKIAogCS8qCi0JICogSGF2ZSB0byBzZXQgdGhlIGxhdGNoIGFn YWluLCBldmVuIGlmIGhhbmRsZV9zaWdfYWxhcm0gYWxyZWFkeSBkaWQuIEJhY2sKLQkgKiB0 aGVuIGdvdF9kZWFkbG9ja190aW1lb3V0IHdhc24ndCB5ZXQgc2V0Li4uIEl0J3MgdW5saWtl bHkgdGhhdCB0aGlzCi0JICogZXZlciB3b3VsZCBiZSBhIHByb2JsZW0sIGJ1dCBzZXR0aW5n IGEgc2V0IGxhdGNoIGFnYWluIGlzIGNoZWFwLgorCSAqIEhhdmUgdG8gcmFpc2UgdGhlIGlu dGVycnVwdCBhZ2FpbiwgZXZlbiBpZiBoYW5kbGVfc2lnX2FsYXJtIGFscmVhZHkKKwkgKiBk aWQuIEJhY2sgdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNldC4uLiBJ dCdzIHVubGlrZWx5CisJICogdGhhdCB0aGlzIGV2ZXIgd291bGQgYmUgYSBwcm9ibGVtLCBi dXQgcmFpc2luZyBhbiBpbnRlcnJ1cHQgYWdhaW4gaXMKKwkgKiBjaGVhcC4KIAkgKgogCSAq IE5vdGUgdGhhdCwgd2hlbiB0aGlzIGZ1bmN0aW9uIHJ1bnMgaW5zaWRlIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKCksCi0JICogdGhlIGhhbmRsZXIgZnVuY3Rpb24gc2V0cyB0aGUg bGF0Y2ggYWdhaW4gYWZ0ZXIgdGhlIGxhdGNoIGlzIHNldCBoZXJlLgorCSAqIHRoZSBoYW5k bGVyIGZ1bmN0aW9uIHJhaXNlcyB0aGUgaW50ZXJydXB0IGFnYWluIGFmdGVyIHRoZSBpbnRl cnJ1cHQgaXMKKwkgKiByYWlzZWQgaGVyZS4KIAkgKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsK KwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJZXJybm8gPSBzYXZlX2Vy cm5vOwogfQogCi0vKgotICogUHJvY1dhaXRGb3JTaWduYWwgLSB3YWl0IGZvciBhIHNpZ25h bCBmcm9tIGFub3RoZXIgYmFja2VuZC4KLSAqCi0gKiBBcyB0aGlzIHVzZXMgdGhlIGdlbmVy aWMgcHJvY2VzcyBsYXRjaCB0aGUgY2FsbGVyIGhhcyB0byBiZSByb2J1c3QgYWdhaW5zdAot ICogdW5yZWxhdGVkIHdha2V1cHM6IEFsd2F5cyBjaGVjayB0aGF0IHRoZSBkZXNpcmVkIHN0 YXRlIGhhcyBvY2N1cnJlZCwgYW5kCi0gKiB3YWl0IGFnYWluIGlmIG5vdC4KLSAqLwotdm9p ZAotUHJvY1dhaXRGb3JTaWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbykKLXsKLQkodm9p ZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsIDAsCi0JCQkJCSB3YWl0X2V2ZW50X2luZm8pOwotCVJlc2V0TGF0Y2goTXlMYXRjaCk7 Ci0JQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLX0KLQotLyoKLSAqIFByb2NTZW5kU2lnbmFs IC0gc2V0IHRoZSBsYXRjaCBvZiBhIGJhY2tlbmQgaWRlbnRpZmllZCBieSBQcm9jTnVtYmVy Ci0gKi8KLXZvaWQKLVByb2NTZW5kU2lnbmFsKFByb2NOdW1iZXIgcHJvY051bWJlcikKLXsK LQlpZiAocHJvY051bWJlciA8IDAgfHwgcHJvY051bWJlciA+PSBQcm9jR2xvYmFsLT5hbGxQ cm9jQ291bnQpCi0JCWVsb2coRVJST1IsICJwcm9jTnVtYmVyIG91dCBvZiByYW5nZSIpOwot Ci0JU2V0TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW3Byb2NOdW1iZXJdLnByb2NMYXRj aCk7Ci19Ci0KIC8qCiAgKiBCZWNvbWVMb2NrR3JvdXBMZWFkZXIgLSBkZXNpZ25hdGUgcHJv Y2VzcyBhcyBsb2NrIGdyb3VwIGxlYWRlcgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5j CmluZGV4IGZjMTZkYjkwMTMzLi5lNjFkZjQ2NzVjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMv c3luYy5jCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3 cml0ZXIuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9tZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgpAQCAtNjExLDggKzYxMSw4IEBAIFJlZ2lzdGVyU3luY1JlcXVl c3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUsCiAJCWlmIChy ZXQgfHwgKCFyZXQgJiYgIXJldHJ5T25FcnJvcikpCiAJCQlicmVhazsKIAotCQlXYWl0TGF0 Y2goTlVMTCwgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1RJTUVPVVQsIDEwLAotCQkJCSAg V0FJVF9FVkVOVF9SRUdJU1RFUl9TWU5DX1JFUVVFU1QpOworCQlXYWl0SW50ZXJydXB0KDAs IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9USU1FT1VULCAxMCwKKwkJCQkJICBXQUlUX0VW RU5UX1JFR0lTVEVSX1NZTkNfUkVRVUVTVCk7CiAJfQogCiAJcmV0dXJuIHJldDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwppbmRleCA5NDdmZmI0MDQyMS4uODc4NGVhNzhkY2QgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKQEAgLTUxOSwxNSArNTE5LDE1IEBAIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJy dXB0KGJvb2wgYmxvY2tlZCkKIAkJLyoKIAkJICogV2UncmUgZHlpbmcuICBJZiB0aGVyZSBp cyBubyBkYXRhIGF2YWlsYWJsZSB0byByZWFkLCB0aGVuIGl0J3Mgc2FmZQogCQkgKiAoYW5k IHNhbmUpIHRvIGhhbmRsZSB0aGF0IG5vdy4gIElmIHdlIGhhdmVuJ3QgdHJpZWQgdG8gcmVh ZCB5ZXQsCi0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRo YXQgaWYgdGhlcmUgaXMgbm8gZGF0YQorCQkgKiBtYWtlIHN1cmUgdGhlIGludGVycnVwdCBm bGFnIGlzIHNldCwgc28gdGhhdCBpZiB0aGVyZSBpcyBubyBkYXRhCiAJCSAqIHRoZW4gd2Un bGwgY29tZSBiYWNrIGhlcmUgYW5kIGRpZS4gIElmIHdlJ3JlIGRvbmUgcmVhZGluZywgYWxz bwotCQkgKiBtYWtlIHN1cmUgdGhlIHByb2Nlc3MgbGF0Y2ggaXMgc2V0LCBhcyB3ZSBtaWdo dCd2ZSB1bmRlc2lyYWJseQorCQkgKiBtYWtlIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlz IHNldCwgYXMgd2UgbWlnaHQndmUgdW5kZXNpcmFibHkKIAkJICogY2xlYXJlZCBpdCB3aGls ZSByZWFkaW5nLgogCQkgKi8KIAkJaWYgKGJsb2NrZWQpCiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCQllbHNlCi0JCQlTZXRMYXRjaChNeUxhdGNoKTsKKwkJCVJhaXNlSW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAllcnJubyA9IHNhdmVfZXJybm87CkBA IC01NTMsOSArNTUzLDkgQEAgUHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxv Y2tlZCkKIAkJICogV2UncmUgZHlpbmcuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byB3cml0 ZSwgdGhlbiB3ZSBzaG91bGQgaGFuZGxlCiAJCSAqIHRoYXQgaW1tZWRpYXRlbHksIGVsc2Ug YSBzdHVjayBjbGllbnQgY291bGQgaW5kZWZpbml0ZWx5IGRlbGF5IG91cgogCQkgKiByZXNw b25zZSB0byB0aGUgc2lnbmFsLiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byB3cml0ZSB5ZXQs IG1ha2UKLQkJICogc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIHNvIHRoYXQgaWYg dGhlIHdyaXRlIHdvdWxkIGJsb2NrCisJCSAqIHN1cmUgdGhlIGludGVycnVwdCBmbGFnIGlz IHNldCwgc28gdGhhdCBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKIAkJICogdGhlbiB3ZSds bCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSB3cml0aW5nLCBhbHNv Ci0JCSAqIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcyBsYXRjaCBpcyBzZXQsIGFzIHdlIG1pZ2h0 J3ZlIHVuZGVzaXJhYmx5CisJCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0IGZsYWcgaXMg c2V0LCBhcyB3ZSBtaWdodCd2ZSB1bmRlc2lyYWJseQogCQkgKiBjbGVhcmVkIGl0IHdoaWxl IHdyaXRpbmcuCiAJCSAqLwogCQlpZiAoYmxvY2tlZCkKQEAgLTU3OSw3ICs1NzksNyBAQCBQ cm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkJfQogCQl9CiAJ CWVsc2UKLQkJCVNldExhdGNoKE15TGF0Y2gpOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCX0KIAogCWVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTMwMTIsMTIg KzMwMTIsMTIgQEAgZGllKFNJR05BTF9BUkdTKQogCS8qIGZvciB0aGUgY3VtdWxhdGl2ZSBz dGF0cyBzeXN0ZW0gKi8KIAlwZ1N0YXRTZXNzaW9uRW5kQ2F1c2UgPSBESVNDT05ORUNUX0tJ TExFRDsKIAotCS8qIElmIHdlJ3JlIHN0aWxsIGhlcmUsIHdha2VuIGFueXRoaW5nIHdhaXRp bmcgb24gdGhlIHByb2Nlc3MgbGF0Y2ggKi8KLQlTZXRMYXRjaChNeUxhdGNoKTsKKwkvKiBJ ZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGluZyB3YWl0aW5nIG9uIHRoZSBpbnRl cnJ1cHQgKi8KKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkvKgog CSAqIElmIHdlJ3JlIGluIHNpbmdsZSB1c2VyIG1vZGUsIHdlIHdhbnQgdG8gcXVpdCBpbW1l ZGlhdGVseSAtIHdlIGNhbid0Ci0JICogcmVseSBvbiBsYXRjaGVzIGFzIHRoZXkgd291bGRu J3Qgd29yayB3aGVuIHN0ZGluL3N0ZG91dCBpcyBhIGZpbGUuCisJICogcmVseSBvbiBpbnRl cnJ1cHRzIGFzIHRoZXkgd291bGRuJ3Qgd29yayB3aGVuIHN0ZGluL3N0ZG91dCBpcyBhIGZp bGUuCiAJICogUmF0aGVyIHVnbHksIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGJlIHdvcnRod2hp bGUgdG8gaW52ZXN0IG11Y2ggbW9yZQogCSAqIGVmZm9ydCBqdXN0IGZvciB0aGUgYmVuZWZp dCBvZiBzaW5nbGUgdXNlciBtb2RlLgogCSAqLwpAQCAtMzA0MSw4ICszMDQxLDggQEAgU3Rh dGVtZW50Q2FuY2VsSGFuZGxlcihTSUdOQUxfQVJHUykKIAkJUXVlcnlDYW5jZWxQZW5kaW5n ID0gdHJ1ZTsKIAl9CiAKLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGlu ZyB3YWl0aW5nIG9uIHRoZSBwcm9jZXNzIGxhdGNoICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7 CisJLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBvbiB0 aGUgaW50ZXJydXB0ICovCisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwog fQogCiAvKiBzaWduYWwgaGFuZGxlciBmb3IgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uICov CkBAIC0zMDY4LDcgKzMwNjgsNyBAQCBIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0 KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVh c29uc1tyZWFzb25dID0gdHJ1ZTsKIAlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7 CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0JLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkg cHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KKwkvKiBJTlRFUlJVUFRfR0VORVJBTCB3 aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5kZXggNmZjZmQwMzE0MjguLmQ3ZTlkYTU3YmQxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAgLTM1LDEwICszNSwxMCBAQAogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3NjYW5zdXAuaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdy aXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTM3Mywx NiArMzczLDE2IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZmxvYXQ4CQllbmR0 aW1lOwogCiAJLyoKLQkgKiBXZSBzbGVlcCB1c2luZyBXYWl0TGF0Y2gsIHRvIGVuc3VyZSB0 aGF0IHdlJ2xsIHdha2UgdXAgcHJvbXB0bHkgaWYgYW4KLQkgKiBpbXBvcnRhbnQgc2lnbmFs IChzdWNoIGFzIFNJR0FMUk0gb3IgU0lHSU5UKSBhcnJpdmVzLiAgQmVjYXVzZQotCSAqIFdh aXRMYXRjaCdzIHVwcGVyIGxpbWl0IG9mIGRlbGF5IGlzIElOVF9NQVggbWlsbGlzZWNvbmRz LCBhbmQgdGhlIHVzZXIKLQkgKiBtaWdodCBhc2sgZm9yIG1vcmUgdGhhbiB0aGF0LCB3ZSBz bGVlcCBmb3IgYXQgbW9zdCAxMCBtaW51dGVzIGFuZCB0aGVuCi0JICogbG9vcC4KKwkgKiBX ZSBzbGVlcCB1c2luZyBXYWl0SW50ZXJydXB0LCB0byBlbnN1cmUgdGhhdCB3ZSdsbCB3YWtl IHVwIHByb21wdGx5IGlmCisJICogYW4gaW1wb3J0YW50IHNpZ25hbCAoc3VjaCBhcyBTSUdB TFJNIG9yIFNJR0lOVCkgYXJyaXZlcy4gIEJlY2F1c2UKKwkgKiBXYWl0SW50ZXJydXB0J3Mg dXBwZXIgbGltaXQgb2YgZGVsYXkgaXMgSU5UX01BWCBtaWxsaXNlY29uZHMsIGFuZCB0aGUK KwkgKiB1c2VyIG1pZ2h0IGFzayBmb3IgbW9yZSB0aGFuIHRoYXQsIHdlIHNsZWVwIGZvciBh dCBtb3N0IDEwIG1pbnV0ZXMgYW5kCisJICogdGhlbiBsb29wLgogCSAqCiAJICogQnkgY29t cHV0aW5nIHRoZSBpbnRlbmRlZCBzdG9wIHRpbWUgaW5pdGlhbGx5LCB3ZSBhdm9pZCBhY2N1 bXVsYXRpb24gb2YKIAkgKiBleHRyYSBkZWxheSBhY3Jvc3MgbXVsdGlwbGUgc2xlZXBzLiAg VGhpcyBhbHNvIGVuc3VyZXMgd2Ugd29uJ3QgZGVsYXkKLQkgKiBsZXNzIHRoYW4gdGhlIHNw ZWNpZmllZCB0aW1lIHdoZW4gV2FpdExhdGNoIGlzIHRlcm1pbmF0ZWQgZWFybHkgYnkgYQot CSAqIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2ggYXMgU0lHSFVQLgorCSAqIGxl c3MgdGhhbiB0aGUgc3BlY2lmaWVkIHRpbWUgd2hlbiBXYWl0SW50ZXJydXB0IGlzIHRlcm1p bmF0ZWQgZWFybHkgYnkKKwkgKiBhIG5vbi1xdWVyeS1jYW5jZWxpbmcgc2lnbmFsIHN1Y2gg YXMgU0lHSFVQLgogCSAqLwogI2RlZmluZSBHZXROb3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRD dXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCiAKQEAgLTQwMywxMSArNDAzLDExIEBA IHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCWJyZWFrOwogCi0JCSh2 b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKLQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1F T1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSBkZWxheV9tcywKLQkJCQkJCSBX QUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBkZWxheV9t cywKKwkJCQkJCQkgV0FJVF9FVkVOVF9QR19TTEVFUCk7CisJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAlQR19SRVRVUk5fVk9JRCgpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3RpbWVzdGFtcC5jCmluZGV4IDk2ODJmOWRiZGNhLi5lNGQxNDViMDUyOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYwpAQCAtMTczOCwxMCArMTczOCwxMCBAQCBU aW1lc3RhbXBEaWZmZXJlbmNlKFRpbWVzdGFtcFR6IHN0YXJ0X3RpbWUsIFRpbWVzdGFtcFR6 IHN0b3BfdGltZSwKICAqIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMgLS0gY29u dmVydCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3bwogICogCQl0aW1lc3RhbXBzIGludG8g aW50ZWdlciBtaWxsaXNlY29uZHMKICAqCi0gKiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHRv IGNhbGN1bGF0ZSBhIHdhaXQgdGltZW91dCBmb3IgV2FpdExhdGNoKCkKKyAqIFRoaXMgaXMg dHlwaWNhbGx5IHVzZWQgdG8gY2FsY3VsYXRlIGEgd2FpdCB0aW1lb3V0IGZvciBXYWl0SW50 ZXJydXB0KCkKICAqIG9yIGEgcmVsYXRlZCBmdW5jdGlvbi4gIFRoZSBjaG9pY2Ugb2YgImxv bmciIGFzIHRoZSByZXN1bHQgdHlwZQogICogaXMgdG8gaGFybW9uaXplIHdpdGggdGhhdDsg ZnVydGhlcm1vcmUsIHdlIGNsYW1wIHRoZSByZXN1bHQgdG8gYXQgbW9zdAotICogSU5UX01B WCBtaWxsaXNlY29uZHMsIGJlY2F1c2UgdGhhdCdzIGFsbCB0aGF0IFdhaXRMYXRjaCgpIGFs bG93cy4KKyAqIElOVF9NQVggbWlsbGlzZWNvbmRzLCBiZWNhdXNlIHRoYXQncyBhbGwgdGhh dCBXYWl0SW50ZXJydXB0KCkgYWxsb3dzLgogICoKICAqIFdlIGV4cGVjdCBzdGFydF90aW1l IDw9IHN0b3BfdGltZS4gIElmIG5vdCwgd2UgcmV0dXJuIHplcm8sCiAgKiBzaW5jZSB0aGVu IHdlJ3JlIGFscmVhZHkgcGFzdCB0aGUgcHJldmlvdXNseSBkZXRlcm1pbmVkIHN0b3BfdGlt ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggYjg0NGY5ZmRhZWYuLjc5YmM5 OTljZjI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtNTIsMTUgKzUyLDYg QEAgYm9vbAkJTXlDYW5jZWxLZXlWYWxpZCA9IGZhbHNlOwogaW50MzIJCU15Q2FuY2VsS2V5 ID0gMDsKIGludAkJCU15UE1DaGlsZFNsb3Q7CiAKLS8qCi0gKiBNeUxhdGNoIHBvaW50cyB0 byB0aGUgbGF0Y2ggdGhhdCBzaG91bGQgYmUgdXNlZCBmb3Igc2lnbmFsIGhhbmRsaW5nIGJ5 IHRoZQotICogY3VycmVudCBwcm9jZXNzLiBJdCB3aWxsIGVpdGhlciBwb2ludCB0byBhIHBy b2Nlc3MgbG9jYWwgbGF0Y2ggaWYgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MgZG9lcyBub3Qg aGF2ZSBhIFBHUFJPQyBlbnRyeSBpbiB0aGF0IG1vbWVudCwgb3IgdG8KLSAqIFBHUFJPQy0+ cHJvY0xhdGNoIGlmIGl0IGhhcy4gVGh1cyBpdCBjYW4gYWx3YXlzIGJlIHVzZWQgaW4gc2ln bmFsIGhhbmRsZXJzLAotICogd2l0aG91dCBjaGVja2luZyBmb3IgaXRzIGV4aXN0ZW5jZS4K LSAqLwotc3RydWN0IExhdGNoICpNeUxhdGNoOwotCiAvKgogICogRGF0YURpciBpcyB0aGUg YWJzb2x1dGUgcGF0aCB0byB0aGUgdG9wIGxldmVsIG9mIHRoZSBQR0RBVEEgZGlyZWN0b3J5 IHRyZWUuCiAgKiBFeGNlcHQgZHVyaW5nIGVhcmx5IHN0YXJ0dXAsIHRoaXMgaXMgYWxzbyB0 aGUgc2VydmVyJ3Mgd29ya2luZyBkaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9pbml0L21pc2Npbml0LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L21pc2Np bml0LmMKaW5kZXggZGMzNTIxNDU3YzcuLjgxNjY0ZmMxMWZmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv aW5pdC9taXNjaW5pdC5jCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRp b24vc2xvdHN5bmMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNs dWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTY2LDggKzY1LDYgQEAgQmFja2VuZFR5cGUgTXlC YWNrZW5kVHlwZTsKIC8qIExpc3Qgb2YgbG9jayBmaWxlcyB0byBiZSByZW1vdmVkIGF0IHBy b2MgZXhpdCAqLwogc3RhdGljIExpc3QgKmxvY2tfZmlsZXMgPSBOSUw7CiAKLXN0YXRpYyBM YXRjaCBMb2NhbExhdGNoRGF0YTsKLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCWlnbm9yaW5nIHN5 c3RlbSBpbmRleGVzIHN1cHBvcnQgc3R1ZmYKICAqCkBAIC0xMjYsMTAgKzEyMyw5IEBAIElu aXRQb3N0bWFzdGVyQ2hpbGQodm9pZCkKIAlwcWluaXRtYXNrKCk7CiAjZW5kaWYKIAotCS8q IEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBsYXRjaCBzdXBwb3J0ICovCisJLyogSW5pdGlh bGl6ZSBwcm9jZXNzLWxvY2FsIGludGVycnVwdCBzdXBwb3J0ICovCiAJSW5pdGlhbGl6ZVdh aXRFdmVudFN1cHBvcnQoKTsKLQlJbml0UHJvY2Vzc0xvY2FsTGF0Y2goKTsKLQlJbml0aWFs aXplTGF0Y2hXYWl0U2V0KCk7CisJSW5pdGlhbGl6ZUludGVycnVwdFdhaXRTZXQoKTsKIAog CS8qCiAJICogSWYgcG9zc2libGUsIG1ha2UgdGhpcyBwcm9jZXNzIGEgZ3JvdXAgbGVhZGVy LCBzbyB0aGF0IHRoZSBwb3N0bWFzdGVyCkBAIC0xODcsMTAgKzE4Myw5IEBAIEluaXRTdGFu ZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAogCUluaXRQcm9jZXNzR2xvYmFs cygpOwogCi0JLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGxhdGNoIHN1cHBvcnQgKi8K KwkvKiBJbml0aWFsaXplIHByb2Nlc3MtbG9jYWwgaW50ZXJydXB0IHN1cHBvcnQgKi8KIAlJ bml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCgpOwotCUluaXRQcm9jZXNzTG9jYWxMYXRjaCgp OwotCUluaXRpYWxpemVMYXRjaFdhaXRTZXQoKTsKKwlJbml0aWFsaXplSW50ZXJydXB0V2Fp dFNldCgpOwogCiAJLyoKIAkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBJbml0UG9zdG1hc3Rl ckNoaWxkLCBpbml0aWFsaXplIHNpZ25hbCBtYXNrIGhlcmUuCkBAIC0yMTEsNDggKzIwNiw2 IEBAIEluaXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCkKIAkJZ2V0X3Br Z2xpYl9wYXRoKG15X2V4ZWNfcGF0aCwgcGtnbGliX3BhdGgpOwogfQogCi12b2lkCi1Td2l0 Y2hUb1NoYXJlZExhdGNoKHZvaWQpCi17Ci0JQXNzZXJ0KE15TGF0Y2ggPT0gJkxvY2FsTGF0 Y2hEYXRhKTsKLQlBc3NlcnQoTXlQcm9jICE9IE5VTEwpOwotCi0JTXlMYXRjaCA9ICZNeVBy b2MtPnByb2NMYXRjaDsKLQotCWlmIChGZUJlV2FpdFNldCkKLQkJTW9kaWZ5V2FpdEV2ZW50 KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldExhdGNoUG9zLCBXTF9MQVRDSF9TRVQsCi0JCQkJ CQlNeUxhdGNoKTsKLQotCS8qCi0JICogU2V0IHRoZSBzaGFyZWQgbGF0Y2ggYXMgdGhlIGxv Y2FsIG9uZSBtaWdodCBoYXZlIGJlZW4gc2V0LiBUaGlzCi0JICogc2hvdWxkbid0IG5vcm1h bGx5IGJlIG5lY2Vzc2FyeSBhcyBjb2RlIGlzIHN1cHBvc2VkIHRvIGNoZWNrIHRoZQotCSAq IGNvbmRpdGlvbiBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIGxhdGNoLCBidXQgYSBiaXQgY2Fy ZSBjYW4ndCBodXJ0LgotCSAqLwotCVNldExhdGNoKE15TGF0Y2gpOwotfQotCi12b2lkCi1J bml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCkKLXsKLQlNeUxhdGNoID0gJkxvY2FsTGF0Y2hE YXRhOwotCUluaXRMYXRjaChNeUxhdGNoKTsKLX0KLQotdm9pZAotU3dpdGNoQmFja1RvTG9j YWxMYXRjaCh2b2lkKQotewotCUFzc2VydChNeUxhdGNoICE9ICZMb2NhbExhdGNoRGF0YSk7 Ci0JQXNzZXJ0KE15UHJvYyAhPSBOVUxMICYmIE15TGF0Y2ggPT0gJk15UHJvYy0+cHJvY0xh dGNoKTsKLQotCU15TGF0Y2ggPSAmTG9jYWxMYXRjaERhdGE7Ci0KLQlpZiAoRmVCZVdhaXRT ZXQpCi0JCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRMYXRjaFBv cywgV0xfTEFUQ0hfU0VULAotCQkJCQkJTXlMYXRjaCk7Ci0KLQlTZXRMYXRjaChNeUxhdGNo KTsKLX0KLQogLyoKICAqIFJldHVybiBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyByZXByZXNl bnRhdGlvbiBvZiBhIEJhY2tlbmRUeXBlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2luaXQvcG9zdGluaXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYwppbmRleCBlZTFhOWQ1ZDk4Yi4uZTExMTAxYTM2YjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9p bml0L3Bvc3Rpbml0LmMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgpAQCAtMTM4Myw3ICsxMzg0LDcg QEAgVHJhbnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewogCVRyYW5zYWN0aW9uVGlt ZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVNldExh dGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0K IAogc3RhdGljIHZvaWQKQEAgLTEzOTEsNyArMTM5Miw3IEBAIElkbGVJblRyYW5zYWN0aW9u U2Vzc2lvblRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJSWRsZUluVHJhbnNhY3Rpb25TZXNz aW9uVGltZW91dFBlbmRpbmcgPSB0cnVlOwogCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwot CVNldExhdGNoKE15TGF0Y2gpOworCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOTksNyArMTQwMCw3IEBAIElkbGVTZXNzaW9u VGltZW91dEhhbmRsZXIodm9pZCkKIHsKIAlJZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0g dHJ1ZTsKIAlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsK KwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0xNDA3LDcgKzE0MDgsNyBAQCBJZGxlU3RhdHNVcGRhdGVUaW1lb3V0SGFuZGxlcih2 b2lkKQogewogCUlkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKIAlJbnRl cnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlTZXRMYXRjaChNeUxhdGNoKTsKKwlSYWlzZUludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDE1LDcg KzE0MTYsNyBAQCBDbGllbnRDaGVja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJQ2hlY2tD bGllbnRDb25uZWN0aW9uUGVuZGluZyA9IHRydWU7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7Ci0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90 aW1lb3V0LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYwppbmRleCBkOTJl ZmExMjU1MC4uZTkwZDgyYzdkZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvdGltZW91dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvdGltZW91dC5jCkBA IC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KIAogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgotI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJwb3N0 bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVvdXQuaCIKICNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIApAQCAtMzcxLDEwICszNzEsMTAgQEAgaGFuZGxl X3NpZ19hbGFybShTSUdOQUxfQVJHUykKIAlIT0xEX0lOVEVSUlVQVFMoKTsKIAogCS8qCi0J ICogU0lHQUxSTSBpcyBhbHdheXMgY2F1c2UgZm9yIHdha2luZyBhbnl0aGluZyB3YWl0aW5n IG9uIHRoZSBwcm9jZXNzCi0JICogbGF0Y2guCisJICogU0lHQUxSTSBpcyBhbHdheXMgY2F1 c2UgZm9yIHdha2luZyBhbnl0aGluZyB3YWl0aW5nIG9uCisJICogSU5URVJSVVBUX0dFTkVS QUwuCiAJICovCi0JU2V0TGF0Y2goTXlMYXRjaCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwogCiAJLyoKIAkgKiBBbHdheXMgcmVzZXQgc2lnbmFsX3BlbmRpbmcs IGV2ZW4gaWYgIWFsYXJtX2VuYWJsZWQsIHNpbmNlIGluZGVlZCBubwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdy L21jeHQuYwppbmRleCA5MTA2MGRlMGFiNy4uNTIzM2E2NWFhYTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvbWN4dC5jCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBIYW5kbGVMb2dNZW1vcnlDb250ZXh0 SW50ZXJydXB0KHZvaWQpCiB7CiAJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CiAJTG9nTWVt b3J5Q29udGV4dFBlbmRpbmcgPSB0cnVlOwotCS8qIGxhdGNoIHdpbGwgYmUgc2V0IGJ5IHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyICovCisJLyogSU5URVJSVVBUX0dFTkVSQUwgd2ls bCBiZSByYWlzZWQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2OTAuLmEyNTdkMGE4ZWU2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsNiArMTQsOCBAQAogI2lmbmRlZiBQQVJB TExFTF9ICiAjZGVmaW5lIFBBUkFMTEVMX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAj aW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGli cHEtYmUtZmUtaGVscGVycy5oCmluZGV4IDE2MjA1YjgyNGZhLi5kZDM2MWJlNGFmZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUtaGVscGVycy5oCisrKyBi L3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaApAQCAtNDIsOCArNDIs OCBAQAogCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCkBAIC0xNzcsOCAr MTc3LDggQEAgbGlicHFzcnZfY29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQz MiB3YWl0X2V2ZW50X2luZm8pCiAJCXJldHVybjsKIAogCS8qCi0JICogV2FpdExhdGNoT3JT b2NrZXQoKSBjYW4gY29uY2VpdmFibHkgZmFpbCwgaGFuZGxlIHRoYXQgY2FzZSBoZXJlIGlu c3RlYWQKLQkgKiBvZiByZXF1aXJpbmcgYWxsIGNhbGxlcnMgdG8gZG8gc28uCisJICogV2Fp dEludGVycnVwdE9yU29ja2V0KCkgY2FuIGNvbmNlaXZhYmx5IGZhaWwsIGhhbmRsZSB0aGF0 IGNhc2UgaGVyZQorCSAqIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFsbCBjYWxsZXJzIHRvIGRv IHNvLgogCSAqLwogCVBHX1RSWSgpOwogCXsKQEAgLTIwOSwxNiArMjA5LDE2IEBAIGxpYnBx c3J2X2Nvbm5lY3RfaW50ZXJuYWwoUEdjb25uICpjb25uLCB1aW50MzIgd2FpdF9ldmVudF9p bmZvKQogCQkJZWxzZQogCQkJCWlvX2ZsYWcgPSBXTF9TT0NLRVRfV1JJVEVBQkxFOwogCi0J CQlyYyA9IFdhaXRMYXRjaE9yU29ja2V0KE15TGF0Y2gsCi0JCQkJCQkJCSAgIFdMX0VYSVRf T05fUE1fREVBVEggfCBXTF9MQVRDSF9TRVQgfCBpb19mbGFnLAotCQkJCQkJCQkgICBQUXNv Y2tldChjb25uKSwKLQkJCQkJCQkJICAgMCwKLQkJCQkJCQkJICAgd2FpdF9ldmVudF9pbmZv KTsKKwkJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8IGlvX2Zs YWcsCisJCQkJCQkJCQkgICBQUXNvY2tldChjb25uKSwKKwkJCQkJCQkJCSAgIDAsCisJCQkJ CQkJCQkgICB3YWl0X2V2ZW50X2luZm8pOwogCiAJCQkvKiBJbnRlcnJ1cHRlZD8gKi8KLQkJ CWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKIAkJ CXsKLQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMKTsKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJfQogCkBA IC0zNDEsMTcgKzM0MSwxNyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29ubiwg dWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAl7CiAJCWludAkJCXJjOwogCi0JCXJjID0gV2Fp dExhdGNoT3JTb2NrZXQoTXlMYXRjaCwKLQkJCQkJCQkgICBXTF9FWElUX09OX1BNX0RFQVRI IHwgV0xfTEFUQ0hfU0VUIHwKLQkJCQkJCQkgICBXTF9TT0NLRVRfUkVBREFCTEUsCi0JCQkJ CQkJICAgUFFzb2NrZXQoY29ubiksCi0JCQkJCQkJICAgMCwKLQkJCQkJCQkgICB3YWl0X2V2 ZW50X2luZm8pOworCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tldChJTlRFUlJVUFRfR0VO RVJBTCwKKwkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8 CisJCQkJCQkJCSAgIFdMX1NPQ0tFVF9SRUFEQUJMRSwKKwkJCQkJCQkJICAgUFFzb2NrZXQo Y29ubiksCisJCQkJCQkJCSAgIDAsCisJCQkJCQkJCSAgIHdhaXRfZXZlbnRfaW5mbyk7CiAK IAkJLyogSW50ZXJydXB0ZWQ/ICovCi0JCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJaWYg KHJjICYgV0xfSU5URVJSVVBUKQogCQl7Ci0JCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIAkJfQogCkBAIC00MDcsNyArNDA3LDcgQEAgbGlicHFzcnZfY2FuY2VsKFBH Y29ubiAqY29ubiwgVGltZXN0YW1wVHogZW5kdGltZSkKIAkJCVBvc3RncmVzUG9sbGluZ1N0 YXR1c1R5cGUgcG9sbHJlczsKIAkJCVRpbWVzdGFtcFR6IG5vdzsKIAkJCWxvbmcJCWN1cl90 aW1lb3V0OwotCQkJaW50CQkJd2FpdEV2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCQkJaW50CQkJd2FpdEV2ZW50cyA9IFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOwogCiAJCQlwb2xs cmVzID0gUFFjYW5jZWxQb2xsKGNhbmNlbF9jb25uKTsKIAkJCWlmIChwb2xscmVzID09IFBH UkVTX1BPTExJTkdfT0spCkBAIC00MzYsMTAgKzQzNiwxMSBAQCBsaWJwcXNydl9jYW5jZWwo UEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJfQogCiAJCQkvKiBTbGVl cCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCQkJV2FpdExhdGNoT3JTb2Nr ZXQoTXlMYXRjaCwgd2FpdEV2ZW50cywgUFFjYW5jZWxTb2NrZXQoY2FuY2VsX2Nvbm4pLAot CQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBHX1dBSVRfQ0xJRU5UKTsKKwkJCVdhaXRJbnRlcnJ1 cHRPclNvY2tldChJTlRFUlJVUFRfR0VORVJBTCwgd2FpdEV2ZW50cywKKwkJCQkJCQkJICBQ UWNhbmNlbFNvY2tldChjYW5jZWxfY29ubiksCisJCQkJCQkJCSAgY3VyX3RpbWVvdXQsIFBH X1dBSVRfQ0xJRU5UKTsKIAotCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaCBiL3NyYy9p bmNsdWRlL2xpYnBxL2xpYnBxLmgKaW5kZXggYWViNjZjYTQwY2YuLjZkZTAzY2UxMTYzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCisrKyBiL3NyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLmgKQEAgLTE4LDcgKzE4LDcgQEAKIAogI2luY2x1ZGUgImxpYi9zdHJp bmdpbmZvLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEtYmUuaCIKLSNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKIAogCiAv KgpAQCAtNjEsNyArNjEsNyBAQCBleHRlcm4gY29uc3QgUEdETExJTVBPUlQgUFFjb21tTWV0 aG9kcyAqUHFDb21tTWV0aG9kczsKIGV4dGVybiBQR0RMTElNUE9SVCBXYWl0RXZlbnRTZXQg KkZlQmVXYWl0U2V0OwogCiAjZGVmaW5lIEZlQmVXYWl0U2V0U29ja2V0UG9zIDAKLSNkZWZp bmUgRmVCZVdhaXRTZXRMYXRjaFBvcyAxCisjZGVmaW5lIEZlQmVXYWl0U2V0SW50ZXJydXB0 UG9zIDEKICNkZWZpbmUgRmVCZVdhaXRTZXRORXZlbnRzIDMKIAogZXh0ZXJuIGludAlMaXN0 ZW5TZXJ2ZXJQb3J0KGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmhvc3ROYW1lLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4u aAppbmRleCBhMmI2MzQ5NWVlYy4uZjViNzczYjc5ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xOTAs NyArMTkwLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVByb2NQaWQ7CiBleHRlcm4g UEdETExJTVBPUlQgcGdfdGltZV90IE15U3RhcnRUaW1lOwogZXh0ZXJuIFBHRExMSU1QT1JU IFRpbWVzdGFtcFR6IE15U3RhcnRUaW1lc3RhbXA7CiBleHRlcm4gUEdETExJTVBPUlQgc3Ry dWN0IFBvcnQgKk15UHJvY1BvcnQ7Ci1leHRlcm4gUEdETExJTVBPUlQgc3RydWN0IExhdGNo ICpNeUxhdGNoOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlDYW5jZWxLZXlWYWxpZDsK IGV4dGVybiBQR0RMTElNUE9SVCBpbnQzMiBNeUNhbmNlbEtleTsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgTXlQTUNoaWxkU2xvdDsKQEAgLTMyMyw5ICszMjIsNiBAQCBleHRlcm4gUEdE TExJTVBPUlQgY2hhciAqRGF0YWJhc2VQYXRoOwogLyogbm93IGluIHV0aWxzL2luaXQvbWlz Y2luaXQuYyAqLwogZXh0ZXJuIHZvaWQgSW5pdFBvc3RtYXN0ZXJDaGlsZCh2b2lkKTsKIGV4 dGVybiB2b2lkIEluaXRTdGFuZGFsb25lUHJvY2Vzcyhjb25zdCBjaGFyICphcmd2MCk7Ci1l eHRlcm4gdm9pZCBJbml0UHJvY2Vzc0xvY2FsTGF0Y2godm9pZCk7Ci1leHRlcm4gdm9pZCBT d2l0Y2hUb1NoYXJlZExhdGNoKHZvaWQpOwotZXh0ZXJuIHZvaWQgU3dpdGNoQmFja1RvTG9j YWxMYXRjaCh2b2lkKTsKIAogLyoKICAqIE15QmFja2VuZFR5cGUgaW5kaWNhdGVzIHdoYXQg a2luZCBvZiBhIGJhY2tlbmQgdGhpcyBpcy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bv c3RtYXN0ZXIvaW50ZXJydXB0LmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVw dC5oCmluZGV4IDNiZjQ5MzIwODQ2Li4zNDZmOWNhZThlMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2ludGVycnVwdC5oCkBAIC0xLDEzICsxLDY4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCiAgKiBpbnRlcnJ1cHQuaAotICoJICBJbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGlu ZXMuCisgKgkgIEludGVyLXByb2Nlc3MgaW50ZXJydXB0cwogICoKLSAqIFJlc3BvbnNlcyB0 byBpbnRlcnJ1cHRzIGFyZSBmYWlybHkgdmFyaWVkIGFuZCBtYW55IHR5cGVzIG9mIGJhY2tl bmRzCi0gKiBoYXZlIHRoZWlyIG93biBpbXBsZW1lbnRhdGlvbnMsIGJ1dCB3ZSBwcm92aWRl IGEgZmV3IGdlbmVyaWMgdGhpbmdzCi0gKiBoZXJlIHRvIGZhY2lsaXRhdGUgY29kZSByZXVz ZS4KKyAqICJJbnRlcnJ1cHRzIiBhcmUgYSBzZXQgb2YgZmxhZ3MgdGhhdCByZXByZXNlbnQg Y29uZGl0aW9ucyB0aGF0IHNob3VsZCBiZQorICogaGFuZGxlZCBhdCBhIGxhdGVyIHRpbWUu ICBUaGV5IGFyZSByb3VnaGx5IGFuYWxvZ291cyB0byBVbml4IHNpZ25hbHMsCisgKiBleGNl cHQgdGhhdCB0aGV5IGFyZSBoYW5kbGVkIGNvb3BlcmF0aXZlbHkgYnkgY2hlY2tpbmcgZm9y IHRoZW0gYXQgbWFueQorICogcG9pbnRzIGluIHRoZSBjb2RlLgogICoKLSAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorICogSW50ZXJydXB0IGZsYWdzIGNhbiBiZSAicmFpc2VkIiBzeW5jaHJvbm91 c2x5IGJ5IGNvZGUgdGhhdCB3YW50cyB0byBkZWZlcgorICogYW4gYWN0aW9uLCBvciBhc3lu Y2hyb25vdXNseSBieSB0aW1lciBzaWduYWwgaGFuZGxlcnMsIG90aGVyIHNpZ25hbAorICog aGFuZGxlcnMgb3IgInNlbnQiIGJ5IG90aGVyIGJhY2tlbmRzIHNldHRpbmcgdGhlbSBkaXJl Y3RseS4KKyAqCisgKiBNb3N0IGNvZGUgY3VycmVudGx5IGRlYWxzIHdpdGggdGhlIElOVEVS UlVQVF9HRU5FUkFMIGludGVycnVwdC4gSXQgaXMKKyAqIHJhaXNlZCBieSBhbnkgb2YgdGhl IGV2ZW50cyBjaGVja2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIGxpa2UgcXVlcnkK KyAqIGNhbmNlbGxhdGlvbiBvciBpZGxlIHNlc3Npb24gdGltZW91dC4gV2VsbCBiZWhhdmVk IGJhY2tlbmQgY29kZSBwZXJmb3JtcworICogQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBwZXJp b2RpY2FsbHkgaW4gbG9uZyBjb21wdXRhdGlvbnMsIGFuZCBzaG91bGQgbmV2ZXIKKyAqIHNs ZWVwIHVzaW5nIG1lY2hhbmlzbXMgb3RoZXIgdGhhbiB0aGUgV2FpdEV2ZW50U2V0IG1lY2hh bmlzbSBvciB0aGUgbW9yZQorICogY29udmVuaWVudCBXYWl0SW50ZXJydXB0L1dhaXRTb2Nr ZXJPckludGVycnVwdCBmdW5jdGlvbnMgKGV4Y2VwdCBmb3IKKyAqIGJvdW5kZWQgc2hvcnQg cGVyaW9kcywgZWcgTFdMb2NrIHdhaXRzKSwgc28gdGhleSBzaG91bGQgcmVhY3QgaW4gZ29v ZCB0aW1lLgorICoKKyAqIFRoZSAic3RhbmRhcmQiIHNldCBvZiBpbnRlcnJ1cHRzIGlzIGhh bmRsZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgYW5kCisgKiBjb25zaXN0cyBvZiB0 YXNrcyB0aGF0IGFyZSBzYWZlIHRvIHBlcmZvcm0gYXQgbW9zdCB0aW1lcy4gIFRoZXkgY2Fu IGJlCisgKiBzdXBwcmVzc2VkIGJ5IEhPTERfSU5URVJSVVBUUygpL1JFU1VNRV9JTlRFUlJV UFRTKCkuCisgKgorICoKKyAqIFRoZSBjb3JyZWN0IHBhdHRlcm4gdG8gd2FpdCBmb3IgZXZl bnQocykgdXNpbmcgSU5URVJSVVBUX0dFTkVSQUwgaXM6CisgKgorICogZm9yICg7OykKKyAq IHsKKyAqCSAgIENsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKyAqCSAgIGlm ICh3b3JrIHRvIGRvKQorICoJCSAgIERvIFN0dWZmKCk7CisgKgkgICBXYWl0SW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOworICogfQorICoKKyAqIEl0J3MgaW1wb3J0YW50 IHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgKmJlZm9yZSogY2hlY2tpbmcgaWYgdGhlcmUncyB3 b3JrIHRvCisgKiBkby4gT3RoZXJ3aXNlLCBpZiBzb21lb25lIHNldHMgdGhlIGludGVycnVw dCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlCisgKiBDbGVhckludGVycnVwdCgpIGNhbGws IHlvdSB3aWxsIG1pc3MgaXQgYW5kIFdhaXQgd2lsbCBpbmNvcnJlY3RseSBibG9jay4KKyAq CisgKiBBbm90aGVyIHZhbGlkIGNvZGluZyBwYXR0ZXJuIGxvb2tzIGxpa2U6CisgKgorICog Zm9yICg7OykKKyAqIHsKKyAqCSAgIGlmICh3b3JrIHRvIGRvKQorICoJCSAgIERvIFN0dWZm KCk7IC8vIGluIHBhcnRpY3VsYXIsIGV4aXQgbG9vcCBpZiBzb21lIGNvbmRpdGlvbiBzYXRp c2ZpZWQKKyAqCSAgIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIC4uLik7Cisg KgkgICBDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisgKiB9CisgKgorICog VGhpcyBpcyB1c2VmdWwgdG8gcmVkdWNlIGludGVycnVwdCB0cmFmZmljIGlmIGl0J3MgZXhw ZWN0ZWQgdGhhdCB0aGUgbG9vcCdzCisgKiB0ZXJtaW5hdGlvbiBjb25kaXRpb24gd2lsbCBv ZnRlbiBiZSBzYXRpc2ZpZWQgaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbjsgdGhlCisgKiBjb3N0 IGlzIGFuIGV4dHJhIGxvb3AgaXRlcmF0aW9uIGJlZm9yZSBibG9ja2luZyB3aGVuIGl0IGlz IG5vdC4gIFdoYXQgbXVzdAorICogYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3Mg Zm9yIGFzeW5jaHJvbm91cyBldmVudHMgYWZ0ZXIKKyAqIFdhaXRJbnRlcnJ1cHQgYW5kIGJl Zm9yZSBDbGVhckludGVycnVwdCwgYXMgdGhhdCBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24u CisgKgorICogVG8gd2FrZSB1cCB0aGUgd2FpdGVyLCB5b3UgbXVzdCBmaXJzdCBzZXQgYSBn bG9iYWwgZmxhZyBvciBzb21ldGhpbmcgZWxzZQorICogdGhhdCB0aGUgd2FpdCBsb29wIHRl c3RzIGluIHRoZSAiaWYgKHdvcmsgdG8gZG8pIiBwYXJ0LCBhbmQgY2FsbAorICogU2VuZElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCkgKmFmdGVyKiB0aGF0LiBTZW5kSW50ZXJydXB0 IGlzIGRlc2lnbmVkIHRvCisgKiByZXR1cm4gcXVpY2tseSBpZiB0aGUgaW50ZXJydXB0IGlz IGFscmVhZHkgc2V0LiBJbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zCisgKiB3aXRoIG5lc3Rl ZCBsb29wcyB0aGF0IGNhbiBjb25zdW1lIGRpZmZlcmVudCBldmVudHMsIHlvdSBjYW4gZGVm aW5lIHlvdXIKKyAqIG93biBJTlRFUlJVUFRfKiBmbGFnIGluc3RlYWQgb2YgcmVseWluZyBv biBJTlRFUlJVUFRfR0VORVJBTC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCiAgKgogICogSURFTlRJRklDQVRJT04KQEAgLTE5LDExICs3NCw5NyBAQAog I2lmbmRlZiBJTlRFUlJVUFRfSAogI2RlZmluZSBJTlRFUlJVUFRfSAogCisjaW5jbHVkZSAi cG9ydC9hdG9taWNzLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jbnVtYmVyLmgiCisjaW5j bHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKKwogI2luY2x1ZGUgPHNpZ25hbC5oPgog CitleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqTXlQZW5kaW5nSW50ZXJy dXB0czsKKwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBDb25m aWdSZWxvYWRQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCBTaHV0ZG93blJlcXVlc3RQZW5kaW5nOwogCisvKgorICogRmxhZ3MgaW4gdGhlIHBl bmRpbmcgaW50ZXJydXB0cyBiaXRtYXNrLiBFYWNoIHZhbHVlIHJlcHJlc2VudHMgb25lIGJp dCBpbgorICogdGhlIGJpdG1hc2suCisgKi8KK3R5cGVkZWYgZW51bQoreworCS8qCisJICog U0xFRVBJTkdfT05fSU5URVJSVVBUUyBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFja2VuZCBpcyBj dXJyZW50bHkgYmxvY2tlZAorCSAqIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdC4gSWYgaXQn cyBzZXQsIHRoZSBiYWNrZW5kIG5lZWRzIHRvIGJlIHdva2VuIHVwCisJICogd2hlbiBhIGJp dCBpbiB0aGUgcGVuZGluZyBpbnRlcnJ1cHRzIG1hc2sgaXMgc2V0LiBJdCdzIHVzZWQgaW50 ZXJuYWxseQorCSAqIGJ5IHRoZSBpbnRlcnJ1cHQgbWFjaGluZXJ5LCBhbmQgY2Fubm90IGJl IHVzZWQgZGlyZWN0bHkgaW4gdGhlIHB1YmxpYworCSAqIGZ1bmN0aW9ucy4gSXQncyBuYW1l ZCBkaWZmZXJlbnRseSB0byBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBhY3R1YWwKKwkgKiBp bnRlcnJ1cHQgZmxhZ3MuCisJICovCisJU0xFRVBJTkdfT05fSU5URVJSVVBUUyA9IDEgPDwg MCwKKworCS8qCisJICogSU5URVJSVVBUX0dFTkVSQUwgaXMgbXVsdGlwbGV4ZWQgZm9yIG1h bnkgcmVhc29ucywgbGlrZSBxdWVyeQorCSAqIGNhbmNlbGxhdGlvbiB0ZXJtaW5hdGlvbiBy ZXF1ZXN0cywgcmVjb3ZlcnkgY29uZmxpY3RzLCBhbmQgY29uZmlnCisJICogcmVsb2FkIHJl cXVlc3RzLiAgVXBvbiByZWNlaXZpbmcgSU5URVJSVVBUX0dFTkVSQUwsIHlvdSBzaG91bGQg Y2FsbAorCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJvY2VzcyB0aG9zZSByZXF1 ZXN0cy4gIEl0IGlzIGFsc28gdXNlZCBmb3IKKwkgKiB2YXJpb3VzIG90aGVyIGNvbnRleHQt ZGVwZW5kZW50IHB1cnBvc2VzLCBidXQgbm90ZSB0aGF0IGlmIGl0J3MgdXNlZCB0bworCSAq IHdha2UgdXAgZm9yIG90aGVyIHJlYXNvbnMsIHlvdSBtdXN0IHN0aWxsIGNhbGwgQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKQorCSAqIG9uY2UgcGVyIGl0ZXJhdGlvbi4KKwkgKi8KKwlJTlRF UlJVUFRfR0VORVJBTCA9IDEgPDwgMSwKKworCS8qCisJICogSU5URVJSVVBUX1JFQ09WRVJZ X1dBS0VVUCBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1cCBwcm9jZXNzLCB0byB0ZWxsCisJ ICogaXQgdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FMIHJlcGxheS4gSXQncyBzZW50IGJ5 IFdBTCByZWNlaXZlciB3aGVuCisJICogbW9yZSBXQUwgYXJyaXZlcywgb3Igd2hlbiBwcm9t b3Rpb24gaXMgcmVxdWVzdGVkLgorCSAqLworCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5V RSA9IDEgPDwgMiwKK30gSW50ZXJydXB0VHlwZTsKKworLyoKKyAqIFRlc3QgYW4gaW50ZXJy dXB0IGZsYWcgKG9mIGZsYWdzKS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitJc0ludGVy cnVwdFBlbmRpbmcodWludDMyIGludGVycnVwdE1hc2spCit7CisJcmV0dXJuIChwZ19hdG9t aWNfcmVhZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cykgJiBpbnRlcnJ1cHRNYXNrKSAhPSAw OworfQorCisvKgorICogQ2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorQ2xlYXJJbnRlcnJ1cHQodWludDMyIGludGVycnVwdE1hc2spCit7CisJ cGdfYXRvbWljX2ZldGNoX2FuZF91MzIoTXlQZW5kaW5nSW50ZXJydXB0cywgfmludGVycnVw dE1hc2spOworfQorCisvKgorICogVGVzdCBhbmQgY2xlYXIgYW4gaW50ZXJydXB0IGZsYWcu CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ29uc3VtZUludGVycnVwdCh1aW50MzIgaW50 ZXJydXB0TWFzaykKK3sKKwlpZiAobGlrZWx5KCFJc0ludGVycnVwdFBlbmRpbmcoaW50ZXJy dXB0TWFzaykpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlDbGVhckludGVycnVwdChpbnRlcnJ1 cHRNYXNrKTsKKworCXJldHVybiB0cnVlOworfQorCitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IENvbmZpZ1JlbG9hZFBlbmRpbmc7CitleHRlcm4gUEdETExJ TVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFNodXRkb3duUmVxdWVzdFBlbmRpbmc7CisK K2V4dGVybiB2b2lkIFJhaXNlSW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrKTsKK2V4 dGVybiB2b2lkIFNlbmRJbnRlcnJ1cHQodWludDMyIGludGVycnVwdE1hc2ssIFByb2NOdW1i ZXIgcGdwcm9jbm8pOworZXh0ZXJuIGludAlXYWl0SW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1 cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0LAorCQkJCQkJICB1aW50MzIg d2FpdF9ldmVudF9pbmZvKTsKK2V4dGVybiBpbnQJV2FpdEludGVycnVwdE9yU29ja2V0KHVp bnQzMiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgcGdzb2NrZXQgc29jaywKKwkJ CQkJCQkJICBsb25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJu IHZvaWQgU3dpdGNoVG9Mb2NhbEludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9pZCBTd2l0 Y2hUb1NoYXJlZEludGVycnVwdHModm9pZCk7CitleHRlcm4gdm9pZCBJbml0aWFsaXplSW50 ZXJydXB0V2FpdFNldCh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgUHJvY2Vzc01haW5Mb29wSW50 ZXJydXB0cyh2b2lkKTsKIGV4dGVybiB2b2lkIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxv YWQoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhp dChTSUdOQUxfQVJHUyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNo LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xhdGNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGU0MWRjNzA3ODVhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2xhdGNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gKgotICogbGF0Y2guaAotICoJICBSb3V0aW5lcyBmb3IgaW50 ZXJwcm9jZXNzIGxhdGNoZXMKLSAqCi0gKiBBIGxhdGNoIGlzIGEgYm9vbGVhbiB2YXJpYWJs ZSwgd2l0aCBvcGVyYXRpb25zIHRoYXQgbGV0IHByb2Nlc3NlcyBzbGVlcAotICogdW50aWwg aXQgaXMgc2V0LiBBIGxhdGNoIGNhbiBiZSBzZXQgZnJvbSBhbm90aGVyIHByb2Nlc3MsIG9y IGEgc2lnbmFsCi0gKiBoYW5kbGVyIHdpdGhpbiB0aGUgc2FtZSBwcm9jZXNzLgotICoKLSAq IFRoZSBsYXRjaCBpbnRlcmZhY2UgaXMgYSByZWxpYWJsZSByZXBsYWNlbWVudCBmb3IgdGhl IGNvbW1vbiBwYXR0ZXJuIG9mCi0gKiB1c2luZyBwZ191c2xlZXAoKSBvciBzZWxlY3QoKSB0 byB3YWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMsIHdoZXJlIHRoZQotICogc2lnbmFsIGhh bmRsZXIgc2V0cyBhIGZsYWcgdmFyaWFibGUuIEJlY2F1c2Ugb24gc29tZSBwbGF0Zm9ybXMg YW4KLSAqIGluY29taW5nIHNpZ25hbCBkb2Vzbid0IGludGVycnVwdCBzbGVlcCwgYW5kIGV2 ZW4gb24gcGxhdGZvcm1zIHdoZXJlIGl0Ci0gKiBkb2VzIHRoZXJlIGlzIGEgcmFjZSBjb25k aXRpb24gaWYgdGhlIHNpZ25hbCBhcnJpdmVzIGp1c3QgYmVmb3JlCi0gKiBlbnRlcmluZyB0 aGUgc2xlZXAsIHRoZSBjb21tb24gcGF0dGVybiBtdXN0IHBlcmlvZGljYWxseSB3YWtlIHVw IGFuZAotICogcG9sbCB0aGUgZmxhZyB2YXJpYWJsZS4gVGhlIHBzZWxlY3QoKSBzeXN0ZW0g Y2FsbCB3YXMgaW52ZW50ZWQgdG8gc29sdmUKLSAqIHRoaXMgcHJvYmxlbSwgYnV0IGl0IGlz IG5vdCBwb3J0YWJsZSBlbm91Z2guIExhdGNoZXMgYXJlIGRlc2lnbmVkIHRvCi0gKiBvdmVy Y29tZSB0aGVzZSBsaW1pdGF0aW9ucywgYWxsb3dpbmcgeW91IHRvIHNsZWVwIHdpdGhvdXQg cG9sbGluZyBhbmQKLSAqIGVuc3VyaW5nIHF1aWNrIHJlc3BvbnNlIHRvIHNpZ25hbHMgZnJv bSBvdGhlciBwcm9jZXNzZXMuCi0gKgotICogVGhlcmUgYXJlIHR3byBraW5kcyBvZiBsYXRj aGVzOiBsb2NhbCBhbmQgc2hhcmVkLiBBIGxvY2FsIGxhdGNoIGlzCi0gKiBpbml0aWFsaXpl ZCBieSBJbml0TGF0Y2gsIGFuZCBjYW4gb25seSBiZSBzZXQgZnJvbSB0aGUgc2FtZSBwcm9j ZXNzLgotICogQSBsb2NhbCBsYXRjaCBjYW4gYmUgdXNlZCB0byB3YWl0IGZvciBhIHNpZ25h bCB0byBhcnJpdmUsIGJ5IGNhbGxpbmcKLSAqIFNldExhdGNoIGluIHRoZSBzaWduYWwgaGFu ZGxlci4gQSBzaGFyZWQgbGF0Y2ggcmVzaWRlcyBpbiBzaGFyZWQgbWVtb3J5LAotICogYW5k IG11c3QgYmUgaW5pdGlhbGl6ZWQgYXQgcG9zdG1hc3RlciBzdGFydHVwIGJ5IEluaXRTaGFy ZWRMYXRjaC4gQmVmb3JlCi0gKiBhIHNoYXJlZCBsYXRjaCBjYW4gYmUgd2FpdGVkIG9uLCBp dCBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHByb2Nlc3MKLSAqIHdpdGggT3duTGF0Y2gu IE9ubHkgdGhlIHByb2Nlc3Mgb3duaW5nIHRoZSBsYXRjaCBjYW4gd2FpdCBvbiBpdCwgYnV0 IGFueQotICogcHJvY2VzcyBjYW4gc2V0IGl0LgotICoKLSAqIFRoZXJlIGFyZSB0aHJlZSBi YXNpYyBvcGVyYXRpb25zIG9uIGEgbGF0Y2g6Ci0gKgotICogU2V0TGF0Y2gJCS0gU2V0cyB0 aGUgbGF0Y2gKLSAqIFJlc2V0TGF0Y2gJLSBDbGVhcnMgdGhlIGxhdGNoLCBhbGxvd2luZyBp dCB0byBiZSBzZXQgYWdhaW4KLSAqIFdhaXRMYXRjaAktIFdhaXRzIGZvciB0aGUgbGF0Y2gg dG8gYmVjb21lIHNldAotICoKLSAqIFdhaXRMYXRjaCBpbmNsdWRlcyBhIHByb3Zpc2lvbiBm b3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCi0gKiB3aGVuIHBvc3NpYmxl LCBhcyB0aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBwcm92aXNpb24gZm9yCi0g KiBwb3N0bWFzdGVyIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVwIGltbWVkaWF0ZWx5IG9u IHBvc3RtYXN0ZXIgZGVhdGguCi0gKiBTZWUgbGF0Y2guYyBmb3IgZGV0YWlsZWQgc3BlY2lm aWNhdGlvbnMgZm9yIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMuCi0gKgotICogVGhlIGNvcnJl Y3QgcGF0dGVybiB0byB3YWl0IGZvciBldmVudChzKSBpczoKLSAqCi0gKiBmb3IgKDs7KQot ICogewotICoJICAgUmVzZXRMYXRjaCgpOwotICoJICAgaWYgKHdvcmsgdG8gZG8pCi0gKgkJ ICAgRG8gU3R1ZmYoKTsKLSAqCSAgIFdhaXRMYXRjaCgpOwotICogfQotICoKLSAqIEl0J3Mg aW1wb3J0YW50IHRvIHJlc2V0IHRoZSBsYXRjaCAqYmVmb3JlKiBjaGVja2luZyBpZiB0aGVy ZSdzIHdvcmsgdG8KLSAqIGRvLiBPdGhlcndpc2UsIGlmIHNvbWVvbmUgc2V0cyB0aGUgbGF0 Y2ggYmV0d2VlbiB0aGUgY2hlY2sgYW5kIHRoZQotICogUmVzZXRMYXRjaCBjYWxsLCB5b3Ug d2lsbCBtaXNzIGl0IGFuZCBXYWl0IHdpbGwgaW5jb3JyZWN0bHkgYmxvY2suCi0gKgotICog QW5vdGhlciB2YWxpZCBjb2RpbmcgcGF0dGVybiBsb29rcyBsaWtlOgotICoKLSAqIGZvciAo OzspCi0gKiB7Ci0gKgkgICBpZiAod29yayB0byBkbykKLSAqCQkgICBEbyBTdHVmZigpOyAv LyBpbiBwYXJ0aWN1bGFyLCBleGl0IGxvb3AgaWYgc29tZSBjb25kaXRpb24gc2F0aXNmaWVk Ci0gKgkgICBXYWl0TGF0Y2goKTsKLSAqCSAgIFJlc2V0TGF0Y2goKTsKLSAqIH0KLSAqCi0g KiBUaGlzIGlzIHVzZWZ1bCB0byByZWR1Y2UgbGF0Y2ggdHJhZmZpYyBpZiBpdCdzIGV4cGVj dGVkIHRoYXQgdGhlIGxvb3AncwotICogdGVybWluYXRpb24gY29uZGl0aW9uIHdpbGwgb2Z0 ZW4gYmUgc2F0aXNmaWVkIGluIHRoZSBmaXJzdCBpdGVyYXRpb247Ci0gKiB0aGUgY29zdCBp cyBhbiBleHRyYSBsb29wIGl0ZXJhdGlvbiBiZWZvcmUgYmxvY2tpbmcgd2hlbiBpdCBpcyBu b3QuCi0gKiBXaGF0IG11c3QgYmUgYXZvaWRlZCBpcyBwbGFjaW5nIGFueSBjaGVja3MgZm9y IGFzeW5jaHJvbm91cyBldmVudHMgYWZ0ZXIKLSAqIFdhaXRMYXRjaCBhbmQgYmVmb3JlIFJl c2V0TGF0Y2gsIGFzIHRoYXQgY3JlYXRlcyBhIHJhY2UgY29uZGl0aW9uLgotICoKLSAqIFRv IHdha2UgdXAgdGhlIHdhaXRlciwgeW91IG11c3QgZmlyc3Qgc2V0IGEgZ2xvYmFsIGZsYWcg b3Igc29tZXRoaW5nCi0gKiBlbHNlIHRoYXQgdGhlIHdhaXQgbG9vcCB0ZXN0cyBpbiB0aGUg ImlmICh3b3JrIHRvIGRvKSIgcGFydCwgYW5kIGNhbGwKLSAqIFNldExhdGNoICphZnRlciog dGhhdC4gU2V0TGF0Y2ggaXMgZGVzaWduZWQgdG8gcmV0dXJuIHF1aWNrbHkgaWYgdGhlCi0g KiBsYXRjaCBpcyBhbHJlYWR5IHNldC4KLSAqCi0gKiBPbiBzb21lIHBsYXRmb3Jtcywgc2ln bmFscyB3aWxsIG5vdCBpbnRlcnJ1cHQgdGhlIGxhdGNoIHdhaXQgcHJpbWl0aXZlCi0gKiBi eSB0aGVtc2VsdmVzLiAgVGhlcmVmb3JlLCBpdCBpcyBjcml0aWNhbCB0aGF0IGFueSBzaWdu YWwgaGFuZGxlciB0aGF0Ci0gKiBpcyBtZWFudCB0byB0ZXJtaW5hdGUgYSBXYWl0TGF0Y2gg d2FpdCBjYWxscyBTZXRMYXRjaC4KLSAqCi0gKiBOb3RlIHRoYXQgdXNlIG9mIHRoZSBwcm9j ZXNzIGxhdGNoIChQR1BST0MucHJvY0xhdGNoKSBpcyBnZW5lcmFsbHkgYmV0dGVyCi0gKiB0 aGFuIGFuIGFkLWhvYyBzaGFyZWQgbGF0Y2ggZm9yIHNpZ25hbGluZyBhdXhpbGlhcnkgcHJv Y2Vzc2VzLiAgVGhpcyBpcwotICogYmVjYXVzZSBnZW5lcmljIHNpZ25hbCBoYW5kbGVycyB3 aWxsIGNhbGwgU2V0TGF0Y2ggb24gdGhlIHByb2Nlc3MgbGF0Y2gKLSAqIG9ubHksIHNvIHVz aW5nIGFueSBsYXRjaCBvdGhlciB0aGFuIHRoZSBwcm9jZXNzIGxhdGNoIGVmZmVjdGl2ZWx5 IHByZWNsdWRlcwotICogdXNlIG9mIGFueSBnZW5lcmljIGhhbmRsZXIuCi0gKgotICoKLSAq IFNlZSBhbHNvIFdhaXRFdmVudFNldHMgaW4gd2FpdGV2ZW50c2V0LmguIFRoZXkgYWxsb3cg dG8gd2FpdCBmb3IgbGF0Y2hlcwotICogYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50 cyAtIHBvc3RtYXN0ZXIgZHlpbmcgYW5kIHNvY2tldCByZWFkaW5lc3Mgb2YKLSAqIHNldmVy YWwgc29ja2V0cyBjdXJyZW50bHkgLSBhdCB0aGUgc2FtZSB0aW1lLiAgT24gbWFueSBwbGF0 Zm9ybXMgdXNpbmcgYQotICogbG9uZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZSBlZmZpY2ll bnQgdGhhbiB1c2luZyBXYWl0TGF0Y2ggb3IKLSAqIFdhaXRMYXRjaE9yU29ja2V0LgotICoK LSAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCi0gKgotICogc3Jj L2luY2x1ZGUvc3RvcmFnZS9sYXRjaC5oCi0gKgotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ki8KLSNpZm5kZWYgTEFUQ0hfSAotI2RlZmluZSBMQVRDSF9ICi0KLSNpbmNsdWRlIDxzaWdu YWwuaD4KLQotI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgiCS8qIGZvciBXTF8q IGFyZ3VtZW50cyB0byBXYWl0TGF0Y2ggKi8KLQotLyoKLSAqIExhdGNoIHN0cnVjdHVyZSBz aG91bGQgYmUgdHJlYXRlZCBhcyBvcGFxdWUgYW5kIG9ubHkgYWNjZXNzZWQgdGhyb3VnaAot ICogdGhlIHB1YmxpYyBmdW5jdGlvbnMuIEl0IGlzIGRlZmluZWQgaGVyZSB0byBhbGxvdyBl bWJlZGRpbmcgTGF0Y2hlcyBhcwotICogcGFydCBvZiBiaWdnZXIgc3RydWN0cy4KLSAqLwot dHlwZWRlZiBzdHJ1Y3QgTGF0Y2gKLXsKLQlzaWdfYXRvbWljX3QgaXNfc2V0OwotCXNpZ19h dG9taWNfdCBtYXliZV9zbGVlcGluZzsKLQlib29sCQlpc19zaGFyZWQ7Ci0JaW50CQkJb3du ZXJfcGlkOwotI2lmZGVmIFdJTjMyCi0JSEFORExFCQlldmVudDsKLSNlbmRpZgotfSBMYXRj aDsKLQotLyoKLSAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBsYXRjaC5jCi0gKi8K LWV4dGVybiB2b2lkIEluaXRMYXRjaChMYXRjaCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgSW5p dFNoYXJlZExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBPd25MYXRjaChMYXRj aCAqbGF0Y2gpOwotZXh0ZXJuIHZvaWQgRGlzb3duTGF0Y2goTGF0Y2ggKmxhdGNoKTsKLWV4 dGVybiB2b2lkIFNldExhdGNoKExhdGNoICpsYXRjaCk7Ci1leHRlcm4gdm9pZCBSZXNldExh dGNoKExhdGNoICpsYXRjaCk7Ci0KLWV4dGVybiBpbnQJV2FpdExhdGNoKExhdGNoICpsYXRj aCwgaW50IHdha2VFdmVudHMsIGxvbmcgdGltZW91dCwKLQkJCQkJICB1aW50MzIgd2FpdF9l dmVudF9pbmZvKTsKLWV4dGVybiBpbnQJV2FpdExhdGNoT3JTb2NrZXQoTGF0Y2ggKmxhdGNo LCBpbnQgd2FrZUV2ZW50cywKLQkJCQkJCQkgIHBnc29ja2V0IHNvY2ssIGxvbmcgdGltZW91 dCwgdWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gdm9pZCBJbml0aWFsaXplTGF0 Y2hXYWl0U2V0KHZvaWQpOwotCi0jZW5kaWYJCQkJCQkJLyogTEFUQ0hfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2MuaAppbmRleCAxMTRlYjFmOGY3Ni4uM2E5MjIxY2ZiYzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Yy5oCkBAIC0xNyw3ICsxNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL2Nsb2cuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKLSNpbmNs dWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wZ19zZW1hLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jbGlzdF90 eXBlcy5oIgpAQCAtMTczLDkgKzE3Miw2IEBAIHN0cnVjdCBQR1BST0MKIAlQR1NlbWFwaG9y ZSBzZW07CQkJLyogT05FIHNlbWFwaG9yZSB0byBzbGVlcCBvbiAqLwogCVByb2NXYWl0U3Rh dHVzIHdhaXRTdGF0dXM7CiAKLQlMYXRjaAkJcHJvY0xhdGNoOwkJLyogZ2VuZXJpYyBsYXRj aCBmb3IgcHJvY2VzcyAqLwotCi0KIAlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBpZCBvZiB0 b3AtbGV2ZWwgdHJhbnNhY3Rpb24gY3VycmVudGx5IGJlaW5nCiAJCQkJCQkJCSAqIGV4ZWN1 dGVkIGJ5IHRoaXMgcHJvYywgaWYgcnVubmluZyBhbmQgWElECiAJCQkJCQkJCSAqIGlzIGFz c2lnbmVkOyBlbHNlIEludmFsaWRUcmFuc2FjdGlvbklkLgpAQCAtMzExLDYgKzMwNywxMyBA QCBzdHJ1Y3QgUEdQUk9DCiAJUEdQUk9DCSAgICpsb2NrR3JvdXBMZWFkZXI7CS8qIGxvY2sg Z3JvdXAgbGVhZGVyLCBpZiBJJ20gYSBtZW1iZXIgKi8KIAlkbGlzdF9oZWFkCWxvY2tHcm91 cE1lbWJlcnM7CS8qIGxpc3Qgb2YgbWVtYmVycywgaWYgSSdtIGEgbGVhZGVyICovCiAJZGxp c3Rfbm9kZQlsb2NrR3JvdXBMaW5rOwkvKiBteSBtZW1iZXIgbGluaywgaWYgSSdtIGEgbWVt YmVyICovCisKKwlwZ19hdG9taWNfdWludDMyIHBlbmRpbmdJbnRlcnJ1cHRzOworCisjaWZk ZWYgV0lOMzIKKwkvKiBFdmVudCBoYW5kbGUgdG8gd2FrZSB1cCB0aGUgcHJvY2VzcyB3aGVu IHNlbmRpbmcgYW4gaW50ZXJydXB0ICovCisJSEFORExFCQlpbnRlcnJ1cHRXYWtldXBFdmVu dDsKKyNlbmRpZgogfTsKIAogLyogTk9URTogInR5cGVkZWYgc3RydWN0IFBHUFJPQyBQR1BS T0MiIGFwcGVhcnMgaW4gc3RvcmFnZS9sb2NrLmguICovCkBAIC00MTMsNiArNDE2LDggQEAg dHlwZWRlZiBzdHJ1Y3QgUFJPQ19IRFIKIAkgKi8KIAlQcm9jTnVtYmVyCXdhbHdyaXRlclBy b2M7CiAJUHJvY051bWJlcgljaGVja3BvaW50ZXJQcm9jOworCVByb2NOdW1iZXIJd2FscmVj ZWl2ZXJQcm9jOworCVByb2NOdW1iZXIJc3RhcnR1cFByb2M7CiAKIAkvKiBDdXJyZW50IHNo YXJlZCBlc3RpbWF0ZSBvZiBhcHByb3ByaWF0ZSBzcGluc19wZXJfZGVsYXkgdmFsdWUgKi8K IAlpbnQJCQlzcGluc19wZXJfZGVsYXk7CkBAIC00OTAsOSArNDk1LDYgQEAgZXh0ZXJuIHZv aWQgUHJvY0xvY2tXYWtldXAoTG9ja01ldGhvZCBsb2NrTWV0aG9kVGFibGUsIExPQ0sgKmxv Y2spOwogZXh0ZXJuIHZvaWQgQ2hlY2tEZWFkTG9ja0FsZXJ0KHZvaWQpOwogZXh0ZXJuIHZv aWQgTG9ja0Vycm9yQ2xlYW51cCh2b2lkKTsKIAotZXh0ZXJuIHZvaWQgUHJvY1dhaXRGb3JT aWduYWwodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci1leHRlcm4gdm9pZCBQcm9jU2VuZFNp Z25hbChQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwotCiBleHRlcm4gUEdQUk9DICpBdXhpbGlh cnlQaWRHZXRQcm9jKGludCBwaWQpOwogCiBleHRlcm4gdm9pZCBCZWNvbWVMb2NrR3JvdXBM ZWFkZXIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVu dHNldC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQuaAppbmRleCBhYTY1 YjdhMzVlNy4uNjBlY2VjYjc4NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv d2FpdGV2ZW50c2V0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS93YWl0ZXZlbnRzZXQu aApAQCAtMywxOCArMywxNyBAQAogICogd2FpdGV2ZW50c2V0LmgKICAqCQlwcG9sbCgpIC8g cHNlbGVjdCgpIGxpa2UgaW50ZXJmYWNlIGZvciB3YWl0aW5nIGZvciBldmVudHMKICAqCi0g KiBXYWl0RXZlbnRTZXRzIGFsbG93IHRvIHdhaXQgZm9yIGxhdGNoZXMgYmVpbmcgc2V0IGFu ZCBhZGRpdGlvbmFsIGV2ZW50cyAtCisgKiBXYWl0RXZlbnRTZXRzIGFsbG93IHRvIHdhaXQg Zm9yIGludGVycnVwdHMgYmVpbmcgc2V0IGFuZCBhZGRpdGlvbmFsIGV2ZW50cyAtCiAgKiBw b3N0bWFzdGVyIGR5aW5nIGFuZCBzb2NrZXQgcmVhZGluZXNzIG9mIHNldmVyYWwgc29ja2V0 cyBjdXJyZW50bHkgLSBhdCB0aGUKICAqIHNhbWUgdGltZS4gIE9uIG1hbnkgcGxhdGZvcm1z IHVzaW5nIGEgbG9uZyBsaXZlZCBldmVudCBzZXQgaXMgbW9yZQogICogZWZmaWNpZW50IHRo YW4gdXNpbmcgV2FpdExhdGNoIG9yIFdhaXRMYXRjaE9yU29ja2V0LgogICoKLSAqIFdhaXRF dmVudFNldFdhaXQgaW5jbHVkZXMgYSBwcm92aXNpb24gZm9yIHRpbWVvdXRzICh3aGljaCBz aG91bGQgYmUgYXZvaWRlZAorICogV2FpdEludGVycnVwdCBpbmNsdWRlcyBhIHByb3Zpc2lv biBmb3IgdGltZW91dHMgKHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkCiAgKiB3aGVuIHBvc3Np YmxlLCBhcyB0aGV5IGluY3VyIGV4dHJhIG92ZXJoZWFkKSBhbmQgYSBwcm92aXNpb24gZm9y IHBvc3RtYXN0ZXIKICAqIGNoaWxkIHByb2Nlc3NlcyB0byB3YWtlIHVwIGltbWVkaWF0ZWx5 IG9uIHBvc3RtYXN0ZXIgZGVhdGguICBTZWUKLSAqIHN0b3JhZ2UvaXBjL3dhaXRldmVudHNl dC5jIGZvciBkZXRhaWxlZCBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGV4cG9ydGVkCisgKiBz dG9yYWdlL2lwYy9pbnRlcnJ1cHQuYyBmb3IgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgZm9y IHRoZSBleHBvcnRlZAogICogZnVuY3Rpb25zLgogICoKLSAqCiAgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCiAgKgpAQCAtMjUsMTMgKzI0LDE2IEBACiAjaWZuZGVm IFdBSVRFVkVOVFNFVF9ICiAjZGVmaW5lIFdBSVRFVkVOVFNFVF9ICiAKKyNpbmNsdWRlIDxz aWduYWwuaD4KKworI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgogI2luY2x1ZGUg InV0aWxzL3Jlc293bmVyLmgiCiAKIC8qCi0gKiBCaXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQg bWF5IHdha2UtdXAgV2FpdExhdGNoKCksIFdhaXRMYXRjaE9yU29ja2V0KCksIG9yCi0gKiBX YWl0RXZlbnRTZXRXYWl0KCkuCisgKiBCaXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQgbWF5IHdh a2UtdXAgV2FpdEludGVycnVwdCgpLAorICogV2FpdEludGVycnVwdE9yU29ja2V0KCksIG9y IFdhaXRFdmVudFNldFdhaXQoKS4KICAqLwotI2RlZmluZSBXTF9MQVRDSF9TRVQJCSAoMSA8 PCAwKQorI2RlZmluZSBXTF9JTlRFUlJVUFQJCSAoMSA8PCAwKQogI2RlZmluZSBXTF9TT0NL RVRfUkVBREFCTEUJICgxIDw8IDEpCiAjZGVmaW5lIFdMX1NPQ0tFVF9XUklURUFCTEUgICgx IDw8IDIpCiAjZGVmaW5lIFdMX1RJTUVPVVQJCQkgKDEgPDwgMykJLyogbm90IGZvciBXYWl0 RXZlbnRTZXRXYWl0KCkgKi8KQEAgLTY3LDMyICs2OSwzNSBAQCB0eXBlZGVmIHN0cnVjdCBX YWl0RXZlbnQKICNlbmRpZgogfSBXYWl0RXZlbnQ7CiAKLS8qIGZvcndhcmQgZGVjbGFyYXRp b25zIHRvIGF2b2lkIGV4cG9zaW5nIHdhaXRldmVudHNldC5jIGltcGxlbWVudGF0aW9uIGRl dGFpbHMgKi8KKy8qIGZvcndhcmQgZGVjbGFyYXRpb24gdG8gYXZvaWQgZXhwb3NpbmcgaW50 ZXJydXB0LmMgaW1wbGVtZW50YXRpb24gZGV0YWlscyAqLwogdHlwZWRlZiBzdHJ1Y3QgV2Fp dEV2ZW50U2V0IFdhaXRFdmVudFNldDsKIAotc3RydWN0IExhdGNoOworc3RydWN0IFBHUFJP QzsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB3YWl0ZXZlbnRzZXQu YwogICovCiBleHRlcm4gdm9pZCBJbml0aWFsaXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKTsK KyNpZmRlZiBXSU4zMgorZXh0ZXJuIEhBTkRMRSBDcmVhdGVTaGFyZWRXYWtldXBIYW5kbGUo dm9pZCk7CisjZW5kaWYKIAogZXh0ZXJuIFdhaXRFdmVudFNldCAqQ3JlYXRlV2FpdEV2ZW50 U2V0KFJlc291cmNlT3duZXIgcmVzb3duZXIsIGludCBuZXZlbnRzKTsKIGV4dGVybiB2b2lk IEZyZWVXYWl0RXZlbnRTZXQoV2FpdEV2ZW50U2V0ICpzZXQpOwogZXh0ZXJuIHZvaWQgRnJl ZVdhaXRFdmVudFNldEFmdGVyRm9yayhXYWl0RXZlbnRTZXQgKnNldCk7CiBleHRlcm4gaW50 CUFkZFdhaXRFdmVudFRvU2V0KFdhaXRFdmVudFNldCAqc2V0LCB1aW50MzIgZXZlbnRzLCBw Z3NvY2tldCBmZCwKLQkJCQkJCQkgIHN0cnVjdCBMYXRjaCAqbGF0Y2gsIHZvaWQgKnVzZXJf ZGF0YSk7Ci1leHRlcm4gdm9pZCBNb2RpZnlXYWl0RXZlbnQoV2FpdEV2ZW50U2V0ICpzZXQs IGludCBwb3MsIHVpbnQzMiBldmVudHMsCi0JCQkJCQkJc3RydWN0IExhdGNoICpsYXRjaCk7 CisJCQkJCQkJICB1aW50MzIgaW50ZXJydXB0TWFzaywgdm9pZCAqdXNlcl9kYXRhKTsKK2V4 dGVybiB2b2lkIE1vZGlmeVdhaXRFdmVudChXYWl0RXZlbnRTZXQgKnNldCwgaW50IHBvcywg dWludDMyIGV2ZW50cywgdWludDMyIGludGVycnVwdE1hc2spOworCiBleHRlcm4gaW50CVdh aXRFdmVudFNldFdhaXQoV2FpdEV2ZW50U2V0ICpzZXQsIGxvbmcgdGltZW91dCwKIAkJCQkJ CQkgV2FpdEV2ZW50ICpvY2N1cnJlZF9ldmVudHMsIGludCBuZXZlbnRzLAogCQkJCQkJCSB1 aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKK2V4dGVybiB2b2lkIEluaXRpYWxpemVJbnRlcnJ1 cHRXYWl0U2V0KHZvaWQpOwogZXh0ZXJuIGludAlHZXROdW1SZWdpc3RlcmVkV2FpdEV2ZW50 cyhXYWl0RXZlbnRTZXQgKnNldCk7CiBleHRlcm4gYm9vbCBXYWl0RXZlbnRTZXRDYW5SZXBv cnRDbG9zZWQodm9pZCk7CiAKLSNpZm5kZWYgV0lOMzIKKy8qIGxvdyBsZXZlbCBmdW5jdGlv bnMgdXNlZCB0byBpbXBsZW1lbnQgU2VuZEludGVycnVwdCAqLwogZXh0ZXJuIHZvaWQgV2Fr ZXVwTXlQcm9jKHZvaWQpOwotZXh0ZXJuIHZvaWQgV2FrZXVwT3RoZXJQcm9jKGludCBwaWQp OwotI2VuZGlmCitleHRlcm4gdm9pZCBXYWtldXBPdGhlclByb2Moc3RydWN0IFBHUFJPQyAq cHJvYyk7CiAKICNlbmRpZgkJCQkJCQkvKiBXQUlURVZFTlRTRVRfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3BvcnQvcGdzbGVlcC5jIGIvc3JjL3BvcnQvcGdzbGVlcC5jCmluZGV4IGRmZTgy NGZlNDYyLi40MDRkNDA4NjA1NyAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvcGdzbGVlcC5jCisr KyBiL3NyYy9wb3J0L3Bnc2xlZXAuYwpAQCAtMzIsMTAgKzMyLDEwIEBACiAgKgogICogQ0FV VElPTjogSXQncyBub3QgYSBnb29kIGlkZWEgdG8gdXNlIGxvbmcgc2xlZXBzIGluIHRoZSBi YWNrZW5kLiAgVGhleSB3aWxsCiAgKiBzaWxlbnRseSByZXR1cm4gZWFybHkgaWYgYSBzaWdu YWwgaXMgY2F1Z2h0LCBidXQgdGhhdCBkb2Vzbid0IGluY2x1ZGUKLSAqIGxhdGNoZXMgYmVp bmcgc2V0IG9uIG1vc3QgT1NlcywgYW5kIGV2ZW4gc2lnbmFsIGhhbmRsZXJzIHRoYXQgc2V0 IE15TGF0Y2gKLSAqIG1pZ2h0IGhhcHBlbiB0byBydW4gYmVmb3JlIHRoZSBzbGVlcCBiZWdp bnMsIGFsbG93aW5nIHRoZSBmdWxsIGRlbGF5LgotICogQmV0dGVyIHByYWN0aWNlIGlzIHRv IHVzZSBXYWl0TGF0Y2goKSB3aXRoIGEgdGltZW91dCwgc28gdGhhdCBiYWNrZW5kcwotICog cmVzcG9uZCB0byBsYXRjaGVzIGFuZCBzaWduYWxzIHByb21wdGx5LgorICogaW50ZXJydXB0 cyBiZWluZyBzZXQgb24gbW9zdCBPU2VzLCBhbmQgZXZlbiBzaWduYWwgaGFuZGxlcnMgdGhh dCByYWlzZSBhbgorICogaW50ZXJydXB0IG1pZ2h0IGhhcHBlbiB0byBydW4gYmVmb3JlIHRo ZSBzbGVlcCBiZWdpbnMsIGFsbG93aW5nIHRoZSBmdWxsCisgKiBkZWxheS4gIEJldHRlciBw cmFjdGljZSBpcyB0byB1c2UgV2FpdEludGVycnVwdCgpIHdpdGggYSB0aW1lb3V0LCBzbyB0 aGF0CisgKiBiYWNrZW5kcyByZXNwb25kIHRvIGludGVycnVwdHMgYW5kIHNpZ25hbHMgcHJv bXB0bHkuCiAgKi8KIHZvaWQKIHBnX3VzbGVlcChsb25nIG1pY3Jvc2VjKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCmluZGV4IGUwMWMwYzlkZTkzLi4wMzA3ODA3ODg5 MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIuYwpAQCAtNzYyLDcgKzc2 Miw3IEBAIHRyeV9jb21wbGV0ZV9zdGVwcyhUZXN0U3BlYyAqdGVzdHNwZWMsIFBlcm11dGF0 aW9uU3RlcCAqKndhaXRpbmcsCiAJewogCQlpbnQJCQl3ID0gMDsKIAotCQkvKiBSZXNldCBs YXRjaDsgd2Ugb25seSBjYXJlIGFib3V0IG5vdGljZXMgcmVjZWl2ZWQgd2l0aGluIGxvb3Au ICovCisJCS8qIFJlc2V0IGZsYWc7IHdlIG9ubHkgY2FyZSBhYm91dCBub3RpY2VzIHJlY2Vp dmVkIHdpdGhpbiBsb29wLiAqLwogCQlhbnlfbmV3X25vdGljZSA9IGZhbHNlOwogCiAJCS8q IExpa2V3aXNlLCB0aGVzZSB2YXJpYWJsZXMgcmVzZXQgZm9yIGVhY2ggcmV0cnkuICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3NldHVwLmMKaW5kZXggMmEyMGZmYjEyNzMuLjFk MDE5ZmFhMmU1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Nl dHVwLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCkBAIC0x OCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgorI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5j bHVkZSAidGVzdF9zaG1fbXEuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAt Mjg1LDExICsyODYsMTEgQEAgd2FpdF9mb3Jfd29ya2Vyc190b19iZWNvbWVfcmVhZHkod29y a2VyX3N0YXRlICp3c3RhdGUsCiAJCQl3ZV9iZ3dvcmtlcl9zdGFydHVwID0gV2FpdEV2ZW50 RXh0ZW5zaW9uTmV3KCJUZXN0U2htTXFCZ1dvcmtlclN0YXJ0dXAiKTsKIAogCQkvKiBXYWl0 IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xB VENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCi0JCQkJCQkgd2VfYmd3b3JrZXJf c3RhcnR1cCk7CisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJCSB3ZV9iZ3dv cmtlcl9zdGFydHVwKTsKIAotCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bp bi4gKi8KLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJLyogQ2xlYXIgdGhlIGludGVycnVw dCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICovCisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKIAogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hp bGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3QuYwppbmRleCA0NDMyODFhZGRkMC4uMjQwZmUz MTVkNDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5j CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvdGVzdC5jCkBAIC0xNiw2ICsx Niw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAidmFyYXR0LmgiCiAKICNpbmNsdWRlICJ0ZXN0X3NobV9tcS5oIgpAQCAtMjM0 LDEzICsyMzUsMTMgQEAgdGVzdF9zaG1fbXFfcGlwZWxpbmVkKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSBtYWRlIG5vIHByb2dyZXNzLCB3YWl0IGZvciBvbmUg b2YgdGhlIG90aGVyIHByb2Nlc3NlcyB0bwotCQkJICogd2hpY2ggd2UgYXJlIGNvbm5lY3Rl ZCB0byBzZXQgb3VyIGxhdGNoLCBpbmRpY2F0aW5nIHRoYXQgdGhleQotCQkJICogaGF2ZSBy ZWFkIG9yIHdyaXR0ZW4gZGF0YSBhbmQgdGhlcmVmb3JlIHRoZXJlIG1heSBub3cgYmUgd29y awotCQkJICogZm9yIHVzIHRvIGRvLgorCQkJICogd2hpY2ggd2UgYXJlIGNvbm5lY3RlZCB0 byBzZW5kIHVzIGFuIGludGVycnVwdCwgaW5kaWNhdGluZyB0aGF0CisJCQkgKiB0aGV5IGhh dmUgcmVhZCBvciB3cml0dGVuIGRhdGEgYW5kIHRoZXJlZm9yZSB0aGVyZSBtYXkgbm93IGJl CisJCQkgKiB3b3JrIGZvciB1cyB0byBkby4KIAkJCSAqLwotCQkJKHZvaWQpIFdhaXRMYXRj aChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAotCQkJ CQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKLQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQko dm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJCQkJCQkJIHdlX21lc3NhZ2VfcXVldWUpOwor CQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1fbXEvd29ya2VyLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtl ci5jCmluZGV4IDk2Y2QzMDRkYmJjLi43NTFjYWM2MDUxMyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYworKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htX21xL3dvcmtlci5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBvc3RtYXN0 ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCkBAIC0x MjgsNyArMTI5LDcgQEAgdGVzdF9zaG1fbXFfbWFpbihEYXR1bSBtYWluX2FyZykKIAkJZWxv ZyhERUJVRzEsICJyZWdpc3RyYW50IGJhY2tlbmQgaGFzIGV4aXRlZCBwcmVtYXR1cmVseSIp OwogCQlwcm9jX2V4aXQoMSk7CiAJfQotCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0 Y2gpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIEdldE51bWJlckZyb21Q R1Byb2MocmVnaXN0cmFudCkpOwogCiAJLyogRG8gdGhlIHdvcmsuICovCiAJY29weV9tZXNz YWdlcyhpbnFoLCBvdXRxaCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtl cl9zcGkvd29ya2VyX3NwaS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtl cl9zcGkuYwppbmRleCA1Yjg3ZDRmNzAzOC4uMWMyM2I0ZWFkZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwpAQCAtNSw3ICs1LDcgQEAKICAqCQlw YXR0ZXJuczogZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbjsgc3RhcnRpbmcg YW5kIGNvbW1pdHRpbmcKICAqCQl0cmFuc2FjdGlvbnM7IHVzaW5nIEdVQyB2YXJpYWJsZXMs IGFuZCBoZWVkaW5nIFNJR0hVUCB0byByZXJlYWQKICAqCQl0aGUgY29uZmlndXJhdGlvbiBm aWxlOyByZXBvcnRpbmcgdG8gcGdfc3RhdF9hY3Rpdml0eTsgdXNpbmcgdGhlCi0gKgkJcHJv Y2VzcyBsYXRjaCB0byBzbGVlcCBhbmQgZXhpdCBpbiBjYXNlIG9mIHBvc3RtYXN0ZXIgZGVh dGguCisgKgkJV2FpdEludGVycnVwdCB0byBzbGVlcCBhbmQgZXhpdCBpbiBjYXNlIG9mIHBv c3RtYXN0ZXIgZGVhdGguCiAgKgogICogVGhpcyBjb2RlIGNvbm5lY3RzIHRvIGEgZGF0YWJh c2UsIGNyZWF0ZXMgYSBzY2hlbWEgYW5kIHRhYmxlLCBhbmQgc3VtbWFyaXplcwogICogdGhl IG51bWJlcnMgY29udGFpbmVkIHRoZXJlaW4uICBUbyBzZWUgaXQgd29ya2luZywgaW5zZXJ0 IGFuIGluaXRpYWwgdmFsdWUKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9pbnRlcnJ1cHQuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAKIC8q IHRoZXNlIGhlYWRlcnMgYXJlIHVzZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcidzIGNv ZGUgKi8KICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgpAQCAtMjEzLDE1ICsyMTIsMTUgQEAg d29ya2VyX3NwaV9tYWluKERhdHVtIG1haW5fYXJnKQogCiAJCS8qCiAJCSAqIEJhY2tncm91 bmQgd29ya2VycyBtdXN0bid0IGNhbGwgdXNsZWVwKCkgb3IgYW55IGRpcmVjdCBlcXVpdmFs ZW50OgotCQkgKiBpbnN0ZWFkLCB0aGV5IG1heSB3YWl0IG9uIHRoZWlyIHByb2Nlc3MgbGF0 Y2gsIHdoaWNoIHNsZWVwcyBhcwotCQkgKiBuZWNlc3NhcnksIGJ1dCBpcyBhd2FrZW5lZCBp ZiBwb3N0bWFzdGVyIGRpZXMuICBUaGF0IHdheSB0aGUKLQkJICogYmFja2dyb3VuZCBwcm9j ZXNzIGdvZXMgYXdheSBpbW1lZGlhdGVseSBpbiBhbiBlbWVyZ2VuY3kuCisJCSAqIGluc3Rl YWQsIHRoZXkgbWF5IHVzZSBXYWl0SW50ZXJydXB0LCB3aGljaCBzbGVlcHMgYXMgbmVjZXNz YXJ5LCBidXQKKwkJICogaXMgYXdha2VuZWQgaWYgcG9zdG1hc3RlciBkaWVzLiAgVGhhdCB3 YXkgdGhlIGJhY2tncm91bmQgcHJvY2VzcworCQkgKiBnb2VzIGF3YXkgaW1tZWRpYXRlbHkg aW4gYW4gZW1lcmdlbmN5LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAot CQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRI LAotCQkJCQkJIHdvcmtlcl9zcGlfbmFwdGltZSAqIDEwMDBMLAotCQkJCQkJIHdvcmtlcl9z cGlfd2FpdF9ldmVudF9tYWluKTsKLQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJKHZvaWQp IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSB3b3JrZXJf c3BpX25hcHRpbWUgKiAxMDAwTCwKKwkJCQkJCQkgd29ya2VyX3NwaV93YWl0X2V2ZW50X21h aW4pOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5 ODQwMDYwOTk3Zi4uOTNjZjNlYTMxZGQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC0xMjcxLDYgKzEyNzEsNyBAQCBJbnRlZ2VyCiBJbnRlZ2VyU2V0CiBJbnRlcm5hbERl ZmF1bHRBQ0wKIEludGVybmFsR3JhbnQKK0ludGVycnVwdFR5cGUKIEludGVydmFsCiBJbnRl cnZhbEFnZ1N0YXRlCiBJbnRvQ2xhdXNlCkBAIC0xNTA5LDcgKzE1MTAsNiBAQCBMWjRTdGF0 ZQogTGFiZWxQcm92aWRlcgogTGFnVHJhY2tlcgogTGFyZ2VPYmplY3REZXNjCi1MYXRjaAog TGF1bmNoZXJMYXN0U3RhcnRUaW1lc0VudHJ5CiBMZXJwRnVuYwogTGV4RGVzY3IKLS0gCjIu MzkuNQoK --------------kl7e3aDdgBl9cMvp58xJLWGu Content-Type: text/x-patch; charset=UTF-8; name="v7-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.patch" Content-Disposition: attachment; filename*0="v7-0002-Fix-lost-wakeup-issue-in-logical-replication-laun.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNDI1YmYzNWFmMWU3YmM2OTA4MzBmZDA4NzVmYzdlMDhmMjc0YWUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToxOCArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjcgMi80XSBGaXggbG9zdCB3YWtldXAgaXNzdWUgaW4gbG9naWNh bCByZXBsaWNhdGlvbiBsYXVuY2hlcgoKRml4IGl0IGJ5IHVzaW5nIGEgc2VwYXJhdGUgaW50 ZXJydXB0IGJpdCBmb3Igc3Vic2NyaXB0aW9uIGNoYW5nZXMuCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzQ3NjY3MmU3LTYyZjEtNGNhYi1h ODIyLWYzYThlOTQ5ZGQzZkBpa2kuZmkKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9mZjA2NjNkOS04MDExLTQyMGYtYTE2OS1lZmJmNTczMjdj YjVAaWtpLmZpCi0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jIHwgMjIgKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaCAgICAgICAgIHwgIDUgKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTgg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggMDcxZDkzY2U4MTYuLmQ5MTViOWE5ZmNl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC01Niw3ICs1Niw3IEBAIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9 IE5VTEw7CiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwQ3R4U3RydWN0CiB7CiAJLyogU3Vw ZXJ2aXNvciBwcm9jZXNzLiAqLwotCXBpZF90CQlsYXVuY2hlcl9waWQ7CisJUHJvY051bWJl cglsYXVuY2hlcl9wcm9jbm87CiAKIAkvKiBIYXNoIHRhYmxlIGhvbGRpbmcgbGFzdCBzdGFy dCB0aW1lcyBvZiBzdWJzY3JpcHRpb25zJyBhcHBseSB3b3JrZXJzLiAqLwogCWRzYV9oYW5k bGUJbGFzdF9zdGFydF9kc2E7CkBAIC04MDQsNyArODA0LDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiBzdGF0aWMgdm9pZAogbG9n aWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlMb2dp Y2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQgPSAwOworCUxvZ2ljYWxSZXBDdHgtPmxhdW5jaGVy X3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIC8qCkBAIC05NjQsNiArOTY0 LDcgQEAgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKQogCiAJCW1lbXNldChMb2dpY2Fs UmVwQ3R4LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwogCisJCUxvZ2ljYWxSZXBD dHgtPmxhdW5jaGVyX3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCUxvZ2ljYWxS ZXBDdHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwogCQlMb2dpY2Fs UmVwQ3R4LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIApAQCAt MTEwOSw4ICsxMTEwLDEyIEBAIEFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCh2b2lkKQog c3RhdGljIHZvaWQKIEFwcGx5TGF1bmNoZXJXYWtldXAodm9pZCkKIHsKLQlpZiAoTG9naWNh bFJlcEN0eC0+bGF1bmNoZXJfcGlkICE9IDApCi0JCWtpbGwoTG9naWNhbFJlcEN0eC0+bGF1 bmNoZXJfcGlkLCBTSUdVU1IxKTsKKwl2b2xhdGlsZSBMb2dpY2FsUmVwQ3R4U3RydWN0ICpy ZXBjdHggPSBMb2dpY2FsUmVwQ3R4OworCVByb2NOdW1iZXIJbGF1bmNoZXJfcHJvY25vOwor CisJbGF1bmNoZXJfcHJvY25vID0gcmVwY3R4LT5sYXVuY2hlcl9wcm9jbm87CisJaWYgKGxh dW5jaGVyX3Byb2NubyAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQlTZW5kSW50ZXJydXB0 KElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLCBsYXVuY2hlcl9wcm9jbm8pOwogfQog CiAvKgpAQCAtMTEyNCw4ICsxMTI5LDggQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAKIAliZWZvcmVfc2htZW1fZXhpdChsb2dpY2FscmVwX2xhdW5jaGVyX29uZXhp dCwgKERhdHVtKSAwKTsKIAotCUFzc2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9waWQg PT0gMCk7Ci0JTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcGlkID0gTXlQcm9jUGlkOworCUFz c2VydChMb2dpY2FsUmVwQ3R4LT5sYXVuY2hlcl9wcm9jbm8gPT0gSU5WQUxJRF9QUk9DX05V TUJFUik7CisJTG9naWNhbFJlcEN0eC0+bGF1bmNoZXJfcHJvY25vID0gTXlQcm9jTnVtYmVy OwogCiAJLyogRXN0YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4gKi8KIAlwcXNpZ25hbChTSUdI VVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwpAQCAtMTE1Nyw2ICsxMTYyLDcg QEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhzdWJjdHgpOwogCiAJCS8qIFN0YXJ0IGFueSBtaXNzaW5nIHdv cmtlcnMgZm9yIGVuYWJsZWQgc3Vic2NyaXB0aW9ucy4gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UpOwogCQlzdWJsaXN0ID0gZ2V0X3N1YnNj cmlwdGlvbl9saXN0KCk7CiAJCWZvcmVhY2gobGMsIHN1Ymxpc3QpCiAJCXsKQEAgLTEyMTMs NyArMTIxOSw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlNZW1v cnlDb250ZXh0RGVsZXRlKHN1YmN0eCk7CiAKIAkJLyogV2FpdCBmb3IgbW9yZSB3b3JrLiAq LwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2Fp dEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCB8IElOVEVSUlVQVF9TVUJTQ1JJUFRJT05f Q0hBTkdFLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCiAJCQkJCQkgICB3YWl0X3RpbWUsCiAJCQkJCQkgICBXQUlUX0VWRU5U X0xPR0lDQUxfTEFVTkNIRVJfTUFJTik7CkBAIC0xMjQwLDcgKzEyNDYsNyBAQCBBcHBseUxh dW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIGJvb2wKIElzTG9naWNhbExhdW5jaGVyKHZv aWQpCiB7Ci0JcmV0dXJuIExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3BpZCA9PSBNeVByb2NQ aWQ7CisJcmV0dXJuIExvZ2ljYWxSZXBDdHgtPmxhdW5jaGVyX3Byb2NubyA9PSBNeVByb2NO dW1iZXI7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2lu dGVycnVwdC5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaAppbmRleCAz NDZmOWNhZThlMS4uMDlkYzZmMDMzMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvaW50ZXJydXB0LmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaApAQCAtMTEzLDExICsxMTMsMTQgQEAgdHlwZWRlZiBlbnVtCiAJSU5URVJSVVBUX0dF TkVSQUwgPSAxIDw8IDEsCiAKIAkvKgotCSAqIElOVEVSUlVQVF9SRUNPVkVSWV9XQUtFVVAg aXMgdXNlZCB0byB3YWtlIHVwIHN0YXJ0dXAgcHJvY2VzcywgdG8gdGVsbAorCSAqIElOVEVS UlVQVF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAgc3RhcnR1cCBwcm9j ZXNzLCB0byB0ZWxsCiAJICogaXQgdGhhdCBpdCBzaG91bGQgY29udGludWUgV0FMIHJlcGxh eS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCiAJICogbW9yZSBXQUwgYXJyaXZl cywgb3Igd2hlbiBwcm9tb3Rpb24gaXMgcmVxdWVzdGVkLgogCSAqLwogCUlOVEVSUlVQVF9S RUNPVkVSWV9DT05USU5VRSA9IDEgPDwgMiwKKworCS8qIHNlbnQgdG8gbG9naWNhbCByZXBs aWNhdGlvbiBsYXVuY2hlciwgd2hlbiBhIHN1YnNjcmlwdGlvbiBjaGFuZ2VzICovCisJSU5U RVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UgPSAxIDw8IDMsCiB9IEludGVycnVwdFR5cGU7 CiAKIC8qCi0tIAoyLjM5LjUKCg== --------------kl7e3aDdgBl9cMvp58xJLWGu Content-Type: text/x-patch; charset=UTF-8; name="v7-0003-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.patch" Content-Disposition: attachment; filename*0="v7-0003-Use-INTERRUPT_GENERAL-for-bgworker-state-change-n.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwZDJlNTgxYWNiOTBkNDExYTU4OTk0ZDMxMTk5NjMyNjFjZGY5Yjg3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMiBEZWMgMjAyNCAxNTo1NToyMSArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjcgMy80XSBVc2UgSU5URVJSVVBUX0dFTkVSQUwgZm9yIGJnd29y a2VyIHN0YXRlIGNoYW5nZQogbm90aWZpY2F0aW9uCgpBcyBwYXJ0IG9mIGEgcHJvamVjdCB0 byByZW1vdmUgdGhlIHJlbGlhbmNlIG9uIFBJRHMgdG8gaWRlbnRpZnkKYmFja2VuZHMsIGJh Y2tlbmRzIHRoYXQgcmVnaXN0ZXIgZHluYW1pYyBiYWNrZ3JvdW5kIHdvcmtlcnMgd2lsbCBu b3cKcmVjZWl2ZSBJTlRFUlJVUFRfR0VORVJBTCBzZW50IGRpcmVjdGx5IGJ5IHRoZSBwb3N0 bWFzdGVyIHdoZW4gdGhlCndvcmtlciBzdGF0ZSBjaGFuZ2VzLiAgUHJldmlvdXNseSwgdGhl IHBvc3RtYXN0ZXIgd291bGQgc2VuZCBhIFNJR1VTUjEKc2lnbmFsLCB3aGljaCByZWxpZWQg b24gdGhlIFByb2NTaWduYWwgc3lzdGVtJ3MgaGFuZGxlciBzZXR0aW5nIHRoZQppbnRlcnJ1 cHQgZmxhZywgd2l0aCB0aGUgc2FtZSBlbmQgZWZmZWN0LiAgTm93IHRoYXQgaW50ZXJtZWRp YXRlIHN0ZXAKaXMgc2tpcHBlZC4KClRoZSBmaWVsZCBiZ3dfbm90aWZ5X3BpZCBzdGlsbCBl eGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBidXQKaGFzIG5vIGVmZmVjdCBh bmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBsYXRlciByZWxlYXNlLgpSZWdpc3RlckJhY2tncm91 bmRXb3JrZXIoKSBub3cgYXV0b21hdGljYWxseSBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlcgp3 b3VsZCBsaWtlIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb25zIGRlbGl2ZXJlZCB0byBpdHMg cHJvYyBudW1iZXIsCnVubGVzcyBCR1dfTk9fTk9USUZZIGlzIHNldCBpbiBiZ3dfZmxhZ3Mu CgpSZW1vdmluZyBvdGhlciBjYXNlcyBvZiBQSURzIGZyb20gdGhlIGJnd29ya2VyIEFQSSBp cyBsZWZ0IGZvciBsYXRlcgp3b3JrOyB0aGlzIHBhdGNoIGlzIGNvbmNlcm5lZCBvbmx5IHdp dGggcmVtb3ZpbmcgYSBkZXBlbmRlbmN5IG9uClByb2NTaWduYWwgaW5mcmFzdHJ1Y3R1cmUg dGhhdCBpcyBkdWUgdG8gYmUgcmVtb3ZlZCBieSBhIGxhdGVyIGNvbW1pdC4KClRoaXMgcmVw cmVzZW50cyB0aGUgZmlyc3QgdXNlIG9mIFNlbmRJbnRlcnJ1cHQoKSBpbiB0aGUgcG9zdG1h c3Rlci4KSXQgbWlnaHQgc2VlbSBtb3JlIG5hdHVyYWwgdG8gdXNlIGNvbmRpdGlvbiB2YXJp YWJsZXMgaW4gdGhlCndhaXQtZm9yLXN0YXRlLWNoYW5nZSBmdW5jdGlvbnMsIHNvIHRoYXQg YW55b25lIHdpdGggYSBoYW5kbGUgY2FuCndhaXQsIGJ1dCBjb25kaXRpb24gdmFyaWFibGVz IGFzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB3b3VsZCBiZSBhIGxvdApsZXNzIHJvYnVzdCB0 aGFuIHNpbXBsZSBpbnRlcnJ1cHRzLgoKQXV0aG9yOiBUaG9tYXMgTXVucm8gPHRob21hcy5t dW5yb0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBIZWlra2kgTGlubmFrYW5nYXMgPGhsaW5u YWthQGlraS5maT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQSUyQmhVS0cl MkIzTWtTMjF5SzRqTDRjZ1p5d2RubkdLaUJnMGphdG9WNmt6YW5pQm1jcWJRJTQwbWFpbC5n bWFpbC5jb20KLS0tCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAg ICAgIHwgICA2IC0KIGRvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sICAgICAgICAgICAgICAg ICAgfCAgMjcgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAg ICAgICB8IDEyOCArKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9pbnRlcnJ1cHQuYyAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jICB8ICAgMiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy93YWl0ZXZlbnRzZXQuYyAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv Ymd3b3JrZXIuaCAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIv Ymd3b3JrZXJfaW50ZXJuYWxzLmggfCAgIDQgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvc2V0dXAuYyAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1fbXEvdGVzdF9zaG1fbXEuaCAgfCAgIDIgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS93b3JrZXIuYyAgICAgICB8ICAgOSArLQogc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJf c3BpL3dvcmtlcl9zcGkuYyAgICB8ICAgMyAtCiAxNCBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5z ZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf cHJld2FybS9hdXRvcHJld2FybS5jIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJt LmMKaW5kZXggMjBkYzc4ODVkNmEuLmE1MjA1OGJlOWJiIDEwMDY0NAotLS0gYS9jb250cmli L3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYworKysgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0 b3ByZXdhcm0uYwpAQCAtODE2LDkgKzgxNiw2IEBAIGFwd19zdGFydF9sZWFkZXJfd29ya2Vy KHZvaWQpCiAJCXJldHVybjsKIAl9CiAKLQkvKiBtdXN0IHNldCBub3RpZnkgUElEIHRvIHdh aXQgZm9yIHN0YXJ0dXAgKi8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7 Ci0KIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhh bmRsZSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJ Q0lFTlRfUkVTT1VSQ0VTKSwKQEAgLTg1Miw5ICs4NDksNiBAQCBhcHdfc3RhcnRfZGF0YWJh c2Vfd29ya2VyKHZvaWQpCiAJc3RyY3B5KHdvcmtlci5iZ3dfbmFtZSwgImF1dG9wcmV3YXJt IHdvcmtlciIpOwogCXN0cmNweSh3b3JrZXIuYmd3X3R5cGUsICJhdXRvcHJld2FybSB3b3Jr ZXIiKTsKIAotCS8qIG11c3Qgc2V0IG5vdGlmeSBQSUQgdG8gd2FpdCBmb3Igc2h1dGRvd24g Ki8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7Ci0KIAlpZiAoIVJlZ2lz dGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJndvcmtlciwgJmhhbmRsZSkpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VT KSwKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9iZ3dvcmtlci5zZ21sIGIvZG9jL3NyYy9z Z21sL2Jnd29ya2VyLnNnbWwKaW5kZXggMzE3MTA1NGU1NWQuLjg3MWY2ODY5ZDZhIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvYmd3b3JrZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Ymd3b3JrZXIuc2dtbApAQCAtNjMsNyArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3Jv dW5kV29ya2VyCiAgICAgY2hhciAgICAgICAgYmd3X2Z1bmN0aW9uX25hbWVbQkdXX01BWExF Tl07CiAgICAgRGF0dW0gICAgICAgYmd3X21haW5fYXJnOwogICAgIGNoYXIgICAgICAgIGJn d19leHRyYVtCR1dfRVhUUkFMRU5dOwotICAgIHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlk OworICAgIHBpZF90ICAgICAgIGJnd19ub3RpZnlfcGlkOwkJCS8qIG5vdCB1c2VkICovCiB9 IEJhY2tncm91bmRXb3JrZXI7CiA8L3Byb2dyYW1saXN0aW5nPgogICA8L3BhcmE+CkBAIC0x MDgsNiArMTA4LDE4IEBAIHR5cGVkZWYgc3RydWN0IEJhY2tncm91bmRXb3JrZXIKICAgICAg PC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgIDx0ZXJtPjxsaXRlcmFsPkJHV09SS0VSX05PX05PVElGWTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxpbmRleHRlcm0+ PHByaW1hcnk+QkdXT1JLRVJfTk9fTk9USUZZPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgorICAg ICAgIE5vcm1hbGx5LCB0aGUgYmFja2VuZCB0aGF0IHJlZ2lzdGVycyBhIGR5bmFtaWMgd29y a2VyIHdpbGwgYmUgbm90aWZpZWQKKyAgICAgICB3aXRoIDxsaXRlcmFsPklOVEVSUlVQVF9H RU5FUkFMPC9saXRlcmFsPiB3aGVuIHRoZSB3b3JrZXJzIHN0YXRlIGNoYW5nZXMsIHdoaWNo IGFsbG93cyB0aGUKKyAgICAgICBjYWxsZXIgdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBz dGFydCBhbmQgc2h1dCBkb3duLiAgVGhhdCBjYW4gYmUKKyAgICAgICBzdXBwcmVzc2VkIGJ5 IHNldHRpbmcgdGhpcyBmbGFnLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor ICAgIDwvdmFybGlzdGVudHJ5PgogICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPC9wYXJhPgpA QCAtMTgxLDEyICsxOTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VyCiAg IDwvcGFyYT4KIAogICA8cGFyYT4KLSAgIDxzdHJ1Y3RmaWVsZD5iZ3dfbm90aWZ5X3BpZDwv c3RydWN0ZmllbGQ+IGlzIHRoZSBQSUQgb2YgYSBQb3N0Z3JlU1FMCi0gICBiYWNrZW5kIHBy b2Nlc3MgdG8gd2hpY2ggdGhlIHBvc3RtYXN0ZXIgc2hvdWxkIHNlbmQgPGxpdGVyYWw+U0lH VVNSMTwvbGl0ZXJhbD4KLSAgIHdoZW4gdGhlIHByb2Nlc3MgaXMgc3RhcnRlZCBvciBleGl0 cy4gIEl0IHNob3VsZCBiZSAwIGZvciB3b3JrZXJzIHJlZ2lzdGVyZWQKLSAgIGF0IHBvc3Rt YXN0ZXIgc3RhcnR1cCB0aW1lLCBvciB3aGVuIHRoZSBiYWNrZW5kIHJlZ2lzdGVyaW5nIHRo ZSB3b3JrZXIgZG9lcwotICAgbm90IHdpc2ggdG8gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBz dGFydCB1cC4gIE90aGVyd2lzZSwgaXQgc2hvdWxkIGJlCi0gICBpbml0aWFsaXplZCB0byA8 bGl0ZXJhbD5NeVByb2NQaWQ8L2xpdGVyYWw+LgorICAgPHN0cnVjdGZpZWxkPmJnd19ub3Rp ZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gaXMgbm90IHVzZWQgYW5kIG1heSBiZSByZW1vdmVkCisg ICBpbiBhIGZ1dHVyZSByZWxlYXNlLgogICA8L3BhcmE+CiAKICAgPHBhcmE+T25jZSBydW5u aW5nLCB0aGUgcHJvY2VzcyBjYW4gY29ubmVjdCB0byBhIGRhdGFiYXNlIGJ5IGNhbGxpbmcK QEAgLTI1OCwxMCArMjY2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlcgog CiAgIDxwYXJhPgogICAgSW4gc29tZSBjYXNlcywgYSBwcm9jZXNzIHdoaWNoIHJlZ2lzdGVy cyBhIGJhY2tncm91bmQgd29ya2VyIG1heSB3aXNoIHRvCi0gICB3YWl0IGZvciB0aGUgd29y a2VyIHRvIHN0YXJ0IHVwLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IGluaXRpYWxp emluZwotICAgPHN0cnVjdGZpZWxkPmJnd19ub3RpZnlfcGlkPC9zdHJ1Y3RmaWVsZD4gdG8g PGxpdGVyYWw+TXlQcm9jUGlkPC9saXRlcmFsPiBhbmQKLSAgIHRoZW4gcGFzc2luZyB0aGUg PHR5cGU+QmFja2dyb3VuZFdvcmtlckhhbmRsZSAqPC90eXBlPiBvYnRhaW5lZCBhdAotICAg cmVnaXN0cmF0aW9uIHRpbWUgdG8KKyAgIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQg dXAuICBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQgd2l0aCB0aGUKICAgIDxmdW5jdGlvbj5X YWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoPHBhcmFtZXRlcj5CYWNrZ3JvdW5kV29y a2VySGFuZGxlCiAgICAqaGFuZGxlPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnBpZF90ICo8 L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj4gZnVuY3Rpb24uCiAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgYmxvY2sgdW50aWwgdGhlIHBvc3RtYXN0ZXIgaGFzIGF0dGVtcHRlZCB0byBzdGFydCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDMwY2RjZTAw YjQ3Li5jNGExZjY5YzYxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxl bC5jCkBAIC02MDQsNyArNjA0LDYgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIAlzcHJpbnRmKHdvcmtlci5iZ3dfbGlicmFyeV9uYW1lLCAicG9z dGdyZXMiKTsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfZnVuY3Rpb25fbmFtZSwgIlBhcmFsbGVs V29ya2VyTWFpbiIpOwogCXdvcmtlci5iZ3dfbWFpbl9hcmcgPSBVSW50MzJHZXREYXR1bShk c21fc2VnbWVudF9oYW5kbGUocGN4dC0+c2VnKSk7Ci0Jd29ya2VyLmJnd19ub3RpZnlfcGlk ID0gTXlQcm9jUGlkOwogCiAJLyoKIAkgKiBTdGFydCB3b3JrZXJzLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCmluZGV4IGM4Mjk3MWU5Mjc0Li40NDI1ZTQwNGEzNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtNzgsNiArNzgsOCBAQCB0eXBlZGVmIHN0 cnVjdCBCYWNrZ3JvdW5kV29ya2VyU2xvdAogCXBpZF90CQlwaWQ7CQkJLyogSW52YWxpZFBp ZCA9IG5vdCBzdGFydGVkIHlldDsgMCA9IGRlYWQgKi8KIAl1aW50NjQJCWdlbmVyYXRpb247 CQkvKiBpbmNyZW1lbnRlZCB3aGVuIHNsb3QgaXMgcmVjeWNsZWQgKi8KIAlCYWNrZ3JvdW5k V29ya2VyIHdvcmtlcjsKKwlpbnQJCQlub3RpZnlfcG1jaGlsZDsKKwlQcm9jTnVtYmVyCW5v dGlmeV9wcm9jX251bWJlcjsKIH0gQmFja2dyb3VuZFdvcmtlclNsb3Q7CiAKIC8qCkBAIC0x OTIsOCArMTk0LDkgQEAgQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkKQogCQkJc2xv dC0+dGVybWluYXRlID0gZmFsc2U7CiAJCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOwogCQkJ c2xvdC0+Z2VuZXJhdGlvbiA9IDA7CisJCQlzbG90LT5ub3RpZnlfcG1jaGlsZCA9IDA7CisJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJ cnctPnJ3X3NobWVtX3Nsb3QgPSBzbG90bm87Ci0JCQlydy0+cndfd29ya2VyLmJnd19ub3Rp ZnlfcGlkID0gMDsJLyogbWlnaHQgYmUgcmVpbml0IGFmdGVyIGNyYXNoICovCiAJCQltZW1j cHkoJnNsb3QtPndvcmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29y a2VyKSk7CiAJCQkrK3Nsb3RubzsKIAkJfQpAQCAtMjM0LDYgKzIzNywxNCBAQCBGaW5kUmVn aXN0ZXJlZFdvcmtlckJ5U2xvdE51bWJlcihpbnQgc2xvdG5vKQogCXJldHVybiBOVUxMOwog fQogCitQcm9jTnVtYmVyCitHZXROb3RpZnlQcm9jTnVtYmVyRm9yUmVnaXN0ZXJlZFdvcmtl cihSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQoreworCUJhY2tncm91bmRXb3JrZXJTbG90ICpz bG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3J3LT5yd19zaG1lbV9zbG90XTsK KworCXJldHVybiBzbG90LT5ub3RpZnlfcHJvY19udW1iZXI7Cit9CisKIC8qCiAgKiBOb3Rp Y2UgY2hhbmdlcyB0byBzaGFyZWQgbWVtb3J5IG1hZGUgYnkgb3RoZXIgYmFja2VuZHMuCiAg KiBBY2NlcHQgbmV3IHdvcmtlciByZXF1ZXN0cyBvbmx5IGlmIGFsbG93X25ld193b3JrZXJz IGlzIHRydWUuCkBAIC0zMTUsMjAgKzMyNiwyMCBAQCBCYWNrZ3JvdW5kV29ya2VyU3RhdGVD aGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJLyoKIAkJICogSWYgdGhlIHdvcmtl ciBpcyBtYXJrZWQgZm9yIHRlcm1pbmF0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIGFkZCBpdCB0 bwogCQkgKiB0aGUgcmVnaXN0ZXJlZCB3b3JrZXJzIGxpc3Q7IHdlIGNhbiBqdXN0IGZyZWUg dGhlIHNsb3QuIEhvd2V2ZXIsIGlmCi0JCSAqIGJnd19ub3RpZnlfcGlkIGlzIHNldCwgdGhl IHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZSB3b3JrZXIgbWF5Ci0JCSAqIG5lZWQgdG8g a25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJlcXVlc3QsIHNvIGJl IHN1cmUKLQkJICogdG8gc2lnbmFsIGl0LgorCQkgKiBiZ3dfbm90aWZ5X3Byb2NfbnVtYmVy IGlzIHNldCwgdGhlIHByb2Nlc3MgdGhhdCByZWdpc3RlcmVkIHRoZQorCQkgKiB3b3JrZXIg bWF5IG5lZWQgdG8ga25vdyB0aGF0IHdlJ3ZlIHByb2Nlc3NlZCB0aGUgdGVybWluYXRlIHJl cXVlc3QsCisJCSAqIHNvIGJlIHN1cmUgdG8gc2lnbmFsIGl0LgogCQkgKi8KIAkJaWYgKHNs b3QtPnRlcm1pbmF0ZSkKIAkJewotCQkJaW50CQkJbm90aWZ5X3BpZDsKKwkJCWludAkJCW5v dGlmeV9wcm9jX251bWJlcjsKIAogCQkJLyoKIAkJCSAqIFdlIG5lZWQgYSBtZW1vcnkgYmFy cmllciBoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsb2FkIG9mCi0JCQkgKiBiZ3dfbm90 aWZ5X3BpZCBhbmQgdGhlIHVwZGF0ZSBvZiBwYXJhbGxlbF90ZXJtaW5hdGVfY291bnQKLQkJ CSAqIGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5fdXNlLgorCQkJICogYmd3X25v dGlmeV9wcm9jX251bWJlciBhbmQgdGhlIHVwZGF0ZSBvZgorCQkJICogcGFyYWxsZWxfdGVy bWluYXRlX2NvdW50IGNvbXBsZXRlIGJlZm9yZSB0aGUgc3RvcmUgdG8gaW5fdXNlLgogCQkJ ICovCi0JCQlub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJ bm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwogCQkJaWYg KChzbG90LT53b3JrZXIuYmd3X2ZsYWdzICYgQkdXT1JLRVJfQ0xBU1NfUEFSQUxMRUwpICE9 IDApCiAJCQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3Rlcm1pbmF0ZV9jb3Vu dCsrOwogCQkJc2xvdC0+cGlkID0gMDsKQEAgLTMzNiw4ICszNDcsOCBAQCBCYWNrZ3JvdW5k V29ya2VyU3RhdGVDaGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2VycykKIAkJCXBnX21lbW9y eV9iYXJyaWVyKCk7CiAJCQlzbG90LT5pbl91c2UgPSBmYWxzZTsKIAotCQkJaWYgKG5vdGlm eV9waWQgIT0gMCkKLQkJCQlraWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCQkJaWYgKG5v dGlmeV9wcm9jX251bWJlciAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJCVNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5vdGlmeV9wcm9jX251bWJlcik7CiAKIAkJCWNv bnRpbnVlOwogCQl9CkBAIC0zODMsMjMgKzM5NCw2IEBAIEJhY2tncm91bmRXb3JrZXJTdGF0 ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKQogCQlydy0+cndfd29ya2VyLmJnd19t YWluX2FyZyA9IHNsb3QtPndvcmtlci5iZ3dfbWFpbl9hcmc7CiAJCW1lbWNweShydy0+cndf d29ya2VyLmJnd19leHRyYSwgc2xvdC0+d29ya2VyLmJnd19leHRyYSwgQkdXX0VYVFJBTEVO KTsKIAotCQkvKgotCQkgKiBDb3B5IHRoZSBQSUQgdG8gYmUgbm90aWZpZWQgYWJvdXQgc3Rh dGUgY2hhbmdlcywgYnV0IG9ubHkgaWYgdGhlCi0JCSAqIHBvc3RtYXN0ZXIga25vd3MgYWJv dXQgYSBiYWNrZW5kIHdpdGggdGhhdCBQSUQuICBJdCBpc24ndCBhbiBlcnJvcgotCQkgKiBp ZiB0aGUgcG9zdG1hc3RlciBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIFBJRCwgYmVjYXVzZSB0 aGUgYmFja2VuZAotCQkgKiB0aGF0IHJlcXVlc3RlZCB0aGUgd29ya2VyIGNvdWxkIGhhdmUg ZGllZCAob3IgYmVlbiBraWxsZWQpIGp1c3QKLQkJICogYWZ0ZXIgZG9pbmcgc28uICBOb25l dGhlbGVzcywgYXQgbGVhc3QgdW50aWwgd2UgZ2V0IHNvbWUgZXhwZXJpZW5jZQotCQkgKiB3 aXRoIGhvdyB0aGlzIHBsYXlzIG91dCBpbiB0aGUgd2lsZCwgbG9nIGEgbWVzc2FnZSBhdCBh IHJlbGF0aXZlCi0JCSAqIGhpZ2ggZGVidWcgbGV2ZWwuCi0JCSAqLwotCQlydy0+cndfd29y a2VyLmJnd19ub3RpZnlfcGlkID0gc2xvdC0+d29ya2VyLmJnd19ub3RpZnlfcGlkOwotCQlp ZiAoIVBvc3RtYXN0ZXJNYXJrUElERm9yV29ya2VyTm90aWZ5KHJ3LT5yd193b3JrZXIuYmd3 X25vdGlmeV9waWQpKQotCQl7Ci0JCQllbG9nKERFQlVHMSwgIndvcmtlciBub3RpZmljYXRp b24gUElEICVkIGlzIG5vdCB2YWxpZCIsCi0JCQkJIChpbnQpIHJ3LT5yd193b3JrZXIuYmd3 X25vdGlmeV9waWQpOwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7Ci0J CX0KLQogCQkvKiBJbml0aWFsaXplIHBvc3RtYXN0ZXIgYm9va2tlZXBpbmcuICovCiAJCXJ3 LT5yd19waWQgPSAwOwogCQlydy0+cndfY3Jhc2hlZF9hdCA9IDA7CkBAIC00MjEsNyArNDE1 LDcgQEAgQmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3dfbmV3X3dvcmtl cnMpCiAgKiBOT1RFOiBUaGUgZW50cnkgaXMgdW5saW5rZWQgZnJvbSBCYWNrZ3JvdW5kV29y a2VyTGlzdC4gIElmIHRoZSBjYWxsZXIgaXMKICAqIGl0ZXJhdGluZyB0aHJvdWdoIGl0LCBi ZXR0ZXIgdXNlIGEgbXV0YWJsZSBpdGVyYXRvciEKICAqCi0gKiBDYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90aWZ5X3BpZCwgaWYgYXBwcm9wcmlhdGUuCisg KiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBiZ3dfbm90aWZ5X3Byb2Nf bnVtYmVyLCBpZiBhcHByb3ByaWF0ZS4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUg aW52b2tlZCBvbmx5IGluIHRoZSBwb3N0bWFzdGVyLgogICovCkBAIC00NjYsOCArNDYwLDgg QEAgUmVwb3J0QmFja2dyb3VuZFdvcmtlclBJRChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQog CXNsb3QgPSAmQmFja2dyb3VuZFdvcmtlckRhdGEtPnNsb3RbcnctPnJ3X3NobWVtX3Nsb3Rd OwogCXNsb3QtPnBpZCA9IHJ3LT5yd19waWQ7CiAKLQlpZiAocnctPnJ3X3dvcmtlci5iZ3df bm90aWZ5X3BpZCAhPSAwKQotCQlraWxsKHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQs IFNJR1VTUjEpOworCWlmIChzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9Q Uk9DX05VTUJFUikKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgc2xvdC0+ bm90aWZ5X3Byb2NfbnVtYmVyKTsKIH0KIAogLyoKQEAgLTQ4MywxMiArNDc3LDEyIEBAIHZv aWQKIFJlcG9ydEJhY2tncm91bmRXb3JrZXJFeGl0KFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncp CiB7CiAJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3Q7Ci0JaW50CQkJbm90aWZ5X3BpZDsK KwlQcm9jTnVtYmVyCW5vdGlmeV9wcm9jX251bWJlcjsKIAogCUFzc2VydChydy0+cndfc2ht ZW1fc2xvdCA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKIAlzbG90ID0gJkJhY2tncm91bmRX b3JrZXJEYXRhLT5zbG90W3J3LT5yd19zaG1lbV9zbG90XTsKIAlzbG90LT5waWQgPSBydy0+ cndfcGlkOwotCW5vdGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOwor CW5vdGlmeV9wcm9jX251bWJlciA9IHNsb3QtPm5vdGlmeV9wcm9jX251bWJlcjsKIAogCS8q CiAJICogSWYgdGhpcyB3b3JrZXIgaXMgc2xhdGVkIGZvciBkZXJlZ2lzdHJhdGlvbiwgZG8g dGhhdCBiZWZvcmUgbm90aWZ5aW5nCkBAIC01MDEsMjcgKzQ5NSwzNCBAQCBSZXBvcnRCYWNr Z3JvdW5kV29ya2VyRXhpdChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KQogCQlydy0+cndfd29y a2VyLmJnd19yZXN0YXJ0X3RpbWUgPT0gQkdXX05FVkVSX1JFU1RBUlQpCiAJCUZvcmdldEJh Y2tncm91bmRXb3JrZXIocncpOwogCi0JaWYgKG5vdGlmeV9waWQgIT0gMCkKLQkJa2lsbChu b3RpZnlfcGlkLCBTSUdVU1IxKTsKKwlpZiAobm90aWZ5X3Byb2NfbnVtYmVyICE9IElOVkFM SURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIG5v dGlmeV9wcm9jX251bWJlcik7CiB9CiAKIC8qCi0gKiBDYW5jZWwgU0lHVVNSMSBub3RpZmlj YXRpb25zIGZvciBhIFBJRCBiZWxvbmdpbmcgdG8gYW4gZXhpdGluZyBiYWNrZW5kLgorICog Q2FuY2VsIG5vdGlmaWNhdGlvbnMgZm9yIGEgUElEIGJlbG9uZ2luZyB0byBhbiBleGl0aW5n IGJhY2tlbmQuCiAgKgogICogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQg ZnJvbSB0aGUgcG9zdG1hc3Rlci4KICAqLwogdm9pZAotQmFja2dyb3VuZFdvcmtlclN0b3BO b3RpZmljYXRpb25zKHBpZF90IHBpZCkKK0JhY2tncm91bmRXb3JrZXJTdG9wTm90aWZpY2F0 aW9ucyhpbnQgcG1jaGlsZCkKIHsKIAlkbGlzdF9pdGVyCWl0ZXI7CiAKIAlkbGlzdF9mb3Jl YWNoKGl0ZXIsICZCYWNrZ3JvdW5kV29ya2VyTGlzdCkKIAl7CiAJCVJlZ2lzdGVyZWRCZ1dv cmtlciAqcnc7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90OwogCiAJCXJ3ID0gZGxp c3RfY29udGFpbmVyKFJlZ2lzdGVyZWRCZ1dvcmtlciwgcndfbG5vZGUsIGl0ZXIuY3VyKTsK LQkJaWYgKHJ3LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPT0gcGlkKQotCQkJcnctPnJ3 X3dvcmtlci5iZ3dfbm90aWZ5X3BpZCA9IDA7CisJCUFzc2VydChydy0+cndfc2htZW1fc2xv dCA8IG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2Vy RGF0YS0+c2xvdFtydy0+cndfc2htZW1fc2xvdF07CisKKwkJaWYgKHNsb3QtPm5vdGlmeV9w bWNoaWxkID09IHBtY2hpbGQpCisJCXsKKwkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsK KwkJCXNsb3QtPm5vdGlmeV9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJ CX0KIAl9CiB9CiAKQEAgLTU1MywxNCArNTU0LDE0IEBAIEZvcmdldFVuc3RhcnRlZEJhY2tn cm91bmRXb3JrZXJzKHZvaWQpCiAKIAkJLyogSWYgaXQncyBub3QgeWV0IHN0YXJ0ZWQsIGFu ZCB0aGVyZSdzIHNvbWVvbmUgd2FpdGluZyAuLi4gKi8KIAkJaWYgKHNsb3QtPnBpZCA9PSBJ bnZhbGlkUGlkICYmCi0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkICE9IDApCisJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJ ewogCQkJLyogLi4uIHRoZW4gemFwIGl0LCBhbmQgbm90aWZ5IHRoZSB3YWl0ZXIgKi8KLQkJ CWludAkJCW5vdGlmeV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJ aW50CQkJbm90aWZ5X3Byb2NfbnVtYmVyID0gc2xvdC0+bm90aWZ5X3Byb2NfbnVtYmVyOwog CiAJCQlGb3JnZXRCYWNrZ3JvdW5kV29ya2VyKHJ3KTsKLQkJCWlmIChub3RpZnlfcGlkICE9 IDApCi0JCQkJa2lsbChub3RpZnlfcGlkLCBTSUdVU1IxKTsKKwkJCWlmIChub3RpZnlfcHJv Y19udW1iZXIgIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCQlTZW5kSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMLCBub3RpZnlfcHJvY19udW1iZXIpOwogCQl9CiAJfQogfQpAQCAt NjEzLDExICs2MTQsNiBAQCBSZXNldEJhY2tncm91bmRXb3JrZXJDcmFzaFRpbWVzKHZvaWQp CiAJCQkgKiByZXNldHRpbmcuCiAJCQkgKi8KIAkJCXJ3LT5yd19jcmFzaGVkX2F0ID0gMDsK LQotCQkJLyoKLQkJCSAqIElmIHRoZXJlIHdhcyBhbnlvbmUgd2FpdGluZyBmb3IgaXQsIHRo ZXkncmUgaGlzdG9yeS4KLQkJCSAqLwotCQkJcnctPnJ3X3dvcmtlci5iZ3dfbm90aWZ5X3Bp ZCA9IDA7CiAJCX0KIAl9CiB9CkBAIC05ODEsMTUgKzk3Nyw2IEBAIFJlZ2lzdGVyQmFja2dy b3VuZFdvcmtlcihCYWNrZ3JvdW5kV29ya2VyICp3b3JrZXIpCiAJaWYgKCFTYW5pdHlDaGVj a0JhY2tncm91bmRXb3JrZXIod29ya2VyLCBMT0cpKQogCQlyZXR1cm47CiAKLQlpZiAod29y a2VyLT5iZ3dfbm90aWZ5X3BpZCAhPSAwKQotCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImJh Y2tncm91bmQgd29ya2VyIFwiJXNcIjogb25seSBkeW5hbWljIGJhY2tncm91bmQgd29ya2Vy cyBjYW4gcmVxdWVzdCBub3RpZmljYXRpb24iLAotCQkJCQkJd29ya2VyLT5iZ3dfbmFtZSkp KTsKLQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICogRW5mb3JjZSBtYXhpbXVtIG51bWJlciBv ZiB3b3JrZXJzLiAgTm90ZSB0aGlzIGlzIG92ZXJseSByZXN0cmljdGl2ZTogd2UKIAkgKiBj b3VsZCBhbGxvdyBtb3JlIG5vbi1zaG1lbS1jb25uZWN0ZWQgd29ya2VycywgYmVjYXVzZSB0 aGVzZSBkb24ndCBjb3VudApAQCAtMTEwNSw2ICsxMDkyLDI1IEBAIFJlZ2lzdGVyRHluYW1p Y0JhY2tncm91bmRXb3JrZXIoQmFja2dyb3VuZFdvcmtlciAqd29ya2VyLAogCQkJaWYgKHBh cmFsbGVsKQogCQkJCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdpc3Rlcl9j b3VudCsrOwogCisJCQlpZiAoKHNsb3QtPndvcmtlci5iZ3dfZmxhZ3MgJiBCR1dPUktFUl9T SE1FTV9BQ0NFU1MpICE9IDAgJiYKKwkJCQkoc2xvdC0+d29ya2VyLmJnd19mbGFncyAmIEJH V09SS0VSX05PX05PVElGWSkgPT0gMCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFNldCBub3Rp ZnlfcHJvY19udW1iZXIgc28gdGhhdCBwb3N0bWFzdGVyIHdpbGwgc2VuZCB1cyBhbgorCQkJ CSAqIGludGVycnVwdC4gQWxzbyByZW1lbWJlciB0aGUgcG1jaGlsZCBzbG90IG51bWJlcjsK KwkJCQkgKiBwb3N0bWFzdGVyIG5lZWRzIGl0IHRvIGRldGVjdCB3aGVuIHdlIGV4aXQsIHRv IGRpc2FybSB0aGUKKwkJCQkgKiBub3RpZmljYXRpb24uCisJCQkJICovCisJCQkJc2xvdC0+ bm90aWZ5X3BtY2hpbGQgPSBNeVBNQ2hpbGRTbG90OworCQkJCXNsb3QtPm5vdGlmeV9wcm9j X251bWJlciA9IE15UHJvY051bWJlcjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBO byBub3RpZmljYXRpb25zLiAqLworCQkJCXNsb3QtPm5vdGlmeV9wbWNoaWxkID0gMDsKKwkJ CQlzbG90LT5ub3RpZnlfcHJvY19udW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCQkJ fQorCiAJCQkvKgogCQkJICogTWFrZSBzdXJlIHBvc3RtYXN0ZXIgZG9lc24ndCBzZWUgdGhl IHNsb3QgYXMgaW4gdXNlIGJlZm9yZSBpdAogCQkJICogc2VlcyB0aGUgbmV3IGNvbnRlbnRz LgpAQCAtMTIwNSw4ICsxMjExLDkgQEAgR2V0QmFja2dyb3VuZFdvcmtlclBpZChCYWNrZ3Jv dW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBpZF90ICpwaWRwKQogICogQkdXSF9QT1NUTUFT VEVSX0RJRUQsIHNpbmNlIGl0IHRoYXQgY2FzZSB3ZSBrbm93IHRoYXQgc3RhcnR1cCB3aWxs IG5vdAogICogdGFrZSBwbGFjZS4KICAqCi0gKiBUaGUgY2FsbGVyICptdXN0KiBoYXZlIHNl dCBvdXIgUElEIGFzIHRoZSB3b3JrZXIncyBiZ3dfbm90aWZ5X3BpZCwKLSAqIGVsc2Ugd2Ug d2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4gdGhlIHdvcmtlcidzIHN0YXRlIGNo YW5nZXMuCisgKiBUaGlzIHdvcmtzIG9ubHkgaWYgdGhlIHdvcmtlciB3YXMgcmVnaXN0ZXJl ZCB3aXRoIEJHV09SS0VSX1NITUVNX0FDQ0VTUyBhbmQKKyAqIHdpdGhvdXQgQkdXT1JLRVJf Tk9fTk9USUZZLCBlbHNlIHdlIHdpbGwgbm90IGJlIGF3b2tlbiBwcm9tcHRseSB3aGVuIHRo ZQorICogd29ya2VyJ3Mgc3RhdGUgY2hhbmdlcy4KICAqLwogQmd3SGFuZGxlU3RhdHVzCiBX YWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dyb3VuZFdvcmtlckhhbmRsZSAq aGFuZGxlLCBwaWRfdCAqcGlkcCkKQEAgLTEyNTAsOCArMTI1Nyw5IEBAIFdhaXRGb3JCYWNr Z3JvdW5kV29ya2VyU3RhcnR1cChCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUsIHBp ZF90ICpwaWRwKQogICogdXAgYW5kIHJldHVybiBCR1dIX1BPU1RNQVNURVJfRElFRCwgYmVj YXVzZSBpdCdzIHRoZSBwb3N0bWFzdGVyIHRoYXQKICAqIG5vdGlmaWVzIHVzIHdoZW4gYSB3 b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgogICoKLSAqIFRoZSBjYWxsZXIgKm11c3QqIGhhdmUg c2V0IG91ciBQSUQgYXMgdGhlIHdvcmtlcidzIGJnd19ub3RpZnlfcGlkLAotICogZWxzZSB3 ZSB3aWxsIG5vdCBiZSBhd29rZW4gcHJvbXB0bHkgd2hlbiB0aGUgd29ya2VyJ3Mgc3RhdGUg Y2hhbmdlcy4KKyAqIFRoaXMgd29ya3Mgb25seSBpZiB0aGUgd29ya2VyIHdhcyByZWdpc3Rl cmVkIHdpdGggQkdXT1JLRVJfU0hNRU1fQUNDRVNTIGFuZAorICogd2l0aG91dCBCR1dPUktF Ul9OT19OT1RJRlksIGVsc2Ugd2Ugd2lsbCBub3QgYmUgYXdva2VuIHByb21wdGx5IHdoZW4g dGhlCisgKiB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLgogICovCiBCZ3dIYW5kbGVTdGF0dXMK IFdhaXRGb3JCYWNrZ3JvdW5kV29ya2VyU2h1dGRvd24oQmFja2dyb3VuZFdvcmtlckhhbmRs ZSAqaGFuZGxlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1 cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5kZXggNGNkZTdk NTJiZDMuLmYzMjUwMjBhZGUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMK QEAgLTExMiw2ICsxMTIsOSBAQCBSYWlzZUludGVycnVwdCh1aW50MzIgaW50ZXJydXB0TWFz aykKIAogLyoKICAqIFNldCBhbiBpbnRlcnJ1cHQgZmxhZyBpbiBhbm90aGVyIGJhY2tlbmQu CisgKgorICogTm90ZTogVGhpcyBjYW4gYWxzbyBiZSBjYWxsZWQgZnJvbSB0aGUgcG9zdG1h c3Rlciwgc28gYmUgY2FyZWZ1bCB0byBub3QKKyAqIHRydXN0IHRoZSBjb250ZW50cyBvZiBz aGFyZWQgbWVtb3J5LgogICovCiB2b2lkCiBTZW5kSW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1 cHRNYXNrLCBQcm9jTnVtYmVyIHBncHJvY25vKQpAQCAtMTUyLDcgKzE1NSw2IEBAIEluaXRp YWxpemVJbnRlcnJ1cHRXYWl0U2V0KHZvaWQpCiAJQXNzZXJ0KGludGVycnVwdF9wb3MgPT0g SW50ZXJydXB0V2FpdFNldEludGVycnVwdFBvcyk7CiB9CiAKLQogLyoKICAqIFdhaXQgZm9y IGFueSBvZiB0aGUgaW50ZXJydXB0cyBpbiBpbnRlcnJ1cHRNYXNrIHRvIGJlIHNldCwgb3Ig Zm9yCiAgKiBwb3N0bWFzdGVyIGRlYXRoLCBvciB1bnRpbCB0aW1lb3V0IGlzIGV4Y2VlZGVk LiAnd2FrZUV2ZW50cycgaXMgYSBiaXRtYXNrCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1h c3Rlci5jCmluZGV4IDgyMDQ0YWJkYjVkLi5mMTMzMmViMjE5NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTQyMDMsMTUgKzQyMDMsMTUgQEAgbWF5YmVfc3Rh cnRfYmd3b3JrZXJzKHZvaWQpCiAJCXsKIAkJCWlmIChydy0+cndfd29ya2VyLmJnd19yZXN0 YXJ0X3RpbWUgPT0gQkdXX05FVkVSX1JFU1RBUlQpCiAJCQl7Ci0JCQkJaW50CQkJbm90aWZ5 X3BpZDsKKwkJCQlQcm9jTnVtYmVyCW5vdGlmeV9wcm9jX251bWJlcjsKIAotCQkJCW5vdGlm eV9waWQgPSBydy0+cndfd29ya2VyLmJnd19ub3RpZnlfcGlkOworCQkJCW5vdGlmeV9wcm9j X251bWJlciA9IEdldE5vdGlmeVByb2NOdW1iZXJGb3JSZWdpc3RlcmVkV29ya2VyKHJ3KTsK IAogCQkJCUZvcmdldEJhY2tncm91bmRXb3JrZXIocncpOwogCiAJCQkJLyogUmVwb3J0IHdv cmtlciBpcyBnb25lIG5vdy4gKi8KLQkJCQlpZiAobm90aWZ5X3BpZCAhPSAwKQotCQkJCQlr aWxsKG5vdGlmeV9waWQsIFNJR1VTUjEpOworCQkJCWlmIChub3RpZnlfcHJvY19udW1iZXIg IT0gSU5WQUxJRF9QUk9DX05VTUJFUikKKwkJCQkJU2VuZEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCwgbm90aWZ5X3Byb2NfbnVtYmVyKTsKIAogCQkJCWNvbnRpbnVlOwogCQkJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGQ5 MTViOWE5ZmNlLi4xNjgxMTJhMzIyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNDk1LDcgKzQ5NSw2IEBAIHJldHJ5OgogCX0KIAog CWJndy5iZ3dfcmVzdGFydF90aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7Ci0JYmd3LmJnd19u b3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERh dHVtKHNsb3QpOwogCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZi Z3csICZiZ3dfaGFuZGxlKSkKQEAgLTkzOCw3ICs5MzcsNiBAQCBBcHBseUxhdW5jaGVyUmVn aXN0ZXIodm9pZCkKIAlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sCiAJCQkg ImxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIiKTsKIAliZ3cuYmd3X3Jlc3RhcnRfdGlt ZSA9IDU7Ci0JYmd3LmJnd19ub3RpZnlfcGlkID0gMDsKIAliZ3cuYmd3X21haW5fYXJnID0g KERhdHVtKSAwOwogCiAJUmVnaXN0ZXJCYWNrZ3JvdW5kV29ya2VyKCZiZ3cpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvd2FpdGV2ZW50c2V0LmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwppbmRleCAxZWJhNzZhMTljNC4uOTM4 MGRkNThkNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVu dHNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jCkBA IC0yMDU5LDYgKzIwNTksMTEgQEAgV2FrZXVwTXlQcm9jKHZvaWQpCiB2b2lkCiBXYWtldXBP dGhlclByb2MoUEdQUk9DICpwcm9jKQogeworCS8qCisJICogTm90ZTogVGhpcyBjYW4gYWxz byBiZSBjYWxsZWQgZnJvbSB0aGUgcG9zdG1hc3Rlciwgc28gYmUgY2FyZWZ1bCB0byBub3QK KwkgKiBhc3N1bWUgdGhhdCB0aGUgY29udGVudHMgb2Ygc2hhcmVkIG1lbW9yeSBhcmUgdmFs aWQuICBSZWFkaW5nIHRoZSAncGlkJworCSAqIChvciBldmVudCBoYW5kbGUgb24gV2luZG93 cykgaXMgc2FmZSBlbm91Z2guCisJICovCiAjaWZuZGVmIFdJTjMyCiAJa2lsbChwcm9jLT5w aWQsIFNJR1VSRyk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rl ci9iZ3dvcmtlci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlci5oCmluZGV4 IDA1ODY2N2E0N2EwLi5lYTM3MTU3YjJjOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9iZ3dvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuaApAQCAtNTksNiArNTksMTQgQEAKICAqLwogI2RlZmluZSBCR1dPUktFUl9CQUNLRU5E X0RBVEFCQVNFX0NPTk5FQ1RJT04JCTB4MDAwMgogCisvKgorICogRHluYW1pYyB3b3JrZXJz IGNyZWF0ZWQgd2l0aCBzaGFyZWQgbWVtb3J5IGFjY2VzcyB1c3VhbGx5IHNlbmQgYW4gaW50 ZXJydXB0CisgKiB0byB0aGUgY3JlYXRpbmcgYmFja2VuZCB3aGVuIHRoZXkgc3RhcnQgYW5k IHN0b3AsIGFsbG93aW5nCisgKiBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlcntTdGFydHVwLFNo dXRkb3dufSgpIHRvIHdvcmsuICBTdWNoIG5vdGlmaWNhdGlvbnMKKyAqIGNhbiBiZSBzdXBw cmVzc2VkIHdpdGggdGhpcyBmbGFnLgorICovCisjZGVmaW5lIEJHV09SS0VSX05PX05PVElG WQkJCQkJCQkweDAwMDQKKwogLyoKICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5 IGZvciBwYXJhbGxlbCBxdWVyaWVzLCB0byBrZWVwIHRyYWNrIG9mIHRoZQogICogbnVtYmVy IG9mIGFjdGl2ZSBwYXJhbGxlbCB3b3JrZXJzIGFuZCBtYWtlIHN1cmUgd2UgbmV2ZXIgbGF1 bmNoIG1vcmUgdGhhbgpAQCAtOTcsNyArMTA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQmFja2dy b3VuZFdvcmtlcgogCWNoYXIJCWJnd19mdW5jdGlvbl9uYW1lW0JHV19NQVhMRU5dOwogCURh dHVtCQliZ3dfbWFpbl9hcmc7CiAJY2hhcgkJYmd3X2V4dHJhW0JHV19FWFRSQUxFTl07Ci0J cGlkX3QJCWJnd19ub3RpZnlfcGlkOyAvKiBTSUdVU1IxIHRoaXMgYmFja2VuZCBvbiBzdGFy dC9zdG9wICovCisJcGlkX3QJCWJnd19ub3RpZnlfcGlkOyAvKiBub3QgdXNlZCAqLwogfSBC YWNrZ3JvdW5kV29ya2VyOwogCiB0eXBlZGVmIGVudW0gQmd3SGFuZGxlU3RhdHVzCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oIGIv c3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaAppbmRleCAyOWU2 ZjQ0Y2YwOC4uOWI0ZDRkNTE2NmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9i Z3dvcmtlcl9pbnRlcm5hbHMuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImRhdGF0 eXBlL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvYmd3b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIK IAogLyogR1VDIG9wdGlvbnMgKi8KIApAQCAtNDcsOSArNDgsMTAgQEAgZXh0ZXJuIHZvaWQg QmFja2dyb3VuZFdvcmtlclN0YXRlQ2hhbmdlKGJvb2wgYWxsb3dfbmV3X3dvcmtlcnMpOwog ZXh0ZXJuIHZvaWQgRm9yZ2V0QmFja2dyb3VuZFdvcmtlcihSZWdpc3RlcmVkQmdXb3JrZXIg KnJ3KTsKIGV4dGVybiB2b2lkIFJlcG9ydEJhY2tncm91bmRXb3JrZXJQSUQoUmVnaXN0ZXJl ZEJnV29ya2VyICpydyk7CiBleHRlcm4gdm9pZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyRXhp dChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKLWV4dGVybiB2b2lkIEJhY2tncm91bmRXb3Jr ZXJTdG9wTm90aWZpY2F0aW9ucyhwaWRfdCBwaWQpOworZXh0ZXJuIHZvaWQgQmFja2dyb3Vu ZFdvcmtlclN0b3BOb3RpZmljYXRpb25zKGludCBwbWNoaWxkKTsKIGV4dGVybiB2b2lkIEZv cmdldFVuc3RhcnRlZEJhY2tncm91bmRXb3JrZXJzKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVz ZXRCYWNrZ3JvdW5kV29ya2VyQ3Jhc2hUaW1lcyh2b2lkKTsKK2V4dGVybiBQcm9jTnVtYmVy IEdldE5vdGlmeVByb2NOdW1iZXJGb3JSZWdpc3RlcmVkV29ya2VyKFJlZ2lzdGVyZWRCZ1dv cmtlciAqcncpOwogCiAvKiBFbnRyeSBwb2ludCBmb3IgYmFja2dyb3VuZCB3b3JrZXIgcHJv Y2Vzc2VzICovCiBleHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyTWFpbihjb25zdCB2b2lk ICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKSBwZ19hdHRyaWJ1dGVf bm9yZXR1cm4oKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEv c2V0dXAuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYwppbmRleCAx ZDAxOWZhYTJlNS4uMDJhYTQyMDM2MGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9zaG1fbXEvc2V0dXAuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21x L3NldHVwLmMKQEAgLTEzNCw2ICsxMzQsNyBAQCBzZXR1cF9keW5hbWljX3NoYXJlZF9tZW1v cnkoaW50NjQgcXVldWVfc2l6ZSwgaW50IG53b3JrZXJzLAogCiAJLyogU2V0IHVwIHRoZSBo ZWFkZXIgcmVnaW9uLiAqLwogCWhkciA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2Yo dGVzdF9zaG1fbXFfaGVhZGVyKSk7CisJaGRyLT5sZWFkZXJfcHJvY19udW1iZXIgPSBNeVBy b2NOdW1iZXI7CiAJU3BpbkxvY2tJbml0KCZoZHItPm11dGV4KTsKIAloZHItPndvcmtlcnNf dG90YWwgPSBud29ya2VyczsKIAloZHItPndvcmtlcnNfYXR0YWNoZWQgPSAwOwpAQCAtMjIz LDggKzIyNCw2IEBAIHNldHVwX2JhY2tncm91bmRfd29ya2VycyhpbnQgbndvcmtlcnMsIGRz bV9zZWdtZW50ICpzZWcpCiAJc3ByaW50Zih3b3JrZXIuYmd3X2Z1bmN0aW9uX25hbWUsICJ0 ZXN0X3NobV9tcV9tYWluIik7CiAJc25wcmludGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFY TEVOLCAidGVzdF9zaG1fbXEiKTsKIAl3b3JrZXIuYmd3X21haW5fYXJnID0gVUludDMyR2V0 RGF0dW0oZHNtX3NlZ21lbnRfaGFuZGxlKHNlZykpOwotCS8qIHNldCBiZ3dfbm90aWZ5X3Bp ZCwgc28gd2UgY2FuIGRldGVjdCBpZiB0aGUgd29ya2VyIHN0b3BzICovCi0Jd29ya2VyLmJn d19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCiAJLyogUmVnaXN0ZXIgdGhlIHdvcmtlcnMu ICovCiAJZm9yIChpID0gMDsgaSA8IG53b3JrZXJzOyArK2kpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Rfc2htX21xLmggYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htX21xL3Rlc3Rfc2htX21xLmgKaW5kZXggOWFkOWY2M2I0NGUuLjViMWI2 Y2Y4MzU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rlc3Rf c2htX21xLmgKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0X3NobV9t cS5oCkBAIC0yOCw2ICsyOCw4IEBACiAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CisJUHJvY051 bWJlcglsZWFkZXJfcHJvY19udW1iZXI7CisKIAlzbG9ja190CQltdXRleDsKIAlpbnQJCQl3 b3JrZXJzX3RvdGFsOwogCWludAkJCXdvcmtlcnNfYXR0YWNoZWQ7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3dvcmtlci5jIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NobV9tcS93b3JrZXIuYwppbmRleCA3NTFjYWM2MDUxMy4uM2QzMWM0NjI2OWUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvd29ya2VyLmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS93b3JrZXIuYwpAQCAtNTMsNyArNTMs NiBAQCB0ZXN0X3NobV9tcV9tYWluKERhdHVtIG1haW5fYXJnKQogCXNobV9tcV9oYW5kbGUg Km91dHFoOwogCXZvbGF0aWxlIHRlc3Rfc2htX21xX2hlYWRlciAqaGRyOwogCWludAkJCW15 d29ya2VybnVtYmVyOwotCVBHUFJPQwkgICAqcmVnaXN0cmFudDsKIAogCS8qCiAJICogRXN0 YWJsaXNoIHNpZ25hbCBoYW5kbGVycy4KQEAgLTEyMywxMyArMTIyLDcgQEAgdGVzdF9zaG1f bXFfbWFpbihEYXR1bSBtYWluX2FyZykKIAlTcGluTG9ja0FjcXVpcmUoJmhkci0+bXV0ZXgp OwogCSsraGRyLT53b3JrZXJzX3JlYWR5OwogCVNwaW5Mb2NrUmVsZWFzZSgmaGRyLT5tdXRl eCk7Ci0JcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRyeS0+ Ymd3X25vdGlmeV9waWQpOwotCWlmIChyZWdpc3RyYW50ID09IE5VTEwpCi0JewotCQllbG9n KERFQlVHMSwgInJlZ2lzdHJhbnQgYmFja2VuZCBoYXMgZXhpdGVkIHByZW1hdHVyZWx5Iik7 Ci0JCXByb2NfZXhpdCgxKTsKLQl9Ci0JU2VuZEludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCwgR2V0TnVtYmVyRnJvbVBHUHJvYyhyZWdpc3RyYW50KSk7CisJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwgaGRyLT5sZWFkZXJfcHJvY19udW1iZXIpOwogCiAJLyogRG8g dGhlIHdvcmsuICovCiAJY29weV9tZXNzYWdlcyhpbnFoLCBvdXRxaCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwppbmRleCAxYzIzYjRlYWRlYi4uMjhh Mjc5ODAzN2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3Jr ZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGku YwpAQCAtMzY1LDcgKzM2NSw2IEBAIF9QR19pbml0KHZvaWQpCiAJd29ya2VyLmJnd19yZXN0 YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFSVDsKIAlzcHJpbnRmKHdvcmtlci5iZ3dfbGli cmFyeV9uYW1lLCAid29ya2VyX3NwaSIpOwogCXNwcmludGYod29ya2VyLmJnd19mdW5jdGlv bl9uYW1lLCAid29ya2VyX3NwaV9tYWluIik7Ci0Jd29ya2VyLmJnd19ub3RpZnlfcGlkID0g MDsKIAogCS8qCiAJICogTm93IGZpbGwgaW4gd29ya2VyLXNwZWNpZmljIGRhdGEsIGFuZCBk byB0aGUgYWN0dWFsIHJlZ2lzdHJhdGlvbnMuCkBAIC00MTQsOCArNDEzLDYgQEAgd29ya2Vy X3NwaV9sYXVuY2goUEdfRlVOQ1RJT05fQVJHUykKIAlzbnByaW50Zih3b3JrZXIuYmd3X25h bWUsIEJHV19NQVhMRU4sICJ3b3JrZXJfc3BpIGR5bmFtaWMgd29ya2VyICVkIiwgaSk7CiAJ c25wcmludGYod29ya2VyLmJnd190eXBlLCBCR1dfTUFYTEVOLCAid29ya2VyX3NwaSBkeW5h bWljIik7CiAJd29ya2VyLmJnd19tYWluX2FyZyA9IEludDMyR2V0RGF0dW0oaSk7Ci0JLyog c2V0IGJnd19ub3RpZnlfcGlkIHNvIHRoYXQgd2UgY2FuIHVzZSBXYWl0Rm9yQmFja2dyb3Vu ZFdvcmtlclN0YXJ0dXAgKi8KLQl3b3JrZXIuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7 CiAKIAkvKiBleHRyYWN0IGZsYWdzLCBpZiBhbnkgKi8KIAluZGltID0gQVJSX05ESU0oYXJy KTsKLS0gCjIuMzkuNQoK --------------kl7e3aDdgBl9cMvp58xJLWGu Content-Type: text/x-patch; charset=UTF-8; name="v7-0004-Replace-ProcSignals-and-other-ad-hoc-signals-with.patch" Content-Disposition: attachment; filename*0="v7-0004-Replace-ProcSignals-and-other-ad-hoc-signals-with.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlNjIzNDkyNTkwMDUyZjE2ODQxZmZhMTcxMzgzNzY2ZWIxNTcwNzRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAxODoxNjoxNiArMDIwMApT dWJqZWN0OiBbUEFUQ0ggdjcgNC80XSBSZXBsYWNlIFByb2NTaWduYWxzIGFuZCBvdGhlciBh ZCBob2Mgc2lnbmFscyB3aXRoCiBpbnRlcnJ1cHRzCgpUaGlzIHJlcGxhY2VzIHRoZSBJTlRF UlJVUFRfR0VORVJBTCwgb3Igc2V0dGluZyB0aGUgcHJvY2VzcydzIGxhdGNoCmJlZm9yZSB0 aGF0LCB3aXRoIG1vcmUgZmluZS1ncmFpbmVkIGludGVycnVwdHMuIEFsbCB0aGUgUHJvY1Np Z25hbHMKYXJlIGNvbnZlcnRlZCBpbnRvIGludGVycnVwdHMsIGFzIHdlbGwgYXMgdGhpbmdz IGxpa2UgdGltZXJzIGFuZApjb25maWctcmVsb2FkIHJlcXVlc3RzLgoKTW9zdCBjYWxsZXJz IG9mIFdhaXRJbnRlcnJ1cHQgbm93IHVzZSBJTlRFUlJVUFRfQ0ZJX01BU0soKSwgd2hpY2gg aXMKYSBiaXRtYXNrIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpbnRlcnJ1cHRzIHRoYXQgYXJl IGhhbmRsZWQgYnkKQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBpbiB0aGUgY3VycmVudCBzdGF0 ZS4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKQpub3cgY2xlYXJzIHRoZSBpbnRlcnJ1cHRzIGJp dHMgdGhhdCBpdCBwcm9jZXNzZXMsIHRoZSBjYWxsZXIgaXMgbm8KbG9uZ2VyIHJlcXVpcmVk IHRvIGRvIENsZWFySW50ZXJydXB0IChvciBSZXNldExhdGNoKSBmb3IgdGhvc2UKYml0cy4g SWYgeW91IHdha2UgdXAgZm9yIG90aGVyIGludGVycnVwdHMgdGhhdCBhcmUgbm90IGhhbmRs ZWQgYnkKQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgeW91IHN0aWxsIG5lZWQgdG8gY2xlYXIg dGhvc2UuCgpOb3cgdGhhdCB0aGVyZSBhcmUgc2VwYXJhdGUgYml0cyBmb3IgZGlmZmVyZW50 IHRoaW5ncywgaXQncyBwb3NzaWJsZQp0byBkbyBlLmcuIFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0NPTkZJR19SRUxPQUQgfApJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKSB0byB3YWl0IGp1 c3QgZm9yIGEgY29uZmlnIHJlbG9hZCByZXF1ZXN0IG9yCnF1ZXJ5IGNhbmNlbGxhdGlvbiwg YW5kIG5vdCB3YWtlIHVwIG9uIG90aGVyIGV2ZW50cyBsaWtlIGEgc2h1dGRvd24KcmVxdWVz dC4gVGhhdCdzIG5vdCB2ZXJ5IHVzZWZ1bCBpbiBwcmFjdGljZSwgYXMgQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKQpzdGlsbCBwcm9jZXNzZXMgdGhvc2UgaW50ZXJydXB0cyBpZiB5b3UgY2Fs bCBpdCwgYW5kIHlvdSB3b3VsZCB3YW50IHRvCnByb2Nlc3MgYWxsIHRoZSBzdGFuZGFyZCBp bnRlcnJ1cHRzIHByb21wdGx5IGFueXdheS4gSXQgbWlnaHQgYmUKdXNlZnVsIHRvIGNoZWNr IGZvciBzcGVjaWZpYyBpbnRlcnJ1cHRzIHdpdGggSW50ZXJydXB0UGVuZGluZygpLAp3aXRo b3V0IGltbWVkaWF0ZWx5IHByb2Nlc3NpbmcgdGhlbSwgaG93ZXZlci4gc3BnZG9pbnNlcnQo KSBkb2VzCnNvbWV0aGluZyBsaWtlIHRoYXQuIEluIHRoaXMgY29tbWl0IEkgZGlkbid0IGNo YW5nZSBpdHMgb3ZlcmFsbCBsb2dpYywKYnV0IGl0IHByb2JhYmx5IGNvdWxkIGJlIG1hZGUg bW9yZSBmaW5lLWdyYWluZWQgbm93LgoKTW9yZSBpbXBvcnRhbnRseSwgeW91IGNhbiBub3cg aGF2ZSBhZGRpdGlvbmFsIGludGVycnVwdHMgdGhhdCBhcmUKcHJvY2Vzc2VkIGxlc3MgZnJl cXVlbnRseSBhbmQgZG8gbm90IHdha2UgdXAgdGhlIGJhY2tlbmQgd2hlbiBpdCdzIG5vdApw cmVwYXJlZCB0byBwcm9jZXNzIHRoZW0uIEZvciBleGFtcGxlLCB0aGUgU0lOVkFMX0NBVENI VVAgaW50ZXJydXB0IGlzCm9ubHkgcHJvY2Vzc2VkIHdoZW4gdGhlIGJhY2tlbmQgaXMgaWRs ZS4gUHJldmlvdXNseSwgYSBjYXRjaHVwIHJlcXVlc3QKd291bGQgd2FrZSB1cCB0aGUgcHJv Y2VzcyB3aGV0aGVyIGl0IHdhcyByZWFkeSB0byBoYW5kbGUgaXQgb3Igbm90Owpub3cgaXQg b25seSB3YWtlcyB1cCB3aGVuIHRoZSBiYWNrZW5kIGlzIGlkbGUuIFRoYXQncyBub3QgdG9v CnNpZ25pZmljYW50IGZvciBjYXRjaHVwIGludGVycnVwdHMgYmVjYXVzZSB0aGV5IGRvbid0 IG9jY3VyIHRoYXQgb2Z0ZW4KYW55d2F5LCBidXQgaXQncyBzdGlsbCBuaWNlIGFuZCBjb3Vs ZCBiZSBtb3JlIHNpZ25pZmljYW50IHdpdGggb3RoZXIKaW50ZXJydXB0cy4KClRoZXJlJ3Mg c3RpbGwgYSBnZW5lcmFsLXB1cnBvc2UgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0IHRo YXQgaXMKbXVsdGlwbGV4ZWQgZm9yIG1hbnkgZGlmZmVyZW50IHB1cnBvc2VzIGluIGRpZmZl cmVudCBwcm9jZXNzZXMsIGZvcgpleGFtcGxlIHRvIHdha2UgdXAgdGhlIHdhbHdyaXRlciB3 aGVuIGl0IGhhcyB3b3JrIHRvIGRvLCBhbmQgdG8gd2FrZQp1cCBwcm9jZXNzZXMgd2FpdGlu ZyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZS4gVGhlIGNvbW1vbiBwcm9wZXJ0eSBvZgp0aG9z ZSB1c2VzIGlzIHRoYXQgdGhlcmUncyBzb21lIG90aGVyIGZsYWcgb3IgY29uZGl0aW9uIHRo YXQgaXMKY2hlY2tlZCBvbiBlYWNoIHdha2V1cCwgdGhlIHdha2V1cCBpbnRlcnJ1cHQgaXRz ZWxmIG1lYW5zIG1lcmVseSB0aGF0CnNvbWV0aGluZyBpbnRlcmVzdGluZyBtaWdodCd2ZSBo YXBwZW5lZC4KClRPRE86CgogKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIGJlY2FtZSBJTlRF UlJVUFRfU0hVVERPV05fQVVYIGFuZAogICBQcm9jRGllUGVuZGluZyBiZWNhbWUgSU5URVJS VVBUX0RJRSwgYnV0IGRvIHdlIHJlYWxseSBuZWVkIHR3bwogICBkaWZmZXJlbnQgaW50ZXJy dXB0cyBmb3IgcmVxdWVzdGluZyBhIHByb2Nlc3MgdG8gdGVybWluYXRlPwoKICogVGhlcmUg YXJlIG9ubHkgYSBmZXcgaW50ZXJydXB0cyBiaXRzIGxlZnQuIENvbnNvbGlkYXRlIHRoZSBl eGlzdGluZwogICBvbmVzLCBzd2l0Y2ggdG8gYSA2NC1iaXQgYXRvbWljLCBvciBtdWxpdHBs ZXggc29tZSBvZiB0aGVtPwoKWFhYOiBvcmlnaW5hbCB0ZXh0IGZyb20gVGhvbWFzJ3MgcGF0 Y2g6CgoiUHJvY1NpZ25hbHMiIHdlcmUgYSB0d28tc3RlcCB3YXkgZm9yIG9uZSBiYWNrZW5k IHRvIGFzayBhbm90aGVyIGJhY2tlbmQKdG8gZG8gc29tZXRoaW5nLCBieSBtdWx0aXBsZXhp bmcgU0lHVVNSMS4gIEhpc3RvcmljYWxseSwgcmVhbCB3b3JrIHdhcwpkb25lIGluIHRoZSBT SUdVU1IxIGhhbmRsZXIsIGJ1dCBjb21taXQgMGRhMDk2ZDcgcmVtb3ZlZCB0aGUgbGFzdCBj YXNlCm9mIHRoYXQuICBOb3cgdGhlIGhhbmRsZXIganVzdCBzZXQgImludGVycnVwdCBwZW5k aW5nIiBmbGFncywgY2FsbGVkClNldExhdGNoKE15TGF0Y2gpIHRvIGNsb3NlIHJhY2VzLCBh bmQgdGhlbiBkaWQgYWxsIHRoZSBpbnRlcmVzdGluZyB3b3JrCmF0IHRoZSBuZXh0IENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgY2FsbC4KClRoaXMgY29tbWl0IHJlbW92ZXMgdGhlIFByb2NT aWduYWwgc3RlcCwgcmVwbGFjaW5nIFByb2NTaWduYWxzIHdpdGgKSW50ZXJydXB0cy4KCkJl bmVmaXRzIG9mIHRoaXMgcmVmYWN0b3JpbmcgaW5jbHVkZSByZW1vdmluZyB1bm5lY2Vzc2Fy eSBjb25jZXB0cyBhbmQKdGVybWlub2xvZ3ksIGF2b2lkaW5nIHRoZSByaXNrIG9mIHBlb3Bs ZSBwdXR0aW5nIGJ1Z2d5IGNvZGUgYmFjayBpbnRvCnNpZ25hbCBoYW5kbGVycywgcmVtb3Zp bmcgYSB3aG9sZSBsb3Qgb2YgZ2xvYmFsIHZhcmlhYmxlcywgcmVtb3ZpbmcKZGVwZW5kZW5j aWVzIG9uIFBJRHMgYW5kIHRoZSBwcm9jZXNzIG1vZGVsLCByZW1vdmluZyByaXNrcyBvZiBz ZW5kaW5nCmEgc2lnbmFsIHRoYXQgaGFzIGRlZmF1bHQgYWN0aW9uIG9mIHRlcm1pbmF0aW9u IHRvIHRoZSB3cm9uZyBwcm9jZXNzLAphbmQgdGFraW5nIGEgc3RlcCB0b3dhcmRzIGJlaW5n IGFibGUgcmVtb3ZlIHRoZSBmYWtlIHNpZ25hbCBzeXN0ZW0KZnJvbSB0aGUgV2luZG93cyBw b3J0LgoKTm90YWJsZSBjaGFuZ2VzOgoKICogYWxsIGNhbGxzIHRvIFNlbmRQcm9jU2lnbmFs KHBpZCwgUFJPQ1NJR19YWFgpIGJlY29tZQogICBTZW5kSW50ZXJydXB0KElOVEVSUlVQVF9Y WFgsIHByb2NubykKICogYWxsIFh4eFBlbmRpbmcgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgZ29u ZTsgdGhleSBhcmUgcmVwcmVzZW50ZWQKICAgYXMgYml0cyBpbiBNeVByb2MtPnBlbmRpbmdf aW50ZXJydXB0cwogKiB0aGUgU0lHVVNSMSBoYW5kbGVyIGlzIGdvbmUKICogcGxhY2VzIHRo YXQga25vdyB0aGUgUElEcyBvZiBvdGhlciBiYWNrZW5kcyBtdXN0IG5vdyB1c2UgcHJvY25v cwogICBpbnN0ZWFkCgpUaGUgb25seSBjb2RlIGxlZnQgaW4gc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jIHJlbGF0ZXMgdG8KUHJvY1NpZ25hbEJhcnJpZXJzLiAgWFhY IFRob3NlIHNob3VsZCBwZXJoYXBzIGJlIHJlbmFtZWQuCgpTSUdVU1IxIGNhbiBub3cgYmUg c2V0IHRvIFNJR19JR04gaW4gbW9zdCBiYWNrZW5kcy4gIFNvbWUgc3BlY2lhbCBjYXNlcwpy ZW1haW4sIHRoYXQgd2VyZSBub3QgdXNpbmcgdGhlIGdlbmVyYWwgc2lndXNyMV9oYW5kbGVy IChub3cgcmVtb3ZlZCkuCgpBdXRob3I6IFRob21hcyBNdW5ybyA8dGhvbWFzLm11bnJvQGdt YWlsLmNvbT4KQXV0aG9yOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ElMkJoVUtHJTJC M01rUzIxeUs0akw0Y2daeXdkbm5HS2lCZzBqYXRvVjZremFuaUJtY3FiUSU0MG1haWwuZ21h aWwuY29tCi0tLQogY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMgICAgICAgICAg ICAgIHwgIDI1ICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAg ICAgICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9zb3VyY2VzLnNnbWwgICAgICAgICAgICAg ICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j ICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2RvaW5z ZXJ0LmMgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURN RS5wYXJhbGxlbCAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFy YWxsZWwuYyAgICAgICAgIHwgIDUwICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nZnVuY3MuYyAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dyZWNvdmVyeS5jICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvYmFja3VwL2Jh c2ViYWNrdXBfdGhyb3R0bGUuYyAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jICAgICAgICAgICAgICAgICAgfCAxMDMgKy0tLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2RiY29tbWFuZHMuYyAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZXNwYWNlLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMgICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjQXN5bmMuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jh Y2tlbmQvbGlicHEvYmUtc2VjdXJlLmMgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMv YmFja2VuZC9saWJwcS9wcWNvbW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMjIgKy0KIHNy Yy9iYWNrZW5kL2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQog c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDQzICst CiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAgIDcg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuYyAgICAgICAgICAgICB8ICAx NSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwg IDcwICsrLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgICAgICAgICAg ICB8ICAzMyArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAg ICAgIHwgIDIwICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jICAgICAg ICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYyAg ICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6 ZXIuYyAgICAgICAgfCAgMjYgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVy LmMgICAgICAgICAgICB8ICAgOCArLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxy ZWNlaXZlci5jICAgICAgIHwgIDEyICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMgfCAgNTcgKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMgICAgfCAgNDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICA1NyArLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDE5ICstCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAgODkgKystLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgICAgICAgICB8ICAxOSArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgICAgIHwgIDc4ICsrLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8ICAxOCArLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMgICAgICAgICAgICAgICAgIHwgICA2ICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAgICAgICAgICAgfCAgMjAg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8IDI0 MiArKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgICAgICAg ICAgICAgIHwgIDY0ICstLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3Mu YyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYyAg ICAgICAgICAgICAgfCAgNTIgKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxh ZHQuYyAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYyAgICAgICAgICAgICB8ICA4MSArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93 YWl0ZXZlbnRzZXQuYyAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9jb25kaXRpb25fdmFyaWFibGUuYyB8ICAgMyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8IDM0OSArKysrKysrLS0tLS0tLS0tCiBz cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyAgfCAgMjAgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyAgICAgICAgICAgICB8ICAxNiAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYyAgICAgICAgICAgICAgICAgIHwgICAz ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAg MTUgLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jICAgICAgICAgICAgIHwg IDIwICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYyAgICAgICAgICAgICAg fCAgIDYgLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMgICAgICAgICAgICAgICAg IHwgIDIwICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaCAgICAgICAgICAgICAg ICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaCAgICAgICAgICAgICAg ICAgIHwgICA2IC0KIHNyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLWZlLWhlbHBlcnMuaCAg ICAgICB8ICAxNCArLQogc3JjL2luY2x1ZGUvbGlicHEvcHFtcS5oICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAg ICAgICAgICAgfCAxMjIgKy0tLS0tCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvaW50ZXJy dXB0LmggICAgICAgICAgICB8IDM4NiArKysrKysrKysrKysrKystLS0KIHNyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvc3RhcnR1cC5oICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgIDUgLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmggICB8ICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDUgKy0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggICAgICAgICAgICAgICB8ICAgNyArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgIDQxIC0t CiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oICAgICAgICAgICAgICAgICAgfCAgIDUg LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3dhaXRldmVudHNldC5oICAgICAgICAgICAgfCAg IDUgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICAgICAgICAgICAgICAgICB8 ICAgNiArLQogc3JjL2luY2x1ZGUvdXRpbHMvbWVtdXRpbHMuaCAgICAgICAgICAgICAgICAg IHwgICAxIC0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAuYyAgICAgICAg ICB8ICAgOSArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMgICAgICAg ICAgIHwgICA2ICstCiBzcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5j ICAgICAgfCAgIDkgKy0KIDg2IGZpbGVzIGNoYW5nZWQsIDExNzIgaW5zZXJ0aW9ucygrKSwg MTQ0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3ByZXdhcm0vYXV0 b3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5jCmluZGV4IGE1 MjA1OGJlOWJiLi5hZjAwY2ZkOWEwNSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wcmV3YXJt L2F1dG9wcmV3YXJtLmMKKysrIGIvY29udHJpYi9wZ19wcmV3YXJtL2F1dG9wcmV3YXJtLmMK QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTE0 OSw3ICsxNDgsNyBAQCBhdXRvcHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCS8qIEVz dGFibGlzaCBzaWduYWwgaGFuZGxlcnM7IG9uY2UgdGhhdCdzIGRvbmUsIHVuYmxvY2sgc2ln bmFscy4gKi8KIAlwcXNpZ25hbChTSUdURVJNLCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25S ZXF1ZXN0KTsKIAlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxv YWQpOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsK KwlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAlCYWNrZ3JvdW5kV29ya2VyVW5ibG9j a1NpZ25hbHMoKTsKIAogCS8qIENyZWF0ZSAoaWYgbmVjZXNzYXJ5KSBhbmQgYXR0YWNoIHRv IG91ciBzaGFyZWQgbWVtb3J5IGFyZWEuICovCkBAIC0xOTgsMjQgKzE5NywyMiBAQCBhdXRv cHJld2FybV9tYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChmaXJzdF90aW1lKQogCXsKIAkJ YXB3X2xvYWRfYnVmZmVycygpOwotCQlmaW5hbF9kdW1wX2FsbG93ZWQgPSAhU2h1dGRvd25S ZXF1ZXN0UGVuZGluZzsKKwkJZmluYWxfZHVtcF9hbGxvd2VkID0gIUlzSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKTsKIAkJbGFzdF9kdW1wX3RpbWUgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CiAJfQogCiAJLyogUGVyaW9kaWNhbGx5IGR1bXAgYnVmZmVy cyB1bnRpbCB0ZXJtaW5hdGVkLiAqLwotCXdoaWxlICghU2h1dGRvd25SZXF1ZXN0UGVuZGlu ZykKKwl3aGlsZSAoIUlzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVY KSkKIAl7CiAJCS8qIEluIGNhc2Ugb2YgYSBTSUdIVVAsIGp1c3QgcmVsb2FkIHRoZSBjb25m aWd1cmF0aW9uLiAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQ KTsKLQkJfQogCiAJCWlmIChhdXRvcHJld2FybV9pbnRlcnZhbCA8PSAwKQogCQl7CiAJCQkv KiBXZSdyZSBvbmx5IGR1bXBpbmcgYXQgc2h1dGRvd24sIHNvIGp1c3Qgd2FpdCBmb3JldmVy LiAqLwotCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQko dm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJCQkJ IElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAogCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkJIC0xTCwKIAkJCQkJCQkJIFBHX1dBSVRfRVhU RU5TSU9OKTsKQEAgLTI0MiwxNCArMjM5LDEyIEBAIGF1dG9wcmV3YXJtX21haW4oRGF0dW0g bWFpbl9hcmcpCiAJCQl9CiAKIAkJCS8qIFNsZWVwIHVudGlsIHRoZSBuZXh0IGR1bXAgdGlt ZS4gKi8KLQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX0FVWCB8CisJCQkJCQkJ CSBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKIAkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkgZGVsYXlfaW5fbXMs CiAJCQkJCQkJCSBQR19XQUlUX0VYVEVOU0lPTik7CiAJCX0KLQotCQkvKiBSZXNldCB0aGUg bGF0Y2gsIGxvb3AuICovCi0JCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsK IAl9CiAKIAkvKgpAQCAtMzk0LDcgKzM4OSw3IEBAIGFwd19sb2FkX2J1ZmZlcnModm9pZCkK IAkJICogTGlrZXdpc2UsIGRvbid0IGxhdW5jaCBpZiB3ZSd2ZSBhbHJlYWR5IGJlZW4gdG9s ZCB0byBzaHV0IGRvd24uCiAJCSAqIChUaGUgbGF1bmNoIHdvdWxkIGZhaWwgYW55d2F5LCBi dXQgd2UgbWlnaHQgYXMgd2VsbCBza2lwIGl0LikKIAkJICovCi0JCWlmIChTaHV0ZG93blJl cXVlc3RQZW5kaW5nKQorCQlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVU RE9XTl9BVVgpKQogCQkJYnJlYWs7CiAKIAkJLyoKQEAgLTQxNSw3ICs0MTAsNyBAQCBhcHdf bG9hZF9idWZmZXJzKHZvaWQpCiAJTFdMb2NrUmVsZWFzZSgmYXB3X3N0YXRlLT5sb2NrKTsK IAogCS8qIFJlcG9ydCBvdXIgc3VjY2VzcywgaWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmlzaC4g Ki8KLQlpZiAoIVNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKCFJc0ludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShl cnJtc2coImF1dG9wcmV3YXJtIHN1Y2Nlc3NmdWxseSBwcmV3YXJtZWQgJWQgb2YgJWQgcHJl dmlvdXNseS1sb2FkZWQgYmxvY2tzIiwKIAkJCQkJCWFwd19zdGF0ZS0+cHJld2FybWVkX2Js b2NrcywgbnVtX2VsZW1lbnRzKSkpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCmlu ZGV4IDBjOWZkZWI5MmZkLi44OGYwOGFjMjQ2NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYwpAQCAtMTY1NCwxMiArMTY1NCwxMSBAQCBwZ2Zkd19nZXRfY2xlYW51cF9yZXN1 bHQoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lLAogCQkJCQlwZ2Zkd193ZV9j bGVhbnVwX3Jlc3VsdCA9IFdhaXRFdmVudEV4dGVuc2lvbk5ldygiUG9zdGdyZXNGZHdDbGVh bnVwUmVzdWx0Iik7CiAKIAkJCQkvKiBTbGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0 byBkbyAqLwotCQkJCXdjID0gV2FpdEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5F UkFMLAorCQkJCXdjID0gV2FpdEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFT SygpLAogCQkJCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8 CiAJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJ CQkJCQkJICAgUFFzb2NrZXQoY29ubiksCiAJCQkJCQkJCQkJICAgY3VyX3RpbWVvdXQsIHBn ZmR3X3dlX2NsZWFudXBfcmVzdWx0KTsKLQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CiAKIAkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvc291cmNlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dt bAppbmRleCBmYzY0MmY1ZjcxMy4uMDE4ZDY5NzBjMjQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9zb3VyY2VzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3NvdXJjZXMuc2dtbApAQCAt MTAwMCw4ICsxMDAwLDcgQEAgTWVtb3J5Q29udGV4dFN3aXRjaFRvKE1lbW9yeUNvbnRleHQg Y29udGV4dCkKIHN0YXRpYyB2b2lkCiBoYW5kbGVfc2lnaHVwKFNJR05BTF9BUkdTKQogewot ICAgIGdvdF9TSUdIVVAgPSB0cnVlOwotICAgIFJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKKyAgICBSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCk7 CiB9CiA8L3Byb2dyYW1saXN0aW5nPgogICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCA0NWYyNTI3MGRkOC4uNTg5MGRjMzE4MjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTMyNDMsMTEgKzMyNDMsMTAg QEAgbGF6eV90cnVuY2F0ZV9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJCQlyZXR1cm47 CiAJCQl9CiAKLQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAor CQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCksCiAJCQkJCQkJ CSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJ CQkJCQkJIFZBQ1VVTV9UUlVOQ0FURV9MT0NLX1dBSVRfSU5URVJWQUwsCiAJCQkJCQkJCSBX QUlUX0VWRU5UX1ZBQ1VVTV9UUlVOQ0FURSk7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGdkb2luc2VydC5jCmluZGV4IGFmNmIyN2IyMTM1Li5mY2NkMmZmZmRjOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdkb2luc2VydC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnZG9pbnNlcnQuYwpAQCAtMjA0MCw4ICsyMDQwLDEx IEBAIHNwZ2RvaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJ CSAqIHBlbmRpbmcsIGJyZWFrIG91dCBvZiB0aGUgbG9vcCBhbmQgZGVhbCB3aXRoIHRoZSBz aXR1YXRpb24gYmVsb3cuCiAJCSAqIFNldCByZXN1bHQgPSBmYWxzZSBiZWNhdXNlIHdlIG11 c3QgcmVzdGFydCB0aGUgaW5zZXJ0aW9uIGlmIHRoZQogCQkgKiBpbnRlcnJ1cHQgaXNuJ3Qg YSBxdWVyeS1jYW5jZWwtb3ItZGllIGNhc2UuCisJCSAqCisJCSAqIFhYWDogSU5URVJSVVBU X0NGSV9BTExfTUFTSyBjb3ZlcnMgbW9yZSB0aGFuIGp1c3QgcXVlcnkgY2FuY2VsIGFuZCBk aWUuCisJCSAqIENvdWxkIHdlIGJlIG1vcmUgcHJlY2lzZSBoZXJlPwogCQkgKi8KLQkJaWYg KElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSkKKwkJaWYgKElzSW50ZXJydXB0UGVu ZGluZyhJTlRFUlJVUFRfQ0ZJX0FMTF9NQVNLKSkKIAkJewogCQkJcmVzdWx0ID0gZmFsc2U7 CiAJCQlicmVhazsKQEAgLTIxNjcsNyArMjE3MCw3IEBAIHNwZ2RvaW5zZXJ0KFJlbGF0aW9u IGluZGV4LCBTcEdpc3RTdGF0ZSAqc3RhdGUsCiAJCQkgKiByZXBlYXRlZGx5LCBjaGVjayBm b3IgcXVlcnkgY2FuY2VsIChzZWUgY29tbWVudHMgYWJvdmUpLgogCQkJICovCiAJcHJvY2Vz c19pbm5lcl90dXBsZToKLQkJCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkp CisJCQlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9DRklfQUxMX01BU0spKQog CQkJewogCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJCWJyZWFrOwpAQCAtMjM0Myw3ICsyMzQ2 LDcgQEAgc3BnZG9pbnNlcnQoUmVsYXRpb24gaW5kZXgsIFNwR2lzdFN0YXRlICpzdGF0ZSwK IAkgKiB3ZXJlIHRoZSBjYXNlLCB0ZWxsaW5nIHRoZSBjYWxsZXIgdG8gcmV0cnkgd291bGQg Y3JlYXRlIGFuIGluZmluaXRlCiAJICogbG9vcC4KIAkgKi8KLQlBc3NlcnQoSU5URVJSVVBU U19DQU5fQkVfUFJPQ0VTU0VEKCkpOworCUFzc2VydChJTlRFUlJVUFRTX0NBTl9CRV9QUk9D RVNTRUQoSU5URVJSVVBUX0NGSV9BTExfTUFTSykpOwogCiAJLyoKIAkgKiBGaW5hbGx5LCBj aGVjayBmb3IgaW50ZXJydXB0cyBhZ2Fpbi4gIElmIHRoZXJlIHdhcyBhIHF1ZXJ5IGNhbmNl bCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJh bGxlbCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbAppbmRl eCA5ZGYzZGE5MWIwYy4uYTM1OTNkZDRmNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL1JFQURNRS5wYXJhbGxlbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9SRUFETUUucGFyYWxsZWwKQEAgLTM3LDcgKzM3LDcgQEAgd2l0aCBmZXdlciBw YXJhbGxlbCB3b3JrZXJzIHRoYW4gaXQgb3JpZ2luYWxseSByZXF1ZXN0ZWQsIHNvIGNhdGVy aW5nIHRvCiB0aGlzIGNhc2UgaW1wb3NlcyBubyBhZGRpdGlvbmFsIGJ1cmRlbi4KIAogV2hl bmV2ZXIgYSBuZXcgbWVzc2FnZSAob3IgcGFydGlhbCBtZXNzYWdlOyB2ZXJ5IGxhcmdlIG1l c3NhZ2VzIG1heSB3cmFwKSBpcwotc2VudCB0byB0aGUgZXJyb3ItcmVwb3J0aW5nIHF1ZXVl LCBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UgaXMgc2VudCB0byB0aGUKK3NlbnQgdG8gdGhl IGVycm9yLXJlcG9ydGluZyBxdWV1ZSwgSU5URVJSVVBUX1BBUkFMTEVMX01FU1NBR0UgaXMg c2VudCB0byB0aGUKIGluaXRpYXRpbmcgYmFja2VuZC4gIFRoaXMgY2F1c2VzIHRoZSBuZXh0 IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgaW4gdGhlCiBpbml0aWF0aW5nIGJhY2tlbmQgdG8g cmVhZCBhbmQgcmV0aHJvdyB0aGUgbWVzc2FnZS4gIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlz CiBtYWtlcyBlcnJvciByZXBvcnRpbmcgaW4gcGFyYWxsZWwgbW9kZSAianVzdCB3b3JrIi4g IE9mIGNvdXJzZSwgdG8gd29yawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVs LmMKaW5kZXggYzRhMWY2OWM2MTkuLjI1MzIyYTk5NTIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTExNSw5ICsxMTUsNiBAQCB0eXBlZGVmIHN0cnVj dCBGaXhlZFBhcmFsbGVsU3RhdGUKICAqLwogaW50CQkJUGFyYWxsZWxXb3JrZXJOdW1iZXIg PSAtMTsKIAotLyogSXMgdGhlcmUgYSBwYXJhbGxlbCBtZXNzYWdlIHBlbmRpbmcgd2hpY2gg d2UgbmVlZCB0byByZWNlaXZlPyAqLwotdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVs TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKLQogLyogQXJlIHdlIGluaXRpYWxpemluZyBhIHBh cmFsbGVsIHdvcmtlcj8gKi8KIGJvb2wJCUluaXRpYWxpemluZ1BhcmFsbGVsV29ya2VyID0g ZmFsc2U7CiAKQEAgLTEyNyw5ICsxMjQsNiBAQCBzdGF0aWMgRml4ZWRQYXJhbGxlbFN0YXRl ICpNeUZpeGVkUGFyYWxsZWxTdGF0ZTsKIC8qIExpc3Qgb2YgYWN0aXZlIHBhcmFsbGVsIGNv bnRleHRzLiAqLwogc3RhdGljIGRsaXN0X2hlYWQgcGN4dF9saXN0ID0gRExJU1RfU1RBVElD X0lOSVQocGN4dF9saXN0KTsKIAotLyogQmFja2VuZC1sb2NhbCBjb3B5IG9mIGRhdGEgZnJv bSBGaXhlZFBhcmFsbGVsU3RhdGUuICovCi1zdGF0aWMgcGlkX3QgUGFyYWxsZWxMZWFkZXJQ aWQ7Ci0KIC8qCiAgKiBMaXN0IG9mIGludGVybmFsIHBhcmFsbGVsIHdvcmtlciBlbnRyeSBw b2ludHMuICBXZSBuZWVkIHRoaXMgZm9yCiAgKiByZWFzb25zIGV4cGxhaW5lZCBpbiBMb29r dXBQYXJhbGxlbFdvcmtlckZ1bmN0aW9uKCksIGJlbG93LgpAQCAtMjQyLDggKzIzNiwxMCBA QCBJbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCSAqIGxh dW5jaCBhbnkgd29ya2Vyczogd2Ugd291bGQgZmFpbCB0byBwcm9jZXNzIGludGVycnVwdHMg c2VudCBieSB0aGVtLgogCSAqIFdlIGNhbiBkZWFsIHdpdGggdGhhdCBlZGdlIGNhc2UgYnkg cHJldGVuZGluZyBubyB3b3JrZXJzIHdlcmUKIAkgKiByZXF1ZXN0ZWQuCisJICoKKwkgKiBY WFg6IGNvdWxkIHRoaXMgYmUgcmVsYXhlZCBub3cgdGhhdCB3ZSBoYXZlIGRpZmZlcmVudCBp bnRlcnJ1cHRzIGJpdHM/CiAJICovCi0JaWYgKCFJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNT RUQoKSkKKwlpZiAoIUlOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRChJTlRFUlJVUFRfQ0ZJ X0FMTF9NQVNLKSkKIAkJcGN4dC0+bndvcmtlcnMgPSAwOwogCiAJLyoKQEAgLTc1OSwxNiAr NzU1LDIwIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRl eHQgKnBjeHQpCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBXb3JrZXIgbm90IHlldCBzdGFydGVk LCBzbyB3ZSBtdXN0IHdhaXQuICBUaGUgcG9zdG1hc3RlcgotCQkJCSAqIHdpbGwgbm90aWZ5 IHVzIGlmIHRoZSB3b3JrZXIncyBzdGF0ZSBjaGFuZ2VzLiAgVGhlCi0JCQkJICogaW50ZXJy dXB0IG1pZ2h0IGFsc28gZ2V0IHNldCBmb3Igc29tZSBvdGhlciByZWFzb24sIGJ1dCBpZgot CQkJCSAqIHNvIHdlJ2xsIGp1c3QgZW5kIHVwIHdhaXRpbmcgZm9yIHRoZSBzYW1lIHdvcmtl ciBhZ2Fpbi4KKwkJCQkgKiB3aWxsIG5vdGlmeSB1cyB3aXRoIElOVEVSUlVQVF9HRU5FUkFM IGlmIHRoZSB3b3JrZXIncyBzdGF0ZQorCQkJCSAqIGNoYW5nZXMuICBUaGUgaW50ZXJydXB0 IG1pZ2h0IGFsc28gZ2V0IHNldCBmb3Igc29tZSBvdGhlcgorCQkJCSAqIHJlYXNvbiwgYnV0 IGlmIHNvIHdlJ2xsIGp1c3QgZW5kIHVwIHdhaXRpbmcgZm9yIHRoZSBzYW1lCisJCQkJICog d29ya2VyIGFnYWluLgogCQkJCSAqLwotCQkJCXJjID0gV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwKKwkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNL KCkgfCBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkJICAgLTEsIFdBSVRfRVZFTlRfQkdXT1JLRVJf U1RBUlRVUCk7CiAKIAkJCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCisJCQkJeworCQkJCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7CisJCQkJfQogCQkJfQogCQl9CiAKQEAgLTg4Myw3ICs4ODMsNyBAQCBXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9GaW5pc2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJ fQogCQl9CiAKLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpIHwgSU5URVJSVVBU X0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IC0xLAogCQkJCQkJCSBXQUlUX0VWRU5UX1BBUkFMTEVMX0ZJTklTSCk7CiAJCUNsZWFySW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKQEAgLTEwMjcsMjEgKzEwMjcsNiBAQCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCkKIAlyZXR1cm4gIWRsaXN0X2lzX2VtcHR5KCZwY3h0 X2xpc3QpOwogfQogCi0vKgotICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGlu ZGljYXRpbmcgYSBwYXJhbGxlbCB3b3JrZXIgbWVzc2FnZS4KLSAqCi0gKiBOb3RlOiB0aGlz IGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgIEFsbCB3ZSBjYW4gZG8gaXMg c2V0Ci0gKiBhIGZsYWcgdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRF UlJVUFRTKCkgdG8gaW52b2tlCi0gKiBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcygpLgotICov Ci12b2lkCi1IYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKLXsKLQlJbnRl cnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsK LQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci19Ci0KIC8qCiAgKiBQcm9j ZXNzIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxl bCB3b3JrZXJzLgogICovCkBAIC0xMDc3LDcgKzEwNjIsNyBAQCBQcm9jZXNzUGFyYWxsZWxN ZXNzYWdlcyh2b2lkKQogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaHBt X2NvbnRleHQpOwogCiAJLyogT0sgdG8gcHJvY2VzcyBtZXNzYWdlcy4gIFJlc2V0IHRoZSBm bGFnIHNheWluZyB0aGVyZSBhcmUgbW9yZSB0byBkby4gKi8KLQlQYXJhbGxlbE1lc3NhZ2VQ ZW5kaW5nID0gZmFsc2U7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1BBUkFMTEVMX01F U1NBR0UpOwogCiAJZGxpc3RfZm9yZWFjaChpdGVyLCAmcGN4dF9saXN0KQogCXsKQEAgLTEz NTgsNyArMTM0Myw2IEBAIFBhcmFsbGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlN eUZpeGVkUGFyYWxsZWxTdGF0ZSA9IGZwczsKIAogCS8qIEFycmFuZ2UgdG8gc2lnbmFsIHRo ZSBsZWFkZXIgaWYgd2UgZXhpdC4gKi8KLQlQYXJhbGxlbExlYWRlclBpZCA9IGZwcy0+cGFy YWxsZWxfbGVhZGVyX3BpZDsKIAlQYXJhbGxlbExlYWRlclByb2NOdW1iZXIgPSBmcHMtPnBh cmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcjsKIAliZWZvcmVfc2htZW1fZXhpdChQYXJhbGxl bFdvcmtlclNodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CiAKQEAgLTEzNzQsOCAr MTM1OCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fbXFf c2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKIAltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOwogCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIG1xaCk7Ci0JcHFfc2V0X3Bh cmFsbGVsX2xlYWRlcihmcHMtPnBhcmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBmcHMt PnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRl cihmcHMtPnBhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CiAKIAkvKgogCSAqIEhvb3Jh eSEgUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gIE5vdywgd2UgbmVlZCB0 byBzZXQgdXAgb3VyCkBAIC0xNjE0LDkgKzE1OTcsOCBAQCBQYXJhbGxlbFdvcmtlclJlcG9y dExhc3RSZWNFbmQoWExvZ1JlY1B0ciBsYXN0X3hsb2dfZW5kKQogc3RhdGljIHZvaWQKIFBh cmFsbGVsV29ya2VyU2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlTZW5kUHJv Y1NpZ25hbChQYXJhbGxlbExlYWRlclBpZCwKLQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01F U1NBR0UsCi0JCQkJICAgUGFyYWxsZWxMZWFkZXJQcm9jTnVtYmVyKTsKKwlTZW5kSW50ZXJy dXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFLAorCQkJCSAgUGFyYWxsZWxMZWFkZXJQ cm9jTnVtYmVyKTsKIAogCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9p bnRlcihhcmcpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA5NDA1 NTRkZWYxYS4uZGYwZGM2MTc3MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK QEAgLTkzODIsMTEgKzkzODIsMTAgQEAgZG9fcGdfYmFja3VwX3N0b3AoQmFja3VwU3RhdGUg KnN0YXRlLCBib29sIHdhaXRmb3JhcmNoaXZlKQogCQkJCXJlcG9ydGVkX3dhaXRpbmcgPSB0 cnVlOwogCQkJfQogCi0JCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCwKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpLAogCQkJ CQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CiAJCQkJCQkJCSAxMDAwTCwKIAkJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS1VQX1dBSVRfV0FM X0FSQ0hJVkUpOwotCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJ CQlpZiAoKyt3YWl0cyA+PSBzZWNvbmRzX2JlZm9yZV93YXJuaW5nKQogCQkJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2Z1bmNzLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYwppbmRleCA4ZjQzY2U2MjkwOS4uOTE3 MDBjYTRiNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBA IC03MDgsNiArNzA4LDggQEAgcGdfcHJvbW90ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCSBl cnJtc2coImZhaWxlZCB0byBzZW5kIHNpZ25hbCB0byBwb3N0bWFzdGVyOiAlbSIpKSk7CiAJ fQogCisJLyogWFhYOiB3ZSBjb3VsZCBpbnRlcnJ1cHQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBk aXJlY3RseSAqLworCiAJLyogcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHdhaXRpbmcgd2FzIG5v dCByZXF1ZXN0ZWQgKi8KIAlpZiAoIXdhaXQpCiAJCVBHX1JFVFVSTl9CT09MKHRydWUpOwpA QCAtNzE4LDE0ICs3MjAsMTIgQEAgcGdfcHJvbW90ZShQR19GVU5DVElPTl9BUkdTKQogCXsK IAkJaW50CQkJcmM7CiAKLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwot CiAJCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCQlQR19SRVRVUk5fQk9PTCh0cnVl KTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCXJjID0gV2FpdEludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9D RklfTUFTSygpLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX1BP U1RNQVNURVJfREVBVEgsCiAJCQkJCQkgICAxMDAwTCAvIFdBSVRTX1BFUl9TRUNPTkQsCiAJ CQkJCQkgICBXQUlUX0VWRU5UX1BST01PVEUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBjMjQ0ZjZjNWVjMC4uNDgzNzczOWE4NjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC0zMDA0 LDE4ICszMDA0LDEyIEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAogCXdoaWxlICh0cnVlKQogCXsKLQkJLyoKLQkJICogSU5URVJSVVBUX0dFTkVS QUwgaXMgdXNlZCBmb3IgYWxsIHRoZSB1c3VhbCBpbnRlcnJ1cHRzLCBsaWtlIGNvbmZpZwot CQkgKiByZWxvYWRzLiAgVGhlIHdha2V1cHMgd2hlbiBtb3JlIFdBTCBhcnJpdmUgdXNlIGEg ZGlmZmVyZW50Ci0JCSAqIGludGVycnVwdCBudW1iZXIgKElOVEVSUlVQVF9SRUNPVkVSWV9D T05USU5VRSkgc28gdGhhdCBtb3JlIFdBTAotCQkgKiBhcnJpdmluZyBkb24ndCB3YWtlIHVw IHRoZSBzdGFydHVwIHByb2Nlc3MgZXhjZXNzaXZlbHkgd2hlbiB3ZSdyZQotCQkgKiB3YWl0 aW5nIGluIG90aGVyIHBsYWNlcywgbGlrZSBmb3IgcmVjb3ZlcnkgY29uZmxpY3RzLgotCQkg Ki8KLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwotCiAJCS8qIFRoaXMg bWlnaHQgY2hhbmdlIHJlY292ZXJ5X21pbl9hcHBseV9kZWxheS4gKi8KIAkJUHJvY2Vzc1N0 YXJ0dXBQcm9jSW50ZXJydXB0cygpOwogCisJCS8qCisJCSAqIElOVEVSUlVQVF9SRUNPVkVS WV9DT05USU5VRSBpbmRpY2F0ZXMgdGhhdCBtb3JlIFdBTCBoYXMgYXJyaXZlZC4KKwkJICov CiAJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSk7CiAJCWlm IChDaGVja0ZvclN0YW5kYnlUcmlnZ2VyKCkpCiAJCQlicmVhazsKQEAgLTMwMzcsOCArMzAz MSw4IEBAIHJlY292ZXJ5QXBwbHlEZWxheShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQllbG9nKERFQlVHMiwgInJlY292ZXJ5IGFwcGx5IGRlbGF5ICVsZCBtaWxsaXNlY29uZHMi LCBtc2Vjcyk7CiAKLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZ X0NPTlRJTlVFIHwKLQkJCQkJCQkgSU5URVJSVVBUX0dFTkVSQUwsCisJCSh2b2lkKSBXYWl0 SW50ZXJydXB0KElOVEVSUlVQVF9TVEFSVFVQX1BST0NfTUFTSyB8CisJCQkJCQkJIElOVEVS UlVQVF9SRUNPVkVSWV9DT05USU5VRSwKIAkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJIG1zZWNzLAogCQkJCQkJCSBX QUlUX0VWRU5UX1JFQ09WRVJZX0FQUExZX0RFTEFZKTsKQEAgLTM2OTYsMTggKzM2OTAsMTgg QEAgV2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29s IHJhbmRBY2Nlc3MsCiAJCQkJCQkvKiBEbyBiYWNrZ3JvdW5kIHRhc2tzIHRoYXQgbWlnaHQg YmVuZWZpdCB1cyBsYXRlci4gKi8KIAkJCQkJCUtub3duQXNzaWduZWRUcmFuc2FjdGlvbklk c0lkbGVNYWludGVuYW5jZSgpOwogCi0JCQkJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRF UlJVUFRfUkVDT1ZFUllfQ09OVElOVUUgfAotCQkJCQkJCQkJCQkgSU5URVJSVVBUX0dFTkVS QUwsCisJCQkJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfU1RBUlRVUF9QUk9D X01BU0sgfAorCQkJCQkJCQkJCQkgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFLAogCQkJ CQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8CiAJCQkJCQkJCQkJCSBXTF9F WElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkJCQkgd2FpdF90aW1lLAogCQkJCQkJCQkJCQkg V0FJVF9FVkVOVF9SRUNPVkVSWV9SRVRSSUVWRV9SRVRSWV9JTlRFUlZBTCk7Ci0JCQkJCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09OVElOVUUpOwogCQkJCQkJbm93 ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCi0JCQkJCQkvKiBIYW5kbGUgaW50ZXJydXB0 IHNpZ25hbHMgb2Ygc3RhcnR1cCBwcm9jZXNzICovCi0JCQkJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CisJCQkJCQkvKiBIYW5kbGUgc3RhbmRhcmQgaW50ZXJydXB0 cyBvZiBzdGFydHVwIHByb2Nlc3MgKi8KIAkJCQkJCVByb2Nlc3NTdGFydHVwUHJvY0ludGVy cnVwdHMoKTsKKworCQkJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NP TlRJTlVFKTsKIAkJCQkJfQogCQkJCQlsYXN0X2ZhaWxfdGltZSA9IG5vdzsKIAkJCQkJY3Vy cmVudFNvdXJjZSA9IFhMT0dfRlJPTV9BUkNISVZFOwpAQCAtMzk3Myw4ICszOTY3LDggQEAg V2FpdEZvcldBTFRvQmVjb21lQXZhaWxhYmxlKFhMb2dSZWNQdHIgUmVjUHRyLCBib29sIHJh bmRBY2Nlc3MsCiAJCQkJCSAqIFdhaXQgZm9yIG1vcmUgV0FMIHRvIGFycml2ZSwgd2hlbiB3 ZSB3aWxsIGJlIHdva2VuCiAJCQkJCSAqIGltbWVkaWF0ZWx5IGJ5IHRoZSBXQUwgcmVjZWl2 ZXIuCiAJCQkJCSAqLwotCQkJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfUkVD T1ZFUllfQ09OVElOVUUgfAotCQkJCQkJCQkJCSBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ KHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NUQVJUVVBfUFJPQ19NQVNLIHwKKwkJ CQkJCQkJCQkgSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFLAogCQkJCQkJCQkJCSBXTF9J TlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkJCSAtMUwsCiAJCQkJ CQkJCQkJIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSk7CkBAIC0zOTk4LDcgKzM5 OTIsNiBAQCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIs IGJvb2wgcmFuZEFjY2VzcywKIAkJICogVGhpcyBwb3NzaWJseS1sb25nIGxvb3AgbmVlZHMg dG8gaGFuZGxlIGludGVycnVwdHMgb2Ygc3RhcnR1cAogCQkgKiBwcm9jZXNzLgogCQkgKi8K LQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQlQcm9jZXNzU3RhcnR1 cFByb2NJbnRlcnJ1cHRzKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9iYWNr dXAvYmFzZWJhY2t1cF90aHJvdHRsZS5jIGIvc3JjL2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNr dXBfdGhyb3R0bGUuYwppbmRleCA4NjEwNDNjNmI0YS4uMDJjZTY1ZGEzYjYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3VwX3Rocm90dGxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvYmFja3VwL2Jhc2ViYWNrdXBfdGhyb3R0bGUuYwpAQCAtMTU1LDYgKzE1NSw4 IEBAIHRocm90dGxlKGJic2lua190aHJvdHRsZSAqc2luaywgc2l6ZV90IGluY3JlbWVudCkK IAkJCQkJc2xlZXA7CiAJCWludAkJCXdhaXRfcmVzdWx0OwogCisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKIAkJLyogVGltZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IG1lYXN1cmVt ZW50IChhbmQgcG9zc2libGUgd2FrZSB1cCkuICovCiAJCWVsYXBzZWQgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCkgLSBzaW5rLT50aHJvdHRsZWRfbGFzdDsKIApAQCAtMTYzLDIzICsxNjUs MTUgQEAgdGhyb3R0bGUoYmJzaW5rX3Rocm90dGxlICpzaW5rLCBzaXplX3QgaW5jcmVtZW50 KQogCQlpZiAoc2xlZXAgPD0gMCkKIAkJCWJyZWFrOwogCi0JCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKLQotCQkvKiBXZSdyZSBlYXRpbmcgYSB3YWtldXAsIHNvIGNo ZWNrIGZvciBpbnRlcnJ1cHRzICovCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0KIAkJ LyoKIAkJICogKFRBUl9TRU5EX1NJWkUgLyB0aHJvdHRsaW5nX3NhbXBsZSAqIGVsYXBzZWRf bWluX3VuaXQpIHNob3VsZCBiZQogCQkgKiB0aGUgbWF4aW11bSB0aW1lIHRvIHNsZWVwLiBU aHVzIHRoZSBjYXN0IHRvIGxvbmcgaXMgc2FmZS4KIAkJICovCi0JCXdhaXRfcmVzdWx0ID0g V2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJd2FpdF9yZXN1bHQgPSBXYWl0 SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpLAogCQkJCQkJCQkJV0xfSU5URVJSVVBU IHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJCQkobG9uZykg KHNsZWVwIC8gMTAwMCksCiAJCQkJCQkJCQlXQUlUX0VWRU5UX0JBU0VfQkFDS1VQX1RIUk9U VExFKTsKIAotCQlpZiAod2FpdF9yZXN1bHQgJiBXTF9JTlRFUlJVUFQpCi0JCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwotCiAJCS8qIERvbmUgd2FpdGluZz8gKi8KIAkJaWYgKHdhaXRf cmVzdWx0ICYgV0xfVElNRU9VVCkKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5k ZXggMmI1YjkyYWJlMzguLmRmNGZlZWU0MWEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAg LTM5LDcgKzM5LDcgQEAKICAqCSAgaXMgbm8gbmVlZCBmb3IgV0FMIHN1cHBvcnQgb3IgZnN5 bmMnaW5nLgogICoKICAqIDMuIEV2ZXJ5IGJhY2tlbmQgdGhhdCBpcyBsaXN0ZW5pbmcgb24g YXQgbGVhc3Qgb25lIGNoYW5uZWwgcmVnaXN0ZXJzIGJ5Ci0gKgkgIGVudGVyaW5nIGl0cyBQ SUQgaW50byB0aGUgYXJyYXkgaW4gQXN5bmNRdWV1ZUNvbnRyb2wuIEl0IHRoZW4gc2NhbnMg YWxsCisgKgkgIGVudGVyaW5nIGl0c2VsZiBpbnRvIHRoZSBhcnJheSBpbiBBc3luY1F1ZXVl Q29udHJvbC4gSXQgdGhlbiBzY2FucyBhbGwKICAqCSAgaW5jb21pbmcgbm90aWZpY2F0aW9u cyBpbiB0aGUgY2VudHJhbCBxdWV1ZSBhbmQgZmlyc3QgY29tcGFyZXMgdGhlCiAgKgkgIGRh dGFiYXNlIE9JRCBvZiB0aGUgbm90aWZpY2F0aW9uIHdpdGggaXRzIG93biBkYXRhYmFzZSBP SUQgYW5kIHRoZW4KICAqCSAgY29tcGFyZXMgdGhlIG5vdGlmaWVkIGNoYW5uZWwgd2l0aCB0 aGUgbGlzdCBvZiBjaGFubmVscyB0aGF0IGl0IGxpc3RlbnMKQEAgLTcyLDcgKzcyLDcgQEAK ICAqCSAgVGhlbiB3ZSBzaWduYWwgYW55IGJhY2tlbmRzIHRoYXQgbWF5IGJlIGludGVyZXN0 ZWQgaW4gb3VyIG1lc3NhZ2VzCiAgKgkgIChpbmNsdWRpbmcgb3VyIG93biBiYWNrZW5kLCBp ZiBsaXN0ZW5pbmcpLiAgVGhpcyBpcyBkb25lIGJ5CiAgKgkgIFNpZ25hbEJhY2tlbmRzKCks IHdoaWNoIHNjYW5zIHRoZSBsaXN0IG9mIGxpc3RlbmluZyBiYWNrZW5kcyBhbmQgc2VuZHMg YQotICoJICBQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQgc2lnbmFsIHRvIGV2ZXJ5IGxpc3Rl bmluZyBiYWNrZW5kICh3ZSBkb24ndAorICoJICBJTlRFUlJVUFRfQVNZTkNfTk9USUZZIGlu dGVycnVwdCB0byBldmVyeSBsaXN0ZW5pbmcgYmFja2VuZCAod2UgZG9uJ3QKICAqCSAga25v dyB3aGljaCBiYWNrZW5kIGlzIGxpc3RlbmluZyBvbiB3aGljaCBjaGFubmVsIHNvIHdlIG11 c3Qgc2lnbmFsIHRoZW0KICAqCSAgYWxsKS4gIFdlIGNhbiBleGNsdWRlIGJhY2tlbmRzIHRo YXQgYXJlIGFscmVhZHkgdXAgdG8gZGF0ZSwgdGhvdWdoLCBhbmQKICAqCSAgd2UgY2FuIGFs c28gZXhjbHVkZSBiYWNrZW5kcyB0aGF0IGFyZSBpbiBvdGhlciBkYXRhYmFzZXMgKHVubGVz cyB0aGV5CkBAIC05MCwxMyArOTAsMTEgQEAKICAqCSAgZnJvbnRlbmQgdW50aWwgdGhlIGNv bW1hbmQgaXMgZG9uZTsgYnV0IG5vdGlmaWVzIHRvIG90aGVyIGJhY2tlbmRzCiAgKgkgIHNo b3VsZCBnbyBvdXQgaW1tZWRpYXRlbHkgYWZ0ZXIgZWFjaCBjb21taXQuCiAgKgotICogNS4g VXBvbiByZWNlaXB0IG9mIGEgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBUIHNpZ25hbCwgdGhl IHNpZ25hbCBoYW5kbGVyCi0gKgkgIHJhaXNlcyBJTlRFUlJVUFRfR0VORVJBTCwgd2hpY2gg dHJpZ2dlcnMgdGhlIGV2ZW50IHRvIGJlIHByb2Nlc3NlZAotICoJICBpbW1lZGlhdGVseSBp ZiB0aGlzIGJhY2tlbmQgaXMgaWRsZSAoaS5lLiwgaXQgaXMgd2FpdGluZyBmb3IgYSBmcm9u dGVuZAorICogNS4gVGhlIElOVEVSUlVQVF9BU1lOQ19OT1RJRlkgaW50ZXJydXB0IGlzIHBy b2Nlc3NlZCBpbW1lZGlhdGVseSBpbiB0aGUKKyAqCSAgbGlzdGVuaW5nIGJhY2tlbmQgaWYg aXQgaXMgaWRsZSAoaS5lLiwgaXQgaXMgd2FpdGluZyBmb3IgYSBmcm9udGVuZAogICoJICBj b21tYW5kIGFuZCBpcyBub3Qgd2l0aGluIGEgdHJhbnNhY3Rpb24gYmxvY2suIEMuZi4KLSAq CSAgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSkuICBPdGhlcndpc2UgdGhlIGhhbmRs ZXIgbWF5IG9ubHkgc2V0IGEKLSAqCSAgZmxhZywgd2hpY2ggd2lsbCBjYXVzZSB0aGUgcHJv Y2Vzc2luZyB0byBvY2N1ciBqdXN0IGJlZm9yZSB3ZSBuZXh0IGdvCi0gKgkgIGlkbGUuCisg KgkgIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkpLiAgT3RoZXJ3aXNlIHRoZSBpbnRl cnJ1cHQgaXMgcHJvY2Vzc2VkCisgKgkgIGxhdGVyLCBqdXN0IGJlZm9yZSB3ZSBuZXh0IGdv IGlkbGUuCiAgKgogICoJICBJbmJvdW5kLW5vdGlmeSBwcm9jZXNzaW5nIGNvbnNpc3RzIG9m IHJlYWRpbmcgYWxsIG9mIHRoZSBub3RpZmljYXRpb25zCiAgKgkgIHRoYXQgaGF2ZSBhcnJp dmVkIHNpbmNlIHNjYW5uaW5nIGxhc3QgdGltZS4gV2UgcmVhZCBldmVyeSBub3RpZmljYXRp b24KQEAgLTEyNyw3ICsxMjUsNiBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVk ZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+CiAKICNpbmNsdWRlICJhY2Nlc3Mv cGFyYWxsZWwuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgpAQCAtMTQzLDcgKzE0MCw2 IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9y YWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgotI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgpAQCAt MjcxLDcgKzI2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXVlQmFja2VuZFN0YXR1cwogICog Tm90aWZ5UXVldWVUYWlsTG9jaywgdGhlbiBOb3RpZnlRdWV1ZUxvY2ssIGFuZCBsYXN0bHkg U0xSVSBiYW5rIGxvY2suCiAgKgogICogRWFjaCBiYWNrZW5kIHVzZXMgdGhlIGJhY2tlbmRb XSBhcnJheSBlbnRyeSB3aXRoIGluZGV4IGVxdWFsIHRvIGl0cwotICogUHJvY051bWJlci4g IFdlIHJlbHkgb24gdGhpcyB0byBtYWtlIFNlbmRQcm9jU2lnbmFsIGZhc3QuCisgKiBQcm9j TnVtYmVyLiAgV2UgcmVseSBvbiB0aGlzIGZvciBzZW5kaW5nIGludGVycnVwdHMuCiAgKgog ICogVGhlIGJhY2tlbmRbXSBhcnJheSBlbnRyaWVzIGZvciBhY3RpdmVseS1saXN0ZW5pbmcg YmFja2VuZHMgYXJlIHRocmVhZGVkCiAgKiB0b2dldGhlciB1c2luZyBmaXJzdExpc3RlbmVy IGFuZCB0aGUgbmV4dExpc3RlbmVyIGxpbmtzLCBzbyB0aGF0IHdlIGNhbgpAQCAtNDA0LDE1 ICs0MDAsNiBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uSGFzaAogCiBzdGF0aWMgTm90aWZpY2F0 aW9uTGlzdCAqcGVuZGluZ05vdGlmaWVzID0gTlVMTDsKIAotLyoKLSAqIEluYm91bmQgbm90 aWZpY2F0aW9ucyBhcmUgaW5pdGlhbGx5IHByb2Nlc3NlZCBieSBIYW5kbGVOb3RpZnlJbnRl cnJ1cHQoKSwKLSAqIGNhbGxlZCBmcm9tIGluc2lkZSBhIHNpZ25hbCBoYW5kbGVyLiBUaGF0 IGp1c3Qgc2V0cyB0aGUKLSAqIG5vdGlmeUludGVycnVwdFBlbmRpbmcgZmxhZyBhbmQgcmFp c2VzIHRoZSBJTlRFUlJVUFRfR0VORVJBTCBpbnRlcnJ1cHQuCi0gKiBQcm9jZXNzTm90aWZ5 SW50ZXJydXB0KCkgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aGVuZXZlciBpdCdzIHNhZmUgdG8g YWN0dWFsbHkKLSAqIGRlYWwgd2l0aCB0aGUgaW50ZXJydXB0LgotICovCi12b2xhdGlsZSBz aWdfYXRvbWljX3Qgbm90aWZ5SW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotCiAvKiBUcnVl IGlmIHdlJ3ZlIHJlZ2lzdGVyZWQgYW4gb25fc2htZW1fZXhpdCBjbGVhbnVwICovCiBzdGF0 aWMgYm9vbCB1bmxpc3RlbkV4aXRSZWdpc3RlcmVkID0gZmFsc2U7CiAKQEAgLTE1ODEsMjkg KzE1NjgsMjUgQEAgYXN5bmNRdWV1ZUZpbGxXYXJuaW5nKHZvaWQpCiBzdGF0aWMgdm9pZAog U2lnbmFsQmFja2VuZHModm9pZCkKIHsKLQlpbnQzMgkgICAqcGlkczsKIAlQcm9jTnVtYmVy ICpwcm9jbm9zOwogCWludAkJCWNvdW50OwogCiAJLyoKIAkgKiBJZGVudGlmeSBiYWNrZW5k cyB0aGF0IHdlIG5lZWQgdG8gc2lnbmFsLiAgV2UgZG9uJ3Qgd2FudCB0byBzZW5kCiAJICog c2lnbmFscyB3aGlsZSBob2xkaW5nIHRoZSBOb3RpZnlRdWV1ZUxvY2ssIHNvIHRoaXMgbG9v cCBqdXN0IGJ1aWxkcyBhCi0JICogbGlzdCBvZiB0YXJnZXQgUElEcy4KKwkgKiBsaXN0IG9m IHRhcmdldCBiYWNrZW5kcy4KIAkgKgogCSAqIFhYWCBpbiBwcmluY2lwbGUgdGhlc2UgcGFs bG9jcyBjb3VsZCBmYWlsLCB3aGljaCB3b3VsZCBiZSBiYWQuIE1heWJlCiAJICogcHJlYWxs b2NhdGUgdGhlIGFycmF5cz8gIFRoZXkncmUgbm90IHRoYXQgbGFyZ2UsIHRob3VnaC4KIAkg Ki8KLQlwaWRzID0gKGludDMyICopIHBhbGxvYyhNYXhCYWNrZW5kcyAqIHNpemVvZihpbnQz MikpOwogCXByb2Nub3MgPSAoUHJvY051bWJlciAqKSBwYWxsb2MoTWF4QmFja2VuZHMgKiBz aXplb2YoUHJvY051bWJlcikpOwogCWNvdW50ID0gMDsKIAogCUxXTG9ja0FjcXVpcmUoTm90 aWZ5UXVldWVMb2NrLCBMV19FWENMVVNJVkUpOwogCWZvciAoUHJvY051bWJlciBpID0gUVVF VUVfRklSU1RfTElTVEVORVI7IGkgIT0gSU5WQUxJRF9QUk9DX05VTUJFUjsgaSA9IFFVRVVF X05FWFRfTElTVEVORVIoaSkpCiAJewotCQlpbnQzMgkJcGlkID0gUVVFVUVfQkFDS0VORF9Q SUQoaSk7CiAJCVF1ZXVlUG9zaXRpb24gcG9zOwogCi0JCUFzc2VydChwaWQgIT0gSW52YWxp ZFBpZCk7CiAJCXBvcyA9IFFVRVVFX0JBQ0tFTkRfUE9TKGkpOwogCQlpZiAoUVVFVUVfQkFD S0VORF9EQk9JRChpKSA9PSBNeURhdGFiYXNlSWQpCiAJCXsKQEAgLTE2MjUsMzggKzE2MDgs MjcgQEAgU2lnbmFsQmFja2VuZHModm9pZCkKIAkJCQljb250aW51ZTsKIAkJfQogCQkvKiBP SywgbmVlZCB0byBzaWduYWwgdGhpcyBvbmUgKi8KLQkJcGlkc1tjb3VudF0gPSBwaWQ7CiAJ CXByb2Nub3NbY291bnRdID0gaTsKIAkJY291bnQrKzsKIAl9CiAJTFdMb2NrUmVsZWFzZShO b3RpZnlRdWV1ZUxvY2spOwogCi0JLyogTm93IHNlbmQgc2lnbmFscyAqLworCS8qIE5vdyBz ZW5kIHRoZSBpbnRlcnJ1cHRzICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr KQogCXsKLQkJaW50MzIJCXBpZCA9IHBpZHNbaV07CisJCVByb2NOdW1iZXIgcHJvY25vID0g cHJvY25vc1tpXTsKIAogCQkvKgotCQkgKiBJZiB3ZSBhcmUgc2lnbmFsaW5nIG91ciBvd24g cHJvY2Vzcywgbm8gbmVlZCB0byBpbnZvbHZlIHRoZSBrZXJuZWw7Ci0JCSAqIGp1c3Qgc2V0 IHRoZSBmbGFnIGRpcmVjdGx5LgorCQkgKiBOb3RlOiBpdCdzIHVubGlrZWx5IGJ1dCBjZXJ0 YWlubHkgcG9zc2libGUgdGhhdCB0aGUgYmFja2VuZCBleGl0ZWQKKwkJICogc2luY2Ugd2Ug cmVsZWFzZWQgTm90aWZ5UXVldWVMb2NrLiBXZSdsbCBzZW5kIHRoZSBpbnRlcnJ1cHQgdG8K KwkJICogd3JvbmcgYmFja2VuZCBpbiB0aGF0IGNhc2UsIGJ1dCB0aGF0J3MgaGFybWxlc3Mu CiAJCSAqLwotCQlpZiAocGlkID09IE15UHJvY1BpZCkKLQkJewotCQkJbm90aWZ5SW50ZXJy dXB0UGVuZGluZyA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIE5v dGU6IGFzc3VtaW5nIHRoaW5ncyBhcmVuJ3QgYnJva2VuLCBhIHNpZ25hbCBmYWlsdXJlIGhl cmUgY291bGQKLQkJICogb25seSBvY2N1ciBpZiB0aGUgdGFyZ2V0IGJhY2tlbmQgZXhpdGVk IHNpbmNlIHdlIHJlbGVhc2VkCi0JCSAqIE5vdGlmeVF1ZXVlTG9jazsgd2hpY2ggaXMgdW5s aWtlbHkgYnV0IGNlcnRhaW5seSBwb3NzaWJsZS4gU28gd2UKLQkJICoganVzdCBsb2cgYSBs b3ctbGV2ZWwgZGVidWcgbWVzc2FnZSBpZiBpdCBoYXBwZW5zLgotCQkgKi8KLQkJaWYgKFNl bmRQcm9jU2lnbmFsKHBpZCwgUFJPQ1NJR19OT1RJRllfSU5URVJSVVBULCBwcm9jbm9zW2ld KSA8IDApCi0JCQllbG9nKERFQlVHMywgImNvdWxkIG5vdCBzaWduYWwgYmFja2VuZCB3aXRo IFBJRCAlZDogJW0iLCBwaWQpOworCQlpZiAocHJvY25vID09IE15UHJvY051bWJlcikKKwkJ CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpOworCQllbHNlCisJCQlT ZW5kSW50ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19OT1RJRlksIHByb2Nubyk7CiAJfQogCi0J cGZyZWUocGlkcyk7CiAJcGZyZWUocHJvY25vcyk7CiB9CiAKQEAgLTE3OTMsMzkgKzE3NjUs MTIgQEAgQXRTdWJBYm9ydF9Ob3RpZnkodm9pZCkKIAl9CiB9CiAKLS8qCi0gKiBIYW5kbGVO b3RpZnlJbnRlcnJ1cHQKLSAqCi0gKgkJU2lnbmFsIGhhbmRsZXIgcG9ydGlvbiBvZiBpbnRl cnJ1cHQgaGFuZGxpbmcuIExldCB0aGUgYmFja2VuZCBrbm93Ci0gKgkJdGhhdCB0aGVyZSdz IGEgcGVuZGluZyBub3RpZnkgaW50ZXJydXB0LiBJZiB3ZSdyZSBjdXJyZW50bHkgcmVhZGlu ZwotICoJCWZyb20gdGhlIGNsaWVudCwgdGhpcyB3aWxsIGludGVycnVwdCB0aGUgcmVhZCBh bmQKLSAqCQlQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2FsbCBQcm9jZXNz Tm90aWZ5SW50ZXJydXB0KCkuCi0gKi8KLXZvaWQKLUhhbmRsZU5vdGlmeUludGVycnVwdCh2 b2lkKQotewotCS8qCi0JICogTm90ZTogdGhpcyBpcyBjYWxsZWQgYnkgYSBTSUdOQUwgSEFO RExFUi4gWW91IG11c3QgYmUgdmVyeSB3YXJ5IHdoYXQKLQkgKiB5b3UgZG8gaGVyZS4KLQkg Ki8KLQotCS8qIHNpZ25hbCB0aGF0IHdvcmsgbmVlZHMgdG8gYmUgZG9uZSAqLwotCW5vdGlm eUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbWFrZSBzdXJlIHRoZSBldmVudCBp cyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKLX0KLQogLyoKICAqIFByb2Nlc3NOb3RpZnlJbnRlcnJ1cHQKICAqCi0g KgkJVGhpcyBpcyBjYWxsZWQgaWYgd2Ugc2VlIG5vdGlmeUludGVycnVwdFBlbmRpbmcgc2V0 LCBqdXN0IGJlZm9yZQotICoJCXRyYW5zbWl0dGluZyBSZWFkeUZvclF1ZXJ5IGF0IHRoZSBl bmQgb2YgYSBmcm9udGVuZCBjb21tYW5kLCBhbmQKLSAqCQlhbHNvIGlmIGEgbm90aWZ5IHNp Z25hbCBvY2N1cnMgd2hpbGUgcmVhZGluZyBmcm9tIHRoZSBmcm9udGVuZC4KLSAqCQlIYW5k bGVOb3RpZnlJbnRlcnJ1cHQoKSB3aWxsIGNhdXNlIHRoZSByZWFkIHRvIGJlIGludGVycnVw dGVkIHdpdGgKLSAqCQlJTlRFUlJVUFRfR0VORVJBTCwgYW5kIHRoaXMgcm91dGluZSB3aWxs IGdldCBjYWxsZWQuICBJZiB3ZSBhcmUgdHJ1bHkKLSAqCQlpZGxlIChpZSwgKm5vdCogaW5z aWRlIGEgdHJhbnNhY3Rpb24gYmxvY2spLCBwcm9jZXNzIHRoZSBpbmNvbWluZwotICoJCW5v dGlmaWVzLgorICoJCVRoaXMgaXMgY2FsbGVkIGlmIHdlIHNlZSBJTlRFUlJVUFRfQVNZTkNf Tk9USUZZIHNldCwganVzdCBiZWZvcmUKKyAqCQl0cmFuc21pdHRpbmcgUmVhZHlGb3JRdWVy eSBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQgY29tbWFuZCwgYW5kIGFsc28KKyAqCQlpZiBh IG5vdGlmeSBzaWduYWwgb2NjdXJzIHdoaWxlIHJlYWRpbmcgZnJvbSB0aGUgZnJvbnRlbmQu CiAgKgogICoJCUlmICJmbHVzaCIgaXMgdHJ1ZSwgZm9yY2UgYW55IGZyb250ZW5kIG1lc3Nh Z2VzIG91dCBpbW1lZGlhdGVseS4KICAqCQlUaGlzIGNhbiBiZSBmYWxzZSB3aGVuIGJlaW5n IGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgZnJvbnRlbmQgY29tbWFuZCwKQEAgLTE4MzQsMTEg KzE3NzksMTAgQEAgSGFuZGxlTm90aWZ5SW50ZXJydXB0KHZvaWQpCiB2b2lkCiBQcm9jZXNz Tm90aWZ5SW50ZXJydXB0KGJvb2wgZmx1c2gpCiB7Ci0JaWYgKElzVHJhbnNhY3Rpb25PclRy YW5zYWN0aW9uQmxvY2soKSkKLQkJcmV0dXJuOwkJCQkJLyogbm90IHJlYWxseSBpZGxlICov CisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpOwogCiAJLyog TG9vcCBpbiBjYXNlIGFub3RoZXIgc2lnbmFsIGFycml2ZXMgd2hpbGUgc2VuZGluZyBtZXNz YWdlcyAqLwotCXdoaWxlIChub3RpZnlJbnRlcnJ1cHRQZW5kaW5nKQorCXdoaWxlIChDb25z dW1lSW50ZXJydXB0KElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpKQogCQlQcm9jZXNzSW5jb21p bmdOb3RpZnkoZmx1c2gpOwogfQogCkBAIC0yMTgzLDkgKzIxMjcsNiBAQCBhc3luY1F1ZXVl QWR2YW5jZVRhaWwodm9pZCkKIHN0YXRpYyB2b2lkCiBQcm9jZXNzSW5jb21pbmdOb3RpZnko Ym9vbCBmbHVzaCkKIHsKLQkvKiBXZSAqbXVzdCogcmVzZXQgdGhlIGZsYWcgKi8KLQlub3Rp ZnlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci0KIAkvKiBEbyBub3RoaW5nIGVsc2UgaWYg d2UgYXJlbid0IGFjdGl2ZWx5IGxpc3RlbmluZyAqLwogCWlmIChsaXN0ZW5DaGFubmVscyA9 PSBOSUwpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ri Y29tbWFuZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCAx NzUzYjI4OTA3NC4uZDE1NTc1NDJiNzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2RiY29tbWFuZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRz LmMKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL21kLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3Iu aCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5o IgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jCmluZGV4IGE5MDA1Y2M3MjEyLi44MGI2 YzcyMWJhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3BhY2UuYwpAQCAtNzAsNiArNzAs NyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3 cml0ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAic3RvcmFnZS9w cm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAi dXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtLmMKaW5kZXggNjViODk3NDc2Y2UuLjZlZmNkMjQ3ZmU1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYwpAQCAtMjM5Nyw4ICsyMzk3LDcgQEAgdmFjdXVtX2RlbGF5X3BvaW50KGJv b2wgaXNfYW5hbHl6ZSkKIAkvKiBBbHdheXMgY2hlY2sgZm9yIGludGVycnVwdHMgKi8KIAlD SEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JaWYgKEludGVycnVwdFBlbmRpbmcgfHwKLQkJ KCFWYWN1dW1Db3N0QWN0aXZlICYmICFDb25maWdSZWxvYWRQZW5kaW5nKSkKKwlpZiAoIVZh Y3V1bUNvc3RBY3RpdmUgJiYgIUlzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQ09ORklH X1JFTE9BRCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC0yNDA3LDkgKzI0MDYsOSBAQCB2YWN1 dW1fZGVsYXlfcG9pbnQoYm9vbCBpc19hbmFseXplKQogCSAqIFthdXRvdmFjdXVtX112YWN1 dW1fY29zdF9kZWxheSB0byB0YWtlIGVmZmVjdCB3aGlsZSBhIHRhYmxlIGlzIGJlaW5nCiAJ ICogdmFjdXVtZWQgb3IgYW5hbHl6ZWQuCiAJICovCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRp bmcgJiYgQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpKQorCWlmIChJc0ludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpICYmIEFtQXV0b1ZhY3V1bVdvcmtlclBy b2Nlc3MoKSkKIAl7Ci0JCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOwogCQlQcm9jZXNzQ29uZmlnRmls ZShQR0NfU0lHSFVQKTsKIAkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKIAl9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjQXN5bmMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNBc3luYy5jCmluZGV4IDVkM2NhYmU3M2UzLi5hOWJlNjI4NWNiYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0FzeW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0FzeW5jLmMKQEAgLTU2LDcgKzU2LDcgQEAgRXhlY0FzeW5jUmVx dWVzdChBc3luY1JlcXVlc3QgKmFyZXEpCiAgKiBmb3Igd2hpY2ggaXQgd2lzaGVzIHRvIHdh aXQuICBXZSBleHBlY3QgdGhlIG5vZGUtdHlwZSBzcGVjaWZpYyBjYWxsYmFjayB0bwogICog bWFrZSBhIHNpbmdsZSBjYWxsIG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKICAqCi0gKiBBZGRX YWl0RXZlbnRUb1NldChzZXQsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgZmQsIE5VTEwsIGFyZXEp OworICogQWRkV2FpdEV2ZW50VG9TZXQoc2V0LCBXTF9TT0NLRVRfUkVBREFCTEUsIGZkLCAw LCBhcmVxKTsKICAqLwogdm9pZAogRXhlY0FzeW5jQ29uZmlndXJlV2FpdChBc3luY1JlcXVl c3QgKmFyZXEpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggMTFlNWIzZjA4 M2IuLjk3MDIyNjBiZjQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl R2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC0z ODMsNyArMzgzLDcgQEAgZ2F0aGVyX3JlYWRuZXh0KEdhdGhlclN0YXRlICpnYXRoZXJzdGF0 ZSkKIAkJCQlyZXR1cm4gTlVMTDsKIAogCQkJLyogTm90aGluZyB0byBkbyBleGNlcHQgd2Fp dCBmb3IgZGV2ZWxvcG1lbnRzLiAqLwotCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwsCisJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01B U0soKSB8IElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKIAkJCQkJCQkJIFdBSVRfRVZFTlRfRVhFQ1VURV9HQVRI RVIpOwogCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMgYi9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUuYwppbmRleCA3NjVjYTBmMzE2Ni4uMjA1NzI5ZjQwOGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS5jCkBAIC0xNzksMTAgKzE3OSwxMSBAQCBzc2l6ZV90CiBzZWN1cmVfcmVh ZChQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCiB7CiAJc3NpemVfdAkJbjsK Kwl1aW50MzIJCWludGVycnVwdE1hc2s7CiAJaW50CQkJd2FpdGZvcjsKIAogCS8qIERlYWwg d2l0aCBhbnkgYWxyZWFkeS1wZW5kaW5nIGludGVycnVwdCBjb25kaXRpb24uICovCi0JUHJv Y2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoZmFsc2UpOworCWludGVycnVwdE1hc2sgPSBQcm9j ZXNzQ2xpZW50UmVhZEludGVycnVwdChmYWxzZSk7CiAKIHJldHJ5OgogI2lmZGVmIFVTRV9T U0wKQEAgLTIxNCw2ICsyMTUsNyBAQCByZXRyeToKIAkJQXNzZXJ0KHdhaXRmb3IpOwogCiAJ CU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHdh aXRmb3IsIDApOworCQlNb2RpZnlXYWl0RXZlbnQoRmVCZVdhaXRTZXQsIEZlQmVXYWl0U2V0 SW50ZXJydXB0UG9zLCBXTF9JTlRFUlJVUFQsIGludGVycnVwdE1hc2spOwogCiAJCVdhaXRF dmVudFNldFdhaXQoRmVCZVdhaXRTZXQsIC0xIC8qIG5vIHRpbWVvdXQgKi8gLCAmZXZlbnQs IDEsCiAJCQkJCQkgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CkBAIC0yNDMsOCArMjQ1LDcg QEAgcmV0cnk6CiAJCS8qIEhhbmRsZSBpbnRlcnJ1cHQuICovCiAJCWlmIChldmVudC5ldmVu dHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKLQkJCVByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KHRydWUpOworCQkJaW50 ZXJydXB0TWFzayA9IFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KHRydWUpOwogCiAJCQkv KgogCQkJICogV2UnbGwgcmV0cnkgdGhlIHJlYWQuIE1vc3QgbGlrZWx5IGl0IHdpbGwgcmV0 dXJuIGltbWVkaWF0ZWx5CkBAIC0yNTksNyArMjYwLDcgQEAgcmV0cnk6CiAJICogUHJvY2Vz cyBpbnRlcnJ1cHRzIHRoYXQgaGFwcGVuZWQgZHVyaW5nIGEgc3VjY2Vzc2Z1bCAob3Igbm9u LWJsb2NraW5nLAogCSAqIG9yIGhhcmQtZmFpbGVkKSByZWFkLgogCSAqLwotCVByb2Nlc3ND bGllbnRSZWFkSW50ZXJydXB0KGZhbHNlKTsKKwkodm9pZCkgUHJvY2Vzc0NsaWVudFJlYWRJ bnRlcnJ1cHQoZmFsc2UpOwogCiAJcmV0dXJuIG47CiB9CkBAIC0zMDYsMTAgKzMwNywxMSBA QCBzc2l6ZV90CiBzZWN1cmVfd3JpdGUoUG9ydCAqcG9ydCwgY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKQogewogCXNzaXplX3QJCW47CisJdWludDMyCQlpbnRlcnJ1cHRNYXNrOwog CWludAkJCXdhaXRmb3I7CiAKIAkvKiBEZWFsIHdpdGggYW55IGFscmVhZHktcGVuZGluZyBp bnRlcnJ1cHQgY29uZGl0aW9uLiAqLwotCVByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdChm YWxzZSk7CisJaW50ZXJydXB0TWFzayA9IFByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdChm YWxzZSk7CiAKIHJldHJ5OgogCXdhaXRmb3IgPSAwOwpAQCAtMzQwLDYgKzM0Miw3IEBAIHJl dHJ5OgogCQlBc3NlcnQod2FpdGZvcik7CiAKIAkJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0 U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgd2FpdGZvciwgMCk7CisJCU1vZGlmeVdhaXRF dmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVSUlVQ VCwgaW50ZXJydXB0TWFzayk7CiAKIAkJV2FpdEV2ZW50U2V0V2FpdChGZUJlV2FpdFNldCwg LTEgLyogbm8gdGltZW91dCAqLyAsICZldmVudCwgMSwKIAkJCQkJCSBXQUlUX0VWRU5UX0NM SUVOVF9XUklURSk7CkBAIC0zNTMsOCArMzU2LDcgQEAgcmV0cnk6CiAJCS8qIEhhbmRsZSBp bnRlcnJ1cHQuICovCiAJCWlmIChldmVudC5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCiAJCXsK LQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQkJCVByb2Nlc3NDbGll bnRXcml0ZUludGVycnVwdCh0cnVlKTsKKwkJCWludGVycnVwdE1hc2sgPSBQcm9jZXNzQ2xp ZW50V3JpdGVJbnRlcnJ1cHQodHJ1ZSk7CiAKIAkJCS8qCiAJCQkgKiBXZSdsbCByZXRyeSB0 aGUgd3JpdGUuIE1vc3QgbGlrZWx5IGl0IHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5CkBAIC0z NjksNyArMzcxLDcgQEAgcmV0cnk6CiAJICogUHJvY2VzcyBpbnRlcnJ1cHRzIHRoYXQgaGFw cGVuZWQgZHVyaW5nIGEgc3VjY2Vzc2Z1bCAob3Igbm9uLWJsb2NraW5nLAogCSAqIG9yIGhh cmQtZmFpbGVkKSB3cml0ZS4KIAkgKi8KLQlQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQo ZmFsc2UpOworCSh2b2lkKSBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoZmFsc2UpOwog CiAJcmV0dXJuIG47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcWNvbW0u YyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxY29tbS5jCmluZGV4IGY4NDY1Y2IyZDdiLi43N2Zk MjI4MDg5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKKysrIGIv c3JjL2JhY2tlbmQvbGlicHEvcHFjb21tLmMKQEAgLTMwNSwxMSArMzA1LDE1IEBAIHBxX2lu aXQoQ2xpZW50U29ja2V0ICpjbGllbnRfc29jaykKIAkJZWxvZyhGQVRBTCwgImZjbnRsKEZf U0VURkQpIGZhaWxlZCBvbiBzb2NrZXQ6ICVtIik7CiAjZW5kaWYKIAorCS8qCisJICogQWRk IGluaXRpYWwgZXZlbnRzIHRvIHRoZSBzZXQuIFRoZXNlIGFyZSBtb2RpZmllZCB3aXRoIHRo ZSBjb3JyZWN0CisJICogZXZlbnQgYW5kIGludGVycnVwdCBtYXNrcyBvbiBlYWNoIHVzZS4K KwkgKi8KIAlGZUJlV2FpdFNldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLCBGZUJlV2Fp dFNldE5FdmVudHMpOwogCXNvY2tldF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldChGZUJlV2Fp dFNldCwgV0xfU09DS0VUX1dSSVRFQUJMRSwKIAkJCQkJCQkJICAgcG9ydC0+c29jaywgMCwg TlVMTCk7CiAJaW50ZXJydXB0X3BvcyA9IEFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0 LCBXTF9JTlRFUlJVUFQsIFBHSU5WQUxJRF9TT0NLRVQsCi0JCQkJCQkJCQkgIElOVEVSUlVQ VF9HRU5FUkFMLCBOVUxMKTsKKwkJCQkJCQkJCSAgSU5URVJSVVBUX0NGSV9NQVNLKCksIE5V TEwpOwogCUFkZFdhaXRFdmVudFRvU2V0KEZlQmVXYWl0U2V0LCBXTF9QT1NUTUFTVEVSX0RF QVRILCBQR0lOVkFMSURfU09DS0VULAogCQkJCQkgIDAsIE5VTEwpOwogCkBAIC0xNDEzLDgg KzE0MTcsNyBAQCBpbnRlcm5hbF9mbHVzaF9idWZmZXIoY29uc3QgY2hhciAqYnVmLCBzaXpl X3QgKnN0YXJ0LCBzaXplX3QgKmVuZCkKIAkJCSAqIHRoZSBjb25uZWN0aW9uLgogCQkJICov CiAJCQkqc3RhcnQgPSAqZW5kID0gMDsKLQkJCUNsaWVudENvbm5lY3Rpb25Mb3N0ID0gMTsK LQkJCUludGVycnVwdFBlbmRpbmcgPSAxOworCQkJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpOwogCQkJcmV0dXJuIEVPRjsKIAkJfQogCkBAIC0y MDY1LDI0ICsyMDY4LDEzIEBAIHBxX2NoZWNrX2Nvbm5lY3Rpb24odm9pZCkKIAkgKiBhbGwg RmVCZVdhaXRTZXQgc29ja2V0IHdhaXQgc2l0ZXMgZG8gdGhlIHNhbWUuCiAJICovCiAJTW9k aWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2FpdFNldFNvY2tldFBvcywgV0xfU09D S0VUX0NMT1NFRCwgMCk7CisJTW9kaWZ5V2FpdEV2ZW50KEZlQmVXYWl0U2V0LCBGZUJlV2Fp dFNldEludGVycnVwdFBvcywgV0xfSU5URVJSVVBULCAwKTsKIAotcmV0cnk6CiAJcmMgPSBX YWl0RXZlbnRTZXRXYWl0KEZlQmVXYWl0U2V0LCAwLCBldmVudHMsIGxlbmd0aG9mKGV2ZW50 cyksIDApOwogCWZvciAoaW50IGkgPSAwOyBpIDwgcmM7ICsraSkKIAl7CiAJCWlmIChldmVu dHNbaV0uZXZlbnRzICYgV0xfU09DS0VUX0NMT1NFRCkKIAkJCXJldHVybiBmYWxzZTsKLQkJ aWYgKGV2ZW50c1tpXS5ldmVudHMgJiBXTF9JTlRFUlJVUFQpCi0JCXsKLQkJCS8qCi0JCQkg KiBBbiBpbnRlcnJ1cHQgZXZlbnQgbWlnaHQgYmUgcHJldmVudGluZyBvdGhlciBldmVudHMg ZnJvbSBiZWluZwotCQkJICogcmVwb3J0ZWQuICBSZXNldCBpdCBhbmQgcG9sbCBhZ2Fpbi4g IE5vIG5lZWQgdG8gcmVzdG9yZSBpdAotCQkJICogYmVjYXVzZSBubyBjb2RlIHNob3VsZCBl eHBlY3QgSU5URVJSVVBUX0dFTkVSQUwgdG8gc3Vydml2ZQotCQkJICogYWNyb3NzIENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkuCi0JCQkgKi8KLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMKTsKLQkJCWdvdG8gcmV0cnk7Ci0JCX0KIAl9CiAKIAlyZXR1cm4gdHJ1ZTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYwppbmRleCBiNjkyODUzNjk4NC4uMGJjMzQ5MjYyZmQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1x LmMKQEAgLTI2LDcgKzI2LDYgQEAKIAogc3RhdGljIHNobV9tcV9oYW5kbGUgKnBxX21xX2hh bmRsZTsKIHN0YXRpYyBib29sIHBxX21xX2J1c3kgPSBmYWxzZTsKLXN0YXRpYyBwaWRfdCBw cV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkID0gMDsKIHN0YXRpYyBQcm9jTnVtYmVyIHBxX21x X3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAK IHN0YXRpYyB2b2lkIHBxX2NsZWFudXBfcmVkaXJlY3RfdG9fc2htX21xKGRzbV9zZWdtZW50 ICpzZWcsIERhdHVtIGFyZyk7CkBAIC03MiwxNCArNzEsMTMgQEAgcHFfY2xlYW51cF9yZWRp cmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgRGF0dW0gYXJnKQogfQogCiAvKgot ICogQXJyYW5nZSB0byBTZW5kUHJvY1NpZ25hbCgpIHRvIHRoZSBwYXJhbGxlbCBsZWFkZXIg ZWFjaCB0aW1lIHdlIHRyYW5zbWl0Ci0gKiBtZXNzYWdlIGRhdGEgdmlhIHRoZSBzaG1fbXEu CisgKiBBcnJhbmdlIHRvIGludGVycnVwdCB0byB0aGUgcGFyYWxsZWwgbGVhZGVyIGVhY2gg dGltZSB3ZSB0cmFuc21pdCBtZXNzYWdlCisgKiBkYXRhIHZpYSB0aGUgc2htX21xLgogICov CiB2b2lkCi1wcV9zZXRfcGFyYWxsZWxfbGVhZGVyKHBpZF90IHBpZCwgUHJvY051bWJlciBw cm9jTnVtYmVyKQorcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihQcm9jTnVtYmVyIHByb2NOdW1i ZXIpCiB7CiAJQXNzZXJ0KFBxQ29tbU1ldGhvZHMgPT0gJlBxQ29tbU1xTWV0aG9kcyk7Ci0J cHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCA9IHBpZDsKIAlwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcHJvY19udW1iZXIgPSBwcm9jTnVtYmVyOwogfQogCkBAIC0xNjQsMjUgKzE2MiwyMyBA QCBtcV9wdXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxl bikKIAkJICovCiAJCXJlc3VsdCA9IHNobV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwg MiwgdHJ1ZSwgdHJ1ZSk7CiAKLQkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0g MCkKKwkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlciAhPSBJTlZBTElE X1BST0NfTlVNQkVSKQogCQl7CiAJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtl cigpKQotCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCi0J CQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAotCQkJCQkJCSAgIHBx X21xX3BhcmFsbGVsX2xlYWRlcl9wcm9jX251bWJlcik7CisJCQkJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgIHBxX21xX3BhcmFs bGVsX2xlYWRlcl9wcm9jX251bWJlcik7CiAJCQllbHNlCiAJCQl7CiAJCQkJQXNzZXJ0KElz UGFyYWxsZWxXb3JrZXIoKSk7Ci0JCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxf bGVhZGVyX3BpZCwKLQkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJ CQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKKwkJCQlTZW5kSW50 ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgcHFfbXFfcGFy YWxsZWxfbGVhZGVyX3Byb2NfbnVtYmVyKTsKIAkJCX0KIAkJfQogCiAJCWlmIChyZXN1bHQg IT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7CiAKLQkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9DRklfTUFTSygpIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkJIFdBSVRfRVZFTlRfTUVT U0FHRV9RVUVVRV9QVVRfTUVTU0FHRSk7CiAJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggYzQ1YjMz MmU4MjIuLjdiYzA4ZGY0ODAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YwpAQCAtNDAwLDcgKzQwMCw3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29uc3Qgdm9pZCAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlJbml0aWFsaXplVGlt ZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCiAJcHFzaWdu YWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2ln bmFsKFNJR1VTUjIsIGF2bF9zaWd1c3IyX2hhbmRsZXIpOwogCXBxc2lnbmFsKFNJR0ZQRSwg RmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKIAlwcXNpZ25hbChTSUdDSExELCBTSUdfREZMKTsK QEAgLTQ1MCw3ICs0NTAsNyBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZvaWQgKnN0 YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAKIAkJLyogRm9yZ2V0IGFu eSBwZW5kaW5nIFF1ZXJ5Q2FuY2VsIG9yIHRpbWVvdXQgcmVxdWVzdCAqLwogCQlkaXNhYmxl X2FsbF90aW1lb3V0cyhmYWxzZSk7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOyAv KiBzZWNvbmQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gKi8KKwkJQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIHNlY29uZCB0byBhdm9pZCByYWNlIGNvbmRp dGlvbiAqLwogCiAJCS8qIFJlcG9ydCB0aGUgZXJyb3IgdG8gdGhlIHNlcnZlciBsb2cgKi8K IAkJRW1pdEVycm9yUmVwb3J0KCk7CkBAIC00OTEsNyArNDkxLDcgQEAgQXV0b1ZhY0xhdW5j aGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFf bGVuKQogCQlSRVNVTUVfSU5URVJSVVBUUygpOwogCiAJCS8qIGlmIGluIHNodXRkb3duIG1v ZGUsIG5vIG5lZWQgZm9yIGFueXRoaW5nIGZ1cnRoZXI7IGp1c3QgZ28gYXdheSAqLwotCQlp ZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwkJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJCUF1dG9WYWNMYXVuY2hlclNodXRkb3duKCk7 CiAKIAkJLyoKQEAgLTU1MCw3ICs1NTAsNyBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJICovCiAJ aWYgKCFBdXRvVmFjdXVtaW5nQWN0aXZlKCkpCiAJewotCQlpZiAoIVNodXRkb3duUmVxdWVz dFBlbmRpbmcpCisJCWlmICghSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9X Tl9BVVgpKQogCQkJZG9fc3RhcnRfd29ya2VyKCk7CiAJCXByb2NfZXhpdCgwKTsJCQkvKiBk b25lICovCiAJfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIEF1dG9WYWNMYXVuY2hlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlyZWJ1 aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxpZE9pZCk7CiAKIAkvKiBsb29wIHVudGlsIHNodXRk b3duIHJlcXVlc3QgKi8KLQl3aGlsZSAoIVNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJd2hp bGUgKCFJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJewog CQlzdHJ1Y3QgdGltZXZhbCBuYXA7CiAJCVRpbWVzdGFtcFR6IGN1cnJlbnRfdGltZSA9IDA7 CkBAIC01ODYsMTUgKzU4NiwxOSBAQCBBdXRvVmFjTGF1bmNoZXJNYWluKGNvbnN0IHZvaWQg KnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIFdhaXQgdW50 aWwgbmFwdGltZSBleHBpcmVzIG9yIHdlIGdldCBzb21lIHR5cGUgb2Ygc2lnbmFsIChhbGwg dGhlCiAJCSAqIHNpZ25hbCBoYW5kbGVycyB3aWxsIHdha2UgdXMgYnkgY2FsbGluZyBSYWlz ZUludGVycnVwdCkuCiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX0FV WCB8CisJCQkJCQkJIElOVEVSUlVQVF9DT05GSUdfUkVMT0FEIHwKKwkJCQkJCQkgSU5URVJS VVBUX0JBUlJJRVIgfAorCQkJCQkJCSBJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUIHwK KwkJCQkJCQkgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCSAobmFwLnR2X3NlYyAq IDEwMDBMKSArIChuYXAudHZfdXNlYyAvIDEwMDBMKSwKIAkJCQkJCQkgV0FJVF9FVkVOVF9B VVRPVkFDVVVNX01BSU4pOwogCi0JCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKLQogCQlQcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJydXB0cygpOwogCisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwogCQkvKgogCQkgKiBhIHdvcmtlciBm aW5pc2hlZCwgb3IgcG9zdG1hc3RlciBzaWduYWxlZCBmYWlsdXJlIHRvIHN0YXJ0IGEgd29y a2VyCiAJCSAqLwpAQCAtNzQ0LDE0ICs3NDgsMTMgQEAgc3RhdGljIHZvaWQKIFByb2Nlc3NB dXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZvaWQpCiB7CiAJLyogdGhlIG5vcm1hbCBzaHV0 ZG93biBjYXNlICovCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKElzSW50 ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJQXV0b1ZhY0xhdW5j aGVyU2h1dGRvd24oKTsKIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCWlmIChDb25z dW1lSW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAl7CiAJCWludAkJCWF1 dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiA9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7CiAK LQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQ R0NfU0lHSFVQKTsKIAogCQkvKiBzaHV0ZG93biByZXF1ZXN0ZWQgaW4gY29uZmlnIGZpbGU/ ICovCkBAIC03NzEsMTEgKzc3NCwxMSBAQCBQcm9jZXNzQXV0b1ZhY0xhdW5jaGVySW50ZXJy dXB0cyh2b2lkKQogCX0KIAogCS8qIFByb2Nlc3MgYmFycmllciBldmVudHMgKi8KLQlpZiAo UHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQorCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5U RVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIAogCS8q IFBlcmZvcm0gbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgb2YgdGhpcyBwcm9jZXNzICov Ci0JaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQorCWlmIChJc0ludGVycnVwdFBlbmRp bmcoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCVByb2Nlc3NMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KCk7CiAKIAkvKiBQcm9jZXNzIHNpbnZhbCBjYXRjaHVwIGludGVy cnVwdHMgdGhhdCBoYXBwZW5lZCB3aGlsZSBzbGVlcGluZyAqLwpAQCAtMTQwNyw3ICsxNDEw LDcgQEAgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlJbml0aWFsaXplVGltZW91dHMoKTsJCS8qIGVzdGFi bGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCiAJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lH Tik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOwor CXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19J R04pOwogCXBxc2lnbmFsKFNJR0ZQRSwgRmxvYXRFeGNlcHRpb25IYW5kbGVyKTsKIAlwcXNp Z25hbChTSUdDSExELCBTSUdfREZMKTsKQEAgLTE0MzIsNyArMTQzNSw3IEBAIEF1dG9WYWNX b3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0 YV9sZW4pCiAJICogKHRvIHdpdCwgQmxvY2tTaWcpIHdpbGwgYmUgcmVzdG9yZWQgd2hlbiBs b25nam1wJ2luZyB0byBoZXJlLiAgVGh1cywKIAkgKiBzaWduYWxzIG90aGVyIHRoYW4gU0lH UVVJVCB3aWxsIGJlIGJsb2NrZWQgdW50aWwgd2UgZXhpdC4gIEl0IG1pZ2h0CiAJICogc2Vl bSB0aGF0IHRoaXMgcG9saWN5IG1ha2VzIHRoZSBIT0xEX0lOVEVSUlVQVFMoKSBjYWxsIHJl ZHVuZGFudCwgYnV0Ci0JICogaXQgaXMgbm90IHNpbmNlIEludGVycnVwdFBlbmRpbmcgbWln aHQgYmUgc2V0IGFscmVhZHkuCisJICogaXQgaXMgbm90IHNpbmNlIFhYWFggSW50ZXJydXB0 UGVuZGluZyBtaWdodCBiZSBzZXQgYWxyZWFkeS4KIAkgKi8KIAlpZiAoc2lnc2V0am1wKGxv Y2FsX3NpZ2ptcF9idWYsIDEpICE9IDApCiAJewpAQCAtMjI3Nyw5ICsyMjgwLDggQEAgZG9f YXV0b3ZhY3V1bSh2b2lkKQogCQkvKgogCQkgKiBDaGVjayBmb3IgY29uZmlnIGNoYW5nZXMg YmVmb3JlIHByb2Nlc3NpbmcgZWFjaCBjb2xsZWN0ZWQgdGFibGUuCiAJCSAqLwotCQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7 CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAogCQkJLyoKQEAgLTI0Mzcs NyArMjQzOSw3IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJCSAqIGN1cnJlbnQgdGFibGUg KHdlJ3JlIGRvbmUgd2l0aCBpdCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0bwogCQkJ ICogY2FuY2VsIGF0IHRoaXMgcG9pbnQuKQogCQkJICovCi0JCQlRdWVyeUNhbmNlbFBlbmRp bmcgPSBmYWxzZTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9RVUVSWV9DQU5DRUwp OwogCQl9CiAJCVBHX0NBVENIKCk7CiAJCXsKQEAgLTI1MjEsOSArMjUyMyw4IEBAIGRlbGV0 ZWQ6CiAJCSAqIENoZWNrIGZvciBjb25maWcgY2hhbmdlcyBiZWZvcmUgYWNxdWlyaW5nIGxv Y2sgZm9yIGZ1cnRoZXIgam9icy4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 Ci0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJ TlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJVmFjdXVt VXBkYXRlQ29zdHMoKTsKIAkJfQpAQCAtMjYzNSw3ICsyNjM2LDcgQEAgcGVyZm9ybV93b3Jr X2l0ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSkKIAkJICogKHdlJ3JlIGRvbmUg d2l0aCBpdCwgc28gaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjYW5jZWwgYXQgdGhpcwog CQkgKiBwb2ludC4pCiAJCSAqLwotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAJfQogCVBHX0NBVENI KCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDQ0MjVlNDA0YTM1 Li44YzUyMmFkYjA3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMjYs NyArMjYsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKQEAg LTc1MSw3ICs3NTAsNyBAQCBCYWNrZ3JvdW5kV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkgKiBTSUdJTlQgaXMgdXNl ZCB0byBzaWduYWwgY2FuY2VsaW5nIHRoZSBjdXJyZW50IGFjdGlvbgogCQkgKi8KIAkJcHFz aWduYWwoU0lHSU5ULCBTdGF0ZW1lbnRDYW5jZWxIYW5kbGVyKTsKLQkJcHFzaWduYWwoU0lH VVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCQlwcXNpZ25hbChTSUdVU1Ix LCBTSUdfSUdOKTsKIAkJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIp OwogCiAJCS8qIFhYWCBBbnkgb3RoZXIgaGFuZGxlcnMgbmVlZGVkIGhlcmU/ICovCkBAIC0x MjMzLDcgKzEyMzIsNyBAQCBXYWl0Rm9yQmFja2dyb3VuZFdvcmtlclN0YXJ0dXAoQmFja2dy b3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlLCBwaWRfdCAqcGlkcCkKIAkJaWYgKHN0YXR1cyAh PSBCR1dIX05PVF9ZRVRfU1RBUlRFRCkKIAkJCWJyZWFrOwogCi0JCXJjID0gV2FpdEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQ VF9DRklfTUFTSygpIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJV UFQgfCBXTF9QT1NUTUFTVEVSX0RFQVRILCAwLAogCQkJCQkJICAgV0FJVF9FVkVOVF9CR1dP UktFUl9TVEFSVFVQKTsKIApAQCAtMTI3Nyw3ICsxMjc2LDcgQEAgV2FpdEZvckJhY2tncm91 bmRXb3JrZXJTaHV0ZG93bihCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCiAJCWlm IChzdGF0dXMgPT0gQkdXSF9TVE9QUEVEKQogCQkJYnJlYWs7CiAKLQkJcmMgPSBXYWl0SW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJS VVBUX0NGSV9NQVNLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVS UlVQVCB8IFdMX1BPU1RNQVNURVJfREVBVEgsIDAsCiAJCQkJCQkgICBXQUlUX0VWRU5UX0JH V09SS0VSX1NIVVRET1dOKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dyaXRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dyaXRlci5jCmluZGV4 IGFlN2Q2ZjY2Y2M2Li4yYWIzZjUwNDliZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9iZ3dyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3cml0 ZXIuYwpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNs dWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgotI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCkBAIC0xMDUsNyArMTA0LDcgQEAgQmFja2dyb3VuZFdyaXRlck1haW4oY29uc3Qg dm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkvKiBTSUdR VUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQg Ki8KIAlwcXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKIAlwcXNpZ25hbChTSUdQSVBFLCBT SUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxl cik7CisJcHFzaWduYWwoU0lHVVNSMSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHVVNSMiwg U0lHX0lHTik7CiAKIAkvKgpAQCAtMjIzLDkgKzIyMiw3IEBAIEJhY2tncm91bmRXcml0ZXJN YWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4p CiAJCWJvb2wJCWNhbl9oaWJlcm5hdGU7CiAJCWludAkJCXJjOwogCi0JCS8qIENsZWFyIGFu eSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwotCQlDbGVhckludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7Ci0KKwkJLyogUHJvY2VzcyBhbnkgcGVuZGluZyBzdGFuZGFyZCBpbnRl cnJ1cHRzICovCiAJCVByb2Nlc3NNYWluTG9vcEludGVycnVwdHMoKTsKIAogCQkvKgpAQCAt MzAyLDcgKzI5OSw3IEBAIEJhY2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0 dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCSAqIGRvd24gd2l0aCBpbnRl cnJ1cHQgZXZlbnRzIHRoYXQgYXJlIGxpa2VseSB0byBoYXBwZW4gZnJlcXVlbnRseQogCQkg KiBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbi4KIAkJICovCi0JCXJjID0gV2FpdEludGVycnVw dChJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9N QUlOX0xPT1BfTUFTSywKIAkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBX TF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgQmdXcml0ZXJEZWxheSAvKiBtcyAqLyAs IFdBSVRfRVZFTlRfQkdXUklURVJfTUFJTik7CiAKQEAgLTMyNiwxMCArMzIzLDE0IEBAIEJh Y2tncm91bmRXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0 YXJ0dXBfZGF0YV9sZW4pCiAJCSAqLwogCQlpZiAocmMgPT0gV0xfVElNRU9VVCAmJiBjYW5f aGliZXJuYXRlICYmIHByZXZfaGliZXJuYXRlKQogCQl7CisJCQkvKiBDbGVhciBhbnkgYWxy ZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKKwogCQkJLyogQXNrIGZvciBub3RpZmljYXRpb24gYXQgbmV4dCBidWZmZXIg YWxsb2NhdGlvbiAqLwogCQkJU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihNeVByb2NOdW1iZXIp OwogCQkJLyogU2xlZXAgLi4uICovCi0JCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwKKwkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9NQUlOX0xP T1BfTUFTSyB8CisJCQkJCQkJCSBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCQkJIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkg QmdXcml0ZXJEZWxheSAqIEhJQkVSTkFURV9GQUNUT1IsCiAJCQkJCQkJCSBXQUlUX0VWRU5U X0JHV1JJVEVSX0hJQkVSTkFURSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50 ZXIuYwppbmRleCAzNjNhNDIwMThlMC4uYTBjMWRlOTQ5MWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtODAsMTAgKzgwLDExIEBACiAgKiBUaGUgYWxn b3JpdGhtIGZvciBiYWNrZW5kcyBpczoKICAqCTEuIFJlY29yZCBjdXJyZW50IHZhbHVlcyBv ZiBja3B0X2ZhaWxlZCBhbmQgY2twdF9zdGFydGVkLCBhbmQKICAqCSAgIHNldCByZXF1ZXN0 IGZsYWdzLCB3aGlsZSBob2xkaW5nIGNrcHRfbGNrLgotICoJMi4gU2VuZCBzaWduYWwgdG8g cmVxdWVzdCBjaGVja3BvaW50LgorICoJMi4gU2VuZCBJTlRFUlJVUFRfR0VORVJBTCB0byB3 YWtlIHVwIHRoZSBjaGVja3BvaW50ZXIuCiAgKgkzLiBTbGVlcCB1bnRpbCBja3B0X3N0YXJ0 ZWQgY2hhbmdlcy4gIE5vdyB5b3Uga25vdyBhIGNoZWNrcG9pbnQgaGFzCiAgKgkgICBiZWd1 biBzaW5jZSB5b3Ugc3RhcnRlZCB0aGlzIGFsZ29yaXRobSAoYWx0aG91Z2ggKm5vdCogdGhh dCBpdCB3YXMKLSAqCSAgIHNwZWNpZmljYWxseSBpbml0aWF0ZWQgYnkgeW91ciBzaWduYWwp LCBhbmQgdGhhdCBpdCBpcyB1c2luZyB5b3VyIGZsYWdzLgorICoJICAgc3BlY2lmaWNhbGx5 IGluaXRpYXRlZCBieSB5b3VyIGludGVycnVwdCksIGFuZCB0aGF0IGl0IGlzIHVzaW5nIHlv dXIKKyAqCSAgIGZsYWdzLgogICoJNC4gUmVjb3JkIG5ldyB2YWx1ZSBvZiBja3B0X3N0YXJ0 ZWQuCiAgKgk1LiBTbGVlcCB1bnRpbCBja3B0X2RvbmUgPj0gc2F2ZWQgdmFsdWUgb2YgY2tw dF9zdGFydGVkLiAgKFVzZSBtb2R1bG8KICAqCSAgIGFyaXRobWV0aWMgaGVyZSBpbiBjYXNl IGNvdW50ZXJzIHdyYXAgYXJvdW5kLikgIE5vdyB5b3Uga25vdyBhCkBAIC0xNDUsNyArMTQ2 LDYgQEAgZG91YmxlCQlDaGVja1BvaW50Q29tcGxldGlvblRhcmdldCA9IDAuOTsKICAqIFBy aXZhdGUgc3RhdGUKICAqLwogc3RhdGljIGJvb2wgY2twdF9hY3RpdmUgPSBmYWxzZTsKLXN0 YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgU2h1dGRvd25YTE9HUGVuZGluZyA9IGZhbHNl OwogCiAvKiB0aGVzZSB2YWx1ZXMgYXJlIHZhbGlkIHdoZW4gY2twdF9hY3RpdmUgaXMgdHJ1 ZTogKi8KIHN0YXRpYyBwZ190aW1lX3QgY2twdF9zdGFydF90aW1lOwpAQCAtMjAxLDcgKzIw MSw3IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXpl X3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkg c2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KIAlwcXNpZ25hbChTSUdBTFJNLCBT SUdfSUdOKTsKIAlwcXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdV U1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVNSMSwg U0lHX0lHTik7CiAJcHFzaWduYWwoU0lHVVNSMiwgU2lnbmFsSGFuZGxlckZvclNodXRkb3du UmVxdWVzdCk7CiAKIAkvKgpAQCAtMzU1LDEyICszNTUsMTMgQEAgQ2hlY2twb2ludGVyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAKIAkJLyoKLQkJICogUHJv Y2VzcyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseS4KKwkJICog UHJvY2VzcyBhbnkgcmVxdWVzdHMgb3IgaW50ZXJydXB0cyByZWNlaXZlZCByZWNlbnRseS4K IAkJICovCiAJCUFic29yYlN5bmNSZXF1ZXN0cygpOwogCiAJCVByb2Nlc3NDaGVja3BvaW50 ZXJJbnRlcnJ1cHRzKCk7Ci0JCWlmIChTaHV0ZG93blhMT0dQZW5kaW5nIHx8IFNodXRkb3du UmVxdWVzdFBlbmRpbmcpCisJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NI VVRET1dOX1hMT0cpIHx8CisJCQlJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRE T1dOX0FVWCkpCiAJCQlicmVhazsKIAogCQkvKgpAQCAtNTM3LDcgKzUzOCw4IEBAIENoZWNr cG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbikKIAkJCSAqIGludGVycnVwdCBtaWdodCBoYXZlIGJlZW4gcmVzZXQgKGUuZy4g aW4gQ2hlY2twb2ludFdyaXRlRGVsYXkpLgogCQkJICovCiAJCQlQcm9jZXNzQ2hlY2twb2lu dGVySW50ZXJydXB0cygpOwotCQkJaWYgKFNodXRkb3duWExPR1BlbmRpbmcgfHwgU2h1dGRv d25SZXF1ZXN0UGVuZGluZykKKwkJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBU X1NIVVRET1dOX1hMT0cpIHx8CisJCQkJSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9T SFVURE9XTl9BVVgpKQogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTU1Niw3ICs1NTgsNyBAQCBD aGVja3BvaW50ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJCQljb250aW51ZTsKIAogCQkvKgotCQkgKiBTbGVlcCB1bnRpbCB3 ZSBhcmUgc2lnbmFsZWQgb3IgaXQncyB0aW1lIGZvciBhbm90aGVyIGNoZWNrcG9pbnQgb3IK KwkJICogU2xlZXAgdW50aWwgd2UgYXJlIHdva2VuIHVwIG9yIGl0J3MgdGltZSBmb3IgYW5v dGhlciBjaGVja3BvaW50IG9yCiAJCSAqIHhsb2cgZmlsZSBzd2l0Y2guCiAJCSAqLwogCQlu b3cgPSAocGdfdGltZV90KSB0aW1lKE5VTEwpOwpAQCAtNTcyLDEwICs1NzQsMTggQEAgQ2hl Y2twb2ludGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKQogCQkJY3VyX3RpbWVvdXQgPSBNaW4oY3VyX3RpbWVvdXQsIFhMb2dBcmNo aXZlVGltZW91dCAtIGVsYXBzZWRfc2Vjcyk7CiAJCX0KIAotCQkodm9pZCkgV2FpdEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCwKLQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCi0JCQkJCQkJIGN1cl90aW1lb3V0ICogMTAw MEwgLyogY29udmVydCB0byBtcyAqLyAsCi0JCQkJCQkJIFdBSVRfRVZFTlRfQ0hFQ0tQT0lO VEVSX01BSU4pOworCQkodm9pZCkgV2FpdEludGVycnVwdCgKKwkJCS8qIHRoZXNlIGFyZSBo YW5kbGVkIGluIHRoZSBtYWluIGxvb3AgKi8KKwkJCUlOVEVSUlVQVF9HRU5FUkFMIHwgCS8q IGNoZWNrcG9pbnQgcmVxdWVzdGVkICovCisJCQlJTlRFUlJVUFRfU0hVVERPV05fWExPRyB8 CisJCQlJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCS8qIFByb2Nlc3NDaGVja3BvaW50 ZXJJbnRlcnJ1cHRzKCkgKi8KKwkJCUlOVEVSUlVQVF9CQVJSSUVSIHwKKwkJCUlOVEVSUlVQ VF9MT0dfTUVNT1JZX0NPTlRFWFQgfAorCQkJSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCisJ CQlXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CWN1cl90aW1lb3V0ICogMTAwMEwgLyogY29udmVydCB0byBtcyAqLyAsCisJCQlXQUlUX0VW RU5UX0NIRUNLUE9JTlRFUl9NQUlOKTsKIAl9CiAKIAkvKgpAQCAtNTg0LDcgKzU5NCw3IEBA IENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3Rh cnR1cF9kYXRhX2xlbikKIAkgKi8KIAlFeGl0T25BbnlFcnJvciA9IHRydWU7CiAKLQlpZiAo U2h1dGRvd25YTE9HUGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9TSFVURE9XTl9YTE9HKSkKIAl7CiAJCS8qCiAJCSAqIENsb3NlIGRvd24gdGhlIGRhdGFi YXNlLgpAQCAtNjAyLDcgKzYxMiw3IEBAIENoZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJICogVGVsbCBwb3N0 bWFzdGVyIHRoYXQgd2UncmUgZG9uZS4KIAkJICovCiAJCVNlbmRQb3N0bWFzdGVyU2lnbmFs KFBNU0lHTkFMX1hMT0dfSVNfU0hVVERPV04pOwotCQlTaHV0ZG93blhMT0dQZW5kaW5nID0g ZmFsc2U7CisJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9TSFVURE9XTl9YTE9HKTsKIAl9 CiAKIAkvKgpAQCAtNjEyLDE1ICs2MjIsMTYgQEAgQ2hlY2twb2ludGVyTWFpbihjb25zdCB2 b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCSAqLwogCWZv ciAoOzspCiAJewotCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8K LQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwotCiAJCVByb2Nlc3NDaGVj a3BvaW50ZXJJbnRlcnJ1cHRzKCk7CiAKLQkJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcp CisJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJ CQlicmVhazsKIAotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwK KwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX0FVWCB8CisJCQkJ CQkJIC8qIFByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1cHRzKCkgKi8KKwkJCQkJCQkgSU5U RVJSVVBUX0JBUlJJRVIgfAorCQkJCQkJCSBJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhU IHwKKwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQsCiAJCQkJCQkJIFdMX0lOVEVS UlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkJIDAsCiAJCQkJCQkJIFdBSVRf RVZFTlRfQ0hFQ0tQT0lOVEVSX1NIVVRET1dOKTsKQEAgLTYzNiwxMiArNjQ3LDExIEBAIENo ZWNrcG9pbnRlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikKIHN0YXRpYyB2b2lkCiBQcm9jZXNzQ2hlY2twb2ludGVySW50ZXJydXB0 cyh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYgKElzSW50 ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQkFSUklFUikpCiAJCVByb2Nlc3NQcm9jU2lnbmFs QmFycmllcigpOwogCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCXsKLQkJQ29uZmlnUmVsb2Fk UGVuZGluZyA9IGZhbHNlOwogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAog CQkvKgpAQCAtNjU5LDcgKzY2OSw3IEBAIFByb2Nlc3NDaGVja3BvaW50ZXJJbnRlcnJ1cHRz KHZvaWQpCiAJfQogCiAJLyogUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBv ZiB0aGlzIHByb2Nlc3MgKi8KLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCisJaWYg KElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJ UHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIH0KIApAQCAtNzc3LDE0ICs3 ODcsMTMgQEAgQ2hlY2twb2ludFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jl c3MpCiAJICogaW4gd2hpY2ggY2FzZSB3ZSBqdXN0IHRyeSB0byBjYXRjaCB1cCBhcyBxdWlj a2x5IGFzIHBvc3NpYmxlLgogCSAqLwogCWlmICghKGZsYWdzICYgQ0hFQ0tQT0lOVF9JTU1F RElBVEUpICYmCi0JCSFTaHV0ZG93blhMT0dQZW5kaW5nICYmCi0JCSFTaHV0ZG93blJlcXVl c3RQZW5kaW5nICYmCisJCSFJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dO X1hMT0cpICYmCisJCSFJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FV WCkgJiYKIAkJIUltbWVkaWF0ZUNoZWNrcG9pbnRSZXF1ZXN0ZWQoKSAmJgogCQlJc0NoZWNr cG9pbnRPblNjaGVkdWxlKHByb2dyZXNzKSkKIAl7Ci0JCWlmIChDb25maWdSZWxvYWRQZW5k aW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkp CiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQkJLyogdXBkYXRlIHNobWVtIGNvcGllcyBvZiBjb25m aWcgdmFyaWFibGVzICovCiAJCQlVcGRhdGVTaGFyZWRNZW1vcnlDb25maWcoKTsKQEAgLTgw NCw3ICs4MTMsNyBAQCBDaGVja3BvaW50V3JpdGVEZWxheShpbnQgZmxhZ3MsIGRvdWJsZSBw cm9ncmVzcykKIAkJICogQ2hlY2twb2ludGVyIGFuZCBiZ3dyaXRlciBhcmUgbm8gbG9uZ2Vy IHJlbGF0ZWQgc28gdGFrZSB0aGUgQmlnCiAJCSAqIFNsZWVwLgogCQkgKi8KLQkJV2FpdElu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJV2FpdEludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCB8IElOVEVSUlVQVF9DT05GSUdfUkVMT0FELAogCQkJCQkgIFdMX0lOVEVSUlVQ VCB8IFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9USU1FT1VULAogCQkJCQkgIDEwMCwKIAkJ CQkJICBXQUlUX0VWRU5UX0NIRUNLUE9JTlRfV1JJVEVfREVMQVkpOwpAQCAtODIyLDcgKzgz MSw3IEBAIENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBmbGFncywgZG91YmxlIHByb2dyZXNz KQogCX0KIAogCS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50cy4gKi8KLQlpZiAoUHJvY1Np Z25hbEJhcnJpZXJQZW5kaW5nKQorCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBU X0JBUlJJRVIpKQogCQlQcm9jZXNzUHJvY1NpZ25hbEJhcnJpZXIoKTsKIH0KIApAQCAtOTE2 LDggKzkyNSw3IEBAIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHByb2dyZXNzKQog c3RhdGljIHZvaWQKIFJlcVNodXRkb3duWExPRyhTSUdOQUxfQVJHUykKIHsKLQlTaHV0ZG93 blhMT0dQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1NIVVRET1dOX1hMT0cpOwogfQogCiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmluZGV4IGYzMjUwMjBhZGUyLi43Nzhj ZDY3YjY0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQu YworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC0yNSw5ICsy NSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgotCi12b2xhdGlsZSBz aWdfYXRvbWljX3QgQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2ln X2F0b21pY190IFNodXRkb3duUmVxdWVzdFBlbmRpbmcgPSBmYWxzZTsKKyNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgogCiAvKiBBIGNvbW1vbiBXYWl0RXZlbnRTZXQgdXNlZCB0byBp bXBsZW1lbnQgV2FpdEludGVycnVwdCgpICovCiBzdGF0aWMgV2FpdEV2ZW50U2V0ICpJbnRl cnJ1cHRXYWl0U2V0OwpAQCAtNDAsNiArMzgsMTAgQEAgc3RhdGljIHBnX2F0b21pY191aW50 MzIgTG9jYWxQZW5kaW5nSW50ZXJydXB0czsKIAogcGdfYXRvbWljX3VpbnQzMiAqTXlQZW5k aW5nSW50ZXJydXB0cyA9ICZMb2NhbFBlbmRpbmdJbnRlcnJ1cHRzOwogCit2b2xhdGlsZSB1 aW50MzIgSW50ZXJydXB0SG9sZG9mZkNvdW50ID0gMDsKK3ZvbGF0aWxlIHVpbnQzMiBRdWVy eUNhbmNlbEhvbGRvZmZDb3VudCA9IDA7Cit2b2xhdGlsZSB1aW50MzIgQ3JpdFNlY3Rpb25D b3VudCA9IDA7CisKIC8qCiAgKiBTd2l0Y2ggdG8gbG9jYWwgaW50ZXJydXB0cy4gIE90aGVy IGJhY2tlbmRzIGNhbid0IHNlbmQgaW50ZXJydXB0cyB0byB0aGlzCiAgKiBvbmUuICBPbmx5 IFJhaXNlSW50ZXJydXB0KCkgY2FuIHNldCB0aGVtLCBmcm9tIGluc2lkZSB0aGlzIHByb2Nl c3MuCkBAIC0xMjksNiArMTMxLDggQEAgU2VuZEludGVycnVwdCh1aW50MzIgaW50ZXJydXB0 TWFzaywgUHJvY051bWJlciBwZ3Byb2NubykKIAlwcm9jID0gJlByb2NHbG9iYWwtPmFsbFBy b2NzW3BncHJvY25vXTsKIAlvbGRfcGVuZGluZyA9IHBnX2F0b21pY19mZXRjaF9vcl91MzIo JnByb2MtPnBlbmRpbmdJbnRlcnJ1cHRzLCBpbnRlcnJ1cHRNYXNrKTsKIAorCS8qIG5lZWQg YSBtZW1vcnkgYmFycmllciBoZXJlPyBPciBpcyBXYWtldXBPdGhlclByb2MoKSBzdWZmaWNp ZW50PyAqLworCiAJLyoKIAkgKiBJZiB0aGUgcHJvY2VzcyBpcyBjdXJyZW50bHkgYmxvY2tl ZCB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgdG8gYXJyaXZlLAogCSAqIGFuZCB0aGUgaW50 ZXJydXB0IHdhc24ndCBhbHJlYWR5IHBlbmRpbmcsIHdha2UgaXQgdXAuCkBAIC0yODMsMjAg KzI4NywxNyBAQCBXYWl0SW50ZXJydXB0T3JTb2NrZXQodWludDMyIGludGVycnVwdE1hc2ss IGludCB3YWtlRXZlbnRzLCBwZ3NvY2tldCBzb2NrLAogdm9pZAogUHJvY2Vzc01haW5Mb29w SW50ZXJydXB0cyh2b2lkKQogewotCWlmIChQcm9jU2lnbmFsQmFycmllclBlbmRpbmcpCisJ aWYgKElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQkFSUklFUikpCiAJCVByb2Nlc3NQ cm9jU2lnbmFsQmFycmllcigpOwogCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0Jewot CQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJaWYgKENvbnN1bWVJbnRlcnJ1cHQo SU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lH SFVQKTsKLQl9CiAKLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwlpZiAoSXNJbnRl cnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9BVVgpKQogCQlwcm9jX2V4aXQoMCk7 CiAKIAkvKiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJv Y2VzcyAqLwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1 cHRQZW5kaW5nKElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlQcm9jZXNzTG9n TWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCkBAIC0zMDQsMTQgKzMwNSwxMyBAQCBQ cm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzKHZvaWQpCiAgKiBTaW1wbGUgc2lnbmFsIGhhbmRs ZXIgZm9yIHRyaWdnZXJpbmcgYSBjb25maWd1cmF0aW9uIHJlbG9hZC4KICAqCiAgKiBOb3Jt YWxseSwgdGhpcyBoYW5kbGVyIHdvdWxkIGJlIHVzZWQgZm9yIFNJR0hVUC4gVGhlIGlkZWEg aXMgdGhhdCBjb2RlCi0gKiB3aGljaCB1c2VzIGl0IHdvdWxkIGFycmFuZ2UgdG8gY2hlY2sg dGhlIENvbmZpZ1JlbG9hZFBlbmRpbmcgZmxhZyBhdAotICogY29udmVuaWVudCBwbGFjZXMg aW5zaWRlIG1haW4gbG9vcHMsIG9yIGVsc2UgY2FsbCBQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1 cHRzLgorICogd2hpY2ggdXNlcyBpdCB3b3VsZCBhcnJhbmdlIHRvIGNoZWNrIHRoZSBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCBpbnRlcnJ1cHQgYXQKKyAqIGNvbnZlbmllbnQgcGxhY2Vz IGluc2lkZSBtYWluIGxvb3BzLCBvciBlbHNlIGNhbGwgSGFuZGxlTWFpbkxvb3BJbnRlcnJ1 cHRzLgogICovCiB2b2lkCiBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKFNJR05BTF9B UkdTKQogewotCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSB0cnVlOwotCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklH X1JFTE9BRCk7CiB9CiAKIC8qCkBAIC0zNDgsMTIgKzM0OCwxMSBAQCBTaWduYWxIYW5kbGVy Rm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQogICogd3JpdGVyIGFuZCB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdHMgb24gZWl0aGVyCiAgKiBT SUdJTlQgb3IgU0lHVEVSTS4KICAqCi0gKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHNob3Vs ZCBiZSBjaGVja2VkIGF0IGEgY29udmVuaWVudCBwbGFjZSB3aXRoaW4gdGhlCisgKiBJTlRF UlJVUFRfU0hVVERPV05fQVVYIHNob3VsZCBiZSBjaGVja2VkIGF0IGEgY29udmVuaWVudCBw bGFjZSB3aXRoaW4gdGhlCiAgKiBtYWluIGxvb3AsIG9yIGVsc2UgdGhlIG1haW4gbG9vcCBz aG91bGQgY2FsbCBQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzLgogICovCiB2b2lkCiBTaWdu YWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KFNJR05BTF9BUkdTKQogewotCVNodXRkb3du UmVxdWVzdFBlbmRpbmcgPSB0cnVlOwotCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfU0hVVERPV05fQVVYKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IDRmMjhlYTViNjEzLi5mYWE4ZThhY2JkMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC0yMzAsNyArMjMwLDcgQEAgUGdBcmNo aXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRh X2xlbikKIAkvKiBTSUdRVUlUIGhhbmRsZXIgd2FzIGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQ b3N0bWFzdGVyQ2hpbGQgKi8KIAlwcXNpZ25hbChTSUdBTFJNLCBTSUdfSUdOKTsKIAlwcXNp Z25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFs X3NpZ3VzcjFfaGFuZGxlcik7CisJcHFzaWduYWwoU0lHVVNSMSwgU0lHX0lHTik7CiAJcHFz aWduYWwoU0lHVVNSMiwgcGdhcmNoX3dha2VuX3N0b3ApOwogCiAJLyogUmVzZXQgc29tZSBz aWduYWxzIHRoYXQgYXJlIGFjY2VwdGVkIGJ5IHBvc3RtYXN0ZXIgYnV0IG5vdCBoZXJlICov CkBAIC0zMzEsNyArMzMxLDcgQEAgcGdhcmNoX01haW5Mb29wKHZvaWQpCiAJCSAqIGlkZWEu ICBJZiBtb3JlIHRoYW4gNjAgc2Vjb25kcyBwYXNzIHNpbmNlIFNJR1RFUk0sIGV4aXQgYW55 d2F5LCBzbwogCQkgKiB0aGF0IHRoZSBwb3N0bWFzdGVyIGNhbiBzdGFydCBhIG5ldyBhcmNo aXZlciBpZiBuZWVkZWQuCiAJCSAqLwotCQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykK KwkJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVYKSkKIAkJ ewogCQkJdGltZV90CQljdXJ0aW1lID0gdGltZShOVUxMKTsKIApAQCAtMzUzLDcgKzM1Mywx MSBAQCBwZ2FyY2hfTWFpbkxvb3Aodm9pZCkKIAkJewogCQkJaW50CQkJcmM7CiAKLQkJCXJj ID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwKKwkJCXJjID0gV2FpdEludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCB8CisJCQkJCQkJICAgSU5URVJSVVBUX1NIVVRET1dO X0FVWCB8CisJCQkJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJCSAg IElOVEVSUlVQVF9CQVJSSUVSIHwKKwkJCQkJCQkgICBJTlRFUlJVUFRfTE9HX01FTU9SWV9D T05URVhULAogCQkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9QT1NU TUFTVEVSX0RFQVRILAogCQkJCQkJCSAgIFBHQVJDSF9BVVRPV0FLRV9JTlRFUlZBTCAqIDEw MDBMLAogCQkJCQkJCSAgIFdBSVRfRVZFTlRfQVJDSElWRVJfTUFJTik7CkBAIC00MDUsNyAr NDA5LDcgQEAgcGdhcmNoX0FyY2hpdmVyQ29weUxvb3Aodm9pZCkKIAkJCSAqIGNvbW1hbmQs IGFuZCB0aGUgc2Vjb25kIGlzIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGFub3RoZXIKIAkJ CSAqIGFyY2hpdmVyIHNwYXduZWQgYnkgYSBuZXdlciBwb3N0bWFzdGVyLgogCQkJICovCi0J CQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZyB8fCAhUG9zdG1hc3RlcklzQWxpdmUoKSkK KwkJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkgfHwg IVBvc3RtYXN0ZXJJc0FsaXZlKCkpCiAJCQkJcmV0dXJuOwogCiAJCQkvKgpAQCAtODU2LDE5 ICs4NjAsMTkgQEAgcGdhcmNoX2RpZShpbnQgY29kZSwgRGF0dW0gYXJnKQogc3RhdGljIHZv aWQKIFByb2Nlc3NQZ0FyY2hJbnRlcnJ1cHRzKHZvaWQpCiB7Ci0JaWYgKFByb2NTaWduYWxC YXJyaWVyUGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9CQVJS SUVSKSkKIAkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7CiAKIAkvKiBQZXJmb3JtIGxv Z2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJvY2VzcyAqLwotCWlmIChMb2dN ZW1vcnlDb250ZXh0UGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQ VF9MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVy cnVwdCgpOwogCi0JaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJaWYgKElzSW50ZXJydXB0 UGVuZGluZyhJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJewogCQljaGFyCSAgICphcmNo aXZlTGliID0gcHN0cmR1cChYTG9nQXJjaGl2ZUxpYnJhcnkpOwogCQlib29sCQlhcmNoaXZl TGliQ2hhbmdlZDsKIAotCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCUNsZWFy SW50ZXJydXB0KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKTsKIAkJUHJvY2Vzc0NvbmZpZ0Zp bGUoUEdDX1NJR0hVUCk7CiAKIAkJaWYgKFhMb2dBcmNoaXZlTGlicmFyeVswXSAhPSAnXDAn ICYmIFhMb2dBcmNoaXZlQ29tbWFuZFswXSAhPSAnXDAnKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYwppbmRleCBmMTMzMmViMjE5NS4uZWYyNzU1OGFhYzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xNjIxLDcgKzE2MjEsOCBAQCBDb25m aWd1cmVQb3N0bWFzdGVyV2FpdFNldChib29sIGFjY2VwdF9jb25uZWN0aW9ucykKIAlwbV93 YWl0X3NldCA9IENyZWF0ZVdhaXRFdmVudFNldChOVUxMLAogCQkJCQkJCQkJIGFjY2VwdF9j b25uZWN0aW9ucyA/ICgxICsgTnVtTGlzdGVuU29ja2V0cykgOiAxKTsKIAlBZGRXYWl0RXZl bnRUb1NldChwbV93YWl0X3NldCwgV0xfSU5URVJSVVBULCBQR0lOVkFMSURfU09DS0VULAot CQkJCQkgIElOVEVSUlVQVF9HRU5FUkFMLCBOVUxMKTsKKwkJCQkJICBJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCB8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkgIE5VTEwpOwogCiAJaWYg KGFjY2VwdF9jb25uZWN0aW9ucykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3RhcnR1cC5jCmlu ZGV4IGYyYWM4NjI1MTNiLi5hYmM0ZTgwZjFkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9zdGFydHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zdGFy dHVwLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV4cHJvY2Vz cy5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAicG9z dG1hc3Rlci9zdGFydHVwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Btc2lnbmFsLmgiCkBAIC01MCw3ICs1MSw2IEBACiAvKgogICogRmxhZ3Mg c2V0IGJ5IGludGVycnVwdCBoYW5kbGVycyBmb3IgbGF0ZXIgc2VydmljZSBpbiB0aGUgcmVk byBsb29wLgogICovCi1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9TSUdIVVAg PSBmYWxzZTsKIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc2h1dGRvd25fcmVxdWVz dGVkID0gZmFsc2U7CiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHByb21vdGVfc2ln bmFsZWQgPSBmYWxzZTsKIApAQCAtMTAxLDggKzEwMSw3IEBAIFN0YXJ0dXBQcm9jVHJpZ2dl ckhhbmRsZXIoU0lHTkFMX0FSR1MpCiBzdGF0aWMgdm9pZAogU3RhcnR1cFByb2NTaWdIdXBI YW5kbGVyKFNJR05BTF9BUkdTKQogewotCWdvdF9TSUdIVVAgPSB0cnVlOwotCVdha2V1cFJl Y292ZXJ5KCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpOwog fQogCiAvKiBTSUdURVJNOiBzZXQgZmxhZyB0byBhYm9ydCByZWRvIGFuZCBleGl0ICovCkBA IC0xNjEsMTEgKzE2MCw4IEBAIFByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHModm9pZCkK IAkvKgogCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVj ZW50bHkuCiAJICovCi0JaWYgKGdvdF9TSUdIVVApCi0JewotCQlnb3RfU0lHSFVQID0gZmFs c2U7CisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQog CQlTdGFydHVwUmVyZWFkQ29uZmlnKCk7Ci0JfQogCiAJLyoKIAkgKiBDaGVjayBpZiB3ZSB3 ZXJlIHJlcXVlc3RlZCB0byBleGl0IHdpdGhvdXQgZmluaXNoaW5nIHJlY292ZXJ5LgpAQCAt MTg3LDExICsxODMsMTEgQEAgUHJvY2Vzc1N0YXJ0dXBQcm9jSW50ZXJydXB0cyh2b2lkKQog CQlleGl0KDEpOwogCiAJLyogUHJvY2VzcyBiYXJyaWVyIGV2ZW50cyAqLwotCWlmIChQcm9j U2lnbmFsQmFycmllclBlbmRpbmcpCisJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJV UFRfQkFSUklFUikpCiAJCVByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwogCiAJLyogUGVy Zm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlzIHByb2Nlc3MgKi8KLQlp ZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCisJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJ TlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRl eHRJbnRlcnJ1cHQoKTsKIH0KIApAQCAtMjQxLDcgKzIzNyw3IEBAIFN0YXJ0dXBQcm9jZXNz TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVu KQogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQgdXAgYnkgSW5pdFBvc3Rt YXN0ZXJDaGlsZCAqLwogCUluaXRpYWxpemVUaW1lb3V0cygpOwkJLyogZXN0YWJsaXNoZXMg U0lHQUxSTSBoYW5kbGVyICovCiAJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFz aWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCXBxc2lnbmFs KFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VTUjIsIFN0YXJ0dXBQcm9jVHJp Z2dlckhhbmRsZXIpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvc3lzbG9nZ2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dlci5jCmlu ZGV4IGM0YzA0YWU4NmQ0Li5lMTA5Nzc4NjliNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9zeXNsb2dnZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5 c2xvZ2dlci5jCkBAIC0zMzcsNyArMzM3LDEwIEBAIFN5c0xvZ2dlck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkgKiAoaW5jbHVk aW5nIHRoZSBwb3N0bWFzdGVyKS4KIAkgKi8KIAl3ZXMgPSBDcmVhdGVXYWl0RXZlbnRTZXQo TlVMTCwgMik7Ci0JQWRkV2FpdEV2ZW50VG9TZXQod2VzLCBXTF9JTlRFUlJVUFQsIFBHSU5W QUxJRF9TT0NLRVQsIElOVEVSUlVQVF9HRU5FUkFMLCBOVUxMKTsKKwlBZGRXYWl0RXZlbnRU b1NldCh3ZXMsIFdMX0lOVEVSUlVQVCwgUEdJTlZBTElEX1NPQ0tFVCwKKwkJCQkJICBJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCSAgSU5URVJSVVBUX0dFTkVSQUwsIC8qIGZv ciBsb2cgcm90YXRpb24gKi8KKwkJCQkJICBOVUxMKTsKICNpZm5kZWYgV0lOMzIKIAlBZGRX YWl0RXZlbnRUb1NldCh3ZXMsIFdMX1NPQ0tFVF9SRUFEQUJMRSwgc3lzbG9nUGlwZVswXSwg MCwgTlVMTCk7CiAjZW5kaWYKQEAgLTM2MCw5ICszNjMsOCBAQCBTeXNMb2dnZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCS8q CiAJCSAqIFByb2Nlc3MgYW55IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50 bHkuCiAJCSAqLwotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJ bnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsK IAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFy aXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXgg MzM4MTc2NzE0OWQuLjUxYjJiNmQ5ZGQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHN1bW1hcml6ZXIuYwpAQCAtMjUwLDcgKzI1MCw3IEBAIFdhbFN1bW1hcml6ZXJNYWluKGNv bnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJLyog U0lHUVVJVCBoYW5kbGVyIHdhcyBhbHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNo aWxkICovCiAJcHFzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHUElQ RSwgU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VT UjIsIFNJR19JR04pOyAvKiBub3QgdXNlZCAqLwogCiAJLyogQWR2ZXJ0aXNlIG91cnNlbHZl cy4gKi8KQEAgLTMxNSw3ICszMTUsMTIgQEAgV2FsU3VtbWFyaXplck1haW4oY29uc3Qgdm9p ZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJICogU28gYSBy ZWFsbHkgZmFzdCByZXRyeSB0aW1lIGRvZXNuJ3Qgc2VlbSB0byBiZSBlc3BlY2lhbGx5CiAJ CSAqIGJlbmVmaWNpYWwsIGFuZCBpdCB3aWxsIGNsdXR0ZXIgdGhlIGxvZ3MuCiAJCSAqLwot CQkodm9pZCkgV2FpdEludGVycnVwdCgwLCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMTAwMDAsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM IHwKKwkJCQkJCQkgSU5URVJSVVBUX0JBUlJJRVIgfAorCQkJCQkJCSBJTlRFUlJVUFRfQ09O RklHX1JFTE9BRCB8CisJCQkJCQkJIElOVEVSUlVQVF9TSFVURE9XTl9BVVggfAorCQkJCQkJ CSBJTlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhULAorCQkJCQkJCSBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSCwgMTAwMDAsCiAJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1NV TU1BUklaRVJfRVJST1IpOwogCX0KIApAQCAtODU1LDE2ICs4NjAsMTMgQEAgR2V0TGF0ZXN0 TFNOKFRpbWVMaW5lSUQgKnRsaSkKIHN0YXRpYyB2b2lkCiBQcm9jZXNzV2FsU3VtbWFyaXpl ckludGVycnVwdHModm9pZCkKIHsKLQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQor CWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0JBUlJJRVIpKQogCQlQcm9jZXNz UHJvY1NpZ25hbEJhcnJpZXIoKTsKIAotCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQotCXsK LQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCWlmIChDb25zdW1lSW50ZXJydXB0 KElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJ R0hVUCk7Ci0JfQogCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcgfHwgIXN1bW1hcml6 ZV93YWwpCisJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfU0hVVERPV05fQVVY KSB8fCAhc3VtbWFyaXplX3dhbCkKIAl7CiAJCWVyZXBvcnQoREVCVUcxLAogCQkJCWVycm1z Z19pbnRlcm5hbCgiV0FMIHN1bW1hcml6ZXIgc2h1dHRpbmcgZG93biIpKTsKQEAgLTg3Miw3 ICs4NzQsNyBAQCBQcm9jZXNzV2FsU3VtbWFyaXplckludGVycnVwdHModm9pZCkKIAl9CiAK IAkvKiBQZXJmb3JtIGxvZ2dpbmcgb2YgbWVtb3J5IGNvbnRleHRzIG9mIHRoaXMgcHJvY2Vz cyAqLwotCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1cHRQ ZW5kaW5nKElOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlQcm9jZXNzTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCgpOwogfQogCkBAIC0xNjM4LDcgKzE2NDAsMTEgQEAgc3Vt bWFyaXplcl93YWl0X2Zvcl93YWwodm9pZCkKIAlwZ3N0YXRfcmVwb3J0X3dhbChmYWxzZSk7 CiAKIAkvKiBPSywgbm93IHNsZWVwLiAqLwotCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9HRU5FUkFMLAorCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM IHwKKwkJCQkJCSBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJCSBJTlRFUlJVUFRf Q09ORklHX1JFTE9BRCB8CisJCQkJCQkgSU5URVJSVVBUX0JBUlJJRVIgfAorCQkJCQkJIElO VEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQsCiAJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCQkgc2xlZXBfcXVhbnRhICog TVNfUEVSX1NMRUVQX1FVQU5UVU0sCiAJCQkJCQkgV0FJVF9FVkVOVF9XQUxfU1VNTUFSSVpF Ul9XQUwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWx3cml0ZXIu YyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKaW5kZXggYWUwOTc0NzIy MDAuLjM0MWE0YTUzMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHdyaXRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsd3JpdGVyLmMKQEAg LTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKLSNpbmNsdWRlICJz dG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNs dWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAg LTEwOCw3ICsxMDcsNyBAQCBXYWxXcml0ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJLyogU0lHUVVJVCBoYW5kbGVyIHdhcyBh bHJlYWR5IHNldCB1cCBieSBJbml0UG9zdG1hc3RlckNoaWxkICovCiAJcHFzaWduYWwoU0lH QUxSTSwgU0lHX0lHTik7CiAJcHFzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0JcHFzaWdu YWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIpOworCXBxc2lnbmFsKFNJ R1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOyAvKiBub3Qg dXNlZCAqLwogCiAJLyoKQEAgLTIzNSw5ICsyMzQsNiBAQCBXYWxXcml0ZXJNYWluKGNvbnN0 IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pCiAJCQlTZXRX YWxXcml0ZXJTbGVlcGluZyhoaWJlcm5hdGluZyk7CiAJCX0KIAotCQkvKiBDbGVhciBhbnkg YWxyZWFkeS1wZW5kaW5nIHdha2V1cHMgKi8KLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBU X0dFTkVSQUwpOwotCiAJCS8qIFByb2Nlc3MgYW55IHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50 bHkgKi8KIAkJUHJvY2Vzc01haW5Mb29wSW50ZXJydXB0cygpOwogCkBAIC0yNjMsNyArMjU5 LDcgQEAgV2FsV3JpdGVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCQllbHNlCiAJCQljdXJfdGltZW91dCA9IFdhbFdyaXRlckRl bGF5ICogSElCRVJOQVRFX0ZBQ1RPUjsKIAotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX01BSU5f TE9PUF9NQVNLLAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJ VF9PTl9QTV9ERUFUSCwKIAkJCQkJCQkgY3VyX3RpbWVvdXQsCiAJCQkJCQkJIFdBSVRfRVZF TlRfV0FMX1dSSVRFUl9NQUlOKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXgg YWFhMTJjY2RiZDAuLjM3MDRlNzYyYzNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIu YwpAQCAtMjM3LDcgKzIzNyw4IEBAIGxpYnBxcmN2X2Nvbm5lY3QoY29uc3QgY2hhciAqY29u bmluZm8sIGJvb2wgcmVwbGljYXRpb24sIGJvb2wgbG9naWNhbCwKIAkJZWxzZQogCQkJaW9f ZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJcmMgPSBXYWl0SW50ZXJydXB0T3JT b2NrZXQoSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0 KElOVEVSUlVQVF9DRklfTUFTSygpIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX1NIVVRET1dO X0FVWCwKIAkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX0lOVEVSUlVQVCB8 IGlvX2ZsYWcsCiAJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4tPnN0cmVhbUNvbm4pLAogCQkJ CQkJCQkgICAwLApAQCAtMjQ1LDEwICsyNDYsNyBAQCBsaWJwcXJjdl9jb25uZWN0KGNvbnN0 IGNoYXIgKmNvbm5pbmZvLCBib29sIHJlcGxpY2F0aW9uLCBib29sIGxvZ2ljYWwsCiAKIAkJ LyogSW50ZXJydXB0ZWQ/ICovCiAJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKLQkJewotCQkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dhbFJjdklu dGVycnVwdHMoKTsKLQkJfQogCiAJCS8qIElmIHNvY2tldCBpcyByZWFkeSwgYWR2YW5jZSB0 aGUgbGlicHEgc3RhdGUgbWFjaGluZSAqLwogCQlpZiAocmMgJiBpb19mbGFnKQpAQCAtODQ4 LDcgKzg0Niw4IEBAIGxpYnBxcmN2X1BRZ2V0UmVzdWx0KFBHY29ubiAqc3RyZWFtQ29ubikK IAkJICogc2luY2Ugd2UnbGwgZ2V0IGludGVycnVwdGVkIGJ5IHNpZ25hbHMgYW5kIGNhbiBo YW5kbGUgYW55CiAJCSAqIGludGVycnVwdHMgaGVyZS4KIAkJICovCi0JCXJjID0gV2FpdElu dGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1 cHRPclNvY2tldChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8CisJCQkJCQkJCSAgIElOVEVSUlVQ VF9TSFVURE9XTl9BVVgsCiAJCQkJCQkJCSAgIFdMX0VYSVRfT05fUE1fREVBVEggfCBXTF9T T0NLRVRfUkVBREFCTEUgfAogCQkJCQkJCQkgICBXTF9JTlRFUlJVUFQsCiAJCQkJCQkJCSAg IFBRc29ja2V0KHN0cmVhbUNvbm4pLApAQCAtODU3LDEwICs4NTYsNyBAQCBsaWJwcXJjdl9Q UWdldFJlc3VsdChQR2Nvbm4gKnN0cmVhbUNvbm4pCiAKIAkJLyogSW50ZXJydXB0ZWQ/ICov CiAJCWlmIChyYyAmIFdMX0lOVEVSUlVQVCkKLQkJewotCQkJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwogCQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKLQkJfQog CiAJCS8qIENvbnN1bWUgd2hhdGV2ZXIgZGF0YSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgc29j a2V0ICovCiAJCWlmIChQUWNvbnN1bWVJbnB1dChzdHJlYW1Db25uKSA9PSAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwppbmRleCAxNzZkZWI0MDZjNi4uOTNlZWFlZGEwYjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCkBAIC0yMzgsMTIgKzIzOCw2IEBAIHN0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29y a2VyUG9vbCA9IE5JTDsKICAqLwogUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJh bGxlbFNoYXJlZCA9IE5VTEw7CiAKLS8qCi0gKiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBi eSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKLSAqIHdv cmtlciBuZWVkcyB0byByZWNlaXZlPwotICovCi12b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFy YWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7Ci0KIC8qCiAgKiBDYWNoZSB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBseWlu ZyB0aGUKICAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRv IHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQpAQCAtNzEzLDcgKzcwNyw3IEBAIFBy b2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQogewogCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CiAKLQlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwlpZiAoSXNJbnRl cnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9TSFVURE9XTl9BVVgpKQogCXsKIAkJZXJlcG9ydChM T0csCiAJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwKQEAgLTcyMiwx MSArNzE2LDggQEAgUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCiAJCXBy b2NfZXhpdCgwKTsKIAl9CiAKLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQl7Ci0JCUNv bmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRF UlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVAp OwotCX0KIH0KIAogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KQEAg LTgwNCw3ICs3OTUsMTAgQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5k bGUgKm1xaCkKIAkJCQlpbnQJCQlyYzsKIAogCQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4g Ki8KLQkJCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJcmMg PSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpIHwKKwkJCQkJCQkJICAgSU5U RVJSVVBUX1NIVVRET1dOX0FVWCB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdfUkVM T0FEIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJCSAgIFdMX0lO VEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkg ICAxMDAwTCwKIAkJCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X01BSU4pOwpAQCAtODQzLDkgKzgzNyw4IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChz aG1fbXFfaGFuZGxlICptcWgpCiBzdGF0aWMgdm9pZAogcGFfc2h1dGRvd24oaW50IGNvZGUs IERhdHVtIGFyZykKIHsKLQlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmxl YWRlcl9waWQsCi0JCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAotCQkJ CSAgIElOVkFMSURfUFJPQ19OVU1CRVIpOworCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1BB UkFMTEVMX0FQUExZX01FU1NBR0UsCisJCQkJICBNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRl cl9wZ3Byb2Nubyk7CiAKIAlkc21fZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBv aW50ZXIoYXJnKSk7CiB9CkBAIC05MzMsOCArOTI2LDcgQEAgUGFyYWxsZWxBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwg c2VnLCBOVUxMKTsKIAogCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7 Ci0JcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmxlYWRlcl9w aWQsCi0JCQkJCQkgICBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlwcV9zZXRfcGFyYWxsZWxf bGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+bGVhZGVyX3BncHJvY25vKTsKIAogCU15TG9n aWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3RfcmVjdl90aW1lID0KIAkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsK QEAgLTk3OCwyMSArOTcwLDYgQEAgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJQXNzZXJ0KGZhbHNlKTsKIH0KIAotLyoKLSAqIEhhbmRsZSByZWNlaXB0IG9m IGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3Nh Z2UuCi0gKgotICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRs ZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEgZmxhZwotICogdGhhdCB3aWxsIGNhdXNlIHRo ZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gaW52b2tlCi0gKiBQcm9jZXNzUGFy YWxsZWxBcHBseU1lc3NhZ2VzKCkuCi0gKi8KLXZvaWQKLUhhbmRsZVBhcmFsbGVsQXBwbHlN ZXNzYWdlSW50ZXJydXB0KHZvaWQpCi17Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7Ci0J UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7Ci19Ci0KIC8qCiAgKiBQcm9jZXNzIGEgc2luZ2xlIHByb3Rv Y29sIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQogICog d29ya2VyLgpAQCAtMTA1Nyw3ICsxMDM0LDcgQEAgUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNz YWdlKFN0cmluZ0luZm8gbXNnKQogfQogCiAvKgotICogSGFuZGxlIGFueSBxdWV1ZWQgcHJv dG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgor ICogUHJvY2VzcyBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20g cGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAqLwogdm9pZAogUHJvY2Vzc1BhcmFsbGVsQXBw bHlNZXNzYWdlcyh2b2lkKQpAQCAtMTA5MCw3ICsxMDY3LDcgQEAgUHJvY2Vzc1BhcmFsbGVs QXBwbHlNZXNzYWdlcyh2b2lkKQogCiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhocGFtX2NvbnRleHQpOwogCi0JUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0g ZmFsc2U7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1BBUkFMTEVMX0FQUExZX01FU1NB R0UpOwogCiAJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCiAJewpAQCAt MTE4MiwxNSArMTE1OSwxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAkJQXNzZXJ0KHJl c3VsdCA9PSBTSE1fTVFfV09VTERfQkxPQ0spOwogCiAJCS8qIFdhaXQgYmVmb3JlIHJldHJ5 aW5nLiAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCXJj ID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5F UkFMLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCiAJCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKIAkJCQkJ CSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9TRU5EX0RBVEEpOwogCiAJCWlmIChyYyAm IFdMX0lOVEVSUlVQVCkKIAkJewotCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCUNsZWFySW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKIAkJfQogCiAJCWlmIChzdGFydFRpbWUgPT0gMCkKQEAgLTEy NTQsMTYgKzEyMzEsMTYgQEAgcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sCiAJCQlicmVhazsKIAogCQkvKiBXYWl0IHRvIGJlIHNpZ25h bGxlZC4gKi8KLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJ CSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpIHwgSU5URVJSVVBU X0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAogCQkJCQkJCSAxMEwsCiAJCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNB TF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOwogCi0JCS8qIENsZWFyIHRoZSBpbnRl cnJ1cHQgZmxhZyBzbyB3ZSBkb24ndCBzcGluLiAqLwotCQlDbGVhckludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7Ci0KIAkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVk IHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK KworCQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8K KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDE2ODExMmEz MjIwLi43NjYyMGM4MGNmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYwpAQCAtMjEzLDE0ICsyMTMsMTQgQEAgV2FpdEZvclJlcGxpY2F0aW9u V29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJICogaW50ZXJydXB0 IGFib3V0IHRoZSB3b3JrZXIgYXR0YWNoLiAgQnV0IHdlIGRvbid0IGV4cGVjdCB0byBoYXZl IHRvCiAJCSAqIHdhaXQgbG9uZy4KIAkJICovCi0JCXJjID0gV2FpdEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFT SygpIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIDEwTCwgV0FJVF9FVkVO VF9CR1dPUktFUl9TVEFSVFVQKTsKIAogCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsK LQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJ CX0KIAl9CiB9CkBAIC00NDEsNiArNDQxLDcgQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0 ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0g TlVMTDsKIAl3b3JrZXItPmxlYWRlcl9waWQgPSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXIg PyBNeVByb2NQaWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+bGVhZGVyX3BncHJvY25vID0g aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jTnVtYmVyIDogSU5WQUxJRF9QUk9D X05VTUJFUjsKIAl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBwbHlf d29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1F U1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKQEAgLTUyMSw3ICs1MjIs NyBAQCByZXRyeToKICAqIHNsb3QuCiAgKi8KIHN0YXRpYyB2b2lkCi1sb2dpY2FscmVwX3dv cmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25v KQorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsIGludCBpbnRlcnJ1cHQpCiB7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCkBAIC01 NDQsMTQgKzU0NSwxNCBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2lj YWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKIAogCQkvKiBXYWl0IGEgYml0IC0tLSB3ZSBkb24ndCBleHBl Y3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcuICovCi0JCXJjID0gV2FpdEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFT SygpIHwgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9U SU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIDEwTCwgV0FJVF9FVkVO VF9CR1dPUktFUl9TVEFSVFVQKTsKIAogCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsK LQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJ CX0KIAogCQkvKiBSZWNoZWNrIHdvcmtlciBzdGF0dXMuICovCkBAIC01NzEsNyArNTcyLDcg QEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsIGludCBzaWdubykKIAl9CiAKIAkvKiBOb3cgdGVybWluYXRlIHRoZSB3b3JrZXIg Li4uICovCi0Ja2lsbCh3b3JrZXItPnByb2MtPnBpZCwgc2lnbm8pOworCVNlbmRJbnRlcnJ1 cHQoaW50ZXJydXB0LCBHZXROdW1iZXJGcm9tUEdQcm9jKHdvcmtlci0+cHJvYykpOwogCiAJ LyogLi4uIGFuZCB3YWl0IGZvciBpdCB0byBkaWUuICovCiAJZm9yICg7OykKQEAgLTU4NSwx NCArNTg2LDE0IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJl cFdvcmtlciAqd29ya2VyLCBpbnQgc2lnbm8pCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOwogCiAJCS8qIFdhaXQgYSBiaXQgLS0tIHdlIGRvbid0IGV4cGVjdCB0 byBoYXZlIHRvIHdhaXQgbG9uZy4gKi8KLQkJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVSUlVQ VF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkg fCBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQVCB8IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgMTBMLCBXQUlUX0VWRU5UX0JH V09SS0VSX1NIVVRET1dOKTsKIAogCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJ CUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCX0K IAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwpA QCAtNjE0LDcgKzYxNSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBP aWQgcmVsaWQpCiAJaWYgKHdvcmtlcikKIAl7CiAJCUFzc2VydCghaXNQYXJhbGxlbEFwcGx5 V29ya2VyKHdvcmtlcikpOwotCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdv cmtlciwgU0lHVEVSTSk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29y a2VyLCBJTlRFUlJVUFRfRElFKTsKIAl9CiAKIAlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBX b3JrZXJMb2NrKTsKQEAgLTY2MSwxMyArNjYyLDE0IEBAIGxvZ2ljYWxyZXBfcGFfd29ya2Vy X3N0b3AoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCSAqIE9ubHkgc3RvcCB0 aGUgd29ya2VyIGlmIHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMg YWxpdmUuCiAJICovCiAJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYm IHdvcmtlci0+cHJvYykKLQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3Jr ZXIsIFNJR0lOVCk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2Vy LCBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOwogfQogCiAvKgotICogV2FrZSB1cCAodXNpbmcgaW50ZXJydXB0KSBh bnkgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHNwZWNpZmllZCBzdWIvcmVsLgor ICogV2FrZSB1cCAodXNpbmcgSU5URVJSVVBUX0dFTkVSQUwpIGFueSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3IKKyAqIHNwZWNpZmllZCBzdWIvcmVsLgogICovCiB2b2lkCiBs b2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCkBAIC03NjIs NyArNzY0LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiAJCQlMb2dpY2Fs UmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKIAogCQkJ aWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKLQkJCQlsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKHcsIFNJR1RFUk0pOworCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Bf aW50ZXJuYWwodywgSU5URVJSVVBUX0RJRSk7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTc5Miw2ICs3OTQsNyBAQCBsb2dpY2FscmVwX3dv cmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnN1Ymlk ID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXIt PmxlYWRlcl9waWQgPSBJbnZhbGlkUGlkOworCXdvcmtlci0+bGVhZGVyX3BncHJvY25vID0g SU5WQUxJRF9QUk9DX05VTUJFUjsKIAl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7 CiB9CiAKQEAgLTEyMTcsMjEgKzEyMjAsMjAgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0g bWFpbl9hcmcpCiAJCU1lbW9yeUNvbnRleHREZWxldGUoc3ViY3R4KTsKIAogCQkvKiBXYWl0 IGZvciBtb3JlIHdvcmsuICovCi0JCXJjID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCB8IElOVEVSUlVQVF9TVUJTQ1JJUFRJT05fQ0hBTkdFLAorCQlyYyA9IFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkgfAorCQkJCQkJICAgSU5URVJSVVBUX0NPTkZJ R19SRUxPQUQgfAorCQkJCQkJICAgSU5URVJSVVBUX1NVQlNDUklQVElPTl9DSEFOR0UgfAor CQkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBX TF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJCSAgIHdhaXRfdGltZSwK IAkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOKTsKIAogCQlpZiAo cmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7Ci0JCX0KLQotCQlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OwotCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCQlpZiAoQ29uc3VtZUlu dGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCisJCQkJUHJvY2Vzc0NvbmZpZ0Zp bGUoUEdDX1NJR0hVUCk7CisJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5 bmMuYwppbmRleCAwOWIyZDBkMTgxZS4uNGU1NjQ3NTIwMDMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTcyLDkgKzcyLDkgQEAKIC8q CiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gdG8gY29udHJvbCBzbG90IHN5 bmNocm9uaXphdGlvbi4KICAqCi0gKiBUaGUgc2xvdCBzeW5jIHdvcmtlcidzIHBpZCBpcyBu ZWVkZWQgYnkgdGhlIHN0YXJ0dXAgcHJvY2VzcyB0byBzaHV0IGl0Ci0gKiBkb3duIGR1cmlu ZyBwcm9tb3Rpb24uIFRoZSBzdGFydHVwIHByb2Nlc3Mgc2h1dHMgZG93biB0aGUgc2xvdCBz eW5jIHdvcmtlcgotICogYW5kIGFsc28gc2V0cyBzdG9wU2lnbmFsZWQ9dHJ1ZSB0byBoYW5k bGUgdGhlIHJhY2UgY29uZGl0aW9uIHdoZW4gdGhlCisgKiBUaGUgc2xvdCBzeW5jIHdvcmtl cidzIHByb2MgbnVtYmVyIGlzIG5lZWRlZCBieSB0aGUgc3RhcnR1cCBwcm9jZXNzIHRvIHNo dXQKKyAqIGl0IGRvd24gZHVyaW5nIHByb21vdGlvbi4gVGhlIHN0YXJ0dXAgcHJvY2VzcyBz aHV0cyBkb3duIHRoZSBzbG90IHN5bmMKKyAqIHdvcmtlciBhbmQgYWxzbyBzZXRzIHN0b3BT aWduYWxlZD10cnVlIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gd2hlbiB0aGUKICAq IHBvc3RtYXN0ZXIgaGFzIG5vdCBub3RpY2VkIHRoZSBwcm9tb3Rpb24geWV0IGFuZCB0aHVz IG1heSBlbmQgdXAgcmVzdGFydGluZwogICogdGhlIHNsb3Qgc3luYyB3b3JrZXIuIElmIHN0 b3BTaWduYWxlZCBpcyBzZXQsIHRoZSB3b3JrZXIgd2lsbCBleGl0IGluIHN1Y2ggYQogICog Y2FzZS4gVGhlIFNRTCBmdW5jdGlvbiBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCkgd2ls bCBhbHNvIGVycm9yIG91dCBpZgpAQCAtOTQsNyArOTQsNyBAQAogICovCiB0eXBlZGVmIHN0 cnVjdCBTbG90U3luY0N0eFN0cnVjdAogewotCXBpZF90CQlwaWQ7CisJUHJvY051bWJlcglw cm9jbm87CiAJYm9vbAkJc3RvcFNpZ25hbGVkOwogCWJvb2wJCXN5bmNpbmc7CiAJdGltZV90 CQlsYXN0X3N0YXJ0X3RpbWU7CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBzbG90c3luY19yZXJl YWRfY29uZmlnKHZvaWQpCiAKIAlBc3NlcnQoc3luY19yZXBsaWNhdGlvbl9zbG90cyk7CiAK LQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0NPTkZJR19SRUxPQUQpOwogCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwog CiAJY29ubmluZm9fY2hhbmdlZCA9IHN0cmNtcChvbGRfcHJpbWFyeV9jb25uaW5mbywgUHJp bWFyeUNvbm5JbmZvKSAhPSAwOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgUHJvY2Vzc1Nsb3RT eW5jSW50ZXJydXB0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIHsKIAlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCi0JaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJaWYgKElz SW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfRElFKSkKIAl7CiAJCWVyZXBvcnQoTE9HLAog CQkJCWVycm1zZygicmVwbGljYXRpb24gc2xvdCBzeW5jaHJvbml6YXRpb24gd29ya2VyIGlz IHNodXR0aW5nIGRvd24gb24gcmVjZWl2aW5nIFNJR0lOVCIpKTsKQEAgLTExNjIsNyArMTE2 Miw3IEBAIFByb2Nlc3NTbG90U3luY0ludGVycnVwdHMoV2FsUmVjZWl2ZXJDb25uICp3cmNv bm4pCiAJCXByb2NfZXhpdCgwKTsKIAl9CiAKLQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykK KwlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9DT05GSUdfUkVMT0FEKSkKIAkJ c2xvdHN5bmNfcmVyZWFkX2NvbmZpZygpOwogfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBz bG90c3luY193b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAKIAlTcGluTG9j a0FjcXVpcmUoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKLQlTbG90U3luY0N0eC0+cGlkID0g SW52YWxpZFBpZDsKKwlTbG90U3luY0N0eC0+cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKIAogCS8qCiAJICogSWYgc3luY2luZ19zbG90cyBpcyB0cnVlLCBpdCBpbmRpY2F0ZXMg dGhhdCB0aGUgcHJvY2VzcyBlcnJvcmVkIG91dApAQCAtMTI1Miw3ICsxMjUyLDkgQEAgd2Fp dF9mb3Jfc2xvdF9hY3Rpdml0eShib29sIHNvbWVfc2xvdF91cGRhdGVkKQogCQlzbGVlcF9t cyA9IE1JTl9TTE9UU1lOQ19XT1JLRVJfTkFQVElNRV9NUzsKIAl9CiAKLQlyYyA9IFdhaXRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJcmMgPSBXYWl0SW50ZXJydXB0KElOVEVS UlVQVF9DRklfTUFTSygpIHwKKwkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwgfAorCQkJCQkg ICBJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCwKIAkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xf VElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJCQkJCSAgIHNsZWVwX21zLAogCQkJ CQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX01BSU4pOwpAQCAtMTI2Niwx MiArMTI2OCwxMiBAQCB3YWl0X2Zvcl9zbG90X2FjdGl2aXR5KGJvb2wgc29tZV9zbG90X3Vw ZGF0ZWQpCiAgKiBPdGhlcndpc2UsIGFkdmVydGlzZSB0aGF0IGEgc3luYyBpcyBpbiBwcm9n cmVzcy4KICAqLwogc3RhdGljIHZvaWQKLWNoZWNrX2FuZF9zZXRfc3luY19pbmZvKHBpZF90 IHdvcmtlcl9waWQpCitjaGVja19hbmRfc2V0X3N5bmNfaW5mbyhQcm9jTnVtYmVyIHdvcmtl cl9wcm9jbm8pCiB7CiAJU3BpbkxvY2tBY3F1aXJlKCZTbG90U3luY0N0eC0+bXV0ZXgpOwog CiAJLyogVGhlIHdvcmtlciBwaWQgbXVzdCBub3QgYmUgYWxyZWFkeSBhc3NpZ25lZCBpbiBT bG90U3luY0N0eCAqLwotCUFzc2VydCh3b3JrZXJfcGlkID09IEludmFsaWRQaWQgfHwgU2xv dFN5bmNDdHgtPnBpZCA9PSBJbnZhbGlkUGlkKTsKKwlBc3NlcnQod29ya2VyX3Byb2NubyA9 PSBJTlZBTElEX1BST0NfTlVNQkVSIHx8IFNsb3RTeW5jQ3R4LT5wcm9jbm8gPT0gSU5WQUxJ RF9QUk9DX05VTUJFUik7CiAKIAkvKgogCSAqIEVtaXQgYW4gZXJyb3IgaWYgc3RhcnR1cCBw cm9jZXNzIHNpZ25hbGVkIHRoZSBzbG90IHN5bmMgbWFjaGluZXJ5IHRvCkBAIC0xMjk2LDEw ICsxMjk4LDEwIEBAIGNoZWNrX2FuZF9zZXRfc3luY19pbmZvKHBpZF90IHdvcmtlcl9waWQp CiAJU2xvdFN5bmNDdHgtPnN5bmNpbmcgPSB0cnVlOwogCiAJLyoKLQkgKiBBZHZlcnRpc2Ug dGhlIHJlcXVpcmVkIFBJRCBzbyB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3MgY2FuIGtpbGwg dGhlCi0JICogc2xvdCBzeW5jIHdvcmtlciBvbiBwcm9tb3Rpb24uCisJICogQWR2ZXJ0aXNl IHRoZSByZXF1aXJlZCBwcm9jIG51bWJlciBzbyB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mg Y2FuIGtpbGwKKwkgKiB0aGUgc2xvdCBzeW5jIHdvcmtlciBvbiBwcm9tb3Rpb24uCiAJICov Ci0JU2xvdFN5bmNDdHgtPnBpZCA9IHdvcmtlcl9waWQ7CisJU2xvdFN5bmNDdHgtPnByb2Nu byA9IHdvcmtlcl9wcm9jbm87CiAKIAlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5t dXRleCk7CiAKQEAgLTEzOTEsMTYgKzEzOTMsMTYgQEAgUmVwbFNsb3RTeW5jV29ya2VyTWFp bihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQog CXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CiAJ cHFzaWduYWwoU0lHVEVSTSwgZGllKTsKIAlwcXNpZ25hbChTSUdGUEUsIEZsb2F0RXhjZXB0 aW9uSGFuZGxlcik7Ci0JcHFzaWduYWwoU0lHVVNSMSwgcHJvY3NpZ25hbF9zaWd1c3IxX2hh bmRsZXIpOworCXBxc2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1VT UjIsIFNJR19JR04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwogCXBxc2lnbmFs KFNJR0NITEQsIFNJR19ERkwpOwogCi0JY2hlY2tfYW5kX3NldF9zeW5jX2luZm8oTXlQcm9j UGlkKTsKKwljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhNeVByb2NOdW1iZXIpOwogCiAJZXJl cG9ydChMT0csIGVycm1zZygic2xvdCBzeW5jIHdvcmtlciBzdGFydGVkIikpOwogCi0JLyog UmVnaXN0ZXIgaXQgYXMgc29vbiBhcyBTbG90U3luY0N0eC0+cGlkIGlzIGluaXRpYWxpemVk LiAqLworCS8qIFJlZ2lzdGVyIGl0IGFzIHNvb24gYXMgU2xvdFN5bmNDdHgtPnByb2NubyBp cyBpbml0aWFsaXplZC4gKi8KIAliZWZvcmVfc2htZW1fZXhpdChzbG90c3luY193b3JrZXJf b25leGl0LCAoRGF0dW0pIDApOwogCiAJLyoKQEAgLTE1MjEsNyArMTUyMyw3IEBAIHVwZGF0 ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uodm9pZCkKIAkJcmV0dXJuOwogCiAJLyog VGhlIHNsb3Qgc3luYyB3b3JrZXIgb3IgU1FMIGZ1bmN0aW9uIG11c3RuJ3QgYmUgcnVubmlu ZyBieSBub3cgKi8KLQlBc3NlcnQoKFNsb3RTeW5jQ3R4LT5waWQgPT0gSW52YWxpZFBpZCkg JiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsKKwlBc3NlcnQoKFNsb3RTeW5jQ3R4LT5wcm9j bm8gPT0gSU5WQUxJRF9QUk9DX05VTUJFUikgJiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsK IAogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJF RCk7CiAKQEAgLTE1MzUsNyArMTUzNyw3IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3Rp dmVfc2luY2Uodm9pZCkKIAkJCUFzc2VydChTbG90SXNMb2dpY2FsKHMpKTsKIAogCQkJLyog VGhlIHNsb3QgbXVzdCBub3QgYmUgYWNxdWlyZWQgYnkgYW55IHByb2Nlc3MgKi8KLQkJCUFz c2VydChzLT5hY3RpdmVfcGlkID09IDApOworCQkJQXNzZXJ0KHMtPmFjdGl2ZV9wcm9jID09 IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJCQkvKiBVc2UgdGhlIHNhbWUgaW5hY3RpdmVf c2luY2UgdGltZSBmb3IgYWxsIHRoZSBzbG90cy4gKi8KIAkJCWlmIChub3cgPT0gMCkKQEAg LTE1NTgsNyArMTU2MCw3IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVfc2luY2Uo dm9pZCkKIHZvaWQKIFNodXREb3duU2xvdFN5bmModm9pZCkKIHsKLQlwaWRfdAkJd29ya2Vy X3BpZDsKKwlQcm9jTnVtYmVyCXdvcmtlcl9wcm9jbm87CiAKIAlTcGluTG9ja0FjcXVpcmUo JlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKQEAgLTE1NzUsMTIgKzE1NzcsMTMgQEAgU2h1dERv d25TbG90U3luYyh2b2lkKQogCQlyZXR1cm47CiAJfQogCi0Jd29ya2VyX3BpZCA9IFNsb3RT eW5jQ3R4LT5waWQ7CisJd29ya2VyX3Byb2NubyA9IFNsb3RTeW5jQ3R4LT5wcm9jbm87CiAK IAlTcGluTG9ja1JlbGVhc2UoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiAKLQlpZiAod29ya2Vy X3BpZCAhPSBJbnZhbGlkUGlkKQotCQlraWxsKHdvcmtlcl9waWQsIFNJR0lOVCk7CisJLyog WFhYOiB3ZSdyZSBub3QgaG9sZGluZyBhbnkgbG9ja3MgaGVyZS4gVGhlIFBHUFJPQyBjb3Vs ZCBnZXQgcmVjeWNsZWQgZm9yIGFub3RoZXIgYmFja2VuZCAqLworCWlmICh3b3JrZXJfcHJv Y25vICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBU X1FVRVJZX0NBTkNFTCwgd29ya2VyX3Byb2Nubyk7CiAKIAkvKiBXYWl0IGZvciBzbG90IHN5 bmMgdG8gZW5kICovCiAJZm9yICg7OykKQEAgLTE1ODgsMTQgKzE1OTEsMTQgQEAgU2h1dERv d25TbG90U3luYyh2b2lkKQogCQlpbnQJCQlyYzsKIAogCQkvKiBXYWl0IGEgYml0LCB3ZSBk b24ndCBleHBlY3QgdG8gaGF2ZSB0byB3YWl0IGxvbmcgKi8KLQkJcmMgPSBXYWl0SW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBU X0NGSV9NQVNLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwKIAkJCQkJCSAgIFdMX0lOVEVSUlVQ VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJICAgMTBMLCBX QUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOKTsKIAogCQlpZiAocmMg JiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCQlDbGVhckludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQlTcGluTG9ja0FjcXVpcmUoJlNsb3RTeW5j Q3R4LT5tdXRleCk7CkBAIC0xNjczLDcgKzE2NzYsNyBAQCBTbG90U3luY1NobWVtSW5pdCh2 b2lkKQogCWlmICghZm91bmQpCiAJewogCQltZW1zZXQoU2xvdFN5bmNDdHgsIDAsIHNpemUp OwotCQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwkJU2xvdFN5bmNDdHgtPnBy b2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmND dHgtPm11dGV4KTsKIAl9CiB9CkBAIC0xNzIzLDcgKzE3MjYsNyBAQCBTeW5jUmVwbGljYXRp b25TbG90cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubikKIHsKIAlQR19FTlNVUkVfRVJST1Jf Q0xFQU5VUChzbG90c3luY19mYWlsdXJlX2NhbGxiYWNrLCBQb2ludGVyR2V0RGF0dW0od3Jj b25uKSk7CiAJewotCQljaGVja19hbmRfc2V0X3N5bmNfaW5mbyhJbnZhbGlkUGlkKTsKKwkJ Y2hlY2tfYW5kX3NldF9zeW5jX2luZm8oSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAkJdmFs aWRhdGVfcmVtb3RlX2luZm8od3Jjb25uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZGM5MDc3YWRiNzUuLjVhOTM4ZDYxODI3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK QEAgLTIxMSw3ICsyMTEsNyBAQCB3YWl0X2Zvcl9yZWxhdGlvbl9zdGF0ZV9jaGFuZ2UoT2lk IHJlbGlkLCBjaGFyIGV4cGVjdGVkX3N0YXRlKQogCQlpZiAoIXdvcmtlcikKIAkJCWJyZWFr OwogCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkodm9p ZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5F UkFMLAogCQkJCQkJCSBXTF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9Q TV9ERUFUSCwKIAkJCQkJCQkgMTAwMEwsIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRF X0NIQU5HRSk7CiAKQEAgLTI2MSwxMCArMjYxLDEwIEBAIHdhaXRfZm9yX3dvcmtlcl9zdGF0 ZV9jaGFuZ2UoY2hhciBleHBlY3RlZF9zdGF0ZSkKIAkJCWJyZWFrOwogCiAJCS8qCi0JCSAq IFdhaXQuICBXZSBleHBlY3QgdG8gZ2V0IGFuIGludGVycnVwdCB3YWtldXAgZnJvbSB0aGUg YXBwbHkgd29ya2VyLAotCQkgKiBidXQgdXNlIGEgdGltZW91dCBpbiBjYXNlIGl0IGRpZXMg d2l0aG91dCBzZW5kaW5nIG9uZS4KKwkJICogV2FpdC4gIFdlIGV4cGVjdCB0byBnZXQgYW4g SU5URVJSVVBUX0dFTkVSQUwgd2FrZXVwIGZyb20gdGhlIGFwcGx5CisJCSAqIHdvcmtlciwg YnV0IHVzZSBhIHRpbWVvdXQgaW4gY2FzZSBpdCBkaWVzIHdpdGhvdXQgc2VuZGluZyBvbmUu CiAJCSAqLwotCQlyYyA9IFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCXJj ID0gV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5F UkFMLAogCQkJCQkJICAgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsCiAJCQkJCQkgICAxMDAwTCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RB VEVfQ0hBTkdFKTsKIApAQCAtNzc0LDEyICs3NzQsMTAgQEAgY29weV9yZWFkX2RhdGEodm9p ZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAJCS8qCiAJCSAqIFdhaXQg Zm9yIG1vcmUgZGF0YSBvciBpbnRlcnJ1cHQuCiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVy cnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkodm9pZCkgV2FpdEludGVycnVw dE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFTSygpLAogCQkJCQkJCQkJIFdMX1NPQ0tFVF9S RUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CiAJCQkJCQkJCQkgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCiAJCQkJCQkJCQkgZmQsIDEwMDBMLCBXQUlUX0VWRU5UX0xPR0lD QUxfU1lOQ19EQVRBKTsKLQotCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJfQogCiAJcmV0dXJuIGJ5dGVzcmVhZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCmluZGV4IGJiNTY2YzFlZTE5Li40YzEzNmU3M2E2MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zNjU0LDExICsz NjU0LDggQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQp CiAJCQkJCWludAkJCWM7CiAJCQkJCVN0cmluZ0luZm9EYXRhIHM7CiAKLQkJCQkJaWYgKENv bmZpZ1JlbG9hZFBlbmRpbmcpCi0JCQkJCXsKLQkJCQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKKwkJCQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19S RUxPQUQpKQogCQkJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCQkJCX0K IAogCQkJCQkvKiBSZXNldCB0aW1lb3V0LiAqLwogCQkJCQlsYXN0X3JlY3ZfdGltZXN0YW1w ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwpAQCAtMzc1Myw3ICszNzUwLDkgQEAgTG9naWNh bFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCWVsc2UKIAkJCXdh aXRfdGltZSA9IE5BUFRJTUVfUEVSX0NZQ0xFOwogCi0JCXJjID0gV2FpdEludGVycnVwdE9y U29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQlyYyA9IFdhaXRJbnRlcnJ1cHRPclNvY2tl dChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8CisJCQkJCQkJCSAgIElOVEVSUlVQVF9DT05GSUdf UkVMT0FEIHwKKwkJCQkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwsCiAJCQkJCQkJCSAgIFdM X1NPQ0tFVF9SRUFEQUJMRSB8IFdMX0lOVEVSUlVQVCB8CiAJCQkJCQkJCSAgIFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAogCQkJCQkJCQkgICBmZCwgd2FpdF90aW1lLApA QCAtMzc2MSwxNCArMzc2MCwxMCBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIg bGFzdF9yZWNlaXZlZCkKIAogCQlpZiAocmMgJiBXTF9JTlRFUlJVUFQpCiAJCXsKLQkJCUNs ZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7Ci0JCX0KLQotCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwotCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJ R0hVUCk7CisJCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCkpCisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCQlDbGVhckludGVy cnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCX0KIAogCQlpZiAocmMgJiBXTF9USU1FT1VU KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDcxOWU1MzFlYjkwLi41Y2U3Zjg4ZjIx NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMjI0LDYgKzIyNCw3IEBAIFJlcGxp Y2F0aW9uU2xvdHNTaG1lbUluaXQodm9pZCkKIAkJCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9 ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0aW9uX3Nsb3RzW2ldOwogCiAJCQkvKiBl dmVyeXRoaW5nIGVsc2UgaXMgemVyb2VkIGJ5IHRoZSBtZW1zZXQgYWJvdmUgKi8KKwkJCXNs b3QtPmFjdGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCVNwaW5Mb2NrSW5p dCgmc2xvdC0+bXV0ZXgpOwogCQkJTFdMb2NrSW5pdGlhbGl6ZSgmc2xvdC0+aW9faW5fcHJv Z3Jlc3NfbG9jaywKIAkJCQkJCQkgTFdUUkFOQ0hFX1JFUExJQ0FUSU9OX1NMT1RfSU8pOwpA QCAtNDAyLDcgKzQwMyw3IEBAIFJlcGxpY2F0aW9uU2xvdENyZWF0ZShjb25zdCBjaGFyICpu YW1lLCBib29sIGRiX3NwZWNpZmljLAogCSAqIGJlIGRvaW5nIHRoYXQuICBTbyBpdCdzIHNh ZmUgdG8gaW5pdGlhbGl6ZSB0aGUgc2xvdC4KIAkgKi8KIAlBc3NlcnQoIXNsb3QtPmluX3Vz ZSk7Ci0JQXNzZXJ0KHNsb3QtPmFjdGl2ZV9waWQgPT0gMCk7CisJQXNzZXJ0KHNsb3QtPmFj dGl2ZV9wcm9jID09IElOVkFMSURfUFJPQ19OVU1CRVIpOwogCiAJLyogZmlyc3QgaW5pdGlh bGl6ZSBwZXJzaXN0ZW50IGRhdGEgKi8KIAltZW1zZXQoJnNsb3QtPmRhdGEsIDAsIHNpemVv ZihSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW50RGF0YSkpOwpAQCAtNDQ0LDggKzQ0NSw4IEBA IFJlcGxpY2F0aW9uU2xvdENyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBib29sIGRiX3NwZWNp ZmljLAogCiAJLyogV2UgY2FuIG5vdyBtYXJrIHRoZSBzbG90IGFjdGl2ZSwgYW5kIHRoYXQg bWFrZXMgaXQgb3VyIHNsb3QuICovCiAJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 Ci0JQXNzZXJ0KHNsb3QtPmFjdGl2ZV9waWQgPT0gMCk7Ci0Jc2xvdC0+YWN0aXZlX3BpZCA9 IE15UHJvY1BpZDsKKwlBc3NlcnQoc2xvdC0+YWN0aXZlX3Byb2MgPT0gSU5WQUxJRF9QUk9D X05VTUJFUik7CisJc2xvdC0+YWN0aXZlX3Byb2MgPSBNeVByb2NOdW1iZXI7CiAJU3Bpbkxv Y2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAJTXlSZXBsaWNhdGlvblNsb3QgPSBzbG90Owog CkBAIC01NTksNyArNTYwLDcgQEAgdm9pZAogUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25z dCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCwgYm9vbCBlcnJvcl9pZl9pbnZhbGlkKQogewog CVJlcGxpY2F0aW9uU2xvdCAqczsKLQlpbnQJCQlhY3RpdmVfcGlkOworCVByb2NOdW1iZXIJ YWN0aXZlX3Byb2M7CiAKIAlBc3NlcnQobmFtZSAhPSBOVUxMKTsKIApAQCAtNjAwLDE1ICs2 MDEsMTUgQEAgcmV0cnk6CiAJCSAqIHRvIGluYWN0aXZlX3NpbmNlIGluIEludmFsaWRhdGVQ b3NzaWJseU9ic29sZXRlU2xvdC4KIAkJICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0 ZXgpOwotCQlpZiAocy0+YWN0aXZlX3BpZCA9PSAwKQotCQkJcy0+YWN0aXZlX3BpZCA9IE15 UHJvY1BpZDsKLQkJYWN0aXZlX3BpZCA9IHMtPmFjdGl2ZV9waWQ7CisJCWlmIChzLT5hY3Rp dmVfcHJvYyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQorCQkJcy0+YWN0aXZlX3Byb2MgPSBN eVByb2NOdW1iZXI7CisJCWFjdGl2ZV9wcm9jID0gcy0+YWN0aXZlX3Byb2M7CiAJCVJlcGxp Y2F0aW9uU2xvdFNldEluYWN0aXZlU2luY2UocywgMCwgZmFsc2UpOwogCQlTcGluTG9ja1Jl bGVhc2UoJnMtPm11dGV4KTsKIAl9CiAJZWxzZQogCXsKLQkJYWN0aXZlX3BpZCA9IE15UHJv Y1BpZDsKKwkJYWN0aXZlX3Byb2MgPSBNeVByb2NOdW1iZXI7CiAJCVJlcGxpY2F0aW9uU2xv dFNldEluYWN0aXZlU2luY2UocywgMCwgdHJ1ZSk7CiAJfQogCUxXTG9ja1JlbGVhc2UoUmVw bGljYXRpb25TbG90Q29udHJvbExvY2spOwpAQCAtNjE4LDcgKzYxOSw3IEBAIHJldHJ5Ogog CSAqIHdhaXQgdW50aWwgdGhlIG93bmluZyBwcm9jZXNzIHNpZ25hbHMgdXMgdGhhdCBpdCdz IGJlZW4gcmVsZWFzZWQsIG9yCiAJICogZXJyb3Igb3V0LgogCSAqLwotCWlmIChhY3RpdmVf cGlkICE9IE15UHJvY1BpZCkKKwlpZiAoYWN0aXZlX3Byb2MgIT0gTXlQcm9jTnVtYmVyKQog CXsKIAkJaWYgKCFub3dhaXQpCiAJCXsKQEAgLTYzMiw3ICs2MzMsNyBAQCByZXRyeToKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLAog CQkJCSBlcnJtc2coInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGlzIGFjdGl2ZSBmb3IgUElE ICVkIiwKLQkJCQkJCU5hbWVTdHIocy0+ZGF0YS5uYW1lKSwgYWN0aXZlX3BpZCkpKTsKKwkJ CQkJCU5hbWVTdHIocy0+ZGF0YS5uYW1lKSwgR2V0UEdQcm9jQnlOdW1iZXIoYWN0aXZlX3By b2MpLT5waWQpKSk7CiAJfQogCWVsc2UgaWYgKCFub3dhaXQpCiAJCUNvbmRpdGlvblZhcmlh YmxlQ2FuY2VsU2xlZXAoKTsgLyogbm8gc2xlZXAgbmVlZGVkIGFmdGVyIGFsbCAqLwpAQCAt NjkwLDcgKzY5MSw3IEBAIFJlcGxpY2F0aW9uU2xvdFJlbGVhc2Uodm9pZCkKIAlib29sCQlp c19sb2dpY2FsID0gZmFsc2U7IC8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAlUaW1lc3Rh bXBUeiBub3cgPSAwOwogCi0JQXNzZXJ0KHNsb3QgIT0gTlVMTCAmJiBzbG90LT5hY3RpdmVf cGlkICE9IDApOworCUFzc2VydChzbG90ICE9IE5VTEwgJiYgc2xvdC0+YWN0aXZlX3Byb2Mg IT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAlpZiAoYW1fd2Fsc2VuZGVyKQogCXsKQEAg LTczNiw3ICs3MzcsNyBAQCBSZXBsaWNhdGlvblNsb3RSZWxlYXNlKHZvaWQpCiAJCSAqIGRp c2Nvbm5lY3RpbmcsIGJ1dCB3YWtlIHVwIG90aGVycyB0aGF0IG1heSBiZSB3YWl0aW5nIGZv ciBpdC4KIAkJICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQlzbG90 LT5hY3RpdmVfcGlkID0gMDsKKwkJc2xvdC0+YWN0aXZlX3Byb2MgPSBJTlZBTElEX1BST0Nf TlVNQkVSOwogCQlSZXBsaWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKHNsb3QsIG5vdywg ZmFsc2UpOwogCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAkJQ29uZGl0aW9u VmFyaWFibGVCcm9hZGNhc3QoJnNsb3QtPmFjdGl2ZV9jdik7CkBAIC03ODgsNyArNzg5LDcg QEAgcmVzdGFydDoKIAkJCWNvbnRpbnVlOwogCiAJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0 ZXgpOwotCQlpZiAoKHMtPmFjdGl2ZV9waWQgPT0gTXlQcm9jUGlkICYmCisJCWlmICgocy0+ YWN0aXZlX3Byb2MgPT0gTXlQcm9jTnVtYmVyICYmCiAJCQkgKCFzeW5jZWRfb25seSB8fCBz LT5kYXRhLnN5bmNlZCkpKQogCQl7CiAJCQlBc3NlcnQocy0+ZGF0YS5wZXJzaXN0ZW5jeSA9 PSBSU19URU1QT1JBUlkpOwpAQCAtOTc2LDcgKzk3Nyw3IEBAIFJlcGxpY2F0aW9uU2xvdERy b3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KQogCQlib29sCQlmYWlsX3NvZnRseSA9IHNs b3QtPmRhdGEucGVyc2lzdGVuY3kgIT0gUlNfUEVSU0lTVEVOVDsKIAogCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJc2xvdC0+YWN0aXZlX3BpZCA9IDA7CisJCXNsb3Qt PmFjdGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5tdXRleCk7CiAKIAkJLyogd2FrZSB1cCBhbnlvbmUgd2FpdGluZyBvbiB0aGlz IHNsb3QgKi8KQEAgLTk5OCw3ICs5OTksNyBAQCBSZXBsaWNhdGlvblNsb3REcm9wUHRyKFJl cGxpY2F0aW9uU2xvdCAqc2xvdCkKIAkgKiBBbHNvIHdha2UgdXAgcHJvY2Vzc2VzIHdhaXRp bmcgZm9yIGl0LgogCSAqLwogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJv bExvY2ssIExXX0VYQ0xVU0lWRSk7Ci0Jc2xvdC0+YWN0aXZlX3BpZCA9IDA7CisJc2xvdC0+ YWN0aXZlX3Byb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCXNsb3QtPmluX3VzZSA9IGZh bHNlOwogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCUNv bmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0KCZzbG90LT5hY3RpdmVfY3YpOwpAQCAtMTI5Myw3 ICsxMjk0LDcgQEAgUmVwbGljYXRpb25TbG90c0NvdW50REJTbG90cyhPaWQgZGJvaWQsIGlu dCAqbnNsb3RzLCBpbnQgKm5hY3RpdmUpCiAJCS8qIGNvdW50IHNsb3RzIHdpdGggc3Bpbmxv Y2sgaGVsZCAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAkJKCpuc2xvdHMp Kys7Ci0JCWlmIChzLT5hY3RpdmVfcGlkICE9IDApCisJCWlmIChzLT5hY3RpdmVfcHJvYyAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQkJKCpuYWN0aXZlKSsrOwogCQlTcGluTG9ja1Jl bGVhc2UoJnMtPm11dGV4KTsKIAl9CkBAIC0xMzMxLDcgKzEzMzIsNyBAQCByZXN0YXJ0Ogog CXsKIAkJUmVwbGljYXRpb25TbG90ICpzOwogCQljaGFyCSAgICpzbG90bmFtZTsKLQkJaW50 CQkJYWN0aXZlX3BpZDsKKwkJUHJvY051bWJlcglhY3RpdmVfcHJvYzsKIAogCQlzID0gJlJl cGxpY2F0aW9uU2xvdEN0bC0+cmVwbGljYXRpb25fc2xvdHNbaV07CiAKQEAgLTEzNTMsMTEg KzEzNTQsMTEgQEAgcmVzdGFydDoKIAkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAJ CS8qIGNhbid0IGNoYW5nZSB3aGlsZSBSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayBpcyBo ZWxkICovCiAJCXNsb3RuYW1lID0gTmFtZVN0cihzLT5kYXRhLm5hbWUpOwotCQlhY3RpdmVf cGlkID0gcy0+YWN0aXZlX3BpZDsKLQkJaWYgKGFjdGl2ZV9waWQgPT0gMCkKKwkJYWN0aXZl X3Byb2MgPSBzLT5hY3RpdmVfcHJvYzsKKwkJaWYgKGFjdGl2ZV9wcm9jID09IElOVkFMSURf UFJPQ19OVU1CRVIpCiAJCXsKIAkJCU15UmVwbGljYXRpb25TbG90ID0gczsKLQkJCXMtPmFj dGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJCQlzLT5hY3RpdmVfcHJvYyA9IE15UHJvY051bWJl cjsKIAkJfQogCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKIApAQCAtMTM4MiwxMSAr MTM4MywxMSBAQCByZXN0YXJ0OgogCQkgKiBYWFg6IFdlIGNhbiBjb25zaWRlciBzaHV0dGlu ZyBkb3duIHRoZSBzbG90IHN5bmMgd29ya2VyIGJlZm9yZQogCQkgKiB0cnlpbmcgdG8gZHJv cCBzeW5jZWQgdGVtcG9yYXJ5IHNsb3RzIGhlcmUuCiAJCSAqLwotCQlpZiAoYWN0aXZlX3Bp ZCkKKwkJaWYgKGFjdGl2ZV9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLAogCQkJ CQkgZXJybXNnKCJyZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpcyBhY3RpdmUgZm9yIFBJRCAl ZCIsCi0JCQkJCQkJc2xvdG5hbWUsIGFjdGl2ZV9waWQpKSk7CisJCQkJCQkJc2xvdG5hbWUs IEdldFBHUHJvY0J5TnVtYmVyKGFjdGl2ZV9wcm9jKS0+cGlkKSkpOwogCiAJCS8qCiAJCSAq IFRvIGF2b2lkIGR1cGxpY2F0aW5nIFJlcGxpY2F0aW9uU2xvdERyb3BBY3F1aXJlZCgpIGFu ZCB0byBhdm9pZApAQCAtMTczNCw3ICsxNzM1LDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJewogCQlYTG9nUmVjUHRyCXJl c3RhcnRfbHNuOwogCQlOYW1lRGF0YQlzbG90bmFtZTsKLQkJaW50CQkJYWN0aXZlX3BpZCA9 IDA7CisJCVByb2NOdW1iZXIJYWN0aXZlX3Byb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOwog CQlSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlkYXRpb25fY2F1c2Ug PSBSU19JTlZBTF9OT05FOwogCQlUaW1lc3RhbXBUeiBub3cgPSAwOwogCQlsb25nCQlzbG90 X2lkbGVfc2VjcyA9IDA7CkBAIC0xODE3LDE3ICsxODE4LDE3IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2libGVfY2F1c2VzLAogCQl9CiAKIAkJc2xv dG5hbWUgPSBzLT5kYXRhLm5hbWU7Ci0JCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlkOwor CQlhY3RpdmVfcHJvYyA9IHMtPmFjdGl2ZV9wcm9jOwogCiAJCS8qCiAJCSAqIElmIHRoZSBz bG90IGNhbiBiZSBhY3F1aXJlZCwgZG8gc28gYW5kIG1hcmsgaXQgaW52YWxpZGF0ZWQKIAkJ ICogaW1tZWRpYXRlbHkuICBPdGhlcndpc2Ugd2UnbGwgc2lnbmFsIHRoZSBvd25pbmcgcHJv Y2VzcywgYmVsb3csIGFuZAogCQkgKiByZXRyeS4KIAkJICovCi0JCWlmIChhY3RpdmVfcGlk ID09IDApCisJCWlmIChhY3RpdmVfcHJvYyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQl7 CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7Ci0JCQlzLT5hY3RpdmVfcGlkID0gTXlQcm9j UGlkOworCQkJcy0+YWN0aXZlX3Byb2MgPSBNeVByb2NOdW1iZXI7CiAJCQlzLT5kYXRhLmlu dmFsaWRhdGVkID0gaW52YWxpZGF0aW9uX2NhdXNlOwogCiAJCQkvKgpAQCAtMTg2NCw4ICsx ODY1LDEwIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCh1aW50MzIgcG9zc2li bGVfY2F1c2VzLAogCQkJCQkJCQkmc2xvdF9pZGxlX3VzZWNzKTsKIAkJfQogCi0JCWlmIChh Y3RpdmVfcGlkICE9IDApCisJCWlmIChhY3RpdmVfcHJvYyAhPSBJTlZBTElEX1BST0NfTlVN QkVSKQogCQl7CisJCQlpbnQJCQlhY3RpdmVfcGlkOworCiAJCQkvKgogCQkJICogUHJlcGFy ZSB0aGUgc2xlZXAgb24gdGhlIHNsb3QncyBjb25kaXRpb24gdmFyaWFibGUgYmVmb3JlCiAJ CQkgKiByZWxlYXNpbmcgdGhlIGxvY2ssIHRvIGNsb3NlIGEgcG9zc2libGUgcmFjZSBjb25k aXRpb24gaWYgdGhlCkBAIC0xODczLDcgKzE4NzYsNiBAQCBJbnZhbGlkYXRlUG9zc2libHlP YnNvbGV0ZVNsb3QodWludDMyIHBvc3NpYmxlX2NhdXNlcywKIAkJCSAqLwogCQkJQ29uZGl0 aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmcy0+YWN0aXZlX2N2KTsKIAotCQkJTFdMb2Nr UmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7CiAJCQlyZWxlYXNlZF9sb2Nr ID0gdHJ1ZTsKIAogCQkJLyoKQEAgLTE4ODIsMzEgKzE4ODQsMzggQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJsZV9jYXVzZXMsCiAJCQkgKiBzaWdu YWxsaW5nIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlcmUgdG8gYmUgYSBsb29wIGluIHRo aXMKIAkJCSAqIHJvdXRpbmU7IG90aGVyd2lzZSB3ZSBjb3VsZCByZWx5IG9uIGNhbGxlcidz IHJlc3RhcnQgbG9vcC4pCiAJCQkgKgorCQkJICogSG9sZCB0aGUgbG9jayB3aGlsZSBkb2lu ZyB0aGlzLCB0byBwcmV2ZW50IHRoZSBQR1BST0MgZW50cnkKKwkJCSAqIGZyb20gYmVpbmcg cmVjeWNsZWQgd2hpbGUgd2UgZG8gdGhpczsgUEdQUk9DIHNsb3RzIGRvIGdldAorCQkJICog cmV1c2VkIHF1aWNrbHkuCisJCQkgKgogCQkJICogVGhlcmUgaXMgdGhlIHJhY2UgY29uZGl0 aW9uIHRoYXQgb3RoZXIgcHJvY2VzcyBtYXkgb3duIHRoZSBzbG90CiAJCQkgKiBhZnRlciBp dHMgY3VycmVudCBvd25lciBwcm9jZXNzIGlzIHRlcm1pbmF0ZWQgYW5kIGJlZm9yZSB0aGlz CiAJCQkgKiBwcm9jZXNzIG93bnMgaXQuIFRvIGhhbmRsZSB0aGF0LCB3ZSBzaWduYWwgb25s eSBpZiB0aGUgUElEIG9mCiAJCQkgKiB0aGUgb3duaW5nIHByb2Nlc3MgaGFzIGNoYW5nZWQg ZnJvbSB0aGUgcHJldmlvdXMgdGltZS4gKFRoaXMKIAkJCSAqIGxvZ2ljIGFzc3VtZXMgdGhh dCB0aGUgc2FtZSBQSUQgaXMgbm90IHJldXNlZCB2ZXJ5IHF1aWNrbHkuKQogCQkJICovCisJ CQlhY3RpdmVfcGlkID0gR2V0UEdQcm9jQnlOdW1iZXIoYWN0aXZlX3Byb2MpLT5waWQ7CiAJ CQlpZiAobGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQlSZXBv cnRTbG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1ZSwgYWN0aXZlX3Bp ZCwKKwkJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgdHJ1 ZSwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVz dGFydF9sc24sCiAJCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uLAogCQkJCQkJCQkJICAgc2xvdF9pZGxlX3NlY3MpOwogCiAJCQkJaWYgKE15QmFja2Vu ZFR5cGUgPT0gQl9TVEFSVFVQKQotCQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZl X3BpZCwKLQkJCQkJCQkJCQkgIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QsCi0JCQkJCQkJCQkJICBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJCQkJU2VuZEludGVy cnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsCisJCQkJCQkJ CSAgYWN0aXZlX3Byb2MpOwogCQkJCWVsc2UKLQkJCQkJKHZvaWQpIGtpbGwoYWN0aXZlX3Bp ZCwgU0lHVEVSTSk7CisJCQkJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX0RJRSwgYWN0aXZl X3Byb2MpOwogCiAJCQkJbGFzdF9zaWduYWxlZF9waWQgPSBhY3RpdmVfcGlkOwogCQkJCXRl cm1pbmF0ZWQgPSB0cnVlOwogCQkJCWludmFsaWRhdGlvbl9jYXVzZV9wcmV2ID0gaW52YWxp ZGF0aW9uX2NhdXNlOwogCQkJfQogCisJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xv dENvbnRyb2xMb2NrKTsKKwogCQkJLyogV2FpdCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNl ZC4gKi8KIAkJCUNvbmRpdGlvblZhcmlhYmxlU2xlZXAoJnMtPmFjdGl2ZV9jdiwKIAkJCQkJ CQkJICAgV0FJVF9FVkVOVF9SRVBMSUNBVElPTl9TTE9UX0RST1ApOwpAQCAtMTkzNyw3ICsx OTQ2LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KHVpbnQzMiBwb3NzaWJs ZV9jYXVzZXMsCiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNs b3RSZWxlYXNlKCk7CiAKLQkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24oaW52YWxpZGF0aW9u X2NhdXNlLCBmYWxzZSwgYWN0aXZlX3BpZCwKKwkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24o aW52YWxpZGF0aW9uX2NhdXNlLCBmYWxzZSwKKwkJCQkJCQkJICAgR2V0UEdQcm9jQnlOdW1i ZXIoYWN0aXZlX3Byb2MpLT5waWQsCiAJCQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xz biwKIAkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJ CQkJCQkJICAgc2xvdF9pZGxlX3NlY3MpOwpAQCAtMjU3Niw3ICsyNTg2LDcgQEAgUmVzdG9y ZVNsb3RGcm9tRGlzayhjb25zdCBjaGFyICpuYW1lKQogCQlzbG90LT5jYW5kaWRhdGVfcmVz dGFydF92YWxpZCA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAJCXNsb3QtPmluX3VzZSA9IHRy dWU7Ci0JCXNsb3QtPmFjdGl2ZV9waWQgPSAwOworCQlzbG90LT5hY3RpdmVfcHJvYyA9IElO VkFMSURfUFJPQ19OVU1CRVI7CiAKIAkJLyoKIAkJICogU2V0IHRoZSB0aW1lIHNpbmNlIHRo ZSBzbG90IGhhcyBiZWNvbWUgaW5hY3RpdmUgYWZ0ZXIgbG9hZGluZyB0aGUKQEAgLTI4ODQs NyArMjg5NCw3IEBAIFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cChYTG9nUmVjUHRyIHdhaXRf Zm9yX2xzbiwgaW50IGVsZXZlbCkKIAkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 CiAJCXJlc3RhcnRfbHNuID0gc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbjsKIAkJaW52YWxpZGF0 ZWQgPSBzbG90LT5kYXRhLmludmFsaWRhdGVkICE9IFJTX0lOVkFMX05PTkU7Ci0JCWluYWN0 aXZlID0gc2xvdC0+YWN0aXZlX3BpZCA9PSAwOworCQlpbmFjdGl2ZSA9IHNsb3QtPmFjdGl2 ZV9wcm9jID09IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmc2xv dC0+bXV0ZXgpOwogCiAJCWlmIChpbnZhbGlkYXRlZCkKQEAgLTI5NzAsMTEgKzI5ODAsOCBA QCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVjUHRyIHdhaXRfZm9yX2xzbikK IAl7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJaWYgKENvbmZpZ1JlbG9hZFBl bmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENv bnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0Nv bmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0KIAogCQkvKiBFeGl0IGlmIGRvbmUgd2FpdGlu ZyBmb3IgZXZlcnkgc2xvdC4gKi8KIAkJaWYgKFN0YW5kYnlTbG90c0hhdmVDYXVnaHR1cCh3 YWl0X2Zvcl9sc24sIFdBUk5JTkcpKQpAQCAtMjk4NCw2ICsyOTkxLDggQEAgV2FpdEZvclN0 YW5kYnlDb25maXJtYXRpb24oWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24pCiAJCSAqIFdhaXQg Zm9yIHRoZSBzbG90cyBpbiB0aGUgc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMgdG8gY2F0 Y2ggdXAsCiAJCSAqIGJ1dCB1c2UgYSB0aW1lb3V0ICgxcykgc28gd2UgY2FuIGFsc28gY2hl Y2sgaWYgdGhlCiAJCSAqIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzIGhhcyBiZWVuIGNo YW5nZWQuCisJCSAqCisJCSAqIEZJWE1FOiBJIHRoaW5rIHdlIG5lZWQgYSB3YWl0IHRvIGFk ZCBhIENWIHRvIFdhaXRFdmVudFNldAogCQkgKi8KIAkJQ29uZGl0aW9uVmFyaWFibGVUaW1l ZFNsZWVwKCZXYWxTbmRDdGwtPndhbF9jb25maXJtX3Jjdl9jdiwgMTAwMCwKIAkJCQkJCQkJ CVdBSVRfRVZFTlRfV0FJVF9GT1JfU1RBTkRCWV9DT05GSVJNQVRJT04pOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90ZnVuY3MuYwppbmRleCAxNDZlZWY1ODcxZS4uNjgyMGIxMzE0NjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC0yMCw2ICsyMCw3IEBA CiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCkBAIC0yNTUs NiArMjU2LDcgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJewogCQlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5y ZXBsaWNhdGlvbl9zbG90c1tzbG90bm9dOwogCQlSZXBsaWNhdGlvblNsb3Qgc2xvdF9jb250 ZW50czsKKwkJaW50CQkJYWN0aXZlX3BpZDsKIAkJRGF0dW0JCXZhbHVlc1tQR19HRVRfUkVQ TElDQVRJT05fU0xPVFNfQ09MU107CiAJCWJvb2wJCW51bGxzW1BHX0dFVF9SRVBMSUNBVElP Tl9TTE9UU19DT0xTXTsKIAkJV0FMQXZhaWxhYmlsaXR5IHdhbHN0YXRlOwpAQCAtMjY3LDYg KzI2OSwxMCBAQCBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoUEdfRlVOQ1RJT05fQVJHUykK IAkJLyogQ29weSBzbG90IGNvbnRlbnRzIHdoaWxlIGhvbGRpbmcgc3BpbmxvY2ssIHRoZW4g ZXhhbWluZSBhdCBsZWlzdXJlICovCiAJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgp OwogCQlzbG90X2NvbnRlbnRzID0gKnNsb3Q7CisJCWlmIChzbG90X2NvbnRlbnRzLmFjdGl2 ZV9wcm9jICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCisJCQlhY3RpdmVfcGlkID0gR2V0UEdQ cm9jQnlOdW1iZXIoc2xvdF9jb250ZW50cy5hY3RpdmVfcHJvYyktPnBpZDsKKwkJZWxzZQor CQkJYWN0aXZlX3BpZCA9IDA7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwog CiAJCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKQEAgLTI5MSwxMCArMjk3 LDEwIEBAIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQogCQkJ dmFsdWVzW2krK10gPSBPYmplY3RJZEdldERhdHVtKHNsb3RfY29udGVudHMuZGF0YS5kYXRh YmFzZSk7CiAKIAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5k YXRhLnBlcnNpc3RlbmN5ID09IFJTX1RFTVBPUkFSWSk7Ci0JCXZhbHVlc1tpKytdID0gQm9v bEdldERhdHVtKHNsb3RfY29udGVudHMuYWN0aXZlX3BpZCAhPSAwKTsKKwkJdmFsdWVzW2kr K10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5hY3RpdmVfcHJvYyAhPSBJTlZBTElE X1BST0NfTlVNQkVSKTsKIAotCQlpZiAoc2xvdF9jb250ZW50cy5hY3RpdmVfcGlkICE9IDAp Ci0JCQl2YWx1ZXNbaSsrXSA9IEludDMyR2V0RGF0dW0oc2xvdF9jb250ZW50cy5hY3RpdmVf cGlkKTsKKwkJaWYgKHNsb3RfY29udGVudHMuYWN0aXZlX3Byb2MgIT0gSU5WQUxJRF9QUk9D X05VTUJFUikKKwkJCXZhbHVlc1tpKytdID0gSW50MzJHZXREYXR1bShhY3RpdmVfcGlkKTsK IAkJZWxzZQogCQkJbnVsbHNbaSsrXSA9IHRydWU7CiAKQEAgLTM1OSwxMyArMzY1LDEzIEBA IHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCSAqLwog CQkJCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChzbG90X2NvbnRlbnRzLmRhdGEucmVzdGFy dF9sc24pKQogCQkJCXsKLQkJCQkJaW50CQkJcGlkOworCQkJCQlQcm9jTnVtYmVyCXByb2Nu bzsKIAogCQkJCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCQkJcGlkID0g c2xvdC0+YWN0aXZlX3BpZDsKKwkJCQkJcHJvY25vID0gc2xvdC0+YWN0aXZlX3Byb2M7CiAJ CQkJCXNsb3RfY29udGVudHMuZGF0YS5yZXN0YXJ0X2xzbiA9IHNsb3QtPmRhdGEucmVzdGFy dF9sc247CiAJCQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQkJCQlpZiAo cGlkICE9IDApCisJCQkJCWlmIChwcm9jbm8gIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAkJ CQkJewogCQkJCQkJdmFsdWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKCJ1bnJlc2Vy dmVkIik7CiAJCQkJCQl3YWxzdGF0ZSA9IFdBTEFWQUlMX1VOUkVTRVJWRUQ7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zeW5jcmVwLmMKaW5kZXggOTNkOGI5ZDA2MDUuLmQ5NzdjM2E1YjIzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zeW5jcmVwLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc3luY3JlcC5jCkBAIC0yNTIsMTAgKzI1MiwxMCBAQCBT eW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21taXQpCiAJCSAqIGVu dGl0bGVkIHRvIGFzc3VtZSB0aGF0IGFuIGFja25vd2xlZGdlZCBjb21taXQgaXMgYWxzbyBy ZXBsaWNhdGVkLAogCQkgKiB3aGljaCBtaWdodCBub3QgYmUgdHJ1ZS4gU28gaW4gdGhpcyBj YXNlIHdlIGlzc3VlIGEgV0FSTklORyAod2hpY2gKIAkJICogc29tZSBjbGllbnRzIG1heSBi ZSBhYmxlIHRvIGludGVycHJldCkgYW5kIHNodXQgb2ZmIGZ1cnRoZXIgb3V0cHV0LgotCQkg KiBXZSBkbyBOT1QgcmVzZXQgUHJvY0RpZVBlbmRpbmcsIHNvIHRoYXQgdGhlIHByb2Nlc3Mg d2lsbCBkaWUgYWZ0ZXIKKwkJICogV2UgZG8gTk9UIGNsZWFyIHRoZSBpbnRlcnJ1cHQgYml0 LCBzbyB0aGF0IHRoZSBwcm9jZXNzIHdpbGwgZGllIGFmdGVyCiAJCSAqIHRoZSBjb21taXQg aXMgY2xlYW5lZCB1cC4KIAkJICovCi0JCWlmIChQcm9jRGllUGVuZGluZykKKwkJaWYgKElz SW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfRElFKSkKIAkJewogCQkJZXJlcG9ydChXQVJO SU5HLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0FETUlOX1NIVVRET1dOKSwKQEAgLTI3Miw5 ICsyNzIsOCBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxzbiwgYm9vbCBjb21t aXQpCiAJCSAqIGFsdG9nZXRoZXIgaXMgbm90IGhlbHBmdWwsIHNvIHdlIGp1c3QgdGVybWlu YXRlIHRoZSB3YWl0IHdpdGggYQogCQkgKiBzdWl0YWJsZSB3YXJuaW5nLgogCQkgKi8KLQkJ aWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJS VVBUX1FVRVJZX0NBTkNFTCkpCiAJCXsKLQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNl OwogCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJjYW5jZWxpbmcgd2FpdCBm b3Igc3luY2hyb25vdXMgcmVwbGljYXRpb24gZHVlIHRvIHVzZXIgcmVxdWVzdCIpLAogCQkJ CQkgZXJyZGV0YWlsKCJUaGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgY29tbWl0dGVkIGxv Y2FsbHksIGJ1dCBtaWdodCBub3QgaGF2ZSBiZWVuIHJlcGxpY2F0ZWQgdG8gdGhlIHN0YW5k YnkuIikpKTsKQEAgLTI4Niw3ICsyODUsOSBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVj UHRyIGxzbiwgYm9vbCBjb21taXQpCiAJCSAqIFdhaXQgb24gaW50ZXJydXB0LiAgQW55IGNv bmRpdGlvbiB0aGF0IHNob3VsZCB3YWtlIHVzIHVwIHdpbGwgc2V0CiAJCSAqIHRoZSBpbnRl cnJ1cHQsIHNvIG5vIG5lZWQgZm9yIHRpbWVvdXQuCiAJCSAqLwotCQlyYyA9IFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsCisJCXJjID0gV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCB8CisJCQkJCQkgICBJTlRFUlJVUFRfRElFIHwKKwkJCQkJCSAgIElOVEVS UlVQVF9RVUVSWV9DQU5DRUwsCiAJCQkJCQkgICBXTF9JTlRFUlJVUFQgfCBXTF9QT1NUTUFT VEVSX0RFQVRILAogCQkJCQkJICAgLTEsCiAJCQkJCQkgICBXQUlUX0VWRU5UX1NZTkNfUkVQ KTsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBTeW5jUmVwV2FpdEZvckxTTihYTG9nUmVjUHRyIGxz biwgYm9vbCBjb21taXQpCiAJCSAqLwogCQlpZiAocmMgJiBXTF9QT1NUTUFTVEVSX0RFQVRI KQogCQl7Ci0JCQlQcm9jRGllUGVuZGluZyA9IHRydWU7CisJCQlSYWlzZUludGVycnVwdChJ TlRFUlJVUFRfRElFKTsKIAkJCXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CiAJCQlT eW5jUmVwQ2FuY2VsV2FpdCgpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuYwppbmRleCA4N2IxYmFkMjc5Zi4uNjM5OTAzNjA1NjkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwpAQCAtNzAsNyArNzAsNiBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWdu YWwuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMTY5LDcgKzE2OCw3IEBAIFByb2Nl c3NXYWxSY3ZJbnRlcnJ1cHRzKHZvaWQpCiAJICovCiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAotCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQorCWlmIChJc0ludGVycnVwdFBl bmRpbmcoSU5URVJSVVBUX1NIVVRET1dOX0FVWCkpCiAJewogCQllcmVwb3J0KEZBVEFMLAog CQkJCShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLApAQCAtMjg0LDcgKzI4Myw3 IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCS8qIFNJR1FVSVQgaGFuZGxlciB3YXMgYWxyZWFkeSBzZXQg dXAgYnkgSW5pdFBvc3RtYXN0ZXJDaGlsZCAqLwogCXBxc2lnbmFsKFNJR0FMUk0sIFNJR19J R04pOwogCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEs IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdf SUdOKTsKIAlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdOKTsKIAogCS8qIFJlc2V0IHNvbWUg c2lnbmFscyB0aGF0IGFyZSBhY2NlcHRlZCBieSBwb3N0bWFzdGVyIGJ1dCBub3QgaGVyZSAq LwpAQCAtNDYxLDkgKzQ2MCw4IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCS8qIFByb2Nlc3MgYW55 IHJlcXVlc3RzIG9yIHNpZ25hbHMgcmVjZWl2ZWQgcmVjZW50bHkgKi8KIAkJCQlQcm9jZXNz V2FsUmN2SW50ZXJydXB0cygpOwogCi0JCQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJ CQkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NPTkZJR19SRUxPQUQpKQogCQkJ CXsKLQkJCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJCQlQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCQkJLyogcmVjb21wdXRlIHdha2V1cCB0aW1lcyAq LwogCQkJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CkBAIC01NDYsNyArNTQ0LDEw IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBz dGFydHVwX2RhdGFfbGVuKQogCQkJCSAqIGF2b2lkaW5nIHNvbWUgc3lzdGVtIGNhbGxzLgog CQkJCSAqLwogCQkJCUFzc2VydCh3YWl0X2ZkICE9IFBHSU5WQUxJRF9TT0NLRVQpOwotCQkJ CXJjID0gV2FpdEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCXJj ID0gV2FpdEludGVycnVwdE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFTSygpIHwKKwkJCQkJ CQkJCQkgICBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJCQkJCQkgICBJTlRFUlJV UFRfQ09ORklHX1JFTE9BRCB8CisJCQkJCQkJCQkJICAgSU5URVJSVVBUX0dFTkVSQUwsCiAJ CQkJCQkJCQkJICAgV0xfRVhJVF9PTl9QTV9ERUFUSCB8IFdMX1NPQ0tFVF9SRUFEQUJMRSB8 CiAJCQkJCQkJCQkJICAgV0xfVElNRU9VVCB8IFdMX0lOVEVSUlVQVCwKIAkJCQkJCQkJCQkg ICB3YWl0X2ZkLApAQCAtNTU0LDcgKzU1NSw2IEBAIFdhbFJlY2VpdmVyTWFpbihjb25zdCB2 b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKQogCQkJCQkJCQkJ CSAgIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4pOwogCQkJCWlmIChyYyAmIFdMX0lO VEVSUlVQVCkKIAkJCQl7Ci0JCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM KTsKIAkJCQkJUHJvY2Vzc1dhbFJjdkludGVycnVwdHMoKTsKIAogCQkJCQlpZiAod2FscmN2 LT5mb3JjZV9yZXBseSkKQEAgLTU2OSw2ICs1NjksNyBAQCBXYWxSZWNlaXZlck1haW4oY29u c3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAkJCQkJ CXBnX21lbW9yeV9iYXJyaWVyKCk7CiAJCQkJCQlYTG9nV2FsUmN2U2VuZFJlcGx5KHRydWUs IGZhbHNlKTsKIAkJCQkJfQorCQkJCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJB TCk7CiAJCQkJfQogCQkJCWlmIChyYyAmIFdMX1RJTUVPVVQpCiAJCQkJewpAQCAtNzM0LDcg KzczNSw5IEBAIFdhbFJjdldhaXRGb3JTdGFydFBvc2l0aW9uKFhMb2dSZWNQdHIgKnN0YXJ0 cG9pbnQsIFRpbWVMaW5lSUQgKnN0YXJ0cG9pbnRUTEkpCiAJCX0KIAkJU3BpbkxvY2tSZWxl YXNlKCZ3YWxyY3YtPm11dGV4KTsKIAotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNL KCkgfAorCQkJCQkJCSBJTlRFUlJVUFRfU0hVVERPV05fQVVYIHwKKwkJCQkJCQkgSU5URVJS VVBUX0dFTkVSQUwsCiAJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVB VEgsCiAJCQkJCQkJIDAsCiAJCQkJCQkJIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRf U1RBUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCAwYWZhMTgx NTUwYi4uOWM4MDc2MjBiN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j CkBAIC0yNSw3ICsyNSw3IEBACiAgKiB0aGUgd2Fsc2VuZGVyIHdpbGwgZXhpdCBxdWlja2x5 IHdpdGhvdXQgc2VuZGluZyBhbnkgbW9yZSBYTE9HIHJlY29yZHMuCiAgKgogICogSWYgdGhl IHNlcnZlciBpcyBzaHV0IGRvd24sIGNoZWNrcG9pbnRlciBzZW5kcyB1cwotICogUFJPQ1NJ R19XQUxTTkRfSU5JVF9TVE9QUElORyBhZnRlciBhbGwgcmVndWxhciBiYWNrZW5kcyBoYXZl IGV4aXRlZC4gIElmCisgKiBJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RPUFBJTkcgYWZ0ZXIg YWxsIHJlZ3VsYXIgYmFja2VuZHMgaGF2ZSBleGl0ZWQuICBJZgogICogdGhlIGJhY2tlbmQg aXMgaWRsZSBvciBydW5zIGFuIFNRTCBxdWVyeSB0aGlzIGNhdXNlcyB0aGUgYmFja2VuZCB0 bwogICogc2h1dGRvd24sIGlmIGxvZ2ljYWwgcmVwbGljYXRpb24gaXMgaW4gcHJvZ3Jlc3Mg YWxsIGV4aXN0aW5nIFdBTCByZWNvcmRzCiAgKiBhcmUgcHJvY2Vzc2VkIGZvbGxvd2VkIGJ5 IGEgc2h1dGRvd24uICBPdGhlcndpc2UgdGhpcyBjYXVzZXMgdGhlIHdhbHNlbmRlcgpAQCAt MTk5LDkgKzE5OSw5IEBAIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X1NUT1BQ SU5HID0gZmFsc2U7CiAKIC8qCiAgKiBUaGlzIGlzIHNldCB3aGlsZSB3ZSBhcmUgc3RyZWFt aW5nLiBXaGVuIG5vdCBzZXQKLSAqIFBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcgc2ln bmFsIHdpbGwgYmUgaGFuZGxlZCBsaWtlIFNJR1RFUk0uIFdoZW4gc2V0LAotICogdGhlIG1h aW4gbG9vcCBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgZ290X1NUT1BQSU5HIGFuZCB0 ZXJtaW5hdGluZyB3aGVuCi0gKiBpdCdzIHNldCAoYWZ0ZXIgc3RyZWFtaW5nIGFueSByZW1h aW5pbmcgV0FMKS4KKyAqIElOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBpbnRlcnJ1 cHQgd2lsbCBiZSBoYW5kbGVkIGxpa2UgU0lHVEVSTS4gV2hlbgorICogc2V0LCB0aGUgbWFp biBsb29wIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyBnb3RfU1RPUFBJTkcgYW5kIHRl cm1pbmF0aW5nCisgKiB3aGVuIGl0J3Mgc2V0IChhZnRlciBzdHJlYW1pbmcgYW55IHJlbWFp bmluZyBXQUwpLgogICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHJlcGxpY2F0 aW9uX2FjdGl2ZSA9IGZhbHNlOwogCkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIHZvaWQg V2FsU25kS2VlcGFsaXZlKGJvb2wgcmVxdWVzdFJlcGx5LCBYTG9nUmVjUHRyIHdyaXRlUHRy KTsKIHN0YXRpYyB2b2lkIFdhbFNuZEtlZXBhbGl2ZUlmTmVjZXNzYXJ5KHZvaWQpOwogc3Rh dGljIHZvaWQgV2FsU25kQ2hlY2tUaW1lT3V0KHZvaWQpOwogc3RhdGljIGxvbmcgV2FsU25k Q29tcHV0ZVNsZWVwdGltZShUaW1lc3RhbXBUeiBub3cpOwotc3RhdGljIHZvaWQgV2FsU25k V2FpdCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9l dmVudCk7CitzdGF0aWMgdm9pZCBXYWxTbmRXYWl0KHVpbnQzMiBzb2NrZXRfZXZlbnRzLCBs b25nIHRpbWVvdXQsIHVpbnQzMiB3YWl0X2V2ZW50LCB1aW50MzIgaW50ZXJydXB0TWFzayk7 CiBzdGF0aWMgdm9pZCBXYWxTbmRQcmVwYXJlV3JpdGUoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgbGFzdF93 cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRXcml0ZURhdGEoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgbGFz dF93cml0ZSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRVcGRhdGVQcm9ncmVzcyhMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlvbklkIHhpZCwK QEAgLTE2MDgsNyArMTYwOCwxMCBAQCBQcm9jZXNzUGVuZGluZ1dyaXRlcyh2b2lkKQogCiAJ CS8qIFNsZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0ICovCiAJ CVdhbFNuZFdhaXQoV0xfU09DS0VUX1dSSVRFQUJMRSB8IFdMX1NPQ0tFVF9SRUFEQUJMRSwg c2xlZXB0aW1lLAotCQkJCSAgIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XUklURV9EQVRBKTsK KwkJCQkgICBXQUlUX0VWRU5UX1dBTF9TRU5ERVJfV1JJVEVfREFUQSwKKwkJCQkgICBJTlRF UlJVUFRfQ0ZJX01BU0soKSB8CisJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAor CQkJCSAgIElOVEVSUlVQVF9HRU5FUkFMKTsKIAogCQkvKiBDbGVhciBhbnkgYWxyZWFkeS1w ZW5kaW5nIHdha2V1cHMgKi8KIAkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwpAQCAtMTYxNiw5ICsxNjE5LDggQEAgUHJvY2Vzc1BlbmRpbmdXcml0ZXModm9pZCkKIAkJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBv ciBzaWduYWxzIHJlY2VpdmVkIHJlY2VudGx5ICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5k aW5nKQorCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkp CiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOwogCQkJU3luY1JlcEluaXRDb25maWcoKTsKIAkJfQpAQCAt MTYyOCw3ICsxNjMwLDcgQEAgUHJvY2Vzc1BlbmRpbmdXcml0ZXModm9pZCkKIAkJCVdhbFNu ZFNodXRkb3duKCk7CiAJfQogCi0JLyogcmVhY3RpdmF0ZSBpbnRlcnJ1cHQgc28gV2FsU25k TG9vcCBrbm93cyB0byBjb250aW51ZSAqLworCS8qIHJlYWN0aXZhdGUgaW50ZXJydXB0IGZs YWcgc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwogCVJhaXNlSW50ZXJydXB0 KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIApAQCAtMTgyMiw5ICsxODI0LDggQEAgV2FsU25k V2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAogCQkvKiBQcm9jZXNzIGFueSByZXF1ZXN0cyBvciBzaWduYWxzIHJlY2VpdmVkIHJlY2Vu dGx5ICovCi0JCWlmIChDb25maWdSZWxvYWRQZW5kaW5nKQorCQlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9BRCkpCiAJCXsKLQkJCUNvbmZpZ1JlbG9hZFBl bmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOwogCQkJ U3luY1JlcEluaXRDb25maWcoKTsKIAkJfQpAQCAtMTkzNCw3ICsxOTM1LDEwIEBAIFdhbFNu ZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBsb2MpCiAKIAkJQXNzZXJ0KHdhaXRfZXZlbnQgIT0g MCk7CiAKLQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBzbGVlcHRpbWUsIHdhaXRfZXZlbnQp OworCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgd2FpdF9ldmVudCwKKwkJ CQkgICBJTlRFUlJVUFRfQ0ZJX01BU0soKSB8CisJCQkJICAgSU5URVJSVVBUX0NPTkZJR19S RUxPQUQgfAorCQkJCSAgIElOVEVSUlVQVF9HRU5FUkFMKTsKIAl9CiAKIAkvKiByZWFjdGl2 YXRlIGludGVycnVwdCBmbGFnIHNvIFdhbFNuZExvb3Aga25vd3MgdG8gY29udGludWUgKi8K QEAgLTI3NTksOSArMjc2Myw4IEBAIFdhbFNuZExvb3AoV2FsU25kU2VuZERhdGFDYWxsYmFj ayBzZW5kX2RhdGEpCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogUHJvY2Vz cyBhbnkgcmVxdWVzdHMgb3Igc2lnbmFscyByZWNlaXZlZCByZWNlbnRseSAqLwotCQlpZiAo Q29uZmlnUmVsb2FkUGVuZGluZykKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X0NPTkZJR19SRUxPQUQpKQogCQl7Ci0JCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7 CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKIAkJCVN5bmNSZXBJbml0Q29u ZmlnKCk7CiAJCX0KQEAgLTI4NTcsNyArMjg2MCwxMSBAQCBXYWxTbmRMb29wKFdhbFNuZFNl bmREYXRhQ2FsbGJhY2sgc2VuZF9kYXRhKQogCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VU X1dSSVRFQUJMRTsKIAogCQkJLyogU2xlZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Ig d2UgdGltZSBvdXQgKi8KLQkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBX QUlUX0VWRU5UX1dBTF9TRU5ERVJfTUFJTik7CisJCQlXYWxTbmRXYWl0KHdha2VFdmVudHMs IHNsZWVwdGltZSwgV0FJVF9FVkVOVF9XQUxfU0VOREVSX01BSU4sCisJCQkJCSAgIElOVEVS UlVQVF9DRklfTUFTSygpIHwKKwkJCQkJICAgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAor CQkJCQkgICBJTlRFUlJVUFRfR0VORVJBTAorCQkJCSk7CiAJCX0KIAl9CiB9CkBAIC0yODk1 LDYgKzI5MDIsNyBAQCBJbml0V2FsU2VuZGVyU2xvdCh2b2lkKQogCQkJLyoKIAkJCSAqIEZv dW5kIGEgZnJlZSBzbG90LiBSZXNlcnZlIGl0IGZvciB1cy4KIAkJCSAqLworCQkJd2Fsc25k LT5wZ3Byb2NubyA9IE15UHJvY051bWJlcjsKIAkJCXdhbHNuZC0+cGlkID0gTXlQcm9jUGlk OwogCQkJd2Fsc25kLT5zdGF0ZSA9IFdBTFNORFNUQVRFX1NUQVJUVVA7CiAJCQl3YWxzbmQt PnNlbnRQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTI5NTEsNiArMjk1OSw3IEBAIFdh bFNuZEtpbGwoaW50IGNvZGUsIERhdHVtIGFyZykKIAlTcGluTG9ja0FjcXVpcmUoJndhbHNu ZC0+bXV0ZXgpOwogCS8qIE1hcmsgV2FsU25kIHN0cnVjdCBhcyBubyBsb25nZXIgYmVpbmcg aW4gdXNlLiAqLwogCXdhbHNuZC0+cGlkID0gMDsKKwl3YWxzbmQtPnBncHJvY25vID0gMDsK IAlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwogfQogCkBAIC0zNTI1LDEwICsz NTM0LDEwIEBAIFdhbFNuZFJxc3RGaWxlUmVsb2FkKHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5k bGUgUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORyBzaWduYWwuCisgKiBQcm9jZXNzIElO VEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyBpbnRlcnJ1cHQKICAqLwogdm9pZAotSGFu ZGxlV2FsU25kSW5pdFN0b3BwaW5nKHZvaWQpCitQcm9jZXNzV2FsU25kSW5pdFN0b3BwaW5n KHZvaWQpCiB7CiAJQXNzZXJ0KGFtX3dhbHNlbmRlcik7CiAKQEAgLTM1MzksOSArMzU0OCwx MiBAQCBIYW5kbGVXYWxTbmRJbml0U3RvcHBpbmcodm9pZCkKIAkgKiBzdGFuZGJ5LCBhbmQg dGhlbiBleGl0IGdyYWNlZnVsbHkuCiAJICovCiAJaWYgKCFyZXBsaWNhdGlvbl9hY3RpdmUp Ci0JCWtpbGwoTXlQcm9jUGlkLCBTSUdURVJNKTsKKwkJUmFpc2VJbnRlcnJ1cHQoSU5URVJS VVBUX0RJRSk7CiAJZWxzZQorCXsKIAkJZ290X1NUT1BQSU5HID0gdHJ1ZTsKKwkJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCX0KIH0KIAogLyoKQEAgLTM1NjcsNyAr MzU3OSw3IEBAIFdhbFNuZFNpZ25hbHModm9pZCkKIAkvKiBTSUdRVUlUIGhhbmRsZXIgd2Fz IGFscmVhZHkgc2V0IHVwIGJ5IEluaXRQb3N0bWFzdGVyQ2hpbGQgKi8KIAlJbml0aWFsaXpl VGltZW91dHMoKTsJCS8qIGVzdGFibGlzaGVzIFNJR0FMUk0gaGFuZGxlciAqLwogCXBxc2ln bmFsKFNJR1BJUEUsIFNJR19JR04pOwotCXBxc2lnbmFsKFNJR1VTUjEsIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKTsKKwlwcXNpZ25hbChTSUdVU1IxLCBTSUdfSUdOKTsKIAlwcXNp Z25hbChTSUdVU1IyLCBXYWxTbmRMYXN0Q3ljbGVIYW5kbGVyKTsJLyogcmVxdWVzdCBhIGxh c3QgY3ljbGUgYW5kCiAJCQkJCQkJCQkJCQkgKiBzaHV0ZG93biAqLwogCkBAIC0zNjU1LDI0 ICszNjY3LDI4IEBAIFdhbFNuZFdha2V1cChib29sIHBoeXNpY2FsLCBib29sIGxvZ2ljYWwp CiAgKiBvbiBwb3N0bWFzdGVyIGRlYXRoLgogICovCiBzdGF0aWMgdm9pZAotV2FsU25kV2Fp dCh1aW50MzIgc29ja2V0X2V2ZW50cywgbG9uZyB0aW1lb3V0LCB1aW50MzIgd2FpdF9ldmVu dCkKK1dhbFNuZFdhaXQodWludDMyIHNvY2tldF9ldmVudHMsIGxvbmcgdGltZW91dCwgdWlu dDMyIHdhaXRfZXZlbnQsIHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewogCVdhaXRFdmVudAll dmVudDsKIAorCS8qIGZvciBjb25kaXRpb24gdmFyaWFibGVzICovCisJaW50ZXJydXB0TWFz ayB8PSBJTlRFUlJVUFRfR0VORVJBTDsKKwogCU1vZGlmeVdhaXRFdmVudChGZUJlV2FpdFNl dCwgRmVCZVdhaXRTZXRTb2NrZXRQb3MsIHNvY2tldF9ldmVudHMsIDApOworCU1vZGlmeVdh aXRFdmVudChGZUJlV2FpdFNldCwgRmVCZVdhaXRTZXRJbnRlcnJ1cHRQb3MsIFdMX0lOVEVS UlVQVCwgaW50ZXJydXB0TWFzayk7CiAKIAkvKgogCSAqIFdlIHVzZSBhIGNvbmRpdGlvbiB2 YXJpYWJsZSB0byBlZmZpY2llbnRseSB3YWtlIHVwIHdhbHNlbmRlcnMgaW4KIAkgKiBXYWxT bmRXYWtldXAoKS4KIAkgKgogCSAqIEV2ZXJ5IHdhbHNlbmRlciBwcmVwYXJlcyB0byBzbGVl cCBvbiBhIHNoYXJlZCBtZW1vcnkgQ1YuIE5vdGUgdGhhdCBpdAotCSAqIGp1c3QgcHJlcGFy ZXMgdG8gc2xlZXAgb24gdGhlIENWIChpLmUuLCBhZGRzIGl0c2VsZiB0byB0aGUgQ1Yncwot CSAqIHdhaXRsaXN0KSwgYnV0IGRvZXMgbm90IGFjdHVhbGx5IHdhaXQgb24gdGhlIENWIChJ T1csIGl0IG5ldmVyIGNhbGxzCi0JICogQ29uZGl0aW9uVmFyaWFibGVTbGVlcCgpKS4gSXQg c3RpbGwgdXNlcyBXYWl0RXZlbnRTZXRXYWl0KCkgZm9yCi0JICogd2FpdGluZywgYmVjYXVz ZSB3ZSBhbHNvIG5lZWQgdG8gd2FpdCBmb3Igc29ja2V0IGV2ZW50cy4gVGhlIHByb2Nlc3Nl cwotCSAqIChzdGFydHVwIHByb2Nlc3MsIHdhbHJlY2VpdmVyIGV0Yy4pIHdhbnRpbmcgdG8g d2FrZSB1cCB3YWxzZW5kZXJzIHVzZQotCSAqIENvbmRpdGlvblZhcmlhYmxlQnJvYWRjYXN0 KCksIHdoaWNoIGluIHR1cm4gY2FsbHMgU2VuZEludGVycnVwdCgpLAotCSAqIGhlbHBpbmcg d2Fsc2VuZGVycyBjb21lIG91dCBvZiBXYWl0RXZlbnRTZXRXYWl0KCkuCisJICoganVzdCBw cmVwYXJlcyB0byBzbGVlcCBvbiB0aGUgQ1Ygd2FpdGxpc3QpLCBidXQgZG9lcyBub3QgYWN0 dWFsbHkgd2FpdAorCSAqIG9uIHRoZSBDViAoSU9XLCBpdCBuZXZlciBjYWxscyBDb25kaXRp b25WYXJpYWJsZVNsZWVwKCkpLiBJdCBzdGlsbCB1c2VzCisJICogV2FpdEV2ZW50U2V0V2Fp dCgpIGZvciB3YWl0aW5nLCBiZWNhdXNlIHdlIGFsc28gbmVlZCB0byB3YWl0IGZvciBzb2Nr ZXQKKwkgKiBldmVudHMuIFRoZSBwcm9jZXNzZXMgKHN0YXJ0dXAgcHJvY2Vzcywgd2FscmVj ZWl2ZXIgZXRjLikgd2FudGluZyB0bworCSAqIHdha2UgdXAgd2Fsc2VuZGVycyB1c2UgQ29u ZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoKSwgd2hpY2ggaW4gdHVybgorCSAqIGNhbGxzIFNl bmRJbnRlcnJ1cHQoKSwgaGVscGluZyB3YWxzZW5kZXJzIGNvbWUgb3V0IG9mCisJICogV2Fp dEV2ZW50U2V0V2FpdCgpLgogCSAqCiAJICogVGhpcyBhcHByb2FjaCBpcyBzaW1wbGUgYW5k IGVmZmljaWVudCBiZWNhdXNlLCBvbmUgZG9lc24ndCBoYXZlIHRvIGxvb3AKIAkgKiB0aHJv dWdoIGFsbCB0aGUgd2Fsc2VuZGVycyBzbG90cywgd2l0aCBhIHNwaW5sb2NrIGFjcXVpc2l0 aW9uIGFuZApAQCAtMzcyMCwxNiArMzczNiwxNiBAQCBXYWxTbmRJbml0U3RvcHBpbmcodm9p ZCkKIAlmb3IgKGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCiAJewogCQlXYWxT bmQJICAgKndhbHNuZCA9ICZXYWxTbmRDdGwtPndhbHNuZHNbaV07Ci0JCXBpZF90CQlwaWQ7 CisJCVByb2NOdW1iZXIJcHJvY25vOwogCiAJCVNwaW5Mb2NrQWNxdWlyZSgmd2Fsc25kLT5t dXRleCk7Ci0JCXBpZCA9IHdhbHNuZC0+cGlkOworCQlwcm9jbm8gPSB3YWxzbmQtPnBncHJv Y25vOwogCQlTcGluTG9ja1JlbGVhc2UoJndhbHNuZC0+bXV0ZXgpOwogCi0JCWlmIChwaWQg PT0gMCkKKwkJaWYgKHByb2NubyA9PSBJTlZBTElEX1BST0NfTlVNQkVSKQogCQkJY29udGlu dWU7CiAKLQkJU2VuZFByb2NTaWduYWwocGlkLCBQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQ SU5HLCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJU2VuZEludGVycnVwdChJTlRFUlJVUFRf V0FMU05EX0lOSVRfU1RPUFBJTkcsIHByb2Nubyk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IGQ3YmU0MzA5ZDRlLi40MDk5ZTE0MTIzMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTU1LDYgKzU1LDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKQEAgLTI5NzYsNyArMjk3 Nyw3IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCQlVbmxvY2tCdWZIZHIoYnVmSGRyLCBi dWZfc3RhdGUpOwogCiAJCS8qIENoZWNrIGZvciBiYXJyaWVyIGV2ZW50cyBpbiBjYXNlIE5C dWZmZXJzIGlzIGxhcmdlLiAqLwotCQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5nKQor CQlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9CQVJSSUVSKSkKIAkJCVByb2Nl c3NQcm9jU2lnbmFsQmFycmllcigpOwogCX0KIApAQCAtMzA1Nyw3ICszMDU4LDcgQEAgQnVm ZmVyU3luYyhpbnQgZmxhZ3MpCiAJCXMtPm51bV90b19zY2FuKys7CiAKIAkJLyogQ2hlY2sg Zm9yIGJhcnJpZXIgZXZlbnRzLiAqLwotCQlpZiAoUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5n KQorCQlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9CQVJSSUVSKSkKIAkJCVBy b2Nlc3NQcm9jU2lnbmFsQmFycmllcigpOwogCX0KIApAQCAtNTIxMyw3ICs1MjE0LDcgQEAg TG9ja0J1ZmZlckZvckNsZWFudXAoQnVmZmVyIGJ1ZmZlcikKIAkJCSAqIGRlYWRsb2NrX3Rp bWVvdXQgZm9yIGl0LgogCQkJICovCiAJCQlpZiAobG9nZ2VkX3JlY292ZXJ5X2NvbmZsaWN0 KQotCQkJCUxvZ1JlY292ZXJ5Q29uZmxpY3QoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9C VUZGRVJQSU4sCisJCQkJTG9nUmVjb3ZlcnlDb25mbGljdChJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1RfQlVGRkVSUElOLAogCQkJCQkJCQkJd2FpdFN0YXJ0LCBHZXRDdXJyZW50VGlt ZXN0YW1wKCksCiAJCQkJCQkJCQlOVUxMLCBmYWxzZSk7CiAKQEAgLTUyNjMsNyArNTI2NCw3 IEBAIExvY2tCdWZmZXJGb3JDbGVhbnVwKEJ1ZmZlciBidWZmZXIpCiAJCQkJaWYgKFRpbWVz dGFtcERpZmZlcmVuY2VFeGNlZWRzKHdhaXRTdGFydCwgbm93LAogCQkJCQkJCQkJCQkgICBE ZWFkbG9ja1RpbWVvdXQpKQogCQkJCXsKLQkJCQkJTG9nUmVjb3ZlcnlDb25mbGljdChQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiwKKwkJCQkJTG9nUmVjb3ZlcnlDb25m bGljdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCQkJCQkJCQkJ CXdhaXRTdGFydCwgbm93LCBOVUxMLCB0cnVlKTsKIAkJCQkJbG9nZ2VkX3JlY292ZXJ5X2Nv bmZsaWN0ID0gdHJ1ZTsKIAkJCQl9CkBAIC01Mjg1LDE2ICs1Mjg2LDE3IEBAIExvY2tCdWZm ZXJGb3JDbGVhbnVwKEJ1ZmZlciBidWZmZXIpCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlXYWl0 SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAorCQkJV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8 IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAogCQkJCQkJICBXQUlUX0VWRU5UX0JVRkZFUl9QSU4pOwotCQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJfQogCiAJ CS8qCiAJCSAqIFJlbW92ZSBmbGFnIG1hcmtpbmcgdXMgYXMgd2FpdGVyLiBOb3JtYWxseSB0 aGlzIHdpbGwgbm90IGJlIHNldAotCQkgKiBhbnltb3JlLCBidXQgUHJvY1dhaXRGb3JTaWdu YWwoKSBjYW4gcmV0dXJuIGZvciBvdGhlciBzaWduYWxzIGFzCi0JCSAqIHdlbGwuICBXZSB0 YWtlIGNhcmUgdG8gb25seSByZXNldCB0aGUgZmxhZyBpZiB3ZSdyZSB0aGUgd2FpdGVyLCBh cworCQkgKiBhbnltb3JlLCBidXQgV2FpdEludGVycnVwdCBjYW4gcmV0dXJuIGZvciBvdGhl ciByZWFzb25zIGFzIHdlbGwuCisJCSAqIFdlIHRha2UgY2FyZSB0byBvbmx5IHJlc2V0IHRo ZSBmbGFnIGlmIHdlJ3JlIHRoZSB3YWl0ZXIsIGFzCiAJCSAqIHRoZW9yZXRpY2FsbHkgYW5v dGhlciBiYWNrZW5kIGNvdWxkIGhhdmUgc3RhcnRlZCB3YWl0aW5nLiBUaGF0J3MKIAkJICog aW1wb3NzaWJsZSB3aXRoIHRoZSBjdXJyZW50IHVzYWdlcyBkdWUgdG8gdGFibGUgbGV2ZWwg bG9ja2luZywgYnV0CiAJCSAqIGJldHRlciBiZSBzYWZlLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvaXBjLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGMu YwppbmRleCBlNGQ1Yjk0NGUxMi4uNWI1OWY3NzNlYTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Yy5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZkZWYgUFJPRklMRV9QSURfRElSCiAjaW5jbHVk ZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjZW5kaWYKKyNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0xNzUsOSAr MTc2LDggQEAgcHJvY19leGl0X3ByZXBhcmUoaW50IGNvZGUpCiAJICogY2xvc2UgdXAgc2hv cCBhbHJlYWR5LiAgTm90ZSB0aGF0IHRoZSBzaWduYWwgaGFuZGxlcnMgd2lsbCBub3Qgc2V0 CiAJICogdGhlc2UgZmxhZ3MgYWdhaW4sIG5vdyB0aGF0IHByb2NfZXhpdF9pbnByb2dyZXNz IGlzIHNldC4KIAkgKi8KLQlJbnRlcnJ1cHRQZW5kaW5nID0gZmFsc2U7Ci0JUHJvY0RpZVBl bmRpbmcgPSBmYWxzZTsKLQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsKKwlDbGVhcklu dGVycnVwdChJTlRFUlJVUFRfRElFKTsKKwlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUVVF UllfQ0FOQ0VMKTsKIAlJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPSAxOwogCUNyaXRTZWN0aW9u Q291bnQgPSAwOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j YXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDJl NTRjMTFmODgwLi5lNzBhMDZlNzU0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2xmaW5kLmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgpA QCAtMzQ4OCwxMyArMzQ4OSwxMyBAQCBHZXRDb25mbGljdGluZ1ZpcnR1YWxYSURzKFRyYW5z YWN0aW9uSWQgbGltaXRYbWluLCBPaWQgZGJPaWQpCiAgKiBSZXR1cm5zIHBpZCBvZiB0aGUg cHJvY2VzcyBzaWduYWxlZCwgb3IgMCBpZiBub3QgZm91bmQuCiAgKi8KIHBpZF90Ci1DYW5j ZWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZCwgUHJvY1Np Z25hbFJlYXNvbiBzaWdtb2RlKQorQ2FuY2VsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxU cmFuc2FjdGlvbklkIHZ4aWQsIEludGVycnVwdFR5cGUgcmVhc29uKQogewotCXJldHVybiBT aWduYWxWaXJ0dWFsVHJhbnNhY3Rpb24odnhpZCwgc2lnbW9kZSwgdHJ1ZSk7CisJcmV0dXJu IFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbih2eGlkLCByZWFzb24sIHRydWUpOwogfQogCiBw aWRfdAotU2lnbmFsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4 aWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSwKK1NpZ25hbFZpcnR1YWxUcmFuc2FjdGlv bihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBJbnRlcnJ1cHRUeXBlIHJlYXNvbiwKIAkJ CQkJCSBib29sIGNvbmZsaWN0UGVuZGluZykKIHsKIAlQcm9jQXJyYXlTdHJ1Y3QgKmFycmF5 UCA9IHByb2NBcnJheTsKQEAgLTM1MjIsNyArMzUyMyw3IEBAIFNpZ25hbFZpcnR1YWxUcmFu c2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNp Z21vZGUsCiAJCQkJICogS2lsbCB0aGUgcGlkIGlmIGl0J3Mgc3RpbGwgaGVyZS4gSWYgbm90 LCB0aGF0J3Mgd2hhdCB3ZQogCQkJCSAqIHdhbnRlZCBzbyBpZ25vcmUgYW55IGVycm9ycy4K IAkJCQkgKi8KLQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwocGlkLCBzaWdtb2RlLCB2eGlk LnByb2NOdW1iZXIpOworCQkJCVNlbmRJbnRlcnJ1cHQocmVhc29uLCB2eGlkLnByb2NOdW1i ZXIpOwogCQkJfQogCQkJYnJlYWs7CiAJCX0KQEAgLTM2NTYsNyArMzY1Nyw3IEBAIENvdW50 REJDb25uZWN0aW9ucyhPaWQgZGF0YWJhc2VpZCkKICAqIENhbmNlbERCQmFja2VuZHMgLS0t IGNhbmNlbCBiYWNrZW5kcyB0aGF0IGFyZSB1c2luZyBzcGVjaWZpZWQgZGF0YWJhc2UKICAq Lwogdm9pZAotQ2FuY2VsREJCYWNrZW5kcyhPaWQgZGF0YWJhc2VpZCwgUHJvY1NpZ25hbFJl YXNvbiBzaWdtb2RlLCBib29sIGNvbmZsaWN0UGVuZGluZykKK0NhbmNlbERCQmFja2VuZHMo T2lkIGRhdGFiYXNlaWQsIEludGVycnVwdFR5cGUgcmVhc29uLCBib29sIGNvbmZsaWN0UGVu ZGluZykKIHsKIAlQcm9jQXJyYXlTdHJ1Y3QgKmFycmF5UCA9IHByb2NBcnJheTsKIAlpbnQJ CQlpbmRleDsKQEAgLTM2NzEsMjAgKzM2NzIsMTcgQEAgQ2FuY2VsREJCYWNrZW5kcyhPaWQg ZGF0YWJhc2VpZCwgUHJvY1NpZ25hbFJlYXNvbiBzaWdtb2RlLCBib29sIGNvbmZsaWN0UGVu ZGluZykKIAogCQlpZiAoZGF0YWJhc2VpZCA9PSBJbnZhbGlkT2lkIHx8IHByb2MtPmRhdGFi YXNlSWQgPT0gZGF0YWJhc2VpZCkKIAkJewotCQkJVmlydHVhbFRyYW5zYWN0aW9uSWQgcHJv Y3Z4aWQ7CiAJCQlwaWRfdAkJcGlkOwogCi0JCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9j dnhpZCwgKnByb2MpOwotCiAJCQlwcm9jLT5yZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IGNv bmZsaWN0UGVuZGluZzsKIAkJCXBpZCA9IHByb2MtPnBpZDsKIAkJCWlmIChwaWQgIT0gMCkK IAkJCXsKIAkJCQkvKgotCQkJCSAqIEtpbGwgdGhlIHBpZCBpZiBpdCdzIHN0aWxsIGhlcmUu IElmIG5vdCwgdGhhdCdzIHdoYXQgd2UKLQkJCQkgKiB3YW50ZWQgc28gaWdub3JlIGFueSBl cnJvcnMuCisJCQkJICogQ2FuY2VsIHRoZSBiYWNrZW5kIGlmIGl0J3Mgc3RpbGwgaGVyZS4g SWYgbm90LCB0aGF0J3Mgd2hhdAorCQkJCSAqIHdlIHdhbnRlZCBhbnl3YXkuCiAJCQkJICov Ci0JCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKHBpZCwgc2lnbW9kZSwgcHJvY3Z4aWQucHJv Y051bWJlcik7CisJCQkJU2VuZEludGVycnVwdChyZWFzb24sIHBncHJvY25vKTsKIAkJCX0K IAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWdu YWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBkZGJi MDQxZmY5Zi4uZDNmZGFhZmMzZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2ln bmFsLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5k ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC0zNCwzOCArMzUsMzAgQEAKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAvKgotICogVGhlIFNJR1VTUjEgc2lnbmFsIGlz IG11bHRpcGxleGVkIHRvIHN1cHBvcnQgc2lnbmFsaW5nIG11bHRpcGxlIGV2ZW50Ci0gKiB0 eXBlcy4gVGhlIHNwZWNpZmljIHJlYXNvbiBpcyBjb21tdW5pY2F0ZWQgdmlhIGZsYWdzIGlu IHNoYXJlZCBtZW1vcnkuCi0gKiBXZSBrZWVwIGEgYm9vbGVhbiBmbGFnIGZvciBlYWNoIHBv c3NpYmxlICJyZWFzb24iLCBzbyB0aGF0IGRpZmZlcmVudAotICogcmVhc29ucyBjYW4gYmUg c2lnbmFsZWQgdG8gYSBwcm9jZXNzIGNvbmN1cnJlbnRseS4gIChIb3dldmVyLCBpZiB0aGUg c2FtZQotICogcmVhc29uIGlzIHNpZ25hbGVkIG1vcmUgdGhhbiBvbmNlIG5lYXJseSBzaW11 bHRhbmVvdXNseSwgdGhlIHByb2Nlc3MgbWF5Ci0gKiBvYnNlcnZlIGl0IG9ubHkgb25jZS4p CisgKiBTdGF0ZSBmb3IgdGhlIFByb2NTaWduYWxCYXJyaWVyIG1lY2hhbmlzbSBhbmQgcXVl cnkgY2FuY2VsbGF0aW9uLgogICoKLSAqIEVhY2ggcHJvY2VzcyB0aGF0IHdhbnRzIHRvIHJl Y2VpdmUgc2lnbmFscyByZWdpc3RlcnMgaXRzIHByb2Nlc3MgSUQKLSAqIGluIHRoZSBQcm9j U2lnbmFsU2xvdHMgYXJyYXkuIFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IFByb2NOdW1iZXIg dG8gbWFrZQotICogc2xvdCBhbGxvY2F0aW9uIHNpbXBsZSwgYW5kIHRvIGF2b2lkIGhhdmlu ZyB0byBzZWFyY2ggdGhlIGFycmF5IHdoZW4geW91Ci0gKiBrbm93IHRoZSBQcm9jTnVtYmVy IG9mIHRoZSBwcm9jZXNzIHlvdSdyZSBzaWduYWxpbmcuICAoV2UgZG8gc3VwcG9ydAotICog c2lnbmFsaW5nIHdpdGhvdXQgUHJvY051bWJlciwgYnV0IGl0J3MgYSBiaXQgbGVzcyBlZmZp Y2llbnQuKQorICogRWFjaCBwcm9jZXNzIHRoYXQgd2FudHMgdG8gcGFydGljaXBhdGUgaW4g YmFycmllcnMgb3IgcXVlcnkgY2FuY2VsbGF0aW9uCisgKiByZWdpc3RlcnMgaXRzIHByb2Nl c3MgSUQgaW4gdGhlIFByb2NTaWduYWxTbG90cyBhcnJheS4gVGhlIGFycmF5IGlzIGluZGV4 ZWQKKyAqIGJ5IFByb2NOdW1iZXIgdG8gbWFrZSBzbG90IGFsbG9jYXRpb24gc2ltcGxlLgog ICoKICAqIFRoZSBmaWVsZHMgaW4gZWFjaCBzbG90IGFyZSBwcm90ZWN0ZWQgYnkgYSBzcGlu bG9jaywgcHNzX211dGV4LiBwc3NfcGlkIGNhbgogICogYWxzbyBiZSByZWFkIHdpdGhvdXQg aG9sZGluZyB0aGUgc3BpbmxvY2ssIGFzIGEgcXVpY2sgcHJlbGltaW5hcnkgY2hlY2sKICAq IHdoZW4gc2VhcmNoaW5nIGZvciBhIHBhcnRpY3VsYXIgUElEIGluIHRoZSBhcnJheS4KICAq Ci0gKiBwc3Nfc2lnbmFsRmxhZ3MgYXJlIGludGVuZGVkIHRvIGJlIHNldCBpbiBjYXNlcyB3 aGVyZSB3ZSBkb24ndCBuZWVkIHRvCi0gKiBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90 IHRoZSB0YXJnZXQgcHJvY2VzcyBoYXMgaGFuZGxlZCB0aGUgc2lnbmFsLAotICogYnV0IHNv bWV0aW1lcyB3ZSBuZWVkIGNvbmZpcm1hdGlvbiwgYXMgd2hlbiBtYWtpbmcgYSBnbG9iYWwg c3RhdGUgY2hhbmdlCi0gKiB0aGF0IGNhbm5vdCBiZSBjb25zaWRlcmVkIGNvbXBsZXRlIHVu dGlsIGFsbCBiYWNrZW5kcyBoYXZlIHRha2VuIG5vdGljZQotICogb2YgaXQuIEZvciBzdWNo IHVzZSBjYXNlcywgd2Ugc2V0IGEgYml0IGluIHBzc19iYXJyaWVyQ2hlY2tNYXNrIGFuZCB0 aGVuCisgKiBQbGFpbiBpbnRlcnJ1cHRzIGFyZSBpbnRlbmRlZCB0byBiZSBzZXQgaW4gY2Fz ZXMgd2hlcmUgd2UgZG9uJ3QgbmVlZCB0bworICoga2VlcCB0cmFjayBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgdGFyZ2V0IHByb2Nlc3MgaGFzIGhhbmRsZWQgdGhlIHNpZ25hbCwgYnV0Cisg KiBzb21ldGltZXMgd2UgbmVlZCBjb25maXJtYXRpb24sIGFzIHdoZW4gbWFraW5nIGEgZ2xv YmFsIHN0YXRlIGNoYW5nZSB0aGF0CisgKiBjYW5ub3QgYmUgY29uc2lkZXJlZCBjb21wbGV0 ZSB1bnRpbCBhbGwgYmFja2VuZHMgaGF2ZSB0YWtlbiBub3RpY2Ugb2YKKyAqIGl0LiBGb3Ig c3VjaCB1c2UgY2FzZXMsIHdlIHNldCBhIGJpdCBpbiBwc3NfYmFycmllckNoZWNrTWFzayBh bmQgdGhlbgogICogaW5jcmVtZW50IHRoZSBjdXJyZW50ICJiYXJyaWVyIGdlbmVyYXRpb24i OyB3aGVuIHRoZSBuZXcgYmFycmllciBnZW5lcmF0aW9uCi0gKiAob3IgZ3JlYXRlcikgYXBw ZWFycyBpbiB0aGUgcHNzX2JhcnJpZXJHZW5lcmF0aW9uIGZsYWcgb2YgZXZlcnkgcHJvY2Vz cywKLSAqIHdlIGtub3cgdGhhdCB0aGUgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZCBldmVy eXdoZXJlLgorICogKG9yIGdyZWF0ZXIpIGFwcGVhcnMgaW4gdGhlIHBzc19iYXJyaWVyR2Vu ZXJhdGlvbiBmbGFnIG9mIGV2ZXJ5IHByb2Nlc3MsIHdlCisgKiBrbm93IHRoYXQgdGhlIG1l c3NhZ2UgaGFzIGJlZW4gcmVjZWl2ZWQgZXZlcnl3aGVyZS4KICAqLwogdHlwZWRlZiBzdHJ1 Y3QKIHsKIAlwZ19hdG9taWNfdWludDMyIHBzc19waWQ7CiAJYm9vbAkJcHNzX2NhbmNlbF9r ZXlfdmFsaWQ7CiAJaW50MzIJCXBzc19jYW5jZWxfa2V5OwotCXZvbGF0aWxlIHNpZ19hdG9t aWNfdCBwc3Nfc2lnbmFsRmxhZ3NbTlVNX1BST0NTSUdOQUxTXTsKIAlzbG9ja190CQlwc3Nf bXV0ZXg7CQkvKiBwcm90ZWN0cyB0aGUgYWJvdmUgZmllbGRzICovCiAKIAkvKiBCYXJyaWVy LXJlbGF0ZWQgZmllbGRzIChub3QgcHJvdGVjdGVkIGJ5IHBzc19tdXRleCkgKi8KQEAgLTEw NCw3ICs5Nyw2IEBAIHN0cnVjdCBQcm9jU2lnbmFsSGVhZGVyCiBOT05fRVhFQ19TVEFUSUMg UHJvY1NpZ25hbEhlYWRlciAqUHJvY1NpZ25hbCA9IE5VTEw7CiBzdGF0aWMgUHJvY1NpZ25h bFNsb3QgKk15UHJvY1NpZ25hbFNsb3QgPSBOVUxMOwogCi1zdGF0aWMgYm9vbCBDaGVja1By b2NTaWduYWwoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogc3RhdGljIHZvaWQgQ2xlYW51 cFByb2NTaWduYWxTdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQg UmVzZXRQcm9jU2lnbmFsQmFycmllckJpdHModWludDMyIGZsYWdzKTsKIApAQCAtMTUwLDcg KzE0Miw2IEBAIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCkKIAkJCXBnX2F0b21pY19pbml0 X3UzMigmc2xvdC0+cHNzX3BpZCwgMCk7CiAJCQlzbG90LT5wc3NfY2FuY2VsX2tleV92YWxp ZCA9IGZhbHNlOwogCQkJc2xvdC0+cHNzX2NhbmNlbF9rZXkgPSAwOwotCQkJTWVtU2V0KHNs b3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBzc19zaWduYWxGbGFncykp OwogCQkJcGdfYXRvbWljX2luaXRfdTY0KCZzbG90LT5wc3NfYmFycmllckdlbmVyYXRpb24s IFBHX1VJTlQ2NF9NQVgpOwogCQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFy cmllckNoZWNrTWFzaywgMCk7CiAJCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3QtPnBz c19iYXJyaWVyQ1YpOwpAQCAtMTgwLDkgKzE3MSw2IEBAIFByb2NTaWduYWxJbml0KGJvb2wg Y2FuY2VsX2tleV92YWxpZCwgaW50MzIgY2FuY2VsX2tleSkKIAkvKiBWYWx1ZSB1c2VkIGZv ciBzYW5pdHkgY2hlY2sgYmVsb3cgKi8KIAlvbGRfcHNzX3BpZCA9IHBnX2F0b21pY19yZWFk X3UzMigmc2xvdC0+cHNzX3BpZCk7CiAKLQkvKiBDbGVhciBvdXQgYW55IGxlZnRvdmVyIHNp Z25hbCByZWFzb25zICovCi0JTWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgTlVN X1BST0NTSUdOQUxTICogc2l6ZW9mKHNpZ19hdG9taWNfdCkpOwotCiAJLyoKIAkgKiBJbml0 aWFsaXplIGJhcnJpZXIgc3RhdGUuIFNpbmNlIHdlJ3JlIGEgYnJhbmQtbmV3IHByb2Nlc3Ms IHRoZXJlCiAJICogc2hvdWxkbid0IGJlIGFueSBsZWZ0b3ZlciBiYWNrZW5kLXByaXZhdGUg c3RhdGUgdGhhdCBuZWVkcyB0byBiZQpAQCAtMjMwLDkgKzIxOCwxMCBAQCBDbGVhbnVwUHJv Y1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZykKIAlQcm9jU2lnbmFsU2xvdCAq c2xvdCA9IE15UHJvY1NpZ25hbFNsb3Q7CiAKIAkvKgotCSAqIENsZWFyIE15UHJvY1NpZ25h bFNsb3QsIHNvIHRoYXQgYSBTSUdVU1IxIHJlY2VpdmVkIGFmdGVyIHRoaXMgcG9pbnQKLQkg KiB3b24ndCB0cnkgdG8gYWNjZXNzIGl0IGFmdGVyIGl0J3Mgbm8gbG9uZ2VyIG91cnMgKGFu ZCBwZXJoYXBzIGV2ZW4KLQkgKiBhZnRlciB3ZSd2ZSB1bm1hcHBlZCB0aGUgc2hhcmVkIG1l bW9yeSBzZWdtZW50KS4KKwkgKiBDbGVhciBNeVByb2NTaWduYWxTbG90LCBzbyB0aGF0IGlm IElOVEVSUlVQVF9CQVJSSUVSIGlzIHJlY2VpdmVkIGFmdGVyCisJICogdGhpcyBwb2ludCwg UHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCkgd29uJ3QgdHJ5IHRvIGFjY2VzcyBpdCBhZnRl cgorCSAqIGl0J3Mgbm8gbG9uZ2VyIG91cnMgKGFuZCBwZXJoYXBzIGV2ZW4gYWZ0ZXIgd2Un dmUgdW5tYXBwZWQgdGhlIHNoYXJlZAorCSAqIG1lbW9yeSBzZWdtZW50KS4KIAkgKi8KIAlB c3NlcnQoTXlQcm9jU2lnbmFsU2xvdCAhPSBOVUxMKTsKIAlNeVByb2NTaWduYWxTbG90ID0g TlVMTDsKQEAgLTI2OCw3MyArMjU3LDYgQEAgQ2xlYW51cFByb2NTaWduYWxTdGF0ZShpbnQg c3RhdHVzLCBEYXR1bSBhcmcpCiAJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJnNsb3Qt PnBzc19iYXJyaWVyQ1YpOwogfQogCi0vKgotICogU2VuZFByb2NTaWduYWwKLSAqCQlTZW5k IGEgc2lnbmFsIHRvIGEgUG9zdGdyZXMgcHJvY2VzcwotICoKLSAqIFByb3ZpZGluZyBwcm9j TnVtYmVyIGlzIG9wdGlvbmFsLCBidXQgaXQgd2lsbCBzcGVlZCB1cCB0aGUgb3BlcmF0aW9u LgotICoKLSAqIE9uIHN1Y2Nlc3MgKGEgc2lnbmFsIHdhcyBzZW50KSwgemVybyBpcyByZXR1 cm5lZC4KLSAqIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCwgYW5kIGVycm5vIGlzIHNldCAo dHlwaWNhbGx5IHRvIEVTUkNIIG9yIEVQRVJNKS4KLSAqCi0gKiBOb3QgdG8gYmUgY29uZnVz ZWQgd2l0aCBQcm9jU2VuZFNpZ25hbAotICovCi1pbnQKLVNlbmRQcm9jU2lnbmFsKHBpZF90 IHBpZCwgUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFByb2NOdW1iZXIgcHJvY051bWJlcikK LXsKLQl2b2xhdGlsZSBQcm9jU2lnbmFsU2xvdCAqc2xvdDsKLQotCWlmIChwcm9jTnVtYmVy ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCi0JewotCQlBc3NlcnQocHJvY051bWJlciA8IE51 bVByb2NTaWduYWxTbG90cyk7Ci0JCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbcHJv Y051bWJlcl07Ci0KLQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5wc3NfbXV0ZXgpOwotCQlp ZiAocGdfYXRvbWljX3JlYWRfdTMyKCZzbG90LT5wc3NfcGlkKSA9PSBwaWQpCi0JCXsKLQkJ CS8qIEF0b21pY2FsbHkgc2V0IHRoZSBwcm9wZXIgZmxhZyAqLwotCQkJc2xvdC0+cHNzX3Np Z25hbEZsYWdzW3JlYXNvbl0gPSB0cnVlOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5w c3NfbXV0ZXgpOwotCQkJLyogU2VuZCBzaWduYWwgKi8KLQkJCXJldHVybiBraWxsKHBpZCwg U0lHVVNSMSk7Ci0JCX0KLQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3NfbXV0ZXgpOwot CX0KLQllbHNlCi0JewotCQkvKgotCQkgKiBwcm9jTnVtYmVyIG5vdCBwcm92aWRlZCwgc28g c2VhcmNoIHRoZSBhcnJheSB1c2luZyBwaWQuICBXZSBzZWFyY2gKLQkJICogdGhlIGFycmF5 IGJhY2sgdG8gZnJvbnQgc28gYXMgdG8gcmVkdWNlIHNlYXJjaCBvdmVyaGVhZC4gIFBhc3Np bmcKLQkJICogSU5WQUxJRF9QUk9DX05VTUJFUiBtZWFucyB0aGF0IHRoZSB0YXJnZXQgaXMg bW9zdCBsaWtlbHkgYW4KLQkJICogYXV4aWxpYXJ5IHByb2Nlc3MsIHdoaWNoIHdpbGwgaGF2 ZSBhIHNsb3QgbmVhciB0aGUgZW5kIG9mIHRoZQotCQkgKiBhcnJheS4KLQkJICovCi0JCWlu dAkJCWk7Ci0KLQkJZm9yIChpID0gTnVtUHJvY1NpZ25hbFNsb3RzIC0gMTsgaSA+PSAwOyBp LS0pCi0JCXsKLQkJCXNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0KLQkJCWlm IChwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpID09IHBpZCkKLQkJCXsKLQkJ CQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQkJaWYgKHBnX2F0b21p Y19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCkgPT0gcGlkKQotCQkJCXsKLQkJCQkJLyogQXRv bWljYWxseSBzZXQgdGhlIHByb3BlciBmbGFnICovCi0JCQkJCXNsb3QtPnBzc19zaWduYWxG bGFnc1tyZWFzb25dID0gdHJ1ZTsKLQkJCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5wc3Nf bXV0ZXgpOwotCQkJCQkvKiBTZW5kIHNpZ25hbCAqLwotCQkJCQlyZXR1cm4ga2lsbChwaWQs IFNJR1VTUjEpOwotCQkJCX0KLQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRl eCk7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQllcnJubyA9IEVTUkNIOwotCXJldHVybiAtMTsKLX0K LQogLyoKICAqIEVtaXRQcm9jU2lnbmFsQmFycmllcgogICoJCVNlbmQgYSBzaWduYWwgdG8g ZXZlcnkgUG9zdGdyZXMgcHJvY2VzcwpAQCAtMzc5LDggKzMwMSw4IEBAIEVtaXRQcm9jU2ln bmFsQmFycmllcihQcm9jU2lnbmFsQmFycmllclR5cGUgdHlwZSkKIAkJcGdfYXRvbWljX2Fk ZF9mZXRjaF91NjQoJlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwgMSk7CiAK IAkvKgotCSAqIFNpZ25hbCBhbGwgdGhlIHByb2Nlc3Nlcywgc28gdGhhdCB0aGV5IHVwZGF0 ZSB0aGVpciBhZHZlcnRpc2VkIGJhcnJpZXIKLQkgKiBnZW5lcmF0aW9uLgorCSAqIFNlbmQg YW4gaW50ZXJydXB0IHRvIGFsbCB0aGUgcHJvY2Vzc2VzLCBzbyB0aGF0IHRoZXkgdXBkYXRl IHRoZWlyCisJICogYWR2ZXJ0aXNlZCBiYXJyaWVyIGdlbmVyYXRpb24uCiAJICoKIAkgKiBD b25jdXJyZW5jeSBpcyBub3QgYSBwcm9ibGVtIGhlcmUuIEJhY2tlbmRzIHRoYXQgaGF2ZSBl eGl0ZWQgZG9uJ3QKIAkgKiBtYXR0ZXIsIGFuZCBuZXcgYmFja2VuZHMgdGhhdCBoYXZlIGpv aW5lZCBzaW5jZSB3ZSBlbnRlcmVkIHRoaXMKQEAgLTM5MSwyNiArMzEzLDggQEAgRW1pdFBy b2NTaWduYWxCYXJyaWVyKFByb2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKQogCSAqIGJhY2tl bmRzIHRoYXQgbmVlZCB0byB1cGRhdGUgc3RhdGUgLSBidXQgdGhleSB3b24ndCBhY3R1YWxs eSBuZWVkIHRvCiAJICogY2hhbmdlIGFueSBzdGF0ZS4KIAkgKi8KLQlmb3IgKGludCBpID0g TnVtUHJvY1NpZ25hbFNsb3RzIC0gMTsgaSA+PSAwOyBpLS0pCi0JewotCQl2b2xhdGlsZSBQ cm9jU2lnbmFsU2xvdCAqc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKLQkJcGlk X3QJCXBpZCA9IHBnX2F0b21pY19yZWFkX3UzMigmc2xvdC0+cHNzX3BpZCk7Ci0KLQkJaWYg KHBpZCAhPSAwKQotCQl7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPnBzc19tdXRleCk7 Ci0JCQlwaWQgPSBwZ19hdG9taWNfcmVhZF91MzIoJnNsb3QtPnBzc19waWQpOwotCQkJaWYg KHBpZCAhPSAwKQotCQkJewotCQkJCS8qIHNlZSBTZW5kUHJvY1NpZ25hbCBmb3IgZGV0YWls cyAqLwotCQkJCXNsb3QtPnBzc19zaWduYWxGbGFnc1tQUk9DU0lHX0JBUlJJRVJdID0gdHJ1 ZTsKLQkJCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPnBzc19tdXRleCk7Ci0JCQkJa2lsbChw aWQsIFNJR1VTUjEpOwotCQkJfQotCQkJZWxzZQotCQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xv dC0+cHNzX211dGV4KTsKLQkJfQotCX0KKwlmb3IgKFByb2NOdW1iZXIgcGdwcm9jbm8gPSAw OyBwZ3Byb2NubyA8IE51bVByb2NTaWduYWxTbG90czsgcGdwcm9jbm8rKykKKwkJU2VuZElu dGVycnVwdChJTlRFUlJVUFRfQkFSUklFUiwgcGdwcm9jbm8pOwogCiAJcmV0dXJuIGdlbmVy YXRpb247CiB9CkBAIC00NjksMjMgKzM3Myw2IEBAIFdhaXRGb3JQcm9jU2lnbmFsQmFycmll cih1aW50NjQgZ2VuZXJhdGlvbikKIAlwZ19tZW1vcnlfYmFycmllcigpOwogfQogCi0vKgot ICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBnbG9iYWwg YmFycmllciBldmVudC4KLSAqCi0gKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVk IHRvIFByb2Nlc3NQcm9jU2lnbmFsQmFycmllcigpLCBiZWNhdXNlIHdlCi0gKiBjYW5ub3Qg c2FmZWx5IGFjY2VzcyB0aGUgYmFycmllciBnZW5lcmF0aW9uIGluc2lkZSB0aGUgc2lnbmFs IGhhbmRsZXIgYXMKLSAqIDY0Yml0IGF0b21pY3MgbWlnaHQgdXNlIHNwaW5sb2NrIGJhc2Vk IGVtdWxhdGlvbiwgZXZlbiBmb3IgcmVhZHMuIEFzIHRoaXMKLSAqIHJvdXRpbmUgb25seSBn ZXRzIGNhbGxlZCB3aGVuIFBST0NTSUdfQkFSUklFUiBpcyBzZW50IHRoYXQgd29uJ3QgY2F1 c2UgYQotICogbG90IG9mIHVubmVjZXNzYXJ5IHdvcmsuCi0gKi8KLXN0YXRpYyB2b2lkCi1I YW5kbGVQcm9jU2lnbmFsQmFycmllckludGVycnVwdCh2b2lkKQotewotCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOwotCVByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9IHRydWU7Ci0JLyog aW50ZXJydXB0IHdpbGwgYmUgcmFpc2VkIGJ5IHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy ICovCi19Ci0KIC8qCiAgKiBQZXJmb3JtIGdsb2JhbCBiYXJyaWVyIHJlbGF0ZWQgaW50ZXJy dXB0IGNoZWNraW5nLgogICoKQEAgLTUwMSwxMiArMzg4LDEyIEBAIFByb2Nlc3NQcm9jU2ln bmFsQmFycmllcih2b2lkKQogCXVpbnQ2NAkJc2hhcmVkX2dlbjsKIAl2b2xhdGlsZSB1aW50 MzIgZmxhZ3M7CiAKLQlBc3NlcnQoTXlQcm9jU2lnbmFsU2xvdCk7Ci0KIAkvKiBFeGl0IHF1 aWNrbHkgaWYgdGhlcmUncyBubyB3b3JrIHRvIGRvLiAqLwotCWlmICghUHJvY1NpZ25hbEJh cnJpZXJQZW5kaW5nKQorCWlmICghQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQkFSUklF UikpCisJCXJldHVybjsKKworCWlmIChNeVByb2NTaWduYWxTbG90ID09IE5VTEwpCiAJCXJl dHVybjsKLQlQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSBmYWxzZTsKIAogCS8qCiAJICog SXQncyBub3QgdW5saWtlbHkgdG8gcHJvY2VzcyBtdWx0aXBsZSBiYXJyaWVycyBhdCBvbmNl LCBiZWZvcmUgdGhlCkBAIC02MzUsODYgKzUyMiw3IEBAIHN0YXRpYyB2b2lkCiBSZXNldFBy b2NTaWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpCiB7CiAJcGdfYXRvbWljX2ZldGNo X29yX3UzMigmTXlQcm9jU2lnbmFsU2xvdC0+cHNzX2JhcnJpZXJDaGVja01hc2ssIGZsYWdz KTsKLQlQcm9jU2lnbmFsQmFycmllclBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRp bmcgPSB0cnVlOwotfQotCi0vKgotICogQ2hlY2tQcm9jU2lnbmFsIC0gY2hlY2sgdG8gc2Vl IGlmIGEgcGFydGljdWxhciByZWFzb24gaGFzIGJlZW4KLSAqIHNpZ25hbGVkLCBhbmQgY2xl YXIgdGhlIHNpZ25hbCBmbGFnLiAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciByZWNlaXZpbmcK LSAqIFNJR1VTUjEuCi0gKi8KLXN0YXRpYyBib29sCi1DaGVja1Byb2NTaWduYWwoUHJvY1Np Z25hbFJlYXNvbiByZWFzb24pCi17Ci0Jdm9sYXRpbGUgUHJvY1NpZ25hbFNsb3QgKnNsb3Qg PSBNeVByb2NTaWduYWxTbG90OwotCi0JaWYgKHNsb3QgIT0gTlVMTCkKLQl7Ci0JCS8qCi0J CSAqIENhcmVmdWwgaGVyZSAtLS0gZG9uJ3QgY2xlYXIgZmxhZyBpZiB3ZSBoYXZlbid0IHNl ZW4gaXQgc2V0LgotCQkgKiBwc3Nfc2lnbmFsRmxhZ3MgaXMgb2YgdHlwZSAidm9sYXRpbGUg c2lnX2F0b21pY190IiB0byBhbGxvdyB1cyB0bwotCQkgKiByZWFkIGl0IGhlcmUgc2FmZWx5 LCB3aXRob3V0IGhvbGRpbmcgdGhlIHNwaW5sb2NrLgotCQkgKi8KLQkJaWYgKHNsb3QtPnBz c19zaWduYWxGbGFnc1tyZWFzb25dKQotCQl7Ci0JCQlzbG90LT5wc3Nfc2lnbmFsRmxhZ3Nb cmVhc29uXSA9IGZhbHNlOwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4g ZmFsc2U7Ci19Ci0KLS8qCi0gKiBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAtIGhhbmRs ZSBTSUdVU1IxIHNpZ25hbC4KLSAqLwotdm9pZAotcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRs ZXIoU0lHTkFMX0FSR1MpCi17Ci0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0NBVENI VVBfSU5URVJSVVBUKSkKLQkJSGFuZGxlQ2F0Y2h1cEludGVycnVwdCgpOwotCi0JaWYgKENo ZWNrUHJvY1NpZ25hbChQUk9DU0lHX05PVElGWV9JTlRFUlJVUFQpKQotCQlIYW5kbGVOb3Rp ZnlJbnRlcnJ1cHQoKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExF TF9NRVNTQUdFKSkKLQkJSGFuZGxlUGFyYWxsZWxNZXNzYWdlSW50ZXJydXB0KCk7Ci0KLQlp ZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcpKQotCQlI YW5kbGVXYWxTbmRJbml0U3RvcHBpbmcoKTsKLQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJP Q1NJR19CQVJSSUVSKSkKLQkJSGFuZGxlUHJvY1NpZ25hbEJhcnJpZXJJbnRlcnJ1cHQoKTsK LQotCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQot CQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9j U2lnbmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCi0JCUhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQotCQlIYW5kbGVSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwot Ci0JaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxF U1BBQ0UpKQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSykpCi0JCUhhbmRsZVJlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLKTsKLQotCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCi0J CUhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TTkFQU0hPVCk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50 ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOwotCi0JaWYg KENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVB RExPQ0spKQotCQlIYW5kbGVSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7Ci0KLQlpZiAoQ2hlY2tQcm9jU2ln bmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKSkKLQkJSGFuZGxlUmVj b3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZF UlBJTik7Ci0KLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJ bnRlcnJ1cHQoSU5URVJSVVBUX0JBUlJJRVIpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htX21xLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1fbXEuYwppbmRleCAwYTk4NzlkNzAyNC4uMjkyNjhiODhlMzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobV9tcS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobV9tcS5jCkBAIC00LDkgKzQsMTAgQEAKICAqCSAgc2luZ2xlLXJlYWRl ciwgc2luZ2xlLXdyaXRlciBzaGFyZWQgbWVtb3J5IG1lc3NhZ2UgcXVldWUKICAqCiAgKiBC b3RoIHRoZSBzZW5kZXIgYW5kIHRoZSByZWNlaXZlciBtdXN0IGhhdmUgYSBQR1BST0M7IHRo ZWlyIHJlc3BlY3RpdmUKLSAqIHByb2Nlc3MgaW50ZXJydXB0cyBhcmUgdXNlZCBmb3Igc3lu Y2hyb25pemF0aW9uLiAgT25seSB0aGUgc2VuZGVyIG1heSBzZW5kLAotICogYW5kIG9ubHkg dGhlIHJlY2VpdmVyIG1heSByZWNlaXZlLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBhbGxvdyBh IHVzZXIKLSAqIGJhY2tlbmQgdG8gY29tbXVuaWNhdGUgd2l0aCB3b3JrZXIgYmFja2VuZHMg dGhhdCBpdCBoYXMgcmVnaXN0ZXJlZC4KKyAqIElOVEVSUlVQVF9HRU5FUkFMIGludGVycnVw dHMgYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbi4gIE9ubHkgdGhlCisgKiBzZW5kZXIg bWF5IHNlbmQsIGFuZCBvbmx5IHRoZSByZWNlaXZlciBtYXkgcmVjZWl2ZS4gIFRoaXMgaXMg aW50ZW5kZWQgdG8KKyAqIGFsbG93IGEgdXNlciBiYWNrZW5kIHRvIGNvbW11bmljYXRlIHdp dGggd29ya2VyIGJhY2tlbmRzIHRoYXQgaXQgaGFzCisgKiByZWdpc3RlcmVkLgogICoKICAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKQEAgLTQ5LDcgKzUwLDYgQEAK ICAqIGludGVycnVwdCB0byB0aGUgY291bnRlcnBhcnR5LCB0aGUgY291bnRlcnBhcnR5IG11 c3QgYmUgY2VydGFpbiB0byBzZWUgdGhlCiAgKiBjaGFuZ2UgYWZ0ZXIgd2FraW5nIHVwLiAg U2luY2UgU2VuZEludGVycnVwdCBiZWdpbnMgd2l0aCBhIG1lbW9yeSBiYXJyaWVyCiAgKiBh bmQgQ2xlYXJJbnRlcnJ1cHQgZW5kcyB3aXRoIG9uZSwgdGhpcyBzaG91bGQgYmUgT0suCi0g KiBYWFg6IE5vIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycyBpbiBTZW5kSW50dGVydXB0L0Ns ZWFySW50ZXJydXB0LCBkbyB3ZSBuZWVkIHRvIGFkZCBzb21lPwogICoKICAqIG1xX3Jpbmdf c2l6ZSBhbmQgbXFfcmluZ19vZmZzZXQgbmV2ZXIgY2hhbmdlIGFmdGVyIGluaXRpYWxpemF0 aW9uLCBhbmQKICAqIGNhbiB0aGVyZWZvcmUgYmUgcmVhZCB3aXRob3V0IHRoZSBsb2NrLgpA QCAtMTE1LDYgKzExNSw3IEBAIHN0cnVjdCBzaG1fbXEKICAqIGRhdGEgaXMgMS80dGggb2Yg dGhlIHJpbmcgc2l6ZSBvciB0aGUgdHVwbGUgcXVldWUgaXMgZnVsbC4gIFRoaXMgd2lsbAog ICogcHJldmVudCBmcmVxdWVudCBDUFUgY2FjaGUgbWlzc2VzLCBhbmQgaXQgd2lsbCBhbHNv IGF2b2lkIGZyZXF1ZW50CiAgKiBTZW5kSW50ZXJydXB0KCkgY2FsbHMsIHdoaWNoIGFyZSBx dWl0ZSBleHBlbnNpdmUuCisgKiBYWFg6IEl0J3Mgbm90IHRoYXQgZXhwZW5zaXZlIGFueW1v cmUsIGlmIHRoZSBwcm9jZXNzIGlzbid0IGN1cnJlbnRseSB3YWl0aW5nCiAgKgogICogbXFo X3BhcnRpYWxfYnl0ZXMsIG1xaF9leHBlY3RlZF9ieXRlcywgYW5kIG1xaF9sZW5ndGhfd29y ZF9jb21wbGV0ZQogICogYXJlIHVzZWQgdG8gdHJhY2sgdGhlIHN0YXRlIG9mIG5vbi1ibG9j a2luZyBvcGVyYXRpb25zLiAgV2hlbiB0aGUgY2FsbGVyCkBAIC0zNDMsMTYgKzM0NCwxNSBA QCBzaG1fbXFfc2VuZChzaG1fbXFfaGFuZGxlICptcWgsIFNpemUgbmJ5dGVzLCBjb25zdCB2 b2lkICpkYXRhLCBib29sIG5vd2FpdCwKICAqIFdyaXRlIGEgbWVzc2FnZSBpbnRvIGEgc2hh cmVkIG1lc3NhZ2UgcXVldWUsIGdhdGhlcmVkIGZyb20gbXVsdGlwbGUKICAqIGFkZHJlc3Nl cy4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3YWl0IG9uIG91ciBwcm9j ZXNzIGludGVycnVwdCB3aGVuIHRoZSByaW5nCi0gKiBidWZmZXIgZmlsbHMgdXAsIGFuZCB0 aGVuIGNvbnRpbnVlIHdyaXRpbmcgb25jZSB0aGUgcmVjZWl2ZXIgaGFzIGRyYWluZWQKLSAq IHNvbWUgZGF0YS4gIFRoZSBwcm9jZXNzIGludGVycnVwdCBpcyBjbGVhcmVkIGFmdGVyIGVh Y2ggd2FpdC4KKyAqIFdoZW4gbm93YWl0ID0gZmFsc2UsIHdlJ2xsIHdhaXQgd2hlbiB0aGUg cmluZyBidWZmZXIgZmlsbHMgdXAsIGFuZCB0aGVuCisgKiBjb250aW51ZSB3cml0aW5nIG9u Y2UgdGhlIHJlY2VpdmVyIGhhcyBkcmFpbmVkIHNvbWUgZGF0YS4KICAqCi0gKiBXaGVuIG5v d2FpdCA9IHRydWUsIHdlIGRvIG5vdCBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJv Y2VzcyBpbnRlcnJ1cHQ7Ci0gKiBpbnN0ZWFkLCBpZiB0aGUgYnVmZmVyIGJlY29tZXMgZnVs bCwgd2UgcmV0dXJuIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluCi0gKiB0aGlzIGNhc2UsIHRo ZSBjYWxsZXIgc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbiwgd2l0aCB0aGUgc2Ft ZQotICogYXJndW1lbnRzLCBlYWNoIHRpbWUgdGhlIHByb2Nlc3MgaW50ZXJydXB0IGlzIHNl dC4gIChPbmNlIGJlZ3VuLCB0aGUgc2VuZGluZwotICogb2YgYSBtZXNzYWdlIGNhbm5vdCBi ZSBhYm9ydGVkIGV4Y2VwdCBieSBkZXRhY2hpbmcgZnJvbSB0aGUgcXVldWU7IGNoYW5naW5n Ci0gKiB0aGUgbGVuZ3RoIG9yIHBheWxvYWQgd2lsbCBjb3JydXB0IHRoZSBxdWV1ZS4pCisg KiBXaGVuIG5vd2FpdCA9IHRydWUsIGlmIHRoZSBidWZmZXIgYmVjb21lcyBmdWxsLCB3ZSBy ZXR1cm4KKyAqIFNITV9NUV9XT1VMRF9CTE9DSy4gIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxl ciBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBhZ2Fpbiwgd2l0aCB0aGUgc2FtZSBh cmd1bWVudHMsIGVhY2ggdGltZSB0aGUgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0Cisg KiBpcyBzZXQuICAoT25jZSBiZWd1biwgdGhlIHNlbmRpbmcgb2YgYSBtZXNzYWdlIGNhbm5v dCBiZSBhYm9ydGVkIGV4Y2VwdCBieQorICogZGV0YWNoaW5nIGZyb20gdGhlIHF1ZXVlOyBj aGFuZ2luZyB0aGUgbGVuZ3RoIG9yIHBheWxvYWQgd2lsbCBjb3JydXB0IHRoZQorICogcXVl dWUuKQogICoKICAqIFdoZW4gZm9yY2VfZmx1c2ggPSB0cnVlLCB3ZSBpbW1lZGlhdGVseSB1 cGRhdGUgdGhlIHNobV9tcSdzIG1xX2J5dGVzX3dyaXR0ZW4KICAqIGFuZCBub3RpZnkgdGhl IHJlY2VpdmVyIChpZiBpdCBpcyBhbHJlYWR5IGF0dGFjaGVkKS4gIE90aGVyd2lzZSwgd2Ug ZG9uJ3QKQEAgLTU1OSwxNiArNTU5LDE1IEBAIHNobV9tcV9zZW5kdihzaG1fbXFfaGFuZGxl ICptcWgsIHNobV9tcV9pb3ZlYyAqaW92LCBpbnQgaW92Y250LCBib29sIG5vd2FpdCwKICAq IHdoaWxlIHN0aWxsIGFsbG93aW5nIGxvbmdlciBtZXNzYWdlcy4gIEluIGVpdGhlciBjYXNl LCB0aGUgcmV0dXJuIHZhbHVlCiAgKiByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBuZXh0IHJl Y2VpdmUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbiB0aGUgcXVldWUuCiAgKgotICogV2hl biBub3dhaXQgPSBmYWxzZSwgd2UnbGwgd2FpdCBvbiBvdXIgcHJvY2VzcyBpbnRlcnJ1cHQg d2hlbiB0aGUgcmluZwotICogYnVmZmVyIGlzIGVtcHR5IGFuZCB3ZSBoYXZlIG5vdCB5ZXQg cmVjZWl2ZWQgYSBmdWxsIG1lc3NhZ2UuICBUaGUgc2VuZGVyCi0gKiB3aWxsIHNldCBvdXIg cHJvY2VzcyBpbnRlcnJ1cHQgYWZ0ZXIgbW9yZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4sIGFu ZCB3ZSdsbAotICogcmVzdW1lIHByb2Nlc3NpbmcuICBFYWNoIGNhbGwgd2lsbCB0aGVyZWZv cmUgcmV0dXJuIGEgY29tcGxldGUgbWVzc2FnZQotICogKHVubGVzcyB0aGUgc2VuZGVyIGRl dGFjaGVzIHRoZSBxdWV1ZSkuCisgKiBXaGVuIG5vd2FpdCA9IGZhbHNlLCB3ZSdsbCB3aGVu IHRoZSByaW5nIGJ1ZmZlciBpcyBlbXB0eSBhbmQgd2UgaGF2ZSBub3QKKyAqIHlldCByZWNl aXZlZCBhIGZ1bGwgbWVzc2FnZS4gIFRoZSBzZW5kZXIgd2lsbCBzZW5kIHVzIElOVEVSUlVQ VF9HRU5FUkFMCisgKiBhZnRlciBtb3JlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiwgYW5kIHdl J2xsIHJlc3VtZSBwcm9jZXNzaW5nLiAgRWFjaCBjYWxsCisgKiB3aWxsIHRoZXJlZm9yZSBy ZXR1cm4gYSBjb21wbGV0ZSBtZXNzYWdlICh1bmxlc3MgdGhlIHNlbmRlciBkZXRhY2hlcyB0 aGUKKyAqIHF1ZXVlKS4KICAqCi0gKiBXaGVuIG5vd2FpdCA9IHRydWUsIHdlIGRvIG5vdCBt YW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcwotICogaW50ZXJydXB0OyBpbnN0 ZWFkLCB3aGVuZXZlciB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCB3ZSBuZWVkIHRvIHJlYWQg ZnJvbQotICogaXQsIHdlIHJldHVybiBTSE1fTVFfV09VTERfQkxPQ0suICBJbiB0aGlzIGNh c2UsIHRoZSBjYWxsZXIgc2hvdWxkIGNhbGwKLSAqIHRoaXMgZnVuY3Rpb24gYWdhaW4gYWZ0 ZXIgdGhlIHByb2Nlc3MgaW50ZXJydXB0IGhhcyBiZWVuIHNldC4KKyAqIFdoZW4gbm93YWl0 ID0gdHJ1ZSwgd2UgZG8gbm90IHdhaXQgd2hlbiB0aGUgYnVmZmVyIGlzIGVtcHR5IGFuZCBy ZXR1cm4KKyAqIFNITV9NUV9XT1VMRF9CTE9DSyBpbnN0ZWFkLiAgSW4gdGhpcyBjYXNlLCB0 aGUgY2FsbGVyIHNob3VsZCBjYWxsIHRoaXMKKyAqIGZ1bmN0aW9uIGFnYWluIGFmdGVyIElO VEVSUlVQVF9HRU5FUkFMIGhhcyBiZWVuIHNldC4KICAqLwogc2htX21xX3Jlc3VsdAogc2ht X21xX3JlY2VpdmUoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplICpuYnl0ZXNwLCB2b2lkICoq ZGF0YXAsIGJvb2wgbm93YWl0KQpAQCAtMTAxNyw3ICsxMDE2LDggQEAgc2htX21xX3NlbmRf Ynl0ZXMoc2htX21xX2hhbmRsZSAqbXFoLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0 YSwKIAkJCSAqIGludGVycnVwdCBhdCB0b3Agb2YgbG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFu IGFscmVhZHktc2V0CiAJCQkgKiBpbnRlcnJ1cHQgaXMgbXVjaCBjaGVhcGVyIHRoYW4gc2V0 dGluZyBvbmUgdGhhdCBoYXMgYmVlbiByZXNldC4KIAkJCSAqLwotCQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCisJCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01B U0soKSB8IElOVEVSUlVQVF9HRU5FUkFMLAorCQkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwgMCwKIAkJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVV RV9TRU5EKTsKIAogCQkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBzcGlu LiAqLwpAQCAtMTE2MywxNCArMTE2MywxNSBAQCBzaG1fbXFfcmVjZWl2ZV9ieXRlcyhzaG1f bXFfaGFuZGxlICptcWgsIFNpemUgYnl0ZXNfbmVlZGVkLCBib29sIG5vd2FpdCwKIAkJICog bG9vcCwgYmVjYXVzZSBzZXR0aW5nIGFuIGFscmVhZHktc2V0IGludGVycnVwdCBpcyBtdWNo IGNoZWFwZXIgdGhhbgogCQkgKiBzZXR0aW5nIG9uZSB0aGF0IGhhcyBiZWVuIGNsZWFyZWQu CiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgV0xf SU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKKwkJKHZvaWQpIFdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwgMCwKIAkJCQkJCQkgV0FJ VF9FVkVOVF9NRVNTQUdFX1FVRVVFX1JFQ0VJVkUpOwogCisJCS8qIEhhbmRsZSBzdGFuZGFy ZCBpbnRlcnJ1cHRzIHRoYXQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0 aW5nLiAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCiAJCS8qIENsZWFyIHRoZSBp bnRlcnJ1cHQgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KIAkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJS VVBUX0dFTkVSQUwpOwotCi0JCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3 aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCi0JCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJ fQogfQogCkBAIC0xMjUyLDE0ICsxMjUzLDE1IEBAIHNobV9tcV93YWl0X2ludGVybmFsKHNo bV9tcSAqbXEsIFBHUFJPQyAqKnB0ciwgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxl KQogCQl9CiAKIAkJLyogV2FpdCB0byBiZSBzaWduYWxlZC4gKi8KLQkJKHZvaWQpIFdhaXRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFT SygpIHwgSU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsIDAsCiAJCQkJCQkJIFdBSVRfRVZFTlRfTUVTU0FHRV9RVUVVRV9J TlRFUk5BTCk7CiAKKwkJLyogSGFuZGxlIHN0YW5kYXJkIGludGVycnVwdHMgdGhhdCBtYXkg aGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKIAkJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzbyB3ZSBkb24ndCBz cGluLiAqLwogCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7Ci0KLQkJLyog QW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4g Ki8KLQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0Owpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKaW5kZXggYWIyMmUwYjk4MWQu LmQzZjI2NDdjMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWdu YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMK QEAgLTIwNSw3ICsyMDUsNyBAQCBwZ193YWl0X3VudGlsX3Rlcm1pbmF0aW9uKGludCBwaWQs IGludDY0IHRpbWVvdXQpCiAJCS8qIFByb2Nlc3MgaW50ZXJydXB0cywgaWYgYW55LCBiZWZv cmUgd2FpdGluZyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCSh2b2lkKSBX YWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkodm9pZCkgV2FpdEludGVycnVw dChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5FUkFMLAogCQkJCQkJCSBX TF9JTlRFUlJVUFQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKIAkJCQkJ CQkgd2FpdHRpbWUsCiAJCQkJCQkJIFdBSVRfRVZFTlRfQkFDS0VORF9URVJNSU5BVElPTik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWwuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbC5jCmluZGV4IDRhNjZlMWI3ZjdjLi5hNDM1NDFl ZDcyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsLmMKQEAgLTIwLDI1ICsyMCw4IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZh bC5oIgogCi0KIHVpbnQ2NAkJU2hhcmVkSW52YWxpZE1lc3NhZ2VDb3VudGVyOwogCi0KLS8q Ci0gKiBCZWNhdXNlIGJhY2tlbmRzIHNpdHRpbmcgaWRsZSB3aWxsIG5vdCBiZSByZWFkaW5n IHNpbnZhbCBldmVudHMsIHdlCi0gKiBuZWVkIGEgd2F5IHRvIGdpdmUgYW4gaWRsZSBiYWNr ZW5kIGEgc3dpZnQga2ljayBpbiB0aGUgcmVhciBhbmQgbWFrZQotICogaXQgY2F0Y2ggdXAg YmVmb3JlIHRoZSBzaW52YWwgcXVldWUgb3ZlcmZsb3dzIGFuZCBmb3JjZXMgaXQgdG8gZ28K LSAqIHRocm91Z2ggYSBjYWNoZSByZXNldCBleGVyY2lzZS4gIFRoaXMgaXMgZG9uZSBieSBz ZW5kaW5nCi0gKiBQUk9DU0lHX0NBVENIVVBfSU5URVJSVVBUIHRvIGFueSBiYWNrZW5kIHRo YXQgZ2V0cyB0b28gZmFyIGJlaGluZC4KLSAqCi0gKiBUaGUgc2lnbmFsIGhhbmRsZXIgd2ls bCBzZXQgYW4gaW50ZXJydXB0IHBlbmRpbmcgZmxhZyBhbmQgcmFpc2UgdGhlCi0gKiBJTlRF UlJVUFRfR0VORVJBTC4gV2hlbmV2ZXIgc3RhcnRpbmcgdG8gcmVhZCBmcm9tIHRoZSBjbGll bnQsIG9yIHdoZW4KLSAqIGludGVycnVwdGVkIHdoaWxlIGRvaW5nIHNvLCBQcm9jZXNzQ2xp ZW50UmVhZEludGVycnVwdCgpIHdpbGwgY2FsbAotICogUHJvY2Vzc0NhdGNodXBFdmVudCgp LgotICovCi12b2xhdGlsZSBzaWdfYXRvbWljX3QgY2F0Y2h1cEludGVycnVwdFBlbmRpbmcg PSBmYWxzZTsKLQotCiAvKgogICogU2VuZFNoYXJlZEludmFsaWRNZXNzYWdlcwogICoJQWRk IHNoYXJlZC1jYWNoZS1pbnZhbGlkYXRpb24gbWVzc2FnZShzKSB0byB0aGUgZ2xvYmFsIFNJ IG1lc3NhZ2UgcXVldWUuCkBAIC0xMzIsMzggKzExNSwxMyBAQCBSZWNlaXZlU2hhcmVkSW52 YWxpZE1lc3NhZ2VzKHZvaWQgKCppbnZhbEZ1bmN0aW9uKSAoU2hhcmVkSW52YWxpZGF0aW9u TWVzc2FnZSAqbQogCSAqIGNhdGNodXAgc2lnbmFsIHRoaXMgd2F5IGF2b2lkcyBjcmVhdGlu ZyBzcGlrZXMgaW4gc3lzdGVtIGxvYWQgZm9yIHdoYXQKIAkgKiBzaG91bGQgYmUganVzdCBh IGJhY2tncm91bmQgbWFpbnRlbmFuY2UgYWN0aXZpdHkuCiAJICovCi0JaWYgKGNhdGNodXBJ bnRlcnJ1cHRQZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9TSU5W QUxfQ0FUQ0hVUCkpCiAJewotCQljYXRjaHVwSW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwog CQllbG9nKERFQlVHNCwgInNpbnZhbCBjYXRjaHVwIGNvbXBsZXRlLCBjbGVhbmluZyBxdWV1 ZSIpOwogCQlTSUNsZWFudXBRdWV1ZShmYWxzZSwgMCk7CiAJfQogfQogCi0KLS8qCi0gKiBI YW5kbGVDYXRjaHVwSW50ZXJydXB0Ci0gKgotICogVGhpcyBpcyBjYWxsZWQgd2hlbiBQUk9D U0lHX0NBVENIVVBfSU5URVJSVVBUIGlzIHJlY2VpdmVkLgotICoKLSAqIFdlIHVzZWQgdG8g ZGlyZWN0bHkgY2FsbCBQcm9jZXNzQ2F0Y2h1cEV2ZW50IGRpcmVjdGx5IHdoZW4gaWRsZS4g VGhlc2UgZGF5cwotICogd2UganVzdCBzZXQgYSBmbGFnIHRvIGRvIGl0IGxhdGVyIGFuZCBu b3RpZnkgdGhlIHByb2Nlc3Mgb2YgdGhhdCBmYWN0IGJ5Ci0gKiByYWlzaW5nIElOVEVSUlVQ VF9HRU5FUkFMLgotICovCi12b2lkCi1IYW5kbGVDYXRjaHVwSW50ZXJydXB0KHZvaWQpCi17 Ci0JLyoKLQkgKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCBieSBhIFNJR05BTCBIQU5ETEVSLiBZ b3UgbXVzdCBiZSB2ZXJ5IHdhcnkgd2hhdAotCSAqIHlvdSBkbyBoZXJlLgotCSAqLwotCi0J Y2F0Y2h1cEludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCi0JLyogbWFrZSBzdXJlIHRoZSBl dmVudCBpcyBwcm9jZXNzZWQgaW4gZHVlIGNvdXJzZSAqLwotCVJhaXNlSW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMKTsKLX0KLQogLyoKICAqIFByb2Nlc3NDYXRjaHVwSW50ZXJydXB0 CiAgKgpAQCAtMTczLDEyICsxMzEsMTIgQEAgSGFuZGxlQ2F0Y2h1cEludGVycnVwdCh2b2lk KQogdm9pZAogUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQodm9pZCkKIHsKLQl3aGlsZSAoY2F0 Y2h1cEludGVycnVwdFBlbmRpbmcpCisJd2hpbGUgKElzSW50ZXJydXB0UGVuZGluZyhJTlRF UlJVUFRfU0lOVkFMX0NBVENIVVApKQogCXsKIAkJLyoKIAkJICogV2hhdCB3ZSBuZWVkIHRv IGRvIGhlcmUgaXMgY2F1c2UgUmVjZWl2ZVNoYXJlZEludmFsaWRNZXNzYWdlcygpIHRvCiAJ CSAqIHJ1biwgd2hpY2ggd2lsbCBkbyB0aGUgbmVjZXNzYXJ5IHdvcmsgYW5kIGFsc28gcmVz ZXQgdGhlCi0JCSAqIGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nIGZsYWcuICBJZiB3ZSBhcmUg aW5zaWRlIGEgdHJhbnNhY3Rpb24gd2UKKwkJICogSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQ IGZsYWcuICBJZiB3ZSBhcmUgaW5zaWRlIGEgdHJhbnNhY3Rpb24gd2UKIAkJICogY2FuIGp1 c3QgY2FsbCBBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpIHRvIGRvIHRoaXMuICBJZiB3 ZQogCQkgKiBhcmVuJ3QsIHdlIHN0YXJ0IGFuZCBpbW1lZGlhdGVseSBlbmQgYSB0cmFuc2Fj dGlvbjsgdGhlIGNhbGwgdG8KIAkJICogQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBo YXBwZW5zIGRvd24gaW5zaWRlIHRyYW5zYWN0aW9uIHN0YXJ0LgpAQCAtMTkwLDEyICsxNDgs MTIgQEAgUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQodm9pZCkKIAkJICovCiAJCWlmIChJc1Ry YW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCiAJCXsKLQkJCWVsb2coREVCVUc0LCAi UHJvY2Vzc0NhdGNodXBFdmVudCBpbnNpZGUgdHJhbnNhY3Rpb24iKTsKKwkJCWVsb2coREVC VUc0LCAiUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQgaW5zaWRlIHRyYW5zYWN0aW9uIik7CiAJ CQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwogCQl9CiAJCWVsc2UKIAkJewotCQkJ ZWxvZyhERUJVRzQsICJQcm9jZXNzQ2F0Y2h1cEV2ZW50IG91dHNpZGUgdHJhbnNhY3Rpb24i KTsKKwkJCWVsb2coREVCVUc0LCAiUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQgb3V0c2lkZSB0 cmFuc2FjdGlvbiIpOwogCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZh bGFkdC5jCmluZGV4IDJkYTkxNzM4YzMyLi45N2VlOTBjODljZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2ludmFsYWR0LmMKQEAgLTE4LDEwICsxOCwxMCBAQAogI2luY2x1ZGUgPHVu aXN0ZC5oPgogCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rl ci9pbnRlcnJ1cHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgotI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIK ICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bp bi5oIgpAQCAtMTE4LDcgKzExOCw3IEBACiAgKiB3ZSBleGNlZWQgQ0xFQU5VUF9NSU4uICBT aG91bGQgYmUgYSBwb3dlciBvZiAyIGZvciBzcGVlZC4KICAqCiAgKiBTSUdfVEhSRVNIT0xE OiB0aGUgbWluaW11bSBudW1iZXIgb2YgbWVzc2FnZXMgYSBiYWNrZW5kIG11c3QgaGF2ZSBm YWxsZW4KLSAqIGJlaGluZCBiZWZvcmUgd2UnbGwgc2VuZCBpdCBQUk9DU0lHX0NBVENIVVBf SU5URVJSVVBULgorICogYmVoaW5kIGJlZm9yZSB3ZSdsbCBzZW5kIGl0IElOVEVSUlVQVF9T SU5WQUxfQ0FUQ0hVUC4KICAqCiAgKiBXUklURV9RVUFOVFVNOiB0aGUgbWF4IG51bWJlciBv ZiBtZXNzYWdlcyB0byBwdXNoIGludG8gdGhlIGJ1ZmZlciBwZXIKICAqIGl0ZXJhdGlvbiBv ZiBTSUluc2VydERhdGFFbnRyaWVzLiAgTm9uY3JpdGljYWwgYnV0IHNob3VsZCBiZSBsZXNz IHRoYW4KQEAgLTU2NCw3ICs1NjQsNyBAQCBTSUdldERhdGFFbnRyaWVzKFNoYXJlZEludmFs aWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGludCBkYXRhc2l6ZSkKICAqIG1pbkZyZWUgaXMgdGhl IG1pbmltdW0gbnVtYmVyIG9mIG1lc3NhZ2Ugc2xvdHMgdG8gbWFrZSBmcmVlLgogICoKICAq IFBvc3NpYmxlIHNpZGUgZWZmZWN0cyBvZiB0aGlzIHJvdXRpbmUgaW5jbHVkZSBtYXJraW5n IG9uZSBvciBtb3JlCi0gKiBiYWNrZW5kcyBhcyAicmVzZXQiIGluIHRoZSBhcnJheSwgYW5k IHNlbmRpbmcgUFJPQ1NJR19DQVRDSFVQX0lOVEVSUlVQVAorICogYmFja2VuZHMgYXMgInJl c2V0IiBpbiB0aGUgYXJyYXksIGFuZCBzZW5kaW5nIElOVEVSUlVQVF9TSU5WQUxfQ0FUQ0hV UAogICogdG8gc29tZSBiYWNrZW5kIHRoYXQgc2VlbXMgdG8gYmUgZ2V0dGluZyB0b28gZmFy IGJlaGluZC4gIFdlIHNpZ25hbCBhdAogICogbW9zdCBvbmUgYmFja2VuZCBhdCBhIHRpbWUs IGZvciByZWFzb25zIGV4cGxhaW5lZCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLgogICoKQEAg LTY1Nyw4ICs2NTcsOCBAQCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9j aywgaW50IG1pbkZyZWUpCiAJCXNlZ1AtPm5leHRUaHJlc2hvbGQgPSAobnVtTXNncyAvIENM RUFOVVBfUVVBTlRVTSArIDEpICogQ0xFQU5VUF9RVUFOVFVNOwogCiAJLyoKLQkgKiBMYXN0 bHksIHNpZ25hbCBhbnlvbmUgd2hvIG5lZWRzIGEgY2F0Y2h1cCBpbnRlcnJ1cHQuICBTaW5j ZQotCSAqIFNlbmRQcm9jU2lnbmFsKCkgbWlnaHQgbm90IGJlIGZhc3QsIHdlIGRvbid0IHdh bnQgdG8gaG9sZCBsb2NrcyB3aGlsZQorCSAqIExhc3RseSwgc2lnbmFsIGFueW9uZSB3aG8g bmVlZHMgYSBjYXRjaHVwIGludGVycnVwdC4gIFNlbmRJbnRlcnJ1cHQoKQorCSAqIGlzIHBy ZXR0eSBmYXN0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGRvbid0IHdhbnQgdG8gaG9sZCBsb2Nr cyB3aGlsZQogCSAqIGV4ZWN1dGluZyBpdC4KIAkgKi8KIAlpZiAobmVlZFNpZykKQEAgLTY2 OSw4ICs2NjksOCBAQCBTSUNsZWFudXBRdWV1ZShib29sIGNhbGxlckhhc1dyaXRlTG9jaywg aW50IG1pbkZyZWUpCiAJCW5lZWRTaWctPnNpZ25hbGVkID0gdHJ1ZTsKIAkJTFdMb2NrUmVs ZWFzZShTSW52YWxSZWFkTG9jayk7CiAJCUxXTG9ja1JlbGVhc2UoU0ludmFsV3JpdGVMb2Nr KTsKLQkJZWxvZyhERUJVRzQsICJzZW5kaW5nIHNpbnZhbCBjYXRjaHVwIHNpZ25hbCB0byBQ SUQgJWQiLCAoaW50KSBoaXNfcGlkKTsKLQkJU2VuZFByb2NTaWduYWwoaGlzX3BpZCwgUFJP Q1NJR19DQVRDSFVQX0lOVEVSUlVQVCwgaGlzX3Byb2NOdW1iZXIpOworCQllbG9nKERFQlVH NCwgInNlbmRpbmcgc2ludmFsIGNhdGNodXAgaW50ZXJydXB0IHRvIGJhY2tlbmQgUElEICVk IiwgKGludCkgaGlzX3BpZCk7CisJCVNlbmRJbnRlcnJ1cHQoSU5URVJSVVBUX1NJTlZBTF9D QVRDSFVQLCBoaXNfcHJvY051bWJlcik7CiAJCWlmIChjYWxsZXJIYXNXcml0ZUxvY2spCiAJ CQlMV0xvY2tBY3F1aXJlKFNJbnZhbFdyaXRlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXggMWVmNzYwMDUyMmMuLmY5NmMxZWVl YWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC03MSwxMyArNzEsMTMg QEAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBnb3Rfc3RhbmRieV9kZWxheV90aW1l b3V0ID0gZmFsc2U7CiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGdvdF9zdGFuZGJ5 X2xvY2tfdGltZW91dCA9IGZhbHNlOwogCiBzdGF0aWMgdm9pZCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqd2FpdGxpc3Qs Ci0JCQkJCQkJCQkJCQkgICBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJCQkJ CSAgIEludGVycnVwdFR5cGUgcmVhc29uLAogCQkJCQkJCQkJCQkJICAgdWludDMyIHdhaXRf ZXZlbnRfaW5mbywKIAkJCQkJCQkJCQkJCSAgIGJvb2wgcmVwb3J0X3dhaXRpbmcpOwotc3Rh dGljIHZvaWQgU2VuZFJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKFByb2NTaWduYWxS ZWFzb24gcmVhc29uKTsKK3N0YXRpYyB2b2lkIFNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1 ZmZlclBpbihJbnRlcnJ1cHRUeXBlIHJlYXNvbik7CiBzdGF0aWMgWExvZ1JlY1B0ciBMb2dD dXJyZW50UnVubmluZ1hhY3RzKFJ1bm5pbmdUcmFuc2FjdGlvbnMgQ3VyclJ1bm5pbmdYYWN0 cyk7CiBzdGF0aWMgdm9pZCBMb2dBY2Nlc3NFeGNsdXNpdmVMb2NrcyhpbnQgbmxvY2tzLCB4 bF9zdGFuZGJ5X2xvY2sgKmxvY2tzKTsKLXN0YXRpYyBjb25zdCBjaGFyICpnZXRfcmVjb3Zl cnlfY29uZmxpY3RfZGVzYyhQcm9jU2lnbmFsUmVhc29uIHJlYXNvbik7CitzdGF0aWMgY29u c3QgY2hhciAqZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoSW50ZXJydXB0VHlwZSByZWFz b24pOwogCiAvKgogICogSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudApAQCAt MjcxLDcgKzI3MSw3IEBAIFdhaXRFeGNlZWRzTWF4U3RhbmRieURlbGF5KHVpbnQzMiB3YWl0 X2V2ZW50X2luZm8pCiAgKiB0byBiZSByZXNvbHZlZCBvciBub3QuCiAgKi8KIHZvaWQKLUxv Z1JlY292ZXJ5Q29uZmxpY3QoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24sIFRpbWVzdGFtcFR6 IHdhaXRfc3RhcnQsCitMb2dSZWNvdmVyeUNvbmZsaWN0KEludGVycnVwdFR5cGUgcmVhc29u LCBUaW1lc3RhbXBUeiB3YWl0X3N0YXJ0LAogCQkJCQlUaW1lc3RhbXBUeiBub3csIFZpcnR1 YWxUcmFuc2FjdGlvbklkICp3YWl0X2xpc3QsCiAJCQkJCWJvb2wgc3RpbGxfd2FpdGluZykK IHsKQEAgLTM1OCw3ICszNTgsNyBAQCBMb2dSZWNvdmVyeUNvbmZsaWN0KFByb2NTaWduYWxS ZWFzb24gcmVhc29uLCBUaW1lc3RhbXBUeiB3YWl0X3N0YXJ0LAogICovCiBzdGF0aWMgdm9p ZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5z YWN0aW9uSWQgKndhaXRsaXN0LAotCQkJCQkJCQkJICAgUHJvY1NpZ25hbFJlYXNvbiByZWFz b24sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sCisJCQkJCQkJCQkgICBJbnRlcnJ1cHRUeXBl IHJlYXNvbiwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKIAkJCQkJCQkJCSAgIGJvb2wgcmVw b3J0X3dhaXRpbmcpCiB7CiAJVGltZXN0YW1wVHogd2FpdFN0YXJ0ID0gMDsKQEAgLTQ4OSw3 ICs0ODksNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCWJhY2tlbmRzID0gR2V0Q29uZmxp Y3RpbmdWaXJ0dWFsWElEcyhzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkg bG9jYXRvci5kYk9pZCk7CiAJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoVmlydHVhbFhJ RHMoYmFja2VuZHMsCi0JCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T TkFQU0hPVCwKKwkJCQkJCQkJCQkgICBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05B UFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9SRUNPVkVSWV9DT05GTElDVF9TTkFQ U0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKIApAQCAtNTYwLDcgKzU2MCw3IEBAIFJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2UoT2lkIHRzaWQpCiAJdGVtcF9maWxl X3VzZXJzID0gR2V0Q29uZmxpY3RpbmdWaXJ0dWFsWElEcyhJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKIAkJCQkJCQkJCQkJCUludmFsaWRPaWQpOwogCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFZpcnR1YWxYSURzKHRlbXBfZmlsZV91c2VycywKLQkJCQkJCQkJCQkgICBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCisJCQkJCQkJCQkJICAgSU5URVJSVVBU X1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVO VF9SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCQkJCQkJCQkJCSAgIHRydWUpOwog fQpAQCAtNTgxLDcgKzU4MSw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFi YXNlKE9pZCBkYmlkKQogCSAqLwogCXdoaWxlIChDb3VudERCQmFja2VuZHMoZGJpZCkgPiAw KQogCXsKLQkJQ2FuY2VsREJCYWNrZW5kcyhkYmlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0RBVEFCQVNFLCB0cnVlKTsKKwkJQ2FuY2VsREJCYWNrZW5kcyhkYmlkLCBJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsIHRydWUpOwogCiAJCS8qCiAJCSAqIFdh aXQgYXdoaWxlIGZvciB0aGVtIHRvIGRpZSBzbyB0aGF0IHdlIGF2b2lkIGZsb29kaW5nIGFu CkBAIC02NjUsNyArNjY1LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhM T0NLVEFHIGxvY2t0YWcsIGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAkJICogYmVjYXVzZSB0 aGUgY2FsbGVyLCBXYWl0T25Mb2NrKCksIGhhcyBhbHJlYWR5IHJlcG9ydGVkIHRoYXQuCiAJ CSAqLwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcyhiYWNrZW5k cywKLQkJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAorCQkJ CQkJCQkJCQkgICBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAkJCQkJCQkJ CQkJICAgUEdfV0FJVF9MT0NLIHwgbG9ja3RhZy5sb2NrdGFnX3R5cGUsCiAJCQkJCQkJCQkJ CSAgIGZhbHNlKTsKIAl9CkBAIC02OTcsMTAgKzY5NywxMSBAQCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhMb2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0 KQogCX0KIAogCS8qIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgdGhlIHJlbGVhc2Ugb2YgdGhl IFJlbGF0aW9uIExvY2sgKi8KLQlXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCBX TF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCVdhaXRJbnRlcnJ1cHQo SU5URVJSVVBUX0NGSV9NQVNLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkgIFdMX0lO VEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJICBQR19XQUlUX0xPQ0sg fCBsb2NrdGFnLmxvY2t0YWdfdHlwZSk7Ci0JQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwpOwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJQ2xlYXJJbnRlcnJ1cHQoSU5U RVJSVVBUX0dFTkVSQUwpOwogCiAJLyoKIAkgKiBFeGl0IGlmIGx0aW1lIGlzIHJlYWNoZWQu IFRoZW4gYWxsIHRoZSBiYWNrZW5kcyBob2xkaW5nIGNvbmZsaWN0aW5nCkBAIC03MjcsNyAr NzI4LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9jayhMT0NLVEFHIGxvY2t0 YWcsIGJvb2wgbG9nZ2luZ19jb25mbGljdCkKIAkJd2hpbGUgKFZpcnR1YWxUcmFuc2FjdGlv bklkSXNWYWxpZCgqYmFja2VuZHMpKQogCQl7CiAJCQlTaWduYWxWaXJ0dWFsVHJhbnNhY3Rp b24oKmJhY2tlbmRzLAotCQkJCQkJCQkJIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSywKKwkJCQkJCQkJCSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSywKIAkJCQkJCQkJCSBmYWxzZSk7CiAJCQliYWNrZW5kcysrOwog CQl9CkBAIC03NDksMTAgKzc1MCwxMSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhM b2NrKExPQ0tUQUcgbG9ja3RhZywgYm9vbCBsb2dnaW5nX2NvbmZsaWN0KQogCQkgKiB1bnRp bCB0aGUgcmVsYXRpb24gbG9ja3MgYXJlIHJlbGVhc2VkIG9yIGx0aW1lIGlzIHJlYWNoZWQu CiAJCSAqLwogCQlnb3Rfc3RhbmRieV9kZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7Ci0JCVdh aXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsIDAsCisJCVdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkg fCBJTlRFUlJVUFRfR0VORVJBTCwKKwkJCQkJICBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAogCQkJCQkgIFBHX1dBSVRfTE9DSyB8IGxvY2t0YWcubG9ja3RhZ190 eXBlKTsKLQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJfQogCiBjbGVhbnVwOgpAQCAtNzc4LDkgKzc4MCwxMCBAQCBjbGVhbnVwOgogICogV2Ug ZWl0aGVyIHJlc29sdmUgY29uZmxpY3RzIGltbWVkaWF0ZWx5IG9yIHNldCBhIHRpbWVvdXQg dG8gd2FrZSB1cyBhdAogICogdGhlIGxpbWl0IG9mIG91ciBwYXRpZW5jZS4KICAqCi0gKiBS ZXNvbHZlIGNvbmZsaWN0cyBieSBzZW5kaW5nIGEgUFJPQ1NJRyBzaWduYWwgdG8gYWxsIGJh Y2tlbmRzIHRvIGNoZWNrIGlmCi0gKiB0aGV5IGhvbGQgb25lIG9mIHRoZSBidWZmZXIgcGlu cyB0aGF0IGlzIGJsb2NraW5nIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sCi0gKiB0aG9zZSBi YWNrZW5kcyB3aWxsIHRha2UgYW4gYXBwcm9wcmlhdGUgZXJyb3IgYWN0aW9uLCBFUlJPUiBv ciBGQVRBTC4KKyAqIFJlc29sdmUgY29uZmxpY3RzIGJ5IHNlbmRpbmcgSU5URVJSVVBUX1JF Q09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiB0byBhbGwKKyAqIGJhY2tlbmRzIHRvIGNoZWNr IGlmIHRoZXkgaG9sZCBvbmUgb2YgdGhlIGJ1ZmZlciBwaW5zIHRoYXQgaXMgYmxvY2tpbmcK KyAqIFN0YXJ0dXAgcHJvY2Vzcy4gSWYgc28sIHRob3NlIGJhY2tlbmRzIHdpbGwgdGFrZSBh biBhcHByb3ByaWF0ZSBlcnJvcgorICogYWN0aW9uLCBFUlJPUiBvciBGQVRBTC4KICAqCiAg KiBXZSBhbHNvIG11c3QgY2hlY2sgZm9yIGRlYWRsb2Nrcy4gIERlYWRsb2NrcyBvY2N1ciBi ZWNhdXNlIGlmIHF1ZXJpZXMKICAqIHdhaXQgb24gYSBsb2NrLCB0aGF0IG11c3QgYmUgYmVo aW5kIGFuIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHdoaWNoIGNhbiBvbmx5CkBAIC04MDksNyAr ODEyLDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCiAJ CS8qCiAJCSAqIFdlJ3JlIGFscmVhZHkgYmVoaW5kLCBzbyBjbGVhciBhIHBhdGggYXMgcXVp Y2tseSBhcyBwb3NzaWJsZS4KIAkJICovCi0JCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1 ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7CisJCVNlbmRS ZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJ Q1RfQlVGRkVSUElOKTsKIAl9CiAJZWxzZQogCXsKQEAgLTg0NCwxNyArODQ3LDIwIEBAIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbih2b2lkKQogCSAqIFdlIGFzc3Vt ZSB0aGF0IG9ubHkgVW5waW5CdWZmZXIoKSBhbmQgdGhlIHRpbWVvdXQgcmVxdWVzdHMgZXN0 YWJsaXNoZWQKIAkgKiBhYm92ZSBjYW4gd2FrZSB1cyB1cCBoZXJlLiBXYWtldXBSZWNvdmVy eSgpIGNhbGxlZCBieSB3YWxyZWNlaXZlciBvcgogCSAqIFNJR0hVUCBzaWduYWwgaGFuZGxl ciwgZXRjIGNhbm5vdCBkbyB0aGF0IGJlY2F1c2UgaXQgdXNlcyB0aGUgZGlmZmVyZW50Ci0J ICogaW50ZXJydXB0IGZsYWcuIEZJWE1FOiBzZWVtcyBsaWtlIGEgc2hha3kgYXNzdW1wdGlv bi4gV2FrZXVwUmVjb3ZlcnkoKQotCSAqIGluZGVlZCB1c2VzIGEgZGlmZmVyZW50IGludGVy cnVwdCBmbGFnIChkaWZmZXJlbnQgbGF0Y2ggZWFybGllciksIGJ1dAotCSAqIHRoZSBzaWdu YWwgaGFuZGxlcj8/CisJICogaW50ZXJydXB0IGZsYWcuCisJICoKKwkgKiBGSVhNRTogc2Vl bXMgbGlrZSBhIHNoYWt5IGFzc3VtcHRpb24uIFdha2V1cFJlY292ZXJ5KCkgaW5kZWVkIHVz ZXMgYQorCSAqIGRpZmZlcmVudCBpbnRlcnJ1cHQgZmxhZyAoZGlmZmVyZW50IGxhdGNoIGVh cmxpZXIpLCBidXQgdGhlIHNpZ25hbAorCSAqIGhhbmRsZXI/PwogCSAqLwotCVdhaXRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsIDAsCisJV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVS UlVQVF9HRU5FUkFMLAorCQkJCSAgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwgMCwKIAkJCQkgIFdBSVRfRVZFTlRfQlVGRkVSX1BJTik7Ci0JQ2xlYXJJbnRlcnJ1cHQo SU5URVJSVVBUX0dFTkVSQUwpOwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJQ2xlYXJJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCiAJaWYgKGdvdF9zdGFuZGJ5X2RlbGF5 X3RpbWVvdXQpCi0JCVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTik7CisJCVNlbmRSZWNvdmVyeUNvbmZsaWN0 V2l0aEJ1ZmZlclBpbihJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKTsK IAllbHNlIGlmIChnb3Rfc3RhbmRieV9kZWFkbG9ja190aW1lb3V0KQogCXsKIAkJLyoKQEAg LTg3MCw3ICs4NzYsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4o dm9pZCkKIAkJICogbm90IGJlIHNvIGhhcm1mdWwgYmVjYXVzZSB0aGUgcGVyaW9kIHRoYXQg dGhlIGJ1ZmZlciBpcyBrZXB0IHBpbm5lZAogCQkgKiBpcyBiYXNpY2FsbHkgbm8gc28gbG9u Zy4gQnV0IHdlIHNob3VsZCBmaXggdGhpcz8KIAkJICovCi0JCVNlbmRSZWNvdmVyeUNvbmZs aWN0V2l0aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVB RExPQ0spOworCQlTZW5kUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4oSU5URVJSVVBU X1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spOwogCX0KIAogCS8qCkBAIC04 ODUsMTAgKzg5MSwxMCBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4o dm9pZCkKIH0KIAogc3RhdGljIHZvaWQKLVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZl clBpbihQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKK1NlbmRSZWNvdmVyeUNvbmZsaWN0V2l0 aEJ1ZmZlclBpbihJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKLQlBc3NlcnQocmVhc29uID09 IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOIHx8Ci0JCSAgIHJlYXNvbiA9 PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spOworCUFzc2Vy dChyZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiB8fAor CQkgICByZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVB RExPQ0spOwogCiAJLyoKIAkgKiBXZSBzZW5kIHNpZ25hbCB0byBhbGwgYmFja2VuZHMgdG8g YXNrIHRoZW0gaWYgdGhleSBhcmUgaG9sZGluZyB0aGUKQEAgLTk0Nyw2ICs5NTMsNyBAQCB2 b2lkCiBTdGFuZGJ5RGVhZExvY2tIYW5kbGVyKHZvaWQpCiB7CiAJZ290X3N0YW5kYnlfZGVh ZGxvY2tfdGltZW91dCA9IHRydWU7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVS QUwpOwogfQogCiAvKgpAQCAtOTU2LDYgKzk2Myw3IEBAIHZvaWQKIFN0YW5kYnlUaW1lb3V0 SGFuZGxlcih2b2lkKQogewogCWdvdF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQgPSB0cnVlOwor CVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIH0KIAogLyoKQEAgLTk2NSw2 ICs5NzMsNyBAQCB2b2lkCiBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiB7CiAJ Z290X3N0YW5kYnlfbG9ja190aW1lb3V0ID0gdHJ1ZTsKKwlSYWlzZUludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCk7CiB9CiAKIC8qCkBAIC0xNDg5LDMxICsxNDk4LDMxIEBAIExvZ1N0 YW5kYnlJbnZhbGlkYXRpb25zKGludCBubXNncywgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2Fn ZSAqbXNncywKIAogLyogUmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBvZiByZWNvdmVyeSBjb25m bGljdCAqLwogc3RhdGljIGNvbnN0IGNoYXIgKgotZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rl c2MoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCitnZXRfcmVjb3ZlcnlfY29uZmxpY3RfZGVz YyhJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKIAljb25zdCBjaGFyICpyZWFzb25EZXNjID0g XygidW5rbm93biByZWFzb24iKTsKIAogCXN3aXRjaCAocmVhc29uKQogCXsKLQkJY2FzZSBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKKwkJY2FzZSBJTlRFUlJVUFRf UkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292 ZXJ5IGNvbmZsaWN0IG9uIGJ1ZmZlciBwaW4iKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllf Q09ORkxJQ1RfTE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBv biBsb2NrIik7CiAJCQlicmVhazsKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1RBQkxFU1BBQ0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxF U1BBQ0U6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gdGFibGVz cGFjZSIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9T TkFQU0hPVDoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6 CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gc25hcHNob3QiKTsK IAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1Q6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgog CQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9uIHJlcGxpY2F0aW9uIHNs b3QiKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSzoKKwkJY2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU1RB UlRVUF9ERUFETE9DSzoKIAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBv biBidWZmZXIgZGVhZGxvY2siKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZM SUNUX0RBVEFCQVNFOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9u IGRhdGFiYXNlIik7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3dhaXRldmVudHNldC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvd2FpdGV2ZW50c2V0LmMKaW5kZXggOTM4MGRkNThkNjYuLjIzYTg4MzE2YTY2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy93YWl0ZXZlbnRzZXQuYwpAQCAtMTEwMSw3ICsx MTAxLDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9uZyB0aW1l b3V0LAogCQkJICogc3luY2hyb25pemF0aW9uIHNvIHRoYXQgaWYgYW4gaW50ZXJydXB0IGJp dCBpcyBzZXQgYWZ0ZXIgdGhpcywKIAkJCSAqIHRoZSBzZXR0ZXIgd2lsbCB3YWtlIHVzIHVw LgogCQkJICovCi0JCQlvbGRfbWFzayA9IHBnX2F0b21pY19mZXRjaF9vcl91MzIoTXlQZW5k aW5nSW50ZXJydXB0cywgMSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKTsKKwkJCW9sZF9t YXNrID0gcGdfYXRvbWljX2ZldGNoX29yX3UzMihNeVBlbmRpbmdJbnRlcnJ1cHRzLCBTTEVF UElOR19PTl9JTlRFUlJVUFRTKTsKIAkJCWFscmVhZHlfcGVuZGluZyA9ICgob2xkX21hc2sg JiBzZXQtPmludGVycnVwdF9tYXNrKSAhPSAwKTsKIAogCQkJLyogcmVtZW1iZXIgdG8gY2xl YXIgdGhlIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgZmxhZyBsYXRlciAqLwpAQCAtMTE3Niw3 ICsxMTc2LDcgQEAgV2FpdEV2ZW50U2V0V2FpdChXYWl0RXZlbnRTZXQgKnNldCwgbG9uZyB0 aW1lb3V0LAogCiAJLyogSWYgd2Ugc2V0IHRoZSBTTEVFUElOR19PTl9JTlRFUlJVUFRTIGZs YWcsIHJlc2V0IGl0IGFnYWluICovCiAJaWYgKHNsZWVwaW5nX2ZsYWdfYXJtZWQpCi0JCXBn X2F0b21pY19mZXRjaF9hbmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oKHVpbnQzMikg MSA8PCBTTEVFUElOR19PTl9JTlRFUlJVUFRTKSk7CisJCXBnX2F0b21pY19mZXRjaF9hbmRf dTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH4oKHVpbnQzMikgU0xFRVBJTkdfT05fSU5URVJS VVBUUykpOwogCiAjaWZuZGVmIFdJTjMyCiAJd2FpdGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCmluZGV4IDI5NTkx NGNmMDMyLi40ZmM0NDQwNTg1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9jb25kaXRpb25fdmFyaWFibGUuYwpAQCAtMTYxLDcgKzE2MSw4IEBAIENvbmRpdGlvblZh cmlhYmxlVGltZWRTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3YsIGxvbmcgdGltZW91dCwK IAkJICogV2FpdCBmb3IgaW50ZXJydXB0LiAgKElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21l IG90aGVyIHJlYXNvbiwgdGhlCiAJCSAqIGNvZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4p CiAJCSAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCwgd2Fp dF9ldmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOworCQkodm9pZCkgV2Fp dEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5FUkFMLAor CQkJCQkJCSB3YWl0X2V2ZW50cywgY3VyX3RpbWVvdXQsIHdhaXRfZXZlbnRfaW5mbyk7CiAK IAkJLyogQ2xlYXIgdGhlIGZsYWcgYmVmb3JlIGV4YW1pbmluZyB0aGUgc3RhdGUgb2YgdGhl IHdhaXQgbGlzdC4gKi8KIAkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGFiOWI0NmI5Y2I5Li41 NGNkOTlhMTNlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAt MTU3NywxMCArMTU3NywxMSBAQCBHZXRTYWZlU25hcHNob3QoU25hcHNob3Qgb3JpZ1NuYXBz aG90KQogCQkJCSBTeGFjdElzUk9VbnNhZmUoTXlTZXJpYWxpemFibGVYYWN0KSkpCiAJCXsK IAkJCUxXTG9ja1JlbGVhc2UoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrKTsKLQkJCVdhaXRJ bnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwsIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCisJCQlXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpIHwg SU5URVJSVVBUX0dFTkVSQUwsCisJCQkJCQkgIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05f UE1fREVBVEgsIDAsCiAJCQkJCQkgIFdBSVRfRVZFTlRfU0FGRV9TTkFQU0hPVCk7Ci0JCQlD bGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQkJTFdM b2NrQWNxdWlyZShTZXJpYWxpemFibGVYYWN0SGFzaExvY2ssIExXX0VYQ0xVU0lWRSk7CiAJ CX0KIAkJTXlTZXJpYWxpemFibGVYYWN0LT5mbGFncyAmPSB+U1hBQ1RfRkxBR19ERUZFUlJB QkxFX1dBSVRJTkc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJv Yy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCA0ZWJmZjlhNGIz Ny4uZTRiYmNmNDIyNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTM5Myw3 ICsxMzkzLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQkJCQkgKiBi ZWNhdXNlIHRoZSBzdGFydHVwIHByb2Nlc3MgaGVyZSBoYXMgYWxyZWFkeSB3YWl0ZWQKIAkJ CQkJICogbG9uZ2VyIHRoYW4gZGVhZGxvY2tfdGltZW91dC4KIAkJCQkJICovCi0JCQkJCUxv Z1JlY292ZXJ5Q29uZmxpY3QoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAorCQkJ CQlMb2dSZWNvdmVyeUNvbmZsaWN0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0NL LAogCQkJCQkJCQkJCXN0YW5kYnlXYWl0U3RhcnQsIG5vdywKIAkJCQkJCQkJCQljbnQgPiAw ID8gdnhpZHMgOiBOVUxMLCB0cnVlKTsKIAkJCQkJbG9nZ2VkX3JlY292ZXJ5X2NvbmZsaWN0 ID0gdHJ1ZTsKQEAgLTE0MDIsOSArMTQwMiw5IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxv Y2FsbG9jaykKIAkJfQogCQllbHNlCiAJCXsKLQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElO VEVSUlVQVF9HRU5FUkFMLCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAorCQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkgfCBJTlRF UlJVUFRfR0VORVJBTCwKKwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1f REVBVEgsIDAsCiAJCQkJCQkJCSBQR19XQUlUX0xPQ0sgfCBsb2NhbGxvY2stPnRhZy5sb2Nr LmxvY2t0YWdfdHlwZSk7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7 CiAJCQkvKiBjaGVjayBmb3IgZGVhZGxvY2tzIGZpcnN0LCBhcyB0aGF0J3MgcHJvYmFibHkg bG9nLXdvcnRoeSAqLwogCQkJaWYgKGdvdF9kZWFkbG9ja190aW1lb3V0KQogCQkJewpAQCAt MTQxMiw2ICsxNDEyLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrKQogCQkJ CWdvdF9kZWFkbG9ja190aW1lb3V0ID0gZmFsc2U7CiAJCQl9CiAJCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOworCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCQl9 CiAKIAkJLyoKQEAgLTE2NTgsNyArMTY1OSw3IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxv Y2FsbG9jaykKIAkvKgogCSAqIERpc2FibGUgdGhlIHRpbWVycywgaWYgdGhleSBhcmUgc3Rp bGwgcnVubmluZy4gIEFzIGluIExvY2tFcnJvckNsZWFudXAsCiAJICogd2UgbXVzdCBwcmVz ZXJ2ZSB0aGUgTE9DS19USU1FT1VUIGluZGljYXRvciBmbGFnOiBpZiBhIGxvY2sgdGltZW91 dCBoYXMKLQkgKiBhbHJlYWR5IGNhdXNlZCBRdWVyeUNhbmNlbFBlbmRpbmcgdG8gYmVjb21l IHNldCwgd2Ugd2FudCB0aGUgY2FuY2VsIHRvCisJICogYWxyZWFkeSByYWlzZWQgSU5URVJS VVBUX1FVRVJZX0NBTkNFTCwgd2Ugd2FudCB0aGUgY2FuY2VsIHRvCiAJICogYmUgcmVwb3J0 ZWQgYXMgYSBsb2NrIHRpbWVvdXQsIG5vdCBhIHVzZXIgY2FuY2VsLgogCSAqLwogCWlmICgh SW5Ib3RTdGFuZGJ5KQpAQCAtMTY4Miw3ICsxNjgzLDcgQEAgUHJvY1NsZWVwKExPQ0FMTE9D SyAqbG9jYWxsb2NrKQogCSAqIHN0YXJ0dXAgcHJvY2VzcyB3YWl0ZWQgbG9uZ2VyIHRoYW4g ZGVhZGxvY2tfdGltZW91dCBmb3IgaXQuCiAJICovCiAJaWYgKEluSG90U3RhbmRieSAmJiBs b2dnZWRfcmVjb3ZlcnlfY29uZmxpY3QpCi0JCUxvZ1JlY292ZXJ5Q29uZmxpY3QoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAorCQlMb2dSZWNvdmVyeUNvbmZsaWN0KElOVEVS UlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0NLLAogCQkJCQkJCXN0YW5kYnlXYWl0U3RhcnQs IEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKIAkJCQkJCQlOVUxMLCBmYWxzZSk7CiAKQEAgLTE4 ODEsMTAgKzE4ODIsNiBAQCBDaGVja0RlYWRMb2NrQWxlcnQodm9pZCkKIAkgKiBkaWQuIEJh Y2sgdGhlbiBnb3RfZGVhZGxvY2tfdGltZW91dCB3YXNuJ3QgeWV0IHNldC4uLiBJdCdzIHVu bGlrZWx5CiAJICogdGhhdCB0aGlzIGV2ZXIgd291bGQgYmUgYSBwcm9ibGVtLCBidXQgcmFp c2luZyBhbiBpbnRlcnJ1cHQgYWdhaW4gaXMKIAkgKiBjaGVhcC4KLQkgKgotCSAqIE5vdGUg dGhhdCwgd2hlbiB0aGlzIGZ1bmN0aW9uIHJ1bnMgaW5zaWRlIHByb2NzaWduYWxfc2lndXNy MV9oYW5kbGVyKCksCi0JICogdGhlIGhhbmRsZXIgZnVuY3Rpb24gcmFpc2VzIHRoZSBpbnRl cnJ1cHQgYWdhaW4gYWZ0ZXIgdGhlIGludGVycnVwdCBpcwotCSAqIHJhaXNlZCBoZXJlLgog CSAqLwogCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAllcnJubyA9IHNh dmVfZXJybm87CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggODc4NGVhNzhkY2QuLmNjMTljMDE1 N2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaW52YWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIK ICNpbmNsdWRlICJ0Y29wL2Zhc3RwYXRoLmgiCiAjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIK ICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCkBAIC0xNTMsMTAgKzE1NCw2IEBAIHN0YXRp YyBjb25zdCBjaGFyICp1c2VyRG9wdGlvbiA9IE5VTEw7CS8qIC1EIHN3aXRjaCAqLwogc3Rh dGljIGJvb2wgRWNob1F1ZXJ5ID0gZmFsc2U7CS8qIC1FIHN3aXRjaCAqLwogc3RhdGljIGJv b2wgVXNlU2VtaU5ld2xpbmVOZXdsaW5lID0gZmFsc2U7CS8qIC1qIHN3aXRjaCAqLwogCi0v KiB3aGV0aGVyIG9yIG5vdCwgYW5kIHdoeSwgd2Ugd2VyZSBjYW5jZWxlZCBieSBjb25mbGlj dCB3aXRoIHJlY292ZXJ5ICovCi1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IFJlY292 ZXJ5Q29uZmxpY3RQZW5kaW5nID0gZmFsc2U7Ci1zdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21p Y190IFJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tOVU1fUFJPQ1NJR05BTFNdOwot CiAvKiByZXVzZWQgYnVmZmVyIHRvIHBhc3MgdG8gU2VuZFJvd0Rlc2NyaXB0aW9uTWVzc2Fn ZSgpICovCiBzdGF0aWMgTWVtb3J5Q29udGV4dCByb3dfZGVzY3JpcHRpb25fY29udGV4dCA9 IE5VTEw7CiBzdGF0aWMgU3RyaW5nSW5mb0RhdGEgcm93X2Rlc2NyaXB0aW9uX2J1ZjsKQEAg LTQ5NSw0MiArNDkyLDcxIEBAIFJlYWRDb21tYW5kKFN0cmluZ0luZm8gaW5CdWYpCiAgKiBm YWxzZSBpZiBhYm91dCB0byByZWFkIG9yIGRvbmUgcmVhZGluZy4KICAqCiAgKiBNdXN0IHBy ZXNlcnZlIGVycm5vIQorICoKKyAqIFJldHVybnMgYW4gaW50ZXJydXB0IG1hc2sgd2l0aCB0 aGUgYml0cyBzZXQgdGhhdCBhIG5ldyBjYWxsIHRvIHRoaXMKKyAqIGZ1bmN0aW9uIHdpdGgg YmxvY2tlZD09dHJ1ZSB3b3VsZCBoYW5kbGUgYW5kIGNsZWFyIGluIHRoZSBjdXJyZW50Cisg KiBzdGF0ZS4gVGhlIGNhbGxlciBjYW4gdXNlIHRoZSByZXR1cm5lZCBtYXNrIGluIGEgV2Fp dEludGVycnVwdCgpIGNhbGwsIHRvCisgKiB3YWl0IGZvciBpbnRlcnJ1cHRzIHRoYXQgdGhp cyB3b3VsZCBoYW5kbGUsIGFuZAorICogUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoKSBw cm9taXNlcyB0byBjbGVhciB0aG9zZSBiaXRzIGlmIGNhbGxlZCBhZ2Fpbi4KICAqLwotdm9p ZAordWludDMyCiBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpCiB7 CiAJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOworCXVpbnQzMgkJaW50ZXJydXB0TWFzayA9 IDA7CiAKIAlpZiAoRG9pbmdDb21tYW5kUmVhZCkKIAl7Ci0JCS8qIENoZWNrIGZvciBnZW5l cmFsIGludGVycnVwdHMgdGhhdCBhcnJpdmVkIGJlZm9yZS93aGlsZSByZWFkaW5nICovCisJ CS8qIENoZWNrIGZvciBzdGFuZGFyZCBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZlZCBiZWZvcmUv d2hpbGUgcmVhZGluZyAqLworCQlpbnRlcnJ1cHRNYXNrIHw9IElOVEVSUlVQVF9DRklfTUFT SygpOwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qIFByb2Nlc3Mgc2ludmFs IGNhdGNodXAgaW50ZXJydXB0cywgaWYgYW55ICovCi0JCWlmIChjYXRjaHVwSW50ZXJydXB0 UGVuZGluZykKKwkJaW50ZXJydXB0TWFzayB8PSBJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVA7 CisJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX1NJTlZBTF9DQVRDSFVQKSkK IAkJCVByb2Nlc3NDYXRjaHVwSW50ZXJydXB0KCk7CiAKLQkJLyogUHJvY2VzcyBub3RpZnkg aW50ZXJydXB0cywgaWYgYW55ICovCi0JCWlmIChub3RpZnlJbnRlcnJ1cHRQZW5kaW5nKQot CQkJUHJvY2Vzc05vdGlmeUludGVycnVwdCh0cnVlKTsKLQl9Ci0JZWxzZSBpZiAoUHJvY0Rp ZVBlbmRpbmcpCi0JewogCQkvKgotCQkgKiBXZSdyZSBkeWluZy4gIElmIHRoZXJlIGlzIG5v IGRhdGEgYXZhaWxhYmxlIHRvIHJlYWQsIHRoZW4gaXQncyBzYWZlCi0JCSAqIChhbmQgc2Fu ZSkgdG8gaGFuZGxlIHRoYXQgbm93LiAgSWYgd2UgaGF2ZW4ndCB0cmllZCB0byByZWFkIHll dCwKLQkJICogbWFrZSBzdXJlIHRoZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIHNvIHRoYXQg aWYgdGhlcmUgaXMgbm8gZGF0YQotCQkgKiB0aGVuIHdlJ2xsIGNvbWUgYmFjayBoZXJlIGFu ZCBkaWUuICBJZiB3ZSdyZSBkb25lIHJlYWRpbmcsIGFsc28KLQkJICogbWFrZSBzdXJlIHRo ZSBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQsIGFzIHdlIG1pZ2h0J3ZlIHVuZGVzaXJhYmx5Ci0J CSAqIGNsZWFyZWQgaXQgd2hpbGUgcmVhZGluZy4KKwkJICogSWYgd2UgYXJlIHRydWx5IGlk bGUsIGllLiAqbm90KiBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayBtYXRjaGluZworCQkg KiB0aGUgY29uZGl0aW9ucyBpbiBQb3N0Z3Jlc01haW4oKSwgdGhlcmUgYXJlIGEgZmV3IGFk ZGl0aW9uYWwKKwkJICogaW50ZXJydXB0cyB0aGF0IHdlIGNhbiBwcm9jZXNzIGltbWVkaWF0 ZWx5LgogCQkgKi8KLQkJaWYgKGJsb2NrZWQpCi0JCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwotCQllbHNlCi0JCQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJCWlm ICghSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlpbnRlcnJ1 cHRNYXNrIHw9IElOVEVSUlVQVF9BU1lOQ19OT1RJRlk7CisJCQlpZiAoSXNJbnRlcnJ1cHRQ ZW5kaW5nKElOVEVSUlVQVF9BU1lOQ19OT1RJRlkpKQorCQkJCVByb2Nlc3NOb3RpZnlJbnRl cnJ1cHQodHJ1ZSk7CisKKwkJCWludGVycnVwdE1hc2sgfD0gSU5URVJSVVBUX0lETEVfU1RB VFNfVElNRU9VVDsKKwkJCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0lETEVf U1RBVFNfVElNRU9VVCkpCisJCQl7CisJCQkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0lE TEVfU1RBVFNfVElNRU9VVCk7CisJCQkJcGdzdGF0X3JlcG9ydF9zdGF0KHRydWUpOworCQkJ fQorCQl9CisJfQorCWVsc2UgaWYgKChJTlRFUlJVUFRfQ0ZJX01BU0soKSAmIElOVEVSUlVQ VF9ESUUpICE9IDApCisJeworCQlpbnRlcnJ1cHRNYXNrIHw9IElOVEVSUlVQVF9ESUU7CisJ CWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5URVJSVVBUX0RJRSkpCisJCXsKKwkJCS8qCisJ CQkgKiBXZSdyZSBkeWluZy4gIElmIHRoZXJlIGlzIG5vIGRhdGEgYXZhaWxhYmxlIHRvIHJl YWQsIHRoZW4gaXQncyBzYWZlCisJCQkgKiAoYW5kIHNhbmUpIHRvIGhhbmRsZSB0aGF0IG5v dy4gIElmIHdlIGhhdmVuJ3QgdHJpZWQgdG8gcmVhZCB5ZXQsCisJCQkgKiBkb24ndCBjbGVh ciB0aGUgaW50ZXJydXB0IGZsYWcgaXMgc2V0LCBzbyB0aGF0IGlmIHRoZXJlIGlzIG5vIGRh dGEKKwkJCSAqIHRoZW4gd2UnbGwgY29tZSBiYWNrIGhlcmUgYW5kIGRpZS4KKwkJCSAqLwor CQkJaWYgKGJsb2NrZWQpCisJCQl7CisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJ CQlBc3NlcnQoZmFsc2UpOwkvKiBDSEVDS19GT1JfSU5URVJSVVBUUyBzaG91bGQndmUgYmFp bGVkIG91dCAqLworCQkJfQorCQl9CiAJfQogCiAJZXJybm8gPSBzYXZlX2Vycm5vOworCisJ cmV0dXJuIGludGVycnVwdE1hc2s7CiB9CiAKIC8qCkBAIC01NDEsMzAgKzU2NywzMCBAQCBQ cm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpCiAgKiBmYWxzZSBpZiBh Ym91dCB0byB3cml0ZSBvciBkb25lIHdyaXRpbmcuCiAgKgogICogTXVzdCBwcmVzZXJ2ZSBl cnJubyEKKyAqCisgKiBMaWtlIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0LCByZXR1cm5z IGFuIGludGVycnVwdCBtYXNrIHdpdGggdGhlIGJpdHMKKyAqIHNldCB0aGF0IGEgbmV3IGNh bGwgdG8gdGhpcyBmdW5jdGlvbiB3aXRoIGJsb2NrZWQ9PXRydWUgd291bGQgaGFuZGxlIGFu ZAorICogY2xlYXIgaW4gdGhlIGN1cnJlbnQgc3RhdGUuCiAgKi8KLXZvaWQKK3VpbnQzMgog UHJvY2Vzc0NsaWVudFdyaXRlSW50ZXJydXB0KGJvb2wgYmxvY2tlZCkKIHsKIAlpbnQJCQlz YXZlX2Vycm5vID0gZXJybm87CisJdWludDMyCQlpbnRlcnJ1cHRNYXNrID0gMDsKIAotCWlm IChQcm9jRGllUGVuZGluZykKKwlpZiAoKElOVEVSUlVQVF9DRklfTUFTSygpICYgSU5URVJS VVBUX0RJRSkgIT0gMCkKIAl7Ci0JCS8qCi0JCSAqIFdlJ3JlIGR5aW5nLiAgSWYgaXQncyBu b3QgcG9zc2libGUgdG8gd3JpdGUsIHRoZW4gd2Ugc2hvdWxkIGhhbmRsZQotCQkgKiB0aGF0 IGltbWVkaWF0ZWx5LCBlbHNlIGEgc3R1Y2sgY2xpZW50IGNvdWxkIGluZGVmaW5pdGVseSBk ZWxheSBvdXIKLQkJICogcmVzcG9uc2UgdG8gdGhlIHNpZ25hbC4gIElmIHdlIGhhdmVuJ3Qg dHJpZWQgdG8gd3JpdGUgeWV0LCBtYWtlCi0JCSAqIHN1cmUgdGhlIGludGVycnVwdCBmbGFn IGlzIHNldCwgc28gdGhhdCBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2sKLQkJICogdGhlbiB3 ZSdsbCBjb21lIGJhY2sgaGVyZSBhbmQgZGllLiAgSWYgd2UncmUgZG9uZSB3cml0aW5nLCBh bHNvCi0JCSAqIG1ha2Ugc3VyZSB0aGUgaW50ZXJydXB0IGZsYWcgaXMgc2V0LCBhcyB3ZSBt aWdodCd2ZSB1bmRlc2lyYWJseQotCQkgKiBjbGVhcmVkIGl0IHdoaWxlIHdyaXRpbmcuCi0J CSAqLwotCQlpZiAoYmxvY2tlZCkKKwkJaW50ZXJydXB0TWFzayB8PSBJTlRFUlJVUFRfRElF OworCQlpZiAoSXNJbnRlcnJ1cHRQZW5kaW5nKElOVEVSUlVQVF9ESUUpKQogCQl7CiAJCQkv KgotCQkJICogRG9uJ3QgbWVzcyB3aXRoIHdoZXJlVG9TZW5kT3V0cHV0IGlmIFByb2Nlc3NJ bnRlcnJ1cHRzIHdvdWxkbid0Ci0JCQkgKiBzZXJ2aWNlIFByb2NEaWVQZW5kaW5nLgorCQkJ ICogV2UncmUgZHlpbmcuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byB3cml0ZSwgdGhlbiB3 ZSBzaG91bGQKKwkJCSAqIGhhbmRsZSB0aGF0IGltbWVkaWF0ZWx5LCBlbHNlIGEgc3R1Y2sg Y2xpZW50IGNvdWxkIGluZGVmaW5pdGVseQorCQkJICogZGVsYXkgb3VyIHJlc3BvbnNlIHRv IHRoZSBzaWduYWwuICBJZiB3ZSBoYXZlbid0IHRyaWVkIHRvIHdyaXRlCisJCQkgKiB5ZXQs IG1ha2Ugc3VyZSB0byBub3QgY2xlYXIgdGhlIGludGVycnVwdCBmbGFnIHNldCwgc28gdGhh dCBpZgorCQkJICogdGhlIHdyaXRlIHdvdWxkIGJsb2NrIHRoZW4gd2UnbGwgY29tZSBiYWNr IGhlcmUgYW5kIGRpZS4KIAkJCSAqLwotCQkJaWYgKEludGVycnVwdEhvbGRvZmZDb3VudCA9 PSAwICYmIENyaXRTZWN0aW9uQ291bnQgPT0gMCkKKwkJCWlmIChibG9ja2VkKQogCQkJewog CQkJCS8qCiAJCQkJICogV2UgZG9uJ3Qgd2FudCB0byBzZW5kIHRoZSBjbGllbnQgdGhlIGVy cm9yIG1lc3NhZ2UsIGFzIGEpCkBAIC01NzYsMTMgKzYwMiwxNCBAQCBQcm9jZXNzQ2xpZW50 V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkJCQl3aGVyZVRvU2VuZE91dHB1dCA9 IERlc3ROb25lOwogCiAJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCQlBc3NlcnQo ZmFsc2UpOwkvKiBDSEVDS19GT1JfSU5URVJSVVBUUyBzaG91bGQndmUgYmFpbGVkIG91dCAq LwogCQkJfQogCQl9Ci0JCWVsc2UKLQkJCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5F UkFMKTsKIAl9CiAKIAllcnJubyA9IHNhdmVfZXJybm87CisKKwlyZXR1cm4gaW50ZXJydXB0 TWFzazsKIH0KIAogLyoKQEAgLTI1MjcsMjkgKzI1NTQsMjkgQEAgZXJyZGV0YWlsX2Fib3J0 KHZvaWQpCiAgKiBBZGQgYW4gZXJyZGV0YWlsKCkgbGluZSBzaG93aW5nIGNvbmZsaWN0IHNv dXJjZS4KICAqLwogc3RhdGljIGludAotZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KFBy b2NTaWduYWxSZWFzb24gcmVhc29uKQorZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KElu dGVycnVwdFR5cGUgcmVhc29uKQogewogCXN3aXRjaCAocmVhc29uKQogCXsKLQkJY2FzZSBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTjoKKwkJY2FzZSBJTlRFUlJVUFRf UkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyBo b2xkaW5nIHNoYXJlZCBidWZmZXIgcGluIGZvciB0b28gbG9uZy4iKTsKIAkJCWJyZWFrOwot CQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKKwkJY2FzZSBJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB3YXMgaG9s ZGluZyBhIHJlbGF0aW9uIGxvY2sgZm9yIHRvbyBsb25nLiIpOwogCQkJYnJlYWs7Ci0JCWNh c2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgorCQljYXNlIElOVEVS UlVQVF9SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJZXJyZGV0YWlsKCJVc2Vy IHdhcyBvciBtaWdodCBoYXZlIGJlZW4gdXNpbmcgdGFibGVzcGFjZSB0aGF0IG11c3QgYmUg ZHJvcHBlZC4iKTsKIAkJCWJyZWFrOwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfU05BUFNIT1Q6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9UOgogCQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNl ZSByb3cgdmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKLQkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQljYXNlIElO VEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKIAkJCWVycmRldGFpbCgi VXNlciB3YXMgdXNpbmcgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgdGhhdCBtdXN0IGJl IGludmFsaWRhdGVkLiIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0 aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFr OwotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNhc2Ug SU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFOgogCQkJZXJyZGV0YWlsKCJV c2VyIHdhcyBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSB0aGF0IG11c3QgYmUgZHJvcHBlZC4i KTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtMzAwNCwxNyArMzAzMSwxMSBAQCBkaWUo U0lHTkFMX0FSR1MpCiB7CiAJLyogRG9uJ3Qgam9nZ2xlIHRoZSBlbGJvdyBvZiBwcm9jX2V4 aXQgKi8KIAlpZiAoIXByb2NfZXhpdF9pbnByb2dyZXNzKQotCXsKLQkJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7Ci0JCVByb2NEaWVQZW5kaW5nID0gdHJ1ZTsKLQl9CisJCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9ESUUpOwogCiAJLyogZm9yIHRoZSBjdW11bGF0aXZlIHN0YXRz IHN5c3RlbSAqLwogCXBnU3RhdFNlc3Npb25FbmRDYXVzZSA9IERJU0NPTk5FQ1RfS0lMTEVE OwogCi0JLyogSWYgd2UncmUgc3RpbGwgaGVyZSwgd2FrZW4gYW55dGhpbmcgd2FpdGluZyBv biB0aGUgaW50ZXJydXB0ICovCi0JUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwp OwotCiAJLyoKIAkgKiBJZiB3ZSdyZSBpbiBzaW5nbGUgdXNlciBtb2RlLCB3ZSB3YW50IHRv IHF1aXQgaW1tZWRpYXRlbHkgLSB3ZSBjYW4ndAogCSAqIHJlbHkgb24gaW50ZXJydXB0cyBh cyB0aGV5IHdvdWxkbid0IHdvcmsgd2hlbiBzdGRpbi9zdGRvdXQgaXMgYSBmaWxlLgpAQCAt MzAzMiwxNyArMzA1Myw3IEBAIGRpZShTSUdOQUxfQVJHUykKIHZvaWQKIFN0YXRlbWVudENh bmNlbEhhbmRsZXIoU0lHTkFMX0FSR1MpCiB7Ci0JLyoKLQkgKiBEb24ndCBqb2dnbGUgdGhl IGVsYm93IG9mIHByb2NfZXhpdAotCSAqLwotCWlmICghcHJvY19leGl0X2lucHJvZ3Jlc3Mp Ci0JewotCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQkJUXVlcnlDYW5jZWxQZW5kaW5n ID0gdHJ1ZTsKLQl9Ci0KLQkvKiBJZiB3ZSdyZSBzdGlsbCBoZXJlLCB3YWtlbiBhbnl0aGlu ZyB3YWl0aW5nIG9uIHRoZSBpbnRlcnJ1cHQgKi8KLQlSYWlzZUludGVycnVwdChJTlRFUlJV UFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7 CiB9CiAKIC8qIHNpZ25hbCBoYW5kbGVyIGZvciBmbG9hdGluZyBwb2ludCBleGNlcHRpb24g Ki8KQEAgLTMwNTksMjcgKzMwNzAsMTQgQEAgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05B TF9BUkdTKQogfQogCiAvKgotICogVGVsbCB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBU UygpIHRvIGNoZWNrIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZgotICogcmVjb3ZlcnkgY29u ZmxpY3QuICBSdW5zIGluIGEgU0lHVVNSMSBoYW5kbGVyLgotICovCi12b2lkCi1IYW5kbGVS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQotewot CVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFzb25dID0gdHJ1ZTsKLQlSZWNv dmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7Ci0JSW50ZXJydXB0UGVuZGluZyA9IHRydWU7 Ci0JLyogSU5URVJSVVBUX0dFTkVSQUwgd2lsbCBiZSByYWlzZWQgYnkgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIgKi8KLX0KLQotLyoKLSAqIENoZWNrIG9uZSBpbmRpdmlkdWFsIGNv bmZsaWN0IHJlYXNvbi4KKyAqIFByb2Nlc3Mgb25lIGluZGl2aWR1YWwgY29uZmxpY3QgcmVh c29uLgogICovCiBzdGF0aWMgdm9pZAotUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCitQcm9jZXNzUmVjb3ZlcnlDb25mbGljdElu dGVycnVwdChJbnRlcnJ1cHRUeXBlIHJlYXNvbikKIHsKIAlzd2l0Y2ggKHJlYXNvbikKIAl7 Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgor CQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CiAJCQkvKgogCQkJICogSWYgd2UgYXJlbid0IHdhaXRpbmcgZm9yIGEgbG9jayB3ZSBjYW4g bmV2ZXIgZGVhZGxvY2suCkBAIC0zMDkwLDIxICszMDg4LDIxIEBAIFByb2Nlc3NSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJLyogSW50 ZW50aW9uYWwgZmFsbCB0aHJvdWdoIHRvIGNoZWNrIHdhaXQgZm9yIHBpbiAqLwogCQkJLyog RkFMTFRIUk9VR0ggKi8KIAotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVG RkVSUElOOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU46 CiAKIAkJCS8qCi0JCQkgKiBJZiBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJ TiBpcyByZXF1ZXN0ZWQgYnV0IHdlCisJCQkgKiBJZiBJTlRFUlJVUFRfUkVDT1ZFUllfQ09O RkxJQ1RfQlVGRkVSUElOIGlzIHJlcXVlc3RlZCBidXQgd2UKIAkJCSAqIGFyZW4ndCBibG9j a2luZyB0aGUgU3RhcnR1cCBwcm9jZXNzIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0bwogCQkJ ICogZG8uCiAJCQkgKgotCQkJICogV2hlbiBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0sgaXMgcmVxdWVzdGVkLAorCQkJICogV2hlbiBJTlRFUlJVUFRfUkVD T1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyBpcyByZXF1ZXN0ZWQsCiAJCQkgKiBp ZiB3ZSdyZSB3YWl0aW5nIGZvciBsb2NrcyBhbmQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBpcyBu b3QKIAkJCSAqIHdhaXRpbmcgZm9yIGJ1ZmZlciBwaW4gKGkuZS4sIGFsc28gd2FpdGluZyBm b3IgbG9ja3MpLCB3ZSBzZXQKIAkJCSAqIHRoZSBmbGFnIHNvIHRoYXQgUHJvY1NsZWVwKCkg d2lsbCBjaGVjayBmb3IgZGVhZGxvY2tzLgogCQkJICovCiAJCQlpZiAoIUhvbGRpbmdCdWZm ZXJQaW5UaGF0RGVsYXlzUmVjb3ZlcnkoKSkKIAkJCXsKLQkJCQlpZiAocmVhc29uID09IFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyAmJgorCQkJCWlmIChy ZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0sg JiYKIAkJCQkJR2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZCgpIDwgMCkKIAkJCQkJQ2hl Y2tEZWFkTG9ja0FsZXJ0KCk7CiAJCQkJcmV0dXJuOwpAQCAtMzExNSw5ICszMTEzLDkgQEAg UHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFz b24pCiAJCQkvKiBJbnRlbnRpb25hbCBmYWxsIHRocm91Z2ggdG8gZXJyb3IgaGFuZGxpbmcg Ki8KIAkJCS8qIEZBTExUSFJPVUdIICovCiAKLQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0xPQ0s6Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQ QUNFOgotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CisJCWNh c2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CisJCWNhc2UgSU5URVJSVVBU X1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCiAJCQkvKgogCQkJICogSWYgd2UgYXJlbid0IGlu IGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KQEAgLTMxMjcsMTQgKzMx MjUsMTQgQEAgUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJl YXNvbiByZWFzb24pCiAKIAkJCS8qIEZBTExUSFJPVUdIICovCiAKLQkJY2FzZSBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQljYXNlIElOVEVSUlVQVF9SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKIAogCQkJLyoKIAkJCSAqIElmIHdlJ3JlIG5v dCBpbiBhIHN1YnRyYW5zYWN0aW9uIHRoZW4gd2UgYXJlIE9LIHRvIHRocm93IGFuCiAJCQkg KiBFUlJPUiB0byByZXNvbHZlIHRoZSBjb25mbGljdC4gIE90aGVyd2lzZSBkcm9wIHRocm91 Z2ggdG8gdGhlCiAJCQkgKiBGQVRBTCBjYXNlLgogCQkJICoKLQkJCSAqIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgaXMgYSBzcGVjaWFsIGNhc2UgdGhhdAorCQkJ ICogUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgaXMgYSBzcGVjaWFsIGNhc2UgdGhh dAogCQkJICogYWx3YXlzIHRocm93cyBhbiBFUlJPUiAoaWUgbmV2ZXIgcHJvbW90ZXMgdG8g RkFUQUwpLCB0aG91Z2ggaXQKIAkJCSAqIHN0aWxsIGhhcyB0byByZXNwZWN0IFF1ZXJ5Q2Fu Y2VsSG9sZG9mZkNvdW50LCBzbyBpdCBzaGFyZXMgdGhpcwogCQkJICogY29kZSBwYXRoLiAg TG9naWNhbCBkZWNvZGluZyBzbG90cyBhcmUgb25seSBhY3F1aXJlZCB3aGlsZQpAQCAtMzE0 NCwxNyArMzE0MiwxNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9j U2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCSAqIGludGVyY2VwdCBhbiBlcnJvciBiZWZvcmUg dGhlIHJlcGxpY2F0aW9uIHNsb3QgaXMgcmVsZWFzZWQuCiAJCQkgKgogCQkJICogWFhYIG90 aGVyIHRpbWVzIHRoYXQgd2UgY2FuIHRocm93IGp1c3QgYW4gRVJST1IgKm1heSogYmUKLQkJ CSAqIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSyBpZiBubyBsb2NrcyBhcmUgaGVs ZCBpbiBwYXJlbnQKKwkJCSAqIFJFQ09WRVJZX0NPTkZMSUNUX0xPQ0sgaWYgbm8gbG9ja3Mg YXJlIGhlbGQgaW4gcGFyZW50CiAJCQkgKiB0cmFuc2FjdGlvbnMKIAkJCSAqCi0JCQkgKiBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UIGlmIG5vIHNuYXBzaG90cyBhcmUg aGVsZCBieQorCQkJICogUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QgaWYgbm8gc25hcHNo b3RzIGFyZSBoZWxkIGJ5CiAJCQkgKiBwYXJlbnQgdHJhbnNhY3Rpb25zIGFuZCB0aGUgdHJh bnNhY3Rpb24gaXMgbm90CiAJCQkgKiB0cmFuc2FjdGlvbi1zbmFwc2hvdCBtb2RlCiAJCQkg KgotCQkJICogUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFIGlmIG5vIHRl bXAgZmlsZXMgb3IKKwkJCSAqIFJFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UgaWYgbm8g dGVtcCBmaWxlcyBvcgogCQkJICogY3Vyc29ycyBvcGVuIGluIHBhcmVudCB0cmFuc2FjdGlv bnMKIAkJCSAqLwotCQkJaWYgKHJlYXNvbiA9PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UIHx8CisJCQlpZiAocmVhc29uID09IElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9MT0dJQ0FMU0xPVCB8fAogCQkJCSFJc1N1YlRyYW5zYWN0aW9uKCkpCiAJCQl7 CiAJCQkJLyoKQEAgLTMxNzgsMTIgKzMxNzYsMTAgQEAgUHJvY2Vzc1JlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQkJCWlmIChRdWVyeUNh bmNlbEhvbGRvZmZDb3VudCAhPSAwKQogCQkJCQl7CiAJCQkJCQkvKgotCQkJCQkJICogUmUt YXJtIGFuZCBkZWZlciB0aGlzIGludGVycnVwdCB1bnRpbCBsYXRlci4gIFNlZQotCQkJCQkJ ICogc2ltaWxhciBjb2RlIGluIFByb2Nlc3NJbnRlcnJ1cHRzKCkuCisJCQkJCQkgKiBMZWF2 ZSB0aGUgaW50ZXJydXB0IHNldCB0byBkZWZlciB0aGlzIGludGVycnVwdAorCQkJCQkJICog dW50aWwgbGF0ZXIuICBTZWUgc2ltaWxhciBjb2RlIGluCisJCQkJCQkgKiBQcm9jZXNzSW50 ZXJydXB0cygpLgogCQkJCQkJICovCi0JCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZ1Jl YXNvbnNbcmVhc29uXSA9IHRydWU7Ci0JCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9 IHRydWU7Ci0JCQkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKIAkJCQkJCXJldHVybjsK IAkJCQkJfQogCkBAIC0zMjA2LDcgKzMyMDIsNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25mbGlj dEludGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCS8qIEludGVudGlvbmFs IGZhbGwgdGhyb3VnaCB0byBzZXNzaW9uIGNhbmNlbCAqLwogCQkJLyogRkFMTFRIUk9VR0gg Ki8KIAotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0U6CisJCWNh c2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFOgogCiAJCQkvKgogCQkJ ICogUmV0cnlpbmcgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGlzIGRy b3BwZWQsIG9yIHdlCkBAIC0zMjE1LDcgKzMyMTEsNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25m bGljdEludGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCSAqLwogCQkJcGdz dGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChyZWFzb24pOwogCQkJZXJlcG9ydChGQVRB TCwKLQkJCQkJKGVycmNvZGUocmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf REFUQUJBU0UgPworCQkJCQkoZXJyY29kZShyZWFzb24gPT0gSU5URVJSVVBUX1JFQ09WRVJZ X0NPTkZMSUNUX0RBVEFCQVNFID8KIAkJCQkJCQkgRVJSQ09ERV9EQVRBQkFTRV9EUk9QUEVE IDoKIAkJCQkJCQkgRVJSQ09ERV9UX1JfU0VSSUFMSVpBVElPTl9GQUlMVVJFKSwKIAkJCQkJ IGVycm1zZygidGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gY29uZmxpY3Qgd2l0aCBy ZWNvdmVyeSIpLApAQCAtMzIyOSw0NyArMzIyNSwxNyBAQCBQcm9jZXNzUmVjb3ZlcnlDb25m bGljdEludGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAl9CiB9CiAKLS8qCi0g KiBDaGVjayBlYWNoIHBvc3NpYmxlIHJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbi4KLSAqLwot c3RhdGljIHZvaWQKLVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0cyh2b2lkKQot ewotCS8qCi0JICogV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBqb2dnbGluZyB0aGUg ZWxib3cgb2YgcHJvY19leGl0LCBiZWNhdXNlCi0JICogcHJvY19leGl0X3ByZXBhcmUoKSBo b2xkcyBpbnRlcnJ1cHRzLCBzbyBQcm9jZXNzSW50ZXJydXB0cygpIHdvbid0IGNhbGwKLQkg KiB1cy4KLQkgKi8KLQlBc3NlcnQoIXByb2NfZXhpdF9pbnByb2dyZXNzKTsKLQlBc3NlcnQo SW50ZXJydXB0SG9sZG9mZkNvdW50ID09IDApOwotCUFzc2VydChSZWNvdmVyeUNvbmZsaWN0 UGVuZGluZyk7Ci0KLQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IGZhbHNlOwotCi0JZm9y IChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiA9IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf RklSU1Q7Ci0JCSByZWFzb24gPD0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MQVNUOwot CQkgcmVhc29uKyspCi0JewotCQlpZiAoUmVjb3ZlcnlDb25mbGljdFBlbmRpbmdSZWFzb25z W3JlYXNvbl0pCi0JCXsKLQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nUmVhc29uc1tyZWFz b25dID0gZmFsc2U7Ci0JCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChyZWFz b24pOwotCQl9Ci0JfQotfQotCiAvKgogICogUHJvY2Vzc0ludGVycnVwdHM6IG91dC1vZi1s aW5lIHBvcnRpb24gb2YgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBtYWNybwogICoKICAqIElm IGFuIGludGVycnVwdCBjb25kaXRpb24gaXMgcGVuZGluZywgYW5kIGl0J3Mgc2FmZSB0byBz ZXJ2aWNlIGl0LAotICogdGhlbiBjbGVhciB0aGUgZmxhZyBhbmQgYWNjZXB0IHRoZSBpbnRl cnJ1cHQuICBDYWxsZWQgb25seSB3aGVuCi0gKiBJbnRlcnJ1cHRQZW5kaW5nIGlzIHRydWUu CisgKiB0aGVuIGNsZWFyIHRoZSBmbGFnIGFuZCBhY2NlcHQgdGhlIGludGVycnVwdC4KICAq Ci0gKiBOb3RlOiBpZiBJTlRFUlJVUFRTX0NBTl9CRV9QUk9DRVNTRUQoKSBpcyB0cnVlLCB0 aGVuIFByb2Nlc3NJbnRlcnJ1cHRzCi0gKiBpcyBndWFyYW50ZWVkIHRvIGNsZWFyIHRoZSBJ bnRlcnJ1cHRQZW5kaW5nIGZsYWcgYmVmb3JlIHJldHVybmluZy4KLSAqIChUaGlzIGlzIG5v dCB0aGUgc2FtZSBhcyBndWFyYW50ZWVpbmcgdGhhdCBpdCdzIHN0aWxsIGNsZWFyIHdoZW4g d2UKLSAqIHJldHVybjsgYW5vdGhlciBpbnRlcnJ1cHQgY291bGQgaGF2ZSBhcnJpdmVkLiAg QnV0IHdlIHByb21pc2UgdGhhdAotICogYW55IHByZS1leGlzdGluZyBvbmUgd2lsbCBoYXZl IGJlZW4gc2VydmljZWQuKQorICogTm90ZTogUHJvY2Vzc0ludGVycnVwdHMgaXMgZ3VhcmFu dGVlZCB0byBjbGVhciB0aGUgaW50ZXJydXB0IGJpdHMgaW4KKyAqIElOVEVSUlVQVF9DRklf TUFTSygpIGJlZm9yZSByZXR1cm5pbmcuICAoVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMKKyAq IGd1YXJhbnRlZWluZyB0aGF0IGl0J3Mgc3RpbGwgY2xlYXIgd2hlbiB3ZSByZXR1cm47IGFu b3RoZXIgaW50ZXJydXB0IGNvdWxkCisgKiBoYXZlIGFycml2ZWQuICBCdXQgd2UgcHJvbWlz ZSB0aGF0IGFueSBwcmUtZXhpc3Rpbmcgb25lIHdpbGwgaGF2ZSBiZWVuCisgKiBzZXJ2aWNl ZC4pCiAgKi8KIHZvaWQKIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCkBAIC0zMjc3LDEyICsz MjQzLDE4IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJLyogT0sgdG8gYWNjZXB0IGFu eSBpbnRlcnJ1cHRzIG5vdz8gKi8KIAlpZiAoSW50ZXJydXB0SG9sZG9mZkNvdW50ICE9IDAg fHwgQ3JpdFNlY3Rpb25Db3VudCAhPSAwKQogCQlyZXR1cm47Ci0JSW50ZXJydXB0UGVuZGlu ZyA9IGZhbHNlOwogCi0JaWYgKFByb2NEaWVQZW5kaW5nKQorCS8qCisJICogVE9ETzogaXQn ZCBiZSBnb29kIGZvciBwZXJmb3JtYW5jZSB0byByZWFkIHRoZSBhdG9taWMKKwkgKiBNeVBl bmRpbmdJbnRlcnJ1cHRzIHZhcmlhYmxlIGp1c3Qgb25jZSBpbiB0aGlzIGZ1bmN0aW9uCisJ ICovCisKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfV0FMU05EX0lOSVRfU1RP UFBJTkcpKQorCQlQcm9jZXNzV2FsU25kSW5pdFN0b3BwaW5nKCk7CisKKwlpZiAoQ29uc3Vt ZUludGVycnVwdChJTlRFUlJVUFRfRElFKSkKIAl7Ci0JCVByb2NEaWVQZW5kaW5nID0gZmFs c2U7Ci0JCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOyAvKiBQcm9jRGllIHRydW1wcyBR dWVyeUNhbmNlbCAqLworCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfUVVFUllfQ0FOQ0VM KTsgLyogUHJvY0RpZSB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KIAkJTG9ja0Vycm9yQ2xlYW51 cCgpOwogCQkvKiBBcyBpbiBxdWlja2RpZSwgZG9uJ3QgcmlzayBzZW5kaW5nIHRvIGNsaWVu dCBkdXJpbmcgYXV0aCAqLwogCQlpZiAoQ2xpZW50QXV0aEluUHJvZ3Jlc3MgJiYgd2hlcmVU b1NlbmRPdXRwdXQgPT0gRGVzdFJlbW90ZSkKQEAgLTMzMjEsMTAgKzMyOTMsOCBAQCBQcm9j ZXNzSW50ZXJydXB0cyh2b2lkKQogCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBjb25uZWN0 aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKSkpOwogCX0KIAotCWlmIChDaGVj a0NsaWVudENvbm5lY3Rpb25QZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVS UlVQVF9DTElFTlRfQ0hFQ0tfVElNRU9VVCkpCiAJewotCQlDaGVja0NsaWVudENvbm5lY3Rp b25QZW5kaW5nID0gZmFsc2U7Ci0KIAkJLyoKIAkJICogQ2hlY2sgZm9yIGxvc3QgY29ubmVj dGlvbiBhbmQgcmUtYXJtLCBpZiBzdGlsbCBjb25maWd1cmVkLCBidXQgbm90CiAJCSAqIGlm IHdlJ3ZlIGFycml2ZWQgYmFjayBhdCBEb2luZ0NvbW1hbmRSZWFkIHN0YXRlLiAgV2UgZG9u J3Qgd2FudCB0bwpAQCAtMzMzNCwxNiArMzMwNCwxNiBAQCBQcm9jZXNzSW50ZXJydXB0cyh2 b2lkKQogCQlpZiAoIURvaW5nQ29tbWFuZFJlYWQgJiYgY2xpZW50X2Nvbm5lY3Rpb25fY2hl Y2tfaW50ZXJ2YWwgPiAwKQogCQl7CiAJCQlpZiAoIXBxX2NoZWNrX2Nvbm5lY3Rpb24oKSkK LQkJCQlDbGllbnRDb25uZWN0aW9uTG9zdCA9IHRydWU7CisJCQkJUmFpc2VJbnRlcnJ1cHQo SU5URVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpOwogCQkJZWxzZQogCQkJCWVuYWJs ZV90aW1lb3V0X2FmdGVyKENMSUVOVF9DT05ORUNUSU9OX0NIRUNLX1RJTUVPVVQsCiAJCQkJ CQkJCQkgY2xpZW50X2Nvbm5lY3Rpb25fY2hlY2tfaW50ZXJ2YWwpOwogCQl9CiAJfQogCi0J aWYgKENsaWVudENvbm5lY3Rpb25Mb3N0KQorCWlmIChJc0ludGVycnVwdFBlbmRpbmcoSU5U RVJSVVBUX0NMSUVOVF9DT05ORUNUSU9OX0xPU1QpKQogCXsKLQkJUXVlcnlDYW5jZWxQZW5k aW5nID0gZmFsc2U7IC8qIGxvc3QgY29ubmVjdGlvbiB0cnVtcHMgUXVlcnlDYW5jZWwgKi8K KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7IC8qIGxvc3QgY29u bmVjdGlvbiB0cnVtcHMgUXVlcnlDYW5jZWwgKi8KIAkJTG9ja0Vycm9yQ2xlYW51cCgpOwog CQkvKiBkb24ndCBzZW5kIHRvIGNsaWVudCwgd2UgYWxyZWFkeSBrbm93IHRoZSBjb25uZWN0 aW9uIHRvIGJlIGRlYWQuICovCiAJCXdoZXJlVG9TZW5kT3V0cHV0ID0gRGVzdE5vbmU7CkBA IC0zMzYwLDI1ICszMzMwLDExIEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAJICoKIAkg KiBTZWUgc2ltaWxhciBsb2dpYyBpbiBQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVw dHMoKS4KIAkgKi8KLQlpZiAoUXVlcnlDYW5jZWxQZW5kaW5nICYmIFF1ZXJ5Q2FuY2VsSG9s ZG9mZkNvdW50ICE9IDApCi0JewotCQkvKgotCQkgKiBSZS1hcm0gSW50ZXJydXB0UGVuZGlu ZyBzbyB0aGF0IHdlIHByb2Nlc3MgdGhlIGNhbmNlbCByZXF1ZXN0IGFzCi0JCSAqIHNvb24g YXMgd2UncmUgZG9uZSByZWFkaW5nIHRoZSBtZXNzYWdlLiAgKFhYWCB0aGlzIGlzIHNlcmlv dXNseQotCQkgKiB1Z2x5OiBpdCBjb21wbGljYXRlcyBJTlRFUlJVUFRTX0NBTl9CRV9QUk9D RVNTRUQoKSwgYW5kIGl0IG1lYW5zIHdlCi0JCSAqIGNhbid0IHVzZSB0aGF0IG1hY3JvIGRp cmVjdGx5IGFzIHRoZSBpbml0aWFsIHRlc3QgaW4gdGhpcyBmdW5jdGlvbiwKLQkJICogbWVh bmluZyB0aGF0IHRoaXMgY29kZSBhbHNvIGNyZWF0ZXMgb3Bwb3J0dW5pdGllcyBmb3Igb3Ro ZXIgYnVncyB0bwotCQkgKiBhcHBlYXIuKQotCQkgKi8KLQkJSW50ZXJydXB0UGVuZGluZyA9 IHRydWU7Ci0JfQotCWVsc2UgaWYgKFF1ZXJ5Q2FuY2VsUGVuZGluZykKKwlpZiAoUXVlcnlD YW5jZWxIb2xkb2ZmQ291bnQgPT0gMCAmJiBDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9R VUVSWV9DQU5DRUwpKQogCXsKIAkJYm9vbAkJbG9ja190aW1lb3V0X29jY3VycmVkOwogCQli b29sCQlzdG10X3RpbWVvdXRfb2NjdXJyZWQ7CiAKLQkJUXVlcnlDYW5jZWxQZW5kaW5nID0g ZmFsc2U7Ci0KIAkJLyoKIAkJICogSWYgTE9DS19USU1FT1VUIGFuZCBTVEFURU1FTlRfVElN RU9VVCBpbmRpY2F0b3JzIGFyZSBib3RoIHNldCwgd2UKIAkJICogbmVlZCB0byBjbGVhciBi b3RoLCBzbyBhbHdheXMgZmV0Y2ggYm90aC4KQEAgLTM0MzIsMTAgKzMzODgsMjggQEAgUHJv Y2Vzc0ludGVycnVwdHModm9pZCkKIAkJfQogCX0KIAotCWlmIChSZWNvdmVyeUNvbmZsaWN0 UGVuZGluZykKLQkJUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHRzKCk7CisJaWYg KENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNF KSkKKwkJUHJvY2Vzc1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09W RVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKKworCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVS UlVQVF9SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFKSkKKwkJUHJvY2Vzc1JlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BB Q0UpOworCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZM SUNUX0xPQ0spKQorCQlQcm9jZXNzUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSyk7CiAKLQlpZiAoSWRsZUluVHJhbnNhY3Rpb25T ZXNzaW9uVGltZW91dFBlbmRpbmcpCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBU X1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKKwkJUHJvY2Vzc1JlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsKKwor CWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0dJ Q0FMU0xPVCkpCisJCVByb2Nlc3NSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KElOVEVSUlVQ VF9SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKKwlpZiAoQ29uc3VtZUludGVy cnVwdChJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOKSkKKwkJUHJvY2Vz c1JlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNU X0JVRkZFUlBJTik7CisKKwlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfUkVDT1ZF UllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCisJCVByb2Nlc3NSZWNvdmVyeUNvbmZs aWN0SW50ZXJydXB0KElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURM T0NLKTsKKworCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9JRExFX0lOX1RSQU5T QUNUSU9OX1NFU1NJT05fVElNRU9VVCkpCiAJewogCQkvKgogCQkgKiBJZiB0aGUgR1VDIGhh cyBiZWVuIHJlc2V0IHRvIHplcm8sIGlnbm9yZSB0aGUgc2lnbmFsLiAgVGhpcyBpcwpAQCAt MzQ0Myw3ICszNDE3LDYgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJICogaW50ZXJy dXB0LiAgV2UgbmVlZCB0byB1bnNldCB0aGUgZmxhZyBiZWZvcmUgdGhlIGluamVjdGlvbiBw b2ludCwKIAkJICogb3RoZXJ3aXNlIHdlIGNvdWxkIGxvb3AgaW4gaW50ZXJydXB0cyBjaGVj a2luZy4KIAkJICovCi0JCUlkbGVJblRyYW5zYWN0aW9uU2Vzc2lvblRpbWVvdXRQZW5kaW5n ID0gZmFsc2U7CiAJCWlmIChJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0ID4gMCkK IAkJewogCQkJSU5KRUNUSU9OX1BPSU5UKCJpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24t dGltZW91dCIpOwpAQCAtMzQ1MywxMCArMzQyNiw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZv aWQpCiAJCX0KIAl9CiAKLQlpZiAoVHJhbnNhY3Rpb25UaW1lb3V0UGVuZGluZykKKwlpZiAo Q29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfVFJBTlNBQ1RJT05fVElNRU9VVCkpCiAJewog CQkvKiBBcyBhYm92ZSwgaWdub3JlIHRoZSBzaWduYWwgaWYgdGhlIEdVQyBoYXMgYmVlbiBy ZXNldCB0byB6ZXJvLiAqLwotCQlUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7 CiAJCWlmIChUcmFuc2FjdGlvblRpbWVvdXQgPiAwKQogCQl7CiAJCQlJTkpFQ1RJT05fUE9J TlQoInRyYW5zYWN0aW9uLXRpbWVvdXQiKTsKQEAgLTM0NjYsMTAgKzM0MzgsOSBAQCBQcm9j ZXNzSW50ZXJydXB0cyh2b2lkKQogCQl9CiAJfQogCi0JaWYgKElkbGVTZXNzaW9uVGltZW91 dFBlbmRpbmcpCisJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0lETEVfU0VTU0lP Tl9USU1FT1VUKSkKIAl7CiAJCS8qIEFzIGFib3ZlLCBpZ25vcmUgdGhlIHNpZ25hbCBpZiB0 aGUgR1VDIGhhcyBiZWVuIHJlc2V0IHRvIHplcm8uICovCi0JCUlkbGVTZXNzaW9uVGltZW91 dFBlbmRpbmcgPSBmYWxzZTsKIAkJaWYgKElkbGVTZXNzaW9uVGltZW91dCA+IDApCiAJCXsK IAkJCUlOSkVDVElPTl9QT0lOVCgiaWRsZS1zZXNzaW9uLXRpbWVvdXQiKTsKQEAgLTM0Nzks MjggKzM0NTAsMTcgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJfQogCX0KIAotCS8q Ci0JICogSWYgdGhlcmUgYXJlIHBlbmRpbmcgc3RhdHMgdXBkYXRlcyBhbmQgd2UgY3VycmVu dGx5IGFyZSB0cnVseSBpZGxlCi0JICogKG1hdGNoaW5nIHRoZSBjb25kaXRpb25zIGluIFBv c3RncmVzTWFpbigpLCByZXBvcnQgc3RhdHMgbm93LgotCSAqLwotCWlmIChJZGxlU3RhdHNV cGRhdGVUaW1lb3V0UGVuZGluZyAmJgotCQlEb2luZ0NvbW1hbmRSZWFkICYmICFJc1RyYW5z YWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCi0JewotCQlJZGxlU3RhdHNVcGRhdGVUaW1l b3V0UGVuZGluZyA9IGZhbHNlOwotCQlwZ3N0YXRfcmVwb3J0X3N0YXQodHJ1ZSk7Ci0JfQot Ci0JaWYgKFByb2NTaWduYWxCYXJyaWVyUGVuZGluZykKKwlpZiAoSXNJbnRlcnJ1cHRQZW5k aW5nKElOVEVSUlVQVF9CQVJSSUVSKSkKIAkJUHJvY2Vzc1Byb2NTaWduYWxCYXJyaWVyKCk7 CiAKLQlpZiAoUGFyYWxsZWxNZXNzYWdlUGVuZGluZykKKwlpZiAoQ29uc3VtZUludGVycnVw dChJTlRFUlJVUFRfUEFSQUxMRUxfTUVTU0FHRSkpCiAJCVByb2Nlc3NQYXJhbGxlbE1lc3Nh Z2VzKCk7CiAKLQlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCi0JCVByb2Nlc3NMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7Ci0KLQlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQ ZW5kaW5nKQorCWlmIChDb25zdW1lSW50ZXJydXB0KElOVEVSUlVQVF9QQVJBTExFTF9BUFBM WV9NRVNTQUdFKSkKIAkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNzYWdlcygpOworCisJaWYg KENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCkpCisJCVBy b2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiB9CiAKIC8qCkBAIC00MjAzLDcg KzQxNjMsNyBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFy ICp1c2VybmFtZSkKIAkJICogbWlkc3Qgb2Ygb3V0cHV0IGR1cmluZyB3aG8ta25vd3Mtd2hh dCBvcGVyYXRpb24uLi4KIAkJICovCiAJCXBxc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwot CQlwcXNpZ25hbChTSUdVU1IxLCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcik7CisJCXBx c2lnbmFsKFNJR1VTUjEsIFNJR19JR04pOwogCQlwcXNpZ25hbChTSUdVU1IyLCBTSUdfSUdO KTsKIAkJcHFzaWduYWwoU0lHRlBFLCBGbG9hdEV4Y2VwdGlvbkhhbmRsZXIpOwogCkBAIC00 Mzc3LDcgKzQzMzcsNyBAQCBQb3N0Z3Jlc01haW4oY29uc3QgY2hhciAqZGJuYW1lLCBjb25z dCBjaGFyICp1c2VybmFtZSkKIAkJICogZm9yZ2V0dGluZyBhIHRpbWVvdXQgY2FuY2VsLgog CQkgKi8KIAkJZGlzYWJsZV9hbGxfdGltZW91dHMoZmFsc2UpOwkvKiBkbyBmaXJzdCB0byBh dm9pZCByYWNlIGNvbmRpdGlvbiAqLwotCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSBmYWxzZTsK KwkJQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX1FVRVJZX0NBTkNFTCk7CiAJCWlkbGVfaW5f dHJhbnNhY3Rpb25fdGltZW91dF9lbmFibGVkID0gZmFsc2U7CiAJCWlkbGVfc2Vzc2lvbl90 aW1lb3V0X2VuYWJsZWQgPSBmYWxzZTsKIApAQCAtNDU2Miw3ICs0NTIyLDcgQEAgUG9zdGdy ZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCQkJ ICogd2VyZSByZWNlaXZlZCBkdXJpbmcgdGhlIGp1c3QtZmluaXNoZWQgdHJhbnNhY3Rpb24s IHRoZXknbGwKIAkJCQkgKiBiZSBzZWVuIGJ5IHRoZSBjbGllbnQgYmVmb3JlIFJlYWR5Rm9y UXVlcnkgaXMuCiAJCQkJICovCi0JCQkJaWYgKG5vdGlmeUludGVycnVwdFBlbmRpbmcpCisJ CQkJaWYgKElzSW50ZXJydXB0UGVuZGluZyhJTlRFUlJVUFRfQVNZTkNfTk9USUZZKSkKIAkJ CQkJUHJvY2Vzc05vdGlmeUludGVycnVwdChmYWxzZSk7CiAKIAkJCQkvKgpAQCAtNDY0OCw3 ICs0NjA4LDcgQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hh ciAqdXNlcm5hbWUpCiAJCSAqCiAJCSAqIFF1ZXJ5IGNhbmNlbCBpcyBzdXBwb3NlZCB0byBi ZSBhIG5vLW9wIHdoZW4gdGhlcmUgaXMgbm8gcXVlcnkgaW4KIAkJICogcHJvZ3Jlc3MsIHNv IGlmIGEgcXVlcnkgY2FuY2VsIGFycml2ZWQgd2hpbGUgd2Ugd2VyZSBpZGxlLCBqdXN0Ci0J CSAqIHJlc2V0IFF1ZXJ5Q2FuY2VsUGVuZGluZy4gUHJvY2Vzc0ludGVycnVwdHMoKSBoYXMg dGhhdCBlZmZlY3Qgd2hlbgorCQkgKiByZXNldCBJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMLiBQ cm9jZXNzSW50ZXJydXB0cygpIGhhcyB0aGF0IGVmZmVjdCB3aGVuCiAJCSAqIGl0J3MgY2Fs bGVkIHdoZW4gRG9pbmdDb21tYW5kUmVhZCBpcyBzZXQsIHNvIGNoZWNrIGZvciBpbnRlcnJ1 cHRzCiAJCSAqIGJlZm9yZSByZXNldHRpbmcgRG9pbmdDb21tYW5kUmVhZC4KIAkJICovCkBA IC00NjU5LDExICs0NjE5LDggQEAgUG9zdGdyZXNNYWluKGNvbnN0IGNoYXIgKmRibmFtZSwg Y29uc3QgY2hhciAqdXNlcm5hbWUpCiAJCSAqICg2KSBjaGVjayBmb3IgYW55IG90aGVyIGlu dGVyZXN0aW5nIGV2ZW50cyB0aGF0IGhhcHBlbmVkIHdoaWxlIHdlCiAJCSAqIHNsZXB0Lgog CQkgKi8KLQkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCi0JCXsKLQkJCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKKwkJaWYgKENvbnN1bWVJbnRlcnJ1cHQoSU5URVJSVVBUX0NP TkZJR19SRUxPQUQpKQogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7Ci0JCX0K IAogCQkvKgogCQkgKiAoNykgcHJvY2VzcyB0aGUgY29tbWFuZC4gIEJ1dCBpZ25vcmUgaXQg aWYgd2UncmUgc2tpcHBpbmcgdGlsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfZGF0YWJhc2UuYwppbmRleCAwNWE4Y2NmZGI3NS4uNzYyZGVkNjQzYjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBA IC0xNyw3ICsxNyw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCi0jaW5jbHVkZSAi c3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQu aCIKICNpbmNsdWRlICJ1dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKIApAQCAtNzgsNyArNzgsNyBAQCBwZ3N0YXRfcmVwb3J0X2F1dG92 YWMoT2lkIGRib2lkKQogICogUmVwb3J0IGEgSG90IFN0YW5kYnkgcmVjb3ZlcnkgY29uZmxp Y3QuCiAgKi8KIHZvaWQKLXBnc3RhdF9yZXBvcnRfcmVjb3ZlcnlfY29uZmxpY3QoaW50IHJl YXNvbikKK3Bnc3RhdF9yZXBvcnRfcmVjb3ZlcnlfY29uZmxpY3QoSW50ZXJydXB0VHlwZSBy ZWFzb24pCiB7CiAJUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5OwogCkBAIC05MCwzMSAr OTAsMzMgQEAgcGdzdGF0X3JlcG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVhc29uKQog CiAJc3dpdGNoIChyZWFzb24pCiAJewotCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfREFUQUJBU0U6CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFC QVNFOgogCiAJCQkvKgogCQkJICogU2luY2Ugd2UgZHJvcCB0aGUgaW5mb3JtYXRpb24gYWJv dXQgdGhlIGRhdGFiYXNlIGFzIHNvb24gYXMgaXQKIAkJCSAqIHJlcGxpY2F0ZXMsIHRoZXJl IGlzIG5vIHBvaW50IGluIGNvdW50aW5nIHRoZXNlIGNvbmZsaWN0cy4KIAkJCSAqLwogCQkJ YnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgor CQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJZGJl bnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSsrOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0NLOgorCQljYXNlIElOVEVSUlVQVF9SRUNPVkVSWV9D T05GTElDVF9MT0NLOgogCQkJZGJlbnRyeS0+Y29uZmxpY3RfbG9jaysrOwogCQkJYnJlYWs7 Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKKwkJY2FzZSBJ TlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CiAJCQlkYmVudHJ5LT5jb25m bGljdF9zbmFwc2hvdCsrOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9CVUZGRVJQSU46CisJCWNhc2UgSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNU X0JVRkZFUlBJTjoKIAkJCWRiZW50cnktPmNvbmZsaWN0X2J1ZmZlcnBpbisrOwogCQkJYnJl YWs7Ci0JCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJ Y2FzZSBJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CiAJCQlkYmVu dHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOwogCQkJYnJlYWs7Ci0JCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgorCQljYXNlIElOVEVSUlVQ VF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZGJlbnRyeS0+Y29u ZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQll bG9nKExPRywgInVuZXhwZWN0ZWQgcmVjb3ZlcnkgY29uZmxpY3QgcmVhc29uICV1IiwgKHVu c2lnbmVkIGludCkgcmVhc29uKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tY3h0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVu Y3MuYwppbmRleCAzOTZjMmYyMjNiNC4uYTA4ZmNmZmJjMGYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbWN4dGZ1bmNzLmMKQEAgLTI2NSw3ICsyNjUsNiBAQCBwZ19sb2dfYmFja2VuZF9tZW1v cnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlpbnQJCQlwaWQgPSBQR19HRVRB UkdfSU5UMzIoMCk7CiAJUEdQUk9DCSAgICpwcm9jOwotCVByb2NOdW1iZXIJcHJvY051bWJl ciA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKIAkvKgogCSAqIFNlZSBpZiB0aGUgcHJvY2Vz cyB3aXRoIGdpdmVuIHBpZCBpcyBhIGJhY2tlbmQgb3IgYW4gYXV4aWxpYXJ5IHByb2Nlc3Mu CkBAIC0yOTQsMTQgKzI5MywxMyBAQCBwZ19sb2dfYmFja2VuZF9tZW1vcnlfY29udGV4dHMo UEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOwogCX0KIAotCXBy b2NOdW1iZXIgPSBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2MpOwotCWlmIChTZW5kUHJvY1Np Z25hbChwaWQsIFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCBwcm9jTnVtYmVyKSA8IDAp Ci0JewotCQkvKiBBZ2FpbiwganVzdCBhIHdhcm5pbmcgdG8gYWxsb3cgbG9vcHMgKi8KLQkJ ZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJtc2coImNvdWxkIG5vdCBzZW5kIHNpZ25hbCB0 byBwcm9jZXNzICVkOiAlbSIsIHBpZCkpKTsKLQkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOwot CX0KKwkvKgorCSAqIFhYWDogV2UncmUgbm90IGhvbGRpbmcgYW55IGxvY2tzIGhlcmUsIHNv IHRoZSBQR1BST0MgY291bGQgZ2V0IHJlY3ljbGVkCisJICogZm9yIGFub3RoZXIgYmFja2Vu ZC4gSWYgdGhhdCBoYXBwZW5zLCB3ZSdsbCBwcmludCB0aGUgbWVtb3J5IGR1bXAgb2YKKwkg KiB0aGUgbmV3bHkgc3RhcnRlZCBwcm9jZXNzIGluc3RlYWQsIHdoaWNoIGlzIGNvbmZ1c2lu ZyBidXQgb3RoZXJ3aXNlCisJICogaGFybWxlc3MuCisJICovCisJU2VuZEludGVycnVwdChJ TlRFUlJVUFRfTE9HX01FTU9SWV9DT05URVhULCBHZXROdW1iZXJGcm9tUEdQcm9jKHByb2Mp KTsKIAogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L21pc2MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKaW5k ZXggZDdlOWRhNTdiZDEuLjZiNDEwZmJiYzlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvbWlzYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMKQEAg LTQwMywxMSArNDAzLDEwIEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UK IAkJCWJyZWFrOwogCi0JCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM LAorCQkodm9pZCkgV2FpdEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0soKSwKIAkJCQkJ CQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCiAJ CQkJCQkJIGRlbGF5X21zLAogCQkJCQkJCSBXQUlUX0VWRU5UX1BHX1NMRUVQKTsKLQkJQ2xl YXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogCX0KIAogCVBHX1JFVFVSTl9WT0lE KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDc5YmM5OTljZjI2Li4xMDBh OWUxMTlmMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTI4LDIxICsyOCw2 IEBACiAKIFByb3RvY29sVmVyc2lvbiBGcm9udGVuZFByb3RvY29sOwogCi12b2xhdGlsZSBz aWdfYXRvbWljX3QgSW50ZXJydXB0UGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0 b21pY190IFF1ZXJ5Q2FuY2VsUGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21p Y190IFByb2NEaWVQZW5kaW5nID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hl Y2tDbGllbnRDb25uZWN0aW9uUGVuZGluZyA9IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21p Y190IENsaWVudENvbm5lY3Rpb25Mb3N0ID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWlj X3QgSWRsZUluVHJhbnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKLXZv bGF0aWxlIHNpZ19hdG9taWNfdCBUcmFuc2FjdGlvblRpbWVvdXRQZW5kaW5nID0gZmFsc2U7 Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZyA9IGZh bHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxCYXJyaWVyUGVuZGluZyA9 IGZhbHNlOwotdm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNvbnRleHRQZW5kaW5n ID0gZmFsc2U7Ci12b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBkYXRlVGltZW91 dFBlbmRpbmcgPSBmYWxzZTsKLXZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2ZmQ291 bnQgPSAwOwotdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsK LXZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50ID0gMDsKLQogaW50CQkJTXlQcm9j UGlkOwogcGdfdGltZV90CU15U3RhcnRUaW1lOwogVGltZXN0YW1wVHogTXlTdGFydFRpbWVz dGFtcDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCBlMTExMDFhMzZiMC4u NWY1MzkxNTdmZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGlu aXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTEzODIs NDEgKzEzODIsMzEgQEAgTG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpCiBzdGF0aWMgdm9pZAog VHJhbnNhY3Rpb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCVRyYW5zYWN0aW9uVGltZW91 dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwotCVJhaXNlSW50 ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf VFJBTlNBQ1RJT05fVElNRU9VVCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBJZGxlSW5UcmFuc2Fj dGlvblNlc3Npb25UaW1lb3V0SGFuZGxlcih2b2lkKQogewotCUlkbGVJblRyYW5zYWN0aW9u U2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1 ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1 cHQoSU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9USU1FT1VUKTsKIH0K IAogc3RhdGljIHZvaWQKIElkbGVTZXNzaW9uVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlJ ZGxlU2Vzc2lvblRpbWVvdXRQZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0g dHJ1ZTsKLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRl cnJ1cHQoSU5URVJSVVBUX0lETEVfU0VTU0lPTl9USU1FT1VUKTsKIH0KIAogc3RhdGljIHZv aWQKIElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRIYW5kbGVyKHZvaWQpCiB7Ci0JSWRsZVN0YXRz VXBkYXRlVGltZW91dFBlbmRpbmcgPSB0cnVlOwotCUludGVycnVwdFBlbmRpbmcgPSB0cnVl OwotCVJhaXNlSW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKKwlSYWlzZUludGVycnVw dChJTlRFUlJVUFRfSURMRV9TVEFUU19USU1FT1VUKTsKIH0KIAogc3RhdGljIHZvaWQKIENs aWVudENoZWNrVGltZW91dEhhbmRsZXIodm9pZCkKIHsKLQlDaGVja0NsaWVudENvbm5lY3Rp b25QZW5kaW5nID0gdHJ1ZTsKLQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKLQlSYWlzZUlu dGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CisJUmFpc2VJbnRlcnJ1cHQoSU5URVJSVVBU X0NMSUVOVF9DSEVDS19USU1FT1VUKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvdGltZW91dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy90aW1l b3V0LmMKaW5kZXggZTkwZDgyYzdkZGMuLmI2MzYxMzExOGI3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3RpbWVvdXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3RpbWVvdXQuYwpAQCAtMzcwLDEyICszNzAsNiBAQCBoYW5kbGVfc2lnX2FsYXJtKFNJ R05BTF9BUkdTKQogCSAqLwogCUhPTERfSU5URVJSVVBUUygpOwogCi0JLyoKLQkgKiBTSUdB TFJNIGlzIGFsd2F5cyBjYXVzZSBmb3Igd2FraW5nIGFueXRoaW5nIHdhaXRpbmcgb24KLQkg KiBJTlRFUlJVUFRfR0VORVJBTC4KLQkgKi8KLQlSYWlzZUludGVycnVwdChJTlRFUlJVUFRf R0VORVJBTCk7Ci0KIAkvKgogCSAqIEFsd2F5cyByZXNldCBzaWduYWxfcGVuZGluZywgZXZl biBpZiAhYWxhcm1fZW5hYmxlZCwgc2luY2UgaW5kZWVkIG5vCiAJICogc2lnbmFsIGlzIG5v dyBwZW5kaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9tY3h0LmMg Yi9zcmMvYmFja2VuZC91dGlscy9tbWdyL21jeHQuYwppbmRleCA1MjMzYTY1YWFhMC4uNjNj ZWUwNmExMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvbWN4dC5jCkBAIC0xMjYwLDI3ICsxMjYwLDEx IEBAIE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKE1lbW9yeUNvbnRleHQgY29udGV4dCwg U2l6ZSBzaXplLCBpbnQgZmxhZ3MpCiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIEhhbmRs ZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQKLSAqCQlIYW5kbGUgcmVjZWlwdCBvZiBhbiBp bnRlcnJ1cHQgaW5kaWNhdGluZyBsb2dnaW5nIG9mIG1lbW9yeQotICoJCWNvbnRleHRzLgot ICoKLSAqIEFsbCB0aGUgYWN0dWFsIHdvcmsgaXMgZGVmZXJyZWQgdG8gUHJvY2Vzc0xvZ01l bW9yeUNvbnRleHRJbnRlcnJ1cHQoKSwKLSAqIGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBl bWl0IGEgbG9nIG1lc3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlci4KLSAqLwotdm9p ZAotSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKQotewotCUludGVycnVw dFBlbmRpbmcgPSB0cnVlOwotCUxvZ01lbW9yeUNvbnRleHRQZW5kaW5nID0gdHJ1ZTsKLQkv KiBJTlRFUlJVUFRfR0VORVJBTCB3aWxsIGJlIHJhaXNlZCBieSBwcm9jc2lnbmFsX3NpZ3Vz cjFfaGFuZGxlciAqLwotfQotCiAvKgogICogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRl cnJ1cHQKICAqIAkJUGVyZm9ybSBsb2dnaW5nIG9mIG1lbW9yeSBjb250ZXh0cyBvZiB0aGlz IGJhY2tlbmQgcHJvY2Vzcy4KICAqCi0gKiBBbnkgYmFja2VuZCB0aGF0IHBhcnRpY2lwYXRl cyBpbiBQcm9jU2lnbmFsIHNpZ25hbGluZyBtdXN0IGFycmFuZ2UKKyAqIEFueSBiYWNrZW5k IHRoYXQgcGFydGljaXBhdGVzIGluIHN0YW5kYXJkIGludGVycnVwdCBoYW5kbGluZyBtdXN0 IGFycmFuZ2UKICAqIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB3ZSBzZWUgTG9nTWVtb3J5 Q29udGV4dFBlbmRpbmcgc2V0LgogICogSXQgaXMgY2FsbGVkIGZyb20gQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKSwgd2hpY2ggaXMgZW5vdWdoIGJlY2F1c2UKICAqIHRoZSB0YXJnZXQgcHJv Y2VzcyBmb3IgbG9nZ2luZyBvZiBtZW1vcnkgY29udGV4dHMgaXMgYSBiYWNrZW5kLgpAQCAt MTI4OCw3ICsxMjcyLDcgQEAgSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lk KQogdm9pZAogUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQodm9pZCkKIHsKLQlM b2dNZW1vcnlDb250ZXh0UGVuZGluZyA9IGZhbHNlOworCUNsZWFySW50ZXJydXB0KElOVEVS UlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQpOwogCiAJLyoKIAkgKiBVc2UgTE9HX1NFUlZFUl9P TkxZIHRvIHByZXZlbnQgdGhpcyBtZXNzYWdlIGZyb20gYmVpbmcgc2VudCB0byB0aGUKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggYTI1N2QwYThlZTYuLmI3YmRhZGEzNjQ2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMTQsOCArMTQsNiBAQAogI2lmbmRlZiBQQVJBTExF TF9ICiAjZGVmaW5lIFBBUkFMTEVMX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5j bHVkZSAicG9zdG1hc3Rlci9iZ3dvcmtlci5oIgpAQCAtNTUsNyArNTMsNiBAQCB0eXBlZGVm IHN0cnVjdCBQYXJhbGxlbFdvcmtlckNvbnRleHQKIAlzaG1fdG9jICAgICp0b2M7CiB9IFBh cmFsbGVsV29ya2VyQ29udGV4dDsKIAotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBQYXJhbGxlbE1lc3NhZ2VQZW5kaW5nOwogZXh0ZXJuIFBHRExMSU1QT1JU IGludCBQYXJhbGxlbFdvcmtlck51bWJlcjsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIElu aXRpYWxpemluZ1BhcmFsbGVsV29ya2VyOwogCkBAIC03Miw3ICs2OSw2IEBAIGV4dGVybiB2 b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxlbENvbnRleHQgKnBj eHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJhbGxlbENvbnRl eHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZvaWQpOwog Ci1leHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbE1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CiBl eHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxNZXNzYWdlcyh2b2lkKTsKIGV4dGVybiB2b2lk IEF0RU9YYWN0X1BhcmFsbGVsKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRFT1N1 YlhhY3RfUGFyYWxsZWwoYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1Yklk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9hc3luYy5oCmluZGV4IGY3NWMzZGY5NTU2Li41MDc3M2RkYjBlMiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9hc3luYy5oCkBAIC0xMywxMSArMTMsOCBAQAogI2lmbmRlZiBBU1lO Q19ICiAjZGVmaW5lIEFTWU5DX0gKIAotI2luY2x1ZGUgPHNpZ25hbC5oPgotCiBleHRlcm4g UEdETExJTVBPUlQgYm9vbCBUcmFjZV9ub3RpZnk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9ub3RpZnlfcXVldWVfcGFnZXM7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IG5vdGlmeUludGVycnVwdFBlbmRpbmc7CiAKIGV4dGVybiBTaXplIEFz eW5jU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXN5bmNTaG1lbUluaXQodm9pZCk7 CkBAIC00MCw5ICszNyw2IEBAIGV4dGVybiB2b2lkIEF0U3ViQ29tbWl0X05vdGlmeSh2b2lk KTsKIGV4dGVybiB2b2lkIEF0U3ViQWJvcnRfTm90aWZ5KHZvaWQpOwogZXh0ZXJuIHZvaWQg QXRQcmVwYXJlX05vdGlmeSh2b2lkKTsKIAotLyogc2lnbmFsIGhhbmRsZXIgZm9yIGluYm91 bmQgbm90aWZpZXMgKFBST0NTSUdfTk9USUZZX0lOVEVSUlVQVCkgKi8KLWV4dGVybiB2b2lk IEhhbmRsZU5vdGlmeUludGVycnVwdCh2b2lkKTsKLQogLyogcHJvY2VzcyBpbnRlcnJ1cHRz ICovCiBleHRlcm4gdm9pZCBQcm9jZXNzTm90aWZ5SW50ZXJydXB0KGJvb2wgZmx1c2gpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgg Yi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS1mZS1oZWxwZXJzLmgKaW5kZXggZGQzNjFi ZTRhZmQuLjMxMGM0NWY2ODljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJw cS1iZS1mZS1oZWxwZXJzLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUtZmUt aGVscGVycy5oCkBAIC0yMDksNyArMjA5LDcgQEAgbGlicHFzcnZfY29ubmVjdF9pbnRlcm5h bChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJCQllbHNlCiAJCQkJ aW9fZmxhZyA9IFdMX1NPQ0tFVF9XUklURUFCTEU7CiAKLQkJCXJjID0gV2FpdEludGVycnVw dE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLAorCQkJcmMgPSBXYWl0SW50ZXJydXB0T3JT b2NrZXQoSU5URVJSVVBUX0NGSV9NQVNLKCksCiAJCQkJCQkJCQkgICBXTF9FWElUX09OX1BN X0RFQVRIIHwgV0xfSU5URVJSVVBUIHwgaW9fZmxhZywKIAkJCQkJCQkJCSAgIFBRc29ja2V0 KGNvbm4pLAogCQkJCQkJCQkJICAgMCwKQEAgLTIxNywxMCArMjE3LDcgQEAgbGlicHFzcnZf Y29ubmVjdF9pbnRlcm5hbChQR2Nvbm4gKmNvbm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8p CiAKIAkJCS8qIEludGVycnVwdGVkPyAqLwogCQkJaWYgKHJjICYgV0xfSU5URVJSVVBUKQot CQkJewotCQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKIAkJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwotCQkJfQogCiAJCQkvKiBJZiBzb2NrZXQgaXMgcmVhZHks IGFkdmFuY2UgdGhlIGxpYnBxIHN0YXRlIG1hY2hpbmUgKi8KIAkJCWlmIChyYyAmIGlvX2Zs YWcpCkBAIC0zNDEsNyArMzM4LDcgQEAgbGlicHFzcnZfZ2V0X3Jlc3VsdChQR2Nvbm4gKmNv bm4sIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiAJewogCQlpbnQJCQlyYzsKIAotCQlyYyA9 IFdhaXRJbnRlcnJ1cHRPclNvY2tldChJTlRFUlJVUFRfR0VORVJBTCwKKwkJcmMgPSBXYWl0 SW50ZXJydXB0T3JTb2NrZXQoSU5URVJSVVBUX0NGSV9NQVNLKCksCiAJCQkJCQkJCSAgIFdM X0VYSVRfT05fUE1fREVBVEggfCBXTF9JTlRFUlJVUFQgfAogCQkJCQkJCQkgICBXTF9TT0NL RVRfUkVBREFCTEUsCiAJCQkJCQkJCSAgIFBRc29ja2V0KGNvbm4pLApAQCAtMzUwLDEwICsz NDcsNyBAQCBsaWJwcXNydl9nZXRfcmVzdWx0KFBHY29ubiAqY29ubiwgdWludDMyIHdhaXRf ZXZlbnRfaW5mbykKIAogCQkvKiBJbnRlcnJ1cHRlZD8gKi8KIAkJaWYgKHJjICYgV0xfSU5U RVJSVVBUKQotCQl7Ci0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VORVJBTCk7CiAJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQl9CiAKIAkJLyogQ29uc3VtZSB3aGF0ZXZl ciBkYXRhIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb2NrZXQgKi8KIAkJaWYgKFBRY29uc3Vt ZUlucHV0KGNvbm4pID09IDApCkBAIC00MzYsMTIgKzQzMCwxMCBAQCBsaWJwcXNydl9jYW5j ZWwoUEdjb25uICpjb25uLCBUaW1lc3RhbXBUeiBlbmR0aW1lKQogCQkJfQogCiAJCQkvKiBT bGVlcCB1bnRpbCB0aGVyZSdzIHNvbWV0aGluZyB0byBkbyAqLwotCQkJV2FpdEludGVycnVw dE9yU29ja2V0KElOVEVSUlVQVF9HRU5FUkFMLCB3YWl0RXZlbnRzLAorCQkJV2FpdEludGVy cnVwdE9yU29ja2V0KElOVEVSUlVQVF9DRklfTUFTSygpLCB3YWl0RXZlbnRzLAogCQkJCQkJ CQkgIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwKIAkJCQkJCQkJICBjdXJfdGltZW91 dCwgUEdfV0FJVF9DTElFTlQpOwogCi0JCQlDbGVhckludGVycnVwdChJTlRFUlJVUFRfR0VO RVJBTCk7Ci0KIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIGV4aXQ6CTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL3BxbXEuaCBiL3NyYy9pbmNsdWRlL2xpYnBx L3BxbXEuaAppbmRleCAzNDhiNDQ5NDMzMy4uYWUwMmFhY2ZhYTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2xpYnBxL3BxbXEuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9wcW1xLmgK QEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgogCiBleHRl cm4gdm9pZCBwcV9yZWRpcmVjdF90b19zaG1fbXEoZHNtX3NlZ21lbnQgKnNlZywgc2htX21x X2hhbmRsZSAqbXFoKTsKLWV4dGVybiB2b2lkIHBxX3NldF9wYXJhbGxlbF9sZWFkZXIocGlk X3QgcGlkLCBQcm9jTnVtYmVyIHByb2NOdW1iZXIpOworZXh0ZXJuIHZvaWQgcHFfc2V0X3Bh cmFsbGVsX2xlYWRlcihQcm9jTnVtYmVyIHByb2NOdW1iZXIpOwogCiBleHRlcm4gdm9pZCBw cV9wYXJzZV9lcnJvcm5vdGljZShTdHJpbmdJbmZvIG1zZywgRXJyb3JEYXRhICplZGF0YSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUv bWlzY2FkbWluLmgKaW5kZXggZjViNzczYjc5ZTUuLjA4ZGU2MTQ2ODAwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4u aApAQCAtMjgsMTI0ICsyOCwyOCBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5o IiAvKiBmb3IgVGltZXN0YW1wVHogKi8KICNpbmNsdWRlICJwZ3RpbWUuaCIJCQkJLyogZm9y IHBnX3RpbWVfdCAqLwogCisvKgorICogZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OiBD SEVDS19GT1JfSU5URVJSVVBUUygpIHVzZWQgdG8gYmUgaGVyZSwgYW5kIGl0J3MKKyAqIHVz ZWQgYWxsIG92ZXIgdGhlIHBsYWNlCisgKi8KKyNpZm5kZWYgRlJPTlRFTkQKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2VuZGlmCiAKICNkZWZpbmUgSW52YWxpZFBp ZAkJCQkoLTEpCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgkgIFN5c3RlbSBp bnRlcnJ1cHQgYW5kIGNyaXRpY2FsIHNlY3Rpb24gaGFuZGxpbmcKLSAqCi0gKiBUaGVyZSBh cmUgdHdvIHR5cGVzIG9mIGludGVycnVwdHMgdGhhdCBhIHJ1bm5pbmcgYmFja2VuZCBuZWVk cyB0byBhY2NlcHQKLSAqIHdpdGhvdXQgbWVzc2luZyB1cCBpdHMgc3RhdGU6IFF1ZXJ5Q2Fu Y2VsIChTSUdJTlQpIGFuZCBQcm9jRGllIChTSUdURVJNKS4KLSAqIEluIGJvdGggY2FzZXMs IHdlIG5lZWQgdG8gYmUgYWJsZSB0byBjbGVhbiB1cCB0aGUgY3VycmVudCB0cmFuc2FjdGlv bgotICogZ3JhY2VmdWxseSwgc28gd2UgY2FuJ3QgcmVzcG9uZCB0byB0aGUgaW50ZXJydXB0 IGluc3RhbnRhbmVvdXNseSAtLS0KLSAqIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgaW50 ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdvdWxkIGJlIHNlbGYtY29uc2lzdGVudAotICogaWYg dGhlIGNvZGUgaXMgaW50ZXJydXB0ZWQgYXQgYW4gYXJiaXRyYXJ5IGluc3RhbnQuICBJbnN0 ZWFkLCB0aGUgc2lnbmFsCi0gKiBoYW5kbGVycyBzZXQgZmxhZ3MgdGhhdCBhcmUgY2hlY2tl ZCBwZXJpb2RpY2FsbHkgZHVyaW5nIGV4ZWN1dGlvbi4KLSAqCi0gKiBUaGUgQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKSBtYWNybyBpcyBjYWxsZWQgYXQgc3RyYXRlZ2ljYWxseSBsb2NhdGVk IHNwb3RzCi0gKiB3aGVyZSBpdCBpcyBub3JtYWxseSBzYWZlIHRvIGFjY2VwdCBhIGNhbmNl bCBvciBkaWUgaW50ZXJydXB0LiAgSW4gc29tZQotICogY2FzZXMsIHdlIGludm9rZSBDSEVD S19GT1JfSU5URVJSVVBUUygpIGluc2lkZSBsb3ctbGV2ZWwgc3Vicm91dGluZXMgdGhhdAot ICogbWlnaHQgc29tZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0cyB0aGF0IGRvICpub3Qq IHdhbnQgdG8gYWxsb3cgYSBjYW5jZWwKLSAqIG9yIGRpZSBpbnRlcnJ1cHQuICBUaGUgSE9M RF9JTlRFUlJVUFRTKCkgYW5kIFJFU1VNRV9JTlRFUlJVUFRTKCkgbWFjcm9zCi0gKiBhbGxv dyBjb2RlIHRvIGVuc3VyZSB0aGF0IG5vIGNhbmNlbCBvciBkaWUgaW50ZXJydXB0IHdpbGwg YmUgYWNjZXB0ZWQsCi0gKiBldmVuIGlmIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgZ2V0cyBj YWxsZWQgaW4gYSBzdWJyb3V0aW5lLiAgVGhlIGludGVycnVwdAotICogd2lsbCBiZSBoZWxk IG9mZiB1bnRpbCBDSEVDS19GT1JfSU5URVJSVVBUUygpIGlzIGRvbmUgb3V0c2lkZSBhbnkK LSAqIEhPTERfSU5URVJSVVBUUygpIC4uLiBSRVNVTUVfSU5URVJSVVBUUygpIHNlY3Rpb24u Ci0gKgotICogVGhlcmUgaXMgYWxzbyBhIG1lY2hhbmlzbSB0byBwcmV2ZW50IHF1ZXJ5IGNh bmNlbCBpbnRlcnJ1cHRzLCB3aGlsZSBzdGlsbAotICogYWxsb3dpbmcgZGllIGludGVycnVw dHM6IEhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKSBhbmQKLSAqIFJFU1VNRV9DQU5DRUxfSU5U RVJSVVBUUygpLgorICoJICBDcml0aWNhbCBzZWN0aW9uIGhhbmRsaW5nCiAgKgotICogTm90 ZSB0aGF0IFByb2Nlc3NJbnRlcnJ1cHRzKCkgaGFzIGFsc28gYWNxdWlyZWQgYSBudW1iZXIg b2YgdGFza3MgdGhhdAotICogZG8gbm90IG5lY2Vzc2FyaWx5IGNhdXNlIGEgcXVlcnktY2Fu Y2VsLW9yLWRpZSByZXNwb25zZS4gIEhlbmNlLCBpdCdzCi0gKiBwb3NzaWJsZSB0aGF0IGl0 IHdpbGwganVzdCBjbGVhciBJbnRlcnJ1cHRQZW5kaW5nIGFuZCByZXR1cm4uCi0gKgotICog SU5URVJSVVBUU19QRU5ESU5HX0NPTkRJVElPTigpIGNhbiBiZSBjaGVja2VkIHRvIHNlZSB3 aGV0aGVyIGFuCi0gKiBpbnRlcnJ1cHQgbmVlZHMgdG8gYmUgc2VydmljZWQsIHdpdGhvdXQg dHJ5aW5nIHRvIGRvIHNvIGltbWVkaWF0ZWx5LgotICogU29tZSBjYWxsZXJzIGFyZSBhbHNv IGludGVyZXN0ZWQgaW4gSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCksCi0gKiB3aGlj aCB0ZWxscyB3aGV0aGVyIFByb2Nlc3NJbnRlcnJ1cHRzIGlzIHN1cmUgdG8gY2xlYXIgdGhl IGludGVycnVwdC4KLSAqCi0gKiBTcGVjaWFsIG1lY2hhbmlzbXMgYXJlIHVzZWQgdG8gbGV0 IGFuIGludGVycnVwdCBiZSBhY2NlcHRlZCB3aGVuIHdlIGFyZQotICogd2FpdGluZyBmb3Ig YSBsb2NrIG9yIHdoZW4gd2UgYXJlIHdhaXRpbmcgZm9yIGNvbW1hbmQgaW5wdXQgKGJ1dCwg b2YKLSAqIGNvdXJzZSwgb25seSBpZiB0aGUgaW50ZXJydXB0IGhvbGRvZmYgY291bnRlciBp cyB6ZXJvKS4gIFNlZSB0aGUKLSAqIHJlbGF0ZWQgY29kZSBmb3IgZGV0YWlscy4KLSAqCi0g KiBBIGxvc3QgY29ubmVjdGlvbiBpcyBoYW5kbGVkIHNpbWlsYXJseSwgYWx0aG91Z2ggdGhl IGxvc3Mgb2YgY29ubmVjdGlvbgotICogZG9lcyBub3QgcmFpc2UgYSBzaWduYWwsIGJ1dCBp cyBkZXRlY3RlZCB3aGVuIHdlIGZhaWwgdG8gd3JpdGUgdG8gdGhlCi0gKiBzb2NrZXQuIElm IHRoZXJlIHdhcyBhIHNpZ25hbCBmb3IgYSBicm9rZW4gY29ubmVjdGlvbiwgd2UgY291bGQg bWFrZSB1c2Ugb2YKLSAqIGl0IGJ5IHNldHRpbmcgQ2xpZW50Q29ubmVjdGlvbkxvc3QgaW4g dGhlIHNpZ25hbCBoYW5kbGVyLgotICoKLSAqIEEgcmVsYXRlZCwgYnV0IGNvbmNlcHR1YWxs eSBkaXN0aW5jdCwgbWVjaGFuaXNtIGlzIHRoZSAiY3JpdGljYWwgc2VjdGlvbiIKLSAqIG1l Y2hhbmlzbS4gIEEgY3JpdGljYWwgc2VjdGlvbiBub3Qgb25seSBob2xkcyBvZmYgY2FuY2Vs L2RpZSBpbnRlcnJ1cHRzLAotICogYnV0IGNhdXNlcyBhbnkgZXJlcG9ydChFUlJPUikgb3Ig ZXJlcG9ydChGQVRBTCkgdG8gYmVjb21lIGVyZXBvcnQoUEFOSUMpCi0gKiAtLS0gdGhhdCBp cywgYSBzeXN0ZW0td2lkZSByZXNldCBpcyBmb3JjZWQuICBOZWVkbGVzcyB0byBzYXksIG9u bHkgcmVhbGx5Ci0gKiAqY3JpdGljYWwqIGNvZGUgc2hvdWxkIGJlIG1hcmtlZCBhcyBhIGNy aXRpY2FsIHNlY3Rpb24hCUN1cnJlbnRseSwgdGhpcwotICogbWVjaGFuaXNtIGlzIG9ubHkg dXNlZCBmb3IgWExPRy1yZWxhdGVkIGNvZGUuCisgKiBBIGNyaXRpY2FsIHNlY3Rpb24gaG9s ZHMgb2ZmIGNhbmNlbC9kaWUgaW50ZXJydXB0cyBsaWtlIEhPTERfSU5URVJSVVBUUygpCisg KiBkb2VzLCBhbmQgYWxzbyBjYXVzZXMgYW55IGVyZXBvcnQoRVJST1IpIG9yIGVyZXBvcnQo RkFUQUwpIHRvIGJlY29tZQorICogZXJlcG9ydChQQU5JQykgLS0tIHRoYXQgaXMsIGEgc3lz dGVtLXdpZGUgcmVzZXQgaXMgZm9yY2VkLiAgTmVlZGxlc3MgdG8KKyAqIHNheSwgb25seSBy ZWFsbHkgKmNyaXRpY2FsKiBjb2RlIHNob3VsZCBiZSBtYXJrZWQgYXMgYSBjcml0aWNhbCBz ZWN0aW9uIQorICogQ3VycmVudGx5LCB0aGlzIG1lY2hhbmlzbSBpcyBvbmx5IHVzZWQgZm9y IFhMT0ctcmVsYXRlZCBjb2RlLgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAot LyogaW4gZ2xvYmFscy5jICovCi0vKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxlIGJlY2F1 c2UgdGhleSBhcmUgc2V0IGJ5IHNpZ25hbCBoYW5kbGVyczogKi8KLWV4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSW50ZXJydXB0UGVuZGluZzsKLWV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUXVlcnlDYW5jZWxQZW5kaW5nOwot ZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQcm9jRGllUGVuZGlu ZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZUluVHJh bnNhY3Rpb25TZXNzaW9uVGltZW91dFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IFRyYW5zYWN0aW9uVGltZW91dFBlbmRpbmc7Ci1leHRlcm4g UEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTZXNzaW9uVGltZW91dFBl bmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NT aWduYWxCYXJyaWVyUGVuZGluZzsKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdf YXRvbWljX3QgTG9nTWVtb3J5Q29udGV4dFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQg dm9sYXRpbGUgc2lnX2F0b21pY190IElkbGVTdGF0c1VwZGF0ZVRpbWVvdXRQZW5kaW5nOwot Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENoZWNrQ2xpZW50 Q29ubmVjdGlvblBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0 b21pY190IENsaWVudENvbm5lY3Rpb25Mb3N0OwotCi0vKiB0aGVzZSBhcmUgbWFya2VkIHZv bGF0aWxlIGJlY2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAq LwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2Zm Q291bnQ7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2Vs SG9sZG9mZkNvdW50OwotZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBDcml0 U2VjdGlvbkNvdW50OwotCi0vKiBpbiB0Y29wL3Bvc3RncmVzLmMgKi8KLWV4dGVybiB2b2lk IFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpOwotCi0vKiBUZXN0IHdoZXRoZXIgYW4gaW50ZXJy dXB0IGlzIHBlbmRpbmcgKi8KLSNpZm5kZWYgV0lOMzIKLSNkZWZpbmUgSU5URVJSVVBUU19Q RU5ESU5HX0NPTkRJVElPTigpIFwKLQkodW5saWtlbHkoSW50ZXJydXB0UGVuZGluZykpCi0j ZWxzZQotI2RlZmluZSBJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkgXAotCSh1bmxp a2VseShVTkJMT0NLRURfU0lHTkFMX1FVRVVFKCkpID8gcGd3aW4zMl9kaXNwYXRjaF9xdWV1 ZWRfc2lnbmFscygpIDogMCwgXAotCSB1bmxpa2VseShJbnRlcnJ1cHRQZW5kaW5nKSkKLSNl bmRpZgotCi0vKiBTZXJ2aWNlIGludGVycnVwdCwgaWYgb25lIGlzIHBlbmRpbmcgYW5kIGl0 J3Mgc2FmZSB0byBzZXJ2aWNlIGl0IG5vdyAqLwotI2RlZmluZSBDSEVDS19GT1JfSU5URVJS VVBUUygpIFwKLWRvIHsgXAotCWlmIChJTlRFUlJVUFRTX1BFTkRJTkdfQ09ORElUSU9OKCkp IFwKLQkJUHJvY2Vzc0ludGVycnVwdHMoKTsgXAotfSB3aGlsZSgwKQotCi0vKiBJcyBQcm9j ZXNzSW50ZXJydXB0cygpIGd1YXJhbnRlZWQgdG8gY2xlYXIgSW50ZXJydXB0UGVuZGluZz8g Ki8KLSNkZWZpbmUgSU5URVJSVVBUU19DQU5fQkVfUFJPQ0VTU0VEKCkgXAotCShJbnRlcnJ1 cHRIb2xkb2ZmQ291bnQgPT0gMCAmJiBDcml0U2VjdGlvbkNvdW50ID09IDAgJiYgXAotCSBR dWVyeUNhbmNlbEhvbGRvZmZDb3VudCA9PSAwKQotCi0jZGVmaW5lIEhPTERfSU5URVJSVVBU UygpICAoSW50ZXJydXB0SG9sZG9mZkNvdW50KyspCi0KLSNkZWZpbmUgUkVTVU1FX0lOVEVS UlVQVFMoKSBcCi1kbyB7IFwKLQlBc3NlcnQoSW50ZXJydXB0SG9sZG9mZkNvdW50ID4gMCk7 IFwKLQlJbnRlcnJ1cHRIb2xkb2ZmQ291bnQtLTsgXAotfSB3aGlsZSgwKQotCi0jZGVmaW5l IEhPTERfQ0FOQ0VMX0lOVEVSUlVQVFMoKSAgKFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50Kysp Ci0KLSNkZWZpbmUgUkVTVU1FX0NBTkNFTF9JTlRFUlJVUFRTKCkgXAotZG8geyBcCi0JQXNz ZXJ0KFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID4gMCk7IFwKLQlRdWVyeUNhbmNlbEhvbGRv ZmZDb3VudC0tOyBcCi19IHdoaWxlKDApCi0KICNkZWZpbmUgU1RBUlRfQ1JJVF9TRUNUSU9O KCkgIChDcml0U2VjdGlvbkNvdW50KyspCiAKICNkZWZpbmUgRU5EX0NSSVRfU0VDVElPTigp IFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKaW5kZXggNGFhZDEwYjBiNmQuLmJlNTIzZDFhYjNlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNjA1LDcg KzYwNSw3IEBAIGV4dGVybiBib29sIHBnc3RhdF90cmFja3NfaW9fb3AoQmFja2VuZFR5cGUg Ymt0eXBlLCBJT09iamVjdCBpb19vYmplY3QsCiAKIGV4dGVybiB2b2lkIHBnc3RhdF9kcm9w X2RhdGFiYXNlKE9pZCBkYXRhYmFzZWlkKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf YXV0b3ZhYyhPaWQgZGJvaWQpOwotZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZWNvdmVy eV9jb25mbGljdChpbnQgcmVhc29uKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVj b3ZlcnlfY29uZmxpY3QoSW50ZXJydXB0VHlwZSByZWFzb24pOwogZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF9kZWFkbG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf Y2hlY2tzdW1fZmFpbHVyZXNfaW5fZGIoT2lkIGRib2lkLCBpbnQgZmFpbHVyZWNvdW50KTsK IGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfY2hlY2tzdW1fZmFpbHVyZSh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmggYi9zcmMvaW5j bHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oCmluZGV4IDA5ZGM2ZjAzMzBkLi41ZGNiMzVj Zjg5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuaAor KysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2ludGVycnVwdC5oCkBAIC0xMCw0MiArMTAs MTEwIEBACiAgKgogICogSW50ZXJydXB0IGZsYWdzIGNhbiBiZSAicmFpc2VkIiBzeW5jaHJv bm91c2x5IGJ5IGNvZGUgdGhhdCB3YW50cyB0byBkZWZlcgogICogYW4gYWN0aW9uLCBvciBh c3luY2hyb25vdXNseSBieSB0aW1lciBzaWduYWwgaGFuZGxlcnMsIG90aGVyIHNpZ25hbAot ICogaGFuZGxlcnMgb3IgInNlbnQiIGJ5IG90aGVyIGJhY2tlbmRzIHNldHRpbmcgdGhlbSBk aXJlY3RseS4KKyAqIGhhbmRsZXJzLCBvciAic2VudCIgYnkgb3RoZXIgYmFja2VuZHMgc2V0 dGluZyB0aGVtIGRpcmVjdGx5LgogICoKLSAqIE1vc3QgY29kZSBjdXJyZW50bHkgZGVhbHMg d2l0aCB0aGUgSU5URVJSVVBUX0dFTkVSQUwgaW50ZXJydXB0LiBJdCBpcwotICogcmFpc2Vk IGJ5IGFueSBvZiB0aGUgZXZlbnRzIGNoZWNrZWQgYnkgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSwgbGlrZSBxdWVyeQotICogY2FuY2VsbGF0aW9uIG9yIGlkbGUgc2Vzc2lvbiB0aW1lb3V0 LiBXZWxsIGJlaGF2ZWQgYmFja2VuZCBjb2RlIHBlcmZvcm1zCi0gKiBDSEVDS19GT1JfSU5U RVJSVVBUUygpIHBlcmlvZGljYWxseSBpbiBsb25nIGNvbXB1dGF0aW9ucywgYW5kIHNob3Vs ZCBuZXZlcgotICogc2xlZXAgdXNpbmcgbWVjaGFuaXNtcyBvdGhlciB0aGFuIHRoZSBXYWl0 RXZlbnRTZXQgbWVjaGFuaXNtIG9yIHRoZSBtb3JlCi0gKiBjb252ZW5pZW50IFdhaXRJbnRl cnJ1cHQvV2FpdFNvY2tlck9ySW50ZXJydXB0IGZ1bmN0aW9ucyAoZXhjZXB0IGZvcgotICog Ym91bmRlZCBzaG9ydCBwZXJpb2RzLCBlZyBMV0xvY2sgd2FpdHMpLCBzbyB0aGV5IHNob3Vs ZCByZWFjdCBpbiBnb29kIHRpbWUuCisgKiBTdGFuZGFyZCBpbnRlcnJ1cHRzCisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tCiAgKgotICogVGhlICJzdGFuZGFyZCIgc2V0IG9mIGludGVycnVw dHMgaXMgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBUUygpLCBhbmQKLSAqIGNvbnNp c3RzIG9mIHRhc2tzIHRoYXQgYXJlIHNhZmUgdG8gcGVyZm9ybSBhdCBtb3N0IHRpbWVzLiAg VGhleSBjYW4gYmUKLSAqIHN1cHByZXNzZWQgYnkgSE9MRF9JTlRFUlJVUFRTKCkvUkVTVU1F X0lOVEVSUlVQVFMoKS4KKyAqIFNvbWUgaW50ZXJydXB0cyBuZWVkIHRvIGJlIHByb2Nlc3Nl ZCBmYWlybHkgcXVpY2tseSBldmVuIHdoZW4gdGhlIGJhY2tlbmQKKyAqIGlzIGJ1c3ksIGxp a2UgUXVlcnlDYW5jZWwgKFNJR0lOVCkgYW5kIFByb2NEaWUgKFNJR1RFUk0pLCBidXQgdGhh dCByZXF1aXJlcworICogY2xlYW5pbmcgdXAgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gZ3Jh Y2VmdWxseSwgYW5kIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlCisgKiB0aGF0IGludGVybmFsIGRh dGEgc3RydWN0dXJlcyB3b3VsZCBiZSBzZWxmLWNvbnNpc3RlbnQgaWYgdGhlIGNvZGUgaXMK KyAqIGludGVycnVwdGVkIGF0IGFuIGFyYml0cmFyeSBpbnN0YW50LgogICoKKyAqIFRoZSBD SEVDS19GT1JfSU5URVJSVVBUUygpIG1hY3JvIGlzIGNhbGxlZCBhdCBzdHJhdGVnaWNhbGx5 IGxvY2F0ZWQgc3BvdHMKKyAqIHdoZXJlIGl0IGlzIG5vcm1hbGx5IHNhZmUgdG8gYWNjZXB0 IGEgY2FuY2VsIG9yIGRpZSBpbnRlcnJ1cHQuCisgKiBXZWxsLWJlaGF2ZWQgYmFja2VuZCBj b2RlIHBlcmZvcm1zIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgcGVyaW9kaWNhbGx5IGluCisg KiBsb25nIGNvbXB1dGF0aW9ucywgYW5kIHNob3VsZCBuZXZlciBzbGVlcCB1c2luZyBtZWNo YW5pc21zIG90aGVyIHRoYW4gdGhlCisgKiBXYWl0RXZlbnRTZXQgbWVjaGFuaXNtIG9yIHRo ZSBtb3JlIGNvbnZlbmllbnQgV2FpdEludGVycnVwdCAvCisgKiBXYWl0U29ja2VyT3JJbnRl cnJ1cHQgZnVuY3Rpb25zIChleGNlcHQgZm9yIGJvdW5kZWQgc2hvcnQgcGVyaW9kcywgZWcK KyAqIExXTG9jayB3YWl0cyksIHNvIHRoZXkgc2hvdWxkIHJlYWN0IGluIGdvb2QgdGltZS4K ICAqCi0gKiBUaGUgY29ycmVjdCBwYXR0ZXJuIHRvIHdhaXQgZm9yIGV2ZW50KHMpIHVzaW5n IElOVEVSUlVQVF9HRU5FUkFMIGlzOgorICogV2hlbiB5b3UgbmVlZCB0byB3YWl0LCBwYXNz IElOVEVSUlVQVF9DRklfTUFTSygpIHRvIFdhaXRJbnRlcnJ1cHQoKSBhbmQKKyAqIGNhbGwg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSBldmVyeSB0aW1lIFdhaXRJbnRlcnJ1cHQoKSByZXR1 cm5zLgorICoKKyAqIEluIHNvbWUgY2FzZXMsIHdlIGludm9rZSBDSEVDS19GT1JfSU5URVJS VVBUUygpIGluc2lkZSBsb3ctbGV2ZWwKKyAqIHN1YnJvdXRpbmVzIHRoYXQgbWlnaHQgc29t ZXRpbWVzIGJlIGNhbGxlZCBpbiBjb250ZXh0cyB0aGF0IGRvICpub3QqIHdhbnQKKyAqIHRv IGFsbG93IGEgY2FuY2VsIG9yIGRpZSBpbnRlcnJ1cHQuICBUaGUgSE9MRF9JTlRFUlJVUFRT KCkgYW5kCisgKiBSRVNVTUVfSU5URVJSVVBUUygpIG1hY3JvcyBhbGxvdyBjb2RlIHRvIGVu c3VyZSB0aGF0IG5vIGNhbmNlbCBvciBkaWUKKyAqIGludGVycnVwdCB3aWxsIGJlIGFjY2Vw dGVkLCBldmVuIGlmIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgZ2V0cyBjYWxsZWQgaW4gYQor ICogc3Vicm91dGluZS4gIFRoZSBpbnRlcnJ1cHQgd2lsbCBiZSBoZWxkIG9mZiB1bnRpbCBD SEVDS19GT1JfSU5URVJSVVBUUygpIGlzCisgKiBkb25lIG91dHNpZGUgYW55IEhPTERfSU5U RVJSVVBUUygpIC4uLiBSRVNVTUVfSU5URVJSVVBUUygpIHNlY3Rpb24uICBUaGVyZQorICog aXMgYWxzbyBhIG1lY2hhbmlzbSB0byBwcmV2ZW50IHF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRz LCB3aGlsZSBzdGlsbAorICogYWxsb3dpbmcgZGllIGludGVycnVwdHM6IEhPTERfQ0FOQ0VM X0lOVEVSUlVQVFMoKSBhbmQKKyAqIFJFU1VNRV9DQU5DRUxfSU5URVJSVVBUUygpLgorICoK KyAqIE5vdGUgdGhhdCBQcm9jZXNzSW50ZXJydXB0cygpIGhhcyBhbHNvIGFjcXVpcmVkIGEg bnVtYmVyIG9mIHRhc2tzIHRoYXQgZG8KKyAqIG5vdCBuZWNlc3NhcmlseSBjYXVzZSBhIHF1 ZXJ5LWNhbmNlbC1vci1kaWUgcmVzcG9uc2UuICBIZW5jZSwgaXQncyBwb3NzaWJsZQorICog dGhhdCBpdCB3aWxsIGp1c3QgY2xlYXIgc29tZSBpbnRlcnJ1cHQgYml0cyBhbmQgcmV0dXJu LgorICoKKyAqIElOVEVSUlVQVFNfUEVORElOR19DT05ESVRJT04oKSBjYW4gYmUgY2hlY2tl ZCB0byBzZWUgd2hldGhlciBhbgorICogaW50ZXJydXB0IG5lZWRzIHRvIGJlIHNlcnZpY2Vk LCB3aXRob3V0IHRyeWluZyB0byBkbyBzbyBpbW1lZGlhdGVseS4KKyAqIFNvbWUgY2FsbGVy cyBhcmUgYWxzbyBpbnRlcmVzdGVkIGluIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NFU1NFRCgp LAorICogd2hpY2ggdGVsbHMgd2hldGhlciBQcm9jZXNzSW50ZXJydXB0cyBpcyBzdXJlIHRv IGNsZWFyIHRoZSBpbnRlcnJ1cHQuCisgKgorICogU3BlY2lhbCBtZWNoYW5pc21zIGFyZSB1 c2VkIHRvIGxldCBhbiBpbnRlcnJ1cHQgYmUgYWNjZXB0ZWQgd2hlbiB3ZSBhcmUKKyAqIHdh aXRpbmcgZm9yIGEgbG9jayBvciB3aGVuIHdlIGFyZSB3YWl0aW5nIGZvciBjb21tYW5kIGlu cHV0IChidXQsIG9mCisgKiBjb3Vyc2UsIG9ubHkgaWYgdGhlIGludGVycnVwdCBob2xkb2Zm IGNvdW50ZXIgaXMgemVybykuICBTZWUgdGhlIHJlbGF0ZWQKKyAqIGNvZGUgZm9yIGRldGFp bHMuCisgKgorICogQSBsb3N0IGNvbm5lY3Rpb24gaXMgaGFuZGxlZCBzaW1pbGFybHkgdG8g YSBQcm9jRGllIHJlcXVlc3QsIGFsdGhvdWdoIHRoZQorICogbG9zcyBvZiBjb25uZWN0aW9u IGlzIGRldGVjdGVkIGFuZCB0aGUgaW50ZXJydXB0IGlzIHJhaWVkIHdoZW4gd2UgZmFpbCB0 bworICogd3JpdGUgdG8gdGhlIHNvY2tldC4gSWYgdGhlcmUgd2FzIGEgc2lnbmFsIGZvciBh IGJyb2tlbiBjb25uZWN0aW9uLCB3ZQorICogY291bGQgbWFrZSB1c2Ugb2YgaXQgYnkgc2V0 dGluZyBDbGllbnRDb25uZWN0aW9uTG9zdCBpbiB0aGUgc2lnbmFsIGhhbmRsZXIuCisgKgor ICogU3RhbmRhcmQgaW50ZXJydXB0cyBpbiBBVVggcHJvY2Vzc2VzCisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBJbiBiYWNrZ3JvdW5kIHByb2Nl c3NlcyB0aGF0IGFyZSBub3QgcmVndWxhciBiYWNrZW5kcywgcmVzcG9uc2VzIHRvIHNpZ25h bHMKKyAqIHRoYXQgYXJlIHRyYW5zbGF0ZWQgdG8gaW50ZXJydXB0cyBhcmUgZmFpcmx5IHZh cmllZCBhbmQgbWFueSB0eXBlcyBvZgorICogYmFja2VuZHMgaGF2ZSB0aGVpciBvd24gaW1w bGVtZW50YXRpb25zLiBTb21lIHVzZSBDSEVDS19GT1JfSU5URVJSVVBUUygpCisgKiBidXQg aGF2ZSBhZGRpdGlvbmFsIGludGVycnVwdHMgdGhhdCBhcmUgYWxzbyBwcm9jZXNzZWQgaW4g dGhlIG1haW4KKyAqIGxvb3AuIE90aGVycyBkb24ndCB1c2UgQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKSBhdCBhbGwsIGJ1dCBoYXZlIHRoZWlyIG93bgorICogUHJvY2VzcypJbnRlcnJ1cHRz KCkgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYXQgc3RyYXRlZ2ljIHNwb3RzLgorICoKKyAq IFdlIG5ldmVydGhlbGVzcyBwcm92aWRlIGEgZmV3IGdlbmVyaWMgc2lnbmFsIGhhbmRsZXJz IGFuZCBpbnRlcnJ1cHQgY2hlY2tzCisgKiB0byBmYWNpbGl0YXRlIGNvZGUgcmV1c2UsIHNl ZSBQcm9jZXNzTWFpbkxvb3BJbnRlcnJ1cHRzKCkgYW5kIHRoZSBzdGFuZGFyZAorICogc2ln bmFsIGhhbmRsZXJzIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQoKSwgU2lnbmFsSGFu ZGxlckZvckNyYXNoRXhpdCgpLAorICogYW5kIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJl cXVlc3QoKS4KKyAqCisgKiBJTlRFUlJVUFRfR0VORVJBTDogVGhlIG11bHRpcGxleGVkIGdl bmVyYWwtcHVycG9zZSB3YWtldXAKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoZSBJTlRFUlJVUFRfR0VO RVJBTCBpbnRlcnJ1cHQgaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkgZGlmZmVyZW50IHB1cnBv c2VzCisgKiB0aGF0IGRvbid0IHdhcnJhbnQgYSBkZWRpY2F0ZWQgaW50ZXJydXB0IGJpdC4g IEJlY2F1c2UgaXQncyByZXVzZWQgZm9yCisgKiBkaWZmZXJlbnQgcHVycG9zZXMsIHdhaXRl cnMgbXVzdCB0b2xlcmF0ZSByZWNlaXZpbmcgc3B1cmlvdXMgaW50ZXJydXB0CisgKiB3YWtl dXBzLgorICoKKyAqIFdhaXRpbmcgb24gYW4gaW50ZXJydXB0CisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIFRoZSBjb3JyZWN0IHBhdHRlcm4gdG8gd2FpdCBmb3IgZXZl bnQocykgdXNpbmcgSU5URVJSVVBUX0dFTkVSQUwgKG9yIGFueQorICogYmVzcG9rZW4gaW50 ZXJydXB0IGZsYWcpIGlzOgogICoKICAqIGZvciAoOzspCiAgKiB7CisgKgkgICBDSEVDS19G T1JfSU5URVJSVVBUUygpOworICoKICAqCSAgIENsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKICAqCSAgIGlmICh3b3JrIHRvIGRvKQogICoJCSAgIERvIFN0dWZmKCk7Ci0g KgkgICBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOworICoJICAgV2Fp dEludGVycnVwdChJTlRFUlJVUFRfQ0ZJX01BU0FLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwg Li4uKTsKICAqIH0KICAqCiAgKiBJdCdzIGltcG9ydGFudCB0byBjbGVhciB0aGUgaW50ZXJy dXB0ICpiZWZvcmUqIGNoZWNraW5nIGlmIHRoZXJlJ3Mgd29yayB0bwotICogZG8uIE90aGVy d2lzZSwgaWYgc29tZW9uZSBzZXRzIHRoZSBpbnRlcnJ1cHQgYmV0d2VlbiB0aGUgY2hlY2sg YW5kIHRoZQorICogZG8uICBPdGhlcndpc2UsIGlmIHNvbWVvbmUgc2V0cyB0aGUgaW50ZXJy dXB0IGJldHdlZW4gdGhlIGNoZWNrIGFuZCB0aGUKICAqIENsZWFySW50ZXJydXB0KCkgY2Fs bCwgeW91IHdpbGwgbWlzcyBpdCBhbmQgV2FpdCB3aWxsIGluY29ycmVjdGx5IGJsb2NrLgog ICoKICAqIEFub3RoZXIgdmFsaWQgY29kaW5nIHBhdHRlcm4gbG9va3MgbGlrZToKICAqCiAg KiBmb3IgKDs7KQogICogeworICoJICAgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKyAqCiAg KgkgICBpZiAod29yayB0byBkbykKICAqCQkgICBEbyBTdHVmZigpOyAvLyBpbiBwYXJ0aWN1 bGFyLCBleGl0IGxvb3AgaWYgc29tZSBjb25kaXRpb24gc2F0aXNmaWVkCi0gKgkgICBXYWl0 SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOworICoJICAgV2FpdEludGVycnVw dChJTlRFUlJVUFRfQ0ZJX01BU0soKSB8IElOVEVSUlVQVF9HRU5FUkFMLCAuLi4pOwogICoJ ICAgQ2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOwogICogfQogICoKQEAgLTU1 LDEyICsxMjMsMjMgQEAKICAqIGJlIGF2b2lkZWQgaXMgcGxhY2luZyBhbnkgY2hlY2tzIGZv ciBhc3luY2hyb25vdXMgZXZlbnRzIGFmdGVyCiAgKiBXYWl0SW50ZXJydXB0IGFuZCBiZWZv cmUgQ2xlYXJJbnRlcnJ1cHQsIGFzIHRoYXQgY3JlYXRlcyBhIHJhY2UgY29uZGl0aW9uLgog ICoKLSAqIFRvIHdha2UgdXAgdGhlIHdhaXRlciwgeW91IG11c3QgZmlyc3Qgc2V0IGEgZ2xv YmFsIGZsYWcgb3Igc29tZXRoaW5nIGVsc2UKLSAqIHRoYXQgdGhlIHdhaXQgbG9vcCB0ZXN0 cyBpbiB0aGUgImlmICh3b3JrIHRvIGRvKSIgcGFydCwgYW5kIGNhbGwKLSAqIFNlbmRJbnRl cnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpICphZnRlciogdGhhdC4gU2VuZEludGVycnVwdCBp cyBkZXNpZ25lZCB0bwotICogcmV0dXJuIHF1aWNrbHkgaWYgdGhlIGludGVycnVwdCBpcyBh bHJlYWR5IHNldC4gSW4gbW9yZSBjb21wbGV4IHNjZW5hcmlvcwotICogd2l0aCBuZXN0ZWQg bG9vcHMgdGhhdCBjYW4gY29uc3VtZSBkaWZmZXJlbnQgZXZlbnRzLCB5b3UgY2FuIGRlZmlu ZSB5b3VyCi0gKiBvd24gSU5URVJSVVBUXyogZmxhZyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24g SU5URVJSVVBUX0dFTkVSQUwuCisgKiBUbyB3YWtlIHVwIGEgcHJvY2VzcyB3YWl0aW5nIG9u IElOVEVSUlVQVF9HRU5FUkFMLCB5b3UgbXVzdCBmaXJzdCBzZXQgYQorICogZ2xvYmFsIGZs YWcgb3Igc29tZXRoaW5nIGVsc2UgdGhhdCB0aGUgd2FpdCBsb29wIHRlc3RzIGluIHRoZSAi aWYgKHdvcmsgdG8KKyAqIGRvKSIgcGFydCwgYW5kIGNhbGwgU2VuZEludGVycnVwdChJTlRF UlJVUFRfR0VORVJBTCkgKmFmdGVyKgorICogdGhhdC4gU2VuZEludGVycnVwdCBpcyBkZXNp Z25lZCB0byByZXR1cm4gcXVpY2tseSBpZiB0aGUgaW50ZXJydXB0IGlzCisgKiBhbHJlYWR5 IHNldC4KKyAqCisgKiBJbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zIHdpdGggbmVzdGVkIGxv b3BzIHRoYXQgY2FuIGNvbnN1bWUgZGlmZmVyZW50CisgKiBldmVudHMsIHlvdSBjYW4gZGVm aW5lIHlvdXIgb3duIElOVEVSUlVQVF8qIGZsYWcgaW5zdGVhZCBvZiByZWx5aW5nIG9uCisg KiBJTlRFUlJVUFRfR0VORVJBTC4KKyAqCisgKiBTdGFuZGFyZCBTaWduYWwgaGFuZGxlcnMK KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFJlc3BvbnNlcyB0byBzaWdu YWxzIHRoYXQgYXJlIHRyYW5zbGF0ZWQgdG8gaW50ZXJydXB0cyBhcmUgZmFpcmx5IHZhcmll ZAorICogYW5kIG1hbnkgdHlwZXMgb2YgYmFja2VuZHMgaGF2ZSB0aGVpciBvd24gaW1wbGVt ZW50YXRpb25zLCBidXQgd2UgcHJvdmlkZSBhCisgKiBmZXcgZ2VuZXJpYyBzaWduYWwgaGFu ZGxlcnMgYW5kIGludGVycnVwdCBjaGVja3MgdG8gZmFjaWxpdGF0ZSBjb2RlIHJldXNlLgor ICoKICAqCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCkBAIC03Niw3 MyArMTU1LDI3MiBAQAogCiAjaW5jbHVkZSAicG9ydC9hdG9taWNzLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jbnVtYmVyLmgiCi0jaW5jbHVkZSAic3RvcmFnZS93YWl0ZXZlbnRzZXQu aCIKLQotI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgInN0b3JhZ2Uvd2FpdGV2ZW50 c2V0LmgiCQkvKiBXTF8qIGFyZSBkZWZpbmVkIGluIHdhaXRldmVudHNldC5oICovCiAKIGV4 dGVybiBQR0RMTElNUE9SVCBwZ19hdG9taWNfdWludDMyICpNeVBlbmRpbmdJbnRlcnJ1cHRz OwogCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENvbmZpZ1Jl bG9hZFBlbmRpbmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190 IFNodXRkb3duUmVxdWVzdFBlbmRpbmc7CisvKiB0aGVzZSBhcmUgbWFya2VkIHZvbGF0aWxl IGJlY2F1c2UgdGhleSBhcmUgZXhhbWluZWQgYnkgc2lnbmFsIGhhbmRsZXJzOiAqLworLyog RklYTUU6IGlzIHRoYXQgc3RpbGwgdHJ1ZSwgZG8gdGhlc2Ugc3RpbGwgbmVlZCB0byBiZSB2 b2xhdGlsZT8gKi8KK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1aW50MzIgSW50ZXJy dXB0SG9sZG9mZkNvdW50OworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHVpbnQzMiBR dWVyeUNhbmNlbEhvbGRvZmZDb3VudDsKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSB1 aW50MzIgQ3JpdFNlY3Rpb25Db3VudDsKKworLyoKKyAqIElmIHlvdSBjYWxsZWQgUHJvY2Vz c0ludGVycnVwdHMoKSBub3csIGl0IHdvdWxkIHByb2Nlc3MgYW5kIGNsZWFyIHRoZXNlCisg KiBpbnRlcnJ1cHRzLgorICovCisjZGVmaW5lIElOVEVSUlVQVF9DRklfTUFTSygpIFwKKwko IFwKKwkJKEludGVycnVwdEhvbGRvZmZDb3VudCA+IDAgfHwgQ3JpdFNlY3Rpb25Db3VudCA+ IDApID8gMCA6CQlcCisJCSgoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPiAwKSA/IChJTlRF UlJVUFRfQ0ZJX0FMTF9NQVNLICYgKH5JTlRFUlJVUFRfUVVFUllfQ0FOQ0VMKSkgOiBcCisJ CSBJTlRFUlJVUFRfQ0ZJX0FMTF9NQVNLKQkJCQkJCQkJCQkJXAorCQkpCisKKy8qCisgKiBT ZXJ2aWNlIHN0YW5kYXJkIGludGVycnVwdHMsIGlmIG9uZSBpcyBwZW5kaW5nIGFuZCBpdCdz IHNhZmUgdG8gc2VydmljZSBpdCBub3cuCisgKgorICogVGhpcyBjb3VsZCBjaGVjayBJTlRF UlJVUFRfQ0ZJX01BU0soKSwgYnV0IHdlIHByZWZlciB0byBrZWVwIGhpcyBzaG9ydCBhbmQK KyAqIGZhc3QgaW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgbm8gaW50ZXJydXB0cyBhcmUgcGVu ZGluZy4gVGhhdCdzIHdoeSB0aGlzCisgKiBjaGVja3MgdGhlIGNvbnN0YW50IElOVEVSUlVQ VF9DRklfQUxMX01BU0sgaW5zdGVhZCBhbmQgY2hlY2sgdGhlIGhvbGRvZmZzCisgKiBhcmUg b3V0LW9mLWxpbmUgaW4gUHJvY2Vzc0ludGVycnVwdHMoKS4KKyAqLworI2RlZmluZSBDSEVD S19GT1JfSU5URVJSVVBUUygpIFwKK2RvIHsgXAorCWlmIChJc0ludGVycnVwdFBlbmRpbmco SU5URVJSVVBUX0NGSV9BTExfTUFTSykpIFwKKwkJUHJvY2Vzc0ludGVycnVwdHMoKTsgXAor fSB3aGlsZSgwKQorCisvKiBXb3VsZCBQcm9jZXNzSW50ZXJydXB0cygpIGNsZWFyIGFsbCB0 aGUgYml0cyBpbiAnbWFzayc/ICovCisjZGVmaW5lIElOVEVSUlVQVFNfQ0FOX0JFX1BST0NF U1NFRChtYXNrKSBcCisJKCgobWFzaykgJiB+SU5URVJSVVBUX0NGSV9NQVNLKCkpID09IDAp CisKKyNkZWZpbmUgSE9MRF9JTlRFUlJVUFRTKCkgXAorZG8geyBcCisJSW50ZXJydXB0SG9s ZG9mZkNvdW50Kys7IFwKK30gd2hpbGUoMCkKKworI2RlZmluZSBSRVNVTUVfSU5URVJSVVBU UygpIFwKK2RvIHsgXAorCUFzc2VydChJbnRlcnJ1cHRIb2xkb2ZmQ291bnQgPiAwKTsgXAor CUludGVycnVwdEhvbGRvZmZDb3VudC0tOyBcCit9IHdoaWxlKDApCisKKyNkZWZpbmUgSE9M RF9DQU5DRUxfSU5URVJSVVBUUygpICAoUXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQrKykKKwor I2RlZmluZSBSRVNVTUVfQ0FOQ0VMX0lOVEVSUlVQVFMoKSBcCitkbyB7IFwKKwlBc3NlcnQo UXVlcnlDYW5jZWxIb2xkb2ZmQ291bnQgPiAwKTsgXAorCVF1ZXJ5Q2FuY2VsSG9sZG9mZkNv dW50LS07IFwKK30gd2hpbGUoMCkKKwogCiAvKgogICogRmxhZ3MgaW4gdGhlIHBlbmRpbmcg aW50ZXJydXB0cyBiaXRtYXNrLiBFYWNoIHZhbHVlIHJlcHJlc2VudHMgb25lIGJpdCBpbgog ICogdGhlIGJpdG1hc2suCiAgKi8KLXR5cGVkZWYgZW51bQordHlwZWRlZiBlbnVtIEludGVy cnVwdFR5cGUKIHsKIAkvKgotCSAqIFNMRUVQSU5HX09OX0lOVEVSUlVQVFMgaW5kaWNhdGVz IHRoYXQgdGhlIGJhY2tlbmQgaXMgY3VycmVudGx5IGJsb2NrZWQKLQkgKiB3YWl0aW5nIGZv ciBhbiBpbnRlcnJ1cHQuIElmIGl0J3Mgc2V0LCB0aGUgYmFja2VuZCBuZWVkcyB0byBiZSB3 b2tlbiB1cAotCSAqIHdoZW4gYSBiaXQgaW4gdGhlIHBlbmRpbmcgaW50ZXJydXB0cyBtYXNr IGlzIHNldC4gSXQncyB1c2VkIGludGVybmFsbHkKLQkgKiBieSB0aGUgaW50ZXJydXB0IG1h Y2hpbmVyeSwgYW5kIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGluIHRoZSBwdWJsaWMKLQkg KiBmdW5jdGlvbnMuIEl0J3MgbmFtZWQgZGlmZmVyZW50bHkgdG8gZGlzdGluZ3Vpc2ggaXQg ZnJvbSB0aGUgYWN0dWFsCi0JICogaW50ZXJydXB0IGZsYWdzLgorCSAqIElOVEVSUlVQVF9H RU5FUkFMIGlzIHVzZWQgYXMgYSBnZW5lcmFsLXB1cnBvc2Ugd2FrZXVwLCBtdWx0aXBsZXhl ZCBmb3IKKwkgKiBtYW55IHJlYXNvbnMuCiAJICovCi0JU0xFRVBJTkdfT05fSU5URVJSVVBU UyA9IDEgPDwgMCwKKwlJTlRFUlJVUFRfR0VORVJBTCA9IDEgPDwgMCwKIAogCS8qCi0JICog SU5URVJSVVBUX0dFTkVSQUwgaXMgbXVsdGlwbGV4ZWQgZm9yIG1hbnkgcmVhc29ucywgbGlr ZSBxdWVyeQotCSAqIGNhbmNlbGxhdGlvbiB0ZXJtaW5hdGlvbiByZXF1ZXN0cywgcmVjb3Zl cnkgY29uZmxpY3RzLCBhbmQgY29uZmlnCi0JICogcmVsb2FkIHJlcXVlc3RzLiAgVXBvbiBy ZWNlaXZpbmcgSU5URVJSVVBUX0dFTkVSQUwsIHlvdSBzaG91bGQgY2FsbAotCSAqIENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgdG8gcHJvY2VzcyB0aG9zZSByZXF1ZXN0cy4gIEl0IGlzIGFs c28gdXNlZCBmb3IKLQkgKiB2YXJpb3VzIG90aGVyIGNvbnRleHQtZGVwZW5kZW50IHB1cnBv c2VzLCBidXQgbm90ZSB0aGF0IGlmIGl0J3MgdXNlZCB0bwotCSAqIHdha2UgdXAgZm9yIG90 aGVyIHJlYXNvbnMsIHlvdSBtdXN0IHN0aWxsIGNhbGwgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KQotCSAqIG9uY2UgcGVyIGl0ZXJhdGlvbi4KKwkgKiBCZWNhdXNlIGJhY2tlbmRzIHNpdHRp bmcgaWRsZSB3aWxsIG5vdCBiZSByZWFkaW5nIHNpbnZhbCBldmVudHMsIHdlCisJICogbmVl ZCBhIHdheSB0byBnaXZlIGFuIGlkbGUgYmFja2VuZCBhIHN3aWZ0IGtpY2sgaW4gdGhlIHJl YXIgYW5kIG1ha2UgaXQKKwkgKiBjYXRjaCB1cCBiZWZvcmUgdGhlIHNpbnZhbCBxdWV1ZSBv dmVyZmxvd3MgYW5kIGZvcmNlcyBpdCB0byBnbyB0aHJvdWdoCisJICogYSBjYWNoZSByZXNl dCBleGVyY2lzZS4gIFRoaXMgaXMgZG9uZSBieSBzZW5kaW5nCisJICogSU5URVJSVVBUX1NJ TlZBTF9DQVRDSFVQIHRvIGFueSBiYWNrZW5kIHRoYXQgZ2V0cyB0b28gZmFyIGJlaGluZC4K KwkgKgorCSAqIFRoZSBpbnRlcnJ1cHQgaXMgcHJvY2Vzc2VkIHdoZW5ldmVyIHN0YXJ0aW5n IHRvIHJlYWQgZnJvbSB0aGUgY2xpZW50LAorCSAqIG9yIHdoZW4gaW50ZXJydXB0ZWQgd2hp bGUgZG9pbmcgc28sIFByb2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkgd2lsbAorCSAqIGNh bGwgUHJvY2Vzc0NhdGNodXBJbnRlcnJ1cHQoKS4KIAkgKi8KLQlJTlRFUlJVUFRfR0VORVJB TCA9IDEgPDwgMSwKKwlJTlRFUlJVUFRfU0lOVkFMX0NBVENIVVAgPSAxIDw8IDEsCiAKIAkv KgotCSAqIElOVEVSUlVQVF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAg c3RhcnR1cCBwcm9jZXNzLCB0byB0ZWxsCi0JICogaXQgdGhhdCBpdCBzaG91bGQgY29udGlu dWUgV0FMIHJlcGxheS4gSXQncyBzZW50IGJ5IFdBTCByZWNlaXZlciB3aGVuCi0JICogbW9y ZSBXQUwgYXJyaXZlcywgb3Igd2hlbiBwcm9tb3Rpb24gaXMgcmVxdWVzdGVkLgorCSAqIElO VEVSUlVQVF9BU1lOQ19OT1RJRlkgaXMgc2VudCB0byBub3RpZnkgYmFja2VuZHMgdGhhdCBo YXZlIHJlZ2lzdGVyZWQKKwkgKiB0byBMSVNURU4gb24gYW55IGNoYW5uZWxzIHRoYXQgdGhl eSBtaWdodCBoYXZlIG1lc3NhZ2VzIHRoZXkgbmVlZCB0bworCSAqIGRlbGl2ZXIgdG8gdGhl IGZyb250ZW50LiBJdCBpcyBhbHNvIHByb2Nlc3NlZCB3aGVuZXZlciBzdGFydGluZyB0byBy ZWFkCisJICogZnJvbSB0aGUgY2xpZW50IG9yIHdoaWxlIGRvaW5nIHNvLCBidXQgb25seSB3 aGVuIHRoZXJlIGlzIG5vCisJICogdHJhbnNhY3Rpb24gaW4gcHJvZ3Jlc3MuCiAJICovCi0J SU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJTlVFID0gMSA8PCAyLAorCUlOVEVSUlVQVF9BU1lO Q19OT1RJRlkgPSAxIDw8IDIsCisKKwkvKiBSYWlzZWQgYnkgdGltZXIgd2hpbGUgaWRsZSwg dG8gc2VuZCBhIHN0YXRzIHVwZGF0ZSAqLworCUlOVEVSUlVQVF9JRExFX1NUQVRTX1RJTUVP VVQgPSAxIDw8IDMsCisKKwkvKiBDb25maWcgZmlsZSByZWxvYWQgaXMgcmVxdWVzdGVkICov CisJSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgPSAxIDw8IDQsCisKKwkvKgorCSAqIElOVEVS UlVQVF9SRUNPVkVSWV9DT05USU5VRSBpcyB1c2VkIHRvIHdha2UgdXAgdGhlIHN0YXJ0dXAg cHJvY2VzcywgdG8KKwkgKiB0ZWxsIGl0IHRoYXQgaXQgc2hvdWxkIGNvbnRpbnVlIFdBTCBy ZXBsYXkuICBJdCdzIHNlbnQgYnkgV0FMIHJlY2VpdmVyCisJICogd2hlbiBtb3JlIFdBTCBh cnJpdmVzLCBvciB3aGVuIHByb21vdGlvbiBpcyByZXF1ZXN0ZWQuICBXZSBkb24ndCByZXVz ZQorCSAqIElOVEVSUlVQVF9HRU5FUkFMIGZvciB0aGlzLCBzbyB0aGF0IG1vcmUgV0FMIGFy cml2aW5nIGRvZXNuJ3Qgd2FrZSB1cAorCSAqIHRoZSBzdGFydHVwIHByb2Nlc3MgZXhjZXNz aXZlbHkgd2hlbiB3ZSdyZSB3YWl0aW5nIGluIG90aGVyIHBsYWNlcywKKwkgKiBsaWtlIGZv ciByZWNvdmVyeSBjb25mbGljdHMuCisJICovCisJSU5URVJSVVBUX1JFQ09WRVJZX0NPTlRJ TlVFID0gMSA8PCA1LAogCiAJLyogc2VudCB0byBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdW5j aGVyLCB3aGVuIGEgc3Vic2NyaXB0aW9uIGNoYW5nZXMgKi8KLQlJTlRFUlJVUFRfU1VCU0NS SVBUSU9OX0NIQU5HRSA9IDEgPDwgMywKKwlJTlRFUlJVUFRfU1VCU0NSSVBUSU9OX0NIQU5H RSA9IDEgPDwgNiwKKworCS8qCisJICogTWFueSBhdXggcHJvY2Vzc2VzIGRvbid0IHdhbnQg dG8gcmVhY3QgdG8gSU5URVJSVVBUX0RJRSBpbgorCSAqIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCksIHNvIHRoZXkgdXNlIGEgc2VwYXJhdGUgZmxhZyB3aGVuIHNodXRkb3duIGlzCisJICog cmVxdWVzdGVkLgorCSAqCisJICogVE9ETzogcGVyaGFwcyB1c2UgSU5URVJSVVBUX0RJRSwg YnV0IHRlYWNoIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8KKwkgKiBpZ25vcmUgaXQgaW4g YXV4IHByb2Nlc3NlcywgYW5kIHJlbW92ZSBpdCBmcm9tIENoZWNrRm9ySW50ZXJydXB0c01h c2suCisJICogVGhhdCB3b3VsZCBzYXZlIG9uZSBpbnRlcnJ1cHQgYml0LCBhbmQgd291bGQg bWFrZSB0aGluZ3MgbW9yZQorCSAqIGNvbnNpc3RlbnQuCisJICovCisJSU5URVJSVVBUX1NI VVRET1dOX0FVWCA9IDEgPDwgNywKKworCS8qCisJICogUGVyZm9ybSBvbmUgbGFzdCBjaGVj a3BvaW50LCB0aGVuIHNodXQgZG93bi4gT25seSB1c2VkIGluIHRoZSBjaGVja3BvaW50ZXIK KwkgKiBwcm9jZXNzLgorCSAqLworCUlOVEVSUlVQVF9TSFVURE9XTl9YTE9HID0gMSA8PCA4 LAorCisJLyotLS0tIEludGVycnVwdHMgaGFuZGxlZCBieSBDSEVDS19GT1JfSU5URVJSVVBU UygpIC0tLS0qLworCisJLyoKKwkgKiBCYWNrZW5kIGhhcyBiZWVuIHJlcXVlc3RlZCB0byB0 ZXJtaW5hdGUKKwkgKgorCSAqIFRoaXMgaXMgcmFpc2VkIGJ5IHRoZSBTSUdURVJNIHNpZ25h bCBoYW5kbGVyLCBvciBjYW4gYmUgc2VudCBkaXJlY3RseQorCSAqIGJ5IGFub3RoZXIgYmFj a2VuZCBlLmcuIHdpdGggcGdfdGVybWluYXRlX2JhY2tlbmQoKS4KKwkgKi8KKwlJTlRFUlJV UFRfRElFID0gMSA8PCA5LAorCisJLyoKKwkgKiBDYW5jZWwgY3VycmVudCBxdWVyeSwgaWYg YW55LgorCSAqCisJICogVGhpcyBpcyByYWlzZWQgYnkgdGhlIFNJR1RFUk0gc2lnbmFsIGhh bmRsZXIsIG9yIGNhbiBiZSBzZW50IGRpcmVjdGx5CisJICogYnkgYW5vdGhlciBiYWNrZW5k IGUuZy4gd2l0aCBwZ19jYW5jZWxfYmFja2VuZCgpLCBvciBpbiByZXNwb25zZSB0byBhCisJ ICogcXVlcnkgY2FuY2VsbGF0aW9uIHBhY2tldC4KKwkgKi8KKwlJTlRFUlJVUFRfUVVFUllf Q0FOQ0VMID0gMSA8PCAxMCwKKworCS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9y IHNodXRkb3duICAqLworCUlOVEVSUlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyA9IDEgPDwg MTEsCisKKwkvKgorCSAqIFJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbnMuIFRoZXNlIGFyZSBz ZW50IGJ5IHRoZSBzdGFydHVwIHByb2Nlc3MgaW4gaG90CisJICogc3RhbmRieSBtb2RlIHdo ZW4gYSBiYWNrZW5kIGhvbGRzIGJhY2sgdGhlIFdBTCByZXBsYXkgZm9yIHRvbyBsb25nLgor CSAqLworCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSA9IDEgPDwgMTIs CisJSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UgPSAxIDw8IDEzLAor CUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9MT0NLID0gMSA8PCAxNCwKKwlJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QgPSAxIDw8IDE1LAorCUlOVEVSUlVQVF9S RUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4gPSAxIDw8IDE2LAorCUlOVEVSUlVQVF9SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLID0gMSA8PCAxNywKKwlJTlRFUlJVUFRf UkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgPSAxIDw8IDE4LAorCisJLyogUmFpc2Vk IGJ5IHRpbWVycyAqLworCUlOVEVSUlVQVF9UUkFOU0FDVElPTl9USU1FT1VUID0gMSA8PCAx OSwKKwlJTlRFUlJVUFRfSURMRV9TRVNTSU9OX1RJTUVPVVQgPSAxIDw8IDIwLAorCUlOVEVS UlVQVF9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCA9IDEgPDwgMjEsCisJ SU5URVJSVVBUX0NMSUVOVF9DSEVDS19USU1FT1VUID0gMSA8PCAyMiwKKworCS8qIFJhaXNl ZCBzeW5jaHJvbm91c2x5IHdoZW4gdGhlIGNsaWVudCBjb25uZWN0aW9uIGlzIGxvc3QgKi8K KwlJTlRFUlJVUFRfQ0xJRU5UX0NPTk5FQ1RJT05fTE9TVCA9IDEgPDwgMjMsCisKKwkvKiBB c2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCUlOVEVSUlVQVF9M T0dfTUVNT1JZX0NPTlRFWFQgPSAxIDw8IDI0LAorCisJLyogTWVzc2FnZSBmcm9tIGEgY29v cGVyYXRpbmcgcGFyYWxsZWwgYmFja2VuZCAqLworCUlOVEVSUlVQVF9QQVJBTExFTF9NRVNT QUdFID0gMSA8PCAyNSwKKworCS8qIE1lc3NhZ2UgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlciAqLworCUlOVEVSUlVQVF9QQVJBTExFTF9BUFBMWV9NRVNTQUdFID0gMSA8PCAyNiwK KworCS8qIHByb2NzaWduYWwgZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLworCUlOVEVS UlVQVF9CQVJSSUVSID0gMSA8PCAyNywKKworCS8qLS0tLSBlbmQgb2YgaW50ZXJydXB0cyBo YW5kbGVkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgLS0tLSovCisKKwkvKgorCSAqIE5P VEU6IEludGVycnVwdFR5cGVzIG11c3QgZml0IGluIGEgMzItYml0IGJpdG1hc2suIChJZiB3 ZSBoYWQgZWZmaWNpZW50CisJICogNjQtYml0IGF0b21pY3Mgb24gYWxsIHBsYXRmb3Jtcywg d2UgY291bGQgZWFzaWx5IGdvIHVwIHRvIDY0IGJpdHMpCisJICovCisKKwkvKgorCSAqIFNM RUVQSU5HX09OX0lOVEVSUlVQVFMgaW5kaWNhdGVzIHRoYXQgdGhlIGJhY2tlbmQgaXMgY3Vy cmVudGx5IGJsb2NrZWQKKwkgKiB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQuIElmIGl0J3Mg c2V0LCB0aGUgYmFja2VuZCBuZWVkcyB0byBiZSB3b2tlbiB1cAorCSAqIHdoZW4gYSBiaXQg aW4gdGhlIHBlbmRpbmcgaW50ZXJydXB0cyBtYXNrIGlzIHNldC4gSXQncyB1c2VkIGludGVy bmFsbHkKKwkgKiBieSB0aGUgaW50ZXJydXB0IG1hY2hpbmVyeSwgYW5kIGNhbm5vdCBiZSB1 c2VkIGRpcmVjdGx5IGluIHRoZSBwdWJsaWMKKwkgKiBmdW5jdGlvbnMuIEl0J3MgbmFtZWQg ZGlmZmVyZW50bHkgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYWN0dWFsCisJICogaW50 ZXJydXB0IGZsYWdzLgorCSAqLworCVNMRUVQSU5HX09OX0lOVEVSUlVQVFMgPSAxIDw8IDMx LAorCiB9IEludGVycnVwdFR5cGU7CiAKKy8qIFRoZSBzZXQgb2YgaW50ZXJydXB0cyB0aGF0 IGFyZSAoZXZlcikgcHJvY2Vzc2VkIGJ5IENIRUNLX0ZPUl9JTlRFUlJVUFRTICovCisjZGVm aW5lIElOVEVSUlVQVF9DRklfQUxMX01BU0sJKAkJCQkJCVwKKwkJSU5URVJSVVBUX0RJRSB8 CQkJCQkJCQkJXAorCQlJTlRFUlJVUFRfUVVFUllfQ0FOQ0VMIHwJCQkJCQlcCisJCUlOVEVS UlVQVF9XQUxTTkRfSU5JVF9TVE9QUElORyB8CQkJCVwKKwkJSU5URVJSVVBUX1JFQ09WRVJZ X0NPTkZMSUNUX0RBVEFCQVNFIHwJCQlcCisJCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElD VF9UQUJMRVNQQUNFIHwJCVwKKwkJSU5URVJSVVBUX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0sg fAkJCQlcCisJCUlOVEVSUlVQVF9SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCB8CQkJXAor CQlJTlRFUlJVUFRfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOIHwJCQlcCisJCUlOVEVS UlVQVF9SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLIHwJXAorCQlJTlRFUlJV UFRfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgfAkJXAorCQlJTlRFUlJVUFRfVFJB TlNBQ1RJT05fVElNRU9VVCB8CQkJCQlcCisJCUlOVEVSUlVQVF9JRExFX1NFU1NJT05fVElN RU9VVCB8CQkJCVwKKwkJSU5URVJSVVBUX0lETEVfSU5fVFJBTlNBQ1RJT05fU0VTU0lPTl9U SU1FT1VUIHwJXAorCQlJTlRFUlJVUFRfQ0xJRU5UX0NIRUNLX1RJTUVPVVQgfAkJCQlcCisJ CUlOVEVSUlVQVF9DTElFTlRfQ09OTkVDVElPTl9MT1NUIHwJCQkJXAorCQlJTlRFUlJVUFRf TE9HX01FTU9SWV9DT05URVhUIHwJCQkJCVwKKwkJSU5URVJSVVBUX1BBUkFMTEVMX01FU1NB R0UgfAkJCQkJXAorCQlJTlRFUlJVUFRfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSB8CQkJCVwK KwkJSU5URVJSVVBUX0JBUlJJRVIJCQkJCQkJCVwKKwkJKQorCisvKiBUaGUgc2V0IG9mIGlu dGVycnVwdHMgdGhhdCBhcmUgcHJvY2Vzc2VkIGJ5IFByb2Nlc3NNYWluTG9vcEludGVycnVw dHMgKi8KKyNkZWZpbmUgSU5URVJSVVBUX01BSU5fTE9PUF9NQVNLCSgJCQlcCisJCUlOVEVS UlVQVF9CQVJSSUVSIHwJCQkJCQlcCisJCUlOVEVSUlVQVF9TSFVURE9XTl9BVVggfAkJCQlc CisJCUlOVEVSUlVQVF9MT0dfTUVNT1JZX0NPTlRFWFQgfAkJCVwKKwkJSU5URVJSVVBUX0NP TkZJR19SRUxPQUQJCQkJCVwKKwkJKQorCiAvKgotICogVGVzdCBhbiBpbnRlcnJ1cHQgZmxh ZyAob2YgZmxhZ3MpLgorICogVGVzdCBhbiBpbnRlcnJ1cHQgZmxhZyAob3IgZmxhZ3MpLgog ICovCiBzdGF0aWMgaW5saW5lIGJvb2wKIElzSW50ZXJydXB0UGVuZGluZyh1aW50MzIgaW50 ZXJydXB0TWFzaykKIHsKLQlyZXR1cm4gKHBnX2F0b21pY19yZWFkX3UzMihNeVBlbmRpbmdJ bnRlcnJ1cHRzKSAmIGludGVycnVwdE1hc2spICE9IDA7CisJcGdfcmVhZF9iYXJyaWVyKCk7 CisKKyNpZmRlZiBXSU4zMgorCWlmICh1bmxpa2VseShVTkJMT0NLRURfU0lHTkFMX1FVRVVF KCkpKQorCQlwZ3dpbjMyX2Rpc3BhdGNoX3F1ZXVlZF9zaWduYWxzKCk7CisjZW5kaWYKKwor CWlmICh1bmxpa2VseSgocGdfYXRvbWljX3JlYWRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMp ICYgaW50ZXJydXB0TWFzaykgIT0gMCkpCisJCXJldHVybiB0cnVlOworCWVsc2UKKwkJcmV0 dXJuIGZhbHNlOwogfQogCiAvKgotICogQ2xlYXIgYW4gaW50ZXJydXB0IGZsYWcuCisgKiBD bGVhciBhbiBpbnRlcnJ1cHQgZmxhZyAob3IgZmxhZ3MpLgogICovCiBzdGF0aWMgaW5saW5l IHZvaWQKIENsZWFySW50ZXJydXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogewogCXBnX2F0 b21pY19mZXRjaF9hbmRfdTMyKE15UGVuZGluZ0ludGVycnVwdHMsIH5pbnRlcnJ1cHRNYXNr KTsKKwlwZ193cml0ZV9iYXJyaWVyKCk7CiB9CiAKIC8qCi0gKiBUZXN0IGFuZCBjbGVhciBh biBpbnRlcnJ1cHQgZmxhZy4KKyAqIFRlc3QgYW5kIGNsZWFyIGFuIGludGVycnVwdCBmbGFn IChvciBmbGFncykuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbAogQ29uc3VtZUludGVycnVw dCh1aW50MzIgaW50ZXJydXB0TWFzaykKQEAgLTE1NSw5ICs0MzMsNiBAQCBDb25zdW1lSW50 ZXJydXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrKQogCXJldHVybiB0cnVlOwogfQogCi1leHRl cm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IENvbmZpZ1JlbG9hZFBlbmRp bmc7Ci1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFNodXRkb3du UmVxdWVzdFBlbmRpbmc7Ci0KIGV4dGVybiB2b2lkIFJhaXNlSW50ZXJydXB0KHVpbnQzMiBp bnRlcnJ1cHRNYXNrKTsKIGV4dGVybiB2b2lkIFNlbmRJbnRlcnJ1cHQodWludDMyIGludGVy cnVwdE1hc2ssIFByb2NOdW1iZXIgcGdwcm9jbm8pOwogZXh0ZXJuIGludAlXYWl0SW50ZXJy dXB0KHVpbnQzMiBpbnRlcnJ1cHRNYXNrLCBpbnQgd2FrZUV2ZW50cywgbG9uZyB0aW1lb3V0 LApAQCAtMTczLDQgKzQ0OCw3IEBAIGV4dGVybiB2b2lkIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU2lnbmFsSGFuZGxlckZvckNy YXNoRXhpdChTSUdOQUxfQVJHUyk7CiBleHRlcm4gdm9pZCBTaWduYWxIYW5kbGVyRm9yU2h1 dGRvd25SZXF1ZXN0KFNJR05BTF9BUkdTKTsKIAorLyogaW4gdGNvcC9wb3N0Z3Jlcy5jICov CitleHRlcm4gdm9pZCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKTsKKwogI2VuZGlmCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3N0YXJ0dXAuaCBiL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvc3RhcnR1cC5oCmluZGV4IDE1OGY1MjI1NWE2Li5hMDMxNjIwMmI5NSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmgKKysrIGIvc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci9zdGFydHVwLmgKQEAgLTI1LDYgKzI1LDE0IEBACiAKIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgbG9nX3N0YXJ0dXBfcHJvZ3Jlc3NfaW50ZXJ2YWw7CiAK Ky8qIFRoZSBzZXQgb2YgaW50ZXJydXB0cyB0aGF0IGFyZSBwcm9jZXNzZWQgYnkgUHJvY2Vz c1N0YXJ0dXBQcm9jSW50ZXJydXB0cyAqLworI2RlZmluZSBJTlRFUlJVUFRfU1RBUlRVUF9Q Uk9DX01BU0sJKAkJCVwKKwkJSU5URVJSVVBUX0JBUlJJRVIgfAkJCQkJCVwKKwkJSU5URVJS VVBUX0RJRSB8CQkJCQkJCVwKKwkJSU5URVJSVVBUX0xPR19NRU1PUllfQ09OVEVYVCB8CQkJ XAorCQlJTlRFUlJVUFRfQ09ORklHX1JFTE9BRAkJCQkJXAorCQkpCisKIGV4dGVybiB2b2lk IFByb2Nlc3NTdGFydHVwUHJvY0ludGVycnVwdHModm9pZCk7CiBleHRlcm4gdm9pZCBTdGFy dHVwUHJvY2Vzc01haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1 cF9kYXRhX2xlbikgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiBleHRlcm4gdm9pZCBQcmVS ZXN0b3JlQ29tbWFuZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaAppbmRleCA4ODkxMjYwNmU0ZC4uODkwMGQxZWQ5MmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEyLDEwICsxMiw2IEBACiAjaWZu ZGVmIExPR0lDQUxXT1JLRVJfSAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAotI2luY2x1 ZGUgPHNpZ25hbC5oPgotCi1leHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21p Y190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKLQogZXh0ZXJuIHZvaWQgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiB2b2lkIFBhcmFsbGVsQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiB2b2lkIFRhYmxlc3luY1dvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOwpAQCAtMjMsNyArMTksNiBAQCBleHRlcm4gdm9pZCBU YWJsZXN5bmNXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIGV4dGVybiBib29sIElzTG9n aWNhbFdvcmtlcih2b2lkKTsKIGV4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlX b3JrZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl SW50ZXJydXB0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc1BhcmFsbGVsQXBwbHlNZXNz YWdlcyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdvcmtlcnNXYWtldXBBdENv bW1pdChPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IGY1YTI0Y2Nm YmYyLi5iMGFjOWY3MGFlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v c2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMTYwLDgg KzE2MCw4IEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdAogCS8qIGlzIHRoaXMg c2xvdCBkZWZpbmVkICovCiAJYm9vbAkJaW5fdXNlOwogCi0JLyogV2hvIGlzIHN0cmVhbWlu ZyBvdXQgY2hhbmdlcyBmb3IgdGhpcyBzbG90PyAwIGluIHVudXNlZCBzbG90cy4gKi8KLQlw aWRfdAkJYWN0aXZlX3BpZDsKKwkvKiBXaG8gaXMgc3RyZWFtaW5nIG91dCBjaGFuZ2VzIGZv ciB0aGlzIHNsb3Q/IElOVkFMSURfUFJPQ19OVU1CRVIgaW4gdW51c2VkIHNsb3RzLiAqLwor CVByb2NOdW1iZXIJYWN0aXZlX3Byb2M7CiAKIAkvKiBhbnkgb3V0c3RhbmRpbmcgbW9kaWZp Y2F0aW9ucz8gKi8KIAlib29sCQlqdXN0X2RpcnRpZWQ7CkBAIC0xODcsNyArMTg3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUmVwbGljYXRpb25TbG90CiAJLyogaXMgc29tZWJvZHkgcGVyZm9y bWluZyBpbyBvbiB0aGlzIHNsb3Q/ICovCiAJTFdMb2NrCQlpb19pbl9wcm9ncmVzc19sb2Nr OwogCi0JLyogQ29uZGl0aW9uIHZhcmlhYmxlIHNpZ25hbGVkIHdoZW4gYWN0aXZlX3BpZCBj aGFuZ2VzICovCisJLyogQ29uZGl0aW9uIHZhcmlhYmxlIHNpZ25hbGVkIHdoZW4gYWN0aXZl X3Byb2MgY2hhbmdlcyAqLwogCUNvbmRpdGlvblZhcmlhYmxlIGFjdGl2ZV9jdjsKIAogCS8q IGFsbCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgb25seSB1c2VkIGZvciBsb2dpY2FsIHNsb3Rz ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oCmluZGV4IGMzZThlMTkxMzM5 Li4yNDAyNmZjZmU1YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAg LTQ2LDcgKzQ2LDcgQEAgZXh0ZXJuIHZvaWQgV2FsU25kU2htZW1Jbml0KHZvaWQpOwogZXh0 ZXJuIHZvaWQgV2FsU25kV2FrZXVwKGJvb2wgcGh5c2ljYWwsIGJvb2wgbG9naWNhbCk7CiBl eHRlcm4gdm9pZCBXYWxTbmRJbml0U3RvcHBpbmcodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxT bmRXYWl0U3RvcHBpbmcodm9pZCk7Ci1leHRlcm4gdm9pZCBIYW5kbGVXYWxTbmRJbml0U3Rv cHBpbmcodm9pZCk7CitleHRlcm4gdm9pZCBQcm9jZXNzV2FsU25kSW5pdFN0b3BwaW5nKHZv aWQpOwogZXh0ZXJuIHZvaWQgV2FsU25kUnFzdEZpbGVSZWxvYWQodm9pZCk7CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXJfcHJpdmF0ZS5o IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyX3ByaXZhdGUuaAppbmRleCA4 MTRiODEyNDMyYS4uM2YwN2ZlZDdhMzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2Fsc2VuZGVyX3ByaXZhdGUuaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIGVudW0g V2FsU25kU3RhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgV2FsU25kCiB7CisJUHJvY051bWJl cglwZ3Byb2NubzsJCS8qIHRoaXMgd2Fsc2VuZGVyJ3MgUHJvY051bWJlciwgb3IgaW52YWxp ZCBpZiBub3QgYWN0aXZlICovCiAJcGlkX3QJCXBpZDsJCQkvKiB0aGlzIHdhbHNlbmRlcidz IFBJRCwgb3IgMCBpZiBub3QgYWN0aXZlICovCiAKIAlXYWxTbmRTdGF0ZSBzdGF0ZTsJCQkv KiB0aGlzIHdhbHNlbmRlcidzIHN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDMwYjI3NzU5NTJjLi42NzgxZTlmNmE2YSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTc4LDkg Kzc4LDEwIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlGaWxlU2V0ICAg ICpzdHJlYW1fZmlsZXNldDsKIAogCS8qCi0JICogUElEIG9mIGxlYWRlciBhcHBseSB3b3Jr ZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKLQkgKiB3b3Jr ZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqIExlYWRlciBhcHBseSB3b3JrZXIgaWYg dGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLAorCSAqIElO VkFMSURfUFJPQ19OVU1CRVIvSW52YWxpZFBpZCBvdGhlcndpc2UuCiAJICovCisJUHJvY051 bWJlcglsZWFkZXJfcGdwcm9jbm87CiAJcGlkX3QJCWxlYWRlcl9waWQ7CiAKIAkvKiBJbmRp Y2F0ZXMgd2hldGhlciBhcHBseSBjYW4gYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKaW5kZXggZWYwYjczM2ViZTguLjU5YTI2NDA1OWJj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKQEAgLTE0LDYgKzE0LDcgQEAKICNpZm5k ZWYgUFJPQ0FSUkFZX0gKICNkZWZpbmUgUFJPQ0FSUkFZX0gKIAorI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKQEAg LTc3LDE0ICs3OCwxNCBAQCBleHRlcm4gVmlydHVhbFRyYW5zYWN0aW9uSWQgKkdldEN1cnJl bnRWaXJ0dWFsWElEcyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwKIAkJCQkJCQkJCQkJCSAg IGJvb2wgZXhjbHVkZVhtaW4wLCBib29sIGFsbERicywgaW50IGV4Y2x1ZGVWYWN1dW0sCiAJ CQkJCQkJCQkJCQkgICBpbnQgKm52eGlkcyk7CiBleHRlcm4gVmlydHVhbFRyYW5zYWN0aW9u SWQgKkdldENvbmZsaWN0aW5nVmlydHVhbFhJRHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4s IE9pZCBkYk9pZCk7Ci1leHRlcm4gcGlkX3QgQ2FuY2VsVmlydHVhbFRyYW5zYWN0aW9uKFZp cnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSk7Ci1l eHRlcm4gcGlkX3QgU2lnbmFsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlv bklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9kZSwKK2V4dGVybiBwaWRfdCBDYW5j ZWxWaXJ0dWFsVHJhbnNhY3Rpb24oVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZCwgSW50ZXJy dXB0VHlwZSByZWFzb24pOworZXh0ZXJuIHBpZF90IFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlv bihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBJbnRlcnJ1cHRUeXBlIHJlYXNvbiwKIAkJ CQkJCQkJCSAgYm9vbCBjb25mbGljdFBlbmRpbmcpOwogCiBleHRlcm4gYm9vbCBNaW5pbXVt QWN0aXZlQmFja2VuZHMoaW50IG1pbik7CiBleHRlcm4gaW50CUNvdW50REJCYWNrZW5kcyhP aWQgZGF0YWJhc2VpZCk7CiBleHRlcm4gaW50CUNvdW50REJDb25uZWN0aW9ucyhPaWQgZGF0 YWJhc2VpZCk7Ci1leHRlcm4gdm9pZCBDYW5jZWxEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZWlk LCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsIGJvb2wgY29uZmxpY3RQZW5kaW5nKTsKK2V4 dGVybiB2b2lkIENhbmNlbERCQmFja2VuZHMoT2lkIGRhdGFiYXNlaWQsIEludGVycnVwdFR5 cGUgcmVhc29uLCBib29sIGNvbmZsaWN0UGVuZGluZyk7CiBleHRlcm4gaW50CUNvdW50VXNl ckJhY2tlbmRzKE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgQ291bnRPdGhlckRCQmFja2Vu ZHMoT2lkIGRhdGFiYXNlSWQsCiAJCQkJCQkJCSBpbnQgKm5iYWNrZW5kcywgaW50ICpucHJl cGFyZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCAwMjJmZDhlZDkzMy4u OGQ5MTdmMWJlYzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0xNCw0MyAr MTQsNiBAQAogI2lmbmRlZiBQUk9DU0lHTkFMX0gKICNkZWZpbmUgUFJPQ1NJR05BTF9ICiAK LSNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKLQotCi0vKgotICogUmVhc29ucyBm b3Igc2lnbmFsaW5nIGEgUG9zdGdyZXMgY2hpbGQgcHJvY2VzcyAoYSBiYWNrZW5kIG9yIGFu IGF1eGlsaWFyeQotICogcHJvY2VzcywgbGlrZSBjaGVja3BvaW50ZXIpLiAgV2UgY2FuIGNv cGUgd2l0aCBjb25jdXJyZW50IHNpZ25hbHMgZm9yIGRpZmZlcmVudAotICogcmVhc29ucy4g IEhvd2V2ZXIsIGlmIHRoZSBzYW1lIHJlYXNvbiBpcyBzaWduYWxlZCBtdWx0aXBsZSB0aW1l cyBpbiBxdWljawotICogc3VjY2Vzc2lvbiwgdGhlIHByb2Nlc3MgaXMgbGlrZWx5IHRvIG9i c2VydmUgb25seSBvbmUgbm90aWZpY2F0aW9uIG9mIGl0LgotICogVGhpcyBpcyBva2F5IGZv ciB0aGUgcHJlc2VudCB1c2VzLgotICoKLSAqIEFsc28sIGJlY2F1c2Ugb2YgcmFjZSBjb25k aXRpb25zLCBpdCdzIGltcG9ydGFudCB0aGF0IGFsbCB0aGUgc2lnbmFscyBiZQotICogZGVm aW5lZCBzbyB0aGF0IG5vIGhhcm0gaXMgZG9uZSBpZiBhIHByb2Nlc3MgbWlzdGFrZW5seSBy ZWNlaXZlcyBvbmUuCi0gKi8KLXR5cGVkZWYgZW51bQotewotCVBST0NTSUdfQ0FUQ0hVUF9J TlRFUlJVUFQsCS8qIHNpbnZhbCBjYXRjaHVwIGludGVycnVwdCAqLwotCVBST0NTSUdfTk9U SUZZX0lOVEVSUlVQVCwJLyogbGlzdGVuL25vdGlmeSBpbnRlcnJ1cHQgKi8KLQlQUk9DU0lH X1BBUkFMTEVMX01FU1NBR0UsCS8qIG1lc3NhZ2UgZnJvbSBjb29wZXJhdGluZyBwYXJhbGxl bCBiYWNrZW5kICovCi0JUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdh bHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCi0JUFJPQ1NJR19CQVJSSUVS LAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KLQlQUk9DU0lHX0xPR19NRU1P UllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMg Ki8KLQlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBw YXJhbGxlbCBhcHBseSB3b3JrZXJzICovCi0KLQkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFz b25zICovCi0JUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9GSVJTVCwKLQlQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9G SVJTVCwKLQlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCi0JUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAotCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U05BUFNIT1QsCi0JUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKLQlQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiwKLQlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ssCi0JUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MQVNUID0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAot fSBQcm9jU2lnbmFsUmVhc29uOwotCi0jZGVmaW5lIE5VTV9QUk9DU0lHTkFMUyAoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MQVNUICsgMSkKLQogdHlwZWRlZiBlbnVtCiB7CiAJUFJP Q1NJR05BTF9CQVJSSUVSX1NNR1JSRUxFQVNFLCAvKiBhc2sgc21nciB0byBjbG9zZSBmaWxl cyAqLwpAQCAtNjMsMTYgKzI2LDEyIEBAIGV4dGVybiBTaXplIFByb2NTaWduYWxTaG1lbVNp emUodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpOwogCiBl eHRlcm4gdm9pZCBQcm9jU2lnbmFsSW5pdChib29sIGNhbmNlbF9rZXlfdmFsaWQsIGludDMy IGNhbmNlbF9rZXkpOwotZXh0ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRfdCBwaWQsIFBy b2NTaWduYWxSZWFzb24gcmVhc29uLAotCQkJCQkJICAgUHJvY051bWJlciBwcm9jTnVtYmVy KTsKIGV4dGVybiB2b2lkIFNlbmRDYW5jZWxSZXF1ZXN0KGludCBiYWNrZW5kUElELCBpbnQz MiBjYW5jZWxBdXRoQ29kZSk7CiAKIGV4dGVybiB1aW50NjQgRW1pdFByb2NTaWduYWxCYXJy aWVyKFByb2NTaWduYWxCYXJyaWVyVHlwZSB0eXBlKTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQ cm9jU2lnbmFsQmFycmllcih1aW50NjQgZ2VuZXJhdGlvbik7CiBleHRlcm4gdm9pZCBQcm9j ZXNzUHJvY1NpZ25hbEJhcnJpZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIHByb2NzaWduYWxf c2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKTsKLQogLyogUHJvY1NpZ25hbEhlYWRlciBp cyBhbiBvcGFxdWUgc3RydWN0LCBkZXRhaWxzIGtub3duIG9ubHkgd2l0aGluIHByb2NzaWdu YWwuYyAqLwogdHlwZWRlZiBzdHJ1Y3QgUHJvY1NpZ25hbEhlYWRlciBQcm9jU2lnbmFsSGVh ZGVyOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbC5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaAppbmRleCAyNDYzYzBmOWZhYy4uY2M2MjdhZTQ4 NTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaW52YWwuaApAQCAtMTI1LDE2ICsxMjUsMTEgQEAgdHlwZWRl ZiB1bmlvbgogLyogQ291bnRlciBvZiBtZXNzYWdlcyBwcm9jZXNzZWQ7IGRvbid0IHdvcnJ5 IGFib3V0IG92ZXJmbG93LiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHVpbnQ2NCBTaGFyZWRJ bnZhbGlkTWVzc2FnZUNvdW50ZXI7CiAKLWV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBz aWdfYXRvbWljX3QgY2F0Y2h1cEludGVycnVwdFBlbmRpbmc7Ci0KIGV4dGVybiB2b2lkIFNl bmRTaGFyZWRJbnZhbGlkTWVzc2FnZXMoY29uc3QgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2Fn ZSAqbXNncywKIAkJCQkJCQkJCSAgaW50IG4pOwogZXh0ZXJuIHZvaWQgUmVjZWl2ZVNoYXJl ZEludmFsaWRNZXNzYWdlcyh2b2lkICgqaW52YWxGdW5jdGlvbikgKFNoYXJlZEludmFsaWRh dGlvbk1lc3NhZ2UgKm1zZyksCiAJCQkJCQkJCQkJIHZvaWQgKCpyZXNldEZ1bmN0aW9uKSAo dm9pZCkpOwogCi0vKiBzaWduYWwgaGFuZGxlciBmb3IgY2F0Y2h1cCBldmVudHMgKFBST0NT SUdfQ0FUQ0hVUF9JTlRFUlJVUFQpICovCi1leHRlcm4gdm9pZCBIYW5kbGVDYXRjaHVwSW50 ZXJydXB0KHZvaWQpOwotCiAvKgogICogZW5hYmxlL2Rpc2FibGUgcHJvY2Vzc2luZyBvZiBj YXRjaHVwIGV2ZW50cyBkaXJlY3RseSBmcm9tIHNpZ25hbCBoYW5kbGVyLgogICogVGhlIGVu YWJsZSByb3V0aW5lIGZpcnN0IHBlcmZvcm1zIHByb2Nlc3Npbmcgb2YgYW55IGNhdGNodXAg ZXZlbnRzIHRoYXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMjRlMmY1MDgyYmMuLjg4 MTUwNmQ2MDlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaApAQCAtMTUsOCArMTUsOCBAQAog I2RlZmluZSBTVEFOREJZX0gKIAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgor I2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s b2NrLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9yZWxmaWxlbG9jYXRvci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieWRlZnMu aCIKIApAQCAtNDMsNyArNDMsNyBAQCBleHRlcm4gdm9pZCBDaGVja1JlY292ZXJ5Q29uZmxp Y3REZWFkbG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YW5kYnlEZWFkTG9ja0hhbmRsZXIo dm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5VGltZW91dEhhbmRsZXIodm9pZCk7CiBleHRl cm4gdm9pZCBTdGFuZGJ5TG9ja1RpbWVvdXRIYW5kbGVyKHZvaWQpOwotZXh0ZXJuIHZvaWQg TG9nUmVjb3ZlcnlDb25mbGljdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwgVGltZXN0YW1w VHogd2FpdF9zdGFydCwKK2V4dGVybiB2b2lkIExvZ1JlY292ZXJ5Q29uZmxpY3QoSW50ZXJy dXB0VHlwZSByZWFzb24sIFRpbWVzdGFtcFR6IHdhaXRfc3RhcnQsCiAJCQkJCQkJCVRpbWVz dGFtcFR6IG5vdywgVmlydHVhbFRyYW5zYWN0aW9uSWQgKndhaXRfbGlzdCwKIAkJCQkJCQkJ Ym9vbCBzdGlsbF93YWl0aW5nKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS93YWl0ZXZlbnRzZXQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2FpdGV2ZW50c2V0LmgK aW5kZXggNjBlY2VjYjc4NWMuLmM5YWI4MTM2YjUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3dhaXRldmVudHNldC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvd2Fp dGV2ZW50c2V0LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KIAog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgotI2luY2x1ZGUgInV0aWxzL3Jlc293 bmVyLmgiCiAKIC8qCiAgKiBCaXRtYXNrcyBmb3IgZXZlbnRzIHRoYXQgbWF5IHdha2UtdXAg V2FpdEludGVycnVwdCgpLApAQCAtODIsNyArODEsOSBAQCBleHRlcm4gdm9pZCBJbml0aWFs aXplV2FpdEV2ZW50U3VwcG9ydCh2b2lkKTsKIGV4dGVybiBIQU5ETEUgQ3JlYXRlU2hhcmVk V2FrZXVwSGFuZGxlKHZvaWQpOwogI2VuZGlmCiAKLWV4dGVybiBXYWl0RXZlbnRTZXQgKkNy ZWF0ZVdhaXRFdmVudFNldChSZXNvdXJjZU93bmVyIHJlc293bmVyLCBpbnQgbmV2ZW50cyk7 CitzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGE7CisKK2V4dGVybiBXYWl0RXZlbnRTZXQgKkNy ZWF0ZVdhaXRFdmVudFNldChzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGEgKnJlc293bmVyLCBp bnQgbmV2ZW50cyk7CiBleHRlcm4gdm9pZCBGcmVlV2FpdEV2ZW50U2V0KFdhaXRFdmVudFNl dCAqc2V0KTsKIGV4dGVybiB2b2lkIEZyZWVXYWl0RXZlbnRTZXRBZnRlckZvcmsoV2FpdEV2 ZW50U2V0ICpzZXQpOwogZXh0ZXJuIGludAlBZGRXYWl0RXZlbnRUb1NldChXYWl0RXZlbnRT ZXQgKnNldCwgdWludDMyIGV2ZW50cywgcGdzb2NrZXQgZmQsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgK aW5kZXggYTYyMzY3Zjc3OTMuLjkwOGYzOTIxN2IwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS90Y29wL3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCkBA IC0xNiw3ICsxNiw2IEBACiAKICNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRl ICJub2Rlcy9wbGFubm9kZXMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25t ZW50LmgiCiAKQEAgLTcyLDkgKzcxLDggQEAgZXh0ZXJuIHZvaWQgZGllKFNJR05BTF9BUkdT KTsKIGV4dGVybiB2b2lkIHF1aWNrZGllKFNJR05BTF9BUkdTKSBwZ19hdHRyaWJ1dGVfbm9y ZXR1cm4oKTsKIGV4dGVybiB2b2lkIFN0YXRlbWVudENhbmNlbEhhbmRsZXIoU0lHTkFMX0FS R1MpOwogZXh0ZXJuIHZvaWQgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05BTF9BUkdTKSBw Z19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKLWV4dGVybiB2b2lkIEhhbmRsZVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwotZXh0ZXJuIHZvaWQg UHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKLWV4dGVybiB2b2lk IFByb2Nlc3NDbGllbnRXcml0ZUludGVycnVwdChib29sIGJsb2NrZWQpOworZXh0ZXJuIHVp bnQzMiBQcm9jZXNzQ2xpZW50UmVhZEludGVycnVwdChib29sIGJsb2NrZWQpOworZXh0ZXJu IHVpbnQzMiBQcm9jZXNzQ2xpZW50V3JpdGVJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKIAog ZXh0ZXJuIHZvaWQgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAq YXJndltdLAogCQkJCQkJCQkJICBHdWNDb250ZXh0IGN0eCwgY29uc3QgY2hhciAqKmRibmFt ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9tZW11dGlscy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbWVtdXRpbHMuaAppbmRleCA4YWJjMjZhYmNlMi4uNWRjZTIwMmZlOTAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL21lbXV0aWxzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvbWVtdXRpbHMuaApAQCAtMTAxLDcgKzEwMSw2IEBAIGV4dGVybiB2b2lk IE1lbW9yeUNvbnRleHRDaGVjayhNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogI2RlZmluZSBN ZW1vcnlDb250ZXh0Q29weUFuZFNldElkZW50aWZpZXIoY3h0LCBpZCkgXAogCU1lbW9yeUNv bnRleHRTZXRJZGVudGlmaWVyKGN4dCwgTWVtb3J5Q29udGV4dFN0cmR1cChjeHQsIGlkKSkK IAotZXh0ZXJuIHZvaWQgSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCh2b2lkKTsK IGV4dGVybiB2b2lkIFByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KHZvaWQpOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS9zZXR1cC5jCmluZGV4IDAyYWE0MjAz NjBjLi5lYmYwYmZmYjYyNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bV9tcS9zZXR1cC5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEvc2V0dXAu YwpAQCAtMjYzLDYgKzI2Myw5IEBAIHdhaXRfZm9yX3dvcmtlcnNfdG9fYmVjb21lX3JlYWR5 KHdvcmtlcl9zdGF0ZSAqd3N0YXRlLAogCXsKIAkJaW50CQkJd29ya2Vyc19yZWFkeTsKIAor CQkvKiBDbGVhciB0aGUgaW50ZXJydXB0IGZsYWcgc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJ Q2xlYXJJbnRlcnJ1cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCiAJCS8qIElmIGFsbCB0aGUg d29ya2VycyBhcmUgcmVhZHksIHdlIGhhdmUgc3VjY2VlZGVkLiAqLwogCQlTcGluTG9ja0Fj cXVpcmUoJmhkci0+bXV0ZXgpOwogCQl3b3JrZXJzX3JlYWR5ID0gaGRyLT53b3JrZXJzX3Jl YWR5OwpAQCAtMjg1LDEyICsyODgsMTAgQEAgd2FpdF9mb3Jfd29ya2Vyc190b19iZWNvbWVf cmVhZHkod29ya2VyX3N0YXRlICp3c3RhdGUsCiAJCQl3ZV9iZ3dvcmtlcl9zdGFydHVwID0g V2FpdEV2ZW50RXh0ZW5zaW9uTmV3KCJUZXN0U2htTXFCZ1dvcmtlclN0YXJ0dXAiKTsKIAog CQkvKiBXYWl0IHRvIGJlIHNpZ25hbGVkLiAqLwotCQkodm9pZCkgV2FpdEludGVycnVwdChJ TlRFUlJVUFRfR0VORVJBTCwgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwg MCwKKwkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkgfCBJTlRF UlJVUFRfR0VORVJBTCwKKwkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfRVhJVF9PTl9QTV9E RUFUSCwgMCwKIAkJCQkJCQkgd2VfYmd3b3JrZXJfc3RhcnR1cCk7CiAKLQkJLyogQ2xlYXIg dGhlIGludGVycnVwdCBmbGFnIHNvIHdlIGRvbid0IHNwaW4uICovCi0JCUNsZWFySW50ZXJy dXB0KElOVEVSUlVQVF9HRU5FUkFMKTsKLQogCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUg b2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwogCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1fbXEv dGVzdC5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobV9tcS90ZXN0LmMKaW5kZXggMjQw ZmUzMTVkNDcuLjEwMWY2Yjc3NDFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc2htX21xL3Rlc3QuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htX21xL3Rl c3QuYwpAQCAtMTcxLDYgKzE3MSw4IEBAIHRlc3Rfc2htX21xX3BpcGVsaW5lZChQR19GVU5D VElPTl9BUkdTKQogCXsKIAkJYm9vbAkJd2FpdCA9IHRydWU7CiAKKwkJQ2xlYXJJbnRlcnJ1 cHQoSU5URVJSVVBUX0dFTkVSQUwpOworCiAJCS8qCiAJCSAqIElmIHdlIGhhdmVuJ3QgeWV0 IHNlbnQgdGhlIG1lc3NhZ2UgdGhlIHJlcXVpc2l0ZSBudW1iZXIgb2YgdGltZXMsCiAJCSAq IHRyeSBhZ2FpbiB0byBzZW5kIGl0IG5vdy4gIE5vdGUgdGhhdCB3aGVuIHNobV9tcV9zZW5k KCkgcmV0dXJucwpAQCAtMjM5LDkgKzI0MSw5IEBAIHRlc3Rfc2htX21xX3BpcGVsaW5lZChQ R19GVU5DVElPTl9BUkdTKQogCQkJICogdGhleSBoYXZlIHJlYWQgb3Igd3JpdHRlbiBkYXRh IGFuZCB0aGVyZWZvcmUgdGhlcmUgbWF5IG5vdyBiZQogCQkJICogd29yayBmb3IgdXMgdG8g ZG8uCiAJCQkgKi8KLQkJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9HRU5FUkFM LCBXTF9JTlRFUlJVUFQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJKHZvaWQpIFdh aXRJbnRlcnJ1cHQoSU5URVJSVVBUX0NGSV9NQVNLKCkgfCBJTlRFUlJVUFRfR0VORVJBTCwK KwkJCQkJCQkJIFdMX0lOVEVSUlVQVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsIDAsCiAJCQkJ CQkJCSB3ZV9tZXNzYWdlX3F1ZXVlKTsKLQkJCUNsZWFySW50ZXJydXB0KElOVEVSUlVQVF9H RU5FUkFMKTsKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jIGIvc3JjL3Rl c3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9zcGkuYwppbmRleCAyOGEyNzk4MDM3YS4u NmRjZDQxNDFjMGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93 b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtlcl9z cGkuYwpAQCAtMjE2LDcgKzIxNiw5IEBAIHdvcmtlcl9zcGlfbWFpbihEYXR1bSBtYWluX2Fy ZykKIAkJICogaXMgYXdha2VuZWQgaWYgcG9zdG1hc3RlciBkaWVzLiAgVGhhdCB3YXkgdGhl IGJhY2tncm91bmQgcHJvY2VzcwogCQkgKiBnb2VzIGF3YXkgaW1tZWRpYXRlbHkgaW4gYW4g ZW1lcmdlbmN5LgogCQkgKi8KLQkJKHZvaWQpIFdhaXRJbnRlcnJ1cHQoSU5URVJSVVBUX0dF TkVSQUwsCisJCSh2b2lkKSBXYWl0SW50ZXJydXB0KElOVEVSUlVQVF9DRklfTUFTSygpIHwK KwkJCQkJCQkgSU5URVJSVVBUX0NPTkZJR19SRUxPQUQgfAorCQkJCQkJCSBJTlRFUlJVUFRf R0VORVJBTCwKIAkJCQkJCQkgV0xfSU5URVJSVVBUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCiAJCQkJCQkJIHdvcmtlcl9zcGlfbmFwdGltZSAqIDEwMDBMLAogCQkJ CQkJCSB3b3JrZXJfc3BpX3dhaXRfZXZlbnRfbWFpbik7CkBAIC0yMjcsMTEgKzIyOSw4IEBA IHdvcmtlcl9zcGlfbWFpbihEYXR1bSBtYWluX2FyZykKIAkJLyoKIAkJICogSW4gY2FzZSBv ZiBhIFNJR0hVUCwganVzdCByZWxvYWQgdGhlIGNvbmZpZ3VyYXRpb24uCiAJCSAqLwotCQlp ZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKLQkJewotCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9 IGZhbHNlOworCQlpZiAoQ29uc3VtZUludGVycnVwdChJTlRFUlJVUFRfQ09ORklHX1JFTE9B RCkpCiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKLQkJfQogCiAJCS8qCiAJ CSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gd2hpY2ggd2UgY2FuIHJ1biBxdWVyaWVzLiAg Tm90ZSB0aGF0IGVhY2gKLS0gCjIuMzkuNQoK --------------kl7e3aDdgBl9cMvp58xJLWGu--