From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.9076.1680038768186019236 for ; Tue, 28 Mar 2023 14:26:08 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=l0CrRYOy; spf=pass (domain: intel.com, ip: 134.134.136.100, 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=1680038768; x=1711574768; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=5M+B7NiE4l0G4NZmKxmHiH5nA/WN0GqEY1RYMRmE7F4=; b=l0CrRYOyBs2Uo9osYFAUTgeBYoYnv1l+aJuKIuK9LfUmWI0dqCrBtzpE GndFzTY3TQpkxXczIS88FcvYY/e5AAyQSJu7wCyJaPlcu4R7itYiY6wCU wlwUf7avmoJLPFIOfjHUUuriSNbqllGxp8qR4wHSDINUxlkDOF49f4cet RxZTNcPKD+T1IhUpb+Tz2kf62yhc3X3MlnDta5xpD9DwUkYjf5b2xO8bY 2npKxiPGK7pRHJgtANtDcnMz8GVNKFKaPNUygcEAvzJNLpCLzuEZEbg+s fhp64+Nrqs/vxryWuMD8xBHIry+Vgp+KLdLEU/993jxkXTh/DrcfJ4Gms w==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="405634434" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208,223";a="405634434" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 14:26:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="684025119" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208,223";a="684025119" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga002.jf.intel.com with ESMTP; 28 Mar 2023 14:26:07 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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; Tue, 28 Mar 2023 14:26:06 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Tue, 28 Mar 2023 14:26:06 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Tue, 28 Mar 2023 14:26:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YN/Re4ohG7RQqv90tpsWnKTARUaqHbFj7xUjVdMPFfAN27PRc+9s0I6oCIrXYLyu6JkmQWuM6csU/ODYqteXxK3gUJfIG/Li/uPTrlqGZ+PXF4aV+ZGoIs7RQlqz+D9YXJIfZmPlP0qQyYZYI+O1dUlOAGXxXej5dGdR7viKiIH1CdQq0urcMFs8hhnTIHSrSdkQPzV6dzAb5QJesQ/HR6j3kQONA7m/fhSvq2jtL7b91bKAAefN0PrrsLpPebfNeQrbG6RS5KAZ5K0qq1KQ3moI+F7tCjb4I2Bgzy9SJYn7bMt8yGkLbzbCilRwF0GyKZdpDaxk87yp6AMex+NgEQ== 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=5M+B7NiE4l0G4NZmKxmHiH5nA/WN0GqEY1RYMRmE7F4=; b=V8oHuslJEe+2AMG+17qg3nNremOtGDw/eQLTzo9IXmxKZE2dY7ClyVeo67P8dEqGWVlZM7mxGJxe8XLyRpTrknEOqEsoipfJBBixpuEJqKoSGk3Lk/AUl0RxSD7zSYt+cw3Sv8wBDjHE6fYMuuHtBpTBzM5xi4EWoazJ+fTRgaWoAhMin+UnTEddqDRB6wiIC5xknSpFE7QjH4hyXR75+RFOIkWqrnRh89oY+DVGaynRfSBNEEmB6lNcx4V0EhSQvuz4Ngt1eodec9k30TanOEpi7wkMfZ74RI1e1nG8/C0kC4b92vAtf3+rzxl56U/9vxVgKqX0quk4L/aPA3E6NQ== 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 PH0PR11MB5109.namprd11.prod.outlook.com (2603:10b6:510:3e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.30; Tue, 28 Mar 2023 21:25:58 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%7]) with mapi id 15.20.6222.033; Tue, 28 Mar 2023 21:25:58 +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+ceoAgAAB5TCAAAxtAIAQa2ywgAHNVQCAAAD68IAABJoAgAAGXEA= Date: Tue, 28 Mar 2023 21:25:58 +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_|PH0PR11MB5109:EE_ x-ms-office365-filtering-correlation-id: 8eeb4922-534f-4d1a-c8cd-08db2fd305d6 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: OCh+/hZ9fuuDUw/m/dwYgUpqT7A85k/pfllLLIkGEOweDvzM9g3NM0kYLfNnL3+MYa5EpgmIkUa61PBXg+DENm31uJDiNPSfcsUhErNbUBNlxi/5DyWpe1DiOhH7uJZ7/mIVS4Lr1DY1YT/mesnKHugQjyrKQKfByRfqXEDmY5qJJOYz9p7C6+ANCmmpTLjOGe6ryJaBzT/wFHf93unDxea+qc+BBv8qsN0GPiOa5Gdm7hJHt9vrZNVn8PT+s6+FRXzJMKEsj1j5qMxET3b1Izf2EfpBZTEZVuh6rqFu1RVqapXRUP62qxDyNkpHRsscLZL5imhus4xMMkweiNChxFP5L4oUmTNODCQl9X3HhNAJind5Sv6m6HskWPoy+vMqP4ONQ5QNEXZCksEKpWsuS0oE8vcNxFxhtZ+Qwulc2w33I4Z9u5bjQMmo6i6HSoimnnf9K+4KecaTEy7ViUTBlidMjOW+5WQqKDvkgUSnjY8JWBQiqipPDD3WkJlT8RamVUBWee0rLP7wL7TUTTatiav2iQaOdfyj9j9BbuPHPffKJq7lmFdRGCqhO23hE5yPsGFisdssIsjrCVBOl2nNLP87bbx5nyJua4KyPXAFC2WqmZQxiywr2zR3ouI0Bii7 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)(376002)(396003)(346002)(366004)(39860400002)(136003)(451199021)(64756008)(66446008)(66556008)(8676002)(316002)(66946007)(4326008)(26005)(30864003)(8936002)(122000001)(41300700001)(76116006)(52536014)(5660300002)(186003)(54906003)(110136005)(82960400001)(71200400001)(6506007)(83380400001)(7696005)(66476007)(107886003)(53546011)(9686003)(55016003)(38100700002)(2906002)(38070700005)(478600001)(86362001)(33656002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?empOOWZQbEdQbUliMWx1bUdqVUVKMlYwMEFKZDZXbXRidG5WRUt2U3VJYTVo?= =?utf-8?B?K1lKZUtFRkh3Tm5KcU5PNHhPRi80b3BIUFdtbjNiVDlXc1BBZ2FSQkZING8x?= =?utf-8?B?WGphUzNYbUIrVUtWZWFvWGdKRkFvNDhHWEU5WFdjREtlY2pmWW1Za1NIMWlN?= =?utf-8?B?dG5IdDM3M3JmY2NldWU0RThJcTZXYW1sSTFuK3FENVZwSUZFNDJGTnVSV0NM?= =?utf-8?B?UytubE0xS3FsUXhCWmcrZXBiWGJ4U3ZYMExqWDN5VUxFQVJ0bkU1RHJ6NE5C?= =?utf-8?B?OVJpQjFCWWFKVTlGQjlHMFZwMU9ZQUhMdkhjaFJvZHNWdFBBY1E1MVB0RlF6?= =?utf-8?B?MzViditvYTMvN1hEWjhsRWZJZ0YzTDVhdWNHTUFDYmFOa1RLTmkvSU1ybnRl?= =?utf-8?B?RUtTRTdySG91cHN4dW9jTU9OeGJodnVsSUl0UVR3TVRIUjZHdVNuZ1lHdDR4?= =?utf-8?B?NFcrb2Q3a0xhUFljOUgzeTN0d3pZdGtXTkJtRjNRV2kvSXJ1YndPTU5Od0p5?= =?utf-8?B?Tkg0U01kTUs1MGJIV2hMQUQwWTExcFdESTNsa0RFK1A2LzEva3pOM2Zsay9H?= =?utf-8?B?Sm4rT1BUM0dPR1ZyM2NzUk5JMDRyQ1Bqa0RkblF2V2pBUzQ4WEJuVlAzUE1j?= =?utf-8?B?RjlZQXhlUkc0SGQxamtyLzIvUHFrYnRVODhidy9XOFNiR2dLemE0TzAvZnJE?= =?utf-8?B?OStGbHdPTmgrYTRBdDJtUnNZVnVnTGhrMFhpRmhCU2lDY3hRR2d3d1EydG9R?= =?utf-8?B?QndwbzBQcE9Qc2hlcVVhRHlQaFdVUi8ybFFESDl2NnU5cmEvVmRuQmR4OXpP?= =?utf-8?B?Z1h0WmFBN2czanVuT043bUVlSWRBUVFMQnVHTnJYQmdQUHc1VVJHa3EzUm02?= =?utf-8?B?QmZFMjB2a3EwM0VTZFdnd2lZUjZLUlJVOC8weUJtUkgrOS83VVNwU2h0cW1k?= =?utf-8?B?QzNzWlJrMm9lWXhSS1F3ayt1WlZSSnJ5Mi9KRkJpM05vbXFGbFF0SjNFOHk1?= =?utf-8?B?aldKUmxTcXRmRkttWXd2NmFDU1BsclBGQlBxc3hwWFloSjI5VGRFb2tmOW10?= =?utf-8?B?a2h3SkVlZXl4RUwvZHoyejBjTSs3QlRiUVhSeHhacnRiRTdRZ0VCazZtSlZv?= =?utf-8?B?bEk3T0lqbVlwOTZaUGZ1MVhJOXpaY0E1RVVBRWMvdXBGTWdmK1pzenlueXJW?= =?utf-8?B?UzltbWt2M3dIRS9uMWM0RXVXRTBud1R5aExLczQrdUpIb0g1YzZUeDd1eWpw?= =?utf-8?B?endFb2NpS1o4S1o2cGhsQ05sc3RzNllIZ3Rkd2Y2Qk5veVpOdHdqYklGMWFh?= =?utf-8?B?VmswOTRoOEhJTEF6aHdZYmxFTEZxQXFleTV5ZmFsbTFoUzRPd3A1OGhPY0hn?= =?utf-8?B?THl2aGJvbzViVUVuUmtIL0NiVjc4cGk3VzQraVlpb2RDdkNuNTd0eUxZeTd3?= =?utf-8?B?Qm4zZUFMcmFkUWV2REw0SWJJekR0OGpTSm9BVnJEWXlNbkdwRlIyR1RnekFt?= =?utf-8?B?RUJ4TE50eXNVbGNneDc1bTV0U0dMK0NMRWY4azR2OHRTQlg3MkdPcWFHWWRn?= =?utf-8?B?aC9TRlE5TlpKWXl3QktRbmxDMFRmcmt4VGZOUE5SODh6MmVoTSt1dFE0Smd0?= =?utf-8?B?bjdYc01qRE1RN0M1cDdOaGxZbmYzQzNEbW5TR1hxQmRaZE9TU09LNGYxSjFv?= =?utf-8?B?RnhQUTRja2dScHZBWUE0RmlZM05wL2RPNTlkK1A1bjJlRmFBNmN1VEFhM1dK?= =?utf-8?B?TkQ5d3IxUE9ReHlFNnBqSk9leW40eGxoODMvQStaaXBLT0FyQUF3eTU3MEdr?= =?utf-8?B?dVY5eEVPaW44OUJkdHYyUkEwaW9EbkZkM0tnRXl1V1RjMmJ1VlBhUVk3ZlpM?= =?utf-8?B?T0FPaXIvVlNmM1o5ZUtZV0FjY2loQWZYVXBpQ3ZZdmJ3MEcvT0F3eFNvZDlp?= =?utf-8?B?Vm9DaUVXL0dZbHpYKytJbUhaaXIyakk2R3NYMmVnTTFMaGVhTUUvRnNlR2hM?= =?utf-8?B?TWpFd1A1andNZndCZi83OXV4QmNsTW9haW9TT3RwL1FoMEdWRE5QY3Q5ZStk?= =?utf-8?B?aFR0K1dOQkxkNTJsTEtjVkpTWU1CQ011bHZuUGJITGlsWHdHZzA5SkR6YUI1?= =?utf-8?B?YlpMZVh6K2w0N3lPUXhyZmpYcTNjL2Qxa1pOQUdkTnY3M2srNzZ4SmVIaFJ0?= =?utf-8?B?aGc9PQ==?= 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: 8eeb4922-534f-4d1a-c8cd-08db2fd305d6 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2023 21:25:58.4868 (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: HmFQdEHlUrkEDksc5pguRVxA1qnogMcIPvdZ3Fh39KYybiNTP3cZbduZeUOCj4P9UqRqK2lBHESrKFmwkXxWnyOOpQbGU9h/RIkxxhsXlHE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5109 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 RnJvbSBsb29raW5nIGF0IHRoZSBkZXRhaWxzIG9mIHlvdXIgbGlicywgaXQgaXMgbm90IHJlbGF0 ZWQgdG8gRFhFLg0KDQpJdCBpcyBTRUMgd2l0aCBubyB3cml0YWJsZSBnbG9iYWxzLCBvciBTRUMg d2l0aCB3cml0YWJsZSBnbG9iYWxzLg0KDQpCb3RoIGxpYnMgY291bGQgYmUgdXNlZCBpbiBhbiBT RUMgaW1wbGVtZW50YXRpb24gdGhhdCBoYW5kcyBvZmYgdG8gUEVJIG9yIERYRS4NCg0KWW91IGN1 cnJlbnQgcHJvcG9zZWQgbmFtZXMgYXJlOg0KKiBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkN CiogUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCg0KVGhlIGN1cnJlbnQgbmFtaW5nIGNv bnZlbnRpb24gaXMgb25lIG9yIG1vcmUgbW9kdWxlIHR5cGVzIGZvbGxvd2VkIGJ5IHRoZQ0KTGli cmFyeSBDbGFzcyBOYW1lIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IGRlc2Ny aWJlcw0KdGhlIHNlcnZpY2VzIHRoYXQgdGhlIExpYnJhcnkgQ2xhc3MgaW1wbGVtZW50YXRpb24g ZGVwZW5kcy4gIFlvdSBoYXZlDQp1c2VkIFNiaSBhcyB0aGlzIG9wdGlvbmFsIHBvc3RmaXguICBI b3dldmVyLCB5b3UgaGF2ZSB0d28gZGlmZmVyZW50IFNCSQ0KZW52aXJvbm1lbnRzLiAgT25lIHdo ZXJlIHRoZSBjb2RlL2RhdGEgaXMgcnVubmluZyBmcm9tIFJBTSB3aGVyZSBnbG9iYWwNCnZhcmlh YmxlcyBjYW4gYmUgdXNlZCBhbmQgb25lIHdoZXJlIGNvZGUvZGF0YSBpcyBydW5uaW5nIGZyb20g Uk9NIHdoZXJlDQpnbG9iYWwgdmFyaWFibGUgY2FuIG5vdCBiZSB1c2VkLg0KDQpIb3cgYWJvdXQg dGhlIGZvbGxvd2luZyBuYW1lcz8NCiogU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpDQoqIFNl Y1BlaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaVJhbQ0KDQpJbiBmYWN0LCBib3RoIGxpYnMgYXJl IG9mIHR5cGUgQkFTRSB3aGljaCBtZWFucyB0aGV5IGFyZSByZWFsbHkgY29tcGF0aWJsZQ0Kd2l0 aCBhbGwgbW9kdWxlIHR5cGVzIGFzIGxvbmcgYXMgdGhlIFNiaSB2cyBTYmlSYW0gZGlmZmVyZW5j ZSBpcyB1bmRlcnN0b29kDQpieSB0aGUgcGxhdGZvcm0gZGV2ZWxvcGVyIHRoYXQgaGFzIHRvIHNl dCB0aGUgbGliIG1hcHBpbmdzIGluIHRoZSBEU0MgZmlsZS4NCg0KU28gYSBmdXJ0aGVyIHJlZmlu ZW1lbnQgd291bGQgYmU6DQoqIEJhc2VSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCiogQmFzZVJpc2NW U2VyaWFsUG9ydExpYlNiaVJhbQ0KDQpXZSB1c3VhbGx5IGRvIG5vdCBwdXQgYSBDUFUgYXJjaCBp biB0aGUgTGlicmFyeSBJbnN0YW5jZSBuYW1lLCBidXQgU0JJIGlzIA0KVW5pcXVlIHRvIFJpc2NW IGFuZCB0aGUgbGlicmFyeSBzZXJ2aWNlcyBiZWluZyB1c2VkIGFyZSBmcm9tIHRoZSBSaXNjVlNi aUxpYg0KY2xhc3MuICBBZGRpbmcgdGhlIGZ1bGwgbGliIGNsYXNzIG5hbWUgdG8gdGhlIGVuZCBh ZGRzIHRoZSBSaXNjViBrZXl3b3JkIHRvIA0KdGhlIGxpYnJhcnkgaW5zdGFuY2UgbmFtZS4NCg0K KiBCYXNlU2VyaWFsUG9ydExpYlJpc2NWU2JpTGliDQoqIEJhc2VTZXJpYWxQb3J0TGliUmlzY1ZT YmlMaWJSYW0NCg0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiBTZW50 OiBUdWVzZGF5LCBNYXJjaCAyOCwgMjAyMyAxOjIwIFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBD YzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3Vhbmcg PHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBN ZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklTQy1WDQo+IA0KPiBTbyBJ J2QgYmUgaW4gc3VwcG9ydCBvZiBmb3JtYWxseSBkZWZpbmluZyBhIFByZVBpIHByZWZpeC4gSWYg d2UgZ28gd2l0aCBTZWMsIHRoZW4gd2UnZCBoYXZlIHRvIGNvbWUgdXAgd2l0aCBzb21lIG90aGVy IHdheSBvZg0KPiBkaXNhbWJpZ3VhdGluZyAiaGFuZCBvZmYgdG8gUEVJIiB2cyAiaGFuZCBvZmYg dG8gRFhFIiwgYW5kIGl0IHNlZW1zIGxpa2UgUHJlUGkgaXMgYWxyZWFkeSB0aGF0Lg0KPiANCj4g V2hhdCBkbyB5b3UgZW50YWlsIHRoZSBwcm9jZXNzIHRvIGJlIGZvbGxvd2VkIGhlcmU/IElzIHRo ZXJlIHZhbHVlIGluIGRlZmluaW5nIGEgZGVkaWNhdGVkIFByZVBpIG1vZHVsZSB0eXBlIChsaWtl IFNFQyk/IEknZCBiZQ0KPiBoYXBweSB0byBwcm9wb3NlIHRoZSBlZGsyIGNoYW5nZXMgdG8gc3Vw cG9ydCB0aGF0LiBDYW4gd2UgZGVjb3VwbGUgdGhpcyB3b3JrIGZyb20gdGhlc2Ugc3BlY2lmaWMg U2VyaWFsUG9ydExpYiBjb250cmlidXRpb25zPw0KPiANCj4gQQ0KPiANCj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyOCwgMjAyMyAzOjEwIFBNDQo+ IFRvOiBXYXJrZW50aW4sIEFuZHJlaSA8YW5kcmVpLndhcmtlbnRpbkBpbnRlbC5jb20+OyBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNv bS5jbj47IExpdSwgWmhpZ3VhbmcgPHpoaWd1YW5nLmxpdUBpbnRlbC5jb20+OyBLaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFU Q0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3IgUklTQy1W DQo+IA0KPiBJIGFncmVlIHRoYXQgbW92aW5nIGludG8gRW1iZWRkZWRQa2cgZG9lcyBub3QgbWFr ZSBzZW5zZS4NCj4gDQo+IEVtYmVkZGVkUGtnIGlzIHZlcnkgb2xkIHdpdGhvdXQgbWFueSB1cGRh dGVzLiAgVGhhdCBwYWNrYWdlIGlzIG5vdCB0aGUgYmVzdCB0byB1c2UgZm9yIGV4YW1wbGVzLg0K PiANCj4gSSB0aGluayB5b3UgYXJlIHN1Z2dlc3RpbmcgdGhhdCB0aGVyZSBpcyBhIGRpZmZlcmVu Y2UgaW4gYSBsaWJyYXJ5IHRoYXQgcnVucyBpbiBhbiBTRUMgZW52IHdpdGggaW50ZW50IHRvIGhh bmQgb2ZmIHRvIFBFSSBhbmQgYQ0KPiBsaWJyYXJ5IHRoYXQgcnVucyBpbiBhbiBTRUMgZW52IHdp dGggaW50ZW50IHRvIGhhbmRvZmYgdG8gRFhFLiAgVGhleSBhcmUgYm90aCBTRUMgbW9kdWxlIHR5 cGVzIGFuZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IGlzIHRoZQ0KPiBzYW1lLiAgVGhlIG9u bHkgZGlmZmVyZW5jZSBpcyBob3cgdGhleSBwcmVwYXJlIGZvciB0aGUgaGFuZG9mZi4NCj4gDQo+ IE15IGludGVyZXN0IGhlcmUgaXMgdG8gbWFrZSBzdXJlIHRoZSBwcmVmaXhlcyBhcmUgdXNlZCBj b25zaXN0ZW50bHkgYW5kIGlmIHdlIHRydWx5IGhhdmUgYSBuZXcgcHJlZml4IHR5cGUsIHRoZW4g dG8gY2xlYXJseSBkZWZpbmUNCj4gaXQgc28gaXQgY2FuIGJlIHVzZWQgY29uc2lzdGVudGx5IGdv aW5nIGZvcndhcmQuDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gRnJvbTogV2Fya2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwu Y29tPg0KPiA+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI4LCAyMDIzIDE6MDAgUE0NCj4gPiBUbzog S2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPiBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuPjsgTGl1LCBaaGlndWFuZw0KPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFs UG9ydExpYiBmb3INCj4gPiBSSVNDLVYNCj4gPg0KPiA+IFNlYyBpc24ndCBhIGdvb2QgZml0LCBi ZWNhdXNlIGl0IGhhcyBpbXBsaWNhdGlvbnMgb24gdGhlIGVudmlyb25tZW50LA0KPiA+IHdoaWNo IGlzIHdoeSB0aGUgY29udHJpYnV0aW9uIGFsc28gaW5jbHVkZXMgYSBzZXBhcmF0ZSBTZWNQZWkg dmFyaWFudCBhcyB3ZWxsLg0KPiA+DQo+ID4gSW4gbmFtaW5nLCBJIGZvbGxvd2VkIG90aGVyIGVk azIgZXhhbXBsZXMgc3VjaCBhcw0KPiA+IC4vRW1iZWRkZWRQa2cvTGlicmFyeS9QcmVQaUV4dHJh Y3RHdWlkZWRTZWN0aW9uTGliIGFuZA0KPiA+IC4vRW1iZWRkZWRQa2cvTGlicmFyeS9QcmVQaU1l bW9yeUFsbG9jYXRpb25MaS4gSSB3b3VsZCBwcmVmZXIgbm90IHRvIG1vdmUgb25lIG9mIHRoZXNl IGxpYnJhcmllcyBpbnRvIEVtYmVkZGVkUGtnIC0gdGhhdCB3b3VsZG4ndA0KPiBtYWtlIG11Y2gg c2Vuc2UgdG8gbWUgKGVzcC4gc2luY2UgdGhlcmUncyBub3RoaW5nICJlbWJlZGRlZCIgYWJvdXQg dGhlIGFwcHJvYWNoIHBlciBzZSwgaXQgY2FuIGJlIHVzZWQgb24gYW55IGltcGxlbWVudGF0aW9u KS4NCj4gPg0KPiA+IEENCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206 IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTZW50 OiBNb25kYXksIE1hcmNoIDI3LCAyMDIzIDExOjMyIEFNDQo+ID4gVG86IFdhcmtlbnRpbiwgQW5k cmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT47DQo+ID4gZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwg WmhpZ3VhbmcNCj4gPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBE DQo+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFU Q0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3INCj4gPiBS SVNDLVYNCj4gPg0KPiA+IEkgdGhpbmsgdGhhdCB3b3VsZCBzdGlsbCBiZSBjYWxsZWQgU2VjLiAg QXJlIHRoZXJlIGFueSBpc3N1ZXMgd2l0aCB1c2luZyBTZWMgcHJlZml4Pw0KPiA+DQo+ID4gTWlr ZQ0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogV2Fy a2VudGluLCBBbmRyZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0KPiA+ID4gU2VudDog VGh1cnNkYXksIE1hcmNoIDE2LCAyMDIzIDEwOjQ1IFBNDQo+ID4gPiBUbzogS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gPiA+IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47 IExpdSwgWmhpZ3VhbmcNCj4gPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ID4gU3Vi amVjdDogUkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzogYWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0 TGliIGZvcg0KPiA+ID4gUklTQy1WDQo+ID4gPg0KPiA+ID4gUHJlUGkgcmVmZXJzIHRvIGEgU0VD LWxpa2Ugc3RhZ2UgaW4gYSBUaWFubyBpbXBsZW1lbnRhdGlvbiB0aGF0DQo+ID4gPiBza2lwcyB0 aGUgUEVJIHN0YWdlLiBSZWFzb25zIGZvciBza2lwcGluZyBQRUkgdXN1YWxseSBjZW50ZXIgYXJv dW5kDQo+ID4gPiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYmVpbmcgZG9uZSBhdCBhbiBlYXJsaWVy IHN0YWdlIG9mIGZpcm13YXJlDQo+ID4gPiBpbml0aWFsaXphdGlvbiAtIGZvciBleGFtcGxlLCBw cmlvciBvciBwYXJ0IG9mIFRGLUEgZmlybXdhcmUgb24NCj4gPiA+IEFBcmNoNjQgb3IgcHJpb3Ig b3IgcGFydCBvZiBTQkkgaW1wbGVtZW50YXRpb24gb24gUklTQy1WLg0KPiA+ID4NCj4gPiA+IEUu Zy4gQXJtVmlydFBrZy9QcmVQaSBhbmQgT3ZtZlBrZy9SaXNjVlZpcnQvU2VjLiBUaGUgbGF0ZXIg aXMgbm90IGENCj4gPiA+ICJTRUMiIGluIHRoZSBzZW5kIG9mIGhhbmRpbmcgb2ZmIHRvIFBlaUNv cmUsIGJ1dCBpbnN0ZWFkIGhhbmRzIG9mZiB0byBEeGVDb3JlLg0KPiA+ID4NCj4gPiA+IFRoZXJl IGlzIG5vIGJhc2UgdHlwZSBmb3IgUHJlUGkuIFRoZSB0eXBlIGlzIHN0aWxsIFNFQy4gQnV0IGl0 IGEpIGFzc3VtZXMgUkFNIGlzIGF2YWlsYWJsZSBiKSBidWlsZHMgSE9CcyBhbmQgaGFuZHMtb2Zm IHRvIERYRS4NCj4gPiA+DQo+ID4gPiBUaGUgbmFtZSBoYXMgYmVlbiBhcm91bmQgZm9yIGF0IGxl YXN0IGhhbGYgYSBkZWNhZGUgbm93IGFuZCBtYWtpbmcNCj4gPiA+IGl0IGEgcGFydCBvZiB0aGUg U2VyaWFsUG9ydExpYiBjb21wb25lbnQgbmFtZSBpcyBpbXBvcnRhbnQgYXMgaXQgc2lnbmlmaWVz IHRoZSBzY2VuYXJpbyB3aGVyZSB0aGUgY29kZSBjYW4gYXBwbHkuDQo+ID4gPg0KPiA+ID4gQQ0K PiA+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBLaW5u ZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiBTZW50OiBG cmlkYXksIE1hcmNoIDE3LCAyMDIzIDEyOjAxIEFNDQo+ID4gPiBUbzogV2Fya2VudGluLCBBbmRy ZWkgPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPjsNCj4gPiA+IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExp dSwgWmhpZ3VhbmcNCj4gPiA+IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNo YWVsIEQNCj4gPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6 IFJFOiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBm b3INCj4gPiA+IFJJU0MtVg0KPiA+ID4NCj4gPiA+IFdoYXQgaXMgdGhlIGRlZmluaXRpb24gb2Yg IlByZVBJIj8gIFRoYXQgaXMgbm90IGEgcHJlZml4IEkgaGF2ZSBzZWVuIHVzZWQgYmVmb3JlLg0K PiA+ID4NCj4gPiA+IE1pa2UNCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gPiA+IEZyb206IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGlu dGVsLmNvbT4NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIE1hcmNoIDE2LCAyMDIzIDk6NTMgUE0N Cj4gPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiA+IENjOiBLaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPiA+ID4g PiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGlndWFuZyA8emhpZ3VhbmcubGl1 QGludGVsLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2NSAyLzNdIE1kZVBrZzog YWRkIFNCSS1iYXNlZCBTZXJpYWxQb3J0TGliDQo+ID4gPiA+IGZvciBSSVNDLVYNCj4gPiA+ID4N Cj4gPiA+ID4gSGkgZm9sa3MsDQo+ID4gPiA+DQo+ID4gPiA+IENhbiBJIGdldCBhIHJldmlldyBm b3IgdGhlIGNoYW5nZXMgdG8gTWRlUGtnLmRzYyB0byBpbmNsdWRlIHRoZQ0KPiA+ID4gPiBuZXcg bGlicyBvbiBSSVNDLVY/IFRoYXQncyB0aGUgbWlub3IgdGhpbmcgcHJldmVudGluZyB0aGlzIHBh dGNoIHNldCBmcm9tIGJlaW5nIG1lcmdlZCDwn5iKLg0KPiA+ID4gPg0KPiA+ID4gPiBBDQo+ID4g PiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IFdh cmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2VudGluQGludGVsLmNvbT4NCj4gPiA+ID4gU2Vu dDogRnJpZGF5LCBNYXJjaCAxMCwgMjAyMyAxMTowNSBBTQ0KPiA+ID4gPiBUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW8NCj4gPiA+ID4gQ2M6IFdhcmtlbnRpbiwgQW5kcmVpIDxhbmRyZWkud2Fya2Vu dGluQGludGVsLmNvbT47IERhbmllbA0KPiA+ID4gPiBTY2hhZWZlciA8Z2l0QGRhbmllbHNjaGFl ZmVyLm1lPjsgU3VuaWwgViBMDQo+ID4gPiA+IDxzdW5pbHZsQHZlbnRhbmFtaWNyby5jb20+OyBL aW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBH YW8sIExpbWluZw0KPiA+ID4gPiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgTGl1LCBaaGln dWFuZw0KPiA+ID4gPiA8emhpZ3VhbmcubGl1QGludGVsLmNvbT47IEdlcmQgSG9mZm1hbm4gPGty YXhlbEByZWRoYXQuY29tPg0KPiA+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjUgMi8zXSBNZGVQa2c6 IGFkZCBTQkktYmFzZWQgU2VyaWFsUG9ydExpYiBmb3INCj4gPiA+ID4gUklTQy1WDQo+ID4gPiA+ DQo+ID4gPiA+IFRoZXNlIGFyZSBpbXBsZW1lbnRhdGlvbnMgb2YgU2VyaWFsUG9ydExpYiB1c2lu ZyBTQkkgY29uc29sZSBzZXJ2aWNlcy4NCj4gPiA+ID4gLSBTZWNQZWlSaXNjVlNlcmlhbFBvcnRM aWJTYmkgaXMgYXBwcm9wcmlhdGUgZm9yIFNFQy9QRUkgKFhJUCkNCj4gPiA+ID4gZW52aXJvbm1l bnRzDQo+ID4gPiA+IC0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkgaXMgYXBwcm9wcmlh dGUgZm9yIFByZVBJL0RYRQ0KPiA+ID4gPiBlbnZpcm9ubWVudHMNCj4gPiA+ID4NCj4gPiA+ID4g VGVzdGVkIHdpdGg6DQo+ID4gPiA+IC0gUWVtdSBSaXNjVlZpcnQgKG5vbi1EQkNOIGNhc2UsIGJh Y2tlZCBieSBVQVJUKQ0KPiA+ID4gPiAtIFRpbnlFTVUgKyBSaXNjVlZpcnQgKG5vbi1EQkNOIGNh c2UsIEhUSUYpDQo+ID4gPiA+IC0gVGlueUVNVSArIFJpc2NWVmlydCAoREJDTiBjYXNlLCBIVElG KQ0KPiA+ID4gPg0KPiA+ID4gPiBDYzogRGFuaWVsIFNjaGFlZmVyIDxnaXRAZGFuaWVsc2NoYWVm ZXIubWU+DQo+ID4gPiA+IENjOiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFuYW1pY3JvLmNvbT4N Cj4gPiA+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+ID4gPiBDYzogTGltaW5nIEdhbyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KPiA+ ID4gPiBDYzogWmhpZ3VhbmcgTGl1IDx6aGlndWFuZy5saXVAaW50ZWwuY29tPg0KPiA+ID4gPiBB Y2tlZC1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+DQo+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IEFuZHJlaSBXYXJrZW50aW4gPGFuZHJlaS53YXJrZW50aW5AaW50ZWwuY29tPg0K PiA+ID4gPiAtLS0NCj4gPiA+ID4gIE1kZVBrZy9NZGVQa2cuZHNjICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4g PiA+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4 ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5pbmYgfCAgMzYgKysrDQo+ID4gPiA+ICBNZGVQa2cvTGli cmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGli U2JpLmluZiAgICAgfCAgMzkgKysrDQo+ID4gPiA+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJp c2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS5jICAgfCAy ODggKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJp c2NWU2VyaWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYyAgICAgICB8 IDIzMyArKysrKysrKysrKysrKysrDQo+ID4gPiA+ICBNZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJp c2NWU2VyaWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsUG9ydExpYlNiaS51bmkgfCAg MTYgKysNCj4gPiA+ID4gIE1kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNi aS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5pICAgICB8ICAxNiArKw0KPiA+ID4gPiAg NyBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZm IC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kc2MgYi9NZGVQa2cvTWRlUGtnLmRzYyBpbmRleA0KPiA+ ID4gPiAwYWM3NjE4YjQ2MjMuLmZiMzEzNDkwNDJmYiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvTWRl UGtnL01kZVBrZy5kc2MNCj4gPiA+ID4gKysrIGIvTWRlUGtnL01kZVBrZy5kc2MNCj4gPiA+ID4g QEAgLTE5Miw1ICsxOTIsNyBAQCBbQ29tcG9uZW50cy5BUk0sIENvbXBvbmVudHMuQUFSQ0g2NF0N Cj4gPiA+ID4NCj4gPiA+ID4gIFtDb21wb25lbnRzLlJJU0NWNjRdDQo+ID4gPiA+ICAgIE1kZVBr Zy9MaWJyYXJ5L0Jhc2VSaXNjVlNiaUxpYi9CYXNlUmlzY1ZTYmlMaWIuaW5mDQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyBNZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2Vj UGVpUmlzY1ZTZXJpYWxQb3J0DQo+ID4gPiA+ICsgTGkNCj4gPiA+ID4gKyBiUw0KPiA+ID4gPiAr IGJpDQo+ID4gPiA+ICsgLmluZg0KPiA+ID4gPiArIE1kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlz Y1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWwNCj4gPiA+ID4gKyBQbw0KPiA+ ID4gPiArIHJ0DQo+ID4gPiA+ICsgTGkNCj4gPiA+ID4gKyBiU2JpLmluZg0KPiA+ID4gPg0KPiA+ ID4gPiAgW0J1aWxkT3B0aW9uc10NCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPiBhL01kZVBr Zy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJp YWwNCj4gPiA+ID4gUG8NCj4gPiA+ID4gcnQNCj4gPiA+ID4gTGliU2JpLmluZg0KPiA+ID4gPiBi L01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlz Y1ZTZXJpYWwNCj4gPiA+ID4gUG8NCj4gPiA+ID4gcnQNCj4gPiA+ID4gTGliU2JpLmluZg0KPiA+ ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjFk ODU0NDc1NmJiOQ0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ICsrKyBiL01kZVBrZy9M aWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZQ0KPiA+ ID4gPiArKysgcmkNCj4gPiA+ID4gKysrIGFsDQo+ID4gPiA+ICsrKyBQbw0KPiA+ID4gPiArKysg cnRMaWJTYmkuaW5mDQo+ID4gPiA+IEBAIC0wLDAgKzEsMzYgQEANCj4gPiA+ID4gKyMjIEBmaWxl DQo+ID4gPiA+ICsjICBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZS4N Cj4gPiA+ID4gKyMNCj4gPiA+ID4gKyMgIE1lYW50IGZvciBQcmVQaSBhbmQgRFhFIGVudmlyb25t ZW50cyAod2hlcmUgZ2xvYmFscyBhcmUgYWxsb3dlZCkuDQo+ID4gPiA+ICtTZWUgIyAgU2VjUGVp U2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFyaWFudA0KPiA+ID4gPiArYXBw cm9wcmlhdGUgZm9yIFNFQyAjICBhbmQgUEVJIChYSVApIGVudmlyb25tZW50cy4NCj4gPiA+ID4g KyMNCj4gPiA+ID4gKyMgIENvcHlyaWdodCAoYykgMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMNCj4gPiA+ID4gK3Jlc2VydmVkLjxCUj4gIyAjDQo+ID4gPiA+ICtTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjICMgIyMNCj4gPiA+ID4gKw0KPiA+ ID4gPiArW0RlZmluZXNdDQo+ID4gPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAg ICA9IDB4MDAwMTAwMUINCj4gPiA+ID4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAg ID0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCj4gPiA+ID4gKyAgTU9EVUxFX1VOSV9G SUxFICAgICAgICAgICAgICAgID0gUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkudW5pDQo+ ID4gPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDg3MmFmNzQzLWFiNTYt NDViNC1hMDY1LTYwMjU2N2Y0ODIwYw0KPiA+ID4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAg ICAgICAgICAgPSBCQVNFDQo+ID4gPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAg ICA9IDEuMA0KPiA+ID4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBTZXJp YWxQb3J0TGliIHwgU0VDIERYRV9DT1JFIERYRV9EUklWRVIgRFhFX1JVTlRJTUVfRFJJVkVSIFVF RklfRFJJVkVSIFVFRklfQVBQTElDQVRJT04NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsjDQo+ID4gPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IFJJU0NWNjQN Cj4gPiA+ID4gKyMNCj4gPiA+ID4gKw0KPiA+ID4gPiArW1NvdXJjZXNdDQo+ID4gPiA+ICsgIFBy ZVBpRHhlUmlzY1ZTZXJpYWxQb3J0TGliU2JpLmMNCj4gPiA+ID4gKw0KPiA+ID4gPiArW1BhY2th Z2VzXQ0KPiA+ID4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4gPiArDQo+ID4gPiA+ICtb TGlicmFyeUNsYXNzZXNdDQo+ID4gPiA+ICsgIFJpc2NWU2JpTGliDQo+ID4gPiA+IGRpZmYgLS1n aXQNCj4gPiA+ID4gYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkv U2VjUGVpUmlzY1ZTZXJpYWxQb3J0DQo+ID4gPiA+IExpDQo+ID4gPiA+IGJTDQo+ID4gPiA+IGJp LmluZg0KPiA+ID4gPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2VyaWFsUG9ydExpYlNi aS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gPiA+ID4gTGkNCj4gPiA+ID4gYlMNCj4gPiA+ID4g YmkuaW5mDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uN2JjN2NkNDdjMTFjDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysr IGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2JpL1NlY1BlaVJpc2NW U2VyaWFsDQo+ID4gPiA+ICsrKyBQbw0KPiA+ID4gPiArKysgcnQNCj4gPiA+ID4gKysrIExpDQo+ ID4gPiA+ICsrKyBiU2JpLmluZg0KPiA+ID4gPiBAQCAtMCwwICsxLDM5IEBADQo+ID4gPiA+ICsj IyBAZmlsZQ0KPiA+ID4gPiArIyAgU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNv bnNvbGUuDQo+ID4gPiA+ICsjDQo+ID4gPiA+ICsjICBNZWFudCBmb3IgU0VDIGFuZCBQRUkgKFhJ UCkgZW52aXJvbm1lbnRzLg0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyAgRHVlIHRvIGxpbWl0YXRp b25zIG9mIFNCSSBjb25zb2xlIGludGVyZmFjZSBhbmQgWElQDQo+ID4gPiA+ICtlbnZpcm9ubWVu dHMgIyAob24gdXNlIG9mIGdsb2JhbHMpLCB0aGlzIGxpYnJhcnkgaW5zdGFuY2UgZG9lcw0KPiA+ ID4gPiArbm90IGltcGxlbWVudCByZWFkaW5nICMgYW5kIHBvbGxpbmcgdGhlIHNlcmlhbCBwb3J0 LiBTZWUNCj4gPiA+ID4gK1ByZVBpRHhlU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciAjIHRoZSBm dWxsLWZlYXR1cmVkIHZhcmlhbnQgbWVhbnQgZm9yIFByZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRz Lg0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4gPiArcmVzZXJ2ZWQuPEJSPiAjICMNCj4gPiA+ID4g K1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICMgIyAjIw0KPiA+ ID4gPiArDQo+ID4gPiA+ICtbRGVmaW5lc10NCj4gPiA+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAg ICAgICAgICAgICAgID0gMHgwMDAxMDAxQg0KPiA+ID4gPiArICBCQVNFX05BTUUgICAgICAgICAg ICAgICAgICAgICAgPSBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkNCj4gPiA+ID4gKyAgTU9E VUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2Jp LnVuaQ0KPiA+ID4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2MzlmYWQz OC00YmZkLTRlYjktOWYwOS1lOTdjNzk0N2Q0ODANCj4gPiA+ID4gKyAgTU9EVUxFX1RZUEUgICAg ICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAg ICAgICAgICAgPSAxLjANCj4gPiA+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAg ID0gU2VyaWFsUG9ydExpYiB8IFNFQyBQRUlfQ09SRSBQRUlNDQo+ID4gPiA+ICsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArIw0KPiA+ID4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAg PSBSSVNDVjY0DQo+ID4gPiA+ICsjDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1tTb3VyY2VzXQ0KPiA+ ID4gPiArICBTZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkuYw0KPiA+ID4gPiArDQo+ID4gPiA+ ICtbUGFja2FnZXNdDQo+ID4gPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiA+ICsNCj4g PiA+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gKyAgUmlzY1ZTYmlMaWINCj4gPiA+ID4g ZGlmZiAtLWdpdA0KPiA+ID4gPiBhL01kZVBrZy9MaWJyYXJ5L1ByZVBpRHhlUmlzY1ZTZXJpYWxQ b3J0TGliU2JpL1ByZVBpRHhlUmlzY1ZTZXJpYWwNCj4gPiA+ID4gUG8NCj4gPiA+ID4gcnQNCj4g PiA+ID4gTGliU2JpLmMNCj4gPiA+ID4gYi9NZGVQa2cvTGlicmFyeS9QcmVQaUR4ZVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9QcmVQaUR4ZVJpc2NWU2VyaWFsDQo+ID4gPiA+IFBvDQo+ID4gPiA+IHJ0 DQo+ID4gPiA+IExpYlNiaS5jDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uMDU4YTY1NzNlZjJkDQo+ID4gPiA+IC0tLSAvZGV2L251bGwN Cj4gPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJT YmkvUHJlUGlEeGVSaXNjVlNlDQo+ID4gPiA+ICsrKyByaQ0KPiA+ID4gPiArKysgYWwNCj4gPiA+ ID4gKysrIFBvDQo+ID4gPiA+ICsrKyBydExpYlNiaS5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMjg4 IEBADQo+ID4gPiA+ICsvKiogQGZpbGUNCj4gPiA+ID4gKyAgU2VyaWFsIFBvcnQgTGlicmFyeSBi YWNrZWQgYnkgU0JJIGNvbnNvbGUuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgTWVhbnQgZm9yIFBy ZVBpIGFuZCBEWEUgZW52aXJvbm1lbnRzICh3aGVyZSBnbG9iYWxzIGFyZSBhbGxvd2VkKS4NCj4g PiA+ID4gKyBTZWUgU2VjUGVpU2VyaWFsUG9ydExpYlJpc2NWU2JpIGZvciBhIHJlZHVjZWQgdmFy aWFudA0KPiA+ID4gPiArIGFwcHJvcHJpYXRlIGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9u bWVudHMuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiA+ICsgIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyoqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSA8QmFzZS5oPg0KPiA+ID4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPiAjaW5jbHVkZQ0KPiA+ID4gPiArPExpYnJh cnkvQmFzZVJpc2NWU2JpTGliLmg+DQo+ID4gPiA+ICsNCj4gPiA+ID4gK1NUQVRJQyBCT09MRUFO ICBtSGF2ZURiY24gICAgICAgICAgPSBGQUxTRTsNCj4gPiA+ID4gK1NUQVRJQyBCT09MRUFOICBt SGF2ZUxlZ2FjeVB1dGNoYXIgPSBGQUxTRTsgU1RBVElDIEJPT0xFQU4NCj4gPiA+ID4gK21IYXZl TGVnYWN5R2V0Y2hhciA9IEZBTFNFOw0KPiA+ID4gPiArU1RBVElDIElOVDY0ICAgIG1MYXN0R2V0 Q2hhciAgICAgICA9IC0xOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgSW5p dGlhbGl6ZSB0aGUgc2VyaWFsIGRldmljZSBoYXJkd2FyZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiAr ICBJZiBubyBpbml0aWFsaXphdGlvbiBpcyByZXF1aXJlZCwgdGhlbiByZXR1cm4gUkVUVVJOX1NV Q0NFU1MuDQo+ID4gPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkg aW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJFVFVSTl9TVUNDRVNTLg0KPiA+ID4gPiArICBJZiB0 aGUgc2VyaWFsIGRldmljZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQsIHRoZW4gcmV0dXJuIFJF VFVSTl9ERVZJQ0VfRVJST1IuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5f U1VDQ0VTUyAgICAgICAgVGhlIHNlcmlhbCBkZXZpY2Ugd2FzIGluaXRpYWxpemVkLg0KPiA+ID4g PiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBjb3Vs ZCBub3QgYmUgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiAr UkVUVVJOX1NUQVRVUw0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtTZXJpYWxQb3J0SW5pdGlh bGl6ZSAoDQo+ID4gPiA+ICsgIFZPSUQNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4g PiArICBTQklfUkVUICBSZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgUmV0ID0gU2JpQ2FsbCAo U0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhULCAxLA0KPiA+ID4gPiArIFNCSV9F WFRfREJDTik7ICBpZiAoKFRyYW5zbGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNT KSAmJg0KPiA+ID4gPiArICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiA+ID4gKyAgew0KPiA+ ID4gPiArICAgIG1IYXZlRGJjbiA9IFRSVUU7DQo+ID4gPiA+ICsgIH0gZWxzZSB7DQo+ID4gPiA+ ICsgICAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhUX0JBU0VfUFJPQkVfRVhU LCAxLCBTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIpOw0KPiA+ID4gPiArICAgIGlmICgoVHJh bnNsYXRlRXJyb3IgKFJldC5FcnJvcikgPT0gRUZJX1NVQ0NFU1MpICYmDQo+ID4gPiA+ICsgICAg ICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gPiA+ICsgICAgew0KPiA+ID4gPiArICAgICAgbUhh dmVMZWdhY3lQdXRjaGFyID0gVFJVRTsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICBSZXQgPSBTYmlDYWxsIChTQklfRVhUX0JBU0UsIFNCSV9FWFRfQkFTRV9QUk9CRV9F WFQsIDEsIFNCSV9FWFRfMF8xX0NPTlNPTEVfR0VUQ0hBUik7DQo+ID4gPiA+ICsgICAgaWYgKChU cmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ID4gKyAg ICAgICAgKFJldC5WYWx1ZSAhPSAwKSkNCj4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ICsgICAgICBt SGF2ZUxlZ2FjeUdldGNoYXIgPSBUUlVFOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ID4gK30N Cj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFdyaXRlIGRhdGEgZnJvbSBidWZm ZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBXcml0ZXMgTnVtYmVy T2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ ID4gPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIHNlcmlh bCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMg bGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBmYWlsZWQu DQo+ID4gPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ID4gPiAr ICBJZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ID4gPiA+ICsNCj4g PiA+ID4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBkYXRh IGJ1ZmZlciB0byBiZSB3cml0dGVuLg0KPiA+ID4gPiArICBAcGFyYW0gIE51bWJlck9mQnl0ZXMg ICAgVGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0dGVuIHRvIHRoZSBzZXJpYWwgZGV2aWNlLg0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBOdW1iZXJPZkJ5 dGVzIGlzIDAuDQo+ID4gPiA+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgbnVtYmVy IG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbiBOdW1iZXJPZkJ5 dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ ICsqKi8NCj4gPiA+ID4gK1VJTlRODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK1NlcmlhbFBv cnRXcml0ZSAoDQo+ID4gPiA+ICsgIElOIFVJTlQ4ICAqQnVmZmVyLA0KPiA+ID4gPiArICBJTiBV SU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsg IFVJTlROICBJbmRleDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAobUhhdmVEYmNuKSB7DQo+ ID4gPiA+ICsgICAgU0JJX1JFVCAgUmV0Ow0KPiA+ID4gPiArICAgIFJldCA9IFNiaUNhbGwgKA0K PiA+ID4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOLA0KPiA+ID4gPiArICAgICAgICAgICAg U0JJX0VYVF9EQkNOX1dSSVRFLA0KPiA+ID4gPiArICAgICAgICAgICAgMywNCj4gPiA+ID4gKyAg ICAgICAgICAgIE51bWJlck9mQnl0ZXMsDQo+ID4gPiA+ICsgICAgICAgICAgICAoKFVJTlROKUJ1 ZmZlciksDQo+ID4gPiA+ICsgICAgICAgICAgICAwDQo+ID4gPiA+ICsgICAgICAgICAgICApOw0K PiA+ID4gPiArICAgIGlmIChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklfU1VDQ0VT Uykgew0KPiA+ID4gPiArICAgICAgcmV0dXJuIDA7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiAr DQo+ID4gPiA+ICsgICAgcmV0dXJuIFJldC5WYWx1ZTsNCj4gPiA+ID4gKyAgfSBlbHNlIGlmICht SGF2ZUxlZ2FjeVB1dGNoYXIpIHsNCj4gPiA+ID4gKyAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBOdW1iZXJPZkJ5dGVzOyBJbmRleCsrKSB7DQo+ID4gPiA+ICsgICAgICBTYmlDYWxsIChTQklf RVhUXzBfMV9DT05TT0xFX1BVVENIQVIsIDAsIDEsIEJ1ZmZlcltJbmRleF0pOw0KPiA+ID4gPiAr ICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIHJldHVybiBJbmRleDsNCj4gPiA+ID4gKyAg fQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8qDQo+ID4gPiA+ICsgICAqIE5laXRoZXIgREJDTiBv ciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUgcHJlc2VudC4NCj4gPiA+ID4gKyAgICovDQo+ID4gPiA+ ICsgIHJldHVybiBOdW1iZXJPZkJ5dGVzOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyAgUmVhZCBkYXRhIGZyb20gc2VyaWFsIGRldmljZSBhbmQgc2F2ZSB0 aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFJlYWRzIE51bWJlck9m Qnl0ZXMgZGF0YSBieXRlcyBmcm9tIGEgc2VyaWFsIGRldmljZSBpbnRvIHRoZQ0KPiA+ID4gPiAr IGJ1ZmZlciBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5 IHJlYWQgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVz cyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJlc3Qgb3BlcmF0aW9uIGZhaWxlZC4NCj4g PiA+ID4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4gQVNTRVJUKCkuDQo+ID4gPiA+ICsgIElm IE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1cm4gMC4NCj4gPiA+ID4gKw0KPiA+ID4g PiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVm ZmVyIHRvIHN0b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2gg d2lsbCBiZSByZWFkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAg ICAgICBSZWFkIGRhdGEgZmFpbGVkOyBObyBkYXRhIGlzIHRvIGJlIHJlYWQuDQo+ID4gPiA+ICsg IEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFk IGZyb20gc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtV SU5UTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtTZXJpYWxQb3J0UmVhZCAoDQo+ID4gPiA+ ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwNCj4gPiA+ID4gKyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5 dGVzDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgVUlOVE4gIEluZGV4Ow0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIEluZGV4ID0gMDsNCj4gPiA+ID4gKyAgd2hpbGUgKChJbmRl eCA8IE51bWJlck9mQnl0ZXMpICYmIFNlcmlhbFBvcnRQb2xsICgpKSB7DQo+ID4gPiA+ICsgICAg QnVmZmVyW0luZGV4KytdID0gKFVJTlQ4KW1MYXN0R2V0Q2hhcjsNCj4gPiA+ID4gKyAgICBtTGFz dEdldENoYXIgICAgPSAtMTsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIHJl dHVybiBJbmRleDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ ICsgIFBvbGxzIGEgc2VyaWFsIGRldmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2Fp dGluZyB0byBiZSByZWFkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIFBvbGxzIGEgc2VyaWFsIGRl dmljZSB0byBzZWUgaWYgdGhlcmUgaXMgYW55IGRhdGEgd2FpdGluZyB0byBiZSByZWFkLg0KPiA+ ID4gPiArICBJZiB0aGVyZSBpcyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJp YWwgZGV2aWNlLCB0aGVuIFRSVUUgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsgIElmIHRoZXJlIGlz IG5vIGRhdGEgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZpY2UsIHRoZW4g RkFMU0UgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBUUlVFICAg ICAgICAgICAgIERhdGEgaXMgd2FpdGluZyB0byBiZSByZWFkIGZyb20gdGhlIHNlcmlhbCBkZXZp Y2UuDQo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgICAgICAgICAgICBUaGVyZSBpcyBubyBkYXRh IHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gPiArDQo+ ID4gPiA+ICsqKi8NCj4gPiA+ID4gK0JPT0xFQU4NCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiAr U2VyaWFsUG9ydFBvbGwgKA0KPiA+ID4gPiArICBWT0lEDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4g K3sNCj4gPiA+ID4gKyAgLyoNCj4gPiA+ID4gKyAgICogQ2FyZWZ1bC4gT3BlblNCSSB3aXRoIEhU SUYgY29uc29sZSB3aWxsIHJldHVybiAtMSBmb2xsb3dlZCBieSAtMg0KPiA+ID4gPiArICAgKiBp ZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQuIFNvIGp1c3QgY2hlY2sgZm9yIHZhbHVl cyA+PSAwLg0KPiA+ID4gPiArICAgKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAobUxhc3RH ZXRDaGFyID49IDApIHsNCj4gPiA+ID4gKyAgICByZXR1cm4gVFJVRTsNCj4gPiA+ID4gKyAgfQ0K PiA+ID4gPiArDQo+ID4gPiA+ICsgIGlmIChtSGF2ZURiY24pIHsNCj4gPiA+ID4gKyAgICBVSU5U OCAgICBCdWZmZXI7DQo+ID4gPiA+ICsgICAgU0JJX1JFVCAgUmV0Ow0KPiA+ID4gPiArDQo+ID4g PiA+ICsgICAgUmV0ID0gU2JpQ2FsbCAoDQo+ID4gPiA+ICsgICAgICAgICAgICBTQklfRVhUX0RC Q04sDQo+ID4gPiA+ICsgICAgICAgICAgICBTQklfRVhUX0RCQ05fUkVBRCwNCj4gPiA+ID4gKyAg ICAgICAgICAgIDMsDQo+ID4gPiA+ICsgICAgICAgICAgICAxLA0KPiA+ID4gPiArICAgICAgICAg ICAgKChVSU5UTikmQnVmZmVyKSwNCj4gPiA+ID4gKyAgICAgICAgICAgIDANCj4gPiA+ID4gKyAg ICAgICAgICAgICk7DQo+ID4gPiA+ICsgICAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9y KSA9PSBFRklfU1VDQ0VTUykgJiYNCj4gPiA+ID4gKyAgICAgICAgKFJldC5WYWx1ZSA9PSAxKSkN Cj4gPiA+ID4gKyAgICB7DQo+ID4gPiA+ICsgICAgICBtTGFzdEdldENoYXIgPSBCdWZmZXI7DQo+ ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICB9IGVsc2UgaWYgKG1IYXZlTGVnYWN5R2V0Y2hhcikg ew0KPiA+ID4gPiArICAgIG1MYXN0R2V0Q2hhciA9IChJTlQ2NClTYmlDYWxsIChTQklfRVhUXzBf MV9DT05TT0xFX0dFVENIQVIsDQo+ID4gPiA+ICsgMCwgMCkuRXJyb3I7ICB9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgcmV0dXJuIG1MYXN0R2V0Q2hhciA+PSAwOw0KPiA+ID4gPiArfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgU2V0cyB0aGUgY29udHJvbCBiaXRzIG9uIGEg c2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW0gQ29udHJvbCAgICAg ICAgICAgICAgICBTZXRzIHRoZSBiaXRzIG9mIENvbnRyb2wgdGhhdCBhcmUgc2V0dGFibGUuDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIG5l dyBjb250cm9sIGJpdHMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsg IEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgIFRoZSBzZXJpYWwgZGV2aWNlIGRvZXMgbm90 IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklD RV9FUlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGlzIG5vdCBmdW5jdGlvbmluZyBjb3JyZWN0bHku DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ID4g PiArRUZJQVBJDQo+ID4gPiA+ICtTZXJpYWxQb3J0U2V0Q29udHJvbCAoDQo+ID4gPiA+ICsgIElO IFVJTlQzMiAgQ29udHJvbA0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJl dHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoq DQo+ID4gPiA+ICsgIFJldHJpZXZlIHRoZSBzdGF0dXMgb2YgdGhlIGNvbnRyb2wgYml0cyBvbiBh IHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtIENvbnRyb2wgICAg ICAgICAgICAgICAgQSBwb2ludGVyIHRvIHJldHVybiB0aGUgY3VycmVudCBjb250cm9sIHNpZ25h bHMgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcmV0dmFs IFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgY29udHJvbCBiaXRzIHdlcmUgcmVhZCBmcm9tIHRo ZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAg ICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ ID4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBp cyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4g PiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiArU2VyaWFsUG9y dEdldENvbnRyb2wgKA0KPiA+ID4gPiArICBPVVQgVUlOVDMyICAqQ29udHJvbA0KPiA+ID4gPiAr ICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgICpDb250cm9sID0gMDsNCj4gPiA+ID4gKyAgcmV0 dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioN Cj4gPiA+ID4gKyAgU2V0cyB0aGUgYmF1ZCByYXRlLCByZWNlaXZlIEZJRk8gZGVwdGgsIHRyYW5z bWl0L3JlY2VpY2UgdGltZQ0KPiA+ID4gPiArb3V0LCBwYXJpdHksDQo+ID4gPiA+ICsgIGRhdGEg Yml0cywgYW5kIHN0b3AgYml0cyBvbiBhIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgQHBhcmFtIEJhdWRSYXRlICAgICAgICAgICBUaGUgcmVxdWVzdGVkIGJhdWQgcmF0ZS4g QSBCYXVkUmF0ZSB2YWx1ZSBvZiAwIHdpbGwgdXNlIHRoZQ0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRldmljZSdzIGRlZmF1bHQgaW50ZXJmYWNlIHNwZWVkLg0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVh bGx5IHNldC4NCj4gPiA+ID4gKyAgQHBhcmFtIFJldmVpdmVGaWZvRGVwdGggICBUaGUgcmVxdWVz dGVkIGRlcHRoIG9mIHRoZSBGSUZPIG9uIHRoZSByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsIGludGVyZmFjZS4gQSBSZWNlaXZl Rmlmb0RlcHRoIHZhbHVlIG9mIDAgd2lsbCB1c2UNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBGSUZPIGRlcHRoLg0KPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNl dC4NCj4gPiA+ID4gKyAgQHBhcmFtIFRpbWVvdXQgICAgICAgICAgICBUaGUgcmVxdWVzdGVkIHRp bWUgb3V0IGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gbWljcm9zZWNvbmRzLg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGltZW91dCBhcHBsaWVzIHRvIGJvdGgg dGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIHNpZGUgb2YgdGhlDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLiBBIFRpbWVvdXQgdmFsdWUgb2YgMCB3aWxsIHVz ZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCB0aW1lDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3V0IHZhbHVlLg0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9uIG91dHB1dCwgdGhlIHZhbHVlIGFjdHVhbGx5IHNldC4NCj4gPiA+ID4gKyAgQHBhcmFtIFBh cml0eSAgICAgICAgICAgICBUaGUgdHlwZSBvZiBwYXJpdHkgdG8gdXNlIG9uIHRoaXMgc2VyaWFs IGRldmljZS4gQSBQYXJpdHkgdmFsdWUgb2YNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZWZhdWx0UGFyaXR5IHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IHBhcml0 eSB2YWx1ZS4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQs IHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbSBEYXRhQml0cyAgICAg ICAgICAgVGhlIG51bWJlciBvZiBkYXRhIGJpdHMgdG8gdXNlIG9uIHRoZSBzZXJpYWwgZGV2aWNl LiBBIERhdGFCaXRzDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmF1bGUg b2YgMCB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBkYXRhIGJpdCBzZXR0aW5nLg0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgdGhlIHZhbHVlIGFj dHVhbGx5IHNldC4NCj4gPiA+ID4gKyAgQHBhcmFtIFN0b3BCaXRzICAgICAgICAgICBUaGUgbnVt YmVyIG9mIHN0b3AgYml0cyB0byB1c2Ugb24gdGhpcyBzZXJpYWwgZGV2aWNlLiBBIFN0b3BCaXRz DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgRGVmYXVsdFN0 b3BCaXRzIHdpbGwgdXNlIHRoZSBkZXZpY2UncyBkZWZhdWx0IG51bWJlciBvZg0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgYml0cy4NCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgIFRo ZSBuZXcgYXR0cmlidXRlcyB3ZXJlIHNldCBvbiB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ID4g KyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAgICAgIFRoZSBzZXJpYWwgZGV2aWNlIGRv ZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24uDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSICBPbmUgb3IgbW9yZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYW4g dW5zdXBwb3J0ZWQgdmFsdWUuDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9FUlJP UiAgICAgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0K PiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArU2VyaWFsUG9ydFNldEF0dHJpYnV0ZXMgKA0KPiA+ID4gPiArICBJ TiBPVVQgVUlOVDY0ICAgICAgICAgICAgICAqQmF1ZFJhdGUsDQo+ID4gPiA+ICsgIElOIE9VVCBV SU5UMzIgICAgICAgICAgICAgICpSZWNlaXZlRmlmb0RlcHRoLA0KPiA+ID4gPiArICBJTiBPVVQg VUlOVDMyICAgICAgICAgICAgICAqVGltZW91dCwNCj4gPiA+ID4gKyAgSU4gT1VUIEVGSV9QQVJJ VFlfVFlQRSAgICAgKlBhcml0eSwNCj4gPiA+ID4gKyAgSU4gT1VUIFVJTlQ4ICAgICAgICAgICAg ICAgKkRhdGFCaXRzLA0KPiA+ID4gPiArICBJTiBPVVQgRUZJX1NUT1BfQklUU19UWVBFICAqU3Rv cEJpdHMNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1cm4gUkVUVVJO X1NVQ0NFU1M7DQo+ID4gPiA+ICt9DQo+ID4gPiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9NZGVQ a2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQ b3J0DQo+ID4gPiA+IExpDQo+ID4gPiA+IGJTDQo+ID4gPiA+IGJpLmMNCj4gPiA+ID4gYi9NZGVQ a2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQ b3J0DQo+ID4gPiA+IExpDQo+ID4gPiA+IGJTDQo+ID4gPiA+IGJpLmMNCj4gPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4wYWQ1OTMxYmUzYWUN Cj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9NZGVQa2cvTGlicmFyeS9TZWNQ ZWlSaXNjVlNlcmlhbFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWwNCj4gPiA+ID4gKysrIFBv DQo+ID4gPiA+ICsrKyBydA0KPiA+ID4gPiArKysgTGkNCj4gPiA+ID4gKysrIGJTYmkuYw0KPiA+ ID4gPiBAQCAtMCwwICsxLDIzMyBAQA0KPiA+ID4gPiArLyoqIEBmaWxlDQo+ID4gPiA+ICsgIFNl cmlhbCBQb3J0IExpYnJhcnkgYmFja2VkIGJ5IFNCSSBjb25zb2xlLg0KPiA+ID4gPiArDQo+ID4g PiA+ICsgIE1lYW50IGZvciBTRUMgYW5kIFBFSSAoWElQKSBlbnZpcm9ubWVudHMuDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgRHVlIHRvIGxpbWl0YXRpb25zIG9mIFNCSSBjb25zb2xlIGludGVyZmFj ZSBhbmQgWElQDQo+ID4gPiA+ICsgZW52aXJvbm1lbnRzIChvbiB1c2Ugb2YgZ2xvYmFscyksIHRo aXMgbGlicmFyeSBpbnN0YW5jZSBkb2VzIG5vdA0KPiA+ID4gPiArIGltcGxlbWVudCByZWFkaW5n ICBhbmQgcG9sbGluZyB0aGUgc2VyaWFsIHBvcnQuIFNlZQ0KPiA+ID4gPiArIFByZVBpRHhlU2Vy aWFsUG9ydExpYlJpc2NWU2JpIGZvciAgdGhlIGZ1bGwtZmVhdHVyZWQgdmFyaWFudCBtZWFudCBm b3IgUHJlUGkgYW5kIERYRSBlbnZpcm9ubWVudHMuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQ29w eXJpZ2h0IChjKSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyoqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVk ZSA8QmFzZS5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPExpYnJhcnkvU2VyaWFsUG9ydExpYi5oPiAj aW5jbHVkZQ0KPiA+ID4gPiArPExpYnJhcnkvQmFzZVJpc2NWU2JpTGliLmg+DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICBJbml0aWFsaXplIHRoZSBzZXJpYWwgZGV2aWNlIGhh cmR3YXJlLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIElmIG5vIGluaXRpYWxpemF0aW9uIGlzIHJl cXVpcmVkLCB0aGVuIHJldHVybiBSRVRVUk5fU1VDQ0VTUy4NCj4gPiA+ID4gKyAgSWYgdGhlIHNl cmlhbCBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVU VVJOX1NVQ0NFU1MuDQo+ID4gPiA+ICsgIElmIHRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBi ZSBpbml0aWFsaXplZCwgdGhlbiByZXR1cm4gUkVUVVJOX0RFVklDRV9FUlJPUi4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9TVUNDRVNTICAgICAgICBUaGUgc2VyaWFsIGRl dmljZSB3YXMgaW5pdGlhbGl6ZWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX0RFVklDRV9F UlJPUiAgIFRoZSBzZXJpYWwgZGV2aWNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiA+ICtFRklB UEkNCj4gPiA+ID4gK1NlcmlhbFBvcnRJbml0aWFsaXplICgNCj4gPiA+ID4gKyAgVk9JRA0KPiA+ ID4gPiArICApDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFdyaXRlIGRh dGEgZnJvbSBidWZmZXIgdG8gc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBX cml0ZXMgTnVtYmVyT2ZCeXRlcyBkYXRhIGJ5dGVzIGZyb20gQnVmZmVyIHRvIHRoZSBzZXJpYWwg ZGV2aWNlLg0KPiA+ID4gPiArICBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4g dG8gdGhlIHNlcmlhbCBkZXZpY2UgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsgIElmIHRoZSByZXR1 cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHdyaXRlIG9wZXJh dGlvbiBmYWlsZWQuDQo+ID4gPiA+ICsgIElmIEJ1ZmZlciBpcyBOVUxMLCB0aGVuIEFTU0VSVCgp Lg0KPiA+ID4gPiArICBJZiBOdW1iZXJPZkJ5dGVzIGlzIHplcm8sIHRoZW4gcmV0dXJuIDAuDQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtICBCdWZmZXIgICAgICAgICAgIFRoZSBwb2ludGVy IHRvIHRoZSBkYXRhIGJ1ZmZlciB0byBiZSB3cml0dGVuLg0KPiA+ID4gPiArICBAcGFyYW0gIE51 bWJlck9mQnl0ZXMgICAgVGhlIG51bWJlciBvZiBieXRlcyB0byB3cml0dGVuIHRvIHRoZSBzZXJp YWwgZGV2aWNlLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAg ICBOdW1iZXJPZkJ5dGVzIGlzIDAuDQo+ID4gPiA+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAg ICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhh biBOdW1iZXJPZkJ5dGVzLCB0aGVuIHRoZSB3cml0ZSBvcGVyYXRpb24gZmFpbGVkLg0KPiA+ID4g PiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1VJTlRODQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ ID4gK1NlcmlhbFBvcnRXcml0ZSAoDQo+ID4gPiA+ICsgIElOIFVJTlQ4ICAqQnVmZmVyLA0KPiA+ ID4gPiArICBJTiBVSU5UTiAgTnVtYmVyT2ZCeXRlcw0KPiA+ID4gPiArICApDQo+ID4gPiA+ICt7 DQo+ID4gPiA+ICsgIFNCSV9SRVQgIFJldDsNCj4gPiA+ID4gKyAgVUlOVE4gICAgSW5kZXg7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgUmV0ID0gU2JpQ2FsbCAoU0JJX0VYVF9CQVNFLCBTQklfRVhU X0JBU0VfUFJPQkVfRVhULCAxLA0KPiA+ID4gPiArIFNCSV9FWFRfREJDTik7ICBpZiAoKFRyYW5z bGF0ZUVycm9yIChSZXQuRXJyb3IpID09IEVGSV9TVUNDRVNTKSAmJg0KPiA+ID4gPiArICAgICAg KFJldC5WYWx1ZSAhPSAwKSkNCj4gPiA+ID4gKyAgew0KPiA+ID4gPiArICAgIFJldCA9IFNiaUNh bGwgKA0KPiA+ID4gPiArICAgICAgICAgICAgU0JJX0VYVF9EQkNOLA0KPiA+ID4gPiArICAgICAg ICAgICAgU0JJX0VYVF9EQkNOX1dSSVRFLA0KPiA+ID4gPiArICAgICAgICAgICAgMywNCj4gPiA+ ID4gKyAgICAgICAgICAgIE51bWJlck9mQnl0ZXMsDQo+ID4gPiA+ICsgICAgICAgICAgICAoKFVJ TlROKUJ1ZmZlciksDQo+ID4gPiA+ICsgICAgICAgICAgICAwDQo+ID4gPiA+ICsgICAgICAgICAg ICApOw0KPiA+ID4gPiArICAgIGlmIChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSAhPSBFRklf U1VDQ0VTUykgew0KPiA+ID4gPiArICAgICAgcmV0dXJuIDA7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgICAgcmV0dXJuIFJldC5WYWx1ZTsNCj4gPiA+ID4gKyAgfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIFJldCA9IFNiaUNhbGwgKFNCSV9FWFRfQkFTRSwgU0JJX0VYVF9C QVNFX1BST0JFX0VYVCwgMSwNCj4gPiA+ID4gKyBTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIp OyAgaWYgKChUcmFuc2xhdGVFcnJvciAoUmV0LkVycm9yKSA9PSBFRklfU1VDQ0VTUykgJiYNCj4g PiA+ID4gKyAgICAgIChSZXQuVmFsdWUgIT0gMCkpDQo+ID4gPiA+ICsgIHsNCj4gPiA+ID4gKyAg ICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZkJ5dGVzOyBJbmRleCsrKSB7DQo+ID4g PiA+ICsgICAgICBTYmlDYWxsIChTQklfRVhUXzBfMV9DT05TT0xFX1BVVENIQVIsIDAsIDEsIEJ1 ZmZlcltJbmRleF0pOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgIHJl dHVybiBJbmRleDsNCj4gPiA+ID4gKyAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIC8qDQo+ID4g PiA+ICsgICAqIE5laXRoZXIgREJDTiBvciBsZWdhY3kgZXh0ZW5zaW9uIHdlcmUgcHJlc2VudC4N Cj4gPiA+ID4gKyAgICovDQo+ID4gPiA+ICsgIHJldHVybiBOdW1iZXJPZkJ5dGVzOw0KPiA+ID4g PiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAgUmVhZCBkYXRhIGZyb20g c2VyaWFsIGRldmljZSBhbmQgc2F2ZSB0aGUgZGF0YXMgaW4gYnVmZmVyLg0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgIFJlYWRzIE51bWJlck9mQnl0ZXMgZGF0YSBieXRlcyBmcm9tIGEgc2VyaWFsIGRl dmljZSBpbnRvIHRoZQ0KPiA+ID4gPiArIGJ1ZmZlciBzcGVjaWZpZWQgYnkgQnVmZmVyLiBUaGUg bnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgaXMgcmV0dXJuZWQuDQo+ID4gPiA+ICsgIElm IHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuIE51bWJlck9mQnl0ZXMsIHRoZW4gdGhlIHJl c3Qgb3BlcmF0aW9uIGZhaWxlZC4NCj4gPiA+ID4gKyAgSWYgQnVmZmVyIGlzIE5VTEwsIHRoZW4g QVNTRVJUKCkuDQo+ID4gPiA+ICsgIElmIE51bWJlck9mQnl0ZXMgaXMgemVybywgdGhlbiByZXR1 cm4gMC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBAcGFyYW0gIEJ1ZmZlciAgICAgICAgICAgVGhl IHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBkYXRhIHJlYWQgZnJvbSB0 aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKyAgQHBhcmFtICBOdW1iZXJPZkJ5dGVzICAgIFRo ZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSByZWFkLg0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIEByZXR2YWwgMCAgICAgICAgICAgICAgICBSZWFkIGRhdGEgZmFpbGVkOyBObyBkYXRhIGlz IHRvIGJlIHJlYWQuDQo+ID4gPiA+ICsgIEByZXR2YWwgPjAgICAgICAgICAgICAgICBUaGUgYWN0 dWFsIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gc2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKw0K PiA+ID4gPiArKiovDQo+ID4gPiA+ICtVSU5UTg0KPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ICtT ZXJpYWxQb3J0UmVhZCAoDQo+ID4gPiA+ICsgIE9VVCBVSU5UOCAgKkJ1ZmZlciwNCj4gPiA+ID4g KyAgSU4gIFVJTlROICBOdW1iZXJPZkJ5dGVzDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4g PiA+ID4gKyAgcmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBQb2xscyBhIHNlcmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBk YXRhIHdhaXRpbmcgdG8gYmUgcmVhZC4NCj4gPiA+ID4gKw0KPiA+ID4gPiArICBQb2xscyBhIHNl cmlhbCBkZXZpY2UgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBkYXRhIHdhaXRpbmcgdG8gYmUgcmVh ZC4NCj4gPiA+ID4gKyAgSWYgdGhlcmUgaXMgZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0 aGUgc2VyaWFsIGRldmljZSwgdGhlbiBUUlVFIGlzIHJldHVybmVkLg0KPiA+ID4gPiArICBJZiB0 aGVyZSBpcyBubyBkYXRhIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJpYWwgZGV2aWNl LCB0aGVuIEZBTFNFIGlzIHJldHVybmVkLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwg VFJVRSAgICAgICAgICAgICBEYXRhIGlzIHdhaXRpbmcgdG8gYmUgcmVhZCBmcm9tIHRoZSBzZXJp YWwgZGV2aWNlLg0KPiA+ID4gPiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgICAgVGhlcmUgaXMg bm8gZGF0YSB3YWl0aW5nIHRvIGJlIHJlYWQgZnJvbSB0aGUgc2VyaWFsIGRldmljZS4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtCT09MRUFODQo+ID4gPiA+ICtFRklBUEkNCj4g PiA+ID4gK1NlcmlhbFBvcnRQb2xsICgNCj4gPiA+ID4gKyAgVk9JRA0KPiA+ID4gPiArICApDQo+ ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHJldHVybiBGQUxTRTsNCj4gPiA+ID4gK30NCj4gPiA+ID4g Kw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgIFNldHMgdGhlIGNvbnRyb2wgYml0cyBvbiBhIHNl cmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHBhcmFtIENvbnRyb2wgICAgICAg ICAgICAgICAgU2V0cyB0aGUgYml0cyBvZiBDb250cm9sIHRoYXQgYXJlIHNldHRhYmxlLg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgIFRoZSBuZXcg Y29udHJvbCBiaXRzIHdlcmUgc2V0IG9uIHRoZSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gPiArICBA cmV0dmFsIFJFVFVSTl9VTlNVUFBPUlRFRCAgICBUaGUgc2VyaWFsIGRldmljZSBkb2VzIG5vdCBz dXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0Vf RVJST1IgICBUaGUgc2VyaWFsIGRldmljZSBpcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5Lg0K PiA+ID4gPiArDQo+ID4gPiA+ICsqKi8NCj4gPiA+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiA+ID4g K0VGSUFQSQ0KPiA+ID4gPiArU2VyaWFsUG9ydFNldENvbnRyb2wgKA0KPiA+ID4gPiArICBJTiBV SU5UMzIgIENvbnRyb2wNCj4gPiA+ID4gKyAgKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICByZXR1 cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0K PiA+ID4gPiArICBSZXRyaWV2ZSB0aGUgc3RhdHVzIG9mIHRoZSBjb250cm9sIGJpdHMgb24gYSBz ZXJpYWwgZGV2aWNlLg0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIEBwYXJhbSBDb250cm9sICAgICAg ICAgICAgICAgIEEgcG9pbnRlciB0byByZXR1cm4gdGhlIGN1cnJlbnQgY29udHJvbCBzaWduYWxz IGZyb20gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgQHJldHZhbCBS RVRVUk5fU1VDQ0VTUyAgICAgICAgVGhlIGNvbnRyb2wgYml0cyB3ZXJlIHJlYWQgZnJvbSB0aGUg c2VyaWFsIGRldmljZS4NCj4gPiA+ID4gKyAgQHJldHZhbCBSRVRVUk5fVU5TVVBQT1JURUQgICAg VGhlIHNlcmlhbCBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbi4NCj4gPiA+ ID4gKyAgQHJldHZhbCBSRVRVUk5fREVWSUNFX0VSUk9SICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMg bm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4g PiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiA+ICtFRklBUEkNCj4gPiA+ID4gK1NlcmlhbFBvcnRH ZXRDb250cm9sICgNCj4gPiA+ID4gKyAgT1VUIFVJTlQzMiAgKkNvbnRyb2wNCj4gPiA+ID4gKyAg KQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICAqQ29udHJvbCA9IDA7DQo+ID4gPiA+ICsgIHJldHVy biBSRVRVUk5fU1VDQ0VTUzsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ ID4gPiA+ICsgIFNldHMgdGhlIGJhdWQgcmF0ZSwgcmVjZWl2ZSBGSUZPIGRlcHRoLCB0cmFuc21p dC9yZWNlaWNlIHRpbWUNCj4gPiA+ID4gK291dCwgcGFyaXR5LA0KPiA+ID4gPiArICBkYXRhIGJp dHMsIGFuZCBzdG9wIGJpdHMgb24gYSBzZXJpYWwgZGV2aWNlLg0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgIEBwYXJhbSBCYXVkUmF0ZSAgICAgICAgICAgVGhlIHJlcXVlc3RlZCBiYXVkIHJhdGUuIEEg QmF1ZFJhdGUgdmFsdWUgb2YgMCB3aWxsIHVzZSB0aGUNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXZpY2UncyBkZWZhdWx0IGludGVyZmFjZSBzcGVlZC4NCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxs eSBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbSBSZXZlaXZlRmlmb0RlcHRoICAgVGhlIHJlcXVlc3Rl ZCBkZXB0aCBvZiB0aGUgRklGTyBvbiB0aGUgcmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbCBpbnRlcmZhY2UuIEEgUmVjZWl2ZUZp Zm9EZXB0aCB2YWx1ZSBvZiAwIHdpbGwgdXNlDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlIGRldmljZSdzIGRlZmF1bHQgRklGTyBkZXB0aC4NCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQu DQo+ID4gPiA+ICsgIEBwYXJhbSBUaW1lb3V0ICAgICAgICAgICAgVGhlIHJlcXVlc3RlZCB0aW1l IG91dCBmb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGluIG1pY3Jvc2Vjb25kcy4NCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRpbWVvdXQgYXBwbGllcyB0byBib3RoIHRo ZSB0cmFuc21pdCBhbmQgcmVjZWl2ZSBzaWRlIG9mIHRoZQ0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludGVyZmFjZS4gQSBUaW1lb3V0IHZhbHVlIG9mIDAgd2lsbCB1c2Ug dGhlIGRldmljZSdzIGRlZmF1bHQgdGltZQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCB2YWx1ZS4NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBP biBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1YWxseSBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbSBQYXJp dHkgICAgICAgICAgICAgVGhlIHR5cGUgb2YgcGFyaXR5IHRvIHVzZSBvbiB0aGlzIHNlcmlhbCBk ZXZpY2UuIEEgUGFyaXR5IHZhbHVlIG9mDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGVmYXVsdFBhcml0eSB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBwYXJpdHkg dmFsdWUuDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0 aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ID4gPiArICBAcGFyYW0gRGF0YUJpdHMgICAgICAg ICAgIFRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRvIHVzZSBvbiB0aGUgc2VyaWFsIGRldmljZS4g QSBEYXRhQml0cw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhdWxlIG9m IDAgd2lsbCB1c2UgdGhlIGRldmljZSdzIGRlZmF1bHQgZGF0YSBiaXQgc2V0dGluZy4NCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZSBhY3R1 YWxseSBzZXQuDQo+ID4gPiA+ICsgIEBwYXJhbSBTdG9wQml0cyAgICAgICAgICAgVGhlIG51bWJl ciBvZiBzdG9wIGJpdHMgdG8gdXNlIG9uIHRoaXMgc2VyaWFsIGRldmljZS4gQSBTdG9wQml0cw0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIERlZmF1bHRTdG9w Qml0cyB3aWxsIHVzZSB0aGUgZGV2aWNlJ3MgZGVmYXVsdCBudW1iZXIgb2YNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wIGJpdHMuDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT24gb3V0cHV0LCB0aGUgdmFsdWUgYWN0dWFsbHkgc2V0Lg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsgIEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgICAgICAgICAgICBUaGUg bmV3IGF0dHJpYnV0ZXMgd2VyZSBzZXQgb24gdGhlIHNlcmlhbCBkZXZpY2UuDQo+ID4gPiA+ICsg IEByZXR2YWwgUkVUVVJOX1VOU1VQUE9SVEVEICAgICAgICBUaGUgc2VyaWFsIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLg0KPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiAgT25lIG9yIG1vcmUgb2YgdGhlIGF0dHJpYnV0ZXMgaGFzIGFuIHVu c3VwcG9ydGVkIHZhbHVlLg0KPiA+ID4gPiArICBAcmV0dmFsIFJFVFVSTl9ERVZJQ0VfRVJST1Ig ICAgICAgVGhlIHNlcmlhbCBkZXZpY2UgaXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4NCj4g PiA+ID4gKw0KPiA+ID4gPiArKiovDQo+ID4gPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gPiA+ICtF RklBUEkNCj4gPiA+ID4gK1NlcmlhbFBvcnRTZXRBdHRyaWJ1dGVzICgNCj4gPiA+ID4gKyAgSU4g T1VUIFVJTlQ2NCAgICAgICAgICAgICAgKkJhdWRSYXRlLA0KPiA+ID4gPiArICBJTiBPVVQgVUlO VDMyICAgICAgICAgICAgICAqUmVjZWl2ZUZpZm9EZXB0aCwNCj4gPiA+ID4gKyAgSU4gT1VUIFVJ TlQzMiAgICAgICAgICAgICAgKlRpbWVvdXQsDQo+ID4gPiA+ICsgIElOIE9VVCBFRklfUEFSSVRZ X1RZUEUgICAgICpQYXJpdHksDQo+ID4gPiA+ICsgIElOIE9VVCBVSU5UOCAgICAgICAgICAgICAg ICpEYXRhQml0cywNCj4gPiA+ID4gKyAgSU4gT1VUIEVGSV9TVE9QX0JJVFNfVFlQRSAgKlN0b3BC aXRzDQo+ID4gPiA+ICsgICkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgcmV0dXJuIFJFVFVSTl9T VUNDRVNTOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+IGEvTWRlUGtn L0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlcmlh bA0KPiA+ID4gPiBQbw0KPiA+ID4gPiBydA0KPiA+ID4gPiBMaWJTYmkudW5pDQo+ID4gPiA+IGIv TWRlUGtnL0xpYnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNj VlNlcmlhbA0KPiA+ID4gPiBQbw0KPiA+ID4gPiBydA0KPiA+ID4gPiBMaWJTYmkudW5pDQo+ID4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2Iy MmNhYTVhMDkwDQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvTWRlUGtnL0xp YnJhcnkvUHJlUGlEeGVSaXNjVlNlcmlhbFBvcnRMaWJTYmkvUHJlUGlEeGVSaXNjVlNlDQo+ID4g PiA+ICsrKyByaQ0KPiA+ID4gPiArKysgYWwNCj4gPiA+ID4gKysrIFBvDQo+ID4gPiA+ICsrKyBy dExpYlNiaS51bmkNCj4gPiA+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ID4gPiArLy8gLyoqIEBm aWxlDQo+ID4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29s ZS4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBi eSBTQkkgY29uc29sZS4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+ICsvLyBDb3B5cmlnaHQgKGMpIDIw MjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZlZC48QlI+ IC8vIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g PiA+ICsvLyAvLyAqKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjc3RyaW5nIFNU Ul9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJTZXJpYWwgUG9y dCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZSINCj4gPiA+ID4gKw0KPiA+ID4gPiArI3N0 cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiU2Vy aWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuIg0KPiA+ID4gPiArDQo+ID4g PiA+IGRpZmYgLS1naXQNCj4gPiA+ID4gYS9NZGVQa2cvTGlicmFyeS9TZWNQZWlSaXNjVlNlcmlh bFBvcnRMaWJTYmkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0DQo+ID4gPiA+IExpDQo+ID4gPiA+IGJT DQo+ID4gPiA+IGJpLnVuaQ0KPiA+ID4gPiBiL01kZVBrZy9MaWJyYXJ5L1NlY1BlaVJpc2NWU2Vy aWFsUG9ydExpYlNiaS9TZWNQZWlSaXNjVlNlcmlhbFBvcnQNCj4gPiA+ID4gTGkNCj4gPiA+ID4g YlMNCj4gPiA+ID4gYmkudW5pDQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uN2IyMmNhYTVhMDkwDQo+ID4gPiA+IC0tLSAvZGV2L251bGwN Cj4gPiA+ID4gKysrIGIvTWRlUGtnL0xpYnJhcnkvU2VjUGVpUmlzY1ZTZXJpYWxQb3J0TGliU2Jp L1NlY1BlaVJpc2NWU2VyaWFsDQo+ID4gPiA+ICsrKyBQbw0KPiA+ID4gPiArKysgcnQNCj4gPiA+ ID4gKysrIExpYlNiaS51bmkNCj4gPiA+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ID4gPiArLy8g LyoqIEBmaWxlDQo+ID4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkg Y29uc29sZS4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+ICsvLyBTZXJpYWwgUG9ydCBMaWJyYXJ5IGJh Y2tlZCBieSBTQkkgY29uc29sZS4NCj4gPiA+ID4gKy8vDQo+ID4gPiA+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMjMsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiA+ICtyZXNlcnZl ZC48QlI+IC8vIC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gPiA+ICsvLyAvLyAqKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjc3Ry aW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJTZXJp YWwgUG9ydCBMaWJyYXJ5IGJhY2tlZCBieSBTQkkgY29uc29sZSINCj4gPiA+ID4gKw0KPiA+ID4g PiArI3N0cmluZyBTVFJfTU9EVUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAiU2VyaWFsIFBvcnQgTGlicmFyeSBiYWNrZWQgYnkgU0JJIGNvbnNvbGUuIg0KPiA+ID4gPiAr DQo+ID4gPiA+IC0tDQo+ID4gPiA+IDIuMjUuMQ0KDQo=