From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web12.341.1581643967864184199 for ; Thu, 13 Feb 2020 17:32:48 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: siyuan.fu@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2020 17:32:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,438,1574150400"; d="scan'208";a="257375847" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 13 Feb 2020 17:32:47 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 13 Feb 2020 17:32:47 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 13 Feb 2020 17:32:46 -0800 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 13 Feb 2020 17:32:46 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.196]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.98]) with mapi id 14.03.0439.000; Fri, 14 Feb 2020 09:32:44 +0800 From: "Siyuan, Fu" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Ni, Ray" , "Chaganty, Rangasai V" Subject: Re: [edk2-devel] [PATCH v3] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Topic: [edk2-devel] [PATCH v3] IntelSiliconPkg: FIT based shadow microcode PPI support. Thread-Index: AQHV4T45Bh6YCeSru0+aVr0AkZ8zGqgYRB6ggAGdkVA= Date: Fri, 14 Feb 2020 01:32:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTQwN2RjYmYtM2Y1Ni00ZDg4LWFiOGQtNzUxYzI2MzcyZGQ5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiSlhhN1NNY1lTSDZ2UmhweWtUeDlRTEQ2dnIwZzhkN0twekFOOFwvREdudmxSb3RPQ0RrZGNTSTE2UXgyVzl1UCsifQ== 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: siyuan.fu@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgTWlrZQ0KDQpTZWUgbXkgcmVwbHkgZm9yIHRoZSBBU1NFUlQgYW5kIG1hZ2ljIG51bWJlciBh cm91bmQgRklUIHRhYmxlIHBhcnNpbmcgY29kZS4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+IFNlbnQ6IDIwMjDE6jLUwjEzyNUgODo1OA0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW87IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwNCj4g RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50 ZWwuY29tPjsgQ2hhZ2FudHksIFJhbmdhc2FpIFYNCj4gPHJhbmdhc2FpLnYuY2hhZ2FudHlAaW50 ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2M10gSW50ZWxTaWxp Y29uUGtnOiBGSVQgYmFzZWQgc2hhZG93DQo+IG1pY3JvY29kZSBQUEkgc3VwcG9ydC4NCj4gDQo+ IFNpeXVhbiwNCj4gDQo+IEludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZToN Cj4gDQo+IEZvciBzaW1wbGUgbW9kdWxlcyB0aGF0IG9ubHkgaGF2ZSBhIHNpbmdsZSAuYyBmaWxl LCB0aGVyZQ0KPiBJcyBub3QgbmVlZCB0byBzcGxpdCBvdXQgYSAuaCBmaWxlLiAgUGxlYXNlIG1l cmdlIHRoZSAuaA0KPiBGaWxlIGNvbnRlbnQgaW50byB0aGUgLmMgZmlsZSBhbmQgZGVsZXRlIHRo ZSAuaCBmaWxlLg0KPiANCj4gTW9yZSBjb21tZW50cyBpbmxpbmUgYmVsb3cuDQo+IA0KPiBNaWtl DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbg0KPiA+IEJlaGFsZiBPZiBTaXl1 YW4sIEZ1DQo+ID4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMTEsIDIwMjAgNDo0OCBQTQ0KPiA+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwu Y29tPjsgQ2hhZ2FudHksIFJhbmdhc2FpIFYNCj4gPiA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRl bC5jb20+DQo+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtQQVRDSCB2M10gSW50ZWxTaWxpY29u UGtnOiBGSVQNCj4gPiBiYXNlZCBzaGFkb3cgbWljcm9jb2RlIFBQSSBzdXBwb3J0Lg0KPiA+DQo+ ID4gVjMgQ2hhbmdlczoNCj4gPiBSZW1vdmUgdGhlIGZlYXR1cmUgUENEIFBjZENwdVNoYWRvd01p Y3JvY29kZUJ5Rml0DQo+ID4gYmVjYXVzZSB0aGUgd2hvbGUgRklUIG1pY3JvY29kZSBzaGFkb3cg Y29kZSBpcyBtb3ZlZCB0bw0KPiA+IHRoaXMgUEVJTSBzbyBwbGF0Zm9ybSBjb3VsZCBkaXNhYmxl IHRoaXMgZmVhdHVyZSBieSBub3QNCj4gPiBpbmNsdWRlIFBFSU0gbm93Lg0KPiA+DQo+ID4gVjIg Q2hhbmdlczoNCj4gPiBSZW5hbWUgRURLSUlfUEVJX0NQVV9NSUNST0NPREVfSUQgdG8NCj4gPiBF REtJSV9QRUlfTUlDUk9DT0RFX0NQVV9JRC4NCj4gPg0KPiA+IFRoaXMgcGF0Y2ggYWRkcyBhIHBs YXRmb3JtIFBFSU0gZm9yIEZJVCBiYXNlZCBzaGFkb3cNCj4gPiBtaWNyb2NvZGUgUFBJIHN1cHBv cnQuIEEgZGV0YWlsZWQgZGVzaWduIGRvYyBjYW4gYmUNCj4gPiBmb3VuZCBoZXJlOg0KPiA+IGh0 dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9maWxlcy9EZXNpZ25zLzIwMjAvMDIxNC8NCj4g PiBTdXBwb3J0JTIwDQo+ID4gdGhlJTIwMm5kJTIwTWljcm9jb2RlJTIwRlYlMjBGbGFzaCUyMFJl Z2lvbi5wZGYNClRyaW0gbG9uZyBwYXRjaCBjb250ZW50Lg0KDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtTaGFkb3dNaWNyb2NvZGVQYXRjaEJ5Rml0ICgNCj4gPiArICBJ TiAgVUlOVE4NCj4gPiBDcHVJZENvdW50LA0KPiA+ICsgIElOICBFREtJSV9QRUlfTUlDUk9DT0RF X0NQVV9JRA0KPiA+ICpNaWNyb2NvZGVDcHVJZCwNCj4gPiArICBPVVQgVUlOVE4NCj4gPiAqQnVm ZmVyU2l6ZSwNCj4gPiArICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKkJ1ZmZlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGaXRQb2ludGVyOw0KPiA+ICsgIEZJUk1XQVJFX0lOVEVSRkFDRV9UQUJM RV9FTlRSWSAgICAqRml0RW50cnk7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVudHJ5TnVtOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleDsNCj4gPiArICBNSUNST0NPREVfUEFUQ0hfSU5GTyAgICAgICAgICAgICAgKlBhdGNo SW5mb0J1ZmZlcjsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4 UGF0Y2hOdW1iZXI7DQo+ID4gKyAgQ1BVX01JQ1JPQ09ERV9IRUFERVINCj4gPiAqTWljcm9jb2Rl RW50cnlQb2ludDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0 Y2hDb3VudDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWxT aXplOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbExvYWRT aXplOw0KPiA+ICsNCj4gPiArICBGaXRQb2ludGVyID0gKihVSU5UNjQgKikgKFVJTlROKQ0KPiA+ IEZJVF9QT0lOVEVSX0FERFJFU1M7ICBpZg0KPiA+ICsgKChGaXRQb2ludGVyID09IDApIHx8DQo+ ID4gKyAgICAgIChGaXRQb2ludGVyID09IDB4RkZGRkZGRkZGRkZGRkZGRikgfHwNCj4gPiArICAg ICAgKEZpdFBvaW50ZXIgPT0gMHhFRUVFRUVFRUVFRUVFRUVFKSkgew0KPiANCj4gQXJlIHRoZXNl IGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSBGSVQgaW5jbHVkZSBmaWxlPw0KPiBXb3VsZCBiZSBi ZXR0ZXIgaWYgdGhleSBhcmUgI2RlZmluZXMgZnJvbSBGSVQgaW5jbHVkZQ0KPiBmaWxlIG9yIGlu IHRoaXMgbW9kdWxlLg0KDQpUaGVzZSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIEZJVCBpbmNs dWRlIGZpbGUgb3IgRklUIHNwZWNpZmljYXRpb24uIA0KVGhlIG9ubHkgd2F5IHRvIGlkZW50aWZ5 IGlmIEZJVCB0YWJsZSBpcyBleGlzdCBpbiBGSVQgc3BlYyBpcyB0aGUgX0ZJVF8NCnNpZ25hdHVy ZSwgd2hpY2ggZGVmaW5lZCBpbiBGSVQgaGVhZGVyIGZpbGUgYXMNCkZJVF9UWVBFXzAwX1NJR05B VFVSRSBhbmQgY2hlY2sgYmVsb3cuDQoNClRoaXMgaWYgY2hlY2sgaXMgY29waWVkIGZyb20gdGhl IEluaXRpYWxpemVGaXRNaWNyb2NvZGVJbmZvKCkgZnVuY3Rpb24NCmluIFNpbGljb25cSW50ZWxc SW50ZWxTaWxpY29uUGtnXEZlYXR1cmVcQ2Fwc3VsZVxNaWNyb2NvZGVVcGRhdGVEeGVcTWljcm9j b2RlRm1wLmMuDQpJIHRoaW5rIGl0IGp1c3QgYXNzdW1lcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBm bGFzaCBjb250ZW50IGlzIDB4RkYNCm9yIDB4RUUgYW5kIGNoZWNrIHRoYXQuDQoNClRoaXMgaXMg YWxzbyB3aHkgSSB1c2UgQVNTRVJUIGlmIHRoZSBmbGFzaCBjb250ZW50IGRvZXNuJ3Qgc2VlbXMN Cmxpa2UgYSB2YWxpZCBGSVQgdGFibGUgaW4gYmVsb3cgaWYgY2hlY2tzLiBGSVQgYm9vdCBpcyBj cml0aWNhbCB0bw0KcHJvY2Vzc29yIG1pY3JvY29kZSBsb2FkIGFuZCBCSU9TIFJUVSBzZXR1cC4g QW5kIGluY2x1ZGluZw0KdGhpcyBQRUlNIGludG8gdGhlIHBsYXRmb3JtIG1lYW5zIHRoZSBwbGF0 Zm9ybSBvd25lciB3YW50IHRvDQp1c2UgRklUIGJhc2VkIGJvb3QgYW5kIG1pY3JvY29kZSBsb2Fk aW5nLiBUaGVzZSBBU1NFUlRzIHdvdWxkDQpiZSBoZWxwZnVsIHRvIGxldCB0aGVtIGlmIHRoZSBG SVQgdGFibGUgY29udGVudCBpcyBpbnZhbGlkIGluIGEgREVCVUcNCnZlcnNpb24gQklPUyBpbWFn ZS4NCg0KPiANCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBObyBGSVQgdGFibGUuDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+IA0KPiBJcyBpdCBhcHByb3ByaWF0ZSB0 byBBU1NFUlQoKSBoZXJlPyAgQ2FuIHRoaXMgYmUgcmVtb3ZlZD8NCj4gV291bGQgYSBERUJVR19F UlJPUiBtZXNzYWdlIGJlIGJldHRlcj8NCj4gDQo+ID4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VO RDsNCj4gPiArICB9DQo+ID4gKyAgRml0RW50cnkgPSAoRklSTVdBUkVfSU5URVJGQUNFX1RBQkxF X0VOVFJZICopDQo+ID4gKFVJTlROKSBGaXRQb2ludGVyOyAgaWYNCj4gPiArICgoRml0RW50cnlb MF0uVHlwZSAhPSBGSVRfVFlQRV8wMF9IRUFERVIpIHx8DQo+ID4gKyAgICAgIChGaXRFbnRyeVsw XS5BZGRyZXNzICE9IEZJVF9UWVBFXzAwX1NJR05BVFVSRSkpDQo+ID4gew0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIEludmFsaWQgRklUIHRhYmxlLCB0cmVhdCBpdCBhcyBubyBGSVQgdGFibGUu DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+IA0KPiBJcyBpdCBhcHBy b3ByaWF0ZSB0byBBU1NFUlQoKSBoZXJlPyAgQ2FuIHRoaXMgYmUgcmVtb3ZlZD8NCj4gV291bGQg YSBERUJVR19FUlJPUiBtZXNzYWdlIGJlIGJldHRlcj8NCj4gDQo+ID4gKyAgICByZXR1cm4gRUZJ X05PVF9GT1VORDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEVudHJ5TnVtID0gKihVSU5UMzIg KikoJkZpdEVudHJ5WzBdLlNpemVbMF0pICYNCj4gPiAweEZGRkZGRjsNCj4gPiArDQo+ID4gKyAg Ly8NCj4gPiArICAvLyBDYWxjdWxhdGUgbWljcm9jb2RlIGVudHJ5IG51bWJlcg0KPiA+ICsgIC8v DQo+ID4gKyAgTWF4UGF0Y2hOdW1iZXIgPSAwOw0KPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IEVudHJ5TnVtOyBJbmRleCsrKSB7DQo+ID4gKyAgICBpZiAoRml0RW50cnlbSW5kZXhdLlR5 cGUgPT0gRklUX1RZUEVfMDFfTUlDUk9DT0RFKQ0KPiA+IHsNCj4gPiArICAgICAgTWF4UGF0Y2hO dW1iZXIrKzsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKyAgaWYgKE1heFBhdGNoTnVtYmVy ID09IDApIHsNCj4gPiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgUGF0Y2hJbmZvQnVmZmVyID0gQWxsb2NhdGVQb29sIChNYXhQYXRjaE51bWJlciAq DQo+ID4gc2l6ZW9mDQo+ID4gKyAoTUlDUk9DT0RFX1BBVENIX0lORk8pKTsgIGlmIChQYXRjaElu Zm9CdWZmZXIgPT0NCj4gPiBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNP VVJDRVM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEZpbGwgdXAgbWlj cm9jb2RlIHBhdGNoIGluZm8gYnVmZmVyIGFjY29yZGluZyB0bw0KPiA+IEZJVCB0YWJsZS4NCj4g PiArICAvLw0KPiA+ICsgIFBhdGNoQ291bnQgPSAwOw0KPiA+ICsgIFRvdGFsTG9hZFNpemUgPSAw Ow0KPiA+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVudHJ5TnVtOyBJbmRleCsrKSB7DQo+ ID4gKyAgICBpZiAoRml0RW50cnlbSW5kZXhdLlR5cGUgPT0gRklUX1RZUEVfMDFfTUlDUk9DT0RF KQ0KPiA+IHsNCj4gPiArICAgICAgTWljcm9jb2RlRW50cnlQb2ludCA9IChDUFVfTUlDUk9DT0RF X0hFQURFUiAqKQ0KPiA+IChVSU5UTikgRml0RW50cnlbSW5kZXhdLkFkZHJlc3M7DQo+ID4gKyAg ICAgIFRvdGFsU2l6ZSA9IChNaWNyb2NvZGVFbnRyeVBvaW50LT5EYXRhU2l6ZSA9PSAwKQ0KPiA+ ID8gMjA0OCA6IE1pY3JvY29kZUVudHJ5UG9pbnQtPlRvdGFsU2l6ZTsNCj4gPiArICAgICAgaWYg KElzTWljcm9jb2RlUGF0Y2hOZWVkTG9hZCAoQ3B1SWRDb3VudCwNCj4gPiBNaWNyb2NvZGVDcHVJ ZCwgTWljcm9jb2RlRW50cnlQb2ludCkpIHsNCj4gPiArICAgICAgICBQYXRjaEluZm9CdWZmZXJb UGF0Y2hDb3VudF0uQWRkcmVzcyAgICAgPQ0KPiA+IChVSU5UTikgTWljcm9jb2RlRW50cnlQb2lu dDsNCj4gPiArICAgICAgICBQYXRjaEluZm9CdWZmZXJbUGF0Y2hDb3VudF0uU2l6ZSAgICAgICAg PQ0KPiA+IFRvdGFsU2l6ZTsNCj4gPiArICAgICAgICBUb3RhbExvYWRTaXplICs9IFRvdGFsU2l6 ZTsNCj4gPiArICAgICAgICBQYXRjaENvdW50Kys7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0N Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChQYXRjaENvdW50ICE9IDApIHsNCj4gPiArICAg IERFQlVHICgoDQo+ID4gKyAgICAgIERFQlVHX0lORk8sDQo+ID4gKyAgICAgICIlYTogMHgleCBt aWNyb2NvZGUgcGF0Y2hlcyB3aWxsIGJlIGxvYWRlZCBpbnRvDQo+ID4gbWVtb3J5LCB3aXRoIHNp emUgMHgleC5cbiIsDQo+ID4gKyAgICAgIF9fRlVOQ1RJT05fXywgUGF0Y2hDb3VudCwgVG90YWxM b2FkU2l6ZQ0KPiA+ICsgICAgICApKTsNCj4gPiArDQo+ID4gKyAgICBTaGFkb3dNaWNyb2NvZGVQ YXRjaFdvcmtlciAoUGF0Y2hJbmZvQnVmZmVyLA0KPiA+IFBhdGNoQ291bnQsDQo+ID4gKyBUb3Rh bExvYWRTaXplLCBCdWZmZXJTaXplLCBCdWZmZXIpOyAgfQ0KPiA+ICsNCj4gPiArICBGcmVlUG9v bCAoUGF0Y2hJbmZvQnVmZmVyKTsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30N Cj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTaGFkb3cgbWljcm9jb2RlIHVwZGF0ZSBw YXRjaGVzIHRvIG1lbW9yeS4NCj4gPiArDQo+ID4gKyAgVGhlIGZ1bmN0aW9uIGlzIHVzZWQgZm9y IHNoYWRvd2luZyBtaWNyb2NvZGUgdXBkYXRlDQo+ID4gcGF0Y2hlcyB0byBhIGNvbnRpbnVvdXMg bWVtb3J5Lg0KPiA+ICsgIEl0IHNoYWxsIGFsbG9jYXRlIG1lbW9yeSBidWZmZXIgYW5kIG9ubHkg c2hhZG93IHRoZQ0KPiA+IG1pY3JvY29kZSBwYXRjaGVzDQo+ID4gKyBmb3IgdGhvc2UgIHByb2Nl c3NvcnMgc3BlY2lmaWVkIGJ5IE1pY3JvY29kZUNwdUlkDQo+ID4gYXJyYXkuIFRoZSBjaGVja3N1 bQ0KPiA+ICsgdmVyaWZpY2F0aW9uIG1heSBiZSAgc2tpcGVkIGluIHRoaXMgZnVuY3Rpb24gc28g dGhlDQo+ID4gY2FsbGVyIG11c3QNCj4gPiArIHBlcmZvcm0gY2hlY2tzdW0gdmVyaWZpY2F0aW9u IGJlZm9yZSAgdXNpbmcgdGhlDQo+ID4gbWljcm9jb2RlIHBhdGNoZXMgaW4gcmV0dXJuZWQgbWVt b3J5IGJ1ZmZlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgICAgICAgICAg ICAgVGhlIFBQSSBpbnN0YW5jZQ0KPiA+IHBvaW50ZXIuDQo+ID4gKyAgQHBhcmFtW2luXSAgQ3B1 SWRDb3VudCAgICAgICAgICAgTnVtYmVyIG9mIGVsZW1lbnRzDQo+ID4gaW4gTWljcm9jb2RlQ3B1 SWQgYXJyYXkuDQo+ID4gKyAgQHBhcmFtW2luXSAgTWljcm9jb2RlQ3B1SWQgICAgICAgQSBwb2lu dGVyIHRvIGFuDQo+ID4gYXJyYXkgb2YgRURLSUlfUEVJX01JQ1JPQ09ERV9DUFVfSUQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLg0KPiA+ICsgIEBw YXJhbVtvdXRdIEJ1ZmZlclNpemUgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZQ0KPiA+IHRo ZSB0b3RhbCBzaXplIG9mIEJ1ZmZlci4NCj4gPiArICBAcGFyYW1bb3V0XSBCdWZmZXIgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHJlY2VpdmUNCj4gPiBhZGRyZXNzIG9mIGFsbG9jYXRlZCBtZW1v cnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG1pY3JvY29k ZQ0KPiA+IHBhdGNoZXMgZGF0YSBpbiBpdC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgICAgVGhlIG1pY3JvY29kZSBoYXMNCj4gPiBiZWVuIHNoYWRvd2VkIHRv IG1lbW9yeS4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgICBUaGUgb3Bl cmF0aW9uIGZhaWxzDQo+ID4gZHVlIHRvIGxhY2sgb2YgcmVzb3VyY2VzLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2hhZG93TWljcm9jb2RlICgNCj4gPiArICBJTiAg RURLSUlfUEVJX1NIQURPV19NSUNST0NPREVfUFBJICAgICAgICAqVGhpcywNCj4gPiArICBJTiAg VUlOVE4NCj4gPiBDcHVJZENvdW50LA0KPiA+ICsgIElOICBFREtJSV9QRUlfTUlDUk9DT0RFX0NQ VV9JRA0KPiA+ICpNaWNyb2NvZGVDcHVJZCwNCj4gPiArICBPVVQgVUlOVE4NCj4gPiAqQnVmZmVy U2l6ZSwNCj4gPiArICBPVVQgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq KkJ1ZmZlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChCdWZmZXJTaXplID09IE5VTEwg fHwgQnVmZmVyID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU2hhZG93TWljcm9jb2RlUGF0Y2hC eUZpdCAoQ3B1SWRDb3VudCwNCj4gPiBNaWNyb2NvZGVDcHVJZCwNCj4gPiArQnVmZmVyU2l6ZSwg QnVmZmVyKTsgfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBsYXRmb3JtIEluaXQg UEVJIG1vZHVsZSBlbnRyeSBwb2ludA0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBGaWxlSGFu ZGxlICAgICAgICAgICBOb3QgdXNlZC4NCj4gPiArICBAcGFyYW1baW5dICBQZWlTZXJ2aWNlcyAg ICAgICAgICBHZW5lcmFsIHB1cnBvc2UNCj4gPiBzZXJ2aWNlcyBhdmFpbGFibGUgdG8gZXZlcnkg UEVJTS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgRUZJX1NVQ0NFU1MgICAgICAgICAgVGhl IGZ1bmN0aW9uDQo+ID4gY29tcGxldGVzIHN1Y2Nlc3NmdWxseQ0KPiA+ICsgIEByZXR2YWwgICAg IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIEluc3VmZmljaWVudA0KPiA+IHJlc291cmNlcyB0byBjcmVh dGUgZGF0YWJhc2UNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4g K1NoYWRvd01pY3JvY29kZVBlaW1Jbml0ICgNCj4gPiArICBJTiAgICAgICBFRklfUEVJX0ZJTEVf SEFORExFICBGaWxlSGFuZGxlLA0KPiA+ICsgIElOIENPTlNUIEVGSV9QRUlfU0VSVklDRVMgICAg ICoqUGVpU2VydmljZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSW5z dGFsbCBFREtJSSBTaGFkb3cgTWljcm9jb2RlIFBQSSAgLy8gIFN0YXR1cyA9DQo+ID4gKyBQZWlT ZXJ2aWNlc0luc3RhbGxQcGkobVBlaVNoYWRvd01pY3JvY29kZVBwaUxpc3QpOw0KPiA+ICsgIEFT U0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ ID4gK30NCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBr Zy9GZWF0dXJlL1NoYWRvd01pY3JvY29kZQ0KPiA+IC9TaGFkb3dNaWNyb2NvZGVQZWkuaA0KPiA+ IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9TaGFkb3dNaWNyb2NvZGUN Cj4gPiAvU2hhZG93TWljcm9jb2RlUGVpLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAuLjA0ZmU3Y2JmZDMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysr DQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3Jv Y29kZQ0KPiA+IC9TaGFkb3dNaWNyb2MNCj4gPiArKysgb2RlUGVpLmgNCj4gPiBAQCAtMCwwICsx LDYyIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFNvdXJjZSBjb2RlIGZpbGUgZm9yIFBsYXRm b3JtIEluaXQgUEVJIG1vZHVsZQ0KPiANCj4gVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBtYXRj aCB0aGUgY29udGVudA0KPiANCj4gPiArDQo+ID4gK0NvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+DQo+ID4gK1NQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArDQo+ID4gKyNpZm5kZWYgX19TSEFET1dfTUlDUk9DT0RFX1BFSV9IX18NCj4gPiArI2RlZmlu ZSBfX1NIQURPV19NSUNST0NPREVfUEVJX0hfXw0KPiA+ICsNCj4gPiArDQo+ID4gKyNpbmNsdWRl IDxQaVBlaS5oPg0KPiA+ICsjaW5jbHVkZSA8UHBpL1NoYWRvd01pY3JvY29kZS5oPg0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9Ib2JMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9N ZW1vcnlBbGxvY2F0aW9uTGliLmg+ICNpbmNsdWRlDQo+ID4gKzxJbmR1c3RyeVN0YW5kYXJkL0Zp cm13YXJlSW50ZXJmYWNlVGFibGUuaD4NCj4gPiArI2luY2x1ZGUgPFJlZ2lzdGVyL0ludGVsL01p Y3JvY29kZS5oPg0KPiA+ICsjaW5jbHVkZSA8UmVnaXN0ZXIvSW50ZWwvQ3B1aWQuaD4NCj4gPiAr I2luY2x1ZGUgPEd1aWQvTWljcm9jb2RlU2hhZG93SW5mb0hvYi5oPiAvLyAvLyBEYXRhDQo+ID4g c3RydWN0dXJlIGZvcg0KPiA+ICttaWNyb2NvZGUgcGF0Y2ggaW5mb3JtYXRpb24gLy8gdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlROICAgIEFkZHJlc3M7DQo+ID4gKyAgVUlOVE4gICAgU2l6 ZTsNCj4gPiArfSBNSUNST0NPREVfUEFUQ0hfSU5GTzsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFNoYWRvdyBtaWNyb2NvZGUgdXBkYXRlIHBhdGNoZXMgdG8gbWVtb3J5Lg0KPiA+ICsNCj4gPiAr ICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBmb3Igc2hhZG93aW5nIG1pY3JvY29kZSB1cGRhdGUNCj4g PiBwYXRjaGVzIHRvIGEgY29udGludW91cyBtZW1vcnkuDQo+ID4gKyAgSXQgc2hhbGwgYWxsb2Nh dGUgbWVtb3J5IGJ1ZmZlciBhbmQgb25seSBzaGFkb3cgdGhlDQo+ID4gbWljcm9jb2RlIHBhdGNo ZXMNCj4gPiArIGZvciB0aG9zZSAgcHJvY2Vzc29ycyBzcGVjaWZpZWQgYnkgTWljcm9jb2RlQ3B1 SWQNCj4gPiBhcnJheS4gVGhlIGNoZWNrc3VtDQo+ID4gKyB2ZXJpZmljYXRpb24gbWF5IGJlICBz a2lwZWQgaW4gdGhpcyBmdW5jdGlvbiBzbyB0aGUNCj4gPiBjYWxsZXIgbXVzdA0KPiA+ICsgcGVy Zm9ybSBjaGVja3N1bSB2ZXJpZmljYXRpb24gYmVmb3JlICB1c2luZyB0aGUNCj4gPiBtaWNyb2Nv ZGUgcGF0Y2hlcyBpbiByZXR1cm5lZCBtZW1vcnkgYnVmZmVyLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dICBUaGlzICAgICAgICAgICAgICAgICBUaGUgUFBJIGluc3RhbmNlDQo+ID4gcG9pbnRl ci4NCj4gPiArICBAcGFyYW1baW5dICBDcHVJZENvdW50ICAgICAgICAgICBOdW1iZXIgb2YgZWxl bWVudHMNCj4gPiBpbiBNaWNyb2NvZGVDcHVJZCBhcnJheS4NCj4gPiArICBAcGFyYW1baW5dICBN aWNyb2NvZGVDcHVJZCAgICAgICBBIHBvaW50ZXIgdG8gYW4NCj4gPiBhcnJheSBvZiBFREtJSV9Q RUlfTUlDUk9DT0RFX0NQVV9JRA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdHVyZXMuDQo+ID4gKyAgQHBhcmFtW291dF0gQnVmZmVyU2l6ZSAgICAgICAgICAg UG9pbnRlciB0byByZWNlaXZlDQo+ID4gdGhlIHRvdGFsIHNpemUgb2YgQnVmZmVyLg0KPiA+ICsg IEBwYXJhbVtvdXRdIEJ1ZmZlciAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gcmVjZWl2ZQ0KPiA+ IGFkZHJlc3Mgb2YgYWxsb2NhdGVkIG1lbW9yeQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdpdGggbWljcm9jb2RlDQo+ID4gcGF0Y2hlcyBkYXRhIGluIGl0Lg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGUgbWljcm9jb2Rl IGhhcw0KPiA+IGJlZW4gc2hhZG93ZWQgdG8gbWVtb3J5Lg0KPiA+ICsgIEByZXR2YWwgRUZJX09V VF9PRl9SRVNPVVJDRVMgICAgIFRoZSBvcGVyYXRpb24gZmFpbHMNCj4gPiBkdWUgdG8gbGFjayBv ZiByZXNvdXJjZXMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTaGFk b3dNaWNyb2NvZGUgKA0KPiA+ICsgIElOICBFREtJSV9QRUlfU0hBRE9XX01JQ1JPQ09ERV9QUEkg ICAgICAgICpUaGlzLA0KPiA+ICsgIElOICBVSU5UTg0KPiA+IENwdUlkQ291bnQsDQo+ID4gKyAg SU4gIEVES0lJX1BFSV9NSUNST0NPREVfQ1BVX0lEDQo+ID4gKk1pY3JvY29kZUNwdUlkLA0KPiA+ ICsgIE9VVCBVSU5UTg0KPiA+ICpCdWZmZXJTaXplLA0KPiA+ICsgIE9VVCBWT0lEICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoqQnVmZmVyDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g KyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29u UGtnL0ZlYXR1cmUvU2hhZG93TWljcm9jb2RlDQo+ID4gL1NoYWRvd01pY3JvY29kZVBlaS5pbmYN Cj4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvU2hhZG93TWljcm9j b2RlDQo+ID4gL1NoYWRvd01pY3JvY29kZVBlaS5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmIyNzczOTk4Y2UNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrDQo+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRv d01pY3JvY29kZQ0KPiA+IC9TaGFkb3dNaWNyb2MNCj4gPiArKysgb2RlUGVpLmluZg0KPiA+IEBA IC0wLDAgKzEsNDQgQEANCj4gPiArIyMjIEBmaWxlDQo+ID4gKyMgQ29tcG9uZW50IGluZm9ybWF0 aW9uIGZpbGUgZm9yIHRoZSBQbGF0Zm9ybSBJbml0IFBFSQ0KPiA+IG1vZHVsZS4NCj4gDQo+IFRo aXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGZpbGUgY29udGVudHMuDQo+IA0KPiA+ ICsjDQo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cw0KPiA+IHJlc2VydmVkLjxCUj4gIyAjDQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiAr ICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDE3DQo+ID4gKyAgQkFT RV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gU2hhZG93TWljcm9jb2RlUGVpDQo+ID4gKyAg RklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gOGFmNGNmNjgtZWJlNC00YjIxLQ0KPiA+ IGEwMDgtMGNiM2RhMjc3YmU1DQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAg ID0gMS4wDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJTQ0KPiA+ ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9DQo+ID4gU2hhZG93TWljcm9jb2Rl UGVpbUluaXQNCj4gPiArDQo+ID4gK1tTb3VyY2VzXQ0KPiA+ICsgIFNoYWRvd01pY3JvY29kZVBl aS5jDQo+ID4gKyAgU2hhZG93TWljcm9jb2RlUGVpLmgNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gPiArICBQZWltRW50cnlQb2ludA0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgTWVt b3J5QWxsb2NhdGlvbkxpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiArICBIb2JMaWINCj4g PiArICBQZWlTZXJ2aWNlc0xpYg0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBr Zy9NZGVQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiAr ICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQo+ID4gKyAgSW50ZWxTaWxpY29uUGtnL0ludGVs U2lsaWNvblBrZy5kZWMNCj4gPiArDQo+ID4gK1tQcGlzXQ0KPiA+ICsgIGdFZGtpaVBlaVNoYWRv d01pY3JvY29kZVBwaUd1aWQNCj4gPiAjIyBQUk9EVUNFUw0KPiA+ICsNCj4gPiArW0d1aWRzXQ0K PiA+ICsgIGdFZGtpaU1pY3JvY29kZVNoYWRvd0luZm9Ib2JHdWlkDQo+ID4gKyAgZ0Vka2lpTWlj cm9jb2RlU3RvcmFnZVR5cGVGbGFzaEd1aWQNCj4gPiArDQo+ID4gK1tEZXBleF0NCj4gPiArICBU UlVFDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cv SW5jbHVkZS9HdWlkL01pY3JvY29kZVMNCj4gPiBoYWRvd0luZm9Ib2IuaA0KPiA+IGIvU2lsaWNv bi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW5jbHVkZS9HdWlkL01pY3JvY29kZVMNCj4gPiBoYWRv d0luZm9Ib2IuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAw MC4uNTlhMzhjZWU3NA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gPiBiL1NpbGljb24v SW50ZWwvSW50ZWxTaWxpY29uUGtnL0luY2x1ZGUvR3VpZC9NaWNyb2NvZGVTDQo+ID4gaGFkb3dJ bmZvSG9iLg0KPiA+ICsrKyBoDQo+ID4gQEAgLTAsMCArMSw1NyBAQA0KPiA+ICsvKiogQGZpbGUN Cj4gPiArICBUaGUgZGVmaW5pdGlvbiBmb3IgVlREIFBNUiBSZWdpb25zIEluZm9ybWF0aW9uIEhv Yi4NCj4gDQo+IFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbWF0Y2ggdGhlIGNvbnRlbnQNCj4g DQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMNCj4gPiByZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgKiovDQo+ID4gKw0KPiA+ICsNCj4gPiArI2lmbmRlZiBf TUlDUk9DT0RFX1NIQURPV19JTkZPX0hPQl9IXw0KPiA+ICsjZGVmaW5lIF9NSUNST0NPREVfU0hB RE9XX0lORk9fSE9CX0hfDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIFRoZSBHbG9iYWwgSUQg b2YgYSBHVUlEZWQgSE9CIHVzZWQgdG8gcGFzcw0KPiA+IG1pY3JvY29kZSBzaGFkb3cgaW5mbyB0 byBEWEUgRHJpdmVyLg0KPiA+ICsvLy8NCj4gPiArI2RlZmluZSBFREtJSV9NSUNST0NPREVfU0hB RE9XX0lORk9fSE9CX0dVSUQgXA0KPiA+ICsgIHsgXA0KPiA+ICsgICAgMHg2NTg5MDNmOSwgMHhk YTY2LCAweDQ2MGQsIHsgMHg4YiwgMHhiMCwgMHg5ZCwNCj4gPiAweDJkLCAweGRmLCAweDY1LA0K PiA+ICsweDQ0LCAweDU5IH0gXA0KPiA+ICsgIH0NCj4gPiArDQo+ID4gK2V4dGVybiBFRklfR1VJ RCBnRWRraWlNaWNyb2NvZGVTaGFkb3dJbmZvSG9iR3VpZDsNCj4gPiArDQo+ID4gK3R5cGVkZWYg c3RydWN0IHsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE51bWJlciBvZiB0aGUgbWljcm9jb2RlIHBh dGNoZXMgd2hpY2ggaGF2ZSBiZWVuDQo+ID4gKyAgLy8gcmVsb2NhdGVkIHRvIG1lbW9yeS4NCj4g PiArICAvLw0KPiA+ICsgIFVJTlQ2NCAgICBNaWNyb2NvZGVDb3VudDsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIEFuIEVGSV9HVUlEIHRoYXQgZGVmaW5lcyB0aGUgY29udGVudHMgb2YNCj4gPiBTdG9y YWdlQ29udGV4dC4NCj4gPiArICAvLw0KPiA+ICsgIEdVSUQgICAgICBTdG9yYWdlVHlwZTsNCj4g PiArICAvLw0KPiA+ICsgIC8vIEFuIGFycmF5IHdpdGggTWljcm9jb2RlQ291bnQgZWxlbWVudHMg dGhhdCBzdG9yZXMNCj4gPiArICAvLyB0aGUgc2hhZG93ZWQgbWljcm9jb2RlIHBhdGNoIGFkZHJl c3MgaW4gbWVtb3J5Lg0KPiA+ICsgIC8vDQo+ID4gKyAgVUlOVDY0ICAgIE1pY3JvY29kZUFkZHJJ bk1lbW9yeVswXTsNCj4gDQo+IFNpbmNlIHRoaXMgaXMgdGhlIGxhc3QgZmllbGQgaW4gdGhlIHN0 cnVjdHVyZSB2aXNpYmxlIHRvIHRoZQ0KPiBDIGNvbXBpbGVyLCB5b3UgY2FuIHVzZSBbXSBpbnN0 ZWFkIG9mIFswXSBzbyBpdCBpcyBpbnRlcnByZXRlZA0KPiBieSB0aGUgY29tcGlsZXIgYXMgYSBm bGV4aWJsZSBhcnJheSBtZW1iZXIuIFRoaXMgY2FuIG1ha2UNCj4gY29kZSB0aGF0IHVzZXMgdGhp cyBzdHJ1Y3R1cmUgZWFzaWVyIHRvIHJlYWQuDQo+IA0KPiBodHRwczovL2VuLndpa2lwZWRpYS5v cmcvd2lraS9GbGV4aWJsZV9hcnJheV9tZW1iZXINCj4gDQo+IA0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gQSBidWZmZXIgd2hpY2ggY29udGFpbnMgZGV0YWlscyBhYm91dCB0aGUgc3RvcmFnZQ0KPiA+ IGluZm9ybWF0aW9uDQo+ID4gKyAgLy8gc3BlY2lmaWMgdG8gU3RvcmFnZVR5cGUuDQo+ID4gKyAg Ly8NCj4gPiArICAvLyBVSU5UOCAgU3RvcmFnZUNvbnRleHRbXTsNCj4gPiArfSBFREtJSV9NSUNS T0NPREVfU0hBRE9XX0lORk9fSE9COw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gQW4gRURLSUlf TUlDUk9DT0RFX1NIQURPV19JTkZPX0hPQiB3aXRoIFN0b3JhZ2VUeXBlDQo+ID4gc2V0IHRvIGJl bG93DQo+ID4gK0dVSUQgd2lsbCAvLyBoYXZlIHRoZSBTdG9yYWdlQ29udGV4dCBvZiBhbiBhcnJh eSB3aXRoDQo+ID4gTWljcm9jb2RlQ291bnQgb2YNCj4gPiArVUlOVDY0IGVsZW1lbnRzIC8vIHRo YXQgc3RvcmVzIHRoZSBvcmlnaW5hbCBtaWNyb2NvZGUNCj4gPiBwYXRjaCBhZGRyZXNzIG9uDQo+ ID4gK2ZsYXNoLiBUaGlzIGFkZHJlc3MgaXMgLy8gcGxhY2VkIGluIHNhbWUgb3JkZXIgYXMgdGhl DQo+ID4gbWljcm9jb2RlIHBhdGNoZXMgaW4gTWljcm9jb2RlQWRkckluTWVtb3J5Lg0KPiA+ICsv Lw0KPiA+ICsjZGVmaW5lIEVGSV9NSUNST0NPREVfU1RPUkFHRV9UUFlFX0ZMQVNIX0dVSUQgXA0K PiANCj4gVHlwby4gICJUUFlFIiBzaG91bGQgYmUgIlRZUEUiLg0KPiANCj4gDQo+IFNob3VsZCBh IGRhdGEgc3RydWN0dXJlIGJlIGFkZGVkIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoDQo+IEVGSV9N SUNST0NPREVfU1RPUkFHRV9UWVBFX0ZMQVNIX0dVSUQgc28gaXQgY2FuIGJlIHVzZWQNCj4gdG8g aW50ZXJwcmV0IFN0b3JhZ2VDb250ZXh0IGZpZWxkIHdoZW4gU3RvcmFnZVR5cGUgbWF0Y2hlcw0K PiB0aGlzIEdVSUQgdmFsdWU/ICBUaGlzIHdheSwgdGhlIHRleHQgaW4gdGhlIGNvbW1lbnRzIGlz DQo+IG5vdCByZXF1aXJlZCB0byBrbm93IHRoZSBsYXlvdXQgb2YgU3RvcmFnZUNvbnRleHQuDQo+ IA0KPiAgIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgIFVJTlQ2NCAgTWljcm9jb2RlQWRkcmVzc0lu Rmxhc2hbXTsNCj4gICB9IEVGSV9NSUNST0NPREVfU1RPUkFHRV9UWVBFX0ZMQVNIX0NPTlRFWFQ7 DQo+IA0KPiBJbiBvcmRlciB0byBtYWtlIGV2ZXJ5dGhpbmcgYWxpZ25lZCBiZXR0ZXIgc2hvdWxk IHRoZQ0KPiBTdG9yYWdlR3VpZCBiZSBsaXN0ZWQgYmVmb3JlIE1pY3JvY29kZUNvdW50LCBzbyB0 aGUgb3JkZXINCj4gaXMgZnJvbSBsYXJnZXN0IHRvIHNtYWxsZXN0LiAgVGhpcyBhbHNvIGd1YXJh bnRlZXMgdGhhdA0KPiBTdG9yYWdlQ29udGV4dCBpcyBhbGlnbmVkIG9uIGFuIDgtYnl0ZSBib3Vu ZGFyeSB3aGljaCBpcw0KPiBjb21wYXRpYmxlIHdpdGggYSB0eXBlY2FzdCB0byBhIFN0b3JhZ2VU eXBlIHNwZWNpZmljIHN0cnVjdHVyZS4NCj4gDQo+ID4gKyAgeyBcDQo+ID4gKyAgICAweDJjYmEw MWIzLCAweGQzOTEsIDB4NDU5OCwgeyAweDhkLCAweDg5LCAweGI3LA0KPiA+IDB4ZmMsIDB4Mzks IDB4MjIsDQo+ID4gKzB4ZmQsIDB4NzEgfSBcDQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArZXh0ZXJu IEVGSV9HVUlEIGdFZGtpaU1pY3JvY29kZVN0b3JhZ2VUeXBlRmxhc2hHdWlkOw0KPiA+ICsNCj4g PiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGlj b25Qa2cvSW50ZWxTaWxpY29uUGtnLmRlYw0KPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGlj b25Qa2cvSW50ZWxTaWxpY29uUGtnLmRlYw0KPiA+IGluZGV4IDIyZWJmMTljNGUuLjJkOGU0MGYw YjggMTAwNjQ0DQo+ID4gLS0tIGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxT aWxpY29uUGtnLmRlYw0KPiA+ICsrKyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnLyBJ bnRlbFNpbGljb25Qa2cuZGVjDQo+ID4gQEAgLTQ4LDYgKzQ4LDEyIEBADQo+IA0KPiBIZWFkZXIg b2YgSW50ZWxTaWxpY29uUGtnLmRlYyBuZWVkcyB0byBoYXZlIGNvcHlyaWdodCB1cGRhdGVkDQo+ IHRvIDIwMjAuDQo+IA0KPiA+ICAgICMjIEhPQiBHVUlEIHRvIGdldCBtZW1vcnkgaW5mb3JtYXRp b24gYWZ0ZXIgTVJDIGlzDQo+ID4gZG9uZS4gVGhlIGhvYiBkYXRhIHdpbGwgYmUgdXNlZCB0byBz ZXQgdGhlIFBNUiByYW5nZXMNCj4gPiAgICBnVnRkUG1ySW5mb0RhdGFIb2JHdWlkID0gezB4NmZi NjE2NDUsIDB4ZjE2OCwNCj4gPiAweDQ2YmUsIHsgMHg4MCwgMHhlYywgMHhiNSwgMHgwMiwgMHgz OCwgMHg1ZSwgMHhlNywNCj4gPiAweGU3IH0gfQ0KPiA+DQo+ID4gKyAgIyMgSW5jbHVkZS9HdWlk L01pY3JvY29kZVNoYWRvd0luZm9Ib2IuaA0KPiA+ICsgIGdFZGtpaU1pY3JvY29kZVNoYWRvd0lu Zm9Ib2JHdWlkID0geyAweDY1ODkwM2Y5LA0KPiA+IDB4ZGE2NiwgMHg0NjBkLCB7DQo+ID4gKyAw eDhiLCAweGIwLCAweDlkLCAweDJkLCAweGRmLCAweDY1LCAweDQ0LCAweDU5IH0gfQ0KPiA+ICsN Cj4gPiArICAjIyBJbmNsdWRlL0d1aWQvTWljcm9jb2RlU2hhZG93SW5mb0hvYi5oDQo+ID4gKyAg Z0Vka2lpTWljcm9jb2RlU3RvcmFnZVR5cGVGbGFzaEd1aWQgPSB7IDB4MmNiYTAxYjMsDQo+ID4g MHhkMzkxLCAweDQ1OTgsIHsNCj4gPiArIDB4OGQsIDB4ODksIDB4YjcsIDB4ZmMsIDB4MzksIDB4 MjIsIDB4ZmQsIDB4NzEgfSB9DQo+ID4gKw0KPiA+ICBbUHBpc10NCj4gPiAgICBnRWRraWlWVGRJ bmZvUHBpR3VpZCA9IHsgMHg4YTU5ZmNiMywgMHhmMTkxLCAweDQwMGMsDQo+ID4geyAweDk3LCAw eDY3LCAweDY3LCAweGFmLCAweDJiLCAweDI1LCAweDY4LCAweDRhIH0gfQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdA0KPiA+IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29u UGtnLmRzYw0KPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29u UGtnLmRzYw0KPiA+IGluZGV4IDBhNjUwOWQ4YjMuLmY5OTU4ODM2OTEgMTAwNjQ0DQo+ID4gLS0t IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvSW50ZWxTaWxpY29uUGtnLmRzYw0KPiA+ ICsrKyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ludGVsU2lsaWNvblBrZy5kc2MN Cj4gPiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgIyMgQGZpbGUNCj4gPiAgIyBUaGlzIHBhY2thZ2Ug cHJvdmlkZXMgY29tbW9uIG9wZW4gc291cmNlIEludGVsDQo+ID4gc2lsaWNvbiBtb2R1bGVzLg0K PiA+ICAjDQo+ID4gLSMgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbA0KPiA+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgQ29weXJpZ2h0IChjKSAy MDE3IC0gMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiA+IHJpZ2h0cw0KPiA+ICtyZXNl cnZlZC48QlI+DQo+ID4gICMNCj4gPiAgIyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICAjDQo+ID4gQEAgLTg0LDYgKzg0LDcgQEANCj4gPg0KPiA+ IEludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9QbGF0Zm9ybVZUZEluZm9TYW1wbGVQZWkvUGwN Cj4gPiBhdGZvcm1WVGRJbmZvU2FtcGxlUGVpLmluZg0KPiA+DQo+ID4gSW50ZWxTaWxpY29uUGtn L0ZlYXR1cmUvQ2Fwc3VsZS9NaWNyb2NvZGVVcGRhdGVEeGUvTWljcg0KPiA+IG9jb2RlVXBkYXRl RHhlLmluZg0KPiA+DQo+ID4gSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvQ2Fwc3VsZS9MaWJyYXJ5 L01pY3JvY29kZUZsYXNoQQ0KPiA+IGNjZXNzTGliTnVsbC9NaWNyb2NvZGVGbGFzaEFjY2Vzc0xp Yk51bGwuaW5mDQo+ID4gKw0KPiA+IEludGVsU2lsaWNvblBrZy9GZWF0dXJlL1NoYWRvd01pY3Jv Y29kZS9TaGFkb3dNaWNyb2NvZGUNCj4gPiBQZWkuaW5mDQo+ID4NCj4gPiBJbnRlbFNpbGljb25Q a2cvTGlicmFyeS9QZWlEeGVTbW1Cb290TWVkaWFMaWIvUGVpRmlybXdhDQo+ID4gcmVCb290TWVk aWFMaWIuaW5mDQo+ID4NCj4gPiBJbnRlbFNpbGljb25Qa2cvTGlicmFyeS9QZWlEeGVTbW1Cb290 TWVkaWFMaWIvRHhlU21tRmlyDQo+ID4gbXdhcmVCb290TWVkaWFMaWIuaW5mDQo+ID4NCj4gPiAt LQ0KPiA+IDIuMTkuMS53aW5kb3dzLjENCj4gPg0KPiA+DQo+ID4gDQoNCg==