From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Permerror (SPF Permanent Error: More than 10 MX records returned) identity=mailfrom; client-ip=134.134.136.65; helo=mga03.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 88E352034B9E3 for ; Wed, 13 Dec 2017 17:42:05 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2017 17:46:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,399,1508828400"; d="scan'208";a="2361902" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga008.fm.intel.com with ESMTP; 13 Dec 2017 17:46:45 -0800 Received: from fmsmsx118.amr.corp.intel.com (10.18.116.18) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Dec 2017 17:46:44 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx118.amr.corp.intel.com (10.18.116.18) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 13 Dec 2017 17:46:43 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.152]) with mapi id 14.03.0319.002; Thu, 14 Dec 2017 09:46:39 +0800 From: "Zeng, Star" To: "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: "Carsey, Jaben" , Daryl McDaniel , "Zeng, Star" Thread-Topic: [edk2] [PATCH] PerformancePkg: Remove it Thread-Index: AQHTc/PaHExxx6jswkan2m3Vt0e+mKNCEqqg Date: Thu, 14 Dec 2017 01:46:38 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103B9C373D@shsmsx102.ccr.corp.intel.com> References: <20171213091941.244868-1-ruiyu.ni@intel.com> In-Reply-To: <20171213091941.244868-1-ruiyu.ni@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] PerformancePkg: Remove it 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: Thu, 14 Dec 2017 01:42:05 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UnVpeXUsDQoNCkRvIHlvdSBuZWVkIHRvIHVwZGF0ZSBNYWludGFpbmVycy50eHQgYWNjb3JkaW5n bHkgYXQgdGhlIHNhbWUgdGltZT8NCg0KDQpUaGFua3MsDQpTdGFyDQotLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0Bs aXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBSdWl5dSBOaQ0KU2VudDogV2VkbmVzZGF5LCBEZWNl bWJlciAxMywgMjAxNyA1OjIwIFBNDQpUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBD YXJzZXksIEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPjsgRGFyeWwgTWNEYW5pZWwgPGVk azItbGlzdHNAbWMycmVzZWFyY2gub3JnPg0KU3ViamVjdDogW2VkazJdIFtQQVRDSF0gUGVyZm9y bWFuY2VQa2c6IFJlbW92ZSBpdA0KDQpQZXJmb3JtYW5jZVBrZyBjb250YWlucyBmb2xsb3dpbmcg Y29tcG9uZW50czoNCjEuIFRzY1RpbWVyTGliDQoyLiBEcF9BcHANCjMuIEhlYWRlciBmaWxlcy4N Cg0KIzEgaGFzIGFscmVhZHkgYmVlbiBkZXByZWNhdGVkLg0KIzIgY2FuIGJlIHJlbW92ZWQgYmVj YXVzZSBEcEFwcCB3YXMgYWRkZWQgdG8gU2hlbGxQa2cuDQojMyBIZWFkZXIgZmlsZXMgYXJlIG5v dCB1c2VkIGJ5IERwQXBwIGFuZA0KICAgTWRlTW9kdWxlUGtnL1BlcmZvcm1hbmNlTGliIGluc3Rh bmNlcy4NCg0KSW4gc3VtbWFyeSwgdGhpcyBwYWNrYWdlIGlzIG5vIGxvbmdlciB1c2VmdWwuDQoN CkFsbCByZWxhdGVkIHBsYXRmb3JtcyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZW1vdmUgdGhlIHJl ZmVyZW5jZXMuDQoNCkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFn cmVlbWVudCAxLjENClNpZ25lZC1vZmYtYnk6IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb20+ DQpDYzogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KQ2M6IERhcnlsIE1j RGFuaWVsIDxlZGsyLWxpc3RzQG1jMnJlc2VhcmNoLm9yZz4NCi0tLQ0KIFBlcmZvcm1hbmNlUGtn L0RwX0FwcC9EcC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTU5IC0tLS0tLS0tLS0tLS0N CiBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaCAgICAgICAgICAgICAgICAgICAgICAgICB8IDEw MSAtLS0NCiBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaW5mICAgICAgICAgICAgICAgICAgICAg ICB8ICA4MCAtLQ0KIFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcEludGVybmFsLmggICAgICAgICAg ICAgICAgIHwgMzgzIC0tLS0tLS0tLQ0KIFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFByb2ZpbGUu YyAgICAgICAgICAgICAgICAgIHwgMTAyIC0tLQ0KIFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFN0 cmluZ3MudW5pICAgICAgICAgICAgICAgIHwgMjgxIC0tLS0tLS0NCiBQZXJmb3JtYW5jZVBrZy9E cF9BcHAvRHBUcmFjZS5jICAgICAgICAgICAgICAgICAgICB8IDg3OSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0NCiBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBVdGlsaXRpZXMuYyAgICAgICAgICAgICAg ICB8IDQ4OSAtLS0tLS0tLS0tLS0NCiBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuYyAg ICAgICAgICAgICAgICAgICB8ICAyMiAtDQogUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0xpdGVyYWxz LmggICAgICAgICAgICAgICAgICAgfCAgMjYgLQ0KIC4uLi9JbmNsdWRlL0d1aWQvUGVyZm9ybWFu Y2VQa2dUb2tlblNwYWNlLmggICAgICAgIHwgIDI1IC0NCiBQZXJmb3JtYW5jZVBrZy9JbmNsdWRl L0d1aWQvVHNjRnJlcXVlbmN5LmggICAgICAgICB8ICAyNSAtDQogUGVyZm9ybWFuY2VQa2cvSW5j bHVkZS9JY2gvR2VuZXJpY0ljaC5oICAgICAgICAgICAgfCAgNTUgLS0NCiBQZXJmb3JtYW5jZVBr Zy9JbmNsdWRlL1BlcmZvcm1hbmNlVG9rZW5zLmggICAgICAgICB8ICAyOCAtDQogLi4uL0xpYnJh cnkvVHNjVGltZXJMaWIvQmFzZVRzY1RpbWVyTGliLmMgICAgICAgICAgfCAgNDUgLS0NCiAuLi4v TGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuaW5mICAgICAgICB8ICA1OSAtLQ0K IC4uLi9MaWJyYXJ5L1RzY1RpbWVyTGliL0R4ZVRzY1RpbWVyTGliLmMgICAgICAgICAgIHwgMTAy IC0tLQ0KIC4uLi9MaWJyYXJ5L1RzY1RpbWVyTGliL0R4ZVRzY1RpbWVyTGliLmluZiAgICAgICAg IHwgIDY0IC0tDQogLi4uL0xpYnJhcnkvVHNjVGltZXJMaWIvUGVpVHNjVGltZXJMaWIuYyAgICAg ICAgICAgfCAgNzYgLS0NCiAuLi4vTGlicmFyeS9Uc2NUaW1lckxpYi9QZWlUc2NUaW1lckxpYi5p bmYgICAgICAgICB8ICA2MCAtLQ0KIC4uLi9MaWJyYXJ5L1RzY1RpbWVyTGliL1RzY1RpbWVyTGli SW50ZXJuYWwuaCAgICAgIHwgIDU1IC0tDQogLi4uL0xpYnJhcnkvVHNjVGltZXJMaWIvVHNjVGlt ZXJMaWJTaGFyZS5jICAgICAgICAgfCAyNzUgLS0tLS0tLQ0KIFBlcmZvcm1hbmNlUGtnL1BlcmZv cm1hbmNlUGtnLmRlYyAgICAgICAgICAgICAgICAgIHwgIDM3IC0NCiBQZXJmb3JtYW5jZVBrZy9Q ZXJmb3JtYW5jZVBrZy5kc2MgICAgICAgICAgICAgICAgICB8ICA2OCAtLQ0KIDI0IGZpbGVzIGNo YW5nZWQsIDM4OTYgZGVsZXRpb25zKC0pDQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNl UGtnL0RwX0FwcC9EcC5jDQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtnL0RwX0Fw cC9EcC5oDQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcC5pbmYN CiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwSW50ZXJuYWwuaA0K IGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBQcm9maWxlLmMNCiBk ZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwU3RyaW5ncy51bmkNCiBk ZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwVHJhY2UuYw0KIGRlbGV0 ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBVdGlsaXRpZXMuYw0KIGRlbGV0 ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuYw0KIGRlbGV0ZSBt b2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuaA0KIGRlbGV0ZSBtb2Rl IDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0d1aWQvUGVyZm9ybWFuY2VQa2dUb2tlblNw YWNlLmgNCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1Rz Y0ZyZXF1ZW5jeS5oDQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtnL0luY2x1ZGUv SWNoL0dlbmVyaWNJY2guaA0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9JbmNs dWRlL1BlcmZvcm1hbmNlVG9rZW5zLmgNCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQ a2cvTGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuYw0KIGRlbGV0ZSBtb2RlIDEw MDY0NCBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL0Jhc2VUc2NUaW1lckxpYi5p bmYNCiBkZWxldGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxp Yi9EeGVUc2NUaW1lckxpYi5jDQogZGVsZXRlIG1vZGUgMTAwNjQ0IFBlcmZvcm1hbmNlUGtnL0xp YnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuaW5mDQogZGVsZXRlIG1vZGUgMTAwNjQ0 IFBlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvUGVpVHNjVGltZXJMaWIuYw0KIGRl bGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL1BlaVRz Y1RpbWVyTGliLmluZg0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5 L1RzY1RpbWVyTGliL1RzY1RpbWVyTGliSW50ZXJuYWwuaA0KIGRlbGV0ZSBtb2RlIDEwMDY0NCBQ ZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGliL1RzY1RpbWVyTGliU2hhcmUuYw0KIGRl bGV0ZSBtb2RlIDEwMDY0NCBQZXJmb3JtYW5jZVBrZy9QZXJmb3JtYW5jZVBrZy5kZWMNCiBkZWxl dGUgbW9kZSAxMDA2NDQgUGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZHNjDQoNCmRpZmYg LS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuYyBiL1BlcmZvcm1hbmNlUGtnL0RwX0Fw cC9EcC5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDQ4NGVmMmQ1MGIuLjAwMDAw MDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcC5jDQorKysgL2Rldi9udWxsDQpA QCAtMSw1NTkgKzAsMCBAQA0KLS8qKiBAZmlsZQ0KLSAgU2hlbGwgYXBwbGljYXRpb24gZm9yIERp c3BsYXlpbmcgUGVyZm9ybWFuY2UgTWV0cmljcy4NCi0NCi0gIFRoZSBEcCBhcHBsaWNhdGlvbiBy ZWFkcyBwZXJmb3JtYW5jZSBkYXRhIGFuZCBwcmVzZW50cyBpdCBpbiBzZXZlcmFsDQotICBkaWZm ZXJlbnQgZm9ybWF0cyBkZXBlbmRpbmcgdXBvbiB0aGUgbmVlZHMgb2YgdGhlIHVzZXIuICBCb3Ro DQotICBUcmFjZSBhbmQgTWVhc3VyZWQgUHJvZmlsaW5nIGluZm9ybWF0aW9uIGlzIHByb2Nlc3Nl ZCBhbmQgcHJlc2VudGVkLg0KLQ0KLSAgRHAgdXNlcyB0aGUgIlBlcmZvcm1hbmNlTGliIiB0byBy ZWFkIHRoZSBtZWFzdXJlbWVudCByZWNvcmRzLg0KLSAgVGhlICJUaW1lckxpYiIgcHJvdmlkZXMg aW5mb3JtYXRpb24gYWJvdXQgdGhlIHRpbWVyLCBzdWNoIGFzIGZyZXF1ZW5jeSwNCi0gIGJlZ2lu bmluZywgYW5kIGVuZGluZyBjb3VudGVyIHZhbHVlcy4NCi0gIE1lYXN1cmVtZW50IHJlY29yZHMg Y29udGFpbiBpZGVudGlmeWluZyBpbmZvcm1hdGlvbiAoSGFuZGxlLCBUb2tlbiwgTW9kdWxlKQ0K LSAgYW5kIHN0YXJ0IGFuZCBlbmQgdGltZSB2YWx1ZXMuDQotICBEcCB1c2VzIHRoaXMgaW5mb3Jt YXRpb24gdG8gZ3JvdXAgcmVjb3JkcyBpbiBkaWZmZXJlbnQgd2F5cy4gIEl0IGFsc28gdXNlcw0K LSAgdGltZXIgaW5mb3JtYXRpb24gdG8gY2FsY3VsYXRlIGVsYXBzZWQgdGltZSBmb3IgZWFjaCBt ZWFzdXJlbWVudC4NCi0gDQotICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICAoQykgQ29weXJpZ2h0IDIwMTUt MjAxNiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCi0gIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QgTGljZW5zZQ0KLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLSANCi0gIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0qKi8NCi0NCi0jaW5jbHVkZSA8TGlicmFyeS9V ZWZpQXBwbGljYXRpb25FbnRyeVBvaW50Lmg+DQotI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCi0jaW5j bHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2Nh dGlvbkxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQotI2luY2x1ZGUgPExp YnJhcnkvVWVmaUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlIaWlTZXJ2aWNlc0xpYi5o Pg0KLSNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1BjZExp Yi5oPg0KLQ0KLSNpbmNsdWRlIDxHdWlkL1BlcmZvcm1hbmNlLmg+DQotDQotI2luY2x1ZGUgPFBl cmZvcm1hbmNlVG9rZW5zLmg+DQotI2luY2x1ZGUgIkRwLmgiDQotI2luY2x1ZGUgIkxpdGVyYWxz LmgiDQotI2luY2x1ZGUgIkRwSW50ZXJuYWwuaCINCi0NCi0vLw0KLS8vIFN0cmluZyB0b2tlbiBJ RCBvZiBoZWxwIG1lc3NhZ2UgdGV4dC4NCi0vLyBTaGVsbCBzdXBwb3J0cyB0byBmaW5kIGhlbHAg bWVzc2FnZSBpbiB0aGUgcmVzb3VyY2Ugc2VjdGlvbiBvZiBhbiBhcHBsaWNhdGlvbiBpbWFnZSBp Zg0KLS8vIC5NQU4gZmlsZSBpcyBub3QgZm91bmQuIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGFk ZGVkIHRvIG1ha2UgYnVpbGQgdG9vbCByZWNvZ25pemVzDQotLy8gdGhhdCB0aGUgaGVscCBzdHJp bmcgaXMgY29uc3VtZWQgYnkgdXNlciBhbmQgdGhlbiBidWlsZCB0b29sIHdpbGwgYWRkIHRoZSBz dHJpbmcgaW50bw0KLS8vIHRoZSByZXNvdXJjZSBzZWN0aW9uLiBUaHVzIHRoZSBhcHBsaWNhdGlv biBjYW4gdXNlICctPycgb3B0aW9uIHRvIHNob3cgaGVscCBtZXNzYWdlIGluDQotLy8gU2hlbGwu DQotLy8NCi1HTE9CQUxfUkVNT1ZFX0lGX1VOUkVGRVJFTkNFRCBFRklfU1RSSU5HX0lEIG1EcFN0 ckVuZ0hlbHBUb2tlbklkID0gU1RSSU5HX1RPS0VOIChTVFJfRFBfSEVMUF9JTkZPUk1BVElPTik7 DQotDQotLy8NCi0vLy8gTW9kdWxlLUdsb2JhbCBWYXJpYWJsZXMNCi0vLy9Aew0KLUVGSV9ISUlf SEFORExFICAgZ0hpaUhhbmRsZTsNCi1TSEVMTF9QQVJBTV9JVEVNICpEcFBhcmFtTGlzdCAgICAg ICA9IE5VTEw7DQotQ0hBUjE2ICAgICAgICAgICAqbVByaW50VG9rZW5CdWZmZXIgPSBOVUxMOw0K LUNIQVIxNiAgICAgICAgICAgbUdhdWdlU3RyaW5nW0RQX0dBVUdFX1NUUklOR19MRU5HVEggKyAx XTsNCi1DSEFSMTYgICAgICAgICAgIG1Vbmljb2RlVG9rZW5bRFhFX1BFUkZPUk1BTkNFX1NUUklO R19TSVpFXTsNCi1VSU5UNjQgICAgICAgICAgIG1JbnRlcmVzdFRocmVzaG9sZDsNCi1CT09MRUFO ICAgICAgICAgIG1TaG93SWQgPSBGQUxTRTsNCi0NCi1QRVJGX1NVTU1BUllfREFUQSBTdW1tYXJ5 RGF0YSA9IHsgMCB9OyAgICAvLy88IENyZWF0ZSB0aGUgU3VtbWFyeURhdGEgc3RydWN0dXJlIGFu ZCBpbml0LiB0byBaRVJPLg0KLQ0KLS8vLyBUaW1lciBTcGVjaWZpYyBJbmZvcm1hdGlvbi4NCi1U SU1FUl9JTkZPIFRpbWVySW5mbzsNCi0NCi0vLy8gSXRlbXMgZm9yIHdoaWNoIHRvIGdhdGhlciBj dW11bGF0aXZlIHN0YXRpc3RpY3MuDQotUEVSRl9DVU1fREFUQSBDdW1EYXRhW10gPSB7DQotICBQ RVJGX0lOSVRfQ1VNX0RBVEEgKExPQURfSU1BR0VfVE9LKSwNCi0gIFBFUkZfSU5JVF9DVU1fREFU QSAoU1RBUlRfSU1BR0VfVE9LKSwNCi0gIFBFUkZfSU5JVF9DVU1fREFUQSAoRFJJVkVSQklORElO R19TVEFSVF9UT0spLA0KLSAgUEVSRl9JTklUX0NVTV9EQVRBIChEUklWRVJCSU5ESU5HX1NVUFBP UlRfVE9LKQ0KLX07DQotDQotLy8vIE51bWJlciBvZiBpdGVtcyBmb3Igd2hpY2ggd2UgYXJlIGdh dGhlcmluZyBjdW11bGF0aXZlIHN0YXRpc3RpY3MuDQotVUlOVDMyIGNvbnN0ICAgICAgTnVtQ3Vt ID0gc2l6ZW9mKEN1bURhdGEpIC8gc2l6ZW9mKFBFUkZfQ1VNX0RBVEEpOw0KLQ0KLVBBUkFNX0lU RU1fTElTVCAgUGFyYW1MaXN0W10gPSB7DQotICB7U1RSSU5HX1RPS0VOIChTVFJfRFBfT1BUSU9O X1FIKSwgVHlwZUZsYWd9LCAgIC8vIC0/ICAgSGVscA0KLSAge1NUUklOR19UT0tFTiAoU1RSX0RQ X09QVElPTl9MSCksIFR5cGVGbGFnfSwgICAvLyAtaCAgIEhlbHANCi0gIHtTVFJJTkdfVE9LRU4g KFNUUl9EUF9PUFRJT05fVUgpLCBUeXBlRmxhZ30sICAgLy8gLUggICBIZWxwDQotICB7U1RSSU5H X1RPS0VOIChTVFJfRFBfT1BUSU9OX0xWKSwgVHlwZUZsYWd9LCAgIC8vIC12ICAgVmVyYm9zZSBN b2RlDQotICB7U1RSSU5HX1RPS0VOIChTVFJfRFBfT1BUSU9OX1VBKSwgVHlwZUZsYWd9LCAgIC8v IC1BICAgQWxsLCBDb29rZWQNCi0gIHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fVVIpLCBU eXBlRmxhZ30sICAgLy8gLVIgICBSQVcgQWxsDQotICB7U1RSSU5HX1RPS0VOIChTVFJfRFBfT1BU SU9OX0xTKSwgVHlwZUZsYWd9LCAgIC8vIC1zICAgU3VtbWFyeQ0KLSNpZiBQUk9GSUxJTkdfSU1Q TEVNRU5URUQNCi0gIHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fVVApLCBUeXBlRmxhZ30s ICAgLy8gLVAgICBEdW1wIFByb2ZpbGUgRGF0YQ0KLSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09Q VElPTl9VVCksIFR5cGVGbGFnfSwgICAvLyAtVCAgIER1bXAgVHJhY2UgRGF0YQ0KLSNlbmRpZg0K LSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MWCksIFR5cGVGbGFnfSwgICAvLyAteCAg IGVYY2x1ZGUgQ3VtdWxhdGl2ZSBJdGVtcw0KLSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09QVElP Tl9MSSksIFR5cGVGbGFnfSwgICAvLyAtaSAgIERpc3BsYXkgSWRlbnRpZmllcg0KLSAge1NUUklO R19UT0tFTiAoU1RSX0RQX09QVElPTl9MQyksIFR5cGVWYWx1ZX0sICAvLyAtYyAgIERpc3BsYXkg Y3VtdWxhdGl2ZSBkYXRhLg0KLSAge1NUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MTiksIFR5 cGVWYWx1ZX0sICAvLyAtbiAjIE51bWJlciBvZiByZWNvcmRzIHRvIGRpc3BsYXkgZm9yIEEgYW5k IFINCi0gIHtTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fTFQpLCBUeXBlVmFsdWV9ICAgLy8g LXQgIyBUaHJlc2hvbGQgb2YgaW50ZXJlc3QNCi0gIH07DQotDQotLy8vQH0NCi0NCi0vKioNCi0g IFRyYW5zZmVyIHRoZSBwYXJhbSBsaXN0IHZhbHVlIGFuZCBnZXQgdGhlIGNvbW1hbmQgbGluZSBw YXJzZS4NCi0NCi0qKi8NCi1WT0lEDQotSW5pdGlhbFNoZWxsUGFyYW1MaXN0KCB2b2lkICkNCi17 DQotICBVSU5UMzIgICAgICAgICAgICBMaXN0SW5kZXg7DQotICBVSU5UMzIgICAgICAgICAgICBM aXN0TGVuZ3RoOyAgDQotDQotICAvLw0KLSAgLy8gQWxsb2NhdGUgb25lIG1vcmUgZm9yIHRoZSBl bmQgdGFnLg0KLSAgLy8NCi0gIExpc3RMZW5ndGggPSBBUlJBWV9TSVpFIChQYXJhbUxpc3QpICsg MTsgIA0KLSAgRHBQYXJhbUxpc3QgPSBBbGxvY2F0ZVBvb2wgKHNpemVvZiAoU0hFTExfUEFSQU1f SVRFTSkgKiBMaXN0TGVuZ3RoKTsNCi0gIEFTU0VSVCAoRHBQYXJhbUxpc3QgIT0gTlVMTCk7DQot ICANCi0gIGZvciAoTGlzdEluZGV4ID0gMDsgTGlzdEluZGV4IDwgTGlzdExlbmd0aCAtIDE7IExp c3RJbmRleCArKykNCi0gIHsgDQotICAgIERwUGFyYW1MaXN0W0xpc3RJbmRleF0uTmFtZSA9IEhp aUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgUGFyYW1MaXN0W0xpc3RJbmRleF0uVG9rZW4sIE5VTEwp OyAgICAgIA0KLSAgICBEcFBhcmFtTGlzdFtMaXN0SW5kZXhdLlR5cGUgPSBQYXJhbUxpc3RbTGlz dEluZGV4XS5UeXBlOw0KLSAgfQ0KLSAgRHBQYXJhbUxpc3RbTGlzdEluZGV4XS5OYW1lID0gTlVM TDsNCi0gIERwUGFyYW1MaXN0W0xpc3RJbmRleF0uVHlwZSA9IFR5cGVNYXg7DQotfQ0KLQ0KLS8q Kg0KLSAgIERpc3BsYXkgVXNhZ2UgYW5kIEhlbHAgaW5mb3JtYXRpb24uDQotKiovDQotVk9JRA0K LVNob3dIZWxwKCB2b2lkICkNCi17DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9E UF9IRUxQX0hFQUQpKTsNCi0jaWYgUFJPRklMSU5HX0lNUExFTUVOVEVEDQotICBQcmludFRva2Vu IChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IRUxQX0ZMQUdTKSk7DQotI2Vsc2UNCi0gIFByaW50VG9r ZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfRkxBR1NfMikpOw0KLSNlbmRpZiAvLyBQUk9G SUxJTkdfSU1QTEVNRU5URUQNCi0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hF TFBfUEFHSU5BVEUpKTsNCi0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBf VkVSQk9TRSkpOw0KLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfSEVMUF9FWENM VURFKSk7DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IRUxQX1NUQVQpKTsN Ci0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfQUxMKSk7DQotICBQcmlu dFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IRUxQX1JBVykpOw0KLSNpZiBQUk9GSUxJTkdf SU1QTEVNRU5URUQNCi0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfVFJB Q0UpKTsNCi0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0hFTFBfUFJPRklMRSkp Ow0KLSNlbmRpZiAvLyBQUk9GSUxJTkdfSU1QTEVNRU5URUQNCi0gIFByaW50VG9rZW4gKFNUUklO R19UT0tFTiAoU1RSX0RQX0hFTFBfVEhSRVNIT0xEKSk7DQotICBQcmludFRva2VuIChTVFJJTkdf VE9LRU4gKFNUUl9EUF9IRUxQX0NPVU5UKSk7DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4g KFNUUl9EUF9IRUxQX0lEKSk7DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9I RUxQX0NVTV9EQVRBKSk7DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IRUxQ X0hFTFApKTsNCi0gIFByaW50KEwiXG4iKTsNCi19DQotDQotLyoqDQotICAgRGlzcGxheSB0aGUg dHJhaWxpbmcgVmVyYm9zZSBpbmZvcm1hdGlvbi4NCi0qKi8NCi1WT0lEDQotRHVtcFN0YXRpc3Rp Y3MoIHZvaWQgKQ0KLXsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRyOw0K LSAgRUZJX1NUUklORyAgICAgICAgICAgICAgICBTdHJpbmdQdHJVbmtub3duOw0KLSAgU3RyaW5n UHRyICAgICAgICA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VOIChTVFJf RFBfU0VDVElPTl9TVEFUSVNUSUNTKSwgTlVMTCk7DQotICBTdHJpbmdQdHJVbmtub3duID0gSGlp R2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9BTElUX1VOS05PV04pLCBO VUxMKTsgIA0KLSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9IRUFE RVIpLA0KLSAgICAgICAgICAgICAgKFN0cmluZ1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0clVua25v d24gOiBTdHJpbmdQdHIpOw0KLQ0KLSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBf U1RBVFNfTlVNVFJBQ0UpLCAgICAgICBTdW1tYXJ5RGF0YS5OdW1UcmFjZSk7DQotICBQcmludFRv a2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TVEFUU19OVU1JTkNPTVBMRVRFKSwgIFN1bW1hcnlE YXRhLk51bUluY29tcGxldGUpOw0KLSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBf U1RBVFNfTlVNUEhBU0VTKSwgICAgICBTdW1tYXJ5RGF0YS5OdW1TdW1tYXJ5KTsNCi0gIFByaW50 VG9rZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NUQVRTX05VTUhBTkRMRVMpLCAgICAgU3VtbWFy eURhdGEuTnVtSGFuZGxlcywgU3VtbWFyeURhdGEuTnVtVHJhY2UgLSBTdW1tYXJ5RGF0YS5OdW1I YW5kbGVzKTsNCi0gIFByaW50VG9rZW4oIFNUUklOR19UT0tFTiAoU1RSX0RQX1NUQVRTX05VTVBF SU1TKSwgICAgICAgU3VtbWFyeURhdGEuTnVtUEVJTXMpOw0KLSAgUHJpbnRUb2tlbiggU1RSSU5H X1RPS0VOIChTVFJfRFBfU1RBVFNfTlVNR0xPQkFMUyksICAgICBTdW1tYXJ5RGF0YS5OdW1HbG9i YWwpOw0KLSNpZiBQUk9GSUxJTkdfSU1QTEVNRU5URUQNCi0gIFByaW50VG9rZW4oIFNUUklOR19U T0tFTiAoU1RSX0RQX1NUQVRTX05VTVBST0ZJTEUpLCAgICAgU3VtbWFyeURhdGEuTnVtUHJvZmls ZSk7DQotI2VuZGlmIC8vIFBST0ZJTElOR19JTVBMRU1FTlRFRA0KLSAgRnJlZVBvb2wgKFN0cmlu Z1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQotfQ0KLQ0KLS8qKg0KLSAg RHVtcCBwZXJmb3JtYW5jZSBkYXRhLg0KLSAgDQotICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAg ICAgVGhlIGltYWdlIGhhbmRsZS4NCi0gIEBwYXJhbVtpbl0gIFN5c3RlbVRhYmxlICAgICBUaGUg c3lzdGVtIHRhYmxlLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIENvbW1h bmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCi0gIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICBDb21tYW5kIHVzYWdlIGVycm9yLg0KLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAg ICAgIFRoZSB1c2VyIGFib3J0cyB0aGUgb3BlcmF0aW9uLg0KLSAgQHJldHZhbCB2YWx1ZSAgICAg ICAgICAgICAgICAgIFVua25vd24gZXJyb3IuDQotKiovDQotRUZJX1NUQVRVUw0KLUVGSUFQSQ0K LUluaXRpYWxpemVEcCAoDQotICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgSW1hZ2VIYW5k bGUsDQotICBJTiBFRklfU1lTVEVNX1RBQkxFICAgICAgICAgKlN5c3RlbVRhYmxlDQotICApDQot ew0KLSAgUEVSRk9STUFOQ0VfUFJPUEVSVFkgICAgICAgICAgKlBlcmZvcm1hbmNlUHJvcGVydHk7 DQotICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBMaXN0SW5kZXg7DQotDQotICBMSVNU X0VOVFJZICAgICAgICAgICAgICAgICAgICAqUGFyYW1QYWNrYWdlOw0KLSAgQ09OU1QgQ0hBUjE2 ICAgICAgICAgICAgICAgICAgKkNtZExpbmVBcmc7DQotICBFRklfU1RSSU5HICAgICAgICAgICAg ICAgICAgICBTdHJpbmdQdHI7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICBOdW1i ZXIyRGlzcGxheTsNCi0NCi0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Ci0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIFN1bW1hcnlNb2RlOw0KLSAgQk9PTEVB TiAgICAgICAgICAgICAgICAgICAgICAgVmVyYm9zZU1vZGU7DQotICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICBBbGxNb2RlOw0KLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg UmF3TW9kZTsNCi0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIFRyYWNlTW9kZTsNCi0g IEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgIFByb2ZpbGVNb2RlOw0KLSAgQk9PTEVBTiAg ICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZU1vZGU7DQotICBCT09MRUFOICAgICAgICAgICAg ICAgICAgICAgICBDdW11bGF0aXZlTW9kZTsNCi0gIENPTlNUIENIQVIxNiAgICAgICAgICAgICAg ICAgICpDdXN0b21DdW11bGF0aXZlVG9rZW47DQotICBQRVJGX0NVTV9EQVRBICAgICAgICAgICAg ICAgICAqQ3VzdG9tQ3VtdWxhdGl2ZURhdGE7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICBOYW1lU2l6ZTsNCi0gIEVGSV9ISUlfUEFDS0FHRV9MSVNUX0hFQURFUiAgICpQYWNrYWdl TGlzdDsNCi0NCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25RaDsN Ci0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MaDsNCi0gIEVGSV9T VFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25VaDsNCi0gIEVGSV9TVFJJTkcgICAg ICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MdjsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAg ICAgU3RyaW5nRHBPcHRpb25VczsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5n RHBPcHRpb25MczsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25V YTsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25VcjsNCi0gIEVG SV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25VdDsNCi0gIEVGSV9TVFJJTkcg ICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25VcDsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAg ICAgICAgU3RyaW5nRHBPcHRpb25MeDsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3Ry aW5nRHBPcHRpb25MbjsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRp b25MdDsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MaTsNCi0g IEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nRHBPcHRpb25MYzsNCi0gIA0KLSAgU3Vt bWFyeU1vZGUgICAgID0gRkFMU0U7DQotICBWZXJib3NlTW9kZSAgICAgPSBGQUxTRTsNCi0gIEFs bE1vZGUgICAgICAgICA9IEZBTFNFOw0KLSAgUmF3TW9kZSAgICAgICAgID0gRkFMU0U7DQotICBU cmFjZU1vZGUgICAgICAgPSBGQUxTRTsNCi0gIFByb2ZpbGVNb2RlICAgICA9IEZBTFNFOw0KLSAg RXhjbHVkZU1vZGUgICAgID0gRkFMU0U7DQotICBDdW11bGF0aXZlTW9kZSA9IEZBTFNFOw0KLSAg Q3VzdG9tQ3VtdWxhdGl2ZURhdGEgPSBOVUxMOw0KLQ0KLSAgU3RyaW5nRHBPcHRpb25RaCA9IE5V TEw7DQotICBTdHJpbmdEcE9wdGlvbkxoID0gTlVMTDsNCi0gIFN0cmluZ0RwT3B0aW9uVWggPSBO VUxMOw0KLSAgU3RyaW5nRHBPcHRpb25MdiA9IE5VTEw7DQotICBTdHJpbmdEcE9wdGlvblVzID0g TlVMTDsNCi0gIFN0cmluZ0RwT3B0aW9uTHMgPSBOVUxMOw0KLSAgU3RyaW5nRHBPcHRpb25VYSA9 IE5VTEw7DQotICBTdHJpbmdEcE9wdGlvblVyID0gTlVMTDsNCi0gIFN0cmluZ0RwT3B0aW9uVXQg PSBOVUxMOw0KLSAgU3RyaW5nRHBPcHRpb25VcCA9IE5VTEw7DQotICBTdHJpbmdEcE9wdGlvbkx4 ID0gTlVMTDsNCi0gIFN0cmluZ0RwT3B0aW9uTG4gPSBOVUxMOw0KLSAgU3RyaW5nRHBPcHRpb25M dCA9IE5VTEw7DQotICBTdHJpbmdEcE9wdGlvbkxpID0gTlVMTDsNCi0gIFN0cmluZ0RwT3B0aW9u TGMgPSBOVUxMOw0KLSAgU3RyaW5nUHRyICAgICAgICA9IE5VTEw7DQotDQotICAvLw0KLSAgLy8g UmV0cmlldmUgSElJIHBhY2thZ2UgbGlzdCBmcm9tIEltYWdlSGFuZGxlDQotICAvLw0KLSAgU3Rh dHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KLSAgICAgICAgICAgICAgICAgIEltYWdlSGFuZGxl LA0KLSAgICAgICAgICAgICAgICAgICZnRWZpSGlpUGFja2FnZUxpc3RQcm90b2NvbEd1aWQsDQot ICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZQYWNrYWdlTGlzdCwNCi0gICAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCi0gICAgICAgICAgICAgICAgICBOVUxMLA0KLSAgICAgICAgICAg ICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTA0KLSAgICAgICAgICAgICAgICAg ICk7DQotICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQotICAgIHJldHVybiBTdGF0dXM7DQot ICB9DQotDQotICAvLw0KLSAgLy8gUHVibGlzaCBISUkgcGFja2FnZSBsaXN0IHRvIEhJSSBEYXRh YmFzZS4NCi0gIC8vDQotICBTdGF0dXMgPSBnSGlpRGF0YWJhc2UtPk5ld1BhY2thZ2VMaXN0ICgN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGdIaWlEYXRhYmFzZSwNCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIFBhY2thZ2VMaXN0LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZnSGlpSGFuZGxlDQotICAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KLSAgICByZXR1 cm4gU3RhdHVzOw0KLSAgfQ0KLSAgQVNTRVJUIChnSGlpSGFuZGxlICE9IE5VTEwpOw0KLSAgDQot DQotICAvLyBJbml0aWFsIHRoZSBjb21tYW5kIGxpc3QNCi0gIC8vDQotICBJbml0aWFsU2hlbGxQ YXJhbUxpc3QgKCk7DQotICANCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSoqKiogICAgICAgICAg ICBQcm9jZXNzIENvbW1hbmQgTGluZSBhcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKioqDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0gIFN0YXR1cyA9IFNoZWxsQ29tbWFuZExp bmVQYXJzZSAoRHBQYXJhbUxpc3QsICZQYXJhbVBhY2thZ2UsIE5VTEwsIFRSVUUpOw0KLQ0KLSAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQotICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAo U1RSX0RQX0lOVkFMSURfQVJHKSk7DQotICAgIFNob3dIZWxwKCk7DQotICB9DQotICBlbHNlIHsN Ci0gICAgU3RyaW5nRHBPcHRpb25RaCA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5H X1RPS0VOIChTVFJfRFBfT1BUSU9OX1FIKSwgTlVMTCk7DQotICAgIFN0cmluZ0RwT3B0aW9uTGgg PSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9M SCksIE5VTEwpOw0KLSAgICBTdHJpbmdEcE9wdGlvblVoID0gSGlpR2V0U3RyaW5nIChnSGlpSGFu ZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9PUFRJT05fVUgpLCBOVUxMKTsNCi0gICAgDQotICAg IGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFyYW1QYWNrYWdlLCBTdHJpbmdEcE9wdGlv blFoKSAgfHwNCi0gICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2Us IFN0cmluZ0RwT3B0aW9uTGgpICB8fA0KLSAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldEZsYWcg KFBhcmFtUGFja2FnZSwgU3RyaW5nRHBPcHRpb25VaCkpDQotICAgIHsNCi0gICAgICBTaG93SGVs cCgpOw0KLSAgICB9DQotICAgIGVsc2Ugew0KLSAgICAgIFN0cmluZ0RwT3B0aW9uTHYgPSBIaWlH ZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MViksIE5V TEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uVXMgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUs IFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9VUyksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0Rw T3B0aW9uTHMgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQ X09QVElPTl9MUyksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uVWEgPSBIaWlHZXRTdHJp bmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9VQSksIE5VTEwpOw0K LSAgICAgIFN0cmluZ0RwT3B0aW9uVXIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklO R19UT0tFTiAoU1RSX0RQX09QVElPTl9VUiksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9u VXQgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElP Tl9VVCksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uVXAgPSBIaWlHZXRTdHJpbmcgKGdI aWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9VUCksIE5VTEwpOw0KLSAgICAg IFN0cmluZ0RwT3B0aW9uTHggPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tF TiAoU1RSX0RQX09QVElPTl9MWCksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uTG4gPSBI aWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MTiks IE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uTHQgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5k bGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MVCksIE5VTEwpOw0KLSAgICAgIFN0cmlu Z0RwT3B0aW9uTGkgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RS X0RQX09QVElPTl9MSSksIE5VTEwpOw0KLSAgICAgIFN0cmluZ0RwT3B0aW9uTGMgPSBIaWlHZXRT dHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX09QVElPTl9MQyksIE5VTEwp Ow0KLSAgICAgIA0KLSAgICAgIC8vIEJvb2xlYW4gT3B0aW9ucw0KLSAgICAgIC8vIA0KLSAgICAg IFZlcmJvc2VNb2RlID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFja2FnZSwgU3Ry aW5nRHBPcHRpb25Mdik7DQotICAgICAgU3VtbWFyeU1vZGUgPSAoQk9PTEVBTikgKFNoZWxsQ29t bWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0aW9uVXMpIHx8DQotICAg ICAgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFyYW1QYWNrYWdlLCBT dHJpbmdEcE9wdGlvbkxzKSk7DQotICAgICAgQWxsTW9kZSAgICAgPSBTaGVsbENvbW1hbmRMaW5l R2V0RmxhZyAoUGFyYW1QYWNrYWdlLCBTdHJpbmdEcE9wdGlvblVhKTsNCi0gICAgICBSYXdNb2Rl ICAgICA9IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0 aW9uVXIpOw0KLSNpZiBQUk9GSUxJTkdfSU1QTEVNRU5URUQNCi0gICAgICBUcmFjZU1vZGUgICA9 IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0aW9uVXQp Ow0KLSAgICAgIFByb2ZpbGVNb2RlID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFj a2FnZSwgU3RyaW5nRHBPcHRpb25VcCk7DQotI2VuZGlmICAvLyBQUk9GSUxJTkdfSU1QTEVNRU5U RUQNCi0gICAgICBFeGNsdWRlTW9kZSA9IFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYXJhbVBh Y2thZ2UsIFN0cmluZ0RwT3B0aW9uTHgpOw0KLSAgICAgIG1TaG93SWQgICAgID0gIFNoZWxsQ29t bWFuZExpbmVHZXRGbGFnIChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0aW9uTGkpOw0KLSAgICAg IEN1bXVsYXRpdmVNb2RlID0gU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhcmFtUGFja2FnZSwg U3RyaW5nRHBPcHRpb25MYyk7DQotDQotICAgICAgLy8gT3B0aW9ucyB3aXRoIFZhbHVlcw0KLSAg ICAgIENtZExpbmVBcmcgID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYXJhbVBhY2thZ2Us IFN0cmluZ0RwT3B0aW9uTG4pOw0KLSAgICAgIGlmIChDbWRMaW5lQXJnID09IE5VTEwpIHsNCi0g ICAgICAgIE51bWJlcjJEaXNwbGF5ID0gREVGQVVMVF9ESVNQTEFZQ09VTlQ7DQotICAgICAgfQ0K LSAgICAgIGVsc2Ugew0KLSAgICAgICAgTnVtYmVyMkRpc3BsYXkgPSBTdHJEZWNpbWFsVG9VaW50 bihDbWRMaW5lQXJnKTsNCi0gICAgICAgIGlmIChOdW1iZXIyRGlzcGxheSA9PSAwKSB7DQotICAg ICAgICAgIE51bWJlcjJEaXNwbGF5ID0gTUFYSU1VTV9ESVNQTEFZQ09VTlQ7DQotICAgICAgICB9 DQotICAgICAgfQ0KLSAgICAgIENtZExpbmVBcmcgID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVl IChQYXJhbVBhY2thZ2UsIFN0cmluZ0RwT3B0aW9uTHQpOw0KLSAgICAgIGlmIChDbWRMaW5lQXJn ID09IE5VTEwpIHsNCi0gICAgICAgIG1JbnRlcmVzdFRocmVzaG9sZCA9IERFRkFVTFRfVEhSRVNI T0xEOyAgLy8gMW1zIDo9IDEsMDAwIHVzDQotICAgICAgfQ0KLSAgICAgIGVsc2Ugew0KLSAgICAg ICAgbUludGVyZXN0VGhyZXNob2xkID0gU3RyRGVjaW1hbFRvVWludDY0KENtZExpbmVBcmcpOw0K LSAgICAgIH0NCi0gICAgICAvLyBIYW5kbGUgRmxhZyBjb21iaW5hdGlvbnMgYW5kIGRlZmF1bHQg YmVoYXZpb3JzDQotICAgICAgLy8gSWYgYm90aCBUcmFjZU1vZGUgYW5kIFByb2ZpbGVNb2RlIGFy ZSBGQUxTRSwgc2V0IHRoZW0gYm90aCB0byBUUlVFDQotICAgICAgaWYgKCghIFRyYWNlTW9kZSkg JiYgKCEgUHJvZmlsZU1vZGUpKSB7DQotICAgICAgICBUcmFjZU1vZGUgICA9IFRSVUU7DQotI2lm IFBST0ZJTElOR19JTVBMRU1FTlRFRA0KLSAgICAgICAgUHJvZmlsZU1vZGUgPSBUUlVFOw0KLSNl bmRpZiAgLy8gUFJPRklMSU5HX0lNUExFTUVOVEVEDQotICAgICAgfQ0KLQ0KLSAgLy8NCi0gIC8v IEluaXQgdGhlIGN1c3RvbSBjdW11bGF0aXZlIGRhdGEuDQotICAvLw0KLSAgQ3VzdG9tQ3VtdWxh dGl2ZVRva2VuID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYXJhbVBhY2thZ2UsIFN0cmlu Z0RwT3B0aW9uTGMpOw0KLSAgaWYgKEN1c3RvbUN1bXVsYXRpdmVUb2tlbiAhPSBOVUxMKSB7DQot ICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChQRVJG X0NVTV9EQVRBKSk7DQotICAgIEFTU0VSVCAoQ3VzdG9tQ3VtdWxhdGl2ZURhdGEgIT0gTlVMTCk7 DQotICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NaW5EdXIgPSBQRVJGX01BWERVUjsNCi0gICAg Q3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk1heER1ciA9IDA7DQotICAgIEN1c3RvbUN1bXVsYXRpdmVE YXRhLT5Db3VudCAgPSAwOw0KLSAgICBDdXN0b21DdW11bGF0aXZlRGF0YS0+RHVyYXRpb24gPSAw Ow0KLSAgICBOYW1lU2l6ZSA9IFN0ckxlbiAoQ3VzdG9tQ3VtdWxhdGl2ZVRva2VuKSArIDE7DQot ICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5OYW1lICAgPSBBbGxvY2F0ZVplcm9Qb29sIChOYW1l U2l6ZSk7DQotICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoQ3VzdG9tQ3VtdWxhdGl2ZVRva2Vu LCBDdXN0b21DdW11bGF0aXZlRGF0YS0+TmFtZSwgTmFtZVNpemUpOw0KLSAgfQ0KLQ0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQotKioqKiAgICAgICAgICAgIFRpbWVyIHNwZWNpZmljIHByb2Nlc3Np bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioNCi0qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLw0KLSAgICAgIC8vIEdldCB0aGUgUGVyZm9ybWFuY2UgY291bnRlciBjaGFyYWN0ZXJpc3Rp Y3M6DQotICAgICAgLy8gICAgICAgICAgRnJlcSA9IEZyZXF1ZW5jeSBpbiBIeg0KLSAgICAgIC8v ICAgIFN0YXJ0Q291bnQgPSBWYWx1ZSBsb2FkZWQgaW50byB0aGUgY291bnRlciB3aGVuIGl0IHN0 YXJ0cyBjb3VudGluZw0KLSAgICAgIC8vICAgICAgRW5kQ291bnQgPSBWYWx1ZSBjb3VudGVyIGNv dW50cyB0byBiZWZvcmUgaXQgbmVlZHMgdG8gYmUgcmVzZXQNCi0gICAgICAvLw0KLSAgICAgIFN0 YXR1cyA9IEVmaUdldFN5c3RlbUNvbmZpZ3VyYXRpb25UYWJsZSAoJmdQZXJmb3JtYW5jZVByb3Rv Y29sR3VpZCwgKFZPSUQgKiopICZQZXJmb3JtYW5jZVByb3BlcnR5KTsNCi0gICAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpIHx8IChQZXJmb3JtYW5jZVByb3BlcnR5ID09IE5VTEwpKSB7DQotICAg ICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9QRVJGX1BST1BFUlRZX05PVF9GT1VO RCkpOw0KLSAgICAgICAgZ290byBEb25lOw0KLSAgICAgIH0NCi0NCi0gICAgICAvLyBDb252ZXJ0 IHRoZSBGcmVxdWVuY3kgZnJvbSBIeiB0byBLSHoNCi0gICAgICBUaW1lckluZm8uRnJlcXVlbmN5 ICA9IChVSU5UMzIpRGl2VTY0eDMyIChQZXJmb3JtYW5jZVByb3BlcnR5LT5GcmVxdWVuY3ksIDEw MDApOw0KLSAgICAgIFRpbWVySW5mby5TdGFydENvdW50ID0gUGVyZm9ybWFuY2VQcm9wZXJ0eS0+ VGltZXJTdGFydFZhbHVlOw0KLSAgICAgIFRpbWVySW5mby5FbmRDb3VudCAgID0gUGVyZm9ybWFu Y2VQcm9wZXJ0eS0+VGltZXJFbmRWYWx1ZTsNCi0NCi0gICAgICAvLyBEZXRlcm1pbmUgaW4gd2hp Y2ggZGlyZWN0aW9uIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIGNvdW50cy4NCi0gICAgICBUaW1l ckluZm8uQ291bnRVcCA9IChCT09MRUFOKSAoVGltZXJJbmZvLkVuZENvdW50ID49IFRpbWVySW5m by5TdGFydENvdW50KTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSoqKiogICAgICAgICAg ICBQcmludCBoZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqKioqDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0gICAgICAvLyBwcmludCBEUCdzIGJ1aWxk IHZlcnNpb24NCi0gICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9CVUlMRF9S RVZJU0lPTiksIERQX01BSk9SX1ZFUlNJT04sIERQX01JTk9SX1ZFUlNJT04pOw0KLQ0KLSAgICAg IC8vIHByaW50IHBlcmZvcm1hbmNlIHRpbWVyIGNoYXJhY3RlcmlzdGljcw0KLSAgICAgIFByaW50 VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0tIWiksIFRpbWVySW5mby5GcmVxdWVuY3kpOyAg ICAgICAgIC8vIFByaW50IFRpbWVyIGZyZXF1ZW5jeSBpbiBLSHoNCi0NCi0gICAgICBpZiAoKFZl cmJvc2VNb2RlKSAgICYmDQotICAgICAgICAgICghIFJhd01vZGUpDQotICAgICAgICAgKSB7DQot ICAgICAgICBTdHJpbmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsDQotICAgICAgICAg ICAgICAgICAgICAgIChFRklfU1RSSU5HX0lEKSAoVGltZXJJbmZvLkNvdW50VXAgPyBTVFJJTkdf VE9LRU4gKFNUUl9EUF9VUCkgOiBTVFJJTkdfVE9LRU4gKFNUUl9EUF9ET1dOKSksDQotICAgICAg ICAgICAgICAgICAgICAgIE5VTEwpOw0KLSAgICAgICAgQVNTRVJUIChTdHJpbmdQdHIgIT0gTlVM TCk7DQotICAgICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9USU1FUl9QUk9Q RVJUSUVTKSwgICAvLyBQcmludCBUaW1lciBjb3VudCByYW5nZSBhbmQgZGlyZWN0aW9uDQotICAg ICAgICAgICAgICAgICAgICBTdHJpbmdQdHIsDQotICAgICAgICAgICAgICAgICAgICBUaW1lcklu Zm8uU3RhcnRDb3VudCwNCi0gICAgICAgICAgICAgICAgICAgIFRpbWVySW5mby5FbmRDb3VudA0K LSAgICAgICAgICAgICAgICAgICAgKTsNCi0gICAgICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tF TiAoU1RSX0RQX1ZFUkJPU0VfVEhSRVNIT0xEKSwgbUludGVyZXN0VGhyZXNob2xkKTsNCi0gICAg ICB9DQotDQotLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qKioqICAgICAgICAgICAgUHJpbnQgU2Vj dGlvbnMgYmFzZWQgb24gY29tbWFuZCBsaW5lIG9wdGlvbnMNCi0qKioqDQotKioqKiAgT3B0aW9u IG1vZGVzIGhhdmUgdGhlIGZvbGxvd2luZyBwcmlvcml0eToNCi0qKioqICAgIHYgVmVyYm9zZSAg ICAgLS0gIFZhbGlkIGluIGNvbWJpbmF0aW9uIHdpdGggYW55IG90aGVyIG9wdGlvbnMNCi0qKioq ICAgIHQgVGhyZXNob2xkICAgLS0gIE1vZGlmaWVzIEFsbCwgUmF3LCBhbmQgQ29va2VkIG91dHB1 dA0KLSoqKiogICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyAwIGZvciBBbGwgYW5kIFJh dyBtb2RlDQotKioqKiAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIERFRkFVTFRfVEhS RVNIT0xEIGZvciAiQ29va2VkIiBtb2RlDQotKioqKiAgICBuIE51bWJlcjJEaXNwbGF5ICBVc2Vk IGJ5IEFsbCBhbmQgUmF3IG1vZGUuICBPdGhlcndpc2UgaWdub3JlZC4NCi0qKioqICAgIEEgQWxs ICAgICAgICAgLS0gIFIgYW5kIFMgb3B0aW9ucyBhcmUgaWdub3JlZA0KLSoqKiogICAgUiBSYXcg ICAgICAgICAtLSAgUyBvcHRpb24gaXMgaWdub3JlZA0KLSoqKiogICAgcyBTdW1tYXJ5ICAgICAt LSAgTW9kaWZpZXMgIkNvb2tlZCIgb3V0cHV0IG9ubHkNCi0qKioqICAgIENvb2tlZCAoRGVmYXVs dCkNCi0qKioqDQotKioqKiAgVGhlIEFsbCwgUmF3LCBhbmQgQ29va2VkIG1vZGVzIGFyZSBtb2Rp ZmllZCBieSB0aGUgVHJhY2UgYW5kIFByb2ZpbGUNCi0qKioqICBvcHRpb25zLg0KLSoqKiogICAg IVQgJiYgIVAgIDo9ICgwKSBEZWZhdWx0LCBCb3RoIGFyZSBkaXNwbGF5ZWQNCi0qKioqICAgICBU ICYmICFQICA6PSAoMSkgT25seSBUcmFjZSByZWNvcmRzIGFyZSBkaXNwbGF5ZWQNCi0qKioqICAg ICFUICYmICBQICA6PSAoMikgT25seSBQcm9maWxlIHJlY29yZHMgYXJlIGRpc3BsYXllZA0KLSoq KiogICAgIFQgJiYgIFAgIDo9ICgzKSBTYW1lIGFzIERlZmF1bHQsIGJvdGggYXJlIGRpc3BsYXll ZA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovDQotICAgICAgR2F0aGVyU3RhdGlzdGljcyAoQ3VzdG9t Q3VtdWxhdGl2ZURhdGEpOw0KLSAgICAgIGlmIChDdW11bGF0aXZlTW9kZSkgeyAgICAgICAgICAg ICAgICAgICAgICAgDQotICAgICAgICBQcm9jZXNzQ3VtdWxhdGl2ZSAoQ3VzdG9tQ3VtdWxhdGl2 ZURhdGEpOw0KLSAgICAgIH0gZWxzZSBpZiAoQWxsTW9kZSkgew0KLSAgICAgICAgaWYgKFRyYWNl TW9kZSkgew0KLSAgICAgICAgICBTdGF0dXMgPSBEdW1wQWxsVHJhY2UoIE51bWJlcjJEaXNwbGF5 LCBFeGNsdWRlTW9kZSk7DQotICAgICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX0FCT1JURUQpIHsN Ci0gICAgICAgICAgICBnb3RvIERvbmU7DQotICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAg ICAgIGlmIChQcm9maWxlTW9kZSkgew0KLSAgICAgICAgICBEdW1wQWxsUHJvZmlsZSggTnVtYmVy MkRpc3BsYXksIEV4Y2x1ZGVNb2RlKTsNCi0gICAgICAgIH0NCi0gICAgICB9DQotICAgICAgZWxz ZSBpZiAoUmF3TW9kZSkgew0KLSAgICAgICAgaWYgKFRyYWNlTW9kZSkgew0KLSAgICAgICAgICBT dGF0dXMgPSBEdW1wUmF3VHJhY2UoIE51bWJlcjJEaXNwbGF5LCBFeGNsdWRlTW9kZSk7DQotICAg ICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX0FCT1JURUQpIHsNCi0gICAgICAgICAgICBnb3RvIERv bmU7DQotICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAgICAgIGlmIChQcm9maWxlTW9kZSkg ew0KLSAgICAgICAgICBEdW1wUmF3UHJvZmlsZSggTnVtYmVyMkRpc3BsYXksIEV4Y2x1ZGVNb2Rl KTsNCi0gICAgICAgIH0NCi0gICAgICB9DQotICAgICAgZWxzZSB7DQotICAgICAgICAvLy0tLS0t LS0tLS0tLS0gQmVnaW4gQ29va2VkIE1vZGUgUHJvY2Vzc2luZw0KLSAgICAgICAgaWYgKFRyYWNl TW9kZSkgew0KLSAgICAgICAgICBQcm9jZXNzUGhhc2VzICgpOw0KLSAgICAgICAgICBpZiAoICEg U3VtbWFyeU1vZGUpIHsNCi0gICAgICAgICAgICBTdGF0dXMgPSBQcm9jZXNzSGFuZGxlcyAoIEV4 Y2x1ZGVNb2RlKTsNCi0gICAgICAgICAgICBpZiAoU3RhdHVzID09IEVGSV9BQk9SVEVEKSB7DQot ICAgICAgICAgICAgICBnb3RvIERvbmU7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAg IFN0YXR1cyA9IFByb2Nlc3NQZWltcyAoKTsNCi0gICAgICAgICAgICBpZiAoU3RhdHVzID09IEVG SV9BQk9SVEVEKSB7DQotICAgICAgICAgICAgICBnb3RvIERvbmU7DQotICAgICAgICAgICAgfQ0K LQ0KLSAgICAgICAgICAgIFN0YXR1cyA9IFByb2Nlc3NHbG9iYWwgKCk7DQotICAgICAgICAgICAg aWYgKFN0YXR1cyA9PSBFRklfQUJPUlRFRCkgew0KLSAgICAgICAgICAgICAgZ290byBEb25lOw0K LSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBQcm9jZXNzQ3VtdWxhdGl2ZSAoTlVMTCk7 DQotICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAgICAgIGlmIChQcm9maWxlTW9kZSkgew0K LSAgICAgICAgICBEdW1wQWxsUHJvZmlsZSggTnVtYmVyMkRpc3BsYXksIEV4Y2x1ZGVNb2RlKTsN Ci0gICAgICAgIH0NCi0gICAgICB9IC8vLS0tLS0tLS0tLS0tLSBFbmQgb2YgQ29va2VkIE1vZGUg UHJvY2Vzc2luZw0KLSAgICAgIGlmICggVmVyYm9zZU1vZGUgfHwgU3VtbWFyeU1vZGUpIHsNCi0g ICAgICAgIER1bXBTdGF0aXN0aWNzKCk7DQotICAgICAgfQ0KLSAgICB9DQotICB9DQotDQotRG9u ZToNCi0NCi0gIC8vDQotICAvLyBGcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGUgZnJvbSBIaWlHZXRT dHJpbmcNCi0gIC8vDQotICBMaXN0SW5kZXggPSAwOw0KLSAgd2hpbGUgKERwUGFyYW1MaXN0W0xp c3RJbmRleF0uTmFtZSAhPSBOVUxMKSB7DQotICAgIEZyZWVQb29sIChEcFBhcmFtTGlzdFtMaXN0 SW5kZXhdLk5hbWUpOw0KLSAgICBMaXN0SW5kZXggKys7DQotICB9ICANCi0gIEZyZWVQb29sIChE cFBhcmFtTGlzdCk7DQotDQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ0RwT3B0aW9uUWgpOw0KLSAg U2FmZUZyZWVQb29sIChTdHJpbmdEcE9wdGlvbkxoKTsNCi0gIFNhZmVGcmVlUG9vbCAoU3RyaW5n RHBPcHRpb25VaCk7DQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ0RwT3B0aW9uTHYpOw0KLSAgU2Fm ZUZyZWVQb29sIChTdHJpbmdEcE9wdGlvblVzKTsNCi0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBP cHRpb25Mcyk7DQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ0RwT3B0aW9uVWEpOw0KLSAgU2FmZUZy ZWVQb29sIChTdHJpbmdEcE9wdGlvblVyKTsNCi0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRp b25VdCk7DQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ0RwT3B0aW9uVXApOw0KLSAgU2FmZUZyZWVQ b29sIChTdHJpbmdEcE9wdGlvbkx4KTsNCi0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25M bik7DQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ0RwT3B0aW9uTHQpOw0KLSAgU2FmZUZyZWVQb29s IChTdHJpbmdEcE9wdGlvbkxpKTsNCi0gIFNhZmVGcmVlUG9vbCAoU3RyaW5nRHBPcHRpb25MYyk7 DQotICBTYWZlRnJlZVBvb2wgKFN0cmluZ1B0cik7DQotICBTYWZlRnJlZVBvb2wgKG1QcmludFRv a2VuQnVmZmVyKTsNCi0NCi0gIGlmIChQYXJhbVBhY2thZ2UgIT0gTlVMTCkgew0KLSAgICBTaGVs bENvbW1hbmRMaW5lRnJlZVZhckxpc3QgKFBhcmFtUGFja2FnZSk7DQotICB9DQotICBpZiAoQ3Vz dG9tQ3VtdWxhdGl2ZURhdGEgIT0gTlVMTCkgew0KLSAgICBTYWZlRnJlZVBvb2wgKEN1c3RvbUN1 bXVsYXRpdmVEYXRhLT5OYW1lKTsNCi0gIH0NCi0gIFNhZmVGcmVlUG9vbCAoQ3VzdG9tQ3VtdWxh dGl2ZURhdGEpOw0KLQ0KLSAgSGlpUmVtb3ZlUGFja2FnZXMgKGdIaWlIYW5kbGUpOw0KLSAgcmV0 dXJuIFN0YXR1czsNCi19DQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwLmgg Yi9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaA0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCA1ZmMzMzM1Mjc5Li4wMDAwMDAwMDAwDQotLS0gYS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAv RHAuaA0KKysrIC9kZXYvbnVsbA0KQEAgLTEsMTAxICswLDAgQEANCi0vKiogQGZpbGUNCi0gIENv bW1vbiBkZWNsYXJhdGlvbnMgZm9yIHRoZSBEcCBQZXJmb3JtYW5jZSBSZXBvcnRpbmcgVXRpbGl0 eS4NCi0NCi0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s aWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQotICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0K LSoqLw0KLQ0KLSNpZm5kZWYgX0VGSV9BUFBfRFBfSF8NCi0jZGVmaW5lIF9FRklfQVBQX0RQX0hf DQotDQotI2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCi0NCi0jZGVmaW5lIERQX01BSk9S X1ZFUlNJT04gICAgICAgIDINCi0jZGVmaW5lIERQX01JTk9SX1ZFUlNJT04gICAgICAgIDMNCi0N Ci0vKioNCi0gICogVGhlIHZhbHVlIGFzc2lnbmVkIHRvIERQX0RFQlVHIGNvbnRyb2xzIHdoaWNo IGRlYnVnIG91dHB1dA0KLSAgKiBpcyBnZW5lcmF0ZWQuICBTZXQgaXQgdG8gWkVSTyB0byBkaXNh YmxlLg0KLSoqLw0KLSNkZWZpbmUgRFBfREVCVUcgICAgICAgICAgICAgICAgMA0KLQ0KLS8qKg0K LSAgKiBTZXQgdG8gMSBvbmNlIFByb2ZpbGluZyBoYXMgYmVlbiBpbXBsZW1lbnRlZCBpbiBvcmRl ciB0byBlbmFibGUNCi0gICogcHJvZmlsaW5nIHJlbGF0ZWQgb3B0aW9ucyBhbmQgcmVwb3J0IG91 dHB1dC4NCi0qKi8NCi0jZGVmaW5lIFBST0ZJTElOR19JTVBMRU1FTlRFRCAgIDANCi0NCi0jZGVm aW5lIERFRkFVTFRfVEhSRVNIT0xEICAgICAgIDEwMDAgICAgLy8vPCBPbmUgbWlsbGlzZWNvbmQu DQotI2RlZmluZSBERUZBVUxUX0RJU1BMQVlDT1VOVCAgICA1MA0KLSNkZWZpbmUgTUFYSU1VTV9E SVNQTEFZQ09VTlQgICAgOTk5OTk5ICAvLy88IEFyYml0cmFyeSBtYXhpbXVtIHJlYXNvbmFibGUg bnVtYmVyLg0KLQ0KLSNkZWZpbmUgUEVSRl9NQVhEVVIgICAgICAgICAgICAgMHhGRkZGRkZGRkZG RkZGRkZGVUxMDQotDQotLy8vIERldGVybWluZSB3aGV0aGVyICAwIDw9IEMgPCBMLiAgSWYgTCA9 PSAwLCByZXR1cm4gdHJ1ZSByZWdhcmRsZXNzIG9mIEMuDQotI2RlZmluZSBXSVRISU5fTElNSVQo IEMsIEwpICAgKCAoKEwpID09IDApIHx8ICgoQykgPCAoTCkpICkNCi0NCi0vLy8gU3RydWN0dXJl IGZvciBzdG9yaW5nIFRpbWVyIHNwZWNpZmljIGluZm9ybWF0aW9uLg0KLXR5cGVkZWYgc3RydWN0 IHsNCi0gIFVJTlQ2NCAgICBTdGFydENvdW50OyAgIC8vLzwgVmFsdWUgdGltZXIgaXMgaW5pdGlh bGl6ZWQgd2l0aC4NCi0gIFVJTlQ2NCAgICBFbmRDb3VudDsgICAgIC8vLzwgVmFsdWUgdGltZXIg aGFzIGp1c3QgYmVmb3JlIGl0IHdyYXBzLg0KLSAgVUlOVDMyICAgIEZyZXF1ZW5jeTsgICAgLy8v PCBUaW1lciBjb3VudCBmcmVxdWVuY3kgaW4gS0h6Lg0KLSAgQk9PTEVBTiAgIENvdW50VXA7ICAg ICAgLy8vPCBUUlVFIGlmIHRoZSBjb3VudGVyIGNvdW50cyB1cC4NCi19IFRJTUVSX0lORk87DQot DQotLyoqIEluaXRpYWxpemUgb25lIFBFUkZfQ1VNX0RBVEEgc3RydWN0dXJlIGluc3RhbmNlIGZv ciB0b2tlbiB0Lg0KLSAgKg0KLSAgKiBUaGlzIHBhcmFtZXRlcml6ZWQgbWFjcm8gdGFrZXMgYSBz aW5nbGUgYXJndW1lbnQsIHQsIHdoaWNoIGlzIGV4cGVjdGVkDQotICAqIHRvIHJlc29sdmUgdG8g YSBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyBsaXRlcmFsLiAgVGhpcyBwYXJhbWV0ZXIgbWF5 DQotICAqIHRha2UgYW55IG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOg0KLSAgKiAgIC0gUEVS Rl9JTklUX0NVTV9EQVRBKCJUb2tlbiIpICAgICAgICAgQSBzdHJpbmcgbGl0ZXJhbA0KLSAgKiAg IC0gUEVSRl9JTklUX0NVTV9EQVRBKHBvaW50ZXIpICAgICAgICAgQSBwb2ludGVyIC0tIENIQVI4 ICpwb2ludGVyOw0KLSAgKiAgIC0gUEVSRl9JTklUX0NVTV9EQVRBKGFycmF5KSAgICAgICAgICAg QWRkcmVzcyBvZiBhbiBhcnJheSAtLSBDSEFSOCBhcnJheVtOXTsNCi0qKi8NCi0jZGVmaW5lIFBF UkZfSU5JVF9DVU1fREFUQSh0KSAgIHsgMFVMTCwgUEVSRl9NQVhEVVIsIDBVTEwsICh0KSwgMFUg fQ0KLQ0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIFVJTlQ2NCAgRHVyYXRpb247ICAgICAvLy88IEN1 bXVsYXRpdmUgZHVyYXRpb24gZm9yIHRoaXMgaXRlbS4NCi0gIFVJTlQ2NCAgTWluRHVyOyAgICAg ICAvLy88IFNtYWxsZXN0IGR1cmF0aW9uIGVuY291bnRlcmVkLg0KLSAgVUlOVDY0ICBNYXhEdXI7 ICAgICAgIC8vLzwgTGFyZ2VzdCBkdXJhdGlvbiBlbmNvdW50ZXJlZC4NCi0gIENIQVI4ICAgKk5h bWU7ICAgICAgICAvLy88IEFTQ0lJIG5hbWUgb2YgdGhpcyBpdGVtLg0KLSAgVUlOVDMyICBDb3Vu dDsgICAgICAgIC8vLzwgVG90YWwgbnVtYmVyIG9mIG1lYXN1cmVtZW50cyBhY2N1bXVsYXRlZC4N Ci19IFBFUkZfQ1VNX0RBVEE7DQotDQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgVUlOVDMyICAgICAg ICAgICAgICAgIE51bVRyYWNlOyAgICAgICAgIC8vLzwgTnVtYmVyIG9mIHJlY29yZGVkIFRSQUNF IHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICBOdW1Q cm9maWxlOyAgICAgICAvLy88IE51bWJlciBvZiByZWNvcmRlZCBQUk9GSUxFIHBlcmZvcm1hbmNl IG1lYXN1cmVtZW50cy4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICBOdW1JbmNvbXBsZXRlOyAg ICAvLy88IE51bWJlciBvZiBtZWFzdXJlbWVudHMgd2l0aCBubyBFTkQgdmFsdWUuDQotICBVSU5U MzIgICAgICAgICAgICAgICAgTnVtU3VtbWFyeTsgICAgICAgLy8vPCBOdW1iZXIgb2Ygc3VtbWFy eSBzZWN0aW9uIG1lYXN1cmVtZW50cy4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICBOdW1IYW5k bGVzOyAgICAgICAvLy88IE51bWJlciBvZiBtZWFzdXJlbWVudHMgd2l0aCBoYW5kbGVzLg0KLSAg VUlOVDMyICAgICAgICAgICAgICAgIE51bVBFSU1zOyAgICAgICAgIC8vLzwgTnVtYmVyIG9mIG1l YXN1cmVtZW50cyBvZiBQRUlNcy4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICBOdW1HbG9iYWw7 ICAgICAgICAvLy88IE51bWJlciBvZiBtZWFzdXJlbWVudHMgd2l0aCBFTkQgdmFsdWUgYW5kIE5V TEwgaGFuZGxlLg0KLX0gUEVSRl9TVU1NQVJZX0RBVEE7DQotDQotdHlwZWRlZiBzdHJ1Y3Qgew0K LSAgQ09OU1QgVk9JRCAgICAgICAgICAgICpIYW5kbGU7DQotICBDT05TVCBDSEFSOCAgICAgICAg ICAgKlRva2VuOyAgICAgICAgICAgLy8vPCBNZWFzdXJlZCB0b2tlbiBzdHJpbmcgbmFtZS4NCi0g IENPTlNUIENIQVI4ICAgICAgICAgICAqTW9kdWxlOyAgICAgICAgICAvLy88IE1vZHVsZSBzdHJp bmcgbmFtZS4NCi0gIFVJTlQ2NCAgICAgICAgICAgICAgICBTdGFydFRpbWVTdGFtcDsgICAvLy88 IFN0YXJ0IHRpbWUgcG9pbnQuDQotICBVSU5UNjQgICAgICAgICAgICAgICAgRW5kVGltZVN0YW1w OyAgICAgLy8vPCBFbmQgdGltZSBwb2ludC4NCi0gIFVJTlQzMiAgICAgICAgICAgICAgICBJZGVu dGlmaWVyOyAgICAgICAvLy88IElkZW50aWZpZXIuDQotfSBNRUFTVVJFTUVOVF9SRUNPUkQ7DQot DQotdHlwZWRlZiBzdHJ1Y3Qgew0KLSAgQ0hBUjggICAgICAgICAgICAgICAgICpOYW1lOyAgICAg ICAgICAgIC8vLzwgTWVhc3VyZWQgdG9rZW4gc3RyaW5nIG5hbWUuDQotICBVSU5UNjQgICAgICAg ICAgICAgICAgQ3VtdWxhdGl2ZVRpbWU7ICAgLy8vPCBBY2N1bXVsYXRlZCBFbGFwc2VkIFRpbWUu DQotICBVSU5UNjQgICAgICAgICAgICAgICAgTWluVGltZTsgICAgICAgICAgLy8vPCBNaW5pbXVt IEVsYXBzZWQgVGltZS4NCi0gIFVJTlQ2NCAgICAgICAgICAgICAgICBNYXhUaW1lOyAgICAgICAg ICAvLy88IE1heGltdW0gRWxhcHNlZCBUaW1lLg0KLSAgVUlOVDMyICAgICAgICAgICAgICAgIENv dW50OyAgICAgICAgICAgIC8vLzwgTnVtYmVyIG9mIG1lYXN1cmVtZW50cyBhY2N1bXVsYXRlZC4N Ci19IFBST0ZJTEVfUkVDT1JEOw0KLQ0KLXR5cGVkZWYgc3RydWN0IHsNCi0gIFVJTlQxNiAgICAg ICAgICAgICBUb2tlbjsNCi0gIFNIRUxMX1BBUkFNX1RZUEUgICBUeXBlOw0KLX0gUEFSQU1fSVRF TV9MSVNUOw0KLSNlbmRpZiAgLy8gX0VGSV9BUFBfRFBfSF8NCmRpZmYgLS1naXQgYS9QZXJmb3Jt YW5jZVBrZy9EcF9BcHAvRHAuaW5mIGIvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwLmluZg0KZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAxMjA0ZDhlZjViLi4wMDAwMDAwMDAwDQotLS0g YS9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHAuaW5mDQorKysgL2Rldi9udWxsDQpAQCAtMSw4MCAr MCwwIEBADQotIyMgIEBmaWxlDQotIyAgRGlzcGxheSBQZXJmb3JtYW5jZSBBcHBsaWNhdGlvbiwg TW9kdWxlIGluZm9ybWF0aW9uIGZpbGUuDQotIw0KLSMgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAx NywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSMgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSMgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotIyBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQotIw0KLSMgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQot IyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSMNCi0jIw0KLQ0KLVtEZWZpbmVzXQ0KLSAgSU5GX1ZF UlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNg0KLSAgQkFTRV9OQU1FICAgICAg ICAgICAgICAgICAgICAgID0gRFANCi0gIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IDdkNWZmMGUzLTJmYjctNGUxOS04NDE5LTQ0MjY2Y2I2MDAwMA0KLSAgTU9EVUxFX1RZUEUgICAg ICAgICAgICAgICAgICAgID0gVUVGSV9BUFBMSUNBVElPTg0KLSAgVkVSU0lPTl9TVFJJTkcgICAg ICAgICAgICAgICAgID0gMS4wDQotICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBJ bml0aWFsaXplRHANCi0gIA0KLSMNCi0jICBUaGlzIGZsYWcgc3BlY2lmaWVzIHdoZXRoZXIgSElJ IHJlc291cmNlIHNlY3Rpb24gaXMgZ2VuZXJhdGVkIGludG8gUEUgaW1hZ2UuDQotIw0KLSAgVUVG SV9ISUlfUkVTT1VSQ0VfU0VDVElPTiAgICAgID0gVFJVRQ0KLQ0KLSMNCi0jIFRoZSBmb2xsb3dp bmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkg dGhlIGJ1aWxkIHRvb2xzLg0KLSMNCi0jICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9 IElBMzIgWDY0IElQRiBFQkMNCi0jDQotDQotW1NvdXJjZXNdDQotICBEcFN0cmluZ3MudW5pDQot ICBEcC5jDQotICBEcC5oDQotICBMaXRlcmFscy5oDQotICBMaXRlcmFscy5jDQotICBEcEludGVy bmFsLmgNCi0gIERwVXRpbGl0aWVzLmMNCi0gIERwVHJhY2UuYw0KLSAgRHBQcm9maWxlLmMNCi0N Ci1bUGFja2FnZXNdDQotICBNZGVQa2cvTWRlUGtnLmRlYw0KLSAgTWRlTW9kdWxlUGtnL01kZU1v ZHVsZVBrZy5kZWMNCi0gIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KLSAgUGVyZm9ybWFuY2VQa2cv UGVyZm9ybWFuY2VQa2cuZGVjDQotDQotW0xpYnJhcnlDbGFzc2VzXQ0KLSAgVWVmaUFwcGxpY2F0 aW9uRW50cnlQb2ludA0KLSAgU2hlbGxMaWINCi0gIEJhc2VNZW1vcnlMaWINCi0gIEJhc2VMaWIN Ci0gIE1lbW9yeUFsbG9jYXRpb25MaWINCi0gIERlYnVnTGliDQotICBVZWZpQm9vdFNlcnZpY2Vz VGFibGVMaWINCi0gIFBlQ29mZkdldEVudHJ5UG9pbnRMaWINCi0gIFBlcmZvcm1hbmNlTGliDQot ICBQcmludExpYg0KLSAgVWVmaUxpYg0KLSAgSGlpTGliDQotICBVZWZpSGlpU2VydmljZXNMaWIN Ci0gIFBjZExpYg0KLSAgRGV2aWNlUGF0aExpYg0KLSAgRHhlU2VydmljZXNMaWINCi0NCi1bR3Vp ZHNdDQotICBnUGVyZm9ybWFuY2VQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMjIENPTlNVTUVTICMjIFN5c3RlbVRhYmxlDQotDQotW1Byb3RvY29sc10NCi0gIGdF ZmlMb2FkZWRJbWFnZVByb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMg Q09OU1VNRVMNCi0gIGdFZmlIaWlQYWNrYWdlTGlzdFByb3RvY29sR3VpZCAgICAgICAgICAgICAg ICAgICAgICAgICAgIyMgQ09OU1VNRVMNCi0gIGdFZmlEcml2ZXJCaW5kaW5nUHJvdG9jb2xHdWlk ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQotICBnRWZp Q29tcG9uZW50TmFtZTJQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICMjIFNP TUVUSU1FU19DT05TVU1FUw0KLSAgZ0VmaUxvYWRlZEltYWdlRGV2aWNlUGF0aFByb3RvY29sR3Vp ZCAgICAgICAgICAgICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCi0NCi1bUGNkXQ0KLSAg Z0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFVlZmlMaWJNYXhQcmludEJ1ZmZlclNpemUgICAj IyBDT05TVU1FUw0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcEludGVybmFs LmggYi9QZXJmb3JtYW5jZVBrZy9EcF9BcHAvRHBJbnRlcm5hbC5oDQpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDFhYjM2YmE3ZWQuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNl UGtnL0RwX0FwcC9EcEludGVybmFsLmgNCisrKyAvZGV2L251bGwNCkBAIC0xLDM4MyArMCwwIEBA DQotLyoqIEBmaWxlDQotICBEZWNsYXJhdGlvbnMgb2Ygb2JqZWN0cyBkZWZpbmVkIGludGVybmFs bHkgdG8gdGhlIERwIEFwcGxpY2F0aW9uLg0KLQ0KLSAgRGVjbGFyYXRpb25zIG9mIGRhdGEgYW5k IGZ1bmN0aW9ucyB3aGljaCBhcmUgcHJpdmF0ZSB0byB0aGUgRHAgYXBwbGljYXRpb24uDQotICBU aGlzIGZpbGUgc2hvdWxkIG5ldmVyIGJlIHJlZmVyZW5jZWQgYnkgYW55dGhpbmcgb3RoZXIgdGhh biBjb21wb25lbnRzIG9mIHRoZQ0KLSAgRHAgYXBwbGljYXRpb24uICBJbiBhZGRpdGlvbiB0byBn bG9iYWwgZGF0YSwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZvcg0KLSAgRHBVdGlsaXRpZXMuYywg RHBUcmFjZS5jLCBhbmQgRHBQcm9maWxlLmMgYXJlIGluY2x1ZGVkIGhlcmUuDQotDQotICBDb3B5 cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQotICAoQykgQ29weXJpZ2h0IDIwMTUtMjAxNiBIZXdsZXR0IFBhY2thcmQgRW50 ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCi0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSAgd2hpY2gg YWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNl bnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQotICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVE Lg0KLSoqLw0KLSNpZm5kZWYgX0RQX0lOVEVMTkFMX0hfDQotI2RlZmluZSBfRFBfSU5URUxOQUxf SF8NCi0NCi0jZGVmaW5lIERQX0dBVUdFX1NUUklOR19MRU5HVEggICAzNg0KLQ0KLS8vDQotLy8v IE1vZHVsZS1HbG9iYWwgVmFyaWFibGVzDQotLy8vQHsNCi1leHRlcm4gRUZJX0hJSV9IQU5ETEUg ICAgIGdIaWlIYW5kbGU7DQotZXh0ZXJuIENIQVIxNiAgICAgICAgICAgICAqbVByaW50VG9rZW5C dWZmZXI7DQotZXh0ZXJuIENIQVIxNiAgICAgICAgICAgICBtR2F1Z2VTdHJpbmdbRFBfR0FVR0Vf U1RSSU5HX0xFTkdUSCArIDFdOw0KLWV4dGVybiBDSEFSMTYgICAgICAgICAgICAgbVVuaWNvZGVU b2tlbltEWEVfUEVSRk9STUFOQ0VfU1RSSU5HX1NJWkVdOw0KLWV4dGVybiBVSU5UNjQgICAgICAg ICAgICAgbUludGVyZXN0VGhyZXNob2xkOw0KLWV4dGVybiBCT09MRUFOICAgICAgICAgICAgbVNo b3dJZDsNCi0NCi1leHRlcm4gUEVSRl9TVU1NQVJZX0RBVEEgIFN1bW1hcnlEYXRhOyAgICAvLy88 IENyZWF0ZSB0aGUgU3VtbWFyeURhdGEgc3RydWN0dXJlIGFuZCBpbml0LiB0byBaRVJPLg0KLQ0K LS8vLyBUaW1lciBTcGVjaWZpYyBJbmZvcm1hdGlvbi4NCi1leHRlcm4gVElNRVJfSU5GTyAgICAg ICAgIFRpbWVySW5mbzsNCi0NCi0vLy8gSXRlbXMgZm9yIHdoaWNoIHRvIGdhdGhlciBjdW11bGF0 aXZlIHN0YXRpc3RpY3MuDQotZXh0ZXJuIFBFUkZfQ1VNX0RBVEEgICAgICBDdW1EYXRhW107DQot DQotLy8vIE51bWJlciBvZiBpdGVtcyBmb3Igd2hpY2ggd2UgYXJlIGdhdGhlcmluZyBjdW11bGF0 aXZlIHN0YXRpc3RpY3MuDQotZXh0ZXJuIFVJTlQzMiBjb25zdCAgICAgICBOdW1DdW07DQotDQot Ly8vQH0NCi0NCi0vKiogDQotICBDYWxjdWxhdGUgYW4gZXZlbnQncyBkdXJhdGlvbiBpbiB0aW1l ciB0aWNrcy4NCi0gIA0KLSAgR2l2ZW4gdGhlIGNvdW50IGRpcmVjdGlvbiBhbmQgdGhlIGV2ZW50 J3Mgc3RhcnQgYW5kIGVuZCB0aW1lciB2YWx1ZXMsDQotICBjYWxjdWxhdGUgdGhlIGR1cmF0aW9u IG9mIHRoZSBldmVudCBpbiB0aW1lciB0aWNrcy4gIEluZm9ybWF0aW9uIGZvcg0KLSAgdGhlIGN1 cnJlbnQgbWVhc3VyZW1lbnQgaXMgcG9pbnRlZCB0byBieSB0aGUgcGFyYW1ldGVyLg0KLSAgDQot ICBJZiB0aGUgbWVhc3VyZW1lbnQncyBzdGFydCB0aW1lIGlzIDEsIGl0IGluZGljYXRlcyB0aGF0 IHRoZSBkZXZlbG9wZXINCi0gIGlzIGluZGljYXRpbmcgdGhhdCB0aGUgbWVhc3VyZW1lbnQgYmVn YW4gYXQgdGhlIHJlbGVhc2Ugb2YgcmVzZXQuDQotICBUaGUgc3RhcnQgdGltZSBpcyBhZGp1c3Rl ZCB0byB0aGUgdGltZXIncyBzdGFydGluZyBjb3VudCBiZWZvcmUgcGVyZm9ybWluZw0KLSAgdGhl IGVsYXBzZWQgdGltZSBjYWxjdWxhdGlvbi4NCi0gIA0KLSAgVGhlIGNhbGN1bGF0ZWQgZHVyYXRp b24sIGluIHRpY2tzLCBpcyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuDQotICB0aGUg bWVhc3VyZW1lbnQncyBlbmRpbmcgYW5kIHN0YXJ0aW5nIGNvdW50cy4NCi0gIA0KLSAgQHBhcmFt IE1lYXN1cmVtZW50ICAgUG9pbnRlciB0byBhIE1FQVNVUkVNRU5UX1JFQ09SRCBzdHJ1Y3R1cmUg Y29udGFpbmluZw0KLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBmb3IgdGhlIGN1cnJlbnQg bWVhc3VyZW1lbnQuDQotICANCi0gIEByZXR1cm4gICAgICAgICAgICAgIFRoZSA2NC1iaXQgZHVy YXRpb24gb2YgdGhlIGV2ZW50Lg0KLSoqLw0KLVVJTlQ2NA0KLUdldER1cmF0aW9uICgNCi0gIElO IE9VVCBNRUFTVVJFTUVOVF9SRUNPUkQgKk1lYXN1cmVtZW50DQotICApOw0KLQ0KLS8qKiANCi0g IERldGVybWluZSB3aGV0aGVyIHRoZSBNZWFzdXJlbWVudCByZWNvcmQgaXMgZm9yIGFuIEVGSSBQ aGFzZS4NCi0gIA0KLSAgVGhlIFRva2VuIGFuZCBNb2R1bGUgbWVtYmVycyBvZiB0aGUgbWVhc3Vy ZW1lbnQgcmVjb3JkIGFyZSBjaGVja2VkLg0KLSAgTW9kdWxlIG11c3QgYmUgZW1wdHkgYW5kIFRv a2VuIG11c3QgYmUgb25lIG9mIFNFQywgUEVJLCBEWEUsIEJEUywgb3IgU0hFTEwuDQotICANCi0g IEBwYXJhbVtpbl0gIE1lYXN1cmVtZW50IEEgcG9pbnRlciB0byB0aGUgTWVhc3VyZW1lbnQgcmVj b3JkIHRvIHRlc3QuDQotICANCi0gIEByZXR2YWwgICAgIFRSVUUgICAgICAgIFRoZSBtZWFzdXJl bWVudCByZWNvcmQgaXMgZm9yIGFuIEVGSSBQaGFzZS4NCi0gIEByZXR2YWwgICAgIEZBTFNFICAg ICAgIFRoZSBtZWFzdXJlbWVudCByZWNvcmQgaXMgTk9UIGZvciBhbiBFRkkgUGhhc2UuDQotKiov DQotQk9PTEVBTg0KLUlzUGhhc2UoDQotICBJTiBNRUFTVVJFTUVOVF9SRUNPUkQgKk1lYXN1cmVt ZW50DQotICApOw0KLQ0KLS8qKiANCi0gIEdldCB0aGUgZmlsZSBuYW1lIHBvcnRpb24gb2YgdGhl IFBkYiBGaWxlIE5hbWUuDQotICANCi0gIFRoZSBwb3J0aW9uIG9mIHRoZSBQZGIgRmlsZSBOYW1l IGJldHdlZW4gdGhlIGxhc3QgYmFja3NsYXNoIGFuZA0KLSAgZWl0aGVyIGEgZm9sbG93aW5nIHBl cmlvZCBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgY29udmVydGVkDQotICB0byBVbmljb2Rl IGFuZCBjb3BpZWQgaW50byBVbmljb2RlQnVmZmVyLiAgVGhlIG5hbWUgaXMgdHJ1bmNhdGVkLA0K LSAgaWYgbmVjZXNzYXJ5LCB0byBlbnN1cmUgdGhhdCBVbmljb2RlQnVmZmVyIGlzIG5vdCBvdmVy cnVuLg0KLSAgDQotICBAcGFyYW1baW5dICBQZGJGaWxlTmFtZSAgICAgUGRiIGZpbGUgbmFtZS4N Ci0gIEBwYXJhbVtvdXRdIFVuaWNvZGVCdWZmZXIgICBUaGUgcmVzdWx0YW50IFVuaWNvZGUgRmls ZSBOYW1lLg0KLSAgDQotKiovDQotVk9JRA0KLUdldFNob3J0UGRiRmlsZU5hbWUgKA0KLSAgSU4g IENIQVI4ICAgICAqUGRiRmlsZU5hbWUsDQotICBPVVQgQ0hBUjE2ICAgICpVbmljb2RlQnVmZmVy DQotICApOw0KLQ0KLS8qKiANCi0gIEdldCBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGFuIGlt YWdlIGhhbmRsZS4NCi0gIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyB3aWxsIGJlIHRyaWVkIG9yZGVy bHk6DQotICAgIDEuIEltYWdlIFBEQg0KLSAgICAyLiBDb21wb25lbnROYW1lMiBwcm90b2NvbA0K LSAgICAzLiBGRlMgVUkgc2VjdGlvbg0KLSAgICA0LiBJbWFnZSBHVUlEDQotICAgIDUuIEltYWdl IERldmljZVBhdGgNCi0gICAgNi4gVW5rbm93biBEcml2ZXIgTmFtZQ0KLSAgDQotICBAcGFyYW1b aW5dICAgIEhhbmRsZQ0KLSAgDQotICBAcG9zdCAgIFRoZSByZXN1bHRpbmcgVW5pY29kZSBuYW1l IHN0cmluZyBpcyBzdG9yZWQgaW4gdGhlDQotICAgICAgICAgIG1HYXVnZVN0cmluZyBnbG9iYWwg YXJyYXkuDQotICANCi0qKi8NCi1WT0lEDQotR2V0TmFtZUZyb21IYW5kbGUgKA0KLSAgSU4gRUZJ X0hBTkRMRSBIYW5kbGUNCi0gICk7DQotDQotLyoqIA0KLSAgQ2FsY3VsYXRlIHRoZSBEdXJhdGlv biBpbiBtaWNyb3NlY29uZHMuDQotICANCi0gIER1cmF0aW9uIGlzIG11bHRpcGxpZWQgYnkgMTAw MCwgaW5zdGVhZCBvZiBGcmVxdWVuY3kgYmVpbmcgZGl2aWRlZCBieSAxMDAwIG9yDQotICBtdWx0 aXBseWluZyB0aGUgcmVzdWx0IGJ5IDEwMDAsIGluIG9yZGVyIHRvIG1haW50YWluIHByZWNpc2lv bi4gIFNpbmNlIER1cmF0aW9uIGlzDQotICBhIDY0LWJpdCB2YWx1ZSwgbXVsdGlwbHlpbmcgaXQg YnkgMTAwMCBpcyB1bmxpa2VseSB0byBwcm9kdWNlIGFuIG92ZXJmbG93Lg0KLSAgDQotICBUaGUg dGltZSBpcyBjYWxjdWxhdGVkIGFzIChEdXJhdGlvbiAqIDEwMDApIC8gVGltZXJfRnJlcXVlbmN5 Lg0KLSAgDQotICBAcGFyYW1baW5dICBEdXJhdGlvbiAgIFRoZSBldmVudCBkdXJhdGlvbiBpbiB0 aW1lciB0aWNrcy4NCi0gIA0KLSAgQHJldHVybiAgICAgQSA2NC1iaXQgdmFsdWUgd2hpY2ggaXMg dGhlIEVsYXBzZWQgdGltZSBpbiBtaWNyb3NlY29uZHMuDQotKiovDQotVUlOVDY0DQotRHVyYXRp b25Jbk1pY3JvU2Vjb25kcyAoDQotICBJTiBVSU5UNjQgRHVyYXRpb24NCi0gICk7DQotDQotLyoq IA0KLSAgRm9ybWF0dGVkIFByaW50IHVzaW5nIGEgSGlpIFRva2VuIHRvIHJlZmVyZW5jZSB0aGUg bG9jYWxpemVkIGZvcm1hdCBzdHJpbmcuDQotICANCi0gIEBwYXJhbVtpbl0gIFRva2VuICAgQSBI SUkgdG9rZW4gYXNzb2NpYXRlZCB3aXRoIGEgbG9jYWxpemVkIFVuaWNvZGUgc3RyaW5nLg0KLSAg QHBhcmFtW2luXSAgLi4uICAgICBUaGUgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4NCi0gIA0KLSAg QHJldHVybiAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29udmVydGVkIGJ5 IFVuaWNvZGVWU1ByaW50KCkuDQotICANCi0qKi8NCi1VSU5UTg0KLUVGSUFQSQ0KLVByaW50VG9r ZW4gKA0KLSAgSU4gVUlOVDE2IFRva2VuLA0KLSAgLi4uDQotICApOw0KLQ0KLS8qKiANCi0gIEdl dCBpbmRleCBvZiBNZWFzdXJlbWVudCBSZWNvcmQncyBtYXRjaCBpbiB0aGUgQ3VtRGF0YSBhcnJh eS4NCi0gIA0KLSAgSWYgdGhlIE1lYXN1cmVtZW50J3MgVG9rZW4gdmFsdWUgbWF0Y2hlcyBhIFRv a2VuIGluIG9uZSBvZiB0aGUgQ3VtRGF0YQ0KLSAgcmVjb3JkcywgdGhlIGluZGV4IG9mIHRoZSBt YXRjaGluZyByZWNvcmQgaXMgcmV0dXJuZWQuICBUaGUgcmV0dXJuZWQNCi0gIGluZGV4IGlzIGEg c2lnbmVkIHZhbHVlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBpbmRpY2F0ZSB0aGF0DQot ICB0aGUgTWVhc3VyZW1lbnQgZGlkbid0IG1hdGNoIGFueSBlbnRyeSBpbiB0aGUgQ3VtRGF0YSBh cnJheS4NCi0gIA0KLSAgQHBhcmFtW2luXSAgTWVhc3VyZW1lbnQgQSBwb2ludGVyIHRvIGEgTWVh c3VyZW1lbnQgUmVjb3JkIHRvIG1hdGNoIGFnYWluc3QgdGhlIEN1bURhdGEgYXJyYXkuDQotICAN Ci0gIEByZXR2YWwgICAgIDwwICAgIFRva2VuIGlzIG5vdCBpbiB0aGUgQ3VtRGF0YSBhcnJheS4N Ci0gIEByZXR2YWwgICAgID49MCAgIFJldHVybiB2YWx1ZSBpcyB0aGUgaW5kZXggaW50byBDdW1E YXRhIHdoZXJlIFRva2VuIGlzIGZvdW5kLg0KLSoqLw0KLUlOVE4NCi1HZXRDdW11bGF0aXZlSXRl bSgNCi0gIElOIE1FQVNVUkVNRU5UX1JFQ09SRCAqTWVhc3VyZW1lbnQNCi0gICk7DQotDQotLyoq IA0KLSAgQ29sbGVjdCB2ZXJib3NlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGxvZ2dlZCBwZXJmb3Jt YW5jZSBtZWFzdXJlbWVudHMuDQotICANCi0gIEdlbmVyYWwgU3VtbWFyeSBpbmZvcm1hdGlvbiBm b3IgYWxsIFRyYWNlIG1lYXN1cmVtZW50cyBpcyBnYXRoZXJlZCBhbmQNCi0gIHN0b3JlZCB3aXRo aW4gdGhlIFN1bW1hcnlEYXRhIHN0cnVjdHVyZS4gIFRoaXMgaW5mb3JtYXRpb24gaXMgYm90aA0K LSAgdXNlZCBpbnRlcm5hbGx5IGJ5IHN1YnNlcXVlbnQgcmVwb3J0aW5nIGZ1bmN0aW9ucywgYW5k IGRpc3BsYXllZA0KLSAgYXQgdGhlIGVuZCBvZiB2ZXJib3NlIHJlcG9ydHMuDQotICANCi0gIEBw cmUgIFRoZSBTdW1tYXJ5RGF0YSBhbmQgQ3VtRGF0YSBzdHJ1Y3R1cmVzIG11c3QgYmUgaW5pdGlh bGl6ZWQNCi0gICAgICAgIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4NCi0gIA0KLSAg QHBvc3QgVGhlIFN1bW1hcnlEYXRhIGFuZCBDdW1EYXRhIHN0cnVjdHVyZXMgY29udGFpbiBzdGF0 aXN0aWNzIGZvciB0aGUNCi0gICAgICAgIGN1cnJlbnQgcGVyZm9ybWFuY2UgbG9ncy4NCi0NCi0g IEBwYXJhbVtpbiwgb3V0XSBDdXN0b21DdW11bGF0aXZlRGF0YSAgVGhlIHBvaW50ZXIgdG8gdGhl IGN1c3RvbSBjdW11bGF0aXZlIGRhdGEuDQotDQotKiovDQotVk9JRA0KLUdhdGhlclN0YXRpc3Rp Y3MoDQotICBJTiBPVVQgUEVSRl9DVU1fREFUQSAgICAgICAgICAgICAgKkN1c3RvbUN1bXVsYXRp dmVEYXRhIE9QVElPTkFMDQotICApOw0KLQ0KLS8qKiANCi0gIEdhdGhlciBhbmQgcHJpbnQgQUxM IFRyYWNlIFJlY29yZHMuDQotICANCi0gIERpc3BsYXlzIGFsbCAiaW50ZXJlc3RpbmciIFRyYWNl IG1lYXN1cmVtZW50cyBpbiBvcmRlci48QlI+DQotICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgZGlz cGxheWVkIGlzIGNvbnRyb2xsZWQgYnk6DQotICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0aW9u IGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZSBub3QgZGlzcGxh eWVkLg0KLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVkLiAg QSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0IHRoZSBvdXRwdXQuDQotICAgICAtIElmIHRo ZSBFeGNsdWRlRmxhZyBpcyBUUlVFLCByZWNvcmRzIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhlIEN1 bURhdGEgYXJyYXkgYXJlIG5vdA0KLSAgICAgICBkaXNwbGF5ZWQuDQotICANCi0gIEBwcmUgICAg VGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaG9y dGVzdCBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KLSAgICAgICAgICAgVGhlIG1HYXVnZVN0cmlu ZyBhbmQgbVVuaWNvZGVUb2tlbiBnbG9iYWwgYXJyYXlzIGFyZSB1c2VkIGZvciB0ZW1wb3Jhcnkg c3RyaW5nIHN0b3JhZ2UuDQotICAgICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVzZSBieSBh IGNhbGxpbmcgZnVuY3Rpb24uDQotICANCi0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAgVGhl IG51bWJlciBvZiByZWNvcmRzIHRvIHByaW50LiAgWmVybyBpcyBBTEwuDQotICBAcGFyYW1baW5d ICAgIEV4Y2x1ZGVGbGFnIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlkdWFsIEN1bXVsYXRpdmUgaXRl bXMgZnJvbSBkaXNwbGF5Lg0KLSAgDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLg0KLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAg ICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQotICBAcmV0dXJuIE90aGVycyAg ICAgICAgICAgICAgICBmcm9tIGEgY2FsbCB0byBnQlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlcigpLg0K LSoqLw0KLUVGSV9TVEFUVVMNCi1EdW1wQWxsVHJhY2UoDQotICBJTiBVSU5UTiAgICAgICAgICAg ICBMaW1pdCwNCi0gIElOIEJPT0xFQU4gICAgICAgICAgIEV4Y2x1ZGVGbGFnDQotICApOw0KLQ0K LS8qKiANCi0gIEdhdGhlciBhbmQgcHJpbnQgUmF3IFRyYWNlIFJlY29yZHMuDQotICANCi0gIEFs bCBUcmFjZSBtZWFzdXJlbWVudHMgd2l0aCBhIGR1cmF0aW9uIGdyZWF0ZXIgdGhhbiBvciBlcXVh bCB0bw0KLSAgbUludGVyZXN0VGhyZXNob2xkIGFyZSBwcmludGVkIHdpdGhvdXQgaW50ZXJwcmV0 YXRpb24uDQotICANCi0gIFRoZSBudW1iZXIgb2YgcmVjb3JkcyBkaXNwbGF5ZWQgaXMgY29udHJv bGxlZCBieToNCi0gICAgIC0gcmVjb3JkcyB3aXRoIGEgZHVyYXRpb24gbGVzcyB0aGFuIG1JbnRl cmVzdFRocmVzaG9sZCBtaWNyb3NlY29uZHMgYXJlIG5vdCBkaXNwbGF5ZWQuDQotICAgICAtIE5v IG1vcmUgdGhhbiBMaW1pdCByZWNvcmRzIGFyZSBkaXNwbGF5ZWQuICBBIExpbWl0IG9mIHplcm8g d2lsbCBub3QgbGltaXQgdGhlIG91dHB1dC4NCi0gICAgIC0gSWYgdGhlIEV4Y2x1ZGVGbGFnIGlz IFRSVUUsIHJlY29yZHMgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgQ3VtRGF0YSBhcnJheSBhcmUg bm90DQotICAgICAgIGRpc3BsYXllZC4NCi0gIA0KLSAgQHByZSAgICBUaGUgbUludGVyZXN0VGhy ZXNob2xkIGdsb2JhbCB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIHNob3J0ZXN0IGR1cmF0aW9uIHRv IGJlIHByaW50ZWQuDQotICANCi0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAgVGhlIG51bWJl ciBvZiByZWNvcmRzIHRvIHByaW50LiAgWmVybyBpcyBBTEwuDQotICBAcGFyYW1baW5dICAgIEV4 Y2x1ZGVGbGFnIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlkdWFsIEN1bXVsYXRpdmUgaXRlbXMgZnJv bSBkaXNwbGF5Lg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9wZXJh dGlvbiB3YXMgc3VjY2Vzc2Z1bC4NCi0gIEByZXR2YWwgRUZJX0FCT1JURUQgICAgICAgICAgIFRo ZSB1c2VyIGFib3J0cyB0aGUgb3BlcmF0aW9uLg0KLSoqLw0KLUVGSV9TVEFUVVMNCi1EdW1wUmF3 VHJhY2UoDQotICBJTiBVSU5UTiAgICAgICAgICBMaW1pdCwNCi0gIElOIEJPT0xFQU4gICAgICAg IEV4Y2x1ZGVGbGFnDQotICApOw0KLQ0KLS8qKiANCi0gIEdhdGhlciBhbmQgcHJpbnQgTWFqb3Ig UGhhc2UgbWV0cmljcy4NCi0gIA0KLSoqLw0KLVZPSUQNCi1Qcm9jZXNzUGhhc2VzKA0KLSAgVk9J RA0KLSAgKTsNCi0NCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHByaW50IEhhbmRsZSBkYXRhLg0K LSAgDQotICBAcGFyYW1baW5dICAgIEV4Y2x1ZGVGbGFnICAgVFJVRSB0byBleGNsdWRlIGluZGl2 aWR1YWwgQ3VtdWxhdGl2ZSBpdGVtcyBmcm9tIGRpc3BsYXkuDQotDQotICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgIFRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuDQotICBAcmV0 dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICAgIFRoZSB1c2VyIGFib3J0cyB0aGUgb3BlcmF0aW9u Lg0KLSAgQHJldHVybiBPdGhlcnMgICAgICAgICAgICAgICAgICBmcm9tIGEgY2FsbCB0byBnQlMt PkxvY2F0ZUhhbmRsZUJ1ZmZlcigpLg0KLSoqLw0KLUVGSV9TVEFUVVMNCi1Qcm9jZXNzSGFuZGxl cygNCi0gIElOIEJPT0xFQU4gRXhjbHVkZUZsYWcNCi0gICk7DQotDQotDQotLyoqIA0KLSAgR2F0 aGVyIGFuZCBwcmludCBQRUlNIGRhdGEuDQotICANCi0gIE9ubHkgcHJpbnRzIGNvbXBsZXRlIFBF SU0gcmVjb3Jkcw0KLSAgDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3Bl cmF0aW9uIHdhcyBzdWNjZXNzZnVsLg0KLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAg VGhlIHVzZXIgYWJvcnRzIHRoZSBvcGVyYXRpb24uDQotKiovDQotRUZJX1NUQVRVUw0KLVByb2Nl c3NQZWltcygNCi0gIFZPSUQNCi0gICk7DQotDQotLyoqIA0KLSAgR2F0aGVyIGFuZCBwcmludCBn bG9iYWwgZGF0YS4NCi0gIA0KLSAgU3RyaXBzIG91dCBpbmNvbXBsZXRlIG9yICJFeGVjdXRpb24g UGhhc2UiIHJlY29yZHMNCi0gIE9ubHkgcHJpbnRzIHJlY29yZHMgd2hlcmUgSGFuZGxlIGlzIE5V TEwNCi0gIEluY3JlbWVudCBUSW5kZXggZm9yIGV2ZXJ5IHJlY29yZCwgZXZlbiBza2lwcGVkIG9u ZXMsIHNvIHRoYXQgd2UgaGF2ZSBhbg0KLSAgaW5kaWNhdGlvbiBvZiBldmVyeSBtZWFzdXJlbWVu dCByZWNvcmQgdGFrZW4uDQotICANCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuDQotICBAcmV0dmFsIEVGSV9BQk9SVEVEICAgICAg ICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCi0qKi8NCi1FRklfU1RBVFVTDQot UHJvY2Vzc0dsb2JhbCgNCi0gIFZPSUQNCi0gICk7DQotDQotLyoqIA0KLSAgR2F0aGVyIGFuZCBw cmludCBjdW11bGF0aXZlIGRhdGEuDQotICANCi0gIFRyYXZlcnNlIHRoZSBtZWFzdXJlbWVudCBy ZWNvcmRzIGFuZDo8QlI+DQotICBGb3IgZWFjaCByZWNvcmQgd2l0aCBhIFRva2VuIGxpc3RlZCBp biB0aGUgQ3VtRGF0YSBhcnJheTo8QlI+DQotICAgICAtIFVwZGF0ZSB0aGUgaW5zdGFuY2UgY291 bnQgYW5kIHRoZSB0b3RhbCwgbWluaW11bSwgYW5kIG1heGltdW0gZHVyYXRpb25zLg0KLSAgRmlu YWxseSwgcHJpbnQgdGhlIGdhdGhlcmVkIGN1bXVsYXRpdmUgc3RhdGlzdGljcy4NCi0NCi0gIEBw YXJhbVtpbl0gICAgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXN0 b20gY3VtdWxhdGl2ZSBkYXRhLg0KLSAgDQotKiovDQotVk9JRA0KLVByb2Nlc3NDdW11bGF0aXZl KA0KLSAgSU4gUEVSRl9DVU1fREFUQSAgICAgICAgICAgICAgICAgICpDdXN0b21DdW11bGF0aXZl RGF0YSBPUFRJT05BTA0KLSAgKTsNCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHByaW50IEFMTCBQ cm9maWxpbmcgUmVjb3Jkcy4NCi0gIA0KLSAgRGlzcGxheXMgYWxsICJpbnRlcmVzdGluZyIgUHJv ZmlsZSBtZWFzdXJlbWVudHMgaW4gb3JkZXIuDQotICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgZGlz cGxheWVkIGlzIGNvbnRyb2xsZWQgYnk6DQotICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0aW9u IGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZSBub3QgZGlzcGxh eWVkLg0KLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVkLiAg QSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0IHRoZSBvdXRwdXQuDQotICAgICAtIElmIHRo ZSBFeGNsdWRlRmxhZyBpcyBUUlVFLCByZWNvcmRzIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhlIEN1 bURhdGEgYXJyYXkgYXJlIG5vdA0KLSAgICAgICBkaXNwbGF5ZWQuDQotICANCi0gIEBwcmUgICAg VGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBzaG9y dGVzdCBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KLSAgICAgICAgICAgVGhlIG1HYXVnZVN0cmlu ZyBhbmQgbVVuaWNvZGVUb2tlbiBnbG9iYWwgYXJyYXlzIGFyZSB1c2VkIGZvciB0ZW1wb3Jhcnkg c3RyaW5nIHN0b3JhZ2UuDQotICAgICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVzZSBieSBh IGNhbGxpbmcgZnVuY3Rpb24uDQotICANCi0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAgICBU aGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFMTC4NCi0gIEBwYXJhbVtp bl0gICAgRXhjbHVkZUZsYWcgICBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11bGF0aXZl IGl0ZW1zIGZyb20gZGlzcGxheS4NCi0gIA0KLSoqLw0KLVZPSUQNCi1EdW1wQWxsUHJvZmlsZSgN Ci0gIElOIFVJTlROICAgICAgICAgIExpbWl0LA0KLSAgSU4gQk9PTEVBTiAgICAgICAgRXhjbHVk ZUZsYWcNCi0gICk7DQotDQotLyoqIA0KLSAgR2F0aGVyIGFuZCBwcmludCBSYXcgUHJvZmlsZSBS ZWNvcmRzLg0KLSAgDQotICBBbGwgUHJvZmlsZSBtZWFzdXJlbWVudHMgd2l0aCBhIGR1cmF0aW9u IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bw0KLSAgbUludGVyZXN0VGhyZXNob2xkIGFyZSBwcmlu dGVkIHdpdGhvdXQgaW50ZXJwcmV0YXRpb24uDQotICANCi0gIFRoZSBudW1iZXIgb2YgcmVjb3Jk cyBkaXNwbGF5ZWQgaXMgY29udHJvbGxlZCBieToNCi0gICAgIC0gcmVjb3JkcyB3aXRoIGEgZHVy YXRpb24gbGVzcyB0aGFuIG1JbnRlcmVzdFRocmVzaG9sZCBtaWNyb3NlY29uZHMgYXJlIG5vdCBk aXNwbGF5ZWQuDQotICAgICAtIE5vIG1vcmUgdGhhbiBMaW1pdCByZWNvcmRzIGFyZSBkaXNwbGF5 ZWQuICBBIExpbWl0IG9mIHplcm8gd2lsbCBub3QgbGltaXQgdGhlIG91dHB1dC4NCi0gICAgIC0g SWYgdGhlIEV4Y2x1ZGVGbGFnIGlzIFRSVUUsIHJlY29yZHMgbWF0Y2hpbmcgZW50cmllcyBpbiB0 aGUgQ3VtRGF0YSBhcnJheSBhcmUgbm90DQotICAgICAgIGRpc3BsYXllZC4NCi0gIA0KLSAgQHBy ZSAgICBUaGUgbUludGVyZXN0VGhyZXNob2xkIGdsb2JhbCB2YXJpYWJsZSBpcyBzZXQgdG8gdGhl IHNob3J0ZXN0IGR1cmF0aW9uIHRvIGJlIHByaW50ZWQuDQotICANCi0gIEBwYXJhbVtpbl0gICAg TGltaXQgICAgICAgICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFM TC4NCi0gIEBwYXJhbVtpbl0gICAgRXhjbHVkZUZsYWcgICBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZp ZHVhbCBDdW11bGF0aXZlIGl0ZW1zIGZyb20gZGlzcGxheS4NCi0gIA0KLSoqLw0KLVZPSUQNCi1E dW1wUmF3UHJvZmlsZSgNCi0gIElOIFVJTlROICAgICAgICAgIExpbWl0LA0KLSAgSU4gQk9PTEVB TiAgICAgICAgRXhjbHVkZUZsYWcNCi0gICk7DQotDQotLyoqDQotICBXcmFwIG9yaWdpbmFsIEZy ZWVQb29sIHRvIGNoZWNrIE5VTEwgcG9pbnRlciBmaXJzdC4NCi0NCi0gIEBwYXJhbVtpbl0gICAg QnVmZmVyICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB0byBmcmVlLg0KLQ0KLSoqLw0K LVZPSUQNCi1TYWZlRnJlZVBvb2wgKA0KLSAgSU4gVk9JRCAgICpCdWZmZXINCi0gICk7DQotDQot I2VuZGlmDQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwUHJvZmlsZS5jIGIv UGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwUHJvZmlsZS5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IDE1YzJlZjE0ZDQuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0Rw X0FwcC9EcFByb2ZpbGUuYw0KKysrIC9kZXYvbnVsbA0KQEAgLTEsMTAyICswLDAgQEANCi0vKiog QGZpbGUNCi0gIE1lYXN1cmVkIFByb2ZpbGluZyByZXBvcnRpbmcgZm9yIHRoZSBEcCB1dGlsaXR5 Lg0KLQ0KLSAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQotICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQotICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQotDQotICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCi0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBS RVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQot KiovDQotDQotI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5 L0Jhc2VNZW1vcnlMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGli Lmg+DQotI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9V ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9QZUNvZmZHZXRF bnRyeVBvaW50TGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvUGVyZm9ybWFuY2VMaWIuaD4NCi0j aW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5o Pg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KLQ0KLSNpbmNsdWRlIDxHdWlkL1BlcmZv cm1hbmNlLmg+DQotDQotI2luY2x1ZGUgIkRwLmgiDQotI2luY2x1ZGUgIkxpdGVyYWxzLmgiDQot I2luY2x1ZGUgIkRwSW50ZXJuYWwuaCINCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHByaW50IEFM TCBQcm9maWxpbmcgUmVjb3Jkcy4NCi0gIA0KLSAgRGlzcGxheXMgYWxsICJpbnRlcmVzdGluZyIg UHJvZmlsZSBtZWFzdXJlbWVudHMgaW4gb3JkZXIuDQotICBUaGUgbnVtYmVyIG9mIHJlY29yZHMg ZGlzcGxheWVkIGlzIGNvbnRyb2xsZWQgYnk6DQotICAgICAtIHJlY29yZHMgd2l0aCBhIGR1cmF0 aW9uIGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRzIGFyZSBub3QgZGlz cGxheWVkLg0KLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBhcmUgZGlzcGxheWVk LiAgQSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0IHRoZSBvdXRwdXQuDQotICAgICAtIElm IHRoZSBFeGNsdWRlRmxhZyBpcyBUUlVFLCByZWNvcmRzIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhl IEN1bURhdGEgYXJyYXkgYXJlIG5vdA0KLSAgICAgICBkaXNwbGF5ZWQuDQotICANCi0gIEBwcmUg ICAgVGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMgc2V0IHRvIHRoZSBz aG9ydGVzdCBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KLSAgICAgICAgICAgVGhlIG1HYXVnZVN0 cmluZyBhbmQgbVVuaWNvZGVUb2tlbiBnbG9iYWwgYXJyYXlzIGFyZSB1c2VkIGZvciB0ZW1wb3Jh cnkgc3RyaW5nIHN0b3JhZ2UuDQotICAgICAgICAgICBUaGV5IG11c3Qgbm90IGJlIGluIHVzZSBi eSBhIGNhbGxpbmcgZnVuY3Rpb24uDQotICANCi0gIEBwYXJhbVtpbl0gICAgTGltaXQgICAgICAg ICBUaGUgbnVtYmVyIG9mIHJlY29yZHMgdG8gcHJpbnQuICBaZXJvIGlzIEFMTC4NCi0gIEBwYXJh bVtpbl0gICAgRXhjbHVkZUZsYWcgICBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11bGF0 aXZlIGl0ZW1zIGZyb20gZGlzcGxheS4NCi0gIA0KLSoqLw0KLVZPSUQNCi1EdW1wQWxsUHJvZmls ZSgNCi0gIElOIFVJTlROICAgICAgTGltaXQsDQotICBJTiBCT09MRUFOICAgIEV4Y2x1ZGVGbGFn DQotICApDQotew0KLSAgRUZJX1NUUklORyAgICBTdHJpbmdQdHI7DQotICBFRklfU1RSSU5HICAg IFN0cmluZ1B0clVua25vd247DQotDQotICBTdHJpbmdQdHJVbmtub3duID0gSGlpR2V0U3RyaW5n IChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9BTElUX1VOS05PV04pLCBOVUxMKTsgICAN Ci0gIFN0cmluZ1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RSSU5HX1RPS0VOIChT VFJfRFBfU0VDVElPTl9QUk9GSUxFKSwgTlVMTCk7DQotDQotICBQcmludFRva2VuKCBTVFJJTkdf VE9LRU4gKFNUUl9EUF9TRUNUSU9OX0hFQURFUiksDQotICAgICAgICAgICAgICAoU3RyaW5nUHRy ID09IE5VTEwpID8gU3RyaW5nUHRyVW5rbm93bjogU3RyaW5nUHRyKTsNCi0gIEZyZWVQb29sIChT dHJpbmdQdHIpOw0KLSAgRnJlZVBvb2wgKFN0cmluZ1B0clVua25vd24pOw0KLSAgcmV0dXJuOw0K LX0NCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHByaW50IFJhdyBQcm9maWxlIFJlY29yZHMuDQot ICANCi0gIEFsbCBQcm9maWxlIG1lYXN1cmVtZW50cyB3aXRoIGEgZHVyYXRpb24gZ3JlYXRlciB0 aGFuIG9yIGVxdWFsIHRvDQotICBtSW50ZXJlc3RUaHJlc2hvbGQgYXJlIHByaW50ZWQgd2l0aG91 dCBpbnRlcnByZXRhdGlvbi4NCi0gIA0KLSAgVGhlIG51bWJlciBvZiByZWNvcmRzIGRpc3BsYXll ZCBpcyBjb250cm9sbGVkIGJ5Og0KLSAgICAgLSByZWNvcmRzIHdpdGggYSBkdXJhdGlvbiBsZXNz IHRoYW4gbUludGVyZXN0VGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBhcmUgbm90IGRpc3BsYXllZC4N Ci0gICAgIC0gTm8gbW9yZSB0aGFuIExpbWl0IHJlY29yZHMgYXJlIGRpc3BsYXllZC4gIEEgTGlt aXQgb2YgemVybyB3aWxsIG5vdCBsaW1pdCB0aGUgb3V0cHV0Lg0KLSAgICAgLSBJZiB0aGUgRXhj bHVkZUZsYWcgaXMgVFJVRSwgcmVjb3JkcyBtYXRjaGluZyBlbnRyaWVzIGluIHRoZSBDdW1EYXRh IGFycmF5IGFyZSBub3QNCi0gICAgICAgZGlzcGxheWVkLg0KLSAgDQotICBAcHJlICAgIFRoZSBt SW50ZXJlc3RUaHJlc2hvbGQgZ2xvYmFsIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgc2hvcnRlc3Qg ZHVyYXRpb24gdG8gYmUgcHJpbnRlZC4NCi0gIA0KLSAgQHBhcmFtW2luXSAgICBMaW1pdCAgICAg ICAgIFRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBwcmludC4gIFplcm8gaXMgQUxMLg0KLSAgQHBh cmFtW2luXSAgICBFeGNsdWRlRmxhZyAgIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlkdWFsIEN1bXVs YXRpdmUgaXRlbXMgZnJvbSBkaXNwbGF5Lg0KLSAgDQotKiovDQotVk9JRA0KLUR1bXBSYXdQcm9m aWxlKA0KLSAgSU4gVUlOVE4gICAgICBMaW1pdCwNCi0gIElOIEJPT0xFQU4gICAgRXhjbHVkZUZs YWcNCi0gICkNCi17DQotICBFRklfU1RSSU5HICAgIFN0cmluZ1B0cjsNCi0gIEVGSV9TVFJJTkcg ICAgU3RyaW5nUHRyVW5rbm93bjsNCi0NCi0gIFN0cmluZ1B0clVua25vd24gPSBIaWlHZXRTdHJp bmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0FMSVRfVU5LTk9XTiksIE5VTEwpOyAg IA0KLSAgU3RyaW5nUHRyID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4g KFNUUl9EUF9TRUNUSU9OX1JBV1BST0ZJTEUpLCBOVUxMKTsNCi0gIFByaW50VG9rZW4oIFNUUklO R19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCi0gICAgICAgICAgICAgIChTdHJpbmdQ dHIgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duOiBTdHJpbmdQdHIpOw0KLSAgRnJlZVBvb2wg KFN0cmluZ1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQotICByZXR1cm47 DQotfQ0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFN0cmluZ3MudW5pIGIv UGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwU3RyaW5ncy51bmkNCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMTMxZDE2YmI2ZC4uMDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cv RHBfQXBwL0RwU3RyaW5ncy51bmkNCisrKyAvZGV2L251bGwNCkBAIC0xLDI4MSArMCwwIEBADQot Ly8gKisrDQotLy8NCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotLy8gKEMpIENvcHlyaWdodCAyMDE1IEhl d2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KLS8vIFRoaXMgcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0vLyBhcmUgbGljZW5zZWQgYW5k IG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNE IExpY2Vuc2UNCi0vLyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotLy8gaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLS8vDQotLy8gVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQotLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0vLw0KLS8vDQotLy8gTW9kdWxlIE5hbWU6DQot Ly8NCi0vLyAgIERwU3RyaW5ncy51bmkNCi0vLw0KLS8vIEFic3RyYWN0Og0KLS8vDQotLy8gICBT dHJpbmcgZGVmaW5pdGlvbnMgZm9yIHRoZSBTaGVsbCBkcCBjb21tYW5kDQotLy8NCi0vLyBSZXZp c2lvbiBIaXN0b3J5Og0KLS8vDQotLy8gLS0qLw0KLQ0KLS89Iw0KLQ0KLSNsYW5nZGVmICAgZW4t VVMgIkVuZ2xpc2giDQotI2xhbmdkZWYgICBmci1GUiAiRnJhbsOnYWlzIg0KLQ0KLSNzdHJpbmcg U1RSX0RQX0hFTFBfSU5GT1JNQVRJT04gICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiINCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuVEgg RFAgMCAiRGlzcGxheSBQZXJmb3JtYW5jZSBtZXRyaWNzLiJcclxuIg0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5TSCBOQU1FXHJcbiIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJEaXNwbGF5IFBlcmZvcm1hbmNlIG1ldHJpY3MuXHJcbiINCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuU0ggU1lOT1BTSVNcclxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiBcclxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklmIFByb2ZpbGluZyBpcyBpbXBsZW1lbnRlZDpcclxuIg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRwIFstYl0gWy12 XSBbLXhdIFstcyB8IC1BIHwgLVJdIFstVF0gWy1QXSBbLXQgdmFsdWVdIFstbiBjb3VudF0gWy1j IFt0b2tlbl1dIFstaV0gWy0/XVxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYgUHJvZmlsaW5nIGlzIG5vdCBpbXBsZW1lbnRl ZDpcclxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImRwIFstYl0gWy12XSBbLXhdIFstcyB8IC1BIHwgLVJdIFstdCB2YWx1ZV0gWy1u IGNvdW50XSBbLWMgW3Rva2VuXV0gWy1pXSBbLT9dXHJcbiINCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuU0ggT1BUSU9OU1xyXG4iDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi IFxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgLWIgIGRpc3BsYXkgb24gbXVsdGlwbGUgcGFnZXNcblxyXG4iDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLXYg IGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxyXG4iDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLXggIHByZXZlbnQgZGlz cGxheSBvZiBpbmRpdmlkdWFsIG1lYXN1cmVtZW50cyBmb3IgY3VtdWxhdGl2ZSBpdGVtc1xyXG4i DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiICAgLXMgIGRpc3BsYXkgc3VtbWFyeSBpbmZvcm1hdGlvbiBvbmx5XHJcbiINCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtQSAg ZGlzcGxheSBhbGwgbWVhc3VyZW1lbnRzIGluIGEgbGlzdFxyXG4iDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLVIgIGRpc3BsYXkg YWxsIG1lYXN1cmVtZW50cyBpbiByYXcgZm9ybWF0XHJcbiINCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtVCAgZGlzcGxheSBUcmFj ZSBtZWFzdXJlbWVudHMgb25seShUaGlzIG9wdGlvbiBpcyBhdmFpbGFibGUgd2hlbiBQcm9maWxp bmcgaXMgaW1wbGVtZW50ZWQpXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtUCAgZGlzcGxheSBQcm9maWxlIG1lYXN1cmVt ZW50cyBvbmx5KFRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIFByb2ZpbGluZyBpcyBpbXBs ZW1lbnRlZClcclxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAgIC10IFZBTFVFICBTZXQgZGlzcGxheSB0aHJlc2hvbGQgdG8gVkFM VUUgbWljcm9zZWNvbmRzXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIgICAtbiBDT1VOVCAgTGltaXQgZGlzcGxheSB0byBDT1VO VCBsaW5lcyBpbiBBbGwgYW5kIFJhdyBtb2Rlc1xyXG4iDQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLWkgIGRpc3BsYXkgaWRlbnRp ZmllclxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiICAgLWMgVE9LRU4gLSBEaXNwbGF5IHByZS1kZWZpbmVkIGFuZCBjdXN0b20g Y3VtdWxhdGl2ZSBkYXRhXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgIFByZS1kZWZpbmVkIGN1bXVsYXRp dmUgdG9rZW4gYXJlOlxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAxLiBMb2FkSW1hZ2U6XHJcbiINCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg ICAgICAgICAgICAgIDIuIFN0YXJ0SW1hZ2U6XHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgIDMuIERCOlN0 YXJ0OlxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiICAgICAgICAgICAgICA0LiBEQjpTdXBwb3J0OlxyXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLT8gIGRp c3BsYXkgZHAgaGVscCBpbmZvcm1hdGlvblxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHJcbiINCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIiDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLlRIIERQIDAgIk1v bnRyZXIgbGVzIGRvbm7DqWVzIGQnZXjDqWN1dGlvbiJcclxuIg0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5TSCBOQU1FXHJcbiINCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN b250cmVyIGxlcyBkb25uw6llcyBkJ2V4w6ljdXRpb25cclxuIg0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5TSCBTWU5PUFNJU1xyXG4i DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiIFxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiSWYgUHJvZmlsaW5nIGlzIGltcGxlbWVudGVkOlxyXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHAgWy1iXSBb LXZdIFsteF0gWy1zIHwgLUEgfCAtUl0gWy1UXSBbLVBdIFstdCB2YWx1ZV0gWy1uIGNvdW50XSBb LWMgW3Rva2VuXV0gWy1pXSBbLT9dXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBQcm9maWxpbmcgaXMgbm90IGltcGxlbWVu dGVkOlxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZHAgWy1iXSBbLXZdIFsteF0gWy1zIHwgLUEgfCAtUl0gWy10IHZhbHVlXSBb LW4gY291bnRdIFstYyBbdG9rZW5dXSBbLWldIFstP11cclxuIg0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5TSCBPUFRJT05TXHJcbiIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIgICAtYiAgbW9udHJlciBzdXIgbGVzIHBhZ2VzIG11bHRpcGxlc1xyXG4iDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ICAgLXYgIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxyXG4iDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLXggIHByZXZl bnQgZGlzcGxheSBvZiBpbmRpdmlkdWFsIG1lYXN1cmVtZW50cyBmb3IgY3VtdWxhdGl2ZSBpdGVt c1xyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgLXMgIG1vbnRyZXIgbGVzIGRvbm7DqWVzIGRlIHN0YXRpc3RpcXVlIHNldWxl bWVudFxyXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiICAgLUFcclxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiAgIC1SXHJcbiINCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtVFxyXG4iDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLVBc clxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAgIC10IFZBTFVFXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAtbiBDT1VOVFxyXG4iDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgLWlcclxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiAgIC1jXHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgICAtPyAgbW9udHJlciBkcCBhaWRlciBsJ2luZm9ybWF0aW9uXHJcbiIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJcclxuIg0KLQ0KLSNzdHJpbmcgU1RSX0RQX0hFTFBfSEVBRCAgICAgICAgICAgICAgICNsYW5n dWFnZSBlbi1VUyAgIlxuRGlzcGxheSBQZXJmb3JtYW5jZSBtZXRyaWNzXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiXG5Nb250cmVy IGxlcyBkb25uw6llcyBkJ2V4w6ljdXRpb25cbiINCi0jc3RyaW5nIFNUUl9EUF9IRUxQX0ZMQUdT ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJkcCBbLWJdIFstdl0gWy14XSBbLXMgfCAt QSB8IC1SXSBbLVRdIFstUF0gWy10IHZhbHVlXSBbLW4gY291bnRdIFstYyBbdG9rZW5dXSBbLWld IFstP11cbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICJkcCBbLWJdIFstdl0gWy14XSBbLXMgfCAtQSB8IC1SXSBbLVRdIFstUF0gWy10 IHZhbHVlXSBbLW4gY291bnRdIFstYyBbdG9rZW5dXSBbLWldIFstP11cbiINCi0jc3RyaW5nIFNU Ul9EUF9IRUxQX0ZMQUdTXzIgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJkcCBbLWJdIFst dl0gWy14XSBbLXMgfCAtQSB8IC1SXSBbLXQgdmFsdWVdIFstbiBjb3VudF0gWy1jIFt0b2tlbl1d IFstaV0gWy0/XVxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNs YW5ndWFnZSBmci1GUiAgImRwIFstYl0gWy12XSBbLXhdIFstcyB8IC1BIHwgLVJdIFstdCB2YWx1 ZV0gWy1uIGNvdW50XSBbLWMgW3Rva2VuXV0gWy1pXSBbLT9dXG4iDQotI3N0cmluZyBTVFJfRFBf SEVMUF9QQUdJTkFURSAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiICAgLWIgIGRpc3BsYXkg b24gbXVsdGlwbGUgcGFnZXNcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtYiAgbW9udHJlciBzdXIgbGVzIHBhZ2VzIG11bHRp cGxlc1xuIg0KLSNzdHJpbmcgU1RSX0RQX0hFTFBfVkVSQk9TRSAgICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAgIiAgIC12ICBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbiINCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAt diAgZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4iDQotI3N0cmluZyBTVFJfRFBfSEVM UF9FWENMVURFICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiICAgLXggIHByZXZlbnQgZGlz cGxheSBvZiBpbmRpdmlkdWFsIG1lYXN1cmVtZW50cyBmb3IgY3VtdWxhdGl2ZSBpdGVtcy5cbiIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIg ICIgICAteCAgcHJldmVudCBkaXNwbGF5IG9mIGluZGl2aWR1YWwgbWVhc3VyZW1lbnRzIGZvciBj dW11bGF0aXZlIGl0ZW1zLlxuIg0KLSNzdHJpbmcgU1RSX0RQX0hFTFBfU1RBVCAgICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC1zICBkaXNwbGF5IHN1bW1hcnkgaW5mb3JtYXRpb24g b25seVxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFn ZSBmci1GUiAgIiAgIC1zICBtb250cmVyIGxlcyBkb25uw6llcyBkZSBzdGF0aXN0aXF1ZSBzZXVs ZW1lbnRcbiINCi0jc3RyaW5nIFNUUl9EUF9IRUxQX0FMTCAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgICIgICAtQSAgZGlzcGxheSBhbGwgbWVhc3VyZW1lbnRzIGluIGEgbGlzdFxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAg IiAgIC1BXG4iDQotI3N0cmluZyBTVFJfRFBfSEVMUF9SQVcgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiICAgLVIgIGRpc3BsYXkgYWxsIG1lYXN1cmVtZW50cyBpbiByYXcgZm9ybWF0 XG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZy LUZSICAiICAgLVJcbiINCi0jc3RyaW5nIFNUUl9EUF9IRUxQX1RSQUNFICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgICIgICAtVCAgZGlzcGxheSBUcmFjZSBtZWFzdXJlbWVudHMgb25seVxu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1G UiAgIiAgIC1UXG4iDQotI3N0cmluZyBTVFJfRFBfSEVMUF9QUk9GSUxFICAgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICAiICAgLVAgIGRpc3BsYXkgUHJvZmlsZSBtZWFzdXJlbWVudHMgb25seVxu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1G UiAgIiAgIC1QXG4iDQotI3N0cmluZyBTVFJfRFBfSEVMUF9USFJFU0hPTEQgICAgICAgICAgI2xh bmd1YWdlIGVuLVVTICAiICAgLXQgVkFMVUUgIFNldCBkaXNwbGF5IHRocmVzaG9sZCB0byBWQUxV RSBtaWNyb3NlY29uZHNcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtdCBWQUxVRVxuIg0KLSNzdHJpbmcgU1RSX0RQX0hFTFBf Q09VTlQgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC1uIENPVU5UICBMaW1pdCBk aXNwbGF5IHRvIENPVU5UIGxpbmVzIGluIEFsbCBhbmQgUmF3IG1vZGVzXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiICAgLW4gQ09V TlRcbiINCi0jc3RyaW5nIFNUUl9EUF9IRUxQX0lEICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgICIgICAtaSAgZGlzcGxheSBpZGVudGlmaWVyXG4iDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiICAgLWlcbiINCi0jc3RyaW5n IFNUUl9EUF9IRUxQX0NVTV9EQVRBICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgICAtYyBU T0tFTiAtIERpc3BsYXkgcHJlLWRlZmluZWQgYW5kIGN1c3RvbSBjdW11bGF0aXZlIGRhdGFcclxu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiAgICAgICAgICAgICAgUHJlLWRlZmluZWQgY3VtdWxhdGl2ZSB0b2tlbiBhcmU6XHJcbiIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIgICAgICAgICAgICAgIDEuIExvYWRJbWFnZTpcclxuIg0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgMi4gU3Rh cnRJbWFnZTpcclxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgMy4gREI6U3RhcnQ6XHJcbiINCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAg ICAgICAgIDQuIERCOlN1cHBvcnQ6XHJcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtY1xuIg0KLSNzdHJpbmcgU1RSX0RQX0hF TFBfSEVMUCAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgIC0/ICBkaXNwbGF5IGRw IGhlbHAgaW5mb3JtYXRpb25cbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAtPyAgbW9udHJlciBkcCBhaWRlciBsJ2luZm9ybWF0 aW9uXG4iDQotI3N0cmluZyBTVFJfRFBfVVAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICAiVVAiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xh bmd1YWdlIGZyLUZSICAiVVAiDQotI3N0cmluZyBTVFJfRFBfRE9XTiAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICAiRE9XTiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJET1dOIg0KLSNzdHJpbmcgU1RSX0RQX0RBU0hF UyAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS1cbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZnItRlIgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iDQotI3N0cmluZyBTVFJfRFBfU0VDVElP Tl9IRUFERVIgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG49PVsgJXMgXT09PT09PT09XG4i DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiXG49PVsgJXMgXT09PT09PT09XG4iDQotI3N0cmluZyBTVFJfRFBfSU5WQUxJRF9BUkcgICAg ICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiSW52YWxpZCBhcmd1bWVudChzKVxuIg0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkFyZ3Vt ZW50IGQnaW52YWxpZGUocylcbiINCi0jc3RyaW5nIFNUUl9EUF9IQU5ETEVTX0VSUk9SICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJMb2NhdGUgQWxsIEhhbmRsZXMgZXJyb3IgLSAlclxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAg IkxvY2FsaXNlciBUb3V0ZSBlcnJldXIgZGUgUG9pZ27DqWVzIC0gJXJcbiINCi0jc3RyaW5nIFNU Ul9EUF9FUlJPUl9OQU1FICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJVbmtub3duIERy aXZlciBOYW1lIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5n dWFnZSBmci1GUiAgIlVua25vd24gRHJpdmVyIE5hbWUiDQotI3N0cmluZyBTVFJfUEVSRl9QUk9Q RVJUWV9OT1RfRk9VTkQgICAgI2xhbmd1YWdlIGVuLVVTICAiUGVyZm9ybWFuY2UgcHJvcGVydHkg bm90IGZvdW5kXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xh bmd1YWdlIGZyLUZSICAiUGVyZm9ybWFuY2UgcHJvcGVydHkgbm90IGZvdW5kXG4iDQotI3N0cmlu ZyBTVFJfRFBfQlVJTERfUkVWSVNJT04gICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG5EUCBC dWlsZCBWZXJzaW9uOiAgICAgICAlZC4lZFxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlxuRFAgQ29uc3RydWl0IGxhIFZlcnNpb246 ICAgICAgICAgJWQsJWRcbiINCi0jc3RyaW5nIFNUUl9EUF9LSFogICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICJTeXN0ZW0gUGVyZm9ybWFuY2UgVGltZXIgRnJlcXVlbmN5OiAg ICUsOGQgKEtIeilcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICJTeXN0ZW0gUGVyZm9ybWFuY2UgVGltZXIgRnJlcXVlbmN5OiAgICUs OGQgKEtIeilcbiINCi0jc3RyaW5nIFNUUl9EUF9USU1FUl9QUk9QRVJUSUVTICAgICAgICAjbGFu Z3VhZ2UgZW4tVVMgICJTeXN0ZW0gUGVyZm9ybWFuY2UgVGltZXIgY291bnRzICVzIGZyb20gMHgl THggdG8gMHglTHhcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICJTeXN0ZW0gUGVyZm9ybWFuY2UgVGltZXIgY291bnRzICVzIGZyb20g MHglTHggdG8gMHglTHhcbiINCi0jc3RyaW5nIFNUUl9EUF9WRVJCT1NFX1RIUkVTSE9MRCAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICJNZWFzdXJlbWVudHMgbGVzcyB0aGFuICUsTGQgbWljcm9zZWNv bmRzIGFyZSBub3QgZGlzcGxheWVkLlxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIk1lYXN1cmVtZW50cyBsZXNzIHRoYW4gJSxMZCBt aWNyb3NlY29uZHMgYXJlIG5vdCBkaXNwbGF5ZWQuXG4iDQotI3N0cmluZyBTVFJfRFBfU0VDVElP Tl9QSEFTRVMgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiTWFqb3IgUGhhc2VzIg0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIk1ham9y IFBoYXNlcyINCi0jc3RyaW5nIFNUUl9EUF9TRUNfUEhBU0UgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgICIgIFNFQyBQaGFzZSBEdXJhdGlvbjogICAgICAlTDhkICh1cylcbiINCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgIFNF QyBQaGFzZSBEdXJhdGlvbjogICAgICAlTDhkICh1cylcbiINCi0jc3RyaW5nIFNUUl9EUF9QSEFT RV9CRFNUTyAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgICAgICAgICBCRFMgVGltZW91 dDogICAlTDhkIChtcykgaW5jbHVkZWQgaW4gQkRTIER1cmF0aW9uXG4iDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiICAgICAgICAgQkRT IFRpbWVvdXQ6ICAgJUw4ZCAobXMpIGluY2x1ZGVkIGluIEJEUyBEdXJhdGlvblxuIg0KLSNzdHJp bmcgU1RSX0RQX1BIQVNFX0RVUkFUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiU1YSBQ aGFzZSBEdXJhdGlvbjogICAlTDhkIChtcylcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWEgUGhhc2UgRHVyYXRpb246ICAgJUw4 ZCAobXMpXG4iDQotI3N0cmluZyBTVFJfRFBfVE9UQUxfRFVSQVRJT04gICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiVG90YWwgICAgICAgRHVyYXRpb246ICAgJUw4ZCAobXMpXG4iDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiVG90YWwg ICAgICAgRHVyYXRpb246ICAgJUw4ZCAobXMpXG4iDQotI3N0cmluZyBTVFJfRFBfU0VDVElPTl9E UklWRVJTICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiRHJpdmVycyBieSBIYW5kbGUiDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiRHJp dmVycyBieSBIYW5kbGUiDQotI3N0cmluZyBTVFJfRFBfSEFORExFX1NFQ1RJT04gICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICAiSW5kZXg6ICBIYW5kbGUgICAgICAgICAgICAgICAgRHJpdmVyIE5h bWUgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICBUaW1lKHVzKVxuIg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4OiAgUG9p Z27DqWUgICAgICAgICAgICAgICAgIE5vbShHVUlEKSAgICAgICAgICAgICAgIERlc2NyaXB0aW9u ICAgVGVtcHModXMpXG4iDQotI3N0cmluZyBTVFJfRFBfSEFORExFX1ZBUlMgICAgICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICAiJTVkOiAgWyUzeF0gICAlMzZzICAgICUxMXMgICAgJUw4ZFxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAg IiU1ZDogIFslM3hdICAgJTM2cyAgICAlMTFzICAgICVMOGRcbiINCi0jc3RyaW5nIFNUUl9EUF9I QU5ETEVfU0VDVElPTjIgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJJbmRleDogSGFuZGxlICAg ICAgICAgICAgICAgRHJpdmVyIE5hbWUgICAgICAgICAgICAgRGVzY3JpcHRpb24gIFRpbWUodXMp ICAgIElEXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGZyLUZSICAiSW5kZXg6IFBvaWduw6llICAgICAgICAgICAgICAgIE5vbShHVUlEKSAgICAg ICAgICAgICBEZXNjcmlwdGlvbiBUZW1wcyh1cykgICAgSURcbiINCi0jc3RyaW5nIFNUUl9EUF9I QU5ETEVfVkFSUzIgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWQ6IFslM3hdICAlMzZz ICAlMTFzICAlTDhkICU1ZFxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBmci1GUiAgIiU1ZDogWyUzeF0gICUzNnMgICUxMXMgICVMOGQgJTVkXG4i DQotI3N0cmluZyBTVFJfRFBfU0VDVElPTl9QRUlNUyAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICAiUEVJTXMiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1 YWdlIGZyLUZSICAiUEVJTXMiDQotI3N0cmluZyBTVFJfRFBfUEVJTV9TRUNUSU9OICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICAiSW5kZXg6ICBQb2ludGVyIFZhbHVlICAgICAgICAgICAgICBJ bnN0YW5jZSBHVUlEICAgICAgICAgICAgICBUb2tlbiAgICBUaW1lKHVzKVxuIg0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4OiAg UG9pbnRlciBWYWx1ZSAgICAgICAgICAgICAgSW5zdGFuY2UgR1VJRCAgICAgICAgICAgICAgVG9r ZW4gICBUZW1wcyh1cylcbiINCi0jc3RyaW5nIFNUUl9EUF9QRUlNX1ZBUlMgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWQ6ICAweCUxMXAgICAlZyAgIFBFSU0gICAgJUw4ZFxuIg0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAg IiU1ZDogIDB4JTExcCAgICVnICAgUEVJTSAgICAlTDhkXG4iDQotI3N0cmluZyBTVFJfRFBfUEVJ TV9TRUNUSU9OMiAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiSW5kZXg6IFBvaW50ZXIgVmFs dWUgICAgICAgICAgICAgSW5zdGFuY2UgR1VJRCAgICAgICAgICAgIFRva2VuICBUaW1lKHVzKSAg ICBJRFxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFn ZSBmci1GUiAgIkluZGV4OiBQb2ludGVyIFZhbHVlICAgICAgICAgICAgIEluc3RhbmNlIEdVSUQg ICAgICAgICAgICBUb2tlbiBUZW1wcyh1cykgICAgSURcbiINCi0jc3RyaW5nIFNUUl9EUF9QRUlN X1ZBUlMyICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlNWQ6IDB4JTExcCAgJWcgUEVJ TSAgJUw4ZCAlNWRcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICIlNWQ6IDB4JTExcCAgJWcgUEVJTSAgJUw4ZCAlNWRcbiINCi0jc3Ry aW5nIFNUUl9EUF9TRUNUSU9OX0dFTkVSQUwgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJHZW5l cmFsIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBm ci1GUiAgIkdlbmVyYWwiDQotI3N0cmluZyBTVFJfRFBfR0xPQkFMX1NFQ1RJT04gICAgICAgICAg I2xhbmd1YWdlIGVuLVVTICAiSW5kZXggICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAg ICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICBUaW1lKHVzKVxuIg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIkluZGV4ICAgICAg ICAgICAgICAgICAgICAgICBOb20gICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24g ICBUZW1wcyh1cylcbiINCi0jc3RyaW5nIFNUUl9EUF9HTE9CQUxfVkFSUyAgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgICIlNWQ6JTI1cyAgICAgJTMxcyAgICAlTDhkXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiUyNXMg ICAgICUzMXMgICAgJUw4ZFxuIg0KLSNzdHJpbmcgU1RSX0RQX0dMT0JBTF9TRUNUSU9OMiAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAgIkluZGV4ICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAg ICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgVGltZSh1cykgICAgSURcbiINCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJJbmRleCAg ICAgICAgICAgICAgICAgICAgICAgTm9tICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24g VGVtcHModXMpICAgIElEXG4iDQotI3N0cmluZyBTVFJfRFBfR0xPQkFMX1ZBUlMyICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICAiJTVkOiUyNXMgJTMxcyAgJUw4ZCAlNWRcbiINCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6JTI1 cyAlMzFzICAlTDhkICU1ZFxuIg0KLSNzdHJpbmcgU1RSX0RQX1NFQ1RJT05fQ1VNVUxBVElWRSAg ICAgICNsYW5ndWFnZSBlbi1VUyAgIkN1bXVsYXRpdmUiDQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiQ3VtdWxhdGl2ZSINCi0jc3RyaW5n IFNUUl9EUF9DVU1VTEFUSVZFX1NFQ1RfMSAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIoVGltZXMg aW4gbWljcm9zZWMuKSAgICAgQ3VtdWxhdGl2ZSAgIEF2ZXJhZ2UgICAgIFNob3J0ZXN0ICAgIExv bmdlc3RcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICIoVGltZXMgaW4gbWljcm9zZWMuKSAgICAgQ3VtdWxhdGl2ZSAgIEF2ZXJhZ2Ug ICAgIFNob3J0ZXN0ICAgIExvbmdlc3RcbiINCi0jc3RyaW5nIFNUUl9EUF9DVU1VTEFUSVZFX1NF Q1RfMiAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgICBOYW1lICAgICAgICAgQ291bnQgICAgIER1 cmF0aW9uICAgIER1cmF0aW9uICAgIER1cmF0aW9uICAgIER1cmF0aW9uXG4iDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiICAgTmFtZSAg ICAgICAgIENvdW50ICAgICBEdXJhdGlvbiAgICBEdXJhdGlvbiAgICBEdXJhdGlvbiAgICBEdXJh dGlvblxuIg0KLSNzdHJpbmcgU1RSX0RQX0NVTVVMQVRJVkVfU1RBVFMgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAgIiUxMWEgICAlOGQgICVMMTBkICAlTDEwZCAgJUwxMGQgICVMMTBkXG4iDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTEx YSAgICU4ZCAgJUwxMGQgICVMMTBkICAlTDEwZCAgJUwxMGRcbiINCi0jc3RyaW5nIFNUUl9EUF9T RUNUSU9OX1NUQVRJU1RJQ1MgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJTdGF0aXN0aWNzIg0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlN0 YXRpc3RpY3MiDQotI3N0cmluZyBTVFJfRFBfU1RBVFNfTlVNVFJBQ0UgICAgICAgICAgI2xhbmd1 YWdlIGVuLVVTICAiVGhlcmUgd2VyZSAlZCBtZWFzdXJlbWVudHMgdGFrZW4sIG9mIHdoaWNoOlxu Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1G UiAgIlRoZXJlIHdlcmUgJWQgbWVhc3VyZW1lbnRzIHRha2VuLCBvZiB3aGljaDpcbiINCi0jc3Ry aW5nIFNUUl9EUF9TVEFUU19OVU1JTkNPTVBMRVRFICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIlLDhk IGFyZSBpbmNvbXBsZXRlLlxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBmci1GUiAgIiUsOGQgYXJlIGluY29tcGxldGUuXG4iDQotI3N0cmluZyBT VFJfRFBfU1RBVFNfTlVNUEhBU0VTICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUg bWFqb3IgZXhlY3V0aW9uIHBoYXNlcy5cbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlLDhkIGFyZSBtYWpvciBleGVjdXRpb24gcGhh c2VzLlxuIg0KLSNzdHJpbmcgU1RSX0RQX1NUQVRTX05VTUhBTkRMRVMgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAgIiUsOGQgaGF2ZSBub24tTlVMTCBoYW5kbGVzLCAlZCBhcmUgTlVMTC5cbiINCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIl LDhkIGhhdmUgbm9uLU5VTEwgaGFuZGxlcywgJWQgYXJlIE5VTEwuXG4iDQotI3N0cmluZyBTVFJf RFBfU1RBVFNfTlVNUEVJTVMgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUgUEVJ TXMuXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdl IGZyLUZSICAiJSw4ZCBhcmUgUEVJTXMuXG4iDQotI3N0cmluZyBTVFJfRFBfU1RBVFNfTlVNR0xP QkFMUyAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUgZ2VuZXJhbCBtZWFzdXJlbWVu dHMuXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdl IGZyLUZSICAiJSw4ZCBhcmUgZ2VuZXJhbCBtZWFzdXJlbWVudHMuXG4iDQotI3N0cmluZyBTVFJf RFBfU1RBVFNfTlVNUFJPRklMRSAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJSw4ZCBhcmUgcHJv ZmlsaW5nIHJlY29yZHMuXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiJSw4ZCBhcmUgcHJvZmlsaW5nIHJlY29yZHMuXG4iDQotI3N0 cmluZyBTVFJfRFBfU0VDVElPTl9QUk9GSUxFICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiU2Vx dWVudGlhbCBQcm9maWxlIFJlY29yZHMiDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiU2VxdWVudGlhbCBQcm9maWxlIFJlY29yZHMiDQot I3N0cmluZyBTVFJfRFBfU0VDVElPTl9BTEwgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAi U2VxdWVudGlhbCBUcmFjZSBSZWNvcmRzIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlNlcXVlbnRpYWwgVHJhY2UgUmVjb3JkcyINCi0j c3RyaW5nIFNUUl9EUF9BTExfSEVBRFIgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJc bkluZGV4ICAgICAgSGFuZGxlICAgICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgICAg ICAgICAgVG9rZW4gICAgVGltZSh1cylcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICJcbkluZGV4ICAgICAgSGFuZGxlICAgICAgICAg ICAgICAgICBNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gICBUZW1wcyh1cylcbiIN Ci0jc3RyaW5nIFNUUl9EUF9BTExfVkFSUyAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg ICIlNWQ6JTNzMHglMDhwICUzNnMgJTEzcyAlTDhkXG4iDQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiJTVkOiUzczB4JTA4cCAlMzZzICUx M3MgJUw4ZFxuIg0KLSNzdHJpbmcgU1RSX0RQX0FMTF9EQVNIRVMyICAgICAgICAgICAgICNsYW5n dWFnZSBlbi1VUyAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiINCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tXG4iDQotI3N0cmluZyBTVFJfRFBfQUxMX0hFQURSMiAgICAgICAg ICAgICAgI2xhbmd1YWdlIGVuLVVTICAiXG5JbmRleCAgICAgIEhhbmRsZSAgICAgICAgICAgICAg ICAgTW9kdWxlICAgICAgICAgICAgICAgICAgICAgIFRva2VuICAgIFRpbWUodXMpICAgIElEXG4i DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZS ICAiXG5JbmRleCAgICAgIEhhbmRsZSAgICAgICAgICAgICAgICAgTW9kdWxlICAgICAgICAgICAg ICAgICAgICAgIFRva2VuICAgVGVtcHModXMpICAgIElEXG4iDQotI3N0cmluZyBTVFJfRFBfQUxM X1ZBUlMyICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJTVkOiUzczB4JTA4cCAlMzZz ICUxM3MgJUw4ZCAlNWRcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6JTNzMHglMDhwICUzNnMgJTEzcyAlTDhkICU1ZFxuIg0K LSNzdHJpbmcgU1RSX0RQX1NFQ1RJT05fUkFXVFJBQ0UgICAgICAgICNsYW5ndWFnZSBlbi1VUyAg IlJBVyBUcmFjZSINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZnItRlIgICJSQVcgVHJhY2UiDQotI3N0cmluZyBTVFJfRFBfU0VDVElPTl9SQVdQUk9G SUxFICAgICAgI2xhbmd1YWdlIGVuLVVTICAiUkFXIFByb2ZpbGUiDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiUkFXIFByb2ZpbGUiDQot I3N0cmluZyBTVFJfRFBfUkFXX0RBU0hFUyAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAi LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2xh bmd1YWdlIGZyLUZSICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iDQotI3N0cmluZyBTVFJfRFBfUkFXX1ZBUlMgICAg ICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJTVkOiAlMTZMWCAlMTZMWCAlMTZMWCAgJTMx YSAgJTMxYVxuIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5n dWFnZSBmci1GUiAgIiU1ZDogJTE2TFggJTE2TFggJTE2TFggICUzMWEgICUzMWFcbiINCi0jc3Ry aW5nIFNUUl9EUF9SQVdfSEVBRFIgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICJcbklu ZGV4ICAgICAgIEhhbmRsZSAgICAgICAgU3RhcnQgQ291bnQgICAgICAgRW5kIENvdW50ICAgICAg ICAgICAgICAgICAgVG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZVxuIg0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBmci1GUiAgIlxu SW5kZXggICAgICAgSGFuZGxlICAgICAgICBTdGFydCBDb3VudCAgICAgICBFbmQgQ291bnQgICAg ICAgICAgICAgICAgICBUb2tlbiAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlXG4iDQot I3N0cmluZyBTVFJfRFBfUkFXX0RBU0hFUzIgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAi LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tXG4iDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgI2xhbmd1YWdlIGZyLUZSICAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iDQotI3N0cmluZyBTVFJfRFBf UkFXX1ZBUlMyICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiJTVkOiAlMTZMWCAlMTZM WCAlMTZMWCAgJTMxYSAgJTMxYSAlNWRcbiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIlNWQ6ICUxNkxYICUxNkxYICUxNkxYICAlMzFh ICAlMzFhICU1ZFxuIg0KLSNzdHJpbmcgU1RSX0RQX1JBV19IRUFEUjIgICAgICAgICAgICAgICNs YW5ndWFnZSBlbi1VUyAgIlxuSW5kZXggICAgICAgSGFuZGxlICAgICAgICBTdGFydCBDb3VudCAg ICAgICBFbmQgQ291bnQgICAgICAgICAgICAgICAgICBUb2tlbiAgICAgICAgICAgICAgICAgICAg ICAgICAgTW9kdWxlICAgICAgICAgICAgICAgICAgIElEXG4iDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiXG5JbmRleCAgICAgICBIYW5k bGUgICAgICAgIFN0YXJ0IENvdW50ICAgICAgIEVuZCBDb3VudCAgICAgICAgICAgICAgICAgIFRv a2VuICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGUgICAgICAgICAgICAgICAgICAgSURc biINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fVUEgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4t VVMgICItQSINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZnItRlIgICItQSINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTEEgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgICItYSINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZnItRlIgICItYSINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTE4gICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItbiINCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItbiINCi0jc3RyaW5nIFNUUl9EUF9P UFRJT05fTFQgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItdCINCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItdCINCi0jc3Ry aW5nIFNUUl9EUF9PUFRJT05fVVAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItUCIN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIg ICItUCINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fVVIgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZW4tVVMgICItUiINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZnItRlIgICItUiINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTFMgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZW4tVVMgICItcyINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItcyINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fVVMg ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItUyINCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItUyINCi0jc3RyaW5nIFNUUl9E UF9PUFRJT05fVVQgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItVCINCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItVCINCi0j c3RyaW5nIFNUUl9EUF9PUFRJT05fTFYgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIt diINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnIt RlIgICItdiINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fUUggICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMgICItPyINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj bGFuZ3VhZ2UgZnItRlIgICItPyINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTEggICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItaCINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItaCINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05f VUggICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICItSCINCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICItSCINCi0jc3RyaW5nIFNU Ul9EUF9PUFRJT05fTFggICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIteCINCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIteCIN Ci0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTEkgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMg ICItaSINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZnItRlIgICItaSINCi0jc3RyaW5nIFNUUl9EUF9PUFRJT05fTEMgICAgICAgICAgICAgICAjbGFu Z3VhZ2UgZW4tVVMgICItYyINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjbGFuZ3VhZ2UgZnItRlIgICItYyINCi0jc3RyaW5nIFNUUl9EUF9JTkNPTVBMRVRFICAgICAg ICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgICIgSSAiDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2xhbmd1YWdlIGZyLUZSICAiIEkgIg0KLSNzdHJpbmcgU1RSX0RQX0NP TVBMRVRFICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAgIiAgICINCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZnItRlIgICIgICAiDQotI3N0 cmluZyBTVFJfQUxJVF9VTktOT1dOICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICAiVW5r bm93biINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2Ug ZnItRlIgICJVbmtub3duIg0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0 IGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwVHJhY2UuYyBiL1BlcmZvcm1hbmNlUGtnL0RwX0Fw cC9EcFRyYWNlLmMNCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggOWI0ZTBlZDI4OS4u MDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0RwVHJhY2UuYw0KKysrIC9k ZXYvbnVsbA0KQEAgLTEsODc5ICswLDAgQEANCi0vKiogQGZpbGUNCi0gIFRyYWNlIHJlcG9ydGlu ZyBmb3IgdGhlIERwIHV0aWxpdHkuDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICAoQykgQ29weXJp Z2h0IDIwMTUtMjAxNiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxC Uj4NCi0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQotICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSoqLw0KLQ0KLSNpbmNsdWRlIDxM aWJyYXJ5L0Jhc2VMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQot I2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KLSNpbmNsdWRlIDxMaWJy YXJ5L0RlYnVnTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxl TGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvUGVDb2ZmR2V0RW50cnlQb2ludExpYi5oPg0KLSNp bmNsdWRlIDxMaWJyYXJ5L1BlcmZvcm1hbmNlTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvUHJp bnRMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFy eS9QY2RMaWIuaD4NCi0NCi0jaW5jbHVkZSA8R3VpZC9QZXJmb3JtYW5jZS5oPg0KLQ0KLSNpbmNs dWRlICJEcC5oIg0KLSNpbmNsdWRlICJMaXRlcmFscy5oIg0KLSNpbmNsdWRlICJEcEludGVybmFs LmgiDQotDQotLyoqIA0KLSAgQ29sbGVjdCB2ZXJib3NlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGxv Z2dlZCBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuDQotICANCi0gIEdlbmVyYWwgU3VtbWFyeSBp bmZvcm1hdGlvbiBmb3IgYWxsIFRyYWNlIG1lYXN1cmVtZW50cyBpcyBnYXRoZXJlZCBhbmQNCi0g IHN0b3JlZCB3aXRoaW4gdGhlIFN1bW1hcnlEYXRhIHN0cnVjdHVyZS4gIFRoaXMgaW5mb3JtYXRp b24gaXMgYm90aA0KLSAgdXNlZCBpbnRlcm5hbGx5IGJ5IHN1YnNlcXVlbnQgcmVwb3J0aW5nIGZ1 bmN0aW9ucywgYW5kIGRpc3BsYXllZA0KLSAgYXQgdGhlIGVuZCBvZiB2ZXJib3NlIHJlcG9ydHMu DQotICANCi0gIEBwcmUgIFRoZSBTdW1tYXJ5RGF0YSBhbmQgQ3VtRGF0YSBzdHJ1Y3R1cmVzIG11 c3QgYmUgaW5pdGlhbGl6ZWQNCi0gICAgICAgIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlv bi4NCi0gIA0KLSAgQHBvc3QgVGhlIFN1bW1hcnlEYXRhIGFuZCBDdW1EYXRhIHN0cnVjdHVyZXMg Y29udGFpbiBzdGF0aXN0aWNzIGZvciB0aGUNCi0gICAgICAgIGN1cnJlbnQgcGVyZm9ybWFuY2Ug bG9ncy4NCi0NCi0gIEBwYXJhbVtpbiwgb3V0XSBDdXN0b21DdW11bGF0aXZlRGF0YSAgQSBwb2lu dGVyIHRvIHRoZSBjdW10b20gY3VtdWxhdGl2ZSBkYXRhLg0KLQ0KLSoqLw0KLVZPSUQNCi1HYXRo ZXJTdGF0aXN0aWNzKA0KLSAgSU4gT1VUIFBFUkZfQ1VNX0RBVEEgICAgICAgICAgICAgICpDdXN0 b21DdW11bGF0aXZlRGF0YSBPUFRJT05BTA0KLSAgKQ0KLXsNCi0gIE1FQVNVUkVNRU5UX1JFQ09S RCAgICAgICAgTWVhc3VyZW1lbnQ7DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIER1cmF0 aW9uOw0KLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCi0gIElOVE4g ICAgICAgICAgICAgICAgICAgICAgVEluZGV4Ow0KLQ0KLSAgTG9nRW50cnlLZXkgPSAwOw0KLSAg d2hpbGUgKChMb2dFbnRyeUtleSA9IEdldFBlcmZvcm1hbmNlTWVhc3VyZW1lbnRFeCAoDQotICAg ICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXksDQotICAgICAgICAgICAgICAgICAgICAg ICAgJk1lYXN1cmVtZW50LkhhbmRsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3Vy ZW1lbnQuVG9rZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVs ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuU3RhcnRUaW1lU3RhbXAs DQotICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikpICE9IDApDQot ICB7DQotICAgICsrU3VtbWFyeURhdGEuTnVtVHJhY2U7ICAgICAgICAgICAvLyBDb3VudCB0aGUg bnVtYmVyIG9mIFRSQUNFIE1lYXN1cmVtZW50IHJlY29yZHMNCi0gICAgaWYgKE1lYXN1cmVtZW50 LkVuZFRpbWVTdGFtcCA9PSAwKSB7DQotICAgICAgKytTdW1tYXJ5RGF0YS5OdW1JbmNvbXBsZXRl OyAgICAvLyBDb3VudCB0aGUgaW5jb21wbGV0ZSByZWNvcmRzDQotICAgICAgY29udGludWU7DQot ICAgIH0NCi0NCi0gICAgaWYgKE1lYXN1cmVtZW50LkhhbmRsZSAhPSBOVUxMKSB7DQotICAgICAg KytTdW1tYXJ5RGF0YS5OdW1IYW5kbGVzOyAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIG1l YXN1cmVtZW50cyB3aXRoIG5vbi1OVUxMIGhhbmRsZXMNCi0gICAgfQ0KLQ0KLSAgICBpZiAoSXNQ aGFzZSggJk1lYXN1cmVtZW50KSkgew0KLSAgICAgICsrU3VtbWFyeURhdGEuTnVtU3VtbWFyeTsg ICAgICAgLy8gQ291bnQgdGhlIG51bWJlciBvZiBtYWpvciBwaGFzZXMNCi0gICAgfQ0KLSAgICBl bHNlIHsgIC8vICFJc1BoYXNlKC4uLg0KLSAgICAgIGlmKE1lYXN1cmVtZW50LkhhbmRsZSA9PSBO VUxMKSB7DQotICAgICAgICArK1N1bW1hcnlEYXRhLk51bUdsb2JhbDsNCi0gICAgICB9DQotICAg IH0NCi0NCi0gICAgaWYgKEFzY2lpU3RybkNtcCAoTWVhc3VyZW1lbnQuVG9rZW4sIEFMaXRfUEVJ TSwgUEVSRl9UT0tFTl9MRU5HVEgpID09IDApIHsNCi0gICAgICArK1N1bW1hcnlEYXRhLk51bVBF SU1zOyAgICAgICAgIC8vIENvdW50IFBFSU0gbWVhc3VyZW1lbnRzDQotICAgIH0NCi0NCi0gICAg RHVyYXRpb24gPSBHZXREdXJhdGlvbiAoJk1lYXN1cmVtZW50KTsNCi0gICAgVEluZGV4ID0gR2V0 Q3VtdWxhdGl2ZUl0ZW0gKCZNZWFzdXJlbWVudCk7DQotICAgIGlmIChUSW5kZXggPj0gMCkgew0K LSAgICAgIEN1bURhdGFbVEluZGV4XS5EdXJhdGlvbiArPSBEdXJhdGlvbjsNCi0gICAgICBDdW1E YXRhW1RJbmRleF0uQ291bnQrKzsNCi0gICAgICBpZiAoIER1cmF0aW9uIDwgQ3VtRGF0YVtUSW5k ZXhdLk1pbkR1ciApIHsNCi0gICAgICAgIEN1bURhdGFbVEluZGV4XS5NaW5EdXIgPSBEdXJhdGlv bjsNCi0gICAgICB9DQotICAgICAgaWYgKCBEdXJhdGlvbiA+IEN1bURhdGFbVEluZGV4XS5NYXhE dXIgKSB7DQotICAgICAgICBDdW1EYXRhW1RJbmRleF0uTWF4RHVyID0gRHVyYXRpb247DQotICAg ICAgfQ0KLSAgICB9DQotDQotICAgIC8vDQotICAgIC8vIENvbGxlY3QgdGhlIGRhdGEgZm9yIGN1 c3RvbSBjdW11bGF0aXZlIGRhdGEuDQotICAgIC8vDQotICAgIGlmICgoQ3VzdG9tQ3VtdWxhdGl2 ZURhdGEgIT0gTlVMTCkgJiYgKEFzY2lpU3RyQ21wIChNZWFzdXJlbWVudC5Ub2tlbiwgQ3VzdG9t Q3VtdWxhdGl2ZURhdGEtPk5hbWUpID09IDApKSB7DQotICAgICAgQ3VzdG9tQ3VtdWxhdGl2ZURh dGEtPkR1cmF0aW9uICs9IER1cmF0aW9uOw0KLSAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5D b3VudCsrOw0KLSAgICAgIGlmIChEdXJhdGlvbiA8IEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NaW5E dXIpIHsNCi0gICAgICAgIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NaW5EdXIgPSBEdXJhdGlvbjsN Ci0gICAgICB9DQotICAgICAgaWYgKER1cmF0aW9uID4gQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk1h eER1cikgew0KLSAgICAgICAgQ3VzdG9tQ3VtdWxhdGl2ZURhdGEtPk1heER1ciA9IER1cmF0aW9u Ow0KLSAgICAgIH0NCi0gICAgfQ0KLSAgfQ0KLX0NCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHBy aW50IEFMTCBUcmFjZSBSZWNvcmRzLg0KLSAgDQotICBEaXNwbGF5cyBhbGwgImludGVyZXN0aW5n IiBUcmFjZSBtZWFzdXJlbWVudHMgaW4gb3JkZXIuPEJSPg0KLSAgVGhlIG51bWJlciBvZiByZWNv cmRzIGRpc3BsYXllZCBpcyBjb250cm9sbGVkIGJ5Og0KLSAgICAgLSByZWNvcmRzIHdpdGggYSBk dXJhdGlvbiBsZXNzIHRoYW4gbUludGVyZXN0VGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBhcmUgbm90 IGRpc3BsYXllZC4NCi0gICAgIC0gTm8gbW9yZSB0aGFuIExpbWl0IHJlY29yZHMgYXJlIGRpc3Bs YXllZC4gIEEgTGltaXQgb2YgemVybyB3aWxsIG5vdCBsaW1pdCB0aGUgb3V0cHV0Lg0KLSAgICAg LSBJZiB0aGUgRXhjbHVkZUZsYWcgaXMgVFJVRSwgcmVjb3JkcyBtYXRjaGluZyBlbnRyaWVzIGlu IHRoZSBDdW1EYXRhIGFycmF5IGFyZSBub3QNCi0gICAgICAgZGlzcGxheWVkLg0KLSAgDQotICBA cHJlICAgIFRoZSBtSW50ZXJlc3RUaHJlc2hvbGQgZ2xvYmFsIHZhcmlhYmxlIGlzIHNldCB0byB0 aGUgc2hvcnRlc3QgZHVyYXRpb24gdG8gYmUgcHJpbnRlZC4NCi0gICAgICAgICAgIFRoZSBtR2F1 Z2VTdHJpbmcgYW5kIG1Vbmljb2RlVG9rZW4gZ2xvYmFsIGFycmF5cyBhcmUgdXNlZCBmb3IgdGVt cG9yYXJ5IHN0cmluZyBzdG9yYWdlLg0KLSAgICAgICAgICAgVGhleSBtdXN0IG5vdCBiZSBpbiB1 c2UgYnkgYSBjYWxsaW5nIGZ1bmN0aW9uLg0KLSAgDQotICBAcGFyYW1baW5dICAgIExpbWl0ICAg ICAgIFRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBwcmludC4gIFplcm8gaXMgQUxMLg0KLSAgQHBh cmFtW2luXSAgICBFeGNsdWRlRmxhZyBUUlVFIHRvIGV4Y2x1ZGUgaW5kaXZpZHVhbCBDdW11bGF0 aXZlIGl0ZW1zIGZyb20gZGlzcGxheS4NCi0gIA0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4NCi0gIEByZXR2YWwgRUZJX0FCT1JU RUQgICAgICAgICAgIFRoZSB1c2VyIGFib3J0cyB0aGUgb3BlcmF0aW9uLg0KLSAgQHJldHVybiBP dGhlcnMgICAgICAgICAgICAgICAgZnJvbSBhIGNhbGwgdG8gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZm ZXIoKS4NCi0qKi8NCi1FRklfU1RBVFVTDQotRHVtcEFsbFRyYWNlKA0KLSAgSU4gVUlOVE4gICAg ICAgICAgICAgTGltaXQsDQotICBJTiBCT09MRUFOICAgICAgICAgICBFeGNsdWRlRmxhZw0KLSAg KQ0KLXsNCi0gIE1FQVNVUkVNRU5UX1JFQ09SRCAgICAgICAgTWVhc3VyZW1lbnQ7DQotICBVSU5U NjQgICAgICAgICAgICAgICAgICAgIEVsYXBzZWRUaW1lOw0KLSAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICBEdXJhdGlvbjsNCi0gIGNvbnN0IENIQVIxNiAgICAgICAgICAgICAgKkluY0ZsYWc7 DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIExvZ0VudHJ5S2V5Ow0KLSAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBDb3VudDsNCi0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5k ZXg7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFRJbmRleDsNCi0NCi0gIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCi0gIFVJTlROICAgICAgICAgICAgICAg ICAgICAgSGFuZGxlQ291bnQ7DQotICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsN Ci0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsNCi0NCi0gIFN0 cmluZ1B0clVua25vd24gPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAo U1RSX0FMSVRfVU5LTk9XTiksIE5VTEwpOyAgDQotICBJbmNGbGFnID0gSGlpR2V0U3RyaW5nIChn SGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TRUNUSU9OX0FMTCksIE5VTEwpOw0KLSAg UHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9IRUFERVIpLA0KLSAgICAg ICAgICAgICAgKEluY0ZsYWcgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duIDogSW5jRmxhZyk7 DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQotDQotICAvLyBHZXQgSGFuZGxlIGlu Zm9ybWF0aW9uDQotICAvLw0KLSAgU3RhdHVzICA9IGdCUy0+TG9jYXRlSGFuZGxlQnVmZmVyIChB bGxIYW5kbGVzLCBOVUxMLCBOVUxMLCAmSGFuZGxlQ291bnQsICZIYW5kbGVCdWZmZXIpOw0KLSAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4g KFNUUl9EUF9IQU5ETEVTX0VSUk9SKSwgU3RhdHVzKTsNCi0gIH0NCi0gIGVsc2Ugew0KLSAgICAv LyBXZSBoYXZlIHN1Y2Nlc3NmdWxseSBwb3B1bGF0ZWQgdGhlIEhhbmRsZUJ1ZmZlcg0KLSAgICAv LyBEaXNwbGF5IEFMTCBNZWFzdXJlbWVudCBSZWNvcmRzDQotICAgIC8vICAgIFVwIHRvIExpbWl0 IGxpbmVzIGRpc3BsYXllZA0KLSAgICAvLyAgICBEaXNwbGF5IG9ubHkgcmVjb3JkcyB3aXRoIEVs YXBzZWQgdGltZXMgPj0gbUludGVyZXN0VGhyZXNob2xkDQotICAgIC8vICAgIERpc3BsYXkgZHJp dmVyIG5hbWVzIGluIE1vZHVsZSBmaWVsZCBmb3IgcmVjb3JkcyB3aXRoIEhhbmRsZXMuDQotICAg IC8vDQotICAgIGlmIChtU2hvd0lkKSB7DQotICAgICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VO IChTVFJfRFBfQUxMX0hFQURSMikgKTsNCi0gICAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4g KFNUUl9EUF9BTExfREFTSEVTMikgKTsNCi0gICAgfSBlbHNlIHsNCi0gICAgICBQcmludFRva2Vu IChTVFJJTkdfVE9LRU4gKFNUUl9EUF9BTExfSEVBRFIpICk7DQotICAgICAgUHJpbnRUb2tlbiAo U1RSSU5HX1RPS0VOIChTVFJfRFBfREFTSEVTKSApOw0KLSAgICB9DQotDQotICAgIExvZ0VudHJ5 S2V5ID0gMDsNCi0gICAgQ291bnQgPSAwOw0KLSAgICBJbmRleCA9IDA7DQotICAgIHdoaWxlICgg V0lUSElOX0xJTUlUKENvdW50LCBMaW1pdCkgJiYNCi0gICAgICAgICAgICAoKExvZ0VudHJ5S2V5 ID0gR2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVudEV4ICgNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgTG9nRW50cnlLZXksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJl bWVudC5IYW5kbGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5U b2tlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVsZSwN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1w LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuRW5kVGltZVN0YW1w LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikp ICE9IDApDQotICAgICAgICAgICkNCi0gICAgew0KLSAgICAgICsrSW5kZXg7ICAgIC8vIENvdW50 IGV2ZXJ5IHJlY29yZC4gIEZpcnN0IHJlY29yZCBpcyAxLg0KLSAgICAgIEVsYXBzZWRUaW1lID0g MDsNCi0gICAgICBTYWZlRnJlZVBvb2wgKChWT0lEICopIEluY0ZsYWcpOw0KLSAgICAgIGlmIChN ZWFzdXJlbWVudC5FbmRUaW1lU3RhbXAgIT0gMCkgew0KLSAgICAgICAgRHVyYXRpb24gPSBHZXRE dXJhdGlvbiAoJk1lYXN1cmVtZW50KTsNCi0gICAgICAgIEVsYXBzZWRUaW1lID0gRHVyYXRpb25J bk1pY3JvU2Vjb25kcyAoIER1cmF0aW9uICk7DQotICAgICAgICBJbmNGbGFnID0gSGlpR2V0U3Ry aW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9DT01QTEVURSksIE5VTEwpOw0K LSAgICAgIH0NCi0gICAgICBlbHNlIHsNCi0gICAgICAgIEluY0ZsYWcgPSBIaWlHZXRTdHJpbmcg KGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX0lOQ09NUExFVEUpLCBOVUxMKTsgIC8v IE1hcmsgaW5jb21wbGV0ZSByZWNvcmRzDQotICAgICAgfQ0KLSAgICAgIGlmICgoKE1lYXN1cmVt ZW50LkVuZFRpbWVTdGFtcCAhPSAwKSAmJiAoRWxhcHNlZFRpbWUgPCBtSW50ZXJlc3RUaHJlc2hv bGQpKSB8fA0KLSAgICAgICAgICAoKEV4Y2x1ZGVGbGFnKSAmJiAoR2V0Q3VtdWxhdGl2ZUl0ZW0o Jk1lYXN1cmVtZW50KSA+PSAwKSkNCi0gICAgICAgICApIHsgICAgICAvLyBJZ25vcmUgInVuaW50 ZXJlc3RpbmciIG9yIGV4Y2x1ZGVkIHJlY29yZHMNCi0gICAgICAgIGNvbnRpbnVlOw0KLSAgICAg IH0NCi0gICAgICArK0NvdW50OyAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHJlY29yZHMgcHJp bnRlZA0KLQ0KLSAgICAgIC8vIElmIEhhbmRsZSBpcyBub24temVybywgc2VlIGlmIHdlIGNhbiBk ZXRlcm1pbmUgYSBuYW1lIGZvciB0aGUgZHJpdmVyDQotICAgICAgQXNjaWlTdHJUb1VuaWNvZGVT dHJTIChNZWFzdXJlbWVudC5Nb2R1bGUsIG1HYXVnZVN0cmluZywgQVJSQVlfU0laRSAobUdhdWdl U3RyaW5nKSk7IC8vIFVzZSBNb2R1bGUgYnkgZGVmYXVsdA0KLSAgICAgIEFzY2lpU3RyVG9Vbmlj b2RlU3RyUyAoTWVhc3VyZW1lbnQuVG9rZW4sIG1Vbmljb2RlVG9rZW4sIEFSUkFZX1NJWkUgKG1V bmljb2RlVG9rZW4pKTsNCi0gICAgICBpZiAoTWVhc3VyZW1lbnQuSGFuZGxlICE9IE5VTEwpIHsN Ci0gICAgICAgIC8vIFNlZSBpZiB0aGUgSGFuZGxlIGlzIGluIHRoZSBIYW5kbGVCdWZmZXINCi0g ICAgICAgIGZvciAoVEluZGV4ID0gMDsgVEluZGV4IDwgSGFuZGxlQ291bnQ7IFRJbmRleCsrKSB7 DQotICAgICAgICAgIGlmIChNZWFzdXJlbWVudC5IYW5kbGUgPT0gSGFuZGxlQnVmZmVyW1RJbmRl eF0pIHsNCi0gICAgICAgICAgICBHZXROYW1lRnJvbUhhbmRsZSAoSGFuZGxlQnVmZmVyW1RJbmRl eF0pOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICB9DQotICAgICAgICB9DQotICAg ICAgfQ0KLQ0KLSAgICAgIGlmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBBTGl0 X1BFSU0sIFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSB7DQotICAgICAgICBVbmljb2RlU1ByaW50 IChtR2F1Z2VTdHJpbmcsIHNpemVvZiAobUdhdWdlU3RyaW5nKSwgTCIlZyIsIE1lYXN1cmVtZW50 LkhhbmRsZSk7DQotICAgICAgfQ0KLQ0KLSAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVu dCBzdHJpbmdzIGFyZSBub3QgdG9vIGxvbmcuDQotICAgICAgbUdhdWdlU3RyaW5nW0RQX0dBVUdF X1NUUklOR19MRU5HVEhdID0gMDsNCi0gICAgICBtVW5pY29kZVRva2VuWzEzXSA9IDA7DQotDQot ICAgICAgaWYgKG1TaG93SWQpIHsNCi0gICAgICAgIFByaW50VG9rZW4oIFNUUklOR19UT0tFTiAo U1RSX0RQX0FMTF9WQVJTMiksDQotICAgICAgICAgIEluZGV4LCAgICAgIC8vIDEgYmFzZWQsIFdo aWNoIG1lYXN1cmVtZW50IHJlY29yZCBpcyBiZWluZyBwcmludGVkDQotICAgICAgICAgIEluY0Zs YWcsDQotICAgICAgICAgIE1lYXN1cmVtZW50LkhhbmRsZSwNCi0gICAgICAgICAgbUdhdWdlU3Ry aW5nLA0KLSAgICAgICAgICBtVW5pY29kZVRva2VuLA0KLSAgICAgICAgICBFbGFwc2VkVGltZSwN Ci0gICAgICAgICAgTWVhc3VyZW1lbnQuSWRlbnRpZmllcg0KLSAgICAgICAgKTsNCi0gICAgICB9 IGVsc2Ugew0KLSAgICAgICAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfQUxMX1ZB UlMpLA0KLSAgICAgICAgICBJbmRleCwgICAgICAvLyAxIGJhc2VkLCBXaGljaCBtZWFzdXJlbWVu dCByZWNvcmQgaXMgYmVpbmcgcHJpbnRlZA0KLSAgICAgICAgICBJbmNGbGFnLA0KLSAgICAgICAg ICBNZWFzdXJlbWVudC5IYW5kbGUsDQotICAgICAgICAgIG1HYXVnZVN0cmluZywNCi0gICAgICAg ICAgbVVuaWNvZGVUb2tlbiwNCi0gICAgICAgICAgRWxhcHNlZFRpbWUNCi0gICAgICAgICk7DQot ICAgICAgfQ0KLSAgICAgIGlmIChTaGVsbEdldEV4ZWN1dGlvbkJyZWFrRmxhZyAoKSkgew0KLSAg ICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQotICAgICAgICBicmVhazsNCi0gICAgICB9DQot ICAgIH0NCi0gIH0NCi0gIGlmIChIYW5kbGVCdWZmZXIgIT0gTlVMTCkgew0KLSAgICBGcmVlUG9v bCAoSGFuZGxlQnVmZmVyKTsNCi0gIH0NCi0gIFNhZmVGcmVlUG9vbCAoKFZPSUQgKikgSW5jRmxh Zyk7DQotICByZXR1cm4gU3RhdHVzOw0KLX0NCi0NCi0vKiogDQotICBHYXRoZXIgYW5kIHByaW50 IFJhdyBUcmFjZSBSZWNvcmRzLg0KLSAgDQotICBBbGwgVHJhY2UgbWVhc3VyZW1lbnRzIHdpdGgg YSBkdXJhdGlvbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8NCi0gIG1JbnRlcmVzdFRocmVzaG9s ZCBhcmUgcHJpbnRlZCB3aXRob3V0IGludGVycHJldGF0aW9uLg0KLSAgDQotICBUaGUgbnVtYmVy IG9mIHJlY29yZHMgZGlzcGxheWVkIGlzIGNvbnRyb2xsZWQgYnk6DQotICAgICAtIHJlY29yZHMg d2l0aCBhIGR1cmF0aW9uIGxlc3MgdGhhbiBtSW50ZXJlc3RUaHJlc2hvbGQgbWljcm9zZWNvbmRz IGFyZSBub3QgZGlzcGxheWVkLg0KLSAgICAgLSBObyBtb3JlIHRoYW4gTGltaXQgcmVjb3JkcyBh cmUgZGlzcGxheWVkLiAgQSBMaW1pdCBvZiB6ZXJvIHdpbGwgbm90IGxpbWl0IHRoZSBvdXRwdXQu DQotICAgICAtIElmIHRoZSBFeGNsdWRlRmxhZyBpcyBUUlVFLCByZWNvcmRzIG1hdGNoaW5nIGVu dHJpZXMgaW4gdGhlIEN1bURhdGEgYXJyYXkgYXJlIG5vdA0KLSAgICAgICBkaXNwbGF5ZWQuDQot ICANCi0gIEBwcmUgICAgVGhlIG1JbnRlcmVzdFRocmVzaG9sZCBnbG9iYWwgdmFyaWFibGUgaXMg c2V0IHRvIHRoZSBzaG9ydGVzdCBkdXJhdGlvbiB0byBiZSBwcmludGVkLg0KLSAgDQotICBAcGFy YW1baW5dICAgIExpbWl0ICAgICAgIFRoZSBudW1iZXIgb2YgcmVjb3JkcyB0byBwcmludC4gIFpl cm8gaXMgQUxMLg0KLSAgQHBhcmFtW2luXSAgICBFeGNsdWRlRmxhZyBUUlVFIHRvIGV4Y2x1ZGUg aW5kaXZpZHVhbCBDdW11bGF0aXZlIGl0ZW1zIGZyb20gZGlzcGxheS4NCi0NCi0gIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuDQotICBA cmV0dmFsIEVGSV9BQk9SVEVEICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlv bi4NCi0qKi8NCi1FRklfU1RBVFVTDQotRHVtcFJhd1RyYWNlKA0KLSAgSU4gVUlOVE4gICAgICAg ICAgTGltaXQsDQotICBJTiBCT09MRUFOICAgICAgICBFeGNsdWRlRmxhZw0KLSAgKQ0KLXsNCi0g IE1FQVNVUkVNRU5UX1JFQ09SRCAgICAgICAgTWVhc3VyZW1lbnQ7DQotICBVSU5UNjQgICAgICAg ICAgICAgICAgICAgIEVsYXBzZWRUaW1lOw0KLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBE dXJhdGlvbjsNCi0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXk7DQotICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIENvdW50Ow0KLSAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBJbmRleDsNCi0NCi0gIEVGSV9TVFJJTkcgICAgU3RyaW5nUHRyOw0KLSAgRUZJX1NUUklO RyAgICBTdHJpbmdQdHJVbmtub3duOw0KLSAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQotDQotICBT dGF0dXMgPSBFRklfU1VDQ0VTUzsNCi0NCi0gIFN0cmluZ1B0clVua25vd24gPSBIaWlHZXRTdHJp bmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0FMSVRfVU5LTk9XTiksIE5VTEwpOyAg DQotICBTdHJpbmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAo U1RSX0RQX1NFQ1RJT05fUkFXVFJBQ0UpLCBOVUxMKTsNCi0gIFByaW50VG9rZW4oIFNUUklOR19U T0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCi0gICAgICAgICAgICAgIChTdHJpbmdQdHIg PT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duIDogU3RyaW5nUHRyKTsNCi0gIEZyZWVQb29sIChT dHJpbmdQdHIpOw0KLSAgRnJlZVBvb2wgKFN0cmluZ1B0clVua25vd24pOw0KLQ0KLSAgaWYgKG1T aG93SWQpIHsNCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUkFXX0hFQURS MikgKTsNCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUkFXX0RBU0hFUzIp ICk7DQotICB9IGVsc2Ugew0KLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9S QVdfSEVBRFIpICk7DQotICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX1JBV19E QVNIRVMpICk7DQotICB9DQotDQotICBMb2dFbnRyeUtleSA9IDA7DQotICBDb3VudCA9IDA7DQot ICBJbmRleCA9IDA7DQotICB3aGlsZSAoIFdJVEhJTl9MSU1JVChDb3VudCwgTGltaXQpICYmDQot ICAgICAgICAgICgoTG9nRW50cnlLZXkgPSBHZXRQZXJmb3JtYW5jZU1lYXN1cmVtZW50RXggKA0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXksDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAmTWVhc3VyZW1lbnQuSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgJk1lYXN1cmVtZW50LlRva2VuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1 cmVtZW50Lk1vZHVsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5T dGFydFRpbWVTdGFtcCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5F bmRUaW1lU3RhbXAsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRl bnRpZmllcikpICE9IDApDQotICAgICAgICApDQotICB7DQotICAgICsrSW5kZXg7ICAgIC8vIENv dW50IGV2ZXJ5IHJlY29yZC4gIEZpcnN0IHJlY29yZCBpcyAxLg0KLSAgICBFbGFwc2VkVGltZSA9 IDA7DQotICAgIGlmIChNZWFzdXJlbWVudC5FbmRUaW1lU3RhbXAgIT0gMCkgew0KLSAgICAgIER1 cmF0aW9uID0gR2V0RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQotICAgICAgRWxhcHNlZFRpbWUg PSBEdXJhdGlvbkluTWljcm9TZWNvbmRzICggRHVyYXRpb24gKTsNCi0gICAgfQ0KLSAgICBpZiAo KEVsYXBzZWRUaW1lIDwgbUludGVyZXN0VGhyZXNob2xkKSAgICAgICAgICAgICAgICAgfHwNCi0g ICAgICAgICgoRXhjbHVkZUZsYWcpICYmIChHZXRDdW11bGF0aXZlSXRlbSgmTWVhc3VyZW1lbnQp ID49IDApKQ0KLSAgICAgICAgKSB7IC8vIElnbm9yZSAidW5pbnRlcmVzdGluZyIgb3IgRXhjbHVk ZWQgcmVjb3Jkcw0KLSAgICAgIGNvbnRpbnVlOw0KLSAgICB9DQotICAgICsrQ291bnQ7ICAgIC8v IENvdW50IHRoZSBudW1iZXIgb2YgcmVjb3JkcyBwcmludGVkDQotDQotICAgIGlmIChtU2hvd0lk KSB7DQotICAgICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUkFXX1ZBUlMyKSwN Ci0gICAgICAgIEluZGV4LCAgICAgIC8vIDEgYmFzZWQsIFdoaWNoIG1lYXN1cmVtZW50IHJlY29y ZCBpcyBiZWluZyBwcmludGVkDQotICAgICAgICBNZWFzdXJlbWVudC5IYW5kbGUsDQotICAgICAg ICBNZWFzdXJlbWVudC5TdGFydFRpbWVTdGFtcCwNCi0gICAgICAgIE1lYXN1cmVtZW50LkVuZFRp bWVTdGFtcCwNCi0gICAgICAgIE1lYXN1cmVtZW50LlRva2VuLA0KLSAgICAgICAgTWVhc3VyZW1l bnQuTW9kdWxlLA0KLSAgICAgICAgTWVhc3VyZW1lbnQuSWRlbnRpZmllcg0KLSAgICAgICk7DQot ICAgIH0gZWxzZSB7DQotICAgICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUkFX X1ZBUlMpLA0KLSAgICAgICAgSW5kZXgsICAgICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1l bnQgcmVjb3JkIGlzIGJlaW5nIHByaW50ZWQNCi0gICAgICAgIE1lYXN1cmVtZW50LkhhbmRsZSwN Ci0gICAgICAgIE1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KLSAgICAgICAgTWVhc3VyZW1l bnQuRW5kVGltZVN0YW1wLA0KLSAgICAgICAgTWVhc3VyZW1lbnQuVG9rZW4sDQotICAgICAgICBN ZWFzdXJlbWVudC5Nb2R1bGUNCi0gICAgICApOw0KLSAgICB9DQotICAgIGlmIChTaGVsbEdldEV4 ZWN1dGlvbkJyZWFrRmxhZyAoKSkgew0KLSAgICAgIFN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KLSAg ICAgIGJyZWFrOw0KLSAgICB9DQotICB9DQotICByZXR1cm4gU3RhdHVzOw0KLX0NCi0NCi0vKiog DQotICBHYXRoZXIgYW5kIHByaW50IE1ham9yIFBoYXNlIG1ldHJpY3MuDQotICANCi0qKi8NCi1W T0lEDQotUHJvY2Vzc1BoYXNlcygNCi0gIFZPSUQNCi0gICkNCi17DQotICBNRUFTVVJFTUVOVF9S RUNPUkQgICAgICAgIE1lYXN1cmVtZW50Ow0KLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBC ZHNUaW1lb3V0VmFsdWU7DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFNlY1RpbWU7DQot ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIFBlaVRpbWU7DQotICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIER4ZVRpbWU7DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEJkc1RpbWU7 DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEVsYXBzZWRUaW1lOw0KLSAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBEdXJhdGlvbjsNCi0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg VG90YWw7DQotICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0cjsNCi0gIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXk7DQotICBFRklfU1RSSU5HICAgICAgICAg ICAgICAgIFN0cmluZ1B0clVua25vd247DQotDQotICBCZHNUaW1lb3V0VmFsdWUgPSAwOw0KLSAg U2VjVGltZSAgICAgICAgID0gMDsNCi0gIFBlaVRpbWUgICAgICAgICA9IDA7DQotICBEeGVUaW1l ICAgICAgICAgPSAwOw0KLSAgQmRzVGltZSAgICAgICAgID0gMDsNCi0gIC8vDQotICAvLyBHZXQg RXhlY3V0aW9uIFBoYXNlIFN0YXRpc3RpY3MNCi0gIC8vDQotICBTdHJpbmdQdHJVbmtub3duID0g SGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9BTElUX1VOS05PV04p LCBOVUxMKTsgICANCi0gIFN0cmluZ1B0ciA9IEhpaUdldFN0cmluZyAoZ0hpaUhhbmRsZSwgU1RS SU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9QSEFTRVMpLCBOVUxMKTsNCi0gIFByaW50VG9rZW4o IFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fSEVBREVSKSwNCi0gICAgICAgICAgICAgIChT dHJpbmdQdHIgPT0gTlVMTCkgPyBTdHJpbmdQdHJVbmtub3duIDogU3RyaW5nUHRyKTsNCi0gIEZy ZWVQb29sIChTdHJpbmdQdHIpOw0KLSAgRnJlZVBvb2wgKFN0cmluZ1B0clVua25vd24pOw0KLQ0K LSAgTG9nRW50cnlLZXkgPSAwOw0KLSAgd2hpbGUgKChMb2dFbnRyeUtleSA9IEdldFBlcmZvcm1h bmNlTWVhc3VyZW1lbnRFeCAoDQotICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtl eSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5IYW5kbGUsDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuVG9rZW4sDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuTW9kdWxlLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJk1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICZNZWFzdXJlbWVudC5JZGVudGlmaWVyKSkgIT0gMCkNCi0gIHsNCi0gICAgaWYgKE1lYXN1 cmVtZW50LkVuZFRpbWVTdGFtcCA9PSAwKSB7IC8vIFNraXAgImluY29tcGxldGUiIHJlY29yZHMN Ci0gICAgICBjb250aW51ZTsNCi0gICAgfQ0KLSAgICBEdXJhdGlvbiA9IEdldER1cmF0aW9uICgm TWVhc3VyZW1lbnQpOw0KLSAgICBpZiAoICAgTWVhc3VyZW1lbnQuSGFuZGxlICE9IE5VTEwNCi0g ICAgICAgICYmIChBc2NpaVN0cm5DbXAgKE1lYXN1cmVtZW50LlRva2VuLCBBTGl0X0Jkc1RPLCBQ RVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkNCi0gICAgICAgKQ0KLSAgICB7DQotICAgICAgQmRzVGlt ZW91dFZhbHVlID0gRHVyYXRpb247DQotICAgIH0gZWxzZSBpZiAoQXNjaWlTdHJuQ21wIChNZWFz dXJlbWVudC5Ub2tlbiwgQUxpdF9TRUMsIFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSB7DQotICAg ICAgU2VjVGltZSAgICAgPSBEdXJhdGlvbjsNCi0gICAgfSBlbHNlIGlmIChBc2NpaVN0cm5DbXAg KE1lYXN1cmVtZW50LlRva2VuLCBBTGl0X1BFSSwgUEVSRl9UT0tFTl9MRU5HVEgpID09IDApIHsN Ci0gICAgICBQZWlUaW1lICAgICA9IER1cmF0aW9uOw0KLSAgICB9IGVsc2UgaWYgKEFzY2lpU3Ry bkNtcCAoTWVhc3VyZW1lbnQuVG9rZW4sIEFMaXRfRFhFLCBQRVJGX1RPS0VOX0xFTkdUSCkgPT0g MCkgew0KLSAgICAgIER4ZVRpbWUgICAgICA9IER1cmF0aW9uOw0KLSAgICB9IGVsc2UgaWYgKEFz Y2lpU3RybkNtcCAoTWVhc3VyZW1lbnQuVG9rZW4sIEFMaXRfQkRTLCBQRVJGX1RPS0VOX0xFTkdU SCkgPT0gMCkgew0KLSAgICAgIEJkc1RpbWUgICAgICA9IER1cmF0aW9uOw0KLSAgICB9DQotICB9 DQotDQotICBUb3RhbCA9IDA7DQotDQotICAvLyBwcmludCBTRUMgcGhhc2UgZHVyYXRpb24gdGlt ZQ0KLSAgLy8NCi0gIGlmIChTZWNUaW1lID4gMCkgew0KLSAgICBFbGFwc2VkVGltZSA9IER1cmF0 aW9uSW5NaWNyb1NlY29uZHMgKCBTZWNUaW1lICk7ICAgICAvLyBDYWxjdWxhdGUgZWxhcHNlZCB0 aW1lIGluIG1pY3Jvc2Vjb25kcw0KLSAgICBUb3RhbCArPSBEaXZVNjR4MzIgKEVsYXBzZWRUaW1l LCAxMDAwKTsgICAvLyBBY2N1bXVsYXRlIHRpbWUgaW4gbWlsbGlzZWNvbmRzDQotICAgIFByaW50 VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ19QSEFTRSksIEVsYXBzZWRUaW1lKTsNCi0g IH0NCi0NCi0gIC8vIHByaW50IFBFSSBwaGFzZSBkdXJhdGlvbiB0aW1lDQotICAvLw0KLSAgaWYg KFBlaVRpbWUgPiAwKSB7DQotICAgIEVsYXBzZWRUaW1lID0gRGl2VTY0eDMyICgNCi0gICAgICAg ICAgICAgICAgICAgIFBlaVRpbWUsDQotICAgICAgICAgICAgICAgICAgICAoVUlOVDMyKVRpbWVy SW5mby5GcmVxdWVuY3kNCi0gICAgICAgICAgICAgICAgICAgICk7DQotICAgIFRvdGFsICs9IEVs YXBzZWRUaW1lOw0KLSAgICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9QSEFTRV9E VVJBVElPTiksIEFMaXRfUEVJLCBFbGFwc2VkVGltZSk7DQotICB9DQotDQotICAvLyBwcmludCBE WEUgcGhhc2UgZHVyYXRpb24gdGltZQ0KLSAgLy8NCi0gIGlmIChEeGVUaW1lID4gMCkgew0KLSAg ICBFbGFwc2VkVGltZSA9IERpdlU2NHgzMiAoDQotICAgICAgICAgICAgICAgICAgICBEeGVUaW1l LA0KLSAgICAgICAgICAgICAgICAgICAgKFVJTlQzMilUaW1lckluZm8uRnJlcXVlbmN5DQotICAg ICAgICAgICAgICAgICAgICApOw0KLSAgICBUb3RhbCArPSBFbGFwc2VkVGltZTsNCi0gICAgUHJp bnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUEhBU0VfRFVSQVRJT04pLCBBTGl0X0RYRSwg RWxhcHNlZFRpbWUpOw0KLSAgfQ0KLQ0KLSAgLy8gcHJpbnQgQkRTIHBoYXNlIGR1cmF0aW9uIHRp bWUNCi0gIC8vDQotICBpZiAoQmRzVGltZSA+IDApIHsNCi0gICAgRWxhcHNlZFRpbWUgPSBEaXZV NjR4MzIgKA0KLSAgICAgICAgICAgICAgICAgICAgQmRzVGltZSwNCi0gICAgICAgICAgICAgICAg ICAgIChVSU5UMzIpVGltZXJJbmZvLkZyZXF1ZW5jeQ0KLSAgICAgICAgICAgICAgICAgICAgKTsN Ci0gICAgVG90YWwgKz0gRWxhcHNlZFRpbWU7DQotICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tF TiAoU1RSX0RQX1BIQVNFX0RVUkFUSU9OKSwgQUxpdF9CRFMsIEVsYXBzZWRUaW1lKTsNCi0gIH0N Ci0NCi0gIGlmIChCZHNUaW1lb3V0VmFsdWUgPiAwKSB7DQotICAgIEVsYXBzZWRUaW1lID0gRGl2 VTY0eDMyICgNCi0gICAgICAgICAgICAgICAgICAgIEJkc1RpbWVvdXRWYWx1ZSwNCi0gICAgICAg ICAgICAgICAgICAgIChVSU5UMzIpVGltZXJJbmZvLkZyZXF1ZW5jeQ0KLSAgICAgICAgICAgICAg ICAgICAgKTsNCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfUEhBU0VfQkRT VE8pLCBBTGl0X0Jkc1RPLCBFbGFwc2VkVGltZSk7DQotICB9DQotDQotICBQcmludFRva2VuIChT VFJJTkdfVE9LRU4gKFNUUl9EUF9UT1RBTF9EVVJBVElPTiksIFRvdGFsKTsNCi19DQotDQotLyoq IA0KLSAgR2F0aGVyIGFuZCBwcmludCBIYW5kbGUgZGF0YS4NCi0gIA0KLSAgQHBhcmFtW2luXSAg ICBFeGNsdWRlRmxhZyAgIFRSVUUgdG8gZXhjbHVkZSBpbmRpdmlkdWFsIEN1bXVsYXRpdmUgaXRl bXMgZnJvbSBkaXNwbGF5Lg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBU aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLg0KLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAg ICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCi0gIEByZXR1cm4gT3RoZXJz ICAgICAgICAgICAgICAgICAgZnJvbSBhIGNhbGwgdG8gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZmZXIo KS4NCi0qKi8NCi1FRklfU1RBVFVTDQotUHJvY2Vzc0hhbmRsZXMoDQotICBJTiBCT09MRUFOICAg ICAgRXhjbHVkZUZsYWcNCi0gICkNCi17DQotICBNRUFTVVJFTUVOVF9SRUNPUkQgICAgICAgIE1l YXN1cmVtZW50Ow0KLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBFbGFwc2VkVGltZTsNCi0g IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgRHVyYXRpb247DQotICBFRklfSEFORExFICAgICAg ICAgICAgICAgICpIYW5kbGVCdWZmZXI7DQotICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0 cmluZ1B0cjsNCi0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQotICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIExvZ0VudHJ5S2V5Ow0KLSAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBDb3VudDsNCi0gIFVJTlROICAgICAgICAgICAgICAgICAgICAgSGFuZGxlQ291bnQ7DQot ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCi0gIEVGSV9TVFJJTkcgICAgICAg ICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsNCi0NCi0gIFN0cmluZ1B0clVua25vd24gPSBIaWlH ZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0FMSVRfVU5LTk9XTiksIE5V TEwpOyAgDQotICBTdHJpbmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19U T0tFTiAoU1RSX0RQX1NFQ1RJT05fRFJJVkVSUyksIE5VTEwpOw0KLSAgUHJpbnRUb2tlbiggU1RS SU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9IRUFERVIpLA0KLSAgICAgICAgICAgICAgKFN0cmlu Z1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0clVua25vd24gOiBTdHJpbmdQdHIpOw0KLSAgRnJlZVBv b2wgKFN0cmluZ1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyVW5rbm93bik7DQotDQotICBT dGF0dXMgPSBnQlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoQWxsSGFuZGxlcywgTlVMTCwgTlVMTCwg JkhhbmRsZUNvdW50LCAmSGFuZGxlQnVmZmVyKTsNCi0gIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfSEFORExFU19FUlJPUiks IFN0YXR1cyk7DQotICB9DQotICBlbHNlIHsNCi0jaWYgRFBfREVCVUcgPT0gMg0KLSAgICBQcmlu dCAoTCJUaGVyZSBhcmUgJSxkIEhhbmRsZXMgZGVmaW5lZC5cbiIsIChTaXplIC8gc2l6ZW9mKEhh bmRsZUJ1ZmZlclswXSkpKTsNCi0jZW5kaWYNCi0NCi0gICAgaWYgKG1TaG93SWQpIHsNCi0gICAg ICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9IQU5ETEVfU0VDVElPTjIpICk7DQot ICAgIH0gZWxzZSB7DQotICAgICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfSEFO RExFX1NFQ1RJT04pICk7DQotICAgIH0NCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChT VFJfRFBfREFTSEVTKSApOw0KLQ0KLSAgICBMb2dFbnRyeUtleSA9IDA7DQotICAgIENvdW50ICAg PSAwOw0KLSAgICB3aGlsZSAoKExvZ0VudHJ5S2V5ID0gR2V0UGVyZm9ybWFuY2VNZWFzdXJlbWVu dEV4ICgNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nRW50cnlLZXksDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5IYW5kbGUsDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5Ub2tlbiwNCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVsZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmTWVhc3VyZW1lbnQuRW5kVGltZVN0YW1wLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikpICE9IDApDQotICAgIHsNCi0gICAgICBDb3Vu dCsrOw0KLSAgICAgIER1cmF0aW9uID0gR2V0RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQotICAg ICAgRWxhcHNlZFRpbWUgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzICggRHVyYXRpb24gKTsNCi0g ICAgICBpZiAoKEVsYXBzZWRUaW1lIDwgbUludGVyZXN0VGhyZXNob2xkKSAgICAgICAgICAgICAg ICAgfHwNCi0gICAgICAgICAgKE1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCA9PSAwKSAgICAgICAg ICAgICAgICAgICAgfHwNCi0gICAgICAgICAgKE1lYXN1cmVtZW50LkhhbmRsZSA9PSBOVUxMKSAg ICAgICAgICAgICAgICAgICAgICAgfHwNCi0gICAgICAgICAgKChFeGNsdWRlRmxhZykgJiYgKEdl dEN1bXVsYXRpdmVJdGVtKCZNZWFzdXJlbWVudCkgPj0gMCkpDQotICAgICAgICAgKSB7IC8vIEln bm9yZSAidW5pbnRlcmVzdGluZyIgb3IgZXhjbHVkZWQgcmVjb3Jkcw0KLSAgICAgICAgY29udGlu dWU7DQotICAgICAgfQ0KLSAgICAgIG1HYXVnZVN0cmluZ1swXSA9IDA7ICAgIC8vIEVtcHR5IGRy aXZlciBuYW1lIGJ5IGRlZmF1bHQNCi0gICAgICBBc2NpaVN0clRvVW5pY29kZVN0clMgKE1lYXN1 cmVtZW50LlRva2VuLCBtVW5pY29kZVRva2VuLCBBUlJBWV9TSVpFIChtVW5pY29kZVRva2VuKSk7 DQotICAgICAgLy8gU2VlIGlmIHRoZSBIYW5kbGUgaXMgaW4gdGhlIEhhbmRsZUJ1ZmZlcg0KLSAg ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEhhbmRsZUNvdW50OyBJbmRleCsrKSB7DQotICAg ICAgICBpZiAoTWVhc3VyZW1lbnQuSGFuZGxlID09IEhhbmRsZUJ1ZmZlcltJbmRleF0pIHsNCi0g ICAgICAgICAgR2V0TmFtZUZyb21IYW5kbGUgKEhhbmRsZUJ1ZmZlcltJbmRleF0pOyAvLyBOYW1l IGlzIHB1dCBpbnRvIG1HYXVnZVN0cmluZw0KLSAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0N Ci0gICAgICB9DQotICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGFyZ3VtZW50IHN0cmluZ3MgYXJl IG5vdCB0b28gbG9uZy4NCi0gICAgICBtR2F1Z2VTdHJpbmdbRFBfR0FVR0VfU1RSSU5HX0xFTkdU SF0gPSAwOw0KLSAgICAgIG1Vbmljb2RlVG9rZW5bMTFdID0gMDsNCi0gICAgICBpZiAobUdhdWdl U3RyaW5nWzBdICE9IDApIHsNCi0gICAgICAgIC8vIERpc3BsYXkgdGhlIHJlY29yZCBpZiBpdCBo YXMgYSB2YWxpZCBoYW5kbGUuDQotICAgICAgICBpZiAobVNob3dJZCkgew0KLSAgICAgICAgICBQ cmludFRva2VuICgNCi0gICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9EUF9IQU5ETEVfVkFS UzIpLA0KLSAgICAgICAgICAgIENvdW50LCAgICAgIC8vIDEgYmFzZWQsIFdoaWNoIG1lYXN1cmVt ZW50IHJlY29yZCBpcyBiZWluZyBwcmludGVkDQotICAgICAgICAgICAgSW5kZXggKyAxLCAgLy8g MSBiYXNlZCwgV2hpY2ggaGFuZGxlIGlzIGJlaW5nIHByaW50ZWQNCi0gICAgICAgICAgICBtR2F1 Z2VTdHJpbmcsDQotICAgICAgICAgICAgbVVuaWNvZGVUb2tlbiwNCi0gICAgICAgICAgICBFbGFw c2VkVGltZSwNCi0gICAgICAgICAgICBNZWFzdXJlbWVudC5JZGVudGlmaWVyDQotICAgICAgICAg ICk7DQotICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICBQcmludFRva2VuICgNCi0gICAgICAg ICAgICBTVFJJTkdfVE9LRU4gKFNUUl9EUF9IQU5ETEVfVkFSUyksDQotICAgICAgICAgICAgQ291 bnQsICAgICAgLy8gMSBiYXNlZCwgV2hpY2ggbWVhc3VyZW1lbnQgcmVjb3JkIGlzIGJlaW5nIHBy aW50ZWQNCi0gICAgICAgICAgICBJbmRleCArIDEsICAvLyAxIGJhc2VkLCBXaGljaCBoYW5kbGUg aXMgYmVpbmcgcHJpbnRlZA0KLSAgICAgICAgICAgIG1HYXVnZVN0cmluZywNCi0gICAgICAgICAg ICBtVW5pY29kZVRva2VuLA0KLSAgICAgICAgICAgIEVsYXBzZWRUaW1lDQotICAgICAgICAgICk7 DQotICAgICAgICB9DQotICAgICAgfQ0KLSAgICAgIGlmIChTaGVsbEdldEV4ZWN1dGlvbkJyZWFr RmxhZyAoKSkgew0KLSAgICAgICAgU3RhdHVzID0gRUZJX0FCT1JURUQ7DQotICAgICAgICBicmVh azsNCi0gICAgICB9DQotICAgIH0NCi0gIH0NCi0gIGlmIChIYW5kbGVCdWZmZXIgIT0gTlVMTCkg ew0KLSAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsNCi0gIH0NCi0gIHJldHVybiBTdGF0dXM7 DQotfQ0KLQ0KLS8qKiANCi0gIEdhdGhlciBhbmQgcHJpbnQgUEVJTSBkYXRhLg0KLSAgDQotICBP bmx5IHByaW50cyBjb21wbGV0ZSBQRUlNIHJlY29yZHMNCi0NCi0gIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwuDQotICBAcmV0dmFsIEVG SV9BQk9SVEVEICAgICAgICAgICBUaGUgdXNlciBhYm9ydHMgdGhlIG9wZXJhdGlvbi4NCi0qKi8N Ci1FRklfU1RBVFVTDQotUHJvY2Vzc1BlaW1zKA0KLSAgVk9JRA0KLSkNCi17DQotICBNRUFTVVJF TUVOVF9SRUNPUkQgICAgICAgIE1lYXN1cmVtZW50Ow0KLSAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBEdXJhdGlvbjsNCi0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgRWxhcHNlZFRpbWU7 DQotICBFRklfU1RSSU5HICAgICAgICAgICAgICAgIFN0cmluZ1B0cjsNCi0gIFVJTlROICAgICAg ICAgICAgICAgICAgICAgTG9nRW50cnlLZXk7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IFRJbmRleDsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsN Ci0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KLQ0KLSAgU3RhdHVzID0gRUZJ X1NVQ0NFU1M7DQotDQotICBTdHJpbmdQdHJVbmtub3duID0gSGlpR2V0U3RyaW5nIChnSGlpSGFu ZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9BTElUX1VOS05PV04pLCBOVUxMKTsgIA0KLSAgU3RyaW5n UHRyID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9TRUNU SU9OX1BFSU1TKSwgTlVMTCk7DQotICBQcmludFRva2VuKCBTVFJJTkdfVE9LRU4gKFNUUl9EUF9T RUNUSU9OX0hFQURFUiksDQotICAgICAgICAgICAgICAoU3RyaW5nUHRyID09IE5VTEwpID8gU3Ry aW5nUHRyVW5rbm93biA6IFN0cmluZ1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyKTsNCi0g IEZyZWVQb29sIChTdHJpbmdQdHJVbmtub3duKTsNCi0NCi0gIGlmIChtU2hvd0lkKSB7DQotICAg IFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX1BFSU1fU0VDVElPTjIpKTsNCi0gIH0g ZWxzZSB7DQotICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX1BFSU1fU0VDVElP TikpOw0KLSAgfQ0KLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VOIChTVFJfRFBfREFTSEVTKSk7 DQotICBUSW5kZXggID0gMDsNCi0gIExvZ0VudHJ5S2V5ID0gMDsNCi0gIHdoaWxlICgoTG9nRW50 cnlLZXkgPSBHZXRQZXJmb3JtYW5jZU1lYXN1cmVtZW50RXggKA0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgTG9nRW50cnlLZXksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3Vy ZW1lbnQuSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50LlRv a2VuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgJk1lYXN1cmVtZW50Lk1vZHVsZSwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5TdGFydFRpbWVTdGFtcCwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5FbmRUaW1lU3RhbXAsDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuSWRlbnRpZmllcikpICE9IDApDQot ICB7DQotICAgIFRJbmRleCsrOw0KLSAgICBpZiAoKE1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCA9 PSAwKSB8fA0KLSAgICAgICAgKEFzY2lpU3RybkNtcCAoTWVhc3VyZW1lbnQuVG9rZW4sIEFMaXRf UEVJTSwgUEVSRl9UT0tFTl9MRU5HVEgpICE9IDApDQotICAgICAgICkgew0KLSAgICAgIGNvbnRp bnVlOw0KLSAgICB9DQotDQotICAgIER1cmF0aW9uID0gR2V0RHVyYXRpb24gKCZNZWFzdXJlbWVu dCk7DQotICAgIEVsYXBzZWRUaW1lID0gRHVyYXRpb25Jbk1pY3JvU2Vjb25kcyAoIER1cmF0aW9u ICk7ICAvLyBDYWxjdWxhdGUgZWxhcHNlZCB0aW1lIGluIG1pY3Jvc2Vjb25kcw0KLSAgICBpZiAo RWxhcHNlZFRpbWUgPj0gbUludGVyZXN0VGhyZXNob2xkKSB7DQotICAgICAgLy8gUEVJTSBGSUxF IEhhbmRsZSBpcyB0aGUgc3RhcnQgYWRkcmVzcyBvZiBpdHMgRkZTIGZpbGUgdGhhdCBjb250YWlu cyBpdHMgZmlsZSBndWlkLg0KLSAgICAgIGlmIChtU2hvd0lkKSB7DQotICAgICAgICBQcmludFRv a2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9QRUlNX1ZBUlMyKSwNCi0gICAgICAgICAgICAgIFRJ bmRleCwgICAvLyAxIGJhc2VkLCBXaGljaCBtZWFzdXJlbWVudCByZWNvcmQgaXMgYmVpbmcgcHJp bnRlZA0KLSAgICAgICAgICAgICAgTWVhc3VyZW1lbnQuSGFuZGxlLCAgLy8gYmFzZSBhZGRyZXNz DQotICAgICAgICAgICAgICBNZWFzdXJlbWVudC5IYW5kbGUsICAvLyBmaWxlIGd1aWQNCi0gICAg ICAgICAgICAgIEVsYXBzZWRUaW1lLA0KLSAgICAgICAgICAgICAgTWVhc3VyZW1lbnQuSWRlbnRp Zmllcg0KLSAgICAgICAgKTsNCi0gICAgICB9IGVsc2Ugew0KLSAgICAgICAgUHJpbnRUb2tlbiAo U1RSSU5HX1RPS0VOIChTVFJfRFBfUEVJTV9WQVJTKSwNCi0gICAgICAgICAgICAgIFRJbmRleCwg ICAvLyAxIGJhc2VkLCBXaGljaCBtZWFzdXJlbWVudCByZWNvcmQgaXMgYmVpbmcgcHJpbnRlZA0K LSAgICAgICAgICAgICAgTWVhc3VyZW1lbnQuSGFuZGxlLCAgLy8gYmFzZSBhZGRyZXNzDQotICAg ICAgICAgICAgICBNZWFzdXJlbWVudC5IYW5kbGUsICAvLyBmaWxlIGd1aWQNCi0gICAgICAgICAg ICAgIEVsYXBzZWRUaW1lDQotICAgICAgICApOw0KLSAgICAgIH0NCi0gICAgfQ0KLSAgICBpZiAo U2hlbGxHZXRFeGVjdXRpb25CcmVha0ZsYWcgKCkpIHsNCi0gICAgICBTdGF0dXMgPSBFRklfQUJP UlRFRDsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KLSAgfQ0KLSAgcmV0dXJuIFN0YXR1czsNCi19 DQotDQotLyoqIA0KLSAgR2F0aGVyIGFuZCBwcmludCBnbG9iYWwgZGF0YS4NCi0gIA0KLSAgU3Ry aXBzIG91dCBpbmNvbXBsZXRlIG9yICJFeGVjdXRpb24gUGhhc2UiIHJlY29yZHMNCi0gIE9ubHkg cHJpbnRzIHJlY29yZHMgd2hlcmUgSGFuZGxlIGlzIE5VTEwNCi0gIEluY3JlbWVudCBUSW5kZXgg Zm9yIGV2ZXJ5IHJlY29yZCwgZXZlbiBza2lwcGVkIG9uZXMsIHNvIHRoYXQgd2UgaGF2ZSBhbg0K LSAgaW5kaWNhdGlvbiBvZiBldmVyeSBtZWFzdXJlbWVudCByZWNvcmQgdGFrZW4uDQotDQotICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVs Lg0KLSAgQHJldHZhbCBFRklfQUJPUlRFRCAgICAgICAgICAgVGhlIHVzZXIgYWJvcnRzIHRoZSBv cGVyYXRpb24uDQotKiovDQotRUZJX1NUQVRVUw0KLVByb2Nlc3NHbG9iYWwoDQotICBWT0lEDQot KQ0KLXsNCi0gIE1FQVNVUkVNRU5UX1JFQ09SRCAgICAgICAgTWVhc3VyZW1lbnQ7DQotICBVSU5U NjQgICAgICAgICAgICAgICAgICAgIER1cmF0aW9uOw0KLSAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBFbGFwc2VkVGltZTsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRy Ow0KLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtleTsNCi0gIFVJTlROICAg ICAgICAgICAgICAgICAgICAgSW5kZXg7ICAgICAgICAvLyBJbmRleCwgb3IgbnVtYmVyLCBvZiB0 aGUgbWVhc3VyZW1lbnQgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZA0KLSAgRUZJX1NUUklORyAgICAg ICAgICAgICAgICBTdHJpbmdQdHJVbmtub3duOw0KLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICBTdGF0dXM7DQotDQotICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCi0NCi0gIFN0cmluZ1B0clVu a25vd24gPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0FMSVRf VU5LTk9XTiksIE5VTEwpOyAgDQotICBTdHJpbmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5k bGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fR0VORVJBTCksIE5VTEwpOw0KLSAgUHJp bnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDVElPTl9IRUFERVIpLA0KLSAgICAgICAg ICAgICAgKFN0cmluZ1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0clVua25vd246IFN0cmluZ1B0cik7 DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyKTsNCi0gIEZyZWVQb29sIChTdHJpbmdQdHJVbmtub3du KTsNCi0NCi0gIGlmIChtU2hvd0lkKSB7DQotICAgIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAo U1RSX0RQX0dMT0JBTF9TRUNUSU9OMikpOw0KLSAgfSBlbHNlIHsNCi0gICAgUHJpbnRUb2tlbiAo U1RSSU5HX1RPS0VOIChTVFJfRFBfR0xPQkFMX1NFQ1RJT04pKTsNCi0gIH0NCi0gIFByaW50VG9r ZW4gKFNUUklOR19UT0tFTiAoU1RSX0RQX0RBU0hFUykpOw0KLQ0KLSAgSW5kZXggPSAxOw0KLSAg TG9nRW50cnlLZXkgPSAwOw0KLQ0KLSAgd2hpbGUgKChMb2dFbnRyeUtleSA9IEdldFBlcmZvcm1h bmNlTWVhc3VyZW1lbnRFeCAoDQotICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dFbnRyeUtl eSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZNZWFzdXJlbWVudC5IYW5kbGUsDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuVG9rZW4sDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAmTWVhc3VyZW1lbnQuTW9kdWxlLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJk1lYXN1cmVtZW50LlN0YXJ0VGltZVN0YW1wLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJk1lYXN1cmVtZW50LkVuZFRpbWVTdGFtcCwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICZNZWFzdXJlbWVudC5JZGVudGlmaWVyKSkgIT0gMCkNCi0gIHsNCi0gICAgQXNjaWlTdHJU b1VuaWNvZGVTdHJTIChNZWFzdXJlbWVudC5Nb2R1bGUsIG1HYXVnZVN0cmluZywgQVJSQVlfU0la RSAobUdhdWdlU3RyaW5nKSk7DQotICAgIEFzY2lpU3RyVG9Vbmljb2RlU3RyUyAoTWVhc3VyZW1l bnQuVG9rZW4sIG1Vbmljb2RlVG9rZW4sIEFSUkFZX1NJWkUgKG1Vbmljb2RlVG9rZW4pKTsNCi0g ICAgbUdhdWdlU3RyaW5nWzI1XSA9IDA7DQotICAgIG1Vbmljb2RlVG9rZW5bMzFdID0gMDsNCi0g ICAgaWYgKCAhICggSXNQaGFzZSggJk1lYXN1cmVtZW50KSAgfHwNCi0gICAgICAgIChNZWFzdXJl bWVudC5IYW5kbGUgIT0gTlVMTCkgICAgICB8fA0KLSAgICAgICAgKE1lYXN1cmVtZW50LkVuZFRp bWVTdGFtcCA9PSAwKQ0KLSAgICAgICAgKSkNCi0gICAgew0KLSAgICAgIER1cmF0aW9uID0gR2V0 RHVyYXRpb24gKCZNZWFzdXJlbWVudCk7DQotICAgICAgRWxhcHNlZFRpbWUgPSBEdXJhdGlvbklu TWljcm9TZWNvbmRzICggRHVyYXRpb24gKTsNCi0gICAgICBpZiAoRWxhcHNlZFRpbWUgPj0gbUlu dGVyZXN0VGhyZXNob2xkKSB7DQotICAgICAgICBpZiAobVNob3dJZCkgew0KLSAgICAgICAgICBQ cmludFRva2VuICgNCi0gICAgICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9EUF9HTE9CQUxfVkFS UzIpLA0KLSAgICAgICAgICAgIEluZGV4LA0KLSAgICAgICAgICAgIG1HYXVnZVN0cmluZywNCi0g ICAgICAgICAgICBtVW5pY29kZVRva2VuLA0KLSAgICAgICAgICAgIEVsYXBzZWRUaW1lLA0KLSAg ICAgICAgICAgIE1lYXN1cmVtZW50LklkZW50aWZpZXINCi0gICAgICAgICAgICApOw0KLSAgICAg ICAgfSBlbHNlIHsNCi0gICAgICAgICAgIFByaW50VG9rZW4gKA0KLSAgICAgICAgICAgIFNUUklO R19UT0tFTiAoU1RSX0RQX0dMT0JBTF9WQVJTKSwNCi0gICAgICAgICAgICBJbmRleCwNCi0gICAg ICAgICAgICBtR2F1Z2VTdHJpbmcsDQotICAgICAgICAgICAgbVVuaWNvZGVUb2tlbiwNCi0gICAg ICAgICAgICBFbGFwc2VkVGltZQ0KLSAgICAgICAgICAgICk7DQotICAgICAgICB9DQotICAgICAg fQ0KLSAgICB9DQotICAgIGlmIChTaGVsbEdldEV4ZWN1dGlvbkJyZWFrRmxhZyAoKSkgew0KLSAg ICAgIFN0YXR1cyA9IEVGSV9BQk9SVEVEOw0KLSAgICAgIGJyZWFrOw0KLSAgICB9DQotICAgIElu ZGV4Kys7DQotICB9DQotICByZXR1cm4gU3RhdHVzOw0KLX0NCi0NCi0vKiogDQotICBHYXRoZXIg YW5kIHByaW50IGN1bXVsYXRpdmUgZGF0YS4NCi0gIA0KLSAgVHJhdmVyc2UgdGhlIG1lYXN1cmVt ZW50IHJlY29yZHMgYW5kOjxCUj4NCi0gIEZvciBlYWNoIHJlY29yZCB3aXRoIGEgVG9rZW4gbGlz dGVkIGluIHRoZSBDdW1EYXRhIGFycmF5OjxCUj4NCi0gICAgIC0gVXBkYXRlIHRoZSBpbnN0YW5j ZSBjb3VudCBhbmQgdGhlIHRvdGFsLCBtaW5pbXVtLCBhbmQgbWF4aW11bSBkdXJhdGlvbnMuDQot ICBGaW5hbGx5LCBwcmludCB0aGUgZ2F0aGVyZWQgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzLg0KLQ0K LSAgQHBhcmFtW2luXSAgICBDdXN0b21DdW11bGF0aXZlRGF0YSAgQSBwb2ludGVyIHRvIHRoZSBj dW10b20gY3VtdWxhdGl2ZSBkYXRhLg0KLQ0KLSoqLw0KLVZPSUQNCi1Qcm9jZXNzQ3VtdWxhdGl2 ZSgNCi0gIElOIFBFUkZfQ1VNX0RBVEEgICAgICAgICAgICAgICAgICAqQ3VzdG9tQ3VtdWxhdGl2 ZURhdGEgT1BUSU9OQUwNCi0gICkNCi17DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEF2 Z0R1cjsgICAgICAgICAvLyB0aGUgY29tcHV0ZWQgYXZlcmFnZSBkdXJhdGlvbg0KLSAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICBEdXI7DQotICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE1p bkR1cjsNCi0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgTWF4RHVyOw0KLSAgRUZJX1NUUklO RyAgICAgICAgICAgICAgICBTdHJpbmdQdHI7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IFRJbmRleDsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgU3RyaW5nUHRyVW5rbm93bjsN Ci0NCi0gIFN0cmluZ1B0clVua25vd24gPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklO R19UT0tFTiAoU1RSX0FMSVRfVU5LTk9XTiksIE5VTEwpOyAgDQotICBTdHJpbmdQdHIgPSBIaWlH ZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFNUUklOR19UT0tFTiAoU1RSX0RQX1NFQ1RJT05fQ1VNVUxB VElWRSksIE5VTEwpOw0KLSAgUHJpbnRUb2tlbiggU1RSSU5HX1RPS0VOIChTVFJfRFBfU0VDVElP Tl9IRUFERVIpLA0KLSAgICAgICAgICAgICAgKFN0cmluZ1B0ciA9PSBOVUxMKSA/IFN0cmluZ1B0 clVua25vd246IFN0cmluZ1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyKTsNCi0gIEZyZWVQ b29sIChTdHJpbmdQdHJVbmtub3duKTsNCi0NCi0gIFByaW50VG9rZW4gKFNUUklOR19UT0tFTiAo U1RSX0RQX0NVTVVMQVRJVkVfU0VDVF8xKSk7DQotICBQcmludFRva2VuIChTVFJJTkdfVE9LRU4g KFNUUl9EUF9DVU1VTEFUSVZFX1NFQ1RfMikpOw0KLSAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VO IChTVFJfRFBfREFTSEVTKSk7DQotDQotICBmb3IgKCBUSW5kZXggPSAwOyBUSW5kZXggPCBOdW1D dW07ICsrVEluZGV4KSB7DQotICAgIGlmIChDdW1EYXRhW1RJbmRleF0uQ291bnQgIT0gMCkgew0K LSAgICAgIEF2Z0R1ciA9IERpdlU2NHgzMiAoQ3VtRGF0YVtUSW5kZXhdLkR1cmF0aW9uLCBDdW1E YXRhW1RJbmRleF0uQ291bnQpOw0KLSAgICAgIEF2Z0R1ciA9IER1cmF0aW9uSW5NaWNyb1NlY29u ZHMoQXZnRHVyKTsNCi0gICAgICBEdXIgICAgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzKEN1bURh dGFbVEluZGV4XS5EdXJhdGlvbik7DQotICAgICAgTWF4RHVyID0gRHVyYXRpb25Jbk1pY3JvU2Vj b25kcyhDdW1EYXRhW1RJbmRleF0uTWF4RHVyKTsNCi0gICAgICBNaW5EdXIgPSBEdXJhdGlvbklu TWljcm9TZWNvbmRzKEN1bURhdGFbVEluZGV4XS5NaW5EdXIpOw0KLSAgICANCi0gICAgICBQcmlu dFRva2VuIChTVFJJTkdfVE9LRU4gKFNUUl9EUF9DVU1VTEFUSVZFX1NUQVRTKSwNCi0gICAgICAg ICAgICAgICAgICBDdW1EYXRhW1RJbmRleF0uTmFtZSwNCi0gICAgICAgICAgICAgICAgICBDdW1E YXRhW1RJbmRleF0uQ291bnQsDQotICAgICAgICAgICAgICAgICAgRHVyLA0KLSAgICAgICAgICAg ICAgICAgIEF2Z0R1ciwNCi0gICAgICAgICAgICAgICAgICBNaW5EdXIsDQotICAgICAgICAgICAg ICAgICAgTWF4RHVyDQotICAgICAgICAgICAgICAgICApOw0KLSAgICB9DQotICB9DQotDQotICAv Lw0KLSAgLy8gUHJpbnQgdGhlIGN1c3RvbSBjdW11bGF0aXZlIGRhdGEuDQotICAvLw0KLSAgaWYg KEN1c3RvbUN1bXVsYXRpdmVEYXRhICE9IE5VTEwpIHsNCi0gICAgaWYgKEN1c3RvbUN1bXVsYXRp dmVEYXRhLT5Db3VudCAhPSAwKSB7DQotICAgICAgQXZnRHVyID0gRGl2VTY0eDMyIChDdXN0b21D dW11bGF0aXZlRGF0YS0+RHVyYXRpb24sIEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5Db3VudCk7DQot ICAgICAgQXZnRHVyID0gRHVyYXRpb25Jbk1pY3JvU2Vjb25kcyAoQXZnRHVyKTsNCi0gICAgICBE dXIgICAgPSBEdXJhdGlvbkluTWljcm9TZWNvbmRzIChDdXN0b21DdW11bGF0aXZlRGF0YS0+RHVy YXRpb24pOw0KLSAgICAgIE1heER1ciA9IER1cmF0aW9uSW5NaWNyb1NlY29uZHMgKEN1c3RvbUN1 bXVsYXRpdmVEYXRhLT5NYXhEdXIpOw0KLSAgICAgIE1pbkR1ciA9IER1cmF0aW9uSW5NaWNyb1Nl Y29uZHMgKEN1c3RvbUN1bXVsYXRpdmVEYXRhLT5NaW5EdXIpOw0KLSAgICB9IGVsc2Ugew0KLSAg ICAgIEF2Z0R1ciA9IDA7DQotICAgICAgRHVyICAgID0gMDsNCi0gICAgICBNYXhEdXIgPSAwOw0K LSAgICAgIE1pbkR1ciA9IDA7DQotICAgIH0NCi0gICAgUHJpbnRUb2tlbiAoU1RSSU5HX1RPS0VO IChTVFJfRFBfQ1VNVUxBVElWRV9TVEFUUyksDQotICAgICAgICAgICAgICAgIEN1c3RvbUN1bXVs YXRpdmVEYXRhLT5OYW1lLA0KLSAgICAgICAgICAgICAgICBDdXN0b21DdW11bGF0aXZlRGF0YS0+ Q291bnQsDQotICAgICAgICAgICAgICAgIER1ciwNCi0gICAgICAgICAgICAgICAgQXZnRHVyLA0K LSAgICAgICAgICAgICAgICBNaW5EdXIsDQotICAgICAgICAgICAgICAgIE1heER1cg0KLSAgICAg ICAgICAgICAgICApOw0KLSAgfQ0KLX0NCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9EcF9B cHAvRHBVdGlsaXRpZXMuYyBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFV0aWxpdGllcy5jDQpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IGQzYTliNmVhYjMuLjAwMDAwMDAwMDANCi0t LSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9EcFV0aWxpdGllcy5jDQorKysgL2Rldi9udWxsDQpA QCAtMSw0ODkgKzAsMCBAQA0KLS8qKiBAZmlsZQ0KLSAgVXRpbGl0eSBmdW5jdGlvbnMgdXNlZCBi eSB0aGUgRHAgYXBwbGljYXRpb24uDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE3LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICAoQykgQ29weXJp Z2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQot ICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UNCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCi0gIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCi0NCi0gIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJB U0lTLA0KLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0qKi8NCi0NCi0jaW5jbHVkZSA8TGlicmFy eS9CYXNlTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KLSNpbmNs dWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9E ZWJ1Z0xpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5o Pg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1BlQ29mZkdldEVudHJ5UG9pbnRMaWIuaD4NCi0jaW5jbHVk ZSA8TGlicmFyeS9QcmludExpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5oPg0KLSNp bmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Ci0jaW5jbHVkZSA8TGlicmFyeS9EZXZpY2VQYXRoTGliLmg+DQotDQotI2luY2x1ZGUgPFBpL1Bp RmlybXdhcmVGaWxlLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvRHhlU2VydmljZXNMaWIuaD4NCi0N Ci0jaW5jbHVkZSA8UHJvdG9jb2wvTG9hZGVkSW1hZ2UuaD4NCi0jaW5jbHVkZSA8UHJvdG9jb2wv RHJpdmVyQmluZGluZy5oPg0KLSNpbmNsdWRlIDxQcm90b2NvbC9Db21wb25lbnROYW1lMi5oPg0K LSNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQotDQotI2luY2x1ZGUgPEd1aWQvUGVy Zm9ybWFuY2UuaD4NCi0NCi0jaW5jbHVkZSAiRHAuaCINCi0jaW5jbHVkZSAiTGl0ZXJhbHMuaCIN Ci0jaW5jbHVkZSAiRHBJbnRlcm5hbC5oIg0KLQ0KLS8qKg0KLSAgV3JhcCBvcmlnaW5hbCBGcmVl UG9vbCB0byBjaGVjayBOVUxMIHBvaW50ZXIgZmlyc3QuDQotDQotICBAcGFyYW1baW5dICAgIEJ1 ZmZlciAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBidWZmZXIgdG8gZnJlZS4NCi0NCi0qKi8NCi1W T0lEDQotU2FmZUZyZWVQb29sICgNCi0gIElOIFZPSUQgICAqQnVmZmVyDQotICApDQotew0KLSAg aWYgKEJ1ZmZlciAhPSBOVUxMKSB7DQotICAgIEZyZWVQb29sIChCdWZmZXIpOw0KLSAgfQ0KLX0N Ci0NCi0vKiogDQotICBDYWxjdWxhdGUgYW4gZXZlbnQncyBkdXJhdGlvbiBpbiB0aW1lciB0aWNr cy4NCi0gIA0KLSAgR2l2ZW4gdGhlIGNvdW50IGRpcmVjdGlvbiBhbmQgdGhlIGV2ZW50J3Mgc3Rh cnQgYW5kIGVuZCB0aW1lciB2YWx1ZXMsDQotICBjYWxjdWxhdGUgdGhlIGR1cmF0aW9uIG9mIHRo ZSBldmVudCBpbiB0aW1lciB0aWNrcy4gIEluZm9ybWF0aW9uIGZvcg0KLSAgdGhlIGN1cnJlbnQg bWVhc3VyZW1lbnQgaXMgcG9pbnRlZCB0byBieSB0aGUgcGFyYW1ldGVyLg0KLSAgDQotICBJZiB0 aGUgbWVhc3VyZW1lbnQncyBzdGFydCB0aW1lIGlzIDEsIGl0IGluZGljYXRlcyB0aGF0IHRoZSBk ZXZlbG9wZXINCi0gIGlzIGluZGljYXRpbmcgdGhhdCB0aGUgbWVhc3VyZW1lbnQgYmVnYW4gYXQg dGhlIHJlbGVhc2Ugb2YgcmVzZXQuDQotICBUaGUgc3RhcnQgdGltZSBpcyBhZGp1c3RlZCB0byB0 aGUgdGltZXIncyBzdGFydGluZyBjb3VudCBiZWZvcmUgcGVyZm9ybWluZw0KLSAgdGhlIGVsYXBz ZWQgdGltZSBjYWxjdWxhdGlvbi4NCi0gIA0KLSAgVGhlIGNhbGN1bGF0ZWQgZHVyYXRpb24sIGlu IHRpY2tzLCBpcyB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuDQotICB0aGUgbWVhc3Vy ZW1lbnQncyBlbmRpbmcgYW5kIHN0YXJ0aW5nIGNvdW50cy4NCi0gIA0KLSAgQHBhcmFtIE1lYXN1 cmVtZW50ICAgUG9pbnRlciB0byBhIE1FQVNVUkVNRU5UX1JFQ09SRCBzdHJ1Y3R1cmUgY29udGFp bmluZw0KLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBmb3IgdGhlIGN1cnJlbnQgbWVhc3Vy ZW1lbnQuDQotICANCi0gIEByZXR1cm4gICAgICAgICAgICAgIFRoZSA2NC1iaXQgZHVyYXRpb24g b2YgdGhlIGV2ZW50Lg0KLSoqLw0KLVVJTlQ2NA0KLUdldER1cmF0aW9uICgNCi0gIElOIE9VVCBN RUFTVVJFTUVOVF9SRUNPUkQgICAqTWVhc3VyZW1lbnQNCi0gICkNCi17DQotICBVSU5UNjQgICAg RHVyYXRpb247DQotICBCT09MRUFOICAgRXJyb3I7DQotDQotICBpZiAoTWVhc3VyZW1lbnQtPkVu ZFRpbWVTdGFtcCA9PSAwKSB7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgLy8gUEVSRl9T VEFSVCBtYWNyb3MgYXJlIGNhbGxlZCB3aXRoIGEgdmFsdWUgb2YgMSB0byBpbmRpY2F0ZQ0KLSAg Ly8gdGhlIGJlZ2lubmluZyBvZiB0aW1lLiAgU28sIGFkanVzdCB0aGUgc3RhcnQgdGlja2VyIHZh bHVlDQotICAvLyB0byB0aGUgcmVhbCBiZWdpbm5pbmcgb2YgdGltZS4NCi0gIC8vIEFzc3VtZXMg bm8gd3JhcGFyb3VuZC4gIEV2ZW4gdGhlbiwgdGhlcmUgaXMgYSB2ZXJ5IGxvdyBwcm9iYWJpbGl0 eQ0KLSAgLy8gb2YgaGF2aW5nIGEgdmFsaWQgU3RhcnRUaWNrZXIgdmFsdWUgb2YgMS4NCi0gIGlm IChNZWFzdXJlbWVudC0+U3RhcnRUaW1lU3RhbXAgPT0gMSkgew0KLSAgICBNZWFzdXJlbWVudC0+ U3RhcnRUaW1lU3RhbXAgPSBUaW1lckluZm8uU3RhcnRDb3VudDsNCi0gIH0NCi0gIGlmIChUaW1l ckluZm8uQ291bnRVcCkgew0KLSAgICBEdXJhdGlvbiA9IE1lYXN1cmVtZW50LT5FbmRUaW1lU3Rh bXAgLSBNZWFzdXJlbWVudC0+U3RhcnRUaW1lU3RhbXA7DQotICAgIEVycm9yID0gKEJPT0xFQU4p KER1cmF0aW9uID4gTWVhc3VyZW1lbnQtPkVuZFRpbWVTdGFtcCk7DQotICB9DQotICBlbHNlIHsN Ci0gICAgRHVyYXRpb24gPSBNZWFzdXJlbWVudC0+U3RhcnRUaW1lU3RhbXAgLSBNZWFzdXJlbWVu dC0+RW5kVGltZVN0YW1wOw0KLSAgICBFcnJvciA9IChCT09MRUFOKShEdXJhdGlvbiA+IE1lYXN1 cmVtZW50LT5TdGFydFRpbWVTdGFtcCk7DQotICB9DQotDQotICBpZiAoRXJyb3IpIHsNCi0gICAg REVCVUcgKChFRklfRF9FUlJPUiwgQUxpdF9UaW1lckxpYkVycm9yKSk7DQotICAgIER1cmF0aW9u ID0gMDsNCi0gIH0NCi0gIHJldHVybiBEdXJhdGlvbjsNCi19DQotDQotLyoqIA0KLSAgRGV0ZXJt aW5lIHdoZXRoZXIgdGhlIE1lYXN1cmVtZW50IHJlY29yZCBpcyBmb3IgYW4gRUZJIFBoYXNlLg0K LSAgDQotICBUaGUgVG9rZW4gYW5kIE1vZHVsZSBtZW1iZXJzIG9mIHRoZSBtZWFzdXJlbWVudCBy ZWNvcmQgYXJlIGNoZWNrZWQuDQotICBNb2R1bGUgbXVzdCBiZSBlbXB0eSBhbmQgVG9rZW4gbXVz dCBiZSBvbmUgb2YgU0VDLCBQRUksIERYRSwgQkRTLCBvciBTSEVMTC4NCi0gIA0KLSAgQHBhcmFt W2luXSAgTWVhc3VyZW1lbnQgQSBwb2ludGVyIHRvIHRoZSBNZWFzdXJlbWVudCByZWNvcmQgdG8g dGVzdC4NCi0gIA0KLSAgQHJldHZhbCAgICAgVFJVRSAgICAgICAgVGhlIG1lYXN1cmVtZW50IHJl Y29yZCBpcyBmb3IgYW4gRUZJIFBoYXNlLg0KLSAgQHJldHZhbCAgICAgRkFMU0UgICAgICAgVGhl IG1lYXN1cmVtZW50IHJlY29yZCBpcyBOT1QgZm9yIGFuIEVGSSBQaGFzZS4NCi0qKi8NCi1CT09M RUFODQotSXNQaGFzZSgNCi0gIElOIE1FQVNVUkVNRU5UX1JFQ09SRCAgICAgICAgKk1lYXN1cmVt ZW50DQotICApDQotew0KLSAgQk9PTEVBTiAgIFJldFZhbDsNCi0NCi0gIFJldFZhbCA9IChCT09M RUFOKSggKCAqTWVhc3VyZW1lbnQtPk1vZHVsZSA9PSAnXDAnKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmJg0KLSAgICAgICAgICAgICgoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+ VG9rZW4sIEFMaXRfU0VDLCBQRVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkgICAgfHwNCi0gICAgICAg ICAgICAgKEFzY2lpU3RybkNtcCAoTWVhc3VyZW1lbnQtPlRva2VuLCBBTGl0X1BFSSwgUEVSRl9U T0tFTl9MRU5HVEgpID09IDApICAgIHx8DQotICAgICAgICAgICAgIChBc2NpaVN0cm5DbXAgKE1l YXN1cmVtZW50LT5Ub2tlbiwgQUxpdF9EWEUsIFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSAgICB8 fA0KLSAgICAgICAgICAgICAoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+VG9rZW4sIEFMaXRf QkRTLCBQRVJGX1RPS0VOX0xFTkdUSCkgPT0gMCkpDQotICAgICAgICAgICAgKTsNCi0gIHJldHVy biBSZXRWYWw7DQotfQ0KLQ0KLS8qKiANCi0gIEdldCB0aGUgZmlsZSBuYW1lIHBvcnRpb24gb2Yg dGhlIFBkYiBGaWxlIE5hbWUuDQotICANCi0gIFRoZSBwb3J0aW9uIG9mIHRoZSBQZGIgRmlsZSBO YW1lIGJldHdlZW4gdGhlIGxhc3QgYmFja3NsYXNoIGFuZA0KLSAgZWl0aGVyIGEgZm9sbG93aW5n IHBlcmlvZCBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgY29udmVydGVkDQotICB0byBVbmlj b2RlIGFuZCBjb3BpZWQgaW50byBVbmljb2RlQnVmZmVyLiAgVGhlIG5hbWUgaXMgdHJ1bmNhdGVk LA0KLSAgaWYgbmVjZXNzYXJ5LCB0byBlbnN1cmUgdGhhdCBVbmljb2RlQnVmZmVyIGlzIG5vdCBv dmVycnVuLg0KLSAgDQotICBAcGFyYW1baW5dICBQZGJGaWxlTmFtZSAgICAgUGRiIGZpbGUgbmFt ZS4NCi0gIEBwYXJhbVtvdXRdIFVuaWNvZGVCdWZmZXIgICBUaGUgcmVzdWx0YW50IFVuaWNvZGUg RmlsZSBOYW1lLg0KLSAgDQotKiovDQotVk9JRA0KLUdldFNob3J0UGRiRmlsZU5hbWUgKA0KLSAg SU4gIENIQVI4ICAgICAqUGRiRmlsZU5hbWUsDQotICBPVVQgQ0hBUjE2ICAgICpVbmljb2RlQnVm ZmVyDQotICApDQotew0KLSAgVUlOVE4gSW5kZXhBOyAgICAgLy8gQ3VycmVudCB3b3JrIGxvY2F0 aW9uIHdpdGhpbiBhbiBBU0NJSSBzdHJpbmcuDQotICBVSU5UTiBJbmRleFU7ICAgICAvLyBDdXJy ZW50IHdvcmsgbG9jYXRpb24gd2l0aGluIGEgVW5pY29kZSBzdHJpbmcuDQotICBVSU5UTiBTdGFy dEluZGV4Ow0KLSAgVUlOVE4gRW5kSW5kZXg7DQotDQotICBaZXJvTWVtIChVbmljb2RlQnVmZmVy LCAoRFBfR0FVR0VfU1RSSU5HX0xFTkdUSCArIDEpICogc2l6ZW9mIChDSEFSMTYpKTsNCi0NCi0g IGlmIChQZGJGaWxlTmFtZSA9PSBOVUxMKSB7DQotICAgIFN0ckNweVMgKFVuaWNvZGVCdWZmZXIs IERQX0dBVUdFX1NUUklOR19MRU5HVEggKyAxLCBMIiAiKTsNCi0gIH0gZWxzZSB7DQotICAgIFN0 YXJ0SW5kZXggPSAwOw0KLSAgICBmb3IgKEVuZEluZGV4ID0gMDsgUGRiRmlsZU5hbWVbRW5kSW5k ZXhdICE9IDA7IEVuZEluZGV4KyspDQotICAgICAgOw0KLSAgICBmb3IgKEluZGV4QSA9IDA7IFBk YkZpbGVOYW1lW0luZGV4QV0gIT0gMDsgSW5kZXhBKyspIHsNCi0gICAgICBpZiAoKFBkYkZpbGVO YW1lW0luZGV4QV0gPT0gJ1xcJykgfHwgKFBkYkZpbGVOYW1lW0luZGV4QV0gPT0gJy8nKSkgew0K LSAgICAgICAgU3RhcnRJbmRleCA9IEluZGV4QSArIDE7DQotICAgICAgfQ0KLQ0KLSAgICAgIGlm IChQZGJGaWxlTmFtZVtJbmRleEFdID09ICcuJykgew0KLSAgICAgICAgRW5kSW5kZXggPSBJbmRl eEE7DQotICAgICAgfQ0KLSAgICB9DQotDQotICAgIEluZGV4VSA9IDA7DQotICAgIGZvciAoSW5k ZXhBID0gU3RhcnRJbmRleDsgSW5kZXhBIDwgRW5kSW5kZXg7IEluZGV4QSsrKSB7DQotICAgICAg VW5pY29kZUJ1ZmZlcltJbmRleFVdID0gKENIQVIxNikgUGRiRmlsZU5hbWVbSW5kZXhBXTsNCi0g ICAgICBJbmRleFUrKzsNCi0gICAgICBpZiAoSW5kZXhVID49IERQX0dBVUdFX1NUUklOR19MRU5H VEgpIHsNCi0gICAgICAgIFVuaWNvZGVCdWZmZXJbRFBfR0FVR0VfU1RSSU5HX0xFTkdUSF0gPSAw Ow0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLSAgICB9DQotICB9DQotfQ0KLQ0KLS8qKiAN Ci0gIEdldCBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGFuIGltYWdlIGhhbmRsZS4NCi0gIFRo ZSBmb2xsb3dpbmcgbWV0aG9kcyB3aWxsIGJlIHRyaWVkIG9yZGVybHk6DQotICAgIDEuIEltYWdl IFBEQg0KLSAgICAyLiBDb21wb25lbnROYW1lMiBwcm90b2NvbA0KLSAgICAzLiBGRlMgVUkgc2Vj dGlvbg0KLSAgICA0LiBJbWFnZSBHVUlEDQotICAgIDUuIEltYWdlIERldmljZVBhdGgNCi0gICAg Ni4gVW5rbm93biBEcml2ZXIgTmFtZQ0KLQ0KLSAgQHBhcmFtW2luXSAgICBIYW5kbGUNCi0NCi0g IEBwb3N0ICAgVGhlIHJlc3VsdGluZyBVbmljb2RlIG5hbWUgc3RyaW5nIGlzIHN0b3JlZCBpbiB0 aGUNCi0gICAgICAgICAgbUdhdWdlU3RyaW5nIGdsb2JhbCBhcnJheS4NCi0NCi0qKi8NCi1WT0lE DQotR2V0TmFtZUZyb21IYW5kbGUgKA0KLSAgSU4gRUZJX0hBTkRMRSAgIEhhbmRsZQ0KLSAgKQ0K LXsNCi0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQotICBFRklfTE9BREVE X0lNQUdFX1BST1RPQ09MICAgKkltYWdlOw0KLSAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAg ICpQZGJGaWxlTmFtZTsNCi0gIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAqRHJpdmVyQmlu ZGluZzsNCi0gIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICBTdHJpbmdQdHI7DQotICBFRklf REVWSUNFX1BBVEhfUFJPVE9DT0wgICAgKkxvYWRlZEltYWdlRGV2aWNlUGF0aDsNCi0gIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAqRGV2aWNlUGF0aDsNCi0gIEVGSV9HVUlEICAgICAgICAg ICAgICAgICAgICAqTmFtZUd1aWQ7DQotICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgKk5h bWVTdHJpbmc7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nU2l6ZTsNCi0g IENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAqUGxhdGZvcm1MYW5ndWFnZTsNCi0gIENIQVI4 ICAgICAgICAgICAgICAgICAgICAgICAqQmVzdExhbmd1YWdlOw0KLSAgRUZJX0NPTVBPTkVOVF9O QU1FMl9QUk9UT0NPTCAgICAgICpDb21wb25lbnROYW1lMjsNCi0NCi0gIEltYWdlID0gTlVMTDsN Ci0gIExvYWRlZEltYWdlRGV2aWNlUGF0aCA9IE5VTEw7DQotICBEZXZpY2VQYXRoID0gTlVMTDsN Ci0gIEJlc3RMYW5ndWFnZSAgICAgPSBOVUxMOw0KLSAgUGxhdGZvcm1MYW5ndWFnZSA9IE5VTEw7 DQotDQotICAvLw0KLSAgLy8gTWV0aG9kIDE6IEdldCB0aGUgbmFtZSBzdHJpbmcgZnJvbSBpbWFn ZSBQREINCi0gIC8vDQotICBTdGF0dXMgPSBnQlMtPkhhbmRsZVByb3RvY29sICgNCi0gICAgICAg ICAgICAgICAgICBIYW5kbGUsDQotICAgICAgICAgICAgICAgICAgJmdFZmlMb2FkZWRJbWFnZVBy b3RvY29sR3VpZCwNCi0gICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkltYWdlDQotICAgICAg ICAgICAgICAgICAgKTsNCi0NCi0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCi0gICAgU3Rh dHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KLSAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0K LSAgICAgICAgICAgICAgICAgICAgJmdFZmlEcml2ZXJCaW5kaW5nUHJvdG9jb2xHdWlkLA0KLSAg ICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZEcml2ZXJCaW5kaW5nLA0KLSAgICAgICAgICAg ICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsDQotICAgICAgICAgICAg ICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCi0gICAgICAgICAgICAgICAg ICAgICk7DQotICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQotICAgICAgU3RhdHVzID0g Z0JTLT5IYW5kbGVQcm90b2NvbCAoDQotICAgICAgICAgICAgICAgICAgICAgIERyaXZlckJpbmRp bmctPkltYWdlSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAgICAmZ0VmaUxvYWRlZEltYWdl UHJvdG9jb2xHdWlkLA0KLSAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJkltYWdlDQot ICAgICAgICAgICAgICAgICAgICAgICk7DQotICAgIH0NCi0gIH0NCi0NCi0gIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQotICAgIFBkYkZpbGVOYW1lID0gUGVDb2ZmTG9hZGVyR2V0UGRiUG9p bnRlciAoSW1hZ2UtPkltYWdlQmFzZSk7DQotDQotICAgIGlmIChQZGJGaWxlTmFtZSAhPSBOVUxM KSB7DQotICAgICAgR2V0U2hvcnRQZGJGaWxlTmFtZSAoUGRiRmlsZU5hbWUsIG1HYXVnZVN0cmlu Zyk7DQotICAgICAgcmV0dXJuOw0KLSAgICB9DQotICB9DQotDQotICAvLw0KLSAgLy8gTWV0aG9k IDI6IEdldCB0aGUgbmFtZSBzdHJpbmcgZnJvbSBDb21wb25lbnROYW1lMiBwcm90b2NvbA0KLSAg Ly8NCi0gIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KLSAgICAgICAgICAgICAgICAg IEhhbmRsZSwNCi0gICAgICAgICAgICAgICAgICAmZ0VmaUNvbXBvbmVudE5hbWUyUHJvdG9jb2xH dWlkLA0KLSAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmQ29tcG9uZW50TmFtZTINCi0gICAg ICAgICAgICAgICAgICApOw0KLSAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCi0gICAgLy8N Ci0gICAgLy8gR2V0IHRoZSBjdXJyZW50IHBsYXRmb3JtIGxhbmd1YWdlIHNldHRpbmcNCi0gICAg Ly8NCi0gICAgR2V0RWZpR2xvYmFsVmFyaWFibGUyIChMIlBsYXRmb3JtTGFuZyIsIChWT0lEKiop JlBsYXRmb3JtTGFuZ3VhZ2UsIE5VTEwpOw0KLQ0KLSAgICBCZXN0TGFuZ3VhZ2UgPSBHZXRCZXN0 TGFuZ3VhZ2UoDQotICAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50TmFtZTItPlN1cHBvcnRl ZExhbmd1YWdlcywNCi0gICAgICAgICAgICAgICAgICAgICBGQUxTRSwNCi0gICAgICAgICAgICAg ICAgICAgICBQbGF0Zm9ybUxhbmd1YWdlLA0KLSAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVu dE5hbWUyLT5TdXBwb3J0ZWRMYW5ndWFnZXMsDQotICAgICAgICAgICAgICAgICAgICAgTlVMTA0K LSAgICAgICAgICAgICAgICAgICAgICk7DQotDQotICAgIFNhZmVGcmVlUG9vbCAoUGxhdGZvcm1M YW5ndWFnZSk7DQotICAgIFN0YXR1cyA9IENvbXBvbmVudE5hbWUyLT5HZXREcml2ZXJOYW1lICgN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50TmFtZTIsDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEJlc3RMYW5ndWFnZSwNCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJlN0cmluZ1B0cg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOw0KLSAgICBTYWZlRnJlZVBvb2wgKEJlc3RMYW5ndWFnZSk7DQotICAgIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQotICAgICAgU3RybkNweVMgKA0KLSAgICAgICAgbUdhdWdlU3RyaW5n LA0KLSAgICAgICAgRFBfR0FVR0VfU1RSSU5HX0xFTkdUSCArIDEsDQotICAgICAgICBTdHJpbmdQ dHIsDQotICAgICAgICBEUF9HQVVHRV9TVFJJTkdfTEVOR1RIDQotICAgICAgICApOw0KLSAgICAg IHJldHVybjsNCi0gICAgfQ0KLSAgfQ0KLQ0KLSAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2Nv bCAoDQotICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICZnRWZp TG9hZGVkSW1hZ2VEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KLSAgICAgICAgICAgICAgICAgIChW T0lEICoqKSAmTG9hZGVkSW1hZ2VEZXZpY2VQYXRoDQotICAgICAgICAgICAgICAgICAgKTsNCi0g IGlmICghRUZJX0VSUk9SIChTdGF0dXMpICYmIChMb2FkZWRJbWFnZURldmljZVBhdGggIT0gTlVM TCkpIHsNCi0gICAgRGV2aWNlUGF0aCA9IExvYWRlZEltYWdlRGV2aWNlUGF0aDsNCi0gIH0gZWxz ZSBpZiAoSW1hZ2UgIT0gTlVMTCkgew0KLSAgICBEZXZpY2VQYXRoID0gSW1hZ2UtPkZpbGVQYXRo Ow0KLSAgfQ0KLQ0KLSAgaWYgKERldmljZVBhdGggIT0gTlVMTCkgew0KLSAgICAvLw0KLSAgICAv LyBUcnkgdG8gZ2V0IGltYWdlIEdVSUQgZnJvbSBpbWFnZSBEZXZpY2VQYXRoDQotICAgIC8vDQot ICAgIE5hbWVHdWlkID0gTlVMTDsNCi0gICAgd2hpbGUgKCFJc0RldmljZVBhdGhFbmRUeXBlIChE ZXZpY2VQYXRoKSkgew0KLSAgICAgIE5hbWVHdWlkID0gRWZpR2V0TmFtZUd1aWRGcm9tRndWb2xE ZXZpY2VQYXRoTm9kZSAoKE1FRElBX0ZXX1ZPTF9GSUxFUEFUSF9ERVZJQ0VfUEFUSCAqKSBEZXZp Y2VQYXRoKTsNCi0gICAgICBpZiAoTmFtZUd1aWQgIT0gTlVMTCkgew0KLSAgICAgICAgYnJlYWs7 DQotICAgICAgfQ0KLSAgICAgIERldmljZVBhdGggPSBOZXh0RGV2aWNlUGF0aE5vZGUgKERldmlj ZVBhdGgpOw0KLSAgICB9DQotDQotICAgIGlmIChOYW1lR3VpZCAhPSBOVUxMKSB7DQotICAgICAg Ly8NCi0gICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpbWFnZSdzIEZGUyBVSSBzZWN0aW9uIGJ5IGlt YWdlIEdVSUQNCi0gICAgICAvLw0KLSAgICAgIE5hbWVTdHJpbmcgPSBOVUxMOw0KLSAgICAgIFN0 cmluZ1NpemUgPSAwOw0KLSAgICAgIFN0YXR1cyA9IEdldFNlY3Rpb25Gcm9tQW55RnYgKA0KLSAg ICAgICAgICAgICAgICBOYW1lR3VpZCwNCi0gICAgICAgICAgICAgICAgRUZJX1NFQ1RJT05fVVNF Ul9JTlRFUkZBQ0UsDQotICAgICAgICAgICAgICAgIDAsDQotICAgICAgICAgICAgICAgIChWT0lE ICoqKSAmTmFtZVN0cmluZywNCi0gICAgICAgICAgICAgICAgJlN0cmluZ1NpemUNCi0gICAgICAg ICAgICAgICAgKTsNCi0NCi0gICAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KLSAgICAg ICAgLy8NCi0gICAgICAgIC8vIE1ldGhvZCAzLiBHZXQgdGhlIG5hbWUgc3RyaW5nIGZyb20gRkZT IFVJIHNlY3Rpb24NCi0gICAgICAgIC8vDQotICAgICAgICBTdHJuQ3B5UyAoDQotICAgICAgICAg IG1HYXVnZVN0cmluZywNCi0gICAgICAgICAgRFBfR0FVR0VfU1RSSU5HX0xFTkdUSCArIDEsDQot ICAgICAgICAgIE5hbWVTdHJpbmcsDQotICAgICAgICAgIERQX0dBVUdFX1NUUklOR19MRU5HVEgN Ci0gICAgICAgICAgKTsNCi0gICAgICAgIEZyZWVQb29sIChOYW1lU3RyaW5nKTsNCi0gICAgICB9 IGVsc2Ugew0KLSAgICAgICAgLy8NCi0gICAgICAgIC8vIE1ldGhvZCA0OiBHZXQgdGhlIG5hbWUg c3RyaW5nIGZyb20gaW1hZ2UgR1VJRA0KLSAgICAgICAgLy8NCi0gICAgICAgIFVuaWNvZGVTUHJp bnQgKG1HYXVnZVN0cmluZywgc2l6ZW9mIChtR2F1Z2VTdHJpbmcpLCBMIiVnIiwgTmFtZUd1aWQp Ow0KLSAgICAgIH0NCi0gICAgICByZXR1cm47DQotICAgIH0gZWxzZSB7DQotICAgICAgLy8NCi0g ICAgICAvLyBNZXRob2QgNTogR2V0IHRoZSBuYW1lIHN0cmluZyBmcm9tIGltYWdlIERldmljZVBh dGgNCi0gICAgICAvLw0KLSAgICAgIE5hbWVTdHJpbmcgPSBDb252ZXJ0RGV2aWNlUGF0aFRvVGV4 dCAoRGV2aWNlUGF0aCwgVFJVRSwgRkFMU0UpOw0KLSAgICAgIGlmIChOYW1lU3RyaW5nICE9IE5V TEwpIHsNCi0gICAgICAgIFN0cm5DcHlTICgNCi0gICAgICAgICAgbUdhdWdlU3RyaW5nLA0KLSAg ICAgICAgICBEUF9HQVVHRV9TVFJJTkdfTEVOR1RIICsgMSwNCi0gICAgICAgICAgTmFtZVN0cmlu ZywNCi0gICAgICAgICAgRFBfR0FVR0VfU1RSSU5HX0xFTkdUSA0KLSAgICAgICAgICApOw0KLSAg ICAgICAgRnJlZVBvb2wgKE5hbWVTdHJpbmcpOw0KLSAgICAgICAgcmV0dXJuOw0KLSAgICAgIH0N Ci0gICAgfQ0KLSAgfQ0KLQ0KLSAgLy8NCi0gIC8vIE1ldGhvZCA2OiBVbmtub3duIERyaXZlciBO YW1lDQotICAvLw0KLSAgU3RyaW5nUHRyID0gSGlpR2V0U3RyaW5nIChnSGlpSGFuZGxlLCBTVFJJ TkdfVE9LRU4gKFNUUl9EUF9FUlJPUl9OQU1FKSwgTlVMTCk7DQotICBBU1NFUlQgKFN0cmluZ1B0 ciAhPSBOVUxMKTsNCi0gIFN0ckNweVMgKG1HYXVnZVN0cmluZywgRFBfR0FVR0VfU1RSSU5HX0xF TkdUSCArIDEsIFN0cmluZ1B0cik7DQotICBGcmVlUG9vbCAoU3RyaW5nUHRyKTsNCi0gIHJldHVy bjsNCi19DQotDQotLyoqIA0KLSAgQ2FsY3VsYXRlIHRoZSBEdXJhdGlvbiBpbiBtaWNyb3NlY29u ZHMuDQotICANCi0gIER1cmF0aW9uIGlzIG11bHRpcGxpZWQgYnkgMTAwMCwgaW5zdGVhZCBvZiBG cmVxdWVuY3kgYmVpbmcgZGl2aWRlZCBieSAxMDAwIG9yDQotICBtdWx0aXBseWluZyB0aGUgcmVz dWx0IGJ5IDEwMDAsIGluIG9yZGVyIHRvIG1haW50YWluIHByZWNpc2lvbi4gIFNpbmNlIER1cmF0 aW9uIGlzDQotICBhIDY0LWJpdCB2YWx1ZSwgbXVsdGlwbHlpbmcgaXQgYnkgMTAwMCBpcyB1bmxp a2VseSB0byBwcm9kdWNlIGFuIG92ZXJmbG93Lg0KLSAgDQotICBUaGUgdGltZSBpcyBjYWxjdWxh dGVkIGFzIChEdXJhdGlvbiAqIDEwMDApIC8gVGltZXJfRnJlcXVlbmN5Lg0KLSAgDQotICBAcGFy YW1baW5dICBEdXJhdGlvbiAgIFRoZSBldmVudCBkdXJhdGlvbiBpbiB0aW1lciB0aWNrcy4NCi0g IA0KLSAgQHJldHVybiAgICAgQSA2NC1iaXQgdmFsdWUgd2hpY2ggaXMgdGhlIEVsYXBzZWQgdGlt ZSBpbiBtaWNyb3NlY29uZHMuDQotKiovDQotVUlOVDY0DQotRHVyYXRpb25Jbk1pY3JvU2Vjb25k cyAoDQotICBJTiBVSU5UNjQgRHVyYXRpb24NCi0gICkNCi17DQotICBVSU5UNjQgVGVtcDsNCi0N Ci0gIFRlbXAgPSBNdWx0VTY0eDMyIChEdXJhdGlvbiwgMTAwMCk7DQotICByZXR1cm4gRGl2VTY0 eDMyIChUZW1wLCBUaW1lckluZm8uRnJlcXVlbmN5KTsNCi19DQotDQotLyoqIA0KLSAgRm9ybWF0 dGVkIFByaW50IHVzaW5nIGEgSGlpIFRva2VuIHRvIHJlZmVyZW5jZSB0aGUgbG9jYWxpemVkIGZv cm1hdCBzdHJpbmcuDQotICANCi0gIEBwYXJhbVtpbl0gIFRva2VuICAgQSBISUkgdG9rZW4gYXNz b2NpYXRlZCB3aXRoIGEgbG9jYWxpemVkIFVuaWNvZGUgc3RyaW5nLg0KLSAgQHBhcmFtW2luXSAg Li4uICAgICBUaGUgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4NCi0gIA0KLSAgQHJldHVybiAgICAg ICAgICAgICBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29udmVydGVkIGJ5IFVuaWNvZGVWU1By aW50KCkuDQotICANCi0qKi8NCi1VSU5UTg0KLUVGSUFQSQ0KLVByaW50VG9rZW4gKA0KLSAgSU4g VUlOVDE2ICAgICAgICAgICBUb2tlbiwNCi0gIC4uLg0KLSAgKQ0KLXsNCi0gIFZBX0xJU1QgICAg ICAgICAgIE1hcmtlcjsNCi0gIEVGSV9TVFJJTkcgICAgICAgIFN0cmluZ1B0cjsNCi0gIFVJTlRO ICAgICAgICAgICAgIFJldHVybjsNCi0gIFVJTlROICAgICAgICAgICAgIEJ1ZmZlclNpemU7DQot DQotICBTdHJpbmdQdHIgPSBIaWlHZXRTdHJpbmcgKGdIaWlIYW5kbGUsIFRva2VuLCBOVUxMKTsN Ci0gIEFTU0VSVCAoU3RyaW5nUHRyICE9IE5VTEwpOw0KLQ0KLSAgVkFfU1RBUlQgKE1hcmtlciwg VG9rZW4pOw0KLQ0KLSAgQnVmZmVyU2l6ZSA9IChQY2RHZXQzMiAoUGNkVWVmaUxpYk1heFByaW50 QnVmZmVyU2l6ZSkgKyAxKSAqIHNpemVvZiAoQ0hBUjE2KTsNCi0NCi0gIGlmIChtUHJpbnRUb2tl bkJ1ZmZlciA9PSBOVUxMKSB7DQotICAgIG1QcmludFRva2VuQnVmZmVyID0gQWxsb2NhdGVQb29s IChCdWZmZXJTaXplKTsNCi0gICAgQVNTRVJUIChtUHJpbnRUb2tlbkJ1ZmZlciAhPSBOVUxMKTsN Ci0gIH0NCi0gIFNldE1lbSggbVByaW50VG9rZW5CdWZmZXIsIEJ1ZmZlclNpemUsIDApOw0KLQ0K LSAgUmV0dXJuID0gVW5pY29kZVZTUHJpbnQgKG1QcmludFRva2VuQnVmZmVyLCBCdWZmZXJTaXpl LCBTdHJpbmdQdHIsIE1hcmtlcik7DQotICBWQV9FTkQgKE1hcmtlcik7DQotICANCi0gIGlmIChS ZXR1cm4gPiAwICYmIGdTVC0+Q29uT3V0ICE9IE5VTEwpIHsNCi0gICAgZ1NULT5Db25PdXQtPk91 dHB1dFN0cmluZyAoZ1NULT5Db25PdXQsIG1QcmludFRva2VuQnVmZmVyKTsNCi0gIH0NCi0gIEZy ZWVQb29sIChTdHJpbmdQdHIpOw0KLSAgcmV0dXJuIFJldHVybjsNCi19DQotDQotLyoqIA0KLSAg R2V0IGluZGV4IG9mIE1lYXN1cmVtZW50IFJlY29yZCdzIG1hdGNoIGluIHRoZSBDdW1EYXRhIGFy cmF5Lg0KLSAgDQotICBJZiB0aGUgTWVhc3VyZW1lbnQncyBUb2tlbiB2YWx1ZSBtYXRjaGVzIGEg VG9rZW4gaW4gb25lIG9mIHRoZSBDdW1EYXRhDQotICByZWNvcmRzLCB0aGUgaW5kZXggb2YgdGhl IG1hdGNoaW5nIHJlY29yZCBpcyByZXR1cm5lZC4gIFRoZSByZXR1cm5lZA0KLSAgaW5kZXggaXMg YSBzaWduZWQgdmFsdWUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGluZGljYXRlIHRoYXQN Ci0gIHRoZSBNZWFzdXJlbWVudCBkaWRuJ3QgbWF0Y2ggYW55IGVudHJ5IGluIHRoZSBDdW1EYXRh IGFycmF5Lg0KLSAgDQotICBAcGFyYW1baW5dICBNZWFzdXJlbWVudCBBIHBvaW50ZXIgdG8gYSBN ZWFzdXJlbWVudCBSZWNvcmQgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgQ3VtRGF0YSBhcnJheS4NCi0g IA0KLSAgQHJldHZhbCAgICAgPDAgICAgVG9rZW4gaXMgbm90IGluIHRoZSBDdW1EYXRhIGFycmF5 Lg0KLSAgQHJldHZhbCAgICAgPj0wICAgUmV0dXJuIHZhbHVlIGlzIHRoZSBpbmRleCBpbnRvIEN1 bURhdGEgd2hlcmUgVG9rZW4gaXMgZm91bmQuDQotKiovDQotSU5UTg0KLUdldEN1bXVsYXRpdmVJ dGVtKA0KLSAgSU4gTUVBU1VSRU1FTlRfUkVDT1JEICAgKk1lYXN1cmVtZW50DQotICApDQotew0K LSAgSU5UTiAgICBJbmRleDsNCi0NCi0gIGZvciggSW5kZXggPSAwOyBJbmRleCA8IChJTlROKU51 bUN1bTsgKytJbmRleCkgew0KLSAgICBpZiAoQXNjaWlTdHJuQ21wIChNZWFzdXJlbWVudC0+VG9r ZW4sIEN1bURhdGFbSW5kZXhdLk5hbWUsIFBFUkZfVE9LRU5fTEVOR1RIKSA9PSAwKSB7DQotICAg ICAgcmV0dXJuIEluZGV4OyAgLy8gRXhpdCwgd2UgZm91bmQgYSBtYXRjaA0KLSAgICB9DQotICB9 DQotICAvLyBJZiB0aGUgZm9yIGxvb3AgZXhpdHMsIFRva2VuIHdhcyBub3QgZm91bmQuDQotICBy ZXR1cm4gLTE7ICAgLy8gSW5kaWNhdGUgZmFpbHVyZQ0KLX0NCmRpZmYgLS1naXQgYS9QZXJmb3Jt YW5jZVBrZy9EcF9BcHAvTGl0ZXJhbHMuYyBiL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9MaXRlcmFs cy5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IGMxY2RkZmI5ZmYuLjAwMDAwMDAw MDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0RwX0FwcC9MaXRlcmFscy5jDQorKysgL2Rldi9udWxs DQpAQCAtMSwyMiArMCwwIEBADQotLyoqIEBmaWxlDQotICBEZWZpbml0aW9ucyBvZiBBU0NJSSBz dHJpbmcgbGl0ZXJhbHMgdXNlZCBieSBEUC4NCi0NCi0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0gIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQot ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSoqLw0KLSNpbmNsdWRlIDxQZXJmb3JtYW5jZVRva2Vu cy5oPg0KLQ0KLS8vIEFTQ0lJIFN0cmluZyBsaXRlcmFscyB3aGljaCBwcm9iYWJseSBkb24ndCBu ZWVkIHRyYW5zbGF0aW9uDQotQ0hBUjggY29uc3QgQUxpdF9UaW1lckxpYkVycm9yW10gPSAiVGlt ZXIgbGlicmFyeSBpbnN0YW5jZSBlcnJvciFcbiI7DQotQ0hBUjggY29uc3QgQUxpdF9TRUNbXSAg ICA9IFNFQ19UT0s7DQotQ0hBUjggY29uc3QgQUxpdF9EWEVbXSAgICA9IERYRV9UT0s7DQotQ0hB UjggY29uc3QgQUxpdF9QRUlbXSAgICA9IFBFSV9UT0s7DQotQ0hBUjggY29uc3QgQUxpdF9CRFNb XSAgICA9IEJEU19UT0s7DQotQ0hBUjggY29uc3QgQUxpdF9CZHNUT1tdICA9ICJCZHNUaW1lT3V0 IjsNCi1DSEFSOCBjb25zdCBBTGl0X1BFSU1bXSAgID0gIlBFSU0iOw0KZGlmZiAtLWdpdCBhL1Bl cmZvcm1hbmNlUGtnL0RwX0FwcC9MaXRlcmFscy5oIGIvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0xp dGVyYWxzLmgNCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggOGFlYzA5YzAyNC4uMDAw MDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cvRHBfQXBwL0xpdGVyYWxzLmgNCisrKyAvZGV2 L251bGwNCkBAIC0xLDI2ICswLDAgQEANCi0vKiogQGZpbGUNCi0gIERlY2xhcmF0aW9ucyBvZiBB U0NJSSBzdHJpbmcgbGl0ZXJhbHMgdXNlZCBieSBEUC4NCi0NCi0gIENvcHlyaWdodCAoYykgMjAw OSAtIDIwMTAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0g IFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZQ0KLSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24u ICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFT SVMsDQotICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSoqLw0KLSNpZm5kZWYgX0xJVEVSQUxTX0hf DQotI2RlZmluZSBfTElURVJBTFNfSF8NCi0NCi0vLyBBU0NJSSBTdHJpbmcgbGl0ZXJhbHMgd2hp Y2ggcHJvYmFibHkgZG9uJ3QgbmVlZCB0cmFuc2xhdGlvbg0KLWV4dGVybiBDSEFSOCBjb25zdCBB TGl0X1RpbWVyTGliRXJyb3JbXTsNCi1leHRlcm4gQ0hBUjggY29uc3QgQUxpdF9TRUNbXTsNCi1l eHRlcm4gQ0hBUjggY29uc3QgQUxpdF9EWEVbXTsNCi1leHRlcm4gQ0hBUjggY29uc3QgQUxpdF9T SEVMTFtdOw0KLWV4dGVybiBDSEFSOCBjb25zdCBBTGl0X1BFSVtdOw0KLWV4dGVybiBDSEFSOCBj b25zdCBBTGl0X0JEU1tdOw0KLWV4dGVybiBDSEFSOCBjb25zdCBBTGl0X0Jkc1RPW107DQotZXh0 ZXJuIENIQVI4IGNvbnN0IEFMaXRfUEVJTVtdOw0KLQ0KLSNlbmRpZiAgLy8gX0xJVEVSQUxTX0hf DQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1BlcmZvcm1hbmNlUGtn VG9rZW5TcGFjZS5oIGIvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1BlcmZvcm1hbmNlUGtn VG9rZW5TcGFjZS5oDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDg2ZGZlODdkODQu LjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0luY2x1ZGUvR3VpZC9QZXJmb3JtYW5j ZVBrZ1Rva2VuU3BhY2UuaA0KKysrIC9kZXYvbnVsbA0KQEAgLTEsMjUgKzAsMCBAQA0KLS8qKiBA ZmlsZQ0KLSAgR1VJRCBmb3IgUGVyZm9ybWFuY2VQa2cgUENEIFRva2VuIFNwYWNlIA0KLQ0KLSAg Q29weXJpZ2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQotICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQot ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQN Ci0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCi0NCi0g IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiIEJBU0lTLA0KLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0NCi0qKi8NCi0NCi0jaWZu ZGVmIF9QRVJGT1JNQU5DRVBLR19UT0tFTl9TUEFDRV9HVUlEX0hfDQotI2RlZmluZSBfUEVSRk9S TUFOQ0VQS0dfVE9LRU5fU1BBQ0VfR1VJRF9IXw0KLQ0KLSNkZWZpbmUgUEVSRk9STUFOQ0VQS0df VE9LRU5fU1BBQ0VfR1VJRCBcDQotICB7IFwNCi0gICAgMHg2NjkzNDZlZiwgMHhGRGFkLCAweDRh ZWIsIHsgMHgwOCwgMHhhNiwgMHgyMSwgMHg0NiwgMHgyZCwgMHgzZiwgMHhlZiwgMHg3ZCB9IFwN Ci0gIH0NCi0NCi1leHRlcm4gRUZJX0dVSUQgZ1BlcmZvcm1hbmNlUGtnVG9rZW5TcGFjZUd1aWQ7 DQotDQotI2VuZGlmDQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1Rz Y0ZyZXF1ZW5jeS5oIGIvUGVyZm9ybWFuY2VQa2cvSW5jbHVkZS9HdWlkL1RzY0ZyZXF1ZW5jeS5o DQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IGY3YzRhMWMzOTQuLjAwMDAwMDAwMDAN Ci0tLSBhL1BlcmZvcm1hbmNlUGtnL0luY2x1ZGUvR3VpZC9Uc2NGcmVxdWVuY3kuaA0KKysrIC9k ZXYvbnVsbA0KQEAgLTEsMjUgKzAsMCBAQA0KLS8qKiBAZmlsZQ0KLSAgR1VJRCBmb3IgVFNDIGZy ZXF1ZW5jeQ0KLQ0KLSAgQ29weXJpZ2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlp bmcgbWF0ZXJpYWxzDQotICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCi0gIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUgZm91bmQgYXQNCi0gIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCi0NCi0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0N Ci0qKi8NCi0NCi0jaWZuZGVmIF9UU0NfRlJFUVVFTkNZX0dVSURfSF8NCi0jZGVmaW5lIF9UU0Nf RlJFUVVFTkNZX0dVSURfSF8NCi0NCi0jZGVmaW5lIEVGSV9UU0NfRlJFUVVFTkNZX0dVSUQgXA0K LSAgeyBcDQotICAgIDB4ZGJhNmE3ZTMsIDB4YmI1NywgMHg0YmU3LCB7IDB4OGEsIDB4ZjgsIDB4 ZDUsIDB4NzgsIDB4ZGIsIDB4N2UsIDB4NTYsIDB4ODcgfSBcDQotICB9DQotDQotZXh0ZXJuIEVG SV9HVUlEIGdFZmlUc2NGcmVxdWVuY3lHdWlkOw0KLQ0KLSNlbmRpZg0KZGlmZiAtLWdpdCBhL1Bl cmZvcm1hbmNlUGtnL0luY2x1ZGUvSWNoL0dlbmVyaWNJY2guaCBiL1BlcmZvcm1hbmNlUGtnL0lu Y2x1ZGUvSWNoL0dlbmVyaWNJY2guaA0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCA2 OTdlYTA0OWVlLi4wMDAwMDAwMDAwDQotLS0gYS9QZXJmb3JtYW5jZVBrZy9JbmNsdWRlL0ljaC9H ZW5lcmljSWNoLmgNCisrKyAvZGV2L251bGwNCkBAIC0xLDU1ICswLDAgQEANCi0vKiogQGZpbGUN Ci0gIEdlbmVyaWMgZGVmaW5pdGlvbnMgZm9yIHJlZ2lzdGVycyBpbiB0aGUgSW50ZWwgSWNoIGRl dmljZXMuDQotDQotICBUaGVzZSBkZWZpbml0aW9ucyBzaG91bGQgd29yayBmb3IgYW55IHZlcnNp b24gb2YgSWNoLg0KLQ0KLSAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQotICB3 aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQotDQotICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCi0gIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElN UExJRUQuDQotDQotKiovDQotDQotI2lmbmRlZiBfR0VORVJJQ19JQ0hfSF8NCi0jZGVmaW5lIF9H RU5FUklDX0lDSF9IXw0KLQ0KLS8qKiBHZW5lcmljSWNoRGVmcyAgR2VuZXJpYyBJQ0ggRGVmaW5p dGlvbnMuDQotDQotRGVmaW5pdGlvbnMgYmVnaW5uaW5nIHdpdGggIlJfIiBhcmUgcmVnaXN0ZXJz Lg0KLURlZmluaXRpb25zIGJlZ2lubmluZyB3aXRoICJCXyIgYXJlIGJpdHMgd2l0aGluIHJlZ2lz dGVycy4NCi1EZWZpbml0aW9ucyBiZWdpbm5pbmcgd2l0aCAiVl8iIGFyZSBtZWFuaW5nZnVsIHZh bHVlcyBvZiBiaXRzIHdpdGhpbiB0aGUgcmVnaXN0ZXJzLg0KLSoqLw0KLS8vL0B7DQotDQotLy8v IEljaFBjaUFkZHJlc3NpbmcgIFBDSSBCdXMgQWRkcmVzcyBmb3IgSUNILg0KLS8vL0B7DQotI2Rl ZmluZSBQQ0lfQlVTX05VTUJFUl9JQ0ggICAgICAgICAgICAgICAgMHgwMCAgLy8vPCBJQ0ggaXMg b24gUENJIEJ1cyAwLg0KLSNkZWZpbmUgUENJX0RFVklDRV9OVU1CRVJfSUNIX0xQQyAgICAgICAg ICAgMzEgIC8vLzwgSUNIIGlzIERldmljZSAzMS4NCi0jZGVmaW5lIFBDSV9GVU5DVElPTl9OVU1C RVJfSUNIX0xQQyAgICAgICAgICAwICAvLy88IElDSCBpcyBGdW5jdGlvbiAwLg0KLS8vL0B9DQot DQotLy8vIEljaEFjcGlDbnRyICAgQ29udHJvbCBmb3IgdGhlIElDSCdzIEFDUEkgQ291bnRlci4N Ci0vLy9Aew0KLSNkZWZpbmUgUl9JQ0hfTFBDX0FDUElfQkFTRSAgICAgICAgICAgICAgICAgICAw eDQwDQotI2RlZmluZSAgIEJfSUNIX0xQQ19BQ1BJX0JBU0VfQkFSICAgICAgICAgICAgICAgICAw eDAwMDBGRjgwDQotI2RlZmluZSBSX0lDSF9MUENfQUNQSV9DTlQgICAgICAgICAgICAgICAgICAg IDB4NDQNCi0jZGVmaW5lICAgQl9JQ0hfTFBDX0FDUElfQ05UX0FDUElfRU4gICAgICAgICAgICAg IDB4ODANCi0vLy9AfQ0KLQ0KLS8vLyBJY2hBY3BpVGltZXIgIFRoZSBJQ0gncyBBQ1BJIFRpbWVy Lg0KLS8vL0B7DQotI2RlZmluZSBSX0FDUElfUE0xX1RNUiAgICAgICAgICAgICAgICAgICAgICAg IDB4MDgNCi0jZGVmaW5lICAgVl9BQ1BJX1RNUl9GUkVRVUVOQ1kgICAgICAgICAgICAgICAgICAg IDM1Nzk1NDUNCi0jZGVmaW5lICAgVl9BQ1BJX1BNMV9UTVJfTUFYX1ZBTCAgICAgICAgICAgICAg ICAgIDB4MTAwMDAwMCAvLy88IFRoZSB0aW1lciBpcyAyNCBiaXQgb3ZlcmZsb3cuDQotLy8vQH0N Ci0NCi0vLy8gTWFjcm8gdG8gZ2VuZXJhdGUgdGhlIFBDSSBhZGRyZXNzIG9mIGFueSBnaXZlbiBJ Q0ggUmVnaXN0ZXIuDQotI2RlZmluZSBQQ0lfSUNIX0xQQ19BRERSRVNTKFJlZ2lzdGVyKSBcDQot ICAoKFVJTlROKShQQ0lfTElCX0FERFJFU1MgKFBDSV9CVVNfTlVNQkVSX0lDSCwgUENJX0RFVklD RV9OVU1CRVJfSUNIX0xQQywgUENJX0ZVTkNUSU9OX05VTUJFUl9JQ0hfTFBDLCBSZWdpc3Rlcikp KQ0KLQ0KLS8vL0B9DQotI2VuZGlmICAvLyBfR0VORVJJQ19JQ0hfSF8NCmRpZmYgLS1naXQgYS9Q ZXJmb3JtYW5jZVBrZy9JbmNsdWRlL1BlcmZvcm1hbmNlVG9rZW5zLmggYi9QZXJmb3JtYW5jZVBr Zy9JbmNsdWRlL1BlcmZvcm1hbmNlVG9rZW5zLmgNCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggYmJiYzQ4ZDc3Ni4uMDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cvSW5jbHVk ZS9QZXJmb3JtYW5jZVRva2Vucy5oDQorKysgL2Rldi9udWxsDQpAQCAtMSwyOCArMCwwIEBADQot LyoqIEBmaWxlDQotICBBU0NJSSBTdHJpbmcgTGl0ZXJhbHMgd2l0aCBzcGVjaWFsIG1lYW5pbmcg dG8gUGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgYW5kIHRoZSBEcCB1dGlsaXR5Lg0KLQ0KLUNvcHly aWdodCAoYykgMjAwOSAtIDIwMTAsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCi1UaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQot YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLWh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCi0NCi1USEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCi1XSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLQ0KLSoqLw0KLQ0KLSNpZm5kZWYgX19QRVJG T1JNQU5DRV9UT0tFTlNfSF9fDQotI2RlZmluZSBfX1BFUkZPUk1BTkNFX1RPS0VOU19IX18NCi0N Ci0jZGVmaW5lIFNFQ19UT0sgICAgICAgICAgICAgICAgICAgICAgICAgIlNFQyIgICAgICAgICAg ICAgLy8vPCBTRUMgUGhhc2UNCi0jZGVmaW5lIERYRV9UT0sgICAgICAgICAgICAgICAgICAgICAg ICAgIkRYRSIgICAgICAgICAgICAgLy8vPCBERUMgUGhhc2UNCi0jZGVmaW5lIFNIRUxMX1RPSyAg ICAgICAgICAgICAgICAgICAgICAgIlNIRUxMIiAgICAgICAgICAgLy8vPCBTaGVsbCBQaGFzZQ0K LSNkZWZpbmUgUEVJX1RPSyAgICAgICAgICAgICAgICAgICAgICAgICAiUEVJIiAgICAgICAgICAg ICAvLy88IFBFSSBQaGFzZQ0KLSNkZWZpbmUgQkRTX1RPSyAgICAgICAgICAgICAgICAgICAgICAg ICAiQkRTIiAgICAgICAgICAgICAvLy88IEJEUyBQaGFzZQ0KLSNkZWZpbmUgRFJJVkVSQklORElO R19TVEFSVF9UT0sgICAgICAgICAiREI6U3RhcnQ6IiAgICAgICAvLy88IERyaXZlciBCaW5kaW5n IFN0YXJ0KCkgZnVuY3Rpb24gY2FsbA0KLSNkZWZpbmUgRFJJVkVSQklORElOR19TVVBQT1JUX1RP SyAgICAgICAiREI6U3VwcG9ydDoiICAgICAvLy88IERyaXZlciBCaW5kaW5nIFN1cHBvcnQoKSBm dW5jdGlvbiBjYWxsDQotI2RlZmluZSBMT0FEX0lNQUdFX1RPSyAgICAgICAgICAgICAgICAgICJM b2FkSW1hZ2U6IiAgICAgIC8vLzwgTG9hZCBhIGRpc3BhdGNoZWQgbW9kdWxlDQotI2RlZmluZSBT VEFSVF9JTUFHRV9UT0sgICAgICAgICAgICAgICAgICJTdGFydEltYWdlOiIgICAgIC8vLzwgRGlz cGF0Y2hlZCBNb2R1bGVzIEVudHJ5IFBvaW50IGV4ZWN1dGlvbg0KLQ0KLSNlbmRpZiAgLy8gX19Q RVJGT1JNQU5DRV9UT0tFTlNfSF9fDQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFy eS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuYyBiL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkv VHNjVGltZXJMaWIvQmFzZVRzY1RpbWVyTGliLmMNCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggYzQ5Zjc4NjY0MS4uMDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cvTGlicmFy eS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuYw0KKysrIC9kZXYvbnVsbA0KQEAgLTEsNDUg KzAsMCBAQA0KLS8qKiBAZmlsZQ0KLSAgQSBCYXNlIFRpbWVyIExpYnJhcnkgaW1wbGVtZW50YXRp b24gd2hpY2ggdXNlcyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIGluIHRoZSBwcm9jZXNzb3IuDQot DQotICBGb3IgUGVudGl1bSA0IHByb2Nlc3NvcnMsIEludGVsIFhlb24gcHJvY2Vzc29ycyAoZmFt aWx5IFswRkhdLCBtb2RlbHMgWzAzSCBhbmQgaGlnaGVyXSk7DQotICAgIGZvciBJbnRlbCBDb3Jl IFNvbG8gYW5kIEludGVsIENvcmUgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwg WzBFSF0pOw0KLSAgICBmb3IgdGhlIEludGVsIFhlb24gcHJvY2Vzc29yIDUxMDAgc2VyaWVzIGFu ZCBJbnRlbCBDb3JlIDIgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwgWzBGSF0p Ow0KLSAgICBmb3IgSW50ZWwgQ29yZSAyIGFuZCBJbnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZhbWls eSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMTdIXSk7DQotICAgIGZvciBJbnRlbCBBdG9tIHByb2Nl c3NvcnMgKGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMUNIXSk6DQotICB0aGUgdGltZS1z dGFtcCBjb3VudGVyIGluY3JlbWVudHMgYXQgYSBjb25zdGFudCByYXRlLg0KLSAgVGhhdCByYXRl IG1heSBiZSBzZXQgYnkgdGhlIG1heGltdW0gY29yZS1jbG9jayB0byBidXMtY2xvY2sgcmF0aW8g b2YgdGhlIHByb2Nlc3NvciBvciBtYXkgYmUgc2V0IGJ5DQotICB0aGUgbWF4aW11bSByZXNvbHZl ZCBmcmVxdWVuY3kgYXQgd2hpY2ggdGhlIHByb2Nlc3NvciBpcyBib290ZWQuIFRoZSBtYXhpbXVt IHJlc29sdmVkIGZyZXF1ZW5jeSBtYXkNCi0gIGRpZmZlciBmcm9tIHRoZSBtYXhpbXVtIHF1YWxp ZmllZCBmcmVxdWVuY3kgb2YgdGhlIHByb2Nlc3Nvci4NCi0NCi0gIFRoZSBzcGVjaWZpYyBwcm9j ZXNzb3IgY29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvci4gQ29uc3RhbnQgVFND IGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUNCi0gIGR1cmF0aW9uIG9mIGVhY2ggY2xvY2sgdGlj ayBpcyB1bmlmb3JtIGFuZCBzdXBwb3J0cyB0aGUgdXNlIG9mIHRoZSBUU0MgYXMgYSB3YWxsIGNs b2NrIHRpbWVyIGV2ZW4gaWYNCi0gIHRoZSBwcm9jZXNzb3IgY29yZSBjaGFuZ2VzIGZyZXF1ZW5j eS4gVGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvciBtb3ZpbmcgZm9yd2FyZC4NCi0N Ci0gIEEgUHJvY2Vzc29yJ3Mgc3VwcG9ydCBmb3IgaW52YXJpYW50IFRTQyBpcyBpbmRpY2F0ZWQg YnkgQ1BVSUQuMHg4MDAwMDAwNy5FRFhbOF0uDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAy MDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg QlNEIExpY2Vuc2UNCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQot ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLQ0KLSoqLw0KLQ0KLSNpbmNsdWRlICJUc2NUaW1lckxp YkludGVybmFsLmgiDQotDQotLyoqICBHZXQgVFNDIGZyZXF1ZW5jeS4NCi0NCi0gIEByZXR1cm4g VGhlIG51bWJlciBvZiBUU0MgY291bnRzIHBlciBzZWNvbmQuDQotDQotKiovDQotVUlOVDY0DQot SW50ZXJuYWxHZXRUc2NGcmVxdWVuY3kgKA0KLSAgVk9JRA0KLSAgKQ0KLXsNCi0gIHJldHVybiBJ bnRlcm5hbENhbGN1bGF0ZVRzY0ZyZXF1ZW5jeSAoKTsNCi19DQotDQpkaWZmIC0tZ2l0IGEvUGVy Zm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuaW5mIGIvUGVy Zm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9CYXNlVHNjVGltZXJMaWIuaW5mDQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDlkNjIyNjg3YjUuLjAwMDAwMDAwMDANCi0tLSBh L1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvQmFzZVRzY1RpbWVyTGliLmluZg0K KysrIC9kZXYvbnVsbA0KQEAgLTEsNTkgKzAsMCBAQA0KLSMjIEBmaWxlDQotIyAgQmFzZSBUaW1l ciBMaWJyYXJ5IHdoaWNoIHVzZXMgdGhlIFRpbWUgU3RhbXAgQ291bnRlciBpbiB0aGUgcHJvY2Vz c29yLg0KLSMNCi0jICBOb3RlOiBUaGVyZSB3aWxsIGJlIDFtcyBwZW5hbHR5IHRvIGdldCBUU0Mg ZnJlcXVlbmN5IGV2ZXJ5IHRpbWUNCi0jICAgIGJ5IHdhaXRpbmcgZm9yIDM1NzkgY2xvY2tzIG9m IHRoZSBBQ1BJIHRpbWVyLCBvciAxbXMuDQotIw0KLSMgIE5vdGU6IFRoaXMgbGlicmFyeSBpcyBh IHNhbXBsZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGRlcGVuZHMgb24gY2hpcHNldCBBQ1BJIHRpbWVy LiANCi0jICAgIEl0IG1heSBub3Qgd29yayBvbiBuZXcgZ2VuZXJhdGlvbiBjaGlwc2V0LiBQY0F0 Q2hpcHNldFBrZyBBY3BpVGltZXJMaWIgaXMgDQotIyAgICB0aGUgZ2VuZXJpYyB0aW1lciBsaWJy YXJ5IHRoYXQgY2FuIHJlcGxhY2UgdGhpcyBvbmUuIA0KLSMNCi0jICBBIHZlcnNpb24gb2YgdGhl IFRpbWVyIExpYnJhcnkgdXNpbmcgdGhlIHByb2Nlc3NvcidzIFRTQy4NCi0jICBUaGUgdGltZSBz dGFtcCBjb3VudGVyIGluIG5ld2VyIHByb2Nlc3NvcnMgbWF5IHN1cHBvcnQgYW4gZW5oYW5jZW1l bnQsIHJlZmVycmVkIHRvIGFzIGludmFyaWFudCBUU0MuDQotIyAgVGhlIGludmFyaWFudCBUU0Mg cnVucyBhdCBhIGNvbnN0YW50IHJhdGUgaW4gYWxsIEFDUEkgUC0sIEMtLiBhbmQgVC1zdGF0ZXMu DQotIyAgVGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvciBtb3ZpbmcgZm9yd2FyZC4N Ci0jICBUU0MgcmVhZHMgYXJlIG11Y2ggbW9yZSBlZmZpY2llbnQgYW5kIGRvIG5vdCBpbmN1ciB0 aGUgb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIGEgcmluZyB0cmFuc2l0aW9uIG9yDQotIyAgYWNj ZXNzIHRvIGEgcGxhdGZvcm0gcmVzb3VyY2UuDQotIw0KLSMgIENvcHlyaWdodCAoYykgMjAwOSAt IDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0jICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotIyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQotIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24u IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLSMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KLSMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQotIw0KLSMjDQotDQotW0RlZmluZXNdDQotICBJ TkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQotICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgPSBCYXNlVHNjVGltZXJMaWINCi0gIEZJTEVfR1VJRCAgICAg ICAgICAgICAgICAgICAgICA9IEQyOTMzOEI5LTUwRkUtNGU0Zi1CN0Q0LUExNTBBMkMxRjRGQg0K LSAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KLSAgVkVSU0lPTl9TVFJJ TkcgICAgICAgICAgICAgICAgID0gMS4wDQotICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAg ICAgPSBUaW1lckxpYg0KLQ0KLQ0KLSMNCi0jICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAg ICA9IElBMzIgWDY0DQotIw0KLQ0KLVtTb3VyY2VzLmNvbW1vbl0NCi0gIFRzY1RpbWVyTGliU2hh cmUuYw0KLSAgQmFzZVRzY1RpbWVyTGliLmMNCi0gIFRzY1RpbWVyTGliSW50ZXJuYWwuaA0KLQ0K LQ0KLVtQYWNrYWdlc10NCi0gIE1kZVBrZy9NZGVQa2cuZGVjDQotICBQZXJmb3JtYW5jZVBrZy9Q ZXJmb3JtYW5jZVBrZy5kZWMNCi0NCi0NCi1bTGlicmFyeUNsYXNzZXNdDQotICBQY2RMaWINCi0g IFBjaUxpYg0KLSAgSW9MaWINCi0gIEJhc2VMaWINCi0NCi1bUGNkLmNvbW1vbl0NCi0gIGdQZXJm b3JtYW5jZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBlcmZQa2dBY3BpSW9Qb3J0QmFzZUFkZHJlc3Mg ICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cv TGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5jIGIvUGVyZm9ybWFuY2VQa2cvTGli cmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IGM1NDBkNDIwZGEuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0xp YnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuYw0KKysrIC9kZXYvbnVsbA0KQEAgLTEs MTAyICswLDAgQEANCi0vKiogQGZpbGUNCi0gIEEgRHhlIFRpbWVyIExpYnJhcnkgaW1wbGVtZW50 YXRpb24gd2hpY2ggdXNlcyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIGluIHRoZSBwcm9jZXNzb3Iu DQotDQotICBGb3IgUGVudGl1bSA0IHByb2Nlc3NvcnMsIEludGVsIFhlb24gcHJvY2Vzc29ycyAo ZmFtaWx5IFswRkhdLCBtb2RlbHMgWzAzSCBhbmQgaGlnaGVyXSk7DQotICAgIGZvciBJbnRlbCBD b3JlIFNvbG8gYW5kIEludGVsIENvcmUgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9k ZWwgWzBFSF0pOw0KLSAgICBmb3IgdGhlIEludGVsIFhlb24gcHJvY2Vzc29yIDUxMDAgc2VyaWVz IGFuZCBJbnRlbCBDb3JlIDIgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwgWzBG SF0pOw0KLSAgICBmb3IgSW50ZWwgQ29yZSAyIGFuZCBJbnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZh bWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMTdIXSk7DQotICAgIGZvciBJbnRlbCBBdG9tIHBy b2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMUNIXSk6DQotICB0aGUgdGlt ZS1zdGFtcCBjb3VudGVyIGluY3JlbWVudHMgYXQgYSBjb25zdGFudCByYXRlLg0KLSAgVGhhdCBy YXRlIG1heSBiZSBzZXQgYnkgdGhlIG1heGltdW0gY29yZS1jbG9jayB0byBidXMtY2xvY2sgcmF0 aW8gb2YgdGhlIHByb2Nlc3NvciBvciBtYXkgYmUgc2V0IGJ5DQotICB0aGUgbWF4aW11bSByZXNv bHZlZCBmcmVxdWVuY3kgYXQgd2hpY2ggdGhlIHByb2Nlc3NvciBpcyBib290ZWQuIFRoZSBtYXhp bXVtIHJlc29sdmVkIGZyZXF1ZW5jeSBtYXkNCi0gIGRpZmZlciBmcm9tIHRoZSBtYXhpbXVtIHF1 YWxpZmllZCBmcmVxdWVuY3kgb2YgdGhlIHByb2Nlc3Nvci4NCi0NCi0gIFRoZSBzcGVjaWZpYyBw cm9jZXNzb3IgY29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvci4gQ29uc3RhbnQg VFNDIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUNCi0gIGR1cmF0aW9uIG9mIGVhY2ggY2xvY2sg dGljayBpcyB1bmlmb3JtIGFuZCBzdXBwb3J0cyB0aGUgdXNlIG9mIHRoZSBUU0MgYXMgYSB3YWxs IGNsb2NrIHRpbWVyIGV2ZW4gaWYNCi0gIHRoZSBwcm9jZXNzb3IgY29yZSBjaGFuZ2VzIGZyZXF1 ZW5jeS4gVGhpcyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvciBtb3ZpbmcgZm9yd2FyZC4N Ci0NCi0gIEEgUHJvY2Vzc29yJ3Mgc3VwcG9ydCBmb3IgaW52YXJpYW50IFRTQyBpcyBpbmRpY2F0 ZWQgYnkgQ1BVSUQuMHg4MDAwMDAwNy5FRFhbOF0uDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDkg LSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgQlNEIExpY2Vuc2UNCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQotICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLQ0KLSoqLw0KLQ0KLSNpbmNsdWRlIDxQaUR4ZS5o Pg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KLSNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0K LSNpbmNsdWRlIDxHdWlkL1RzY0ZyZXF1ZW5jeS5oPg0KLSNpbmNsdWRlICJUc2NUaW1lckxpYklu dGVybmFsLmgiDQotDQotVUlOVDY0IG1Uc2NGcmVxdWVuY3k7DQotDQotLyoqIFRoZSBjb25zdHJ1 Y3RvciBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgVFNDIGZyZXF1ZW5jeS4NCi0NCi0g IEZpcnN0LCBHZXQgVFNDIGZyZXF1ZW5jeSBmcm9tIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxl IHdpdGggVFNDIGZyZXF1ZW5jeSBHVUlELA0KLSAgaWYgdGhlIHRhYmxlIGlzIG5vdCBmb3VuZCwg aW5zdGFsbCBpdC4NCi0gIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgcmV0dXJuIEVGSV9TVUND RVNTLg0KLQ0KLSAgQHBhcmFtICBJbWFnZUhhbmRsZSAgICAgICBUaGUgZmlybXdhcmUgYWxsb2Nh dGVkIGhhbmRsZSBmb3IgdGhlIEVGSSBpbWFnZS4NCi0gIEBwYXJhbSAgU3lzdGVtVGFibGUgICAg ICAgQSBwb2ludGVyIHRvIHRoZSBFRkkgU3lzdGVtIFRhYmxlLg0KLQ0KLSAgQHJldHZhbCBFRklf U1VDQ0VTUyAgIFRoZSBjb25zdHJ1Y3RvciBhbHdheXMgcmV0dXJucyBFRklfU1VDQ0VTUy4NCi0N Ci0qKi8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQotRHhlVHNjVGltZXJMaWJDb25zdHJ1Y3RvciAo DQotICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCi0gIElOIEVGSV9TWVNURU1f VEFCTEUgICpTeXN0ZW1UYWJsZQ0KLSAgKQ0KLXsNCi0gIEVGSV9TVEFUVVMgIFN0YXR1czsNCi0g IFVJTlQ2NCAgICAgICpUc2NGcmVxdWVuY3k7DQotDQotICBUc2NGcmVxdWVuY3kgPSBOVUxMOw0K LSAgLy8NCi0gIC8vIEdldCBUU0MgZnJlcXVlbmN5IGZyb20gc3lzdGVtIGNvbmZpZ3VyYXRpb24g dGFibGUgd2l0aCBUU0MgZnJlcXVlbmN5IEdVSUQuDQotICAvLw0KLSAgU3RhdHVzID0gRWZpR2V0 U3lzdGVtQ29uZmlndXJhdGlvblRhYmxlICgmZ0VmaVRzY0ZyZXF1ZW5jeUd1aWQsIChWT0lEICoq KSAmVHNjRnJlcXVlbmN5KTsNCi0gIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCi0gICAg QVNTRVJUIChUc2NGcmVxdWVuY3kgIT0gTlVMTCk7DQotICAgIG1Uc2NGcmVxdWVuY3kgPSAqVHNj RnJlcXVlbmN5Ow0KLSAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQotICB9DQotDQotICAvLw0KLSAg Ly8gVFNDIGZyZXF1ZW5jeSBHVUlEIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlIGlzIG5vdCBm b3VuZCwgaW5zdGFsbCBpdC4NCi0gIC8vDQotDQotICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUG9v bCAoRWZpQm9vdFNlcnZpY2VzRGF0YSwgc2l6ZW9mIChVSU5UNjQpLCAoVk9JRCAqKikgJlRzY0Zy ZXF1ZW5jeSk7DQotICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KLQ0KLSAgKlRzY0ZyZXF1 ZW5jeSA9IEludGVybmFsQ2FsY3VsYXRlVHNjRnJlcXVlbmN5ICgpOw0KLSAgLy8NCi0gIC8vIFRz Y0ZyZXF1ZW5jeSBub3cgcG9pbnRzIHRvIHRoZSBudW1iZXIgb2YgVFNDIGNvdW50cyBwZXIgc2Vj b25kLCBpbnN0YWxsIHN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlIGZvciBpdC4NCi0gIC8vDQot ICBnQlMtPkluc3RhbGxDb25maWd1cmF0aW9uVGFibGUgKCZnRWZpVHNjRnJlcXVlbmN5R3VpZCwg VHNjRnJlcXVlbmN5KTsNCi0NCi0gIG1Uc2NGcmVxdWVuY3kgPSAqVHNjRnJlcXVlbmN5Ow0KLSAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KLX0NCi0NCi0vKiogIEdldCBUU0MgZnJlcXVlbmN5Lg0KLQ0K LSAgQHJldHVybiBUaGUgbnVtYmVyIG9mIFRTQyBjb3VudHMgcGVyIHNlY29uZC4NCi0NCi0qKi8N Ci1VSU5UNjQNCi1JbnRlcm5hbEdldFRzY0ZyZXF1ZW5jeSAoDQotICBWT0lEDQotICApDQotew0K LSAgcmV0dXJuIG1Uc2NGcmVxdWVuY3k7DQotfQ0KLQ0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl UGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvRHhlVHNjVGltZXJMaWIuaW5mIGIvUGVyZm9ybWFuY2VQ a2cvTGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5pbmYNCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMTZkYjVmNzNlYS4uMDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFu Y2VQa2cvTGlicmFyeS9Uc2NUaW1lckxpYi9EeGVUc2NUaW1lckxpYi5pbmYNCisrKyAvZGV2L251 bGwNCkBAIC0xLDY0ICswLDAgQEANCi0jIyBAZmlsZQ0KLSMgIER4ZSBUaW1lciBMaWJyYXJ5IHdo aWNoIHVzZXMgdGhlIFRpbWUgU3RhbXAgQ291bnRlciBpbiB0aGUgcHJvY2Vzc29yLg0KLSMNCi0j ICBOb3RlOiBUaGlzIGxpYnJhcnkgaXMgYSBzYW1wbGUgaW1wbGVtZW50YXRpb24gdGhhdCBkZXBl bmRzIG9uIGNoaXBzZXQgQUNQSSB0aW1lci4gDQotIyAgICBJdCBtYXkgbm90IHdvcmsgb24gbmV3 IGdlbmVyYXRpb24gY2hpcHNldC4gUGNBdENoaXBzZXRQa2cgQWNwaVRpbWVyTGliIGlzIA0KLSMg ICAgdGhlIGdlbmVyaWMgdGltZXIgbGlicmFyeSB0aGF0IGNhbiByZXBsYWNlIHRoaXMgb25lLiAN Ci0jDQotIyAgQSB2ZXJzaW9uIG9mIHRoZSBUaW1lciBMaWJyYXJ5IHVzaW5nIHRoZSBwcm9jZXNz b3IncyBUU0MuDQotIyAgVGhlIHRpbWUgc3RhbXAgY291bnRlciBpbiBuZXdlciBwcm9jZXNzb3Jz IG1heSBzdXBwb3J0IGFuIGVuaGFuY2VtZW50LCByZWZlcnJlZCB0byBhcyBpbnZhcmlhbnQgVFND Lg0KLSMgIFRoZSBpbnZhcmlhbnQgVFNDIHJ1bnMgYXQgYSBjb25zdGFudCByYXRlIGluIGFsbCBB Q1BJIFAtLCBDLS4gYW5kIFQtc3RhdGVzLg0KLSMgIFRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyYWwg YmVoYXZpb3IgbW92aW5nIGZvcndhcmQuDQotIyAgVFNDIHJlYWRzIGFyZSBtdWNoIG1vcmUgZWZm aWNpZW50IGFuZCBkbyBub3QgaW5jdXIgdGhlIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBhIHJp bmcgdHJhbnNpdGlvbiBvcg0KLSMgIGFjY2VzcyB0byBhIHBsYXRmb3JtIHJlc291cmNlLg0KLSMN Ci0jICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQotIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KLSMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSMgIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZSBmb3VuZCBhdA0KLSMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCi0jICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCi0jICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSMN Ci0jIw0KLQ0KLVtEZWZpbmVzXQ0KLSAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0g MHgwMDAxMDAwNQ0KLSAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gRHhlVHNjVGlt ZXJMaWINCi0gIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDk1YWIwMzBmLWI0ZmQt NGVlNC05MmE1LTllMDRlODc2MzRkOQ0KLSAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAg ID0gRFhFX0RSSVZFUg0KLSAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQot ICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBUaW1lckxpYnxEWEVfQ09SRSBEWEVf RFJJVkVSIERYRV9SVU5USU1FX0RSSVZFUiBEWEVfU01NX0RSSVZFUiBVRUZJX0FQUExJQ0FUSU9O IFVFRklfRFJJVkVSIFNNTV9DT1JFDQotDQotICBDT05TVFJVQ1RPUiAgICAgICAgICAgICAgICAg ICAgPSBEeGVUc2NUaW1lckxpYkNvbnN0cnVjdG9yDQotDQotDQotIw0KLSMgIFZBTElEX0FSQ0hJ VEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCi0jDQotDQotW1NvdXJjZXMuY29tbW9uXQ0K LSAgVHNjVGltZXJMaWJTaGFyZS5jDQotICBEeGVUc2NUaW1lckxpYi5jDQotICBUc2NUaW1lckxp YkludGVybmFsLmgNCi0NCi0NCi1bUGFja2FnZXNdDQotICBNZGVQa2cvTWRlUGtnLmRlYw0KLSAg UGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZGVjDQotDQotDQotW0xpYnJhcnlDbGFzc2Vz XQ0KLSAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQotICBQY2RMaWINCi0gIFBjaUxpYg0KLSAg SW9MaWINCi0gIEJhc2VMaWINCi0gIFVlZmlMaWINCi0gIERlYnVnTGliDQotDQotW0d1aWRzXQ0K LSAgZ0VmaVRzY0ZyZXF1ZW5jeUd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICMjIENPTlNV TUVTICMjIFN5c3RlbVRhYmxlDQotDQotW1BjZC5jb21tb25dDQotICBnUGVyZm9ybWFuY2VQa2dU b2tlblNwYWNlR3VpZC5QY2RQZXJmUGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNzICAgIyMgU09NRVRJ TUVTX0NPTlNVTUVTDQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1l ckxpYi9QZWlUc2NUaW1lckxpYi5jIGIvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxp Yi9QZWlUc2NUaW1lckxpYi5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IGFmMzYw MGIwMDcuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJM aWIvUGVpVHNjVGltZXJMaWIuYw0KKysrIC9kZXYvbnVsbA0KQEAgLTEsNzYgKzAsMCBAQA0KLS8q KiBAZmlsZQ0KLSAgQSBQZWkgVGltZXIgTGlicmFyeSBpbXBsZW1lbnRhdGlvbiB3aGljaCB1c2Vz IHRoZSBUaW1lIFN0YW1wIENvdW50ZXIgaW4gdGhlIHByb2Nlc3Nvci4NCi0NCi0gIEZvciBQZW50 aXVtIDQgcHJvY2Vzc29ycywgSW50ZWwgWGVvbiBwcm9jZXNzb3JzIChmYW1pbHkgWzBGSF0sIG1v ZGVscyBbMDNIIGFuZCBoaWdoZXJdKTsNCi0gICAgZm9yIEludGVsIENvcmUgU29sbyBhbmQgSW50 ZWwgQ29yZSBEdW8gcHJvY2Vzc29ycyAoZmFtaWx5IFswNkhdLCBtb2RlbCBbMEVIXSk7DQotICAg IGZvciB0aGUgSW50ZWwgWGVvbiBwcm9jZXNzb3IgNTEwMCBzZXJpZXMgYW5kIEludGVsIENvcmUg MiBEdW8gcHJvY2Vzc29ycyAoZmFtaWx5IFswNkhdLCBtb2RlbCBbMEZIXSk7DQotICAgIGZvciBJ bnRlbCBDb3JlIDIgYW5kIEludGVsIFhlb24gcHJvY2Vzc29ycyAoZmFtaWx5IFswNkhdLCBkaXNw bGF5X21vZGVsIFsxN0hdKTsNCi0gICAgZm9yIEludGVsIEF0b20gcHJvY2Vzc29ycyAoZmFtaWx5 IFswNkhdLCBkaXNwbGF5X21vZGVsIFsxQ0hdKToNCi0gIHRoZSB0aW1lLXN0YW1wIGNvdW50ZXIg aW5jcmVtZW50cyBhdCBhIGNvbnN0YW50IHJhdGUuDQotICBUaGF0IHJhdGUgbWF5IGJlIHNldCBi eSB0aGUgbWF4aW11bSBjb3JlLWNsb2NrIHRvIGJ1cy1jbG9jayByYXRpbyBvZiB0aGUgcHJvY2Vz c29yIG9yIG1heSBiZSBzZXQgYnkNCi0gIHRoZSBtYXhpbXVtIHJlc29sdmVkIGZyZXF1ZW5jeSBh dCB3aGljaCB0aGUgcHJvY2Vzc29yIGlzIGJvb3RlZC4gVGhlIG1heGltdW0gcmVzb2x2ZWQgZnJl cXVlbmN5IG1heQ0KLSAgZGlmZmVyIGZyb20gdGhlIG1heGltdW0gcXVhbGlmaWVkIGZyZXF1ZW5j eSBvZiB0aGUgcHJvY2Vzc29yLg0KLQ0KLSAgVGhlIHNwZWNpZmljIHByb2Nlc3NvciBjb25maWd1 cmF0aW9uIGRldGVybWluZXMgdGhlIGJlaGF2aW9yLiBDb25zdGFudCBUU0MgYmVoYXZpb3IgZW5z dXJlcyB0aGF0IHRoZQ0KLSAgZHVyYXRpb24gb2YgZWFjaCBjbG9jayB0aWNrIGlzIHVuaWZvcm0g YW5kIHN1cHBvcnRzIHRoZSB1c2Ugb2YgdGhlIFRTQyBhcyBhIHdhbGwgY2xvY2sgdGltZXIgZXZl biBpZg0KLSAgdGhlIHByb2Nlc3NvciBjb3JlIGNoYW5nZXMgZnJlcXVlbmN5LiBUaGlzIGlzIHRo ZSBhcmNoaXRlY3R1cmFsIGJlaGF2aW9yIG1vdmluZyBmb3J3YXJkLg0KLQ0KLSAgQSBQcm9jZXNz b3IncyBzdXBwb3J0IGZvciBpbnZhcmlhbnQgVFNDIGlzIGluZGljYXRlZCBieSBDUFVJRC4weDgw MDAwMDA3LkVEWFs4XS4NCi0NCi0gIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTEsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0gIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K LSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQotDQotICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCi0gIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9S IElNUExJRUQuDQotDQotKiovDQotDQotI2luY2x1ZGUgPFBpUGVpLmg+DQotI2luY2x1ZGUgPExp YnJhcnkvSG9iTGliLmg+DQotI2luY2x1ZGUgPEd1aWQvVHNjRnJlcXVlbmN5Lmg+DQotI2luY2x1 ZGUgIlRzY1RpbWVyTGliSW50ZXJuYWwuaCINCi0NCi0vKiogIEdldCBUU0MgZnJlcXVlbmN5IGZy b20gVFNDIGZyZXF1ZW5jeSBHVUlEIEhPQiwgaWYgdGhlIEhPQiBpcyBub3QgZm91bmQsIGJ1aWxk IGl0Lg0KLQ0KLSAgQHJldHVybiBUaGUgbnVtYmVyIG9mIFRTQyBjb3VudHMgcGVyIHNlY29uZC4N Ci0NCi0qKi8NCi1VSU5UNjQNCi1JbnRlcm5hbEdldFRzY0ZyZXF1ZW5jeSAoDQotICBWT0lEDQot ICApDQotew0KLSAgRUZJX0hPQl9HVUlEX1RZUEUgICAgICAgKkd1aWRIb2I7DQotICBWT0lEICAg ICAgICAqRGF0YUluSG9iOw0KLSAgVUlOVDY0ICAgICAgVHNjRnJlcXVlbmN5Ow0KLQ0KLSAgLy8N Ci0gIC8vIEdldCBUU0MgZnJlcXVlbmN5IGZyb20gVFNDIGZyZXF1ZW5jeSBHVUlEIEhPQi4NCi0g IC8vDQotICBHdWlkSG9iID0gR2V0Rmlyc3RHdWlkSG9iICgmZ0VmaVRzY0ZyZXF1ZW5jeUd1aWQp Ow0KLSAgaWYgKEd1aWRIb2IgIT0gTlVMTCkgew0KLSAgICBEYXRhSW5Ib2IgPSBHRVRfR1VJRF9I T0JfREFUQSAoR3VpZEhvYik7DQotICAgIFRzY0ZyZXF1ZW5jeSA9ICogKFVJTlQ2NCAqKSBEYXRh SW5Ib2I7DQotICAgIHJldHVybiBUc2NGcmVxdWVuY3k7DQotICB9DQotDQotICAvLw0KLSAgLy8g VFNDIGZyZXF1ZW5jeSBHVUlEIEhPQiBpcyBub3QgZm91bmQsIGJ1aWxkIGl0Lg0KLSAgLy8NCi0N Ci0gIFRzY0ZyZXF1ZW5jeSA9IEludGVybmFsQ2FsY3VsYXRlVHNjRnJlcXVlbmN5ICgpOw0KLSAg Ly8NCi0gIC8vIFRzY0ZyZXF1ZW5jeSBpcyBub3cgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBUU0Mg Y291bnRzIHBlciBzZWNvbmQsIGJ1aWxkIEdVSUQgSE9CIGZvciBpdC4NCi0gIC8vDQotICBCdWls ZEd1aWREYXRhSG9iICgNCi0gICAgJmdFZmlUc2NGcmVxdWVuY3lHdWlkLA0KLSAgICAmVHNjRnJl cXVlbmN5LA0KLSAgICBzaXplb2YgKFVJTlQ2NCkNCi0gICAgKTsNCi0NCi0gIHJldHVybiBUc2NG cmVxdWVuY3k7DQotfQ0KLQ0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNj VGltZXJMaWIvUGVpVHNjVGltZXJMaWIuaW5mIGIvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NU aW1lckxpYi9QZWlUc2NUaW1lckxpYi5pbmYNCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggNjhlMzRlMGVkZS4uMDAwMDAwMDAwMA0KLS0tIGEvUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9U c2NUaW1lckxpYi9QZWlUc2NUaW1lckxpYi5pbmYNCisrKyAvZGV2L251bGwNCkBAIC0xLDYwICsw LDAgQEANCi0jIyBAZmlsZQ0KLSMgIFBlaSBUaW1lciBMaWJyYXJ5IHdoaWNoIHVzZXMgdGhlIFRp bWUgU3RhbXAgQ291bnRlciBpbiB0aGUgcHJvY2Vzc29yLg0KLSMNCi0jICBOb3RlOiBUaGlzIGxp YnJhcnkgaXMgYSBzYW1wbGUgaW1wbGVtZW50YXRpb24gdGhhdCBkZXBlbmRzIG9uIGNoaXBzZXQg QUNQSSB0aW1lci4gDQotIyAgICBJdCBtYXkgbm90IHdvcmsgb24gbmV3IGdlbmVyYXRpb24gY2hp cHNldC4gUGNBdENoaXBzZXRQa2cgQWNwaVRpbWVyTGliIGlzIA0KLSMgICAgdGhlIGdlbmVyaWMg dGltZXIgbGlicmFyeSB0aGF0IGNhbiByZXBsYWNlIHRoaXMgb25lLiANCi0jDQotIyAgQSB2ZXJz aW9uIG9mIHRoZSBUaW1lciBMaWJyYXJ5IHVzaW5nIHRoZSBwcm9jZXNzb3IncyBUU0MuDQotIyAg VGhlIHRpbWUgc3RhbXAgY291bnRlciBpbiBuZXdlciBwcm9jZXNzb3JzIG1heSBzdXBwb3J0IGFu IGVuaGFuY2VtZW50LCByZWZlcnJlZCB0byBhcyBpbnZhcmlhbnQgVFNDLg0KLSMgIFRoZSBpbnZh cmlhbnQgVFNDIHJ1bnMgYXQgYSBjb25zdGFudCByYXRlIGluIGFsbCBBQ1BJIFAtLCBDLS4gYW5k IFQtc3RhdGVzLg0KLSMgIFRoaXMgaXMgdGhlIGFyY2hpdGVjdHVyYWwgYmVoYXZpb3IgbW92aW5n IGZvcndhcmQuDQotIyAgVFNDIHJlYWRzIGFyZSBtdWNoIG1vcmUgZWZmaWNpZW50IGFuZCBkbyBu b3QgaW5jdXIgdGhlIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBhIHJpbmcgdHJhbnNpdGlvbiBv cg0KLSMgIGFjY2VzcyB0byBhIHBsYXRmb3JtIHJlc291cmNlLg0KLSMNCi0jICBDb3B5cmlnaHQg KGMpIDIwMDkgLSAyMDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQotIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSMg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0K LSMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCi0jICBU SEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFT IElTIiBCQVNJUywNCi0jICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLSMNCi0jIw0KLQ0KLVtEZWZp bmVzXQ0KLSAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KLSAg QkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUGVpVHNjVGltZXJMaWINCi0gIEZJTEVf R1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDM0MkMzNkMwLTE1REYtNDNiNC05RUM5LUZCRjc0 OEJGQjNEMQ0KLSAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJTQ0KLSAgVkVS U0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQotICBMSUJSQVJZX0NMQVNTICAgICAg ICAgICAgICAgICAgPSBUaW1lckxpYnxQRUlNIFBFSV9DT1JFDQotDQotDQotIw0KLSMgIFZBTElE X0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQNCi0jDQotDQotW1NvdXJjZXMuY29t bW9uXQ0KLSAgVHNjVGltZXJMaWJTaGFyZS5jDQotICBQZWlUc2NUaW1lckxpYi5jDQotICBUc2NU aW1lckxpYkludGVybmFsLmgNCi0NCi0NCi1bUGFja2FnZXNdDQotICBNZGVQa2cvTWRlUGtnLmRl Yw0KLSAgUGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZGVjDQotDQotDQotW0xpYnJhcnlD bGFzc2VzXQ0KLSAgUGNkTGliDQotICBQY2lMaWINCi0gIElvTGliDQotICBCYXNlTGliDQotICBI b2JMaWINCi0NCi1bR3VpZHNdDQotICBnRWZpVHNjRnJlcXVlbmN5R3VpZCAgICAgICAgICAgICAg ICAgICAgICAgICAgIyMgUFJPRFVDRVMgIyMgSE9CDQotDQotW1BjZC5jb21tb25dDQotICBnUGVy Zm9ybWFuY2VQa2dUb2tlblNwYWNlR3VpZC5QY2RQZXJmUGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNz ICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9M aWJyYXJ5L1RzY1RpbWVyTGliL1RzY1RpbWVyTGliSW50ZXJuYWwuaCBiL1BlcmZvcm1hbmNlUGtn L0xpYnJhcnkvVHNjVGltZXJMaWIvVHNjVGltZXJMaWJJbnRlcm5hbC5oDQpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IGE0ZWQwZWJiMzEuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1h bmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIvVHNjVGltZXJMaWJJbnRlcm5hbC5oDQorKysgL2Rl di9udWxsDQpAQCAtMSw1NSArMCwwIEBADQotLyoqIEBmaWxlDQotICBJbnRlcm5hbCBoZWFkZXIg ZmlsZSBmb3IgVHNjVGltZXJMaWIgaW5zdGFuY2VzLg0KLQ0KLSAgQ29weXJpZ2h0IChjKSAyMDA5 IC0gMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQotICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCi0gIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCi0NCi0gIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lT LA0KLSAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0NCi0qKi8NCi0NCi0jaWZuZGVmIF9UU0NfVElN RVJfTElCX0lOVEVSTkFMX0hfDQotI2RlZmluZSBfVFNDX1RJTUVSX0xJQl9JTlRFUk5BTF9IXw0K LQ0KLSNpbmNsdWRlIDxJY2gvR2VuZXJpY0ljaC5oPg0KLQ0KLSNpbmNsdWRlIDxMaWJyYXJ5L1Rp bWVyTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJy YXJ5L0lvTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvUGNpTGliLmg+DQotI2luY2x1ZGUgPExp YnJhcnkvUGNkTGliLmg+DQotDQotLyoqICBHZXQgVFNDIGZyZXF1ZW5jeS4NCi0NCi0gIEByZXR1 cm4gVGhlIG51bWJlciBvZiBUU0MgY291bnRzIHBlciBzZWNvbmQuDQotDQotKiovDQotVUlOVDY0 DQotSW50ZXJuYWxHZXRUc2NGcmVxdWVuY3kgKA0KLSAgVk9JRA0KLSAgKTsNCi0NCi0vKiogIENh bGN1bGF0ZSBUU0MgZnJlcXVlbmN5Lg0KLQ0KLSAgVGhlIFRTQyBjb3VudGluZyBmcmVxdWVuY3kg aXMgZGV0ZXJtaW5lZCBieSBjb21wYXJpbmcgaG93IGZhciBpdCBjb3VudHMNCi0gIGR1cmluZyBh IDFtcyBwZXJpb2QgYXMgZGV0ZXJtaW5lZCBieSB0aGUgQUNQSSB0aW1lci4gVGhlIEFDUEkgdGlt ZXIgaXMNCi0gIHVzZWQgYmVjYXVzZSBpdCBjb3VudHMgYXQgYSBrbm93biBmcmVxdWVuY3kuDQot ICBJZiBBQ1BJIEkvTyBzcGFjZSBub3QgZW5hYmxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJs ZSBpdC4gVGhlbiB0aGUNCi0gIFRTQyBpcyBzYW1wbGVkLCBmb2xsb3dlZCBieSB3YWl0aW5nIGZv ciAzNTc5IGNsb2NrcyBvZiB0aGUgQUNQSSB0aW1lciwgb3IgMW1zLg0KLSAgVGhlIFRTQyBpcyB0 aGVuIHNhbXBsZWQgYWdhaW4uIFRoZSBkaWZmZXJlbmNlIG11bHRpcGxpZWQgYnkgMTAwMCBpcyB0 aGUgVFNDDQotICBmcmVxdWVuY3kuIFRoZXJlIHdpbGwgYmUgYSBzbWFsbCBlcnJvciBiZWNhdXNl IG9mIHRoZSBvdmVyaGVhZCBvZiByZWFkaW5nDQotICB0aGUgQUNQSSB0aW1lci4gQW4gYXR0ZW1w dCBpcyBtYWRlIHRvIGRldGVybWluZSBhbmQgY29tcGVuc2F0ZSBmb3IgdGhpcyBlcnJvci4NCi0N Ci0gIEByZXR1cm4gVGhlIG51bWJlciBvZiBUU0MgY291bnRzIHBlciBzZWNvbmQuDQotDQotKiov DQotVUlOVDY0DQotSW50ZXJuYWxDYWxjdWxhdGVUc2NGcmVxdWVuY3kgKA0KLSAgVk9JRA0KLSAg KTsNCi0NCi0jZW5kaWYNCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1Rp bWVyTGliL1RzY1RpbWVyTGliU2hhcmUuYyBiL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGlt ZXJMaWIvVHNjVGltZXJMaWJTaGFyZS5jDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDE2MWFmMDAyMzcuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNj VGltZXJMaWIvVHNjVGltZXJMaWJTaGFyZS5jDQorKysgL2Rldi9udWxsDQpAQCAtMSwyNzUgKzAs MCBAQA0KLS8qKiBAZmlsZQ0KLSAgVGhlIFRpbWVyIExpYnJhcnkgaW1wbGVtZW50YXRpb24gd2hp Y2ggdXNlcyB0aGUgVGltZSBTdGFtcCBDb3VudGVyIGluIHRoZSBwcm9jZXNzb3IuDQotDQotICBG b3IgUGVudGl1bSA0IHByb2Nlc3NvcnMsIEludGVsIFhlb24gcHJvY2Vzc29ycyAoZmFtaWx5IFsw RkhdLCBtb2RlbHMgWzAzSCBhbmQgaGlnaGVyXSk7DQotICAgIGZvciBJbnRlbCBDb3JlIFNvbG8g YW5kIEludGVsIENvcmUgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwgWzBFSF0p Ow0KLSAgICBmb3IgdGhlIEludGVsIFhlb24gcHJvY2Vzc29yIDUxMDAgc2VyaWVzIGFuZCBJbnRl bCBDb3JlIDIgRHVvIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZIXSwgbW9kZWwgWzBGSF0pOw0KLSAg ICBmb3IgSW50ZWwgQ29yZSAyIGFuZCBJbnRlbCBYZW9uIHByb2Nlc3NvcnMgKGZhbWlseSBbMDZI XSwgZGlzcGxheV9tb2RlbCBbMTdIXSk7DQotICAgIGZvciBJbnRlbCBBdG9tIHByb2Nlc3NvcnMg KGZhbWlseSBbMDZIXSwgZGlzcGxheV9tb2RlbCBbMUNIXSk6DQotICB0aGUgdGltZS1zdGFtcCBj b3VudGVyIGluY3JlbWVudHMgYXQgYSBjb25zdGFudCByYXRlLg0KLSAgVGhhdCByYXRlIG1heSBi ZSBzZXQgYnkgdGhlIG1heGltdW0gY29yZS1jbG9jayB0byBidXMtY2xvY2sgcmF0aW8gb2YgdGhl IHByb2Nlc3NvciBvciBtYXkgYmUgc2V0IGJ5DQotICB0aGUgbWF4aW11bSByZXNvbHZlZCBmcmVx dWVuY3kgYXQgd2hpY2ggdGhlIHByb2Nlc3NvciBpcyBib290ZWQuIFRoZSBtYXhpbXVtIHJlc29s dmVkIGZyZXF1ZW5jeSBtYXkNCi0gIGRpZmZlciBmcm9tIHRoZSBtYXhpbXVtIHF1YWxpZmllZCBm cmVxdWVuY3kgb2YgdGhlIHByb2Nlc3Nvci4NCi0NCi0gIFRoZSBzcGVjaWZpYyBwcm9jZXNzb3Ig Y29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvci4gQ29uc3RhbnQgVFNDIGJlaGF2 aW9yIGVuc3VyZXMgdGhhdCB0aGUNCi0gIGR1cmF0aW9uIG9mIGVhY2ggY2xvY2sgdGljayBpcyB1 bmlmb3JtIGFuZCBzdXBwb3J0cyB0aGUgdXNlIG9mIHRoZSBUU0MgYXMgYSB3YWxsIGNsb2NrIHRp bWVyIGV2ZW4gaWYNCi0gIHRoZSBwcm9jZXNzb3IgY29yZSBjaGFuZ2VzIGZyZXF1ZW5jeS4gVGhp cyBpcyB0aGUgYXJjaGl0ZWN0dXJhbCBiZWhhdmlvciBtb3ZpbmcgZm9yd2FyZC4NCi0NCi0gIEEg UHJvY2Vzc29yJ3Mgc3VwcG9ydCBmb3IgaW52YXJpYW50IFRTQyBpcyBpbmRpY2F0ZWQgYnkgQ1BV SUQuMHg4MDAwMDAwNy5FRFhbOF0uDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDExLCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQotICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCi0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLQ0KLSAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQotICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQ UkVTUyBPUiBJTVBMSUVELg0KLQ0KLSoqLw0KLQ0KLSNpbmNsdWRlICJUc2NUaW1lckxpYkludGVy bmFsLmgiDQotDQotLyoqICBDYWxjdWxhdGUgVFNDIGZyZXF1ZW5jeS4NCi0NCi0gIFRoZSBUU0Mg Y291bnRpbmcgZnJlcXVlbmN5IGlzIGRldGVybWluZWQgYnkgY29tcGFyaW5nIGhvdyBmYXIgaXQg Y291bnRzDQotICBkdXJpbmcgYSAxbXMgcGVyaW9kIGFzIGRldGVybWluZWQgYnkgdGhlIEFDUEkg dGltZXIuIFRoZSBBQ1BJIHRpbWVyIGlzDQotICB1c2VkIGJlY2F1c2UgaXQgY291bnRzIGF0IGEg a25vd24gZnJlcXVlbmN5Lg0KLSAgSWYgQUNQSSBJL08gc3BhY2Ugbm90IGVuYWJsZWQsIHRoaXMg ZnVuY3Rpb24gd2lsbCBlbmFibGUgaXQuIFRoZW4gdGhlDQotICBUU0MgaXMgc2FtcGxlZCwgZm9s bG93ZWQgYnkgd2FpdGluZyBmb3IgMzU3OSBjbG9ja3Mgb2YgdGhlIEFDUEkgdGltZXIsIG9yIDFt cy4NCi0gIFRoZSBUU0MgaXMgdGhlbiBzYW1wbGVkIGFnYWluLiBUaGUgZGlmZmVyZW5jZSBtdWx0 aXBsaWVkIGJ5IDEwMDAgaXMgdGhlIFRTQw0KLSAgZnJlcXVlbmN5LiBUaGVyZSB3aWxsIGJlIGEg c21hbGwgZXJyb3IgYmVjYXVzZSBvZiB0aGUgb3ZlcmhlYWQgb2YgcmVhZGluZw0KLSAgdGhlIEFD UEkgdGltZXIuIEFuIGF0dGVtcHQgaXMgbWFkZSB0byBkZXRlcm1pbmUgYW5kIGNvbXBlbnNhdGUg Zm9yIHRoaXMgZXJyb3IuDQotDQotICBAcmV0dXJuIFRoZSBudW1iZXIgb2YgVFNDIGNvdW50cyBw ZXIgc2Vjb25kLg0KLQ0KLSoqLw0KLVVJTlQ2NA0KLUludGVybmFsQ2FsY3VsYXRlVHNjRnJlcXVl bmN5ICgNCi0gIFZPSUQNCi0gICkNCi17DQotICBVSU5UNjQgICAgICBTdGFydFRTQzsNCi0gIFVJ TlQ2NCAgICAgIEVuZFRTQzsNCi0gIFVJTlQzMiAgICAgIFRpbWVyQWRkcjsNCi0gIFVJTlQzMiAg ICAgIFRpY2tzOw0KLSAgVUlOVDY0ICAgICAgVHNjRnJlcXVlbmN5Ow0KLQ0KLSAgLy8NCi0gIC8v IElmIEFDUEkgSS9PIHNwYWNlIGlzIG5vdCBlbmFibGVkIHlldCwgcHJvZ3JhbSBBQ1BJIEkvTyBi YXNlIGFkZHJlc3MgYW5kIGVuYWJsZSBpdC4NCi0gIC8vDQotICBpZiAoKFBjaVJlYWQ4IChQQ0lf SUNIX0xQQ19BRERSRVNTIChSX0lDSF9MUENfQUNQSV9DTlQpKSAmIEJfSUNIX0xQQ19BQ1BJX0NO VF9BQ1BJX0VOKSA9PSAwKSB7DQotICAgIFBjaVdyaXRlMTYgKFBDSV9JQ0hfTFBDX0FERFJFU1Mg KFJfSUNIX0xQQ19BQ1BJX0JBU0UpLCBQY2RHZXQxNiAoUGNkUGVyZlBrZ0FjcGlJb1BvcnRCYXNl QWRkcmVzcykpOw0KLSAgICBQY2lPcjggKFBDSV9JQ0hfTFBDX0FERFJFU1MgKFJfSUNIX0xQQ19B Q1BJX0NOVCksIEJfSUNIX0xQQ19BQ1BJX0NOVF9BQ1BJX0VOKTsNCi0gIH0NCi0NCi0gIC8vDQot ICAvLyBBQ1BJIEkvTyBzcGFjZSBzaG91bGQgYmUgZW5hYmxlZCBub3csIGxvY2F0ZSB0aGUgQUNQ SSBUaW1lci4NCi0gIC8vIEFDUEkgSS9PIGJhc2UgYWRkcmVzcyBtYXliZSBoYXZlIGJlIGluaXRp YWxpemVkIGJ5IG90aGVyIGRyaXZlciB3aXRoIGRpZmZlcmVudCB2YWx1ZSwNCi0gIC8vIFNvIGdl dCBpdCBmcm9tIFBDSSBzcGFjZSBkaXJlY3RseS4NCi0gIC8vDQotICBUaW1lckFkZHIgPSAoKFBj aVJlYWQxNiAoUENJX0lDSF9MUENfQUREUkVTUyAoUl9JQ0hfTFBDX0FDUElfQkFTRSkpKSAmIEJf SUNIX0xQQ19BQ1BJX0JBU0VfQkFSKSArIFJfQUNQSV9QTTFfVE1SOw0KLSAgVGlja3MgICAgPSBJ b1JlYWQzMiAoVGltZXJBZGRyKSArICgzNTc5KTsgICAvLyBTZXQgVGlja3MgdG8gMW1zIGluIHRo ZSBmdXR1cmUNCi0gIFN0YXJ0VFNDID0gQXNtUmVhZFRzYygpOyAgICAgICAgICAgICAgICAgICAg Ly8gR2V0IGJhc2UgdmFsdWUgZm9yIHRoZSBUU0MNCi0gIC8vDQotICAvLyBXYWl0IHVudGlsIHRo ZSBBQ1BJIHRpbWVyIGhhcyBjb3VudGVkIDFtcy4NCi0gIC8vIFRpbWVyIHdyYXAtYXJvdW5kcyBh cmUgaGFuZGxlZCBjb3JyZWN0bHkgYnkgdGhpcyBmdW5jdGlvbi4NCi0gIC8vIFdoZW4gdGhlIGN1 cnJlbnQgQUNQSSB0aW1lciB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gJ1RpY2tzJywgdGhlIHdoaWxl IGxvb3Agd2lsbCBleGl0Lg0KLSAgLy8NCi0gIHdoaWxlICgoKFRpY2tzIC0gSW9SZWFkMzIgKFRp bWVyQWRkcikpICYgQklUMjMpID09IDApIHsNCi0gICAgQ3B1UGF1c2UoKTsNCi0gIH0NCi0gIEVu ZFRTQyA9IEFzbVJlYWRUc2MoKTsgICAgLy8gVFNDIHZhbHVlIDFtcyBsYXRlcg0KLQ0KLSAgVHNj RnJlcXVlbmN5ID0gICBNdWx0VTY0eDMyICgNCi0gICAgICAgICAgICAgICAgICAgICAgKEVuZFRT QyAtIFN0YXJ0VFNDKSwgICAgLy8gTnVtYmVyIG9mIFRTQyBjb3VudHMgaW4gMW1zDQotICAgICAg ICAgICAgICAgICAgICAgIDEwMDAgICAgICAgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBtcyBp biBhIHNlY29uZA0KLSAgICAgICAgICAgICAgICAgICAgKTsNCi0NCi0gIHJldHVybiBUc2NGcmVx dWVuY3k7DQotfQ0KLQ0KLS8qKiAgU3RhbGxzIHRoZSBDUFUgZm9yIGF0IGxlYXN0IHRoZSBnaXZl biBudW1iZXIgb2YgdGlja3MuDQotDQotICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhl IGdpdmVuIG51bWJlciBvZiB0aWNrcy4gSXQncyBpbnZva2VkIGJ5DQotICBNaWNyb1NlY29uZERl bGF5KCkgYW5kIE5hbm9TZWNvbmREZWxheSgpLg0KLQ0KLSAgQHBhcmFtW2luXSAgRGVsYXkgICAg IEEgcGVyaW9kIG9mIHRpbWUgdG8gZGVsYXkgaW4gdGlja3MuDQotDQotKiovDQotVk9JRA0KLUlu dGVybmFsWDg2RGVsYXkgKA0KLSAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIERl bGF5DQotICApDQotew0KLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNr czsNCi0NCi0gIC8vDQotICAvLyBUaGUgdGFyZ2V0IHRpbWVyIGNvdW50IGlzIGNhbGN1bGF0ZWQg aGVyZQ0KLSAgLy8NCi0gIFRpY2tzID0gQXNtUmVhZFRzYygpICsgRGVsYXk7DQotDQotICAvLw0K LSAgLy8gV2FpdCB1bnRpbCB0aW1lIG91dA0KLSAgLy8gVGltZXIgd3JhcC1hcm91bmRzIGFyZSBO T1QgaGFuZGxlZCBjb3JyZWN0bHkgYnkgdGhpcyBmdW5jdGlvbi4NCi0gIC8vIFRodXMsIHRoaXMg ZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgd2l0aGluIDEwIHllYXJzIG9mIHJlc2V0IHNpbmNlDQot ICAvLyBJbnRlbCBndWFyYW50ZWVzIGEgbWluaW11bSBvZiAxMCB5ZWFycyBiZWZvcmUgdGhlIFRT QyB3cmFwcy4NCi0gIC8vDQotICB3aGlsZSAoQXNtUmVhZFRzYygpIDw9IFRpY2tzKSBDcHVQYXVz ZSgpOw0KLX0NCi0NCi0vKiogIFN0YWxscyB0aGUgQ1BVIGZvciBhdCBsZWFzdCB0aGUgc3BlY2lm aWVkIG51bWJlciBvZiBNaWNyb1NlY29uZHMuDQotDQotICBAcGFyYW1baW5dICBNaWNyb1NlY29u ZHMgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBtaWNyb3NlY29uZHMgdG8gZGVsYXkuDQotDQotICBA cmV0dXJuIFRoZSB2YWx1ZSBvZiBNaWNyb1NlY29uZHMgaW5wdXQuDQotDQotKiovDQotVUlOVE4N Ci1FRklBUEkNCi1NaWNyb1NlY29uZERlbGF5ICgNCi0gIElOICAgICAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICBNaWNyb1NlY29uZHMNCi0gICkNCi17DQotICBJbnRlcm5hbFg4NkRlbGF5ICgN Ci0gICAgRGl2VTY0eDMyICgNCi0gICAgICBNdWx0VTY0eDY0ICgNCi0gICAgICAgIEludGVybmFs R2V0VHNjRnJlcXVlbmN5ICgpLA0KLSAgICAgICAgTWljcm9TZWNvbmRzDQotICAgICAgKSwNCi0g ICAgICAxMDAwMDAwdQ0KLSAgICApDQotICApOw0KLSAgcmV0dXJuIE1pY3JvU2Vjb25kczsNCi19 DQotDQotLyoqICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhlIHNwZWNpZmllZCBudW1i ZXIgb2YgTmFub1NlY29uZHMuDQotDQotICBAcGFyYW1baW5dICBOYW5vU2Vjb25kcyBUaGUgbWlu aW11bSBudW1iZXIgb2YgbmFub3NlY29uZHMgdG8gZGVsYXkuDQotDQotICBAcmV0dXJuIFRoZSB2 YWx1ZSBvZiBOYW5vU2Vjb25kcyBpbnB1dC4NCi0NCi0qKi8NCi1VSU5UTg0KLUVGSUFQSQ0KLU5h bm9TZWNvbmREZWxheSAoDQotICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgTmFu b1NlY29uZHMNCi0gICkNCi17DQotICBJbnRlcm5hbFg4NkRlbGF5ICgNCi0gICAgRGl2VTY0eDMy ICgNCi0gICAgICBNdWx0VTY0eDMyICgNCi0gICAgICAgIEludGVybmFsR2V0VHNjRnJlcXVlbmN5 ICgpLA0KLSAgICAgICAgKFVJTlQzMilOYW5vU2Vjb25kcw0KLSAgICAgICksDQotICAgIDEwMDAw MDAwMDB1DQotICAgICkNCi0gICk7DQotICByZXR1cm4gTmFub1NlY29uZHM7DQotfQ0KLQ0KLS8q KiAgUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA2NC1iaXQgZnJlZSBydW5uaW5n IFRpbWUtU3RhbXAgY291bnRlci4NCi0NCi0gIFRoZSB0aW1lLXN0YW1wIGNvdW50ZXIgKGFzIGlt cGxlbWVudGVkIGluIHRoZSBQNiBmYW1pbHksIFBlbnRpdW0sIFBlbnRpdW0gTSwNCi0gIFBlbnRp dW0gNCwgSW50ZWwgWGVvbiwgSW50ZWwgQ29yZSBTb2xvIGFuZCBJbnRlbCBDb3JlIER1byBwcm9j ZXNzb3JzIGFuZA0KLSAgbGF0ZXIgcHJvY2Vzc29ycykgaXMgYSA2NC1iaXQgY291bnRlciB0aGF0 IGlzIHNldCB0byAwIGZvbGxvd2luZyBhIFJFU0VUIG9mDQotICB0aGUgcHJvY2Vzc29yLiAgRm9s bG93aW5nIGEgUkVTRVQsIHRoZSBjb3VudGVyIGluY3JlbWVudHMgZXZlbiB3aGVuIHRoZQ0KLSAg cHJvY2Vzc29yIGlzIGhhbHRlZCBieSB0aGUgSExUIGluc3RydWN0aW9uIG9yIHRoZSBleHRlcm5h bCBTVFBDTEsjIHBpbi4gTm90ZQ0KLSAgdGhhdCB0aGUgYXNzZXJ0aW9uIG9mIHRoZSBleHRlcm5h bCBEUFNMUCMgcGluIG1heSBjYXVzZSB0aGUgdGltZS1zdGFtcA0KLSAgY291bnRlciB0byBzdG9w Lg0KLQ0KLSAgVGhlIHByb3BlcnRpZXMgb2YgdGhlIGNvdW50ZXIgY2FuIGJlIHJldHJpZXZlZCBi eSB0aGUNCi0gIEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKSBmdW5jdGlvbi4NCi0N Ci0gIEByZXR1cm4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZyZWUgcnVubmluZyBwZXJmb3Jt YW5jZSBjb3VudGVyLg0KLQ0KLSoqLw0KLVVJTlQ2NA0KLUVGSUFQSQ0KLUdldFBlcmZvcm1hbmNl Q291bnRlciAoDQotICBWT0lEDQotICApDQotew0KLSAgcmV0dXJuIEFzbVJlYWRUc2MoKTsNCi19 DQotDQotLyoqICBSZXRyaWV2ZXMgdGhlIDY0LWJpdCBmcmVxdWVuY3kgaW4gSHogYW5kIHRoZSBy YW5nZSBvZiBwZXJmb3JtYW5jZSBjb3VudGVyDQotICB2YWx1ZXMuDQotDQotICBJZiBTdGFydFZh bHVlIGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSB0aGF0IHRoZSBwZXJmb3JtYW5jZSBjb3Vu dGVyIHN0YXJ0cw0KLSAgd2l0aCwgMHgwLCBpcyByZXR1cm5lZCBpbiBTdGFydFZhbHVlLiBJZiBF bmRWYWx1ZSBpcyBub3QgTlVMTCwgdGhlbiB0aGUgdmFsdWUNCi0gIHRoYXQgdGhlIHBlcmZvcm1h bmNlIGNvdW50ZXIgZW5kIHdpdGgsIDB4RkZGRkZGRkZGRkZGRkZGRiwgaXMgcmV0dXJuZWQgaW4N Ci0gIEVuZFZhbHVlLg0KLQ0KLSAgVGhlIDY0LWJpdCBmcmVxdWVuY3kgb2YgdGhlIHBlcmZvcm1h bmNlIGNvdW50ZXIsIGluIEh6LCBpcyBhbHdheXMgcmV0dXJuZWQuDQotICBUbyBkZXRlcm1pbmUg YXZlcmFnZSBwcm9jZXNzb3IgY2xvY2sgZnJlcXVlbmN5LCBJbnRlbCByZWNvbW1lbmRzIHRoZSB1 c2Ugb2YNCi0gIEVNT04gbG9naWMgdG8gY291bnQgcHJvY2Vzc29yIGNvcmUgY2xvY2tzIG92ZXIg dGhlIHBlcmlvZCBvZiB0aW1lIGZvciB3aGljaA0KLSAgdGhlIGF2ZXJhZ2UgaXMgcmVxdWlyZWQu DQotDQotDQotICBAcGFyYW1bb3V0XSAgIFN0YXJ0VmFsdWUgIFBvaW50ZXIgdG8gd2hlcmUgdGhl IHBlcmZvcm1hbmNlIGNvdW50ZXIncyBzdGFydGluZyB2YWx1ZSBpcyBzYXZlZCwgb3IgTlVMTC4N Ci0gIEBwYXJhbVtvdXRdICAgRW5kVmFsdWUgICAgUG9pbnRlciB0byB3aGVyZSB0aGUgcGVyZm9y bWFuY2UgY291bnRlcidzIGVuZGluZyB2YWx1ZSBpcyBzYXZlZCwgb3IgTlVMTC4NCi0NCi0gIEBy ZXR1cm4gVGhlIGZyZXF1ZW5jeSBpbiBIei4NCi0NCi0qKi8NCi1VSU5UNjQNCi1FRklBUEkNCi1H ZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVzICgNCi0gIE9VVCAgICAgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgKlN0YXJ0VmFsdWUsICBPUFRJT05BTA0KLSAgT1VUICAgICAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAqRW5kVmFsdWUgICAgIE9QVElPTkFMDQotICApDQotew0KLSAg aWYgKFN0YXJ0VmFsdWUgIT0gTlVMTCkgew0KLSAgICAqU3RhcnRWYWx1ZSA9IDA7DQotICB9DQot ICBpZiAoRW5kVmFsdWUgIT0gTlVMTCkgew0KLSAgICAqRW5kVmFsdWUgPSAweEZGRkZGRkZGRkZG RkZGRkZ1bGw7DQotICB9DQotDQotICByZXR1cm4gSW50ZXJuYWxHZXRUc2NGcmVxdWVuY3kgKCk7 DQotfQ0KLQ0KLS8qKg0KLSAgQ29udmVydHMgZWxhcHNlZCB0aWNrcyBvZiBwZXJmb3JtYW5jZSBj b3VudGVyIHRvIHRpbWUgaW4gbmFub3NlY29uZHMuDQotDQotICBUaGlzIGZ1bmN0aW9uIGNvbnZl cnRzIHRoZSBlbGFwc2VkIHRpY2tzIG9mIHJ1bm5pbmcgcGVyZm9ybWFuY2UgY291bnRlciB0bw0K LSAgdGltZSB2YWx1ZSBpbiB1bml0IG9mIG5hbm9zZWNvbmRzLg0KLQ0KLSAgQHBhcmFtICBUaWNr cyAgICAgVGhlIG51bWJlciBvZiBlbGFwc2VkIHRpY2tzIG9mIHJ1bm5pbmcgcGVyZm9ybWFuY2Ug Y291bnRlci4NCi0NCi0gIEByZXR1cm4gVGhlIGVsYXBzZWQgdGltZSBpbiBuYW5vc2Vjb25kcy4N Ci0NCi0qKi8NCi1VSU5UNjQNCi1FRklBUEkNCi1HZXRUaW1lSW5OYW5vU2Vjb25kICgNCi0gIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgVGlja3MNCi0gICkNCi17DQotICBVSU5U NjQgIEZyZXF1ZW5jeTsNCi0gIFVJTlQ2NCAgTmFub1NlY29uZHM7DQotICBVSU5UNjQgIFJlbWFp bmRlcjsNCi0gIElOVE4gICAgU2hpZnQ7DQotDQotICBGcmVxdWVuY3kgPSBHZXRQZXJmb3JtYW5j ZUNvdW50ZXJQcm9wZXJ0aWVzIChOVUxMLCBOVUxMKTsNCi0NCi0gIC8vDQotICAvLyAgICAgICAg ICBUaWNrcw0KLSAgLy8gVGltZSA9IC0tLS0tLS0tLSB4IDEsMDAwLDAwMCwwMDANCi0gIC8vICAg ICAgICBGcmVxdWVuY3kNCi0gIC8vDQotICBOYW5vU2Vjb25kcyA9IE11bHRVNjR4MzIgKERpdlU2 NHg2NFJlbWFpbmRlciAoVGlja3MsIEZyZXF1ZW5jeSwgJlJlbWFpbmRlciksIDEwMDAwMDAwMDB1 KTsNCi0NCi0gIC8vDQotICAvLyBFbnN1cmUgKFJlbWFpbmRlciAqIDEsMDAwLDAwMCwwMDApIHdp bGwgbm90IG92ZXJmbG93IDY0LWJpdC4NCi0gIC8vIFNpbmNlIDJeMjkgPCAxLDAwMCwwMDAsMDAw ID0gMHgzQjlBQ0EwMCA8IDJeMzAsIFJlbWFpbmRlciBzaG91bGQgPCAyXig2NC0zMCkgPSAyXjM0 LA0KLSAgLy8gaS5lLiBoaWdoZXN0IGJpdCBzZXQgaW4gUmVtYWluZGVyIHNob3VsZCA8PSAzMy4N Ci0gIC8vDQotICBTaGlmdCA9IE1BWCAoMCwgSGlnaEJpdFNldDY0IChSZW1haW5kZXIpIC0gMzMp Ow0KLSAgUmVtYWluZGVyID0gUlNoaWZ0VTY0IChSZW1haW5kZXIsIChVSU5UTikgU2hpZnQpOw0K LSAgRnJlcXVlbmN5ID0gUlNoaWZ0VTY0IChGcmVxdWVuY3ksIChVSU5UTikgU2hpZnQpOw0KLSAg TmFub1NlY29uZHMgKz0gRGl2VTY0eDY0UmVtYWluZGVyIChNdWx0VTY0eDMyIChSZW1haW5kZXIs IDEwMDAwMDAwMDB1KSwgRnJlcXVlbmN5LCBOVUxMKTsNCi0NCi0gIHJldHVybiBOYW5vU2Vjb25k czsNCi19DQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZGVjIGIv UGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZGVjDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQNCmluZGV4IGYzOWRjMGJjOTUuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL1Bl cmZvcm1hbmNlUGtnLmRlYw0KKysrIC9kZXYvbnVsbA0KQEAgLTEsMzcgKzAsMCBAQA0KLSMjIEBm aWxlDQotIyBCdWlsZCBkZXNjcmlwdGlvbiBmaWxlIHRvIGdlbmVyYXRlIFNoZWxsIERQIGFwcGxp Y2F0aW9uIGFuZA0KLSMgUGVyZm9ybWFuY2UgTGlicmFyaWVzLg0KLSMNCi0jIENvcHlyaWdodCAo YykgMjAwOSAtIDIwMTEsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCi0jIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCi0jIGFy ZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRp b25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KLSMg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KLSMNCi0jIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMg SVMiIEJBU0lTLA0KLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0jDQotIyMNCi0NCi1bRGVmaW5l c10NCi0gIFBBQ0tBR0VfTkFNRSAgICAgICAgICAgICAgICAgICA9IFBlcmZvcm1hbmNlUGtnDQot ICBQQUNLQUdFX0dVSUQgICAgICAgICAgICAgICAgICAgPSBjZTg5ODY5Ny1iOTQ1LTQ2ZTItYTI2 ZS01NzUyYWY1NjUxODUNCi0gIFBBQ0tBR0VfVkVSU0lPTiAgICAgICAgICAgICAgICA9IDAuMg0K LSAgREVDX1NQRUNJRklDQVRJT04gICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KLQ0KLVtJbmNs dWRlc10NCi0gIEluY2x1ZGUNCi0NCi1bR3VpZHNdDQotICAjIyBQZXJmb3JtYW5jZSBQYWNrYWdl IHRva2VuIHNwYWNlIGd1aWQNCi0gICMgSW5jbHVkZS9HdWlkL1BlcmZvcm1hbmNlUGtnVG9rZW5T cGFjZS5oDQotICAjIDY2OTM0NmVmLWZkYWQtNGFlYi1hNjA4LTdkZWYzZjJkNDYyMQ0KLSAgZ1Bl cmZvcm1hbmNlUGtnVG9rZW5TcGFjZUd1aWQgICAgICAgPSB7IDB4NjY5MzQ2ZWYsIDB4RkRhZCwg MHg0YWViLCB7IDB4MDgsIDB4YTYsIDB4MjEsIDB4NDYsIDB4MmQsIDB4M2YsIDB4ZWYsIDB4N2Qg fX0NCi0NCi0gICMjIEluY2x1ZGUvR3VpZC9Uc2NGcmVxdWVuY3kuaA0KLSAgZ0VmaVRzY0ZyZXF1 ZW5jeUd1aWQgICAgICAgICAgICAgICAgPSB7IDB4ZGJhNmE3ZTMsIDB4YmI1NywgMHg0YmU3LCB7 IDB4OGEsIDB4ZjgsIDB4ZDUsIDB4NzgsIDB4ZGIsIDB4N2UsIDB4NTYsIDB4ODcgfX0NCi0NCi1b UGNkc0ZpeGVkQXRCdWlsZF0NCi0gICMjICBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBBQ1BJIHJl Z2lzdGVycyB3aXRoaW4gdGhlIElDSCBQQ0kgc3BhY2UuDQotICAjICAgVGhpcyBzcGFjZSBtdXN0 IGJlIDEyOC1ieXRlIGFsaWduZWQuDQotICBnUGVyZm9ybWFuY2VQa2dUb2tlblNwYWNlR3VpZC5Q Y2RQZXJmUGtnQWNwaUlvUG9ydEJhc2VBZGRyZXNzfDB4NDAwfFVJTlQxNnwxDQpkaWZmIC0tZ2l0 IGEvUGVyZm9ybWFuY2VQa2cvUGVyZm9ybWFuY2VQa2cuZHNjIGIvUGVyZm9ybWFuY2VQa2cvUGVy Zm9ybWFuY2VQa2cuZHNjDQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDk1Y2M5MDVj YmIuLjAwMDAwMDAwMDANCi0tLSBhL1BlcmZvcm1hbmNlUGtnL1BlcmZvcm1hbmNlUGtnLmRzYw0K KysrIC9kZXYvbnVsbA0KQEAgLTEsNjggKzAsMCBAQA0KLSMjIEBmaWxlDQotIyBCdWlsZCBkZXNj cmlwdGlvbiBmaWxlIHRvIGdlbmVyYXRlIFNoZWxsIERQIGFwcGxpY2F0aW9uLg0KLSMNCi0jIENv cHlyaWdodCAoYykgMjAwOSAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCi0jIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCi0jIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3Vu ZCBhdA0KLSMgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K LSMNCi0jIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiIEJBU0lTLA0KLSMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCi0jDQotIyMNCi0N Ci1bRGVmaW5lc10NCi0gIERTQ19TUEVDSUZJQ0FUSU9OICAgICAgICAgICAgICA9IDB4MDAwMTAw MDUNCi0gIFBMQVRGT1JNX05BTUUgICAgICAgICAgICAgICAgICA9IFBlcmZvcm1hbmNlUGtnDQot ICBQTEFURk9STV9HVUlEICAgICAgICAgICAgICAgICAgPSA5ZmZkN2JmMi0yMzFlLTQ1MjUtOWE0 Mi00ODA1NDVkYWZkMTcNCi0gIFBMQVRGT1JNX1ZFUlNJT04gICAgICAgICAgICAgICA9IDAuMg0K LSAgT1VUUFVUX0RJUkVDVE9SWSAgICAgICAgICAgICAgID0gQnVpbGQvUGVyZm9ybWFuY2VQa2cN Ci0gIFNVUFBPUlRFRF9BUkNISVRFQ1RVUkVTICAgICAgICA9IElBMzJ8SVBGfFg2NHxFQkMNCi0g IEJVSUxEX1RBUkdFVFMgICAgICAgICAgICAgICAgICA9IERFQlVHfFJFTEVBU0V8Tk9PUFQNCi0g IFNLVUlEX0lERU5USUZJRVIgICAgICAgICAgICAgICA9IERFRkFVTFQNCi0NCi1bTGlicmFyeUNs YXNzZXNdDQotICAjDQotICAjIEVudHJ5IFBvaW50IExpYnJhcmllcw0KLSAgIw0KLSAgVWVmaUFw cGxpY2F0aW9uRW50cnlQb2ludHxNZGVQa2cvTGlicmFyeS9VZWZpQXBwbGljYXRpb25FbnRyeVBv aW50L1VlZmlBcHBsaWNhdGlvbkVudHJ5UG9pbnQuaW5mDQotICAjDQotICAjIENvbW1vbiBMaWJy YXJpZXMNCi0gICMNCi0gIEJhc2VMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9CYXNlTGliLmlu Zg0KLSAgQmFzZU1lbW9yeUxpYnxNZGVQa2cvTGlicmFyeS9CYXNlTWVtb3J5TGliL0Jhc2VNZW1v cnlMaWIuaW5mDQotICBVZWZpTGlifE1kZVBrZy9MaWJyYXJ5L1VlZmlMaWIvVWVmaUxpYi5pbmYN Ci0gIFByaW50TGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQcmludExpYi9CYXNlUHJpbnRMaWIuaW5m DQotICBQY2RMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBjZExpYk51bGwvQmFzZVBjZExpYk51bGwu aW5mDQotICBIb2JMaWJ8TWRlUGtnL0xpYnJhcnkvRHhlSG9iTGliL0R4ZUhvYkxpYi5pbmYNCi0g IE1lbW9yeUFsbG9jYXRpb25MaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaU1lbW9yeUFsbG9jYXRpb25M aWIvVWVmaU1lbW9yeUFsbG9jYXRpb25MaWIuaW5mDQotICBVZWZpQm9vdFNlcnZpY2VzVGFibGVM aWJ8TWRlUGtnL0xpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliL1VlZmlCb290U2Vydmlj ZXNUYWJsZUxpYi5pbmYNCi0gIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYnxNZGVQa2cvTGli cmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxl TGliLmluZg0KLSAgRGVidWdMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZURlYnVnTGliTnVsbC9CYXNl RGVidWdMaWJOdWxsLmluZg0KLSAgRGVidWdQcmludEVycm9yTGV2ZWxMaWJ8TWRlUGtnL0xpYnJh cnkvQmFzZURlYnVnUHJpbnRFcnJvckxldmVsTGliL0Jhc2VEZWJ1Z1ByaW50RXJyb3JMZXZlbExp Yi5pbmYgIA0KLSAgRGV2aWNlUGF0aExpYnxNZGVQa2cvTGlicmFyeS9VZWZpRGV2aWNlUGF0aExp Yi9VZWZpRGV2aWNlUGF0aExpYk9wdGlvbmFsRGV2aWNlUGF0aFByb3RvY29sLmluZg0KLSAgUGVD b2ZmR2V0RW50cnlQb2ludExpYnxNZGVQa2cvTGlicmFyeS9CYXNlUGVDb2ZmR2V0RW50cnlQb2lu dExpYi9CYXNlUGVDb2ZmR2V0RW50cnlQb2ludExpYi5pbmYNCi0gIEhpaUxpYnxNZGVNb2R1bGVQ a2cvTGlicmFyeS9VZWZpSGlpTGliL1VlZmlIaWlMaWIuaW5mDQotICBVZWZpSGlpU2VydmljZXNM aWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaVNlcnZpY2VzTGliL1VlZmlIaWlTZXJ2aWNl c0xpYi5pbmYNCi0gIFBlcmZvcm1hbmNlTGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZVNtbVBl cmZvcm1hbmNlTGliL0R4ZVNtbVBlcmZvcm1hbmNlTGliLmluZg0KLSAgSW9MaWJ8TWRlUGtnL0xp YnJhcnkvQmFzZUlvTGliSW50cmluc2ljL0Jhc2VJb0xpYkludHJpbnNpYy5pbmYNCi0gIEZpbGVI YW5kbGVMaWJ8TWRlUGtnL0xpYnJhcnkvVWVmaUZpbGVIYW5kbGVMaWIvVWVmaUZpbGVIYW5kbGVM aWIuaW5mDQotICBTb3J0TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0TGliL1VlZmlT b3J0TGliLmluZg0KLQ0KLSAgU2hlbGxMaWJ8U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxMaWIv VWVmaVNoZWxsTGliLmluZg0KLQ0KLSAgUGNpTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQY2lMaWJD ZjgvQmFzZVBjaUxpYkNmOC5pbmYNCi0gIFBjaUNmOExpYnxNZGVQa2cvTGlicmFyeS9CYXNlUGNp Q2Y4TGliL0Jhc2VQY2lDZjhMaWIuaW5mDQotICBEeGVTZXJ2aWNlc0xpYnxNZGVQa2cvTGlicmFy eS9EeGVTZXJ2aWNlc0xpYi9EeGVTZXJ2aWNlc0xpYi5pbmYNCi0NCi1bQ29tcG9uZW50cy5JQTMy LCBDb21wb25lbnRzLlg2NF0NCi0gIFBlcmZvcm1hbmNlUGtnL0xpYnJhcnkvVHNjVGltZXJMaWIv RHhlVHNjVGltZXJMaWIuaW5mDQotICBQZXJmb3JtYW5jZVBrZy9MaWJyYXJ5L1RzY1RpbWVyTGli L1BlaVRzY1RpbWVyTGliLmluZg0KLSAgUGVyZm9ybWFuY2VQa2cvTGlicmFyeS9Uc2NUaW1lckxp Yi9CYXNlVHNjVGltZXJMaWIuaW5mDQotDQotW0NvbXBvbmVudHNdDQotICBQZXJmb3JtYW5jZVBr Zy9EcF9BcHAvRHAuaW5mDQotDQotW0J1aWxkT3B0aW9uc10NCi0gICpfKl8qX0NDX0ZMQUdTID0g LUQgRElTQUJMRV9ORVdfREVQUkVDQVRFRF9JTlRFUkZBQ0VTDQotLSANCjIuMTUuMS53aW5kb3dz LjINCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmVk azItZGV2ZWwgbWFpbGluZyBsaXN0DQplZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KaHR0cHM6Ly9s aXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=