From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=63.128.21.162; helo=us-smtp-delivery-162.mimecast.com; envelope-from=eugene@hp.com; receiver=edk2-devel@lists.01.org Received: from us-smtp-delivery-162.mimecast.com (us-smtp-delivery-162.mimecast.com [63.128.21.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 35C6921959CB2 for ; Mon, 12 Nov 2018 12:23:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hp.com; s=mimecast20180716; t=1542054225; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=daYJ6cRWg6Ydd+tSxAtfk2jLH57a50XEbiXUDN9byJM=; b=DqPUlz3mBRWhDCdrYUhjZTrqiNApIpPlv5F645yWp9VfDFmU6N8oOZoQ2kWNR0+nM7FkvzjfhMX3VTkjN7NfO5JCDKB9Z0ccYj1INodPmaoTJ/GqpDU/jrWnqLAWtY8v7kxomOSXSWfWTezi0fOqEk1cVA9cF5SLiLHxDPzustQ= Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02lp0048.outbound.protection.outlook.com [207.46.163.48]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-208-0mjtLZhuMrSYXIgd07h91A-1; Mon, 12 Nov 2018 15:23:43 -0500 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM (10.169.97.20) by CS1PR8401MB1239.NAMPRD84.PROD.OUTLOOK.COM (10.169.97.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.23; Mon, 12 Nov 2018 20:23:41 +0000 Received: from CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca]) by CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM ([fe80::d41f:6ad6:8b6f:26ca%4]) with mapi id 15.20.1294.045; Mon, 12 Nov 2018 20:23:36 +0000 From: "Cohen, Eugene" To: "Kinney, Michael D" , "Yao, Jiewen" , =?utf-8?B?QmluLCBTdW5nLVVrICjruYjshLHsmrEp?= , "edk2-devel@lists.01.org" , "Zhang, Chao B" CC: "Chae, Matthew" Thread-Topic: [RFC] TPM non-MMIO Access Thread-Index: AdR4eHIvXr9RSadIS3utDDz6q0OUJgABNhiwAAEyJOAAa5JakAADxFJAABQAyhAABc6gUAAF1W3A Date: Mon, 12 Nov 2018 20:23:36 +0000 Message-ID: References: <74D8A39837DF1E4DA445A8C0B3885C503F3DF9C6@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F3E3705@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [15.65.252.15] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CS1PR8401MB1239; 6:utvGew09fRJc0j0bFoHwMQ8zMNGok2SW36hUmWfE1oSGO0sXX84sKXolBtqjyBU1FdxPxue07vXYcgnOweksw0lhNCUmJ8j6rVJwGkyJ9UcgYJz4Psg0y5ezOiYTaIdgUC/qGevajwkotF2xp7e1P+EvsNGn/B7CyuqHXECv5wbmZ6eOAxoY9xiCh1NkLM7pFT9iUza0YBspkuJOc2XxqoO3qLYtscK4p5x1zhvcm4O3585duI/mAvBvPJfTfw+5yGzNctjkRD1l9HXK/bFuR/wsSPjyscntsxkeOyoSiSCYTPGvB3YvqYSAmQaluQYomE2Mttu38W4DWDMdzc4tfUf3WHFK6ljr03550iQruR3TyAd3xrpgtcgBTqps2uFQFz95199s7gN0ykHDRUiXHPEVCJwsqMXvG06azZNUwhD/U+hLb7xUkH8mjLAOpAlO+n6TPwKSk0W+d6X4eVjyFg==; 5:y+g9lEjlFrGuadl0s6G/+2tQZcunbzfaTT8zXp4w0s+0yq0GLHHoTNw8pyLDJgO/3hTrhe101zBLaMi105oYMK2PVs60ORRIamsRNb7Tg4SXTIqpYoVYCK4uxi4B4wmag+HyQjCdxFWFnQdMLFR/CNBZQmgSLbKXdOh0AmESTpI=; 7:4NEEjWfLQHepAikM+OMcvUxSDtKSM3sqDdgkT/w+C2gpbk+wg+mcBEr2PdzSMA27IVnw17+fQifzAUF7PJg8V7+uGrwXxAeq25DVc3l38BHZTJsYu2iUisbcd2KF4UpsGTgfu3fzwk/K/gik9iyCTQ== x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10019020)(376002)(39860400002)(396003)(346002)(136003)(366004)(189003)(199004)(51914003)(13464003)(6602003)(5660300001)(97736004)(6246003)(236005)(6306002)(9686003)(55016002)(54896002)(2501003)(6436002)(8936002)(14454004)(53936002)(478600001)(7736002)(93886005)(8676002)(86362001)(81166006)(2900100001)(81156014)(966005)(606006)(316002)(105586002)(2906002)(106356001)(99286004)(76176011)(7696005)(110136005)(229853002)(4326008)(71190400001)(3846002)(6116002)(790700001)(74316002)(66066001)(256004)(14444005)(33656002)(53546011)(25786009)(476003)(102836004)(19627235002)(561944003)(446003)(68736007)(11346002)(486006)(71200400001)(186003)(26005)(6506007); DIR:OUT; SFP:1102; SCL:1; SRVR:CS1PR8401MB1239; H:CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-ms-office365-filtering-correlation-id: 256c28ca-80c1-4e3f-3a64-08d648dcb9e8 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390040)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:CS1PR8401MB1239; x-ms-traffictypediagnostic: CS1PR8401MB1239: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(228905959029699)(73583498263828)(162533806227266)(788757137089)(21748063052155)(28532068793085)(190501279198761)(227612066756510)(159968658992688); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231402)(944501410)(52105112)(3002001)(93006095)(93001095)(10201501046)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:CS1PR8401MB1239; BCL:0; PCL:0; RULEID:; SRVR:CS1PR8401MB1239; x-forefront-prvs: 0854128AF0 x-microsoft-antispam-message-info: pa45c+sNAFkjYRXiEBXGmXAKIX4ciNXgcPl9o3H8naUQtt2+YRzrStJUxDqWhjU5TpNPPpLOEHQnwLa7uGu1xFWaLhYw25ejOMLelVedfZtTa8mChqSL9dNuuMFHAnPD0LD14xEqHsdMojDWedXrWz1FtiMAm8o2ppR9aZiqWdPmJAQSzG4dSPfkl2mzz9tDbWixKp5Gjlv+XTM+wvTfzb16UKTa5iLeppgoTlCEEmducQYTyQCL/HjNFcVd4VxHUrsKSGs4hStQWwMGaS5QnoXDh7YRNes76QLoElbZ0E7Q1v9QKSuYKPVTK48LavT0z1IsrTkflR+9E/v0tUidsjt/hvUqHx5tk5MxVj2QOdA= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 256c28ca-80c1-4e3f-3a64-08d648dcb9e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Nov 2018 20:23:36.7212 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ca7981a2-785a-463d-b82a-3db87dfc3ce6 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB1239 X-MC-Unique: 0mjtLZhuMrSYXIgd07h91A-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [RFC] TPM non-MMIO Access X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Nov 2018 20:23:47 -0000 Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 TWlrZSwgdGhhbmtzLg0KDQoNCsOYICBEbyB3ZSBrbm93IGZvciBzdXJlIHdpdGggYSBjaGFuZ2Ug bGlrZSB0aGlzIHRoYXQNCg0Kw5ggIE1NSU8gYW5kIG5vbi1NTUlPIFRQTXMgc3VwcG9ydCB0aGUg c2FtZSByZWdpc3RlcnMNCg0Kw5ggIGFuZCByZXF1aXJlIHRoZSBleGFjdCBzYW1lIHNlcXVlbmNl IG9mIHJlZ2lzdGVyDQoNCsOYICBhY2Nlc3MgdG8gZnVuY3Rpb24gY29ycmVjdGx5Pw0KDQpJJ20g Y2hlY2tpbmcgd2l0aCBvdXIgVFBNIGV4cGVydHMgLSBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lv biB0aGF0IHRoZSBpbnRlcmZhY2Ugd2FzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YgdHJhbnNwb3J0 LiAgQmluIGFuZCBKaWV3ZW4sIHBsZWFzZSBvZmZlciB5b3VyIGd1aWRhbmNlLg0KDQrDmCAgQWxz bywgc29tZSBvZiB0aGUgbm9uLU1NSU8gYnVzIHR5cGVzIGhhdmUgbXVjaA0KDQrDmCAgZGlmZmVy ZW50IHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgd2hpY2ggbWF5DQoNCsOYICByZXF1aXJl IHNsaWdodGx5IGRpZmZlcmVudCBpbnRlcmFjdGlvbnMgZm9yIGJlc3QNCg0Kw5ggIHBlcmZvcm1h bmNlLg0KDQpBZ3JlZWQuICBUaGF0IGJlaW5nIHNhaWQgZHVwbGljYXRpbmcgbW9zdCBvZiB0aGUg bG9naWMgaW4gdGhlIGRldmljZSBsaWIgbWF5IGJlIGV4Y2Vzc2l2ZSAtIG9uIHF1aWNrIGdsYW5j ZSBpdCBsb29rcyBsaWtlIHRoZXJlIGlzIGEgbG90IG9mIGxvZ2ljIHRoYXQgd2UgbWlnaHQgd2Fu dCB0byBrZWVwIGluIGJvdGggY2FzZXMuDQoNClRoYW5rcywNCg0KRXVnZW5lDQoNCkZyb206IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NClNlbnQ6IE1vbmRh eSwgTm92ZW1iZXIgMTIsIDIwMTggOTo0NSBBTQ0KVG86IENvaGVuLCBFdWdlbmUgPGV1Z2VuZUBo cC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBCaW4sIFN1bmctVWsg KOu5iOyEseyasSkgPHN1bmd1ay1iaW5AaHAuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7 IFpoYW5nLCBDaGFvIEIgPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQpDYzogQ2hhZSwgTWF0dGhldyA8bWF0dGhl dy5jaGFlQGhwLmNvbT4NClN1YmplY3Q6IFJFOiBbUkZDXSBUUE0gbm9uLU1NSU8gQWNjZXNzDQoN CkV1Z2VuZSwNCg0KSSB1bmRlcnN0YW5kIHRoZSBpbnRlbnQuDQoNCkRvIHdlIGtub3cgZm9yIHN1 cmUgd2l0aCBhIGNoYW5nZSBsaWtlIHRoaXMgdGhhdA0KTU1JTyBhbmQgbm9uLU1NSU8gVFBNcyBz dXBwb3J0IHRoZSBzYW1lIHJlZ2lzdGVycw0KYW5kIHJlcXVpcmUgdGhlIGV4YWN0IHNhbWUgc2Vx dWVuY2Ugb2YgcmVnaXN0ZXINCmFjY2VzcyB0byBmdW5jdGlvbiBjb3JyZWN0bHk/IElmIG5vdCwg dGhlbiB0aGUNCnZhbHVlIG9mIGFkZGluZyB0aGlzIG5ldyBsaWIgY2xhc3MgaXMgc21hbGwuDQoN CkFsc28sIHNvbWUgb2YgdGhlIG5vbi1NTUlPIGJ1cyB0eXBlcyBoYXZlIG11Y2gNCmRpZmZlcmVu dCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIHdoaWNoIG1heQ0KcmVxdWlyZSBzbGlnaHRs eSBkaWZmZXJlbnQgaW50ZXJhY3Rpb25zIGZvciBiZXN0DQpwZXJmb3JtYW5jZS4NCg0KTWlrZQ0K DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGVkazItZGV2ZWwgW21haWx0 bzplZGsyLWRldmVsLQ0KPiBib3VuY2VzQGxpc3RzLjAxLm9yZzxtYWlsdG86Ym91bmNlc0BsaXN0 cy4wMS5vcmc+XSBPbiBCZWhhbGYgT2YgQ29oZW4sIEV1Z2VuZQ0KPiBTZW50OiBNb25kYXksIE5v dmVtYmVyIDEyLCAyMDE4IDU6NTkgQU0NCj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgQmluLCBTdW5nLVVrDQo+ICjr uYjshLHsmrEpIDxzdW5ndWstYmluQGhwLmNvbTxtYWlsdG86c3VuZ3VrLWJpbkBocC5jb20+Pjsg ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPjsN Cj4gWmhhbmcsIENoYW8gQiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbTxtYWlsdG86Y2hhby5iLnpo YW5nQGludGVsLmNvbT4+DQo+IENjOiBDaGFlLCBNYXR0aGV3IDxtYXR0aGV3LmNoYWVAaHAuY29t PG1haWx0bzptYXR0aGV3LmNoYWVAaHAuY29tPj4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUkZD XSBUUE0gbm9uLU1NSU8gQWNjZXNzDQo+DQo+IEppZXdlbiwNCj4NCj4gV2UgZG9uJ3QgaGF2ZSBh IHBhdGNoIHlldCDigJMgd2Ugd2FudGVkIHRvIGNoZWNrIHdpdGggeW91DQo+IGZpcnN0IGJlZm9y ZSBnb2luZyB0b28gZmFyLg0KPg0KPg0KPiDDmCBPciBqdXN0IGEgc2ltcGxlIHJlcGxhY2UtYWxs IGZvciBNbWlvUmVhZC9Xcml0ZS0NCj4gPlRwbU1taW9SZWFkL1dyaXRlLg0KPg0KPiBZZXMsIGJh c2ljYWxseSDigJMgd2l0aCBhIGxpYnJhcnkgY2xhc3MgdG8gc3VwcG9ydCBpdC4NCj4NCj4gV2Ug c2hvdWxkIG5vdCBjYWxsIGl0ICJUcG1NbWlvUmVhZDgiIHNpbmNlIG9uIHNvbWUNCj4gcGF0aHMg aXQgaXMgbm90IE1NSU8gYXQgYWxsLiBXZSBzaG91bGQgY2FsbCBpdA0KPiBUcG1SZWFkOCAob3Ig c29tZXRoaW5nIGxpa2UgdGhhdCkgYW5kIHRoZW4gdGhlIE1NSU8NCj4gaW5zdGFuY2Ugb2YgdGhl IGxpYnJhcnkgY2xhc3Mgd291bGQgY2FsbCBNbWlvDQo+IGZ1bmN0aW9ucy4NCj4NCj4gVGhhbmtz LA0KPg0KPiBFdWdlbmUNCj4NCj4gRnJvbTogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwu Y29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+DQo+IFNlbnQ6IFN1bmRheSwgTm92ZW1i ZXIgMTEsIDIwMTggOTozMyBQTQ0KPiBUbzogQmluLCBTdW5nLVVrICjruYjshLHsmrEpIDxzdW5n dWstYmluQGhwLmNvbTxtYWlsdG86c3VuZ3VrLWJpbkBocC5jb20+PjsgQ29oZW4sDQo+IEV1Z2Vu ZSA8ZXVnZW5lQGhwLmNvbTxtYWlsdG86ZXVnZW5lQGhwLmNvbT4+OyBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+OyBaaGFuZywNCj4gQ2hhbyBC IDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPG1haWx0bzpjaGFvLmIuemhhbmdAaW50ZWwuY29tPj4N Cj4gQ2M6IENoYWUsIE1hdHRoZXcgPG1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRoZXcu Y2hhZUBocC5jb20+Pg0KPiBTdWJqZWN0OiBSRTogW1JGQ10gVFBNIG5vbi1NTUlPIEFjY2Vzcw0K Pg0KPiBPSy4gVGhhbmtzIGZvciB0aGUgY2xhcmlmaWNhdGlvbi4NCj4NCj4gSWYgcG9zc2libGUs IHdvdWxkIHlvdSBwbGVhc2UgcG9zdCB5b3VyIHBhdGNoIHRvDQo+IHNvbWV3aGVyZT8NCj4NCj4g RG8geW91IHJlcXVlc3QgdG8gY2hhbmdlIGFueSBvdGhlciBsb2dpYyBpbiBleGlzdGluZw0KPiBU cG0yRGV2aWNlTGliID8NCj4gT3IganVzdCBhIHNpbXBsZSByZXBsYWNlLWFsbCBmb3IgTW1pb1Jl YWQvV3JpdGUtDQo+ID5UcG1NbWlvUmVhZC9Xcml0ZS4NCj4NCj4gVGhhbmsgeW91DQo+IFlhbyBK aWV3ZW4NCj4NCj4gRnJvbTogQmluLCBTdW5nLVVrICjruYjshLHsmrEpIFttYWlsdG86c3VuZ3Vr LWJpbkBocC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgTm92ZW1iZXIgMTIsIDIwMTggMTI6MTcgUE0N Cj4gVG86IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2Vu Lnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tJTNjbWFpbHRvOmppZXdl bi55YW9AaW50ZWwuY29tPj4+Ow0KPiBDb2hlbiwgRXVnZW5lIDxldWdlbmVAaHAuY29tPG1haWx0 bzpldWdlbmVAaHAuY29tPG1haWx0bzpldWdlbmVAaHAuY29tJTNjbWFpbHRvOmV1Z2VuZUBocC5j b20+Pj47DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLTxtYWlsdG86ZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmclM2NtYWlsdG86ZWRrMi0+DQo+IGRldmVsQGxpc3RzLjAxLm9y ZzxtYWlsdG86ZGV2ZWxAbGlzdHMuMDEub3JnPj47IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8uYi56 aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW8u Yi56aGFuZ0BpbnRlbC5jb20lM2NtYWlsdG86Y2hhby5iLnpoYW5nQGludGVsLmNvbT4+Pg0KPiBD YzogQ2hhZSwgTWF0dGhldw0KPiA8bWF0dGhldy5jaGFlQGhwLmNvbTxtYWlsdG86bWF0dGhldy5j aGFlQGhwLmNvbTxtYWlsdG86bWF0dGhldy5jaGFlQGhwLmNvbSUzY21haWx0bzptYXR0aGV3LmNo YWVAaHAuY29tPj4+DQo+IFN1YmplY3Q6IFJFOiBbUkZDXSBUUE0gbm9uLU1NSU8gQWNjZXNzDQo+ DQo+IEhpIEppZXdlbg0KPg0KPiBXaGF0IEV1Z2VuZSBwcm9wb3NlcyBpcyBub3QgdG8gbWFrZSB0 aG9zZSBhbm90aGVyIFRQTQ0KPiBkZXZpY2UgbGlicmFyeSBpbnN0YW5jZXMuDQo+IEluc3RlYWQs IHdlIHByb3Bvc2UgbmV3IOKAnFRwbUlvTGli4oCdIHdoaWNoIGNhbiBoYW5kbGUNCj4gYm90aCBN TUlPIGFuZCBub24tTU1JTyBkZXZpY2UuDQo+DQo+IMOoIEN1cnJlbnRseSBUcG0xMlRpcy5jLCBU cG0yVGlzLmMgYW5kIFRwbTJQdHAuYyB1c2VzDQo+IElvTGliIChDUFUgSU8pLCBhbmQgd2hhdCB3 ZSBwcm9wb3NlIGlzIHRvIHJlcGxhY2UgaXQNCj4gd2l0aCBUcG1Jb0xpYi4NCj4NCj4gRm9yIGV4 YW1wbGUsIFRwbUlvTGliIGNhbiBwcm92aWRlIFRwbU1taW9SZWFkKCkgYW5kDQo+IFRwbTEyVGlz LmMsIFRwbTJUaXMuYyBhbmQgVHBtMlB0cC5jIGNhbiB1c2UNCj4gVHBtTW1pb1JlYWQoKSBpbnN0 ZWFkIG9mIE1taW9SZWFkKCkuDQo+DQo+IC0gVHBtSW9MaWIgZm9yIFBDIChkZWZhdWx0IGluIFNl Y3VyaXR5UGtnKQ0KPiBVSU5UOCBUcG1NbWlvUmVhZDggKFVJTlROIEFkZHJlc3MgKQ0KPiB7DQo+ IHJldHVybiBNbWlvUmVhZDgoQWRkcmVzcyk7DQo+IH0NCj4NCj4NCj4gLSBUcG1Jb0xpYiBmb3Ig U1BJICh2ZW5kb3IgY3JlYXRlcyBuZXcNCj4gaW5zdGFuY2UpDQo+IFVJTlQ4IFRwbU1taW9SZWFk OCAoVUlOVE4gQWRkcmVzcyApDQo+IHsNCj4gVUlOVDggRGF0YSwgU3BpQ3M7DQo+IFNwaUNzID0g KEFkZHJlc3MgJiAweEZGMDAwMCkgPj4gMTY7DQo+IFRwbUFkZHJlc3MgPSBBZGRyZXNzICYgMHhG RkZGOw0KPg0KPiAvKiBWZW5kb3Igc3BlY2lmaWMgU1BJIGNvbnRyb2wgZm9yIFRQTQ0KPiAqLw0K PiDigKYNCj4gU3BpV3JpdGUoU3BpQ3MsIFRwbUFkZHJlc3MpOw0KPiDigKYNCj4gU3BpUmVhZChT cGlDcywgVHBtQWRkcmVzcywgJkRhdGEpOw0KPiByZXR1cm4gRGF0YTsNCj4gfQ0KPg0KPiBUaGlz IHByb3Bvc2FsIGNhbWUgZnJvbSBjb2RlIG1haW50YW5hbmNlLA0KPiB3aGVuIHdlIG5lZWQgdG8g dXBkYXRlIFNlY3VyaXR5UGtnLCB0aGVuIGluIHRoaXMgY2FzZQ0KPiBpdOKAmXMgbW9yZSBlYXN5 IHRvIHVwZGF0ZSB0aGFuIG1ha2luZyBhbm90aGVyDQo+IFRwbTJEZXZpY2VMaWJEVHBtIGluc3Rh bmNlLg0KPg0KPiBUaGFua3MsDQo+IEJpbg0KPg0KPiBGcm9tOiBZYW8sIEppZXdlbg0KPiA8amll d2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3 ZW4ueWFvQGludGVsLmNvbSUzY21haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+Pg0KPiBTZW50 OiBTYXR1cmRheSwgTm92ZW1iZXIgMTAsIDIwMTggODoxOCBBTQ0KPiBUbzogQ29oZW4sIEV1Z2Vu ZQ0KPiA8ZXVnZW5lQGhwLmNvbTxtYWlsdG86ZXVnZW5lQGhwLmNvbTxtYWlsdG86ZXVnZW5lQGhw LmNvbSUzY21haWx0bzpldWdlbmVAaHAuY29tPj4+OyBlZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5v cmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzpkZXZlbEBsaXN0cy4wMS5v cmclM2NtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+PjsNCj4gWmhhbmcsIENoYW8gQg0K PiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbTxtYWlsdG86Y2hhby5iLnpoYW5nQGludGVsLmNvbTxt YWlsdG86Y2hhby5iLnpoYW5nQGludGVsLmNvbSUzY21haWx0bzpjaGFvLmIuemhhbmdAaW50ZWwu Y29tPj4+DQo+IENjOiBCaW4sIFN1bmctVWsgKOu5iOyEseyasSkgPHN1bmd1ay0NCj4gYmluQGhw LmNvbTxtYWlsdG86c3VuZ3VrLWJpbkBocC5jb208bWFpbHRvOmJpbkBocC5jb20lM2NtYWlsdG86 c3VuZ3VrLWJpbkBocC5jb20+Pj47IENoYWUsIE1hdHRoZXcNCj4gPG1hdHRoZXcuY2hhZUBocC5j b208bWFpbHRvOm1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRoZXcuY2hhZUBocC5jb20l M2NtYWlsdG86bWF0dGhldy5jaGFlQGhwLmNvbT4+Pg0KPiBTdWJqZWN0OiBSRTogW1JGQ10gVFBN IG5vbi1NTUlPIEFjY2Vzcw0KPg0KPiBIaSBFdWdlbmUNCj4gVGhlIFRwbUlvTGliIHByb3Bvc2Fs IGlzIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nDQo+IFRwbURldmljZUxpYi4NCj4gV2UgaGF2ZSBJ MkMgVFBNIGluc3RhbmNlIGFzIGV4YW1wbGUuIFlvdSBtYXkgY3JlYXRlDQo+IFRwbTEyRGV2aWNl TGliWFhYU3BpLg0KPg0KPiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgdGhlcmUgaXMgYW55IGdhcCB0 byBzdXBwb3J0IHlvdXINCj4gbm9uLU1NSU8gZGV2aWNlLg0KPg0KPiBUaGFuayB5b3UNCj4gWWFv IEppZXdlbg0KPg0KPg0KPiBGcm9tOiBZYW8sIEppZXdlbg0KPiBTZW50OiBTYXR1cmRheSwgTm92 ZW1iZXIgMTAsIDIwMTggNzoxMiBBTQ0KPiBUbzogJ0NvaGVuLCBFdWdlbmUnDQo+IDxldWdlbmVA aHAuY29tPG1haWx0bzpldWdlbmVAaHAuY29tPG1haWx0bzpldWdlbmVAaHAuY29tJTNjbWFpbHRv OmV1Z2VuZUBocC5jb20+Pj47IGVkazItDQo+IGRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmRldmVsQGxpc3RzLjAxLm9yZyUzY21haWx0bzpl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4+Ow0KPiBaaGFuZywgQ2hhbyBCDQo+IDxjaGFvLmIuemhh bmdAaW50ZWwuY29tPG1haWx0bzpjaGFvLmIuemhhbmdAaW50ZWwuY29tPG1haWx0bzpjaGFvLmIu emhhbmdAaW50ZWwuY29tJTNjbWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb20+Pj4NCj4gQ2M6 IEJpbiwgU3VuZy1VayAo67mI7ISx7JqxKSA8c3VuZ3VrLQ0KPiBiaW5AaHAuY29tPG1haWx0bzpz dW5ndWstYmluQGhwLmNvbTxtYWlsdG86YmluQGhwLmNvbSUzY21haWx0bzpzdW5ndWstYmluQGhw LmNvbT4+PjsgQ2hhZSwgTWF0dGhldw0KPiA8bWF0dGhldy5jaGFlQGhwLmNvbTxtYWlsdG86bWF0 dGhldy5jaGFlQGhwLmNvbTxtYWlsdG86bWF0dGhldy5jaGFlQGhwLmNvbSUzY21haWx0bzptYXR0 aGV3LmNoYWVAaHAuY29tPj4+DQo+IFN1YmplY3Q6IFJFOiBbUkZDXSBUUE0gbm9uLU1NSU8gQWNj ZXNzDQo+DQo+IEhpIEV1Z2VuZQ0KPiBDb21wbGV0ZSBhZ3JlZS4NCj4NCj4NCj4gMSkgcGxlYXNl IGlnbm9yZSBUcG1Db21tTGliLiBJdCBpcyBkZXByZWNhdGVkLiDimLoNCj4NCj4NCj4gMikgd2Ug ZGlkIG5vdGljZSB0aGVyZSBpcyBub24tTU1JTyBUUE0gZGV2aWNlDQo+IGJlZm9yZSBhbmQgYWJz dHJhY3QgdGhlIGRldmljZSBhY2Nlc3MgdmlhIFRwbTJEZXZpY2VMaWINCj4gYW5kIFRwbTEyRGV2 aWNlTGliIGxpYnJhcnkgY2xhc3MuIFRoZSBUcG0yRGV2aWNlTGliRFRwbQ0KPiBhbmQgVHBtMTJE ZXZpY2VMaWJEVHBtIGFyZSB0aGUgbGlicmFyeSBpbnN0YW5jZSBmb3INCj4gTU1JTyBUSVMgYWNj ZXNzLg0KPg0KPiBXZSBkbyBoYXZlIG90aGVyIGluc3RhbmNlIHN1Y2ggYXMNCj4gUXVhcmtQbGF0 Zm9ybVBrZ1xMaWJyYXJ5XFRwbTEyRGV2aWNlTGliQXRtZWxJMmMgb3INCj4gUXVhcmtQbGF0Zm9y bVBrZ1xMaWJyYXJ5XFRwbTEyRGV2aWNlTGliSW5maW5lb25JMmMuDQo+DQo+DQo+IDMpIFRjZzJD b25maWcgaXMgYWxzbyBhIFRQTSBkZXZpY2Ugb3JpZW50ZWQNCj4gZHJpdmVyLiBJdCBpcyBvcHRp b25hbC4NCj4gWW91IG1heSB3YW50IHRvIHRha2UgYSBsb29rIGF0DQo+IFF1YXJrUGxhdGZvcm1Q a2dcUXVhcmsuZHNjIHRvIHNlZSBkaWZmZXJlbnQgVFBNIGRldmljZQ0KPiBpcyBjaG9zZW4uDQo+ DQo+ICMNCj4gIyBUUE0gMS4yIEhhcmR3YXJlLiBPcHRpb25zIGFyZSBbTk9ORSwgTFBDLA0KPiBB VE1FTF9JMkMsIElORklORU9OX0kyQ10NCj4gIw0KPiBERUZJTkUgVFBNXzEyX0hBUkRXQVJFID0g Tk9ORQ0KPg0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0KPg0KPiBGcm9tOiBDb2hlbiwgRXVn ZW5lIFttYWlsdG86ZXVnZW5lQGhwLmNvbV0NCj4gU2VudDogU2F0dXJkYXksIE5vdmVtYmVyIDEw LCAyMDE4IDY6MzggQU0NCj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsy LTxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmclM2NtYWlsdG86ZWRrMi0+DQo+IGRldmVs QGxpc3RzLjAxLm9yZzxtYWlsdG86ZGV2ZWxAbGlzdHMuMDEub3JnPj47IFpoYW5nLCBDaGFvIEIN Cj4gPGNoYW8uYi56aGFuZ0BpbnRlbC5jb208bWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb208 bWFpbHRvOmNoYW8uYi56aGFuZ0BpbnRlbC5jb20lM2NtYWlsdG86Y2hhby5iLnpoYW5nQGludGVs LmNvbT4+Pg0KPiA7IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86 amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tJTNjbWFpbHRv OmppZXdlbi55YW9AaW50ZWwuY29tPj4+DQo+IENjOiBCaW4sIFN1bmctVWsgKOu5iOyEseyasSkg PHN1bmd1ay0NCj4gYmluQGhwLmNvbTxtYWlsdG86c3VuZ3VrLWJpbkBocC5jb208bWFpbHRvOmJp bkBocC5jb20lM2NtYWlsdG86c3VuZ3VrLWJpbkBocC5jb20+Pj47IENoYWUsIE1hdHRoZXcNCj4g PG1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1hdHRoZXcuY2hhZUBocC5jb208bWFpbHRvOm1h dHRoZXcuY2hhZUBocC5jb20lM2NtYWlsdG86bWF0dGhldy5jaGFlQGhwLmNvbT4+Pg0KPiBTdWJq ZWN0OiBbUkZDXSBUUE0gbm9uLU1NSU8gQWNjZXNzDQo+DQo+IERlYXIgU2VjdXJpdHlQa2cgbWFp bnRhaW5lcnMsDQo+DQo+IFdlIGFyZSB0cnlpbmcgdG8gdXNlIHRoZSBTZWN1cml0eVBrZyBUUE0g c3VwcG9ydA0KPiAoVGNnMkNvbmZpZywgVHBtMkRldmljZUxpYkRUcG0sIGV0YykgYW5kIHNlZSB0 aGF0DQo+IGFjY2VzcyB0byB0aGUgVFBNIGFyZSB1c2luZyB0aGUgTU1JTyByb3V0aW5lcyBzdWNo IGFzDQo+IE1taW9SZWFkOCgpLg0KPg0KPiBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IG1lbW9y eS1tYXBwZWQgYWNjZXNzIHRvIHRoZQ0KPiBUUE0gc28gd2Ugd291bGQgbGlrZSB0byBwcm9wb3Nl IHRoYXQgd2UgY3JlYXRlIGENCj4gbGlicmFyeSB0byBhYnN0cmFjdCB0aGUgVFBNIGFjY2Vzcywg Y2FsbGVkIHRoZQ0KPiBUcG1Jb0xpYi4gT25lIGluc3RhbmNlIG9mIHRoZSBsaWJyYXJ5IHdvdWxk IHByb3ZpZGUNCj4gdGhlIE1taW8gKFRwbUlvTGliTW1pbykgbWV0aG9kIGJ1dCBvdGhlcnMgY2Fu IHVzZQ0KPiBwcm90b2NvbHMgbGlrZSBTUEkgKFRwbUlvTGliU3BpKS4NCj4NCj4gQmVmb3JlIHN0 YXJ0aW5nIHRoaXMgd29yayBJIHdhbnRlZCB0byBjaGVjayBpZiB5b3UNCj4gYWdyZWUgd2l0aCB0 aGUgYXBwcm9hY2ggb2YgcmVwbGFjaW5nIHRoZSBNbWlvIGNhbGxzDQo+IHdpdGggbmV3IFRwbUlv TGliIG9uZXMuIFdlIGNhbiB1cHN0cmVhbSB0aGUgbGlicmFyeQ0KPiBoZWFkZXIgYW5kIG1taW8g bGlicmFyeSBpbnN0YW5jZSAob3IgeW91IGNvdWxkIGRvIHRoZQ0KPiB3b3JrIGlmIHlvdSB0aGlu ayBpdCB3b3VsZCBiZSBlYXNpZXIgZm9yIHlvdSkuDQo+DQo+IEkgY291bnRlZCB1cCB0aGUgbnVt YmVyIG9mIGluc3RhbmNlcyBvZiB1bmlxdWUgTU1JTw0KPiBjYWxscyBpbiB0aGUgVFBNIGxpYnJh cmllcyBhbmQgZ290DQo+DQo+IExpYnJhcnkvVHBtQ29tbUxpYi9UaXNQYy5jOjcNCj4gTGlicmFy eS9UcG0yRGV2aWNlTGliRFRwbS9UcG0yVGlzLmM6MTMNCj4gTGlicmFyeS9UcG0yRGV2aWNlTGli RFRwbS9UcG0yUHRwLmM6MjkNCj4gTGlicmFyeS9UcG0xMkRldmljZUxpYkRUcG0vVHBtMTJUaXMu YzoxNg0KPg0KPiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhpcyB3b3JrcyBmb3IgeW91IGFuZCBo b3cgeW91J2QNCj4gbGlrZSB0byBzdHJ1Y3R1cmUgdGhlIGNoYW5nZS4NCj4NCj4gVGhhbmtzLA0K Pg0KPiBFdWdlbmUNCj4NCj4NCj4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18NCj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPiBodHRwczov L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWw8aHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsPg0KFrom