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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FBE3C433FE for ; Mon, 6 Dec 2021 11:42:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242653AbhLFLqB (ORCPT ); Mon, 6 Dec 2021 06:46:01 -0500 Received: from esa.microchip.iphmx.com ([68.232.154.123]:64627 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237397AbhLFLp7 (ORCPT ); Mon, 6 Dec 2021 06:45:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1638790950; x=1670326950; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=IOf19FzUOL9Q5zDXR0zky9t6xpfkSjEO1gfXr4U9NjI=; b=OaRkpSkwrYLtiENPaJHbzlKMPJ44gRSDpgDOwrasXdapVCLWP5TtMw9V /6M726d4VtD48qVhzs+QzH5pMo0owWAMpPkP1ewgXkHPQHTu1I0GFI0xw jvCHD9S6s7IXkBqbyBXY7WGuZlcpLLA1EoMalecfRn4gcMUJeZyhtwRFX 2S7BScTDh3KhsttR+4bi4V0yy7uTK9nHEOUrXHBYPGRmCUJWvRrMVdrqI FkBWfSPUDRRF2mZU/Gocx0+lPYV1dvP+wqAq5cjoZdpKu1j3bDIGpyj2J mQTPsuie9GA4XHYdyPSnOOeO2wL9Vt9CzBHaR+VHNKhYDDCOzsq7ll9e4 A==; IronPort-SDR: XS8cfjV7K0BwPbpovaRlnc/KA3qNyYnW5CB3jquuphJYTmRkVx+9V1K6NxNOx+KAXbelswREQZ hXOEhXSxiifQ7Sz97xFe+QYAXiVXT8nrhBJvEppf59w5KHt+d6E1W0hWE0S8eu5hYafCZmoitn fkXZ4B8O4zxPRqcwFZP46eT1tFG2wUNP8C+ULCo9A0DorNJ0MYjAzR+2Y1AC0ngQ5lbQIIBHon TXGV0EMTkzk9ozwCtkXj2BNNmkdZT2o7hrFkFaif+olyH+sxMF/+6VhIKyoKQ4BZ5JwPtAbw2H nFIxuzYYiamenWY+P4UP5E1U X-IronPort-AV: E=Sophos;i="5.87,291,1631602800"; d="scan'208";a="138793154" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 06 Dec 2021 04:42:28 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Mon, 6 Dec 2021 04:42:28 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14 via Frontend Transport; Mon, 6 Dec 2021 04:42:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ftpm4vO5vTANmpS5frrHATr4rBVAd9+AwQmzVS7pi+BvmaohRveuJPDj1Zk0eMoOdZhhi6AhpwQKFh6GiMWMc6E89MHomtLdXQlB9ODPYMAsVfGw+f+1t1kg/EBF3o9S+K0D8vbZBO1uYSVDLejdPkByjO6yKGNmG3XVTpznE4yx1uKWcGu1lo0QHxwXS4YDrUTU6s0UbnS45vTU9f58+chu7NmXu6co5gpB1KaEt5BbdTooJSj3zRtLGARSBpCr3JvBrqsv64v+x9X1kScKIk3g3167hZe45ErBmB7hnfhq7iDa10h7wp8KVuAm+HJRhOdzrItpuhz0ITKVqkKXZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IOf19FzUOL9Q5zDXR0zky9t6xpfkSjEO1gfXr4U9NjI=; b=BOwrrsIsx3B4Q8u/8ei2dgdpU7b7JEPvgUCJOJ3r7AJYeKjOo3TRyN3pgF0EBrEgenz9U6fgZaacEkgazrLhmFhJSKS73u8CK9RGdjl8h5t4lmBW8M2kh9twGUBm/5oeaWxyPXtbQIVk4hPENf+lSzfuNl2rE9wSKxlBJdp4gAcdvCb/ugcAwqkBGnpYr/h+BsEtXN0v+U+8hgtt59fG/KiPchFqNdswZy1ETH0Mk3FxfDGYdRhATKs9I3pvZTX00ysWP9RDpcW/FRyrG3R1O4puVILut+0a62Z6Sd6TSkoyXpScSAB92vOjbORw3FMa+4ucQRYmzzMYJlktlWPfxg== 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=IOf19FzUOL9Q5zDXR0zky9t6xpfkSjEO1gfXr4U9NjI=; b=S3xCMyCBaw0w0o7Bu5Hg+9FKa/Ua9Ymc59LLhw+FMdSiaMTYFQ7J4SU7ctcwpGt75gpv94piT74SN/ndAJMQg7JYCSiM3lJjPct+oz9ts5XPmRVGHGmDM3lC9a4DV9ik8mmHV2N4vgNCzXc3idN4odynDF/tcmRxPo9EU6/qnDw= Received: from PH0PR11MB4920.namprd11.prod.outlook.com (2603:10b6:510:41::22) by PH7PR11MB5818.namprd11.prod.outlook.com (2603:10b6:510:132::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.16; Mon, 6 Dec 2021 11:42:26 +0000 Received: from PH0PR11MB4920.namprd11.prod.outlook.com ([fe80::1433:9dcf:4912:b8f]) by PH0PR11MB4920.namprd11.prod.outlook.com ([fe80::1433:9dcf:4912:b8f%7]) with mapi id 15.20.4755.021; Mon, 6 Dec 2021 11:42:26 +0000 From: To: CC: , , , , , , Subject: Re: [PATCH v2 03/25] media: atmel: introduce microchip csi2dc driver Thread-Topic: [PATCH v2 03/25] media: atmel: introduce microchip csi2dc driver Thread-Index: AQHX19FOge8HD4Ymu0y44q0z2b5AxKwlbt8AgAAOKgA= Date: Mon, 6 Dec 2021 11:42:25 +0000 Message-ID: <1fca04a4-ab5c-15cc-61ab-829d39a63ec8@microchip.com> References: <20211112142509.2230884-1-eugen.hristev@microchip.com> <20211112142509.2230884-4-eugen.hristev@microchip.com> <20211206105142.chmrks6sueohw7sx@uno.localdomain> In-Reply-To: <20211206105142.chmrks6sueohw7sx@uno.localdomain> 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: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 983e57fa-f7b4-4edd-ecb7-08d9b8ad79b6 x-ms-traffictypediagnostic: PH7PR11MB5818: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3968; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gcR8/YgG9aCZ10T+6oK7iRHHE1QoXLKeEz+wc27eTiF419Nm5esyeB3ZHHNBWGPMDxWDYJUdZGPA0LbtIg5xkWzPz6v/6k11XhXoDB/XHAMUfWKySFqJQ5ySFEbQzsHsAp5iuF8PJhuxrzv2iTOCKd1VlYJ3XmMnG2f5JkdERJ2UW2VsXPl9+SpPmqzkUDJSQ5leQEBXqkhBbxCsYPhmRo5vIdBH9CBjHib/tBO5Nc9zN+oY4BN/h7fsRv09GQFk3wi3Wz/wkIi2AIvsjvsai91HgfX0OTE6bXutVxaFoPOrYHLy2h7c5K2e6LA6i7BSDS3x3mgsE3yEAxr04Iwk7rFccdBXiFKD2jPXew+CMq0utADaP2yUoLbVd/GRD+9LhdVO+zI88zFZ61eL4SrwKxnYt5ZBaX40Cgcx4fWDohz83cNMU1aaijZIFxQNxetJ2uzzSQmuwDfCqpXgsL4J32TjPuey5KB9M9L5NquBrXVLEHYbPRBuK5T7M+U/2ETnzaUTAZxXO6+q6iLZsCyvuBC02F4szsCJ9+EF21fQccbIjQRNTPEG9Qjm2i5Fy2S/m7qPuShqhJvUGLMJnCC2+BsTY4r3DbSlNxE7F9R+fOak6RolU9qcjYyJolxPOMOF70dgmhRHUmUW/Q1HtVgtKM4BUVNd8l9XQRUm23CVhMW1vsx7TizFH8CdbxYhnY/ZIOUYZ7ePdFWsSzjgR8o25CM7J7C4Y/gYNpDEHKHzQP2rOk+7BZlGDSYMAx6eLcU9ydETjjgArkRtSXgrTHOOvLDUgKnSVzgxtivcab71LZYeR4A0jzxJoslwehg02vyGNDh2jZKXfcY4dQ3ui7H6+CvprWo8i3LLkeqQiZGrCA4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4920.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(2616005)(4326008)(6512007)(38100700002)(30864003)(122000001)(6506007)(86362001)(316002)(54906003)(6486002)(38070700005)(31696002)(508600001)(2906002)(64756008)(66476007)(107886003)(91956017)(83380400001)(71200400001)(186003)(26005)(8936002)(5660300002)(6916009)(76116006)(36756003)(66946007)(53546011)(66556008)(66446008)(31686004)(966005)(8676002)(45980500001)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WE80V3VNaUY3cm9xTURQak1COFYrMGZ6NVJSdGI5UFZpSTJ4a01TMVdoVU5O?= =?utf-8?B?dWt4ZzVzb3dQT0tpQ01ZeHVvdTZ6Uk9OSmw0VXE0ZEk3cjU5blMzVkRrOU5M?= =?utf-8?B?YzQyUjBGZjBwSWkwbG1zSnVZVEVmS0lpZXhlYnAySE9yLyt1UjY5MGJYc1Qx?= =?utf-8?B?b3ZhOWhmWThEN3VGZ05sR2FBZkJDaWVZU2plVHRVd1pQZU0ycHlmZW9rWG00?= =?utf-8?B?R2lWRXc5Nk5icGVIV0FHeTlYVGpGR1JuNWpIOXFXNElRZWZCeU82UXQrY0Nh?= =?utf-8?B?MVVBd1hTV3NhbkxFQW55WnJzUjh4ay9VUTAzY0RnUThwSDZLV1pvdHBwZ2dw?= =?utf-8?B?d1duUFpESmYrY0lYSmJVeGl0V1BmbHFMdlVQUnFGQU9hNURtMVNqMkQ2b3Uy?= =?utf-8?B?SDZuZ3kxb05IQkNuL2FETExJRGlweHNnMzM2SG5sdUo1MWZONUNVckRSUkky?= =?utf-8?B?ZmVwYm14UTAwdG1TZ0p0bW9RMGsyNnpEcHhMQWwvTnFaQnRpK3FpdHJjb1U2?= =?utf-8?B?T2Z4OGlROWFSY3I0dG5PQ040ZFh3RS95bytQUWJNaWFiNVllcmRtcFJGdzlH?= =?utf-8?B?NVVqR0ovTFI4ajRYSGpMMFBrczZPcnM0b3NtbmJOcWJWYy9TVWpiZndXb3c3?= =?utf-8?B?NlZXTkc5VzUxSXd3QklnTGJueHphVC9lU0RUd0NLNXUrQmxneWpNYmc2amlL?= =?utf-8?B?RjF4dTdKajFCOFlZVXJlc2U0NGV1R2lVRWxxem5lenVHdmNVU1FDZnRPOVRL?= =?utf-8?B?dFJTZkRjUm1HanNGVkxtVVZZMmR1SmREV1NVOG9tUENuTlJ3NTh5RVBiUTcx?= =?utf-8?B?MkVadlFFUGxla0tGNFVMbFpIVEVQaEx5WHFFRXNSS01QdmJnejRSSDlydFMx?= =?utf-8?B?WXpJeHlUeWltZGdJUU1iaXhZcFl1UktmWE1OMTlEYnF4bWF5Ymo5S2E1ZTVs?= =?utf-8?B?czZ1cWZVY3o4SEQvcGxKK01FTXRVK2xSM3I0MzFpVXJHTkMrb1NXSThxeGxG?= =?utf-8?B?NHk0bGZVVlBMRnQ1VStSZHVFRnhQY2hycXo2a2tRcWRGVnoyNGdsbnlZVEJ4?= =?utf-8?B?L0JPMVo0NTVpQjRMRmhTd044eHNXL1VGQ2d0UStEWVdlaWVEMDlhTGR5YnJB?= =?utf-8?B?aEJSczJlTDlKcFhOT2tLRVpxN3g5d0ZEZm5wSjFhcG0wTC9LcVdsUHd4c25T?= =?utf-8?B?QW5lM3VPSmNhZjF4RUlUWVhkVzlJY2phTWgzQjdTemZneEFQMFYzSVhnNE5u?= =?utf-8?B?eVhzSkUyQS95azkzSUZFMDVPR2FkWkVuWnAwbE9oZVF0QUs3MDJhTkk0NWd6?= =?utf-8?B?MWw0MTU0RnhmVFpmaTlocjVRZTB2WVRhUjlTc0FSeUQ4NHZ4c1paR21heUhZ?= =?utf-8?B?MHlGYjl1RmM4MlgrWkIvZ2doSDVIZC9WLzIwVHdKSi9ScVBSOUphZ0xhVElo?= =?utf-8?B?WVR0SDFGWW51Y0VtcXBFQ3R0U1BMUCtkQlJWNDFXRlNGdG41bTQ0ZWU3dSt6?= =?utf-8?B?bFNHYzdCSFhxZyt5WHcrK3RtSGpuRnpqUVNDT3ozTEY0bFpYdExmN2V0WTdG?= =?utf-8?B?MzVydzZpL1NRYWtjZUJrZ2w5OGxOaE5waWVxU0YzcXN4TE9nbWRPTElEVElX?= =?utf-8?B?SThseS82YW0yNzBnNDF5MHNyOEo5NVlVNnFIa09FcitXbnNGeUxQeVp6Q2lQ?= =?utf-8?B?SGdhenVqWVdFWFpSRkYyMG5NcE9kVEUyaTN1ZzV1eHExZFdMQTJ6ekFuQ0g0?= =?utf-8?B?Nll4UHhCVFNFWlJpNTdPTHJ4TlJzTGg2VGs2bGVGc0NleG5zZlpEQU1wQjBl?= =?utf-8?B?MGlFenZPVHc2ZDdadzlMQm5HeGpBYlpIcDE1Rzhodi96aUJTNVA1ZTNNaEty?= =?utf-8?B?MDE1eXBFQmJFQVpIN0F5cUFxMmFuSkdXZTU3TGxybmxCeXVYd1hnTituNE1H?= =?utf-8?B?ckJEdlJSaUV2Sys4a0JPTDhLOElYb3pnVWNiaEpMU1A1K1YxaEN6V2JSOW9H?= =?utf-8?B?UkxpaU9Cb0FaekErV2ZSb21SSkROT1o3dWt0d0ZrNzgwR25telhTMEZQam0r?= =?utf-8?B?Sy81L1ZEb2R2MG9DYlFkSG9kVTA3bXY0UTZqNUR6QytwS0tOVWZiWlB3S2JB?= =?utf-8?B?VnFjR3lQUEowQ1VWTHlBRGROL3Q3bTU3Uk9lMDIxM2RORWYzNnNMWXZLRXI1?= =?utf-8?B?YkhyMVBPUkZQNHJLUkFCY1JYd3RzZ200TUY0dFpyeEYwOHZhYzkrZm0vOEdI?= =?utf-8?B?TTBaSVhMYmtpR3NIbW5udTFUOU1BPT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: <7CBB6230C16BD84BADFD4487CBA849B9@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4920.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 983e57fa-f7b4-4edd-ecb7-08d9b8ad79b6 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Dec 2021 11:42:25.9405 (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: qlyN20xEeyZ0trRxyG5xd2+WYwla7oMbSfawsuRKsjCHzAryfGBcGJf+y7nwnCUH9/csxMATXWjedzSZ3VvuiRtTcP0WT+skENBDszr+1O0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB5818 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTIvNi8yMSAxMjo1MSBQTSwgSmFjb3BvIE1vbmRpIHdyb3RlOg0KPiBIZWxsbyBFdWdlbg0K PiANCj4gICAgICB0aGFua3MgZm9yIGFkZHJlc3NpbmcgYWxsIG15IHByZXZpb3VzIGNvbW1lbnRz LCBqdXN0IGEgZmV3IG1vcmUNCj4gICAgICB0aGluZ3MgYW5kIHRoZSBkcml2ZXIgbG9va3MgZ29v ZCB0byBtZQ0KDQpUaGFua3MgZm9yIHJldmlld2luZy4gSSB0cmllZCBteSBiZXN0IHRvIGFjY29t b2RhdGUgeW91ciBzdWdnZXN0aW9ucy4NCj4gDQo+IE9uIEZyaSwgTm92IDEyLCAyMDIxIGF0IDA0 OjI0OjQ3UE0gKzAyMDAsIEV1Z2VuIEhyaXN0ZXYgd3JvdGU6DQo+PiBNaWNyb2NoaXAgQ1NJMkRD IChDU0kyIERlbXVsdGlwbGV4ZXIgQ29udHJvbGxlcikgaXMgYSBtaXNjIGJyaWRnZSBkZXZpY2UN Cj4+IHRoYXQgY29udmVydHMgYSBieXRlIHN0cmVhbSBpbiBJREkgU3lub3BzeXMgZm9ybWF0IChj b21pbmcgZnJvbSBhIENTSTJIT1NUKQ0KPj4gdG8gYSBwaXhlbCBzdHJlYW0gdGhhdCBjYW4gYmUg Y2FwdHVyZWQgYnkgYSBzZW5zb3IgY29udHJvbGxlci4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBF dWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5jb20+DQo+PiAtLS0NCj4+IENo YW5nZXMgaW4gdjI6DQo+PiAtIGltcGxlbWVudCB0cnkgZm9ybWF0cw0KPj4gLSBhZGRlZCBwYXJh bGxlbCBtb2RlDQo+PiAtIG1vdmVkIHRvIGZ3bGluayBlbmRwb2ludHMNCj4+IC0gbWFueSBvdGhl ciBtaW5vciBjb3JyZWN0aW9ucyBmcm9tIEphY29wbydzIHJldmlldw0KPj4NCj4+IENoYW5nZXMg aW4gdGhpcyByZXZpc2lvbjoNCj4+IC0gYWRkcmVzc2VkIGNvbW1lbnRzIGJ5IEphY29wbyBhbmQg TGF1cmVudCBhcyBpbiB0aGlzIHRocmVhZDoNCj4+IGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xp c3RzL2xpbnV4LW1lZGlhL21zZzE4MTA0NC5odG1sDQo+Pg0KPj4gUHJldmlvdXMgY2hhbmdlIGxv ZyA6DQo+PiBDaGFuZ2VzIGluIHY1Og0KPj4gLSBvbmx5IGluIGJpbmRpbmdzDQo+Pg0KPj4gQ2hh bmdlcyBpbiB2NDoNCj4+IC0gbm93IHVzaW5nIGdldF9tYnVzX2NvbmZpZyBvcHMgdG8gZ2V0IGRh dGEgZnJvbSB0aGUgc3ViZGV2aWNlLCBsaWtlIHRoZQ0KPj4gdmlydHVhbCBjaGFubmVsIGlkLCBh bmQgdGhlIGNsb2NrIHR5cGUuDQo+PiAtIG5vdyBoYXZpbmcgcG9zc2liaWxpdHkgdG8gc2VsZWN0 IGFueSBvZiB0aGUgUkFXMTAgZGF0YSBtb2Rlcw0KPj4gLSBhdCBjb21wbGV0aW9uIHRpbWUsIHNl bGVjdCB3aGljaCBmb3JtYXRzIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgc3ViZGV2aWNlLA0K Pj4gYW5kIG1vdmUgdG8gdGhlIGR5bmFtaWMgbGlzdCBhY2NvcmRpbmdseQ0KPj4gLSBjaGFuZ2Vk IHRoZSBwaXBlbGluZSBpbnRlZ3JhdGlvbiwgZG8gbm90IGFkdmVydGlzZSBzdWJkZXYgcmVhZHkg YXQgcHJvYmUgdGltZS4NCj4+IHdhaXQgdW50aWwgY29tcGxldGlvbiBpcyBkb25lLCBhbmQgdGhl biBzdGFydCBhIHdvcmtxdWV1ZSB0aGF0IHdpbGwgcmVnaXN0ZXINCj4+IHRoaXMgZGV2aWNlIGFz IGEgc3ViZGV2aWNlIGZvciB0aGUgbmV4dCBlbGVtZW50IGluIHBpcGVsaW5lLg0KPj4gLSBtb3Zl ZCB0aGUgc19wb3dlciBjb2RlIGludG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24gY2FsbGVkIG5vdyBj c2kyZGNfcG93ZXINCj4+IHRoYXQgaXMgY2FsbGVkIHdpdGggQ09ORklHX1BNIGZ1bmN0aW9ucy4g VGhpcyBpcyBhbHNvIGNhbGxlZCBhdCBjb21wbGV0aW9uLA0KPj4gdG8gaGF2ZSB0aGUgZGV2aWNl IHJlYWR5IGluIGNhc2UgQ09ORklHX1BNIGlzIG5vdCBzZWxlY3RlZCBvbiB0aGUgcGxhdGZvcm0u DQo+PiAtIG1lcmdlZCB0cnlfZm10IGludG8gc2V0X2ZtdA0KPj4gLSBkcml2ZXIgY2xlYW51cCwg d3JhcHBlZCBsaW5lcyBvdmVyIDgwIGNoYXJhY3RlcnMNCj4+DQo+PiBDaGFuZ2VzIGluIHYyOg0K Pj4gLSBtb3ZlZCBkcml2ZXIgdG8gcGxhdGZvcm0vYXRtZWwNCj4+IC0gZml4ZWQgbWlub3IgdGhp bmdzIGFzIHBlciBTYWthcmkncyByZXZpZXcNCj4+IC0gc3RpbGwgc29tZSB0aGluZ3MgZnJvbSB2 MiByZXZpZXcgYXJlIG5vdCB5ZXQgYWRkcmVzc2VkLCB0byBiZSBmb2xsb3dlZCB1cA0KPj4NCj4+ DQo+PiAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAg MSArDQo+PiAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvS2NvbmZpZyAgICAgICAgICB8 ICAxNSArDQo+PiAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUgICAgICAg ICB8ICAgMSArDQo+PiAgIC4uLi9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRj LmMgICB8IDc5NyArKysrKysrKysrKysrKysrKysNCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCA4MTQg aW5zZXJ0aW9ucygrKQ0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRjLmMNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZp bGUNCj4+IGluZGV4IDgzMjM1NzI0MGU4OS4uYjE4ZTVmNzA0MTQ1IDEwMDY0NA0KPj4gLS0tIGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQ0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9NYWtlZmlsZQ0KPj4gQEAgLTY5LDYgKzY5LDcgQEAgb2JqLSQoQ09ORklHX1ZJREVP X1JDQVJfVklOKSAgICAgICAgICAgICAgICArPSByY2FyLXZpbi8NCj4+ICAgb2JqLSQoQ09ORklH X1ZJREVPX0FUTUVMX0lTQykgICAgICAgICAgICAgICAgKz0gYXRtZWwvDQo+PiAgIG9iai0kKENP TkZJR19WSURFT19BVE1FTF9JU0kpICAgICAgICAgICAgICAgICs9IGF0bWVsLw0KPj4gICBvYmot JChDT05GSUdfVklERU9fQVRNRUxfWElTQykgICAgICAgICAgICAgICArPSBhdG1lbC8NCj4+ICtv YmotJChDT05GSUdfVklERU9fTUlDUk9DSElQX0NTSTJEQykgKz0gYXRtZWwvDQo+Pg0KPj4gICBv YmotJChDT05GSUdfVklERU9fU1RNMzJfRENNSSkgICAgICAgICAgICAgICArPSBzdG0zMi8NCj4+ DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29uZmlnIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29uZmlnDQo+PiBpbmRleCBkZGEyZjI3ZGEz MTcuLmY4M2JlZTM3M2Q4MiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvS2NvbmZpZw0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9LY29u ZmlnDQo+PiBAQCAtNDAsMyArNDAsMTggQEAgY29uZmlnIFZJREVPX0FUTUVMX0lTSQ0KPj4gICAg ICAgIGhlbHANCj4+ICAgICAgICAgIFRoaXMgbW9kdWxlIG1ha2VzIHRoZSBBVE1FTCBJbWFnZSBT ZW5zb3IgSW50ZXJmYWNlIGF2YWlsYWJsZQ0KPj4gICAgICAgICAgYXMgYSB2NGwyIGRldmljZS4N Cj4+ICsNCj4+ICtjb25maWcgVklERU9fTUlDUk9DSElQX0NTSTJEQw0KPj4gKyAgICAgdHJpc3Rh dGUgIk1pY3JvY2hpcCBDU0kyIERlbXV4IENvbnRyb2xsZXIiDQo+PiArICAgICBkZXBlbmRzIG9u IFZJREVPX1Y0TDIgJiYgQ09NTU9OX0NMSyAmJiBPRg0KPj4gKyAgICAgZGVwZW5kcyBvbiBBUkNI X0FUOTEgfHwgQ09NUElMRV9URVNUDQo+PiArICAgICBzZWxlY3QgTUVESUFfQ09OVFJPTExFUg0K Pj4gKyAgICAgc2VsZWN0IFZJREVPX1Y0TDJfU1VCREVWX0FQSQ0KPj4gKyAgICAgc2VsZWN0IFY0 TDJfRldOT0RFDQo+PiArICAgICBoZWxwDQo+PiArICAgICAgIENTSTIgRGVtdXggQ29udHJvbGxl ciBkcml2ZXIuIENTSTJEQyBpcyBhIGhlbHBlciBjaGlwDQo+PiArICAgICAgIHRoYXQgY29udmVy dHMgSURJIGludGVyZmFjZSBieXRlIHN0cmVhbSB0byBhIHBhcmFsbGVsIHBpeGVsIHN0cmVhbS4N Cj4+ICsgICAgICAgSXQgc3VwcG9ydHMgdmFyaW91cyBSQVcgZm9ybWF0cyBhcyBpbnB1dC4NCj4+ ICsNCj4+ICsgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl IE0gaGVyZTogdGhlDQo+PiArICAgICAgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtaWNyb2NoaXAt Y3NpMmRjLg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvTWFr ZWZpbGUgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL01ha2VmaWxlDQo+PiBpbmRleCA0 NmQyNjRhYjc5NDguLjM5ZjBhN2ViYTcwMiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvTWFrZWZpbGUNCj4+IEBAIC02LDMgKzYsNCBAQCBvYmotJChDT05GSUdfVklERU9fQVRN RUxfSVNJKSArPSBhdG1lbC1pc2kubw0KPj4gICBvYmotJChDT05GSUdfVklERU9fQVRNRUxfSVND X0JBU0UpICs9IGF0bWVsLWlzYy1iYXNlLm8NCj4+ICAgb2JqLSQoQ09ORklHX1ZJREVPX0FUTUVM X0lTQykgKz0gYXRtZWwtaXNjLm8NCj4+ICAgb2JqLSQoQ09ORklHX1ZJREVPX0FUTUVMX1hJU0Mp ICs9IGF0bWVsLXhpc2Mubw0KPj4gK29iai0kKENPTkZJR19WSURFT19NSUNST0NISVBfQ1NJMkRD KSArPSBtaWNyb2NoaXAtY3NpMmRjLm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5k ZXggMDAwMDAwMDAwMDAwLi4yYjEwNmY2ZmQ1ZDANCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jDQo+PiBAQCAt MCwwICsxLDc5NyBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkNCj4+ICsvKg0KPj4gKyAqIE1pY3JvY2hpcCBDU0kyIERlbXV4IENvbnRyb2xsZXIgKENTSTJE QykgZHJpdmVyDQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWljcm9jaGlwIFRl Y2hub2xvZ3ksIEluYy4NCj4+ICsgKg0KPj4gKyAqIEF1dGhvcjogRXVnZW4gSHJpc3RldiA8ZXVn ZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPg0KPj4gKyAqDQo+PiArICovDQo+PiArDQo+PiArI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUu aD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29m X2dyYXBoLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPj4gKyNp bmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3ZpZGVvZGV2 Mi5oPg0KPj4gKw0KPj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWZ3bm9kZS5oPg0KPj4gKyNpbmNs dWRlIDxtZWRpYS92NGwyLXN1YmRldi5oPg0KPj4gKw0KPj4gKy8qIEdsb2JhbCBjb25maWd1cmF0 aW9uIHJlZ2lzdGVyICovDQo+PiArI2RlZmluZSBDU0kyRENfR0NGRyAgICAgICAgICAgICAgICAg IDB4MA0KPj4gKw0KPj4gKy8qIE1JUEkgc2Vuc29yIHBpeGVsIGNsb2NrIGlzIGZyZWUgcnVubmlu ZyAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfTUlQSUZSTiAgICAgICAgICBCSVQoMCkNCj4+ ICsvKiBHUElPIHBhcmFsbGVsIGludGVyZmFjZSBzZWxlY3Rpb24gKi8NCj4+ICsjZGVmaW5lIENT STJEQ19HQ0ZHX0dQSU9TRUwgICAgICAgICAgQklUKDEpDQo+PiArLyogT3V0cHV0IHdhdmVmb3Jt IGludGVyLWxpbmUgbWluaW11bSBkZWxheSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfSExD KHYpICAgICAgICAgICAoKHYpIDw8IDQpDQo+PiArI2RlZmluZSBDU0kyRENfR0NGR19ITENfTUFT SyAgICAgICAgIEdFTk1BU0soNywgNCkNCj4+ICsvKiBTQU1BN0c1IHJlcXVpcmVzIGEgSExDIGRl bGF5IG9mIDE1ICovDQo+PiArI2RlZmluZSBTQU1BN0c1X0hMQyAgICAgICAgICAgICAgICAgICgx NSkNCj4+ICsNCj4+ICsvKiBHbG9iYWwgY29udHJvbCByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUg Q1NJMkRDX0dDVExSICAgICAgICAgICAgICAgICAweDA0DQo+PiArI2RlZmluZSBDU0kyRENfR0NU TFJfU1dSU1QgICAgICAgICAgIEJJVCgwKQ0KPj4gKw0KPj4gKy8qIEdsb2JhbCBzdGF0dXMgcmVn aXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HUyAgICAgICAgICAgICAgICAgICAgMHgwOA0K Pj4gKw0KPj4gKy8qIFNTUCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovDQo+PiArI2RlZmlu ZSBDU0kyRENfU1NQSVMgICAgICAgICAgICAgICAgIDB4MjgNCj4+ICsvKiBQaXBlIHVwZGF0ZSBy ZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1BVICAgICAgICAgICAgICAgICAgICAweGMw DQo+PiArLyogVmlkZW8gcGlwZSBhdHRyaWJ1dGVzIHVwZGF0ZSAqLw0KPj4gKyNkZWZpbmUgQ1NJ MkRDX1BVX1ZQICAgICAgICAgICAgICAgICBCSVQoMCkNCj4+ICsNCj4+ICsvKiBQaXBlIHVwZGF0 ZSBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19QVVMgICAgICAgICAgICAg ICAgICAgMHhjNA0KPj4gKw0KPj4gKy8qIFZpZGVvIHBpcGVsaW5lIGVuYWJsZSByZWdpc3RlciAq Lw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQRSAgICAgICAgICAgICAgICAgICAweGY4DQo+PiArI2Rl ZmluZSBDU0kyRENfVlBFX0VOQUJMRSAgICAgICAgICAgIEJJVCgwKQ0KPj4gKw0KPj4gKy8qIFZp ZGVvIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJE Q19WUENGRyAgICAgICAgICAgICAgICAgMHhmYw0KPj4gKy8qIERhdGEgdHlwZSAqLw0KPj4gKyNk ZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RUKHYpICAgICAgICAgICAoKHYpIDw8IDApDQo+PiArI2RlZmlu ZSBDU0kyRENfVlBDRkdfRFRfTUFTSyAgICAgICAgIEdFTk1BU0soNSwgMCkNCj4+ICsvKiBWaXJ0 dWFsIGNoYW5uZWwgaWRlbnRpZmllciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX1ZDKHYp ICAgICAgICAgICAoKHYpIDw8IDYpDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfVkNfTUFTSyAg ICAgICAgIEdFTk1BU0soNywgNikNCj4+ICsvKiBEZWNvbXByZXNzaW9uIGVuYWJsZSAqLw0KPj4g KyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RFICAgICAgICAgICAgICAgICAgICAgIEJJVCg4KQ0KPj4g Ky8qIERlY29kZXIgbW9kZSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RNKHYpICAgICAg ICAgICAoKHYpIDw8IDkpDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRE1fREVDT0RFUjhUTzEy IDANCj4+ICsvKiBEZWNvZGVyIHByZWRpY3RvciAyIHNlbGVjdGlvbiAqLw0KPj4gKyNkZWZpbmUg Q1NJMkRDX1ZQQ0ZHX0RQMiAgICAgICAgICAgICBCSVQoMTIpDQo+PiArLyogUmVjb21tZW5kZWQg bWVtb3J5IHN0b3JhZ2UgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19STVMgICAgICAgICAg ICAgQklUKDEzKQ0KPj4gKy8qIFBvc3QgYWRqdXN0bWVudCAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRD X1ZQQ0ZHX1BBICAgICAgICAgICAgICAgICAgICAgIEJJVCgxNCkNCj4+ICsNCj4+ICsvKiBWaWRl byBwaXBlbGluZSBjb2x1bW4gcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENPTCAg ICAgICAgICAgICAgICAgMHgxMDANCj4+ICsvKiBDb2x1bW4gbnVtYmVyICovDQo+PiArI2RlZmlu ZSBDU0kyRENfVlBDT0xfQ09MKHYpICAgICAgICAgICgodikgPDwgMCkNCj4+ICsjZGVmaW5lIENT STJEQ19WUENPTF9DT0xfTUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDE1LCAwKQ0KPj4gKw0K Pj4gKy8qIFZpZGVvIHBpcGVsaW5lIHJvdyByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRD X1ZQUk9XICAgICAgICAgICAgICAgICAweDEwNA0KPj4gKy8qIFJvdyBudW1iZXIgKi8NCj4+ICsj ZGVmaW5lIENTSTJEQ19WUFJPV19ST1codikgICAgICAgICAgKCh2KSA8PCAwKQ0KPj4gKyNkZWZp bmUgQ1NJMkRDX1ZQUk9XX1JPV19NQVNLICAgICAgICAgICAgICAgIEdFTk1BU0soMTUsIDApDQo+ PiArDQo+PiArLyogVmVyc2lvbiByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZFUlNJ T04gICAgICAgICAgICAgICAgICAgICAgIDB4MWZjDQo+PiArDQo+PiArLyogcmVnaXN0ZXIgcmVh ZC93cml0ZSBoZWxwZXJzICovDQo+PiArI2RlZmluZSBjc2kyZGNfcmVhZGwoc3QsIHJlZykgICAg ICAgICAgICAgICAgcmVhZGxfcmVsYXhlZCgoc3QpLT5iYXNlICsgKHJlZykpDQo+PiArI2RlZmlu ZSBjc2kyZGNfd3JpdGVsKHN0LCByZWcsIHZhbCkgIHdyaXRlbF9yZWxheGVkKCh2YWwpLCBcDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdCktPmJhc2UgKyAocmVn KSkNCj4+ICsNCj4+ICsvKiBzdXBwb3J0ZWQgUkFXIGRhdGEgdHlwZXMgKi8NCj4+ICsjZGVmaW5l IENTSTJEQ19EVF9SQVc2ICAgICAgICAgICAgICAgICAgICAgICAweDI4DQo+PiArI2RlZmluZSBD U0kyRENfRFRfUkFXNyAgICAgICAgICAgICAgICAgICAgICAgMHgyOQ0KPj4gKyNkZWZpbmUgQ1NJ MkRDX0RUX1JBVzggICAgICAgICAgICAgICAgICAgICAgIDB4MmENCj4+ICsjZGVmaW5lIENTSTJE Q19EVF9SQVcxMCAgICAgICAgICAgICAgICAgICAgICAweDJiDQo+PiArI2RlZmluZSBDU0kyRENf RFRfUkFXMTIgICAgICAgICAgICAgICAgICAgICAgMHgyYw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RU X1JBVzE0ICAgICAgICAgICAgICAgICAgICAgIDB4MmQNCj4+ICsNCj4+ICsvKg0KPj4gKyAqIHN0 cnVjdCBjc2kyZGNfZm9ybWF0IC0gQ1NJMkRDIGZvcm1hdCB0eXBlIHN0cnVjdA0KPj4gKyAqIEBt YnVzX2NvZGU6ICAgICAgICAgICAgICAgTWVkaWEgYnVzIGNvZGUgZm9yIHRoZSBmb3JtYXQNCj4+ ICsgKiBAZHQ6ICAgICAgICAgICAgICAgICAgICAgIERhdGEgdHlwZSBjb25zdGFudCBmb3IgdGhp cyBmb3JtYXQNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCB7DQo+PiArICAgICB1 MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1idXNfY29kZTsNCj4+ICsgICAgIHUzMiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQ7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNzaTJkY19mb3JtYXQgY3NpMmRjX2Zvcm1hdHNbXSA9IHsNCj4+ICsgICAg IHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZN VF9TUkdHQjhfMVg4LA0KPj4gKyAgICAgICAgICAgICAuZHQgPSAgICAgICAgICAgICAgICAgICBD U0kyRENfRFRfUkFXOCwNCj4+ICsgICAgIH0sIHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29k ZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TQkdHUjhfMVg4LA0KPj4gKyAgICAgICAgICAg ICAuZHQgPSAgICAgICAgICAgICAgICAgICBDU0kyRENfRFRfUkFXOCwNCj4+ICsgICAgIH0sIHsN Cj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9T R1JCRzhfMVg4LA0KPj4gKyAgICAgICAgICAgICAuZHQgPSAgICAgICAgICAgICAgICAgICBDU0ky RENfRFRfUkFXOCwNCj4+ICsgICAgIH0sIHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9 ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TR0JSRzhfMVg4LA0KPj4gKyAgICAgICAgICAgICAu ZHQgPSAgICAgICAgICAgICAgICAgICBDU0kyRENfRFRfUkFXOCwNCj4+ICsgICAgIH0sIHsNCj4+ ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TUkdH QjEwXzFYMTAsDQo+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJE Q19EVF9SQVcxMCwNCj4+ICsgICAgIH0sIHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9 ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TQkdHUjEwXzFYMTAsDQo+PiArICAgICAgICAgICAg IC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+ICsgICAgIH0sIHsN Cj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9T R1JCRzEwXzFYMTAsDQo+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENT STJEQ19EVF9SQVcxMCwNCj4+ICsgICAgIH0sIHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29k ZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZNVF9TR0JSRzEwXzFYMTAsDQo+PiArICAgICAgICAg ICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+ICsgICAgIH0s IHsNCj4+ICsgICAgICAgICAgICAgLm1idXNfY29kZSA9ICAgICAgICAgICAgTUVESUFfQlVTX0ZN VF9ZVVlWOF8yWDgsDQo+IA0KPiBJcyB0aGlzIGludGVudGlvbmFsbHkgbm90IGFzc29jaWF0ZWQg d2l0aCBhIENTSS0yIERUIGNvZGUgPw0KDQpZZXMuIEl0IGlzIG5vdCBhIHJhdyBmb3JtYXQuDQpJ IGRvIG5vdCBoYXZlIGEgc2Vuc29yIHRoYXQgY291bGQgc3RyZWFtIFlVWVY4XzJYOCB3aXRoIENT SS0yIC4NCkkgdGVzdGVkIHRoaXMgbW9kZSB3aXRoIHBhcmFsbGVsIHNlbnNvciwgYW5kIGluIHRo aXMgY2FzZSwgQ1NJLTIgRFQgDQp2YWx1ZSBkb2VzIG5vdCBtYWtlIHNlbnNlIGFuZCBpdCdzIG5v dCB1c2VkLg0KVGhlIGlkZWEgd291bGQgYmUgdGhhdCB3aGVuIGFuZCBpZiBJIGdldCBteSBoYW5k cyBvbiBhIHNlbnNvciB0aGF0IGNvdWxkIA0KYWN0dWFsbHkgZG8gdGhpcyB3aXRoIENTSTIsIEkg d291bGQgdXBkYXRlIHRoZSBkcml2ZXIgaGVyZSAoaWYgaXQgd29ya3MuIA0KSSBhbSBub3Qgc3Vy ZSBpdCBhY3R1YWxseSBkb2VzIC4uLikNCj4gDQo+PiArICAgICB9LA0KPj4gK307DQo+PiArDQo+ PiArZW51bSBtaXBpX2NzaV9wYWRzIHsNCj4+ICsgICAgIENTSTJEQ19QQURfU0lOSyAgICAgICAg ICAgICAgICAgPSAwLA0KPj4gKyAgICAgQ1NJMkRDX1BBRF9TT1VSQ0UgICAgICAgICAgICAgICA9 IDEsDQo+PiArICAgICBDU0kyRENfUEFEU19OVU0gICAgICAgICAgICAgICAgID0gMiwNCj4+ICt9 Ow0KPj4gKw0KPj4gKy8qDQo+PiArICogc3RydWN0IGNzaTJkY19kZXZpY2UgLSBDU0kyREMgZGV2 aWNlIGRyaXZlciBkYXRhL2NvbmZpZyBzdHJ1Y3QNCj4+ICsgKiBAYmFzZTogICAgICAgICAgICBS ZWdpc3RlciBtYXAgYmFzZSBhZGRyZXNzDQo+PiArICogQGNzaTJkY19zZDogICAgICAgICAgICAg ICB2NGwyIHN1YmRldmljZSBmb3IgdGhlIGNzaTJkYyBkZXZpY2UNCj4+ICsgKiAgICAgICAgICAg ICAgICAgICBUaGlzIGlzIHRoZSBzdWJkZXZpY2UgdGhhdCB0aGUgY3NpMmRjIGRldmljZSBpdHNl bGYNCj4+ICsgKiAgICAgICAgICAgICAgICAgICByZWdpc3RlcnMgaW4gdjRsMiBzdWJzeXN0ZW0N Cj4+ICsgKiBAZGV2OiAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlIGZvciB0aGlzIGNzaTJkYyBk ZXZpY2UNCj4+ICsgKiBAcGNsazogICAgICAgICAgICBQZXJpcGhlcmFsIGNsb2NrIHJlZmVyZW5j ZQ0KPj4gKyAqICAgICAgICAgICAgICAgICAgIElucHV0IGNsb2NrIHRoYXQgY2xvY2tzIHRoZSBo YXJkd2FyZSBibG9jayBpbnRlcm5hbA0KPj4gKyAqICAgICAgICAgICAgICAgICAgIGxvZ2ljDQo+ PiArICogQHNjY2s6ICAgICAgICAgICAgU2Vuc29yIENvbnRyb2xsZXIgY2xvY2sgcmVmZXJlbmNl DQo+PiArICogICAgICAgICAgICAgICAgICAgSW5wdXQgY2xvY2sgdGhhdCBpcyB1c2VkIHRvIGdl bmVyYXRlIHRoZSBwaXhlbCBjbG9jaw0KPj4gKyAqIEBmb3JtYXQ6ICAgICAgICAgIEN1cnJlbnQg c2F2ZWQgZm9ybWF0IHVzZWQgaW4gZy9zIGZtdA0KPj4gKyAqIEBjdXJfZm10OiAgICAgICAgIEN1 cnJlbnQgc3RhdGUgZm9ybWF0DQo+PiArICogQHRyeV9mbXQ6ICAgICAgICAgVHJ5IGZvcm1hdCB0 aGF0IGlzIGJlaW5nIHRyaWVkDQo+PiArICogQHBhZHM6ICAgICAgICAgICAgTWVkaWEgZW50aXR5 IHBhZHMgZm9yIHRoZSBjc2kyZGMgc3ViZGV2aWNlDQo+PiArICogQGNsa19nYXRlZDogICAgICAg ICAgICAgICBXaGV0aGVyIHRoZSBjbG9jayBpcyBnYXRlZCBvciBmcmVlIHJ1bm5pbmcNCj4+ICsg KiBAdmlkZW9fcGlwZTogICAgICAgICAgICAgIFdoZXRoZXIgdmlkZW8gcGlwZWxpbmUgaXMgY29u ZmlndXJlZA0KPj4gKyAqIEBwYXJhbGxlbF9tb2RlOiAgIFRoZSB1bmRlcmx5aW5nIHN1YmRldmlj ZSBpcyBjb25uZWN0ZWQgb24gYSBwYXJhbGxlbCBidXMNCj4+ICsgKiBAdmM6ICAgICAgICAgICAg ICAgICAgICAgIEN1cnJlbnQgc2V0IHZpcnR1YWwgY2hhbm5lbA0KPj4gKyAqIEBub3RpZmllcjog ICAgICAgICAgICAgICAgQXN5bmMgbm90aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGJvdW5kIHRoZSB1 bmRlcmx5aW5nDQo+PiArICogICAgICAgICAgICAgICAgICAgc3ViZGV2aWNlIHRvIHRoZSBjc2ky ZGMgc3ViZGV2aWNlDQo+PiArICogQGlucHV0X3NkOiAgICAgICAgICAgICAgICBSZWZlcmVuY2Ug dG8gdGhlIHVuZGVybHlpbmcgc3ViZGV2aWNlIGJvdW5kIHRvIHRoZQ0KPj4gKyAqICAgICAgICAg ICAgICAgICAgIGNzaTJkYyBzdWJkZXZpY2UNCj4+ICsgKiBAcmVtb3RlX3BhZDogICAgICAgICAg ICAgIFBhZCBudW1iZXIgb2YgdGhlIHVuZGVybHlpbmcgc3ViZGV2aWNlIHRoYXQgaXMgbGlua2Vk DQo+PiArICogICAgICAgICAgICAgICAgICAgdG8gdGhlIGNzaTJkYyBzdWJkZXZpY2Ugc2luayBw YWQuDQo+PiArICovDQo+PiArc3RydWN0IGNzaTJkY19kZXZpY2Ugew0KPj4gKyAgICAgdm9pZCBf X2lvbWVtICAgICAgICAgICAgICAgICAgICAqYmFzZTsNCj4+ICsgICAgIHN0cnVjdCB2NGwyX3N1 YmRldiAgICAgICAgICAgICAgY3NpMmRjX3NkOw0KPj4gKyAgICAgc3RydWN0IGRldmljZSAgICAg ICAgICAgICAgICAgICAqZGV2Ow0KPj4gKyAgICAgc3RydWN0IGNsayAgICAgICAgICAgICAgICAg ICAgICAqcGNsazsNCj4+ICsgICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnNj Y2s7DQo+PiArDQo+PiArICAgICBzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICAgICAgICBmb3Jt YXQ7DQo+PiArDQo+PiArICAgICBjb25zdCBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAgICAgICpjdXJf Zm10Ow0KPj4gKyAgICAgY29uc3Qgc3RydWN0IGNzaTJkY19mb3JtYXQgICAgICAqdHJ5X2ZtdDsN Cj4+ICsNCj4+ICsgICAgIHN0cnVjdCBtZWRpYV9wYWQgICAgICAgICAgICAgICAgcGFkc1tDU0ky RENfUEFEU19OVU1dOw0KPj4gKw0KPj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbGtfZ2F0ZWQ7DQo+PiArICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZpZGVvX3BpcGU7DQo+PiArICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh cmFsbGVsX21vZGU7DQo+PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZj Ow0KPj4gKw0KPj4gKyAgICAgc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgICAgICBub3RpZmll cjsNCj4+ICsNCj4+ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgKmlucHV0 X3NkOw0KPj4gKw0KPj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1v dGVfcGFkOw0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NpMmRjX2Rl dmljZSAqDQo+PiArY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2Uoc3RydWN0IHY0bDJfc3ViZGV2 ICpjc2kyZGNfc2QpDQo+PiArew0KPj4gKyAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihjc2kyZGNf c2QsIHN0cnVjdCBjc2kyZGNfZGV2aWNlLCBjc2kyZGNfc2QpOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgaW50IGNzaTJkY19lbnVtX21idXNfY29kZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJk Y19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJk ZXZfc3RhdGUgKnNkX3N0YXRlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB2NGwyX3N1YmRldl9tYnVzX2NvZGVfZW51bSAqY29kZSkNCj4+ICt7DQo+PiArICAgICBp ZiAoY29kZS0+aW5kZXggPj0gQVJSQVlfU0laRShjc2kyZGNfZm9ybWF0cykpDQo+PiArICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKyAgICAgY29kZS0+Y29kZSA9IGNzaTJk Y19mb3JtYXRzW2NvZGUtPmluZGV4XS5tYnVzX2NvZGU7DQo+PiArDQo+PiArICAgICByZXR1cm4g MDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfZ2V0X2ZtdChzdHJ1Y3QgdjRs Ml9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmb3JtYXQpDQo+PiArew0KPj4gKyAgICAgc3RydWN0 IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJk Y19zZCk7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICp2NGwyX3RyeV9mbXQ7 DQo+PiArDQo+PiArICAgICBpZiAoZm9ybWF0LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRf VFJZKSB7DQo+PiArICAgICAgICAgICAgIHY0bDJfdHJ5X2ZtdCA9IHY0bDJfc3ViZGV2X2dldF90 cnlfZm9ybWF0KGNzaTJkY19zZCwgc2Rfc3RhdGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+cGFkKTsNCj4+ICsgICAg ICAgICAgICAgZm9ybWF0LT5mb3JtYXQgPSAqdjRsMl90cnlfZm10Ow0KPj4gKw0KPj4gKyAgICAg ICAgICAgICByZXR1cm4gMDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGZvcm1hdC0+Zm9y bWF0ID0gY3NpMmRjLT5mb3JtYXQ7DQo+PiArDQo+PiArICAgICByZXR1cm4gMDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNz aTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9z dGF0ZSAqc2Rfc3RhdGUsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9z dWJkZXZfZm9ybWF0ICpyZXFfZm10KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2 aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4g KyAgICAgY29uc3Qgc3RydWN0IGNzaTJkY19mb3JtYXQgKmZtdCwgKnRyeV9mbXQgPSBOVUxMOw0K Pj4gKyAgICAgc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqdjRsMl90cnlfZm10Ow0KPj4gKyAg ICAgdW5zaWduZWQgaW50IGk7DQo+PiArDQo+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShjc2kyZGNfZm9ybWF0cyk7ICBpKyspIHsNCj4+ICsgICAgICAgICAgICAgZm10ID0gJmNz aTJkY19mb3JtYXRzW2ldOw0KPj4gKyAgICAgICAgICAgICBpZiAocmVxX2ZtdC0+Zm9ybWF0LmNv ZGUgPT0gZm10LT5tYnVzX2NvZGUpDQo+PiArICAgICAgICAgICAgICAgICAgICAgdHJ5X2ZtdCA9 IGZtdDsNCj4+ICsgICAgICAgICAgICAgZm10Kys7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAg ICAvKiBpbiBjYXNlIHdlIGNvdWxkIG5vdCBmaW5kIHRoZSBkZXNpcmVkIGZvcm1hdCwgZGVmYXVs dCB0byBzb21ldGhpbmcgKi8NCj4+ICsgICAgIGlmICghdHJ5X2ZtdCkgew0KPj4gKyAgICAgICAg ICAgICB0cnlfZm10ID0gJmNzaTJkY19mb3JtYXRzWzBdOw0KPj4gKw0KPj4gKyAgICAgICAgICAg ICBkZXZfZGJnKGNzaTJkYy0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICJDU0kyREMg dW5zdXBwb3J0ZWQgZm9ybWF0IDB4JXgsIGRlZmF1bHRpbmcgdG8gMHgleFxuIiwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICByZXFfZm10LT5mb3JtYXQuY29kZSwgY3NpMmRjX2Zvcm1hdHNbMF0u bWJ1c19jb2RlKTsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHJlcV9mbXQtPmZvcm1hdC5j b2RlID0gdHJ5X2ZtdC0+bWJ1c19jb2RlOw0KPj4gKyAgICAgcmVxX2ZtdC0+Zm9ybWF0LmNvbG9y c3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfU1JHQjsNCj4+ICsgICAgIHJlcV9mbXQtPmZvcm1hdC5m aWVsZCA9IFY0TDJfRklFTERfTk9ORTsNCj4+ICsNCj4+ICsgICAgIGlmIChyZXFfZm10LT53aGlj aCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKSB7DQo+PiArICAgICAgICAgICAgIHY0bDJfdHJ5 X2ZtdCA9IHY0bDJfc3ViZGV2X2dldF90cnlfZm9ybWF0KGNzaTJkY19zZCwgc2Rfc3RhdGUsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlcV9mbXQtPnBhZCk7DQo+PiArICAgICAgICAgICAgICp2NGwyX3RyeV9mbXQgPSByZXFfZm10 LT5mb3JtYXQ7DQo+PiArICAgICAgICAgICAgIC8qIFRyeWluZyBvbiB0aGUgcGFkIHNpbmsgbWFr ZXMgdGhlIHNvdXJjZSBzaW5rIGNoYW5nZSB0b28gKi8NCj4+ICsgICAgICAgICAgICAgaWYgKHJl cV9mbXQtPnBhZCA9PSBDU0kyRENfUEFEX1NJTkspIHsNCj4gDQo+IHMvc291cmNlIHNpbmsvc291 cmNlIHBhZC8NCj4gDQo+PiArICAgICAgICAgICAgICAgICAgICAgdjRsMl90cnlfZm10ID0NCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY0bDJfc3ViZGV2X2dldF90cnlfZm9ybWF0 KGNzaTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNkX3N0YXRlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NJMkRDX1BBRF9TT1VSQ0UpOw0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICp2NGwyX3RyeV9mbXQgPSByZXFfZm10LT5mb3JtYXQ7DQo+IA0K PiBTaG91bGRuJ3QgdGhpcyBiZSB0aGUgc2FtZSBmb3IgdGhlIGFjdGl2ZSBmb3JtYXQgdGhlbiA/ IElmIHRoaXMgZGV2aWNlDQo+IG9wZXJhdGVzIGJ5IHRyYW5zcG9ydGluZyB0aGUgc2FtZSBleGFj dCBmb3JtYXQgZnJvbSB0aGUgc2luayB0byB0aGUNCj4gc291cmNlLCBzaG91bGRuJ3QgeW91IGRp c2FibGUgc2V0dGluZyBhIGZvcm1hdCBvbiB0aGUgc291cmNlLCBhbmQNCj4gYWx3YXlzIHByb3Bh Z2F0ZSB0byB0aGUgc2luayA/IEkgd291bGQgaGF2ZSBkb25lIHNvLCBidXQgbWF5YmUNCj4gU2Fr YXJpL0xhdXJlbnQgY291bGQgdGVsbCB5b3UgaWYgdGhhdCdzIGZpbmUuDQoNCkhtLiBJIHdpbGwg dHJ5LiBUbyBzZWUgaWYgaXQgd29ya3MgYW5kIHY0bDItY29tcGxpYW5jZSBpcyBoYXBweS4gKCBJ IGRpZCANCnRoaXMgcHJvcGFnYXRpb24gZm9yIHRyeSBmb3JtYXQgYmVjYXVzZSBpdCB3YXNuJ3Qg KQ0KDQo+IA0KPj4gKyAgICAgICAgICAgICB9DQo+PiArICAgICAgICAgICAgIC8qIGlmIHdlIGFy ZSBqdXN0IHRyeWluZywgd2UgYXJlIGRvbmUgKi8NCj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7 DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICAvKiBzYXZlIHRoZSBmb3JtYXQgZm9yIGxhdGVy IHJlcXVlc3RzICovDQo+PiArICAgICBjc2kyZGMtPmZvcm1hdCA9IHJlcV9mbXQtPmZvcm1hdDsN Cj4+ICsNCj4+ICsgICAgIC8qIHVwZGF0ZSBjb25maWcgKi8NCj4+ICsgICAgIGNzaTJkYy0+Y3Vy X2ZtdCA9IHRyeV9mbXQ7DQo+PiArDQo+PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAibmV3 IGZvcm1hdCBzZXQ6IDB4JXggQCVkeCVkXG4iLA0KPj4gKyAgICAgICAgICAgICBjc2kyZGMtPmZv cm1hdC5jb2RlLCBjc2kyZGMtPmZvcm1hdC53aWR0aCwNCj4+ICsgICAgICAgICAgICAgY3NpMmRj LT5mb3JtYXQuaGVpZ2h0KTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGNzaTJkY19wb3dlcihzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRj LCBpbnQgb24pDQo+PiArew0KPj4gKyAgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgICBp ZiAob24pIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNzaTJk Yy0+cGNsayk7DQo+PiArICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAg ICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBwY2xrOiVkXG4i LCByZXQpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICAg ICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KGNzaTJkYy0+c2Njayk7DQo+PiArICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBzY2Nr OiVkXG4iLCByZXQpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJl cGFyZShjc2kyZGMtPnBjbGspOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+PiArICAgICAgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgICAgICAgLyogaWYgcG93ZXJp bmcgdXAsIGRlYXNzZXJ0IHJlc2V0IGxpbmUgKi8NCj4+ICsgICAgICAgICAgICAgY3NpMmRjX3dy aXRlbChjc2kyZGMsIENTSTJEQ19HQ1RMUiwgQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+ICsgICAg IH0gZWxzZSB7DQo+PiArICAgICAgICAgICAgIC8qIGlmIHBvd2VyaW5nIGRvd24sIGFzc2VydCBy ZXNldCBsaW5lICovDQo+PiArICAgICAgICAgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0ky RENfR0NUTFIsIDApOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBh cmUoY3NpMmRjLT5zY2NrKTsNCj4+ICsgICAgICAgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGNzaTJkYy0+cGNsayk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gcmV0Ow0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19nZXRfbWJ1c19jb25maWcoc3RydWN0 IGNzaTJkY19kZXZpY2UgKmNzaTJkYykNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9tYnVz X2NvbmZpZyBtYnVzX2NvbmZpZyA9IHsgMCB9Ow0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ ICsgICAgIHJldCA9IHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBnZXRf bWJ1c19jb25maWcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+cmVt b3RlX3BhZCwgJm1idXNfY29uZmlnKTsNCj4+ICsgICAgIGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01E KSB7DQo+PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsDQo+PiArICAgICAgICAg ICAgICAgICAgICAgIm5vIHJlbW90ZSBtYnVzIGNvbmZpZ3VyYXRpb24gYXZhaWxhYmxlXG4iKTsN Cj4+ICsgICAgICAgICAgICAgZ290byBjc2kyZGNfZ2V0X21idXNfY29uZmlnX2RlZmF1bHRzOw0K Pj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICBk ZXZfZXJyKGNzaTJkYy0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8g Z2V0IHJlbW90ZSBtYnVzIGNvbmZpZ3VyYXRpb25cbiIpOw0KPj4gKyAgICAgICAgICAgICBnb3Rv IGNzaTJkY19nZXRfbWJ1c19jb25maWdfZGVmYXVsdHM7DQo+PiArICAgICB9DQo+PiArDQo+PiAr ICAgICBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzApDQo+ PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAwOw0KPj4gKyAgICAgZWxzZSBpZiAobWJ1c19j b25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzEpDQo+PiArICAgICAgICAgICAg IGNzaTJkYy0+dmMgPSAxOw0KPj4gKyAgICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBW NEwyX01CVVNfQ1NJMl9DSEFOTkVMXzIpDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAy Ow0KPj4gKyAgICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxhZ3MgJiBWNEwyX01CVVNfQ1NJMl9D SEFOTkVMXzMpDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAzOw0KPj4gKw0KPj4gKyAg ICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgInN1YmRldiBzZW5kaW5nIG9uIGNoYW5uZWwgJWRcbiIs IGNzaTJkYy0+dmMpOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5jbGtfZ2F0ZWQgPSBtYnVzX2Nv bmZpZy5mbGFncyAmDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX01CVVNf Q1NJMl9OT05DT05USU5VT1VTX0NMT0NLOw0KPj4gKw0KPj4gKyAgICAgZGV2X2RiZyhjc2kyZGMt PmRldiwgIm1idXNfY29uZmlnOiAlcyBjbG9ja1xuIiwNCj4+ICsgICAgICAgICAgICAgY3NpMmRj LT5jbGtfZ2F0ZWQgPyAiZ2F0ZWQiIDogImZyZWUgcnVubmluZyIpOw0KPj4gKw0KPj4gKyAgICAg cmV0dXJuIDA7DQo+PiArDQo+PiArY3NpMmRjX2dldF9tYnVzX2NvbmZpZ19kZWZhdWx0czoNCj4+ ICsgICAgIGNzaTJkYy0+dmMgPSAwOyAvKiBWaXJ0dWFsIElEIDAgYnkgZGVmYXVsdCAqLw0KPj4g Kw0KPj4gKyAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNzaTJk Y192cF91cGRhdGUoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYykNCj4+ICt7DQo+PiArICAg ICB1MzIgdnAsIGdjZmc7DQo+PiArDQo+PiArICAgICBpZiAoIWNzaTJkYy0+dmlkZW9fcGlwZSkg ew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAidmlkZW8gcGlwZWxpbmUg dW5hdmFpbGFibGVcbiIpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm47DQo+PiArICAgICB9DQo+ PiArDQo+PiArICAgICBpZiAoY3NpMmRjLT5wYXJhbGxlbF9tb2RlKSB7DQo+PiArICAgICAgICAg ICAgIC8qIEluIHBhcmFsbGVsIG1vZGUsIEdQSU8gcGFyYWxsZWwgaW50ZXJmYWNlIG11c3QgYmUg c2VsZWN0ZWQgKi8NCj4+ICsgICAgICAgICAgICAgZ2NmZyA9IGNzaTJkY19yZWFkbChjc2kyZGMs IENTSTJEQ19HQ0ZHKTsNCj4+ICsgICAgICAgICAgICAgZ2NmZyB8PSBDU0kyRENfR0NGR19HUElP U0VMOw0KPj4gKyAgICAgICAgICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dDRkcs IGdjZmcpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm47DQo+PiArICAgICB9DQo+PiArDQo+PiAr ICAgICAvKiBzZXJpYWwgdmlkZW8gcGlwZWxpbmUgKi8NCj4+ICsNCj4+ICsgICAgIGNzaTJkY193 cml0ZWwoY3NpMmRjLCBDU0kyRENfR0NGRywNCj4+ICsgICAgICAgICAgICAgICAgICAgKFNBTUE3 RzVfSExDICYgQ1NJMkRDX0dDRkdfSExDX01BU0spIHwNCj4+ICsgICAgICAgICAgICAgICAgICAg KGNzaTJkYy0+Y2xrX2dhdGVkID8gMCA6IENTSTJEQ19HQ0ZHX01JUElGUk4pKTsNCj4+ICsNCj4+ ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfVlBDT0wsDQo+PiArICAgICAgICAg ICAgICAgICAgIENTSTJEQ19WUENPTF9DT0woMHhmZmYpICYgQ1NJMkRDX1ZQQ09MX0NPTF9NQVNL KTsNCj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfVlBST1csDQo+PiArICAg ICAgICAgICAgICAgICAgIENTSTJEQ19WUFJPV19ST1coMHhmZmYpICYgQ1NJMkRDX1ZQUk9XX1JP V19NQVNLKTsNCj4+ICsNCj4+ICsgICAgIHZwID0gQ1NJMkRDX1ZQQ0ZHX0RUKGNzaTJkYy0+Y3Vy X2ZtdC0+ZHQpICYgQ1NJMkRDX1ZQQ0ZHX0RUX01BU0s7DQo+PiArICAgICB2cCB8PSBDU0kyRENf VlBDRkdfVkMoY3NpMmRjLT52YykgJiBDU0kyRENfVlBDRkdfVkNfTUFTSzsNCj4+ICsgICAgIHZw ICY9IH5DU0kyRENfVlBDRkdfREU7DQo+PiArICAgICB2cCB8PSBDU0kyRENfVlBDRkdfRE0oQ1NJ MkRDX1ZQQ0ZHX0RNX0RFQ09ERVI4VE8xMik7DQo+PiArICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZH X0RQMjsNCj4+ICsgICAgIHZwICY9IH5DU0kyRENfVlBDRkdfUk1TOw0KPj4gKyAgICAgdnAgfD0g Q1NJMkRDX1ZQQ0ZHX1BBOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENT STJEQ19WUENGRywgdnApOw0KPj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19W UEUsIENTSTJEQ19WUEVfRU5BQkxFKTsNCj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBD U0kyRENfUFUsIENTSTJEQ19QVV9WUCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3Np MmRjX3Nfc3RyZWFtKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLCBpbnQgZW5hYmxlKQ0K Pj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2Rf dG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ ICsgICAgIGlmIChlbmFibGUpIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gcG1fcnVudGltZV9y ZXN1bWVfYW5kX2dldChjc2kyZGMtPmRldik7DQo+PiArICAgICAgICAgICAgIGlmIChyZXQgPCAw KQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArDQo+PiArICAgICAg ICAgICAgIGNzaTJkY19nZXRfbWJ1c19jb25maWcoY3NpMmRjKTsNCj4+ICsNCj4+ICsgICAgICAg ICAgICAgY3NpMmRjX3ZwX3VwZGF0ZShjc2kyZGMpOw0KPj4gKw0KPj4gKyAgICAgICAgICAgICBy ZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCB2aWRlbywgc19zdHJlYW0s DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOw0KPj4gKyAg ICAgfQ0KPj4gKyAgICAgLyogc3RvcCBzdHJlYW1pbmcgc2NlbmFyaW8gKi8NCj4+ICsgICAgIHJl dCA9IHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgdmlkZW8sIHNfc3RyZWFtLCBm YWxzZSk7DQo+PiArDQo+PiArICAgICBwbV9ydW50aW1lX3B1dF9zeW5jKGNzaTJkYy0+ZGV2KTsN Cj4+ICsNCj4+ICsgICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg Y3NpMmRjX2luaXRfY2ZnKHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUpDQo+ PiArew0KPj4gKyAgICAgc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqdjRsMl90cnlfZm10ID0N Cj4+ICsgICAgICAgICAgICAgdjRsMl9zdWJkZXZfZ2V0X3RyeV9mb3JtYXQoY3NpMmRjX3NkLCBz ZF9zdGF0ZSwgMCk7DQo+PiArDQo+PiArICAgICB2NGwyX3RyeV9mbXQtPmhlaWdodCA9IDQ4MDsN Cj4+ICsgICAgIHY0bDJfdHJ5X2ZtdC0+d2lkdGggPSA2NDA7DQo+PiArICAgICB2NGwyX3RyeV9m bXQtPmNvZGUgPSBjc2kyZGNfZm9ybWF0c1swXS5tYnVzX2NvZGU7DQo+PiArICAgICB2NGwyX3Ry eV9mbXQtPmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfU1JHQjsNCj4+ICsgICAgIHY0bDJf dHJ5X2ZtdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+PiArICAgICB2NGwyX3RyeV9mbXQt PnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RFRkFVTFQ7DQo+PiArICAgICB2NGwyX3RyeV9m bXQtPnF1YW50aXphdGlvbiA9IFY0TDJfUVVBTlRJWkFUSU9OX0RFRkFVTFQ7DQo+PiArICAgICB2 NGwyX3RyeV9mbXQtPnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DX0RFRkFVTFQ7DQo+PiArDQo+ PiArICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2 NGwyX3N1YmRldl9wYWRfb3BzIGNzaTJkY19wYWRfb3BzID0gew0KPj4gKyAgICAgLmVudW1fbWJ1 c19jb2RlID0gY3NpMmRjX2VudW1fbWJ1c19jb2RlLA0KPj4gKyAgICAgLnNldF9mbXQgPSBjc2ky ZGNfc2V0X2ZtdCwNCj4+ICsgICAgIC5nZXRfZm10ID0gY3NpMmRjX2dldF9mbXQsDQo+PiArICAg ICAuaW5pdF9jZmcgPSBjc2kyZGNfaW5pdF9jZmcsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3ZpZGVvX29wcyBjc2kyZGNfdmlkZW9fb3BzID0gew0K Pj4gKyAgICAgLnNfc3RyZWFtID0gY3NpMmRjX3Nfc3RyZWFtLA0KPj4gK307DQo+PiArDQo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9vcHMgY3NpMmRjX3N1YmRldl9vcHMgPSB7 DQo+PiArICAgICAucGFkID0gJmNzaTJkY19wYWRfb3BzLA0KPj4gKyAgICAgLnZpZGVvID0gJmNz aTJkY192aWRlb19vcHMsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19hc3lu Y19ib3VuZChzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAqbm90aWZpZXIsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICphc2QpDQo+ PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNvbnRhaW5lcl9v Zihub3RpZmllciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSwgbm90aWZpZXIpOw0KPj4gKyAgICAgaW50IHBhZDsN Cj4+ICsgICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmlucHV0X3NkID0gc3Vi ZGV2Ow0KPj4gKw0KPj4gKyAgICAgcGFkID0gbWVkaWFfZW50aXR5X2dldF9md25vZGVfcGFkKCZz dWJkZXYtPmVudGl0eSwgYXNkLT5tYXRjaC5md25vZGUsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUVESUFfUEFEX0ZMX1NPVVJDRSk7DQo+PiArICAgICBpZiAo cGFkIDwgMCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiRmFpbGVk IHRvIGZpbmQgcGFkIGZvciAlc1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBzdWJkZXYt Pm5hbWUpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gcGFkOw0KPj4gKyAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgY3NpMmRjLT5yZW1vdGVfcGFkID0gcGFkOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0g bWVkaWFfY3JlYXRlX3BhZF9saW5rKCZjc2kyZGMtPmlucHV0X3NkLT5lbnRpdHksDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NpMmRjLT5yZW1vdGVfcGFkLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHks IDAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfTE5LX0ZMX0VO QUJMRUQpOw0KPj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNz aTJkYy0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHBh ZCBsaW5rOiAlcyB0byAlc1xuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPmlu cHV0X3NkLT5lbnRpdHkubmFtZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPmNz aTJkY19zZC5lbnRpdHkubmFtZSk7DQo+PiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAr ICAgICB9DQo+PiArDQo+PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAibGluayB3aXRoICVz IHBhZDogJWRcbiIsDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+aW5wdXRfc2QtPm5hbWUsIGNz aTJkYy0+cmVtb3RlX3BhZCk7DQo+PiArDQo+PiArICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXJfb3BlcmF0aW9u cyBjc2kyZGNfYXN5bmNfb3BzID0gew0KPj4gKyAgICAgLmJvdW5kID0gY3NpMmRjX2FzeW5jX2Jv dW5kLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfcHJlcGFyZV9ub3RpZmll cihzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmlucHV0X2Z3bm9kZSkNCj4+ICt7DQo+ PiArICAgICBzdHJ1Y3QgdjRsMl9hc3luY19zdWJkZXYgKmFzZDsNCj4+ICsgICAgIGludCByZXQg PSAwOw0KPj4gKw0KPj4gKyAgICAgdjRsMl9hc3luY19uZl9pbml0KCZjc2kyZGMtPm5vdGlmaWVy KTsNCj4+ICsNCj4+ICsgICAgIGFzZCA9IHY0bDJfYXN5bmNfbmZfYWRkX2Z3bm9kZV9yZW1vdGUo JmNzaTJkYy0+bm90aWZpZXIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlucHV0X2Z3bm9kZSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2KTsNCj4+ICsNCj4+ICsgICAg IGZ3bm9kZV9oYW5kbGVfcHV0KGlucHV0X2Z3bm9kZSk7DQo+PiArDQo+PiArICAgICBpZiAoSVNf RVJSKGFzZCkpIHsNCj4+ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihhc2QpOw0KPj4gKyAg ICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICJmYWlsZWQgdG8gYWRkIGFzeW5jIG5vdGlmaWVyIGZvciBub2RlICVwT0Y6ICVkXG4iLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgIHRvX29mX25vZGUoaW5wdXRfZndub2RlKSwgcmV0KTsNCj4+ ICsgICAgICAgICAgICAgdjRsMl9hc3luY19uZl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlmaWVyKTsN Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAg IGNzaTJkYy0+bm90aWZpZXIub3BzID0gJmNzaTJkY19hc3luY19vcHM7DQo+PiArDQo+PiArICAg ICByZXQgPSB2NGwyX2FzeW5jX3N1YmRldl9uZl9yZWdpc3RlcigmY3NpMmRjLT5jc2kyZGNfc2Qs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3NpMmRjLT5u b3RpZmllcik7DQo+IA0KPiBEcm9wIHRoaXMgYmxhbmsgbGluZQ0KPiANCj4+ICsNCj4+ICsgICAg IGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgImZhaWwg dG8gcmVnaXN0ZXIgYXN5bmMgbm90aWZpZXI6ICVkXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgIHJldCk7DQo+PiArICAgICAgICAgICAgIHY0bDJfYXN5bmNfbmZfY2xlYW51cCgmY3NpMmRj LT5ub3RpZmllcik7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gcmV0Ow0KPj4g K30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19vZl9wYXJzZShzdHJ1Y3QgY3NpMmRjX2Rl dmljZSAqY3NpMmRjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vf bm9kZSAqb2Zfbm9kZSkNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqaW5w dXRfZndub2RlLCAqb3V0cHV0X2Z3bm9kZTsNCj4+ICsgICAgIHN0cnVjdCB2NGwyX2Z3bm9kZV9l bmRwb2ludCBpbnB1dF9lbmRwb2ludCA9IHsgMCB9LA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG91dHB1dF9lbmRwb2ludCA9IHsgMCB9Ow0KPj4gKyAgICAgaW50IHJldDsN Cj4+ICsNCj4+ICsgICAgIGlucHV0X2Z3bm9kZSA9IGZ3bm9kZV9ncmFwaF9nZXRfbmV4dF9lbmRw b2ludChvZl9md25vZGVfaGFuZGxlKG9mX25vZGUpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw0KPj4gKw0KPj4gKyAgICAgaWYg KCFpbnB1dF9md25vZGUpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwN Cj4+ICsgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBwb3J0IG5vZGUgYXQgJXBPRiwgaW5w dXQgbm9kZSBpcyBtYW5kYXRvcnkuXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgIG9mX25v ZGUpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgIH0NCj4+ICsN Cj4+ICsgICAgIHJldCA9IHY0bDJfZndub2RlX2VuZHBvaW50X3BhcnNlKGlucHV0X2Z3bm9kZSwg JmlucHV0X2VuZHBvaW50KTsNCj4+ICsNCj4gDQo+IERyb3AgdGhpcyBibGFuayBsaW5lDQo+IA0K Pj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2 LCAiZW5kcG9pbnQgbm90IGRlZmluZWQgYXQgJXBPRlxuIiwgb2Zfbm9kZSk7DQo+PiArICAgICAg ICAgICAgIGdvdG8gY3NpMmRjX29mX3BhcnNlX2VycjsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsg ICAgIGlmIChpbnB1dF9lbmRwb2ludC5idXNfdHlwZSA9PSBWNEwyX01CVVNfUEFSQUxMRUwgfHwN Cj4+ICsgICAgICAgICBpbnB1dF9lbmRwb2ludC5idXNfdHlwZSA9PSBWNEwyX01CVVNfQlQ2NTYp IHsNCj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5wYXJhbGxlbF9tb2RlID0gdHJ1ZTsNCj4+ICsg ICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAic3ViZGV2aWNlIGNvbm5lY3RlZCBvbiBwYXJhbGxlbCBpbnRlcmZhY2VcbiIpOw0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgaWYgKGlucHV0X2VuZHBvaW50LmJ1c190eXBlID09IFY0TDJf TUJVU19DU0kyX0RQSFkpIHsNCj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5jbGtfZ2F0ZWQgPSBp bnB1dF9lbmRwb2ludC5idXMubWlwaV9jc2kyLmZsYWdzICYNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVjRMMl9NQlVTX0NTSTJfTk9OQ09OVElOVU9VU19DTE9DSzsN Cj4+ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAic3ViZGV2aWNlIGNvbm5lY3RlZCBvbiBzZXJpYWwgaW50ZXJmYWNlXG4iKTsNCj4+ ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwgIkRUOiAlcyBjbG9ja1xuIiwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPmNsa19nYXRlZCA/ICJnYXRlZCIgOiAiZnJl ZSBydW5uaW5nIik7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBvdXRwdXRfZndub2RlID0g Zndub2RlX2dyYXBoX2dldF9uZXh0X2VuZHBvaW50DQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAob2ZfZndub2RlX2hhbmRsZShvZl9ub2RlKSwgaW5wdXRfZndub2RlKTsNCj4+ICsN Cj4+ICsgICAgIGlmIChvdXRwdXRfZndub2RlKQ0KPj4gKyAgICAgICAgICAgICByZXQgPSB2NGwy X2Z3bm9kZV9lbmRwb2ludF9wYXJzZShvdXRwdXRfZndub2RlLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2VuZHBvaW50KTsNCj4+ICsN Cj4+ICsgICAgIGZ3bm9kZV9oYW5kbGVfcHV0KG91dHB1dF9md25vZGUpOw0KPj4gKw0KPj4gKyAg ICAgaWYgKCFvdXRwdXRfZndub2RlIHx8IHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfaW5m byhjc2kyZGMtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIm1pc3Npbmcgb3V0cHV0 IG5vZGUgYXQgJXBPRiwgZGF0YSBwaXBlIGF2YWlsYWJsZSBvbmx5LlxuIiwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgb2Zfbm9kZSk7DQo+PiArICAgICB9IGVsc2Ugew0KPj4gKyAgICAgICAg ICAgICBpZiAob3V0cHV0X2VuZHBvaW50LmJ1c190eXBlICE9IFY0TDJfTUJVU19QQVJBTExFTCAm Jg0KPj4gKyAgICAgICAgICAgICAgICAgb3V0cHV0X2VuZHBvaW50LmJ1c190eXBlICE9IFY0TDJf TUJVU19CVDY1Nikgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5k ZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IHBvcnQgbXVzdCBi ZSBwYXJhbGxlbC9idDY1Ni5cbiIpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1F SU5WQUw7DQo+PiArICAgICAgICAgICAgICAgICAgICAgZ290byBjc2kyZGNfb2ZfcGFyc2VfZXJy Ow0KPj4gKyAgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmlk ZW9fcGlwZSA9IHRydWU7DQo+PiArDQo+PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5k ZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgImJsb2NrICVwT0YgWyVkLiVkXS0+WyVkLiVk XSB2aWRlbyBwaXBlbGluZVxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICBvZl9ub2RlLCBp bnB1dF9lbmRwb2ludC5iYXNlLnBvcnQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgaW5wdXRf ZW5kcG9pbnQuYmFzZS5pZCwgb3V0cHV0X2VuZHBvaW50LmJhc2UucG9ydCwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICBvdXRwdXRfZW5kcG9pbnQuYmFzZS5pZCk7DQo+PiArICAgICB9DQo+PiAr DQo+PiArICAgICAvKiBwcmVwYXJlIGFzeW5jIG5vdGlmaWVyIGZvciBzdWJkZXZpY2UgY29tcGxl dGlvbiAqLw0KPj4gKyAgICAgcmV0dXJuIGNzaTJkY19wcmVwYXJlX25vdGlmaWVyKGNzaTJkYywg aW5wdXRfZndub2RlKTsNCj4+ICsNCj4+ICtjc2kyZGNfb2ZfcGFyc2VfZXJyOg0KPj4gKyAgICAg Zndub2RlX2hhbmRsZV9wdXQoaW5wdXRfZndub2RlKTsNCj4+ICsgICAgIHJldHVybiByZXQ7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGNzaTJkY19kZWZhdWx0X2Zvcm1hdChzdHJ1Y3Qg Y3NpMmRjX2RldmljZSAqY3NpMmRjKQ0KPj4gK3sNCj4+ICsgICAgIGNzaTJkYy0+Y3VyX2ZtdCA9 ICZjc2kyZGNfZm9ybWF0c1swXTsNCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LmhlaWdo dCA9IDQ4MDsNCj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LndpZHRoID0gNjQwOw0KPj4gKyAgICAg Y3NpMmRjLT5mb3JtYXQuY29kZSA9IGNzaTJkY19mb3JtYXRzWzBdLm1idXNfY29kZTsNCj4+ICsg ICAgIGNzaTJkYy0+Zm9ybWF0LmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfU1JHQjsNCj4+ ICsgICAgIGNzaTJkYy0+Zm9ybWF0LmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOw0KPj4gKyAgICAg Y3NpMmRjLT5mb3JtYXQueWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCj4+ICsg ICAgIGNzaTJkYy0+Zm9ybWF0LnF1YW50aXphdGlvbiA9IFY0TDJfUVVBTlRJWkFUSU9OX0RFRkFV TFQ7DQo+PiArICAgICBjc2kyZGMtPmZvcm1hdC54ZmVyX2Z1bmMgPSBWNEwyX1hGRVJfRlVOQ19E RUZBVUxUOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRl diA9ICZwZGV2LT5kZXY7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjOw0K Pj4gKyAgICAgaW50IHJldCA9IDA7DQo+PiArICAgICB1MzIgdmVyOw0KPj4gKw0KPj4gKyAgICAg Y3NpMmRjID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjc2kyZGMpLCBHRlBfS0VSTkVMKTsN Cj4+ICsgICAgIGlmICghY3NpMmRjKQ0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsN Cj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+ZGV2ID0gZGV2Ow0KPj4gKw0KPj4gKyAgICAgY3NpMmRj LT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOw0KPj4gKyAg ICAgaWYgKElTX0VSUihjc2kyZGMtPmJhc2UpKSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIo ZGV2LCAiYmFzZSBhZGRyZXNzIG5vdCBzZXRcbiIpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihjc2kyZGMtPmJhc2UpOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgY3NpMmRj LT5wY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInBjbGsiKTsNCj4+ICsgICAgIGlmIChJU19FUlIo Y3NpMmRjLT5wY2xrKSkgew0KPj4gKyAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGNzaTJkYy0+ cGNsayk7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBwY2xr OiAlZFxuIiwgcmV0KTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0N Cj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+c2NjayA9IGRldm1fY2xrX2dldChkZXYsICJzY2NrIik7 DQo+PiArICAgICBpZiAoSVNfRVJSKGNzaTJkYy0+c2NjaykpIHsNCj4+ICsgICAgICAgICAgICAg cmV0ID0gUFRSX0VSUihjc2kyZGMtPnNjY2spOw0KPj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRl diwgImZhaWxlZCB0byBnZXQgc2NjazogJWRcbiIsIHJldCk7DQo+PiArICAgICAgICAgICAgIHJl dHVybiByZXQ7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICB2NGwyX3N1YmRldl9pbml0KCZj c2kyZGMtPmNzaTJkY19zZCwgJmNzaTJkY19zdWJkZXZfb3BzKTsNCj4+ICsNCj4+ICsgICAgIGNz aTJkYy0+Y3NpMmRjX3NkLm93bmVyID0gVEhJU19NT0RVTEU7DQo+PiArICAgICBjc2kyZGMtPmNz aTJkY19zZC5kZXYgPSBkZXY7DQo+PiArICAgICBzbnByaW50Zihjc2kyZGMtPmNzaTJkY19zZC5u YW1lLCBzaXplb2YoY3NpMmRjLT5jc2kyZGNfc2QubmFtZSksDQo+PiArICAgICAgICAgICAgICAi Y3NpMmRjIik7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5mbGFncyB8PSBWNEwy X1NVQkRFVl9GTF9IQVNfREVWTk9ERTsNCj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0 eS5mdW5jdGlvbiA9IE1FRElBX0VOVF9GX1ZJRF9JRl9CUklER0U7DQo+PiArDQo+PiArICAgICBw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjc2kyZGMpOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0g Y3NpMmRjX29mX3BhcnNlKGNzaTJkYywgZGV2LT5vZl9ub2RlKTsNCj4+ICsgICAgIGlmIChyZXQp DQo+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2JlX2NsZWFudXBfZW50aXR5Ow0KPj4g Kw0KPj4gKyAgICAgY3NpMmRjLT5wYWRzW0NTSTJEQ19QQURfU0lOS10uZmxhZ3MgPSBNRURJQV9Q QURfRkxfU0lOSzsNCj4+ICsgICAgIGlmIChjc2kyZGMtPnZpZGVvX3BpcGUpDQo+PiArICAgICAg ICAgICAgIGNzaTJkYy0+cGFkc1tDU0kyRENfUEFEX1NPVVJDRV0uZmxhZ3MgPSBNRURJQV9QQURf RkxfU09VUkNFOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgm Y3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjc2kyZGMtPnZpZGVvX3BpcGUgPyBDU0kyRENfUEFEU19OVU0gOiAxLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPnBhZHMpOw0KPj4gKyAgICAg aWYgKHJldCA8IDApIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJtZWRpYSBlbnRp dHkgaW5pdCBmYWlsZWRcbiIpOw0KPj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19wcm9iZV9j bGVhbnVwX25vdGlmaWVyOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgY3NpMmRjX2RlZmF1 bHRfZm9ybWF0KGNzaTJkYyk7DQo+PiArDQo+PiArICAgICAvKiB0dXJuIHBvd2VyIG9uIHRvIHZh bGlkYXRlIGNhcGFiaWxpdGllcyAqLw0KPj4gKyAgICAgcmV0ID0gY3NpMmRjX3Bvd2VyKGNzaTJk YywgdHJ1ZSk7DQo+PiArICAgICBpZiAocmV0IDwgMCkNCj4+ICsgICAgICAgICAgICAgZ290byBj c2kyZGNfcHJvYmVfY2xlYW51cF9ub3RpZmllcjsNCj4+ICsNCj4+ICsgICAgIHBtX3J1bnRpbWVf c2V0X2FjdGl2ZShkZXYpOw0KPj4gKyAgICAgcG1fcnVudGltZV9lbmFibGUoZGV2KTsNCj4+ICsg ICAgIHZlciA9IGNzaTJkY19yZWFkbChjc2kyZGMsIENTSTJEQ19WRVJTSU9OKTsNCj4gDQo+IFNo b3VsZG4ndCB5b3UgdmVyaWZ5IHRoYXQgdGhlIHZlcnNpb24gaXMgdGhlIGV4cGVjdGVkIG9uZSwg b3IgdGhhdCwgYXQNCj4gbGVhc3QgdGhlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQgPw0KDQpJZiB0 aGUgcmVhZCBmcm9tIHRoZSByZWdpc3RlciB3b3JrZWQsIHRoZSBkZXZpY2UgY2FuIGJlIGFjY2Vz c2VkLiBJZiB0aGUgDQpkZXZpY2Ugd29uJ3QgcmVzcG9uZCB0byB0aGlzLCB3ZSB3aWxsIGdldCBh IGJ1cyBmYXVsdCBvciBhIGZyZWV6ZS4NCkFuZCBwcmludGluZyB0aGUgdmVyc2lvbiBudW1iZXIg Y2FuIGhlbHAgYWxsIHRoZSB0aW1lIGJ5IGluc3BlY3RpbmcgdGhlIA0KYm9vdGxvZyB0byBzZWUg aWYgc29tZXRoaW5nIHZhbGlkIHdhcyBwcmludGVkLg0KVmVyc2lvbiBjaGFuZ2VzIGZyb20gcHJv ZHVjdCB0byBwcm9kdWN0IGJ1dCBzZWVpbmcgYSBib290bG9nIGxhdGVyIHdpbGwgDQptYWtlIHVz IGVhc2lseSB1bmRlcnN0YW5kIHdoaWNoIHByb2R1Y3Qgd2FzIGl0LCBhbmQgaWYgdGhlIHZlcnNp b24gd2FzIA0KcmVhZCBjb3JyZWN0bHkNCg0KPiANCj4+ICsgICAgIHBtX3JlcXVlc3RfaWRsZShk ZXYpOw0KPiANCj4gSSdtIG5vdCB3ZWxsIHZlcnNlZCB3aGVuIGl0IGNvbWVzIHRvIHJ1bnRpbWVf cG0gYnV0IEkgY2FuIHJlYWQgdGhhdA0KPiANCj4gRG9jdW1lbnRhdGlvbi9wb3dlci9ydW50aW1l X3BtLnJzdC0gIGBpbnQgcG1fcmVxdWVzdF9pZGxlKHN0cnVjdCBkZXZpY2UgKmRldik7YA0KPiBE b2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0ucnN0LSAgICAtIHN1Ym1pdCBhIHJlcXVlc3Qg dG8gZXhlY3V0ZSB0aGUgc3Vic3lzdGVtLWxldmVsIGlkbGUgY2FsbGJhY2sgZm9yIHRoZQ0KPiBE b2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0ucnN0LSAgICAgIGRldmljZSAodGhlIHJlcXVl c3QgaXMgcmVwcmVzZW50ZWQgYnkgYSB3b3JrIGl0ZW0gaW4gcG1fd3EpOyByZXR1cm5zIDAgb24N Cj4gRG9jdW1lbnRhdGlvbi9wb3dlci9ydW50aW1lX3BtLnJzdC0gICAgICBzdWNjZXNzIG9yIGVy cm9yIGNvZGUgaWYgdGhlIHJlcXVlc3QgaGFzIG5vdCBiZWVuIHF1ZXVlZCB1cA0KPiANCj4gQW5k IGxvb2tpbmcgYmVsb3cgeW91IGhhdmUNCj4gDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9w bV9vcHMgY3NpMmRjX2Rldl9wbV9vcHMgPSB7DQo+ICsgICAgICAgU0VUX1JVTlRJTUVfUE1fT1BT KGNzaTJkY19ydW50aW1lX3N1c3BlbmQsIGNzaTJkY19ydW50aW1lX3Jlc3VtZSwgTlVMTCkNCj4g K307DQo+IA0KPiBXaGljaCBleHBhbmRzIHRvDQo+IA0KPiBpbmNsdWRlL2xpbnV4L3BtLmg6ICAg ICBTRVRfUlVOVElNRV9QTV9PUFMoc3VzcGVuZF9mbiwgcmVzdW1lX2ZuLCBpZGxlX2ZuKSBcDQo+ IA0KPiBzbyBpdCBzZWVtcyB0byBtZSB5b3UndmUgbm8gaWRsZSBmdW5jIGRlZmluZWQsIGhlbmNl IHlvdSBhYm92ZSBjYWxsDQo+IGhhcyBubyBlZmZlY3Qgc28geW91J3JlIGRldmljZSBzdGF5cyBw b3dlcmVkIG9uIGFmdGVyIHlvdXIgYWJvdmUgY2FsbA0KPiB0bw0KPiANCj4gICAgICAgICAgcmV0 ID0gY3NpMmRjX3Bvd2VyKGNzaTJkYywgdHJ1ZSk7DQo+IA0KPiBBbHNvIHRyeWluZyB0byBzdXNw ZW5kIHVzaW5nIHJ1bnRpbWVfcG0gd2hpbGUgaGF2aW5nIHBvd2VyZWQgb24gYnkNCj4gY2FsbGlu ZyB0aGUgcmVzdW1lIGZ1bmN0aW9uIGRpcmVjdGx5IHdvdWxkIGxlYXZlIHRoZSBwbSBzdGF0dXMN Cj4gdW5iYWxhbmNlZCA/DQo+IA0KPiBJIHdvdWxkIHJhaGVyIGNhbGwgcG1fcnVudGltZV9yZXN1 bWUoKSBhbmQNCj4gcG1fcnVudGltZV9zdXNwZW5kKCkgb3IgY2FsbCB0aGUgcG93ZXIgcm91dGlu ZSBkaXJlY3RseSwgYW5kIGxhdGVyDQo+IGVuYWJsZSBwbV9ydW50aW1lDQo+IA0KPiAgICAgICAg ICBjc2kyZGNfcG93ZXIodHJ1ZSkNCj4gICAgICAgICAgcmVhZGwoKTsNCj4gICAgICAgICAgY3Np MmZkX3Bvd2VyKGZhbHNlKTsNCj4gDQo+ICAgICAgICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgp Ow0KPiAgICAgICAgICBwbV9ydW50aW1lX2VuYWJsZSgpOw0KPiANCj4gICAgICAgICAgdjRsMl9h c3luY19yZWdpc3RlcigpOw0KPiANCj4gQWdhaW4sIG5vdCB3ZWxsIHZlcnNlZCBpbiBydW50aW1l X3BtLCBzbyBkb24ndCBhc3N1bWUgdGhlIGFib3ZlIG1ha2VzDQo+IHNlbnNlIDopDQoNCkkgYW0g bm90IHZlcnNlZCBpbiBydW50aW1lX3BtIGVpdGhlciwgSSB3aWxsIHRyeSB0byByZW1vdmUgdGhp cyANCidwbV9yZXF1ZXN0X2lkbGUnIHRvIHNlZSB3aGF0IGhhcHBlbnMgYXQgdGhlIGZpcnN0IA0K cG1fcnVudGltZV9yZXN1bWVfYW5kX2dldCwgYW5kIHByaW50IG1lc3NhZ2VzIGluIHBvd2VyIG9u L3Bvd2VyIG9mZiB0byANCnNlZSBob3cgYW5kIHdoZW4gdGhleSBhcmUgY2FsbGVkLg0KDQoNCg0K PiANCj4+ICsNCj4+ICsgICAgIC8qDQo+PiArICAgICAgKiB3ZSBtdXN0IHJlZ2lzdGVyIHRoZSBz dWJkZXYgYWZ0ZXIgUE0gcnVudGltZSBoYXMgYmVlbiByZXF1ZXN0ZWQsDQo+PiArICAgICAgKiBv dGhlcndpc2Ugd2UgbWlnaHQgYm91bmQgaW1tZWRpYXRlbHkgYW5kIHJlcXVlc3QgcG1fcnVudGlt ZV9yZXN1bWUNCj4+ICsgICAgICAqIGJlZm9yZSBydW50aW1lX2VuYWJsZS4NCj4+ICsgICAgICAq Lw0KPj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19yZWdpc3Rlcl9zdWJkZXYoJmNzaTJkYy0+Y3Np MmRjX3NkKTsNCj4+ICsgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2Vycihj c2kyZGMtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciB0aGUgc3ViZGV2aWNlXG4iKTsNCj4+ICsg ICAgICAgICAgICAgZ290byBjc2kyZGNfcHJvYmVfY2xlYW51cF9ub3RpZmllcjsNCj4+ICsgICAg IH0NCj4+ICsNCj4+ICsgICAgIGRldl9pbmZvKGRldiwgIk1pY3JvY2hpcCBDU0kyREMgdmVyc2lv biAleFxuIiwgdmVyKTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2NzaTJk Y19wcm9iZV9jbGVhbnVwX25vdGlmaWVyOg0KPj4gKyAgICAgdjRsMl9hc3luY19uZl9jbGVhbnVw KCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+ICtjc2kyZGNfcHJvYmVfY2xlYW51cF9lbnRpdHk6DQo+ PiArICAgICBtZWRpYV9lbnRpdHlfY2xlYW51cCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5KTsN Cj4gDQo+IEkgd2Fzbid0IGhvbmVzdGx5IGV4cGVjdGluZyB0aGlzDQo+IA0KPiAvKioNCj4gICAq IG1lZGlhX2VudGl0eV9jbGVhbnVwKCkgLSBmcmVlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGgg YW4gZW50aXR5DQo+ICAgKg0KPiAgICogQGVudGl0eTogICAgIGVudGl0eSB3aGVyZSB0aGUgcGFk cyBiZWxvbmcNCj4gICAqDQo+ICAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGR1cmlu ZyB0aGUgY2xlYW51cCBwaGFzZSBhZnRlciB1bnJlZ2lzdGVyaW5nDQo+ICAgKiB0aGUgZW50aXR5 IChjdXJyZW50bHksIGl0IGRvZXMgbm90aGluZykuDQo+ICAgKi8NCj4gI2lmIElTX0VOQUJMRUQo Q09ORklHX01FRElBX0NPTlRST0xMRVIpDQo+IHN0YXRpYyBpbmxpbmUgdm9pZCBtZWRpYV9lbnRp dHlfY2xlYW51cChzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHkpIHt9DQo+IA0KPiA6KQ0KDQpJ IHNhdyBpdCBhcyB3ZWxsLiBCdXQgSSB0aG91Z2h0IHRoYXQgd2hvIGtub3dzLCBpbiB0aGUgZnV0 dXJlIGl0IG1pZ2h0IA0KZG8gc29tZXRoaW5nLCBzbyBpdCdzIGJldHRlciB0byBoYXZlIGl0IGlu IHRoZSBkcml2ZXIgcmF0aGVyIHRoYW4gbm90IA0KaGF2ZSBpdCBhdCBhbGwuDQoNCg0KVGhhbmtz IGFnYWluIGZvciByZXZpZXdpbmcsDQpFdWdlbg0KDQo+IA0KPj4gKw0KPj4gKyAgICAgcmV0dXJu IHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZp Y2UgKmNzaTJkYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPj4gKw0KPj4gKyAgICAg cG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KPj4gKw0KPj4gKyAgICAgdjRsMl9hc3lu Y191bnJlZ2lzdGVyX3N1YmRldigmY3NpMmRjLT5jc2kyZGNfc2QpOw0KPj4gKyAgICAgdjRsMl9h c3luY19uZl91bnJlZ2lzdGVyKCZjc2kyZGMtPm5vdGlmaWVyKTsNCj4+ICsgICAgIHY0bDJfYXN5 bmNfbmZfY2xlYW51cCgmY3NpMmRjLT5ub3RpZmllcik7DQo+PiArICAgICBtZWRpYV9lbnRpdHlf Y2xlYW51cCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5KTsNCj4+ICsNCj4+ICsgICAgIHJldHVy biAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGNzaTJkY19y dW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVj dCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4+ICsNCj4+ ICsgICAgIHJldHVybiBjc2kyZGNfcG93ZXIoY3NpMmRjLCBmYWxzZSk7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgY3NpMmRjX3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldikNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3Np MmRjID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiArDQo+PiArICAgICByZXR1cm4gY3NpMmRj X3Bvd2VyKGNzaTJkYywgdHJ1ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZGV2X3BtX29wcyBjc2kyZGNfZGV2X3BtX29wcyA9IHsNCj4+ICsgICAgIFNFVF9SVU5USU1F X1BNX09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBjc2kyZGNfcnVudGltZV9yZXN1bWUsIE5V TEwpDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBj c2kyZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsgICAgIHsgLmNvbXBhdGlibGUgPSAibWljcm9jaGlw LHNhbWE3ZzUtY3NpMmRjIiB9LA0KPj4gKyAgICAgeyB9DQo+PiArfTsNCj4+ICsNCj4+ICtNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBjc2kyZGNfb2ZfbWF0Y2gpOw0KPj4gKw0KPj4gK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNzaTJkY19kcml2ZXIgPSB7DQo+PiArICAgICAucHJvYmUg ID0gY3NpMmRjX3Byb2JlLA0KPj4gKyAgICAgLnJlbW92ZSA9IGNzaTJkY19yZW1vdmUsDQo+PiAr ICAgICAuZHJpdmVyID0gew0KPj4gKyAgICAgICAgICAgICAubmFtZSA9ICAgICAgICAgICAgICAg ICAibWljcm9jaGlwLWNzaTJkYyIsDQo+PiArICAgICAgICAgICAgIC5wbSA9ICAgICAgICAgICAg ICAgICAgICZjc2kyZGNfZGV2X3BtX29wcywNCj4+ICsgICAgICAgICAgICAgLm9mX21hdGNoX3Rh YmxlID0gICAgICAgb2ZfbWF0Y2hfcHRyKGNzaTJkY19vZl9tYXRjaCksDQo+PiArICAgICB9LA0K Pj4gK307DQo+PiArDQo+PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjc2kyZGNfZHJpdmVyKTsN Cj4+ICsNCj4+ICtNT0RVTEVfQVVUSE9SKCJFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1p Y3JvY2hpcC5jb20+Iik7DQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAgQ1NJMiBE ZW11eCBDb250cm9sbGVyIGRyaXZlciIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsN Cj4+IC0tDQo+PiAyLjI1LjENCj4+DQoNCg==