From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web11.656.1573870661004463637 for ; Fri, 15 Nov 2019 18:17:41 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: jian.j.wang@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2019 18:17:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,310,1569308400"; d="scan'208";a="214894242" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga001.fm.intel.com with ESMTP; 15 Nov 2019 18:17:39 -0800 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.439.0; Fri, 15 Nov 2019 18:17:39 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:17:38 -0800 Received: from shsmsx107.ccr.corp.intel.com ([169.254.9.63]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.127]) with mapi id 14.03.0439.000; Sat, 16 Nov 2019 10:17:37 +0800 From: "Wang, Jian J" To: "devel@edk2.groups.io" , "ard.biesheuvel@linaro.org" , "Kinney, Michael D" CC: "Yao, Jiewen" , "Zhang, Chao B" , "Gao, Liming" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH 05/11] SecurityPkg/RngLibRdSeed: add an instance of RngLib to make use rdseed Thread-Topic: [edk2-devel] [PATCH 05/11] SecurityPkg/RngLibRdSeed: add an instance of RngLib to make use rdseed Thread-Index: AQHVmpHEJ0tPiqvRO0a1mPBTgII9rqeKET0QgAACvwCAAaHqAIAAQRIAgAAD1YCAARFNMA== Date: Sat, 16 Nov 2019 02:17:37 +0000 Message-ID: References: <20191114021743.3876-1-jian.j.wang@intel.com> <20191114021743.3876-6-jian.j.wang@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODNjNTAwN2ItZTEzZS00MmZmLTk0OWUtMmY5ZGJjMzIwMzJlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidlhPZzF2VjQ3UVBmNytJTFEyc1wvZzlpMTJZWmROXC9EYnIybkl5QmUwNXlib0pLdmRwTnFvNEdnM3oxWUJIdlc3In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: jian.j.wang@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIu Z3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEFyZA0KPiBCaWVz aGV1dmVsDQo+IFNlbnQ6IFNhdHVyZGF5LCBOb3ZlbWJlciAxNiwgMjAxOSAxOjM1IEFNDQo+IFRv OiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBl ZGsyLWRldmVsLWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+OyBXYW5nLCBKaWFuIEoN Cj4gPGppYW4uai53YW5nQGludGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVs LmNvbT47IFpoYW5nLCBDaGFvIEINCj4gPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+OyBHYW8sIExp bWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBOaSwgUmF5DQo+IDxyYXkubmlAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCAwNS8xMV0gU2VjdXJpdHlQa2cv Um5nTGliUmRTZWVkOiBhZGQgYW4NCj4gaW5zdGFuY2Ugb2YgUm5nTGliIHRvIG1ha2UgdXNlIHJk c2VlZA0KPiANCj4gT24gRnJpLCAxNSBOb3YgMjAxOSBhdCAxNzoyMSwgS2lubmV5LCBNaWNoYWVs IEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPiB3cm90ZToNCj4gPg0KPiA+IEhpIEFy ZCwNCj4gPg0KPiA+IFdoYXQgd291bGQgeW91IHJlY29tbWVuZCBhcyB3YXkgdG8gcHJvdmlkZSB0 aGVzZSBkaWZmZXJlbnQNCj4gPiB0eXBlcyBvZiBzZXJ2aWNlcz8gIFNvbWUgbW9yZSBuZXcgbGli IGNsYXNzZXMgYW5kIGluc3RhbmNlcz8NCj4gPg0KPiANCj4gQmFzaWNhbGx5LCB5ZXMuDQo+IA0K PiBSbmdMaWIgY291bGQgYmUgYmFja2VkIGJ5IFJEUkFORCwgb3IgYnkgYSBmdWxseSBnZW5lcmlj IERSQkcNCj4gaW1wbGVtZW50YXRpb24gd2hpY2ggZGVwZW5kcyBvbiBFbnRyb3B5U291cmNlTGli Lg0KPiANCg0KSSdtIG9rIHRvIGludHJvZHVjZSBhIEVudHJvcHlTb3VyY2VMaWIuIEJ1dCB0aGF0 IG1lYW5zIE9wZW5zc0xpYiBuZWVkcw0KdG8gZGVwZW5kIG9uIHRoaXMgb25lIGluc3RlYWQgb2Yg Um5nTGliIChvciBib3RoKSwgcmlnaHQ/IA0KDQo+IEVudHJvcHlTb3VyY2VMaWIgY291bGQgYmUg YmFja2VkIGJ5IFJEU0VFRCwgYnkgYW5vdGhlciBhcmNoLXNwZWNpZmljDQo+IG1ldGhvZCwgb3Ig W2Fzc3VtaW5nIHdlIGNhbiBwcm92ZSBpdCB3b3Jrc10gYSBnZW5lcmljIGppdHRlciBlbnRyb3B5 DQo+IGxpYnJhcnkuDQo+IA0KPiBCbG9ja0VuY3J5cHRpb25JdkxpYiBjb3VsZCBiZSBpbXBsZW1l bnRlZCB1c2luZyBhIGNvdW50ZXIgYW5kIGEgQ1JDDQo+IGxpYnJhcnksIG9yIGJhY2tlZCBieSBS bmdMaWIsIGRlcGVuZGluZyBvbiB0aGUgZXhlY3V0aW9uIGNvbnRleHQuDQo+IA0KPiANCj4gRm9y IERYRSBwaGFzZSwgSSB0aGluayBpdCB3b3VsZCBhY3R1YWxseSBtYWtlIHNlbnNlIHRvIGhhdmUg YSBzaW5nbGUNCj4gZHJpdmVyIGNvbnN1bWluZyBFbnRyb3B5U291cmNlTGliIGFuZCBpbXBsZW1l bnRpbmcgdGhlIERSQkcsIGFuZCB0aGVuDQo+IGV4cG9zZSB0aGF0IHZpYSBhIEVESzIgc3BlY2lm aWMgcHJvdG9jb2wgdGhhdCBpcyBjb25zdW1lZCBieQ0KPiBEeGVSbmdMaWIuDQo+IA0KPiBGb3Ig dGhlIHg4NiBpbXBsZW1lbnRhdGlvbiBvZiBFRklfUk5HX1BST1RPQ09MLCB3aGljaCBjdXJyZW50 bHkgaGFzDQo+IHNvbWUgZHJlYWRmdWwgY29kZSB0byBoYXJ2ZXN0IGVudHJvcHkgZnJvbSBSRFJB TkQsIHdlIGNvdWxkIGFjdHVhbGx5DQo+IGluc3RhbnRpYXRlIGluIGRpZmZlcmVudCB3YXlzIChh bmQgZXhwb3NlIHZhcnlpbmcgc3Vic2V0cyBvZiB0aGUNCj4gR1VJRGVkIERSQkcgZmxhdm91cnMp IGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGhhcyBhIHdvcmtpbmcgUm5nTGliDQo+IG9ubHksIG9y IGhhcyBhIHdvcmtpbmcgRW50cm9weVNvdXJjZUxpYiBhcyB3ZWxsLg0KPiANCg0KSSB0aGluayB0 aG9zZSBjb2RlIGlzIHVzZWQgdG8gZG8gcmUtc2VlZGluZyBvZiBSRFJBTkQsIHdoaWNoIGlzIHJl cXVpcmVkDQpieSAiSW50ZWwocik2NCBhbmQgSUEtMzIgYXJjaGl0ZWN0dXJlcyBzb2Z0d2FyZSBk ZXZlbG9wZXIncyBtYW51YWwiLiBGb3INCnByb2Nlc3NvcnMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCBS RFNFRUQsIHRoaXMgd2F5IGNhbiBnZXQgYmV0dGVyIHJhbmRvbQ0KZW50cm9weSB0aGFuIFJEUkFO RC4gSWYgdGhlIHByb2Nlc3NvciBpbnRlcm5hbCByZS1zZWVkaW5nIHByb2NlZHVyZSBpcw0KdGhl IHNhbWUgYXMgUkRTRUVELCB0aGUgcmVzdWx0IHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHRob3Nl IGdvdCBmcm9tDQpSRFNFRUQgZGlyZWN0bHksIGJ1dCBsZXNzIGVmZmljaWVudCwgSSBndWVzcy4N Cg0KSWYgd2UgaW50cm9kdWNlIEVudHJvcHlTb3VyY2VMaWIsIGZvciBJQTMyL1g2NCBhcmNoLCBJ IHRoaW5rIHdlIGNhbiBoYXZlDQp0d28gdmVyc2lvbiBvZiBpbnN0YW5jZXMgb2YgaXQ6IG9uZSBi YWNrZWQgYnkgUkRTRUVELCBhbmQgb25lIGJhY2tlZA0KYnkgUkRSQU5EIHJlLXNlZWRpbmcgcHJv Y2VkdXJlLg0KDQpGb3IgYXJjaCBuZXV0cmFsIGxpYnJhcmllcywgYXMgTGFzemxvIG1lbnRpb25l ZCBpbiBhbm90aGVyIHBhdGNoIGVtYWlsLA0Kd2hhdCdzIHlvdXIgc3VnZ2VzdGlvbj8gT25lIGlt cGxlbWVudGVkIHdpdGggcmVtb3ZlZCBjb2RlIGZyb20NCnJhbmRfcG9vbF94eHguYyBvciBvbmUg aW1wbGVtZW50ZWQgaW4gY3B1IGppdHRlciB3YXk/DQoNClRoYW5rcywNCkppYW4NCj4gDQo+IA0K PiANCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBBcmQgQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+IFNlbnQ6IEZyaWRheSwg Tm92ZW1iZXIgMTUsIDIwMTkgNToyOSBBTQ0KPiA+ID4gVG86IGVkazItZGV2ZWwtZ3JvdXBzLWlv IDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IFdhbmcsDQo+ID4gPiBKaWFuIEogPGppYW4uai53YW5n QGludGVsLmNvbT4NCj4gPiA+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+Ow0KPiA+ID4gWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsg WmhhbmcsIENoYW8gQg0KPiA+ID4gPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWlu Zw0KPiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNv bT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIDA1LzExXQ0KPiA+ID4g U2VjdXJpdHlQa2cvUm5nTGliUmRTZWVkOiBhZGQgYW4gaW5zdGFuY2Ugb2YgUm5nTGliIHRvDQo+ ID4gPiBtYWtlIHVzZSByZHNlZWQNCj4gPiA+DQo+ID4gPiBPbiBUaHUsIDE0IE5vdiAyMDE5IGF0 IDA0OjM5LCBXYW5nLCBKaWFuIEoNCj4gPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+IHdyb3Rl Og0KPiA+ID4gPg0KPiA+ID4gPiBNaWtlLA0KPiA+ID4gPg0KPiA+ID4gPiBJIGZpZ3VyZWQgdGhh dCByZHNlZWQgaXMgb25seSBuZWVkZWQgaW4gY2FzZXMNCj4gPiA+IGRlbWFuZGluZyBoaWdoZXN0 DQo+ID4gPiA+IGVudHJvcHksIGxpa2Ugc2VlZGluZyBvdGhlciBwc2V1ZG8tUk5HLiBJdCdzIG5v dCBmb3INCj4gPiA+IGdlbmVyYWwgcHVycG9zZSByYW5kb21uZXNzLg0KPiA+ID4gPiBUaGVuIEkg cHV0IGl0IGluIFNlY3VyaXR5UGtnLiBCdXQgSSdtIG9rIHRvIHB1dCBpdA0KPiA+ID4gaW50byBN ZGVQa2cuIEkgaGF2ZQ0KPiA+ID4gPiBubyBzdHJvbmcgb3BpbmlvbiBmb3IgdGhpcy4NCj4gPiA+ ID4NCj4gPiA+DQo+ID4gPiBJIHRoaW5rIGl0IGlzIGEgYmFkIGlkZWEgdG8gdXNlIHRoZSBzYW1l IGxpYnJhcnkNCj4gPiA+IGFic3RyYWN0aW9uIFtSbmdMaWJdIGZvciBleHBvc2luZw0KPiA+ID4g YSkgZW50cm9weSBzb3VyY2VzIHVzZWQgZm9yIHNlZWRpbmcgZGV0ZXJtaW5pc3RpYw0KPiA+ID4g cmFuZG9tIG51bWJlciBnZW5lcmF0b3JzDQo+ID4gPiBiKSBkZXRlcm1pbmlzdGljIHJhbmRvbSBu dW1iZXIgZ2VuZXJhdG9ycyB0aGVtc2VsdmVzDQo+ID4gPiBjKSBsb3cgZW50cm9weSBwc2V1ZG8t Uk5HcyBiYXNlZCBvbiB0aW1lc3RhbXAgY291bnRlcnMsDQo+ID4gPiBldGMNCj4gPiA+DQo+ID4g PiBnaXZlbiB0aGF0IHRoZSB1c2UgY2FzZXMgZG9uJ3QgdXN1YWxseSBvdmVybGFwLiBJLmUuLA0K PiA+ID4gb25seSBhIERSQkcgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgYSksIGFuZCBleHBvcnRz DQo+ID4gPiBSbmdMaWIgaXRzZWxmIGJhc2VkIG9uIHRoYXQuDQo+ID4gPiBVc2UgY2FzZXMgdGhh dCBjYW4gdG9sZXJhdGUgYykgW2xpa2UgSVYgZ2VuZXJhdG9ycyBmb3INCj4gPiA+IGJsb2NrIGVu Y3J5cHRpb25dIGFyZSB0eXBpY2FsbHkgZGlzam9pbnQgZnJvbSBvbmVzIHRoYXQNCj4gPiA+IHJl cXVpcmUgYikgW2ZvciBrZXkgZ2VuZXJhdGlvbl0uIFRoZSBpZGVhIHRoYXQgeW91IGNhbg0KPiA+ ID4gdXNlIFJuZ0xpYiBmb3IgYWxsIG9mIHRoZW0sIGFuZCBwbHVnIGFyYml0cmFyeQ0KPiA+ID4g aW5zdGFudGlhdGlvbnMgb2YgaXQgaW50byBlYWNoIGlzIG1pc2d1aWRlZCBJTUhPLg0KPiA+ID4N Cj4gPiA+DQo+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+ID4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQNCj4gPiA+IDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMTQsIDIwMTkgMTI6 MjUgUE0NCj4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFdhbmcsIEppYW4gSg0K PiA+ID4gPGppYW4uai53YW5nQGludGVsLmNvbT47DQo+ID4gPiA+ID4gS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gPiA+IENjOiBZYW8sIEppZXdl biA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBaaGFuZywgQ2hhbw0KPiA+ID4gQg0KPiA+ID4gPiA+ IDxjaGFvLmIuemhhbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPiA+IDxsaW1pbmcuZ2Fv QGludGVsLmNvbT47IE5pLA0KPiA+ID4gPiA+IFJheSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+ ID4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCAwNS8xMV0NCj4gPiA+IFNlY3Vy aXR5UGtnL1JuZ0xpYlJkU2VlZDoNCj4gPiA+ID4gPiBhZGQgYW4gaW5zdGFuY2Ugb2YgUm5nTGli IHRvIG1ha2UgdXNlIHJkc2VlZA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSmlhbiwNCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IFdoeSBpcyB0aGlzIGxpYiBpbnN0YW5jZSBpbiB0aGUgU2VjdXJpdHlQa2c/ ICBJdA0KPiA+ID4gb25seSBkZXBlbmRzIG9uIHRoZQ0KPiA+ID4gPiA+IE1kZVBrZy4gIENhbid0 IG5vbiBzZWN1cml0eSBmZWF0dXJlIHJlbGF0ZWQgbW9kdWxlcw0KPiA+ID4gdGhhdCB3YW50IHRv IGENCj4gPiA+ID4gPiByYW5kb20gbnVtYmVyIHVzZSB0aGlzIGxpYiB3aXRob3V0IHVzaW5nIHRo ZQ0KPiA+ID4gU2VjdXJpdHlQa2c/ICBDb3VsZA0KPiA+ID4gPiA+IHRoaXMgbGliIGluc3RhbmNl IGJlIGFkZGVkIHRvIE1kZVBrZz8NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IE1pa2UNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxk ZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4gPiA+IE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+ID4gV2Fu ZywgSmlhbiBKDQo+ID4gPiA+ID4gPiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDEzLCAyMDE5 IDY6MTggUE0NCj4gPiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gPiA+ ID4gQ2M6IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFpoYW5nLA0KPiA+ID4g Q2hhbyBCDQo+ID4gPiA+ID4gPiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbT47IEtpbm5leSwgTWlj aGFlbCBEDQo+ID4gPiA+ID4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExp bWluZw0KPiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiA+ID4gPiA+IE5pLCBSYXkg PHJheS5uaUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BB VENIIDA1LzExXQ0KPiA+ID4gPiA+ID4gU2VjdXJpdHlQa2cvUm5nTGliUmRTZWVkOiBhZGQgYW4g aW5zdGFuY2Ugb2YNCj4gPiA+IFJuZ0xpYiB0byBtYWtlIHVzZQ0KPiA+ID4gPiA+ID4gcmRzZWVk DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhpcyB2ZXJzaW9uIG9mIFJuZ0xpYiBtYWtlcyB1 c2Ugb2YgQXNtUmRTZWVkIHRvDQo+ID4gPiBnZXQNCj4gPiA+ID4gPiA+IG5vbi1kZXRlcm1pbmlz dGljIHJhbmRvbSBudW1iZXIsIHdoaWNoIGNhbiBiZQ0KPiA+ID4gdXNlZCBmb3Igc2VlZGluZw0K PiA+ID4gPiA+ID4gb3RoZXIgc29mdHdhcmUgRFJORyBsaWtlIHJhbmQgaW50ZXJmYWNlIGluDQo+ ID4gPiBvcGVuc3NsLiBJdCBjYW4gYmUgdXNlZA0KPiA+ID4gPiA+ID4gb25seSBvbiBJQTMyL1g2 NCBwcm9jZXNzb3JzIHdoaWNoIHN1cHBvcnRzIHJkc2VlZA0KPiA+ID4gaW5zdHJ1Y3Rpb24uDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gUmVmOg0KPiA+ID4gPiA+ID4NCj4gPiA+IGh0dHBzOi8v YnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3MQ0KPiA+ID4gPiA+ID4g Q2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gQ2M6IENo YW8gWmhhbmcgPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBDYzogTWljaGFl bCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBDYzog TGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBDYzogUmF5IE5p IDxyYXkubmlAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSmlhbiBKIFdh bmcNCj4gPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ ID4gPiA+ICAuLi4vUm5nTGliUmRTZWVkL1JuZ0xpYlJkU2VlZC5pbmYgICAgICAgICAgICAgfA0K PiA+ID4gMzcNCj4gPiA+ID4gPiA+ICsrKysNCj4gPiA+ID4gPiA+ICAuLi4vUm5nTGliUmRTZWVk L1JuZ0xpYlJkU2VlZC51bmkgICAgICAgICAgICAgfA0KPiA+ID4gMTggKysNCj4gPiA+ID4gPiA+ ICAuLi4vUm5nTGliUmRTZWVkL1JuZ1JkU2VlZC5jICAgICAgICAgICAgICAgICAgfA0KPiA+ID4g MTg5DQo+ID4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gPiA+ICAzIGZpbGVz IGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspICBjcmVhdGUgbW9kZQ0KPiA+ID4gMTAwNjQ0DQo+ ID4gPiA+ID4gPg0KPiA+ID4gU2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0xp YlJkU2VlZC9SbmdMaWJSZA0KPiA+ID4gPiA+ID4gU2VlZC5pbmYNCj4gPiA+ID4gPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+DQo+ID4gPiBTZWN1cml0eVBrZy9SYW5kb21OdW1i ZXJHZW5lcmF0b3IvUm5nTGliUmRTZWVkL1JuZ0xpYlJkDQo+ID4gPiA+ID4gPiBTZWVkLnVuaQ0K PiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4NCj4gPiA+IFNlY3Vy aXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdMaWJSZFNlZWQvUm5nUmRTZWUNCj4gPiA+ ID4gPiA+IGQuYw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4g PiA+DQo+ID4gPiBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdMaWJSZFNl ZWQvUm5nTGliDQo+ID4gPiA+ID4gPiBSZFNlZWQuaW5mDQo+ID4gPiA+ID4gPg0KPiA+ID4gYi9T ZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nTGliUmRTZWVkL1JuZ0xpYg0KPiA+ ID4gPiA+ID4gUmRTZWVkLmluZg0KPiA+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjgxNjI0MDg3NzUNCj4gPiA+ID4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ID4gPiA+ICsrKw0KPiA+ID4gPiA+ID4NCj4gPiA+IGIvU2VjdXJpdHlQ a2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0xpYlJkU2VlZC9SbmdMaWINCj4gPiA+ID4gPiA+ IFJkU2VlZC5pbmYNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMzcgQEANCj4gPiA+ID4gPiA+ICsj IyBAZmlsZQ0KPiA+ID4gPiA+ID4gKyMgIEluc3RhbmNlIG9mIFJORyAoUmFuZG9tIE51bWJlciBH ZW5lcmF0b3IpDQo+ID4gPiBMaWJyYXJ5Lg0KPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ICsj ICBSbmcgUmRTZWVkIExpYnJhcnkgdGhhdCB1c2VzIENQVSBSZFNlZWQNCj4gPiA+IGluc3RydWN0 aW9uDQo+ID4gPiA+ID4gPiBhY2Nlc3MgdG8NCj4gPiA+ID4gPiA+ICtwcm92aWRlICMgIG5vbi1k ZXRlcm1pbmlzdGljIHJhbmRvbSBudW1iZXIgd2hpY2gNCj4gPiA+IGNhbg0KPiA+ID4gPiA+ID4g YmUgdXNlZCBhcyBzZWVkDQo+ID4gPiA+ID4gPiArZm9yIG90aGVyICMgIHNvZnR3YXJlIGRldGVy bWluaXN0aWMgUk5Hcy4NCj4gPiA+ID4gPiA+ICsjDQo+ID4gPiA+ID4gPiArIyAgQ29weXJpZ2h0 IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+ID4gPiByaWdodHMNCj4gPiA+ID4g PiA+IHJlc2VydmVkLjxCUj4gIyAjDQo+ID4gPiA+ID4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgIyAjDQo+ID4gPiAjIw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK1tEZWZpbmVzXQ0KPiA+ID4gPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAg ICAgICAgICAgID0gMHgwMDAxMDAyOQ0KPiA+ID4gPiA+ID4gKyAgQkFTRV9OQU1FICAgICAgICAg ICAgICAgICAgICAgID0gUm5nTGliUmRTZWVkDQo+ID4gPiA+ID4gPiArICBNT0RVTEVfVU5JX0ZJ TEUgICAgICAgICAgICAgICAgPQ0KPiA+ID4gUm5nTGliUmRTZWVkLnVuaQ0KPiA+ID4gPiA+ID4g KyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gOEI2MTNCMkUtDQo+ID4gPiBCOTQ0 LTQwRjktDQo+ID4gPiA+ID4gPiBCOTc5LTFCNjBEN0NBQTczQw0KPiA+ID4gPiA+ID4gKyAgTU9E VUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ID4gPiA+ID4gKyAgVkVSU0lP Tl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gPiA+ID4gPiArICBMSUJSQVJZX0NM QVNTICAgICAgICAgICAgICAgICAgPSBSbmdMaWINCj4gPiA+ID4gPiA+ICsgIENPTlNUUlVDVE9S ICAgICAgICAgICAgICAgICAgICA9DQo+ID4gPiA+ID4gPiBSbmdMaWJSZFNlZWRDb25zdHJ1Y3Rv cg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyMNCj4gPiA+ID4gPiA+ICsjICBWQUxJRF9B UkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0DQo+ID4gPiA+ID4gPiArIw0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gK1tTb3VyY2VzLklhMzIsIFNvdXJjZXMuWDY0XQ0KPiA+ID4g PiA+ID4gKyAgUm5nUmRTZWVkLmMNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICtbUGFja2Fn ZXNdDQo+ID4gPiA+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gPiA+ICsgIEJhc2VMaWINCj4gPiA+ ID4gPiA+ICsgIERlYnVnTGliDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ID4gPg0K PiA+ID4gYS9TZWN1cml0eVBrZy9SYW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nTGliUmRTZWVkL1Ju Z0xpYg0KPiA+ID4gPiA+ID4gUmRTZWVkLnVuaQ0KPiA+ID4gPiA+ID4NCj4gPiA+IGIvU2VjdXJp dHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0xpYlJkU2VlZC9SbmdMaWINCj4gPiA+ID4g PiA+IFJkU2VlZC51bmkNCj4gPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ ID4gPiBpbmRleCAwMDAwMDAwMDAwLi4wNTFhMzAxOWJjDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gPiA+ID4gPiArKysNCj4gPiA+ID4gPiA+DQo+ID4gPiBiL1NlY3VyaXR5UGtnL1Jh bmRvbU51bWJlckdlbmVyYXRvci9SbmdMaWJSZFNlZWQvUm5nTGliDQo+ID4gPiA+ID4gPiBSZFNl ZWQudW5pDQo+ID4gPiA+ID4gPiBAQCAtMCwwICsxLDE4IEBADQo+ID4gPiA+ID4gPiArLy8gLyoq IEBmaWxlDQo+ID4gPiA+ID4gPiArLy8gSW5zdGFuY2Ugb2YgUk5HIChSYW5kb20gTnVtYmVyIEdl bmVyYXRvcikNCj4gPiA+IExpYnJhcnkuDQo+ID4gPiA+ID4gPiArLy8NCj4gPiA+ID4gPiA+ICsv LyBSbmcgUmRTZWVkIExpYnJhcnkgdGhhdCB1c2VzIENQVSBSZFNlZWQNCj4gPiA+IGluc3RydWN0 aW9uDQo+ID4gPiA+ID4gPiBhY2Nlc3MgdG8NCj4gPiA+ID4gPiA+ICtwcm92aWRlIC8vIG5vbi1k ZXRlcm1pbmlzdGljIHJhbmRvbSBudW1iZXIgd2hpY2gNCj4gPiA+IGNhbg0KPiA+ID4gPiA+ID4g YmUgdXNlZCBhcyBzZWVkDQo+ID4gPiA+ID4gPiArZm9yIG90aGVyIC8vIHNvZnR3YXJlIGRldGVy bWluaXN0aWMgUk5Hcy4NCj4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gKy8vIENvcHlyaWdo dCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiA+ID4gcmlnaHRzDQo+ID4gPiA+ ID4gPiByZXNlcnZlZC48QlI+IC8vDQo+ID4gPiA+ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiA+IC8vIC8vDQo+ID4gPiA+ID4gPiAqKi8N Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjc3RyaW5nIFNUUl9N T0RVTEVfQUJTVFJBQ1QNCj4gPiA+ICNsYW5ndWFnZSBlbi0NCj4gPiA+ID4gPiA+IFVTICJJbnN0 YW5jZSBvZiBSTkcgTGlicmFyeSINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjc3RyaW5n IFNUUl9NT0RVTEVfREVTQ1JJUFRJT04NCj4gPiA+ICNsYW5ndWFnZSBlbi0NCj4gPiA+ID4gPiA+ IFVTICJSbmdSZFNlZWQgTGlicmFyeSB0aGF0IHVzZXMgQ1BVIFJkU2VlZA0KPiA+ID4gaW5zdHJ1 Y3Rpb24gYWNjZXNzIHRvDQo+ID4gPiA+ID4gPiBwcm92aWRlIG5vbi1kZXRlcm1pbmlzdGljIHJh bmRvbSBudW1iZXJzLiINCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQNCj4g PiA+ID4gPiA+DQo+ID4gPiBhL1NlY3VyaXR5UGtnL1JhbmRvbU51bWJlckdlbmVyYXRvci9SbmdM aWJSZFNlZWQvUm5nUmRTDQo+ID4gPiA+ID4gPiBlZWQuYw0KPiA+ID4gPiA+ID4NCj4gPiA+IGIv U2VjdXJpdHlQa2cvUmFuZG9tTnVtYmVyR2VuZXJhdG9yL1JuZ0xpYlJkU2VlZC9SbmdSZFMNCj4g PiA+ID4gPiA+IGVlZC5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4g PiA+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDAzNmZhYTA1MA0KPiA+ID4gPiA+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gPiA+ID4gKysrDQo+ID4gPiA+ID4gPg0KPiA+ID4gYi9TZWN1cml0eVBrZy9S YW5kb21OdW1iZXJHZW5lcmF0b3IvUm5nTGliUmRTZWVkL1JuZ1JkUw0KPiA+ID4gPiA+ID4gZWVk LmMNCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMTg5IEBADQo+ID4gPiA+ID4gPiArLyoqIEBmaWxl DQo+ID4gPiA+ID4gPiArICBSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBzZXJ2aWNlcyB0aGF0IHVz ZXMNCj4gPiA+IFJkU2VlZA0KPiA+ID4gPiA+ID4gaW5zdHJ1Y3Rpb24gYWNjZXNzDQo+ID4gPiA+ ID4gPiArICB0byBwcm92aWRlIG5vbi1kZXRlcm1pbmlzdGljIHJhbmRvbSBudW1iZXJzLA0KPiA+ ID4gd2hpY2gNCj4gPiA+ID4gPiA+IGFyZSB1c3VhbGx5IHVzZWQNCj4gPiA+ID4gPiA+ICsgIGZv ciBzZWVkaW5nIG90aGVyIHBzZXVkby1yYW5kb20gbnVtYmVyDQo+ID4gPiBnZW5lcmF0b3JzLg0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK0NvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbA0KPiA+ID4gcmlnaHRzDQo+ID4gPiA+ID4gPiByZXNlcnZlZC48QlI+DQo+ ID4gPiA+ID4gPiArU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUg PExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9SbmdM aWIuaD4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gKy8vIEJp dCBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIFJkU2VlZA0KPiA+ID4gaW5zdHJ1Y3Rpb24gaXMN Cj4gPiA+ID4gPiA+IHN1cHBvcnRlZC4NCj4gPiA+ID4gPiA+ICsvLw0KPiA+ID4gPiA+ID4gKyNk ZWZpbmUgUkRTRUVEX01BU0sgICAgICAgICAgICAgICAgICBCSVQxOA0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKy8vDQo+ID4gPiA+ID4gPiArLy8gTGltaXRlZCByZXRyeSBudW1iZXIgd2hl biB2YWxpZCByYW5kb20gZGF0YQ0KPiA+ID4gaXMNCj4gPiA+ID4gPiA+IHJldHVybmVkLg0KPiA+ ID4gPiA+ID4gKy8vIEl0IHZhcmllcyBiZXR3ZWVuIDEgYW5kIDEwMCBhY2NvcmRpbmcgdG8NCj4g PiA+ICJJbnRlbChSKQ0KPiA+ID4gPiA+ID4gRFJHTiBTb2Z0d2FyZQ0KPiA+ID4gPiA+ID4gK0lt cGxlbWVudGF0aW9uIC8vIEd1aWRlIi4gTGV0J3MgdXNlIHRoZSBzYW1lDQo+ID4gPiB2YWx1ZSBh cw0KPiA+ID4gPiA+ID4gUkRSQU5EIGluIEJhc2VSbmdMaWIuDQo+ID4gPiA+ID4gPiArLy8NCj4g PiA+ID4gPiA+ICsjZGVmaW5lIFJEU0VFRF9SRVRSWV9MSU1JVCAgICAgICAgICAgMTANCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIFRoZSBjb25zdHJ1Y3Rv ciBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBvciBub3QNCj4gPiA+ID4gPiA+IFJEU0VFRCBpbnN0 cnVjdGlvbiBpcw0KPiA+ID4gPiA+ID4gK3N1cHBvcnRlZA0KPiA+ID4gPiA+ID4gKyAgYnkgdGhl IGhvc3QgaGFyZHdhcmUuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBUaGUgY29uc3Ry dWN0b3IgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgb3Igbm90DQo+ID4gPiA+ID4gPiBSRFNFRUQg aW5zdHJ1Y3Rpb24gaXMgc3VwcG9ydGVkLg0KPiA+ID4gPiA+ID4gKyAgSXQgd2lsbCBBU1NFUlQo KSBpZiBSRFNFRUQgaW5zdHJ1Y3Rpb24gaXMgbm90DQo+ID4gPiA+ID4gPiBzdXBwb3J0ZWQuDQo+ ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAg VGhlIHByb2Nlc3Nvcg0KPiA+ID4gc3VwcG9ydHMNCj4gPiA+ID4gPiA+IFJEU0VFRCBpbnN0cnVj dGlvbi4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICBSRFNFRUQg aW5zdHJ1Y3Rpb24NCj4gPiA+IGlzDQo+ID4gPiA+ID4gPiBub3Qgc3VwcG9ydGVkLg0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4g PiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtSbmdMaWJSZFNlZWRDb25zdHJ1Y3RvciAo DQo+ID4gPiA+ID4gPiArICBWT0lEDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0K PiA+ID4gPiA+ID4gKyAgVUlOVDMyICBSZWdFYng7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArICAvLw0KPiA+ID4gPiA+ID4gKyAgLy8gRGV0ZXJtaW5lIFJEU0VFRCBzdXBwb3J0IGJ5IGV4 YW1pbmluZyBiaXQNCj4gPiA+IDE4IG9mDQo+ID4gPiA+ID4gPiB0aGUgRUJYIHJlZ2lzdGVyDQo+ ID4gPiA+ID4gPiArIHJldHVybmVkIGJ5ICAvLyBDUFVJRChFQVg9NywgRUNYPTApLiBCSVQxOCBv Zg0KPiA+ID4gRUJYDQo+ID4gPiA+ID4gPiBpbmRpY2F0ZXMgdGhhdA0KPiA+ID4gPiA+ID4gKyBw cm9jZXNzb3Igc3VwcG9ydCBSRFNFRUQgIC8vIGluc3RydWN0aW9uLg0KPiA+ID4gPiA+ID4gKyAg Ly8NCj4gPiA+ID4gPiA+ICsgIEFzbUNwdWlkRXggKDcsIDAsIE5VTEwsICZSZWdFYngsIE5VTEws IE5VTEwpOw0KPiA+ID4gaWYNCj4gPiA+ID4gPiA+ICgoUmVnRWJ4ICYNCj4gPiA+ID4gPiA+ICsg UkRTRUVEX01BU0spICE9IFJEU0VFRF9NQVNLKSB7DQo+ID4gPiA+ID4gPiArICAgIEFTU0VSVCAo KFJlZ0VieCAmIFJEU0VFRF9NQVNLKSA9PQ0KPiA+ID4gUkRTRUVEX01BU0spOw0KPiA+ID4gPiA+ ID4gKyAgICByZXR1cm4gUkVUVVJOX1VOU1VQUE9SVEVEOw0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ID4g PiA+ID4gK30NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsg IEdlbmVyYXRlcyBhIDE2LWJpdCByYW5kb20gbnVtYmVyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gKyAgaWYgUmFuZCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKyAgQHBhcmFtW291dF0gUmFuZCAgICAgQnVmZmVyIHBvaW50ZXIgdG8gc3Rv cmUNCj4gPiA+IHRoZSAxNi0NCj4gPiA+ID4gPiA+IGJpdCByYW5kb20gdmFsdWUuDQo+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICBSYW5kb20gbnVtYmVy IGdlbmVyYXRlZA0KPiA+ID4gPiA+ID4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ID4gPiA+ID4gKyAgQHJl dHZhbCBGQUxTRSAgICAgICAgRmFpbGVkIHRvIGdlbmVyYXRlIHRoZQ0KPiA+ID4gcmFuZG9tDQo+ ID4gPiA+ID4gPiBudW1iZXIuDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArKiovDQo+ID4g PiA+ID4gPiArQk9PTEVBTg0KPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4gK0dldFJh bmRvbU51bWJlcjE2ICgNCj4gPiA+ID4gPiA+ICsgIE9VVCAgICAgVUlOVDE2ICAgICAgICAgICAg ICAgICAgICAqUmFuZA0KPiA+ID4gPiA+ID4gKyAgKQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiA+ICsgIFVJTlQzMiAgSW5kZXg7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBBU1NF UlQgKFJhbmQgIT0gTlVMTCk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ ID4gPiA+ID4gKyAgLy8gQSBsb29wIHRvIGZldGNoIGEgMTYgYml0IHJhbmRvbSB2YWx1ZSB3aXRo DQo+ID4gPiBhDQo+ID4gPiA+ID4gPiByZXRyeSBjb3VudCBsaW1pdC4NCj4gPiA+ID4gPiA+ICsg IC8vDQo+ID4gPiA+ID4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBSRFNFRURfUkVUUllf TElNSVQ7DQo+ID4gPiBJbmRleCsrKQ0KPiA+ID4gPiA+ID4gew0KPiA+ID4gPiA+ID4gKyAgICBp ZiAoQXNtUmRTZWVkMTYgKFJhbmQpKSB7DQo+ID4gPiA+ID4gPiArICAgICAgcmV0dXJuIFRSVUU7 DQo+ID4gPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiArICBHZW5lcmF0ZXMgYSAzMi1iaXQgcmFu ZG9tIG51bWJlci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlmIFJhbmQgaXMgTlVM TCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEBwYXJhbVtv dXRdIFJhbmQgICAgIEJ1ZmZlciBwb2ludGVyIHRvIHN0b3JlDQo+ID4gPiB0aGUgMzItDQo+ID4g PiA+ID4gPiBiaXQgcmFuZG9tIHZhbHVlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAg QHJldHZhbCBUUlVFICAgICAgICAgUmFuZG9tIG51bWJlciBnZW5lcmF0ZWQNCj4gPiA+ID4gPiA+ IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgIEZhaWxl ZCB0byBnZW5lcmF0ZSB0aGUNCj4gPiA+IHJhbmRvbQ0KPiA+ID4gPiA+ID4gbnVtYmVyLg0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtHZXRSYW5kb21OdW1iZXIzMiAoDQo+ID4gPiA+ ID4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgKlJhbmQNCj4gPiA+ID4g PiA+ICsgICkNCj4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICBVSU5UMzIgIEluZGV4Ow0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgQVNTRVJUIChSYW5kICE9IE5VTEwpOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIC8vIEEgbG9vcCB0 byBmZXRjaCBhIDMyIGJpdCByYW5kb20gdmFsdWUgd2l0aA0KPiA+ID4gYQ0KPiA+ID4gPiA+ID4g cmV0cnkgY291bnQgbGltaXQuDQo+ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgZm9y IChJbmRleCA9IDA7IEluZGV4IDwgUkRTRUVEX1JFVFJZX0xJTUlUOw0KPiA+ID4gSW5kZXgrKykN Cj4gPiA+ID4gPiA+IHsNCj4gPiA+ID4gPiA+ICsgICAgaWYgKEFzbVJkU2VlZDMyIChSYW5kKSkg ew0KPiA+ID4gPiA+ID4gKyAgICAgIHJldHVybiBUUlVFOw0KPiA+ID4gPiA+ID4gKyAgICB9DQo+ ID4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICByZXR1cm4gRkFM U0U7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKy8qKg0KPiA+ ID4gPiA+ID4gKyAgR2VuZXJhdGVzIGEgNjQtYml0IHJhbmRvbSBudW1iZXIuDQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICBpZiBSYW5kIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4g PiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBAcGFyYW1bb3V0XSBSYW5kICAgICBCdWZmZXIgcG9p bnRlciB0byBzdG9yZQ0KPiA+ID4gdGhlIDY0LQ0KPiA+ID4gPiA+ID4gYml0IHJhbmRvbSB2YWx1 ZS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgIFJh bmRvbSBudW1iZXIgZ2VuZXJhdGVkDQo+ID4gPiA+ID4gPiBzdWNjZXNzZnVsbHkuDQo+ID4gPiA+ ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICBGYWlsZWQgdG8gZ2VuZXJhdGUgdGhlDQo+ID4g PiByYW5kb20NCj4gPiA+ID4gPiA+IG51bWJlci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsqKi8NCj4gPiA+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ ID4gPiArR2V0UmFuZG9tTnVtYmVyNjQgKA0KPiA+ID4gPiA+ID4gKyAgT1VUICAgICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgICpSYW5kDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gKyAgVUlOVDMyICBJbmRleDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgIEFTU0VSVCAoUmFuZCAhPSBOVUxMKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIC8vDQo+ID4gPiA+ID4gPiArICAvLyBBIGxvb3AgdG8gZmV0Y2ggYSA2NCBiaXQgcmFuZG9t IHZhbHVlIHdpdGgNCj4gPiA+IGENCj4gPiA+ID4gPiA+IHJldHJ5IGNvdW50IGxpbWl0Lg0KPiA+ ID4gPiA+ID4gKyAgLy8NCj4gPiA+ID4gPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFJE U0VFRF9SRVRSWV9MSU1JVDsNCj4gPiA+IEluZGV4KyspDQo+ID4gPiA+ID4gPiB7DQo+ID4gPiA+ ID4gPiArICAgIGlmIChBc21SZFNlZWQ2NCAoUmFuZCkpIHsNCj4gPiA+ID4gPiA+ICsgICAgICBy ZXR1cm4gVFJVRTsNCj4gPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gK30NCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ICsgIEdlbmVyYXRlcyBh IDEyOC1iaXQgcmFuZG9tIG51bWJlci4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgIGlm IFJhbmQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ ICsgIEBwYXJhbVtvdXRdIFJhbmQgICAgIEJ1ZmZlciBwb2ludGVyIHRvIHN0b3JlDQo+ID4gPiB0 aGUNCj4gPiA+ID4gPiA+IDEyOC1iaXQgcmFuZG9tIHZhbHVlLg0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAgUmFuZG9tIG51bWJlciBnZW5lcmF0ZWQN Cj4gPiA+ID4gPiA+IHN1Y2Nlc3NmdWxseS4NCj4gPiA+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0Ug ICAgICAgIEZhaWxlZCB0byBnZW5lcmF0ZSB0aGUNCj4gPiA+IHJhbmRvbQ0KPiA+ID4gPiA+ID4g bnVtYmVyLg0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyoqLw0KPiA+ID4gPiA+ID4gK0JP T0xFQU4NCj4gPiA+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gPiA+ICtHZXRSYW5kb21OdW1iZXIx MjggKA0KPiA+ID4gPiA+ID4gKyAgT1VUICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICpS YW5kDQo+ID4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgQVNT RVJUIChSYW5kICE9IE5VTEwpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4g PiA+ID4gPiA+ICsgIC8vIFJlYWQgZmlyc3QgNjQgYml0cw0KPiA+ID4gPiA+ID4gKyAgLy8NCj4g PiA+ID4gPiA+ICsgIGlmICghR2V0UmFuZG9tTnVtYmVyNjQgKFJhbmQpKSB7DQo+ID4gPiA+ID4g PiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gPiA+ICsgIH0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gPiArICAvLyBSZWFkIHNlY29uZCA2NCBiaXRzDQo+ ID4gPiA+ID4gPiArICAvLw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIEdldFJhbmRvbU51bWJlcjY0 ICgrK1JhbmQpOyB9DQo+ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gMi4xNy4xLndpbmRvd3Mu Mg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4g Pg0KPiA+ID4gPg0KPiA+ID4gPg0KPiANCj4gDQoNCg==