Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wgmB1-006OM8-0o for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 16:28:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgmAx-001hvz-2x for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 16:28:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wgmAx-001hvq-1V for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 16:28:07 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wgmAu-000000025at-2LsJ for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 16:28:07 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4gv8sp5jHzz49Q21; Mon, 06 Jul 2026 19:27:58 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1783355279; 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=eSK/Eo2R7pPGN5B87FNQgIG8dXScoqyqOHsAOoSbEyQ=; b=NAVo3l6v9uiVKMHUJ1hO1tnJYraxDYkYlUsX7jZGv56V7WPqGUJuqMXmS3apmjnXhZt5HZ CIBgxZ5rVDranqfrN3POzTe6/riiz9JgsZFIeN45fFTztObnrSten0s4xyjpGO531qLTb9 xMTjYWGaWCl/6Lf5J1aPsb+9aqXLV4sA0vmmS9GnyXy0NsFTQt4Z5amzwx4DVgnrHxlug5 pHraGcKi/f/ZrIsnSEAheaRG8sF40X0/E5shXp4yZRWQP+BRTSW8OhYFtCpiqByilt5kIa qOpFeKF8+RGAp57tZhMIoSTL4FLjvV5piNk5PTNSWsq1iQNkJodC+dng9Fn/vw== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1783355279; b=SIX5cykoZG4/vu5Oakxtl/u47Nx8ChmXNc368bpJaG/Ajm9Y/mi0iFX09zOq3un25RtlnS 2RDj5FFvr4MhOUC70qbh3MtSJfxdlGHiylrcVRIZ4glR2y1oR2vpjHFy3sm1NsB6MJszLk 8IgBzqRDygou7ZG3VBbNhV8kCiVRzt0js9JxD0z7fmx+CPzgTji3lQN52UB2mMvKhdqlfB yrLH8/DUYAusft3/ILH8Hs7WkfQ5+jwjKLs1zBFhj3VEujsQsppwA96cG0guo/S4VTxu3K H0gvZy2VaKkdSBeovcVMrAlXsOoHIGBDUGzG6xCGzLfXtGf80+mLKRBfZDRyhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1783355279; 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=eSK/Eo2R7pPGN5B87FNQgIG8dXScoqyqOHsAOoSbEyQ=; b=kSAtxQ4LLznYXAkIx1d4ihSAzuTZ3RgvbOCB00G1CjiSV8Lhimzy2MBb6pWPEg2kxy9P2k UaAej7FOlmha1H4uerwYtSEc6EoN5jaNDsXHu9T087WgSor67inQyfXlbtYZHfa3yytXgP JKRa9oOCkBpcVWXo0GsnQFPzNTzWbxxONzq0lmY5+1od9G0aJl5Tun1fl3QjM0G82QZZ7y kYAosyuH9zH9e5IdslF0zQQeSxRU82GXgSVV2pnFfGFd4v+s3ii0tlLNx5C43gFVOkrBNY MdDhmLdgCjCFjbDzMdy2iWX4lEpdK+Vu/PDH45Yhwfei3ud4b+Q3ODQfMbxCzQ== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------3ya1Vdf60QnNZwd0W6QSz8kw" Message-ID: Date: Mon, 6 Jul 2026 19:27:56 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Don't use the deprecated and insecure PQcancel in our frontend tools anymore To: Jelte Fennema-Nio Cc: PostgreSQL Hackers , Alvaro Herrera , Jacob Champion References: <88dfe280-ba29-4943-95b8-63abc9f3f771@iki.fi> <9d7ba3ac-d660-483e-8f68-9096a2464e90@iki.fi> <83daa551-5f45-4683-920f-e62ed94b06a8@iki.fi> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------3ya1Vdf60QnNZwd0W6QSz8kw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 06/07/2026 13:28, Jelte Fennema-Nio wrote: > On Sun, 5 Jul 2026 at 00:58, Heikki Linnakangas wrote: >> I extracted just the comment in fe_utils/cancel.c to a separate patch, >> and modified it to reflect the reality before the rest of the changes. >> I'm inclined to commit that now to document the status quo. That'll also >> make it easier to see what the other patches change. Does the attached >> look correct to you? > > Sounds good and yeah looks correct. Thanks, pushed that part. Attached are the remaining patches, rebased over that. - Heikki --------------3ya1Vdf60QnNZwd0W6QSz8kw Content-Type: text/x-patch; charset=UTF-8; name="v8.1-0001-psql-Replace-cancel_pressed-with-CancelRequeste.patch" Content-Disposition: attachment; filename*0="v8.1-0001-psql-Replace-cancel_pressed-with-CancelRequeste.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyYTJmMzlmNDNiOTA2Yzc0OTNkZWI5YmQxNTcyOTEwYThhZDE1NmY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVs dGVmLm5sPgpEYXRlOiBUdWUsIDcgQXByIDIwMjYgMTg6MjQ6MDEgKzAyMDAKU3ViamVjdDog W1BBVENIIHY4LjEgMS80XSBwc3FsOiBSZXBsYWNlIGNhbmNlbF9wcmVzc2VkIHdpdGggQ2Fu Y2VsUmVxdWVzdGVkCgpJbiBhNGZkM2FhNyBzcmMvZmVfdXRpbHMvY2FuY2VsLmMgd2FzIGlu dHJvZHVjZWQgd2hpY2ggYWRkZWQKdGhlIENhbmNlbFJlcXVlc3RlZCB2YXJpYWJsZS4gVGhp cyBuZXcgdmFyaWFibGUgd2FzIHVzZWQgaW4gcHNxbCB0bwpyZXBsYWNlIHRoZSBjYW5jZWxf cHJlc3NlZCB2YXJpYWJsZSwgYnV0IHRoYXQgcXVpY2tseSBnb3QgcmV2ZXJ0ZWQgaW4KNWQ0 M2MzYzU0LiBUaGUgcmVhc29uIHdhcyB0aGF0IGNhbmNlbF9wcmVzc2VkIGhhZCBub3QgZnVs bHkgcmVwbGFjZWQgYnkKQ2FuY2VsUmVxdWVzdGVkIGV2ZXJ5d2hlcmUgaW4gdGhlIGNvZGUs IGFuZCB0aGUgbWl4ZWQgdXNhZ2UgY2F1c2VkCmlzc3VlcyAoZS5nLiB3aXRoIFx3YXRjaCku CgpUaGlzIG5vdyBkb2VzIHRoYXQgb3JpZ2luYWwgcmVmYWN0b3IgY29ycmVjdGx5IGJ5IHVz aW5nIENhbmNlbFJlcXVlc3RlZApldmVyeXdoZXJlIGFuZCBjb21wbGV0ZWx5IGdldHRpbmcg cmlkIG9mIGNhbmNlbF9wcmVzc2VkLgoKNWQ0M2MzYzU0IG1lbnRpb25zIHRoZSAtLXNpbmds ZS1zdGVwIGZsYWcgYXMgc29tZXRoaW5nIHRoYXQgcmVxdWlyZWQKZnVydGhlciBhbmFseXNp cy4gSSB0cmllZCAtLXNpbmdsZS1zdGVwIHdpdGggYW5kIHdpdGhvdXQgdGhpcyBjb21taXQs CmFuZCBDdHJsK0MgYmVoYXZlcyB0aGUgc2FtZSBpbiBib3RoLiBJIGFsc28gY2Fubm90IHRo aW5rIG9mIGEgcmVhc29uIHdoeQppdCB3b3VsZCBiZWhhdmUgYW55IGRpZmZlcmVudGx5LgoK VGhlIG9ubHkgc2xpZ2h0IGJlaGF2aW9yYWwgY2hhbmdlIEkgY291bGQgdGhpbmsgb2Ygd2Fz IHRoYXQKY2FuY2VsX3ByZXNzZWQgd2FzIHNldCBhZnRlciBwc3FsJ3MgbG9uZ2p1bXAsIGFu ZCBDYW5jZWxSZXF1ZXN0ZWQgaXMgc2V0CmJlZm9yZS4gQnV0IHNpbmNlIENhbmNlbFJlcXVl c3RlZCBpcyBub3cgc2V0IHRvIGZhbHNlIGFmdGVyIHRoZSBsb25nanVtcAp0aGVyZSdzIG5v IHByYWN0aWNhbCBkaWZmZXJlbmNlIGNhdXNlZCBieSB0aGF0LgotLS0KIHNyYy9iaW4vcHNx bC9jb21tYW5kLmMgICAgICAgfCAgMTAgKystLQogc3JjL2Jpbi9wc3FsL2NvbW1vbi5jICAg ICAgICB8ICAyMSArKysrLS0tLQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICB8ICAg OSArKy0tCiBzcmMvYmluL3BzcWwvbWFpbmxvb3AuYyAgICAgIHwgICA3ICstLQogc3JjL2Jp bi9wc3FsL3ZhcmlhYmxlcy5jICAgICB8ICAgMyArLQogc3JjL2ZlX3V0aWxzL3ByaW50LmMg ICAgICAgICB8IDEwMSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvZmVfdXRpbHMvcHJpbnQuaCB8ICAgMiAtCiA3IGZpbGVzIGNoYW5nZWQsIDc0 IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDdmZGQ0NTEx YTM2Li43MzdlZTVhYjk5NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwor KysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC00MzkyLDcgKzQzOTIsNyBAQCB3YWl0 X3VudGlsX2Nvbm5lY3RlZChQR2Nvbm4gKmNvbm4pCiAJCSAqIE9uIGV2ZXJ5IGl0ZXJhdGlv biBvZiB0aGUgY29ubmVjdGlvbiBzZXF1ZW5jZSwgbGV0J3MgY2hlY2sgaWYgdGhlCiAJCSAq IHVzZXIgaGFzIHJlcXVlc3RlZCBhIGNhbmNlbGxhdGlvbi4KIAkJICovCi0JCWlmIChjYW5j ZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWJyZWFrOwogCiAJCS8q CkBAIC00NDA0LDcgKzQ0MDQsNyBAQCB3YWl0X3VudGlsX2Nvbm5lY3RlZChQR2Nvbm4gKmNv bm4pCiAJCQlicmVhazsKIAogCQkvKgotCQkgKiBJZiB0aGUgdXNlciBzZW5kcyBTSUdJTlQg YmV0d2VlbiB0aGUgY2FuY2VsX3ByZXNzZWQgY2hlY2ssIGFuZAorCQkgKiBJZiB0aGUgdXNl ciBzZW5kcyBTSUdJTlQgYmV0d2VlbiB0aGUgQ2FuY2VsUmVxdWVzdGVkIGNoZWNrLCBhbmQK IAkJICogcG9sbGluZyBvZiB0aGUgc29ja2V0LCBpdCB3aWxsIG5vdCBiZSByZWNvZ25pemVk LiBJbnN0ZWFkLCB3ZSB3aWxsCiAJCSAqIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbmV4dCBzdGVw IGluIHRoZSBjb25uZWN0aW9uIHNlcXVlbmNlIG9yCiAJCSAqIGZvcmV2ZXIsIHdoaWNoIG1p Z2h0IHJlcXVpcmUgdXNlcnMgdG8gc2VuZCBTSUdURVJNIG9yIFNJR1FVSVQuCkBAIC00NDE1 LDcgKzQ0MTUsNyBAQCB3YWl0X3VudGlsX2Nvbm5lY3RlZChQR2Nvbm4gKmNvbm4pCiAJCSAq IFRoZSBzZWxmLXBpcGUgdHJpY2sgcmVxdWlyZXMgYSBiaXQgb2YgY29kZSB0byBzZXR1cC4g cHNlbGVjdCgyKSBhbmQKIAkJICogcHBvbGwoMikgYXJlIG5vdCBvbiBhbGwgdGhlIHBsYXRm b3JtcyB3ZSBzdXBwb3J0LiBUaGUgc2ltcGxlc3QKIAkJICogc29sdXRpb24gaGFwcGVucyB0 byBqdXN0IGJlIGFkZGluZyBhIHRpbWVvdXQsIHNvIGxldCdzIHdhaXQgZm9yIDEKLQkJICog c2Vjb25kIGFuZCBjaGVjayBjYW5jZWxfcHJlc3NlZCBhZ2Fpbi4KKwkJICogc2Vjb25kIGFu ZCBjaGVjayBDYW5jZWxSZXF1ZXN0ZWQgYWdhaW4uCiAJCSAqLwogCQllbmRfdGltZSA9IFBR Z2V0Q3VycmVudFRpbWVVU2VjKCkgKyAxMDAwMDAwOwogCQlyYyA9IFBRc29ja2V0UG9sbChz b2NrLCBmb3JSZWFkLCAhZm9yUmVhZCwgZW5kX3RpbWUpOwpAQCAtNjA4Miw3ICs2MDgyLDcg QEAgZG9fd2F0Y2goUFFFeHBCdWZmZXIgcXVlcnlfYnVmLCBkb3VibGUgc2xlZXAsIGludCBp dGVyLCBpbnQgbWluX3Jvd3MpCiAJCQlsb25nCQlzID0gTWluKGksIDEwMDBMKTsKIAogCQkJ cGdfdXNsZWVwKHMgKiAxMDAwTCk7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlpZiAo Q2FuY2VsUmVxdWVzdGVkKQogCQkJewogCQkJCWRvbmUgPSB0cnVlOwogCQkJCWJyZWFrOwpA QCAtNjA5Miw3ICs2MDkyLDcgQEAgZG9fd2F0Y2goUFFFeHBCdWZmZXIgcXVlcnlfYnVmLCBk b3VibGUgc2xlZXAsIGludCBpdGVyLCBpbnQgbWluX3Jvd3MpCiAjZWxzZQogCQkvKiBzaWd3 YWl0KCkgd2lsbCBoYW5kbGUgU0lHSU5ULiAqLwogCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ss ICZzaWdpbnQsIE5VTEwpOwotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxS ZXF1ZXN0ZWQpCiAJCQlkb25lID0gdHJ1ZTsKIAogCQkvKiBXYWl0IGZvciBTSUdJTlQsIFNJ R0NITEQgb3IgU0lHQUxSTS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24u YyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCA3ZGI4MDI1ZDI0Yy4uNzIxZjg3MzNh NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3Bz cWwvY29tbW9uLmMKQEAgLTI5Miw3ICsyOTIsNyBAQCBOb3RpY2VQcm9jZXNzb3Iodm9pZCAq YXJnLCBjb25zdCBjaGFyICptZXNzYWdlKQogICoKICAqIFNJR0lOVCBpcyBzdXBwb3NlZCB0 byBhYm9ydCBhbGwgbG9uZy1ydW5uaW5nIHBzcWwgb3BlcmF0aW9ucywgbm90IG9ubHkKICAq IGRhdGFiYXNlIHF1ZXJpZXMuICBJbiBtb3N0IHBsYWNlcywgdGhpcyBpcyBhY2NvbXBsaXNo ZWQgYnkgY2hlY2tpbmcKLSAqIGNhbmNlbF9wcmVzc2VkIGR1cmluZyBsb25nLXJ1bm5pbmcg bG9vcHMuICBIb3dldmVyLCB0aGF0IHdvbid0IHdvcmsgd2hlbgorICogQ2FuY2VsUmVxdWVz dGVkIGR1cmluZyBsb25nLXJ1bm5pbmcgbG9vcHMuICBIb3dldmVyLCB0aGF0IHdvbid0IHdv cmsgd2hlbgogICogYmxvY2tlZCBvbiB1c2VyIGlucHV0IChpbiByZWFkbGluZSgpIG9yIGZn ZXRzKCkpLiAgSW4gdGhvc2UgcGxhY2VzLCB3ZQogICogc2V0IHNpZ2ludF9pbnRlcnJ1cHRf ZW5hYmxlZCB0cnVlIHdoaWxlIGJsb2NrZWQsIGluc3RydWN0aW5nIHRoZSBzaWduYWwKICAq IGNhdGNoZXIgdG8gbG9uZ2ptcCB0aHJvdWdoIHNpZ2ludF9pbnRlcnJ1cHRfam1wLiAgV2Ug YXNzdW1lIHJlYWRsaW5lIGFuZApAQCAtMzE2LDkgKzMxNiw2IEBAIHBzcWxfY2FuY2VsX2Nh bGxiYWNrKHZvaWQpCiAJCXNpZ2xvbmdqbXAoc2lnaW50X2ludGVycnVwdF9qbXAsIDEpOwog CX0KICNlbmRpZgotCi0JLyogZWxzZSwgc2V0IGNhbmNlbCBmbGFnIHRvIHN0b3AgYW55IGxv bmctcnVubmluZyBsb29wcyAqLwotCWNhbmNlbF9wcmVzc2VkID0gdHJ1ZTsKIH0KIAogdm9p ZApAQCAtODgxLDggKzg3OCw4IEBAIEV4ZWNRdWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAq cmVzdWx0KQogCQkJewogCQkJCWNvbnN0IGNoYXIgKnF1ZXJ5ID0gUFFnZXR2YWx1ZShyZXN1 bHQsIHIsIGMpOwogCi0JCQkJLyogQWJhbmRvbiBleGVjdXRpb24gaWYgY2FuY2VsX3ByZXNz ZWQgKi8KLQkJCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQkJLyogQWJhbmRvbiBleGVjdXRp b24gaWYgQ2FuY2VsUmVxdWVzdGVkICovCisJCQkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJ CQkJZ290byBsb29wX2V4aXQ7CiAKIAkJCQkvKgpAQCAtMTE0Niw3ICsxMTQzLDcgQEAgU2Vu ZFF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5KQogCQlpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVm KSwgc3RkaW4pICE9IE5VTEwpCiAJCQlpZiAoYnVmWzBdID09ICd4JykKIAkJCQlnb3RvIHNl bmRxdWVyeV9jbGVhbnVwOwotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxS ZXF1ZXN0ZWQpCiAJCQlnb3RvIHNlbmRxdWVyeV9jbGVhbnVwOwogCX0KIAllbHNlIGlmIChw c2V0LmVjaG8gPT0gUFNRTF9FQ0hPX1FVRVJJRVMpCkBAIC0xNzY4LDcgKzE3NjUsNyBAQCBF eGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAkgKiBjb25z dW1lZC4gIFRoZSB1c2VyJ3MgaW50ZW50aW9uLCB0aG91Z2gsIGlzIHRvIGNhbmNlbCB0aGUg ZW50aXJlIHdhdGNoCiAJICogcHJvY2Vzcywgc28gZGV0ZWN0IGEgc2VudCBjYW5jZWxsYXRp b24gcmVxdWVzdCBhbmQgZXhpdCBpbiB0aGlzIGNhc2UuCiAJICovCi0JaWYgKGlzX3dhdGNo ICYmIGNhbmNlbF9wcmVzc2VkKQorCWlmIChpc193YXRjaCAmJiBDYW5jZWxSZXF1ZXN0ZWQp CiAJewogCQlDbGVhck9yU2F2ZUFsbFJlc3VsdHMoKTsKIAkJcmV0dXJuIDA7CkBAIC0xOTg2 LDcgKzE5ODMsNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpx dWVyeSwKIAkJCQkgKiB1c2Ugb2YgY2h1bmtpbmcgZm9yIGFsbCBjYXNlcyBpbiB3aGljaCBQ cmludFF1ZXJ5UmVzdWx0CiAJCQkJICogd291bGQgc2VuZCB0aGUgcmVzdWx0IHRvIHNvbWVw bGFjZSBvdGhlciB0aGFuIHByaW50UXVlcnkuCiAJCQkJICovCi0JCQkJaWYgKHN1Y2Nlc3Mg JiYgIWZsdXNoX2Vycm9yICYmICFjYW5jZWxfcHJlc3NlZCkKKwkJCQlpZiAoc3VjY2VzcyAm JiAhZmx1c2hfZXJyb3IgJiYgIUNhbmNlbFJlcXVlc3RlZCkKIAkJCQl7CiAJCQkJCXByaW50 UXVlcnkocmVzdWx0LCAmbXlfcG9wdCwgdHVwbGVzX2ZvdXQsIGlzX3BhZ2VyLCBwc2V0Lmxv Z2ZpbGUpOwogCQkJCQlmbHVzaF9lcnJvciA9IGZmbHVzaCh0dXBsZXNfZm91dCk7CkBAIC0y MDEzLDcgKzIwMTAsNyBAQCBFeGVjUXVlcnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFy ICpxdWVyeSwKIAkJCQlBc3NlcnQoUFFudHVwbGVzKHJlc3VsdCkgPT0gMCk7CiAKIAkJCQkv KiBEaXNwbGF5IHRoZSBmb290ZXIgdXNpbmcgdGhlIGVtcHR5IHJlc3VsdCAqLwotCQkJCWlm IChzdWNjZXNzICYmICFmbHVzaF9lcnJvciAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCQkJaWYg KHN1Y2Nlc3MgJiYgIWZsdXNoX2Vycm9yICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCQkJewog CQkJCQlteV9wb3B0LnRvcHQuc3RvcF90YWJsZSA9IHRydWU7CiAJCQkJCXByaW50UXVlcnko cmVzdWx0LCAmbXlfcG9wdCwgdHVwbGVzX2ZvdXQsIGlzX3BhZ2VyLCBwc2V0LmxvZ2ZpbGUp OwpAQCAtMjE3Miw3ICsyMTY5LDcgQEAgRXhlY1F1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMoY29u c3QgY2hhciAqcXVlcnksCiAJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7CiAJCXJlc3Vs dCA9IG5leHRfcmVzdWx0OwogCi0JCWlmIChjYW5jZWxfcHJlc3NlZCAmJiBQUXBpcGVsaW5l U3RhdHVzKHBzZXQuZGIpID09IFBRX1BJUEVMSU5FX09GRikKKwkJaWYgKENhbmNlbFJlcXVl c3RlZCAmJiBQUXBpcGVsaW5lU3RhdHVzKHBzZXQuZGIpID09IFBRX1BJUEVMSU5FX09GRikK IAkJewogCQkJLyoKIAkJCSAqIE91dHNpZGUgb2YgYSBwaXBlbGluZSwgZHJvcCB0aGUgbmV4 dCByZXN1bHQsIGFzIHdlbGwgYXMgYW55CkBAIC0yMjI5LDcgKzIyMjYsNyBAQCBFeGVjUXVl cnlBbmRQcm9jZXNzUmVzdWx0cyhjb25zdCBjaGFyICpxdWVyeSwKIAlpZiAoIUNoZWNrQ29u bmVjdGlvbigpKQogCQlyZXR1cm4gLTE7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQgfHwgcmV0 dXJuX2Vhcmx5KQorCWlmIChDYW5jZWxSZXF1ZXN0ZWQgfHwgcmV0dXJuX2Vhcmx5KQogCQly ZXR1cm4gMDsKIAogCXJldHVybiBzdWNjZXNzID8gMSA6IC0xOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBm ZWY4NmI0Y2NhMy4uZWZmNzM0MDA0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0zMiw2ICszMiw3IEBA CiAjaW5jbHVkZSAiY29tbW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNp bmNsdWRlICJkZXNjcmliZS5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2NhbmNlbC5oIgogI2lu Y2x1ZGUgImZlX3V0aWxzL21icHJpbnQuaCIKICNpbmNsdWRlICJmZV91dGlscy9wcmludC5o IgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgpAQCAtMTUxMiw3ICsxNTEz LDcgQEAgZGVzY3JpYmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pCiAJCQlQUWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KLQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQlpZiAoQ2FuY2VsUmVxdWVz dGVkKQogCQl7CiAJCQlQUWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4gZmFsc2U7CkBAIC01NDk4 LDcgKzU0OTksNyBAQCBsaXN0VFNQYXJzZXJzVmVyYm9zZShjb25zdCBjaGFyICpwYXR0ZXJu KQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQlp ZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQl7CiAJCQlQUWNsZWFyKHJlcyk7CiAJCQlyZXR1cm4g ZmFsc2U7CkBAIC01ODg4LDcgKzU4ODksNyBAQCBsaXN0VFNDb25maWdzVmVyYm9zZShjb25z dCBjaGFyICpwYXR0ZXJuKQogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKLQkJaWYgKGNhbmNl bF9wcmVzc2VkKQorCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQl7CiAJCQlQUWNsZWFyKHJl cyk7CiAJCQlyZXR1cm4gZmFsc2U7CkBAIC02MzY3LDcgKzYzNjgsNyBAQCBsaXN0RXh0ZW5z aW9uQ29udGVudHMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCVBRY2xlYXIocmVzKTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5j ZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9tYWlubG9vcC5jIGIvc3JjL2Jpbi9wc3FsL21h aW5sb29wLmMKaW5kZXggMWY0MDlhNTczYjcuLmUzMGViNjEzNjE4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvbWFpbmxvb3AuYworKysgYi9zcmMvYmluL3BzcWwvbWFpbmxvb3AuYwpA QCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgImNvbW1hbmQuaCIKICNpbmNsdWRlICJjb21t b24uaCIKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2NhbmNlbC5oIgogI2luY2x1ZGUgImlucHV0LmgiCiAjaW5jbHVkZSAibWFpbmxvb3AuaCIK ICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtODUsNyArODYsNyBAQCBNYWluTG9vcChG SUxFICpzb3VyY2UpCiAJCS8qCiAJCSAqIENsZWFuIHVwIGFmdGVyIGEgcHJldmlvdXMgQ29u dHJvbC1DCiAJCSAqLwotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxSZXF1 ZXN0ZWQpCiAJCXsKIAkJCWlmICghcHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQkJewpA QCAtOTYsNyArOTcsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCQkJYnJlYWs7CiAJ CQl9CiAKLQkJCWNhbmNlbF9wcmVzc2VkID0gZmFsc2U7CisJCQlDYW5jZWxSZXF1ZXN0ZWQg PSBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0xMTgsNyArMTE5LDcgQEAgTWFpbkxvb3AoRklM RSAqc291cmNlKQogCQkJcHJvbXB0X3N0YXR1cyA9IFBST01QVF9SRUFEWTsKIAkJCW5lZWRf cmVkaXNwbGF5ID0gZmFsc2U7CiAJCQlwc2V0LnN0bXRfbGluZW5vID0gMTsKLQkJCWNhbmNl bF9wcmVzc2VkID0gZmFsc2U7CisJCQlDYW5jZWxSZXF1ZXN0ZWQgPSBmYWxzZTsKIAogCQkJ aWYgKHBzZXQuY3VyX2NtZF9pbnRlcmFjdGl2ZSkKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC92YXJpYWJsZXMuYyBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYwppbmRleCA4 MDYwZjI5NTljYy4uNzFlZWFmZDAzOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC92YXJp YWJsZXMuYworKysgYi9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKQEAgLTExLDYgKzExLDcg QEAKIAogI2luY2x1ZGUgImNvbW1vbi5oIgogI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgi CisjaW5jbHVkZSAiZmVfdXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAidmFyaWFibGVzLmgi CiAKIC8qCkBAIC0yNjUsNyArMjY2LDcgQEAgUHJpbnRWYXJpYWJsZXMoVmFyaWFibGVTcGFj ZSBzcGFjZSkKIAl7CiAJCWlmIChwdHItPnZhbHVlKQogCQkJcHJpbnRmKCIlcyA9ICclcydc biIsIHB0ci0+bmFtZSwgcHRyLT52YWx1ZSk7Ci0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJ aWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCWJyZWFrOwogCX0KIH0KZGlmZiAtLWdpdCBhL3Ny Yy9mZV91dGlscy9wcmludC5jIGIvc3JjL2ZlX3V0aWxzL3ByaW50LmMKaW5kZXggYWNmMjBj YjQ5OGIuLjk0ZDAwODY1YzE3IDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvcHJpbnQuYwor KysgYi9zcmMvZmVfdXRpbHMvcHJpbnQuYwpAQCAtNCw3ICs0LDcgQEAKICAqCiAgKiBUaGlz IGZpbGUgdXNlZCB0byBiZSBwYXJ0IG9mIHBzcWwsIGJ1dCBub3cgaXQncyBzZXBhcmF0ZWQg b3V0IHRvIGFsbG93CiAgKiBvdGhlciBmcm9udGVuZCBwcm9ncmFtcyB0byB1c2UgaXQuICBC ZWNhdXNlIHRoZSBwcmludGluZyBjb2RlIG5lZWRzCi0gKiBhY2Nlc3MgdG8gdGhlIGNhbmNl bF9wcmVzc2VkIGZsYWcgYXMgd2VsbCBhcyBTSUdQSVBFIHRyYXBwaW5nIGFuZAorICogYWNj ZXNzIHRvIHRoZSBDYW5jZWxSZXF1ZXN0ZWQgZmxhZyBhcyB3ZWxsIGFzIFNJR1BJUEUgdHJh cHBpbmcgYW5kCiAgKiBwYWdlciBvcGVuL2Nsb3NlIGZ1bmN0aW9ucywgYWxsIHRoYXQgc3R1 ZmYgY2FtZSB3aXRoIGl0LgogICoKICAqCkBAIC0zMCw2ICszMCw3IEBACiAjZW5kaWYKIAog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvY2Fu Y2VsLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvbWJwcmludC5oIgogI2luY2x1ZGUgImZlX3V0 aWxzL3ByaW50LmgiCiAKQEAgLTM5LDEzICs0MCw5IEBACiAjZW5kaWYKIAogLyoKLSAqIElm IHRoZSBjYWxsaW5nIHByb2dyYW0gZG9lc24ndCBoYXZlIGFueSBtZWNoYW5pc20gZm9yIHNl dHRpbmcKLSAqIGNhbmNlbF9wcmVzc2VkLCBpdCB3aWxsIGhhdmUgbm8gZWZmZWN0LgotICoK LSAqIE5vdGU6IHByaW50LmMncyBnZW5lcmFsIHN0cmF0ZWd5IGZvciB3aGVuIHRvIGNoZWNr IGNhbmNlbF9wcmVzc2VkIGlzIHRvIGRvCisgKiBOb3RlOiBwcmludC5jJ3MgZ2VuZXJhbCBz dHJhdGVneSBmb3Igd2hlbiB0byBjaGVjayBDYW5jZWxSZXF1ZXN0ZWQgaXMgdG8gZG8KICAq IHNvIGF0IGNvbXBsZXRpb24gb2YgZWFjaCByb3cgb2Ygb3V0cHV0LgogICovCi12b2xhdGls ZSBzaWdfYXRvbWljX3QgY2FuY2VsX3ByZXNzZWQgPSBmYWxzZTsKIAogc3RhdGljIGJvb2wg YWx3YXlzX2lnbm9yZV9zaWdwaXBlID0gZmFsc2U7CiAKQEAgLTQ0Miw3ICs0MzksNyBAQCBw cmludF91bmFsaWduZWRfdGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklM RSAqZm91dCkKIAljb25zdCBjaGFyICpjb25zdCAqcHRyOwogCWJvb2wJCW5lZWRfcmVjb3Jk c2VwID0gZmFsc2U7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVl c3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUpCkBAIC00 NzcsNyArNDc0LDcgQEAgcHJpbnRfdW5hbGlnbmVkX3RleHQoY29uc3QgcHJpbnRUYWJsZUNv bnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCXsKIAkJCXByaW50X3NlcGFyYXRvcihjb250 LT5vcHQtPnJlY29yZFNlcCwgZm91dCk7CiAJCQluZWVkX3JlY29yZHNlcCA9IGZhbHNlOwot CQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCQli cmVhazsKIAkJfQogCQlmcHV0cygqcHRyLCBmb3V0KTsKQEAgLTQ5Myw3ICs0OTAsNyBAQCBw cmludF91bmFsaWduZWRfdGV4dChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklM RSAqZm91dCkKIAl7CiAJCXByaW50VGFibGVGb290ZXIgKmZvb3RlcnMgPSBmb290ZXJzX3dp dGhfZGVmYXVsdChjb250KTsKIAotCQlpZiAoIW9wdF90dXBsZXNfb25seSAmJiBmb290ZXJz ICE9IE5VTEwgJiYgIWNhbmNlbF9wcmVzc2VkKQorCQlpZiAoIW9wdF90dXBsZXNfb25seSAm JiBmb290ZXJzICE9IE5VTEwgJiYgIUNhbmNlbFJlcXVlc3RlZCkKIAkJewogCQkJcHJpbnRU YWJsZUZvb3RlciAqZjsKIApAQCAtNTMzLDcgKzUzMCw3IEBAIHByaW50X3VuYWxpZ25lZF92 ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAlj b25zdCBjaGFyICpjb25zdCAqcHRyOwogCWJvb2wJCW5lZWRfcmVjb3Jkc2VwID0gZmFsc2U7 CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJcmV0 dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUpCkBAIC01NTgsNyArNTU1LDcg QEAgcHJpbnRfdW5hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpj b250LCBGSUxFICpmb3V0KQogCQkJcHJpbnRfc2VwYXJhdG9yKGNvbnQtPm9wdC0+cmVjb3Jk U2VwLCBmb3V0KTsKIAkJCXByaW50X3NlcGFyYXRvcihjb250LT5vcHQtPnJlY29yZFNlcCwg Zm91dCk7CiAJCQluZWVkX3JlY29yZHNlcCA9IGZhbHNlOwotCQkJaWYgKGNhbmNlbF9wcmVz c2VkKQorCQkJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJCQlicmVhazsKIAkJfQogCkBAIC01 NzUsNyArNTcyLDcgQEAgcHJpbnRfdW5hbGlnbmVkX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFi bGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCWlmIChjb250LT5vcHQtPnN0b3BfdGFi bGUpCiAJewogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0X3R1cGxlc19vbmx5 ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCWlmICgh b3B0X3R1cGxlc19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhQ2FuY2VsUmVx dWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC02ODMsNyArNjgw LDcgQEAgcHJpbnRfYWxpZ25lZF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250 LCBGSUxFICpmb3V0LCBib29sIGlzX3BhZ2VyKQogCWludAkJCW91dHB1dF9jb2x1bW5zID0g MDsgLyogV2lkdGggb2YgaW50ZXJhY3RpdmUgY29uc29sZSAqLwogCWJvb2wJCWlzX2xvY2Fs X3BhZ2VyID0gZmFsc2U7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJl cXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKG9wdF9ib3JkZXIgPiAyKQpAQCAtMTAwNCw3 ICsxMDAxLDcgQEAgcHJpbnRfYWxpZ25lZF90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50 ICpjb250LCBGSUxFICpmb3V0LCBib29sIGlzX3BhZ2VyKQogCXsKIAkJYm9vbAkJbW9yZV9s aW5lczsKIAotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxSZXF1ZXN0ZWQp CiAJCQlicmVhazsKIAogCQkvKgpAQCAtMTE2MCwxMiArMTE1NywxMiBAQCBwcmludF9hbGln bmVkX3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQsIGJv b2wgaXNfcGFnZXIpCiAJewogCQlwcmludFRhYmxlRm9vdGVyICpmb290ZXJzID0gZm9vdGVy c193aXRoX2RlZmF1bHQoY29udCk7CiAKLQkJaWYgKG9wdF9ib3JkZXIgPT0gMiAmJiAhY2Fu Y2VsX3ByZXNzZWQpCisJCWlmIChvcHRfYm9yZGVyID09IDIgJiYgIUNhbmNlbFJlcXVlc3Rl ZCkKIAkJCV9wcmludF9ob3Jpem9udGFsX2xpbmUoY29sX2NvdW50LCB3aWR0aF93cmFwLCBv cHRfYm9yZGVyLAogCQkJCQkJCQkgICBQUklOVF9SVUxFX0JPVFRPTSwgZm9ybWF0LCBmb3V0 KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmIChmb290ZXJzICYmICFvcHRfdHVw bGVzX29ubHkgJiYgIWNhbmNlbF9wcmVzc2VkKQorCQlpZiAoZm9vdGVycyAmJiAhb3B0X3R1 cGxlc19vbmx5ICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsKIAkJCXByaW50VGFibGVGb290 ZXIgKmY7CiAKQEAgLTEzMjUsNyArMTMyMiw3IEBAIHByaW50X2FsaWduZWRfdmVydGljYWwo Y29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsCiAJCQkJZG11bHRpbGluZSA9IGZhbHNl OwogCWludAkJCW91dHB1dF9jb2x1bW5zID0gMDsgLyogV2lkdGggb2YgaW50ZXJhY3RpdmUg Y29uc29sZSAqLwogCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxSZXF1ZXN0 ZWQpCiAJCXJldHVybjsKIAogCWlmIChvcHRfYm9yZGVyID4gMikKQEAgLTEzNDEsNyArMTMz OCw3IEBAIHByaW50X2FsaWduZWRfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQg KmNvbnQsCiAJewogCQlwcmludFRhYmxlRm9vdGVyICpmb290ZXJzID0gZm9vdGVyc193aXRo X2RlZmF1bHQoY29udCk7CiAKLQkJaWYgKCFvcHRfdHVwbGVzX29ubHkgJiYgIWNhbmNlbF9w cmVzc2VkICYmIGZvb3RlcnMpCisJCWlmICghb3B0X3R1cGxlc19vbmx5ICYmICFDYW5jZWxS ZXF1ZXN0ZWQgJiYgZm9vdGVycykKIAkJewogCQkJcHJpbnRUYWJsZUZvb3RlciAqZjsKIApA QCAtMTU5Nyw3ICsxNTk0LDcgQEAgcHJpbnRfYWxpZ25lZF92ZXJ0aWNhbChjb25zdCBwcmlu dFRhYmxlQ29udGVudCAqY29udCwKIAkJCQkJb2Zmc2V0LAogCQkJCQljaGFyc190b19vdXRw dXQ7CiAKLQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQog CQkJYnJlYWs7CiAKIAkJaWYgKGkgPT0gMCkKQEAgLTE4MDYsMTIgKzE4MDMsMTIgQEAgcHJp bnRfYWxpZ25lZF92ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwKIAog CWlmIChjb250LT5vcHQtPnN0b3BfdGFibGUpCiAJewotCQlpZiAob3B0X2JvcmRlciA9PSAy ICYmICFjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKG9wdF9ib3JkZXIgPT0gMiAmJiAhQ2FuY2Vs UmVxdWVzdGVkKQogCQkJcHJpbnRfYWxpZ25lZF92ZXJ0aWNhbF9saW5lKGNvbnQtPm9wdCwg MCwgaHdpZHRoLCBkd2lkdGgsCiAJCQkJCQkJCQkJb3V0cHV0X2NvbHVtbnMsIFBSSU5UX1JV TEVfQk9UVE9NLCBmb3V0KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0 X3R1cGxlc19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNz ZWQpCisJCWlmICghb3B0X3R1cGxlc19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAm JiAhQ2FuY2VsUmVxdWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBA IC0xODg1LDcgKzE4ODIsNyBAQCBwcmludF9jc3ZfdGV4dChjb25zdCBwcmludFRhYmxlQ29u dGVudCAqY29udCwgRklMRSAqZm91dCkKIAljb25zdCBjaGFyICpjb25zdCAqcHRyOwogCWlu dAkJCWk7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkK IAkJcmV0dXJuOwogCiAJLyoKQEAgLTE5MjgsNyArMTkyNSw3IEBAIHByaW50X2Nzdl92ZXJ0 aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkvKiBw cmludCByZWNvcmRzICovCiAJZm9yIChpID0gMCwgcHRyID0gY29udC0+Y2VsbHM7ICpwdHI7 IGkrKywgcHRyKyspCiAJewotCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCWlmIChDYW5jZWxS ZXF1ZXN0ZWQpCiAJCQlyZXR1cm47CiAKIAkJLyogcHJpbnQgbmFtZSBvZiBjb2x1bW4gKi8K QEAgLTIwMDEsNyArMTk5OCw3IEBAIHByaW50X2h0bWxfdGV4dChjb25zdCBwcmludFRhYmxl Q29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAl1bnNpZ25lZCBpbnQgaTsKIAljb25zdCBj aGFyICpjb25zdCAqcHRyOwogCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxS ZXF1ZXN0ZWQpCiAJCXJldHVybjsKIAogCWlmIChjb250LT5vcHQtPnN0YXJ0X3RhYmxlKQpA QCAtMjAzOCw3ICsyMDM1LDcgQEAgcHJpbnRfaHRtbF90ZXh0KGNvbnN0IHByaW50VGFibGVD b250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCXsKIAkJaWYgKGkgJSBjb250LT5uY29sdW1u cyA9PSAwKQogCQl7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlpZiAoQ2FuY2VsUmVx dWVzdGVkKQogCQkJCWJyZWFrOwogCQkJZnB1dHMoIiAgPHRyIHZhbGlnbj1cInRvcFwiPlxu IiwgZm91dCk7CiAJCX0KQEAgLTIwNjMsNyArMjA2MCw3IEBAIHByaW50X2h0bWxfdGV4dChj b25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJZnB1dHMoIjwv dGFibGU+XG4iLCBmb3V0KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0 X3R1cGxlc19vbmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJ CWlmICghb3B0X3R1cGxlc19vbmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhQ2FuY2VsUmVx dWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yMDkxLDcgKzIw ODgsNyBAQCBwcmludF9odG1sX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpj b250LCBGSUxFICpmb3V0KQogCXVuc2lnbmVkIGludCBpOwogCWNvbnN0IGNoYXIgKmNvbnN0 ICpwdHI7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkK IAkJcmV0dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUpCkBAIC0yMTE1LDcg KzIxMTIsNyBAQCBwcmludF9odG1sX3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50 ICpjb250LCBGSUxFICpmb3V0KQogCXsKIAkJaWYgKGkgJSBjb250LT5uY29sdW1ucyA9PSAw KQogCQl7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlpZiAoQ2FuY2VsUmVxdWVzdGVk KQogCQkJCWJyZWFrOwogCQkJaWYgKCFvcHRfdHVwbGVzX29ubHkpCiAJCQkJZnByaW50Zihm b3V0LApAQCAtMjE0NCw3ICsyMTQxLDcgQEAgcHJpbnRfaHRtbF92ZXJ0aWNhbChjb25zdCBw cmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJZnB1dHMoIjwvdGFibGU+ XG4iLCBmb3V0KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0X3R1cGxl c19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJ CWlmICghb3B0X3R1cGxlc19vbmx5ICYmIGNvbnQtPmZvb3RlcnMgIT0gTlVMTCAmJiAhQ2Fu Y2VsUmVxdWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yMTkz LDcgKzIxOTAsNyBAQCBwcmludF9hc2NpaWRvY190ZXh0KGNvbnN0IHByaW50VGFibGVDb250 ZW50ICpjb250LCBGSUxFICpmb3V0KQogCXVuc2lnbmVkIGludCBpOwogCWNvbnN0IGNoYXIg KmNvbnN0ICpwdHI7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVl c3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+c3RhcnRfdGFibGUpCkBAIC0y MjUyLDcgKzIyNDksNyBAQCBwcmludF9hc2NpaWRvY190ZXh0KGNvbnN0IHByaW50VGFibGVD b250ZW50ICpjb250LCBGSUxFICpmb3V0KQogCXsKIAkJaWYgKGkgJSBjb250LT5uY29sdW1u cyA9PSAwKQogCQl7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlpZiAoQ2FuY2VsUmVx dWVzdGVkKQogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTIyODAsNyArMjI3Nyw3IEBAIHByaW50 X2FzY2lpZG9jX3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZv dXQpCiAJCXByaW50VGFibGVGb290ZXIgKmZvb3RlcnMgPSBmb290ZXJzX3dpdGhfZGVmYXVs dChjb250KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmICghb3B0X3R1cGxlc19v bmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhY2FuY2VsX3ByZXNzZWQpCisJCWlmICghb3B0 X3R1cGxlc19vbmx5ICYmIGZvb3RlcnMgIT0gTlVMTCAmJiAhQ2FuY2VsUmVxdWVzdGVkKQog CQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yMzA0LDcgKzIzMDEsNyBAQCBw cmludF9hc2NpaWRvY192ZXJ0aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwg RklMRSAqZm91dCkKIAl1bnNpZ25lZCBpbnQgaTsKIAljb25zdCBjaGFyICpjb25zdCAqcHRy OwogCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCXJl dHVybjsKIAogCWlmIChjb250LT5vcHQtPnN0YXJ0X3RhYmxlKQpAQCAtMjM0Myw3ICsyMzQw LDcgQEAgcHJpbnRfYXNjaWlkb2NfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQg KmNvbnQsIEZJTEUgKmZvdXQpCiAJewogCQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5zID09IDAp CiAJCXsKLQkJCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0ZWQp CiAJCQkJYnJlYWs7CiAJCQlpZiAoIW9wdF90dXBsZXNfb25seSkKIAkJCQlmcHJpbnRmKGZv dXQsCkBAIC0yMzcwLDcgKzIzNjcsNyBAQCBwcmludF9hc2NpaWRvY192ZXJ0aWNhbChjb25z dCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAlpZiAoY29udC0+b3B0 LT5zdG9wX3RhYmxlKQogCXsKIAkJLyogcHJpbnQgZm9vdGVycyAqLwotCQlpZiAoIW9wdF90 dXBsZXNfb25seSAmJiBjb250LT5mb290ZXJzICE9IE5VTEwgJiYgIWNhbmNlbF9wcmVzc2Vk KQorCQlpZiAoIW9wdF90dXBsZXNfb25seSAmJiBjb250LT5mb290ZXJzICE9IE5VTEwgJiYg IUNhbmNlbFJlcXVlc3RlZCkKIAkJewogCQkJcHJpbnRUYWJsZUZvb3RlciAqZjsKIApAQCAt MjQ2MSw3ICsyNDU4LDcgQEAgcHJpbnRfbGF0ZXhfdGV4dChjb25zdCBwcmludFRhYmxlQ29u dGVudCAqY29udCwgRklMRSAqZm91dCkKIAl1bnNpZ25lZCBpbnQgaTsKIAljb25zdCBjaGFy ICpjb25zdCAqcHRyOwogCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxSZXF1 ZXN0ZWQpCiAJCXJldHVybjsKIAogCWlmIChvcHRfYm9yZGVyID4gMykKQEAgLTI1MjIsNyAr MjUxOSw3IEBAIHByaW50X2xhdGV4X3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNv bnQsIEZJTEUgKmZvdXQpCiAJCQlmcHV0cygiIFxcXFxcbiIsIGZvdXQpOwogCQkJaWYgKG9w dF9ib3JkZXIgPT0gMykKIAkJCQlmcHV0cygiXFxobGluZVxuIiwgZm91dCk7Ci0JCQlpZiAo Y2FuY2VsX3ByZXNzZWQpCisJCQlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJCWJyZWFrOwog CQl9CiAJCWVsc2UKQEAgLTI1MzksNyArMjUzNiw3IEBAIHByaW50X2xhdGV4X3RleHQoY29u c3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCWZwdXRzKCJcXGVu ZHt0YWJ1bGFyfVxuXG5cXG5vaW5kZW50ICIsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3Rl cnMgKi8KLQkJaWYgKGZvb3RlcnMgJiYgIW9wdF90dXBsZXNfb25seSAmJiAhY2FuY2VsX3By ZXNzZWQpCisJCWlmIChmb290ZXJzICYmICFvcHRfdHVwbGVzX29ubHkgJiYgIUNhbmNlbFJl cXVlc3RlZCkKIAkJewogCQkJcHJpbnRUYWJsZUZvb3RlciAqZjsKIApAQCAtMjU3MSw3ICsy NTY4LDcgQEAgcHJpbnRfbGF0ZXhfbG9uZ3RhYmxlX3RleHQoY29uc3QgcHJpbnRUYWJsZUNv bnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJY29uc3QgY2hhciAqbGFzdF9vcHRfdGFibGVf YXR0cl9jaGFyID0gTlVMTDsKIAljb25zdCBjaGFyICpjb25zdCAqcHRyOwogCi0JaWYgKGNh bmNlbF9wcmVzc2VkKQorCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCXJldHVybjsKIAogCWlm IChvcHRfYm9yZGVyID4gMykKQEAgLTI3MDcsNyArMjcwNCw3IEBAIHByaW50X2xhdGV4X2xv bmd0YWJsZV90ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0 KQogCQkJaWYgKG9wdF9ib3JkZXIgPT0gMykKIAkJCQlmcHV0cygiIFxcaGxpbmVcbiIsIGZv dXQpOwogCQl9Ci0JCWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJaWYgKENhbmNlbFJlcXVlc3Rl ZCkKIAkJCWJyZWFrOwogCX0KIApAQCAtMjcyNSw3ICsyNzIyLDcgQEAgcHJpbnRfbGF0ZXhf dmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJ dW5zaWduZWQgaW50IGk7CiAJY29uc3QgY2hhciAqY29uc3QgKnB0cjsKIAotCWlmIChjYW5j ZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47CiAKIAlpZiAo b3B0X2JvcmRlciA+IDIpCkBAIC0yNzU4LDcgKzI3NTUsNyBAQCBwcmludF9sYXRleF92ZXJ0 aWNhbChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJLyog bmV3IHJlY29yZCAqLwogCQlpZiAoaSAlIGNvbnQtPm5jb2x1bW5zID09IDApCiAJCXsKLQkJ CWlmIChjYW5jZWxfcHJlc3NlZCkKKwkJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCQkJYnJl YWs7CiAJCQlpZiAoIW9wdF90dXBsZXNfb25seSkKIAkJCXsKQEAgLTI3ODgsNyArMjc4NSw3 IEBAIHByaW50X2xhdGV4X3ZlcnRpY2FsKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250 LCBGSUxFICpmb3V0KQogCQlmcHV0cygiXFxlbmR7dGFidWxhcn1cblxuXFxub2luZGVudCAi LCBmb3V0KTsKIAogCQkvKiBwcmludCBmb290ZXJzICovCi0JCWlmIChjb250LT5mb290ZXJz ICYmICFvcHRfdHVwbGVzX29ubHkgJiYgIWNhbmNlbF9wcmVzc2VkKQorCQlpZiAoY29udC0+ Zm9vdGVycyAmJiAhb3B0X3R1cGxlc19vbmx5ICYmICFDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsK IAkJCXByaW50VGFibGVGb290ZXIgKmY7CiAKQEAgLTI4MzQsNyArMjgzMSw3IEBAIHByaW50 X3Ryb2ZmX21zX3RleHQoY29uc3QgcHJpbnRUYWJsZUNvbnRlbnQgKmNvbnQsIEZJTEUgKmZv dXQpCiAJdW5zaWduZWQgaW50IGk7CiAJY29uc3QgY2hhciAqY29uc3QgKnB0cjsKIAotCWlm IChjYW5jZWxfcHJlc3NlZCkKKwlpZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQlyZXR1cm47CiAK IAlpZiAob3B0X2JvcmRlciA+IDIpCkBAIC0yODg4LDcgKzI4ODUsNyBAQCBwcmludF90cm9m Zl9tc190ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxFICpmb3V0KQog CQlpZiAoKGkgKyAxKSAlIGNvbnQtPm5jb2x1bW5zID09IDApCiAJCXsKIAkJCWZwdXRjKCdc bicsIGZvdXQpOwotCQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQkJaWYgKENhbmNlbFJlcXVl c3RlZCkKIAkJCQlicmVhazsKIAkJfQogCQllbHNlCkBAIC0yOTAyLDcgKzI4OTksNyBAQCBw cmludF90cm9mZl9tc190ZXh0KGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LCBGSUxF ICpmb3V0KQogCQlmcHV0cygiLlRFXG4uRFMgTFxuIiwgZm91dCk7CiAKIAkJLyogcHJpbnQg Zm9vdGVycyAqLwotCQlpZiAoZm9vdGVycyAmJiAhb3B0X3R1cGxlc19vbmx5ICYmICFjYW5j ZWxfcHJlc3NlZCkKKwkJaWYgKGZvb3RlcnMgJiYgIW9wdF90dXBsZXNfb25seSAmJiAhQ2Fu Y2VsUmVxdWVzdGVkKQogCQl7CiAJCQlwcmludFRhYmxlRm9vdGVyICpmOwogCkBAIC0yOTI4 LDcgKzI5MjUsNyBAQCBwcmludF90cm9mZl9tc192ZXJ0aWNhbChjb25zdCBwcmludFRhYmxl Q29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAljb25zdCBjaGFyICpjb25zdCAqcHRyOwog CXVuc2lnbmVkIHNob3J0IGN1cnJlbnRfZm9ybWF0ID0gMDsJLyogMD1ub25lLCAxPWhlYWRl ciwgMj1ib2R5ICovCiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVl c3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKG9wdF9ib3JkZXIgPiAyKQpAQCAtMjk2NCw3ICsy OTYxLDcgQEAgcHJpbnRfdHJvZmZfbXNfdmVydGljYWwoY29uc3QgcHJpbnRUYWJsZUNvbnRl bnQgKmNvbnQsIEZJTEUgKmZvdXQpCiAJCS8qIG5ldyByZWNvcmQgKi8KIAkJaWYgKGkgJSBj b250LT5uY29sdW1ucyA9PSAwKQogCQl7Ci0JCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCQlp ZiAoQ2FuY2VsUmVxdWVzdGVkKQogCQkJCWJyZWFrOwogCQkJaWYgKCFvcHRfdHVwbGVzX29u bHkpCiAJCQl7CkBAIC0zMDA5LDcgKzMwMDYsNyBAQCBwcmludF90cm9mZl9tc192ZXJ0aWNh bChjb25zdCBwcmludFRhYmxlQ29udGVudCAqY29udCwgRklMRSAqZm91dCkKIAkJZnB1dHMo Ii5URVxuLkRTIExcbiIsIGZvdXQpOwogCiAJCS8qIHByaW50IGZvb3RlcnMgKi8KLQkJaWYg KGNvbnQtPmZvb3RlcnMgJiYgIW9wdF90dXBsZXNfb25seSAmJiAhY2FuY2VsX3ByZXNzZWQp CisJCWlmIChjb250LT5mb290ZXJzICYmICFvcHRfdHVwbGVzX29ubHkgJiYgIUNhbmNlbFJl cXVlc3RlZCkKIAkJewogCQkJcHJpbnRUYWJsZUZvb3RlciAqZjsKIApAQCAtMzE4Nyw3ICsz MTg0LDcgQEAgQ2xvc2VQYWdlcihGSUxFICpwYWdlcnBpcGUpCiAJCSAqIHBhZ2VyIHF1aXQg YXMgYSByZXN1bHQgb2YgdGhlIFNJR0lOVCwgdGhpcyBtZXNzYWdlIHdvbid0IGdvCiAJCSAq IGFueXdoZXJlIC4uLgogCQkgKi8KLQkJaWYgKGNhbmNlbF9wcmVzc2VkKQorCQlpZiAoQ2Fu Y2VsUmVxdWVzdGVkKQogCQkJZnByaW50ZihwYWdlcnBpcGUsIF8oIkludGVycnVwdGVkXG4i KSk7CiAKIAkJcGNsb3NlKHBhZ2VycGlwZSk7CkBAIC0zNjU2LDcgKzM2NTMsNyBAQCBwcmlu dFRhYmxlKGNvbnN0IHByaW50VGFibGVDb250ZW50ICpjb250LAogewogCWJvb2wJCWlzX2xv Y2FsX3BhZ2VyID0gZmFsc2U7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNl bFJlcXVlc3RlZCkKIAkJcmV0dXJuOwogCiAJaWYgKGNvbnQtPm9wdC0+Zm9ybWF0ID09IFBS SU5UX05PVEhJTkcpCkBAIC0zNzY1LDcgKzM3NjIsNyBAQCBwcmludFF1ZXJ5KGNvbnN0IFBH cmVzdWx0ICpyZXN1bHQsIGNvbnN0IHByaW50UXVlcnlPcHQgKm9wdCwKIAkJCQlyLAogCQkJ CWM7CiAKLQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJaWYgKENhbmNlbFJlcXVlc3RlZCkKIAkJ cmV0dXJuOwogCiAJcHJpbnRUYWJsZUluaXQoJmNvbnQsICZvcHQtPnRvcHQsIG9wdC0+dGl0 bGUsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9wcmludC5oIGIvc3JjL2lu Y2x1ZGUvZmVfdXRpbHMvcHJpbnQuaAppbmRleCA5NGY2YTU5MzYxOS4uMjMwOTdiYTg1M2Eg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3ByaW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvZmVfdXRpbHMvcHJpbnQuaApAQCAtMTk1LDggKzE5NSw2IEBAIHR5cGVkZWYgc3Ry dWN0IHByaW50UXVlcnlPcHQKIH0gcHJpbnRRdWVyeU9wdDsKIAogCi1leHRlcm4gUEdETExJ TVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IGNhbmNlbF9wcmVzc2VkOwotCiBleHRlcm4g UEdETExJTVBPUlQgY29uc3QgcHJpbnRUZXh0Rm9ybWF0IHBnX2FzY2lpZm9ybWF0OwogZXh0 ZXJuIFBHRExMSU1QT1JUIGNvbnN0IHByaW50VGV4dEZvcm1hdCBwZ19hc2NpaWZvcm1hdF9v bGQ7CiBleHRlcm4gUEdETExJTVBPUlQgcHJpbnRUZXh0Rm9ybWF0IHBnX3V0Zjhmb3JtYXQ7 CS8qIGlkZWFsbHkgd291bGQgYmUgY29uc3QsCi0tIAoyLjQ3LjMKCg== --------------3ya1Vdf60QnNZwd0W6QSz8kw Content-Type: text/x-patch; charset=UTF-8; name="v8.1-0002-fe_utils-Simplify-cancel-logic-in-wait_on_slots.patch" Content-Disposition: attachment; filename*0="v8.1-0002-fe_utils-Simplify-cancel-logic-in-wait_on_slots.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0YWFjMjU1ZTI2MjY4NWQxNDA0NWEzZmIzM2M3Y2EwYWI4ODE2MjhlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVs dGVmLm5sPgpEYXRlOiBUdWUsIDcgQXByIDIwMjYgMTk6NTQ6MTMgKzAyMDAKU3ViamVjdDog W1BBVENIIHY4LjEgMi80XSBmZV91dGlsczogU2ltcGxpZnkgY2FuY2VsIGxvZ2ljIGluIHdh aXRfb25fc2xvdHMKClRoaXMgcmVtb3ZlcyB0aGUgU2V0Q2FuY2VsQ29ubiBjYWxsIGluIHdh aXRfb25fc2xvdHMuIFRoaXMgY2FsbCB3YXMKY29uZnVzaW5nIGJlY2F1c2UgaXQgd2FzIG9u bHkgY2FsbGVkIGZvciBhIHNpbmdsZSBjb25uZWN0aW9uIG9mIGFsbCB0aGUKY29ubmVjdGlv bnMgdGhhdCB0aGUgc2VsZWN0X2xvb3Agd291bGQgd2FpdCBvbi4gVHVybnMgb3V0IHRoYXQg aXQgY2FuIGJlCmJlIG1hZGUgY29tcGxldGVseSByZWR1bmRhbnQgYnkgbW92aW5nIHRoZSBj aGVjayBmb3IgQ2FuY2VsUmVxdWVzdGVkCmJlZm9yZSB0aGUgY2hlY2sgZm9yIEVJTlRSLgot LS0KIHNyYy9mZV91dGlscy9wYXJhbGxlbF9zbG90LmMgfCAxNiArKysrKystLS0tLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcGFyYWxsZWxfc2xvdC5jIGIvc3JjL2ZlX3V0aWxz L3BhcmFsbGVsX3Nsb3QuYwppbmRleCBmYjllNmNjNGVjMS4uOTRkMTNjYzQ5OWEgMTAwNjQ0 Ci0tLSBhL3NyYy9mZV91dGlscy9wYXJhbGxlbF9zbG90LmMKKysrIGIvc3JjL2ZlX3V0aWxz L3BhcmFsbGVsX3Nsb3QuYwpAQCAtMTAzLDYgKzEwMyw5IEBAIHNlbGVjdF9sb29wKGludCBt YXhGZCwgZmRfc2V0ICp3b3JrZXJzZXQpCiAJCSp3b3JrZXJzZXQgPSBzYXZlU2V0OwogCQlp ID0gc2VsZWN0KG1heEZkICsgMSwgd29ya2Vyc2V0LCBOVUxMLCBOVUxMLCB0dnApOwogCisJ CWlmIChDYW5jZWxSZXF1ZXN0ZWQpCisJCQlyZXR1cm4gLTE7CisKICNpZmRlZiBXSU4zMgog CQlpZiAoaSA9PSBTT0NLRVRfRVJST1IpCiAJCXsKQEAgLTExNSw3ICsxMTgsNyBAQCBzZWxl Y3RfbG9vcChpbnQgbWF4RmQsIGZkX3NldCAqd29ya2Vyc2V0KQogCiAJCWlmIChpIDwgMCAm JiBlcnJubyA9PSBFSU5UUikKIAkJCWNvbnRpbnVlOwkJCS8qIGlnbm9yZSB0aGlzICovCi0J CWlmIChpIDwgMCB8fCBDYW5jZWxSZXF1ZXN0ZWQpCisJCWlmIChpIDwgMCkKIAkJCXJldHVy biAtMTsJCQkvKiBidXQgbm90IHRoaXMgKi8KIAkJaWYgKGkgPT0gMCkKIAkJCWNvbnRpbnVl OwkJCS8qIHRpbWVvdXQgKFdpbjMyIG9ubHkpICovCkBAIC0xOTcsOCArMjAwLDcgQEAgd2Fp dF9vbl9zbG90cyhQYXJhbGxlbFNsb3RBcnJheSAqc2EpCiB7CiAJaW50CQkJaTsKIAlmZF9z ZXQJCXNsb3RzZXQ7Ci0JaW50CQkJbWF4RmQgPSAwOwotCVBHY29ubgkgICAqY2FuY2VsY29u biA9IE5VTEw7CisJaW50CQkJbWF4RmQgPSAtMTsKIAogCS8qIFdlIG11c3QgcmVjb25zdHJ1 Y3QgdGhlIGZkX3NldCBmb3IgZWFjaCBjYWxsIHRvIHNlbGVjdF9sb29wICovCiAJRkRfWkVS Tygmc2xvdHNldCk7CkBAIC0yMTksMTAgKzIyMSw2IEBAIHdhaXRfb25fc2xvdHMoUGFyYWxs ZWxTbG90QXJyYXkgKnNhKQogCQlpZiAoc29jayA8IDApCiAJCQljb250aW51ZTsKIAotCQkv KiBLZWVwIHRyYWNrIG9mIHRoZSBmaXJzdCB2YWxpZCBjb25uZWN0aW9uIHdlIHNlZS4gKi8K LQkJaWYgKGNhbmNlbGNvbm4gPT0gTlVMTCkKLQkJCWNhbmNlbGNvbm4gPSBzYS0+c2xvdHNb aV0uY29ubmVjdGlvbjsKLQogCQlGRF9TRVQoc29jaywgJnNsb3RzZXQpOwogCQlpZiAoc29j ayA+IG1heEZkKQogCQkJbWF4RmQgPSBzb2NrOwpAQCAtMjMyLDEyICsyMzAsMTAgQEAgd2Fp dF9vbl9zbG90cyhQYXJhbGxlbFNsb3RBcnJheSAqc2EpCiAJICogSWYgd2UgZ2V0IHRoaXMg ZmFyIHdpdGggbm8gdmFsaWQgY29ubmVjdGlvbnMsIHByb2Nlc3NpbmcgY2Fubm90CiAJICog Y29udGludWUuCiAJICovCi0JaWYgKGNhbmNlbGNvbm4gPT0gTlVMTCkKKwlpZiAobWF4RmQg PCAwKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlTZXRDYW5jZWxDb25uKGNhbmNlbGNvbm4pOwog CWkgPSBzZWxlY3RfbG9vcChtYXhGZCwgJnNsb3RzZXQpOwotCVJlc2V0Q2FuY2VsQ29ubigp OwogCiAJLyogZmFpbHVyZT8gKi8KIAlpZiAoaSA8IDApCi0tIAoyLjQ3LjMKCg== --------------3ya1Vdf60QnNZwd0W6QSz8kw Content-Type: text/x-patch; charset=UTF-8; name="v8.1-0003-Move-Windows-pthread-compatibility-functions-to.patch" Content-Disposition: attachment; filename*0="v8.1-0003-Move-Windows-pthread-compatibility-functions-to.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNzI4Njc0ZWUwMGQ1MGE2MGNjYjU0NDNlMGE3ZTQzMGI5ZWJmMmMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVs dGVmLm5sPgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDE4OjE4OjEzICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2OC4xIDMvNF0gTW92ZSBXaW5kb3dzIHB0aHJlYWQgY29tcGF0aWJpbGl0eSBm dW5jdGlvbnMgdG8KIHNyYy9wb3J0CgpUaGlzIGlzIGluIHByZXBhcmF0aW9uIG9mIGEgZm9s bG93LXVwIGNvbW1pdCB3aGljaCB3aWxsIHN0YXJ0IHRvIHVzZQp0aGVzZSBmdW5jdGlvbnMg aW4gbW9yZSBwbGFjZXMgdGhhbiBqdXN0IGxpYnBxLgotLS0KIGNvbmZpZ3VyZS5hYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKIHNyYy9pbnRlcmZhY2VzL2xp YnBxL01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAxIC0KIHNyYy9pbnRlcmZhY2VzL2xp YnBxL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgfCAyICstCiBzcmMvcG9ydC9tZXNvbi5i dWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCiBzcmMve2ludGVyZmFjZXMv bGlicHEgPT4gcG9ydH0vcHRocmVhZC13aW4zMi5jIHwgNCArKy0tCiA1IGZpbGVzIGNoYW5n ZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIHJlbmFtZSBzcmMve2ludGVy ZmFjZXMvbGlicHEgPT4gcG9ydH0vcHRocmVhZC13aW4zMi5jICg5NCUpCgpkaWZmIC0tZ2l0 IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDBlNjI0ZmUzNmI5Li4wODRk OTllOTlmMSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpA QCAtMTk2MSw2ICsxOTYxLDcgQEAgaWYgdGVzdCAiJFBPUlROQU1FIiA9ICJ3aW4zMiI7IHRo ZW4KICAgQUNfTElCT0JKKGRpcm1vZCkKICAgQUNfTElCT0JKKGtpbGwpCiAgIEFDX0xJQk9C SihvcGVuKQorICBBQ19MSUJPQkoocHRocmVhZC13aW4zMikKICAgQUNfTElCT0JKKHN5c3Rl bSkKICAgQUNfTElCT0JKKHdpbjMyY29tbW9uKQogICBBQ19MSUJPQkood2luMzJkbG9wZW4p CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL01ha2VmaWxlCmluZGV4IDA5NjM5OTVlZWQ0Li5kNmNmYjAwZDY1NSAx MDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKQEAgLTc1LDcgKzc1LDYgQEAgZW5kaWYKIAogaWZl cSAoJChQT1JUTkFNRSksIHdpbjMyKQogT0JKUyArPSBcCi0JcHRocmVhZC13aW4zMi5vIFwK IAl3aW4zMi5vCiBlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9t ZXNvbi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCmluZGV4IGIw YWU3MjE2N2ExLi5iOTQ5NzgwYjg1YiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQK QEAgLTIwLDcgKzIwLDcgQEAgbGlicHFfc291cmNlcyA9IGZpbGVzKAogbGlicHFfc29fc291 cmNlcyA9IFtdICMgZm9yIHNoYXJlZCBsaWIsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZQog CiBpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKLSAgbGlicHFfc291cmNlcyArPSBmaWxl cygncHRocmVhZC13aW4zMi5jJywgJ3dpbjMyLmMnKQorICBsaWJwcV9zb3VyY2VzICs9IGZp bGVzKCd3aW4zMi5jJykKICAgbGlicHFfc29fc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nl c3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKICAgICAnLS1OQU1FJywgJ2xpYnBxJywK ICAgICAnLS1GSUxFREVTQycsICdQb3N0Z3JlU1FMIEFjY2VzcyBMaWJyYXJ5JyxdKQpkaWZm IC0tZ2l0IGEvc3JjL3BvcnQvbWVzb24uYnVpbGQgYi9zcmMvcG9ydC9tZXNvbi5idWlsZApp bmRleCA5MjJiM2Y2NDY3Ni4uMTA4MzNiMTM4NDIgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L21l c29uLmJ1aWxkCisrKyBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCkBAIC0zMyw2ICszMyw3IEBA IGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwogICAgICdkaXJtb2QuYycsCiAgICAgJ2tp bGwuYycsCiAgICAgJ29wZW4uYycsCisgICAgJ3B0aHJlYWQtd2luMzIuYycsCiAgICAgJ3N5 c3RlbS5jJywKICAgICAnd2luMzJjb21tb24uYycsCiAgICAgJ3dpbjMyZGxvcGVuLmMnLApk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHRocmVhZC13aW4zMi5jIGIvc3Jj L3BvcnQvcHRocmVhZC13aW4zMi5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9t IHNyYy9pbnRlcmZhY2VzL2xpYnBxL3B0aHJlYWQtd2luMzIuYwpyZW5hbWUgdG8gc3JjL3Bv cnQvcHRocmVhZC13aW4zMi5jCmluZGV4IGNmNjYyODRmMDA3Li40OGQ2OGI2OTNhNyAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHRocmVhZC13aW4zMi5jCisrKyBiL3Ny Yy9wb3J0L3B0aHJlYWQtd2luMzIuYwpAQCAtNSwxMiArNSwxMiBAQAogKgogKiBDb3B5cmln aHQgKGMpIDIwMDQtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK ICogSURFTlRJRklDQVRJT04KLSoJc3JjL2ludGVyZmFjZXMvbGlicHEvcHRocmVhZC13aW4z Mi5jCisqCXNyYy9wb3J0L3B0aHJlYWQtd2luMzIuYwogKgogKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICovCiAKLSNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorI2luY2x1ZGUgImMuaCIKIAog I2luY2x1ZGUgInB0aHJlYWQtd2luMzIuaCIKIAotLSAKMi40Ny4zCgo= --------------3ya1Vdf60QnNZwd0W6QSz8kw Content-Type: text/x-patch; charset=UTF-8; name="v8.1-0004-Don-t-use-deprecated-and-insecure-PQcancel-psql.patch" Content-Disposition: attachment; filename*0="v8.1-0004-Don-t-use-deprecated-and-insecure-PQcancel-psql.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlM2U0YTJjMTU0MTkwMjRjNTNhMzMyMmFkZWRhZTYyYjAyMmNjMDNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVs dGVmLm5sPgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDEzOjA1OjUwICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2OC4xIDQvNF0gRG9uJ3QgdXNlIGRlcHJlY2F0ZWQgYW5kIGluc2VjdXJlIFBR Y2FuY2VsIHBzcWwgYW5kCiBvdGhlciB0b29scyBhbnltb3JlCgpBbGwgb2Ygb3VyIGZyb250 ZW5kIHRvb2xzIHRoYXQgdXNlZCBvdXIgZmVfdXRpbHMgdG8gY2FuY2VsIHF1ZXJpZXMsCmlu Y2x1ZGluZyBwc3FsLCBzdGlsbCB1c2VkIFBRY2FuY2VsIHRvIHNlbmQgY2FuY2VsIHJlcXVl c3RzIHRvIHRoZQpzZXJ2ZXIuIFRoYXQgZnVuY3Rpb24gaXMgaW5zZWN1cmUsIGJlY2F1c2Ug aXQgZG9lcyBub3QgdXNlIGVuY3J5cHRpb24gdG8Kc2VuZCB0aGUgY2FuY2VsIHJlcXVlc3Qu IFRoaXMgc3RhcnRzIHVzaW5nIHRoZSBuZXcgY2FuY2VsbGF0aW9uIEFQSXMKKGludHJvZHVj ZWQgaW4gNjE0NjFhMzAwKSBmb3IgYWxsIHRoZXNlIGZyb250ZW5kIHRvb2xzLiBUaGVzZSBB UElzIHVzZQp0aGUgc2FtZSBlbmNyeXB0aW9uIHNldHRpbmdzIGFzIHRoZSBjb25uZWN0aW9u IHRoYXQncyBiZWluZyBjYW5jZWxsZWQuClNpbmNlIHRoZXNlIEFQSXMgYXJlIG5vdCBzaWdu YWwtc2FmZSB0aGlzIHJlcXVpcmVkIGEgcmVmYWN0b3IgdG8gbm90CnNlbmQgdGhlIGNhbmNl bCByZXF1ZXN0IGluIGEgc2lnbmFsIGhhbmRsZXIgYW55bW9yZSwgYnV0IGluc3RlYWQgdXNp bmcgYQpkZWRpY2F0ZWQgdGhyZWFkLgoKU2ltaWxhciBsb2dpYyB3YXMgYWxyZWFkeSB1c2Vk IGZvciBXaW5kb3dzIGFueXdheSwgc28gdGhpcyBoYXMgdGhlCmJlbmVmaXQgdGhhdCBpdCBt YWtlcyB0aGUgY2FuY2VsIGxvZ2ljIG1vcmUgdW5pZm9ybSBhY3Jvc3Mgb3VyIHN1cHBvcnRl ZApwbGF0Zm9ybXMuIEluIHRoZSBwZ19kdW1wIGNvZGUgdGhlcmUncyBzdGlsbCBxdWl0ZSBh IGJpdCBvZiBiZWhhdmlvdXJhbApkaWZmZXJlbmNlIHRob3VnaCwgYmVjYXVzZSBwZ19kdW1w IGlzIHVzaW5nIHRocmVhZHMgZm9yIHBhcmFsbGVsaXNtIG9uCldpbmRvd3MsIGJ1dCBwcm9j ZXNzZXMgb24gVW5peGVzLgotLS0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYyAgICAgIHwg ICAyICstCiBzcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgMiArCiBzcmMvYmlu L3BnX2R1bXAvcGFyYWxsZWwuYyAgICAgICAgICAgfCAzNDMgKysrKysrKystLS0tLS0tLS0t LS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyB8ICAgMiArLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIHwgICA4ICstCiBzcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2RiLmMgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdiZW5jaC9w Z2JlbmNoLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wc3FsL2NvbW1vbi5jICAg ICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRiLmMgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYyAgICAgICAgICB8 ICAgMiArLQogc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jICAgICAgICAgIHwgICAyICst CiBzcmMvZmVfdXRpbHMvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9m ZV91dGlscy9jYW5jZWwuYyAgICAgICAgICAgICAgICB8IDQ2MSArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2ZlX3V0aWxzL2NhbmNlbC5oICAgICAgICB8ICAx NSArLQogMTYgZmlsZXMgY2hhbmdlZCwgNDk5IGluc2VydGlvbnMoKyksIDM2NSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGQ4 OGE3YTcwMzA4Li4yZWMxNzZjNTc0YSAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIv bWVzb24uYnVpbGQKQEAgLTM2NTAsNyArMzY1MCw3IEBAIGZyb250ZW5kX2NvZGUgPSBkZWNs YXJlX2RlcGVuZGVuY3koCiAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFtwb3N0Z3Jlc19pbmNd LAogICBsaW5rX3dpdGg6IFtmZV91dGlscywgY29tbW9uX3N0YXRpYywgcGdwb3J0X3N0YXRp Y10sCiAgIHNvdXJjZXM6IGdlbmVyYXRlZF9oZWFkZXJzX3N0YW1wLAotICBkZXBlbmRlbmNp ZXM6IFtvc19kZXBzLCBsaWJpbnRsXSwKKyAgZGVwZW5kZW5jaWVzOiBbb3NfZGVwcywgbGli aW50bCwgdGhyZWFkX2RlcF0sCiApCiAKIGJhY2tlbmRfYm90aF9kZXBzICs9IFsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19hbWNoZWNrLmMgYi9zcmMvYmluL3BnX2Ft Y2hlY2svcGdfYW1jaGVjay5jCmluZGV4IDA5YmEwNTk2NDAwLi4yNzI4YmNkYjFhYSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYworKysgYi9zcmMvYmlu L3BnX2FtY2hlY2svcGdfYW1jaGVjay5jCkBAIC00NzgsNyArNDc4LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCWNwYXJhbXMuZGJuYW1lID0gTlVMTDsKIAljcGFyYW1z Lm92ZXJyaWRlX2RibmFtZSA9IE5VTEw7CiAKLQlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxM KTsKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMLCBOVUxMKTsKIAogCS8qIGNob29zZSB0 aGUgZGF0YWJhc2UgZm9yIG91ciBpbml0aWFsIGNvbm5lY3Rpb24gKi8KIAlpZiAob3B0cy5h bGxkYikKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4v cGdfZHVtcC9NYWtlZmlsZQppbmRleCA3OTA3M2IwYTBlYS4uZjc2MzQ2YzRmNmMgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2R1bXAv TWFrZWZpbGUKQEAgLTIxLDcgKzIxLDcgQEAgZXhwb3J0IExaNAogZXhwb3J0IFpTVEQKIGV4 cG9ydCB3aXRoX2ljdQogCi1vdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQobGlicHFfc3JjZGly KSAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxpYnBxX3NyY2Rpcikg LUkkKHRvcF9zcmNkaXIpL3NyYy9wb3J0ICQoQ1BQRkxBR1MpCiBMREZMQUdTX0lOVEVSTkFM ICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscyAkKGxpYnBx X3BncG9ydCkKIAogT0JKUyA9IFwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWlsZAppbmRleCA3OWJkNTAzNjg0 MS4uZWI1NWQ3YTUwY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQKQEAgLTIyLDYgKzIyLDggQEAg cGdfZHVtcF9jb21tb25fc291cmNlcyA9IGZpbGVzKAogcGdfZHVtcF9jb21tb24gPSBzdGF0 aWNfbGlicmFyeSgnbGlicGdkdW1wX2NvbW1vbicsCiAgIHBnX2R1bXBfY29tbW9uX3NvdXJj ZXMsCiAgIGNfcGNoOiBwY2hfcG9zdGdyZXNfZmVfaCwKKyAgIyBwb3J0IG5lZWRzIHRvIGJl IGluIGluY2x1ZGUgcGF0aCBkdWUgdG8gcHRocmVhZC13aW4zMi5oCisgIGluY2x1ZGVfZGly ZWN0b3JpZXM6IFsnLi4vLi4vcG9ydCddLAogICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9j b2RlLCBsaWJwcSwgbHo0LCB6bGliLCB6c3RkXSwKICAga3dhcmdzOiBpbnRlcm5hbF9saWJf YXJncywKICkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMKaW5kZXggM2U4NGI4ODFjYTMuLjQ0Y2I3ODEzODE4 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGFyYWxsZWwuYwpAQCAtNjAsNiArNjAsOCBAQAogI2luY2x1ZGUgPGZjbnRs Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCisjaW5jbHVkZSAi ZmVfdXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgi CiAjaW5jbHVkZSAicGFyYWxsZWwuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfdXRpbHMuaCIK QEAgLTE3NCwxMCArMTc2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgRHVtcFNpZ25hbEluZm9ybWF0 aW9uCiAKIHN0YXRpYyB2b2xhdGlsZSBEdW1wU2lnbmFsSW5mb3JtYXRpb24gc2lnbmFsX2lu Zm87CiAKLSNpZmRlZiBXSU4zMgotc3RhdGljIENSSVRJQ0FMX1NFQ1RJT04gc2lnbmFsX2lu Zm9fbG9jazsKLSNlbmRpZgotCiAvKgogICogV3JpdGUgYSBzaW1wbGUgc3RyaW5nIHRvIHN0 ZGVyciAtLS0gbXVzdCBiZSBzYWZlIGluIGEgc2lnbmFsIGhhbmRsZXIuCiAgKiBXZSBpZ25v cmUgdGhlIHdyaXRlKCkgcmVzdWx0IHNpbmNlIHRoZXJlJ3Mgbm90IG11Y2ggd2UgY291bGQg ZG8gYWJvdXQgaXQuCkBAIC0yMDksNiArMjA3LDcgQEAgc3RhdGljIHZvaWQgV2FpdEZvclRl cm1pbmF0aW5nV29ya2VycyhQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGljIHZvaWQg c2V0X2NhbmNlbF9oYW5kbGVyKHZvaWQpOwogc3RhdGljIHZvaWQgc2V0X2NhbmNlbF9wc3Rh dGUoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKTsKIHN0YXRpYyB2b2lkIHNldF9jYW5jZWxfc2xv dF9hcmNoaXZlKFBhcmFsbGVsU2xvdCAqc2xvdCwgQXJjaGl2ZUhhbmRsZSAqQUgpOworc3Rh dGljIHZvaWQgU3RvcFdvcmtlcnModm9pZCk7CiBzdGF0aWMgdm9pZCBSdW5Xb3JrZXIoQXJj aGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU2xvdCAqc2xvdCk7CiBzdGF0aWMgaW50CUdldElk bGVXb3JrZXIoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKTsKIHN0YXRpYyBib29sIEhhc0V2ZXJ5 V29ya2VyVGVybWluYXRlZChQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwpAQCAtNDEwLDMyICs0 MDksOSBAQCBTaHV0ZG93bldvcmtlcnNIYXJkKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSkKIAkv KgogCSAqIEZvcmNlIGVhcmx5IHRlcm1pbmF0aW9uIG9mIGFueSBjb21tYW5kcyBjdXJyZW50 bHkgaW4gcHJvZ3Jlc3MuCiAJICovCi0jaWZuZGVmIFdJTjMyCi0JLyogT24gbm9uLVdpbmRv d3MsIHNlbmQgU0lHVEVSTSB0byBlYWNoIHdvcmtlciBwcm9jZXNzLiAqLwotCWZvciAoaSA9 IDA7IGkgPCBwc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKLQl7Ci0JCXBpZF90CQlwaWQgPSBw c3RhdGUtPnBhcmFsbGVsU2xvdFtpXS5waWQ7Ci0KLQkJaWYgKHBpZCAhPSAwKQotCQkJa2ls bChwaWQsIFNJR1RFUk0pOwotCX0KLSNlbHNlCi0KLQkvKgotCSAqIE9uIFdpbmRvd3MsIHNl bmQgcXVlcnkgY2FuY2VscyBkaXJlY3RseSB0byB0aGUgd29ya2VycycgYmFja2VuZHMuICBV c2UKLQkgKiBhIGNyaXRpY2FsIHNlY3Rpb24gdG8gZW5zdXJlIHdvcmtlciB0aHJlYWRzIGRv bid0IGNoYW5nZSBzdGF0ZS4KLQkgKi8KLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmc2lnbmFs X2luZm9fbG9jayk7Ci0JZm9yIChpID0gMDsgaSA8IHBzdGF0ZS0+bnVtV29ya2VyczsgaSsr KQotCXsKLQkJQXJjaGl2ZUhhbmRsZSAqQUggPSBwc3RhdGUtPnBhcmFsbGVsU2xvdFtpXS5B SDsKLQkJY2hhcgkJZXJyYnVmWzFdOwotCi0JCWlmIChBSCAhPSBOVUxMICYmIEFILT5jb25u Q2FuY2VsICE9IE5VTEwpCi0JCQkodm9pZCkgUFFjYW5jZWwoQUgtPmNvbm5DYW5jZWwsIGVy cmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOwotCX0KLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmc2ln bmFsX2luZm9fbG9jayk7Ci0jZW5kaWYKKwlMb2NrQ2FuY2VsVGhyZWFkKCk7CisJU3RvcFdv cmtlcnMoKTsKKwlVbmxvY2tDYW5jZWxUaHJlYWQoKTsKIAogCS8qIE5vdyB3YWl0IGZvciB0 aGVtIHRvIHRlcm1pbmF0ZS4gKi8KIAlXYWl0Rm9yVGVybWluYXRpbmdXb3JrZXJzKHBzdGF0 ZSk7CkBAIC01MTksNzQgKzQ5NSw4MCBAQCBXYWl0Rm9yVGVybWluYXRpbmdXb3JrZXJzKFBh cmFsbGVsU3RhdGUgKnBzdGF0ZSkKICAqIGNvdWxkIGxlYXZlIGEgU1FMIGNvbW1hbmQgKGUu Zy4sIENSRUFURSBJTkRFWCBvbiBhIGxhcmdlIHRhYmxlKSBydW5uaW5nCiAgKiBmb3IgYSBs b25nIHRpbWUuICBJbnN0ZWFkLCB3ZSB0cnkgdG8gc2VuZCBhIGNhbmNlbCByZXF1ZXN0IGFu ZCB0aGVuIGRpZS4KICAqIHBnX2R1bXAgcHJvYmFibHkgZG9lc24ndCByZWFsbHkgbmVlZCB0 aGlzLCBidXQgd2UgbWlnaHQgYXMgd2VsbCB1c2UgaXQKLSAqIHRoZXJlIHRvby4gIE5vdGUg dGhhdCBzZW5kaW5nIHRoZSBjYW5jZWwgZGlyZWN0bHkgZnJvbSB0aGUgc2lnbmFsIGhhbmRs ZXIKLSAqIGlzIHNhZmUgYmVjYXVzZSBQUWNhbmNlbCgpIGlzIHdyaXR0ZW4gdG8gbWFrZSBp dCBzby4KKyAqIHRoZXJlIHRvby4KICAqCi0gKiBJbiBwYXJhbGxlbCBvcGVyYXRpb24gb24g VW5peCwgZWFjaCBwcm9jZXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjYW5jZWxpbmcKLSAqIGl0 cyBvd24gY29ubmVjdGlvbiAodGhpcyBtdXN0IGJlIHNvIGJlY2F1c2Ugbm9ib2R5IGVsc2Ug aGFzIGFjY2VzcyB0byBpdCkuCi0gKiBGdXJ0aGVybW9yZSwgdGhlIGxlYWRlciBwcm9jZXNz IHNob3VsZCBhdHRlbXB0IHRvIGZvcndhcmQgaXRzIHNpZ25hbCB0bwotICogZWFjaCBjaGls ZC4gIEluIHNpbXBsZSBtYW51YWwgdXNlIG9mIHBnX2R1bXAvcGdfcmVzdG9yZSwgZm9yd2Fy ZGluZyBpc24ndAotICogbmVlZGVkIGJlY2F1c2UgdHlwaW5nIGNvbnRyb2wtQyBhdCB0aGUg Y29uc29sZSB3b3VsZCBkZWxpdmVyIFNJR0lOVCB0bwotICogZXZlcnkgbWVtYmVyIG9mIHRo ZSB0ZXJtaW5hbCBwcm9jZXNzIGdyb3VwIC0tLSBidXQgaW4gb3RoZXIgc2NlbmFyaW9zIGl0 Ci0gKiBtaWdodCBiZSB0aGF0IG9ubHkgdGhlIGxlYWRlciBnZXRzIHNpZ25hbGVkLgorICog T24gVW5peCwgdGhlIHNpZ25hbCBoYW5kbGVyIHdha2VzIHVwIGEgZGVkaWNhdGVkIGNhbmNl bCB0aHJlYWQgdmlhIGEKKyAqIHNlbGYtcGlwZSwgd2hpY2ggdGhlbiBzZW5kcyB0aGUgY2Fu Y2VsIGFuZCBjYWxscyBfZXhpdCgpLiAgVGhpcyB0aHJlYWQgYWxzbworICogZm9yd2FyZHMg dGhlIHNpZ25hbCB0byBlYWNoIGNoaWxkIHNvIHRoZXkgY2FuIGFsc28gY2FuY2VsIHRoZWly IHF1ZXJpZXMuIEluCisgKiBzaW1wbGUgbWFudWFsIHVzZSBvZiBwZ19kdW1wL3BnX3Jlc3Rv cmUsIGZvcndhcmRpbmcgaXNuJ3QgbmVlZGVkIGJlY2F1c2UKKyAqIHR5cGluZyBjb250cm9s LUMgYXQgdGhlIGNvbnNvbGUgd291bGQgZGVsaXZlciBTSUdJTlQgdG8gZXZlcnkgbWVtYmVy IG9mIHRoZQorICogdGVybWluYWwgcHJvY2VzcyBncm91cCAtLS0gYnV0IGluIG90aGVyIHNj ZW5hcmlvcyBpdCBtaWdodCBiZSB0aGF0IG9ubHkgdGhlCisgKiBsZWFkZXIgZ2V0cyBzaWdu YWxlZC4KICAqCiAgKiBPbiBXaW5kb3dzLCB0aGUgY2FuY2VsIGhhbmRsZXIgcnVucyBpbiBh IHNlcGFyYXRlIHRocmVhZCwgYmVjYXVzZSB0aGF0J3MKLSAqIGhvdyBTZXRDb25zb2xlQ3Ry bEhhbmRsZXIgd29ya3MuICBXZSBtYWtlIGl0IHN0b3Agd29ya2VyIHRocmVhZHMsIHNlbmQK LSAqIGNhbmNlbHMgb24gYWxsIGFjdGl2ZSBjb25uZWN0aW9ucywgYW5kIHRoZW4gcmV0dXJu IEZBTFNFLCB3aGljaCB3aWxsIGFsbG93Ci0gKiB0aGUgcHJvY2VzcyB0byBkaWUuICBGb3Ig c2FmZXR5J3Mgc2FrZSwgd2UgdXNlIGEgY3JpdGljYWwgc2VjdGlvbiB0bwotICogcHJvdGVj dCB0aGUgUEdjYW5jZWwgc3RydWN0dXJlcyBhZ2FpbnN0IGJlaW5nIGNoYW5nZWQgd2hpbGUg dGhlIHNpZ25hbAotICogdGhyZWFkIHJ1bnMuCisgKiBob3cgU2V0Q29uc29sZUN0cmxIYW5k bGVyIHdvcmtzLiAgV2UgbWFrZSBpdCBmb3JjaWJseSB0ZXJtaW5hdGUgdGhlIHdvcmtlcgor ICogdGhyZWFkcyAoc28gdGhleSBjYW4ndCByZXBvcnQgdGhlIHF1ZXJ5IGNhbmNlbGxhdGlv bnMgYXMgZXJyb3JzKSwgc2VuZAorICogY2FuY2VscyBvbiBhbGwgYWN0aXZlIGNvbm5lY3Rp b25zLCBhbmQgdGhlbiBjYWxsIF9leGl0KCkgdG8gdGVybWluYXRlIHRoZQorICogcHJvY2Vz cy4gIEFjY2VzcyB0byB0aGUgc2hhcmVkIFBHY2FuY2VsQ29ubiBzdHJ1Y3R1cmVzIGlzIHNl cmlhbGl6ZWQgYWdhaW5zdAorICogdGhlIG1haW4gdGhyZWFkIGJ5IHRoZSBjYW5jZWwgdGhy ZWFkIGxvY2sgaGVsZCBhcm91bmQgdGhlIGNhbGxiYWNrLgogICovCiAKLSNpZm5kZWYgV0lO MzIKLQogLyoKLSAqIFNpZ25hbCBoYW5kbGVyIChVbml4IG9ubHkpCisgKiBDYW5jZWwgYWxs IGFjdGl2ZSBxdWVyaWVzLCBwcmludCBhIHRlcm1pbmF0aW9uIG1lc3NhZ2UsIGFuZCBleGl0 LgorICoKKyAqIEludm9rZWQgZnJvbSB0aGUgY2FuY2VsIHRocmVhZCAoVW5peCkgb3IgdGhl IFdpbmRvd3MgY29uc29sZSBoYW5kbGVyIHRocmVhZC4KKyAqIEl0IG5ldmVyIHJldHVybnM6 IGFmdGVyIHNlbmRpbmcgdGhlIGNhbmNlbHMgaXQgY2FsbHMgX2V4aXQoKSBzbyB0aGF0IHRo ZQorICogcHJvY2VzcyB0ZXJtaW5hdGVzIG9uIGNhbmNlbC4gIFdlIHVzZSBfZXhpdCgpIHJh dGhlciB0aGFuIGV4aXQoKSBiZWNhdXNlIHRoZQorICogbGF0dGVyIHdvdWxkIGludm9rZSBh dGV4aXQgaGFuZGxlcnMgdGhhdCBjYW4gZmFpbCBpZiB3ZSBpbnRlcnJ1cHRlZCByZWxhdGVk CisgKiBjb2RlLgogICovCi1zdGF0aWMgdm9pZAotc2lnVGVybUhhbmRsZXIoU0lHTkFMX0FS R1MpCitwZ19ub3JldHVybiBzdGF0aWMgdm9pZAorQ2FuY2VsQmFja2VuZHNBbmRFeGl0KHZv aWQpCiB7CisjaWZkZWYgV0lOMzIKIAlpbnQJCQlpOwotCWNoYXIJCWVycmJ1ZlsxXTsKIAog CS8qCi0JICogU29tZSBwbGF0Zm9ybXMgYWxsb3cgZGVsaXZlcnkgb2YgbmV3IHNpZ25hbHMg dG8gaW50ZXJydXB0IGFuIGFjdGl2ZQotCSAqIHNpZ25hbCBoYW5kbGVyLiAgVGhhdCBjb3Vs ZCBtdWNrIHVwIG91ciBhdHRlbXB0IHRvIHNlbmQgUFFjYW5jZWwsIHNvCi0JICogZGlzYWJs ZSB0aGUgc2lnbmFscyB0aGF0IHNldF9jYW5jZWxfaGFuZGxlciBlbmFibGVkLgotCSAqLwot CXBxc2lnbmFsKFNJR0lOVCwgUEdfU0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHVEVSTSwgUEdf U0lHX0lHTik7Ci0JcHFzaWduYWwoU0lHUVVJVCwgUEdfU0lHX0lHTik7Ci0KLQkvKgotCSAq IElmIHdlJ3JlIGluIHRoZSBsZWFkZXIsIGZvcndhcmQgc2lnbmFsIHRvIGFsbCB3b3JrZXJz LiAgKEl0IHNlZW1zIGJlc3QKLQkgKiB0byBkbyB0aGlzIGJlZm9yZSBQUWNhbmNlbDsga2ls bGluZyB0aGUgbGVhZGVyIHRyYW5zYWN0aW9uIHdpbGwgcmVzdWx0Ci0JICogaW4gaW52YWxp ZC1zbmFwc2hvdCBlcnJvcnMgZnJvbSBhY3RpdmUgd29ya2Vycywgd2hpY2ggbWF5YmUgd2Ug Y2FuCi0JICogcXVpZXQgYnkga2lsbGluZyB3b3JrZXJzIGZpcnN0LikgIElnbm9yZSBhbnkg ZXJyb3JzLgorCSAqIE9uIFdpbmRvd3MgdGhlIHdvcmtlcnMgYXJlIHRocmVhZHMgd2l0aGlu IHRoaXMgc2FtZSBwcm9jZXNzLiAgT25jZSB3ZQorCSAqIGNhbmNlbCB0aGVpciBxdWVyaWVz IGJlbG93IHRoZXkgd291bGQgcmVjZWl2ZSB0aGUgY2FuY2VsbGF0aW9uIGFzIGFuCisJICog ZXJyb3IgYW5kIHJlcG9ydCBpdCwgY2x1dHRlcmluZyB0aGUgdXNlcidzIHNjcmVlbiBpbiB0 aGUgYnJpZWYgd2luZG93CisJICogYmVmb3JlIHRoZSBwcm9jZXNzIGV4aXRzLiAgRm9yY2li bHkgdGVybWluYXRlIHRoZSB3b3JrZXIgdGhyZWFkcyBmaXJzdAorCSAqIHNvIHRoZXkgY2Fu J3QgZG8gdGhhdC4KKwkgKgorCSAqIFRlcm1pbmF0ZVRocmVhZCBpcyB1bnNhZmUgaW4gZ2Vu ZXJhbCAoaXQgbWF5IGxlYWsgcmVzb3VyY2VzIG9yIGxlYXZlCisJICogdXNlci1zcGFjZSBs b2NrcyBoZWxkIGJ5IHRoZSBraWxsZWQgdGhyZWFkKSwgYnV0IHRoYXQncyBhY2NlcHRhYmxl IGhlcmUKKwkgKiBiZWNhdXNlIHdlJ3JlIGFib3V0IHRvIGVuZCB0aGUgd2hvbGUgcHJvY2Vz cyBhbnl3YXkuCiAJICovCiAJaWYgKHNpZ25hbF9pbmZvLnBzdGF0ZSAhPSBOVUxMKQogCXsK IAkJZm9yIChpID0gMDsgaSA8IHNpZ25hbF9pbmZvLnBzdGF0ZS0+bnVtV29ya2VyczsgaSsr KQogCQl7Ci0JCQlwaWRfdAkJcGlkID0gc2lnbmFsX2luZm8ucHN0YXRlLT5wYXJhbGxlbFNs b3RbaV0ucGlkOworCQkJSEFORExFCQloVGhyZWFkID0gKEhBTkRMRSkgc2lnbmFsX2luZm8u cHN0YXRlLT5wYXJhbGxlbFNsb3RbaV0uaFRocmVhZDsKIAotCQkJaWYgKHBpZCAhPSAwKQot CQkJCWtpbGwocGlkLCBTSUdURVJNKTsKKwkJCWlmIChoVGhyZWFkICE9IElOVkFMSURfSEFO RExFX1ZBTFVFKQorCQkJCVRlcm1pbmF0ZVRocmVhZChoVGhyZWFkLCAwKTsKIAkJfQogCX0K KyNlbmRpZgogCiAJLyoKLQkgKiBTZW5kIFF1ZXJ5Q2FuY2VsIGlmIHdlIGhhdmUgYSBjb25u ZWN0aW9uIHRvIHNlbmQgdG8uICBJZ25vcmUgZXJyb3JzLAotCSAqIHRoZXJlJ3Mgbm90IG11 Y2ggd2UgY2FuIGRvIGFib3V0IHRoZW0gYW55d2F5LgorCSAqIFN0b3Agd29ya2VycyBmaXJz dCB0byBhdm9pZCBpbnZhbGlkLXNuYXBzaG90IGVycm9ycyBpZiB0aGUgbGVhZGVyCisJICog Y2FuY2VscyBiZWZvcmUgd29ya2Vycy4KIAkgKi8KLQlpZiAoc2lnbmFsX2luZm8ubXlBSCAh PSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNvbm5DYW5jZWwgIT0gTlVMTCkKLQkJKHZv aWQpIFBRY2FuY2VsKHNpZ25hbF9pbmZvLm15QUgtPmNvbm5DYW5jZWwsIGVycmJ1Ziwgc2l6 ZW9mKGVycmJ1ZikpOworCVN0b3BXb3JrZXJzKCk7CisKKwlpZiAoc2lnbmFsX2luZm8ubXlB SCAhPSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNhbmNlbENvbm4gIT0gTlVMTCkKKwkJ KHZvaWQpIFBRY2FuY2VsQmxvY2tpbmcoc2lnbmFsX2luZm8ubXlBSC0+Y2FuY2VsQ29ubik7 CiAKIAkvKgotCSAqIFJlcG9ydCB3ZSdyZSBxdWl0dGluZywgdXNpbmcgbm90aGluZyBtb3Jl IGNvbXBsaWNhdGVkIHRoYW4gd3JpdGUoMikuCi0JICogV2hlbiBpbiBwYXJhbGxlbCBvcGVy YXRpb24sIG9ubHkgdGhlIGxlYWRlciBwcm9jZXNzIHNob3VsZCBkbyB0aGlzLgorCSAqIFBy aW50IHRlcm1pbmF0aW9uIG1lc3NhZ2UuIEluIHBhcmFsbGVsIG9wZXJhdGlvbiwgb25seSB0 aGUgbGVhZGVyCisJICogc2hvdWxkIHByaW50IHRoaXMuIE9uIFdpbmRvd3MsIHdvcmtlcnMg YXJlIHRocmVhZHMgaW4gdGhlIHNhbWUgcHJvY2VzcworCSAqIGFuZCB0aGUgY29uc29sZSBo YW5kbGVyIG9ubHkgcnVucyBpbiB0aGUgbGVhZGVyIGNvbnRleHQsIHNvIHdlIGNhbgorCSAq IGFsd2F5cyBwcmludCBpdC4KIAkgKi8KKyNpZm5kZWYgV0lOMzIKIAlpZiAoIXNpZ25hbF9p bmZvLmFtX3dvcmtlcikKKyNlbmRpZgogCXsKIAkJaWYgKHByb2duYW1lKQogCQl7CkBAIC01 OTYsMTExICs1NzgsNDIgQEAgc2lnVGVybUhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCXdyaXRl X3N0ZGVycigidGVybWluYXRlZCBieSB1c2VyXG4iKTsKIAl9CiAKLQkvKgotCSAqIEFuZCBk aWUsIHVzaW5nIF9leGl0KCkgbm90IGV4aXQoKSBiZWNhdXNlIHRoZSBsYXR0ZXIgd2lsbCBp bnZva2UgYXRleGl0Ci0JICogaGFuZGxlcnMgdGhhdCBjYW4gZmFpbCBpZiB3ZSBpbnRlcnJ1 cHRlZCByZWxhdGVkIGNvZGUuCi0JICovCiAJX2V4aXQoMSk7CiB9CiAKIC8qCi0gKiBFbmFi bGUgY2FuY2VsIGludGVycnVwdCBoYW5kbGVyLCBpZiBub3QgYWxyZWFkeSBkb25lLgotICov Ci1zdGF0aWMgdm9pZAotc2V0X2NhbmNlbF9oYW5kbGVyKHZvaWQpCi17Ci0JLyoKLQkgKiBX aGVuIGZvcmtpbmcsIHNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0IHdpbGwgcHJvcGFnYXRlIGlu dG8gdGhlIG5ldwotCSAqIHByb2Nlc3MsIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIHRoZSBz aWduYWwgaGFuZGxlciBzdGF0ZSBkb2VzIHRvby4KLQkgKi8KLQlpZiAoIXNpZ25hbF9pbmZv LmhhbmRsZXJfc2V0KQotCXsKLQkJc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQgPSB0cnVlOwot Ci0JCXBxc2lnbmFsKFNJR0lOVCwgc2lnVGVybUhhbmRsZXIpOwotCQlwcXNpZ25hbChTSUdU RVJNLCBzaWdUZXJtSGFuZGxlcik7Ci0JCXBxc2lnbmFsKFNJR1FVSVQsIHNpZ1Rlcm1IYW5k bGVyKTsKLQl9Ci19Ci0KLSNlbHNlCQkJCQkJCS8qIFdJTjMyICovCi0KLS8qCi0gKiBDb25z b2xlIGludGVycnVwdCBoYW5kbGVyIC0tLSBydW5zIGluIGEgbmV3bHktc3RhcnRlZCB0aHJl YWQuCisgKiBTdG9wIGFsbCB3b3JrZXIgcHJvY2Vzc2VzL3RocmVhZHMuCiAgKgotICogQWZ0 ZXIgc3RvcHBpbmcgb3RoZXIgdGhyZWFkcyBhbmQgc2VuZGluZyBjYW5jZWwgcmVxdWVzdHMg b24gYWxsIG9wZW4KLSAqIGNvbm5lY3Rpb25zLCB3ZSByZXR1cm4gRkFMU0Ugd2hpY2ggd2ls bCBhbGxvdyB0aGUgZGVmYXVsdCBFeGl0UHJvY2VzcygpCi0gKiBhY3Rpb24gdG8gYmUgdGFr ZW4uCisgKiBPbiBVbml4LCBzZW5kIFNJR1RFUk0gdG8gZWFjaCB3b3JrZXIgcHJvY2Vzczsg dGhlaXIgc2lnbmFsIGhhbmRsZXJzIHdpbGwKKyAqIHNlbmQgY2FuY2VsIHJlcXVlc3RzIHRv IHRoZWlyIGJhY2tlbmRzLgorICoKKyAqIE9uIFdpbmRvd3MsIHdvcmtlcnMgYXJlIHRocmVh ZHMgaW4gdGhlIHNhbWUgcHJvY2Vzcywgc28gd2Ugc2VuZCBjYW5jZWwKKyAqIHJlcXVlc3Rz IGRpcmVjdGx5IHRvIHRoZWlyIGJhY2tlbmRzLgorICoKKyAqIENhbGxlciBtdXN0IGhvbGQg dGhlIGNhbmNlbCB0aHJlYWQgbG9jayAodmlhIExvY2tDYW5jZWxUaHJlYWQpLgogICovCi1z dGF0aWMgQk9PTCBXSU5BUEkKLWNvbnNvbGVIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCitz dGF0aWMgdm9pZAorU3RvcFdvcmtlcnModm9pZCkKIHsKIAlpbnQJCQlpOwotCWNoYXIJCWVy cmJ1ZlsxXTsKIAotCWlmIChkd0N0cmxUeXBlID09IENUUkxfQ19FVkVOVCB8fAotCQlkd0N0 cmxUeXBlID09IENUUkxfQlJFQUtfRVZFTlQpCi0JewotCQkvKiBDcml0aWNhbCBzZWN0aW9u IHByZXZlbnRzIGNoYW5naW5nIGRhdGEgd2UgbG9vayBhdCBoZXJlICovCi0JCUVudGVyQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLQotCQkvKgotCQkgKiBJZiBpbiBw YXJhbGxlbCBtb2RlLCBzdG9wIHdvcmtlciB0aHJlYWRzIGFuZCBzZW5kIFF1ZXJ5Q2FuY2Vs IHRvCi0JCSAqIHRoZWlyIGNvbm5lY3RlZCBiYWNrZW5kcy4gIFRoZSBtYWluIHBvaW50IG9m IHN0b3BwaW5nIHRoZSB3b3JrZXIKLQkJICogdGhyZWFkcyBpcyB0byBrZWVwIHRoZW0gZnJv bSByZXBvcnRpbmcgdGhlIHF1ZXJ5IGNhbmNlbHMgYXMgZXJyb3JzLAotCQkgKiB3aGljaCB3 b3VsZCBjbHV0dGVyIHRoZSB1c2VyJ3Mgc2NyZWVuLiAgV2UgbmVlZG4ndCBzdG9wIHRoZSBs ZWFkZXIKLQkJICogdGhyZWFkIHNpbmNlIGl0IHdvbid0IGJlIGRvaW5nIG11Y2ggYW55d2F5 LiAgRG8gdGhpcyBiZWZvcmUKLQkJICogY2FuY2VsaW5nIHRoZSBtYWluIHRyYW5zYWN0aW9u LCBlbHNlIHdlIG1pZ2h0IGdldCBpbnZhbGlkLXNuYXBzaG90Ci0JCSAqIGVycm9ycyByZXBv cnRlZCBiZWZvcmUgd2UgY2FuIHN0b3AgdGhlIHdvcmtlcnMuICBJZ25vcmUgZXJyb3JzLAot CQkgKiB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGVtIGFueXdheS4KLQkJ ICovCi0JCWlmIChzaWduYWxfaW5mby5wc3RhdGUgIT0gTlVMTCkKLQkJewotCQkJZm9yIChp ID0gMDsgaSA8IHNpZ25hbF9pbmZvLnBzdGF0ZS0+bnVtV29ya2VyczsgaSsrKQotCQkJewot CQkJCVBhcmFsbGVsU2xvdCAqc2xvdCA9ICYoc2lnbmFsX2luZm8ucHN0YXRlLT5wYXJhbGxl bFNsb3RbaV0pOwotCQkJCUFyY2hpdmVIYW5kbGUgKkFIID0gc2xvdC0+QUg7Ci0JCQkJSEFO RExFCQloVGhyZWFkID0gKEhBTkRMRSkgc2xvdC0+aFRocmVhZDsKLQotCQkJCS8qCi0JCQkJ ICogVXNpbmcgVGVybWluYXRlVGhyZWFkIGhlcmUgbWF5IGxlYXZlIHNvbWUgcmVzb3VyY2Vz IGxlYWtlZCwKLQkJCQkgKiBidXQgaXQgZG9lc24ndCBtYXR0ZXIgc2luY2Ugd2UncmUgYWJv dXQgdG8gZW5kIHRoZSB3aG9sZQotCQkJCSAqIHByb2Nlc3MuCi0JCQkJICovCi0JCQkJaWYg KGhUaHJlYWQgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0JCQkJCVRlcm1pbmF0ZVRocmVh ZChoVGhyZWFkLCAwKTsKLQotCQkJCWlmIChBSCAhPSBOVUxMICYmIEFILT5jb25uQ2FuY2Vs ICE9IE5VTEwpCi0JCQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNlbCwgZXJyYnVm LCBzaXplb2YoZXJyYnVmKSk7Ci0JCQl9Ci0JCX0KKwlpZiAoc2lnbmFsX2luZm8ucHN0YXRl ID09IE5VTEwpCisJCXJldHVybjsKIAotCQkvKgotCQkgKiBTZW5kIFF1ZXJ5Q2FuY2VsIHRv IGxlYWRlciBjb25uZWN0aW9uLCBpZiBlbmFibGVkLiAgSWdub3JlIGVycm9ycywKLQkJICog dGhlcmUncyBub3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQgdGhlbSBhbnl3YXkuCi0JCSAqLwot CQlpZiAoc2lnbmFsX2luZm8ubXlBSCAhPSBOVUxMICYmIHNpZ25hbF9pbmZvLm15QUgtPmNv bm5DYW5jZWwgIT0gTlVMTCkKLQkJCSh2b2lkKSBQUWNhbmNlbChzaWduYWxfaW5mby5teUFI LT5jb25uQ2FuY2VsLAotCQkJCQkJCWVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOworCWZvciAo aSA9IDA7IGkgPCBzaWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKKwl7Cisj aWZuZGVmIFdJTjMyCisJCXBpZF90CQlwaWQgPSBzaWduYWxfaW5mby5wc3RhdGUtPnBhcmFs bGVsU2xvdFtpXS5waWQ7CiAKLQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZv X2xvY2spOworCQlpZiAocGlkICE9IDApCisJCQlraWxsKHBpZCwgU0lHVEVSTSk7CisjZWxz ZQorCQlBcmNoaXZlSGFuZGxlICpBSCA9IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxT bG90W2ldLkFIOwogCi0JCS8qCi0JCSAqIFJlcG9ydCB3ZSdyZSBxdWl0dGluZywgdXNpbmcg bm90aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KLQkJICogd3JpdGUoMikuICAoV2UgbWln aHQgYmUgYWJsZSB0byBnZXQgYXdheSB3aXRoIHVzaW5nIHBnX2xvZ18qKCkKLQkJICogaGVy ZSwgYnV0IHNpbmNlIHdlIHRlcm1pbmF0ZWQgb3RoZXIgdGhyZWFkcyB1bmNsZWFubHkgYWJv dmUsIGl0Ci0JCSAqIHNlZW1zIGJldHRlciB0byBhc3N1bWUgYXMgbGl0dGxlIGFzIHBvc3Np YmxlLikKLQkJICovCi0JCWlmIChwcm9nbmFtZSkKLQkJewotCQkJd3JpdGVfc3RkZXJyKHBy b2duYW1lKTsKLQkJCXdyaXRlX3N0ZGVycigiOiAiKTsKLQkJfQotCQl3cml0ZV9zdGRlcnIo InRlcm1pbmF0ZWQgYnkgdXNlclxuIik7CisJCWlmIChBSCAhPSBOVUxMICYmIEFILT5jYW5j ZWxDb25uICE9IE5VTEwpCisJCQkodm9pZCkgUFFjYW5jZWxCbG9ja2luZyhBSC0+Y2FuY2Vs Q29ubik7CisjZW5kaWYKIAl9Ci0KLQkvKiBBbHdheXMgcmV0dXJuIEZBTFNFIHRvIGFsbG93 IHNpZ25hbCBoYW5kbGluZyB0byBjb250aW51ZSAqLwotCXJldHVybiBGQUxTRTsKIH0KIAog LyoKQEAgLTcwOSw1OCArNjIyLDU1IEBAIGNvbnNvbGVIYW5kbGVyKERXT1JEIGR3Q3RybFR5 cGUpCiBzdGF0aWMgdm9pZAogc2V0X2NhbmNlbF9oYW5kbGVyKHZvaWQpCiB7Ci0JaWYgKCFz aWduYWxfaW5mby5oYW5kbGVyX3NldCkKLQl7Ci0JCXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0 ID0gdHJ1ZTsKKwlpZiAoc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQpCisJCXJldHVybjsKIAot CQlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKKwlzaWdu YWxfaW5mby5oYW5kbGVyX3NldCA9IHRydWU7CiAKLQkJU2V0Q29uc29sZUN0cmxIYW5kbGVy KGNvbnNvbGVIYW5kbGVyLCBUUlVFKTsKLQl9Ci19CisJc2V0dXBfY2FuY2VsX2hhbmRsZXIo TlVMTCwgQ2FuY2VsQmFja2VuZHNBbmRFeGl0KTsKIAotI2VuZGlmCQkJCQkJCS8qIFdJTjMy ICovCisjaWZuZGVmIFdJTjMyCisJcHFzaWduYWwoU0lHVEVSTSwgQ2FuY2VsU2lnbmFsSGFu ZGxlcik7CisJcHFzaWduYWwoU0lHUVVJVCwgQ2FuY2VsU2lnbmFsSGFuZGxlcik7CisjZW5k aWYKK30KIAogCiAvKgogICogc2V0X2FyY2hpdmVfY2FuY2VsX2luZm8KICAqCi0gKiBGaWxs IEFILT5jb25uQ2FuY2VsIHdpdGggY2FuY2VsbGF0aW9uIGluZm8gZm9yIHRoZSBzcGVjaWZp ZWQgZGF0YWJhc2UKKyAqIEZpbGwgQUgtPmNhbmNlbENvbm4gd2l0aCBjYW5jZWxsYXRpb24g aW5mbyBmb3IgdGhlIHNwZWNpZmllZCBkYXRhYmFzZQogICogY29ubmVjdGlvbjsgb3IgY2xl YXIgaXQgaWYgY29ubiBpcyBOVUxMLgogICovCiB2b2lkCiBzZXRfYXJjaGl2ZV9jYW5jZWxf aW5mbyhBcmNoaXZlSGFuZGxlICpBSCwgUEdjb25uICpjb25uKQogewotCVBHY2FuY2VsICAg Km9sZENvbm5DYW5jZWw7CisJUEdjYW5jZWxDb25uICpvbGRDYW5jZWxDb25uOwogCiAJLyoK LQkgKiBBY3RpdmF0ZSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaWYgd2UgZGlkbid0IHlldCBp biB0aGlzIHByb2Nlc3MuICBPbgotCSAqIFdpbmRvd3MsIHRoaXMgYWxzbyBpbml0aWFsaXpl cyBzaWduYWxfaW5mb19sb2NrOyB0aGVyZWZvcmUgaXQncworCSAqIEFjdGl2YXRlIHRoZSBp bnRlcnJ1cHQgaGFuZGxlciBpZiB3ZSBkaWRuJ3QgeWV0IGluIHRoaXMgcHJvY2Vzcy4gSXQn cwogCSAqIGltcG9ydGFudCB0aGF0IHRoaXMgaGFwcGVuIGF0IGxlYXN0IG9uY2UgYmVmb3Jl IHdlIGZvcmsgb2ZmIGFueQogCSAqIHRocmVhZHMuCiAJICovCiAJc2V0X2NhbmNlbF9oYW5k bGVyKCk7CiAKIAkvKgotCSAqIE9uIFVuaXgsIHdlIGFzc3VtZSB0aGF0IHN0b3JpbmcgYSBw b2ludGVyIHZhbHVlIGlzIGF0b21pYyB3aXRoIHJlc3BlY3QKLQkgKiB0byBhbnkgcG9zc2li bGUgc2lnbmFsIGludGVycnVwdC4gIE9uIFdpbmRvd3MsIHVzZSBhIGNyaXRpY2FsIHNlY3Rp b24uCisJICogVXNlIG11dGV4IHRvIHByZXZlbnQgdGhlIGNhbmNlbCBoYW5kbGVyIGZyb20g dXNpbmcgdGhlIHBvaW50ZXIgd2hpbGUKKwkgKiB3ZSdyZSBjaGFuZ2luZyBpdC4KIAkgKi8K LQotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xv Y2spOwotI2VuZGlmCisJTG9ja0NhbmNlbFRocmVhZCgpOwogCiAJLyogRnJlZSB0aGUgb2xk IG9uZSBpZiB3ZSBoYXZlIG9uZSAqLwotCW9sZENvbm5DYW5jZWwgPSBBSC0+Y29ubkNhbmNl bDsKKwlvbGRDYW5jZWxDb25uID0gQUgtPmNhbmNlbENvbm47CiAJLyogYmUgc3VyZSBpbnRl cnJ1cHQgaGFuZGxlciBkb2Vzbid0IHVzZSBwb2ludGVyIHdoaWxlIGZyZWVpbmcgKi8KLQlB SC0+Y29ubkNhbmNlbCA9IE5VTEw7CisJQUgtPmNhbmNlbENvbm4gPSBOVUxMOwogCi0JaWYg KG9sZENvbm5DYW5jZWwgIT0gTlVMTCkKLQkJUFFmcmVlQ2FuY2VsKG9sZENvbm5DYW5jZWwp OworCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCisJCVBRY2FuY2VsRmluaXNoKG9sZENh bmNlbENvbm4pOwogCiAJLyogU2V0IHRoZSBuZXcgb25lIGlmIHNwZWNpZmllZCAqLwogCWlm IChjb25uKQotCQlBSC0+Y29ubkNhbmNlbCA9IFBRZ2V0Q2FuY2VsKGNvbm4pOworCQlBSC0+ Y2FuY2VsQ29ubiA9IFBRY2FuY2VsQ3JlYXRlKGNvbm4pOwogCiAJLyoKIAkgKiBPbiBVbml4 LCB0aGVyZSdzIG9ubHkgZXZlciBvbmUgYWN0aXZlIEFyY2hpdmVIYW5kbGUgcGVyIHByb2Nl c3MsIHNvIHdlCkBAIC03NzYsNDkgKzY4NiwzNSBAQCBzZXRfYXJjaGl2ZV9jYW5jZWxfaW5m byhBcmNoaXZlSGFuZGxlICpBSCwgUEdjb25uICpjb25uKQogCQlzaWduYWxfaW5mby5teUFI ID0gQUg7CiAjZW5kaWYKIAotI2lmZGVmIFdJTjMyCi0JTGVhdmVDcml0aWNhbFNlY3Rpb24o JnNpZ25hbF9pbmZvX2xvY2spOwotI2VuZGlmCisJVW5sb2NrQ2FuY2VsVGhyZWFkKCk7CiB9 CiAKIC8qCiAgKiBzZXRfY2FuY2VsX3BzdGF0ZQogICoKICAqIFNldCBzaWduYWxfaW5mby5w c3RhdGUgdG8gcG9pbnQgdG8gdGhlIHNwZWNpZmllZCBQYXJhbGxlbFN0YXRlLCBpZiBhbnku Ci0gKiBXZSBuZWVkIHRoaXMgbWFpbmx5IHRvIGhhdmUgYW4gaW50ZXJsb2NrIGFnYWluc3Qg V2luZG93cyBzaWduYWwgdGhyZWFkLgorICogV2UgbmVlZCB0aGlzIG1haW5seSB0byBoYXZl IGFuIGludGVybG9jayBhZ2FpbnN0IHRoZSBjYW5jZWwgaGFuZGxlciB0aHJlYWQuCiAgKi8K IHN0YXRpYyB2b2lkCiBzZXRfY2FuY2VsX3BzdGF0ZShQYXJhbGxlbFN0YXRlICpwc3RhdGUp CiB7Ci0jaWZkZWYgV0lOMzIKLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmc2lnbmFsX2luZm9f bG9jayk7Ci0jZW5kaWYKLQorCUxvY2tDYW5jZWxUaHJlYWQoKTsKIAlzaWduYWxfaW5mby5w c3RhdGUgPSBwc3RhdGU7Ci0KLSNpZmRlZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9u KCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCVVubG9ja0NhbmNlbFRocmVhZCgpOwog fQogCiAvKgogICogc2V0X2NhbmNlbF9zbG90X2FyY2hpdmUKICAqCiAgKiBTZXQgUGFyYWxs ZWxTbG90J3MgQUggZmllbGQgdG8gcG9pbnQgdG8gdGhlIHNwZWNpZmllZCBhcmNoaXZlLCBp ZiBhbnkuCi0gKiBXZSBuZWVkIHRoaXMgbWFpbmx5IHRvIGhhdmUgYW4gaW50ZXJsb2NrIGFn YWluc3QgV2luZG93cyBzaWduYWwgdGhyZWFkLgorICogV2UgbmVlZCB0aGlzIG1haW5seSB0 byBoYXZlIGFuIGludGVybG9jayBhZ2FpbnN0IHRoZSBjYW5jZWwgaGFuZGxlciB0aHJlYWQu CiAgKi8KIHN0YXRpYyB2b2lkCiBzZXRfY2FuY2VsX3Nsb3RfYXJjaGl2ZShQYXJhbGxlbFNs b3QgKnNsb3QsIEFyY2hpdmVIYW5kbGUgKkFIKQogewotI2lmZGVmIFdJTjMyCi0JRW50ZXJD cml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOwotI2VuZGlmCi0KKwlMb2NrQ2Fu Y2VsVGhyZWFkKCk7CiAJc2xvdC0+QUggPSBBSDsKLQotI2lmZGVmIFdJTjMyCi0JTGVhdmVD cml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOwotI2VuZGlmCisJVW5sb2NrQ2Fu Y2VsVGhyZWFkKCk7CiB9CiAKIApAQCAtOTMzLDcgKzgyOSw3IEBAIFBhcmFsbGVsQmFja3Vw U3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkvKgogCSAqIFRlbXBvcmFyaWx5IGRpc2Fi bGUgcXVlcnkgY2FuY2VsbGF0aW9uIG9uIHRoZSBsZWFkZXIgY29ubmVjdGlvbi4gIFRoaXMK LQkgKiBlbnN1cmVzIHRoYXQgY2hpbGQgcHJvY2Vzc2VzIHdvbid0IGluaGVyaXQgdmFsaWQg QUgtPmNvbm5DYW5jZWwKKwkgKiBlbnN1cmVzIHRoYXQgY2hpbGQgcHJvY2Vzc2VzIHdvbid0 IGluaGVyaXQgdmFsaWQgQUgtPmNhbmNlbENvbm4KIAkgKiBzZXR0aW5ncyBhbmQgdGh1cyB3 b24ndCB0cnkgdG8gaXNzdWUgY2FuY2VscyBhZ2FpbnN0IHRoZSBsZWFkZXIncwogCSAqIGNv bm5lY3Rpb24uICBObyBoYXJtIGlzIGRvbmUgaWYgd2UgZmFpbCB3aGlsZSBpdCdzIGRpc2Fi bGVkLCBiZWNhdXNlCiAJICogdGhlIGxlYWRlciBjb25uZWN0aW9uIGlzIGlkbGUgYXQgdGhp cyBwb2ludCBhbnl3YXkuCkBAIC05NTEsNiArODQ3LDcgQEAgUGFyYWxsZWxCYWNrdXBTdGFy dChBcmNoaXZlSGFuZGxlICpBSCkKIAkJdWludHB0cl90CWhhbmRsZTsKICNlbHNlCiAJCXBp ZF90CQlwaWQ7CisJCXNpZ3NldF90CWNhbmNlbF9zZXQ7CiAjZW5kaWYKIAkJUGFyYWxsZWxT bG90ICpzbG90ID0gJihwc3RhdGUtPnBhcmFsbGVsU2xvdFtpXSk7CiAJCWludAkJCXBpcGVN V1syXSwKQEAgLTk3OSw2ICs4NzYsMTggQEAgUGFyYWxsZWxCYWNrdXBTdGFydChBcmNoaXZl SGFuZGxlICpBSCkKIAkJc2xvdC0+aFRocmVhZCA9IGhhbmRsZTsKIAkJc2xvdC0+d29ya2Vy U3RhdHVzID0gV1JLUl9JRExFOwogI2Vsc2UJCQkJCQkJLyogIVdJTjMyICovCisKKwkJLyoK KwkJICogQmxvY2sgc2lnbmFscyBiZWZvcmUgZm9yayBzbyB0aGF0IG5vIHNpZ25hbCBjYW4g YXJyaXZlIGluIHRoZSBjaGlsZAorCQkgKiBiZWZvcmUgUmVzZXRDYW5jZWxBZnRlckZvcmso KSBoYXMgY2xlYW5lZCB1cCB0aGUgaW5oZXJpdGVkIGNhbmNlbAorCQkgKiBzdGF0ZSAocGlw ZSBmZHMsIHNpZ25hbCBoYW5kbGVycywgbXV0ZXgpLgorCQkgKi8KKwkJc2lnZW1wdHlzZXQo JmNhbmNlbF9zZXQpOworCQlzaWdhZGRzZXQoJmNhbmNlbF9zZXQsIFNJR0lOVCk7CisJCXNp Z2FkZHNldCgmY2FuY2VsX3NldCwgU0lHVEVSTSk7CisJCXNpZ2FkZHNldCgmY2FuY2VsX3Nl dCwgU0lHUVVJVCk7CisJCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJmNhbmNlbF9zZXQsIE5V TEwpOworCiAJCXBpZCA9IGZvcmsoKTsKIAkJaWYgKHBpZCA9PSAwKQogCQl7CkBAIC05OTEs NiArOTAwLDEyIEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJ CQkvKiBpbnN0cnVjdCBzaWduYWwgaGFuZGxlciB0aGF0IHdlJ3JlIGluIGEgd29ya2VyIG5v dyAqLwogCQkJc2lnbmFsX2luZm8uYW1fd29ya2VyID0gdHJ1ZTsKIAorCQkJc2lnbmFsX2lu Zm8uaGFuZGxlcl9zZXQgPSBmYWxzZTsKKwkJCVJlc2V0Q2FuY2VsQWZ0ZXJGb3JrKCk7CisJ CQlwcXNpZ25hbChTSUdURVJNLCBQR19TSUdfREZMKTsKKwkJCXBxc2lnbmFsKFNJR1FVSVQs IFBHX1NJR19ERkwpOworCQkJc2lncHJvY21hc2soU0lHX1VOQkxPQ0ssICZjYW5jZWxfc2V0 LCBOVUxMKTsKKwogCQkJLyogY2xvc2UgcmVhZCBlbmQgb2YgV29ya2VyIC0+IExlYWRlciAq LwogCQkJY2xvc2Vzb2NrZXQocGlwZVdNW1BJUEVfUkVBRF0pOwogCQkJLyogY2xvc2Ugd3Jp dGUgZW5kIG9mIExlYWRlciAtPiBXb3JrZXIgKi8KQEAgLTEwMTksNiArOTM0LDggQEAgUGFy YWxsZWxCYWNrdXBTdGFydChBcmNoaXZlSGFuZGxlICpBSCkKIAkJfQogCiAJCS8qIEluIExl YWRlciBhZnRlciBzdWNjZXNzZnVsIGZvcmsgKi8KKwkJc2lncHJvY21hc2soU0lHX1VOQkxP Q0ssICZjYW5jZWxfc2V0LCBOVUxMKTsKKwogCQlzbG90LT5waWQgPSBwaWQ7CiAJCXNsb3Qt PndvcmtlclN0YXR1cyA9IFdSS1JfSURMRTsKIApAQCAtMTQwNyw4ICsxMzI0LDEyIEBAIExp c3RlblRvV29ya2VycyhBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTdGF0ZSAqcHN0YXRl LCBib29sIGRvX3dhaXQpCiAKIAlpZiAoIW1zZykKIAl7Ci0JCS8qIElmIGRvX3dhaXQgaXMg dHJ1ZSwgd2UgbXVzdCBoYXZlIGRldGVjdGVkIEVPRiBvbiBzb21lIHNvY2tldCAqLwotCQlp ZiAoZG9fd2FpdCkKKwkJLyoKKwkJICogSWYgZG9fd2FpdCBpcyB0cnVlLCB3ZSBtdXN0IGhh dmUgZGV0ZWN0ZWQgRU9GIG9uIHNvbWUgc29ja2V0LiBJZgorCQkgKiBpdCdzIGR1ZSB0byBh IGNhbmNlbCByZXF1ZXN0LCB0aGF0J3MgZXhwZWN0ZWQsIG90aGVyd2lzZSBpdCdzIGEKKwkJ ICogcHJvYmxlbS4KKwkJICovCisJCWlmIChkb193YWl0ICYmICFDYW5jZWxSZXF1ZXN0ZWQp CiAJCQlwZ19mYXRhbCgiYSB3b3JrZXIgcHJvY2VzcyBkaWVkIHVuZXhwZWN0ZWRseSIpOwog CQlyZXR1cm4gZmFsc2U7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5j CmluZGV4IDA1NTdlYjZkNmVkLi44YTU3ZjJmYzI3MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuYwpAQCAtNTE5Niw3ICs1MTk2LDcgQEAgQ2xvbmVBcmNoaXZlKEFy Y2hpdmVIYW5kbGUgKkFIKQogCiAJLyogVGhlIGNsb25lIHdpbGwgaGF2ZSBpdHMgb3duIGNv bm5lY3Rpb24sIHNvIGRpc3JlZ2FyZCBjb25uZWN0aW9uIHN0YXRlICovCiAJY2xvbmUtPmNv bm5lY3Rpb24gPSBOVUxMOwotCWNsb25lLT5jb25uQ2FuY2VsID0gTlVMTDsKKwljbG9uZS0+ Y2FuY2VsQ29ubiA9IE5VTEw7CiAJY2xvbmUtPmN1cnJVc2VyID0gTlVMTDsKIAljbG9uZS0+ Y3VyclNjaGVtYSA9IE5VTEw7CiAJY2xvbmUtPmN1cnJUYWJsZUFtID0gTlVMTDsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaCBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaAppbmRleCBjMTUyOGQ3ODg1My4uMjhmZWJh YzBjNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTI4OCw4 ICsyODgsMTIgQEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAJY2hhcgkgICAqc2F2ZWRQYXNz d29yZDsJLyogcGFzc3dvcmQgZm9yIHJvcHQtPnVzZXJuYW1lLCBpZiBrbm93biAqLwogCWNo YXIJICAgKnVzZV9yb2xlOwogCVBHY29ubgkgICAqY29ubmVjdGlvbjsKLQkvKiBJZiBjb25u Q2FuY2VsIGlzbid0IE5VTEwsIFNJR0lOVCBoYW5kbGVyIHdpbGwgc2VuZCBhIGNhbmNlbCAq LwotCVBHY2FuY2VsICAgKnZvbGF0aWxlIGNvbm5DYW5jZWw7CisKKwkvKgorCSAqIElmIGNh bmNlbENvbm4gaXNuJ3QgTlVMTCwgU0lHSU5UIGhhbmRsZXIgd2lsbCB0cmlnZ2VyIHRoZSBj YW5jZWwgdGhyZWFkCisJICogdG8gc2VuZCBhIGNhbmNlbC4KKwkgKi8KKwlQR2NhbmNlbENv bm4gKmNhbmNlbENvbm47CiAKIAlpbnQJCQljb25uZWN0VG9EQjsJLyogRmxhZyB0byBpbmRp Y2F0ZSBpZiBkaXJlY3QgREIgY29ubmVjdGlvbiBpcwogCQkJCQkJCQkgKiByZXF1aXJlZCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jCmluZGV4IGVjMGRkZjFkNzE4Li41ODJkOWI4ODQ1 NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYwpAQCAtODQsNyArODQsNyBAQCBSZWNvbm5l Y3RUb1NlcnZlcihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZGJuYW1lKQogCiAJ LyoKIAkgKiBOb3RlOiB3ZSB3YW50IHRvIGVzdGFibGlzaCB0aGUgbmV3IGNvbm5lY3Rpb24s IGFuZCBpbiBwYXJ0aWN1bGFyIHVwZGF0ZQotCSAqIEFyY2hpdmVIYW5kbGUncyBjb25uQ2Fu Y2VsLCBiZWZvcmUgY2xvc2luZyBvbGQgY29ubmVjdGlvbi4gIE90aGVyd2lzZQorCSAqIEFy Y2hpdmVIYW5kbGUncyBjYW5jZWxDb25uLCBiZWZvcmUgY2xvc2luZyBvbGQgY29ubmVjdGlv bi4gIE90aGVyd2lzZQogCSAqIGFuIGlsbC10aW1lZCBTSUdJTlQgY291bGQgdHJ5IHRvIGFj Y2VzcyBhIGRlYWQgY29ubmVjdGlvbi4KIAkgKi8KIAlBSC0+Y29ubmVjdGlvbiA9IE5VTEw7 CQkvKiBkb2RnZSBlcnJvciBjaGVjayBpbiBDb25uZWN0RGF0YWJhc2VBaHggKi8KQEAgLTE2 NCwxMiArMTY0LDExIEBAIHZvaWQKIERpc2Nvbm5lY3REYXRhYmFzZShBcmNoaXZlICpBSFgp CiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUggPSAoQXJjaGl2ZUhhbmRsZSAqKSBBSFg7Ci0JY2hh cgkJZXJyYnVmWzFdOwogCiAJaWYgKCFBSC0+Y29ubmVjdGlvbikKIAkJcmV0dXJuOwogCi0J aWYgKEFILT5jb25uQ2FuY2VsKQorCWlmIChBSC0+Y2FuY2VsQ29ubikKIAl7CiAJCS8qCiAJ CSAqIElmIHdlIGhhdmUgYW4gYWN0aXZlIHF1ZXJ5LCBzZW5kIGEgY2FuY2VsIGJlZm9yZSBj bG9zaW5nLCBpZ25vcmluZwpAQCAtMTc3LDcgKzE3Niw3IEBAIERpc2Nvbm5lY3REYXRhYmFz ZShBcmNoaXZlICpBSFgpCiAJCSAqIGhlbHBmdWwgZHVyaW5nIHBnX2ZhdGFsKCkuCiAJCSAq LwogCQlpZiAoUFF0cmFuc2FjdGlvblN0YXR1cyhBSC0+Y29ubmVjdGlvbikgPT0gUFFUUkFO U19BQ1RJVkUpCi0JCQkodm9pZCkgUFFjYW5jZWwoQUgtPmNvbm5DYW5jZWwsIGVycmJ1Ziwg c2l6ZW9mKGVycmJ1ZikpOworCQkJKHZvaWQpIFBRY2FuY2VsQmxvY2tpbmcoQUgtPmNhbmNl bENvbm4pOwogCiAJCS8qCiAJCSAqIFByZXZlbnQgc2lnbmFsIGhhbmRsZXIgZnJvbSBzZW5k aW5nIGEgY2FuY2VsIGFmdGVyIHRoaXMuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA4YWIzNWE4Yzgz ZS4uYTQ3NTExNTQyMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMK KysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtNTMzNiw3ICs1MzM2LDcgQEAg cnVuSW5pdFN0ZXBzKGNvbnN0IGNoYXIgKmluaXRpYWxpemVfc3RlcHMpCiAJaWYgKChjb24g PSBkb0Nvbm5lY3QoKSkgPT0gTlVMTCkKIAkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUg Y29ubmVjdGlvbiBmb3IgaW5pdGlhbGl6YXRpb24iKTsKIAotCXNldHVwX2NhbmNlbF9oYW5k bGVyKE5VTEwpOworCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwsIE5VTEwpOwogCVNldENh bmNlbENvbm4oY29uKTsKIAogCWZvciAoc3RlcCA9IGluaXRpYWxpemVfc3RlcHM7ICpzdGVw ICE9ICdcMCc7IHN0ZXArKykKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tb24uYyBi L3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCA3MjFmODczM2E1My4uNjY1NjhhMThmODEg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3BzcWwv Y29tbW9uLmMKQEAgLTMwNSwyMyArMzA1LDI3IEBAIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBz aWdpbnRfaW50ZXJydXB0X2VuYWJsZWQgPSBmYWxzZTsKIAogc2lnam1wX2J1ZglzaWdpbnRf aW50ZXJydXB0X2ptcDsKIAorI2lmbmRlZiBXSU4zMgogc3RhdGljIHZvaWQKIHBzcWxfY2Fu Y2VsX2NhbGxiYWNrKHZvaWQpCiB7Ci0jaWZuZGVmIFdJTjMyCiAJLyogaWYgd2UgYXJlIHdh aXRpbmcgZm9yIGlucHV0LCBsb25nam1wIG91dCBvZiBpdCAqLwogCWlmIChzaWdpbnRfaW50 ZXJydXB0X2VuYWJsZWQpCiAJewogCQlzaWdpbnRfaW50ZXJydXB0X2VuYWJsZWQgPSBmYWxz ZTsKIAkJc2lnbG9uZ2ptcChzaWdpbnRfaW50ZXJydXB0X2ptcCwgMSk7CiAJfQotI2VuZGlm CiB9CisjZW5kaWYKIAogdm9pZAogcHNxbF9zZXR1cF9jYW5jZWxfaGFuZGxlcih2b2lkKQog ewotCXNldHVwX2NhbmNlbF9oYW5kbGVyKHBzcWxfY2FuY2VsX2NhbGxiYWNrKTsKKyNpZm5k ZWYgV0lOMzIKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihwc3FsX2NhbmNlbF9jYWxsYmFjaywg TlVMTCk7CisjZWxzZQorCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwsIE5VTEwpOworI2Vu ZGlmCiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jIGIv c3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jCmluZGV4IDUzYmJiNDJjODgzLi5mMjgyYTg4 Yzc2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jCisrKyBiL3Ny Yy9iaW4vc2NyaXB0cy9jbHVzdGVyZGIuYwpAQCAtMTQwLDcgKzE0MCw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljcGFyYW1zLnByb21wdF9wYXNzd29yZCA9IHByb21w dF9wYXNzd29yZDsKIAljcGFyYW1zLm92ZXJyaWRlX2RibmFtZSA9IE5VTEw7CiAKLQlzZXR1 cF9jYW5jZWxfaGFuZGxlcihOVUxMKTsKKwlzZXR1cF9jYW5jZWxfaGFuZGxlcihOVUxMLCBO VUxMKTsKIAogCWlmIChhbGxkYikKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMv cmVpbmRleGRiLmMgYi9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMKaW5kZXggZDdmYjE2 ZDNjODUuLjc1NjEzYjk5NWVlIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvcmVpbmRl eGRiLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jCkBAIC0yMTEsNyArMjEx LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNwYXJhbXMucHJvbXB0X3Bh c3N3b3JkID0gcHJvbXB0X3Bhc3N3b3JkOwogCWNwYXJhbXMub3ZlcnJpZGVfZGJuYW1lID0g TlVMTDsKIAotCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwpOworCXNldHVwX2NhbmNlbF9o YW5kbGVyKE5VTEwsIE5VTEwpOwogCiAJaWYgKGNvbmN1cnJlbnRDb25zID4gMSAmJiBzeXNj YXRhbG9nKQogCQlwZ19mYXRhbCgiY2Fubm90IHVzZSBtdWx0aXBsZSBqb2JzIHRvIHJlaW5k ZXggc3lzdGVtIGNhdGFsb2dzIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvdmFj dXVtaW5nLmMgYi9zcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMKaW5kZXggODU1YTU3NTRj OTguLmVmYTQ4OTk4NTNmIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5n LmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5jCkBAIC01OCw3ICs1OCw3IEBA IHZhY3V1bWluZ19tYWluKENvbm5QYXJhbXMgKmNwYXJhbXMsIGNvbnN0IGNoYXIgKmRibmFt ZSwKIAkJCSAgIHVuc2lnbmVkIGludCB0YmxfY291bnQsIGludCBjb25jdXJyZW50Q29ucywK IAkJCSAgIGNvbnN0IGNoYXIgKnByb2duYW1lKQogewotCXNldHVwX2NhbmNlbF9oYW5kbGVy KE5VTEwpOworCXNldHVwX2NhbmNlbF9oYW5kbGVyKE5VTEwsIE5VTEwpOwogCiAJLyogQXZv aWQgb3BlbmluZyBleHRyYSBjb25uZWN0aW9ucy4gKi8KIAlpZiAodGJsX2NvdW50ID4gMCAm JiAoY29uY3VycmVudENvbnMgPiB0YmxfY291bnQpKQpkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0 aWxzL01ha2VmaWxlIGIvc3JjL2ZlX3V0aWxzL01ha2VmaWxlCmluZGV4IGNiZmJmOTNhYzY5 Li44MDlhYjIxY2MwYyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL01ha2VmaWxlCisrKyBi L3NyYy9mZV91dGlscy9NYWtlZmlsZQpAQCAtMTcsNyArMTcsNyBAQCBzdWJkaXIgPSBzcmMv ZmVfdXRpbHMKIHRvcF9idWlsZGRpciA9IC4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGly KS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKLW92ZXJyaWRlIENQUEZMQUdTIDo9IC1ERlJPTlRF TkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZMQUdTIDo9 IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYy9wb3J0 ICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCiAJYXJjaGl2ZS5vIFwKZGlmZiAtLWdpdCBhL3Ny Yy9mZV91dGlscy9jYW5jZWwuYyBiL3NyYy9mZV91dGlscy9jYW5jZWwuYwppbmRleCA5ZmFj MDRlMzMzZS4uNDUxNjY4ZjM4YjUgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9jYW5jZWwu YworKysgYi9zcmMvZmVfdXRpbHMvY2FuY2VsLmMKQEAgLTIsMTggKzIsMTcgQEAKICAqCiAg KiBRdWVyeSBjYW5jZWxsYXRpb24gc3VwcG9ydCBmb3IgZnJvbnRlbmQgY29kZQogICoKLSAq IFRoaXMgbW9kdWxlIHByb3ZpZGVzIFNJR0lOVC9DdHJsLUMgaGFuZGxpbmcgZm9yIGZyb250 ZW5kIHRvb2xzIHRoYXQgbmVlZCB0bwotICogY2FuY2VsIHF1ZXJpZXMgb3IgaW50ZXJydXB0 IG90aGVyIG9wZXJhdGlvbnMuICBJdCBwcm92aWRlcyB0aHJlZQotICogaW5kZXBlbmRlbnQg bWVjaGFuaXNtcywgYW55IGNvbWJpbmF0aW9uIG9mIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGFu Ci0gKiBhcHBsaWNhdGlvbjoKKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIFNJR0lOVC9DdHJs LUMgaGFuZGxpbmcgZm9yIGZyb250ZW5kIHRvb2xzIHRoYXQgbmVlZAorICogdG8gY2FuY2Vs IHF1ZXJpZXMgb3IgaW50ZXJydXB0IG90aGVyIG9wZXJhdGlvbnMuIEl0IGNvbWJpbmVzIGZv dXIgY29tcGxldGVseQorICogaW5kZXBlbmRlbnQgbWVjaGFuaXNtcywgYW55IGNvbWJpbmF0 aW9uIG9mIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGEgY2FsbGVyOgogICoKICAqIDEuIFNlcnZl ciBjYW5jZWwgcXVlcnkgcmVxdWVzdCAtLSBXaGVuIGEgcXVlcnkgaXMgcnVubmluZyBhbmQg dGhlIG1haW4KICAqICAgIHRocmVhZCBpcyB3YWl0aW5nIGZvciB0aGUgcmVzdWx0IG9mIHRo YXQgcXVlcnkgaW4gYSBibG9ja2luZyBtYW5uZXIsIHdlCiAgKiAgICB3YW50IFNJR0lOVC9D dHJsLUMgdG8gY2FuY2VsIHRoYXQgcXVlcnkuICBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieQog ICogICAgY2FsbGluZyBTZXRDYW5jZWxDb25uKCkgdG8gcmVnaXN0ZXIgdGhlIGNvbm5lY3Rp b24gdGhhdCBpcyAob3Igd2lsbCBiZSkKICAqICAgIHJ1bm5pbmcgdGhlIHF1ZXJ5LCBwcmlv ciB0byB3YWl0aW5nIGZvciB0aGUgcmVzdWx0LiAgV2hlbiBTSUdJTlQvQ3RybC1DCi0gKiAg ICBpcyByZWNlaXZlZCwgYSBjYW5jZWwgcmVxdWVzdCBmb3IgdGhpcyBjb25uZWN0aW9uIHdp bGwgdGhlbiBiZSBzZW50IGZyb20KLSAqICAgIHRoZSBzaWduYWwgaGFuZGxlciAob24gV2lu ZG93cywgZnJvbSBhIHNlcGFyYXRlIHRocmVhZCkuICBUaGF0IGluIHR1cm4KKyAqICAgIGlz IHJlY2VpdmVkLCBhIGNhbmNlbCByZXF1ZXN0IGZvciB0aGlzIGNvbm5lY3Rpb24gd2lsbCB0 aGVuIGJlIHNlbnQgdG8KKyAqICAgIHRoZSBzZXJ2ZXIgZnJvbSBhIHNlcGFyYXRlIHRocmVh ZC4gIFRoYXQgaW4gdHVybgogICogICAgd2lsbCB0aGVuIChhc3N1bWluZyBhIGNvLW9wZXJh dGluZyBzZXJ2ZXIpIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gY2FuY2VsCiAgKiAgICB0aGUgcXVl cnkgYW5kIHNlbmQgYW4gZXJyb3IgdG8gdGhlIHdhaXRpbmcgY2xpZW50IG9uIHRoZSBtYWlu IHRocmVhZC4KICAqICAgIFRoZSBjYW5jZWwgY29ubmVjdGlvbiBpcyBhIHByb2Nlc3Mtd2lk ZSBnbG9iYWwsIHNvIG9ubHkgb25lIGNvbm5lY3Rpb24KQEAgLTI2LDE1ICsyNSwzMCBAQAog ICogICAgbm90IGJsb2NrZWQgKGluZGVmaW5pdGVseSksIGJ1dCBuZWVkcyB0byB0YWtlIGFu IGFjdGlvbiB3aGVuIEN0cmwtQyBpcwogICogICAgcHJlc3NlZCwgc3VjaCBhcyBicmVhayBv dXQgb2YgYSBsb25nIHJ1bm5pbmcgbG9vcC4KICAqCi0gKiAzLiBTaWduYWwgaGFuZGxlciBj YWxsYmFjayAtLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbiBiZSByZWdpc3RlcmVkIHdpdGgK LSAqICAgIHNldHVwX2NhbmNlbF9oYW5kbGVyKCksIHdoaWNoIHdpbGwgdGhlbiBiZSBjYWxs ZWQgZGlyZWN0bHkgZnJvbSB0aGUKLSAqICAgIHNpZ25hbCBoYW5kbGVyIHdoZW5ldmVyIFNJ R0lOVCBpcyByZWNlaXZlZC4gIEJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gYQotICogICAg c2lnbmFsIGhhbmRsZXIsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBtdXN0IGJlIGFzeW5jLXNp Z25hbC1zYWZlLiAgT24KLSAqICAgIFdpbmRvd3MsIGl0IGlzIGNhbGxlZCBmcm9tIGEgc2Vw YXJhdGUgc2lnbmFsLWhhbmRsaW5nIHRocmVhZC4gIE5PVEU6IFRoZQotICogICAgY2FsbGJh Y2sgaXMgY2FsbGVkIEFGVEVSIHNldHRpbmcgQ2FuY2VsUmVxdWVzdGVkIGJ1dCBCRUZPUkUg c2VuZGluZyB0aGUKLSAqICAgIGNhbmNlbCByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgKGlmIGFy bWVkIGJ5IFNldENhbmNlbENvbm4pLiAgVGhpcyBtZWFucwotICogICAgdGhhdCBpZiB0aGUg Y2FsbGJhY2sgZXhpdHMgb3IgbG9uZ2ptcHMsIG5vIGNhbmNlbCByZXF1ZXN0IHdpbGwgYmUg c2VudAotICogICAgdG8gdGhlIHNlcnZlci4KKyAqIDMuIFRocmVhZCBoYW5kbGVyIGNhbGxi YWNrIC0tIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXIgcmVnaXN0ZXJlZCB2aWEKKyAq ICAgIHNldHVwX2NhbmNlbF9oYW5kbGVyKCkuIElmIHNldCwgdGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQgZnJvbSBhIHNlcGFyYXRlCisgKiAgICB0aHJlYWQgd2hlbiBhIGNhbmNlbCBzaWdu YWwgaXMgcmVjZWl2ZWQuIElmIG11bHRpcGxlIHNpZ25hbHMgYXJlIHJlY2VpdmVkCisgKiAg ICBpbiBxdWljayBzdWNjZXNzaW9uLCB0aGUgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCBvbmx5 IG9uY2UuIE9uIFdpbmRvd3MsCisgKiAgICB0aGlzIGlzIGNhbGxlZCBmcm9tIHRoZSBjb25z b2xlIGhhbmRsZXIgdGhyZWFkLiBPbiBVbml4LCB0aGlzIGlzIGNhbGxlZAorICogICAgZnJv bSB0aGUgY2FuY2VsIHRocmVhZCB0aGF0IGlzIHdva2VuIGJ5IHRoZSBzaWduYWwgaGFuZGxl ci4gVG8gZW5zdXJlCisgKiAgICBzYWZlIGFjY2VzcyB0byBzaGFyZWQgZGF0YSwgdGhlIGNh bmNlbCB0aHJlYWQgaG9sZHMgdGhlIGNhbmNlbCB0aHJlYWQKKyAqICAgIGxvY2sgZm9yIHRo ZSBkdXJhdGlvbiBvZiB0aGUgY2FsbGJhY2ssIHNvIGFueSBvdGhlciB0aHJlYWRzIHRoYXQg bmVlZAorICogICAgdG8gYWNjZXNzIHRoZSBzYW1lIGRhdGEgc2hvdWxkIGFsc28gYWNxdWly ZSB0aGF0IGxvY2sgdXNpbmcKKyAqICAgIExvY2tDYW5jZWxUaHJlYWQoKS9VbmxvY2tDYW5j ZWxUaHJlYWQoKS4KKyAqCisgKiA0LiBTaWduYWwgaGFuZGxlciBjYWxsYmFjayAtLSBUaGUg bW9zdCBjb21wbGV4IHdheSBvZiBjYW5jZWxpbmcgYW4KKyAqICAgIG9wZXJhdGlvbiwgd2hp Y2ggaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzLiBBbiBvcHRpb25hbCBzaWduYWxfY2Fs bGJhY2sKKyAqICAgIGZ1bmN0aW9uIHBvaW50ZXIgY2FuIGJlIHJlZ2lzdGVyZWQgdmlhIHNl dHVwX2NhbmNlbF9oYW5kbGVyKCkuICBJZiBzZXQsCisgKiAgICBpdCBpcyBjYWxsZWQgZGly ZWN0bHkgZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIsIHNvIGl0IG11c3QgYmUKKyAqICAgIGFz eW5jLXNpZ25hbC1zYWZlLiBXcml0aW5nIGFzeW5jLXNpZ25hbC1zYWZlIGNvZGUgaXMgbm90 IGVhc3ksIHNvIHRoaXMgaXMKKyAqICAgIG9ubHkgcmVjb21tZW5kZWQgYXMgYSBsYXN0IHJl c29ydC4gcHNxbCB1c2VzIHRoaXMgdG8gbG9uZ2ptcCBiYWNrIHRvIHRoZQorICogICAgbWFp biBsb29wIHdoZW4gbm8gcXVlcnkgaXMgYWN0aXZlLiBPbiBXaW5kb3dzLCB0aGlzIGZ1bmN0 aW9uIGlzIG5ldmVyCisgKiAgICBjYWxsZWQsIHNpbmNlIHRoZSBjb25zb2xlIGhhbmRsZXIg cnVucyBpbiBhIHNlcGFyYXRlIHRocmVhZCwgbm90IGEgc2lnbmFsCisgKiAgICBoYW5kbGVy LgorICogICAgTk9URTogVGhlIHNpZ25hbCBoYW5kbGVyIGNhbGxiYWNrIGlzIGNhbGxlZCBB RlRFUiBzZXR0aW5nIENhbmNlbFJlcXVlc3RlZAorICogICAgYnV0IEJFRk9SRSBub3RpZnlp bmcgdGhlIGNhbmNlbCB0aHJlYWQgdG8gc2VuZCBhIGNhbmNlbCByZXF1ZXN0IHRvIHRoZQor ICogICAgc2VydmVyIChpZiBhcm1lZCBieSBTZXRDYW5jZWxDb25uKS4gVGhpcyBtZWFucyB0 aGF0IGlmIHRoZSBjYWxsYmFjayBleGl0cworICogICAgb3IgbG9uZ2ptcHMgbm8gY2FuY2Vs IHJlcXVlc3Qgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAgKgogICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpAQCAtNDYsOSArNjAsMjEgQEAKIAogI2luY2x1 ZGUgInBvc3RncmVzX2ZlLmgiCiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx1 bmlzdGQuaD4KIAorI2lmbmRlZiBXSU4zMgorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYK KworI2lmZGVmIFdJTjMyCisjaW5jbHVkZSAicHRocmVhZC13aW4zMi5oIgorI2Vsc2UKKyNp bmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgImNvbW1vbi9jb25uZWN0 LmgiCisjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9j YW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIApAQCAtNjYs MTEgKzkyLDE5IEBACiAJCSh2b2lkKSByY187IFwKIAl9IHdoaWxlICgwKQogCisKKy8qCisg KiBDYW5jZWwgY29ubmVjdGlvbiB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIHNlbmQgY2FuY2Vs IHJlcXVlc3RzLgorICovCitzdGF0aWMgUEdjYW5jZWxDb25uICpjYW5jZWxDb25uID0gTlVM TDsKKwogLyoKLSAqIENvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNh bmNlbCBhIHF1ZXJ5IGlzc3VlZCBmcm9tCi0gKiBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gdG8g dGhlIGJhY2tlbmQuCisgKiBNdXRleCBoZWxkIGJ5IHRoZSBjYW5jZWwgdGhyZWFkIGZvciB0 aGUgZHVyYXRpb24gb2YgdGhlIGNhbmNlbCBjYWxsYmFjay4KKyAqIFNldENhbmNlbENvbm4o KS9SZXNldENhbmNlbENvbm4oKSBvbiB0aGUgbWFpbiB0aHJlYWQgdGFrZSB0aGlzIGxvY2sg dG9vLAorICogc28gdGhleSB3aWxsIHdhaXQgZm9yIGFueSBpbi1mbGlnaHQgY2FuY2VsIHRv IGZpbmlzaCBiZWZvcmUgcmVwbGFjaW5nIG9yCisgKiBmcmVlaW5nIGNhbmNlbENvbm4uCiAg Ki8KLXN0YXRpYyBQR2NhbmNlbCAqdm9sYXRpbGUgY2FuY2VsQ29ubiA9IE5VTEw7CitzdGF0 aWMgcHRocmVhZF9tdXRleF90IGNhbmNlbF90aHJlYWRfbG9jayA9IFBUSFJFQURfTVVURVhf SU5JVElBTElaRVI7CiAKIC8qCiAgKiBQcmVkZXRlcm1pbmVkIGxvY2FsaXplZCBlcnJvciBz dHJpbmdzIC0tLSBuZWVkZWQgdG8gYXZvaWQgdHJ5aW5nCkBAIC04OCwxNjggKzEyMiwxODAg QEAgc3RhdGljIGNvbnN0IGNoYXIgKmNhbmNlbF9ub3Rfc2VudF9tc2cgPSBOVUxMOwogICov CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2FuY2VsUmVxdWVzdGVkID0gZmFsc2U7CiAKLSNp ZmRlZiBXSU4zMgotc3RhdGljIENSSVRJQ0FMX1NFQ1RJT04gY2FuY2VsQ29ubkxvY2s7Ci0j ZW5kaWYKKy8qCisgKiBTaWduYWwgaGFuZGxlciBjYWxsYmFjaywgY2FsbGVkIGRpcmVjdGx5 IGZyb20gc2lnbmFsIGhhbmRsZXIgY29udGV4dC4KKyAqIE11c3QgYmUgYXN5bmMtc2lnbmFs LXNhZmUuCisgKi8KK3N0YXRpYyB2b2lkICgqc2lnbmFsX2NhbGxiYWNrX2ZuKSAodm9pZCkg PSBOVUxMOwogCiAvKgotICogQWRkaXRpb25hbCBjYWxsYmFjayBmb3IgY2FuY2VsbGF0aW9u cy4KKyAqIENhbmNlbCB0aHJlYWQgY2FsbGJhY2ssIGNhbGxlZCBmcm9tIHRoZSBjYW5jZWwg dGhyZWFkIChVbml4KSBvciBjb25zb2xlCisgKiBoYW5kbGVyIChXaW5kb3dzKSB3aGVuIGEg Y2FuY2VsIHNpZ25hbCBpcyByZWNlaXZlZC4KICAqLwotc3RhdGljIHZvaWQgKCpjYW5jZWxf Y2FsbGJhY2spICh2b2lkKSA9IE5VTEw7CitzdGF0aWMgdm9pZCAoKnRocmVhZF9jYWxsYmFj a19mbikgKHZvaWQpID0gTlVMTDsKKworI2lmbmRlZiBXSU4zMgorLyoKKyAqIE9uIFVuaXgs IHRoZSBTSUdJTlQgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGNhbGwgUFFjYW5jZWxCbG9ja2lu ZygpIGRpcmVjdGx5CisgKiBiZWNhdXNlIGl0IGlzIG5vdCBhc3luYy1zaWduYWwtc2FmZS4g IEluc3RlYWQsIHdlIHVzZSBhIHBpcGUgdG8gd2FrZSBhCisgKiBkZWRpY2F0ZWQgY2FuY2Vs IHRocmVhZDogdGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyBhIGJ5dGUgdG8gdGhlIHBpcGUs IGFuZAorICogdGhlIGNhbmNlbCB0aHJlYWQncyBibG9ja2luZyByZWFkKCkgcmV0dXJucywg dHJpZ2dlcmluZyB0aGUgYWN0dWFsIGNhbmNlbAorICogcmVxdWVzdC4KKyAqLworc3RhdGlj IGludAljYW5jZWxfcGlwZVsyXSA9IHstMSwgLTF9OworI2VuZGlmCiAKIAogLyoKLSAqIFNl dENhbmNlbENvbm4KKyAqIFNlbmQgYSBjYW5jZWwgcmVxdWVzdCB0byB0aGUgY29ubmVjdGlv biwgaWYgb25lIGlzIHNldC4KICAqCi0gKiBTZXQgY2FuY2VsQ29ubiB0byBwb2ludCB0byB0 aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9uLgorICogQ2FsbGVkIGZyb20gdGhlIGNh bmNlbCB0aHJlYWQgKFVuaXgpIG9yIHRoZSBjb25zb2xlIGhhbmRsZXIgdGhyZWFkCisgKiAo V2luZG93cyksIG5ldmVyIGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyIGl0c2VsZi4gIFRoZSBj YWxsZXIgaXMKKyAqIHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGNhbmNlbF90aHJlYWRfbG9j ay4KICAqLwotdm9pZAotU2V0Q2FuY2VsQ29ubihQR2Nvbm4gKmNvbm4pCitzdGF0aWMgdm9p ZAorU2VuZENhbmNlbFJlcXVlc3Qodm9pZCkKIHsKLQlQR2NhbmNlbCAgICpvbGRDYW5jZWxD b25uOwotCi0jaWZkZWYgV0lOMzIKLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29u bkxvY2spOwotI2VuZGlmCisJUEdjYW5jZWxDb25uICpjYzsKIAotCS8qIEZyZWUgdGhlIG9s ZCBvbmUgaWYgd2UgaGF2ZSBvbmUgKi8KLQlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29ubjsK KwljYyA9IGNhbmNlbENvbm47CisJaWYgKGNjID09IE5VTEwpCisJCXJldHVybjsKIAotCS8q IGJlIHN1cmUgaGFuZGxlX3NpZ2ludCBkb2Vzbid0IHVzZSBwb2ludGVyIHdoaWxlIGZyZWVp bmcgKi8KLQljYW5jZWxDb25uID0gTlVMTDsKKwl3cml0ZV9zdGRlcnIoY2FuY2VsX3NlbnRf bXNnKTsKIAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNlbChv bGRDYW5jZWxDb25uKTsKLQotCWNhbmNlbENvbm4gPSBQUWdldENhbmNlbChjb25uKTsKKwlp ZiAoIVBRY2FuY2VsQmxvY2tpbmcoY2MpKQorCXsKKwkJY2hhcgkgICAqZXJybXNnID0gUFFj YW5jZWxFcnJvck1lc3NhZ2UoY2MpOwogCi0jaWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2Fs U2VjdGlvbigmY2FuY2VsQ29ubkxvY2spOwotI2VuZGlmCisJCXdyaXRlX3N0ZGVycihjYW5j ZWxfbm90X3NlbnRfbXNnKTsKKwkJaWYgKGVycm1zZykKKwkJCXdyaXRlX3N0ZGVycihlcnJt c2cpOworCX0KKwkvKiBSZXNldCBmb3IgcG9zc2libGUgcmV1c2UgKi8KKwlQUWNhbmNlbFJl c2V0KGNjKTsKIH0KIAorCiAvKgotICogUmVzZXRDYW5jZWxDb25uCisgKiBIZWxwZXIgdG8g cmVwbGFjZSBjYW5jZWxDb25uIHdpdGggYSBuZXcgdmFsdWUuCiAgKgotICogRnJlZSB0aGUg Y3VycmVudCBjYW5jZWwgY29ubmVjdGlvbiwgaWYgYW55LCBhbmQgc2V0IHRvIE5VTEwuCisg KiBUYWtlcyBjYW5jZWxfdGhyZWFkX2xvY2ssIHdoaWNoIGFsc28gd2FpdHMgZm9yIGFueSBp bi1mbGlnaHQgY2FuY2VsCisgKiBjYWxsYmFjayB0byBmaW5pc2gsIHNpbmNlIHRoZSBjYW5j ZWwgdGhyZWFkIGhvbGRzIHRoZSBzYW1lIGxvY2suCiAgKi8KLXZvaWQKLVJlc2V0Q2FuY2Vs Q29ubih2b2lkKQorc3RhdGljIHZvaWQKK1NldENhbmNlbENvbm5JbnRlcm5hbChQR2NhbmNl bENvbm4gKm5ld0NhbmNlbENvbm4pCiB7Ci0JUEdjYW5jZWwgICAqb2xkQ2FuY2VsQ29ubjsK LQotI2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2Nr KTsKLSNlbmRpZgorCVBHY2FuY2VsQ29ubiAqb2xkQ2FuY2VsQ29ubjsKIAorCUxvY2tDYW5j ZWxUaHJlYWQoKTsKIAlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29ubjsKLQotCS8qIGJlIHN1 cmUgaGFuZGxlX3NpZ2ludCBkb2Vzbid0IHVzZSBwb2ludGVyIHdoaWxlIGZyZWVpbmcgKi8K LQljYW5jZWxDb25uID0gTlVMTDsKKwljYW5jZWxDb25uID0gbmV3Q2FuY2VsQ29ubjsKKwlV bmxvY2tDYW5jZWxUaHJlYWQoKTsKIAogCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0J CVBRZnJlZUNhbmNlbChvbGRDYW5jZWxDb25uKTsKLQotI2lmZGVmIFdJTjMyCi0JTGVhdmVD cml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLSNlbmRpZgorCQlQUWNhbmNlbEZp bmlzaChvbGRDYW5jZWxDb25uKTsKIH0KIAotCiAvKgotICogQ29kZSB0byBzdXBwb3J0IHF1 ZXJ5IGNhbmNlbGxhdGlvbgotICoKLSAqIE5vdGUgdGhhdCBzZW5kaW5nIHRoZSBjYW5jZWwg ZGlyZWN0bHkgZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIgaXMgc2FmZQotICogYmVjYXVzZSBQ UWNhbmNlbCgpIGlzIHdyaXR0ZW4gdG8gbWFrZSBpdCBzby4gIFdlIHVzZSB3cml0ZSgpIHRv IHJlcG9ydAotICogdG8gc3RkZXJyIGJlY2F1c2UgaXQncyBiZXR0ZXIgdG8gdXNlIHNpbXBs ZSBmYWNpbGl0aWVzIGluIGEgc2lnbmFsCi0gKiBoYW5kbGVyLgorICogU2V0Q2FuY2VsQ29u bgogICoKLSAqIE9uIFdpbmRvd3MsIHRoZSBzaWduYWwgY2FuY2VsaW5nIGhhcHBlbnMgb24g YSBzZXBhcmF0ZSB0aHJlYWQsIGJlY2F1c2UKLSAqIHRoYXQncyBob3cgU2V0Q29uc29sZUN0 cmxIYW5kbGVyIHdvcmtzLiAgVGhlIFBRY2FuY2VsIGZ1bmN0aW9uIGlzIHNhZmUKLSAqIGZv ciB0aGlzICh1bmxpa2UgUFFyZXF1ZXN0Q2FuY2VsKS4gIEhvd2V2ZXIsIGEgQ1JJVElDQUxf U0VDVElPTiBpcyByZXF1aXJlZAotICogdG8gcHJvdGVjdCB0aGUgUEdjYW5jZWwgc3RydWN0 dXJlIGFnYWluc3QgYmVpbmcgY2hhbmdlZCB3aGlsZSB0aGUgc2lnbmFsCi0gKiB0aHJlYWQg aXMgdXNpbmcgaXQuCisgKiBTZXQgY2FuY2VsQ29ubiB0byBwb2ludCB0byBhIGNhbmNlbCBj b25uZWN0aW9uIGZvciB0aGUgZ2l2ZW4gZGF0YWJhc2UKKyAqIGNvbm5lY3Rpb24uIFRoaXMg Y3JlYXRlcyBhIG5ldyBQR2NhbmNlbENvbm4gdGhhdCBjYW4gYmUgdXNlZCB0byBzZW5kCisg KiBjYW5jZWwgcmVxdWVzdHMuCiAgKi8KLQotI2lmbmRlZiBXSU4zMgordm9pZAorU2V0Q2Fu Y2VsQ29ubihQR2Nvbm4gKmNvbm4pCit7CisJU2V0Q2FuY2VsQ29ubkludGVybmFsKFBRY2Fu Y2VsQ3JlYXRlKGNvbm4pKTsKK30KIAogLyoKLSAqIGhhbmRsZV9zaWdpbnQKKyAqIFJlc2V0 Q2FuY2VsQ29ubgogICoKLSAqIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBieSBjYW5jZWxp bmcgdGhlIGN1cnJlbnQgY29tbWFuZCwgaWYgY2FuY2VsQ29ubgotICogaXMgc2V0LgorICog Q2xlYXIgY2FuY2VsQ29ubiwgcHJldmVudGluZyBhbnkgcGVuZGluZyBjYW5jZWwgZnJvbSBi ZWluZyBzZW50LgorICogV2FpdHMgZm9yIGFueSBpbi1mbGlnaHQgY2FuY2VsIHJlcXVlc3Qg dG8gY29tcGxldGUgZmlyc3QuCiAgKi8KLXN0YXRpYyB2b2lkCi1oYW5kbGVfc2lnaW50KFNJ R05BTF9BUkdTKQordm9pZAorUmVzZXRDYW5jZWxDb25uKHZvaWQpCiB7Ci0JY2hhcgkJZXJy YnVmWzI1Nl07CisJU2V0Q2FuY2VsQ29ubkludGVybmFsKE5VTEwpOworfQogCi0JQ2FuY2Vs UmVxdWVzdGVkID0gdHJ1ZTsKIAotCWlmIChjYW5jZWxfY2FsbGJhY2sgIT0gTlVMTCkKLQkJ Y2FuY2VsX2NhbGxiYWNrKCk7CisvKgorICogTG9ja0NhbmNlbFRocmVhZCAvIFVubG9ja0Nh bmNlbFRocmVhZAorICoKKyAqIEFjcXVpcmUgb3IgcmVsZWFzZSBjYW5jZWxfdGhyZWFkX2xv Y2suICBFeHRlcm5hbCBjYWxsZXJzIChlLmcuIHBnX2R1bXApCisgKiB1c2UgdGhlc2UgdG8g cHJvdGVjdCBzaGFyZWQgZGF0YSB0aGF0IHRoZSBjYW5jZWwtdGhyZWFkIGNhbGxiYWNrIGFs c28KKyAqIGFjY2Vzc2VzLCB3aXRob3V0IGV4cG9zaW5nIHRoZSBtdXRleCBkaXJlY3RseS4K KyAqLwordm9pZAorTG9ja0NhbmNlbFRocmVhZCh2b2lkKQoreworCXB0aHJlYWRfbXV0ZXhf bG9jaygmY2FuY2VsX3RocmVhZF9sb2NrKTsKK30KIAotCS8qIFNlbmQgUXVlcnlDYW5jZWwg aWYgd2UgYXJlIHByb2Nlc3NpbmcgYSBkYXRhYmFzZSBxdWVyeSAqLwotCWlmIChjYW5jZWxD b25uICE9IE5VTEwpCi0JewotCQlpZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwgZXJyYnVmLCBz aXplb2YoZXJyYnVmKSkpCi0JCXsKLQkJCXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cp OwotCQl9Ci0JCWVsc2UKLQkJewotCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9ub3Rfc2VudF9t c2cpOwotCQkJd3JpdGVfc3RkZXJyKGVycmJ1Zik7Ci0JCX0KLQl9Cit2b2lkCitVbmxvY2tD YW5jZWxUaHJlYWQodm9pZCkKK3sKKwlwdGhyZWFkX211dGV4X3VubG9jaygmY2FuY2VsX3Ro cmVhZF9sb2NrKTsKIH0KIAorI2lmbmRlZiBXSU4zMgogLyoKLSAqIHNldHVwX2NhbmNlbF9o YW5kbGVyCisgKiBSZXNldENhbmNlbEFmdGVyRm9yaworICoKKyAqIFJlc2V0IGNhbmNlbCBt b2R1bGUgc3RhdGUgYWZ0ZXIgZm9yaygpLiBUaHJlYWRzIGRvbid0IHN1cnZpdmUgZm9yaygp LCBzbyB0aGUKKyAqIGNhbmNlbCB0aHJlYWQgYW5kIGl0cyBwaXBlIGFyZSBnb25lLiBUaGUg bXV0ZXggbWF5IGhhdmUgYmVlbiBoZWxkIGJ5IHRoZQorICogY2FuY2VsIHRocmVhZCBhdCBm b3JrIHRpbWUsIHNvIHdlIG11c3QgcmVpbml0aWFsaXplIGl0IHJhdGhlciB0aGFuIHRyeWlu ZyB0bworICogdW5sb2NrIGl0LiAgY2FuY2VsQ29ubiBpcyBOVUxMZWQgd2l0aG91dCBmcmVl aW5nIGJlY2F1c2UgdGhlIHBhcmVudCBwcm9jZXNzCisgKiBvd25zIHRoZSB1bmRlcmx5aW5n IG9iamVjdC4gIFRoZSBTSUdJTlQgaGFuZGxlciBpcyByZXNldCB0byBTSUdfREZMIHNvIHRo YXQKKyAqIGEgc2lnbmFsIGFycml2aW5nIGJlZm9yZSBzZXR1cF9jYW5jZWxfaGFuZGxlcigp IGlzIGNhbGxlZCBhZ2FpbiBkb2Vzbid0IHRyeQorICogdG8gd3JpdGUgdG8gdGhlIGNsb3Nl ZCBwaXBlLgogICoKLSAqIFJlZ2lzdGVyIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjYWxsYmFjayBm b3IgU0lHSU5ULgorICogVGhlIGNoaWxkIHdpbGwgc2V0IHVwIGEgZnJlc2ggY2FuY2VsIHRo cmVhZCB3aGVuIGl0IGxhdGVyIGNhbGxzCisgKiBzZXR1cF9jYW5jZWxfaGFuZGxlcigpLgog ICovCiB2b2lkCi1zZXR1cF9jYW5jZWxfaGFuZGxlcih2b2lkICgqcXVlcnlfY2FuY2VsX2Nh bGxiYWNrKSAodm9pZCkpCitSZXNldENhbmNlbEFmdGVyRm9yayh2b2lkKQogewotCWNhbmNl bF9jYWxsYmFjayA9IHF1ZXJ5X2NhbmNlbF9jYWxsYmFjazsKLQljYW5jZWxfc2VudF9tc2cg PSBfKCJDYW5jZWwgcmVxdWVzdCBzZW50XG4iKTsKLQljYW5jZWxfbm90X3NlbnRfbXNnID0g XygiQ291bGQgbm90IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICIpOworCWNsb3NlKGNhbmNlbF9w aXBlWzBdKTsKKwljbG9zZShjYW5jZWxfcGlwZVsxXSk7CisJY2FuY2VsX3BpcGVbMF0gPSBj YW5jZWxfcGlwZVsxXSA9IC0xOwogCi0JcHFzaWduYWwoU0lHSU5ULCBoYW5kbGVfc2lnaW50 KTsKLX0KKwlwdGhyZWFkX211dGV4X2luaXQoJmNhbmNlbF90aHJlYWRfbG9jaywgTlVMTCk7 CisKKwljYW5jZWxDb25uID0gTlVMTDsKKwlDYW5jZWxSZXF1ZXN0ZWQgPSBmYWxzZTsKIAot I2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KKwlwcXNpZ25hbChTSUdJTlQsIFBHX1NJR19ERkwp OworfQorI2VuZGlmCiAKKyNpZmRlZiBXSU4zMgorLyoKKyAqIENvbnNvbGUgY29udHJvbCBo YW5kbGVyIGZvciBXaW5kb3dzLgorICoKKyAqIFRoaXMgcnVucyBpbiBhIHNlcGFyYXRlIHRo cmVhZCBjcmVhdGVkIGJ5IHRoZSBPUywgc28gd2UgY2FuIHNhZmVseSBjYWxsCisgKiB0aGUg YmxvY2tpbmcgY2FuY2VsIEFQSSBkaXJlY3RseS4KKyAqLwogc3RhdGljIEJPT0wgV0lOQVBJ CiBjb25zb2xlSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQogewotCWNoYXIJCWVycmJ1Zlsy NTZdOwotCiAJaWYgKGR3Q3RybFR5cGUgPT0gQ1RSTF9DX0VWRU5UIHx8CiAJCWR3Q3RybFR5 cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKIAl7CiAJCUNhbmNlbFJlcXVlc3RlZCA9IHRydWU7 CiAKLQkJaWYgKGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQotCQkJY2FuY2VsX2NhbGxiYWNr KCk7CisJCUxvY2tDYW5jZWxUaHJlYWQoKTsKIAotCQkvKiBTZW5kIFF1ZXJ5Q2FuY2VsIGlm IHdlIGFyZSBwcm9jZXNzaW5nIGEgZGF0YWJhc2UgcXVlcnkgKi8KLQkJRW50ZXJDcml0aWNh bFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLQkJaWYgKGNhbmNlbENvbm4gIT0gTlVMTCkK LQkJewotCQkJaWYgKFBRY2FuY2VsKGNhbmNlbENvbm4sIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1 ZikpKQotCQkJewotCQkJCXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cpOwotCQkJfQot CQkJZWxzZQotCQkJewotCQkJCXdyaXRlX3N0ZGVycihjYW5jZWxfbm90X3NlbnRfbXNnKTsK LQkJCQl3cml0ZV9zdGRlcnIoZXJyYnVmKTsKLQkJCX0KLQkJfQorCQlTZW5kQ2FuY2VsUmVx dWVzdCgpOwogCi0JCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZjYW5jZWxDb25uTG9jayk7CisJ CWlmICh0aHJlYWRfY2FsbGJhY2tfZm4gIT0gTlVMTCkKKwkJCXRocmVhZF9jYWxsYmFja19m bigpOworCisJCVVubG9ja0NhbmNlbFRocmVhZCgpOwogCiAJCXJldHVybiBUUlVFOwogCX0K QEAgLTI1OCwxNiArMzA0LDE2OSBAQCBjb25zb2xlSGFuZGxlcihEV09SRCBkd0N0cmxUeXBl KQogCQlyZXR1cm4gRkFMU0U7CiB9CiAKKyNlbHNlCQkJCQkJCS8qICFXSU4zMiAqLworCisv KgorICogU2lnbmFsIGhhbmRsZXIgdGhhdCBzZXR1cF9jYW5jZWxfaGFuZGxlciBjb25maWd1 cmVzIGZvciBTSUdJTlQuIEV4cG9zZWQgc28KKyAqIG90aGVyIHNpZ25hbHMgdGhhbiBTSUdJ TlQgY2FuIHVzZSBpdCBpZiBkZXNpcmVkLgorICovCiB2b2lkCi1zZXR1cF9jYW5jZWxfaGFu ZGxlcih2b2lkICgqY2FsbGJhY2spICh2b2lkKSkKK0NhbmNlbFNpZ25hbEhhbmRsZXIoU0lH TkFMX0FSR1MpCiB7Ci0JY2FuY2VsX2NhbGxiYWNrID0gY2FsbGJhY2s7Ci0JY2FuY2VsX3Nl bnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qgc2VudFxuIik7Ci0JY2FuY2VsX25vdF9zZW50 X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1ZXN0OiAiKTsKKwlpbnQJCQlz YXZlX2Vycm5vID0gZXJybm87CiAKLQlJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZjYW5j ZWxDb25uTG9jayk7CisJQ2FuY2VsUmVxdWVzdGVkID0gdHJ1ZTsKIAotCVNldENvbnNvbGVD dHJsSGFuZGxlcihjb25zb2xlSGFuZGxlciwgVFJVRSk7CisJaWYgKHNpZ25hbF9jYWxsYmFj a19mbiAhPSBOVUxMKQorCQlzaWduYWxfY2FsbGJhY2tfZm4oKTsKKworCS8qIFdha2UgdXAg dGhlIGNhbmNlbCB0aHJlYWQgKi8KKwlpZiAoY2FuY2VsX3BpcGVbMV0gPj0gMCkKKwl7CisJ CWNoYXIJCWMgPSAxOworCQlpbnQJCQlyYyA9IHdyaXRlKGNhbmNlbF9waXBlWzFdLCAmYywg MSk7CisKKwkJKHZvaWQpIHJjOworCX0KKworCWVycm5vID0gc2F2ZV9lcnJubzsKIH0KIAot I2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCisvKgorICogVGhyZWFkIG1haW4gZnVuY3Rpb24g Zm9yIGNyZWF0ZV9jYW5jZWxfdGhyZWFkLiAgV2FpdHMgZm9yIHRoZSBzaWduYWwKKyAqIGhh bmRsZXIgdG8gd3JpdGUgYSBieXRlIHRvIHRoZSBwaXBlLCB0aGVuIGNhbGxzIHRoZSBjYW5j ZWwgY2FsbGJhY2suCisgKi8KK3N0YXRpYyB2b2lkICoKK2NhbmNlbF90aHJlYWRfbG9vcCh2 b2lkICphcmcpCit7CisJZm9yICg7OykKKwl7CisJCWNoYXIJCWJ1ZlsxNl07CisJCXNzaXpl X3QJCXJjOworCisJCXJjID0gcmVhZChjYW5jZWxfcGlwZVswXSwgYnVmLCBzaXplb2YoYnVm KSk7CisJCWlmIChyYyA8PSAwKQorCQl7CisJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJ Y29udGludWU7CisJCQkvKiBQaXBlIGNsb3NlZCBvciBlcnJvciAtIGV4aXQgdGhyZWFkICov CisJCQlicmVhazsKKwkJfQorCisJCUxvY2tDYW5jZWxUaHJlYWQoKTsKKworCQlTZW5kQ2Fu Y2VsUmVxdWVzdCgpOworCisJCWlmICh0aHJlYWRfY2FsbGJhY2tfZm4gIT0gTlVMTCkKKwkJ CXRocmVhZF9jYWxsYmFja19mbigpOworCisJCS8qCisJCSAqIERyYWluIGFueSBwZW5kaW5n IGJ5dGVzIGZyb20gdGhlIGNhbmNlbCBwaXBlLCBzbyB0aGF0IHNpZ25hbHMKKwkJICogcmVj ZWl2ZWQgd2hpbGUgd2Ugd2VyZSBhbHJlYWR5IGhhbmRsaW5nIGEgY2FuY2VsIGRvbid0IGNh dXNlIHVzIHRvCisJCSAqIHdha2UgdXAgYWdhaW4gYW5kIGNhbmNlbCBhIHN1YnNlcXVlbnQg cXVlcnkuCisJCSAqLworCQlmY250bChjYW5jZWxfcGlwZVswXSwgRl9TRVRGTCwgT19OT05C TE9DSyk7CisJCXdoaWxlIChyZWFkKGNhbmNlbF9waXBlWzBdLCBidWYsIHNpemVvZihidWYp KSA+IDApCisJCQk7CQkJCQkvKiBsb29wIHVudGlsIHBpcGUgaXMgZnVsbHkgZHJhaW5lZCAq LworCQlmY250bChjYW5jZWxfcGlwZVswXSwgRl9TRVRGTCwgMCk7CisKKwkJVW5sb2NrQ2Fu Y2VsVGhyZWFkKCk7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBjcmVhdGVf Y2FuY2VsX3RocmVhZAorICoKKyAqIENyZWF0ZSBhIGRlZGljYXRlZCB0aHJlYWQgYW5kIGFz c29jaWF0ZWQgcGlwZSBmb3IgYXN5bmMtc2lnbmFsLXNhZmUgY2FuY2VsCisgKiBoYW5kbGlu Zy4gIFRoZSBwaXBlIGFsbG93cyBzaWduYWwgaGFuZGxlcnMgKHdoaWNoIGNhbm5vdCBzYWZl bHkgY2FsbCBjb21wbGV4CisgKiBmdW5jdGlvbnMpIHRvIHdha2UgdXAgdGhlIHRocmVhZCBi eSB3cml0aW5nIGEgYnl0ZS4KKyAqCisgKiBUaGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlIGlz IHNldCBub24tYmxvY2tpbmcgc28gc2lnbmFsIGhhbmRsZXJzIG5ldmVyCisgKiBibG9jay4g IFRoZSB0aHJlYWQgaXMgY3JlYXRlZCB3aXRoIGFsbCBzaWduYWxzIGJsb2NrZWQgc28gdGhh dCBzaWduYWxzIGFyZQorICogYWx3YXlzIGRlbGl2ZXJlZCB0byB0aGUgbWFpbiB0aHJlYWQu ICBUaGUgdGhyZWFkIHJ1bnMgdW50aWwgcHJvY2VzcyBleGl0LgorICogTm8gaGFuZGxlIGlz IHJldHVybmVkIGJlY2F1c2UgY3VycmVudGx5IG5vIGNhbGxlcnMgbmVlZCB0byBqb2luIGl0 LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX2NhbmNlbF90aHJlYWQodm9pZCkKK3sKKwlz aWdzZXRfdAlzYXZlX3NldDsKKwlzaWdzZXRfdAlibG9ja19zZXQ7CisJcHRocmVhZF90CXRo cmVhZDsKKwlpbnQJCQlyYzsKKworCWlmIChwaXBlKGNhbmNlbF9waXBlKSA8IDApCisJewor CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgY2FuY2VsOiAlbSIp OworCQlleGl0KDEpOworCX0KKworCS8qCisJICogTWFrZSB0aGUgd3JpdGUgZW5kIG5vbi1i bG9ja2luZywgc28gdGhhdCB0aGUgc2lnbmFsIGhhbmRsZXIgd29uJ3QgYmxvY2sKKwkgKiBp ZiB0aGUgcGlwZSBidWZmZXIgaXMgZnVsbCAod2hpY2ggaXMgdmVyeSB1bmxpa2VseSBpbiBw cmFjdGljZSBidXQKKwkgKiBwb3NzaWJsZSBpbiB0aGVvcnkpLgorCSAqLworCWZjbnRsKGNh bmNlbF9waXBlWzFdLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKworCS8qCisJICogQmxvY2sg YWxsIHNpZ25hbHMgYmVmb3JlIGNyZWF0aW5nIHRoZSBjYW5jZWwgdGhyZWFkLCBzbyB0aGF0 IGl0CisJICogaW5oZXJpdHMgYSBzaWduYWwgbWFzayB3aXRoIGFsbCBzaWduYWxzIGJsb2Nr ZWQuICBUaGlzIGVuc3VyZXMgc2lnbmFscworCSAqIGFyZSBhbHdheXMgZGVsaXZlcmVkIHRv IHRoZSBtYWluIHRocmVhZCwgd2hpY2ggbWF0dGVycyBiZWNhdXNlIHNvbWUKKwkgKiBzaWdu YWxfY2FsbGJhY2sgZnVuY3Rpb25zIGNhbGwgc2lnbG9uZ2ptcCgpIGJhY2sgdG8gYSBzaWdz ZXRqbXAoKSBvbgorCSAqIHRoZSBtYWluIHRocmVhZCdzIHN0YWNrLCBzcGVjaWZpY2FsbHkg dGhlIHBzcWxfY2FuY2VsX2NhbGxiYWNrCisJICogZnVuY3Rpb24uCisJICovCisJc2lnZmls bHNldCgmYmxvY2tfc2V0KTsKKwlwdGhyZWFkX3NpZ21hc2soU0lHX0JMT0NLLCAmYmxvY2tf c2V0LCAmc2F2ZV9zZXQpOworCisJcmMgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxM LCBjYW5jZWxfdGhyZWFkX2xvb3AsIE5VTEwpOworCisJcHRocmVhZF9zaWdtYXNrKFNJR19T RVRNQVNLLCAmc2F2ZV9zZXQsIE5VTEwpOworCisJaWYgKHJjICE9IDApCisJeworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgY2FuY2VsIHRocmVhZDogJXMiLCBzdHJlcnJv cihyYykpOworCQlleGl0KDEpOworCX0KKworCXB0aHJlYWRfZGV0YWNoKHRocmVhZCk7Cit9 CisKKyNlbmRpZgkJCQkJCQkvKiAhV0lOMzIgKi8KKworCisvKgorICogc2V0dXBfY2FuY2Vs X2hhbmRsZXIKKyAqCisgKiBTZXQgdXAgc2lnbmFsIGhhbmRsaW5nIGZvciBTSUdJTlQgKFVu aXgpIG9yIGNvbnNvbGUgZXZlbnRzIChXaW5kb3dzKSB0bworICogcGVyZm9ybSBjYW5jZWwg YWN0aW9ucy4KKyAqCisgKiBzaWduYWxfY2FsbGJhY2sgaXMgaW52b2tlZCBkaXJlY3RseSBm cm9tIHRoZSBzaWduYWwgaGFuZGxlciBjb250ZXh0IG9uCisgKiBldmVyeSBTSUdJTlQgKG9u IFVuaXgpLCBzbyBpdCBtdXN0IGJlIGFzeW5jLXNpZ25hbC1zYWZlLiAgQ2FuIGJlIE5VTEwu CisgKiBPbiBXaW5kb3dzLCBzaWduYWwgaGFuZGxlcnMgZG9uJ3QgZXhpc3QgKHRoZSBjb25z b2xlIGhhbmRsZXIgcnVucyBpbiBhCisgKiBzZXBhcmF0ZSB0aHJlYWQpLCBzbyBzaWduYWxf Y2FsbGJhY2sgbXVzdCBiZSBOVUxMLgorICoKKyAqIHRocmVhZF9jYWxsYmFjayBpcyBpbnZv a2VkIGZyb20gYSBkZWRpY2F0ZWQgY2FuY2VsIHRocmVhZCAoVW5peCkgb3IgdGhlCisgKiBj b25zb2xlIGhhbmRsZXIgdGhyZWFkIChXaW5kb3dzKSB3aGVuIGEgc2lnbmFsIGlzIHJlY2Vp dmVkLiBDYW4gYmUgTlVMTC4KKyAqLwordm9pZAorc2V0dXBfY2FuY2VsX2hhbmRsZXIodm9p ZCAoKnNpZ25hbF9jYWxsYmFjaykgKHZvaWQpLAorCQkJCQkgdm9pZCAoKnRocmVhZF9jYWxs YmFjaykgKHZvaWQpKQoreworI2lmZGVmIFdJTjMyCisJQXNzZXJ0KHNpZ25hbF9jYWxsYmFj ayA9PSBOVUxMKTsKKyNlbmRpZgorCisJc2lnbmFsX2NhbGxiYWNrX2ZuID0gc2lnbmFsX2Nh bGxiYWNrOworCXRocmVhZF9jYWxsYmFja19mbiA9IHRocmVhZF9jYWxsYmFjazsKKwljYW5j ZWxfc2VudF9tc2cgPSBfKCJTZW5kaW5nIGNhbmNlbCByZXF1ZXN0XG4iKTsKKwljYW5jZWxf bm90X3NlbnRfbXNnID0gXygiQ291bGQgbm90IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICIpOwor CisjaWZkZWYgV0lOMzIKKwlTZXRDb25zb2xlQ3RybEhhbmRsZXIoY29uc29sZUhhbmRsZXIs IFRSVUUpOworI2Vsc2UKKwljcmVhdGVfY2FuY2VsX3RocmVhZCgpOworCXBxc2lnbmFsKFNJ R0lOVCwgQ2FuY2VsU2lnbmFsSGFuZGxlcik7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2ZlX3V0aWxzL2NhbmNlbC5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvY2Fu Y2VsLmgKaW5kZXggZTE3NGZiODNiOTIuLmZlYjE5NzBkMzcyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9mZV91dGlscy9jYW5jZWwuaAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9j YW5jZWwuaApAQCAtMjMsMTAgKzIzLDE1IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGls ZSBzaWdfYXRvbWljX3QgQ2FuY2VsUmVxdWVzdGVkOwogZXh0ZXJuIHZvaWQgU2V0Q2FuY2Vs Q29ubihQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIHZvaWQgUmVzZXRDYW5jZWxDb25uKHZvaWQp OwogCi0vKgotICogQSBjYWxsYmFjayBjYW4gYmUgb3B0aW9uYWxseSBzZXQgdXAgdG8gYmUg Y2FsbGVkIGF0IGNhbmNlbGxhdGlvbgotICogdGltZS4KLSAqLwotZXh0ZXJuIHZvaWQgc2V0 dXBfY2FuY2VsX2hhbmRsZXIodm9pZCAoKnF1ZXJ5X2NhbmNlbF9jYWxsYmFjaykgKHZvaWQp KTsKK2V4dGVybiB2b2lkIHNldHVwX2NhbmNlbF9oYW5kbGVyKHZvaWQgKCpzaWduYWxfY2Fs bGJhY2spICh2b2lkKSwKKwkJCQkJCQkJIHZvaWQgKCp0aHJlYWRfY2FsbGJhY2spICh2b2lk KSk7CisKK2V4dGVybiB2b2lkIExvY2tDYW5jZWxUaHJlYWQodm9pZCk7CitleHRlcm4gdm9p ZCBVbmxvY2tDYW5jZWxUaHJlYWQodm9pZCk7CisKKyNpZm5kZWYgV0lOMzIKK2V4dGVybiB2 b2lkIFJlc2V0Q2FuY2VsQWZ0ZXJGb3JrKHZvaWQpOworZXh0ZXJuIHZvaWQgQ2FuY2VsU2ln bmFsSGFuZGxlcihTSUdOQUxfQVJHUyk7CisjZW5kaWYKIAogI2VuZGlmCQkJCQkJCS8qIENB TkNFTF9IICovCi0tIAoyLjQ3LjMKCg== --------------3ya1Vdf60QnNZwd0W6QSz8kw--