From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web08.43343.1658250843301706479 for ; Tue, 19 Jul 2022 10:14:03 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=SQuv9/z2; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: chasel.chiu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658250843; x=1689786843; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=akvr5d5q0UrAxr0aD7RxP6p9BnKOEZBtIzFVDZc5m08=; b=SQuv9/z2STJ0uNcB2XLeqCAe6YuPzRjmWyC+AosDTI37GotF2fnT/vql CcE1NCPwuZypED8YJrdZl44DHMdAowMtvTKHyYKS4/ggCvsJ08E3yIGjB BA0E6kMFg86QCO2Qv6+K7Ip7IUIk0V9AlNAtGgT54jHpqyx/w41BR86ll pmCL2gTiUS4HzQso0cc0KB6rqiWq1GJFXq9BV4m1nTz82rMTDfZ4STSp4 Sv6EGZQobud8gLvpfR+yEtTaesXwQD9sNlkkkQa8rbc12pPANFdg+t7ou +WgtJPu9FLb+dzeGUdh0qNNPRKFCPEEvImWtnX+0YR9ogkbHxoTnRYuJl g==; X-IronPort-AV: E=McAfee;i="6400,9594,10413"; a="286559731" X-IronPort-AV: E=Sophos;i="5.92,284,1650956400"; d="scan'208";a="286559731" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jul 2022 10:14:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,284,1650956400"; d="scan'208";a="572934434" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga006.jf.intel.com with ESMTP; 19 Jul 2022 10:13:57 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28; Tue, 19 Jul 2022 10:13:56 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 19 Jul 2022 10:13:56 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.28 via Frontend Transport; Tue, 19 Jul 2022 10:13:56 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.175) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Tue, 19 Jul 2022 10:13:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MTKWUPZ+80ssYduetDRoty9xhlH7I+IrkjNe60yFpNPMrE8I1ag0fbv2sLphBw3Cd6BzkPdxcST3bIxohVtLbZJEH9m3mJ25heZtGXV4pA4ECSW+qMsexbVDd56Usr28In6VpBXtAnIl3XQrKVt+igHisclBEKAW8efbAKnod9GXgHpTptwgRUyib+iMyoXDzJ7/AOKMqA2Ni22lnqsIrS+jjv42G4OgdPQEwflTyPILhgY/TExkJkOi7BklWIexEKVnMCoHnFHnueN1PHH0qUs4S430oej43x2nwxQ4ILHWMziS0ALokSr/W29nweAEy0UzQL4yTgtcjF+wuzXTYA== 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=akvr5d5q0UrAxr0aD7RxP6p9BnKOEZBtIzFVDZc5m08=; b=AY4yScK1CLgziU/GTWpkHLur21ZtlwpWFKcfW1jH8rWy8I55Zcs+O/P0dKyk9fWCPGqMQ7lLhpAHucvea/01qOP/ujZaZ3k5mWB1A4s4OEQ4yjcg2q98cxNAt4M1rtlUave4VOEeSvAV5F4Vpas1IZ8tT4obDtf0wCpIyJPp1v3XNky/ld5Q7RUt0mCZXyhQAx+gcyPEwMVH2XRbD3lBN65RJbYHo/8e5GRPqM2Cdwb5TQOJIxglMUsMXVpe0F+hLexAWqTGYt4JH1RwqIt5LND7YgdFgHuReHdkVsOF3Z2sPLwPECVPtHQtnduTron7dTBViXBttLMJasN3ADO0sQ== 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 BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by SN6PR11MB3070.namprd11.prod.outlook.com (2603:10b6:805:d4::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.21; Tue, 19 Jul 2022 17:13:52 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::a113:c892:d94:dd10]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::a113:c892:d94:dd10%8]) with mapi id 15.20.5438.024; Tue, 19 Jul 2022 17:13:52 +0000 From: "Chiu, Chasel" To: "Desimone, Nathaniel L" , Pedro Falcato , edk2-devel-groups-io CC: "Zhang, Hongbin1" , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH] IntelFsp2Pkg/FspSecCore: Add FSP-I API for SMM support. Thread-Topic: [edk2-devel] [PATCH] IntelFsp2Pkg/FspSecCore: Add FSP-I API for SMM support. Thread-Index: AQHYl7z7qT3e13orOkGOu2p6OHMEYq2ErpQAgAAChwCAAB8EgIABJdwg Date: Tue, 19 Jul 2022 17:13:52 +0000 Message-ID: References: <20220714200428.1989-1-chasel.chiu@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f91e92e9-90f6-4612-3615-08da69aa0dd4 x-ms-traffictypediagnostic: SN6PR11MB3070:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BM8LMHQ5ugyVBYoLJCLQjwTB/TYii0myXX8hfR5G4iTE+LzkTkHfMqmENObWwT6mvnp+OGagdDl2bZkrt94nnCiOMEUp8vJUQX/PQaYIigTs9F9h6o4icVBbBPXbQ9U536Bn3lVXVqkQT6SNvc9DzitJMQ2bXnf5NURbs+Xbw7nJr4EJW0YXiV8IgarbQ3/rOPtmcqonNRu69Y6LwYQUP+EWmJO6XAd70FyxaFS0hUbeyIjTylWow7lvr4Rd/tx0sZ7ayoSWOQsxYMYWhc7mbZzq+OMj/PZHZ0M4UeQxjSPRFiFDlF9adTmg4xFyP+ULSYeHUoLL+lBDISk77MhkJ1XRoKC8p8jjOfCo2OgqX2kYCUHgnU/APbO/JiEtEcep0cfr21Ll1ETAkrbAKnIUpcBh0CTaPqhrWXJVkNH/L3H5V/a4NUZko7dvw8oplMOm2CMeL2bREt3GjXZpZS0EdQ+xvVgTn7tfOwMNNTmw1UhOMMRPczOyfRmWwnMdc5hbL35qn++xCIwq05Z2l23xfoBEKnkrj1GW0B10AXqj5G3jopaOq7Ils+kEwxo6etZ6fsisqk+G13y9dvJjlsYjfMjEGyWVKMsx+ykDpGuqOK8zZhp0G4NHrE4efW26Rm02HC99fDMEmi4yIe5hZHMwgGLaCoa+2/LBQBGx8IbFju/GZfHU4Cc+EFrdPhZuZmkshX0FW4GIhFntWuSUusZb/NsyPl5IaoL7YK1iB9+tJwYLyzG33JE6VVys/5t5rZjyNy5zIpEj+7WN+HlPytwCWEF9Lq8gjneOlH8ZIEWH+7C3SSOC1LV21JgBnRDji+CaQh+gWzq0OyNZ/xthsmSpTFcqK/4mmUGCh0kL9Vfa3Y38Pg6hFN1Qd6fW6PFJcI4Z x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(396003)(136003)(366004)(376002)(346002)(39860400002)(4326008)(66946007)(55016003)(54906003)(76116006)(52536014)(316002)(66556008)(64756008)(8936002)(66476007)(5660300002)(2906002)(83380400001)(8676002)(66446008)(122000001)(107886003)(82960400001)(38070700005)(38100700002)(86362001)(41300700001)(33656002)(6506007)(53546011)(966005)(186003)(9686003)(26005)(478600001)(71200400001)(19627235002)(30864003)(7696005)(110136005)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c1orSVJMUWttakZHb1RrYXplbkxXcTBLMHlqdkZrYkZ4R1pwbk5vSloxQjVr?= =?utf-8?B?bnA3a09kRWErcFl4dVJBTzJ0SnBCYk9pNzRrblZieUxuSk0zbEhFNDRRQ0Mv?= =?utf-8?B?U0I5NG1BcWRxaWcvVE95anBDQWVrREpiU1ZIUjZVbEJaa0t0TzQzeFQrdVF4?= =?utf-8?B?VmV4czlId08yemwzaFkrSjdpdWE0NUVneWdXVGQxd3luUnNHT1gwWVk1bUNj?= =?utf-8?B?WURvRDdkWmRwY3hDQlRJYVVWeUp6ZS9EOGk4QkMydVVOS05aRy9ZUzhvZ0J1?= =?utf-8?B?SnBEM3NwSTVWanN3OUNoWGpHKzBwMXpIbzBzQ2d5ZHZCbDVmYzlYUUhPWEJl?= =?utf-8?B?V01XTkRvQmcwVnFOSTNQaXZDYUpmc04rdFZGRDNva2pZUEdJVjl1TlNzREpS?= =?utf-8?B?Ti9jRVZlRE1ONU0yYmhIcDh6L3lJKzIvQ01oSmh4TDIxS1R6NjI5QStoemZy?= =?utf-8?B?OXhWVTlabm9xa25TdVVwSUVRVk40bXJ3TDh0R0xZeDRKcGNiZ0VwN0NXYzVr?= =?utf-8?B?aVV4T2dBQytoemIvNXpRREtwemxQWmx2ZGl4c2NaZ1c5aU5aTmFCSjZMcGZa?= =?utf-8?B?SnpZNUIrVjZMUGJXZUpSOHRoRXZ3NjZKczdoOVZVRTJTMHY3L3YrNnZwSVRj?= =?utf-8?B?cTZVQmNRRk1ZcGZoNGZVZ3p0dHdoMWhSZ3YxTTI5Z2N0MzUxY29FYVBYTEpn?= =?utf-8?B?ZXE2S2tzT3BqTjN3ZkY2WXVEdDd6L05ub0xWd2FvSjl1aDJkV2pnRHcrbXRJ?= =?utf-8?B?WHdLemp0NnZpWExleXhhZlJTWXJRWWdGVzFsV0NRK2VtdFJLQ0Q0OFEvRWI5?= =?utf-8?B?aUgxRnE5K3ZQRGZRQU5LbG5IanJrK2c5WWRDMHg0b3B5bi9zSGNRMzFwcFNa?= =?utf-8?B?SzVaYllsSHNRN2F3UGZDZHZ5T0k0K1pzcG9aQ0NPVjNCdG10MG1mWUcvMEww?= =?utf-8?B?bWNDSHNXVm4rajA0Q0ozZERPby9Pem8wUkwvbWdURzIrSkdHcVZSZHhpWFQ4?= =?utf-8?B?SlVRcjJCMlFkUkpFYWdXcHBNbHBUZzNlZWFnNU5ublFmcUM5UE1heDdqVDF6?= =?utf-8?B?Y0VIWE1HN09MOThaOXdDOXFHZDdZckJBd3BNajlSN1FvWU9nTm1HS3pjWW5r?= =?utf-8?B?em1yMW5jZng3OGhLb2ZpT1dlM2RzMTJvV2FKcnFsTnBnVDhyMDdYbU5JVzBP?= =?utf-8?B?TEFFNjAwaks2cTlGYm5LMDN4VndlV29Zc0l0d0c2YlIvZWVjbEYwZmJsSzJJ?= =?utf-8?B?NkVMc3pHc3RabE81L1RIcFRsWHoyTTRMSUxXYnhWV3h3ME9ZWXVmdzVxR0xt?= =?utf-8?B?WnhWZytsdk5lUGpuVDZodS9FeDFudlhVcmdTZ3BuVXNoMEFERkQxSkc4UEV3?= =?utf-8?B?ZFdUcHltMStEQ0V1SmdVeGJjcWQ4VERvZmhKaFVFSzdtZVd4TFZTVG5oTkJY?= =?utf-8?B?OGQ0MHltaTVCT1Q1TmFOZ2pOYndaa21wUVo5dk5RVmhXZHYxeUZ5dm5HVDE1?= =?utf-8?B?QXlNaVgzRzc1VzIraUtQVHduU0x5WnE4ZVY4RGtNaCs4L2tFeS9FVHFJVlM3?= =?utf-8?B?dVdDMG9mVENVU3REMHRvR0JZVXdTMzNMQ3FCQllKaVNiY2dreVBjNjVmMk1q?= =?utf-8?B?Y2V5S1YzamFMbWpnS1ZKOThxd0pxVnplWm1NQ25naGluNUhac3pGTmFPN0FY?= =?utf-8?B?NThNdFRvQmZubHVXWXV4WXVIMDQxakl4Q0JuNFQ4Vm9VdG5JdHJNNU1vTjB4?= =?utf-8?B?TTJFSG16bFQ3MjloZnZxbnFjNkxFQ0hVTW9TTnozRVk2bVZ6TUNuQlVwRC9Q?= =?utf-8?B?Tk5IdGFqUkJJOUF5VE9YZGhBbXd5aTVQMU54bHROVUFjeUdoeDZYL1pETXdo?= =?utf-8?B?MzV0OXBXOWxQVVRFWkRlRk4zcUkrQ2hrOVpkSXI4VFpxck1TVnQySXMydTRU?= =?utf-8?B?cktpQmd6MzdPLzhHN21oaGdsd1Jyd2RGVFdtOVViZThQUG5YdDQyZUJheWhr?= =?utf-8?B?Y2d2cTNmUWUyQldaMDRzVEtESU8rZkxmbnRqcGZvQXNtcEhDLzM1OHJwWWZU?= =?utf-8?B?SXphaTJkclg5OE5obEZOVm1RN2RFY3JTUEtieDkwdmJ0Wk8zZDNRTVdlYjNn?= =?utf-8?Q?ijtQ4sJgiJO2sPuSmSwXya3fa?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f91e92e9-90f6-4612-3615-08da69aa0dd4 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jul 2022 17:13:52.3402 (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: OPXgFKiAU8HFSKJcHWJDwotPhRDpMZ3oPrAobCO1xbHYGJMe+745EK00fyvce0vzFBiI9hIiy0JIVQYsN9lmyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB3070 Return-Path: chasel.chiu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpIaSwNCg0KSSBoYXZlIHNlbnQgVjIgdG8gYXNzaWduIEFwaUlkeCB0byBSQVggaW4gWDY0IGNh c2UgdG8gYXZvaWQgY29uZnVzaW9uLg0KUGxlYXNlIGhlbHAgdG8gcmV2aWV3IGFnYWluLA0KDQpU aGFua3MsDQpDaGFzZWwNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IERlc2ltb25lLCBOYXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0K PiBTZW50OiBNb25kYXksIEp1bHkgMTgsIDIwMjIgNDo0MSBQTQ0KPiBUbzogUGVkcm8gRmFsY2F0 byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+OyBlZGsyLWRldmVsLWdyb3Vwcy1pbw0KPiA8ZGV2 ZWxAZWRrMi5ncm91cHMuaW8+DQo+IENjOiBDaGl1LCBDaGFzZWwgPGNoYXNlbC5jaGl1QGludGVs LmNvbT47IFpoYW5nLCBIb25nYmluMQ0KPiA8aG9uZ2JpbjEuemhhbmdAaW50ZWwuY29tPjsgWmVu ZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVs XSBbUEFUQ0hdIEludGVsRnNwMlBrZy9Gc3BTZWNDb3JlOiBBZGQgRlNQLUkgQVBJIGZvcg0KPiBT TU0gc3VwcG9ydC4NCj4gDQo+IEhpIFBlZHJvLA0KPiANCj4gV293IHlvdSBhcmUgdG90YWxseSBy aWdodC4uLiB0aGF0IGlzIGNyYXp5ISBUaGUgZXhhY3Qgb3Bwb3NpdGUgb2YgdGhlIHdheSAzMi1i aXQNCj4gbW9kZSB3b3JrcyENCj4gDQo+IEdvb2QgY2F0Y2ggdGhhbmsgeW91IQ0KPiANCj4gUGxl YXNlIGNvbnNpZGVyIGJ5IGNvZGUgcmV2aWV3IGZlZWRiYWNrIGRvd25ncmFkZWQgZnJvbSBhIGJ1 ZyB0byBhDQo+IHJlY29tbWVuZGF0aW9uIHRvIHVzZSByYXggaW5zdGVhZCBvZiBlYXggdG8gYXZv aWQgY29uZnVzaW9uIPCfmIouDQo+IA0KPiBUaGFua3MsDQo+IE5hdGUNCj4gDQo+IEZyb206IFBl ZHJvIEZhbGNhdG8gPHBlZHJvLmZhbGNhdG9AZ21haWwuY29tPg0KPiBTZW50OiBNb25kYXksIEp1 bHkgMTgsIDIwMjIgMjo1MCBQTQ0KPiBUbzogZWRrMi1kZXZlbC1ncm91cHMtaW8gPGRldmVsQGVk azIuZ3JvdXBzLmlvPjsgRGVzaW1vbmUsIE5hdGhhbmllbCBMDQo+IDxuYXRoYW5pZWwubC5kZXNp bW9uZUBpbnRlbC5jb20+DQo+IENjOiBDaGl1LCBDaGFzZWwgPGNoYXNlbC5jaGl1QGludGVsLmNv bT47IFpoYW5nLCBIb25nYmluMQ0KPiA8aG9uZ2JpbjEuemhhbmdAaW50ZWwuY29tPjsgWmVuZywg U3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBb UEFUQ0hdIEludGVsRnNwMlBrZy9Gc3BTZWNDb3JlOiBBZGQgRlNQLUkgQVBJIGZvcg0KPiBTTU0g c3VwcG9ydC4NCj4gDQo+IA0KPiANCj4gT24gTW9uLCBKdWwgMTgsIDIwMjIgYXQgMTA6NDAgUE0g TmF0ZSBEZVNpbW9uZQ0KPiA8bWFpbHRvOm5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNvbT4g d3JvdGU6DQo+IEhpIENoYXNlbCwNCj4gDQo+IFBsZWFzZSBzZWUgY29tbWVudHMgaW5saW5lLiBI ZXJlIGlzIGEgc3VtbWFyeSBvZiBteSBmZWVkYmFjazoNCj4gDQo+ICMxKSBJbnRlbEZzcDJQa2cv RnNwU2VjQ29yZS9YNjQvRnNwQXBpRW50cnlJLm5hc20gLSBsaW5lIDM0IC0gQnVnOiBlYXggc2hv dWxkDQo+IGJlIHJheA0KPiAjMikgSW50ZWxGc3AyUGtnL0luY2x1ZGUvRnNwRWFzL0ZzcEFwaS5o IC0gVmFyaW91cyB1bm5lY2Vzc2FyeSB3aGl0ZXNwYWNlDQo+IGNoYW5nZXMgdGhhdCBtYWtlIHRo ZSBmaWxlIGxvb2sgd29yc2UgdGhhbiBiZWZvcmUuDQo+ICMzKSBJbnRlbEZzcDJQa2cvSW5jbHVk ZS9HdWlkL0ZzcEhlYWRlckZpbGUuaCAtIFdoeSBpbmRlbnQgdGhlICNwcmFnbWEgbGluZXM/DQo+ IA0KPiBUaGFua3MsDQo+IE5hdGUNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiBGcm9tOiBDaGl1LCBDaGFzZWwgPG1haWx0bzpjaGFzZWwuY2hpdUBpbnRlbC5jb20+DQo+ ID4gU2VudDogVGh1cnNkYXksIEp1bHkgMTQsIDIwMjIgMTowNCBQTQ0KPiA+IFRvOiBtYWlsdG86 ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogWmhhbmcsIEhvbmdiaW4xIDxtYWlsdG86aG9u Z2JpbjEuemhhbmdAaW50ZWwuY29tPjsgRGVzaW1vbmUsDQo+IE5hdGhhbmllbCBMDQo+ID4gPG1h aWx0bzpuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+OyBaZW5nLCBTdGFyDQo+IDxtYWls dG86c3Rhci56ZW5nQGludGVsLmNvbT47IENoaXUsDQo+ID4gQ2hhc2VsIDxtYWlsdG86Y2hhc2Vs LmNoaXVAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSF0gSW50ZWxGc3AyUGtnL0ZzcFNl Y0NvcmU6IEFkZCBGU1AtSSBBUEkgZm9yIFNNTSBzdXBwb3J0Lg0KPiA+DQo+ID4gRnJvbTogSG9u Z2JpbjEgWmhhbmcgPG1haWx0bzpob25nYmluMS56aGFuZ0BpbnRlbC5jb20+DQo+ID4NCj4gPiBS RUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk5Mw0K PiA+IEFkZCBGU1AtSSBBUEkgZW50cnkgcG9pbnQgZm9yIFNNTSBzdXBwb3J0Lg0KPiA+DQo+ID4g Q2M6IE5hdGUgRGVTaW1vbmUgPG1haWx0bzpuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+ DQo+ID4gQ2M6IFN0YXIgWmVuZyA8bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4gU2ln bmVkLW9mZi1ieTogQ2hhc2VsIENoaXUgPG1haWx0bzpjaGFzZWwuY2hpdUBpbnRlbC5jb20+DQo+ ID4gU2lnbmVkLW9mZi1ieTogSG9uZ2JpbjEgWmhhbmcgPG1haWx0bzpob25nYmluMS56aGFuZ0Bp bnRlbC5jb20+DQo+ID4gLS0tDQo+ID7CoCBJbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9TZWNGc3BB cGlDaGsuY8KgIMKgIMKgIMKgIMKgfCAxMyArKysrKysrKysrKysrDQo+ID7CoCBJbnRlbEZzcDJQ a2cvRnNwU2VjQ29yZS9Gc3BTZWNDb3JlSS5pbmbCoCDCoCDCoCDCoCB8IDU0DQo+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+wqAgSW50 ZWxGc3AyUGtnL0ZzcFNlY0NvcmUvSWEzMi9Gc3BBcGlFbnRyeUkubmFzbSB8IDQ0DQo+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID7CoCBJbnRlbEZzcDJQ a2cvRnNwU2VjQ29yZS9YNjQvRnNwQXBpRW50cnlJLm5hc23CoCB8IDQ0DQo+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID7CoCBJbnRlbEZzcDJQa2cvSW5j bHVkZS9Gc3BFYXMvRnNwQXBpLmjCoCDCoCDCoCDCoCDCoCDCoHwgNTcNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID7CoCBJbnRl bEZzcDJQa2cvSW5jbHVkZS9Gc3BHbG9iYWxEYXRhLmjCoCDCoCDCoCDCoCDCoCDCoHwgNTMNCj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g PsKgIEludGVsRnNwMlBrZy9JbmNsdWRlL0d1aWQvRnNwSGVhZGVyRmlsZS5owqAgwqAgwqAgfCAy MiArKysrKysrKysrKysrKystLS0tLS0tDQo+ID7CoCBJbnRlbEZzcDJQa2cvSW50ZWxGc3AyUGtn LmRzY8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHzCoCAxICsNCj4gPsKgIEludGVsRnNwMlBr Zy9Ub29scy9HZW5DZmdPcHQucHnCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IDI2ICsrKysrKysr KysrKysrKystLS0tLS0tLS0tDQo+ID7CoCBJbnRlbEZzcDJQa2cvVG9vbHMvU3BsaXRGc3BCaW4u cHnCoCDCoCDCoCDCoCDCoCDCoCDCoCB8wqAgNiArKystLS0NCj4gPsKgIDEwIGZpbGVzIGNoYW5n ZWQsIDI1NiBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1n aXQgYS9JbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9TZWNGc3BBcGlDaGsuYw0KPiBiL0ludGVsRnNw MlBrZy9Gc3BTZWNDb3JlL1NlY0ZzcEFwaUNoay5jDQo+ID4gaW5kZXggZTIyYTg4Y2M4NC4uMzVk MjIzYTQwNCAxMDA2NDQNCj4gPiAtLS0gYS9JbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9TZWNGc3BB cGlDaGsuYw0KPiA+ICsrKyBiL0ludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL1NlY0ZzcEFwaUNoay5j DQo+ID4gQEAgLTcxLDYgKzcxLDE5IEBAIEZzcEFwaUNhbGxpbmdDaGVjayAoDQo+ID7CoCDCoCDC oCDCoCDCoCBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID7CoCDCoCDCoCDCoCB9 DQo+ID7CoCDCoCDCoCB9DQo+ID4gK8KgIH0gZWxzZSBpZiAoQXBpSWR4ID09IEZzcFNtbUluaXRB cGlJbmRleCkgew0KPiA+ICvCoCDCoCAvLw0KPiA+ICvCoCDCoCAvLyBGc3BTbW1Jbml0QXBpSW5k ZXggY2hlY2sNCj4gPiArwqAgwqAgLy8NCj4gPiArwqAgwqAgaWYgKChGc3BEYXRhID09IE5VTEwp IHx8ICgoVUlOVE4pRnNwRGF0YSA9PSBNQVhfQUREUkVTUykgfHwNCj4gKChVSU5UTilGc3BEYXRh ID09IE1BWF9VSU5UMzIpKSB7DQo+ID4gK8KgIMKgIMKgIFN0YXR1cyA9IEVGSV9VTlNVUFBPUlRF RDsNCj4gPiArwqAgwqAgfSBlbHNlIHsNCj4gPiArwqAgwqAgwqAgaWYgKEZzcERhdGEtPlNpZ25h dHVyZSAhPSBGU1BfR0xPQkFMX0RBVEFfU0lHTkFUVVJFKSB7DQo+ID4gK8KgIMKgIMKgIMKgIFN0 YXR1cyA9IEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArwqAgwqAgwqAgfSBlbHNlIGlmIChFRklfRVJS T1IgKEZzcFVwZFNpZ25hdHVyZUNoZWNrIChGc3BTbW1Jbml0QXBpSW5kZXgsDQo+IEFwaVBhcmFt KSkpIHsNCj4gPiArwqAgwqAgwqAgwqAgU3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiA+ICvCoCDCoCDCoCB9DQo+ID4gK8KgIMKgIH0NCj4gPsKgIMKgIH0gZWxzZSB7DQo+ID7CoCDC oCDCoCBTdGF0dXMgPSBFRklfVU5TVVBQT1JURUQ7DQo+ID7CoCDCoCB9DQo+ID4gZGlmZiAtLWdp dCBhL0ludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL0ZzcFNlY0NvcmVJLmluZg0KPiBiL0ludGVsRnNw MlBrZy9Gc3BTZWNDb3JlL0ZzcFNlY0NvcmVJLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZDMxNTc2YzAwYg0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysgYi9JbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9Gc3BTZWNDb3JlSS5pbmYNCj4gPiBAQCAt MCwwICsxLDU0IEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyPCoCBTZWMgQ29yZSBmb3IgRlNQDQo+ ID4gKyMNCj4gPiArI8KgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjDQo+ID4gKyPCoCBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ ICtbRGVmaW5lc10NCj4gPiArwqAgSU5GX1ZFUlNJT07CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCA9IDB4MDAwMTAwMDUNCj4gPiArwqAgQkFTRV9OQU1FwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgPSBGc3BTZWNDb3JlSQ0KPiA+ICvCoCBGSUxFX0dVSUTCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCA9IDU1ODc4MmI1LTc4MmQtNDE1ZS1hYjllLTBjZWI3OWRjMzQy NQ0KPiA+ICvCoCBNT0RVTEVfVFlQRcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgID0gU0VD DQo+ID4gK8KgIFZFUlNJT05fU1RSSU5HwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqA9IDEuMA0K PiA+ICsNCj4gPiArIw0KPiA+ICsjIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJl ZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlDQo+IGJ1aWxkIHRvb2xzLg0KPiA+ ICsjDQo+ID4gKyPCoCBWQUxJRF9BUkNISVRFQ1RVUkVTwqAgwqAgwqAgwqAgwqAgwqA9IElBMzIg WDY0DQo+ID4gKyMNCj4gPiArDQo+ID4gK1tTb3VyY2VzXQ0KPiA+ICvCoCBTZWNGc3BBcGlDaGsu Yw0KPiA+ICvCoCBTZWNGc3AuaA0KPiA+ICsNCj4gPiArW1NvdXJjZXMuWDY0XQ0KPiA+ICvCoCBY NjQvRnNwQXBpRW50cnlJLm5hc20NCj4gPiArwqAgWDY0L0ZzcEFwaUVudHJ5Q29tbW9uLm5hc20N Cj4gPiArwqAgWDY0L0ZzcEhlbHBlci5uYXNtDQo+ID4gKw0KPiA+ICtbU291cmNlcy5JQTMyXQ0K PiA+ICvCoCBJYTMyL0ZzcEFwaUVudHJ5SS5uYXNtDQo+ID4gK8KgIElhMzIvRnNwQXBpRW50cnlD b21tb24ubmFzbQ0KPiA+ICvCoCBJYTMyL0ZzcEhlbHBlci5uYXNtDQo+ID4gKw0KPiA+ICtbQmlu YXJpZXMuSWEzMl0NCj4gPiArwqAgUkFXfFZ0ZjAvQmluL1Jlc2V0VmVjLmlhMzIucmF3IHxHQ0MN Cj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArwqAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiAr wqAgSW50ZWxGc3AyUGtnL0ludGVsRnNwMlBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gPiArwqAgQmFzZU1lbW9yeUxpYg0KPiA+ICvCoCBEZWJ1Z0xpYg0KPiA+ICvCoCBC YXNlTGliDQo+ID4gK8KgIFBjaUNmOExpYg0KPiA+ICvCoCBTZXJpYWxQb3J0TGliDQo+ID4gK8Kg IEZzcFN3aXRjaFN0YWNrTGliDQo+ID4gK8KgIEZzcENvbW1vbkxpYg0KPiA+ICvCoCBGc3BTZWNQ bGF0Zm9ybUxpYg0KPiA+ICsNCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL0ludGVsRnNwMlBrZy9G c3BTZWNDb3JlL0lhMzIvRnNwQXBpRW50cnlJLm5hc20NCj4gYi9JbnRlbEZzcDJQa2cvRnNwU2Vj Q29yZS9JYTMyL0ZzcEFwaUVudHJ5SS5uYXNtDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiBpbmRleCAwMDAwMDAwMDAwLi5lOTM2NWQ2ODMyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL0ludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL0lhMzIvRnNwQXBpRW50cnlJLm5hc20NCj4gPiBA QCAtMCwwICsxLDQ0IEBADQo+ID4gKzs7IEBmaWxlDQo+ID4gKzvCoCBQcm92aWRlIEZTUCBBUEkg ZW50cnkgcG9pbnRzLg0KPiA+ICs7DQo+ID4gKzsgQ29weXJpZ2h0IChjKSAyMDIyLCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKzsgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArOzsNCj4gPiArDQo+ID4gK8Kg IMKgIFNFQ1RJT04gLnRleHQNCj4gPiArDQo+ID4gKzsNCj4gPiArOyBGb2xsb3dpbmcgZnVuY3Rp b25zIHdpbGwgYmUgcHJvdmlkZWQgaW4gQw0KPiA+ICs7DQo+ID4gK2V4dGVybiBBU01fUEZYKEZz cEFwaUNvbW1vbikNCj4gPiArDQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKzsgRnNw QXBpQ29tbW9uQ29udGludWUgQVBJDQo+ID4gKzsNCj4gPiArOyBUaGlzIGlzIHRoZSBGU1AgQVBJ IGNvbW1vbiBlbnRyeSBwb2ludCB0byByZXN1bWUgdGhlIEZTUCBleGVjdXRpb24NCj4gPiArOw0K PiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICtnbG9iYWwgQVNNX1BGWChGc3BBcGlDb21t b25Db250aW51ZSkNCj4gPiArQVNNX1BGWChGc3BBcGlDb21tb25Db250aW51ZSk6DQo+ID4gK8Kg IGptcCAkDQo+ID4gKw0KPiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICs7IEZzcFNtbUlu aXQgQVBJDQo+ID4gKzsNCj4gPiArOyBUaGlzIEZTUCBBUEkgd2lsbCBub3RpZnkgdGhlIEZTUCBh Ym91dCB0aGUgZGlmZmVyZW50IHBoYXNlcyBpbiB0aGUgYm9vdA0KPiA+ICs7IHByb2Nlc3MNCj4g PiArOw0KPiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICtnbG9iYWwgQVNNX1BGWChGc3BT bW1Jbml0QXBpKQ0KPiA+ICtBU01fUEZYKEZzcFNtbUluaXRBcGkpOg0KPiA+ICvCoCBtb3bCoCDC oCBlYXgswqAgNyA7IEZTUF9BUElfSU5ERVguRnNwU21tSW5pdEFwaUluZGV4DQo+ID4gK8KgIGpt cMKgIMKgIEFTTV9QRlgoRnNwQXBpQ29tbW9uKQ0KPiA+ICsNCj4gPiArOy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPiArOyBNb2R1bGUgRW50cnlwb2ludCBBUEkNCj4gPiArOy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gPiArZ2xvYmFsIEFTTV9QRlgoX01vZHVsZUVudHJ5UG9pbnQpDQo+ID4gK0FTTV9Q RlgoX01vZHVsZUVudHJ5UG9pbnQpOg0KPiA+ICvCoCBqbXDCoCAkDQo+ID4gK8KgIDsgQWRkIHJl ZmVyZW5jZSB0byBBUElzIHNvIHRoYXQgaXQgd2lsbCBub3QgYmUgb3B0aW1pemVkIGJ5IGNvbXBp bGVyDQo+ID4gK8KgIGptcMKgIEFTTV9QRlgoRnNwU21tSW5pdEFwaSkNCj4gPiBkaWZmIC0tZ2l0 IGEvSW50ZWxGc3AyUGtnL0ZzcFNlY0NvcmUvWDY0L0ZzcEFwaUVudHJ5SS5uYXNtDQo+IGIvSW50 ZWxGc3AyUGtnL0ZzcFNlY0NvcmUvWDY0L0ZzcEFwaUVudHJ5SS5uYXNtDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5lOTM2NWQ2ODMyDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL0ludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL1g2NC9Gc3BBcGlFbnRy eUkubmFzbQ0KPiA+IEBAIC0wLDAgKzEsNDQgQEANCj4gPiArOzsgQGZpbGUNCj4gPiArO8KgIFBy b3ZpZGUgRlNQIEFQSSBlbnRyeSBwb2ludHMuDQo+ID4gKzsNCj4gPiArOyBDb3B5cmlnaHQgKGMp IDIwMjIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICs7Ow0K PiA+ICsNCj4gPiArwqAgwqAgU0VDVElPTiAudGV4dA0KPiA+ICsNCj4gPiArOw0KPiA+ICs7IEZv bGxvd2luZyBmdW5jdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBpbiBDDQo+ID4gKzsNCj4gPiArZXh0 ZXJuIEFTTV9QRlgoRnNwQXBpQ29tbW9uKQ0KPiA+ICsNCj4gPiArOy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPiArOyBGc3BBcGlDb21tb25Db250aW51ZSBBUEkNCj4gPiArOw0KPiA+ICs7IFRoaXMg aXMgdGhlIEZTUCBBUEkgY29tbW9uIGVudHJ5IHBvaW50IHRvIHJlc3VtZSB0aGUgRlNQIGV4ZWN1 dGlvbg0KPiA+ICs7DQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gK2dsb2JhbCBBU01f UEZYKEZzcEFwaUNvbW1vbkNvbnRpbnVlKQ0KPiA+ICtBU01fUEZYKEZzcEFwaUNvbW1vbkNvbnRp bnVlKToNCj4gPiArwqAgam1wICQNCj4gPiArDQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gKzsgRnNwU21tSW5pdCBBUEkNCj4gPiArOw0KPiA+ICs7IFRoaXMgRlNQIEFQSSB3aWxsIG5v dGlmeSB0aGUgRlNQIGFib3V0IHRoZSBkaWZmZXJlbnQgcGhhc2VzIGluIHRoZSBib290DQo+ID4g KzsgcHJvY2Vzcw0KPiA+ICs7DQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gK2dsb2Jh bCBBU01fUEZYKEZzcFNtbUluaXRBcGkpDQo+ID4gK0FTTV9QRlgoRnNwU21tSW5pdEFwaSk6DQo+ ID4gK8KgIG1vdsKgIMKgIGVheCzCoCA3IDsgRlNQX0FQSV9JTkRFWC5Gc3BTbW1Jbml0QXBpSW5k ZXgNCj4gDQo+IFRoaXMgaXMgYSBidWcuIEl0IHNob3VsZCBiZToNCj4gDQo+IG1vdsKgIMKgIHJh eCzCoCA3IDsgRlNQX0FQSV9JTkRFWC5Gc3BTbW1Jbml0QXBpSW5kZXgNCj4gDQo+IEhpIE5hdGUs DQo+IA0KPiBUaGlzIGlzIG5vdCBhY3R1YWxseSBhIHByb2JsZW0sIGEgMzItYml0IG1vdiB0byBh IDMyLWJpdCByZWdpc3RlciBpbiBsb25nIG1vZGUgd2lsbA0KPiB6ZXJvIHRoZSB1cHBlciBwYXJ0 Lg0KPiANCj4gDQo+IE5vdGUgdGhhdCBJbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9YNjQvRnNwQXBp RW50cnlDb21tb24ubmFzbSBjb21wYXJlcw0KPiBBcGlJbmRleCBudW1iZXJzIHVzaW5nIHJheCwg c28gaXQgaXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB1cHBlciAzMi0NCj4gYml0 cyBhcmUgemVybzoNCj4gDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9i L2M5NjYyMDQwNDlmM2Q1ZGFlNmQ1ZTU4N2RkYzI5OGM2DQo+IDg0MTQyYzVjL0ludGVsRnNwMlBr Zy9Gc3BTZWNDb3JlL1g2NC9Gc3BBcGlFbnRyeUNvbW1vbi5uYXNtI0w2NQ0KPiANCj4gPiArwqAg am1wwqAgwqAgQVNNX1BGWChGc3BBcGlDb21tb24pDQo+ID4gKw0KPiA+ICs7LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+ICs7IE1vZHVsZSBFbnRyeXBvaW50IEFQSQ0KPiA+ICs7LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+ICtnbG9iYWwgQVNNX1BGWChfTW9kdWxlRW50cnlQb2ludCkNCj4gPiArQVNN X1BGWChfTW9kdWxlRW50cnlQb2ludCk6DQo+ID4gK8KgIGptcMKgICQNCj4gPiArwqAgOyBBZGQg cmVmZXJlbmNlIHRvIEFQSXMgc28gdGhhdCBpdCB3aWxsIG5vdCBiZSBvcHRpbWl6ZWQgYnkgY29t cGlsZXINCj4gPiArwqAgam1wwqAgQVNNX1BGWChGc3BTbW1Jbml0QXBpKQ0KPiA+IGRpZmYgLS1n aXQgYS9JbnRlbEZzcDJQa2cvSW5jbHVkZS9Gc3BFYXMvRnNwQXBpLmgNCj4gYi9JbnRlbEZzcDJQ a2cvSW5jbHVkZS9Gc3BFYXMvRnNwQXBpLmgNCj4gPiBpbmRleCBiMzZiYzJiOWFlLi4xZDZjMmZi NjNkIDEwMDY0NA0KPiA+IC0tLSBhL0ludGVsRnNwMlBrZy9JbmNsdWRlL0ZzcEVhcy9Gc3BBcGku aA0KPiA+ICsrKyBiL0ludGVsRnNwMlBrZy9JbmNsdWRlL0ZzcEVhcy9Gc3BBcGkuaA0KPiA+IEBA IC0xMzUsMTggKzEzNSwxOCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID7CoCDCoCAvLy8NCj4gPsKg IMKgIC8vLyBSZXZpc2lvbiBvZiB0aGUgc3RydWN0dXJlIGlzIDIgZm9yIHRoaXMgdmVyc2lvbiBv ZiB0aGUgc3BlY2lmaWNhdGlvbi4NCj4gPsKgIMKgIC8vLw0KPiA+IC3CoCBVSU5UOMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIFJldmlzaW9uOw0KPiA+IC3CoCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIFJlc2VydmVkWzNdOw0KPiA+ICvCoCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgUmV2aXNpb247DQo+ID4gK8KgIFVJTlQ4wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBSZXNlcnZlZFszXTsNCj4gDQo+IEFueSByZWFzb24gZm9yIHRoZXNlIHdoaXRlc3BhY2UgY2hh bmdlcz8gSXQgbG9va3Mgd29yc2UgdGhhbiBiZWZvcmUuDQo+IA0KPiA+wqAgwqAgLy8vDQo+ID7C oCDCoCAvLy8gTGVuZ3RoIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gYnl0ZXMuIFRoZSBjdXJyZW50IHZh bHVlIGZvciB0aGlzIGZpZWxkIGlzIDMyLg0KPiA+wqAgwqAgLy8vDQo+ID4gLcKgIFVJTlQzMsKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgTGVuZ3RoOw0KPiA+ICvCoCBVSU5UMzLCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBMZW5ndGg7DQo+IA0KPiBBbnkgcmVhc29uIGZvciB0aGlzIHdoaXRlc3Bh Y2UgY2hhbmdlPyBJdCBsb29rcyB3b3JzZSB0aGFuIGJlZm9yZS4NCj4gDQo+ID7CoCDCoCAvLy8N Cj4gPsKgIMKgIC8vLyBGc3BEZWJ1Z0hhbmRsZXIgT3B0aW9uYWwgZGVidWcgaGFuZGxlciBmb3Ig dGhlIGJvb3Rsb2FkZXIgdG8gcmVjZWl2ZQ0KPiBkZWJ1ZyBtZXNzYWdlcw0KPiA+wqAgwqAgLy8v IG9jY3VycmluZyBkdXJpbmcgRlNQIGV4ZWN1dGlvbi4NCj4gPsKgIMKgIC8vLw0KPiA+IC3CoCBF RklfUEhZU0lDQUxfQUREUkVTUyBGc3BEZWJ1Z0hhbmRsZXI7DQo+ID4gLcKgIFVJTlQ4wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgUmVzZXJ2ZWQxWzE2XTsNCj4gPiArwqAgRUZJX1BIWVNJQ0FMX0FE RFJFU1PCoCDCoCBGc3BEZWJ1Z0hhbmRsZXI7DQo+ID4gK8KgIFVJTlQ4wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBSZXNlcnZlZDFbMTZdOw0KPiANCj4gQW55IHJlYXNvbiBmb3IgdGhlc2Ug d2hpdGVzcGFjZSBjaGFuZ2VzPyBJdCBsb29rcyB3b3JzZSB0aGFuIGJlZm9yZS4NCj4gDQo+ID7C oCB9IEZTUFRfQVJDSDJfVVBEOw0KPiA+DQo+ID7CoCAvLy8NCj4gPiBAQCAtMTk3LDM3ICsxOTcs MzcgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+wqAgwqAgLy8vDQo+ID7CoCDCoCAvLy8gUmV2aXNp b24gb2YgdGhlIHN0cnVjdHVyZSBpcyAzIGZvciB0aGlzIHZlcnNpb24gb2YgdGhlIHNwZWNpZmlj YXRpb24uDQo+ID7CoCDCoCAvLy8NCj4gPiAtwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCBSZXZpc2lvbjsNCj4gPiAtwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBSZXNlcnZl ZFszXTsNCj4gPiArwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFJldmlzaW9u Ow0KPiA+ICvCoCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgUmVzZXJ2ZWRbM107 DQo+IA0KPiBBbnkgcmVhc29uIGZvciB0aGVzZSB3aGl0ZXNwYWNlIGNoYW5nZXM/IEl0IGxvb2tz IHdvcnNlIHRoYW4gYmVmb3JlLg0KPiANCj4gPsKgIMKgIC8vLw0KPiA+wqAgwqAgLy8vIExlbmd0 aCBvZiB0aGUgc3RydWN0dXJlIGluIGJ5dGVzLiBUaGUgY3VycmVudCB2YWx1ZSBmb3IgdGhpcyBm aWVsZCBpcyA2NC4NCj4gPsKgIMKgIC8vLw0KPiA+IC3CoCBVSU5UMzLCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoExlbmd0aDsNCj4gPiArwqAgVUlOVDMywqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg TGVuZ3RoOw0KPiANCj4gQW55IHJlYXNvbiBmb3IgdGhpcyB3aGl0ZXNwYWNlIGNoYW5nZT8gSXQg bG9va3Mgd29yc2UgdGhhbiBiZWZvcmUuDQo+IA0KPiA+wqAgwqAgLy8vDQo+ID7CoCDCoCAvLy8g UG9pbnRlciB0byB0aGUgdGVtcG9yYXJ5IHN0YWNrIGJhc2UgYWRkcmVzcyB0byBiZQ0KPiA+wqAg wqAgLy8vIGNvbnN1bWVkIGluc2lkZSBGc3BNZW1vcnlJbml0KCkgQVBJLg0KPiA+wqAgwqAgLy8v DQo+ID4gLcKgIEVGSV9QSFlTSUNBTF9BRERSRVNTIFN0YWNrQmFzZTsNCj4gPiArwqAgRUZJX1BI WVNJQ0FMX0FERFJFU1PCoCDCoCBTdGFja0Jhc2U7DQo+IA0KPiBBbnkgcmVhc29uIGZvciB0aGlz IHdoaXRlc3BhY2UgY2hhbmdlPyBJdCBsb29rcyB3b3JzZSB0aGFuIGJlZm9yZS4NCj4gDQo+ID7C oCDCoCAvLy8NCj4gPsKgIMKgIC8vLyBUZW1wb3Jhcnkgc3RhY2sgc2l6ZSB0byBiZSBjb25zdW1l ZCBpbnNpZGUNCj4gPsKgIMKgIC8vLyBGc3BNZW1vcnlJbml0KCkgQVBJLg0KPiA+wqAgwqAgLy8v DQo+ID4gLcKgIFVJTlQ2NMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgU3RhY2tTaXplOw0KPiA+ICvC oCBVSU5UNjTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBTdGFja1NpemU7DQo+IA0KPiBBbnkg cmVhc29uIGZvciB0aGlzIHdoaXRlc3BhY2UgY2hhbmdlPyBJdCBsb29rcyB3b3JzZSB0aGFuIGJl Zm9yZS4NCj4gDQo+ID7CoCDCoCAvLy8NCj4gPsKgIMKgIC8vLyBTaXplIG9mIG1lbW9yeSB0byBi ZSByZXNlcnZlZCBieSBGU1AgYmVsb3cgInRvcA0KPiA+wqAgwqAgLy8vIG9mIGxvdyB1c2FibGUg bWVtb3J5IiBmb3IgYm9vdGxvYWRlciB1c2FnZS4NCj4gPsKgIMKgIC8vLw0KPiA+IC3CoCBVSU5U MzLCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEJvb3RMb2FkZXJUb2x1bVNpemU7DQo+ID4gK8KgIFVJ TlQzMsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEJvb3RMb2FkZXJUb2x1bVNpemU7DQo+IA0K PiBBbnkgcmVhc29uIGZvciB0aGlzIHdoaXRlc3BhY2UgY2hhbmdlPyBJdCBsb29rcyB3b3JzZSB0 aGFuIGJlZm9yZS4NCj4gDQo+ID7CoCDCoCAvLy8NCj4gPsKgIMKgIC8vLyBDdXJyZW50IGJvb3Qg bW9kZS4NCj4gPsKgIMKgIC8vLw0KPiA+IC3CoCBVSU5UMzLCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oEJvb3RNb2RlOw0KPiA+ICvCoCBVSU5UMzLCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBCb290 TW9kZTsNCj4gDQo+IEFueSByZWFzb24gZm9yIHRoaXMgd2hpdGVzcGFjZSBjaGFuZ2U/IEl0IGxv b2tzIHdvcnNlIHRoYW4gYmVmb3JlLg0KPiANCj4gPsKgIMKgIC8vLw0KPiA+wqAgwqAgLy8vIE9w dGlvbmFsIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBib290bG9hZGVyIHRvIGJlIGluZm9ybWVkIG9m IGV2ZW50cw0KPiBvY2N1cnJpbmcgZHVyaW5nIEZTUCBleGVjdXRpb24uDQo+ID7CoCDCoCAvLy8g VGhpcyB2YWx1ZSBpcyBvbmx5IHZhbGlkIGlmIFJldmlzaW9uIGlzID49IDIuDQo+ID7CoCDCoCAv Ly8NCj4gPiAtwqAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgRnNwRXZlbnRIYW5kbGVyOw0KPiA+IC3C oCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFJlc2VydmVkMVsyNF07DQo+ID4gK8KgIEVG SV9QSFlTSUNBTF9BRERSRVNTwqAgwqAgRnNwRXZlbnRIYW5kbGVyOw0KPiA+ICvCoCBVSU5UOMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgUmVzZXJ2ZWQxWzI0XTsNCj4gDQo+IEFueSByZWFz b24gZm9yIHRoZXNlIHdoaXRlc3BhY2UgY2hhbmdlcz8gSXQgbG9va3Mgd29yc2UgdGhhbiBiZWZv cmUuDQo+IA0KPiA+wqAgfSBGU1BNX0FSQ0gyX1VQRDsNCj4gPg0KPiA+wqAgLy8vDQo+ID4gQEAg LTI2NiwxOCArMjY2LDE4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPsKgIMKgIC8vLw0KPiA+wqAg wqAgLy8vIFJldmlzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgMiBmb3IgdGhpcyB2ZXJzaW9uIG9m IHRoZSBzcGVjaWZpY2F0aW9uLg0KPiA+wqAgwqAgLy8vDQo+ID4gLcKgIFVJTlQ4wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgUmV2aXNpb247DQo+ID4gLcKgIFVJTlQ4wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgUmVzZXJ2ZWRbM107DQo+ID4gK8KgIFVJTlQ4wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBSZXZpc2lvbjsNCj4gPiArwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFJlc2VydmVkWzNdOw0KPiANCj4gQW55IHJlYXNvbiBmb3IgdGhlc2Ugd2hpdGVzcGFjZSBjaGFu Z2VzPyBJdCBsb29rcyB3b3JzZSB0aGFuIGJlZm9yZS4NCj4gDQo+ID7CoCDCoCAvLy8NCj4gPsKg IMKgIC8vLyBMZW5ndGggb2YgdGhlIHN0cnVjdHVyZSBpbiBieXRlcy4gVGhlIGN1cnJlbnQgdmFs dWUgZm9yIHRoaXMgZmllbGQgaXMgMzIuDQo+ID7CoCDCoCAvLy8NCj4gPiAtwqAgVUlOVDMywqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBMZW5ndGg7DQo+ID4gK8KgIFVJTlQzMsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIExlbmd0aDsNCj4gDQo+IEFueSByZWFzb24gZm9yIHRoaXMgd2hpdGVzcGFj ZSBjaGFuZ2U/IEl0IGxvb2tzIHdvcnNlIHRoYW4gYmVmb3JlLg0KPiANCj4gPsKgIMKgIC8vLw0K PiA+wqAgwqAgLy8vIEZzcEV2ZW50SGFuZGxlciBPcHRpb25hbCBldmVudCBoYW5kbGVyIGZvciB0 aGUgYm9vdGxvYWRlciB0byBiZQ0KPiBpbmZvcm1lZCBvZiBldmVudHMNCj4gPsKgIMKgIC8vLyBv Y2N1cnJpbmcgZHVyaW5nIEZTUCBleGVjdXRpb24uDQo+ID7CoCDCoCAvLy8NCj4gPiAtwqAgRUZJ X1BIWVNJQ0FMX0FERFJFU1MgRnNwRXZlbnRIYW5kbGVyOw0KPiA+IC3CoCBVSU5UOMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIFJlc2VydmVkMVsxNl07DQo+ID4gK8KgIEVGSV9QSFlTSUNBTF9BRERS RVNTwqAgwqAgRnNwRXZlbnRIYW5kbGVyOw0KPiA+ICvCoCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgUmVzZXJ2ZWQxWzE2XTsNCj4gDQo+IEFueSByZWFzb24gZm9yIHRoZXNlIHdo aXRlc3BhY2UgY2hhbmdlcz8gSXQgbG9va3Mgd29yc2UgdGhhbiBiZWZvcmUuDQo+IA0KPiA+wqAg fSBGU1BTX0FSQ0gyX1VQRDsNCj4gPg0KPiA+wqAgLy8vDQo+ID4gQEAgLTYwOSw0ICs2MDksMjMg QEAgRUZJX1NUQVRVUw0KPiA+wqAgwqAgSU4gRlNQX01VTFRJX1BIQVNFX1BBUkFNU8KgIMKgIMKg Kk11bHRpUGhhc2VTaUluaXRQYXJhbVB0cg0KPiA+wqAgwqAgKTsNCj4gPg0KPiA+ICsvKioNCj4g PiArwqAgVGhpcyBGU1AgQVBJIGluaXRpYWxpemVzIFNNTSBhbmQgcHJvdmlkZSBhbnkgT1MgcnVu dGltZSBzaWxpY29uIHNlcnZpY2VzLA0KPiA+ICvCoCBpbmNsdWRpbmcgUmVsaWFiaWxpdHksIEF2 YWlsYWJpbGl0eSwgYW5kIFNlcnZpY2VhYmlsaXR5IChSQVMpIGZlYXR1cmVzDQo+IGltcGxlbWVu dGVkIGJ5IHRoZSBDUFUuDQo+ID4gKw0KPiA+ICvCoCBAcGFyYW1baW5dIEZzcGlVcGREYXRhUHRy wqAgwqAgwqBQb2ludGVyIHRvIHRoZSBGU1BJX1VQRCBkYXRhIHN0cnVjdHVyZS4NCj4gPiArwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSWYgTlVMTCwgRlNQ IHdpbGwgdXNlIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMuDQo+ID4gKw0KPiA+ICvCoCBAcmV0dmFs IEVGSV9TVUNDRVNTwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBGU1AgZXhlY3V0aW9uIGVudmly b25tZW50IHdhcyBpbml0aWFsaXplZA0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gK8KgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSwqAgwqAgwqAgwqBJbnB1dCBwYXJhbWV0ZXJzIGFyZSBpbnZh bGlkLg0KPiA+ICvCoCBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRMKgIMKgIMKgIMKgIMKgIMKgIMKg VGhlIEZTUCBjYWxsaW5nIGNvbmRpdGlvbnMgd2VyZSBub3QgbWV0Lg0KPiA+ICvCoCBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1LCoCDCoCDCoCDCoCDCoCDCoCBGU1AgaW5pdGlhbGl6YXRpb24gZmFp bGVkLg0KPiA+ICvCoCBAcmV0dmFsIEZTUF9TVEFUVVNfUkVTRVRfUkVRVUlSRUR4wqAgQSByZXNl dCBpcyByZXF1aXJlZC4gVGhlc2Ugc3RhdHVzDQo+IGNvZGVzIHdpbGwgbm90IGJlIHJldHVybmVk IGR1cmluZyBTMy4NCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ ICsoRUZJQVBJICpGU1BfU01NX0lOSVQpKA0KPiA+ICvCoCBJTiBWT0lEwqAgwqAgwqAgwqAgwqAg KkZzcGlVcGREYXRhUHRyDQo+ID4gK8KgICk7DQo+ID4gKw0KPiA+wqAgI2VuZGlmDQo+ID4gZGlm ZiAtLWdpdCBhL0ludGVsRnNwMlBrZy9JbmNsdWRlL0ZzcEdsb2JhbERhdGEuaA0KPiBiL0ludGVs RnNwMlBrZy9JbmNsdWRlL0ZzcEdsb2JhbERhdGEuaA0KPiA+IGluZGV4IDQ0NTU0MGFiZmEuLjY5 N2IyMGVkNGMgMTAwNjQ0DQo+ID4gLS0tIGEvSW50ZWxGc3AyUGtnL0luY2x1ZGUvRnNwR2xvYmFs RGF0YS5oDQo+ID4gKysrIGIvSW50ZWxGc3AyUGtnL0luY2x1ZGUvRnNwR2xvYmFsRGF0YS5oDQo+ ID4gQEAgLTEwLDkgKzEwLDkgQEANCj4gPg0KPiA+wqAgI2luY2x1ZGUgPEZzcEVhcy5oPg0KPiA+ DQo+ID4gLSNkZWZpbmUgRlNQX0lOX0FQSV9NT0RFwqAgwqAgwqAgwqAgwqAwDQo+ID4gLSNkZWZp bmUgRlNQX0lOX0RJU1BBVENIX01PREXCoCDCoCAxDQo+ID4gLSNkZWZpbmUgRlNQX0dMT0JBTF9E QVRBX1ZFUlNJT04gMQ0KPiA+ICsjZGVmaW5lIEZTUF9JTl9BUElfTU9ERcKgIMKgIMKgIMKgIMKg IDANCj4gPiArI2RlZmluZSBGU1BfSU5fRElTUEFUQ0hfTU9ERcKgIMKgIMKgMQ0KPiA+ICsjZGVm aW5lIEZTUF9HTE9CQUxfREFUQV9WRVJTSU9OwqAgMQ0KPiA+DQo+ID7CoCAjcHJhZ21hIHBhY2so MSkNCj4gPg0KPiA+IEBAIC0yNCwxNiArMjQsMTcgQEAgdHlwZWRlZiBlbnVtIHsNCj4gPsKgIMKg IFRlbXBSYW1FeGl0QXBpSW5kZXgsDQo+ID7CoCDCoCBGc3BTaWxpY29uSW5pdEFwaUluZGV4LA0K PiA+wqAgwqAgRnNwTXVsdGlQaGFzZVNpSW5pdEFwaUluZGV4LA0KPiA+ICvCoCBGc3BTbW1Jbml0 QXBpSW5kZXgsDQo+ID7CoCDCoCBGc3BBcGlJbmRleE1heA0KPiA+wqAgfSBGU1BfQVBJX0lOREVY Ow0KPiA+DQo+ID7CoCB0eXBlZGVmIHN0cnVjdMKgIHsNCj4gPiAtwqAgVk9JRMKgIMKgIMKgICpE YXRhUHRyOw0KPiA+IC3CoCBVSU5UTsKgIMKgIMKgTWljcm9jb2RlUmVnaW9uQmFzZTsNCj4gPiAt wqAgVUlOVE7CoCDCoCDCoE1pY3JvY29kZVJlZ2lvblNpemU7DQo+ID4gLcKgIFVJTlROwqAgwqAg wqBDb2RlUmVnaW9uQmFzZTsNCj4gPiAtwqAgVUlOVE7CoCDCoCDCoENvZGVSZWdpb25TaXplOw0K PiA+IC3CoCBVSU5UTsKgIMKgIMKgUmVzZXJ2ZWQ7DQo+ID4gK8KgIFZPSUTCoCDCoCDCoCpEYXRh UHRyOw0KPiA+ICvCoCBVSU5UTsKgIMKgIE1pY3JvY29kZVJlZ2lvbkJhc2U7DQo+ID4gK8KgIFVJ TlROwqAgwqAgTWljcm9jb2RlUmVnaW9uU2l6ZTsNCj4gPiArwqAgVUlOVE7CoCDCoCBDb2RlUmVn aW9uQmFzZTsNCj4gPiArwqAgVUlOVE7CoCDCoCBDb2RlUmVnaW9uU2l6ZTsNCj4gPiArwqAgVUlO VE7CoCDCoCBSZXNlcnZlZDsNCj4gPsKgIH0gRlNQX1BMQVRfREFUQTsNCj4gPg0KPiA+wqAgI2Rl ZmluZSBGU1BfR0xPQkFMX0RBVEFfU0lHTkFUVVJFwqAgwqAgwqAgwqAgU0lHTkFUVVJFXzMyICgn RicsICdTJywgJ1AnLCAnRCcpDQo+ID4gQEAgLTQxLDI4ICs0MiwyOCBAQCB0eXBlZGVmIHN0cnVj dMKgIHsNCj4gPsKgICNkZWZpbmUgRlNQX1BFUkZPUk1BTkNFX0RBVEFfVElNRVJfTUFTS8KgIDB4 RkZGRkZGRkZGRkZGRkYNCj4gPg0KPiA+wqAgdHlwZWRlZiBzdHJ1Y3TCoCB7DQo+ID4gLcKgIFVJ TlQzMsKgIMKgIMKgIMKgIMKgIMKgIMKgU2lnbmF0dXJlOw0KPiA+IC3CoCBVSU5UOMKgIMKgIMKg IMKgIMKgIMKgIMKgIFZlcnNpb247DQo+ID4gLcKgIFVJTlQ4wqAgwqAgwqAgwqAgwqAgwqAgwqAg UmVzZXJ2ZWQxWzNdOw0KPiA+ICvCoCBVSU5UMzLCoCDCoCBTaWduYXR1cmU7DQo+ID4gK8KgIFVJ TlQ4wqAgwqAgwqBWZXJzaW9uOw0KPiA+ICvCoCBVSU5UOMKgIMKgIMKgUmVzZXJ2ZWQxWzNdOw0K PiA+wqAgwqAgLy8vDQo+ID7CoCDCoCAvLy8gT2Zmc2V0IDB4MDgNCj4gPsKgIMKgIC8vLw0KPiA+ IC3CoCBVSU5UTsKgIMKgIMKgIMKgIMKgIMKgIMKgIENvcmVTdGFjazsNCj4gPiAtwqAgVUlOVE7C oCDCoCDCoCDCoCDCoCDCoCDCoCBSZXNlcnZlZDI7DQo+ID4gK8KgIFVJTlROwqAgwqAgwqBDb3Jl U3RhY2s7DQo+ID4gK8KgIFVJTlROwqAgwqAgwqBSZXNlcnZlZDI7DQo+ID7CoCDCoCAvLy8NCj4g PsKgIMKgIC8vLyBJQTMyOiBPZmZzZXQgMHgxMDsgWDY0OiBPZmZzZXQgMHgxOA0KPiA+wqAgwqAg Ly8vDQo+ID4gLcKgIFVJTlQzMsKgIMKgIMKgIMKgIMKgIMKgIMKgU3RhdHVzQ29kZTsNCj4gPiAt wqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCBBcGlJZHg7DQo+ID4gK8KgIFVJTlQzMsKgIMKg IFN0YXR1c0NvZGU7DQo+ID4gK8KgIFVJTlQ4wqAgwqAgwqBBcGlJZHg7DQo+ID7CoCDCoCAvLy8N Cj4gPsKgIMKgIC8vLyAwOiBGU1AgaW4gQVBJIG1vZGU7IDE6IEZTUCBpbiBESVNQQVRDSCBtb2Rl DQo+ID7CoCDCoCAvLy8NCj4gPiAtwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCBGc3BNb2Rl Ow0KPiA+IC3CoCBVSU5UOMKgIMKgIMKgIMKgIMKgIMKgIMKgIE9uU2VwYXJhdGVTdGFjazsNCj4g PiAtwqAgVUlOVDjCoCDCoCDCoCDCoCDCoCDCoCDCoCBSZXNlcnZlZDM7DQo+ID4gLcKgIFVJTlQz MsKgIMKgIMKgIMKgIMKgIMKgIMKgTnVtYmVyT2ZQaGFzZXM7DQo+ID4gLcKgIFVJTlQzMsKgIMKg IMKgIMKgIMKgIMKgIMKgUGhhc2VzRXhlY3V0ZWQ7DQo+ID4gLcKgIFVJTlQzMsKgIMKgIMKgIMKg IMKgIMKgIMKgUmVzZXJ2ZWQ0WzhdOw0KPiA+ICvCoCBVSU5UOMKgIMKgIMKgRnNwTW9kZTsNCj4g PiArwqAgVUlOVDjCoCDCoCDCoE9uU2VwYXJhdGVTdGFjazsNCj4gPiArwqAgVUlOVDjCoCDCoCDC oFJlc2VydmVkMzsNCj4gPiArwqAgVUlOVDMywqAgwqAgTnVtYmVyT2ZQaGFzZXM7DQo+ID4gK8Kg IFVJTlQzMsKgIMKgIFBoYXNlc0V4ZWN1dGVkOw0KPiA+ICvCoCBVSU5UMzLCoCDCoCBSZXNlcnZl ZDRbOF07DQo+ID7CoCDCoCAvLy8NCj4gPsKgIMKgIC8vLyBJQTMyOiBPZmZzZXQgMHg0MDsgWDY0 OiBPZmZzZXQgMHg0OA0KPiA+wqAgwqAgLy8vIFN0YXJ0IG9mIFVJTlROIGFuZCBwb2ludGVyIHNl Y3Rpb24NCj4gPiBAQCAtNzUsMjEgKzc2LDIzIEBAIHR5cGVkZWYgc3RydWN0wqAgew0KPiA+wqAg wqAgVk9JRMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKlRlbXBSYW1Jbml0VXBkUHRyOw0KPiA+wqAg wqAgVk9JRMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKk1lbW9yeUluaXRVcGRQdHI7DQo+ID7CoCDC oCBWT0lEwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqU2lsaWNvbkluaXRVcGRQdHI7DQo+ID4gK8Kg IFZPSUTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCpTbW1Jbml0VXBkUHRyOw0KPiA+wqAgwqAgLy8v DQo+ID4gLcKgIC8vLyBJQTMyOiBPZmZzZXQgMHg2NDsgWDY0OiBPZmZzZXQgMHg5MA0KPiA+ICvC oCAvLy8gSUEzMjogT2Zmc2V0IDB4Njg7IFg2NDogT2Zmc2V0IDB4OTgNCj4gPsKgIMKgIC8vLyBU byBzdG9yZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIHBvaW50ZXINCj4gPsKgIMKgIC8vLyBzbyBpdCBj YW4gYmUgcmV0cmlldmVkIGFmdGVyIHN0YWNrIHN3aXRjaGVkLg0KPiA+wqAgwqAgLy8vDQo+ID7C oCDCoCBWT0lEwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqRnVuY3Rpb25QYXJhbWV0ZXJQdHI7DQo+ ID7CoCDCoCBGU1BfSU5GT19IRUFERVLCoCDCoCAqRnNwSW5mb0hlYWRlcjsNCj4gPsKgIMKgIFZP SUTCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCpVcGREYXRhUHRyOw0KPiA+ICvCoCBVSU5UTsKgIMKg IMKgIMKgIMKgIMKgIMKgIFJlc2VydmVkNTsNCj4gPsKgIMKgIC8vLw0KPiA+wqAgwqAgLy8vIEVu ZCBvZiBVSU5UTiBhbmQgcG9pbnRlciBzZWN0aW9uDQo+ID7CoCDCoCAvLy8NCj4gPiAtwqAgVUlO VDjCoCDCoCDCoCDCoCDCoCDCoCDCoCBSZXNlcnZlZDVbMTZdOw0KPiA+ICvCoCBVSU5UOMKgIMKg IMKgIMKgIMKgIMKgIMKgIFJlc2VydmVkNlsxNl07DQo+ID7CoCDCoCBVSU5UMzLCoCDCoCDCoCDC oCDCoCDCoCDCoFBlcmZTaWc7DQo+ID7CoCDCoCBVSU5UMTbCoCDCoCDCoCDCoCDCoCDCoCDCoFBl cmZMZW47DQo+ID4gLcKgIFVJTlQxNsKgIMKgIMKgIMKgIMKgIMKgIMKgUmVzZXJ2ZWQ2Ow0KPiA+ ICvCoCBVSU5UMTbCoCDCoCDCoCDCoCDCoCDCoCDCoFJlc2VydmVkNzsNCj4gPsKgIMKgIFVJTlQz MsKgIMKgIMKgIMKgIMKgIMKgIMKgUGVyZklkeDsNCj4gPsKgIMKgIFVJTlQ2NMKgIMKgIMKgIMKg IMKgIMKgIMKgUGVyZkRhdGFbMzJdOw0KPiA+wqAgfSBGU1BfR0xPQkFMX0RBVEE7DQo+ID4gZGlm ZiAtLWdpdCBhL0ludGVsRnNwMlBrZy9JbmNsdWRlL0d1aWQvRnNwSGVhZGVyRmlsZS5oDQo+IGIv SW50ZWxGc3AyUGtnL0luY2x1ZGUvR3VpZC9Gc3BIZWFkZXJGaWxlLmgNCj4gPiBpbmRleCBjNjYw ZGVmYWMzLi5jN2ZiNjMxNjhmIDEwMDY0NA0KPiA+IC0tLSBhL0ludGVsRnNwMlBrZy9JbmNsdWRl L0d1aWQvRnNwSGVhZGVyRmlsZS5oDQo+ID4gKysrIGIvSW50ZWxGc3AyUGtnL0luY2x1ZGUvR3Vp ZC9Gc3BIZWFkZXJGaWxlLmgNCj4gPiBAQCAtMjYsMTMgKzI2LDEzIEBADQo+ID4NCj4gPsKgICNk ZWZpbmUgRlNQX0lORk9fSEVBREVSX1NJR05BVFVSRcKgIFNJR05BVFVSRV8zMiAoJ0YnLCAnUycs ICdQJywgJ0gnKQ0KPiA+DQo+ID4gLSNkZWZpbmUgSU1BR0VfQVRUUklCVVRFX0dSQVBISUNTX1NV UFBPUlTCoCDCoCDCoCBCSVQwDQo+ID4gLSNkZWZpbmUgSU1BR0VfQVRUUklCVVRFX0RJU1BBVENI X01PREVfU1VQUE9SVCBCSVQxDQo+ID4gLSNkZWZpbmUgSU1BR0VfQVRUUklCVVRFXzY0QklUX01P REVfU1VQUE9SVMKgIMKgIEJJVDINCj4gPiAtI2RlZmluZSBGU1BfSUEzMsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDANCj4gPiAtI2RlZmluZSBGU1BfWDY0wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAxDQo+ID4gKyNkZWZp bmUgSU1BR0VfQVRUUklCVVRFX0dSQVBISUNTX1NVUFBPUlTCoCDCoCDCoCDCoEJJVDANCj4gPiAr I2RlZmluZSBJTUFHRV9BVFRSSUJVVEVfRElTUEFUQ0hfTU9ERV9TVVBQT1JUwqAgQklUMQ0KPiA+ ICsjZGVmaW5lIElNQUdFX0FUVFJJQlVURV82NEJJVF9NT0RFX1NVUFBPUlTCoCDCoCDCoEJJVDIN Cj4gPiArI2RlZmluZSBGU1BfSUEzMsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgMA0KPiA+ICsjZGVmaW5lIEZTUF9YNjTCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAxDQo+ID4NCj4gPiAtI3ByYWdtYSBwYWNrKDEpDQo+ ID4gK8KgICNwcmFnbWEgcGFjaygxKQ0KPiANCj4gV2h5IGFkZCBhbiBpbmRlbnQgdG8gdGhlICNw cmFnbWEgbGluZT8gSSdtIHByZXR0eSBzdXJlIHRoYXQgZWRrMiBjb2Rpbmcgc3R5bGUNCj4gZ3Vp ZGVsaW5lcyBkb24ndCByZXF1aXJlIHRoYXQgYW5kIGl0IGNlcnRhaW5seSBsb29rcyB3b3JzZSB0 aGFuIGJlZm9yZS4NCj4gDQo+ID4NCj4gPsKgIC8vLw0KPiA+wqAgLy8vIEZTUCBJbmZvcm1hdGlv biBIZWFkZXIgYXMgZGVzY3JpYmVkIGluIEZTUCB2Mi4wIFNwZWMgc2VjdGlvbiA1LjEuMS4NCj4g PiBAQCAtMTU5LDYgKzE1OSwxNCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID7CoCDCoCAvLy8gQnl0 ZSAweDRFOiBSZXNlcnZlZDQuDQo+ID7CoCDCoCAvLy8NCj4gPsKgIMKgIFVJTlQxNsKgIMKgIFJl c2VydmVkNDsNCj4gPiArwqAgLy8vDQo+ID4gK8KgIC8vLyBCeXRlIDB4NTA6IE9mZnNldCBmb3Ig dGhlIEFQSSBmb3IgdGhlIE11bHRpLVBoYXNlIG1lbW9yeSBpbml0aWFsaXphdGlvbi4NCj4gPiAr wqAgLy8vDQo+ID4gK8KgIFVJTlQzMsKgIMKgIEZzcE11bHRpUGhhc2VNZW1Jbml0RW50cnlPZmZz ZXQ7DQo+ID4gK8KgIC8vLw0KPiA+ICvCoCAvLy8gQnl0ZSAweDU0OiBPZmZzZXQgZm9yIHRoZSBB UEkgdG8gaW5pdGlhbGl6ZSBTTU0uDQo+ID4gK8KgIC8vLw0KPiA+ICvCoCBVSU5UMzLCoCDCoCBG c3BTbW1Jbml0RW50cnlPZmZzZXQ7DQo+ID7CoCB9IEZTUF9JTkZPX0hFQURFUjsNCj4gPg0KPiA+ wqAgLy8vDQo+ID4gQEAgLTI0MCw3ICsyNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID7CoCDC oCAvLyBVSU5UMzLCoCBQYXRjaERhdGFbXTsNCj4gPsKgIH0gRlNQX1BBVENIX1RBQkxFOw0KPiA+ DQo+ID4gLSNwcmFnbWEgcGFjaygpDQo+ID4gK8KgICNwcmFnbWEgcGFjaygpDQo+IA0KPiBXaHkg YWRkIGFuIGluZGVudCB0byB0aGUgI3ByYWdtYSBsaW5lPyBJJ20gcHJldHR5IHN1cmUgdGhhdCBl ZGsyIGNvZGluZyBzdHlsZQ0KPiBndWlkZWxpbmVzIGRvbid0IHJlcXVpcmUgdGhhdCBhbmQgaXQg Y2VydGFpbmx5IGxvb2tzIHdvcnNlIHRoYW4gYmVmb3JlLg0KPiANCj4gPg0KPiA+wqAgZXh0ZXJu IEVGSV9HVUlEwqAgZ0ZzcEhlYWRlckZpbGVHdWlkOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL0lu dGVsRnNwMlBrZy9JbnRlbEZzcDJQa2cuZHNjIGIvSW50ZWxGc3AyUGtnL0ludGVsRnNwMlBrZy5k c2MNCj4gPiBpbmRleCA3Y2Y3ZTg4MjQ1Li5iMmQ3ODY3ODgwIDEwMDY0NA0KPiA+IC0tLSBhL0lu dGVsRnNwMlBrZy9JbnRlbEZzcDJQa2cuZHNjDQo+ID4gKysrIGIvSW50ZWxGc3AyUGtnL0ludGVs RnNwMlBrZy5kc2MNCj4gPiBAQCAtNjgsNiArNjgsNyBAQA0KPiA+wqAgwqAgSW50ZWxGc3AyUGtn L0ZzcFNlY0NvcmUvRnNwU2VjQ29yZVQuaW5mDQo+ID7CoCDCoCBJbnRlbEZzcDJQa2cvRnNwU2Vj Q29yZS9Gc3BTZWNDb3JlTS5pbmYNCj4gPsKgIMKgIEludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL0Zz cFNlY0NvcmVTLmluZg0KPiA+ICvCoCBJbnRlbEZzcDJQa2cvRnNwU2VjQ29yZS9Gc3BTZWNDb3Jl SS5pbmYNCj4gPsKgIMKgIEludGVsRnNwMlBrZy9Gc3BTZWNDb3JlL0ZzcDIyU2VjQ29yZVMuaW5m DQo+ID7CoCDCoCBJbnRlbEZzcDJQa2cvRnNwTm90aWZ5UGhhc2UvRnNwTm90aWZ5UGhhc2VQZWlt LmluZg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL0ludGVsRnNwMlBrZy9Ub29scy9HZW5DZmdPcHQu cHkNCj4gYi9JbnRlbEZzcDJQa2cvVG9vbHMvR2VuQ2ZnT3B0LnB5DQo+ID4gaW5kZXggYzRmYjFm MWJiMi4uMTI4Yjg5NjU5MiAxMDA2NDQNCj4gPiAtLS0gYS9JbnRlbEZzcDJQa2cvVG9vbHMvR2Vu Q2ZnT3B0LnB5DQo+ID4gKysrIGIvSW50ZWxGc3AyUGtnL1Rvb2xzL0dlbkNmZ09wdC5weQ0KPiA+ IEBAIC05NTMsOCArOTUzLDggQEAgRW5kTGlzdA0KPiA+wqAgwqAgwqAgwqAgwqAgcmV0dXJuIE5v RmlsZUNoYW5nZQ0KPiA+DQo+ID7CoCDCoCDCoCBkZWYgQ3JlYXRlU3BsaXRVcGRUeHQgKHNlbGYs IFVwZFR4dEZpbGUpOg0KPiA+IC3CoCDCoCDCoCDCoCBHdWlkTGlzdCA9DQo+IFsnRlNQX1RfVVBE X1RPT0xfR1VJRCcsJ0ZTUF9NX1VQRF9UT09MX0dVSUQnLCdGU1BfU19VUERfVE9PTF9HVUlEDQo+ ICddDQo+ID4gLcKgIMKgIMKgIMKgIFNpZ25hdHVyZUxpc3QgPSBbJzB4NTQ1RicsICcweDRENUYn LCcweDUzNUYnXcKgIMKgIMKgIMKgICPCoCBfVCwgX00sIGFuZCBfUw0KPiBzaWduYXR1cmUgZm9y IEZTUFQsIEZTUE0sIEZTUFMNCj4gPiArwqAgwqAgwqAgwqAgR3VpZExpc3QgPQ0KPiBbJ0ZTUF9U X1VQRF9UT09MX0dVSUQnLCdGU1BfTV9VUERfVE9PTF9HVUlEJywnRlNQX1NfVVBEX1RPT0xfR1VJ RA0KPiAnLCdGU1BfSV9VUERfVE9PTF9HVUlEJ10NCj4gPiArwqAgwqAgwqAgwqAgU2lnbmF0dXJl TGlzdCA9IFsnMHg1NDVGJywgJzB4NEQ1RicsJzB4NTM1RicsJzB4NDk1RiddwqAgwqAgwqAgwqAg I8KgIF9ULCBfTSwgX1MNCj4gYW5kIF9JIHNpZ25hdHVyZSBmb3IgRlNQVCwgRlNQTSwgRlNQUywg RlNQSQ0KPiA+wqAgwqAgwqAgwqAgwqAgZm9yIEluZGV4IGluIHJhbmdlKGxlbihHdWlkTGlzdCkp Og0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgVXBkVHh0RmlsZSA9ICcnDQo+ID7CoCDCoCDCoCDC oCDCoCDCoCDCoCBGdkRpciA9IHNlbGYuX0Z2RGlyDQo+ID4gQEAgLTEyODgsMTkgKzEyODgsMjEg QEAgRW5kTGlzdA0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBDaGFycy5hcHBl bmQoY2hyKFZhbHVlICYgMHhGRikpDQo+ID7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFZhbHVlID0gVmFsdWUgPj4gOA0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTaWduYXR1 cmVTdHIgPSAnJy5qb2luKENoYXJzKQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCMgU2ln bmF0dXJlIHdpbGwgYmUgX1QgLyBfTSAvIF9TIGZvciBGU1BUIC8gRlNQTSAvIEZTUFMgYWNjb3Jk aW5nbHkNCj4gPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAjIFNpZ25hdHVyZSB3aWxsIGJlIF9U IC8gX00gLyBfUyAvIF9JIGZvciBGU1BUIC8gRlNQTSAvIEZTUFMgL0ZTUEkNCj4gYWNjb3JkaW5n bHkNCj4gPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgJ19UJyBpbiBTaWduYXR1cmVTdHJb Njo2KzJdOg0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUeHRCb2R5LmFwcGVu ZCgiI2RlZmluZSBGU1BUX1VQRF9TSUdOQVRVUkXCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCVzwqAg wqAgwqAgwqAgLyoNCj4gJyVzJyAqL1xuXG4iICUgKEl0ZW1bJ3ZhbHVlJ10sIFNpZ25hdHVyZVN0 cikpDQo+ID7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsaWYgJ19NJyBpbiBTaWduYXR1cmVT dHJbNjo2KzJdOg0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUeHRCb2R5LmFw cGVuZCgiI2RlZmluZSBGU1BNX1VQRF9TSUdOQVRVUkXCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCVz wqAgwqAgwqAgwqAgLyoNCj4gJyVzJyAqL1xuXG4iICUgKEl0ZW1bJ3ZhbHVlJ10sIFNpZ25hdHVy ZVN0cikpDQo+ID7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsaWYgJ19TJyBpbiBTaWduYXR1 cmVTdHJbNjo2KzJdOg0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUeHRCb2R5 LmFwcGVuZCgiI2RlZmluZSBGU1BTX1VQRF9TSUdOQVRVUkXCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCVzwqAgwqAgwqAgwqAgLyoNCj4gJyVzJyAqL1xuXG4iICUgKEl0ZW1bJ3ZhbHVlJ10sIFNpZ25h dHVyZVN0cikpDQo+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZWxpZiAnX0knIGluIFNpZ25h dHVyZVN0cls2OjYrMl06DQo+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVHh0Qm9k eS5hcHBlbmQoIiNkZWZpbmUgRlNQSV9VUERfU0lHTkFUVVJFwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAlc8KgIMKgIMKgIMKgIC8qDQo+ICclcycgKi9cblxuIiAlIChJdGVtWyd2YWx1ZSddLCBTaWdu YXR1cmVTdHIpKQ0KPiA+wqAgwqAgwqAgwqAgwqAgVHh0Qm9keS5hcHBlbmQoIlxuIikNCj4gPg0K PiA+wqAgwqAgwqAgwqAgwqAgZm9yIFJlZ2lvbiBpbiBbJ1VQRCddOg0KPiA+wqAgwqAgwqAgwqAg wqAgwqAgwqAgVXBkT2Zmc2V0VGFibGUgPSBbXQ0KPiA+IC3CoCDCoCDCoCDCoCDCoCDCoCBVcGRT aWduYXR1cmUgPSBbJzB4NTQ1RicsICcweDRENUYnLCAnMHg1MzVGJ13CoCDCoCNbJ19UJywgJ19N JywgJ19TJ10NCj4gc2lnbmF0dXJlIGZvciBGU1BULCBGU1BNLCBGU1BTDQo+ID4gLcKgIMKgIMKg IMKgIMKgIMKgIFVwZFN0cnVjdHVyZSA9IFsnRlNQVF9VUEQnLCAnRlNQTV9VUEQnLCAnRlNQU19V UEQnXQ0KPiA+ICvCoCDCoCDCoCDCoCDCoCDCoCBVcGRTaWduYXR1cmUgPSBbJzB4NTQ1RicsICcw eDRENUYnLCAnMHg1MzVGJywgJzB4NDk1RiddwqAgwqAjWydfVCcsICdfTScsDQo+ICdfUycsICdf SSddIHNpZ25hdHVyZSBmb3IgRlNQVCwgRlNQTSwgRlNQUywgRlNQSQ0KPiA+ICvCoCDCoCDCoCDC oCDCoCDCoCBVcGRTdHJ1Y3R1cmUgPSBbJ0ZTUFRfVVBEJywgJ0ZTUE1fVVBEJywgJ0ZTUFNfVVBE JywgJ0ZTUElfVVBEJ10NCj4gPsKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciBJdGVtIGluIHNlbGYu X0NmZ0l0ZW1MaXN0Og0KPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgSXRlbVsiY25h bWUiXSA9PSAnU2lnbmF0dXJlJyBhbmQgSXRlbVsidmFsdWUiXVswOjZdIGluDQo+IFVwZFNpZ25h dHVyZToNCj4gPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEl0ZW1bIm9mZnNldCJd ID0gMCAjIHJlLWluaXRpYWxpemUgb2Zmc2V0IHRvIDAgd2hlbiBuZXcgVVBEDQo+IHN0cnVjdHVy ZSBzdGFydGluZw0KPiA+IEBAIC0xMzkzLDExICsxMzk1LDEyIEBAIEVuZExpc3QNCj4gPsKgIMKg IMKgIMKgIMKgIEhlYWRlclRGaWxlTmFtZSA9ICdGc3B0VXBkLmgnDQo+ID7CoCDCoCDCoCDCoCDC oCBIZWFkZXJNRmlsZU5hbWUgPSAnRnNwbVVwZC5oJw0KPiA+wqAgwqAgwqAgwqAgwqAgSGVhZGVy U0ZpbGVOYW1lID0gJ0ZzcHNVcGQuaCcNCj4gPiArwqAgwqAgwqAgwqAgSGVhZGVySUZpbGVOYW1l ID0gJ0ZzcGlVcGQuaCcNCj4gPg0KPiA+IC3CoCDCoCDCoCDCoCBVcGRSZWdpb25DaGVjayA9IFsn RlNQVCcsICdGU1BNJywgJ0ZTUFMnXcKgIMKgIMKgIyBGU1BYX1VQRF9SRUdJT04NCj4gPiAtwqAg wqAgwqAgwqAgVXBkQ29uZmlnQ2hlY2sgPSBbJ0ZTUF9UJywgJ0ZTUF9NJywgJ0ZTUF9TJ13CoCAj IEZTUF9YX0NPTkZJRywNCj4gRlNQX1hfVEVTVF9DT05GSUcsIEZTUF9YX1JFU1RSSUNURURfQ09O RklHDQo+ID4gLcKgIMKgIMKgIMKgIFVwZFNpZ25hdHVyZUNoZWNrID0gWydGU1BUX1VQRF9TSUdO QVRVUkUnLCAnRlNQTV9VUERfU0lHTkFUVVJFJywNCj4gJ0ZTUFNfVVBEX1NJR05BVFVSRSddDQo+ ID4gLcKgIMKgIMKgIMKgIEV4Y2x1ZGVkU3BlY2lmaWNVcGQgPSBbJ0ZTUFRfQVJDSF9VUEQnLCAn RlNQTV9BUkNIX1VQRCcsDQo+ICdGU1BTX0FSQ0hfVVBEJ10NCj4gPiArwqAgwqAgwqAgwqAgVXBk UmVnaW9uQ2hlY2sgPSBbJ0ZTUFQnLCAnRlNQTScsICdGU1BTJywgJ0ZTUEknXcKgIMKgIMKgIyBG U1BYX1VQRF9SRUdJT04NCj4gPiArwqAgwqAgwqAgwqAgVXBkQ29uZmlnQ2hlY2sgPSBbJ0ZTUF9U JywgJ0ZTUF9NJywgJ0ZTUF9TJywgJ0ZTUF9JJ13CoCAjIEZTUF9YX0NPTkZJRywNCj4gRlNQX1hf VEVTVF9DT05GSUcsIEZTUF9YX1JFU1RSSUNURURfQ09ORklHDQo+ID4gK8KgIMKgIMKgIMKgIFVw ZFNpZ25hdHVyZUNoZWNrID0gWydGU1BUX1VQRF9TSUdOQVRVUkUnLA0KPiAnRlNQTV9VUERfU0lH TkFUVVJFJywgJ0ZTUFNfVVBEX1NJR05BVFVSRScsICdGU1BJX1VQRF9TSUdOQVRVUkUnXQ0KPiA+ ICvCoCDCoCDCoCDCoCBFeGNsdWRlZFNwZWNpZmljVXBkID0gWydGU1BUX0FSQ0hfVVBEJywgJ0ZT UE1fQVJDSF9VUEQnLA0KPiAnRlNQU19BUkNIX1VQRCcsICdGU1BJX0FSQ0hfVVBEJ10NCj4gPsKg IMKgIMKgIMKgIMKgIEV4Y2x1ZGVkU3BlY2lmaWNVcGQxID0gWydGU1BUX0FSQ0gyX1VQRCcsICdG U1BNX0FSQ0gyX1VQRCcsDQo+ICdGU1BTX0FSQ0gyX1VQRCddDQo+ID4NCj4gPsKgIMKgIMKgIMKg IMKgIEluY0xpbmVzID0gW10NCj4gPiBAQCAtMTQyMCw2ICsxNDIzLDkgQEAgRW5kTGlzdA0KPiA+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgZWxpZiBVcGRSZWdpb25DaGVja1tpdGVtXSA9PSAnRlNQUyc6 DQo+ID7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBIZWFkZXJGZCA9IG9wZW4ob3MucGF0aC5q b2luKEZ2RGlyLCBIZWFkZXJTRmlsZU5hbWUpLCAidyIpDQo+ID7CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCBGaWxlQmFzZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5qb2luKEZ2RGlyLCBI ZWFkZXJTRmlsZU5hbWUpKQ0KPiA+ICvCoCDCoCDCoCDCoCDCoCDCoCBlbGlmIFVwZFJlZ2lvbkNo ZWNrW2l0ZW1dID09ICdGU1BJJzoNCj4gPiArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSGVhZGVy RmQgPSBvcGVuKG9zLnBhdGguam9pbihGdkRpciwgSGVhZGVySUZpbGVOYW1lKSwgInciKQ0KPiA+ ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBGaWxlQmFzZSA9IG9zLnBhdGguYmFzZW5hbWUob3Mu cGF0aC5qb2luKEZ2RGlyLCBIZWFkZXJJRmlsZU5hbWUpKQ0KPiA+wqAgwqAgwqAgwqAgwqAgwqAg wqAgRmlsZU5hbWUgPSBGaWxlQmFzZS5yZXBsYWNlKCIuIiwgIl8iKS51cHBlcigpDQo+ID7CoCDC oCDCoCDCoCDCoCDCoCDCoCBIZWFkZXJGZC53cml0ZSgiJXNcbiLCoCDCoCUgKF9fY29weXJpZ2h0 X2hfXyAlIGRhdGUudG9kYXkoKS55ZWFyKSkNCj4gPsKgIMKgIMKgIMKgIMKgIMKgIMKgIEhlYWRl ckZkLndyaXRlKCIjaWZuZGVmIF9fJXNfX1xuIsKgIMKgJSBGaWxlTmFtZSkNCj4gPiBAQCAtMTY5 Niw3ICsxNzAyLDcgQEAgRW5kTGlzdA0KPiA+DQo+ID4NCj4gPsKgIGRlZiBVc2FnZSgpOg0KPiA+ IC3CoCDCoCBwcmludCAoIkdlbkNmZ09wdCBWZXJzaW9uIDAuNTciKQ0KPiA+ICvCoCDCoCBwcmlu dCAoIkdlbkNmZ09wdCBWZXJzaW9uIDAuNTgiKQ0KPiA+wqAgwqAgwqAgcHJpbnQgKCJVc2FnZToi KQ0KPiA+wqAgwqAgwqAgcHJpbnQgKCLCoCDCoCBHZW5DZmdPcHTCoCBVUERUWFTCoCBQbGF0Zm9y bURzY0ZpbGUgQnVpbGRGdkRpcsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgWy1EDQo+IE1hY3Jv c10iKQ0KPiA+wqAgwqAgwqAgcHJpbnQgKCLCoCDCoCBHZW5DZmdPcHTCoCBIRUFERVLCoCBQbGF0 Zm9ybURzY0ZpbGUgQnVpbGRGdkRpcsKgIElucHV0SEZpbGXCoCDCoCDCoFstRA0KPiBNYWNyb3Nd IikNCj4gPiBkaWZmIC0tZ2l0IGEvSW50ZWxGc3AyUGtnL1Rvb2xzL1NwbGl0RnNwQmluLnB5DQo+ IGIvSW50ZWxGc3AyUGtnL1Rvb2xzL1NwbGl0RnNwQmluLnB5DQo+ID4gaW5kZXggZjkxNTFiNWFm ZC4uMzE3ZDljMWZhMCAxMDA2NDQNCj4gPiAtLS0gYS9JbnRlbEZzcDJQa2cvVG9vbHMvU3BsaXRG c3BCaW4ucHkNCj4gPiArKysgYi9JbnRlbEZzcDJQa2cvVG9vbHMvU3BsaXRGc3BCaW4ucHkNCj4g PiBAQCAtMSw2ICsxLDYgQEANCj4gPsKgICMjIEAgU3BsaXRGc3BCaW4ucHkNCj4gPsKgICMNCj4g PiAtIyBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAyMiwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+wqAgIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+wqAgIw0KPiA+wqAgIyMN Cj4gPiBAQCAtNDkyLDcgKzQ5Miw3IEBAIGNsYXNzIEZzcEltYWdlOg0KPiA+wqAgwqAgwqAgwqAg wqAgc2VsZi5GaWhPZmZzZXQgPSBmaWhvZmYNCj4gPsKgIMKgIMKgIMKgIMKgIHNlbGYuT2Zmc2V0 wqAgwqAgPSBvZmZzZXQNCj4gPsKgIMKgIMKgIMKgIMKgIHNlbGYuRnZJZHhMaXN0ID0gW10NCj4g PiAtwqAgwqAgwqAgwqAgc2VsZi5UeXBlwqAgwqAgwqAgPSAiWFRNU1hYWFhPWFhYWFhYWCJbKGZp aC5Db21wb25lbnRBdHRyaWJ1dGUgPj4gMTIpICYNCj4gMHgwRl0NCj4gPiArwqAgwqAgwqAgwqAg c2VsZi5UeXBlwqAgwqAgwqAgPSAiWFRNU0lYWFhYT1hYWFhYWFgiWyhmaWguQ29tcG9uZW50QXR0 cmlidXRlID4+IDEyKSAmDQo+IDB4MEZdDQo+ID7CoCDCoCDCoCDCoCDCoCBzZWxmLlBhdGNoTGlz dCA9IHBhdGNoDQo+ID7CoCDCoCDCoCDCoCDCoCBzZWxmLlBhdGNoTGlzdC5hcHBlbmQoZmlob2Zm ICsgMHgxQykNCj4gPg0KPiA+IEBAIC04NjksNyArODY5LDcgQEAgZGVmIG1haW4gKCk6DQo+ID7C oCDCoCDCoCBwYXJzZXJfcmViYXNlwqAgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3JlYmFzZScs wqAgaGVscD0ncmViYXNlIGEgRlNQIGludG8gYQ0KPiBuZXcgYmFzZSBhZGRyZXNzJykNCj4gPsKg IMKgIMKgIHBhcnNlcl9yZWJhc2Uuc2V0X2RlZmF1bHRzKHdoaWNoPSdyZWJhc2UnKQ0KPiA+wqAg wqAgwqAgcGFyc2VyX3JlYmFzZS5hZGRfYXJndW1lbnQoJy1mJyzCoCAnLS1mc3BiaW4nICwgZGVz dD0nRnNwQmluYXJ5JyzCoCB0eXBlPXN0ciwNCj4gaGVscD0nRlNQIGJpbmFyeSBmaWxlIHBhdGgn LCByZXF1aXJlZCA9IFRydWUpDQo+ID4gLcKgIMKgIHBhcnNlcl9yZWJhc2UuYWRkX2FyZ3VtZW50 KCctYycswqAgJy0tZnNwY29tcCcsDQo+IGNob2ljZXM9Wyd0JywnbScsJ3MnLCdvJ10swqAgbmFy Z3M9JysnLCBkZXN0PSdGc3BDb21wb25lbnQnLCB0eXBlPXN0ciwgaGVscD0nRlNQDQo+IGNvbXBv bmVudCB0byByZWJhc2UnLCBkZWZhdWx0ID0gIlsndCddIiwgcmVxdWlyZWQgPSBUcnVlKQ0KPiA+ ICvCoCDCoCBwYXJzZXJfcmViYXNlLmFkZF9hcmd1bWVudCgnLWMnLMKgICctLWZzcGNvbXAnLA0K PiBjaG9pY2VzPVsndCcsJ20nLCdzJywnbycsJ2knXSzCoCBuYXJncz0nKycsIGRlc3Q9J0ZzcENv bXBvbmVudCcsIHR5cGU9c3RyLCBoZWxwPSdGU1ANCj4gY29tcG9uZW50IHRvIHJlYmFzZScsIGRl ZmF1bHQgPSAiWyd0J10iLCByZXF1aXJlZCA9IFRydWUpDQo+ID7CoCDCoCDCoCBwYXJzZXJfcmVi YXNlLmFkZF9hcmd1bWVudCgnLWInLMKgICctLW5ld2Jhc2UnLCBkZXN0PSdGc3BCYXNlJywgbmFy Z3M9JysnLA0KPiB0eXBlPXN0ciwgaGVscD0nUmViYXNlZCBGU1AgYmluYXJ5IGZpbGUgbmFtZScs IGRlZmF1bHQgPSAnJywgcmVxdWlyZWQgPSBUcnVlKQ0KPiA+wqAgwqAgwqAgcGFyc2VyX3JlYmFz ZS5hZGRfYXJndW1lbnQoJy1vJyzCoCAnLS1vdXRkaXInICwgZGVzdD0nT3V0cHV0RGlyJyzCoCB0 eXBlPXN0ciwNCj4gaGVscD0nT3V0cHV0IGRpcmVjdG9yeSBwYXRoJywgZGVmYXVsdCA9ICcuJykN Cj4gPsKgIMKgIMKgIHBhcnNlcl9yZWJhc2UuYWRkX2FyZ3VtZW50KCctbicswqAgJy0tb3V0Zmls ZScsIGRlc3Q9J091dHB1dEZpbGUnLCB0eXBlPXN0ciwNCj4gaGVscD0nUmViYXNlZCBGU1AgYmlu YXJ5IGZpbGUgbmFtZScsIGRlZmF1bHQgPSAnJykNCj4gPiAtLQ0KPiA+IDIuMzUuMC53aW5kb3dz LjENCj4gDQo+IA0KPiANCj4gDQo+IA0KPiANCj4gDQo+IA0KPiAtLQ0KPiBQZWRybyBGYWxjYXRv DQo=