From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 969BF1061B1E for ; Mon, 30 Mar 2026 20:31:12 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B3BFA10E7E5; Mon, 30 Mar 2026 20:31:11 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=amd.com header.i=@amd.com header.b="pKw+fdqJ"; dkim-atps=neutral Received: from SA9PR02CU001.outbound.protection.outlook.com (mail-southcentralusazon11013002.outbound.protection.outlook.com [40.93.196.2]) by gabe.freedesktop.org (Postfix) with ESMTPS id 901EF10E7E5 for ; Mon, 30 Mar 2026 20:31:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J+yH4TyUJMQgsnL4ku0tDVCwhLsgn/q1l/k/bloEJ6MnRPELXX0OqIcZsufNCiVMUriBR8lNUlCPsM+FuXxfRk1ZZ1NUFnhwAbQqDIucdueBF5oqkyUIJvnRZuU2T2srnNsRTjAlxKjMSaLIoH0YzKvLxkNmFIvBEh+hnFunQsnSa0ZSNVKZ/7EzW5QXhNUtNcrIhPYQqfWj6XvoOgwr/z2TTl82nzxKhqScWmpYRpE8RwyH7XpGBuhOrzKAUm+7P61Dtx6YF5sZQM4m+Dp7UDDX6bvGzM7sKm4RqUwTveipuwUMJho6R86IifRk2iz2Ovdub/DFQV4iDy+DbOVJkA== 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=MpYxtfKfJb5tO3u0FHtTih+y4btXkyuh2a83VLmOQnw=; b=uaWpcql2quNDLgVKUT1oR7G56nnlmP5MLeFpQLa9U/Fn1iEkdt36nJtTpR7mZ71HOmbCCsV+V4aPwzo/Vto0KSgkt/IXQoawsjM6Inh58AvGKnc3YPpITWxgykSgJBSqaxyc2b9cA2OpSAGY0ypKLuuMIT3LHV344/p6vnTPgd2bqJ0ARW5l7lz9MuQaqo5R9QpqZlUE9kaRJe4qtrzL/VU+MBFLXwMkQVXzfSwnQ4ANfnc7DP8Owxa6qfzoR0Fhv066Alx5G3njBmem7oIW2zduAtDZp6SnpuiJ2xMih7+e6QS4+hmP1rshB75ptFmAWjyA5KYO65UzWfunKu/W2w== 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=MpYxtfKfJb5tO3u0FHtTih+y4btXkyuh2a83VLmOQnw=; b=pKw+fdqJ1ExbyyYmrhr3VL/2GqeYX01E7bYod1Y778E3cJqgeaCst6e3cS30m992AW7hSt62TBRhQnMR2BEBVtZITHugyL3mli01KoHRC0sc0kZGyBJQTaTWt88rLZUUKtLwZwxEdGtQp+FCTcH2JzBOnMucUsUvf6CYxp2auEI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from IA1PR12MB9062.namprd12.prod.outlook.com (2603:10b6:208:3aa::14) by PH7PR12MB6833.namprd12.prod.outlook.com (2603:10b6:510:1af::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.15; Mon, 30 Mar 2026 20:30:59 +0000 Received: from IA1PR12MB9062.namprd12.prod.outlook.com ([fe80::28c6:3cbd:6e97:5257]) by IA1PR12MB9062.namprd12.prod.outlook.com ([fe80::28c6:3cbd:6e97:5257%6]) with mapi id 15.20.9769.014; Mon, 30 Mar 2026 20:30:58 +0000 Message-ID: <7240334c-c745-4b98-952a-c81ce4eeb65a@amd.com> Date: Mon, 30 Mar 2026 13:30:55 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V1 4/6] accel/amdxdna: Add AIE4 firmware loading To: Mario Limonciello , Lizhi Hou , ogabbay@kernel.org, quic_jhugo@quicinc.com, dri-devel@lists.freedesktop.org, maciej.falkowski@linux.intel.com Cc: linux-kernel@vger.kernel.org, max.zhen@amd.com, sonal.santan@amd.com, Hayden Laccabue References: <20260330163705.3153647-1-lizhi.hou@amd.com> <20260330163705.3153647-5-lizhi.hou@amd.com> <4a1ebe69-3bcb-46c3-874c-907e7e5942d5@amd.com> Content-Language: en-US From: yidong Zhang In-Reply-To: <4a1ebe69-3bcb-46c3-874c-907e7e5942d5@amd.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: SJ0PR05CA0014.namprd05.prod.outlook.com (2603:10b6:a03:33b::19) To IA1PR12MB9062.namprd12.prod.outlook.com (2603:10b6:208:3aa::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA1PR12MB9062:EE_|PH7PR12MB6833:EE_ X-MS-Office365-Filtering-Correlation-Id: 498aa604-ace9-4477-2f27-08de8e9b3ff9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: zYlKmGBCSBfJttArfX5RVnenvzf5RbG8z0GnTmicCjGU74IE5CeG+2EfjDcqpsYmt7QKvjOvJHBgjQt73e49SXkRdiTBoX9dJdbLhGtPGcBz1JLL8LhABqBgwoYbI9DWuGBELINPrqpWrroIezD1vmzuvqYnSV7voBP4sKuk/riZdbk0LNObcAuwquxfacDp1hxERZr4J+XxPEkJ3j09TWjm0lzG1h5/fJj6Bu5adrOYyDMdszQ+HgpX1QVLZQjGrYyNiBfWkfGf1JCbyF84iF8XsrCcbPSHR4GWZq4jQvGTjgLMS/IQTw+MeguooWr+PIYrE1RA6Dc3q3D08Ie3BMqgKRFn9K7M0vlTP5fuzW8Amq1xl+Ih4pGDDICK8TeKU/GUiMMzw0MU011+TMFRSSVvrccrk/Nj9KRZjXjXcvpIA5gXiaHleIzenr87eoOKcTVY4uJsAM0TiRGKE5E9TjY5vgE89nkrLs01rkuHf7rr3AjrG+EuvldbJIpVu82p3nWPNapjk/Bu1M33pjXpviEWHLFdtbTMPGAKbOjvuAYr2a1jVaFJ+PFC8Xecppg0sEtqRPD4hE7Pq6k0V1+56omSxt/FmqCQYyg2mo6xCnxox7FmXc1bltn+cV1mzwwdIkhyG2iRQXUVXoOGakRaT/d/TeCMmpvda7lzhb1XT4IVR7/IWDsLpsQgdekzuhjmquISMpomdQfBmubhQ4zxVMFUVqcDVQCeft2tOGQ2W2Y= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA1PR12MB9062.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WXBQR2oyKzVxSlVPRFZxRnBSa29yaTJuR0RmZEN0ZlJOakFhTG4zVXBuNFAr?= =?utf-8?B?MVJQSldwZGtSNVdBeC8wNGlEZmdydWtWNm1NcnRDSlJ4Uk5CUHNDMnV1WWFE?= =?utf-8?B?MDZvT1pXemo3RUlkeUdCclZ5cy9HUythN0duNUdnN2RZWHlMSTRkZU1TOHhG?= =?utf-8?B?SGRJSy9NcWViOUhDMmpVbE5xQUhWSWcyRnF4NitOUW0wTWdWRm1QT3JBeTI3?= =?utf-8?B?Z1dLaUxCdlRTcVBMeWt6SzNFbkZ3aWFuVW5FbGt0WVY2VnVZUU10UkZDQlo4?= =?utf-8?B?aEtYbE84NGFOOU5iVmlVOC9UVG9BUXBWa2ZaSVdlT284aUNNRWVQRVJqM2dh?= =?utf-8?B?MzNSVFJTZS9vWmt2RC9UZE9yMmVFMlZ2SERXVnloWGowR1hmck5vaUhJbVoy?= =?utf-8?B?NXNkV1FVdnIvR0FlSGxHS09DSTFwU29YUzUxVFZwWDJMdVlYUHJTVDVNaHNT?= =?utf-8?B?Uk5tTHluQ0FCcnhXNVYyMGxiK3pzaGRJNk03NkRtM0FUTEJTc1ZEdDBkU2Vs?= =?utf-8?B?Zm4yME9sMjZsZklGbkZCWkc5cDZBU1Q2ZG5FMDY5SXFVZ0N1cUs3VlZyV24v?= =?utf-8?B?REVyc3ZxbzNtSHptdTJkMnBOeE9IU2orN2p5ZldBNGxnR09oQnkxYVRIS1Zx?= =?utf-8?B?VlFPNjY5eU1FNmltNkVBMFdQUGh4Rk9oaldVNHJiOUJuSzcwU0xpRFdKZk9s?= =?utf-8?B?aDJuREtYMW5xeVBkdkJXYVhXVjdmWjZMcXZFSFZvbis0N2RvYld2YlB5ZU5p?= =?utf-8?B?UmpUL0FSN1hBVHVVWlJjRWlFaEFYK3RKVERmcS92OHEreE5GMmUybTI4UHQw?= =?utf-8?B?cVhSelRmVlZXbHFiSmVEckZTY1E4WTRqVFRPNVlyZ2ExTkdUYnBUWTdlUTdj?= =?utf-8?B?K2tOdXNCTThQV1R4UTIwL1BRdk56QjJaa1gvakpsdEc5M1hQbVVSR3lFNGhR?= =?utf-8?B?RmRlWmRDVzk0WkZVeFBITGZCU0xJVVIzQXBKYW5TT0lTa2ZXYkhSTy9HY3Js?= =?utf-8?B?OHNoNUM3OU9BcEJXVEQ3UTRxSXh4dGtYL0xHMDdRWVhYNWJxd3ZveElyK04r?= =?utf-8?B?VlBiQVFTUFFCRnZJdlVtbVRmeG84cjBpdmsrU0luOVd0ajBIMGs3SkM1Mm1y?= =?utf-8?B?M0wrM0xrVEdZa1hSMHFVSjVDRUxMaEdMeStlWXdNNVlaeUs2L2pnWVVJUEZo?= =?utf-8?B?NWlJNnozTjgyRFFKcXhCUHFUVkpqNVVkbjQreURGNnBEaUNTb0tTV0JpVUFJ?= =?utf-8?B?VGpUZ1RzWXI4cFl1U01SYk1CTml1ZEwwamtDUHNrRXdETC8vck9Bb3NwckFP?= =?utf-8?B?UVFsZ0hTYUphcnNpVFpHYmh5MkdKeWorRFl4STZhcFh3Nkp1RDRhRWRHMllI?= =?utf-8?B?NGoyRGJraTVqamZ3a1J3QnNLdWtKNnA2WmtWeURMTnhBS1kwMCtGZmVNQXFl?= =?utf-8?B?T0FLSGtpWUtHTnVIZ0FYUzZVd2lobzRoMlpTei9SL3Y3SzZHZVN0R0twSnBP?= =?utf-8?B?L1Zka2Y5bnFTbVR6RnhDVDVuYmdmVTU0cjVCd1BDNnpvVkNjTGVzbGpNWkVn?= =?utf-8?B?TklIRVhzaWVNdHNPdUlmc0RwR3pQWnh6V2pUSmxpNjdUS0NPWEdmSFRFdlNx?= =?utf-8?B?NnFlc1VLV0RKYXRqdkUvYzZNUkRaUzFXcGcxZFZDSzNWTWdRajhoUTZOSHdw?= =?utf-8?B?R0ZUUUVLRGxKMG9KWitEYTY3aENra1RMR0pTOG9aM1NiTFFpMmZ0Q3Q4bVhx?= =?utf-8?B?Ujk5S3ZTNlJxSXhaazZhVFYyZlM3VFFsZ0x1bk4rTWh6UjZIbzhwVHFNU21U?= =?utf-8?B?L1VwSW5ZMDFJdFFuNWZuUkMxc0RLM1FlUVVIUlZDb0FXbzVERHFxOU50czJE?= =?utf-8?B?Ly9xUkxJd0RuQlRxbjljekk1S0k0dVhELzZIQWFCQUpObThYbnR3UkY4VjVE?= =?utf-8?B?d2pzZFo3cXg4bUcvTzBHNTNnb0ZGdHBSZ2kzc3orbWZLQ1BTWmpoSE41c29P?= =?utf-8?B?WllCNHVMZE1QUTJsQ0o1Tmt6cURQalQ0NFo1djZVQVE1TlE0MzJoMXZSdVRB?= =?utf-8?B?Szk5b0IzZFVMQytaQlNIL0x6K2NWRlBlUmJCdG12RUNuMWVzNHM5T0RmOVNX?= =?utf-8?B?Q1lFeHlNN2NaTEJ4YjhvMzR0SkRycmo4bGkxNGIwZEZRN0Vua0VWcTIyNkdN?= =?utf-8?B?aE4va3h4MTJ0WG1iMmRNbzM4Unpwc0tPMnZlOUtraXJza004cDYvc3ZwVWlu?= =?utf-8?B?VUpsU2hqMDloc3Z5Q1JxaUdIRTU1OVU3dDBVU2Q1aTAvSEoyeVBDamxRMjl6?= =?utf-8?B?b3QzYjNyZzdQQlZWaU1zR0tMU1VKdEZva3lpN0s5ZXZMKzJiSGlXdz09?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 498aa604-ace9-4477-2f27-08de8e9b3ff9 X-MS-Exchange-CrossTenant-AuthSource: IA1PR12MB9062.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 20:30:57.9117 (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: KwNIaLncUoA2E5pEtYniSCtO2+1x8xKnjkigVeDwqliCavHBjHzNrz5n3XCiXGzbKKcpwPpSFUyhmFARXfwfRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6833 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDMvMzAvMjYgMTM6MTcsIE1hcmlvIExpbW9uY2llbGxvIHdyb3RlOgo+Cj4KPiBPbiAzLzMw LzI2IDExOjM3LCBMaXpoaSBIb3Ugd3JvdGU6Cj4+IEZyb206IERhdmlkIFpoYW5nIDx5aWRvbmcu emhhbmdAYW1kLmNvbT4KPj4KPj4gQWRkIHN1cHBvcnQgZm9yIGxvYWRpbmcgQUlFNCBmaXJtd2Fy ZSB0aHJvdWdoIHRoZSBjb21tb24gUFNQCj4+IGludGVyZmFjZXMuCj4+Cj4+IENvbXBhcmVkIHRv IEFJRTIsIEFJRTQgaW50cm9kdWNlcyBhbiBhZGRpdGlvbmFsIENFUlQgZmlybXdhcmUgaW1hZ2Uu Cj4+IGFpZW1fcHNwX2NyZWF0ZSgpIHBlcmZvcm1zIENFUlQgc2V0dXAgd2hlbiB0aGUgQ0VSVCBp bWFnZSBzaXplIGlzCj4+IG5vbi16ZXJvLgo+Pgo+PiBDby1kZXZlbG9wZWQtYnk6IEhheWRlbiBM YWNjYWJ1ZSA8SGF5ZGVuLkxhY2NhYnVlQGFtZC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEhheWRl biBMYWNjYWJ1ZSA8SGF5ZGVuLkxhY2NhYnVlQGFtZC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IERh dmlkIFpoYW5nIDx5aWRvbmcuemhhbmdAYW1kLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogTGl6aGkg SG91IDxsaXpoaS5ob3VAYW1kLmNvbT4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvYWNjZWwvYW1keGRu YS9haWUuaMKgwqDCoMKgwqDCoCB8wqDCoCA0ICsKPj4gwqAgZHJpdmVycy9hY2NlbC9hbWR4ZG5h L2FpZTJfcGNpLmPCoCB8wqDCoCAyICsKPj4gwqAgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZTRf cGNpLmPCoCB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrLQo+PiDCoCBkcml2ZXJzL2FjY2Vs L2FtZHhkbmEvYWllNF9wY2kuaMKgIHzCoMKgIDQgKwo+PiDCoCBkcml2ZXJzL2FjY2VsL2FtZHhk bmEvYWllX3BzcC5jwqDCoCB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPj4g wqAgZHJpdmVycy9hY2NlbC9hbWR4ZG5hL25wdTNfcmVncy5jIHzCoCAyMyArKysrKwo+PiDCoCA2 IGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUuaCBiL2RyaXZlcnMvYWNjZWwv YW1keGRuYS9haWUuaAo+PiBpbmRleCAxMjRjMGY3ZTljYTAuLjQyM2VkMzRhZjllZSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9hY2NlbC9hbWR4ZG5hL2FpZS5oCj4+ICsrKyBiL2RyaXZlcnMvYWNj ZWwvYW1keGRuYS9haWUuaAo+PiBAQCAtNTcsNyArNTcsMTEgQEAgc3RydWN0IGFpZV9iYXJfb2Zm X3BhaXIgewo+PiDCoCBzdHJ1Y3QgcHNwX2NvbmZpZyB7Cj4+IMKgwqDCoMKgwqAgY29uc3Qgdm9p ZMKgwqDCoMKgwqDCoMKgICpmd19idWY7Cj4+IMKgwqDCoMKgwqAgdTMywqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBmd19zaXplOwo+PiArwqDCoMKgIGNvbnN0IHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqY2VydGZ3X2J1ZjsKPj4gK8KgwqDCoCB1MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGNlcnRmd19zaXplOwo+PiDCoMKgwqDCoMKgIHZvaWQgX19pb21l bcKgwqDCoMKgwqDCoMKgICpwc3BfcmVnc1tQU1BfTUFYX1JFR1NdOwo+PiArwqDCoMKgIHUzMsKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJnMl9tYXNrOwo+PiArwqDCoMKgIHUzMsKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbm90aWZ5X3ZhbDsKPj4gwqAgfTsKPj4gwqAgwqAgLyogYWllLmMgKi8KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX3BjaS5jIGIvZHJpdmVycy9h Y2NlbC9hbWR4ZG5hL2FpZTJfcGNpLmMKPj4gaW5kZXggZTRiNzg5M2JkNDI5Li4wNDg5ZTY2OGNk NzMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX3BjaS5jCj4+ICsr KyBiL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWUyX3BjaS5jCj4+IEBAIC01NDksNiArNTQ5LDgg QEAgc3RhdGljIGludCBhaWUyX2luaXQoc3RydWN0IGFtZHhkbmFfZGV2ICp4ZG5hKQo+PiDCoCDC oMKgwqDCoMKgIHBzcF9jb25mLmZ3X3NpemUgPSBmdy0+c2l6ZTsKPj4gwqDCoMKgwqDCoCBwc3Bf Y29uZi5md19idWYgPSBmdy0+ZGF0YTsKPj4gK8KgwqDCoCBwc3BfY29uZi5hcmcyX21hc2sgPSBH RU5NQVNLKDIzLCAwKTsKPj4gK8KgwqDCoCBwc3BfY29uZi5ub3RpZnlfdmFsID0gMTsKPj4gwqDC oMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgUFNQX01BWF9SRUdTOyBpKyspCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCBwc3BfY29uZi5wc3BfcmVnc1tpXSA9IHRibFtQU1BfUkVHX0JBUihuZGV2LCBpKV0g KyBQU1BfUkVHX09GRihuZGV2LCBpKTsKPj4gwqDCoMKgwqDCoCBuZGV2LT5haWUucHNwX2hkbCA9 IGFpZW1fcHNwX2NyZWF0ZSgmeGRuYS0+ZGRldiwgJnBzcF9jb25mKTsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWU0X3BjaS5jIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5h L2FpZTRfcGNpLmMKPj4gaW5kZXggMGYzNjBjMWNjZWJkLi5lNzk5M2IzMTU5OTYgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWU0X3BjaS5jCj4+ICsrKyBiL2RyaXZlcnMv YWNjZWwvYW1keGRuYS9haWU0X3BjaS5jCj4+IEBAIC02LDExICs2LDE1IEBACj4+IMKgICNpbmNs dWRlIDxkcm0vYW1keGRuYV9hY2NlbC5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2RybV9tYW5hZ2Vk Lmg+Cj4+IMKgICNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv ZmlybXdhcmUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgo+PiDCoCDCoCAjaW5jbHVk ZSAiYWllNF9wY2kuaCIKPj4gwqAgI2luY2x1ZGUgImFtZHhkbmFfcGNpX2Rydi5oIgo+PiDCoCAt I2RlZmluZSBOT19JT0hVQsKgwqDCoCAwCj4+ICsjZGVmaW5lIE5PX0lPSFVCwqDCoMKgwqDCoMKg wqAgMAo+PiArI2RlZmluZSBDRVJURldfTUFYX1NJWkXCoMKgwqDCoMKgwqDCoMKgIChTWl8zMksg KyBTWl8yNTYpCj4+ICsjZGVmaW5lIFBTUF9OT1RJRllfSU5UUsKgwqDCoMKgwqDCoMKgIDB4RDAw N0JFMTEKPj4gwqAgwqAgLyoKPj4gwqDCoCAqIFRoZSBtYW5hZ2VtZW50IG1haWxib3ggY2hhbm5l bCBpcyBhbGxvY2F0ZWQgYnkgZmlybXdhcmUuCj4+IEBAIC0yMDcsMTMgKzIxMSwxMiBAQCBzdGF0 aWMgaW50IGFpZTRfbWFpbGJveF9pbml0KHN0cnVjdCBhbWR4ZG5hX2RldiAqeGRuYSkKPj4gwqAg wqAgc3RhdGljIHZvaWQgYWllNF9md191bmxvYWQoc3RydWN0IGFtZHhkbmFfZGV2X2hkbCAqbmRl dikKPj4gwqAgewo+PiAtwqDCoMKgIC8qIFRPRE8gKi8KPj4gK8KgwqDCoCBhaWVfcHNwX3N0b3Ao bmRldi0+YWllLnBzcF9oZGwpOwo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyBpbnQgYWllNF9md19s b2FkKHN0cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYpCj4+IMKgIHsKPj4gLcKgwqDCoCAvKiBU T0RPICovCj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKgwqAgcmV0dXJuIGFpZV9wc3Bfc3Rh cnQobmRldi0+YWllLnBzcF9oZGwpOwo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyBpbnQgYWllNF9o d19zdGFydChzdHJ1Y3QgYW1keGRuYV9kZXYgKnhkbmEpCj4+IEBAIC0yNjEsMTEgKzI2NCw5OCBA QCBzdGF0aWMgdm9pZCBhaWU0X2h3X3N0b3Aoc3RydWN0IGFtZHhkbmFfZGV2ICp4ZG5hKQo+PiDC oMKgwqDCoMKgIGFpZTRfZndfdW5sb2FkKG5kZXYpOwo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgaW50 IGFpZTRfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgYW1keGRuYV9kZXZfaGRsICpuZGV2LAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGZpcm13YXJlICoq bnB1ZncsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3Qg ZmlybXdhcmUgKipjZXJ0ZncpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGFtZHhkbmFfZGV2ICp4 ZG5hID0gbmRldi0+YWllLnhkbmE7Cj4+ICvCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0 b19wY2lfZGV2KHhkbmEtPmRkZXYuZGV2KTsKPj4gK8KgwqDCoCBjaGFyIGZ3X25hbWVbMTI4XTsK Pj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gc25wcmludGYoZndfbmFt ZSwgc2l6ZW9mKGZ3X25hbWUpLCAiYW1kbnB1LyUwNHhfJTAyeC8lcyIsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHBkZXYtPmRldmljZSwgcGRldi0+cmV2aXNpb24sIG5kZXYtPnBy aXYtPm5wdWZ3X3BhdGgpOwo+PiArwqDCoMKgIGlmIChyZXQgPj0gc2l6ZW9mKGZ3X25hbWUpKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBYRE5BX0VSUih4ZG5hLCAibnB1IGZpcm13YXJlIHBhdGggaXMg dHJ1bmNhdGVkIik7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gK8KgwqDC oCB9Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSByZXF1ZXN0X2Zpcm13YXJlKG5wdWZ3LCBmd19uYW1l LCAmcGRldi0+ZGV2KTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBY RE5BX0VSUih4ZG5hLCAiZmFpbGVkIHRvIHJlcXVlc3RfZmlybXdhcmUgJXMsIHJldCAlZCIsIGZ3 X25hbWUsIHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgIHJldCA9IHNucHJpbnRmKGZ3X25hbWUsIHNpemVvZihmd19uYW1lKSwg ImFtZG5wdS8lMDR4XyUwMngvJXMiLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw ZGV2LT5kZXZpY2UsIHBkZXYtPnJldmlzaW9uLCBuZGV2LT5wcml2LT5jZXJ0ZndfcGF0aCk7Cj4+ ICvCoMKgwqAgaWYgKHJldCA+PSBzaXplb2YoZndfbmFtZSkpIHsKPj4gK8KgwqDCoMKgwqDCoMKg IFhETkFfRVJSKHhkbmEsICJjZXJ0IGZpcm13YXJlIHBhdGggaXMgdHJ1bmNhdGVkIik7Cj4+ICvC oMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byByZWxl YXNlX25wdWZ3Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldCA9IHJlcXVlc3RfZmly bXdhcmUoY2VydGZ3LCBmd19uYW1lLCAmcGRldi0+ZGV2KTsKPj4gK8KgwqDCoCBpZiAocmV0KSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBYRE5BX0VSUih4ZG5hLCAiZmFpbGVkIHRvIHJlcXVlc3RfZmly bXdhcmUgJXMsIHJldCAlZCIsIGZ3X25hbWUsIHJldCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3Rv IHJlbGVhc2VfbnB1Znc7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKCgqY2VydGZ3 KS0+c2l6ZSA+IENFUlRGV19NQVhfU0laRSkgewo+PiArwqDCoMKgwqDCoMKgwqAgWEROQV9FUlIo eGRuYSwgIkNFUlRGVyBvdmVyIG1heGltdW0gc2l6ZSBvZiAzMiBLQiArIDI1NiBCIik7Cj4+ICvC oMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byByZWxl YXNlX2NlcnRmdzsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gKwo+ PiArcmVsZWFzZV9jZXJ0Znc6Cj4+ICvCoMKgwqAgcmVsZWFzZV9maXJtd2FyZSgqY2VydGZ3KTsK Pj4gK3JlbGVhc2VfbnB1Znc6Cj4+ICvCoMKgwqAgcmVsZWFzZV9maXJtd2FyZSgqbnB1ZncpOwo+ PiArCj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgYWll NF9yZWxlYXNlX2Zpcm13YXJlKHN0cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYsCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqbnB1 ZncsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBm aXJtd2FyZSAqY2VydGZ3KQo+PiArewo+PiArwqDCoMKgIHJlbGVhc2VfZmlybXdhcmUoY2VydGZ3 KTsKPj4gK8KgwqDCoCByZWxlYXNlX2Zpcm13YXJlKG5wdWZ3KTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGludCBhaWU0X3ByZXBhcmVfZmlybXdhcmUoc3RydWN0IGFtZHhkbmFfZGV2X2hkbCAqbmRl diwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBmaXJt d2FyZSAqbnB1ZncsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBz dHJ1Y3QgZmlybXdhcmUgKmNlcnRmdywKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHZvaWQgX19pb21lbSAqdGJsW1BDSV9OVU1fUkVTT1VSQ0VTXSkKPj4gK3sKPj4gK8KgwqDC oCBzdHJ1Y3QgYW1keGRuYV9kZXYgKnhkbmEgPSBuZGV2LT5haWUueGRuYTsKPj4gK8KgwqDCoCBz dHJ1Y3QgcHNwX2NvbmZpZyBwc3BfY29uZjsKPj4gK8KgwqDCoCBpbnQgaTsKPj4gKwo+PiArwqDC oMKgIHBzcF9jb25mLmZ3X3NpemUgPSBucHVmdy0+c2l6ZTsKPj4gK8KgwqDCoCBwc3BfY29uZi5m d19idWYgPSBucHVmdy0+ZGF0YTsKPj4gK8KgwqDCoCBwc3BfY29uZi5jZXJ0Zndfc2l6ZSA9IGNl cnRmdy0+c2l6ZTsKPj4gK8KgwqDCoCBwc3BfY29uZi5jZXJ0ZndfYnVmID0gY2VydGZ3LT5kYXRh Owo+PiArwqDCoMKgIHBzcF9jb25mLmFyZzJfbWFzayA9IH4wOwo+PiArwqDCoMKgIHBzcF9jb25m Lm5vdGlmeV92YWwgPSBQU1BfTk9USUZZX0lOVFI7Cj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8 IFBTUF9NQVhfUkVHUzsgaSsrKQo+PiArwqDCoMKgwqDCoMKgwqAgcHNwX2NvbmYucHNwX3JlZ3Nb aV0gPSB0YmxbUFNQX1JFR19CQVIobmRldiwgaSldICsgUFNQX1JFR19PRkYobmRldiwgaSk7Cj4+ ICvCoMKgwqAgbmRldi0+YWllLnBzcF9oZGwgPSBhaWVtX3BzcF9jcmVhdGUoJnhkbmEtPmRkZXYs ICZwc3BfY29uZik7Cj4+ICvCoMKgwqAgaWYgKCFuZGV2LT5haWUucHNwX2hkbCkgewo+PiArwqDC oMKgwqDCoMKgwqAgWEROQV9FUlIoeGRuYSwgImZhaWxlZCB0byBjcmVhdGUgcHNwIik7Cj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgaW50IGFpZTRfcGNpZGV2X2luaXQo c3RydWN0IGFtZHhkbmFfZGV2X2hkbCAqbmRldikKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVj dCBhbWR4ZG5hX2RldiAqeGRuYSA9IG5kZXYtPmFpZS54ZG5hOwo+PiDCoMKgwqDCoMKgIHN0cnVj dCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2Rldih4ZG5hLT5kZGV2LmRldik7Cj4+IMKgwqDCoMKg wqAgdm9pZCBfX2lvbWVtICp0YmxbUENJX05VTV9SRVNPVVJDRVNdID0gezB9Owo+PiArwqDCoMKg IGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqbnB1ZncsICpjZXJ0Znc7Cj4+IMKgwqDCoMKgwqAgdW5z aWduZWQgbG9uZyBiYXJzID0gMDsKPj4gwqDCoMKgwqDCoCBpbnQgcmV0LCBpOwo+PiDCoCBAQCAt MjgyLDYgKzM3Miw4IEBAIHN0YXRpYyBpbnQgYWllNF9wY2lkZXZfaW5pdChzdHJ1Y3QgYW1keGRu YV9kZXZfaGRsICpuZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqDC oMKgwqDCoCB9Cj4+IMKgICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IFBTUF9NQVhfUkVHUzsgaSsr KQo+PiArwqDCoMKgwqDCoMKgwqAgc2V0X2JpdChQU1BfUkVHX0JBUihuZGV2LCBpKSwgJmJhcnMp Owo+PiDCoMKgwqDCoMKgIHNldF9iaXQoeGRuYS0+ZGV2X2luZm8tPm1ib3hfYmFyLCAmYmFycyk7 Cj4+IMKgwqDCoMKgwqAgc2V0X2JpdCh4ZG5hLT5kZXZfaW5mby0+c3JhbV9iYXIsICZiYXJzKTsK Pj4gwqAgQEAgLTMwMCw2ICszOTIsMTUgQEAgc3RhdGljIGludCBhaWU0X3BjaWRldl9pbml0KHN0 cnVjdCBhbWR4ZG5hX2Rldl9oZGwgKm5kZXYpCj4+IMKgIMKgwqDCoMKgwqAgcGNpX3NldF9tYXN0 ZXIocGRldik7Cj4+IMKgICvCoMKgwqAgcmV0ID0gYWllNF9yZXF1ZXN0X2Zpcm13YXJlKG5kZXYs ICZucHVmdywgJmNlcnRmdyk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKg IGdvdG8gY2xlYXJfbWFzdGVyOwo+PiArCj4+ICvCoMKgwqAgcmV0ID0gYWllNF9wcmVwYXJlX2Zp cm13YXJlKG5kZXYsIG5wdWZ3LCBjZXJ0ZncsIHRibCk7Cj4+ICvCoMKgwqAgYWllNF9yZWxlYXNl X2Zpcm13YXJlKG5kZXYsIG5wdWZ3LCBjZXJ0ZncpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvC oMKgwqDCoMKgwqDCoCBnb3RvIGNsZWFyX21hc3RlcjsKPj4gKwo+PiDCoMKgwqDCoMKgIHJldCA9 IGFpZTRfaXJxX2luaXQoeGRuYSk7Cj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGdvdG8gY2xlYXJfbWFzdGVyOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2Nl bC9hbWR4ZG5hL2FpZTRfcGNpLmggYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllNF9wY2kuaAo+ PiBpbmRleCBmMzgxMGE5Njk0MzEuLmVlMzg4Y2NmNzE5NiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9hY2NlbC9hbWR4ZG5hL2FpZTRfcGNpLmgKPj4gKysrIGIvZHJpdmVycy9hY2NlbC9hbWR4ZG5h L2FpZTRfcGNpLmgKPj4gQEAgLTE0LDkgKzE0LDEzIEBACj4+IMKgICNpbmNsdWRlICJhbWR4ZG5h X21haWxib3guaCIKPj4gwqAgwqAgc3RydWN0IGFtZHhkbmFfZGV2X3ByaXYgewo+PiArwqDCoMKg IGNvbnN0IGNoYXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqbnB1ZndfcGF0aDsKPj4gK8Kg wqDCoCBjb25zdCBjaGFywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmNlcnRmd19wYXRoOwo+ PiDCoMKgwqDCoMKgIHUzMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWJveF9iYXI7Cj4+IMKgwqDC oMKgwqAgdTMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtYm94X3JidWZfYmFyOwo+PiDCoMKgwqDC oMKgIHU2NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWJveF9pbmZvX29mZjsKPj4gKwo+PiArwqDC oMKgIHN0cnVjdCBhaWVfYmFyX29mZl9wYWlywqDCoMKgIHBzcF9yZWdzX29mZltQU1BfTUFYX1JF R1NdOwo+PiDCoCB9Owo+PiDCoCDCoCBzdHJ1Y3QgYW1keGRuYV9kZXZfaGRsIHsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNjZWwvYW1keGRuYS9haWVfcHNwLmMgYi9kcml2ZXJzL2FjY2VsL2Ft ZHhkbmEvYWllX3BzcC5jCj4+IGluZGV4IDg3NDNiODEyYTQ0OS4uNDU4ZGNhN2NjNWEwIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvYWllX3BzcC5jCj4+ICsrKyBiL2RyaXZl cnMvYWNjZWwvYW1keGRuYS9haWVfcHNwLmMKPj4gQEAgLTE4LDYgKzE4LDcgQEAKPj4gwqAgI2Rl ZmluZSBQU1BfVkFMSURBVEXCoMKgwqDCoMKgwqDCoCAxCj4+IMKgICNkZWZpbmUgUFNQX1NUQVJU wqDCoMKgwqDCoMKgwqAgMgo+PiDCoCAjZGVmaW5lIFBTUF9SRUxFQVNFX1RNUsKgwqDCoMKgwqDC oMKgIDMKPj4gKyNkZWZpbmUgUFNQX1ZBTElEQVRFX0NFUlTCoMKgwqDCoMKgwqAgNAo+PiDCoCDC oCAvKiBQU1Agc3BlY2lhbCBhcmd1bWVudHMgKi8KPj4gwqAgI2RlZmluZSBQU1BfU1RBUlRfQ09Q WV9GV8KgwqDCoCAxCj4+IEBAIC0yNywxMCArMjgsMjAgQEAKPj4gwqAgI2RlZmluZSBQU1BfRVJS T1JfQkFEX1NUQVRFwqDCoMKgIDB4RkZGRjAwMDcKPj4gwqAgwqAgI2RlZmluZSBQU1BfRldfQUxJ R07CoMKgwqDCoMKgwqDCoCAweDEwMDAwCj4+ICsjZGVmaW5lIFBTUF9DRldfQUxJR07CoMKgwqDC oMKgwqDCoMKgwqDCoCAweDgwMDAKPj4gwqAgI2RlZmluZSBQU1BfUE9MTF9JTlRFUlZBTMKgwqDC oCAyMDAwMMKgwqDCoCAvKiB1cyAqLwo+PiDCoCAjZGVmaW5lIFBTUF9QT0xMX1RJTUVPVVTCoMKg wqAgMTAwMDAwMMKgwqDCoCAvKiB1cyAqLwo+PiDCoCAtI2RlZmluZSBQU1BfUkVHKHAsIHJlZykg KChwKS0+cHNwX3JlZ3NbcmVnXSkKPj4gKyNkZWZpbmUgUFNQX1JFRyhwLCByZWcpICgocCktPmNv bmYucHNwX3JlZ3NbcmVnXSkKPj4gKyNkZWZpbmUgUFNQX1NFVF9DTUQocHNwLCByZWdfdmFscywg Y21kLCBhcmcwLCBhcmcxLCBhcmcyKcKgwqDCoMKgwqDCoMKgIFwKPj4gKyh7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcCj4+ICvCoMKgwqAgdTMyICpfcmVncyA9IHJlZ192YWxzO8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIHUzMiBfY21kID0gY21kO8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ ICvCoMKgwqAgX3JlZ3NbMF0gPSBfY21kO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIF9yZWdzWzFdID0gYXJnMDvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBfcmVnc1syXSA9 IGFyZzE7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ ICvCoMKgwqAgX3JlZ3NbM10gPSAoKGFyZzIpIHwgKChfY21kKSA8PCAyNCkpICYgKHBzcCktPmNv bmYuYXJnMl9tYXNrO8KgwqDCoCBcCj4+ICt9KQo+PiDCoCDCoCBzdHJ1Y3QgcHNwX2RldmljZSB7 Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRybV9kZXZpY2XCoMKgwqAgKmRkZXY7Cj4+IEBAIC0zOCw3 ICs0OSw5IEBAIHN0cnVjdCBwc3BfZGV2aWNlIHsKPj4gwqDCoMKgwqDCoCB1MzLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZ3X2J1Zl9zejsKPj4gwqDCoMKgwqDCoCB1NjTCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGZ3X3BhZGRyOwo+PiDCoMKgwqDCoMKgIHZvaWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICpmd19idWZmZXI7Cj4+IC3CoMKgwqAgdm9pZCBfX2lvbWVtwqDCoMKgwqDCoMKgwqAgKnBzcF9y ZWdzW1BTUF9NQVhfUkVHU107Cj4+ICvCoMKgwqAgdTMywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjZXJ0ZndfYnVmX3N6Owo+PiArwqDCoMKgIHU2NMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2VydGZ3X3BhZGRyOwo+PiArwqDCoMKgIHZv aWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqY2VydGZ3X2J1ZmZlcjsK Pj4gwqAgfTsKPj4gwqAgwqAgc3RhdGljIGludCBwc3BfZXhlYyhzdHJ1Y3QgcHNwX2RldmljZSAq cHNwLCB1MzIgKnJlZ192YWxzKQo+PiBAQCAtNDcsMTMgKzYwLDIyIEBAIHN0YXRpYyBpbnQgcHNw X2V4ZWMoc3RydWN0IHBzcF9kZXZpY2UgKnBzcCwgdTMyICpyZWdfdmFscykKPj4gwqDCoMKgwqDC oCBpbnQgcmV0LCBpOwo+PiDCoMKgwqDCoMKgIHUzMiByZWFkeTsKPj4gwqAgK8KgwqDCoCAvKiBD aGVjayBmb3IgUFNQIHJlYWR5IGJlZm9yZSBhbnkgd3JpdGUgKi8KPj4gK8KgwqDCoCByZXQgPSBy ZWFkeF9wb2xsX3RpbWVvdXQocmVhZGwsIFBTUF9SRUcocHNwLCBQU1BfU1RBVFVTX1JFRyksIHJl YWR5LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklFTERfR0VUKFBTUF9T VEFUVVNfUkVBRFksIHJlYWR5KSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFBTUF9QT0xMX0lOVEVSVkFMLCBQU1BfUE9MTF9USU1FT1VUKTsKPj4gK8KgwqDCoCBpZiAocmV0 KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKHBzcC0+ZGRldiwgIlBTUCBpcyBub3QgcmVh ZHksIHJldCAweCV4IiwgcmV0KTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvC oMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqAgLyogV3JpdGUgY29tbWFuZCBhbmQgYXJndW1lbnQg cmVnaXN0ZXJzICovCj4+IMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IFBTUF9OVU1fSU5fUkVH UzsgaSsrKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsKHJlZ192YWxzW2ldLCBQU1BfUkVH KHBzcCwgaSkpOwo+PiDCoCDCoMKgwqDCoMKgIC8qIGNsZWFyIGFuZCBzZXQgUFNQIElOVFIgcmVn aXN0ZXIgdG8ga2ljayBvZmYgKi8KPj4gwqDCoMKgwqDCoCB3cml0ZWwoMCwgUFNQX1JFRyhwc3As IFBTUF9JTlRSX1JFRykpOwo+PiAtwqDCoMKgIHdyaXRlbCgxLCBQU1BfUkVHKHBzcCwgUFNQX0lO VFJfUkVHKSk7Cj4+ICvCoMKgwqAgd3JpdGVsKHBzcC0+Y29uZi5ub3RpZnlfdmFsLCBQU1BfUkVH KHBzcCwgUFNQX0lOVFJfUkVHKSk7Cj4+IMKgIMKgwqDCoMKgwqAgLyogUFNQIHNob3VsZCBiZSBi dXN5LiBXYWl0IGZvciByZWFkeSwgc28gd2Uga25vdyB0YXNrIGlzIGRvbmUuICovCj4+IMKgwqDC oMKgwqAgcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KHJlYWRsLCBQU1BfUkVHKHBzcCwgUFNQX1NU QVRVU19SRUcpLCByZWFkeSwKPj4gQEAgLTkwLDY5ICsxMTIsMTI0IEBAIGludCBhaWVfcHNwX3dh aXRtb2RlX3BvbGwoc3RydWN0IHBzcF9kZXZpY2UgKnBzcCkKPj4gwqAgwqAgdm9pZCBhaWVfcHNw X3N0b3Aoc3RydWN0IHBzcF9kZXZpY2UgKnBzcCkKPj4gwqAgewo+PiAtwqDCoMKgIHUzMiByZWdf dmFsc1tQU1BfTlVNX0lOX1JFR1NdID0geyBQU1BfUkVMRUFTRV9UTVIsIH07Cj4+ICvCoMKgwqAg dTMyIHJlZ192YWxzW1BTUF9OVU1fSU5fUkVHU107Cj4+IMKgwqDCoMKgwqAgaW50IHJldDsKPj4g wqAgK8KgwqDCoCBQU1BfU0VUX0NNRChwc3AsIHJlZ192YWxzLCBQU1BfUkVMRUFTRV9UTVIsIDAs IDAsIDApOwo+PiArCj4+IMKgwqDCoMKgwqAgcmV0ID0gcHNwX2V4ZWMocHNwLCByZWdfdmFscyk7 Cj4+IMKgwqDCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9lcnIocHNw LT5kZGV2LCAicmVsZWFzZSB0bXIgZmFpbGVkLCByZXQgJWQiLCByZXQpOwo+PiDCoCB9Cj4+IMKg IC1pbnQgYWllX3BzcF9zdGFydChzdHJ1Y3QgcHNwX2RldmljZSAqcHNwKQo+PiArc3RhdGljIGlu dCBwc3BfdmFsaWRhdGVfZncoc3RydWN0IHBzcF9kZXZpY2UgKnBzcCwgdTggY21kLCB1NjQgcGFk ZHIsIHUzMiBidWZfc3opCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCB1MzIgcmVnX3ZhbHNbUFNQX05V TV9JTl9SRUdTXTsKPj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+PiDCoCAtwqDCoMKgIHJlZ192YWxz WzBdID0gUFNQX1ZBTElEQVRFOwo+PiAtwqDCoMKgIHJlZ192YWxzWzFdID0gbG93ZXJfMzJfYml0 cyhwc3AtPmZ3X3BhZGRyKTsKPj4gLcKgwqDCoCByZWdfdmFsc1syXSA9IHVwcGVyXzMyX2JpdHMo cHNwLT5md19wYWRkcik7Cj4+IC3CoMKgwqAgcmVnX3ZhbHNbM10gPSBwc3AtPmZ3X2J1Zl9zejsK Pj4gK8KgwqDCoCBQU1BfU0VUX0NNRChwc3AsIHJlZ192YWxzLCBjbWQsIGxvd2VyXzMyX2JpdHMo cGFkZHIpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1cHBlcl8zMl9iaXRzKHBhZGRyKSwg YnVmX3N6KTsKPj4gwqAgwqDCoMKgwqDCoCByZXQgPSBwc3BfZXhlYyhwc3AsIHJlZ192YWxzKTsK Pj4gLcKgwqDCoCBpZiAocmV0KSB7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGRybV9lcnIocHNwLT5kZGV2LCAiZmFpbGVkIHRvIHZhbGlkYXRlIGZ3LCByZXQgJWQi LCByZXQpOwo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gLcKgwqDCoCB9Cj4+IMKg IC3CoMKgwqAgbWVtc2V0KHJlZ192YWxzLCAwLCBzaXplb2YocmVnX3ZhbHMpKTsKPj4gLcKgwqDC oCByZWdfdmFsc1swXSA9IFBTUF9TVEFSVDsKPj4gLcKgwqDCoCByZWdfdmFsc1sxXSA9IFBTUF9T VEFSVF9DT1BZX0ZXOwo+PiArwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgcHNwX3N0YXJ0KHN0cnVjdCBwc3BfZGV2aWNlICpwc3ApCj4+ICt7Cj4+ICvCoMKgwqAg dTMyIHJlZ192YWxzW1BTUF9OVU1fSU5fUkVHU107Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+ PiArwqDCoMKgIFBTUF9TRVRfQ01EKHBzcCwgcmVnX3ZhbHMsIFBTUF9TVEFSVCwgUFNQX1NUQVJU X0NPUFlfRlcsIDAsIDApOwo+PiArCj4+IMKgwqDCoMKgwqAgcmV0ID0gcHNwX2V4ZWMocHNwLCBy ZWdfdmFscyk7Cj4+IC3CoMKgwqAgaWYgKHJldCkgewo+PiArwqDCoMKgIGlmIChyZXQpCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKHBzcC0+ZGRldiwgImZhaWxlZCB0byBzdGFydCBmdywg cmV0ICVkIiwgcmV0KTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4g K2ludCBhaWVfcHNwX3N0YXJ0KHN0cnVjdCBwc3BfZGV2aWNlICpwc3ApCj4+ICt7Cj4+ICvCoMKg wqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIHJldCA9IHBzcF92YWxpZGF0ZV9mdyhwc3AsIFBT UF9WQUxJREFURSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNwLT5m d19wYWRkciwgcHNwLT5md19idWZfc3opOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiAtwqDCoMKgIH0KPj4gwqAgLcKgwqDCoCByZXR1cm4g MDsKPj4gK8KgwqDCoCBpZiAoIXBzcC0+Y2VydGZ3X2J1Zl9zeikKPj4gK8KgwqDCoMKgwqDCoMKg IGdvdG8gcHNwX3N0YXJ0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gcHNwX3ZhbGlkYXRlX2Z3KHBz cCwgUFNQX1ZBTElEQVRFX0NFUlQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBzcC0+Y2VydGZ3X3BhZGRyLCBwc3AtPmNlcnRmd19idWZfc3opOwo+PiArwqDCoMKgIGlm IChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArcHNwX3N0YXJ0Ogo+PiAr wqDCoMKgIHJldHVybiBwc3Bfc3RhcnQocHNwKTsKPj4gK30KPj4gKwo+PiArLyoKPj4gKyAqIFBT UCByZXF1aXJlcyBob3N0IHBoeXNpY2FsIGFkZHJlc3MgdG8gbG9hZCBmaXJtd2FyZS4KPj4gKyAq IEFsbG9jYXRlIGEgYnVmZmVyLCBvYnRhaW4gaXRzIHBoeXNpY2FsIGFkZHJlc3MsIGFsaWduLCBh bmQgY29weSBkYXRhIGluLgo+PiArICovCj4+ICtzdGF0aWMgdm9pZCAqcHNwX2FsbG9jX2Z3X2J1 ZihzdHJ1Y3QgcHNwX2RldmljZSAqcHNwLCBjb25zdCB2b2lkICpmd19kYXRhLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgZndfc2l6ZSwgdTMyIGFsaWduLCB1MzIg KmJ1Zl9zeiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0ICpwYWRk cikKPj4gK3sKPj4gK8KgwqDCoCB1MzIgYWxsb2Nfc3o7Cj4+ICvCoMKgwqAgdm9pZCAqYnVmZmVy Owo+PiArwqDCoMKgIHU2NCBvZmZzZXQ7Cj4+ICsKPj4gK8KgwqDCoCAqYnVmX3N6ID0gQUxJR04o Zndfc2l6ZSwgYWxpZ24pOwo+PiArwqDCoMKgIGFsbG9jX3N6ID0gKmJ1Zl9zeiArIGFsaWduOwo+ PiArCj4+ICvCoMKgwqAgYnVmZmVyID0gZHJtbV9rbWFsbG9jKHBzcC0+ZGRldiwgYWxsb2Nfc3os IEdGUF9LRVJORUwpOwo+PiArwqDCoMKgIGlmICghYnVmZmVyKQo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIE5VTEw7Cj4+ICsKPj4gK8KgwqDCoCAqcGFkZHIgPSB2aXJ0X3RvX3BoeXMoYnVmZmVy KTsKPj4gK8KgwqDCoCBvZmZzZXQgPSBBTElHTigqcGFkZHIsIGFsaWduKSAtICpwYWRkcjsKPj4g K8KgwqDCoCAqcGFkZHIgKz0gb2Zmc2V0Owo+PiArwqDCoMKgIG1lbWNweShidWZmZXIgKyBvZmZz ZXQsIGZ3X2RhdGEsIGZ3X3NpemUpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIGJ1ZmZlcjsKPj4g wqAgfQo+PiDCoCDCoCBzdHJ1Y3QgcHNwX2RldmljZSAqYWllbV9wc3BfY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2LCBzdHJ1Y3QgcHNwX2NvbmZpZyAqY29uZikKPj4gwqAgewo+PiDCoMKg wqDCoMKgIHN0cnVjdCBwc3BfZGV2aWNlICpwc3A7Cj4+IC3CoMKgwqAgdTY0IG9mZnNldDsKPj4g wqAgwqDCoMKgwqDCoCBwc3AgPSBkcm1tX2t6YWxsb2MoZGRldiwgc2l6ZW9mKCpwc3ApLCBHRlBf S0VSTkVMKTsKPj4gwqDCoMKgwqDCoCBpZiAoIXBzcCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBOVUxMOwo+PiDCoCDCoMKgwqDCoMKgIHBzcC0+ZGRldiA9IGRkZXY7Cj4+IC3CoMKgwqAg bWVtY3B5KHBzcC0+cHNwX3JlZ3MsIGNvbmYtPnBzcF9yZWdzLCBzaXplb2YocHNwLT5wc3BfcmVn cykpOwo+PiArwqDCoMKgIHBzcC0+ZndfYnVmZmVyID0gcHNwX2FsbG9jX2Z3X2J1Zihwc3AsIGNv bmYtPmZ3X2J1ZiwgY29uZi0+Zndfc2l6ZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBQU1BfRldfQUxJR04sICZwc3AtPmZ3X2J1Zl9zeiwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcHNwLT5md19wYWRkcik7Cj4+ ICvCoMKgwqAgaWYgKCFwc3AtPmZ3X2J1ZmZlcikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBO VUxMOwo+PiArCj4+ICvCoMKgwqAgaWYgKCFjb25mLT5jZXJ0Zndfc2l6ZSkgewo+PiArwqDCoMKg wqDCoMKgwqAgZHJtX2RiZyhkZGV2LCAibm8gY2VydCBmdyIpOwo+PiArwqDCoMKgwqDCoMKgwqAg Z290byBkb25lOwo+PiArwqDCoMKgIH0KPj4gwqAgLcKgwqDCoCBwc3AtPmZ3X2J1Zl9zeiA9IEFM SUdOKGNvbmYtPmZ3X3NpemUsIFBTUF9GV19BTElHTik7Cj4+IC3CoMKgwqAgcHNwLT5md19idWZm ZXIgPSBkcm1tX2ttYWxsb2MoZGRldiwgcHNwLT5md19idWZfc3ogKyBQU1BfRldfQUxJR04sIEdG UF9LRVJORUwpOwo+PiAtwqDCoMKgIGlmICghcHNwLT5md19idWZmZXIpIHsKPj4gLcKgwqDCoMKg wqDCoMKgIGRybV9lcnIoZGRldiwgIm5vIG1lbW9yeSBmb3IgZncgYnVmZmVyIik7Cj4+ICvCoMKg wqAgLyogQ0VSVCBmaXJtd2FyZSAqLwo+PiArwqDCoMKgIHBzcC0+Y2VydGZ3X2J1ZmZlciA9IHBz cF9hbGxvY19md19idWYocHNwLCBjb25mLT5jZXJ0ZndfYnVmLAo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZi0+Y2VydGZ3X3NpemUsIFBT UF9DRldfQUxJR04sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAmcHNwLT5jZXJ0ZndfYnVmX3N6LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBzcC0+Y2VydGZ3X3BhZGRyKTsKPj4gK8Kg wqDCoCBpZiAoIXBzcC0+Y2VydGZ3X2J1ZmZlcikgewo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Vy cihkZGV2LCAibm8gbWVtb3J5IGZvciBjZXJ0IGZ3IGJ1ZmZlciIpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIE5VTEw7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKgIC8qCj4+IC3C oMKgwqDCoCAqIEFNRCBQbGF0Zm9ybSBTZWN1cml0eSBQcm9jZXNzb3IoUFNQKSByZXF1aXJlcyBo b3N0IHBoeXNpY2FsCj4+IC3CoMKgwqDCoCAqIGFkZHJlc3MgdG8gbG9hZCBOUFUgZmlybXdhcmUu Cj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIHBzcC0+ZndfcGFkZHIgPSB2aXJ0X3RvX3BoeXMo cHNwLT5md19idWZmZXIpOwo+PiAtwqDCoMKgIG9mZnNldCA9IEFMSUdOKHBzcC0+ZndfcGFkZHIs IFBTUF9GV19BTElHTikgLSBwc3AtPmZ3X3BhZGRyOwo+PiAtwqDCoMKgIHBzcC0+ZndfcGFkZHIg Kz0gb2Zmc2V0Owo+PiAtwqDCoMKgIG1lbWNweShwc3AtPmZ3X2J1ZmZlciArIG9mZnNldCwgY29u Zi0+ZndfYnVmLCBjb25mLT5md19zaXplKTsKPj4gK2RvbmU6Cj4+ICvCoMKgwqAgbWVtY3B5KCZw c3AtPmNvbmYsIGNvbmYsIHNpemVvZihwc3AtPmNvbmYpKTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1 cm4gcHNwOwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvbnB1 M19yZWdzLmMgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvbnB1M19yZWdzLmMKPj4gaW5kZXggZjZl MjBmNDg1OGRiLi5mYjJiZDYwYjhmMDAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvYWNjZWwvYW1k eGRuYS9ucHUzX3JlZ3MuYwo+PiArKysgYi9kcml2ZXJzL2FjY2VsL2FtZHhkbmEvbnB1M19yZWdz LmMKPj4gQEAgLTE2LDYgKzE2LDE1IEBACj4+IMKgIMKgIC8qIFBDSWUgQkFSIEluZGV4IGZvciBO UFUzICovCj4+IMKgICNkZWZpbmUgTlBVM19SRUdfQkFSX0lOREVYwqDCoMKgIDAKPj4gKyNkZWZp bmUgTlBVM19QU1BfQkFSX0lOREVYwqDCoMKgwqDCoCA0Cj4+ICsKPj4gKyNkZWZpbmUgTU1OUFVf QVBFUlRVUkUzX0JBU0XCoMKgwqAgMHgzODEwMDAwCj4+ICsjZGVmaW5lIE5QVTNfUFNQX0JBUl9C QVNFwqDCoMKgwqDCoMKgIE1NTlBVX0FQRVJUVVJFM19CQVNFCj4+ICsKPj4gKyNkZWZpbmUgTVBB U1BfQzJQTVNHXzEyM19BTFRfMcKgIDB4MzgxMEFFQwo+PiArI2RlZmluZSBNUEFTUF9DMlBNU0df MTU2X0FMVF8xwqAgMHgzODEwQjcwCj4+ICsjZGVmaW5lIE1QQVNQX0MyUE1TR18xNTdfQUxUXzHC oCAweDM4MTBCNzQKPj4gKyNkZWZpbmUgTVBBU1BfQzJQTVNHXzczX0FMVF8xwqDCoCAweDM4MTBB MjQKPj4gwqAgwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWR4ZG5hX2Z3X2ZlYXR1cmVfdGJsIG5w dTNfZndfZmVhdHVyZV90YWJsZVtdID0gewo+PiDCoMKgwqDCoMKgIHsgLm1ham9yID0gNSwgLm1p bl9taW5vciA9IDEwIH0sCj4+IEBAIC0yMywxNCArMzIsMjggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhbWR4ZG5hX2Z3X2ZlYXR1cmVfdGJsIG5wdTNfZndfZmVhdHVyZV90YWJsZVtdID0gewo+PiDC oCB9Owo+PiDCoCDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZHhkbmFfZGV2X3ByaXYgbnB1M19k ZXZfcHJpdiA9IHsKPj4gK8KgwqDCoCAubnB1ZndfcGF0aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA9ICJucHUuZGV2LnNiaW4iLAo+PiArwqDCoMKgIC5jZXJ0ZndfcGF0aMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPSAiY2VydC5kZXYuc2JpbiIsCj4+IMKgwqDCoMKgwqAgLm1ib3hfYmFywqDCoMKg wqDCoMKgwqAgPSBOUFUzX01CT1hfQkFSLAo+PiDCoMKgwqDCoMKgIC5tYm94X3JidWZfYmFywqDC oMKgwqDCoMKgwqAgPSBOUFUzX01CT1hfQlVGRkVSX0JBUiwKPj4gwqDCoMKgwqDCoCAubWJveF9p bmZvX29mZsKgwqDCoMKgwqDCoMKgID0gTlBVM19NQk9YX0lORk9fT0ZGLAo+PiArwqDCoMKgIC5w c3BfcmVnc19vZmbCoMKgID0gewo+PiArwqDCoMKgwqDCoMKgwqAgREVGSU5FX0JBUl9PRkZTRVQo UFNQX0NNRF9SRUcswqDCoMKgIE5QVTNfUFNQLCBNUEFTUF9DMlBNU0dfMTIzX0FMVF8xKSwKPj4g K8KgwqDCoMKgwqDCoMKgIERFRklORV9CQVJfT0ZGU0VUKFBTUF9BUkcwX1JFRyzCoMKgIE5QVTNf UFNQLCBNUEFTUF9DMlBNU0dfMTU2X0FMVF8xKSwKPj4gK8KgwqDCoMKgwqDCoMKgIERFRklORV9C QVJfT0ZGU0VUKFBTUF9BUkcxX1JFRyzCoMKgIE5QVTNfUFNQLCBNUEFTUF9DMlBNU0dfMTU3X0FM VF8xKSwKPj4gK8KgwqDCoMKgwqDCoMKgIERFRklORV9CQVJfT0ZGU0VUKFBTUF9BUkcyX1JFRyzC oMKgIE5QVTNfUFNQLCBNUEFTUF9DMlBNU0dfMTIzX0FMVF8xKSwKPj4gK8KgwqDCoMKgwqDCoMKg IERFRklORV9CQVJfT0ZGU0VUKFBTUF9JTlRSX1JFRyzCoMKgIE5QVTNfUFNQLCBNUEFTUF9DMlBN U0dfNzNfQUxUXzEpLAo+PiArwqDCoMKgwqDCoMKgwqAgREVGSU5FX0JBUl9PRkZTRVQoUFNQX1NU QVRVU19SRUcsIE5QVTNfUFNQLCBNUEFTUF9DMlBNU0dfMTIzX0FMVF8xKSwKPj4gK8KgwqDCoMKg wqDCoMKgIERFRklORV9CQVJfT0ZGU0VUKFBTUF9SRVNQX1JFRyzCoMKgIE5QVTNfUFNQLCBNUEFT UF9DMlBNU0dfMTU2X0FMVF8xKSwKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIG5wdTMgZG9lc24ndCB1 c2UgOHRoIHB3YWl0bW9kZSByZWdpc3RlciAqLwo+PiArwqDCoMKgIH0sCj4+ICsKPgo+IFNwdXJp b3VzIHdoaXRlc3BhY2UgaGVyZSB0aGF0IHlvdSBwaW5nIHBvbmcgaW4gdGhlIGxhdGVyIHBhdGNo ZXMuCgoKVGhhbmsgeW91IHNvIG11Y2ghIEkgd2lsbCBmaXggdGhpcy4KCi9EYXZpZAoKPgo+PiDC oCB9Owo+PiDCoCDCoCBjb25zdCBzdHJ1Y3QgYW1keGRuYV9kZXZfaW5mbyBkZXZfbnB1M19wZl9p bmZvID0gewo+PiDCoMKgwqDCoMKgIC5tYm94X2JhcsKgwqDCoMKgwqDCoMKgID0gTlBVM19NQk9Y X0JBUiwKPj4gwqDCoMKgwqDCoCAuc3JhbV9iYXLCoMKgwqDCoMKgwqDCoCA9IE5QVTNfTUJPWF9C VUZGRVJfQkFSLAo+PiArwqDCoMKgIC5wc3BfYmFywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgID0gTlBVM19QU1BfQkFSX0lOREVYLAo+PiDCoMKgwqDCoMKgIC52Ym52wqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9ICJSeXplbkFJLW5wdTMtcGYiLAo+PiDCoMKgwqDCoMKgIC5kZXZpY2VfdHlw ZcKgwqDCoMKgwqDCoMKgID0gQU1EWEROQV9ERVZfVFlQRV9QRiwKPj4gwqDCoMKgwqDCoCAuZGV2 X3ByaXbCoMKgwqDCoMKgwqDCoCA9ICZucHUzX2Rldl9wcml2LAo+Cg==