From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: ray.ni@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Wed, 31 Jul 2019 19:23:37 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jul 2019 19:23:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,332,1559545200"; d="scan'208";a="163407253" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga007.jf.intel.com with ESMTP; 31 Jul 2019 19:23:36 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 31 Jul 2019 19:23:36 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 31 Jul 2019 19:23:34 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Wed, 31 Jul 2019 19:23:34 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.112]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.15]) with mapi id 14.03.0439.000; Thu, 1 Aug 2019 10:23:32 +0800 From: "Ni, Ray" To: "Yao, Jiewen" , "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Dong, Eric" , "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH v2 2/2] UefiCpuPkg/PiSmmCpu: PcdCpuSmmAccessOut controls SMM access-out policy Thread-Topic: [edk2-devel] [PATCH v2 2/2] UefiCpuPkg/PiSmmCpu: PcdCpuSmmAccessOut controls SMM access-out policy Thread-Index: AQHVR/WU6Iz8BO8X30eoNUShJHkQl6bk4uAAgACY32D//4HjAIAAkNFw Date: Thu, 1 Aug 2019 02:23:32 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C266CC5@SHSMSX104.ccr.corp.intel.com> References: <20190731163852.191708-1-ray.ni@intel.com> <20190731163852.191708-3-ray.ni@intel.com>,<50b073a1-bf04-4b8a-e267-2af933d34c5c@redhat.com> <734D49CCEBEEF84792F5B80ED585239D5C266BC4@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F738DCC@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F738DCC@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYWViNTU5ZDctYzNiNi00OWUxLWJlZjgtZmJkZWViZjU1YzkxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiSGQ0RHN0ZW44OFZ3Vm1taGdZSEg3M3BJY1FmN2Z3V2ZsejVpaWMyZkx0bVkxNVhuZ1R0Y2FCNnA5WDJaaXJHQyJ9 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: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgSmlld2VuLA0KDQo+IA0KPiBJIGFncmVlIHRoYXQgd2Ugb25seSBuZWVkIHN1cHBvcnQgIzIg YW5kICMzLg0KPiANCj4gV2UgbmVlZCBvbmUgUENEOg0KPiAxKSBpZiBpdCBpcyBzZXQgdG8gVFJV RSwgaXQgbG9ja3MgU01NIHBhZ2luZyAobWFrZSBpdCBzdGF0aWMpLCBvbmx5IGFsbG93cyBTTU0g YWNjZXNzIFJTVkQsIEFDUElOVlMsIFJ1bnRpbWUsIGFzIGNvbW0gYnVmZmVyLA0KPiBwbHVzIE1N SU8gZm9yIGRldmljZSBhY2Nlc3MuIFRoYXQgaXMgc2VjdXJlIGNvbmZpZ3VyYXRpb24uDQo+IDIp IGl0IGlzIEZBTFNFLCBpdCBhbGxvd3MgU01NIHRvIGFjY2VzcyBPUyBtZW1vcnkuIEl0IGNvdWxk IGJlIHN0YXRpYyBvciBkeW5hbWljIHBhZ2luZy4NCj4gDQo+IA0KPiBQY2RDcHVTbW1BY2Nlc3NP dXQgc2VlbXMgYWxzbyBjb25mdXNpbmcuDQo+IAlXaGF0ICJPdXQiIG1lYW5zID8/Pw0KPiAJV2hh dCBPdXQ9RmFsc2UgbWVhbnM/IE9ubHkgYWxsb3cgaW5zaWRlIFNNUkFNIGFjY2Vzcz8NCj4gQW55 d2F5LCBJIGFtIG9wZW4gZm9yIHRoZSBuYW1pbmcgcHJvcG9zYWwuDQoNClNtbUFjY2Vzc091dCA9 IFNNTSBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgU01SQU0uDQpNeSBleHBlcmllbmNlIGlzIHNvbWV0 aW1lcyBzb21lb25lIG1heSB0aGluayB1cCBhIHBlcnNvbmFsbHkgcHJlZmVycmVkIG5hbWUgYnV0 IG1heSBiZSB2ZXJ5IGNvbmZ1c2luZyB0byBvdGhlcnMuIEkgYWxzbyB3YW50IHRvIGF2b2lkIHRo YXQuDQoNCkRvIHlvdSBoYXZlIGEgbmFtZSBwcm9wb3NhbD8NCg0KPiANCj4gDQo+IA0KPiBUaGFu ayB5b3UNCj4gWWFvIEppZXdlbg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiA+IEZyb206IE5pLCBSYXkNCj4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDEsIDIwMTkgOToy OCBBTQ0KPiA+IFRvOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbzsNCj4gPiBsZXJzZWtAcmVkaGF0LmNvbQ0KPiA+IENjOiBEb25nLCBFcmlj IDxlcmljLmRvbmdAaW50ZWwuY29tPjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5j b20+DQo+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjIgMi8yXSBVZWZpQ3B1 UGtnL1BpU21tQ3B1Og0KPiA+IFBjZENwdVNtbUFjY2Vzc091dCBjb250cm9scyBTTU0gYWNjZXNz LW91dCBwb2xpY3kNCj4gPg0KPiA+ID4gQmVsb3cgaXMgbXkgdGhvdWdodCwgcGxlYXNlIGNvcnJl Y3QgaWYgSSBhbSB3cm9uZy4NCj4gPiA+IDEpIFN0YXRpY1BhZ2luZz1mYWxzZSwgQWNjZXNzT3V0 PWZhbHNlOiBpdCBzZWVtcyBpbnZhbGlkLiBJZiB3ZSBkb26hr3QNCj4gPiBzdXBwb3J0IGFjY2Vz cyBvdXQsIHdoeSB3ZSBuZWVkIGR5bmFtaWMgcGFnaW5nPw0KPiA+ID4gMikgU3RhdGljUGFnaW5n PWZhbHNlLCBBY2Nlc3NPdXQ9dHJ1ZTogaXQgc2VlbXMgdmFsaWQuIFdlIG5lZWQgYWNjZXNzIG91 dCwNCj4gPiBidXQgd2Ugb25seSB3YW50IGEgc21hbGwgcGFnaW5nIGluIHRoZSBiZWdpbm5pbmcu IEFzDQo+ID4gPiBzdWNoIHdlIHVzZSBkeW5hbWljIHBhZ2luZy4gVGhpcyBpcyB0byBzdXBwb3J0 IEhvdHBsdWcgbWVtb3J5Lg0KPiA+ID4gMykgU3RhdGljUGFnaW5nPXRydWUsIEFjY2Vzc091dD1m YWxzZTogaXQgc2VlbXMgdmFsaWQuIFRoZSBpcyBzZWN1cmUNCj4gPiBjb25maWd1cmF0aW9uLg0K PiA+ID4gNCkgU3RhdGljUGFnaW5nPXRydWUsIEFjY2Vzc091dD10cnVlOiBpdCBzZWVtcyB2YWxp ZCwgYnV0IEkgZG8gbm90IHNlZSB0aGUNCj4gPiB2YWx1ZSB0byBzdXBwb3J0IHRoaXMuIElmIHdl IGFsd2F5cyBhbGxvdyBhY2Nlc3Mgb3V0LA0KPiA+ID4gd2hhdCBpcyB0aGUgdmFsdWUgdG8gc2V0 IHN0YXRpYyBwYWdpbmcuIE9yIHdoeSB3ZSBjYXJlIHRoZSBwYWdpbmcgaXMgc3RhdGljDQo+ID4g b3IgZHluYW1pYz8NCj4gPg0KPiA+DQo+ID4gSmlld2VuLA0KPiA+IFRoZSB2YWx1ZSBvZiBzdGF0 aWMgcGFnaW5nIGlzIHRvIHJlZHVjZSBwYWdlIHRhYmxlIFNNUkFNIGNvbnN1bXB0aW9uLiBXZQ0K PiA+IGNvdWxkIGNyZWF0ZSB0aGUgcGFnZSB0YWJsZSBpbiBhZHZhbmNlIGFuZCB0aGF0DQo+ID4g cGFnZSB0YWJsZSBwZXJtaXRzIHNtbSBhY2Nlc3Mgb3V0Lg0KPiA+DQo+ID4gPg0KPiA+ID4gQXMg c3VjaCBJIHJlY29tbWVuZCB3ZSBvbmx5IHN1cHBvcnQgIzIgYW5kICMzLg0KPiA+DQo+ID4gU3Vw cG9ydGluZyAjMiBhbmQgIzMgaXMgYmFzZWQgb24gcmVhbCByZXF1aXJlbWVudCwgbm90IGZyb20g YWJvdmUNCj4gPiBkaXNjdXNzaW9uIG9mIDQgY29tYmluYXRpb25zLg0KPiA+DQo+ID4gPg0KPiA+ ID4gQWdhaW4sIGlmIHRoZSBuYW1pbmcgaXMgY29uZnVzaW5nLCBJIGFncmVlIHdlIHNob3VsZCBj bGFyaWZ5IG9yIGV2ZW4gcmVuYW1lLg0KPiA+DQo+ID4gSSBhbHNvIGFncmVlIHRoYXQgaGF2aW5n IGZld2VyIFBDRHMgdG8gcHJvdmlkZSBmZXdlciBjb25maWd1cmF0aW9ucy4gSXQgYWxzbw0KPiA+ IHJlZHVjZXMgdmFsaWRhdGlvbiBlZmZvcnQuDQo+ID4NCj4gPiBKaWV3ZW4gJiBMYXN6bG8sDQo+ ID4gRG8geW91IGFncmVlIHRoYXQgd2l0aCBvbmx5ICMyIGFuZCAjMyBzdXBwb3J0ZWQsIHRoZSBl eGlzdGluZyBQQ0QgY2FuIGJlDQo+ID4gcmVuYW1lZCB0byBQY2RDcHVTbW1BY2Nlc3NPdXQ/DQo+ ID4gSWYgQWNjZXNzT3V0PXRydWUsIGl0IGltcGxpZXMgc3RhdGljIHBhZ2luZyBpcyBub3QgdXNl ZC4NCj4gPiBJZiBBY2Nlc3NPdXQ9ZmFsc2UsIGl0IGltcGxpZXMgc3RhdGljIHBhZ2luZyBpcyB1 c2VkLg0KPiA+DQo+ID4gTXkgZ29hbCBpcyB0byBoYXZlIGEgd2F5IHRvIGFsbG93IFJBUyBjb2Rl IGFjY2VzcyBvdXQgZnJvbSBTTU0gYWZ0ZXINCj4gPiBSZWFkeVRvTG9jay4NCj4gPiBBbnkgc29s dXRpb24gdGhhdCBjYW4gbWVldCB0aGlzIGdvYWwgaXMgb2sgdG8gbWUuIEkgZG9uJ3Qgd2FudCB0 byBhZGQNCj4gPiBjb25mdXNpbmcvdW5uZWNlc3NhcnktY29tcGxleGl0eSBkdWUgdG8gdGhpcyBn b2FsLg0KPiA+DQo+ID4gPiBXaGF0IEkgYW0gdHJ5aW5nIHRvIGFjaGlldmUgaXMgdG8gbGltaXQg dGhlIG51bWJlciBvZiBzdXBwb3J0ZWQNCj4gPiBjb21iaW5hdGlvbiB0byByZWR1Y2UgdGhlIGVm Zm9ydCBvZiB2YWxpZGF0aW9uIGFuZCBtYWludGVuYW5jZS4NCj4gPiA+DQo+ID4gPiB0aGFuayB5 b3UhDQo+ID4gPiBZYW8sIEppZXdlbg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+INTaIDIwMTnE6jjU wjHI1aOsyc/O5zc6MTOjrExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+INC0DQo+ID4g tcCjug0KPiA+ID4gPg0KPiA+ID4gPiBIaSBSYXksIEppZXdlbiwNCj4gPiA+ID4NCj4gPiA+ID4g SSd2ZSBnb3Qgc2V2ZXJhbCBjb21tZW50cyAvIHF1ZXN0aW9uczoNCj4gPiA+ID4NCj4gPiA+ID4+ IE9uIDA3LzMxLzE5IDE4OjM4LCBOaSwgUmF5IHdyb3RlOg0KPiA+ID4gPj4gVGhpcyBwYXRjaCBz a2lwcyB0byB1cGRhdGUgcGFnZSB0YWJsZSBmb3Igbm9uLVNNUkFNIG1lbW9yeSB3aGVuDQo+ID4g PiA+PiBQY2RDcHVTbW1BY2Nlc3NPdXQgaXMgVFJVRS4NCj4gPiA+ID4+IFNvIHRoYXQgd2hlbiBT TU0gYWNjZXNzZXMgb3V0LCBubyBwYWdlIGZhdWx0IGlzIHRyaWdnZXJlZCBhdCBhbGwuDQo+ID4g PiA+Pg0KPiA+ID4gPj4gU2lnbmVkLW9mZi1ieTogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0K PiA+ID4gPj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gPiA+ID4+IENj OiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+ID4+IENjOiBKaWFuIEog V2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gPj4gQ2M6IExhc3psbyBFcnNlayA8 bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4gPiA+PiAtLS0NCj4gPiA+ID4+IFVlZmlDcHVQa2cvUGlT bW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYyB8IDIxDQo+ID4gKysrKysrKysrKysrKysrKyst LS0tDQo+ID4gPiA+PiBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMgICAg fCAgMiArLQ0KPiA+ID4gPj4gMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA1IGRl bGV0aW9ucygtKQ0KPiA+ID4gPj4NCj4gPiA+ID4+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4gPiBiL1VlZmlDcHVQa2cvUGlTbW1DcHVE eGVTbW0vUGlTbW1DcHVEeGVTbW0uYw0KPiA+ID4gPj4gaW5kZXggNjlhMDRkZmIyMy4uNDI3YzMz ZmIwMSAxMDA2NDQNCj4gPiA+ID4+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlT bW1DcHVEeGVTbW0uYw0KPiA+ID4gPj4gKysrIGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9Q aVNtbUNwdUR4ZVNtbS5jDQo+ID4gPiA+PiBAQCAtMTMwLDYgKzEzMCwxMSBAQCBVSU5UOA0KPiA+ IG1QaHlzaWNhbEFkZHJlc3NCaXRzOw0KPiA+ID4gPj4gVUlOVDMyICAgICAgICAgICAgICAgICAg IG1TbW1DcjA7DQo+ID4gPiA+PiBVSU5UMzIgICAgICAgICAgICAgICAgICAgbVNtbUNyNDsNCj4g PiA+ID4+DQo+ID4gPiA+PiArLy8NCj4gPiA+ID4+ICsvLyBDYWNoZSBvZiBQY2RDcHVTbW1BY2Nl c3NPdXQNCj4gPiA+ID4+ICsvLw0KPiA+ID4gPj4gK0JPT0xFQU4gICAgICAgICAgICAgICAgICBt U21tQWNjZXNzT3V0Ow0KPiA+ID4gPj4gKw0KPiA+ID4gPj4gLyoqDQo+ID4gPiA+PiAgIEluaXRp YWxpemUgSURUIHRvIHNldHVwIGV4Y2VwdGlvbiBoYW5kbGVycyBmb3IgU01NLg0KPiA+ID4gPj4N Cj4gPiA+ID4+IEBAIC02MTAsNiArNjE1LDEyIEBAIFBpQ3B1U21tRW50cnkgKA0KPiA+ID4gPj4g ICBtU21tQ29kZUFjY2Vzc0NoZWNrRW5hYmxlID0gUGNkR2V0Qm9vbA0KPiA+IChQY2RDcHVTbW1D b2RlQWNjZXNzQ2hlY2tFbmFibGUpOw0KPiA+ID4gPj4gICBERUJVRyAoKEVGSV9EX0lORk8sICJQ Y2RDcHVTbW1Db2RlQWNjZXNzQ2hlY2tFbmFibGUgPSAlZFxuIiwNCj4gPiBtU21tQ29kZUFjY2Vz c0NoZWNrRW5hYmxlKSk7DQo+ID4gPiA+Pg0KPiA+ID4gPj4gKyAgLy8NCj4gPiA+ID4+ICsgIC8v IFNhdmUgdGhlIFBjZENwdVNtbUFjY2Vzc091dCB2YWx1ZSBpbnRvIGEgZ2xvYmFsIHZhcmlhYmxl Lg0KPiA+ID4gPj4gKyAgLy8NCj4gPiA+ID4+ICsgIG1TbW1BY2Nlc3NPdXQgPSBQY2RHZXRCb29s IChQY2RDcHVTbW1BY2Nlc3NPdXQpOw0KPiA+ID4gPj4gKyAgREVCVUcgKChERUJVR19JTkZPLCAi UGNkQ3B1U21tQWNjZXNzT3V0ID0gJWRcbiIsDQo+ID4gbVNtbUFjY2Vzc091dCkpOw0KPiA+ID4g Pj4gKw0KPiA+ID4gPj4gICAvLw0KPiA+ID4gPj4gICAvLyBTYXZlIHRoZSBQY2RQdGVNZW1vcnlF bmNyeXB0aW9uQWRkcmVzc09yTWFzayB2YWx1ZSBpbnRvIGENCj4gPiBnbG9iYWwgdmFyaWFibGUu DQo+ID4gPiA+PiAgIC8vIE1ha2Ugc3VyZSBBZGRyZXNzRW5jTWFzayBpcyBjb250YWluZWQgdG8g c21hbGxlc3Qgc3VwcG9ydGVkDQo+ID4gYWRkcmVzcyBmaWVsZC4NCj4gPiA+ID4NCj4gPiA+ID4g VGhlIGFib3ZlIGxvb2tzIGNvcnJlY3Q7IGhvd2V2ZXIsIHRoZSBQY2RHZXRCb29sKCkgY2FsbCBk ZXBlbmRzIG9uIHRoZQ0KPiA+ID4gPiBJTkYgZmlsZSBsaXN0aW5nIFBjZENwdVNtbUFjY2Vzc091 dC4NCj4gPiA+ID4NCj4gPiA+ID4gKDEpIFJheSwgZGlkIHlvdSBmb3JnZXQgdG8gc3RhZ2UgdGhl IElORiBmaWxlIHVwZGF0ZSBmb3IgdGhpcyBwYXRjaCBjb21taXQ/DQo+ID4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+PiBAQCAtMTQzMSwxMCArMTQ0MiwxMiBAQCBQZXJmb3JtUmVtYWluaW5nVGFza3Mg KA0KPiA+ID4gPj4gICAgIC8vDQo+ID4gPiA+PiAgICAgU2V0TWVtTWFwQXR0cmlidXRlcyAoKTsN Cj4gPiA+ID4+DQo+ID4gPiA+PiAtICAgIC8vDQo+ID4gPiA+PiAtICAgIC8vIEZvciBvdXRzaWRl IFNNUkFNLCB3ZSBvbmx5IG1hcCBTTU0gY29tbXVuaWNhdGlvbiBidWZmZXINCj4gPiBvciBNTUlP Lg0KPiA+ID4gPj4gLSAgICAvLw0KPiA+ID4gPj4gLSAgICBTZXRVZWZpTWVtTWFwQXR0cmlidXRl cyAoKTsNCj4gPiA+ID4+ICsgICAgaWYgKCFtU21tQWNjZXNzT3V0KSB7DQo+ID4gPiA+PiArICAg ICAgLy8NCj4gPiA+ID4+ICsgICAgICAvLyBGb3Igb3V0c2lkZSBTTVJBTSwgd2Ugb25seSBtYXAg U01NIGNvbW11bmljYXRpb24NCj4gPiBidWZmZXIgb3IgTU1JTy4NCj4gPiA+ID4+ICsgICAgICAv Lw0KPiA+ID4gPj4gKyAgICAgIFNldFVlZmlNZW1NYXBBdHRyaWJ1dGVzICgpOw0KPiA+ID4gPj4g KyAgICB9DQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgY2hhbmdlIGxvb2tzIE9LLiBJdCBzZWVtcyB0 byBjb25kaXRpb25hbGl6ZSB0aGUgbG9naWMgYWRkZWQgaW4NCj4gPiA+ID4gY29tbWl0IGQyZmM3 NzExMTM2YSAoIlVlZmlDcHVQa2cvUGlTbW1DcHU6IEFkZCBTTU0gQ29tbSBCdWZmZXINCj4gPiBQ YWdpbmcNCj4gPiA+ID4gUHJvdGVjdGlvbi4iLCAyMDE2LTEyLTE5KS4NCj4gPiA+ID4NCj4gPiA+ ID4gSG93ZXZlciwgdGhlIGNvbW1lbnQgY29uZnVzZXMgbWUgYSBiaXQ7IGl0IHNheXMgIlNNTSBj b21tdW5pY2F0aW9uDQo+ID4gPiA+IGJ1ZmZlciAqb3IgTU1JTyoiLg0KPiA+ID4gPg0KPiA+ID4g PiBJIGFzc3VtZSAiU01NIGNvbW11bmljYXRpb24gYnVmZmVyIiBjYW4gYmUgaW4gInJlc2VydmVk LCBydW50aW1lIGFuZA0KPiA+ID4gPiBBQ1BJIE5WUyIgUkFNLCBzbyB0aGF0IHBhcnQgbGlrZWx5 IG1hdGNoZXMgdGhlIG5ldyBQQ0QncyBleHBsYW5hdGlvbg0KPiA+ID4gPiBmcm9tIHBhdGNoIzEu IEJ1dCBNTUlPIGlzIG5vdCBtZW50aW9uZWQgaW4gcGF0Y2gjMS4NCj4gPiA+ID4NCj4gPiA+ID4g KDIpIFNob3VsZCB3ZSBleHRlbmQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBQQ0QgaW4gcGF0Y2gj MSwgd2l0aCBNTUlPPw0KPiA+ID4gPg0KPiA+ID4gPiBPciBpcyBNTUlPIGNvbnNpZGVyZWQgKnJ1 bnRpbWUqIE1NSU8gKGFuZCBzbyBjb3ZlcmVkIGJ5ICJydW50aW1lIik/DQo+ID4gPiA+DQo+ID4g PiA+Pg0KPiA+ID4gPj4gICAgIC8vDQo+ID4gPiA+PiAgICAgLy8gU2V0IHBhZ2UgdGFibGUgaXRz ZWxmIHRvIGJlIHJlYWQtb25seQ0KPiA+ID4gPg0KPiA+ID4gPiBJbiB0aGUgcHJldmlvdXMgdmVy c2lvbiBvZiB0aGUgcGF0Y2ggc2VyaWVzLCBuYW1lbHkNCj4gPiA+ID4NCj4gPiA+ID4gIFtlZGsy LWRldmVsXSBbUEFUQ0ggMy8zXQ0KPiA+ID4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdTogQWxsb3cg U01NIGFjY2Vzcy1vdXQgd2hlbiBzdGF0aWMgcGFnaW5nIGlzDQo+ID4gT0ZGDQo+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gaHR0cDovL21pZC5tYWlsLWFyY2hpdmUuY29tLzIwMTkwNzI3MDMyODUwLjMz Nzg0MC00LXJheS5uaUBpbnRlbC5jb20NCj4gPiA+ID4gIGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC9tZXNzYWdlLzQ0NDcwDQo+ID4gPiA+DQo+ID4gPiA+IHRoZSBuZXh0IG9wZXJhdGlv biAobmFtZWx5IFNldFBhZ2VUYWJsZUF0dHJpYnV0ZXMoKSkgd2FzDQo+ID4gY29uZGl0aW9uYWxp emVkDQo+ID4gPiA+IHRvby4gSXMgdGhhdCBubyBsb25nZXIgbmVjZXNzYXJ5LCB3aXRoIHRoZSBu ZXcgUENEPyBTaG91bGRuJ3Qgd2Ugc3RpbGwNCj4gPiA+ID4gY29uZGl0aW9uYWxpemUgU2V0UGFn ZVRhYmxlQXR0cmlidXRlcygpIG9uIHRoZSAqb3RoZXIqIChzdGF0aWMgcGFnaW5nKQ0KPiA+IFBD RD8NCj4gPiA+ID4NCj4gPiA+ID4gQWggd2FpdCwgd2UgYWxyZWFkeSBkbyBpdCEgU2V0UGFnZVRh YmxlQXR0cmlidXRlcygpIGhhcyB0d28NCj4gPiA+ID4gaW1wbGVtZW50YXRpb25zLCBvbmUgZm9y IElBMzIgYW5kIGFub3RoZXIgZm9yIFg2NC4NCj4gPiA+ID4NCj4gPiA+ID4gLSBUaGUgWDY0IHZh cmlhbnQgY2hlY2tzIGZvciBzdGF0aWMgcGFnZSB0YWJsZXMgaW50ZXJuYWxseSwgYW5kIGlmIHRo ZXkNCj4gPiA+ID4gYXJlIGRpc2FibGVkLCB0aGVuIFNldFBhZ2VUYWJsZUF0dHJpYnV0ZXMoKSBk b2VzIG5vdGhpbmcuDQo+ID4gPiA+DQo+ID4gPiA+IC0gVGhlIElBMzIgdmFyaWFudCBkb2VzIG5v dCBjb250YWluIHRoYXQgY2hlY2ssIGJlY2F1c2Ugb24gSUEzMiB0aGUgcGFnZQ0KPiA+ID4gPiB0 YWJsZXMgYXJlIGFsd2F5cyBidWlsdCBzdGF0aWNhbGx5Lg0KPiA+ID4gPg0KPiA+ID4gPiBTbyBT ZXRQYWdlVGFibGVBdHRyaWJ1dGVzKCkgYWxyZWFkeSBkZXBlbmRzIG9uIHN0YXRpYyBwYWdpbmcN Cj4gPiA+ID4gKmludGVybmFsbHkqLCBoZW5jZSBnYXRpbmcgdGhlIFNldFBhZ2VUYWJsZUF0dHJp YnV0ZXMoKSBjYWxsDQo+ID4gPiA+ICpleHRlcm5hbGx5KiwgbGlrZSBpdCB3YXMgZG9uZSBpbiB0 aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgcGF0Y2gNCj4gPiA+ID4gc2VyaWVzLCBpcyBzdXBl cmZsdW91cyBpbiB0aGUgZmlyc3QgcGxhY2UuDQo+ID4gPiA+DQo+ID4gPiA+IEdvb2QhDQo+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4 ZVNtbS9YNjQvUGFnZVRibC5jDQo+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9Q YWdlVGJsLmMNCj4gPiA+ID4+IGluZGV4IGEzYjYyZjc3ODcuLjY2OTlhYWM2NWQgMTAwNjQ0DQo+ ID4gPiA+PiAtLS0gYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4g PiA+ID4+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1BhZ2VUYmwuYw0KPiA+ ID4gPj4gQEAgLTEwMjksNyArMTAyOSw3IEBAIFNtaVBGSGFuZGxlciAoDQo+ID4gPiA+PiAgICAg ICBnb3RvIEV4aXQ7DQo+ID4gPiA+PiAgICAgfQ0KPiA+ID4gPj4NCj4gPiA+ID4+IC0gICAgaWYg KG1DcHVTbW1TdGF0aWNQYWdlVGFibGUgJiYNCj4gPiBJc1NtbUNvbW1CdWZmZXJGb3JiaWRkZW5B ZGRyZXNzIChQRkFkZHJlc3MpKSB7DQo+ID4gPiA+PiArICAgIGlmIChJc1NtbUNvbW1CdWZmZXJG b3JiaWRkZW5BZGRyZXNzIChQRkFkZHJlc3MpKSB7DQo+ID4gPiA+PiAgICAgICBEdW1wQ3B1Q29u dGV4dCAoSW50ZXJydXB0VHlwZSwgU3lzdGVtQ29udGV4dCk7DQo+ID4gPiA+PiAgICAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiQWNjZXNzIFNNTSBjb21tdW5pY2F0aW9uDQo+ID4gZm9yYmlkZGVu IGFkZHJlc3MgKDB4JWx4KSFcbiIsIFBGQWRkcmVzcykpOw0KPiA+ID4gPj4gICAgICAgREVCVUdf Q09ERSAoDQo+ID4gPiA+Pg0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIGh1bmsgbG9va3MgZ29vZC4g QmVjYXVzZToNCj4gPiA+ID4NCj4gPiA+ID4gLSB3ZSBlbnN1cmUgdGhhdCB0aGVyZSBpcyBubyBw YWdlIGZhdWx0IGF0IGFsbCwgaW4gdGhlICJhY2Nlc3Mtb3V0DQo+ID4gPiA+IHBlcm1pdHRlZCIg Y2FzZSwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjb25zaWRlciAiYWNjZXNzLW91dCIgaW4gdGhl DQo+ID4gPiA+IGZhdWx0IGhhbmRsZXIgYXQgYWxsOw0KPiA+ID4gPg0KPiA+ID4gPiAtIHRoZSAi bVNtbUFjY2Vzc091dCIgbG9naWMgaW4gUGVyZm9ybVJlbWFpbmluZ1Rhc2tzKCkgYXBwbGllcyB0 bw0KPiA+IGJvdGgNCj4gPiA+ID4gSUEzMiBhbmQgWDY0IChjb21tb25seSksIGFuZCB0aGUgU21p UEZIYW5kbGVyKCkgZnVuY3Rpb24gaXMNCj4gPiBpbXBsZW1lbnRlZA0KPiA+ID4gPiBmb3IgYm90 aCBJQTMyIGFuZCBYNjQgKHNlcGFyYXRlbHkpLCBhbmQgYWZ0ZXIgdGhpcyBwYXRjaCwgYm90aCBm YXVsdA0KPiA+ID4gPiBoYW5kbGVycyBjaGVjayBJc1NtbUNvbW1CdWZmZXJGb3JiaWRkZW5BZGRy ZXNzKCkgaWRlbnRpY2FsbHkuIFNvIHRoaXMNCj4gPiBpcw0KPiA+ID4gPiBuaWNlIGFuZCBzeW1t ZXRyaWM7DQo+ID4gPiA+DQo+ID4gPiA+IC0gd2UgZG9uJ3QgaW50ZXJmZXJlIHdpdGggb24tZGVt YW5kIHBhZ2UgdGFibGUgYnVpbGRpbmcgKHdoZW4gaXQgaXMNCj4gPiA+ID4gZW5hYmxlZCBvbiBY NjQpIC0tIHBhZ2UgZmF1bHRzIHNob3VsZCBzdGlsbCBiZSB0cmlnZ2VyZWQgYnkgUkFNIHBhZ2Vz DQo+ID4gPiA+IG5vdCB5ZXQgbWFwcGVkIGF0IGFsbCwgYW5kIHRoZSBYNjQgdmFyaWFudCBvZiBT bWlEZWZhdWx0UEZIYW5kbGVyKCkNCj4gPiA+ID4gc2hvdWxkIGZpeCB1cCAqdGhvc2UqIGZhdWx0 cyBsaWtlIGJlZm9yZS4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gSG93ZXZlcjogZ2l2ZW4g dGhhdCB0aGlzIGh1bmsgcHJhY3RpY2FsbHkgdW5kZXMgY29tbWl0IGM2MGQzNmI0LCBJDQo+ID4g d291bGQNCj4gPiA+ID4gc3VnZ2VzdCB0aGF0IHdlIHJldmVydCBjb21taXQgYzYwZDM2YjQgaW4g YSBzZXBhcmF0ZSBwYXRjaC4gU28gdGhlDQo+ID4gPiA+IHNlcmllcyB3b3VsZCBnbyBsaWtlOg0K PiA+ID4gPg0KPiA+ID4gPiAtIHBhdGNoIzE6IGNvbW1pdCBjNjBkMzZiNCBpcyBub3QgZ29vZCBl bm91Z2gsIHdlJ3JlIGdvaW5nIHRvDQo+ID4gaW1wbGVtZW50DQo+ID4gPiA+IGEgc2VwYXJhdGUg YXBwcm9hY2gsIHNvIHJldmVydCBjb21taXQgYzYwZDM2YjQsIGF0IGZpcnN0Lg0KPiA+ID4gPiAt IHBhdGNoIzI6IGludHJvZHVjZSB0aGUgbmV3IFBDRA0KPiA+ID4gPiAtIHBhdGNoIzM6IGRpc2Fi bGUgcGFnZSBmYXVsdCBnZW5lcmF0aW9uIGZvciBub24tU01SQU0gYWRkcmVzc2VzICg9DQo+ID4g a2VlcA0KPiA+ID4gPiB0aGVtIG1hcHBlZCBhcyBub3JtYWwpIHRvIHdoaWNoIGFjY2Vzcy1vdXQg aXMgcGVybWl0dGVkLg0KPiA+ID4gPg0KPiA+ID4gPiAoMykgUmF5LCBkbyB5b3UgYWdyZWUgdG8g c3RydWN0dXJlIHRoZSBwYXRjaCBzZXJpZXMgbGlrZSB0aGF0Pw0KPiA+ID4gPg0KPiA+ID4gPiAo NCkgSmlld2VuLCBhcmUgeW91IE9LIHdpdGggdGhlIGdlbmVyYWwgYXBwcm9hY2gsIG5hbWVseSB0 byByZWxheA0KPiA+ID4gPiBhY2Nlc3Mtb3V0IGJ5IGVsaW1pbmF0aW5nICpzdWNoKiBwYWdlIGZh dWx0cywgcmF0aGVyIHRoYW4gZml4aW5nIHRoZW0gdXANCj4gPiA+ID4gaW4gdGhlIGZhdWx0IGhh bmRsZXI/DQo+ID4gPiA+DQo+ID4gPiA+IChJIGNlcnRhaW5seSBhZ3JlZSB3aXRoIHRoaXMgYXBw cm9hY2g6IHRoZSBmaXh1cCBpbiB0aGUgZmF1bHQgaGFuZGxlciwNCj4gPiA+ID4gbmFtZWx5IFNt aURlZmF1bHRQRkhhbmRsZXIoKSwgb25seSBjb3ZlcnMgdGhlIFg2NCBjYXNlOyBpbiB0aGUgSUEz Mg0KPiA+ID4gPiBjYXNlLCBpdCBqdXN0IGhhbmdzLiBUaGF0IHNob3dzIHRoYXQgdGhlIGZhdWx0 IGZpeHVwIGlzIGluaGVyZW50bHkgdGllZA0KPiA+ID4gPiB0byBvbi1kZW1hbmQgcGFnZSB0YWJs ZSBidWlsZGluZywgd2hlcmVhcyB0aGUgYWNjZXNzLW91dCBmZWF0dXJlDQo+ID4gc2hvdWxkDQo+ ID4gPiA+IGJlIHBvc3NpYmxlIHRvIHBlcm1pdCBvbiBJQTMyIHRvby4pDQo+ID4gPiA+DQo+ID4g PiA+IFRoYW5rcywNCj4gPiA+ID4gTGFzemxvDQo+ID4gPiA+DQo+ID4gPiA+IA0KPiA+ID4gPg0K