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 B158BC4332F for ; Fri, 10 Dec 2021 11:07:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236988AbhLJLK6 (ORCPT ); Fri, 10 Dec 2021 06:10:58 -0500 Received: from esa.microchip.iphmx.com ([68.232.153.233]:48248 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234808AbhLJLK4 (ORCPT ); Fri, 10 Dec 2021 06:10:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1639134441; x=1670670441; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=IrstbjfMfDKwR6xg/iG9ROJUuKIhc+XiibJy83BOCAw=; b=xEJDf6B1U5Ukk0R2WjEtPzihWyMIovWL2u6nvDSON1DiNKEjRBrSdLDa 6Wa3j4ISTEvTNflYfsh95+YZ+GXKKBFmgQfKWamPuJaicBfM6Npsgwlsf W7Hx/mpw9pYlxyI4TXA7xxJmomjFKBnuoTGUHWTxUiIIQOp7e8WUNNNKq 7EFBfAv/Foll0f//dW6kr99U1nNEW8Qf7M+xC9v9ntKbALgjOJJsqHAXT xs1ga9/xzA73zw3n8qdBwN50rjcGE2X/s9pk2aEZVjsw4yXAr+F9glIle Iz7i9sZZ8dS4TQDET6s37tn2scyFCJzSA4TK4T4QTij+tbpxVko6l5Ipy Q==; IronPort-SDR: 4aU95doKbQAIdvJbLnSH+7KDuz8u3ldYEhtnmJOf4yAPQ1fco6eFIbPO0C1ubxrsvOOBhaGKCM GIFfFLph8kvNJtvOWZfln9ZlBQTsMG9Y+Z8oaPlkU1jOu5mlnWstONlHGM+F7KKMyGwZo86D4u CR2PuHLTF47zJ5PiiBRme8hkS+Klmzhvx4BO8vWvVWz2GwQWfClMqH3EXO4a1IgIQV4yrmOhL7 U+/3agU2d1d0pxwX8P0NbtUvNAfvLQ6GqYUWdNyiWde6cqB22CJUtcQbOE7mznM6bpkOaqSPLv tv7d6pqU02YgUIAwJqmuZiMJ X-IronPort-AV: E=Sophos;i="5.88,195,1635231600"; d="scan'208";a="146798894" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa3.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 10 Dec 2021 04:07:21 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Fri, 10 Dec 2021 04:07:20 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Fri, 10 Dec 2021 04:07:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XXFsHuqPlKWz2hP83ayoMMMmKkqT3FgMV+9MrfJg0vWGvebSY8ke43RlzEqi9GM8umh8wSNj+mFyL09uLJV1yJK24G22ZgkQ27W6P5td8nF8qQjBIE429ysKnlAsLI9mUGv9ibH5vdwwT5I3UEFXpJJ+xlru397SyZp6EX3XhNM1t0CiffF4VckDvd5axdMC3bUzQLt4x6QSbAoAw2A79bOx2Zm5JTp1wrxlGcEtmk/Rf3sSWp3nAznwiGi2b9n1PfOGv2vlemjAHV5FNqD13Rx2j07P7R6iaaGZk4Mu6XPezLQ8xdQ9o9mGjRBMZ2FNHTpr0zu6yFmzsCd76uM7Zw== 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=IrstbjfMfDKwR6xg/iG9ROJUuKIhc+XiibJy83BOCAw=; b=Wz4JI/7ni1M+Ez84HdPpFsL0L7EIPNRl8LiGQfk4eiS7qI5k6om1CrBhxbdCMISlt+AHVQyiR7xLMIn97TgngqCz0k/aj6r32iYn24OR/456oa/T8EjXAu0K0r2A1RuV51KK4xa5KOD/4zw7A0vv6qIYlimWBb6dguR/s3UBCxJQ5eXDISGVyFDmgq4mqeqW9ejZcSGySvjpe84cusDmunC26c2RAs7DeGATA/TP/P+1Lzdn3ZvMcvwxYZZGafy45BG393ZAnL6X9HcGbN+hb3EBvURlxHSjeYLCr4alVrancWNpEPVe4a786m6+NYcV3DtX3NrKBDmbgI51aEqFTw== 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=IrstbjfMfDKwR6xg/iG9ROJUuKIhc+XiibJy83BOCAw=; b=oqFzOcEiZ6Xkc3D3VsDSf/jDwmZ+cfnjTqZWT5hm1LC8H5EAP0rzGnjYbWW5fZNq8nf/N07aoYgffatgEo/wmVbcJx+sVQDyLFINjgaLdzta/7gLdTMDP0xRla1cQUDIT8C3//oaA+ePr9l7YLvlo1Gj8GwucMRUgPcNIY243sg= Received: from PH0PR11MB4920.namprd11.prod.outlook.com (2603:10b6:510:41::22) by PH0PR11MB4949.namprd11.prod.outlook.com (2603:10b6:510:31::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.24; Fri, 10 Dec 2021 11:07:15 +0000 Received: from PH0PR11MB4920.namprd11.prod.outlook.com ([fe80::1433:9dcf:4912:b8f]) by PH0PR11MB4920.namprd11.prod.outlook.com ([fe80::1433:9dcf:4912:b8f%9]) with mapi id 15.20.4778.016; Fri, 10 Dec 2021 11:07:15 +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: AQHX19FOge8HD4Ymu0y44q0z2b5AxKwlbt8AgAAOKgCAAAa8AIAGOL8A Date: Fri, 10 Dec 2021 11:07:15 +0000 Message-ID: <3d5cf51e-3ea0-9fff-b9f8-cd0eadb4ea2b@microchip.com> References: <20211112142509.2230884-1-eugen.hristev@microchip.com> <20211112142509.2230884-4-eugen.hristev@microchip.com> <20211206105142.chmrks6sueohw7sx@uno.localdomain> <1fca04a4-ab5c-15cc-61ab-829d39a63ec8@microchip.com> <20211206120630.mlciq2662azznesu@uno.localdomain> In-Reply-To: <20211206120630.mlciq2662azznesu@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: 52c99f50-e2ca-4ec0-f8f5-08d9bbcd396f x-ms-traffictypediagnostic: PH0PR11MB4949:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SNdQw0NwCZyqgM+IRr36xtoaGpLYCIuocOGBH4U6NpsPeVIn8uUD6G8a78hc1N6e7LubLVCe3vF1cFY/SAMDHcpTX3f6hiZRevGd/ZFf1+g5NN5fntiZbdiMmubhIakx0+pM8GuhW7M4Y8VHM0CQtgCpeyerAom25yP9/a8V2XejN7M6InPP+it2n8H4JfCG33RbFzs36YOR8MqrnDCOysu7VX/hPN1gq8OXHgrlUje06NqtkTshs7YihYoAFLx2DG1XLbKzQIciVN5FFL3CDS3l4l7p5aSzkBg0TFv20poqSSw7UML79QBd3Dy66Qj7sOCiqPqxojzi9C/+ztw+GtIahgSW09GHQ+7/En1eB6h+NEN4V46i7CVLAOQZYgxtKC5gF1dPpeK5fY+gZuNgb/zAcGKCPvLB32BmqDhZ+jSRNBXY8V1pNsKnBhNkYIZvc192D3YClAlaCgr77NxWioRANxPjgcdCjBqlZUkEDHZL7QJI/CNEk1W6ckW/Gt8dhCrubpkOOCsKN5od28AjbyFZvJvL+yceZHE2Y+omhOTbSk++MrL7AgMaCLmhVy9kQTsFntuUnrT3AeaQl8gACRlcO63DuF4EL3wz+FrSGO3DSQFJ/P6vHUfsIL5VGFdrTJPHjRMWvd/JMPrZWXRz/jOFqX+eTb1dURptU4VlnJLTry3oIfDyQubKbJLryBwAICCUJQ77jsOPMfCqAGoKp0AFWbAqcsHMZ0xujuZCFvZXFCNsqe9O9BfBaDgJo2RM35+9S93CHEfvug5UlrAGg6sNAYyVY5H6SPWHryul5YAV3ETRYAC0Xqv1mN7PswDxlpGhlkSWFEnB2qsukdmDqBUE7dYSy+cNIikf1TuJsus= 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)(26005)(2906002)(83380400001)(107886003)(91956017)(30864003)(54906003)(31686004)(4326008)(5660300002)(508600001)(31696002)(38070700005)(316002)(6916009)(186003)(53546011)(36756003)(6506007)(66556008)(66476007)(2616005)(6512007)(71200400001)(66946007)(8936002)(64756008)(8676002)(76116006)(86362001)(122000001)(966005)(38100700002)(66446008)(45080400002)(6486002)(45980500001)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R3M0dDZBcWo4SHdEc2RsakM5MGlGSThNSlhHbUplbk82TEZQNWxONGtJMzlW?= =?utf-8?B?MEd6Rm9rNGJOaStqMnF3d09ac2ZKTHFtc0h2SUNHNnFoNi9zcVBwT0JTZFRi?= =?utf-8?B?dXQrRldmSmNrdEd4YmJXYmMyUkRsbU0xcmJBTlNleXJxcy9wRnNuc3FwamlO?= =?utf-8?B?ZkI0bkJPRElwMGgxcHpVNFNyaFVGemJpcUFKREYzWFhXUFpWVzQrbUo3aGpT?= =?utf-8?B?SVljcDdzUVdPZnlGN3RpWjh0MVlQU1FDY0FGNlQzb0tmbUU5d3UxMHdvdVRK?= =?utf-8?B?SkY1TU91MC93VVhRelh4czNsRHMwcFpudGVva0gyNEJuVGQ5a1NQTS9oQzFH?= =?utf-8?B?Y3lnVGt1bDg1bE1JNFBTMXhKa2NxRVc2N09qTyt1bDdxYlRSaUpEK3NxSjYx?= =?utf-8?B?N1VWanU0NzBGRS9RZGppWkRuZU5PK1dmZVJMa2plZ3JlRThsVGszZ3d4Ympi?= =?utf-8?B?U3VUMFNHc2YwQW5zTlFaYnJBNzJnN3RLT2h3MlVqa0dDMXhNWU1VTmJIcDBw?= =?utf-8?B?WUoyRFZPbUQzb0QzNmRpSDZpNnJxbkFKM2hYYkpUclN0ejY5c0ZWSTR5Zitr?= =?utf-8?B?Qm5WWG5YVVh1eHloMFhGTWFlWXNqcTVxc2VQVEl0RHVoK096VmZQSnNzTE1K?= =?utf-8?B?VERrdlJST0ZBT0l6UG9BQ2g1YkJOdCtGS2c4cE1QcUliNHkxelk0UklVelJ0?= =?utf-8?B?TnduZXdDRU1xZ2VOVDBkbVp2UTFKbnZkVjBLdmlVaEluZDRpRHUzOG1mY1d1?= =?utf-8?B?Vnd1QWV5NlY3SWxVOHN1b1BnNlpCUlRJRzREUm4raEhBUEJMaml2djg4dGpG?= =?utf-8?B?SHVJR01lUGYvaDM2RzgvZzZIQ3YwZ01PeDFQVjI3TEtwRG40aHJGTXk3cjFV?= =?utf-8?B?UTVvMUlhRVNoNWlnMnJrS1lIRjMrK1JpLzdYKzZ3ODBPNVo4Q1F0YU1WT3lJ?= =?utf-8?B?aUNNL0VpNVcrWTRSVy92VzVsQ3hoZ2NKcitnYWJBN2FwM243c2p6TUpWK0Zm?= =?utf-8?B?ZFNZcXF0RG9QS1JVVW4rRkUxV2lNV3BpNnNnNTczQjNYYjgxMmZFcUxFSlFj?= =?utf-8?B?TlVkNmxSUWlmOVZRN2kxM05tdTc5bDFJUjZJZnk5WnRKbTh2M1MwUWlTYU4z?= =?utf-8?B?RnRCcTZIT2NvRnBvdENyM09hU3I1RVArWjRTQ2NKazJrd2RPUHljWStRQ2lW?= =?utf-8?B?clBhK3I0aytMemZFbkRHSmFKaGZObmxuRDZEL2h3eWZKRlN5Kzc0cjdqVi9s?= =?utf-8?B?Wi93UDhaT1pCWEF2QVZzOS9DcWs2b0g4OGhoWHFRdXZEZXZKTXhoMHlDMVpI?= =?utf-8?B?VmJ6LzhqeFZoekc3M0NVR2V0azFKMWRudFk3alJ1Z1E1Q2NWMzNZbFBLbXVv?= =?utf-8?B?U0wyYVdEcUNpZGptV05jSDFDWENkYkdxUTd1Sis0T3VHOUFiZCsxNVhiemVB?= =?utf-8?B?U3M2NHR2amZSQitDVUd4dzhHL2pxQnkxU3o5WVRYK3NuUDV1cDZoR2xsZldB?= =?utf-8?B?bmJtd0tLcyt1a1BYSFJPSkxhZmI4bWZrWHFhYXVYSnZwR0lOSlhES3UxdGlh?= =?utf-8?B?d3FCcDQ5SXJaamZGTHYrVkFoRkNtKzFzK0ZqbUxaR1FsWWV1cnlwT0h6UDNi?= =?utf-8?B?Y0FYdHVlV29ZNHA3THZjeDBQKzdIZFBCVmZKaHdYR0FJdWFzVGtPNnp4WGJM?= =?utf-8?B?c09pSE9tZ2NxT3R5ZGE4Y0VKclpJRHB3dUdjUjYzQklRNTY1VDllRkdseHlG?= =?utf-8?B?WTNiRVZpWkZPTXdoLzFtaHFPSUQ4dUphdXNrSzBBcGg3UUpieDhNTDZ6ZG00?= =?utf-8?B?cld2RjYxeFRnZjQzZEs3RnQ3Wk12US9Ob1o0b3FuNzgyM2hNRHphTHp2UVlR?= =?utf-8?B?ODFFSTBVSGw3MUdzclBRM2NJZG9aeUIrL1lYQXZVczRTaWJSTitlT2RPNHlP?= =?utf-8?B?cjhQb25NWGVWcXZvV01RejVuVEJwWDFmZjlKSEZLL3dkLy9wTHI2bnJmamdD?= =?utf-8?B?MzVpc0xieUM0N0lRMHlmaSsweEplcEhoeVBJN0ZxME5RV1JZeHFwSXp2bEZt?= =?utf-8?B?MlJMS2I1djdjSWY2UFVueGNyaWU1eEh1NWtwSGpSVTl0djM4c3o3RXlFQWtJ?= =?utf-8?B?WkZmalhXdjNwTzRWVVRGUzBjUjUxZUo4MmNmLzVZMkV3WTM2NFNnd1ZsNEZr?= =?utf-8?B?TllBU2s1R0lGeVBydkQwOXpTMUg1ZjZ6SHQrS3cyWnBJdE1TQTErSmpzTE1q?= =?utf-8?B?aHVkWFd0Y3ZpcTJoNGZpc2x0MmlBPT0=?= 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: PH0PR11MB4920.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52c99f50-e2ca-4ec0-f8f5-08d9bbcd396f X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Dec 2021 11:07:15.4282 (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: lu+EAa3a/180+2AsK31DOTPEt/5NwwyuWoiYLCMWcXlftbvs0Mk51hUZRqgmixkmxEiFjwTJm/gPx898XuYFH03OPGPHN2T7mLP44NjdGvY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4949 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTIvNi8yMSAyOjA2IFBNLCBKYWNvcG8gTW9uZGkgd3JvdGU6DQo+IEhpIEV1Z2VuDQo+IA0K PiBPbiBNb24sIERlYyAwNiwgMjAyMSBhdCAxMTo0MjoyNUFNICswMDAwLCBFdWdlbi5IcmlzdGV2 QG1pY3JvY2hpcC5jb20gd3JvdGU6DQo+PiBPbiAxMi82LzIxIDEyOjUxIFBNLCBKYWNvcG8gTW9u ZGkgd3JvdGU6DQo+Pj4gSGVsbG8gRXVnZW4NCj4+Pg0KPj4+ICAgICAgIHRoYW5rcyBmb3IgYWRk cmVzc2luZyBhbGwgbXkgcHJldmlvdXMgY29tbWVudHMsIGp1c3QgYSBmZXcgbW9yZQ0KPj4+ICAg ICAgIHRoaW5ncyBhbmQgdGhlIGRyaXZlciBsb29rcyBnb29kIHRvIG1lDQo+Pg0KPj4gVGhhbmtz IGZvciByZXZpZXdpbmcuIEkgdHJpZWQgbXkgYmVzdCB0byBhY2NvbW9kYXRlIHlvdXIgc3VnZ2Vz dGlvbnMuDQo+Pj4NCj4+PiBPbiBGcmksIE5vdiAxMiwgMjAyMSBhdCAwNDoyNDo0N1BNICswMjAw LCBFdWdlbiBIcmlzdGV2IHdyb3RlOg0KPj4+PiBNaWNyb2NoaXAgQ1NJMkRDIChDU0kyIERlbXVs dGlwbGV4ZXIgQ29udHJvbGxlcikgaXMgYSBtaXNjIGJyaWRnZSBkZXZpY2UNCj4+Pj4gdGhhdCBj b252ZXJ0cyBhIGJ5dGUgc3RyZWFtIGluIElESSBTeW5vcHN5cyBmb3JtYXQgKGNvbWluZyBmcm9t IGEgQ1NJMkhPU1QpDQo+Pj4+IHRvIGEgcGl4ZWwgc3RyZWFtIHRoYXQgY2FuIGJlIGNhcHR1cmVk IGJ5IGEgc2Vuc29yIGNvbnRyb2xsZXIuDQo+Pj4+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEV1Z2Vu IEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWljcm9jaGlwLmNvbT4NCj4+Pj4gLS0tDQo+Pj4+IENo YW5nZXMgaW4gdjI6DQo+Pj4+IC0gaW1wbGVtZW50IHRyeSBmb3JtYXRzDQo+Pj4+IC0gYWRkZWQg cGFyYWxsZWwgbW9kZQ0KPj4+PiAtIG1vdmVkIHRvIGZ3bGluayBlbmRwb2ludHMNCj4+Pj4gLSBt YW55IG90aGVyIG1pbm9yIGNvcnJlY3Rpb25zIGZyb20gSmFjb3BvJ3MgcmV2aWV3DQo+Pj4+DQo+ Pj4+IENoYW5nZXMgaW4gdGhpcyByZXZpc2lvbjoNCj4+Pj4gLSBhZGRyZXNzZWQgY29tbWVudHMg YnkgSmFjb3BvIGFuZCBMYXVyZW50IGFzIGluIHRoaXMgdGhyZWFkOg0KPj4+PiBodHRwczovL3d3 dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1tZWRpYS9tc2cxODEwNDQuaHRtbA0KPj4+Pg0KPj4+ PiBQcmV2aW91cyBjaGFuZ2UgbG9nIDoNCj4+Pj4gQ2hhbmdlcyBpbiB2NToNCj4+Pj4gLSBvbmx5 IGluIGJpbmRpbmdzDQo+Pj4+DQo+Pj4+IENoYW5nZXMgaW4gdjQ6DQo+Pj4+IC0gbm93IHVzaW5n IGdldF9tYnVzX2NvbmZpZyBvcHMgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgc3ViZGV2aWNlLCBsaWtl IHRoZQ0KPj4+PiB2aXJ0dWFsIGNoYW5uZWwgaWQsIGFuZCB0aGUgY2xvY2sgdHlwZS4NCj4+Pj4g LSBub3cgaGF2aW5nIHBvc3NpYmlsaXR5IHRvIHNlbGVjdCBhbnkgb2YgdGhlIFJBVzEwIGRhdGEg bW9kZXMNCj4+Pj4gLSBhdCBjb21wbGV0aW9uIHRpbWUsIHNlbGVjdCB3aGljaCBmb3JtYXRzIGFy ZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgc3ViZGV2aWNlLA0KPj4+PiBhbmQgbW92ZSB0byB0aGUg ZHluYW1pYyBsaXN0IGFjY29yZGluZ2x5DQo+Pj4+IC0gY2hhbmdlZCB0aGUgcGlwZWxpbmUgaW50 ZWdyYXRpb24sIGRvIG5vdCBhZHZlcnRpc2Ugc3ViZGV2IHJlYWR5IGF0IHByb2JlIHRpbWUuDQo+ Pj4+IHdhaXQgdW50aWwgY29tcGxldGlvbiBpcyBkb25lLCBhbmQgdGhlbiBzdGFydCBhIHdvcmtx dWV1ZSB0aGF0IHdpbGwgcmVnaXN0ZXINCj4+Pj4gdGhpcyBkZXZpY2UgYXMgYSBzdWJkZXZpY2Ug Zm9yIHRoZSBuZXh0IGVsZW1lbnQgaW4gcGlwZWxpbmUuDQo+Pj4+IC0gbW92ZWQgdGhlIHNfcG93 ZXIgY29kZSBpbnRvIGEgZGlmZmVyZW50IGZ1bmN0aW9uIGNhbGxlZCBub3cgY3NpMmRjX3Bvd2Vy DQo+Pj4+IHRoYXQgaXMgY2FsbGVkIHdpdGggQ09ORklHX1BNIGZ1bmN0aW9ucy4gVGhpcyBpcyBh bHNvIGNhbGxlZCBhdCBjb21wbGV0aW9uLA0KPj4+PiB0byBoYXZlIHRoZSBkZXZpY2UgcmVhZHkg aW4gY2FzZSBDT05GSUdfUE0gaXMgbm90IHNlbGVjdGVkIG9uIHRoZSBwbGF0Zm9ybS4NCj4+Pj4g LSBtZXJnZWQgdHJ5X2ZtdCBpbnRvIHNldF9mbXQNCj4+Pj4gLSBkcml2ZXIgY2xlYW51cCwgd3Jh cHBlZCBsaW5lcyBvdmVyIDgwIGNoYXJhY3RlcnMNCj4+Pj4NCj4+Pj4gQ2hhbmdlcyBpbiB2MjoN Cj4+Pj4gLSBtb3ZlZCBkcml2ZXIgdG8gcGxhdGZvcm0vYXRtZWwNCj4+Pj4gLSBmaXhlZCBtaW5v ciB0aGluZ3MgYXMgcGVyIFNha2FyaSdzIHJldmlldw0KPj4+PiAtIHN0aWxsIHNvbWUgdGhpbmdz IGZyb20gdjIgcmV2aWV3IGFyZSBub3QgeWV0IGFkZHJlc3NlZCwgdG8gYmUgZm9sbG93ZWQgdXAN Cj4+Pj4NCj4+Pj4NCj4+Pj4gICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAg ICAgICAgICAgIHwgICAxICsNCj4+Pj4gICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9L Y29uZmlnICAgICAgICAgIHwgIDE1ICsNCj4+Pj4gICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9h dG1lbC9NYWtlZmlsZSAgICAgICAgIHwgICAxICsNCj4+Pj4gICAgLi4uL21lZGlhL3BsYXRmb3Jt L2F0bWVsL21pY3JvY2hpcC1jc2kyZGMuYyAgIHwgNzk3ICsrKysrKysrKysrKysrKysrKw0KPj4+ PiAgICA0IGZpbGVzIGNoYW5nZWQsIDgxNCBpbnNlcnRpb25zKCspDQo+Pj4+ICAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hpcC1jc2kyZGMu Yw0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmls ZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZpbGUNCj4+Pj4gaW5kZXggODMyMzU3MjQw ZTg5Li5iMThlNWY3MDQxNDUgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vTWFrZWZpbGUNCj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQ0K Pj4+PiBAQCAtNjksNiArNjksNyBAQCBvYmotJChDT05GSUdfVklERU9fUkNBUl9WSU4pICAgICAg ICAgICAgICAgICs9IHJjYXItdmluLw0KPj4+PiAgICBvYmotJChDT05GSUdfVklERU9fQVRNRUxf SVNDKSAgICAgICAgICAgICAgICArPSBhdG1lbC8NCj4+Pj4gICAgb2JqLSQoQ09ORklHX1ZJREVP X0FUTUVMX0lTSSkgICAgICAgICAgICAgICAgKz0gYXRtZWwvDQo+Pj4+ICAgIG9iai0kKENPTkZJ R19WSURFT19BVE1FTF9YSVNDKSAgICAgICAgICAgICAgICs9IGF0bWVsLw0KPj4+PiArb2JqLSQo Q09ORklHX1ZJREVPX01JQ1JPQ0hJUF9DU0kyREMpICs9IGF0bWVsLw0KPj4+Pg0KPj4+PiAgICBv YmotJChDT05GSUdfVklERU9fU1RNMzJfRENNSSkgICAgICAgICAgICAgICArPSBzdG0zMi8NCj4+ Pj4NCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvS2NvbmZp ZyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvS2NvbmZpZw0KPj4+PiBpbmRleCBkZGEy ZjI3ZGEzMTcuLmY4M2JlZTM3M2Q4MiAxMDA2NDQNCj4+Pj4gLS0tIGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hdG1lbC9LY29uZmlnDQo+Pj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v YXRtZWwvS2NvbmZpZw0KPj4+PiBAQCAtNDAsMyArNDAsMTggQEAgY29uZmlnIFZJREVPX0FUTUVM X0lTSQ0KPj4+PiAgICAgICAgIGhlbHANCj4+Pj4gICAgICAgICAgIFRoaXMgbW9kdWxlIG1ha2Vz IHRoZSBBVE1FTCBJbWFnZSBTZW5zb3IgSW50ZXJmYWNlIGF2YWlsYWJsZQ0KPj4+PiAgICAgICAg ICAgYXMgYSB2NGwyIGRldmljZS4NCj4+Pj4gKw0KPj4+PiArY29uZmlnIFZJREVPX01JQ1JPQ0hJ UF9DU0kyREMNCj4+Pj4gKyAgICAgdHJpc3RhdGUgIk1pY3JvY2hpcCBDU0kyIERlbXV4IENvbnRy b2xsZXIiDQo+Pj4+ICsgICAgIGRlcGVuZHMgb24gVklERU9fVjRMMiAmJiBDT01NT05fQ0xLICYm IE9GDQo+Pj4+ICsgICAgIGRlcGVuZHMgb24gQVJDSF9BVDkxIHx8IENPTVBJTEVfVEVTVA0KPj4+ PiArICAgICBzZWxlY3QgTUVESUFfQ09OVFJPTExFUg0KPj4+PiArICAgICBzZWxlY3QgVklERU9f VjRMMl9TVUJERVZfQVBJDQo+Pj4+ICsgICAgIHNlbGVjdCBWNEwyX0ZXTk9ERQ0KPj4+PiArICAg ICBoZWxwDQo+Pj4+ICsgICAgICAgQ1NJMiBEZW11eCBDb250cm9sbGVyIGRyaXZlci4gQ1NJMkRD IGlzIGEgaGVscGVyIGNoaXANCj4+Pj4gKyAgICAgICB0aGF0IGNvbnZlcnRzIElESSBpbnRlcmZh Y2UgYnl0ZSBzdHJlYW0gdG8gYSBwYXJhbGxlbCBwaXhlbCBzdHJlYW0uDQo+Pj4+ICsgICAgICAg SXQgc3VwcG9ydHMgdmFyaW91cyBSQVcgZm9ybWF0cyBhcyBpbnB1dC4NCj4+Pj4gKw0KPj4+PiAr ICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6 IHRoZQ0KPj4+PiArICAgICAgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBtaWNyb2NoaXAtY3NpMmRj Lg0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9NYWtlZmls ZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+Pj4gaW5kZXggNDZk MjY0YWI3OTQ4Li4zOWYwYTdlYmE3MDIgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vYXRtZWwvTWFrZWZpbGUNCj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9hdG1lbC9NYWtlZmlsZQ0KPj4+PiBAQCAtNiwzICs2LDQgQEAgb2JqLSQoQ09ORklHX1ZJREVP X0FUTUVMX0lTSSkgKz0gYXRtZWwtaXNpLm8NCj4+Pj4gICAgb2JqLSQoQ09ORklHX1ZJREVPX0FU TUVMX0lTQ19CQVNFKSArPSBhdG1lbC1pc2MtYmFzZS5vDQo+Pj4+ICAgIG9iai0kKENPTkZJR19W SURFT19BVE1FTF9JU0MpICs9IGF0bWVsLWlzYy5vDQo+Pj4+ICAgIG9iai0kKENPTkZJR19WSURF T19BVE1FTF9YSVNDKSArPSBhdG1lbC14aXNjLm8NCj4+Pj4gK29iai0kKENPTkZJR19WSURFT19N SUNST0NISVBfQ1NJMkRDKSArPSBtaWNyb2NoaXAtY3NpMmRjLm8NCj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRjLmMNCj4+Pj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yYjEwNmY2ZmQ1ZDANCj4+Pj4g LS0tIC9kZXYvbnVsbA0KPj4+PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21p Y3JvY2hpcC1jc2kyZGMuYw0KPj4+PiBAQCAtMCwwICsxLDc5NyBAQA0KPj4+PiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPj4+PiArLyoNCj4+Pj4gKyAqIE1pY3Jv Y2hpcCBDU0kyIERlbXV4IENvbnRyb2xsZXIgKENTSTJEQykgZHJpdmVyDQo+Pj4+ICsgKg0KPj4+ PiArICogQ29weXJpZ2h0IChDKSAyMDE4IE1pY3JvY2hpcCBUZWNobm9sb2d5LCBJbmMuDQo+Pj4+ ICsgKg0KPj4+PiArICogQXV0aG9yOiBFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3Jv Y2hpcC5jb20+DQo+Pj4+ICsgKg0KPj4+PiArICovDQo+Pj4+ICsNCj4+Pj4gKyNpbmNsdWRlIDxs aW51eC9jbGsuaD4NCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2aWNldGFibGUuaD4NCj4+ Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9n cmFwaC5oPg0KPj4+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPj4+PiAr I2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC92aWRl b2RldjIuaD4NCj4+Pj4gKw0KPj4+PiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItZndub2RlLmg+DQo+ Pj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1zdWJkZXYuaD4NCj4+Pj4gKw0KPj4+PiArLyogR2xv YmFsIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkcg ICAgICAgICAgICAgICAgICAweDANCj4+Pj4gKw0KPj4+PiArLyogTUlQSSBzZW5zb3IgcGl4ZWwg Y2xvY2sgaXMgZnJlZSBydW5uaW5nICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX01JUElG Uk4gICAgICAgICAgQklUKDApDQo+Pj4+ICsvKiBHUElPIHBhcmFsbGVsIGludGVyZmFjZSBzZWxl Y3Rpb24gKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfR1BJT1NFTCAgICAgICAgICBCSVQo MSkNCj4+Pj4gKy8qIE91dHB1dCB3YXZlZm9ybSBpbnRlci1saW5lIG1pbmltdW0gZGVsYXkgKi8N Cj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfSExDKHYpICAgICAgICAgICAoKHYpIDw8IDQpDQo+ Pj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX0hMQ19NQVNLICAgICAgICAgR0VOTUFTSyg3LCA0KQ0K Pj4+PiArLyogU0FNQTdHNSByZXF1aXJlcyBhIEhMQyBkZWxheSBvZiAxNSAqLw0KPj4+PiArI2Rl ZmluZSBTQU1BN0c1X0hMQyAgICAgICAgICAgICAgICAgICgxNSkNCj4+Pj4gKw0KPj4+PiArLyog R2xvYmFsIGNvbnRyb2wgcmVnaXN0ZXIgKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dDVExSICAg ICAgICAgICAgICAgICAweDA0DQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19HQ1RMUl9TV1JTVCAgICAg ICAgICAgQklUKDApDQo+Pj4+ICsNCj4+Pj4gKy8qIEdsb2JhbCBzdGF0dXMgcmVnaXN0ZXIgKi8N Cj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX0dTICAgICAgICAgICAgICAgICAgICAweDA4DQo+Pj4+ICsN Cj4+Pj4gKy8qIFNTUCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovDQo+Pj4+ICsjZGVmaW5l IENTSTJEQ19TU1BJUyAgICAgICAgICAgICAgICAgMHgyOA0KPj4+PiArLyogUGlwZSB1cGRhdGUg cmVnaXN0ZXIgKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1BVICAgICAgICAgICAgICAgICAgICAw eGMwDQo+Pj4+ICsvKiBWaWRlbyBwaXBlIGF0dHJpYnV0ZXMgdXBkYXRlICovDQo+Pj4+ICsjZGVm aW5lIENTSTJEQ19QVV9WUCAgICAgICAgICAgICAgICAgQklUKDApDQo+Pj4+ICsNCj4+Pj4gKy8q IFBpcGUgdXBkYXRlIHN0YXR1cyByZWdpc3RlciAqLw0KPj4+PiArI2RlZmluZSBDU0kyRENfUFVT ICAgICAgICAgICAgICAgICAgIDB4YzQNCj4+Pj4gKw0KPj4+PiArLyogVmlkZW8gcGlwZWxpbmUg ZW5hYmxlIHJlZ2lzdGVyICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUEUgICAgICAgICAgICAg ICAgICAgMHhmOA0KPj4+PiArI2RlZmluZSBDU0kyRENfVlBFX0VOQUJMRSAgICAgICAgICAgIEJJ VCgwKQ0KPj4+PiArDQo+Pj4+ICsvKiBWaWRlbyBwaXBlbGluZSBjb25maWd1cmF0aW9uIHJlZ2lz dGVyICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGRyAgICAgICAgICAgICAgICAgMHhmYw0K Pj4+PiArLyogRGF0YSB0eXBlICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19EVCh2KSAg ICAgICAgICAgKCh2KSA8PCAwKQ0KPj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRFRfTUFTSyAg ICAgICAgIEdFTk1BU0soNSwgMCkNCj4+Pj4gKy8qIFZpcnR1YWwgY2hhbm5lbCBpZGVudGlmaWVy ICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19WQyh2KSAgICAgICAgICAgKCh2KSA8PCA2 KQ0KPj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfVkNfTUFTSyAgICAgICAgIEdFTk1BU0soNywg NikNCj4+Pj4gKy8qIERlY29tcHJlc3Npb24gZW5hYmxlICovDQo+Pj4+ICsjZGVmaW5lIENTSTJE Q19WUENGR19ERSAgICAgICAgICAgICAgICAgICAgICBCSVQoOCkNCj4+Pj4gKy8qIERlY29kZXIg bW9kZSAqLw0KPj4+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRE0odikgICAgICAgICAgICgodikg PDwgOSkNCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RNX0RFQ09ERVI4VE8xMiAwDQo+Pj4+ ICsvKiBEZWNvZGVyIHByZWRpY3RvciAyIHNlbGVjdGlvbiAqLw0KPj4+PiArI2RlZmluZSBDU0ky RENfVlBDRkdfRFAyICAgICAgICAgICAgIEJJVCgxMikNCj4+Pj4gKy8qIFJlY29tbWVuZGVkIG1l bW9yeSBzdG9yYWdlICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19STVMgICAgICAgICAg ICAgQklUKDEzKQ0KPj4+PiArLyogUG9zdCBhZGp1c3RtZW50ICovDQo+Pj4+ICsjZGVmaW5lIENT STJEQ19WUENGR19QQSAgICAgICAgICAgICAgICAgICAgICBCSVQoMTQpDQo+Pj4+ICsNCj4+Pj4g Ky8qIFZpZGVvIHBpcGVsaW5lIGNvbHVtbiByZWdpc3RlciAqLw0KPj4+PiArI2RlZmluZSBDU0ky RENfVlBDT0wgICAgICAgICAgICAgICAgIDB4MTAwDQo+Pj4+ICsvKiBDb2x1bW4gbnVtYmVyICov DQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUENPTF9DT0wodikgICAgICAgICAgKCh2KSA8PCAwKQ0K Pj4+PiArI2RlZmluZSBDU0kyRENfVlBDT0xfQ09MX01BU0sgICAgICAgICAgICAgICAgR0VOTUFT SygxNSwgMCkNCj4+Pj4gKw0KPj4+PiArLyogVmlkZW8gcGlwZWxpbmUgcm93IHJlZ2lzdGVyICov DQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUFJPVyAgICAgICAgICAgICAgICAgMHgxMDQNCj4+Pj4g Ky8qIFJvdyBudW1iZXIgKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQUk9XX1JPVyh2KSAgICAg ICAgICAoKHYpIDw8IDApDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WUFJPV19ST1dfTUFTSyAgICAg ICAgICAgICAgICBHRU5NQVNLKDE1LCAwKQ0KPj4+PiArDQo+Pj4+ICsvKiBWZXJzaW9uIHJlZ2lz dGVyICovDQo+Pj4+ICsjZGVmaW5lIENTSTJEQ19WRVJTSU9OICAgICAgICAgICAgICAgICAgICAg ICAweDFmYw0KPj4+PiArDQo+Pj4+ICsvKiByZWdpc3RlciByZWFkL3dyaXRlIGhlbHBlcnMgKi8N Cj4+Pj4gKyNkZWZpbmUgY3NpMmRjX3JlYWRsKHN0LCByZWcpICAgICAgICAgICAgICAgIHJlYWRs X3JlbGF4ZWQoKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4+PiArI2RlZmluZSBjc2kyZGNfd3JpdGVs KHN0LCByZWcsIHZhbCkgIHdyaXRlbF9yZWxheGVkKCh2YWwpLCBcDQo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0KS0+YmFzZSArIChyZWcpKQ0KPj4+PiArDQo+ Pj4+ICsvKiBzdXBwb3J0ZWQgUkFXIGRhdGEgdHlwZXMgKi8NCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzYgICAgICAgICAgICAgICAgICAgICAgIDB4MjgNCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzcgICAgICAgICAgICAgICAgICAgICAgIDB4MjkNCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzggICAgICAgICAgICAgICAgICAgICAgIDB4MmENCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzEwICAgICAgICAgICAgICAgICAgICAgIDB4MmINCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzEyICAgICAgICAgICAgICAgICAgICAgIDB4MmMNCj4+Pj4gKyNkZWZpbmUgQ1NJMkRD X0RUX1JBVzE0ICAgICAgICAgICAgICAgICAgICAgIDB4MmQNCj4+Pj4gKw0KPj4+PiArLyoNCj4+ Pj4gKyAqIHN0cnVjdCBjc2kyZGNfZm9ybWF0IC0gQ1NJMkRDIGZvcm1hdCB0eXBlIHN0cnVjdA0K Pj4+PiArICogQG1idXNfY29kZTogICAgICAgICAgICAgICBNZWRpYSBidXMgY29kZSBmb3IgdGhl IGZvcm1hdA0KPj4+PiArICogQGR0OiAgICAgICAgICAgICAgICAgICAgICBEYXRhIHR5cGUgY29u c3RhbnQgZm9yIHRoaXMgZm9ybWF0DQo+Pj4+ICsgKi8NCj4+Pj4gK3N0cnVjdCBjc2kyZGNfZm9y bWF0IHsNCj4+Pj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYnVzX2Nv ZGU7DQo+Pj4+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQ7DQo+Pj4+ ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNzaTJkY19mb3JtYXQgY3Np MmRjX2Zvcm1hdHNbXSA9IHsNCj4+Pj4gKyAgICAgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVz X2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU1JHR0I4XzFYOCwNCj4+Pj4gKyAgICAg ICAgICAgICAuZHQgPSAgICAgICAgICAgICAgICAgICBDU0kyRENfRFRfUkFXOCwNCj4+Pj4gKyAg ICAgfSwgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElB X0JVU19GTVRfU0JHR1I4XzFYOCwNCj4+Pj4gKyAgICAgICAgICAgICAuZHQgPSAgICAgICAgICAg ICAgICAgICBDU0kyRENfRFRfUkFXOCwNCj4+Pj4gKyAgICAgfSwgew0KPj4+PiArICAgICAgICAg ICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU0dSQkc4XzFYOCwNCj4+ Pj4gKyAgICAgICAgICAgICAuZHQgPSAgICAgICAgICAgICAgICAgICBDU0kyRENfRFRfUkFXOCwN Cj4+Pj4gKyAgICAgfSwgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAg ICAgIE1FRElBX0JVU19GTVRfU0dCUkc4XzFYOCwNCj4+Pj4gKyAgICAgICAgICAgICAuZHQgPSAg ICAgICAgICAgICAgICAgICBDU0kyRENfRFRfUkFXOCwNCj4+Pj4gKyAgICAgfSwgew0KPj4+PiAr ICAgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU1JHR0Ix MF8xWDEwLA0KPj4+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJE Q19EVF9SQVcxMCwNCj4+Pj4gKyAgICAgfSwgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVzX2Nv ZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU0JHR1IxMF8xWDEwLA0KPj4+PiArICAgICAg ICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+Pj4gKyAg ICAgfSwgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElB X0JVU19GTVRfU0dSQkcxMF8xWDEwLA0KPj4+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAg ICAgICAgICAgIENTSTJEQ19EVF9SQVcxMCwNCj4+Pj4gKyAgICAgfSwgew0KPj4+PiArICAgICAg ICAgICAgIC5tYnVzX2NvZGUgPSAgICAgICAgICAgIE1FRElBX0JVU19GTVRfU0dCUkcxMF8xWDEw LA0KPj4+PiArICAgICAgICAgICAgIC5kdCA9ICAgICAgICAgICAgICAgICAgIENTSTJEQ19EVF9S QVcxMCwNCj4+Pj4gKyAgICAgfSwgew0KPj4+PiArICAgICAgICAgICAgIC5tYnVzX2NvZGUgPSAg ICAgICAgICAgIE1FRElBX0JVU19GTVRfWVVZVjhfMlg4LA0KPj4+DQo+Pj4gSXMgdGhpcyBpbnRl bnRpb25hbGx5IG5vdCBhc3NvY2lhdGVkIHdpdGggYSBDU0ktMiBEVCBjb2RlID8NCj4+DQo+PiBZ ZXMuIEl0IGlzIG5vdCBhIHJhdyBmb3JtYXQuDQo+PiBJIGRvIG5vdCBoYXZlIGEgc2Vuc29yIHRo YXQgY291bGQgc3RyZWFtIFlVWVY4XzJYOCB3aXRoIENTSS0yIC4NCj4+IEkgdGVzdGVkIHRoaXMg bW9kZSB3aXRoIHBhcmFsbGVsIHNlbnNvciwgYW5kIGluIHRoaXMgY2FzZSwgQ1NJLTIgRFQNCj4+ IHZhbHVlIGRvZXMgbm90IG1ha2Ugc2Vuc2UgYW5kIGl0J3Mgbm90IHVzZWQuDQo+PiBUaGUgaWRl YSB3b3VsZCBiZSB0aGF0IHdoZW4gYW5kIGlmIEkgZ2V0IG15IGhhbmRzIG9uIGEgc2Vuc29yIHRo YXQgY291bGQNCj4+IGFjdHVhbGx5IGRvIHRoaXMgd2l0aCBDU0kyLCBJIHdvdWxkIHVwZGF0ZSB0 aGUgZHJpdmVyIGhlcmUgKGlmIGl0IHdvcmtzLg0KPj4gSSBhbSBub3Qgc3VyZSBpdCBhY3R1YWxs eSBkb2VzIC4uLikNCj4gDQo+IEkgdW5kZXJzdGFuZCwgYnV0IHRoZSBmaXJzdCB1c2VyIG9mIHlv dXIgZHJpdmVyIHRoYXQgY29ubmVjdHMgYQ0KPiBZVVYtY2FwYWJsZSBzZW5zb3Igd2lsbCBiZSB2 ZXJ5IGRpc2FwcG9pbnRlZCwgYXMgZGVidWdnaW5nIHRoZSBmYWN0DQo+IHRoYXQgdGhlIERUIGlk ZW50aWZpZXIgaXMgc2lsZW50bHkgc2V0IHRvIDAgd2lsbCBiZSBxdWl0ZSBwYWluZnVsIChhcw0K PiBpZiBJJ20gbm90IG1pc3Rha2VuIGZpZWxkcyBub3QgaW5pdGlhbGl6ZWQgaW4gYSBkZXNpZ25h dGVkIGluaXRpYWxpemVyDQo+IGxpc3QgYXJlIHNldCB0byAwKS4NCj4gDQo+IEFzIHRoZSBEVCBp ZGVudGlmaWVycyBhcmUgZGVmaW5lZCBieSB0aGUgQ1NJLTIgc3BlY2lmaWNhdGlvbiBhbmQgd2ls bA0KPiBub3QgY2hhbmdlLCBJIHRoaW5rIHlvdSBjYW4gc2FmZWx5IGFkZCBpdCBoZXJlLg0KPiAN Cj4gVGhhbmtzDQo+ICAgICBqDQo+IA0KPj4+DQo+Pj4+ICsgICAgIH0sDQo+Pj4+ICt9Ow0KPj4+ PiArDQo+Pj4+ICtlbnVtIG1pcGlfY3NpX3BhZHMgew0KPj4+PiArICAgICBDU0kyRENfUEFEX1NJ TksgICAgICAgICAgICAgICAgID0gMCwNCj4+Pj4gKyAgICAgQ1NJMkRDX1BBRF9TT1VSQ0UgICAg ICAgICAgICAgICA9IDEsDQo+Pj4+ICsgICAgIENTSTJEQ19QQURTX05VTSAgICAgICAgICAgICAg ICAgPSAyLA0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArLyoNCj4+Pj4gKyAqIHN0cnVjdCBjc2ky ZGNfZGV2aWNlIC0gQ1NJMkRDIGRldmljZSBkcml2ZXIgZGF0YS9jb25maWcgc3RydWN0DQo+Pj4+ ICsgKiBAYmFzZTogICAgICAgICAgICBSZWdpc3RlciBtYXAgYmFzZSBhZGRyZXNzDQo+Pj4+ICsg KiBAY3NpMmRjX3NkOiAgICAgICAgICAgICAgIHY0bDIgc3ViZGV2aWNlIGZvciB0aGUgY3NpMmRj IGRldmljZQ0KPj4+PiArICogICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgc3ViZGV2aWNl IHRoYXQgdGhlIGNzaTJkYyBkZXZpY2UgaXRzZWxmDQo+Pj4+ICsgKiAgICAgICAgICAgICAgICAg ICByZWdpc3RlcnMgaW4gdjRsMiBzdWJzeXN0ZW0NCj4+Pj4gKyAqIEBkZXY6ICAgICAgICAgICAg IHN0cnVjdCBkZXZpY2UgZm9yIHRoaXMgY3NpMmRjIGRldmljZQ0KPj4+PiArICogQHBjbGs6ICAg ICAgICAgICAgUGVyaXBoZXJhbCBjbG9jayByZWZlcmVuY2UNCj4+Pj4gKyAqICAgICAgICAgICAg ICAgICAgIElucHV0IGNsb2NrIHRoYXQgY2xvY2tzIHRoZSBoYXJkd2FyZSBibG9jayBpbnRlcm5h bA0KPj4+PiArICogICAgICAgICAgICAgICAgICAgbG9naWMNCj4+Pj4gKyAqIEBzY2NrOiAgICAg ICAgICAgIFNlbnNvciBDb250cm9sbGVyIGNsb2NrIHJlZmVyZW5jZQ0KPj4+PiArICogICAgICAg ICAgICAgICAgICAgSW5wdXQgY2xvY2sgdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBwaXhl bCBjbG9jaw0KPj4+PiArICogQGZvcm1hdDogICAgICAgICAgQ3VycmVudCBzYXZlZCBmb3JtYXQg dXNlZCBpbiBnL3MgZm10DQo+Pj4+ICsgKiBAY3VyX2ZtdDogICAgICAgICBDdXJyZW50IHN0YXRl IGZvcm1hdA0KPj4+PiArICogQHRyeV9mbXQ6ICAgICAgICAgVHJ5IGZvcm1hdCB0aGF0IGlzIGJl aW5nIHRyaWVkDQo+Pj4+ICsgKiBAcGFkczogICAgICAgICAgICBNZWRpYSBlbnRpdHkgcGFkcyBm b3IgdGhlIGNzaTJkYyBzdWJkZXZpY2UNCj4+Pj4gKyAqIEBjbGtfZ2F0ZWQ6ICAgICAgICAgICAg ICAgV2hldGhlciB0aGUgY2xvY2sgaXMgZ2F0ZWQgb3IgZnJlZSBydW5uaW5nDQo+Pj4+ICsgKiBA dmlkZW9fcGlwZTogICAgICAgICAgICAgIFdoZXRoZXIgdmlkZW8gcGlwZWxpbmUgaXMgY29uZmln dXJlZA0KPj4+PiArICogQHBhcmFsbGVsX21vZGU6ICAgVGhlIHVuZGVybHlpbmcgc3ViZGV2aWNl IGlzIGNvbm5lY3RlZCBvbiBhIHBhcmFsbGVsIGJ1cw0KPj4+PiArICogQHZjOiAgICAgICAgICAg ICAgICAgICAgICBDdXJyZW50IHNldCB2aXJ0dWFsIGNoYW5uZWwNCj4+Pj4gKyAqIEBub3RpZmll cjogICAgICAgICAgICAgICAgQXN5bmMgbm90aWZpZXIgdGhhdCBpcyB1c2VkIHRvIGJvdW5kIHRo ZSB1bmRlcmx5aW5nDQo+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICBzdWJkZXZpY2UgdG8gdGhl IGNzaTJkYyBzdWJkZXZpY2UNCj4+Pj4gKyAqIEBpbnB1dF9zZDogICAgICAgICAgICAgICAgUmVm ZXJlbmNlIHRvIHRoZSB1bmRlcmx5aW5nIHN1YmRldmljZSBib3VuZCB0byB0aGUNCj4+Pj4gKyAq ICAgICAgICAgICAgICAgICAgIGNzaTJkYyBzdWJkZXZpY2UNCj4+Pj4gKyAqIEByZW1vdGVfcGFk OiAgICAgICAgICAgICAgUGFkIG51bWJlciBvZiB0aGUgdW5kZXJseWluZyBzdWJkZXZpY2UgdGhh dCBpcyBsaW5rZWQNCj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjc2kyZGMgc3Vi ZGV2aWNlIHNpbmsgcGFkLg0KPj4+PiArICovDQo+Pj4+ICtzdHJ1Y3QgY3NpMmRjX2RldmljZSB7 DQo+Pj4+ICsgICAgIHZvaWQgX19pb21lbSAgICAgICAgICAgICAgICAgICAgKmJhc2U7DQo+Pj4+ ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgY3NpMmRjX3NkOw0KPj4+PiAr ICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAgICpkZXY7DQo+Pj4+ICsgICAgIHN0 cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnBjbGs7DQo+Pj4+ICsgICAgIHN0cnVjdCBj bGsgICAgICAgICAgICAgICAgICAgICAgKnNjY2s7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgc3RydWN0 IHY0bDJfbWJ1c19mcmFtZWZtdCAgICAgICAgZm9ybWF0Ow0KPj4+PiArDQo+Pj4+ICsgICAgIGNv bnN0IHN0cnVjdCBjc2kyZGNfZm9ybWF0ICAgICAgKmN1cl9mbXQ7DQo+Pj4+ICsgICAgIGNvbnN0 IHN0cnVjdCBjc2kyZGNfZm9ybWF0ICAgICAgKnRyeV9mbXQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAg c3RydWN0IG1lZGlhX3BhZCAgICAgICAgICAgICAgICBwYWRzW0NTSTJEQ19QQURTX05VTV07DQo+ Pj4+ICsNCj4+Pj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGtfZ2F0 ZWQ7DQo+Pj4+ICsgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fcGlw ZTsNCj4+Pj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxlbF9t b2RlOw0KPj4+PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjOw0KPj4+ PiArDQo+Pj4+ICsgICAgIHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICAgICAgbm90aWZpZXI7 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICAgICAgICAgICAgICAqaW5w dXRfc2Q7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZW1vdGVfcGFkOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgY3NpMmRjX2RldmljZSAqDQo+Pj4+ICtjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShzdHJ1 Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCkNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgcmV0dXJuIGNv bnRhaW5lcl9vZihjc2kyZGNfc2QsIHN0cnVjdCBjc2kyZGNfZGV2aWNlLCBjc2kyZGNfc2QpOw0K Pj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19lbnVtX21idXNfY29kZShz dHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfbWJ1c19jb2RlX2Vu dW0gKmNvZGUpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgIGlmIChjb2RlLT5pbmRleCA+PSBBUlJBWV9T SVpFKGNzaTJkY19mb3JtYXRzKSkNCj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsN Cj4+Pj4gKw0KPj4+PiArICAgICBjb2RlLT5jb2RlID0gY3NpMmRjX2Zvcm1hdHNbY29kZS0+aW5k ZXhdLm1idXNfY29kZTsNCj4+Pj4gKw0KPj4+PiArICAgICByZXR1cm4gMDsNCj4+Pj4gK30NCj4+ Pj4gKw0KPj4+PiArc3RhdGljIGludCBjc2kyZGNfZ2V0X2ZtdChzdHJ1Y3QgdjRsMl9zdWJkZXYg KmNzaTJkY19zZCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3Vi ZGV2X3N0YXRlICpzZF9zdGF0ZSwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm9ybWF0KQ0KPj4+PiArew0KPj4+PiArICAgICBzdHJ1Y3Qg Y3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3NpMmRj X3NkKTsNCj4+Pj4gKyAgICAgc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqdjRsMl90cnlfZm10 Ow0KPj4+PiArDQo+Pj4+ICsgICAgIGlmIChmb3JtYXQtPndoaWNoID09IFY0TDJfU1VCREVWX0ZP Uk1BVF9UUlkpIHsNCj4+Pj4gKyAgICAgICAgICAgICB2NGwyX3RyeV9mbXQgPSB2NGwyX3N1YmRl dl9nZXRfdHJ5X2Zvcm1hdChjc2kyZGNfc2QsIHNkX3N0YXRlLA0KPj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+cGFkKTsN Cj4+Pj4gKyAgICAgICAgICAgICBmb3JtYXQtPmZvcm1hdCA9ICp2NGwyX3RyeV9mbXQ7DQo+Pj4+ ICsNCj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+ Pj4+ICsgICAgIGZvcm1hdC0+Zm9ybWF0ID0gY3NpMmRjLT5mb3JtYXQ7DQo+Pj4+ICsNCj4+Pj4g KyAgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRj X3NldF9mbXQoc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsDQo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKnJlcV9mbXQp DQo+Pj4+ICt7DQo+Pj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2ky ZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4+PiArICAgICBjb25zdCBzdHJ1 Y3QgY3NpMmRjX2Zvcm1hdCAqZm10LCAqdHJ5X2ZtdCA9IE5VTEw7DQo+Pj4+ICsgICAgIHN0cnVj dCB2NGwyX21idXNfZnJhbWVmbXQgKnY0bDJfdHJ5X2ZtdDsNCj4+Pj4gKyAgICAgdW5zaWduZWQg aW50IGk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3Np MmRjX2Zvcm1hdHMpOyAgaSsrKSB7DQo+Pj4+ICsgICAgICAgICAgICAgZm10ID0gJmNzaTJkY19m b3JtYXRzW2ldOw0KPj4+PiArICAgICAgICAgICAgIGlmIChyZXFfZm10LT5mb3JtYXQuY29kZSA9 PSBmbXQtPm1idXNfY29kZSkNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHRyeV9mbXQgPSBm bXQ7DQo+Pj4+ICsgICAgICAgICAgICAgZm10Kys7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+ PiArICAgICAvKiBpbiBjYXNlIHdlIGNvdWxkIG5vdCBmaW5kIHRoZSBkZXNpcmVkIGZvcm1hdCwg ZGVmYXVsdCB0byBzb21ldGhpbmcgKi8NCj4+Pj4gKyAgICAgaWYgKCF0cnlfZm10KSB7DQo+Pj4+ ICsgICAgICAgICAgICAgdHJ5X2ZtdCA9ICZjc2kyZGNfZm9ybWF0c1swXTsNCj4+Pj4gKw0KPj4+ PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsDQo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAiQ1NJMkRDIHVuc3VwcG9ydGVkIGZvcm1hdCAweCV4LCBkZWZhdWx0aW5nIHRvIDB4 JXhcbiIsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXFfZm10LT5mb3JtYXQuY29kZSwg Y3NpMmRjX2Zvcm1hdHNbMF0ubWJ1c19jb2RlKTsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ ICsgICAgIHJlcV9mbXQtPmZvcm1hdC5jb2RlID0gdHJ5X2ZtdC0+bWJ1c19jb2RlOw0KPj4+PiAr ICAgICByZXFfZm10LT5mb3JtYXQuY29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCOw0K Pj4+PiArICAgICByZXFfZm10LT5mb3JtYXQuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+Pj4+ ICsNCj4+Pj4gKyAgICAgaWYgKHJlcV9mbXQtPndoaWNoID09IFY0TDJfU1VCREVWX0ZPUk1BVF9U UlkpIHsNCj4+Pj4gKyAgICAgICAgICAgICB2NGwyX3RyeV9mbXQgPSB2NGwyX3N1YmRldl9nZXRf dHJ5X2Zvcm1hdChjc2kyZGNfc2QsIHNkX3N0YXRlLA0KPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9mbXQtPnBhZCk7DQo+Pj4+ ICsgICAgICAgICAgICAgKnY0bDJfdHJ5X2ZtdCA9IHJlcV9mbXQtPmZvcm1hdDsNCj4+Pj4gKyAg ICAgICAgICAgICAvKiBUcnlpbmcgb24gdGhlIHBhZCBzaW5rIG1ha2VzIHRoZSBzb3VyY2Ugc2lu ayBjaGFuZ2UgdG9vICovDQo+Pj4+ICsgICAgICAgICAgICAgaWYgKHJlcV9mbXQtPnBhZCA9PSBD U0kyRENfUEFEX1NJTkspIHsNCj4+Pg0KPj4+IHMvc291cmNlIHNpbmsvc291cmNlIHBhZC8NCj4+ Pg0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgdjRsMl90cnlfZm10ID0NCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdjRsMl9zdWJkZXZfZ2V0X3RyeV9mb3JtYXQoY3NpMmRj X3NkLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZF9zdGF0ZSwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NJMkRDX1BBRF9TT1VSQ0UpOw0KPj4+PiArICAg ICAgICAgICAgICAgICAgICAgKnY0bDJfdHJ5X2ZtdCA9IHJlcV9mbXQtPmZvcm1hdDsNCj4+Pg0K Pj4+IFNob3VsZG4ndCB0aGlzIGJlIHRoZSBzYW1lIGZvciB0aGUgYWN0aXZlIGZvcm1hdCB0aGVu ID8gSWYgdGhpcyBkZXZpY2UNCj4+PiBvcGVyYXRlcyBieSB0cmFuc3BvcnRpbmcgdGhlIHNhbWUg ZXhhY3QgZm9ybWF0IGZyb20gdGhlIHNpbmsgdG8gdGhlDQo+Pj4gc291cmNlLCBzaG91bGRuJ3Qg eW91IGRpc2FibGUgc2V0dGluZyBhIGZvcm1hdCBvbiB0aGUgc291cmNlLCBhbmQNCj4+PiBhbHdh eXMgcHJvcGFnYXRlIHRvIHRoZSBzaW5rID8gSSB3b3VsZCBoYXZlIGRvbmUgc28sIGJ1dCBtYXli ZQ0KPj4+IFNha2FyaS9MYXVyZW50IGNvdWxkIHRlbGwgeW91IGlmIHRoYXQncyBmaW5lLg0KPj4N Cj4+IEhtLiBJIHdpbGwgdHJ5LiBUbyBzZWUgaWYgaXQgd29ya3MgYW5kIHY0bDItY29tcGxpYW5j ZSBpcyBoYXBweS4gKCBJIGRpZA0KPj4gdGhpcyBwcm9wYWdhdGlvbiBmb3IgdHJ5IGZvcm1hdCBi ZWNhdXNlIGl0IHdhc24ndCApDQo+Pg0KPj4+DQo+Pj4+ICsgICAgICAgICAgICAgfQ0KPj4+PiAr ICAgICAgICAgICAgIC8qIGlmIHdlIGFyZSBqdXN0IHRyeWluZywgd2UgYXJlIGRvbmUgKi8NCj4+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsg ICAgIC8qIHNhdmUgdGhlIGZvcm1hdCBmb3IgbGF0ZXIgcmVxdWVzdHMgKi8NCj4+Pj4gKyAgICAg Y3NpMmRjLT5mb3JtYXQgPSByZXFfZm10LT5mb3JtYXQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgLyog dXBkYXRlIGNvbmZpZyAqLw0KPj4+PiArICAgICBjc2kyZGMtPmN1cl9mbXQgPSB0cnlfZm10Ow0K Pj4+PiArDQo+Pj4+ICsgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICJuZXcgZm9ybWF0IHNldDog MHgleCBAJWR4JWRcbiIsDQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5mb3JtYXQuY29kZSwg Y3NpMmRjLT5mb3JtYXQud2lkdGgsDQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5mb3JtYXQu aGVpZ2h0KTsNCj4+Pj4gKw0KPj4+PiArICAgICByZXR1cm4gMDsNCj4+Pj4gK30NCj4+Pj4gKw0K Pj4+PiArc3RhdGljIGludCBjc2kyZGNfcG93ZXIoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJk YywgaW50IG9uKQ0KPj4+PiArew0KPj4+PiArICAgICBpbnQgcmV0ID0gMDsNCj4+Pj4gKw0KPj4+ PiArICAgICBpZiAob24pIHsNCj4+Pj4gKyAgICAgICAgICAgICByZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUoY3NpMmRjLT5wY2xrKTsNCj4+Pj4gKyAgICAgICAgICAgICBpZiAocmV0KSB7DQo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRvIGVu YWJsZSBwY2xrOiVkXG4iLCByZXQpOw0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4+Pj4gKyAgICAgICAgICAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICBy ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY3NpMmRjLT5zY2NrKTsNCj4+Pj4gKyAgICAgICAgICAg ICBpZiAocmV0KSB7DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBzY2NrOiVkXG4iLCByZXQpOw0KPj4+PiArICAgICAgICAg ICAgICAgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNzaTJkYy0+cGNsayk7DQo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4+PiArICAgICAgICAgICAgIH0NCj4+ Pj4gKw0KPj4+PiArICAgICAgICAgICAgIC8qIGlmIHBvd2VyaW5nIHVwLCBkZWFzc2VydCByZXNl dCBsaW5lICovDQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJE Q19HQ1RMUiwgQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+Pj4gKyAgICAgfSBlbHNlIHsNCj4+Pj4g KyAgICAgICAgICAgICAvKiBpZiBwb3dlcmluZyBkb3duLCBhc3NlcnQgcmVzZXQgbGluZSAqLw0K Pj4+PiArICAgICAgICAgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfR0NUTFIsIDAp Ow0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNzaTJk Yy0+c2Njayk7DQo+Pj4+ICsgICAgICAgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNzaTJk Yy0+cGNsayk7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICByZXR1cm4gcmV0Ow0K Pj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19nZXRfbWJ1c19jb25maWco c3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYykNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgc3RydWN0 IHY0bDJfbWJ1c19jb25maWcgbWJ1c19jb25maWcgPSB7IDAgfTsNCj4+Pj4gKyAgICAgaW50IHJl dDsNCj4+Pj4gKw0KPj4+PiArICAgICByZXQgPSB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5w dXRfc2QsIHBhZCwgZ2V0X21idXNfY29uZmlnLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNzaTJkYy0+cmVtb3RlX3BhZCwgJm1idXNfY29uZmlnKTsNCj4+Pj4gKyAgICAgaWYg KHJldCA9PSAtRU5PSU9DVExDTUQpIHsNCj4+Pj4gKyAgICAgICAgICAgICBkZXZfZGJnKGNzaTJk Yy0+ZGV2LA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgIm5vIHJlbW90ZSBtYnVzIGNvbmZp Z3VyYXRpb24gYXZhaWxhYmxlXG4iKTsNCj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19n ZXRfbWJ1c19jb25maWdfZGVmYXVsdHM7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAg ICBpZiAocmV0KSB7DQo+Pj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwNCj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZ2V0IHJlbW90ZSBtYnVzIGNvbmZp Z3VyYXRpb25cbiIpOw0KPj4+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX2dldF9tYnVzX2Nv bmZpZ19kZWZhdWx0czsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGlmIChtYnVz X2NvbmZpZy5mbGFncyAmIFY0TDJfTUJVU19DU0kyX0NIQU5ORUxfMCkNCj4+Pj4gKyAgICAgICAg ICAgICBjc2kyZGMtPnZjID0gMDsNCj4+Pj4gKyAgICAgZWxzZSBpZiAobWJ1c19jb25maWcuZmxh Z3MgJiBWNEwyX01CVVNfQ1NJMl9DSEFOTkVMXzEpDQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRj LT52YyA9IDE7DQo+Pj4+ICsgICAgIGVsc2UgaWYgKG1idXNfY29uZmlnLmZsYWdzICYgVjRMMl9N QlVTX0NTSTJfQ0hBTk5FTF8yKQ0KPj4+PiArICAgICAgICAgICAgIGNzaTJkYy0+dmMgPSAyOw0K Pj4+PiArICAgICBlbHNlIGlmIChtYnVzX2NvbmZpZy5mbGFncyAmIFY0TDJfTUJVU19DU0kyX0NI QU5ORUxfMykNCj4+Pj4gKyAgICAgICAgICAgICBjc2kyZGMtPnZjID0gMzsNCj4+Pj4gKw0KPj4+ PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAic3ViZGV2IHNlbmRpbmcgb24gY2hhbm5lbCAl ZFxuIiwgY3NpMmRjLT52Yyk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgY3NpMmRjLT5jbGtfZ2F0ZWQg PSBtYnVzX2NvbmZpZy5mbGFncyAmDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFY0TDJfTUJVU19DU0kyX05PTkNPTlRJTlVPVVNfQ0xPQ0s7DQo+Pj4+ICsNCj4+Pj4gKyAgICAg ZGV2X2RiZyhjc2kyZGMtPmRldiwgIm1idXNfY29uZmlnOiAlcyBjbG9ja1xuIiwNCj4+Pj4gKyAg ICAgICAgICAgICBjc2kyZGMtPmNsa19nYXRlZCA/ICJnYXRlZCIgOiAiZnJlZSBydW5uaW5nIik7 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+ICsNCj4+Pj4gK2NzaTJkY19nZXRf bWJ1c19jb25maWdfZGVmYXVsdHM6DQo+Pj4+ICsgICAgIGNzaTJkYy0+dmMgPSAwOyAvKiBWaXJ0 dWFsIElEIDAgYnkgZGVmYXVsdCAqLw0KPj4+PiArDQo+Pj4+ICsgICAgIHJldHVybiAwOw0KPj4+ PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgdm9pZCBjc2kyZGNfdnBfdXBkYXRlKHN0cnVjdCBj c2kyZGNfZGV2aWNlICpjc2kyZGMpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgIHUzMiB2cCwgZ2NmZzsN Cj4+Pj4gKw0KPj4+PiArICAgICBpZiAoIWNzaTJkYy0+dmlkZW9fcGlwZSkgew0KPj4+PiArICAg ICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJ2aWRlbyBwaXBlbGluZSB1bmF2YWlsYWJs ZVxuIik7DQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuOw0KPj4+PiArICAgICB9DQo+Pj4+ICsN Cj4+Pj4gKyAgICAgaWYgKGNzaTJkYy0+cGFyYWxsZWxfbW9kZSkgew0KPj4+PiArICAgICAgICAg ICAgIC8qIEluIHBhcmFsbGVsIG1vZGUsIEdQSU8gcGFyYWxsZWwgaW50ZXJmYWNlIG11c3QgYmUg c2VsZWN0ZWQgKi8NCj4+Pj4gKyAgICAgICAgICAgICBnY2ZnID0gY3NpMmRjX3JlYWRsKGNzaTJk YywgQ1NJMkRDX0dDRkcpOw0KPj4+PiArICAgICAgICAgICAgIGdjZmcgfD0gQ1NJMkRDX0dDRkdf R1BJT1NFTDsNCj4+Pj4gKyAgICAgICAgICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRD X0dDRkcsIGdjZmcpOw0KPj4+PiArICAgICAgICAgICAgIHJldHVybjsNCj4+Pj4gKyAgICAgfQ0K Pj4+PiArDQo+Pj4+ICsgICAgIC8qIHNlcmlhbCB2aWRlbyBwaXBlbGluZSAqLw0KPj4+PiArDQo+ Pj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENfR0NGRywNCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAoU0FNQTdHNV9ITEMgJiBDU0kyRENfR0NGR19ITENfTUFTSykgfA0KPj4+ PiArICAgICAgICAgICAgICAgICAgIChjc2kyZGMtPmNsa19nYXRlZCA/IDAgOiBDU0kyRENfR0NG R19NSVBJRlJOKSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENT STJEQ19WUENPTCwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICBDU0kyRENfVlBDT0xfQ09MKDB4 ZmZmKSAmIENTSTJEQ19WUENPTF9DT0xfTUFTSyk7DQo+Pj4+ICsgICAgIGNzaTJkY193cml0ZWwo Y3NpMmRjLCBDU0kyRENfVlBST1csDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgQ1NJMkRDX1ZQ Uk9XX1JPVygweGZmZikgJiBDU0kyRENfVlBST1dfUk9XX01BU0spOw0KPj4+PiArDQo+Pj4+ICsg ICAgIHZwID0gQ1NJMkRDX1ZQQ0ZHX0RUKGNzaTJkYy0+Y3VyX2ZtdC0+ZHQpICYgQ1NJMkRDX1ZQ Q0ZHX0RUX01BU0s7DQo+Pj4+ICsgICAgIHZwIHw9IENTSTJEQ19WUENGR19WQyhjc2kyZGMtPnZj KSAmIENTSTJEQ19WUENGR19WQ19NQVNLOw0KPj4+PiArICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZH X0RFOw0KPj4+PiArICAgICB2cCB8PSBDU0kyRENfVlBDRkdfRE0oQ1NJMkRDX1ZQQ0ZHX0RNX0RF Q09ERVI4VE8xMik7DQo+Pj4+ICsgICAgIHZwICY9IH5DU0kyRENfVlBDRkdfRFAyOw0KPj4+PiAr ICAgICB2cCAmPSB+Q1NJMkRDX1ZQQ0ZHX1JNUzsNCj4+Pj4gKyAgICAgdnAgfD0gQ1NJMkRDX1ZQ Q0ZHX1BBOw0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0kyRENf VlBDRkcsIHZwKTsNCj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJEQ19WUEUs IENTSTJEQ19WUEVfRU5BQkxFKTsNCj4+Pj4gKyAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENT STJEQ19QVSwgQ1NJMkRDX1BVX1ZQKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGljIGlu dCBjc2kyZGNfc19zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNfc2QsIGludCBlbmFi bGUpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBj c2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4+PiArICAgICBpbnQgcmV0 Ow0KPj4+PiArDQo+Pj4+ICsgICAgIGlmIChlbmFibGUpIHsNCj4+Pj4gKyAgICAgICAgICAgICBy ZXQgPSBwbV9ydW50aW1lX3Jlc3VtZV9hbmRfZ2V0KGNzaTJkYy0+ZGV2KTsNCj4+Pj4gKyAgICAg ICAgICAgICBpZiAocmV0IDwgMCkNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICBjc2kyZGNfZ2V0X21idXNfY29uZmlnKGNz aTJkYyk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICBjc2kyZGNfdnBfdXBkYXRlKGNzaTJk Yyk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChj c2kyZGMtPmlucHV0X3NkLCB2aWRlbywgc19zdHJlYW0sDQo+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKyAgICAgLyog c3RvcCBzdHJlYW1pbmcgc2NlbmFyaW8gKi8NCj4+Pj4gKyAgICAgcmV0ID0gdjRsMl9zdWJkZXZf Y2FsbChjc2kyZGMtPmlucHV0X3NkLCB2aWRlbywgc19zdHJlYW0sIGZhbHNlKTsNCj4+Pj4gKw0K Pj4+PiArICAgICBwbV9ydW50aW1lX3B1dF9zeW5jKGNzaTJkYy0+ZGV2KTsNCj4+Pj4gKw0KPj4+ PiArICAgICByZXR1cm4gcmV0Ow0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IGNz aTJkY19pbml0X2NmZyhzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUpDQo+ Pj4+ICt7DQo+Pj4+ICsgICAgIHN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKnY0bDJfdHJ5X2Zt dCA9DQo+Pj4+ICsgICAgICAgICAgICAgdjRsMl9zdWJkZXZfZ2V0X3RyeV9mb3JtYXQoY3NpMmRj X3NkLCBzZF9zdGF0ZSwgMCk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgdjRsMl90cnlfZm10LT5oZWln aHQgPSA0ODA7DQo+Pj4+ICsgICAgIHY0bDJfdHJ5X2ZtdC0+d2lkdGggPSA2NDA7DQo+Pj4+ICsg ICAgIHY0bDJfdHJ5X2ZtdC0+Y29kZSA9IGNzaTJkY19mb3JtYXRzWzBdLm1idXNfY29kZTsNCj4+ Pj4gKyAgICAgdjRsMl90cnlfZm10LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NSR0I7 DQo+Pj4+ICsgICAgIHY0bDJfdHJ5X2ZtdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+Pj4+ ICsgICAgIHY0bDJfdHJ5X2ZtdC0+eWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsN Cj4+Pj4gKyAgICAgdjRsMl90cnlfZm10LT5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElP Tl9ERUZBVUxUOw0KPj4+PiArICAgICB2NGwyX3RyeV9mbXQtPnhmZXJfZnVuYyA9IFY0TDJfWEZF Ul9GVU5DX0RFRkFVTFQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0dXJuIDA7DQo+Pj4+ICt9DQo+ Pj4+ICsNCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyBjc2ky ZGNfcGFkX29wcyA9IHsNCj4+Pj4gKyAgICAgLmVudW1fbWJ1c19jb2RlID0gY3NpMmRjX2VudW1f bWJ1c19jb2RlLA0KPj4+PiArICAgICAuc2V0X2ZtdCA9IGNzaTJkY19zZXRfZm10LA0KPj4+PiAr ICAgICAuZ2V0X2ZtdCA9IGNzaTJkY19nZXRfZm10LA0KPj4+PiArICAgICAuaW5pdF9jZmcgPSBj c2kyZGNfaW5pdF9jZmcsDQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHY0bDJfc3ViZGV2X3ZpZGVvX29wcyBjc2kyZGNfdmlkZW9fb3BzID0gew0KPj4+PiArICAg ICAuc19zdHJlYW0gPSBjc2kyZGNfc19zdHJlYW0sDQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X29wcyBjc2kyZGNfc3ViZGV2X29wcyA9IHsN Cj4+Pj4gKyAgICAgLnBhZCA9ICZjc2kyZGNfcGFkX29wcywNCj4+Pj4gKyAgICAgLnZpZGVvID0g JmNzaTJkY192aWRlb19vcHMsDQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IGNz aTJkY19hc3luY19ib3VuZChzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllciAqbm90aWZpZXIsDQo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnN1YmRl diwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2FzeW5jX3N1 YmRldiAqYXNkKQ0KPj4+PiArew0KPj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3Np MmRjID0gY29udGFpbmVyX29mKG5vdGlmaWVyLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UsIG5vdGlmaWVyKTsN Cj4+Pj4gKyAgICAgaW50IHBhZDsNCj4+Pj4gKyAgICAgaW50IHJldDsNCj4+Pj4gKw0KPj4+PiAr ICAgICBjc2kyZGMtPmlucHV0X3NkID0gc3ViZGV2Ow0KPj4+PiArDQo+Pj4+ICsgICAgIHBhZCA9 IG1lZGlhX2VudGl0eV9nZXRfZndub2RlX3BhZCgmc3ViZGV2LT5lbnRpdHksIGFzZC0+bWF0Y2gu Zndub2RlLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVE SUFfUEFEX0ZMX1NPVVJDRSk7DQo+Pj4+ICsgICAgIGlmIChwYWQgPCAwKSB7DQo+Pj4+ICsgICAg ICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwgIkZhaWxlZCB0byBmaW5kIHBhZCBmb3IgJXNc biIsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBzdWJkZXYtPm5hbWUpOw0KPj4+PiArICAg ICAgICAgICAgIHJldHVybiBwYWQ7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICBj c2kyZGMtPnJlbW90ZV9wYWQgPSBwYWQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0ID0gbWVkaWFf Y3JlYXRlX3BhZF9saW5rKCZjc2kyZGMtPmlucHV0X3NkLT5lbnRpdHksDQo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPnJlbW90ZV9wYWQsDQo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5LCAw LA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUFfTE5LX0ZMX0VO QUJMRUQpOw0KPj4+PiArICAgICBpZiAocmV0KSB7DQo+Pj4+ICsgICAgICAgICAgICAgZGV2X2Vy cihjc2kyZGMtPmRldiwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3Jl YXRlIHBhZCBsaW5rOiAlcyB0byAlc1xuIiwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNz aTJkYy0+aW5wdXRfc2QtPmVudGl0eS5uYW1lLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAg Y3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5Lm5hbWUpOw0KPj4+PiArICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ ZGV2LCAibGluayB3aXRoICVzIHBhZDogJWRcbiIsDQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRj LT5pbnB1dF9zZC0+bmFtZSwgY3NpMmRjLT5yZW1vdGVfcGFkKTsNCj4+Pj4gKw0KPj4+PiArICAg ICByZXR1cm4gcmV0Ow0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHY0bDJfYXN5bmNfbm90aWZpZXJfb3BlcmF0aW9ucyBjc2kyZGNfYXN5bmNfb3BzID0gew0KPj4+ PiArICAgICAuYm91bmQgPSBjc2kyZGNfYXN5bmNfYm91bmQsDQo+Pj4+ICt9Ow0KPj4+PiArDQo+ Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19wcmVwYXJlX25vdGlmaWVyKHN0cnVjdCBjc2kyZGNfZGV2 aWNlICpjc2kyZGMsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBmd25vZGVfaGFuZGxlICppbnB1dF9md25vZGUpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgIHN0cnVj dCB2NGwyX2FzeW5jX3N1YmRldiAqYXNkOw0KPj4+PiArICAgICBpbnQgcmV0ID0gMDsNCj4+Pj4g Kw0KPj4+PiArICAgICB2NGwyX2FzeW5jX25mX2luaXQoJmNzaTJkYy0+bm90aWZpZXIpOw0KPj4+ PiArDQo+Pj4+ICsgICAgIGFzZCA9IHY0bDJfYXN5bmNfbmZfYWRkX2Z3bm9kZV9yZW1vdGUoJmNz aTJkYy0+bm90aWZpZXIsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW5wdXRfZndub2RlLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldik7DQo+Pj4+ICsNCj4+Pj4g KyAgICAgZndub2RlX2hhbmRsZV9wdXQoaW5wdXRfZndub2RlKTsNCj4+Pj4gKw0KPj4+PiArICAg ICBpZiAoSVNfRVJSKGFzZCkpIHsNCj4+Pj4gKyAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGFz ZCk7DQo+Pj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjc2kyZGMtPmRldiwNCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gYWRkIGFzeW5jIG5vdGlmaWVyIGZvciBub2RlICVw T0Y6ICVkXG4iLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgdG9fb2Zfbm9kZShpbnB1dF9m d25vZGUpLCByZXQpOw0KPj4+PiArICAgICAgICAgICAgIHY0bDJfYXN5bmNfbmZfY2xlYW51cCgm Y3NpMmRjLT5ub3RpZmllcik7DQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+Pj4g KyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+bm90aWZpZXIub3BzID0gJmNzaTJk Y19hc3luY19vcHM7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19zdWJkZXZf bmZfcmVnaXN0ZXIoJmNzaTJkYy0+Y3NpMmRjX3NkLA0KPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4NCj4+PiBEcm9w IHRoaXMgYmxhbmsgbGluZQ0KPj4+DQo+Pj4+ICsNCj4+Pj4gKyAgICAgaWYgKHJldCkgew0KPj4+ PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWlsIHRvIHJlZ2lzdGVyIGFz eW5jIG5vdGlmaWVyOiAlZFxuIiwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldCk7DQo+ Pj4+ICsgICAgICAgICAgICAgdjRsMl9hc3luY19uZl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlmaWVy KTsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIHJldHVybiByZXQ7DQo+Pj4+ICt9 DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBpbnQgY3NpMmRjX29mX3BhcnNlKHN0cnVjdCBjc2kyZGNf ZGV2aWNlICpjc2kyZGMsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2 aWNlX25vZGUgKm9mX25vZGUpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgIHN0cnVjdCBmd25vZGVfaGFu ZGxlICppbnB1dF9md25vZGUsICpvdXRwdXRfZndub2RlOw0KPj4+PiArICAgICBzdHJ1Y3QgdjRs Ml9md25vZGVfZW5kcG9pbnQgaW5wdXRfZW5kcG9pbnQgPSB7IDAgfSwNCj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9lbmRwb2ludCA9IHsgMCB9Ow0KPj4+PiAr ICAgICBpbnQgcmV0Ow0KPj4+PiArDQo+Pj4+ICsgICAgIGlucHV0X2Z3bm9kZSA9IGZ3bm9kZV9n cmFwaF9nZXRfbmV4dF9lbmRwb2ludChvZl9md25vZGVfaGFuZGxlKG9mX25vZGUpLA0KPj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgaWYgKCFpbnB1dF9md25vZGUpIHsNCj4+Pj4gKyAgICAgICAg ICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgIm1p c3NpbmcgcG9ydCBub2RlIGF0ICVwT0YsIGlucHV0IG5vZGUgaXMgbWFuZGF0b3J5LlxuIiwNCj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIG9mX25vZGUpOw0KPj4+PiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPj4+PiArICAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0ID0gdjRs Ml9md25vZGVfZW5kcG9pbnRfcGFyc2UoaW5wdXRfZndub2RlLCAmaW5wdXRfZW5kcG9pbnQpOw0K Pj4+PiArDQo+Pj4NCj4+PiBEcm9wIHRoaXMgYmxhbmsgbGluZQ0KPj4+DQo+Pj4+ICsgICAgIGlm IChyZXQpIHsNCj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZW5kcG9p bnQgbm90IGRlZmluZWQgYXQgJXBPRlxuIiwgb2Zfbm9kZSk7DQo+Pj4+ICsgICAgICAgICAgICAg Z290byBjc2kyZGNfb2ZfcGFyc2VfZXJyOw0KPj4+PiArICAgICB9DQo+Pj4+ICsNCj4+Pj4gKyAg ICAgaWYgKGlucHV0X2VuZHBvaW50LmJ1c190eXBlID09IFY0TDJfTUJVU19QQVJBTExFTCB8fA0K Pj4+PiArICAgICAgICAgaW5wdXRfZW5kcG9pbnQuYnVzX3R5cGUgPT0gVjRMMl9NQlVTX0JUNjU2 KSB7DQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5wYXJhbGxlbF9tb2RlID0gdHJ1ZTsNCj4+ Pj4gKyAgICAgICAgICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LA0KPj4+PiArICAgICAgICAgICAg ICAgICAgICAgInN1YmRldmljZSBjb25uZWN0ZWQgb24gcGFyYWxsZWwgaW50ZXJmYWNlXG4iKTsN Cj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGlmIChpbnB1dF9lbmRwb2ludC5idXNf dHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7DQo+Pj4+ICsgICAgICAgICAgICAgY3NpMmRj LT5jbGtfZ2F0ZWQgPSBpbnB1dF9lbmRwb2ludC5idXMubWlwaV9jc2kyLmZsYWdzICYNCj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWNEwyX01CVVNfQ1NJMl9OT05D T05USU5VT1VTX0NMT0NLOw0KPj4+PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYs DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAic3ViZGV2aWNlIGNvbm5lY3RlZCBvbiBzZXJp YWwgaW50ZXJmYWNlXG4iKTsNCj4+Pj4gKyAgICAgICAgICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2 LCAiRFQ6ICVzIGNsb2NrXG4iLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgY3NpMmRjLT5j bGtfZ2F0ZWQgPyAiZ2F0ZWQiIDogImZyZWUgcnVubmluZyIpOw0KPj4+PiArICAgICB9DQo+Pj4+ ICsNCj4+Pj4gKyAgICAgb3V0cHV0X2Z3bm9kZSA9IGZ3bm9kZV9ncmFwaF9nZXRfbmV4dF9lbmRw b2ludA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2ZfZndub2RlX2hhbmRs ZShvZl9ub2RlKSwgaW5wdXRfZndub2RlKTsNCj4+Pj4gKw0KPj4+PiArICAgICBpZiAob3V0cHV0 X2Z3bm9kZSkNCj4+Pj4gKyAgICAgICAgICAgICByZXQgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9w YXJzZShvdXRwdXRfZndub2RlLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZvdXRwdXRfZW5kcG9pbnQpOw0KPj4+PiArDQo+Pj4+ICsgICAgIGZ3 bm9kZV9oYW5kbGVfcHV0KG91dHB1dF9md25vZGUpOw0KPj4+PiArDQo+Pj4+ICsgICAgIGlmICgh b3V0cHV0X2Z3bm9kZSB8fCByZXQpIHsNCj4+Pj4gKyAgICAgICAgICAgICBkZXZfaW5mbyhjc2ky ZGMtPmRldiwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBvdXRwdXQgbm9k ZSBhdCAlcE9GLCBkYXRhIHBpcGUgYXZhaWxhYmxlIG9ubHkuXG4iLA0KPj4+PiArICAgICAgICAg ICAgICAgICAgICAgIG9mX25vZGUpOw0KPj4+PiArICAgICB9IGVsc2Ugew0KPj4+PiArICAgICAg ICAgICAgIGlmIChvdXRwdXRfZW5kcG9pbnQuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX1BBUkFMTEVM ICYmDQo+Pj4+ICsgICAgICAgICAgICAgICAgIG91dHB1dF9lbmRwb2ludC5idXNfdHlwZSAhPSBW NEwyX01CVVNfQlQ2NTYpIHsNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoY3Np MmRjLT5kZXYsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgcG9y dCBtdXN0IGJlIHBhcmFsbGVsL2J0NjU2LlxuIik7DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOw0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgZ290byBjc2kyZGNf b2ZfcGFyc2VfZXJyOw0KPj4+PiArICAgICAgICAgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICAg ICAgICAgIGNzaTJkYy0+dmlkZW9fcGlwZSA9IHRydWU7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAg ICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgImJs b2NrICVwT0YgWyVkLiVkXS0+WyVkLiVkXSB2aWRlbyBwaXBlbGluZVxuIiwNCj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIG9mX25vZGUsIGlucHV0X2VuZHBvaW50LmJhc2UucG9ydCwNCj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgIGlucHV0X2VuZHBvaW50LmJhc2UuaWQsIG91dHB1dF9lbmRw b2ludC5iYXNlLnBvcnQsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZW5kcG9p bnQuYmFzZS5pZCk7DQo+Pj4+ICsgICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgICAvKiBwcmVwYXJl IGFzeW5jIG5vdGlmaWVyIGZvciBzdWJkZXZpY2UgY29tcGxldGlvbiAqLw0KPj4+PiArICAgICBy ZXR1cm4gY3NpMmRjX3ByZXBhcmVfbm90aWZpZXIoY3NpMmRjLCBpbnB1dF9md25vZGUpOw0KPj4+ PiArDQo+Pj4+ICtjc2kyZGNfb2ZfcGFyc2VfZXJyOg0KPj4+PiArICAgICBmd25vZGVfaGFuZGxl X3B1dChpbnB1dF9md25vZGUpOw0KPj4+PiArICAgICByZXR1cm4gcmV0Ow0KPj4+PiArfQ0KPj4+ PiArDQo+Pj4+ICtzdGF0aWMgdm9pZCBjc2kyZGNfZGVmYXVsdF9mb3JtYXQoc3RydWN0IGNzaTJk Y19kZXZpY2UgKmNzaTJkYykNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgY3NpMmRjLT5jdXJfZm10ID0g JmNzaTJkY19mb3JtYXRzWzBdOw0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0Lmhl aWdodCA9IDQ4MDsNCj4+Pj4gKyAgICAgY3NpMmRjLT5mb3JtYXQud2lkdGggPSA2NDA7DQo+Pj4+ ICsgICAgIGNzaTJkYy0+Zm9ybWF0LmNvZGUgPSBjc2kyZGNfZm9ybWF0c1swXS5tYnVzX2NvZGU7 DQo+Pj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0Vf U1JHQjsNCj4+Pj4gKyAgICAgY3NpMmRjLT5mb3JtYXQuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7 DQo+Pj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RF RkFVTFQ7DQo+Pj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LnF1YW50aXphdGlvbiA9IFY0TDJfUVVB TlRJWkFUSU9OX0RFRkFVTFQ7DQo+Pj4+ICsgICAgIGNzaTJkYy0+Zm9ybWF0LnhmZXJfZnVuYyA9 IFY0TDJfWEZFUl9GVU5DX0RFRkFVTFQ7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gK3N0YXRpYyBp bnQgY3NpMmRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+Pj4+ICt7DQo+ Pj4+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+Pj4+ICsgICAgIHN0 cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGM7DQo+Pj4+ICsgICAgIGludCByZXQgPSAwOw0KPj4+ PiArICAgICB1MzIgdmVyOw0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYyA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqY3NpMmRjKSwgR0ZQX0tFUk5FTCk7DQo+Pj4+ICsgICAgIGlmICghY3Np MmRjKQ0KPj4+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPj4+PiArDQo+Pj4+ICsg ICAgIGNzaTJkYy0+ZGV2ID0gZGV2Ow0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+YmFzZSA9 IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsNCj4+Pj4gKyAgICAgaWYg KElTX0VSUihjc2kyZGMtPmJhc2UpKSB7DQo+Pj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYs ICJiYXNlIGFkZHJlc3Mgbm90IHNldFxuIik7DQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIFBU Ul9FUlIoY3NpMmRjLT5iYXNlKTsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGNz aTJkYy0+cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xrIik7DQo+Pj4+ICsgICAgIGlmIChJ U19FUlIoY3NpMmRjLT5wY2xrKSkgew0KPj4+PiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIo Y3NpMmRjLT5wY2xrKTsNCj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0 byBnZXQgcGNsazogJWRcbiIsIHJldCk7DQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+c2NjayA9IGRldm1fY2xr X2dldChkZXYsICJzY2NrIik7DQo+Pj4+ICsgICAgIGlmIChJU19FUlIoY3NpMmRjLT5zY2NrKSkg ew0KPj4+PiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3NpMmRjLT5zY2NrKTsNCj4+Pj4g KyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgc2NjazogJWRcbiIsIHJl dCk7DQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+Pj4gKyAgICAgfQ0KPj4+PiAr DQo+Pj4+ICsgICAgIHY0bDJfc3ViZGV2X2luaXQoJmNzaTJkYy0+Y3NpMmRjX3NkLCAmY3NpMmRj X3N1YmRldl9vcHMpOw0KPj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLm93bmVy ID0gVEhJU19NT0RVTEU7DQo+Pj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmRldiA9IGRldjsN Cj4+Pj4gKyAgICAgc25wcmludGYoY3NpMmRjLT5jc2kyZGNfc2QubmFtZSwgc2l6ZW9mKGNzaTJk Yy0+Y3NpMmRjX3NkLm5hbWUpLA0KPj4+PiArICAgICAgICAgICAgICAiY3NpMmRjIik7DQo+Pj4+ ICsNCj4+Pj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2QuZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxf SEFTX0RFVk5PREU7DQo+Pj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3NkLmVudGl0eS5mdW5jdGlv biA9IE1FRElBX0VOVF9GX1ZJRF9JRl9CUklER0U7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgY3NpMmRjKTsNCj4+Pj4gKw0KPj4+PiArICAgICByZXQgPSBj c2kyZGNfb2ZfcGFyc2UoY3NpMmRjLCBkZXYtPm9mX25vZGUpOw0KPj4+PiArICAgICBpZiAocmV0 KQ0KPj4+PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2JlX2NsZWFudXBfZW50aXR5Ow0K Pj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkYy0+cGFkc1tDU0kyRENfUEFEX1NJTktdLmZsYWdzID0g TUVESUFfUEFEX0ZMX1NJTks7DQo+Pj4+ICsgICAgIGlmIChjc2kyZGMtPnZpZGVvX3BpcGUpDQo+ Pj4+ICsgICAgICAgICAgICAgY3NpMmRjLT5wYWRzW0NTSTJEQ19QQURfU09VUkNFXS5mbGFncyA9 IE1FRElBX1BBRF9GTF9TT1VSQ0U7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0ID0gbWVkaWFfZW50 aXR5X3BhZHNfaW5pdCgmY3NpMmRjLT5jc2kyZGNfc2QuZW50aXR5LA0KPj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNzaTJkYy0+dmlkZW9fcGlwZSA/IENTSTJEQ19QQURT X05VTSA6IDEsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NpMmRj LT5wYWRzKTsNCj4+Pj4gKyAgICAgaWYgKHJldCA8IDApIHsNCj4+Pj4gKyAgICAgICAgICAgICBk ZXZfZXJyKGRldiwgIm1lZGlhIGVudGl0eSBpbml0IGZhaWxlZFxuIik7DQo+Pj4+ICsgICAgICAg ICAgICAgZ290byBjc2kyZGNfcHJvYmVfY2xlYW51cF9ub3RpZmllcjsNCj4+Pj4gKyAgICAgfQ0K Pj4+PiArDQo+Pj4+ICsgICAgIGNzaTJkY19kZWZhdWx0X2Zvcm1hdChjc2kyZGMpOw0KPj4+PiAr DQo+Pj4+ICsgICAgIC8qIHR1cm4gcG93ZXIgb24gdG8gdmFsaWRhdGUgY2FwYWJpbGl0aWVzICov DQo+Pj4+ICsgICAgIHJldCA9IGNzaTJkY19wb3dlcihjc2kyZGMsIHRydWUpOw0KPj4+PiArICAg ICBpZiAocmV0IDwgMCkNCj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19wcm9iZV9jbGVh bnVwX25vdGlmaWVyOw0KPj4+PiArDQo+Pj4+ICsgICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZShk ZXYpOw0KPj4+PiArICAgICBwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KPj4+PiArICAgICB2ZXIg PSBjc2kyZGNfcmVhZGwoY3NpMmRjLCBDU0kyRENfVkVSU0lPTik7DQo+Pj4NCj4+PiBTaG91bGRu J3QgeW91IHZlcmlmeSB0aGF0IHRoZSB2ZXJzaW9uIGlzIHRoZSBleHBlY3RlZCBvbmUsIG9yIHRo YXQsIGF0DQo+Pj4gbGVhc3QgdGhlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQgPw0KPj4NCj4+IElm IHRoZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyIHdvcmtlZCwgdGhlIGRldmljZSBjYW4gYmUgYWNj ZXNzZWQuIElmIHRoZQ0KPj4gZGV2aWNlIHdvbid0IHJlc3BvbmQgdG8gdGhpcywgd2Ugd2lsbCBn ZXQgYSBidXMgZmF1bHQgb3IgYSBmcmVlemUuDQo+PiBBbmQgcHJpbnRpbmcgdGhlIHZlcnNpb24g bnVtYmVyIGNhbiBoZWxwIGFsbCB0aGUgdGltZSBieSBpbnNwZWN0aW5nIHRoZQ0KPj4gYm9vdGxv ZyB0byBzZWUgaWYgc29tZXRoaW5nIHZhbGlkIHdhcyBwcmludGVkLg0KPj4gVmVyc2lvbiBjaGFu Z2VzIGZyb20gcHJvZHVjdCB0byBwcm9kdWN0IGJ1dCBzZWVpbmcgYSBib290bG9nIGxhdGVyIHdp bGwNCj4+IG1ha2UgdXMgZWFzaWx5IHVuZGVyc3RhbmQgd2hpY2ggcHJvZHVjdCB3YXMgaXQsIGFu ZCBpZiB0aGUgdmVyc2lvbiB3YXMNCj4+IHJlYWQgY29ycmVjdGx5DQo+Pg0KPj4+DQo+Pj4+ICsg ICAgIHBtX3JlcXVlc3RfaWRsZShkZXYpOw0KPj4+DQo+Pj4gSSdtIG5vdCB3ZWxsIHZlcnNlZCB3 aGVuIGl0IGNvbWVzIHRvIHJ1bnRpbWVfcG0gYnV0IEkgY2FuIHJlYWQgdGhhdA0KPj4+DQo+Pj4g RG9jdW1lbnRhdGlvbi9wb3dlci9ydW50aW1lX3BtLnJzdC0gIGBpbnQgcG1fcmVxdWVzdF9pZGxl KHN0cnVjdCBkZXZpY2UgKmRldik7YA0KPj4+IERvY3VtZW50YXRpb24vcG93ZXIvcnVudGltZV9w bS5yc3QtICAgIC0gc3VibWl0IGEgcmVxdWVzdCB0byBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2 ZWwgaWRsZSBjYWxsYmFjayBmb3IgdGhlDQo+Pj4gRG9jdW1lbnRhdGlvbi9wb3dlci9ydW50aW1l X3BtLnJzdC0gICAgICBkZXZpY2UgKHRoZSByZXF1ZXN0IGlzIHJlcHJlc2VudGVkIGJ5IGEgd29y ayBpdGVtIGluIHBtX3dxKTsgcmV0dXJucyAwIG9uDQo+Pj4gRG9jdW1lbnRhdGlvbi9wb3dlci9y dW50aW1lX3BtLnJzdC0gICAgICBzdWNjZXNzIG9yIGVycm9yIGNvZGUgaWYgdGhlIHJlcXVlc3Qg aGFzIG5vdCBiZWVuIHF1ZXVlZCB1cA0KPj4+DQo+Pj4gQW5kIGxvb2tpbmcgYmVsb3cgeW91IGhh dmUNCj4+Pg0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgY3NpMmRjX2Rldl9w bV9vcHMgPSB7DQo+Pj4gKyAgICAgICBTRVRfUlVOVElNRV9QTV9PUFMoY3NpMmRjX3J1bnRpbWVf c3VzcGVuZCwgY3NpMmRjX3J1bnRpbWVfcmVzdW1lLCBOVUxMKQ0KPj4+ICt9Ow0KPj4+DQo+Pj4g V2hpY2ggZXhwYW5kcyB0bw0KPj4+DQo+Pj4gaW5jbHVkZS9saW51eC9wbS5oOiAgICAgU0VUX1JV TlRJTUVfUE1fT1BTKHN1c3BlbmRfZm4sIHJlc3VtZV9mbiwgaWRsZV9mbikgXA0KPj4+DQo+Pj4g c28gaXQgc2VlbXMgdG8gbWUgeW91J3ZlIG5vIGlkbGUgZnVuYyBkZWZpbmVkLCBoZW5jZSB5b3Ug YWJvdmUgY2FsbA0KPj4+IGhhcyBubyBlZmZlY3Qgc28geW91J3JlIGRldmljZSBzdGF5cyBwb3dl cmVkIG9uIGFmdGVyIHlvdXIgYWJvdmUgY2FsbA0KPj4+IHRvDQo+Pj4NCj4+PiAgICAgICAgICAg cmV0ID0gY3NpMmRjX3Bvd2VyKGNzaTJkYywgdHJ1ZSk7DQo+Pj4NCj4+PiBBbHNvIHRyeWluZyB0 byBzdXNwZW5kIHVzaW5nIHJ1bnRpbWVfcG0gd2hpbGUgaGF2aW5nIHBvd2VyZWQgb24gYnkNCj4+ PiBjYWxsaW5nIHRoZSByZXN1bWUgZnVuY3Rpb24gZGlyZWN0bHkgd291bGQgbGVhdmUgdGhlIHBt IHN0YXR1cw0KPj4+IHVuYmFsYW5jZWQgPw0KPj4+DQo+Pj4gSSB3b3VsZCByYWhlciBjYWxsIHBt X3J1bnRpbWVfcmVzdW1lKCkgYW5kDQo+Pj4gcG1fcnVudGltZV9zdXNwZW5kKCkgb3IgY2FsbCB0 aGUgcG93ZXIgcm91dGluZSBkaXJlY3RseSwgYW5kIGxhdGVyDQo+Pj4gZW5hYmxlIHBtX3J1bnRp bWUNCj4+Pg0KPj4+ICAgICAgICAgICBjc2kyZGNfcG93ZXIodHJ1ZSkNCj4+PiAgICAgICAgICAg cmVhZGwoKTsNCj4+PiAgICAgICAgICAgY3NpMmZkX3Bvd2VyKGZhbHNlKTsNCj4+Pg0KPj4+ICAg ICAgICAgICBwbV9ydW50aW1lX3NldF9hY3RpdmUoKTsNCj4+PiAgICAgICAgICAgcG1fcnVudGlt ZV9lbmFibGUoKTsNCj4+Pg0KPj4+ICAgICAgICAgICB2NGwyX2FzeW5jX3JlZ2lzdGVyKCk7DQo+ Pj4NCj4+PiBBZ2Fpbiwgbm90IHdlbGwgdmVyc2VkIGluIHJ1bnRpbWVfcG0sIHNvIGRvbid0IGFz c3VtZSB0aGUgYWJvdmUgbWFrZXMNCj4+PiBzZW5zZSA6KQ0KPj4NCj4+IEkgYW0gbm90IHZlcnNl ZCBpbiBydW50aW1lX3BtIGVpdGhlciwgSSB3aWxsIHRyeSB0byByZW1vdmUgdGhpcw0KPj4gJ3Bt X3JlcXVlc3RfaWRsZScgdG8gc2VlIHdoYXQgaGFwcGVucyBhdCB0aGUgZmlyc3QNCj4+IHBtX3J1 bnRpbWVfcmVzdW1lX2FuZF9nZXQsIGFuZCBwcmludCBtZXNzYWdlcyBpbiBwb3dlciBvbi9wb3dl ciBvZmYgdG8NCj4+IHNlZSBob3cgYW5kIHdoZW4gdGhleSBhcmUgY2FsbGVkLg0KPj4NCj4NCg0K DQpIaSBKYWNvcG8sDQoNCkkgYWRkZWQgdHJhY2VzIGluIG15IHBvd2VyIG9uIC8gcG93ZXIgb2Zm IGZ1bmN0aW9ucyB0byBzZWUgd2hvIGNhbGxzIHRoZW0uDQoNCkhlcmUgaXMgdGhlIGxvZyA6DQoN CnBvd2VyIG9uDQotLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0NCldBUk5JTkc6 IENQVTogMCBQSUQ6IDEgYXQgDQpkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL21pY3JvY2hp cC1jc2kyZGMuYzozMzEgY3NpMmRjX3Bvd2VyKzB4ZDAvMHgxMzQNCk1vZHVsZXMgbGlua2VkIGlu Og0KQ1BVOiAwIFBJRDogMSBDb21tOiBzd2FwcGVyIE5vdCB0YWludGVkIDUuMTYuMC1yYzQrICM2 Mg0KSGFyZHdhcmUgbmFtZTogTWljcm9jaGlwIFNBTUE3DQpbPGMwMTBiOWRjPl0gKHVud2luZF9i YWNrdHJhY2UpIGZyb20gWzxjMDEwOTc1Yz5dIChzaG93X3N0YWNrKzB4MTAvMHgxNCkNCls8YzAx MDk3NWM+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwNzU1YWEwPl0gKF9fd2FybisweGQwLzB4MTI4 KQ0KWzxjMDc1NWFhMD5dIChfX3dhcm4pIGZyb20gWzxjMDc1NWI3MD5dICh3YXJuX3Nsb3dwYXRo X2ZtdCsweDc4LzB4YWMpDQpbPGMwNzU1YjcwPl0gKHdhcm5fc2xvd3BhdGhfZm10KSBmcm9tIFs8 YzA1MDExMTQ+XSAoY3NpMmRjX3Bvd2VyKzB4ZDAvMHgxMzQpDQpbPGMwNTAxMTE0Pl0gKGNzaTJk Y19wb3dlcikgZnJvbSBbPGMwNTAxMmRjPl0gKGNzaTJkY19wcm9iZSsweDE1OC8weDIzYykNCls8 YzA1MDEyZGM+XSAoY3NpMmRjX3Byb2JlKSBmcm9tIFs8YzA0MDY3Y2M+XSAocGxhdGZvcm1fcHJv YmUrMHg1Yy8weGI4KQ0KWzxjMDQwNjdjYz5dIChwbGF0Zm9ybV9wcm9iZSkgZnJvbSBbPGMwNDA0 M2Y4Pl0gDQoocmVhbGx5X3Byb2JlLnBhcnQuMCsweDljLzB4MzJjKQ0KWzxjMDQwNDNmOD5dIChy ZWFsbHlfcHJvYmUucGFydC4wKSBmcm9tIFs8YzA0MDQ3MzA+XSANCihfX2RyaXZlcl9wcm9iZV9k ZXZpY2UrMHhhOC8weDEzYykNCls8YzA0MDQ3MzA+XSAoX19kcml2ZXJfcHJvYmVfZGV2aWNlKSBm cm9tIFs8YzA0MDQ3Zjg+XSANCihkcml2ZXJfcHJvYmVfZGV2aWNlKzB4MzQvMHgxMDgpDQpbPGMw NDA0N2Y4Pl0gKGRyaXZlcl9wcm9iZV9kZXZpY2UpIGZyb20gWzxjMDQwNGVhMD5dIA0KKF9fZHJp dmVyX2F0dGFjaCsweGI0LzB4MTgwKQ0KWzxjMDQwNGVhMD5dIChfX2RyaXZlcl9hdHRhY2gpIGZy b20gWzxjMDQwMjQ1Yz5dIA0KKGJ1c19mb3JfZWFjaF9kZXYrMHg3NC8weGMwKQ0KWzxjMDQwMjQ1 Yz5dIChidXNfZm9yX2VhY2hfZGV2KSBmcm9tIFs8YzA0MDM4MDQ+XSANCihidXNfYWRkX2RyaXZl cisweDE1Yy8weDFlMCkNCls8YzA0MDM4MDQ+XSAoYnVzX2FkZF9kcml2ZXIpIGZyb20gWzxjMDQw NTcyYz5dIChkcml2ZXJfcmVnaXN0ZXIrMHg4Yy8weDEyNCkNCls8YzA0MDU3MmM+XSAoZHJpdmVy X3JlZ2lzdGVyKSBmcm9tIFs8YzAxMDE0YjA+XSANCihkb19vbmVfaW5pdGNhbGwrMHg1NC8weDFk MCkNCls8YzAxMDE0YjA+XSAoZG9fb25lX2luaXRjYWxsKSBmcm9tIFs8YzBiMDExNGM+XSANCihr ZXJuZWxfaW5pdF9mcmVlYWJsZSsweDE5Yy8weDIwMCkNCls8YzBiMDExNGM+XSAoa2VybmVsX2lu aXRfZnJlZWFibGUpIGZyb20gWzxjMDc1YzllMD5dIA0KKGtlcm5lbF9pbml0KzB4MTgvMHgxMjgp DQpbPGMwNzVjOWUwPl0gKGtlcm5lbF9pbml0KSBmcm9tIFs8YzAxMDAxNDA+XSAocmV0X2Zyb21f Zm9yaysweDE0LzB4MzQpDQpFeGNlcHRpb24gc3RhY2soMHhjNDAzM2ZiMCB0byAweGM0MDMzZmY4 KQ0KM2ZhMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAgMDAw MDAwMDAgMDAwMDAwMDAgDQowMDAwMDAwMA0KM2ZjMDogMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAw MDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgDQowMDAwMDAwMA0KM2ZlMDog MDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMTMgMDAwMDAwMDANCi0t LVsgZW5kIHRyYWNlIGE1ZmFkZGQ2YzRlMTFjYTIgXS0tLQ0KbWljcm9jaGlwLWNzaTJkYyBlMTQw NDAwMC5jc2kyZGM6IE1pY3JvY2hpcCBDU0kyREMgdmVyc2lvbiAxNDUNCnBvd2VyIG9mZg0KLS0t LS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tDQpXQVJOSU5HOiBDUFU6IDAgUElEOiAy OCBhdCANCmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvbWljcm9jaGlwLWNzaTJkYy5jOjMz NSANCmNzaTJkY19ydW50aW1lX3N1c3BlbmQrMHgzNC8weDZjDQpNb2R1bGVzIGxpbmtlZCBpbjoN CkNQVTogMCBQSUQ6IDI4IENvbW06IGt3b3JrZXIvMDo5IFRhaW50ZWQ6IEcgICAgICAgIFcgICAg ICAgICA1LjE2LjAtcmM0KyAjNjINCkhhcmR3YXJlIG5hbWU6IE1pY3JvY2hpcCBTQU1BNw0KV29y a3F1ZXVlOiBwbSBwbV9ydW50aW1lX3dvcmsNCls8YzAxMGI5ZGM+XSAodW53aW5kX2JhY2t0cmFj ZSkgZnJvbSBbPGMwMTA5NzVjPl0gKHNob3dfc3RhY2srMHgxMC8weDE0KQ0KWzxjMDEwOTc1Yz5d IChzaG93X3N0YWNrKSBmcm9tIFs8YzA3NTVhYTA+XSAoX193YXJuKzB4ZDAvMHgxMjgpDQpbPGMw NzU1YWEwPl0gKF9fd2FybikgZnJvbSBbPGMwNzU1YjcwPl0gKHdhcm5fc2xvd3BhdGhfZm10KzB4 NzgvMHhhYykNCls8YzA3NTViNzA+XSAod2Fybl9zbG93cGF0aF9mbXQpIGZyb20gWzxjMDc1YjRj Yz5dIA0KKGNzaTJkY19ydW50aW1lX3N1c3BlbmQrMHgzNC8weDZjKQ0KWzxjMDc1YjRjYz5dIChj c2kyZGNfcnVudGltZV9zdXNwZW5kKSBmcm9tIFs8YzA0MTE0Yjg+XSANCihfX3JwbV9jYWxsYmFj aysweDMwLzB4ZTQpDQpbPGMwNDExNGI4Pl0gKF9fcnBtX2NhbGxiYWNrKSBmcm9tIFs8YzA0MTE1 Y2M+XSAocnBtX2NhbGxiYWNrKzB4NjAvMHg2NCkNCls8YzA0MTE1Y2M+XSAocnBtX2NhbGxiYWNr KSBmcm9tIFs8YzA0MTBlMjg+XSAocnBtX3N1c3BlbmQrMHhkMC8weDRiYykNCls8YzA0MTBlMjg+ XSAocnBtX3N1c3BlbmQpIGZyb20gWzxjMDQxMjQ0Yz5dIChwbV9ydW50aW1lX3dvcmsrMHg5MC8w eDk4KQ0KWzxjMDQxMjQ0Yz5dIChwbV9ydW50aW1lX3dvcmspIGZyb20gWzxjMDEyYjU2OD5dIA0K KHByb2Nlc3Nfb25lX3dvcmsrMHgxOTgvMHg0MTApDQpbPGMwMTJiNTY4Pl0gKHByb2Nlc3Nfb25l X3dvcmspIGZyb20gWzxjMDEyYjg1Yz5dICh3b3JrZXJfdGhyZWFkKzB4N2MvMHg1NzApDQpbPGMw MTJiODVjPl0gKHdvcmtlcl90aHJlYWQpIGZyb20gWzxjMDEzMjE2OD5dIChrdGhyZWFkKzB4MTU0 LzB4MTc0KQ0KWzxjMDEzMjE2OD5dIChrdGhyZWFkKSBmcm9tIFs8YzAxMDAxNDA+XSAocmV0X2Zy b21fZm9yaysweDE0LzB4MzQpDQpFeGNlcHRpb24gc3RhY2soMHhjNDMyN2ZiMCB0byAweGM0MzI3 ZmY4KQ0KN2ZhMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAg MDAwMDAwMDAgMDAwMDAwMDAgDQowMDAwMDAwMA0KN2ZjMDogMDAwMDAwMDAgMDAwMDAwMDAgMDAw MDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgDQowMDAwMDAwMA0KN2Zl MDogMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMTMgMDAwMDAwMDAN Ci0tLVsgZW5kIHRyYWNlIGE1ZmFkZGQ2YzRlMTFjYTMgXS0tLQ0KPg0KDQoNClNvIGl0IGxvb2tz IGxpa2UgYWZ0ZXIgcHJvYmluZyBpcyBmaW5pc2hlZCwgdGhlIHJ1bnRpbWUgUE0gc3lzdGVtIA0K c3dpdGNoZXMgdGhlIGRldmljZSBiYWNrIHRvIHN1c3BlbmQgbW9kZSAoYXMgcHJvYmFibHkgdGhl cmUgYXJlIG5vICdnZXQnIA0Kb3BlcmF0aW9ucyBvbiBpdCApLg0KDQpJIHJlbW92ZWQgdGhlIHBt X3JlcXVlc3RfaWRsZSBhcyBpdCBsb29rcyB5b3UgYXJlIHJpZ2h0LCBpdCBkb2VzIG5vdGhpbmcu DQoNCldoZW4gdHJ5aW5nIHRvIGNhcHR1cmUgYSBmcmFtZSwgdGhpcyBoYXBwZW5zOg0KDQojIGNh bSAtYzEgLUMxDQpbMDowMToxNC43Nzk2NjQwMDBdIFsyMjldICBJTkZPIElQQU1hbmFnZXIgaXBh X21hbmFnZXIuY3BwOjEzOCBsaWJjYW1lcmEgDQppcyBub3QgaW5zdGFsbGVkLiBBZGRpbmcgJy8v c3JjL2lwYScgdG8gdGhlIElQQSBzZWFyY2ggcGF0aA0KWzA6MDE6MTQuNzg0MDM5NjAwXSBbMjI5 XSAgV0FSTiBJUEFNYW5hZ2VyIGlwYV9tYW5hZ2VyLmNwcDoxNDkgTm8gSVBBIA0KZm91bmQgaW4g Jy91c3IvbGliL2xpYmNhbWVyYScNClswOjAxOjE0Ljc4NDIxOTQwMF0gWzIyOV0gIElORk8gQ2Ft ZXJhIGNhbWVyYV9tYW5hZ2VyLmNwcDoyOTMgbGliY2FtZXJhIA0KdjAuMC4wKzYwMDM2LTIwMjEu MTEtcmMxLTE4Mi1nZDcyYTc5OTctZGlydHkgKDIwMjEtMTEtMTVUMTE6Mjc6MDkrMDI6MDApDQpb MDowMToxNC44MDA4MDE4MDBdIFsyMzBdICBXQVJOIENhbWVyYVNlbnNvciBjYW1lcmFfc2Vuc29y LmNwcDoxOTcgDQonaW14MjE5IDEtMDAxMCc6IFJlY29tbWVuZGVkIFY0TDIgY29udHJvbCAweDAw OWEwOTIyIG5vdCBzdXBwb3J0ZWQNClswOjAxOjE0LjgwMDk1MjIwMF0gWzIzMF0gIFdBUk4gQ2Ft ZXJhU2Vuc29yIGNhbWVyYV9zZW5zb3IuY3BwOjI0OSANCidpbXgyMTkgMS0wMDEwJzogVGhlIHNl bnNvciBrZXJuZWwgZHJpdmVyIG5lZWRzIHRvIGJlIGZpeGVkDQpbMDowMToxNC44MDEwMTg0MDBd IFsyMzBdICBXQVJOIENhbWVyYVNlbnNvciBjYW1lcmFfc2Vuc29yLmNwcDoyNTEgDQonaW14MjE5 IDEtMDAxMCc6IFNlZSBEb2N1bWVudGF0aW9uL3NlbnNvcl9kcml2ZXJfcmVxdWlyZW1lbnRzLnJz dCBpbiB0aGUgDQpsaWJjYW1lcmEgc291cmNlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbg0KWzA6MDE6 MTQuODAzMTk3MjAwXSBbMjMwXSAgV0FSTiBDYW1lcmFTZW5zb3IgY2FtZXJhX3NlbnNvci5jcHA6 NDE0IA0KJ2lteDIxOSAxLTAwMTAnOiBGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGNhbWVyYSBsb2Nh dGlvbg0KWzA6MDE6MTQuODA1NDQ0MDAwXSBbMjMwXSAgV0FSTiBWNEwyIHY0bDJfcGl4ZWxmb3Jt YXQuY3BwOjI4NyANClVuc3VwcG9ydGVkIFY0TDIgcGl4ZWwgZm9ybWF0IFkxNg0KWzA6MDE6MTQu ODA1NTQxMjAwXSBbMjMwXSAgV0FSTiBWNEwyIHY0bDJfcGl4ZWxmb3JtYXQuY3BwOjI4NyANClVu c3VwcG9ydGVkIFY0TDIgcGl4ZWwgZm9ybWF0IEFSMTINClswOjAxOjE0LjgwNTYxMjIwMF0gWzIz MF0gIFdBUk4gVjRMMiB2NGwyX3BpeGVsZm9ybWF0LmNwcDoyODcgDQpVbnN1cHBvcnRlZCBWNEwy IHBpeGVsIGZvcm1hdCBBUjE1DQpVc2luZyBjYW1lcmEgL2Jhc2Uvc29jL2ZsZXhjb21AZTI4MTgw MDAvaTJjQDYwMC9jYW1lcmFAMTAgYXMgY2FtMA0KWzA6MDE6MTQuODA2NjU3MDAwXSBbMjI5XSAg SU5GTyBDYW1lcmEgY2FtZXJhLmNwcDo5NDUgY29uZmlndXJpbmcgDQpzdHJlYW1zOiAoMCkgMzI2 NHgyNDY0LVI4DQpwb3dlciBvbg0KLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0t DQpXQVJOSU5HOiBDUFU6IDAgUElEOiAyMzAgYXQgDQpkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0 bWVsL21pY3JvY2hpcC1jc2kyZGMuYzozMzEgY3NpMmRjX3Bvd2VyKzB4ZDAvMHgxMzQNCk1vZHVs ZXMgbGlua2VkIGluOiBpbXgyMTkgZHdfY3NpIGR3X2RwaHkNCkNQVTogMCBQSUQ6IDIzMCBDb21t OiBjYW0gVGFpbnRlZDogRyAgICAgICAgVyAgICAgICAgIDUuMTYuMC1yYzQrICM2Mw0KSGFyZHdh cmUgbmFtZTogTWljcm9jaGlwIFNBTUE3DQpbPGMwMTBiOWRjPl0gKHVud2luZF9iYWNrdHJhY2Up IGZyb20gWzxjMDEwOTc1Yz5dIChzaG93X3N0YWNrKzB4MTAvMHgxNCkNCls8YzAxMDk3NWM+XSAo c2hvd19zdGFjaykgZnJvbSBbPGMwNzU1YWEwPl0gKF9fd2FybisweGQwLzB4MTI4KQ0KWzxjMDc1 NWFhMD5dIChfX3dhcm4pIGZyb20gWzxjMDc1NWI3MD5dICh3YXJuX3Nsb3dwYXRoX2ZtdCsweDc4 LzB4YWMpDQpbPGMwNzU1YjcwPl0gKHdhcm5fc2xvd3BhdGhfZm10KSBmcm9tIFs8YzA1MDExMTQ+ XSAoY3NpMmRjX3Bvd2VyKzB4ZDAvMHgxMzQpDQpbPGMwNTAxMTE0Pl0gKGNzaTJkY19wb3dlcikg ZnJvbSBbPGMwNDExNGI4Pl0gKF9fcnBtX2NhbGxiYWNrKzB4MzAvMHhlNCkNCls8YzA0MTE0Yjg+ XSAoX19ycG1fY2FsbGJhY2spIGZyb20gWzxjMDQxMTVjYz5dIChycG1fY2FsbGJhY2srMHg2MC8w eDY0KQ0KWzxjMDQxMTVjYz5dIChycG1fY2FsbGJhY2spIGZyb20gWzxjMDQxMTk4ND5dIChycG1f cmVzdW1lKzB4M2I0LzB4NTUwKQ0KWzxjMDQxMTk4ND5dIChycG1fcmVzdW1lKSBmcm9tIFs8YzA0 MTFiNTQ+XSAoX19wbV9ydW50aW1lX3Jlc3VtZSsweDM0LzB4M2MpDQpbPGMwNDExYjU0Pl0gKF9f cG1fcnVudGltZV9yZXN1bWUpIGZyb20gWzxjMDUwMGRjYz5dIA0KKGNzaTJkY19zX3N0cmVhbSsw eGI4LzB4MzMwKQ0KWzxjMDUwMGRjYz5dIChjc2kyZGNfc19zdHJlYW0pIGZyb20gWzxjMDRmZWU5 Yz5dIA0KKGlzY19zdGFydF9zdHJlYW1pbmcrMHgzYTQvMHg0OTgpDQpbPGMwNGZlZTljPl0gKGlz Y19zdGFydF9zdHJlYW1pbmcpIGZyb20gWzxjMDRmNTI4MD5dIA0KKHZiMl9zdGFydF9zdHJlYW1p bmcrMHg5OC8weDFhOCkNCls8YzA0ZjUyODA+XSAodmIyX3N0YXJ0X3N0cmVhbWluZykgZnJvbSBb PGMwNGY1N2QwPl0gDQoodmIyX2NvcmVfcWJ1ZisweDQ0MC8weDVkNCkNCls8YzA0ZjU3ZDA+XSAo dmIyX2NvcmVfcWJ1ZikgZnJvbSBbPGMwNGY5NDkwPl0gKHZiMl9xYnVmKzB4ODAvMHhkYykNCls8 YzA0Zjk0OTA+XSAodmIyX3FidWYpIGZyb20gWzxjMDRkZDBkYz5dIChfX3ZpZGVvX2RvX2lvY3Rs KzB4MjM0LzB4NDkwKQ0KWzxjMDRkZDBkYz5dIChfX3ZpZGVvX2RvX2lvY3RsKSBmcm9tIFs8YzA0 ZGU0MTA+XSANCih2aWRlb191c2VyY29weSsweDFiNC8weDU1MCkNCls8YzA0ZGU0MTA+XSAodmlk ZW9fdXNlcmNvcHkpIGZyb20gWzxjMDFlNzdiOD5dIChzeXNfaW9jdGwrMHgyMjQvMHhhMGMpDQpb PGMwMWU3N2I4Pl0gKHN5c19pb2N0bCkgZnJvbSBbPGMwMTAwMDYwPl0gKHJldF9mYXN0X3N5c2Nh bGwrMHgwLzB4NTApDQpFeGNlcHRpb24gc3RhY2soMHhjNDZlN2ZhOCB0byAweGM0NmU3ZmYwKQ0K N2ZhMDogICAgICAgICAgICAgICAgICAgYjVkMDcwODggYjVkMTEzYzggMDAwMDAwMTEgYzA0NDU2 MGYgYjY2ZGE1OTQgDQpiNmUxNDAwMA0KN2ZjMDogYjVkMDcwODggYjVkMTEzYzggYjY2ZGE1OTQg MDAwMDAwMzYgYjY2ZGE1ZDggZmZmZmZmZjggYjY2ZGE2Y2MgDQpiNjZkYThlMA0KN2ZlMDogYjZm YjYzYTggYjY2ZGE1N2MgYjZmNzBkODggYjZiYTlmZWMNCi0tLVsgZW5kIHRyYWNlIDcyMDRlMTg3 MWNhZTk2ZTcgXS0tLQ0KY2FtMGR3LWNzaSBlMTQwMDAwMC5jc2kyaG9zdDogbnVtYmVyIG9mIGxh bmVzOiAyDQoNCnBoeSBwaHktZTE0MDAwNDAuZHBoeS4wOiBQSFkgU3RvcCBzdGF0ZSBub3QgcmVh Y2hlZCAwDQo3NS4zNzgwODJwb3dlciBvZmYNCiAgLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0t LWUtLS0tLS0tDQo0V0FSTklORzogQ1BVOiAwIFBJRDogMjMwIGF0IA0KZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9hdG1lbC9taWNyb2NoaXAtY3NpMmRjLmM6MzM1IA0KY3NpMmRjX3J1bnRpbWVfc3Vz cGVuZCsweDM0LzB4NmMNCk1vZHVsZXMgbGlua2VkIGluOiBpbXgyMTkgZHdfY3NpIGR3X2RwaHkN CkNQVTogMCBQSUQ6IDIzMCBDb21tOiBjYW0gVGFpbnRlZDogRyAgICAgICAgVyAgICAgICAgIDUu MTYuMC1yYzQrICM2Mw0KSGFyZHdhcmUgbmFtZTogTWljcm9jaGlwIFNBTUE3DQpbPGMwMTBiOWRj Pl0gKHVud2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDEwOTc1Yz5dIChzaG93X3N0YWNrKzB4MTAv MHgxNCkNCls8YzAxMDk3NWM+XSAoc2hvd19zdGFjaykgZnJvbSBbPGMwNzU1YWEwPl0gKF9fd2Fy bisweGQwLzB4MTI4KQ0KWzxjMDc1NWFhMD5dIChfX3dhcm4pIGZyb20gWzxjMDc1NWI3MD5dICh3 YXJuX3Nsb3dwYXRoX2ZtdCsweDc4LzB4YWMpDQpbPGMwNzU1YjcwPl0gKHdhcm5fc2xvd3BhdGhf Zm10KSBmcm9tIFs8YzA3NWI0Y2M+XSANCihjc2kyZGNfcnVudGltZV9zdXNwZW5kKzB4MzQvMHg2 YykNCls8YzA3NWI0Y2M+XSAoY3NpMmRjX3J1bnRpbWVfc3VzcGVuZCkgZnJvbSBbPGMwNDExNGI4 Pl0gDQooX19ycG1fY2FsbGJhY2srMHgzMC8weGU0KQ0KWzxjMDQxMTRiOD5dIChfX3JwbV9jYWxs YmFjaykgZnJvbSBbPGMwNDExNWNjPl0gKHJwbV9jYWxsYmFjaysweDYwLzB4NjQpDQpbPGMwNDEx NWNjPl0gKHJwbV9jYWxsYmFjaykgZnJvbSBbPGMwNDEwZTI4Pl0gKHJwbV9zdXNwZW5kKzB4ZDAv MHg0YmMpDQpbPGMwNDEwZTI4Pl0gKHJwbV9zdXNwZW5kKSBmcm9tIFs8YzA0MTEzNmM+XSAoX19w bV9ydW50aW1lX2lkbGUrMHgzYy8weDRjKQ0KWzxjMDQxMTM2Yz5dIChfX3BtX3J1bnRpbWVfaWRs ZSkgZnJvbSBbPGMwNTAwZDk4Pl0gDQooY3NpMmRjX3Nfc3RyZWFtKzB4ODQvMHgzMzApDQpbPGMw NTAwZDk4Pl0gKGNzaTJkY19zX3N0cmVhbSkgZnJvbSBbPGMwNGZjYzdjPl0gDQooaXNjX3N0b3Bf c3RyZWFtaW5nKzB4MTM0LzB4MTc0KQ0KWzxjMDRmY2M3Yz5dIChpc2Nfc3RvcF9zdHJlYW1pbmcp IGZyb20gWzxjMDRmNWRkOD5dIA0KKF9fdmIyX3F1ZXVlX2NhbmNlbCsweDI4LzB4MmE0KQ0KWzxj MDRmNWRkOD5dIChfX3ZiMl9xdWV1ZV9jYW5jZWwpIGZyb20gWzxjMDRmNjA2Yz5dIA0KKHZiMl9j b3JlX3N0cmVhbW9mZisweDE4LzB4YWMpDQpbPGMwNGY2MDZjPl0gKHZiMl9jb3JlX3N0cmVhbW9m ZikgZnJvbSBbPGMwNGRkMGRjPl0gDQooX192aWRlb19kb19pb2N0bCsweDIzNC8weDQ5MCkNCls8 YzA0ZGQwZGM+XSAoX192aWRlb19kb19pb2N0bCkgZnJvbSBbPGMwNGRlNDEwPl0gDQoodmlkZW9f dXNlcmNvcHkrMHgxYjQvMHg1NTApDQpbPGMwNGRlNDEwPl0gKHZpZGVvX3VzZXJjb3B5KSBmcm9t IFs8YzAxZTc3Yjg+XSAoc3lzX2lvY3RsKzB4MjI0LzB4YTBjKQ0KWzxjMDFlNzdiOD5dIChzeXNf aW9jdGwpIGZyb20gWzxjMDEwMDA2MD5dIChyZXRfZmFzdF9zeXNjYWxsKzB4MC8weDUwKQ0KRXhj ZXB0aW9uIHN0YWNrKDB4YzQ2ZTdmYTggdG8gMHhjNDZlN2ZmMCkNCjdmYTA6ICAgICAgICAgICAg ICAgICAgIGI1ZDA3MDg4IGI2ZmI1ZDU4IDAwMDAwMDExIDQwMDQ1NjEzIGI1ZDA3MWJjIA0KMDAw MDAwMDENCjdmYzA6IGI1ZDA3MDg4IGI2ZmI1ZDU4IGI1ZDAxZTIwIDAwMDAwMDM2IGI1ZDAwOGI4 IDAwMDAwMDAwIGI1ZDAxZTIwIA0KMDA1NGVjMDANCjdmZTA6IGI2ZmI2M2E4IGI2NmRhN2I0IGI2 ZjcwZDg4IGI2YmE5ZmVjDQotLS1bIGVuZCB0cmFjZSA3MjA0ZTE4NzFjYWU5NmU4IF0tLS0NCiMN CiMNCg0KV2hpY2ggaXMgZXhwZWN0ZWQsIG9uIHN0YXJ0IHN0cmVhbWluZywgdGhlIHBvd2VyIG9u IGlzIGNhbGxlZCwgYW5kIG9uIA0Kc3RvcCBzdHJlYW1pbmcgdGhlIHBvd2VyIG9mZi4NCg0KDQpT byBpdCBsb29rcyBsaWtlIHRoZSBkcml2ZXIgZG9lcyBwbV9ydW50aW1lX3NldF9hY3RpdmUsIG1l YW5pbmcgdGhlIA0KcG93ZXIgc3RhdGUgaXMgYWN0aXZlICh3aGljaCBpcyBzb21ldGhpbmcgdGhh dCBJIGRvIGJ5IGNhbGxpbmcgZmlyc3QgDQpjc2kyZGNfcG93ZXIodHJ1ZSkpLCBhbmQgYWZ0ZXIg cHJvYmluZyBpcyBkb25lLCBpdCdzIGF1dG9tYXRpY2FsbHkgc2VudCANCnRvIHN1c3BlbmQgbW9k ZS4NCg0KU28gaWYgSSBkbyBjc2kyZGNfcG93ZXIoZmFsc2UpIGJlZm9yZSBmaW5pc2ggcHJvYmlu ZywgdGhlcmUgd2lsbCBiZSBhIA0KcHJvYmxlbSBiZWNhdXNlIGl0IHdpbGwgYmUgY2FsbGVkIGFn YWluIGJ5IHRoZSBzdWJzeXN0ZW0sIGxlYWRpbmcgdG8gDQppc3N1ZXMgd2l0aCBkb3VibGUgY2xv Y2sgdW5wcmVwYXJpbmcuLi4gZXRjLg0KDQpTbyB5b3UgYXJlIGZpbmUgd2l0aCB0aGlzIHNlcXVl bmNlPw0KDQouLmluaXQgdGhpcy4uDQouLmluaXQgdGhhdC4uDQpjc2kyZGNfcG93ZXIodHJ1ZSkN CnJlYWRsKCk7DQoNCnBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpOw0KcG1fcnVudGltZV9lbmFibGUo KTsNCg0KLi5maW5pc2ggcHJvYmluZy4uDQoNCg0KVGhhbmtzIGFnYWluLA0KRXVnZW4NCg0KDQo+ Pg0KPj4+DQo+Pj4+ICsNCj4+Pj4gKyAgICAgLyoNCj4+Pj4gKyAgICAgICogd2UgbXVzdCByZWdp c3RlciB0aGUgc3ViZGV2IGFmdGVyIFBNIHJ1bnRpbWUgaGFzIGJlZW4gcmVxdWVzdGVkLA0KPj4+ PiArICAgICAgKiBvdGhlcndpc2Ugd2UgbWlnaHQgYm91bmQgaW1tZWRpYXRlbHkgYW5kIHJlcXVl c3QgcG1fcnVudGltZV9yZXN1bWUNCj4+Pj4gKyAgICAgICogYmVmb3JlIHJ1bnRpbWVfZW5hYmxl Lg0KPj4+PiArICAgICAgKi8NCj4+Pj4gKyAgICAgcmV0ID0gdjRsMl9hc3luY19yZWdpc3Rlcl9z dWJkZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsNCj4+Pj4gKyAgICAgaWYgKHJldCkgew0KPj4+PiAr ICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgdGhl IHN1YmRldmljZVxuIik7DQo+Pj4+ICsgICAgICAgICAgICAgZ290byBjc2kyZGNfcHJvYmVfY2xl YW51cF9ub3RpZmllcjsNCj4+Pj4gKyAgICAgfQ0KPj4+PiArDQo+Pj4+ICsgICAgIGRldl9pbmZv KGRldiwgIk1pY3JvY2hpcCBDU0kyREMgdmVyc2lvbiAleFxuIiwgdmVyKTsNCj4+Pj4gKw0KPj4+ PiArICAgICByZXR1cm4gMDsNCj4+Pj4gKw0KPj4+PiArY3NpMmRjX3Byb2JlX2NsZWFudXBfbm90 aWZpZXI6DQo+Pj4+ICsgICAgIHY0bDJfYXN5bmNfbmZfY2xlYW51cCgmY3NpMmRjLT5ub3RpZmll cik7DQo+Pj4+ICtjc2kyZGNfcHJvYmVfY2xlYW51cF9lbnRpdHk6DQo+Pj4+ICsgICAgIG1lZGlh X2VudGl0eV9jbGVhbnVwKCZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkpOw0KPj4+DQo+Pj4gSSB3 YXNuJ3QgaG9uZXN0bHkgZXhwZWN0aW5nIHRoaXMNCj4+Pg0KPj4+IC8qKg0KPj4+ICAgICogbWVk aWFfZW50aXR5X2NsZWFudXAoKSAtIGZyZWUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBl bnRpdHkNCj4+PiAgICAqDQo+Pj4gICAgKiBAZW50aXR5OiAgICAgZW50aXR5IHdoZXJlIHRoZSBw YWRzIGJlbG9uZw0KPj4+ICAgICoNCj4+PiAgICAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxs ZWQgZHVyaW5nIHRoZSBjbGVhbnVwIHBoYXNlIGFmdGVyIHVucmVnaXN0ZXJpbmcNCj4+PiAgICAq IHRoZSBlbnRpdHkgKGN1cnJlbnRseSwgaXQgZG9lcyBub3RoaW5nKS4NCj4+PiAgICAqLw0KPj4+ ICNpZiBJU19FTkFCTEVEKENPTkZJR19NRURJQV9DT05UUk9MTEVSKQ0KPj4+IHN0YXRpYyBpbmxp bmUgdm9pZCBtZWRpYV9lbnRpdHlfY2xlYW51cChzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHkp IHt9DQo+Pj4NCj4+PiA6KQ0KPj4NCj4+IEkgc2F3IGl0IGFzIHdlbGwuIEJ1dCBJIHRob3VnaHQg dGhhdCB3aG8ga25vd3MsIGluIHRoZSBmdXR1cmUgaXQgbWlnaHQNCj4+IGRvIHNvbWV0aGluZywg c28gaXQncyBiZXR0ZXIgdG8gaGF2ZSBpdCBpbiB0aGUgZHJpdmVyIHJhdGhlciB0aGFuIG5vdA0K Pj4gaGF2ZSBpdCBhdCBhbGwuDQo+Pg0KPj4NCj4+IFRoYW5rcyBhZ2FpbiBmb3IgcmV2aWV3aW5n LA0KPj4gRXVnZW4NCj4+DQo+Pj4NCj4+Pj4gKw0KPj4+PiArICAgICByZXR1cm4gcmV0Ow0KPj4+ PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50IGNzaTJkY19yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4+Pj4gK3sNCj4+Pj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZp Y2UgKmNzaTJkYyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPj4+PiArDQo+Pj4+ICsg ICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsNCj4+Pj4gKw0KPj4+PiArICAgICB2 NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KCZjc2kyZGMtPmNzaTJkY19zZCk7DQo+Pj4+ICsg ICAgIHY0bDJfYXN5bmNfbmZfdW5yZWdpc3RlcigmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4+ICsg ICAgIHY0bDJfYXN5bmNfbmZfY2xlYW51cCgmY3NpMmRjLT5ub3RpZmllcik7DQo+Pj4+ICsgICAg IG1lZGlhX2VudGl0eV9jbGVhbnVwKCZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkpOw0KPj4+PiAr DQo+Pj4+ICsgICAgIHJldHVybiAwOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgaW50 IF9fbWF5YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2 KQ0KPj4+PiArew0KPj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gZGV2 X2dldF9kcnZkYXRhKGRldik7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0dXJuIGNzaTJkY19wb3dl cihjc2kyZGMsIGZhbHNlKTsNCj4+Pj4gK30NCj4+Pj4gKw0KPj4+PiArc3RhdGljIGludCBfX21h eWJlX3VudXNlZCBjc2kyZGNfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4+ PiArew0KPj4+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgcmV0dXJuIGNzaTJkY19wb3dlcihjc2ky ZGMsIHRydWUpOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRl dl9wbV9vcHMgY3NpMmRjX2Rldl9wbV9vcHMgPSB7DQo+Pj4+ICsgICAgIFNFVF9SVU5USU1FX1BN X09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBjc2kyZGNfcnVudGltZV9yZXN1bWUsIE5VTEwp DQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCBjc2kyZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+Pj4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJtaWNy b2NoaXAsc2FtYTdnNS1jc2kyZGMiIH0sDQo+Pj4+ICsgICAgIHsgfQ0KPj4+PiArfTsNCj4+Pj4g Kw0KPj4+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgY3NpMmRjX29mX21hdGNoKTsNCj4+Pj4g Kw0KPj4+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY3NpMmRjX2RyaXZlciA9IHsN Cj4+Pj4gKyAgICAgLnByb2JlICA9IGNzaTJkY19wcm9iZSwNCj4+Pj4gKyAgICAgLnJlbW92ZSA9 IGNzaTJkY19yZW1vdmUsDQo+Pj4+ICsgICAgIC5kcml2ZXIgPSB7DQo+Pj4+ICsgICAgICAgICAg ICAgLm5hbWUgPSAgICAgICAgICAgICAgICAgIm1pY3JvY2hpcC1jc2kyZGMiLA0KPj4+PiArICAg ICAgICAgICAgIC5wbSA9ICAgICAgICAgICAgICAgICAgICZjc2kyZGNfZGV2X3BtX29wcywNCj4+ Pj4gKyAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSAgICAgICBvZl9tYXRjaF9wdHIoY3Np MmRjX29mX21hdGNoKSwNCj4+Pj4gKyAgICAgfSwNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gK21v ZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY3NpMmRjX2RyaXZlcik7DQo+Pj4+ICsNCj4+Pj4gK01PRFVM RV9BVVRIT1IoIkV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWljcm9jaGlwLmNvbT4iKTsN Cj4+Pj4gK01PRFVMRV9ERVNDUklQVElPTigiTWljcm9jaGlwIENTSTIgRGVtdXggQ29udHJvbGxl ciBkcml2ZXIiKTsNCj4+Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+Pj4gLS0NCj4+ Pj4gMi4yNS4xDQo+Pj4+DQo+Pg0KDQo=