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 X-Spam-Level: X-Spam-Status: No, score=-11.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC203C433DF for ; Mon, 12 Oct 2020 12:08:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3DAF72074A for ; Mon, 12 Oct 2020 12:08:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="hQZy128x"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="myKPsgF4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388430AbgJLMIi (ORCPT ); Mon, 12 Oct 2020 08:08:38 -0400 Received: from esa5.microchip.iphmx.com ([216.71.150.166]:23546 "EHLO esa5.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388403AbgJLMIh (ORCPT ); Mon, 12 Oct 2020 08:08:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1602504517; x=1634040517; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=+tkJ2f8VSV14nCiJTU2F7UviraLz+LPABTajYkV+t1U=; b=hQZy128xuHZJXUE5BpvhsNK3TqQfkYt3j4yHMhDkXakzX6/LbKJSfKjv PSsNlduEzXsWlGaDH7PCDhPTS+5h3y1EIjk0zdnyUmUl0kSyBZFHo1h3e RKtInmaoWJu1f/A7BuuoHZD9UFqtKkPUC8JI9yQ7WJJ+YCXRKoiURBkEv oVKq2KMb2abhQyTB6f0NKRSyU3kEUbPGG6Y8By4hjVrUGlx8qFykgBh5r rOCdsyfGdLJitVMllJ0qGSk1O6i2D954zCcNx0ZaI3w2vhn4+n65PaWJh SL6q/m3qgOv2uqDrPUku3033MgBqqGzqIuaWEHhg28HdLgaylPWdQPk+Y g==; IronPort-SDR: 1xx6rsUMRveIxNFIjmJGaryAwkGd0f6ueebWWVVRM0zasVIzdRDFSBGj550rcFuTc4/ncF9n60 zz0+lcNJTBvyv8qKqjup582AnjXW3wr+FYmzqdalkZaMtcLudVbKFIXWRtZsUw1+11wYTYVRL0 NRfBWf3ZYz35Fl/90q0GLOYO2HADC6/GtjPi3jkWiAf0ZzgGLlS68T0Ze9VbVqGaaTvaVo8pGB izKV6ueKr51wt9m9YULeP7VEfSfPqQrf9c3nQGg7KmuVg8A2kIe3kENR49gt3XKixWbSMzhOyd FA4= X-IronPort-AV: E=Sophos;i="5.77,366,1596524400"; d="scan'208";a="94254405" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Oct 2020 05:08:37 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 12 Oct 2020 05:08:36 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 12 Oct 2020 05:08:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EpdwIdBpDnxLohoExV4QoE0Beyel6JTmYh38Q63tnGR7buqVot09OLE+IvJMGadbt/qbeOZhTfGkyztGO9QWGWWbZML56b/njDaqy9dAQtf9pkAzls3xtPdEqDhjvNVOb4RPSNIk9eBJhqf06qngzTf6XRCHkp9a+0momYBBihYQTqP2MLwZjOccNJorZ0G9FjDzk1bxdH5ktjIyqykMAbO444zPhAF757hiR8/z0F5VEBRt7RpKLk9H6wDKV+8CYskVdJWeLmfZ15w4Xxbvuu6nthvP8XNsBsTnS/ebGevmXohYVNlkflQZrLGMaW+yWsObLaf1eFrd3qzewAzO1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+tkJ2f8VSV14nCiJTU2F7UviraLz+LPABTajYkV+t1U=; b=CdRfLGA70UdH9obJNFejeR1VWJu0btVXWb8FeeFgHNTmmmP7IgM3xMg22550lgZweZapB790YGCz40CzqMn7U6gskX32TbkFF0P8ipSmclYmYC01/ecZwk3EIPWlwvsbkcp8JoBNVPUogUBpD21EKArqlDtNBVWWwrgOFc+ALJWvB3XYd2qlM027ZkxsYjrcEkEZHLdJKE/64AVl0+7D2NqYf1EKjrOMnkf4RbrAbxjL9p250tyXooDQxXaaLaA0hrYjrxxj7N/s/eulX0OVgBWKR/F3zhuSenjcyQZfMT903SZrruiqxZFxlmcoPGZB0Fe56OdMoXiN6qRdc1wvNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+tkJ2f8VSV14nCiJTU2F7UviraLz+LPABTajYkV+t1U=; b=myKPsgF40VhfhNcxVL1A7C2vGcmUc2sb2mlOAL6NlSLMrpPftwindUtqz3Gboneyk8Z6t37joflq0EOMasPirh2+9BJJKHrDMZh07s3PYz5S5VInCf7VAqZqdmZ4k7audlLBBboDFkQ+mfRUHmJETnOkigv9SFaOHwSN3+uphbc= Received: from BYAPR11MB2999.namprd11.prod.outlook.com (2603:10b6:a03:90::17) by SJ0PR11MB5040.namprd11.prod.outlook.com (2603:10b6:a03:2d6::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.29; Mon, 12 Oct 2020 12:08:34 +0000 Received: from BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::4854:dda7:8d0f:bb51]) by BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::4854:dda7:8d0f:bb51%7]) with mapi id 15.20.3455.027; Mon, 12 Oct 2020 12:08:34 +0000 From: To: CC: , , , , Subject: Re: [PATCH v3 2/3] media: atmel: introduce microchip csi2dc driver Thread-Topic: [PATCH v3 2/3] media: atmel: introduce microchip csi2dc driver Thread-Index: AQHWe3V9RwslavJrYkuDX2boZhbxY6lR8KWAgAsHsoCAMqoCgIAENY+AgABR/QA= Date: Mon, 12 Oct 2020 12:08:34 +0000 Message-ID: References: <20200826065142.205000-1-eugen.hristev@microchip.com> <20200826065142.205000-2-eugen.hristev@microchip.com> <20200831085031.GB844@valkosipuli.retiisi.org.uk> <20201009145823.GI6413@valkosipuli.retiisi.org.uk> In-Reply-To: Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: iki.fi; dkim=none (message not signed) header.d=none;iki.fi; dmarc=none action=none header.from=microchip.com; x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 29de8a6b-9233-4baf-efba-08d86ea78b27 x-ms-traffictypediagnostic: SJ0PR11MB5040: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UUYJnV8BqL8sdOIiT2weA1FNt1CAgHkNnlM3pNn6MHw13FaFqTs9cTJ/0J3bQOnkGxpBG3P43u68DiYKlVuQAKajZ6fWEixDhqmWFUP9SqabSnvYWYeyZESclAxGsb33wUlEAaAy05QSjIPVHwZZkdKg8bCGUWW6ibdqeOpdvlCwSkXOnXdWqN3nwCp9ds2aVVro2fRydfaWqYY5mvkx9rltIFb3gL2nYNAadMU/ir3FlQNyirl+WTyVaS5/ubf3L4ZekCetbVXAldJRNr45XyGbVIM+WEPxLjIFuNbPEAIrr7qV9Py7/5jycTi+hK1f8RStHRk6M4EvqhBHNojBzYFHv33tad/yGEdmyUUkPmKTYOfw7kroQpWMl6uDk3uQY5gqbHtYVXNhNLkT8UWJJV+0ka2Ku9ZzC2JPR8M1gBg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB2999.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(366004)(39860400002)(136003)(346002)(376002)(86362001)(5660300002)(30864003)(31686004)(478600001)(54906003)(2906002)(4326008)(6486002)(316002)(36756003)(26005)(53546011)(31696002)(186003)(6916009)(66446008)(64756008)(66556008)(66946007)(66476007)(8936002)(71200400001)(6506007)(8676002)(6512007)(91956017)(76116006)(83380400001)(2616005)(461764006)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: CS5akCOsqz09UWeSXOApmaVrC6Mu5rYfpZlOuWGZynNgHO8DpkFqVqJUKZV3W0fIai4aEVmqrB8Gc/IdEhpCqx6AO6cuE/x2M98n0Wo6/Z6U98JGGNEA8yP6XihVl0E5qeaShASu6FRrHRTX+2zgYqvO08ZqoOinAbbK9RUXcVmCzhNSb49BlV8n8zBiN4Y4dVN9DD5nPAh01l16hY07R17d3VlLfjwPYrl8Zli7CeoQTfhy21Fs0waGwiBGzCRWiIZZgtCOpXP3Mx8DiV2TKvQjG3PrWVEUtyjxnFAa/LNsppro2HTyCTIBJ89Xv3cOtJsoSKi17lCv02GGcfaM0NBqeGSivdnkBgBXdscPyVLRrfAVGqru+TwJrVLzBLBWeWhwXYWuvJJyqa55lAhEpqV4LD7qsya4GKegZaNG2JIiGgsj+aRGNEpzvziWhs/tF0O2AKdPDidpFq5jP3xzisrc4TY34sSSNG/DDpLdfa4su1U9r1IdX20nKYR/G7Lh5KieDTw7mXfWRPoHcf4lRZ/gl7xspPQ0Vauw1zeEuwJ8BSXcwP2ElpZJEeEA/IWXulEY3B2CO12QGfvZXKTTUruH0tSGCOVz2vuW4bsBLcQnUdEB7/Ki9XjUWknOldbfY+U+jibTUP08w5YoXKdQYA== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB2999.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29de8a6b-9233-4baf-efba-08d86ea78b27 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2020 12:08:34.4830 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CSaaSpAlPizaE9sa1mOA+z4o8fow9H23WUZuy5TbZz0Uf6GS6d8pu37RBv5rzlysS2ljI45dKbT1zj4cchVL2HbwHDXs/wwI3OMmuElxmRg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5040 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTIuMTAuMjAyMCAxMDoxNSwgRXVnZW4gSHJpc3RldiAtIE0xODI4MiB3cm90ZToNCj4gT24g MDkuMTAuMjAyMCAxNzo1OCwgU2FrYXJpIEFpbHVzIHdyb3RlOg0KPiANCj4+IEhpIEV1Z2VuLA0K Pj4NCj4+IE15IGFwb2xvZ2llcyBmb3IgdGhlIGxhdGUgcmVwbHkuDQo+Pg0KPiANCj4gSGksDQo+ IA0KPiBUaGFuayB5b3UgZm9yIHJlcGx5aW5nLA0KPiANCj4+IE9uIE1vbiwgU2VwIDA3LCAyMDIw IGF0IDA5OjE2OjU3QU0gKzAwMDAsIEV1Z2VuLkhyaXN0ZXZAbWljcm9jaGlwLmNvbSB3cm90ZToN Cj4+PiBPbiAzMS4wOC4yMDIwIDExOjUwLCBTYWthcmkgQWlsdXMgd3JvdGU6DQo+Pj4NCj4+Pj4g SGkgRXVnZW4sDQo+Pj4+DQo+Pj4+IFRoYW5rcyBmb3IgdGhlIHVwZGF0ZS4NCj4+Pg0KPj4+IEhp IFNha2FyaSwNCj4+Pg0KPj4+IFRoYW5rcyBmb3IgcmV2aWV3aW5nLCBidXQsIGNvdWxkIHlvdSBw bGVhc2UgaGVscCBtZSB1bmRlcnN0YW5kIHlvdXINCj4+PiByZXZpZXcgYmVsb3cgPw0KPj4+DQo+ Pj4+DQo+Pj4+IE9uIFdlZCwgQXVnIDI2LCAyMDIwIGF0IDA5OjUxOjQxQU0gKzAzMDAsIEV1Z2Vu IEhyaXN0ZXYgd3JvdGU6DQo+Pj4+PiBNaWNyb2NoaXAgQ1NJMkRDIChDU0kyIERlbXVsdGlwbGV4 ZXIgQ29udHJvbGxlcikgaXMgYSBtaXNjIGJyaWRnZSBkZXZpY2UNCj4+Pj4+IHRoYXQgY29udmVy dHMgYSBieXRlIHN0cmVhbSBpbiBJREkgU3lub3BzeXMgZm9ybWF0IChjb21pbmcgZnJvbSBhIENT STJIT1NUKQ0KPj4+Pj4gdG8gYSBwaXhlbCBzdHJlYW0gdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkg YSBzZW5zb3IgY29udHJvbGxlci4NCj4+Pj4+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBFdWdlbiBI cmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5jb20+DQo+Pj4+PiAtLS0NCj4+Pj4+IENo YW5nZXMgaW4gdjI6DQo+Pj4+PiAtIG1vdmVkIGRyaXZlciB0byBwbGF0Zm9ybS9hdG1lbA0KPj4+ Pj4gLSBmaXhlZCBtaW5vciB0aGluZ3MgYXMgcGVyIFNha2FyaSdzIHJldmlldw0KPj4+Pj4gLSBz dGlsbCBzb21lIHRoaW5ncyBmcm9tIHYyIHJldmlldyBhcmUgbm90IHlldCBhZGRyZXNzZWQsIHRv IGJlIGZvbGxvd2VkIHVwDQo+Pj4+Pg0KPj4+Pj4gICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvS2NvbmZpZyAgICAgICAgICB8ICAxMyArDQo+Pj4+PiAgICAgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hdG1lbC9NYWtlZmlsZSAgICAgICAgIHwgICAxICsNCj4+Pj4+ICAgICAuLi4vbWVk aWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jICAgfCA3MDAgKysrKysrKysrKysr KysrKysrDQo+Pj4+PiAgICAgMyBmaWxlcyBjaGFuZ2VkLCA3MTQgaW5zZXJ0aW9ucygrKQ0KPj4+ Pj4gICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21p Y3JvY2hpcC1jc2kyZGMuYw0KPj4+Pj4NCj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2F0bWVsL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tj b25maWcNCj4+Pj4+IGluZGV4IDE4NTBmZTdmOTM2MC4uODBiYmRkY2MyNTA0IDEwMDY0NA0KPj4+ Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29uZmlnDQo+Pj4+PiArKysg Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWcNCj4+Pj4+IEBAIC0yMSwzICsy MSwxNiBAQCBjb25maWcgVklERU9fQVRNRUxfSVNJDQo+Pj4+PiAgICAgICAgICBoZWxwDQo+Pj4+ PiAgICAgICAgICAgIFRoaXMgbW9kdWxlIG1ha2VzIHRoZSBBVE1FTCBJbWFnZSBTZW5zb3IgSW50 ZXJmYWNlIGF2YWlsYWJsZQ0KPj4+Pj4gICAgICAgICAgICBhcyBhIHY0bDIgZGV2aWNlLg0KPj4+ Pj4gKw0KPj4+Pj4gK2NvbmZpZyBWSURFT19NSUNST0NISVBfQ1NJMkRDDQo+Pj4+PiArICAgICB0 cmlzdGF0ZSAiTWljcm9jaGlwIENTSTIgRGVtdXggQ29udHJvbGxlciINCj4+Pj4+ICsgICAgIGRl cGVuZHMgb24gVklERU9fVjRMMiAmJiBDT01NT05fQ0xLICYmIE9GDQo+Pj4+PiArICAgICBkZXBl bmRzIG9uIEFSQ0hfQVQ5MSB8fCBDT01QSUxFX1RFU1QNCj4+Pj4+ICsgICAgIHNlbGVjdCBNRURJ QV9DT05UUk9MTEVSDQo+Pj4+PiArICAgICBzZWxlY3QgVklERU9fVjRMMl9TVUJERVZfQVBJDQo+ Pj4+PiArICAgICBzZWxlY3QgVjRMMl9GV05PREUNCj4+Pj4+ICsgICAgIGhlbHANCj4+Pj4+ICsg ICAgICAgQ1NJMiBEZW11eCBDb250cm9sbGVyIGRyaXZlci4gQ1NJMkRDIGlzIGEgaGVscGVyIGNo aXANCj4+Pj4+ICsgICAgICAgdGhhdCBjb252ZXJ0cyBJREkgaW50ZXJmYWNlIGJ5dGUgc3RyZWFt IHRvIGEgcGFyYWxsZWwgcGl4ZWwgc3RyZWFtLg0KPj4+Pj4gKyAgICAgICBJdCBzdXBwb3J0cyB2 YXJpb3VzIFJBVyBmb3JtYXRzIGFzIGlucHV0Lg0KPj4+Pj4gKyAgICAgICBQZXJmb3JtcyBjbG9j ayBkb21haW4gY3Jvc3NpbmcgYmV0d2VlbiBoYXJkd2FyZSBibG9ja3MuDQo+Pj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmlsZSBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+Pj4+IGluZGV4IDJkYmEzODk5NGE3MC4uOGFm N2M1YjUzNGMzIDEwMDY0NA0KPj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1l bC9NYWtlZmlsZQ0KPj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtl ZmlsZQ0KPj4+Pj4gQEAgLTMsMyArMyw0IEBAIGF0bWVsLWlzYy1vYmpzID0gYXRtZWwtc2FtYTVk Mi1pc2MubyBhdG1lbC1pc2MtYmFzZS5vDQo+Pj4+Pg0KPj4+Pj4gICAgIG9iai0kKENPTkZJR19W SURFT19BVE1FTF9JU0kpICs9IGF0bWVsLWlzaS5vDQo+Pj4+PiAgICAgb2JqLSQoQ09ORklHX1ZJ REVPX0FUTUVMX0lTQykgKz0gYXRtZWwtaXNjLm8NCj4+Pj4+ICtvYmotJChDT05GSUdfVklERU9f TUlDUk9DSElQX0NTSTJEQykgKz0gbWljcm9jaGlwLWNzaTJkYy5vDQo+Pj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRjLmMgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYw0KPj4+Pj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTdkMDdhODBiYmY3DQo+ Pj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0 bWVsL21pY3JvY2hpcC1jc2kyZGMuYw0KPj4+Pj4gQEAgLTAsMCArMSw3MDAgQEANCj4+Pj4+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4+Pj4gKy8qDQo+Pj4+PiArICog TWljcm9jaGlwIENTSTIgRGVtdXggQ29udHJvbGxlciAoQ1NJMkRDKSBkcml2ZXINCj4+Pj4+ICsg Kg0KPj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIE1pY3JvY2hpcCBUZWNobm9sb2d5 LCBJbmMuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBBdXRob3I6IEV1Z2VuIEhyaXN0ZXYgPGV1Z2Vu LmhyaXN0ZXZAbWljcm9jaGlwLmNvbT4NCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqLw0KPj4+Pj4gKw0K Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGxp bnV4L29mX2dyYXBoLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o Pg0KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+Pj4+PiArI2luY2x1ZGUg PGxpbnV4L3ZpZGVvZGV2Mi5oPg0KPj4+Pj4gKw0KPj4+Pj4gKyNpbmNsdWRlIDxtZWRpYS92NGwy LWRldmljZS5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWZ3bm9kZS5oPg0KPj4+Pj4g KyNpbmNsdWRlIDxtZWRpYS92NGwyLXN1YmRldi5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxtZWRpYS92 aWRlb2J1ZjItZG1hLWNvbnRpZy5oPg0KPj4+Pj4gKw0KPj4+Pj4gKy8qIEdsb2JhbCBjb25maWd1 cmF0aW9uIHJlZ2lzdGVyICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfR0NGRyAgICAgICAgICAg ICAgICAgIDB4MA0KPj4+Pj4gKw0KPj4+Pj4gKy8qIE1JUEkgc2Vuc29yIHBpeGVsIGNsb2NrIGlz IGZyZWUgcnVubmluZyAqLw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfTUlQSUZSTiAgICAg ICAgICBCSVQoMCkNCj4+Pj4+ICsvKiBPdXRwdXQgd2F2ZWZvcm0gaW50ZXItbGluZSBtaW5pbXVt IGRlbGF5ICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfR0NGR19ITEModikgICAgICAgICAgICgo dikgPDwgNCkNCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX0hMQ19NQVNLICAgICAgICAgR0VO TUFTSyg3LCA0KQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIEdsb2JhbCBjb250cm9sIHJlZ2lzdGVyICov DQo+Pj4+PiArI2RlZmluZSBDU0kyRENfR0NUTFIgICAgICAgICAgICAgICAgIDB4MDQNCj4+Pj4+ ICsjZGVmaW5lIENTSTJEQ19HQ1RMUl9TV1JTVCAgICAgICAgICAgQklUKDApDQo+Pj4+PiArDQo+ Pj4+PiArLyogR2xvYmFsIHN0YXR1cyByZWdpc3RlciAqLw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0dTICAgICAgICAgICAgICAgICAgICAweDA4DQo+Pj4+PiArDQo+Pj4+PiArLyogU1NQIGludGVy cnVwdCBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19TU1BJUyAgICAg ICAgICAgICAgICAgMHgyOA0KPj4+Pj4gKy8qIFBpcGUgdXBkYXRlIHJlZ2lzdGVyICovDQo+Pj4+ PiArI2RlZmluZSBDU0kyRENfUFUgICAgICAgICAgICAgICAgICAgIDB4QzANCj4+Pj4+ICsvKiBW aWRlbyBwaXBlIGF0dHJpYnV0ZXMgdXBkYXRlICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfUFVf VlAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIFBpcGUgdXBkYXRl IHN0YXR1cyByZWdpc3RlciAqLw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1BVUyAgICAgICAgICAg ICAgICAgICAweEM0DQo+Pj4+PiArDQo+Pj4+PiArLyogVmlkZW8gcGlwZWxpbmUgZW5hYmxlIHJl Z2lzdGVyICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfVlBFICAgICAgICAgICAgICAgICAgIDB4 RjgNCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUEVfRU5BQkxFICAgICAgICAgICAgQklUKDApDQo+ Pj4+PiArDQo+Pj4+PiArLyogVmlkZW8gcGlwZWxpbmUgY29uZmlndXJhdGlvbiByZWdpc3RlciAq Lw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHICAgICAgICAgICAgICAgICAweEZDDQo+Pj4+ PiArLyogRGF0YSB0eXBlICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRFQodikgICAg ICAgICAgICgodikgPDwgMCkNCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19EVF9NQVNLICAg ICAgICAgR0VOTUFTSyg1LCAwKQ0KPj4+Pj4gKy8qIFZpcnR1YWwgY2hhbm5lbCBpZGVudGlmaWVy ICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfVkModikgICAgICAgICAgICgodikgPDwg NikNCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19WQ19NQVNLICAgICAgICAgR0VOTUFTSyg3 LCA2KQ0KPj4+Pj4gKy8qIERlY29tcHJlc3Npb24gZW5hYmxlICovDQo+Pj4+PiArI2RlZmluZSBD U0kyRENfVlBDRkdfREUgICAgICAgICAgICAgICAgICAgICAgQklUKDgpDQo+Pj4+PiArLyogRGVj b2RlciBtb2RlICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRE0odikgICAgICAgICAg ICgodikgPDwgOSkNCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19ETV9ERUNPREVSOFRPMTIg MA0KPj4+Pj4gKy8qIERlY29kZXIgcHJlZGljdG9yIDIgc2VsZWN0aW9uICovDQo+Pj4+PiArI2Rl ZmluZSBDU0kyRENfVlBDRkdfRFAyICAgICAgICAgICAgIEJJVCgxMikNCj4+Pj4+ICsvKiBSZWNv bW1lbmRlZCBtZW1vcnkgc3RvcmFnZSAqLw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX1JN UyAgICAgICAgICAgICBCSVQoMTMpDQo+Pj4+PiArLyogUG9zdCBhZGp1c3RtZW50ICovDQo+Pj4+ PiArI2RlZmluZSBDU0kyRENfVlBDRkdfUEEgICAgICAgICAgICAgICAgICAgICAgQklUKDE0KQ0K Pj4+Pj4gKw0KPj4+Pj4gKy8qIFZpZGVvIHBpcGVsaW5lIGNvbHVtbiByZWdpc3RlciAqLw0KPj4+ Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ09MICAgICAgICAgICAgICAgICAweDEwMA0KPj4+Pj4gKy8q IENvbHVtbiBudW1iZXIgKi8NCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENPTF9DT0wodikgICAg ICAgICAgKCh2KSA8PCAwKQ0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ09MX0NPTF9NQVNLICAg ICAgICAgICAgICAgIEdFTk1BU0soMTUsIDApDQo+Pj4+PiArDQo+Pj4+PiArLyogVmlkZW8gcGlw ZWxpbmUgcm93IHJlZ2lzdGVyICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfVlBST1cgICAgICAg ICAgICAgICAgIDB4MTA0DQo+Pj4+PiArLyogUm93IG51bWJlciAqLw0KPj4+Pj4gKyNkZWZpbmUg Q1NJMkRDX1ZQUk9XX1JPVyh2KSAgICAgICAgICAoKHYpIDw8IDApDQo+Pj4+PiArI2RlZmluZSBD U0kyRENfVlBST1dfUk9XX01BU0sgICAgICAgICAgICAgICAgR0VOTUFTSygxNSwgMCkNCj4+Pj4+ ICsNCj4+Pj4+ICsvKiBWZXJzaW9uIHJlZ2lzdGVyICovDQo+Pj4+PiArI2RlZmluZSBDU0kyRENf VkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgMHgxRkMNCj4+Pj4+ICsNCj4+Pj4+ICsvKiBy ZWdpc3RlciByZWFkL3dyaXRlIGhlbHBlcnMgKi8NCj4+Pj4+ICsjZGVmaW5lIGNzaTJkY19yZWFk bChzdCwgcmVnKSAgICAgICAgICAgICAgICByZWFkbF9yZWxheGVkKChzdCktPmJhc2UgKyAocmVn KSkNCj4+Pj4+ICsjZGVmaW5lIGNzaTJkY193cml0ZWwoc3QsIHJlZywgdmFsKSAgd3JpdGVsX3Jl bGF4ZWQoKHZhbCksIChzdCktPmJhc2UgKyAocmVnKSkNCj4+Pj4+ICsNCj4+Pj4+ICsvKiBzdXBw b3J0ZWQgUkFXIGRhdGEgdHlwZXMgKi8NCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVc2ICAg ICAgICAgICAgICAgICAgICAgICAweDI4DQo+Pj4+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXNyAg ICAgICAgICAgICAgICAgICAgICAgMHgyOQ0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzgg ICAgICAgICAgICAgICAgICAgICAgIDB4MkENCj4+Pj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVcx MCAgICAgICAgICAgICAgICAgICAgICAweDJCDQo+Pj4+PiArI2RlZmluZSBDU0kyRENfRFRfUkFX MTIgICAgICAgICAgICAgICAgICAgICAgMHgyQw0KPj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JB VzE0ICAgICAgICAgICAgICAgICAgICAgIDB4MkQNCj4+Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3QgY3Np MmRjX2Zvcm1hdCB7DQo+Pj4+PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1idXNfY29kZTsNCj4+Pj4+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZHQ7DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgc3RydWN0IGNzaTJkY19mb3Jt YXQgY3NpMmRjX2Zvcm1hdHNfbGlzdFtdID0gew0KPj4+Pg0KPj4+PiBjb25zdA0KPj4+DQo+Pj4g RWxlbWVudHMgZnJvbSB0aGlzIGFycmF5IGFyZSBiZWluZyBzZWxlY3RlZCBpbiBhIGR5bmFtaWMg bGlzdCwgYW5kDQo+Pj4gcG9pbnRlZCBmcm9tIGEgbm9uLWNvbnN0IGFycmF5IG9mIHNlbGVjdGVk IHdvcmtpbmcgZm9ybWF0cyAoYXQgc3ViZGV2aWNlDQo+Pj4gY29tcGxldGlvbiB0aW1lKS4gSWYg SSBtYWtlIHRoaXMgY29uc3QgLCBJIHdpbGwgZ2V0IGNvbXBpbGVyIHdhcm5pbmdzDQo+Pj4gd2hl biBhc3NpZ25pbmcgdG8gdGhlIG5vbi1jb25zdCBhcnJheS4NCj4+PiBXaGF0IHNvbHV0aW9uIGRv IHlvdSBzdWdnZXN0IGZvciB0aGlzID8NCj4+DQo+PiBZb3UnbGwgbmVlZCB0byBtYWtlIHRoZSBv dGhlciBpbnN0YW5jZXMgY29uc3QsIHRvby4gVGhleSBkbyBub3QgbmVlZCB0byBiZQ0KPj4gbW9k aWZpZWQgSSBwcmVzdW1lPw0KPiANCj4gVGhhdCdzIHRoZSBwcm9ibGVtIEkgYW0gdHJ5aW5nIHRv IGV4cGxhaW4uIEkgaGF2ZSBhIGR5bmFtaWMgKGluaXRpYWxseQ0KPiBlbXB0eSkgYXJyYXkgdGhh dCBpcyBmaWxsZWQgd2l0aCBlbGVtZW50cyBmcm9tIHRoaXMgYXJyYXkgIHdoaWNoIHllcywgaXMN Cj4gY29uc3RhbnQsIGJ1dCBpZiBJIHF1YWxpZnkgaXQgYXMgY29uc3QsIGFsbCBjb25zdCBlbGVt ZW50cyAnY2Fubm90IGJlDQo+IGFzc2lnbmVkIHRvIGEgbm9uLWNvbnN0IGFycmF5JyBhbmQgaWYg SSBtYWtlIHRoZSBkeW5hbWljIGFycmF5IGFzIGNvbnN0LA0KPiB0aGVuIHdlbGwsIEkgY2Fubm90 IG1vZGlmeSBpdC4NCj4gDQo+Pg0KPj4+DQo+Pj4NCj4+Pj4NCj4+Pj4+ICsgICAgIHsNCj4+Pj4+ ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TUkdH QjEwXzFYMTAsDQo+Pj4+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENT STJEQ19EVF9SQVcxMCwNCj4+Pj4+ICsgICAgIH0sDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ ICtlbnVtIG1pcGlfY3NpX3BhZHMgew0KPj4+Pj4gKyAgICAgQ1NJMkRDX1BBRF9TSU5LICAgICAg ICAgICAgICAgICA9IDAsDQo+Pj4+PiArICAgICBDU0kyRENfUEFEX1NPVVJDRSAgICAgICAgICAg ICAgID0gMSwNCj4+Pj4+ICsgICAgIENTSTJEQ19QQURTX05VTSAgICAgICAgICAgICAgICAgPSAy LA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RydWN0IGNzaTJkY19kZXZpY2Ugew0KPj4+ Pj4gKyAgICAgdm9pZCBfX2lvbWVtICAgICAgICAgICAgICAgICAgICAqYmFzZTsNCj4+Pj4+ICsg ICAgIHN0cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgY3NpMmRjX3NkOw0KPj4+Pj4gKyAg ICAgc3RydWN0IGRldmljZSAgICAgICAgICAgICAgICAgICAqZGV2Ow0KPj4+Pj4gKyAgICAgc3Ry dWN0IHY0bDJfZGV2aWNlICAgICAgICAgICAgICB2NGwyX2RldjsNCj4+Pj4NCj4+Pj4gVGhpcyBk ZXZpY2UgaXMgYSBicmlkZ2U7IHRoZSBWNEwyIGRldmljZSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBi eSB0aGUgbWFzdGVyDQo+Pj4+IGRyaXZlciwgaS5lLiB0aGUgb25lIGhhbmRsaW5nIERNQSBhbmQg cmVnaXN0ZXJpbmcgdGhlIHZpZGVvIG5vZGVzLiBQbGVhc2UNCj4+Pj4gZHJvcCB0aGlzLg0KDQoN CkhlbGxvIFNha2FyaSwNCg0KVGFraW5nIHRoaXMgdjRsMl9kZXYgb3V0LCBtZWFucyB0aGF0IEkg YW0gbm8gbG9uZ2VyIGFibGUgdG8gY3JlYXRlIGFuZCANCmFkZCBhIG5vdGlmaWVyIHRvIHRoaXMg J2NzaTJkYycgZGV2aWNlLiBUaGlzIG1lYW5zIHRoYXQgSSBjYW4gbm8gbG9uZ2VyIA0KY29ubmVj dCB0aGUgc3ViZGV2aWNlIHRvIHRoaXMgZGV2aWNlLg0KSW4gdGhpcyBzaXR1YXRpb24sIGhvdyBj YW4gSSBjb25uZWN0IHRoZSBzdWJkZXZpY2UgaW4gdGhlIHBpcGVsaW5lIHRvIA0KdGhlIGNzaTJk YyBub2RlID8gVGhlIHN1YmRldmljZSBpcyB0aGUgJ2NzaTJob3N0JyBoYXJkd2FyZSBibG9jay4N Cg0KVGhlIHBpcGVsaW5lIGxvb2tzIGxpa2UgdGhpczoNCg0KU2Vuc29yICAgLT4gKG1pcGkgY3Np MikgLT4gY3NpMmhvc3QgLT4gKElESSBpbnRlcmZhY2UpIC0+ICBjc2kyZGMgLT4gDQoocGFyYWxs ZWwgaW50ZXJmYWNlKSAtPiBpbWFnZSBzZW5zb3IgY29udHJvbGxlciAobWFzdGVyIGRyaXZlcikN Cg0KDQpUaGUgbWFzdGVyIGRyaXZlciBpcyBhbHNvIHdyaXR0ZW4gdG8gY29wZSB3aXRoIHRoaXMg cGlwZWxpbmUNCg0KU2Vuc29yIC0+IChwYXJhbGxlbCBpbnRlcmZhY2UpIC0+IGltYWdlIHNlbnNv ciBjb250cm9sbGVyIChtYXN0ZXIgZHJpdmVyKQ0KDQpUaGUgbWFzdGVyIGRyaXZlciBhd2FpdHMg Zm9yIHRoZSBzdWJkZXZpY2UgdG8gaGF2ZSBpdHMgJ2NvbXBsZXRpb24nIA0KcmVhZHksIHdoaWNo IGluIHRoZSBmaXJzdCBwaXBlbGluZSBpcyB0aGUgc3ViZGV2IHRoYXQgY3NpMmRjIGlzIA0KcmVn aXN0ZXJpbmcsIGluIHRoZSBzZWNvbmQgY2FzZSBpdCdzIHRoZSBzZW5zb3IgaXRzZWxmLg0KDQpD b3VsZCB5b3UgcGxlYXNlIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdG8gY2hhbmdlIHRoaXMgc3Vj aCB0aGF0IGJvdGggDQpwaXBlbGluZXMgd29yayA/DQoNClRoYW5rcyBhZ2FpbiBmb3IgeW91ciBy ZXZpZXcsDQoNCkV1Z2VuDQoNCj4+Pj4NCj4+Pj4+ICsgICAgIHN0cnVjdCBjbGsgICAgICAgICAg ICAgICAgICAgICAgKnBjbGs7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAg ICAgICAgICpzY2NrOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2aWRlb19waXBlOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgdTMyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBudW1fZm10czsNCj4+Pj4+ICsgICAgIHN0cnVjdCBjc2kyZGNf Zm9ybWF0ICAgICAgICAgICAgKipmb3JtYXRzOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgc3RydWN0 IGNzaTJkY19mb3JtYXQgICAgICAgICAgICAqY3VyX2ZtdDsNCj4+Pj4+ICsgICAgIHN0cnVjdCBj c2kyZGNfZm9ybWF0ICAgICAgICAgICAgKnRyeV9mbXQ7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBz dHJ1Y3QgbWVkaWFfcGFkICAgICAgICAgICAgICAgIHBhZHNbQ1NJMkRDX1BBRFNfTlVNXTsNCj4+ Pj4+ICsNCj4+Pj4+ICsgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrX2dh dGVkOw0KPj4+Pj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcl9s aW5lX2RlbGF5Ow0KPj4+Pj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YzsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldiAgICAgICAg KmFzZDsNCj4+Pj4+ICsgICAgIHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICAgICAgbm90aWZp ZXI7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgICAgICAgICAgICAg ICppbnB1dF9zZDsNCj4+Pj4+ICsgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29tcGxldGVkOw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgY3NpMmRj X3ZwX3VwZGF0ZShzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjKQ0KPj4+Pj4gK3sNCj4+Pj4+ ICsgICAgIHUzMiB2cDsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHZwID0gQ1NJMkRDX1ZQQ0ZHX0RU KGNzaTJkYy0+Y3VyX2ZtdC0+ZHQpICYgQ1NJMkRDX1ZQQ0ZHX0RUX01BU0s7DQo+Pj4+PiArICAg ICB2cCB8PSBDU0kyRENfVlBDRkdfVkMoY3NpMmRjLT52YykgJiBDU0kyRENfVlBDRkdfVkNfTUFT SzsNCj4+Pj4+ICsgICAgIHZwICY9IH5DU0kyRENfVlBDRkdfREU7DQo+Pj4+PiArICAgICB2cCB8 PSBDU0kyRENfVlBDRkdfRE0oQ1NJMkRDX1ZQQ0ZHX0RNX0RFQ09ERVI4VE8xMik7DQo+Pj4+PiAr ICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZHX0RQMjsNCj4+Pj4+ICsgICAgIHZwICY9IH5DU0kyRENf VlBDRkdfUk1TOw0KPj4+Pj4gKyAgICAgdnAgfD0gQ1NJMkRDX1ZQQ0ZHX1BBOw0KPj4+Pj4gKw0K Pj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19WUENGRywgdnApOw0KPj4+ Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19WUEUsIENTSTJEQ19WUEVfRU5B QkxFKTsNCj4+Pj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfUFUsIENTSTJE Q19QVV9WUCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGNzaTJkY19kZXZpY2UgKg0KPj4+Pj4gK2NzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKHN0cnVj dCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkKQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIHJldHVybiBj b250YWluZXJfb2YoY3NpMmRjX3NkLCBzdHJ1Y3QgY3NpMmRjX2RldmljZSwgY3NpMmRjX3NkKTsN Cj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGludCBjc2kyZGNfZW51bV9tYnVzX2Nv ZGUoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNmZywNCj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfbWJ1c19j b2RlX2VudW0gKmNvZGUpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZp Y2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+Pj4+ PiArDQo+Pj4+PiArICAgICBpZiAoY29kZS0+aW5kZXggPj0gY3NpMmRjLT5udW1fZm10cykNCj4+ Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBj b2RlLT5jb2RlID0gY3NpMmRjLT5mb3JtYXRzW2NvZGUtPmluZGV4XS0+bWJ1c19jb2RlOw0KPj4+ Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQg Y3NpMmRjX3RyeV9mbXQoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAqY2ZnLA0K Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAq cmVxX2ZtdCkNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3Np MmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+Pj4+ICsgICAg IHN0cnVjdCBjc2kyZGNfZm9ybWF0ICpmbXQ7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZiAoIWNz aTJkYy0+Y29tcGxldGVkKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYykt PmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4+Pj4gKyAgICAgICAgICAg ICByZXR1cm4gMDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGZvciAoZm10 ID0gY3NpMmRjLT5mb3JtYXRzWzBdOyBmbXQ7IGZtdCsrKQ0KPj4+Pj4gKyAgICAgICAgICAgICBp ZiAocmVxX2ZtdC0+Zm9ybWF0LmNvZGUgPT0gZm10LT5tYnVzX2NvZGUpDQo+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgY3NpMmRjLT50cnlfZm10ID0gZm10Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAg ICAgLyogaW4gY2FzZSB3ZSBjb3VsZCBub3QgZmluZCB0aGUgZGVzaXJlZCBmb3JtYXQsIGRlZmF1 bHQgdG8gc29tZXRoaW5nICovDQo+Pj4+PiArICAgICBpZiAoIWNzaTJkYy0+dHJ5X2ZtdCAgfHwN Cj4+Pj4+ICsgICAgICAgICByZXFfZm10LT5mb3JtYXQuY29kZSAhPSBjc2kyZGMtPnRyeV9mbXQt Pm1idXNfY29kZSkgew0KPj4+Pj4gKyAgICAgICAgICAgICBjc2kyZGMtPnRyeV9mbXQgPSBjc2ky ZGMtPmZvcm1hdHNbMF07DQo+Pj4+PiArICAgICAgICAgICAgIHJlcV9mbXQtPmZvcm1hdC5jb2Rl ID0gY3NpMmRjLT5mb3JtYXRzWzBdLT5tYnVzX2NvZGU7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiAr DQo+Pj4+PiArICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCBw YWQsIHNldF9mbXQsIGNmZywgcmVxX2ZtdCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyBpbnQgY3NpMmRjX3NldF9mbXQoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZp ZyAqY2ZnLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2 X2Zvcm1hdCAqcmVxX2ZtdCkNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2Rl dmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+ Pj4+ICsgICAgIGludCByZXQ7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZiAoIWNzaTJkYy0+Y29t cGxldGVkKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRldiwgInN1 YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4g MDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGNzaTJkY190cnlfZm10KGNz aTJkY19zZCwgY2ZnLCByZXFfZm10KTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlmIChjc2kyZGMt PnRyeV9mbXQtPm1idXNfY29kZSAhPSByZXFfZm10LT5mb3JtYXQuY29kZSkgew0KPj4+Pj4gKyAg ICAgICAgICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAiQ1NJMkRDIHVuc3VwcG9ydGVkIGZvcm1h dCAweCV4XG4iLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJlcV9mbXQtPmZvcm1hdC5j b2RlKTsNCj4+Pj4NCj4+Pj4gUGxlYXNlIGFkanVzdCB0aGUgZm9ybWF0IGludG8gYSBzdXBwb3J0 ZWQgb25lIGluc3RlYWQuDQo+Pj4NCj4+PiBJIHRob3VnaHQgdGhhdCBvbmx5IHRoZSAndHJ5X2Zt dCcgY2FsbHMgc2hvdWxkIGFkYXB0IHRvIHNvbWV0aGluZyB0aGF0DQo+Pj4gd29ya3MuIEl0IGlz IHRoZSBzYW1lIGNhc2UgZm9yIHNldF9mbXQgPyBUaGlzIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4N Cj4+PiBpbnZhbGlkIGZvcm1hdCA/DQo+Pg0KPj4gQ29ycmVjdC4gc2V0X2ZtdCBzaG91bGQgYWx3 YXlzIHJldHVybiB3aXRoIGEgdmFsaWQgZm9ybWF0Lg0KPj4NCj4+IFBlcmhhcHMgbWVyZ2luZyBj c2kyZGNfdHJ5X2ZtdCgpIHRvIHRoaXMgZnVuY3Rpb24gd291bGQgaGVscD8gSXQncyBub3QgdXNl ZA0KPj4gZWxzZXdoZXJlLiBJdCBzZWVtcyB5b3UncmUgZG9pbmcgc29tZSByZWR1bmRhbnQgY2hl Y2tzIGhlcmUsIHRvby4NCj4gDQo+IEJ1dCB0aGlzIHdvdWxkIG1lYW4gdGhhdCB0aGlzIGRyaXZl ciB3aWxsIG5vdCBoYXZlIGEgcHVyZSAndHJ5X2ZtdCcgYW5kDQo+IHdoYXQgd2lsbCBoYXBwZW4g b24gdHJ5IGF0dGVtcHRzIGZyb20gdGhlIG1hc3RlciBkcml2ZXIgPw0KPiANCj4+DQo+Pj4+DQo+ Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4g Kw0KPj4+Pj4gKyAgICAgcmV0ID0gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCBw YWQsIHNldF9mbXQsIGNmZywgcmVxX2ZtdCk7DQo+Pj4+PiArICAgICBpZiAocmV0KSB7DQo+Pj4+ PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJpbnB1dCBzdWJkZXYgZmFpbGVk ICVkXG4iLCByZXQpOw0KPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4+Pj4gKyAg ICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgY3NpMmRjLT5jdXJfZm10ID0gY3NpMmRjLT50cnlf Zm10Ow0KPj4+Pj4gKyAgICAgLyogdXBkYXRlIHZpZGVvIHBpcGUgKi8NCj4+Pj4+ICsgICAgIGNz aTJkY192cF91cGRhdGUoY3NpMmRjKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRldl9kYmcoY3Np MmRjLT5kZXYsICJDU0kyREMgbmV3IGZvcm1hdDogMHgleFxuIiwgcmVxX2ZtdC0+Zm9ybWF0LmNv ZGUpOw0KPj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyBpbnQgY3NpMmRjX2Zvcm1hdHNfaW5pdChzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRj KQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGludCBpLCBqOw0KPj4+Pj4gKyAgICAgc3RydWN0IGNz aTJkY19mb3JtYXQgKmZtdCA9ICZjc2kyZGNfZm9ybWF0c19saXN0WzBdOw0KPj4+Pj4gKw0KPj4+ Pj4gKyAgICAgY3NpMmRjLT5udW1fZm10cyA9IDE7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBjc2ky ZGMtPmZvcm1hdHMgPSBkZXZtX2tjYWxsb2MoY3NpMmRjLT5kZXYsIGNzaTJkYy0+bnVtX2ZtdHMs DQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpjc2ky ZGMtPmZvcm1hdHMpLCBHRlBfS0VSTkVMKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGZvciAoaSA9 IDAsIGogPSAwOyBpIDwgQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0c19saXN0KTsgaSsrLCBmbXQr KykNCj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGZtdC0+bWJ1c19jb2RlID09IE1FRElBX0JVU19G TVRfU1JHR0IxMF8xWDEwKQ0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+Zm9y bWF0c1tqKytdID0gZm10Ow0KPj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+PiArfQ0KPj4+Pj4g Kw0KPj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX3NfcG93ZXIoc3RydWN0IHY0bDJfc3ViZGV2ICpj c2kyZGNfc2QsIGludCBvbikNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2Rl dmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+ Pj4+ICsgICAgIGludCByZXQgPSAwOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWYgKCFjc2kyZGMt PmNvbXBsZXRlZCkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYs ICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0 dXJuIDA7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZiAob24pDQo+Pj4+ PiArICAgICAgICAgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjc2kyZGMtPnNjY2spOw0K Pj4+Pj4gKyAgICAgZWxzZQ0KPj4+Pj4gKyAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBh cmUoY3NpMmRjLT5zY2NrKTsNCj4+Pj4+ICsgICAgIGlmIChyZXQpDQo+Pj4+PiArICAgICAgICAg ICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIHNjY2s6ICVkXG4iLCBy ZXQpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgLyogaWYgcG93ZXJpbmcgdXAsIGRlYXNzZXJ0IHJl c2V0IGxpbmUgKi8NCj4+Pj4+ICsgICAgIGlmIChvbikNCj4+Pj4+ICsgICAgICAgICAgICAgY3Np MmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19HQ1RMUiwgQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+ Pj4+ICsNCj4+Pj4+ICsgICAgIHJldCA9IHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9z ZCwgY29yZSwgc19wb3dlciwgb24pOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgLyogaWYgcG93ZXJp bmcgZG93biwgYXNzZXJ0IHJlc2V0IGxpbmUgKi8NCj4+Pj4+ICsgICAgIGlmICghb24pDQo+Pj4+ PiArICAgICAgICAgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfR0NUTFIsICFDU0ky RENfR0NUTFJfU1dSU1QpOw0KPj4+Pg0KPj4+PiBUaGVzZSBnbyB0byB0aGUgcnVudGltZSByZXN1 bWUgYW5kIHN1c3BlbmQgY2FsbGJhY2tzLg0KPj4+DQo+Pj4gT2theSBJIHdpbGwgdXBkYXRlDQo+ IA0KPiBBbm90aGVyIHF1ZXN0aW9uIGlzIHdoYXQgaGFwcGVucyB3aGVuIENPTkZJR19QTSBpcyBu b3QgdXNlZCwgdGh1cyB3ZSBkbw0KPiBub3QgaGF2ZSBydW50aW1lIHJlc3VtZSBhbmQgc3VzcGVu ZCBjYWxsYmFja3MgPw0KPiANCj4+Pg0KPj4+Pg0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJu IHJldDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGludCBjc2kyZGNfc19zdHJl YW0oc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsIGludCBlbmFibGUpDQo+Pj4+PiArew0K Pj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19j c2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZiAoIWNzaTJk Yy0+Y29tcGxldGVkKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRl diwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4+Pj4gKyAgICAgICAgICAgICBy ZXR1cm4gMDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHJldHVybiB2NGwy X3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHZpZGVvLCBzX3N0cmVhbSwgZW5hYmxlKTsN Cj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGludCBjc2kyZGNfZ19mcmFtZV9pbnRl cnZhbChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9pbnRlcnZhbCAqaW50 ZXJ2YWwpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJk YyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+Pj4+PiArDQo+Pj4+ PiArICAgICBpZiAoIWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRl dl9kYmcoKGNzaTJkYyktPmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ ICsgICAgIHJldHVybiB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHZpZGVvLCBn X2ZyYW1lX2ludGVydmFsLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ZXJ2YWwpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19zX2Zy YW1lX2ludGVydmFsKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZyYW1lX2ludGVy dmFsICppbnRlcnZhbCkNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2Rldmlj ZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+Pj4+ ICsNCj4+Pj4+ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+Pj4+ICsgICAgICAg ICAgICAgZGV2X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHlldFxu Iik7DQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAwOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4g Kw0KPj4+Pj4gKyAgICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwg dmlkZW8sIHNfZnJhbWVfaW50ZXJ2YWwsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnRlcnZhbCk7DQo+Pj4+DQo+Pj4+IElmIHlvdXIgZHJpdmVyIGlzIHVzZWQgd2l0aCBh IE1DLWVuYWJsZWQgbWFzdGVyIGRyaXZlciwgeW91IGNhbiBkcm9wIGFsbA0KPj4+PiB0aGUgdjRs Ml9zdWJkZXZfY2FsbCgpIG1hY3JvcyBhcGFydCBmcm9tIHRoZSBvbmVzIHJlbGF0ZWQgdG8gc19z dHJlYW0NCj4+Pj4gb3BlcmF0aW9uLg0KPj4+DQo+Pj4gQW5kIHRoZSBzZXQgZnJhbWUgaW50ZXJ2 YWwgZm9yIGV4YW1wbGUsIHdpbGwgaXQgYmUgc2VudCB0byB0aGUgc2Vuc29yDQo+Pj4gYXV0b21h dGljYWxseSA/DQo+Pj4gSSBub3RpY2VkIHRoYXQgc3VjaCBvcGVyYXRpb25zIG9uIHRoZSBtYXN0 ZXIgZHJpdmVyIHdlcmUgbm90IHByb3BhZ2F0ZWQNCj4+PiB0byB0aGUgdW5kZXJseWluZyBzdWJk ZXZpY2UuIEhvdyBkb2VzIHRoZSBtYXN0ZXIgZGV2aWNlICdrbm93JyBob3cgdG8NCj4+PiBjYWxs IHRoZSBpbnB1dF9zZCA/IHRoaXMgaW5wdXRfc2QgaXMgbm90IHJlZmVyZW5jZWQgYW55d2hlcmUg aW4gdGhlDQo+Pj4gbWFzdGVyIGRyaXZlci4NCj4+DQo+PiBUaGF0J3MgY29ycmVjdC4gSW4gTUMt Y2VudHJpYyBkcml2ZXJzIGl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1c2VyDQo+PiBz cGFjZSB0byBjb25maWd1cmUgdGhlIGVudGlyZSBwaXBlbGluZS4NCj4+DQo+PiBBcyB5b3VyIGRl dmljZSBpcyBhIENTSS0yIHRvIHBhcmFsbGVsICg/KSBjb252ZXJ0ZXIsIGl0IG1heSB3ZWxsIGJl IHBhcnQgb2YNCj4+IGEgY29tcGxleCBwaXBlbGluZSB0aGF0IHRoZSBtYXN0ZXIgZHJpdmVyIGNv dWxkIG5vdCBrbm93IGFib3V0Lg0KPj4NCj4+IEkgcmVtZW1iZXIgdGhlcmUgd2FzIGFuIGV4aXN0 aW5nIHN0bSBwYXJhbGxlbCByZWNlaXZlciB0aGF0IHdhcyB0aWdodGx5DQo+PiBjb3VwbGVkIGJ5 IGEgQ1NJLTIgdG8gcGFyYWxsZWwgSVAgYmxvY2sgd2hlcmUgdGhlIFY0TDItY2VudHJpYyBtb2Rl bCB3YXMNCj4+IHVzZWQuIEJ1dCB2aXJ0dWFsbHkgYWxsIGRldmljZXMgdGhhdCBhcmUgbm90IGp1 c3Qgc2ltcGxlIHNlbnNvciArIHJlY2VpdmVyDQo+PiB3aXRoIERNQSBhcmUgTUMtY2VudHJpYy4N Cj4gDQo+IFdpdGhvdXQgdGhlc2UgY2FsbHMgdG8gdGhlIHN1YmRldmljZSwgdGhlIHN1YmRldmlj ZSAoY3NpMmhvc3QgYW5kDQo+IHNlbnNvcikgYXJlIG5vdCBhd2FyZSBvZiBhbnl0aGluZyBjb25m aWd1cmVkIG9uIHRoZSBtYXN0ZXIgZHJpdmVyLiBIb3cNCj4gYXJlIHN1Y2ggc2V0dGluZ3Mgc2Vu dCB0byB0aGUgc2Vuc29yID8NCj4gDQo+IGZvciBleGFtcGxlIHY0bDItY3RsIC0tbGlzdC1mb3Jt YXRzLWV4dA0KPiANCj4gDQo+ICMgdjRsMi1jdGwgLWQgL2Rldi92aWRlbzAgLS1saXN0LWZvcm1h dHMtZXh0DQo+IGlvY3RsOiBWSURJT0NfRU5VTV9GTVQNCj4gICAgICAgICAgIFR5cGU6IFZpZGVv IENhcHR1cmUNCj4gDQo+ICAgICAgICAgICBbMF06ICdBUjEyJyAoMTYtYml0IEFSR0IgNC00LTQt NCkNCj4gICAgICAgICAgICAgICAgICAgU2l6ZTogRGlzY3JldGUgMzI4MHgyNDY0DQo+ICAgICAg ICAgICAgICAgICAgIFNpemU6IERpc2NyZXRlIDE5MjB4MTA4MA0KPiAgICAgICAgICAgICAgICAg ICBTaXplOiBEaXNjcmV0ZSAxNjQweDEyMzINCj4gICAgICAgICAgIFsxXTogJ0FSMTUnICgxNi1i aXQgQVJHQiAxLTUtNS01KQ0KPiAgICAgICAgICAgICAgICAgICBTaXplOiBEaXNjcmV0ZSAzMjgw eDI0NjQNCj4gICAgICAgICAgICAgICAgICAgU2l6ZTogRGlzY3JldGUgMTkyMHgxMDgwDQo+ICAg ICAgICAgICAgICAgICAgIFNpemU6IERpc2NyZXRlIDE2NDB4MTIzMg0KPiAgICAgICAgICAgWzJd OiAnUkdCUCcgKDE2LWJpdCBSR0IgNS02LTUpDQo+ICAgICAgICAgICAgICAgICAgIFNpemU6IERp c2NyZXRlIDMyODB4MjQ2NA0KPiAgICAgICAgICAgICAgICAgICBTaXplOiBEaXNjcmV0ZSAxOTIw eDEwODANCj4gICAgICAgICAgICAgICAgICAgU2l6ZTogRGlzY3JldGUgMTY0MHgxMjMyDQo+IA0K PiBBbGwgdGhpcyBpbmZvcm1hdGlvbiBpcyBvYnRhaW5lZCBiZWNhdXNlIG9mIHRoZSBlbnVtX2Zy YW1lX3NpemUgY2FsbGJhY2sNCj4gdG8gdGhlIHN1YmRldmljZQ0KPiANCj4gSWYgSSByZW1vdmUg dGhlc2UsDQo+IA0KPiAjIHY0bDItY3RsIC1kIC9kZXYvdmlkZW8wIC0tbGlzdC1mb3JtYXRzLWV4 dA0KPiBpb2N0bDogVklESU9DX0VOVU1fRk1UDQo+ICAgICAgICAgICBUeXBlOiBWaWRlbyBDYXB0 dXJlDQo+IA0KPiAgICAgICAgICAgWzBdOiAnQVIxMicgKDE2LWJpdCBBUkdCIDQtNC00LTQpDQo+ ICAgICAgICAgICBbMV06ICdBUjE1JyAoMTYtYml0IEFSR0IgMS01LTUtNSkNCj4gICAgICAgICAg IFsyXTogJ1JHQlAnICgxNi1iaXQgUkdCIDUtNi01KQ0KPiAgICAgICAgICAgWzNdOiAnQVIyNCcg KDMyLWJpdCBCR1JBIDgtOC04LTgpDQo+ICAgICAgICAgICBbNF06ICdYUjI0JyAoMzItYml0IEJH UlggOC04LTgtOCkNCj4gICAgICAgICAgIFs1XTogJ1lVMTInIChQbGFuYXIgWVVWIDQ6MjowKQ0K PiAgICAgICAgICAgWzZdOiAnVVlWWScgKFVZVlkgNDoyOjIpDQo+ICAgICAgICAgICBbN106ICdW WVVZJyAoVllVWSA0OjI6MikNCj4gICAgICAgICAgIFs4XTogJ1lVWVYnIChZVVlWIDQ6MjoyKQ0K PiAgICAgICAgICAgWzldOiAnNDIyUCcgKFBsYW5hciBZVVYgNDoyOjIpDQo+ICAgICAgICAgICBb MTBdOiAnR1JFWScgKDgtYml0IEdyZXlzY2FsZSkNCj4gICAgICAgICAgIFsxMV06ICdZMTAgJyAo MTAtYml0IEdyZXlzY2FsZSkNCj4gICAgICAgICAgIFsxMl06ICdZMTYgJyAoMTYtYml0IEdyZXlz Y2FsZSkNCj4gICAgICAgICAgIFsxM106ICdSRzEwJyAoMTAtYml0IEJheWVyIFJHUkcvR0JHQikN Cj4gDQo+IA0KPiBBbGwgdGhlIGZyYW1lIGluZm9ybWF0aW9uIGlzIG5vIGxvbmdlciBhdmFpbGFi bGUuDQo+IA0KPiBTbyBob3cgY2FuIEkgb2J0YWluIHRoaXMgaW5mb3JtYXRpb24gaWYgSSByZW1v dmUgdGhlc2UgY2FsbGJhY2tzIHRoYXQNCj4geW91IHNheSB0aGV5IHNob3VsZCBiZSByZW1vdmVk ID8NCj4gDQo+Pg0KPj4+DQo+Pj4+DQo+Pj4+IElmIG5vdCwgdGhlbiB5b3UgY2FuIGRyb3AgdGhl IEhBU19ERVZOT0RFIGZsYWcgZnJvbSB0aGUgc3ViZGV2IGZsYWdzLiBCdXQNCj4+Pj4gSSdkIHRy eSB0byBhdm9pZCB0aGlzIHJvdXRlIGlmIHBvc3NpYmxlLg0KPj4+Pg0KPj4+Pj4gK30NCj4+Pj4+ ICsNCj4+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19lbnVtX2ZyYW1lX3NpemUoc3RydWN0IHY0bDJf c3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9zaXplX2VudW0gKmZz ZSkNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0g Y3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+Pj4+ICsNCj4+Pj4+ICsg ICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgZGV2X2Ri ZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHlldFxuIik7DQo+Pj4+PiAr ICAgICAgICAgICAgIHJldHVybiAwOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAg ICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBlbnVtX2Zy YW1lX3NpemUsIGNmZywNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzZSk7 DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fZnJhbWVf aW50ZXJ2YWwoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAq Y2ZnLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0 bDJfc3ViZGV2X2ZyYW1lX2ludGVydmFsX2VudW0gKmZpZSkNCj4+Pj4+ICt7DQo+Pj4+PiArICAg ICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZp Y2UoY3NpMmRjX3NkKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0 ZWQpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgZGV2X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2 IG5vdCByZWdpc3RlcmVkIHlldFxuIik7DQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAwOw0K Pj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJuIHY0bDJfc3ViZGV2X2Nh bGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBlbnVtX2ZyYW1lX2ludGVydmFsLCBjZmcsDQo+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWUpOw0KPj4+Pj4gK30NCj4+Pj4+ICsN Cj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X2NvcmVfb3BzIGNzaTJkY19j b3JlX29wcyA9IHsNCj4+Pj4+ICsgICAgIC5zX3Bvd2VyID0gY3NpMmRjX3NfcG93ZXIsDQo+Pj4+ DQo+Pj4+IFBsZWFzZSB1c2UgcnVudGltZSBQTSBpbnN0ZWFkLg0KPiANCj4gV2hhdCBoYXBwZW5z IGlmIHdlIGRvIG5vdCBoYXZlIHJ1bnRpbWUgUE0gPyAoQ09ORklHX1BNPW4pDQo+Pj4+DQo+Pj4+ PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3Bh ZF9vcHMgY3NpMmRjX3BhZF9vcHMgPSB7DQo+Pj4+PiArICAgICAuZW51bV9tYnVzX2NvZGUgPSBj c2kyZGNfZW51bV9tYnVzX2NvZGUsDQo+Pj4+PiArICAgICAuc2V0X2ZtdCA9IGNzaTJkY19zZXRf Zm10LA0KPj4+Pj4gKyAgICAgLmVudW1fZnJhbWVfc2l6ZSA9IGNzaTJkY19lbnVtX2ZyYW1lX3Np emUsDQo+Pj4+PiArICAgICAuZW51bV9mcmFtZV9pbnRlcnZhbCA9IGNzaTJkY19lbnVtX2ZyYW1l X2ludGVydmFsLA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCB2NGwyX3N1YmRldl92aWRlb19vcHMgY3NpMmRjX3ZpZGVvX29wcyA9IHsNCj4+Pj4+ICsgICAg IC5zX3N0cmVhbSA9IGNzaTJkY19zX3N0cmVhbSwNCj4+Pj4+ICsgICAgIC5nX2ZyYW1lX2ludGVy dmFsID0gY3NpMmRjX2dfZnJhbWVfaW50ZXJ2YWwsDQo+Pj4+PiArICAgICAuc19mcmFtZV9pbnRl cnZhbCA9IGNzaTJkY19zX2ZyYW1lX2ludGVydmFsLA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9vcHMgY3NpMmRjX3N1YmRldl9vcHMg PSB7DQo+Pj4+PiArICAgICAuY29yZSA9ICZjc2kyZGNfY29yZV9vcHMsDQo+Pj4+PiArICAgICAu cGFkID0gJmNzaTJkY19wYWRfb3BzLA0KPj4+Pj4gKyAgICAgLnZpZGVvID0gJmNzaTJkY192aWRl b19vcHMsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19hc3lu Y19ib3VuZChzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAqbm90aWZpZXIsDQo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsDQo+Pj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICph c2QpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9 IGNvbnRhaW5lcl9vZihub3RpZmllci0+djRsMl9kZXYsDQo+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlLCB2NGwyX2Rldik7DQo+ Pj4+PiArICAgICBjc2kyZGMtPmlucHV0X3NkID0gc3ViZGV2Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAg ICAgcmV0dXJuIDA7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRj X2FzeW5jX2NvbXBsZXRlKHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICpub3RpZmllcikNCj4+ Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0NCj4+Pj4+ ICsgICAgICAgICAgICAgY29udGFpbmVyX29mKG5vdGlmaWVyLT52NGwyX2Rldiwgc3RydWN0IGNz aTJkY19kZXZpY2UsIHY0bDJfZGV2KTsNCj4+Pj4NCj4+Pj4gT3ZlciA4MCBjaGFyYWN0ZXJzIHBl ciBsaW5lLiBQbGVhc2UgY2hlY2sgdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciwgdG9vLg0KPj4+Pg0K Pj4+Pj4gKyAgICAgaW50IHJldDsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHJldCA9IHY0bDJfZGV2 aWNlX3JlZ2lzdGVyX3N1YmRldl9ub2RlcygmY3NpMmRjLT52NGwyX2Rldik7DQo+Pj4+PiArICAg ICBpZiAocmV0IDwgMCkgew0KPj4+Pj4gKyAgICAgICAgICAgICB2NGwyX2VycigmY3NpMmRjLT52 NGwyX2RldiwgImZhaWxlZCB0byByZWdpc3RlciBzdWJkZXYgbm9kZXNcbiIpOw0KPj4+Pj4gKyAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAg ICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19HQ0ZHLA0KPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAoQ1NJMkRDX0dDRkdfSExDKGNzaTJkYy0+aW50ZXJfbGluZV9kZWxheSkgJg0KPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfR0NGR19ITENfTUFTSykgfA0KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAoY3NpMmRjLT5jbGtfZ2F0ZWQgPyAwIDogQ1NJMkRDX0dDRkdfTUlQ SUZSTikpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJE Q19WUENPTCwNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgQ1NJMkRDX1ZQQ09MX0NPTCgweEZG RikgJiBDU0kyRENfVlBDT0xfQ09MX01BU0spOw0KPj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChj c2kyZGMsIENTSTJEQ19WUFJPVywNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgQ1NJMkRDX1ZQ Uk9XX1JPVygweEZGRikgJiBDU0kyRENfVlBST1dfUk9XX01BU0spOw0KPj4+Pj4gKw0KPj4+Pj4g KyAgICAgY3NpMmRjLT5jb21wbGV0ZWQgPSB0cnVlOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0 dXJuIHJldDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2 NGwyX2FzeW5jX25vdGlmaWVyX29wZXJhdGlvbnMgY3NpMmRjX2FzeW5jX29wcyA9IHsNCj4+Pj4+ ICsgICAgIC5ib3VuZCA9IGNzaTJkY19hc3luY19ib3VuZCwNCj4+Pj4+ICsgICAgIC5jb21wbGV0 ZSA9IGNzaTJkY19hc3luY19jb21wbGV0ZSwNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyB2b2lkIGNzaTJkY19jbGVhbnVwX25vdGlmaWVyKHN0cnVjdCBjc2kyZGNfZGV2aWNlICpj c2kyZGMpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgdjRsMl9hc3luY19ub3RpZmllcl91bnJlZ2lz dGVyKCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+Pj4+ICsgICAgIHY0bDJfYXN5bmNfbm90aWZpZXJf Y2xlYW51cCgmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyBpbnQgY3NpMmRjX3ByZXBhcmVfbm90aWZpZXIoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNz aTJkYywNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZp Y2Vfbm9kZSAqaW5wdXRfcGFyZW50KQ0KPj4+Pj4gK3sNCj4+Pj4+ICsgICAgIGludCByZXQ7DQo+ Pj4+PiArDQo+Pj4+PiArICAgICB2NGwyX2FzeW5jX25vdGlmaWVyX2luaXQoJmNzaTJkYy0+bm90 aWZpZXIpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgY3NpMmRjLT5hc2QgPSBremFsbG9jKHNpemVv ZigqY3NpMmRjLT5hc2QpLCBHRlBfS0VSTkVMKTsNCj4+Pj4+ICsgICAgIGlmICghY3NpMmRjLT5h c2QpDQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4+Pj4gKw0KPj4+Pj4g KyAgICAgY3NpMmRjLT5hc2QtPm1hdGNoX3R5cGUgPSBWNEwyX0FTWU5DX01BVENIX0ZXTk9ERTsN Cj4+Pj4+ICsgICAgIGNzaTJkYy0+YXNkLT5tYXRjaC5md25vZGUgPSBvZl9md25vZGVfaGFuZGxl KGlucHV0X3BhcmVudCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICByZXQgPSB2NGwyX2FzeW5jX25v dGlmaWVyX2FkZF9zdWJkZXYoJmNzaTJkYy0+bm90aWZpZXIsIGNzaTJkYy0+YXNkKTsNCj4+Pj4+ ICsgICAgIGlmIChyZXQpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRl diwgImZhaWxlZCB0byBhZGQgYXN5bmMgbm90aWZpZXIuXG4iKTsNCj4+Pj4+ICsgICAgICAgICAg ICAgdjRsMl9hc3luY19ub3RpZmllcl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+Pj4+ ICsgICAgICAgICAgICAgZ290byBjc2kyZGNfcHJlcGFyZV9ub3RpZmllcl9lcnI7DQo+Pj4+PiAr ICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICBjc2kyZGMtPm5vdGlmaWVyLm9wcyA9ICZjc2ky ZGNfYXN5bmNfb3BzOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19ub3Rp Zmllcl9yZWdpc3RlcigmY3NpMmRjLT52NGwyX2RldiwNCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmNzaTJkYy0+bm90aWZpZXIpOw0KPj4+Pj4gKw0KPj4+ Pj4gKyAgICAgaWYgKHJldCkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ ZGV2LCAiZmFpbCB0byByZWdpc3RlciBhc3luYyBub3RpZmllci5cbiIpOw0KPj4+Pj4gKyAgICAg ICAgICAgICBnb3RvIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyX2VycjsNCj4+Pj4+ICsgICAgIH0N Cj4+Pj4+ICsNCj4+Pj4+ICtjc2kyZGNfcHJlcGFyZV9ub3RpZmllcl9lcnI6DQo+Pj4+PiArICAg ICBvZl9ub2RlX3B1dChpbnB1dF9wYXJlbnQpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJu IHJldDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGludCBjc2kyZGNfb2ZfcGFy c2Uoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYywNCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGUpDQo+Pj4+PiArew0KPj4+Pj4gKyAg ICAgc3RydWN0IGRldmljZV9ub2RlICppbnB1dF9ub2RlLCAqc2lua19ub2RlLCAqaW5wdXRfcGFy ZW50Ow0KPj4+Pj4gKyAgICAgc3RydWN0IHY0bDJfZndub2RlX2VuZHBvaW50IGlucHV0X2VuZHBv aW50ID0geyAwIH0sIHNpbmtfZW5kcG9pbnQgPSB7IDAgfTsNCj4+Pj4+ICsgICAgIGludCByZXQ7 DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpbnB1dF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5k cG9pbnQob2Zfbm9kZSwgTlVMTCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBpZiAoIWlucHV0X25v ZGUpIHsNCj4+Pj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgIm1pc3Npbmcg cG9ydCBub2RlIGF0ICVzLCBpbnB1dCBub2RlIGlzIG1hbmRhdG9yeS5cbiIsDQo+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgb2Zfbm9kZS0+ZnVsbF9uYW1lKTsNCj4+Pj4+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICBy ZXQgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9wYXJzZShvZl9md25vZGVfaGFuZGxlKGlucHV0X25v ZGUpLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHV0 X2VuZHBvaW50KTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlmIChyZXQpIHsNCj4+Pj4+ICsgICAg ICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImVuZHBvaW50IG5vdCBkZWZpbmVkIGF0ICVz XG4iLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIG9mX25vZGUtPmZ1bGxfbmFtZSk7DQo+ Pj4+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+ Pj4+PiArICAgICBpbnB1dF9wYXJlbnQgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50 KGlucHV0X25vZGUpOw0KPj4+Pj4gKyAgICAgaWYgKCFpbnB1dF9wYXJlbnQpIHsNCj4+Pj4+ICsg ICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImNvdWxkIG5vdCBnZXQgaW5wdXQgbm9k ZSdzIHBhcmVudCBub2RlLlxuIik7DQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgc2lua19ub2RlID0gb2ZfZ3Jh cGhfZ2V0X25leHRfZW5kcG9pbnQob2Zfbm9kZSwgaW5wdXRfbm9kZSk7DQo+Pj4+PiArDQo+Pj4+ PiArICAgICBpZiAoc2lua19ub2RlKQ0KPj4+Pj4gKyAgICAgICAgICAgICByZXQgPSB2NGwyX2Z3 bm9kZV9lbmRwb2ludF9wYXJzZShvZl9md25vZGVfaGFuZGxlKHNpbmtfbm9kZSksDQo+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaW5rX2VuZHBv aW50KTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGlmICghc2lua19ub2RlIHx8IHJldCkgew0KPj4+ Pj4gKyAgICAgICAgICAgICBkZXZfaW5mbyhjc2kyZGMtPmRldiwgIm1pc3Npbmcgc2luayBub2Rl IGF0ICVzLCBkYXRhIHBpcGUgYXZhaWxhYmxlIG9ubHkuXG4iLA0KPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICBvZl9ub2RlLT5mdWxsX25hbWUpOw0KPj4+Pj4gKyAgICAgfSBlbHNlIHsNCj4+ Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT52aWRlb19waXBlID0gdHJ1ZTsNCj4+Pj4+ICsgICAg ICAgICAgICAgY3NpMmRjLT52YyA9IHNpbmtfZW5kcG9pbnQuYmFzZS5pZDsNCj4+Pj4+ICsNCj4+ Pj4+ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgImJsb2NrICVzICVkLiVkLT4l ZC4lZCB2aWRlbyBwaXBlIFZDICVkXG4iLA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIG9m X25vZGUtPmZ1bGxfbmFtZSwgaW5wdXRfZW5kcG9pbnQuYmFzZS5wb3J0LA0KPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIGlucHV0X2VuZHBvaW50LmJhc2UuaWQsIHNpbmtfZW5kcG9pbnQuYmFz ZS5wb3J0LA0KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNpbmtfZW5kcG9pbnQuYmFzZS5p ZCwgY3NpMmRjLT52Yyk7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICBjc2ky ZGMtPmNsa19nYXRlZCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLA0KPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvY2hpcCxj bGstZ2F0ZWQiKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICIl cyBjbG9ja1xuIiwNCj4+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5jbGtfZ2F0ZWQgPyAiR2F0 ZWQiIDogIkZyZWUgcnVubmluZyIpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF91MzIob2Zfbm9kZSwgIm1pY3JvY2hpcCxpbnRlci1saW5lLWRlbGF5IiwNCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjc2kyZGMtPmludGVyX2xpbmVf ZGVsYXkpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWYgKHJldCB8fCBjc2kyZGMtPmludGVyX2xp bmVfZGVsYXkgPiAxNiB8fA0KPj4+Pj4gKyAgICAgICAgIGNzaTJkYy0+aW50ZXJfbGluZV9kZWxh eSA9PSAwKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICJhc3N1 bWluZyBpbnRlciBsaW5lIGRlbGF5ID0gMTYgY2xvY2tzIik7DQo+Pj4+PiArICAgICAgICAgICAg IGNzaTJkYy0+aW50ZXJfbGluZV9kZWxheSA9IDE2Ow0KPj4+Pj4gKyAgICAgICAgICAgICByZXQg PSAwOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKyAgICAgLyogaGFyZHdhcmUgYXV0b21hdGljYWxs eSBhZGRzIDEgKi8NCj4+Pj4+ICsgICAgIGNzaTJkYy0+aW50ZXJfbGluZV9kZWxheS0tOw0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgLyogcHJlcGFyZSBhc3luYyBub3RpZmllciBmb3Igc3ViZGV2aWNl IGNvbXBsZXRpb24gKi8NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIG9mX25vZGVfcHV0KHNpbmtfbm9k ZSk7DQo+Pj4+PiArICAgICBvZl9ub2RlX3B1dChpbnB1dF9ub2RlKTsNCj4+Pj4+ICsNCj4+Pj4+ ICsgICAgIHJldHVybiBjc2kyZGNfcHJlcGFyZV9ub3RpZmllcihjc2kyZGMsIGlucHV0X3BhcmVu dCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4+Pj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2 aWNlICpjc2kyZGM7DQo+Pj4+PiArICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IE5VTEw7DQo+ Pj4+PiArICAgICBpbnQgcmV0ID0gMDsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIGNzaTJkYyA9IGRl dm1fa3phbGxvYyhkZXYsIHNpemVvZigqY3NpMmRjKSwgR0ZQX0tFUk5FTCk7DQo+Pj4+PiArICAg ICBpZiAoIWNzaTJkYykNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+Pj4+ PiArDQo+Pj4+PiArICAgICBjc2kyZGMtPmRldiA9IGRldjsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAg IHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ Pj4+PiArICAgICBpZiAoIXJlcykNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+Pj4+PiArDQo+Pj4+PiArICAgICBjc2kyZGMtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3Vy Y2UoZGV2LCByZXMpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgaWYgKElTX0VSUihjc2kyZGMtPmJh c2UpKSB7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiYmFzZSBhZGRyZXNzIG5v dCBzZXRcbiIpOw0KPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjc2kyZGMtPmJh c2UpOw0KPj4+Pj4gKyAgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgY3NpMmRjLT5wY2xrID0g ZGV2bV9jbGtfZ2V0KGRldiwgInBjbGsiKTsNCj4+Pj4+ICsgICAgIGlmIChJU19FUlIoY3NpMmRj LT5wY2xrKSkgew0KPj4+Pj4gKyAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGNzaTJkYy0+cGNs ayk7DQo+Pj4+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBwY2xr OiAlZFxuIiwgcmV0KTsNCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+Pj4+ICsg ICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjc2ky ZGMtPnBjbGspOw0KPj4+Pj4gKyAgICAgaWYgKHJldCkgew0KPj4+Pj4gKyAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgcGNsazogJWRcbiIsIHJldCk7DQo+Pj4+PiAr ICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiAr ICAgICBjc2kyZGMtPnNjY2sgPSBkZXZtX2Nsa19nZXQoZGV2LCAic2NjayIpOw0KPj4+Pj4gKyAg ICAgaWYgKElTX0VSUihjc2kyZGMtPnNjY2spKSB7DQo+Pj4+PiArICAgICAgICAgICAgIHJldCA9 IFBUUl9FUlIoY3NpMmRjLT5zY2NrKTsNCj4+Pj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJmYWlsZWQgdG8gZ2V0IHNjY2s6ICVkXG4iLCByZXQpOw0KPj4+Pj4gKyAgICAgICAgICAgICBn b3RvIGNzaTJkY19jbGtfZmFpbDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAg IHJldCA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyKGRldiwgJmNzaTJkYy0+djRsMl9kZXYpOw0KPj4+ Pj4gKyAgICAgaWYgKHJldCkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInVu YWJsZSB0byByZWdpc3RlciB2NGwyIGRldmljZS5cbiIpOw0KPj4+Pj4gKyAgICAgICAgICAgICBn b3RvIGNzaTJkY19jbGtfZmFpbDsNCj4+Pj4+ICsgICAgIH0NCj4+Pj4+ICsNCj4+Pj4+ICsgICAg IHY0bDJfc3ViZGV2X2luaXQoJmNzaTJkYy0+Y3NpMmRjX3NkLCAmY3NpMmRjX3N1YmRldl9vcHMp Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2Qub3duZXIgPSBUSElTX01P RFVMRTsNCj4+Pj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmRldiA9IGRldjsNCj4+Pj4+ICsg ICAgIHNucHJpbnRmKGNzaTJkYy0+Y3NpMmRjX3NkLm5hbWUsIHNpemVvZihjc2kyZGMtPmNzaTJk Y19zZC5uYW1lKSwNCj4+Pj4+ICsgICAgICAgICAgICAgICJDU0kyREMuMCIpOw0KPj4+Pj4gKw0K Pj4+Pj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2QuZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxfSEFT X0RFVk5PREU7DQo+Pj4+PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkuZnVuY3Rpb24g PSBNRURJQV9FTlRfRl9WSURfSUZfQlJJREdFOw0KPj4+Pj4gKyAgICAgY3NpMmRjLT5wYWRzW0NT STJEQ19QQURfU0lOS10uZmxhZ3MgPSBNRURJQV9QQURfRkxfU0lOSzsNCj4+Pj4+ICsgICAgIGNz aTJkYy0+cGFkc1tDU0kyRENfUEFEX1NPVVJDRV0uZmxhZ3MgPSBNRURJQV9QQURfRkxfU09VUkNF Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgmY3Np MmRjLT5jc2kyZGNfc2QuZW50aXR5LCBDU0kyRENfUEFEU19OVU0sDQo+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+cGFkcyk7DQo+Pj4+PiArICAgICBpZiAo cmV0IDwgMCkgew0KPj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIm1lZGlhIGVudGl0 eSBpbml0IGZhaWxlZFxuIik7DQo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2Jl X2VudGl0eV9lcnI7DQo+Pj4+PiArICAgICB9DQo+Pj4+PiArDQo+Pj4+PiArICAgICB2NGwyX3Nl dF9zdWJkZXZkYXRhKCZjc2kyZGMtPmNzaTJkY19zZCwgcGRldik7DQo+Pj4+PiArDQo+Pj4+PiAr ICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCAmY3NpMmRjLT5jc2kyZGNfc2QpOw0KPj4+ Pj4gKw0KPj4+Pj4gKyAgICAgcmV0ID0gY3NpMmRjX29mX3BhcnNlKGNzaTJkYywgZGV2LT5vZl9u b2RlKTsNCj4+Pj4+ICsgICAgIGlmIChyZXQpDQo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gY3Np MmRjX3Byb2JlX2VudGl0eV9lcnI7DQo+Pj4+PiArDQo+Pj4+PiArICAgICByZXQgPSBjc2kyZGNf Zm9ybWF0c19pbml0KGNzaTJkYyk7DQo+Pj4+PiArICAgICBpZiAocmV0KQ0KPj4+Pj4gKyAgICAg ICAgICAgICBnb3RvIGNzaTJkY19wcm9iZV9lcnJvcjsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHJl dCA9IHY0bDJfYXN5bmNfcmVnaXN0ZXJfc3ViZGV2KCZjc2kyZGMtPmNzaTJkY19zZCk7DQo+Pj4+ PiArICAgICBpZiAocmV0KQ0KPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19wcm9iZV9l cnJvcjsNCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHByX2luZm8oIk1pY3JvY2hpcCBDU0kyREMgdmVy c2lvbiAleFxuIiwNCj4+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjX3JlYWRsKGNzaTJkYywgQ1NJ MkRDX1ZFUlNJT04pKTsNCj4+Pj4NCj4+Pj4gZGV2X2luZm8oKSwgcGxlYXNlLiBPciBqdXN0IGRl dl9kYmcoKS4NCj4+Pj4NCj4+Pj4+ICsNCj4+Pj4+ICsgICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2 ZShkZXYpOw0KPj4+Pj4gKyAgICAgcG1fcnVudGltZV9lbmFibGUoZGV2KTsNCj4+Pj4+ICsgICAg IHBtX3JlcXVlc3RfaWRsZShkZXYpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+ Pj4+PiArDQo+Pj4+PiArY3NpMmRjX3Byb2JlX2Vycm9yOg0KPj4+Pj4gKyAgICAgdjRsMl9hc3lu Y191bnJlZ2lzdGVyX3N1YmRldigmY3NpMmRjLT5jc2kyZGNfc2QpOw0KPj4+Pj4gKyAgICAgY3Np MmRjX2NsZWFudXBfbm90aWZpZXIoY3NpMmRjKTsNCj4+Pj4+ICsNCj4+Pj4+ICtjc2kyZGNfcHJv YmVfZW50aXR5X2VycjoNCj4+Pj4+ICsgICAgIG1lZGlhX2VudGl0eV9jbGVhbnVwKCZjc2kyZGMt PmNzaTJkY19zZC5lbnRpdHkpOw0KPj4+Pj4gKyAgICAgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcigm Y3NpMmRjLT52NGwyX2Rldik7DQo+Pj4+PiArY3NpMmRjX2Nsa19mYWlsOg0KPj4+Pj4gKyAgICAg Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNzaTJkYy0+cGNsayk7DQo+Pj4+PiArICAgICByZXR1cm4g cmV0Ow0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+Pj4+ICt7DQo+Pj4+PiArICAgICBzdHJ1 Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0K Pj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19j c2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+Pj4+PiArDQo+Pj4+PiArICAgICBwbV9ydW50aW1l X2Rpc2FibGUoJnBkZXYtPmRldik7DQo+Pj4+PiArICAgICBjc2kyZGNfY2xlYW51cF9ub3RpZmll cihjc2kyZGMpOw0KPj4+Pj4gKyAgICAgbWVkaWFfZW50aXR5X2NsZWFudXAoJmNzaTJkYy0+Y3Np MmRjX3NkLmVudGl0eSk7DQo+Pj4+PiArICAgICB2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZjc2ky ZGMtPnY0bDJfZGV2KTsNCj4+Pj4+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjc2kyZGMt PnBjbGspOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+PiArfQ0KPj4+Pj4g Kw0KPj4+Pj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY3NpMmRjX3J1bnRpbWVfc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+ Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY3NpMmRj X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+Pj4+ICt7DQo+Pj4+PiArICAg ICByZXR1cm4gMDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBkZXZfcG1fb3BzIGNzaTJkY19kZXZfcG1fb3BzID0gew0KPj4+Pj4gKyAgICAgU0VUX1JVTlRJ TUVfUE1fT1BTKGNzaTJkY19ydW50aW1lX3N1c3BlbmQsIGNzaTJkY19ydW50aW1lX3Jlc3VtZSwg TlVMTCkNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGNzaTJkY19vZl9tYXRjaFtdID0gew0KPj4+Pj4gKyAgICAgeyAuY29tcGF0aWJs ZSA9ICJtaWNyb2NoaXAsc2FtYTdnNS1jc2kyZGMiIH0sDQo+Pj4+PiArICAgICB7IH0NCj4+Pj4+ ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNzaTJkY19vZl9t YXRjaCk7DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY3Np MmRjX2RyaXZlciA9IHsNCj4+Pj4+ICsgICAgIC5wcm9iZSAgPSBjc2kyZGNfcHJvYmUsDQo+Pj4+ PiArICAgICAucmVtb3ZlID0gY3NpMmRjX3JlbW92ZSwNCj4+Pj4+ICsgICAgIC5kcml2ZXIgPSB7 DQo+Pj4+PiArICAgICAgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJtaWNyb2NoaXAtY3NpMmRj IiwNCj4+Pj4+ICsgICAgICAgICAgICAgLnBtICAgICAgICAgICAgID0gJmNzaTJkY19kZXZfcG1f b3BzLA0KPj4+Pj4gKyAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIo Y3NpMmRjX29mX21hdGNoKSwNCj4+Pj4+ICsgICAgIH0sDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+ Pj4+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNzaTJkY19kcml2ZXIpOw0KPj4+Pj4gKw0KPj4+ Pj4gK01PRFVMRV9BVVRIT1IoIkV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWljcm9jaGlw LmNvbT4iKTsNCj4+Pj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1pY3JvY2hpcCBDU0kyIERlbXV4 IENvbnRyb2xsZXIgZHJpdmVyIik7DQo+Pj4+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0K Pj4+Pj4gK01PRFVMRV9TVVBQT1JURURfREVWSUNFKCJ2aWRlbyIpOw0KPj4+Pg0KPj4+PiBIbW0u IFRoaXMgbGluZSBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmljLiBJJ2QganVzdCBkcm9wIGl0Lg0K Pj4+Pg0KPj4+PiAtLQ0KPj4+PiBLaW5kIHJlZ2FyZHMsDQo+Pj4+DQo+Pj4+IFNha2FyaSBBaWx1 cw0KPj4+Pg0KPj4+DQo+Pg0KPj4gLS0NCj4+IFJlZ2FyZHMsDQo+Pg0KPj4gU2FrYXJpIEFpbHVz DQo+Pg0KPiANCg0K