From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: zhichao.gao@intel.com) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by groups.io with SMTP; Tue, 07 May 2019 00:11:35 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 May 2019 00:11:34 -0700 X-ExtLoop1: 1 Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga002.jf.intel.com with ESMTP; 07 May 2019 00:11:34 -0700 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 7 May 2019 00:11:33 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 7 May 2019 00:11:32 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.129]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.126]) with mapi id 14.03.0415.000; Tue, 7 May 2019 15:11:29 +0800 From: "Gao, Zhichao" To: Laszlo Ersek , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Wu, Hao A" , "Ni, Ray" , "Zeng, Star" , "Gao, Liming" , Sean Brogan , Michael Turner , Bret Barkelew Subject: Re: [edk2-devel] [PATCH V3 2/2] MdeModulePkg/GraphicsConsoleDxe: Initialize the output mode Thread-Topic: [edk2-devel] [PATCH V3 2/2] MdeModulePkg/GraphicsConsoleDxe: Initialize the output mode Thread-Index: AQHVBDMLgnnICmGYx02h9azr1gTl1qZe32DA Date: Tue, 7 May 2019 07:11:28 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B7D0AEF@SHSMSX101.ccr.corp.intel.com> References: <20190505021738.17060-1-zhichao.gao@intel.com> <20190505021738.17060-3-zhichao.gao@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: zhichao.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIE1heSA3LCAyMDE5IDE6 NDIgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBHYW8sIFpoaWNoYW8gPHpoaWNoYW8u Z2FvQGludGVsLmNvbT4NCj4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29t PjsgV3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+Ow0KPiBOaSwgUmF5IDxyYXkubmlAaW50 ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47IEdhbywgTGltaW5nDQo+ IDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBtaWNyb3Nv ZnQuY29tPjsNCj4gTWljaGFlbCBUdXJuZXIgPE1pY2hhZWwuVHVybmVyQG1pY3Jvc29mdC5jb20+ OyBCcmV0IEJhcmtlbGV3DQo+IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+DQo+IFN1Ympl Y3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIFYzIDIvMl0NCj4gTWRlTW9kdWxlUGtnL0dyYXBo aWNzQ29uc29sZUR4ZTogSW5pdGlhbGl6ZSB0aGUgb3V0cHV0IG1vZGUNCj4gDQo+IE9uIDA1LzA1 LzE5IDA0OjE3LCBHYW8sIFpoaWNoYW8gd3JvdGU6DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxh LnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTINCj4gPg0KPiA+IE9yaWdpbmFsIGxv Z2ljOg0KPiA+IENvbm5lY3QgdGhlIGdyYXBoaWNzIGRldmljZSAtPiBjb25uZWN0IGl0IGFzIGdy YXBoaWNzIGNvbnNvbGVzIGFuZA0KPiA+IGluaXRpYWxpemUgaXRzIHBhcmFtZXRlcnMoTW9kZSA9 IC0xLCBpbnZhbGlkKSAtPiBjb25uZWN0IGl0IGFzIGNvbnNvbGUNCj4gPiBzcGxpdGVyIGFuZCBh ZGQgdGhlIGRldmljZSB0byB0aGUgbGlzdCh1c2UgU2V0TW9kZSB0byBzZXQgbW9kZSB0byB0aGUN Cj4gPiB1c2VyIGRlZmluZWQgbW9kZSBvciB0aGUgYmVzdCBtb2RlIHRoZSBkZXZpY2VzIHN1cHBv cnRlZCBpZiB0aGUgbW9kZQ0KPiA+IGlzIGludmFsaWQuICpjbGVhciB0aGUgc2NyZWVuIGF0IHRo aXMgcGhhc2UqKQ0KPiA+DQo+ID4gQ2hhbmdlZCBsb2dpYzoNCj4gPiBDb25uZWN0IHRoZSBncmFw aGljcyBkZXZpY2UgLT4gY29ubmVjdCBpdCBhcyBncmFwaGljcyBjb25zb2xlcyBhbmQNCj4gPiBp bml0aWFsaXplIGl0cyBwYXJhbWV0ZXJzKGluaXRpYWxpemUgdGhlIG1vZGUgdG8gdGhlIHVzZXIg ZGVmaW5lZCBtb2RlDQo+ID4gb3IgdGhlIGJlc3QgbW9kZS4gKmRpcmVjdGx5IHNldCB0aGUgbW9k ZSB2YWx1ZSB3aXRob3V0IHVzaW5nIFNldE1vZGUsDQo+ID4gdGhhdCB3b3VsZCBub3QgY2xlYXIg dGhlIHNjcmVlbikgLT4gY29ubmVjdCBpdCBhcyBjb25zb2xlIHNwbGl0ZXIgYW5kDQo+ID4gYWRk IHRoZSBkZXZpY2UgdG8gdGhlIGxpc3QodXNlIFNldE1vZGUgdG8gc2V0IG1vZGUgdG8gdGhlIHVz ZXIgZGVmaW5lZA0KPiA+IG1vZGUgb3IgdGhlIGJlc3QgbW9kZSB0aGUgZGV2aWNlcyBzdXBwb3J0 ZWQgaWYgdGhlIG1vZGUgaXMgaW52YWxpZC4NCj4gPiAqbm93IHRoZSBtb2RlIGlzIGFscmVhZHkg c2V0LCBzbyBpdCB3b3VsZCBub3QgY2xlYXIgdGhlIHNjcmVlbiopLg0KPiA+DQo+ID4gQWxzbyBy ZW1vdmUgdGhlIHNlY3Rpb24gb2YgU2V0TW9kZSBmb3IgZGVidWcgdmVyc2lvbi4NCj4gPg0KPiA+ IEJ1dCB0aGVyZSB3b3VsZCBiZSBubyBjbGVhciBzY3JlZW4gb3BlcmF0aW9uIHdoaWxlIHJlY29u bmVjdCB0aGUNCj4gPiBncmFwaGljcyBkZXZpY2UuIEluc3RlYWQsIGNsZWFyIHRoZSBzY3JlZW4g d2hlbiBzdG9wIHRoZSBncmFwaGljcw0KPiA+IGNvbnNvbGUgZGV2aWNlLg0KPiA+DQo+ID4gQ2M6 IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IEhhbyBXdSA8aGFv LmEud3VAaW50ZWwuY29tPg0KPiA+IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4g Q2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPiBDYzogTGltaW5nIEdhbyA8 bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gQ2M6IFNlYW4gQnJvZ2FuIDxzZWFuLmJyb2dhbkBt aWNyb3NvZnQuY29tPg0KPiA+IENjOiBNaWNoYWVsIFR1cm5lciA8TWljaGFlbC5UdXJuZXJAbWlj cm9zb2Z0LmNvbT4NCj4gPiBDYzogQnJldCBCYXJrZWxldyA8QnJldC5CYXJrZWxld0BtaWNyb3Nv ZnQuY29tPg0KPiA+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+IFNp Z25lZC1vZmYtYnk6IFpoaWNoYW8gR2FvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+ID4gLS0t DQo+ID4gIC4uLi9HcmFwaGljc0NvbnNvbGVEeGUvR3JhcGhpY3NDb25zb2xlLmMgICAgICB8IDQ0 ICsrKysrKysrKysrKysrLS0tLS0NCj4gPiAgLi4uL0dyYXBoaWNzQ29uc29sZUR4ZS9HcmFwaGlj c0NvbnNvbGVEeGUuaW5mIHwgIDIgKw0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlv bnMoKyksIDEwIGRlbGV0aW9ucygtKQ0KPiANCj4gVGhpcyBkcml2ZXIgaXMgdG9vIGNvbXBsZXgg Zm9yIG1lIHRvIGRlY2lkZSB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgY29ycmVjdC4NCj4gDQo+IFRo ZSBzcGVjIHdyaXRlczoNCj4gDQo+ID4gSWYgdGhlIG91dHB1dCBkZXZpY2UgaXMgbm90IGluIGEg dmFsaWQgdGV4dCBtb2RlIGF0IHRoZSB0aW1lIG9mIHRoZQ0KPiA+IEVGSV9CT09UX1NFUlZJQ0VT LkhhbmRsZVByb3RvY29sKCkgY2FsbCwgdGhlIGRldmljZSBpcyB0byBpbmRpY2F0ZQ0KPiA+IHRo YXQgaXRzIEN1cnJlbnRNb2RlIGlzIC0xLg0KPiANCj4gKDEpIEJlY2F1c2UgdGhlIHBhdGNoIHNl dHMgYSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSAtMSB0byBDdXJyZW50TW9kZSwgY2FuIHdlDQo+IGd1 YXJhbnRlZSB0aGF0IHRoZSBjb25zb2xlIHdpbGwgYmUgdXNhYmxlIGltbWVkaWF0ZWx5Pw0KDQpJ IHRoaW5rIHdlIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUgQ3VycmVudE1vZGUgdmFsdWUgaXMgdmFs aWQgZXhjZXB0IHRoZSB2YWx1ZSBpcyAwIG9yIC0xLiBCZWNhdXNlIHRoZSBpbml0aWFsaXplIG1v ZGUgc2VjdGlvbiBpcyBzYW1lIHdpdGggdGhlIG9uZSBpbiBDb25TcGxpdHRlckR4ZS4NCg0KPiAN Cj4gDQo+IE1vcmUgY29tbWVudHMgYmVsb3c6DQo+IA0KPiBPbiAwNS8wNS8xOSAwNDoxNywgR2Fv LCBaaGljaGFvIHdyb3RlOg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvQ29uc29sZS9HcmFwaGljc0NvbnNvbGVEeGUvR3JhcGhpY3NDb25zb2xlDQo+IC5j DQo+ID4NCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NvbnNvbGUvR3JhcGhpY3NDb25zb2xl RHhlL0dyYXBoaWNzQ29uc29sDQo+IGUuYw0KPiA+IGluZGV4IDI2ZWExOWYzMDAuLjQyMzg2ZGUz ZjUgMTAwNjQ0DQo+ID4gLS0tDQo+ID4NCj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NvbnNv bGUvR3JhcGhpY3NDb25zb2xlRHhlL0dyYXBoaWNzQ29uc29sZQ0KPiAuYw0KPiA+ICsrKw0KPiBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ29uc29sZS9HcmFwaGljc0NvbnNvbGVEeGUvR3JhcGhp Y3NDb25zb2wNCj4gPiArKysgZS5jDQo+ID4gQEAgLTEsNyArMSw3IEBADQo+ID4gIC8qKiBAZmls ZQ0KPiA+ICAgIFRoaXMgaXMgdGhlIG1haW4gcm91dGluZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBH cmFwaGljcyBDb25zb2xlIHN1cHBvcnQNCj4gcm91dGluZXMuDQo+ID4NCj4gPiAtQ29weXJpZ2h0 IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiByZXNl cnZlZC48QlI+DQo+ID4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMTksIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzDQo+ID4gK3Jlc2VydmVkLjxCUj4NCj4gPiAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPg0KPiA+ICAqKi8NCj4gPiBAQCAtMzg0 LDYgKzM4NCwxMiBAQCBHcmFwaGljc0NvbnNvbGVDb250cm9sbGVyRHJpdmVyU3RhcnQgKA0KPiA+ ICAgIEVGSV9HUkFQSElDU19PVVRQVVRfUFJPVE9DT0xfTU9ERSAgICAqTW9kZTsNCj4gPiAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZU9mSW5mbzsNCj4gPiAgICBF RklfR1JBUEhJQ1NfT1VUUFVUX01PREVfSU5GT1JNQVRJT04gKkluZm87DQo+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlck1vZGU7DQo+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW47DQo+ID4gKyAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJvdzsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRGVmYXVsdENvbHVtbjsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRGVmYXVsdFJvdzsNCj4gPg0KPiA+ICAgIE1vZGVOdW1iZXIgPSAw Ow0KPiA+DQo+ID4gQEAgLTU2NywxNiArNTczLDMyIEBAIEdyYXBoaWNzQ29uc29sZUNvbnRyb2xs ZXJEcml2ZXJTdGFydCAoDQo+ID4gICAgLy8NCj4gPiAgICBQcml2YXRlLT5TaW1wbGVUZXh0T3V0 cHV0TW9kZS5NYXhNb2RlID0gKElOVDMyKSBNYXhNb2RlOw0KPiA+DQo+ID4gLSAgREVCVUdfQ09E RV9CRUdJTiAoKTsNCj4gPiAtICAgIFN0YXR1cyA9IEdyYXBoaWNzQ29uc29sZUNvbk91dFNldE1v ZGUgKCZQcml2YXRlLQ0KPiA+U2ltcGxlVGV4dE91dHB1dCwgMCk7DQo+ID4gLSAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gLSAgICAgIGdvdG8gRXJyb3I7DQo+ID4gLSAgICB9DQo+ ID4gLSAgICBTdGF0dXMgPSBHcmFwaGljc0NvbnNvbGVDb25PdXRPdXRwdXRTdHJpbmcgKCZQcml2 YXRlLQ0KPiA+U2ltcGxlVGV4dE91dHB1dCwgKENIQVIxNiAqKUwiR3JhcGhpY3MgQ29uc29sZSBT dGFydGVkXG5cciIpOw0KPiA+IC0gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+IC0g ICAgICBnb3RvIEVycm9yOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW5pdGlhbGl6ZSB0aGUgTW9k ZSBvZiBncmFwaGljcyBjb25zb2xlIGRldmljZXMgIC8vICBQcmVmZXJNb2RlDQo+ID4gKyA9IDA7 ICBEZWZhdWx0Q29sdW1uID0gUGNkR2V0MzIgKFBjZENvbk91dENvbHVtbik7ICBEZWZhdWx0Um93 ID0NCj4gPiArIFBjZEdldDMyIChQY2RDb25PdXRSb3cpOyAgQ29sdW1uID0gMDsgIFJvdyA9IDA7 ICBmb3IgKEluZGV4ID0gMDsNCj4gPiArIEluZGV4IDwgTWF4TW9kZTsgSW5kZXgrKykgew0KPiA+ ICsgICAgaWYgKERlZmF1bHRDb2x1bW4gIT0gMCAmJiBEZWZhdWx0Um93ICE9IDApIHsNCj4gPiAr ICAgICAgaWYgKChQcml2YXRlLT5Nb2RlRGF0YVtJbmRleF0uQ29sdW1ucyA9PSBDb2x1bW4pICYm DQo+ID4gKyAgICAgICAgICAoUHJpdmF0ZS0+TW9kZURhdGFbSW5kZXhdLlJvd3MgPT0gUm93KSkg ew0KPiA+ICsgICAgICAgIFByZWZlck1vZGUgPSBJbmRleDsNCj4gPiArICAgICAgICBicmVhazsN Cj4gPiArICAgICAgfQ0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgaWYgKChQcml2YXRl LT5Nb2RlRGF0YVtJbmRleF0uQ29sdW1ucyA+IENvbHVtbikgJiYNCj4gPiArICAgICAgICAgIChQ cml2YXRlLT5Nb2RlRGF0YVtJbmRleF0uUm93cyA+IFJvdykpIHsNCj4gPiArICAgICAgICBDb2x1 bW4gPSBQcml2YXRlLT5Nb2RlRGF0YVtJbmRleF0uQ29sdW1uczsNCj4gPiArICAgICAgICBSb3cg PSBQcml2YXRlLT5Nb2RlRGF0YVtJbmRleF0uUm93czsNCj4gPiArICAgICAgICBQcmVmZXJNb2Rl ID0gSW5kZXg7DQo+ID4gKyAgICAgIH0NCj4gPiAgICAgIH0NCj4gPiAtICBERUJVR19DT0RFX0VO RCAoKTsNCj4gPiArICB9DQo+ID4gKyAgUHJpdmF0ZS0+U2ltcGxlVGV4dE91dHB1dC5Nb2RlLT5N b2RlID0gKElOVDMyKVByZWZlck1vZGU7DQo+IA0KPiAoMikgVGhlIGxvb3AgYWJvdmUgY2FuIHRl cm1pbmF0ZSB3aXRob3V0IGFzc2lnbmluZyBJbmRleCB0byBQcmVmZXJNb2RlLg0KPiANCj4gSW4g dGhhdCBjYXNlLCB0aGUgYXNzaWdubWVudCByaWdodCBhZnRlciB0aGUgbG9vcCB3aWxsIHNldCB0 aGUgTW9kZSBmaWVsZCB0byAwLA0KPiB3aGVuIG92ZXJ3cml0aW5nIHRoZSBpbml0aWFsIHZhbHVl ICgtMSkuDQo+IA0KPiBJcyB0aGlzIGludGVudGlvbmFsPw0KPiANCj4gQmVjYXVzZSwgaWYgd2Ug Y2FuIGZpbmQgbm8gbWF0Y2hpbmcgbW9kZSwgaXQgc2VlbXMgbGlrZSB3ZSBzaG91bGQgc3RpY2sg d2l0aA0KPiAoLTEpIC0tIGZvciAiY3VycmVudCB0ZXh0IG1vZGUgaXMgbm90IHZhbGlkIi4gSW4g dGhhdCBjYXNlLCB0aGUgZm9sbG93aW5nIHBhc3NhZ2UNCj4gZnJvbSB0aGUgc3BlYyB3b3VsZCBh cHBseToNCj4gDQo+ID4gT24gY29ubmVjdGluZyB0byB0aGUgb3V0cHV0IGRldmljZSB0aGUgY2Fs bGVyIGlzIHJlcXVpcmVkIHRvIHZlcmlmeQ0KPiA+IHRoZSBtb2RlIG9mIHRoZSBvdXRwdXQgZGV2 aWNlLCBhbmQgaWYgaXQgaXMgbm90IGFjY2VwdGFibGUgdG8gc2V0IGl0DQo+ID4gdG8gc29tZXRo aW5nIGl0IGNhbiB1c2UuDQo+IA0KPiBTaG91bGQgd2UgcGVyaGFwcyBjaGFuZ2UgdGhlIHR5cGUg b2YgUHJlZmVyTW9kZSB0byBJTlQzMiwgYW5kIHNldCBpdA0KPiBpbml0aWFsbHkgdG8gKC0xKT8N Cg0KSSB0aGluayB5b3UgYXJlIHJpZ2h0LiBJZiBubyBtb2RlIGlzIHF1ZXJpZWQsIHRoZW4gaW52 YWxpZCBtb2RlIHNob3VsZCBiZSByZXR1cm5lZC4NCg0KPiANCj4gDQo+IE1vcmUgY29tbWVudHM6 DQo+IA0KPiBPbiAwNS8wNS8xOSAwNDoxNywgR2FvLCBaaGljaGFvIHdyb3RlOg0KPiA+ICsgIERF QlVHICgoREVCVUdfSU5GTywgIkdyYXBoaWNzIENvbnNvbGUgU3RhcnRlZCwgTW9kZTogJXhcblxy IiwNCj4gPiArIFByZWZlck1vZGUpKTsNCj4gDQo+ICgzKSBERUJVRyBtZXNzYWdlcyBzaG91bGQg bm90IGNvbnRhaW4gIlxyIiBjaGFyYWN0ZXJzLiBNeSB1bmRlcnN0YW5kaW5nIGlzDQo+IHRoYXQg UHJpbnRMaWIgYWRkcyAiXHIiIGF1dG9tYXRpY2FsbHkuDQo+IA0KPiANCj4gKDQpIFVJTlROIHZh bHVlcyAod2hpY2ggbWF5IGJlIFVJTlQ2NCwgZGVwZW5kZW50IG9uIGJ1aWxkIGFyY2hpdGVjdHVy ZSkNCj4gc2hvdWxkIG5vdCBiZSBwcmludGVkIHdpdGggIiV4Ii4gVUlOVE4gc2hvdWxkIGJlIGNv bnZlcnRlZCB0byBVSU5UNjQNCj4gZXhwbGljaXRseSwgZm9yIHByaW50aW5nLCBhbmQgdGhlbiBw cmludGVkIHdpdGggIiVMeCIgKG9yICIlTHUiKS4NCj4gDQo+IChJZiB5b3UgZGVjaWRlIHRvIHN3 aXRjaCBQcmVmZXJNb2RlIHRvIElOVDMyLCB0aGVuICVkIGlzIHRoZSBmb3JtYXQgc3BlY2lmaWVy DQo+IHRvIHVzZSwgb2YgY291cnNlLikNCg0KR29vZCBjYXRjaC4gSSB3aWxsIG1ha2UgdGhlIFBy ZWZlcm1vZGUgdG8gSU5UMzIgYW5kIGFkanVzdCB0aGUgZGVidWcgY29kZS4NCg0KPiANCj4gDQo+ ICg1KSBJIGFwcGxpZWQgdGhlIHNlcmllcywgZm9yIHRlc3RpbmcsIG9uIHRvcCBvZiBjb21taXQg ZmJiMGVjN2VhNGMwIChjdXJyZW50DQo+IG1hc3RlcikuIEkgdGVzdGVkIHRoZSBwYXRjaGVzIGJy aWVmbHkgd2l0aCBPVk1GLg0KPiANCj4gV2l0aCB0aGUgcGF0Y2hlcyBhcHBsaWVkLCB0aGUgZmly bXdhcmUgY3Jhc2hlcyB3aGVuIEkgcnVuICJyZWNvbm5lY3QgLXIiLCBhcw0KPiB0aGUgZmlyc3Qg Y29tbWFuZCwgaW4gdGhlIGJ1aWx0LWluIFVFRkkgc2hlbGw6DQo+IA0KPiA+ICEhISEgWDY0IEV4 Y2VwdGlvbiBUeXBlIC0gMEQoI0dQIC0gR2VuZXJhbCBQcm90ZWN0aW9uKSAgQ1BVIEFwaWMgSUQg LQ0KPiAwMDAwMDAwMCAhISEhDQo+ID4gRXhjZXB0aW9uRGF0YSAtIDAwMDAwMDAwMDAwMDAwMDAN Cj4gPiBSSVAgIC0gMDAwMDAwMDA3RUVDQjhGOSwgQ1MgIC0gMDAwMDAwMDAwMDAwMDAzOCwgUkZM QUdTIC0NCj4gPiAwMDAwMDAwMDAwMDEwMDEyIFJBWCAgLSAwMDAwRDBFQzgxNDhFNTg5LCBSQ1gg LSAwMDAwMDAwMDdFRjA2RkUwLCBSRFgNCj4gPiAtIDAwMDAwMDAwMDkwNEE3QTAgUkJYICAtIDAw MDAwMDAwMDAwMDAwMTMsIFJTUCAtIDAwMDAwMDAwN0VFQzkxMTAsDQo+ID4gUkJQIC0gMDAwMDAw MDA3RUVDOTE0MCBSU0kgIC0gMDAwMDAwMDA3RUVDOTJEOCwgUkRJIC0gMDAwMDAwMDA3RUYwNzAx MA0KPiA+IFI4ICAgLSAwMDAwMDAwMDAwMDAwMDA3LCBSOSAgLSAwMDAwMDAwMTJFOUM0NkQ2LCBS MTAgLSAwMDAwMDAwNDAwMDIwMTAwDQo+ID4gUjExICAtIDAwMDAwMDAwMDAwMDAwMDgsIFIxMiAt IDAwMDAwMDAwMDAwMDAwMDAsIFIxMyAtDQo+ID4gMDAwMDAwMDAwMDAwMDAwMA0KPiA+IFIxNCAg LSAwMDAwMDAwMDAwMDAwMDAwLCBSMTUgLSAwMDAwMDAwMDAwMDAwMDAwDQo+ID4gRFMgICAtIDAw MDAwMDAwMDAwMDAwMzAsIEVTICAtIDAwMDAwMDAwMDAwMDAwMzAsIEZTICAtIDAwMDAwMDAwMDAw MDAwMzANCj4gPiBHUyAgIC0gMDAwMDAwMDAwMDAwMDAzMCwgU1MgIC0gMDAwMDAwMDAwMDAwMDAz MA0KPiA+IENSMCAgLSAwMDAwMDAwMDgwMDEwMDMzLCBDUjIgLSAwMDAwMDAwMDAwMDAwMDAwLCBD UjMgLQ0KPiA+IDAwMDAwMDAwN0VDMDEwMDANCj4gPiBDUjQgIC0gMDAwMDAwMDAwMDAwMDY2OCwg Q1I4IC0gMDAwMDAwMDAwMDAwMDAwMA0KPiA+IERSMCAgLSAwMDAwMDAwMDAwMDAwMDAwLCBEUjEg LSAwMDAwMDAwMDAwMDAwMDAwLCBEUjIgLQ0KPiA+IDAwMDAwMDAwMDAwMDAwMDANCj4gPiBEUjMg IC0gMDAwMDAwMDAwMDAwMDAwMCwgRFI2IC0gMDAwMDAwMDBGRkZGMEZGMCwgRFI3IC0NCj4gPiAw MDAwMDAwMDAwMDAwNDAwIEdEVFIgLSAwMDAwMDAwMDdFQkVEQTk4IDAwMDAwMDAwMDAwMDAwNDcs IExEVFIgLQ0KPiAwMDAwMDAwMDAwMDAwMDAwDQo+ID4gSURUUiAtIDAwMDAwMDAwN0UyNDEwMTgg MDAwMDAwMDAwMDAwMEZGRiwgICBUUiAtIDAwMDAwMDAwMDAwMDAwMDANCj4gPiBGWFNBVkVfU1RB VEUgLSAwMDAwMDAwMDdFRUM4RDcwDQo+ID4gISEhISBGaW5kIGltYWdlIGJhc2VkIG9uIElQKDB4 N0VFQ0I4RjkpDQo+ID4NCj4gQnVpbGQvT3ZtZjMyNjQvTk9PUFRfR0NDNDgvWDY0L01kZU1vZHVs ZVBrZy9Db3JlL0R4ZS9EeGVNYWluLw0KPiBERUJVRy9EeGUNCj4gPiBDb3JlLmRsbCAoSW1hZ2VC YXNlPTAwMDAwMDAwN0VFQ0IwMDAsIEVudHJ5UG9pbnQ9MDAwMDAwMDA3RUVEMDBDMykNCj4gPiAh ISEhDQo+IA0KPiBUaGUgY3Jhc2ggb2Zmc2V0IGlzIDB4MDAwMDAwMDA3RUVDQjhGOS0weDAwMDAw MDAwN0VFQ0IwMDAgPSAweDhGOS4NCj4gDQo+IFRoZSBjcmFzaCBvY2N1cnMgaW4gdGhlIEludGVy bmFsQmFzZUxpYklzTGlzdFZhbGlkKCkgZnVuY3Rpb246DQo+IA0KPiA+ICAgICAvLw0KPiA+ICAg ICAvLyBDb3VudCB0aGUgdG90YWwgbnVtYmVyIG9mIG5vZGVzIGluIExpc3QuDQo+ID4gICAgIC8v IEV4aXQgZWFybHkgaWYgdGhlIG51bWJlciBvZiBub2RlcyBpbiBMaXN0ID49DQo+IFBjZE1heGlt dW1MaW5rZWRMaXN0TGVuZ3RoDQo+ID4gICAgIC8vDQo+ID4gICAgIGRvIHsNCj4gPiAgICAgICBQ dHIgPSBQdHItPkZvcndhcmRMaW5rOw0KPiA+ICAgICAgOGY1OiAgICAgICA0OCA4YiA0NSBmMCAg ICAgICAgICAgICBtb3YgICAgLTB4MTAoJXJicCksJXJheA0KPiA+ICAgICAgOGY5OiAgICAgICA0 OCA4YiAwMCAgICAgICAgICAgICAgICBtb3YgICAgKCVyYXgpLCVyYXggICAgICAgIDwtLS0tLS0t IGhlcmUNCj4gPiAgICAgIDhmYzogICAgICAgNDggODkgNDUgZjAgICAgICAgICAgICAgbW92ICAg ICVyYXgsLTB4MTAoJXJicCkNCj4gDQo+IChSQVggPSAweEQwRUNfODE0OF9FNTg5LCB3aGljaCBp cyBhcHByb3hpbWF0ZWx5IDIwOCBUQiwgc28gb2J2aW91c2x5DQo+IHNvbWV0aGluZyBjb3JydXB0 ZWQgYSBsaXN0KS4NCj4gDQo+IFRoZSBjcmFzaCBkb2VzIG5vdCBvY2N1ciAoInJlY29ubmVjdCAt ciIgd29ya3MgZmluZSkgaWYgSSBidWlsZCBPVk1GIGF0DQo+IGZiYjBlYzdlYTRjMCAoY3VycmVu dCBtYXN0ZXIpLg0KDQpJIGhhdmUgdHJpZWQgdGhhdC4gU29tZXRoaW5nIHdyb25nIHdpdGggdGhl IENsZWFyU2NyZWVuIGZ1bmN0aW9uLiBJIHdpbGwgaW52ZXN0aWdhdGUgaXQgbGF0ZXIuDQoNClRo YW5rcywNClpoaWNoYW8NCg0KPiANCj4gVGhhbmtzLA0KPiBMYXN6bG8NCj4gDQo+ID4NCj4gPiAg ICAvLw0KPiA+ICAgIC8vIEluc3RhbGwgcHJvdG9jb2wgaW50ZXJmYWNlcyBmb3IgdGhlIEdyYXBo aWNzIENvbnNvbGUgZGV2aWNlLg0KPiA+IEBAIC02NjksNiArNjkxLDggQEAgR3JhcGhpY3NDb25z b2xlQ29udHJvbGxlckRyaXZlclN0b3AgKA0KPiA+ICAgICAgcmV0dXJuIEVGSV9OT1RfU1RBUlRF RDsNCj4gPiAgICB9DQo+ID4NCj4gPiArICBTaW1wbGVUZXh0T3V0cHV0LT5DbGVhclNjcmVlbiAo U2ltcGxlVGV4dE91dHB1dCk7DQo+ID4gKw0KPiA+ICAgIFByaXZhdGUgPSBHUkFQSElDU19DT05T T0xFX0NPTl9PVVRfREVWX0ZST01fVEhJUw0KPiA+IChTaW1wbGVUZXh0T3V0cHV0KTsNCj4gPg0K PiA+ICAgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKCBkaWZmIC0t Z2l0DQo+ID4NCj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NvbnNvbGUvR3JhcGhpY3NDb25z b2xlRHhlL0dyYXBoaWNzQ29uc29sZQ0KPiBEeGUNCj4gPiAuaW5mDQo+ID4NCj4gYi9NZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL0NvbnNvbGUvR3JhcGhpY3NDb25zb2xlRHhlL0dyYXBoaWNzQ29uc29s DQo+IGVEeGUNCj4gPiAuaW5mDQo+ID4gaW5kZXggZjdjYWE2NWFhOS4uYmNmZDMwNmVlZSAxMDA2 NDQNCj4gPiAtLS0NCj4gPg0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ29uc29sZS9HcmFw aGljc0NvbnNvbGVEeGUvR3JhcGhpY3NDb25zb2xlDQo+IER4ZQ0KPiA+IC5pbmYNCj4gPiArKysN Cj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NvbnNvbGUvR3JhcGhpY3NDb25zb2xlRHhlL0dy YXBoaWNzQ29uc29sDQo+ID4gKysrIGVEeGUuaW5mDQo+ID4gQEAgLTY1LDYgKzY1LDggQEANCj4g PiAgW1BjZF0NCj4gPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlkZW9I b3Jpem9udGFsUmVzb2x1dGlvbiAjIw0KPiBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiAgICBnRWZp TWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmlkZW9WZXJ0aWNhbFJlc29sdXRpb24gICAj Iw0KPiBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkQ29uT3V0Um93ICAgICAgICAgICAgICAgICAjIw0KPiBTT01FVElNRVNfQ09OU1VN RVMNCj4gPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkQ29uT3V0Q29sdW1u ICAgICAgICAgICAgICAjIw0KPiBTT01FVElNRVNfQ09OU1VNRVMNCj4gPg0KPiA+ICBbVXNlckV4 dGVuc2lvbnMuVGlhbm9Db3JlLiJFeHRyYUZpbGVzIl0NCj4gPiAgICBHcmFwaGljc0NvbnNvbGVE eGVFeHRyYS51bmkNCj4gPg0KDQo=