From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 5EFFA43B7E;
	Tue,  5 Mar 2024 05:36:00 +0100 (CET)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id EC7EB40270;
	Tue,  5 Mar 2024 05:35:59 +0100 (CET)
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on2044.outbound.protection.outlook.com [40.107.94.44])
 by mails.dpdk.org (Postfix) with ESMTP id E4D9D4026B
 for <dev@dpdk.org>; Tue,  5 Mar 2024 05:35:57 +0100 (CET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CsUjxYQOHbXFZrprHN/Qsa2t7mlPkZQhRKReZJTrSkXpB9zazrsgTBOmDLA8PewVsjehMUb3ZAi1WyLg9BcnLVCQJP5FJ/L1MQuSYyiEXD9vsHI6y1FJCB2FsLj6gwxn2BIdaRHyIGvM8Px/xFtcAV13gIaXBLDIWMIK3IUndvWOF+vSz/2myJeUwg+zZU6YpOxoyxT8bL2nYWp/6YbiXuR7u/nshcTc4OeLLALCDPXzP1LG/8OoVwn8sLQa21TjWIEFQXPltCcNWOyKd9t00oFUFKa+Zz/E+HexRNd1c2pACc2Qqt0N87vMI7JWRDa5h8CAEp62vp3Dgn98JN8rpQ==
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=3Bn4iBIiDiINqt12Lp8r5DCZBQ9MOKba5XP8mCn95kk=;
 b=imviIBluWonJItMyeLbiWRrPzIby8Cs8+ayahnTEVUKcGSN/F0n19ICZ7CdbErDMAG32sqXm+SHuH+MI8WlL9HX1aNMy5q9VKdl30GOlvsUXaUxXBABK0WhayaZPED0U2/fPD8K4eD2vciFEn7WyNdwGx6sHkusxbXxqA1nbNtJguevu/FZxoEC0167/SdRkk83nA2IzAIsqEG7KM2fZw3htP+ky2C3F/fP0BCVCt7Apt5w8bIem0yvLgSVAMkEHcq8jd4NVmZLxjI5yTgAKe8xpZLnSvmvdV6O6XD+AWVjAFTusMlLVK4RiMlJmlegtncSjq2482NXc6aAHpJNiew==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; 
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3Bn4iBIiDiINqt12Lp8r5DCZBQ9MOKba5XP8mCn95kk=;
 b=yLJzsdOchyF79HiMSyLUEsgm02SLHBbokn1bJYNFTfMQrjTptMywrRM3AKh0xQEtZh5LGa34Pe8afVtkcHI+mLcp8YWoGj+viGJjjDK+bB8v6j+rlam+iCmPs7PA1hfXdsAo3OuRfSagwtBklHnaapz+VX5E/mUoCdGJQrIF0mU=
Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15)
 by IA0PR12MB7749.namprd12.prod.outlook.com (2603:10b6:208:432::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.38; Tue, 5 Mar
 2024 04:35:52 +0000
Received: from CH3PR12MB8233.namprd12.prod.outlook.com
 ([fe80::56c9:d5f3:2cb3:d9f2]) by CH3PR12MB8233.namprd12.prod.outlook.com
 ([fe80::56c9:d5f3:2cb3:d9f2%4]) with mapi id 15.20.7339.035; Tue, 5 Mar 2024
 04:35:52 +0000
From: "Tummala, Sivaprasad" <Sivaprasad.Tummala@amd.com>
To: "lihuisong (C)" <lihuisong@huawei.com>, "david.hunt@intel.com"
 <david.hunt@intel.com>, "anatoly.burakov@intel.com"
 <anatoly.burakov@intel.com>, "jerinj@marvell.com" <jerinj@marvell.com>,
 "radu.nicolau@intel.com" <radu.nicolau@intel.com>, "gakhil@marvell.com"
 <gakhil@marvell.com>, "cristian.dumitrescu@intel.com"
 <cristian.dumitrescu@intel.com>, "Yigit, Ferruh" <Ferruh.Yigit@amd.com>,
 "konstantin.ananyev@huawei.com" <konstantin.ananyev@huawei.com>
CC: "dev@dpdk.org" <dev@dpdk.org>
Subject: RE: [RFC PATCH 1/2] power: refactor core power management library
Thread-Topic: [RFC PATCH 1/2] power: refactor core power management library
Thread-Index: AQHaZBI6NS+s5TJAT0O7RLCnpOLtXbEiQAeAgAA1PvA=
Date: Tue, 5 Mar 2024 04:35:52 +0000
Message-ID: <CH3PR12MB823398A5A19DF302C2DFA01686222@CH3PR12MB8233.namprd12.prod.outlook.com>
References: <20240220153326.6236-1-sivaprasad.tummala@amd.com>
 <20240220153326.6236-3-sivaprasad.tummala@amd.com>
 <6c7c0383-3eb4-049c-fedd-7d66b1b738da@huawei.com>
In-Reply-To: <6c7c0383-3eb4-049c-fedd-7d66b1b738da@huawei.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=2ffe4261-fd27-4d5b-a161-a97a6c8782c4;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-03-01T06:07:14Z;
 MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH3PR12MB8233:EE_|IA0PR12MB7749:EE_
x-ms-office365-filtering-correlation-id: fff4c987-bf9f-4cc0-9126-08dc3ccdbd47
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: g6stv43Io91LUJKjWC/JulCJQzW3hWVWhdpsE7uNh5d0hCQzTX647/Cfolm2Kuw483xiP2QKsVlAZp5hTFP0uXn+VyTFHwyQ4v+6wbTSekSfmNhYUzB0pxaCaFZ/VnM6r/PXABVZmWIKU2F1TAtFqedOBLUxBePvbckzkuZSaUkqGU47H1+Ov3sO0eA/mo4AAzxdQggrDqgUgYH+MZPCX0aItXck0E7WrnwU5MwOtasYJ3bLtdfMzWMqsTPg9b0bbn66kI11cFrmsB5qJtPkg5wPEm9UYFd03qwAPxuEnwcIdd4N0hUyhseEdMzUFmcuAXzFMo42fBW3sNYyJ0SCQnbM9ptQZj5gPGVm1Hl0t/+IvMwRcASeYkXL85944+MrCbJDSs0eA4oEF5FsTEjdfIOOq9Ca5CjvpLizrtUOiSxo+cORZn1GuhFcZO+2Uk8B6B7OUeadFI6a2/qOMZB3RaChAEQbU02EQfZekbhjIbIuBVNoDJmhr8h2XG8ommkFFbPob/StC06p1+j3t+YPPJtRm8tWJKMCITw3z9ttUduNh5ZCdoBUnqbjZrsBE0ED8U4adwgFj81g+FQ/lCDI3qiFV9rFDdTycn26xkrrw+a4ral3fMd54Lo1jr+0sML3VsHodsJi4SC/KKpReCIA+QPuhoMHLbwpU3EsMlKru4L2gnNuuzUGKhalKQJDSMPhczfQ6H8Jg55i93IR80J1CR8IN1+NOSd50A04J/XNZWE=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:CH3PR12MB8233.namprd12.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230031)(376005)(38070700009)(921011); DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VmoydFZ2dnJnWkgxWC9Nd0xVQ1BMdUlGTDlaK1hQUURVeWhvYkRqeE1NdTU1?=
 =?utf-8?B?VzhUYmJQcVdMb1RtR2M2ckZLK2c3amE0ajd1RDZHem1hVzMzRzIyY1VUQUxi?=
 =?utf-8?B?MHdTQlp0TlEwUjJRVzVBZzZGSWl5RFpWb2IyTW0yVzVWTG9KcUYwajVhQU8z?=
 =?utf-8?B?TzNJQi9iY2JGclZQZ2RxTERtZklMREdCd0lTODdTRHMxSXI3SUFmby9FUElL?=
 =?utf-8?B?TUtVbjBhVVM5Z1U5NnNLNnlUK0VFYXF0MGlvbXMvejJCdHM4T0tOU3BaNDUr?=
 =?utf-8?B?T0VpZU5kcEFtanI2cCs5aFZOSXB2UXZUai9yRHJkTTRFQ2JrT1RSMWxNbGVT?=
 =?utf-8?B?bnl4Sk9BYkJEZnoyOFJ0ZUEzdFVscXNMYmtwYWVpUlBzZjM0NTdLRmVka3BS?=
 =?utf-8?B?OUVGZnZQT2ZOSXFUeTB2SndQZlA5YTdpU3JvWGt1akNadWNLdkRSajFSemNG?=
 =?utf-8?B?Z3ZpNEZ2enNiVjlraThGQ3RZb2VqV3J6V3pFaDNFNGllblVBRFJDL0xobEl5?=
 =?utf-8?B?YVc3czFENEh5Rk1qejVzOFJYNExqMU1zWk9NS01BNXNJVHkwWUpxOFVtMnFW?=
 =?utf-8?B?WXNTTHVKTW1wbmZqMVhndjBCZEgvQktUVG82VWRkbXM3RStrdHBEMDNjanl1?=
 =?utf-8?B?Sk52WXVZdzBFVXZYTjFmemdlWCtQc216c3dMc014TFM3Z01TWkRBTEQ2Wlh4?=
 =?utf-8?B?S05lRzE2QzVxbkVhY1BtSGJhVWowRUZqTUtVRHBoSDByYmRzekRrZjBpakZJ?=
 =?utf-8?B?Q2VXYzgyL2lDL2x2dnZOaTNsTGk3bHUwUEFoQ3RBTUZYNEhvZTlBUjk0QkJB?=
 =?utf-8?B?QjhYZE9wWnpsU0o5NCtVV3dEelVpUmI4Zmp3QzlKMnlTVzNxdmlRbnpvS1VK?=
 =?utf-8?B?M1NncDhndWhmaWlpS3NPMlBqTnZWWHlMZXhwTUZYNHVLS2lIWFpxUEJ5b0tK?=
 =?utf-8?B?QU5LN2FvWHRqOTMwSmJZMDFGT25WTTgwaUpieVNtN1dUWDMyT2lVU1NiNXFx?=
 =?utf-8?B?VUtjQjV1c09sUlhLVTFlRTRUTjJpUTZsMVVaTG1XYjdXcmtiUWxaWU9GVFpI?=
 =?utf-8?B?NU9sNFV2YzA4ZnRpajBRN2Y4UWxQcUx4Z0FVSVAwTUNmUDlDV1JTcUxvcGpt?=
 =?utf-8?B?aVlDOHhWeVU0WDVqTGlSSUx5WjBUb0o0SW81VlJxTEQ5bUczS1R6ZHZiTFFS?=
 =?utf-8?B?blRxeWJxdDNmd0NXTU1Qb0hTZWlUS2ovNVdjZGdQcjE5bGlJdG9wWThIeHFo?=
 =?utf-8?B?eHE4NFZIMFJOUEVtNTh2S09ubmw0VzB3b3k5QlR2ZUY1N1AvWkhmMFFEZ01w?=
 =?utf-8?B?Z3BlY0dUUVpkKy8yY3JseEJPWEtEREFTNTZDdTFWVzA4dFdGMnBaekRIUGpq?=
 =?utf-8?B?ejM5RW16SEU2bkZKSzdOK3lWMjVmQ1N5K2NJQW1oWVZOazhkNWJueWNrL0cx?=
 =?utf-8?B?bVlEbTA5R2lta2dqR3BnUlpJMHY5NWVMV3RiNWVRVERhQzgyL211dzlPeWxE?=
 =?utf-8?B?TTJuSzJpTTU0WDNZZHp4Rko0b3RwSnF0YUVXamVudzZhU3ZZSVRNZVZXL3N6?=
 =?utf-8?B?WkI1M2wzSFNVU0cyMHdhQlZBSW5mSEdBWitZMFdrMWFnNUR1S0lqc1BKTkxr?=
 =?utf-8?B?Q2I2WllkbTdrY0s0N0Y4MmMwNitmSHdaNGNGOWR0ZWJITmUrV3lOdVlRWnhL?=
 =?utf-8?B?ZmJpY05CeWh0SFFDL0xDS3RnTjcrckVmUjZmSEk3U3NvUVB1T05NOGpoNDBD?=
 =?utf-8?B?RW5TYXI0aGZXd0VZdEtjZVhoS3haaXBFaE0wNWN3ZHFFSUFLU3VvRHh4ekFt?=
 =?utf-8?B?THNvU0NrVHIyd2hVcEV5dTVHUDZZbFA0NFpuWGtPUGxza3lvTEZEQXlSZmxi?=
 =?utf-8?B?ZlJEcWNBVU5PcC9QMGhMcUxzSG12ZEYzL2NmVCtLWExtbmFvZnBYVUM1eWZm?=
 =?utf-8?B?VW9Rd05uMmRVZzR6dlZ5L2xFL3FMZ09yMC9QaFBoZDVYdlhELzJYWk5jSUN0?=
 =?utf-8?B?bnJFZGJhbThHSjEvS3NnWHo1c0pEQUI0QlV1SUI0dkJSYTZYVXR4alNGNHNG?=
 =?utf-8?B?MSthMlEvckJINXhPRVd1Vyt1aWY2VS9qOER6NXN5ejNVVHA3RDBsaCt0REJU?=
 =?utf-8?Q?/IN8=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH3PR12MB8233.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fff4c987-bf9f-4cc0-9126-08dc3ccdbd47
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Mar 2024 04:35:52.0756 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: p6gvSzPm6kU8KgJGPykafYnJ8lAFHjE4CfAf65t9euYNIpzKyFBN0kkGjv28Fk03XohI9xIYyZns8wNVZzRLUQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7749
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNCkhpIExpaHVpc29uZywNCg0KPiAt
LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaWh1aXNvbmcgKEMpIDxsaWh1aXNv
bmdAaHVhd2VpLmNvbT4NCj4gU2VudDogRnJpZGF5LCBNYXJjaCAxLCAyMDI0IDg6MjcgQU0NCj4g
VG86IFR1bW1hbGEsIFNpdmFwcmFzYWQgPFNpdmFwcmFzYWQuVHVtbWFsYUBhbWQuY29tPjsNCj4g
ZGF2aWQuaHVudEBpbnRlbC5jb207IGFuYXRvbHkuYnVyYWtvdkBpbnRlbC5jb207IGplcmluakBt
YXJ2ZWxsLmNvbTsNCj4gcmFkdS5uaWNvbGF1QGludGVsLmNvbTsgZ2FraGlsQG1hcnZlbGwuY29t
OyBjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbTsgWWlnaXQsDQo+IEZlcnJ1aCA8RmVycnVo
LllpZ2l0QGFtZC5jb20+OyBrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbQ0KPiBDYzogZGV2
QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIDEvMl0gcG93ZXI6IHJlZmFjdG9y
IGNvcmUgcG93ZXIgbWFuYWdlbWVudCBsaWJyYXJ5DQo+DQo+IENhdXRpb246IFRoaXMgbWVzc2Fn
ZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyIGNhdXRpb24N
Cj4gd2hlbiBvcGVuaW5nIGF0dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGlu
Zy4NCj4NCj4NCj4g5ZyoIDIwMjQvMi8yMCAyMzozMywgU2l2YXByYXNhZCBUdW1tYWxhIOWGmemB
kzoNCj4gPiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjb21wcmVoZW5zaXZlIHJlZmFjdG9yIHRv
IHRoZSBjb3JlIHBvd2VyDQo+ID4gbWFuYWdlbWVudCBsaWJyYXJ5LiBUaGUgcHJpbWFyeSBmb2N1
cyBpcyBvbiBpbXByb3ZpbmcgbW9kdWxhcml0eSBhbmQNCj4gPiBvcmdhbml6YXRpb24gYnkgcmVs
b2NhdGluZyBzcGVjaWZpYyBkcml2ZXIgaW1wbGVtZW50YXRpb25zIGZyb20gdGhlDQo+ID4gJ2xp
Yi9wb3dlcicgZGlyZWN0b3J5IHRvIGRlZGljYXRlZCBkaXJlY3RvcmllcyB3aXRoaW4NCj4gPiAn
ZHJpdmVycy9wb3dlci9jb3JlLyonLiBUaGUgYWRqdXN0bWVudCBvZiBtZXNvbi5idWlsZCBmaWxl
cyBlbmFibGVzDQo+ID4gdGhlIHNlbGVjdGl2ZSBhY3RpdmF0aW9uIG9mIGluZGl2aWR1YWwgZHJp
dmVycy4NCj4gPg0KPiA+IFRoZXNlIGNoYW5nZXMgY29udHJpYnV0ZSB0byBhIHNpZ25pZmljYW50
IGVuaGFuY2VtZW50IGluIGNvZGUNCj4gPiBvcmdhbml6YXRpb24sIHByb3ZpZGluZyBhIGNsZWFy
ZXIgc3RydWN0dXJlIGZvciBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiA+IFRoZSByZWZhY3Rv
ciBhaW1zIHRvIGltcHJvdmUgb3ZlcmFsbCBjb2RlIGNsYXJpdHkgYW5kIGJvb3N0DQo+ID4gbWFp
bnRhaW5hYmlsaXR5LiBBZGRpdGlvbmFsbHksIGl0IGVzdGFibGlzaGVzIGEgZm91bmRhdGlvbiBm
b3IgZnV0dXJlDQo+ID4gZGV2ZWxvcG1lbnQsIGFsbG93aW5nIGZvciBtb3JlIGZvY3VzZWQgd29y
ayBvbiBpbmRpdmlkdWFsIGRyaXZlcnMgYW5kDQo+ID4gc2VhbWxlc3MgaW50ZWdyYXRpb24gb2Yg
Zm9ydGhjb21pbmcgZW5oYW5jZW1lbnRzLg0KPg0KPiBHb29kIGpvYi4gKzEgdG8gcmVmYWNvdG9y
Lg0KPg0KPiA8Li4uPg0KPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lc29uLmJ1aWxkIGIv
ZHJpdmVycy9tZXNvbi5idWlsZCBpbmRleA0KPiA+IGYyYmU3MWJjMDUuLmUyOTNjMzk0NWYgMTAw
NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZXNvbi5idWlsZA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVz
b24uYnVpbGQNCj4gPiBAQCAtMjgsNiArMjgsNyBAQCBzdWJkaXJzID0gWw0KPiA+ICAgICAgICAg
ICAnZXZlbnQnLCAgICAgICAgICAjIGRlcGVuZHMgb24gY29tbW9uLCBidXMsIG1lbXBvb2wgYW5k
IG5ldC4NCj4gPiAgICAgICAgICAgJ2Jhc2ViYW5kJywgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1v
biBhbmQgYnVzLg0KPiA+ICAgICAgICAgICAnZ3B1JywgICAgICAgICAgICAjIGRlcGVuZHMgb24g
Y29tbW9uIGFuZCBidXMuDQo+ID4gKyAgICAgICAgJ3Bvd2VyJywgICAgICAgICAgIyBkZXBlbmRz
IG9uIGNvbW1vbiAoaW4gZnV0dXJlKS4NCj4gPiAgIF0NCj4gPg0KPiA+ICAgaWYgbWVzb24uaXNf
Y3Jvc3NfYnVpbGQoKQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL2NvcmUvYWNwaS9t
ZXNvbi5idWlsZA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2FjcGkvbWVzb24uYnVpbGQNCj4g
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQxMGVjOGVlOTQN
Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9wb3dlci9jb3JlL2FjcGkvbWVz
b24uYnVpbGQNCj4gPiBAQCAtMCwwICsxLDggQEANCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRp
ZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0KGMpIDIwMjQgQU1EDQo+ID4gK0xpbWl0ZWQN
Cj4gPiArDQo+ID4gK3NvdXJjZXMgPSBmaWxlcygncG93ZXJfYWNwaV9jcHVmcmVxLmMnKQ0KPiA+
ICsNCj4gPiAraGVhZGVycyA9IGZpbGVzKCdwb3dlcl9hY3BpX2NwdWZyZXEuaCcpDQo+ID4gKw0K
PiA+ICtkZXBzICs9IFsncG93ZXInXQ0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJf
YWNwaV9jcHVmcmVxLmMNCj4gPiBiL2RyaXZlcnMvcG93ZXIvY29yZS9hY3BpL3Bvd2VyX2FjcGlf
Y3B1ZnJlcS5jDQo+ID4gc2ltaWxhcml0eSBpbmRleCA5NSUNCj4gPiByZW5hbWUgZnJvbSBsaWIv
cG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmMgcmVuYW1lIHRvDQo+ID4gZHJpdmVycy9wb3dlci9j
b3JlL2FjcGkvcG93ZXJfYWNwaV9jcHVmcmVxLmMNCj4gVGhpcyBmaWxlIGlzIGluIHBvd2VyIGxp
Yi4NCj4gSG93IGFib3V0IHJlbW92ZSB0aGUgJ3Bvd2VyJyBwcmVmaXggb2YgdGhpcyBmaWxlIG5h
bWU/DQo+IGxpa2UgYWNwaV9jcHVmcmVxLmMsIGNwcGNfY3B1ZnJlcS5jLg0KQUNLDQoNCj4gPiBp
bmRleCBmOGQ5NzhkMDNkLi42OWQ4MGFkMmFlIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9w
b3dlcl9hY3BpX2NwdWZyZXEuYw0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvY29yZS9hY3BpL3Bv
d2VyX2FjcGlfY3B1ZnJlcS5jDQo+ID4gQEAgLTU3NywzICs1NzcsMjIgQEAgaW50IHBvd2VyX2Fj
cGlfZ2V0X2NhcGFiaWxpdGllcyh1bnNpZ25lZCBpbnQNCj4gPiBsY29yZV9pZCwNCj4gPg0KPiA+
ICAgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBydGVf
cG93ZXJfb3BzIGFjcGlfb3BzID0gew0KPiBIb3cgYWJvdXQgdXNlIHRoZSBmb2xsb3dpbmcgc3Ry
dWN0dXJlIG5hbWU/DQo+ICJzdHJ1Y3QgcnRlX3Bvd2VyX2NwdWZyZXFfb3BzIiBvciAic3RydWN0
IHJ0ZV9wb3dlcl9jb3JlX29wcyINCj4gQWZ0ZXIgYWxsLCB3ZSBhbHNvIGhhdmUgb3RoZXIgcG93
ZXIgb3BzLCBsaWtlIHVuY29yZSwgcmlnaHQ/DQpBZ3JlZWQuDQo+ID4gKyAgICAgLmluaXQgPSBw
b3dlcl9hY3BpX2NwdWZyZXFfaW5pdCwNCj4gPiArICAgICAuZXhpdCA9IHBvd2VyX2FjcGlfY3B1
ZnJlcV9leGl0LA0KPiA+ICsgICAgIC5jaGVja19lbnZfc3VwcG9ydCA9IHBvd2VyX2FjcGlfY3B1
ZnJlcV9jaGVja19zdXBwb3J0ZWQsDQo+ID4gKyAgICAgLmdldF9hdmFpbF9mcmVxcyA9IHBvd2Vy
X2FjcGlfY3B1ZnJlcV9mcmVxcywNCj4gPiArICAgICAuZ2V0X2ZyZXEgPSBwb3dlcl9hY3BpX2Nw
dWZyZXFfZ2V0X2ZyZXEsDQo+ID4gKyAgICAgLnNldF9mcmVxID0gcG93ZXJfYWNwaV9jcHVmcmVx
X3NldF9mcmVxLA0KPiA+ICsgICAgIC5mcmVxX2Rvd24gPSBwb3dlcl9hY3BpX2NwdWZyZXFfZnJl
cV9kb3duLA0KPiA+ICsgICAgIC5mcmVxX3VwID0gcG93ZXJfYWNwaV9jcHVmcmVxX2ZyZXFfdXAs
DQo+ID4gKyAgICAgLmZyZXFfbWF4ID0gcG93ZXJfYWNwaV9jcHVmcmVxX2ZyZXFfbWF4LA0KPiA+
ICsgICAgIC5mcmVxX21pbiA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9mcmVxX21pbiwNCj4gPiArICAg
ICAudHVyYm9fc3RhdHVzID0gcG93ZXJfYWNwaV90dXJib19zdGF0dXMsDQo+ID4gKyAgICAgLmVu
YWJsZV90dXJibyA9IHBvd2VyX2FjcGlfZW5hYmxlX3R1cmJvLA0KPiA+ICsgICAgIC5kaXNhYmxl
X3R1cmJvID0gcG93ZXJfYWNwaV9kaXNhYmxlX3R1cmJvLA0KPiA+ICsgICAgIC5nZXRfY2FwcyA9
IHBvd2VyX2FjcGlfZ2V0X2NhcGFiaWxpdGllcyB9Ow0KPiA+ICsNCj4gPiArUlRFX1BPV0VSX1JF
R0lTVEVSX09QUyhhY3BpX29wcyk7DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9wb3dlcl9h
Y3BpX2NwdWZyZXEuaA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2FjcGkvcG93ZXJfYWNwaV9j
cHVmcmVxLmgNCj4gPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUNCj4gPiByZW5hbWUgZnJvbSBsaWIv
cG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmggcmVuYW1lIHRvDQo+ID4gZHJpdmVycy9wb3dlci9j
b3JlL2FjcGkvcG93ZXJfYWNwaV9jcHVmcmVxLmgNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w
b3dlci9jb3JlL2FtZC1wc3RhdGUvbWVzb24uYnVpbGQNCj4gPiBiL2RyaXZlcnMvcG93ZXIvY29y
ZS9hbWQtcHN0YXRlL21lc29uLmJ1aWxkDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp
bmRleCAwMDAwMDAwMDAwLi44ZWM0Yzk2MGY1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi
L2RyaXZlcnMvcG93ZXIvY29yZS9hbWQtcHN0YXRlL21lc29uLmJ1aWxkDQo+ID4gQEAgLTAsMCAr
MSw4IEBADQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENv
cHlyaWdodChjKSAyMDI0IEFNRA0KPiA+ICtMaW1pdGVkDQo+ID4gKw0KPiA+ICtzb3VyY2VzID0g
ZmlsZXMoJ3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5jJykNCj4gPiArDQo+ID4gK2hlYWRlcnMg
PSBmaWxlcygncG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxLmgnKQ0KPiA+ICsNCj4gPiArZGVwcyAr
PSBbJ3Bvd2VyJ10NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3RhdGVf
Y3B1ZnJlcS5jDQo+ID4gYi9kcml2ZXJzL3Bvd2VyL2NvcmUvYW1kLXBzdGF0ZS9wb3dlcl9hbWRf
cHN0YXRlX2NwdWZyZXEuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTUlDQo+ID4gcmVuYW1lIGZy
b20gbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5jDQo+ID4gcmVuYW1lIHRvIGRy
aXZlcnMvcG93ZXIvY29yZS9hbWQtcHN0YXRlL3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5jDQo+
ID4gaW5kZXggMDI4Zjg0NDE2Yi4uOTkzOGRlNzJhNiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvcG93
ZXIvcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2VyL2Nv
cmUvYW1kLXBzdGF0ZS9wb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXEuYw0KPiA+IEBAIC03MDAsMyAr
NzAwLDIyIEBAIHBvd2VyX2FtZF9wc3RhdGVfZ2V0X2NhcGFiaWxpdGllcyh1bnNpZ25lZCBpbnQN
Cj4gPiBsY29yZV9pZCwNCj4gPg0KPiA+ICAgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+ICsN
Cj4gPiArc3RhdGljIHN0cnVjdCBydGVfcG93ZXJfb3BzIGFtZF9wc3RhdGVfb3BzID0gew0KPiA+
ICsgICAgIC5pbml0ID0gcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxX2luaXQsDQo+ID4gKyAgICAg
LmV4aXQgPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfZXhpdCwNCj4gPiArICAgICAuY2hlY2tf
ZW52X3N1cHBvcnQgPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVkLA0K
PiA+ICsgICAgIC5nZXRfYXZhaWxfZnJlcXMgPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfZnJl
cXMsDQo+ID4gKyAgICAgLmdldF9mcmVxID0gcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxX2dldF9m
cmVxLA0KPiA+ICsgICAgIC5zZXRfZnJlcSA9IHBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcV9zZXRf
ZnJlcSwNCj4gPiArICAgICAuZnJlcV9kb3duID0gcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxX2Zy
ZXFfZG93biwNCj4gPiArICAgICAuZnJlcV91cCA9IHBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcV9m
cmVxX3VwLA0KPiA+ICsgICAgIC5mcmVxX21heCA9IHBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcV9m
cmVxX21heCwNCj4gPiArICAgICAuZnJlcV9taW4gPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFf
ZnJlcV9taW4sDQo+ID4gKyAgICAgLnR1cmJvX3N0YXR1cyA9IHBvd2VyX2FtZF9wc3RhdGVfdHVy
Ym9fc3RhdHVzLA0KPiA+ICsgICAgIC5lbmFibGVfdHVyYm8gPSBwb3dlcl9hbWRfcHN0YXRlX2Vu
YWJsZV90dXJibywNCj4gPiArICAgICAuZGlzYWJsZV90dXJibyA9IHBvd2VyX2FtZF9wc3RhdGVf
ZGlzYWJsZV90dXJibywNCj4gPiArICAgICAuZ2V0X2NhcHMgPSBwb3dlcl9hbWRfcHN0YXRlX2dl
dF9jYXBhYmlsaXRpZXMgfTsNCj4gPiArDQo+ID4gK1JURV9QT1dFUl9SRUdJU1RFUl9PUFMoYW1k
X3BzdGF0ZV9vcHMpOw0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJfYW1kX3BzdGF0
ZV9jcHVmcmVxLmgNCj4gPiBiL2RyaXZlcnMvcG93ZXIvY29yZS9hbWQtcHN0YXRlL3Bvd2VyX2Ft
ZF9wc3RhdGVfY3B1ZnJlcS5oDQo+ID4gc2ltaWxhcml0eSBpbmRleCAxMDAlDQo+ID4gcmVuYW1l
IGZyb20gbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5oDQo+ID4gcmVuYW1lIHRv
IGRyaXZlcnMvcG93ZXIvY29yZS9hbWQtcHN0YXRlL3Bvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5o
DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvY29yZS9jcHBjL21lc29uLmJ1aWxkDQo+
ID4gYi9kcml2ZXJzL3Bvd2VyL2NvcmUvY3BwYy9tZXNvbi5idWlsZA0KPiA+IG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDZmM2I5OWJiOA0KPiA+IC0tLSAvZGV2
L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2VyL2NvcmUvY3BwYy9tZXNvbi5idWlsZA0KPiA+
IEBAIC0wLDAgKzEsOCBAQA0KPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgIyBDb3B5cmlnaHQoYykgMjAyNCBBTUQNCj4gPiArTGltaXRlZA0KPiA+ICsNCj4gPiAr
c291cmNlcyA9IGZpbGVzKCdwb3dlcl9jcHBjX2NwdWZyZXEuYycpDQo+ID4gKw0KPiA+ICtoZWFk
ZXJzID0gZmlsZXMoJ3Bvd2VyX2NwcGNfY3B1ZnJlcS5oJykNCj4gPiArDQo+ID4gK2RlcHMgKz0g
Wydwb3dlciddDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9wb3dlcl9jcHBjX2NwdWZyZXEu
Yw0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2NwcGMvcG93ZXJfY3BwY19jcHVmcmVxLmMNCj4g
PiBzaW1pbGFyaXR5IGluZGV4IDk2JQ0KPiA+IHJlbmFtZSBmcm9tIGxpYi9wb3dlci9wb3dlcl9j
cHBjX2NwdWZyZXEuYyByZW5hbWUgdG8NCj4gPiBkcml2ZXJzL3Bvd2VyL2NvcmUvY3BwYy9wb3dl
cl9jcHBjX2NwdWZyZXEuYw0KPiA+IGluZGV4IDNkZGYzOWJkNzYuLjYwNWY2MzMzMDkgMTAwNjQ0
DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3Bvd2VyX2NwcGNfY3B1ZnJlcS5jDQo+ID4gKysrIGIvZHJp
dmVycy9wb3dlci9jb3JlL2NwcGMvcG93ZXJfY3BwY19jcHVmcmVxLmMNCj4gPiBAQCAtNjg1LDMg
KzY4NSwyMiBAQCBwb3dlcl9jcHBjX2dldF9jYXBhYmlsaXRpZXModW5zaWduZWQgaW50DQo+ID4g
bGNvcmVfaWQsDQo+ID4NCj4gPiAgICAgICByZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiArDQo+ID4g
K3N0YXRpYyBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyBjcHBjX29wcyA9IHsNCj4gPiArICAgICAuaW5p
dCA9IHBvd2VyX2NwcGNfY3B1ZnJlcV9pbml0LA0KPiA+ICsgICAgIC5leGl0ID0gcG93ZXJfY3Bw
Y19jcHVmcmVxX2V4aXQsDQo+ID4gKyAgICAgLmNoZWNrX2Vudl9zdXBwb3J0ID0gcG93ZXJfY3Bw
Y19jcHVmcmVxX2NoZWNrX3N1cHBvcnRlZCwNCj4gPiArICAgICAuZ2V0X2F2YWlsX2ZyZXFzID0g
cG93ZXJfY3BwY19jcHVmcmVxX2ZyZXFzLA0KPiA+ICsgICAgIC5nZXRfZnJlcSA9IHBvd2VyX2Nw
cGNfY3B1ZnJlcV9nZXRfZnJlcSwNCj4gPiArICAgICAuc2V0X2ZyZXEgPSBwb3dlcl9jcHBjX2Nw
dWZyZXFfc2V0X2ZyZXEsDQo+ID4gKyAgICAgLmZyZXFfZG93biA9IHBvd2VyX2NwcGNfY3B1ZnJl
cV9mcmVxX2Rvd24sDQo+ID4gKyAgICAgLmZyZXFfdXAgPSBwb3dlcl9jcHBjX2NwdWZyZXFfZnJl
cV91cCwNCj4gPiArICAgICAuZnJlcV9tYXggPSBwb3dlcl9jcHBjX2NwdWZyZXFfZnJlcV9tYXgs
DQo+ID4gKyAgICAgLmZyZXFfbWluID0gcG93ZXJfY3BwY19jcHVmcmVxX2ZyZXFfbWluLA0KPiA+
ICsgICAgIC50dXJib19zdGF0dXMgPSBwb3dlcl9jcHBjX3R1cmJvX3N0YXR1cywNCj4gPiArICAg
ICAuZW5hYmxlX3R1cmJvID0gcG93ZXJfY3BwY19lbmFibGVfdHVyYm8sDQo+ID4gKyAgICAgLmRp
c2FibGVfdHVyYm8gPSBwb3dlcl9jcHBjX2Rpc2FibGVfdHVyYm8sDQo+ID4gKyAgICAgLmdldF9j
YXBzID0gcG93ZXJfY3BwY19nZXRfY2FwYWJpbGl0aWVzIH07DQo+ID4gKw0KPiA+ICtSVEVfUE9X
RVJfUkVHSVNURVJfT1BTKGNwcGNfb3BzKTsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL3Bv
d2VyX2NwcGNfY3B1ZnJlcS5oDQo+ID4gYi9kcml2ZXJzL3Bvd2VyL2NvcmUvY3BwYy9wb3dlcl9j
cHBjX2NwdWZyZXEuaA0KPiA+IHNpbWlsYXJpdHkgaW5kZXggMTAwJQ0KPiA+IHJlbmFtZSBmcm9t
IGxpYi9wb3dlci9wb3dlcl9jcHBjX2NwdWZyZXEuaCByZW5hbWUgdG8NCj4gPiBkcml2ZXJzL3Bv
d2VyL2NvcmUvY3BwYy9wb3dlcl9jcHBjX2NwdWZyZXEuaA0KPiA+IGRpZmYgLS1naXQgYS9saWIv
cG93ZXIvZ3Vlc3RfY2hhbm5lbC5jDQo+ID4gYi9kcml2ZXJzL3Bvd2VyL2NvcmUva3ZtLXZtL2d1
ZXN0X2NoYW5uZWwuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggMTAwJQ0KPiA+IHJlbmFtZSBmcm9t
IGxpYi9wb3dlci9ndWVzdF9jaGFubmVsLmMNCj4gPiByZW5hbWUgdG8gZHJpdmVycy9wb3dlci9j
b3JlL2t2bS12bS9ndWVzdF9jaGFubmVsLmMNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL2d1
ZXN0X2NoYW5uZWwuaA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2t2bS12bS9ndWVzdF9jaGFu
bmVsLmgNCj4gPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUNCj4gPiByZW5hbWUgZnJvbSBsaWIvcG93
ZXIvZ3Vlc3RfY2hhbm5lbC5oDQo+ID4gcmVuYW1lIHRvIGRyaXZlcnMvcG93ZXIvY29yZS9rdm0t
dm0vZ3Vlc3RfY2hhbm5lbC5oDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvY29yZS9r
dm0tdm0vbWVzb24uYnVpbGQNCj4gPiBiL2RyaXZlcnMvcG93ZXIvY29yZS9rdm0tdm0vbWVzb24u
YnVpbGQNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjMx
NTBjNjY3NGINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9wb3dlci9jb3Jl
L2t2bS12bS9tZXNvbi5idWlsZA0KPiA+IEBAIC0wLDAgKzEsMjAgQEANCj4gPiArIyBTUERYLUxp
Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0KEMpIDIwMjQgQU1EDQo+
ID4gK0xpbWl0ZWQuDQo+ID4gKyMNCj4gPiArDQo+ID4gK2lmIG5vdCBpc19saW51eA0KPiA+ICsg
ICAgYnVpbGQgPSBmYWxzZQ0KPiA+ICsgICAgcmVhc29uID0gJ29ubHkgc3VwcG9ydGVkIG9uIExp
bnV4Jw0KPiA+ICsgICAgc3ViZGlyX2RvbmUoKQ0KPiA+ICtlbmRpZg0KPiA+ICsNCj4gPiArc291
cmNlcyA9IGZpbGVzKA0KPiA+ICsgICAgICAgICdndWVzdF9jaGFubmVsLmMnLA0KPiA+ICsgICAg
ICAgICdwb3dlcl9rdm1fdm0uYycsDQo+ID4gKykNCj4gPiArDQo+ID4gK2hlYWRlcnMgPSBmaWxl
cygNCj4gPiArICAgICAgICAnZ3Vlc3RfY2hhbm5lbC5oJywNCj4gPiArICAgICAgICAncG93ZXJf
a3ZtX3ZtLmgnLA0KPiA+ICspDQo+ID4gK2RlcHMgKz0gWydwb3dlciddDQo+ID4gZGlmZiAtLWdp
dCBhL2xpYi9wb3dlci9wb3dlcl9rdm1fdm0uYw0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL2t2
bS12bS9wb3dlcl9rdm1fdm0uYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggODMlDQo+ID4gcmVuYW1l
IGZyb20gbGliL3Bvd2VyL3Bvd2VyX2t2bV92bS5jDQo+ID4gcmVuYW1lIHRvIGRyaXZlcnMvcG93
ZXIvY29yZS9rdm0tdm0vcG93ZXJfa3ZtX3ZtLmMNCj4gPiBpbmRleCBmMTViZThmYWM1Li5hNWQ2
OTg0ZDI2IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9rdm1fdm0uYw0KPiA+ICsr
KyBiL2RyaXZlcnMvcG93ZXIvY29yZS9rdm0tdm0vcG93ZXJfa3ZtX3ZtLmMNCj4gPiBAQCAtMTM3
LDMgKzEzNywyMiBAQCBpbnQgcG93ZXJfa3ZtX3ZtX2dldF9jYXBhYmlsaXRpZXMoX19ydGVfdW51
c2VkDQo+IHVuc2lnbmVkIGludCBsY29yZV9pZCwNCj4gPiAgICAgICBQT1dFUl9MT0coRVJSLCAi
cnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXMgaXMgbm90IGltcGxlbWVudGVkIGZvciBWaXJ0dWFs
DQo+IE1hY2hpbmUgUG93ZXIgTWFuYWdlbWVudCIpOw0KPiA+ICAgICAgIHJldHVybiAtRU5PVFNV
UDsNCj4gPiAgIH0NCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyBrdm1f
dm1fb3BzID0gew0KPiA+ICsgICAgIC5pbml0ID0gcG93ZXJfa3ZtX3ZtX2luaXQsDQo+ID4gKyAg
ICAgLmV4aXQgPSBwb3dlcl9rdm1fdm1fZXhpdCwNCj4gPiArICAgICAuY2hlY2tfZW52X3N1cHBv
cnQgPSBwb3dlcl9rdm1fdm1fY2hlY2tfc3VwcG9ydGVkLA0KPiA+ICsgICAgIC5nZXRfYXZhaWxf
ZnJlcXMgPSBwb3dlcl9rdm1fdm1fZnJlcXMsDQo+ID4gKyAgICAgLmdldF9mcmVxID0gcG93ZXJf
a3ZtX3ZtX2dldF9mcmVxLA0KPiA+ICsgICAgIC5zZXRfZnJlcSA9IHBvd2VyX2t2bV92bV9zZXRf
ZnJlcSwNCj4gPiArICAgICAuZnJlcV9kb3duID0gcG93ZXJfa3ZtX3ZtX2ZyZXFfZG93biwNCj4g
PiArICAgICAuZnJlcV91cCA9IHBvd2VyX2t2bV92bV9mcmVxX3VwLA0KPiA+ICsgICAgIC5mcmVx
X21heCA9IHBvd2VyX2t2bV92bV9mcmVxX21heCwNCj4gPiArICAgICAuZnJlcV9taW4gPSBwb3dl
cl9rdm1fdm1fZnJlcV9taW4sDQo+ID4gKyAgICAgLnR1cmJvX3N0YXR1cyA9IHBvd2VyX2t2bV92
bV90dXJib19zdGF0dXMsDQo+ID4gKyAgICAgLmVuYWJsZV90dXJibyA9IHBvd2VyX2t2bV92bV9l
bmFibGVfdHVyYm8sDQo+ID4gKyAgICAgLmRpc2FibGVfdHVyYm8gPSBwb3dlcl9rdm1fdm1fZGlz
YWJsZV90dXJibywNCj4gPiArICAgICAuZ2V0X2NhcHMgPSBwb3dlcl9rdm1fdm1fZ2V0X2NhcGFi
aWxpdGllcyB9Ow0KPiA+ICsNCj4gPiArUlRFX1BPV0VSX1JFR0lTVEVSX09QUyhrdm1fdm1fb3Bz
KTsNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL3Bvd2VyX2t2bV92bS5oDQo+ID4gYi9kcml2
ZXJzL3Bvd2VyL2NvcmUva3ZtLXZtL3Bvd2VyX2t2bV92bS5oDQo+ID4gc2ltaWxhcml0eSBpbmRl
eCAxMDAlDQo+ID4gcmVuYW1lIGZyb20gbGliL3Bvd2VyL3Bvd2VyX2t2bV92bS5oDQo+ID4gcmVu
YW1lIHRvIGRyaXZlcnMvcG93ZXIvY29yZS9rdm0tdm0vcG93ZXJfa3ZtX3ZtLmgNCj4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9wb3dlci9jb3JlL21lc29uLmJ1aWxkDQo+ID4gYi9kcml2ZXJzL3Bv
d2VyL2NvcmUvbWVzb24uYnVpbGQgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAw
MDAwMDAwLi40MDgxZGFmYWEwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMv
cG93ZXIvY29yZS9tZXNvbi5idWlsZA0KPiA+IEBAIC0wLDAgKzEsMTIgQEANCj4gPiArIyBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0KGMpIDIwMjQgQU1E
DQo+ID4gK0xpbWl0ZWQNCj4gPiArDQo+ID4gK2RyaXZlcnMgPSBbDQo+ID4gKyAgICAgICAgJ2Fj
cGknLA0KPiA+ICsgICAgICAgICdhbWQtcHN0YXRlJywNCj4gPiArICAgICAgICAnY3BwYycsDQo+
ID4gKyAgICAgICAgJ2t2bS12bScsDQo+ID4gKyAgICAgICAgJ3BzdGF0ZScNCj4gPiArXQ0KPiA+
ICsNCj4gPiArc3RkX2RlcHMgPSBbJ3Bvd2VyJ10NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w
b3dlci9jb3JlL3BzdGF0ZS9tZXNvbi5idWlsZA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL3Bz
dGF0ZS9tZXNvbi5idWlsZA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw
MDAwMDAwMC4uMTAyNWM2NGU0OA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJz
L3Bvd2VyL2NvcmUvcHN0YXRlL21lc29uLmJ1aWxkDQo+ID4gQEAgLTAsMCArMSw4IEBADQo+ID4g
KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodChjKSAy
MDI0IEFNRA0KPiA+ICtMaW1pdGVkDQo+ID4gKw0KPiA+ICtzb3VyY2VzID0gZmlsZXMoJ3Bvd2Vy
X3BzdGF0ZV9jcHVmcmVxLmMnKQ0KPiA+ICsNCj4gPiAraGVhZGVycyA9IGZpbGVzKCdwb3dlcl9w
c3RhdGVfY3B1ZnJlcS5oJykNCj4gPiArDQo+ID4gK2RlcHMgKz0gWydwb3dlciddDQo+ID4gZGlm
ZiAtLWdpdCBhL2xpYi9wb3dlci9wb3dlcl9wc3RhdGVfY3B1ZnJlcS5jDQo+ID4gYi9kcml2ZXJz
L3Bvd2VyL2NvcmUvcHN0YXRlL3Bvd2VyX3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiBzaW1pbGFyaXR5
IGluZGV4IDk2JQ0KPiA+IHJlbmFtZSBmcm9tIGxpYi9wb3dlci9wb3dlcl9wc3RhdGVfY3B1ZnJl
cS5jIHJlbmFtZSB0bw0KPiA+IGRyaXZlcnMvcG93ZXIvY29yZS9wc3RhdGUvcG93ZXJfcHN0YXRl
X2NwdWZyZXEuYw0KPiA+IGluZGV4IDczMTM4ZGM0ZTQuLmQ0YzM2NDVmZjggMTAwNjQ0DQo+ID4g
LS0tIGEvbGliL3Bvd2VyL3Bvd2VyX3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiArKysgYi9kcml2ZXJz
L3Bvd2VyL2NvcmUvcHN0YXRlL3Bvd2VyX3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiBAQCAtODg4LDMg
Kzg4OCwyMiBAQCBpbnQgcG93ZXJfcHN0YXRlX2dldF9jYXBhYmlsaXRpZXModW5zaWduZWQgaW50
DQo+ID4gbGNvcmVfaWQsDQo+ID4NCj4gPiAgICAgICByZXR1cm4gMDsNCj4gPiAgIH0NCj4gPiAr
DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyBwc3RhdGVfb3BzID0gew0KPiA+ICsg
ICAgIC5pbml0ID0gcG93ZXJfcHN0YXRlX2NwdWZyZXFfaW5pdCwNCj4gPiArICAgICAuZXhpdCA9
IHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2V4aXQsDQo+ID4gKyAgICAgLmNoZWNrX2Vudl9zdXBwb3J0
ID0gcG93ZXJfcHN0YXRlX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVkLA0KPiA+ICsgICAgIC5nZXRf
YXZhaWxfZnJlcXMgPSBwb3dlcl9wc3RhdGVfY3B1ZnJlcV9mcmVxcywNCj4gPiArICAgICAuZ2V0
X2ZyZXEgPSBwb3dlcl9wc3RhdGVfY3B1ZnJlcV9nZXRfZnJlcSwNCj4gPiArICAgICAuc2V0X2Zy
ZXEgPSBwb3dlcl9wc3RhdGVfY3B1ZnJlcV9zZXRfZnJlcSwNCj4gPiArICAgICAuZnJlcV9kb3du
ID0gcG93ZXJfcHN0YXRlX2NwdWZyZXFfZnJlcV9kb3duLA0KPiA+ICsgICAgIC5mcmVxX3VwID0g
cG93ZXJfcHN0YXRlX2NwdWZyZXFfZnJlcV91cCwNCj4gPiArICAgICAuZnJlcV9tYXggPSBwb3dl
cl9wc3RhdGVfY3B1ZnJlcV9mcmVxX21heCwNCj4gPiArICAgICAuZnJlcV9taW4gPSBwb3dlcl9w
c3RhdGVfY3B1ZnJlcV9mcmVxX21pbiwNCj4gPiArICAgICAudHVyYm9fc3RhdHVzID0gcG93ZXJf
cHN0YXRlX3R1cmJvX3N0YXR1cywNCj4gPiArICAgICAuZW5hYmxlX3R1cmJvID0gcG93ZXJfcHN0
YXRlX2VuYWJsZV90dXJibywNCj4gPiArICAgICAuZGlzYWJsZV90dXJibyA9IHBvd2VyX3BzdGF0
ZV9kaXNhYmxlX3R1cmJvLA0KPiA+ICsgICAgIC5nZXRfY2FwcyA9IHBvd2VyX3BzdGF0ZV9nZXRf
Y2FwYWJpbGl0aWVzIH07DQo+ID4gKw0KPiA+ICtSVEVfUE9XRVJfUkVHSVNURVJfT1BTKHBzdGF0
ZV9vcHMpOw0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEu
aA0KPiA+IGIvZHJpdmVycy9wb3dlci9jb3JlL3BzdGF0ZS9wb3dlcl9wc3RhdGVfY3B1ZnJlcS5o
DQo+ID4gc2ltaWxhcml0eSBpbmRleCAxMDAlDQo+ID4gcmVuYW1lIGZyb20gbGliL3Bvd2VyL3Bv
d2VyX3BzdGF0ZV9jcHVmcmVxLmggcmVuYW1lIHRvDQo+ID4gZHJpdmVycy9wb3dlci9jb3JlL3Bz
dGF0ZS9wb3dlcl9wc3RhdGVfY3B1ZnJlcS5oDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93
ZXIvbWVzb24uYnVpbGQgYi9kcml2ZXJzL3Bvd2VyL21lc29uLmJ1aWxkIG5ldw0KPiA+IGZpbGUg
bW9kZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMC4uN2Q5MDM0YzdhYw0KPiA+IC0tLSAvZGV2L251
bGwNCj4gPiArKysgYi9kcml2ZXJzL3Bvd2VyL21lc29uLmJ1aWxkDQo+ID4gQEAgLTAsMCArMSw4
IEBADQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAjIENvcHly
aWdodChjKSAyMDI0IEFNRA0KPiA+ICtMaW1pdGVkDQo+ID4gKw0KPiA+ICtkcml2ZXJzID0gWw0K
PiA+ICsgICAgICAgICdjb3JlJywNCj4gPiArXQ0KPiA+ICsNCj4gPiArc3RkX2RlcHMgPSBbJ3Bv
d2VyJ10NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL3Bvd2VyL21lc29uLmJ1aWxkIGIvbGliL3Bvd2Vy
L21lc29uLmJ1aWxkIGluZGV4DQo+ID4gYjg0MjY1ODliMi4uMjA3ZDk2ZDg3NyAxMDA2NDQNCj4g
PiAtLS0gYS9saWIvcG93ZXIvbWVzb24uYnVpbGQNCj4gPiArKysgYi9saWIvcG93ZXIvbWVzb24u
YnVpbGQNCj4gPiBAQCAtMTIsMTQgKzEyLDggQEAgaWYgbm90IGlzX2xpbnV4DQo+ID4gICAgICAg
cmVhc29uID0gJ29ubHkgc3VwcG9ydGVkIG9uIExpbnV4Jw0KPiA+ICAgZW5kaWYNCj4gPiAgIHNv
dXJjZXMgPSBmaWxlcygNCj4gPiAtICAgICAgICAnZ3Vlc3RfY2hhbm5lbC5jJywNCj4gPiAtICAg
ICAgICAncG93ZXJfYWNwaV9jcHVmcmVxLmMnLA0KPiA+IC0gICAgICAgICdwb3dlcl9hbWRfcHN0
YXRlX2NwdWZyZXEuYycsDQo+ID4gICAgICAgICAgICdwb3dlcl9jb21tb24uYycsDQo+ID4gLSAg
ICAgICAgJ3Bvd2VyX2NwcGNfY3B1ZnJlcS5jJywNCj4gPiAtICAgICAgICAncG93ZXJfa3ZtX3Zt
LmMnLA0KPiA+ICAgICAgICAgICAncG93ZXJfaW50ZWxfdW5jb3JlLmMnLA0KPiA+IC0gICAgICAg
ICdwb3dlcl9wc3RhdGVfY3B1ZnJlcS5jJywNCj4gPiAgICAgICAgICAgJ3J0ZV9wb3dlci5jJywN
Cj4gPiAgICAgICAgICAgJ3J0ZV9wb3dlcl91bmNvcmUuYycsDQo+ID4gICAgICAgICAgICdydGVf
cG93ZXJfcG1kX21nbXQuYycsDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9wb3dlcl9jb21t
b24uaCBiL2xpYi9wb3dlci9wb3dlcl9jb21tb24uaCBpbmRleA0KPiA+IDMwOTY2NDAwYmEuLmM5
MGI2MTFmNGYgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3Bvd2VyX2NvbW1vbi5oDQo+ID4g
KysrIGIvbGliL3Bvd2VyL3Bvd2VyX2NvbW1vbi5oDQo+ID4gQEAgLTIzLDEzICsyMywyNCBAQCBl
eHRlcm4gaW50IHBvd2VyX2xvZ3R5cGU7DQo+ID4gICAjZW5kaWYNCj4gPg0KPiA+ICAgLyogY2hl
Y2sgaWYgc2NhbGluZyBkcml2ZXIgbWF0Y2hlcyBvbmUgd2Ugd2FudCAqLw0KPiA+ICtfX3J0ZV9p
bnRlcm5hbA0KPiA+ICAgaW50IGNwdWZyZXFfY2hlY2tfc2NhbGluZ19kcml2ZXIoY29uc3QgY2hh
ciAqZHJpdmVyKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcG93ZXJf
c2V0X2dvdmVybm9yKHVuc2lnbmVkIGludCBsY29yZV9pZCwgY29uc3QgY2hhciAqbmV3X2dvdmVy
bm9yLA0KPiA+ICAgICAgICAgICAgICAgY2hhciAqb3JpZ19nb3Zlcm5vciwgc2l6ZV90IG9yaWdf
Z292ZXJub3JfbGVuKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgb3Bl
bl9jb3JlX3N5c2ZzX2ZpbGUoRklMRSAqKmYsIGNvbnN0IGNoYXIgKm1vZGUsIGNvbnN0IGNoYXIg
KmZvcm1hdCwgLi4uKQ0KPiA+ICAgICAgICAgICAgICAgX19ydGVfZm9ybWF0X3ByaW50ZigzLCA0
KTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcmVhZF9jb3JlX3N5c2Zz
X3UzMihGSUxFICpmLCB1aW50MzJfdCAqdmFsKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFs
DQo+ID4gICBpbnQgcmVhZF9jb3JlX3N5c2ZzX3MoRklMRSAqZiwgY2hhciAqYnVmLCB1bnNpZ25l
ZCBpbnQgbGVuKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgd3JpdGVf
Y29yZV9zeXNmc19zKEZJTEUgKmYsIGNvbnN0IGNoYXIgKnN0cik7DQo+ID4NCj4gPiAgICNlbmRp
ZiAvKiBfUE9XRVJfQ09NTU9OX0hfICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVf
cG93ZXIuYyBiL2xpYi9wb3dlci9ydGVfcG93ZXIuYyBpbmRleA0KPiA+IDM2YzNmM2RhOTguLjcw
MTc2ODA3ZjQgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3J0ZV9wb3dlci5jDQo+ID4gKysr
IGIvbGliL3Bvd2VyL3J0ZV9wb3dlci5jDQo+ID4gQEAgLTgsNjQgKzgsODAgQEANCj4gPiAgICNp
bmNsdWRlIDxydGVfc3BpbmxvY2suaD4NCj4gPg0KPiA+ICAgI2luY2x1ZGUgInJ0ZV9wb3dlci5o
Ig0KPiA+IC0jaW5jbHVkZSAicG93ZXJfYWNwaV9jcHVmcmVxLmgiDQo+ID4gLSNpbmNsdWRlICJw
b3dlcl9jcHBjX2NwdWZyZXEuaCINCj4gPiAgICNpbmNsdWRlICJwb3dlcl9jb21tb24uaCINCj4g
PiAtI2luY2x1ZGUgInBvd2VyX2t2bV92bS5oIg0KPiA+IC0jaW5jbHVkZSAicG93ZXJfcHN0YXRl
X2NwdWZyZXEuaCINCj4gPiAtI2luY2x1ZGUgInBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcS5oIg0K
PiA+DQo+ID4gICBlbnVtIHBvd2VyX21hbmFnZW1lbnRfZW52IGdsb2JhbF9kZWZhdWx0X2VudiA9
IFBNX0VOVl9OT1RfU0VUOw0KPiB1c2UgYSBwb2ludGVyIHRvIHNhdmUgdGhlIGN1cnJlbnQgcG93
ZXIgY3B1ZnJlcSBvcHM/DQpBQ0sNCg0KPiA+DQo+ID4gICBzdGF0aWMgcnRlX3NwaW5sb2NrX3Qg
Z2xvYmFsX2Vudl9jZmdfbG9jayA9DQo+ID4gUlRFX1NQSU5MT0NLX0lOSVRJQUxJWkVSOw0KPiA+
ICtzdGF0aWMgc3RydWN0IHJ0ZV9wb3dlcl9vcHMgcnRlX3Bvd2VyX29wc1tQTV9FTlZfTUFYXTsN
Cj4gPg0KPiA+IC0vKiBmdW5jdGlvbiBwb2ludGVycyAqLw0KPiA+IC1ydGVfcG93ZXJfZnJlcXNf
dCBydGVfcG93ZXJfZnJlcXMgID0gTlVMTDsgLXJ0ZV9wb3dlcl9nZXRfZnJlcV90DQo+ID4gcnRl
X3Bvd2VyX2dldF9mcmVxID0gTlVMTDsgLXJ0ZV9wb3dlcl9zZXRfZnJlcV90IHJ0ZV9wb3dlcl9z
ZXRfZnJlcSA9DQo+ID4gTlVMTDsgLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9m
cmVxX3VwID0gTlVMTDsNCj4gPiAtcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bvd2VyX2Zy
ZXFfZG93biA9IE5VTEw7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9m
cmVxX21heCA9IE5VTEw7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9m
cmVxX21pbiA9IE5VTEw7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl90
dXJib19zdGF0dXM7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9mcmVx
X2VuYWJsZV90dXJibzsNCj4gPiAtcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bvd2VyX2Zy
ZXFfZGlzYWJsZV90dXJibzsNCj4gPiAtcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXNfdCBydGVf
cG93ZXJfZ2V0X2NhcGFiaWxpdGllczsNCj4gPiAtDQo+ID4gLXN0YXRpYyB2b2lkDQo+ID4gLXJl
c2V0X3Bvd2VyX2Z1bmN0aW9uX3B0cnModm9pZCkNCj4gPiArLyogcmVnaXN0ZXIgdGhlIG9wcyBz
dHJ1Y3QgaW4gcnRlX3Bvd2VyX29wcywgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8NCj4gPiAraW50
IHJ0ZV9wb3dlcl9yZWdpc3Rlcl9vcHMoY29uc3Qgc3RydWN0IHJ0ZV9wb3dlcl9vcHMgKm9wKSB7
DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9vcHMgKm9wczsNCj4gPiArDQo+ID4gKyAgICAg
aWYgKG9wLT5lbnYgPj0gUE1fRU5WX01BWCkgew0KPiA+ICsgICAgICAgICAgICAgUE9XRVJfTE9H
KEVSUiwgIlVuc3VwcG9ydGVkIHBvd2VyIG1hbmFnZW1lbnQgZW52aXJvbm1lbnRcbiIpOw0KPiA+
ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr
ICAgICBpZiAob3AtPnN0YXR1cyAhPSAwKSB7DQo+ID4gKyAgICAgICAgICAgICBQT1dFUl9MT0co
RVJSLCAiUG93ZXIgbWFuYWdlbWVudCBlbnZbJWRdIG9wcyByZWdpc3RlcmVkDQo+IGFscmVhZHlc
biIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIG9wLT5lbnYpOw0KPiA+ICsgICAgICAgICAg
ICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBpZiAoIW9w
LT5pbml0IHx8ICFvcC0+ZXhpdCB8fCAhb3AtPmNoZWNrX2Vudl9zdXBwb3J0IHx8DQo+ID4gKyAg
ICAgICAgICAgICAhb3AtPmdldF9hdmFpbF9mcmVxcyB8fCAhb3AtPmdldF9mcmVxIHx8ICFvcC0+
c2V0X2ZyZXEgfHwNCj4gPiArICAgICAgICAgICAgICFvcC0+ZnJlcV91cCB8fCAhb3AtPmZyZXFf
ZG93biB8fCAhb3AtPmZyZXFfbWF4IHx8DQo+ID4gKyAgICAgICAgICAgICAhb3AtPmZyZXFfbWlu
IHx8ICFvcC0+dHVyYm9fc3RhdHVzIHx8ICFvcC0+ZW5hYmxlX3R1cmJvIHx8DQo+ID4gKyAgICAg
ICAgICAgICAhb3AtPmRpc2FibGVfdHVyYm8gfHwgIW9wLT5nZXRfY2Fwcykgew0KPiA+ICsgICAg
ICAgICAgICAgUE9XRVJfTE9HKEVSUiwgIk1pc3NpbmcgY2FsbGJhY2tzIHdoaWxlIHJlZ2lzdGVy
aW5nIHBvd2VyIG9wc1xuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g
PiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIG9wcyA9ICZydGVfcG93ZXJfb3BzW29wLT5lbnZd
Ow0KPiBJdCBpcyBiZXR0ZXIgdG8gdXNlIGEgZ2xvYmFsIGxpbmtlZCBsaXN0IGluc3RlYWQgb2Yg
YW4gYXJyYXkuDQo+IEFuZCB3ZSBzaG91bGQgZXh0cmFjdCBhIGxpc3Qgc3RydWN0dXJlIGluY2x1
ZGluZyB0aGlzIG9wcyBzdHJ1Y3R1cmUgYW5kIHRoaXMgb3BzJ3MNCj4gb3duZXIuDQo+ID4gKyAg
ICAgb3BzLT5lbnYgPSBvcC0+ZW52Ow0KPiA+ICsgICAgIG9wcy0+aW5pdCA9IG9wLT5pbml0Ow0K
PiA+ICsgICAgIG9wcy0+ZXhpdCA9IG9wLT5leGl0Ow0KPiA+ICsgICAgIG9wcy0+Y2hlY2tfZW52
X3N1cHBvcnQgPSBvcC0+Y2hlY2tfZW52X3N1cHBvcnQ7DQo+ID4gKyAgICAgb3BzLT5nZXRfYXZh
aWxfZnJlcXMgPSBvcC0+Z2V0X2F2YWlsX2ZyZXFzOw0KPiA+ICsgICAgIG9wcy0+Z2V0X2ZyZXEg
PSBvcC0+Z2V0X2ZyZXE7DQo+ID4gKyAgICAgb3BzLT5zZXRfZnJlcSA9IG9wLT5zZXRfZnJlcTsN
Cj4gPiArICAgICBvcHMtPmZyZXFfdXAgPSBvcC0+ZnJlcV91cDsNCj4gPiArICAgICBvcHMtPmZy
ZXFfZG93biA9IG9wLT5mcmVxX2Rvd247DQo+ID4gKyAgICAgb3BzLT5mcmVxX21heCA9IG9wLT5m
cmVxX21heDsNCj4gPiArICAgICBvcHMtPmZyZXFfbWluID0gb3AtPmZyZXFfbWluOw0KPiA+ICsg
ICAgIG9wcy0+dHVyYm9fc3RhdHVzID0gb3AtPnR1cmJvX3N0YXR1czsNCj4gPiArICAgICBvcHMt
PmVuYWJsZV90dXJibyA9IG9wLT5lbmFibGVfdHVyYm87DQo+ID4gKyAgICAgb3BzLT5kaXNhYmxl
X3R1cmJvID0gb3AtPmRpc2FibGVfdHVyYm87DQo+ICpvcHMgPSAqb3A/DQo+ID4gKyAgICAgb3Bz
LT5zdGF0dXMgPSAxOyAvKiByZWdpc3RlcmVkICovDQo+IHN0YXR1cyAtLT4gcmVnaXN0ZXJlZD8N
Cj4gQnV0IGlmIHVzZSBvcHMgbGlua2VkIGxpc3QsIHRoaXMgZmxhZyBhbHNvIGNhbiBiZSByZW1v
dmVkLg0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Ry
dWN0IHJ0ZV9wb3dlcl9vcHMgKg0KPiA+ICtydGVfcG93ZXJfZ2V0X29wcyhpbnQgb3BzX2luZGV4
KQ0KPiBBRkFJQ1MsIHRoZXJlIGlzIG9ubHkgb25lIGNwdWZyZXEgZHJpdmVyIG9uIG9uZSBwbGF0
Zm9ybSBhbmQganVzdCBoYXZlIG9uZQ0KPiBwb3dlcl9jcHVmcmVxX29wcyB0byB1c2UgZm9yIHVz
ZXIuDQo+IFdlIGRvbid0IG5lZWQgdXNlciB0byBnZXQgb3RoZXIgcG93ZXIgb3BzLCBhbmQgdXNl
ciBqdXN0IHdhbnQgdG8ga25vdyB0aGUgcG93ZXINCj4gb3BzIHVzaW5nIGN1cnJlbnRseSwgcmln
aHQ/DQo+IFNvIHVzaW5nICdpbmRleCcgdG9nZXQgdGhpcyBvcHMgaXMgbm90IGdvb2QuDQpBZ3Jl
ZWQhIEkgd2lsbCByZXdvcmsgdGhpcyB0byBtYWtlIGl0IGdsb2JhbC4NCj4gPiAgIHsNCj4gPiAt
ICAgICBydGVfcG93ZXJfZnJlcXMgID0gTlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZ2V0X2Zy
ZXEgPSBOVUxMOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl9zZXRfZnJlcSA9IE5VTEw7DQo+ID4gLSAg
ICAgcnRlX3Bvd2VyX2ZyZXFfdXAgPSBOVUxMOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX2Rv
d24gPSBOVUxMOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX21heCA9IE5VTEw7DQo+ID4gLSAg
ICAgcnRlX3Bvd2VyX2ZyZXFfbWluID0gTlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfdHVyYm9f
c3RhdHVzID0gTlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9lbmFibGVfdHVyYm8gPSBO
VUxMOw0KPiA+IC0gICAgIHJ0ZV9wb3dlcl9mcmVxX2Rpc2FibGVfdHVyYm8gPSBOVUxMOw0KPiA+
IC0gICAgIHJ0ZV9wb3dlcl9nZXRfY2FwYWJpbGl0aWVzID0gTlVMTDsNCj4gPiArICAgICBSVEVf
VkVSSUZZKChvcHNfaW5kZXggPj0gUE1fRU5WX05PVF9TRVQpICYmIChvcHNfaW5kZXggPA0KPiBQ
TV9FTlZfTUFYKSk7DQo+ID4gKyAgICAgUlRFX1ZFUklGWShydGVfcG93ZXJfb3BzW29wc19pbmRl
eF0uc3RhdHVzICE9IDApOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gJnJ0ZV9wb3dlcl9vcHNb
b3BzX2luZGV4XTsNCj4gPiAgIH0NCj4gPg0KPiA+ICAgaW50DQo+ID4gICBydGVfcG93ZXJfY2hl
Y2tfZW52X3N1cHBvcnRlZChlbnVtIHBvd2VyX21hbmFnZW1lbnRfZW52IGVudikNCj4gPiAgIHsN
Cj4gPiAtICAgICBzd2l0Y2ggKGVudikgew0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FDUElfQ1BV
RlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9hY3BpX2NwdWZyZXFfY2hlY2tf
c3VwcG9ydGVkKCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfUFNUQVRFX0NQVUZSRVE6DQo+ID4g
LSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfcHN0YXRlX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVk
KCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfS1ZNX1ZNOg0KPiA+IC0gICAgICAgICAgICAgcmV0
dXJuIHBvd2VyX2t2bV92bV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBjYXNlIFBNX0VO
Vl9DUFBDX0NQVUZSRVE6DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfY3BwY19jcHVm
cmVxX2NoZWNrX3N1cHBvcnRlZCgpOw0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FNRF9QU1RBVEVf
Q1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9hbWRfcHN0YXRlX2NwdWZy
ZXFfY2hlY2tfc3VwcG9ydGVkKCk7DQo+ID4gLSAgICAgZGVmYXVsdDoNCj4gPiAtICAgICAgICAg
ICAgIHJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPiAtICAgICAgICAgICAgIHJldHVybiAtMTsNCj4g
PiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAqb3BzOw0KPiA+ICsNCj4gPiArICAgICBpZiAo
KGVudiA+IFBNX0VOVl9OT1RfU0VUKSAmJiAoZW52IDwgUE1fRU5WX01BWCkpIHsNCj4gPiArICAg
ICAgICAgICAgIG9wcyA9IHJ0ZV9wb3dlcl9nZXRfb3BzKGVudik7DQo+ID4gKyAgICAgICAgICAg
ICByZXR1cm4gb3BzLT5jaGVja19lbnZfc3VwcG9ydCgpOw0KPiA+ICAgICAgIH0NCj4gPiArDQo+
ID4gKyAgICAgcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+ICsgICAgIHJldHVybiAtMTsNCj4gPiAg
IH0NCj4gPg0KPiA+ICAgaW50DQo+ID4gQEAgLTgwLDgwICs5NiwyNiBAQCBydGVfcG93ZXJfc2V0
X2VudihlbnVtIHBvd2VyX21hbmFnZW1lbnRfZW52DQo+IGVudikNCj4gPiAgICAgICB9DQo+ID4N
Cj4gPiAgICAgICBpbnQgcmV0ID0gMDsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAq
b3BzOw0KPiA+ICsNCj4gPiArICAgICBpZiAoKGVudiA9PSBQTV9FTlZfTk9UX1NFVCkgfHwgKGVu
diA+PSBQTV9FTlZfTUFYKSkgew0KPiA+ICsgICAgICAgICAgICAgUE9XRVJfTE9HKEVSUiwgIklu
dmFsaWQgUG93ZXIgTWFuYWdlbWVudCBFbnZpcm9ubWVudCglZCkiDQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBzZXRcbiIsIGVudik7DQo+ID4gKyAgICAgICAgICAgICByZXQg
PSAtMTsNCj4gPiArICAgICB9DQo+ID4NCj4gPC4uLj4NCj4gPiArICAgICBvcHMgPSBydGVfcG93
ZXJfZ2V0X29wcyhlbnYpOw0KPiBUbyBmaW5kIHRoZSB0YXJnZXQgb3BzIGZyb20gdGhlIGdsb2Jh
bCBsaXN0IGFjY29yZGluZyB0byB0aGUgZW52Pw0KPiA+ICsgICAgIGlmIChvcHMtPnN0YXR1cyA9
PSAwKSB7DQo+ID4gKyAgICAgICAgICAgICBQT1dFUl9MT0coRVJSLCBXRVIsDQo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgICJQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50KCVkKSBub3QiDQo+
ID4gKyAgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZFxuIiwgZW52KTsNCj4gPiAgICAg
ICAgICAgICAgIHJldCA9IC0xOw0KPiA+ICAgICAgIH0NCj4gPg0KPiA+ICAgICAgIGlmIChyZXQg
PT0gMCkNCj4gPiAgICAgICAgICAgICAgIGdsb2JhbF9kZWZhdWx0X2VudiA9IGVudjsNCj4gSXQg
aXMgbW9yZSBjb252ZW5pZW50IHRvIHVzZSBhIGdsb2JhbCB2YXJpYWJsZSB0byBwb2ludCB0byB0
aGUgZGVmYXVsdCBwb3dlcl9jcHVmcmVxDQo+IG9wcyBvciBpdHMgbGlzdCBub2RlLg0KQWdyZWVk
DQo+ID4gLSAgICAgZWxzZSB7DQo+ID4gKyAgICAgZWxzZQ0KPiA+ICAgICAgICAgICAgICAgZ2xv
YmFsX2RlZmF1bHRfZW52ID0gUE1fRU5WX05PVF9TRVQ7DQo+ID4gLSAgICAgICAgICAgICByZXNl
dF9wb3dlcl9mdW5jdGlvbl9wdHJzKCk7DQo+ID4gLSAgICAgfQ0KPiA+DQo+ID4gICAgICAgcnRl
X3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4gICAgICAgcmV0dXJu
IHJldDsNCj4gPiBAQCAtMTY0LDcgKzEyNiw2IEBAIHJ0ZV9wb3dlcl91bnNldF9lbnYodm9pZCkN
Cj4gPiAgIHsNCj4gPiAgICAgICBydGVfc3BpbmxvY2tfbG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9j
ayk7DQo+ID4gICAgICAgZ2xvYmFsX2RlZmF1bHRfZW52ID0gUE1fRU5WX05PVF9TRVQ7DQo+ID4g
LSAgICAgcmVzZXRfcG93ZXJfZnVuY3Rpb25fcHRycygpOw0KPiA+ICAgICAgIHJ0ZV9zcGlubG9j
a191bmxvY2soJmdsb2JhbF9lbnZfY2ZnX2xvY2spOw0KPiA+ICAgfQ0KPiA+DQo+ID4gQEAgLTE3
Nyw1OSArMTM4LDc2IEBAIGludA0KPiA+ICAgcnRlX3Bvd2VyX2luaXQodW5zaWduZWQgaW50IGxj
b3JlX2lkKQ0KPiA+ICAgew0KPiA+ICAgICAgIGludCByZXQgPSAtMTsNCj4gPiArICAgICBzdHJ1
Y3QgcnRlX3Bvd2VyX29wcyAqb3BzOw0KPiA+DQo+ID4gLSAgICAgc3dpdGNoIChnbG9iYWxfZGVm
YXVsdF9lbnYpIHsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9BQ1BJX0NQVUZSRVE6DQo+ID4gLSAg
ICAgICAgICAgICByZXR1cm4gcG93ZXJfYWNwaV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+
IC0gICAgIGNhc2UgUE1fRU5WX0tWTV9WTToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dl
cl9rdm1fdm1faW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfUFNUQVRFX0NQ
VUZSRVE6DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfcHN0YXRlX2NwdWZyZXFfaW5p
dChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfQ1BQQ19DUFVGUkVROg0KPiA+IC0g
ICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2NwcGNfY3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4g
PiAtICAgICBjYXNlIFBNX0VOVl9BTURfUFNUQVRFX0NQVUZSRVE6DQo+ID4gLSAgICAgICAgICAg
ICByZXR1cm4gcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0g
ICAgIGRlZmF1bHQ6DQo+ID4gLSAgICAgICAgICAgICBQT1dFUl9MT0coSU5GTywgIkVudiBpc24n
dCBzZXQgeWV0ISIpOw0KPiA+ICsgICAgIGlmIChnbG9iYWxfZGVmYXVsdF9lbnYgIT0gUE1fRU5W
X05PVF9TRVQpIHsNCj4gPiArICAgICAgICAgICAgIG9wcyA9ICZydGVfcG93ZXJfb3BzW2dsb2Jh
bF9kZWZhdWx0X2Vudl07DQo+ID4gKyAgICAgICAgICAgICBpZiAoIW9wcy0+c3RhdHVzKSB7DQo+
ID4gKyAgICAgICAgICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIsICJQb3dlciBtYW5hZ2VtZW50
IGVudlslZF0gbm90Ig0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9y
dGVkXG4iLCBnbG9iYWxfZGVmYXVsdF9lbnYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBn
b3RvIG91dDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIHJldHVybiBv
cHMtPmluaXQobGNvcmVfaWQpOw0KPiA+ICAgICAgIH0NCj4gPiArICAgICBQT1dFUl9MT0coSU5G
TywgUE9XRVIsICJFbnYgaXNuJ3Qgc2V0IHlldCFcbiIpOw0KPiA+DQo+ID4gICAgICAgLyogQXV0
byBkZXRlY3QgRW52aXJvbm1lbnQgKi8NCj4gPiAtICAgICBQT1dFUl9MT0coSU5GTywgIkF0dGVt
cHRpbmcgdG8gaW5pdGlhbGlzZSBBQ1BJIGNwdWZyZXEgcG93ZXINCj4gbWFuYWdlbWVudC4uLiIp
Ow0KPiA+IC0gICAgIHJldCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4g
PiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPiAtICAgICAgICAgICAgIHJ0ZV9wb3dlcl9zZXRf
ZW52KFBNX0VOVl9BQ1BJX0NQVUZSRVEpOw0KPiA+IC0gICAgICAgICAgICAgZ290byBvdXQ7DQo+
ID4gKyAgICAgUE9XRVJfTE9HKElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgQUNQSSBj
cHVmcmVxIg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiIHBvd2VyIG1hbmFnZW1lbnQuLi5c
biIpOw0KPiA+ICsgICAgIG9wcyA9ICZydGVfcG93ZXJfb3BzW1BNX0VOVl9BQ1BJX0NQVUZSRVFd
Ow0KPiA+ICsgICAgIGlmIChvcHMtPnN0YXR1cykgew0KPiA+ICsgICAgICAgICAgICAgcmV0ID0g
b3BzLT5pbml0KGxjb3JlX2lkKTsNCj4gPiArICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgew0K
PiA+ICsgICAgICAgICAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9FTlZfQUNQSV9D
UFVGUkVRKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+ID4gKyAgICAg
ICAgICAgICB9DQo+ID4gICAgICAgfQ0KPiA+DQo+ID4gLSAgICAgUE9XRVJfTE9HKElORk8sICJB
dHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgUFNUQVQgcG93ZXIgbWFuYWdlbWVudC4uLiIpOw0KPiA+
IC0gICAgIHJldCA9IHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0g
ICAgIGlmIChyZXQgPT0gMCkgew0KPiA+IC0gICAgICAgICAgICAgcnRlX3Bvd2VyX3NldF9lbnYo
UE1fRU5WX1BTVEFURV9DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+
ICsgICAgIFBPV0VSX0xPRyhJTkZPLCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIFBTVEFUIg0K
PiA+ICsgICAgICAgICAgICAgICAgICAgICAiIHBvd2VyIG1hbmFnZW1lbnQuLi5cbiIpOw0KPiA+
ICsgICAgIG9wcyA9ICZydGVfcG93ZXJfb3BzW1BNX0VOVl9QU1RBVEVfQ1BVRlJFUV07DQo+ID4g
KyAgICAgaWYgKG9wcy0+c3RhdHVzKSB7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSBvcHMtPmlu
aXQobGNvcmVfaWQpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4gKyAg
ICAgICAgICAgICAgICAgICAgIHJ0ZV9wb3dlcl9zZXRfZW52KFBNX0VOVl9QU1RBVEVfQ1BVRlJF
USk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgICAgICAg
ICAgfQ0KPiA+ICAgICAgIH0NCj4gPg0KPiA+IC0gICAgIFBPV0VSX0xPRyhJTkZPLCAiQXR0ZW1w
dGluZyB0byBpbml0aWFsaXNlIEFNRCBQU1RBVEUgcG93ZXINCj4gbWFuYWdlbWVudC4uLiIpOw0K
PiA+IC0gICAgIHJldCA9IHBvd2VyX2FtZF9wc3RhdGVfY3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsN
Cj4gPiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPiAtICAgICAgICAgICAgIHJ0ZV9wb3dlcl9z
ZXRfZW52KFBNX0VOVl9BTURfUFNUQVRFX0NQVUZSRVEpOw0KPiA+IC0gICAgICAgICAgICAgZ290
byBvdXQ7DQo+ID4gKyAgICAgUE9XRVJfTE9HKElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxp
c2UgQU1EIFBTVEFURSINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIiBwb3dlciBtYW5hZ2Vt
ZW50Li4uXG4iKTsNCj4gPiArICAgICBvcHMgPSAmcnRlX3Bvd2VyX29wc1tQTV9FTlZfQU1EX1BT
VEFURV9DUFVGUkVRXTsNCj4gPiArICAgICBpZiAob3BzLT5zdGF0dXMpIHsNCj4gPiArICAgICAg
ICAgICAgIHJldCA9IG9wcy0+aW5pdChsY29yZV9pZCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAo
cmV0ID09IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcnRlX3Bvd2VyX3NldF9lbnYo
UE1fRU5WX0FNRF9QU1RBVEVfQ1BVRlJFUSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdv
dG8gb3V0Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICAgICAgIH0NCj4gPg0KPiA+IC0gICAg
IFBPV0VSX0xPRyhJTkZPLCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIENQUEMgcG93ZXIgbWFu
YWdlbWVudC4uLiIpOw0KPiA+IC0gICAgIHJldCA9IHBvd2VyX2NwcGNfY3B1ZnJlcV9pbml0KGxj
b3JlX2lkKTsNCj4gPiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPiAtICAgICAgICAgICAgIHJ0
ZV9wb3dlcl9zZXRfZW52KFBNX0VOVl9DUFBDX0NQVUZSRVEpOw0KPiA+IC0gICAgICAgICAgICAg
Z290byBvdXQ7DQo+ID4gKyAgICAgUE9XRVJfTE9HKElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRp
YWxpc2UgQ1BQQyBwb3dlciINCj4gPiArICAgICAgICAgICAgICAgICAgICAgIiBtYW5hZ2VtZW50
Li4uXG4iKTsNCj4gPiArICAgICBvcHMgPSAmcnRlX3Bvd2VyX29wc1tQTV9FTlZfQ1BQQ19DUFVG
UkVRXTsNCj4gPiArICAgICBpZiAob3BzLT5zdGF0dXMpIHsNCj4gPiArICAgICAgICAgICAgIHJl
dCA9IG9wcy0+aW5pdChsY29yZV9pZCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAocmV0ID09IDAp
IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcnRlX3Bvd2VyX3NldF9lbnYoUE1fRU5WX0NQ
UENfQ1BVRlJFUSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsg
ICAgICAgICAgICAgfQ0KPiA+ICAgICAgIH0NCj4gPg0KPiA+IC0gICAgIFBPV0VSX0xPRyhJTkZP
LCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIFZNIHBvd2VyIG1hbmFnZW1lbnQuLi4iKTsNCj4g
PiAtICAgICByZXQgPSBwb3dlcl9rdm1fdm1faW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAgaWYg
KHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9FTlZf
S1ZNX1ZNKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+ICsgICAgIFBPV0VSX0xP
RyhJTkZPLCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIFZNIHBvd2VyIg0KPiA+ICsgICAgICAg
ICAgICAgICAgICAgICAiIG1hbmFnZW1lbnQuLi5cbiIpOw0KPiA+ICsgICAgIG9wcyA9ICZydGVf
cG93ZXJfb3BzW1BNX0VOVl9LVk1fVk1dOw0KPiA+ICsgICAgIGlmIChvcHMtPnN0YXR1cykgew0K
PiA+ICsgICAgICAgICAgICAgcmV0ID0gb3BzLT5pbml0KGxjb3JlX2lkKTsNCj4gPiArICAgICAg
ICAgICAgIGlmIChyZXQgPT0gMCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBydGVfcG93
ZXJfc2V0X2VudihQTV9FTlZfS1ZNX1ZNKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZ290
byBvdXQ7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gICAgICAgfQ0KPiBJZiB3ZSB1c2UgYSBs
aW5rZWQgbGlzdCwgYWJvdmUgY29kZSBjYW4gYmUgc2ltcGxlZCBsaWtlIHRoaXM6DQo+IC0+DQo+
IGZvcl9lYWNoX3Bvd2VyX2NwdWZyZXFfb3BzKG9wcywgLi4uKSB7DQo+ICAgICAgcmV0ID0gb3Bz
LT5pbml0KCkNCj4gICAgICBpZiAocmV0KSB7DQo+ICAgICAgICAgIC4uLi4NCj4gICAgICB9DQo+
IH0NCkFDSw0KPiA+IC0gICAgIFBPV0VSX0xPRyhFUlIsICJVbmFibGUgdG8gc2V0IFBvd2VyIE1h
bmFnZW1lbnQgRW52aXJvbm1lbnQgZm9yIGxjb3JlICINCj4gPiAtICAgICAgICAgICAgICAgICAg
ICAgIiV1IiwgbGNvcmVfaWQpOw0KPiA+ICsgICAgIFBPV0VSX0xPRyhFUlIsICJVbmFibGUgdG8g
c2V0IFBvd2VyIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQiDQo+ID4gKyAgICAgICAgICAgICAgICAg
ICAgICIgZm9yIGxjb3JlICV1XG4iLCBsY29yZV9pZCk7DQo+ID4gICBvdXQ6DQo+ID4gICAgICAg
cmV0dXJuIHJldDsNCj4gPiAgIH0NCj4gPiBAQCAtMjM3LDIxICsyMTUsMTQgQEAgcnRlX3Bvd2Vy
X2luaXQodW5zaWduZWQgaW50IGxjb3JlX2lkKQ0KPiA+ICAgaW50DQo+ID4gICBydGVfcG93ZXJf
ZXhpdCh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpDQo+ID4gICB7DQo+ID4gLSAgICAgc3dpdGNoIChn
bG9iYWxfZGVmYXVsdF9lbnYpIHsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9BQ1BJX0NQVUZSRVE6
DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfYWNwaV9jcHVmcmVxX2V4aXQobGNvcmVf
aWQpOw0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0tWTV9WTToNCj4gPiAtICAgICAgICAgICAgIHJl
dHVybiBwb3dlcl9rdm1fdm1fZXhpdChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZf
UFNUQVRFX0NQVUZSRVE6DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfcHN0YXRlX2Nw
dWZyZXFfZXhpdChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfQ1BQQ19DUFVGUkVR
Og0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2NwcGNfY3B1ZnJlcV9leGl0KGxjb3Jl
X2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9BTURfUFNUQVRFX0NQVUZSRVE6DQo+ID4gLSAg
ICAgICAgICAgICByZXR1cm4gcG93ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxX2V4aXQobGNvcmVfaWQp
Ow0KPiA+IC0gICAgIGRlZmF1bHQ6DQo+ID4gLSAgICAgICAgICAgICBQT1dFUl9MT0coRVJSLCAi
RW52aXJvbm1lbnQgaGFzIG5vdCBiZWVuIHNldCwgdW5hYmxlIHRvIGV4aXQNCj4gZ3JhY2VmdWxs
eSIpOw0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfb3BzICpvcHM7DQo+ID4NCj4gPiArICAg
ICBpZiAoZ2xvYmFsX2RlZmF1bHRfZW52ICE9IFBNX0VOVl9OT1RfU0VUKSB7DQo+ID4gKyAgICAg
ICAgICAgICBvcHMgPSAmcnRlX3Bvd2VyX29wc1tnbG9iYWxfZGVmYXVsdF9lbnZdOw0KPiA+ICsg
ICAgICAgICAgICAgcmV0dXJuIG9wcy0+ZXhpdChsY29yZV9pZCk7DQo+ID4gICAgICAgfQ0KPiA+
IC0gICAgIHJldHVybiAtMTsNCj4gPiArICAgICBQT1dFUl9MT0coRVJSLCAiRW52aXJvbm1lbnQg
aGFzIG5vdCBiZWVuIHNldCwgdW5hYmxlICINCj4gPiArICAgICAgICAgICAgICAgICAgICAgInRv
IGV4aXQgZ3JhY2VmdWxseVxuIik7DQo+ID4NCj4gPiArICAgICByZXR1cm4gLTE7DQo+ID4gICB9
DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93ZXIuaCBiL2xpYi9wb3dlci9ydGVf
cG93ZXIuaCBpbmRleA0KPiA+IDRmYTRhZmUzOTkuLjc0OWJiODIzYWIgMTAwNjQ0DQo+ID4gLS0t
IGEvbGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4gKysrIGIvbGliL3Bvd2VyL3J0ZV9wb3dlci5o
DQo+ID4gQEAgLTEsNSArMSw2IEBADQo+ID4gICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog
QlNELTMtQ2xhdXNlDQo+ID4gICAgKiBDb3B5cmlnaHQoYykgMjAxMC0yMDE0IEludGVsIENvcnBv
cmF0aW9uDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDI0IEFNRCBMaW1pdGVkDQo+ID4gICAgKi8N
Cj4gPg0KPiA+ICAgI2lmbmRlZiBfUlRFX1BPV0VSX0gNCj4gPiBAQCAtMjEsNyArMjIsNyBAQCBl
eHRlcm4gIkMiIHsNCj4gPiAgIC8qIFBvd2VyIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgU3RhdGUg
Ki8NCj4gPiAgIGVudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYge1BNX0VOVl9OT1RfU0VULCBQTV9F
TlZfQUNQSV9DUFVGUkVRLA0KPiBQTV9FTlZfS1ZNX1ZNLA0KPiA+ICAgICAgICAgICAgICAgUE1f
RU5WX1BTVEFURV9DUFVGUkVRLCBQTV9FTlZfQ1BQQ19DUFVGUkVRLA0KPiA+IC0gICAgICAgICAg
ICAgUE1fRU5WX0FNRF9QU1RBVEVfQ1BVRlJFUX07DQo+ID4gKyAgICAgICAgICAgICBQTV9FTlZf
QU1EX1BTVEFURV9DUFVGUkVRLCBQTV9FTlZfTUFYfTsNCj4gImVudW0gcG93ZXJfbWFuYWdlbWVu
dF9lbnYiIGlzIG5vdCBnb29kLiBtYXkgYmUgbGlrZSAiZW51bQ0KPiBwb3dlcl9jcHVmcmVxX2Ry
aXZlcl90eXBlIj8NCj4gSW4gcHJldmlvdXMgbGlua2VkIGxpc3Qgc3RydWN0dXJlIHRvIGJlIGRl
ZmluZWQsIG1heSBiZSBkaXJlY3RseSB1c2UgYSBzdHJpbmcgbmFtZQ0KPiBpbnN0ZWFkIG9mIGEg
Zml4ZWQgZW51bSBpcyBiZXR0ZXIuDQo+IEJlY3Vhc2UgdGhlIG5ldyAiUE1fRU5WX01BWCIgd2ls
bCAgbGVhZCB0byBicmVhayBBQkkgd2hlbiBhZGQgYSBuZXcgY3B1ZnJlcQ0KPiBkcml2ZXIuDQpJ
IHdpbGwgcmV3b3JrIHRoaXMgdG8gcmVtb3ZlIHRoZSBtYXggbWFjcm8uDQpIb3cgY2hhbmdpbmcg
dGhlIGVudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgcmVxdWlyZXMgQUJJIHZlcnNpb25pbmcuDQpX
aWxsIGNvbnNpZGVyIHRoaXMgY2hhbmdlIGluIGZ1dHVyZS4NCj4gPg0KPiA+ICAgLyoqDQo+ID4g
ICAgKiBDaGVjayBpZiBhIHNwZWNpZmljIHBvd2VyIG1hbmFnZW1lbnQgZW52aXJvbm1lbnQgdHlw
ZSBpcw0KPiA+IHN1cHBvcnRlZCBvbiBhIEBAIC02Niw2ICs2Nyw5NyBAQCB2b2lkIHJ0ZV9wb3dl
cl91bnNldF9lbnYodm9pZCk7DQo+ID4gICAgKi8NCj4gPiAgIGVudW0gcG93ZXJfbWFuYWdlbWVu
dF9lbnYgcnRlX3Bvd2VyX2dldF9lbnYodm9pZCk7DQo+ID4NCj4gPiArdHlwZWRlZiBpbnQgKCpy
dGVfcG93ZXJfY3B1ZnJlcV9pbml0X3QpKHVuc2lnbmVkIGludCBsY29yZV9pZCk7DQo+ID4gK3R5
cGVkZWYgaW50ICgqcnRlX3Bvd2VyX2NwdWZyZXFfZXhpdF90KSh1bnNpZ25lZCBpbnQgbGNvcmVf
aWQpOw0KPiA+ICt0eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9jaGVja19lbnZfc3VwcG9ydF90KSh2
b2lkKTsNCj4gPiArDQo+ID4gK3R5cGVkZWYgdWludDMyX3QgKCpydGVfcG93ZXJfZnJlcXNfdCko
dW5zaWduZWQgaW50IGxjb3JlX2lkLCB1aW50MzJfdCAqZnJlcXMsDQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW0pOyB0eXBlZGVmIHVpbnQzMl90
DQo+ID4gKygqcnRlX3Bvd2VyX2dldF9mcmVxX3QpKHVuc2lnbmVkIGludCBsY29yZV9pZCk7IHR5
cGVkZWYgaW50DQo+ID4gKygqcnRlX3Bvd2VyX3NldF9mcmVxX3QpKHVuc2lnbmVkIGludCBsY29y
ZV9pZCwgdWludDMyX3QgaW5kZXgpOw0KPiA+ICt0eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9mcmVx
X2NoYW5nZV90KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g
KyAqIEZ1bmN0aW9uIHBvaW50ZXIgZGVmaW5pdGlvbiBmb3IgZ2VuZXJpYyBmcmVxdWVuY3kgY2hh
bmdlDQo+ID4gK2Z1bmN0aW9ucy4gUmV2aWV3DQo+ID4gKyAqIGVhY2ggZW52aXJvbm1lbnRzIHNw
ZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0g
bGNvcmVfaWQNCj4gPiArICogIGxjb3JlIGlkLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+
ID4gKyAqICAtIDEgb24gc3VjY2VzcyB3aXRoIGZyZXF1ZW5jeSBjaGFuZ2VkLg0KPiA+ICsgKiAg
LSAwIG9uIHN1Y2Nlc3Mgd2l0aG91dCBmcmVxdWVuY3kgY2hhbmdlZC4NCj4gPiArICogIC0gTmVn
YXRpdmUgb24gZXJyb3IuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFBvd2Vy
IGNhcGFiaWxpdGllcyBzdW1tYXJ5Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9wb3dlcl9j
b3JlX2NhcGFiaWxpdGllcyB7DQo+ID4gKyAgICAgdW5pb24gew0KPiA+ICsgICAgICAgICAgICAg
dWludDY0X3QgY2FwYWJpbGl0aWVzOw0KPiA+ICsgICAgICAgICAgICAgc3RydWN0IHsNCj4gPiAr
ICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdHVyYm86MTsgICAgICAgLyoqPCBUdXJibyBj
YW4gYmUgZW5hYmxlZC4gKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcHJp
b3JpdHk6MTsgICAgLyoqPCBTU1QtQkYgaGlnaCBmcmVxIGNvcmUgKi8NCj4gPiArICAgICAgICAg
ICAgIH07DQo+ID4gKyAgICAgfTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3R5cGVkZWYgaW50ICgq
cnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXNfdCkodW5zaWduZWQgaW50IGxjb3JlX2lkLA0KPiA+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9jYXBh
YmlsaXRpZXMNCj4gPiArKmNhcHMpOw0KPiA+ICsNCj4gPiArLyoqIFN0cnVjdHVyZSBkZWZpbmlu
ZyBjb3JlIHBvd2VyIG9wZXJhdGlvbnMgc3RydWN0dXJlICovIHN0cnVjdA0KPiA+ICtydGVfcG93
ZXJfb3BzIHsNCj4gPiArdWludDhfdCBzdGF0dXM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8q
Kjwgb3BzIHJlZ2lzdGVyIHN0YXR1cy4gKi8NCj4gPiArICAgICBlbnVtIHBvd2VyX21hbmFnZW1l
bnRfZW52IGVudjsgICAgICAgICAgLyoqPCBwb3dlciBtZ210IGVudi4gKi8NCj4gPiArICAgICBy
dGVfcG93ZXJfY3B1ZnJlcV9pbml0X3QgaW5pdDsgICAgLyoqPCBJbml0aWFsaXplIHBvd2VyIG1h
bmFnZW1lbnQuICovDQo+ID4gKyAgICAgcnRlX3Bvd2VyX2NwdWZyZXFfZXhpdF90IGV4aXQ7ICAg
IC8qKjwgRXhpdCBwb3dlciBtYW5hZ2VtZW50LiAqLw0KPiA+ICsgICAgIHJ0ZV9wb3dlcl9jaGVj
a19lbnZfc3VwcG9ydF90IGNoZWNrX2Vudl9zdXBwb3J0OyAvKio8IHZlcmlmeSBlbnYgaXMNCj4g
c3VwcG9ydGVkLiAqLw0KPiA+ICsgICAgIHJ0ZV9wb3dlcl9mcmVxc190IGdldF9hdmFpbF9mcmVx
czsgLyoqPCBHZXQgdGhlIGF2YWlsYWJsZSBmcmVxdWVuY2llcy4gKi8NCj4gPiArICAgICBydGVf
cG93ZXJfZ2V0X2ZyZXFfdCBnZXRfZnJlcTsgLyoqPCBHZXQgZnJlcXVlbmN5IGluZGV4LiAqLw0K
PiA+ICsgICAgIHJ0ZV9wb3dlcl9zZXRfZnJlcV90IHNldF9mcmVxOyAvKio8IFNldCBmcmVxdWVu
Y3kgaW5kZXguICovDQo+ID4gKyAgICAgcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgZnJlcV91cDsg
ICAvKio8IFNjYWxlIHVwIGZyZXF1ZW5jeS4gKi8NCj4gPiArICAgICBydGVfcG93ZXJfZnJlcV9j
aGFuZ2VfdCBmcmVxX2Rvd247IC8qKjwgU2NhbGUgZG93biBmcmVxdWVuY3kuICovDQo+ID4gKyAg
ICAgcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgZnJlcV9tYXg7ICAvKio8IFNjYWxlIHVwIGZyZXF1
ZW5jeSB0byBoaWdoZXN0Lg0KPiAqLw0KPiA+ICsgICAgIHJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90
IGZyZXFfbWluOyAgLyoqPCBTY2FsZSB1cCBmcmVxdWVuY3kgdG8gbG93ZXN0LiAqLw0KPiA+ICsg
ICAgIHJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHR1cmJvX3N0YXR1czsgLyoqPCBHZXQgVHVyYm8g
c3RhdHVzLiAqLw0KPiA+ICsgICAgIHJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IGVuYWJsZV90dXJi
bzsgLyoqPCBFbmFibGUgVHVyYm8uICovDQo+ID4gKyAgICAgcnRlX3Bvd2VyX2ZyZXFfY2hhbmdl
X3QgZGlzYWJsZV90dXJibzsgLyoqPCBEaXNhYmxlIFR1cmJvLiAqLw0KPiA+ICsgICAgIHJ0ZV9w
b3dlcl9nZXRfY2FwYWJpbGl0aWVzX3QgZ2V0X2NhcHM7IC8qKjwgcG93ZXIgY2FwYWJpbGl0aWVz
Lg0KPiA+ICsqLyB9IF9fcnRlX2NhY2hlX2FsaWduZWQ7DQo+IFN1Z2dlc3QgdGhhdCBmaXggdGhp
cyBzdHVyY3R1cmUsIGxpa2U6DQo+IHN0cnVjdCBydGVfcG93ZXJfY3B1ZnJlcV9saXN0IHsNCj4g
ICAgICBjaGFyIG5hbWVbXTsgICAvLyBsaWtlICJjcHBjX2NwdWZyZXEiLCAicHN0YXRlX2NwdWZy
ZXEiDQo+ICAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jcHVmcmVxICpvcHM7DQo+ICAgICAgc3RydWN0
IHJ0ZV9wb3dlcl9jcHVmcmVxX2xpc3QgKm5vZGU7IH0NCkFDSw0KPiA+ICsNCj4gPiArLyoqDQo+
ID4gKyAqIFJlZ2lzdGVyIHBvd2VyIGNwdSBmcmVxdWVuY3kgb3BlcmF0aW9ucy4NCj4gPiArICoN
Cj4gPiArICogQHBhcmFtIG9wcw0KPiA+ICsgKiAgIFBvaW50ZXIgdG8gYW4gb3BzIHN0cnVjdHVy
ZSB0byByZWdpc3Rlci4NCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIC0gPj0wOiBTdWNjZXNz
OyByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBvcHMgc3RydWN0IGluIHRoZSB0YWJsZS4NCj4gPiAr
ICogICAtIC1FSU5WQUwgLSBlcnJvciB3aGlsZSByZWdpc3RlcmluZyBvcHMgc3RydWN0Lg0KPiA+
ICsgKi8NCj4gPiArX19ydGVfaW50ZXJuYWwNCj4gPiAraW50IHJ0ZV9wb3dlcl9yZWdpc3Rlcl9v
cHMoY29uc3Qgc3RydWN0IHJ0ZV9wb3dlcl9vcHMgKm9wcyk7DQo+ID4gKw0KPiA+ICsvKioNCj4g
PiArICogTWFjcm8gdG8gc3RhdGljYWxseSByZWdpc3RlciB0aGUgb3BzIG9mIGEgY3B1ZnJlcSBk
cml2ZXIuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9QT1dFUl9SRUdJU1RFUl9PUFMob3Bz
KSAgICAgICAgICBcDQo+ID4gKyAgICAgKFJURV9JTklUKHBvd2VyX2hkbHJfaW5pdF8jI29wcykg
ICAgICAgIFwNCj4gPiArICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXA0KPiA+ICsgICAgICAgICAgICAgcnRlX3Bvd2VyX3JlZ2lzdGVyX29wcygmb3BzKTsgICBc
DQo+ID4gKyAgICAgfSkNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAaW50ZXJuYWwgR2V0IHRo
ZSBwb3dlciBvcHMgc3RydWN0IGZyb20gaXRzIGluZGV4Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFy
YW0gb3BzX2luZGV4DQo+ID4gKyAqICAgVGhlIGluZGV4IG9mIHRoZSBvcHMgc3RydWN0IGluIHRo
ZSBvcHMgc3RydWN0IHRhYmxlLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIHBvaW50
ZXIgdG8gdGhlIG9wcyBzdHJ1Y3QgaW4gdGhlIHRhYmxlIGlmIHJlZ2lzdGVyZWQuDQo+ID4gKyAq
Lw0KPiA+ICtzdHJ1Y3QgcnRlX3Bvd2VyX29wcyAqDQo+ID4gK3J0ZV9wb3dlcl9nZXRfb3BzKGlu
dCBvcHNfaW5kZXgpOw0KPiA+ICsNCj4gPiAgIC8qKg0KPiA+ICAgICogSW5pdGlhbGl6ZSBwb3dl
ciBtYW5hZ2VtZW50IGZvciBhIHNwZWNpZmljIGxjb3JlLiBJZiBydGVfcG93ZXJfc2V0X2Vudigp
IGhhcw0KPiA+ICAgICogbm90IGJlZW4gY2FsbGVkIHRoZW4gYW4gYXV0by1kZXRlY3Qgb2YgdGhl
IGVudmlyb25tZW50IHdpbGwgc3RhcnQNCj4gPiBhbmQgQEAgLTEwOCwxMCArMjAwLDE0IEBAIGlu
dCBydGVfcG93ZXJfZXhpdCh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICAgICogQHJldHVy
bg0KPiA+ICAgICogIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+ICAg
ICovDQo+ID4gLXR5cGVkZWYgdWludDMyX3QgKCpydGVfcG93ZXJfZnJlcXNfdCkodW5zaWduZWQg
aW50IGxjb3JlX2lkLCB1aW50MzJfdCAqZnJlcXMsDQo+ID4gLSAgICAgICAgICAgICB1aW50MzJf
dCBudW0pOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ID4gK3J0ZV9wb3dlcl9mcmVx
cyh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsIHVpbnQzMl90ICpmcmVxcywgdWludDMyX3Qgbikgew0K
PiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfb3BzICpvcHM7DQo+ID4NCj4gPiAtZXh0ZXJuIHJ0
ZV9wb3dlcl9mcmVxc190IHJ0ZV9wb3dlcl9mcmVxczsNCj4gPiArICAgICBvcHMgPSBydGVfcG93
ZXJfZ2V0X29wcyhydGVfcG93ZXJfZ2V0X2VudigpKTsNCj4gPiArICAgICByZXR1cm4gb3BzLT5n
ZXRfYXZhaWxfZnJlcXMobGNvcmVfaWQsIGZyZXFzLCBuKTsgfQ0KPiBuaWNlLg0KPiA8Li4uPg0K