From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 ; 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" To: "lihuisong (C)" , "david.hunt@intel.com" , "anatoly.burakov@intel.com" , "jerinj@marvell.com" , "radu.nicolau@intel.com" , "gakhil@marvell.com" , "cristian.dumitrescu@intel.com" , "Yigit, Ferruh" , "konstantin.ananyev@huawei.com" CC: "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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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