From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web09.10908.1578667030586036212 for ; Fri, 10 Jan 2020 06:37:10 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: ray.ni@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jan 2020 06:37:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,417,1571727600"; d="scan'208";a="237787049" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga002.jf.intel.com with ESMTP; 10 Jan 2020 06:37:09 -0800 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jan 2020 06:37:09 -0800 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by FMSMSX113.amr.corp.intel.com (10.18.116.7) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 10 Jan 2020 06:37:08 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.197]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.139]) with mapi id 14.03.0439.000; Fri, 10 Jan 2020 22:37:06 +0800 From: "Ni, Ray" To: "'devel@edk2.groups.io'" , "'ard.biesheuvel@linaro.org'" CC: 'Laszlo Ersek' , 'Leif Lindholm' , "Gao, Zhichao" , "Ma, Maurice" , "Dong, Guo" , "You, Benjamin" Subject: Re: [edk2-devel] [RFC PATCH 2/2] MdeModulePkg/BdsDxe: allow consoles on drivers loaded via Driver#### Thread-Topic: [edk2-devel] [RFC PATCH 2/2] MdeModulePkg/BdsDxe: allow consoles on drivers loaded via Driver#### Thread-Index: AQHVrEzYcqRyqW2RAUSCx07E53qdIaexDcyA///swYCAA0WMgIAB+yxg//98woCAEZ5hAIAaorAAgAFWQ1CAANQF4A== Date: Fri, 10 Jan 2020 14:37:05 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C3EFAF4@SHSMSX104.ccr.corp.intel.com> References: <20191206143128.19371-1-ard.biesheuvel@linaro.org> <20191206143128.19371-3-ard.biesheuvel@linaro.org> <8d49cca6-b1b9-cddc-0590-4e4a84643e4f@redhat.com> <734D49CCEBEEF84792F5B80ED585239D5C39604F@SHSMSX104.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5C399C9C@SHSMSX104.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5C3E2179@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5C3E2179@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkLA0KSSB1bmRlcnN0YW5kIG5vdyB0aGF0OiBCZWZvcmVDb25zb2xlKCkgbmVlZHMgdG8gY29u bmVjdCBHZnggdG8gZ2V0IHRoZSBHT1AgZGV2aWNlIHBhdGgNCmZvciBDb25PdXQgdXBkYXRpbmcu IEJ1dCB0aGUgR09QIGRyaXZlciBpcyBzcGVjaWZpZWQgaW4gRHJpdmVyIyMjIyBhbmQgaXQgd2ls bCBiZSBsb2FkZWQgYWZ0ZXINCkJlZm9yZUNvbnNvbGUoKSBpbiB0b2RheSdzIGNvZGUuIFRoaXMg b3JkZXIgbWFrZXMgdGhlIEdmeCBjb25uZWN0aW9uIGZhaWxzIHRvIHN0YXJ0IHRoZSBHT1AgZHJp dmVyDQpyZXN1bHRpbmcgQ29uT3V0IG5vdCB1cGRhdGVkLg0KDQpNb3ZpbmcgRHJpdmVyIyMjIyBw cm9jZXNzaW5nIGJlZm9yZSBCZWZvcmVDb25zb2xlKCkgaGVscHMgaW4geW91ciBjYXNlLiBCdXQg aXQgbWF5IGltcGFjdA0Kb3RoZXIgcGxhdGZvcm1zOiBUaGVyZSBtaWdodCBiZSBwbGF0Zm9ybXMg dGhhdCB1cGRhdGUgRHJpdmVyIyMjIyB2YXJpYWJsZXMgaW4gQmVmb3JlQ29uc29sZSgpDQphbmQg ZXhwZWN0IHRoZXNlIGRyaXZlcnMgYXJlIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBib290IChub3Qg dGhlIG5leHQgYm9vdCkuIEkgZG9uJ3QgaGF2ZSB0aGUgcmVhbA0KZXhhbXBsZXMuIEJ1dCB0b2Rh eSdzIGZsb3cgYWxsb3dzIHRoaXMuIFdpdGggeW91ciBjaGFuZ2UsIERyaXZlciMjIyMgd2lsbCBu b3QgYmUgcHJvY2Vzc2VkIGluIHRoZSBmaXJzdA0KYm9vdC4gVGhlIGNoYW5nZSBpbXBhY3RzIHRo ZXNlIHBsYXRmb3Jtcy4NCg0KT25lIGJhY2t3YXJkIGNvbXBhdGlibGUgYXBwcm9hY2ggY2FuIGJl OiBwcm9jZXNzaW5nIERyaXZlciMjIyMgYmVmb3JlIEJlZm9yZUNvbnNvbGUoKSBhbmQgcHJvY2Vz c2luZyB0aGUgbmV3IERyaXZlciMjIyMgKGFkZGVkIGJ5IEJlZm9yZUNvbnNvbGUoKSkgYWZ0ZXIg QmVmb3JlQ29uc29sZSgpLg0KDQpCdXQgYW5vdGhlciBwcm9ibGVtIGFyaXNlczogSWYgQmVmb3Jl Q29uc29sZSgpIHJlbW92ZXMgYSBEcml2ZXIjIyMjLCBwbGF0Zm9ybSdzIGV4cGVjdGF0aW9uIGlz IHRoYXQgZGVsZXRlZCBEcml2ZXIjIyMjIGRvZXNuJ3QgcnVuLiBCdXQgdGhhdCBkcml2ZXIgYWxy ZWFkeSBydW5zLg0KDQpTbyBhY3R1YWxseSB0aGUgcXVlc3Rpb24gaXM6IHdoZW4gQkRTIGNvcmUg Y2FuIGNvbnN1bWUgdGhlIERyaXZlciMjIyMgYW5kIHByb2Nlc3MgdGhlbT8NClJpZ2h0IG5vdywg aXTigJlzIHRoZSB0aW1lIGFmdGVyIEJlZm9yZUNvbnNvbGUoKS4gSnVzdCBhcyByaWdodCBub3cg QmVmb3JlQ29uc29sZSgpIHVwZGF0ZXMgQ29uT3V0DQppbiB5b3VyIGNhc2UsIEJlZm9yZUNvbnNv bGUoKSBpcyB0aGUgcGxhY2Ugd2hlcmUgcGxhdGZvcm0gdXBkYXRlcyBhbGwgVUVGSSBkZWZpbmVk IGJvb3QgcmVsYXRlZA0KdmFyaWFibGVzLiBQcm9jZXNzaW5nIERyaXZlciMjIyMgYmVmb3JlIEJl Zm9yZUNvbnNvbGUoKSByZXF1aXJlcyBwbGF0Zm9ybSB1cGRhdGVzIERyaXZlciMjIyMNCmluIG90 aGVyIHBsYWNlcy4gSXQncyBhIG5ldyByZXF1aXJlbWVudCB0byB0aGUgcGxhdGZvcm0uDQoNCldp dGggYWxsIHdoYXQgSSBleHBsYWluZWQgaW4gYWJvdmUsIEkgY2Fubm90IGFncmVlIHdpdGggdGhl IGNoYW5nZXMuDQoNCkFub3RoZXIgYXBwcm9hY2ggaXM6DQpQbGF0Zm9ybSBjb3VsZCBjb25uZWN0 IHRoZSBHRlggaW4gQWZ0ZXJDb25zb2xlKCkgYW5kIHVwZGF0ZSB0aGUgQ29uT3V0LiBUaGVuIHBs YXRmb3JtIGNvdWxkIG1hbnVhbGx5IGNhbGwgRWZpQm9vdE1hbmFnZXJDb25uZWN0Q29uc29sZVZh cmlhYmxlIChDb25PdXQpIHRvIHJlLWNvbm5lY3QgQ29uT3V0Lg0KSXQncyBhIGJpdCB1Z2x5IEkg YWdyZWUuDQoNClRoYW5rcywNClJheQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTmksIFJheQ0KPiBTZW50OiBGcmlkYXksIEphbnVhcnkgMTAsIDIwMjAgOToyMCBB TQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmcN Cj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+OyBMZWlmIExpbmRob2xtDQo+ IDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+OyBHYW8sIFpoaWNoYW8gPHpoaWNoYW8uZ2FvQGlu dGVsLmNvbT47IE1hLA0KPiBNYXVyaWNlIDxtYXVyaWNlLm1hQGludGVsLmNvbT47IERvbmcsIEd1 byA8Z3VvLmRvbmdAaW50ZWwuY29tPjsgWW91LA0KPiBCZW5qYW1pbiA8YmVuamFtaW4ueW91QGlu dGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUkZDIFBBVENIIDIvMl0gTWRl TW9kdWxlUGtnL0Jkc0R4ZTogYWxsb3cNCj4gY29uc29sZXMgb24gZHJpdmVycyBsb2FkZWQgdmlh IERyaXZlciMjIyMNCj4gDQo+IEFyZCwNCj4gSSB3aWxsIGdpdmUgdXBkYXRlIG9uIHRoaXMgYnkg ZW5kIG9mIHRoaXMgd2Vlay4gc29ycnkgYWJvdXQgdGhlIGRlbGF5Lg0KPiANCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZl bEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEFyZA0KPiBCaWVzaGV1dmVsDQo+ID4gU2Vu dDogVGh1cnNkYXksIEphbnVhcnkgOSwgMjAyMCA4OjU0IFBNDQo+ID4gVG86IE5pLCBSYXkgPHJh eS5uaUBpbnRlbC5jb20+DQo+ID4gQ2M6IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgTGVpZiBMaW5kaG9sbQ0KPiA8bGVpZi5saW5kaG9sbUBs aW5hcm8ub3JnPjsgR2FvLCBaaGljaGFvDQo+ID4gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT47IE1h LCBNYXVyaWNlIDxtYXVyaWNlLm1hQGludGVsLmNvbT47IERvbmcsIEd1bw0KPiA8Z3VvLmRvbmdA aW50ZWwuY29tPjsgWW91LCBCZW5qYW1pbg0KPiA+IDxiZW5qYW1pbi55b3VAaW50ZWwuY29tPg0K PiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1JGQyBQQVRDSCAyLzJdIE1kZU1vZHVsZVBr Zy9CZHNEeGU6IGFsbG93DQo+IGNvbnNvbGVzIG9uIGRyaXZlcnMgbG9hZGVkIHZpYSBEcml2ZXIj IyMjDQo+ID4NCj4gPiBPbiBNb24sIDIzIERlYyAyMDE5IGF0IDE1OjA5LCBBcmQgQmllc2hldXZl bCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gd3JvdGU6DQo+ID4gPg0KPiA+ID4gT24g VGh1LCAxMiBEZWMgMjAxOSBhdCAxMDowNSwgQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmc+DQo+IHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPiBPbiBUaHUsIDEyIERlYyAy MDE5IGF0IDA5OjU5LCBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPiB3cm90ZToNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IEFyZCwNCj4gPiA+ID4gPiBJIHN0aWxsIGNhbm5vdCB1bmRlcnN0YW5kIGl0 Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU2luY2UgRHJpdmVyIyMjIyBhcmUgcHJvY2Vzc2VkIChw cm9jZXNzID0gTG9hZEltYWdlICsgU3RhcnRJbWFnZSkgYWZ0ZXINCj4gRW5kT2ZEeGUsIHRoZXkg YXJlIG5vdCBkZWZlcnJlZC4NCj4gPiA+ID4gPiBJdCBtZWFucyB0aGUgRHJpdmVyIyMjIyBlbnRy eXBvaW50cyBhcmUgY2FsbGVkIGRpcmVjdGx5Lg0KPiA+ID4gPiA+IEluc2lkZSB0aGUgZW50cnlw b2ludHMsIGRyaXZlcmJpbmRpbmcgcHJvdG9jb2xzIGFyZSBpbnN0YWxsZWQuDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBBZnRlciB0aGF0LCBFZmlCb290TWFuYWdlckNvbm5lY3RBbGxEZWZhdWx0Q29u c29sZXMgKCkgdXNlcyBkcml2ZXINCj4gbW9kZWwgbG9naWMgdG8gc3RhcnQgdGhlIHByb3BlciBH T1AgZHJpdmVyLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEl0IG9ubHkgZG9lcyB0aGF0 IGlmIHRoZSBHT1AgY29uc29sZSBpcyBhbHJlYWR5IGluIHRoZQ0KPiA+ID4gPiBDb25Jbi9Db25P dXQvQ29uRXJyIHZhcmlhYmxlcywgbm8/DQo+ID4gPiA+DQo+ID4gPiA+IFRvZGF5LCB3ZSBoYXZl IGNvZGUgaW4gdGhlIFBsYXRmb3JtQmRzTGliIHRvIHRyYXZlcnNlIHRoZSBQQ0kNCj4gPiA+ID4g aGllcmFyY2h5IHRvIHBvcHVsYXRlIHRob3NlIENvblhYWCB2YXJpYWJsZXMgaWYgd2UgZW5jb3Vu dGVyIGFueSBQQ0kNCj4gPiA+ID4gZ3JhcGhpY3MgY2FyZHMsIGJ1dCB0aGlzIGlzIGRvbmUgaW4N Cj4gPiA+ID4gUGxhdGZvcm1Cb290TWFuYWdlckJlZm9yZUNvbnNvbGUoKSwgc28gaWYgdGhlIERy aXZlciMjIyMgaXMgbG9hZGVkDQo+ID4gPiA+ICphZnRlciogUGxhdGZvcm1Cb290TWFuYWdlckJl Zm9yZUNvbnNvbGUoKSwgaXQgd2lsbCBub3QgYmUgYWRkZWQgdG8NCj4gPiA+ID4gQ29uWFhYLiBT byB3ZSBuZWVkIHRvIHByb2Nlc3MgRHJpdmVyIyMjIyBiZWZvcmUgY2FsbGluZw0KPiA+ID4gPiBQ bGF0Zm9ybUJvb3RNYW5hZ2VyQmVmb3JlQ29uc29sZSgpLCBzbyB0aGF0IHRoZSBkcml2ZXIgaXMg ZGlzcGF0Y2hlcw0KPiA+ID4gPiByaWdodCBhZnRlciB3ZSBjYWxsIERpc3BhdGNoRGVmZXJyZWRJ bWFnZXMoKSBidXQgYmVmb3JlIHdlIGRvIHRoZQ0KPiA+ID4gPiB0cmF2ZXJzYWwgYW5kIHBvcHVs YXRlIHRoZSBDT25YWFggdmFyaWFibGVzLg0KPiA+ID4gPg0KPiA+ID4gPiBIb3cgZWxzZSBkbyB5 b3UgcHJvcG9zZSB3ZSBjb3VsZCBtYWtlIFBDSSBncmFwaGljcyBjb250cm9sbGVycw0KPiA+ID4g PiBzdXBwb3J0ZWQgYnkgRHJpdmVyIyMjIyBvcHRpb25zIGFwcGVhciBpbiBDT25YWFggYmVmb3Jl DQo+ID4gPiA+IEVmaUJvb3RNYW5hZ2VyQ29ubmVjdEFsbERlZmF1bHRDb25zb2xlcygpIGlzIGNh bGxlZD8NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBQaW5nPw0KPiA+ID4NCj4gPiA+DQo+ID4NCj4g PiBQaW5nIGFnYWluPw0KPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPiBBcmQg Qmllc2hldXZlbA0KPiA+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBEZWNlbWJlciAxMSwgMjAx OSA2OjQwIFBNDQo+ID4gPiA+ID4gPiBUbzogTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4g PiA+ID4gPiA+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgZWRrMi1kZXZl bC1ncm91cHMtaW8NCj4gPGRldmVsQGVkazIuZ3JvdXBzLmlvPjsgTGVpZiBMaW5kaG9sbQ0KPiA+ ID4gPiA+ID4gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IEdhbywgWmhpY2hhbyA8emhpY2hh by5nYW9AaW50ZWwuY29tPjsNCj4gTWEsIE1hdXJpY2UgPG1hdXJpY2UubWFAaW50ZWwuY29tPjsg RG9uZywNCj4gPiBHdW8NCj4gPiA+ID4gPiA+IDxndW8uZG9uZ0BpbnRlbC5jb20+OyBZb3UsIEJl bmphbWluIDxiZW5qYW1pbi55b3VAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUkZDIFBBVENIIDIvMl0gTWRlTW9kdWxlUGtnL0Jkc0R4ZToNCj4gYWxs b3cgY29uc29sZXMgb24gZHJpdmVycyBsb2FkZWQgdmlhIERyaXZlciMjIyMNCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBPbiBNb24sIDkgRGVjIDIwMTkgYXQgMDk6NDIsIEFyZCBCaWVzaGV1dmVs DQo+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gT24gTW9uLCA5IERlYyAyMDE5IGF0IDAzOjEyLCBOaSwgUmF5IDxyYXkubmlA aW50ZWwuY29tPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gRXhh Y3RseS4gVGhpcyBmbG93IGlzIGlkZW50aWNhbCB0byBob3cgb3B0aW9uIFJPTXMgYXJlIHByb2Nl c3NlZCBpZg0KPiA+ID4gPiA+ID4gPiA+ID4gdGhleSBhcmUgZGlzY292ZXJlZCBiZWZvcmUgRW5k T2ZEeGUgc2lnbmFsbGluZyBjb21wbGV0ZXMgKHdoaWNoDQo+IGlzIHdoeQ0KPiA+ID4gPiA+ID4g PiA+ID4gdGhlIEp1bm8gcGxhdGZvcm0gd2FzIGJyb2tlbiB3aXRob3V0IHRoZSBjYWxsIHRvDQo+ ID4gPiA+ID4gPiA+ID4gPiBFZmlCb290TWFuYWdlckRpc3BhdGNoRGVmZXJyZWRJbWFnZXMoKSBp bg0KPiA+ID4gPiA+ID4gPiA+ID4gUGxhdGZvcm1Cb290TWFuYWdlckJlZm9yZUNvbnNvbGUoKSkN Cj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBBcmQs DQo+ID4gPiA+ID4gPiA+ID4gSSBjaGVja2VkIEFybVBrZydzIFBsYXRmb3JtQm9vdE1hbmFnZXJM aWIgYW5kIGZvdW5kIGl0IGRvZXNuJ3QNCj4gPiA+ID4gPiA+ID4gPiBjYWxsICpEaXNwYXRjaERl ZmVycmVkSW1hZ2VzKCkgYWZ0ZXIgc2lnbmFsaW5nIEVuZE9mRHhlLg0KPiA+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEl0IGRvZXMuIFdlIGp1c3QgYWRkZWQgdGhp cyBpbg0KPiAwZjkzOTVkN2M1Y2M2YWUyYmVhYTJkODcwMDhmZTE1OGQwNGE4MDY5DQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gVGhlIGRlZmVycmVkIGltYWdlIGRpc3BhdGNoIG1lY2hh bmlzbSBhc3N1bWVzIHRoZSBwbGF0Zm9ybQ0KPiA+ID4gPiA+ID4gPiA+IG5lZWRzIHRvIGNhbGwg dGhlICpEaXNwYXRjaERlZmVycmVkSW1hZ2VzKCkgYWZ0ZXIgc2lnbmFsaW5nDQo+IEVuZE9mRHhl Lg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEluZGVlZC4N Cj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHRo ZSBkZWZlcnJlZCBpbWFnZSBjYW4gYmUgbG9hZGVkIHdpdGggeW91cg0KPiBwYXRjaC4NCj4gPiA+ ID4gPiA+ID4gPiBUaGV5IGFyZSBzdGlsbCBkZWZlcnJlZCBiZWNhdXNlIHRoZSBsb2FkaW5nIHRp bWUgaXMgYmVmb3JlIEVuZE9mRHhlLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiA+IFllcywgYnV0IGJlY2F1c2UgUGxhdGZvcm1Cb290TWFuYWdlckJlZm9yZUNv bnNvbGUgKCkgZG9lcyBhbGwgb2YNCj4gdGhpcywNCj4gPiA+ID4gPiA+ID4gdGhlIG9ubHkgd2F5 IHRvIGdldCBEcml2ZXIjIyMjIHRvIHdvcmsgZm9yIGNvbnNvbGVzIG9uIEdPUCBkcml2ZXJzLA0K PiB3ZQ0KPiA+ID4gPiA+ID4gPiBuZWVkIHRvIG1vdmUgaXQgYmVmb3JlIHRoYXQgY2FsbC4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBBbnkgZnVydGhlciBjb21tZW50cyBvbiB0aGlzIHBhdGNo Pw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPg0KPiA+IA0KDQo=