From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.107.223.75]) by mx.groups.io with SMTP id smtpd.web12.4940.1618961088840425114 for ; Tue, 20 Apr 2021 16:24:49 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=Q/aEgOP3; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.223.75, mailfrom: jrahn@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k6b2gcnmvIWJqWJCsHRZEf79v4MhlbX7aFOxKxYS0g0wwM5JN1tajkG/DFyGVlQOMR1j3yDGHarHsDZDoh0dLE1Uu0jmOjyfbMQhQcUNVFPDkgMtif3QW8vbIZcWjKaZ1MxbS9jqWznObvUNo/Ad4wGn3z9s+2fL3uqSwMd3iV4xFlQ3LWixxR/AON962W5tnvMyfrvH61EmeFmw9pUJnxrZJaerAHuCdLQyuTJagqVXdzVl8xulvuUGsBbJ1Ux4PwplNjfS9SOjHe+A5SNIy96hjYTwODxh1woxG+BWWqsAai619ucuWxQVUp+8bI4Qc7axkjHa9/Og6ZaZ94Lwwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WgGjgOGLtUt9MtEpmHxmyKIdn+0rFsxywtx7fHaNe0Y=; b=i1pjcT+/x2fFjBon3dTzioXR6zobcABykmgwbGLD9uHr5pitPvYffChVLHemeqlOOHVvc1HGfT7zJZq2vTsP3ovn4MG6i61kEwIWbk25I0rJnxg0xYBTK/DQk5GePLRwNritzxaJO0a/9UWgFDLo3ECrKYhA98ot7irw3/iU5/n8EB/wjW4Yf8PMQsPBgUUqGKcvDrpU1rYh4uAkaWpIC4U5/whFR4yroAt1Tr9LJq3C3GDb+UgPyzCwf2+16oZgmZ7rkYAP1sW4JJikIE7orjoTdy6BgaqWarmtij8myEz1ZZkoBkODVvOiSKJEzCfxerIlwv7WuLZKQLKnRWM4HQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WgGjgOGLtUt9MtEpmHxmyKIdn+0rFsxywtx7fHaNe0Y=; b=Q/aEgOP3mc85OkSeqjm5EkyJ9mzvRtRIr8jdhL+EPpFxKgjzQvRsHx7h4//SmlpYp9HH1nq1JCHR8pcW0v2RuVNQyYcSmlQYsBBIdxUeKsO4tZ8EyUggGZpEAUcxGrCmoYKFKmqBcBC+T2ZGsHf79VtKvgscpGthYSjRqb34+vD/jEPMOT/k3ujvCgQYUDawg5M0srdiYDw/9IgNT0JBvjIEIUBmbTL8Yl4Jy8bpdRAUoYVTqJ+KaQOmQwcVmweK/5jn0OqOv2J9rpEHaf65uN1CXNXA+q9q00taLC272Cq/1S4rIihax4DIfNBjlQ2C0q5AgeCaa0eLviXvpbj16Q== Received: from MN2PR12MB3278.namprd12.prod.outlook.com (2603:10b6:208:ac::19) by MN2PR12MB3232.namprd12.prod.outlook.com (2603:10b6:208:ab::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.21; Tue, 20 Apr 2021 23:24:47 +0000 Received: from MN2PR12MB3278.namprd12.prod.outlook.com ([fe80::c40b:b718:b11d:9d56]) by MN2PR12MB3278.namprd12.prod.outlook.com ([fe80::c40b:b718:b11d:9d56%7]) with mapi id 15.20.4042.024; Tue, 20 Apr 2021 23:24:46 +0000 From: "John Rahn" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Liming Gao , "Jiang, Guomin" , "Xu, Wei6" , John Rahn Subject: Re: [PATCH v1 1/1] FmpDevicePkg: FmpDeviceLib interface change for Driver Unload support Thread-Topic: [PATCH v1 1/1] FmpDevicePkg: FmpDeviceLib interface change for Driver Unload support Thread-Index: AQHXNi0uycBt+40jd0a8lwbAy7GoUKq9/YNggAAF0vA= Date: Tue, 20 Apr 2021 23:24:46 +0000 Message-ID: References: <20210420213557.9498-1-jrahn@nvidia.com> <20210420213557.9498-2-jrahn@nvidia.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [216.228.112.21] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ebf929e8-5319-4898-c052-08d904537c94 x-ms-traffictypediagnostic: MN2PR12MB3232: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: APDTviFzOxSB33ur958ijOws4skV2MCwVPvBl+xlHmpWGdnSYY/d1992lRo3UKUWvOF2Sz1OPbvnyB+HtOojmD6K2Vx6/PzjauSvFTt4pSP819CmCgEyHy1W2N9DWVpUVgGxtKZvY9MU3U0WGB6wd2yozxU91w0OQEmqRi3D+C6vfOiEJcipomKuAW4aCDk8taRaNwHKUbUKX8ZQNfvySjj9Yf8r6F3B/w9NVfY+qT09T7yOzosY3IOP2BakkKOmY4tFjW96fSgYXU1obdDQV6SBHZuXg26vu52ICvx+/d8j5GL+lOO59sZY8GE60PZDa+UsKgSr37KWNWOVfSwwEA2Es+kZlvIsCJND7mWRVhyU+zp7m3AdbhE7x/yEbDSQWDTeS1HfHv3tYX3dGb3j6Fy+2YwaJwOgDMqx3yLsChoD49w513aeH0fo5SBC9yrfHeyt0vRy/KZ/H5ZHdcO3NuKtPOG045lKX3buaFhQ82pWMe6LEMAEnat2IVm9wVKQ2Olq2o4Pdp6dPtIyyAUJD6h/EfNrMobZPY8crpWDXMj4ry8xTCt0JCKddgmBVcRWoyYyNYtSGlPq3tiaittkkMIQdXb8UWQaj1U9RmA8kiVjFn6HxqJd8rJAfOxYcYi0S8CiFiVmLw/Ng2IwbSm0w8yG6+h9FK/tP3913N+1A9G8G5SzWDmcfeB7DsadPhrq x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR12MB3278.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(346002)(396003)(136003)(39860400002)(366004)(4326008)(966005)(110136005)(122000001)(66556008)(107886003)(53546011)(30864003)(19627235002)(38100700002)(8936002)(54906003)(5660300002)(33656002)(52536014)(83380400001)(76116006)(8676002)(9686003)(478600001)(316002)(86362001)(186003)(55016002)(64756008)(26005)(66946007)(66446008)(6506007)(71200400001)(7696005)(66476007)(2906002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?M1NaUEszRVJuWmNZL1lLMTk0YzRkU1BJcXV4K0FCNmdsY3hYcTBwMjIzQnZ2?= =?utf-8?B?dThZMFdTUTRWMUNPcmt2dXJVN0JRS0VieTJBRXNibmd0ZFJUbkw4QzZjeEFO?= =?utf-8?B?Z3RIOEpJTytpZWZiK3p6LzVnUUZZMUdFY1Q5cGR4RGNFcFhVZEh5ZnlaZ0Fn?= =?utf-8?B?SlA3N1NnSTNtbytmc1ZUYnhWR09qczNhR2s3NlRraWp2NlFtZ3pjSzJXeG0r?= =?utf-8?B?bENwcjRzMDRxMHlwSkVYb0lONDZmcCsyMzVzOGhzM3o4WUVzdy9OT3YzSTBs?= =?utf-8?B?b3pUYU1naXA5b3hDQ3kzbUFHV2l4UDNxbDN3a083MTR5MXQ5Z1FNVzc1ZW02?= =?utf-8?B?ejJjTS82VmhEaU5jQWwrUGp0YjFlYXB1UHhkK2M0K1RkWG1scDNZOHdXd3E1?= =?utf-8?B?Y1VhOFZYZ3EraURJeVJGdnNRZHhWaE1ydStmMVNCQ1FqREs5RDBZYnZrM2tH?= =?utf-8?B?ZHp5UXN2QWUvWHBybE9MdU9aR2NVNDZPMFhGM09vekhacUJ6bGd1RzJ2NGl3?= =?utf-8?B?NG5kaE4yeUdnWmNDbHUzayt2dWVqZTJlR0lpbWlvL1JxcW9lWGh0c0hmRWR2?= =?utf-8?B?ZkE1M21TazJuMVB2OFB3dWlKU1ZVd2U0OEZCZXlqdlhXZEJyV0tzYmNZMWhX?= =?utf-8?B?M2VhS1l0M05MNjI0eGZrbjNZZ0F1SGdsNWJsZmNuNUhhdVZncHh3YlkwWW4x?= =?utf-8?B?REV0ZVVTTmpTczVmNlgrS0ExemNwK20yM1paVFc5YkF6NmlZZGhibXc2TCtK?= =?utf-8?B?RjQveHJtTUNDODFrRFkyUnRJU29PTWRqeE5vNlFjRFpMWlVYWWZ6ckVsWWkv?= =?utf-8?B?TnpIb2laS1lMWnNVRVNHTW1KcmhZRW9MZisvUTEwQXlqcHZZeVFoOGROY0Zw?= =?utf-8?B?UXZaWGZCak9kcFZnWWlrZ1lXeXVycHBYZHE3MytYQ3dDeDljVCsvbzM0cTFP?= =?utf-8?B?ZkdGZEJFM1hVY3c0dWN5b2FOcnJ5c2YrUEFGN1lLSDk3N1BiRFpUd01Hbk9O?= =?utf-8?B?N3BFQnFGMTRZd1hKaXIzSnhLaVh2REY2TXIwK0twL3FneUxtUjZGSVJFekJ3?= =?utf-8?B?Sm9iWlluMkUwYjhDeGRCMkhGT3RDa1dRMjlmMDlzZmlQVHBDZ2RCME10NHdL?= =?utf-8?B?cHVXS2dINE9sdUQrelROcFdYNW04NExTdTlJZWRsSjlIbUJROXF1THhMV1VE?= =?utf-8?B?cWR5UFIrMDlaRGJWQi9qL1ZoSk9QSVZhK3FPaUdEYzFhMkRkakRzSm9SSE1s?= =?utf-8?B?YWxaaVBUWGlLOHNJZkJmdUVDZDhmWkE4YUFjMzJ0N0RIY3Q0MDhsdkJkaGwx?= =?utf-8?B?ZTFDemhnT1d6QkFHQ1NWOWV2N1FXUlkwRTExclRnTi9CRFBPTFRxMmgyMHIz?= =?utf-8?B?RUV6MEFGRTlwMFVxQnNjV3lEVmtOQnVvR2lhT3h6dk41UTl3YWQyVXlFS2oy?= =?utf-8?B?cDRqWlhWejhoZGZGQUplMzVJczBhRTMyS2NJN24yWHdydnpwNnVCek1LRDFP?= =?utf-8?B?N01qMmJGYVdDSjdiTDZnYlNSRWV4b1lFQUh6OGpSSHBxTUlVR3M5QmVGZlhy?= =?utf-8?B?RHg1Mnlkd2c0MyszSWovVTltL05BMWhKdlBpelpwancwMGlWTGxXQ2Q2eTk2?= =?utf-8?B?RGlpcGM2OWNHczd3L09UcDIvdnh0WDE4cCtTZnJDbG9yRG54aTM2QzRaczd0?= =?utf-8?B?dnE1b3lYSU9CaEJlUVVFdXVQN0tDaHRWMnJVMktWVDlFK0dENDFESmJOekxw?= =?utf-8?Q?kawpGGzAAaYh5zWqyMNyo90c0GZHJ5mDrY1mkBu?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3278.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebf929e8-5319-4898-c052-08d904537c94 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2021 23:24:46.7126 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bV4ocyCjJQdk6ODUae8VgXXiJSEBbyN3QOkzXVJCbxUN9cqOpLCEk1Z/yHyBBlqOGK0ZGiSadzdL2C+8bQpEkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3232 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RHJpdmVyIHVubG9hZCBpbiB0aGUgc2FtcGxlIEZtcER4ZSBpcyBjdXJyZW50bHkgY29uZmlndXJl ZCB0byBkaXJlY3RseSBjYWxsIFVuaW5zdGFsbEZtcEluc3RhbmNlICAoVU5MT0FEX0lNQUdFKSB3 aXRoIHRoZSBJbWFnZUhhbmRsZSBhbmQgRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkIGJlY2F1 c2UgdGhlIGRyaXZlciBiaW5kaW5nIHByb3ZpZGVkIGJ5IEZtcERldmljZUxpYiBpcyBtYW5hZ2lu ZyB0aGUgaW5zdGFuY2Ugb24gdGhlIERldmljZUhhbmRsZSwgbm90IHRoZSBJbWFnZUhhbmRsZS4N ClRoZSBGbXBEZXZpY2VMaWIgc3VwcG9ydGluZyB0aGUgVUVGSSBEcml2ZXIgQmluZGluZyBtb2Rl bCBpcyBuZXZlciBub3RpZmllZCBvZiB0aGUgZHJpdmVyIHVubG9hZCBhbmQgdGhlIEZtcCBJbnN0 YW5jZShzKSBhcmUgbm90IHVuaW5zdGFsbGVkIGFuZCB0aGUgZHJpdmVyIGlzIG5vdCB1bmxvYWRl ZC4NClRoZSBzYW1wbGUgRm1wRHhlIGRvZXMgbm90IHByb3ZpZGUgYSBpbnRlcmZhY2UgZm9yIHRo ZSByZXF1aXJlZCBkcml2ZXIgdW5sb2FkIG5vdGlmaWNhdGlvbiB0byBiZSBwYXNzZWQgdG8gdGhl IEZtcERldmljZUxpYiBpbXBsZW1lbnRhdGlvbi4NCkF0dGVtcHRpbmcgdG8gaGF2ZSB0aGUgVW5p bnN0YWxsRm1wSW5zdGFuY2UgaW4gdGhlIHNhbXBsZSBGbXBEeGUgY2hlY2sgRm1wIGluc3RhbmNl cyBmb3IgZHJpdmVycyBtYW5hZ2luZyB0aGUgZGV2aWNlIGFuZCBjYWxsaW5nIERyaXZlclN0b3Ag d2l0aCB0aGUgRGV2aWNlSGFuZGxlIGRpZG4ndCBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCBkcml2 ZXIgaW1wbGVtZW50YXRpb24gbW9kZWwgYW5kIHdhcyBub3QgYXMgc3RyYWlnaHRmb3J3YXJkIG9m IGFuIGFwcHJvYWNoIGFzIGV4cG9zaW5nIGEgZHJpdmVyIHVubG9hZCBpbnRlcmZhY2UgZm9yIEZt cERldmljZUxpYiB1c2UgZm9yIHRoZSBkcml2ZXIgdW5sb2FkIG5vdGlmaWNhdGlvbiwgc28gdGhh dCB0aGUgRm1wRGV2aWNlTGliIGNhbiBwcm9wZXJseSBzdG9wIG9uIGl0J3MgbWFuYWdlZCBkZXZp Y2VzIGFuZCBjbGVhbiB1cCBhbnkgaW50ZXJuYWwgY29udGV4dC9wcml2YXRlIGRhdGEuDQoNCkEg Rm1wRGV2aWNlTGliIGZvbGxvd2luZyB0aGUgZHJpdmVyIGJpbmRpbmcgbW9kZWwgYW5kIGltcGxl bWVudGluZyB0aGUgcHJvcG9zZWQgaW50ZXJmYWNlIGNhbiB1bmxvYWQgdGhlIEZtcCBpbnN0YW5j ZShzKSBiZWluZyBtYW5hZ2VkIGFuZCBjbGVhbiB1cCBhbnkgYWxsb2NhdGlvbnMgYmVmb3JlIGV4 aXQuIEFueSByZW1haW5pbmcgYWxsb2NhdGlvbnMgaW4gdGhlIEZtcER4ZSBhcmUgcHJvcGVybHkg ZGVhbHQgd2l0aCBpbiB0aGUgVW5pbnN0YWxsRm1wSW5zdGFuY2UgcGF0aC4NCg0KSSB3YXMgYWJs ZSB0byBzdWNjZXNzZnVsbHkgYnVpbGQgYSBmdW5jdGlvbmFsIEZtcERldmljZUxpYiB0aGF0IHdp bGwgcHJvcGVybHkgdW5sb2FkIHRoZSBpbnN0YWxsZWQgRm1wIGluc3RhbmNlKHMpIHVzaW5nIHRo ZSBwcm9wb3NlZCBpbnRlcmZhY2UgY2hhbmdlLg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPiAN ClNlbnQ6IFR1ZXNkYXksIEFwcmlsIDIwLCAyMDIxIDM6MzcgUE0NClRvOiBKb2huIFJhaG4gPEpS YWhuQG52aWRpYS5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5LCBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0Bi eW9zb2Z0LmNvbS5jbj47IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBY dSwgV2VpNiA8d2VpNi54dUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSRTogW1BBVENIIHYxIDEvMV0g Rm1wRGV2aWNlUGtnOiBGbXBEZXZpY2VMaWIgaW50ZXJmYWNlIGNoYW5nZSBmb3IgRHJpdmVyIFVu bG9hZCBzdXBwb3J0DQoNCkV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtz IG9yIGF0dGFjaG1lbnRzDQoNCg0KSGkgSm9obiwNCg0KVGhlIEZtcERldmljZUxpYiBwcm92aWRl cyB0aGUgUmVnaXN0ZXJGbXBJbnN0YWxsZXIoKSBhbmQgUmVnaXN0ZXJGbXBVbmluc3RhbGxlcigp IEFQSXMgZm9yIFVFRkkgRHJpdmVyIE1vZGVsIGRyaXZlcnMgdG8gbWFuYWdlIHRoZSBGTVAgY29u dGV4dHMuDQoNCldoeSBkb2VzIHRoZSBVbmxvYWQgbmVlZCB0byBiZSBleHRlbmRlZCBpbnRvIHRo ZSBGbXBEZXZpY2VMaWIgd2hlbiB0aGVzZSBBUElzIGFyZSB1c2VkPyAgSSB3b3VsZCB0aGluayB0 aGF0IGEgVUVGSSBEcml2ZXIgTW9kZWwgRHJpdmVyIHRoYXQgc3VwcG9ydHMgRk1QIGNvdWxkIGNh bGwgU3RvcCgpIG9uIGFsbCBpbnN0YW5jZXMgd2hlbiBhbiBVbmxvYWQoKSByZXF1ZXN0IGlzIHJl Y2VpdmVkIGFuZCB0aGUgU3RvcCgpIHNlcnZpY2VzIHdvdWxkIHVzZSB0aGUgRk1QIFVuaW5zdGFs bGVyIHBhdGggdG8gY2xlYW4gdXAgdGhlIEZNUCBpbnN0YW5jZXMuICBJZiBhbGwgU3RvcHMoKSBz dWNjZWVkLCB0aGVuIHRoZSBVRUZJIERyaXZlciB0aGF0IGlzIHByb2R1Y2luZyB0aGUgRk1QIGlu c3RhbmNlcyBjYW4gYmUgdW5sb2FkZWQsDQoNCg0KLyoqDQogIENhbGxiYWNrIGZ1bmN0aW9uIHRo YXQgaW5zdGFsbHMgYSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIG9udG8N CiAgYSBoYW5kbGUuDQoNCiAgQHBhcmFtW2luXSAgSGFuZGxlICBUaGUgZGV2aWNlIGhhbmRsZSB0 byBpbnN0YWxsIGEgRmlybXdhcmUgTWFuYWdlbWVudA0KICAgICAgICAgICAgICAgICAgICAgIFBy b3RvY29sIGluc3RhbmNlLg0KDQogIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICAgICAgQSBG aXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIHdhcw0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBvbnRvIEhhbmRsZS4NCiAgQHJldHZhbCAgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICBIYW5kbGUgaXMgaW52YWxpZA0KICBAcmV0dmFsICBvdGhlciAg ICAgICAgICAgICAgICAgIEEgRmlybXdhcmUgTWFuYWdlbWVudCBQcm90b2NvbCBpbnN0YW5jZSBj b3VsZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZSBpbnN0YWxsZWQg b250byBIYW5kbGUuDQoNCioqLw0KdHlwZWRlZg0KRUZJX1NUQVRVUw0KKEVGSUFQSSAqRk1QX0RF VklDRV9MSUJfUkVHSVNURVJfRk1QX0lOU1RBTExFUikoDQogIElOICBFRklfSEFORExFICAgICAg SGFuZGxlDQogICk7DQoNCi8qKg0KICBDYWxsYmFjayBmdW5jdGlvbiB0aGF0IHVuaW5zdGFsbHMg YSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIGZyb20NCiAgYSBoYW5kbGUu DQoNCiAgQHBhcmFtW2luXSAgSGFuZGxlICBUaGUgZGV2aWNlIGhhbmRsZSB0byB1bmluc3RhbGwg YSBGaXJtd2FyZSBNYW5hZ2VtZW50DQogICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgaW5z dGFuY2UuDQoNCiAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICAgICBBIEZpcm13YXJlIE1h bmFnZW1lbnQgUHJvdG9jb2wgaW5zdGFuY2Ugd2FzDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5pbnN0YWxsZWQgZnJvbSBIYW5kbGUuDQogIEByZXR2YWwgIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgSGFuZGxlIGlzIGludmFsaWQNCiAgQHJldHZhbCAgb3RoZXIgICAgICAgICAg ICAgICAgICBBIEZpcm13YXJlIE1hbmFnZW1lbnQgUHJvdG9jb2wgaW5zdGFuY2UgY291bGQNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYmUgdW5pbnN0YWxsZWQgZnJvbSBI YW5kbGUuDQoNCioqLw0KdHlwZWRlZg0KRUZJX1NUQVRVUw0KKEVGSUFQSSAqRk1QX0RFVklDRV9M SUJfUkVHSVNURVJfRk1QX1VOSU5TVEFMTEVSKSgNCiAgSU4gIEVGSV9IQU5ETEUgICAgICBIYW5k bGUNCiAgKTsNCg0KLyoqDQogIFByb3ZpZGUgYSBmdW5jdGlvbiB0byBpbnN0YWxsIHRoZSBGaXJt d2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIG9udG8gYQ0KICBkZXZpY2UgaGFuZGxl IHdoZW4gdGhlIGRldmljZSBpcyBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRoYXQgZm9sbG93cyB0aGUg VUVGSQ0KICBEcml2ZXIgTW9kZWwuICBJZiB0aGUgZGV2aWNlIGlzIG5vdCBtYW5hZ2VkIGJ5IGEg ZHJpdmVyIHRoYXQgZm9sbG93cyB0aGUgVUVGSQ0KICBEcml2ZXIgTW9kZWwsIHRoZW4gRUZJX1VO U1VQUE9SVEVEIGlzIHJldHVybmVkLg0KDQogIEBwYXJhbVtpbl0gRm1wSW5zdGFsbGVyICBGdW5j dGlvbiB0aGF0IGluc3RhbGxzIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50DQogICAgICAgICAgICAg ICAgICAgICAgICAgICBQcm90b2NvbC4NCg0KICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgVGhl IGRldmljZSBpcyBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRoYXQgZm9sbG93cyB0aGUNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIFVFRkkgRHJpdmVyIE1vZGVsLiAgRm1wSW5zdGFsbGVyIG11c3Qg YmUgY2FsbGVkIG9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIERyaXZlciBCaW5k aW5nIFN0YXJ0KCkuDQogIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICBUaGUgZGV2aWNlIGlzIG5v dCBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRoYXQgZm9sbG93cw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhlIFVFRkkgRHJpdmVyIE1vZGVsLg0KICBAcmV0dmFsIG90aGVyICAgICAgICAgICAg VGhlIEZpcm13YXJlIE1hbmFnZW1lbnQgUHJvdG9jb2wgZm9yIHRoaXMgZmlybXdhcmUNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpcyBub3QgaW5zdGFsbGVkLiAgVGhlIGZpcm13 YXJlIGRldmljZSBpcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGwgbG9ja2VkIHVz aW5nIEZtcERldmljZUxvY2soKS4NCg0KKiovDQpFRklfU1RBVFVTDQpFRklBUEkNClJlZ2lzdGVy Rm1wSW5zdGFsbGVyICgNCiAgSU4gRk1QX0RFVklDRV9MSUJfUkVHSVNURVJfRk1QX0lOU1RBTExF UiAgRm1wSW5zdGFsbGVyDQogICk7DQoNCi8qKg0KICBQcm92aWRlIGEgZnVuY3Rpb24gdG8gdW5p bnN0YWxsIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIGZyb20gYQ0K ICBkZXZpY2UgaGFuZGxlIHdoZW4gdGhlIGRldmljZSBpcyBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRo YXQgZm9sbG93cyB0aGUgVUVGSQ0KICBEcml2ZXIgTW9kZWwuICBJZiB0aGUgZGV2aWNlIGlzIG5v dCBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRoYXQgZm9sbG93cyB0aGUgVUVGSQ0KICBEcml2ZXIgTW9k ZWwsIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLg0KDQogIEBwYXJhbVtpbl0gRm1w VW5pbnN0YWxsZXIgIEZ1bmN0aW9uIHRoYXQgaW5zdGFsbHMgdGhlIEZpcm13YXJlIE1hbmFnZW1l bnQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wuDQoNCiAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgIFRoZSBkZXZpY2UgaXMgbWFuYWdlZCBieSBhIGRyaXZlciB0aGF0IGZv bGxvd3MgdGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICBVRUZJIERyaXZlciBNb2RlbC4g IEZtcFVuaW5zdGFsbGVyIG11c3QgYmUgY2FsbGVkIG9uDQogICAgICAgICAgICAgICAgICAgICAg ICAgICBlYWNoIERyaXZlciBCaW5kaW5nIFN0b3AoKS4NCiAgQHJldHZhbCBFRklfVU5TVVBQT1JU RUQgIFRoZSBkZXZpY2UgaXMgbm90IG1hbmFnZWQgYnkgYSBkcml2ZXIgdGhhdCBmb2xsb3dzDQog ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgVUVGSSBEcml2ZXIgTW9kZWwuDQogIEByZXR2 YWwgb3RoZXIgICAgICAgICAgICBUaGUgRmlybXdhcmUgTWFuYWdlbWVudCBQcm90b2NvbCBmb3Ig dGhpcyBmaXJtd2FyZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGlzIG5vdCBp bnN0YWxsZWQuICBUaGUgZmlybXdhcmUgZGV2aWNlIGlzDQogICAgICAgICAgICAgICAgICAgICAg ICAgICBzdGlsbCBsb2NrZWQgdXNpbmcgRm1wRGV2aWNlTG9jaygpLg0KDQoqKi8NCkVGSV9TVEFU VVMNCkVGSUFQSQ0KUmVnaXN0ZXJGbXBVbmluc3RhbGxlciAoDQogIElOIEZNUF9ERVZJQ0VfTElC X1JFR0lTVEVSX0ZNUF9VTklOU1RBTExFUiAgRm1wVW5pbnN0YWxsZXINCiAgKTsNCg0KQmVzdCBy ZWdhcmRzLA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog Sm9obiBSYWhuIDxqcmFobkBudmlkaWEuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBBcHJpbCAyMCwg MjAyMSAyOjM2IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogTGltaW5nIEdh byA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgS2lubmV5LCBNaWNoYWVsIEQgDQo+IDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT47IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRl bC5jb20+OyANCj4gWHUsIFdlaTYgPHdlaTYueHVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbUEFU Q0ggdjEgMS8xXSBGbXBEZXZpY2VQa2c6IEZtcERldmljZUxpYiBpbnRlcmZhY2UgY2hhbmdlIA0K PiBmb3IgRHJpdmVyIFVubG9hZCBzdXBwb3J0DQo+DQo+ICAgIGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0Mg0KPiAgICAgIEZtcERldmljZUxpYiBpbnRl cmZhY2UgZm9yIERyaXZlciBVbmxvYWQgaXMgbWlzc2luZw0KPiAgICBBZGQgRm1wRGV2aWNlTGli VW5sb2FkSW1hZ2UgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIE5VTEwgc2FtcGxlLg0KPiAgICBB ZGQgRm1wRHhlVW5sb2FkSW1hZ2UgZnVuY3Rpb24uDQo+ICAgIFJlcGxhY2UgVU5MT0FEX0lNQUdF IGZ1bmN0aW9uIGluIEZtcER4ZSBzYW1wbGUgd2l0aCBGbXBEeGVVbmxvYWRJbWFnZS4NCj4NCj4g Q2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gQ2M6IE1pY2hhZWwg RCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBDYzogR3VvbWluIEppYW5n IDxndW9taW4uamlhbmdAaW50ZWwuY29tPg0KPiBDYzogV2VpNiBYdSA8d2VpNi54dUBpbnRlbC5j b20+DQo+IFNpZ25lZC1vZmYtYnk6IEpvaG4gUmFobiA8anJhaG5AbnZpZGlhLmNvbT4NCj4gLS0t DQo+ICBGbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5pbmYgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0NCj4gIEZtcERldmljZVBrZy9JbmNsdWRlL0xpYnJhcnkvRm1wRGV2aWNlTGliLmgg ICAgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKw0KPiAgRm1wRGV2aWNlUGtnL0ZtcER4ZS9G bXBEeGUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrDQo+ ICBGbXBEZXZpY2VQa2cvTGlicmFyeS9GbXBEZXZpY2VMaWJOdWxsL0ZtcERldmljZUxpYi5jIHwg MjQgDQo+ICsrKysrKysrKysrKysrKysrKysrDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDY3IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4NCj4gZGlmZiAtLWdpdCBhL0ZtcERldmljZVBrZy9G bXBEeGUvRm1wRHhlLmluZiANCj4gYi9GbXBEZXZpY2VQa2cvRm1wRHhlL0ZtcER4ZS5pbmYgaW5k ZXggZWViOTA0YTA5MTQ4Li4yZGU5ZTNlNGYyYWQgDQo+IDEwMDY0NA0KPiAtLS0gYS9GbXBEZXZp Y2VQa2cvRm1wRHhlL0ZtcER4ZS5pbmYNCj4gKysrIGIvRm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBE eGUuaW5mDQo+IEBAIC0xNyw3ICsxNyw3IEBAIFtEZWZpbmVzXQ0KPiAgICBNT0RVTEVfVFlQRSAg ICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ICAgIFZFUlNJT05fU1RSSU5HICAgICAg ICAgICAgICAgICA9IDEuMA0KPiAgICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBG bXBEeGVFbnRyeVBvaW50DQo+IC0gIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAgICAgICA9IFVu aW5zdGFsbEZtcEluc3RhbmNlDQo+ICsgIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAgICAgICA9 IEJaMzM0MkZtcER4ZVVubG9hZEltYWdlDQo+DQo+ICAjDQo+ICAjIFRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1 aWxkIHRvb2xzLg0KPiBkaWZmIC0tZ2l0IGEvRm1wRGV2aWNlUGtnL0luY2x1ZGUvTGlicmFyeS9G bXBEZXZpY2VMaWIuaCANCj4gYi9GbXBEZXZpY2VQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZtcERldmlj ZUxpYi5oDQo+IGluZGV4IDZhYmQ5OWZhMWY0Ny4uZDlkYTViOTQwODg2IDEwMDY0NA0KPiAtLS0g YS9GbXBEZXZpY2VQa2cvSW5jbHVkZS9MaWJyYXJ5L0ZtcERldmljZUxpYi5oDQo+ICsrKyBiL0Zt cERldmljZVBrZy9JbmNsdWRlL0xpYnJhcnkvRm1wRGV2aWNlTGliLmgNCj4gQEAgLTEwNCw2ICsx MDQsMjcgQEAgUmVnaXN0ZXJGbXBVbmluc3RhbGxlciAoDQo+ICAgIElOIEZNUF9ERVZJQ0VfTElC X1JFR0lTVEVSX0ZNUF9VTklOU1RBTExFUiAgRm1wVW5pbnN0YWxsZXINCj4gICAgKTsNCj4NCj4g Ky8qKg0KPiArICBGdW5jdGlvbiB0aGF0IHVubG9hZHMgYSBGaXJtd2FyZSBNYW5hZ2VtZW50IERl dmljZSBMaWJyYXJ5IGJhc2VkIA0KPiArZHJpdmVyIGluc3RhbmNlIHdoZW4NCj4gKyAgdGhlIEZt cERldmljZUxpYiBzdXBwb3J0cyB0aGUgZHJpdmVyIGJpbmRpbmcgbW9kZWwuDQo+ICsgIElmIHRo ZSBGbXBEZXZpY2VMaWIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVUVGSSBkcml2ZXIgbW9kZWwsIHRo ZSANCj4gK0ZtcERldmljZUxpYiBVbmxvYWQgSW1hZ2UNCj4gKyAgc2hvdWxkIHJldHVybiBFRklf VU5TVVBQT1JURUQuDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBkcml2 ZXIgaGFuZGxlIG1hbmFnaW5nIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3Rh bmNlIHRvIHVubG9hZC4NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAg ICAgRHJpdmVyIGltYWdlIHdhcyByZW1vdmVkIHN1Y2Nlc3NmdWxseS4NCj4gKyAgQHJldHZhbCBF RklfVU5TVVBQT1JURUQgICAgICAgICAgIFRoZSBkZXZpY2UgaXMgbm90IG1hbmFnZWQgYnkgYSBk cml2ZXIgdGhhdCBmb2xsb3dzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGUgVUVGSSBEcml2ZXIgTW9kZWwuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICAgICBJbWFnZUhhbmRsZSBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgICAgSW1hZ2VIYW5kbGUgZG9lcyBub3QgbWF0Y2ggZHJpdmVyIGltYWdlIGhhbmRs ZS4NCj4gKyAgQHJldHZhbCBvdGhlciAgICAgICAgICAgICAgICAgICAgIERyaXZlciBpbWFnZSB3 YXMgbm90IHJlbW92ZWQuDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQloz MzQyRm1wRGV2aWNlTGliVW5sb2FkSW1hZ2UgKA0KPiArICBJTiBFRklfSEFORExFICBJbWFnZUhh bmRsZQ0KPiArICApOw0KPiArDQo+ICAvKioNCj4gICAgU2V0IHRoZSBkZXZpY2UgY29udGV4dCBm b3IgdGhlIEZtcERldmljZUxpYiBzZXJ2aWNlcyB3aGVuIHRoZSBkZXZpY2UgaXMNCj4gICAgbWFu YWdlZCBieSBhIGRyaXZlciB0aGF0IGZvbGxvd3MgdGhlIFVFRkkgRHJpdmVyIE1vZGVsLiAgSWYg dGhlIA0KPiBkZXZpY2UgaXMgbm90IGRpZmYgLS1naXQgYS9GbXBEZXZpY2VQa2cvRm1wRHhlL0Zt cER4ZS5jIA0KPiBiL0ZtcERldmljZVBrZy9GbXBEeGUvRm1wRHhlLmMgaW5kZXggNmIwNjc1ZWEz OGY4Li42NjgwYTM4MWI4ZmUgMTAwNjQ0DQo+IC0tLSBhL0ZtcERldmljZVBrZy9GbXBEeGUvRm1w RHhlLmMNCj4gKysrIGIvRm1wRGV2aWNlUGtnL0ZtcER4ZS9GbXBEeGUuYw0KPiBAQCAtMTgxMyw2 ICsxODEzLDI3IEBAIFVuaW5zdGFsbEZtcEluc3RhbmNlICgNCj4gICAgcmV0dXJuIEVGSV9TVUND RVNTOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIFVubG9hZHMgdGhlIGFwcGxpY2F0aW9uIGFuZCBp dHMgaW5zdGFsbGVkIHByb3RvY29sLg0KPiArDQo+ICsgIEBwYXJhbSBJbWFnZUhhbmRsZSAgICAg ICBIYW5kbGUgdGhhdCBpZGVudGlmaWVzIHRoZSBpbWFnZSB0byBiZSB1bmxvYWRlZC4NCj4gKw0K PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9hZGVk Lg0KPiArDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQlozMzQyRm1wRHhl VW5sb2FkSW1hZ2UgKA0KPiArICBJTiBFRklfSEFORExFICAgICAgIEltYWdlSGFuZGxlDQo+ICsg ICkNCj4gK3sNCj4gKyAgaWYgKG1GbXBTaW5nbGVJbnN0YW5jZSkgew0KPiArICAgIHJldHVybiBV bmluc3RhbGxGbXBJbnN0YW5jZSAoSW1hZ2VIYW5kbGUpOw0KPiArICB9IGVsc2Ugew0KPiArICAg IHJldHVybiBCWjMzNDJGbXBEZXZpY2VMaWJVbmxvYWRJbWFnZSAoSW1hZ2VIYW5kbGUpOw0KPiAr ICB9DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBVbmxvYWRzIHRoZSBhcHBsaWNhdGlvbiBhbmQg aXRzIGluc3RhbGxlZCBwcm90b2NvbC4NCj4NCj4gZGlmZiAtLWdpdCBhL0ZtcERldmljZVBrZy9M aWJyYXJ5L0ZtcERldmljZUxpYk51bGwvRm1wRGV2aWNlTGliLmMgDQo+IGIvRm1wRGV2aWNlUGtn L0xpYnJhcnkvRm1wRGV2aWNlTGliTnVsbC9GbXBEZXZpY2VMaWIuYw0KPiBpbmRleCBmNGY1N2Iy OWJkYjEuLjRkMmNiYzY0YjdjNiAxMDA2NDQNCj4gLS0tIGEvRm1wRGV2aWNlUGtnL0xpYnJhcnkv Rm1wRGV2aWNlTGliTnVsbC9GbXBEZXZpY2VMaWIuYw0KPiArKysgYi9GbXBEZXZpY2VQa2cvTGli cmFyeS9GbXBEZXZpY2VMaWJOdWxsL0ZtcERldmljZUxpYi5jDQo+IEBAIC00MSw2ICs0MSwzMCBA QCBSZWdpc3RlckZtcEluc3RhbGxlciAoDQo+ICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ ICB9DQo+DQo+ICsvKioNCj4gKyAgRnVuY3Rpb24gdGhhdCB1bmxvYWRzIGEgRmlybXdhcmUgTWFu YWdlbWVudCBEZXZpY2UgTGlicmFyeSBiYXNlZCANCj4gK2RyaXZlciBpbnN0YW5jZSB3aGVuDQo+ ICsgIHRoZSBGbXBEZXZpY2VMaWIgc3VwcG9ydHMgdGhlIGRyaXZlciBiaW5kaW5nIG1vZGVsLg0K PiArICBJZiB0aGUgRm1wRGV2aWNlTGliIGRvZXMgbm90IHN1cHBvcnQgdGhlIFVFRkkgZHJpdmVy IG1vZGVsLCB0aGUgDQo+ICtGbXBEZXZpY2VMaWIgVW5sb2FkIEltYWdlDQo+ICsgIHNob3VsZCBy ZXR1cm4gRUZJX1VOU1VQUE9SVEVELg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxl ICBUaGUgZHJpdmVyIGhhbmRsZSBtYW5hZ2luZyB0aGUgRmlybXdhcmUgTWFuYWdlbWVudCBQcm90 b2NvbCBpbnN0YW5jZSB0byB1bmxvYWQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgICAgIERyaXZlciBpbWFnZSB3YXMgcmVtb3ZlZCBzdWNjZXNzZnVsbHkuDQo+ICsg IEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgICBUaGUgZGV2aWNlIGlzIG5vdCBtYW5h Z2VkIGJ5IGEgZHJpdmVyIHRoYXQgZm9sbG93cw0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgVUVGSSBEcml2ZXIgTW9kZWwuDQo+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICAgICBJbWFnZUhhbmRsZSBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVG SV9JTlZBTElEX1BBUkFNRVRFUiAgICAgSW1hZ2VIYW5kbGUgZG9lcyBub3QgbWF0Y2ggZHJpdmVy IGltYWdlIGhhbmRsZS4NCj4gKyAgQHJldHZhbCBvdGhlciAgICAgICAgICAgICAgICAgICAgIERy aXZlciBpbWFnZSB3YXMgbm90IHJlbW92ZWQuDQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VG SUFQSQ0KPiArQlozMzQyRm1wRGV2aWNlTGliVW5sb2FkSW1hZ2UgKA0KPiArICBJTiBFRklfSEFO RExFICBJbWFnZUhhbmRsZQ0KPiArICApDQo+ICt7DQo+ICsgIHJldHVybiBFRklfVU5TVVBQT1JU RUQ7DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBQcm92aWRlIGEgZnVuY3Rpb24gdG8gdW5pbnN0 YWxsIHRoZSBGaXJtd2FyZSBNYW5hZ2VtZW50IFByb3RvY29sIGluc3RhbmNlIGZyb20gYQ0KPiAg ICBkZXZpY2UgaGFuZGxlIHdoZW4gdGhlIGRldmljZSBpcyBtYW5hZ2VkIGJ5IGEgZHJpdmVyIHRo YXQgZm9sbG93cyANCj4gdGhlIFVFRkkNCj4gLS0NCj4gMi4xNy4xDQoNCg==