From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Permerror (SPF Permanent Error: Two or more type TXT spf records found.) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 59FE92110BFB1 for ; Fri, 31 Aug 2018 16:06:04 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Aug 2018 16:06:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,313,1531810800"; d="scan'208";a="258931184" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga005.fm.intel.com with ESMTP; 31 Aug 2018 16:04:12 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 31 Aug 2018 16:04:11 -0700 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 31 Aug 2018 16:04:11 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.226]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.240]) with mapi id 14.03.0319.002; Sat, 1 Sep 2018 07:04:10 +0800 From: "Yao, Jiewen" To: "Ni, Ruiyu" CC: "Zeng, Star" , "edk2-devel@lists.01.org" , "Kinney, Michael D" , Younas khan , "Gao, Liming" Thread-Topic: [edk2] [PATCH 1/6] MdePkg UefiLib: Add new EfiFindAcpiTableBySignature() API Thread-Index: AQHUQR3kbmX/4SF0a0WlIck0i0cfdKTZwFyg///G0ACAAPRGgA== Date: Fri, 31 Aug 2018 23:04:09 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AD37F11@shsmsx102.ccr.corp.intel.com> References: <1535714959-73472-1-git-send-email-star.zeng@intel.com> <1535714959-73472-2-git-send-email-star.zeng@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AD36A49@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzhmZGJmMGEtZDk1OS00YmVhLTlkYWItNDYyZWNmNDc2YTg3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoicUdiSzY1VjF5ekpROXpzaWJPWFBDMDdBTHFQOFF2WDlLaG9nMW9aZmZuUW1zcjhhc1NvekNLYWpyZ1NIaUhxMyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 1/6] MdePkg UefiLib: Add new EfiFindAcpiTableBySignature() API 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: Fri, 31 Aug 2018 23:06:04 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 R29vZCBpZGVhIG9uIExvY2F0ZU5leHRBY3BpVGFibGUoKS4NCg0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IE5pLCBSdWl5dQ0KPiBTZW50OiBTYXR1cmRheSwgU2VwdGVt YmVyIDEsIDIwMTggMTI6MjkgQU0NCj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVs LmNvbT4NCj4gQ2M6IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVs QGxpc3RzLjAxLm9yZzsgS2lubmV5LCBNaWNoYWVsDQo+IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgWW91bmFzIGtoYW4NCj4gPHBtZHlvdW5hc2toYW43ODZAZ21haWwuY29tPjsgR2Fv LCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQ QVRDSCAxLzZdIE1kZVBrZyBVZWZpTGliOiBBZGQgbmV3DQo+IEVmaUZpbmRBY3BpVGFibGVCeVNp Z25hdHVyZSgpIEFQSQ0KPiANCj4gSSB0aGluayBMb2NhdGVOZXh0QWNwaVRhYmxlKCkgaXMgbW9y ZSBwcm9wZXIgdG8gaGFuZGxlIHRoZSBtdWx0aXBsZSB0YWJsZXMgd2l0aA0KPiBzYW1lIHNpZ25h dHVyZS4gSXQgd2lsbCBjYXJyeSB0aHJlZSBwYXJhbWV0ZXJzLCBvbmUgaXMgdGhlIHRhYmxlIGhl YWRlciBzdG9yZWQgaW4NCj4gY29uZmlndXJhdGlvbiB0YWJsZSwgb25lIGlzIHRoZSBzaWduYXR1 cmUsIGFub3RoZXIgaXMgdGhlIHByZXZpb3VzIGxvY2F0ZWQgdGFibGUuDQo+IENhbiB3ZSByZXR1 cm4gYSBjb21tb24gdGFibGUgaGVhZGVyIG90aGVyIHRoYW4gdm9pZCo/DQo+IA0KPiBJcyB0aGVy ZSBiZXR0ZXIgcGxhY2Ugb3RoZXIgdGhhbiBVZWZpTGliPw0KPiBEbyB3ZSBuZWVkIHRvIGFkZCBh IG5ldyBsaWJyYXJ5IGNsYXNzIGxpa2UgQWNwaUxpYj8NCj4gDQo+IOWPkeiHquaIkeeahCBpUGhv bmUNCj4gDQo+ID4g5ZyoIDIwMTjlubQ45pyIMzHml6XvvIzkuIvljYg4OjAw77yMWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPiDlhpkNCj4g6YGT77yaDQo+ID4NCj4gPiBHb29kIGVu aGFuY2VtZW50Lg0KPiA+DQo+ID4gSSBoYXZlIDIgYWRkaXRpb25hbCB0aG91Z2h0Og0KPiA+DQo+ ID4gMSkgSG93IHRvIGhhbmRsZSBEU0RUPw0KPiA+IFdlIGhhdmUgc3BlY2lhbCBjb2RlIHRvIGhh bmRsZSBGQUNTLCBidXQgbm8gRFNEVC4NCj4gPg0KPiA+IDIpIEhvdyB0byBoYW5kbGUgU1NEVCBv ciBvdGhlciBtdWx0aXBsZSBBQ1BJIHRhYmxlcz8NCj4gPiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBT U0RULiBVc3VhbGx5LCBpdCBpcyBpZGVudGlmaWVkIGFzIE9FTUlELg0KPiA+IERvIHdlIHdhbnQg dG8gcHJvdmlkZSBzaW1pbGFyIGZ1bmN0aW9uIGZvciB0aGVtPw0KPiA+DQo+ID4gQW55d2F5LCBq dXN0ICphZGRpdGlvbmFsKiB0aG91Z2h0LiA6LSkNCj4gPiBDdXJyZW50IGltcGxlbWVudGF0aW9u IGlzIGdvb2QgZW5vdWdoIGZvciBjaGVjayBpbi4NCj4gPg0KPiA+IFJldmlld2VkLWJ5OiBKaWV3 ZW4ueWFvQGludGVsLmNvbQ0KPiA+DQo+ID4gVGhhbmsgeW91DQo+ID4gWWFvIEppZXdlbg0KPiA+ DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogZWRrMi1k ZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBP Zg0KPiBTdGFyDQo+ID4+IFplbmcNCj4gPj4gU2VudDogRnJpZGF5LCBBdWd1c3QgMzEsIDIwMTgg NzoyOSBQTQ0KPiA+PiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gQ2M6IEtpbm5l eSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFlvdW5hcyBraGFuDQo+ ID4+IDxwbWR5b3VuYXNraGFuNzg2QGdtYWlsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFv QGludGVsLmNvbT47DQo+IEdhbywNCj4gPj4gTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFtlZGsyXSBb UEFUQ0ggMS82XSBNZGVQa2cgVWVmaUxpYjogQWRkIG5ldw0KPiA+PiBFZmlGaW5kQWNwaVRhYmxl QnlTaWduYXR1cmUoKSBBUEkNCj4gPj4NCj4gPj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUu b3JnL3Nob3dfYnVnLmNnaT9pZD05NjcNCj4gPj4gUmVxdWVzdCB0byBhZGQgYSBsaWJyYXJ5IGZ1 bmN0aW9uIGZvciBHZXRBY3BpVGFibGUoKSBpbiBvcmRlcg0KPiA+PiB0byBnZXQgQUNQSSB0YWJs ZSB1c2luZyBzaWduYXR1cmUgYXMgaW5wdXQuDQo+ID4+DQo+ID4+IEFmdGVyIGV2YWx1YXRpb24s IHdlIGZvdW5kIHRoZXJlIGFyZSBtYW55IGR1cGxpY2F0ZWQgY29kZSB0bw0KPiA+PiBmaW5kIEFD UEkgdGFibGUgYnkgc2lnbmF0dXJlIGluIGRpZmZlcmVudCBtb2R1bGVzLg0KPiA+Pg0KPiA+PiBU aGlzIHBhdGNoIGFkZHMgbmV3IEVmaUZpbmRBY3BpVGFibGVCeVNpZ25hdHVyZSgpIEFQSSBpbiBV ZWZpTGliDQo+ID4+IGZvciB0aGUgcmVxdWVzdCBhbmQgYWxzbyB0aGUgZm9sbG93aW5nIHBhdGNo IHRvIHJlbW92ZSB0aGUNCj4gPj4gZHVwbGljYXRlZCBjb2RlLg0KPiA+Pg0KPiA+PiBDYzogWW91 bmFzIGtoYW4gPHBtZHlvdW5hc2toYW43ODZAZ21haWwuY29tPg0KPiA+PiBDYzogTWljaGFlbCBE IEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4+IENjOiBMaW1pbmcgR2Fv IDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPj4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9A aW50ZWwuY29tPg0KPiA+PiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlv biBBZ3JlZW1lbnQgMS4xDQo+ID4+IFNpZ25lZC1vZmYtYnk6IFN0YXIgWmVuZyA8c3Rhci56ZW5n QGludGVsLmNvbT4NCj4gPj4gLS0tDQo+ID4+IE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxp Yi5oICAgfCAgMTcgKysrDQo+ID4+IE1kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvQWNwaS5jICAgICAg fCAyMjYNCj4gPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+PiBN ZGVQa2cvTGlicmFyeS9VZWZpTGliL1VlZmlMaWIuaW5mIHwgICAzICsNCj4gPj4gMyBmaWxlcyBj aGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKQ0KPiA+PiBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtn L0xpYnJhcnkvVWVmaUxpYi9BY3BpLmMNCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9J bmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4+IGIvTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9V ZWZpTGliLmgNCj4gPj4gaW5kZXggZjgwMDY3ZjExMTAzLi44ZGQyNWYzMjRmZDIgMTAwNjQ0DQo+ ID4+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4+ICsrKyBiL01k ZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4+IEBAIC0xNTk1LDQgKzE1OTUsMjEg QEAgRWZpT3BlbkZpbGVCeURldmljZVBhdGggKA0KPiA+PiAgSU4gICAgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgT3Blbk1vZGUsDQo+ID4+ICBJTiAgICAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBBdHRyaWJ1dGVzDQo+ID4+ICApOw0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAgVGhp cyBmdW5jdGlvbiBmaW5kcyBBQ1BJIHRhYmxlIGJ5IHNpZ25hdHVyZS4NCj4gPj4gKyAgSXQgd2ls bCBmaW5kIHRoZSB0YWJsZSBpbiBnRWZpQWNwaTIwVGFibGVHdWlkIHN5c3RlbSBjb25maWd1cmF0 aW9uIHRhYmxlDQo+IGZpcnN0LA0KPiA+PiArICBhbmQgdGhlbiBnRWZpQWNwaTEwVGFibGVHdWlk IHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBTaWdu YXR1cmUgIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR1cm4gQUNQ SSB0YWJsZSBvciBOVUxMIGlmIG5vdCBmb3VuZC4NCj4gPj4gKw0KPiA+PiArKiovDQo+ID4+ICtW T0lEICoNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRWZpRmluZEFjcGlUYWJsZUJ5U2lnbmF0dXJlICgN Cj4gPj4gKyAgSU4gVUlOVDMyICAgICBTaWduYXR1cmUNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+ PiAjZW5kaWYNCj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvQWNwaS5j IGIvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9BY3BpLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi41Y2I5Mzk2NmI1OWYNCj4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+PiArKysgYi9NZGVQa2cvTGlicmFyeS9VZWZpTGliL0FjcGkuYw0KPiA+PiBAQCAt MCwwICsxLDIyNiBAQA0KPiA+PiArLyoqIEBmaWxlDQo+ID4+ICsgIFRoaXMgbW9kdWxlIHByb3Zp ZGVzIGhlbHAgZnVuY3Rpb24gZm9yIGZpbmRpbmcgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiAr ICBDb3B5cmlnaHQgKGMpIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEDQo+ID4+IExpY2Vuc2UNCj4gPj4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiA+PiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ ID4+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgIlVlZmlMaWJJbnRlcm5hbC5oIg0KPiA+ PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPEd1 aWQvQWNwaS5oPg0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBzY2Fu cyBBQ1BJIHRhYmxlIGluIFJTRFQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFJzZHQgICAgICAg QUNQSSBSU0RUDQo+ID4+ICsgIEBwYXJhbSBTaWduYXR1cmUgIEFDUEkgdGFibGUgc2lnbmF0dXJl DQo+ID4+ICsNCj4gPj4gKyAgQHJldHVybiBBQ1BJIHRhYmxlIG9yIE5VTEwgaWYgbm90IGZvdW5k Lg0KPiA+PiArDQo+ID4+ICsqKi8NCj4gPj4gK1ZPSUQgKg0KPiA+PiArU2NhblRhYmxlSW5SU0RU ICgNCj4gPj4gKyAgSU4gRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSICAgICpSc2R0LA0KPiA+ PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlDQo+ID4+ICsg ICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleDsNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyeUNv dW50Ow0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpFbnRyeVB0 cjsNCj4gPj4gKyAgRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSICAgICAgICAqVGFibGU7DQo+ ID4+ICsNCj4gPj4gKyAgaWYgKFJzZHQgPT0gTlVMTCkgew0KPiA+PiArICAgIHJldHVybiBOVUxM Ow0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgRW50cnlDb3VudCA9IChSc2R0LT5MZW5ndGgg LSBzaXplb2YgKEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURFUikpIC8NCj4gPj4gc2l6ZW9mKFVJ TlQzMik7DQo+ID4+ICsNCj4gPj4gKyAgRW50cnlQdHIgPSAoVUlOVDMyICopKFJzZHQgKyAxKTsN Cj4gPj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRW50cnlDb3VudDsgSW5kZXggKyssIEVu dHJ5UHRyICsrKSB7DQo+ID4+ICsgICAgVGFibGUgPSAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVB REVSICopKChVSU5UTikoKkVudHJ5UHRyKSk7DQo+ID4+ICsgICAgaWYgKFRhYmxlLT5TaWduYXR1 cmUgPT0gU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAgICByZXR1cm4gVGFibGU7DQo+ID4+ICsgICAg fQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIE5VTEw7DQo+ID4+ICt9DQo+ID4+ ICsNCj4gPj4gKy8qKg0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHNjYW5zIEFDUEkgdGFibGUgaW4g WFNEVC4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gWHNkdCAgICAgICBBQ1BJIFhTRFQNCj4gPj4g KyAgQHBhcmFtIFNpZ25hdHVyZSAgQUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gPj4gKw0KPiA+PiAr ICBAcmV0dXJuIEFDUEkgdGFibGUgb3IgTlVMTCBpZiBub3QgZm91bmQuDQo+ID4+ICsNCj4gPj4g KyoqLw0KPiA+PiArVk9JRCAqDQo+ID4+ICtTY2FuVGFibGVJblhTRFQgKA0KPiA+PiArICBJTiBF RklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIgICAgKlhzZHQsDQo+ID4+ICsgIElOIFVJTlQzMiAg ICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+ PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+ICsgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyeUNvdW50Ow0KPiA+PiArICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgICAgRW50cnlQdHI7DQo+ID4+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICBCYXNlUHRyOw0KPiA+PiArICBFRklfQUNQSV9ERVNDUklQVElPTl9IRUFE RVIgICAgKlRhYmxlOw0KPiA+PiArDQo+ID4+ICsgIGlmIChYc2R0ID09IE5VTEwpIHsNCj4gPj4g KyAgICByZXR1cm4gTlVMTDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIEVudHJ5Q291bnQg PSAoWHNkdC0+TGVuZ3RoIC0gc2l6ZW9mIChFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIpKSAv DQo+ID4+IHNpemVvZihVSU5UNjQpOw0KPiA+PiArDQo+ID4+ICsgIEJhc2VQdHIgPSAoVUlOVE4p KFhzZHQgKyAxKTsNCj4gPj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgRW50cnlDb3VudDsg SW5kZXggKyspIHsNCj4gPj4gKyAgICBDb3B5TWVtICgmRW50cnlQdHIsIChWT0lEICopKEJhc2VQ dHIgKyBJbmRleCAqIHNpemVvZihVSU5UNjQpKSwNCj4gPj4gc2l6ZW9mKFVJTlQ2NCkpOw0KPiA+ PiArICAgIFRhYmxlID0gKEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURFUiAqKSgoVUlOVE4pKEVu dHJ5UHRyKSk7DQo+ID4+ICsgICAgaWYgKFRhYmxlLT5TaWduYXR1cmUgPT0gU2lnbmF0dXJlKSB7 DQo+ID4+ICsgICAgICByZXR1cm4gVGFibGU7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ ICsNCj4gPj4gKyAgcmV0dXJuIE5VTEw7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+ PiArICBUbyBmaW5kIEZhY3MgaW4gRkFEVC4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gRmFkdCAg IEZBRFQgdGFibGUgcG9pbnRlcg0KPiA+PiArDQo+ID4+ICsgIEByZXR1cm4gRmFjcyB0YWJsZSBw b2ludGVyIG9yIE5VTEwgaWYgbm90IGZvdW5kLg0KPiA+PiArDQo+ID4+ICsqKi8NCj4gPj4gK0VG SV9BQ1BJXzJfMF9GSVJNV0FSRV9BQ1BJX0NPTlRST0xfU1RSVUNUVVJFICoNCj4gPj4gK0ZpbmRB Y3BpRmFjc0Zyb21GYWR0ICgNCj4gPj4gKyAgSU4gRUZJX0FDUElfMl8wX0ZJWEVEX0FDUElfREVT Q1JJUFRJT05fVEFCTEUgICpGYWR0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgRUZJX0FD UElfMl8wX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9TVFJVQ1RVUkUgICpGYWNzOw0KPiA+PiArICBV SU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTY0Ow0KPiA+ PiArDQo+ID4+ICsgIGlmIChGYWR0ID09IE5VTEwpIHsNCj4gPj4gKyAgICByZXR1cm4gTlVMTDsN Cj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGlmIChGYWR0LT5IZWFkZXIuUmV2aXNpb24gPA0K PiA+PiBFRklfQUNQSV8yXzBfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9SRVZJU0lPTikg ew0KPiA+PiArICAgIEZhY3MgPSAoRUZJX0FDUElfMl8wX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9T VFJVQ1RVUkUNCj4gPj4gKikoVUlOVE4pRmFkdC0+RmlybXdhcmVDdHJsOw0KPiA+PiArICB9IGVs c2Ugew0KPiA+PiArICAgIENvcHlNZW0gKCZEYXRhNjQsICZGYWR0LT5YRmlybXdhcmVDdHJsLCBz aXplb2YoVUlOVDY0KSk7DQo+ID4+ICsgICAgaWYgKERhdGE2NCAhPSAwKSB7DQo+ID4+ICsgICAg ICBGYWNzID0gKEVGSV9BQ1BJXzJfMF9GSVJNV0FSRV9BQ1BJX0NPTlRST0xfU1RSVUNUVVJFDQo+ ID4+ICopKFVJTlROKURhdGE2NDsNCj4gPj4gKyAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgRmFj cyA9IChFRklfQUNQSV8yXzBfRklSTVdBUkVfQUNQSV9DT05UUk9MX1NUUlVDVFVSRQ0KPiA+PiAq KShVSU5UTilGYWR0LT5GaXJtd2FyZUN0cmw7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ ICsgIHJldHVybiBGYWNzOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAgVG8g ZmluZCBBQ1BJIHRhYmxlIGluIEFDUEkgQ29uZmlndXJhdGlvblRhYmxlLg0KPiA+PiArDQo+ID4+ ICsgIEBwYXJhbSBBY3BpVGFibGVHdWlkICBUaGUgZ3VpZCB1c2VkIHRvIGZpbmQgQUNQSSBDb25m aWd1cmF0aW9uVGFibGUuDQo+ID4+ICsgIEBwYXJhbSBTaWduYXR1cmUgICAgICBBQ1BJIHRhYmxl IHNpZ25hdHVyZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dXJuIEFDUEkgdGFibGUgb3IgTlVMTCBp ZiBub3QgZm91bmQuDQo+ID4+ICsNCj4gPj4gKyoqLw0KPiA+PiArVk9JRCAgKg0KPiA+PiArRmlu ZEFjcGlUYWJsZUluQWNwaUNvbmZpZ3VyYXRpb25UYWJsZSAoDQo+ID4+ICsgIElOIEVGSV9HVUlE ICAgKkFjcGlHdWlkLA0KPiA+PiArICBJTiBVSU5UMzIgICAgIFNpZ25hdHVyZQ0KPiA+PiArDQo+ ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPj4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpUYWJsZTsNCj4gPj4gKyAgRUZJX0FDUElfMl8wX1JPT1Rf U1lTVEVNX0RFU0NSSVBUSU9OX1BPSU5URVIgICpSc2RwOw0KPiA+PiArICBFRklfQUNQSV9ERVND UklQVElPTl9IRUFERVIgICAgICAgICAgICAgICAgICAgKlJzZHQ7DQo+ID4+ICsgIEVGSV9BQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUiAgICAgICAgICAgICAgICAgICAqWHNkdDsNCj4gPj4gKyAgRUZJ X0FDUElfMl8wX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEUgICAgICpGYWR0Ow0KPiA+PiAr DQo+ID4+ICsgIFJzZHAgPSBOVUxMOw0KPiA+PiArICAvLw0KPiA+PiArICAvLyBGaW5kIEFDUEkg Q29uZmlndXJhdGlvblRhYmxlIChSU0RfUFRSKQ0KPiA+PiArICAvLw0KPiA+PiArICBTdGF0dXMg PSBFZmlHZXRTeXN0ZW1Db25maWd1cmF0aW9uVGFibGUoQWNwaUd1aWQsIChWT0lEICoqKSZSc2Rw KTsNCj4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoUnNkcCA9PSBOVUxMKSkgew0K PiA+PiArICAgIHJldHVybiBOVUxMOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgVGFibGUg PSBOVUxMOw0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIFNlYXJjaCBYU0RUDQo+ID4+ ICsgIC8vDQo+ID4+ICsgIGlmIChSc2RwLT5SZXZpc2lvbiA+PQ0KPiA+PiBFRklfQUNQSV8yXzBf Uk9PVF9TWVNURU1fREVTQ1JJUFRJT05fUE9JTlRFUl9SRVZJU0lPTikgew0KPiA+PiArICAgIFhz ZHQgPSAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSICopKFVJTlROKQ0KPiBSc2RwLT5Yc2R0 QWRkcmVzczsNCj4gPj4gKyAgICBpZiAoU2lnbmF0dXJlID09DQo+ID4+IEVGSV9BQ1BJXzJfMF9G SVJNV0FSRV9BQ1BJX0NPTlRST0xfU1RSVUNUVVJFX1NJR05BVFVSRSkgew0KPiA+PiArICAgICAg Ly8NCj4gPj4gKyAgICAgIC8vIEl0IGlzIHRvIGZpbmQgRkFDUyBBQ1BJIHRhYmxlLA0KPiA+PiAr ICAgICAgLy8gbmVlZCBmaW5kIEZBRFQgZmlyc3QuDQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAg ICAgRmFkdCA9IFNjYW5UYWJsZUluWFNEVCAoWHNkdCwNCj4gPj4gRUZJX0FDUElfMl8wX0ZJWEVE X0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFKTsNCj4gPj4gKyAgICAgIFRhYmxlID0g RmluZEFjcGlGYWNzRnJvbUZhZHQgKEZhZHQpOw0KPiA+PiArICAgIH0gZWxzZSB7DQo+ID4+ICsg ICAgICBUYWJsZSA9IFNjYW5UYWJsZUluWFNEVCAoWHNkdCwgU2lnbmF0dXJlKTsNCj4gPj4gKyAg ICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBpZiAoVGFibGUgIT0gTlVMTCkgew0KPiA+ PiArICAgIHJldHVybiBUYWJsZTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ ICsgIC8vIFNlYXJjaCBSU0RUDQo+ID4+ICsgIC8vDQo+ID4+ICsgIFJzZHQgPSAoRUZJX0FDUElf REVTQ1JJUFRJT05fSEVBREVSICopKFVJTlROKSBSc2RwLT5Sc2R0QWRkcmVzczsNCj4gPj4gKyAg aWYgKFNpZ25hdHVyZSA9PQ0KPiA+PiBFRklfQUNQSV8yXzBfRklSTVdBUkVfQUNQSV9DT05UUk9M X1NUUlVDVFVSRV9TSUdOQVRVUkUpIHsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIEl0IGlz IHRvIGZpbmQgRkFDUyBBQ1BJIHRhYmxlLA0KPiA+PiArICAgIC8vIG5lZWQgZmluZCBGQURUIGZp cnN0Lg0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgRmFkdCA9IFNjYW5UYWJsZUluUlNEVCAoUnNk dCwNCj4gPj4gRUZJX0FDUElfMl8wX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFU VVJFKTsNCj4gPj4gKyAgICBUYWJsZSA9IEZpbmRBY3BpRmFjc0Zyb21GYWR0IChGYWR0KTsNCj4g Pj4gKyAgfSBlbHNlIHsNCj4gPj4gKyAgICBUYWJsZSA9IFNjYW5UYWJsZUluUlNEVCAoUnNkdCwg U2lnbmF0dXJlKTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIHJldHVybiBUYWJsZTsNCj4g Pj4gK30NCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gZmluZHMgQUNQ SSB0YWJsZSBieSBzaWduYXR1cmUuDQo+ID4+ICsgIEl0IHdpbGwgZmluZCB0aGUgdGFibGUgaW4g Z0VmaUFjcGkyMFRhYmxlR3VpZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB0YWJsZQ0KPiBmaXJzdCwN Cj4gPj4gKyAgYW5kIHRoZW4gZ0VmaUFjcGkxMFRhYmxlR3VpZCBzeXN0ZW0gY29uZmlndXJhdGlv biB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gU2lnbmF0dXJlICBBQ1BJIHRhYmxlIHNp Z25hdHVyZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dXJuIEFDUEkgdGFibGUgb3IgTlVMTCBpZiBu b3QgZm91bmQuDQo+ID4+ICsNCj4gPj4gKyoqLw0KPiA+PiArVk9JRCAqDQo+ID4+ICtFRklBUEkN Cj4gPj4gK0VmaUZpbmRBY3BpVGFibGVCeVNpZ25hdHVyZSAoDQo+ID4+ICsgIElOIFVJTlQzMiAg ICAgU2lnbmF0dXJlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVk9JRCAgICAgICAgICAq VGFibGU7DQo+ID4+ICsNCj4gPj4gKyAgVGFibGUgPSBGaW5kQWNwaVRhYmxlSW5BY3BpQ29uZmln dXJhdGlvblRhYmxlICgmZ0VmaUFjcGkyMFRhYmxlR3VpZCwNCj4gPj4gU2lnbmF0dXJlKTsNCj4g Pj4gKyAgaWYgKFRhYmxlICE9IE5VTEwpIHsNCj4gPj4gKyAgICByZXR1cm4gVGFibGU7DQo+ID4+ ICsgIH0NCj4gPj4gKw0KPiA+PiArICByZXR1cm4gRmluZEFjcGlUYWJsZUluQWNwaUNvbmZpZ3Vy YXRpb25UYWJsZSAoJmdFZmlBY3BpMTBUYWJsZUd1aWQsDQo+ID4+IFNpZ25hdHVyZSk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvVWVm aUxpYi5pbmYNCj4gPj4gYi9NZGVQa2cvTGlicmFyeS9VZWZpTGliL1VlZmlMaWIuaW5mDQo+ID4+ IGluZGV4IGE2YzczOWVmM2Q2ZC4uYWVhMjBmZTY3MTUzIDEwMDY0NA0KPiA+PiAtLS0gYS9NZGVQ a2cvTGlicmFyeS9VZWZpTGliL1VlZmlMaWIuaW5mDQo+ID4+ICsrKyBiL01kZVBrZy9MaWJyYXJ5 L1VlZmlMaWIvVWVmaUxpYi5pbmYNCj4gPj4gQEAgLTQxLDYgKzQxLDcgQEAgW1NvdXJjZXNdDQo+ ID4+ICBDb25zb2xlLmMNCj4gPj4gIFVlZmlMaWIuYw0KPiA+PiAgVWVmaUxpYkludGVybmFsLmgN Cj4gPj4gKyAgQWNwaS5jDQo+ID4+DQo+ID4+DQo+ID4+IFtQYWNrYWdlc10NCj4gPj4gQEAgLTYy LDYgKzYzLDggQEAgW0d1aWRzXQ0KPiA+PiAgZ0VmaUV2ZW50UmVhZHlUb0Jvb3RHdWlkICAgICAg ICAgICAgICAgICAgICAgICMjDQo+ID4+IFNPTUVUSU1FU19DT05TVU1FUyAgIyMgRXZlbnQNCj4g Pj4gIGdFZmlFdmVudExlZ2FjeUJvb3RHdWlkICAgICAgICAgICAgICAgICAgICAgICAjIw0KPiA+ PiBTT01FVElNRVNfQ09OU1VNRVMgICMjIEV2ZW50DQo+ID4+ICBnRWZpR2xvYmFsVmFyaWFibGVH dWlkICAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gPj4gU09NRVRJTUVTX0NPTlNVTUVTICAj IyBWYXJpYWJsZQ0KPiA+PiArICBnRWZpQWNwaTIwVGFibGVHdWlkICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyMNCj4gPj4gU09NRVRJTUVTX0NPTlNVTUVTICAjIyBTeXN0ZW1UYWJsZQ0KPiA+ PiArICBnRWZpQWNwaTEwVGFibGVHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4g Pj4gU09NRVRJTUVTX0NPTlNVTUVTICAjIyBTeXN0ZW1UYWJsZQ0KPiA+Pg0KPiA+PiBbUHJvdG9j b2xzXQ0KPiA+PiAgZ0VmaURyaXZlckJpbmRpbmdQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAg ICAgIyMNCj4gPj4gU09NRVRJTUVTX1BST0RVQ0VTDQo+ID4+IC0tDQo+ID4+IDIuNy4wLndpbmRv d3MuMQ0KPiA+Pg0KPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiA+PiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+PiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZw0KPiA+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Vk azItZGV2ZWwNCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KPiA+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmcNCj4gPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2 ZWwNCg==