Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPfUk-00DFlj-5l for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jan 2024 09:12:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rPfUj-002OSv-1N for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Jan 2024 09:12:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPfUi-002OSn-G7 for pgsql-hackers@lists.postgresql.org; Tue, 16 Jan 2024 09:12:28 +0000 Received: from esa.hc2186-20.iphmx.com ([68.232.157.143]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rPfUe-0025be-3K for pgsql-hackers@lists.postgresql.org; Tue, 16 Jan 2024 09:12:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ebay.com; i=@ebay.com; q=dns/txt; s=ebaycorp; t=1705396344; x=1736932344; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=hxNv0GJHbeEOYsUQ+9keG5jvuvdriw6jNb6qaEX34Zs=; b=yl6RKS8xcX49tHuxMIVJiW3Li9HNXw3fsSe0tavdBGhNprh8Aa+kZewy IbTJz7+OE9UgFMJ0XBXXXBeJ3F5hJJvnResAG5aVA4KlWh3NXF2mEX5z4 /NLqTsBdOuu2Ek0TiAv7FwqQrGtZ9EBik1PVp14C4ZR6eeZnMHZnA8q14 E=; X-IronPort-RemoteIP: 216.113.163.67 X-IronPort-MID: 239049070 X-IronPort-Reputation: 3.7 X-IronPort-Listener: OutboundMail X-IronPort-SenderGroup: Vontu_to_CES_Outbound X-IronPort-MailFlowPolicy: $Vontu_to_CES_Outbound X-EBay-Corp: Yes X-IronPort-AV: E=Sophos;i="6.04,198,1695711600"; d="scan'208,217";a="239049070" Received: from slc-dlpoutbound.corp.ebay.com (HELO slc-ipatom-001.corp.ebay.com) ([216.113.163.67]) by esa1.hc2186-20.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 01:12:21 -0800 X-ATOM: Processed_By_ATOM X-IronPort-Trust: True Received: from mail-mw2nam04lp2168.outbound.protection.outlook.com (HELO NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.168]) by atom.corp.ebay.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 02:12:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jRunoqaEsmDSSn45mVGBzB3HOaarBEdlUj1zjQJC7z6hdPWKgWAmJnsU04SUFWs3nQQoTjP/ZQHNRoyv7ZIxJtNJJTCxCwvfXGNSUB/XlUsBqFkxq7OtJ35s7ztRYsAYg/IB/5BHav0YtOTb8BPqEfceGD4Rxj+m0g8gDv2BY+RvurJyXMIterYdHScMXiqmgtCKB7DPcoiLjEToy7eu3RRoN7LnQ/4vjONYh2PfXnAIBwbqqehKTStB3tqP8TjOW1qfFrX0vEUaF9h7pUXgxqeW7UZFcZTlhyUiQHc6OszReZtJt+JwoPJ8E9KDtekopRlou+cYQwsTGFjGJlOcLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sLJCXVXtgJBpauu45t46mCimbd9R1I/bwZErPLDZJYU=; b=mnqsPWtjiaX9yMzuXPrhtx5JrfMpNAfOznm7DyPjJ9OhkcfiuFKz0FbCGzT+iuWsrEdkACyWdXLbXkX5lSEuB33COME884CsPI8vx1VWIyF34B7d/pQr6zwV5O/+1IuoSy/E7IIiqA+rHYwzqw8PAzc2CJ1r8ctc8anYWCyWQSfD43wNkNc26ZkB6xGspOzZtgQylFT3fSnv+6d7mNH/OrBhqjGD52dLa5uCM6D9kAH3NP/zBR5LzEyVcppxGkYBWOWiMaZcX+v8NLPHn2+G0RFhJdeZe5e/1RTocg8dWUq3iPV85x2egKW2TL4rEnO9Uc4BYjgANITiAu+C2mc1JQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ebay.com; dmarc=pass action=none header.from=ebay.com; dkim=pass header.d=ebay.com; arc=none Received: from IA1PR07MB9829.namprd07.prod.outlook.com (2603:10b6:208:457::10) by SA1PR07MB9456.namprd07.prod.outlook.com (2603:10b6:806:29e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Tue, 16 Jan 2024 09:12:16 +0000 Received: from IA1PR07MB9829.namprd07.prod.outlook.com ([fe80::6f42:c972:40e7:972a]) by IA1PR07MB9829.namprd07.prod.outlook.com ([fe80::6f42:c972:40e7:972a%6]) with mapi id 15.20.7181.020; Tue, 16 Jan 2024 09:12:16 +0000 From: "Li, Yong" To: Aleksander Alekseev CC: PostgreSQL Hackers , "Bagga, Rishu" , Robert Haas , "Debnath, Shawn" , Andrey Borodin , "Shyrabokau, Anton" Subject: Re: Proposal to add page headers to SLRU pages Thread-Topic: Proposal to add page headers to SLRU pages Thread-Index: AQHaKNss5mPje/mnaE2h8Du+MbQszrCdm+4AgABCcICAADaUAP//iV2AgACdaQCAAOPEloAQTV+AgAFhagCAFb+ZgIADbdMAgBJqvoA= Date: Tue, 16 Jan 2024 09:12:16 +0000 Message-ID: <48CDC195-5030-4426-9E02-931D8AE14DF7@ebay.com> References: <162841701969726@mail-sendbernar-corp-main-71.iva.yp-c.yandex.net> <76110763-F29E-469E-AA62-2EED17875BB7@ebay.com> <1404E248-F2B2-48BC-9B5E-BB318F3BE583@amazon.com> <628CFBEF-DF56-4D9A-A2F1-0A417848B6B6@ebay.com> <359BB3DC-A174-43AF-A9BA-064CB6D2C7E9@ebay.com> In-Reply-To: <359BB3DC-A174-43AF-A9BA-064CB6D2C7E9@ebay.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ebay.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR07MB9829:EE_|SA1PR07MB9456:EE_ x-ms-office365-filtering-correlation-id: c0e50773-57aa-400e-1b07-08dc16733bfc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kIhMwBVLh7Ki39A4BiOTYG4iux6XZM5aSuMqZ92SHfaV7SFWEZZ+fEpmoUfaHPPiPi49rONSChd6FQ3p8mrg1r2IjNtRrKUXhZINIdSzWC/OUJchBliyk6T5CaVhyBBqlSouNEfSSIKz/q32y7+drIwyTDPvmBTd2wXXjQerYlW6togM2jVGg5wcTbpjijh+WfuX1Iu1fNXp7/B9Tw6iyycFEbehIRWMipWkaYsKME4uIjbA0VuOmPrvNuwtxSfXYhy/FRAoESc0uOtrRsXy1HmGZs+cXRaqsDHN517oxtNlgZ0u0T1CnPQLI69pBVjIPHa441cL08q4HUya8lgAkvG28u4CA+9UwTXivySJgab2IluSyjMP23xAxiqPBksepe74tAgDdGT/h4zc4VvlKm6XsSlHP8CR4jxRcttoNtZPOb3ESm2SDkmf8gcW250nvI1r5CyK3rOQFL3WN3b8IF6pW5d6OAwkWxB73zwKbL7prm2Kezo/9qwetu9fNTHrSzRZVJC7SZFpHh6wWCvKsygZOi6OB5xUmnem4u6HUxbfv6mP4m3WBUef/inFtNtnsVMP21oxpV9JiV7hGTsP9TEMiaHE7w3fMMw1GPtD2Hjon4ucixKJjNR12plAfhKAubx9ECpIXzVFwHHoX4lDAFB1XL/JQl1KPiYvQT34Yt6Ft9pBKX7h+8rzzsmpmBjD x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:IA1PR07MB9829.namprd07.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(136003)(346002)(366004)(396003)(39860400002)(230922051799003)(64100799003)(1800799012)(186009)(451199024)(64756008)(76116006)(6506007)(2616005)(107886003)(478600001)(4270600006)(6916009)(38100700002)(6512007)(26005)(8676002)(66556008)(66446008)(66476007)(4326008)(8936002)(54906003)(6486002)(71200400001)(2906002)(10290500003)(5660300002)(316002)(41300700001)(33656002)(36756003)(558084003)(66946007)(86362001)(99936003)(3613699003)(122000001)(91956017)(38070700009)(82960400001)(45980500001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Rv6YBHXssXNA5vtYZ+HZOz/UUBzi3reh/E1tXTQC+exR7ks6YZRXCZZje9NR?= =?us-ascii?Q?QR1XvdPxRGKDGQlD5LZ5Dl7CnWR1ndVAe3IsGh0kWLeZZvGbMeopK31vOOCx?= =?us-ascii?Q?iULSHj14b/1AqkG9Y4/7O61mmJ4d1WqoJupPQhiADaZ40ix/AbcJbkZasQID?= =?us-ascii?Q?5eNLKqbLTlPV420FNkvoHVaKJtc+fbBKXYgE9+alpKuMMXXvo97yzPOqWmZR?= =?us-ascii?Q?IKBLe5wh1tdvFxOkB0ZXj7cjk9UxrWxHI4EeCqazg10QNopIUEk2kVBuQz7Q?= =?us-ascii?Q?PHiprNtMpILkehGYoTc06z5n/BP5c0bFVvWCygzkzxwi7aBKeZX3umk06M/X?= =?us-ascii?Q?F5FTCORJrc4Gkc2ulWd8DAC54fm+68LDKD6ZXzUHBnqhMQjYk14NOlFDHZg6?= =?us-ascii?Q?1nati+vSO5s9p/e+ewig01hiMub+zWuuyGJyfggjM02c//AkfoBggjsNROCe?= =?us-ascii?Q?c3dDI1D7ZsLPHdOAIbt6v+RMy4DziQVS58d1iKeRzADc3aE+nR973wnOJiTU?= =?us-ascii?Q?VgsYIA1yy3BnbsFgNsQd0no0mKA/tiLqrK8M6MKS0GNemVccSTgMrZq2BZgd?= =?us-ascii?Q?cwLIcSUzOqpk3+NUOiu+KSDehyIrZpyC/ZIRLgbVyhqRRJ39oPw7xZ3k32Uz?= =?us-ascii?Q?DXbykgTQq7v+fbuJ+ZNy1twFsIpjHQTyzUxcpkbBCDfclhY6x2tmTSURJ52t?= =?us-ascii?Q?qpKrg7DWTKNU+JpnZVExei8xFw3/n0iqy/1rpHnsk+iR5+AOPxW4GrtIVNyr?= =?us-ascii?Q?z7U1hFxKgjt+ghDp/IDK+Nxzrf7YPib4AfDDrpf+wVKZK5jctV+vN2hGRgYl?= =?us-ascii?Q?kHTbLMXQKCsaUuinxw3m3t9+IkSzJX8nLTZVXtYP3x1iU3f8xf/ddoPzOKqi?= =?us-ascii?Q?v94XjzeAhpOt8DEztPbHoLJptvGB7/QHT7NH5tgEGVE2hel59t5mVOXJSLfK?= =?us-ascii?Q?fAY0wY1wv8OmFVXraJptf/0VaoJ4An/JU7I8Z2SQsKOXGrKSQNXzVyZDWQrA?= =?us-ascii?Q?s1bcCNK0L53KxFNi0Yrjh2VkAX3HrwMCedMMdMslyw0f3oVcuX5BofcyAmXv?= =?us-ascii?Q?qqo16SocLyGxbkqkgwWxRcfZ8Fzk/mb5wZ4OoxpYmWGtze9LG4v47caocSo1?= =?us-ascii?Q?JEr+YsCmLovnuhIO37+7Eew1Ob6uqcB6NadR8PyqHsug1zMt9N+23lIGbHqE?= =?us-ascii?Q?+G6MBwRenjUgYSTJjAEtJOwXZwUOn2FWKMjCJAI1JJH1fMJGXUnlqVo4FKzn?= =?us-ascii?Q?SJ2mR/zp4mviSCXPA+jX07WFeBSMyXVfqP2Df2oNOFnyKpFdRnAfjYm5ytoG?= =?us-ascii?Q?7g7W/uANW+GJmP6WNPELgmSUxNLs9Ha5l95hqMtVd0AwVknTDiZpjwuLktJi?= =?us-ascii?Q?ySrdaWhHNmqcqshh7JDafHz4m1n7PjN0dTkZAa2bWWEhSYyhrbmck1O9wuyq?= =?us-ascii?Q?CNcYP9KGwElAEdsKllBWphRzsMUVOMJmHp+ANn+GyRhN/XHLHwz7FaZpM+0C?= =?us-ascii?Q?SEW31b4I97lGHhbpjr93yYaZyvSHi4eWII4X7a/Xv9WJ+28nWhzrdLM1d48w?= =?us-ascii?Q?umSfJNVkhBMwgTIBrxcDWZZEhVZToLMyWLOmPIYY?= Content-Type: multipart/mixed; boundary="_004_48CDC195503044269E02931D8AE14DF7ebaycom_" MIME-Version: 1.0 X-OriginatorOrg: ebay.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR07MB9829.namprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0e50773-57aa-400e-1b07-08dc16733bfc X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2024 09:12:16.3169 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46326bff-9928-41a0-baca-17c16c94ea99 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YDLfaJKZD0yQt4/W6RIOR3LtuhZF0zfTXdi8nn2nb+A47lfBj7e2cVebzkZA9184 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR07MB9456 X-CFilter-Loop: Reflected List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_48CDC195503044269E02931D8AE14DF7ebaycom_ Content-Type: multipart/alternative; boundary="_000_48CDC195503044269E02931D8AE14DF7ebaycom_" --_000_48CDC195503044269E02931D8AE14DF7ebaycom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Rebase the patch against the latest HEAD. Regards, Yong --_000_48CDC195503044269E02931D8AE14DF7ebaycom_ Content-Type: text/html; charset="us-ascii" Content-ID: <3456DC968E0FDC4E94AF0CA618BC32B3@namprd07.prod.outlook.com> Content-Transfer-Encoding: quoted-printable
Rebase the patch against the latest HEAD.

Regards,
Yong

--_000_48CDC195503044269E02931D8AE14DF7ebaycom_-- --_004_48CDC195503044269E02931D8AE14DF7ebaycom_ Content-Type: application/octet-stream; name="slru_page_header_v4.patch" Content-Description: slru_page_header_v4.patch Content-Disposition: attachment; filename="slru_page_header_v4.patch"; size=56111; creation-date="Tue, 16 Jan 2024 09:12:16 GMT"; modification-date="Tue, 16 Jan 2024 09:12:16 GMT" Content-ID: <167201C6EA90E74488A9180EC53A0484@namprd07.prod.outlook.com> Content-Transfer-Encoding: base64 IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgIHwgIDUyICsrKysrLS0tLS0N CiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyB8ICAyNiArKystLQ0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIHwgIDYzICsrKysrKystLS0tLQ0K IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyAgICAgIHwgMTEzICsrKysrKystLS0t LS0tLS0tLS0tLS0NCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jICB8ICAx MiArLS0NCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICB8ICAyNyArKyst LS0NCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICB8ICAxNiArLS0NCiBz cmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jICAgICB8ICAyNSArKysrKw0KIHNyYy9i aW4vcGdfY2hlY2tzdW1zL3BnX2NoZWNrc3Vtcy5jICAgIHwgICA5ICsrDQogc3JjL2Jpbi9wZ19y ZXNldHdhbC90LzAwMV9iYXNpYy5wbCAgICAgfCAgIDYgKy0NCiBzcmMvYmluL3BnX3VwZ3JhZGUv ZmlsZS5jICAgICAgICAgICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jICAgICAgICB8ICAyMyArKystLQ0K IHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAgICAgIHwgICA2ICsrDQogc3JjL2lu Y2x1ZGUvYWNjZXNzL3NscnUuaCAgICAgICAgICAgICAgfCAgMTUgKy0tDQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgfCAgIDIgKy0NCiBzcmMvaW5jbHVkZS9zdG9yYWdl L2J1ZnBhZ2UuaCAgICAgICAgICB8ICAgNyArKw0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1 L3Rlc3Rfc2xydS5jIHwgIDEzICstLQ0KIDE3IGZpbGVzIGNoYW5nZWQsIDM5NSBpbnNlcnRpb25z KCspLCAxOTIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9jbG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMNCmluZGV4 IGY2ZTdkYTdmZmMuLmViZmM2ZTFlZjggMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9jbG9nLmMNCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYw0K QEAgLTQxLDYgKzQxLDcgQEANCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiDQogI2luY2x1ZGUgInBn X3RyYWNlLmgiDQogI2luY2x1ZGUgInBnc3RhdC5oIg0KKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBh Z2UuaCINCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiDQogI2luY2x1ZGUgInN0b3JhZ2Uvc3lu Yy5oIg0KIA0KQEAgLTU5LDcgKzYwLDcgQEANCiAvKiBXZSBuZWVkIHR3byBiaXRzIHBlciB4YWN0 LCBzbyBmb3VyIHhhY3RzIGZpdCBpbiBhIGJ5dGUgKi8NCiAjZGVmaW5lIENMT0dfQklUU19QRVJf WEFDVAkyDQogI2RlZmluZSBDTE9HX1hBQ1RTX1BFUl9CWVRFIDQNCi0jZGVmaW5lIENMT0dfWEFD VFNfUEVSX1BBR0UgKEJMQ0tTWiAqIENMT0dfWEFDVFNfUEVSX0JZVEUpDQorI2RlZmluZSBDTE9H X1hBQ1RTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgKiBDTE9HX1hBQ1RTX1BFUl9CWVRF KQ0KICNkZWZpbmUgQ0xPR19YQUNUX0JJVE1BU0sJKCgxIDw8IENMT0dfQklUU19QRVJfWEFDVCkg LSAxKQ0KIA0KIA0KQEAgLTc3LDEzICs3OCw2IEBAIFRyYW5zYWN0aW9uSWRUb1BhZ2UoVHJhbnNh Y3Rpb25JZCB4aWQpDQogI2RlZmluZSBUcmFuc2FjdGlvbklkVG9CeXRlKHhpZCkJKFRyYW5zYWN0 aW9uSWRUb1BnSW5kZXgoeGlkKSAvIENMT0dfWEFDVFNfUEVSX0JZVEUpDQogI2RlZmluZSBUcmFu c2FjdGlvbklkVG9CSW5kZXgoeGlkKQkoKHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkgQ0xPR19YQUNU U19QRVJfQllURSkNCiANCi0vKiBXZSBzdG9yZSB0aGUgbGF0ZXN0IGFzeW5jIExTTiBmb3IgZWFj aCBncm91cCBvZiB0cmFuc2FjdGlvbnMgKi8NCi0jZGVmaW5lIENMT0dfWEFDVFNfUEVSX0xTTl9H Uk9VUAkzMgkvKiBrZWVwIHRoaXMgYSBwb3dlciBvZiAyICovDQotI2RlZmluZSBDTE9HX0xTTlNf UEVSX1BBR0UJKENMT0dfWEFDVFNfUEVSX1BBR0UgLyBDTE9HX1hBQ1RTX1BFUl9MU05fR1JPVVAp DQotDQotI2RlZmluZSBHZXRMU05JbmRleChzbG90bm8sIHhpZCkJKChzbG90bm8pICogQ0xPR19M U05TX1BFUl9QQUdFICsgXA0KLQkoKHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkgQ0xPR19YQUNUU19Q RVJfUEFHRSkgLyBDTE9HX1hBQ1RTX1BFUl9MU05fR1JPVVApDQotDQogLyoNCiAgKiBUaGUgbnVt YmVyIG9mIHN1YnRyYW5zYWN0aW9ucyBiZWxvdyB3aGljaCB3ZSBjb25zaWRlciB0byBhcHBseSBj bG9nIGdyb3VwDQogICogdXBkYXRlIG9wdGltaXphdGlvbi4gIFRlc3RpbmcgcmV2ZWFscyB0aGF0 IHRoZSBudW1iZXIgaGlnaGVyIHRoYW4gdGhpcyBjYW4NCkBAIC0xMDEsNyArOTUsNyBAQCBzdGF0 aWMgU2xydUN0bERhdGEgWGFjdEN0bERhdGE7DQogDQogc3RhdGljIGludAlaZXJvQ0xPR1BhZ2Uo aW50NjQgcGFnZW5vLCBib29sIHdyaXRlWGxvZyk7DQogc3RhdGljIGJvb2wgQ0xPR1BhZ2VQcmVj ZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOw0KLXN0YXRpYyB2b2lkIFdyaXRlWmVyb1Bh Z2VYbG9nUmVjKGludDY0IHBhZ2Vubyk7DQorc3RhdGljIFhMb2dSZWNQdHIgV3JpdGVaZXJvUGFn ZVhsb2dSZWMoaW50NjQgcGFnZW5vKTsNCiBzdGF0aWMgdm9pZCBXcml0ZVRydW5jYXRlWGxvZ1Jl YyhpbnQ2NCBwYWdlbm8sIFRyYW5zYWN0aW9uSWQgb2xkZXN0WGFjdCwNCiAJCQkJCQkJCSBPaWQg b2xkZXN0WGFjdERiKTsNCiBzdGF0aWMgdm9pZCBUcmFuc2FjdGlvbklkU2V0UGFnZVN0YXR1cyhU cmFuc2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLA0KQEAgLTU4Myw4ICs1NzcsOSBAQCBUcmFu c2FjdGlvbklkU2V0U3RhdHVzQml0KFRyYW5zYWN0aW9uSWQgeGlkLCBYaWRTdGF0dXMgc3RhdHVz LCBYTG9nUmVjUHRyIGxzbiwgaQ0KIAljaGFyCSAgICpieXRlcHRyOw0KIAljaGFyCQlieXRldmFs Ow0KIAljaGFyCQljdXJ2YWw7DQorCVBhZ2UgICAgICAgIHBhZ2UgPSBYYWN0Q3RsLT5zaGFyZWQt PnBhZ2VfYnVmZmVyW3Nsb3Rub107DQogDQotCWJ5dGVwdHIgPSBYYWN0Q3RsLT5zaGFyZWQtPnBh Z2VfYnVmZmVyW3Nsb3Rub10gKyBieXRlbm87DQorCWJ5dGVwdHIgPSBQYWdlR2V0Q29udGVudHMo cGFnZSkgKyBieXRlbm87DQogCWN1cnZhbCA9ICgqYnl0ZXB0ciA+PiBic2hpZnQpICYgQ0xPR19Y QUNUX0JJVE1BU0s7DQogDQogCS8qDQpAQCAtNjEzLDcgKzYwOCw3IEBAIFRyYW5zYWN0aW9uSWRT ZXRTdGF0dXNCaXQoVHJhbnNhY3Rpb25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0dXMsIFhMb2dSZWNQ dHIgbHNuLCBpDQogCSpieXRlcHRyID0gYnl0ZXZhbDsNCiANCiAJLyoNCi0JICogVXBkYXRlIHRo ZSBncm91cCBMU04gaWYgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gTFNOIGlzIGhpZ2hlci4N CisJICogVXBkYXRlIHRoZSBwYWdlIExTTiBpZiB0aGUgdHJhbnNhY3Rpb24gY29tcGxldGlvbiBM U04gaXMgaGlnaGVyLg0KIAkgKg0KIAkgKiBOb3RlOiBsc24gd2lsbCBiZSBpbnZhbGlkIHdoZW4g c3VwcGxpZWQgZHVyaW5nIEluUmVjb3ZlcnkgcHJvY2Vzc2luZywNCiAJICogc28gd2UgZG9uJ3Qg bmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsIHRvIGF2b2lkIExTTiB1cGRhdGVzIGR1cmluZw0K QEAgLTYyMiwxMCArNjE3LDggQEAgVHJhbnNhY3Rpb25JZFNldFN0YXR1c0JpdChUcmFuc2FjdGlv bklkIHhpZCwgWGlkU3RhdHVzIHN0YXR1cywgWExvZ1JlY1B0ciBsc24sIGkNCiAJICovDQogCWlm ICghWExvZ1JlY1B0cklzSW52YWxpZChsc24pKQ0KIAl7DQotCQlpbnQJCQlsc25pbmRleCA9IEdl dExTTkluZGV4KHNsb3RubywgeGlkKTsNCi0NCi0JCWlmIChYYWN0Q3RsLT5zaGFyZWQtPmdyb3Vw X2xzbltsc25pbmRleF0gPCBsc24pDQotCQkJWGFjdEN0bC0+c2hhcmVkLT5ncm91cF9sc25bbHNu aW5kZXhdID0gbHNuOw0KKwkJaWYgKFBhZ2VHZXRMU04ocGFnZSkgPCBsc24pDQorCQkJUGFnZVNl dExTTihwYWdlLCBsc24pOw0KIAl9DQogfQ0KIA0KQEAgLTY1MSwxOSArNjQ0LDE5IEBAIFRyYW5z YWN0aW9uSWRHZXRTdGF0dXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgKmxzbikNCiAJ aW50CQkJYnl0ZW5vID0gVHJhbnNhY3Rpb25JZFRvQnl0ZSh4aWQpOw0KIAlpbnQJCQlic2hpZnQg PSBUcmFuc2FjdGlvbklkVG9CSW5kZXgoeGlkKSAqIENMT0dfQklUU19QRVJfWEFDVDsNCiAJaW50 CQkJc2xvdG5vOw0KLQlpbnQJCQlsc25pbmRleDsNCisJUGFnZSAgICAgICAgcGFnZTsNCiAJY2hh cgkgICAqYnl0ZXB0cjsNCiAJWGlkU3RhdHVzCXN0YXR1czsNCiANCiAJLyogbG9jayBpcyBhY3F1 aXJlZCBieSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seSAqLw0KIA0KIAlzbG90bm8gPSBTaW1w bGVMcnVSZWFkUGFnZV9SZWFkT25seShYYWN0Q3RsLCBwYWdlbm8sIHhpZCk7DQotCWJ5dGVwdHIg PSBYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gKyBieXRlbm87DQorCXBhZ2Ug PSBYYWN0Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCWJ5dGVwdHIgPSBQYWdl R2V0Q29udGVudHMocGFnZSkgKyBieXRlbm87DQogDQogCXN0YXR1cyA9ICgqYnl0ZXB0ciA+PiBi c2hpZnQpICYgQ0xPR19YQUNUX0JJVE1BU0s7DQogDQotCWxzbmluZGV4ID0gR2V0TFNOSW5kZXgo c2xvdG5vLCB4aWQpOw0KLQkqbHNuID0gWGFjdEN0bC0+c2hhcmVkLT5ncm91cF9sc25bbHNuaW5k ZXhdOw0KKwkqbHNuID0gUGFnZUdldExTTihwYWdlKTsNCiANCiAJTFdMb2NrUmVsZWFzZShYYWN0 U0xSVUxvY2spOw0KIA0KQEAgLTY5OCwxNCArNjkxLDE0IEBAIENMT0dTaG1lbUJ1ZmZlcnModm9p ZCkNCiBTaXplDQogQ0xPR1NobWVtU2l6ZSh2b2lkKQ0KIHsNCi0JcmV0dXJuIFNpbXBsZUxydVNo bWVtU2l6ZShDTE9HU2htZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJfUEFHRSk7DQorCXJldHVy biBTaW1wbGVMcnVTaG1lbVNpemUoQ0xPR1NobWVtQnVmZmVycygpKTsNCiB9DQogDQogdm9pZA0K IENMT0dTaG1lbUluaXQodm9pZCkNCiB7DQogCVhhY3RDdGwtPlBhZ2VQcmVjZWRlcyA9IENMT0dQ YWdlUHJlY2VkZXM7DQotCVNpbXBsZUxydUluaXQoWGFjdEN0bCwgIlhhY3QiLCBDTE9HU2htZW1C dWZmZXJzKCksIENMT0dfTFNOU19QRVJfUEFHRSwNCisJU2ltcGxlTHJ1SW5pdChYYWN0Q3RsLCAi WGFjdCIsIENMT0dTaG1lbUJ1ZmZlcnMoKSwNCiAJCQkJICBYYWN0U0xSVUxvY2ssICJwZ194YWN0 IiwgTFdUUkFOQ0hFX1hBQ1RfQlVGRkVSLA0KIAkJCQkgIFNZTkNfSEFORExFUl9DTE9HLCBmYWxz ZSk7DQogCVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoWGFjdEN0bCwgQ0xPR19YQUNUU19QRVJf UEFHRSk7DQpAQCAtNzQ3LDExICs3NDAsMTcgQEAgc3RhdGljIGludA0KIFplcm9DTE9HUGFnZShp bnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVYbG9nKQ0KIHsNCiAJaW50CQkJc2xvdG5vOw0KKwlQYWdl IAkJcGFnZTsNCisJWExvZ1JlY1B0ciAgbHNuID0gMDsNCiANCiAJc2xvdG5vID0gU2ltcGxlTHJ1 WmVyb1BhZ2UoWGFjdEN0bCwgcGFnZW5vKTsNCisJcGFnZSA9IFhhY3RDdGwtPnNoYXJlZC0+cGFn ZV9idWZmZXJbc2xvdG5vXTsNCiANCiAJaWYgKHdyaXRlWGxvZykNCi0JCVdyaXRlWmVyb1BhZ2VY bG9nUmVjKHBhZ2Vubyk7DQorCXsNCisJCWxzbiA9IFdyaXRlWmVyb1BhZ2VYbG9nUmVjKHBhZ2Vu byk7DQorCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7DQorCX0NCiANCiAJcmV0dXJuIHNsb3RubzsN CiB9DQpAQCAtODA3LDEyICs4MDYsMTIgQEAgVHJpbUNMT0codm9pZCkNCiAJCWNoYXIJICAgKmJ5 dGVwdHI7DQogDQogCQlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShYYWN0Q3RsLCBwYWdlbm8s IGZhbHNlLCB4aWQpOw0KLQkJYnl0ZXB0ciA9IFhhY3RDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJb c2xvdG5vXSArIGJ5dGVubzsNCisJCWJ5dGVwdHIgPSBQYWdlR2V0Q29udGVudHMoWGFjdEN0bC0+ c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArIGJ5dGVubzsNCiANCiAJCS8qIFplcm8gc28t ZmFyLXVudXNlZCBwb3NpdGlvbnMgaW4gdGhlIGN1cnJlbnQgYnl0ZSAqLw0KIAkJKmJ5dGVwdHIg Jj0gKDEgPDwgYnNoaWZ0KSAtIDE7DQogCQkvKiBaZXJvIHRoZSByZXN0IG9mIHRoZSBwYWdlICov DQotCQlNZW1TZXQoYnl0ZXB0ciArIDEsIDAsIEJMQ0tTWiAtIGJ5dGVubyAtIDEpOw0KKwkJTWVt U2V0KGJ5dGVwdHIgKyAxLCAwLCBTaXplT2ZQYWdlQ29udGVudHMgLSBieXRlbm8gLSAxKTsNCiAN CiAJCVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gdHJ1ZTsNCiAJfQ0KQEAg LTgzNiw3ICs4MzUsNiBAQCBDaGVja1BvaW50Q0xPRyh2b2lkKQ0KIAlUUkFDRV9QT1NUR1JFU1FM X0NMT0dfQ0hFQ0tQT0lOVF9ET05FKHRydWUpOw0KIH0NCiANCi0NCiAvKg0KICAqIE1ha2Ugc3Vy ZSB0aGF0IENMT0cgaGFzIHJvb20gZm9yIGEgbmV3bHktYWxsb2NhdGVkIFhJRC4NCiAgKg0KQEAg LTk1OCwxMiArOTU2LDEyIEBAIENMT0dQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBh Z2UyKQ0KIC8qDQogICogV3JpdGUgYSBaRVJPUEFHRSB4bG9nIHJlY29yZA0KICAqLw0KLXN0YXRp YyB2b2lkDQorc3RhdGljIFhMb2dSZWNQdHINCiBXcml0ZVplcm9QYWdlWGxvZ1JlYyhpbnQ2NCBw YWdlbm8pDQogew0KIAlYTG9nQmVnaW5JbnNlcnQoKTsNCiAJWExvZ1JlZ2lzdGVyRGF0YSgoY2hh ciAqKSAoJnBhZ2VubyksIHNpemVvZihwYWdlbm8pKTsNCi0JKHZvaWQpIFhMb2dJbnNlcnQoUk1f Q0xPR19JRCwgQ0xPR19aRVJPUEFHRSk7DQorCXJldHVybiBYTG9nSW5zZXJ0KFJNX0NMT0dfSUQs IENMT0dfWkVST1BBR0UpOw0KIH0NCiANCiAvKg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29t bWl0X3RzLmMNCmluZGV4IDYxYjgyMzg1ZjMuLmNjOTM4OGY1ZDIgMTAwNjQ0DQotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYw0KKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMNCkBAIC0zMSw2ICszMSw3IEBADQogI2luY2x1ZGUgImZ1 bmNhcGkuaCINCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiDQogI2luY2x1ZGUgInBnX3RyYWNlLmgi DQorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIg0KICNpbmNsdWRlICJzdG9yYWdlL3NobWVt LmgiDQogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiDQogI2luY2x1ZGUgInV0aWxzL3NuYXBt Z3IuaCINCkBAIC02Myw3ICs2NCw3IEBAIHR5cGVkZWYgc3RydWN0IENvbW1pdFRpbWVzdGFtcEVu dHJ5DQogCQkJCQkJCQkJc2l6ZW9mKFJlcE9yaWdpbklkKSkNCiANCiAjZGVmaW5lIENPTU1JVF9U U19YQUNUU19QRVJfUEFHRSBcDQotCShCTENLU1ogLyBTaXplT2ZDb21taXRUaW1lc3RhbXBFbnRy eSkNCisJKFNpemVPZlBhZ2VDb250ZW50cyAvIFNpemVPZkNvbW1pdFRpbWVzdGFtcEVudHJ5KQ0K IA0KIA0KIC8qDQpAQCAtMTIwLDcgKzEyMSw3IEBAIHN0YXRpYyBpbnQJWmVyb0NvbW1pdFRzUGFn ZShpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVYbG9nKTsNCiBzdGF0aWMgYm9vbCBDb21taXRUc1Bh Z2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOw0KIHN0YXRpYyB2b2lkIEFjdGl2 YXRlQ29tbWl0VHModm9pZCk7DQogc3RhdGljIHZvaWQgRGVhY3RpdmF0ZUNvbW1pdFRzKHZvaWQp Ow0KLXN0YXRpYyB2b2lkIFdyaXRlWmVyb1BhZ2VYbG9nUmVjKGludDY0IHBhZ2Vubyk7DQorc3Rh dGljIFhMb2dSZWNQdHIgV3JpdGVaZXJvUGFnZVhsb2dSZWMoaW50NjQgcGFnZW5vKTsNCiBzdGF0 aWMgdm9pZCBXcml0ZVRydW5jYXRlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIFRyYW5zYWN0aW9uSWQg b2xkZXN0WGlkKTsNCiANCiAvKg0KQEAgLTI1NCwxMSArMjU1LDEyIEBAIFRyYW5zYWN0aW9uSWRT ZXRDb21taXRUcyhUcmFuc2FjdGlvbklkIHhpZCwgVGltZXN0YW1wVHogdHMsDQogCUNvbW1pdFRp bWVzdGFtcEVudHJ5IGVudHJ5Ow0KIA0KIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhp ZCkpOw0KKwlBc3NlcnQoeGlkID09IHNsb3RubyAqIENPTU1JVF9UU19YQUNUU19QRVJfUEFHRSAr IGVudHJ5bm8pOw0KIA0KIAllbnRyeS50aW1lID0gdHM7DQogCWVudHJ5Lm5vZGVpZCA9IG5vZGVp ZDsNCiANCi0JbWVtY3B5KENvbW1pdFRzQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10g Kw0KKwltZW1jcHkoUGFnZUdldENvbnRlbnRzKENvbW1pdFRzQ3RsLT5zaGFyZWQtPnBhZ2VfYnVm ZmVyW3Nsb3Rub10pICsNCiAJCSAgIFNpemVPZkNvbW1pdFRpbWVzdGFtcEVudHJ5ICogZW50cnlu bywNCiAJCSAgICZlbnRyeSwgU2l6ZU9mQ29tbWl0VGltZXN0YW1wRW50cnkpOw0KIH0NCkBAIC0z MzcsNyArMzM5LDcgQEAgVHJhbnNhY3Rpb25JZEdldENvbW1pdFRzRGF0YShUcmFuc2FjdGlvbklk IHhpZCwgVGltZXN0YW1wVHogKnRzLA0KIAkvKiBsb2NrIGlzIGFjcXVpcmVkIGJ5IFNpbXBsZUxy dVJlYWRQYWdlX1JlYWRPbmx5ICovDQogCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRP bmx5KENvbW1pdFRzQ3RsLCBwYWdlbm8sIHhpZCk7DQogCW1lbWNweSgmZW50cnksDQotCQkgICBD b21taXRUc0N0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsNCisJCSAgIFBhZ2VHZXRD b250ZW50cyhDb21taXRUc0N0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArDQogCQkg ICBTaXplT2ZDb21taXRUaW1lc3RhbXBFbnRyeSAqIGVudHJ5bm8sDQogCQkgICBTaXplT2ZDb21t aXRUaW1lc3RhbXBFbnRyeSk7DQogDQpAQCAtNTE1LDcgKzUxNyw3IEBAIENvbW1pdFRzU2htZW1C dWZmZXJzKHZvaWQpDQogU2l6ZQ0KIENvbW1pdFRzU2htZW1TaXplKHZvaWQpDQogew0KLQlyZXR1 cm4gU2ltcGxlTHJ1U2htZW1TaXplKENvbW1pdFRzU2htZW1CdWZmZXJzKCksIDApICsNCisJcmV0 dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDb21taXRUc1NobWVtQnVmZmVycygpKSArDQogCQlzaXpl b2YoQ29tbWl0VGltZXN0YW1wU2hhcmVkKTsNCiB9DQogDQpAQCAtNTI5LDcgKzUzMSw3IEBAIENv bW1pdFRzU2htZW1Jbml0KHZvaWQpDQogCWJvb2wJCWZvdW5kOw0KIA0KIAlDb21taXRUc0N0bC0+ UGFnZVByZWNlZGVzID0gQ29tbWl0VHNQYWdlUHJlY2VkZXM7DQotCVNpbXBsZUxydUluaXQoQ29t bWl0VHNDdGwsICJDb21taXRUcyIsIENvbW1pdFRzU2htZW1CdWZmZXJzKCksIDAsDQorCVNpbXBs ZUxydUluaXQoQ29tbWl0VHNDdGwsICJDb21taXRUcyIsIENvbW1pdFRzU2htZW1CdWZmZXJzKCks DQogCQkJCSAgQ29tbWl0VHNTTFJVTG9jaywgInBnX2NvbW1pdF90cyIsDQogCQkJCSAgTFdUUkFO Q0hFX0NPTU1JVFRTX0JVRkZFUiwNCiAJCQkJICBTWU5DX0hBTkRMRVJfQ09NTUlUX1RTLA0KQEAg LTU4MiwxMSArNTg0LDE3IEBAIHN0YXRpYyBpbnQNCiBaZXJvQ29tbWl0VHNQYWdlKGludDY0IHBh Z2VubywgYm9vbCB3cml0ZVhsb2cpDQogew0KIAlpbnQJCQlzbG90bm87DQorCVBhZ2UgCQlwYWdl Ow0KKwlYTG9nUmVjUHRyICBsc24gPSAwOw0KIA0KIAlzbG90bm8gPSBTaW1wbGVMcnVaZXJvUGFn ZShDb21taXRUc0N0bCwgcGFnZW5vKTsNCisJcGFnZSA9IENvbW1pdFRzQ3RsLT5zaGFyZWQtPnBh Z2VfYnVmZmVyW3Nsb3Rub107DQogDQogCWlmICh3cml0ZVhsb2cpDQotCQlXcml0ZVplcm9QYWdl WGxvZ1JlYyhwYWdlbm8pOw0KKwl7DQorCQlsc24gPSBXcml0ZVplcm9QYWdlWGxvZ1JlYyhwYWdl bm8pOw0KKwkJUGFnZVNldExTTihwYWdlLCBsc24pOw0KKwl9DQogDQogCXJldHVybiBzbG90bm87 DQogfQ0KQEAgLTk0NiwxMiArOTU0LDEyIEBAIENvbW1pdFRzUGFnZVByZWNlZGVzKGludDY0IHBh Z2UxLCBpbnQ2NCBwYWdlMikNCiAvKg0KICAqIFdyaXRlIGEgWkVST1BBR0UgeGxvZyByZWNvcmQN CiAgKi8NCi1zdGF0aWMgdm9pZA0KK3N0YXRpYyBYTG9nUmVjUHRyDQogV3JpdGVaZXJvUGFnZVhs b2dSZWMoaW50NjQgcGFnZW5vKQ0KIHsNCiAJWExvZ0JlZ2luSW5zZXJ0KCk7DQogCVhMb2dSZWdp c3RlckRhdGEoKGNoYXIgKikgKCZwYWdlbm8pLCBzaXplb2YocGFnZW5vKSk7DQotCSh2b2lkKSBY TG9nSW5zZXJ0KFJNX0NPTU1JVF9UU19JRCwgQ09NTUlUX1RTX1pFUk9QQUdFKTsNCisJcmV0dXJu IFhMb2dJbnNlcnQoUk1fQ09NTUlUX1RTX0lELCBDT01NSVRfVFNfWkVST1BBR0UpOw0KIH0NCiAN CiAvKg0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMNCmluZGV4IDU5NTIzYmU5 MDEuLmFmNjU2M2M4ODkgMTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9t dWx0aXhhY3QuYw0KKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMN CkBAIC04Myw2ICs4Myw3IEBADQogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIg0KICNpbmNsdWRlICJw Z190cmFjZS5oIg0KICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCINCisjaW5jbHVk ZSAic3RvcmFnZS9idWZwYWdlLmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIg0KICNpbmNs dWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIg0KQEAg LTEwNiw3ICsxMDcsNyBAQA0KICAqLw0KIA0KIC8qIFdlIG5lZWQgZm91ciBieXRlcyBwZXIgb2Zm c2V0ICovDQotI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAoQkxDS1NaIC8gc2l6 ZW9mKE11bHRpWGFjdE9mZnNldCkpDQorI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFH RSAoU2l6ZU9mUGFnZUNvbnRlbnRzIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpDQogDQogI2Rl ZmluZSBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZSh4aWQpIFwNCiAJKCh4aWQpIC8gKE11bHRpWGFj dE9mZnNldCkgTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0UpDQpAQCAtMTE5LDggKzEyMCw4IEBA DQogICogYWRkaXRpb25hbCBmbGFnIGJpdHMgZm9yIGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRv IHRoaXMgd2l0aG91dCBnZXR0aW5nDQogICogaW50byBhbGlnbm1lbnQgaXNzdWVzLCB3ZSBzdG9y ZSBmb3VyIGJ5dGVzIG9mIGZsYWdzLCBhbmQgdGhlbiB0aGUNCiAgKiBjb3JyZXNwb25kaW5nIDQg WGlkcy4gIEVhY2ggc3VjaCA1LXdvcmQgKDIwLWJ5dGUpIHNldCB3ZSBjYWxsIGEgImdyb3VwIiwg YW5kDQotICogYXJlIHN0b3JlZCBhcyBhIHdob2xlIGluIHBhZ2VzLiAgVGh1cywgd2l0aCA4a0Ig QkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMNCi0gKiBwZXIgcGFnZS4gIFRoaXMgd2FzdGVzIDEy IGJ5dGVzIHBlciBwYWdlLCBidXQgdGhhdCdzIE9LIC0tIHNpbXBsaWNpdHkgKGFuZA0KKyAqIGFy ZSBzdG9yZWQgYXMgYSB3aG9sZSBpbiBwYWdlcy4gIFRodXMsIHdpdGggOGtCIEJMQ0tTWiwgd2Ug a2VlcCA0MDggZ3JvdXBzDQorICogcGVyIHBhZ2UuICBUaGlzIHdhc3RlcyA4IGJ5dGVzIHBlciBw YWdlLCBidXQgdGhhdCdzIE9LIC0tIHNpbXBsaWNpdHkgKGFuZA0KICAqIHBlcmZvcm1hbmNlKSB0 cnVtcHMgc3BhY2UgZWZmaWNpZW5jeSBoZXJlLg0KICAqDQogICogTm90ZSB0aGF0IHRoZSAib2Zm c2V0IiBtYWNyb3Mgd29yayB3aXRoIGJ5dGUgb2Zmc2V0LCBub3QgYXJyYXkgaW5kZXhlcywgc28N CkBAIC0xMzgsNyArMTM5LDcgQEANCiAvKiBzaXplIGluIGJ5dGVzIG9mIGEgY29tcGxldGUgZ3Jv dXAgKi8NCiAjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwNCiAJKHNpemVvZihU cmFuc2FjdGlvbklkKSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCArIE1VTFRJ WEFDVF9GTEFHQllURVNfUEVSX0dST1VQKQ0KLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQ U19QRVJfUEFHRSAoQkxDS1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUpDQorI2RlZmlu ZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFIChTaXplT2ZQYWdlQ29udGVudHMgLyBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRSkNCiAjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9QQUdFCVwNCiAJKE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfTUVNQkVSR1JPVVApDQogDQpAQCAtMzY2LDcgKzM2Nyw3IEBAIHN0YXRpYyBi b29sIE11bHRpWGFjdE9mZnNldFdvdWxkV3JhcChNdWx0aVhhY3RPZmZzZXQgYm91bmRhcnksDQog CQkJCQkJCQkJIE11bHRpWGFjdE9mZnNldCBzdGFydCwgdWludDMyIGRpc3RhbmNlKTsNCiBzdGF0 aWMgYm9vbCBTZXRPZmZzZXRWYWN1dW1MaW1pdChib29sIGlzX3N0YXJ0dXApOw0KIHN0YXRpYyBi b29sIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhhY3RPZmZz ZXQgKnJlc3VsdCk7DQotc3RhdGljIHZvaWQgV3JpdGVNWmVyb1BhZ2VYbG9nUmVjKGludDY0IHBh Z2VubywgdWludDggaW5mbyk7DQorc3RhdGljIFhMb2dSZWNQdHIgV3JpdGVNWmVyb1BhZ2VYbG9n UmVjKGludDY0IHBhZ2VubywgdWludDggaW5mbyk7DQogc3RhdGljIHZvaWQgV3JpdGVNVHJ1bmNh dGVYbG9nUmVjKE9pZCBvbGRlc3RNdWx0aURCLA0KIAkJCQkJCQkJICBNdWx0aVhhY3RJZCBzdGFy dFRydW5jT2ZmLA0KIAkJCQkJCQkJICBNdWx0aVhhY3RJZCBlbmRUcnVuY09mZiwNCkBAIC04ODQs NyArODg1LDcgQEAgUmVjb3JkTmV3TXVsdGlYYWN0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0LA0KIAkgKiB0YWtlIHRoZSB0cm91YmxlIHRvIGdlbmVyYWxpemUgdGhl IHNscnUuYyBlcnJvciByZXBvcnRpbmcgY29kZS4NCiAJICovDQogCXNsb3RubyA9IFNpbXBsZUxy dVJlYWRQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vLCB0cnVlLCBtdWx0aSk7DQotCW9m ZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQtPnBh Z2VfYnVmZmVyW3Nsb3Rub107DQorCW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgUGFnZUdl dENvbnRlbnRzKE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9d KTsNCiAJb2ZmcHRyICs9IGVudHJ5bm87DQogDQogCSpvZmZwdHIgPSBvZmZzZXQ7DQpAQCAtOTIx LDEyICs5MjIsMTIgQEAgUmVjb3JkTmV3TXVsdGlYYWN0KE11bHRpWGFjdElkIG11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgb2Zmc2V0LA0KIAkJfQ0KIA0KIAkJbWVtYmVycHRyID0gKFRyYW5zYWN0aW9u SWQgKikNCi0JCQkoTXVsdGlYYWN0TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Ru b10gKyBtZW1iZXJvZmYpOw0KKwkJCShQYWdlR2V0Q29udGVudHMoTXVsdGlYYWN0TWVtYmVyQ3Rs LT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pICsgbWVtYmVyb2ZmKTsNCiANCiAJCSptZW1i ZXJwdHIgPSBtZW1iZXJzW2ldLnhpZDsNCiANCiAJCWZsYWdzcHRyID0gKHVpbnQzMiAqKQ0KLQkJ CShNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIGZsYWdz b2ZmKTsNCisJCQkoUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dKSArIGZsYWdzb2ZmKTsNCiANCiAJCWZsYWdzdmFsID0gKmZsYWdz cHRyOw0KIAkJZmxhZ3N2YWwgJj0gfigoKDEgPDwgTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Qp IC0gMSkgPDwgYnNoaWZ0KTsNCkBAIC0xMzQ4LDcgKzEzNDksNyBAQCByZXRyeToNCiAJZW50cnlu byA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeShtdWx0aSk7DQogDQogCXNsb3RubyA9IFNpbXBs ZUxydVJlYWRQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vLCB0cnVlLCBtdWx0aSk7DQot CW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgTXVsdGlYYWN0T2Zmc2V0Q3RsLT5zaGFyZWQt PnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCW9mZnB0ciA9IChNdWx0aVhhY3RPZmZzZXQgKikgUGFn ZUdldENvbnRlbnRzKE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90 bm9dKTsNCiAJb2ZmcHRyICs9IGVudHJ5bm87DQogCW9mZnNldCA9ICpvZmZwdHI7DQogDQpAQCAt MTM4MSw3ICsxMzgyLDcgQEAgcmV0cnk6DQogCQlpZiAocGFnZW5vICE9IHByZXZfcGFnZW5vKQ0K IAkJCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5v LCB0cnVlLCB0bXBNWGFjdCk7DQogDQotCQlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11 bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOw0KKwkJb2ZmcHRy ID0gKE11bHRpWGFjdE9mZnNldCAqKSBQYWdlR2V0Q29udGVudHMoTXVsdGlYYWN0T2Zmc2V0Q3Rs LT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10pOw0KIAkJb2ZmcHRyICs9IGVudHJ5bm87DQog CQluZXh0TVhPZmZzZXQgPSAqb2ZmcHRyOw0KIA0KQEAgLTE0MjQsNyArMTQyNSw3IEBAIHJldHJ5 Og0KIAkJfQ0KIA0KIAkJeGFjdHB0ciA9IChUcmFuc2FjdGlvbklkICopDQotCQkJKE11bHRpWGFj dE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsgbWVtYmVyb2ZmKTsNCisJ CQkoUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZl cltzbG90bm9dKSArIG1lbWJlcm9mZik7DQogDQogCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KCp4YWN0cHRyKSkNCiAJCXsNCkBAIC0xNDM1LDcgKzE0MzYsNyBAQCByZXRyeToNCiANCiAJCWZs YWdzb2ZmID0gTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCk7DQogCQlic2hpZnQgPSBNWE9m ZnNldFRvRmxhZ3NCaXRTaGlmdChvZmZzZXQpOw0KLQkJZmxhZ3NwdHIgPSAodWludDMyICopIChN dWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIGZsYWdzb2Zm KTsNCisJCWZsYWdzcHRyID0gKHVpbnQzMiAqKSAoUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1l bWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArIGZsYWdzb2ZmKTsNCiANCiAJ CXB0clt0cnVlbGVuZ3RoXS54aWQgPSAqeGFjdHB0cjsNCiAJCXB0clt0cnVlbGVuZ3RoXS5zdGF0 dXMgPSAoKmZsYWdzcHRyID4+IGJzaGlmdCkgJiBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLOw0K QEAgLTE4MzQsOCArMTgzNSw4IEBAIE11bHRpWGFjdFNobWVtU2l6ZSh2b2lkKQ0KIAkJCSBtdWxf c2l6ZShzaXplb2YoTXVsdGlYYWN0SWQpICogMiwgTWF4T2xkZXN0U2xvdCkpDQogDQogCXNpemUg PSBTSEFSRURfTVVMVElYQUNUX1NUQVRFX1NJWkU7DQotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBT aW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE9GRlNFVF9CVUZGRVJTLCAwKSk7DQotCXNp emUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE1FTUJF Ul9CVUZGRVJTLCAwKSk7DQorCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNp emUoTlVNX01VTFRJWEFDVE9GRlNFVF9CVUZGRVJTKSk7DQorCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBTaW1wbGVMcnVTaG1lbVNpemUoTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTKSk7DQogDQog CXJldHVybiBzaXplOw0KIH0NCkBAIC0xODUxLDE0ICsxODUyLDE0IEBAIE11bHRpWGFjdFNobWVt SW5pdCh2b2lkKQ0KIAlNdWx0aVhhY3RNZW1iZXJDdGwtPlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFj dE1lbWJlclBhZ2VQcmVjZWRlczsNCiANCiAJU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RPZmZzZXRD dGwsDQotCQkJCSAgIk11bHRpWGFjdE9mZnNldCIsIE5VTV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVS UywgMCwNCisJCQkJICAiTXVsdGlYYWN0T2Zmc2V0IiwgTlVNX01VTFRJWEFDVE9GRlNFVF9CVUZG RVJTLA0KIAkJCQkgIE11bHRpWGFjdE9mZnNldFNMUlVMb2NrLCAicGdfbXVsdGl4YWN0L29mZnNl dHMiLA0KIAkJCQkgIExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSLA0KIAkJCQkgIFNZ TkNfSEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VULA0KIAkJCQkgIGZhbHNlKTsNCiAJU2xydVBhZ2VQ cmVjZWRlc1VuaXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BF Ul9QQUdFKTsNCiAJU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RNZW1iZXJDdGwsDQotCQkJCSAgIk11 bHRpWGFjdE1lbWJlciIsIE5VTV9NVUxUSVhBQ1RNRU1CRVJfQlVGRkVSUywgMCwNCisJCQkJICAi TXVsdGlYYWN0TWVtYmVyIiwgTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTLA0KIAkJCQkgIE11 bHRpWGFjdE1lbWJlclNMUlVMb2NrLCAicGdfbXVsdGl4YWN0L21lbWJlcnMiLA0KIAkJCQkgIExX VFJBTkNIRV9NVUxUSVhBQ1RNRU1CRVJfQlVGRkVSLA0KIAkJCQkgIFNZTkNfSEFORExFUl9NVUxU SVhBQ1RfTUVNQkVSLA0KQEAgLTE5MzMsMTEgKzE5MzQsMTcgQEAgc3RhdGljIGludA0KIFplcm9N dWx0aVhhY3RPZmZzZXRQYWdlKGludDY0IHBhZ2VubywgYm9vbCB3cml0ZVhsb2cpDQogew0KIAlp bnQJCQlzbG90bm87DQorCVBhZ2UgCQlwYWdlOw0KKwlYTG9nUmVjUHRyICBsc24gPSAwOw0KIA0K IAlzbG90bm8gPSBTaW1wbGVMcnVaZXJvUGFnZShNdWx0aVhhY3RPZmZzZXRDdGwsIHBhZ2Vubyk7 DQorCXBhZ2UgPSBNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5v XTsNCiANCiAJaWYgKHdyaXRlWGxvZykNCi0JCVdyaXRlTVplcm9QYWdlWGxvZ1JlYyhwYWdlbm8s IFhMT0dfTVVMVElYQUNUX1pFUk9fT0ZGX1BBR0UpOw0KKwl7DQorCQlsc24gPSBXcml0ZU1aZXJv UGFnZVhsb2dSZWMocGFnZW5vLCBYTE9HX01VTFRJWEFDVF9aRVJPX09GRl9QQUdFKTsNCisJCVBh Z2VTZXRMU04ocGFnZSwgbHNuKTsNCisJfQ0KIA0KIAlyZXR1cm4gc2xvdG5vOw0KIH0NCkBAIC0x OTQ5LDExICsxOTU2LDE3IEBAIHN0YXRpYyBpbnQNCiBaZXJvTXVsdGlYYWN0TWVtYmVyUGFnZShp bnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVYbG9nKQ0KIHsNCiAJaW50CQkJc2xvdG5vOw0KKwlQYWdl IAkJcGFnZTsNCisJWExvZ1JlY1B0ciAgbHNuID0gMDsNCiANCiAJc2xvdG5vID0gU2ltcGxlTHJ1 WmVyb1BhZ2UoTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOw0KKwlwYWdlID0gTXVsdGlYYWN0 TWVtYmVyQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQogDQogCWlmICh3cml0ZVhs b2cpDQotCQlXcml0ZU1aZXJvUGFnZVhsb2dSZWMocGFnZW5vLCBYTE9HX01VTFRJWEFDVF9aRVJP X01FTV9QQUdFKTsNCisJew0KKwkJbHNuID0gV3JpdGVNWmVyb1BhZ2VYbG9nUmVjKHBhZ2Vubywg WExPR19NVUxUSVhBQ1RfWkVST19NRU1fUEFHRSk7DQorCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7 DQorCX0NCiANCiAJcmV0dXJuIHNsb3RubzsNCiB9DQpAQCAtMjA3MSwxMCArMjA4NCwxMCBAQCBU cmltTXVsdGlYYWN0KHZvaWQpDQogCQlNdWx0aVhhY3RPZmZzZXQgKm9mZnB0cjsNCiANCiAJCXNs b3RubyA9IFNpbXBsZUxydVJlYWRQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vLCB0cnVl LCBuZXh0TVhhY3QpOw0KLQkJb2ZmcHRyID0gKE11bHRpWGFjdE9mZnNldCAqKSBNdWx0aVhhY3RP ZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXTsNCisJCW9mZnB0ciA9IChNdWx0 aVhhY3RPZmZzZXQgKikgUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVk LT5wYWdlX2J1ZmZlcltzbG90bm9dKTsNCiAJCW9mZnB0ciArPSBlbnRyeW5vOw0KIA0KLQkJTWVt U2V0KG9mZnB0ciwgMCwgQkxDS1NaIC0gKGVudHJ5bm8gKiBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0 KSkpOw0KKwkJTWVtU2V0KG9mZnB0ciwgMCwgU2l6ZU9mUGFnZUNvbnRlbnRzIC0gKGVudHJ5bm8g KiBzaXplb2YoTXVsdGlYYWN0T2Zmc2V0KSkpOw0KIA0KIAkJTXVsdGlYYWN0T2Zmc2V0Q3RsLT5z aGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSA9IHRydWU7DQogCX0NCkBAIC0yMTA0LDkgKzIxMTcs OSBAQCBUcmltTXVsdGlYYWN0KHZvaWQpDQogCQltZW1iZXJvZmYgPSBNWE9mZnNldFRvTWVtYmVy T2Zmc2V0KG9mZnNldCk7DQogCQlzbG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShNdWx0aVhhY3RN ZW1iZXJDdGwsIHBhZ2VubywgdHJ1ZSwgb2Zmc2V0KTsNCiAJCXhpZHB0ciA9IChUcmFuc2FjdGlv bklkICopDQotCQkJKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90 bm9dICsgbWVtYmVyb2ZmKTsNCisJCQkoUGFnZUdldENvbnRlbnRzKE11bHRpWGFjdE1lbWJlckN0 bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKSArIG1lbWJlcm9mZik7DQogDQotCQlNZW1T ZXQoeGlkcHRyLCAwLCBCTENLU1ogLSBtZW1iZXJvZmYpOw0KKwkJTWVtU2V0KHhpZHB0ciwgMCwg U2l6ZU9mUGFnZUNvbnRlbnRzIC0gbWVtYmVyb2ZmKTsNCiANCiAJCS8qDQogCQkgKiBOb3RlOiB3 ZSBkb24ndCBuZWVkIHRvIHplcm8gb3V0IHRoZSBmbGFnIGJpdHMgaW4gdGhlIHJlbWFpbmluZw0K QEAgLTI3NTgsNyArMjc3MSw3IEBAIGZpbmRfbXVsdGl4YWN0X3N0YXJ0KE11bHRpWGFjdElkIG11 bHRpLCBNdWx0aVhhY3RPZmZzZXQgKnJlc3VsdCkNCiANCiAJLyogbG9jayBpcyBhY3F1aXJlZCBi eSBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seSAqLw0KIAlzbG90bm8gPSBTaW1wbGVMcnVSZWFk UGFnZV9SZWFkT25seShNdWx0aVhhY3RPZmZzZXRDdGwsIHBhZ2VubywgbXVsdGkpOw0KLQlvZmZw dHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdl X2J1ZmZlcltzbG90bm9dOw0KKwlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIFBhZ2VHZXRD b250ZW50cyhNdWx0aVhhY3RPZmZzZXRDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSk7 DQogCW9mZnB0ciArPSBlbnRyeW5vOw0KIAlvZmZzZXQgPSAqb2ZmcHRyOw0KIAlMV0xvY2tSZWxl YXNlKE11bHRpWGFjdE9mZnNldFNMUlVMb2NrKTsNCkBAIC0zMTkyLDEyICszMjA1LDEyIEBAIE11 bHRpWGFjdE9mZnNldFByZWNlZGVzKE11bHRpWGFjdE9mZnNldCBvZmZzZXQxLCBNdWx0aVhhY3RP ZmZzZXQgb2Zmc2V0MikNCiAgKiBXcml0ZSBhbiB4bG9nIHJlY29yZCByZWZsZWN0aW5nIHRoZSB6 ZXJvaW5nIG9mIGVpdGhlciBhIE1FTUJFUnMgb3INCiAgKiBPRkZTRVRzIHBhZ2UgKGluZm8gc2hv d3Mgd2hpY2gpDQogICovDQotc3RhdGljIHZvaWQNCitzdGF0aWMgWExvZ1JlY1B0cg0KIFdyaXRl TVplcm9QYWdlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8sIHVpbnQ4IGluZm8pDQogew0KIAlYTG9nQmVn aW5JbnNlcnQoKTsNCiAJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAoJnBhZ2VubyksIHNpemVv ZihwYWdlbm8pKTsNCi0JKHZvaWQpIFhMb2dJbnNlcnQoUk1fTVVMVElYQUNUX0lELCBpbmZvKTsN CisJcmV0dXJuIFhMb2dJbnNlcnQoUk1fTVVMVElYQUNUX0lELCBpbmZvKTsNCiB9DQogDQogLyoN CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMNCmluZGV4IDlhYzQ3OTBmMTYuLmM0MmE0NGZjYWEg MTAwNjQ0DQotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMNCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYw0KQEAgLTU3LDYgKzU3LDcgQEANCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIg0KICNpbmNsdWRlICJtaXNjYWRtaW4uaCINCiAjaW5j bHVkZSAicGdzdGF0LmgiDQorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIg0KICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiDQogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCINCiANCkBAIC0xNTQs MTMgKzE1NSwxMyBAQCB0eXBlZGVmIGVudW0NCiAJU0xSVV9XUklURV9GQUlMRUQsDQogCVNMUlVf RlNZTkNfRkFJTEVELA0KIAlTTFJVX0NMT1NFX0ZBSUxFRCwNCisJU0xSVV9EQVRBX0NPUlJVUFRF RCwNCiB9IFNscnVFcnJvckNhdXNlOw0KIA0KIHN0YXRpYyBTbHJ1RXJyb3JDYXVzZSBzbHJ1X2Vy cmNhdXNlOw0KIHN0YXRpYyBpbnQJc2xydV9lcnJubzsNCiANCiANCi1zdGF0aWMgdm9pZCBTaW1w bGVMcnVaZXJvTFNOcyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3Rubyk7DQogc3RhdGljIHZvaWQgU2lt cGxlTHJ1V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKTsNCiBzdGF0aWMgdm9pZCBTbHJ1 SW50ZXJuYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBm ZGF0YSk7DQogc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydUN0bCBjdGwsIGlu dDY0IHBhZ2VubywgaW50IHNsb3Rubyk7DQpAQCAtMTc5LDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lk IFNscnVJbnRlcm5hbERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKTsNCiAg Ki8NCiANCiBTaXplDQotU2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGludCBubHNucykN CitTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cykNCiB7DQogCVNpemUJCXN6Ow0KIA0KQEAg LTE5Miw5ICsxOTMsNiBAQCBTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5sc25z KQ0KIAlzeiArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoaW50KSk7CS8qIHBhZ2VfbHJ1X2Nv dW50W10gKi8NCiAJc3ogKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkp OwkvKiBidWZmZXJfbG9ja3NbXSAqLw0KIA0KLQlpZiAobmxzbnMgPiAwKQ0KLQkJc3ogKz0gTUFY QUxJR04obnNsb3RzICogbmxzbnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwkvKiBncm91cF9sc25b XSAqLw0KLQ0KIAlyZXR1cm4gQlVGRkVSQUxJR04oc3opICsgQkxDS1NaICogbnNsb3RzOw0KIH0N CiANCkBAIC0yMDQsMTQgKzIwMiwxMyBAQCBTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywg aW50IG5sc25zKQ0KICAqIGN0bDogYWRkcmVzcyBvZiBsb2NhbCAodW5zaGFyZWQpIGNvbnRyb2wg c3RydWN0dXJlLg0KICAqIG5hbWU6IG5hbWUgb2YgU0xSVS4gIChUaGlzIGlzIHVzZXItdmlzaWJs ZSwgcGljayB3aXRoIGNhcmUhKQ0KICAqIG5zbG90czogbnVtYmVyIG9mIHBhZ2Ugc2xvdHMgdG8g dXNlLg0KLSAqIG5sc25zOiBudW1iZXIgb2YgTFNOIGdyb3VwcyBwZXIgcGFnZSAoc2V0IHRvIHpl cm8gaWYgbm90IHJlbGV2YW50KS4NCiAgKiBjdGxsb2NrOiBMV0xvY2sgdG8gdXNlIHRvIGNvbnRy b2wgYWNjZXNzIHRvIHRoZSBzaGFyZWQgY29udHJvbCBzdHJ1Y3R1cmUuDQogICogc3ViZGlyOiBQ R0RBVEEtcmVsYXRpdmUgc3ViZGlyZWN0b3J5IHRoYXQgd2lsbCBjb250YWluIHRoZSBmaWxlcy4N CiAgKiB0cmFuY2hlX2lkOiBMV0xvY2sgdHJhbmNoZSBJRCB0byB1c2UgZm9yIHRoZSBTTFJVJ3Mg cGVyLWJ1ZmZlciBMV0xvY2tzLg0KICAqIHN5bmNfaGFuZGxlcjogd2hpY2ggc2V0IG9mIGZ1bmN0 aW9ucyB0byB1c2UgdG8gaGFuZGxlIHN5bmMgcmVxdWVzdHMNCiAgKi8NCiB2b2lkDQotU2ltcGxl THJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywgaW50IG5s c25zLA0KK1NpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBu c2xvdHMsDQogCQkJICBMV0xvY2sgKmN0bGxvY2ssIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IHRy YW5jaGVfaWQsDQogCQkJICBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVyLCBib29sIGxv bmdfc2VnbWVudF9uYW1lcykNCiB7DQpAQCAtMjE5LDcgKzIxNiw3IEBAIFNpbXBsZUxydUluaXQo U2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywNCiAJ Ym9vbAkJZm91bmQ7DQogDQogCXNoYXJlZCA9IChTbHJ1U2hhcmVkKSBTaG1lbUluaXRTdHJ1Y3Qo bmFtZSwNCi0JCQkJCQkJCQkJICBTaW1wbGVMcnVTaG1lbVNpemUobnNsb3RzLCBubHNucyksDQor CQkJCQkJCQkJCSAgU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cyksDQogCQkJCQkJCQkJCSAgJmZv dW5kKTsNCiANCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikNCkBAIC0yMzYsNyArMjMzLDYgQEAg U2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywg aW50IG5sc25zLA0KIAkJc2hhcmVkLT5Db250cm9sTG9jayA9IGN0bGxvY2s7DQogDQogCQlzaGFy ZWQtPm51bV9zbG90cyA9IG5zbG90czsNCi0JCXNoYXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZSA9 IG5sc25zOw0KIA0KIAkJc2hhcmVkLT5jdXJfbHJ1X2NvdW50ID0gMDsNCiANCkBAIC0yNjEsMTIg KzI1Nyw2IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBuc2xvdHMsIGludCBubHNucywNCiAJCXNoYXJlZC0+YnVmZmVyX2xvY2tzID0gKExXTG9ja1Bh ZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsNCiAJCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBz aXplb2YoTFdMb2NrUGFkZGVkKSk7DQogDQotCQlpZiAobmxzbnMgPiAwKQ0KLQkJew0KLQkJCXNo YXJlZC0+Z3JvdXBfbHNuID0gKFhMb2dSZWNQdHIgKikgKHB0ciArIG9mZnNldCk7DQotCQkJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIG5sc25zICogc2l6ZW9mKFhMb2dSZWNQdHIpKTsNCi0J CX0NCi0NCiAJCXB0ciArPSBCVUZGRVJBTElHTihvZmZzZXQpOw0KIAkJZm9yIChzbG90bm8gPSAw OyBzbG90bm8gPCBuc2xvdHM7IHNsb3RubysrKQ0KIAkJew0KQEAgLTI4MSw3ICsyNzEsNyBAQCBT aW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBp bnQgbmxzbnMsDQogCQl9DQogDQogCQkvKiBTaG91bGQgZml0IHRvIGVzdGltYXRlZCBzaG1lbSBz aXplICovDQotCQlBc3NlcnQocHRyIC0gKGNoYXIgKikgc2hhcmVkIDw9IFNpbXBsZUxydVNobWVt U2l6ZShuc2xvdHMsIG5sc25zKSk7DQorCQlBc3NlcnQocHRyIC0gKGNoYXIgKikgc2hhcmVkIDw9 IFNpbXBsZUxydVNobWVtU2l6ZShuc2xvdHMpKTsNCiAJfQ0KIAllbHNlDQogCQlBc3NlcnQoZm91 bmQpOw0KQEAgLTMyMywxMSArMzEzLDggQEAgU2ltcGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGws IGludDY0IHBhZ2VubykNCiAJc2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10gPSB0cnVlOw0KIAlT bHJ1UmVjZW50bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsNCiANCi0JLyogU2V0IHRoZSBidWZmZXIg dG8gemVyb2VzICovDQotCU1lbVNldChzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10sIDAsIEJM Q0tTWik7DQotDQotCS8qIFNldCB0aGUgTFNOcyBmb3IgdGhpcyBuZXcgcGFnZSB0byB6ZXJvICov DQotCVNpbXBsZUxydVplcm9MU05zKGN0bCwgc2xvdG5vKTsNCisgICAgLyogSW5pdGlhbGl6ZSB0 aGUgcGFnZS4gKi8NCisJUGFnZUluaXRTTFJVKHNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSwg QkxDS1NaLCAwKTsNCiANCiAJLyogQXNzdW1lIHRoaXMgcGFnZSBpcyBub3cgdGhlIGxhdGVzdCBh Y3RpdmUgcGFnZSAqLw0KIAlzaGFyZWQtPmxhdGVzdF9wYWdlX251bWJlciA9IHBhZ2VubzsNCkBA IC0zMzgsMjYgKzMyNSw2IEBAIFNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBw YWdlbm8pDQogCXJldHVybiBzbG90bm87DQogfQ0KIA0KLS8qDQotICogWmVybyBhbGwgdGhlIExT TnMgd2Ugc3RvcmUgZm9yIHRoaXMgc2xydSBwYWdlLg0KLSAqDQotICogVGhpcyBzaG91bGQgYmUg Y2FsbGVkIGVhY2ggdGltZSB3ZSBjcmVhdGUgYSBuZXcgcGFnZSwgYW5kIGVhY2ggdGltZSB3ZSBy ZWFkDQotICogaW4gYSBwYWdlIGZyb20gZGlzayBpbnRvIGFuIGV4aXN0aW5nIGJ1ZmZlci4gIChT dWNoIGFuIG9sZCBwYWdlIGNhbm5vdA0KLSAqIGhhdmUgYW55IGludGVyZXN0aW5nIExTTnMsIHNp bmNlIHdlJ2QgaGF2ZSBmbHVzaGVkIHRoZW0gYmVmb3JlIHdyaXRpbmcNCi0gKiB0aGUgcGFnZSBp biB0aGUgZmlyc3QgcGxhY2UuKQ0KLSAqDQotICogVGhpcyBhc3N1bWVzIHRoYXQgSW52YWxpZFhM b2dSZWNQdHIgaXMgYml0d2lzZS1hbGwtMC4NCi0gKi8NCi1zdGF0aWMgdm9pZA0KLVNpbXBsZUxy dVplcm9MU05zKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQ0KLXsNCi0JU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsNCi0NCi0JaWYgKHNoYXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZSA+ IDApDQotCQlNZW1TZXQoJnNoYXJlZC0+Z3JvdXBfbHNuW3Nsb3RubyAqIHNoYXJlZC0+bHNuX2dy b3Vwc19wZXJfcGFnZV0sIDAsDQotCQkJICAgc2hhcmVkLT5sc25fZ3JvdXBzX3Blcl9wYWdlICog c2l6ZW9mKFhMb2dSZWNQdHIpKTsNCi19DQotDQogLyoNCiAgKiBXYWl0IGZvciBhbnkgYWN0aXZl IEkvTyBvbiBhIHBhZ2Ugc2xvdCB0byBmaW5pc2guICAoVGhpcyBkb2VzIG5vdA0KICAqIGd1YXJh bnRlZSB0aGF0IG5ldyBJL08gaGFzbid0IGJlZW4gc3RhcnRlZCBiZWZvcmUgd2UgcmV0dXJuLCB0 aG91Z2guDQpAQCAtNDc4LDkgKzQ0NSw2IEBAIFNpbXBsZUxydVJlYWRQYWdlKFNscnVDdGwgY3Rs LCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssDQogCQkvKiBEbyB0aGUgcmVhZCAqLw0KIAkJ b2sgPSBTbHJ1UGh5c2ljYWxSZWFkUGFnZShjdGwsIHBhZ2Vubywgc2xvdG5vKTsNCiANCi0JCS8q IFNldCB0aGUgTFNOcyBmb3IgdGhpcyBuZXdseSByZWFkLWluIHBhZ2UgdG8gemVybyAqLw0KLQkJ U2ltcGxlTHJ1WmVyb0xTTnMoY3RsLCBzbG90bm8pOw0KLQ0KIAkJLyogUmUtYWNxdWlyZSBjb250 cm9sIGxvY2sgYW5kIHVwZGF0ZSBwYWdlIHN0YXRlICovDQogCQlMV0xvY2tBY3F1aXJlKHNoYXJl ZC0+Q29udHJvbExvY2ssIExXX0VYQ0xVU0lWRSk7DQogDQpAQCAtNzQwLDcgKzcwNCw3IEBAIFNs cnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8p DQogCQllcmVwb3J0KExPRywNCiAJCQkJKGVycm1zZygiZmlsZSBcIiVzXCIgZG9lc24ndCBleGlz dCwgcmVhZGluZyBhcyB6ZXJvZXMiLA0KIAkJCQkJCXBhdGgpKSk7DQotCQlNZW1TZXQoc2hhcmVk LT5wYWdlX2J1ZmZlcltzbG90bm9dLCAwLCBCTENLU1opOw0KKwkJUGFnZUluaXRTTFJVKHNoYXJl ZC0+cGFnZV9idWZmZXJbc2xvdG5vXSwgQkxDS1NaLCAwKTsNCiAJCXJldHVybiB0cnVlOw0KIAl9 DQogDQpAQCAtNzYzLDYgKzcyNywxMyBAQCBTbHJ1UGh5c2ljYWxSZWFkUGFnZShTbHJ1Q3RsIGN0 bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vKQ0KIAkJcmV0dXJuIGZhbHNlOw0KIAl9DQogDQor CWlmICghUGFnZUlzVmVyaWZpZWRFeHRlbmRlZChzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10s IHBhZ2VubywgUElWX1JFUE9SVF9TVEFUKSkNCisJew0KKwkJc2xydV9lcnJjYXVzZSA9IFNMUlVf REFUQV9DT1JSVVBURUQ7DQorCQlzbHJ1X2Vycm5vID0gMDsNCisJCXJldHVybiBmYWxzZTsNCisJ fQ0KKw0KIAlyZXR1cm4gdHJ1ZTsNCiB9DQogDQpAQCAtNzg5LDYgKzc2MCw4IEBAIFNscnVQaHlz aWNhbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1 V3JpdGVBbGwgZmRhdGEpDQogCW9mZl90CQlvZmZzZXQgPSBycGFnZW5vICogQkxDS1NaOw0KIAlj aGFyCQlwYXRoW01BWFBHUEFUSF07DQogCWludAkJCWZkID0gLTE7DQorCVBhZ2UJCXBhZ2UgPSBz aGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCVhMb2dSZWNQdHIJbHNuOw0KIA0KIAkvKiB1 cGRhdGUgdGhlIHN0YXRzIGNvdW50ZXIgb2Ygd3JpdHRlbiBwYWdlcyAqLw0KIAlwZ3N0YXRfY291 bnRfc2xydV9wYWdlX3dyaXR0ZW4oc2hhcmVkLT5zbHJ1X3N0YXRzX2lkeCk7DQpAQCAtNzk4LDQx ICs3NzEsMTggQEAgU2xydVBoeXNpY2FsV3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdl bm8sIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkNCiAJICogd3JpdGUgb3V0IGRhdGEg YmVmb3JlIGFzc29jaWF0ZWQgV0FMIHJlY29yZHMuICBUaGlzIGlzIHRoZSBzYW1lIGFjdGlvbg0K IAkgKiBwZXJmb3JtZWQgZHVyaW5nIEZsdXNoQnVmZmVyKCkgaW4gdGhlIG1haW4gYnVmZmVyIG1h bmFnZXIuDQogCSAqLw0KLQlpZiAoc2hhcmVkLT5ncm91cF9sc24gIT0gTlVMTCkNCisJbHNuID0g UGFnZUdldExTTihwYWdlKTsNCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKGxzbikpDQogCXsN CiAJCS8qDQotCQkgKiBXZSBtdXN0IGRldGVybWluZSB0aGUgbGFyZ2VzdCBhc3luYy1jb21taXQg TFNOIGZvciB0aGUgcGFnZS4gVGhpcw0KLQkJICogaXMgYSBiaXQgdGVkaW91cywgYnV0IHNpbmNl IHRoaXMgZW50aXJlIGZ1bmN0aW9uIGlzIGEgc2xvdyBwYXRoDQotCQkgKiBhbnl3YXksIGl0IHNl ZW1zIGJldHRlciB0byBkbyB0aGlzIGhlcmUgdGhhbiB0byBtYWludGFpbiBhIHBlci1wYWdlDQot CQkgKiBMU04gdmFyaWFibGUgKHdoaWNoJ2QgbmVlZCBhbiBleHRyYSBjb21wYXJpc29uIGluIHRo ZQ0KLQkJICogdHJhbnNhY3Rpb24tY29tbWl0IHBhdGgpLg0KKwkJICogQXMgbm90ZWQgYWJvdmUs IGVsb2coRVJST1IpIGlzIG5vdCBhY2NlcHRhYmxlIGhlcmUsIHNvIGlmDQorCQkgKiBYTG9nRmx1 c2ggd2VyZSB0byBmYWlsLCB3ZSBtdXN0IFBBTklDLiAgVGhpcyBpc24ndCBtdWNoIG9mIGENCisJ CSAqIHJlc3RyaWN0aW9uIGJlY2F1c2UgWExvZ0ZsdXNoIGlzIGp1c3QgYWJvdXQgYWxsIGNyaXRp Y2FsDQorCQkgKiBzZWN0aW9uIGFueXdheSwgYnV0IGxldCdzIG1ha2Ugc3VyZS4NCiAJCSAqLw0K LQkJWExvZ1JlY1B0cgltYXhfbHNuOw0KLQkJaW50CQkJbHNuaW5kZXgsDQotCQkJCQlsc25vZmY7 DQotDQotCQlsc25pbmRleCA9IHNsb3RubyAqIHNoYXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZTsN Ci0JCW1heF9sc24gPSBzaGFyZWQtPmdyb3VwX2xzbltsc25pbmRleCsrXTsNCi0JCWZvciAobHNu b2ZmID0gMTsgbHNub2ZmIDwgc2hhcmVkLT5sc25fZ3JvdXBzX3Blcl9wYWdlOyBsc25vZmYrKykN Ci0JCXsNCi0JCQlYTG9nUmVjUHRyCXRoaXNfbHNuID0gc2hhcmVkLT5ncm91cF9sc25bbHNuaW5k ZXgrK107DQotDQotCQkJaWYgKG1heF9sc24gPCB0aGlzX2xzbikNCi0JCQkJbWF4X2xzbiA9IHRo aXNfbHNuOw0KLQkJfQ0KLQ0KLQkJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKG1heF9sc24pKQ0K LQkJew0KLQkJCS8qDQotCQkJICogQXMgbm90ZWQgYWJvdmUsIGVsb2coRVJST1IpIGlzIG5vdCBh Y2NlcHRhYmxlIGhlcmUsIHNvIGlmDQotCQkJICogWExvZ0ZsdXNoIHdlcmUgdG8gZmFpbCwgd2Ug bXVzdCBQQU5JQy4gIFRoaXMgaXNuJ3QgbXVjaCBvZiBhDQotCQkJICogcmVzdHJpY3Rpb24gYmVj YXVzZSBYTG9nRmx1c2ggaXMganVzdCBhYm91dCBhbGwgY3JpdGljYWwNCi0JCQkgKiBzZWN0aW9u IGFueXdheSwgYnV0IGxldCdzIG1ha2Ugc3VyZS4NCi0JCQkgKi8NCi0JCQlTVEFSVF9DUklUX1NF Q1RJT04oKTsNCi0JCQlYTG9nRmx1c2gobWF4X2xzbik7DQotCQkJRU5EX0NSSVRfU0VDVElPTigp Ow0KLQkJfQ0KKwkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7DQorCQlYTG9nRmx1c2gobHNuKTsNCisJ CUVORF9DUklUX1NFQ1RJT04oKTsNCiAJfQ0KIA0KIAkvKg0KQEAgLTg5OSw2ICs4NDksOCBAQCBT bHJ1UGh5c2ljYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3Ru bywgU2xydVdyaXRlQWxsIGZkYXRhKQ0KIAkJfQ0KIAl9DQogDQorCVBhZ2VTZXRDaGVja3N1bUlu cGxhY2Uoc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dLCBwYWdlbm8pOw0KKw0KIAllcnJubyA9 IDA7DQogCXBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydChXQUlUX0VWRU5UX1NMUlVfV1JJVEUpOw0K IAlpZiAocGdfcHdyaXRlKGZkLCBzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10sIEJMQ0tTWiwg b2Zmc2V0KSAhPSBCTENLU1opDQpAQCAtMTAxOSw2ICs5NzEsMTMgQEAgU2xydVJlcG9ydElPRXJy b3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgVHJhbnNhY3Rpb25JZCB4aWQpDQogCQkJCQkg ZXJyZGV0YWlsKCJDb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtLiIsDQogCQkJCQkJCSAg IHBhdGgpKSk7DQogCQkJYnJlYWs7DQorCQljYXNlIFNMUlVfREFUQV9DT1JSVVBURUQ6DQorCQkJ ZXJlcG9ydChFUlJPUiwNCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLA0K KwkJCQkJIGVycm1zZygiY291bGQgbm90IGFjY2VzcyBzdGF0dXMgb2YgdHJhbnNhY3Rpb24gJXUi LCB4aWQpLA0KKwkJCQkJIGVycmRldGFpbCgiSW52YWxpZCBwYWdlIGZyb20gZmlsZSBcIiVzXCIg YXQgb2Zmc2V0ICVkLiIsDQorCQkJCQkJCSAgIHBhdGgsIG9mZnNldCkpKTsNCisJCQlicmVhazsN CiAJCWRlZmF1bHQ6DQogCQkJLyogY2FuJ3QgZ2V0IGhlcmUsIHdlIHRydXN0ICovDQogCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBTaW1wbGVMcnUgZXJyb3IgY2F1c2U6ICVkIiwNCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYw0KaW5kZXggYjJlZDgyYWM1Ni4uYTE4YjM1N2Zl MiAxMDA2NDQNCi0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMNCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMNCkBAIC0zMiw2ICszMiw3 IEBADQogI2luY2x1ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIg0KICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIg0KICNpbmNsdWRlICJwZ190cmFjZS5oIg0KKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBh Z2UuaCINCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIg0KIA0KIA0KQEAgLTQ5LDcgKzUwLDcg QEANCiAgKi8NCiANCiAvKiBXZSBuZWVkIGZvdXIgYnl0ZXMgcGVyIHhhY3QgKi8NCi0jZGVmaW5l IFNVQlRSQU5TX1hBQ1RTX1BFUl9QQUdFIChCTENLU1ogLyBzaXplb2YoVHJhbnNhY3Rpb25JZCkp DQorI2RlZmluZSBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSAoU2l6ZU9mUGFnZUNvbnRlbnRzIC8g c2l6ZW9mKFRyYW5zYWN0aW9uSWQpKQ0KIA0KIC8qDQogICogQWx0aG91Z2ggd2UgcmV0dXJuIGFu IGludDY0IHRoZSBhY3R1YWwgdmFsdWUgY2FuJ3QgY3VycmVudGx5IGV4Y2VlZA0KQEAgLTkzLDcg Kzk0LDcgQEAgU3ViVHJhbnNTZXRQYXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9u SWQgcGFyZW50KQ0KIAlMV0xvY2tBY3F1aXJlKFN1YnRyYW5zU0xSVUxvY2ssIExXX0VYQ0xVU0lW RSk7DQogDQogCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlKFN1YlRyYW5zQ3RsLCBwYWdlbm8s IHRydWUsIHhpZCk7DQotCXB0ciA9IChUcmFuc2FjdGlvbklkICopIFN1YlRyYW5zQ3RsLT5zaGFy ZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCXB0ciA9IChUcmFuc2FjdGlvbklkICopIFBhZ2VH ZXRDb250ZW50cyhTdWJUcmFuc0N0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dKTsNCiAJ cHRyICs9IGVudHJ5bm87DQogDQogCS8qDQpAQCAtMTMzLDcgKzEzNCw3IEBAIFN1YlRyYW5zR2V0 UGFyZW50KFRyYW5zYWN0aW9uSWQgeGlkKQ0KIAkvKiBsb2NrIGlzIGFjcXVpcmVkIGJ5IFNpbXBs ZUxydVJlYWRQYWdlX1JlYWRPbmx5ICovDQogDQogCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdl X1JlYWRPbmx5KFN1YlRyYW5zQ3RsLCBwYWdlbm8sIHhpZCk7DQotCXB0ciA9IChUcmFuc2FjdGlv bklkICopIFN1YlRyYW5zQ3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCXB0ciA9 IChUcmFuc2FjdGlvbklkICopIFBhZ2VHZXRDb250ZW50cyhTdWJUcmFuc0N0bC0+c2hhcmVkLT5w YWdlX2J1ZmZlcltzbG90bm9dKTsNCiAJcHRyICs9IGVudHJ5bm87DQogDQogCXBhcmVudCA9ICpw dHI7DQpAQCAtMTkzLDE0ICsxOTQsMTQgQEAgU3ViVHJhbnNHZXRUb3Btb3N0VHJhbnNhY3Rpb24o VHJhbnNhY3Rpb25JZCB4aWQpDQogU2l6ZQ0KIFNVQlRSQU5TU2htZW1TaXplKHZvaWQpDQogew0K LQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9TVUJUUkFOU19CVUZGRVJTLCAwKTsNCisJ cmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fU1VCVFJBTlNfQlVGRkVSUyk7DQogfQ0KIA0K IHZvaWQNCiBTVUJUUkFOU1NobWVtSW5pdCh2b2lkKQ0KIHsNCiAJU3ViVHJhbnNDdGwtPlBhZ2VQ cmVjZWRlcyA9IFN1YlRyYW5zUGFnZVByZWNlZGVzOw0KLQlTaW1wbGVMcnVJbml0KFN1YlRyYW5z Q3RsLCAiU3VidHJhbnMiLCBOVU1fU1VCVFJBTlNfQlVGRkVSUywgMCwNCisJU2ltcGxlTHJ1SW5p dChTdWJUcmFuc0N0bCwgIlN1YnRyYW5zIiwgTlVNX1NVQlRSQU5TX0JVRkZFUlMsDQogCQkJCSAg U3VidHJhbnNTTFJVTG9jaywgInBnX3N1YnRyYW5zIiwNCiAJCQkJICBMV1RSQU5DSEVfU1VCVFJB TlNfQlVGRkVSLCBTWU5DX0hBTkRMRVJfTk9ORSwNCiAJCQkJICBmYWxzZSk7DQpAQCAtMzA1LDcg KzMwNiw2IEBAIENoZWNrUG9pbnRTVUJUUkFOUyh2b2lkKQ0KIAlUUkFDRV9QT1NUR1JFU1FMX1NV QlRSQU5TX0NIRUNLUE9JTlRfRE9ORSh0cnVlKTsNCiB9DQogDQotDQogLyoNCiAgKiBNYWtlIHN1 cmUgdGhhdCBTVUJUUkFOUyBoYXMgcm9vbSBmb3IgYSBuZXdseS1hbGxvY2F0ZWQgWElELg0KICAq DQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMNCmluZGV4IDhiMjRiMjIyOTMuLmQzYjhkNTQ5MDMgMTAwNjQ0DQot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jDQorKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hc3luYy5jDQpAQCAtMTQwLDYgKzE0MCw3IEBADQogI2luY2x1ZGUgImxpYnBxL2xpYnBx LmgiDQogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiDQogI2luY2x1ZGUgIm1pc2NhZG1pbi5o Ig0KKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCINCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCINCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5o Ig0KQEAgLTE2Miw3ICsxNjMsNyBAQA0KICAqIHRoYW4gdGhhdCwgc28gY2hhbmdlcyBpbiB0aGF0 IGRhdGEgc3RydWN0dXJlIHdvbid0IGFmZmVjdCB1c2VyLXZpc2libGUNCiAgKiByZXN0cmljdGlv bnMuDQogICovDQotI2RlZmluZSBOT1RJRllfUEFZTE9BRF9NQVhfTEVOR1RICShCTENLU1ogLSBO QU1FREFUQUxFTiAtIDEyOCkNCisjZGVmaW5lIE5PVElGWV9QQVlMT0FEX01BWF9MRU5HVEgJKFNp emVPZlBhZ2VDb250ZW50cyAtIE5BTUVEQVRBTEVOIC0gMTI4KQ0KIA0KIC8qDQogICogU3RydWN0 IHJlcHJlc2VudGluZyBhbiBlbnRyeSBpbiB0aGUgZ2xvYmFsIG5vdGlmeSBxdWV1ZQ0KQEAgLTMx MSw3ICszMTIsNyBAQCBzdGF0aWMgU2xydUN0bERhdGEgTm90aWZ5Q3RsRGF0YTsNCiANCiAjZGVm aW5lIE5vdGlmeUN0bAkJCQkJKCZOb3RpZnlDdGxEYXRhKQ0KICNkZWZpbmUgUVVFVUVfUEFHRVNJ WkUJCQkJQkxDS1NaDQotDQorI2RlZmluZSBRVUVVRV9QQUdFX0NBUEFDSVRZCQkJKFFVRVVFX1BB R0VTSVpFIC0gTUFYQUxJR04oU2l6ZU9mUGFnZUhlYWRlckRhdGEpKQ0KICNkZWZpbmUgUVVFVUVf RlVMTF9XQVJOX0lOVEVSVkFMCTUwMDAJLyogd2FybiBhdCBtb3N0IG9uY2UgZXZlcnkgNXMgKi8N CiANCiAvKg0KQEAgLTQ5Miw3ICs0OTMsNyBAQCBBc3luY1NobWVtU2l6ZSh2b2lkKQ0KIAlzaXpl ID0gbXVsX3NpemUoTWF4QmFja2VuZHMgKyAxLCBzaXplb2YoUXVldWVCYWNrZW5kU3RhdHVzKSk7 DQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJvbCwgYmFj a2VuZCkpOw0KIA0KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKE5V TV9OT1RJRllfQlVGRkVSUywgMCkpOw0KKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1 U2htZW1TaXplKE5VTV9OT1RJRllfQlVGRkVSUykpOw0KIA0KIAlyZXR1cm4gc2l6ZTsNCiB9DQpA QCAtNTQxLDcgKzU0Miw3IEBAIEFzeW5jU2htZW1Jbml0KHZvaWQpDQogCSAqIG5hbWVzIGFyZSB1 c2VkIGluIG9yZGVyIHRvIGF2b2lkIHdyYXBhcm91bmQuDQogCSAqLw0KIAlOb3RpZnlDdGwtPlBh Z2VQcmVjZWRlcyA9IGFzeW5jUXVldWVQYWdlUHJlY2VkZXM7DQotCVNpbXBsZUxydUluaXQoTm90 aWZ5Q3RsLCAiTm90aWZ5IiwgTlVNX05PVElGWV9CVUZGRVJTLCAwLA0KKwlTaW1wbGVMcnVJbml0 KE5vdGlmeUN0bCwgIk5vdGlmeSIsIE5VTV9OT1RJRllfQlVGRkVSUywNCiAJCQkJICBOb3RpZnlT TFJVTG9jaywgInBnX25vdGlmeSIsIExXVFJBTkNIRV9OT1RJRllfQlVGRkVSLA0KIAkJCQkgIFNZ TkNfSEFORExFUl9OT05FLCB0cnVlKTsNCiANCkBAIC0xMzAxLDE0ICsxMzAyLDE0IEBAIGFzeW5j UXVldWVBZHZhbmNlKHZvbGF0aWxlIFF1ZXVlUG9zaXRpb24gKnBvc2l0aW9uLCBpbnQgZW50cnlM ZW5ndGgpDQogCSAqIHdyaXR0ZW4gb3IgcmVhZC4NCiAJICovDQogCW9mZnNldCArPSBlbnRyeUxl bmd0aDsNCi0JQXNzZXJ0KG9mZnNldCA8PSBRVUVVRV9QQUdFU0laRSk7DQorCUFzc2VydChvZmZz ZXQgPD0gUVVFVUVfUEFHRV9DQVBBQ0lUWSk7DQogDQogCS8qDQogCSAqIEluIGEgc2Vjb25kIHN0 ZXAgY2hlY2sgaWYgYW5vdGhlciBlbnRyeSBjYW4gcG9zc2libHkgYmUgd3JpdHRlbiB0byB0aGUN CiAJICogcGFnZS4gSWYgc28sIHN0YXkgaGVyZSwgd2UgaGF2ZSByZWFjaGVkIHRoZSBuZXh0IHBv c2l0aW9uLiBJZiBub3QsIHRoZW4NCiAJICogd2UgbmVlZCB0byBtb3ZlIG9uIHRvIHRoZSBuZXh0 IHBhZ2UuDQogCSAqLw0KLQlpZiAob2Zmc2V0ICsgUVVFVUVBTElHTihBc3luY1F1ZXVlRW50cnlF bXB0eVNpemUpID4gUVVFVUVfUEFHRVNJWkUpDQorCWlmIChvZmZzZXQgKyBRVUVVRUFMSUdOKEFz eW5jUXVldWVFbnRyeUVtcHR5U2l6ZSkgPiBRVUVVRV9QQUdFX0NBUEFDSVRZKQ0KIAl7DQogCQlw YWdlbm8rKzsNCiAJCW9mZnNldCA9IDA7DQpAQCAtMTQwOCw3ICsxNDA5LDcgQEAgYXN5bmNRdWV1 ZUFkZEVudHJpZXMoTGlzdENlbGwgKm5leHROb3RpZnkpDQogCQlvZmZzZXQgPSBRVUVVRV9QT1Nf T0ZGU0VUKHF1ZXVlX2hlYWQpOw0KIA0KIAkJLyogQ2hlY2sgd2hldGhlciB0aGUgZW50cnkgcmVh bGx5IGZpdHMgb24gdGhlIGN1cnJlbnQgcGFnZSAqLw0KLQkJaWYgKG9mZnNldCArIHFlLmxlbmd0 aCA8PSBRVUVVRV9QQUdFU0laRSkNCisJCWlmIChvZmZzZXQgKyBxZS5sZW5ndGggPD0gUVVFVUVf UEFHRV9DQVBBQ0lUWSkNCiAJCXsNCiAJCQkvKiBPSywgc28gYWR2YW5jZSBuZXh0Tm90aWZ5IHBh c3QgdGhpcyBpdGVtICovDQogCQkJbmV4dE5vdGlmeSA9IGxuZXh0KHBlbmRpbmdOb3RpZmllcy0+ ZXZlbnRzLCBuZXh0Tm90aWZ5KTsNCkBAIC0xNDIwLDE0ICsxNDIxLDE0IEBAIGFzeW5jUXVldWVB ZGRFbnRyaWVzKExpc3RDZWxsICpuZXh0Tm90aWZ5KQ0KIAkJCSAqIG9ubHkgY2hlY2sgZGJvaWQg YW5kIHNpbmNlIGl0IHdvbid0IG1hdGNoIGFueSByZWFkZXIncyBkYXRhYmFzZQ0KIAkJCSAqIE9J RCwgdGhleSB3aWxsIGlnbm9yZSB0aGlzIGVudHJ5IGFuZCBtb3ZlIG9uLg0KIAkJCSAqLw0KLQkJ CXFlLmxlbmd0aCA9IFFVRVVFX1BBR0VTSVpFIC0gb2Zmc2V0Ow0KKwkJCXFlLmxlbmd0aCA9IFFV RVVFX1BBR0VfQ0FQQUNJVFkgLSBvZmZzZXQ7DQogCQkJcWUuZGJvaWQgPSBJbnZhbGlkT2lkOw0K IAkJCXFlLmRhdGFbMF0gPSAnXDAnOwkvKiBlbXB0eSBjaGFubmVsICovDQogCQkJcWUuZGF0YVsx XSA9ICdcMCc7CS8qIGVtcHR5IHBheWxvYWQgKi8NCiAJCX0NCiANCiAJCS8qIE5vdyBjb3B5IHFl IGludG8gdGhlIHNoYXJlZCBidWZmZXIgcGFnZSAqLw0KLQkJbWVtY3B5KE5vdGlmeUN0bC0+c2hh cmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsgb2Zmc2V0LA0KKwkJbWVtY3B5KFBhZ2VHZXRDb250 ZW50cyhOb3RpZnlDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSkgKyBvZmZzZXQsDQog CQkJICAgJnFlLA0KIAkJCSAgIHFlLmxlbmd0aCk7DQogDQpAQCAtMTk0NywxMCArMTk0OCwxMCBA QCBhc3luY1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnModm9pZCkNCiAJCQllbHNlDQogCQkJew0K IAkJCQkvKiBmZXRjaCBhbGwgdGhlIHJlc3Qgb2YgdGhlIHBhZ2UgKi8NCi0JCQkJY29weXNpemUg PSBRVUVVRV9QQUdFU0laRSAtIGN1cm9mZnNldDsNCisJCQkJY29weXNpemUgPSBRVUVVRV9QQUdF X0NBUEFDSVRZIC0gY3Vyb2Zmc2V0Ow0KIAkJCX0NCi0JCQltZW1jcHkocGFnZV9idWZmZXIuYnVm ICsgY3Vyb2Zmc2V0LA0KLQkJCQkgICBOb3RpZnlDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xv dG5vXSArIGN1cm9mZnNldCwNCisJCQltZW1jcHkoUGFnZUdldENvbnRlbnRzKHBhZ2VfYnVmZmVy LmJ1ZikgKyBjdXJvZmZzZXQsDQorCQkJCSAgIFBhZ2VHZXRDb250ZW50cyhOb3RpZnlDdGwtPnNo YXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSkgKyBjdXJvZmZzZXQsDQogCQkJCSAgIGNvcHlzaXpl KTsNCiAJCQkvKiBSZWxlYXNlIGxvY2sgdGhhdCB3ZSBnb3QgZnJvbSBTaW1wbGVMcnVSZWFkUGFn ZV9SZWFkT25seSgpICovDQogCQkJTFdMb2NrUmVsZWFzZShOb3RpZnlTTFJVTG9jayk7DQpAQCAt MjAyMSw3ICsyMDIyLDcgQEAgYXN5bmNRdWV1ZVByb2Nlc3NQYWdlRW50cmllcyh2b2xhdGlsZSBR dWV1ZVBvc2l0aW9uICpjdXJyZW50LA0KIAkJaWYgKFFVRVVFX1BPU19FUVVBTCh0aGlzZW50cnks IHN0b3ApKQ0KIAkJCWJyZWFrOw0KIA0KLQkJcWUgPSAoQXN5bmNRdWV1ZUVudHJ5ICopIChwYWdl X2J1ZmZlciArIFFVRVVFX1BPU19PRkZTRVQodGhpc2VudHJ5KSk7DQorCQlxZSA9IChBc3luY1F1 ZXVlRW50cnkgKikgKFBhZ2VHZXRDb250ZW50cyhwYWdlX2J1ZmZlcikgKyBRVUVVRV9QT1NfT0ZG U0VUKHRoaXNlbnRyeSkpOw0KIA0KIAkJLyoNCiAJCSAqIEFkdmFuY2UgKmN1cnJlbnQgb3ZlciB0 aGlzIG1lc3NhZ2UsIHBvc3NpYmx5IHRvIHRoZSBuZXh0IHBhZ2UuIEFzDQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3ByZWRpY2F0ZS5jDQppbmRleCBlZTVlYTExNzVjLi5iYTllY2JlNTI0IDEwMDY0NA0K LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jDQorKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMNCkBAIC0yMDQsNiArMjA0LDcgQEANCiAjaW5j bHVkZSAicGdzdGF0LmgiDQogI2luY2x1ZGUgInBvcnQvcGdfbGZpbmQuaCINCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCINCisjaW5jbHVkZSAic3RvcmFnZS9idWZwYWdlLmgiDQogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiDQogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2lu dGVybmFscy5oIg0KICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCINCkBAIC0zMjIsOCArMzIzLDgg QEAgc3RhdGljIFNscnVDdGxEYXRhIFNlcmlhbFNscnVDdGxEYXRhOw0KICNkZWZpbmUgU2VyaWFs U2xydUN0bAkJCSgmU2VyaWFsU2xydUN0bERhdGEpDQogDQogI2RlZmluZSBTRVJJQUxfUEFHRVNJ WkUJCQlCTENLU1oNCi0jZGVmaW5lIFNFUklBTF9FTlRSWVNJWkUJCQlzaXplb2YoU2VyQ29tbWl0 U2VxTm8pDQotI2RlZmluZSBTRVJJQUxfRU5UUklFU1BFUlBBR0UJKFNFUklBTF9QQUdFU0laRSAv IFNFUklBTF9FTlRSWVNJWkUpDQorI2RlZmluZSBTRVJJQUxfRU5UUllTSVpFCQlzaXplb2YoU2Vy Q29tbWl0U2VxTm8pDQorI2RlZmluZSBTRVJJQUxfRU5UUklFU1BFUlBBR0UJKFNFUklBTF9QQUdF U0laRSAtIE1BWEFMSUdOKFNpemVPZlBhZ2VIZWFkZXJEYXRhKSAvIFNFUklBTF9FTlRSWVNJWkUp DQogDQogLyoNCiAgKiBTZXQgbWF4aW11bSBwYWdlcyBiYXNlZCBvbiB0aGUgbnVtYmVyIG5lZWRl ZCB0byB0cmFjayBhbGwgdHJhbnNhY3Rpb25zLg0KQEAgLTMzMyw3ICszMzQsNyBAQCBzdGF0aWMg U2xydUN0bERhdGEgU2VyaWFsU2xydUN0bERhdGE7DQogI2RlZmluZSBTZXJpYWxOZXh0UGFnZShw YWdlKSAoKChwYWdlKSA+PSBTRVJJQUxfTUFYX1BBR0UpID8gMCA6IChwYWdlKSArIDEpDQogDQog I2RlZmluZSBTZXJpYWxWYWx1ZShzbG90bm8sIHhpZCkgKCooKFNlckNvbW1pdFNlcU5vICopIFwN Ci0JKFNlcmlhbFNscnVDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSArIFwNCisJKFBh Z2VHZXRDb250ZW50cyhTZXJpYWxTbHJ1Q3RsLT5zaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10p ICsgXA0KIAkoKCgodWludDMyKSAoeGlkKSkgJSBTRVJJQUxfRU5UUklFU1BFUlBBR0UpICogU0VS SUFMX0VOVFJZU0laRSkpKSkNCiANCiAjZGVmaW5lIFNlcmlhbFBhZ2UoeGlkKQkoKCh1aW50MzIp ICh4aWQpKSAvIFNFUklBTF9FTlRSSUVTUEVSUEFHRSkNCkBAIC03ODUsMTAgKzc4NiwxMyBAQCBT ZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHModm9pZCkNCiAJICogcmVxdWlyZXMg YnVybmluZyB+MkIgWElEcyBpbiBzaW5nbGUtdXNlciBtb2RlLCBhIG5lZ2xpZ2libGUNCiAJICog cG9zc2liaWxpdHkuICBNb3Jlb3ZlciwgaWYgaXQgZG9lcyBoYXBwZW4sIHRoZSBjb25zZXF1ZW5j ZSB3b3VsZCBiZQ0KIAkgKiBtaWxkLCBuYW1lbHkgYSBuZXcgdHJhbnNhY3Rpb24gZmFpbGluZyBp biBTaW1wbGVMcnVSZWFkUGFnZSgpLg0KKwkgKg0KKwkgKiBOT1RFOiAgQWZ0ZXIgYWRkaW5nIHRo ZSBwYWdlIGhlYWRlciwgdGhlIGRlZmVjdCBhZmZlY3RzIHR3byBwYWdlcy4NCisJICogV2Ugbm93 IGFzc2VydCBjb3JyZWN0IHRyZWF0bWVudCBvZiBpdHMgc2Vjb25kIHRvIHByaW9yIHBhZ2UuDQog CSAqLw0KIAloZWFkUGFnZSA9IG9sZGVzdFBhZ2U7DQogCXRhcmdldFBhZ2UgPSBuZXdlc3RQYWdl Ow0KLQlBc3NlcnQoU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5KGhlYWRQYWdlLCB0YXJnZXRQ YWdlIC0gMSkpOw0KKwlBc3NlcnQoU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5KGhlYWRQYWdl LCB0YXJnZXRQYWdlIC0gMikpOw0KICNpZiAwDQogCUFzc2VydChTZXJpYWxQYWdlUHJlY2VkZXNM b2dpY2FsbHkoaGVhZFBhZ2UsIHRhcmdldFBhZ2UpKTsNCiAjZW5kaWYNCkBAIC04MDgsNyArODEy LDcgQEAgU2VyaWFsSW5pdCh2b2lkKQ0KIAkgKi8NCiAJU2VyaWFsU2xydUN0bC0+UGFnZVByZWNl ZGVzID0gU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5Ow0KIAlTaW1wbGVMcnVJbml0KFNlcmlh bFNscnVDdGwsICJTZXJpYWwiLA0KLQkJCQkgIE5VTV9TRVJJQUxfQlVGRkVSUywgMCwgU2VyaWFs U0xSVUxvY2ssICJwZ19zZXJpYWwiLA0KKwkJCQkgIE5VTV9TRVJJQUxfQlVGRkVSUywgU2VyaWFs U0xSVUxvY2ssICJwZ19zZXJpYWwiLA0KIAkJCQkgIExXVFJBTkNIRV9TRVJJQUxfQlVGRkVSLCBT WU5DX0hBTkRMRVJfTk9ORSwNCiAJCQkJICBmYWxzZSk7DQogI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcNCkBAIC0xMzQ4LDcgKzEzNTIsNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1TaXplKHZvaWQp DQogDQogCS8qIFNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBmb3IgU0xSVSB0cmFja2luZyBvZiBv bGQgY29tbWl0dGVkIHhpZHMuICovDQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoU2Vy aWFsQ29udHJvbERhdGEpKTsNCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVt U2l6ZShOVU1fU0VSSUFMX0JVRkZFUlMsIDApKTsNCisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNp bXBsZUxydVNobWVtU2l6ZShOVU1fU0VSSUFMX0JVRkZFUlMpKTsNCiANCiAJcmV0dXJuIHNpemU7 DQogfQ0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9idWZwYWdlLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL3BhZ2UvYnVmcGFnZS5jDQppbmRleCBiZTZmMWY2MmQyLi5lODE5 M2Q3ZjU2IDEwMDY0NA0KLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYw0K KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2J1ZnBhZ2UuYw0KQEAgLTU5LDYgKzU5LDMx IEBAIFBhZ2VJbml0KFBhZ2UgcGFnZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6ZSkN CiAJLyogcC0+cGRfcHJ1bmVfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CQlkb25lIGJ5IGFi b3ZlIE1lbVNldCAqLw0KIH0NCiANCisvKg0KKyAqIFBhZ2VJbml0U0xSVQ0KKyAqCQlJbml0aWFs aXplcyB0aGUgY29udGVudHMgb2YgYW4gU0xSVSBwYWdlLg0KKyAqCQlOb3RlIHRoYXQgd2UgZG9u J3QgY2FsY3VsYXRlIGFuIGluaXRpYWwgY2hlY2tzdW0gaGVyZTsgdGhhdCdzIG5vdCBkb25lDQor ICoJCXVudGlsIGl0J3MgdGltZSB0byB3cml0ZS4NCisgKi8NCit2b2lkDQorUGFnZUluaXRTTFJV KFBhZ2UgcGFnZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6ZSkNCit7DQorCVBhZ2VI ZWFkZXIJcCA9IChQYWdlSGVhZGVyKSBwYWdlOw0KKw0KKwlzcGVjaWFsU2l6ZSA9IE1BWEFMSUdO KHNwZWNpYWxTaXplKTsNCisNCisJQXNzZXJ0KHBhZ2VTaXplID09IEJMQ0tTWik7DQorCUFzc2Vy dChwYWdlU2l6ZSA+IHNwZWNpYWxTaXplICsgU2l6ZU9mUGFnZUhlYWRlckRhdGEpOw0KKw0KKwkv KiBNYWtlIHN1cmUgYWxsIGZpZWxkcyBvZiBwYWdlIGFyZSB6ZXJvLCBhcyB3ZWxsIGFzIHVudXNl ZCBzcGFjZSAqLw0KKwlNZW1TZXQocCwgMCwgcGFnZVNpemUpOw0KKw0KKwlwLT5wZF9mbGFncyA9 IDA7DQorCXAtPnBkX2xvd2VyID0gU2l6ZU9mUGFnZUhlYWRlckRhdGE7DQorCXAtPnBkX3VwcGVy ID0gcGFnZVNpemUgLSBzcGVjaWFsU2l6ZTsNCisJcC0+cGRfc3BlY2lhbCA9IHBhZ2VTaXplIC0g c3BlY2lhbFNpemU7DQorCVBhZ2VTZXRQYWdlU2l6ZUFuZFZlcnNpb24ocGFnZSwgcGFnZVNpemUs IFBHX1NMUlVfUEFHRV9MQVlPVVRfVkVSU0lPTik7DQorfQ0KIA0KIC8qDQogICogUGFnZUlzVmVy aWZpZWRFeHRlbmRlZA0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY2hlY2tzdW1zL3BnX2NoZWNr c3Vtcy5jIGIvc3JjL2Jpbi9wZ19jaGVja3N1bXMvcGdfY2hlY2tzdW1zLmMNCmluZGV4IDZmYzEz MjY0MTguLjdlNjU5NmI4ZmQgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnX2NoZWNrc3Vtcy9wZ19j aGVja3N1bXMuYw0KKysrIGIvc3JjL2Jpbi9wZ19jaGVja3N1bXMvcGdfY2hlY2tzdW1zLmMNCkBA IC0xNiw2ICsxNiw3IEBADQogDQogI2luY2x1ZGUgPGRpcmVudC5oPg0KICNpbmNsdWRlIDxsaW1p dHMuaD4NCisjaW5jbHVkZSA8c3RkYm9vbC5oPg0KICNpbmNsdWRlIDx0aW1lLmg+DQogI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+DQogI2luY2x1ZGUgPHVuaXN0ZC5oPg0KQEAgLTU4OSwxMiArNTkwLDIw IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiAJCXsNCiAJCQl0b3RhbF9zaXplID0g c2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImdsb2JhbCIsIHRydWUpOw0KIAkJCXRvdGFsX3NpemUg Kz0gc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwgImJhc2UiLCB0cnVlKTsNCisJCQl0b3RhbF9zaXpl ICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ19jb21taXRfdHMiLCB0cnVlKTsNCisJCQl0 b3RhbF9zaXplICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ19tdWx0aXhhY3QiLCB0cnVl KTsNCisJCQl0b3RhbF9zaXplICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ19zZXJpYWwi LCB0cnVlKTsNCiAJCQl0b3RhbF9zaXplICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJwZ190 YmxzcGMiLCB0cnVlKTsNCisJCQl0b3RhbF9zaXplICs9IHNjYW5fZGlyZWN0b3J5KERhdGFEaXIs ICJwZ194YWN0IiwgdHJ1ZSk7DQogCQl9DQogDQogCQkodm9pZCkgc2Nhbl9kaXJlY3RvcnkoRGF0 YURpciwgImdsb2JhbCIsIGZhbHNlKTsNCiAJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGly LCAiYmFzZSIsIGZhbHNlKTsNCisJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAicGdf Y29tbWl0X3RzIiwgZmFsc2UpOw0KKwkJKHZvaWQpIHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJw Z19tdWx0aXhhY3QiLCBmYWxzZSk7DQorCQkodm9pZCkgc2Nhbl9kaXJlY3RvcnkoRGF0YURpciwg InBnX3NlcmlhbCIsIGZhbHNlKTsNCiAJCSh2b2lkKSBzY2FuX2RpcmVjdG9yeShEYXRhRGlyLCAi cGdfdGJsc3BjIiwgZmFsc2UpOw0KKwkJKHZvaWQpIHNjYW5fZGlyZWN0b3J5KERhdGFEaXIsICJw Z194YWN0IiwgZmFsc2UpOw0KIA0KIAkJaWYgKHNob3dwcm9ncmVzcykNCiAJCQlwcm9ncmVzc19y ZXBvcnQodHJ1ZSk7DQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNp Yy5wbCBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwNCmluZGV4IDk4MjllNDgx MDYuLjdiOWUwMzRlMTkgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jh c2ljLnBsDQorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsDQpAQCAtMjA2 LDcgKzIwNiw3IEBAIHB1c2ggQGNtZCwNCiAgIHNwcmludGYoIiVkLCVkIiwgaGV4KCRmaWxlc1sw XSkgPT0gMCA/IDMgOiBoZXgoJGZpbGVzWzBdKSwgaGV4KCRmaWxlc1stMV0pKTsNCiANCiBAZmls ZXMgPSBnZXRfc2xydV9maWxlcygncGdfbXVsdGl4YWN0L29mZnNldHMnKTsNCi0kbXVsdCA9IDMy ICogJGJsY2tzeiAvIDQ7DQorJG11bHQgPSAzMiAqICgkYmxja3N6IC0gMjQpIC8gNDsNCiAjIC1t IGFyZ3VtZW50IGlzICJuZXcsb2xkIg0KIHB1c2ggQGNtZCwgJy1tJywNCiAgIHNwcmludGYoIiVk LCVkIiwNCkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBwdXNoIEBjbWQsICctbScsDQogCWhleCgkZmls ZXNbMF0pID09IDAgPyAxIDogaGV4KCRmaWxlc1swXSAqICRtdWx0KSk7DQogDQogQGZpbGVzID0g Z2V0X3NscnVfZmlsZXMoJ3BnX211bHRpeGFjdC9tZW1iZXJzJyk7DQotJG11bHQgPSAzMiAqIGlu dCgkYmxja3N6IC8gMjApICogNDsNCiskbXVsdCA9IDMyICogaW50KCgkYmxja3N6IC0gMjQpIC8g MjApICogNDsNCiBwdXNoIEBjbWQsICctTycsIChoZXgoJGZpbGVzWy0xXSkgKyAxKSAqICRtdWx0 Ow0KIA0KIEBmaWxlcyA9IGdldF9zbHJ1X2ZpbGVzKCdwZ194YWN0Jyk7DQotJG11bHQgPSAzMiAq ICRibGNrc3ogKiA0Ow0KKyRtdWx0ID0gMzIgKiAoJGJsY2tzeiAtIDI0KSAqIDQ7DQogcHVzaCBA Y21kLA0KICAgJy11JywgKGhleCgkZmlsZXNbMF0pID09IDAgPyAzIDogaGV4KCRmaWxlc1swXSkg KiAkbXVsdCksDQogICAnLXgnLCAoKGhleCgkZmlsZXNbLTFdKSArIDEpICogJG11bHQpOw0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9maWxlLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUv ZmlsZS5jDQppbmRleCA0ODUwYTY4MmNiLi42NDE4NGNlY2RiIDEwMDY0NA0KLS0tIGEvc3JjL2Jp bi9wZ191cGdyYWRlL2ZpbGUuYw0KKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2ZpbGUuYw0KQEAg LTksNiArOSw3IEBADQogDQogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiDQogDQorI2luY2x1ZGUg PGRpcmVudC5oPg0KICNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KICNpbmNsdWRlIDxmY250bC5oPg0K ICNpZmRlZiBIQVZFX0NPUFlGSUxFX0gNCkBAIC0zNzUsMyArMzc2LDE3NCBAQCBjaGVja19oYXJk X2xpbmsodm9pZCkNCiANCiAJdW5saW5rKG5ld19saW5rX2ZpbGUpOw0KIH0NCisNCisNCisvKg0K KyAqIENvcHkgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCBmcm9tIGFjY2Vzcy9zbHJ1LmggdG8gYXZv aWQgaW5jbHVkaW5nIGl0Lg0KKyAqLw0KKyNkZWZpbmUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVAkz Mg0KKw0KKyNkZWZpbmUgU0VHTUVOVF9TSVpFCQkJKEJMQ0tTWiAqIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQpDQorDQorLyoNCisgKiBDb3B5IFBhZ2VJbml0U0xSVSBmcm9tIHN0b3JhZ2UvYnVmcGFn ZS5jIHRvIGF2b2lkIGxpbmtpbmcgdG8gdGhlIGJhY2tlbmQuDQorICovDQordm9pZA0KK1BhZ2VJ bml0U0xSVShQYWdlIHBhZ2UsIFNpemUgcGFnZVNpemUsIFNpemUgc3BlY2lhbFNpemUpDQorew0K KwlQYWdlSGVhZGVyCXAgPSAoUGFnZUhlYWRlcikgcGFnZTsNCisNCisJc3BlY2lhbFNpemUgPSBN QVhBTElHTihzcGVjaWFsU2l6ZSk7DQorDQorCUFzc2VydChwYWdlU2l6ZSA9PSBCTENLU1opOw0K KwlBc3NlcnQocGFnZVNpemUgPiBzcGVjaWFsU2l6ZSArIFNpemVPZlBhZ2VIZWFkZXJEYXRhKTsN CisNCisJLyogTWFrZSBzdXJlIGFsbCBmaWVsZHMgb2YgcGFnZSBhcmUgemVybywgYXMgd2VsbCBh cyB1bnVzZWQgc3BhY2UgKi8NCisJTWVtU2V0KHAsIDAsIHBhZ2VTaXplKTsNCisNCisJcC0+cGRf ZmxhZ3MgPSAwOw0KKwlwLT5wZF9sb3dlciA9IFNpemVPZlBhZ2VIZWFkZXJEYXRhOw0KKwlwLT5w ZF91cHBlciA9IHBhZ2VTaXplIC0gc3BlY2lhbFNpemU7DQorCXAtPnBkX3NwZWNpYWwgPSBwYWdl U2l6ZSAtIHNwZWNpYWxTaXplOw0KKwlQYWdlU2V0UGFnZVNpemVBbmRWZXJzaW9uKHBhZ2UsIHBh Z2VTaXplLCBQR19TTFJVX1BBR0VfTEFZT1VUX1ZFUlNJT04pOw0KK30NCisNCisvKg0KKyAqIEZp bHRlciBmdW5jdGlvbiBmb3Igc2NhbmRpcigzKSB0byBzZWxlY3Qgb25seSBzZWdtZW50IGZpbGVz Lg0KKyAqLw0KK3N0YXRpYyBpbnQNCitzZWdtZW50X2ZpbGVfZmlsdGVyKGNvbnN0IHN0cnVjdCBk aXJlbnQgKmRpcmVudCkNCit7DQorCXJldHVybiBzdHJzcG4oZGlyZW50LT5kX25hbWUsICIwMTIz NDU2Nzg5QUJDREVGIikgPT0gc3RybGVuKGRpcmVudC0+ZF9uYW1lKTsNCit9DQorDQorc3RhdGlj IHZvaWQNCit1cGdyYWRlX2ZpbGUoY29uc3QgY2hhciAqc3JjX2RpciwgY29uc3QgY2hhciAqc3Jj X2ZpbGUsIGNvbnN0IGNoYXIgKmRzdF9kaXIpDQorew0KKwljaGFyCXNyY1tNQVhQR1BBVEhdOw0K KwljaGFyCWRzdFtNQVhQR1BBVEhdOw0KKw0KKwlpbnQJCXNlZ19uYW1lX2xlbjsNCisJaW50CQlz cmNfc2Vnbm87DQorCWludDY0CXNyY19wYWdlbm87DQorCWludAkJZHN0X3NlZ25vOw0KKwlpbnQ2 NAlkc3RfcGFnZW5vOw0KKwlpbnQJCWRzdF9vZmZzZXQ7DQorDQorCWludAkJc3JjX2ZkOw0KKwlp bnQJCWRzdF9mZDsNCisNCisJY2hhcgkJICAgKnNyY19idWY7DQorCXNzaXplX3QJCQlzcmNfbGVu Ow0KKwlzc2l6ZV90CQkJc3JjX2J1Zl9vZmZzZXQ7DQorCVBHQWxpZ25lZEJsb2NrCWRzdF9ibG9j azsNCisJUGFnZQkJCXBhZ2UgPSBkc3RfYmxvY2suZGF0YTsNCisJaW50CQkJCWxlbl90b19jb3B5 Ow0KKw0KKwlzZWdfbmFtZV9sZW4gPSBzdHJsZW4oc3JjX2ZpbGUpOw0KKwlzcmNfc2Vnbm8gPSAo aW50KSBzdHJ0b2woc3JjX2ZpbGUsIE5VTEwsIDE2KTsNCisJc3JjX3BhZ2VubyA9IHNyY19zZWdu byAqIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7DQorDQorCWRzdF9wYWdlbm8gPSBzcmNfcGFnZW5v ICogQkxDS1NaIC8gU2l6ZU9mUGFnZUNvbnRlbnRzOw0KKwlkc3Rfb2Zmc2V0ID0gc3JjX3BhZ2Vu byAqIEJMQ0tTWiAtIGRzdF9wYWdlbm8gKiBTaXplT2ZQYWdlQ29udGVudHM7DQorCWRzdF9zZWdu byAgPSBkc3RfcGFnZW5vIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsNCisNCisJc25wcmludGYo c3JjLCBzaXplb2Yoc3JjKSwgIiVzLyVzIiwgc3JjX2Rpciwgc3JjX2ZpbGUpOw0KKwlzbnByaW50 Zihkc3QsIHNpemVvZihkc3QpLCAiJXMvJTAqWCIsIGRzdF9kaXIsIHNlZ19uYW1lX2xlbiwgZHN0 X3NlZ25vKTsNCisNCisJc3JjX2J1ZiA9IHBnX21hbGxvYyhTRUdNRU5UX1NJWkUpOw0KKwlpZiAo KHNyY19mZCA9IG9wZW4oc3JjLCBPX1JET05MWSB8IFBHX0JJTkFSWSwgMCkpID09IC0xKQ0KKwkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlcyIsIHNyYywgc3RyZXJyb3Io ZXJybm8pKTsNCisJaWYgKChzcmNfbGVuID0gcmVhZChzcmNfZmQsIHNyY19idWYsIFNFR01FTlRf U0laRSkpID09IC0xKQ0KKwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAl cyIsIHNyYywgc3RyZXJyb3IoZXJybm8pKTsNCisNCisJaWYgKChkc3RfZmQgPSBvcGVuKGRzdCwg T19SRFdSIHwgT19DUkVBVCB8IFBHX0JJTkFSWSwgU19JUlVTUiB8IFNfSVdVU1IpKSA9PSAtMSkN CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVy cm9yKGVycm5vKSk7DQorCWlmIChmdHJ1bmNhdGUoZHN0X2ZkLCBTRUdNRU5UX1NJWkUpID09IC0x KQ0KKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB0cnVuY2F0ZSBmaWxlIFwiJXNcIjogJXMiLCBkc3Qs IHN0cmVycm9yKGVycm5vKSk7DQorDQorCS8qDQorCSAqIFJlYWQgdGhlIGRlc3RpbmF0aW9uIHBh Z2UgYXQgZHN0X3BhZ2VubyBpbnRvIHRoZSBidWZmZXIuICBUaGUgcGFnZSBtYXkgY29udGFpbg0K KwkgKiBkYXRhIGZyb20gdGhlIHByZXZpb3VzIHNvdXJjZSBzZWdtZW50LiAgSW5pdGlhbGl6ZSB0 aGUgcGFnZSBpZiB0aGUgcGFnZSBpcyBuZXcuDQorCSAqLw0KKwlpZiAobHNlZWsoZHN0X2ZkLCAo ZHN0X3BhZ2VubyAlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpICogQkxDS1NaLCBTRUVLX1NFVCkg PT0gLTEpDQorCQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCI6ICVzIiwg ZHN0LCBzdHJlcnJvcihlcnJubykpOw0KKwlpZiAocmVhZChkc3RfZmQsIHBhZ2UsIEJMQ0tTWikg PT0gLTEpDQorCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVzIiwgZHN0 LCBzdHJlcnJvcihlcnJubykpOw0KKwlpZiAoUGFnZUlzTmV3KHBhZ2UpKQ0KKwkJUGFnZUluaXRT TFJVKHBhZ2UsIEJMQ0tTWiwgMCk7DQorDQorCS8qDQorCSAqIFJld2luZCB0aGUgZmlsZSBwb3Np dGlvbiwgc28gdGhlIGZpcnN0IHdyaXRlIHdpbGwgb3ZlcndyaXRlIHRoZSBwYWdlLg0KKwkgKi8N CisJaWYgKGxzZWVrKGRzdF9mZCwgKGRzdF9wYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U KSAqIEJMQ0tTWiwgU0VFS19TRVQpID09IC0xKQ0KKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZWVr IGluIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3IoZXJybm8pKTsNCisNCisJc3JjX2J1 Zl9vZmZzZXQgPSAwOw0KKwl3aGlsZSAoc3JjX2J1Zl9vZmZzZXQgPCBzcmNfbGVuKQ0KKwl7DQor CQlsZW5fdG9fY29weSA9IE1pbihzcmNfbGVuIC0gc3JjX2J1Zl9vZmZzZXQsIFNpemVPZlBhZ2VD b250ZW50cyAtIGRzdF9vZmZzZXQpOw0KKwkJbWVtY3B5KFBhZ2VHZXRDb250ZW50cyhwYWdlKSAr IGRzdF9vZmZzZXQsIHNyY19idWYgKyBzcmNfYnVmX29mZnNldCwgbGVuX3RvX2NvcHkpOw0KKwkJ c3JjX2J1Zl9vZmZzZXQgKz0gbGVuX3RvX2NvcHk7DQorDQorCQlpZiAobmV3X2NsdXN0ZXIuY29u dHJvbGRhdGEuZGF0YV9jaGVja3N1bV92ZXJzaW9uID4gMCkNCisJCQkoKFBhZ2VIZWFkZXIpIHBh Z2UpLT5wZF9jaGVja3N1bSA9IHBnX2NoZWNrc3VtX3BhZ2UocGFnZSwgZHN0X3BhZ2Vubyk7DQor CQlpZiAod3JpdGUoZHN0X2ZkLCBwYWdlLCBCTENLU1opID09IC0xKQ0KKwkJCXBnX2ZhdGFsKCJj b3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzIiwgZHN0LCBzdHJlcnJvcihlcnJubykpOw0K Kw0KKwkJZHN0X3BhZ2VubysrOw0KKwkJZHN0X29mZnNldCA9IDA7DQorCQlQYWdlSW5pdFNMUlUo cGFnZSwgQkxDS1NaLCAwKTsNCisNCisgICAgICAgIC8qDQorCQkgKiBTd2l0Y2ggc2VnbWVudHMg aWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNlZ21lbnQuDQorCQkgKi8NCisJ CWlmIChkc3RfcGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCA9PSAwKQ0KKwkJew0KKwkJ CWlmIChmc3luYyhkc3RfZmQpID09IC0xKQ0KKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IGZzeW5j IGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3IoZXJybm8pKTsNCisJCQlpZiAoY2xvc2Uo ZHN0X2ZkKSA9PSAtMSkNCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNc IjogJXMiLCBkc3QsIHN0cmVycm9yKGVycm5vKSk7DQorDQorCQkJZHN0X3NlZ25vKys7DQorCQkJ c25wcmludGYoZHN0LCBzaXplb2YoZHN0KSwgIiVzLyUwKlgiLCBkc3RfZGlyLCBzZWdfbmFtZV9s ZW4sIGRzdF9zZWdubyk7DQorCQkJaWYgKChkc3RfZmQgPSBvcGVuKGRzdCwgT19SRFdSIHwgT19D UkVBVCB8IFBHX0JJTkFSWSwgU19JUlVTUiB8IFNfSVdVU1IpKSA9PSAtMSkNCisJCQkJcGdfZmF0 YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3IoZXJybm8p KTsNCisJCQlpZiAoZnRydW5jYXRlKGRzdF9mZCwgU0VHTUVOVF9TSVpFKSA9PSAtMSkNCisJCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCB0cnVuY2F0ZSBmaWxlIFwiJXNcIjogJXMiLCBkc3QsIHN0cmVy cm9yKGVycm5vKSk7DQorCQl9DQorCX0NCisNCisJaWYgKGZzeW5jKGRzdF9mZCkgPT0gLTEpDQor CQlwZ19mYXRhbCgiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJy b3IoZXJybm8pKTsNCisJaWYgKGNsb3NlKGRzdF9mZCkgPT0gLTEpDQorCQlwZ19mYXRhbCgiY291 bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlcyIsIGRzdCwgc3RyZXJyb3IoZXJybm8pKTsNCisN CisJcGdfZnJlZShzcmNfYnVmKTsNCisJY2xvc2Uoc3JjX2ZkKTsNCit9DQorDQordm9pZA0KK3Vw Z3JhZGVfeGFjdF9jYWNoZShjb25zdCBjaGFyICpzcmNfc3ViZGlyLCBjb25zdCBjaGFyICpkc3Rf c3ViZGlyKQ0KK3sNCisJY2hhcglzcmNfZGlyW01BWFBHUEFUSF07DQorCWNoYXIJZHN0X2RpcltN QVhQR1BBVEhdOw0KKw0KKwlESVIJCQkJICAgKnNyY19kaXJwOw0KKwlzdHJ1Y3QgZGlyZW50CSAg ICpzcmNfZGlyZW50Ow0KKw0KKwlzbnByaW50ZihzcmNfZGlyLCBzaXplb2Yoc3JjX2RpciksICIl cy8lcyIsIG9sZF9jbHVzdGVyLnBnZGF0YSwgc3JjX3N1YmRpcik7DQorCXNucHJpbnRmKGRzdF9k aXIsIHNpemVvZihkc3RfZGlyKSwgIiVzLyVzIiwgbmV3X2NsdXN0ZXIucGdkYXRhLCBkc3Rfc3Vi ZGlyKTsNCisNCisJaWYgKChzcmNfZGlycCA9IG9wZW5kaXIoc3JjX2RpcikpID09IE5VTEwpDQor CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXMiLCBzcmNfZGly LCBzdHJlcnJvcihlcnJubykpOw0KKw0KKwl3aGlsZSAoZXJybm8gPSAwLCAoc3JjX2RpcmVudCA9 IHJlYWRkaXIoc3JjX2RpcnApKSAhPSBOVUxMKQ0KKwl7DQorCQlpZiAoc2VnbWVudF9maWxlX2Zp bHRlcihzcmNfZGlyZW50KSkNCisJCQl1cGdyYWRlX2ZpbGUoc3JjX2Rpciwgc3JjX2RpcmVudC0+ ZF9uYW1lLCBkc3RfZGlyKTsNCisJfQ0KKw0KKwlpZiAoY2xvc2VkaXIoc3JjX2RpcnApICE9IDAp DQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVzIiwgc3Jj X2Rpciwgc3RyZXJyb3IoZXJybm8pKTsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdy YWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMNCmluZGV4 IDE0YTM2ZjA1MDMuLmY2MzBjNWIwNGEgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jDQorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jDQpAQCAt NjYwLDE0ICs2NjAsMjMgQEAgY29weV9zdWJkaXJfZmlsZXMoY29uc3QgY2hhciAqb2xkX3N1YmRp ciwgY29uc3QgY2hhciAqbmV3X3N1YmRpcikNCiBzdGF0aWMgdm9pZA0KIGNvcHlfeGFjdF94bG9n X3hpZCh2b2lkKQ0KIHsNCisJYm9vbAlzbHJ1X2hlYWRlcl9jaGFuZ2VkID0gZmFsc2U7DQorDQog CS8qDQogCSAqIENvcHkgb2xkIGNvbW1pdCBsb2dzIHRvIG5ldyBkYXRhIGRpci4gcGdfY2xvZyBo YXMgYmVlbiByZW5hbWVkIHRvDQogCSAqIHBnX3hhY3QgaW4gcG9zdC0xMCBjbHVzdGVycy4NCiAJ ICovDQotCWNvcHlfc3ViZGlyX2ZpbGVzKEdFVF9NQUpPUl9WRVJTSU9OKG9sZF9jbHVzdGVyLm1h am9yX3ZlcnNpb24pIDw9IDkwNiA/DQotCQkJCQkgICJwZ19jbG9nIiA6ICJwZ194YWN0IiwNCi0J CQkJCSAgR0VUX01BSk9SX1ZFUlNJT04obmV3X2NsdXN0ZXIubWFqb3JfdmVyc2lvbikgPD0gOTA2 ID8NCi0JCQkJCSAgInBnX2Nsb2ciIDogInBnX3hhY3QiKTsNCisJY2hhcgkqeGFjdF9vbGRfZGly ID0gR0VUX01BSk9SX1ZFUlNJT04ob2xkX2NsdXN0ZXIubWFqb3JfdmVyc2lvbikgPD0gOTA2ID8g InBnX2Nsb2ciIDogInBnX3hhY3QiOw0KKwljaGFyCSp4YWN0X25ld19kaXIgPSBHRVRfTUFKT1Jf VkVSU0lPTihuZXdfY2x1c3Rlci5tYWpvcl92ZXJzaW9uKSA8PSA5MDYgPyAicGdfY2xvZyIgOiAi cGdfeGFjdCI7DQorDQorCWlmIChuZXdfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IFNM UlVfUEFHRV9IRUFERVJfQ0FUX1ZFUiAmJg0KKwkJb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0 X3ZlciA8IFNMUlVfUEFHRV9IRUFERVJfQ0FUX1ZFUikNCisJCXNscnVfaGVhZGVyX2NoYW5nZWQg PSB0cnVlOw0KKw0KKwlpZiAoc2xydV9oZWFkZXJfY2hhbmdlZCkNCisJCXVwZ3JhZGVfeGFjdF9j YWNoZSh4YWN0X29sZF9kaXIsIHhhY3RfbmV3X2Rpcik7DQorCWVsc2UNCisJCWNvcHlfc3ViZGly X2ZpbGVzKHhhY3Rfb2xkX2RpciwgeGFjdF9uZXdfZGlyKTsNCiANCiAJcHJlcF9zdGF0dXMoIlNl dHRpbmcgb2xkZXN0IFhJRCBmb3IgbmV3IGNsdXN0ZXIiKTsNCiAJZXhlY19wcm9nKFVUSUxJVFlf TE9HX0ZJTEUsIE5VTEwsIHRydWUsIHRydWUsDQpAQCAtNzAyLDcgKzcxMSw4IEBAIGNvcHlfeGFj dF94bG9nX3hpZCh2b2lkKQ0KIAkgKiBzZXJ2ZXIgZG9lc24ndCBhdHRlbXB0IHRvIHJlYWQgbXVs dGlzIG9sZGVyIHRoYW4gdGhlIGN1dG9mZiB2YWx1ZS4NCiAJICovDQogCWlmIChvbGRfY2x1c3Rl ci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAm Jg0KLQkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFU Q0hBTkdFX0NBVF9WRVIpDQorCQluZXdfY2x1c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1V TFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAmJg0KKwkJIXNscnVfaGVhZGVyX2NoYW5nZWQp DQogCXsNCiAJCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsICJwZ19t dWx0aXhhY3Qvb2Zmc2V0cyIpOw0KIAkJY29weV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9t ZW1iZXJzIiwgInBnX211bHRpeGFjdC9tZW1iZXJzIik7DQpAQCAtNzIyLDcgKzczMiw4IEBAIGNv cHlfeGFjdF94bG9nX3hpZCh2b2lkKQ0KIAkJCQkgIG5ld19jbHVzdGVyLnBnZGF0YSk7DQogCQlj aGVja19vaygpOw0KIAl9DQotCWVsc2UgaWYgKG5ld19jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92 ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQ0KKwllbHNlIGlmIChuZXdfY2x1 c3Rlci5jb250cm9sZGF0YS5jYXRfdmVyID49IE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZF UiB8fA0KKwkJCSBzbHJ1X2hlYWRlcl9jaGFuZ2VkKQ0KIAl7DQogCQkvKg0KIAkJICogUmVtb3Zl IG9mZnNldHMvMDAwMCBmaWxlIGNyZWF0ZWQgYnkgaW5pdGRiIHRoYXQgbm8gbG9uZ2VyIG1hdGNo ZXMNCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jp bi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaA0KaW5kZXggYTFkMDhjM2RhYi4uZWRlYzk0OTM3OCAx MDA2NDQNCi0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgNCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgNCkBAIC0xMTUsNiArMTE1LDExIEBAIGV4dGVybiBj aGFyICpvdXRwdXRfZmlsZXNbXTsNCiAgKi8NCiAjZGVmaW5lIE1VTFRJWEFDVF9GT1JNQVRDSEFO R0VfQ0FUX1ZFUiAyMDEzMDEyMzENCiANCisvKg0KKyAqIEEgcGFnZSBoZWFkZXIgd2FzIGFkZGVk IHRvIGVhY2ggU0xSVSBwYWdlIGluIDE3LjAuDQorICovDQorI2RlZmluZSBTTFJVX1BBR0VfSEVB REVSX0NBVF9WRVIgMjAyMzEyMDkxDQorDQogLyoNCiAgKiBsYXJnZSBvYmplY3QgY2h1bmsgc2l6 ZSBhZGRlZCB0byBwZ19jb250cm9sZGF0YSwNCiAgKiBjb21taXQgNWY5M2MzNzgwNWU3NDg1NDg4 NDgwOTE2YjQ1ODVlMDk4ZDNjYzg4Mw0KQEAgLTQwNiw2ICs0MTEsNyBAQCB2b2lkCQlyZXdyaXRl VmlzaWJpbGl0eU1hcChjb25zdCBjaGFyICpmcm9tZmlsZSwgY29uc3QgY2hhciAqdG9maWxlLA0K IAkJCQkJCQkJIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUsIGNvbnN0IGNoYXIgKnJlbE5hbWUpOw0K IHZvaWQJCWNoZWNrX2ZpbGVfY2xvbmUodm9pZCk7DQogdm9pZAkJY2hlY2tfaGFyZF9saW5rKHZv aWQpOw0KK3ZvaWQJCXVwZ3JhZGVfeGFjdF9jYWNoZShjb25zdCBjaGFyICpzcmNfc3ViZGlyLCBj b25zdCBjaGFyICpkc3Rfc3ViZGlyKTsNCiANCiAvKiBmb3Blbl9wcml2KCkgaXMgbm8gbG9uZ2Vy IGRpZmZlcmVudCBmcm9tIGZvcGVuKCkgKi8NCiAjZGVmaW5lIGZvcGVuX3ByaXYocGF0aCwgbW9k ZSkJZm9wZW4ocGF0aCwgbW9kZSkNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xy dS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaA0KaW5kZXggYjA1ZjZiYzcxZC4uNDY4NDM4 OWZkYSAxMDA2NDQNCi0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgNCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9zbHJ1LmgNCkBAIC02OCwxNyArNjgsNiBAQCB0eXBlZGVmIHN0cnVjdCBT bHJ1U2hhcmVkRGF0YQ0KIAlpbnQJCSAgICpwYWdlX2xydV9jb3VudDsNCiAJTFdMb2NrUGFkZGVk ICpidWZmZXJfbG9ja3M7DQogDQotCS8qDQotCSAqIE9wdGlvbmFsIGFycmF5IG9mIFdBTCBmbHVz aCBMU05zIGFzc29jaWF0ZWQgd2l0aCBlbnRyaWVzIGluIHRoZSBTTFJVDQotCSAqIHBhZ2VzLiAg SWYgbm90IHplcm8vTlVMTCwgd2UgbXVzdCBmbHVzaCBXQUwgYmVmb3JlIHdyaXRpbmcgcGFnZXMg KHRydWUNCi0JICogZm9yIHBnX3hhY3QsIGZhbHNlIGZvciBtdWx0aXhhY3QsIHBnX3N1YnRyYW5z LCBwZ19ub3RpZnkpLiAgZ3JvdXBfbHNuW10NCi0JICogaGFzIGxzbl9ncm91cHNfcGVyX3BhZ2Ug ZW50cmllcyBwZXIgYnVmZmVyIHNsb3QsIGVhY2ggY29udGFpbmluZyB0aGUNCi0JICogaGlnaGVz dCBMU04ga25vd24gZm9yIGEgY29udGlndW91cyBncm91cCBvZiBTTFJVIGVudHJpZXMgb24gdGhh dCBzbG90J3MNCi0JICogcGFnZS4NCi0JICovDQotCVhMb2dSZWNQdHIgKmdyb3VwX2xzbjsNCi0J aW50CQkJbHNuX2dyb3Vwc19wZXJfcGFnZTsNCi0NCiAJLyotLS0tLS0tLS0tDQogCSAqIFdlIG1h cmsgYSBwYWdlICJtb3N0IHJlY2VudGx5IHVzZWQiIGJ5IHNldHRpbmcNCiAJICoJCXBhZ2VfbHJ1 X2NvdW50W3Nsb3Rub10gPSArK2N1cl9scnVfY291bnQ7DQpAQCAtMTQ3LDggKzEzNiw4IEBAIHR5 cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhDQogdHlwZWRlZiBTbHJ1Q3RsRGF0YSAqU2xydUN0bDsN CiANCiANCi1leHRlcm4gU2l6ZSBTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5s c25zKTsNCi1leHRlcm4gdm9pZCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQgbmxzbnMsDQorZXh0ZXJuIFNpemUgU2ltcGxlTHJ1U2ht ZW1TaXplKGludCBuc2xvdHMpOw0KK2V4dGVybiB2b2lkIFNpbXBsZUxydUluaXQoU2xydUN0bCBj dGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsDQogCQkJCQkJICBMV0xvY2sgKmN0bGxv Y2ssIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IHRyYW5jaGVfaWQsDQogCQkJCQkJICBTeW5jUmVx dWVzdEhhbmRsZXIgc3luY19oYW5kbGVyLA0KIAkJCQkJCSAgYm9vbCBsb25nX3NlZ21lbnRfbmFt ZXMpOw0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgNCmluZGV4IDQ2MGQ4MGFjOTcuLmEwNmYyZjA3 NzYgMTAwNjQ0DQotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaA0KKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgNCkBAIC01Nyw2ICs1Nyw2IEBADQogICov DQogDQogLyoJCQkJCQkJeXl5eW1tZGROICovDQotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8J MjAyNDAxMTMxDQorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNDAxMTYxDQogDQogI2Vu ZGlmDQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZwYWdlLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1ZnBhZ2UuaA0KaW5kZXggZDBkZjAyZDM5Yy4uMmRjODM0NTFhNiAxMDA2 NDQNCi0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmcGFnZS5oDQorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL2J1ZnBhZ2UuaA0KQEAgLTIwMSw2ICsyMDEsNyBAQCB0eXBlZGVmIFBhZ2VIZWFk ZXJEYXRhICpQYWdlSGVhZGVyOw0KICAqIGhhbmRsaW5nIHBhZ2VzLg0KICAqLw0KICNkZWZpbmUg UEdfUEFHRV9MQVlPVVRfVkVSU0lPTgkJNA0KKyNkZWZpbmUgUEdfU0xSVV9QQUdFX0xBWU9VVF9W RVJTSU9OCTENCiAjZGVmaW5lIFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTgkxDQogDQogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KQEAgLTI1Nyw2ICsyNTgsMTEgQEAgUGFnZUdldENvbnRlbnRzKFBhZ2UgcGFnZSkNCiAJ cmV0dXJuIChjaGFyICopIHBhZ2UgKyBNQVhBTElHTihTaXplT2ZQYWdlSGVhZGVyRGF0YSk7DQog fQ0KIA0KKy8qDQorICogU3BhY2UgYXZhaWxhYmxlIGZvciBzdG9yaW5nIHBhZ2UgY29udGVudHMu DQorICovDQorI2RlZmluZSBTaXplT2ZQYWdlQ29udGVudHMJKEJMQ0tTWiAtIE1BWEFMSUdOKFNp emVPZlBhZ2VIZWFkZXJEYXRhKSkNCisNCiAvKiAtLS0tLS0tLS0tLS0tLS0tDQogICoJCWZ1bmN0 aW9ucyB0byBhY2Nlc3MgcGFnZSBzaXplIGluZm8NCiAgKiAtLS0tLS0tLS0tLS0tLS0tDQpAQCAt NDg2LDYgKzQ5Miw3IEBAIFN0YXRpY0Fzc2VydERlY2woQkxDS1NaID09ICgoQkxDS1NaIC8gc2l6 ZW9mKHNpemVfdCkpICogc2l6ZW9mKHNpemVfdCkpLA0KIAkJCQkgIkJMQ0tTWiBoYXMgdG8gYmUg YSBtdWx0aXBsZSBvZiBzaXplb2Yoc2l6ZV90KSIpOw0KIA0KIGV4dGVybiB2b2lkIFBhZ2VJbml0 KFBhZ2UgcGFnZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6ZSk7DQorZXh0ZXJuIHZv aWQgUGFnZUluaXRTTFJVKFBhZ2UgcGFnZSwgU2l6ZSBwYWdlU2l6ZSwgU2l6ZSBzcGVjaWFsU2l6 ZSk7DQogZXh0ZXJuIGJvb2wgUGFnZUlzVmVyaWZpZWRFeHRlbmRlZChQYWdlIHBhZ2UsIEJsb2Nr TnVtYmVyIGJsa25vLCBpbnQgZmxhZ3MpOw0KIGV4dGVybiBPZmZzZXROdW1iZXIgUGFnZUFkZEl0 ZW1FeHRlbmRlZChQYWdlIHBhZ2UsIEl0ZW0gaXRlbSwgU2l6ZSBzaXplLA0KIAkJCQkJCQkJCQlP ZmZzZXROdW1iZXIgb2Zmc2V0TnVtYmVyLCBpbnQgZmxhZ3MpOw0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X3NscnUvdGVzdF9zbHJ1LmMNCmluZGV4IDRiMzFmMzMxY2EuLjRlNmNhMDdiNmEgMTAwNjQ0DQot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3NscnUuYw0KKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMNCkBAIC0xNyw2ICsxNyw3IEBADQogI2lu Y2x1ZGUgImFjY2Vzcy9zbHJ1LmgiDQogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiDQogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIg0KKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCINCiAjaW5j bHVkZSAic3RvcmFnZS9mZC5oIg0KICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIg0KICNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiDQpAQCAtNzYsOCArNzcsOCBAQCB0ZXN0X3NscnVfcGFnZV93cml0 ZShQR19GVU5DVElPTl9BUkdTKQ0KIAlUZXN0U2xydUN0bC0+c2hhcmVkLT5wYWdlX3N0YXR1c1tz bG90bm9dID0gU0xSVV9QQUdFX1ZBTElEOw0KIA0KIAkvKiB3cml0ZSBnaXZlbiBkYXRhIHRvIHRo ZSBwYWdlLCB1cCB0byB0aGUgbGltaXQgb2YgdGhlIHBhZ2UgKi8NCi0Jc3RybmNweShUZXN0U2xy dUN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dLCBkYXRhLA0KLQkJCUJMQ0tTWiAtIDEp Ow0KKwlzdHJuY3B5KFBhZ2VHZXRDb250ZW50cyhUZXN0U2xydUN0bC0+c2hhcmVkLT5wYWdlX2J1 ZmZlcltzbG90bm9dKSwgZGF0YSwNCisJCQlTaXplT2ZQYWdlQ29udGVudHMgLSAxKTsNCiANCiAJ U2ltcGxlTHJ1V3JpdGVQYWdlKFRlc3RTbHJ1Q3RsLCBzbG90bm8pOw0KIAlMV0xvY2tSZWxlYXNl KFRlc3RTTFJVTG9jayk7DQpAQCAtMTA0LDcgKzEwNSw3IEBAIHRlc3Rfc2xydV9wYWdlX3JlYWQo UEdfRlVOQ1RJT05fQVJHUykNCiAJTFdMb2NrQWNxdWlyZShUZXN0U0xSVUxvY2ssIExXX0VYQ0xV U0lWRSk7DQogCXNsb3RubyA9IFNpbXBsZUxydVJlYWRQYWdlKFRlc3RTbHJ1Q3RsLCBwYWdlbm8s DQogCQkJCQkJCSAgIHdyaXRlX29rLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7DQotCWRhdGEgPSAo Y2hhciAqKSBUZXN0U2xydUN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dOw0KKwlkYXRh ID0gKGNoYXIgKikgUGFnZUdldENvbnRlbnRzKFRlc3RTbHJ1Q3RsLT5zaGFyZWQtPnBhZ2VfYnVm ZmVyW3Nsb3Rub10pOw0KIAlMV0xvY2tSZWxlYXNlKFRlc3RTTFJVTG9jayk7DQogDQogCVBHX1JF VFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KGRhdGEpKTsNCkBAIC0xMjIsNyArMTIzLDcgQEAg dGVzdF9zbHJ1X3BhZ2VfcmVhZG9ubHkoUEdfRlVOQ1RJT05fQVJHUykNCiAJCQkJCQkJCQkJcGFn ZW5vLA0KIAkJCQkJCQkJCQlJbnZhbGlkVHJhbnNhY3Rpb25JZCk7DQogCUFzc2VydChMV0xvY2tI ZWxkQnlNZShUZXN0U0xSVUxvY2spKTsNCi0JZGF0YSA9IChjaGFyICopIFRlc3RTbHJ1Q3RsLT5z aGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub107DQorCWRhdGEgPSAoY2hhciAqKSBQYWdlR2V0Q29u dGVudHMoVGVzdFNscnVDdGwtPnNoYXJlZC0+cGFnZV9idWZmZXJbc2xvdG5vXSk7DQogCUxXTG9j a1JlbGVhc2UoVGVzdFNMUlVMb2NrKTsNCiANCiAJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3Rv X3RleHQoZGF0YSkpOw0KQEAgLTIwMiw3ICsyMDMsNyBAQCB0ZXN0X3NscnVfc2htZW1fcmVxdWVz dCh2b2lkKQ0KIAkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsNCiANCiAJLyogcmVzZXJ2ZSBz aGFyZWQgbWVtb3J5IGZvciB0aGUgdGVzdCBTTFJVICovDQotCVJlcXVlc3RBZGRpblNobWVtU3Bh Y2UoU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9URVNUX0JVRkZFUlMsIDApKTsNCisJUmVxdWVzdEFk ZGluU2htZW1TcGFjZShTaW1wbGVMcnVTaG1lbVNpemUoTlVNX1RFU1RfQlVGRkVSUykpOw0KIH0N CiANCiBzdGF0aWMgYm9vbA0KQEAgLTIzOCw3ICsyMzksNyBAQCB0ZXN0X3NscnVfc2htZW1fc3Rh cnR1cCh2b2lkKQ0KIA0KIAlUZXN0U2xydUN0bC0+UGFnZVByZWNlZGVzID0gdGVzdF9zbHJ1X3Bh Z2VfcHJlY2VkZXNfbG9naWNhbGx5Ow0KIAlTaW1wbGVMcnVJbml0KFRlc3RTbHJ1Q3RsLCAiVGVz dFNMUlUiLA0KLQkJCQkgIE5VTV9URVNUX0JVRkZFUlMsIDAsIFRlc3RTTFJVTG9jaywgc2xydV9k aXJfbmFtZSwNCisJCQkJICBOVU1fVEVTVF9CVUZGRVJTLCBUZXN0U0xSVUxvY2ssIHNscnVfZGly X25hbWUsDQogCQkJCSAgdGVzdF90cmFuY2hlX2lkLCBTWU5DX0hBTkRMRVJfTk9ORSwgbG9uZ19z ZWdtZW50X25hbWVzKTsNCiB9DQogDQo= --_004_48CDC195503044269E02931D8AE14DF7ebaycom_--