From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: jian.j.wang@intel.com) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by groups.io with SMTP; Mon, 29 Apr 2019 18:16:24 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Apr 2019 18:16:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,411,1549958400"; d="scan'208";a="139951561" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga006.jf.intel.com with ESMTP; 29 Apr 2019 18:16:23 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 29 Apr 2019 18:16:22 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 29 Apr 2019 18:16:22 -0700 Received: from shsmsx107.ccr.corp.intel.com ([169.254.9.7]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.216]) with mapi id 14.03.0415.000; Tue, 30 Apr 2019 09:16:20 +0800 From: "Wang, Jian J" To: Laszlo Ersek , "devel@edk2.groups.io" , "Lu, XiaoyuX" CC: "Ye, Ting" Subject: Re: [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLib: updata HMAC_ctx size Thread-Topic: [edk2-devel] [PATCH 3/3] CryptoPkg/BaseCryptLib: updata HMAC_ctx size Thread-Index: AQHU/mPfKCBpyRd39kqrXhMlrx57lKZS8JQAgADyfgA= Date: Tue, 30 Apr 2019 01:16:19 +0000 Message-ID: References: <1556525727-14875-1-git-send-email-xiaoyux.lu@intel.com> <1556525727-14875-4-git-send-email-xiaoyux.lu@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjk0N2Y5NDEtZTZiYi00MWI0LTg2NjAtNzZlZWI5N2VhZTBhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiVTdrTzJSbGl5QVdDUHBlSkJCSm5NN1BGa0hEZ3RQT3VBaW8yZllmQ3ZuYzhOdUdtQ2V2Z2YwdzJscEg3SzhQXC8ifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 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 TGFzemxvLA0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxv IEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmls IDMwLCAyMDE5IDI6MzEgQU0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBMdSwgWGlhb3l1 WCA8eGlhb3l1eC5sdUBpbnRlbC5jb20+DQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5n QGludGVsLmNvbT47IFllLCBUaW5nIDx0aW5nLnllQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggMy8zXSBDcnlwdG9Qa2cvQmFzZUNyeXB0TGliOiB1cGRhdGEN Cj4gSE1BQ19jdHggc2l6ZQ0KPiANCj4gT24gMDQvMjkvMTkgMTA6MTUsIFhpYW95dSBsdSB3cm90 ZToNCj4gPiBGcm9tOiBYaWFveXUgTHUgPHhpYW95dXgubHVAaW50ZWwuY29tPg0KPiA+DQo+ID4g T3BlbnNzbCBpbnRlcm5hbGx5IHJlZGVmaW5lcyB0aGUgc2l6ZSBvZiBITUFDX0NUWCwNCj4gPiBi dXQgdGhlcmUgaXMgbm8gZXh0ZXJuYWwgZGVmaW5pdGlvbi4NCj4gPiBTbyBhZGQgYW4gYWRkaXRp b25hbCBudWJtZXIuDQo+ID4NCj4gPiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVs LmNvbT4NCj4gPiBDYzogVGluZyBZZSA8dGluZy55ZUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9m Zi1ieTogWGlhb3l1IEx1IDx4aWFveXV4Lmx1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgQ3J5 cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjTWQ1LmMgICAgfCAxMSAr KysrKysrKysrLQ0KPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9Dcnlw dEhtYWNTaGExLmMgICB8IDEyICsrKysrKysrKystLQ0KPiA+ICBDcnlwdG9Qa2cvTGlicmFyeS9C YXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGEyNTYuYyB8IDEyICsrKysrKysrKystDQo+IC0N Cj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQ0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IbWFj L0NyeXB0SG1hY01kNS5jDQo+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMv Q3J5cHRIbWFjTWQ1LmMNCj4gPiBpbmRleCAzMTM0ODA2Li4zZmZiOGUyIDEwMDY0NA0KPiA+IC0t LSBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9IbWFjL0NyeXB0SG1hY01kNS5jDQo+ ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjTWQ1 LmMNCj4gPiBAQCAtOSw4ICs5LDE3IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4gICNpbmNsdWRlICJJbnRlcm5hbENyeXB0TGliLmgiDQo+ID4gICNp bmNsdWRlIDxvcGVuc3NsL2htYWMuaD4NCj4gPg0KPiA+ICsvLw0KPiA+ICsvLyBOT1RFOiBITUFD X01BWF9NRF9DQkxPQ0sgaXMgZGVwcmVjYXRlZC4NCj4gPiArLy8gICAgICAgI2RlZmluZSBITUFD X01BWF9NRF9DQkxPQ0sgMTI4DQo+ID4gKy8vICAgICAgIE9wZW5zc2wgcmVkZWZpbmVzIHRoZSBz aXplIG9mIEhNQUNfQ1RYIGF0IGNyeXB0by9obWFjL2htYWNfbGNsLmgNCj4gPiArLy8gICAgICAg I2RlZmluZSBITUFDX01BWF9NRF9DQkxPQ0tfU0laRSAgICAgMTQ0DQo+ID4gKy8vICAgICAgIEJ1 dCB3ZSBuZWVkIHRvIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBBUEkuDQo+ID4gKy8vICAgICAg IFNvIGZpeCBpdCB3aXRoIGNvcnJlY3Qgc2l6ZSAxNDQtMTI4ID0gMTYuDQo+ID4gKy8vDQo+ID4g ICNkZWZpbmUgSE1BQ19NRDVfQ1RYX1NJWkUgICAgc2l6ZW9mKHZvaWQgKikgKiA0ICsgc2l6ZW9m KHVuc2lnbmVkIGludCkgKyBcDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHVuc2lnbmVkIGNoYXIpICogSE1BQ19NQVhfTURfQ0JMT0NLDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogKEhNQUNfTUFYX01EX0NC TE9DSyArIDE2KQ0KPiA+ICsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICBSZXRyaWV2ZXMgdGhlIHNp emUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIEhNQUMtTUQ1 DQo+IG9wZXJhdGlvbnMuDQo+ID4gZGlmZiAtLWdpdCBhL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IbWFjL0NyeXB0SG1hY1NoYTEuYw0KPiBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VD cnlwdExpYi9IbWFjL0NyeXB0SG1hY1NoYTEuYw0KPiA+IGluZGV4IGJiZTNkZjQuLmU1OTYwMmUg MTAwNjQ0DQo+ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5 cHRIbWFjU2hhMS5jDQo+ID4gKysrIGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0ht YWMvQ3J5cHRIbWFjU2hhMS5jDQo+ID4gQEAgLTksOCArOSwxNiBAQCBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICAjaW5jbHVkZSAiSW50ZXJuYWxDcnlw dExpYi5oIg0KPiA+ICAjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+DQo+ID4NCj4gPiAtI2RlZmlu ZSBITUFDX1NIQTFfQ1RYX1NJWkUgICBzaXplb2Yodm9pZCAqKSAqIDQgKyBzaXplb2YodW5zaWdu ZWQgaW50KSArIFwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5z aWduZWQgY2hhcikgKiBITUFDX01BWF9NRF9DQkxPQ0sNCj4gPiArLy8NCj4gPiArLy8gTk9URTog SE1BQ19NQVhfTURfQ0JMT0NLIGlzIGRlcHJlY2F0ZWQuDQo+ID4gKy8vICAgICAgICNkZWZpbmUg SE1BQ19NQVhfTURfQ0JMT0NLIDEyOA0KPiA+ICsvLyAgICAgICBPcGVuc3NsIHJlZGVmaW5lcyB0 aGUgc2l6ZSBvZiBITUFDX0NUWCBhdCBjcnlwdG8vaG1hYy9obWFjX2xjbC5oDQo+ID4gKy8vICAg ICAgICNkZWZpbmUgSE1BQ19NQVhfTURfQ0JMT0NLX1NJWkUgICAgIDE0NA0KPiA+ICsvLyAgICAg ICBCdXQgd2UgbmVlZCB0byBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgQVBJLg0KPiA+ICsvLyAg ICAgICBTbyBmaXggaXQgd2l0aCBjb3JyZWN0IHNpemUgMTQ0LTEyOCA9IDE2Lg0KPiA+ICsvLw0K PiA+ICsjZGVmaW5lICBITUFDX1NIQTFfQ1RYX1NJWkUgICBzaXplb2Yodm9pZCAqKSAqIDQgKyBz aXplb2YodW5zaWduZWQgaW50KSArIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YodW5zaWduZWQgY2hhcikgKiAoSE1BQ19NQVhfTURfQ0JMT0NLICsgMTYpDQo+ID4N Cj4gPiAgLyoqDQo+ID4gICAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNv bnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLVNIQTENCj4gb3BlcmF0aW9ucy4NCj4gPiBk aWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFj U2hhMjU2LmMNCj4gYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEht YWNTaGEyNTYuYw0KPiA+IGluZGV4IGFjOTA4NGYuLjhkMDU3MGIgMTAwNjQ0DQo+ID4gLS0tIGEv Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjU2hhMjU2LmMNCj4g PiArKysgYi9DcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGEy NTYuYw0KPiA+IEBAIC05LDggKzksMTYgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiAgI2luY2x1ZGUgIkludGVybmFsQ3J5cHRMaWIuaCINCj4gPiAg I2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPg0KPiA+DQo+ID4gLSNkZWZpbmUgSE1BQ19TSEEyNTZf Q1RYX1NJWkUgICBzaXplb2Yodm9pZCAqKSAqIDQgKyBzaXplb2YodW5zaWduZWQgaW50KSArIFwN Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBjaGFy KSAqIEhNQUNfTUFYX01EX0NCTE9DSw0KPiA+ICsvLw0KPiA+ICsvLyBOT1RFOiBITUFDX01BWF9N RF9DQkxPQ0sgaXMgZGVwcmVjYXRlZC4NCj4gPiArLy8gICAgICAgI2RlZmluZSBITUFDX01BWF9N RF9DQkxPQ0sgMTI4DQo+ID4gKy8vICAgICAgIE9wZW5zc2wgcmVkZWZpbmVzIHRoZSBzaXplIG9m IEhNQUNfQ1RYIGF0IGNyeXB0by9obWFjL2htYWNfbGNsLmgNCj4gPiArLy8gICAgICAgI2RlZmlu ZSBITUFDX01BWF9NRF9DQkxPQ0tfU0laRSAgICAgMTQ0DQo+ID4gKy8vICAgICAgIEJ1dCB3ZSBu ZWVkIHRvIGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyBBUEkuDQo+ID4gKy8vICAgICAgIFNvIGZp eCBpdCB3aXRoIGNvcnJlY3Qgc2l6ZSAxNDQtMTI4ID0gMTYuDQo+ID4gKy8vDQo+ID4gKyNkZWZp bmUgSE1BQ19TSEEyNTZfQ1RYX1NJWkUgICAgc2l6ZW9mKHZvaWQgKikgKiA0ICsgc2l6ZW9mKHVu c2lnbmVkIGludCkgKw0KPiBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHVuc2lnbmVkIGNoYXIpICogKEhNQUNfTUFYX01EX0NCTE9DSyArIDE2KQ0KPiA+DQo+ID4g IC8qKg0KPiA+ICAgIFJldHJpZXZlcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0 IGJ1ZmZlciByZXF1aXJlZCBmb3IgSE1BQy1TSEEyNTYNCj4gb3BlcmF0aW9ucy4NCj4gPg0KPiAN Cj4gSSBiZWxpZXZlIEkgZGlzYWdyZWUgd2l0aCB0aGlzIHBhdGNoLg0KPiANCj4gVGhlIGlzc3Vl IGlzIHdlbGwgZGVzY3JpYmVkIGhlcmU6DQo+IA0KPiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVu c3NsL29wZW5zc2wvcHVsbC80MzM4DQo+IA0KPiBBbmQgdGhlIHJlYWwgc29sdXRpb24sIGZvciBl ZGsyLCBpcyBhcHBhcmVudGx5IGRlc2NyaWJlZCBpbiBlZGsyDQo+IGFscmVhZHk6DQo+IA0KPiBb Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL0htYWMvQ3J5cHRIbWFjTWQ1LmNdOg0KPiAN Cj4gPiAvKioNCj4gPiAgIFJldHJpZXZlcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250 ZXh0IGJ1ZmZlciByZXF1aXJlZCBmb3IgSE1BQy1NRDUNCj4gb3BlcmF0aW9ucy4NCj4gPiAgIChO T1RFOiBUaGlzIEFQSSBpcyBkZXByZWNhdGVkLg0KPiA+ICAgICAgICAgIFVzZSBIbWFjTWQ1TmV3 KCkgLyBIbWFjTWQ1RnJlZSgpIGZvciBITUFDLU1ENSBDb250ZXh0DQo+IG9wZXJhdGlvbnMuKQ0K PiA+DQo+ID4gICBAcmV0dXJuICBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1 ZmZlciByZXF1aXJlZCBmb3IgSE1BQy1NRDUNCj4gb3BlcmF0aW9ucy4NCj4gPg0KPiA+ICoqLw0K PiA+IFVJTlRODQo+ID4gRUZJQVBJDQo+ID4gSG1hY01kNUdldENvbnRleHRTaXplICgNCj4gPiAg IFZPSUQNCj4gPiAgICkNCj4gPiB7DQo+ID4gICAvLw0KPiA+ICAgLy8gUmV0cmlldmVzIHRoZSBP cGVuU1NMIEhNQUMtTUQ1IENvbnRleHQgU2l6ZQ0KPiA+ICAgLy8gTk9URTogSE1BQ19DVFggb2Jq ZWN0IHdhcyBtYWRlIG9wYXF1ZSBpbiBvcGVuc3NsLTEuMS54LCBoZXJlIHdlIGp1c3QNCj4gdXNl IHRoZQ0KPiA+ICAgLy8gICAgICAgZml4ZWQgc2l6ZSBhcyBhIHdvcmthcm91bmQgdG8gbWFrZSB0 aGlzIEFQSSB3b3JrIGZvciBjb21wYXRpYmlsaXR5Lg0KPiA+ICAgLy8gICAgICAgV2Ugc2hvdWxk IHJldGlyZSBIbWFjTWQ1R2V0Q29udGV4dFNpemUoKSBpbiBmdXR1cmUsIGFuZCB1c2UNCj4gSG1h Y01kNU5ldygpDQo+ID4gICAvLyAgICAgICBhbmQgSG1hY01kNUZyZWUoKSBmb3IgY29udGV4dCBh bGxvY2F0aW9uIGFuZCByZWxlYXNlLg0KPiA+ICAgLy8NCj4gPiAgIHJldHVybiAoVUlOVE4pIEhN QUNfTUQ1X0NUWF9TSVpFOw0KPiA+IH0NCj4gDQo+IFtDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5 cHRMaWIvSG1hYy9DcnlwdEhtYWNTaGExLmNdOg0KPiANCj4gPiAvKioNCj4gPiAgIFJldHJpZXZl cyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBjb250ZXh0IGJ1ZmZlciByZXF1aXJlZCBmb3Ig SE1BQy1TSEExDQo+IG9wZXJhdGlvbnMuDQo+ID4gICAoTk9URTogVGhpcyBBUEkgaXMgZGVwcmVj YXRlZC4NCj4gPiAgICAgICAgICBVc2UgSG1hY1NoYTFOZXcoKSAvIEhtYWNTaGExRnJlZSgpIGZv ciBITUFDLVNIQTEgQ29udGV4dA0KPiBvcGVyYXRpb25zLikNCj4gPg0KPiA+ICAgQHJldHVybiAg VGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIEhN QUMtU0hBMQ0KPiBvcGVyYXRpb25zLg0KPiA+DQo+ID4gKiovDQo+ID4gVUlOVE4NCj4gPiBFRklB UEkNCj4gPiBIbWFjU2hhMUdldENvbnRleHRTaXplICgNCj4gPiAgIFZPSUQNCj4gPiAgICkNCj4g PiB7DQo+ID4gICAvLw0KPiA+ICAgLy8gUmV0cmlldmVzIHRoZSBPcGVuU1NMIEhNQUMtU0hBMSBD b250ZXh0IFNpemUNCj4gPiAgIC8vIE5PVEU6IEhNQUNfQ1RYIG9iamVjdCB3YXMgbWFkZSBvcGFx dWUgaW4gb3BlbnNzbC0xLjEueCwgaGVyZSB3ZSBqdXN0DQo+IHVzZSB0aGUNCj4gPiAgIC8vICAg ICAgIGZpeGVkIHNpemUgYXMgYSB3b3JrYXJvdW5kIHRvIG1ha2UgdGhpcyBBUEkgd29yayBmb3Ig Y29tcGF0aWJpbGl0eS4NCj4gPiAgIC8vICAgICAgIFdlIHNob3VsZCByZXRpcmUgSG1hY1NoYTE1 R2V0Q29udGV4dFNpemUoKSBpbiBmdXR1cmUsIGFuZCB1c2UNCj4gSG1hY1NoYTFOZXcoKQ0KPiA+ ICAgLy8gICAgICAgYW5kIEhtYWNTaGExRnJlZSgpIGZvciBjb250ZXh0IGFsbG9jYXRpb24gYW5k IHJlbGVhc2UuDQo+ID4gICAvLw0KPiA+ICAgcmV0dXJuIChVSU5UTikgSE1BQ19TSEExX0NUWF9T SVpFOw0KPiA+IH0NCj4gDQo+IFtDcnlwdG9Qa2cvTGlicmFyeS9CYXNlQ3J5cHRMaWIvSG1hYy9D cnlwdEhtYWNTaGEyNTYuY106DQo+IA0KPiA+IC8qKg0KPiA+ICAgUmV0cmlldmVzIHRoZSBzaXpl LCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFDLVNIQTI1 Ng0KPiBvcGVyYXRpb25zLg0KPiA+ICAgKE5PVEU6IFRoaXMgQVBJIGlzIGRlcHJlY2F0ZWQuDQo+ ID4gICAgICAgICAgVXNlIEhtYWNTaGEyNTZOZXcoKSAvIEhtYWNTaGEyNTZGcmVlKCkgZm9yIEhN QUMtU0hBMjU2IENvbnRleHQNCj4gb3BlcmF0aW9ucy4pDQo+ID4NCj4gPiAgIEByZXR1cm4gIFRo ZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBITUFD LVNIQTI1Ng0KPiBvcGVyYXRpb25zLg0KPiA+DQo+ID4gKiovDQo+ID4gVUlOVE4NCj4gPiBFRklB UEkNCj4gPiBIbWFjU2hhMjU2R2V0Q29udGV4dFNpemUgKA0KPiA+ICAgVk9JRA0KPiA+ICAgKQ0K PiA+IHsNCj4gPiAgIC8vDQo+ID4gICAvLyBSZXRyaWV2ZXMgdGhlIE9wZW5TU0wgSE1BQy1TSEEy NTYgQ29udGV4dCBTaXplDQo+ID4gICAvLyBOT1RFOiBITUFDX0NUWCBvYmplY3Qgd2FzIG1hZGUg b3BhcXVlIGluIG9wZW5zc2wtMS4xLngsIGhlcmUgd2UganVzdA0KPiB1c2UgdGhlDQo+ID4gICAv LyAgICAgICBmaXhlZCBzaXplIGFzIGEgd29ya2Fyb3VuZCB0byBtYWtlIHRoaXMgQVBJIHdvcmsg Zm9yIGNvbXBhdGliaWxpdHkuDQo+ID4gICAvLyAgICAgICBXZSBzaG91bGQgcmV0aXJlIEhtYWNT aGEyNTZHZXRDb250ZXh0U2l6ZSgpIGluIGZ1dHVyZSwgYW5kIHVzZQ0KPiBIbWFjU2hhMjU2TmV3 KCkNCj4gPiAgIC8vICAgICAgIGFuZCBIbWFjU2hhMjU2RnJlZSgpIGZvciBjb250ZXh0IGFsbG9j YXRpb24gYW5kIHJlbGVhc2UuDQo+ID4gICAvLw0KPiA+ICAgcmV0dXJuIChVSU5UTilITUFDX1NI QTI1Nl9DVFhfU0laRTsNCj4gPiB9DQo+IA0KPiBJcyB0aGVyZSBhbnkgcmVhc29uIHdoeSB3ZSBj YW4ndCBjbGVhbiB1cCB0aGlzIGNvZGUgZmlyc3QsIGluIGEgc2VwYXJhdGUNCj4gcGF0Y2ggc2Vy aWVzLCBiZWZvcmUgbW92aW5nIHRvIE9wZW5TU0wgMS4xLjE/DQo+IA0KPiBCZWNhdXNlLCB0aGUg Ik5PVEUicyBhcmUgbW9yZSB0aGFuIHR3byB5ZWFycyBvbGQgbm93Li4uIFRoZXkgY29tZSBmcm9t DQo+IGNvbW1pdCA0YzI3MDI0Mzk5NWEgKCJDcnlwdG9Qa2c6IFVwZGF0ZSBITUFDIFdyYXBwZXIg d2l0aCBvcGFxdWUNCj4gSE1BQ19DVFggb2JqZWN0LiIsIDIwMTctMDMtMjkpLg0KPiANCj4gVGhp cyBoYXMgYmVlbiBvdXIgdGVjaG5pY2FsIGRlYnQgZXZlciBzaW5jZSwgdmlvbGF0aW5nIHRoZSBP cGVuU1NMDQo+IGVmZm9ydCB0byBoaWRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgdGhpbmsg d2Ugc2hvdWxkIGVsaW1pbmF0ZSB0aGlzDQo+IGRlYnQsIHJhdGhlciB0aGFuIG1ha2UgaXQgd29y c2UuDQo+IA0KPiAoT2J2aW91c2x5IHRoaXMgaXMganVzdCBteSBvcGluaW9uLCBhbmQgSSdtIG5v dCBhIENyeXB0b1BrZw0KPiBjby1tYWludGFpbmVyLikNCj4gDQoNCkkgYWdyZWUgdGhhdCB3ZSBu ZWVkIHRvIGNsZWFuIHVwIHRoZSBkZXByZWNhdGVkIG1hY3JvcyBhbmQgYXBpLiBUaGUgcHJvYmxl bQ0KaXMgdGhhdCBYeHhHZXRDb250ZXh0U2l6ZSgpIGFyZSBwdWJsaWMgQVBJcyBhbmQgdGhlcmUn cmUgZG96ZW5zIG9mIG1vZHVsZXMgd2hpY2gNCnN0aWxsIGNhbGwgdGhlbS4gVGhpcyBjYW4ndCBi ZSBkb25lIGluIHNob3J0IHRpbWUuIFdoYXQgYWJvdXQgd2UgZmlsZSBhIEJaIHRvIHRyYWNrDQp0 aGlzIGlzc3VlIGFuZCB0YXJnZXQgdG8gbmV4dCBzdGFibGUgdGFnPw0KDQpSZWdhcmRzLA0KSmlh bg0KDQo+IFRoYW5rcw0KPiBMYXN6bG8NCg==