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 200A14596C; Thu, 12 Sep 2024 13:17:34 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 521E740E5A; Thu, 12 Sep 2024 13:17:30 +0200 (CEST) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2068.outbound.protection.outlook.com [40.107.95.68]) by mails.dpdk.org (Postfix) with ESMTP id D9B4840B9F for ; Thu, 12 Sep 2024 13:17:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Apny01DV0BhRuvfpytVvE8eN8un3+V9TWSQ3RtM4owu+n/aBi9iAwrYaEdYb4IQULVZ3HUf3kUa7f4357e9EKLgmbEfh2sPgBp2Z0rwt5lYHtI4IhbbT+RNXkhGXV2sjuG/N9agfLF3dG4acZWri+EC5m412J6JNf163Zrqwiauzeu5UPkQSC8PW02UnrBZVM6cwPhohTcExjrq/9pYwlBLMDcc0fqiAbYrrJF2bTIUvWGHyK9E1FmQBJm7nJGQKRuYJ3zLwHr9sX5FaYLViI7OEusvZywPKpBfTVMhyTG+ID+17s+TmHn/SIhG9NJMV4TXIdOVc5B/i0MMFztbo8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=dKRPjEOvMsFjkEEzHKBbdsFHtwQqJGLs/u61wG4bfyc=; b=UpaPhgsSBoTjVfw32+HsYaZGaPXpdhHF98eo8eSPAZhbhrLocnTNMunrTAuSu0QKBYsduOoN0EeEwYHM2TaRZ9MRhz0uGP/LILM9yMDiy+re9zutBjeiKid7vcyZDPP30lzmbsCyj5xzPtu3/V5cMgZ3O/WjyUFLeY16JqnhaBWRQQ+1UtNpRnBnR9tkDDzw5ZAcVz8tV5ozQm0oxgYXNKKY8O0RzbFPfd6+R2qKmEZ6UQDaN/5qpZc9BUGeR40nI/uPyDFvm9126+RL9XOqCnUvVS4wRAsS5UbUKDqmnkmvcYdlQpIDxPAIcNSoEcw1ALtVK3RDplGMvIrKhNofCA== 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=dKRPjEOvMsFjkEEzHKBbdsFHtwQqJGLs/u61wG4bfyc=; b=dCPqMDajgsASbLKbf3LibAj7PJRe3AmIgfuQTqGIHIobGkbekAgrLC++A2+wbD5iKpk2Ce6cbW7mrB3zMfHcKxXElgFwgZpW9Bab0zmVt4eUUbIoGVSXqELQjofwZUcNU+CF1EfjjS1Fy/D/FGg4m5q+SR/rH4dpdAzjSKdBYG0= Received: from CH3PR12MB8233.namprd12.prod.outlook.com (2603:10b6:610:129::15) by MN0PR12MB6103.namprd12.prod.outlook.com (2603:10b6:208:3c9::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.27; Thu, 12 Sep 2024 11:17:24 +0000 Received: from CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515]) by CH3PR12MB8233.namprd12.prod.outlook.com ([fe80::278f:5cc5:549c:3515%5]) with mapi id 15.20.7918.024; Thu, 12 Sep 2024 11:17:24 +0000 From: "Tummala, Sivaprasad" To: "lihuisong (C)" CC: "dev@dpdk.org" , "david.hunt@intel.com" , "anatoly.burakov@intel.com" , "radu.nicolau@intel.com" , "cristian.dumitrescu@intel.com" , "jerinj@marvell.com" , "konstantin.ananyev@huawei.com" , "Yigit, Ferruh" , "gakhil@marvell.com" Subject: RE: [PATCH v2 1/4] power: refactor core power management library Thread-Topic: [PATCH v2 1/4] power: refactor core power management library Thread-Index: AQHa97jruE4/5FJoc0KdhklxB9GDGbI6xL2AgBlP7KA= Date: Thu, 12 Sep 2024 11:17:23 +0000 Message-ID: References: <20240720165030.246294-1-sivaprasad.tummala@amd.com> <20240826130650.320130-1-sivaprasad.tummala@amd.com> <20240826130650.320130-2-sivaprasad.tummala@amd.com> <375e3ab9-bf84-1844-787d-ec89230ae739@huawei.com> In-Reply-To: <375e3ab9-bf84-1844-787d-ec89230ae739@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ActionId=fadd395c-37af-42cd-a2b7-a0b5fbb805d4; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_ContentBits=0; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Enabled=true; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Method=Standard; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_Name=AMD Internal Distribution Only; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_SetDate=2024-09-12T10:53:51Z; MSIP_Label_dce362fe-1558-4fb5-9f64-8a6240d76441_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_|MN0PR12MB6103:EE_ x-ms-office365-filtering-correlation-id: e9830af0-a75f-4f97-6268-08dcd31c7a05 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?MmtJN2FvQi84WkVocDB4bHNWU09wOTQwVy9OLzRQYmxmSDNZOXVlMjNsdTN3?= =?utf-8?B?QUw2T2s3UklnUjQ1Y2lBUHhCNGYvYkhGdWNkTlZSTXNSVW90SGdWVUovRXhk?= =?utf-8?B?UnMzVFdqb3p3SW9wNW94dllHMFpXbXhZUHdIbHd6NURYVTVrUGFQR3cvL2JH?= =?utf-8?B?NnV6SzRraWhRL2NNdVAxUTBHc1VrZTgzb3RmbVZnc0ozTkdZTTdCOXVudGNS?= =?utf-8?B?Qm10c245Y3VBandBMStjcmN6bk9qOGxUaGpQTStPbkpFKzkrQ0d2OEFUbk5o?= =?utf-8?B?dW5iWW5JSklxUkdRczcycDRvRW5oVkhtdHRUR0lGNjI1ZEZQb1B5YVFrMHlp?= =?utf-8?B?blhCdEFPVzBhTzVRQlBETXF4VzEwK29zWHFqWTdPZ1c2cW05OFBPc1V0OWI4?= =?utf-8?B?dTFSa014ck1aU0F5eXJLbngvZk5BalNsQndJQnhYekhRYXRPWEgwZUhMaUdC?= =?utf-8?B?Z1p1ekF6ZjhDc1crdU5ZQVpIY3lPcnJ2aVpVazVhQmgvN0wzYnh2NTlJZGhB?= =?utf-8?B?ZlRQdjBKTGc0eTZFaWEvZ3EvWmFEVldZck9qQTNaTmgvRlVTTnZUamNPVjJl?= =?utf-8?B?R080RmN0aDc0dk04dHRPcUtoZksrWmd4d2MwNDJMQmwwaHlxeklOOXlpNDR1?= =?utf-8?B?R2JRb2FMeHJMYWVrTzlnZjdpM3VLOHJSNEhUbWhVOENzY1hXbEMzeHBNUE4r?= =?utf-8?B?T0hSRFkwWTM1RjJmT3BUK0t2ZTRJMCt2M1MydGxKY1YwODhvcVJoNERLMXZZ?= =?utf-8?B?bTR1ZUVQK0xoU1NDazFST2JFUC9qczArQThlck0yM3ozYW5ZSlc5Sm1CQnp3?= =?utf-8?B?NDdjaUFMemF3ZE5Lbi9hcDl2eFFSeEh2M0VRdzZqWEpianFDS0d2cE9seS83?= =?utf-8?B?VGRJSG9QTmJCN3ZGcUlsWVBRMVFsT25XaWd2aDJKdFI1b1RLVWp6T2dMVmk0?= =?utf-8?B?TW1QZ3ptVERBVkJVY25oSHkycXIrajZQVCs1bVBnT2sxMjU5VStEZCs2Y2ZK?= =?utf-8?B?UXVHOWphbHlKbEhqWDQ1dmtnYTY4TW9XdklUZzhLYkNLaGVKUDdiU2daZlJv?= =?utf-8?B?NlBjb2JleWdpbFduQUJ6TzBlbW5MTFo2b1JQWkdLQThrL0F2UDZ3K3l3V0JS?= =?utf-8?B?L2E4bFBLaXVCWnFqalpDUTVEUWJZR0JHM0R2OWRKMEl6enl1bTVRV0lGY3Jh?= =?utf-8?B?SndZV2tRS1QrWnlZK3FNZTc0Um1xUlZDbTFpMzZMMEZwenovUnFxd0dSdDJP?= =?utf-8?B?c2pPS0lXekNQUENsTWtNQzdQUEJFdTFjOURSbjdIZm1WMUZUcnZrL1FtVlBi?= =?utf-8?B?RUxyTmM2VVJWTXloMW5GYVlkUUVoYTdrRlFLQXp2RTdkUkJnNC8vU3hFSE1J?= =?utf-8?B?TGpqelB2RWYxbkRtTkVMd3pUQkJjTlE5RXRmTXdOS21PdWtiNWg5S0UzOHBL?= =?utf-8?B?aExzTnJhK3RMWXpuV21hZmRTYjBVc3lETHVsbU5sMFk0dndMZFlWNExCVjIx?= =?utf-8?B?SGZaMzZSYUFkU1dzL3Q4Wnk3UitKZEo2Z0pxVElHU1ZicU1xSDQ4RkljV3dE?= =?utf-8?B?RlduVWxVUnovcFB0d2ZOc28wWGNocWpqYnFmOVlMZWR1SStrV2RNa3hNQ0pV?= =?utf-8?B?bHVRd25qWHAvbkt6Z09zaUFBSngrZnVRYUxVK0ZJek1UTlAzeGNFdWZHU3Ba?= =?utf-8?B?YU9pUmg2ZmROZmhrTmh1N3ZOaHZ3T3IzQjQxMjRNcExNTWNQV2h5dExSamw1?= =?utf-8?B?NFk0NS9RWWJzTXNyZTNieTdUSytTM0VJSjlkK2RVZ3ovZVVkMFhmaUg4N2VZ?= =?utf-8?B?bEErQms5eHF4a1pWMXQ2WlNYbEI1Z05RdVBTUnoyY0VHWEJYWmErREpBMEgv?= =?utf-8?B?TnhyV2NhbTU2eUpPM0w5WEtiaUduQ1N1cWIvT08wQy9Kc3c9PQ==?= 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:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SEZBdVRTRVZGNXNXMmZCWFJmQURRYkV1QkVLSzF1YUlGQ0NVQ0VQWTVXL01Z?= =?utf-8?B?bitsRnFsanRDWmVUSjNKb0syd1pRMksvL21iQlhBMUt2RWR0RWZrdWlUZ3Ro?= =?utf-8?B?NVlFeklPcjB3VytqZ1BpUk0yTWxsd05aUVFOMWVxbWFjbmpBS2MxeUJ3RG1r?= =?utf-8?B?RlFmTVlwSExyWDFMajB4c2dKVjliM253YXJtaDQ2Z3V0STN5alVKanoyYnVQ?= =?utf-8?B?elUrb0F4QTlJU1VkeTkxM1JVWjIxTjNjSitGTjdrekl3TEwrbUVibEZSS3Ux?= =?utf-8?B?QXBFMWltWmNvUmJkZEFrYlVVelVROFNndVlpQ0JNdkx5MUhFcElSdFloM05t?= =?utf-8?B?eStNUTVIYnNhUTRCeEZ2RWw3aWVod2dWdGpGWk9EOFRsUG1pM1dwSGN4bWZw?= =?utf-8?B?b2ozV2d0MWVUaEdKMjNvWTFWNTFRMEtEdVhJcGZvK09RMUswWUlDU0NaSEJX?= =?utf-8?B?RUFQUlI0Qm1oQVRsMUxxVituc3BocVNBbDUzbzJCekpiTmxSd3NaS0ZZcW16?= =?utf-8?B?NHhmcER3cWtzVlV6UldPZEVlMVRsVU0wdVNaTnF0ZXB1Zm4vRUJvc01CMG94?= =?utf-8?B?TjN5QVVpVkFWMmdYTVFINTJZOUNUQjN0RVlvenhvNnNZUUdzc1NXUUI0bUhV?= =?utf-8?B?Sk8yVCt6aXU3eHhtODdJblpjVjAzTEYzVzNoM3hqR09tSmhBOHJOMURuT05V?= =?utf-8?B?LzdPYURiajFyYnhQSEZPcFlPL1dBZmhWOUk1OTFmbWhKRi8zaVNrTGZPNzV5?= =?utf-8?B?bU5TeUM1cFcwaUZHWVliVzgvNGM1N3NpVkFwVHplbzdEQ3llajdNTkNDb3N1?= =?utf-8?B?VS9pM211YlVwT1JIZkJVL3JwWDgwVUpZWWN6U1B6UGtXaEh5OXhPQVlCYTdw?= =?utf-8?B?aXYyWm5GRVJlVXYwd3l4d0NMVUJ5ZEhZZUJTUWpCN3FOdHI5UDd2ZFFaNGh4?= =?utf-8?B?cC8zV1daaHYyeW9PQ2U4MlQyZlFIOVRKZThaNUlXSkVIZFJESkYrMW0zL1dx?= =?utf-8?B?Rm5wSzEwcDAwNHB4TFNHUGtCd0ZZdzdaaVZMVk8vTUcwYWxFZklpM29BVmI1?= =?utf-8?B?bzVvM1JiZ1FtcWJUdzVXZXNCTFZXMVBJM2JrallhQ1ZFVGZ3R1l4UmZ5Vlkr?= =?utf-8?B?c1ZaMThzUGE4SVpjWGlRenpvUklpZmJ3bmcxMXBoeWpKS2R1WVRJZml0Z0Fu?= =?utf-8?B?TUFWQy9vcm5kaStZNTAxQmQwN2hRVTl1eng4OXJjWmx6ejdkdzlqTitaNVZU?= =?utf-8?B?ZUp4NkxicmVWMkplZU9RbDVvaE90ZGRKdC82bHhqbXd2M1RIYUdiWmxwWWRl?= =?utf-8?B?bHlqbWFhZTZtWGZYK0tkTUw4N1B4emIweVQ3QnVrV2pXT2JuanJia0F5Q0Uv?= =?utf-8?B?Mm9GNDdMcHR3NkVCNDlsc0NyZDhSM0lMWExIOWgvcWNGUGZJYlNvd1dLRjdo?= =?utf-8?B?SUMxYkYrdTNabFhYdjRYQUROd3N6bzB1bVhONlpkenhNRHA2dGg3R3Zvd3Qw?= =?utf-8?B?RjRtbzdVNnJQdjJvVDIvbFRlbWRpczQwUFJuVER5dVk2aFpKVFpJZ0gyNmFi?= =?utf-8?B?S1ppZkE0ckg4VElvS2xDQzkvZzR4MEZzVnBBMFJzMGNsY1IxNkN5QUpoSVhp?= =?utf-8?B?alJWUFh6OTM3Q0dLT2lXTmdWWUtkdmM0ZSt1dGlnL0hOb3pmNjUzVHpFZUF1?= =?utf-8?B?Q0pHeEM3Q0F3YUxzZjFwRWl6Q1IzOWZkdnJTSGtoeittWE9DSUxMWG1wRkhK?= =?utf-8?B?VW1qOWFQdk9lRC9sVndiWUQvdW1SMkhUdFI4QzVVdm5JMkNBNmhjZjZOdHp2?= =?utf-8?B?d3hlYlFYODMvaU8xaDA5NGRpZEJLMVdpKzdQN3hOTlpISS8yNHB0eVkrSmFM?= =?utf-8?B?dFZqNnZtTmJoVVlPVTljc1NXbFdNdkkxV2lFbzhoWW00eXdNbTRsZnRWRDlp?= =?utf-8?B?NWsxaUowZFgvV1h5elVkYnpnWHUwQytqckZ4b28vTFlna0F5QzFTTE5ub0s2?= =?utf-8?B?SlplVlhJUm4rblg5dHA0YWcvbHMwaVZ3dWltcUZxZ3RvNDVLRlFEUTJQZTcw?= =?utf-8?B?QzFKd3ZxVEJxakc5VS81S3ZFaTNrOXozakVzd2phcWZXdS9wejdKTUFnU3Ry?= =?utf-8?Q?LD9M=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: e9830af0-a75f-4f97-6268-08dcd31c7a05 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2024 11:17:23.8903 (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: XWWlVp4ZIo8tZRLIo7z7U5MXcldfjkCoC8puZqCKaVCudF8h9nFtejqAyVADH1D5LC1HxAeNJhYUKSk1Jfz9pA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6103 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 W0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEFNRCBJbnRlcm5hbCBEaXN0cmlidXRpb24gT25seV0N Cg0KSGkgSHVpc29uZywNCg0KUGxlYXNlIGZpbmQgbXkgcmVzcG9uc2UgaW5saW5lLg0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGxpaHVpc29uZyAoQykgPGxpaHVpc29u Z0BodWF3ZWkuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjcsIDIwMjQgMTo1MSBQTQ0K PiBUbzogVHVtbWFsYSwgU2l2YXByYXNhZCA8U2l2YXByYXNhZC5UdW1tYWxhQGFtZC5jb20+DQo+ IENjOiBkZXZAZHBkay5vcmc7IGRhdmlkLmh1bnRAaW50ZWwuY29tOyBhbmF0b2x5LmJ1cmFrb3ZA aW50ZWwuY29tOw0KPiByYWR1Lm5pY29sYXVAaW50ZWwuY29tOyBjcmlzdGlhbi5kdW1pdHJlc2N1 QGludGVsLmNvbTsgamVyaW5qQG1hcnZlbGwuY29tOw0KPiBrb25zdGFudGluLmFuYW55ZXZAaHVh d2VpLmNvbTsgWWlnaXQsIEZlcnJ1aCA8RmVycnVoLllpZ2l0QGFtZC5jb20+Ow0KPiBnYWtoaWxA bWFydmVsbC5jb20NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzRdIHBvd2VyOiByZWZhY3Rv ciBjb3JlIHBvd2VyIG1hbmFnZW1lbnQgbGlicmFyeQ0KPg0KPiBDYXV0aW9uOiBUaGlzIG1lc3Nh Z2Ugb3JpZ2luYXRlZCBmcm9tIGFuIEV4dGVybmFsIFNvdXJjZS4gVXNlIHByb3BlciBjYXV0aW9u DQo+IHdoZW4gb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIHJlc3BvbmRp bmcuDQo+DQo+DQo+IEhpIFNpdmFwcmFzYSwNCj4NCj4gU29tZSBjb21tZW50cyBpbmxpbmUuDQo+ DQo+IC9IdWlzb25nDQo+DQo+IOWcqCAyMDI0LzgvMjYgMjE6MDYsIFNpdmFwcmFzYWQgVHVtbWFs YSDlhpnpgZM6DQo+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY29tcHJlaGVuc2l2ZSByZWZh Y3RvciB0byB0aGUgY29yZSBwb3dlcg0KPiA+IG1hbmFnZW1lbnQgbGlicmFyeS4gVGhlIHByaW1h cnkgZm9jdXMgaXMgb24gaW1wcm92aW5nIG1vZHVsYXJpdHkgYW5kDQo+ID4gb3JnYW5pemF0aW9u IGJ5IHJlbG9jYXRpbmcgc3BlY2lmaWMgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBmcm9tIHRoZQ0K PiA+ICdsaWIvcG93ZXInIGRpcmVjdG9yeSB0byBkZWRpY2F0ZWQgZGlyZWN0b3JpZXMgd2l0aGlu DQo+ID4gJ2RyaXZlcnMvcG93ZXIvY29yZS8qJy4gVGhlIGFkanVzdG1lbnQgb2YgbWVzb24uYnVp bGQgZmlsZXMgZW5hYmxlcw0KPiA+IHRoZSBzZWxlY3RpdmUgYWN0aXZhdGlvbiBvZiBpbmRpdmlk dWFsIGRyaXZlcnMuDQo+ID4gVGhlc2UgY2hhbmdlcyBjb250cmlidXRlIHRvIGEgc2lnbmlmaWNh bnQgZW5oYW5jZW1lbnQgaW4gY29kZQ0KPiA+IG9yZ2FuaXphdGlvbiwgcHJvdmlkaW5nIGEgY2xl YXJlciBzdHJ1Y3R1cmUgZm9yIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuDQo+ID4gVGhlIHJlZmFj dG9yIGFpbXMgdG8gaW1wcm92ZSBvdmVyYWxsIGNvZGUgY2xhcml0eSBhbmQgYm9vc3QNCj4gPiBt YWludGFpbmFiaWxpdHkuIEFkZGl0aW9uYWxseSwgaXQgZXN0YWJsaXNoZXMgYSBmb3VuZGF0aW9u IGZvciBmdXR1cmUNCj4gPiBkZXZlbG9wbWVudCwgYWxsb3dpbmcgZm9yIG1vcmUgZm9jdXNlZCB3 b3JrIG9uIGluZGl2aWR1YWwgZHJpdmVycyBhbmQNCj4gPiBzZWFtbGVzcyBpbnRlZ3JhdGlvbiBv ZiBmb3J0aGNvbWluZyBlbmhhbmNlbWVudHMuDQo+ID4NCj4gPiB2MjoNCj4gPiAgIC0gYWRkZWQg TlVMTCBjaGVjayBmb3IgZ2xvYmFsX2NvcmVfb3BzIGluIHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMN Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNpdmFwcmFzYWQgVHVtbWFsYSA8c2l2YXByYXNhZC50 dW1tYWxhQGFtZC5jb20+DQo+ID4gLS0tDQo+ID4gICBkcml2ZXJzL21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgLi4uL3Bvd2VyL2FjcGkvYWNwaV9j cHVmcmVxLmMgICAgICAgICAgICAgICAgIHwgIDIyICstDQo+ID4gICAuLi4vcG93ZXIvYWNwaS9h Y3BpX2NwdWZyZXEuaCAgICAgICAgICAgICAgICAgfCAgIDYgKy0NCj4gPiAgIGRyaXZlcnMvcG93 ZXIvYWNwaS9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAxMCArDQo+ID4gICAuLi4vcG93 ZXIvYW1kX3BzdGF0ZS9hbWRfcHN0YXRlX2NwdWZyZXEuYyAgICAgfCAgMjQgKy0NCj4gPiAgIC4u Li9wb3dlci9hbWRfcHN0YXRlL2FtZF9wc3RhdGVfY3B1ZnJlcS5oICAgICB8ICAgOCArLQ0KPiA+ ICAgZHJpdmVycy9wb3dlci9hbWRfcHN0YXRlL21lc29uLmJ1aWxkICAgICAgICAgIHwgIDEwICsN Cj4gPiAgIC4uLi9wb3dlci9jcHBjL2NwcGNfY3B1ZnJlcS5jICAgICAgICAgICAgICAgICB8ICAy MiArLQ0KPiA+ICAgLi4uL3Bvd2VyL2NwcGMvY3BwY19jcHVmcmVxLmggICAgICAgICAgICAgICAg IHwgICA4ICstDQo+ID4gICBkcml2ZXJzL3Bvd2VyL2NwcGMvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgfCAgMTAgKw0KPiA+ICAgLi4uL3Bvd2VyL2t2bV92bX0vZ3Vlc3RfY2hhbm5lbC5jICAg ICAgICAgICAgIHwgICAwDQo+ID4gICAuLi4vcG93ZXIva3ZtX3ZtfS9ndWVzdF9jaGFubmVsLmgg ICAgICAgICAgICAgfCAgIDANCj4gPiAgIC4uLi9wb3dlci9rdm1fdm0va3ZtX3ZtLmMgICAgICAg ICAgICAgICAgICAgICB8ICAyMiArLQ0KPiA+ICAgLi4uL3Bvd2VyL2t2bV92bS9rdm1fdm0uaCAg ICAgICAgICAgICAgICAgICAgIHwgICA2ICstDQo+ID4gICBkcml2ZXJzL3Bvd2VyL2t2bV92bS9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgMTYgKw0KPiA+ICAgZHJpdmVycy9wb3dlci9tZXNv bi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gPiAgIGRyaXZlcnMvcG93ZXIv cHN0YXRlL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAxMCArDQo+ID4gICAuLi4vcG93ZXIv cHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMgICAgICAgICAgICAgfCAgMjIgKy0NCj4gPiAgIC4uLi9w b3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEuaCAgICAgICAgICAgICB8ICAgNiArLQ0KPiA+ICAg bGliL3Bvd2VyL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICstDQo+ ID4gICBsaWIvcG93ZXIvcG93ZXJfY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0NCj4gPiAgIGxpYi9wb3dlci9wb3dlcl9jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArLQ0KPiA+ICAgbGliL3Bvd2VyL3J0ZV9wb3dlci5jICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMjkxICsrKysrKy0tLS0tLS0tLS0tLQ0KPiA+ICAgbGliL3Bvd2VyL3J0ZV9wb3dlci5o ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTM5ICsrKysrKy0tLQ0KPiA+ICAgbGliL3Bvd2Vy L3J0ZV9wb3dlcl9jb3JlX29wcy5oICAgICAgICAgICAgICAgIHwgMjA4ICsrKysrKysrKysrKysN Cj4gPiAgIGxpYi9wb3dlci92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NCArDQo+ID4gICAyNiBmaWxlcyBjaGFuZ2VkLCA2MjEgaW5zZXJ0aW9ucygrKSwgMjcxIGRlbGV0 aW9ucygtKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuYyA9PiBk cml2ZXJzL3Bvd2VyL2FjcGkvYWNwaV9jcHVmcmVxLmMNCj4gKDk1JSkNCj4gPiAgIHJlbmFtZSBs aWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmggPT4gZHJpdmVycy9wb3dlci9hY3BpL2FjcGlf Y3B1ZnJlcS5oDQo+ICg5OCUpDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wb3dl ci9hY3BpL21lc29uLmJ1aWxkDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2FtZF9wc3Rh dGVfY3B1ZnJlcS5jID0+DQo+IGRyaXZlcnMvcG93ZXIvYW1kX3BzdGF0ZS9hbWRfcHN0YXRlX2Nw dWZyZXEuYyAoOTUlKQ0KPiA+ICAgcmVuYW1lIGxpYi9wb3dlci9wb3dlcl9hbWRfcHN0YXRlX2Nw dWZyZXEuaCA9Pg0KPiBkcml2ZXJzL3Bvd2VyL2FtZF9wc3RhdGUvYW1kX3BzdGF0ZV9jcHVmcmVx LmggKDk3JSkNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL2FtZF9wc3Rh dGUvbWVzb24uYnVpbGQNCj4gPiAgIHJlbmFtZSBsaWIvcG93ZXIvcG93ZXJfY3BwY19jcHVmcmVx LmMgPT4gZHJpdmVycy9wb3dlci9jcHBjL2NwcGNfY3B1ZnJlcS5jDQo+ICg5NSUpDQo+ID4gICBy ZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2NwcGNfY3B1ZnJlcS5oID0+IGRyaXZlcnMvcG93ZXIvY3Bw Yy9jcHBjX2NwdWZyZXEuaA0KPiAoOTclKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvcG93ZXIvY3BwYy9tZXNvbi5idWlsZA0KPiA+ICAgcmVuYW1lIHtsaWIvcG93ZXIgPT4gZHJp dmVycy9wb3dlci9rdm1fdm19L2d1ZXN0X2NoYW5uZWwuYyAoMTAwJSkNCj4gPiAgIHJlbmFtZSB7 bGliL3Bvd2VyID0+IGRyaXZlcnMvcG93ZXIva3ZtX3ZtfS9ndWVzdF9jaGFubmVsLmggKDEwMCUp DQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2t2bV92bS5jID0+IGRyaXZlcnMvcG93ZXIv a3ZtX3ZtL2t2bV92bS5jICg4MiUpDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX2t2bV92 bS5oID0+IGRyaXZlcnMvcG93ZXIva3ZtX3ZtL2t2bV92bS5oICg5OCUpDQo+ID4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9wb3dlci9rdm1fdm0vbWVzb24uYnVpbGQNCj4gPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3Bvd2VyL21lc29uLmJ1aWxkDQo+ID4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9wb3dlci9wc3RhdGUvbWVzb24uYnVpbGQNCj4gPiAgIHJlbmFtZSBs aWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYyA9Pg0KPiBkcml2ZXJzL3Bvd2VyL3BzdGF0 ZS9wc3RhdGVfY3B1ZnJlcS5jICg5NiUpDQo+ID4gICByZW5hbWUgbGliL3Bvd2VyL3Bvd2VyX3Bz dGF0ZV9jcHVmcmVxLmggPT4NCj4gZHJpdmVycy9wb3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEu aCAoOTglKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9wb3dlci9ydGVfcG93ZXJfY29y ZV9vcHMuaA0KPiBIb3cgYWJvdXQgdXNlIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5IHN0cnVjdHVy ZT8NCj4gKkZvciBwb3dlciBsaWJzKg0KPiBsaWIvcG93ZXIvcG93ZXJfY29tbW9uLioNCj4gbGli L3Bvd2VyL3J0ZV9wb3dlcl9wbWRfbWdtdC4qDQo+IGxpYi9wb3dlci9ydGVfcG93ZXJfY3B1ZnJl cV9hcGkuKiDvvIhyZXBsYWNpbmcgcnRlX3Bvd2VyLmMgZmlsZSBtYXliZSBzaW1wbGUgZm9yIHVz Lg0KPiBidXQgSSdtIG5vdCBzdXJlIGlmIHdlIGNhbiBwdXQgdGhlIGluaXQgb2YgY29yZSwgdW5j b3JlIGFuZCBwbWQgbWdtdCB0bw0KPiBydGVfcG93ZXJfaW5pdC5jIGluIHJ0ZV9wb3dlci5jLikN Cj4gbGliL3Bvd2VyL3J0ZV9wb3dlcl91bmNvcmVfZnJlcV9hcGkuKg0KWWVzLCByZW5hbWluZyBy dGVfcG93ZXIuYyBpcyBkZWZpbml0ZWx5IGEgcG9zc2libGUgaW5jcmVtZW50YWwgY2hhbmdlIHRo YXQgY291bGQgYmUgY29uc2lkZXJlZCBsYXRlci4NCkhvd2V2ZXIsIGZvciB0aGUgdGltZSBiZWlu Zywgb3VyIGZvY3VzIHdpbGwgYmUgb24gcmVmYWN0b3JpbmcgdGhlIGNwdWZyZXEgZHJpdmVycyBv bmx5Lg0KPg0KPiAqQW5kIGhhcyBkaXJlY3RvcmllcyB1bmRlciBkcml2ZXJzL3Bvd2VyOioNCj4g MT4gRm9yIGNvcmUgZHZmcyBkcml2ZXI6DQo+IGRyaXZlcnMvcG93ZXIvY3B1ZnJlcS9hY3BpX2Nw dWZyZXEuYw0KPiBkcml2ZXJzL3Bvd2VyL2NwdWZyZXEvY3BwY19jcHVmcmVxLmMNCj4gZHJpdmVy cy9wb3dlci9jcHVmcmVxL2FtZF9wc3RhdGVfY3B1ZnJlcS5jDQo+IGRyaXZlcnMvcG93ZXIvY3B1 ZnJlcS9pbnRlbF9wc3RhdGVfY3B1ZnJlcS5jDQo+IGRyaXZlcnMvcG93ZXIvY3B1ZnJlcS9rdm1f Y3B1ZnJlcS5jDQo+IFRoZSBjb2RlIG9mIGVhY2ggY3B1ZnJlcSBkcml2ZXIgaXMgbm90IHRvbyBt dWNoIGFuZCBkb2Vzbid0IHByb2JhYmx5IGluY3JlYXNlLiBTbw0KPiBkb24ndCBuZWVkIHRvIHVz ZSBhIGRpcmVjdG9yeSBmb3IgaXQuDQo+DQo+IDI+IEZvciB1bmNvcmUgZHZmcyBkcml2ZXI6DQo+ IGRyaXZlcnMvcG93ZXIvdW5jb3JlZnJlcS9pbnRlbF91bmNvcmUuKg0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lc29uLmJ1aWxkIGIvZHJpdmVycy9tZXNvbi5idWlsZCBpbmRleA0KPiA+IDY2 OTMxZDQyNDEuLjlkNzdlMGRlYWIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZXNvbi5idWls ZA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVzb24uYnVpbGQNCj4gPiBAQCAtMjksNiArMjksNyBAQCBz dWJkaXJzID0gWw0KPiA+ICAgICAgICAgICAnZXZlbnQnLCAgICAgICAgICAjIGRlcGVuZHMgb24g Y29tbW9uLCBidXMsIG1lbXBvb2wgYW5kIG5ldC4NCj4gPiAgICAgICAgICAgJ2Jhc2ViYW5kJywg ICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiBhbmQgYnVzLg0KPiA+ICAgICAgICAgICAnZ3B1Jywg ICAgICAgICAgICAjIGRlcGVuZHMgb24gY29tbW9uIGFuZCBidXMuDQo+ID4gKyAgICAgICAgJ3Bv d2VyJywgICAgICAgICAgIyBkZXBlbmRzIG9uIGNvbW1vbiAoaW4gZnV0dXJlKS4NCj4gPiAgIF0N Cj4gPg0KPiA+ICAgaWYgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQ0KPiA+IGRpZmYgLS1naXQgYS9s aWIvcG93ZXIvcG93ZXJfYWNwaV9jcHVmcmVxLmMNCj4gPiBiL2RyaXZlcnMvcG93ZXIvYWNwaS9h Y3BpX2NwdWZyZXEuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTUlDQo+ID4gcmVuYW1lIGZyb20g bGliL3Bvd2VyL3Bvd2VyX2FjcGlfY3B1ZnJlcS5jIHJlbmFtZSB0bw0KPiA+IGRyaXZlcnMvcG93 ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiBkbyBub3Qgc3VnZ2VzdCB0byBjcmVhdGUgb25lIGRp cmVjdG9yeSBmb3IgZWFjaCBjcHVmcmVxIGRyaXZlci4NCj4gQmVjYXVzZSBwc3RhdGUgZHJpdmVy cyBhbHNvIGNvbXBseSB3aXRoIEFDUEkgc3BlYywgcmlnaHTvvJ8NCj4gSW4gYWRkaXRpb24sIHRo ZSBjb2RlIG9mIGVhY2ggY3B1ZnJlcSBkcml2ZXJzIGFyZSBub3QgdG9vIG11Y2guDQo+IFRoZXJl IGlzIGp1c3Qgb25lIGZpbGUgdW5kZXIgb25lIGRpcmVjdG9yeSB3aGljaCBpcyBub3QgZ29vZC4N Ck9uZSBvZiBvdXIgb2JqZWN0aXZlcyBmb3IgdGhlIHJlZmFjdG9yaW5nIGlzIHRvIHNlbGVjdGl2 ZWx5IGRpc2FibGUgbm9uLWVzc2VudGlhbCBkcml2ZXJzIHVzaW5nIE1lc29uIGJ1aWxkIG9wdGlv bnMuDQpIb3dldmVyLCBieSByZWFycmFuZ2luZyB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgd2Ugcmlz ayBkaXNydXB0aW5nIHRoaXMgY2FwYWJpbGl0eS4NCj4gPiBpbmRleCA4MTk5NmUxYzEzLi44NjM3 YzY5NzAzIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9hY3BpX2NwdWZyZXEuYw0K PiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvYWNwaS9hY3BpX2NwdWZyZXEuYw0KPiA+IEBAIC0xMCw3 ICsxMCw3IEBADQo+ID4gICAjaW5jbHVkZSA8cnRlX3N0ZGF0b21pYy5oPg0KPiA+ICAgI2luY2x1 ZGUgPHJ0ZV9zdHJpbmdfZm5zLmg+DQo+ID4NCj4gPiAtI2luY2x1ZGUgInBvd2VyX2FjcGlfY3B1 ZnJlcS5oIg0KPiA+ICsjaW5jbHVkZSAiYWNwaV9jcHVmcmVxLmgiDQo+ID4gICAjaW5jbHVkZSAi cG93ZXJfY29tbW9uLmgiDQo+ID4NCj4gPC4uLj4NCj4gPiAraWYgbm90IGlzX2xpbnV4DQo+ID4g KyAgICBidWlsZCA9IGZhbHNlDQo+ID4gKyAgICByZWFzb24gPSAnb25seSBzdXBwb3J0ZWQgb24g TGludXgnDQo+ID4gK2VuZGlmDQo+ID4gK3NvdXJjZXMgPSBmaWxlcygncHN0YXRlX2NwdWZyZXEu YycpDQo+ID4gKw0KPiA+ICtkZXBzICs9IFsncG93ZXInXQ0KPiA+IGRpZmYgLS1naXQgYS9saWIv cG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEuYw0KPiA+IGIvZHJpdmVycy9wb3dlci9wc3RhdGUv cHN0YXRlX2NwdWZyZXEuYw0KPiA+IHNpbWlsYXJpdHkgaW5kZXggOTYlDQo+ID4gcmVuYW1lIGZy b20gbGliL3Bvd2VyL3Bvd2VyX3BzdGF0ZV9jcHVmcmVxLmMgcmVuYW1lIHRvDQo+ID4gZHJpdmVy cy9wb3dlci9wc3RhdGUvcHN0YXRlX2NwdWZyZXEuYw0KPiBwc3RhdGVfY3B1ZnJlcS5jIGlzIGFj dHVhbGx5IGludGVsX3BzdGF0ZSBjcHVmcmVxIGRyaXZlciwgcmlnaHQ/DQo+IFNvIGhvdyBhYm91 dCBtb2RpZnkgdGhpcyBmaWxlIG5hbWUgdG8gaW50ZWxfcHN0YXRlX2NwdWZyZXEuYz8NClllcywg d2lsbCBmaXggdGhpcyBpbiBuZXh0IHZlcnNpb24uDQo+ID4gaW5kZXggMjM0MzEyMTYyMS4uYzMy YjFhZGFiYyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvcG93ZXIvcG93ZXJfcHN0YXRlX2NwdWZyZXEu Yw0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvcHN0YXRlL3BzdGF0ZV9jcHVmcmVxLmMNCj4gPiBA QCAtMTUsNyArMTUsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9zdGRhdG9taWMuaD4NCj4gPg0K PiA+ICAgI2luY2x1ZGUgInJ0ZV9wb3dlcl9wbWRfbWdtdC5oIg0KPiA+IC0jaW5jbHVkZSAicG93 ZXJfcHN0YXRlX2NwdWZyZXEuaCINCj4gPiArI2luY2x1ZGUgInBzdGF0ZV9jcHVmcmVxLmgiDQo+ ID4gICAjaW5jbHVkZSAicG93ZXJfY29tbW9uLmgiDQo+ID4NCj4gPiAgIC8qIG1hY3JvcyB1c2Vk IGZvciByb3VuZGluZyBmcmVxdWVuY3kgdG8gbmVhcmVzdCAxMDAwMDAgKi8gQEAgLTg4OCwzDQo+ ID4gKzg4OCwyMyBAQCBpbnQgcG93ZXJfcHN0YXRlX2dldF9jYXBhYmlsaXRpZXModW5zaWduZWQg aW50IGxjb3JlX2lkLA0KPiA+DQo+ID4gICAgICAgcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4gKw0K PiA8Li4uPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvcG93ZXIvcG93ZXJfY29tbW9uLmMgYi9saWIv cG93ZXIvcG93ZXJfY29tbW9uLmMgaW5kZXgNCj4gPiA1OTA5ODZkNWVmLi42YzA2NDExZThiIDEw MDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9wb3dlcl9jb21tb24uYw0KPiA+ICsrKyBiL2xpYi9w b3dlci9wb3dlcl9jb21tb24uYw0KPiA+IEBAIC0xMiw3ICsxMiw3IEBADQo+ID4NCj4gPiAgICNp bmNsdWRlICJwb3dlcl9jb21tb24uaCINCj4gPg0KPiA+IC1SVEVfTE9HX1JFR0lTVEVSX0RFRkFV TFQocG93ZXJfbG9ndHlwZSwgSU5GTyk7DQo+ID4gK1JURV9MT0dfUkVHSVNURVJfREVGQVVMVChy dGVfcG93ZXJfbG9ndHlwZSwgSU5GTyk7DQo+ID4NCj4gPiAgICNkZWZpbmUgUE9XRVJfU1lTRklM RV9TQ0FMSU5HX0RSSVZFUiAgIFwNCj4gPiAgICAgICAgICAgICAgICIvc3lzL2RldmljZXMvc3lz dGVtL2NwdS9jcHUldS9jcHVmcmVxL3NjYWxpbmdfZHJpdmVyIg0KPiA+IGRpZmYgLS1naXQgYS9s aWIvcG93ZXIvcG93ZXJfY29tbW9uLmggYi9saWIvcG93ZXIvcG93ZXJfY29tbW9uLmggaW5kZXgN Cj4gPiA4M2Y3NDJmNDJhLi43Njc2ODZlZTEyIDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9wb3dlci9w b3dlcl9jb21tb24uaA0KPiA+ICsrKyBiL2xpYi9wb3dlci9wb3dlcl9jb21tb24uaA0KPiA+IEBA IC02LDEyICs2LDEzIEBADQo+ID4gICAjZGVmaW5lIF9QT1dFUl9DT01NT05fSF8NCj4gPg0KPiA+ ICAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gPiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4N Cj4gPiAgICNpbmNsdWRlIDxydGVfbG9nLmg+DQo+ID4NCj4gPiAgICNkZWZpbmUgUlRFX1BPV0VS X0lOVkFMSURfRlJFUV9JTkRFWCAofjApDQo+ID4NCj4gPiAtZXh0ZXJuIGludCBwb3dlcl9sb2d0 eXBlOw0KPiA+IC0jZGVmaW5lIFJURV9MT0dUWVBFX1BPV0VSIHBvd2VyX2xvZ3R5cGUNCj4gPiAr ZXh0ZXJuIGludCBydGVfcG93ZXJfbG9ndHlwZTsNCj4gPiArI2RlZmluZSBSVEVfTE9HVFlQRV9Q T1dFUiBydGVfcG93ZXJfbG9ndHlwZQ0KPiA+ICAgI2RlZmluZSBQT1dFUl9MT0cobGV2ZWwsIC4u LikgXA0KPiA+ICAgICAgIFJURV9MT0dfTElORShsZXZlbCwgUE9XRVIsICIiIF9fVkFfQVJHU19f KQ0KPiA+DQo+ID4gQEAgLTIzLDEzICsyNCwyNCBAQCBleHRlcm4gaW50IHBvd2VyX2xvZ3R5cGU7 DQo+ID4gICAjZW5kaWYNCj4gPg0KPiA+ICAgLyogY2hlY2sgaWYgc2NhbGluZyBkcml2ZXIgbWF0 Y2hlcyBvbmUgd2Ugd2FudCAqLw0KPiA+ICtfX3J0ZV9pbnRlcm5hbA0KPiA+ICAgaW50IGNwdWZy ZXFfY2hlY2tfc2NhbGluZ19kcml2ZXIoY29uc3QgY2hhciAqZHJpdmVyKTsNCj4gPiArDQo+ID4g K19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcG93ZXJfc2V0X2dvdmVybm9yKHVuc2lnbmVkIGlu dCBsY29yZV9pZCwgY29uc3QgY2hhciAqbmV3X2dvdmVybm9yLA0KPiA+ICAgICAgICAgICAgICAg Y2hhciAqb3JpZ19nb3Zlcm5vciwgc2l6ZV90IG9yaWdfZ292ZXJub3JfbGVuKTsNCj4gc3VnZ2Vz dCB0aGF0IG1vdmUgY3B1ZnJlcSBpbnRlcmZhY2VzIGxpa2UgdGhpcyB0byB0aGUNCj4gcnRlX3Bv d2VyX2NwdWZyZXFfYXBpLiogSSBwcm9wb3NlZCBhYm92ZS4NClRoaXMgaXMgYW4gaW50ZXJuYWwg QVBJIGFuZCBpc27igJl0IGludGVuZGVkIGZvciBkaXJlY3QgdXNlIGJ5IGFwcGxpY2F0aW9ucy4N CkJ5IG1vdmluZyBpdCB0byBydGVfcG93ZXJfKiwgd2UgcmlzayBleHBvc2luZyBpdCBpbmFkdmVy dGVudGx5Lg0KDQo+IFRoZSBpbnRlcmZhY2VzIGluIHBvd2VyX2NvbW0uKiBjYW4gYmUgdXNlZCBi eSBhbGwgcG93ZXIgbW9kdWxlcywgbGlrZQ0KPiBjb3JlL3VuY29yZS9wbWQgbWdtdC4NCj4gPiAr DQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgb3Blbl9jb3JlX3N5c2ZzX2ZpbGUoRklM RSAqKmYsIGNvbnN0IGNoYXIgKm1vZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KPiA+ICAg ICAgICAgICAgICAgX19ydGVfZm9ybWF0X3ByaW50ZigzLCA0KTsNCj4gPiArDQo+ID4gK19fcnRl X2ludGVybmFsDQo+ID4gICBpbnQgcmVhZF9jb3JlX3N5c2ZzX3UzMihGSUxFICpmLCB1aW50MzJf dCAqdmFsKTsNCj4gPiArDQo+ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgcmVhZF9jb3Jl X3N5c2ZzX3MoRklMRSAqZiwgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuKTsNCj4gPiArDQo+ ID4gK19fcnRlX2ludGVybmFsDQo+ID4gICBpbnQgd3JpdGVfY29yZV9zeXNmc19zKEZJTEUgKmYs IGNvbnN0IGNoYXIgKnN0cik7DQo+ID4NCj4gPiAgICNlbmRpZiAvKiBfUE9XRVJfQ09NTU9OX0hf ICovDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93ZXIuYyBiL2xpYi9wb3dlci9y dGVfcG93ZXIuYw0KPiBUaGUgbmFtZSBvZiB0aGUgcnRlX3Bvd2VyLmMgZmlsZSBpcyBpbXByb3By aWF0ZSBub3cuIFRoZSBjb250ZXh0IGluIHRoaXMgZmlsZSBpcyBqdXN0IGZvcg0KPiBjcHVmcmVx LCByaWdodD8NCj4gU28gSSBzdWdnZXN0IHRoYXQgd2UgbmVlZCB0byByZW5hbWUgdGhpcyBmaWxl IGFzIHRoZSBydGVfcG93ZXJfY3B1ZnJlcV9hcGkuYw0KWWVzLCByZW5hbWluZyBydGVfcG93ZXIu YyB0byBydGVfcG93ZXJfY3B1ZnJlcS5jIGlzIGRlZmluaXRlbHkgYSBwb3NzaWJsZSBpbmNyZW1l bnRhbCBjaGFuZ2UNCmFuZCB3aWxsIGZpeCB0aGlzIGFzIGEgc2VwYXJhdGUgcGF0Y2guDQouDQoN Cj4gPiBpbmRleCAzNmMzZjNkYTk4Li4yYmY2ZDQwNTE3IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9w b3dlci9ydGVfcG93ZXIuYw0KPiA+ICsrKyBiL2xpYi9wb3dlci9ydGVfcG93ZXIuYw0KPiA+IEBA IC04LDE1MyArOCw4NiBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiA+DQo+ ID4gICAjaW5jbHVkZSAicnRlX3Bvd2VyLmgiDQo+ID4gLSNpbmNsdWRlICJwb3dlcl9hY3BpX2Nw dWZyZXEuaCINCj4gPiAtI2luY2x1ZGUgInBvd2VyX2NwcGNfY3B1ZnJlcS5oIg0KPiA+ICAgI2lu Y2x1ZGUgInBvd2VyX2NvbW1vbi5oIg0KPiA+IC0jaW5jbHVkZSAicG93ZXJfa3ZtX3ZtLmgiDQo+ ID4gLSNpbmNsdWRlICJwb3dlcl9wc3RhdGVfY3B1ZnJlcS5oIg0KPiA+IC0jaW5jbHVkZSAicG93 ZXJfYW1kX3BzdGF0ZV9jcHVmcmVxLmgiDQo+ID4NCj4gPiAtZW51bSBwb3dlcl9tYW5hZ2VtZW50 X2VudiBnbG9iYWxfZGVmYXVsdF9lbnYgPSBQTV9FTlZfTk9UX1NFVDsNCj4gPiArc3RhdGljIGVu dW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgZ2xvYmFsX2RlZmF1bHRfZW52ID0NCj4gUE1fRU5WX05P VF9TRVQ7DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpnbG9iYWxfcG93 ZXJfY29yZV9vcHM7DQo+ID4NCj4gPiAgIHN0YXRpYyBydGVfc3BpbmxvY2tfdCBnbG9iYWxfZW52 X2NmZ19sb2NrID0NCj4gPiBSVEVfU1BJTkxPQ0tfSU5JVElBTElaRVI7DQo+ID4gK3N0YXRpYyBS VEVfVEFJTFFfSEVBRCgsIHJ0ZV9wb3dlcl9jb3JlX29wcykgY29yZV9vcHNfbGlzdCA9DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIFRBSUxRX0hFQURfSU5JVElBTElaRVIoY29yZV9vcHNfbGlz dCk7DQo+ID4NCj4gPiAtLyogZnVuY3Rpb24gcG9pbnRlcnMgKi8NCj4gPiAtcnRlX3Bvd2VyX2Zy ZXFzX3QgcnRlX3Bvd2VyX2ZyZXFzICA9IE5VTEw7IC1ydGVfcG93ZXJfZ2V0X2ZyZXFfdA0KPiA+ IHJ0ZV9wb3dlcl9nZXRfZnJlcSA9IE5VTEw7IC1ydGVfcG93ZXJfc2V0X2ZyZXFfdCBydGVfcG93 ZXJfc2V0X2ZyZXEgPQ0KPiA+IE5VTEw7IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93 ZXJfZnJlcV91cCA9IE5VTEw7DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dl cl9mcmVxX2Rvd24gPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93 ZXJfZnJlcV9tYXggPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93 ZXJfZnJlcV9taW4gPSBOVUxMOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93 ZXJfdHVyYm9fc3RhdHVzOw0KPiA+IC1ydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJf ZnJlcV9lbmFibGVfdHVyYm87DQo+ID4gLXJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dl cl9mcmVxX2Rpc2FibGVfdHVyYm87DQo+ID4gLXJ0ZV9wb3dlcl9nZXRfY2FwYWJpbGl0aWVzX3Qg cnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXM7DQo+ID4gLQ0KPiA+IC1zdGF0aWMgdm9pZA0KPiA+ IC1yZXNldF9wb3dlcl9mdW5jdGlvbl9wdHJzKHZvaWQpDQo+ID4gKw0KPiA+ICtjb25zdCBjaGFy ICpwb3dlcl9lbnZfc3RyW10gPSB7DQo+ID4gKyAgICAgIm5vdCBzZXQiLA0KPiA+ICsgICAgICJh Y3BpIiwNCj4gPiArICAgICAia3ZtLXZtIiwNCj4gPiArICAgICAicHN0YXRlIiwNCj4gPiArICAg ICAiY3BwYyIsDQo+ID4gKyAgICAgImFtZC1wc3RhdGUiDQo+ID4gK307DQo+ID4gKw0KPiA+ICsv KiByZWdpc3RlciB0aGUgb3BzIHN0cnVjdCBpbiBydGVfcG93ZXJfY29yZV9vcHMsIHJldHVybiAw IG9uDQo+ID4gK3N1Y2Nlc3MuICovIGludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKHN0cnVjdCBy dGVfcG93ZXJfY29yZV9vcHMNCj4gPiArKmRyaXZlcl9vcHMpDQo+ID4gICB7DQo+ID4gLSAgICAg cnRlX3Bvd2VyX2ZyZXFzICA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX2dldF9mcmVxID0g TlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfc2V0X2ZyZXEgPSBOVUxMOw0KPiA+IC0gICAgIHJ0 ZV9wb3dlcl9mcmVxX3VwID0gTlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9kb3duID0g TlVMTDsNCj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9tYXggPSBOVUxMOw0KPiA+IC0gICAgIHJ0 ZV9wb3dlcl9mcmVxX21pbiA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX3R1cmJvX3N0YXR1 cyA9IE5VTEw7DQo+ID4gLSAgICAgcnRlX3Bvd2VyX2ZyZXFfZW5hYmxlX3R1cmJvID0gTlVMTDsN Cj4gPiAtICAgICBydGVfcG93ZXJfZnJlcV9kaXNhYmxlX3R1cmJvID0gTlVMTDsNCj4gPiAtICAg ICBydGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGllcyA9IE5VTEw7DQo+ID4gKyAgICAgaWYgKCFkcml2 ZXJfb3BzLT5pbml0IHx8ICFkcml2ZXJfb3BzLT5leGl0IHx8DQo+ID4gKyAgICAgICAgICAgICAh ZHJpdmVyX29wcy0+Y2hlY2tfZW52X3N1cHBvcnQgfHwgIWRyaXZlcl9vcHMtPmdldF9hdmFpbF9m cmVxcyB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmdldF9mcmVxIHx8ICFkcml2 ZXJfb3BzLT5zZXRfZnJlcSB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZlcl9vcHMtPmZyZXFf dXAgfHwgIWRyaXZlcl9vcHMtPmZyZXFfZG93biB8fA0KPiA+ICsgICAgICAgICAgICAgIWRyaXZl cl9vcHMtPmZyZXFfbWF4IHx8ICFkcml2ZXJfb3BzLT5mcmVxX21pbiB8fA0KPiA+ICsgICAgICAg ICAgICAgIWRyaXZlcl9vcHMtPnR1cmJvX3N0YXR1cyB8fCAhZHJpdmVyX29wcy0+ZW5hYmxlX3R1 cmJvIHx8DQo+ID4gKyAgICAgICAgICAgICAhZHJpdmVyX29wcy0+ZGlzYWJsZV90dXJibyB8fCAh ZHJpdmVyX29wcy0+Z2V0X2NhcHMpIHsNCj4gPiArICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIs ICJNaXNzaW5nIGNhbGxiYWNrcyB3aGlsZSByZWdpc3RlcmluZw0KPiA+ICsgcG93ZXIgb3BzIik7 DQo+IHR1cmJvX3N0YXR1cygpLCBlbmFibGVfdHVyYm8oKSBhbmQgZGlzYWJsZSB0dXJibygpIGFy ZSBub3QgbmVjZXNzYXJ5LCByaWdodD8NCk5vcGUsIHRoaXMgaXMgcmVxdWlyZWQgdG8gZ2V0IHRo ZSBjdXJyZW50IHN0YXR1cyB1bmxpa2UgdGhlIGNhcGFiaWxpdHkgQVBJIChnZXRfY2FwcygpKS4N Cj4gVGhlc2UgZGVwYW5kIG9uIHRoZSBjYXBhYmlsaXRpZXMgZnJvbSBnZXRfY2FwcygpLg0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICBUQUlMUV9JTlNFUlRfVEFJTCgmY29yZV9vcHNfbGlzdCwgZHJpdmVyX29wcywgbmV4dCk7 DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4g PiAgIHJ0ZV9wb3dlcl9jaGVja19lbnZfc3VwcG9ydGVkKGVudW0gcG93ZXJfbWFuYWdlbWVudF9l bnYgZW52KQ0KPiA+ICAgew0KPiA+IC0gICAgIHN3aXRjaCAoZW52KSB7DQo+ID4gLSAgICAgY2Fz ZSBQTV9FTlZfQUNQSV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2Fj cGlfY3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9QU1RB VEVfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9wc3RhdGVfY3B1ZnJl cV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+ID4g LSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfa3ZtX3ZtX2NoZWNrX3N1cHBvcnRlZCgpOw0KPiA+ IC0gICAgIGNhc2UgUE1fRU5WX0NQUENfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVy biBwb3dlcl9jcHBjX2NwdWZyZXFfY2hlY2tfc3VwcG9ydGVkKCk7DQo+ID4gLSAgICAgY2FzZSBQ TV9FTlZfQU1EX1BTVEFURV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2Vy X2FtZF9wc3RhdGVfY3B1ZnJlcV9jaGVja19zdXBwb3J0ZWQoKTsNCj4gPiAtICAgICBkZWZhdWx0 Og0KPiA+IC0gICAgICAgICAgICAgcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+IC0gICAgICAgICAg ICAgcmV0dXJuIC0xOw0KPiA+IC0gICAgIH0NCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2Nv cmVfb3BzICpvcHM7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChlbnYgPj0gUlRFX0RJTShwb3dlcl9l bnZfc3RyKSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsNCj4gPiArICAgICBS VEVfVEFJTFFfRk9SRUFDSChvcHMsICZjb3JlX29wc19saXN0LCBuZXh0KQ0KPiA+ICsgICAgICAg ICAgICAgaWYgKHN0cm5jbXAob3BzLT5uYW1lLCBwb3dlcl9lbnZfc3RyW2Vudl0sDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRFX1BPV0VSX0RSSVZFUl9OQU1FU1opID09IDAp DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHMtPmNoZWNrX2Vudl9zdXBwb3J0 KCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQN Cj4gPiAgIHJ0ZV9wb3dlcl9zZXRfZW52KGVudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgZW52KQ0K PiA+ICAgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wczsNCj4gPiAr ICAgICBpbnQgcmV0ID0gLTE7DQo+ID4gKw0KPiA+ICAgICAgIHJ0ZV9zcGlubG9ja19sb2NrKCZn bG9iYWxfZW52X2NmZ19sb2NrKTsNCj4gPg0KPiA+ICAgICAgIGlmIChnbG9iYWxfZGVmYXVsdF9l bnYgIT0gUE1fRU5WX05PVF9TRVQpIHsNCj4gPiAgICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIs ICJQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50IGFscmVhZHkgc2V0LiIpOw0KPiA+IC0gICAg ICAgICAgICAgcnRlX3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7DQo+ID4g LSAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gLSAgICAgfQ0KPiA+IC0NCj4gPC4uLj4NCj4g PiAtICAgICBpZiAocmV0ID09IDApDQo+ID4gLSAgICAgICAgICAgICBnbG9iYWxfZGVmYXVsdF9l bnYgPSBlbnY7DQo+ID4gLSAgICAgZWxzZSB7DQo+ID4gLSAgICAgICAgICAgICBnbG9iYWxfZGVm YXVsdF9lbnYgPSBQTV9FTlZfTk9UX1NFVDsNCj4gPiAtICAgICAgICAgICAgIHJlc2V0X3Bvd2Vy X2Z1bmN0aW9uX3B0cnMoKTsNCj4gPiAtICAgICB9DQo+ID4gKyAgICAgUlRFX1RBSUxRX0ZPUkVB Q0gob3BzLCAmY29yZV9vcHNfbGlzdCwgbmV4dCkNCj4gPiArICAgICAgICAgICAgIGlmIChzdHJu Y21wKG9wcy0+bmFtZSwgcG93ZXJfZW52X3N0cltlbnZdLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJURV9QT1dFUl9EUklWRVJfTkFNRVNaKSA9PSAwKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGdsb2JhbF9wb3dlcl9jb3JlX29wcyA9IG9wczsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgZ2xvYmFsX2RlZmF1bHRfZW52ID0gZW52Ow0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICByZXQgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsN Cj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICBQT1dFUl9MT0coRVJSLCAiSW52YWxpZCBQ b3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50KCVkKSBzZXQiLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICBlbnYpOw0KPiA+DQo+ID4gK291dDoNCj4gPiAgICAgICBydGVfc3BpbmxvY2tfdW5s b2NrKCZnbG9iYWxfZW52X2NmZ19sb2NrKTsNCj4gPiAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICAg fQ0KPiA+IEBAIC0xNjQsOTQgKzk3LDY2IEBAIHJ0ZV9wb3dlcl91bnNldF9lbnYodm9pZCkNCj4g PiAgIHsNCj4gPiAgICAgICBydGVfc3BpbmxvY2tfbG9jaygmZ2xvYmFsX2Vudl9jZmdfbG9jayk7 DQo+ID4gICAgICAgZ2xvYmFsX2RlZmF1bHRfZW52ID0gUE1fRU5WX05PVF9TRVQ7DQo+ID4gLSAg ICAgcmVzZXRfcG93ZXJfZnVuY3Rpb25fcHRycygpOw0KPiA+ICsgICAgIGdsb2JhbF9wb3dlcl9j b3JlX29wcyA9IE5VTEw7DQo+ID4gICAgICAgcnRlX3NwaW5sb2NrX3VubG9jaygmZ2xvYmFsX2Vu dl9jZmdfbG9jayk7DQo+ID4gICB9DQo+ID4NCj4gPiAgIGVudW0gcG93ZXJfbWFuYWdlbWVudF9l bnYNCj4gPiAtcnRlX3Bvd2VyX2dldF9lbnYodm9pZCkgew0KPiA+ICtydGVfcG93ZXJfZ2V0X2Vu dih2b2lkKQ0KPiA+ICt7DQo+ID4gICAgICAgcmV0dXJuIGdsb2JhbF9kZWZhdWx0X2VudjsNCj4g PiAgIH0NCj4gPg0KPiA+IC1pbnQNCj4gPiAtcnRlX3Bvd2VyX2luaXQodW5zaWduZWQgaW50IGxj b3JlX2lkKQ0KPiA+ICtzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICoNCj4gPiArcnRlX3Bvd2Vy X2dldF9jb3JlX29wcyh2b2lkKQ0KPiA+ICAgew0KPiA+IC0gICAgIGludCByZXQgPSAtMTsNCj4g PiArICAgICBSVEVfQVNTRVJUKGdsb2JhbF9wb3dlcl9jb3JlX29wcyAhPSBOVUxMKTsNCj4gPg0K PiA+IC0gICAgIHN3aXRjaCAoZ2xvYmFsX2RlZmF1bHRfZW52KSB7DQo+ID4gLSAgICAgY2FzZSBQ TV9FTlZfQUNQSV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FjcGlf Y3B1ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9LVk1fVk06DQo+ ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfa3ZtX3ZtX2luaXQobGNvcmVfaWQpOw0KPiA+ IC0gICAgIGNhc2UgUE1fRU5WX1BTVEFURV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0 dXJuIHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQpOw0KPiA+IC0gICAgIGNhc2Ug UE1fRU5WX0NQUENfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9jcHBj X2NwdWZyZXFfaW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfQU1EX1BTVEFU RV9DUFVGUkVROg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHBvd2VyX2FtZF9wc3RhdGVfY3B1 ZnJlcV9pbml0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBkZWZhdWx0Og0KPiA+IC0gICAgICAgICAg ICAgUE9XRVJfTE9HKElORk8sICJFbnYgaXNuJ3Qgc2V0IHlldCEiKTsNCj4gPiAtICAgICB9DQo+ ID4gKyAgICAgcmV0dXJuIGdsb2JhbF9wb3dlcl9jb3JlX29wczsNCj4gPiArfQ0KPiA+DQo+ID4g LSAgICAgLyogQXV0byBkZXRlY3QgRW52aXJvbm1lbnQgKi8NCj4gPiAtICAgICBQT1dFUl9MT0co SU5GTywgIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBBQ1BJIGNwdWZyZXEgcG93ZXINCj4gbWFu YWdlbWVudC4uLiIpOw0KPiA+IC0gICAgIHJldCA9IHBvd2VyX2FjcGlfY3B1ZnJlcV9pbml0KGxj b3JlX2lkKTsNCj4gPiAtICAgICBpZiAocmV0ID09IDApIHsNCj4gPiAtICAgICAgICAgICAgIHJ0 ZV9wb3dlcl9zZXRfZW52KFBNX0VOVl9BQ1BJX0NQVUZSRVEpOw0KPiA+IC0gICAgICAgICAgICAg Z290byBvdXQ7DQo+ID4gLSAgICAgfQ0KPiA+ICtpbnQNCj4gPiArcnRlX3Bvd2VyX2luaXQodW5z aWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29w cyAqb3BzOw0KPiA+ICsgICAgIHVpbnQ4X3QgZW52Ow0KPiA+DQo+ID4gLSAgICAgUE9XRVJfTE9H KElORk8sICJBdHRlbXB0aW5nIHRvIGluaXRpYWxpc2UgUFNUQVQgcG93ZXIgbWFuYWdlbWVudC4u LiIpOw0KPiA+IC0gICAgIHJldCA9IHBvd2VyX3BzdGF0ZV9jcHVmcmVxX2luaXQobGNvcmVfaWQp Ow0KPiA+IC0gICAgIGlmIChyZXQgPT0gMCkgew0KPiA+IC0gICAgICAgICAgICAgcnRlX3Bvd2Vy X3NldF9lbnYoUE1fRU5WX1BTVEFURV9DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8g b3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICBpZiAoZ2xvYmFsX2RlZmF1bHRfZW52ICE9IFBN X0VOVl9OT1RfU0VUKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGdsb2JhbF9wb3dlcl9jb3Jl X29wcy0+aW5pdChsY29yZV9pZCk7DQo+ID4NCj4gPiAtICAgICBQT1dFUl9MT0coSU5GTywgIkF0 dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBBTUQgUFNUQVRFIHBvd2VyDQo+IG1hbmFnZW1lbnQuLi4i KTsNCj4gPiAtICAgICByZXQgPSBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfaW5pdChsY29yZV9p ZCk7DQo+ID4gLSAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93 ZXJfc2V0X2VudihQTV9FTlZfQU1EX1BTVEFURV9DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAg IGdvdG8gb3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICBQT1dFUl9MT0coSU5GTywgIkVudiBp c24ndCBzZXQgeWV0ISIpOw0KPiByZW1vdmUgdGhpcyBsb2c/DQo+ID4NCj4gPiAtICAgICBQT1dF Ul9MT0coSU5GTywgIkF0dGVtcHRpbmcgdG8gaW5pdGlhbGlzZSBDUFBDIHBvd2VyIG1hbmFnZW1l bnQuLi4iKTsNCj4gPiAtICAgICByZXQgPSBwb3dlcl9jcHBjX2NwdWZyZXFfaW5pdChsY29yZV9p ZCk7DQo+ID4gLSAgICAgaWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93 ZXJfc2V0X2VudihQTV9FTlZfQ1BQQ19DUFVGUkVRKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8g b3V0Ow0KPiA+IC0gICAgIH0NCj4gPiArICAgICAvKiBBdXRvIGRldGVjdCBFbnZpcm9ubWVudCAq Lw0KPiA+ICsgICAgIFJURV9UQUlMUV9GT1JFQUNIKG9wcywgJmNvcmVfb3BzX2xpc3QsIG5leHQp DQo+ID4gKyAgICAgICAgICAgICBpZiAob3BzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IFBPV0VSX0xPRyhJTkZPLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdHRl bXB0aW5nIHRvIGluaXRpYWxpc2UgJXMgY3B1ZnJlcSBwb3dlciBtYW5hZ2VtZW50Li4uIiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHMtPm5hbWUpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBpZiAob3BzLT5pbml0KGxjb3JlX2lkKSA9PSAwKSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChlbnYgPSAwOyBlbnYgPCBSVEVfRElNKHBvd2Vy X2Vudl9zdHIpOyBlbnYrKykNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChzdHJuY21wKG9wcy0+bmFtZSwgcG93ZXJfZW52X3N0cltlbnZdLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJURV9QT1dF Ul9EUklWRVJfTkFNRVNaKSA9PSAwKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJ0ZV9wb3dlcl9zZXRfZW52KGVudik7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICB9DQo+ID4gKyAgICAgICAgICAgICB9DQo+IENhbiB3ZSBjaGFuZ2UgdGhlIGxvZ2ljIG9m IHJ0ZV9wb3dlcl9zZXRfZW52KCk/IGxpa2U6DQo+ICAgICAgUlRFX1RBSUxRX0ZPUkVBQ0gob3Bz LCAmY29yZV9vcHNfbGlzdCwgbmV4dCkgew0KPiAgICAgICAgICBmb3IgKGVudiA9IDA7IGVudiA8 IFJURV9ESU0ocG93ZXJfZW52X3N0cik7IGVudisrKSB7DQo+ICAgICAgICAgICAgICAgICAgaWYg KHN0cm5jbXAob3BzLT5uYW1lLCBwb3dlcl9lbnZfc3RyW2Vudl0sDQo+IFJURV9QT1dFUl9EUklW RVJfTkFNRVNaKSA9PSAwICYmDQo+ICAgICAgICAgICAgICAgICAgICAgIG9wcy0+aW5pdChsY29y ZV9pZCkgPT0gMCkgew0KPiAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxfcG93ZXJfY29yZV9v cHMgPSBvcHM7DQo+ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kZWZhdWx0X2VudiA9IGVu djsNCj4gICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgIH0NCj4gICAgICB9DQo+IFRoYXQg aXMgZWFzaWVyIHRvIGZvbGxvdyBjb2RlLg0KWWVzLCB3aWxsIGZpeCBpbiBuZXh0IHZlcnNpb24u DQoNCj4gPiArDQo+ID4gKyAgICAgUE9XRVJfTE9HKEVSUiwNCj4gPiArICAgICAgICAgICAgICJV bmFibGUgdG8gc2V0IFBvd2VyIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgZm9yIGxjb3JlICV1IiwN Cj4gPiArICAgICAgICAgICAgIGxjb3JlX2lkKTsNCj4gPg0KPiA+IC0gICAgIFBPV0VSX0xPRyhJ TkZPLCAiQXR0ZW1wdGluZyB0byBpbml0aWFsaXNlIFZNIHBvd2VyIG1hbmFnZW1lbnQuLi4iKTsN Cj4gPiAtICAgICByZXQgPSBwb3dlcl9rdm1fdm1faW5pdChsY29yZV9pZCk7DQo+ID4gLSAgICAg aWYgKHJldCA9PSAwKSB7DQo+ID4gLSAgICAgICAgICAgICBydGVfcG93ZXJfc2V0X2VudihQTV9F TlZfS1ZNX1ZNKTsNCj4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiA+IC0gICAgIH0NCj4g PiAtICAgICBQT1dFUl9MT0coRVJSLCAiVW5hYmxlIHRvIHNldCBQb3dlciBNYW5hZ2VtZW50IEVu dmlyb25tZW50IGZvciBsY29yZQ0KPiAiDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICIldSIs IGxjb3JlX2lkKTsNCj4gPiAtb3V0Og0KPiA+IC0gICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAg cmV0dXJuIC0xOw0KPiA+ICAgfQ0KPiA+DQo+ID4gICBpbnQNCj4gPiAgIHJ0ZV9wb3dlcl9leGl0 KHVuc2lnbmVkIGludCBsY29yZV9pZCkNCj4gPiAgIHsNCj4gPiAtICAgICBzd2l0Y2ggKGdsb2Jh bF9kZWZhdWx0X2Vudikgew0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FDUElfQ1BVRlJFUToNCj4g PiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9hY3BpX2NwdWZyZXFfZXhpdChsY29yZV9pZCk7 DQo+ID4gLSAgICAgY2FzZSBQTV9FTlZfS1ZNX1ZNOg0KPiA+IC0gICAgICAgICAgICAgcmV0dXJu IHBvd2VyX2t2bV92bV9leGl0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9QU1RB VEVfQ1BVRlJFUToNCj4gPiAtICAgICAgICAgICAgIHJldHVybiBwb3dlcl9wc3RhdGVfY3B1ZnJl cV9leGl0KGxjb3JlX2lkKTsNCj4gPiAtICAgICBjYXNlIFBNX0VOVl9DUFBDX0NQVUZSRVE6DQo+ ID4gLSAgICAgICAgICAgICByZXR1cm4gcG93ZXJfY3BwY19jcHVmcmVxX2V4aXQobGNvcmVfaWQp Ow0KPiA+IC0gICAgIGNhc2UgUE1fRU5WX0FNRF9QU1RBVEVfQ1BVRlJFUToNCj4gPiAtICAgICAg ICAgICAgIHJldHVybiBwb3dlcl9hbWRfcHN0YXRlX2NwdWZyZXFfZXhpdChsY29yZV9pZCk7DQo+ ID4gLSAgICAgZGVmYXVsdDoNCj4gPiAtICAgICAgICAgICAgIFBPV0VSX0xPRyhFUlIsICJFbnZp cm9ubWVudCBoYXMgbm90IGJlZW4gc2V0LCB1bmFibGUgdG8gZXhpdA0KPiBncmFjZWZ1bGx5Iik7 DQo+ID4gKyAgICAgaWYgKGdsb2JhbF9kZWZhdWx0X2VudiAhPSBQTV9FTlZfTk9UX1NFVCkNCj4g PiArICAgICAgICAgICAgIHJldHVybiBnbG9iYWxfcG93ZXJfY29yZV9vcHMtPmV4aXQobGNvcmVf aWQpOw0KPiA+DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIHJldHVybiAtMTsNCj4gPiArICAgICBQ T1dFUl9MT0coRVJSLA0KPiA+ICsgICAgICAgICAgICAgIkVudmlyb25tZW50IGhhcyBub3QgYmVl biBzZXQsIHVuYWJsZSB0byBleGl0DQo+ID4gKyBncmFjZWZ1bGx5Iik7DQo+ID4NCj4gPiArICAg ICByZXR1cm4gLTE7DQo+ID4gICB9DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9wb3dlci9ydGVfcG93 ZXIuaCBiL2xpYi9wb3dlci9ydGVfcG93ZXIuaCBpbmRleA0KPiA+IDRmYTRhZmUzOTkuLjVlNGFh Y2YwOGIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4gKysrIGIv bGliL3Bvd2VyL3J0ZV9wb3dlci5oDQo+ID4gQEAgLTEsNSArMSw2IEBADQo+ID4gICAvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gICAgKiBDb3B5cmlnaHQoYykg MjAxMC0yMDE0IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDI0IEFk dmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gPiAgICAqLw0KPiA+DQo+ID4gICAjaWZuZGVm IF9SVEVfUE9XRVJfSA0KPiA+IEBAIC0xNCwxNCArMTUsMjEgQEANCj4gPiAgICNpbmNsdWRlIDxy dGVfbG9nLmg+DQo+ID4gICAjaW5jbHVkZSA8cnRlX3Bvd2VyX2d1ZXN0X2NoYW5uZWwuaD4NCj4g Pg0KPiA+ICsjaW5jbHVkZSAicnRlX3Bvd2VyX2NvcmVfb3BzLmgiDQo+ID4gKw0KPiA+ICAgI2lm ZGVmIF9fY3BsdXNwbHVzDQo+ID4gICBleHRlcm4gIkMiIHsNCj4gPiAgICNlbmRpZg0KPiA+DQo+ ID4gICAvKiBQb3dlciBNYW5hZ2VtZW50IEVudmlyb25tZW50IFN0YXRlICovIC1lbnVtIHBvd2Vy X21hbmFnZW1lbnRfZW52DQo+ID4ge1BNX0VOVl9OT1RfU0VULCBQTV9FTlZfQUNQSV9DUFVGUkVR LCBQTV9FTlZfS1ZNX1ZNLA0KPiA+IC0gICAgICAgICAgICAgUE1fRU5WX1BTVEFURV9DUFVGUkVR LCBQTV9FTlZfQ1BQQ19DUFVGUkVRLA0KPiA+IC0gICAgICAgICAgICAgUE1fRU5WX0FNRF9QU1RB VEVfQ1BVRlJFUX07DQo+ID4gK2VudW0gcG93ZXJfbWFuYWdlbWVudF9lbnYgew0KPiA+ICsgICAg IFBNX0VOVl9OT1RfU0VUID0gMCwNCj4gPiArICAgICBQTV9FTlZfQUNQSV9DUFVGUkVRLA0KPiA+ ICsgICAgIFBNX0VOVl9LVk1fVk0sDQo+ID4gKyAgICAgUE1fRU5WX1BTVEFURV9DUFVGUkVRLA0K PiA+ICsgICAgIFBNX0VOVl9DUFBDX0NQVUZSRVEsDQo+ID4gKyAgICAgUE1fRU5WX0FNRF9QU1RB VEVfQ1BVRlJFUQ0KPiA+ICt9Ow0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIENoZWNrIGlmIGEg c3BlY2lmaWMgcG93ZXIgbWFuYWdlbWVudCBlbnZpcm9ubWVudCB0eXBlIGlzDQo+ID4gc3VwcG9y dGVkIG9uIGEgQEAgLTY2LDYgKzc0LDE1IEBAIHZvaWQgcnRlX3Bvd2VyX3Vuc2V0X2Vudih2b2lk KTsNCj4gPiAgICAqLw0KPiA+ICAgZW51bSBwb3dlcl9tYW5hZ2VtZW50X2VudiBydGVfcG93ZXJf Z2V0X2Vudih2b2lkKTsNCj4NCj4gSSdkIGxpa2UgdG8gbGV0IHVzZXIgbm90IGtub3cgdXNlZCB3 aGljaCBjcHVmcmVxIGRyaXZlciwgd2hpY2ggaXMgZnJpZW5kbHkgdG8gdXNlci4NCj4NCj4gU28g d2UgY2FuIHJldGhpbmsgaWYgdGhpcyBBUEkgaXMgbmVjZXNzYXJ5Lg0KRm9yIGFueSBBUEkgY2hh bmdlcywgY291bGQgd2UgaGFuZGxlIHRoaXMgYXMgYSBzZXBhcmF0ZSBSRkMgZm9yIGRpc2N1c3Np b24/DQpJdOKAmXMgaW1wb3J0YW50IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgbm90IGluY2x1ZGVk IHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4NCj4NCj4gPg0KPiA+ICsvKioNCj4gPiAr ICogQGludGVybmFsIEdldCB0aGUgcG93ZXIgb3BzIHN0cnVjdCBmcm9tIGl0cyBpbmRleC4NCj4g PiArICoNCj4gPiArICogQHJldHVybg0KPiA+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBvcHMg c3RydWN0IGluIHRoZSB0YWJsZSBpZiByZWdpc3RlcmVkLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IHJ0ZV9wb3dlcl9jb3JlX29wcyAqDQo+ID4gK3J0ZV9wb3dlcl9nZXRfY29yZV9vcHModm9pZCk7 DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBJbml0aWFsaXplIHBvd2VyIG1hbmFnZW1lbnQg Zm9yIGEgc3BlY2lmaWMgbGNvcmUuIElmIHJ0ZV9wb3dlcl9zZXRfZW52KCkgaGFzDQo+ID4gICAg KiBub3QgYmVlbiBjYWxsZWQgdGhlbiBhbiBhdXRvLWRldGVjdCBvZiB0aGUgZW52aXJvbm1lbnQg d2lsbCBzdGFydA0KPiA+IGFuZCBAQCAtMTA4LDEwICsxMjUsMTMgQEAgaW50IHJ0ZV9wb3dlcl9l eGl0KHVuc2lnbmVkIGludCBsY29yZV9pZCk7DQo+ID4gICAgKiBAcmV0dXJuDQo+ID4gICAgKiAg VGhlIG51bWJlciBvZiBhdmFpbGFibGUgZnJlcXVlbmNpZXMuDQo+ID4gICAgKi8NCj4gPiAtdHlw ZWRlZiB1aW50MzJfdCAoKnJ0ZV9wb3dlcl9mcmVxc190KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQs IHVpbnQzMl90ICpmcmVxcywNCj4gPiAtICAgICAgICAgICAgIHVpbnQzMl90IG51bSk7DQo+ID4g K3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gPiArcnRlX3Bvd2VyX2ZyZXFzKHVuc2lnbmVkIGlu dCBsY29yZV9pZCwgdWludDMyX3QgKmZyZXFzLCB1aW50MzJfdCBuKSB7DQo+ID4gKyAgICAgc3Ry dWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0K PiA+DQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcXNfdCBydGVfcG93ZXJfZnJlcXM7DQo+ID4g KyAgICAgcmV0dXJuIG9wcy0+Z2V0X2F2YWlsX2ZyZXFzKGxjb3JlX2lkLCBmcmVxcywgbik7IH0N Cj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgaW5kZXggb2YgYXZh aWxhYmxlIGZyZXF1ZW5jaWVzIG9mIGEgc3BlY2lmaWMgbGNvcmUuDQo+ID4gQEAgLTEyNCw5ICsx NDQsMTMgQEAgZXh0ZXJuIHJ0ZV9wb3dlcl9mcmVxc190IHJ0ZV9wb3dlcl9mcmVxczsNCj4gPiAg ICAqIEByZXR1cm4NCj4gPiAgICAqICBUaGUgY3VycmVudCBpbmRleCBvZiBhdmFpbGFibGUgZnJl cXVlbmNpZXMuDQo+ID4gICAgKi8NCj4gPiAtdHlwZWRlZiB1aW50MzJfdCAoKnJ0ZV9wb3dlcl9n ZXRfZnJlcV90KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVp bnQzMl90DQo+ID4gK3J0ZV9wb3dlcl9nZXRfZnJlcSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQpIHsN Cj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVfcG93ZXJfZ2V0 X2NvcmVfb3BzKCk7DQo+ID4NCj4gPiAtZXh0ZXJuIHJ0ZV9wb3dlcl9nZXRfZnJlcV90IHJ0ZV9w b3dlcl9nZXRfZnJlcTsNCj4gPiArICAgICByZXR1cm4gb3BzLT5nZXRfZnJlcShsY29yZV9pZCk7 DQo+ID4gK30NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTZXQgdGhlIG5ldyBmcmVxdWVuY3kg Zm9yIGEgc3BlY2lmaWMgbGNvcmUgYnkgaW5kaWNhdGluZyB0aGUNCj4gPiBpbmRleCBvZiBAQCAt MTQ0LDgyICsxNjgsMTAxIEBAIGV4dGVybiBydGVfcG93ZXJfZ2V0X2ZyZXFfdA0KPiBydGVfcG93 ZXJfZ2V0X2ZyZXE7DQo+ID4gICAgKiAgLSAwIG9uIHN1Y2Nlc3Mgd2l0aG91dCBmcmVxdWVuY3kg Y2hhbmdlZC4NCj4gPiAgICAqICAtIE5lZ2F0aXZlIG9uIGVycm9yLg0KPiA+ICAgICovDQo+ID4g LXR5cGVkZWYgaW50ICgqcnRlX3Bvd2VyX3NldF9mcmVxX3QpKHVuc2lnbmVkIGludCBsY29yZV9p ZCwgdWludDMyX3QNCj4gPiBpbmRleCk7DQo+ID4gLQ0KPiA+IC1leHRlcm4gcnRlX3Bvd2VyX3Nl dF9mcmVxX3QgcnRlX3Bvd2VyX3NldF9mcmVxOw0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90 DQo+ID4gK3J0ZV9wb3dlcl9zZXRfZnJlcSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsIHVpbnQzMl90 IGluZGV4KSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRl X3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+DQo+ID4gLS8qKg0KPiA+IC0gKiBGdW5jdGlvbiBw b2ludGVyIGRlZmluaXRpb24gZm9yIGdlbmVyaWMgZnJlcXVlbmN5IGNoYW5nZQ0KPiA+IGZ1bmN0 aW9ucy4gUmV2aWV3DQo+ID4gLSAqIGVhY2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50 YXRpb24gZm9yIHVzYWdlLg0KPiA+IC0gKg0KPiA+IC0gKiBAcGFyYW0gbGNvcmVfaWQNCj4gPiAt ICogIGxjb3JlIGlkLg0KPiA+IC0gKg0KPiA+IC0gKiBAcmV0dXJuDQo+ID4gLSAqICAtIDEgb24g c3VjY2VzcyB3aXRoIGZyZXF1ZW5jeSBjaGFuZ2VkLg0KPiA+IC0gKiAgLSAwIG9uIHN1Y2Nlc3Mg d2l0aG91dCBmcmVxdWVuY3kgY2hhbmdlZC4NCj4gPiAtICogIC0gTmVnYXRpdmUgb24gZXJyb3Iu DQo+ID4gLSAqLw0KPiA+IC10eXBlZGVmIGludCAoKnJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90KSh1 bnNpZ25lZCBpbnQgbGNvcmVfaWQpOw0KPiA+ICsgICAgIHJldHVybiBvcHMtPnNldF9mcmVxKGxj b3JlX2lkLCBpbmRleCk7IH0NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTY2FsZSB1cCB0aGUg ZnJlcXVlbmN5IG9mIGEgc3BlY2lmaWMgbGNvcmUgYWNjb3JkaW5nIHRvIHRoZSBhdmFpbGFibGUN Cj4gPiAgICAqIGZyZXF1ZW5jaWVzLg0KPiA+ICAgICogUmV2aWV3IGVhY2ggZW52aXJvbm1lbnRz IHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLg0KPiA+ICAgICovDQo+ID4gLWV4dGVy biBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV91cDsNCj4gPiArc3RhdGlj IGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfdXAodW5zaWduZWQgaW50IGxjb3JlX2lk KSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2Vy X2dldF9jb3JlX29wcygpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gb3BzLT5mcmVxX3VwKGxj b3JlX2lkKTsNCj4gPiArfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIFNjYWxlIGRvd24gdGhl IGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3JlIGFjY29yZGluZyB0byB0aGUgYXZhaWxhYmxl DQo+ID4gICAgKiBmcmVxdWVuY2llcy4NCj4gPiAgICAqIFJldmlldyBlYWNoIGVudmlyb25tZW50 cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4NCj4gPiAgICAqLw0KPiA+IC1leHRl cm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdlX3QgcnRlX3Bvd2VyX2ZyZXFfZG93bjsNCj4gPiArc3Rh dGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfZG93bih1bnNpZ25lZCBpbnQgbGNv cmVfaWQpIHsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3BzICpvcHMgPSBydGVf cG93ZXJfZ2V0X2NvcmVfb3BzKCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBvcHMtPmZyZXFf ZG93bihsY29yZV9pZCk7IH0NCj4gPg0KPiA+ICAgLyoqDQo+ID4gICAgKiBTY2FsZSB1cCB0aGUg ZnJlcXVlbmN5IG9mIGEgc3BlY2lmaWMgbGNvcmUgdG8gdGhlIGhpZ2hlc3QgYWNjb3JkaW5nIHRv IHRoZQ0KPiA+ICAgICogYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0KPiA+ICAgICogUmV2aWV3IGVh Y2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHVzYWdlLg0KPiA+ICAg ICovDQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfZnJlcV9t YXg7DQo+ID4gK3N0YXRpYyBpbmxpbmUgaW50DQo+ID4gK3J0ZV9wb3dlcl9mcmVxX21heCh1bnNp Z25lZCBpbnQgbGNvcmVfaWQpIHsNCj4gPiArICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfb3Bz ICpvcHMgPSBydGVfcG93ZXJfZ2V0X2NvcmVfb3BzKCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVy biBvcHMtPmZyZXFfbWF4KGxjb3JlX2lkKTsNCj4gPiArfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAg ICAqIFNjYWxlIGRvd24gdGhlIGZyZXF1ZW5jeSBvZiBhIHNwZWNpZmljIGxjb3JlIHRvIHRoZSBs b3dlc3QgYWNjb3JkaW5nIHRvIHRoZQ0KPiA+ICAgICogYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLg0K PiA+ICAgICogUmV2aWV3IGVhY2ggZW52aXJvbm1lbnRzIHNwZWNpZmljIGRvY3VtZW50YXRpb24g Zm9yIHVzYWdlLi4NCj4gPiAgICAqLw0KPiA+IC1leHRlcm4gcnRlX3Bvd2VyX2ZyZXFfY2hhbmdl X3QgcnRlX3Bvd2VyX2ZyZXFfbWluOw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICtydGVf cG93ZXJfZnJlcV9taW4odW5zaWduZWQgaW50IGxjb3JlX2lkKSB7DQo+ID4gKyAgICAgc3RydWN0 IHJ0ZV9wb3dlcl9jb3JlX29wcyAqb3BzID0gcnRlX3Bvd2VyX2dldF9jb3JlX29wcygpOw0KPiA+ ICsNCj4gPiArICAgICByZXR1cm4gb3BzLT5mcmVxX21pbihsY29yZV9pZCk7DQo+ID4gK30NCj4g Pg0KPiA+ICAgLyoqDQo+ID4gICAgKiBRdWVyeSB0aGUgVHVyYm8gQm9vc3Qgc3RhdHVzIG9mIGEg c3BlY2lmaWMgbGNvcmUuDQo+ID4gICAgKiBSZXZpZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lm aWMgZG9jdW1lbnRhdGlvbiBmb3IgdXNhZ2UuLg0KPiA+ICAgICovDQo+ID4gLWV4dGVybiBydGVf cG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJfdHVyYm9fc3RhdHVzOw0KPiA+ICtzdGF0aWMg aW5saW5lIGludA0KPiA+ICtydGVfcG93ZXJfdHVyYm9fc3RhdHVzKHVuc2lnbmVkIGludCBsY29y ZV9pZCkgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9w b3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIG9wcy0+dHVyYm9f c3RhdHVzKGxjb3JlX2lkKTsgfQ0KPiA+DQo+ID4gICAvKioNCj4gPiAgICAqIEVuYWJsZSBUdXJi byBCb29zdCBmb3IgdGhpcyBsY29yZS4NCj4gPiAgICAqIFJldmlldyBlYWNoIGVudmlyb25tZW50 cyBzcGVjaWZpYyBkb2N1bWVudGF0aW9uIGZvciB1c2FnZS4uDQo+ID4gICAgKi8NCj4gPiAtZXh0 ZXJuIHJ0ZV9wb3dlcl9mcmVxX2NoYW5nZV90IHJ0ZV9wb3dlcl9mcmVxX2VuYWJsZV90dXJibzsN Cj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2ZyZXFfZW5hYmxlX3R1cmJv KHVuc2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJfY29y ZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPiArDQo+ID4gKyAgICAg cmV0dXJuIG9wcy0+ZW5hYmxlX3R1cmJvKGxjb3JlX2lkKTsgfQ0KPiA+DQo+ID4gICAvKioNCj4g PiAgICAqIERpc2FibGUgVHVyYm8gQm9vc3QgZm9yIHRoaXMgbGNvcmUuDQo+ID4gICAgKiBSZXZp ZXcgZWFjaCBlbnZpcm9ubWVudHMgc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdXNhZ2UuLg0K PiA+ICAgICovDQo+ID4gLWV4dGVybiBydGVfcG93ZXJfZnJlcV9jaGFuZ2VfdCBydGVfcG93ZXJf ZnJlcV9kaXNhYmxlX3R1cmJvOw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICtydGVfcG93 ZXJfZnJlcV9kaXNhYmxlX3R1cmJvKHVuc2lnbmVkIGludCBsY29yZV9pZCkgew0KPiA+ICsgICAg IHN0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMo KTsNCj4gPg0KPiA+IC0vKioNCj4gPiAtICogUG93ZXIgY2FwYWJpbGl0aWVzIHN1bW1hcnkuDQo+ ID4gLSAqLw0KPiA+IC1zdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfY2FwYWJpbGl0aWVzIHsNCj4gPiAt ICAgICB1bmlvbiB7DQo+ID4gLSAgICAgICAgICAgICB1aW50NjRfdCBjYXBhYmlsaXRpZXM7DQo+ ID4gLSAgICAgICAgICAgICBzdHJ1Y3Qgew0KPiA+IC0gICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCB0dXJibzoxOyAgICAgICAvKio8IFR1cmJvIGNhbiBiZSBlbmFibGVkLiAqLw0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBwcmlvcml0eToxOyAgICAvKio8IFNTVC1CRiBo aWdoIGZyZXEgY29yZSAqLw0KPiA+IC0gICAgICAgICAgICAgfTsNCj4gPiAtICAgICB9Ow0KPiA+ IC19Ow0KPiA+ICsgICAgIHJldHVybiBvcHMtPmRpc2FibGVfdHVyYm8obGNvcmVfaWQpOyB9DQo+ ID4NCj4gPiAgIC8qKg0KPiA+ICAgICogUmV0dXJucyBwb3dlciBjYXBhYmlsaXRpZXMgZm9yIGEg c3BlY2lmaWMgbGNvcmUuDQo+ID4gQEAgLTIzNSwxMCArMjc4LDE0IEBAIHN0cnVjdCBydGVfcG93 ZXJfY29yZV9jYXBhYmlsaXRpZXMgew0KPiA+ICAgICogIC0gMCBvbiBzdWNjZXNzLg0KPiA+ICAg ICogIC0gTmVnYXRpdmUgb24gZXJyb3IuDQo+ID4gICAgKi8NCj4gPiAtdHlwZWRlZiBpbnQgKCpy dGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGllc190KSh1bnNpZ25lZCBpbnQgbGNvcmVfaWQsDQo+ID4g LSAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3Bvd2VyX2NvcmVfY2FwYWJpbGl0aWVzICpjYXBzKTsN Cj4gPiArc3RhdGljIGlubGluZSBpbnQNCj4gPiArcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXMo dW5zaWduZWQgaW50IGxjb3JlX2lkLA0KPiA+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3dl cl9jb3JlX2NhcGFiaWxpdGllcyAqY2Fwcykgew0KPiA+ICsgICAgIHN0cnVjdCBydGVfcG93ZXJf Y29yZV9vcHMgKm9wcyA9IHJ0ZV9wb3dlcl9nZXRfY29yZV9vcHMoKTsNCj4gPg0KPiA+IC1leHRl cm4gcnRlX3Bvd2VyX2dldF9jYXBhYmlsaXRpZXNfdCBydGVfcG93ZXJfZ2V0X2NhcGFiaWxpdGll czsNCj4gPiArICAgICByZXR1cm4gb3BzLT5nZXRfY2FwcyhsY29yZV9pZCwgY2Fwcyk7IH0NCj4g Pg0KPiA+ICAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gICB9DQo+ID4gZGlmZiAtLWdpdCBhL2xp Yi9wb3dlci9ydGVfcG93ZXJfY29yZV9vcHMuaA0KPiA+IGIvbGliL3Bvd2VyL3J0ZV9wb3dlcl9j b3JlX29wcy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uMzU2 YTY0ZGY3OQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9saWIvcG93ZXIvcnRlX3Bvd2Vy X2NvcmVfb3BzLmgNCj4gPiBAQCAtMCwwICsxLDIwOCBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiArICogQ29weXJpZ2h0KGMpIDIwMjQgQWR2YW5jZWQgTWlj cm8gRGV2aWNlcywgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX1JURV9QT1dF Ul9DT1JFX09QU19IDQo+ID4gKyNkZWZpbmUgX1JURV9QT1dFUl9DT1JFX09QU19IDQo+ID4gKw0K PiBzdWdnZXN0IHJlbmFtZSB0aGUgZmlsZSBhcyBydGVfcG93ZXJfY3B1ZnJlcV9hcGkuaC4NCj4g SWYgc28sIHRoZSByb2xlIG9mIHRoaXMgZmlsZSBpcyBtb3JlIGNsZWFybHkuDQo+ID4gK19fcnRl X2ludGVybmFsDQo+ID4gK2ludCBydGVfcG93ZXJfcmVnaXN0ZXJfb3BzKHN0cnVjdCBydGVfcG93 ZXJfY29yZV9vcHMgKm9wcyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogTWFjcm8gdG8gc3Rh dGljYWxseSByZWdpc3RlciB0aGUgb3BzIG9mIGEgY3B1ZnJlcSBkcml2ZXIuDQo+ID4gKyAqLw0K PiA+ICsjZGVmaW5lIFJURV9QT1dFUl9SRUdJU1RFUl9PUFMob3BzKSAgICAgICAgICBcDQo+ID4g KyAgICAgUlRFX0lOSVQocG93ZXJfaGRscl9pbml0XyMjb3BzKSAgICAgICAgIFwNCj4gPiArICAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICsgICAgICAg ICAgICAgcnRlX3Bvd2VyX3JlZ2lzdGVyX29wcygmb3BzKTsgICBcDQo+ID4gKyAgICAgfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIEBpbnRlcm5hbCBHZXQgdGhlIHBvd2VyIG9wcyBzdHJ1Y3Qg ZnJvbSBpdHMgaW5kZXguDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUg cG9pbnRlciB0byB0aGUgb3BzIHN0cnVjdCBpbiB0aGUgdGFibGUgaWYgcmVnaXN0ZXJlZC4NCj4g PiArICovDQo+ID4gK3N0cnVjdCBydGVfcG93ZXJfY29yZV9vcHMgKg0KPiA+ICtydGVfcG93ZXJf Z2V0X2NvcmVfb3BzKHZvaWQpOw0KPiA+ICsNCj4gPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4g K30NCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvbGli L3Bvd2VyL3ZlcnNpb24ubWFwIGIvbGliL3Bvd2VyL3ZlcnNpb24ubWFwIGluZGV4DQo+ID4gYzlh MjI2NjE0ZS4uYmQ2NGUwODI4ZiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvcG93ZXIvdmVyc2lvbi5t YXANCj4gPiArKysgYi9saWIvcG93ZXIvdmVyc2lvbi5tYXANCj4gPiBAQCAtNTEsNCArNTEsMTgg QEAgRVhQRVJJTUVOVEFMIHsNCj4gPiAgICAgICBydGVfcG93ZXJfc2V0X3VuY29yZV9lbnY7DQo+ ID4gICAgICAgcnRlX3Bvd2VyX3VuY29yZV9mcmVxczsNCj4gPiAgICAgICBydGVfcG93ZXJfdW5z ZXRfdW5jb3JlX2VudjsNCj4gPiArICAgICAjIGFkZGVkIGluIDI0LjA3DQo+IDI0LjA3LS0+MjQu MTE/DQo+ID4gKyAgICAgcnRlX3Bvd2VyX2xvZ3R5cGU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtJ TlRFUk5BTCB7DQo+ID4gKyAgICAgZ2xvYmFsOg0KPiA+ICsNCj4gPiArICAgICBydGVfcG93ZXJf cmVnaXN0ZXJfb3BzOw0KPiA+ICsgICAgIGNwdWZyZXFfY2hlY2tfc2NhbGluZ19kcml2ZXI7DQo+ ID4gKyAgICAgcG93ZXJfc2V0X2dvdmVybm9yOw0KPiA+ICsgICAgIG9wZW5fY29yZV9zeXNmc19m aWxlOw0KPiA+ICsgICAgIHJlYWRfY29yZV9zeXNmc191MzI7DQo+ID4gKyAgICAgcmVhZF9jb3Jl X3N5c2ZzX3M7DQo+ID4gKyAgICAgd3JpdGVfY29yZV9zeXNmc19zOw0KPiA+ICAgfTsNCg==