From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web10.40574.1679934744388217922 for ; Mon, 27 Mar 2023 09:32:24 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=hq9oD09Z; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679934744; x=1711470744; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=FLrnR+qd+pce7Hyu5d9dU3Wx7cfjCSr02mN/nKuq4v0=; b=hq9oD09ZMN9WxUmxRJLqggEm5zl44IpU/p7w8EZNC3uFF7hm+bBM99ez 3q9QXQwr/SGt2Rucz0apsMCKPvhQCVuLn8fudTC8+6H8oFqWSsKgreOm0 3nreSswJRJWNMLeCDcXBKlbe11k172y2lwC9Pj2eiXe7NyXExkEHq0Zqy trd/UG1g5pOexcehEUAVFkwvX+S9pkv1V/9ZUDyJh+kMiwlUjd+jaIHCb HGUBwJo+RAewJvn0aO+l3KJaXHN4ieysrLXcp7SXaG7YqIqlzTuTc1soE FNg/Qf/yyYUFNO7Gdd/RJj7mOmovYkOTn7z+R5sTKAM5OPFk23q2gB2BQ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="339040826" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="339040826" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Mar 2023 09:32:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10662"; a="772774678" X-IronPort-AV: E=Sophos;i="5.98,295,1673942400"; d="scan'208";a="772774678" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by FMSMGA003.fm.intel.com with ESMTP; 27 Mar 2023 09:32:23 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 27 Mar 2023 09:32:23 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Mon, 27 Mar 2023 09:32:23 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Mon, 27 Mar 2023 09:32:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ASS3w+YzOOxG4+vF5cehiK5VIhvyO4Spy6TYDTo2qB/y5wAsJn57PbeQhnVE60DARZkkY3R4qe8s3/1pK6Ub9DMen9KS99u2LEf22dgSjSIiaB/3oEPf7qucBZTbatwC6sPIUpdOBf0XDwMckOs/WCmnaP7vXWU+PZRqyuVTjeIvw2YkZbTGTBtWcZ2kW6aqfam6IGsaglqqeU6C3oiB5wtkXd5dWQUbQzpG/CkXr4qD8YrkrNxBKL6s/DzcwNnrtoNu7Lvp++lptaXT6leVRdUbUxu1Gjyp28NuItphN3PmS+HkEeXkl/kxh2LlQYRBVXfrgdc4rsEC0gYEuT9YQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FLrnR+qd+pce7Hyu5d9dU3Wx7cfjCSr02mN/nKuq4v0=; b=HxW7il2TT5tZeUPJ8JETsA/6tuGe6yB6bHg8SSiWO2I8JyxcgavVvegGg2I4uoPRe9qnGgvjZO+2vnRZxxpHeKefJBmeu2C0RlG2UjThg9iXWNq+fSHvtddkTRON/d1ryXnZDRQXS4ISBkRxOglCNA37MGNCI5fvt3OTwaAwbDSLMIfnxaZu5LLlESOYisiPfT7ouiPpwMmpxYwHvKOmGoKseJvBI5LT2FuxpmsscLvSTxLMD6o6FuCthL2nqxeRcf4JlmU4PLm/jI+FzBQ+JbW3F4pufLO1X6DkMRDdwdiNwNjfbetvew7NwjEizzLC/EzA6MSohm5+dGwRe1a/Tg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by MN0PR11MB6011.namprd11.prod.outlook.com (2603:10b6:208:372::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.41; Mon, 27 Mar 2023 16:32:18 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%8]) with mapi id 15.20.6222.029; Mon, 27 Mar 2023 16:32:18 +0000 From: "Michael D Kinney" To: "Warkentin, Andrei" , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , "Kinney, Michael D" Subject: Re: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Topic: [PATCH v5 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V Thread-Index: AQHZU3KAqGEKmVrnyEKey33ndupHCa7+ceoAgAAB5TCAAAxtAIAQa2yw Date: Mon, 27 Mar 2023 16:32:18 +0000 Message-ID: References: <20230310170456.5230-1-andrei.warkentin@intel.com> <20230310170456.5230-3-andrei.warkentin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|MN0PR11MB6011:EE_ x-ms-office365-filtering-correlation-id: df0ca3fe-9ccf-40a4-9e82-08db2ee0d536 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pZXlNjg9+bQzy21GAVsVAdgRc6dHXdcxdOhQqXcPkic/FGVyYEiPcsnBDEamPhSeBuHu8o2VLtTk3wMGvXp+1fHjvvL+Qs+4S0rzp83J5gsQhpmrgLyOTj3vmrH250GnOBamg91gDLCBwNcgnjhyLYti8FLbpR8PvccAoFF1cnTMIBg1raW8Y3GS4YenZABd0hUO/2E6ZqiZZt2Ha2PfLFy7/iq5qaor5VD2oXM42PMas0/NH+B8sJb+ERV5BPqAFdSHmkE6qXWX3+DepSrmmE0nzNE8njzPBzc+b3oeVDK9gzRuulrPhLWjR7aw7Eg9dJlRxpRuj3wu2H+Wgo/Lw/uY/dQ/KfXH2DYft35wh9OiFrll1bBUi1T7Uazp0xE4GD/ohbMwgvY52O77/1tNnI2bouOiH8eAxo480PkqBfYZtb2Oil+tQa/rN8S4g5d8a4AFvWpbGYudtv6zD/Lw/l1m9vcfe5PK+YtRFm9uegAt0WnCNNKkAyk6oY+v1yzE3VyO+gsQVpr8XxS1hrclqoNa2i4aUa9PBg2Pm/bzUFxliz4phhIwZYkHplgk/O312m5Rq2nJNlasCtl4Mbp4nH2EYHj5fEJnB3ESZkUob+bY5UwiPlgFq88iUfLv3mVp x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(39860400002)(366004)(346002)(376002)(396003)(451199021)(478600001)(54906003)(110136005)(186003)(53546011)(64756008)(66446008)(8676002)(66556008)(66476007)(4326008)(76116006)(66946007)(316002)(33656002)(82960400001)(41300700001)(38100700002)(30864003)(9686003)(71200400001)(2906002)(8936002)(122000001)(6506007)(5660300002)(52536014)(26005)(83380400001)(38070700005)(7696005)(107886003)(55016003)(86362001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?R2VKaWMrNWQ2VEwzYjM5Ty9zTjk3ZTFib01wLzZORDFqVkpMbjBKRU9VbG9y?= =?utf-8?B?aEFWYzlwUGNSTG1xQ2pUSEdhckpLaVNVa1pYOFlsdkxsSmt2UzhKVHpSNUkx?= =?utf-8?B?UGlTb1Z5b3BXVlZRdUt0cXBWNGdTZFQyT1B1WHFlZW9NajN2M1VhWTVtT0Ev?= =?utf-8?B?Tm0vSVBMUzF6T2FqZU9QbWNOUmZuRHRwYS9xei9YWWp1d3dlbGM4RWJsbVFL?= =?utf-8?B?SXJua01KOFFzRzcwdGcyTXZUVTZRWXFSbTIyK2tCZVRGTVBsTForNTNUVytD?= =?utf-8?B?dTBER0I4YzV6RUVkM2VwK05WMTZVdjZFS2w3V2E1WC9QYStlVVRiejZ4QmFT?= =?utf-8?B?UnNXNEpLaXZpRUJ5L0ZTU3Z1ckJlYjFSaVptUVlESmhINk1oR1dmTFRidE9m?= =?utf-8?B?K2UySXBDL3RqVGNsSWhHSG1mSTFHM0JRRHFGeDN2QVRsVGNtSkNUVzNRMEtV?= =?utf-8?B?MXJRVGkvWGYvLzRlenBXcHk2eXNuNmk2K2FHSGtNZDZ1VE5aTnhtdXh2OXpp?= =?utf-8?B?RXYrcHJiL3N6cmtEZjBvVVNWaGk3bGNJSE0va1pTZTR5dTFCNEdkVWt5NFpt?= =?utf-8?B?aDFLVFM1SmtzZnpZYnljTFByTmFTRzNGWjZzaTlLVGxQaU9MR2FqQXdHVWdL?= =?utf-8?B?RURpZ0Rib3JwcU1SVEJ3R25rWU1uMXhWelNhMngxTGMrMVdhTXFkUGV6NERj?= =?utf-8?B?ZkdYNlBqZEVxN3c4WXgwNnNzTVJYSVpUQVJJWTcyNmRZTEJsTW5lckdxaHRV?= =?utf-8?B?bFdLUEpSTE5aMSt6TmJJcEFNa1IySTNQM3lEK1NOV0ZTcnZ0L25rUXJBVFRD?= =?utf-8?B?TlQ2NWlvekdjcEhqYWI3cDhCWEVqaitSTTNrQUVPUmtrSnNxUmVYOEhKOWZI?= =?utf-8?B?VnJRaGYzdm8zWkFYNnZHVUhxbUJzdXJEaExnd0taRWg0T1F4aFNEVUd5dmNw?= =?utf-8?B?Zk9lRE0xemhPclBSeE9Yc0ZzbWpkbG50NWk3MmE4VW1XWWgwb3lYZFgyZ0dI?= =?utf-8?B?TTFCMGtwTVpERXhwcjUvd2hTdzdzQjBkYk1UZ0ZCU0JWVmxGRm9QVUZZWHpZ?= =?utf-8?B?VTF4QUVBL0dXdWp6dk9UVkFrelJoRVZ2TURtM01TYW15eW9ZUmY1Y1loR29u?= =?utf-8?B?Y01MQ3RWc0JQUVplKy9mYmVTYWtCT2ZNTU4zNm94cFljRTBqdkVLTkc5dnpp?= =?utf-8?B?eGJxSGt1eFZZenBzcXJEYWFpRmJWUmJWQUw1aGF1UGZEdURycWhLNGt3R0d1?= =?utf-8?B?ZDU1aURKdmFhdk5ScWFuWmNtUG1jMEg1NkxUQU1EQVpPQXRkaDRJbzJkR2M4?= =?utf-8?B?NVVCSlRQbGpJUklVSlhBYXV6YmxOM2VRUEcxQ2l1ak1nVlM3SUIyV2JaeVNv?= =?utf-8?B?YkgrTVYvd2lPNm5USDY4TDRKbWx4Y3BEMXdDWHBCN3l6aFBCSFFySjNUSUlV?= =?utf-8?B?angwZGk1SGphcEVBWmlhZmR6VmJTMWh1RG0yOG5qcHlIcnhGS2dNSUkvYTlv?= =?utf-8?B?MWJtQU1vMDlSQnJRNHUvRkhkendQQmJWQjlpQzNVQmNvUWM0aElKUksxUWRO?= =?utf-8?B?MVJyZDJHWFZKSWg2alV4MGtVd1lQZVRVeWxVMjFreWMwNElNSmd2QVJxbnVh?= =?utf-8?B?bEl3cVdJVEtDU2tTTm01aU5teUZkS2l4a05rQnN3SE42clJ4eGZmWms0eEVw?= =?utf-8?B?aHlWNy9wOHVJcFJ4WXRsK1UzaHZYMXlHSXl6RFdLQmNoOW9HbnE4aVd3TDhB?= =?utf-8?B?S0VISVc1M3dTNEtOQUpvbmVaNlNzL3hLd2VYKzVGZFJuSnplM3licTNQcDBX?= =?utf-8?B?Y3NyYmdYcjF6cjVsYUV6eHNnR3N5cUJzdkxXNmdmLzNLMk1EY2poY3dHR29W?= =?utf-8?B?QnVWU0ExQWFDNGFJbU42dkZ0REs1THpsMUdtQ3NSdkpKTUFnQk8xYUwyZmpt?= =?utf-8?B?T2d4cHN0WFdQNUQ4S25tTFlEVGFYOE9wMmdvcVJmZVlGekVxMitVeDlwY2la?= =?utf-8?B?cEVaNmR6REdVS1RaR1g4czBWVHVIcDRZQXNjWmJVeXdkVXFKN242aFNPSTNm?= =?utf-8?B?a3FrdnhWeTN0MVF5VXpWR1VRMkYwcDRFcmQvbUJuSU1wbWxqS1pTeWpNVXhV?= =?utf-8?B?ZWNEZ2J6bU9kVURtTG9ZTytDWEtiR25Ib2I1ZDJ4aVBiNkxKZjhvMVZpVGpP?= =?utf-8?B?Vmc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df0ca3fe-9ccf-40a4-9e82-08db2ee0d536 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2023 16:32:18.7215 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BhYseb+im+mpUGJNfgi3L/pFQMgxwAvkOV22JvVpcYcA+3Nq/J5ens+7qsxC4wFhzXb6UHTNV7xjBFsan84n++dgyIFzeL/QxaSPido5JTM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6011 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSB0aGluayB0aGF0IHdvdWxkIHN0aWxsIGJlIGNhbGxlZCBTZWMuICBBcmUgdGhlcmUgYW55IGlz c3VlcyB3aXRoIHVzaW5nIFNlYyBwcmVmaXg/DQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBp bnRlbC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAxNiwgMjAyMyAxMDo0NSBQTQ0KPiBU bzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gQ2M6IEdhbywgTGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20u Y24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS RTogW1BBVENIIHY1IDIvM10gTWRlUGtnOiBhZGQgU0JJLWJhc2VkIFNlcmlhbFBvcnRMaWIgZm9y IFJJU0MtVg0KPiANCj4gUHJlUGkgcmVmZXJzIHRvIGEgU0VDLWxpa2Ugc3RhZ2UgaW4gYSBUaWFu byBpbXBsZW1lbnRhdGlvbiB0aGF0IHNraXBzIHRoZSBQRUkgc3RhZ2UuIFJlYXNvbnMgZm9yIHNr aXBwaW5nIFBFSSB1c3VhbGx5IGNlbnRlciBhcm91bmQNCj4gbWVtb3J5IGluaXRpYWxpemF0aW9u IGJlaW5nIGRvbmUgYXQgYW4gZWFybGllciBzdGFnZSBvZiBmaXJtd2FyZSBpbml0aWFsaXphdGlv biAtIGZvciBleGFtcGxlLCBwcmlvciBvciBwYXJ0IG9mIFRGLUEgZmlybXdhcmUgb24NCj4gQUFy Y2g2NCBvciBwcmlvciBvciBwYXJ0IG9mIFNCSSBpbXBsZW1lbnRhdGlvbiBvbiBSSVNDLVYuDQo+ IA0KPiBFLmcuIEFybVZpcnRQa2cvUHJlUGkgYW5kIE92bWZQa2cvUmlzY1ZWaXJ0L1NlYy4gVGhl IGxhdGVyIGlzIG5vdCBhICJTRUMiIGluIHRoZSBzZW5kIG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNv cmUsIGJ1dCBpbnN0ZWFkIGhhbmRzDQo+IG9mZiB0byBEeGVDb3JlLg0KPiANCj4gVGhlcmUgaXMg bm8gYmFzZSB0eXBlIGZvciBQcmVQaS4gVGhlIHR5cGUgaXMgc3RpbGwgU0VDLiBCdXQgaXQgYSkg YXNzdW1lcyBSQU0gaXMgYXZhaWxhYmxlIGIpIGJ1aWxkcyBIT0JzIGFuZCBoYW5kcy1vZmYgdG8g RFhFLg0KPiANCj4gVGhlIG5hbWUgaGFzIGJlZW4gYXJvdW5kIGZvciBhdCBsZWFzdCBoYWxmIGEg ZGVjYWRlIG5vdyBhbmQgbWFraW5nIGl0IGEgcGFydCBvZiB0aGUgU2VyaWFsUG9ydExpYiBjb21w b25lbnQgbmFtZSBpcyBpbXBvcnRhbnQgYXMgaXQNCj4gc2lnbmlmaWVzIHRoZSBzY2VuYXJpbyB3 aGVyZSB0aGUgY29kZSBjYW4gYXBwbHkuDQo+IA0KPiBBDQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBp bnRlbC5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTWFyY2ggMTcsIDIwMjMgMTI6MDEgQU0NCj4gVG86 IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT47IGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+IENjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNu PjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFl bCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2 NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliIGZvciBSSVNDLVYNCj4g DQo+IFdoYXQgaXMgdGhlIGRlZmluaXRpb24gb2YgIlByZVBJIj8gIFRoYXQgaXMgbm90IGEgcHJl Zml4IEkgaGF2ZSBzZWVuIHVzZWQgYmVmb3JlLg0KPiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWku d2Fya2VudGluQGludGVsLmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMTYsIDIwMjMg OTo1MyBQTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBLaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPiA+IDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50 ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkkt YmFzZWQgU2VyaWFsUG9ydExpYiBmb3INCj4gPiBSSVNDLVYNCj4gPg0KPiA+IEhpIGZvbGtzLA0K PiA+DQo+ID4gQ2FuIEkgZ2V0IGEgcmV2aWV3IGZvciB0aGUgY2hhbmdlcyB0byBNZGVQa2cuZHNj IHRvIGluY2x1ZGUgdGhlIG5ldw0KPiA+IGxpYnMgb24gUklTQy1WPyBUaGF0J3MgdGhlIG1pbm9y IHRoaW5nIHByZXZlbnRpbmcgdGhpcyBwYXRjaCBzZXQgZnJvbSBiZWluZyBtZXJnZWQg8J+Yii4N Cj4gPg0KPiA+IEENCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiA+IFNl bnQ6IEZyaWRheSwgTWFyY2ggMTAsIDIwMjMgMTE6MDUgQU0NCj4gPiBUbzogZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiBDYzogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50 ZWwuY29tPjsgRGFuaWVsIFNjaGFlZmVyDQo+ID4gPGdpdEBkYW5pZWxzY2hhZWZlci5tZT47IFN1 bmlsIFYgTCA8c3VuaWx2bEB2ZW50YW5hbWljcm8uY29tPjsgS2lubmV5LA0KPiA+IE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPiA+IDxnYW9saW1p bmdAYnlvc29mdC5jb20uY24+OyBMaXUsIFpoaWd1YW5nIDx6aGlndWFuZy5saXVAaW50ZWwuY29t PjsNCj4gPiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4NCj4gPiBTdWJqZWN0OiBb UEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklT Qy1WDQo+ID4NCj4gPiBUaGVzZSBhcmUgaW1wbGVtZW50YXRpb25zIG9mIFNlcmlhbFBvcnRMaWIg dXNpbmcgU0JJIGNvbnNvbGUgc2VydmljZXMuDQo+ID4gLSBTZWNQZWlSaXNjVlNlcmlhbFBvcnRM aWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFNFQy9QRUkgKFhJUCkNCj4gPiBlbnZpcm9ubWVudHMN Cj4gPiAtIFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpIGlzIGFwcHJvcHJpYXRlIGZvciBQ cmVQSS9EWEUNCj4gPiBlbnZpcm9ubWVudHMNCj4gPg0KPiA+IFRlc3RlZCB3aXRoOg0KPiA+IC0g UWVtdSBSaXNjVlZpcnQgKG5vbi1EQkNOIGNhc2UsIGJhY2tlZCBieSBVQVJUKQ0KPiA+IC0gVGlu eUVNVSArIFJpc2NWVmlydCAobm9uLURCQ04gY2FzZSwgSFRJRikNCj4gPiAtIFRpbnlFTVUgKyBS aXNjVlZpcnQgKERCQ04gY2FzZSwgSFRJRikNCj4gPg0KPiA+IENjOiBEYW5pZWwgU2NoYWVmZXIg PGdpdEBkYW5pZWxzY2hhZWZlci5tZT4NCj4gPiBDYzogU3VuaWwgViBMIDxzdW5pbHZsQHZlbnRh bmFtaWNyby5jb20+DQo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPg0KPiA+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+ DQo+ID4gQ2M6IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gPiBBY2tl ZC1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogQW5kcmVpIFdhcmtlbnRpbiA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+DQo+ID4gLS0t DQo+ID4gIE1kZVBrZy9NZGVQa2cuZHNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4gIE1kZVBrZy9MaWJyYXJ5 L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGli U2JpLmluZiB8ICAzNiArKysNCj4gPiAgTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQ b3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS5pbmYgICAgIHwgIDM5ICsrKw0K PiA+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jICAgfCAyODggKysrKysrKysrKysrKysrKysrKysNCj4g PiAgTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NW U2VyaWFsUG9ydExpYlNiaS5jICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysNCj4gPiAgTWRl UGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNl cmlhbFBvcnRMaWJTYmkudW5pIHwgIDE2ICsrDQo+ID4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJp c2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5pICAgICB8 ICAxNiArKw0KPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDYzMCBpbnNlcnRpb25zKCspDQo+ID4NCj4g PiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kc2MgYi9NZGVQa2cvTWRlUGtnLmRzYyBpbmRl eA0KPiA+IDBhYzc2MThiNDYyMy4uZmIzMTM0OTA0MmZiIDEwMDY0NA0KPiA+IC0tLSBhL01kZVBr Zy9NZGVQa2cuZHNjDQo+ID4gKysrIGIvTWRlUGtnL01kZVBrZy5kc2MNCj4gPiBAQCAtMTkyLDUg KzE5Miw3IEBAIFtDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0XQ0KPiA+DQo+ID4g IFtDb21wb25lbnRzLlJJU0NWNjRdDQo+ID4gICAgTWRlUGtnL0xpYnJhcnkvQmFzZVJpc2NWU2Jp TGliL0Jhc2VSaXNjVlNiaUxpYi5pbmYNCj4gPiArDQo+ID4gKyBNZGVQa2cvTGlicmFyeS9TZWNQ ZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliUw0KPiA+ICsg YmkNCj4gPiArIC5pbmYNCj4gPiArIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQ b3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0DQo+ID4gKyBMaQ0KPiA+ICsgYlNiaS5p bmYNCj4gPg0KPiA+ICBbQnVpbGRPcHRpb25zXQ0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL01kZVBr Zy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJp YWxQb3J0DQo+ID4gTGliU2JpLmluZg0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNj VlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gPiBMaWJTYmkuaW5m DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjFkODU0 NDc1NmJiOQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9QcmVQ aUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsDQo+ID4gKysrIFBv DQo+ID4gKysrIHJ0TGliU2JpLmluZg0KPiA+IEBAIC0wLDAgKzEsMzYgQEANCj4gPiArIyMgQGZp bGUNCj4gPiArIyAgU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ ID4gKyMNCj4gPiArIyAgTWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVy ZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4gPiArU2VlICMgIFNlY1BlaVNlcmlhbFBvcnRMaWJS aXNjVlNiaSBmb3IgYSByZWR1Y2VkIHZhcmlhbnQgYXBwcm9wcmlhdGUNCj4gPiArZm9yIFNFQyAj ICBhbmQgUEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gPiArIw0KPiA+ICsjICBDb3B5cmlnaHQg KGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gIw0K PiA+ICsjDQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 ICMgIyAjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAg ICAgICAgICAgICAgID0gMHgwMDAxMDAxQg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAg ICAgICAgICA9IFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpDQo+ID4gKyAgTU9EVUxFX1VO SV9GSUxFICAgICAgICAgICAgICAgID0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5p DQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gODcyYWY3NDMtYWI1Ni00 NWI0LWEwNjUtNjAyNTY3ZjQ4MjBjDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAg ICAgID0gQkFTRQ0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0K PiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFNlcmlhbFBvcnRMaWIgfCBT RUMgRFhFX0NPUkUgRFhFX0RSSVZFUiBEWEVfUlVOVElNRV9EUklWRVIgVUVGSV9EUklWRVIgVUVG SV9BUFBMSUNBVElPTg0KPiA+ICsNCj4gPiArDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElU RUNUVVJFUyAgICAgICAgICAgPSBSSVNDVjY0DQo+ID4gKyMNCj4gPiArDQo+ID4gK1tTb3VyY2Vz XQ0KPiA+ICsgIFByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gPiArDQo+ID4gK1tQ YWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlD bGFzc2VzXQ0KPiA+ICsgIFJpc2NWU2JpTGliDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtn L0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NWU2VyaWFsUG9y dExpYlMNCj4gPiBiaS5pbmYNCj4gPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFs UG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+ID4gYmkuaW5mDQo+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdiYzdjZDQ3YzExYw0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNl cmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0DQo+ID4gKysrIExpDQo+ID4gKysr IGJTYmkuaW5mDQo+ID4gQEAgLTAsMCArMSwzOSBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ICsjICBT ZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4NCj4gPiArIw0KPiA+ICsj ICBNZWFudCBmb3IgU0VDIGFuZCBQRUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiA+ICsjDQo+ID4g KyMgIER1ZSB0byBsaW1pdGF0aW9ucyBvZiBTQkkgY29uc29sZSBpbnRlcmZhY2UgYW5kIFhJUCBl bnZpcm9ubWVudHMgIw0KPiA+ICsob24gdXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5z dGFuY2UgZG9lcyBub3QgaW1wbGVtZW50IHJlYWRpbmcNCj4gPiArIyBhbmQgcG9sbGluZyB0aGUg c2VyaWFsIHBvcnQuIFNlZSBQcmVQaUR4ZVNlcmlhbFBvcnRMaWJSaXNjVlNiaSBmb3INCj4gPiAr IyB0aGUgZnVsbC1mZWF0dXJlZCB2YXJpYW50IG1lYW50IGZvciBQcmVQaSBhbmQgRFhFIGVudmly b25tZW50cy4NCj4gPiArIw0KPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMjMsIEludGVsIENvcnBv cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gIw0KPiA+ICsjDQo+ID4gK1NQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyAjIw0KPiA+ICsNCj4gPiAr W0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAx MDAxQg0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNlY1BlaVJpc2NW U2VyaWFsUG9ydExpYlNiaQ0KPiA+ICsgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9 IFNlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkNCj4gPiArICBGSUxFX0dVSUQgICAgICAg ICAgICAgICAgICAgICAgPSA2MzlmYWQzOC00YmZkLTRlYjktOWYwOS1lOTdjNzk0N2Q0ODANCj4g PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBCQVNFDQo+ID4gKyAgVkVSU0lP Tl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAg ICAgICAgICAgICAgID0gU2VyaWFsUG9ydExpYiB8IFNFQyBQRUlfQ09SRSBQRUlNDQo+ID4gKw0K PiA+ICsNCj4gPiArIw0KPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IFJJ U0NWNjQNCj4gPiArIw0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgU2VjUGVpUmlzY1ZT ZXJpYWxQb3J0TGliU2JpLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsgIFJpc2NWU2Jp TGliDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNl cmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gPiBMaWJTYmkuYw0KPiA+ IGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVS aXNjVlNlcmlhbFBvcnQNCj4gPiBMaWJTYmkuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNThhNjU3M2VmMmQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJl UGlEeGVSaXNjVlNlcmlhbA0KPiA+ICsrKyBQbw0KPiA+ICsrKyBydExpYlNiaS5jDQo+ID4gQEAg LTAsMCArMSwyODggQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgU2VyaWFsIFBvcnQgTGlicmFy eSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gKw0KPiA+ICsgIE1lYW50IGZvciBQcmVQaSBh bmQgRFhFIGVudmlyb25tZW50cyAod2hlcmUgZ2xvYmFscyBhcmUgYWxsb3dlZCkuDQo+ID4gKyBT ZWUgU2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFyaWFudCBhcHBy b3ByaWF0ZQ0KPiA+ICsgZm9yIFNFQyBhbmQgUEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gPiAr DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPEJhc2Uu aD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPg0KPiA+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlUmlzY1ZTYmlMaWIuaD4NCj4gPiArDQo+ID4gK1NUQVRJQyBCT09MRUFO ICBtSGF2ZURiY24gICAgICAgICAgPSBGQUxTRTsNCj4gPiArU1RBVElDIEJPT0xFQU4gIG1IYXZl TGVnYWN5UHV0Y2hhciA9IEZBTFNFOyBTVEFUSUMgQk9PTEVBTg0KPiA+ICttSGF2ZUxlZ2FjeUdl dGNoYXIgPSBGQUxTRTsNCj4gPiArU1RBVElDIElOVDY0ICAgIG1MYXN0R2V0Q2hhciAgICAgICA9 IC0xOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgSW5pdGlhbGl6ZSB0aGUgc2VyaWFsIGRldmlj ZSBoYXJkd2FyZS4NCj4gPiArDQo+ID4gKyAgSWYgbm8gaW5pdGlhbGl6YXRpb24gaXMgcmVxdWly ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2 aWNlIHdhcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUND RVNTLg0KPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXpl ZCwgdGhlbiByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVk Lg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNl IGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5f U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxQb3J0SW5pdGlhbGl6ZSAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFNCSV9SRVQgIFJldDsNCj4gPiArDQo+ID4g KyAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAx LA0KPiA+ICsgU0JJX0VYVF9EQkNOKTsgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikg PT0gRUZJX1NVQ0NFU1MpICYmDQo+ID4gKyAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gKyAg ew0KPiA+ICsgICAgbUhhdmVEYmNuID0gVFJVRTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAg UmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLCBT QklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIpOw0KPiA+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJv ciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiArICAgICAgICAoUmV0LlZhbHVl ICE9IDApKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBtSGF2ZUxlZ2FjeVB1dGNoYXIgPSBUUlVF Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFT RSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwgU0JJX0VYVF8wXzFfQ09OU09MRV9HRVRDSEFS KTsNCj4gPiArICAgIGlmICgoVHJhbnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NF U1MpICYmDQo+ID4gKyAgICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiArICAgIHsNCj4gPiAr ICAgICAgbUhhdmVMZWdhY3lHZXRjaGFyID0gVFJVRTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgV3JpdGUgZGF0YSBmcm9tIGJ1ZmZlciB0byBzZXJpYWwgZGV2aWNlLg0KPiA+ ICsNCj4gPiArICBXcml0ZXMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRv IHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsgIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkg d3JpdHRlbiB0byB0aGUgc2VyaWFsIGRldmljZSBpcyByZXR1cm5lZC4NCj4gPiArICBJZiB0aGUg cmV0dXJuIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBv cGVyYXRpb24gZmFpbGVkLg0KPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRh IGJ1ZmZlciB0byBiZSB3cml0dGVuLg0KPiA+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICBU aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4g Kw0KPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzIGlzIDAuDQo+ ID4gKyAgQHJldHZhbCA+MCAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRl biB0byB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgdGhpcyB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUg b3BlcmF0aW9uIGZhaWxlZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UTg0KPiA+ICtFRklB UEkNCj4gPiArU2VyaWFsUG9ydFdyaXRlICgNCj4gPiArICBJTiBVSU5UOCAgKkJ1ZmZlciwNCj4g PiArICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJ TlROICBJbmRleDsNCj4gPiArDQo+ID4gKyAgaWYgKG1IYXZlRGJjbikgew0KPiA+ICsgICAgU0JJ X1JFVCAgUmV0Ow0KPiA+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gKyAgICAgICAgICAgIFNC SV9FWFRfREJDTiwNCj4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOX1dSSVRFLA0KPiA+ICsg ICAgICAgICAgICAzLA0KPiA+ICsgICAgICAgICAgICBOdW1iZXJPZkJ5dGVzLA0KPiA+ICsgICAg ICAgICAgICAoKFVJTlROKUJ1ZmZlciksDQo+ID4gKyAgICAgICAgICAgIDANCj4gPiArICAgICAg ICAgICAgKTsNCj4gPiArICAgIGlmIChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklf U1VDQ0VTUykgew0KPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4g KyAgICByZXR1cm4gUmV0LlZhbHVlOw0KPiA+ICsgIH0gZWxzZSBpZiAobUhhdmVMZWdhY3lQdXRj aGFyKSB7DQo+ID4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZkJ5dGVzOyBJ bmRleCsrKSB7DQo+ID4gKyAgICAgIFNiaUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hB UiwgMCwgMSwgQnVmZmVyW0luZGV4XSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0 dXJuIEluZGV4Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLyoNCj4gPiArICAgKiBOZWl0aGVy IERCQ04gb3IgbGVnYWN5IGV4dGVuc2lvbiB3ZXJlIHByZXNlbnQuDQo+ID4gKyAgICovDQo+ID4g KyAgcmV0dXJuIE51bWJlck9mQnl0ZXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IFJlYWQgZGF0YSBmcm9tIHNlcmlhbCBkZXZpY2UgYW5kIHNhdmUgdGhlIGRhdGFzIGluIGJ1ZmZl ci4NCj4gPiArDQo+ID4gKyAgUmVhZHMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gYSBz ZXJpYWwgZGV2aWNlIGludG8gdGhlIGJ1ZmZlcg0KPiA+ICsgc3BlY2lmaWVkIGJ5IEJ1ZmZlci4g VGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGlzIHJldHVybmVkLg0KPiA+ICsgIElm IHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJl c3Qgb3BlcmF0aW9uIGZhaWxlZC4NCj4gPiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NF UlQoKS4NCj4gPiArICBJZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ ID4gKw0KPiA+ICsgIEBwYXJhbSAgQnVmZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUg ZGF0YSBidWZmZXIgdG8gc3RvcmUgdGhlIGRhdGEgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNl Lg0KPiA+ICsgIEBwYXJhbSAgTnVtYmVyT2ZCeXRlcyAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdo aWNoIHdpbGwgYmUgcmVhZC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAwICAgICAgICAgICAgICAg IFJlYWQgZGF0YSBmYWlsZWQ7IE5vIGRhdGEgaXMgdG8gYmUgcmVhZC4NCj4gPiArICBAcmV0dmFs ID4wICAgICAgICAgICAgICAgVGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHNl cmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ ID4gK1NlcmlhbFBvcnRSZWFkICgNCj4gPiArICBPVVQgVUlOVDggICpCdWZmZXIsDQo+ID4gKyAg SU4gIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVE4g IEluZGV4Ow0KPiA+ICsNCj4gPiArICBJbmRleCA9IDA7DQo+ID4gKyAgd2hpbGUgKChJbmRleCA8 IE51bWJlck9mQnl0ZXMpICYmIFNlcmlhbFBvcnRQb2xsICgpKSB7DQo+ID4gKyAgICBCdWZmZXJb SW5kZXgrK10gPSAoVUlOVDgpbUxhc3RHZXRDaGFyOw0KPiA+ICsgICAgbUxhc3RHZXRDaGFyICAg ID0gLTE7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gSW5kZXg7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhl cmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ICsNCj4gPiArICBQb2xscyBh IHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcgdG8gYmUg cmVhZC4NCj4gPiArICBJZiB0aGVyZSBpcyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRo ZSBzZXJpYWwgZGV2aWNlLCB0aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQo+ID4gKyAgSWYgdGhlcmUg aXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZSwgdGhl biBGQUxTRSBpcyByZXR1cm5lZC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBUUlVFICAgICAgICAg ICAgIERhdGEgaXMgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ ID4gKyAgQHJldHZhbCBGQUxTRSAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRhdGEgd2FpdGluZyB0 byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr Qk9PTEVBTg0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFsUG9ydFBvbGwgKA0KPiA+ICsgIFZPSUQN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICAvKg0KPiA+ICsgICAqIENhcmVmdWwuIE9wZW5TQkkg d2l0aCBIVElGIGNvbnNvbGUgd2lsbCByZXR1cm4gLTEgZm9sbG93ZWQgYnkgLTINCj4gPiArICAg KiBpZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQuIFNvIGp1c3QgY2hlY2sgZm9yIHZh bHVlcyA+PSAwLg0KPiA+ICsgICAqLw0KPiA+ICsNCj4gPiArICBpZiAobUxhc3RHZXRDaGFyID49 IDApIHsNCj4gPiArICAgIHJldHVybiBUUlVFOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYg KG1IYXZlRGJjbikgew0KPiA+ICsgICAgVUlOVDggICAgQnVmZmVyOw0KPiA+ICsgICAgU0JJX1JF VCAgUmV0Ow0KPiA+ICsNCj4gPiArICAgIFJldCA9IFNiaUNhbGwgKA0KPiA+ICsgICAgICAgICAg ICBTQklfRVhUX0RCQ04sDQo+ID4gKyAgICAgICAgICAgIFNCSV9FWFRfREJDTl9SRUFELA0KPiA+ ICsgICAgICAgICAgICAzLA0KPiA+ICsgICAgICAgICAgICAxLA0KPiA+ICsgICAgICAgICAgICAo KFVJTlROKSZCdWZmZXIpLA0KPiA+ICsgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAgICAgICk7 DQo+ID4gKyAgICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNT KSAmJg0KPiA+ICsgICAgICAgIChSZXQuVmFsdWUgPT0gMSkpDQo+ID4gKyAgICB7DQo+ID4gKyAg ICAgIG1MYXN0R2V0Q2hhciA9IEJ1ZmZlcjsNCj4gPiArICAgIH0NCj4gPiArICB9IGVsc2UgaWYg KG1IYXZlTGVnYWN5R2V0Y2hhcikgew0KPiA+ICsgICAgbUxhc3RHZXRDaGFyID0gKElOVDY0KVNi aUNhbGwgKFNCSV9FWFRfMF8xX0NPTlNPTEVfR0VUQ0hBUiwgMCwNCj4gPiArIDApLkVycm9yOyAg fQ0KPiA+ICsNCj4gPiArICByZXR1cm4gbUxhc3RHZXRDaGFyID49IDA7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZp Y2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIFNldHMgdGhl IGJpdHMgb2YgQ29udHJvbCB0aGF0IGFyZSBzZXR0YWJsZS4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIG5ldyBjb250cm9sIGJpdHMgd2VyZSBzZXQgb24g dGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAg VGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiAr ICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3Qg ZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1JFVFVSTl9TVEFU VVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRTZXRDb250cm9sICgNCj4gPiArICBJTiBV SU5UMzIgIENvbnRyb2wNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gUkVUVVJOX1NV Q0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHJpZXZlIHRoZSBzdGF0 dXMgb2YgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSBDb250cm9sICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byByZXR1cm4gdGhlIGN1 cnJlbnQgY29udHJvbCBzaWduYWxzIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKw0KPiA+ ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBjb250cm9sIGJpdHMgd2VyZSBy ZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQ T1JURUQgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlv bi4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmlj ZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1JF VFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRHZXRDb250cm9sICgNCj4g PiArICBPVVQgVUlOVDMyICAqQ29udHJvbA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgICpDb250 cm9sID0gMDsNCj4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFNldHMgdGhlIGJhdWQgcmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0 cmFuc21pdC9yZWNlaWNlIHRpbWUgb3V0LA0KPiA+ICtwYXJpdHksDQo+ID4gKyAgZGF0YSBiaXRz LCBhbmQgc3RvcCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFt IEJhdWRSYXRlICAgICAgICAgICBUaGUgcmVxdWVzdGVkIGJhdWQgcmF0ZS4gQSBCYXVkUmF0ZSB2 YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGV2aWNlJ3MgZGVmYXVsdCBpbnRlcmZhY2Ugc3BlZWQuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gKyAgQHBh cmFtIFJldmVpdmVGaWZvRGVwdGggICBUaGUgcmVxdWVzdGVkIGRlcHRoIG9mIHRoZSBGSUZPIG9u IHRoZSByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZXJpYWwgaW50ZXJmYWNlLiBBIFJlY2VpdmVGaWZvRGVwdGggdmFsdWUgb2YgMCB3aWxsIHVz ZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmljZSdzIGRlZmF1bHQg RklGTyBkZXB0aC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwg dGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gVGltZW91dCAgICAgICAgICAg IFRoZSByZXF1ZXN0ZWQgdGltZSBvdXQgZm9yIGEgc2luZ2xlIGNoYXJhY3RlciBpbiBtaWNyb3Nl Y29uZHMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRpbWVvdXQgYXBw bGllcyB0byBib3RoIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLiBBIFRpbWVvdXQgdmFsdWUgb2Yg MCB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCB0aW1lDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvdXQgdmFsdWUuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gKyAgQHBhcmFtIFBhcml0 eSAgICAgICAgICAgICBUaGUgdHlwZSBvZiBwYXJpdHkgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRl dmljZS4gQSBQYXJpdHkgdmFsdWUgb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IERlZmF1bHRQYXJpdHkgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgcGFyaXR5IHZhbHVl Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUg YWN0dWFsbHkgc2V0Lg0KPiA+ICsgIEBwYXJhbSBEYXRhQml0cyAgICAgICAgICAgVGhlIG51bWJl ciBvZiBkYXRhIGJpdHMgdG8gdXNlIG9uIHRoZSBzZXJpYWwgZGV2aWNlLiBBIERhdGFCaXRzDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXVsZSBvZiAwIHdpbGwgdXNlIHRoZSBk ZXZpY2UncyBkZWZhdWx0IGRhdGEgYml0IHNldHRpbmcuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gKyAgQHBh cmFtIFN0b3BCaXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIHN0b3AgYml0cyB0byB1c2Ugb24g dGhpcyBzZXJpYWwgZGV2aWNlLiBBIFN0b3BCaXRzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWx1ZSBvZiBEZWZhdWx0U3RvcEJpdHMgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRl ZmF1bHQgbnVtYmVyIG9mDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wIGJp dHMuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1 ZSBhY3R1YWxseSBzZXQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAg ICAgICAgICBUaGUgbmV3IGF0dHJpYnV0ZXMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZpY2Uu DQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAgICAgIFRoZSBzZXJpYWwgZGV2 aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gKyAgQHJldHZhbCBSRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIgIE9uZSBvciBtb3JlIG9mIHRoZSBhdHRyaWJ1dGVzIGhhcyBh biB1bnN1cHBvcnRlZCB2YWx1ZS4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1Ig ICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJp YWxQb3J0U2V0QXR0cmlidXRlcyAoDQo+ID4gKyAgSU4gT1VUIFVJTlQ2NCAgICAgICAgICAgICAg KkJhdWRSYXRlLA0KPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpSZWNlaXZlRmlm b0RlcHRoLA0KPiA+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICpUaW1lb3V0LA0KPiA+ ICsgIElOIE9VVCBFRklfUEFSSVRZX1RZUEUgICAgICpQYXJpdHksDQo+ID4gKyAgSU4gT1VUIFVJ TlQ4ICAgICAgICAgICAgICAgKkRhdGFCaXRzLA0KPiA+ICsgIElOIE9VVCBFRklfU1RPUF9CSVRT X1RZUEUgICpTdG9wQml0cw0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBSRVRVUk5f U1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL01kZVBrZy9MaWJyYXJ5L1Nl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+ID4g YmkuYw0KPiA+IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1Nl Y1BlaVJpc2NWU2VyaWFsUG9ydExpYlMNCj4gPiBiaS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBhZDU5MzFiZTNhZQ0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkv U2VjUGVpUmlzY1ZTZXJpYWxQb3J0DQo+ID4gKysrIExpDQo+ID4gKysrIGJTYmkuYw0KPiA+IEBA IC0wLDAgKzEsMjMzIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFNlcmlhbCBQb3J0IExpYnJh cnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ICsNCj4gPiArICBNZWFudCBmb3IgU0VDIGFu ZCBQRUkgKFhJUCkgZW52aXJvbm1lbnRzLg0KPiA+ICsNCj4gPiArICBEdWUgdG8gbGltaXRhdGlv bnMgb2YgU0JJIGNvbnNvbGUgaW50ZXJmYWNlIGFuZCBYSVAgZW52aXJvbm1lbnRzDQo+ID4gKyAo b24gdXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgZG9lcyBub3QgaW1wbGVt ZW50DQo+ID4gKyByZWFkaW5nICBhbmQgcG9sbGluZyB0aGUgc2VyaWFsIHBvcnQuIFNlZQ0KPiA+ ICsgUHJlUGlEeGVTZXJpYWxQb3J0TGliUmlzY1ZTYmkgZm9yICB0aGUgZnVsbC1mZWF0dXJlZCB2 YXJpYW50IG1lYW50IGZvciBQcmVQaSBhbmQgRFhFIGVudmlyb25tZW50cy4NCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPEJhc2UuaD4NCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlUmlzY1ZTYmlMaWIuaD4NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxp emUgdGhlIHNlcmlhbCBkZXZpY2UgaGFyZHdhcmUuDQo+ID4gKw0KPiA+ICsgIElmIG5vIGluaXRp YWxpemF0aW9uIGlzIHJlcXVpcmVkLCB0aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiAr ICBJZiB0aGUgc2VyaWFsIGRldmljZSB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCB0aGVu IHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiArICBJZiB0aGUgc2VyaWFsIGRldmljZSBjb3Vs ZCBub3QgYmUgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9ERVZJQ0VfRVJST1IuDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBzZXJpYWwgZGV2 aWNlIHdhcyBpbml0aWFsaXplZC4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1Ig ICBUaGUgc2VyaWFsIGRldmljZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuDQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFsUG9ydElu aXRpYWxpemUgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4g UkVUVVJOX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlIGRh dGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAgV3JpdGVzIE51 bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIEJ1ZmZlciB0byB0aGUgc2VyaWFsIGRldmljZS4N Cj4gPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIHNlcmlh bCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNz IHRoYW4gTnVtYmVyT2ZCeXRlcywgdGhlbiB0aGUgd3JpdGUgb3BlcmF0aW9uIGZhaWxlZC4NCj4g PiArICBJZiBCdWZmZXIgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArICBJZiBOdW1iZXJP ZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgQnVm ZmVyICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgZGF0YSBidWZmZXIgdG8gYmUgd3JpdHRl bi4NCj4gPiArICBAcGFyYW0gIE51bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBvZiBieXRlcyB0 byB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIDAg ICAgICAgICAgICAgICAgTnVtYmVyT2ZCeXRlcyBpcyAwLg0KPiA+ICsgIEByZXR2YWwgPjAgICAg ICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZp Y2UuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgbGVz cyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQuDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRX cml0ZSAoDQo+ID4gKyAgSU4gVUlOVDggICpCdWZmZXIsDQo+ID4gKyAgSU4gVUlOVE4gIE51bWJl ck9mQnl0ZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBTQklfUkVUICBSZXQ7DQo+ID4gKyAg VUlOVE4gICAgSW5kZXg7DQo+ID4gKw0KPiA+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFT RSwgU0JJX0VYVF9CQVNFX1BST0JFX0VYVCwgMSwNCj4gPiArIFNCSV9FWFRfREJDTik7ICBpZiAo KFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiA+ICsgICAg ICAoUmV0LlZhbHVlICE9IDApKQ0KPiA+ICsgIHsNCj4gPiArICAgIFJldCA9IFNiaUNhbGwgKA0K PiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ04sDQo+ID4gKyAgICAgICAgICAgIFNCSV9FWFRf REJDTl9XUklURSwNCj4gPiArICAgICAgICAgICAgMywNCj4gPiArICAgICAgICAgICAgTnVtYmVy T2ZCeXRlcywNCj4gPiArICAgICAgICAgICAgKChVSU5UTilCdWZmZXIpLA0KPiA+ICsgICAgICAg ICAgICAwDQo+ID4gKyAgICAgICAgICAgICk7DQo+ID4gKyAgICBpZiAoVHJhbnNsYXRlRXJyb3Ig KFJldC5FcnJvcikgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAgICAgcmV0dXJuIDA7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIFJldC5WYWx1ZTsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9CQVNFX1BST0JF X0VYVCwgMSwNCj4gPiArIFNCSV9FWFRfMF8xX0NPTlNPTEVfUFVUQ0hBUik7ICBpZiAoKFRyYW5z bGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiA+ICsgICAgICAoUmV0 LlZhbHVlICE9IDApKQ0KPiA+ICsgIHsNCj4gPiArICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8 IE51bWJlck9mQnl0ZXM7IEluZGV4KyspIHsNCj4gPiArICAgICAgU2JpQ2FsbCAoU0JJX0VYVF8w XzFfQ09OU09MRV9QVVRDSEFSLCAwLCAxLCBCdWZmZXJbSW5kZXhdKTsNCj4gPiArICAgIH0NCj4g PiArDQo+ID4gKyAgICByZXR1cm4gSW5kZXg7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvKg0K PiA+ICsgICAqIE5laXRoZXIgREJDTiBvciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUgcHJlc2VudC4N Cj4gPiArICAgKi8NCj4gPiArICByZXR1cm4gTnVtYmVyT2ZCeXRlczsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgUmVhZCBkYXRhIGZyb20gc2VyaWFsIGRldmljZSBhbmQgc2F2ZSB0 aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiA+ICsNCj4gPiArICBSZWFkcyBOdW1iZXJPZkJ5dGVzIGRh dGEgYnl0ZXMgZnJvbSBhIHNlcmlhbCBkZXZpY2UgaW50byB0aGUgYnVmZmVyDQo+ID4gKyBzcGVj aWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0 dXJuZWQuDQo+ID4gKyAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4gTnVtYmVyT2ZC eXRlcywgdGhlbiB0aGUgcmVzdCBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ICsgIElmIEJ1ZmZlciBp cyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywg dGhlbiByZXR1cm4gMC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRo ZSBwb2ludGVyIHRvIHRoZSBkYXRhIGJ1ZmZlciB0byBzdG9yZSB0aGUgZGF0YSByZWFkIGZyb20g dGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBu dW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFs IDAgICAgICAgICAgICAgICAgUmVhZCBkYXRhIGZhaWxlZDsgTm8gZGF0YSBpcyB0byBiZSByZWFk Lg0KPiA+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBi eXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5U Tg0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFsUG9ydFJlYWQgKA0KPiA+ICsgIE9VVCBVSU5UOCAg KkJ1ZmZlciwNCj4gPiArICBJTiAgVUlOVE4gIE51bWJlck9mQnl0ZXMNCj4gPiArICApDQo+ID4g K3sNCj4gPiArICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUG9s bHMgYSBzZXJpYWwgZGV2aWNlIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgZGF0YSB3YWl0aW5nIHRv IGJlIHJlYWQuDQo+ID4gKw0KPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYg dGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ICsgIElmIHRoZXJlIGlz IGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4gVFJV RSBpcyByZXR1cm5lZC4NCj4gPiArICBJZiB0aGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUg cmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLCB0aGVuIEZBTFNFIGlzIHJldHVybmVkLg0KPiA+ ICsNCj4gPiArICBAcmV0dmFsIFRSVUUgICAgICAgICAgICAgRGF0YSBpcyB3YWl0aW5nIHRvIGJl IHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICBAcmV0dmFsIEZBTFNFICAgICAg ICAgICAgVGhlcmUgaXMgbm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFs IGRldmljZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ ICtTZXJpYWxQb3J0UG9sbCAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IHJldHVybiBGQUxTRTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2V0cyB0aGUg Y29udHJvbCBiaXRzIG9uIGEgc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIENv bnRyb2wgICAgICAgICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250cm9sIHRoYXQgYXJlIHNl dHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUg bmV3IGNvbnRyb2wgYml0cyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICBA cmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJP UiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArU2VyaWFs UG9ydFNldENvbnRyb2wgKA0KPiA+ICsgIElOIFVJTlQzMiAgQ29udHJvbA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgUmV0cmlldmUgdGhlIHN0YXR1cyBvZiB0aGUgY29udHJvbCBiaXRzIG9uIGEg c2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAgICAgICAg ICAgQSBwb2ludGVyIHRvIHJldHVybiB0aGUgY3VycmVudCBjb250cm9sIHNpZ25hbHMgZnJvbSB0 aGUgc2VyaWFsIGRldmljZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAg ICAgICAgVGhlIGNvbnRyb2wgYml0cyB3ZXJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4N Cj4gPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBk b2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RF VklDRV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0 bHkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4g PiArU2VyaWFsUG9ydEdldENvbnRyb2wgKA0KPiA+ICsgIE9VVCBVSU5UMzIgICpDb250cm9sDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgKkNvbnRyb2wgPSAwOw0KPiA+ICsgIHJldHVybiBSRVRV Uk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2V0cyB0aGUgYmF1 ZCByYXRlLCByZWNlaXZlIEZJRk8gZGVwdGgsIHRyYW5zbWl0L3JlY2VpY2UgdGltZSBvdXQsDQo+ ID4gK3Bhcml0eSwNCj4gPiArICBkYXRhIGJpdHMsIGFuZCBzdG9wIGJpdHMgb24gYSBzZXJpYWwg ZGV2aWNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gQmF1ZFJhdGUgICAgICAgICAgIFRoZSByZXF1 ZXN0ZWQgYmF1ZCByYXRlLiBBIEJhdWRSYXRlIHZhbHVlIG9mIDAgd2lsbCB1c2UgdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UncyBkZWZhdWx0IGludGVyZmFjZSBz cGVlZC4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZh bHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gUmV2ZWl2ZUZpZm9EZXB0aCAgIFRoZSBy ZXF1ZXN0ZWQgZGVwdGggb2YgdGhlIEZJRk8gb24gdGhlIHJlY2VpdmUgc2lkZSBvZiB0aGUNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbCBpbnRlcmZhY2UuIEEgUmVjZWl2 ZUZpZm9EZXB0aCB2YWx1ZSBvZiAwIHdpbGwgdXNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBGSUZPIGRlcHRoLg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ ICsgIEBwYXJhbSBUaW1lb3V0ICAgICAgICAgICAgVGhlIHJlcXVlc3RlZCB0aW1lIG91dCBmb3Ig YSBzaW5nbGUgY2hhcmFjdGVyIGluIG1pY3Jvc2Vjb25kcy4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRoaXMgdGltZW91dCBhcHBsaWVzIHRvIGJvdGggdGhlIHRyYW5zbWl0IGFu ZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnRlcmZhY2UuIEEgVGltZW91dCB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZh dWx0IHRpbWUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCB2YWx1ZS4NCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gPiArICBAcGFyYW0gUGFyaXR5ICAgICAgICAgICAgIFRoZSB0eXBlIG9mIHBh cml0eSB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNlLiBBIFBhcml0eSB2YWx1ZSBvZg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFBhcml0eSB3aWxsIHVzZSB0aGUg ZGV2aWNlJ3MgZGVmYXVsdCBwYXJpdHkgdmFsdWUuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gKyAgQHBhcmFt IERhdGFCaXRzICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0byB1c2Ugb24gdGhl IHNlcmlhbCBkZXZpY2UuIEEgRGF0YUJpdHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZhdWxlIG9mIDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgZGF0YSBiaXQgc2V0 dGluZy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZh bHVlIGFjdHVhbGx5IHNldC4NCj4gPiArICBAcGFyYW0gU3RvcEJpdHMgICAgICAgICAgIFRoZSBu dW1iZXIgb2Ygc3RvcCBiaXRzIHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBkZXZpY2UuIEEgU3RvcEJp dHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIERlZmF1bHRTdG9w Qml0cyB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBudW1iZXIgb2YNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiArDQo+ID4g KyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIFRoZSBuZXcgYXR0cmlidXRlcyB3 ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9VTlNV UFBPUlRFRCAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9w ZXJhdGlvbi4NCj4gPiArICBAcmV0dmFsIFJFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiAgT25lIG9y IG1vcmUgb2YgdGhlIGF0dHJpYnV0ZXMgaGFzIGFuIHVuc3VwcG9ydGVkIHZhbHVlLg0KPiA+ICsg IEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJPUiAgICAgICBUaGUgc2VyaWFsIGRldmljZSBpcyBu b3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1JFVFVSTl9T VEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbFBvcnRTZXRBdHRyaWJ1dGVzICgNCj4gPiAr ICBJTiBPVVQgVUlOVDY0ICAgICAgICAgICAgICAqQmF1ZFJhdGUsDQo+ID4gKyAgSU4gT1VUIFVJ TlQzMiAgICAgICAgICAgICAgKlJlY2VpdmVGaWZvRGVwdGgsDQo+ID4gKyAgSU4gT1VUIFVJTlQz MiAgICAgICAgICAgICAgKlRpbWVvdXQsDQo+ID4gKyAgSU4gT1VUIEVGSV9QQVJJVFlfVFlQRSAg ICAgKlBhcml0eSwNCj4gPiArICBJTiBPVVQgVUlOVDggICAgICAgICAgICAgICAqRGF0YUJpdHMs DQo+ID4gKyAgSU4gT1VUIEVGSV9TVE9QX0JJVFNfVFlQRSAgKlN0b3BCaXRzDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gZGlmZiAt LWdpdA0KPiA+IGEvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkv UHJlUGlEeGVSaXNjVlNlcmlhbFBvcnQNCj4gPiBMaWJTYmkudW5pDQo+ID4gYi9NZGVQa2cvTGli cmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9y dA0KPiA+IExpYlNiaS51bmkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMDAwMC4uN2IyMmNhYTVhMDkwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01k ZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZT ZXJpYWwNCj4gPiArKysgUG8NCj4gPiArKysgcnRMaWJTYmkudW5pDQo+ID4gQEAgLTAsMCArMSwx NiBAQA0KPiA+ICsvLyAvKiogQGZpbGUNCj4gPiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNr ZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gKy8vDQo+ID4gKy8vIFNlcmlhbCBQb3J0IExpYnJhcnkg YmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ICsvLw0KPiA+ICsvLyBDb3B5cmlnaHQgKGMpIDIw MjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gLy8NCj4gPiAr Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgLy8gLy8gKiov DQo+ID4gKw0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNv bnNvbGUiDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29u c29sZS4iDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQNCj4gPiBhL01kZVBrZy9MaWJyYXJ5L1NlY1Bl aVJpc2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTDQo+ID4gYmku dW5pDQo+ID4gYi9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2Vj UGVpUmlzY1ZTZXJpYWxQb3J0TGliUw0KPiA+IGJpLnVuaQ0KPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YjIyY2FhNWEwOTANCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2Jp L1NlY1BlaVJpc2NWU2VyaWFsUG9ydA0KPiA+ICsrKyBMaWJTYmkudW5pDQo+ID4gQEAgLTAsMCAr MSwxNiBAQA0KPiA+ICsvLyAvKiogQGZpbGUNCj4gPiArLy8gU2VyaWFsIFBvcnQgTGlicmFyeSBi YWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gKy8vDQo+ID4gKy8vIFNlcmlhbCBQb3J0IExpYnJh cnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ICsvLw0KPiA+ICsvLyBDb3B5cmlnaHQgKGMp IDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4gLy8NCj4g PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQgLy8gLy8g KiovDQo+ID4gKw0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJ IGNvbnNvbGUiDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAg ICAgICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkg Y29uc29sZS4iDQo+ID4gKw0KPiA+IC0tDQo+ID4gMi4yNS4xDQoNCg==