From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 030F220945C16 for ; Thu, 14 Sep 2017 01:35:15 -0700 (PDT) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP; 14 Sep 2017 01:38:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,391,1500966000"; d="scan'208,217";a="149067754" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga005.jf.intel.com with ESMTP; 14 Sep 2017 01:38:14 -0700 Received: from fmsmsx157.amr.corp.intel.com (10.18.116.73) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 01:38:13 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX157.amr.corp.intel.com (10.18.116.73) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 14 Sep 2017 01:38:13 -0700 Received: from shsmsx151.ccr.corp.intel.com ([169.254.3.98]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.117]) with mapi id 14.03.0319.002; Thu, 14 Sep 2017 16:38:10 +0800 From: "Yao, Jiewen" To: Laszlo Ersek , "Wang, Jian J" CC: "Dong, Eric" , "Justen, Jordan L" , "edk2-devel@lists.01.org" , "Wolman, Ayellet" , "Kinney, Michael D" , "Zeng, Star" Thread-Topic: [edk2] [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. Thread-Index: AQHTLHJCRvj92DWVtkGelHpr0+5g4KKy8rOAgAAcvwCAACF6gIAAV2QAgACIDFA= Date: Thu, 14 Sep 2017 08:38:09 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A9B264A@SHSMSX151.ccr.corp.intel.com> References: <20170913092507.12504-1-jian.j.wang@intel.com> <20170913092507.12504-5-jian.j.wang@intel.com> <848bc70b-b3f7-62fb-ef2d-df89ff8805a6@redhat.com> <4dd43619-552e-9d0e-3d2b-ca9c1f3b80a3@redhat.com> In-Reply-To: <4dd43619-552e-9d0e-3d2b-ca9c1f3b80a3@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH 4/4] OvmfPkg/QemuVideoDxe: Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2017 08:35:16 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SEkNCkkgd29uZGVyIGlmIGl0IGlzIHNwZWMgbGltaXRhdGlvbiBvciBpbXBsZW1lbnRhdGlvbiBs aW1pdGF0aW9uLg0KDQpJZiBpdCBpcyBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0aW9uLCB3ZSBjYW4g ZW5oYW5jZSB0aGUgRHhlQ29yZSB0byBhbGxvdyBpdC4NCg0KVGhhbmsgeW91DQpZYW8gSmlld2Vu DQoNCkZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KU2VudDog VGh1cnNkYXksIFNlcHRlbWJlciAxNCwgMjAxNyA0OjMwIFBNDQpUbzogV2FuZywgSmlhbiBKIDxq aWFuLmoud2FuZ0BpbnRlbC5jb20+DQpDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNv bT47IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZzsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgV29s bWFuLCBBeWVsbGV0IDxheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50 ZWwuY29tPg0KU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggNC80XSBPdm1mUGtnL1FlbXVWaWRl b0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8gYnlwYXNzIE5VTEwgcG9pbnRlciBk ZXRlY3Rpb24gaWYgZW5hYmxlZC4NCg0KT24gMDkvMTQvMTcgMDU6MTcsIFdhbmcsIEppYW4gSiB3 cm90ZToNCj4gRm9yIHRoZSB1c2Ugb2YgYXJjaCBwcm90b2NvbCwgdGhlcmUncyBvbmUgdGhpbmcg SSBtZW50aW9uZWQgaXMgbm90DQo+IGFjY3VyYXRlLiBJIGFjdHVhbGx5IHRyaWVkIGdEUy0+U2V0 TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkgYnV0IGl0DQo+IGNhbm5vdCBjaGFuZ2UgcGFnZSBhdHRy aWJ1dGVzLiBUaGF0J3Mgd2h5IEkgaGF2ZSB0byB0dXJuIHRvIGNwdSBhcmNoDQo+IHByb3RvY29s Lg0KVGhhbmsgeW91IGZvciB0aGUgZXhwbGFuYXRpb24uDQoNCkluIHRoYXQgY2FzZSwgd2UgY2Fu bm90IGF2b2lkIHZpb2xhdGluZyB0aGUgUEkgc3BlYy4gSSBhZ3JlZSB3ZSBjYW4NCmJyZWFrIHRo ZSBzcGVjIGlmIGl0IGhhcHBlbnMgZm9yIHNlY3VyaXR5IHB1cnBvc2VzLCBidXQgaW4gdGhhdCBj YXNlLCBJDQpiZWxpZXZlIHRoYXQgaGlkaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWhpbmQgYSBs aWJyYXJ5IGNsYXNzIGlzDQptYW5kYXRvcnkuIFZpZXdlZCBmcm9tIHRoZSBzcGVjIHNpZGUsIGFj Y2Vzc2luZyB0aGUgQ1BVIEFyY2ggcHJvdG9jb2wgaXMNCmEgaGFjaywgYW5kIHNvIGl0IHNob3Vs ZCBub3QgYmUgc3ByZWFkIHRvIHRoZSBzb3VyY2UgY29kZSBvZiBzZXZlcmFsDQpkcml2ZXIgbW9k dWxlcy4NCg0KVGhhbmsgeW91LA0KTGFzemxvDQoNCg0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxp c3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mIFdhbmcsIEppYW4gSg0KPiBTZW50OiBUaHVyc2RheSwg U2VwdGVtYmVyIDE0LCAyMDE3IDk6MTcgQU0NCj4gVG86IExhc3psbyBFcnNlayA8bGVyc2VrQHJl ZGhhdC5jb208bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4gQ2M6IERvbmcsIEVyaWMgPGVy aWMuZG9uZ0BpbnRlbC5jb208bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+PjsgSnVzdGVuLCBK b3JkYW4gTCA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVu QGludGVsLmNvbT4+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPj47IFdvbG1hbiwgQXllbGxldCA8YXllbGxldC53b2xtYW5AaW50 ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+PjsgS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFyLnpl bmdAaW50ZWwuY29tPj4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggNC80XSBPdm1mUGtn L1FlbXVWaWRlb0R4ZTogVXBkYXRlIFFlbXVWaWRlb0R4ZSBkcml2ZXIgdG8gYnlwYXNzIE5VTEwg cG9pbnRlciBkZXRlY3Rpb24gaWYgZW5hYmxlZC4NCj4NCj4gVGhhbmtzIGZvciB0aGUgY29tbWVu dHMgYW5kIGdvb2QgYWR2aWNlcy4gU29ycnkgdGhlIGZvcm1hdCBpc3N1ZXMuDQo+IFRoaXMgaXMg bXkgZmlyc3QgcGF0Y2ggZm9yIHRoaXMgcHJvamVjdC4gVG9vIG1hbnkgZGV0YWlscyBmb3IgbWUg dG8gZ2V0DQo+IGZhbWlsaWFyIHdpdGguDQo+DQo+ICgxKSBTdXJlLg0KPiAoMikgSSdsbCBjaGFu Z2UgdGhhdC4NCj4gKDMpIEknbGwgdXNlIHRoZSB0b29sIHRvIGVuc3VyZSB0aGUgcGF0Y2ggZm9y bWF0Lg0KPiAoNCkgSSdsbCByZW1vdmUgdGhlICcsJyBpbiBuYW1lDQo+ICg1KSBJJ2xsIGFkZCBt b3JlIGRlc2NyaXB0aW9uIGFib3V0IGl0Lg0KPiAoNikgWW91J3JlIHJpZ2h0LiBJIHNob3VsZCB1 c2UgU2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkgb2YgRFhFIHNlcnZpY2UNCj4gICAgICBpbnN0 ZWFkLiBUaGUgb25seSByZWFzb24gSSBkaWRuJ3QgZG8gaXQgaXMgdGhhdCBJIGZvdW5kDQo+ICAg ICAgIEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpIGRvZXNuJ3QgcmV0dXJuIHRoZSBzYW1lIGlu Zm9ybWF0aW9uDQo+ICAgICAgd2hpY2ggU2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkganVzdCBj aGFuZ2VkLiBTbyBJIGZlZWwgdXNpbmcgQ1BVDQo+ICAgICBhcmNoIHByb3RvY29sIGlzIGEgYml0 IHNhZmVyLiBBbnl3YXksIEknbGwgY2hhbmdlIGl0Lg0KPiAoNykgSSBkaWQgcHV0IHRob3NlIG1h Y3JvcyBpbiB0aGUgaW5zdGFsbCBmdW5jdGlvbiBiZWZvcmUuIFRvIHJlZHVjZSB0aGUNCj4gICAg ICBudW1iZXIgb2YgY2hhbmdlZCBmaWxlcywgSSBtYWRlIGN1cnJlbnQgY2hhbmdlcy4gWW91J3Jl IHJpZ2h0IGl0J3MNCj4gICAgICBub3Qgd29ydGh5Lg0KPiAoOCkgVXNpbmcgbWFjcm8gY2FuIGhl bHAgdGhlIHJlYWRhYmlsaXR5LCB3aGljaCBpcyBtb3JlIGltcG9ydGFudCB0byBtZS4NCj4gICAg IEkga25vdyBmdW5jdGlvbiBjYW4gZG8gdGhlIHNhbWUuIEJ1dCBpdCBsb29rcyBhIGJpdCBoZWF2 eSBpbiB0aGlzIHNpdHVhdGlvbi4NCj4gICAgIEkgaGF2ZSB0byBhZG1pdCByZXBsYWNpbmcgIHRo ZSBtYWNyb3Mgd2l0aCBhIGxpYnJhcnkgaXMgYSB2ZXJ5IGdvb2QgaWRlYSwNCj4gICAgIHdoaWNo IGJyaW5ncyB0aGUgc2FtZSByZWFkYWJpbGl0eS4gSSBkaWRuJ3QgdGhpbmsgb2YgdGhhdCBiZWZv cmUuIEFsdGhvdWdoDQo+ICAgICBMaWJyYXJ5IGlzIHN0aWxsIGEgbGl0dGxlIGJpdCBoZWF2eSB0 byBtZSBidXQgaXQncyBpbiBhIGRpZmZlcmVudCB3YXksIEkgdGhpbmsgaXQNCj4gICAgIHdvcnRo IGEgdHJ5aW5nLg0KPiAoOSkgUHV0dGluZyBhIHNwYWNlIGJlZm9yZSBvcGVuIHBhcmVudGhlc2lz IGlzIGZvcmNlZCBzdHlsZT8gSWYgc28sIEknbGwgYWRkIGl0Lg0KPiAoMTApIFlvdSdyZSByaWdo dC4gVXNpbmcgbGlicmFyeSBjYW4gcmVkdWNlIHRoZSBkaXN0dXJicyB0byBhZmZlY3RlZCBkcml2 ZXJzDQo+ICAgICAgICBieSB0aGlzIGZlYXR1cmUgdG8gdGhlIG1pbmltdW0uDQo+DQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNl a0ByZWRoYXQuY29tXQ0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDE0LCAyMDE3IDc6MzUg QU0NCj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPG1haWx0bzpqaWFu Lmoud2FuZ0BpbnRlbC5jb20+Pg0KPiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRv OmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPjsgSnVzdGVuLCBKb3JkYW4gTCA8am9yZGFuLmwuanVz dGVuQGludGVsLmNvbTxtYWlsdG86am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4+OyBEb25nLCBF cmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+PjsgV29sbWFuLCBBeWVsbGV0IDxheWVsbGV0LndvbG1hbkBp bnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+OyBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj47IFplbmcs IFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0K PiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCA0LzRdIE92bWZQa2cvUWVtdVZpZGVvRHhlOiBV cGRhdGUgUWVtdVZpZGVvRHhlIGRyaXZlciB0byBieXBhc3MgTlVMTCBwb2ludGVyIGRldGVjdGlv biBpZiBlbmFibGVkLg0KPg0KPiBIaSwNCj4NCj4gc29tZSBvZiB0aGUgcG9pbnRzIEknbSBnb2lu ZyB0byBtYWtlIGhhdmUgYWxyZWFkeSBiZWVuIHBvaW50ZWQgb3V0IGJ5DQo+IEpvcmRhbjoNCj4N Cj4gKDEpIFdoZW4gcG9zdGluZyBhIHBhdGNoIHNlcmllcywgcGxlYXNlIGNvbGxlY3QgdGhlIENj OiB0YWdzIGZyb20gYWxsIG9mDQo+IHRoZSBwYXRjaGVzLCBhbmQgYWRkIHRoZW0gKmFsbCogdG8g dGhlIGNvdmVyIGxldHRlci4gVGhpcyB3YXkgZXZlcnlvbmUNCj4gd2lsbCBnZXQgYSBwZXJzb25h bCBjb3B5IG9mIHRoZSBnZW5lcmFsIGRlc2NyaXB0aW9uLg0KPg0KPg0KPiAoMikgVGhlIHN1Ympl Y3QgbGluZSBpcyB0b28gbG9uZy4gT25lIHBvc3NpYmxlIHNpbXBsaWZpY2F0aW9uOg0KPg0KPiBP dm1mUGtnL1FlbXVWaWRlb0R4ZTogYnlwYXNzIE5VTEwgcG9pbnRlciBkZXRlY3Rpb24NCj4NCj4N Cj4gT24gMDkvMTMvMTcgMTE6MjUsIFdhbmcsIEppYW4gSiB3cm90ZToNCj4+IFFlbXVWaWRlb0R4 ZSBkcml2ZXIgd2lsbCBpbnN0YWxsIFZCRSBTSElNIGludG8gcGFnZSAwLiBJZiBOVUxMIHBvaW50 ZXINCj4+IGRldGVjdGlvbiBpcyBlbmFibGVkLCBwYWdlIDAgbXVzdCBiZSBlbmFibGVkIHRlbXBv cmFyaWx5IGJlZm9yZQ0KPj4gaW5zdGFsbGluZyBhbmQgZGlzYWJsZWQgYWdhaW4gYWZ0ZXJ3YXJk cy4gRm9yIFdpbmRvd3MgNyBib290LCBCSVQ3IG9mDQo+PiBQY2ROdWxsUG9pbnRlckRldGVjdGlv blByb3BlcnR5TWFzayBtdXN0IHN0aWxsIGJlIHNldCB0byBhdm9pZCBoYW5nLg0KPg0KPiAoMykg U3ViamVjdCBsaW5lIGFuZCBjb21taXQgbWVzc2FnZSBib3RoIHNob3VsZCBub3QgZXhjZWVkIDc0 IGNoYXJhY3RlcnMNCj4gbGluZSBsZW5ndGguIChOb3Qgc3VyZSBob3cgbWFueSBjaGFycyBQYXRj aENoZWNrLnB5IGFjdHVhbGx5IGVuZm9yY2VzLCBJDQo+IGFsd2F5cyBzdGljayB3aXRoIDc0LCBm b2xsb3dpbmcgdGhlIExpbnV4IGtlcm5lbCB0cmFkaXRpb24uKQ0KPg0KPiBJIHJld3JhcHBlZCB0 aGUgY29tbWl0IG1lc3NhZ2UgaGVyZSBmb3IgcmVhZGFiaWxpdHkuDQo+DQo+DQo+Pg0KPj4gQ2M6 IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVs LmNvbT4+DQo+PiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmlj LmRvbmdAaW50ZWwuY29tPj4NCj4+IENjOiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb208 bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KPj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2Vr QHJlZGhhdC5jb208bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tPj4NCj4+IENjOiBKdXN0ZW4sIEpv cmRhbiBMIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPG1haWx0bzpqb3JkYW4ubC5qdXN0ZW5A aW50ZWwuY29tPj4NCj4+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4NCj4+IENjOiBXb2xt YW4sIEF5ZWxsZXQgPGF5ZWxsZXQud29sbWFuQGludGVsLmNvbTxtYWlsdG86YXllbGxldC53b2xt YW5AaW50ZWwuY29tPj4NCj4+IFN1Z2dlc3RlZC1ieTogV29sbWFuLCBBeWVsbGV0IDxheWVsbGV0 LndvbG1hbkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+PiBD b250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ PiBTaWduZWQtb2ZmLWJ5OiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbTxtYWls dG86amlhbi5qLndhbmdAaW50ZWwuY29tPj4NCj4NCj4gKDQpIEkgdGhpbmsgdGhpcyBpcyBhbHNv IHNvbWV0aGluZyB0aGF0IEpvcmRhbiBoYWQgcG9pbnRlZCBvdXQgYSBsb25nDQo+IHRpbWUgYWdv IChhcG9sb2dpZXMgaWYgSSBtaXMtcmVtZW1iZXIpOg0KPg0KPiBUaGUgc3RyaW5ncyBhZnRlciB0 aGUgdGFncyBzaG91bGQgZm9ybSBjb3JyZWN0IGVtYWlsIGFkZHJlc3NlcywgYW5kIGlmDQo+IHRo ZXJlIGFyZSB2YXJpb3VzIGVtYWlsIG1ldGEtY2hhcmFjdGVycyBpbiB0aGVtLCBsaWtlICIuIiAo ZG90KSBhbmQgIiwiDQo+IChjb21tYSksIHRoZW4gdGhleSBzaG91bGQgYmUgcXVvdGVkLCBsaWtl IHRoaXM6DQo+DQo+IENjOiAiSnVzdGVuLCBKb3JkYW4gTCIgPGpvcmRhbi5sLmp1c3RlbkBpbnRl bC5jb208bWFpbHRvOmpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+Pg0KPiBDYzogIktpbm5leSwg TWljaGFlbCBEIiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPj4NCj4gQ2M6ICJXb2xtYW4sIEF5ZWxsZXQiIDxheWVsbGV0LndvbG1h bkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+IFN1Z2dlc3Rl ZC1ieTogIldvbG1hbiwgQXllbGxldCIgPGF5ZWxsZXQud29sbWFuQGludGVsLmNvbTxtYWlsdG86 YXllbGxldC53b2xtYW5AaW50ZWwuY29tPj4NCj4gU2lnbmVkLW9mZi1ieTogIldhbmcsIEppYW4g SiIgPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86amlhbi5qLndhbmdAaW50ZWwuY29tPj4N Cj4NCj4gSWYgeW91IGxvb2sgYXQgdGhlIGFjdHVhbCBhZGRyZXNzZXMgb24gdGhlIGVtYWlscyB0 aGF0IGhhdmUgYmVlbiBzZW50DQo+IG91dCwgeW91IGNhbiBzZWUgdGhleSBhcmUgYWxsIG1hbGZv cm1lZC4gRm9yIGV4YW1wbGUsIEkgaGF2ZToNCj4NCj4gIkpvcmRhbiBMIDxqb3JkYW4ubC5qdXN0 ZW5AaW50ZWwuY29tPG1haWx0bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPj4iIGZvciBKb3Jk YW4gLS0gdGhlIHBhcnQgYmVmb3JlIHRoZQ0KPiBjb21tYSB3YXMgdGFrZW4gdG8gYmUgYSBzZXBh cmF0ZSBlbWFpbCBhZGRyZXNzIChhIG1hbGZvcm1lZCBvbmUpLg0KPg0KPiBBdCBsZWFzdCBmb3Ig bXkgcmVwbHksIEkgaGF2ZSBmaXhlZCB1cCB0aGUgZW1haWwgYWRkcmVzc2VzLg0KPg0KPg0KPiAo NSkgVGhlIGNvbW1pdCBtZXNzYWdlIG1lbnRpb25zIEJJVDcgb2YgdGhlIG5ldyBQQ0QuDQo+DQo+ IEZpcnN0LCB0aGFua3MgZm9yIGNoZWNraW5nIFdpbmRvd3MgNyBib290IChhbmQgSSdtIGhhcHB5 IHRoYXQgSSBnb3QNCj4gc3VzcGljaW91cyBvZiB0aGUgZmVhdHVyZSB3aXRoIHJlZ2FyZCB0byBX aW5kb3dzIDcpLiBJIHRoaW5rIEJJVDcgaXMgYQ0KPiBnb29kIGZlYXR1cmUuDQo+DQo+IEhvd2V2 ZXIsIHBsZWFzZSBpbmNsdWRlIHRoZSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGF0IGZlYXR1cmUg aW4gdGhlDQo+IGNvbW1pdCBtZXNzYWdlIC0tIGl0IGlzIG9uZSBzZW50ZW5jZTsgIkRpc2FibGUg TlVMTCBwb2ludGVyIGRldGVjdGlvbg0KPiBqdXN0IGFmdGVyIEVuZE9mRHhlLiINCj4NCj4gKEkg dGhpbmsgQklUNyBpcyBhIHJlYWxseSBzbWFydCBmZWF0dXJlLCBhbmQgSSBsaWtlICpob3cqIGl0 IGlzIHVzZWQgaW4NCj4gIk5VTExfREVURUNUSU9OX0VOQUJMRUQiIGJlbG93LiBUaGUgY2hlY2sg bWVhbnMsICJpZiB0aGUgcHJvdGVjdGlvbiBpcw0KPiBlbmFibGVkIGZvciBEWEUsIGFuZCAqbm90 IGRpc2FibGVkKiAoPT0gYWxzbyBlbmFibGVkKSBhZnRlciBFbmQtb2YtRHhlIi4NCj4NCj4gVGhp cyBkb2Vzbid0IG1lYW4gdGhhdCBJIGxpa2UgdGhlIE5VTExfREVURUNUSU9OX0VOQUJMRUQgbWFj cm8gaXRzZWxmOw0KPiBtb3JlIG9uIHRoYXQgYmVsb3cuKQ0KPg0KPg0KPj4gLS0tDQo+PiAgT3Zt ZlBrZy9RZW11VmlkZW9EeGUvRHJpdmVyLmMgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrLQ0K Pj4gIE92bWZQa2cvUWVtdVZpZGVvRHhlL1FlbXUuaCAgICAgICAgICAgfCAxNiArKysrKysrKysr KysrKysrDQo+PiAgT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZiB8ICAyICsr DQo+PiAgMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ Pg0KPj4gZGlmZiAtLWdpdCBhL092bWZQa2cvUWVtdVZpZGVvRHhlL0RyaXZlci5jIGIvT3ZtZlBr Zy9RZW11VmlkZW9EeGUvRHJpdmVyLmMNCj4+IGluZGV4IDBkY2U4MGU1OWIuLmVlMGVlZDcyMTQg MTAwNjQ0DQo+PiAtLS0gYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9Ecml2ZXIuYw0KPj4gKysrIGIv T3ZtZlBrZy9RZW11VmlkZW9EeGUvRHJpdmVyLmMNCj4+IEBAIC0xOTQsNiArMTk0LDcgQEAgUWVt dVZpZGVvQ29udHJvbGxlckRyaXZlclN0YXJ0ICgNCj4+ICAgIFBDSV9UWVBFMDAgICAgICAgICAg ICAgICAgICAgICAgICBQY2k7DQo+PiAgICBRRU1VX1ZJREVPX0NBUkQgICAgICAgICAgICAgICAg ICAgKkNhcmQ7DQo+PiAgICBFRklfUENJX0lPX1BST1RPQ09MICAgICAgICAgICAgICAgKkNoaWxk UGNpSW87DQo+PiArICBFRklfQ1BVX0FSQ0hfUFJPVE9DT0wgICAgICAgICAgICAgKkNwdTsNCj4N Cj4gKDYpIEkgYmVsaWV2ZSBJIG1lbnRpb25lZCB0aGlzIGluIHRoZSBlYXJsaWVyIGRpc2N1c3Np b24sIGluIHNvbWUgZm9ybSwNCj4gYnV0IG5vdyBJJ2xsIHNheSBpdCBhZ2FpbjoNCj4NCj4gQSBV RUZJIGRyaXZlciBoYXMgbm8gYnVzaW5lc3MgcG9raW5nIGF0IHRoZSBDUFUgQXJjaCBwcm90b2Nv bC4gVGhlIFBJDQo+IHNwZWMgKDEuNikgc3RhdGVzLA0KPg0KPiAgIDEyLjMgQ1BVIEFyY2hpdGVj dHVyYWwgUHJvdG9jb2wNCj4gICBFRklfQ1BVX0FSQ0hfUFJPVE9DT0wNCj4NCj4gICBTdW1tYXJ5 DQo+DQo+ICAgQWJzdHJhY3RzIHRoZSBwcm9jZXNzb3Igc2VydmljZXMgdGhhdCBhcmUgcmVxdWly ZWQgdG8gaW1wbGVtZW50IHNvbWUNCj4gICBvZiB0aGUgRFhFIHNlcnZpY2VzLiBUaGlzIHByb3Rv Y29sIG11c3QgYmUgcHJvZHVjZWQgYnkgYSBib290IHNlcnZpY2UNCj4gICBvciBydW50aW1lIERY RSBkcml2ZXIgYW5kIG1heSBvbmx5IGJlIGNvbnN1bWVkIGJ5IHRoZSBEWEUgRm91bmRhdGlvbg0K PiAgIGFuZCBEWEUgZHJpdmVycyB0aGF0IHByb2R1Y2UgYXJjaGl0ZWN0dXJhbCBwcm90b2NvbHMu DQo+DQo+IFRoZSBEWEUgY29yZSBpcyBvYnZpb3VzbHkgZnJlZSB0byB1c2UgdGhlIENQVSBBcmNo IHByb3RvY29sLCBidXQgYSBVRUZJDQo+IGRyaXZlciBpcyBmb3JiaWRkZW4gZnJvbSBpdCwgKmV2 ZW4gaWYqIHdlIHNheSB0aGF0LCBpbiB0aGlzIFVFRkkgZHJpdmVyLA0KPiB3ZSBhcmUgZ29pbmcg dG8gdXNlIERYRSBzZXJ2aWNlcy4gKFdoaWNoIGNvbWUgZnJvbSB0aGUgUEkgc3BlYywgYW5kIG5v dA0KPiB0aGUgVUVGSSBzcGVjLikNCj4NCj4gVGhlcmVmb3JlLCBoZXJlIHdlIGhhdmUgdG8gdXNl IGdEUy0+U2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCkuDQo+DQo+IFRoZSBnRFMtPlNldE1lbW9y eVNwYWNlQXR0cmlidXRlcygpIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUgQ1BVIEFyY2gNCj4gcHJv dG9jb2wsIGJ5IHRoZSBQSSBzcGVjLiBJdCBpcyBub3QgZWFzeSB0byBzZWUsIGJlY2F1c2UgdGhl IFBJIHNwZWMgaGFzDQo+IGEgZm9ybWF0dGluZyBlcnJvciBpbiB0aGlzIGFyZWEuIElmIHlvdSBs b29rIHVuZGVyDQo+IEdldE1lbW9yeVNwYWNlRGVzY3JpcHRvcigpLCB0aGVyZSBpcyBhbiBlcnJv ciBjb2RlDQo+DQo+ICAgRUZJX05PVF9BVkFJTEFCTEVfWUVUICBUaGUgYXR0cmlidXRlcyBjYW5u b3QgYmUgc2V0IGJlY2F1c2UgQ1BVDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRl Y3R1cmFsIHByb3RvY29sIGlzIG5vdCBhdmFpbGFibGUgeWV0Lg0KPg0KPiBPYnZpb3VzbHkgdGhp cyBlcnJvciBjb2RlIGJlbG9uZ3MgdG8gU2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzKCksIG5vdA0K PiBHZXRNZW1vcnlTcGFjZURlc2NyaXB0b3IoKS4NCj4NCj4gQW55d2F5LCBnRFMgc2hvdWxkIGJl IHVzZWQsIGFyY2hpdGVjdHVyYWwgcHJvdG9jb2xzIHNob3VsZG4ndCBiZS4NCj4NCj4NCj4+DQo+ PiAgICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChUUExfQ0FMTEJBQ0spOw0KPj4NCj4+IEBAIC00 NzksNyArNDgwLDE5IEBAIFFlbXVWaWRlb0NvbnRyb2xsZXJEcml2ZXJTdGFydCAoDQo+PiAgI2lm IGRlZmluZWQgTURFX0NQVV9JQTMyIHx8IGRlZmluZWQgTURFX0NQVV9YNjQNCj4+ICAgIGlmIChQ cml2YXRlLT5WYXJpYW50ID09IFFFTVVfVklERU9fQk9DSFNfTU1JTyB8fA0KPj4gICAgICAgIFBy aXZhdGUtPlZhcmlhbnQgPT0gUUVNVV9WSURFT19CT0NIUykgew0KPj4gLSAgICBJbnN0YWxsVmJl U2hpbSAoQ2FyZC0+TmFtZSwgUHJpdmF0ZS0+R3JhcGhpY3NPdXRwdXQuTW9kZS0+RnJhbWVCdWZm ZXJCYXNlKTsNCj4+ICsgICAgLy8NCj4+ICsgICAgLy8gUHJlcGFyZSBDUFUgYXJjaCBwcm90b2Nv bCBmb3IgTlVMTCBwb2ludGVyIGRldGVjdGlvbg0KPj4gKyAgICAvLw0KPj4gKyAgICBTdGF0dXMg PSBnQlMtPkxvY2F0ZVByb3RvY29sICgNCj4+ICsgICAgICAgICAgICAgICAgICAgICZnRWZpQ3B1 QXJjaFByb3RvY29sR3VpZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgIE5VTEwsDQo+PiArICAg ICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkNwdQ0KPj4gKyAgICAgICAgICAgICAgICAgICAg KTsNCj4+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4+ICsNCj4+ICsgICAgRElT QUJMRV9OVUxMX0RFVEVDVElPTihDcHUpOw0KPj4gKyAgICAgIEluc3RhbGxWYmVTaGltIChDYXJk LT5OYW1lLCBQcml2YXRlLT5HcmFwaGljc091dHB1dC5Nb2RlLT5GcmFtZUJ1ZmZlckJhc2UpOw0K Pj4gKyAgICBFTkFCTEVfTlVMTF9ERVRFQ1RJT04oQ3B1KTsNCj4NCj4gKDcpIFRoZSBOVUxMIGRl dGVjdGlvbiBkaXNhYmxpbmcgYW5kIGVuYWJsaW5nIHNob3VsZCBicmFja2V0IHRoZQ0KPiBhZmZl Y3RlZCBjb2RlIGFzIHRpZ2h0bHkgYXMgcG9zc2libGUuDQo+DQo+IFNvIHBsZWFzZSBtb3ZlIHRo aXMgaW50byBJbnN0YWxsVmJlU2hpbSgpIGFjY29yZGluZ2x5Lg0KPg0KPg0KPj4gICAgfQ0KPj4g ICNlbmRpZg0KPj4NCj4+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11Lmgg Yi9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmgNCj4+IGluZGV4IDdmYmIyNWIzZWYuLmJiM2Jj NmViMGYgMTAwNjQ0DQo+PiAtLS0gYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9RZW11LmgNCj4+ICsr KyBiL092bWZQa2cvUWVtdVZpZGVvRHhlL1FlbXUuaA0KPj4gQEAgLTI1LDYgKzI1LDcgQEANCj4+ ICAjaW5jbHVkZSA8UHJvdG9jb2wvUGNpSW8uaD4NCj4+ICAjaW5jbHVkZSA8UHJvdG9jb2wvRHJp dmVyU3VwcG9ydGVkRWZpVmVyc2lvbi5oPg0KPj4gICNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQ YXRoLmg+DQo+PiArI2luY2x1ZGUgPFByb3RvY29sL0NwdS5oPg0KPj4NCj4+ICAjaW5jbHVkZSA8 TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPj4gICNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlEcml2ZXJFbnRy eVBvaW50Lmg+DQo+PiBAQCAtODIsNiArODMsMjEgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPj4NCj4+ ICAjZGVmaW5lIEdSQVBISUNTX09VVFBVVF9JTlZBTElERV9NT0RFX05VTUJFUiAgMHhmZmZmDQo+ Pg0KPj4gKy8vDQo+PiArLy8gVkJFIGNvZGUgd2lsbCBhY2Nlc3MgbWVtb3J5IGJldHdlZW4gMC00 MDk1IHdoaWNoIHdpbGwgY2F1c2UgcGFnZSBmYXVsdCBleGNlcHRpb24NCj4+ICsvLyBpZiBOVUxM IHBvaW50ZXIgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyBlbmFibGVkLiBGb2xsb3dpbmcgbWFjcm9z IGNhbiBiZSB1c2VkIHRvDQo+PiArLy8gZGlzYWJsZS9lbmFibGUgTlVMTCBwb2ludGVyIGRldGVj dGlvbiBiZWZvcmUvYWZ0ZXIgYWNjZXNzaW5nIHRob3NlIG1lbW9yeS4NCj4+ICsvLw0KPj4gKyNk ZWZpbmUgTlVMTF9ERVRFQ1RJT05fRU5BQkxFRCAgKChQY2RHZXQ4KFBjZE51bGxQb2ludGVyRGV0 ZWN0aW9uUHJvcGVydHlNYXNrKSAmIChCSVQwfEJJVDcpKSA9PSBCSVQwKQ0KPj4gKyNkZWZpbmUg RElTQUJMRV9OVUxMX0RFVEVDVElPTihDcHUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPj4gKyAgaWYgKE5VTExfREVURUNUSU9OX0VOQUJMRUQpIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPj4gKyAgICAo Q3B1KS0+U2V0TWVtb3J5QXR0cmlidXRlcygoQ3B1KSwgMCwgRUZJX1BBR0VfU0laRSwgMCk7ICAg ICAgICAgICAgICAgICAgICAgXA0KPj4gKyAgfQ0KPj4gKyNkZWZpbmUgRU5BQkxFX05VTExfREVU RUNUSU9OKENwdSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPj4gKyAgaWYgKE5VTExfREVURUNUSU9OX0VOQUJMRUQpIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPj4gKyAgICAoQ3B1KS0+U2V0TWVtb3J5 QXR0cmlidXRlcygoQ3B1KSwgMCwgRUZJX1BBR0VfU0laRSwgRUZJX01FTU9SWV9SUCk7ICAgICAg ICAgXA0KPj4gKyAgfQ0KPj4gKw0KPg0KPiAoOCkgSSBiZWxpZXZlIEpvcmRhbiB0b28gY29tbWVu dGVkIG9uIHRoZXNlIG1hY3JvcyBlbHNld2hlcmUgKHVuZGVyDQo+IHBhdGNoIDEvNCkuDQo+DQo+ IEluIG15IG9waW5pb24sIHRoaXMgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUgZXh0cmFjdGVkIGlu dG8gYSBsaWJyYXJ5DQo+IGNsYXNzLCB3aXRoIGEgbGlicmFyeSBpbnN0YW5jZSB0aGF0IGlzIHN1 aXRhYmxlIGZvciBhdCBsZWFzdCBVRUZJX0RSSVZFUg0KPiBtb2R1bGVzLiAoTWF5YmUgZXZlbiBm b3IgRFhFX0RSSVZFUiBtb2R1bGVzLikNCj4NCj4gWW91IGNvdWxkIGFkZCBhIHNlcGFyYXRlIGxp YnJhcnkgaW5zdGFuY2UgZm9yIFNNTSBkcml2ZXJzLCBpZiB0aGF0IHdlcmUNCj4gbmVjZXNzYXJ5 Lg0KPg0KPg0KPiAoOSkgU3R5bGUgY29tbWVudDogcGxlYXNlIHB1dCBvbmUgc3BhY2UgY2hhcmFj dGVyIGJldHdlZW4gdGhlIGZ1bmN0aW9uDQo+IGRlc2lnbmF0b3IgYW5kIHRoZSBvcGVuaW5nIHBh cmVudGhlc2lzLg0KPg0KPg0KPj4gIC8vDQo+PiAgLy8gUUVNVSBWaWRlbyBQcml2YXRlIERhdGEg U3RydWN0dXJlDQo+PiAgLy8NCj4+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1FlbXVWaWRlb0R4ZS9R ZW11VmlkZW9EeGUuaW5mIGIvT3ZtZlBrZy9RZW11VmlkZW9EeGUvUWVtdVZpZGVvRHhlLmluZg0K Pj4gaW5kZXggN2M3ZDQyOWJjYS4uNWQxNjZlYjk5YyAxMDA2NDQNCj4+IC0tLSBhL092bWZQa2cv UWVtdVZpZGVvRHhlL1FlbXVWaWRlb0R4ZS5pbmYNCj4+ICsrKyBiL092bWZQa2cvUWVtdVZpZGVv RHhlL1FlbXVWaWRlb0R4ZS5pbmYNCj4+IEBAIC03Miw3ICs3Miw5IEBADQo+PiAgICBnRWZpR3Jh cGhpY3NPdXRwdXRQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgIyBQUk9UT0NPTCBCWV9TVEFS VA0KPj4gICAgZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICMg UFJPVE9DT0wgQllfU1RBUlQNCj4+ICAgIGdFZmlQY2lJb1Byb3RvY29sR3VpZCAgICAgICAgICAg ICAgICAgICAgICAgICAjIFBST1RPQ09MIFRPX1NUQVJUDQo+PiArICBnRWZpQ3B1QXJjaFByb3Rv Y29sR3VpZA0KPj4NCj4+ICBbUGNkXQ0KPj4gICAgZ09wdGlvblJvbVBrZ1Rva2VuU3BhY2VHdWlk LlBjZERyaXZlclN1cHBvcnRlZEVmaVZlcnNpb24NCj4+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tl blNwYWNlR3VpZC5QY2ROdWxsUG9pbnRlckRldGVjdGlvblByb3BlcnR5TWFzaw0KPg0KPiAoMTAp IEluc3RlYWQgb2YgdGhlc2UsIHRoZSBsaWJyYXJ5IGNsYXNzIHRoYXQgSSBkZXNjcmliZWQgdW5k ZXIgKDgpDQo+IHNob3VsZCBiZSBhZGRlZCBoZXJlLg0KPg0KPiBBbnkgZnVydGhlciBkZXBlbmRl bmNpZXMgbGlrZSBQQ0RzLCBwcm90b2NvbHMgZXRjIHNob3VsZCBiZSBpbmhlcml0ZWQgYnkNCj4g dGhlIGRyaXZlciB0aHJvdWdoIHRoZSBsaWJyYXJ5IGluc3RhbmNlIHRoYXQgdGhlIHBsYXRmb3Jt IERTQyBmaWxlDQo+IHJlc29sdmVzIHRoZSBsaWJyYXJ5IGNsYXNzIHRvLg0KPg0KPiBCb251czog c2hvdWxkIHlvdSByZWFsaXplIHRoYXQgdGhlIGZlYXR1cmUgaXMgaW1wb3NzaWJsZSB0byBpbXBs ZW1lbnQNCj4gd2l0aG91dCBhY2Nlc3NpbmcgdGhlIENQVSBBcmNoIHByb3RvY29sIGRpcmVjdGx5 LCB5b3UgY291bGQgaGlkZSB0aGUNCj4gcHJvdG9jb2wgR1VJRCBkZXBlbmRlbmN5IGluIHRoZSBs aWJyYXJ5IGluc3RhbmNlIElORiBmaWxlLCBhbmQgSSdkIGJlDQo+IG5vbmUgdGhlIHdpc2VyLg0K Pg0KPiAuLi4gV2VsbCwgSSBjb3VsZCBhdCBsZWFzdCBwcmV0ZW5kIHRoYXQuIDopDQo+DQo+IFRo YW5rcywNCj4gTGFzemxvDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxAbGlzdHMu MDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj4gaHR0cHM6Ly9saXN0cy4w MS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo+DQo=