Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oYhE2-0006ds-0W for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Sep 2022 05:15:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oYhE0-00053G-UZ for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Sep 2022 05:15:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oYhDz-000534-Ju for pgsql-hackers@lists.postgresql.org; Thu, 15 Sep 2022 05:15:44 +0000 Received: from esa15.fujitsucc.c3s2.iphmx.com ([68.232.156.107]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oYhDt-00066W-2J for pgsql-hackers@lists.postgresql.org; Thu, 15 Sep 2022 05:15:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1663218937; x=1694754937; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=0slkaP6ArmEnnI6AiNC0zjvSJqX3XPW+R6pshRwcpQs=; b=caPX4ELQhkuDGslmiuI4bbk4D/ANStRGe73+K7geWTo/xyG4I8PsLjMP ImZ6dzKtuLVk44X5vX6BaY9JaqV0vuUCC/oKnJi/Ci2GmAYtRK0m/JJZK b7QkCPlAqoScU7DxySfdrZo1ASnWrHHurZPhRKbZEUcliIHW5Z1qZXSsy 3ocK6oR7XwVtw5FWlq0H4oVOKkuioXWyS1n9qLyQo+NumbnmetoI/MgWN LC8kP15tMcqynsPrclaXFw9aKV3ef2uujzZup+uJVITlWcyCFQgSujrw5 hfDAiEPfAoIW6esFFE6pqPmF5m0qbIHiWyokPfhOn9Qdu/FIXf0FRaeuu A==; X-IronPort-AV: E=McAfee;i="6500,9779,10470"; a="65168991" X-IronPort-AV: E=Sophos;i="5.93,317,1654527600"; d="scan'208,223";a="65168991" Received: from mail-os0jpn01lp2106.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.106]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2022 14:15:32 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AQ9geSvWrMA4dSJin8+kfPgIEE6aVy3QpFN7gN0sip6cHSzJyYowdm5asIlqNy0XvT+bbpdU2w1xVjKqeQGz0ENiNLg6wTjUgMrYs8MXiEkmO5FE1T+6Zz26YxvMKKiYHFtYUDUGUzvI5S2IYa7Wx+LjDoDnbBVo7SgVVwXZ7vPJRD+qQmpnyUzgQT3gkDnMTvgB7dYRbnsjcGV25EgLSqschBLJx7gxUQV+/bR7/Ouzt/L2JUE+J7OAiV7z2x8kuZargrUG6LQxDIKFo1fu6lMvzPTThYy6unQJLMEdbkrecv1F9Vow5GlaKgqXqRqjODQRIhsULMv+33jk9e6e5Q== 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=OcNbU4U71epdS7ApnAHHYoWGW23v+PotdtpDEzvSnr0=; b=N/g02ISkq2+mdQUVEa4I/00oomW47Q+aJFfADvmAkkgyo6hzvL34kDuhpTa9kon4YACz0q8n1mLa+C5hIGJNtuEzGf8eL7rpZH70AXx+hfS+aQ1F6G01FgMk/kFwB5oZA6tZcYaNzsiSDS5MGfzqICnSlid8193EqLlucf5YzbYsnysZbckcF93srBncb6mx4VMaG08bwhSJ3+QS8SQ6RvhqeqiaUMllCf3zFoILiAGRmpmfDkfjAwnrk2lKEgpWUso41QWbvlh/jqCgQ7WQV3gQoirx2eWVvwbRs2dRChT6pGUk4Z0QglaCNXYTRvNbYmBvCV7fegj7+skRvHVjqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TYYPR01MB10611.jpnprd01.prod.outlook.com (2603:1096:400:30b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.15; Thu, 15 Sep 2022 05:15:25 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::d059:c042:fb67:b727]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::d059:c042:fb67:b727%4]) with mapi id 15.20.5612.022; Thu, 15 Sep 2022 05:15:24 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , "houzj.fnst@fujitsu.com" CC: Peter Smith , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/sKYGv3sJE+7a/aZxbuwx6zlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xggABuopCACQ1GAIAJSjQggAS+3MCABq/QgIABSJUAgAAOtoCAACmRgIAB78qAgAqLjwCADJX8gIAGVWBQgAGA7xCAAesqgIABYRWAgAgvEYCAAWyzgIAGSRYAgAFBqICAAFYagIABchmAgAGqzwCAATq/gIAFJCcAgAAGs4CABE7agIAK5GAQ Date: Thu, 15 Sep 2022 05:15:24 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9M2M5MDI3N2EtZjUxMC00N2I5LTlkZGYtMTFjY2M4NDlm?= =?utf-8?B?ZDg1O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOS0xNVQwNToxMTo0N1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6275:EE_|TYYPR01MB10611:EE_ x-ms-office365-filtering-correlation-id: 2c5d6b37-215e-4803-91e3-08da96d94bba x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 63q+1pbcgzH76DrKfm7o38HB8jnNVOARGozUP5JmflcjWSlgTkt/FICW1JXkr7/3zlmMx/z1qbGOYAYwlLKHMRv+LB9M7E39BvnjcrMLCh0Kp0/6wgKGhjLqxfF3YhjJoEBH48WLRDDdbKZLc9+p9DgmR1T31Qrdk2T6o38w8rwKHMQhf2LNMxXj0f6Y0j191LaM9O1Bkqhn7GrEI/Kxb3yCAif/qc8pLaD3fSyQSFS2VdAF4ZkpuNgqvpyn580aURFpotCuJJNDX5jwkTboWA/ytQf0gQxHa/Fu24khiQtw+TZw+QW3I7Z0VCGPBdfxVgxddAq86USG+0lJrpWqVU4MZl5fQneOtyowy5z1cltEJ3E0gcXz/ke5SFyBG1PiIUL4z3whzVLtojIger46C734aYVw664+73oiRgKSOdXN8dzWLJyXCO5Hllc5QZoO8vsbRpDla+PMeNKPc5b19wY8LP5kzdyjM/TMnW+lza/eCbU0eP1JtPD4Z32K7kn1jWD2Wk7rYA6vNIX3yBuuvVgXF4mgzvNaB04XTzcfDQAM3kgTSCUUuneYqdS7GM0/jYOrht07HeLHweeoFazjhEFWceUevEi7uttnc0WUp+kyN8FV9PzDsgJyoppizU1UAT4wsRTVGU6Gw46sE1ZarvKO7E48VGd0YXtlX5OHhWQhJgtf6txBeWyRPMSTG3yrq46xJdPKO2XWpgOZpYJ7NRHH/fKWbvZEjrtPTNN9HvelweqY7cifTYybHKvCrfZ4SPS6SCV9rUOOzze5GUC7/USkZt2S+giRoKojWp8htF0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(136003)(39860400002)(376002)(396003)(366004)(1590799012)(451199015)(83380400001)(71200400001)(41300700001)(478600001)(85182001)(8936002)(2906002)(38100700002)(38070700005)(99936003)(122000001)(186003)(82960400001)(1580799009)(55016003)(52536014)(110136005)(54906003)(5660300002)(33656002)(7696005)(6506007)(76116006)(66946007)(66556008)(8676002)(4326008)(64756008)(66446008)(66476007)(9686003)(316002)(86362001)(26005)(53546011)(6636002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YzlDcUpEb09YbFRQM0k0eS9odWpCUzVLRG5lbktHVzd4R1owRjV2MzdWZDVs?= =?utf-8?B?Y1dhc2tzM3pGd2NYNnVWY1JlK2RUcEh5ZDJmaG93d2V3MGRieGovYWdOdmh2?= =?utf-8?B?eFhyWWpXY2pXTS8ydHF1UklwK1E1Y0N4UkRMY09pVkRoMkdQNG9uZ1hhSExi?= =?utf-8?B?dFlleWNNeVA4TlFSRHBVMGZQUGZFbU5HSjBkR0ZLM0ZZM0Q4L1dhRTk2QjZ2?= =?utf-8?B?b2JaSXdCdWdMOXhUaGluV09jV2c1QVJCMlVjaERKdk8rUDBrNzRmTmRBRTF2?= =?utf-8?B?TkMzUkxRTzdMeUljVmttUTR6YzFaN0djUW5GTjZCSHppMGNyZE1aYTJtai9z?= =?utf-8?B?M0RNblRPQm92MzhRMGllSGJvbXhyYXZlR2w5cCsxa1Q2UEt2eVdUSUYzMnFq?= =?utf-8?B?ZmxlbXM3Q3ZkMGVtS3BSbUZsck1ZY1F1MWU1R3FFTmNsVmdaYXUyeG50NGNj?= =?utf-8?B?cGxGc3FUMlZURHhoV1V0Y2dhclpSeUdrZVIvaCsxeXZiTnhTa3pQQTJYdFFo?= =?utf-8?B?RWxFUjBwQmxCZDBrRmxFclhpNExLM1ZxSStCR3ZhSVVzZjcyRFRKaFJ2NFli?= =?utf-8?B?TGVXSWkvdy9xSVpGU0ZyVVRiVGh1ZU43a3AvU1VzVlZDL2VZUW5uOWxNZVc1?= =?utf-8?B?LzVWRmt1Tkw0cXVYYWdXbWpsc2U1dXNnSnlobjNFR3R0M1lGVEp6Qkd5UnRD?= =?utf-8?B?UzBxWTF5Qmc3bWtQK2kzVWNXa3R1ZUx2NW5XVHJHaU5LdG1mZ1JOT1hNb0xp?= =?utf-8?B?dVRZT29DbXRMbDdWK1lOUWpFc2c5UHlsUk8ybjM4K2V6VVlOOFZza0NUWjNj?= =?utf-8?B?YW9uZ1VKSXRkOWU1VStudXp1WURVejRXNzlVMGRQMXZ5UmFSQ3R1WHpBOFM5?= =?utf-8?B?eUlzci9ERjBGeFF6WDdrbVNwM0pSWG5jWjNTQ2k5TUQ4M1pKdDZHYUdkK0sv?= =?utf-8?B?T0xNMHkwTW1WcnNyV3lQSm9XYWtIay8zU2puVzB2eWZZYVBzcjcyWTNJb2ZN?= =?utf-8?B?b2o3bkZUZm52RFFQdHZxYndBUGRxRVhVeDdlYmxlSWFpeGFETzRSTzJRMDFP?= =?utf-8?B?RkEyL0ZvK2dONUd0M3NGeUc4TnRoVXpOd2NHaWpUcGpPOGFVVnBFdGkvVDhH?= =?utf-8?B?ZDd1c1kvYWt6MXRMMldudGxFVUk2VVdkRnMwQ2tLWklGSmRnSjgvMFN1bGpS?= =?utf-8?B?TkxxUCt2aERmL3k5YWNPMFdxM0JxakY4RUlBYU03OSt1R1g2VFpyMnBRTklw?= =?utf-8?B?UHYxdHFnbW5Lam1ENDF2d3pXdkU4dU9xaGZjckN0YlJ0SitsNWZ3Yk1Tekkv?= =?utf-8?B?T1dSTW9GSm9LRllxb1BxWHhQenBoTEpXWnlyTEZYaVJ4Q2NMd2cyT1R2WSsy?= =?utf-8?B?enZCWEZ3SU5vR3Q5cjZCeEZQYnhIV2QxSU9jK2orSmdNSUxaYmt3WHN5cmFN?= =?utf-8?B?QjBERFFSRUpqNGJ0dWY0OWpvejhQbjVZaElpU0RSZE5hYkhQbGVOUkQvQi90?= =?utf-8?B?WGpDWkFieCt3cUJLSXh6cm5lR3FxUlo3cmNQTG9CeTd5RURQWFhZbFU1eENh?= =?utf-8?B?cjQ2bFhjWlpNZDN2QzY1UUxNZ2U3WnNzU01qcFp0bE1pNUxHUFlCejVaejFN?= =?utf-8?B?ckpXbVNIajNiNGRjYW1MOWl3bHFBQjUvUk1PSjNhQ0hpek9oSXV1bnN6b2JR?= =?utf-8?B?a1Q3SVlGMU8vclZ2bkZZaDZTUVl4Wm5RdmdzTHZjVElybzJCc013emx1NTNl?= =?utf-8?B?ZDBsUW1oTkQzeXFuWmg5aERNRGs5Sk9xS3ZrTUU4STdySkJHWW1nRklod2Mx?= =?utf-8?B?cVZ6ZXVvYUdjWnF3THBxOU1tTnI2TGdEaVVjSm1UOFRkbXU1bS9ERTlwTHZO?= =?utf-8?B?aTVkNlFsVXZBWUpGTUlUVUdlb1d3MWl5dkF0VEYxTkZSZUpub3F1eVdlMjBi?= =?utf-8?B?TGExb0wvczNsQXNPVzR3cDRtMGkxR2loUmJiTWR2NHNIeFlaVDBWQWtvWDRT?= =?utf-8?B?V1Z0WWZUTFhCbHVsVS8xZXFxenlDWGpvbWVzUXBCQ2ZSYjgyek1KZ3ZsRHY1?= =?utf-8?B?a0dVWkx1ZVJYYlJYSGZ1SkJoK1lnK3RWbTZzV2JqNWdMcUFrQVUzVFBiVURu?= =?utf-8?Q?AcWmR6zXsNySnXybc8cJSU/KF?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c5d6b37-215e-4803-91e3-08da96d94bba X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2022 05:15:24.8309 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: xl4n5vyy1VcSQlwX4FQXq3USY5/RyEmkHu3tlXYerib5bENzlyYWrCb1ftZ/LZv5Z2g0jDyGltBfJBVIS32U8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB10611 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1ciwgU2VwIDgsIDIwMjIgYXQgMTQ6NTIgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2FwaWxh MTZAZ21haWwuY29tPiB3cm90ZToNCj4gT24gTW9uLCBTZXAgNSwgMjAyMiBhdCA2OjM0IFBNIGhv dXpqLmZuc3RAZnVqaXRzdS5jb20NCj4gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0K PiA+DQo+ID4gQXR0YWNoIHRoZSBjb3JyZWN0IHBhdGNoIHNldCB0aGlzIHRpbWUuDQo+ID4NCj4g DQo+IEZldyBjb21tZW50cyBvbiB2MjgtMDAwMSo6DQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50 cy4NCg0KPiAxLg0KPiArIC8qIFdoZXRoZXIgdGhlIHdvcmtlciBpcyBwcm9jZXNzaW5nIGEgdHJh bnNhY3Rpb24uICovDQo+ICsgYm9vbCBpbl91c2U7DQo+IA0KPiBJIHRoaW5rIHRoaXMgc2FtZSBj b21tZW50IGFwcGxpZXMgdG8gaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGFzDQo+IHdlbGwu IEhvdyBhYm91dDogIkluZGljYXRlcyB3aGV0aGVyIHRoZSB3b3JrZXIgaXMgYXZhaWxhYmxlIHRv IGJlIHVzZWQNCj4gZm9yIHBhcmFsbGVsIGFwcGx5IHRyYW5zYWN0aW9uPyI/DQo+IA0KPiAyLg0K PiArIC8qDQo+ICsgKiBTZXQgdGhpcyBmbGFnIGluIHRoZSBsZWFkZXIgaW5zdGVhZCBvZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvDQo+ICsgKiBhdm9pZCB0aGUgcmFjZSBjb25kaXRpb24g d2hlcmUgdGhlIGxlYWRlciBoYXMgYWxyZWFkeSBzdGFydGVkIHdhaXRpbmcNCj4gKyAqIGZvciB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGZpbmlzaCBwcm9jZXNzaW5nIHRoZSB0cmFuc2Fj dGlvbihzZXQNCj4gKyAqIHRoZSBpbl9wYXJhbGxlbF9hcHBseV94YWN0IHRvIGZhbHNlKSB3aGls ZSB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgbm90IHlldA0KPiArICogcHJvY2Vzc2VkIHRoZSBmaXJz dCBTVFJFQU1fU1RBUlQgYW5kIGhhcyBub3Qgc2V0IHRoZQ0KPiArICogaW5fcGFyYWxsZWxfYXBw bHlfeGFjdCB0byB0cnVlLg0KPiANCj4gSSB0aGluayBwYXJ0IG9mIHRoaXMgY29tbWVudCAiKHNl dCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCB0bw0KPiBmYWxzZSkiIGlzIG5vdCBuZWNlc3Nh cnkuIEl0IHdpbGwgYmUgY2xlYXIgd2l0aG91dCB0aGF0Lg0KPiANCj4gMy4NCj4gKyAvKiBDcmVh dGUgZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8NCj4gKyBlbnRyeSA9IGhhc2hf c2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5k KTsNCj4gKyBpZiAoZm91bmQpDQo+ICsgZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVk Iik7DQo+IC4uLg0KPiAuLi4NCj4gKyBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5V29ya2Vyc0hh c2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsNCj4gDQo+IEl0IGlzIGJldHRlciB0byBoYXZl IGEgc2ltaWxhciBlbG9nIGZvciBIQVNIX1JFTU9WRSBjYXNlIGFzIHdlbGwuIFdlDQo+IG5vcm1h bGx5IHNlZW0gdG8gaGF2ZSBzdWNoIGVsb2cgZm9yIEhBU0hfUkVNT1ZFLg0KPiANCj4gNC4NCj4g KiBQYXJhbGxlbCBhcHBseSBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gc3Vic2NyaWJpbmcgdG8gYSBw dWJsaXNoZXIgd2hpY2gNCj4gKyAgICAgKiBjYW5ub3QgcHJvdmlkZSB0aGUgYWJvcnRfdGltZSwg YWJvcnRfbHNuIGFuZCB0aGUgY29sdW1uIGluZm9ybWF0aW9uDQo+IHVzZWQNCj4gKyAgICAgKiB0 byB2ZXJpZnkgdGhlIHBhcmFsbGVsIGFwcGx5IHNhZmV0eS4NCj4gDQo+IA0KPiBJbiB0aGlzIGNv bW1lbnQsIHdoaWNoIGNvbHVtbiBpbmZvcm1hdGlvbiBhcmUgeW91IHJlZmVycmluZyB0bz8NCj4g DQo+IDUuDQo+ICsgLyoNCj4gKyAqIFNldCBpbl9wYXJhbGxlbF9hcHBseV94YWN0IHRvIHRydWUg YWdhaW4gYXMgd2Ugb25seSBhYm9ydGVkIHRoZQ0KPiArICogc3VidHJhbnNhY3Rpb24gYW5kIHRo ZSB0b3AgdHJhbnNhY3Rpb24gaXMgc3RpbGwgaW4gcHJvZ3Jlc3MuIE5vDQo+ICsgKiBuZWVkIHRv IGxvY2sgaGVyZSBiZWNhdXNlIGN1cnJlbnRseSBvbmx5IHRoZSBhcHBseSBsZWFkZXIgYXJlDQo+ ICsgKiBhY2Nlc3NpbmcgdGhpcyBmbGFnLg0KPiArICovDQo+ICsgd2luZm8tPnNoYXJlZC0+aW5f cGFyYWxsZWxfYXBwbHlfeGFjdCA9IHRydWU7DQo+IA0KPiBUaGlzIHRoZW9yeSBzb3VuZHMgZ29v ZCB0byBtZSBidXQgSSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gdXBkYXRlL3JlYWQNCj4gdGhpcyBm bGFnIHVuZGVyIHNwaW5sb2NrIGFzIHRoZSBwYXRjaCBpcyBkb2luZyBhdCBhIGZldyBvdGhlciBw bGFjZXMuDQo+IEkgdGhpbmsgdGhhdCB3aWxsIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIGZvbGxv dyB3aXRob3V0IHdvcnJ5aW5nIHRvbw0KPiBtdWNoIGFib3V0IHN1Y2ggc3BlY2lhbCBjYXNlcy4g VGhlcmUgYXJlIGEgZmV3IGFzc2VydHMgYXMgd2VsbCB3aGljaA0KPiByZWFkIHRoaXMgd2l0aG91 dCBsb2NrLCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2hhbmdlIHRob3NlIGFzIHdlbGwuDQo+IA0K PiA2Lg0KPiArICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g aXMgdGhlIG1pbmltdW0NCj4gcHJvdG9jb2wgdmVyc2lvbg0KPiArICogd2l0aCBzdXBwb3J0IGZv ciBzdHJlYW1pbmcgbGFyZ2UgdHJhbnNhY3Rpb25zIHVzaW5nIHBhcmFsbGVsIGFwcGx5DQo+ICsg KiB3b3JrZXJzLiBJbnRyb2R1Y2VkIGluIFBHMTYuDQo+IA0KPiBIb3cgYWJvdXQgY2hhbmdpbmcg aXQgdG8gc29tZXRoaW5nIGxpa2U6DQo+ICJMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExF TF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bQ0KPiBwcm90b2NvbA0KPiB2ZXJzaW9uIHdoZXJl IHdlIHN1cHBvcnQgYXBwbHlpbmcgbGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbg0KPiBw YXJhbGxlbC4gSW50cm9kdWNlZCBpbiBQRzE2LiINCj4gDQo+IDcuDQo+ICsgUEdPdXRwdXREYXRh ICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsNCj4g KyBib29sIHdyaXRlX2Fib3J0X2xzbiA9IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49DQo+ICsg TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOw0KPiANCj4gICAv Kg0KPiAgICogVGhlIGFib3J0IHNob3VsZCBoYXBwZW4gb3V0c2lkZSBzdHJlYW1pbmcgYmxvY2ss IGV2ZW4gZm9yIHN0cmVhbWVkDQo+IEBAIC0xODU2LDcgKzE4NTksOCBAQCBwZ291dHB1dF9zdHJl YW1fYWJvcnQoc3RydWN0DQo+IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwNCj4gICBBc3Nl cnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhuKSk7DQo+IA0KPiAgIE91dHB1dFBsdWdpblByZXBh cmVXcml0ZShjdHgsIHRydWUpOw0KPiAtIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0 eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOw0KPiArIGxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24sDQo+ICsgICB3 cml0ZV9hYm9ydF9sc24pOw0KPiANCj4gSSB0aGluayB3ZSBuZWVkIHRvIHNlbmQgYWRkaXRpb25h bCBpbmZvcm1hdGlvbiBpZiB0aGUgY2xpZW50IGhhcyB1c2VkDQo+IHRoZSBwYXJhbGxlbCBzdHJl YW1pbmcgb3B0aW9uLiBBbHNvLCBsZXQncyBrZWVwIHNlbmRpbmcgc3VieGlkIGFzIHdlDQo+IHdl cmUgZG9pbmcgcHJldmlvdXNseSBhbmQgYWRkIGFkZGl0aW9uYWwgcGFyYW1ldGVycyByZXF1aXJl ZC4gSXQgbWF5DQo+IGJlIGJldHRlciB0byBuYW1lIHdyaXRlX2Fib3J0X2xzbiBhcyBhYm9ydF9p bmZvLg0KPiANCj4gOC4NCj4gKyAvKg0KPiArICogQ2hlY2sgd2hldGhlciB0aGUgcHVibGlzaGVy IHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4NCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQg dGhlIHBhcmFsbGUgYXBwbHkgd29ya2VyIGlzIG9ubHkgc3RhcnRlZCB3aGVuIHRoZSBwdWJsaXNo ZXINCj4gKyAqIHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4NCj4gKyAqLw0KPiArIGlm IChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSB8fA0KPiArIHdhbHJjdl9zZXJ2ZXJfdmVyc2lv bihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKSA+PSAxNjAwMDApDQo+ICsgcmVhZF9hYm9ydF9sc24g PSB0cnVlOw0KPiArDQo+ICsgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRf ZGF0YSwgcmVhZF9hYm9ydF9sc24pOw0KPiANCj4gVGhpcyBjaGVjayBzaG91bGQgbWF0Y2ggd2l0 aCB0aGUgY2hlY2sgZm9yIHRoZSB3cml0ZSBvcGVyYXRpb24gd2hlcmUNCj4gd2UgYXJlIGNoZWNr aW5nIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFzIHdlbGwuIFRoZXJlIGlzIGEgdHlwbyBhcyB3ZWxs DQo+IGluIHRoZSBjb21tZW50cyAoL3BhcmFsbGUvcGFyYWxsZWwpLg0KDQpJbXByb3ZlZCBhcyBz dWdnZXN0ZWQuDQoNCkF0dGFjaCB0aGUgbmV3IHBhdGNoIHNldC4NCg0KUmVnYXJkcywNCldhbmcg d2VpDQo= --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v29-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v29-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v29-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=140288; creation-date="Thu, 15 Sep 2022 05:12:00 GMT"; modification-date="Thu, 15 Sep 2022 05:15:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA5NjdjNTkxMmIwYTI3NzQxM2FlODViZDA2OTUxMTM2ZGM2ZjM1YWU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyOSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRoZSBmaWxlIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUgdHJh bnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rpb25z LCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdv cmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkg d29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0g aXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFuZ2Vz IHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5n IGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxs IHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3IgdGhl IHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBz cGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBw YXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3Bh cmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRo ZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCklu IGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJF QU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxz byBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3Jp Z2luIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaXMKYWJvcnRlZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0 byBzdXBwb3J0IHBhcmFsbGVsCnN0cmVhbWluZywgbWVhbmluZyB0aGF0IHBhcmFsbGVsIHN0cmVh bWluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24Kc2VydmVycyA8IFBHMTYu Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAx MSArLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgICAy OCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICAy MSArLQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAy OSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICAy NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgICAx MyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYyAgICAgICAgICAgICAgICAgfCAgIDU4 ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMTAg Ky0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTgg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgIDMg KwogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgICAxMiAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgIHwgICAgMSAr CiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxMDc4ICsr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j ICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgICAgfCAgMTY3ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j ICAgICAgIHwgICAzNyArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j ICAgICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICAgIHwgIDg3MiArKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jICAgfCAgIDIwICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAg ICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyAgICAgICAgICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAg ICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAg ICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wZ19saXN0LmggICAgICAg ICAgICAgICAgICAgfCAgIDExICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmggICAgICAgIHwgICAyOCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oICAgICAgIHwgICAgNiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAg ICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmggICAgICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5o ICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCAgICAgfCAgMTMwICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAg ICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24u b3V0ICAgIHwgICAxMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAg ICAgICAgIHwgICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAg ICAgICAgIHwgICAgNSArCiA0MSBmaWxlcyBjaGFuZ2VkLCAyNDI4IGluc2VydGlvbnMoKyksIDI2 MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMDBmODMz ZDIxMC4uYzU3NjlkYTI2YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc4OTIsMTEgKzc4OTIsMTYgQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxh Y2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAg ICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlw ZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hh cjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIElmIHRydWUsIHRo ZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAg ICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVy YWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAg ICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIg dGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisg ICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5n IGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1lIGFzICd0 JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAg IDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNzAwOTE0Njg0ZC4uY2IyYmU4YTJlMSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bApAQCAtNDk0MCw3ICs0OTQwLDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDxs aXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0gbnVtYmVy IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAgICAgICBi b3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAg ICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgYW5kIHRh YmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFyYT4KICAg ICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSB0YWtl biBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5ODAsNiArNDk4MSwzMSBAQCBBTlkgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVw bGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13b3JrZXJz LXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBw bHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlw ZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9wYXJh bGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVy IG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAg ICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFt aW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlv biBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVy YWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQorICAgICAg ICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPi4KKyAg ICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlz IDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVu YW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21t YW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAg ICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggMGFiMTkxZTQwMi4uNjQ3 MGY0MGUyMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMzcwLDYg KzEzNzAsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRl IGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAg IGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFt aW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBv ZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNl LCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRv IDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAg Y2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBm YWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4g Rm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxp bmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9O IC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAog IDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTU1MSw3 ICsxNTYxLDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEg ZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZl CiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJv bml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBh ZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4K KyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25h bCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTY0Niw4ICsxNjU3LDEyIEBA IENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g InBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJlciwgcGx1cyBzb21l IHJlc2VydmUgZm9yIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJuYW1lPm1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0 CiAgICB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMgc29tZSByZXNlcnZl IGZvciB0aGUgdGFibGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9uYWxseSB0aGUgPHZh cm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkgbmVlZCB0byBiZSBh ZGp1c3RlZCB0byBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QK KyAgIHN5bmNocm9uaXphdGlvbi4gSW4gYWRkaXRpb24sIGlmIHRoZSBzdWJzY3JpcHRpb24gcGFy YW1ldGVyCisgICA8bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+IGlzIHNldCB0byA8bGl0ZXJh bD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHBsZWFzZQorICAgaW5jcmVhc2UgPGxpdGVyYWw+bWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvbGl0ZXJhbD4gYWNjb3JkaW5nIHRvCisgICB0aGUg ZGVzaXJlZCBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxseSB0 aGUKKyAgIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVlZCB0 byBiZSBhZGp1c3RlZCB0bworICAgYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMs IGF0IGxlYXN0CiAgICAoPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vyczwv dmFybmFtZT4KICAgICsgPGxpdGVyYWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUgZXh0 ZW5zaW9ucyBhbmQgcGFyYWxsZWwgcXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90cyBm cm9tIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwK aW5kZXggZjYzYzkxMmU5Ny4uMmI5NzNjMTNlYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3By b3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDAsNyAr MzEwMCw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMg IklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAg IFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFs PiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+ IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJh bD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBm b3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMTAsNiArMzExMCwxMSBAQCBwc3FsICJkYm5hbWU9 cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAg ICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNl cnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWlu ZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNl cnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIGFwcGx5aW5n IHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFy YWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKQEAgLTY4ODAsNiArNjg4NSwyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGlj YXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQu IFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAg IDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVz dGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51 bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIw MDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9j b2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKaW5kZXggNGUwMDFmODExMS4uMTc1Y2NlODUwNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyMiwxMyArMjIyLDI5IEBAIENSRUFURSBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1l PC9yZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVu dHJ5PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5i b29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwv bGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgog ICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0 cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBz dWJzY3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJl IGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhl Ci0gICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1 YnNjcmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4s CisgICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9u IHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNj cmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNo YW5nZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4g YXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRl ZCBvbiB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAg ICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRl cmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAg ICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlm IGF2YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCB3b3JrZXIgaXMgZnJlZSB0byBo YW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMg YXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAg ICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhh cHBlbnMgd2hlbgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3Jr ZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZQorICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBt aWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+ CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMKaW5kZXggNTBmMDkyZDdlYi4uNWE3NmQ5YzFhMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hhY3QuYwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25B Ym9ydChib29sIGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAq Y2hpbGRyZW47CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAK IAkvKgogCSAqIElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxs IGNhcmUgd2hldGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJh bnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9y dCB0cmFuc2FjdGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwog CisJLyoKKwkgKiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8g IE9yLCBpbiBvdGhlciB3b3JkcywKKwkgKiBhcmUgd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25z PworCSAqLworCXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZh bGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9O b3RSZXBsaWNhdGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJv cnQgcmVjb3JkICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxz KTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAg LTE3NjUsNiArMTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0 KQogCQkJCQkgICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5V TEwpOwogCisJaWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlz IHJlcGxpY2F0aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOwor CiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhl IFdBTCB3cml0ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhp bmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5j CmluZGV4IDg2Yjg5MDcxZWUuLjExMzEyZDE5MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2RlZmluZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCkBAIC0z Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8bWF0aC5oPgogCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1l c3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCkBAIC0zNDUsNiArMzQ2LDYzIEBAIGRlZkdldFN0cmlu Z0xpc3QoRGVmRWxlbSAqZGVmKQogCXJldHVybiAoTGlzdCAqKSBkZWYtPmFyZzsKIH0KIAorLyoK KyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhp cyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lh bCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERl ZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNz dW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0 dXJuIFNVQlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUi LCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYt PmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJn KSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNh c2UgMToKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBv dGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFr OworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVm KTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hv dWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0 cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJm YWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRy dWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJ cmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxs ZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJl YWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFs bGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CisKIC8qCiAgKiBSYWlzZSBhbiBlcnJvciBhYm91 dCBhIGNvbmZsaWN0aW5nIERlZkVsZW0uCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYwppbmRleCAxMDI0ZDUxZGNhLi5mYTVhMGNjNDA1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0 IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5h cnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFz ZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtMTM4LDcgKzEz OCw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqc3RtdF9vcHRpb25zLAogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFS WSkpCiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywg U1VCT1BUX1NUUkVBTUlORykpCi0JCW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5z dHJlYW1pbmcgPSBTVUJTVFJFQU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VC T1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElz U2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0 MSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlz dCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3Rh dGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJ b3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1p bmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAo ZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MzEsNyArNjMxLDcg QEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5i aW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJv b2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERh dHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5E SU5HIDoKQEAgLTExMDEsNyArMTEwMSw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRz LnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0o b3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJ CQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwog CQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCmluZGV4IDRkMDQxNWUzNzkuLjZkNTM5NGUzYjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMK QEAgLTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUg ImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAi bGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBt c2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2Vu ZHYocHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJh bGxlbF9sZWFkZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9s ZWFkZXJfcGlkLAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAg cHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNQYXJhbGxl bFdvcmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQs CisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNM b2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9w YXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVT U0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9 CisJCX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDQwNjAxYWVmZDkuLmVlNDgxYmIyMWEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4K Kwl9LAorCXsKKwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBseVdvcmtl ck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJw cXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjBmMjkuLmRh YmY0YjUyZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5j bHVkZSA8c3lzL3RpbWUuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJjb21tb24vY29ubmVjdC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTQ0 Myw5ICs0NDQsMTQgQEAgbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmcoV2FsUmVjZWl2ZXJDb25uICpj b25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJwcm90b192ZXJzaW9uICcldSciLAogCQkJ CQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbik7CiAKLQkJaWYgKG9wdGlv bnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0JCQlQUXNlcnZlclZlcnNpb24oY29ubi0+ c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi LCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1p bmcgIT0gU1VCU1RSRUFNX09GRikKKwkJeworCQkJaWYgKFBRc2VydmVyVmVyc2lvbihjb25uLT5z dHJlYW1Db25uKSA+PSAxNjAwMDAgJiYKKwkJCQlvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVh bWluZyA9PSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLCAiLCBzdHJlYW1pbmcgJ3BhcmFsbGVsJyIpOworCQkJZWxzZSBpZiAoUFFzZXJ2ZXJWZXJz aW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE0MDAwMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCX0KIAogCQlpZiAob3B0aW9ucy0+cHJv dG8ubG9naWNhbC50d29waGFzZSAmJgogCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNv bm4pID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmlu ZGV4IGM0ZTJmZGViNzEuLjJkYzI1ZTM3YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQ UEZMQUdTKQogCiBPQkpTID0gXAorCWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8g XAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjJmNzcxZmM0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCww ICsxLDEwNzggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5j CisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAq IFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0 IHNldHRpbmcgdXAsIHVzaW5nLAorICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBv ZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91dCBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUg ImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgInBnc3Rh dC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZh bC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3du ZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxf QVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAqIERTTSBrZXlzIGZvciBwYXJhbGxl bCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisg KiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5n IHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisj ZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQ TFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMwor CisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FV RVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9m IERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICog dHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0 IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1l c3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZv ciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJ KDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNz YWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOiBzdGFydF9sc24s IGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZSB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2UKKyAq IHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIHdlIGNhbiBpZ25vcmUgdGhl c2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIChzZWUgZnVuY3Rpb24g TG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNkZWZpbmUgU0laRV9TVEFUU19NRVNTQUdFICgy ICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9mKFRpbWVzdGFtcFR6KSkKKworLyoKKyAqIEhh c2ggdGFibGUgZW50cnkgdG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0 YXRlLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlU cmFuc2FjdGlvbklkIHhpZDsJLyogSGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKK30gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5Owor CisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2ggdGFibGUgKGluaXRpYWxpemVkIG9uIGZp cnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID0gTlVM TDsKKworLyoKKyAqIEEgbGlzdCB0byBtYWludGFpbiB0aGUgYWN0aXZlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBmb3IKKyAqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVk IHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorICogbGlz dCBlbnRyeSBpcyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZXJl IGFyZSBhbHJlYWR5CisgKiBlbm91Z2ggd29ya2VycyBpbiB0aGUgd29ya2VyIHBvb2wuIEZvciBt b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyAqIHBvb2wsIHNlZSBjb21tZW50cyBh dG9wIHdvcmtlci5jLiBXZSBhbHNvIHJlbW92ZSB0aGUgZW50cnkgZnJvbSB0aGUgbGlzdCBpZgor ICogdGhlIHdvcmtlciBpcyBleGl0ZWQgZHVlIHRvIHNvbWUgZXJyb3IuCisgKi8KK3N0YXRpYyBM aXN0ICpQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBOSUw7CisKKy8qCisgKiBJbmZvcm1hdGlv biBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQg PSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNzYWdlIHBlbmRpbmcgaW4gcGFyYWxsZWwg YXBwbHkgd29ya2VyIHdoaWNoIHdlIG5lZWQgdG8KKyAqIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxl IGJvb2wgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKy8qCisgKiBDYWNo ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBhcHBs eWluZyB0aGUKKyAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJdCBpcyB1c2VkIHRv IHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQorICogaGFzaCB0YWJsZSB3aGVuIGFwcGx5 aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4gU1RSRUFNX1NUQVJUIGFuZCBTVFJFQU1fU1RPUC4KKyAq LworUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwor CisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitMaXN0 CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworc3RhdGljIGJvb2wgcGFyYWxsZWxfYXBwbHlfY2Fu X3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsKK3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X3Nl dHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICpwYXJhbGxlbF9hcHBseV9zZXR1cF93b3JrZXIodm9pZCk7CitzdGF0 aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICp3c2hhcmVkKTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSwgaWYgaXQgaXMgYWxsb3dlZCB0 byBzdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgZmFsc2UsCisgKiBvdGhlcndpc2UuCisg Ki8KK3N0YXRpYyBib29sCitwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4 aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiBub3QgaW4g cGFyYWxsZWwgc3RyZWFtaW5nIG1vZGUuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5zdHJl YW0gIT0gU1VCU1RSRUFNX1BBUkFMTEVMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbmx5IGxl YWRlciBhcHBseSB3b3JrZXJzIGNhbiBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLwor CWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoK KwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNr aXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRvIHNraXAgdGhlIHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB3ZSBu ZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQKKwkgKiB3ZSBjYW4g Z2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0byBz a2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYg KCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJu IGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBi ZWluZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIHdlIGNhbm5v dCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uIHRoYXQK KwkgKiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNf Zm9yX3JlbCkgYXMgd2Ugd29uJ3QKKwkgKiBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0 aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtl ciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJLyoKKwkgKiBQYXJhbGxlbCBhcHBseSBpcyBub3Qgc3VwcG9ydGVkIHdo ZW4gc3Vic2NyaWJpbmcgdG8gYSBwdWJsaXNoZXIgd2hpY2gKKwkgKiBjYW5ub3QgcHJvdmlkZSB0 aGUgYWJvcnRfdGltZSBhbmQgYWJvcnRfbHNuLgorCSAqLworCWlmICh3YWxyY3Zfc2VydmVyX3Zl cnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubikgPCAxNjAwMDApCisJCXJldHVybiBmYWxzZTsK KworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIElmIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGZvdW5kIGJ1dCBub3QgaW4gdXNlIHRoZW4gcmUtdXNl IGl0LCBvdGhlcndpc2UKKyAqIHN0YXJ0IGEgZnJlc2ggb25lLiBDYWNoZSB0aGUgd29ya2VyIGlu Zm9ybWF0aW9uIGluIFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaAorICoga2V5ZWQgYnkgdGhlIHNw ZWNpZmllZCB4aWQuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcihUcmFu c2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJF bnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYgKCFwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoeGlk KSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5 IHdvcmtlcnMgaGFzaHRhYmxlLiAqLworCWlmIChQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPT0g TlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0 bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOworCQljdGwuaGN4dCA9IEFw cGx5Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBoYXNoX2NyZWF0ZSgi bG9naWNhbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCQkgICAxNiwgJmN0bCwKKwkJ CQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQor CisJLyogVHJ5IHRvIGdldCBhIGZyZWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCWZvcmVh Y2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+ZXJyb3JfbXFfaGFuZGxlID09 IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBSZWxlYXNlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24g YW5kIHRyeSBuZXh0IG9uZSBpZiB0aGUgcGFyYWxsZWwKKwkJCSAqIGFwcGx5IHdvcmtlciBleGl0 ZWQgY2xlYW5seS4KKwkJCSAqLworCQkJUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0ID0gZm9yZWFj aF9kZWxldGVfY3VycmVudChQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QsIGxjKTsKKwkJCXNobV9t cV9kZXRhY2godG1wX3dpbmZvLT5tcV9oYW5kbGUpOworCQkJZHNtX2RldGFjaCh0bXBfd2luZm8t PmRzbV9zZWcpOworCQkJcGZyZWUodG1wX3dpbmZvKTsKKwkJfQorCQllbHNlIGlmICghdG1wX3dp bmZvLT5pbl91c2UpCisJCXsKKwkJCS8qIEZvdW5kIGEgd29ya2VyIHRoYXQgaGFzIG5vdCBiZWVu IGFzc2lnbmVkIGEgdHJhbnNhY3Rpb24uICovCisJCQl3aW5mbyA9IHRtcF93aW5mbzsKKwkJCWJy ZWFrOworCQl9CisJfQorCisJLyogVHJ5IHRvIHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gKi8KKwlpZiAod2luZm8gPT0gTlVMTCkKKwkJd2luZm8gPSBwYXJhbGxlbF9hcHBseV9z ZXR1cF93b3JrZXIoKTsKKworCS8qIEZhaWxlZCB0byBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuICovCisJaWYgKHdpbmZvID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIENyZWF0 ZSBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOwor CWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkv KgorCSAqIFNldCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGluIHRoZSBsZWFkZXIg aW5zdGVhZCBvZiB0aGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gYXZvaWQgdGhlIHJh Y2UgY29uZGl0aW9uIHdoZXJlIHRoZSBsZWFkZXIgaGFzCisJICogYWxyZWFkeSBzdGFydGVkIHdh aXRpbmcgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNoCisJICogcHJvY2Vz c2luZyB0aGUgdHJhbnNhY3Rpb24gd2hpbGUgdGhlIGNoaWxkIHByb2Nlc3MgaGFzIG5vdCB5ZXQg cHJvY2Vzc2VkCisJICogdGhlIGZpcnN0IFNUUkVBTV9TVEFSVCBhbmQgaGFzIG5vdCBzZXQgdGhl IGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgdG8KKwkgKiB0cnVlLgorCSAqLworCXBhcmFsbGVsX2Fw cGx5X3NldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQsIHRydWUpOworCisJd2luZm8tPmluX3VzZSA9 IHRydWU7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9IHhpZDsKK30KKwor LyoKKyAqIEZpbmQgdGhlIHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4g dHJhbnNhY3Rpb24sIGlmIGFueS4KKyAqLworUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFy YWxsZWxfYXBwbHlfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91 bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKFBhcmFsbGVs QXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0 aGUgY2FjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFt X2FwcGx5X3dvcmtlciAhPSBOVUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKwor CS8qCisJICogRmluZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVu dHJ5ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJ TkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogSWYgYW55IHdvcmtlcnMgKG9yIHRo ZSBwb3N0bWFzdGVyKSBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoZW50cnkt PndpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ CQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsK KworCQlBc3NlcnQocGFyYWxsZWxfYXBwbHlfZ2V0X2luX3hhY3QoZW50cnktPndpbmZvLT5zaGFy ZWQpKTsKKwkJQXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKworCQlyZXR1cm4gZW50cnkt PndpbmZvOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogUmVtb3ZlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZS4gQW5kIHN0b3AgdGhl CisgKiB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLgorICov Cit2b2lkCitwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJCW5hcHBseXdvcmtlcnM7CisK KwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKwlBc3NlcnQoIXBhcmFsbGVs X2FwcGx5X2dldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQpKTsKKworCWlmICghaGFzaF9zZWFyY2go UGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkpCisJCWVs b2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJTFdMb2NrQWNxdWlyZShMb2dp Y2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJl cF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7 CisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwl3aW5mby0+aW5fdXNl ID0gZmFsc2U7CisKKwkvKiBBcmUgdGhlcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2w/ICov CisJaWYgKG5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiAvIDIpKQorCXsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KHdp bmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8sCisJCQkJCQkJCQkgICB3aW5m by0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uKTsKKworCQlQYXJhbGxlbEFw cGx5V29ya2Vyc0xpc3QgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0 LCB3aW5mbyk7CisKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsKKwkJc2htX21x X2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNt X3NlZyk7CisJCXBmcmVlKHdpbmZvKTsKKwl9Cit9CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtl ciBtYWluIGxvb3AuICovCitzdGF0aWMgdm9pZAorTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNo bV9tcV9oYW5kbGUgKm1xaCwgdm9sYXRpbGUgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hh cmVkKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJUEdQUk9DCSAgICpyZWdpc3RyYW50 OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJcmVnaXN0cmFudCA9IEJh Y2tlbmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExh dGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1l c3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkg KiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1Nl dENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNv bnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAq IFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVk IHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJh Y2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9y X2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwor CWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisJCWludAkJCWM7 CisJCVN0cmluZ0luZm9EYXRhIHM7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRh IGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2 ZShtcWgsICZsZW4sICZkYXRhLCBmYWxzZSk7CisKKwkJaWYgKHNobXFfcmVzICE9IFNITV9NUV9T VUNDRVNTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlv biB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQorCQkJ YnJlYWs7CisKKwkJcy5jdXJzb3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAo Y2hhciAqKSBkYXRhOworCQlzLmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBUaGUgZmlyc3QgYnl0 ZSBvZiBtZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJl ICd3Jy4KKwkJICovCisJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJaWYgKGMgIT0gJ3cnKQor CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBcIiVjXCIiLCBjKTsKKworCQkvKgor CQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0 aGUgbGVhZGVyIGFwcGx5CisJCSAqIHdvcmtlci4KKwkJICovCisJCXMuY3Vyc29yICs9IFNJWkVf U1RBVFNfTUVTU0FHRTsKKworCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VDb250 ZXh0KTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2Fk UGVuZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0K Kwl9CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4 dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJLyogU2lnbmFsIG1haW4gcHJvY2Vz cyB0aGF0IHdlIGFyZSBkb25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gp OworfQorCisvKgorICogTWFrZSBzdXJlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRv IHJlYWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25lIG1vcmUKKyAqIHRpbWUuIFRoaXMgZ3VhcmRz IGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhpdCB1bmNsZWFubHkgd2l0aG91dCBzZW5kaW5n CisgKiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHNvbWUgY29kZSBjYWxs cyBwcm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0YXRpYyB2b2lkCitwYXJhbGxlbF9hcHBseV9z aHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNlbmRQcm9jU2lnbmFsKE15TG9naWNh bFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQ UExZX01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlkc21fZGV0YWNoKChk c21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBQYXJhbGxl bCBhcHBseSB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8KK3ZvaWQKK1BhcmFsbGVsQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNo YXJlZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2Mg ICAgKnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlzaG1fbXFf aGFuZGxlICplcnJvcl9tcWg7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1h aW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNp Z25hbCBoYW5kbGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICogZmluZCBpdHMg dGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3ZSBkb24n dCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFyYWxsZWxXb3Jr ZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJnd19leHRy YSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7CisJaWYg KHNlZyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBt YXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0gc2htX3RvY19h dHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2Vn KSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJh ZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJ YmVmb3JlX3NobWVtX2V4aXQocGFyYWxsZWxfYXBwbHlfc2h1dGRvd24sIFBvaW50ZXJHZXREYXR1 bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlzaGFy ZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIGZhbHNl KTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhl IG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0FQUExZX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7 CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICogUHJpbWFy eSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gTm93LCB3ZSBjYW4gYXR0YWNoIHRvIG91ciBz bG90LiBUaGlzCisJICogaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg ZG9lcyBub3Qgd3JpdGUgZGF0YSB0byB0aGUKKwkgKiB1bmluaXRpYWxpemVkIG1lbW9yeSBxdWV1 ZS4KKwkgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCU15UGFy YWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBX b3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJf c2xvdF9ubyA9IHdvcmtlcl9zbG90OworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1 ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlf RVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKwll cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJcHFfcmVkaXJlY3Rf dG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9n aWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5k SWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3Rp bWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKgorCSAqIFNldHVwIGNh bGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21ldGhpbmcgY2hhbmdl cyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJICovCisJQ2FjaGVS ZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAorCQkJCQkJCQkgIGlu dmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwor CS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBm b3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJICovCisJc25wcmludGYob3JpZ2lubmFt ZSwgc2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlh cHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVw KEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJTG9naWNh bFBhcmFsbGVsQXBwbHlMb29wKG1xaCwgc2hhcmVkKTsKKworCXByb2NfZXhpdCgwKTsKK30KKwor LyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0 aGluIGEgc2lnbmFsIGhhbmRsZXIhICBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRo YXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQor ICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRy dWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxh dGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2Vp dmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGlj IHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbywgU3RyaW5nSW5mbyBtc2cpCit7CisJY2hhcgkJbXNndHlwZTsKKworCW1zZ3R5cGUg PSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlzd2l0Y2ggKG1zZ3R5cGUpCisJeworCQljYXNlICdF JzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLworCQkJeworCQkJCUVycm9yRGF0YQllZGF0YTsKKwkJ CQlFcnJvckNvbnRleHRDYWxsYmFjayAqc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJ LyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJzZV9lcnJvcm5vdGljZShtc2cs ICZlZGF0YSk7CisKKwkJCQkvKiBEZWF0aCBvZiBhIHdvcmtlciBpc24ndCBlbm91Z2gganVzdGlm aWNhdGlvbiBmb3Igc3VpY2lkZS4gKi8KKwkJCQllZGF0YS5lbGV2ZWwgPSBNaW4oZWRhdGEuZWxl dmVsLCBFUlJPUik7CisKKwkJCQkvKgorCQkJCSAqIElmIGRlc2lyZWQsIGFkZCBhIGNvbnRleHQg bGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJICogbWVzc2FnZSBwcm9wYWdhdGVkIGZy b20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkJICogT3RoZXJ3aXNlLCBpdCBjYW4gc29t ZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5kIHdoYXQKKwkJCQkgKiBhY3R1YWxseSBo YXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEuY29udGV4dCkKKwkJCQkJZWRhdGEuY29u dGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0LAorCQkJCQkJCQkJCQkgXygi cGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9 IHBzdHJkdXAoXygicGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBD b250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tz CisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJ CQkJICovCisJCQkJc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFj azsKKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsK KworCQkJCVRocm93RXJyb3JEYXRhKCZlZGF0YSk7CisKKwkJCQkvKiBTaG91bGQgbm90IHJlYWNo IGhlcmUgYWZ0ZXIgcmV0aHJvd2luZyBhbiBlcnJvci4gKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0 YWNrID0gc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJYnJlYWs7CisJCQl9CisKKwkJ Y2FzZSAnWCc6CQkJCS8qIFRlcm1pbmF0ZSwgaW5kaWNhdGluZyBjbGVhbiBleGl0ICovCisJCQl7 CisJCQkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJCQl3aW5mby0+ ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAq IERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgTm90aWNlUmVzcG9uc2UgYW5kCisJCQkg KiBOb3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24n dCBuZWVkIHRvCisJCQkgKiBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisJCQkgKi8KKwkJ Y2FzZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJeworCQkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZyb20gcGFy YWxsZWwgYXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGggJWQgYnl0ZXMpIiwKKwkJCQkJ IG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwkJCX0KKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1 ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxp c3RDZWxsCSAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGljIE1lbW9y eUNvbnRleHQgaHBtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQg ZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5j dGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBh IHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSBy ZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuICBJdCdzCisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2 ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2 ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgor CSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1l bW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiAgV2UKKwkgKiBk b24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywg c28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQg d2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmIChocG1fY29udGV4dCA9PSBOVUxM KQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwbV9jb250ZXh0ID0gQWxsb2NTZXRDb250 ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSJIYW5kbGVQYXJhbGxlbEFw cGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNl CisJCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBwbHlNZXNzYWdl UGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0 KQorCXsKKwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAq ZGF0YTsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUg PT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXJlcyA9IHNobV9tcV9yZWNlaXZlKHdpbmZvLT5l cnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMsCisJCQkJCQkJICZkYXRhLCB0cnVlKTsKKworCQlpZiAo cmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJCWJyZWFrOworCQllbHNlIGlmIChyZXMgPT0g U0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKworCQkJaW5pdFN0 cmluZ0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRhdGEsIG5i eXRlcyk7CisJCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZSh3aW5mbywgJm1zZyk7CisJCQlw ZnJlZShtc2cuZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciIpKSk7CisJ fQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWlnaHQgYXMg d2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNvbnRleHRS ZXNldChocG1fY29udGV4dCk7CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICog U2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVw IGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQsIHBsdXMKKyAqIG9uZSByZWdpb24gdG8gZWFjaCBvZiBtZXNzYWdlIHF1ZXVlIGFuZCBlcnJv ciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVy ZS4KKyAqLworc3RhdGljIGJvb2wKK3BhcmFsbGVsX2FwcGx5X3NldHVwX2RzbShQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlz ZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCVBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVl X3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VS Uk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1v cnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29z ZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0 IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtl eSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkg KiBhbm90aGVyIGtleSB0byB0cmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUu CisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3Rp bWF0ZV9jaHVuaygmZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZlLCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwg Myk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAq LworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmIChzZWcg PT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9H SUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBz ZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBz aG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsK KwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgpOworCisJc2hhcmVkLT5pbl9wYXJhbGxlbF9h cHBseV94YWN0ID0gZmFsc2U7CisKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZ X0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQgdXAgbWVzc2FnZSBxdWV1ZSBmb3IgdGhl IHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0ZSh0b2MsIHF1 ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQ UExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCisJLyog QXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFfaGFuZGxlID0gc2htX21xX2F0dGFjaCht cSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJvciBxdWV1ZSBmb3IgdGhlIHdvcmtlci4g Ki8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0ZSh0b2MsIGVycm9yX3F1ZXVl X3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2Ms IFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgbXEpOworCXNobV9tcV9zZXRfcmVjZWl2 ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5lcnJv cl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJu IHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5kc21fc2VnID0gc2VnOworCXdpbmZvLT5z aGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFN0YXJ0IHBhcmFs bGVsIGFwcGx5IHdvcmtlciBwcm9jZXNzIGFuZCBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGZvciBp dC4KKyAqLworc3RhdGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhcmFsbGVsX2FwcGx5 X3NldHVwX3dvcmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29s CQlsYXVuY2hlZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisKKwlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3aW5mbyA9IChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQYXJhbGxlbEFwcGx5V29y a2VySW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8KKwlpZiAoIXBhcmFsbGVs X2FwcGx5X3NldHVwX2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisJCXBmcmVlKHdpbmZvKTsKKworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlsYXVu Y2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxSZXBXb3JrZXItPmRiaWQs CisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlv bi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJ CQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRsZSh3aW5mby0+ZHNtX3Nl ZykpOworCisJaWYgKGxhdW5jaGVkKQorCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBsYXBw ZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCWVsc2UKKwl7CisJCXNobV9t cV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9y X21xX2hhbmRsZSk7CisJCWRzbV9kZXRhY2god2luZm8tPmRzbV9zZWcpOworCQlwZnJlZSh3aW5m byk7CisKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8g dGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkgcXVl dWUuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJIGNvbnN0IHZvaWQgKmRhdGEpCit7 CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+ bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0g U0hNX01RX1NVQ0NFU1MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90 IHNlbmQgZGF0YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAqIFdhaXQg dW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBwcm9jZXNzZWQgdGhlIHRyYW5zYWN0aW9u IGZpbmlzaCBjb21tYW5kLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl94YWN0 X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJZm9yICg7OykKKwl7 CisJCWlmICghcGFyYWxsZWxfYXBwbHlfZ2V0X2luX3hhY3Qod2luZm8tPnNoYXJlZCkpCisJCQli cmVhazsKKworCQkvKiBJZiBhbnkgd29ya2VycyBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAq LworCQlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIiKSkpOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkgMTAwMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BB UkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdl IGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJy dXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGluX3BhcmFsbGVsX2Fw cGx5X3hhY3QgZmxhZyBmb3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwor dm9pZAorcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqd3NoYXJlZCwKKwkJCQkJCSAgIGJvb2wgaW5feGFjdCkKK3sKKwlTcGluTG9ja0FjcXVpcmUo JndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT5pbl9wYXJhbGxlbF9hcHBseV94YWN0ID0gaW5f eGFjdDsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdl dCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgYm9vbAorcGFyYWxsZWxfYXBwbHlfZ2V0X2luX3hh Y3QoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlib29sIGluX3hhY3Q7 CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwlpbl94YWN0ID0gd3NoYXJl ZC0+aW5fcGFyYWxsZWxfYXBwbHlfeGFjdDsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11 dGV4KTsKKworCXJldHVybiBpbl94YWN0OworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50 IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisg KiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRy YW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBh cnJpdmVkIHdpdGggZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1l ZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gY29tbWl0L3JvbGxiYWNrIGl0Cisg KiBzZXBhcmF0ZWx5IGxhdGVyLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zdWJ4YWN0X2lu Zm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9 IHN0cmVhbV94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94 aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BB VEhdOworCisJCXBhcmFsbGVsX2FwcGx5X3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5v aWQsIGN1cnJlbnRfeGlkLAorCQkJCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKwor CQllbG9nKERFQlVHMSwgImRlZmluaW5nIHNhdmVwb2ludCAlcyBpbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3QgYmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sg dG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkp CisJCXsKKwkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJCX0KKworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKworCQkvKgorCQkg KiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0YXJ0IGEgc3VidHJhbnNh Y3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNpZGUgYSB0cmFuc2FjdGlv biBibG9jayAoc2VlCisJCSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSkuCisJCSAqLworCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oQXBwbHlDb250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5kX3hpZChzdWJ4YWN0bGlz dCwgY3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9 CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rp b24gd2FzIGFwcGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lk CitwYXJhbGxlbF9hcHBseV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAq YWJvcnRfZGF0YSkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlU cmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBk YXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0 CisJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAq IElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3Bs ZXZlbCB4YWN0LAorCSAqIHNvIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYg KHN1YnhpZCA9PSB4aWQpCisJeworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7 CisKKwkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJs b2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jl c2V0KCk7CisKKwkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCXBnc3RhdF9yZXBv cnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0 KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE9LLCBz byBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4KKwkJICoKKwkJICog V2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNl dAorCQkgKiB0cmFja2VkIGZvciB0aGUgc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0Lgor CQkgKi8KKwkJaW50CQkJaTsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJY2hhcgkJc3BuYW1l W01BWFBHUEFUSF07CisKKwkJcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3Jp cHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsCisJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsK KworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZlcG9pbnQgJXMgaW4gcGFyYWxs ZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4 YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJeworCQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1w ID0gbGlzdF9udGhfeGlkKHN1YnhhY3RsaXN0LCBpKTsKKworCQkJaWYgKHhpZF90bXAgPT0gc3Vi eGlkKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJ CWlmIChmb3VuZCkKKwkJeworCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUo c3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJfQorCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RB VEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCX0KKworCXBhcmFsbGVsX2FwcGx5X3NldF9p bl94YWN0KE15UGFyYWxsZWxTaGFyZWQsIGZhbHNlKTsKK30KKworLyoKKyAqIEZvcm0gdGhlIHNh dmVwb2ludCBuYW1lIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIFJldHVy biB0aGUgbmFtZSBpbiB0aGUgc3VwcGxpZWQgYnVmZmVyLgorICovCit2b2lkCitwYXJhbGxlbF9h cHBseV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJ CQkgIGNoYXIgKnNwbmFtZSwgaW50IHN6c3ApCit7CisJc25wcmludGYoc3BuYW1lLCBzenNwLCAi cGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7Cit9CisKKy8qIFNldHVwIHJlcGxpY2F0aW9uIG9y aWdpbiB0cmFja2luZy4gKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAo dm9pZCkKK3sKKwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVE QVRBTEVOXTsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisKKwkvKiBUaGlzIGZ1bmN0aW9u IG1pZ2h0IGJlIGNhbGxlZCBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0cmFuc2FjdGlvbi4gKi8KKwlp ZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6 ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlvcmlnaW5p ZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7CisJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3Jp Z2luaWQ7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 Cit9CisKKy8qIFJlc2V0IHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8KK3ZvaWQKK3Bh cmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9pZCkKK3sKKwlib29sCQlzdGFydGVkX3R4 ID0gZmFsc2U7CisKKwkvKiBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxlZCBpbnNpZGUgb3Ig b3V0c2lkZSBvZiB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQor CXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJ fQorCisJcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCk7CisKKwlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luID0gSW52YWxpZFJlcE9yaWdpbklkOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5f bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1l c3RhbXAgPSAwOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggMTY2 N2Q3MjBiMS4uYTQzNzY4MzdlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jCkBAIC02NTIsOSArNjUyLDEwIEBAIERlY29kZUNvbW1pdChMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAl7CiAJCWZvciAoaSA9IDA7IGkg PCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7Ci0JCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0 eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyKTsKKwkJCVJlb3Jk ZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9y aWdwdHIsCisJCQkJCQkJCWNvbW1pdF90aW1lKTsKIAkJfQotCQlSZW9yZGVyQnVmZmVyRm9yZ2V0 KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIpOworCQlSZW9yZGVyQnVmZmVyRm9yZ2V0 KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPm9yaWdwdHIsIGNvbW1pdF90aW1lKTsKIAogCQlyZXR1 cm47CiAJfQpAQCAtODIyLDEwICs4MjMsMTEgQEAgRGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBw YXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5y ZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRS ZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwog CQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29y ZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBi dWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyog dXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jCmluZGV4IDNiYmQ1MjI3MjQuLjgzNDRlNDUwOWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU0LDYgKzU0LDcgQEAKIAog aW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3lu Y193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9n aWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgbG9n aWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMg dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtl cik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApA QCAtMTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBU aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBj YXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm4gd2hldGhl ciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJv b2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3VuZFdv cmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAgV2FpdEZvclJlcGxpY2F0 aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tBY3F1 aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBlaXRo ZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJLyog V29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGllZC4g Ki8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxXTG9j a1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIHdv cmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7CkBAIC0xODcsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+Z2Vu ZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiBm YWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMDksNiArMjEzLDggQEAgV2FpdEZvclJlcGxpY2F0aW9u V29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIC8qCiAgKiBXYWxrcyB0aGUg d29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9uZSB0aGF0IG1hdGNoZXMgZ2l2ZW4KICAq IHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgorICogV2UgYXJlIG9ubHkgaW50ZXJlc3Rl ZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtlci4KICAqLwog TG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lk IHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIyMyw2ICsyMjksMTAgQEAgbG9naWNhbHJl cF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiAJ ewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CiAK KwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCQlpZiAoaXNQYXJhbGxlbEFw cGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmluX3VzZSAmJiB3LT5zdWJp ZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5X3J1bm5pbmcgfHwg dy0+cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjY5LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2Vyc19m aW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0gKiBTdGFydCBuZXcg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3RhcnQgbmV3IGJhY2tn cm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vz cywgZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2Vy aWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3 b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3JrZXJI YW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzIsNyArMjg0LDEyIEBAIGxvZ2ljYWxyZXBfd29ya2Vy X2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNl cmlkLAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7 CiAJaW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFwcGx5d29ya2VyczsKIAlU aW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfc3Vid29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0g RFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjazogd2UgZG9uJ3Qgc3VwcG9y dCB0YWJsZSBzeW5jIGluIHN1Yndvcmtlci4gKi8KKwlBc3NlcnQoIShpc19zdWJ3b3JrZXIgJiYg T2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRl cm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biBcIiVzXCIiLApAQCAtMzUwLDcgKzM2NywxOSBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChy ZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlv bikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47 CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdvcmtlcnMgPSBsb2dpY2Fs cmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtlcl9jb3VudChzdWJpZCk7CisKKwkvKgorCSAqIFJldHVy biBzaWxlbnRseSBpZiB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcmVhY2hl ZCB0aGUKKwkgKiBsaW1pdCBwZXIgc3Vic2NyaXB0aW9uLgorCSAqLworCWlmIChpc19zdWJ3b3Jr ZXIgJiYgbnBhcmFsbGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjQsNyArMzkzLDcgQEAgcmV0 cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwK IAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwK IAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVw bGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAK IAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM3OSw2ICs0MDgsNyBAQCByZXRy eToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5y ZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0 ID0gTlVMTDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBpc19zdWJ3b3JrZXIgPyBNeVBy b2NQaWQgOiBJbnZhbGlkUGlkOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RB TVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NiwxMCArNDI2LDE4IEBA IHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJn d19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRm KGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsK KworCWlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwg QkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsK KwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1df TUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19zdWJ3b3JrZXIpCisJ CXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7 CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dp Y2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwpAQCAt NDA5LDYgKzQ0Nyw5IEBAIHJldHJ5OgogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsK IAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19zdWJ3 b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRz bV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3 LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVh biB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjEsMTEgKzQ2MiwxMSBAQCByZXRyeToKIAkJ CQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBl cnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZ b3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQly ZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRh Y2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0 aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNo KHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCkBAIC00MzYsMTkgKzQ3 Nyw1MyBAQCB2b2lkCiBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlk KQogewogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKLQl1aW50MTYJCWdlbmVyYXRpb247CiAK IAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCiAJd29y a2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKIAotCS8q IE5vIHdvcmtlciwgbm90aGluZyB0byBkby4gKi8KLQlpZiAoIXdvcmtlcikKKwlpZiAod29ya2Vy KQogCXsKLQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsK KwkJQXNzZXJ0KCFpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7CisJCWxvZ2ljYWxyZXBf d29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyKTsKIAl9CiAKKwlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlucHV0IHNsb3QgbnVtYmVyLAorICogYW5k IHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUgc2xvdC4KKyAqLwordm9pZAorbG9naWNh bHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJhdGlvbikK K3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndv cmtlcnNbc2xvdF9ub107CisKKwkvKgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBn ZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICovCisJaWYgKHdv cmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykKKwkJbG9naWNh bHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOworCisJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBXb3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBf d29ya2VyX3N0b3AoKSwgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKCkgYW5kCisgKiBsb2dpY2Fs cmVwX3dvcmtlcl9zdG9wX2J5X3Nsb3QoKS4gU3RvcCB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBp dCB0byBkaWUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVy bmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKK3sKKwl1aW50MTYJCWdlbmVyYXRpb247CisK KwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKwogCS8qCiAJ ICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hl Y2sgaWYgd2hhdCB3ZSBzZWUKIAkgKiBpcyBzdGlsbCB0aGUgc2FtZSBvbmUuCkBAIC00ODUsMTAg KzU2MCw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJ CSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdvcmtlciBoYXMgdGFrZW4g dGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+Z2VuZXJh dGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBoYXMgYXNzaWduZWQgcHJv Yywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnByb2MpCkBAIC01MjIsOCAr NTk0LDYgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAog CQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KLQot CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQogCiAvKgpAQCAtNTk5LDYg KzY2OSwyOSBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiBzdGF0aWMgdm9p ZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyoKKwkgKiBJZiB0aGlzIGlz IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRoZW4gc3RvcCBhbGwgdGhlIHBhcmFsbGVsIGFwcGx5 CisJICogd29ya2VycyBwcmV2aW91c2x5IHN0YXJ0ZWQgZnJvbSBoZXJlLgorCSAqLworCWlmICgh YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkgJiYgIWFtX3RhYmxlc3luY193b3JrZXIoKSkKKwl7 CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCUxXTG9ja0FjcXVp cmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2lj YWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlm b3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2lj YWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtl cih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcpOworCQl9CisKKwkJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJfQorCiAJLyogQmxvY2sgY29u Y3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfRVhDTFVTSVZFKTsKIApAQCAtNjIxLDYgKzcxNCw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2Ns ZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQogCXdvcmtlci0+dXNlcmlkID0gSW52YWxp ZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52 YWxpZE9pZDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBJbnZhbGlkUGlkOwogfQogCiAv KgpAQCAtNjc5LDYgKzc3MywzMyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBz dWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdp c3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3 b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX3BhcmFsbGVs X2FwcGx5X3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMg PSAwOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisK KwkvKgorCSAqIFNjYW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkg Y291bnRpbmcgdGhvc2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQu CisJICovCisJZm9yIChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7 IGkrKykKKwl7CisJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vy c1tpXTsKKworCQlpZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2Vy KHcpKQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1 bmNoZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24g bGF1bmNoZXIgc2hhcmVkIG1lbW9yeQpAQCAtODY4LDcgKzk4OSw3IEBAIEFwcGx5TGF1bmNoZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlf aW50ZXJ2YWw7CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3Vi LT5vaWQsIHN1Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOwor CQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsK IAkJCQl9CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRl eCBmZjg1MTNlMmQyLi4zNjRkNWQ3YzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jCkBAIC0xMTYzLDEwICsxMTYzLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkK IC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhh dCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5z YWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2xzbiBpcyB0cnVlLCBzZW5kIHRo ZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0Lgog ICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwg VHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCkKKwkJCQkJ CQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkg IFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsIGJvb2wgYWJvcnRfaW5mbykKIHsKIAlwcV9zZW5kYnl0 ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwogCkBAIC0xMTc1LDE5ICsxMTc5 LDQwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFu c2FjdGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3NlbmRpbnQzMihvdXQs IHhpZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKworCWlmIChhYm9ydF9pbmZvKQor CXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91dCwg YWJvcnRfdGltZSk7CisJfQogfQogCiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUg b3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fib3J0X2xzbiBpcyB0cnVlLCB0cnkgdG8g cmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBk b24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkK K2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9n aWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fi b3J0X2xzbikKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0X2RhdGEp OworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9ydF9kYXRh LT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1zZ2ludChp biwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJlYWRfYWJvcnRf bHNuKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOwor CQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwllbHNl CisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJYWJv cnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA4OWNmOWY5Mzg5Li41YTIw Yzc0ZWVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwpAQCAtMjgzOSw3ICsyODM5LDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVk KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZv aWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHog YWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4NTAsNiArMjg1 MSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJ dHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAq LwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKQEAgLTI5MjQsNyArMjkyNyw4IEBA IFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBv bGRlc3RSdW5uaW5nWGlkKQogICogdG8gdGhpcyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRoZSB0cmFu c2FjdGlvbiBpbmNvbXBsZXRlbHkuCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJGb3JnZXQoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3Jk ZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbiwKKwkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVm ZmVyVFhOICp0eG47CiAKQEAgLTI5MzUsNiArMjkzOSw4IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlp ZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUg PSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhl IHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQo dHhuKSkKIAkJcmItPnN0cmVhbV9hYm9ydChyYiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggODMxZDQyMDE2Yy4uNDdhZTlhODBk ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC02 MDksNyArNjA5LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0 ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJ CQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdv cmtlci0+dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJ IHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJ CWhlbnRyeS0+bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYg KzYzMSw5IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3Vy cmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVu dF9sc24pCiB7CisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zv cl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwppbmRleCBlYWNhNDA2ZDMwLi4yYmZmMWRiYzc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDU2IEBACiAgKiBTVFJFQU1F RCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJh bnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9u IHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3Rl YWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBh cHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVh bSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBhcHByb2FjaGVzOgorICoKKyAqIDEpIFBh cmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqCisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2Ug YXNzaWduIGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoaWYKKyAqIGF2YWlsYWJsZSkgYXMg c29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZC4gVGhlIGxlYWRlciBh cHBseQorICogd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEg c2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUg dHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUg d29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmlu ZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRv IHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubworICogd29ya2VyIGF2YWlsYWJsZS4gSXQg aXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcwor ICogZHVlIHRvIChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQg YSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBz ZWNvbmQgdHJhbnNhY3Rpb24gdGhlbiBhbGxvd2luZyB0byBhcHBseQorICogYm90aCBpbiBwYXJh bGxlbCBjYW4gbGVhZCB0byBmYWlsdXJlIGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsIGFs bG93aW5nCisgKiB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3Mv dGFibGVzIGluIG9wcG9zaXRlIG9yZGVyIHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFsbGVsIGNh biBsZWFkIHRvIGRlYWRsb2Nrcy4KKyAqCisgKiBXZSBtYWludGFpbiBhIHdvcmtlciBwb29sIHRv IGF2b2lkIHJlc3RhcnRpbmcgd29ya2VycyBmb3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0 aW9uLiBXZSBtYWludGFpbiBlYWNoIHdvcmtlcidzIGluZm9ybWF0aW9uIGluIHRoZQorICogUGFy YWxsZWxBcHBseVdvcmtlcnNMaXN0LiBBZnRlciBzdWNjZXNzZnVsbHksIGxhdW5jaGluZyBhIG5l dyB3b3JrZXIgaXQncworICogaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhlIFBhcmFsbGVsQXBw bHlXb3JrZXJzTGlzdC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb24sIHdlIG1hcmsgaXQgYXZhaWxhYmxlIGZvciB1c2UuIE5vdywKKyAqIGJlZm9y ZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biwgd2UgY2hlY2sKKyAqIHRoZSBsaXN0IGFuZCB1c2UgYW55IHdvcmtlciwgaWYgYXZhaWxhYmxl LiBOb3RlIHRoYXQgd2UgbWFpbnRhaW4gYSBtYXhpbXVtCisgKiBvZiBoYWxmIHRoZSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wK KyAqIGFuZCBhZnRlciB0aGF0LCB3ZSBzaW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5 aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGEg Yml0IGFyYml0cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBndWMgZm9yCisgKiB0aGlzIGluIHRo ZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2ls bCBjcmVhdGUgc2VwYXJhdGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4g ZWFjaCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhcnRzLiBUaGUgcmVhc29uIGZvciB0aGlzIGRl c2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3QgY291bnQgaG93IG1hbnkgd29ya2VycyB3aWxsIGJl IHN0YXJ0ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdoIHNoYXJl ZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9mCisg KiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uKSwgYnV0IHRoaXMKKyAqIG1heSB3YXN0ZSBzb21lIG1lbW9yeSBpZiBubyBw cm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSBzZWdtZW50IHdpbGwgY29udGFpbiAgKDEpIGEgc2htX21xIHRoYXQgY2FuIGJlCisgKiB1 c2VkIHRvIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rpb24gZnJvbSBsZWFkZXIgYXBwbHkg d29ya2VyIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgKDIpIGFub3RoZXIgc2htX21xIHRo YXQgY2FuIGJlIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlcgorICogbWVzc2FnZXMgcmVw b3J0ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRv IGxlYWRlcgorICogYXBwbHkgd29ya2VyICgzKSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gYmUg c2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGFuZCBsZWFkZXIgYXBwbHkg d29ya2VyKGkuZS4gaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGFuZCB0aGUKKyAqIGNvcnJl c3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90IGluZm9ybWF0aW9uKS4KKyAqCisgKiAyKSBX cml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBh cnJpdmVzCisgKgorICogSWYgc3RyZWFtaW5nID0gdHJ1ZSwgb3IgaWYgc3RyZWFtaW5nID0gcGFy YWxsZWwgYnV0IHRoZXJlIGFyZSBub3QgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMgYXZhaWxh YmxlIHRvIGhhbmRsZSB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3 cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0 aGUgZmluYWwgY29tbWl0CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAo bm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAg KiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBz dWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwyMCArMjY3LDM1IEBAIHR5cGVkZWYgc3RydWN0 IEFwcGx5RXhlY3V0aW9uRGF0YQogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlOwkvKiBw YXJ0aXRpb24gcm91dGluZyBpbmZvICovCiB9IEFwcGx5RXhlY3V0aW9uRGF0YTsKIAotLyogU3Ry dWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9u ICovCi10eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKKy8qCisgKiBXaGF0IGFj dGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVSX0FQ UExZIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFu Z2VzCisgKiBvZiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgaW4gdGhlIHdv cmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VSSUFMSVpFIG1lYW5zIHRoYXQgd2UgYXJlIGlu IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMKKyAqIGFyZSB3cml0dGVuIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlIGZpbmFsIGNvbW1pdAorICogYXJy aXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCBtZWFucyB0aGF0IHdl IGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogYW5kIG5lZWQgdG8gc2VuZCB0aGUg Y2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5TX1BBUkFM TEVMX0FQUExZIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg YW5kCisgKiBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBp biB0aGUgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0KIHsKLQlMb2dpY2FsUmVwTXNnVHlwZSBj b21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KLQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsK KwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFO U19MRUFERVJfQVBQTFksCiAKLQkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwotCWludAkJ CXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KLQlUcmFuc2FjdGlvbklkIHJlbW90 ZV94aWQ7Ci0JWExvZ1JlY1B0cglmaW5pc2hfbHNuOwotCWNoYXIJICAgKm9yaWdpbl9uYW1lOwot fSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CisJLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5z YWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VSSUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMLAorCVRSQU5TX1BBUkFMTEVMX0FQUExZCit9IFRyYW5zQXBwbHlBY3Rpb247 CiAKLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJn ID0KKy8qIGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLApA QCAtMjQyLDcgKzMwNSw5IEBAIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJy b3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGljIE1l bW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CitFcnJvckNvbnRleHRDYWxs YmFjawkqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IE5VTEw7CisKK01lbW9yeUNvbnRleHQg QXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dCA9 IE5VTEw7CiAKIC8qIHBlciBzdHJlYW0gY29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyAqLwpAQCAtMjUxLDcgKzMxNiw3IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJl YW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3Rh dGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOworYm9vbCBNeVN1YnNjcmlwdGlv blZhbGlkID0gZmFsc2U7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog c3RhdGljIFhMb2dSZWNQdHIgcmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwpA QCAtMjU5LDE5ICszMjQsMjcgQEAgc3RhdGljIFhMb2dSZWNQdHIgcmVtb3RlX2ZpbmFsX2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOwogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5n IHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCiBzdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiA9IGZhbHNlOwogCi1zdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CitUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBzZW50IHRvIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgZHVyaW5nIG9uZSBzdHJlYW1pbmcKKyAqIGJsb2NrLgorICovCitzdGF0 aWMgdWludDMyIG5jaGFuZ2VzID0gMDsKIAogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwg ZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICog dGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBt YXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2Vz LCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0 cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNj cmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBB bHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJl Y2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIg b3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qg c2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3 aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0 aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVy IHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVt cHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBz cGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4g Tm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4g dXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRo ZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlpbmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRp YyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAj ZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFs aWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyNCw5ICszOTcsNiBAQCBzdGF0aWMgdm9p ZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxl U3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNl IG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0lu Zm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNh bFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9p bnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSwxMCArNDI5LDEyIEBAIHN0YXRpYyB2b2lkIHN0 b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsKIHN0YXRpYyB2b2lkIGNsZWFyX3N1YnNjcmlwdGlv bl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogCiAvKiBGdW5jdGlvbnMgZm9yIGFw cGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2 b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hh Y3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9p ZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAKK3N0YXRpYyBUcmFuc0Fw cGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQs CisJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOworCiAvKgog ICogU2hvdWxkIHRoaXMgd29ya2VyIGFwcGx5IGNoYW5nZXMgZm9yIGdpdmVuIHJlbGF0aW9uLgog ICoKQEAgLTM3NSwxMiArNDQ3LDM0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAgKiByZWNvcmQgKyAxIChpZSBzdGFydCBvZiBuZXh0 IHJlY29yZCkgYW5kIG5leHQgcmVjb3JkIGNhbiBiZSBDT01NSVQgb2YKICAqIHRyYW5zYWN0aW9u IHdlIGFyZSBub3cgcHJvY2Vzc2luZyAod2hpY2ggaXMgd2hhdCB3ZSBzZXQgcmVtb3RlX2ZpbmFs X2xzbgogICogdG8gaW4gYXBwbHlfaGFuZGxlX2JlZ2luKS4KKyAqCisgKiBOb3RlIHRoYXQgZm9y IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiB0aGUgcGFy YWxsZWwKKyAqIGFwcGx5IHdvcmtlciwgd2UgZGlzYWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBvbiBh IHRhYmxlIHRoYXQgaXMgbm90IGluCisgKiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fu bm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2UKKyAqIHdvbid0IGtu b3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVj a2VkIHRoaXMgaW4gcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0 aGUKKyAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQg aXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIg ZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBp biBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9u X3JlbAorICogd2hpbGUgYXBwbHlpbmcgdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIGJv b2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9naWNhbFJl cFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwl7CisJCWlmIChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9S RUFEWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gYXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQiLAor CQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhh bmRsZSBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiB1c2luZyBwYXJhbGxlbCAiCisJ CQkJCQkJICAgImFwcGx5IHdvcmtlcnMgdW50aWwgYWxsIHRhYmxlcyBhcmUgc3luY2hyb25pemVk LiIpKSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRl ID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFU RV9TWU5DRE9ORSAmJgpAQCAtNDI2LDQzICs1MjAsODcgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAo dm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5k bGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5n IGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisg KiBTVUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhl IHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFM TEVMIG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMg KExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2Vz CisgKiB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJh bGxlbCBhcHBseSB3b3JrZXJzKS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2 aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGly ZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAq IEZvciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOworICogRm9yIHN0 cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIGxlYWRlciBhcHBseSB3b3Jr ZXIsIGZhbHNlCisgKiBvdGhlcndpc2UuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEV4Y2Vw dGlvbjogSWYgdGhlIG1lc3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01TR19S RUxBVElPTgorICogb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVuIGlm IHRoZSBtZXNzYWdlIG5lZWRzIHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29y a2VyLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2lj YWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlk OworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24J YXBwbHlfYWN0aW9uOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICov Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRS QU5TX0xFQURFUl9BUFBMWSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAh PSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJ LyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhl IGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4 aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywg NCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlv bklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFs aWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkp OwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5 IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJc3dpdGNoIChhcHBseV9hY3Rp b24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlBc3NlcnQoc3RyZWFt X2ZkICE9IE5VTEwpOworCisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAo dW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hp ZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJl YW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJ CXJldHVybiB0cnVlOwogCi0JcmV0dXJuIHRydWU7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYXJhbGxlbF9hcHBseV9zZW5k X2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQluY2hhbmdlcyArPSAxOworCisJCQkv KgorCQkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0 aW9uL3R5cGUgdXBkYXRlCisJCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVy IGFwcGx5IHdvcmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNf Y2FjaGUuCisJCQkgKi8KKwkJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9O IHx8CisJCQkJYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19UWVBFKQorCQkJCXJldHVybiBmYWxz ZTsKKwkJCXJldHVybiB0cnVlOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQkv KiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovCisJCQlwYXJh bGxlbF9hcHBseV9zdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKwkJCXJldHVybiBmYWxz ZTsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsJLyog c2lsZW5jZSBjb21waWxlciB3YXJuaW5nICovCisJfQogfQogCiAvKgpAQCAtODk4LDggKzEwMzYs MTEgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhu RGF0YSAqcHJlcGFyZV9kYXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3Nh cnkgdG8gYmFsYW5jZSB0aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4g dGhlIFByZXBhcmVUcmFuc2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rp b25CbG9jaygpOwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhl IHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkp CisJeworCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQog CiAJLyoKIAkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWlu ZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KQEAgLTk2OCw2ICsxMTA5LDEyIEBAIGFwcGx5X2hhbmRs ZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJF RCBvZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0 IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFy ZWQgaW4gYQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBCZWNhdXNlIHdlIGhhdmUgYWxyZWFk eSB3YWl0ZWQgZm9yIHRoZSBwcmVwYXJlIHRvCisgKiBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0 cmVhbV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZSBvcGVyYXRpb25zCisgKiBp biB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIgYW5kIG5v IGNvbmN1cnJlbnQKKyAqIHRyYW5zYWN0aW9uIGNhbiBjcmVhdGUgZGVhZGxvY2sgb3IgdHJhbnNh Y3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVf Y29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwMTEsNiArMTE1OCwxMiBAQCBhcHBs eV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBh IFJPTExCQUNLIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBUUkFOU0FDVElPTi4K KyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5z YWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEJlY2F1 c2Ugd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUgdG8KKyAqIGZpbmlzaCBp biBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhl IG9wZXJhdGlvbnMKKyAqIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUg c3Vic2NyaWJlciBhbmQgbm8gY29uY3VycmVudAorICogdHJhbnNhY3Rpb24gY2FuIGNyZWF0ZSBk ZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZv aWQKIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDY0 LDE3ICsxMjE3LDE1IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZv IHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4g dHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAy LiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBw bHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJl cGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24JYXBwbHlfYWN0aW9uOwogCi0JaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBzdHJl YW1fYXBwbHlfd29ya2VyKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gUFJFUEFS RSBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwpAQCAtMTA4OCwyNCArMTIzOSw3NSBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7 CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0 aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5 IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMo cHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCS8qCisJ CQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBs YXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KLQlhcHBseV9o YW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKwkJCS8qIE1hcmsgdGhlIHRy YW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJu YWwoJnByZXBhcmVfZGF0YSk7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsK KwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAotCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCS8qIFVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0 YS54aWQpOworCQkJYnJlYWs7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJ Y2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisK KwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsKKworCQkJLyogU2VuZCBTVFJF QU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJCQlw YXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8q CisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNz YXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVz IGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJ CQkgKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKKwkJ CXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKwkJCXBhcmFsbGVsX2FwcGx5X2Zy ZWVfd29ya2VyKHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkJc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19Q QVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKIAot CS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3Qg aW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBh cmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7 CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwYXJhbGxlbF9hcHBseV9y ZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4 YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoTXlQYXJhbGxl bFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3Npbmcg dGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0 OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CisKKwlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTM0 LDcgKzEzMzYsNyBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkgKiBPUklH SU4gbWVzc2FnZSBjYW4gb25seSBjb21lIGluc2lkZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gb3Ig aW5zaWRlCiAJICogcmVtb3RlIHRyYW5zYWN0aW9uIGFuZCBiZWZvcmUgYW55IGFjdHVhbCB3cml0 ZXMuCiAJICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJgorCWlmICghaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24gJiYgc3RyZWFtX2FwcGx5X3dvcmtlciA9PSBOVUxMICYmCiAJCSgh aW5fcmVtb3RlX3RyYW5zYWN0aW9uIHx8CiAJCSAoSXNUcmFuc2FjdGlvblN0YXRlKCkgJiYgIWFt X3RhYmxlc3luY193b3JrZXIoKSkpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTE0OSwyNCArMTM1 MSwxNCBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZv IHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCi0JaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBz dHJlYW1fYXBwbHlfd29ya2VyKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNP REVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUg U1RSRUFNIFNUQVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9u IG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAq IG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdo aWNoIGNhc2UgaXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0 aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRo ZSBidWZmaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBh bmQgc3VieGFjdCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQotCS8q IG5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0 aW9uICovCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwotCiAJLyogZXh0cmFjdCBY SUQgb2YgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiAqLwogCXN0cmVhbV94aWQgPSBsb2dpY2Fs cmVwX3JlYWRfc3RyZWFtX3N0YXJ0KHMsICZmaXJzdF9zZWdtZW50KTsKIApAQCAtMTE3OCwzNSAr MTM3MCw5MSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAlzZXRf YXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsK IAogCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2Ug aGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRp b24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0 LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9t IGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIg c3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVz ZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdv bid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KKwkgKiBGb3IgdGhlIGZpcnN0 IHN0cmVhbSBzdGFydCwgY2hlY2sgaWYgdGhlcmUgaXMgYW55IGZyZWUgcGFyYWxsZWwgYXBwbHkK KwkgKiB3b3JrZXIgd2UgY2FuIHVzZSB0byBwcm9jZXNzIHRoaXMgdHJhbnNhY3Rpb24uCiAJICov Ci0JaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwlpZiAo Zmlyc3Rfc2VnbWVudCkKKwkJcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKHN0cmVhbV94aWQp OworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1f eGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJLyoKKwkJCSAq IE5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIGluLXByb2dy ZXNzCisJCQkgKiB0cmFuc2FjdGlvbi4KKwkJCSAqLworCQkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24gPSB0cnVlOwogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOworCQkJLyoKKwkJCSAqIFNpbmNlIG5vIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyB1c2Vk IGZvciB0aGUgZmlyc3Qgc3RyZWFtIHN0YXJ0LAorCQkJICogc2VyaWFsaXplIGFsbCB0aGUgY2hh bmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24uCisJCQkgKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlv biBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0 dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGlu CisJCQkgKiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3Npbmcg YWxsIHRoZQorCQkJICogbWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5k bGluZyB0aGUgYnVmZmlsZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1p bmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9z dGVwKCk7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhz aXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0KTsKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1f ZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsCisJCQkgKiBiZSB1c2VkIGZvciB0 aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEKKwkJCSAq IHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJl YW1pbmcKKwkJCSAqIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0 IGZvciB0aGlzIGFuZCBvdGhlcgorCQkJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3 ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydAorCQkJICogb2YgdGhlIHdvcmtl ciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIKKwkJ CSAqIGJlIHVzZWQuCisJCQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0ID09IE5VTEwpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wg ZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCQl9CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUg Zmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0 X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHN0cmVhbV94aWQpOworCQkJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2Fj dGlvbi4gKi8KKwkJCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg c3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX1JVTk5JTkcsIE5VTEwpOworCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21l bnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50 KQorCQkJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVh bV94aWQpOwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM OgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQluY2hhbmdlcyA9IDA7CisKKwkJCS8qIENhY2hlIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJl YW1fYXBwbHlfd29ya2VyID0gd2luZm87CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFM TEVMX0FQUExZOgorCQkJLyoKKwkJCSAqIE1ha2Ugc3VyZSB0aGUgaGFuZGxlIGFwcGx5X2Rpc3Bh dGNoIG1ldGhvZHMgYXJlIGF3YXJlIHdlJ3JlIGluIGEKKwkJCSAqIHJlbW90ZSB0cmFuc2FjdGlv bi4KKwkJCSAqLworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyMTUs NTggKzE0NjMsODEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiBz dGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsKLQlp ZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJj b2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJT VFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKwlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywg YW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAqIHN1YnhhY3RzIGZvciB0aGUgdG9w bGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCXN0cmVhbV9jbG9zZV9maWxlKCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2lu Zm8pOwogCi0JLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCi0J QXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7 CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCWlmICghaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJP VE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1l c3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3Ry ZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkvKgor CQkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxp emUgaW5mb3JtYXRpb24KKwkJCSAqIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJh bnNhY3Rpb24uCisJCQkgKi8KKwkJCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKLQlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlk IHRyYW5zYWN0aW9uIHN0YXRlICovCisJCQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOwog Ci0JLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCi0JTWVtb3J5Q29udGV4dFJlc2V0KExv Z2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwkJCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFu c2FjdGlvbiAqLworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCS8qIFJlc2V0 IHBlci1zdHJlYW0gY29udGV4dCAqLworCQkJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJl YW1pbmdDb250ZXh0KTsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBO VUxMKTsKKworCQkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCWJyZWFrOwor CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8p OworCisJCQlpZiAoIXN0cmVhbV9hcHBseV93b3JrZXIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCSBlcnJtc2df aW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwor CisJCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisK KwkJCWVsb2coREVCVUcxLCAiYXBwbGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1 bmsiLCBuY2hhbmdlcyk7CisKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisJCQlw Z3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RB VEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJ CUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5 KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwog fQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBtZXNzYWdlLgorICogSGFuZGxlIFNUUkVB TSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBzcGlsbGVkIHRvIGRpc2su CiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKK3NlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9u SWQgc3VieGlkKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQgc3VieGlk OwotCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVy bmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKLQotCWxv Z2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1YnhpZCk7Ci0KIAkvKgogCSAq IElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3Bs ZXZlbCB4YWN0LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg aW5mby4KIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkKLQl7Ci0JCXNldF9hcHBseV9lcnJvcl9j b250ZXh0X3hhY3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAJCXN0cmVhbV9jbGVhbnVwX2Zp bGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JfQogCWVsc2UKIAl7CiAJCS8q CkBAIC0xMjkwLDggKzE1NjEsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gcykKIAkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwog Ci0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0 cik7Ci0KIAkJc3ViaWR4ID0gLTE7CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJc3Vi eGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKQEAgLTEzMTYs NyArMTU4NSw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJ Y2xlYW51cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbygpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTEzMzksNiArMTYwNyw5NyBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQorfQorCisvKgorICogSGFuZGxl IFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNh Y3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOwor CWJvb2wgcmVhZF9hYm9ydF9sc24gPSBmYWxzZTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8gPSBOVUxMOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uIHx8IHN0cmVhbV9hcHBseV93b3JrZXIpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBl cnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1Ai KSkpOworCisJLyoKKwkgKiBDaGVjayB3aGV0aGVyIHRoZSBwdWJsaXNoZXIgc2VuZHMgYWJvcnRf bHNuIGFuZCBhYm9ydF90aW1lLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaXMgb25seSBzdGFydGVkIHdoZW4gdGhlIHB1Ymxpc2hlcgorCSAqIHNlbmRzIGFi b3J0X2xzbiBhbmQgYWJvcnRfdGltZS4KKwkgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29y a2VyKCkgfHwKKwkJKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gPT0gU1VCU1RSRUFNX1BBUkFMTEVM ICYmCisJCXdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKSA+PSAx NjAwMDApKQorCQlyZWFkX2Fib3J0X2xzbiA9IHRydWU7CisKKwlsb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRhLCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9y dF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlhcHBs eV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZvKTsKKwor CXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpF OgorCQkJLyoKKwkJCSAqIFdlIGFyZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJh bnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJ c2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJ aWYgKHN1YnhpZCA9PSB4aWQpCisJCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgp OworCisJCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuICovCisJCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwg cy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yIHRoYXQKKwkJCSAqIHdvcmtlciB0byBmaW5p c2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB3aGljaAorCQkJ ICogYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRl YWRsb2Nrcy4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5pc2go d2luZm8pOworCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJCXsKKwkJCQlwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3NldHVwKCk7CisJCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2lu Zm8sIHhpZCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBTZXQgaW5fcGFy YWxsZWxfYXBwbHlfeGFjdCB0byB0cnVlIGFnYWluIGFzIHdlIG9ubHkgYWJvcnRlZCB0aGUKKwkJ CQkgKiBzdWJ0cmFuc2FjdGlvbiBhbmQgdGhlIHRvcCB0cmFuc2FjdGlvbiBpcyBzdGlsbCBpbiBw cm9ncmVzcy4KKwkJCQkgKi8KKwkJCQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdCh3aW5mby0+ c2hhcmVkLCB0cnVlKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxf QVBQTFk6CisJCQlwYXJhbGxlbF9hcHBseV9zdHJlYW1fYWJvcnQoJmFib3J0X2RhdGEpOworCisJ CQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlz aCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpA QCAtMTQ3MCw4ICsxODI5LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21t aXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQorCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBzdHJlYW1fYXBwbHlfd29ya2VyKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQ09NTUlUIG1lc3NhZ2Ugd2l0aG91dCBT VFJFQU0gU1RPUCIpKSk7CkBAIC0xNDc5LDE0ICsxODQwLDcyIEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Nv bW1pdChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlk LCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29t bWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBwbHlfYWN0aW9uID0g Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCS8qCisJ CQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBs YXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwkJCWFwcGx5 X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKIAotCWFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKwkJCS8qIFVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQli cmVhazsKIAotCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKwkJ Y2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CiAK LQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0 IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCB4aWQpOworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCQkvKiBT ZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAq LworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwor CisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlz IG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBm YWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxv Y2tzLgorCQkJICovCisJCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5m byk7CisJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisKKwkJCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS5l bmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlwYXJhbGxlbF9hcHBs eV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlv biBpcyBlaXRoZXIgbm9uLWVtcHR5IG9yIHNraXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkJICog c3Vic2tpcGxzbi4KKwkJCSAqLworCQkJY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1p dF9kYXRhLmNvbW1pdF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9B UFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKworCQkJYXBwbHlf aGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlz dWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoTXlQYXJh bGxlbFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3Np bmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZh dWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKQEAgLTE1MzAsNiArMTk0 OSwxMyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRh ICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBj b21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9k YXRhLT5lbmRfbHNuKTsKQEAgLTI0NjcsNyArMjg5Myw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0 ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNz YWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0 ZShzKTsKQEAgLTI2MzYsNiArMzA2MiwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVj UHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lw IGlmIG5vdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVu dCBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAg LTI2NTAsNyArMzA4MCw3IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3Rl X2xzbikKIAogCiAvKiBVcGRhdGUgc3RhdGlzdGljcyBvZiB0aGUgd29ya2VyLiAqLwotc3RhdGlj IHZvaWQKK3ZvaWQKIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVz dGFtcFR6IHNlbmRfdGltZSwgYm9vbCByZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3RfbHNuID0gbGFzdF9sc247CkBAIC0yNzAwLDYgKzMxMzAsNyBAQCBMb2dpY2FsUmVwQXBwbHlM b29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFw cGx5X2Vycm9yX2NhbGxiYWNrOwogCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4 dF9zdGFjazsKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCWFwcGx5X2Vy cm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyogVGhpcyBvdXRl ciBsb29wIGl0ZXJhdGVzIG9uY2UgcGVyIHdhaXQuICovCiAJZm9yICg7OykKQEAgLTI4MDIsNyAr MzIzMyw4IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQog CQkvKiBjb25maXJtIGFsbCB3cml0ZXMgc28gZmFyICovCiAJCXNlbmRfZmVlZGJhY2sobGFzdF9y ZWNlaXZlZCwgZmFsc2UsIGZhbHNlKTsKIAotCQlpZiAoIWluX3JlbW90ZV90cmFuc2FjdGlvbiAm JiAhaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWlmICghaW5fcmVtb3RlX3RyYW5zYWN0aW9u ICYmICFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbgorCQkJJiYgIXN0cmVhbV9hcHBseV93b3JrZXIp CiAJCXsKIAkJCS8qCiAJCQkgKiBJZiB3ZSBkaWRuJ3QgZ2V0IGFueSB0cmFuc2FjdGlvbnMgZm9y IGEgd2hpbGUgdGhlcmUgbWlnaHQgYmUKQEAgLTI5MTQsNiArMzM0Niw3IEBAIExvZ2ljYWxSZXBB cHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCiAJLyogUG9wIHRoZSBlcnJvciBj b250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZp b3VzOworCWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwog CiAJLyogQWxsIGRvbmUgKi8KIAl3YWxyY3ZfZW5kc3RyZWFtaW5nKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4sICZ0bGkpOwpAQCAtMzExNCw3ICszNTQ3LDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlw dGlvbih2b2lkKQogLyoKICAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGlu dmFsaWRhdGlvbi4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2Vf Y2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlNeVN1YnNj cmlwdGlvblZhbGlkID0gZmFsc2U7CkBAIC0zNTY5LDM3ICs0MDAyLDE0IEBAIHN0YXJ0X2FwcGx5 KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9n aWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBJbml0 aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFu ZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJ CQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQg b2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3Jp Z2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9 IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJz aW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2go d29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwo U0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJN LCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBX ZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVy IHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9j ZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBh IHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBN eUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2Vy LT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGli cHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwg ZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAq LwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2Ei LApAQCAtMzY1OSwxMiArNDA2OSw1MCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUg c3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIl c1wiIGhhcyBzdGFydGVkIiwKIAkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25h bWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhh cyBzdGFydGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJl cG9ydChMT0csCiAJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRp b24tPm5hbWUpKSk7CiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9n aWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVt R2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhM b2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAq bXlzbG90bmFtZSA9IE5VTEw7CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJ CXNlcnZlcl92ZXJzaW9uOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dv cmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICov CisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNp Z25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwor CisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBh IHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBD cmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlz ZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9z ZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dp Y2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyog TG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdh bHJlY2VpdmVyIiwgZmFsc2UpOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBD b25uZWN0IHRvIHRoZSBvcmlnaW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9n KERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5n IFwiJXNcIiIsCkBAIC0zNjg3LDcgKzQxMzUsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJfQogCWVsc2UKIAl7Ci0JCS8qIFRoaXMgaXMgbWFpbiBhcHBseSB3b3JrZXIgKi8K KwkJLyogVGhpcyBpcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAqLwogCQlSZXBPcmlnaW5JZCBv cmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50VExJOwogCQljaGFyCSAgICplcnI7CkBA IC0zNzUxLDYgKzQxOTksNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlz ZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZD b25uKTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92 ZXJzaW9uID49IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJ T05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19U V09QSEFTRV9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNBTFJFUF9QUk9UT19WRVJT SU9OX05VTTsKQEAgLTM4NTQsNiArNDMwMywxNSBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAly ZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9IE5VTEw7CiB9CiAKKy8qCisgKiBJcyBjdXJyZW50 IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAq LworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBh bV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKTsKK30KKwogLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNo YW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAq IExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KQEAgLTM5MTYsNyArNDM3 NCw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24p CiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29s CQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikp IHx8CisJCWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAoIUlz VHJhbnNhY3Rpb25TdGF0ZSgpKQpAQCAtMzk4OCw3ICs0NDQ3LDcgQEAgY2xlYXJfc3Vic2NyaXB0 aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2FsbGJh Y2sgdG8gZ2l2ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFwcGxp ZWQgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcp CiB7CiAJQXBwbHlFcnJvckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2FsbGJh Y2tfYXJnOwpAQCAtNDAxNiwyMyArNDQ3NSw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lk ICphcmcpCiAJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1BVF9B UkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90ZV9h dHRudW0gPCAwKQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdl dCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgi LAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5z cG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVy cmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hf bHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRh cmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBm aW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJl bG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJl bW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVf YXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5p c2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdl dCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRh dGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGlj YXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hl ZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9n aWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu cmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JN QVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChY TG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgi cHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJp bmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVt biBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFt ZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJ CQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs LmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90 ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRp b24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9u ICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJ CQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwt PnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRu YW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlk LAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJ fQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2Fs bGJhY2sgKi8KQEAgLTQwNTIsMyArNDUzNSwyOCBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0x OwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIElu dmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIHRha2Ug Zm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFzc2lnbmVkIHRvCisgKiB0aGUg ZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlmIHRoZSBhY3Rpb24gaXMKKyAqIFRS QU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKSwgb3RoZXJ3aXNlICp3aW5mbyBpcyBhc3NpZ25l ZCBOVUxMLgorICovCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0aW9uX2Fw cGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3 aW5mbykKK3sKKwkqd2luZm8gPSBOVUxMOworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtl cigpKQorCQlyZXR1cm4gVFJBTlNfUEFSQUxMRUxfQVBQTFk7CisJZWxzZSBpZiAoaW5fcmVtb3Rl X3RyYW5zYWN0aW9uKQorCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQUExZOworCisJLyoKKwkgKiBD aGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkKKwkgKiB3b3JrZXIgYW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQg d29ya2VyLgorCSAqLworCWVsc2UgaWYgKCgqd2luZm8gPSBwYXJhbGxlbF9hcHBseV9maW5kX3dv cmtlcih4aWQpKSkKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCWVs c2UKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2MmUwZmZlY2Q4Li45OGRkZGQ4MjFj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTM2 OSw3ICszNjksNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091 dHB1dERhdGEgKmRhdGEpCiAJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQg b3B0aW9ucyIpKSk7CiAJCQlzdHJlYW1pbmdfZ2l2ZW4gPSB0cnVlOwogCi0JCQlkYXRhLT5zdHJl YW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdl dFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTQ2MSwxMyArNDYxLDIwIEBAIHBnb3V0 cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRp b25zICpvcHQsCiAJCSAqIHdlIG9ubHkgYWxsb3cgaXQgd2l0aCBzdWZmaWNpZW50IHZlcnNpb24g b2YgdGhlIHByb3RvY29sLCBhbmQgd2hlbgogCQkgKiB0aGUgb3V0cHV0IHBsdWdpbiBzdXBwb3J0 cyBpdC4KIAkJICovCi0JCWlmICghZGF0YS0+c3RyZWFtaW5nKQorCQlpZiAoZGF0YS0+c3RyZWFt aW5nID09IFNVQlNUUkVBTV9PRkYpCiAJCQljdHgtPnN0cmVhbWluZyA9IGZhbHNlOwotCQllbHNl IGlmIChkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVS U0lPTl9OVU0pCisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJTVFJFQU1fT04gJiYK KwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZF UlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJz aW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCiAJ CQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVS U0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJTVFJFQU1fUEFS QUxMRUwgJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coInJl cXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nPXBhcmFs bGVsIG1vZGUsIG5lZWQgJWQgb3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJz aW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsKIAkJ ZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC01MTMsNyArNTIwLDcgQEAg cGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdp bk9wdGlvbnMgKm9wdCwKIAkJICogRGlzYWJsZSB0aGUgc3RyZWFtaW5nIGFuZCBwcmVwYXJlZCB0 cmFuc2FjdGlvbnMgZHVyaW5nIHRoZSBzbG90CiAJCSAqIGluaXRpYWxpemF0aW9uIG1vZGUuCiAJ CSAqLwotCQljdHgtPnN0cmVhbWluZyA9IGZhbHNlOworCQljdHgtPnN0cmVhbWluZyA9IFNVQlNU UkVBTV9PRkY7CiAJCWN0eC0+dHdvcGhhc2UgPSBmYWxzZTsKIAl9CiB9CkBAIC0xODQzLDYgKzE4 NTAsOCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVy VFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgt Pm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sIGFib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFt aW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQg aGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1 Niw3ICsxODY1LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJ T3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJl cF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJv cnRfbHNuLCB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lLCBhYm9ydF9pbmZvKTsKKwogCU91dHB1 dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4 bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMjFh OWZjMGZkZC4uOWNkNTQyODdiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpA QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdO QUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhU KSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVw dChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmlu ZGV4IDM1ZWZmMjhiZDMuLjBlZTUwMDIwZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzcsNiAr MzM3Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4 dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAo UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCA5MmYyNGE2YzliLi5jOTY2NDdjNGVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCkBAIC0zODgsNiArMzg4LDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZl bnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJUOgog CQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWluc2VydCI7CiAJCQlicmVhazsKKwkJ Y2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgorCQkJ ZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFr OwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0g IkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKaW5kZXggNTUwZTk1MDU2Yy4uODRmNmExMTM1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMKQEAgLTI5NzMsNiArMjk3MywxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1 cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAor CQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVt YmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5V TEwsCisJCX0sCisJCSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u LAorCQkyLCAwLCBNQVhfQkFDS0VORFMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewog CQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0 dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5n ICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRl eCAyYWU3NmU1Y2ZiLi42NjAzZjBlOTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNjAsNiArMzYwLDcgQEAKICNtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMK IAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VycworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMg dGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNjdiNmQ5MDc5ZS4uMDI2Y2Y0NjgyOCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC00NDgwLDcgKzQ0ODAsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUg KmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0 LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks CkBAIC00NjE3LDggKzQ2MTcsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBj b25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vi YmluYXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5h cnkgPSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAw KQorCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNt cChzdWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8t PnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaAppbmRleCA3Yjk4NzE0ZjMwLi5iOTlkZGRiZWE0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19z dWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFU SU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRp b24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5 ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNo YXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICov CiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29s CQllbmFibGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAq LwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50 cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJ LyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlz dHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJ CQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNl c3RhdGU7CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9v bAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQg YmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpA QCAtMTM3LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJ ICogc3BlY2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0 cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9P RkYgJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3 cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhl IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJT VFJFQU1fT04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z IGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIu CisgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0 aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJu IHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBE aXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDU2 ZDJiYjY2MTYuLmY2YmE1ZmZjMDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Rl ZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0xNTQsNiArMTU0 LDcgQEAgZXh0ZXJuIExpc3QgKmRlZkdldFF1YWxpZmllZE5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4 dGVybiBUeXBlTmFtZSAqZGVmR2V0VHlwZU5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiBpbnQJ ZGVmR2V0VHlwZUxlbmd0aChEZWZFbGVtICpkZWYpOwogZXh0ZXJuIExpc3QgKmRlZkdldFN0cmlu Z0xpc3QoRGVmRWxlbSAqZGVmKTsKK2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVm RWxlbSAqZGVmKTsKIGV4dGVybiB2b2lkIGVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKERlZkVsZW0g KmRlZmVsLCBQYXJzZVN0YXRlICpwc3RhdGUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogCiAj ZW5kaWYJCQkJCQkJLyogREVGUkVNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3BnX2xpc3QuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BnX2xpc3QuaAppbmRleCBhNmUwNGQwNGEz Li5jNDI1M2E3NzJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wZ19saXN0LmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGdfbGlzdC5oCkBAIC0zMjIsNiArMzIyLDE3IEBAIGxpc3Rf bnRoX29pZChjb25zdCBMaXN0ICpsaXN0LCBpbnQgbikKIAlyZXR1cm4gbGZpcnN0X29pZChsaXN0 X250aF9jZWxsKGxpc3QsIG4pKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgVHJhbnNhY3Rpb25J ZCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIG4ndGggZWxlbWVudCBvZiB0aGUKKyAqIHNwZWNpZmll ZCBsaXN0LgorICovCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKK2xpc3RfbnRoX3hpZChj b25zdCBMaXN0ICpsaXN0LCBpbnQgbikKK3sKKwlBc3NlcnQoSXNBKGxpc3QsIFhpZExpc3QpKTsK KwlyZXR1cm4gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKGxpc3QsIG4pKTsKK30KKwogI2RlZmlu ZSBsaXN0X250aF9ub2RlKHR5cGUsbGlzdCxuKQljYXN0Tm9kZSh0eXBlLCBsaXN0X250aChsaXN0 LCBuKSkKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5k ZXggZjFlMjgyMWUyNS4uZDUxM2VmNTMzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVy biB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1 bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uNTIwZjgzNzQ3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExPR0lDQUxSRVBf UFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lv biB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5nIChhdCBwcmVw YXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lv bgorICogd2hlcmUgd2Ugc3VwcG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zIGluIHBhcmFsbGVsLgorICogSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExP R0lDQUxSRVBfUFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9U T19WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05f TlVNIDIKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0j ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9f VFdPUEhBU0VfVkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFS QUxMRUxfVkVSU0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9O X05VTSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgog ICogTG9naWNhbCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3Ry dWN0IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpF XTsKIH0gTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNh Y3Rpb24gcHJvdG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlk OworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVz dGFtcFR6IGFib3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5m byBpbiwKIAkJCQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0 Niw5ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0 KFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlv bklkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LAogCQkJCQkJ CQkJCQkJICAgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lk IGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlv bklkIHhpZCwKLQkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lk IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25J ZCAqeGlkLAotCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCBzdWJ4aWQsCisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwK KwkJCQkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCisJCQkJCQkJCQkJICBib29sIGFi b3J0X2luZm8pOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9k YXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKTsKIGV4dGVybiBjaGFyICpsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5kaWYJ CQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs d29ya2VyLmgKaW5kZXggY2QxYjZlOGFmYy4uOTZkN2U4MWIwNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsOCArMTIsMTQgQEAKICNpZm5kZWYgTE9HSUNB TFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCitleHRlcm4gUEdETExJTVBPUlQg dm9sYXRpbGUgYm9vbCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lk IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBQYXJhbGxlbEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdv cmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9p ZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lk KTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgKaW5kZXggMDIwMjc1NTBlMi4uM2MzMGRhODIwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291 dHB1dC5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQogCUxp c3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKIAlib29s CQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQlt ZXNzYWdlczsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDg2OTU5MDFiYTcuLmE3NGI2MTZlZmYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEs NyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBj b21taXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBh Ym9ydF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjU4LDkgKzY1OSwxMSBAQCBl eHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxk KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0 ciBjb21taXRfbHNuKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9y ZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCQkgWExv Z1JlY1B0ciBjb21taXRfbHNuLCBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0 ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJv cnRfdGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZl ciAqLCBUcmFuc2FjdGlvbklkIHhpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0 KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQs IFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rp b25JZCwgWExvZ1JlY1B0ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0QmFz ZVNuYXBzaG90KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24s IHN0cnVjdCBTbmFwc2hvdERhdGEgKnNuYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmgKaW5kZXggOTMzOWYyOTMwMy4uNDU0ZGI0OGRiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oCkBAIC0xODIsNyArMTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVp bnQzMgkJcHJvdG9fdmVyc2lvbjsJLyogTG9naWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJCQlM aXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsJLyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRpb25z ICovCiAJCQlib29sCQliaW5hcnk7IC8qIEFzayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAqLwot CQkJYm9vbAkJc3RyZWFtaW5nOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICov CisJCQljaGFyCQlzdHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMg Ki8KIAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1pbmcgb2YgdHdvLXBoYXNlIHRyYW5zYWN0 aW9ucyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1lICovCiAJCQljaGFyCSAgICpvcmlnaW47 IC8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhlCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTg0NWFiYzIuLmFjYTNkZTcyYjcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsx NywxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2Nr LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90 b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKIAogCkBAIC02MCw2ICs2NCwxMiBAQCB0 eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFt X2ZpbGVzZXQ7CiAKKwkvKgorCSAqIFBJRCBvZiBsZWFkZXIgYXBwbHkgd29ya2VyIGlmIHRoaXMg c2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLCBJbnZhbGlkUGlk IG90aGVyd2lzZS4KKwkgKi8KKwlwaWRfdAkJCWFwcGx5X2xlYWRlcl9waWQ7CisKIAkvKiBTdGF0 cy4gKi8KIAlYTG9nUmVjUHRyCWxhc3RfbHNuOwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1l OwpAQCAtNjgsOSArNzgsODIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRp bWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qIFN0cnVjdCBm b3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwor dHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCit7CisJTG9naWNhbFJlcE1zZ1R5 cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWw7CisKKwkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLworCWludAkJCXJlbW90ZV9hdHRu dW07CS8qIC0xIGlmIGludmFsaWQgKi8KKwlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7CisJWExv Z1JlY1B0cglmaW5pc2hfbHNuOworCWNoYXIJICAgKm9yaWdpbl9uYW1lOworfSBBcHBseUVycm9y Q2FsbGJhY2tBcmc7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0 d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAoreworCXNsb2Nr X3QJCW11dGV4OworCisJLyoKKwkgKiBGbGFnIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmlu Zy4KKwkgKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gZmFs c2UgYWZ0ZXIgaGFuZGxpbmcgdGhlCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIHdo aWxlIHRoZSBhcHBseSBsZWFkZXIgd2lsbCB3YWl0IGZvciBpdCB0bworCSAqIGJlY29tZSBmYWxz ZSBiZWZvcmUgcHJvY2VlZGluZyBpbiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKGUuZy4K KwkgKiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9BQk9SVC9TVFJFQU1fUFJFUEFSRSkuCisJICovCisJ Ym9vbAlpbl9wYXJhbGxlbF9hcHBseV94YWN0OworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0aGUg Y29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CWxvZ2ljYWxy ZXBfd29ya2VyX2dlbmVyYXRpb247CisKKwlpbnQJCWxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87 Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGlj aCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5kbGUJCQkq bXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBtZXNzYWdl cyBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKwkgKiB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlci4gTlVMTCBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZAorCSAqIGNs ZWFubHkuCisJICovCisJc2htX21xX2hhbmRsZQkJCSplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21f c2VnbWVudAkJCQkqZHNtX3NlZzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHdv cmtlciBpcyBhdmFpbGFibGUgdG8gYmUgdXNlZCBmb3IgcGFyYWxsZWwgYXBwbHkKKwkgKiB0cmFu c2FjdGlvbj8KKwkgKi8KKwlib29sCQkJCQlpbl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkCSpzaGFyZWQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1l bW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxp ZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0 OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0 OworCitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sJKmFwcGx5X2Vycm9y X2NvbnRleHRfc3RhY2s7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNhbGxiYWNrQXJn IGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlT dWJzY3JpcHRpb25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpz dWJ4YWN0bGlzdDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdE TExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsK IApAQCAtNzksMTggKzE2MiwyMyBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpN eVN1YnNjcmlwdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxv Z2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFu c2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQ7Citl eHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93 b3JrZXI7CiAKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7 CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3Vi aWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBM aXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5n KTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1 YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxp ZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBz dWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVs aWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50MTYgZ2VuZXJh dGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBP aWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193b3Jr ZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBs eV93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25Pcmln aW5OYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJICBj aGFyICpvcmlnaW5uYW1lLCBpbnQgc3pvcmduYW1lKTsKQEAgLTEwMywxMCArMTkxLDQ4IEBAIGV4 dGVybiB2b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7 CiBleHRlcm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywg aW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9p ZCBVcGRhdGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5k X3RpbWUsCisJCQkJCQkJICBib29sIHJlcGx5KTsKKworZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0 Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZv aWQpOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2 b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisKK2V4dGVybiB2b2lkIHN1YnNj cmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1 ZSk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICov CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4 aWQpOworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYXJhbGxlbF9hcHBseV9maW5k X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9z ZXRfaW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkJ ICAgYm9vbCBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkJCSAgIFRyYW5zYWN0aW9u SWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNo KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9h cHBseV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRl cywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFyYWxsZWxf YXBwbHlfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKK2V4dGVy biB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhICphYm9ydF9kYXRhKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NhdmVwb2ludF9u YW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkgIGNoYXIgKnNwbmFtZSwgaW50 IHN6c3ApOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCh2b2lk KTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9pZCk7CisK KyNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKHdvcmtlci0+YXBwbHlfbGVh ZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3lu Y193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9wYXJhbGxlbF9hcHBseV93b3Jr ZXIodm9pZCkKK3sKKwlyZXR1cm4gaXNQYXJhbGxlbEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdv cmtlcik7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JLRVJfSU5URVJOQUxfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAppbmRleCBlZTYzNjkwMGYzLi41MjhlZjczMTk5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lH X1dBTFNORF9JTklUX1NUT1BQSU5HLAkvKiBhc2sgd2Fsc2VuZGVycyB0byBwcmVwYXJlIGZvciBz aHV0ZG93biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJy dXB0ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBs b2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCVBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FH RSwJLyogTWVzc2FnZSBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KIAogCS8qIFJlY292 ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFC QVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDZmMmQ1NjEyZTAuLmIyY2RkNTU0ZTEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCB0eXBlZGVmIGVudW0KIAlX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9H Uk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VS VCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RB VEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggZWYwZWJmOTZiOS4uOTliOWU4NjdlNCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMjE3LDkgKzIx Nyw5IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwot LS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcg bXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElD QVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1F UlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFt aW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAtLSBub3cgaXQgd29y a3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0 ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBz dWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJF RlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0YWJsZXMKQEAgLTIzMCw2ICsyMzAs MTQgQEAgV0FSTklORzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZl IHRvIHJ1biBBTFRFUiBTVUJTQ1JJUFRJT04gLi4KICByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgx IHJvdykKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWlu ZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQor CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFs c2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogXGRScysKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IDQ0 MjVmYWZjNDYuLmVkMTQ4ZTRiZDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1 YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNx bApAQCAtMTU2LDcgKzE1Niw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViOwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0 cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0g Zm9vKTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNjQsNiArMTY0LDEwIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNWIzYjMwNTk2My4uZDIwNWFlZDA4MiAxMDA2NDQKLS0t IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NzEsNiArMTQ3MSw3IEBAIExvZ2ljYWxSZXBSZWxJZAog TG9naWNhbFJlcFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxSZXBSb2xs YmFja1ByZXBhcmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9naWNhbFJl cFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTY2Miw2ICsx NjYzLDkgQEAgT3ZlcnJpZGVTdGFja0VudHJ5CiBPdmVycmlkaW5nS2luZAogUEFDRV9IRUFERVIK IFBBQ0wKK1BhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxBcHBseVdvcmtlckluZm8K K1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIFBBVEgKIFBCT09MCiBQQ3R4dEhhbmRsZQpAQCAt Mjc4Myw2ICsyNzg3LDcgQEAgVHJhbnNhY3Rpb25TdG10S2luZAogVHJhbnNmb3JtSW5mbwogVHJh bnNmb3JtSnNvblN0cmluZ1ZhbHVlc1N0YXRlCiBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlCitUcmFu c0FwcGx5QWN0aW9uCiBUcmdtQXJjCiBUcmdtQXJjSW5mbwogVHJnbUJvdW5kCi0tIAoyLjIzLjAu d2luZG93cy4xCgo= --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v29-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v29-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v29-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76240; creation-date="Thu, 15 Sep 2022 05:12:00 GMT"; modification-date="Thu, 15 Sep 2022 05:15:21 GMT" Content-Transfer-Encoding: base64 RnJvbSAxOTJmMzQ0YTA5MDk2N2M4NWRmYzdjOTU4ZTIyOWNhMDI2MGI4OTBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2Mjkg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjMxICsrKysr LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAxNDIg KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDIy MCArKysrLS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAg fCAyMzIgKysrKystLS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAg ICAgICB8IDEzMyArKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsICAgIHwgMzkzICsrKysrKysrLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsICAgICB8IDUzOSArKysrKysrKysrKy0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgMTI0NSBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uZjBlMTIxOTBjZSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0g J2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKwor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co cXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUg YWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5n IgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBz dHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0 cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5z YWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9ICcnOwor CW15ICRvdXQgPSAnJzsKKworCW15ICRvZmZzZXQgPSAwOworCisJbXkgJHRpbWVyID0gSVBDOjpS dW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwor CisJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBc JGluLCBcJG91dCwgJHRpbWVyLAorCQlvbl9lcnJvcl9zdG9wID0+IDApOworCisJIyBJZiAic3Ry ZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8g Y2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworCSRpbiAuPSBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwl9OworCSRoLT5wdW1wX25iOworCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiA1MDAwOworCUNPTU1JVDsKKwl9KTsKKworCSRpbiAuPSBxeworCUNPTU1JVDsKKwlccQorCX07 CisJJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGln bm9yZSB0aGVtIGhlcmUKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwg JGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkj IFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChi aW5hcnkgPSBvbikiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBJbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2 NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz Jyk7CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9u IHRoZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vi c2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3Vy ZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQorCSMgcHJvcGVybHkgYWZ0 ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3Rh bXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAor CQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7CisK KwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhl IGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmli ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMg PSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3Jl YXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE3OSwxMCBAQCAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUn IFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDgy ICsxOTUsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnRlcmxl YXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0 LgotbXkgJGluICA9ICcnOwotbXkgJG91dCA9ICcnOwotCi1teSAkdGltZXIgPSBJUEM6OlJ1bjo6 dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7Ci0KLW15 ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwg XCRvdXQsICR0aW1lciwKLQlvbl9lcnJvcl9zdG9wID0+IDApOwotCi0kaW4gLj0gcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLX07Ci0kaC0+cHVtcF9uYjsKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7Ci1DT01NSVQ7Ci19KTsKLQotJGluIC49IHF7 Ci1DT01NSVQ7Ci1ccQotfTsKLSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQg dGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCi0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cit0ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsK IAotIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKLSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQg KGJpbmFyeSA9IG9uKSIpOwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKLVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSg2NjY3fDY2Njd8NjY2NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisp OwogCi0jIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRo ZSBzdWJzY3JpYmVyLAotIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3Jp YmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhh dCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5 ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgotKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwor CSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJp bmFyeSA9IG9mZikiKTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQor ICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRy YWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7Cit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVf c3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCBiYzBhOWNkMDUzLi45ZDdl ODUwNmM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0 LnBsCkBAIC04LDYgKzgsOTMgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUg bG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1 bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJh bGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KT0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUg dHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRv ZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3Bl Y2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJ IyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMTUwMCkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwor CisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3Qg ZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2Rl X3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKQEAgLTM3LDYgKzEyNCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIi KTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIg V0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDQxICsxNDAsMjYgQEAgbXkgJHJlc3Vs dCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywgIDUwMCkgcyhpKTsK LVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsICAy MDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lO VCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCi0J J2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor bXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9x dWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19z dGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7 CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5z dG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2Rk bC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDg2 NmYxNTEyZTQuLmYzYzU1NzA0Y2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCkBAIC04LDYgKzgsMTM3IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2ZpbmlzaGVkIHByb2Nlc3Np bmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3Nh Z2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVz dCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28g dGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisj IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1 KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJh bWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRo YXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2Vz IGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NSwgMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwor CVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09N TUlUOworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg RERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAx Ojp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBlIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgy MDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsK Kwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQo ZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAor CQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3 aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFmdGVyIERN TCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90 YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVt YSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKKwlBTFRF UiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsKKworCSMg QSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0 IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0 aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVz dF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFu ZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0 IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IERST1AgQ09MVU1OIGMsIERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1O IGY7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlz aGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE2OCwx MCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVC TElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAn dGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9u X25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24p IgogKTsKQEAgLTQ5LDc3ICsxODQsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQs IHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIn KTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0K LSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1J VDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwg YW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCks IC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIw MDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVy IERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVz dF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2No ZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFs bCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVu c3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0 IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlv bnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx OF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkZjZkLi5mNzQ1NDJjMmU5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0 LnBsCkBAIC04LDYgKzgsMTQ0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFy YWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCk9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhl IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAk b2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNh bWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNw ZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwy NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwor CVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczU7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJbXkgJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIw MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBz dWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsK KworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFu c2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhp KTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRP IHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hlY2sgcm9sbGJhY2sg dG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBz dWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwor CVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVs X2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3Vs dCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1 MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKwor CSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9 IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVh dGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTc0LDEwIEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi IEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScg UFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEg KzE5MCwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9N IHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotU0FWRVBP SU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7 Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8g czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAw MSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7Ci1D T01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVj dGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0 MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsK LVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDAp IHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFj awotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExC QUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0 LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2RhODJiN2EuLmI2ZjNh NjA2ODIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDkwIEBAIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMg Y29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCk9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2Zpbmlz aGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgk aXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBh cmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWlu ZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNr CisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJB Q0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVH SU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsK KwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBj OworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlU OworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlz aGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyMSwx MCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVC TElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAn dGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9u X25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24p IgogKTsKQEAgLTQ5LDM1ICsxMzcsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNr IGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9J TlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFi IEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZF UE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFMVEVS IFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hlY2sgcm9sbGJhY2sg dG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVs JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWlu ZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwog JG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3YTc5 N2YzN2JhLi4zYjU4MzBhM2I0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM4IEBAIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1v cmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMg Y29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRzdHJlYW1pbmdfbW9kZSk9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKwor IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4g Ym90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0Ms ICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlt eSAkb2Zmc2V0X0IgPSAwOworCW15ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAk bm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9C JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJl YW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5n X21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19t b2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRp b24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor CSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7 CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1Qg cGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBv ciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBD T01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0 aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBk YXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMg YWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJl YW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0It PnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRu b2RlX0ItPmxvZ2ZpbGU7CisJJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMg SW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJIyBUaGVuIDJQQyBQUkVQQVJFCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7CisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKKwor CSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIo cykKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVz dWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3By ZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9 ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkp OworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZl IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVk IG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRo IGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2 aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93 LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVh bWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3Qg ZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAo PSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChk ZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dm aWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJF IHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FWRVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ Uk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdv dXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK Kwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlKTsKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUpOworCisJIyBjaGVj ayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1 bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2Rl X0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVu ZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEIn KTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sg aW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1l ZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJ IyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi OyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24g c3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vi c2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMp LCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Mp OworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVx ICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKwor CQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMu CiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9kZV9DCkBAIC0yNjAsMTYwICs0OTIsMTUgQEAgaXMo JHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBURVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K IAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlT RUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlk X0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxp Y2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQotJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBv bik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9y IHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1 ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGls KAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJl YW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQu Ci0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0 ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2Rl X0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAk bm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJh bnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0g ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxv Y2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVk IGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5z IGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBu ZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMg dGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgotIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAy LiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgot IyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2Vy dHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0 aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFs ICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMg Rmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUg cmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBS T0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAi Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7 Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3Bf aW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24g c3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJl c3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2Rl X0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0K LSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7 Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBh cmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMpLgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHBy aW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdm b29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0g J2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVz ZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBx cSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJl c3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9 ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVf QiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1 NDEwNmJkLi4yOTk4OTE1NmY4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiArOCwzMDcgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsK IAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21w bGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K K3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsKT0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAnZmluaXNoZWQg cHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19w YXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxs ZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNv bW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFt ZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1v biBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7 CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19w YXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkj IDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRv IGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBv biBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBo YXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1 bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9 CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlv biBnZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xM QkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hp Y2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQg dXNpbmcgMlBDLgorCSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRh dGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhj ZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7 Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFy YWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7 CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVz dWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ss IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQg cHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2 ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAz LiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5k IHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAw KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmli ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRl Jyk7CisKKwkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7CisKKwkjIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJl ZF90YWInOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwz MzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRo ZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBk ZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIu CisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJ TlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8g YSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5h bCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJ IyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxp Y2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2Zp bGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93 IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBD IHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNl cnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwg J2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyLAorCSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0 aWxsIHdhcyByZXBsaWNhdGVkCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRo ZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9y ZSBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dz IHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVh bWVkIHVzaW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBp cyBhZnRlciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJ IworCSMgRXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmli ZXIKKwkjICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAy IHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9n KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAn dHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBk aWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlv bikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNv IG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdl dHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMz MzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGlu c2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkK Kwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAor CQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ4LDYgKzM0OSwxMCBAQCAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViCkBAIC02NCwyMzYgKzM2OSwzMCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQogJG5v ZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2VfcXVl cnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8g ZW5hYmxlIHR3b3BoYXNlIjsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBD aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRp YWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vi c2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7Ci0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQ QVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVw bGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4K LSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo d2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CiAKLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0aW9u IGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki Uk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyfDJ8MiksCi0JJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmln aW5hbCAyIHJvd3MnKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy Jyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ2hlY2sgdGhhdCAyUEMg Q09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KLSMg MS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCi0jIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLgotIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhl IHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEg aXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMgTm90 ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlh dGUnKTsKLSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+c3RhcnQ7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKLQotIyBjb21taXQgcG9zdCB0 aGUgcmVzdGFydAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBo YXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJwotKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBE byBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4K LSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4g QSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgot IyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBDIGRh dGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0 aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCBy ZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3Rl OiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUg dGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAo OTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBBUkVE ICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBz dGlsbCB3YXMgcmVwbGljYXRlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzfDN8MyksICdjaGVjayB0aGUgb3V0 c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7Ci0KLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQ UkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQ UkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3QgMlBD IGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIDMzMzQg KyBpbnNlcnRlZCAxID0gMzMzNSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0K LSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBs aWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBw cmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAo bm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAy UEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGlu c2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwg J2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CiAKLSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxs IGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Cit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAxKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhl IGNsZWFudXAKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v29-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v29-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v29-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=51033; creation-date="Thu, 15 Sep 2022 05:12:00 GMT"; modification-date="Thu, 15 Sep 2022 05:15:22 GMT" Content-Transfer-Encoding: base64 RnJvbSBkZTdmMDFlY2MwYjgzODVkNzY0ZDJjMTg1ZmU2OGRmY2UzODk4ZWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyOSAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdvIHJl cXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZv ciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlv bnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0 cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwpJdCBpcyBiZXR0ZXIgdG8gb25seSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNo ZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMu IEJ1dCB0aGlzCnJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9u LiBJbiBhZGRpdGlvbiwgc2luY2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4g dGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApm b3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBw ZXJmb3JtIGEgc2ltcGxlIGNoZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYSB3aGVu IGNoZWNraW5nIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdWVzZCBieQp0cmlnZ2VyLgoKV2l0aG91 dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjoK VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHdhaXRzCmZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUg bG9jayB0byBiZSByZWxlYXNlZCwgaXQgd29uJ3QKc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyOwp0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2Ygc3RyZWFt aW5nIHRyYW5zYWN0aW9uCmFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEg ZGVhZGxvY2sgaGFzIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMKd2lsbCB3YWl0IGluZGVmaW5p dGVseS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDUgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDQyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg ODYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAx OTUgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDIzICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAg MTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAxNSAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8ICAgOSArLQogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgICA5ICstCiAuLi4v c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAgIDggKwogLi4uL3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgICAgIHwgICA5ICstCiAuLi4vdC8w MzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCAgICAgICAgfCA2MDkgKysrKysrKysrKysr KysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAg IDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAxOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt aW5nX3BhcmFsbGVsX3NhZmV0eS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKaW5kZXggMTc1Y2NlODUwNi4uZWYyNTYzNDZiOCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0NSw2ICsyNDUsMTEgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25h bWU8L3JlcGxhY2VhYmwKICAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUg dGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIHdoZW4KICAgICAgICAgICBhcHBseWluZyBjaGFuZ2Vz IGluIGEgcGFyYWxsZWwgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUKICAgICAgICAgICBy ZW1vdGUgdHJhbnNhY3Rpb24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9n LgorICAgICAgICAgIFRoZXJlIGFyZSB0d28gcHJlcmVxdWlzaXRlcyBmb3IgdXNpbmcgPGxpdGVy YWw+cGFyYWxsZWw8L2xpdGVyYWw+CisgICAgICAgICAgbW9kZTogMSkgdGhlIHVuaXF1ZSBjb2x1 bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgbXVzdAorICAgICAgICAgIGFs c28gYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBj YW5ub3QgYmUKKyAgICAgICAgICBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0 aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQKKyAgICAgICAgICB0YWJsZS4KICAgICAgICAg IDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKaW5kZXggMmY3NzFmYzRhMS4uZDY0YWU1ZmIyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTEwNzYs MyArMTA3Niw0NSBAQCBwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KHZvaWQpCiAJaWYg KHN0YXJ0ZWRfdHgpCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogfQorCisvKgorICog Q2hlY2sgaWYgY2hhbmdlcyBvbiB0aGlzIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGEg cGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqCisgKiBBbHRob3VnaCB0aGUgY29tbWl0IG9y ZGVyIGlzIG1haW50YWluZWQgYnkgb25seSBhbGxvd2luZyBvbmUgcHJvY2VzcyB0bworICogY29t bWl0IGF0IGEgdGltZSwgdGhlIGFjY2VzcyBvcmRlciB0byB0aGUgcmVsYXRpb24gaGFzIGNoYW5n ZWQuIFRoaXMgY291bGQKKyAqIGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMgd2hlbiBhcHBseWlu ZyB0cmFuc2FjdGlvbnMgdXNpbmcgYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyIGlmIHRoZSB1 bmlxdWUgY29sdW1uIG9uIHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNvbnNpc3RlbnQg d2l0aCB0aGUgcHVibGlzaGVyLXNpZGUsIG9yIGlmIHRoZSByZWxhdGlvbiBjb250YWlucworICog bm9uLWltbXV0YWJsZSBmdW5jdGlvbnMuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlbGF0 aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qIFNraXAgaWYgbm90 IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dv cmtlcigpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJl IGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkgKiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4K KwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCWlmIChyZWwtPnBhcmFsbGVsX2FwcGx5X3Nh ZmV0eSA9PSBQQVJBTExFTF9BUFBMWV9TQUZFVFlfVU5LTk9XTikKKwkJbG9naWNhbHJlcF9yZWxf bWFya19wYXJhbGxlbF9hcHBseShyZWwpOworCisJaWYgKHJlbC0+cGFyYWxsZWxfYXBwbHlfc2Fm ZXR5ID09IFBBUkFMTEVMX0FQUExZX1VOU0FGRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNpbmcgIgor CQkJCQkJInN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgJXMiLAorCQkJCQkJcmVsLT5yZW1vdGVyZWwu bnNwbmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSJzdHJlYW1pbmcgPSBwYXJh bGxlbCIpLAorCQkJCSBlcnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIg aXMgbm90IHRoZSB1bmlxdWUgIgorCQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhl cmUgaXMgYXQgbGVhc3Qgb25lICIKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIp LAorCQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1l dGVyICVzLiIsCisJCQkJCQkic3RyZWFtaW5nID0gb24iKSkpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IDM2NGQ1ZDdjMjguLjU2YTQ3YjdkYzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTIzLDcgKzIzLDggQEAKIC8q CiAgKiBQcm90b2NvbCBtZXNzYWdlIGZsYWdzLgogICovCi0jZGVmaW5lIExPR0lDQUxSRVBfSVNf UkVQTElDQV9JREVOVElUWSAxCisjZGVmaW5lIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWQkoMSA8 PCAwKQorI2RlZmluZSBBVFRSX0lTX1VOSVFVRQkJCQkoMSA8PCAxKQogCiAjZGVmaW5lIE1FU1NB R0VfVFJBTlNBQ1RJT05BTCAoMTw8MCkKICNkZWZpbmUgVFJVTkNBVEVfQ0FTQ0FERQkJKDE8PDAp CkBAIC00MCw2ICs0MSw2NiBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3JlYWRfdHVwbGUoU3Ry aW5nSW5mbyBpbiwgTG9naWNhbFJlcFR1cGxlRGF0YSAqdHVwbGUpOwogc3RhdGljIHZvaWQgbG9n aWNhbHJlcF93cml0ZV9uYW1lc3BhY2UoU3RyaW5nSW5mbyBvdXQsIE9pZCBuc3BpZCk7CiBzdGF0 aWMgY29uc3QgY2hhciAqbG9naWNhbHJlcF9yZWFkX25hbWVzcGFjZShTdHJpbmdJbmZvIGluKTsK IAorLyoKKyAqIFJlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwIC0tIGdldCBhIGJpdG1hcCBvZiB1 bmlxdWUgYXR0cmlidXRlIG51bWJlcnMKKyAqCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gUmVsYXRp b25HZXRJZGVudGl0eUtleUJpdG1hcCgpLCBidXQgcmV0dXJucyBhIGJpdG1hcCBvZgorICogaW5k ZXggYXR0cmlidXRlIG51bWJlcnMgZm9yIGFsbCB1bmlxdWUgaW5kZXhlcy4KKyAqLworc3RhdGlj IEJpdG1hcHNldCAqCitSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcChSZWxhdGlvbiByZWwpCit7 CisJTGlzdAkJICAgKmluZGV4b2lkbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbAkgICAqaW5kZXhvaWRz Y2FuOworCUJpdG1hcHNldAkgICAqYXR0dW5pcXVlID0gTlVMTDsKKworCWlmICghcmVsLT5yZF9y ZWwtPnJlbGhhc2luZGV4KQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4b2lkbGlzdCA9IFJlbGF0 aW9uR2V0SW5kZXhMaXN0KHJlbCk7CisKKwlmb3JlYWNoKGluZGV4b2lkc2NhbiwgaW5kZXhvaWRs aXN0KQorCXsKKwkJT2lkCQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJ CVJlbGF0aW9uCWluZGV4UmVsOworCQlpbnQJCQlpOworCisJCS8qIExvb2sgdXAgdGhlIGRlc2Ny aXB0aW9uIGZvciBpbmRleCAqLworCQlpbmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihp bmRleG9pZCk7CisKKwkJaWYgKCFSZWxhdGlvbklzVmFsaWQoaW5kZXhSZWwpKQorCQkJZWxvZyhF UlJPUiwgImNvdWxkIG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOwor CisJCWlmICghaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJeworCQkJUmVsYXRp b25DbG9zZShpbmRleFJlbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEFkZCByZWZlcmVu Y2VkIGF0dHJpYnV0ZXMgdG8gYXR0dW5pcXVlICovCisJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJl bC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCXsKKwkJCWludCBhdHRybnVtID0gaW5kZXhS ZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkvKgorCQkJICogV2UgZG9uJ3Qg aW5jbHVkZSBub24ta2V5IGNvbHVtbnMgaW50byBhdHR1bmlxdWUKKwkJCSAqIGJpdG1hcHMuIFNl ZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCSAqLworCQkJaWYgKGF0dHJudW0gIT0g MCkKKwkJCXsKKwkJCQlpZiAoaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmtleWF0dHMgJiYK KwkJCQkJIWJtc19pc19tZW1iZXIoYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXIsIGF0dHVuaXF1ZSkpCisJCQkJCWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0 dHVuaXF1ZSwKKwkJCQkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIpOworCQkJfQorCQl9CisJCVJlbGF0aW9uQ2xvc2UoaW5kZXhSZWwpOworCX0K KwlsaXN0X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKworCXJldHVybiBhdHR1bmlxdWU7Cit9CisKIC8q CiAgKiBDaGVjayBpZiBhIGNvbHVtbiBpcyBjb3ZlcmVkIGJ5IGEgY29sdW1uIGxpc3QuCiAgKgpA QCAtOTMzLDcgKzk5NCw4IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBvdXQs IFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCVR1cGxlRGVzYwlkZXNjOwogCWlu dAkJCWk7CiAJdWludDE2CQlubGl2ZWF0dHMgPSAwOwotCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBO VUxMOworCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5V TEw7CiAJYm9vbAkJcmVwbGlkZW50ZnVsbDsKIAogCWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJl bCk7CkBAIC05NTgsNiArMTAyMCw5IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5m byBvdXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCWlmICghcmVwbGlkZW50 ZnVsbCkKIAkJaWRhdHRycyA9IFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAocmVsKTsKIAor CS8qIGZldGNoIGJpdG1hcCBvZiBVTklRVUUgYXR0cmlidXRlcyAqLworCWF0dHVuaXF1ZSA9IFJl bGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKHJlbCk7CisKIAkvKiBzZW5kIHRoZSBhdHRyaWJ1dGVz ICovCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewpAQCAtOTc0LDcgKzEw MzksMTEgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24g cmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJCWlmIChyZXBsaWRlbnRmdWxsIHx8CiAJCQlibXNf aXNfbWVtYmVyKGF0dC0+YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl ciwKIAkJCQkJCSAgaWRhdHRycykpCi0JCQlmbGFncyB8PSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0Ff SURFTlRJVFk7CisJCQlmbGFncyB8PSBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFk7CisKKwkJaWYg KGJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLAorCQkJCQkJICBhdHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gQVRUUl9JU19VTklRVUU7 CiAKIAkJcHFfc2VuZGJ5dGUob3V0LCBmbGFncyk7CiAKQEAgLTk4OSw2ICsxMDU4LDcgQEAgbG9n aWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBz ZXQgKmNvbHVtbnMpCiAJfQogCiAJYm1zX2ZyZWUoaWRhdHRycyk7CisJYm1zX2ZyZWUoYXR0dW5p cXVlKTsKIH0KIAogLyoKQEAgLTEwMDEsNyArMTA3MSw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRy cyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0czsK IAljaGFyCSAgKiphdHRuYW1lczsKIAlPaWQJCSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAgKmF0 dGtleXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0dHVu aXF1ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBxX2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFtZXMg PSBwYWxsb2MobmF0dHMgKiBzaXplb2YoY2hhciAqKSk7CkBAIC0xMDE0LDkgKzEwODUsMTMgQEAg bG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAq cmVsKQogCiAJCS8qIENoZWNrIGZvciByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiAqLwogCQlmbGFn cyA9IHBxX2dldG1zZ2J5dGUoaW4pOwotCQlpZiAoZmxhZ3MgJiBMT0dJQ0FMUkVQX0lTX1JFUExJ Q0FfSURFTlRJVFkpCisJCWlmIChmbGFncyAmIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWSkKIAkJ CWF0dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlzLCBpKTsKIAorCQkvKiBDaGVjayBmb3Ig dW5pcXVlIGNvbHVtbiAqLworCQlpZiAoZmxhZ3MgJiBBVFRSX0lTX1VOSVFVRSkKKwkJCWF0dHVu aXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRlIG5h bWUgKi8KIAkJYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwogCkBA IC0xMDMwLDYgKzExMDUsNyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwg TG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwogCXJl bC0+YXR0dHlwcyA9IGF0dHR5cHM7CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwtPmF0 dHVuaXF1ZSA9IGF0dHVuaXF1ZTsKIAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlOTg5MDQ3NjgxLi5kNzYx MDEyZjRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBA IC0xOSwxMiArMTksMTkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCisjaW5jbHVkZSAiY29tbWFuZHMv dHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgor I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIK IAogCiBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5VTEw7 CkBAIC05MSw2ICs5OCwyMyBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERhdHVt IGFyZywgT2lkIHJlbG9pZCkKIAl9CiB9CiAKKy8qCisgKiBTeXNjYWNoZSBpbnZhbGlkYXRpb24g Y2FsbGJhY2sgdG8gcmVzZXQgcGFyYWxsZWxfYXBwbHlfc2FmZXR5IGZsYWcuCisgKi8KK3N0YXRp YyB2b2lkCitsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYihEYXR1bSBhcmcsIGlu dCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQoreworCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3Nl cTsKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OworCisJaWYgKExvZ2ljYWxSZXBSZWxN YXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIExvZ2lj YWxSZXBSZWxNYXApOworCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2Vx KSkgIT0gTlVMTCkKKwkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQ UExZX1NBRkVUWV9VTktOT1dOOworfQorCiAvKgogICogSW5pdGlhbGl6ZSB0aGUgcmVsYXRpb24g bWFwIGNhY2hlLgogICovCkBAIC0xMTYsNiArMTQwLDEyIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2lu aXQodm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJl Z2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAog CQkJCQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJP Q09JRCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJ CQkJCQkJICAoRGF0dW0pIDApOworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRZUEVP SUQsCisJCQkJCQkJCSAgbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IsCisJCQkJ CQkJCSAgKERhdHVtKSAwKTsKIH0KIAogLyoKQEAgLTE0Miw2ICsxNzIsNyBAQCBsb2dpY2FscmVw X3JlbG1hcF9mcmVlX2VudHJ5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJCXBmcmVl KHJlbW90ZXJlbC0+YXR0dHlwcyk7CiAJfQogCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0a2V5cyk7 CisJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCiAJaWYgKGVudHJ5LT5hdHRybWFw KQogCQlmcmVlX2F0dHJtYXAoZW50cnktPmF0dHJtYXApOwpAQCAtMTkwLDYgKzIyMSw3IEBAIGxv Z2ljYWxyZXBfcmVsbWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKIAl9 CiAJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJlcGxpZGVudDsKIAll bnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOwor CWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlx dWUpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCkBAIC0zMTAsNiArMzQy LDE2MiBAQCBsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKmVudHJ5KQogCX0KIH0KIAorLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0 aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBhbmQg YXNzaWduIHRoZSAncGFyYWxsZWxfYXBwbHlfc2FmZXR5JyBmbGFnLgorICoKKyAqIFRoZXJlIGFy ZSB0d28gcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGEgcGFyYWxsZWwg YXBwbHkKKyAqIHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9uIHRo ZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28KKyAqIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9u IHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICogbm9uLWltbXV0 YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFi bGUuCisgKgorICogV2l0aG91dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNj ZW5hcmlvIG1heSBvY2N1cjogVGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgbG9ja3MgYSBy b3cgd2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhZnRlcgorICogdGhh dCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVu IHByb2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlz IHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiB3YWl0cyBmb3IgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQsCisg KiBpdCB3b24ndCBzZW5kIHN1YnNlcXVlbnQgZGF0YSBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyOyB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2YKKyAqIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2NrIGhh cworICogb2NjdXJyZWQsIHNvIGJvdGggd29ya2VycyB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5Lgor ICoKKyAqIFdlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgJ1BBUkFMTEVMX0FQUExZ X1VOU0FGRScgaGVyZSBpZiBjaGFuZ2VzCisgKiBvbiBvbmUgcmVsYXRpb24gY2FuIG5vdCBiZSBh cHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBsZWF2ZQorICogaXQgdG8g cGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soKSB0byB0aHJvdyB0aGUgYWN0dWFsIGVycm9y IGlmIG5lZWRlZC4KKyAqLwordm9pZAorbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBs eShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUJpdG1hcHNldCAgICp1a2V5Owor CWludAkJCWk7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJaW50CQkJYXR0bnVtOworCisJLyogU2tp cCBpZiBub3QgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCWlmICghYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qIEluaXRpYWxpemUgdGhlIGZsYWcuICov CisJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZX1NBRkVUWV9V TktOT1dOOworCisJLyoKKwkgKiBGaXJzdCwgY2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gaW4g dGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUKKwkgKiBpcyBhbHNvIHRoZSB1bmlx dWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4KKwkgKi8KKwl1a2V5ID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxvY2FscmVsLAorCQkJCQkJCQkJICBJTkRFWF9BVFRS X0JJVE1BUF9LRVkpOworCisJaWYgKHVrZXkpCisJeworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9 IGJtc19uZXh0X21lbWJlcih1a2V5LCBpKSkgPj0gMCkKKwkJeworCQkJYXR0bnVtID0gQXR0ck51 bWJlckdldEF0dHJPZmZzZXQoaSArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIp OworCisJCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkh Ym1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dLCBlbnRyeS0+cmVt b3RlcmVsLmF0dHVuaXF1ZSkpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0 eSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlibXNfZnJlZSh1a2V5KTsKKwkJCQlyZXR1 cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkvKgorCSAqIFRoZW4s IGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQgYnkgdGhl CisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5jdGlvbnMgaW4gdGhl IGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7CisJICogYi4gQ29s dW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKKwkg KiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOworCSAqLworCS8qIENoZWNrIHRoZSB0cmlnZ2Vy IGZ1bmN0aW9ucy4gKi8KKwlpZiAoZW50cnktPmxvY2FscmVsLT50cmlnZGVzYyAhPSBOVUxMKQor CXsKKwkJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPm51bXRyaWdn ZXJzOyBpKyspCisJCXsKKwkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+bG9jYWxyZWwtPnRy aWdkZXNjLT50cmlnZ2VycyArIGk7CisKKwkJCWlmICh0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dF Ul9GSVJFU19BTFdBWVMgJiYKKwkJCQl0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19P Tl9SRVBMSUNBKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoZnVuY192b2xhdGlsZSh0cmlnLT50 Z2ZvaWQpICE9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxs ZWxfYXBwbHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJ CX0KKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBjb2x1bW5zLiAqLworCXR1cGRlc2MgPSBSZWxh dGlvbkdldERlc2NyKGVudHJ5LT5sb2NhbHJlbCk7CisJZm9yIChhdHRudW0gPSAwOyBhdHRudW0g PCB0dXBkZXNjLT5uYXR0czsgYXR0bnVtKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQg PSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGF0dG51bSk7CisJCU5vZGUgKmRlZmF1bHRleHByID0g TlVMTDsKKworCQkvKiBXZSBkb24ndCBjaGVjayBkcm9wcGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1 dGVzICovCisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJ CWNvbnRpbnVlOworCisJCWRlZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2RlZmF1bHQoZW50cnkt PmxvY2FscmVsLCBhdHRudW0gKyAxKTsKKwkJaWYgKGRlZmF1bHRleHByICYmIGNvbnRhaW5fbXV0 YWJsZV9mdW5jdGlvbnMoZGVmYXVsdGV4cHIpKQorCQl7CisJCQllbnRyeS0+cGFyYWxsZWxfYXBw bHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJcmV0dXJuOworCQl9CisKKwkJ LyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hl dGhlciB0aGF0IGRvbWFpbiBoYXMKKwkJICogYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJl IG5vdCBpbW11dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkg PT0gVFlQVFlQRV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsK KwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXREb21haW5D b25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0 cmFpbnRzKQorCQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNv bnN0cmFpbnRTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAm JiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJ CQkJeworCQkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlf VU5TQUZFOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sg dGhlIGNvbnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJeworCQlDb25zdHJD aGVjayAqY2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJCSAqIERldGVy bWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJCSAqIGNvbnRh aW5zIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgdHVw ZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAqY2hlY2tfZXhw ciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250YWluX211dGFi bGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJh bGxlbF9hcHBseV9zYWZldHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOwor CQkJfQorCQl9CisJfQorCisJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVM X0FQUExZX1NBRkU7Cit9CisKIC8qCiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lh dGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCiAgKgpAQCAtNDM4LDYgKzYyNiw5IEBAIGxvZ2ljYWxy ZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkK IAkJICovCiAJCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAorCQkvKiBT ZXQgaWYgY2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29y a2VyICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJ CWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTY1Myw2ICs4NDQsNyBAQCBs b2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJ fQogCQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50Owog CQllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMp OworCQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0 dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzg4 OCw5IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy b290LAogCS8qIFNldCBpZiB0aGUgdGFibGUncyByZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0 byBhcHBseSB1cGRhdGUvZGVsZXRlLiAqLwogCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxl KGVudHJ5KTsKIAorCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2Fw cGx5KGVudHJ5KTsKKwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCS8qIHN0YXRl IGFuZCBzdGF0ZWxzbiBhcmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDQ3YWU5YTgwZGQuLmI0MzdiNzQyNDggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtOTIxLDYg KzkyMSw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJl bG5hbWUsCiAJbHJlbC0+YXR0bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVy ICogc2l6ZW9mKGNoYXIgKikpOwogCWxyZWwtPmF0dHR5cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0 cmlidXRlTnVtYmVyICogc2l6ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtleXMgPSBOVUxMOworCWxy ZWwtPmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAkvKgogCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEg bGlzdCBvZiBuYW1lcy4gIElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDJiZmYxZGJjNzQuLjRmODExZDYxN2IgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTUwNSw2ICsxNTA1 LDE0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJCQkgZXJybXNnX2ludGVybmFs KCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKIAorCQkJLyoK KwkJCSAqIFVubGlrZSBzdHJlYW1fY29tbWl0LCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBm b3Igc3RyZWFtX3N0b3AKKwkJCSAqIHRvIGZpbmlzaC4gQWxsb3dpbmcgdGhlIG90aGVyIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgYmVmb3JlCisJCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hl ZCBjYW4gbGVhZCB0byBmYWlsdXJlcyBpZiB0aGUgdW5pcXVlCisJCQkgKiBpbmRleC9jb25zdHJh aW50IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4KKwkJCSAq IEJ1dCBmb3Igc3VjaCBjYXNlcywgd2UgZG9uJ3QgYWxsb3cgc3RyZWFtZWQgdHJhbnNhY3Rpb25z IHRvIGJlCisJCQkgKiBhcHBsaWVkIGluIHBhcmFsbGVsLiBTZWUgcGFyYWxsZWxfYXBwbHlfcmVs YXRpb25fY2hlY2suCisJCQkgKi8KIAkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKIAogCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMg aW4gdGhlIHN0cmVhbWluZyBjaHVuayIsIG5jaGFuZ2VzKTsKQEAgLTIxMDMsNiArMjExMSw4IEBA IGFwcGx5X2hhbmRsZV9pbnNlcnQoU3RyaW5nSW5mbyBzKQogCS8qIFNldCByZWxhdGlvbiBmb3Ig ZXJyb3IgY2FsbGJhY2sgKi8KIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVsID0gcmVsOwog CisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUg dGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlv bihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yMjQ2LDYgKzIyNTYsOCBAQCBh cHBseV9oYW5kbGVfdXBkYXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8g dGhlIHVwZGF0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCXBhcmFs bGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVj dXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsK IAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjQxNCw2ICsyNDI2LDggQEAgYXBwbHlfaGFu ZGxlX2RlbGV0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSBkZWxl dGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlwYXJhbGxlbF9hcHBs eV9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3Rh dGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRl ID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTI1OTksMTMgKzI2MTMsMTQgQEAgYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAl9CiAJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25f b3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKKwkJCQkJCQkJCQkgICBhdHRybWFwKTsKKwogCS8q IENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0aGUgbGVhZiBwYXJ0 aXRpb24uICovCiAJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBD TURfREVMRVRFKQotCXsKLQkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4o cmVsbWFwZW50cnksIHBhcnRyZWwsCi0JCQkJCQkJCQkJCSAgIGF0dHJtYXApOwogCQljaGVja19y ZWxhdGlvbl91cGRhdGFibGUocGFydF9lbnRyeSk7Ci0JfQorCisJcGFyYWxsZWxfYXBwbHlfcmVs YXRpb25fY2hlY2socGFydF9lbnRyeSk7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKIAl7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCA4MDhmOWViZDBkLi5iMjQ4ODk5ZDgyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTI1NDAsNiArMjU0MCwyMyBAQCBjb21wYXJl X3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJn MikKIAkJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBHZXREb21haW5Db25zdHJhaW50cyAtLS0gZ2V0 IERvbWFpbkNvbnN0cmFpbnRTdGF0ZSBsaXN0IG9mIHNwZWNpZmllZCBkb21haW4gdHlwZQorICov CitMaXN0ICoKK0dldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKQoreworCVR5cGVDYWNo ZUVudHJ5ICp0eXBlbnRyeTsKKwlMaXN0CQkgICAqY29uc3RyYWludHMgPSBOSUw7CisKKwl0eXBl bnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNIRV9ET01BSU5fQ09OU1RS X0lORk8pOworCisJaWYodHlwZW50cnktPmRvbWFpbkRhdGEgIT0gTlVMTCkKKwkJY29uc3RyYWlu dHMgPSB0eXBlbnRyeS0+ZG9tYWluRGF0YS0+Y29uc3RyYWludHM7CisKKwlyZXR1cm4gY29uc3Ry YWludHM7Cit9CisKIC8qCiAgKiBMb2FkIChvciByZS1sb2FkKSB0aGUgZW51bURhdGEgbWVtYmVy IG9mIHRoZSB0eXBjYWNoZSBlbnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAppbmRleCA1MjBmODM3NDczLi4xMGM2YWEwOWI5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMTEzLDYgKzExMyw3IEBAIHR5cGVkZWYgc3RydWN0IExv Z2ljYWxSZXBSZWxhdGlvbgogCWNoYXIJCXJlcGxpZGVudDsJCS8qIHJlcGxpY2EgaWRlbnRpdHkg Ki8KIAljaGFyCQlyZWxraW5kOwkJLyogcmVtb3RlIHJlbGF0aW9uIGtpbmQgKi8KIAlCaXRtYXBz ZXQgICphdHRrZXlzOwkJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICovCisJQml0bWFwc2V0ICAq YXR0dW5pcXVlOwkJLyogQml0bWFwIG9mIHVuaXF1ZSBjb2x1bW5zICovCiB9IExvZ2ljYWxSZXBS ZWxhdGlvbjsKIAogLyogVHlwZSBtYXBwaW5nIGluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggNzhjZDdlNzdmNS4uZTlmNTg1MWJmNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAgLTE1LDYgKzE1LDE3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oIgogCisvKgorICoJU3RhdGVzIHRvIGRldGVybWluZSBpZiBjaGFuZ2VzIG9uIG9u ZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhCisgKglwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJhbGxlbEFwcGx5U2FmZXR5Cit7CisJUEFSQUxMRUxf QVBQTFlfU0FGRVRZX1VOS05PV04sCisJUEFSQUxMRUxfQVBQTFlfU0FGRSwKKwlQQVJBTExFTF9B UFBMWV9VTlNBRkUKK30gUGFyYWxsZWxBcHBseVNhZmV0eTsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFJlbE1hcEVudHJ5CiB7CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyog a2V5IGlzIHJlbW90ZXJlbC5yZW1vdGVpZCAqLwpAQCAtMzEsNiArNDIsOCBAQCB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIAlSZWxhdGlvbglsb2NhbHJlbDsJCS8qIHJlbGNh Y2hlIGVudHJ5IChOVUxMIHdoZW4gY2xvc2VkKSAqLwogCUF0dHJNYXAgICAgKmF0dHJtYXA7CQkv KiBtYXAgb2YgbG9jYWwgYXR0cmlidXRlcyB0byByZW1vdGUgb25lcyAqLwogCWJvb2wJCXVwZGF0 YWJsZTsJCS8qIENhbiBhcHBseSB1cGRhdGVzL2RlbGV0ZXM/ICovCisJUGFyYWxsZWxBcHBseVNh ZmV0eQlwYXJhbGxlbF9hcHBseV9zYWZldHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGEKKwkJ CQkJCQkJCQkJCSAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8gKi8KIAogCS8qIFN5bmMgc3RhdGUu ICovCiAJY2hhcgkJc3RhdGU7CkBAIC00Nyw0ICs2MCw2IEBAIGV4dGVybiBMb2dpY2FsUmVwUmVs TWFwRW50cnkgKmxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVu dHJ5KTsKKwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxSRUxBVElPTl9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGFjYTNkZTcyYjcuLmM3NDY3MGRk MzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjMs NiArMjIzLDggQEAgZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2 b2lkKTsKIAogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAod29ya2VyLT5h cHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2Fw cGx5X3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKKwogc3RhdGlj IGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aAppbmRleCA0MzFhZDdmMWIzLi5lZDdjMmU3ZjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy90eXBjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE5 OSw2ICsxOTksOCBAQCBleHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9pZGVudGlmaWVy KE9pZCB0eXBlX2lkLCBpbnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBhcmVfdmFsdWVz X29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIAor ZXh0ZXJuIExpc3QgKkdldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsKKwogZXh0ZXJu IHNpemVfdCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQpOwogCiBleHRl cm4gdm9pZCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnkgKiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IGYwZTEy MTkwY2UuLjU0OWY1NWI4MGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApA QCAtMjA0LDggKzIwNCwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0g b2ZmKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1 bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMg U0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1 Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRv bGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAn JGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCA5ZDdlODUwNmM0Li5iNTE1NmQ5NzUw IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBA IC0xNDksOCArMTQ5LDEzIEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CiApOwogCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3Ry ZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlv bnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBv ZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9f dGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9 IHBhcmFsbGVsKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsCmluZGV4IDNiNTgzMGEzYjQuLjhjNzA0OTY5Y2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC01MDAsNiArNTAwLDE0IEBAIHRl c3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBu YW1lX0MsICdvbicpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qg c3VwcG9ydCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlv biBpbiB0aGUgZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBj IFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsiKTsKKyRub2RlX0MtPnNhZmVfcHNxbCgKKwkn cG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFV TFQgdG9fdGltZXN0YW1wKDApOyIpOworCiB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9C LCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy M190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggMjk5ODkxNTZmOC4uZmM5Njk5OTcwNiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC0zODMs OCArMzgzLDEzIEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwog Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NS SVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5n ID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNv IGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1 bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxewor QUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0 YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFs bGVsX3NhZmV0eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFy YWxsZWxfc2FmZXR5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZm ZGJlYTM2YzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbApAQCAtMCwwICsxLDYwOSBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCB0aGUgc2FmZXR5IGNoZWNrcyBvZiBzdHJlYW1pbmcgbW9kZSAicGFyYWxsZWwiIGluIGxvZ2lj YWwgcmVwbGljYXRpb24uCisjIFdpdGhvdXQgdGhlc2Ugc2FmZXR5IGNoZWNrcywgdGhlIHN1YnNj cmliZXIncyBhcHBseSB3b3JrZXIgbWF5IGZhbGwgaW50byBhbgorIyBpbmZpbml0ZSB3YWl0IHdp dGhvdXQgdGhlIHVzZXIga25vd2luZy4KKyMKKyMgRm9yIG5vcm1hbCB0YWJsZXMsIHdlIHVzZSBk ZWFkbG9jay1wcm9kdWNpbmcgdGVzdCBjYXNlcyB0byBlbnN1cmUgdGhhdCBmdXR1cmUKKyMgbW9k aWZpY2F0aW9ucyBkbyBub3QgaW52YWxpZGF0ZSBjb25zdHJhaW50IGNoZWNrcy4KKyMKKyMgRm9y IHBhcnRpdGlvbmVkIHRhYmxlcywgd2UganVzdCB1c2UgdGVzdCBjYXNlcyB0byBjb25maXJtIHRo YXQgdGhlIGNvbnN0cmFpbnQKKyMgY2hlY2tzIGFyZSBhcyBleHBlY3RlZC4KKwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQgPSAw OworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVt ID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJl ciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2Ny aWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMSAo YSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQg cHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2Ny aWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRp dGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkgUkFOR0Uo YSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVkKSIpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0aW9uIERF RkFVTFQiCispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJf Y29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX25vcm1hbCBGT1IgVEFCTEUgdGVzdF90YWIxLCB0ZXN0X3RhYjIiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwor CitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJUFVCTElD QVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0aW9uZWQKKwlXSVRIIChzdHJlYW1p bmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJh bnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KK215ICRpbiAgPSAnJzsK K215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCitteSAkaCA9ICRub2RlX3B1Ymxp c2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJ b25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZQor IyBzdWJzY3JpYmVyLXNpZGUgaXMgbm90IHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNo ZXItc2lkZS4gQ2hlY2sgdGhlCisjIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBp biB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0 aGUgdW5pcXVlIGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIxIG9uIHRlc3Rf dGFiMShhKSIpOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNF TEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBf bmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5U TyB0ZXN0X3RhYjEgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307Cisk aC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNj cmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiMSIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKK215ICRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdW5pcXVl IGluZGV4IG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lk eCBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24gKGIpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0 aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9w YXJ0aXRpb25faWR4Iik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g dG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFy dGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90 IGFsbG93ZWQgb24gdGhlCisjIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9y dGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBub3JtYWwgdGFi bGUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5J UVVFIElOREVYIGlkeF90YWIyIG9uIHRlc3RfdGFiMihhKSIpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24g dGVzdF90YWIyKGEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKSBSRVRV Uk5TIFRSSUdHRVIgQVMgXCRcJAorICBCRUdJTgorICAgIElOU0VSVCBJTlRPIHB1YmxpYy50ZXN0 X3RhYjIgVkFMVUVTIChORVcuKik7CisgICAgUkVUVVJOIE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1 YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV91bnNhZmUKK0JFRk9SRSBJTlNF UlQgT04gcHVibGljLnRlc3RfdGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRy aWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBS RVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlOworCitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAg UkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRyaWdnZXIgZnVuY3Rpb24nOworCVJFVFVSTiBO RVc7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7CitDUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZl CitCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKK0ZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlKCk7Cit9KTsKKworIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJl ci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBW QUxVRVMoNTAwMSk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMo NTAwMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5n IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQp OworCisjIFVzaW5nIHRyaWdnZXIgd2l0aCBpbW11dGFibGUgZnVuY3Rpb24sIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSIHRyaV90YWIxX3NhZmU7CitE Uk9QIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7Cit9KTsKKwor IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDIp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4 cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitEUk9QIElO REVYIGlkeF90YWIyOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3NhZmUgT04gcHVibGljLnRlc3Rf dGFiMTsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZlOworRFJPUCBmdW5j dGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0 aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9m dW5jKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVMTDsK KyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJp ZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24KK0ZPUiBFQUNIIFJPVyBFWEVD VVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRp dGlvbiBFTkFCTEUgUkVQTElDQSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOwor CisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5z ZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9Cisg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVs dCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBv biB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgcGFy YWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZp cnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1h bCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiBmdW5jX2NvdW50X3RhYjIoKSBS RVRVUk5TIElOVCBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIChTRUxFQ1QgY291bnQoKikg RlJPTSBwdWJsaWMudGVzdF90YWIyKTsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitB TFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTFVNTiBiIGludCBERUZBVUxUIGZ1bmNfY291bnRf dGFiMigpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVH SU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3Rf dGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5m aW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAorCSRvZmZzZXQpOworCisjIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0YWJsZSBleHBy ZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxU IDEiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBs aWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2lu ZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRo ZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi QUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09MVU1OIGIiKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOwor VFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0 IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBB TFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUg dGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisj IERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3Rf dGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEo NTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRl ZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQg aXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5z IGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVj ayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4K KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCisjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRo ZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CisjIHRhYmxl LCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01BSU4g dG1wX2RvbWFpbiBBUyBpbnQgQ0hFQ0sgKFZBTFVFID4gLTEpOworQUxURVIgVEFCTEUgdGVzdF90 YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgdG1wX2RvbWFpbjsKK30pOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21h aW4gQVMgSU5UIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIENIRUNLIChWQUxVRSA+PSBmdW5jX2Nv dW50X3RhYjIoKSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0 bXBfZG9tYWluOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxewor QkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNU IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRl c3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRo LT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxs ZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiwg bm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIERPTUFJTiB0bXBfZG9tYWluIERST1AgQ09OU1RSQUlOVCBkb21haW5fY2hlY2siKTsK KworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11 dGFibGUgZXhwcmVzc2lvbicKKyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVu dmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFM VEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0 X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5v bi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHBy ZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFi MSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2FmZSBDSEVDSyhhID49IGZ1bmNfY291bnRf dGFiMigpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JF R0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0 X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVs LywKKwkkb2Zmc2V0KTsKKworIyBBbHRlciBjb25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRh YmxlIGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJ TlQgY29uc3RfdGFiMV91bnNhZmU7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJ TlQgY29uc3RfdGFiMV9zYWZlIENIRUNLKGEgPj0gMCk7Cit9KTsKKworIyBXYWl0IGZvciB0aGlz IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIu Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicp OworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERS T1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNB VEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lv biBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJ TlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUg dGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisj IERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CisKKyMgV2FpdCBmb3Ig dGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29y a2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDAp LAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJh aW50IGV4cHJlc3Npb24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBh bGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhl IGVycm9yCisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24g bm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitDUkVBVEUgVEFCTEUgdGFiX25vcHVibGljKGEgaW50KTsKK0FMVEVSIFRBQkxFIHRlc3Rf dGFiMiBBREQgUFJJTUFSWSBLRVkgKGEpOworQUxURVIgVEFCTEUgdGVzdF90YWIyIFJFUExJQ0Eg SURFTlRJVFkgRlVMTDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSk7Cit9KTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90 YWIyIEFERCBQUklNQVJZIEtFWSAoYSk7Iik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlO VCB0ZXN0X3RhYjFmayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiMihhKTsKK1NF TEVDVCAnQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwg dGduYW1lIHx8ICciJyBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYjEn OjpyZWdjbGFzczo6b2lkIFxcZ2V4ZWMKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor CiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKTsK K0lOU0VSVCBJTlRPIHRhYl9ub3B1YmxpYyBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIyIik7CisKKyRpbiAuPSBxewor Q09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWdu IGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBE Uk9QIENPTlNUUkFJTlQgdGVzdF90YWIxZmsiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKworIyBDbGVhbiB1 cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5D QVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0 aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uX2YgKGEgaW50IHByaW1hcnkga2V5 KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3Rh Yl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3BhcnRpdGlv bl9mKGEpOworU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5BQkxFIFJF UExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0 Z3JlbGlkID0gJ3Rlc3RfdGFiX3BhcnRpdGlvbic6OnJlZ2NsYXNzOjpvaWQgXFxnZXhlYworfSk7 CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6 KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0 aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxl bC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNU UkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScp OworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitk b25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZDIwNWFlZDA4Mi4u OGIyNTMyZTdkNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE4NzgsNiArMTg3OCw3 IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5k U3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZldHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJh bGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgotLSAK Mi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v29-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v29-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v29-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=61520; creation-date="Thu, 15 Sep 2022 05:12:00 GMT"; modification-date="Thu, 15 Sep 2022 05:15:23 GMT" Content-Transfer-Encoding: base64 RnJvbSBkYjdlZGNiNmE1YzZlNzNlOWJlMmU4MTQ0Njc1ZDNmMWM3YzUyZjRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyOSA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBwYXJhbGxl bCB3b3JrZXIgZXhpdHMgd2l0aCBhbiBlcnJvci4KCkluIHRoaXMgY2FzZSwgcmV0cnkgYXBwbHlp bmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbm9ybWFsCnN0cmVhbWluZz1v biBtb2RlLiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gYSBsb29wIG9m IHRoZSBzYW1lCnJldHJ5IGVycm9ycy4KCkEgbmV3IGZsYWcgZmllbGQgInN1YnJldHJ5IiBoYXMg YmVlbiBpbnRyb2R1Y2VkIHRvIGNhdGFsb2cgInBnX3N1YnNjcmlwdGlvbiIuCklmIHRoZSBzdWJz Y3JpYmVyIGV4aXRzIHdpdGggYW4gZXJyb3IsIHRoaXMgZmxhZyB3aWxsIGJlIHNldCB0cnVlLCBh bmQKd2hlbmV2ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz IGZsYWcgaXMgcmVzZXQgZmFsc2UuCk5vdywgd2hlbiBkZWNpZGluZyBob3cgdG8gYXBwbHkgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZSBsb2dpYyBjYW4ga25vdyBpZgp0aGlzIHRyYW5zYWN0 aW9uIGhhcyBwcmV2aW91c2x5IGZhaWxlZCBvciBub3QgKGJ5IGNoZWNraW5nIHRoZSAic3VicmV0 cnkiCmZpZWxkKS4KCkluIGFkZGl0aW9uLCB3aGVuIGludHJvZHVjZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB3ZSBhZGRlZCBzb21lIGxvZyBjaGVja3MgdG8KZW5zdXJlIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KQnV0IHNp bmNlIHdlIGludHJvZHVjZWQgInJldHJ5IiBub3csIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gY29u ZmlybSB3aGV0aGVyCnN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBTbyByZW1vdmVkCnRoZXNlIGxvZyBjaGVja3MuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAgNSArCiBzcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDE2ICstCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxODcgKysrKysrKysrKysrKy0tLS0t CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgNCArCiBz cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgNTUgKy0tLS0t CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAgNDQgKy0t LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8ICA1MCAr LS0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwgIDU1 ICstLS0tLQogLi4uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCAgICAgICAgIHwg IDQ1ICstLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAg fCAgNTMgLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAg ICB8ICA2NSArLS0tLS0KIC4uLi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsICAg ICAgICB8IDE0MCArKysrKystLS0tLS0tCiAxNyBmaWxlcyBjaGFuZ2VkLCAyNjAgaW5zZXJ0aW9u cygrKSwgNDc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggYzU3NjlkYTI2Yi4uNzky NzQ5YzU2MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MjcsNiArNzkyNywxNSBAQCBTQ1JBTS1TSEEt MjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+Ojxy ZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFuZ2UgZmFpbGVkLCBuZWNlc3Np dGF0aW5nIGEgcmV0cnkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88 L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbAppbmRleCBlZjI1NjM0NmI4Li5mNzQyNTBlYjU3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjUwLDYgKzI1MCwxMSBAQCBD UkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3Jp cHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIGFsc28gYmUgdGhlIHVuaXF1ZSBjb2x1 bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBjYW5ub3QgYmUKICAgICAgICAgICBh bnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJl cGxpY2F0ZWQKICAgICAgICAgICB0YWJsZS4KKyAgICAgICAgICBXaGVuIGFwcGx5aW5nIGEgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBpZiBlaXRoZXIgcmVxdWlyZW1lbnQgaXMgbm90CisgICAgICAg ICAgbWV0LCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9y LgorICAgICAgICAgIFRoZSA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9kZSBpcyBkaXNy ZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQgdGhlIHRyYW5zYWN0aW9u IHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAgICAgICAgICBt b2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFy bGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYTUwNmZj M2VjOC4uNzIzYjE0MWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBA IC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19v aykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3b3BoYXNlc3Rh dGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3Vi Zm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5zdWJyZXRyeTsK IAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQ VElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA1NWY3ZWM3OWUw Li5mNGEwMDQ5NmVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjk4 LDcgKzEyOTgsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0dXMg RlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9NIHB1YmxpYzsK IEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1lLCBzdWJvd25l ciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJlYW0sIHN1YnR3 b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vic2xvdG5hbWUs IHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAgICAgICAgICAg ICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywg c3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFURSBW SUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggZmE1YTBjYzQwNS4uYzRmMzkwMDRiNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM3LDYgKzYzNyw3IEBAIENyZWF0ZVN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0 bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgogCQkJCQkgTE9H SUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9u ZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xH ZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZv IC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAob3B0cy5zbG90 X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCmluZGV4IGQ2NGFlNWZiMjYuLjZhMWQ5MzhlMzUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j CkBAIC0xNDQsNiArMTQ0LDE4IEBAIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlv bklkIHhpZCkKIAlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBs c24pKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCB0 aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEgdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJh bGxlbAorCSAqIGFwcGx5IHdvcmtlciB0aGUgY2hlY2tzIGZhaWxlZCAoc2VlIGZ1bmN0aW9uCisJ ICogcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2spLgorCSAqLworCWlmIChNeVN1YnNjcmlw dGlvbi0+cmV0cnkpCisJeworCQllbG9nKERFQlVHMSwgInBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YXJlIG5vdCB1c2VkIGZvciByZXRyaWVzIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAkvKgog CSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNp bmcgYSBwYXJhbGxlbCBhcHBseQogCSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVy IHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhhdApAQCAtMTExNCw3ICsxMTI2 LDUgQEAgcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyZWwpCiAJCQkJCQkic3RyZWFtaW5nID0gcGFyYWxsZWwiKSwKIAkJCQkgZXJyZGV0YWlsKCJU aGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKIAkJCQkJ CSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAiCi0JCQkJ CQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSwKLQkJCQkgZXJyaGludCgiUGxlYXNlIGNo YW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBhcmFtZXRlciAlcy4iLAotCQkJCQkJInN0cmVhbWlu ZyA9IG9uIikpKTsKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpKSk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA0ZjgxMWQ2MTdiLi4w NDViNzdlNzcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAg LTM5NSw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVj UHRyIHJlbW90ZV9sc24pOwogCiBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KHZvaWQpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsK K3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MzUsNiArNDM1LDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFu c0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitz dGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICog U2hvdWxkIHRoaXMgd29ya2VyIGFwcGx5IGNoYW5nZXMgZm9yIGdpdmVuIHJlbGF0aW9uLgogICoK QEAgLTk4Miw2ICs5ODQsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykKIAog CWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKIAorCS8qIFJlc2V0 IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwog CkBAIC0xMDkxLDYgKzEwOTYsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMp CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRy eSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTE0 Nyw2ICsxMTU1LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMp CiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3lu Y2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMjA4LDYgKzEyMTksOSBA QCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAJaW5fcmVtb3Rl X3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlz ZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0 aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMjU5LDYg KzEyNzMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJ CQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0 IGluZm8uICovCiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKworCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2Ug VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CkBAIC0xMjgwLDYgKzEyOTcsOSBAQCBhcHBs eV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJcGFyYWxsZWxfYXBwbHlf ZnJlZV93b3JrZXIod2luZm8sIHByZXBhcmVfZGF0YS54aWQpOwogCiAJCQlzdG9yZV9mbHVzaF9w b3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBm bGFnLiAqLworCQkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAog CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgpAQCAtMTY2Myw2ICsxNjgzLDEwIEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJICogc2VyaWFsaXplZCB0byBm aWxlLgogCQkJICovCiAJCQlzZXJpYWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKwor CQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJ CQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CkBAIC0xNjg1LDYgKzE3MDksOSBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCXsKIAkJCQlwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3NldHVwKCk7CiAJCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2lu Zm8sIHhpZCk7CisKKwkJCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCQlzZXRfc3Vi c2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTE4NjMsNiAr MTg5MCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAogCQkJ LyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBp bmZvLiAqLwogCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKKworCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KGZhbHNlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CkBAIC0xODkzLDYgKzE5MjMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQkgKiBzdWJza2lwbHNuLgogCQkJICovCiAJCQljbGVh cl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwkJCS8q IFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxz ZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgpAQCAtMzk2MSwy MCArMzk5NCwyOCBAQCBzdGFydF90YWJsZV9zeW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBv cywgY2hhciAqKm15c2xvdG5hbWUpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBF bWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0 byBhbiBpZGxlCisJCSAqIHN0YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlF bWl0RXJyb3JSZXBvcnQoKTsKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNo RXJyb3JTdGF0ZSgpOworCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRo ZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24gKi8KKwkJcGdzdGF0 X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOwor CiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlw dGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3Jr ZXIgZmFpbGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkgKiB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4g YW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlv bigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24t Pm9pZCwgZmFsc2UpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdf UkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJz Y3JpcHRpb25fcmV0cnkodHJ1ZSk7CisKKwkJcHJvY19leGl0KDApOwogCX0KIAlQR19FTkRfVFJZ KCk7CiAKQEAgLTM5OTksMjAgKzQwNDAsMjcgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmln aW5fc3RhcnRwb3MpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBl cnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxl CisJCSAqIHN0YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JS ZXBvcnQoKTsKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0 ZSgpOworCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIg ZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3Jp cHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQkgIWFtX3RhYmxlc3lu Y193b3JrZXIoKSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlE aXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBS ZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcy4gQWJvcnQgdGhl Ci0JCQkgKiBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMg c2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRy YW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNj cmlwdGlvbi0+b2lkLCAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwkJCURpc2FibGVTdWJzY3Jp cHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOwogCX0KIAlQR19F TkRfVFJZKCk7CiB9CkBAIC00Mjc0LDM5ICs0MzIyLDIwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIH0KIAogLyoKLSAqIEFmdGVyIGVycm9yIHJlY292ZXJ5LCBkaXNhYmxlIHRo ZSBzdWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24KLSAqIGFuZCBleGl0IGNsZWFubHku CisgKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8K IHN0YXRpYyB2b2lkCi1EaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQorRGlzYWJsZVN1 YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCkKIHsKLQkvKgotCSAqIEVtaXQgdGhlIGVycm9yIG1lc3Nh Z2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKLQkgKiBzdGF0 ZQotCSAqLwotCUhPTERfSU5URVJSVVBUUygpOwotCi0JRW1pdEVycm9yUmVwb3J0KCk7Ci0JQWJv cnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JRmx1c2hFcnJvclN0YXRlKCk7Ci0KLQlSRVNVTUVf SU5URVJSVVBUUygpOwotCi0JLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyBlaXRo ZXIgdGFibGUgc3luY2hyb25pemF0aW9uIG9yIGFwcGx5ICovCi0JcGdzdGF0X3JlcG9ydF9zdWJz Y3JpcHRpb25fZXJyb3IoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKLQkJCQkJCQkJCSAhYW1f dGFibGVzeW5jX3dvcmtlcigpKTsKLQogCS8qIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiAqLwog CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJRGlzYWJsZVN1YnNjcmlwdGlvbihNeVN1YnNj cmlwdGlvbi0+b2lkKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGFuZCBleGl0ICovCisJLyogTm90 aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgKi8KIAllcmVwb3J0KExPRywK IAkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBi ZWVuIGRpc2FibGVkIGR1ZSB0byBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5h bWUpKTsKLQotCXByb2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTQ1NzUsMyArNDYwNCw2NyBAQCBn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKQogCWVsc2UKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJ QUxJWkU7CiB9CisKKy8qCisgKiBTZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFs b2cuCisgKgorICogSWYgcmV0cnkgaXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0 IHdpdGggYW4gZXJyb3IuIE90aGVyd2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0 aW9uIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJz Y3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxl CXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdf c3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOwor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAt IGlmIG5vIHN0YXRlIGNoYW5nZSB0aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3Jp cHRpb24tPnJldHJ5ID09IHJldHJ5KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lw IGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dv cmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJ LyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFi bGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRp b25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVM b2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6 ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1l bXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJl dHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5 IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdl dERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBk YXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2Vs ZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJs ZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAwMjZjZjQ2ODI4Li4wNjdkMThjNjEy IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MDcsOCArNDUwNyw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJj aGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vi c2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1w IGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdl ciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5j bHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJl c3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFu dC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9v aWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaAppbmRleCBiOTlkZGRiZWE0Li4wODY0YWQ2NDM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24s NjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cK IAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxk IGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAK Kwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVMVChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMg YXBwbHkgY2hhbmdlIGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFy aWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcg dG8gdGhlIHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVM TDsKQEAgLTEzMSw2ICsxMzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29s CQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBi ZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJ CQkJCQkJCSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUg cHJldmlvdXMgYXBwbHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpj b25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFy CSAgICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFy CSAgICpzeW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtl ciAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggNTQ5ZjU1YjgwYy4u NzQyYmNlMDkxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDUx ICs4LDIyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRo ZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBv cnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17 Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk9IEBfOwotCW15 ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9u IGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9 Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUg cmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4g YmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxl bCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIEludGVy bGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGlt aXQuCiAJbXkgJGluICA9ICcnOwogCW15ICRvdXQgPSAnJzsKIAotCW15ICRvZmZzZXQgPSAwOwot CiAJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpOwogCiAJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAogCQlvbl9lcnJvcl9zdG9w ID0+IDApOwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJw YXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24g d2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRv IGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAg dGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KLQkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSRpbiAuPSBxewogCUJFR0lOOwogCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKQEAgLTc3LDggKzQ4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFy YWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAlt eSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwpAQCAtODksOSArNTgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7CiAKLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSMg SW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBA IC0xMDQsOCArNzAsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSRyZXN1bHQgPQogCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CkBAIC0xMjAsMTYgKzg0 LDExIEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vw b2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgogCSk7CiAKLQkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKIAog CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQog CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKIAkpOwpAQCAtMTQwLDE0ICs5OSw2IEBAIHN1 YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CiAJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotCSMgUmVzZXQgdGhlIGxvZyB2ZXJi b3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5n Iik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9CiB9CiAKICMgQ3JlYXRlIHB1Ymxp c2hlciBub2RlCkBAIC0xOTUsNyArMTQ2LDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1 bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmli ZXInKTsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0yMTgsNyAr MTY5LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAg IG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCBiNTE1NmQ5NzUwLi4yYmViNjgw NjYxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1Ynhh Y3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBs CkBAIC04LDQxICs4LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxv ZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxs eQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxs ZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk9 IEBfOwotCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRy YW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zm c2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3 aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWlu Zz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0K LQlteSAkb2Zmc2V0ID0gMDsKLQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNp ZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0IHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMg V2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBz byBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQki bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCkBAIC03Miw4ICs0Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJ bXkgJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKQEAgLTg2LDEzICs1NSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCQkiREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAt MTQwLDcgKzEwMiw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8Miks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMTYzLDcgKzEyNSw3IEBAICRub2Rl X3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5n IFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCmluZGV4IGYzYzU1NzA0Y2YuLjQzZjljYTMzYjMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04LDI3ICs4LDEyIEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk9IEBfOwotCW15ICRwYXJhbGxlbF9tZXNzYWdlID0g J2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co cXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUg YWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5n IgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBz dHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0 cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgYSBzbWFs bCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCiAJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCkBAIC00MSwyMCArMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAlDT01NSVQ7CiAJfSk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZp ZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28g YnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0J CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkJJ3Bvc3RncmVzJywgcXsKQEAgLTc5LDggKzUwLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAK IAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tf cGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0K IAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00g dGVzdF90YWIiKTsKQEAgLTg4LDkgKzU3LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwogCSk7CiAKLQkjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJl ci0+bG9nZmlsZTsKLQogCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIgRE1MIHRvIGVu c3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0 aGF0CiAJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWlu LgpAQCAtMTEzLDggKzc5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCiAJ KTsKQEAgLTEyOSwxNCArOTMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9Q IENPTFVNTiBmOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwp Ci0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK LQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTg0LDcgKzE0MCw3 IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMjAyLDcgKzE1OCw3IEBAICRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElP TiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJs aXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3Ry ZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKaW5kZXggZjc0NTQyYzJlOS4uNjdjNzc4ZGNmYSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbApA QCAtOCw0MSArOCwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cg dGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkK LSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVs X2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpPSBA XzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9ICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNl dCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hp Y2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNv ZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJlYW1pbmc9 cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0J bXkgJG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZp ZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28g YnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0J CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBsYXJnZSAoc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwogCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKApAQCAtNjgsOCArMzksNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15ICRy ZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKQEAgLTc3LDkgKzQ2LDYg QEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCiAJKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCiAJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKQEAgLTEwMCwxNyArNjYsMTIgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0 ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiAJaXMoJHJlc3VsdCwgcXEoMjUw MHwwKSwKIAkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXInKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgot CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKIAkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTEyNSw4ICs4 Niw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwpAQCAtMTM2LDE0ICs5NSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwog CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19w YXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKLQl9CiB9CiAKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCkBAIC0xOTAs NyArMTQxLDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn cGFyYWxsZWwnCkBAIC0yMDgsNyArMTU5LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcg Zm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVz dF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg MSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFj dF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCmluZGV4IGI2ZjNhNjA2ODIuLjQxZWMxZTg5MTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9y dC5wbApAQCAtOSw0MSArOSwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRo ZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNz ZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3Bh cmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9ICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywg JG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBz YW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJl YW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBf OwotCi0JbXkgJG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K LQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwogCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKApAQCAtNjcsOCArMzgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAog CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQog CW15ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKQEAgLTgzLDE0 ICs1Miw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1Ag Q09MVU1OIGM7CiAJfSk7CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKLQl9CiB9CiAKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCkBAIC0xMzcsNyArOTgsNyBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK QEAgLTE1NSw3ICsxMTYsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWlu Zygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA4Yzcw NDk2OWNlLi5lOGYyMDczNGI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsMTkgKzExLDYgQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAotIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KLXN1YiBjaGVja19wYXJhbGxlbF9sb2cKLXsKLQlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJHN0cmVhbWluZ19tb2RlKT0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYg KCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7Ci0JfQotfQotCiAj IEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQg dG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCiAjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBi b3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKICMgY2FzZXMu CkBAIC0zMiw5ICsxOSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCW15ICgkbm9kZV9BLCAkbm9k ZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAkc3RyZWFtaW5nX21vZGUpID0K IAkgIEBfOwogCi0JbXkgJG9mZnNldF9CID0gMDsKLQlteSAkb2Zmc2V0X0MgPSAwOwotCiAJbXkg JG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCAiCiAJCVNFTEVD VCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCkBAIC03NiwyMyArNjAsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVs Iiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgcHJl cGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0J IyBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7 Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9CLT5yZWxvYWQ7Ci0KLQkJJG5vZGVfQy0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0J CSRub2RlX0MtPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KLQkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOwotCSRvZmZzZXRfQyA9 IC1zICRub2RlX0MtPmxvZ2ZpbGU7Ci0KIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSMgVGhlbiAyUEMgUFJFUEFSRQog CSRub2RlX0EtPnNhZmVfcHNxbCgKQEAgLTEwNiw5ICs3Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWlu ZwogCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CiAJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9C LCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7Ci0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKLQogCSMgY2hlY2sgdGhlIHRyYW5zYWN0 aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKIAlteSAkcmVzdWx0ID0KIAkg ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMTYyLDEwICsxMjYsNiBAQCBzdWIg dGVzdF9zdHJlYW1pbmcKIAkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJv d3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXRfQiA9IC1zICRub2RlX0It PmxvZ2ZpbGU7Ci0JJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKLQogCSMgMlBDIFBS RVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKIAkkbm9kZV9BLT5zYWZl X3BzcWwoCiAJCSdwb3N0Z3JlcycsICIKQEAgLTE4Miw5ICsxNDIsNiBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0It PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUpOwotCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSk7Ci0KIAkjIGNoZWNrIHRoZSB0cmFu c2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCiAJJHJlc3VsdCA9CiAJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTIzMSwxNiArMTg4LDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLQkj IFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQi0+cmVsb2FkOwotCi0JCSRub2Rl X0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdh cm5pbmciKTsKLQkJJG5vZGVfQy0+cmVsb2FkOwotCX0KIH0KIAogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3 b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9z dHJlYW0ucGwKaW5kZXggZmM5Njk5OTcwNi4uYzQ5Y2IxMDYxMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDI3ICs4LDEyIEBAIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk9IEBfOwotCW15ICRwYXJhbGxlbF9t ZXNzYWdlID0gJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1 YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAog CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAkjIFRlc3QgMlBDIFBSRVBBUkUgLyBD T01NSVQgUFJFUEFSRUQuCkBAIC0zOCwyMCArMjMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkj IEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0 aGUgY29tbWl0LgogCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotCSMgSWYgInN0 cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRv IGNoZWNrCi0JIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVH MSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3Np dHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK LQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOwotCiAJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgog CSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02NCw4ICszNSw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKQEAgLTEwMCw5ICs2OSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBx ewpAQCAtMTE0LDggKzgwLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkjIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgogCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAtMTQ4LDkgKzExMiw2IEBAIHN1YiB0 ZXN0X3N0cmVhbWluZwogCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8g Y3Jhc2gvcmVzdGFydC4KIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkn cG9zdGdyZXMnLCBxewogCQlCRUdJTjsKQEAgLTE2NSw4ICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7Ci0KIAkjIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0CiAJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJl ZF90YWInOyIpOwpAQCAtMTk0LDkgKzE1Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpA QCAtMjA4LDggKzE2NCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTI1Miw5ICsyMDYsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQki REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CiAKLQkjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKLQogCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkJJ3Bvc3RncmVzJywgcXsKQEAgLTI2Niw4ICsyMTcsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsK LQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJz Y3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CkBAIC0yOTks MTQgKzI0OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsK IAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNl dCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzc0LDcgKzMxNSw3IEBAIG15ICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMo JHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTM5 Nyw3ICszMzgsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVz dGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9z YWZldHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVs X3NhZmV0eS5wbAppbmRleCA2ZmRiZWEzNmM2Li5hN2JiZjZmZjQ2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5w bApAQCAtODEsNyArODEsOCBAQCBteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAjID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVs YXRpb24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBjb2x1bW4g b24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVwb3J0ZWQgYnkgcGFy YWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwg d29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluCisjIGFwcGx5IHdvcmtl ciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9u IG5vcm1hbCB0YWJsZS4KQEAgLTEwNiw2ICsxMDcsMTAgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZHVwbGljYXRlIGtl eSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaWR4X3RhYjEiLywKKwkkb2Zmc2V0 KTsKKwogIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3 b3Jrcy4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRF WCBpZHhfdGFiMSIpOwogCkBAIC0xMTQsNyArMTE5LDcgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIx Iik7Ci1pcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRy eSBhcHBseScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4K ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0 ZXN0X3RhYjEiKTsKQEAgLTEzNSwxOSArMTQwLDIxIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJn ZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJv cCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJf Yl9wYXJ0aXRpb25faWR4Iik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDAp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiB1bmlxdWUgaW5kZXgnKTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNj cmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5E RVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog IyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBh bGxvd2VkIG9uIHRoZQogIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRl ZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlpbmcg aW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1 Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNrIHRo ZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTE2OCwxNyArMTc1LDYgQEAg Q1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlCiBCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50 ZXN0X3RhYjEKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFi MV91bnNhZmUoKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VS IHRyaV90YWIxX3Vuc2FmZTsKLQotQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3Nh ZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAotICBCRUdJTgotICAgIFJBSVNFIE5PVElDRSAn dGVzdCBmb3Igc2FmZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKLQlSRVRVUk4gTkVXOwotICBFTkQKLVwk XCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKLUFMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3Nh ZmUgSU1NVVRBQkxFOwotQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQotQkVGT1JFIElOU0VS VCBPTiBwdWJsaWMudGVzdF90YWIxCi1GT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJp Z2dlcl9mdW5jX3RhYjFfc2FmZSgpOwogfSk7CiAKICMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgpAQCAtMjAzLDI3ICsxOTksMjUgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgVXNpbmcgdHJpZ2dl ciB3aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIxIEVO QUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKLURST1AgVFJJR0dFUiB0cmlfdGFi MV91bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKLX0pOworJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVl IHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMiIvLAorCSRvZmZzZXQpOworCisj IERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90 YWIyIik7CiAKICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1pcygkcmVz dWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGlt bXV0YWJsZSBleHByZXNzaW9uJyk7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwogCiAj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci1E Uk9QIFRSSUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBUUklH R0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5jdGlvbiB0 cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIx X3NhZmU7CiB9KTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFx ewpAQCAtMjU2LDIxICsyNTAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAog CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmln Z2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3Rf dGFiX3BhcnRpdGlvbiIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB0cmln Z2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3Ry aWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gY29u dGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUu IENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBj YXNlLgorIyBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcg aW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjaworIyBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1 Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNrIHRo ZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTMw OCwxNyArMzAzLDEzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJP UjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1Ymxp Yy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFy YWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0YWJs ZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNFVCBE RUZBVUxUIDEiKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlz KCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZhbHVlJyk7 CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJP UCBDT0xVTU4gYiIpOwpAQCAtMzQ0LDIyICszMzUsMjMgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBE cm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KICMgV2FpdCBmb3Ig dGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29y a2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJl c3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUw MDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZh dWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScpOworCisjIERy b3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxU RVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFp bnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENo ZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbAotIyB3b3JrZXIgaW4gdGhpcyBjYXNl LgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29y a2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4K ICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRo ZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CkBAIC00MDAs MTcgKzM5MiwxMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24s IG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7 Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBx cSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1t dXRhYmxlIGV4cHJlc3Npb24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCkBAIC00MjQsOSArNDEyLDEwIEBAIFRSVU5DQVRFIFRBQkxF IHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVs IHdvcmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3Ry YWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0 aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwK KyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtl ciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAj ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBl eHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTQ1OSwyMyArNDQ4LDE2IEBAICRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90 IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0j IEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFx ewotQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2Fm ZTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUg Q0hFQ0soYSA+PSAwKTsKLX0pOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLSRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1Ag Q09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25z dF90YWIxX3Vuc2FmZSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVz JywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBAIC00OTgsMjEgKzQ4MCwyMiBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0 aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFM VEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29u Iik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK IGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CisKKyMg RHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9Q IENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJ dCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUu IENoZWNrIHRoZSBlcnJvcgotIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBj YXNlLgorIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0 ZXIgcmV0cnlpbmcgaW4gYXBwbHkKKyMgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyBy ZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0 IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCkBAIC01NTMsOCArNTM2 LDEzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh YjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAog CSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFm ayIpOworIyBXYWl0IGZvciBlcnJvciBsb2cgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbnQgZGF0 YSBoYXMgYmVlbiBkZWxldGVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0X3Rh YjEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3RfdGFiMWZrIi8sCisJJG9m ZnNldCk7CisKKyMgSW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJsaXNoZXIsIG5vdyBp dCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01NjIsOSArNTUwLDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkcmVzdWx0ID0K ICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3Jl aWduIGtleScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVz dF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOwogJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBA IC01NzYsNiArNTY1LDcgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKIENS RUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25fZiAoYSBpbnQgcHJpbWFyeSBrZXkpOworSU5T RVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uX2YgU0VMRUNUIGkgIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7CiBBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENP TlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0 ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsKIFNFTEVDVCAnQUxURVIgVEFCTEUgdGVzdF90YWJfcGFy dGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9NIHBn X3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYl9wYXJ0aXRpb24nOjpyZWdjbGFzczo6 b2lkIFxcZ2V4ZWMKIH0pOwpAQCAtNTkxLDE3ICs1ODEsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAot IyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRp dGlvbl9mayIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlv bmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVpZ24ga2V5Jyk7 CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7 CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7Ci0tIAoy LjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v29-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v29-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v29-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=7887; creation-date="Thu, 15 Sep 2022 05:12:00 GMT"; modification-date="Thu, 15 Sep 2022 05:15:24 GMT" Content-Transfer-Encoding: base64 RnJvbSA1MjI1ODMyMjljYjFjNGMzMTVjZTMxZTBmZjcwYWI1MjZjYmZjYWJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyOSA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIs IGlmIHRoaXMgcHJvY2VzcyBpcyBhCmFwcGx5IHBhcmFsbGVsIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKc3luY2hyb25pemF0aW9uIHdv cmtlci4KClRoZSBuZXcgY29sdW1uIGNhbiBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQpwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgYWxz byBzaW1pbGFyIHRvIHRoZSAnbGVhZGVyX3BpZCcgY29sdW1uIGluCnBnX3N0YXRfYWN0aXZpdHku Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjEgKysr KysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAg IHwgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwgMjgg KysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAg ICAgICAgICAgIHwgIDYgKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICsrLQogNSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxZDk1MDlhMmY2Li40NTkxZmZlOTFm IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTMxNzgsMTMgKzMxNzgsMjQgQEAgU0VMRUNUIHBpZCwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3 YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YXBwbHlfbGVhZGVyX3Bp ZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBQcm9jZXNzIElEIG9mIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYSBhcHBseQorICAgICAgIHBhcmFsbGVsIHdvcmtlci4gTlVMTCBp ZiB0aGlzIHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKKyAgICAgICBzeW5j aHJvbml6YXRpb24gd29ya2VyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJh PgogICAgICAgIE9JRCBvZiB0aGUgcmVsYXRpb24gdGhhdCB0aGUgd29ya2VyIGlzIHN5bmNocm9u aXppbmc7IG51bGwgZm9yIHRoZQotICAgICAgIG1haW4gYXBwbHkgd29ya2VyCisgICAgICAgbWFp biBhcHBseSB3b3JrZXIgYW5kIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzE5NCw3ICszMjA1LDcgQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIExhc3Qg d3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlY2VpdmVkLCB0aGUgaW5pdGlhbCB2YWx1ZSBvZgot ICAgICAgIHRoaXMgZmllbGQgYmVpbmcgMAorICAgICAgIHRoaXMgZmllbGQgYmVpbmcgMDsgbnVs bCBmb3IgdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgogCkBAIC0zMjAzLDcgKzMyMTQsOCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50 X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQg aQogICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X21zZ19zZW5kX3RpbWU8L3N0cnVjdGZpZWxkPiA8 dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAg ICA8cGFyYT4KLSAgICAgICBTZW5kIHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g b3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBTZW5kIHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2Vp dmVkIGZyb20gb3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9yIHRoZQorICAgICAgIGFwcGx5IHBh cmFsbGVsIHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjEyLDcgKzMyMjQsOCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIDxzdHJ1Y3Rm aWVsZD5sYXN0X21zZ19yZWNlaXB0X3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAg d2l0aCB0aW1lIHpvbmU8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAg ICBSZWNlaXB0IHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gb3JpZ2luIFdBTCBz ZW5kZXIKKyAgICAgICBSZWNlaXB0IHRpbWUgb2YgbGFzdCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g b3JpZ2luIFdBTCBzZW5kZXI7IG51bGwgZm9yCisgICAgICAgdGhlIGFwcGx5IHBhcmFsbGVsIHdv cmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjRhMDA0OTZlZS4uM2YxNWNmMjRlOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ2LDYgKzk0Niw3IEBAIENSRUFURSBWSUVX IHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAgICBzdS5vaWQgQVMgc3ViaWQsCiAg ICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAgc3QucGlkLAorICAgICAgICAgICAg c3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICAgICAgICAgIHN0LnJlbGlkLAogICAgICAgICAgICAg c3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFzdF9tc2dfc2VuZF90aW1lLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDgzNDRlNDUwOWIu Ljg3MTQyYjM5MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMKQEAgLTEwNDYsNyArMTA0Niw3IEBAIElzTG9naWNhbExhdW5jaGVyKHZvaWQpCiBEYXR1bQog cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0jZGVmaW5lIFBH X1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdfU1RBVF9HRVRfU1VCU0NS SVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxMKDApID8gSW52YWxpZE9p ZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8g PSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBAIC0xMDgwLDI2ICsxMDgw LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNl CiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2Vy X3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJ aWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IDApCiAJCQludWxsc1szXSA9IHRydWU7CiAJ CWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7Ci0JCWlm ICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IEludDMyR2V0RGF0 dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlk KHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVl c1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYg KHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0o d29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJ bnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERh dHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdv cmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3Jr ZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJ CQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdv cmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVl c1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYg KFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRy dWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJl cGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7 CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQll bHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1l KTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5z ZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IGEwN2U3MzdhMzMuLjZiMThmNzc1YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt NTM5Myw5ICs1MzkzLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9u JywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAn dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBl ID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4g J3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24s dGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAot ICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFz dF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRl c3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGlu dDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAor ICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMg PT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24s bGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixs YXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24n IH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tl bmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5k ZXggOWRkMTM3NDE1ZS4uYzY5ZjZlNDcxYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKQEAgLTIwODYsNiArMjA4Niw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1l LAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAog ICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMDkz LDcgKzIwOTQsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJp ZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZS T00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2Ny aXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFz dF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBs YXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9J TiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBp ZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxh c3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04g KChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxF Q1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAot LSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275F145878B4A44586C46CE9E499OS3PR01MB6275jpnp_--