From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.24394.1658129546480131622 for ; Mon, 18 Jul 2022 00:32:26 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=mob6pmbE; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: jiaxin.wu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658129546; x=1689665546; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=xMWeEQIY9tmJxlzo44LDOr+769sVXScrzvnZtRQHQ6Y=; b=mob6pmbEbRpAok9eCx52A/N5O8ixsmyYMvAWrdNVRjIjr3ys0jDAo+kA IcrZ/ZXUWysVvcR/muKAW2W74bIwD/pA7LCbR36BmLVXIG5rEMC6zSJzt g5aZL9QsIN6qGfYhkZg8hAoQqtxxIO4oxreadR2OhbHWGOpyZE94AEPPL 5+gcNW1hh33zsQfdwQw78NlBywz4l3x9UsV50WKj+aA7pcSX0cCQ0d3rb qx5nknplIuuDnFeax4jyyJ70Xs+UP/QTpqO3MkcvBjrD8Z2D6LsAR7xNh N0uM8lSm8DmB9fTgD4wSHBtMO4j789nZcBTeQduiDNj4f4FvyajWW5kqu Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10411"; a="283723710" X-IronPort-AV: E=Sophos;i="5.92,280,1650956400"; d="scan'208";a="283723710" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2022 00:32:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,280,1650956400"; d="scan'208";a="664911928" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga004.fm.intel.com with ESMTP; 18 Jul 2022 00:32:25 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 18 Jul 2022 00:32:25 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Mon, 18 Jul 2022 00:32:24 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Mon, 18 Jul 2022 00:32:24 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Mon, 18 Jul 2022 00:32:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AV440ZdlX7Tx84JWsb1lWM8p7lf6NmClzS3dTXOaSuoZYRtXQsGI7tZ9oDhLAJXl7um/r0R5noVNb1ExJjjRAvCaMxD42n8Pq4s5VpLajQJp2SC49zuvSKAeCrKcOqSp8NsKf4uUoTT6ZHzJ0QCBg9tppu7Yk6pafbWohqB5a5vdDiP9cY9XHSJOk1IBkO6y4RYH1sDjre60vrScA6/21qJmSANxLz0yFecQSVR3Iq84gH07GF6i8rRIUB7B1J59WLtUOglhmfKXX+it1N6AiZ0VdCW83NWc23tUCGNOoWn9S+xJRFmh46TJqhDZaWc/R0Fk7JhnCdqHqMKylbXQuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xMWeEQIY9tmJxlzo44LDOr+769sVXScrzvnZtRQHQ6Y=; b=n8sgfV01Iy1iQgaARduZIixoyeeRYRZ4SU++1eM8Lg7+G6g0Pn0JdG2rldtSCuyyCofrxeZXPYD3PkLzC3e8fiJasAeawBAh03NdgMgAKg+V5cSnrjhGoTuWzuLaPgdlYLuJKjvaV4P4ku7mSkM5HOzczd6s1Nx3wgYFnsRcfylk69DWYyGky2CQhuZBLd4EVNe5vabejhNzJ8NHfly8BA7xQNr9bZLwJzpRbvKvGzxbdQ2ZxKqY0NY7Q8hAfESlWpCMpHtSRU0OgZ11LcNbfTb3/biqhO0mmOpajtGYPc5yvFB6jwiUMwWy8s3Fp3WZvW3ko3Tpsw+6HMoE4iTb6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MN0PR11MB6158.namprd11.prod.outlook.com (2603:10b6:208:3ca::18) by DM5PR11MB1403.namprd11.prod.outlook.com (2603:10b6:3:11::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.20; Mon, 18 Jul 2022 07:32:22 +0000 Received: from MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::b8c3:60ff:bc56:8fab]) by MN0PR11MB6158.namprd11.prod.outlook.com ([fe80::b8c3:60ff:bc56:8fab%9]) with mapi id 15.20.5438.023; Mon, 18 Jul 2022 07:32:22 +0000 From: "Wu, Jiaxin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH v1] UefiCpuPkg: Dynamic check SMRR enable & SmmFeatureControl capability Thread-Topic: [edk2-devel] [PATCH v1] UefiCpuPkg: Dynamic check SMRR enable & SmmFeatureControl capability Thread-Index: AQHYmbiKOQsTqMFJWU+FBSyPJMmyWq2DQbHQgAB0NKA= Date: Mon, 18 Jul 2022 07:32:22 +0000 Message-ID: References: <20220717083747.21076-1-jiaxin.wu@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.500.17 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 556a4fec-af05-467b-06db-08da688fa74d x-ms-traffictypediagnostic: DM5PR11MB1403:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: w4LaJWBt4grrMYhDahPFURnFY7oKc62O+oMHoF4B+Ji8yQi2DUixyKMiN75fm0ravjExPhopGqWJjvZgC/FAyXJ2ejolgahxDuJsUFa5wnlL/pEjN9CtL5nnFcv5wQfmOWIlXcQCmqfgMFjNPIKEEYZ/wVFs8IhyKfjH3xh8Kz32U1C9fVV+NIC1qCUgDQ3mAb5yVwFuhHTfLcpS/vWfO1MpwNYKW130yWSKNITbIG6QeTDK+d5fpX4h11kfg6cQA/CbcxJUquv/a5ZgqSp5mT3Y3wlbuzzSbO8MmEgo4uL/7G7NSII7QI8Ue97ADjtQlJycIAe6dseQGkrREjxwweAAtbAxH9hH+kNLWPLTvQOib/YTg1t8/D5nHNkPUKMVw0nUBsyRs899rIgD9xE0+/ed46U1fHRKR4WQbZaw9eEqkSQJG1AV1B9T5eUijbBStv+xQM9NHBZjBrKZ3Gva3Biimv/Fa/mZ2G3GBwzFq53ygeyjB/A4uVscRZHKaA8xFf7rx/oE+Mei/RQGXGR16VNMH7UsAnj7QP+FuYCWvcBFeiv3O0e/OcKBwRxDUp6otmyRuxSIBNV523mrnWP5QZkyxVHiEZQrdInRrjk1jrrknpPKV3wa1dfmM4cYMBU2FuvY9MqSbg7uKUoAyBCxrFADFsQS59/K8KvnTkyoRWkYr4TEchJpNFkTdq01ne14H/1fj9L8eovPJ37BfxGidEllCXuuBdsqeIIQVe2VwvPQTAzIo4KcvbIrAEC/okE+5PCjmRIGNFJdHiV9nDJNFXkUv2InTVmZNrnx+rpAfp+neb3VbAnLVJ1SzBZuz2ZCgWwAIyi1ftc8REhZOryCvBgcY91j+D20gYCkzgv/tcXjNw3BoR9y+BViho5BM735 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR11MB6158.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(396003)(136003)(366004)(346002)(39860400002)(376002)(4326008)(5660300002)(54906003)(76116006)(316002)(66946007)(66556008)(8676002)(55016003)(52536014)(8936002)(64756008)(66476007)(66446008)(107886003)(30864003)(122000001)(83380400001)(2906002)(82960400001)(38070700005)(33656002)(38100700002)(86362001)(71200400001)(9686003)(6506007)(26005)(7696005)(53546011)(41300700001)(966005)(478600001)(186003)(110136005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?M2o1clJtUU9mL3I3eFVwKzF2SGk0Zm41UmxrSVM3UHhod0hQRjY0VVhjZWw1?= =?utf-8?B?MXdQUlBPTWpwb0lBaGxiRzk4QWJEOVQ5MWIxQTJJTDVKS2FOc2ZvTi94UFhM?= =?utf-8?B?WjV6Slo3SmF0SEJQdzZhV3lSZzFieWhaSjBRV05NdDhtSUV3UnhsajBhdlN5?= =?utf-8?B?cWtVeDJ4eHhadGM1V0R1WEZhcVY2bkh5L3E3OVpOSmgvU3psQjdXL1RMK1Nn?= =?utf-8?B?OERLUmsxa0F3MGpBNzdPWHA3Qld2ZzBLSWIycWZlVHdoaHVWNVY4TER5ei8y?= =?utf-8?B?UDFFRFU1NFlUdXdTL2hPR2Uvb1Q3aUpOSWdIZnlMajltRThFS0k4RnFUS0pU?= =?utf-8?B?dXB0MnV4YVM4ak4yLzI5Z25wdUJYWUNmNlFXU1dsOUFLdEM1L1pyVUVWcUV0?= =?utf-8?B?aUVzRVBuUXF2WmY3aVMxSjVoMlFtdFlRZHlhNWxyakoweDFrZDBNcmlYbXc0?= =?utf-8?B?QU1ucW10d1VqRHl4WmNFTVNuT3dqbFE5WFI1L1dlZXZsaXR6b1FSVVljeFAw?= =?utf-8?B?YmVHd1NKdUlpMndFYjI4aitUeUhXZ0IveUo0YjM4YlpZTEVkQ2tYajNjSjFh?= =?utf-8?B?bEQ0bzFBS05PcXpSMzQxQndjeDFYV1UxZzJXdnc5dTBRZU16Q1FVZE9IMHZ5?= =?utf-8?B?U0pkVGg0eERkWi9wVkl5ektqZ2NHQ1U5S0ZYNGtMUVVtTmQ4VzcvSzJtcEcx?= =?utf-8?B?UkRVdUNNWTZWZXRuR0VvVTV2TWttZWlpUHczQXhkdzZFclpoZm9VWCtvZGhY?= =?utf-8?B?OHRieFMxT1BhTmUra3YzQWlZODN0TzJKUHVtaEtJRy9lVmNnWm54Z1hwWitS?= =?utf-8?B?M0lKcmsvTEhSclY1MUp1Z2xnTEoxQld5emdKM3pxUzZjRFlUVytRNG5NRVgy?= =?utf-8?B?ajBiWTNrR3NkSmRYVGdZMjB2QWN5U0U1YlhDMWVWcm9FaEVqU3BtT3Q3T09W?= =?utf-8?B?VnUrWkhiVE1XbmdpdDhqRENvL1NickJ2eFM1K1hmZG1CU0ZJS0hHWFhENEtG?= =?utf-8?B?bmd2RXJNV3RWTlAvU1FBVWttWjlwMjhnZnJNZ2RmMlNBQ0VTQUtick5oQy9q?= =?utf-8?B?N1l5eVB4ZkliRmlaQzlVeFlIeWJPZDhqUjQ1MzQrUHllSFNWVHl1dmpVZnpP?= =?utf-8?B?VENLbWpyYk1qazN5M1lxYURpRXlxTC9MRmhzb2tvZmVOd2x0TEhVTHBhQkx1?= =?utf-8?B?V3BaSjZJcS9uQzh6cXoxaDJyek1YdndWOXEvdlIvSTlhOUllSEJ6dXVEUDgw?= =?utf-8?B?aXhOOVVnWGFkOXdOTG0vTHRHYlgzdXVZbVRzU0lUOWRPV2lDMmU0cTdIZ3pv?= =?utf-8?B?MldHQldYaWN5WVN6ZFU2c0N5MnZWRnBSTkJZSXdTMmhKOEhCdnJuRXlwSXdP?= =?utf-8?B?YTA5NUZBc0F4Q0c0MGs2aFBhTExLLzU1Y1BXVWZvRndvWVVmY3ExcW9TUWNp?= =?utf-8?B?aW15eG5NdGRCZ2RjMnJVT1JqY3pERzU3THlvNUFETEF1Y0IxRXhHQmFYdEJa?= =?utf-8?B?SkVMcWU3cjk3UENMREI5NnducitiWDcxa1A4cHg2c0trdHBiV0o4RWV0RTFY?= =?utf-8?B?SE1zSzFGYVIyYi9hWWJUN2Z0d2JHYm10dzgwU1ZrWmVLditZWmxoWmVhU25n?= =?utf-8?B?TW80WWtGTXJOU0RBVFBtTDZZeXMzUVE5RnNVR2RaK2JtTnZLZFljOEJVdnov?= =?utf-8?B?RWR1VEt0d25vVzh2RlZjaGlKR0NLZ0d4WmdEcFVENVdNRmlNKzJJcm42NjU4?= =?utf-8?B?Z2JGOEJJSG93MC8wSnNDVzU3Q2hBUUJxOHBuTnUyQXNEUmxnMThneXFBUHhp?= =?utf-8?B?UWpmQzdlcjJvMFNpVHhEZ2M2ZGNaQmJSd1BEcDg2RzBjc2U3SER0VnJ5emFC?= =?utf-8?B?UkJrOU54SXlzTVV3Nkg1Ti9mRUZteExpUnRPamJLZWM5dUc3aU1RTk9Hb2JQ?= =?utf-8?B?YnU1MFcxa3NjWnRWWEVvSXFuM3VySHFFVVFsakQ2dEY0d1RrVmxhRExxMk5t?= =?utf-8?B?cEJaMVF1V1Y2QUVGektOUUkvNU5GUzlSdUtERzNQZ1VOU2lQcnUyNVJ0Smxv?= =?utf-8?B?T2JRMEhaQ1crbks0SXFnckc2c3R3OXhZbkplcWFFRC95bWk5NGcwcmtRR1JN?= =?utf-8?Q?+pf/cUqRbYTeyT32/anpiwyBl?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB6158.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 556a4fec-af05-467b-06db-08da688fa74d X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jul 2022 07:32:22.2242 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YHY9XtbhcjV07ukx5T8U8ci4/BVpV2TtpbSiJd+OOVdLmMJzwJ5JO5LYtkWCEeQVx4MgtjNgkZYsSGwbhcrBrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1403 Return-Path: jiaxin.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWlrZSwNCg0KVGhhbmtzIHRoZSBjb21tZW50cy4gT25seSBJQS0zMiBwcm9jZXNzb3Igd2ls bCBjaGVjayBvbiBldmVyeSBTTUkgc2luY2UgaXQgbmVlZHMgY29uZmlndXJlIE10cnIuIERvIHlv dSB0aGluayB0aGUgaW1wYWN0IGlzIGFjY2VwdGFibGUgb3Igbm90Pw0KDQpGb3IgZml4ZWQgUENE IHNvbHV0aW9uLCB0aGUgb3JpZ2luYWwgY29uY2VybjogdGhlIGZpeGVkIFBDRCB3aWxsIGJlIHRy ZWF0ZWQgYXMgZ2xvYmFsIHZhcmlhYmxlLiBTaG91bGQgd2UgbmVlZCBjb25zaWRlciBubyBjb21w aWxlciBvcHRpbWl6YXRpb24gY2FzZSBvciBpdCBtdXN0IGJlIG9wdGltaXplZCBhd2F5IGNvbmRp dGlvbiBjaGVja3M/DQoNClRoYW5rcywNCkppYXhpbg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiBTZW50OiBNb25kYXksIEp1bHkgMTgsIDIwMjIgODoxMyBBTQ0KPiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IFd1LCBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+OyBLaW5u ZXksIE1pY2hhZWwNCj4gRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4N Cj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjFdIFVlZmlDcHVQa2c6IER5bmFt aWMgY2hlY2sgU01SUiBlbmFibGUNCj4gJiBTbW1GZWF0dXJlQ29udHJvbCBjYXBhYmlsaXR5DQo+ IA0KPiBBcmUgdGhlc2UgY2hlY2tzIG1hZGUgb24gZXZlcnkgU01JPw0KPiANCj4gV2hhdCBpcyB0 aGUgaW1wYWN0IHRvIFNNSSBsYXRlbmN5IHRvIGRvIHRoZSBjaGVjayBkeW5hbWljYWxseT8NCj4g DQo+IEZlYXR1cmVGbGFnIGFuZCBGaXhlZEF0QnVpbGQgUENEcyBhcmUgZGVjbGFyZWQgYXMgY29u c3QgZ2xvYmFsIHZhcmlhYmxlcw0KPiB3aGljaCBhcmUgdXNlZCBieSBvcHRpbWl6aW5nIGNvbXBp bGVyIGFzIGNvbnN0YW50cyBpbiBpbnN0cnVjdGlvbnMgb3INCj4gb3B0aW1pemUgYXdheSBjb25k aXRpb24gY2hlY2tzIGFsbCB0b2dldGhlci4gIFRoaXMgb3B0aW9uIHNob3VsZCBzdGlsbA0KPiBi ZSBjb25zaWRlcmVkLg0KPiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5p bz4gT24gQmVoYWxmIE9mIFd1LA0KPiBKaWF4aW4NCj4gPiBTZW50OiBTdW5kYXksIEp1bHkgMTcs IDIwMjIgMTozOCBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBEb25n LCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4N Cj4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIHYxXSBVZWZpQ3B1UGtnOiBEeW5hbWlj IGNoZWNrIFNNUlIgZW5hYmxlICYNCj4gU21tRmVhdHVyZUNvbnRyb2wgY2FwYWJpbGl0eQ0KPiA+ DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTM5NjINCj4gPg0KPiA+IFR3byBTTU0gdmFyaWFibGVzIChtU21yclN1cHBvcnRlZCAmIG1TbW1G ZWF0dXJlQ29udHJvbFN1cHBvcnRlZCkNCj4gYXJlIGdsb2JhbA0KPiA+IHZhcmlhYmxlcywgdGhl eSBjb250cm9sIHdoZXRoZXIgdGhlIFNNUlIgYW5kIFNNTSBGZWF0dXJlIENvbnRyb2wgTVNSIHdp bGwNCj4gPiBiZSByZXN0b3JlZCByZXNwZWN0aXZlbHkuDQo+ID4gVG8gYXZvaWQgdGhlIFRPQ1RP VSwgZHluYW1pYyBjaGVjayBTTVJSIGVuYWJsZSAmIFNtbUZlYXR1cmVDb250cm9sDQo+IGNhcGFi aWxpdHkuDQo+ID4NCj4gPiBDaGFuZ2UtSWQ6IEk2ODM1ZTRiMGUxMmM1ZTZmNTJlZmZiNjBmZDky MjRlM2ViOTdmYzBkDQo+ID4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4g PiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEppYXhp biBXdSA8amlheGluLnd1QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgLi4uL1NtbUNwdUZlYXR1 cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliQ29tbW9uLmMgICAgfCAyNDgNCj4gKysrKysrKysrKysr LS0tLS0tLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKSwgMTA3IGRl bGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9T bW1DcHVGZWF0dXJlc0xpYi9TbW1DcHVGZWF0dXJlc0xpYkNvbW1vbi5jDQo+ID4gYi9VZWZpQ3B1 UGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIvU21tQ3B1RmVhdHVyZXNMaWJDb21tb24uYw0K PiA+IGluZGV4IDc4ZGU3Zjg0MDcuLmIyZjMxYzk5M2YgMTAwNjQ0DQo+ID4gLS0tDQo+IGEvVWVm aUNwdVBrZy9MaWJyYXJ5L1NtbUNwdUZlYXR1cmVzTGliL1NtbUNwdUZlYXR1cmVzTGliQ29tbW9u LmMNCj4gPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvU21tQ3B1RmVhdHVyZXNMaWIvU21t Q3B1RmVhdHVyZXNMaWJDb21tb24uYw0KPiA+IEBAIC0zNSwyNiArMzUsMTAgQEAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAgLy8gTVNScyByZXF1aXJl ZCBmb3IgY29uZmlndXJhdGlvbiBvZiBTTU0gQ29kZSBBY2Nlc3MgQ2hlY2sNCj4gPiAgLy8NCj4g PiAgI2RlZmluZSBTTU1fRkVBVFVSRVNfTElCX0lBMzJfTUNBX0NBUCAgMHgxN0QNCj4gPiAgI2Rl ZmluZSAgIFNNTV9DT0RFX0FDQ0VTU19DSEtfQklUICAgICAgQklUNTgNCj4gPg0KPiA+IC0vLw0K PiA+IC0vLyBTZXQgZGVmYXVsdCB2YWx1ZSB0byBhc3N1bWUgU01SUiBpcyBub3Qgc3VwcG9ydGVk DQo+ID4gLS8vDQo+ID4gLUJPT0xFQU4gIG1TbXJyU3VwcG9ydGVkID0gRkFMU0U7DQo+ID4gLQ0K PiA+IC0vLw0KPiA+IC0vLyBTZXQgZGVmYXVsdCB2YWx1ZSB0byBhc3N1bWUgTVNSX1NNTV9GRUFU VVJFX0NPTlRST0wgaXMgbm90DQo+IHN1cHBvcnRlZA0KPiA+IC0vLw0KPiA+IC1CT09MRUFOICBt U21tRmVhdHVyZUNvbnRyb2xTdXBwb3J0ZWQgPSBGQUxTRTsNCj4gPiAtDQo+ID4gLS8vDQo+ID4g LS8vIFNldCBkZWZhdWx0IHZhbHVlIHRvIGFzc3VtZSBJQS0zMiBBcmNoaXRlY3R1cmFsIE1TUnMg YXJlIHVzZWQNCj4gPiAtLy8NCj4gPiAtVUlOVDMyICBtU21yclBoeXNCYXNlTXNyID0gU01NX0ZF QVRVUkVTX0xJQl9JQTMyX1NNUlJfUEhZU0JBU0U7DQo+ID4gLVVJTlQzMiAgbVNtcnJQaHlzTWFz a01zciA9DQo+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9TTVJSX1BIWVNNQVNLOw0KPiA+IC0NCj4g PiAgLy8NCj4gPiAgLy8gU2V0IGRlZmF1bHQgdmFsdWUgdG8gYXNzdW1lIE1UUlJzIG5lZWQgdG8g YmUgY29uZmlndXJlZCBvbiBlYWNoIFNNSQ0KPiA+ICAvLw0KPiA+ICBCT09MRUFOICBtTmVlZENv bmZpZ3VyZU10cnJzID0gVFJVRTsNCj4gPg0KPiA+IEBAIC02MiwyNiArNDYsMzkgQEAgQk9PTEVB TiAgbU5lZWRDb25maWd1cmVNdHJycyA9IFRSVUU7DQo+ID4gIC8vIEFycmF5IGZvciBzdGF0ZSBv ZiBTTVJSIGVuYWJsZSBvbiBhbGwgQ1BVcw0KPiA+ICAvLw0KPiA+ICBCT09MRUFOICAqbVNtcnJF bmFibGVkOw0KPiA+DQo+ID4gIC8qKg0KPiA+IC0gIFBlcmZvcm1zIGxpYnJhcnkgaW5pdGlhbGl6 YXRpb24uDQo+ID4gKyAgUmV0dXJuIGlmIFNNUlIgaXMgc3VwcG9ydGVkDQo+ID4NCj4gPiAtICBU aGlzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNvbnRhaW5zIGNvbW1vbiBmdW5jdGlvbmFsaXR5 IHNoYXJlZCBiZXR3ZW4gYWxsDQo+ID4gLSAgbGlicmFyeSBpbnN0YW5jZSBjb25zdHJ1Y3RvcnMu DQo+ID4gKyAgQHBhcmFtW2luXSBTbXJyUGh5c0Jhc2VNc3IgICBQb2ludGVyIHRvIFNtcnJQaHlz QmFzZU1zci4NCj4gPiArICBAcGFyYW1baW5dIFNtcnJQaHlzTWFza01zciAgIFBvaW50ZXIgdG8g U21yclBoeXNNYXNrTXNyLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgIFNNUlIgaXMgc3Vw cG9ydGVkLg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgU01SUiBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ DQo+ID4gICoqLw0KPiA+IC1WT0lEDQo+ID4gLUNwdUZlYXR1cmVzTGliSW5pdGlhbGl6YXRpb24g KA0KPiA+IC0gIFZPSUQNCj4gPiArQk9PTEVBTg0KPiA+ICtJc1NtcnJTdXBwb3J0ZWQgKA0KPiA+ ICsgIElOIFVJTlQzMiAgKlNtcnJQaHlzQmFzZU1zciAgICBPUFRJT05BTCwNCj4gPiArICBJTiBV SU5UMzIgICpTbXJyUGh5c01hc2tNc3IgICAgT1BUSU9OQUwNCj4gPiAgICApDQo+ID4gIHsNCj4g PiArICBCT09MRUFOICBSZXR1cm5WYWx1ZTsNCj4gPiArDQo+ID4gICAgVUlOVDMyICBSZWdFYXg7 DQo+ID4gICAgVUlOVDMyICBSZWdFZHg7DQo+ID4gICAgVUlOVE4gICBGYW1pbHlJZDsNCj4gPiAg ICBVSU5UTiAgIE1vZGVsSWQ7DQo+ID4NCj4gPiArICBVSU5UNjQgIEZlYXR1cmVDb250cm9sOw0K PiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFNldCBkZWZhdWx0IHZhbHVlIHRvIGFzc3VtZSBT TVJSIGlzIG5vdCBzdXBwb3J0ZWQNCj4gPiArICAvLw0KPiA+ICsgIFJldHVyblZhbHVlID0gRkFM U0U7DQo+ID4gKw0KPiA+ICAgIC8vDQo+ID4gICAgLy8gUmV0cmlldmUgQ1BVIEZhbWlseSBhbmQg TW9kZWwNCj4gPiAgICAvLw0KPiA+ICAgIEFzbUNwdWlkIChDUFVJRF9WRVJTSU9OX0lORk8sICZS ZWdFYXgsIE5VTEwsIE5VTEwsICZSZWdFZHgpOw0KPiA+ICAgIEZhbWlseUlkID0gKFJlZ0VheCA+ PiA4KSAmIDB4ZjsNCj4gPiBAQCAtOTYsMTEgKzkzLDExIEBAIENwdUZlYXR1cmVzTGliSW5pdGlh bGl6YXRpb24gKA0KPiA+ICAgIGlmICgoUmVnRWR4ICYgQklUMTIpICE9IDApIHsNCj4gPiAgICAg IC8vDQo+ID4gICAgICAvLyBDaGVjayBNVFJSX0NBUCBNU1IgYml0IDExIGZvciBTTVJSIHN1cHBv cnQNCj4gPiAgICAgIC8vDQo+ID4gICAgICBpZiAoKEFzbVJlYWRNc3I2NCAoU01NX0ZFQVRVUkVT X0xJQl9JQTMyX01UUlJfQ0FQKSAmIEJJVDExKSAhPSAwKQ0KPiB7DQo+ID4gLSAgICAgIG1TbXJy U3VwcG9ydGVkID0gVFJVRTsNCj4gPiArICAgICAgUmV0dXJuVmFsdWUgPSBUUlVFOw0KPiA+ICAg ICAgfQ0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIC8vDQo+ID4gICAgLy8gSW50ZWwoUikgNjQgYW5k IElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ID4gQEAg LTEwOSwyOCArMTA2LDc5IEBAIENwdUZlYXR1cmVzTGliSW5pdGlhbGl6YXRpb24gKA0KPiA+ICAg IC8vIElmIENQVSBGYW1pbHkvTW9kZWwgaXMgMDZfMUNILCAwNl8yNkgsIDA2XzI3SCwgMDZfMzVI IG9yIDA2XzM2SCwNCj4gdGhlbg0KPiA+ICAgIC8vIFNNUlIgUGh5c2ljYWwgQmFzZSBhbmQgU01N IFBoeXNpY2FsIE1hc2sgTVNScyBhcmUgbm90IGF2YWlsYWJsZS4NCj4gPiAgICAvLw0KPiA+ICAg IGlmIChGYW1pbHlJZCA9PSAweDA2KSB7DQo+ID4gICAgICBpZiAoKE1vZGVsSWQgPT0gMHgxQykg fHwgKE1vZGVsSWQgPT0gMHgyNikgfHwgKE1vZGVsSWQgPT0gMHgyNykgfHwNCj4gKE1vZGVsSWQg PT0gMHgzNSkgfHwgKE1vZGVsSWQgPT0gMHgzNikpIHsNCj4gPiAtICAgICAgbVNtcnJTdXBwb3J0 ZWQgPSBGQUxTRTsNCj4gPiArICAgICAgUmV0dXJuVmFsdWUgPSBGQUxTRTsNCj4gPiAgICAgIH0N Cj4gPiAgICB9DQo+ID4NCj4gPiAtICAvLw0KPiA+IC0gIC8vIEludGVsKFIpIDY0IGFuZCBJQS0z MiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVhbA0KPiA+IC0gIC8vIFZv bHVtZSAzQywgU2VjdGlvbiAzNS4yIE1TUnMgaW4gdGhlIEludGVsKFIpIENvcmUoVE0pIDIgUHJv Y2Vzc29yDQo+IEZhbWlseQ0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSWYgQ1BVIEZhbWlseS9Nb2Rl bCBpcyAwNl8wRiBvciAwNl8xNywgdGhlbiB1c2UgSW50ZWwoUikgQ29yZShUTSkgMg0KPiA+IC0g IC8vIFByb2Nlc3NvciBGYW1pbHkgTVNScw0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKEZhbWlseUlk ID09IDB4MDYpIHsNCj4gPiAtICAgIGlmICgoTW9kZWxJZCA9PSAweDE3KSB8fCAoTW9kZWxJZCA9 PSAweDBmKSkgew0KPiA+IC0gICAgICBtU21yclBoeXNCYXNlTXNyID0NCj4gU01NX0ZFQVRVUkVT X0xJQl9JQTMyX0NPUkVfU01SUl9QSFlTQkFTRTsNCj4gPiAtICAgICAgbVNtcnJQaHlzTWFza01z ciA9DQo+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9DT1JFX1NNUlJfUEhZU01BU0s7DQo+ID4gKyAg aWYgKFJldHVyblZhbHVlKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gUmV0dXJuIHRoZSBT bXJyUGh5c0Jhc2VNc3IgJiBTbXJyUGh5c01hc2tNc3IgaWYgcmVxdWlyZWQgJiBTbXJyDQo+IFN1 cHBvcnRlZA0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmIChTbXJyUGh5c0Jhc2VNc3IgIT0gTlVM TCkgew0KPiA+ICsgICAgICAqU21yclBoeXNCYXNlTXNyID0gU01NX0ZFQVRVUkVTX0xJQl9JQTMy X1NNUlJfUEhZU0JBU0U7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKFNtcnJQaHlz QmFzZU1zciAhPSBOVUxMKSB7DQo+ID4gKyAgICAgICpTbXJyUGh5c01hc2tNc3IgPSBTTU1fRkVB VFVSRVNfTElCX0lBMzJfU01SUl9QSFlTTUFTSzsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgLy8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29m dHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ID4gKyAgICAvLyBWb2x1bWUgM0MsIFNlY3Rpb24g MzUuMiBNU1JzIGluIHRoZSBJbnRlbChSKSBDb3JlKFRNKSAyIFByb2Nlc3Nvcg0KPiBGYW1pbHkN Cj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBJZiBDUFUgRmFtaWx5L01vZGVsIGlzIDA2XzBGIG9y IDA2XzE3LCB0aGVuIHVzZSBJbnRlbChSKSBDb3JlKFRNKSAyDQo+ID4gKyAgICAvLyBQcm9jZXNz b3IgRmFtaWx5IE1TUnMNCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoRmFtaWx5SWQgPT0gMHgw Nikgew0KPiA+ICsgICAgICBpZiAoKE1vZGVsSWQgPT0gMHgxNykgfHwgKE1vZGVsSWQgPT0gMHgw ZikpIHsNCj4gPiArICAgICAgICBpZiAoU21yclBoeXNCYXNlTXNyICE9IE5VTEwpIHsNCj4gPiAr ICAgICAgICAgICpTbXJyUGh5c0Jhc2VNc3IgPQ0KPiBTTU1fRkVBVFVSRVNfTElCX0lBMzJfQ09S RV9TTVJSX1BIWVNCQVNFOw0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgaWYg KFNtcnJQaHlzTWFza01zciAhPSBOVUxMKSB7DQo+ID4gKyAgICAgICAgICAqU21yclBoeXNNYXNr TXNyID0NCj4gU01NX0ZFQVRVUkVTX0xJQl9JQTMyX0NPUkVfU01SUl9QSFlTTUFTSzsNCj4gPiAr ICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gSW50ZWwo UikgNjQgYW5kIElBLTMyIEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFs DQo+ID4gKyAgICAgICAgLy8gVm9sdW1lIDNDLCBTZWN0aW9uIDM1LjIgTVNScyBpbiB0aGUgSW50 ZWwoUikgQ29yZShUTSkgMiBQcm9jZXNzb3INCj4gRmFtaWx5DQo+ID4gKyAgICAgICAgLy8NCj4g PiArICAgICAgICAvLyBJZiBJbnRlbChSKSBDb3JlKFRNKSBDb3JlKFRNKSAyIFByb2Nlc3NvciBG YW1pbHkgTVNScyBhcmUgYmVpbmcNCj4gdXNlZCwgdGhlbg0KPiA+ICsgICAgICAgIC8vIG1ha2Ug c3VyZSBTTVJSIEVuYWJsZShCSVQzKSBvZiBNU1JfRkVBVFVSRV9DT05UUk9MDQo+IE1TUigweDNB KSBpcyBzZXQgYmVmb3JlDQo+ID4gKyAgICAgICAgLy8gYWNjZXNzaW5nIFNNUlIgYmFzZS9tYXNr IE1TUnMuICBJZiBMb2NrKEJJVDApIG9mDQo+IE1TUl9GRUFUVVJFX0NPTlRST0wgTVNSKDB4M0Ep DQo+ID4gKyAgICAgICAgLy8gaXMgc2V0LCB0aGVuIHRoZSBNU1IgaXMgbG9ja2VkIGFuZCBjYW4g bm90IGJlIG1vZGlmaWVkLg0KPiA+ICsgICAgICAgIC8vDQo+ID4gKw0KPiA+ICsgICAgICAgIEZl YXR1cmVDb250cm9sID0gQXNtUmVhZE1zcjY0DQo+IChTTU1fRkVBVFVSRVNfTElCX0lBMzJfRkVB VFVSRV9DT05UUk9MKTsNCj4gPiArICAgICAgICBpZiAoKChGZWF0dXJlQ29udHJvbCAmIEJJVDMp ID09IDApICYmICgoRmVhdHVyZUNvbnRyb2wgJiBCSVQwKSA9PSAxKSkgew0KPiA+ICsgICAgICAg ICAgUmV0dXJuVmFsdWUgPSBGQUxTRTsNCj4gPiArICAgICAgICB9DQo+ID4gKyAgICAgIH0NCj4g PiAgICAgIH0NCj4gPiAgICB9DQo+ID4NCj4gPiArICByZXR1cm4gUmV0dXJuVmFsdWU7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBlcmZvcm1zIGxpYnJhcnkgaW5pdGlhbGl6YXRp b24uDQo+ID4gKw0KPiA+ICsgIFRoaXMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gY29udGFpbnMg Y29tbW9uIGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJldHdlbiBhbGwNCj4gPiArICBsaWJyYXJ5IGlu c3RhbmNlIGNvbnN0cnVjdG9ycy4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0Nw dUZlYXR1cmVzTGliSW5pdGlhbGl6YXRpb24gKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBVSU5UMzIgIFJlZ0VheDsNCj4gPiArICBVSU5UMzIgIFJlZ0VkeDsNCj4gPiAr DQo+ID4gICAgLy8NCj4gPiAgICAvLyBJbnRlbChSKSA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJl cyBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWwNCj4gPiAgICAvLyBWb2x1bWUgM0MsIFNlY3Rp b24gMzQuNC4yIFNNUkFNIENhY2hpbmcNCj4gPiAgICAvLyAgIEFuIElBLTMyIHByb2Nlc3NvciBk b2VzIG5vdCBhdXRvbWF0aWNhbGx5IHdyaXRlIGJhY2sgYW5kIGludmFsaWRhdGUgaXRzDQo+ID4g ICAgLy8gICBjYWNoZXMgYmVmb3JlIGVudGVyaW5nIFNNTSBvciBiZWZvcmUgZXhpdGluZyBTTU0u IEJlY2F1c2Ugb2YgdGhpcw0KPiBiZWhhdmlvciwNCj4gPiBAQCAtMTkzLDUwICsyNDEsMjcgQEAg U21tQ3B1RmVhdHVyZXNJbml0aWFsaXplUHJvY2Vzc29yICgNCj4gPiAgICBJTiBFRklfUFJPQ0VT U09SX0lORk9STUFUSU9OICAqUHJvY2Vzc29ySW5mbywNCj4gPiAgICBJTiBDUFVfSE9UX1BMVUdf REFUQSAgICAgICAgICAqQ3B1SG90UGx1Z0RhdGENCj4gPiAgICApDQo+ID4gIHsNCj4gPiAgICBT TVJBTV9TQVZFX1NUQVRFX01BUCAgKkNwdVN0YXRlOw0KPiA+IC0gIFVJTlQ2NCAgICAgICAgICAg ICAgICBGZWF0dXJlQ29udHJvbDsNCj4gPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgUmVnRWF4 Ow0KPiA+IC0gIFVJTlQzMiAgICAgICAgICAgICAgICBSZWdFZHg7DQo+ID4gLSAgVUlOVE4gICAg ICAgICAgICAgICAgIEZhbWlseUlkOw0KPiA+IC0gIFVJTlROICAgICAgICAgICAgICAgICBNb2Rl bElkOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICBTbXJyUGh5c0Jhc2VNc3I7DQo+ID4g KyAgVUlOVDMyICAgICAgICAgICAgICAgIFNtcnJQaHlzTWFza01zcjsNCj4gPg0KPiA+ICAgIC8v DQo+ID4gICAgLy8gQ29uZmlndXJlIFNNQkFTRS4NCj4gPiAgICAvLw0KPiA+ICAgIENwdVN0YXRl ICAgICAgICAgICAgID0gKFNNUkFNX1NBVkVfU1RBVEVfTUFQDQo+ICopKFVJTlROKShTTU1fREVG QVVMVF9TTUJBU0UgKyBTTVJBTV9TQVZFX1NUQVRFX01BUF9PRkZTRVQpOw0KPiA+ICAgIENwdVN0 YXRlLT54ODYuU01CQVNFID0gKFVJTlQzMilDcHVIb3RQbHVnRGF0YS0+U21CYXNlW0NwdUluZGV4 XTsNCj4gPg0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSW50ZWwoUikgNjQgYW5kIElBLTMyIEFyY2hp dGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsDQo+ID4gLSAgLy8gVm9sdW1lIDND LCBTZWN0aW9uIDM1LjIgTVNScyBpbiB0aGUgSW50ZWwoUikgQ29yZShUTSkgMiBQcm9jZXNzb3IN Cj4gRmFtaWx5DQo+ID4gLSAgLy8NCj4gPiAtICAvLyBJZiBJbnRlbChSKSBDb3JlKFRNKSBDb3Jl KFRNKSAyIFByb2Nlc3NvciBGYW1pbHkgTVNScyBhcmUgYmVpbmcgdXNlZCwNCj4gdGhlbg0KPiA+ IC0gIC8vIG1ha2Ugc3VyZSBTTVJSIEVuYWJsZShCSVQzKSBvZiBNU1JfRkVBVFVSRV9DT05UUk9M IE1TUigweDNBKQ0KPiBpcyBzZXQgYmVmb3JlDQo+ID4gLSAgLy8gYWNjZXNzaW5nIFNNUlIgYmFz ZS9tYXNrIE1TUnMuICBJZiBMb2NrKEJJVDApIG9mDQo+IE1TUl9GRUFUVVJFX0NPTlRST0wgTVNS KDB4M0EpDQo+ID4gLSAgLy8gaXMgc2V0LCB0aGVuIHRoZSBNU1IgaXMgbG9ja2VkIGFuZCBjYW4g bm90IGJlIG1vZGlmaWVkLg0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKG1TbXJyU3VwcG9ydGVkICYm IChtU21yclBoeXNCYXNlTXNyID09DQo+IFNNTV9GRUFUVVJFU19MSUJfSUEzMl9DT1JFX1NNUlJf UEhZU0JBU0UpKSB7DQo+ID4gLSAgICBGZWF0dXJlQ29udHJvbCA9IEFzbVJlYWRNc3I2NA0KPiAo U01NX0ZFQVRVUkVTX0xJQl9JQTMyX0ZFQVRVUkVfQ09OVFJPTCk7DQo+ID4gLSAgICBpZiAoKEZl YXR1cmVDb250cm9sICYgQklUMykgPT0gMCkgew0KPiA+IC0gICAgICBpZiAoKEZlYXR1cmVDb250 cm9sICYgQklUMCkgPT0gMCkgew0KPiA+IC0gICAgICAgIEFzbVdyaXRlTXNyNjQgKFNNTV9GRUFU VVJFU19MSUJfSUEzMl9GRUFUVVJFX0NPTlRST0wsDQo+IEZlYXR1cmVDb250cm9sIHwgQklUMyk7 DQo+ID4gLSAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgICAgbVNtcnJTdXBwb3J0ZWQgPSBGQUxT RTsNCj4gPiAtICAgICAgfQ0KPiA+IC0gICAgfQ0KPiA+IC0gIH0NCj4gPiAtDQo+ID4gICAgLy8N Cj4gPiAgICAvLyBJZiBTTVJSIGlzIHN1cHBvcnRlZCwgdGhlbiBwcm9ncmFtIFNNUlIgYmFzZS9t YXNrIE1TUnMuDQo+ID4gICAgLy8gVGhlIEVGSV9NU1JfU01SUl9QSFlTX01BU0tfVkFMSUQgYml0 IGlzIG5vdCBzZXQgdW50aWwgdGhlIGZpcnN0DQo+IG5vcm1hbCBTTUkuDQo+ID4gICAgLy8gVGhl IGNvZGUgdGhhdCBpbml0aWFsaXplcyBTTU0gZW52aXJvbm1lbnQgaXMgcnVubmluZyBpbiBub3Jt YWwgbW9kZQ0KPiA+ICAgIC8vIGZyb20gU01SQU0gcmVnaW9uLiAgSWYgU01SUiBpcyBlbmFibGVk IGhlcmUsIHRoZW4gdGhlIFNNUkFNIHJlZ2lvbg0KPiA+ICAgIC8vIGlzIHByb3RlY3RlZCBhbmQg dGhlIG5vcm1hbCBtb2RlIGNvZGUgZXhlY3V0aW9uIHdpbGwgZmFpbC4NCj4gPiAgICAvLw0KPiA+ IC0gIGlmIChtU21yclN1cHBvcnRlZCkgew0KPiA+ICsgIGlmIChJc1NtcnJTdXBwb3J0ZWQgKCZT bXJyUGh5c0Jhc2VNc3IsICZTbXJyUGh5c01hc2tNc3IpKSB7DQo+ID4gICAgICAvLw0KPiA+ICAg ICAgLy8gU01SUiBzaXplIGNhbm5vdCBiZSBsZXNzIHRoYW4gNC1LQnl0ZXMNCj4gPiAgICAgIC8v IFNNUlIgc2l6ZSBtdXN0IGJlIG9mIGxlbmd0aCAyXm4NCj4gPiAgICAgIC8vIFNNUlIgYmFzZSBh bGlnbm1lbnQgY2Fubm90IGJlIGxlc3MgdGhhbiBTTVJSIGxlbmd0aA0KPiA+ICAgICAgLy8NCj4g PiBAQCAtMjUwLDUwICsyNzUsMTYgQEAgU21tQ3B1RmVhdHVyZXNJbml0aWFsaXplUHJvY2Vzc29y ICgNCj4gPiAgICAgICAgaWYgKElzTW9uYXJjaCkgew0KPiA+ICAgICAgICAgIERFQlVHICgoREVC VUdfRVJST1IsICJTTU0gQmFzZS9TaXplIGRvZXMgbm90IG1lZXQNCj4gYWxpZ25tZW50L3NpemUg cmVxdWlyZW1lbnQhXG4iKSk7DQo+ID4gICAgICAgICAgQ3B1RGVhZExvb3AgKCk7DQo+ID4gICAg ICAgIH0NCj4gPiAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgIEFzbVdyaXRlTXNyNjQgKG1TbXJy UGh5c0Jhc2VNc3IsIENwdUhvdFBsdWdEYXRhLT5TbXJyQmFzZSB8DQo+IE1UUlJfQ0FDSEVfV1JJ VEVfQkFDSyk7DQo+ID4gLSAgICAgIEFzbVdyaXRlTXNyNjQgKG1TbXJyUGh5c01hc2tNc3IsICh+ KENwdUhvdFBsdWdEYXRhLT5TbXJyU2l6ZSAtIDEpDQo+ICYgRUZJX01TUl9TTVJSX01BU0spKTsN Cj4gPiArICAgICAgQXNtV3JpdGVNc3I2NCAoU21yclBoeXNCYXNlTXNyLCBDcHVIb3RQbHVnRGF0 YS0+U21yckJhc2UgfA0KPiBNVFJSX0NBQ0hFX1dSSVRFX0JBQ0spOw0KPiA+ICsgICAgICBBc21X cml0ZU1zcjY0IChTbXJyUGh5c01hc2tNc3IsICh+KENwdUhvdFBsdWdEYXRhLT5TbXJyU2l6ZSAt IDEpDQo+ICYgRUZJX01TUl9TTVJSX01BU0spKTsNCj4gPiAgICAgICAgbVNtcnJFbmFibGVkW0Nw dUluZGV4XSA9IEZBTFNFOw0KPiA+ICAgICAgfQ0KPiA+ICAgIH0NCj4gPg0KPiA+IC0gIC8vDQo+ ID4gLSAgLy8gUmV0cmlldmUgQ1BVIEZhbWlseSBhbmQgTW9kZWwNCj4gPiAtICAvLw0KPiA+IC0g IEFzbUNwdWlkIChDUFVJRF9WRVJTSU9OX0lORk8sICZSZWdFYXgsIE5VTEwsIE5VTEwsICZSZWdF ZHgpOw0KPiA+IC0gIEZhbWlseUlkID0gKFJlZ0VheCA+PiA4KSAmIDB4ZjsNCj4gPiAtICBNb2Rl bElkICA9IChSZWdFYXggPj4gNCkgJiAweGY7DQo+ID4gLSAgaWYgKChGYW1pbHlJZCA9PSAweDA2 KSB8fCAoRmFtaWx5SWQgPT0gMHgwZikpIHsNCj4gPiAtICAgIE1vZGVsSWQgPSBNb2RlbElkIHwg KChSZWdFYXggPj4gMTIpICYgMHhmMCk7DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiAtICAvLw0KPiA+ IC0gIC8vIEludGVsKFIpIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVs b3BlcidzIE1hbnVhbA0KPiA+IC0gIC8vIFZvbHVtZSAzQywgU2VjdGlvbiAzNS4xMC4xIE1TUnMg aW4gNHRoIEdlbmVyYXRpb24gSW50ZWwoUikgQ29yZShUTSkNCj4gPiAtICAvLyBQcm9jZXNzb3Ig RmFtaWx5Lg0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSWYgQ1BVIEZhbWlseS9Nb2RlbCBpcyAwNl8z QywgMDZfNDUsIG9yIDA2XzQ2IHRoZW4gdXNlIDR0aCBHZW5lcmF0aW9uDQo+ID4gLSAgLy8gSW50 ZWwoUikgQ29yZShUTSkgUHJvY2Vzc29yIEZhbWlseSBNU1JzLg0KPiA+IC0gIC8vDQo+ID4gLSAg aWYgKEZhbWlseUlkID09IDB4MDYpIHsNCj4gPiAtICAgIGlmICgoTW9kZWxJZCA9PSAweDNDKSB8 fCAoTW9kZWxJZCA9PSAweDQ1KSB8fCAoTW9kZWxJZCA9PSAweDQ2KSB8fA0KPiA+IC0gICAgICAg IChNb2RlbElkID09IDB4M0QpIHx8IChNb2RlbElkID09IDB4NDcpIHx8IChNb2RlbElkID09IDB4 NEUpIHx8DQo+IChNb2RlbElkID09IDB4NEYpIHx8DQo+ID4gLSAgICAgICAgKE1vZGVsSWQgPT0g MHgzRikgfHwgKE1vZGVsSWQgPT0gMHg1NikgfHwgKE1vZGVsSWQgPT0gMHg1NykgfHwNCj4gKE1v ZGVsSWQgPT0gMHg1QykgfHwNCj4gPiAtICAgICAgICAoTW9kZWxJZCA9PSAweDhDKSkNCj4gPiAt ICAgIHsNCj4gPiAtICAgICAgLy8NCj4gPiAtICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBD UFUgc3VwcG9ydHMgdGhlIFNNTSBDb2RlIEFjY2VzcyBDaGVjayBmZWF0dXJlDQo+ID4gLSAgICAg IC8vIERvIG5vdCBhY2Nlc3MgdGhpcyBNU1IgdW5sZXNzIHRoZSBDUFUgc3VwcG9ydHMgdGhlDQo+ IFNtbVJlZ0ZlYXR1cmVDb250cm9sDQo+ID4gLSAgICAgIC8vDQo+ID4gLSAgICAgIGlmICgoQXNt UmVhZE1zcjY0IChTTU1fRkVBVFVSRVNfTElCX0lBMzJfTUNBX0NBUCkgJg0KPiBTTU1fQ09ERV9B Q0NFU1NfQ0hLX0JJVCkgIT0gMCkgew0KPiA+IC0gICAgICAgIG1TbW1GZWF0dXJlQ29udHJvbFN1 cHBvcnRlZCA9IFRSVUU7DQo+ID4gLSAgICAgIH0NCj4gPiAtICAgIH0NCj4gPiAtICB9DQo+ID4g LQ0KPiA+ICAgIC8vDQo+ID4gICAgLy8gIENhbGwgaW50ZXJuYWwgd29ya2VyIGZ1bmN0aW9uIHRo YXQgY29tcGxldGVzIHRoZSBDUFUgaW5pdGlhbGl6YXRpb24NCj4gPiAgICAvLw0KPiA+ICAgIEZp bmlzaFNtbUNwdUZlYXR1cmVzSW5pdGlhbGl6ZVByb2Nlc3NvciAoKTsNCj4gPiAgfQ0KPiA+IEBA IC0zODEsMTIgKzM3MiwxNCBAQCBWT0lEDQo+ID4gIEVGSUFQSQ0KPiA+ICBTbW1DcHVGZWF0dXJl c0Rpc2FibGVTbXJyICgNCj4gPiAgICBWT0lEDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gLSAgaWYg KG1TbXJyU3VwcG9ydGVkICYmIG1OZWVkQ29uZmlndXJlTXRycnMpIHsNCj4gPiAtICAgIEFzbVdy aXRlTXNyNjQgKG1TbXJyUGh5c01hc2tNc3IsIEFzbVJlYWRNc3I2NA0KPiAobVNtcnJQaHlzTWFz a01zcikgJiB+RUZJX01TUl9TTVJSX1BIWVNfTUFTS19WQUxJRCk7DQo+ID4gKyAgVUlOVDMyICBT bXJyUGh5c01hc2tNc3I7DQo+ID4gKw0KPiA+ICsgIGlmIChJc1NtcnJTdXBwb3J0ZWQgKE5VTEws ICZTbXJyUGh5c01hc2tNc3IpICYmDQo+IG1OZWVkQ29uZmlndXJlTXRycnMpIHsNCj4gPiArICAg IEFzbVdyaXRlTXNyNjQgKFNtcnJQaHlzTWFza01zciwgQXNtUmVhZE1zcjY0IChTbXJyUGh5c01h c2tNc3IpDQo+ICYgfkVGSV9NU1JfU01SUl9QSFlTX01BU0tfVkFMSUQpOw0KPiA+ICAgIH0NCj4g PiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgIEVuYWJsZSBTTVJSIHJlZ2lzdGVyIGlmIFNNUlIg aXMgc3VwcG9ydGVkIGFuZA0KPiBTbW1DcHVGZWF0dXJlc05lZWRDb25maWd1cmVNdHJycygpDQo+ ID4gQEAgLTM5NiwxMiArMzg5LDE0IEBAIFZPSUQNCj4gPiAgRUZJQVBJDQo+ID4gIFNtbUNwdUZl YXR1cmVzUmVlbmFibGVTbXJyICgNCj4gPiAgICBWT0lEDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4g LSAgaWYgKG1TbXJyU3VwcG9ydGVkICYmIG1OZWVkQ29uZmlndXJlTXRycnMpIHsNCj4gPiAtICAg IEFzbVdyaXRlTXNyNjQgKG1TbXJyUGh5c01hc2tNc3IsIEFzbVJlYWRNc3I2NA0KPiAobVNtcnJQ aHlzTWFza01zcikgfCBFRklfTVNSX1NNUlJfUEhZU19NQVNLX1ZBTElEKTsNCj4gPiArICBVSU5U MzIgIFNtcnJQaHlzTWFza01zcjsNCj4gPiArDQo+ID4gKyAgaWYgKElzU21yclN1cHBvcnRlZCAo TlVMTCwgJlNtcnJQaHlzTWFza01zcikgJiYNCj4gbU5lZWRDb25maWd1cmVNdHJycykgew0KPiA+ ICsgICAgQXNtV3JpdGVNc3I2NCAoU21yclBoeXNNYXNrTXNyLCBBc21SZWFkTXNyNjQgKFNtcnJQ aHlzTWFza01zcikNCj4gfCBFRklfTVNSX1NNUlJfUEhZU19NQVNLX1ZBTElEKTsNCj4gPiAgICB9 DQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiAgICBQcm9jZXNzb3Igc3BlY2lmaWMgaG9vayBw b2ludCBlYWNoIHRpbWUgYSBDUFUgZW50ZXJzIFN5c3RlbSBNYW5hZ2VtZW50DQo+IE1vZGUuDQo+ ID4gQEAgLTQxNCwxNSArNDA5LDE3IEBAIFZPSUQNCj4gPiAgRUZJQVBJDQo+ID4gIFNtbUNwdUZl YXR1cmVzUmVuZGV6dm91c0VudHJ5ICgNCj4gPiAgICBJTiBVSU5UTiAgQ3B1SW5kZXgNCj4gPiAg ICApDQo+ID4gIHsNCj4gPiArICBVSU5UMzIgIFNtcnJQaHlzTWFza01zcjsNCj4gPiArDQo+ID4g ICAgLy8NCj4gPiAgICAvLyBJZiBTTVJSIGlzIHN1cHBvcnRlZCBhbmQgdGhpcyBpcyB0aGUgZmly c3Qgbm9ybWFsIFNNSSwgdGhlbiBlbmFibGUgU01SUg0KPiA+ICAgIC8vDQo+ID4gLSAgaWYgKG1T bXJyU3VwcG9ydGVkICYmICFtU21yckVuYWJsZWRbQ3B1SW5kZXhdKSB7DQo+ID4gLSAgICBBc21X cml0ZU1zcjY0IChtU21yclBoeXNNYXNrTXNyLCBBc21SZWFkTXNyNjQNCj4gKG1TbXJyUGh5c01h c2tNc3IpIHwgRUZJX01TUl9TTVJSX1BIWVNfTUFTS19WQUxJRCk7DQo+ID4gKyAgaWYgKCFtU21y ckVuYWJsZWRbQ3B1SW5kZXhdICYmIElzU21yclN1cHBvcnRlZCAoTlVMTCwNCj4gJlNtcnJQaHlz TWFza01zcikpIHsNCj4gPiArICAgIEFzbVdyaXRlTXNyNjQgKFNtcnJQaHlzTWFza01zciwgQXNt UmVhZE1zcjY0IChTbXJyUGh5c01hc2tNc3IpDQo+IHwgRUZJX01TUl9TTVJSX1BIWVNfTUFTS19W QUxJRCk7DQo+ID4gICAgICBtU21yckVuYWJsZWRbQ3B1SW5kZXhdID0gVFJVRTsNCj4gPiAgICB9 DQo+ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtNDU4LDEyICs0NTUsNDkgQEAgRUZJQVBJ DQo+ID4gIFNtbUNwdUZlYXR1cmVzSXNTbW1SZWdpc3RlclN1cHBvcnRlZCAoDQo+ID4gICAgSU4g VUlOVE4gICAgICAgICBDcHVJbmRleCwNCj4gPiAgICBJTiBTTU1fUkVHX05BTUUgIFJlZ05hbWUN Cj4gPiAgICApDQo+ID4gIHsNCj4gPiAtICBpZiAobVNtbUZlYXR1cmVDb250cm9sU3VwcG9ydGVk ICYmIChSZWdOYW1lID09DQo+IFNtbVJlZ0ZlYXR1cmVDb250cm9sKSkgew0KPiA+IC0gICAgcmV0 dXJuIFRSVUU7DQo+ID4gKyAgVUlOVDMyICBSZWdFYXg7DQo+ID4gKyAgVUlOVDMyICBSZWdFZHg7 DQo+ID4gKyAgVUlOVE4gICBGYW1pbHlJZDsNCj4gPiArICBVSU5UTiAgIE1vZGVsSWQ7DQo+ID4g Kw0KPiA+ICsgIGlmIChSZWdOYW1lID09IFNtbVJlZ0ZlYXR1cmVDb250cm9sKSB7DQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgLy8gUmV0cmlldmUgQ1BVIEZhbWlseSBhbmQgTW9kZWwNCj4gPiArICAg IC8vDQo+ID4gKyAgICBBc21DcHVpZCAoQ1BVSURfVkVSU0lPTl9JTkZPLCAmUmVnRWF4LCBOVUxM LCBOVUxMLCAmUmVnRWR4KTsNCj4gPiArICAgIEZhbWlseUlkID0gKFJlZ0VheCA+PiA4KSAmIDB4 ZjsNCj4gPiArICAgIE1vZGVsSWQgID0gKFJlZ0VheCA+PiA0KSAmIDB4ZjsNCj4gPiArICAgIGlm ICgoRmFtaWx5SWQgPT0gMHgwNikgfHwgKEZhbWlseUlkID09IDB4MGYpKSB7DQo+ID4gKyAgICAg IE1vZGVsSWQgPSBNb2RlbElkIHwgKChSZWdFYXggPj4gMTIpICYgMHhmMCk7DQo+ID4gKyAgICB9 DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEludGVsKFIpIDY0IGFuZCBJQS0zMiBB cmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVhbA0KPiA+ICsgICAgLy8gVm9s dW1lIDNDLCBTZWN0aW9uIDM1LjEwLjEgTVNScyBpbiA0dGggR2VuZXJhdGlvbiBJbnRlbChSKSBD b3JlKFRNKQ0KPiA+ICsgICAgLy8gUHJvY2Vzc29yIEZhbWlseS4NCj4gPiArICAgIC8vDQo+ID4g KyAgICAvLyBJZiBDUFUgRmFtaWx5L01vZGVsIGlzIDA2XzNDLCAwNl80NSwgb3IgMDZfNDYgdGhl biB1c2UgNHRoDQo+IEdlbmVyYXRpb24NCj4gPiArICAgIC8vIEludGVsKFIpIENvcmUoVE0pIFBy b2Nlc3NvciBGYW1pbHkgTVNScy4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoRmFtaWx5SWQg PT0gMHgwNikgew0KPiA+ICsgICAgICBpZiAoKE1vZGVsSWQgPT0gMHgzQykgfHwgKE1vZGVsSWQg PT0gMHg0NSkgfHwgKE1vZGVsSWQgPT0gMHg0NikgfHwNCj4gPiArICAgICAgICAgIChNb2RlbElk ID09IDB4M0QpIHx8IChNb2RlbElkID09IDB4NDcpIHx8IChNb2RlbElkID09IDB4NEUpIHx8DQo+ IChNb2RlbElkID09IDB4NEYpIHx8DQo+ID4gKyAgICAgICAgICAoTW9kZWxJZCA9PSAweDNGKSB8 fCAoTW9kZWxJZCA9PSAweDU2KSB8fCAoTW9kZWxJZCA9PSAweDU3KSB8fA0KPiAoTW9kZWxJZCA9 PSAweDVDKSB8fA0KPiA+ICsgICAgICAgICAgKE1vZGVsSWQgPT0gMHg4QykpDQo+ID4gKyAgICAg IHsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUg Q1BVIHN1cHBvcnRzIHRoZSBTTU0gQ29kZSBBY2Nlc3MgQ2hlY2sNCj4gZmVhdHVyZQ0KPiA+ICsg ICAgICAgIC8vIERvIG5vdCBhY2Nlc3MgdGhpcyBNU1IgdW5sZXNzIHRoZSBDUFUgc3VwcG9ydHMg dGhlDQo+IFNtbVJlZ0ZlYXR1cmVDb250cm9sDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAg ICBpZiAoKEFzbVJlYWRNc3I2NCAoU01NX0ZFQVRVUkVTX0xJQl9JQTMyX01DQV9DQVApICYNCj4g U01NX0NPREVfQUNDRVNTX0NIS19CSVQpICE9IDApIHsNCj4gPiArICAgICAgICAgIHJldHVybiBU UlVFOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICAgIH0N Cj4gPg0KPiA+ICAgIHJldHVybiBGQUxTRTsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTQ4NCwxMSAr NTE4LDExIEBAIEVGSUFQSQ0KPiA+ICBTbW1DcHVGZWF0dXJlc0dldFNtbVJlZ2lzdGVyICgNCj4g PiAgICBJTiBVSU5UTiAgICAgICAgIENwdUluZGV4LA0KPiA+ICAgIElOIFNNTV9SRUdfTkFNRSAg UmVnTmFtZQ0KPiA+ICAgICkNCj4gPiAgew0KPiA+IC0gIGlmIChtU21tRmVhdHVyZUNvbnRyb2xT dXBwb3J0ZWQgJiYgKFJlZ05hbWUgPT0NCj4gU21tUmVnRmVhdHVyZUNvbnRyb2wpKSB7DQo+ID4g KyAgaWYgKFNtbUNwdUZlYXR1cmVzSXNTbW1SZWdpc3RlclN1cHBvcnRlZCAoQ3B1SW5kZXgsIFJl Z05hbWUpKSB7DQo+ID4gICAgICByZXR1cm4gQXNtUmVhZE1zcjY0IChTTU1fRkVBVFVSRVNfTElC X1NNTV9GRUFUVVJFX0NPTlRST0wpOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIHJldHVybiAwOw0K PiA+ICB9DQo+ID4gQEAgLTUxMCwxMSArNTQ0LDExIEBAIFNtbUNwdUZlYXR1cmVzU2V0U21tUmVn aXN0ZXIgKA0KPiA+ICAgIElOIFVJTlROICAgICAgICAgQ3B1SW5kZXgsDQo+ID4gICAgSU4gU01N X1JFR19OQU1FICBSZWdOYW1lLA0KPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgVmFsdWUNCj4gPiAg ICApDQo+ID4gIHsNCj4gPiAtICBpZiAobVNtbUZlYXR1cmVDb250cm9sU3VwcG9ydGVkICYmIChS ZWdOYW1lID09DQo+IFNtbVJlZ0ZlYXR1cmVDb250cm9sKSkgew0KPiA+ICsgIGlmIChTbW1DcHVG ZWF0dXJlc0lzU21tUmVnaXN0ZXJTdXBwb3J0ZWQgKENwdUluZGV4LCBSZWdOYW1lKSkgew0KPiA+ ICAgICAgQXNtV3JpdGVNc3I2NCAoU01NX0ZFQVRVUkVTX0xJQl9TTU1fRkVBVFVSRV9DT05UUk9M LCBWYWx1ZSk7DQo+ID4gICAgfQ0KPiA+ICB9DQo+ID4NCj4gPiAgLyoqDQo+ID4gLS0NCj4gPiAy LjE2LjIud2luZG93cy4xDQo+ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCg0K