From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.0.26; helo=nam01-bn3-obe.outbound.protection.outlook.com; envelope-from=vanjeff_919@hotmail.com; receiver=edk2-devel@lists.01.org Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-oln040092000026.outbound.protection.outlook.com [40.92.0.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5DA20220D4C0F for ; Tue, 14 Nov 2017 06:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=pXF4M05qZbDYegCJguOKPq7M1d1JRrtEIsmaIkHeT8E=; b=CJyrH0u/vIxlTD/Wk93HQKD+AKpSaA1D66gJLIsk6t6Ho2fTWUOXC4pQghzKKFdLV0v4wn0OJwSV1FLdwndMo6hWlYyKDwD6x+ibdLziOi/Po4c1j/3oU2ouKg3AX5g4520nQr1PBZ+mRzs3ZwTKhiJz4MZhX0JVwIEZEo1BEgiuTW2okiOyj9fGLmz3IhfbrVo/o+o9Os7Ni8YmGmBBeuu+TCOsiESla5zWWldQL18hOky5oApCDojxtP2qJeiRpkEJsXg8KFsaBfwJfYQPhjLAF32pOReH2XqaqsLDYDsY6nvgweFdxgQcmTvZcPddbuYNukK8RCFkxQvXTiHVpA== Received: from BY2NAM01FT037.eop-nam01.prod.protection.outlook.com (10.152.68.52) by BY2NAM01HT088.eop-nam01.prod.protection.outlook.com (10.152.69.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.197.9; Tue, 14 Nov 2017 14:26:19 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com (10.152.68.55) by BY2NAM01FT037.mail.protection.outlook.com (10.152.68.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.197.9 via Frontend Transport; Tue, 14 Nov 2017 14:26:19 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) by CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) with mapi id 15.20.0218.015; Tue, 14 Nov 2017 14:26:18 +0000 From: Fan Jeff To: Andrew Fish , Paulo Alcantara CC: "edk2-devel@lists.01.org" , Laszlo Ersek , Eric Dong Thread-Topic: [edk2] [RFC 1/1] UefiCpuPkg/CpuExceptionHandlerLib/X64: Add stack trace support Thread-Index: AQHTXUc3+FXQr0q1AkCDVbg5ajI6+KMT53sAgAAF49g= Date: Tue, 14 Nov 2017 14:26:18 +0000 Message-ID: References: <00e14f85d93a2e81ab008f32020f3048fe4857fb.1510662518.git.pcacjr@zytor.com>, In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: apple.com; dkim=none (message not signed) header.d=none;apple.com; dmarc=none action=none header.from=hotmail.com; x-incomingtopheadermarker: OriginalChecksum:10EA289741316E22F4DDC8CE4C4D54B2D56E0A28DCA866C0382D3CBE02DCB6EF; UpperCasedChecksum:A7B22997DEE5842975D30E1A6531E295CA9245B1EC8E4ECBF64DCA031819E67B; SizeAsReceived:7409; Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [IUMuY4zPFvdhzYgOXyUJGUbEI8LA98mX] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BY2NAM01HT088; 6:m7RuIuDLFN96DbXgIrPPUMzK3WT2glGTf5octo+LlqewA/wSCK7noqQd5oAPq8LzsFWUIAMPTyEY7Nqo8aTNzaQZ3PH1SY8tbNNnONEBn0JIazkfsxsXJFOj+P2mLT3pIMbt9BOkMTwnwvdEgTdZS+/8nujEahjnk3k3DfElNXG8wGU50vwrycCoQzeCHt23eLcx3IUe1+wEy6A2xaC+oi88EC+/QKApmdjOD2ZfoqH44WJUpJoSNgBHFOJSzQwMt7aqR2VqLsSdB8DusDaLICLv0cHIQnc8GNRFPcXWgGR0OvzIIC7TdB3qi+rs9cEEVD522pUoOaewll8iSdRMYXnlA7CGKHlzr6oRPAC+Olc=; 5:DPgyCuhmN+XyMcW4mPltubvVOzxHf6AlP047105F2KxtB0mq+ezaS8EocJ1ToN6YaCoCDxI5plCS4HMUtdWJevOmJRwPaRPEdJyWDiISHy9amGnlwXf/6L6XuuBvvW70V3JP6JdjqrvZ5oSgCa59D4pUWWvWMaOL8ow6eVyylZU=; 24:t7L81y9dk7ZxetYVX3t+uDy1K9uV3l+zMtTku5C6rL5OAYELuslTvypxJw9klFDP2A6YhBwd6FJ6g91NSkeF/tW8j6C18L8aqEKFbUAFIHA=; 7:d0qwgdjBt2YJaMSnoPZDbMg6U0rK//2nMY4qb28FhY6Q5tYTETzZHWasOXw2uj8JZJGPmoV3Nr9m9A3cNUd+XnNzo2lGpHlmeiWQ/HZ6hqGVvkhUe67gW/FNdbnR4jySfzSUd1n+urIhRTcXdW1BJGi8uKqBxFPqaNJhA9Ez5f5k+siMNIMAIck6hjLnXbmUR1vkt2pmHUQvxBal12I9JaOVQGrw/fubS0d/QOAul4+OYoOPF2RGgLtRtjOeSVC8 x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 1af9c594-80a6-4191-b0f2-08d52b6babd3 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101448)(1601125374)(1701031045); SRVR:BY2NAM01HT088; x-ms-traffictypediagnostic: BY2NAM01HT088: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:BY2NAM01HT088; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2NAM01HT088; x-forefront-prvs: 04916EA04C x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:BY2NAM01HT088; H:CY1PR19MB0283.namprd19.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1af9c594-80a6-4191-b0f2-08d52b6babd3 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Nov 2017 14:26:18.6440 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2NAM01HT088 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: =?UTF-8?B?562U5aSNOiBbUkZDIDEvMV0gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NDogQWRkIHN0YWNrIHRyYWNlIHN1cHBvcnQ=?= X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Nov 2017 14:22:14 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 QW5kcmV3LA0KDQpXZSBjb3VsZCB1c2UgaGUgRUlQIG9mZnNldCBpbiBQYXVsoa9zIHRyYWNlIG1l c3NhZ2UgYW5kIHdvcmsgd2l0aCB0aGUgZ2VuZXJhdGVkIG1hcCBmaWxlIHVuZGVyIGRlYnVnIGRp cmVjdG9yeSBmb3IgZGVidWcgdHJhY2UuDQoNCkplZmYNCg0Kt6K8/sjLOiBBbmRyZXcgRmlzaDxt YWlsdG86YWZpc2hAYXBwbGUuY29tPg0Kt6LLzcqxvOQ6IDIwMTfE6jEx1MIxNMjVIDIyOjAxDQrK 1bz+yMs6IFBhdWxvIEFsY2FudGFyYTxtYWlsdG86cGNhY2pyQHp5dG9yLmNvbT4NCrOty806IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz47IExh c3psbyBFcnNlazxtYWlsdG86bGVyc2VrQHJlZGhhdC5jb20+OyBFcmljIERvbmc8bWFpbHRvOmVy aWMuZG9uZ0BpbnRlbC5jb20+DQrW98ziOiBSZTogW2VkazJdIFtSRkMgMS8xXSBVZWZpQ3B1UGtn L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0OiBBZGQgc3RhY2sgdHJhY2Ugc3VwcG9ydA0KDQpQ YXVsbywNCg0KQ29vbCBmZWF0dXJlLiBIb3cgZG9lcyB0aGlzIGNvZGUgZGVhbCB3aXRoIFZDKysg dGhhdCBjb2RlIGRvZXMgbm90IHN0b3JlIHRoZSBmcmFtZSBwb2ludGVyIGFuZCByZXF1aXJlcyBz eW1ib2xzIHRvIHVud2luZC4NCg0KQWxzbyBvbiB0aGUgcGFnZSBmYXVsdCB5b3UgY2FuIHByaW50 IHRoZSBmYXVsdCBhZGRyZXNzIHNpbmNlIGl0IGlzIGluIENSMi4NCg0KSXQgc2hvdWxkIGJlIHBv c3NpYmxlIHRvIHBvc3QgcHJvY2VzcyB0aGUgdGV4dCBmaWxlIGFuZCBtYWtlIGEgc3ltYm9saWNh dGVkIGJhY2t0cmFjZS4NCg0KVGhhbmtzLA0KDQpBbmRyZXcgRmlzaA0KDQo+IE9uIE5vdiAxNCwg MjAxNywgYXQgNDo0NyBBTSwgUGF1bG8gQWxjYW50YXJhIDxwY2FjanJAenl0b3IuY29tPiB3cm90 ZToNCj4NCj4gVGhpcyBwYXRjaCBhZGRzIHN0YWNrIHRyYWNlIHN1cHBvcnQgZHVyaW5nIGEgWDY0 IENQVSBleGNlcHRpb24uDQo+DQo+IEl0IHdpbGwgZHVtcCBvdXQgYmFjayB0cmFjZSwgc3RhY2sg Y29udGVudHMgYXMgd2VsbCBhcyBpbWFnZSBtb2R1bGUNCj4gbmFtZXMgdGhhdCB3ZXJlIHBhcnQg b2YgdGhlIGNhbGwgc3RhY2suDQo+DQo+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29u dHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVs LmNvbT4NCj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+IFNpZ25lZC1v ZmYtYnk6IFBhdWxvIEFsY2FudGFyYSA8cGNhY2pyQHp5dG9yLmNvbT4NCj4gLS0tDQo+IFVlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFu ZGxlci5jIHwgMzQ0ICsrKysrKysrKysrKysrKysrKystDQo+IDEgZmlsZSBjaGFuZ2VkLCAzNDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxl ci5jIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hF eGNlcHRpb25IYW5kbGVyLmMNCj4gaW5kZXggNjVmMGNmZjY4MC4uNzA0ODI0N2JlMyAxMDA2NDQN Cj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0Fy Y2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gQEAgLTE0LDYgKzE0 LDExIEBADQo+DQo+ICNpbmNsdWRlICJDcHVFeGNlcHRpb25Db21tb24uaCINCj4NCj4gKy8vDQo+ ICsvLyBVbmtub3duIFBEQiBmaWxlIG5hbWUNCj4gKy8vDQo+ICtHTE9CQUxfUkVNT1ZFX0lGX1VO UkVGRVJFTkNFRCBDT05TVCBDSEFSOCAqbVVua25vd25QZGJGaWxlTmFtZSA9ICI/Pz8/IjsNCj4g Kw0KPiAvKioNCj4gICBSZXR1cm4gYWRkcmVzcyBtYXAgb2YgZXhjZXB0aW9uIGhhbmRsZXIgdGVt cGxhdGUgc28gdGhhdCBDIGNvZGUgY2FuIGdlbmVyYXRlDQo+ICAgZXhjZXB0aW9uIHRhYmxlcy4N Cj4gQEAgLTI0Myw2ICsyNDgsMzI1IEBAIER1bXBDcHVDb250ZXh0ICgNCj4gfQ0KPg0KPiAvKioN Cj4gKyAgRHVtcCBzdGFjayBjb250ZW50cy4NCj4gKw0KPiArICBAcGFyYW1baW5dICBJbWFnZUJh c2UgICAgICAgICAgICBCYXNlIGFkZHJlc3Mgb2YgUEUvQ09GRiBpbWFnZS4NCj4gKyAgQHBhcmFt W291dF0gUGRiQWJzb2x1dGVGaWxlUGF0aCAgQWJzb2x1dGUgcGF0aCBvZiBQREIgZmlsZS4NCj4g KyAgQHBhcmFtW291dF0gUGRiRmlsZU5hbWUgICAgICAgICAgRmlsZSBuYW1lIG9mIFBEQiBmaWxl Lg0KPiArKiovDQo+ICtTVEFUSUMNCj4gK1ZPSUQNCj4gK0dldFBkYkZpbGVOYW1lICgNCj4gKyAg SU4gIFVJTlROICAgIEltYWdlQmFzZSwNCj4gKyAgT1VUIENIQVI4ICAgICoqUGRiQWJzb2x1dGVG aWxlUGF0aCwNCj4gKyAgT1VUIENIQVI4ICAgICoqUGRiRmlsZU5hbWUNCj4gKyAgKQ0KPiArew0K PiArICBWT0lEICAgKlBkYlBvaW50ZXI7DQo+ICsgIENIQVI4ICAqU3RyOw0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIEdldCBQREIgZmlsZSBuYW1lIGZyb20gUEUvQ09GRiBpbWFnZQ0KPiArICAvLw0K PiArICBQZGJQb2ludGVyID0gUGVDb2ZmTG9hZGVyR2V0UGRiUG9pbnRlciAoKFZPSUQgKilJbWFn ZUJhc2UpOw0KPiArICBpZiAoUGRiUG9pbnRlciA9PSBOVUxMKSB7DQo+ICsgICAgLy8NCj4gKyAg ICAvLyBObyBQREIgZmlsZSBuYW1lIGZvdW5kLiBTZXQgaXQgdG8gYW4gdW5rbm93biBmaWxlIG5h bWUuDQo+ICsgICAgLy8NCj4gKyAgICAqUGRiRmlsZU5hbWUgPSAoQ0hBUjggKiltVW5rbm93blBk YkZpbGVOYW1lOw0KPiArICAgIGlmIChQZGJBYnNvbHV0ZUZpbGVQYXRoICE9IE5VTEwpIHsNCj4g KyAgICAgICpQZGJBYnNvbHV0ZUZpbGVQYXRoID0gTlVMTDsNCj4gKyAgICB9DQo+ICsgIH0gZWxz ZSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBHZXQgZmlsZSBuYW1lIHBvcnRpb24gb3V0IG9mIFBE QiBmaWxlIGluIFBFL0NPRkYgaW1hZ2UNCj4gKyAgICAvLw0KPiArICAgIFN0ciA9IChDSEFSOCAq KSgoVUlOVE4pUGRiUG9pbnRlciArDQo+ICsgICAgICAgICAgICAgICAgICAgIEFzY2lpU3RyTGVu ICgoQ0hBUjggKilQZGJQb2ludGVyKSAtIHNpemVvZiAqU3RyKTsNCj4gKyAgICBmb3IgKDsgKlN0 ciAhPSAnLycgJiYgKlN0ciAhPSAnXFwnOyBTdHItLSkgew0KPiArICAgICAgOw0KPiArICAgIH0N Cj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IFBEQiBmaWxlIG5hbWUgKGFsc28gc2tpcCB0 cmFpbGluZyBwYXRoIHNlcGFyYXRvcjogJy8nIG9yICdcXCcpDQo+ICsgICAgLy8NCj4gKyAgICAq UGRiRmlsZU5hbWUgPSBTdHIgKyAxOw0KPiArDQo+ICsgICAgaWYgKFBkYkFic29sdXRlRmlsZVBh dGggIT0gTlVMTCkgew0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFNldCBhYnNvbHV0ZSBmaWxl IHBhdGggb2YgUERCIGZpbGUNCj4gKyAgICAgIC8vDQo+ICsgICAgICAqUGRiQWJzb2x1dGVGaWxl UGF0aCA9IFBkYlBvaW50ZXI7DQo+ICsgICAgfQ0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0K PiArICBEdW1wIHN0YWNrIGNvbnRlbnRzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIEN1cnJlbnRS c3AgICAgICAgICBDdXJyZW50IHN0YWNrIHBvaW50ZXIgYWRkcmVzcy4NCj4gKyAgQHBhcmFtW2lu XSAgVW53b25kU3RhY2tzQ291bnQgIENvdW50IG9mIHVud29uZCBzdGFjayBmcmFtZXMuDQo+ICsq Ki8NCj4gK1NUQVRJQw0KPiArVk9JRA0KPiArRHVtcFN0YWNrQ29udGVudHMgKA0KPiArICBJTiBV SU5UNjQgIEN1cnJlbnRSc3AsDQo+ICsgIElOIElOVE4gICAgVW53b25kU3RhY2tzQ291bnQNCj4g KyAgKQ0KPiArew0KPiArICBpZiAoVW53b25kU3RhY2tzQ291bnQgPT0gMCkgew0KPiArICAgIHJl dHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIER1bXAgb3V0IHN0YWNrIGNvbnRl bnRzDQo+ICsgIC8vDQo+ICsgIEludGVybmFsUHJpbnRNZXNzYWdlICgiXG5TdGFjayBkdW1wOlxu Iik7DQo+ICsgIHdoaWxlIChVbndvbmRTdGFja3NDb3VudC0tID4gMCkgew0KPiArICAgIEludGVy bmFsUHJpbnRNZXNzYWdlICgNCj4gKyAgICAgICIweCUwMTZseDogJTAxNmx4ICUwMTZseFxuIiwN Cj4gKyAgICAgIEN1cnJlbnRSc3AsDQo+ICsgICAgICAqKFVJTlQ2NCAqKUN1cnJlbnRSc3AsDQo+ ICsgICAgICAqKFVJTlQ2NCAqKSgoVUlOVE4pQ3VycmVudFJzcCArIDgpDQo+ICsgICAgICApOw0K PiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBBcyBwZXIgTWljcm9zb2Z0IHg2NCBBQkksIHRoZSBz dGFjayBwb2ludGVyIG11c3QgYmUgYWxpZ25lZCBvbiBhIDE2IGJ5dGUNCj4gKyAgICAvLyBib3Vu ZGFyeS4NCj4gKyAgICAvLw0KPiArICAgIEN1cnJlbnRSc3AgPSBDdXJyZW50UnNwICsgMTY7DQo+ ICsgIH0NCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgIER1bXAgYWxsIGltYWdlIG1vZHVsZSBuYW1l cyBmcm9tIGNhbGwgc3RhY2suDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgU3lzdGVtQ29udGV4dCAg UG9pbnRlciB0byBFRklfU1lTVEVNX0NPTlRFWFQuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiArVk9J RA0KPiArRHVtcEltYWdlTW9kdWxlTmFtZXMgKA0KPiArICBJTiBFRklfU1lTVEVNX0NPTlRFWFQg ICBTeXN0ZW1Db250ZXh0DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0K PiArICBVSU5UNjQgICAgICBSaXA7DQo+ICsgIFVJTlROICAgICAgIEltYWdlQmFzZTsNCj4gKyAg Vk9JRCAgICAgICAgKkVudHJ5UG9pbnQ7DQo+ICsgIENIQVI4ICAgICAgICpQZGJBYnNvbHV0ZUZp bGVQYXRoOw0KPiArICBDSEFSOCAgICAgICAqUGRiRmlsZU5hbWU7DQo+ICsgIFVJTlQ2NCAgICAg IFJicDsNCj4gKw0KPiArICAvLw0KPiArICAvLyBTZXQgY3VycmVudCBSSVAgYWRkcmVzcw0KPiAr ICAvLw0KPiArICBSaXAgPSBTeXN0ZW1Db250ZXh0LlN5c3RlbUNvbnRleHRYNjQtPlJpcDsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBTZXQgY3VycmVudCBmcmFtZSBwb2ludGVyIGFkZHJlc3MNCj4g KyAgLy8NCj4gKyAgUmJwID0gU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5SYnA7DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IGluaXRpYWwgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJl c3MgZnJvbSBjdXJyZW50IFJJUA0KPiArICAvLw0KPiArICBJbWFnZUJhc2UgPSBQZUNvZmZTZWFy Y2hJbWFnZUJhc2UgKFJpcCk7DQo+ICsgIGlmIChJbWFnZUJhc2UgPT0gMCkgew0KPiArICAgIElu dGVybmFsUHJpbnRNZXNzYWdlICgiISEhISBDb3VsZCBub3QgZmluZCBpbWFnZSBtb2R1bGUgbmFt ZXMuICEhISEiKTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAv LyBHZXQgaW5pdGlhbCBQRS9DT0ZGIGltYWdlJ3MgZW50cnkgcG9pbnQNCj4gKyAgLy8NCj4gKyAg U3RhdHVzID0gUGVDb2ZmTG9hZGVyR2V0RW50cnlQb2ludCAoKFZPSUQgKilJbWFnZUJhc2UsICZF bnRyeVBvaW50KTsNCj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIEVudHJ5 UG9pbnQgPSBOVUxMOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gR2V0IGZpbGUgbmFt ZSBhbmQgYWJzb2x1dGUgcGF0aCBvZiBpbml0aWFsIFBEQiBmaWxlDQo+ICsgIC8vDQo+ICsgIEdl dFBkYkZpbGVOYW1lIChJbWFnZUJhc2UsICZQZGJBYnNvbHV0ZUZpbGVQYXRoLCAmUGRiRmlsZU5h bWUpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFByaW50IG91dCBpbml0aWFsIGltYWdlIG1vZHVs ZSBuYW1lIChpZiBhbnkpDQo+ICsgIC8vDQo+ICsgIGlmIChQZGJBYnNvbHV0ZUZpbGVQYXRoICE9 IE5VTEwpIHsNCj4gKyAgICBJbnRlcm5hbFByaW50TWVzc2FnZSAoDQo+ICsgICAgICAiXG4lYSAo SW1hZ2VCYXNlPTB4JTAxNmx4LCBFbnRyeVBvaW50PTB4JTAxNmx4KTpcbiIsDQo+ICsgICAgICBQ ZGJGaWxlTmFtZSwNCj4gKyAgICAgIEltYWdlQmFzZSwNCj4gKyAgICAgIChVSU5UTilFbnRyeVBv aW50DQo+ICsgICAgICApOw0KPiArICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgiJWFcbiIsIFBk YkFic29sdXRlRmlsZVBhdGgpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gV2FsayB0 aHJvdWdoIGNhbGwgc3RhY2sgYW5kIGZpbmQgbmV4dCBtb2R1bGUgbmFtZXMNCj4gKyAgLy8NCj4g KyAgZm9yICg7Oykgew0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IFJJUCB3aXRoIHJldHVybiBh ZGRyZXNzIGZyb20gY3VycmVudCBzdGFjayBmcmFtZQ0KPiArICAgIC8vDQo+ICsgICAgUmlwID0g KihVSU5UNjQgKikoKFVJTlROKVJicCArIDgpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBD aGVjayBpZiBSSVAgaXMgd2l0aGluIGFub3RoZXIgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJlc3MN Cj4gKyAgICAvLw0KPiArICAgIGlmIChSaXAgPCBJbWFnZUJhc2UpIHsNCj4gKyAgICAgIC8vDQo+ ICsgICAgICAvLyBTZWFyY2ggZm9yIHRoZSByZXNwZWN0aXZlIFBFL0NPRkYgaW1hZ2UgYmFzZWQg b24gUklQDQo+ICsgICAgICAvLw0KPiArICAgICAgSW1hZ2VCYXNlID0gUGVDb2ZmU2VhcmNoSW1h Z2VCYXNlIChSaXApOw0KPiArICAgICAgaWYgKEltYWdlQmFzZSA9PSAwKSB7DQo+ICsgICAgICAg IC8vDQo+ICsgICAgICAgIC8vIFN0b3Agc3RhY2sgdHJhY2UNCj4gKyAgICAgICAgLy8NCj4gKyAg ICAgICAgYnJlYWs7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBH ZXQgUEUvQ09GRiBpbWFnZSdzIGVudHJ5IHBvaW50DQo+ICsgICAgICAvLw0KPiArICAgICAgU3Rh dHVzID0gUGVDb2ZmTG9hZGVyR2V0RW50cnlQb2ludCAoKFZPSUQgKilJbWFnZUJhc2UsICZFbnRy eVBvaW50KTsNCj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICAgICAg RW50cnlQb2ludCA9IE5VTEw7DQo+ICsgICAgICB9DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAg ICAvLyBHZXQgZmlsZSBuYW1lIGFuZCBhYnNvbHV0ZSBwYXRoIG9mIFBEQiBmaWxlDQo+ICsgICAg ICAvLw0KPiArICAgICAgR2V0UGRiRmlsZU5hbWUgKEltYWdlQmFzZSwgJlBkYkFic29sdXRlRmls ZVBhdGgsICZQZGJGaWxlTmFtZSk7DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBQcmlu dCBvdXQgaW1hZ2UgbW9kdWxlIG5hbWUgKGlmIGFueSkNCj4gKyAgICAgIC8vDQo+ICsgICAgICBp ZiAoUGRiQWJzb2x1dGVGaWxlUGF0aCAhPSBOVUxMKSB7DQo+ICsgICAgICAgIEludGVybmFsUHJp bnRNZXNzYWdlICgNCj4gKyAgICAgICAgICAiJWEgKEltYWdlQmFzZT0weCUwMTZseCwgRW50cnlQ b2ludD0weCUwMTZseCk6XG4iLA0KPiArICAgICAgICAgIFBkYkZpbGVOYW1lLA0KPiArICAgICAg ICAgIEltYWdlQmFzZSwNCj4gKyAgICAgICAgICAoVUlOVE4pRW50cnlQb2ludA0KPiArICAgICAg ICAgICk7DQo+ICsgICAgICAgIEludGVybmFsUHJpbnRNZXNzYWdlICgiJWFcbiIsIFBkYkFic29s dXRlRmlsZVBhdGgpOw0KPiArICAgICAgfQ0KPiArICAgIH0NCj4gKw0KPiArICAgIC8vDQo+ICsg ICAgLy8gVW53aW5kIHRoZSBzdGFjaw0KPiArICAgIC8vDQo+ICsgICAgUmJwID0gKihVSU5UNjQg KikoVUlOVE4pUmJwOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBEdW1wIHN0YWNr IHRyYWNlLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFN5c3RlbUNvbnRleHQgICAgICBQb2ludGVy IHRvIEVGSV9TWVNURU1fQ09OVEVYVC4NCj4gKyAgQHBhcmFtW291dF0gVW53b25kU3RhY2tzQ291 bnQgIENvdW50IG9mIHVud29uZCBzdGFjayBmcmFtZXMuDQo+ICsqKi8NCj4gK1NUQVRJQw0KPiAr Vk9JRA0KPiArRHVtcFN0YWNrVHJhY2UgKA0KPiArICBJTiAgRUZJX1NZU1RFTV9DT05URVhUICAg U3lzdGVtQ29udGV4dCwNCj4gKyAgT1VUIElOVE4gICAgICAgICAgICAgICAgICpVbndvbmRTdGFj a3NDb3VudA0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ2NCAgUmlwOw0KPiArICBVSU5UNjQgIFJi cDsNCj4gKyAgVUlOVE4gICBJbWFnZUJhc2U7DQo+ICsgIENIQVI4ICAgKlBkYkZpbGVOYW1lOw0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIEluaXRpYWxpemUgY291bnQgb2YgdW53b25kIHN0YWNrcw0K PiArICAvLw0KPiArICAqVW53b25kU3RhY2tzQ291bnQgPSAwOw0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIFNldCBjdXJyZW50IFJJUCBhZGRyZXNzDQo+ICsgIC8vDQo+ICsgIFJpcCA9IFN5c3RlbUNv bnRleHQuU3lzdGVtQ29udGV4dFg2NC0+UmlwOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFNldCBj dXJyZW50IGZyYW1lIHBvaW50ZXIgYWRkcmVzcw0KPiArICAvLw0KPiArICBSYnAgPSBTeXN0ZW1D b250ZXh0LlN5c3RlbUNvbnRleHRYNjQtPlJicDsNCj4gKw0KPiArICAvLw0KPiArICAvLyBHZXQg aW5pdGlhbCBQRS9DT0ZGIGltYWdlIGJhc2UgYWRkcmVzcyBmcm9tIGN1cnJlbnQgUklQDQo+ICsg IC8vDQo+ICsgIEltYWdlQmFzZSA9IFBlQ29mZlNlYXJjaEltYWdlQmFzZSAoUmlwKTsNCj4gKyAg aWYgKEltYWdlQmFzZSA9PSAwKSB7DQo+ICsgICAgSW50ZXJuYWxQcmludE1lc3NhZ2UgKCIhISEh IENvdWxkIG5vdCBmaW5kIGJhY2t0cmFjZSBpbmZvcm1hdGlvbi4gISEhISIpOw0KPiArICAgIHJl dHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEdldCBQREIgZmlsZSBuYW1lIGZy b20gaW5pdGlhbCBQRS9DT0ZGIGltYWdlDQo+ICsgIC8vDQo+ICsgIEdldFBkYkZpbGVOYW1lIChJ bWFnZUJhc2UsIE5VTEwsICZQZGJGaWxlTmFtZSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUHJp bnQgb3V0IGJhY2sgdHJhY2UNCj4gKyAgLy8NCj4gKyAgSW50ZXJuYWxQcmludE1lc3NhZ2UgKCJc bkJhY2sgdHJhY2U6XG4iKTsNCj4gKw0KPiArICBmb3IgKDs7KSB7DQo+ICsgICAgLy8NCj4gKyAg ICAvLyBQcmludCBzdGFjayBmcmFtZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoNCj4gKyAgICAv Lw0KPiArICAgIC8vICMgPFJJUD4gQCA8SW1hZ2VCYXNlPis8UmVsT2Zmc2V0PiAoUkJQKSBpbiBb PE1vZHVsZU5hbWU+IHwgPz8/P10NCj4gKyAgICAvLw0KPiArICAgIEludGVybmFsUHJpbnRNZXNz YWdlICgNCj4gKyAgICAgICIlZCAweCUwMTZseCBAIDB4JTAxNmx4KzB4JXggKDB4JTAxNmx4KSBp biAlYVxuIiwNCj4gKyAgICAgICpVbndvbmRTdGFja3NDb3VudCwNCj4gKyAgICAgIFJpcCwNCj4g KyAgICAgIEltYWdlQmFzZSwNCj4gKyAgICAgIFJpcCAtIEltYWdlQmFzZSAtIDEsDQo+ICsgICAg ICBSYnAsDQo+ICsgICAgICBQZGJGaWxlTmFtZQ0KPiArICAgICAgKTsNCj4gKw0KPiArICAgIC8v DQo+ICsgICAgLy8gU2V0IFJJUCB3aXRoIHJldHVybiBhZGRyZXNzIGZyb20gY3VycmVudCBzdGFj ayBmcmFtZQ0KPiArICAgIC8vDQo+ICsgICAgUmlwID0gKihVSU5UNjQgKikoKFVJTlROKVJicCAr IDgpOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDaGVjayBpZiBSSVAgaXMgd2l0aGluIGFu b3RoZXIgUEUvQ09GRiBpbWFnZSBiYXNlIGFkZHJlc3MNCj4gKyAgICAvLw0KPiArICAgIGlmIChS aXAgPCBJbWFnZUJhc2UpIHsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBTZWFyY2ggZm9yIHRo ZSByZXNwZWN0aXZlIFBFL0NPRkYgaW1hZ2UgYmFzZWQgb24gUklQDQo+ICsgICAgICAvLw0KPiAr ICAgICAgSW1hZ2VCYXNlID0gUGVDb2ZmU2VhcmNoSW1hZ2VCYXNlIChSaXApOw0KPiArICAgICAg aWYgKEltYWdlQmFzZSA9PSAwKSB7DQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFN0b3Ag c3RhY2sgdHJhY2UNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgYnJlYWs7DQo+ICsgICAgICB9 DQo+ICsNCj4gKyAgICAgIC8vDQo+ICsgICAgICAvLyBHZXQgUERCIGZpbGUgbmFtZQ0KPiArICAg ICAgLy8NCj4gKyAgICAgIEdldFBkYkZpbGVOYW1lIChJbWFnZUJhc2UsIE5VTEwsICZQZGJGaWxl TmFtZSk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBVbndpbmQgdGhlIHN0 YWNrDQo+ICsgICAgLy8NCj4gKyAgICBSYnAgPSAqKFVJTlQ2NCAqKShVSU5UTilSYnA7DQo+ICsN Cj4gKyAgICAvLw0KPiArICAgIC8vIEluY3JlbWVudCBjb3VudCBvZiB1bndvbmQgc3RhY2tzDQo+ ICsgICAgLy8NCj4gKyAgICAoKlVud29uZFN0YWNrc0NvdW50KSsrOw0KPiArICB9DQo+ICt9DQo+ ICsNCj4gKy8qKg0KPiAgIERpc3BsYXkgQ1BVIGluZm9ybWF0aW9uLg0KPg0KPiAgIEBwYXJhbSBF eGNlcHRpb25UeXBlICBFeGNlcHRpb24gdHlwZS4NCj4gQEAgLTI1NCw5ICs1NzgsMjUgQEAgRHVt cEltYWdlQW5kQ3B1Q29udGVudCAoDQo+ICAgSU4gRUZJX1NZU1RFTV9DT05URVhUICAgU3lzdGVt Q29udGV4dA0KPiAgICkNCj4gew0KPiArICBJTlROIFVud29uZFN0YWNrc0NvdW50Ow0KPiArDQo+ ICsgIC8vDQo+ICsgIC8vIER1bXAgQ1BVIGNvbnRleHQNCj4gKyAgLy8NCj4gICBEdW1wQ3B1Q29u dGV4dCAoRXhjZXB0aW9uVHlwZSwgU3lzdGVtQ29udGV4dCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gRHVtcCBzdGFjayB0cmFjZQ0KPiArICAvLw0KPiArICBEdW1wU3RhY2tUcmFjZSAoU3lzdGVt Q29udGV4dCwgJlVud29uZFN0YWNrc0NvdW50KTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBEdW1w IGltYWdlIG1vZHVsZSBuYW1lcw0KPiArICAvLw0KPiArICBEdW1wSW1hZ2VNb2R1bGVOYW1lcyAo U3lzdGVtQ29udGV4dCk7DQo+ICsNCj4gICAvLw0KPiAtICAvLyBEdW1wIG1vZHVsZSBpbWFnZSBi YXNlIGFuZCBtb2R1bGUgZW50cnkgcG9pbnQgYnkgUklQDQo+ICsgIC8vIER1bXAgc3RhY2sgY29u dGVudHMNCj4gICAvLw0KPiAtICBEdW1wTW9kdWxlSW1hZ2VJbmZvIChTeXN0ZW1Db250ZXh0LlN5 c3RlbUNvbnRleHRYNjQtPlJpcCk7DQo+ICsgIER1bXBTdGFja0NvbnRlbnRzIChTeXN0ZW1Db250 ZXh0LlN5c3RlbUNvbnRleHRYNjQtPlJzcCwgVW53b25kU3RhY2tzQ291bnQpOw0KPiB9DQo+IC0t DQo+IDIuMTEuMA0KPg0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwN Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmVkazIt ZGV2ZWwgbWFpbGluZyBsaXN0DQplZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KaHR0cHM6Ly9saXN0 cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQoNCg==