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=134.134.136.24; helo=mga09.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (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 1159921B02822 for ; Sun, 2 Sep 2018 23:14:47 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Sep 2018 23:14:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,323,1531810800"; d="scan'208";a="229735717" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga004.jf.intel.com with ESMTP; 02 Sep 2018 23:14:41 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Sep 2018 23:14:41 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 2 Sep 2018 23:14:40 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.226]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.16]) with mapi id 14.03.0319.002; Mon, 3 Sep 2018 14:14:39 +0800 From: "Yao, Jiewen" To: "Zeng, Star" , "Ni, Ruiyu" , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , Younas khan , "Gao, Liming" Thread-Topic: [edk2] [PATCH 1/6] MdePkg UefiLib: Add new EfiFindAcpiTableBySignature() API Thread-Index: AQHUQR3kbmX/4SF0a0WlIck0i0cfdKTZwFyg///G0ACAAPRGgIAC5+yAgAAcyYCAABGKgIAAhqvQ Date: Mon, 3 Sep 2018 06:14:38 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AD3BFF0@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> <74D8A39837DF1E4DA445A8C0B3885C503AD37F11@shsmsx102.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103BBB49F2@shsmsx102.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5BDEFCAF@SHSMSX104.ccr.corp.intel.com> <0C09AFA07DD0434D9E2A0C6AEB0483103BBB4B68@shsmsx102.ccr.corp.intel.com> In-Reply-To: <0C09AFA07DD0434D9E2A0C6AEB0483103BBB4B68@shsmsx102.ccr.corp.intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDg4MGJhZTktYjlmZi00NjJkLWE5OWUtNDllZDg2MTk2M2ZjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiaE5OdjFwbUVYZWxUZjh2USthbU4wa01UVkg2cnNSRWtHeUMyZ1JlRnlTSUI3TVlXalwveWs0TEsybWx5ZFg1VjIifQ== 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: Mon, 03 Sep 2018 06:14:47 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBwcmVmZXIgUzEuDQpJIGJlbGlldmUgdGhhdCB0aGUgRWZpTG9jYXRlTmV4dEFjcGlUYWJsZSgp IGNhbiBhbHNvIGJlIHVzZWQgaW4gUzEuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBaZW5nLCBTdGFyDQo+IFNlbnQ6IE1vbmRheSwgU2VwdGVtYmVyIDMsIDIwMTgg MjoxMiBQTQ0KPiBUbzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBZYW8sIEppZXdl biA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBLaW5uZXksDQo+IE1pY2hhZWwgRCA8bWljaGFlbC5k Lmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgWW91bmFz IGtoYW4gPHBtZHlvdW5hc2toYW43ODZAZ21haWwuY29tPjsNCj4gR2FvLCBMaW1pbmcgPGxpbWlu Zy5nYW9AaW50ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gU3Vi amVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS82XSBNZGVQa2cgVWVmaUxpYjogQWRkIG5ldw0KPiBF ZmlGaW5kQWNwaVRhYmxlQnlTaWduYXR1cmUoKSBBUEkNCj4gDQo+IFRoYW5rcy4NCj4gT2ssIHBs ZWFzZSBoZWxwIGFuZCB3ZSBjYW4gaGF2ZSBnb29kIGFuZCBmbGV4aWJsZSBpbnRlcmZhY2Uocykg Zm9yIGJvdGggcHJvZHVjZXINCj4gYW5kIGNvbnN1bWVyLg0KPiANCj4gRmlyc3QsIHRoZXJlIGFy ZSB0d28gY2FzZXMgd2UgbmVlZCB0byBjb25zaWRlci4NCj4gMS4gU2luZ2xlIHRhYmxlLCBsaWtl IEZBRFQsIEZBQ1MsIERTRFQsIGV0Yy4NCj4gMi4gTXVsdGlwbGUgdGFibGVzLCBsaWtlIFNTRFQs IGV0Yy4NCj4gDQo+IFRoZW4sIHdlIGhhdmUgdHdvIHNvbHV0aW9ucy4NCj4gUzE6DQo+IE9uZSBp bnRlcmZhY2UgZm9yIHNpbmdsZSB0YWJsZSBjYXNlLCBjb25zdW1lciBvbmx5IG5lZWRzIGlucHV0 IFNpZ25hdHVyZSwgaGFzIG5vDQo+IG5lZWQgaW5wdXQgcHJldmlvdXMgcmV0dXJuZWQgVGFibGUu IExpa2UgR2V0Rmlyc3RHdWlkSG9iPw0KPiBPbmUgaW50ZXJmYWNlIGZvciBtdWx0aXBsZSB0YWJs ZSBjYXNlLCBjb25zdW1lciBuZWVkcyBpbnB1dCBTaWduYXR1cmUgYW5kDQo+IHByZXZpb3VzIHJl dHVybmVkIFRhYmxlLiBMaWtlIEdldE5leHRHdWlkSG9iPyBDb3VsZCB3ZSBhZGQgaXQgbGF0ZXIg YmFzZWQgb24NCj4gcmVhbCByZXF1ZXN0Pw0KPiBTMjoNCj4gT25lIGludGVyZmFjZSBmb3IgYm90 aCBzaW5nbGUgdGFibGUgYW5kIG11bHRpcGxlIHRhYmxlIGNhc2VzLCBjb25zdW1lciBuZWVkcw0K PiBpbnB1dCBTaWduYXR1cmUgYW5kIHByZXZpb3VzIHJldHVybmVkIFRhYmxlLiBEb2VzIGNvbnN1 bWVyIG5lZWQgaW5wdXQgdGhlDQo+IHRhYmxlIGhlYWRlciBzdG9yZWQgaW4gY29uZmlndXJhdGlv biB0YWJsZSBieSBpdHNlbGYoZ2V0dGluZyBjb25maWd1cmF0aW9uIHRhYmxlKT8NCj4gDQo+IA0K PiBJZiB3ZSBsaWtlIFMyLCB0aGUgaW50ZXJmYWNlIHNob3VsZCBiZSBsaWtlIGJlbG93Pw0KPiAN Cj4gLyoqDQo+ICAgVGhpcyBmdW5jdGlvbiBsb2NhdGVzIG5leHQgQUNQSSB0YWJsZSBiYXNlZCBv biBTaWduYXR1cmUgYW5kIHByZXZpb3VzIHJldHVybmVkDQo+IFRhYmxlLg0KPiAgIElmIHRoZSBp bnB1dCBwcmV2aW91cyByZXR1cm5lZCBUYWJsZSBpcyBOVUxMLCB0aGlzIGZ1bmN0aW9uIHdpbGwg bG9jYXRlIG5leHQgdGFibGUNCj4gICBpbiBnRWZpQWNwaTIwVGFibGVHdWlkIHN5c3RlbSBjb25m aWd1cmF0aW9uIHRhYmxlIGZpcnN0LCBhbmQgdGhlbg0KPiBnRWZpQWNwaTEwVGFibGVHdWlkDQo+ ICAgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdGFibGUuDQo+ICAgSWYgdGhlIGlucHV0IHByZXZpb3Vz IHJldHVybmVkIFRhYmxlIGlzIG5vdCBOVUxMIGFuZCBjb3VsZCBiZSBsb2NhdGVkIGluDQo+ICAg Z0VmaUFjcGkyMFRhYmxlR3VpZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB0YWJsZSwgdGhpcyBmdW5j dGlvbiB3aWxsIGp1c3QgbG9jYXRlDQo+IG5leHQNCj4gICB0YWJsZSBpbiBnRWZpQWNwaTIwVGFi bGVHdWlkIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlLCBvdGhlcndpc2UNCj4gZ0VmaUFjcGkx MFRhYmxlR3VpZA0KPiAgIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlLg0KPiANCj4gICBAcGFy YW0gU2lnbmF0dXJlICBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gICBAcGFyYW0gVGFibGUgICAg ICBQb2ludGVyIHRvIHByZXZpb3VzIHJldHVybmVkIFRhYmxlLCBvciBOVUxMIHRvIGxvY2F0ZQ0K PiBmaXJzdCB0YWJsZS4NCj4gDQo+ICAgQHJldHVybiBOZXh0IEFDUEkgdGFibGUgb3IgTlVMTCBp ZiBub3QgZm91bmQuDQo+IA0KPiAqKi8NCj4gRUZJX0FDUElfQ09NTU9OX0hFQURFUiAqDQo+IEVG SUFQSQ0KPiBFZmlMb2NhdGVOZXh0QWNwaVRhYmxlICgNCj4gICBJTiBVSU5UMzIgICAgICAgICAg ICAgICAgICBTaWduYXR1cmUsDQo+ICAgSU4gRUZJX0FDUElfQ09NTU9OX0hFQURFUiAgKlRhYmxl DQo+ICAgKQ0KPiANCj4gDQo+IA0KPiBUaGFua3MsDQo+IFN0YXINCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogTmksIFJ1aXl1DQo+IFNlbnQ6IE1vbmRheSwgU2VwdGVtYmVy IDMsIDIwMTggMTowOSBQTQ0KPiBUbzogWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47 IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47DQo+IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEu b3JnOyBZb3VuYXMga2hhbiA8cG1keW91bmFza2hhbjc4NkBnbWFpbC5jb20+Ow0KPiBHYW8sIExp bWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENI IDEvNl0gTWRlUGtnIFVlZmlMaWI6IEFkZCBuZXcNCj4gRWZpRmluZEFjcGlUYWJsZUJ5U2lnbmF0 dXJlKCkgQVBJDQo+IA0KPiBUaGF0J3MgZmluZSB0byBiZSBpbiBVZWZpTGliLiBJdCdzIGFscmVh ZHkgYSBjb21ibyBsaWJyYXJ5Lg0KPiANCj4gQnV0IEkgZG8gcmVjb21tZW5kIHdlIHRoaW5rIGFi b3V0IGhvdyB0byBoYW5kbGUgbXVsdGlwbGUgdGFibGVzIHdpdGggc2FtZQ0KPiBzaWduYXR1cmUu DQo+IFdoZW4gd2UgYXJlIGFkZGluZyBuZXcgQVBJcywgd2Ugbm90IG9ubHkgbmVlZCB0byBldmFs dWF0ZSB0aGUgZXhpc3RpbmcgcmVhbA0KPiBjYXNlLCBidXQgYWxzbyB3ZSBuZWVkIHRvIGdlbmVy YWxpemUgdGhlIHJlYWwgY2FzZXMgYW5kIHRyeSB0byB0aGluayBhYm91dCB0aGUNCj4gbW9yZSBm bGV4aWJsZSBpbnRlcmZhY2UuDQo+IA0KPiANCj4gVGhhbmtzL1JheQ0KPiANCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFplbmcsIFN0YXINCj4gPiBTZW50OiBNb25k YXksIFNlcHRlbWJlciAzLCAyMDE4IDExOjI2IEFNDQo+ID4gVG86IFlhbywgSmlld2VuIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT47IE5pLCBSdWl5dQ0KPiA+IDxydWl5dS5uaUBpbnRlbC5jb20+OyBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gQ2M6IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnOyBZb3VuYXMga2hhbiA8cG1keW91bmFza2hhbjc4NkBnbWFp bC5jb20+Ow0KPiA+IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IFplbmcsIFN0 YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0gg MS82XSBNZGVQa2cgVWVmaUxpYjogQWRkIG5ldw0KPiA+IEVmaUZpbmRBY3BpVGFibGVCeVNpZ25h dHVyZSgpIEFQSQ0KPiA+DQo+ID4gR29vZCBpZGVhLg0KPiA+DQo+ID4gSSBkaWQgY29uc2lkZXIg RFNEVCBhbmQgbXVsdGlwbGUgU1NEVHMgY2FzZXMuIEJ1dCBJIGRpZCBub3QgZmluZCBhbnkNCj4g PiByZWFsIGNhc2UgZm9yIHRoZW0uDQo+ID4gU28gSSBtYWRlIHRoZSBjb2RlIHNpbXBseSBmb3Ig Y3VycmVudCBjYXNlcywgYW5kIHRoZSBjb2RlIGNhbiBiZQ0KPiA+IGVhc2lseSBlbmhhbmNlZCBs YXRlciBmb3IgRFNEVCwgYSBuZXcgQVBJIGNhbiBiZSBhZGRlZCBsYXRlciBmb3IgbXVsdGlwbGUN Cj4gU1NEVHMuDQo+ID4NCj4gPiBBYm91dCBhZGRpbmcgdGhlIG5ldyBBUEkgaW4gVWVmaUxpYiBW UyBuZXcgbGlicmFyeSBjbGFzcywgSSBkaWQgYWxzbw0KPiA+IGNvbnNpZGVyIGl0IGFuZCBldmVu IGNyZWF0ZWQgY29kZSBmb3IgbmV3IGxpYnJhcnkgY2xhc3MNCj4gPiAoZ2l0QGdpdGh1Yi5jb206 bHplbmcxNC9lZGsyLmdpdCBicmFuY2gNCj4gPiBGaW5kQWNwaVRhYmxlQnlTaWduYXR1cmVfVWVm aUFjcGlUYWJsZUxpYikuDQo+ID4gQnV0IEkgcmVtZW1iZXIgSSBkaWQgZGlzY3VzcyBpdCB3aXRo IE1pa2UgYW5kIEppZXdlbiwgd2UgcmVjb21tZW5kZWQNCj4gPiBVZWZpTGliIGFzIGl0IHdpbGwg ZG8gbm90IHJlcXVpcmUgYW55IHBsYXRmb3JtIGNoYW5nZS4NCj4gPg0KPiA+DQo+ID4NCj4gPiBU aGFua3MsDQo+ID4gU3Rhcg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogWWFvLCBKaWV3ZW4NCj4gPiBTZW50OiBTYXR1cmRheSwgU2VwdGVtYmVyIDEsIDIwMTggNzow NCBBTQ0KPiA+IFRvOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT4NCj4gPiBDYzogWmVu ZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBL aW5uZXksDQo+ID4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFlvdW5h cyBraGFuDQo+ID4gPHBtZHlvdW5hc2toYW43ODZAZ21haWwuY29tPjsgR2FvLCBMaW1pbmcgPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDEvNl0g TWRlUGtnIFVlZmlMaWI6IEFkZCBuZXcNCj4gPiBFZmlGaW5kQWNwaVRhYmxlQnlTaWduYXR1cmUo KSBBUEkNCj4gPg0KPiA+IEdvb2QgaWRlYSBvbiBMb2NhdGVOZXh0QWNwaVRhYmxlKCkuDQo+ID4N Cj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IE5pLCBS dWl5dQ0KPiA+ID4gU2VudDogU2F0dXJkYXksIFNlcHRlbWJlciAxLCAyMDE4IDEyOjI5IEFNDQo+ ID4gPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gQ2M6IFpl bmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsN Cj4gPiA+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IFlv dW5hcyBraGFuDQo+ID4gPiA8cG1keW91bmFza2hhbjc4NkBnbWFpbC5jb20+OyBHYW8sIExpbWlu ZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRD SCAxLzZdIE1kZVBrZyBVZWZpTGliOiBBZGQgbmV3DQo+ID4gPiBFZmlGaW5kQWNwaVRhYmxlQnlT aWduYXR1cmUoKSBBUEkNCj4gPiA+DQo+ID4gPiBJIHRoaW5rIExvY2F0ZU5leHRBY3BpVGFibGUo KSBpcyBtb3JlIHByb3BlciB0byBoYW5kbGUgdGhlIG11bHRpcGxlDQo+ID4gPiB0YWJsZXMgd2l0 aCBzYW1lIHNpZ25hdHVyZS4gSXQgd2lsbCBjYXJyeSB0aHJlZSBwYXJhbWV0ZXJzLCBvbmUgaXMN Cj4gPiA+IHRoZSB0YWJsZSBoZWFkZXIgc3RvcmVkIGluIGNvbmZpZ3VyYXRpb24gdGFibGUsIG9u ZSBpcyB0aGUNCj4gPiA+IHNpZ25hdHVyZSwgYW5vdGhlciBpcw0KPiA+IHRoZSBwcmV2aW91cyBs b2NhdGVkIHRhYmxlLg0KPiA+ID4gQ2FuIHdlIHJldHVybiBhIGNvbW1vbiB0YWJsZSBoZWFkZXIg b3RoZXIgdGhhbiB2b2lkKj8NCj4gPiA+DQo+ID4gPiBJcyB0aGVyZSBiZXR0ZXIgcGxhY2Ugb3Ro ZXIgdGhhbiBVZWZpTGliPw0KPiA+ID4gRG8gd2UgbmVlZCB0byBhZGQgYSBuZXcgbGlicmFyeSBj bGFzcyBsaWtlIEFjcGlMaWI/DQo+ID4gPg0KPiA+ID4g5Y+R6Ieq5oiR55qEIGlQaG9uZQ0KPiA+ ID4NCj4gPiA+ID4g5ZyoIDIwMTjlubQ45pyIMzHml6XvvIzkuIvljYg4OjAw77yMWWFvLCBKaWV3 ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+IOWGmQ0KPiA+ID4g6YGT77yaDQo+ID4gPiA+ DQo+ID4gPiA+IEdvb2QgZW5oYW5jZW1lbnQuDQo+ID4gPiA+DQo+ID4gPiA+IEkgaGF2ZSAyIGFk ZGl0aW9uYWwgdGhvdWdodDoNCj4gPiA+ID4NCj4gPiA+ID4gMSkgSG93IHRvIGhhbmRsZSBEU0RU Pw0KPiA+ID4gPiBXZSBoYXZlIHNwZWNpYWwgY29kZSB0byBoYW5kbGUgRkFDUywgYnV0IG5vIERT RFQuDQo+ID4gPiA+DQo+ID4gPiA+IDIpIEhvdyB0byBoYW5kbGUgU1NEVCBvciBvdGhlciBtdWx0 aXBsZSBBQ1BJIHRhYmxlcz8NCj4gPiA+ID4gV2UgbWF5IGhhdmUgbXVsdGlwbGUgU1NEVC4gVXN1 YWxseSwgaXQgaXMgaWRlbnRpZmllZCBhcyBPRU1JRC4NCj4gPiA+ID4gRG8gd2Ugd2FudCB0byBw cm92aWRlIHNpbWlsYXIgZnVuY3Rpb24gZm9yIHRoZW0/DQo+ID4gPiA+DQo+ID4gPiA+IEFueXdh eSwganVzdCAqYWRkaXRpb25hbCogdGhvdWdodC4gOi0pIEN1cnJlbnQgaW1wbGVtZW50YXRpb24g aXMNCj4gPiA+ID4gZ29vZCBlbm91Z2ggZm9yIGNoZWNrIGluLg0KPiA+ID4gPg0KPiA+ID4gPiBS ZXZpZXdlZC1ieTogSmlld2VuLnlhb0BpbnRlbC5jb20NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmsg eW91DQo+ID4gPiA+IFlhbyBKaWV3ZW4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86 ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24NCj4gPiA+ID4+IEJlaGFsZiBPZg0K PiA+ID4gU3Rhcg0KPiA+ID4gPj4gWmVuZw0KPiA+ID4gPj4gU2VudDogRnJpZGF5LCBBdWd1c3Qg MzEsIDIwMTggNzoyOSBQTQ0KPiA+ID4gPj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ ID4gPiA+PiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsgWW91bmFzIGtoYW4NCj4gPiA+ID4+IDxwbWR5b3VuYXNraGFuNzg2QGdtYWlsLmNvbT47IFlh bywgSmlld2VuDQo+ID4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsNCj4gPiA+IEdhbywNCj4gPiA+ ID4+IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdA aW50ZWwuY29tPg0KPiA+ID4gPj4gU3ViamVjdDogW2VkazJdIFtQQVRDSCAxLzZdIE1kZVBrZyBV ZWZpTGliOiBBZGQgbmV3DQo+ID4gPiA+PiBFZmlGaW5kQWNwaVRhYmxlQnlTaWduYXR1cmUoKSBB UEkNCj4gPiA+ID4+DQo+ID4gPiA+PiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hv d19idWcuY2dpP2lkPTk2Nw0KPiA+ID4gPj4gUmVxdWVzdCB0byBhZGQgYSBsaWJyYXJ5IGZ1bmN0 aW9uIGZvciBHZXRBY3BpVGFibGUoKSBpbiBvcmRlciB0bw0KPiA+ID4gPj4gZ2V0IEFDUEkgdGFi bGUgdXNpbmcgc2lnbmF0dXJlIGFzIGlucHV0Lg0KPiA+ID4gPj4NCj4gPiA+ID4+IEFmdGVyIGV2 YWx1YXRpb24sIHdlIGZvdW5kIHRoZXJlIGFyZSBtYW55IGR1cGxpY2F0ZWQgY29kZSB0byBmaW5k DQo+ID4gPiA+PiBBQ1BJIHRhYmxlIGJ5IHNpZ25hdHVyZSBpbiBkaWZmZXJlbnQgbW9kdWxlcy4N Cj4gPiA+ID4+DQo+ID4gPiA+PiBUaGlzIHBhdGNoIGFkZHMgbmV3IEVmaUZpbmRBY3BpVGFibGVC eVNpZ25hdHVyZSgpIEFQSSBpbiBVZWZpTGliDQo+ID4gPiA+PiBmb3IgdGhlIHJlcXVlc3QgYW5k IGFsc28gdGhlIGZvbGxvd2luZyBwYXRjaCB0byByZW1vdmUgdGhlDQo+ID4gPiA+PiBkdXBsaWNh dGVkIGNvZGUuDQo+ID4gPiA+Pg0KPiA+ID4gPj4gQ2M6IFlvdW5hcyBraGFuIDxwbWR5b3VuYXNr aGFuNzg2QGdtYWlsLmNvbT4NCj4gPiA+ID4+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4+IENjOiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2Fv QGludGVsLmNvbT4NCj4gPiA+ID4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNv bT4NCj4gPiA+ID4+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFn cmVlbWVudCAxLjENCj4gPiA+ID4+IFNpZ25lZC1vZmYtYnk6IFN0YXIgWmVuZyA8c3Rhci56ZW5n QGludGVsLmNvbT4NCj4gPiA+ID4+IC0tLQ0KPiA+ID4gPj4gTWRlUGtnL0luY2x1ZGUvTGlicmFy eS9VZWZpTGliLmggICB8ICAxNyArKysNCj4gPiA+ID4+IE1kZVBrZy9MaWJyYXJ5L1VlZmlMaWIv QWNwaS5jICAgICAgfCAyMjYNCj4gPiA+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gPiA+ID4+IE1kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvVWVmaUxpYi5pbmYgfCAg IDMgKw0KPiA+ID4gPj4gMyBmaWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPiA+ID4+IE1kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvQWNwaS5jDQo+ID4g PiA+Pg0KPiA+ID4gPj4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxp Yi5oDQo+ID4gPiA+PiBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4gPiA+ PiBpbmRleCBmODAwNjdmMTExMDMuLjhkZDI1ZjMyNGZkMiAxMDA2NDQNCj4gPiA+ID4+IC0tLSBh L01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4gPiA+PiArKysgYi9NZGVQa2cv SW5jbHVkZS9MaWJyYXJ5L1VlZmlMaWIuaA0KPiA+ID4gPj4gQEAgLTE1OTUsNCArMTU5NSwyMSBA QCBFZmlPcGVuRmlsZUJ5RGV2aWNlUGF0aCAoDQo+ID4gPiA+PiAgSU4gICAgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgT3Blbk1vZGUsDQo+ID4gPiA+PiAgSU4gICAgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgQXR0cmlidXRlcw0KPiA+ID4gPj4gICk7DQo+ID4gPiA+PiArDQo+ID4gPiA+ PiArLyoqDQo+ID4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGZpbmRzIEFDUEkgdGFibGUgYnkgc2ln bmF0dXJlLg0KPiA+ID4gPj4gKyAgSXQgd2lsbCBmaW5kIHRoZSB0YWJsZSBpbiBnRWZpQWNwaTIw VGFibGVHdWlkIHN5c3RlbQ0KPiA+ID4gPj4gK2NvbmZpZ3VyYXRpb24gdGFibGUNCj4gPiA+IGZp cnN0LA0KPiA+ID4gPj4gKyAgYW5kIHRoZW4gZ0VmaUFjcGkxMFRhYmxlR3VpZCBzeXN0ZW0gY29u ZmlndXJhdGlvbiB0YWJsZS4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEBwYXJhbSBTaWduYXR1 cmUgIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgQHJldHVy biBBQ1BJIHRhYmxlIG9yIE5VTEwgaWYgbm90IGZvdW5kLg0KPiA+ID4gPj4gKw0KPiA+ID4gPj4g KyoqLw0KPiA+ID4gPj4gK1ZPSUQgKg0KPiA+ID4gPj4gK0VGSUFQSQ0KPiA+ID4gPj4gK0VmaUZp bmRBY3BpVGFibGVCeVNpZ25hdHVyZSAoDQo+ID4gPiA+PiArICBJTiBVSU5UMzIgICAgIFNpZ25h dHVyZQ0KPiA+ID4gPj4gKyAgKTsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICNlbmRpZg0KPiA+ID4g Pj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvQWNwaS5jDQo+ID4gPiA+PiBi L01kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvQWNwaS5jIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4 DQo+ID4gPiA+PiAwMDAwMDAwMDAwMDAuLjVjYjkzOTY2YjU5Zg0KPiA+ID4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gPj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9BY3BpLmMNCj4gPiA+ ID4+IEBAIC0wLDAgKzEsMjI2IEBADQo+ID4gPiA+PiArLyoqIEBmaWxlDQo+ID4gPiA+PiArICBU aGlzIG1vZHVsZSBwcm92aWRlcyBoZWxwIGZ1bmN0aW9uIGZvciBmaW5kaW5nIEFDUEkgdGFibGUu DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTgsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+PiArIHJlc2VydmVkLjxCUj4gVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgYXJlDQo+ID4gPiA+PiArIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4g PiA+ID4+ICsgdGhlDQo+ID4gPiBCU0QNCj4gPiA+ID4+IExpY2Vuc2UNCj4gPiA+ID4+ICsgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUN Cj4gPiA+ID4+ICsgbGljZW5zZSBtYXkgYmUNCj4gPiA+ID4+IGZvdW5kIGF0DQo+ID4gPiA+PiAr ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUw0KPiA+IElTIg0KPiA+ID4gPj4gQkFTSVMsDQo+ID4gPiA+PiAr ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVINCj4gPiA+ID4+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsq Ki8NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsjaW5jbHVkZSAiVWVmaUxpYkludGVybmFsLmgiDQo+ ID4gPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPiAjaW5jbHVkZSA8R3Vp ZC9BY3BpLmg+DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArLyoqDQo+ID4gPiA+PiArICBUaGlzIGZ1 bmN0aW9uIHNjYW5zIEFDUEkgdGFibGUgaW4gUlNEVC4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsg IEBwYXJhbSBSc2R0ICAgICAgIEFDUEkgUlNEVA0KPiA+ID4gPj4gKyAgQHBhcmFtIFNpZ25hdHVy ZSAgQUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEByZXR1cm4g QUNQSSB0YWJsZSBvciBOVUxMIGlmIG5vdCBmb3VuZC4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsq Ki8NCj4gPiA+ID4+ICtWT0lEICoNCj4gPiA+ID4+ICtTY2FuVGFibGVJblJTRFQgKA0KPiA+ID4g Pj4gKyAgSU4gRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSICAgICpSc2R0LA0KPiA+ID4gPj4g KyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiA+ID4gPj4g KyAgKQ0KPiA+ID4gPj4gK3sNCj4gPiA+ID4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXg7DQo+ID4gPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVudHJ5Q291bnQ7DQo+ID4gPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpFbnRyeVB0cjsNCj4gPiA+ID4+ICsgIEVGSV9BQ1BJX0RFU0NSSVBUSU9OX0hF QURFUiAgICAgICAgKlRhYmxlOw0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgaWYgKFJzZHQgPT0g TlVMTCkgew0KPiA+ID4gPj4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiA+ID4+ICsgIH0NCj4gPiA+ ID4+ICsNCj4gPiA+ID4+ICsgIEVudHJ5Q291bnQgPSAoUnNkdC0+TGVuZ3RoIC0gc2l6ZW9mDQo+ ID4gPiA+PiArIChFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIpKSAvDQo+ID4gPiA+PiBzaXpl b2YoVUlOVDMyKTsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEVudHJ5UHRyID0gKFVJTlQzMiAq KShSc2R0ICsgMSk7ICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPA0KPiA+ID4gPj4gKyBFbnRyeUNv dW50OyBJbmRleCArKywgRW50cnlQdHIgKyspIHsNCj4gPiA+ID4+ICsgICAgVGFibGUgPSAoRUZJ X0FDUElfREVTQ1JJUFRJT05fSEVBREVSICopKChVSU5UTikoKkVudHJ5UHRyKSk7DQo+ID4gPiA+ PiArICAgIGlmIChUYWJsZS0+U2lnbmF0dXJlID09IFNpZ25hdHVyZSkgew0KPiA+ID4gPj4gKyAg ICAgIHJldHVybiBUYWJsZTsNCj4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPj4gKyAgfQ0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gKyAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+PiArfQ0KPiA+ID4gPj4gKw0K PiA+ID4gPj4gKy8qKg0KPiA+ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBzY2FucyBBQ1BJIHRhYmxl IGluIFhTRFQuDQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBAcGFyYW0gWHNkdCAgICAgICBBQ1BJ IFhTRFQNCj4gPiA+ID4+ICsgIEBwYXJhbSBTaWduYXR1cmUgIEFDUEkgdGFibGUgc2lnbmF0dXJl DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBAcmV0dXJuIEFDUEkgdGFibGUgb3IgTlVMTCBpZiBu b3QgZm91bmQuDQo+ID4gPiA+PiArDQo+ID4gPiA+PiArKiovDQo+ID4gPiA+PiArVk9JRCAqDQo+ ID4gPiA+PiArU2NhblRhYmxlSW5YU0RUICgNCj4gPiA+ID4+ICsgIElOIEVGSV9BQ1BJX0RFU0NS SVBUSU9OX0hFQURFUiAgICAqWHNkdCwNCj4gPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICBTaWduYXR1cmUNCj4gPiA+ID4+ICsgICkNCj4gPiA+ID4+ICt7DQo+ID4g PiA+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiA+PiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgRW50cnlDb3VudDsNCj4gPiA+ID4+ICsg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyeVB0cjsNCj4gPiA+ID4+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlUHRyOw0KPiA+ID4gPj4gKyAgRUZJX0FD UElfREVTQ1JJUFRJT05fSEVBREVSICAgICpUYWJsZTsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsg IGlmIChYc2R0ID09IE5VTEwpIHsNCj4gPiA+ID4+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+ PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBFbnRyeUNvdW50ID0gKFhzZHQtPkxlbmd0 aCAtIHNpemVvZg0KPiA+ID4gPj4gKyAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKSkgLw0K PiA+ID4gPj4gc2l6ZW9mKFVJTlQ2NCk7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBCYXNlUHRy ID0gKFVJTlROKShYc2R0ICsgMSk7DQo+ID4gPiA+PiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBFbnRyeUNvdW50OyBJbmRleCArKykgew0KPiA+ID4gPj4gKyAgICBDb3B5TWVtICgmRW50cnlQ dHIsIChWT0lEICopKEJhc2VQdHIgKyBJbmRleCAqDQo+ID4gPiA+PiArIHNpemVvZihVSU5UNjQp KSwNCj4gPiA+ID4+IHNpemVvZihVSU5UNjQpKTsNCj4gPiA+ID4+ICsgICAgVGFibGUgPSAoRUZJ X0FDUElfREVTQ1JJUFRJT05fSEVBREVSICopKChVSU5UTikoRW50cnlQdHIpKTsNCj4gPiA+ID4+ ICsgICAgaWYgKFRhYmxlLT5TaWduYXR1cmUgPT0gU2lnbmF0dXJlKSB7DQo+ID4gPiA+PiArICAg ICAgcmV0dXJuIFRhYmxlOw0KPiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+ PiArDQo+ID4gPiA+PiArICByZXR1cm4gTlVMTDsNCj4gPiA+ID4+ICt9DQo+ID4gPiA+PiArDQo+ ID4gPiA+PiArLyoqDQo+ID4gPiA+PiArICBUbyBmaW5kIEZhY3MgaW4gRkFEVC4NCj4gPiA+ID4+ ICsNCj4gPiA+ID4+ICsgIEBwYXJhbSBGYWR0ICAgRkFEVCB0YWJsZSBwb2ludGVyDQo+ID4gPiA+ PiArDQo+ID4gPiA+PiArICBAcmV0dXJuIEZhY3MgdGFibGUgcG9pbnRlciBvciBOVUxMIGlmIG5v dCBmb3VuZC4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsqKi8NCj4gPiA+ID4+ICtFRklfQUNQSV8y XzBfRklSTVdBUkVfQUNQSV9DT05UUk9MX1NUUlVDVFVSRSAqDQo+ID4gPiA+PiArRmluZEFjcGlG YWNzRnJvbUZhZHQgKA0KPiA+ID4gPj4gKyAgSU4gRUZJX0FDUElfMl8wX0ZJWEVEX0FDUElfREVT Q1JJUFRJT05fVEFCTEUgICpGYWR0DQo+ID4gPiA+PiArICApDQo+ID4gPiA+PiArew0KPiA+ID4g Pj4gKyAgRUZJX0FDUElfMl8wX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9TVFJVQ1RVUkUgICpGYWNz Ow0KPiA+ID4gPj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERhdGE2NDsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIGlmIChGYWR0ID09IE5VTEwpIHsN Cj4gPiA+ID4+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ ID4gPiA+PiArICBpZiAoRmFkdC0+SGVhZGVyLlJldmlzaW9uIDwNCj4gPiA+ID4+IEVGSV9BQ1BJ XzJfMF9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1JFVklTSU9OKSB7DQo+ID4gPiA+PiAr ICAgIEZhY3MgPSAoRUZJX0FDUElfMl8wX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9TVFJVQ1RVUkUN Cj4gPiA+ID4+ICopKFVJTlROKUZhZHQtPkZpcm13YXJlQ3RybDsNCj4gPiA+ID4+ICsgIH0gZWxz ZSB7DQo+ID4gPiA+PiArICAgIENvcHlNZW0gKCZEYXRhNjQsICZGYWR0LT5YRmlybXdhcmVDdHJs LCBzaXplb2YoVUlOVDY0KSk7DQo+ID4gPiA+PiArICAgIGlmIChEYXRhNjQgIT0gMCkgew0KPiA+ ID4gPj4gKyAgICAgIEZhY3MgPSAoRUZJX0FDUElfMl8wX0ZJUk1XQVJFX0FDUElfQ09OVFJPTF9T VFJVQ1RVUkUNCj4gPiA+ID4+ICopKFVJTlROKURhdGE2NDsNCj4gPiA+ID4+ICsgICAgfSBlbHNl IHsNCj4gPiA+ID4+ICsgICAgICBGYWNzID0gKEVGSV9BQ1BJXzJfMF9GSVJNV0FSRV9BQ1BJX0NP TlRST0xfU1RSVUNUVVJFDQo+ID4gPiA+PiAqKShVSU5UTilGYWR0LT5GaXJtd2FyZUN0cmw7DQo+ ID4gPiA+PiArICAgIH0NCj4gPiA+ID4+ICsgIH0NCj4gPiA+ID4+ICsgIHJldHVybiBGYWNzOw0K PiA+ID4gPj4gK30NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsvKioNCj4gPiA+ID4+ICsgIFRvIGZp bmQgQUNQSSB0YWJsZSBpbiBBQ1BJIENvbmZpZ3VyYXRpb25UYWJsZS4NCj4gPiA+ID4+ICsNCj4g PiA+ID4+ICsgIEBwYXJhbSBBY3BpVGFibGVHdWlkICBUaGUgZ3VpZCB1c2VkIHRvIGZpbmQgQUNQ SQ0KPiA+IENvbmZpZ3VyYXRpb25UYWJsZS4NCj4gPiA+ID4+ICsgIEBwYXJhbSBTaWduYXR1cmUg ICAgICBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIEByZXR1 cm4gQUNQSSB0YWJsZSBvciBOVUxMIGlmIG5vdCBmb3VuZC4NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ ICsqKi8NCj4gPiA+ID4+ICtWT0lEICAqDQo+ID4gPiA+PiArRmluZEFjcGlUYWJsZUluQWNwaUNv bmZpZ3VyYXRpb25UYWJsZSAoDQo+ID4gPiA+PiArICBJTiBFRklfR1VJRCAgICpBY3BpR3VpZCwN Cj4gPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgU2lnbmF0dXJlDQo+ID4gPiA+PiArDQo+ID4gPiA+ PiArICApDQo+ID4gPiA+PiArew0KPiA+ID4gPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4+ICsgIFZPSUQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVGFibGU7DQo+ID4gPiA+PiArICBFRklf QUNQSV8yXzBfUk9PVF9TWVNURU1fREVTQ1JJUFRJT05fUE9JTlRFUiAgKlJzZHA7DQo+ID4gPiA+ PiArICBFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIgICAgICAgICAgICAgICAgICAgKlJzZHQ7 DQo+ID4gPiA+PiArICBFRklfQUNQSV9ERVNDUklQVElPTl9IRUFERVIgICAgICAgICAgICAgICAg ICAgKlhzZHQ7DQo+ID4gPiA+PiArICBFRklfQUNQSV8yXzBfRklYRURfQUNQSV9ERVNDUklQVElP Tl9UQUJMRSAgICAgKkZhZHQ7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBSc2RwID0gTlVMTDsN Cj4gPiA+ID4+ICsgIC8vDQo+ID4gPiA+PiArICAvLyBGaW5kIEFDUEkgQ29uZmlndXJhdGlvblRh YmxlIChSU0RfUFRSKSAgLy8gIFN0YXR1cyA9DQo+ID4gPiA+PiArIEVmaUdldFN5c3RlbUNvbmZp Z3VyYXRpb25UYWJsZShBY3BpR3VpZCwgKFZPSUQgKiopJlJzZHApOyAgaWYNCj4gPiA+ID4+ICsg KEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoUnNkcCA9PSBOVUxMKSkgew0KPiA+ID4gPj4gKyAgICBy ZXR1cm4gTlVMTDsNCj4gPiA+ID4+ICsgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIFRhYmxl ID0gTlVMTDsNCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIC8vDQo+ID4gPiA+PiArICAvLyBTZWFy Y2ggWFNEVA0KPiA+ID4gPj4gKyAgLy8NCj4gPiA+ID4+ICsgIGlmIChSc2RwLT5SZXZpc2lvbiA+ PQ0KPiA+ID4gPj4gRUZJX0FDUElfMl8wX1JPT1RfU1lTVEVNX0RFU0NSSVBUSU9OX1BPSU5URVJf UkVWSVNJT04pIHsNCj4gPiA+ID4+ICsgICAgWHNkdCA9IChFRklfQUNQSV9ERVNDUklQVElPTl9I RUFERVIgKikoVUlOVE4pDQo+ID4gPiBSc2RwLT5Yc2R0QWRkcmVzczsNCj4gPiA+ID4+ICsgICAg aWYgKFNpZ25hdHVyZSA9PQ0KPiA+ID4gPj4gRUZJX0FDUElfMl8wX0ZJUk1XQVJFX0FDUElfQ09O VFJPTF9TVFJVQ1RVUkVfU0lHTkFUVVJFKSB7DQo+ID4gPiA+PiArICAgICAgLy8NCj4gPiA+ID4+ ICsgICAgICAvLyBJdCBpcyB0byBmaW5kIEZBQ1MgQUNQSSB0YWJsZSwNCj4gPiA+ID4+ICsgICAg ICAvLyBuZWVkIGZpbmQgRkFEVCBmaXJzdC4NCj4gPiA+ID4+ICsgICAgICAvLw0KPiA+ID4gPj4g KyAgICAgIEZhZHQgPSBTY2FuVGFibGVJblhTRFQgKFhzZHQsDQo+ID4gPiA+PiBFRklfQUNQSV8y XzBfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUpOw0KPiA+ID4gPj4gKyAg ICAgIFRhYmxlID0gRmluZEFjcGlGYWNzRnJvbUZhZHQgKEZhZHQpOw0KPiA+ID4gPj4gKyAgICB9 IGVsc2Ugew0KPiA+ID4gPj4gKyAgICAgIFRhYmxlID0gU2NhblRhYmxlSW5YU0RUIChYc2R0LCBT aWduYXR1cmUpOw0KPiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ ID4gPiA+PiArICBpZiAoVGFibGUgIT0gTlVMTCkgew0KPiA+ID4gPj4gKyAgICByZXR1cm4gVGFi bGU7DQo+ID4gPiA+PiArICB9DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICAvLw0KPiA+ID4gPj4g KyAgLy8gU2VhcmNoIFJTRFQNCj4gPiA+ID4+ICsgIC8vDQo+ID4gPiA+PiArICBSc2R0ID0gKEVG SV9BQ1BJX0RFU0NSSVBUSU9OX0hFQURFUiAqKShVSU5UTikgUnNkcC0NCj4gPiA+UnNkdEFkZHJl c3M7DQo+ID4gPiA+PiArIGlmIChTaWduYXR1cmUgPT0NCj4gPiA+ID4+IEVGSV9BQ1BJXzJfMF9G SVJNV0FSRV9BQ1BJX0NPTlRST0xfU1RSVUNUVVJFX1NJR05BVFVSRSkgew0KPiA+ID4gPj4gKyAg ICAvLw0KPiA+ID4gPj4gKyAgICAvLyBJdCBpcyB0byBmaW5kIEZBQ1MgQUNQSSB0YWJsZSwNCj4g PiA+ID4+ICsgICAgLy8gbmVlZCBmaW5kIEZBRFQgZmlyc3QuDQo+ID4gPiA+PiArICAgIC8vDQo+ ID4gPiA+PiArICAgIEZhZHQgPSBTY2FuVGFibGVJblJTRFQgKFJzZHQsDQo+ID4gPiA+PiBFRklf QUNQSV8yXzBfRklYRURfQUNQSV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUpOw0KPiA+ID4g Pj4gKyAgICBUYWJsZSA9IEZpbmRBY3BpRmFjc0Zyb21GYWR0IChGYWR0KTsgIH0gZWxzZSB7DQo+ ID4gPiA+PiArICAgIFRhYmxlID0gU2NhblRhYmxlSW5SU0RUIChSc2R0LCBTaWduYXR1cmUpOyAg fQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gKyAgcmV0dXJuIFRhYmxlOw0KPiA+ID4gPj4gK30NCj4g PiA+ID4+ICsNCj4gPiA+ID4+ICsvKioNCj4gPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gZmluZHMg QUNQSSB0YWJsZSBieSBzaWduYXR1cmUuDQo+ID4gPiA+PiArICBJdCB3aWxsIGZpbmQgdGhlIHRh YmxlIGluIGdFZmlBY3BpMjBUYWJsZUd1aWQgc3lzdGVtDQo+ID4gPiA+PiArY29uZmlndXJhdGlv biB0YWJsZQ0KPiA+ID4gZmlyc3QsDQo+ID4gPiA+PiArICBhbmQgdGhlbiBnRWZpQWNwaTEwVGFi bGVHdWlkIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlLg0KPiA+ID4gPj4gKw0KPiA+ID4gPj4g KyAgQHBhcmFtIFNpZ25hdHVyZSAgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4gPiA+PiArDQo+ ID4gPiA+PiArICBAcmV0dXJuIEFDUEkgdGFibGUgb3IgTlVMTCBpZiBub3QgZm91bmQuDQo+ID4g PiA+PiArDQo+ID4gPiA+PiArKiovDQo+ID4gPiA+PiArVk9JRCAqDQo+ID4gPiA+PiArRUZJQVBJ DQo+ID4gPiA+PiArRWZpRmluZEFjcGlUYWJsZUJ5U2lnbmF0dXJlICgNCj4gPiA+ID4+ICsgIElO IFVJTlQzMiAgICAgU2lnbmF0dXJlDQo+ID4gPiA+PiArICApDQo+ID4gPiA+PiArew0KPiA+ID4g Pj4gKyAgVk9JRCAgICAgICAgICAqVGFibGU7DQo+ID4gPiA+PiArDQo+ID4gPiA+PiArICBUYWJs ZSA9IEZpbmRBY3BpVGFibGVJbkFjcGlDb25maWd1cmF0aW9uVGFibGUNCj4gPiA+ID4+ICsgKCZn RWZpQWNwaTIwVGFibGVHdWlkLA0KPiA+ID4gPj4gU2lnbmF0dXJlKTsNCj4gPiA+ID4+ICsgIGlm IChUYWJsZSAhPSBOVUxMKSB7DQo+ID4gPiA+PiArICAgIHJldHVybiBUYWJsZTsNCj4gPiA+ID4+ ICsgIH0NCj4gPiA+ID4+ICsNCj4gPiA+ID4+ICsgIHJldHVybiBGaW5kQWNwaVRhYmxlSW5BY3Bp Q29uZmlndXJhdGlvblRhYmxlDQo+ID4gPiA+PiArICgmZ0VmaUFjcGkxMFRhYmxlR3VpZCwNCj4g PiA+ID4+IFNpZ25hdHVyZSk7DQo+ID4gPiA+PiArfQ0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gZGlm ZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvVWVmaUxpYi5pbmYNCj4gPiA+ID4+IGIv TWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmluZg0KPiA+ID4gPj4gaW5kZXggYTZjNzM5 ZWYzZDZkLi5hZWEyMGZlNjcxNTMgMTAwNjQ0DQo+ID4gPiA+PiAtLS0gYS9NZGVQa2cvTGlicmFy eS9VZWZpTGliL1VlZmlMaWIuaW5mDQo+ID4gPiA+PiArKysgYi9NZGVQa2cvTGlicmFyeS9VZWZp TGliL1VlZmlMaWIuaW5mDQo+ID4gPiA+PiBAQCAtNDEsNiArNDEsNyBAQCBbU291cmNlc10NCj4g PiA+ID4+ICBDb25zb2xlLmMNCj4gPiA+ID4+ICBVZWZpTGliLmMNCj4gPiA+ID4+ICBVZWZpTGli SW50ZXJuYWwuaA0KPiA+ID4gPj4gKyAgQWNwaS5jDQo+ID4gPiA+Pg0KPiA+ID4gPj4NCj4gPiA+ ID4+IFtQYWNrYWdlc10NCj4gPiA+ID4+IEBAIC02Miw2ICs2Myw4IEBAIFtHdWlkc10NCj4gPiA+ ID4+ICBnRWZpRXZlbnRSZWFkeVRvQm9vdEd1aWQgICAgICAgICAgICAgICAgICAgICAgIyMNCj4g PiA+ID4+IFNPTUVUSU1FU19DT05TVU1FUyAgIyMgRXZlbnQNCj4gPiA+ID4+ICBnRWZpRXZlbnRM ZWdhY3lCb290R3VpZCAgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gPiA+ID4+IFNPTUVUSU1F U19DT05TVU1FUyAgIyMgRXZlbnQNCj4gPiA+ID4+ICBnRWZpR2xvYmFsVmFyaWFibGVHdWlkICAg ICAgICAgICAgICAgICAgICAgICAgIyMNCj4gPiA+ID4+IFNPTUVUSU1FU19DT05TVU1FUyAgIyMg VmFyaWFibGUNCj4gPiA+ID4+ICsgIGdFZmlBY3BpMjBUYWJsZUd1aWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIw0KPiA+ID4gPj4gU09NRVRJTUVTX0NPTlNVTUVTICAjIyBTeXN0ZW1UYWJs ZQ0KPiA+ID4gPj4gKyAgZ0VmaUFjcGkxMFRhYmxlR3VpZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICMjDQo+ID4gPiA+PiBTT01FVElNRVNfQ09OU1VNRVMgICMjIFN5c3RlbVRhYmxlDQo+ID4g PiA+Pg0KPiA+ID4gPj4gW1Byb3RvY29sc10NCj4gPiA+ID4+ICBnRWZpRHJpdmVyQmluZGluZ1By b3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAjIw0KPiA+ID4gPj4gU09NRVRJTUVTX1BST0RV Q0VTDQo+ID4gPiA+PiAtLQ0KPiA+ID4gPj4gMi43LjAud2luZG93cy4xDQo+ID4gPiA+Pg0KPiA+ ID4gPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g PiA+ID4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gPiA+PiBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KPiA+ID4gPj4gaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9l ZGsyLWRldmVsDQo+ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQo+ID4gPiA+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gPiA+IGVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiA+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4v bGlzdGluZm8vZWRrMi1kZXZlbA0K