From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2120.outbound.protection.outlook.com [40.107.117.120]) by sourceware.org (Postfix) with ESMTPS id F42083857736 for ; Mon, 15 May 2023 13:54:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F42083857736 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k7TKCljuEHSdMeFQajYPrbZzxBsNcP43WdjDuSP12+/y+VfySl9IOannsoF/uhvACKb8dqKcgkhUXZdbCwXPwTjCDyi7OaFuv8R2eOX9xG5ijDaQo0Le1OsldnlXB+BB1tVRxEGz93SHHJtTeFK0CdEyo4XUkgSrQRt6MZ24U0K+CoSVkkOUBO7pUmS3dKv27MdVu2Q4sfY6WsjOvS6H5uE5ae9/9cX+PXsvKSdpZwb88o94kI0Xdd4KCDQjnLL2HwIoQqiOHULdvHXJZDnhZ0+PkuiQC1sTLf6lMWnqII4tq1IbLTy21diKBxsWm+bknVuyfyvKuOs4KjOviiCcpA== 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=a3Ji/Qdb1DyoCHX1FEqHR9iy3P9jyA+4krOVZ1OiXpE=; b=kVY9e3uMksWOp6TfsrSQxSEIK6TSjAD4imXmq+mDc/JCRmrCAEdpW97YnZjHDT6B0X9v/cw8ZBmOe4efVWROy7VIvX/oP9RoV7V4f6OFBxBymiUNtlVXclxUohS5klFm6Yha/xGmSU2ZaZjYxR4ddNX61rsRhENgnYv8agmDW2DyvTi5b9JQCCvgp86zpGoRF3bpDtlDBVKhrAVcGa6Vcv79fE6xv455Z//duL7sITOSL0pj0ShK8gPkfFYrOJgJF0gj2YAvnG0iNenyGh8WRuzZ2azUEpYYYAFSlmnUexmCRI31ucajdtSrNujf39GrFraj+S3mRslWVhKzo4Ue7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a3Ji/Qdb1DyoCHX1FEqHR9iy3P9jyA+4krOVZ1OiXpE=; b=7343Dh5fN7MVkqU0OxbEgPNqeREY5ntkzMuK6iGKXd4J0++F/NIzMXpzznYOAozpAVBLL0/q2rt/cDwu8TECGZtAF6vnCQNlShG2jkrMhuw6FrzDUn5V8xyqwshM1tlim1up8rKnmDxgeZJ/Sng9lclLlzyZDmgPRaeuSV/iNFE= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by TYZPR04MB6150.apcprd04.prod.outlook.com (2603:1096:400:25c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.30; Mon, 15 May 2023 13:54:15 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::8e83:7f84:2f6b:5a5%7]) with mapi id 15.20.6387.026; Mon, 15 May 2023 13:54:15 +0000 From: Alexey Lapshin To: "jcmvbkbc@gmail.com" CC: Alexey Gerenkov , "newlib@sourceware.org" , Ivan Grokhotkov Subject: [PATCH, RFC v2 7/8] libgloss: add xtensa port Thread-Topic: [PATCH, RFC v2 7/8] libgloss: add xtensa port Thread-Index: AQHZhzS8om6wa3COykW/RVaR0I8K+g== Date: Mon, 15 May 2023 13:54:15 +0000 Message-ID: References: <1cb9e9f8c8e4e1df52b439184333d628b3532f65.camel@espressif.com> <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> In-Reply-To: <15cedffa7c98bea187abe6041c7542db03dbe834.camel@espressif.com> Accept-Language: en-US Content-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=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|TYZPR04MB6150:EE_ x-ms-office365-filtering-correlation-id: 80bc749c-9bd2-4900-53ab-08db554bdeca x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: U2SBknaI1sue4TVOr02z482uQb4zI+22PoyavgCLA8uuNBmqCzA52IxjD9pju4YNc7Y8mJNLqQCSB7i9kDD/DV0UfRcXhuiDKqK7+oLXG+5qY3u2AZSiHY4mblxCTyEBhXZ03XfMDJy7TO8otBNPFPFx9RvEwaenqdLAPrhjCC3On+BtV/AdL6xVzQ/LoAE5ZxY+lYiopz4MLQ6YioedrRMyjMVKqeSlLzZ3EfpHiU66PGYP2jmZccr+KFGLLotnEH3xH7Ns9t/mctCSjU8yOvTGvQTJF7nds58y6FSFxSqce/QkeVIKgLjY+ZnAlL94FynfHmZZKug9URi4R+83SHwQN7e/NigLhVgupS1pDySAwajWS01R4rXkHUAGIgWYTeHfdlTNyv5j9HaBo5XIOtXEYoRp2EKu6u8G3wAKxq2BibF/4ntwY4AD3masuRA0OuCiU+0QJRtE2MTjINohWmtt5pv0tH0XIkiG6rRNjLQ3gZfNxDXm7yF1uHI6y2ar1A0Q/2iq7ygNHOh0qD5njfi8wx9Z2tRLfrD/Zxu0e/kwgCNrOXYKqTxMW96c9G6k8LsuEij/5pCamrXwpQt8+MBErzjErkYE2G5wBStpaD+mfrf85lVJelc4us87BOUsOlKDzKcH5SQZDANvTGS5UwyPWx+MeMKxU+WpNK6/esEyySQ4VXhOzPolPSfffo/B x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR04MB5736.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(376002)(396003)(366004)(39840400004)(451199021)(83380400001)(66476007)(66556008)(64756008)(66446008)(66946007)(91956017)(76116006)(2616005)(6486002)(26005)(6506007)(55236004)(6512007)(966005)(107886003)(478600001)(54906003)(71200400001)(186003)(30864003)(44832011)(86362001)(8676002)(8936002)(5660300002)(2906002)(36756003)(41300700001)(38070700005)(4326008)(6916009)(316002)(38100700002)(122000001)(84970400001)(66899021)(2004002)(559001)(579004)(357404004)(460985005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TmxJU2tZZFl4eEx0OUptMS9nU29SL3NIbzFYbDJScm93eHBBMGdUQkpTWThZ?= =?utf-8?B?bHI4c2NTU2dpMkpvUWdaK1Qzbk0yYVMxZzNRc0Q3QTNyb0dtVlJtN0IxOFR2?= =?utf-8?B?Tm5FOHBac2Z2RWN4NWlvREF4T09YeEt4VmlScWhWODJnbFEzM2N5QUVUdkJs?= =?utf-8?B?MXV5NFVUMnF0NGIrY3BTUkIwWTBBNmFjNFdkR0V2dnpLNzJvOW5vL3VFQnZu?= =?utf-8?B?anhBMG8rZGtlZ2NxSEpRcWdES1hwdU9ENXlJY2l4VFJ3eFVKdFB1UUU3Qzlo?= =?utf-8?B?TC9HamRxeDJGRkVyRnNrRjVVRnBlTThya0FpRzBBS3FaZ29GbHo4ZmVZak5y?= =?utf-8?B?SzBGZ3JBSXVBcTA0aDMwTDVUNFZzWUNEYlh1ajUrb0ltcERrdk9RalFFRFpX?= =?utf-8?B?N1dCeG1tRnlmWDVNRTdrSVlBU1FvWHFCSE5uUkJTUGQ3ZHgvR2g0VlcxM2px?= =?utf-8?B?d0YvZkovVVFSdlVjNXN3bkVrRjlPdE1uUk00UzZ0V3JjN0hRakVscmxIUExB?= =?utf-8?B?MkFWbnRHSG90VjhVRFVERVluZFN5NGJxb1hhbVpTaVhoek43cVloMzNzcG5y?= =?utf-8?B?L0hUVlduLzRhQkJsZ1R3RHlxbjBROXk3U0hnakpYNjBOa2dUK2hlUFl4dFVG?= =?utf-8?B?cWw5bXVUUFZqQmdKTm5kK0lWenluZldvMU9GLy9tdVEvNm93NzAvNTRaM1NW?= =?utf-8?B?bWhQNHJMTEp4TDFSUEZnREZzQjkxL0lhNUQ3WWRQbTdTS3dWZTlhbzlLcjFM?= =?utf-8?B?L0dtT01oeUtWSytBWDV4OUNJVHZCcTFOaTVpNEhzMVV1dFdBYmtnRTNFREVE?= =?utf-8?B?Und5UGs3TUlvTTJnMThzMzRtNFhXcnJnc3g3a0pUeXJXRHFkekFSWHZ1OGN3?= =?utf-8?B?Z3o1NTZzcGEvNVp2dm9idUc4UGNXUU1UT0h1T0diWDNzenRLakJTR1FWU1cr?= =?utf-8?B?amlna0JGZUs3Z3JOYTBjYWtabkhHcG15bGo5S1JEMVhiWFdqbXZIYWpnb3h3?= =?utf-8?B?czJEWUlJaC9vQW5BVFIveDdMTkRqSG95Rkhac3N1NWQ4QjRXQjhCK1JLWkJi?= =?utf-8?B?WXFYRmNJWDRkK01OWUpBamNYR2hHb0dzR2xwaVJXbDlmSmZML1VESTJRWmlp?= =?utf-8?B?Ym96ZWkxRTZJZnNPa1ViSmRhNTdPSXo2YmVYTXQzOHZUbDRvWFZHRUdKOTE4?= =?utf-8?B?SHNDRk9Ga0duZjQwbXdicVBER3J1cHBLbXdiazd3QjJ2Nlg1MVJYNlFzMzlZ?= =?utf-8?B?TFlWL0ExcWsvd1ZjcFRPb0RybUVvWDVCOUwvVmRPSE5kNXR2RThGUi92SUJS?= =?utf-8?B?dmtNTldmckpZN2ExUGZ5RlcwYWJrMmFzS01xQnlEQXpvb3RWZyt4ZThXN3No?= =?utf-8?B?U3c1aGVRWGtmZXQvUmVYWlgvQjlXTko4MHo4cmlIZkNlc0ExQ2doY0YySnVB?= =?utf-8?B?cURkMlQzbVlETGhPd2VVTWlhb05JWUJLTmc4WktJY0tCdDZZSG0xU2g1Qmxw?= =?utf-8?B?N1RQaGJUMUZzWUZVWjdLdm5hejdHbHBuWVI5TUpGRkoyd2tTTVJCRWNrMkxV?= =?utf-8?B?SmRpYWpoS0tvMDZwVVdNcnVOaEszKzBoVk5jVDlYbUR5OENtOWNoNk5kY2VH?= =?utf-8?B?UlhiSUxWQ0hzOS9pdm1ISk1TZnQrd1VrT3pEejBpL25VMlo5bXE1SDkvbGEz?= =?utf-8?B?bzNJWHF3d3Z2RGt3ME00dTdMMm9SaWgzMStJb092dlBYSFZvanZjYjJ5VWMv?= =?utf-8?B?bXVlay9hRUo3Q0NXeHczQXpCM0FHNGk5RGE4VDRyWm54NU1mQWZrV3VqNW51?= =?utf-8?B?aXFoMk9XZ2s0MUpuMHAzQyt1TjAzY3U2UHRmQ1VIYWQzQmZyajBsaEdQa1M4?= =?utf-8?B?MVhVeGc3MWx3ckdld3Ezbk9uV295VVByV2VCdnFkUVZ5ZjVrUWJoeThrM2xE?= =?utf-8?B?TlUzOVBGM2VHcmZoK291bCt6eWpIN2lsT2gwYjZabmRDaHpIT1E1VjlsZ2tO?= =?utf-8?B?cWxKaFZTOGgwM2JUanY4RStzcEhRTDRkL3pXcGZ1L3dLOUpWZmhaWlM2TFZL?= =?utf-8?B?UktGVjB0cWlpaGxXOVVXbTZHaTFtQlh1b1NYdEJ3U1piemRhc1RqWGo3QXk5?= =?utf-8?B?THhqNmc5MGNKUW5yV1RUZUdFRXZGcjNtdXYyc2owUHpMdkxLc09YODdIRHB6?= =?utf-8?Q?qUycP7pJ0WcWiKrBR40nfO4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80bc749c-9bd2-4900-53ab-08db554bdeca X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2023 13:54:15.1614 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nvPMESB6yLvXhs/sIBuP0j7LacmkPEL9nTAcBrMeVcW5hAlxoMq5KIXb/5A5YiOAfyTbxeGp79ovnInPNmyEmjIzdmvyBCMde4N23NeYr64= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR04MB6150 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: V2l0aCB0aGlzIGltcGxlbWVudGF0aW9uLCB5b3UgY2FuIGJ1aWxkIEVMRiBmaWxlIGFuZCBleGVj dXRlIGl0IG9uDQpiYXJlbWV0YWwgZXNwMzIvZXNwMzJzMyBjaGlwIG9yIFFFTVUgc2ltdWxhdGlv bi4NCg0KQnVpbGQgeW91ciBhcHAgZWFzaWx5IHdpdGggcHJvdmlkZWQgR0NDIHNwZWMgZmlsZXMu DQpTZWUgbW9yZSBkZXRhaWxzIGhlcmU6DQpodHRwczovL2dpdGh1Yi5jb20vZXNwcmVzc2lmL2Vz cC10b29sY2hhaW4tZG9jcy9ibG9iL21haW4vZ2NjL2J1aWxkLWFuZC1ydW4tbmF0aXZlLWFwcC5t ZA0KDQpsaWJnbG9zczoNCiAgICAgICAgKiBjb25maWd1cmU6IGFkZCB4dGVuc2EgcG9ydA0KICAg ICAgICAqIGNvbmZpZ3VyZS5pbjogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL01ha2VmaWxl OiBpbml0aWFsIGNvbW1pdA0KICAgICAgICAqIHh0ZW5zYS9NYWtlZmlsZS5pbjogTGlrZXdpc2Uu DQogICAgICAgICogeHRlbnNhL2FwcC5lbGYubGQ6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5z YS9ib2FyZC5lbGYuc3BlY3M6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNw MzIvYm9hcmQuYzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3AzMi9pbmNs dWRlL3NvYy9jcHUuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3AzMi9p bmNsdWRlL3NvYy91YXJ0Lmg6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNw MzIvbWVtb3J5LmVsZi5sZDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3Az MnMzL2JvYXJkLmM6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9ib2FyZHMvZXNwMzJzMy9p bmNsdWRlL3NvYy9jcHUuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJkcy9lc3Az MnMzL2luY2x1ZGUvc29jL3VhcnQuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL2JvYXJk cy9lc3AzMnMzL21lbW9yeS5lbGYubGQ6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9jb25m aWd1cmU6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9jb25maWd1cmUuaW46IExpa2V3aXNl Lg0KICAgICAgICAqIHh0ZW5zYS9jcnQwLlM6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9j cnQxLWJvYXJkcy5TOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2EvY3J0MS1zaW0uUzogTGlr ZXdpc2UuDQogICAgICAgICogeHRlbnNhL2RlZmF1bHQuc3BlY3M6IExpa2V3aXNlLg0KICAgICAg ICAqIHh0ZW5zYS9pbmNsdWRlL3JlZ2lzdGVyX2FjY2Vzcy5oOiBMaWtld2lzZS4NCiAgICAgICAg KiB4dGVuc2EvaW5jbHVkZS9zeXNjYWxscy5oOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2Ev aW5jbHVkZS94dGVuc2EvY29yZWJpdHMuaDogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL21h aW4uYzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL25hbm8uc3BlY3M6IExpa2V3aXNlLg0K ICAgICAgICAqIHh0ZW5zYS9zaW0tY2FsbC5TOiBMaWtld2lzZS4NCiAgICAgICAgKiB4dGVuc2Ev c2ltLXZlY3RvcnMuUzogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL3NpbS5lbGYuc3BlY3M6 IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9zbGVlcC5TOiBMaWtld2lzZS4NCiAgICAgICAg KiB4dGVuc2Evc3lzLm9wZW5vY2Quc3BlY3M6IExpa2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS9z eXMucWVtdS5zcGVjczogTGlrZXdpc2UuDQogICAgICAgICogeHRlbnNhL3N5c2NhbGxzLmM6IExp a2V3aXNlLg0KICAgICAgICAqIHh0ZW5zYS93aW5kb3ctdmVjdG9ycy5TOiBMaWtld2lzZS4NCi0t LQ0KIGxpYmdsb3NzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUg Kw0KIGxpYmdsb3NzL2NvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kw0KIGxpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAzMjEg KysNCiBsaWJnbG9zcy94dGVuc2EvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgfCAgMzE3 ICsrDQogbGliZ2xvc3MveHRlbnNhL2FwcC5lbGYubGQgICAgICAgICAgICAgICAgICAgIHwgIDE5 MCArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkLmVsZi5zcGVjcyAgICAgICAgICAgICAgIHwgICAg NSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9ib2FyZC5jICAgICAgICAgIHwgICAx OSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvY3B1LmggICAgIHwgICAx MSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvdWFydC5oICAgIHwgICAx OSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9tZW1vcnkuZWxmLmxkICAgIHwgICAy NiArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMgICAgICAgIHwgICAx OSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy9jcHUuaCAgIHwgICAx MSArDQogLi4uL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9pbmNsdWRlL3NvYy91YXJ0LmggIHwgICAx OSArDQogbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL21lbW9yeS5lbGYubGQgIHwgICAy MSArDQogbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgMzc1 MyArKysrKysrKysrKysrKysrKw0KIGxpYmdsb3NzL3h0ZW5zYS9jb25maWd1cmUuaW4gICAgICAg ICAgICAgICAgICB8ICAgNDUgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQwLlMgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMzEgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQxLWJvYXJkcy5TICAgICAg ICAgICAgICAgICB8ICAyMjYgKw0KIGxpYmdsb3NzL3h0ZW5zYS9jcnQxLXNpbS5TICAgICAgICAg ICAgICAgICAgICB8ICAyMDQgKw0KIGxpYmdsb3NzL3h0ZW5zYS9kZWZhdWx0LnNwZWNzICAgICAg ICAgICAgICAgICB8ICAgIDIgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3JlZ2lzdGVyX2Fj Y2Vzcy5oICAgICB8ICAgIDcgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3N5c2NhbGxzLmgg ICAgICAgICAgICB8ICAgNTkgKw0KIGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3h0ZW5zYS9jb3Jl Yml0cy5oICAgICB8ICAxODYgKw0KIGxpYmdsb3NzL3h0ZW5zYS9tYWluLmMgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMTAgKw0KIGxpYmdsb3NzL3h0ZW5zYS9uYW5vLnNwZWNzICAgICAgICAg ICAgICAgICAgICB8ICAgMTggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0tY2FsbC5TICAgICAgICAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0tdmVjdG9ycy5TICAgICAg ICAgICAgICAgICB8ICAxNjMgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zaW0uZWxmLnNwZWNzICAgICAg ICAgICAgICAgICB8ICAgIDUgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zbGVlcC5TICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNjQgKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXMub3Blbm9jZC5zcGVjcyAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcyAgICAg ICAgICAgICAgICB8ICAgIDggKw0KIGxpYmdsb3NzL3h0ZW5zYS9zeXNjYWxscy5jICAgICAgICAg ICAgICAgICAgICB8ICAyMTEgKw0KIGxpYmdsb3NzL3h0ZW5zYS93aW5kb3ctdmVjdG9ycy5TICAg ICAgICAgICAgICB8ICAyNTIgKysNCiAzMyBmaWxlcyBjaGFuZ2VkLCA2MjQ2IGluc2VydGlvbnMo KykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL01ha2VmaWxlDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZS5pbg0KIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJnbG9zcy94dGVuc2EvYXBwLmVsZi5sZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJn bG9zcy94dGVuc2EvYm9hcmQuZWxmLnNwZWNzDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3Nz L3h0ZW5zYS9ib2FyZHMvZXNwMzIvYm9hcmQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9z cy94dGVuc2EvYm9hcmRzL2VzcDMyL2luY2x1ZGUvc29jL2NwdS5oDQogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvaW5jbHVkZS9zb2MvdWFydC5oDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvbWVtb3J5LmVsZi5s ZA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvYm9h cmQuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMv aW5jbHVkZS9zb2MvY3B1LmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL2Jv YXJkcy9lc3AzMnMzL2luY2x1ZGUvc29jL3VhcnQuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJn bG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvbWVtb3J5LmVsZi5sZA0KIGNyZWF0ZSBtb2RlIDEw MDc1NSBsaWJnbG9zcy94dGVuc2EvY29uZmlndXJlDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmds b3NzL3h0ZW5zYS9jb25maWd1cmUuaW4NCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRl bnNhL2NydDAuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvY3J0MS1ib2Fy ZHMuUw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvY3J0MS1zaW0uUw0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvZGVmYXVsdC5zcGVjcw0KIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvaW5jbHVkZS9yZWdpc3Rlcl9hY2Nlc3MuaA0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2EvaW5jbHVkZS9zeXNjYWxscy5oDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3h0ZW5zYS9jb3JlYml0cy5o DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9tYWluLmMNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliZ2xvc3MveHRlbnNhL3NpbS1jYWxsLlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3Mv eHRlbnNhL3NpbS12ZWN0b3JzLlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNh L3NpbS5lbGYuc3BlY3MNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL3NsZWVw LlMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZ2xvc3MveHRlbnNhL3N5cy5vcGVub2NkLnNwZWNz DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcw0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJnbG9zcy94dGVuc2Evc3lzY2FsbHMuYw0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWJnbG9zcy94dGVuc2Evd2luZG93LXZlY3RvcnMuUw0KDQpkaWZmIC0tZ2l0IGEv bGliZ2xvc3MvY29uZmlndXJlIGIvbGliZ2xvc3MvY29uZmlndXJlDQppbmRleCA4MTZiOWM0Yjgu LjA3YTIyMzM5NSAxMDA3NTUNCi0tLSBhL2xpYmdsb3NzL2NvbmZpZ3VyZQ0KKysrIGIvbGliZ2xv c3MvY29uZmlndXJlDQpAQCAtNzEyLDYgKzcxMiw3IEBAIHRpYzZ4DQogaXEyMDAwDQogb3Ixaw0K IHBydQ0KK3h0ZW5zYQ0KIG5pb3MyDQogbGlibm9zeXMnDQogDQpAQCAtMjU5Niw2ICsyNTk3LDEw IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4NCiAgIHBydS0qLSopDQogCXN1YmRpcnM9IiRzdWJkaXJz IHBydSINCiANCisJOzsNCisgIHh0ZW5zYS0qLSopDQorCXN1YmRpcnM9IiRzdWJkaXJzIHh0ZW5z YSINCisNCiAJOzsNCiAgIG5pb3MyLSotKikNCiAJc3ViZGlycz0iJHN1YmRpcnMgbmlvczIiDQpk aWZmIC0tZ2l0IGEvbGliZ2xvc3MvY29uZmlndXJlLmluIGIvbGliZ2xvc3MvY29uZmlndXJlLmlu DQppbmRleCA0MTExNzI0ZTEuLjBiMDhlY2E1NCAxMDA2NDQNCi0tLSBhL2xpYmdsb3NzL2NvbmZp Z3VyZS5pbg0KKysrIGIvbGliZ2xvc3MvY29uZmlndXJlLmluDQpAQCAtMTgyLDYgKzE4Miw5IEBA IGNhc2UgIiR7dGFyZ2V0fSIgaW4NCiAgIHBydS0qLSopDQogCUFDX0NPTkZJR19TVUJESVJTKFtw cnVdKQ0KIAk7Ow0KKyAgeHRlbnNhLSotKikNCisJQUNfQ09ORklHX1NVQkRJUlMoW3h0ZW5zYV0p DQorCTs7DQogICBuaW9zMi0qLSopDQogCUFDX0NPTkZJR19TVUJESVJTKFtuaW9zMl0pDQogCTs7 DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL01ha2VmaWxlIGIvbGliZ2xvc3MveHRlbnNh L01ha2VmaWxlDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi41MjhhNDk0 OGQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZQ0KQEAgLTAs MCArMSwzMjEgQEANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgU291cmNlIGZpbGVzDQorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisNCitnbG9zc19oZHJzID0NCisNCitnbG9zc19zcmNzID0NCisNCitnbG9z c19zcGVjcyA9IFwNCisJZGVmYXVsdC5zcGVjcyBcDQorCW5hbm8uc3BlY3MNCisNCitnbG9zc19s ZHNjcmlwdHMgPQ0KKw0KKyMgRXh0cmEgZmlsZXMNCisNCitjcnRYX3NvdXJjZSA9IGNydDAuUw0K Kw0KK2xpYnN5c19xZW11ICA6PSBsaWJzeXNfcWVtdS5hDQorbGlic3lzX29wZW5vY2QgIDo9IGxp YnN5c19vcGVub2NkLmENCisNCitib2FyZF9vdXRkaXIgPQ0KKw0KKyMgTXVsdGlsaWIgc3VwcG9y dCB2YXJpYWJsZXMuDQorIyBUT1AgaXMgdXNlZCBpbnN0ZWFkIG9mIE1VTFRJe0JVSUxELFNSQ31U T1AuDQorDQorTVVMVElESVJTID0NCitNVUxUSVNVQkRJUiA9DQorTVVMVElETyA9IHRydWUNCitN VUxUSUNMRUFOID0gdHJ1ZQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBCYXNpYyBzZXR1cA0K KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBEZWZhdWx0IGlzIHRvIGJ1aWxkIHRoZSBwcmVyZXFz IG9mIHRoZSBhbGwgdGFyZ2V0IChkZWZpbmVkIGF0IGJvdHRvbSkNCisNCitkZWZhdWx0IDogYWxs DQorLlBIT05ZIDogZGVmYXVsdA0KKw0KKyMgU291cmNlIGRpcmVjdG9yeQ0KKw0KK29ial9kaXIg Oj0gLg0KK3NyY19kaXIgOj0gLg0KK1ZQQVRIICAgOj0gJChzcmNfZGlyKQ0KKw0KKyMgSW5zdGFs bGF0aW9uIGRpcmVjdG9yaWVzDQorDQorcHJlZml4ICA6PSAvdXNyL2xvY2FsDQorREVTVERJUiA/ PSAkKHByZWZpeCkNCisNCitXT1JLRElSIDo9ICQoZGlyICQoYWJzcGF0aCAkKGxhc3R3b3JkICQo TUFLRUZJTEVfTElTVCkpKSkNCisNCitpbnN0YWxsX2hkcnNfZGlyIDo9ICQoREVTVERJUikkKHBy ZWZpeCkvJCh0YXJnZXRfYWxpYXMpL2luY2x1ZGUvbWFjaGluZQ0KK2luc3RhbGxfbGlic19kaXIg ID0gJChERVNURElSKSQocHJlZml4KS8kKHRhcmdldF9hbGlhcykvbGliJHtNVUxUSVNVQkRJUn0N CisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUHJvZ3JhbXMgYW5kIGZsYWdzIA0KKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorDQorIyBDIGNvbXBpbGVyDQorDQorQ0MgICAgICAgICAgICA6PSBAQ0NADQor Q0ZMQUdTICAgICAgICA6PSBAQ0ZMQUdTQA0KK0NQUEZMQUdTICAgICAgPSAtSSQob2JqX2Rpcikg LUkkKHNyY19kaXIpIC1JJChzcmNfZGlyKS9pbmNsdWRlDQorQ09NUElMRSAgICAgICA9ICQoQ0Mp IC1NTUQgLU1QICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKQ0KKw0KKyMgTGlicmFyeSBjcmVhdGlvbg0K Kw0KK0FSICAgICAgICAgICAgOj0gYXINCitSQU5MSUIgICAgICAgIDo9IHJhbmxpYg0KKw0KKyMg SW5zdGFsbGF0aW9uDQorDQorSU5TVEFMTCAgICAgICA6PSAvdXNyL2Jpbi9pbnN0YWxsIC1jDQor SU5TVEFMTF9EQVRBICA6PSAke0lOU1RBTEx9IC1tIDY0NA0KKw0KKyVfb3Blbm9jZC5vOiAlLmMN CisJJChDT01QSUxFKSAtRE9QRU5PQ0RfU0VNSUhPU1RJTkcgLWMgLW8gJEAgJDwNCisNCislX3Fl bXUubzogJS5jDQorCSQoQ09NUElMRSkgLURRRU1VX1NFTUlIT1NUSU5HIC1jIC1vICRAICQ8DQor DQorJS5vIDogJS5TDQorCWVjaG8gIiQoQ09NUElMRSkgJChDRkxBR1MpIg0KKwkkKENPTVBJTEUp IC1jIC1vICRAICQ8DQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEFwcGVuZCB2YXJpYWJsZXMg d2l0aCBib2FyZCBzcGVjaWZpYyBkYXRhDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitUQVJHRVRf Qk9BUkQgPSAkKHN0cmlwICQocGF0c3Vic3QgeHRlbnNhLSUtZWxmLCAlLCAkKHNoZWxsICQoQ0Mp IC1kdW1wbWFjaGluZSkpKQ0KKw0KKyMgYWRkIGJvYXJkIHNwZWNpZmljIHNvdXJjZXMgaWYgYm9h cmQgZXhpc3RzDQoraWZuZXEgKCIkKHdpbGRjYXJkICQoc3JjX2RpcikvYm9hcmRzLyQoVEFSR0VU X0JPQVJEKSkiLCAiIikNCisgIENQUEZMQUdTICs9IC1JJChzcmNfZGlyKS9ib2FyZHMvJChUQVJH RVRfQk9BUkQpL2luY2x1ZGUNCisNCisgIGJvYXJkX291dGRpciArPSAkKFdPUktESVIpL2JvYXJk cy8kKFRBUkdFVF9CT0FSRCkNCisgIGp1bmsgKz0gJChXT1JLRElSKS9ib2FyZHMNCisNCisgIGds b3NzX3NyY3MgKz0gXA0KKyAgICAgICAgd2luZG93LXZlY3RvcnMuUyBcDQorICAgICAgICBzbGVl cC5TIFwNCisgICAgICAgIHN5c2NhbGxzLmMgXA0KKyAgICAgICAgYm9hcmRzLyQoVEFSR0VUX0JP QVJEKS9ib2FyZC5jDQorDQorICBnbG9zc19zcGVjcyArPSBcDQorCXNpbS5lbGYuc3BlY3MgXA0K Kwlib2FyZC5lbGYuc3BlY3MgXA0KKwlzeXMucWVtdS5zcGVjcyBcDQorCXN5cy5vcGVub2NkLnNw ZWNzDQorDQorICBnbG9zc19sZHNjcmlwdHMgKz0gXA0KKwlib2FyZHMvJChUQVJHRVRfQk9BUkQp L21lbW9yeS5lbGYubGQgXA0KKwlhcHAuZWxmLmxkDQorDQorICBzeXNjYWxsc19xZW11X3NyYyAr PSBcDQorICAgICAgICBzeXNjYWxscy5jDQorDQorICBzeXNjYWxsc19vcGVub2NkX3NyYyArPSBc DQorICAgICAgICBzeXNjYWxscy5jDQorDQorICBjcnRYX3NvdXJjZSArPSBjcnQxLXNpbS5TIGNy dDEtYm9hcmRzLlMNCisNCisgIGluc3RhbGxfbGlicyArPSAkKGxpYnN5c19xZW11KQ0KKyAgaW5z dGFsbF9saWJzICs9ICQobGlic3lzX29wZW5vY2QpDQorDQorZW5kaWYNCisNCitCT0FSRFMgOj0g JChwYXRzdWJzdCBib2FyZHMvJSwlLCQod2lsZGNhcmQgYm9hcmRzLyopKQ0KK0NPTU1PTl9DRkxB R1MgOj0gJChDRkxBR1MpDQorDQorDQoraWZlcSAoJChwYXRzdWJzdCAlY2MsLCQobGFzdHdvcmQg JChDQykpKSwpDQorbGliZXNwMzIuYTogQ0ZMQUdTID0gIiQoQ09NTU9OX0NGTEFHUykgLW1jcHU9 ZXNwMzIiDQorZWxzZSBpZmVxICgkKHBhdHN1YnN0ICVjbGFuZywsJChsYXN0d29yZCAkKENDKSkp LCkNCitsaWJlc3AzMi5hOiBDRkxBR1MgPSAkKENPTU1PTl9DRkxBR1MpIC1tYXJjaD1lc3AzMg0K K2Vsc2UNCiskKGVycm9yICJVbmtub3duIGNvbXBpbGVyIC0gJChDQykiKQ0KK2VuZGlmDQorDQor DQorJChsaWJnbG9zc19ib2FyZHMpOiBDRkxBR1MgPSAiJChDT01NT05fQ0ZMQUdTKSAtbWNwdT1l c3AzMiINCitnbG9zc19hc21fb2Jqcz0kKGdsb3NzX3NyY3M6JS5TPWVzcDMyLyUubykNCitnbG9z c19vYmpzICs9ICQoZ2xvc3NfY19vYmpzKQ0KKyQoQk9BUkRTOiU9bGliJS5hKTogJChnbG9zc19l c3AzMl9vYmpzKQ0KKwllY2hvICIkQCAkXiAkKENGTEFHUykgJChnbG9zc19jX3NyY3M6JS5jPSVf JF4ubykiDQorCSQoQVIpIHJjdiAkQCAkXg0KKwkkKFJBTkxJQikgJEANCisNCitpbnN0YWxsX2xp YnMgKz0gJChCT0FSRFM6JT1saWIlLmEpDQorDQorJChib2FyZF9vdXRkaXIpOg0KKwlta2RpciAt cCAkQA0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBCdWlsZCBPYmplY3QgRmlsZXMgZnJvbSBD IFNvdXJjZQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBsaWJnbG9zcw0KK2dsb3NzX2Nfc3Jj cyA9ICQoZmlsdGVyICUuYywgJChnbG9zc19zcmNzKSkNCitnbG9zc19jX29ianMgKz0gJChnbG9z c19jX3NyY3M6JS5jPSUubykNCitnbG9zc19jX2RlcHMgPSAkKGdsb3NzX2Nfc3JjczolLmM9JS5k KQ0KKw0KK2dsb3NzX29ianMgKz0gJChnbG9zc19jX29ianMpDQorZGVwcyArPSAkKGdsb3NzX2Nf ZGVwcykNCitqdW5rICs9ICQoZ2xvc3NfY19kZXBzKSAkKGdsb3NzX2Nfb2JqcykNCisNCisjIGxp YnN5c19xZW11DQorc3lzY2FsbHNfcWVtdV9jX3NyY3MgPSAkKGZpbHRlciAlLmMsICQoc3lzY2Fs bHNfcWVtdV9zcmMpKQ0KK3N5c2NhbGxzX3FlbXVfb2JqcyA9ICQoc3lzY2FsbHNfcWVtdV9jX3Ny Y3M6JS5jPSVfcWVtdS5vKQ0KK3N5c2NhbGxzX3FlbXVfY19kZXBzID0gJChzeXNjYWxsc19xZW11 X2Nfc3JjczolLmM9JV9xZW11LmQpDQorDQorc3lzY2FsbHNfcWVtdV9vYmpzICs9ICQoc3lzY2Fs bHNfcWVtdV9jX29ianMpDQorZGVwcyArPSAkKHN5c2NhbGxzX3FlbXVfY19kZXBzKQ0KK2p1bmsg Kz0gJChzeXNjYWxsc19xZW11X2NfZGVwcykgJChzeXNjYWxsc19xZW11X2Nfb2JqcykNCisNCisj IGxpYnN5c19vcGVub2NkDQorc3lzY2FsbHNfb3Blbm9jZF9jX3NyY3MgPSAkKGZpbHRlciAlLmMs ICQoc3lzY2FsbHNfb3Blbm9jZF9zcmMpKQ0KK3N5c2NhbGxzX29wZW5vY2RfY19vYmpzID0gJChz eXNjYWxsc19vcGVub2NkX2Nfc3JjczolLmM9JV9vcGVub2NkLm8pDQorc3lzY2FsbHNfb3Blbm9j ZF9jX2RlcHMgPSAkKHN5c2NhbGxzX29wZW5vY2RfY19zcmNzOiUuYz0lX29wZW5vY2QuZCkNCisN CitzeXNjYWxsc19vcGVub2NkX29ianMgKz0gJChzeXNjYWxsc19vcGVub2NkX2Nfb2JqcykNCitk ZXBzICs9ICQoc3lzY2FsbHNfb3Blbm9jZF9jX2RlcHMpDQoranVuayArPSAkKHN5c2NhbGxzX29w ZW5vY2RfY19kZXBzKSAkKHN5c2NhbGxzX29wZW5vY2RfY19vYmpzKQ0KKw0KKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQorIyBCdWlsZCBPYmplY3QgRmlsZXMgZnJvbSBBc3NlbWJseSBTb3VyY2UNCitnbG9z c19hc21fc3JjcyA9ICQoZmlsdGVyICUuUywgJChnbG9zc19zcmNzKSkNCitnbG9zc19hc21fb2Jq cyArPSAkKHBhdHN1YnN0ICUuUywgJS5vLCAkKG5vdGRpciAkKGdsb3NzX2FzbV9zcmNzKSkpDQor Z2xvc3NfYXNtX2RlcHMgPSAkKHBhdHN1YnN0ICUuUywgJS5kLCAkKG5vdGRpciAkKGdsb3NzX2Fz bV9zcmNzKSkpDQorDQorZ2xvc3Nfb2JqcyArPSAkKGdsb3NzX2FzbV9vYmpzKQ0KK2RlcHMgKz0g JChnbG9zc19hc21fZGVwcykNCitqdW5rICs9ICQoZ2xvc3NfYXNtX2RlcHMpICQoZ2xvc3NfYXNt X29ianMpDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEJ1aWxkIGxpYmdsb3NzLmENCisjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KKw0KK2dsb3NzX2xpYiAgPSBsaWJnbG9zcy5hDQorJChnbG9zc19saWIp IDogJChnbG9zc19vYmpzKQ0KKwkkKEFSKSByY3YgJEAgJF4NCisJJChSQU5MSUIpICRADQorDQor anVuayArPSAkKGdsb3NzX2xpYikNCisNCitpbnN0YWxsX2hkcnMgKz0gJChnbG9zc19oZHJzKQ0K K2luc3RhbGxfbGlicyArPSAkKGdsb3NzX2xpYikNCitpbnN0YWxsX3NwZWNzICs9ICQoZ2xvc3Nf c3BlY3MpDQoraW5zdGFsbF9sZHNjcmlwdHMgKz0gJChnbG9zc19sZHNjcmlwdHMpDQorDQorIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCisjIEJ1aWxkIGxpYnN5c19xZW11LmENCisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KKw0KKyQobGlic3lzX3FlbXUpIDogJChzeXNjYWxsc19xZW11X29ianMpDQorCSQoQVIpIHJj diAkQCAkXg0KKwkkKFJBTkxJQikgJEANCisNCitqdW5rICs9ICQobGlic3lzX3FlbXUpDQorDQor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCisjIEJ1aWxkIGxpYnN5c19vcGVub2NkLmENCisjLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKw0KKyQobGlic3lzX29wZW5vY2QpIDogJChzeXNjYWxsc19vcGVub2NkX29ianMp DQorCSQoQVIpIHJjdiAkQCAkXg0KKwkkKFJBTkxJQikgJEANCisNCitqdW5rICs9ICQobGlic3lz X29wZW5vY2QpDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEJ1aWxkIGNydFggb2JqZWN0IGZp bGVzDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitjcnRYX29iaiAgPSAkKHBhdHN1YnN0ICUuUywg JS5vLCAkKGNydFhfc291cmNlKSkNCitjcnRYX2RlcHMgPSAkKHBhdHN1YnN0ICUuUywgJS5kLCAk KGNydFhfc291cmNlKSkNCisNCitkZXBzICs9ICQoY3J0WF9kZXBzKQ0KK2p1bmsgKz0gJChjcnRY X2RlcHMpICQoY3J0WF9vYmopDQorDQoraW5zdGFsbF9saWJzICs9ICQoY3J0WF9vYmopDQorDQor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCisjIEF1dG9kZXBlbmRlbmN5IGZpbGVzDQorIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCisNCistaW5jbHVkZSAkKGRlcHMpDQorDQorZGVwcyA6ICQoZGVwcykNCisuUEhPTlkg OiBkZXBzDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEluc3RhbGxhdGlvbg0KKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQorDQoraW5zdGFsbF9oZHJzX3dkaXIgKz0gJChhZGRwcmVmaXggJChzcmNfZGly KS8sICQoaW5zdGFsbF9oZHJzKSkNCitpbnN0YWxsLWhkcnMgOiAkKGluc3RhbGxfaGRyc193ZGly KQ0KKwl0ZXN0IC1kICQoaW5zdGFsbF9oZHJzX2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2hk cnNfZGlyKQ0KKwlmb3IgZmlsZSBpbiAkXjsgZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmls ZSAkKGluc3RhbGxfaGRyc19kaXIpLzsgXA0KKwlkb25lDQorDQoraW5zdGFsbC1saWJzIDogJChp bnN0YWxsX2xpYnMpDQorCXRlc3QgLWQgJChpbnN0YWxsX2xpYnNfZGlyKSB8fCBta2RpciAtcCAk KGluc3RhbGxfbGlic19kaXIpDQorCWZvciBmaWxlIGluICReOyBkbyBcDQorCQkkKElOU1RBTExf REFUQSkgJCRmaWxlICQoaW5zdGFsbF9saWJzX2RpcikvJCRmaWxlOyBcDQorCWRvbmUNCisNCitp bnN0YWxsLXNwZWNzIDogJChpbnN0YWxsX3NwZWNzKQ0KKwl0ZXN0IC1kICQoaW5zdGFsbF9saWJz X2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2xpYnNfZGlyKQ0KKwlmb3IgZmlsZSBpbiAkXjsg ZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGluc3RhbGxfbGlic19kaXIpLzsgXA0K Kwlkb25lDQorDQoraW5zdGFsbC1sZHNjcmlwdHMgOiAkKGluc3RhbGxfbGRzY3JpcHRzKQ0KKwl0 ZXN0IC1kICQoaW5zdGFsbF9saWJzX2RpcikgfHwgbWtkaXIgLXAgJChpbnN0YWxsX2xpYnNfZGly KQ0KKwlmb3IgZmlsZSBpbiAkXjsgZG8gXA0KKwkJJChJTlNUQUxMX0RBVEEpICQkZmlsZSAkKGlu c3RhbGxfbGlic19kaXIpLzsgXA0KKwlkb25lDQorDQoraW5zdGFsbCA6IGluc3RhbGwtaGRycyBp bnN0YWxsLWxpYnMgaW5zdGFsbC1zcGVjcyBpbnN0YWxsLWxkc2NyaXB0cw0KKy5QSE9OWSA6IGlu c3RhbGwgaW5zdGFsbC1oZHJzIGluc3RhbGwtbGlicw0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor IyBSZWdlbmVyYXRlIGNvbmZpZ3VyZSBpbmZvcm1hdGlvbg0KKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor DQorY29uZmlndXJlX3ByZXJlcSA9IFwNCisgICQoc3JjX2RpcikvY29uZmlndXJlLmluIFwNCisN CiskKHNyY19kaXIpL2NvbmZpZ3VyZSA6ICQoY29uZmlndXJlX3ByZXJlcSkNCisJY2QgJChzcmNf ZGlyKSAmJiBhdXRvY29uZg0KKw0KK2NvbmZpZy5zdGF0dXMgOiAkKHNyY19kaXIpL2NvbmZpZ3Vy ZQ0KKwkuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrDQorDQorTWFrZWZpbGUgOiAkKHNyY19kaXIp L01ha2VmaWxlLmluIGNvbmZpZy5zdGF0dXMNCisJLi9jb25maWcuc3RhdHVzDQorDQorZGlzdF9q dW5rICs9IGNvbmZpZy5zdGF0dXMgTWFrZWZpbGUgY29uZmlnLmxvZw0KKw0KKyMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQorIyBEZWZhdWx0DQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCithbGwgOiAkKGJvYXJk X291dGRpcikgJChpbnN0YWxsX2xpYnMpDQorLlBIT05ZIDogYWxsDQorDQorIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCisjIENsZWFuIHVwIGp1bmsNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NsZWFuIDoN CisJcm0gLXJmICp+IFwjKiAkKGp1bmspDQorDQorZGlzdGNsZWFuIDoNCisJcm0gLXJmICp+IFwj KiAkKGp1bmspICQoZGlzdF9qdW5rKQ0KKw0KKy5QSE9OWSA6IGNsZWFuIGRpc3RjbGVhbg0KZGlm ZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9NYWtlZmlsZS5pbiBiL2xpYmdsb3NzL3h0ZW5zYS9N YWtlZmlsZS5pbg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNGNhNDQ4 OWY5DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvTWFrZWZpbGUuaW4NCkBA IC0wLDAgKzEsMzE3IEBADQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFNvdXJjZSBmaWxlcw0KKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorDQorZ2xvc3NfaGRycyA9DQorDQorZ2xvc3Nfc3JjcyA9DQorDQor Z2xvc3Nfc3BlY3MgPSBcDQorCWRlZmF1bHQuc3BlY3MgXA0KKwluYW5vLnNwZWNzDQorDQorZ2xv c3NfbGRzY3JpcHRzID0NCisNCisjIEV4dHJhIGZpbGVzDQorDQorY3J0WF9zb3VyY2UgPSBjcnQw LlMNCisNCitsaWJzeXNfcWVtdSAgOj0gbGlic3lzX3FlbXUuYQ0KK2xpYnN5c19vcGVub2NkICA6 PSBsaWJzeXNfb3Blbm9jZC5hDQorDQorYm9hcmRfb3V0ZGlyID0NCisNCisjIE11bHRpbGliIHN1 cHBvcnQgdmFyaWFibGVzLg0KKyMgVE9QIGlzIHVzZWQgaW5zdGVhZCBvZiBNVUxUSXtCVUlMRCxT UkN9VE9QLg0KKw0KK01VTFRJRElSUyA9DQorTVVMVElTVUJESVIgPQ0KK01VTFRJRE8gPSB0cnVl DQorTVVMVElDTEVBTiA9IHRydWUNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQmFzaWMgc2V0 dXANCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgRGVmYXVsdCBpcyB0byBidWlsZCB0aGUgcHJl cmVxcyBvZiB0aGUgYWxsIHRhcmdldCAoZGVmaW5lZCBhdCBib3R0b20pDQorDQorZGVmYXVsdCA6 IGFsbA0KKy5QSE9OWSA6IGRlZmF1bHQNCisNCisjIFNvdXJjZSBkaXJlY3RvcnkNCisNCitvYmpf ZGlyIDo9IC4NCitzcmNfZGlyIDo9IEBzcmNkaXJADQorVlBBVEggICA6PSAkKHNyY19kaXIpDQor DQorIyBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMNCisNCitwcmVmaXggIDo9IEBwcmVmaXhADQor REVTVERJUiA/PSAkKHByZWZpeCkNCisNCitXT1JLRElSIDo9ICQoZGlyICQoYWJzcGF0aCAkKGxh c3R3b3JkICQoTUFLRUZJTEVfTElTVCkpKSkNCisNCitpbnN0YWxsX2hkcnNfZGlyIDo9ICQoREVT VERJUikkKHByZWZpeCkvJCh0YXJnZXRfYWxpYXMpL2luY2x1ZGUvbWFjaGluZQ0KK2luc3RhbGxf bGlic19kaXIgID0gJChERVNURElSKSQocHJlZml4KS8kKHRhcmdldF9hbGlhcykvbGliJHtNVUxU SVNVQkRJUn0NCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUHJvZ3JhbXMgYW5kIGZsYWdzDQor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIEMgY29tcGlsZXINCisNCitDQyAgICAgICAgICAgIDo9 IEBDQ0ANCitDRkxBR1MgICAgICAgIDo9IEBDRkxBR1NADQorQ1BQRkxBR1MgICAgICA9IC1JJChv YmpfZGlyKSAtSSQoc3JjX2RpcikgLUkkKHNyY19kaXIpL2luY2x1ZGUNCitDT01QSUxFICAgICAg ID0gJChDQykgLU1NRCAtTVAgJChDUFBGTEFHUykgJChDRkxBR1MpDQorDQorIyBMaWJyYXJ5IGNy ZWF0aW9uDQorDQorQVIgICAgICAgICAgICA6PSBAQVJADQorUkFOTElCICAgICAgICA6PSBAUkFO TElCQA0KKw0KKyMgSW5zdGFsbGF0aW9uDQorDQorSU5TVEFMTCAgICAgICA6PSBASU5TVEFMTEAN CitJTlNUQUxMX0RBVEEgIDo9IEBJTlNUQUxMX0RBVEFADQorDQorJV9vcGVub2NkLm86ICUuYw0K KwkkKENPTVBJTEUpIC1ET1BFTk9DRF9TRU1JSE9TVElORyAtYyAtbyAkQCAkPA0KKw0KKyVfcWVt dS5vOiAlLmMNCisJJChDT01QSUxFKSAtRFFFTVVfU0VNSUhPU1RJTkcgLWMgLW8gJEAgJDwNCisN CislLm8gOiAlLlMNCisJJChDT01QSUxFKSAtYyAtbyAkQCAkPA0KKw0KKyMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQorIyBBcHBlbmQgdmFyaWFibGVzIHdpdGggYm9hcmQgc3BlY2lmaWMgZGF0YQ0KKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQorDQorIyBhY3R1YWxseSBYdGVuc2EgYGJvYXJkc2AgZGlyIGNvbnRhaW5z IHN1YmRpcnMgZm9yIGRpZmZlcmVudCBjaGlwcywNCisjIHNvIHdlIG5lZWQgdG8gZGV0ZWN0IGNo aXAgZnJvbSBjb21tYW5kIGxpbmUgYW5kIHNlbGVjdCBwcm9wZXIgYm9hcmQgc3ViZGlyIChpZiBh bnkpIGZvciBidWlsZA0KK2lmZXEgKCQoc2hlbGwgJChDQykgLXYgMj4mMSB8IGdyZXAgLWMgImNs YW5nIHZlcnNpb24iKSwgMSkNCisgICAgaWZlcSAoJChzaGVsbCAkKENDKSAtZHVtcG1hY2hpbmUg Mj4mMSksIHh0ZW5zYS1lc3AtdW5rbm93bi1lbGYpDQorICAgICAgICBUQVJHRVRfQk9BUkQgPSAk KHN0cmlwICQocGF0c3Vic3QgLW1jcHU9JSwgJSwgJChmaWx0ZXIgLW1jcHU9JSwgJChDQykpKSkN CisgICAgICAgIGlmZXEgKCIkKFRBUkdFVF9CT0FSRCkiLCAiIikNCisgICAgICAgICAgICBUQVJH RVRfQk9BUkQgPSBlc3AzMg0KKyAgICAgICAgZW5kaWYNCisgICAgZW5kaWYNCitlbHNlDQorICAg IFRBUkdFVF9CT0FSRCA9ICQoc3RyaXAgJChwYXRzdWJzdCB4dGVuc2EtJS1lbGYsICUsICQoc2hl bGwgJChDQykgLWR1bXBtYWNoaW5lKSkpDQorZW5kaWYNCisNCisjIGFkZCBib2FyZCBzcGVjaWZp YyBzb3VyY2VzIGlmIGJvYXJkIGV4aXN0cw0KK2lmbmVxICgiJCh3aWxkY2FyZCAkKHNyY19kaXIp L2JvYXJkcy8kKFRBUkdFVF9CT0FSRCkpIiwgIiIpDQorCUNQUEZMQUdTICs9IC1JJChzcmNfZGly KS9ib2FyZHMvJChUQVJHRVRfQk9BUkQpL2luY2x1ZGUNCisNCisJYm9hcmRfb3V0ZGlyICs9ICQo V09SS0RJUikvYm9hcmRzLyQoVEFSR0VUX0JPQVJEKQ0KKwlqdW5rICs9ICQoV09SS0RJUikvYm9h cmRzDQorDQorCWdsb3NzX3NyY3MgKz0gXA0KKwkJd2luZG93LXZlY3RvcnMuUyBcDQorCQlzbGVl cC5TIFwNCisJCXN5c2NhbGxzLmMgXA0KKwkJYm9hcmRzLyQoVEFSR0VUX0JPQVJEKS9ib2FyZC5j DQorDQorCWdsb3NzX3NwZWNzICs9IFwNCisJCXNpbS5lbGYuc3BlY3MgXA0KKwkJYm9hcmQuZWxm LnNwZWNzIFwNCisJCXN5cy5xZW11LnNwZWNzIFwNCisJCXN5cy5vcGVub2NkLnNwZWNzDQorDQor CWdsb3NzX2xkc2NyaXB0cyArPSBcDQorCQlib2FyZHMvJChUQVJHRVRfQk9BUkQpL21lbW9yeS5l bGYubGQgXA0KKwkJYXBwLmVsZi5sZA0KKw0KKwlzeXNjYWxsc19xZW11X3NyYyArPSBcDQorCQlz aW0tdmVjdG9ycy5TIFwNCisJCXNpbS1jYWxsLlMgXA0KKwkJc3lzY2FsbHMuYw0KKw0KKwlzeXNj YWxsc19vcGVub2NkX3NyYyArPSBcDQorCQlzeXNjYWxscy5jDQorDQorCWNydFhfc291cmNlICs9 IGNydDEtc2ltLlMgY3J0MS1ib2FyZHMuUw0KKw0KKwlpbnN0YWxsX2xpYnMgKz0gJChsaWJzeXNf cWVtdSkNCisJaW5zdGFsbF9saWJzICs9ICQobGlic3lzX29wZW5vY2QpDQorZW5kaWYNCisNCisk KGJvYXJkX291dGRpcik6DQorCW1rZGlyIC1wICRADQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisj IEJ1aWxkIE9iamVjdCBGaWxlcyBmcm9tIEMgU291cmNlDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisN CisjIGxpYmdsb3NzDQorZ2xvc3NfY19zcmNzID0gJChmaWx0ZXIgJS5jLCAkKGdsb3NzX3NyY3Mp KQ0KK2dsb3NzX2Nfb2JqcyA9ICQoZ2xvc3NfY19zcmNzOiUuYz0lLm8pDQorZ2xvc3NfY19kZXBz ID0gJChnbG9zc19jX3NyY3M6JS5jPSUuZCkNCisNCitnbG9zc19vYmpzICs9ICQoZ2xvc3NfY19v YmpzKQ0KK2RlcHMgKz0gJChnbG9zc19jX2RlcHMpDQoranVuayArPSAkKGdsb3NzX2NfZGVwcykg JChnbG9zc19jX29ianMpDQorDQorIyBsaWJzeXNfcWVtdQ0KK3N5c2NhbGxzX3FlbXVfY19zcmNz ID0gJChmaWx0ZXIgJS5jLCAkKHN5c2NhbGxzX3FlbXVfc3JjKSkNCitzeXNjYWxsc19xZW11X2Nf b2JqcyA9ICQoc3lzY2FsbHNfcWVtdV9jX3NyY3M6JS5jPSVfcWVtdS5vKQ0KK3N5c2NhbGxzX3Fl bXVfY19kZXBzID0gJChzeXNjYWxsc19xZW11X2Nfc3JjczolLmM9JV9xZW11LmQpDQorDQorc3lz Y2FsbHNfcWVtdV9vYmpzICs9ICQoc3lzY2FsbHNfcWVtdV9jX29ianMpDQorZGVwcyArPSAkKHN5 c2NhbGxzX3FlbXVfY19kZXBzKQ0KK2p1bmsgKz0gJChzeXNjYWxsc19xZW11X2NfZGVwcykgJChz eXNjYWxsc19xZW11X2Nfb2JqcykNCisNCisjIGxpYnN5c19vcGVub2NkDQorc3lzY2FsbHNfb3Bl bm9jZF9jX3NyY3MgPSAkKGZpbHRlciAlLmMsICQoc3lzY2FsbHNfb3Blbm9jZF9zcmMpKQ0KK3N5 c2NhbGxzX29wZW5vY2RfY19vYmpzID0gJChzeXNjYWxsc19vcGVub2NkX2Nfc3JjczolLmM9JV9v cGVub2NkLm8pDQorc3lzY2FsbHNfb3Blbm9jZF9jX2RlcHMgPSAkKHN5c2NhbGxzX29wZW5vY2Rf Y19zcmNzOiUuYz0lX29wZW5vY2QuZCkNCisNCitzeXNjYWxsc19vcGVub2NkX29ianMgKz0gJChz eXNjYWxsc19vcGVub2NkX2Nfb2JqcykNCitkZXBzICs9ICQoc3lzY2FsbHNfb3Blbm9jZF9jX2Rl cHMpDQoranVuayArPSAkKHN5c2NhbGxzX29wZW5vY2RfY19kZXBzKSAkKHN5c2NhbGxzX29wZW5v Y2RfY19vYmpzKQ0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBCdWlsZCBPYmplY3QgRmlsZXMg ZnJvbSBBc3NlbWJseSBTb3VyY2UNCitnbG9zc19hc21fc3JjcyA9ICQoZmlsdGVyICUuUywgJChn bG9zc19zcmNzKSkNCitnbG9zc19hc21fb2JqcyA9ICQocGF0c3Vic3QgJS5TLCAlLm8sICQobm90 ZGlyICQoZ2xvc3NfYXNtX3NyY3MpKSkNCitnbG9zc19hc21fZGVwcyA9ICQocGF0c3Vic3QgJS5T LCAlLmQsICQobm90ZGlyICQoZ2xvc3NfYXNtX3NyY3MpKSkNCisNCitnbG9zc19vYmpzICs9ICQo Z2xvc3NfYXNtX29ianMpDQorZGVwcyArPSAkKGdsb3NzX2FzbV9kZXBzKQ0KK2p1bmsgKz0gJChn bG9zc19hc21fZGVwcykgJChnbG9zc19hc21fb2JqcykNCisNCitzeXNjYWxsc19xZW11X2FzbV9z cmNzID0gJChmaWx0ZXIgJS5TLCAkKHN5c2NhbGxzX3FlbXVfc3JjKSkNCitzeXNjYWxsc19xZW11 X2FzbV9vYmpzID0gJChwYXRzdWJzdCAlLlMsICUubywgJChub3RkaXIgJChzeXNjYWxsc19xZW11 X2FzbV9zcmNzKSkpDQorc3lzY2FsbHNfcWVtdV9hc21fZGVwcyA9ICQocGF0c3Vic3QgJS5TLCAl LmQsICQobm90ZGlyICQoc3lzY2FsbHNfcWVtdV9hc21fc3JjcykpKQ0KKw0KK3N5c2NhbGxzX3Fl bXVfb2JqcyArPSAkKHN5c2NhbGxzX3FlbXVfYXNtX29ianMpDQorZGVwcyArPSAkKHN5c2NhbGxz X3FlbXVfYXNtX2RlcHMpDQoranVuayArPSAkKHN5c2NhbGxzX3FlbXVfYXNtX2RlcHMpICQoc3lz Y2FsbHNfcWVtdV9hc21fb2JqcykNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQnVpbGQgbGli Z2xvc3MuYQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorZ2xvc3NfbGliICA9IGxpYmdsb3NzLmEN CiskKGdsb3NzX2xpYikgOiAkKGdsb3NzX29ianMpDQorCSQoQVIpIHJjdiAkQCAkXg0KKwkkKFJB TkxJQikgJEANCisNCitqdW5rICs9ICQoZ2xvc3NfbGliKQ0KKw0KK2luc3RhbGxfaGRycyArPSAk KGdsb3NzX2hkcnMpDQoraW5zdGFsbF9saWJzICs9ICQoZ2xvc3NfbGliKQ0KK2luc3RhbGxfc3Bl Y3MgKz0gJChnbG9zc19zcGVjcykNCitpbnN0YWxsX2xkc2NyaXB0cyArPSAkKGdsb3NzX2xkc2Ny aXB0cykNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQnVpbGQgbGlic3lzX3FlbXUuYQ0KKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQorDQorJChsaWJzeXNfcWVtdSkgOiAkKHN5c2NhbGxzX3FlbXVfb2Jq cykNCisJJChBUikgcmN2ICRAICReDQorCSQoUkFOTElCKSAkQA0KKw0KK2p1bmsgKz0gJChsaWJz eXNfcWVtdSkNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQnVpbGQgbGlic3lzX29wZW5vY2Qu YQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorJChsaWJzeXNfb3Blbm9jZCkgOiAkKHN5c2NhbGxz X29wZW5vY2Rfb2JqcykNCisJJChBUikgcmN2ICRAICReDQorCSQoUkFOTElCKSAkQA0KKw0KK2p1 bmsgKz0gJChsaWJzeXNfb3Blbm9jZCkNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQnVpbGQg Y3J0WCBvYmplY3QgZmlsZXMNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2NydFhfb2JqICA9ICQo cGF0c3Vic3QgJS5TLCAlLm8sICQoY3J0WF9zb3VyY2UpKQ0KK2NydFhfZGVwcyA9ICQocGF0c3Vi c3QgJS5TLCAlLmQsICQoY3J0WF9zb3VyY2UpKQ0KKw0KK2RlcHMgKz0gJChjcnRYX2RlcHMpDQor anVuayArPSAkKGNydFhfZGVwcykgJChjcnRYX29iaikNCisNCitpbnN0YWxsX2xpYnMgKz0gJChj cnRYX29iaikNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQXV0b2RlcGVuZGVuY3kgZmlsZXMN CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKy1pbmNsdWRlICQoZGVwcykNCisNCitkZXBzIDogJChk ZXBzKQ0KKy5QSE9OWSA6IGRlcHMNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgSW5zdGFsbGF0 aW9uDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitpbnN0YWxsX2hkcnNfd2RpciArPSAkKGFkZHBy ZWZpeCAkKHNyY19kaXIpLywgJChpbnN0YWxsX2hkcnMpKQ0KK2luc3RhbGwtaGRycyA6ICQoaW5z dGFsbF9oZHJzX3dkaXIpDQorCXRlc3QgLWQgJChpbnN0YWxsX2hkcnNfZGlyKSB8fCBta2RpciAt cCAkKGluc3RhbGxfaGRyc19kaXIpDQorCWZvciBmaWxlIGluICReOyBkbyBcDQorCQkkKElOU1RB TExfREFUQSkgJCRmaWxlICQoaW5zdGFsbF9oZHJzX2RpcikvOyBcDQorCWRvbmUNCisNCitpbnN0 YWxsLWxpYnMgOiAkKGluc3RhbGxfbGlicykNCisJdGVzdCAtZCAkKGluc3RhbGxfbGlic19kaXIp IHx8IG1rZGlyIC1wICQoaW5zdGFsbF9saWJzX2RpcikNCisJZm9yIGZpbGUgaW4gJF47IGRvIFwN CisJCSQoSU5TVEFMTF9EQVRBKSAkJGZpbGUgJChpbnN0YWxsX2xpYnNfZGlyKS8kJGZpbGU7IFwN CisJZG9uZQ0KKw0KK2luc3RhbGwtc3BlY3MgOiAkKGluc3RhbGxfc3BlY3MpDQorCXRlc3QgLWQg JChpbnN0YWxsX2xpYnNfZGlyKSB8fCBta2RpciAtcCAkKGluc3RhbGxfbGlic19kaXIpDQorCWZv ciBmaWxlIGluICReOyBkbyBcDQorCQkkKElOU1RBTExfREFUQSkgJCRmaWxlICQoaW5zdGFsbF9s aWJzX2RpcikvOyBcDQorCWRvbmUNCisNCitpbnN0YWxsLWxkc2NyaXB0cyA6ICQoaW5zdGFsbF9s ZHNjcmlwdHMpDQorCXRlc3QgLWQgJChpbnN0YWxsX2xpYnNfZGlyKSB8fCBta2RpciAtcCAkKGlu c3RhbGxfbGlic19kaXIpDQorCWZvciBmaWxlIGluICReOyBkbyBcDQorCQkkKElOU1RBTExfREFU QSkgJCRmaWxlICQoaW5zdGFsbF9saWJzX2RpcikvOyBcDQorCWRvbmUNCisNCitpbnN0YWxsIDog aW5zdGFsbC1oZHJzIGluc3RhbGwtbGlicyBpbnN0YWxsLXNwZWNzIGluc3RhbGwtbGRzY3JpcHRz DQorLlBIT05ZIDogaW5zdGFsbCBpbnN0YWxsLWhkcnMgaW5zdGFsbC1saWJzDQorDQorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisjIFJlZ2VuZXJhdGUgY29uZmlndXJlIGluZm9ybWF0aW9uDQorIy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCisNCitjb25maWd1cmVfcHJlcmVxID0gXA0KKyAgJChzcmNfZGlyKS9jb25m aWd1cmUuaW4gXA0KKw0KKyQoc3JjX2RpcikvY29uZmlndXJlIDogJChjb25maWd1cmVfcHJlcmVx KQ0KKwljZCAkKHNyY19kaXIpICYmIGF1dG9jb25mDQorDQorY29uZmlnLnN0YXR1cyA6ICQoc3Jj X2RpcikvY29uZmlndXJlDQorCS4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sNCisNCitNYWtlZmls ZSA6ICQoc3JjX2RpcikvTWFrZWZpbGUuaW4gY29uZmlnLnN0YXR1cw0KKwkuL2NvbmZpZy5zdGF0 dXMNCisNCitkaXN0X2p1bmsgKz0gY29uZmlnLnN0YXR1cyBNYWtlZmlsZSBjb25maWcubG9nDQor DQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERlZmF1bHQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0K K2FsbCA6ICQoYm9hcmRfb3V0ZGlyKSAkKGluc3RhbGxfbGlicykNCisuUEhPTlkgOiBhbGwNCisN CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ2xlYW4gdXAganVuaw0KKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQorDQorY2xlYW4gOg0KKwlybSAtcmYgKn4gXCMqICQoanVuaykNCisNCitkaXN0Y2xlYW4gOg0K KwlybSAtcmYgKn4gXCMqICQoanVuaykgJChkaXN0X2p1bmspDQorDQorLlBIT05ZIDogY2xlYW4g ZGlzdGNsZWFuDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2FwcC5lbGYubGQgYi9saWJn bG9zcy94dGVuc2EvYXBwLmVsZi5sZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMC4uMTJjN2ViOGFiDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvYXBw LmVsZi5sZA0KQEAgLTAsMCArMSwxOTAgQEANCitfX3N0YWNrID0gT1JJR0lOKGRyYW1fc2VnKSAr IExFTkdUSChkcmFtX3NlZyk7DQorX19NSU5fU1RBQ0tfU0laRSA9IDB4MTAwMDsNCisNCitFTlRS WShfc3RhcnQpDQorU0VDVElPTlMNCit7DQorICAuID0gU0VHTUVOVF9TVEFSVCgiaXJhbV9zZWci LCAwKTsNCisgIC52ZWN0b3JzICAgIDoNCisgIHsNCisgICAgX3ZlY3Rvcl90YWJsZSA9IEFCU09M VVRFKC4pOw0KKyAgICAuID0gMHgwOw0KKyAgICBLRUVQKCooLldpbmRvd1ZlY3RvcnMudGV4dCkp Ow0KKyAgICAuID0gMHgxODA7DQorICAgIEtFRVAoKiguTGV2ZWwySW50ZXJydXB0VmVjdG9yLnRl eHQpKTsNCisgICAgLiA9IDB4MWMwOw0KKyAgICBLRUVQKCooLkxldmVsM0ludGVycnVwdFZlY3Rv ci50ZXh0KSk7DQorICAgIC4gPSAweDIwMDsNCisgICAgS0VFUCgqKC5MZXZlbDRJbnRlcnJ1cHRW ZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHgyNDA7DQorICAgIEtFRVAoKiguTGV2ZWw1SW50ZXJy dXB0VmVjdG9yLnRleHQpKTsNCisgICAgLiA9IDB4MjgwOw0KKyAgICBLRUVQKCooLkRlYnVnRXhj ZXB0aW9uVmVjdG9yLnRleHQpKTsNCisgICAgLiA9IDB4MmMwOw0KKyAgICBLRUVQKCooLk5NSUV4 Y2VwdGlvblZlY3Rvci50ZXh0KSk7DQorICAgIC4gPSAweDMwMDsNCisgICAgS0VFUCgqKC5LZXJu ZWxFeGNlcHRpb25WZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHgzNDA7DQorICAgIEtFRVAoKigu VXNlckV4Y2VwdGlvblZlY3Rvci50ZXh0KSk7DQorICAgIC4gPSAweDNDMDsNCisgICAgS0VFUCgq KC5Eb3VibGVFeGNlcHRpb25WZWN0b3IudGV4dCkpOw0KKyAgICAuID0gMHg0MDA7DQorICAgIEtF RVAoKiguUmVzZXRWZWN0b3IudGV4dCkpOw0KKyAgICAqKC4qVmVjdG9yLmxpdGVyYWwpDQorICAg IC4gPSBBTElHTiAoMTYpOw0KKyAgfSA+IGlyYW1fc2VnDQorDQorICB0ZXh0ICAgIDoNCisgIHsN CisgICAgS0VFUCAoKiguaW5pdC5saXRlcmFsKSkNCisgICAgS0VFUCAoKihTT1JUX05PTkUoLmlu aXQpKSkNCisgICAgKigubGl0ZXJhbCAudGV4dCAuc3R1YiAubGl0ZXJhbC4qIC50ZXh0LiogLmdu dS5saW5rb25jZS5saXRlcmFsLiogLmdudS5saW5rb25jZS50LioubGl0ZXJhbCAuZ251Lmxpbmtv bmNlLnQuKikNCisgICAgLyogLmdudS53YXJuaW5nIHNlY3Rpb25zIGFyZSBoYW5kbGVkIHNwZWNp YWxseSBieSBlbGYzMi5lbS4gICovDQorICAgICooLmdudS53YXJuaW5nKQ0KKyAgICBLRUVQICgq KC5maW5pLmxpdGVyYWwpKQ0KKyAgICBLRUVQICgqKFNPUlRfTk9ORSguZmluaSkpKQ0KKyAgfSA+ IGlyYW1fc2VnDQorDQorICBQUk9WSURFIChfX2V0ZXh0ID0gLik7DQorICBQUk9WSURFIChfZXRl eHQgPSAuKTsNCisgIFBST1ZJREUgKGV0ZXh0ID0gLik7DQorDQorICAvKiBBZGp1c3QgdGhlIGFk ZHJlc3MgZm9yIHRoZSBkYXRhIHNlZ21lbnQuICBXZSB3YW50IHRvIGFkanVzdCB1cCB0bw0KKyAg ICAgdGhlIHNhbWUgYWRkcmVzcyB3aXRoaW4gdGhlIHBhZ2Ugb24gdGhlIG5leHQgcGFnZSB1cC4g ICovDQorICAuID0gQUxJR04gKENPTlNUQU5UIChNQVhQQUdFU0laRSkpIC0gKChDT05TVEFOVCAo TUFYUEFHRVNJWkUpIC0gLikgJiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSAtIDEpKTsgLiA9IERB VEFfU0VHTUVOVF9BTElHTiAoQ09OU1RBTlQgKE1BWFBBR0VTSVpFKSwgQ09OU1RBTlQgKENPTU1P TlBBR0VTSVpFKSk7DQorDQorICAucm9kYXRhICAgIDoNCisgIHsNCisgICAgKigucm9kYXRhIC5y b2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikNCisgICAgKigucm9kYXRhMSkNCisgICAgKiguc2Rh dGEyIC5zZGF0YTIuKiAuZ251LmxpbmtvbmNlLnMyLiopDQorICAgICooLnNic3MyIC5zYnNzMi4q IC5nbnUubGlua29uY2Uuc2IyLiopDQorICB9DQorDQorICAucHJlaW5pdF9hcnJheSAgICA6DQor ICB7DQorICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsNCisg ICAgS0VFUCAoKigucHJlaW5pdF9hcnJheSkpDQorICAgIFBST1ZJREVfSElEREVOIChfX3ByZWlu aXRfYXJyYXlfZW5kID0gLik7DQorICB9DQorICAuaW5pdF9hcnJheSAgICA6DQorICB7DQorICAg IFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsNCisgICAgS0VFUCAoKihT T1JUX0JZX0lOSVRfUFJJT1JJVFkoLmluaXRfYXJyYXkuKikgU09SVF9CWV9JTklUX1BSSU9SSVRZ KC5jdG9ycy4qKSkpDQorICAgIEtFRVAgKCooLmluaXRfYXJyYXkgRVhDTFVERV9GSUxFICgqY3J0 YmVnaW4ubyAqY3J0YmVnaW4/Lm8gKmNydGVuZC5vICpjcnRlbmQ/Lm8gKSAuY3RvcnMpKQ0KKyAg ICBQUk9WSURFX0hJRERFTiAoX19pbml0X2FycmF5X2VuZCA9IC4pOw0KKyAgfQ0KKyAgLmZpbmlf YXJyYXkgICAgOg0KKyAgew0KKyAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0 ID0gLik7DQorICAgIEtFRVAgKCooU09SVF9CWV9JTklUX1BSSU9SSVRZKC5maW5pX2FycmF5Liop IFNPUlRfQllfSU5JVF9QUklPUklUWSguZHRvcnMuKikpKQ0KKyAgICBLRUVQICgqKC5maW5pX2Fy cmF5IEVYQ0xVREVfRklMRSAoKmNydGJlZ2luLm8gKmNydGJlZ2luPy5vICpjcnRlbmQubyAqY3J0 ZW5kPy5vICkgLmR0b3JzKSkNCisgICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQg PSAuKTsNCisgIH0NCisgIC5jdG9ycyAgICAgICAgICA6DQorICB7DQorICAgIC8qIGdjYyB1c2Vz IGNydGJlZ2luLm8gdG8gZmluZCB0aGUgc3RhcnQgb2YNCisgICAgICAgdGhlIGNvbnN0cnVjdG9y cywgc28gd2UgbWFrZSBzdXJlIGl0IGlzDQorICAgICAgIGZpcnN0LiAgQmVjYXVzZSB0aGlzIGlz IGEgd2lsZGNhcmQsIGl0DQorICAgICAgIGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSB1c2VyIGRvZXMg bm90DQorICAgICAgIGFjdHVhbGx5IGxpbmsgYWdhaW5zdCBjcnRiZWdpbi5vOyB0aGUNCisgICAg ICAgbGlua2VyIHdvbid0IGxvb2sgZm9yIGEgZmlsZSB0byBtYXRjaCBhDQorICAgICAgIHdpbGRj YXJkLiAgVGhlIHdpbGRjYXJkIGFsc28gbWVhbnMgdGhhdCBpdA0KKyAgICAgICBkb2Vzbid0IG1h dHRlciB3aGljaCBkaXJlY3RvcnkgY3J0YmVnaW4ubw0KKyAgICAgICBpcyBpbi4gICovDQorICAg IEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpDQorICAgIEtFRVAgKCpjcnRiZWdpbj8ubyguY3Rv cnMpKQ0KKyAgICAvKiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGUgdGhlIC5jdG9yIHNlY3Rpb24g ZnJvbQ0KKyAgICAgICB0aGUgY3J0ZW5kLm8gZmlsZSB1bnRpbCBhZnRlciB0aGUgc29ydGVkIGN0 b3JzLg0KKyAgICAgICBUaGUgLmN0b3Igc2VjdGlvbiBmcm9tIHRoZSBjcnRlbmQgZmlsZSBjb250 YWlucyB0aGUNCisgICAgICAgZW5kIG9mIGN0b3JzIG1hcmtlciBhbmQgaXQgbXVzdCBiZSBsYXN0 ICovDQorICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8gKmNydGVuZD8ubyApIC5j dG9ycykpDQorICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQ0KKyAgICBLRUVQICgqKC5jdG9y cykpDQorICB9DQorICAuZHRvcnMgICAgICAgICAgOg0KKyAgew0KKyAgICBLRUVQICgqY3J0YmVn aW4ubyguZHRvcnMpKQ0KKyAgICBLRUVQICgqY3J0YmVnaW4/Lm8oLmR0b3JzKSkNCisgICAgS0VF UCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubyAqY3J0ZW5kPy5vICkgLmR0b3JzKSkNCisgICAg S0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpDQorICAgIEtFRVAgKCooLmR0b3JzKSkNCisgIH0NCisN CisgIF9kYXRhX3N0YXJ0ID0gLjsNCisgIC5kYXRhICAgICAgICAgIDoNCisgIHsNCisgICAgKigu ZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQ0KKyAgICBTT1JUKENPTlNUUlVDVE9SUykN CisgICAgKiguZGF0YTEpDQorICB9DQorICBfZWRhdGEgPSAuOyBQUk9WSURFIChlZGF0YSA9IC4p Ow0KKyAgLiA9IC47DQorICBfX2Jzc19zdGFydCA9IC47DQorICAuYnNzICAgICAgICAgICAgOg0K KyAgew0KKyAgICAqKC5keW5zYnNzKQ0KKyAgICAqKC5zYnNzIC5zYnNzLiogLmdudS5saW5rb25j ZS5zYi4qKQ0KKyAgICAqKC5zY29tbW9uKQ0KKyAgICAqKC5keW5ic3MpDQorICAgICooLmJzcyAu YnNzLiogLmdudS5saW5rb25jZS5iLiopDQorICAgICooQ09NTU9OKQ0KKyAgICAvKiBBbGlnbiBo ZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSAuYnNzIHNlY3Rpb24gb2NjdXBpZXMgc3BhY2UgdXAgdG8N CisgICAgICBfZW5kLiAgQWxpZ24gYWZ0ZXIgLmJzcyB0byBlbnN1cmUgY29ycmVjdCBhbGlnbm1l bnQgZXZlbiBpZiB0aGUNCisgICAgICAuYnNzIHNlY3Rpb24gZGlzYXBwZWFycyBiZWNhdXNlIHRo ZXJlIGFyZSBubyBpbnB1dCBzZWN0aW9ucy4NCisgICAgICBGSVhNRTogV2h5IGRvIHdlIG5lZWQg aXQ/IFdoZW4gdGhlcmUgaXMgbm8gLmJzcyBzZWN0aW9uLCB3ZSBkbyBub3QNCisgICAgICBwYWQg dGhlIC5kYXRhIHNlY3Rpb24uICAqLw0KKyAgICAuID0gQUxJR04oLiAhPSAwID8gMzIgLyA4IDog MSk7DQorICB9DQorICAuID0gQUxJR04oMzIgLyA4KTsNCisgIC4gPSBBTElHTigzMiAvIDgpOw0K KyAgX2VuZCA9IC47IFBST1ZJREUgKGVuZCA9IC4pOw0KKyAgLiA9IERBVEFfU0VHTUVOVF9FTkQg KC4pOw0KKw0KKyAgLyogQ2hlY2sgaWYgZGF0YSArIGhlYXAgKyBzdGFjayBleGNlZWRzIFJBTSBs aW1pdCAqLw0KKyAgQVNTRVJUKC4gPD0gX19zdGFjayAtIF9fTUlOX1NUQUNLX1NJWkUsICJyZWdp b24gRFJBTSBvdmVyZmxvd2VkIGJ5IC5kYXRhIGFuZCAuYnNzIHNlY3Rpb25zIikNCisNCisgIC8q IFN0YWJzIGRlYnVnZ2luZyBzZWN0aW9ucy4gICovDQorICAuc3RhYiAgICAgICAgICAwIDogeyAq KC5zdGFiKSB9DQorICAuc3RhYnN0ciAgICAgICAwIDogeyAqKC5zdGFic3RyKSB9DQorICAuc3Rh Yi5leGNsICAgICAwIDogeyAqKC5zdGFiLmV4Y2wpIH0NCisgIC5zdGFiLmV4Y2xzdHIgIDAgOiB7 ICooLnN0YWIuZXhjbHN0cikgfQ0KKyAgLnN0YWIuaW5kZXggICAgMCA6IHsgKiguc3RhYi5pbmRl eCkgfQ0KKyAgLnN0YWIuaW5kZXhzdHIgMCA6IHsgKiguc3RhYi5pbmRleHN0cikgfQ0KKyAgLmNv bW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfQ0KKyAgLmdudS5idWlsZC5hdHRyaWJ1dGVz IDogeyAqKC5nbnUuYnVpbGQuYXR0cmlidXRlcyAuZ251LmJ1aWxkLmF0dHJpYnV0ZXMuKikgfQ0K KyAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuDQorICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBk ZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcNCisgICAgIG9m IHRoZSBzZWN0aW9uIHNvIHdlIGJlZ2luIHRoZW0gYXQgMC4gICovDQorICAvKiBEV0FSRiAxICov DQorICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0NCisgIC5saW5lICAgICAgICAg ICAwIDogeyAqKC5saW5lKSB9DQorICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovDQorICAu ZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQ0KKyAgLmRlYnVnX3NmbmFt ZXMgIDAgOiB7ICooLmRlYnVnX3NmbmFtZXMpIH0NCisgIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYg MiAqLw0KKyAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0NCisgIC5k ZWJ1Z19wdWJuYW1lcyAwIDogeyAqKC5kZWJ1Z19wdWJuYW1lcykgfQ0KKyAgLyogRFdBUkYgMiAq Lw0KKyAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53 aS4qKSB9DQorICAuZGVidWdfYWJicmV2ICAgMCA6IHsgKiguZGVidWdfYWJicmV2KSB9DQorICAu ZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSAuZGVidWdfbGluZS4qIC5kZWJ1Z19s aW5lX2VuZCkgfQ0KKyAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9DQor ICAuZGVidWdfc3RyICAgICAgMCA6IHsgKiguZGVidWdfc3RyKSB9DQorICAuZGVidWdfbG9jICAg ICAgMCA6IHsgKiguZGVidWdfbG9jKSB9DQorICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVi dWdfbWFjaW5mbykgfQ0KKyAgLyogU0dJL01JUFMgRFdBUkYgMiBleHRlbnNpb25zICovDQorICAu ZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQ0KKyAgLmRlYnVnX2Z1 bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0NCisgIC5kZWJ1Z190eXBlbmFtZXMg MCA6IHsgKiguZGVidWdfdHlwZW5hbWVzKSB9DQorICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICoo LmRlYnVnX3Zhcm5hbWVzKSB9DQorICAvKiBEV0FSRiAzICovDQorICAuZGVidWdfcHVidHlwZXMg MCA6IHsgKiguZGVidWdfcHVidHlwZXMpIH0NCisgIC5kZWJ1Z19yYW5nZXMgICAwIDogeyAqKC5k ZWJ1Z19yYW5nZXMpIH0NCisgIC8qIERXQVJGIEV4dGVuc2lvbi4gICovDQorICAuZGVidWdfbWFj cm8gICAgMCA6IHsgKiguZGVidWdfbWFjcm8pIH0NCisgIC5kZWJ1Z19hZGRyICAgICAwIDogeyAq KC5kZWJ1Z19hZGRyKSB9DQorICAuZ251LmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguZ251LmF0 dHJpYnV0ZXMpKSB9DQorICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAqKC5nbnVf ZGVidWdsaW5rKSAqKC5nbnUubHRvXyopIH0NCit9DQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3Mv eHRlbnNhL2JvYXJkLmVsZi5zcGVjcyBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZC5lbGYuc3BlY3MN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjg3Y2ZmMTllNw0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkLmVsZi5zcGVjcw0KQEAgLTAsMCAr MSw1IEBADQorKnN0YXJ0ZmlsZToNCitjcnQxLWJvYXJkcyVPJXMNCisNCisqbGliOg0KKy1sYyAt LXdob2xlLWFyY2hpdmUgLWxnbG9zcyAtLW5vLXdob2xlLWFyY2hpdmUgLWxwdGhyZWFkX3N0dWJz IC1sYyAlVG1lbW9yeS5lbGYubGQgJVRhcHAuZWxmLmxkDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3Mv eHRlbnNhL2JvYXJkcy9lc3AzMi9ib2FyZC5jIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3Az Mi9ib2FyZC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi45MDViZjE3 MWUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvYm9h cmQuYw0KQEAgLTAsMCArMSwxOSBAQA0KKyNpbmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVkZSA8 c29jL3VhcnQuaD4NCisNCit2b2lkIGJvYXJkX2luaXQodm9pZCkNCit7DQorICAgIFdSSVRFX1JF R0lTVEVSKFVBUlQwX0NMS0RJVl9SRUcsIFVBUlQwX0NMS0RJVl9WQUwpOw0KK30NCisNCit2b2lk IGJvYXJkX3VhcnRfd3JpdGVfY2hhcihjaGFyIGMpDQorew0KKyAgICAvKiB3YWl0IHVudGlsIHR4 Zmlmb19jbnQgPT0gMCAqLw0KKyAgICB3aGlsZSAoVUFSVDBfVFhGSUZPX0NOVCkgew0KKyAgICAg ICAgOw0KKyAgICB9DQorICAgIGlmIChjID09ICdcbicpIHsNCisgICAgICAgIFdSSVRFX1JFR0lT VEVSKFVBUlQwX1RYX0FERFIsICdccicpOw0KKyAgICB9DQorICAgIFdSSVRFX1JFR0lTVEVSKFVB UlQwX1RYX0FERFIsIGMpOw0KK30NCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2EvYm9hcmRz L2VzcDMyL2luY2x1ZGUvc29jL2NwdS5oIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMi9p bmNsdWRlL3NvYy9jcHUuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u ZDU3MGQzNTAyDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2Vz cDMyL2luY2x1ZGUvc29jL2NwdS5oDQpAQCAtMCwwICsxLDExIEBADQorI2lmbmRlZiBTT0NfQ1BV X0gNCisjZGVmaW5lIFNPQ19DUFVfSA0KKw0KKy8qDQorICogRVNQMzIgc3RhcnRzIHdpdGggQ1BV IGZyZXF1ZW5jeSA0ME1Ieg0KKyAqIExldCdzIGRvIG5vdCByZWNvbmZpZ3VyZSBpdCB0byBzaW1w bGlmeSBsaWJnbG9zcw0KKyAqLw0KKyNkZWZpbmUgQ1BVX0ZSRVFVRU5DWV9NSFogNDANCisjZGVm aW5lIENQVV9GUkVRVUVOQ1lfSFogKENQVV9GUkVRVUVOQ1lfTUhaICogMTAwMDAwMCkNCisNCisj ZW5kaWYgLy8gU09DX0NQVV9IDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9l c3AzMi9pbmNsdWRlL3NvYy91YXJ0LmggYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyL2lu Y2x1ZGUvc29jL3VhcnQuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4u YzVmMWRjMjhhDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2Vz cDMyL2luY2x1ZGUvc29jL3VhcnQuaA0KQEAgLTAsMCArMSwxOSBAQA0KKyNpZm5kZWYgU09DX1VB UlRfSA0KKyNkZWZpbmUgU09DX1VBUlRfSA0KKw0KKyNpbmNsdWRlIDxzb2MvY3B1Lmg+DQorI2lu Y2x1ZGUgPHJlZ2lzdGVyX2FjY2Vzcy5oPg0KKw0KKyNkZWZpbmUgVUFSVDBfQkFVRFJBVEUJCTEx NTIwMA0KKw0KKyNkZWZpbmUgVUFSVDBfVFhfQUREUgkJMHg2MDAwMDAwMA0KKyNkZWZpbmUgVUFS VDBfQkFTRQkgICAgICAgIDB4M2ZmNDAwMDANCisjZGVmaW5lIFVBUlQwX0NMS0RJVl9SRUcJKFVB UlQwX0JBU0UgKyAweDE0KQ0KKyNkZWZpbmUgVUFSVDBfU1RBVFVTCQkoVUFSVDBfQkFTRSArIDB4 MWMpDQorI2RlZmluZSBVQVJUMF9DTEtESVZfVkFMCShDUFVfRlJFUVVFTkNZX0haIC8gVUFSVDBf QkFVRFJBVEUgKQ0KKyNkZWZpbmUgVUFSVDBfVFhGSUZPX0NOVAkoKChSRUFEX1JFR0lTVEVSKFVB UlQwX1NUQVRVUykpID4+IDE2KSAmIDB4ZmYpDQorDQorDQordm9pZCBib2FyZF91YXJ0X3dyaXRl X2NoYXIoY2hhciBjKTsNCisNCisjZW5kaWYgLy8gU09DX1VBUlRfSA0KZGlmZiAtLWdpdCBhL2xp Ymdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzIvbWVtb3J5LmVsZi5sZCBiL2xpYmdsb3NzL3h0ZW5z YS9ib2FyZHMvZXNwMzIvbWVtb3J5LmVsZi5sZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMC4uZmEwZTQyM2I1DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVu c2EvYm9hcmRzL2VzcDMyL21lbW9yeS5lbGYubGQNCkBAIC0wLDAgKzEsMjYgQEANCisvKg0KKyAq IElST00vRFJBTSBkZWZpbml0aW9uIGluIFFFTVU6DQorICogICAgIFtFU1AzMl9NRU1SRUdJT05f SVJPTV0gPSB7IDB4NDAwMDAwMDAsIDB4NzAwMDAgfSwNCisgKiAgICAgW0VTUDMyX01FTVJFR0lP Tl9EUkFNXSA9IHsgMHgzZmZhZTAwMCwgMHg1MjAwMCB9LA0KKyAqDQorICogSW4gdGhlb3J5IHdl IGNvdWxkIHVzZSB3aG9sZSBEUkFNIHNlY3Rpb24sIGJ1dCBJIGhhZCBzb21lIGZhdWx0cyB3aGVu IHVzaW5nDQorICogbWVtb3J5IGluIHJhbmdlIDB4M2ZmYWUwMDAgLSAweDNmZmIwMDAwDQorICoN CisgKiBCdXQgdXNlZCBtZW1vcnkgcmFuZ2UgZm9yIGRhdGEgc3VjaCBhcyBlc3AtaWRmIGZvciBF U1AzMiB0byBzYXRpc2Z5IHVzZXIncw0KKyAqIGV4cGVjdGF0aW9uIG9uIGNoaXAgZW11bGF0aW9u DQorICoNCisgKiBQYXNzICctLWRlZnN5bT1lbnRpcmVfZHJhbV9zZWc9MScgdG8gbGlua2VyIHNj cmlwdCB0byB1c2Ugd2hvbGUgRFJBTQ0KKyAqDQorICovDQorDQorTUVNT1JZDQorew0KKyAgaXJh bV9zZWcgIChYKSA6IG9yZyA9IDB4NDAwNzgwMDAsIGxlbiA9IDB4MjgwMDANCisvKiA2NGsgYXQg dGhlIGVuZCBvZiBEUkFNLCBhZnRlciBST00gYm9vdGxvYWRlciBzdGFjaw0KKyAqIG9yIGVudGly ZSBEUkFNIChmb3IgUUVNVSBvbmx5KQ0KKyAqLw0KKyAgZHJhbV9zZWcgKFJXKSA6IG9yZyA9IERF RklORUQoZW50aXJlX2RyYW1fc2VnKSA/IDB4M0ZGQjAwMDAgOiAweDNGRkYwMDAwLA0KKyAgICAg ICAgICAgICAgICAgIGxlbiA9IERFRklORUQoZW50aXJlX2RyYW1fc2VnKSA/IDB4NTAwMDAgOiAw eDEwMDAwDQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNw MzJzMy9ib2FyZC5jIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjkwNWJmMTcxZQ0KLS0tIC9kZXYv bnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2JvYXJkLmMNCkBAIC0w LDAgKzEsMTkgQEANCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorI2luY2x1ZGUgPHNvYy91YXJ0Lmg+ DQorDQordm9pZCBib2FyZF9pbml0KHZvaWQpDQorew0KKyAgICBXUklURV9SRUdJU1RFUihVQVJU MF9DTEtESVZfUkVHLCBVQVJUMF9DTEtESVZfVkFMKTsNCit9DQorDQordm9pZCBib2FyZF91YXJ0 X3dyaXRlX2NoYXIoY2hhciBjKQ0KK3sNCisgICAgLyogd2FpdCB1bnRpbCB0eGZpZm9fY250ID09 IDAgKi8NCisgICAgd2hpbGUgKFVBUlQwX1RYRklGT19DTlQpIHsNCisgICAgICAgIDsNCisgICAg fQ0KKyAgICBpZiAoYyA9PSAnXG4nKSB7DQorICAgICAgICBXUklURV9SRUdJU1RFUihVQVJUMF9U WF9BRERSLCAnXHInKTsNCisgICAgfQ0KKyAgICBXUklURV9SRUdJU1RFUihVQVJUMF9UWF9BRERS LCBjKTsNCit9DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2lu Y2x1ZGUvc29jL2NwdS5oIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMzL2luY2x1ZGUv c29jL2NwdS5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi4yYTY3OTNh OGQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9p bmNsdWRlL3NvYy9jcHUuaA0KQEAgLTAsMCArMSwxMSBAQA0KKyNpZm5kZWYgU09DX0NQVV9IDQor I2RlZmluZSBTT0NfQ1BVX0gNCisNCisvKg0KKyAqIEVTUDMyUzMgc3RhcnRzIHdpdGggQ1BVIGZy ZXF1ZW5jeSA0ME1Ieg0KKyAqIExldCdzIGRvIG5vdCByZWNvbmZpZ3VyZSBpdCB0byBzaW1wbGlm eSBsaWJnbG9zcw0KKyAqLw0KKyNkZWZpbmUgQ1BVX0ZSRVFVRU5DWV9NSFogNDANCisjZGVmaW5l IENQVV9GUkVRVUVOQ1lfSFogKENQVV9GUkVRVUVOQ1lfTUhaICogMTAwMDAwMCkNCisNCisjZW5k aWYgLy8gU09DX0NQVV9IDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3Az MnMzL2luY2x1ZGUvc29jL3VhcnQuaCBiL2xpYmdsb3NzL3h0ZW5zYS9ib2FyZHMvZXNwMzJzMy9p bmNsdWRlL3NvYy91YXJ0LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAu LmMzMjMyM2E3Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9l c3AzMnMzL2luY2x1ZGUvc29jL3VhcnQuaA0KQEAgLTAsMCArMSwxOSBAQA0KKyNpZm5kZWYgU09D X1VBUlRfSA0KKyNkZWZpbmUgU09DX1VBUlRfSA0KKw0KKyNpbmNsdWRlIDxzb2MvY3B1Lmg+DQor I2luY2x1ZGUgPHJlZ2lzdGVyX2FjY2Vzcy5oPg0KKw0KKyNkZWZpbmUgVUFSVDBfQkFVRFJBVEUg ICAgICAxMTUyMDANCisNCisjZGVmaW5lIFVBUlQwX1RYX0FERFIgICAgICAgMHg2MDAwMDAwMA0K KyNkZWZpbmUgVUFSVDBfQkFTRSAgICAgICAgICAweDYwMDAwMDAwDQorI2RlZmluZSBVQVJUMF9D TEtESVZfUkVHICAgIChVQVJUMF9CQVNFICsgMHgxNCkNCisjZGVmaW5lIFVBUlQwX1NUQVRVUyAg ICAgICAgKFVBUlQwX0JBU0UgKyAweDFjKQ0KKyNkZWZpbmUgVUFSVDBfQ0xLRElWX1ZBTCAgICAo Q1BVX0ZSRVFVRU5DWV9IWiAvIFVBUlQwX0JBVURSQVRFICkNCisjZGVmaW5lIFVBUlQwX1RYRklG T19DTlQgICAgKCgoUkVBRF9SRUdJU1RFUihVQVJUMF9TVEFUVVMpKSA+PiAxNikgJiAweDNmZikN CisNCisNCit2b2lkIGJvYXJkX3VhcnRfd3JpdGVfY2hhcihjaGFyIGMpOw0KKw0KKyNlbmRpZiAv LyBTT0NfVUFSVF9IDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL2JvYXJkcy9lc3AzMnMz L21lbW9yeS5lbGYubGQgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvbWVtb3J5LmVs Zi5sZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNjQyNmI3ZmM2DQot LS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvYm9hcmRzL2VzcDMyczMvbWVtb3J5 LmVsZi5sZA0KQEAgLTAsMCArMSwyMSBAQA0KKy8qDQorICogSVJPTS9EUkFNIGRlZmluaXRpb24g aW4gUUVNVToNCisgKiAgICAgW0VTUDMyUzNfTUVNUkVHSU9OX0lST01dID0geyAweDQwMDAwMDAw LCAweDYwMDAwIH0sDQorICogICAgIFtFU1AzMlMzX01FTVJFR0lPTl9EUkFNXSA9IHsgMHgzRkM4 MDAwMCwgMHg3MDAwMCB9LA0KKyAqDQorICogSW4gdGhlb3J5IHdlIGNvdWxkIHVzZSB3aG9sZSBE UkFNIHNlY3Rpb24sIGJ1dCBJIGhhZCBzb21lIGZhdWx0cyB3aGVuIHVzaW5nDQorICogbWVtb3J5 IGluIHJhbmdlIDB4M2ZmYWUwMDAgLSAweDNmZmIwMDAwDQorICoNCisgKiBCdXQgdXNlZCBtZW1v cnkgcmFuZ2UgZm9yIGRhdGEgc3VjaCBhcyBlc3AtaWRmIGZvciBFU1AzMlMzIHRvIHNhdGlzZnkg dXNlcidzDQorICogZXhwZWN0YXRpb24gb24gY2hpcCBlbXVsYXRpb24NCisgKg0KKyAqIFBhc3Mg Jy0tZGVmc3ltPWVudGlyZV9kcmFtX3NlZz0xJyB0byBsaW5rZXIgc2NyaXB0IHRvIHVzZSB3aG9s ZSBEUkFNDQorICoNCisgKi8NCisNCitNRU1PUlkNCit7DQorICBpcmFtX3NlZyAgKFgpIDogb3Jn ID0gMHg0MDM3ODAwMCwgbGVuID0gMHg3MDAwMA0KKyAgZHJhbV9zZWcgKFJXKSA6IG9yZyA9IERF RklORUQoZW50aXJlX2RyYW1fc2VnKSA/IDB4M0ZDODAwMDAgOiAweDNGQ0YwMDAwLA0KKyAgICAg ICAgICAgICAgICAgIGxlbiA9IERFRklORUQoZW50aXJlX2RyYW1fc2VnKSA/IDB4NzAwMDAgOiAw eDEwMDAwDQorfQ0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9jb25maWd1cmUgYi9saWJn bG9zcy94dGVuc2EvY29uZmlndXJlDQpuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KaW5kZXggMDAwMDAw MDAwLi40YzIxMTk3ZmENCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9jb25m aWd1cmUNCkBAIC0wLDAgKzEsMzc1MyBAQA0KKyMhIC9iaW4vc2gNCisjIEd1ZXNzIHZhbHVlcyBm b3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuDQorIyBH ZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguDQorIw0KKyMNCisjIENvcHlyaWdodCAoQykg MTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwNCisj IDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJl ZSBTb2Z0d2FyZQ0KKyMgRm91bmRhdGlvbiwgSW5jLg0KKyMNCisjDQorIyBUaGlzIGNvbmZpZ3Vy ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K KyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9k aWZ5IGl0Lg0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorIyMgTTRzaCBJbml0aWFsaXph dGlvbi4gIyMNCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKw0KKyMgQmUgbW9yZSBCb3Vy bmUgY29tcGF0aWJsZQ0KK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gN CitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9u dWxsIDI+JjE7IHRoZW4gOg0KKyAgZW11bGF0ZSBzaA0KKyAgTlVMTENNRD06DQorICAjIFByZS00 LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gN CisgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQor ICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicNCisgIHNldG9wdCBOT19HTE9CX1NVQlNUDQor ZWxzZQ0KKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoDQorICAqcG9zaXgqKSA6 DQorICAgIHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkN CisNCisNCithc19ubD0nDQorJw0KK2V4cG9ydCBhc19ubA0KKyMgUHJpbnRpbmcgYSBsb25nIHN0 cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuDQorYXNfZWNobz0nXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcNCithc19lY2hvPSRhc19l Y2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8NCithc19lY2hvPSRhc19lY2hvJGFz X2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KKyMgUHJlZmVyIGEga3NoIHNo ZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLA0K KyMgYnV0IHdpdGhvdXQgd2FzdGluZyBmb3JrcyBmb3IgYmFzaCBvciB6c2guDQoraWYgdGVzdCAt eiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXA0KKyAgICAmJiAodGVzdCAiWGBwcmludCAt ciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuDQorICBhc19l Y2hvPSdwcmludCAtciAtLScNCisgIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJw0KK2VsaWYgKHRl c3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRo ZW4NCisgIGFzX2VjaG89J3ByaW50ZiAlc1xuJw0KKyAgYXNfZWNob19uPSdwcmludGYgJXMnDQor ZWxzZQ0KKyAgaWYgdGVzdCAiWGAoL3Vzci91Y2IvZWNobyAtbiAtbiAkYXNfZWNobykgMj4vZGV2 L251bGxgIiA9ICJYLW4gJGFzX2VjaG8iOyB0aGVuDQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCAv dXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInDQorICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNo byAtbicNCisgIGVsc2UNCisgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxc KC4qXFwpIicNCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwNCisgICAgICBhcmc9JDE7DQorICAg ICAgY2FzZSAkYXJnIGluICMoDQorICAgICAgKiIkYXNfbmwiKikNCisJZXhwciAiWCRhcmciIDog IlhcXCguKlxcKSRhc19ubCI7DQorCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipc XCkiYDs7DQorICAgICAgZXNhYzsNCisgICAgICBleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpIiB8 IHRyIC1kICIkYXNfbmwiDQorICAgICcNCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5DQorICAg IGFzX2VjaG9fbj0nc2ggLWMgJGFzX2VjaG9fbl9ib2R5IGFzX2VjaG8nDQorICBmaQ0KKyAgZXhw b3J0IGFzX2VjaG9fYm9keQ0KKyAgYXNfZWNobz0nc2ggLWMgJGFzX2VjaG9fYm9keSBhc19lY2hv Jw0KK2ZpDQorDQorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuDQoraWYgdGVzdCAiJHtQQVRI X1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4NCisgIFBBVEhfU0VQQVJBVE9SPToNCisgIChQ QVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYm IHsNCisgICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9u dWxsIDI+JjEgfHwNCisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycNCisgIH0NCitmaQ0KKw0KKw0K KyMgSUZTDQorIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkg dGhhdCBvcmRlci4gIFF1b3RpbmcgaXMNCisjIHRoZXJlIHRvIHByZXZlbnQgZWRpdG9ycyBmcm9t IGNvbXBsYWluaW5nIGFib3V0IHNwYWNlLXRhYi4NCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUg Y2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQNCisjIHNwbGl0dGlu ZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pDQorSUZTPSIgIiIJJGFzX25sIg0KKw0K KyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRp cmVjdG9yeSBzZXBhcmF0b3IuDQorYXNfbXlzZWxmPQ0KK2Nhc2UgJDAgaW4gIygoDQorICAqW1xc L10qICkgYXNfbXlzZWxmPSQwIDs7DQorICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZT DQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICB0ZXN0IC1yICIkYXNfZGly LyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaw0KKyAgZG9uZQ0KK0lGUz0kYXNf c2F2ZV9JRlMNCisNCisgICAgIDs7DQorZXNhYw0KKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZl cywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcNCisjIGluIHdoaWNo IGNhc2Ugd2UgYXJlIG5vdCB0byBiZSBmb3VuZCBpbiB0aGUgcGF0aC4NCitpZiB0ZXN0ICJ4JGFz X215c2VsZiIgPSB4OyB0aGVuDQorICBhc19teXNlbGY9JDANCitmaQ0KK2lmIHRlc3QgISAtZiAi JGFzX215c2VsZiI7IHRoZW4NCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90 IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyDQorICBl eGl0IDENCitmaQ0KKw0KKyMgVW5zZXQgdmFyaWFibGVzIHRoYXQgd2UgZG8gbm90IG5lZWQgYW5k IHdoaWNoIGNhdXNlIGJ1Z3MgKGUuZy4gaW4NCisjIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRv IG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiDQorIyBzdXBwcmVz c2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZA0K KyMgdHJpZ2dlciBhIGJ1ZyBpbiBwZGtzaCA1LjIuMTQuDQorZm9yIGFzX3ZhciBpbiBCQVNIX0VO ViBFTlYgTUFJTCBNQUlMUEFUSA0KK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNl dCBcDQorICAmJiAoICh1bnNldCAkYXNfdmFyKSB8fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAm JiB1bnNldCAkYXNfdmFyIHx8IDoNCitkb25lDQorUFMxPSckICcNCitQUzI9Jz4gJw0KK1BTND0n KyAnDQorDQorIyBOTFMgbnVpc2FuY2VzLg0KK0xDX0FMTD1DDQorZXhwb3J0IExDX0FMTA0KK0xB TkdVQUdFPUMNCitleHBvcnQgTEFOR1VBR0UNCisNCisjIENEUEFUSC4NCisodW5zZXQgQ0RQQVRI KSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRIDQorDQoraWYgdGVzdCAieCRDT05GSUdf U0hFTEwiID0geDsgdGhlbg0KKyAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgLW4gXCJc JHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhl biA6DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToNCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBv ZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gXCR7MStcIlwkQFwifSwgd2hpY2gNCisgICMgaXMg Y29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuDQorICBhbGlhcyAt ZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInDQorICBzZXRvcHQgTk9fR0xPQl9TVUJTVA0KK2Vs c2UNCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICMoDQorICAqcG9zaXgqKSA6 DQorICAgIHNldCAtbyBwb3NpeCA7OyAjKA0KKyAgKikgOg0KKyAgICAgOzsNCitlc2FjDQorZmkN CisiDQorICBhc19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQ0KK2Fz X2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQ0KK2FzX2ZuX2ZhaWx1cmUgKCkgeyBh c19mbl9yZXR1cm4gMTsgfQ0KK2FzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0NCith c19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9DQorDQorZXhpdGNvZGU9MA0KK2FzX2Zu X3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsgfQ0K K2FzX2ZuX2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX2ZhaWx1cmUgc3VjY2Vl ZGVkLjsgfQ0KK2FzX2ZuX3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19mbl9y ZXRfc3VjY2VzcyBmYWlsZWQuOyB9DQorYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0x OyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0NCitpZiAoIHNldCB4OyBhc19m bl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwiXCQxXCIgKTsgdGhlbiA6DQorDQorZWxzZQ0K KyAgZXhpdGNvZGU9MTsgZWNobyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2VyZSBub3Qgc2F2ZWQu DQorZmkNCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxIg0KKyAgYXNfc3VnZ2VzdGVk PSIgIGFzX2xpbmVub18xPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1 Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMWE9XCRMSU5FTk8NCisgIGFzX2xpbmVu b18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNf c3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8NCisgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19s aW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmDQor ICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0gXCJ4XCRh c19saW5lbm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAxIg0KKyAgaWYgKGV2YWwgIiRhc19yZXF1 aXJlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzDQorZWxz ZQ0KKyAgYXNfaGF2ZV9yZXF1aXJlZD1ubw0KK2ZpDQorICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1 aXJlZCA9IHh5ZXMgJiYgKGV2YWwgIiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6 DQorDQorZWxzZQ0KKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2Fz X2ZvdW5kPWZhbHNlDQorZm9yIGFzX2RpciBpbiAvYmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4k UEFUSF9TRVBBUkFUT1IkUEFUSA0KK2RvDQorICBJRlM9JGFzX3NhdmVfSUZTDQorICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgYXNfZm91bmQ9Og0KKyAgY2FzZSAkYXNfZGlyIGlu ICMoDQorCSAvKikNCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1OyBkbw0KKwkg ICAgICMgVHJ5IG9ubHkgc2hlbGxzIHRoYXQgZXhpc3QsIHRvIHNhdmUgc2V2ZXJhbCBmb3Jrcy4N CisJICAgICBhc19zaGVsbD0kYXNfZGlyLyRhc19iYXNlDQorCSAgICAgaWYgeyB0ZXN0IC1mICIk YXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmDQorCQkgICAgeyAkYXNf ZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRh c19zaGVsbCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRhc19zaGVs bCBhc19oYXZlX3JlcXVpcmVkPXllcw0KKwkJICAgaWYgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9j b21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rl di9udWxsOyB0aGVuIDoNCisgIGJyZWFrIDINCitmaQ0KK2ZpDQorCSAgIGRvbmU7Ow0KKyAgICAg ICBlc2FjDQorICBhc19mb3VuZD1mYWxzZQ0KK2RvbmUNCiskYXNfZm91bmQgfHwgeyBpZiB7IHRl c3QgLWYgIiRTSEVMTCIgfHwgdGVzdCAtZiAiJFNIRUxMLmV4ZSI7IH0gJiYNCisJICAgICAgeyAk YXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEg IiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgQ09ORklHX1NIRUxMPSRTSEVMTCBh c19oYXZlX3JlcXVpcmVkPXllcw0KK2ZpOyB9DQorSUZTPSRhc19zYXZlX0lGUw0KKw0KKw0KKyAg ICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoNCisgICMgV2UgY2Fubm90 IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhDQorCSMg bmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBh bHNvDQorCSMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1bnNldCBub25leGlzdGVu dCB2YXJpYWJsZXMuDQorCSMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBz aGVsbC4NCisJQkFTSF9FTlY9L2Rldi9udWxsDQorCUVOVj0vZGV2L251bGwNCisJKHVuc2V0IEJB U0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WDQorCWV4cG9ydCBD T05GSUdfU0hFTEwNCisJY2FzZSAkLSBpbiAjICgoKCgNCisJICAqdip4KiB8ICp4KnYqICkgYXNf b3B0cz0tdnggOzsNCisJICAqdiogKSBhc19vcHRzPS12IDs7DQorCSAgKngqICkgYXNfb3B0cz0t eCA7Ow0KKwkgICogKSBhc19vcHRzPSA7Ow0KKwllc2FjDQorCWV4ZWMgIiRDT05GSUdfU0hFTEwi ICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0NCitmaQ0KKw0KKyAgICBpZiB0ZXN0IHgk YXNfaGF2ZV9yZXF1aXJlZCA9IHhubzsgdGhlbiA6DQorICAkYXNfZWNobyAiJDA6IFRoaXMgc2Ny aXB0IHJlcXVpcmVzIGEgc2hlbGwgbW9yZSBtb2Rlcm4gdGhhbiBhbGwiDQorICAkYXNfZWNobyAi JDA6IHRoZSBzaGVsbHMgdGhhdCBJIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiINCisgIGlmIHRlc3Qg eCR7WlNIX1ZFUlNJT04rc2V0fSA9IHhzZXQgOyB0aGVuDQorICAgICRhc19lY2hvICIkMDogSW4g cGFydGljdWxhciwgenNoICRaU0hfVkVSU0lPTiBoYXMgYnVncyBhbmQgc2hvdWxkIg0KKyAgICAk YXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iDQorICBlbHNl DQorICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYWJv dXQgeW91ciBzeXN0ZW0sDQorJDA6IGluY2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0 IGJlZm9yZSB0aGlzDQorJDA6IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwg b3IgbWFudWFsbHkgcnVuDQorJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlv dSBkbyBoYXZlIG9uZS4iDQorICBmaQ0KKyAgZXhpdCAxDQorZmkNCitmaQ0KK2ZpDQorU0hFTEw9 JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0NCitleHBvcnQgU0hFTEwNCisjIFVuc2V0IG1vcmUgdmFy aWFibGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0b29scy4N CitDTElDT0xPUl9GT1JDRT0gR1JFUF9PUFRJT05TPQ0KK3Vuc2V0IENMSUNPTE9SX0ZPUkNFIEdS RVBfT1BUSU9OUw0KKw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIE00c2ggU2hl bGwgRnVuY3Rpb25zLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMgYXNfZm5f dW5zZXQgVkFSDQorIyAtLS0tLS0tLS0tLS0tLS0NCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4NCith c19mbl91bnNldCAoKQ0KK3sNCisgIHsgZXZhbCAkMT07IHVuc2V0ICQxO30NCit9DQorYXNfdW5z ZXQ9YXNfZm5fdW5zZXQNCisNCisjIGFzX2ZuX3NldF9zdGF0dXMgU1RBVFVTDQorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLg0K K2FzX2ZuX3NldF9zdGF0dXMgKCkNCit7DQorICByZXR1cm4gJDENCit9ICMgYXNfZm5fc2V0X3N0 YXR1cw0KKw0KKyMgYXNfZm5fZXhpdCBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tDQorIyBF eGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFwIDAiIG9yICJzZXQgLWUi IGNvbnRleHQuDQorYXNfZm5fZXhpdCAoKQ0KK3sNCisgIHNldCArZQ0KKyAgYXNfZm5fc2V0X3N0 YXR1cyAkMQ0KKyAgZXhpdCAkMQ0KK30gIyBhc19mbl9leGl0DQorDQorIyBhc19mbl9ta2Rpcl9w DQorIyAtLS0tLS0tLS0tLS0tDQorIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBp bmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuDQorYXNfZm5fbWtkaXJfcCAoKQ0KK3sNCisN CisgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7Ow0KKyAgZXNh Yw0KKyAgdGVzdCAtZCAiJGFzX2RpciIgfHwgZXZhbCAkYXNfbWtkaXJfcCB8fCB7DQorICAgIGFz X2RpcnM9DQorICAgIHdoaWxlIDo7IGRvDQorICAgICAgY2FzZSAkYXNfZGlyIGluICMoDQorICAg ICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxc JycvZyJgOzsgIycoDQorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsNCisgICAgICBlc2FjDQor ICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyINCisgICAgICBhc19kaXI9YCRhc19k aXJuYW1lIC0tICIkYXNfZGlyIiB8fA0KKyRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9d XCkvLypbXi9dW14vXSovKiQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8 IFwNCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJGFzX2RpciIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8DQorJGFzX2VjaG8gWCIkYXNfZGlyIiB8DQorICAgIHNl ZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAg IHENCisJICB9DQorCSAgL15YXChcL1wvXClbXi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBx DQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9 DQorCSAgL15YXChcL1wpLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMv LiovLi87IHEnYA0KKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrDQorICAgIGRvbmUN CisgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIg0KKyAgfSB8 fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJl Y3RvcnkgJGFzX2RpciINCisNCisNCit9ICMgYXNfZm5fbWtkaXJfcA0KKyMgYXNfZm5fYXBwZW5k IFZBUiBWQUxVRQ0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQXBwZW5kIHRoZSB0ZXh0 IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4g VGFrZQ0KKyMgYWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cg YW1vcnRpemVkIGxpbmVhciBncm93dGggb3Zlcg0KKyMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVh ZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUNCisjIGlt cGxlbWVudGF0aW9ucy4NCitpZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRh c192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBldmFsICdhc19mbl9hcHBlbmQg KCkNCisgIHsNCisgICAgZXZhbCAkMSs9XCQyDQorICB9Jw0KK2Vsc2UNCisgIGFzX2ZuX2FwcGVu ZCAoKQ0KKyAgew0KKyAgICBldmFsICQxPVwkJDFcJDINCisgIH0NCitmaSAjIGFzX2ZuX2FwcGVu ZA0KKw0KKyMgYXNfZm5fYXJpdGggQVJHLi4uDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0NCisjIFBl cmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJl c3VsdCBpbiB0aGUNCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMg dGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMNCisjIG11c3QgYmUgcG9ydGFibGUg YWNyb3NzICQoKCkpIGFuZCBleHByLg0KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAy IikgMj4vZGV2L251bGw7IHRoZW4gOg0KKyAgZXZhbCAnYXNfZm5fYXJpdGggKCkNCisgIHsNCisg ICAgYXNfdmFsPSQoKCAkKiApKQ0KKyAgfScNCitlbHNlDQorICBhc19mbl9hcml0aCAoKQ0KKyAg ew0KKyAgICBhc192YWw9YGV4cHIgIiRAIiB8fCB0ZXN0ICQ/IC1lcSAxYA0KKyAgfQ0KK2ZpICMg YXNfZm5fYXJpdGgNCisNCisNCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExP R19GRF0NCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE91 dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBh bmQgTE9HX0ZEIGFyZQ0KKyMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0df RkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggU1RB VFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuDQorYXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19z dGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVz dCAiJDQiOyB0aGVuDQorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9f c3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sNCisgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0DQorICBmaQ0KKyAgJGFz X2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjINCisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0K K30gIyBhc19mbl9lcnJvcg0KKw0KK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYx ICYmDQorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4N CisgIGFzX2V4cHI9ZXhwcg0KK2Vsc2UNCisgIGFzX2V4cHI9ZmFsc2UNCitmaQ0KKw0KK2lmIChi YXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+ JjFgIiA9ICJYLyI7IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAgYXNf YmFzZW5hbWU9ZmFsc2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVz dCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfZGlybmFtZT1k aXJuYW1lDQorZWxzZQ0KKyAgYXNfZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19i YXNlbmFtZSAtLSAiJDAiIHx8DQorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkv KiQnIFx8IFwNCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCkn IFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipc L1woW14vXVteL10qXClcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAv XlhcL1woXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9c KFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdg DQorDQorIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xl dHRlcnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RF RkdISUpLTE1OT1BRUlNUVVZXWFlaJw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNf Y3JfTEVUVEVSUw0KK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNf Y3JfTGV0dGVycyRhc19jcl9kaWdpdHMNCisNCisNCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNf bGluZW5vXzFhPSRMSU5FTk8NCisgIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRM SU5FTk8NCisgIGV2YWwgJ3Rlc3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xp bmVub18yJyRhc19ydW4nIiAmJg0KKyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVu JyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgew0KKyAgIyBCbGFtZSBMZWUg RS4gTWNNYWhvbiAoMTkzMS0xOTg5KSBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pDQorICBzZWQgLW4g Jw0KKyAgICBwDQorICAgIC9bJF1MSU5FTk8vPQ0KKyAgJyA8JGFzX215c2VsZiB8DQorICAgIHNl ZCAnDQorICAgICAgcy9bJF1MSU5FTk8uKi8mLS8NCisgICAgICB0IGxpbmVubw0KKyAgICAgIGIN CisgICAgICA6bGluZW5vDQorICAgICAgTg0KKyAgICAgIDpsb29wDQorICAgICAgcy9bJF1MSU5F Tk9cKFteJyRhc19jcl9hbG51bSdfXS4qXG5cKVwoLipcKS9cMlwxXDIvDQorICAgICAgdCBsb29w DQorICAgICAgcy8tXG4uKi8vDQorICAgICcgPiRhc19tZS5saW5lbm8gJiYNCisgIGNobW9kICt4 ICIkYXNfbWUubGluZW5vIiB8fA0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5u b3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBh c19mbl9leGl0IDE7IH0NCisNCisgICMgRG9uJ3QgdHJ5IHRvIGV4ZWMgYXMgaXQgY2hhbmdlcyAk WzBdLCBjYXVzaW5nIGFsbCBzb3J0IG9mIHByb2JsZW1zDQorICAjICh0aGUgZGlybmFtZSBvZiAk WzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUNCisgICMgb3JpZ2lu YWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8gdGhpcyku DQorICAuICIuLyRhc19tZS5saW5lbm8iDQorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhl IGxhc3QgY29tbWFuZC4NCisgIGV4aXQNCit9DQorDQorRUNIT19DPSBFQ0hPX049IEVDSE9fVD0N CitjYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKA0KKy1uKikNCisgIGNhc2UgYGVjaG8gJ3h5XGMn YCBpbg0KKyAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hPX1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0 ZXIuDQorICB4eSkgIEVDSE9fQz0nXGMnOzsNCisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcg b24gQUlYIDYuMWAgPiAvZGV2L251bGwNCisgICAgICAgRUNIT19UPScJJzs7DQorICBlc2FjOzsN CisqKQ0KKyAgRUNIT19OPSctbic7Ow0KK2VzYWMNCisNCitybSAtZiBjb25mJCQgY29uZiQkLmV4 ZSBjb25mJCQuZmlsZQ0KK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbg0KKyAgcm0gLWYgY29u ZiQkLmRpci9jb25mJCQuZmlsZQ0KK2Vsc2UNCisgIHJtIC1mIGNvbmYkJC5kaXINCisgIG1rZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCitmaQ0KK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4v ZGV2L251bGw7IHRoZW4NCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgICBhc19sbl9zPSdsbiAtcycNCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0 d28gZ290Y2hhczoNCisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5k IGBsbiBmaWxlIGRpcicgZmFpbC4NCisgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxp bmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuDQorICAgICMgSW4gYm90 aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuDQorICAgIGxuIC1zIGNvbmYk JC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwN CisgICAgICBhc19sbl9zPSdjcCAtcCcNCisgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+ L2Rldi9udWxsOyB0aGVuDQorICAgIGFzX2xuX3M9bG4NCisgIGVsc2UNCisgICAgYXNfbG5fcz0n Y3AgLXAnDQorICBmaQ0KK2Vsc2UNCisgIGFzX2xuX3M9J2NwIC1wJw0KK2ZpDQorcm0gLWYgY29u ZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQ0KK3JtZGly IGNvbmYkJC5kaXIgMj4vZGV2L251bGwNCisNCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0 aGVuDQorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInDQorZWxzZQ0KKyAgdGVzdCAt ZCAuLy1wICYmIHJtZGlyIC4vLXANCisgIGFzX21rZGlyX3A9ZmFsc2UNCitmaQ0KKw0KK2lmIHRl c3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcNCitl bHNlDQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgYXNfbHNfTF9v cHRpb249TA0KKyAgZWxzZQ0KKyAgICBhc19sc19MX29wdGlvbj0NCisgIGZpDQorICBhc190ZXN0 X3g9Jw0KKyAgICBldmFsIHNoIC1jICdcJycNCisgICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4N CisJdGVzdCAtZCAiJDEvLiI7DQorICAgICAgZWxzZQ0KKwljYXNlICQxIGluICMoDQorCS0qKXNl dCAiLi8kMSI7Ow0KKwllc2FjOw0KKwljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEi IDI+L2Rldi9udWxsYCBpbiAjKCgNCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQ0KKyAg ICAnXCcnIHNoDQorICAnDQorZmkNCithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeA0KKw0KKyMg U2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4NCith c190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3Ml W15fJGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3Ry aW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUq KyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQordGVzdCAtbiAiJERKRElSIiB8 fCBleGVjIDc8JjAgPC9kZXYvbnVsbA0KK2V4ZWMgNj4mMQ0KKw0KKyMgTmFtZSBvZiB0aGUgaG9z dC4NCisjIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBvbGQgR05VL0xpbnV4KSBy ZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsDQorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uDQor YWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFg DQorDQorIw0KKyMgSW5pdGlhbGl6YXRpb25zLg0KKyMNCithY19kZWZhdWx0X3ByZWZpeD0vdXNy L2xvY2FsDQorYWNfY2xlYW5fZmlsZXM9DQorYWNfY29uZmlnX2xpYm9ial9kaXI9Lg0KK0xJQk9C SlM9DQorY3Jvc3NfY29tcGlsaW5nPW5vDQorc3ViZGlycz0NCitNRkxBR1M9DQorTUFLRUZMQUdT PQ0KKw0KKyMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLg0KK1BBQ0tBR0VfTkFNRT0NCitQQUNL QUdFX1RBUk5BTUU9DQorUEFDS0FHRV9WRVJTSU9OPQ0KK1BBQ0tBR0VfU1RSSU5HPQ0KK1BBQ0tB R0VfQlVHUkVQT1JUPQ0KK1BBQ0tBR0VfVVJMPQ0KKw0KK2FjX3VuaXF1ZV9maWxlPSJjcnQwLlMi DQorYWNfdW5pcXVlX2ZpbGU9ImNydDAuUyINCithY19zdWJzdF92YXJzPSdMVExJQk9CSlMNCitM SUJPQkpTDQorSU5TVEFMTF9EQVRBDQorSU5TVEFMTF9TQ1JJUFQNCitJTlNUQUxMX1BST0dSQU0N CitSQU5MSUINCitBUg0KK2FtX19mYXN0ZGVwQ0NfRkFMU0UNCithbV9fZmFzdGRlcENDX1RSVUUN CitDQ0RFUE1PREUNCitBTURFUEJBQ0tTTEFTSA0KK0FNREVQX0ZBTFNFDQorQU1ERVBfVFJVRQ0K K2FtX19xdW90ZQ0KK2FtX19pbmNsdWRlDQorREVQRElSDQorYW1fX2xlYWRpbmdfZG90DQorQ0MN Cit0YXJnZXRfYWxpYXMNCitob3N0X2FsaWFzDQorYnVpbGRfYWxpYXMNCitMSUJTDQorRUNIT19U DQorRUNIT19ODQorRUNIT19DDQorREVGUw0KK21hbmRpcg0KK2xvY2FsZWRpcg0KK2xpYmRpcg0K K3BzZGlyDQorcGRmZGlyDQorZHZpZGlyDQoraHRtbGRpcg0KK2luZm9kaXINCitkb2NkaXINCitv bGRpbmNsdWRlZGlyDQoraW5jbHVkZWRpcg0KK2xvY2Fsc3RhdGVkaXINCitzaGFyZWRzdGF0ZWRp cg0KK3N5c2NvbmZkaXINCitkYXRhZGlyDQorZGF0YXJvb3RkaXINCitsaWJleGVjZGlyDQorc2Jp bmRpcg0KK2JpbmRpcg0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUNCitwcmVmaXgNCitleGVjX3By ZWZpeA0KK1BBQ0tBR0VfVVJMDQorUEFDS0FHRV9CVUdSRVBPUlQNCitQQUNLQUdFX1NUUklORw0K K1BBQ0tBR0VfVkVSU0lPTg0KK1BBQ0tBR0VfVEFSTkFNRQ0KK1BBQ0tBR0VfTkFNRQ0KK1BBVEhf U0VQQVJBVE9SDQorU0hFTEwnDQorYWNfc3Vic3RfZmlsZXM9JycNCithY191c2VyX29wdHM9Jw0K K2VuYWJsZV9vcHRpb25fY2hlY2tpbmcNCitlbmFibGVfZGVwZW5kZW5jeV90cmFja2luZw0KKycN CisgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcw0KK2hvc3RfYWxpYXMNCit0YXJn ZXRfYWxpYXMnDQorDQorDQorIyBJbml0aWFsaXplIHNvbWUgdmFyaWFibGVzIHNldCBieSBvcHRp b25zLg0KK2FjX2luaXRfaGVscD0NCithY19pbml0X3ZlcnNpb249ZmFsc2UNCithY191bnJlY29n bml6ZWRfb3B0cz0NCithY191bnJlY29nbml6ZWRfc2VwPQ0KKyMgVGhlIHZhcmlhYmxlcyBoYXZl IHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBvcHRpb25zLCB3aXRoDQorIyBkYXNoZXMgY2hhbmdlZCB0 byB1bmRlcmxpbmVzLg0KK2NhY2hlX2ZpbGU9L2Rldi9udWxsDQorZXhlY19wcmVmaXg9Tk9ORQ0K K25vX2NyZWF0ZT0NCitub19yZWN1cnNpb249DQorcHJlZml4PU5PTkUNCitwcm9ncmFtX3ByZWZp eD1OT05FDQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQ0KK3Byb2dyYW1fdHJhbnNmb3JtX25hbWU9cyx4 LHgsDQorc2lsZW50PQ0KK3NpdGU9DQorc3JjZGlyPQ0KK3ZlcmJvc2U9DQoreF9pbmNsdWRlcz1O T05FDQoreF9saWJyYXJpZXM9Tk9ORQ0KKw0KKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRp b25zLg0KKyMgVGhlc2UgYXJlIGxlZnQgdW5leHBhbmRlZCBzbyB1c2VycyBjYW4gIm1ha2UgaW5z dGFsbCBleGVjX3ByZWZpeD0vZm9vIg0KKyMgYW5kIGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJl IHN1cHBvc2VkIHRvIGJlIGJhc2VkIG9uIGV4ZWNfcHJlZml4DQorIyBieSBkZWZhdWx0IHdpbGwg YWN0dWFsbHkgY2hhbmdlLg0KKyMgVXNlIGJyYWNlcyBpbnN0ZWFkIG9mIHBhcmVucyBiZWNhdXNl IHNoLCBwZXJsLCBldGMuIGFsc28gYWNjZXB0IHRoZW0uDQorIyAoVGhlIGxpc3QgZm9sbG93cyB0 aGUgc2FtZSBvcmRlciBhcyB0aGUgR05VIENvZGluZyBTdGFuZGFyZHMuKQ0KK2JpbmRpcj0nJHtl eGVjX3ByZWZpeH0vYmluJw0KK3NiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L3NiaW4nDQorbGliZXhl Y2Rpcj0nJHtleGVjX3ByZWZpeH0vbGliZXhlYycNCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3No YXJlJw0KK2RhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9Jw0KK3N5c2NvbmZkaXI9JyR7cHJlZml4fS9l dGMnDQorc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nDQorbG9jYWxzdGF0ZWRpcj0nJHtw cmVmaXh9L3ZhcicNCitpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScNCitvbGRpbmNsdWRl ZGlyPScvdXNyL2luY2x1ZGUnDQorZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdF fScNCitpbmZvZGlyPScke2RhdGFyb290ZGlyfS9pbmZvJw0KK2h0bWxkaXI9JyR7ZG9jZGlyfScN CitkdmlkaXI9JyR7ZG9jZGlyfScNCitwZGZkaXI9JyR7ZG9jZGlyfScNCitwc2Rpcj0nJHtkb2Nk aXJ9Jw0KK2xpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJw0KK2xvY2FsZWRpcj0nJHtkYXRhcm9v dGRpcn0vbG9jYWxlJw0KK21hbmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJw0KKw0KK2FjX3ByZXY9 DQorYWNfZGFzaGRhc2g9DQorZm9yIGFjX29wdGlvbg0KK2RvDQorICAjIElmIHRoZSBwcmV2aW91 cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4NCisgIGlmIHRlc3QgLW4gIiRh Y19wcmV2IjsgdGhlbg0KKyAgICBldmFsICRhY19wcmV2PVwkYWNfb3B0aW9uDQorICAgIGFjX3By ZXY9DQorICAgIGNvbnRpbnVlDQorICBmaQ0KKw0KKyAgY2FzZSAkYWNfb3B0aW9uIGluDQorICAq PT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7Ow0K KyAgKj0pICAgYWNfb3B0YXJnPSA7Ow0KKyAgKikgICAgYWNfb3B0YXJnPXllcyA7Ow0KKyAgZXNh Yw0KKw0KKyAgIyBBY2NlcHQgdGhlIGltcG9ydGFudCBDeWdudXMgY29uZmlndXJlIG9wdGlvbnMs IHNvIHdlIGNhbiBkaWFnbm9zZSB0eXBvcy4NCisNCisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFjX29w dGlvbiBpbg0KKyAgLS0pDQorICAgIGFjX2Rhc2hkYXNoPXllcyA7Ow0KKw0KKyAgLWJpbmRpciB8 IC0tYmluZGlyIHwgLS1iaW5kaSB8IC0tYmluZCB8IC0tYmluIHwgLS1iaSkNCisgICAgYWNfcHJl dj1iaW5kaXIgOzsNCisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJp bmQ9KiB8IC0tYmluPSogfCAtLWJpPSopDQorICAgIGJpbmRpcj0kYWNfb3B0YXJnIDs7DQorDQor ICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQ0KKyAgICBhY19wcmV2 PWJ1aWxkX2FsaWFzIDs7DQorICAtYnVpbGQ9KiB8IC0tYnVpbGQ9KiB8IC0tYnVpbD0qIHwgLS1i dWk9KiB8IC0tYnU9KikNCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWNh Y2hlLWZpbGUgfCAtLWNhY2hlLWZpbGUgfCAtLWNhY2hlLWZpbCB8IC0tY2FjaGUtZmkgXA0KKyAg fCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2Eg fCAtLWMpDQorICAgIGFjX3ByZXY9Y2FjaGVfZmlsZSA7Ow0KKyAgLWNhY2hlLWZpbGU9KiB8IC0t Y2FjaGUtZmlsZT0qIHwgLS1jYWNoZS1maWw9KiB8IC0tY2FjaGUtZmk9KiBcDQorICB8IC0tY2Fj aGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0t Y2E9KiB8IC0tYz0qKQ0KKyAgICBjYWNoZV9maWxlPSRhY19vcHRhcmcgOzsNCisNCisgIC0tY29u ZmlnLWNhY2hlIHwgLUMpDQorICAgIGNhY2hlX2ZpbGU9Y29uZmlnLmNhY2hlIDs7DQorDQorICAt ZGF0YWRpciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkNCisgICAgYWNfcHJldj1k YXRhZGlyIDs7DQorICAtZGF0YWRpcj0qIHwgLS1kYXRhZGlyPSogfCAtLWRhdGFkaT0qIHwgLS1k YXRhZD0qKQ0KKyAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1kYXRhcm9vdGRpciB8 IC0tZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGkgfCAtLWRhdGFyb290ZCB8IC0tZGF0YXJvb3Qg XA0KKyAgfCAtLWRhdGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpDQorICAgIGFjX3ByZXY9ZGF0 YXJvb3RkaXIgOzsNCisgIC1kYXRhcm9vdGRpcj0qIHwgLS1kYXRhcm9vdGRpcj0qIHwgLS1kYXRh cm9vdGRpPSogfCAtLWRhdGFyb290ZD0qIFwNCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9v PSogfCAtLWRhdGFybz0qIHwgLS1kYXRhcj0qKQ0KKyAgICBkYXRhcm9vdGRpcj0kYWNfb3B0YXJn IDs7DQorDQorICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4 cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgDQorICAgICMgUmVqZWN0IG5h bWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4NCisgICAgZXhwciAi eCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYNCisg ICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0Ig0K KyAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQNCisgICAgYWNfdXNlcm9wdD1gJGFzX2Vj aG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYA0KKyAgICBjYXNlICRhY191c2Vy X29wdHMgaW4NCisgICAgICAqIg0KKyJlbmFibGVfJGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAg ICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJl Y29nbml6ZWRfc2VwLS1kaXNhYmxlLSRhY191c2Vyb3B0X29yaWciDQorCSBhY191bnJlY29nbml6 ZWRfc2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PW5v IDs7DQorDQorICAtZG9jZGlyIHwgLS1kb2NkaXIgfCAtLWRvY2RpIHwgLS1kb2MgfCAtLWRvKQ0K KyAgICBhY19wcmV2PWRvY2RpciA7Ow0KKyAgLWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8IC0tZG9j ZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopDQorICAgIGRvY2Rpcj0kYWNfb3B0YXJnIDs7DQorDQor ICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2KQ0K KyAgICBhY19wcmV2PWR2aWRpciA7Ow0KKyAgLWR2aWRpcj0qIHwgLS1kdmlkaXI9KiB8IC0tZHZp ZGk9KiB8IC0tZHZpZD0qIHwgLS1kdmk9KiB8IC0tZHY9KikNCisgICAgZHZpZGlyPSRhY19vcHRh cmcgOzsNCisNCisgIC1lbmFibGUtKiB8IC0tZW5hYmxlLSopDQorICAgIGFjX3VzZXJvcHQ9YGV4 cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2ANCisgICAgIyBSZWplY3Qg bmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHBy ICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0K KyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQi DQorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNf ZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgDQorICAgIGNhc2UgJGFjX3Vz ZXJfb3B0cyBpbg0KKyAgICAgICoiDQorImVuYWJsZV8kYWNfdXNlcm9wdCINCisiKikgOzsNCisg ICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3Vu cmVjb2duaXplZF9zZXAtLWVuYWJsZS0kYWNfdXNlcm9wdF9vcmlnIg0KKwkgYWNfdW5yZWNvZ25p emVkX3NlcD0nLCAnOzsNCisgICAgZXNhYw0KKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1c JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhl Yy1wcmVmaXggfCAtLWV4ZWMtcHJlZmkgXA0KKyAgfCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUg fCAtLWV4ZWMtcHIgfCAtLWV4ZWMtcCB8IC0tZXhlYy0gXA0KKyAgfCAtLWV4ZWMgfCAtLWV4ZSB8 IC0tZXgpDQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsNCisgIC1leGVjLXByZWZpeD0qIHwg LS1leGVjX3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSogXA0KKyAg fCAtLWV4ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0q IHwgLS1leGVjLT0qIFwNCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQ0KKyAgICBl eGVjX3ByZWZpeD0kYWNfb3B0YXJnIDs7DQorDQorICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1n KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4NCisgICAgd2l0aF9nYXM9eWVzIDs7 DQorDQorICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQ0KKyAgICBhY19pbml0 X2hlbHA9bG9uZyA7Ow0KKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9 ciogfCAtaHIqKQ0KKyAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7DQorICAtaGVscD1zKiB8 IC0taGVscD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopDQorICAgIGFjX2luaXRfaGVs cD1zaG9ydCA7Ow0KKw0KKyAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pDQorICAgIGFj X3ByZXY9aG9zdF9hbGlhcyA7Ow0KKyAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0t aG89KikNCisgICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7DQorDQorICAtaHRtbGRpciB8IC0t aHRtbGRpciB8IC0taHRtbGRpIHwgLS1odG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkNCisg ICAgYWNfcHJldj1odG1sZGlyIDs7DQorICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0 bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSogfCAtLWh0bT0qIFwNCisgIHwgLS1odD0qKQ0K KyAgICBodG1sZGlyPSRhY19vcHRhcmcgOzsNCisNCisgIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRl ZGlyIHwgLS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwNCisgIHwgLS1pbmNs dWQgfCAtLWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpDQorICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7 Ow0KKyAgLWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0t aW5jbHVkZWQ9KiB8IC0taW5jbHVkZT0qIFwNCisgIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8 IC0taW5jbD0qIHwgLS1pbmM9KikNCisgICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7DQorDQor ICAtaW5mb2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0t aW5mKQ0KKyAgICBhY19wcmV2PWluZm9kaXIgOzsNCisgIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9 KiB8IC0taW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0taW5mPSopDQorICAgIGlu Zm9kaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8 IC0tbGliZCkNCisgICAgYWNfcHJldj1saWJkaXIgOzsNCisgIC1saWJkaXI9KiB8IC0tbGliZGly PSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikNCisgICAgbGliZGlyPSRhY19vcHRhcmcgOzsNCisN CisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNk IHwgLS1saWJleGVjIFwNCisgIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQ0KKyAgICBh Y19wcmV2PWxpYmV4ZWNkaXIgOzsNCisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8 IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcDQorICB8IC0tbGli ZXhlPSogfCAtLWxpYmV4PSogfCAtLWxpYmU9KikNCisgICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJn IDs7DQorDQorICAtbG9jYWxlZGlyIHwgLS1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpIHwgLS1sb2Nh bGVkIHwgLS1sb2NhbGUpDQorICAgIGFjX3ByZXY9bG9jYWxlZGlyIDs7DQorICAtbG9jYWxlZGly PSogfCAtLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2Fs ZT0qKQ0KKyAgICBsb2NhbGVkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLWxvY2Fsc3RhdGVkaXIg fCAtLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXA0KKyAg fCAtLWxvY2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAtLWxvY2Fsc3QgfCAt LWxvY2FscykNCisgICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7DQorICAtbG9jYWxzdGF0ZWRp cj0qIHwgLS1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRl ZD0qIFwNCisgIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0q IHwgLS1sb2NhbHN0PSogfCAtLWxvY2Fscz0qKQ0KKyAgICBsb2NhbHN0YXRlZGlyPSRhY19vcHRh cmcgOzsNCisNCisgIC1tYW5kaXIgfCAtLW1hbmRpciB8IC0tbWFuZGkgfCAtLW1hbmQgfCAtLW1h biB8IC0tbWEgfCAtLW0pDQorICAgIGFjX3ByZXY9bWFuZGlyIDs7DQorICAtbWFuZGlyPSogfCAt LW1hbmRpcj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1t PSopDQorICAgIG1hbmRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtbmZwIHwgLS1uZnAgfCAtLW5m KQ0KKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLg0KKyAgICB3aXRoX2ZwPW5vIDs7 DQorDQorICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVh IHwgLS1uby1jcmUgXA0KKyAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pDQorICAgIG5vX2NyZWF0 ZT15ZXMgOzsNCisNCisgIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVj dXJzaW8gfCAtLW5vLXJlY3Vyc2kgXA0KKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAt LW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpDQorICAgIG5vX3JlY3Vyc2lv bj15ZXMgOzsNCisNCisgIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRp bmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwNCisgIHwgLS1vbGRpbmNsdWRlIHwgLS1vbGRpbmNs dWQgfCAtLW9sZGluY2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMgXA0KKyAgfCAtLW9sZGluIHwg LS1vbGRpIHwgLS1vbGQgfCAtLW9sIHwgLS1vKQ0KKyAgICBhY19wcmV2PW9sZGluY2x1ZGVkaXIg OzsNCisgIC1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVk ZWRpPSogfCAtLW9sZGluY2x1ZGVkPSogXA0KKyAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5j bHVkPSogfCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXA0KKyAgfCAt LW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikNCisgICAgb2xk aW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7DQorDQorICAtcHJlZml4IHwgLS1wcmVmaXggfCAtLXBy ZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQ0KKyAgICBhY19wcmV2PXByZWZpeCA7 Ow0KKyAgLXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1w cmU9KiB8IC0tcHI9KiB8IC0tcD0qKQ0KKyAgICBwcmVmaXg9JGFjX29wdGFyZyA7Ow0KKw0KKyAg LXByb2dyYW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0t cHJvZ3JhbS1wcmVmIFwNCisgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3JhbS1wciB8IC0tcHJv Z3JhbS1wKQ0KKyAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4IDs7DQorICAtcHJvZ3JhbS1wcmVm aXg9KiB8IC0tcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwNCisgIHwgLS1w cm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1wcm9n cmFtLXA9KikNCisgICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXByb2dy YW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0tcHJvZ3Jh bS1zdWZmIFwNCisgIHwgLS1wcm9ncmFtLXN1ZiB8IC0tcHJvZ3JhbS1zdSB8IC0tcHJvZ3JhbS1z KQ0KKyAgICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7DQorICAtcHJvZ3JhbS1zdWZmaXg9KiB8 IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwNCisgIHwgLS1wcm9ncmFt LXN1ZmY9KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3JhbS1zdT0qIHwgLS1wcm9ncmFtLXM9 KikNCisgICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFyZyA7Ow0KKw0KKyAgLXByb2dyYW0tdHJh bnNmb3JtLW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXA0KKyAgfCAtLXByb2dyYW0t dHJhbnNmb3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXA0KKyAgfCAtLXByb2dyYW0t dHJhbnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcDQorICB8IC0tcHJvZ3JhbS10cmFu c2Zvcm0gfCAtLXByb2dyYW0tdHJhbnNmb3IgXA0KKyAgfCAtLXByb2dyYW0tdHJhbnNmbyB8IC0t cHJvZ3JhbS10cmFuc2YgXA0KKyAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBc DQorICB8IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpDQorICAgIGFj X3ByZXY9cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7Ow0KKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5h bWU9KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5z Zm9ybS1uYW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcDQorICB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcDQorICB8IC0tcHJvZ3JhbS10 cmFuc2Zvcm09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwNCisgIHwgLS1wcm9ncmFtLXRyYW5z Zm89KiB8IC0tcHJvZ3JhbS10cmFuc2Y9KiBcDQorICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1w cm9ncmFtLXRyYW49KiBcDQorICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0t cHJvZ3JhbS10PSopDQorICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9JGFjX29wdGFyZyA7Ow0K Kw0KKyAgLXBkZmRpciB8IC0tcGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1w ZCkNCisgICAgYWNfcHJldj1wZGZkaXIgOzsNCisgIC1wZGZkaXI9KiB8IC0tcGRmZGlyPSogfCAt LXBkZmRpPSogfCAtLXBkZmQ9KiB8IC0tcGRmPSogfCAtLXBkPSopDQorICAgIHBkZmRpcj0kYWNf b3B0YXJnIDs7DQorDQorICAtcHNkaXIgfCAtLXBzZGlyIHwgLS1wc2RpIHwgLS1wc2QgfCAtLXBz KQ0KKyAgICBhY19wcmV2PXBzZGlyIDs7DQorICAtcHNkaXI9KiB8IC0tcHNkaXI9KiB8IC0tcHNk aT0qIHwgLS1wc2Q9KiB8IC0tcHM9KikNCisgICAgcHNkaXI9JGFjX29wdGFyZyA7Ow0KKw0KKyAg LXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwNCisg IHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQ0KKyAgICBz aWxlbnQ9eWVzIDs7DQorDQorICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1z YmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikNCisgICAgYWNfcHJldj1zYmluZGlyIDs7DQor ICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1z YmluPSogXA0KKyAgfCAtLXNiaT0qIHwgLS1zYj0qKQ0KKyAgICBzYmluZGlyPSRhY19vcHRhcmcg OzsNCisNCisgIC1zaGFyZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0 YXRlZGkgXA0KKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0 YXQgfCAtLXNoYXJlZHN0YSBcDQorICB8IC0tc2hhcmVkc3QgfCAtLXNoYXJlZHMgfCAtLXNoYXJl ZCB8IC0tc2hhcmUgfCAtLXNoYXIgXA0KKyAgfCAtLXNoYSB8IC0tc2gpDQorICAgIGFjX3ByZXY9 c2hhcmVkc3RhdGVkaXIgOzsNCisgIC1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRp cj0qIHwgLS1zaGFyZWRzdGF0ZWRpPSogXA0KKyAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFy ZWRzdGF0ZT0qIHwgLS1zaGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0YT0qIFwNCisgIHwgLS1zaGFy ZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSog XA0KKyAgfCAtLXNoYT0qIHwgLS1zaD0qKQ0KKyAgICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJn IDs7DQorDQorICAtc2l0ZSB8IC0tc2l0ZSB8IC0tc2l0KQ0KKyAgICBhY19wcmV2PXNpdGUgOzsN CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopDQorICAgIHNpdGU9JGFjX29wdGFyZyA7 Ow0KKw0KKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwg LS1zcikNCisgICAgYWNfcHJldj1zcmNkaXIgOzsNCisgIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSog fCAtLXNyY2RpPSogfCAtLXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopDQorICAgIHNyY2Rpcj0k YWNfb3B0YXJnIDs7DQorDQorICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29u ZmRpIHwgLS1zeXNjb25mZCB8IC0tc3lzY29uZiBcDQorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8 IC0tc3lzYyB8IC0tc3lzIHwgLS1zeSkNCisgICAgYWNfcHJldj1zeXNjb25mZGlyIDs7DQorICAt c3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25m ZD0qIHwgLS1zeXNjb25mPSogXA0KKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNj PSogfCAtLXN5cz0qIHwgLS1zeT0qKQ0KKyAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsNCisN CisgIC10YXJnZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEg fCAtLXQpDQorICAgIGFjX3ByZXY9dGFyZ2V0X2FsaWFzIDs7DQorICAtdGFyZ2V0PSogfCAtLXRh cmdldD0qIHwgLS10YXJnZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSop DQorICAgIHRhcmdldF9hbGlhcz0kYWNfb3B0YXJnIDs7DQorDQorICAtdiB8IC12ZXJib3NlIHwg LS12ZXJib3NlIHwgLS12ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQ0KKyAgICB2ZXJib3NlPXll cyA7Ow0KKw0KKyAgLXZlcnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAt LXZlcnMgfCAtVikNCisgICAgYWNfaW5pdF92ZXJzaW9uPTogOzsNCisNCisgIC13aXRoLSogfCAt LXdpdGgtKikNCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgt XChbXj1dKlwpJ2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxs IHZhcmlhYmxlIG5hbWVzLg0KKyAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFz X2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlk IHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiDQorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNl cm9wdA0KKyAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1st Ky5dL18vZydgDQorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbg0KKyAgICAgICoiDQorIndpdGhf JGFjX3VzZXJvcHQiDQorIiopIDs7DQorICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRh Y191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRoLSRhY191c2Vyb3B0 X29yaWciDQorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7Ow0KKyAgICBlc2FjDQorICAgIGV2 YWwgd2l0aF8kYWNfdXNlcm9wdD1cJGFjX29wdGFyZyA7Ow0KKw0KKyAgLXdpdGhvdXQtKiB8IC0t d2l0aG91dC0qKQ0KKyAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0 aG91dC1cKC4qXCknYA0KKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hl bGwgdmFyaWFibGUgbmFtZXMuDQorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8k YXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmDQorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFs aWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCINCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191 c2Vyb3B0DQorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3Mv Wy0rLl0vXy9nJ2ANCisgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluDQorICAgICAgKiINCisid2l0 aF8kYWNfdXNlcm9wdCINCisiKikgOzsNCisgICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0i JGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLXdpdGhvdXQtJGFjX3Vz ZXJvcHRfb3JpZyINCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7DQorICAgIGVzYWMNCisg ICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PW5vIDs7DQorDQorICAtLXgpDQorICAgICMgT2Jzb2xl dGU7IHVzZSAtLXdpdGgteC4NCisgICAgd2l0aF94PXllcyA7Ow0KKw0KKyAgLXgtaW5jbHVkZXMg fCAtLXgtaW5jbHVkZXMgfCAtLXgtaW5jbHVkZSB8IC0teC1pbmNsdWQgfCAtLXgtaW5jbHUgXA0K KyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkNCisgICAgYWNfcHJldj14 X2luY2x1ZGVzIDs7DQorICAteC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGVzPSogfCAtLXgtaW5j bHVkZT0qIHwgLS14LWluY2x1ZD0qIHwgLS14LWluY2x1PSogXA0KKyAgfCAtLXgtaW5jbD0qIHwg LS14LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQ0KKyAgICB4X2luY2x1ZGVzPSRhY19vcHRh cmcgOzsNCisNCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUg fCAtLXgtbGlicmFyaSBcDQorICB8IC0teC1saWJyYXIgfCAtLXgtbGlicmEgfCAtLXgtbGliciB8 IC0teC1saWIgfCAtLXgtbGkgfCAtLXgtbCkNCisgICAgYWNfcHJldj14X2xpYnJhcmllcyA7Ow0K KyAgLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0t eC1saWJyYXJpPSogXA0KKyAgfCAtLXgtbGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJy PSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0teC1sPSopDQorICAgIHhfbGlicmFyaWVzPSRh Y19vcHRhcmcgOzsNCisNCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlv bjogXGAkYWNfb3B0aW9uJw0KK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24i DQorICAgIDs7DQorDQorICAqPSopDQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24i IDogJ3hcKFtePV0qXCk9J2ANCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlk IHNoZWxsIHZhcmlhYmxlIG5hbWVzLg0KKyAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygNCisgICAg ICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApDQorICAgICAgYXNfZm5fZXJyb3Ig JD8gImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsNCisgICAgZXNhYw0K KyAgICBldmFsICRhY19lbnZ2YXI9XCRhY19vcHRhcmcNCisgICAgZXhwb3J0ICRhY19lbnZ2YXIg OzsNCisNCisgICopDQorICAgICMgRklYTUU6IHNob3VsZCBiZSByZW1vdmVkIGluIGF1dG9jb25m IDMuMC4NCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1i dWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyDQorICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIu KlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJg0KKyAgICAgICRhc19lY2hvICIkYXNf bWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0eXBlOiAkYWNfb3B0aW9uIiA+JjINCisgICAgOiAi JHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJn ZXRfYWxpYXM9JGFjX29wdGlvbn0iDQorICAgIDs7DQorDQorICBlc2FjDQorZG9uZQ0KKw0KK2lm IHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbg0KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYg fCBzZWQgJ3MvXy8tL2cnYA0KKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1lbnQgdG8g JGFjX29wdGlvbiINCitmaQ0KKw0KK2lmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7 IHRoZW4NCisgIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4NCisgICAgbm8pIDs7DQor ICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJl Y29nbml6ZWRfb3B0cyIgOzsNCisgICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6 IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7Ow0KKyAg ZXNhYw0KK2ZpDQorDQorIyBDaGVjayBhbGwgZGlyZWN0b3J5IGFyZ3VtZW50cyBmb3IgY29uc2lz dGVuY3kuDQorZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIg bGliZXhlY2RpciBkYXRhcm9vdGRpciBcDQorCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3Rh dGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwNCisJCW9sZGluY2x1ZGVkaXIgZG9jZGly IGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwNCisJCWxpYmRpciBsb2NhbGVk aXIgbWFuZGlyDQorZG8NCisgIGV2YWwgYWNfdmFsPVwkJGFjX3Zhcg0KKyAgIyBSZW1vdmUgdHJh aWxpbmcgc2xhc2hlcy4NCisgIGNhc2UgJGFjX3ZhbCBpbg0KKyAgICAqLyApDQorICAgICAgYWNf dmFsPWBleHByICJYJGFjX3ZhbCIgOiAnWFwoLipbXi9dXCknIFx8ICJYJGFjX3ZhbCIgOiAnWFwo LipcKSdgDQorICAgICAgZXZhbCAkYWNfdmFyPVwkYWNfdmFsOzsNCisgIGVzYWMNCisgICMgQmUg c3VyZSB0byBoYXZlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcy4NCisgIGNhc2UgJGFjX3ZhbCBp bg0KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7Ow0KKyAgICBOT05FIHwgJycg KSBjYXNlICRhY192YXIgaW4gKnByZWZpeCApIGNvbnRpbnVlOzsgZXNhYzs7DQorICBlc2FjDQor ICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9y IC0tJGFjX3ZhcjogJGFjX3ZhbCINCitkb25lDQorDQorIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUg d2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0Jw0KKyMgdXNlZCB0 byBob2xkIHRoZSBhcmd1bWVudCBvZiAtLWhvc3QgZXRjLg0KKyMgRklYTUU6IFRvIHJlbW92ZSBz b21lIGRheS4NCitidWlsZD0kYnVpbGRfYWxpYXMNCitob3N0PSRob3N0X2FsaWFzDQordGFyZ2V0 PSR0YXJnZXRfYWxpYXMNCisNCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuDQoraWYgdGVz dCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuDQorICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9 IHg7IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlDQorICAgICRhc19lY2hvICIkYXNf bWU6IFdBUk5JTkc6IGlmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0 IHVzZSAtLWhvc3QuDQorICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBj cm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkIiA+JjINCisgIGVsaWYgdGVzdCAieCRidWls ZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4NCisgICAgY3Jvc3NfY29tcGlsaW5nPXll cw0KKyAgZmkNCitmaQ0KKw0KK2FjX3Rvb2xfcHJlZml4PQ0KK3Rlc3QgLW4gIiRob3N0X2FsaWFz IiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0NCisNCit0ZXN0ICIkc2lsZW50IiA9IHll cyAmJiBleGVjIDY+L2Rldi9udWxsDQorDQorDQorYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRh Y19wd2QiICYmDQorYWNfbHNfZGk9YGxzIC1kaSAuYCAmJg0KK2FjX3B3ZF9sc19kaT1gY2QgIiRh Y19wd2QiICYmIGxzIC1kaSAuYCB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0 b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIg0KK3Rlc3QgIlgkYWNfbHNfZGkiID0gIlgkYWNfcHdk X2xzX2RpIiB8fA0KKyAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBv ZiB3b3JraW5nIGRpcmVjdG9yeSINCisNCisNCisjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYg bG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuDQoraWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4N CisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzDQorICAjIFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRh aW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuDQorICBhY19jb25m ZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX215c2VsZiIgfHwNCiskYXNfZXhwciBYIiRhc19teXNl bGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRhc19teXNlbGYi IDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXCkkJyBcfCBc DQorCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19l Y2hvIFgiJGFzX215c2VsZiIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9d KlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14v XS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0K KwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMv L1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgIHNyY2Rpcj0kYWNfY29u ZmRpcg0KKyAgaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4NCisg ICAgc3JjZGlyPS4uDQorICBmaQ0KK2Vsc2UNCisgIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9bm8NCitm aQ0KK2lmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuDQorICB0ZXN0 ICIkYWNfc3JjZGlyX2RlZmF1bHRlZCIgPSB5ZXMgJiYgc3JjZGlyPSIkYWNfY29uZmRpciBvciAu LiINCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2Zp bGUpIGluICRzcmNkaXIiDQorZmkNCithY19tc2c9InNvdXJjZXMgYXJlIGluICRzcmNkaXIsIGJ1 dCBcYGNkICRzcmNkaXInIGRvZXMgbm90IHdvcmsiDQorYWNfYWJzX2NvbmZkaXI9YCgNCisJY2Qg IiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAk PyAiJGFjX21zZyINCisJcHdkKWANCisjIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNk aXI9Lg0KK2lmIHRlc3QgIiRhY19hYnNfY29uZmRpciIgPSAiJGFjX3B3ZCI7IHRoZW4NCisgIHNy Y2Rpcj0uDQorZmkNCisjIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmFpbGluZyBzbGFzaGVzIGZyb20g c3JjZGlyLg0KKyMgRG91YmxlIHNsYXNoZXMgaW4gZmlsZSBuYW1lcyBpbiBvYmplY3QgZmlsZSBk ZWJ1Z2dpbmcgaW5mbw0KKyMgbWVzcyB1cCBNLXggZ2RiIGluIEVtYWNzLg0KK2Nhc2UgJHNyY2Rp ciBpbg0KKyovKSBzcmNkaXI9YGV4cHIgIlgkc3JjZGlyIiA6ICdYXCguKlteL11cKScgXHwgIlgk c3JjZGlyIiA6ICdYXCguKlwpJ2A7Ow0KK2VzYWMNCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91 c192YXJzOyBkbw0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3NldD1cJHske2FjX3Zhcn0rc2V0 fQ0KKyAgZXZhbCBhY19lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9DQorICBldmFsIGFj X2N2X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9DQorICBldmFsIGFjX2N2X2Vu dl8ke2FjX3Zhcn1fdmFsdWU9XCQke2FjX3Zhcn0NCitkb25lDQorDQorIw0KKyMgUmVwb3J0IHRo ZSAtLWhlbHAgbWVzc2FnZS4NCisjDQoraWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9uZyI7 IHRoZW4NCisgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFr ZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLg0KKyAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcg dG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLg0KKyAgY2F0IDw8X0FDRU9GDQorXGBj b25maWd1cmUnIGNvbmZpZ3VyZXMgdGhpcyBwYWNrYWdlIHRvIGFkYXB0IHRvIG1hbnkga2luZHMg b2Ygc3lzdGVtcy4NCisNCitVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4NCisN CitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwg c3BlY2lmeSB0aGVtIGFzDQorVkFSPVZBTFVFLiAgU2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMg b2Ygc29tZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxlcy4NCisNCitEZWZhdWx0cyBmb3IgdGhlIG9w dGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4NCisNCitDb25maWd1cmF0aW9uOg0KKyAg LWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQNCisgICAg ICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkgb3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBh Y2thZ2UNCisgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAg b2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcw0KKyAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAg ZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0DQorICAtcSwgLS1xdWlldCwgLS1z aWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzDQorICAgICAgLS1j YWNoZS1maWxlPUZJTEUgICBjYWNoZSB0ZXN0IHJlc3VsdHMgaW4gRklMRSBbZGlzYWJsZWRdDQor ICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmln LmNhY2hlJw0KKyAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQg ZmlsZXMNCisgICAgICAtLXNyY2Rpcj1ESVIgICAgICAgIGZpbmQgdGhlIHNvdXJjZXMgaW4gRElS IFtjb25maWd1cmUgZGlyIG9yIFxgLi4nXQ0KKw0KK0luc3RhbGxhdGlvbiBkaXJlY3RvcmllczoN CisgIC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5k ZW50IGZpbGVzIGluIFBSRUZJWA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZh dWx0X3ByZWZpeF0NCisgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0 dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYDQorICAgICAgICAgICAgICAgICAgICAgICAg ICBbUFJFRklYXQ0KKw0KK0J5IGRlZmF1bHQsIFxgbWFrZSBpbnN0YWxsJyB3aWxsIGluc3RhbGwg YWxsIHRoZSBmaWxlcyBpbg0KK1xgJGFjX2RlZmF1bHRfcHJlZml4L2JpbicsIFxgJGFjX2RlZmF1 bHRfcHJlZml4L2xpYicgZXRjLiAgWW91IGNhbiBzcGVjaWZ5DQorYW4gaW5zdGFsbGF0aW9uIHBy ZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywN Citmb3IgaW5zdGFuY2UgXGAtLXByZWZpeD1cJEhPTUUnLg0KKw0KK0ZvciBiZXR0ZXIgY29udHJv bCwgdXNlIHRoZSBvcHRpb25zIGJlbG93Lg0KKw0KK0ZpbmUgdHVuaW5nIG9mIHRoZSBpbnN0YWxs YXRpb24gZGlyZWN0b3JpZXM6DQorICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1 dGFibGVzIFtFUFJFRklYL2Jpbl0NCisgIC0tc2JpbmRpcj1ESVIgICAgICAgICAgIHN5c3RlbSBh ZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmluXQ0KKyAgLS1saWJleGVjZGlyPURJUiAgICAg ICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJWC9saWJleGVjXQ0KKyAgLS1zeXNjb25mZGly PURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdDQor ICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVu ZGVudCBkYXRhIFtQUkVGSVgvY29tXQ0KKyAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICAgbW9kaWZp YWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQ0KKyAgLS1saWJkaXI9RElSICAg ICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0NCisgIC0taW5jbHVk ZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0NCisgIC0tb2xk aW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIFsvdXNyL2luY2x1 ZGVdDQorICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJjaC4taW5kZXBlbmRl bnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdDQorICAtLWRhdGFkaXI9RElSICAgICAgICAgICBy ZWFkLW9ubHkgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW0RBVEFST09URElSXQ0KKyAg LS1pbmZvZGlyPURJUiAgICAgICAgICAgaW5mbyBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9p bmZvXQ0KKyAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtE QVRBUk9PVERJUi9sb2NhbGVdDQorICAtLW1hbmRpcj1ESVIgICAgICAgICAgICBtYW4gZG9jdW1l bnRhdGlvbiBbREFUQVJPT1RESVIvbWFuXQ0KKyAgLS1kb2NkaXI9RElSICAgICAgICAgICAgZG9j dW1lbnRhdGlvbiByb290IFtEQVRBUk9PVERJUi9kb2MvUEFDS0FHRV0NCisgIC0taHRtbGRpcj1E SVIgICAgICAgICAgIGh0bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQ0KKyAgLS1kdmlkaXI9RElS ICAgICAgICAgICAgZHZpIGRvY3VtZW50YXRpb24gW0RPQ0RJUl0NCisgIC0tcGRmZGlyPURJUiAg ICAgICAgICAgIHBkZiBkb2N1bWVudGF0aW9uIFtET0NESVJdDQorICAtLXBzZGlyPURJUiAgICAg ICAgICAgICBwcyBkb2N1bWVudGF0aW9uIFtET0NESVJdDQorX0FDRU9GDQorDQorICBjYXQgPDxc X0FDRU9GDQorX0FDRU9GDQorZmkNCisNCitpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhl bg0KKw0KKyAgY2F0IDw8XF9BQ0VPRg0KKw0KK09wdGlvbmFsIEZlYXR1cmVzOg0KKyAgLS1kaXNh YmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGgg b3B0aW9ucw0KKyAgLS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1ZGUgRkVBVFVS RSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFUVVJFPW5vKQ0KKyAgLS1lbmFibGUtRkVBVFVSRVs9QVJH XSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQ0KKyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJh Y2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZA0KKyAgLS1lbmFibGUtZGVwZW5kZW5jeS10 cmFja2luZyAgIGRvIG5vdCByZWplY3Qgc2xvdyBkZXBlbmRlbmN5IGV4dHJhY3RvcnMNCisNCitS ZXBvcnQgYnVncyB0byB0aGUgcGFja2FnZSBwcm92aWRlci4NCitfQUNFT0YNCithY19zdGF0dXM9 JD8NCitmaQ0KKw0KK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4N CisgICMgSWYgdGhlcmUgYXJlIHN1YmRpcnMsIHJlcG9ydCB0aGVpciBzcGVjaWZpYyAtLWhlbHAu DQorICBmb3IgYWNfZGlyIGluIDogJGFjX3N1YmRpcnNfYWxsOyBkbyB0ZXN0ICJ4JGFjX2RpciIg PSB4OiAmJiBjb250aW51ZQ0KKyAgICB0ZXN0IC1kICIkYWNfZGlyIiB8fA0KKyAgICAgIHsgY2Qg IiRzcmNkaXIiICYmIGFjX3B3ZD1gcHdkYCAmJiBzcmNkaXI9LiAmJiB0ZXN0IC1kICIkYWNfZGly IjsgfSB8fA0KKyAgICAgIGNvbnRpbnVlDQorICAgIGFjX2J1aWxkZGlyPS4NCisNCitjYXNlICIk YWNfZGlyIiBpbg0KKy4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190 b3BfYnVpbGRfcHJlZml4PSA7Ow0KKyopDQorICBhY19kaXJfc3VmZml4PS9gJGFzX2VjaG8gIiRh Y19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYA0KKyAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0 b3J5IGluICRhY19kaXJfc3VmZml4Lg0KKyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8g IiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgDQorICBjYXNl ICRhY190b3BfYnVpbGRkaXJfc3ViIGluDQorICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFj X3RvcF9idWlsZF9wcmVmaXg9IDs7DQorICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9w X2J1aWxkZGlyX3N1Yi8gOzsNCisgIGVzYWMgOzsNCitlc2FjDQorYWNfYWJzX3RvcF9idWlsZGRp cj0kYWNfcHdkDQorYWNfYWJzX2J1aWxkZGlyPSRhY19wd2QkYWNfZGlyX3N1ZmZpeA0KKyMgZm9y IGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6DQorYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRf cHJlZml4DQorDQorY2FzZSAkc3JjZGlyIGluDQorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4g cGxhY2UuDQorICAgIGFjX3NyY2Rpcj0uDQorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWls ZGRpcl9zdWINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7Ow0KKyAgW1xcL10qIHwg PzpbXFwvXSogKSAgIyBBYnNvbHV0ZSBuYW1lLg0KKyAgICBhY19zcmNkaXI9JHNyY2RpciRhY19k aXJfc3VmZml4Ow0KKyAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXINCisgICAgYWNfYWJzX3RvcF9z cmNkaXI9JHNyY2RpciA7Ow0KKyAgKikgIyBSZWxhdGl2ZSBuYW1lLg0KKyAgICBhY19zcmNkaXI9 JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgNCisgICAgYWNfdG9wX3Ny Y2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXINCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9 JGFjX3B3ZC8kc3JjZGlyIDs7DQorZXNhYw0KK2FjX2Fic19zcmNkaXI9JGFjX2Fic190b3Bfc3Jj ZGlyJGFjX2Rpcl9zdWZmaXgNCisNCisgICAgY2QgIiRhY19kaXIiIHx8IHsgYWNfc3RhdHVzPSQ/ OyBjb250aW51ZTsgfQ0KKyAgICAjIENoZWNrIGZvciBndWVzdGVkIGNvbmZpZ3VyZS4NCisgICAg aWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IjsgdGhlbg0KKyAgICAgIGVjaG8g JiYNCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJlLmdudSIgLS1oZWxwPXJlY3Vy c2l2ZQ0KKyAgICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlIjsgdGhlbg0KKyAg ICAgIGVjaG8gJiYNCisgICAgICAkU0hFTEwgIiRhY19zcmNkaXIvY29uZmlndXJlIiAtLWhlbHA9 cmVjdXJzaXZlDQorICAgIGVsc2UNCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBu byBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGlzIGluICRhY19kaXIiID4mMg0KKyAgICBmaSB8 fCBhY19zdGF0dXM9JD8NCisgICAgY2QgIiRhY19wd2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVh azsgfQ0KKyAgZG9uZQ0KK2ZpDQorDQordGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAk YWNfc3RhdHVzDQoraWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbg0KKyAgY2F0IDw8XF9BQ0VPRg0K K2NvbmZpZ3VyZQ0KK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OA0KKw0KK0NvcHlyaWdo dCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCitUaGlzIGNvbmZpZ3Vy ZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbg0K K2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlm eSBpdC4NCitfQUNFT0YNCisgIGV4aXQNCitmaQ0KKw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAjIw0KKyMjIEF1dG9jb25mIGluaXRpYWxpemF0aW9uLiAjIw0KKyMjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIw0KKw0KKyMgYWNfZm5fY190cnlfY29tcGlsZSBMSU5FTk8NCisjIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBUcnkgdG8gY29tcGlsZSBjb25mdGVzdC4kYWNf ZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuDQorYWNfZm5fY190cnlfY29t cGlsZSAoKQ0KK3sNCisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3Rh Y2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sNCisgIHJtIC1mIGNvbmZ0ZXN0LiRh Y19vYmpleHQNCisgIGlmIHsgeyBhY190cnk9IiRhY19jb21waWxlIg0KK2Nhc2UgIigoJGFjX3Ry eSIgaW4NCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7Ow0KKyAg KikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7DQorZXNhYw0KK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiDQorJGFzX2VjaG8gIiRh Y190cnlfZWNobyI7IH0gPiY1DQorICAoZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVy cg0KKyAgYWNfc3RhdHVzPSQ/DQorICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbg0KKyAg ICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQ0KKyAgICBjYXQgY29u ZnRlc3QuZXIxID4mNQ0KKyAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyDQorICBm aQ0KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0 YXR1cyIgPiY1DQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHsNCisJIHRlc3QgLXogIiRh Y19jX3dlcnJvcl9mbGFnIiB8fA0KKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycg0KKyAgICAgICB9 ICYmIHRlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dDsgdGhlbiA6DQorICBhY19yZXR2YWw9MA0K K2Vsc2UNCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQ0KK3Nl ZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUNCisNCisJYWNfcmV0dmFsPTENCitmaQ0K KyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNf bGluZW5vDQorICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwNCisNCit9ICMgYWNfZm5fY190 cnlfY29tcGlsZQ0KK2NhdCA+Y29uZmlnLmxvZyA8PF9BQ0VPRg0KK1RoaXMgZmlsZSBjb250YWlu cyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlDQorcnVubmluZyBjb25m aWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4NCisN CitJdCB3YXMgY3JlYXRlZCBieSAkYXNfbWUsIHdoaWNoIHdhcw0KK2dlbmVyYXRlZCBieSBHTlUg QXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcw0KKw0KKyAgJCAkMCAk QA0KKw0KK19BQ0VPRg0KK2V4ZWMgNT4+Y29uZmlnLmxvZw0KK3sNCitjYXQgPDxfQVNVTkFNRQ0K KyMjIC0tLS0tLS0tLSAjIw0KKyMjIFBsYXRmb3JtLiAjIw0KKyMjIC0tLS0tLS0tLSAjIw0KKw0K K2hvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFg DQordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQor dW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQordW5h bWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQordW5hbWUg LXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQorDQorL3Vzci9i aW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVu a25vd25gDQorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxs ICAgICB8fCBlY2hvIHVua25vd25gDQorDQorL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jp bi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgfHwgZWNobyB1bmtub3duYA0KKy91c3Iv YmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAg IHx8IGVjaG8gdW5rbm93bmANCisvdXNyL2NvbnZleC9nZXRzeXNpbmZvID0gYCgvdXNyL2NvbnZl eC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gDQorL3Vzci9iaW4vaG9z dGluZm8gICAgICA9IGAoL3Vzci9iaW4vaG9zdGluZm8pIDI+L2Rldi9udWxsICAgICAgfHwgZWNo byB1bmtub3duYA0KKy9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4v ZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmANCisvdXNyL2Jpbi9vc2xldmVsICAg ICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8fCBlY2hvIHVua25v d25gDQorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251 bGwgICAgICAgICAgfHwgZWNobyB1bmtub3duYA0KKw0KK19BU1VOQU1FDQorDQorYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0K KyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisg ICAgJGFzX2VjaG8gIlBBVEg6ICRhc19kaXIiDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0K Kw0KK30gPiY1DQorDQorY2F0ID4mNSA8PF9BQ0VPRg0KKw0KKw0KKyMjIC0tLS0tLS0tLS0tICMj DQorIyMgQ29yZSB0ZXN0cy4gIyMNCisjIyAtLS0tLS0tLS0tLSAjIw0KKw0KK19BQ0VPRg0KKw0K Kw0KKyMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuDQorIyBTdHJpcCBvdXQgLS1u by1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRoZXkgZG8gbm90IHBpbGUgdXAuDQorIyBT dHJpcCBvdXQgLS1zaWxlbnQgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlY29yZCBpdCBmb3Ig ZnV0dXJlIHJ1bnMuDQorIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0 YS1jaGFyYWN0ZXJzLg0KKyMgTWFrZSB0d28gcGFzc2VzIHRvIGFsbG93IGZvciBwcm9wZXIgZHVw bGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLg0KK2FjX2NvbmZpZ3VyZV9hcmdzPQ0KK2FjX2Nv bmZpZ3VyZV9hcmdzMD0NCithY19jb25maWd1cmVfYXJnczE9DQorYWNfbXVzdF9rZWVwX25leHQ9 ZmFsc2UNCitmb3IgYWNfcGFzcyBpbiAxIDINCitkbw0KKyAgZm9yIGFjX2FyZw0KKyAgZG8NCisg ICAgY2FzZSAkYWNfYXJnIGluDQorICAgIC1uby1jcmVhdGUgfCAtLW5vLWMqIHwgLW4gfCAtbm8t cmVjdXJzaW9uIHwgLS1uby1yKikgY29udGludWUgOzsNCisgICAgLXEgfCAtcXVpZXQgfCAtLXF1 aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwNCisgICAgfCAtc2lsZW50IHwgLS1z aWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpDQorICAgICAgY29udGludWUgOzsNCisg ICAgKlwnKikNCisgICAgICBhY19hcmc9YCRhc19lY2hvICIkYWNfYXJnIiB8IHNlZCAicy8nLydc XFxcXFxcXCcnL2ciYCA7Ow0KKyAgICBlc2FjDQorICAgIGNhc2UgJGFjX3Bhc3MgaW4NCisgICAg MSkgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ3VyZV9hcmdzMCAiICckYWNfYXJnJyIgOzsNCisgICAg MikNCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIg0K KyAgICAgIGlmIHRlc3QgJGFjX211c3Rfa2VlcF9uZXh0ID0gdHJ1ZTsgdGhlbg0KKwlhY19tdXN0 X2tlZXBfbmV4dD1mYWxzZSAjIEdvdCB2YWx1ZSwgYmFjayB0byBub3JtYWwuDQorICAgICAgZWxz ZQ0KKwljYXNlICRhY19hcmcgaW4NCisJICAqPSogfCAtLWNvbmZpZy1jYWNoZSB8IC1DIHwgLWRp c2FibGUtKiB8IC0tZGlzYWJsZS0qIFwNCisJICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAt Z2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcDQorCSAgfCAtcSB8IC1xdWlldCB8IC0tcSogfCAt c2lsZW50IHwgLS1zaWwqIHwgLXYgfCAtdmVyYiogXA0KKwkgIHwgLXdpdGgtKiB8IC0td2l0aC0q IHwgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qIHwgLS14KQ0KKwkgICAgY2FzZSAiJGFjX2NvbmZp Z3VyZV9hcmdzMCAiIGluDQorCSAgICAgICIkYWNfY29uZmlndXJlX2FyZ3MxIioiICckYWNfYXJn JyAiKiApIGNvbnRpbnVlIDs7DQorCSAgICBlc2FjDQorCSAgICA7Ow0KKwkgIC0qICkgYWNfbXVz dF9rZWVwX25leHQ9dHJ1ZSA7Ow0KKwllc2FjDQorICAgICAgZmkNCisgICAgICBhc19mbl9hcHBl bmQgYWNfY29uZmlndXJlX2FyZ3MgIiAnJGFjX2FyZyciDQorICAgICAgOzsNCisgICAgZXNhYw0K KyAgZG9uZQ0KK2RvbmUNCit7IGFjX2NvbmZpZ3VyZV9hcmdzMD07IHVuc2V0IGFjX2NvbmZpZ3Vy ZV9hcmdzMDt9DQoreyBhY19jb25maWd1cmVfYXJnczE9OyB1bnNldCBhY19jb25maWd1cmVfYXJn czE7fQ0KKw0KKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5 IGZpbGVzLCBhbmQgY29tcGxldGUNCisjIGNvbmZpZy5sb2cuICBXZSByZW1vdmUgY29tbWVudHMg YmVjYXVzZSBhbnl3YXkgdGhlIHF1b3RlcyBpbiB0aGVyZQ0KKyMgd291bGQgY2F1c2UgcHJvYmxl bXMgb3IgbG9vayB1Z2x5Lg0KKyMgV0FSTklORzogVXNlICdcJycgdG8gcmVwcmVzZW50IGFuIGFw b3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLg0KKyMgV0FSTklORzogRG8gbm90IHN0YXJ0IHRoZSB0 cmFwIGNvZGUgd2l0aCBhIG5ld2xpbmUsIGR1ZSB0byBhIEZyZWVCU0QgNC4wIGJ1Zy4NCit0cmFw ICdleGl0X3N0YXR1cz0kPw0KKyAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBzb21lIGluZm9ybWF0 aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuDQorICB7DQorICAgIGVjaG8NCisNCisg ICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBDYWNoZSB2YXJpYWJsZXMu ICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyINCisgICAgZWNobw0KKyAgICAjIFRoZSBmb2xs b3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFs dWVzLA0KKygNCisgIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ1wnJ3MvXlwo W2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcnYDsgZG8NCisgICAgZXZhbCBhY192 YWw9XCQkYWNfdmFyDQorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKA0KKyAgICAqJHthc19ubH0qKQ0K KyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFy IGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogY2Fj aGUgdmFyaWFibGUgJGFjX3ZhciBjb250YWlucyBhIG5ld2xpbmUiID4mMjt9IDs7DQorICAgICAg ZXNhYw0KKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKA0KKyAgICAgIF8gfCBJRlMgfCBhc19ubCkg OzsgIygNCisgICAgICBCQVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAj KA0KKyAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7DQorICAgICAg ZXNhYyA7Ow0KKyAgICBlc2FjDQorICBkb25lDQorICAoc2V0KSAyPiYxIHwNCisgICAgY2FzZSAk YXNfbmxgKGFjX3NwYWNlPSdcJycgJ1wnJzsgc2V0KSAyPiYxYCBpbiAjKA0KKyAgICAqJHthc19u bH1hY19zcGFjZT1cICopDQorICAgICAgc2VkIC1uIFwNCisJInMvJ1wnJy8nXCcnXFxcXCdcJycn XCcnL2c7DQorCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwp PVxcKC4qXFwpL1xcMT0nXCcnXFwyJ1wnJy9wIg0KKyAgICAgIDs7ICMoDQorICAgICopDQorICAg ICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCINCisg ICAgICA7Ow0KKyAgICBlc2FjIHwNCisgICAgc29ydA0KKykNCisgICAgZWNobw0KKw0KKyAgICAk YXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBPdXRwdXQgdmFyaWFibGVzLiAj Iw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIg0KKyAgICBlY2hvDQorICAgIGZvciBhY192YXIg aW4gJGFjX3N1YnN0X3ZhcnMNCisgICAgZG8NCisgICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIN CisgICAgICBjYXNlICRhY192YWwgaW4NCisgICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hv ICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7DQorICAg ICAgZXNhYw0KKyAgICAgICRhc19lY2hvICIkYWNfdmFyPSdcJyckYWNfdmFsJ1wnJyINCisgICAg ZG9uZSB8IHNvcnQNCisgICAgZWNobw0KKw0KKyAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmls ZXMiOyB0aGVuDQorICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisj IyBGaWxlIHN1YnN0aXR1dGlvbnMuICMjDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyINCisg ICAgICBlY2hvDQorICAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfZmlsZXMNCisgICAgICBk bw0KKwlldmFsIGFjX3ZhbD1cJCRhY192YXINCisJY2FzZSAkYWNfdmFsIGluDQorCSpcJ1wnJyop IGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wn JydcJycvZyJgOzsNCisJZXNhYw0KKwkkYXNfZWNobyAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyci DQorICAgICAgZG9uZSB8IHNvcnQNCisgICAgICBlY2hvDQorICAgIGZpDQorDQorICAgIGlmIHRl c3QgLXMgY29uZmRlZnMuaDsgdGhlbg0KKyAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLSAj Iw0KKyMjIGNvbmZkZWZzLmguICMjDQorIyMgLS0tLS0tLS0tLS0gIyMiDQorICAgICAgZWNobw0K KyAgICAgIGNhdCBjb25mZGVmcy5oDQorICAgICAgZWNobw0KKyAgICBmaQ0KKyAgICB0ZXN0ICIk YWNfc2lnbmFsIiAhPSAwICYmDQorICAgICAgJGFzX2VjaG8gIiRhc19tZTogY2F1Z2h0IHNpZ25h bCAkYWNfc2lnbmFsIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiBleGl0ICRleGl0X3N0YXR1cyIN CisgIH0gPiY1DQorICBybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogJiYNCisgICAg cm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzKiBjb25mJCQqICRhY19jbGVhbl9maWxlcyAmJg0K KyAgICBleGl0ICRleGl0X3N0YXR1cw0KKycgMA0KK2ZvciBhY19zaWduYWwgaW4gMSAyIDEzIDE1 OyBkbw0KKyAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNf c2lnbmFsDQorZG9uZQ0KK2FjX3NpZ25hbD0wDQorDQorIyBjb25mZGVmcy5oIGF2b2lkcyBPUyBj b21tYW5kIGxpbmUgbGVuZ3RoIGxpbWl0cyB0aGF0IERFRlMgY2FuIGV4Y2VlZC4NCitybSAtZiAt ciBjb25mdGVzdCogY29uZmRlZnMuaA0KKw0KKyRhc19lY2hvICIvKiBjb25mZGVmcy5oICovIiA+ IGNvbmZkZWZzLmgNCisNCisjIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4NCisN CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNL QUdFX05BTUUiDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZp bmUgUEFDS0FHRV9UQVJOQU1FICIkUEFDS0FHRV9UQVJOQU1FIg0KK19BQ0VPRg0KKw0KK2NhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiJFBBQ0tBR0Vf VkVSU0lPTiINCitfQUNFT0YNCisNCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GDQorI2RlZmlu ZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIg0KK19BQ0VPRg0KKw0KK2NhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YNCisjZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICIkUEFDS0FHRV9C VUdSRVBPUlQiDQorX0FDRU9GDQorDQorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZp bmUgUEFDS0FHRV9VUkwgIiRQQUNLQUdFX1VSTCINCitfQUNFT0YNCisNCisNCisjIExldCB0aGUg c2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4N CisjIFByZWZlciBhbiBleHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBz ZWxlY3RlZCBvbmVzLg0KK2FjX3NpdGVfZmlsZTE9Tk9ORQ0KK2FjX3NpdGVfZmlsZTI9Tk9ORQ0K K2lmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4NCisgICMgV2UgZG8gbm90IHdhbnQgYSBQ QVRIIHNlYXJjaCBmb3IgY29uZmlnLnNpdGUuDQorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgN CisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsNCisgICAgKi8qKSBhY19z aXRlX2ZpbGUxPSRDT05GSUdfU0lURTs7DQorICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05G SUdfU0lURTs7DQorICBlc2FjDQorZWxpZiB0ZXN0ICJ4JHByZWZpeCIgIT0geE5PTkU7IHRoZW4N CisgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQ0KKyAgYWNfc2l0ZV9m aWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQ0KK2Vsc2UNCisgIGFjX3NpdGVfZmlsZTE9JGFj X2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlDQorICBhY19zaXRlX2ZpbGUyPSRhY19k ZWZhdWx0X3ByZWZpeC9ldGMvY29uZmlnLnNpdGUNCitmaQ0KK2ZvciBhY19zaXRlX2ZpbGUgaW4g IiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiDQorZG8NCisgIHRlc3QgIngkYWNfc2l0 ZV9maWxlIiA9IHhOT05FICYmIGNvbnRpbnVlDQorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFj X3NpdGVfZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4NCisgICAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRh Y19zaXRlX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgc2l0ZSBzY3JpcHQg JGFjX3NpdGVfZmlsZSIgPiY2O30NCisgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIg PiY1DQorICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwNCisgICAgICB8fCB7IHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9DQorYXNfZm5fZXJy b3IgJD8gImZhaWxlZCB0byBsb2FkIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUNCitTZWUgXGBj b25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQ0KKyAgZmkNCitkb25l DQorDQoraWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAjIFNvbWUgdmVyc2lvbnMg b2YgYmFzaCB3aWxsIGZhaWwgdG8gc291cmNlIC9kZXYvbnVsbCAoc3BlY2lhbCBmaWxlcw0KKyAg IyBhY3R1YWxseSksIHNvIHdlIGF2b2lkIGRvaW5nIHRoYXQuICBESkdQUCBlbXVsYXRlcyBpdCBh cyBhIHJlZ3VsYXIgZmlsZS4NCisgIGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2FjaGVfZmlsZSIg JiYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuDQorICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFz X2VjaG8gIiRhc19tZTogbG9hZGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30NCisgICAgY2Fz ZSAkY2FjaGVfZmlsZSBpbg0KKyAgICAgIFtcXC9dKiB8ID86W1xcL10qICkgLiAiJGNhY2hlX2Zp bGUiOzsNCisgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAuICIuLyRjYWNoZV9maWxlIjs7 DQorICAgIGVzYWMNCisgIGZpDQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1DQorJGFzX2VjaG8g IiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9DQorICA+JGNhY2hlX2Zp bGUNCitmaQ0KKw0KKyMgQ2hlY2sgdGhhdCB0aGUgcHJlY2lvdXMgdmFyaWFibGVzIHNhdmVkIGlu IHRoZSBjYWNoZSBoYXZlIGtlcHQgdGhlIHNhbWUNCisjIHZhbHVlLg0KK2FjX2NhY2hlX2NvcnJ1 cHRlZD1mYWxzZQ0KK2ZvciBhY192YXIgaW4gJGFjX3ByZWNpb3VzX3ZhcnM7IGRvDQorICBldmFs IGFjX29sZF9zZXQ9XCRhY19jdl9lbnZfJHthY192YXJ9X3NldA0KKyAgZXZhbCBhY19uZXdfc2V0 PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQNCisgIGV2YWwgYWNfb2xkX3ZhbD1cJGFjX2N2X2Vudl8k e2FjX3Zhcn1fdmFsdWUNCisgIGV2YWwgYWNfbmV3X3ZhbD1cJGFjX2Vudl8ke2FjX3Zhcn1fdmFs dWUNCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4NCisgICAgc2V0LCkNCisgICAg ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBcYCRhY192 YXInIHdhcyBzZXQgdG8gXGAkYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiY1DQor JGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRf dmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRl ZD06IDs7DQorICAgICxzZXQpDQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMg cnVuIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNl dCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQ0KKyAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06 IDs7DQorICAgICwpOzsNCisgICAgKikNCisgICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9 ICJ4JGFjX25ld192YWwiOyB0aGVuDQorCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBu b3QgbGVhZCB0byBmYWlsdXJlLg0KKwlhY19vbGRfdmFsX3c9YGVjaG8geCAkYWNfb2xkX3ZhbGAN CisJYWNfbmV3X3ZhbF93PWBlY2hvIHggJGFjX25ld192YWxgDQorCWlmIHRlc3QgIiRhY19vbGRf dmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbg0KKwkgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IFxgJGFjX3ZhcicgaGFzIGNoYW5nZWQgc2luY2Ug dGhlIHByZXZpb3VzIHJ1bjoiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192 YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjI7fQ0KKwkgIGFjX2Nh Y2hlX2NvcnJ1cHRlZD06DQorCWVsc2UNCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHdhcm5pbmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiBcYCRh Y192YXInIHNpbmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB3 YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0 aGUgcHJldmlvdXMgcnVuOiIgPiYyO30NCisJICBldmFsICRhY192YXI9XCRhY19vbGRfdmFsDQor CWZpDQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIg dmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogICBmb3JtZXIg dmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiYyO30NCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjUNCisk YXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQ0K KyAgICAgIGZpOzsNCisgIGVzYWMNCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29u ZmlnLnN0YXR1cy4NCisgIGlmIHRlc3QgIiRhY19uZXdfc2V0IiA9IHNldDsgdGhlbg0KKyAgICBj YXNlICRhY19uZXdfdmFsIGluDQorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAi JGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7DQorICAgICopIGFjX2Fy Zz0kYWNfdmFyPSRhY19uZXdfdmFsIDs7DQorICAgIGVzYWMNCisgICAgY2FzZSAiICRhY19jb25m aWd1cmVfYXJncyAiIGluDQorICAgICAgKiIgJyRhY19hcmcnICIqKSA7OyAjIEF2b2lkIGR1cHMu ICBVc2Ugb2YgcXVvdGVzIGVuc3VyZXMgYWNjdXJhY3kuDQorICAgICAgKikgYXNfZm5fYXBwZW5k IGFjX2NvbmZpZ3VyZV9hcmdzICIgJyRhY19hcmcnIiA7Ow0KKyAgICBlc2FjDQorICBmaQ0KK2Rv bmUNCitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuDQorICB7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1DQorJGFzX2Vj aG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQ0KKyAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJv bm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBl cnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxk IiA+JjI7fQ0KKyAgYXNfZm5fZXJyb3IgJD8gInJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3Ig XGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1DQorZmkNCisjIyAt LS0tLS0tLS0tLS0tLS0tLS0tLSAjIw0KKyMjIE1haW4gYm9keSBvZiBzY3JpcHQuICMjDQorIyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisNCithY19leHQ9Yw0KK2FjX2NwcD0nJENQUCAkQ1BQ RkxBR1MnDQorYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRh Y19leHQgPiY1Jw0KK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAk Q1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnDQorYWNfY29tcGls ZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQ0KKw0KKw0KKw0KK2FjX2F1eF9kaXI9DQorZm9y IGFjX2RpciBpbiAke3NyY2Rpcn0vLi4vLi4gIiRzcmNkaXIiLyR7c3JjZGlyfS8uLi8uLjsgZG8N CisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4NCisgICAgYWNfYXV4X2Rp cj0kYWNfZGlyDQorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMi DQorICAgIGJyZWFrDQorICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4N CisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyDQorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGly L2luc3RhbGwuc2ggLWMiDQorICAgIGJyZWFrDQorICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0 b29sIjsgdGhlbg0KKyAgICBhY19hdXhfZGlyPSRhY19kaXINCisgICAgYWNfaW5zdGFsbF9zaD0i JGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiDQorICAgIGJyZWFrDQorICBmaQ0KK2RvbmUN CitpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4NCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5u b3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gJHtzcmNkaXJ9Ly4u Ly4uIFwiJHNyY2RpclwiLyR7c3JjZGlyfS8uLi8uLiIgIiRMSU5FTk8iIDUNCitmaQ0KKw0KKyMg VGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLA0K KyMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYg cmVsZWFzZS4NCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVy J3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkNCisjIHdob3NlIGZ1bGwgbmFtZSBjb250 YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuDQorYWNfY29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1 eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLg0KK2FjX2Nv bmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3Qg dXNlIHRoaXMgdmFyLg0KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3Vy ZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4NCisNCisNCisNCisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKyMgQ2hlY2tzIGZvciBwcm9ncmFtcw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorcm0g LXJmIC50c3QgMj4vZGV2L251bGwNCitta2RpciAudHN0IDI+L2Rldi9udWxsDQoraWYgdGVzdCAt ZCAudHN0OyB0aGVuDQorICBhbV9fbGVhZGluZ19kb3Q9Lg0KK2Vsc2UNCisgIGFtX19sZWFkaW5n X2RvdD1fDQorZmkNCitybWRpciAudHN0IDI+L2Rldi9udWxsDQorDQorREVQRElSPSIke2FtX19s ZWFkaW5nX2RvdH1kZXBzIg0KKw0KK2FjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21t YW5kcyBkZXBmaWxlcyINCisNCisNCithbV9tYWtlPSR7TUFLRS1tYWtlfQ0KK2NhdCA+IGNvbmZp bmMgPDwgJ0VORCcNCithbV9fZG9pdDoNCisJQGVjaG8gZG9uZQ0KKy5QSE9OWTogYW1fX2RvaXQN CitFTkQNCisjIElmIHdlIGRvbid0IGZpbmQgYW4gaW5jbHVkZSBkaXJlY3RpdmUsIGp1c3QgY29t bWVudCBvdXQgdGhlIGNvZGUuDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9tYWtlIiA+JjUN CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3R5bGUgb2YgaW5jbHVkZSB1c2VkIGJ5ICRhbV9t YWtlLi4uICIgPiY2OyB9DQorYW1fX2luY2x1ZGU9IiMiDQorYW1fX3F1b3RlPQ0KK19hbV9yZXN1 bHQ9bm9uZQ0KKyMgRmlyc3QgdHJ5IEdOVSBtYWtlIHN0eWxlIGluY2x1ZGUuDQorZWNobyAiaW5j bHVkZSBjb25maW5jIiA+IGNvbmZtZg0KKyMgV2UgZ3JlcCBvdXQgYEVudGVyaW5nIGRpcmVjdG9y eScgYW5kIGBMZWF2aW5nIGRpcmVjdG9yeScNCisjIG1lc3NhZ2VzIHdoaWNoIGNhbiBvY2N1ciBp ZiBgdycgZW5kcyB1cCBpbiBNQUtFRkxBR1MuDQorIyBJbiBwYXJ0aWN1bGFyIHdlIGRvbid0IGxv b2sgYXQgYF5tYWtlOicgYmVjYXVzZSBHTlUgbWFrZSBtaWdodA0KKyMgYmUgaW52b2tlZCB1bmRl ciBzb21lIG90aGVyIG5hbWUgKHVzdWFsbHkgImdtYWtlIiksIGluIHdoaWNoDQorIyBjYXNlIGl0 IHByaW50cyBpdHMgbmV3IG5hbWUgaW5zdGVhZCBvZiBgbWFrZScuDQoraWYgdGVzdCAiYCRhbV9t YWtlIC1zIC1mIGNvbmZtZiAyPiAvZGV2L251bGwgfCBncmVwIC12ICdpbmcgZGlyZWN0b3J5J2Ai ID0gImRvbmUiOyB0aGVuDQorICAgYW1fX2luY2x1ZGU9aW5jbHVkZQ0KKyAgIGFtX19xdW90ZT0N CisgICBfYW1fcmVzdWx0PUdOVQ0KK2ZpDQorIyBOb3cgdHJ5IEJTRCBtYWtlIHN0eWxlIGluY2x1 ZGUuDQoraWYgdGVzdCAiJGFtX19pbmNsdWRlIiA9ICIjIjsgdGhlbg0KKyAgIGVjaG8gJy5pbmNs dWRlICJjb25maW5jIicgPiBjb25mbWYNCisgICBpZiB0ZXN0ICJgJGFtX21ha2UgLXMgLWYgY29u Zm1mIDI+IC9kZXYvbnVsbGAiID0gImRvbmUiOyB0aGVuDQorICAgICAgYW1fX2luY2x1ZGU9Lmlu Y2x1ZGUNCisgICAgICBhbV9fcXVvdGU9IlwiIg0KKyAgICAgIF9hbV9yZXN1bHQ9QlNEDQorICAg ZmkNCitmaQ0KKw0KKw0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkX2FtX3Jlc3VsdCIgPiY1DQorJGFzX2VjaG8gIiRfYW1fcmVzdWx0IiA+JjY7IH0N CitybSAtZiBjb25maW5jIGNvbmZtZg0KKw0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZXBl bmRlbmN5LXRyYWNraW5nIHdhcyBnaXZlbi4NCitpZiB0ZXN0ICIke2VuYWJsZV9kZXBlbmRlbmN5 X3RyYWNraW5nK3NldH0iID0gc2V0OyB0aGVuIDoNCisgIGVuYWJsZXZhbD0kZW5hYmxlX2RlcGVu ZGVuY3lfdHJhY2tpbmc7DQorZmkNCisNCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3Ry YWNraW5nIiAhPSB4bm87IHRoZW4NCisgIGFtX2RlcGNvbXA9IiRhY19hdXhfZGlyL2RlcGNvbXAi DQorICBBTURFUEJBQ0tTTEFTSD0nXCcNCitmaQ0KKw0KKw0KK2lmIHRlc3QgIngkZW5hYmxlX2Rl cGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbg0KKyAgQU1ERVBfVFJVRT0NCisgIEFNREVQ X0ZBTFNFPScjJw0KK2Vsc2UNCisgIEFNREVQX1RSVUU9JyMnDQorICBBTURFUF9GQUxTRT0NCitm aQ0KKw0KKw0KKw0KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2Fu IGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQy DQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQ0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIGFj X2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxz ZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGlu ICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYm IGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRl bnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0K KyAgICBhY19jdl9wcm9nX0NDPSJnY2MiDQorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQ0KKyAg ICBicmVhayAyDQorICBmaQ0KK2RvbmUNCisgIGRvbmUNCitJRlM9JGFzX3NhdmVfSUZTDQorDQor ZmkNCitmaQ0KK0NDPSRhY19jdl9wcm9nX0NDDQoraWYgdGVzdCAtbiAiJENDIjsgdGhlbg0KKyAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1 DQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9DQorZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsg fQ0KK2ZpDQorDQorDQorDQorZGVwY2M9IiRDQyIgICBhbV9jb21waWxlcl9saXN0PQ0KKw0KK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5j eSBzdHlsZSBvZiAkZGVwY2MiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGRlcGVuZGVuY3kg c3R5bGUgb2YgJGRlcGNjLi4uICIgPiY2OyB9DQoraWYgJHthbV9jdl9DQ19kZXBlbmRlbmNpZXNf Y29tcGlsZXJfdHlwZSs6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1f ZGVwY29tcCI7IHRoZW4NCisgICMgV2UgbWFrZSBhIHN1YmRpciBhbmQgZG8gdGhlIHRlc3RzIHRo ZXJlLiAgT3RoZXJ3aXNlIHdlIGNhbiBlbmQgdXANCisgICMgbWFraW5nIGJvZ3VzIGZpbGVzIHRo YXQgd2UgZG9uJ3Qga25vdyBhYm91dCBhbmQgbmV2ZXIgcmVtb3ZlLiAgRm9yDQorICAjIGluc3Rh bmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1 cA0KKyAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1l YW5zIGBwdXQgdGhlIG91dHB1dA0KKyAgIyBpbiBEJy4NCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0K KyAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZp bmQgaXQgaWYgd2UncmUNCisgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuDQorICBjcCAi JGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcg0KKyAgY2QgY29uZnRlc3QuZGlyDQorICAjIFdlIHdp bGwgYnVpbGQgb2JqZWN0cyBhbmQgZGVwZW5kZW5jaWVzIGluIGEgc3ViZGlyZWN0b3J5IGJlY2F1 c2UNCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVz LiAgRm9yIGluc3RhbmNlDQorICAjIGJvdGggVHJ1NjQncyBjYyBhbmQgSUNDIHN1cHBvcnQgLU1E IHRvIG91dHB1dCBkZXBlbmRlbmNpZXMgYXMgYQ0KKyAgIyBzaWRlIGVmZmVjdCBvZiBjb21waWxh dGlvbiwgYnV0IElDQyB3aWxsIHB1dCB0aGUgZGVwZW5kZW5jaWVzIGluDQorICAjIHRoZSBjdXJy ZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QNCisg ICMgZGlyZWN0b3J5Lg0KKyAgbWtkaXIgc3ViDQorDQorICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNf Y29tcGlsZXJfdHlwZT1ub25lDQorICBpZiB0ZXN0ICIkYW1fY29tcGlsZXJfbGlzdCIgPSAiIjsg dGhlbg0KKyAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uICdzL14jKlwoW2EtekEtWjAtOV0q XCkpJC9cMS9wJyA8IC4vZGVwY29tcGANCisgIGZpDQorICBmb3IgZGVwbW9kZSBpbiAkYW1fY29t cGlsZXJfbGlzdDsgZG8NCisgICAgIyBTZXR1cCBhIHNvdXJjZSB3aXRoIG1hbnkgZGVwZW5kZW5j aWVzLCBiZWNhdXNlIHNvbWUgY29tcGlsZXJzDQorICAgICMgbGlrZSB0byB3cmFwIGxhcmdlIGRl cGVuZGVuY3kgbGlzdHMgb24gY29sdW1uIDgwICh3aXRoIFwpLCBhbmQNCisgICAgIyB3ZSBzaG91 bGQgbm90IGNob29zZSBhIGRlcGNvbXAgbW9kZSB3aGljaCBpcyBjb25mdXNlZCBieSB0aGlzLg0K KyAgICAjDQorICAgICMgV2UgbmVlZCB0byByZWNyZWF0ZSB0aGVzZSBmaWxlcyBmb3IgZWFjaCB0 ZXN0LCBhcyB0aGUgY29tcGlsZXIgbWF5DQorICAgICMgb3ZlcndyaXRlIHNvbWUgb2YgdGhlbSB3 aGVuIHRlc3Rpbmcgd2l0aCBvYnNjdXJlIGNvbW1hbmQgbGluZXMuDQorICAgICMgVGhpcyBoYXBw ZW5zIGF0IGxlYXN0IHdpdGggdGhlIEFJWCBDIGNvbXBpbGVyLg0KKyAgICA6ID4gc3ViL2NvbmZ0 ZXN0LmMNCisgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDY7IGRvDQorICAgICAgZWNobyAnI2luY2x1 ZGUgImNvbmZ0c3QnJGknLmgiJyA+PiBzdWIvY29uZnRlc3QuYw0KKyAgICAgICMgVXNpbmcgYDog PiBzdWIvY29uZnRzdCRpLmgnIGNyZWF0ZXMgb25seSBzdWIvY29uZnRzdDEuaCB3aXRoDQorICAg ICAgIyBTb2xhcmlzIDgncyB7L3Vzcix9L2Jpbi9zaC4NCisgICAgICB0b3VjaCBzdWIvY29uZnRz dCRpLmgNCisgICAgZG9uZQ0KKyAgICBlY2hvICIke2FtX19pbmNsdWRlfSAke2FtX19xdW90ZX1z dWIvY29uZnRlc3QuUG8ke2FtX19xdW90ZX0iID4gY29uZm1mDQorDQorICAgIGNhc2UgJGRlcG1v ZGUgaW4NCisgICAgbm9zaWRlZWZmZWN0KQ0KKyAgICAgICMgYWZ0ZXIgdGhpcyB0YWcsIG1lY2hh bmlzbXMgYXJlIG5vdCBieSBzaWRlLWVmZmVjdCwgc28gdGhleSdsbA0KKyAgICAgICMgb25seSBi ZSB1c2VkIHdoZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQNCisgICAgICBpZiB0ZXN0ICJ4JGVuYWJs ZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9IHh5ZXM7IHRoZW4NCisJY29udGludWUNCisgICAgICBl bHNlDQorCWJyZWFrDQorICAgICAgZmkNCisgICAgICA7Ow0KKyAgICBub25lKSBicmVhayA7Ow0K KyAgICBlc2FjDQorICAgICMgV2UgY2hlY2sgd2l0aCBgLWMnIGFuZCBgLW8nIGZvciB0aGUgc2Fr ZSBvZiB0aGUgImRhc2htc3Rkb3V0Ig0KKyAgICAjIG1vZGUuICBJdCB0dXJucyBvdXQgdGhhdCB0 aGUgU3VuUHJvIEMrKyBjb21waWxlciBkb2VzIG5vdCBwcm9wZXJseQ0KKyAgICAjIGhhbmRsZSBg LU0gLW8nLCBhbmQgd2UgbmVlZCB0byBkZXRlY3QgdGhpcy4NCisgICAgaWYgZGVwbW9kZT0kZGVw bW9kZSBcDQorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9c3ViL2NvbmZ0ZXN0 LiR7T0JKRVhULW99IFwNCisgICAgICAgZGVwZmlsZT1zdWIvY29uZnRlc3QuUG8gdG1wZGVwZmls ZT1zdWIvY29uZnRlc3QuVFBvIFwNCisgICAgICAgJFNIRUxMIC4vZGVwY29tcCAkZGVwY2MgLWMg LW8gc3ViL2NvbmZ0ZXN0LiR7T0JKRVhULW99IHN1Yi9jb25mdGVzdC5jIFwNCisgICAgICAgICA+ L2Rldi9udWxsIDI+Y29uZnRlc3QuZXJyICYmDQorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3Q2Lmgg c3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYNCisgICAgICAgZ3JlcCBzdWIvY29u ZnRlc3QuJHtPQkpFWFQtb30gc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYNCisg ICAgICAgJHtNQUtFLW1ha2V9IC1zIC1mIGNvbmZtZiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQor ICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVz dCBpc3N1ZSB3YXJuaW5ncw0KKyAgICAgICMgb3IgcmVtYXJrcyAoZXZlbiB3aXRoIC1XZXJyb3Ip LiAgU28gd2UgZ3JlcCBzdGRlcnIgZm9yIGFueSBtZXNzYWdlDQorICAgICAgIyB0aGF0IHNheXMg YW4gb3B0aW9uIHdhcyBpZ25vcmVkIG9yIG5vdCBzdXBwb3J0ZWQuDQorICAgICAgIyBXaGVuIGdp dmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToNCisgICAgICAjICAgaWNj OiBDb21tYW5kIGxpbmUgd2FybmluZzogaWdub3Jpbmcgb3B0aW9uICctTSc7IG5vIGFyZ3VtZW50 IHJlcXVpcmVkDQorICAgICAgIyBUaGUgZGlhZ25vc2lzIGNoYW5nZWQgaW4gaWNjIDguMDoNCisg ICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBv cnRlZA0KKyAgICAgIGlmIChncmVwICdpZ25vcmluZyBvcHRpb24nIGNvbmZ0ZXN0LmVyciB8fA0K KyAgICAgICAgICBncmVwICdub3Qgc3VwcG9ydGVkJyBjb25mdGVzdC5lcnIpID4vZGV2L251bGwg Mj4mMTsgdGhlbiA6OyBlbHNlDQorICAgICAgICBhbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGls ZXJfdHlwZT0kZGVwbW9kZQ0KKyAgICAgICAgYnJlYWsNCisgICAgICBmaQ0KKyAgICBmaQ0KKyAg ZG9uZQ0KKw0KKyAgY2QgLi4NCisgIHJtIC1yZiBjb25mdGVzdC5kaXINCitlbHNlDQorICBhbV9j dl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lDQorZmkNCisNCitmaQ0KK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYW1fY3ZfQ0NfZGVw ZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUiID4mNQ0KKyRhc19lY2hvICIkYW1fY3ZfQ0NfZGVwZW5k ZW5jaWVzX2NvbXBpbGVyX3R5cGUiID4mNjsgfQ0KK0NDREVQTU9ERT1kZXBtb2RlPSRhbV9jdl9D Q19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZQ0KKw0KKw0KKw0KK2lmDQorICB0ZXN0ICJ4JGVu YWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm8gXA0KKyAgJiYgdGVzdCAiJGFtX2N2X0ND X2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlIiA9IGdjYzM7IHRoZW4NCisgIGFtX19mYXN0ZGVw Q0NfVFJVRT0NCisgIGFtX19mYXN0ZGVwQ0NfRkFMU0U9JyMnDQorZWxzZQ0KKyAgYW1fX2Zhc3Rk ZXBDQ19UUlVFPScjJw0KKyAgYW1fX2Zhc3RkZXBDQ19GQUxTRT0NCitmaQ0KKw0KKw0KK2lmIHRl c3QgLXogIiRDQyI7IHRoZW4NCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBz byBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KK3NldCBkdW1teSBjYzsgYWNf d29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQu Li4gIiA+JjY7IH0NCitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVu DQorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 Lg0KK2Vsc2UNCisgIGFjX3Byb2dfcmVqZWN0ZWQ9bm8NCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAt ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuDQorICAgICAgIGFjX3Byb2df cmVqZWN0ZWQ9eWVzDQorICAgICAgIGNvbnRpbnVlDQorICAgICBmaQ0KKyAgICBhY19jdl9wcm9n X0NDPSJjYyINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDINCisgIGZp DQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitpZiB0ZXN0ICRhY19wcm9n X3JlamVjdGVkID0geWVzOyB0aGVuDQorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgs IHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuDQorICBzZXQgZHVtbXkgJGFjX2N2X3Byb2df Q0MNCisgIHNoaWZ0DQorICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4NCisgICAgIyBXZSBjaG9zZSBh IGRpZmZlcmVudCBjb21waWxlciBmcm9tIHRoZSBib2d1cyBvbmUuDQorICAgICMgSG93ZXZlciwg aXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4NCisg ICAgIyBmaXJzdCBpZiB3ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVs bCBmaWxlIG5hbWUuDQorICAgIHNoaWZ0DQorICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFj X3dvcmQkezErJyAnfSRAIg0KKyAgZmkNCitmaQ0KK2ZpDQorZmkNCitDQz0kYWNfY3ZfcHJvZ19D Qw0KK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQ0KKyRhc19lY2hvICIkQ0MiID4mNjsgfQ0K K2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitmaQ0KKw0KKw0KKyAgdGVzdCAteiAi JENDIiAmJiBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBjYyBmb3VuZCBpbiBcJFBBVEgi ICIkTElORU5PIiA1DQorZmkNCisNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIEdOVSBDIiA+JjUNCiskYXNfZWNo b19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyBHTlUgQy4uLiAiID4mNjsgfQ0KK2lm ICR7YWNfY3ZfY19jb21waWxlcl9nbnUrOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAi KGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBjYXQgPiBjb25mdGVzdC5jIDw8RU9GDQorI2lmZGVm IF9fR05VQ19fDQorICB5ZXM7DQorI2VuZGlmDQorRU9GDQoraWYgeyBhY190cnk9JyR7Q0MtY2N9 IC1FIGNvbmZ0ZXN0LmMnDQorICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVu by0kTElORU5PfTogXCIkYWNfdHJ5XCIiOyB9ID4mNQ0KKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQ0K KyAgYWNfc3RhdHVzPSQ/DQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUNCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH0gfCBl Z3JlcCB5ZXMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBhY19jdl9jX2NvbXBpbGVyX2dudT15 ZXMNCitlbHNlDQorICBhY19jdl9jX2NvbXBpbGVyX2dudT1ubw0KK2ZpDQorZmkNCit7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29tcGls ZXJfZ251IiA+JjUNCiskYXNfZWNobyAiJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjY7IH0NCisN CitpZiB0ZXN0ICRhY19jdl9jX2NvbXBpbGVyX2dudSA9IHllczsgdGhlbg0KKyAgR0NDPXllcw0K KyAgYWNfdGVzdF9DRkxBR1M9IiR7Q0ZMQUdTK3NldH0iDQorICBhY19zYXZlX0NGTEFHUz0iJENG TEFHUyINCisgIENGTEFHUz0NCisgIGFjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0NCithY19z YXZlX0NGTEFHUz0kQ0ZMQUdTDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUNCiskYXNfZWNob19uICJj aGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9DQoraWYgJHthY19jdl9w cm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYN CitlbHNlDQorICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcNCisgICBh Y19jX3dlcnJvcl9mbGFnPXllcw0KKyAgIGFjX2N2X3Byb2dfY2NfZz1ubw0KKyAgIENGTEFHUz0i LWciDQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dA0KKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8NCisNCitpbnQNCittYWluICgpDQorew0KKw0KKyAgOw0KKyAg cmV0dXJuIDA7DQorfQ0KK19BQ0VPRg0KK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i OyB0aGVuIDoNCisgIGFjX2N2X3Byb2dfY2NfZz15ZXMNCitlbHNlDQorICBDRkxBR1M9IiINCisg ICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0DQorLyogZW5k IGNvbmZkZWZzLmguICAqLw0KKw0KK2ludA0KK21haW4gKCkNCit7DQorDQorICA7DQorICByZXR1 cm4gMDsNCit9DQorX0FDRU9GDQoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRo ZW4gOg0KKw0KK2Vsc2UNCisgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxh Zw0KKwkgQ0ZMQUdTPSItZyINCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQNCisvKiBlbmQgY29uZmRlZnMuaC4gICovDQorDQoraW50DQorbWFpbiAoKQ0KK3sN CisNCisgIDsNCisgIHJldHVybiAwOw0KK30NCitfQUNFT0YNCitpZiBhY19mbl9jX3RyeV9jb21w aWxlICIkTElORU5PIjsgdGhlbiA6DQorICBhY19jdl9wcm9nX2NjX2c9eWVzDQorZmkNCitybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQN CitmaQ0KK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuJGFjX2V4dA0KK2ZpDQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0DQorICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dl cnJvcl9mbGFnDQorZmkNCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1DQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2Nj X2ciID4mNjsgfQ0KK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgPSBzZXQ7IHRoZW4NCisgIENG TEFHUz0kYWNfc2F2ZV9DRkxBR1MNCitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsg dGhlbg0KKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIi DQorICBlbHNlDQorICAgIENGTEFHUz0iLWciDQorICBmaQ0KK2Vsc2UNCisgIGlmIHRlc3QgIiRH Q0MiID0geWVzOyB0aGVuDQorICAgIENGTEFHUz0iLU8yIg0KKyAgZWxzZQ0KKyAgICBDRkxBR1M9 DQorICBmaQ0KK2ZpDQorICBpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuDQor ICAgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIg0KKyAgZWxpZiB0ZXN0ICRhY19jdl9wcm9nX2Nj X2cgPSB5ZXM7IHRoZW4NCisgICAgQ0ZMQUdTPSItZyAtTzIiDQorICBlbHNlDQorICAgIENGTEFH Uz0iLU8yIg0KKyAgZmkNCitlbHNlDQorICBHQ0M9DQorICB0ZXN0ICIke0NGTEFHUytzZXR9IiA9 IHNldCB8fCBDRkxBR1M9Ii1nIg0KK2ZpDQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4 IjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4 fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkg JHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiskYXNfZWNob19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0NCitpZiAke2FjX2N2X3Byb2dfQVIr On0gZmFsc2U7IHRoZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQor ICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuDQorICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAt ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19BUj0iJHthY190 b29sX3ByZWZpeH1hciINCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1DQorICAgIGJyZWFrIDIN CisgIGZpDQorZG9uZQ0KKyAgZG9uZQ0KK0lGUz0kYXNfc2F2ZV9JRlMNCisNCitmaQ0KK2ZpDQor QVI9JGFjX2N2X3Byb2dfQVINCitpZiB0ZXN0IC1uICIkQVIiOyB0aGVuDQorICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFSIiA+JjUNCiskYXNfZWNo byAiJEFSIiA+JjY7IH0NCitlbHNlDQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQ0KKyRhc19lY2hvICJubyIgPiY2OyB9DQorZmkNCisN CisNCitmaQ0KK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbg0KKyAgYWNfY3RfQVI9 JEFSDQorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEg cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCitzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDINCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29y ZCIgPiY1DQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQor aWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24g IihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbg0K KyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlk ZSB0aGUgdGVzdC4NCitlbHNlDQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRP Ug0KK2ZvciBhc19kaXIgaW4gJFBBVEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4NCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvDQorICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB9OyB0aGVuDQorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIg0KKyAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQor SUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19j dF9BUg0KK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQ0KKyRhc19lY2hv ICIkYWNfY3RfQVIiID4mNjsgfQ0KK2Vsc2UNCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1DQorJGFzX2VjaG8gIm5vIiA+JjY7IH0NCitm aQ0KKw0KKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuDQorICAgIEFSPSIiDQorICBl bHNlDQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4NCit5ZXM6 KQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNp bmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUNCiskYXNf ZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0 aCBob3N0IHRyaXBsZXQiID4mMjt9DQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7DQorZXNhYw0KKyAg ICBBUj0kYWNfY3RfQVINCisgIGZpDQorZWxzZQ0KKyAgQVI9IiRhY19jdl9wcm9nX0FSIg0KK2Zp DQorDQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KKyAgIyBFeHRyYWN0IHRo ZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBh IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFu bGliOyBhY193b3JkPSQyDQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAk YWNfd29yZC4uLiAiID4mNjsgfQ0KK2lmICR7YWNfY3ZfcHJvZ19SQU5MSUIrOn0gZmFsc2U7IHRo ZW4gOg0KKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYNCitlbHNlDQorICBpZiB0ZXN0IC1u ICIkUkFOTElCIjsgdGhlbg0KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRo ZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lg0KK2Vsc2UNCithc19zYXZlX0lGUz0kSUZTOyBJRlM9 JFBBVEhfU0VQQVJBVE9SDQorZm9yIGFzX2RpciBpbiAkUEFUSA0KK2RvDQorICBJRlM9JGFzX3Nh dmVfSUZTDQorICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lg0KKyAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisgIGlmIHsgdGVzdCAt ZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4NCisgICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiR7 YWNfdG9vbF9wcmVmaXh9cmFubGliIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAg YnJlYWsgMg0KKyAgZmkNCitkb25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2Zp DQorZmkNCitSQU5MSUI9JGFjX2N2X3Byb2dfUkFOTElCDQoraWYgdGVzdCAtbiAiJFJBTkxJQiI7 IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJFJBTkxJQiIgPiY2OyB9DQorZWxzZQ0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUNCisk YXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorDQorZmkNCitpZiB0ZXN0IC16ICIkYWNfY3Zf cHJvZ19SQU5MSUIiOyB0aGVuDQorICBhY19jdF9SQU5MSUI9JFJBTkxJQg0KKyAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUg d2l0aCBhcmdzLg0KK3NldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDINCit7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQor JGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9DQoraWYgJHthY19j dl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6DQorICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNg0KK2Vsc2UNCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuDQor ICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0iJGFjX2N0X1JBTkxJQiIgIyBMZXQgdGhlIHVzZXIg b3ZlcnJpZGUgdGhlIHRlc3QuDQorZWxzZQ0KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9T RVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2ZV9JRlMN CisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbw0KKyAgaWYgeyB0ZXN0IC1mICIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKyAgICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFu bGliIg0KKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUNCisgICAgYnJlYWsgMg0KKyAgZmkNCitk b25lDQorICBkb25lDQorSUZTPSRhc19zYXZlX0lGUw0KKw0KK2ZpDQorZmkNCithY19jdF9SQU5M SUI9JGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCDQoraWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7 IHRoZW4NCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3RfUkFOTElCIiA+JjUNCiskYXNfZWNobyAiJGFjX2N0X1JBTkxJQiIgPiY2OyB9DQor ZWxzZQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 IG5vIiA+JjUNCiskYXNfZWNobyAibm8iID4mNjsgfQ0KK2ZpDQorDQorICBpZiB0ZXN0ICJ4JGFj X2N0X1JBTkxJQiIgPSB4OyB0aGVuDQorICAgIFJBTkxJQj0iIg0KKyAgZWxzZQ0KKyAgICBjYXNl ICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluDQoreWVzOikNCit7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xz IG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0 IiA+JjI7fQ0KK2FjX3Rvb2xfd2FybmVkPXllcyA7Ow0KK2VzYWMNCisgICAgUkFOTElCPSRhY19j dF9SQU5MSUINCisgIGZpDQorZWxzZQ0KKyAgUkFOTElCPSIkYWNfY3ZfcHJvZ19SQU5MSUIiDQor ZmkNCisNCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJv Z3JhbSAoZmFzdGVyKSwNCisjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAg QnV0IGF2b2lkIHRoZSBicm9rZW4gb3INCisjIGluY29tcGF0aWJsZSB2ZXJzaW9uczoNCisjIFN5 c1YgL2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbA0KKyMgU3VuT1MgL3Vzci9ldGMvaW5z dGFsbA0KKyMgSVJJWCAvc2Jpbi9pbnN0YWxsDQorIyBBSVggL2Jpbi9pbnN0YWxsDQorIyBBbWln YU9TIC9DL2luc3RhbGwsIHdoaWNoIGluc3RhbGxzIGJvb3RibG9ja3Mgb24gZmxvcHB5IGRpc2Nz DQorIyBBSVggNCAvdXNyL2Jpbi9pbnN0YWxsYnNkLCB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aG91 dCBhIC1nIGZsYWcNCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5k bGVzIG5vbmV4aXN0ZW50IGFyZ3MNCisjIFNWUjQgL3Vzci91Y2IvaW5zdGFsbCwgd2hpY2ggdHJp ZXMgdG8gdXNlIHRoZSBub25leGlzdGVudCBncm91cCAic3RhZmYiDQorIyBPUy8yJ3Mgc3lzdGVt IGluc3RhbGwsIHdoaWNoIGhhcyBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IHNlbWFudGljDQorIyAu L2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAu L2luc3RhbGwuc2guDQorIyBSZWplY3QgaW5zdGFsbCBwcm9ncmFtcyB0aGF0IGNhbm5vdCBpbnN0 YWxsIG11bHRpcGxlIGZpbGVzLg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1DQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQ0K K2lmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbg0KK2lmICR7YWNfY3ZfcGF0aF9pbnN0YWxsKzp9 IGZhbHNlOyB0aGVuIDoNCisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2DQorZWxzZQ0KKyAg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUg0KK2ZvciBhc19kaXIgaW4gJFBB VEgNCitkbw0KKyAgSUZTPSRhc19zYXZlX0lGUw0KKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNf ZGlyPS4NCisgICAgIyBBY2NvdW50IGZvciBwZW9wbGUgd2hvIHB1dCB0cmFpbGluZyBzbGFzaGVz IGluIFBBVEggZWxlbWVudHMuDQorY2FzZSAkYXNfZGlyLyBpbiAjKCgNCisgIC4vIHwgLi8vIHwg L1tjQ10vKiB8IFwNCisgIC9ldGMvKiB8IC91c3Ivc2Jpbi8qIHwgL3Vzci9ldGMvKiB8IC9zYmlu LyogfCAvdXNyL2Fmc3dzL2Jpbi8qIHwgXA0KKyAgPzpbXFwvXW9zMltcXC9daW5zdGFsbFtcXC9d KiB8ID86W1xcL11PUzJbXFwvXUlOU1RBTExbXFwvXSogfCBcDQorICAvdXNyL3VjYi8qICkgOzsN CisgICopDQorICAgICMgT1NGMSBhbmQgU0NPIE9EVCAzLjAgaGF2ZSB0aGVpciBvd24gbmFtZXMg Zm9yIGluc3RhbGwuDQorICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2Ug aXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdA0KKyAgICAjIGJ5IGRlZmF1bHQuDQorICAgIGZvciBh Y19wcm9nIGluIGdpbnN0YWxsIHNjb2luc3QgaW5zdGFsbDsgZG8NCisgICAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8NCisJaWYgeyB0ZXN0IC1m ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRh Y19wcm9nJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbg0KKwkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0 YWxsICYmDQorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIg Pi9kZXYvbnVsbCAyPiYxOyB0aGVuDQorCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGlu Y29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uDQorCSAgICA6DQorCSAgZWxpZiB0ZXN0ICRh Y19wcm9nID0gaW5zdGFsbCAmJg0KKwkgICAgZ3JlcCBwd3BsdXMgIiRhc19kaXIvJGFjX3Byb2ck YWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKwkgICAgIyBwcm9ncmFtLXNwZWNp ZmljIGluc3RhbGwgc2NyaXB0IHVzZWQgYnkgSFAgcHdwbHVzLS1kb24ndCB1c2UuDQorCSAgICA6 DQorCSAgZWxzZQ0KKwkgICAgcm0gLXJmIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gY29uZnRl c3QuZGlyDQorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQ0KKwkgICAgZWNobyB0d28gPiBj b25mdGVzdC50d28NCisJICAgIG1rZGlyIGNvbmZ0ZXN0LmRpcg0KKwkgICAgaWYgIiRhc19kaXIv JGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gImBwd2Rg L2NvbmZ0ZXN0LmRpciIgJiYNCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5vbmUgJiYgdGVzdCAt cyBjb25mdGVzdC50d28gJiYNCisJICAgICAgdGVzdCAtcyBjb25mdGVzdC5kaXIvY29uZnRlc3Qu b25lICYmDQorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bw0KKwkgICAg dGhlbg0KKwkgICAgICBhY19jdl9wYXRoX2luc3RhbGw9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhl Y19leHQgLWMiDQorCSAgICAgIGJyZWFrIDMNCisJICAgIGZpDQorCSAgZmkNCisJZmkNCisgICAg ICBkb25lDQorICAgIGRvbmUNCisgICAgOzsNCitlc2FjDQorDQorICBkb25lDQorSUZTPSRhc19z YXZlX0lGUw0KKw0KK3JtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRp cg0KKw0KK2ZpDQorICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsg dGhlbg0KKyAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwNCisgIGVsc2UNCisgICAgIyBB cyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUg YQ0KKyAgICAjIHZhbHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJlY3RvcnksIGJl Y2F1c2UgdGhhdCB3aWxsDQorICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNh Y2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzDQorICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVl IGlzIGEgcmVsYXRpdmUgbmFtZS4NCisgICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9zaA0KKyAgZmkN CitmaQ0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk SU5TVEFMTCIgPiY1DQorJGFzX2VjaG8gIiRJTlNUQUxMIiA+JjY7IH0NCisNCisjIFVzZSB0ZXN0 IC16IGJlY2F1c2UgU3VuT1M0IHNoIG1pc2hhbmRsZXMgYnJhY2VzIGluICR7dmFyLXZhbH0uDQor IyBJdCB0aGlua3MgdGhlIGZpcnN0IGNsb3NlIGJyYWNlIGVuZHMgdGhlIHZhcmlhYmxlIHN1YnN0 aXR1dGlvbi4NCit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09 JyR7SU5TVEFMTH0nDQorDQordGVzdCAteiAiJElOU1RBTExfU0NSSVBUIiAmJiBJTlNUQUxMX1ND UklQVD0nJHtJTlNUQUxMfScNCisNCit0ZXN0IC16ICIkSU5TVEFMTF9EQVRBIiAmJiBJTlNUQUxM X0RBVEE9JyR7SU5TVEFMTH0gLW0gNjQ0Jw0KKw0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBP dXRwdXQNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK2lmIHRlc3QgIiRzcmNkaXIiID0gIi4iIDsg dGhlbg0KKyAgaWYgdGVzdCAiJHt3aXRoX3RhcmdldF9zdWJkaXJ9IiAhPSAiLiIgOyB0aGVuDQor ICAgIGxpYmdsb3NzX3RvcGRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLi8u LiINCisgIGVsc2UNCisgICAgbGliZ2xvc3NfdG9wZGlyPSIke3NyY2Rpcn0vJHt3aXRoX211bHRp c3JjdG9wfS4uLy4uIg0KKyAgZmkNCitlbHNlDQorICBsaWJnbG9zc190b3BkaXI9IiR7c3JjZGly fS8uLi8uLiINCitmaQ0KK2FjX2F1eF9kaXI9DQorZm9yIGFjX2RpciBpbiAkbGliZ2xvc3NfdG9w ZGlyICIkc3JjZGlyIi8kbGliZ2xvc3NfdG9wZGlyOyBkbw0KKyAgaWYgdGVzdCAtZiAiJGFjX2Rp ci9pbnN0YWxsLXNoIjsgdGhlbg0KKyAgICBhY19hdXhfZGlyPSRhY19kaXINCisgICAgYWNfaW5z dGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyINCisgICAgYnJlYWsNCisgIGVsaWYg dGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbg0KKyAgICBhY19hdXhfZGlyPSRhY19k aXINCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyINCisgICAg YnJlYWsNCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuDQorICAgIGFjX2F1 eF9kaXI9JGFjX2Rpcg0KKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5z dGFsbCAtYyINCisgICAgYnJlYWsNCisgIGZpDQorZG9uZQ0KK2lmIHRlc3QgLXogIiRhY19hdXhf ZGlyIjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGlu c3RhbGwuc2gsIG9yIHNodG9vbCBpbiAkbGliZ2xvc3NfdG9wZGlyIFwiJHNyY2RpclwiLyRsaWJn bG9zc190b3BkaXIiICIkTElORU5PIiA1DQorZmkNCisNCisjIFRoZXNlIHRocmVlIHZhcmlhYmxl cyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwNCisjIGFuZCBhcmUgaW50ZW5kZWQg dG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuDQorIyBUaGV5IGNh biBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGlu IGEgZGlyZWN0b3J5DQorIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0 ZXJzLg0KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIg ICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4NCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFj X2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4NCithY19j b25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1 c2UgdGhpcyB2YXIuDQorDQorDQorYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1h a2VmaWxlIg0KKw0KK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRg0KKyMgVGhpcyBmaWxlIGlzIGEg c2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQ0KKyMgdGVz dHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZp Z3VyZQ0KKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRp b24gLS1jb25maWctY2FjaGUuDQorIyBJdCBpcyBub3QgdXNlZnVsIG9uIG90aGVyIHN5c3RlbXMu ICBJZiBpdCBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndA0KKyMgd2FudCB0byBrZWVwLCB5b3Ug bWF5IHJlbW92ZSBvciBlZGl0IGl0Lg0KKyMNCisjIGNvbmZpZy5zdGF0dXMgb25seSBwYXlzIGF0 dGVudGlvbiB0byB0aGUgY2FjaGUgZmlsZSBpZiB5b3UgZ2l2ZSBpdA0KKyMgdGhlIC0tcmVjaGVj ayBvcHRpb24gdG8gcmVydW4gY29uZmlndXJlLg0KKyMNCisjIGBhY19jdl9lbnZfZm9vJyB2YXJp YWJsZXMgKHNldCBvciB1bnNldCkgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4NCisjIGxvYWRpbmcg dGhpcyBmaWxlLCBvdGhlciAqdW5zZXQqIGBhY19jdl9mb28nIHdpbGwgYmUgYXNzaWduZWQgdGhl DQorIyBmb2xsb3dpbmcgdmFsdWVzLg0KKw0KK19BQ0VPRg0KKw0KKyMgVGhlIGZvbGxvd2luZyB3 YXkgb2Ygd3JpdGluZyB0aGUgY2FjaGUgbWlzaGFuZGxlcyBuZXdsaW5lcyBpbiB2YWx1ZXMsDQor IyBidXQgd2Uga25vdyBvZiBubyB3b3JrYXJvdW5kIHRoYXQgaXMgc2ltcGxlLCBwb3J0YWJsZSwg YW5kIGVmZmljaWVudC4NCisjIFNvLCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xp bmVzLg0KKyMgVWx0cml4IHNoIHNldCB3cml0ZXMgdG8gc3RkZXJyIGFuZCBjYW4ndCBiZSByZWRp cmVjdGVkIGRpcmVjdGx5LA0KKyMgYW5kIHNldHMgdGhlIGhpZ2ggYml0IGluIHRoZSBjYWNoZSBm aWxlIHVubGVzcyB3ZSBhc3NpZ24gdG8gdGhlIHZhcnMuDQorKA0KKyAgZm9yIGFjX3ZhciBpbiBg KHNldCkgMj4mMSB8IHNlZCAtbiAncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEv cCdgOyBkbw0KKyAgICBldmFsIGFjX3ZhbD1cJCRhY192YXINCisgICAgY2FzZSAkYWNfdmFsIGlu ICMoDQorICAgICoke2FzX25sfSopDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQorICAgICAg Kl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUNCiskYXNfZWNo byAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3 bGluZSIgPiYyO30gOzsNCisgICAgICBlc2FjDQorICAgICAgY2FzZSAkYWNfdmFyIGluICMoDQor ICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKA0KKyAgICAgIEJBU0hfQVJHViB8IEJBU0hfU09V UkNFKSBldmFsICRhY192YXI9IDs7ICMoDQorICAgICAgKikgeyBldmFsICRhY192YXI9OyB1bnNl dCAkYWNfdmFyO30gOzsNCisgICAgICBlc2FjIDs7DQorICAgIGVzYWMNCisgIGRvbmUNCisNCisg IChzZXQpIDI+JjEgfA0KKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBzZXQpIDI+JjFg IGluICMoDQorICAgICoke2FzX25sfWFjX3NwYWNlPVwgKikNCisgICAgICAjIGBzZXQnIGRvZXMg bm90IHF1b3RlIGNvcnJlY3RseSwgc28gYWRkIHF1b3RlczogZG91YmxlLXF1b3RlDQorICAgICAg IyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8g XC4NCisgICAgICBzZWQgLW4gXA0KKwkicy8nLydcXFxcJycvZzsNCisJICBzL15cXChbXyRhc19j cl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiDQor ICAgICAgOzsgIygNCisgICAgKikNCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMg cmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLg0KKyAgICAgIHNlZCAtbiAi L15bXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiDQorICAgICAgOzsNCisg ICAgZXNhYyB8DQorICAgIHNvcnQNCispIHwNCisgIHNlZCAnDQorICAgICAvXmFjX2N2X2Vudl8v YiBlbmQNCisgICAgIHQgY2xlYXINCisgICAgIDpjbGVhcg0KKyAgICAgcy9eXChbXj1dKlwpPVwo Lipbe31dLipcKSQvdGVzdCAiJHtcMStzZXR9IiA9IHNldCB8fCAmLw0KKyAgICAgdCBlbmQNCisg ICAgIHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9Lw0KKyAgICAgOmVuZCcgPj5jb25m Y2FjaGUNCitpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2L251bGwgMj4mMTsg dGhlbiA6OyBlbHNlDQorICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4NCisgICAgaWYg dGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7IHRoZW4NCisgICAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hlICRjYWNoZV9m aWxlIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIg PiY2O30NCisgICAgICBpZiB0ZXN0ICEgLWYgIiRjYWNoZV9maWxlIiB8fCB0ZXN0IC1oICIkY2Fj aGVfZmlsZSI7IHRoZW4NCisJY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIg0KKyAgICAgIGVs c2UNCisgICAgICAgIGNhc2UgJGNhY2hlX2ZpbGUgaW4gIygNCisgICAgICAgICovKiB8ID86KikN CisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiQkICYmDQorCSAgbXYgLWYgIiRjYWNo ZV9maWxlIiQkICIkY2FjaGVfZmlsZSIgOzsgIygNCisgICAgICAgICopDQorCSAgbXYgLWYgY29u ZmNhY2hlICIkY2FjaGVfZmlsZSIgOzsNCisJZXNhYw0KKyAgICAgIGZpDQorICAgIGZpDQorICBl bHNlDQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbm90IHVw ZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQ0KKyRhc19lY2hvICIkYXNf bWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQ0KKyAg ZmkNCitmaQ0KK3JtIC1mIGNvbmZjYWNoZQ0KKw0KK3Rlc3QgIngkcHJlZml4IiA9IHhOT05FICYm IHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgNCisjIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZp eC4NCit0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZp eH0nDQorDQorIyBUcmFuc2Zvcm0gY29uZmRlZnMuaCBpbnRvIERFRlMuDQorIyBQcm90ZWN0IGFn YWluc3Qgc2hlbGwgZXhwYW5zaW9uIHdoaWxlIGV4ZWN1dGluZyBNYWtlZmlsZSBydWxlcy4NCisj IFByb3RlY3QgYWdhaW5zdCBNYWtlZmlsZSBtYWNybyBleHBhbnNpb24uDQorIw0KKyMgSWYgdGhl IGZpcnN0IHNlZCBzdWJzdGl0dXRpb24gaXMgZXhlY3V0ZWQgKHdoaWNoIGxvb2tzIGZvciBtYWNy b3MgdGhhdA0KKyMgdGFrZSBhcmd1bWVudHMpLCB0aGVuIGJyYW5jaCB0byB0aGUgcXVvdGUgc2Vj dGlvbi4gIE90aGVyd2lzZSwNCisjIGxvb2sgZm9yIGEgbWFjcm8gdGhhdCBkb2Vzbid0IHRha2Ug YXJndW1lbnRzLg0KK2FjX3NjcmlwdD0nDQorOm1saW5lDQorL1xcJC97DQorIE4NCisgcyxcXFxu LCwNCisgYiBtbGluZQ0KK30NCit0IGNsZWFyDQorOmNsZWFyDQorcy9eWwkgXSojWwkgXSpkZWZp bmVbCSBdWwkgXSpcKFteCSAoXVteCSAoXSooW14pXSopXClbCSBdKlwoLipcKS8tRFwxPVwyL2cN Cit0IHF1b3RlDQorcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSpcKFteCSBdW14JIF0qXClb CSBdKlwoLipcKS8tRFwxPVwyL2cNCit0IHF1b3RlDQorYiBhbnkNCis6cXVvdGUNCitzL1sJIGB+ IyReJiooKXt9XFx8OydcJyciPD4/XS9cXCYvZw0KK3MvXFsvXFwmL2cNCitzL1xdL1xcJi9nDQor cy9cJC8kJC9nDQorSA0KKzphbnkNCiskew0KKwlnDQorCXMvXlxuLy8NCisJcy9cbi8gL2cNCisJ cA0KK30NCisnDQorREVGUz1gc2VkIC1uICIkYWNfc2NyaXB0IiBjb25mZGVmcy5oYA0KKw0KKw0K K2FjX2xpYm9ianM9DQorYWNfbHRsaWJvYmpzPQ0KK1U9DQorZm9yIGFjX2kgaW4gOiAkTElCT0JK UzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlDQorICAjIDEuIFJlbW92ZSB0aGUg ZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0YWxsZWQuDQorICBhY19zY3JpcHQ9J3Mv XCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycNCisgIGFjX2k9YCRhc19lY2hvICIkYWNfaSIg fCBzZWQgIiRhY19zY3JpcHQiYA0KKyAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4gIFdoZW4gdXNl ZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUg0KKyAgIyAgICB3aWxsIGJlIHNldCB0byB0 aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuDQorICBhc19mbl9h cHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0Ig0KKyAg YXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSInJFUubG8nDQor ZG9uZQ0KK0xJQk9CSlM9JGFjX2xpYm9ianMNCisNCitMVExJQk9CSlM9JGFjX2x0bGlib2Jqcw0K Kw0KKw0KK2lmIHRlc3QgLXogIiR7QU1ERVBfVFJVRX0iICYmIHRlc3QgLXogIiR7QU1ERVBfRkFM U0V9IjsgdGhlbg0KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQU1ERVBcIiB3YXMg bmV2ZXIgZGVmaW5lZC4NCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGlu dm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1DQorZmkNCitpZiB0ZXN0IC16ICIke2Ft X19mYXN0ZGVwQ0NfVFJVRX0iICYmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19GQUxTRX0iOyB0 aGVuDQorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2Fz IG5ldmVyIGRlZmluZWQuDQorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBp bnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQ0KK2ZpDQorDQorOiAiJHtDT05GSUdf U1RBVFVTPS4vY29uZmlnLnN0YXR1c30iDQorYWNfd3JpdGVfZmFpbD0wDQorYWNfY2xlYW5fZmls ZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMNCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVz ICRDT05GSUdfU1RBVFVTIg0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0 aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQ0KK2FzX3dyaXRlX2ZhaWw9MA0KK2NhdCA+JENPTkZJ R19TVEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xDQorIyEgJFNIRUxMDQorIyBHZW5l cmF0ZWQgYnkgJGFzX21lLg0KKyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVu dCBjb25maWd1cmF0aW9uLg0KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3Vy ZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcNCisjIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBp ZiBpdCBleGlzdHMuDQorDQorZGVidWc9ZmFsc2UNCithY19jc19yZWNoZWNrPWZhbHNlDQorYWNf Y3Nfc2lsZW50PWZhbHNlDQorDQorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0NCitleHBv cnQgU0hFTEwNCitfQVNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNf d3JpdGVfZmFpbD0xDQorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNNHNoIEluaXRp YWxpemF0aW9uLiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjDQorDQorIyBCZSBtb3Jl IEJvdXJuZSBjb21wYXRpYmxlDQorRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1L UyBzaA0KK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4v ZGV2L251bGwgMj4mMTsgdGhlbiA6DQorICBlbXVsYXRlIHNoDQorICBOVUxMQ01EPToNCisgICMg UHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3 aGljaA0KKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVy ZS4NCisgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJw0KKyAgc2V0b3B0IE5PX0dMT0JfU1VC U1QNCitlbHNlDQorICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygNCisgICpwb3Np eCopIDoNCisgICAgc2V0IC1vIHBvc2l4IDs7ICMoDQorICAqKSA6DQorICAgICA7Ow0KK2VzYWMN CitmaQ0KKw0KKw0KK2FzX25sPScNCisnDQorZXhwb3J0IGFzX25sDQorIyBQcmludGluZyBhIGxv bmcgc3RyaW5nIGNyYXNoZXMgU29sYXJpcyA3IC91c3IvYmluL3ByaW50Zi4NCithc19lY2hvPSdc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxc XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJw0KK2FzX2VjaG89 JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobw0KK2FzX2VjaG89JGFzX2Vj aG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvDQorIyBQcmVmZXIgYSBr c2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNvbGFy aXMsDQorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4NCitpZiB0 ZXN0IC16ICIkQkFTSF9WRVJTSU9OJFpTSF9WRVJTSU9OIiBcDQorICAgICYmICh0ZXN0ICJYYHBy aW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4NCisg IGFzX2VjaG89J3ByaW50IC1yIC0tJw0KKyAgYXNfZWNob19uPSdwcmludCAtcm4gLS0nDQorZWxp ZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nDQorICBhc19lY2hvX249J3ByaW50ZiAl cycNCitlbHNlDQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAy Pi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4NCisgICAgYXNfZWNob19ib2R5PSdl dmFsIC91c3IvdWNiL2VjaG8gLW4gIiQxJGFzX25sIicNCisgICAgYXNfZWNob19uPScvdXNyL3Vj Yi9lY2hvIC1uJw0KKyAgZWxzZQ0KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgZXhwciAiWCQxIiA6 ICJYXFwoLipcXCkiJw0KKyAgICBhc19lY2hvX25fYm9keT0nZXZhbA0KKyAgICAgIGFyZz0kMTsN CisgICAgICBjYXNlICRhcmcgaW4gIygNCisgICAgICAqIiRhc19ubCIqKQ0KKwlleHByICJYJGFy ZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsNCisJYXJnPWBleHByICJYJGFyZyIgOiAiLiokYXNfbmxc XCguKlxcKSJgOzsNCisgICAgICBlc2FjOw0KKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipc XCkiIHwgdHIgLWQgIiRhc19ubCINCisgICAgJw0KKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkN CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycNCisgIGZpDQor ICBleHBvcnQgYXNfZWNob19ib2R5DQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFz X2VjaG8nDQorZmkNCisNCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4NCitpZiB0ZXN0ICIk e1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbg0KKyAgUEFUSF9TRVBBUkFUT1I9Og0K KyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+ JjEgJiYgew0KKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4v ZGV2L251bGwgMj4mMSB8fA0KKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7Jw0KKyAgfQ0KK2ZpDQor DQorDQorIyBJRlMNCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNp c2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcw0KKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3Jz IGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLg0KKyMgKElmIF9BU19QQVRIX1dBTEsg d2VyZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGRpc2FibGUgd29yZA0KKyMgc3Bs aXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikNCitJRlM9IiAiIgkkYXNfbmwi DQorDQorIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4g bm8gZGlyZWN0b3J5IHNlcGFyYXRvci4NCithc19teXNlbGY9DQorY2FzZSAkMCBpbiAjKCgNCisg ICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsNCisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0k UEFUSF9TRVBBUkFUT1INCitmb3IgYXNfZGlyIGluICRQQVRIDQorZG8NCisgIElGUz0kYXNfc2F2 ZV9JRlMNCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uDQorICAgIHRlc3QgLXIgIiRh c19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrDQorICBkb25lDQorSUZT PSRhc19zYXZlX0lGUw0KKw0KKyAgICAgOzsNCitlc2FjDQorIyBXZSBkaWQgbm90IGZpbmQgb3Vy c2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJw0KKyMgaW4g d2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLg0KK2lmIHRlc3Qg IngkYXNfbXlzZWxmIiA9IHg7IHRoZW4NCisgIGFzX215c2VsZj0kMA0KK2ZpDQoraWYgdGVzdCAh IC1mICIkYXNfbXlzZWxmIjsgdGhlbg0KKyAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBj YW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIN CisgIGV4aXQgMQ0KK2ZpDQorDQorIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVl ZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbg0KKyMgcHJlLTMuMCBVV0lOIGtzaCkuICBC dXQgZG8gbm90IGNhdXNlIGJ1Z3MgaW4gYmFzaCAyLjAxOyB0aGUgInx8IGV4aXQgMSINCisjIHN1 cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNv dWxkDQorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4NCitmb3IgYXNfdmFyIGluIEJB U0hfRU5WIEVOViBNQUlMIE1BSUxQQVRIDQorZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0g PSB4c2V0IFwNCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAy PiYxICYmIHVuc2V0ICRhc192YXIgfHwgOg0KK2RvbmUNCitQUzE9JyQgJw0KK1BTMj0nPiAnDQor UFM0PScrICcNCisNCisjIE5MUyBudWlzYW5jZXMuDQorTENfQUxMPUMNCitleHBvcnQgTENfQUxM DQorTEFOR1VBR0U9Qw0KK2V4cG9ydCBMQU5HVUFHRQ0KKw0KKyMgQ0RQQVRILg0KKyh1bnNldCBD RFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgNCisNCisNCisjIGFzX2ZuX2Vy cm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExPR19GRF0NCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVS Uk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQ0KKyMgcHJvdmlkZWQsIGFs c28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBl eGl0IHRoZQ0KKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuDQor YXNfZm5fZXJyb3IgKCkNCit7DQorICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEg MCAmJiBhc19zdGF0dXM9MQ0KKyAgaWYgdGVzdCAiJDQiOyB0aGVuDQorICAgIGFzX2xpbmVubz0k e2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5l bm9fc3RhY2sNCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJy b3I6ICQyIiA+JiQ0DQorICBmaQ0KKyAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIN CisgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cw0KK30gIyBhc19mbl9lcnJvcg0KKw0KKw0KKyMgYXNf Zm5fc2V0X3N0YXR1cyBTVEFUVVMNCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBTZXQg JD8gdG8gU1RBVFVTLCB3aXRob3V0IGZvcmtpbmcuDQorYXNfZm5fc2V0X3N0YXR1cyAoKQ0KK3sN CisgIHJldHVybiAkMQ0KK30gIyBhc19mbl9zZXRfc3RhdHVzDQorDQorIyBhc19mbl9leGl0IFNU QVRVUw0KKyMgLS0tLS0tLS0tLS0tLS0tLS0NCisjIEV4aXQgdGhlIHNoZWxsIHdpdGggU1RBVFVT LCBldmVuIGluIGEgInRyYXAgMCIgb3IgInNldCAtZSIgY29udGV4dC4NCithc19mbl9leGl0ICgp DQorew0KKyAgc2V0ICtlDQorICBhc19mbl9zZXRfc3RhdHVzICQxDQorICBleGl0ICQxDQorfSAj IGFzX2ZuX2V4aXQNCisNCisjIGFzX2ZuX3Vuc2V0IFZBUg0KKyMgLS0tLS0tLS0tLS0tLS0tDQor IyBQb3J0YWJseSB1bnNldCBWQVIuDQorYXNfZm5fdW5zZXQgKCkNCit7DQorICB7IGV2YWwgJDE9 OyB1bnNldCAkMTt9DQorfQ0KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0DQorIyBhc19mbl9hcHBlbmQg VkFSIFZBTFVFDQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBBcHBlbmQgdGhlIHRleHQg aW4gVkFMVUUgdG8gdGhlIGVuZCBvZiB0aGUgZGVmaW5pdGlvbiBjb250YWluZWQgaW4gVkFSLiBU YWtlDQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBh bW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyDQorIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFk IG9mIHRoZSB0eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQ0KKyMgaW1w bGVtZW50YXRpb25zLg0KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFz X3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoNCisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAo KQ0KKyAgew0KKyAgICBldmFsICQxKz1cJDINCisgIH0nDQorZWxzZQ0KKyAgYXNfZm5fYXBwZW5k ICgpDQorICB7DQorICAgIGV2YWwgJDE9XCQkMVwkMg0KKyAgfQ0KK2ZpICMgYXNfZm5fYXBwZW5k DQorDQorIyBhc19mbl9hcml0aCBBUkcuLi4NCisjIC0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgUGVy Zm9ybSBhcml0aG1ldGljIGV2YWx1YXRpb24gb24gdGhlIEFSR3MsIGFuZCBzdG9yZSB0aGUgcmVz dWx0IGluIHRoZQ0KKyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0 aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cw0KKyMgbXVzdCBiZSBwb3J0YWJsZSBh Y3Jvc3MgJCgoKSkgYW5kIGV4cHIuDQoraWYgKGV2YWwgInRlc3QgXCQoKCAxICsgMSApKSA9IDIi KSAyPi9kZXYvbnVsbDsgdGhlbiA6DQorICBldmFsICdhc19mbl9hcml0aCAoKQ0KKyAgew0KKyAg ICBhc192YWw9JCgoICQqICkpDQorICB9Jw0KK2Vsc2UNCisgIGFzX2ZuX2FyaXRoICgpDQorICB7 DQorICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFgDQorICB9DQorZmkgIyBh c19mbl9hcml0aA0KKw0KKw0KK2lmIGV4cHIgYSA6ICdcKGFcKScgPi9kZXYvbnVsbCAyPiYxICYm DQorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4NCisg IGFzX2V4cHI9ZXhwcg0KK2Vsc2UNCisgIGFzX2V4cHI9ZmFsc2UNCitmaQ0KKw0KK2lmIChiYXNl bmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFg IiA9ICJYLyI7IHRoZW4NCisgIGFzX2Jhc2VuYW1lPWJhc2VuYW1lDQorZWxzZQ0KKyAgYXNfYmFz ZW5hbWU9ZmFsc2UNCitmaQ0KKw0KK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAi WCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbg0KKyAgYXNfZGlybmFtZT1kaXJu YW1lDQorZWxzZQ0KKyAgYXNfZGlybmFtZT1mYWxzZQ0KK2ZpDQorDQorYXNfbWU9YCRhc19iYXNl bmFtZSAtLSAiJDAiIHx8DQorJGFzX2V4cHIgWC8iJDAiIDogJy4qL1woW14vXVteL10qXCkvKiQn IFx8IFwNCisJIFgiJDAiIDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiQwIiA6ICdYXCgvXCknIFx8 IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYLyIkMCIgfA0KKyAgICBzZWQgJy9eLipcL1wo W14vXVteL10qXClcLyokL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhc L1woXC9cL1wpJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXC9cKFwv XCkuKi97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQor DQorIyBBdm9pZCBkZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLg0KK2FzX2NyX2xldHRl cnM9J2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jw0KK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdI SUpLTE1OT1BRUlNUVVZXWFlaJw0KK2FzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3Jf TEVUVEVSUw0KK2FzX2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScNCithc19jcl9hbG51bT0kYXNfY3Jf TGV0dGVycyRhc19jcl9kaWdpdHMNCisNCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQ0KK2Nhc2Ug YGVjaG8gLW4geGAgaW4gIygoKCgoDQorLW4qKQ0KKyAgY2FzZSBgZWNobyAneHlcYydgIGluDQor ICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4NCisg IHh5KSAgRUNIT19DPSdcYyc7Ow0KKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVgg Ni4xYCA+IC9kZXYvbnVsbA0KKyAgICAgICBFQ0hPX1Q9JwknOzsNCisgIGVzYWM7Ow0KKyopDQor ICBFQ0hPX049Jy1uJzs7DQorZXNhYw0KKw0KK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYk JC5maWxlDQoraWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuDQorICBybSAtZiBjb25mJCQuZGly L2NvbmYkJC5maWxlDQorZWxzZQ0KKyAgcm0gLWYgY29uZiQkLmRpcg0KKyAgbWtkaXIgY29uZiQk LmRpciAyPi9kZXYvbnVsbA0KK2ZpDQoraWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVs bDsgdGhlbg0KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVu DQorICAgIGFzX2xuX3M9J2xuIC1zJw0KKyAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3Rj aGFzOg0KKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZp bGUgZGlyJyBmYWlsLg0KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBs biAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4NCisgICAgIyBJbiBib3RoIGNhc2Vz LCB3ZSBoYXZlIHRvIGRlZmF1bHQgdG8gYGNwIC1wJy4NCisgICAgbG4gLXMgY29uZiQkLmZpbGUg Y29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fA0KKyAgICAg IGFzX2xuX3M9J2NwIC1wJw0KKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251 bGw7IHRoZW4NCisgICAgYXNfbG5fcz1sbg0KKyAgZWxzZQ0KKyAgICBhc19sbl9zPSdjcCAtcCcN CisgIGZpDQorZWxzZQ0KKyAgYXNfbG5fcz0nY3AgLXAnDQorZmkNCitybSAtZiBjb25mJCQgY29u ZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlDQorcm1kaXIgY29uZiQk LmRpciAyPi9kZXYvbnVsbA0KKw0KKw0KKyMgYXNfZm5fbWtkaXJfcA0KKyMgLS0tLS0tLS0tLS0t LQ0KKyMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHBhcmVudHMg aWYgbmVjZXNzYXJ5Lg0KK2FzX2ZuX21rZGlyX3AgKCkNCit7DQorDQorICBjYXNlICRhc19kaXIg aW4gIygNCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsNCisgIGVzYWMNCisgIHRlc3QgLWQgIiRh c19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgew0KKyAgICBhc19kaXJzPQ0KKyAgICB3aGls ZSA6OyBkbw0KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKA0KKyAgICAgICpcJyopIGFzX3FkaXI9 YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKA0KKyAg ICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7DQorICAgICAgZXNhYw0KKyAgICAgIGFzX2RpcnM9Iick YXNfcWRpcicgJGFzX2RpcnMiDQorICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX2Rp ciIgfHwNCiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyok JyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRhc19kaXIi IDogJ1hcKC8vXCkkJyBcfCBcDQorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYv bnVsbCB8fA0KKyRhc19lY2hvIFgiJGFzX2RpciIgfA0KKyAgICBzZWQgJy9eWFwoLipbXi9dXClc L1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9e WFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhc KFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cKS4q L3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICBzLy4qLy4vOyBxJ2ANCisgICAg ICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaw0KKyAgICBkb25lDQorICAgIHRlc3QgLXogIiRh c19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyINCisgIH0gfHwgdGVzdCAtZCAiJGFzX2Rp ciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiDQor DQorDQorfSAjIGFzX2ZuX21rZGlyX3ANCitpZiBta2RpciAtcCAuIDI+L2Rldi9udWxsOyB0aGVu DQorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInDQorZWxzZQ0KKyAgdGVzdCAtZCAu Ly1wICYmIHJtZGlyIC4vLXANCisgIGFzX21rZGlyX3A9ZmFsc2UNCitmaQ0KKw0KK2lmIHRlc3Qg LXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgIGFzX3Rlc3RfeD0ndGVzdCAteCcNCitlbHNl DQorICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCisgICAgYXNfbHNfTF9vcHRp b249TA0KKyAgZWxzZQ0KKyAgICBhc19sc19MX29wdGlvbj0NCisgIGZpDQorICBhc190ZXN0X3g9 Jw0KKyAgICBldmFsIHNoIC1jICdcJycNCisgICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4NCisJ dGVzdCAtZCAiJDEvLiI7DQorICAgICAgZWxzZQ0KKwljYXNlICQxIGluICMoDQorCS0qKXNldCAi Li8kMSI7Ow0KKwllc2FjOw0KKwljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEiIDI+ L2Rldi9udWxsYCBpbiAjKCgNCisJPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQ0KKyAgICAn XCcnIHNoDQorICAnDQorZmkNCithc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeA0KKw0KKyMgU2Vk IGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4NCithc190 cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15f JGFzX2NyX2FsbnVtXSVfJWcnIg0KKw0KKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5n IG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLg0KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVw cCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciDQorDQorDQorZXhlYyA2PiYxDQorIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMNCisjIyBNYWluIGJvZHkgb2YgJENPTkZJ R19TVEFUVVMgc2NyaXB0LiAjIw0KKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICMjDQorX0FTRU9GDQordGVzdCAkYXNfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJENP TkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMg PDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMgU2F2ZSB0aGUgbG9nIG1lc3NhZ2UsIHRv IGtlZXAgJDAgYW5kIHNvIG9uIG1lYW5pbmdmdWwsIGFuZCB0bw0KKyMgcmVwb3J0IGFjdHVhbCBp bnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcg0KKyMgdmFs dWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuDQorYWNfbG9nPSINCitUaGlzIGZpbGUgd2FzIGV4 dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzDQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAy LjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzDQorDQorICBDT05GSUdfRklMRVMgICAg PSAkQ09ORklHX0ZJTEVTDQorICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMNCisg IENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MNCisgIENPTkZJR19DT01NQU5EUyA9ICRD T05GSUdfQ09NTUFORFMNCisgICQgJDAgJEANCisNCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1u KSAyPi9kZXYvbnVsbCB8IHNlZCAxcWANCisiDQorDQorX0FDRU9GDQorDQorY2FzZSAkYWNfY29u ZmlnX2ZpbGVzIGluICoiDQorIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19j b25maWdfZmlsZXM9JCo7Ow0KK2VzYWMNCisNCisNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8 PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisjIEZpbGVzIHRoYXQgY29uZmlnLnN0YXR1cyB3 YXMgbWFkZSBmb3IuDQorY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIg0KK2NvbmZpZ19j b21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyINCisNCitfQUNFT0YNCisNCitjYXQgPj4kQ09O RklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorYWNfY3NfdXNhZ2U9IlwN CitcYCRhc19tZScgaW5zdGFudGlhdGVzIGZpbGVzIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFj dGlvbnMNCitmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJh dGlvbi4gIFVubGVzcyB0aGUgZmlsZXMNCithbmQgYWN0aW9ucyBhcmUgc3BlY2lmaWVkIGFzIFRB R3MsIGFsbCBhcmUgaW5zdGFudGlhdGVkIGJ5IGRlZmF1bHQuDQorDQorVXNhZ2U6ICQwIFtPUFRJ T05dLi4uIFtUQUddLi4uDQorDQorICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRoaXMgaGVscCwg dGhlbiBleGl0DQorICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBj b25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVuIGV4aXQNCisgICAgICAtLWNvbmZpZyAgICAgcHJp bnQgY29uZmlndXJhdGlvbiwgdGhlbiBleGl0DQorICAtcSwgLS1xdWlldCwgLS1zaWxlbnQNCisg ICAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzDQorICAtZCwg LS1kZWJ1ZyAgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMNCisgICAgICAtLXJlY2hl Y2sgICAgdXBkYXRlICRhc19tZSBieSByZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlv bnMNCisgICAgICAtLWZpbGU9RklMRVs6VEVNUExBVEVdDQorICAgICAgICAgICAgICAgICAgIGlu c3RhbnRpYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgRklMRQ0KKw0KK0NvbmZpZ3VyYXRpb24g ZmlsZXM6DQorJGNvbmZpZ19maWxlcw0KKw0KK0NvbmZpZ3VyYXRpb24gY29tbWFuZHM6DQorJGNv bmZpZ19jb21tYW5kcw0KKw0KK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLiIN CisNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTENCithY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNl ZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIg0KK2FjX2NzX3ZlcnNpb249IlxcDQor Y29uZmlnLnN0YXR1cw0KK2NvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2Nv bmYgMi42OCwNCisgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIg0KKw0KK0NvcHly aWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCitUaGlzIGNvbmZp Zy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24NCitnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFu ZCBtb2RpZnkgaXQuIg0KKw0KK2FjX3B3ZD0nJGFjX3B3ZCcNCitzcmNkaXI9JyRzcmNkaXInDQor SU5TVEFMTD0nJElOU1RBTEwnDQordGVzdCAtbiAiXCRBV0siIHx8IEFXSz1hd2sNCitfQUNFT0YN CisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQor IyBUaGUgZGVmYXVsdCBsaXN0cyBhcHBseSBpZiB0aGUgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGFu eSBmaWxlLg0KK2FjX25lZWRfZGVmYXVsdHM9Og0KK3doaWxlIHRlc3QgJCMgIT0gMA0KK2RvDQor ICBjYXNlICQxIGluDQorICAtLSo9PyopDQorICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdY XChbXj1dKlwpPSdgDQorICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdYW149XSo9XCguKlwp J2ANCisgICAgYWNfc2hpZnQ9Og0KKyAgICA7Ow0KKyAgLS0qPSkNCisgICAgYWNfb3B0aW9uPWBl eHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2ANCisgICAgYWNfb3B0YXJnPQ0KKyAgICBhY19zaGlm dD06DQorICAgIDs7DQorICAqKQ0KKyAgICBhY19vcHRpb249JDENCisgICAgYWNfb3B0YXJnPSQy DQorICAgIGFjX3NoaWZ0PXNoaWZ0DQorICAgIDs7DQorICBlc2FjDQorDQorICBjYXNlICRhY19v cHRpb24gaW4NCisgICMgSGFuZGxpbmcgb2YgdGhlIG9wdGlvbnMuDQorICAtcmVjaGVjayB8IC0t cmVjaGVjayB8IC0tcmVjaGVjIHwgLS1yZWNoZSB8IC0tcmVjaCB8IC0tcmVjIHwgLS1yZSB8IC0t cikNCisgICAgYWNfY3NfcmVjaGVjaz06IDs7DQorICAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0t dmVyc2kgfCAtLXZlcnMgfCAtLXZlciB8IC0tdmUgfCAtLXYgfCAtViApDQorICAgICRhc19lY2hv ICIkYWNfY3NfdmVyc2lvbiI7IGV4aXQgOzsNCisgIC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29u ZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApDQorICAgICRhc19lY2hvICIkYWNfY3NfY29uZmlnIjsg ZXhpdCA7Ow0KKyAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwgLS1kZSB8IC0tZCB8IC1kICkN CisgICAgZGVidWc9OiA7Ow0KKyAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkNCisgICAg JGFjX3NoaWZ0DQorICAgIGNhc2UgJGFjX29wdGFyZyBpbg0KKyAgICAqXCcqKSBhY19vcHRhcmc9 YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7Ow0KKyAg ICAnJykgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgZmlsZSBhcmd1bWVudCIgOzsNCisgICAgZXNh Yw0KKyAgICBhc19mbl9hcHBlbmQgQ09ORklHX0ZJTEVTICIgJyRhY19vcHRhcmcnIg0KKyAgICBh Y19uZWVkX2RlZmF1bHRzPWZhbHNlOzsNCisgIC0taGUgfCAtLWggfCAgLS1oZWxwIHwgLS1oZWwg fCAtaCApDQorICAgICRhc19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7DQorICAtcSB8IC1x dWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXA0KKyAgfCAtc2ls ZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwgfCAtLXNpIHwgLS1zKQ0K KyAgICBhY19jc19zaWxlbnQ9OiA7Ow0KKw0KKyAgIyBUaGlzIGlzIGFuIGVycm9yLg0KKyAgLSop IGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJw0KK1RyeSBcYCQwIC0t aGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA7Ow0KKw0KKyAgKikgYXNfZm5fYXBwZW5kIGFj X2NvbmZpZ190YXJnZXRzICIgJDEiDQorICAgICBhY19uZWVkX2RlZmF1bHRzPWZhbHNlIDs7DQor DQorICBlc2FjDQorICBzaGlmdA0KK2RvbmUNCisNCithY19jb25maWd1cmVfZXh0cmFfYXJncz0N CisNCitpZiAkYWNfY3Nfc2lsZW50OyB0aGVuDQorICBleGVjIDY+L2Rldi9udWxsDQorICBhY19j b25maWd1cmVfZXh0cmFfYXJncz0iJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tc2lsZW50Ig0K K2ZpDQorDQorX0FDRU9GDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3Jp dGVfZmFpbD0xDQoraWYgXCRhY19jc19yZWNoZWNrOyB0aGVuDQorICBzZXQgWCAnJFNIRUxMJyAn JDAnICRhY19jb25maWd1cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tbm8tY3Jl YXRlIC0tbm8tcmVjdXJzaW9uDQorICBzaGlmdA0KKyAgXCRhc19lY2hvICJydW5uaW5nIENPTkZJ R19TSEVMTD0kU0hFTEwgXCQqIiA+JjYNCisgIENPTkZJR19TSEVMTD0nJFNIRUxMJw0KKyAgZXhw b3J0IENPTkZJR19TSEVMTA0KKyAgZXhlYyAiXCRAIg0KK2ZpDQorDQorX0FDRU9GDQorY2F0ID4+ JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2V4ZWMgNT4+Y29u ZmlnLmxvZw0KK3sNCisgIGVjaG8NCisgIHNlZCAnaDtzLy4vLS9nO3MvXi4uLi8jIyAvO3MvLi4u JC8gIyMvO3A7eDtwO3gnIDw8X0FTQk9YDQorIyMgUnVubmluZyAkYXNfbWUuICMjDQorX0FTQk9Y DQorICAkYXNfZWNobyAiJGFjX2xvZyINCit9ID4mNQ0KKw0KK19BQ0VPRg0KK2NhdCA+PiRDT05G SUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KKyMNCisjIElOSVQtQ09NTUFO RFMNCisjDQorQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGly Ig0KK3NyY2Rpcj0ke3NyY2Rpcn0NCit0YXJnZXQ9JHt0YXJnZXR9DQord2l0aF9tdWx0aXN1YmRp cj0ke3dpdGhfbXVsdGlzdWJkaXJ9DQorYWNfY29uZmlndXJlX2FyZ3M9IiR7YWNfY29uZmlndXJl X2FyZ3N9IC0tZW5hYmxlLW11bHRpbGliIg0KK0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0v YmluL3NofQ0KK2xpYmdsb3NzX3RvcGRpcj0ke2xpYmdsb3NzX3RvcGRpcn0NCisNCisNCitfQUNF T0YNCisNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0x DQorDQorIyBIYW5kbGluZyBvZiBhcmd1bWVudHMuDQorZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4g JGFjX2NvbmZpZ190YXJnZXRzDQorZG8NCisgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4NCisg ICAgImRlcGZpbGVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGRlcGZpbGVz IiA7Ow0KKyAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZp bGUiIDs7DQorDQorICAqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNf Y29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsNCisgIGVzYWMNCitkb25lDQorDQorDQorIyBJ ZiB0aGUgdXNlciBkaWQgbm90IHVzZSB0aGUgYXJndW1lbnRzIHRvIHNwZWNpZnkgdGhlIGl0ZW1z IHRvIGluc3RhbnRpYXRlLA0KKyMgdGhlbiB0aGUgZW52dmFyIGludGVyZmFjZSBpcyB1c2VkLiAg U2V0IG9ubHkgdGhvc2UgdGhhdCBhcmUgbm90Lg0KKyMgV2UgdXNlIHRoZSBsb25nIGZvcm0gZm9y IHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgYmVjYXVzZSBvZiBhbiBleHRyZW1lbHkNCisjIGJpemFy cmUgYnVnIG9uIFN1bk9TIDQuMS4zLg0KK2lmICRhY19uZWVkX2RlZmF1bHRzOyB0aGVuDQorICB0 ZXN0ICIke0NPTkZJR19GSUxFUytzZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19m aWxlcw0KKyAgdGVzdCAiJHtDT05GSUdfQ09NTUFORFMrc2V0fSIgPSBzZXQgfHwgQ09ORklHX0NP TU1BTkRTPSRjb25maWdfY29tbWFuZHMNCitmaQ0KKw0KKyMgSGF2ZSBhIHRlbXBvcmFyeSBkaXJl Y3RvcnkgZm9yIGNvbnZlbmllbmNlLiAgTWFrZSBpdCBpbiB0aGUgYnVpbGQgdHJlZQ0KKyMgc2lt cGx5IGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIGFnYWluc3QgaGF2aW5nIGl0IGhlcmUsIGFu ZCBpbiBhZGRpdGlvbiwNCisjIGNyZWF0aW5nIGFuZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNh biBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuDQorIyBIb29rIGZvciBpdHMgcmVtb3ZhbCB1bmxl c3MgZGVidWdnaW5nLg0KKyMgTm90ZSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgd2luZG93IGluIHdo aWNoIHRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgY2xlYW5lZDoNCisjIGFmdGVyIGl0cyBjcmVh dGlvbiBidXQgYmVmb3JlIGl0cyBuYW1lIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGAkdG1wJy4NCisk ZGVidWcgfHwNCit7DQorICB0bXA9IGFjX3RtcD0NCisgIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/DQor ICA6ICIke2FjX3RtcDo9JHRtcH0iDQorICB7IHRlc3QgISAtZCAiJGFjX3RtcCIgfHwgcm0gLWZy ICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cw0KKycgMA0KKyAgdHJhcCAnYXNfZm5f ZXhpdCAxJyAxIDIgMTMgMTUNCit9DQorIyBDcmVhdGUgYSAoc2VjdXJlKSB0bXAgZGlyZWN0b3J5 IGZvciB0bXAgZmlsZXMuDQorDQorew0KKyAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAi Li9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmDQorICB0ZXN0IC1kICIkdG1wIg0KK30gIHx8 DQorew0KKyAgdG1wPS4vY29uZiQkLSRSQU5ET00NCisgICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0 bXAiKQ0KK30gfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGly ZWN0b3J5IGluIC4iICIkTElORU5PIiA1DQorYWNfdG1wPSR0bXANCisNCisjIFNldCB1cCB0aGUg c2NyaXB0cyBmb3IgQ09ORklHX0ZJTEVTIHNlY3Rpb24uDQorIyBObyBuZWVkIHRvIGdlbmVyYXRl IHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4NCisjIFRoaXMgaGFwcGVucyBmb3Ig aW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4NCitpZiB0ZXN0IC1uICIk Q09ORklHX0ZJTEVTIjsgdGhlbg0KKw0KKw0KK2FjX2NyPWBlY2hvIFggfCB0ciBYICdcMDE1J2AN CisjIE9uIGN5Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1 ZXN0ZWQgaWduY3IuDQorIyBCdXQgd2Uga25vdyBvZiBubyBvdGhlciBzaGVsbCB3aGVyZSBhY19j ciB3b3VsZCBiZSBlbXB0eSBhdCB0aGlzDQorIyBwb2ludCwgc28gd2UgY2FuIHVzZSBhIGJhc2hp c20gYXMgYSBmYWxsYmFjay4NCitpZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4NCisgIGV2YWwg YWNfY3I9XCRcJ1xcclwnDQorZmkNCithY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQg ImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgDQoraWYgdGVzdCAiJGFjX2NzX2F3a19j ciIgPSAiYSR7YWNfY3J9YiI7IHRoZW4NCisgIGFjX2NzX2F3a19jcj0nXFxyJw0KK2Vsc2UNCisg IGFjX2NzX2F3a19jcj0kYWNfY3INCitmaQ0KKw0KK2VjaG8gJ0JFR0lOIHsnID4iJGFjX3RtcC9z dWJzMS5hd2siICYmDQorX0FDRU9GDQorDQorDQorew0KKyAgZWNobyAiY2F0ID5jb25mJCRzdWJz LmF3ayA8PF9BQ0VPRiIgJiYNCisgIGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IHNlZCAncy8uKi8m ISQmJGFjX2RlbGltLycgJiYNCisgIGVjaG8gIl9BQ0VPRiINCit9ID5jb25mJCRzdWJzLnNoIHx8 DQorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElO RU5PIiA1DQorYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBncmVwIC1jICde J2ANCithY19kZWxpbT0nJSFfISMgJw0KK2ZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSBm YWxzZSBmYWxzZSBmYWxzZSA6OyBkbw0KKyAgLiAuL2NvbmYkJHN1YnMuc2ggfHwNCisgICAgYXNf Zm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQ0K Kw0KKyAgYWNfZGVsaW1fbj1gc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25mJCRzdWJz LmF3ayB8IGdyZXAgLWMgWGANCisgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVt OyB0aGVuDQorICAgIGJyZWFrDQorICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbg0KKyAgICBhc19m bl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1DQor ICBlbHNlDQorICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAi DQorICBmaQ0KK2RvbmUNCitybSAtZiBjb25mJCRzdWJzLnNoDQorDQorY2F0ID4+JENPTkZJR19T VEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorY2F0ID4+IlwkYWNfdG1wL3N1YnMx LmF3ayIgPDxcXF9BQ0FXSyAmJg0KK19BQ0VPRg0KK3NlZCAtbiAnDQoraA0KK3MvXi9TWyIvOyBz LyEuKi8iXT0vDQorcA0KK2cNCitzL15bXiFdKiEvLw0KKzpyZXBsDQordCByZXBsDQorcy8nIiRh Y19kZWxpbSInJC8vDQordCBkZWxpbQ0KKzpubA0KK2gNCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8N Cit0IG1vcmUxDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxcLw0KK3ANCituDQor YiByZXBsDQorOm1vcmUxDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLw0KK3ANCitn DQorcy8uXHsxNDhcfS8vDQordCBubA0KKzpkZWxpbQ0KK2gNCitzL1woLlx7MTQ4XH1cKS4uKi9c MS8NCit0IG1vcmUyDQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIi8NCitwDQorYg0KKzpt b3JlMg0KK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8NCitwDQorZw0KK3MvLlx7MTQ4 XH0vLw0KK3QgZGVsaW0NCisnIDxjb25mJCRzdWJzLmF3ayB8IHNlZCAnDQorL15bXiIiXS97DQor ICBODQorICBzL1xuLy8NCit9DQorJyA+PiRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9 MQ0KK3JtIC1mIGNvbmYkJHN1YnMuYXdrDQorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xDQorX0FDQVdLDQorY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIg PDxfQUNBV0sgJiYNCisgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxDQorICBGUyA9 ICIHIg0KKw0KK30NCit7DQorICBsaW5lID0gJCAwDQorICBuZmllbGRzID0gc3BsaXQobGluZSwg ZmllbGQsICJAIikNCisgIHN1YnN0ZWQgPSAwDQorICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pDQor ICBmb3IgKGkgPSAyOyBpIDwgbmZpZWxkczsgaSsrKSB7DQorICAgIGtleSA9IGZpZWxkW2ldDQor ICAgIGtleWxlbiA9IGxlbmd0aChrZXkpDQorICAgIGlmIChTX2lzX3NldFtrZXldKSB7DQorICAg ICAgdmFsdWUgPSBTW2tleV0NCisgICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIg dmFsdWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMpDQorICAgICAgbGVuICs9IGxl bmd0aCh2YWx1ZSkgKyBsZW5ndGgoZmllbGRbKytpXSkNCisgICAgICBzdWJzdGVkID0gMQ0KKyAg ICB9IGVsc2UNCisgICAgICBsZW4gKz0gMSArIGtleWxlbg0KKyAgfQ0KKw0KKyAgcHJpbnQgbGlu ZQ0KK30NCisNCitfQUNBV0sNCitfQUNFT0YNCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xDQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+ IC9kZXYvbnVsbCAyPiYxOyB0aGVuDQorICBzZWQgInMvJGFjX2NyXCQvLzsgcy8kYWNfY3IvJGFj X2NzX2F3a19jci9nIg0KK2Vsc2UNCisgIGNhdA0KK2ZpIDwgIiRhY190bXAvc3ViczEuYXdrIiA+ ICIkYWNfdG1wL3N1YnMuYXdrIiBcDQorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNl dHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1DQorX0FDRU9GDQorDQorIyBW UEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xl ICQoc3JjZGlyKSwNCisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRI IGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kDQorIyB0cmFpbGluZyBjb2xvbnMg YW5kIHRoZW4gcmVtb3ZlIHRoZSB3aG9sZSBsaW5lIGlmIFZQQVRIIGJlY29tZXMgZW1wdHkNCisj IChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVy cykuDQoraWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4NCisgIGFjX3Zwc3ViPScvXlsJIF0q VlBBVEhbCSBdKj1bCSBdKi97DQoraA0KK3MvLy8NCitzL14vOi8NCitzL1sJIF0qJC86Lw0KK3Mv OlwkKHNyY2Rpcik6LzovZw0KK3MvOlwke3NyY2Rpcn06LzovZw0KK3MvOkBzcmNkaXJAOi86L2cN CitzL146Ki8vDQorcy86KiQvLw0KK3gNCitzL1woPVsJIF0qXCkuKi9cMS8NCitHDQorcy9cbi8v DQorcy9eW149XSo9WwkgXSokLy8NCit9Jw0KK2ZpDQorDQorY2F0ID4+JENPTkZJR19TVEFUVVMg PDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQ0KK2ZpICMgdGVzdCAtbiAiJENPTkZJR19GSUxF UyINCisNCisNCitldmFsIHNldCBYICIgIDpGICRDT05GSUdfRklMRVMgICAgICA6QyAkQ09ORklH X0NPTU1BTkRTIg0KK3NoaWZ0DQorZm9yIGFjX3RhZw0KK2RvDQorICBjYXNlICRhY190YWcgaW4N CisgIDpbRkhMQ10pIGFjX21vZGU9JGFjX3RhZzsgY29udGludWU7Ow0KKyAgZXNhYw0KKyAgY2Fz ZSAkYWNfbW9kZSRhY190YWcgaW4NCisgIDpbRkhMXSo6Kik7Ow0KKyAgOkwqIHwgOkMqOiopIGFz X2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7DQorICA6 W0ZIXS0pIGFjX3RhZz0tOi07Ow0KKyAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmlu OzsNCisgIGVzYWMNCisgIGFjX3NhdmVfSUZTPSRJRlMNCisgIElGUz06DQorICBzZXQgeCAkYWNf dGFnDQorICBJRlM9JGFjX3NhdmVfSUZTDQorICBzaGlmdA0KKyAgYWNfZmlsZT0kMQ0KKyAgc2hp ZnQNCisNCisgIGNhc2UgJGFjX21vZGUgaW4NCisgIDpMKSBhY19zb3VyY2U9JDE7Ow0KKyAgOltG SF0pDQorICAgIGFjX2ZpbGVfaW5wdXRzPQ0KKyAgICBmb3IgYWNfZg0KKyAgICBkbw0KKyAgICAg IGNhc2UgJGFjX2YgaW4NCisgICAgICAtKSBhY19mPSIkYWNfdG1wL3N0ZGluIjs7DQorICAgICAg KikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0 aGUgc291cmNlIHRyZWUNCisJICMgKGlmIHRoZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSkuICBUaGUg YWJzb2x1dGUgcGF0aCBjYW5ub3QgYmUgRE9TLXN0eWxlLA0KKwkgIyBiZWNhdXNlICRhY19mIGNh bm5vdCBjb250YWluIGA6Jy4NCisJIHRlc3QgLWYgIiRhY19mIiB8fA0KKwkgICBjYXNlICRhY19m IGluDQorCSAgIFtcXC8kXSopIGZhbHNlOzsNCisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNf ZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7Ow0KKwkgICBlc2FjIHx8DQorCSAgIGFzX2ZuX2Vy cm9yIDEgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7DQor ICAgICAgZXNhYw0KKyAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFzX2VjaG8gIiRh Y19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMNCisgICAgICBhc19mbl9hcHBl bmQgYWNfZmlsZV9pbnB1dHMgIiAnJGFjX2YnIg0KKyAgICBkb25lDQorDQorICAgICMgTGV0J3Mg c3RpbGwgcHJldGVuZCBpdCBpcyBgY29uZmlndXJlJyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4s IGRvbid0DQorICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8g cmVhZDoNCisgICAgIyAgICAvKiBjb25maWcuaC4gIEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVz LiAgKi8NCisgICAgY29uZmlndXJlX2lucHV0PSdHZW5lcmF0ZWQgZnJvbSAnYA0KKwkgICRhc19l Y2hvICIkKiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJw0KKwlgJyBieSBjb25m aWd1cmUuJw0KKyAgICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuDQorICAgICAgY29u ZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiDQorICAgICAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyAkYWNfZmlsZSIgPiY1 DQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9DQorICAgIGZpDQor ICAgICMgTmV1dHJhbGl6ZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGlu IHJlcGxhY2VtZW50IHN0cmluZ3MuDQorICAgIGNhc2UgJGNvbmZpZ3VyZV9pbnB1dCBpbiAjKA0K KyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQ0KKyAgICAgICBhY19zZWRfY29uZl9pbnB1dD1gJGFz X2VjaG8gIiRjb25maWd1cmVfaW5wdXQiIHwNCisgICAgICAgc2VkICdzL1tcXFxcJnxdL1xcXFwm L2cnYDs7ICMoDQorICAgICopIGFjX3NlZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7Ow0K KyAgICBlc2FjDQorDQorICAgIGNhc2UgJGFjX3RhZyBpbg0KKyAgICAqOi06KiB8ICo6LSkgY2F0 ID4iJGFjX3RtcC9zdGRpbiIgXA0KKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qg Y3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7Ow0KKyAgICBlc2FjDQorICAgIDs7DQorICBl c2FjDQorDQorICBhY19kaXI9YCRhc19kaXJuYW1lIC0tICIkYWNfZmlsZSIgfHwNCiskYXNfZXhw ciBYIiRhY19maWxlIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIk YWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwNCisJIFgiJGFjX2ZpbGUiIDogJ1hcKC8vXCkk JyBcfCBcDQorCSBYIiRhY19maWxlIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCisk YXNfZWNobyBYIiRhY19maWxlIiB8DQorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVte L10qXC8qJC97DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXClb Xi9dLiovew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpJC97 DQorCSAgICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wpLiovew0KKwkgICAg cy8vXDEvDQorCSAgICBxDQorCSAgfQ0KKwkgIHMvLiovLi87IHEnYA0KKyAgYXNfZGlyPSIkYWNf ZGlyIjsgYXNfZm5fbWtkaXJfcA0KKyAgYWNfYnVpbGRkaXI9Lg0KKw0KK2Nhc2UgIiRhY19kaXIi IGluDQorLikgYWNfZGlyX3N1ZmZpeD0gYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWls ZF9wcmVmaXg9IDs7DQorKikNCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIg fCBzZWQgJ3N8XlwuW1xcL118fCdgDQorICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4g JGFjX2Rpcl9zdWZmaXguDQorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rp cl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2ANCisgIGNhc2UgJGFjX3Rv cF9idWlsZGRpcl9zdWIgaW4NCisgICIiKSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1 aWxkX3ByZWZpeD0gOzsNCisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRk aXJfc3ViLyA7Ow0KKyAgZXNhYyA7Ow0KK2VzYWMNCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19w d2QNCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4DQorIyBmb3IgYmFja3dh cmQgY29tcGF0aWJpbGl0eToNCithY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgN CisNCitjYXNlICRzcmNkaXIgaW4NCisgIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4N CisgICAgYWNfc3JjZGlyPS4NCisgICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9wX2J1aWxkZGlyX3N1 Yg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7DQorICBbXFwvXSogfCA/OltcXC9d KiApICAjIEFic29sdXRlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kc3JjZGlyJGFjX2Rpcl9zdWZm aXg7DQorICAgIGFjX3RvcF9zcmNkaXI9JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0k c3JjZGlyIDs7DQorICAqKSAjIFJlbGF0aXZlIG5hbWUuDQorICAgIGFjX3NyY2Rpcj0kYWNfdG9w X2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeA0KKyAgICBhY190b3Bfc3JjZGlyPSRh Y190b3BfYnVpbGRfcHJlZml4JHNyY2Rpcg0KKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdk LyRzcmNkaXIgOzsNCitlc2FjDQorYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNf ZGlyX3N1ZmZpeA0KKw0KKw0KKyAgY2FzZSAkYWNfbW9kZSBpbg0KKyAgOkYpDQorICAjDQorICAj IENPTkZJR19GSUxFDQorICAjDQorDQorICBjYXNlICRJTlNUQUxMIGluDQorICBbXFwvJF0qIHwg PzpbXFwvXSogKSBhY19JTlNUQUxMPSRJTlNUQUxMIDs7DQorICAqKSBhY19JTlNUQUxMPSRhY190 b3BfYnVpbGRfcHJlZml4JElOU1RBTEwgOzsNCisgIGVzYWMNCitfQUNFT0YNCisNCitjYXQgPj4k Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xDQorIyBJZiB0aGUgdGVt cGxhdGUgZG9lcyBub3Qga25vdyBhYm91dCBkYXRhcm9vdGRpciwgZXhwYW5kIGl0Lg0KKyMgRklY TUU6IFRoaXMgaGFjayBzaG91bGQgYmUgcmVtb3ZlZCBhIGZldyB5ZWFycyBhZnRlciAyLjYwLg0K K2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQ0KK2FjX3NlZF9kYXRh cm9vdD0nDQorL2RhdGFyb290ZGlyLyB7DQorICBwDQorICBxDQorfQ0KKy9AZGF0YWRpckAvcA0K Ky9AZG9jZGlyQC9wDQorL0BpbmZvZGlyQC9wDQorL0Bsb2NhbGVkaXJAL3ANCisvQG1hbmRpckAv cCcNCitjYXNlIGBldmFsICJzZWQgLW4gXCJcJGFjX3NlZF9kYXRhcm9vdFwiICRhY19maWxlX2lu cHV0cyJgIGluDQorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7Ow0KKypA ZGF0YWRpckAqfCpAZG9jZGlyQCp8KkBpbmZvZGlyQCp8KkBsb2NhbGVkaXJAKnwqQG1hbmRpckAq KQ0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAk YWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdub3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmci ID4mNQ0KKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0 byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30NCitfQUNFT0YNCitjYXQg Pj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCisgIGFjX2RhdGFy b290ZGlyX2hhY2s9Jw0KKyAgcyZAZGF0YWRpckAmJGRhdGFkaXImZw0KKyAgcyZAZG9jZGlyQCYk ZG9jZGlyJmcNCisgIHMmQGluZm9kaXJAJiRpbmZvZGlyJmcNCisgIHMmQGxvY2FsZWRpckAmJGxv Y2FsZWRpciZnDQorICBzJkBtYW5kaXJAJiRtYW5kaXImZw0KKyAgcyZcXFwke2RhdGFyb290ZGly fSYkZGF0YXJvb3RkaXImZycgOzsNCitlc2FjDQorX0FDRU9GDQorDQorIyBOZXV0cmFsaXplIFZQ QVRIIHdoZW4gYCRzcmNkaXInID0gYC4nLg0KKyMgU2hlbGwgY29kZSBpbiBjb25maWd1cmUuYWMg bWlnaHQgc2V0IGV4dHJhc3ViLg0KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50 YWluIHRoaXMgZmVhdHVyZT8NCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTENCithY19zZWRfZXh0cmE9IiRhY192cHN1Yg0KKyRleHRyYXN1Yg0KK19BQ0VP Rg0KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTENCis6 dA0KKy9AW2EtekEtWl9dW2EtekEtWl8wLTldKkAvIWINCitzfEBjb25maWd1cmVfaW5wdXRAfCRh Y19zZWRfY29uZl9pbnB1dHw7dCB0DQorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGly X3N1YiY7dCB0DQorcyZAdG9wX2J1aWxkX3ByZWZpeEAmJGFjX3RvcF9idWlsZF9wcmVmaXgmO3Qg dA0KK3MmQHNyY2RpckAmJGFjX3NyY2RpciY7dCB0DQorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19z cmNkaXImO3QgdA0KK3MmQHRvcF9zcmNkaXJAJiRhY190b3Bfc3JjZGlyJjt0IHQNCitzJkBhYnNf dG9wX3NyY2RpckAmJGFjX2Fic190b3Bfc3JjZGlyJjt0IHQNCitzJkBidWlsZGRpckAmJGFjX2J1 aWxkZGlyJjt0IHQNCitzJkBhYnNfYnVpbGRkaXJAJiRhY19hYnNfYnVpbGRkaXImO3QgdA0KK3Mm QGFic190b3BfYnVpbGRkaXJAJiRhY19hYnNfdG9wX2J1aWxkZGlyJjt0IHQNCitzJkBJTlNUQUxM QCYkYWNfSU5TVEFMTCY7dCB0DQorJGFjX2RhdGFyb290ZGlyX2hhY2sNCisiDQorZXZhbCBzZWQg XCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJGFjX3RtcC9z dWJzLmF3ayIgXA0KKyAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qg Y3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQ0KKw0KK3Rlc3QgLXogIiRhY19kYXRhcm9vdGRp cl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmDQorICB7IGFjX291dD1gc2VkIC1uICcvXCR7 ZGF0YXJvb3RkaXJ9L3AnICIkYWNfdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJg0K KyAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgXA0KKyAg ICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJg0KKyAgeyAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlu cyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicNCit3aGljaCBzZWVt cyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQ0K KyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNl IHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJw0KK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVm aW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCIgPiYyO30NCisNCisgIHJtIC1m ICIkYWNfdG1wL3N0ZGluIg0KKyAgY2FzZSAkYWNfZmlsZSBpbg0KKyAgLSkgY2F0ICIkYWNfdG1w L291dCIgJiYgcm0gLWYgIiRhY190bXAvb3V0Ijs7DQorICAqKSBybSAtZiAiJGFjX2ZpbGUiICYm IG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7DQorICBlc2FjIFwNCisgIHx8IGFzX2ZuX2Vy cm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQ0KKyA7Ow0KKw0K Kw0KKyAgOkMpICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4ZWN1 dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY1DQorJGFzX2VjaG8gIiRhc19tZTogZXhlY3V0aW5n ICRhY19maWxlIGNvbW1hbmRzIiA+JjY7fQ0KKyA7Ow0KKyAgZXNhYw0KKw0KKw0KKyAgY2FzZSAk YWNfZmlsZSRhY19tb2RlIGluDQorICAgICJkZXBmaWxlcyI6QykgdGVzdCB4IiRBTURFUF9UUlVF IiAhPSB4IiIgfHwgZm9yIG1mIGluICRDT05GSUdfRklMRVM7IGRvDQorICAjIFN0cmlwIE1GIHNv IHdlIGVuZCB1cCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLg0KKyAgbWY9YGVjaG8gIiRtZiIg fCBzZWQgLWUgJ3MvOi4qJC8vJ2ANCisgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFuIEF1dG9t YWtlIGdlbmVyYXRlZCBNYWtlZmlsZSBvciBub3QuDQorICAjIFdlIHVzZWQgdG8gbWF0Y2ggb25s eSB0aGUgZmlsZXMgbmFtZWQgYE1ha2VmaWxlLmluJywgYnV0DQorICAjIHNvbWUgcGVvcGxlIHJl bmFtZSB0aGVtOyBzbyBpbnN0ZWFkIHdlIGxvb2sgYXQgdGhlIGZpbGUgY29udGVudC4NCisgICMg R3JlcCdpbmcgdGhlIGZpcnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUgcG9zdC1w cm9jZXNzDQorICAjIGVhY2ggTWFrZWZpbGUuaW4gYW5kIGFkZCBhIG5ldyBsaW5lIG9uIHRvcCBv ZiBlYWNoIGZpbGUgdG8gc2F5IHNvLg0KKyAgIyBTbyBsZXQncyBncmVwIHdob2xlIGZpbGUuDQor ICBpZiBncmVwICdeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlJyAkbWYgPiAvZGV2L251bGwgMj4m MTsgdGhlbg0KKyAgICBkaXJwYXJ0PWAkYXNfZGlybmFtZSAtLSAiJG1mIiB8fA0KKyRhc19leHBy IFgiJG1mIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXA0KKwkgWCIkbWYiIDog J1hcKC8vXClbXi9dJyBcfCBcDQorCSBYIiRtZiIgOiAnWFwoLy9cKSQnIFx8IFwNCisJIFgiJG1m IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwNCiskYXNfZWNobyBYIiRtZiIgfA0KKyAg ICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQvew0KKwkgICAgcy8vXDEvDQor CSAgICBxDQorCSAgfQ0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sNCisJICAgIHMvL1wxLw0KKwkg ICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKSQvew0KKwkgICAgcy8vXDEvDQorCSAgICBxDQor CSAgfQ0KKwkgIC9eWFwoXC9cKS4qL3sNCisJICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJ ICBzLy4qLy4vOyBxJ2ANCisgIGVsc2UNCisgICAgY29udGludWUNCisgIGZpDQorICAjIEV4dHJh Y3QgdGhlIGRlZmluaXRpb24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQ0K KyAgIyBmcm9tIHRoZSBNYWtlZmlsZSB3aXRob3V0IHJ1bm5pbmcgYG1ha2UnLg0KKyAgREVQRElS PWBzZWQgLW4gJ3MvXkRFUERJUiA9IC8vcCcgPCAiJG1mImANCisgIHRlc3QgLXogIiRERVBESVIi ICYmIGNvbnRpbnVlDQorICBhbV9faW5jbHVkZT1gc2VkIC1uICdzL15hbV9faW5jbHVkZSA9IC8v cCcgPCAiJG1mImANCisgIHRlc3QgLXogImFtX19pbmNsdWRlIiAmJiBjb250aW51ZQ0KKyAgYW1f X3F1b3RlPWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImANCisgICMgV2hlbiB1 c2luZyBhbnNpMmtuciwgVSBtYXkgYmUgZW1wdHkgb3IgYW4gdW5kZXJzY29yZTsgZXhwYW5kIGl0 DQorICBVPWBzZWQgLW4gJ3MvXlUgPSAvL3AnIDwgIiRtZiJgDQorICAjIEZpbmQgYWxsIGRlcGVu ZGVuY3kgb3V0cHV0IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoDQorICAjICQo REVQRElSKSBpbiB0aGVpciBuYW1lcy4gIFdlIGludm9rZSBzZWQgdHdpY2UgYmVjYXVzZSBpdCBp cyB0aGUNCisgICMgc2ltcGxlc3QgYXBwcm9hY2ggdG8gY2hhbmdpbmcgJChERVBESVIpIHRvIGl0 cyBhY3R1YWwgdmFsdWUgaW4gdGhlDQorICAjIGV4cGFuc2lvbi4NCisgIGZvciBmaWxlIGluIGBz ZWQgLW4gIg0KKyAgICBzL14kYW1fX2luY2x1ZGUgJGFtX19xdW90ZVwoLiooREVQRElSKS4qXCkk YW1fX3F1b3RlIickL1wxL3AnIDwiJG1mIiB8IFwNCisgICAgICAgc2VkIC1lICdzL1wkKERFUERJ UikvJyIkREVQRElSIicvZycgLWUgJ3MvXCRVLyciJFUiJy9nJ2A7IGRvDQorICAgICMgTWFrZSBz dXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLg0KKyAgICB0ZXN0IC1mICIkZGlycGFydC8kZmlsZSIg JiYgY29udGludWUNCisgICAgZmRpcj1gJGFzX2Rpcm5hbWUgLS0gIiRmaWxlIiB8fA0KKyRhc19l eHByIFgiJGZpbGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcDQorCSBYIiRm aWxlIiA6ICdYXCgvL1wpW14vXScgXHwgXA0KKwkgWCIkZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwN CisJIFgiJGZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fA0KKyRhc19lY2hvIFgi JGZpbGUiIHwNCisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sNCisJ ICAgIHMvL1wxLw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXC9cKVteL10uKi97DQorCSAg ICBzLy9cMS8NCisJICAgIHENCisJICB9DQorCSAgL15YXChcL1wvXCkkL3sNCisJICAgIHMvL1wx Lw0KKwkgICAgcQ0KKwkgIH0NCisJICAvXlhcKFwvXCkuKi97DQorCSAgICBzLy9cMS8NCisJICAg IHENCisJICB9DQorCSAgcy8uKi8uLzsgcSdgDQorICAgIGFzX2Rpcj0kZGlycGFydC8kZmRpcjsg YXNfZm5fbWtkaXJfcA0KKyAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIg0KKyAg ICBlY2hvICcjIGR1bW15JyA+ICIkZGlycGFydC8kZmlsZSINCisgIGRvbmUNCitkb25lDQorIDs7 DQorICAgICJNYWtlZmlsZSI6RikgLiAke2xpYmdsb3NzX3RvcGRpcn0vY29uZmlnLW1sLmluIDs7 DQorDQorICBlc2FjDQorZG9uZSAjIGZvciBhY190YWcNCisNCisNCithc19mbl9leGl0IDANCitf QUNFT0YNCithY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQ0KKw0KK3Rlc3QgJGFj X3dyaXRlX2ZhaWwgPSAwIHx8DQorICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFpbHVyZSBjcmVh dGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUNCisNCisNCisjIGNvbmZpZ3VyZSBpcyB3 cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuDQorIyBj b25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5nIHRvIGNvbmZp Zy5sb2cuDQorIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxv ZyBpcyBzdGlsbCBrZXB0IG9wZW4NCisjIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmlnLnN0YXR1cyB3 b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMNCisjIG91dHB1dCBpcyBzaW1wbHkgZGlz Y2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLA0KKyMgZWZmZWN0aXZlbHkg Y2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQN CisjIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBiYWNrIHRvIGNv bmZpZ3VyZSwgd2UNCisjIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFnYWluLg0KK2lm IHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbg0KKyAgYWNfY3Nfc3VjY2Vzcz06DQorICBh Y19jb25maWdfc3RhdHVzX2FyZ3M9DQorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJg0KKyAgICBh Y19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3MgLS1xdWlldCINCisg IGV4ZWMgNT4vZGV2L251bGwNCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29uZmlnX3N0 YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UNCisgIGV4ZWMgNT4+Y29uZmlnLmxvZw0K KyAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBpZiB3aXRoICQ/ ID0gMSwgd2hpY2gNCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRo ZSBsYXN0IGluc3RydWN0aW9uLg0KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhpdCAxDQor ZmkNCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVf b3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbg0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVj b2duaXplZF9vcHRzIiA+JjUNCiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6 ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjI7fQ0KK2ZpDQorDQpkaWZmIC0t Z2l0IGEvbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3VyZS5pbiBiL2xpYmdsb3NzL3h0ZW5zYS9jb25m aWd1cmUuaW4NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmJhYzZjY2Fj YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2NvbmZpZ3VyZS5pbg0KQEAg LTAsMCArMSw0NSBAQA0KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBjb25maWd1cmUuYWMgZm9yIHh0 ZW5zYSBsaWJnbG9zcyBhbmQgY3J0MA0KKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorDQorIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCisjIFNldHVwDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitBQ19JTklUKFtjcnQw LlNdKQ0KK0FDX0NPTkZJR19TUkNESVIoW2NydDAuU10pDQorQUNfQ09ORklHX0FVWF9ESVIoWyR7 c3JjZGlyfS8uLi8uLl0pDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENoZWNrcyBmb3IgcHJv Z3JhbXMNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0xJQl9BQ19QUk9HX0NDDQorQUNfQ0hFQ0tf VE9PTChbQVJdLFthcl0pDQorQUNfQ0hFQ0tfVE9PTChbUkFOTElCXSxbcmFubGliXSkNCitBQ19Q Uk9HX0lOU1RBTEwNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgT3V0cHV0DQorIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCisNCitpZiB0ZXN0ICIkc3JjZGlyIiA9ICIuIiA7IHRoZW4NCisgIGlmIHRlc3Qg IiR7d2l0aF90YXJnZXRfc3ViZGlyfSIgIT0gIi4iIDsgdGhlbg0KKyAgICBsaWJnbG9zc190b3Bk aXI9IiR7c3JjZGlyfS8ke3dpdGhfbXVsdGlzcmN0b3B9Li4vLi4vLi4iDQorICBlbHNlDQorICAg IGxpYmdsb3NzX3RvcGRpcj0iJHtzcmNkaXJ9LyR7d2l0aF9tdWx0aXNyY3RvcH0uLi8uLiINCisg IGZpDQorZWxzZQ0KKyAgbGliZ2xvc3NfdG9wZGlyPSIke3NyY2Rpcn0vLi4vLi4iDQorZmkNCitB Q19DT05GSUdfQVVYX0RJUigkbGliZ2xvc3NfdG9wZGlyKQ0KK0FDX0NPTkZJR19GSUxFUyhNYWtl ZmlsZSwNCisuICR7bGliZ2xvc3NfdG9wZGlyfS9jb25maWctbWwuaW4sDQorc3JjZGlyPSR7c3Jj ZGlyfQ0KK3RhcmdldD0ke3RhcmdldH0NCit3aXRoX211bHRpc3ViZGlyPSR7d2l0aF9tdWx0aXN1 YmRpcn0NCithY19jb25maWd1cmVfYXJncz0iJHthY19jb25maWd1cmVfYXJnc30gLS1lbmFibGUt bXVsdGlsaWIiDQorQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9DQorbGliZ2xv c3NfdG9wZGlyPSR7bGliZ2xvc3NfdG9wZGlyfQ0KKykNCitBQ19PVVRQVVQNCmRpZmYgLS1naXQg YS9saWJnbG9zcy94dGVuc2EvY3J0MC5TIGIvbGliZ2xvc3MveHRlbnNhL2NydDAuUw0KbmV3IGZp bGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMjIwYWJiYWIyDQotLS0gL2Rldi9udWxs DQorKysgYi9saWJnbG9zcy94dGVuc2EvY3J0MC5TDQpAQCAtMCwwICsxLDMxIEBADQorLy8gQ29w eXJpZ2h0IDIwMTkgRXNwcmVzc2lmIFN5c3RlbXMgKFNoYW5naGFpKSBQVEUgTFREDQorLy8NCisv LyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp Y2Vuc2UiKTsNCisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh bmNlIHdpdGggdGhlIExpY2Vuc2UuDQorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM aWNlbnNlIGF0DQorLy8NCisvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ Q0VOU0UtMi4wDQorLy8NCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhl IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisvLyBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig aW1wbGllZC4NCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu c2UuDQorDQorDQorLy8gY3J0MC5TDQorLy8gRHVtbXkgc3RhcnR1cCBmaWxlIHdoaWNoIGNhbGxz IG1haW4oKSBmdW5jdGlvbi4NCisvLyBJdCBjYW4gYmUgdXNlZCBmb3IgY29tcGlsYXRpb24gdGVz dHMgb25seS4NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorCS50ZXh0DQorDQorCS8qDQor CSAqICBTaW1wbGUganVtcCB0byBtYWluKCkuDQorCSAqLw0KKw0KKwkuZ2xvYmFsCV9zdGFydA0K Kwlfc3RhcnQ6DQorCW1vdmkJYTQsIG1haW4NCisJangJYTQJCS8vIGp1bXAgdG8gbWFpbg0KZGlm ZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9jcnQxLWJvYXJkcy5TIGIvbGliZ2xvc3MveHRlbnNh L2NydDEtYm9hcmRzLlMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjY1 YWI3YjQ1YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2NydDEtYm9hcmRz LlMNCkBAIC0wLDAgKzEsMjI2IEBADQorLy8gY3J0MS1ib2FyZHMuUw0KKy8vDQorLy8gRm9yIG1v c3QgaGFyZHdhcmUgLyBib2FyZHMsIHRoaXMgY29kZSBzZXRzIHVwIHRoZSBDIGNhbGxpbmcgY29u dGV4dA0KKy8vIChzZXR0aW5nIHVwIHN0YWNrLCBQUywgYW5kIGNsZWFyaW5nIEJTUykgYW5kIGp1 bXBzIHRvIF9fY2xpYnJhcnlfc3RhcnQNCisvLyB3aGljaCBzZXRzIHVwIHRoZSBDIGxpYnJhcnks IGNhbGxzIGNvbnN0cnVjdG9ycyBhbmQgcmVnaXN0ZXJzIGRlc3RydWN0b3JzLA0KKy8vIGFuZCBj YWxscyBtYWluKCkuDQorLy8NCisvLyBDb250cm9sIGFycml2ZXMgaGVyZSBhdCBfc3RhcnQgZnJv bSB0aGUgcmVzZXQgdmVjdG9yIG9yIGZyb20gY3J0MC1hcHAuUy4NCisNCisvLyBDb3B5cmlnaHQg KGMpIDE5OTgtMjAxMyBUZW5zaWxpY2EgSW5jLg0KKy8vDQorLy8gUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQorLy8g YSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlDQorLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZw0KKy8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCisvLyBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8NCisv LyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8NCisvLyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorLy8NCisvLyBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZA0KKy8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlIFNvZnR3YXJlLg0KKy8vDQorLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQorLy8gRVhQUkVTUyBPUiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQorLy8gTUVS Q0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULg0KKy8vIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZDQorLy8gQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIg TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCisvLyBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RQ0KKy8vIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRX QVJFLg0KKw0KKyNpbmNsdWRlIDx4dGVuc2EvY29yZWJpdHMuaD4NCisNCisNCisvLyBFeHBvcnRz DQorLmdsb2JhbCBfc3RhcnQNCisNCisvLyBJbXBvcnRzDQorLy8gICBfX2NsaWJyYXJ5X2luaXQJ CWZyb20gQyBsaWJyYXJ5IChlZy4gbmV3bGliIG9yIHVjbGliYykNCisvLyAgIGV4aXQJCQlmcm9t IEMgbGlicmFyeQ0KKy8vICAgbWFpbgkJCWZyb20gdXNlciBhcHBsaWNhdGlvbg0KKy8vICAgYm9h cmRfaW5pdAkJCWJvYXJkLXNwZWNpZmljICh1YXJ0L21pbmdsb3NzL3RpbnlnbG9zcy5jKQ0KKy8v ICAgeHRoYWxfZGNhY2hlX2FsbF93cml0ZWJhY2sJZnJvbSBIQUwgbGlicmFyeQ0KKy8vICAgX19z dGFjawkJCWZyb20gbGlua2VyIHNjcmlwdCAoc2VlIExTUCBSZWYgTWFudWFsKQ0KKy8vICAgX19i c3Nfc3RhcnQJCWZyb20gbGlua2VyIHNjcmlwdCAoc2VlIExTUCBSZWYgTWFudWFsKQ0KKy8vICAg X2VuZAkJCWZyb20gbGlua2VyIHNjcmlwdCAoc2VlIExTUCBSZWYgTWFudWFsKQ0KKw0KKy50eXBl CW1haW4sIEBmdW5jdGlvbg0KKw0KKyMgZGVmaW5lIENBTEwJY2FsbDQNCisjIGRlZmluZSBDQUxM WAljYWxseDQNCisjIGRlZmluZSBBUkcxCWE2CS8qIDFzdCBvdXRnb2luZyBjYWxsIGFyZ3VtZW50 ICovDQorIyBkZWZpbmUgQVJHMglhNwkvKiAybmQgb3V0Z29pbmcgY2FsbCBhcmd1bWVudCAqLw0K KyMgZGVmaW5lIEFSRzMJYTgJLyogM3JkIG91dGdvaW5nIGNhbGwgYXJndW1lbnQgKi8NCisjIGRl ZmluZSBBUkc0CWE5CS8qIDR0aCBvdXRnb2luZyBjYWxsIGFyZ3VtZW50ICovDQorIyBkZWZpbmUg QVJHNQlhMTAJLyogNXRoIG91dGdvaW5nIGNhbGwgYXJndW1lbnQgKi8NCisNCisNCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovDQorDQorCS50ZXh0DQorCS5hbGlnbiA0DQorX3N0YXJ0Og0KKwkvLyAgX3N0 YXJ0IGlzIHR5cGljYWxseSBOT1QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCBzZWdtZW50 IC0tDQorCS8vICBpdCBpcyBhbHdheXMgY2FsbGVkIGZyb20gZWl0aGVyIHRoZSByZXNldCB2ZWN0 b3Igb3Igb3RoZXIgY29kZQ0KKwkvLyAgdGhhdCBkb2VzIGVxdWl2YWxlbnQgaW5pdGlhbGl6YXRp b24gKHN1Y2ggYXMgY3J0MC1hcHAuUykuDQorCS8vDQorCS8vICBBc3N1bXB0aW9ucyBvbiBlbnRy eSB0byBfc3RhcnQ6DQorCS8vCS0gbG93IChsZXZlbC1vbmUpIGFuZCBtZWRpdW0gcHJpb3JpdHkg aW50ZXJydXB0cyBhcmUgZGlzYWJsZWQNCisJLy8JICB2aWEgUFMuSU5UTEVWRUwgYW5kL29yIElO VEVOQUJMRSAoUFMuSU5UTEVWRUwgaXMgZXhwZWN0ZWQgdG8NCisJLy8JICBiZSB6ZXJvZWQsIHRv IHBvdGVudGlhbGx5IGVuYWJsZSB0aGVtLCBiZWZvcmUgY2FsbGluZyBtYWluKQ0KKwkvLwktIEMg Y2FsbGluZyBjb250ZXh0IG5vdCBpbml0aWFsaXplZDoNCisJLy8JICAtIFBTIG5vdCBpbml0aWFs aXplZA0KKwkvLwkgIC0gU1Agbm90IGluaXRpYWxpemVkDQorCS8vCS0gdGhlIGZvbGxvd2luZyBh cmUgaW5pdGlhbGl6ZWQ6DQorCS8vCSAgLSBMSVRCQVNFLCBjYWNoZSBhdHRyaWJ1dGVzLCBXaW5k b3dCYXNlLCBXaW5kb3dTdGFydCwNCisJLy8JICAgIENQRU5BQkxFLCBGUCdzIEZDUiBhbmQgRlNS LCBFWENTQVZFW25dDQorDQorCS8vIEtlZXAgYTAgemVyby4gIEl0IGlzIHVzZWQgdG8gaW5pdGlh bGl6ZSBhIGZldyB0aGluZ3MuDQorCS8vIEl0IGlzIGFsc28gdGhlIHJldHVybiBhZGRyZXNzLCB3 aGVyZSB6ZXJvIGluZGljYXRlcw0KKwkvLyB0aGF0IHRoZSBmcmFtZSB1c2VkIGJ5IF9zdGFydCBp cyB0aGUgYm90dG9tbW9zdCBmcmFtZS4NCisJLy8NCisNCisJbW92aQlhMCwgMAkJLy8ga2VlcCB0 aGlzIHJlZ2lzdGVyIHplcm8uDQorDQorCXdzcglhMCwgSU5URU5BQkxFCS8vIElOVEVOQUJMRSB2 YWx1ZSBpcyBub3QgZGVmaW5lZCBhZnRlciByZXNldC4NCisJCQkJLy9tYWtlIHN1cmUgdGhhdCBp bnRlcnJ1cHRzIGFyZSBzaHV0IG9mZiAoKmJlZm9yZSogd2UgbG93ZXIgUFMuSU5UTEVWRUwgYW5k IFBTLkVYQ00hKQ0KKw0KKwkvLyAgV2luZG93ZWQgcmVnaXN0ZXIgaW5pdCwgc28gd2UgY2FuIGNh bGwgd2luZG93ZWQgY29kZSAoZWcuIEMgY29kZSkuDQorCW1vdmkJYTEsIDENCisJd3NyCWExLCBX SU5ET1dTVEFSVA0KKwkvLyAgVGhlIHByb2Nlc3NvciBhbHdheXMgY2xlYXJzIFdJTkRPV0JBU0Ug YXQgcmVzZXQsIHNvIG5vIG5lZWQgdG8gY2xlYXIgaXQgaGVyZS4NCisJLy8gIEl0IHJlc2V0cyBX SU5ET1dTVEFSVCB0byAxIHN0YXJ0aW5nIHdpdGggTFgyLjAvWDcuMCAoUkItMjAwNi4wKS4NCisJ Ly8gIEhvd2V2ZXIsIGFzc3VtaW5nIGhhcmQgcmVzZXQgaXMgbm90IHlldCBhbHdheXMgcHJhY3Rp Y2FsLCBzbyBkbyB0aGlzIGFueXdheToNCisJd3NyCWEwLCBXSU5ET1dCQVNFDQorCXJzeW5jDQor DQorCS8vIFNldCBWRUNCQVNFIHRvIHVzZSBvdXIgdmVjdG9ycyBpbnN0ZWFkIHZlY3RvcnMgaW4g Uk9NDQorCW1vdmkJYTEsIF92ZWN0b3JfdGFibGUNCisJd3NyCWExLCBWRUNCQVNFDQorDQorCS8v IEluaXRpYWxpemUgdGhlIHN0YWNrIHBvaW50ZXIuDQorCS8vIFNlZSB0aGUgIkFCSSBhbmQgU29m dHdhcmUgQ29udmVudGlvbnMiIGNoYXB0ZXIgaW4gdGhlDQorCS8vIFh0ZW5zYSBJU0EgUmVmZXJl bmNlIG1hbnVhbCBmb3IgZGV0YWlscy4NCisNCisJLy8gTk9URTogQmVjYXVzZSB0aGUgX3N0YXJ0 IHJvdXRpbmUgZG9lcyBub3QgdXNlIGFueSBtZW1vcnkgaW4gaXRzDQorCS8vIHN0YWNrIGZyYW1l LCBhbmQgYmVjYXVzZSBhbGwgb2YgaXRzIENBTEwgaW5zdHJ1Y3Rpb25zIHVzZSBhDQorCS8vIHdp bmRvdyBzaXplIG9mIDQgKG9yIHplcm8pLCB0aGUgc3RhY2sgZnJhbWUgZm9yIF9zdGFydCBjYW4g YmUgZW1wdHkuDQorDQorCW1vdmkJc3AsIF9fc3RhY2sNCisNCisJLyoNCisJICogIE5vdyB0aGF0 IHNwIChhMSkgaXMgc2V0LCB3ZSBjYW4gc2V0IFBTIGFzIHBlciB0aGUgYXBwbGljYXRpb24NCisJ ICogICh1c2VyIHZlY3RvciBtb2RlLCBlbmFibGUgaW50ZXJydXB0cywgZW5hYmxlIHdpbmRvdyBl eGNlcHRpb25zIGlmIGFwcGxpY2FibGUpLg0KKwkgKi8NCisJbW92aQlhMywgUFNfVU18UFNfV09F DQorCXdzcglhMywgUFMNCisJcnN5bmMNCisNCisNCisJLyoNCisJICogIERvIGFueSBpbml0aWFs aXphdGlvbiB0aGF0IGFmZmVjdHMgdGhlIG1lbW9yeSBtYXAsIHN1Y2ggYXMNCisJICogIHNldHRp bmcgdXAgVExCIGVudHJpZXMsIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgd2UgY2FuDQor CSAqICBzdWNjZXNzZnVsbHkgY2xlYXIgQlNTIChlLmcuIGlmIHNvbWUgQlNTIHNlZ21lbnRzIGFy ZSBpbg0KKwkgKiAgcmVtYXBwZWQgYXJlYXMpLg0KKwkgKg0KKwkgKiAgTk9URTogIFRoaXMgaG9v ayB3b3JrcyB3aGVyZSB0aGUgcmVzZXQgdmVjdG9yIGRvZXMgbm90IHVucGFjaw0KKwkgKiAgc2Vn bWVudHMgKHNlZSAiUk9NIHBhY2tpbmciIGluIHRoZSBMU1AgbWFudWFsKSwgb3Igd2hlcmUNCisJ ICogIHVucGFja2luZyBvZiBzZWdtZW50cyBpcyBub3QgYWZmZWN0ZWQgYnkgbWVtb3J5IHJlbWFw cGluZy4NCisJICogIElmIFJPTSB1bnBhY2tpbmcgaXMgYWZmZWN0ZWQsIFRMQiBzZXR1cCBtdXN0 IGJlIGRvbmUgaW4NCisJICogIGFzc2VtYmxlciBmcm9tIHRoZSByZXNldCB2ZWN0b3IuDQorCSAq DQorCSAqICBUaGUgX19tZW1tYXBfaW5pdCgpIHJvdXRpbmUgY2FuIGJlIGEgQyBmdW5jdGlvbiwg aG93ZXZlciBpdA0KKwkgKiAgZG9lcyBub3QgaGF2ZSBCU1MgaW5pdGlhbGl6ZWQhICBJbiBwYXJ0 aWN1bGFyLCBfX21lbW1hcF9pbml0KCkNCisJICogIGNhbm5vdCBzZXQgQlNTIHZhcmlhYmxlcywg aS5lLiB1bmluaXRpYWxpemVkIGdsb2JhbCB2YXJpYWJsZXMNCisJICogICh0aGV5J2xsIGJlIHdp cGVkIG91dCBieSB0aGUgZm9sbG93aW5nIEJTUyBjbGVhciksIG5vciBjYW4gaXQNCisJICogIGFz c3VtZSB0aGV5IGFyZSB5ZXQgaW5pdGlhbGl6ZWQgdG8gemVyby4NCisJICoNCisJICogIFRoZSBf X21lbW1hcF9pbml0KCkgZnVuY3Rpb24gaXMgb3B0aW9uYWwuICBJdCBpcyBtYXJrZWQgYXMgYQ0K KwkgKiAgd2VhayBzeW1ib2wsIHNvIHRoYXQgaXQgZ2V0cyB2YWx1ZWQgemVybyBpZiBub3QgZGVm aW5lZC4NCisJICovDQorCS53ZWFrCV9fbWVtbWFwX2luaXQNCisJbW92aQlhNCwgX19tZW1tYXBf aW5pdA0KKwliZXF6CWE0LCAxZg0KKwlDQUxMWAlhNA0KKzE6DQorDQorCS8qDQorCSAqICBDbGVh ciB0aGUgQlNTICh1bmluaXRpYWxpemVkIGRhdGEpIHNlZ21lbnRzLg0KKwkgKiAgVGhpcyBjb2Rl IHN1cHBvcnRzIG11bHRpcGxlIHplcm9lZCBzZWN0aW9ucyAoKi5ic3MpLg0KKwkgKg0KKwkgKi8N CisJbW92aQlhNiwgX19ic3Nfc3RhcnQNCisJbW92aQlhOCwgX2VuZA0KKwlzdWIJYTgsIGE4LCBh Ng0KKwltb3ZpCWE3LCAwDQorCUNBTEwJbWVtc2V0DQorDQorCS8qIG5lZWQgdG8gaW5pdCByZWVu dF9zIGJlZm9yZSBlbnRlcmluZyBleGl0ICovDQorCUNBTEwJX19pbml0cmVlbnQNCisNCisJLyog aW5pdCBzZW1paG9zdGluZyBpZiBoYXMgZnVuY3Rpb24gKi8NCisJLndlYWsgX19zZW1paG9zdGlu Z19pbml0DQorCW1vdmkJYTQsIF9fc2VtaWhvc3RpbmdfaW5pdA0KKwliZXF6CWE0LCAyZg0KKwlD QUxMWAlhNA0KKzI6DQorDQorCS8vICBXZSBjYW4gbm93IGNhbGwgQyBjb2RlLCB0aGUgQyBjYWxs aW5nIGVudmlyb25tZW50IGhhcyBiZWVuIGluaXRpYWxpemVkLg0KKwkvLw0KKwkvLyAgRnJvbSB0 aGlzIHBvaW50IG9uLCB3ZSB1c2UgQUJJLXNwZWNpZmljIG1hY3JvcyB0byByZWZlciB0byByZWdp c3RlcnMgYTAgLi4gYTE1DQorCS8vICAoQVJHIykuDQorDQorDQorCS50eXBlCWJvYXJkX2luaXQs IEBmdW5jdGlvbg0KKwkudHlwZQlfX2NsaWJyYXJ5X2luaXQsIEBmdW5jdGlvbg0KKwkudHlwZQll eGl0LCBAZnVuY3Rpb24NCisNCisNCisJLy8gIEluaXRpYWxpemUgdGhlIGJvYXJkIChlZy4gVUFS VCwgZXRjKS4NCisJQ0FMTAlib2FyZF9pbml0DQorDQorCS8qDQorCSAqICBDYWxsIF9fY2xpYnJh cnlfaW5pdCB0byBpbml0aWFsaXplIHRoZSBDIGxpYnJhcnk6DQorCSAqDQorCSAqICB2b2lkIF9f Y2xpYnJhcnlfaW5pdChpbnQgYXJnYywgY2hhciAqKiBhcmd2LCBjaGFyICoqIGVudmlyb24sDQor CSAqCQl2b2lkKCppbml0X2Z1bmMpKHZvaWQpLCB2b2lkKCpmaW5pX2Z1bmMpKHZvaWQpKTsNCisJ ICovDQorDQorCS8vICBQYXNzIGFuIGVtcHR5IGFyZ3YgYXJyYXksIHdpdGggYW4gZW1wdHkgc3Ry aW5nIGFzIHRoZSBwcm9ncmFtIG5hbWUuDQorDQorCS53ZWFrIF9pbml0DQorCS53ZWFrIF9maW5p DQorCW1vdmkJQVJHMSwgX3N0YXJ0X2FyZ2MJLy8gYXJnYyBhZGRyZXNzDQorCW1vdmkJQVJHMiwg X3N0YXJ0X2FyZ3YJLy8gYXJndiA9IFsiIiwgMF0NCisJbW92aQlBUkczLCBfc3RhcnRfZW52cAkv LyBlbnZwID0gWzBdDQorCW1vdmkgCUFSRzQsIF9pbml0CQkvLyBmdW5jdGlvbiB0aGF0IGNhbGxz IGNvbnN0cnVjdG9ycw0KKwltb3ZpCUFSRzUsIF9maW5pCQkvLyBmdW5jdGlvbiB0aGF0IGNhbGxz IGRlc3RydWN0b3JzDQorCWwzMmkJQVJHMSwgQVJHMSwgMAkJLy8gYXJnYyA9IDENCisJQ0FMTAlf X2NsaWJyYXJ5X2luaXQNCisNCisJLy8gIENhbGw6ICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KiogYXJndiwgY2hhciAqKiBlbnZpcm9uKTsNCisJbW92aQlBUkcxLCBfc3RhcnRfYXJnYwkvLyBh cmdjIGFkZHJlc3MNCisJbW92aQlBUkcyLCBfc3RhcnRfYXJndgkvLyBhcmd2ID0gWyIiLCAwXQ0K Kwltb3ZpCUFSRzMsIF9zdGFydF9lbnZwCS8vIGVudnAgPSBbMF0NCisJbDMyaQlBUkcxLCBBUkcx LCAwCQkvLyBhcmdjID0gMQ0KKwlDQUxMCW1haW4NCisJLy8gIFRoZSByZXR1cm4gdmFsdWUgaXMg dGhlIHNhbWUgcmVnaXN0ZXIgYXMgdGhlIGZpcnN0IG91dGdvaW5nIGFyZ3VtZW50Lg0KKwlDQUxM CWV4aXQJCQkvLyBleGl0IHdpdGggbWFpbidzIHJldHVybiB2YWx1ZQ0KKwkvLyBEb2VzIG5vdCBy ZXR1cm4gaGVyZS4NCisNCisJLmRhdGENCisJLy8gIE1hcmsgYXJnYy9hcmd2L2VudnAgcGFyYW1l dGVycyBhcyB3ZWFrIHNvIHRoYXQgYW4gZXh0ZXJuYWwNCisJLy8gIG9iamVjdCBmaWxlIGNhbiBv dmVycmlkZSB0aGVtLg0KKwkud2Vhawlfc3RhcnRfYXJnYywgX3N0YXJ0X2FyZ3YsIF9zdGFydF9l bnZwDQorCS5hbGlnbgk0DQorX3N0YXJ0X2FyZ3Y6DQorCS53b3JkCV9zdGFydF9udWxsCS8vIGVt cHR5IHByb2dyYW0gbmFtZQ0KK19zdGFydF9udWxsOg0KK19zdGFydF9lbnZwOg0KKwkud29yZAkw CQkvLyBlbmQgb2YgYXJndiBhcnJheSwgZW1wdHkgc3RyaW5nLCBlbXB0eSBlbnZpcm9uDQorX3N0 YXJ0X2FyZ2M6DQorCS53b3JkCTEJCS8vIG9uZSBhcmd1bWVudCAocHJvZ3JhbSBuYW1lKQ0KKwku dGV4dA0KKw0KKwkuc2l6ZQlfc3RhcnQsIC4gLSBfc3RhcnQNCisNCmRpZmYgLS1naXQgYS9saWJn bG9zcy94dGVuc2EvY3J0MS1zaW0uUyBiL2xpYmdsb3NzL3h0ZW5zYS9jcnQxLXNpbS5TDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi5hNDZkYjcyNjgNCi0tLSAvZGV2L251 bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9jcnQxLXNpbS5TDQpAQCAtMCwwICsxLDIwNCBAQA0K Ky8vIGNydDEtc2ltLlMNCisvLyBGb3IgdGhlIFh0ZW5zYSBzaW11bGF0b3IgdGFyZ2V0LCB0aGlz IGNvZGUgc2V0cyB1cCB0aGUgQyBjYWxsaW5nIGNvbnRleHQNCisvLyBhbmQgY2FsbHMgbWFpbigp ICAodmlhIF9fY2xpYnJhcnlfc3RhcnQpLg0KKy8vIENvbnRyb2wgYXJyaXZlcyBoZXJlIGF0IF9z dGFydCBmcm9tIHRoZSByZXNldCB2ZWN0b3Igb3IgZnJvbSBjcnQwLWFwcC5TLg0KKw0KKy8vIENv cHlyaWdodCAoYykgMTk5OC0yMDEyIFRlbnNpbGljYSBJbmMuDQorLy8NCisvLyBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcNCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUNCisvLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KKy8vIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0bw0KKy8vIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0bw0KKy8vIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisv Lw0KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkDQorLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorLy8NCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCisvLyBFWFBSRVNTIE9S IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YN CisvLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuDQorLy8gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkNCisvLyBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULA0KKy8v IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFDQorLy8gU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuDQorDQorI2luY2x1ZGUgPHN5c2NhbGxzLmg+DQorI2luY2x1ZGUgPHh0ZW5z YS9jb3JlYml0cy5oPg0KKyNpbmNsdWRlIDx4dGVuc2EvY29uZmlnL2NvcmUtaXNhLmg+DQorDQor Ly8gRXhwb3J0cw0KKy5nbG9iYWwgX3N0YXJ0DQorDQorLy8gSW1wb3J0cw0KKy8vICAgX19jbGli cmFyeV9pbml0CWZyb20gQyBsaWJyYXJ5IChlZy4gbmV3bGliIG9yIHVjbGliYykNCisvLyAgIGV4 aXQJCWZyb20gQyBsaWJyYXJ5DQorLy8gICBtYWluCQlmcm9tIHVzZXIgYXBwbGljYXRpb24NCisv LyAgIF9fc3RhY2sJCWZyb20gbGlua2VyIHNjcmlwdCAoc2VlIExTUCBSZWYgTWFudWFsKQ0KKw0K Ky50eXBlCV9fY2xpYnJhcnlfaW5pdCwgQGZ1bmN0aW9uDQorLnR5cGUJbWFpbiwgQGZ1bmN0aW9u DQorLnR5cGUJZXhpdCwgQGZ1bmN0aW9uDQorDQorIyBkZWZpbmUgQ0FMTAljYWxsNA0KKyMgZGVm aW5lIENBTExYCWNhbGx4NA0KKyMgZGVmaW5lIEFSRzEJYTYJLyogMXN0IG91dGdvaW5nIGNhbGwg YXJndW1lbnQgKi8NCisjIGRlZmluZSBBUkcyCWE3CS8qIDJuZCBvdXRnb2luZyBjYWxsIGFyZ3Vt ZW50ICovDQorIyBkZWZpbmUgQVJHMwlhOAkvKiAzcmQgb3V0Z29pbmcgY2FsbCBhcmd1bWVudCAq Lw0KKyMgZGVmaW5lIEFSRzQJYTkJLyogNHRoIG91dGdvaW5nIGNhbGwgYXJndW1lbnQgKi8NCisj IGRlZmluZSBBUkc1CWExMAkvKiA1dGggb3V0Z29pbmcgY2FsbCBhcmd1bWVudCAqLw0KKw0KKwkJ LmRhdGENCisJCS53ZWFrCV9zdGFydF9lbnZwCS8vIGFsbG93IG92ZXJyaWRpbmcNCisJCS5hbGln bgk0DQorX3N0YXJ0X2VudnA6CS53b3JkCTAJCS8vIGVtcHR5IGVudmlyb24NCisNCisJLnRleHQN CisJLmFsaWduIDQNCisNCitfc3RhcnQ6DQorCS8vICBfc3RhcnQgaXMgdHlwaWNhbGx5IE5PVCBh dCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IHNlZ21lbnQgLS0NCisJLy8gIGl0IGlzIGFsd2F5 cyBjYWxsZWQgZnJvbSBlaXRoZXIgdGhlIHJlc2V0IHZlY3RvciBvciBvdGhlciBjb2RlDQorCS8v ICB0aGF0IGRvZXMgZXF1aXZhbGVudCBpbml0aWFsaXphdGlvbiAoc3VjaCBhcyBjcnQwLWFwcC5T KS4NCisJLy8NCisJLy8gIEFzc3VtcHRpb25zIG9uIGVudHJ5IHRvIF9zdGFydDoNCisJLy8JLSBs b3cgKGxldmVsLW9uZSkgYW5kIG1lZGl1bSBwcmlvcml0eSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxl ZA0KKwkvLwkgIHZpYSBQUy5JTlRMRVZFTCBhbmQvb3IgSU5URU5BQkxFIChQUy5JTlRMRVZFTCBp cyBleHBlY3RlZCB0bw0KKwkvLwkgIGJlIHplcm9lZCwgdG8gcG90ZW50aWFsbHkgZW5hYmxlIHRo ZW0sIGJlZm9yZSBjYWxsaW5nIG1haW4pDQorCS8vCS0gQyBjYWxsaW5nIGNvbnRleHQgbm90IGlu aXRpYWxpemVkOg0KKwkvLwkgIC0gUFMgbm90IGluaXRpYWxpemVkDQorCS8vCSAgLSBTUCBub3Qg aW5pdGlhbGl6ZWQNCisJLy8JLSB0aGUgZm9sbG93aW5nIGFyZSBpbml0aWFsaXplZDoNCisJLy8J ICAtIExJVEJBU0UsIGNhY2hlIGF0dHJpYnV0ZXMsIFdpbmRvd0Jhc2UsIFdpbmRvd1N0YXJ0LA0K KwkvLwkgICAgQ1BFTkFCTEUsIEZQJ3MgRkNSIGFuZCBGU1IsIEVYQ1NBVkVbbl0NCisNCisJLy8g S2VlcCBhMCB6ZXJvLiAgSXQgaXMgdXNlZCB0byBpbml0aWFsaXplIGEgZmV3IHRoaW5ncy4NCisJ Ly8gSXQgaXMgYWxzbyB0aGUgcmV0dXJuIGFkZHJlc3MsIHdoZXJlIHplcm8gaW5kaWNhdGVzDQor CS8vIHRoYXQgdGhlIGZyYW1lIHVzZWQgYnkgX3N0YXJ0IGlzIHRoZSBib3R0b21tb3N0IGZyYW1l Lg0KKwkvLw0KKwltb3ZpCWEwLCAwCQkvLyBrZWVwIHRoaXMgcmVnaXN0ZXIgemVyby4NCisNCisJ d3NyCWEwLCBJTlRFTkFCTEUJLy8gSU5URU5BQkxFIHZhbHVlIGlzIG5vdCBkZWZpbmVkIGFmdGVy IHJlc2V0Lg0KKwkJCQkvL21ha2Ugc3VyZSB0aGF0IGludGVycnVwdHMgYXJlIHNodXQgb2ZmICgq YmVmb3JlKiB3ZSBsb3dlciBQUy5JTlRMRVZFTCBhbmQgUFMuRVhDTSEpDQorDQorCS8vICBXaW5k b3dlZCByZWdpc3RlciBpbml0LCBzbyB3ZSBjYW4gY2FsbCB3aW5kb3dlZCBjb2RlIChlZy4gQyBj b2RlKS4NCisJbW92aQlhMSwgMQ0KKwl3c3IJYTEsIFdJTkRPV1NUQVJUDQorCS8vICBUaGUgcHJv Y2Vzc29yIGFsd2F5cyBjbGVhcnMgV0lORE9XQkFTRSBhdCByZXNldCwgc28gbm8gbmVlZCB0byBj bGVhciBpdCBoZXJlLg0KKwkvLyAgSXQgcmVzZXRzIFdJTkRPV1NUQVJUIHRvIDEgc3RhcnRpbmcg d2l0aCBMWDIuMC9YNy4wIChSQi0yMDA2LjApLg0KKwkvLyAgSG93ZXZlciwgYXNzdW1pbmcgaGFy ZCByZXNldCBpcyBub3QgeWV0IGFsd2F5cyBwcmFjdGljYWwsIHNvIGRvIHRoaXMgYW55d2F5Og0K Kwl3c3IJYTAsIFdJTkRPV0JBU0UNCisJcnN5bmMNCisNCisJLy8gU2V0IFZFQ0JBU0UgdG8gdXNl IG91ciB2ZWN0b3JzIGluc3RlYWQgdmVjdG9ycyBpbiBST00NCisJbW92aQlhMSwgX3ZlY3Rvcl90 YWJsZQ0KKwl3c3IJYTEsIFZFQ0JBU0UNCisNCisNCisJLy8gUnVuIG9ubHkgb25lIGNvcmUNCisJ Ly8gTXVsdGktdGhyZWFkaW5nIGNvdWxkIGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUNCisJcnNyLnBy aWQgYTEJCS8vIGNvcmUgYW5kIG11bHRpcHJvY2Vzc29yIElEDQorCWV4dHVpCWExLCBhMSwgMTMs IDEJLy8gZXh0cmFjdCBjb3JlIElEDQorCWJlcXoJYTEsIC5MY29yZTAJLy8gZ290byBMY29yZTAg Zm9yIGNvcmUwIG9ubHkNCisuTHN1c3BlbmQ6CQkJLy8gb3RoZXIgY29yZXMgYXJlIHN1c3BlbmRl ZA0KKwl3YWl0aQkwDQorCWoJLkxzdXNwZW5kDQorDQorLkxjb3JlMDoNCisJLy8gSW5pdGlhbGl6 ZSB0aGUgc3RhY2sgcG9pbnRlci4NCisJLy8gU2VlIHRoZSAiQUJJIGFuZCBTb2Z0d2FyZSBDb252 ZW50aW9ucyIgY2hhcHRlciBpbiB0aGUNCisJLy8gWHRlbnNhIElTQSBSZWZlcmVuY2UgbWFudWFs IGZvciBkZXRhaWxzLg0KKw0KKwkvLyBOT1RFOiBCZWNhdXNlIHRoZSBfc3RhcnQgcm91dGluZSBk b2VzIG5vdCB1c2UgYW55IG1lbW9yeSBpbiBpdHMNCisJLy8gc3RhY2sgZnJhbWUsIGFuZCBiZWNh dXNlIGFsbCBvZiBpdHMgQ0FMTCBpbnN0cnVjdGlvbnMgdXNlIGENCisJLy8gd2luZG93IHNpemUg b2YgNCwgdGhlIHN0YWNrIGZyYW1lIGZvciBfc3RhcnQgY2FuIGJlIGVtcHR5Lg0KKwltb3ZpCXNw LCBfX3N0YWNrDQorDQorCS8vIHJlc2VydmUgc3RhY2sgc3BhY2UgZm9yDQorCS8vICAgIC0gYXJn diBhcnJheQ0KKwkvLyAgICAtIGFyZ3VtZW50IHN0cmluZ3MNCisJbW92aQlhMiwgU1lTX2FyZ3Zf c2l6ZQ0KKwlzaW1jYWxsCQkvLyByZXR1cm5zIHNpemUgb2YgYXJndltdICsgaXRzIHN0cmluZ3Mg aW4gYTINCisNCisJLy8gVGhlIHN0YWNrIG9ubHkgbmVlZHMgMTYtYnl0ZSBhbGlnbm1lbnQuDQor CS8vIEhvd2V2ZXIsIGhlcmUgd2Ugcm91bmQgdXAgdGhlIGFyZ3Ygc2l6ZSBmdXJ0aGVyIHRvIDEy OCBieXRlIG11bHRpcGxlcw0KKwkvLyBzbyB0aGF0IGluIG1vc3QgY2FzZXMsIHZhcmlhdGlvbnMg aW4gYXJndlswXSdzIHBhdGggZG8gbm90IHJlc3VsdCBpbg0KKwkvLyBkaWZmZXJlbnQgc3RhY2sg YWxsb2NhdGlvbi4gIE90aGVyd2lzZSwgc3VjaCB2YXJpYXRpb25zIGNhbiBpbXBhY3QNCisJLy8g ZXhlY3V0aW9uIHRpbWluZyAoZWcuIGR1ZSB0byBjYWNoZSBlZmZlY3RzIGV0YykgZm9yIHRoZSBz YW1lIGNvZGUgYW5kIGRhdGEuDQorCS8vIElmIHdlIGhhdmUgYSBQSUYsIGl0J3MgbW9yZSBsaWtl bHkgdGhlIGV4dHJhIHJlcXVpcmVkIHNwYWNlIGlzIG9rYXkuDQorCWFkZGkJYTIsIGEyLCAxMjcN CisJc3JsaQlhMiwgYTIsIDcNCisJc2xsaQlhMiwgYTIsIDcNCisNCisJLy8gTm8gbmVlZCB0byB1 c2UgTU9WU1AgYmVjYXVzZSB3ZSBoYXZlIG5vIGNhbGxlciAod2UncmUgdGhlDQorCS8vIGJhc2Ug Y2FsbGVyKTsgaW4gZmFjdCBpdCdzIGJldHRlciBub3QgdG8gdXNlIE1PVlNQIGluIHRoaXMNCisJ Ly8gY29udGV4dCwgdG8gYXZvaWQgdW5uZWNlc3NhcnkgQUxMT0NBIGV4Y2VwdGlvbnMgYW5kIGNv cHlpbmcNCisJLy8gZnJvbSB1bmRlZmluZWQgbWVtb3J5Og0KKwkvLyAgIHN1YiAgICAgYTMsIHNw LCBhMg0KKwkvLyAgIG1vdnNwICAgc3AsIGEzDQorCXN1YglzcCwgc3AsIGEyDQorDQorCS8qDQor CSAqICBOb3cgdGhhdCBzcCAoYTEpIGlzIHNldCwgd2UgY2FuIHNldCBQUyBhcyBwZXIgdGhlIGFw cGxpY2F0aW9uDQorCSAqICAodXNlciB2ZWN0b3IgbW9kZSwgZW5hYmxlIGludGVycnVwdHMsIGVu YWJsZSB3aW5kb3cgZXhjZXB0aW9ucyBpZiBhcHBsaWNhYmxlKS4NCisJICovDQorCW1vdmkJYTMs IFBTX1VNfFBTX1dPRQkvLyBQUy5XT0UgPSAxLCBQUy5VTSA9IDEsIFBTLkVYQ00gPSAwLCBQUy5J TlRMRVZFTCA9IDANCisJd3NyCWEzLCBQUw0KKwlyc3luYw0KKw0KKwkjaWYgWENIQUxfSEFWRV9G UCB8fCBYQ0hBTF9IQVZFX0RGUA0KKwltb3ZpCWEzLCAxDQorCXdzcglhMywgQ1BFTkFCTEUNCisJ I2VuZGlmDQorDQorMToNCisNCisJLyoNCisJICogIENsZWFyIHRoZSBCU1MgKHVuaW5pdGlhbGl6 ZWQgZGF0YSkgc2VnbWVudHMuDQorCSAqICBUaGlzIGNvZGUgc3VwcG9ydHMgbXVsdGlwbGUgemVy b2VkIHNlY3Rpb25zICgqLmJzcykuDQorCSAqICBGb3Igc3BlZWQsIHdlIGNsZWFyIG1lbW9yeSB1 c2luZyBhbiBJU1Mgc2ltY2FsbA0KKwkgKiAgKHNlZSBjcnQxLWJvYXJkcy5TIGZvciBtb3JlIGdl bmVyaWMgQlNTIGNsZWFyaW5nIGNvZGUpLg0KKwkgKi8NCisJbW92aQlhNiwgX19ic3Nfc3RhcnQN CisJbW92aQlhNywgX2VuZA0KKwliZ2V1CWE2LCBhNywgLkxub2Jzcw0KKy5MYnNzbG9vcDoNCisJ bW92aQlhMiwgU1lTX21lbXNldA0KKwlsMzJpCWEzLCBhNiwgMAkvLyBhcmcxID0gZmlsbCBzdGFy dCBhZGRyZXNzDQorCW1vdmkJYTQsIDAJCS8vIGFyZzIgPSBmaWxsIHBhdHRlcm4NCisJbDMyaQlh NSwgYTYsIDQJLy8gZ2V0IGVuZCBhZGRyZXNzDQorCWFkZGkJYTYsIGE2LCA4CS8vIG5leHQgYnNz IHRhYmxlIGVudHJ5DQorCXN1YglhNSwgYTUsIGEzCS8vIGFyZzMgPSBmaWxsIHNpemUgaW4gYnl0 ZXMNCisJc2ltY2FsbAkJCS8vIG1lbXNldChhMyxhNCxhNSkNCisJYmx0dQlhNiwgYTcsIC5MYnNz bG9vcAkvLyBsb29wIHVudGlsIGVuZCBvZiBic3MgdGFibGUNCisuTG5vYnNzOg0KKw0KKwkvKiBu ZWVkIHRvIGluaXQgcmVlbnRfcyBiZWZvcmUgZW50ZXJpbmcgZXhpdCAqLw0KKwlDQUxMCV9faW5p dHJlZW50DQorDQorCW1vdglhMywgc3AJCQkvLyB0ZWxsIHNpbWNhbGwgd2hlcmUgdG8gd3JpdGUg YXJndltdDQorCW1vdmkJYTIsIFNZU19hcmd2DQorCXNpbWNhbGwJCQkvLyB3cml0ZSBhcmd2W10g YXJyYXkgYXQgYTMNCisNCisJbW92aQlhMiwgU1lTX2FyZ2MNCisJc2ltY2FsbAkJCS8vIHB1dCBh cmdjIGluIGEyDQorDQorCS53ZWFrCV9pbml0DQorCS53ZWFrCV9maW5pDQorCW1vdglBUkcyLCBz cAkJLy8gYXJndg0KKwltb3ZpCUFSRzMsIF9zdGFydF9lbnZwCS8vIGVudnANCisJbW92aQlBUkc0 LCBfaW5pdAkJLy8gX2luaXQNCisJbW92aQlBUkc1LCBfZmluaQkJLy8gX2ZpbmkNCisJQ0FMTAlf X2NsaWJyYXJ5X2luaXQNCisNCisJbW92CUFSRzEsIGEyCQkvLyBhcmdjDQorCW1vdglBUkcyLCBz cAkJLy8gYXJndg0KKwlDQUxMCW1haW4NCisNCisJLy8gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhl IHNhbWUgcmVnaXN0ZXIgYXMgdGhlIGZpcnN0IG91dGdvaW5nIGFyZ3VtZW50Lg0KKwlDQUxMCWV4 aXQJCQkvLyBleGl0IHdpdGggbWFpbidzIHJldHVybiB2YWx1ZQ0KKwkvLyBEb2VzIG5vdCByZXR1 cm4gaGVyZS4NCisNCisJLnNpemUJX3N0YXJ0LCAuIC0gX3N0YXJ0DQorDQpkaWZmIC0tZ2l0IGEv bGliZ2xvc3MveHRlbnNhL2RlZmF1bHQuc3BlY3MgYi9saWJnbG9zcy94dGVuc2EvZGVmYXVsdC5z cGVjcw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNjAwMmZlNDUwDQot LS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2EvZGVmYXVsdC5zcGVjcw0KQEAgLTAs MCArMSwyIEBADQorKmxpYjoNCistbGMgLWxub3N5cyAtbGMNCmRpZmYgLS1naXQgYS9saWJnbG9z cy94dGVuc2EvaW5jbHVkZS9yZWdpc3Rlcl9hY2Nlc3MuaCBiL2xpYmdsb3NzL3h0ZW5zYS9pbmNs dWRlL3JlZ2lzdGVyX2FjY2Vzcy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwLi5jYzA2MDYxOGUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9pbmNs dWRlL3JlZ2lzdGVyX2FjY2Vzcy5oDQpAQCAtMCwwICsxLDcgQEANCisjaWZuZGVmIFJFR0lTVEVS X0FDQ0VTU19IDQorI2RlZmluZSBSRUdJU1RFUl9BQ0NFU1NfSA0KKw0KKyNkZWZpbmUgV1JJVEVf UkVHSVNURVIoYWRkciwgdmFsKSAoKigodm9sYXRpbGUgdWludDMyX3QgKikoYWRkcikpKSA9ICh1 aW50MzJfdCkodmFsKQ0KKyNkZWZpbmUgUkVBRF9SRUdJU1RFUihhZGRyKSAoKigodm9sYXRpbGUg dWludDMyX3QgKikoYWRkcikpKQ0KKw0KKyNlbmRpZiAvLyBSRUdJU1RFUl9BQ0NFU1NfSA0KZGlm ZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9pbmNsdWRlL3N5c2NhbGxzLmggYi9saWJnbG9zcy94 dGVuc2EvaW5jbHVkZS9zeXNjYWxscy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwLi5kZDI5N2Q5NmUNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS9p bmNsdWRlL3N5c2NhbGxzLmgNCkBAIC0wLDAgKzEsNTkgQEANCisjaWZuZGVmIFhURU5TQV9TSU1D QUxMX0gNCisjZGVmaW5lIFhURU5TQV9TSU1DQUxMX0gNCisNCisjaWZkZWYgT1BFTk9DRF9TRU1J SE9TVElORw0KKy8qIFRoaXMgZGF0YSBiYXNlZCBvbiBsaWJnbG9zcyBwcm9qZWN0IChmaWxlIGFh cmNoNjQvc3ZjLmgpICovDQorDQorI2RlZmluZSBFU1BfU0VNSUhPU1RJTkdfU1lTX0RSVl9JTkZP IDB4MTAwDQorI2RlZmluZSBBRFBfU1RPUFBFRF9BUFBMSUNBVElPTl9FWElUIDB4MjAwMjYNCisN CisjZGVmaW5lIFNZU19jbG9zZQkweDAyDQorI2RlZmluZSBTWVNfY2xvY2sJMHgxMA0KKyNkZWZp bmUgU1lTX2VsYXBzZWQJMHgzMA0KKyNkZWZpbmUgU1lTX2Vycm5vCTB4MTMNCisjZGVmaW5lIFNZ U19leGl0CTB4MTgNCisjZGVmaW5lIFNZU19leGl0X2V4dGVuZGVkCTB4MjANCisjZGVmaW5lIFNZ U19mbGVuCTB4MEMNCisjZGVmaW5lIFNZU19nZXRfY21kbGluZQkweDE1DQorI2RlZmluZSBTWVNf aGVhcGluZm8JMHgxNg0KKyNkZWZpbmUgU1lTX2lzZXJyb3IJMHgwOA0KKyNkZWZpbmUgU1lTX2lz dHR5CTB4MDkNCisjZGVmaW5lIFNZU19vcGVuCTB4MDENCisjZGVmaW5lIFNZU19yZWFkCTB4MDYN CisjZGVmaW5lIFNZU19yZWFkYwkweDA3DQorI2RlZmluZSBTWVNfcmVtb3ZlCTB4MEUNCisjZGVm aW5lIFNZU19yZW5hbWUJMHgwRg0KKyNkZWZpbmUgU1lTX2xzZWVrCTB4MEENCisjZGVmaW5lIFNZ U19zeXN0ZW0JMHgxMg0KKyNkZWZpbmUgU1lTX3RpY2tmcmVxCTB4MzENCisjZGVmaW5lIFNZU190 aW1lCTB4MTENCisjZGVmaW5lIFNZU190bXBuYW0JMHgwRA0KKyNkZWZpbmUgU1lTX3dyaXRlCTB4 MDUNCisjZGVmaW5lIFNZU193cml0ZWMJMHgwMw0KKyNkZWZpbmUgU1lTX3dyaXRlMAkweDA0DQor DQorI2Vsc2UNCisNCisvKiBUaGlzIGRhdGEgYmFzZWQgb24gUUVNVSBwcm9qZWN0IChmaWxlIHRh cmdldC94dGVuc2EveHRlbnNhLXNlbWkuYykgKi8NCisNCisjZGVmaW5lIFNZU19leGl0CTENCisj ZGVmaW5lIFNZU19yZWFkCTMNCisjZGVmaW5lIFNZU193cml0ZQk0DQorI2RlZmluZSBTWVNfb3Bl bgk1DQorI2RlZmluZSBTWVNfY2xvc2UJNg0KKyNkZWZpbmUgU1lTX2xzZWVrCTE5DQorI2RlZmlu ZSBTWVNfc2VsZWN0X29uZQkyOQ0KKyNkZWZpbmUgU1lTX3NlbmR0bwkyNw0KKyNkZWZpbmUgU1lT X3JlY3Zmcm9tCTI4DQorI2RlZmluZSBTWVNfc2VsZWN0X29uZSAyOQ0KKyNkZWZpbmUgU1lTX2Jp bmQJMzANCisjZGVmaW5lIFNZU19pb2N0bAkzMQ0KKw0KKyNkZWZpbmUgU1lTX2FyZ2MJMTAwMA0K KyNkZWZpbmUgU1lTX2FyZ3Zfc2l6ZQkxMDAxDQorI2RlZmluZSBTWVNfYXJndgkxMDAyDQorI2Rl ZmluZSBTWVNfbWVtc2V0CTEwMDQNCisNCisjZW5kaWYgLyogT1BFTk9DRF9TRU1JSE9TVElORyAq Lw0KKw0KKyNlbmRpZiAvKiAhWFRFTlNBX1NJTUNBTExfSCAqLw0KZGlmZiAtLWdpdCBhL2xpYmds b3NzL3h0ZW5zYS9pbmNsdWRlL3h0ZW5zYS9jb3JlYml0cy5oIGIvbGliZ2xvc3MveHRlbnNhL2lu Y2x1ZGUveHRlbnNhL2NvcmViaXRzLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAuLjQ0NWUzMzQ5NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL2lu Y2x1ZGUveHRlbnNhL2NvcmViaXRzLmgNCkBAIC0wLDAgKzEsMTg2IEBADQorLyoNCisgKiB4dGVu c2EvY29yZWJpdHMuaCAtIFh0ZW5zYSBTcGVjaWFsIFJlZ2lzdGVyIGZpZWxkIHBvc2l0aW9ucywg bWFza3MsIHZhbHVlcy4NCisgKg0KKyAqIChJbiBwcmV2aW91cyByZWxlYXNlcywgdGhlc2Ugd2Vy ZSBkZWZpbmVkIGluIHNwZWNyZWcuaCwgYSBnZW5lcmF0ZWQgZmlsZS4NCisgKiAgVGhpcyBmaWxl IGlzIG5vdCBnZW5lcmF0ZWQsIGllLiBpdCBpcyBwcm9jZXNzb3IgY29uZmlndXJhdGlvbiBpbmRl cGVuZGVudC4pDQorICovDQorDQorLyogJElkOiAvL2RlcG90L3JlbC9FYWdsZW5lc3QvWHRlbnNh L09TL2luY2x1ZGUveHRlbnNhL2NvcmViaXRzLmgjMiAkICovDQorDQorLyoNCisgKiBDb3B5cmln aHQgKGMpIDIwMDUtMjAxMSBUZW5zaWxpY2EgSW5jLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nDQor ICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlDQorICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZw0KKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCisgKiBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8N CisgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8NCisgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz aGFsbCBiZSBpbmNsdWRlZA0KKyAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQorICogRVhQUkVTUyBPUiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQorICog TUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULg0KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZDQorICogQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwNCisgKiBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRQ0KKyAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLg0KKyAqLw0KKw0KKyNpZm5kZWYgWFRFTlNBX0NPUkVCSVRTX0gNCisjZGVmaW5lIFhU RU5TQV9DT1JFQklUU19IDQorDQorLyogIEVYQ0NBVVNFIHJlZ2lzdGVyIGZpZWxkczogICovDQor I2RlZmluZSBFWENDQVVTRV9FWENDQVVTRV9TSElGVAkwDQorI2RlZmluZSBFWENDQVVTRV9FWEND QVVTRV9NQVNLCTB4M0YNCisvKiAgRVhDQ0FVU0UgcmVnaXN0ZXIgdmFsdWVzOiAgKi8NCisvKg0K KyAqICBHZW5lcmFsIEV4Y2VwdGlvbiBDYXVzZXMNCisgKiAgKHZhbHVlcyBvZiBFWENDQVVTRSBz cGVjaWFsIHJlZ2lzdGVyIHNldCBieSBnZW5lcmFsIGV4Y2VwdGlvbnMsDQorICogICB3aGljaCB2 ZWN0b3IgdG8gdGhlIHVzZXIsIGtlcm5lbCwgb3IgZG91YmxlLWV4Y2VwdGlvbiB2ZWN0b3JzKS4N CisgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0lMTEVHQUwJCTAJLyogSWxsZWdhbCBJbnN0cnVjdGlv biAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfU1lTQ0FMTAkJMQkvKiBTeXN0ZW0gQ2FsbCAoU1lTQ0FM TCBpbnN0cnVjdGlvbikgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0lOU1RSX0VSUk9SCQkyCS8qIElu c3RydWN0aW9uIEZldGNoIEVycm9yICovDQorIyBkZWZpbmUgRVhDQ0FVU0VfSUZFVENIRVJST1IJ CTIJLyogKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgbWFjcm8sIGRlcHJlY2F0ZWQsIGF2b2lkKSAq Lw0KKyNkZWZpbmUgRVhDQ0FVU0VfTE9BRF9TVE9SRV9FUlJPUgkzCS8qIExvYWQgU3RvcmUgRXJy b3IgKi8NCisjIGRlZmluZSBFWENDQVVTRV9MT0FEU1RPUkVFUlJPUgkzCS8qIChiYWNrd2FyZCBj b21wYXRpYmlsaXR5IG1hY3JvLCBkZXByZWNhdGVkLCBhdm9pZCkgKi8NCisjZGVmaW5lIEVYQ0NB VVNFX0xFVkVMMV9JTlRFUlJVUFQJNAkvKiBMZXZlbCAxIEludGVycnVwdCAqLw0KKyMgZGVmaW5l IEVYQ0NBVVNFX0xFVkVMMUlOVEVSUlVQVAk0CS8qIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1h Y3JvLCBkZXByZWNhdGVkLCBhdm9pZCkgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0FMTE9DQQkJCTUJ LyogU3RhY2sgRXh0ZW5zaW9uIEFzc2lzdCAoTU9WU1AgaW5zdHJ1Y3Rpb24pIGZvciBhbGxvY2Eg Ki8NCisjZGVmaW5lIEVYQ0NBVVNFX0RJVklERV9CWV9aRVJPCQk2CS8qIEludGVnZXIgRGl2aWRl IGJ5IFplcm8gKi8NCisjZGVmaW5lIEVYQ0NBVVNFX1NQRUNVTEFUSU9OCQk3CS8qIFVzZSBvZiBG YWlsZWQgU3BlY3VsYXRpdmUgQWNjZXNzIChub3QgaW1wbGVtZW50ZWQpICovDQorI2RlZmluZSBF WENDQVVTRV9QUklWSUxFR0VECQk4CS8qIFByaXZpbGVnZWQgSW5zdHJ1Y3Rpb24gKi8NCisjZGVm aW5lIEVYQ0NBVVNFX1VOQUxJR05FRAkJOQkvKiBVbmFsaWduZWQgTG9hZCBvciBTdG9yZSAqLw0K Ky8qIFJlc2VydmVkCQkJCTEwLi4xMSAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfSU5TVFJfREFUQV9F UlJPUgkxMgkvKiBQSUYgRGF0YSBFcnJvciBvbiBJbnN0cnVjdGlvbiBGZXRjaCAoUkItMjAweCBh bmQgbGF0ZXIpICovDQorI2RlZmluZSBFWENDQVVTRV9MT0FEX1NUT1JFX0RBVEFfRVJST1IJMTMJ LyogUElGIERhdGEgRXJyb3Igb24gTG9hZCBvciBTdG9yZSAoUkItMjAweCBhbmQgbGF0ZXIpICov DQorI2RlZmluZSBFWENDQVVTRV9JTlNUUl9BRERSX0VSUk9SCTE0CS8qIFBJRiBBZGRyZXNzIEVy cm9yIG9uIEluc3RydWN0aW9uIEZldGNoIChSQi0yMDB4IGFuZCBsYXRlcikgKi8NCisjZGVmaW5l IEVYQ0NBVVNFX0xPQURfU1RPUkVfQUREUl9FUlJPUgkxNQkvKiBQSUYgQWRkcmVzcyBFcnJvciBv biBMb2FkIG9yIFN0b3JlIChSQi0yMDB4IGFuZCBsYXRlcikgKi8NCisjZGVmaW5lIEVYQ0NBVVNF X0lUTEJfTUlTUwkJMTYJLyogSVRMQiBNaXNzIChubyBJVExCIGVudHJ5IG1hdGNoZXMsIGh3IHJl ZmlsbCBhbHNvIG1pc3NlZCkgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0lUTEJfTVVMVElISVQJCTE3 CS8qIElUTEIgTXVsdGloaXQgKG11bHRpcGxlIElUTEIgZW50cmllcyBtYXRjaCkgKi8NCisjZGVm aW5lIEVYQ0NBVVNFX0lOU1RSX1JJTkcJCTE4CS8qIFJpbmcgUHJpdmlsZWdlIFZpb2xhdGlvbiBv biBJbnN0cnVjdGlvbiBGZXRjaCAqLw0KKy8qIFJlc2VydmVkCQkJCTE5ICovCS8qIFNpemUgUmVz dHJpY3Rpb24gb24gSUZldGNoIChub3QgaW1wbGVtZW50ZWQpICovDQorI2RlZmluZSBFWENDQVVT RV9JTlNUUl9QUk9ISUJJVEVECTIwCS8qIENhY2hlIEF0dHJpYnV0ZSBkb2VzIG5vdCBhbGxvdyBJ bnN0cnVjdGlvbiBGZXRjaCAqLw0KKy8qIFJlc2VydmVkCQkJCTIxLi4yMyAqLw0KKyNkZWZpbmUg RVhDQ0FVU0VfRFRMQl9NSVNTCQkyNAkvKiBEVExCIE1pc3MgKG5vIERUTEIgZW50cnkgbWF0Y2hl cywgaHcgcmVmaWxsIGFsc28gbWlzc2VkKSAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfRFRMQl9NVUxU SUhJVAkJMjUJLyogRFRMQiBNdWx0aWhpdCAobXVsdGlwbGUgRFRMQiBlbnRyaWVzIG1hdGNoKSAq Lw0KKyNkZWZpbmUgRVhDQ0FVU0VfTE9BRF9TVE9SRV9SSU5HCTI2CS8qIFJpbmcgUHJpdmlsZWdl IFZpb2xhdGlvbiBvbiBMb2FkIG9yIFN0b3JlICovDQorLyogUmVzZXJ2ZWQJCQkJMjcgKi8JLyog U2l6ZSBSZXN0cmljdGlvbiBvbiBMb2FkL1N0b3JlIChub3QgaW1wbGVtZW50ZWQpICovDQorI2Rl ZmluZSBFWENDQVVTRV9MT0FEX1BST0hJQklURUQJMjgJLyogQ2FjaGUgQXR0cmlidXRlIGRvZXMg bm90IGFsbG93IExvYWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX1NUT1JFX1BST0hJQklURUQJMjkJ LyogQ2FjaGUgQXR0cmlidXRlIGRvZXMgbm90IGFsbG93IFN0b3JlICovDQorLyogUmVzZXJ2ZWQJ CQkJMzAuLjMxICovDQorI2RlZmluZSBFWENDQVVTRV9DUF9ESVNBQkxFRChuKQkJKDMyKyhuKSkJ LyogQWNjZXNzIHRvIENvcHJvY2Vzc29yICduJyB3aGVuIGRpc2FibGVkICovDQorI2RlZmluZSBF WENDQVVTRV9DUDBfRElTQUJMRUQJCTMyCS8qIEFjY2VzcyB0byBDb3Byb2Nlc3NvciAwIHdoZW4g ZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQMV9ESVNBQkxFRAkJMzMJLyogQWNjZXNz IHRvIENvcHJvY2Vzc29yIDEgd2hlbiBkaXNhYmxlZCAqLw0KKyNkZWZpbmUgRVhDQ0FVU0VfQ1Ay X0RJU0FCTEVECQkzNAkvKiBBY2Nlc3MgdG8gQ29wcm9jZXNzb3IgMiB3aGVuIGRpc2FibGVkICov DQorI2RlZmluZSBFWENDQVVTRV9DUDNfRElTQUJMRUQJCTM1CS8qIEFjY2VzcyB0byBDb3Byb2Nl c3NvciAzIHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQNF9ESVNBQkxFRAkJ MzYJLyogQWNjZXNzIHRvIENvcHJvY2Vzc29yIDQgd2hlbiBkaXNhYmxlZCAqLw0KKyNkZWZpbmUg RVhDQ0FVU0VfQ1A1X0RJU0FCTEVECQkzNwkvKiBBY2Nlc3MgdG8gQ29wcm9jZXNzb3IgNSB3aGVu IGRpc2FibGVkICovDQorI2RlZmluZSBFWENDQVVTRV9DUDZfRElTQUJMRUQJCTM4CS8qIEFjY2Vz cyB0byBDb3Byb2Nlc3NvciA2IHdoZW4gZGlzYWJsZWQgKi8NCisjZGVmaW5lIEVYQ0NBVVNFX0NQ N19ESVNBQkxFRAkJMzkJLyogQWNjZXNzIHRvIENvcHJvY2Vzc29yIDcgd2hlbiBkaXNhYmxlZCAq Lw0KKy8qIFJlc2VydmVkCQkJCTQwLi42MyAqLw0KKw0KKy8qICBQUyByZWdpc3RlciBmaWVsZHM6 ICAqLw0KKyNkZWZpbmUgUFNfV09FX1NISUZUCQkxOA0KKyNkZWZpbmUgUFNfV09FX01BU0sJCTB4 MDAwNDAwMDANCisjZGVmaW5lIFBTX1dPRQkJCVBTX1dPRV9NQVNLDQorI2RlZmluZSBQU19XT0Vf QUJJIAkJUFNfV09FX01BU0sNCisjZGVmaW5lIFBTX0NBTExJTkNfU0hJRlQJMTYNCisjZGVmaW5l IFBTX0NBTExJTkNfTUFTSwkJMHgwMDAzMDAwMA0KKyNkZWZpbmUgUFNfQ0FMTElOQyhuKQkJKCgo bikmMyk8PFBTX0NBTExJTkNfU0hJRlQpCS8qIG4gPSAwLi4zICovDQorI2RlZmluZSBQU19PV0Jf U0hJRlQJCTgNCisjZGVmaW5lIFBTX09XQl9NQVNLCQkweDAwMDAwRjAwDQorI2RlZmluZSBQU19P V0IobikJCSgoKG4pJjE1KTw8UFNfT1dCX1NISUZUKQkvKiBuID0gMC4uMTUgKG9yIDAuLjcpICov DQorI2RlZmluZSBQU19SSU5HX1NISUZUCQk2DQorI2RlZmluZSBQU19SSU5HX01BU0sJCTB4MDAw MDAwQzANCisjZGVmaW5lIFBTX1JJTkcobikJCSgoKG4pJjMpPDxQU19SSU5HX1NISUZUKQkvKiBu ID0gMC4uMyAqLw0KKyNkZWZpbmUgUFNfVU1fU0hJRlQJCTUNCisjZGVmaW5lIFBTX1VNX01BU0sJ CTB4MDAwMDAwMjANCisjZGVmaW5lIFBTX1VNCQkJUFNfVU1fTUFTSw0KKyNkZWZpbmUgUFNfRVhD TV9TSElGVAkJNA0KKyNkZWZpbmUgUFNfRVhDTV9NQVNLCQkweDAwMDAwMDEwDQorI2RlZmluZSBQ U19FWENNCQkJUFNfRVhDTV9NQVNLDQorI2RlZmluZSBQU19JTlRMRVZFTF9TSElGVAkwDQorI2Rl ZmluZSBQU19JTlRMRVZFTF9NQVNLCTB4MDAwMDAwMEYNCisjZGVmaW5lIFBTX0lOVExFVkVMKG4p CQkoKG4pJlBTX0lOVExFVkVMX01BU0spCQkvKiBuID0gMC4uMTUgKi8NCisvKiAgQmFja3dhcmQg Y29tcGF0aWJpbGl0eSAoZGVwcmVjYXRlZCk6ICAqLw0KKyNkZWZpbmUgUFNfUFJPR1NUQUNLX1NI SUZUCVBTX1VNX1NISUZUDQorI2RlZmluZSBQU19QUk9HU1RBQ0tfTUFTSwlQU19VTV9NQVNLDQor I2RlZmluZSBQU19QUk9HX1NISUZUCQlQU19VTV9TSElGVA0KKyNkZWZpbmUgUFNfUFJPR19NQVNL CQlQU19VTV9NQVNLDQorI2RlZmluZSBQU19QUk9HCQkJUFNfVU0NCisNCisvKiAgREJSRUFLQ24g cmVnaXN0ZXIgZmllbGRzOiAgKi8NCisjZGVmaW5lIERCUkVBS0NfTUFTS19TSElGVAkJMA0KKyNk ZWZpbmUgREJSRUFLQ19NQVNLX01BU0sJCTB4MDAwMDAwM0YNCisjZGVmaW5lIERCUkVBS0NfTE9B REJSRUFLX1NISUZUCQkzMA0KKyNkZWZpbmUgREJSRUFLQ19MT0FEQlJFQUtfTUFTSwkJMHg0MDAw MDAwMA0KKyNkZWZpbmUgREJSRUFLQ19TVE9SRUJSRUFLX1NISUZUCTMxDQorI2RlZmluZSBEQlJF QUtDX1NUT1JFQlJFQUtfTUFTSwkJMHg4MDAwMDAwMA0KKw0KKy8qICBERUJVR0NBVVNFIHJlZ2lz dGVyIGZpZWxkczogICovDQorI2RlZmluZSBERUJVR0NBVVNFX0RFQlVHSU5UX1NISUZUCTUNCisj ZGVmaW5lIERFQlVHQ0FVU0VfREVCVUdJTlRfTUFTSwkweDIwCS8qIGRlYnVnIGludGVycnVwdCAq Lw0KKyNkZWZpbmUgREVCVUdDQVVTRV9CUkVBS05fU0hJRlQJCTQNCisjZGVmaW5lIERFQlVHQ0FV U0VfQlJFQUtOX01BU0sJCTB4MTAJLyogQlJFQUsuTiBpbnN0cnVjdGlvbiAqLw0KKyNkZWZpbmUg REVCVUdDQVVTRV9CUkVBS19TSElGVAkJMw0KKyNkZWZpbmUgREVCVUdDQVVTRV9CUkVBS19NQVNL CQkweDA4CS8qIEJSRUFLIGluc3RydWN0aW9uICovDQorI2RlZmluZSBERUJVR0NBVVNFX0RCUkVB S19TSElGVAkJMg0KKyNkZWZpbmUgREVCVUdDQVVTRV9EQlJFQUtfTUFTSwkJMHgwNAkvKiBEQlJF QUsgbWF0Y2ggKi8NCisjZGVmaW5lIERFQlVHQ0FVU0VfSUJSRUFLX1NISUZUCQkxDQorI2RlZmlu ZSBERUJVR0NBVVNFX0lCUkVBS19NQVNLCQkweDAyCS8qIElCUkVBSyBtYXRjaCAqLw0KKyNkZWZp bmUgREVCVUdDQVVTRV9JQ09VTlRfU0hJRlQJCTANCisjZGVmaW5lIERFQlVHQ0FVU0VfSUNPVU5U X01BU0sJCTB4MDEJLyogSUNPVU5UIHdvdWxkIGluY3JlbWVudCB0byB6ZXJvICovDQorDQorLyog IE1FU1IgcmVnaXN0ZXIgZmllbGRzOiAgKi8NCisjZGVmaW5lIE1FU1JfTUVNRQkJMHgwMDAwMDAw MQkvKiBtZW1vcnkgZXJyb3IgKi8NCisjZGVmaW5lIE1FU1JfTUVNRV9TSElGVAkJMA0KKyNkZWZp bmUgTUVTUl9ETUUJCTB4MDAwMDAwMDIJLyogZG91YmxlIG1lbW9yeSBlcnJvciAqLw0KKyNkZWZp bmUgTUVTUl9ETUVfU0hJRlQJCTENCisjZGVmaW5lIE1FU1JfUkNFCQkweDAwMDAwMDEwCS8qIHJl Y29yZGVkIG1lbW9yeSBlcnJvciAqLw0KKyNkZWZpbmUgTUVTUl9SQ0VfU0hJRlQJCTQNCisjZGVm aW5lIE1FU1JfTENFDQorI2RlZmluZSBNRVNSX0xDRV9TSElGVAkJPw0KKyNkZWZpbmUgTUVTUl9M Q0VfTA0KKyNkZWZpbmUgTUVTUl9FUlJFTkFCCQkweDAwMDAwMTAwDQorI2RlZmluZSBNRVNSX0VS UkVOQUJfU0hJRlQJOA0KKyNkZWZpbmUgTUVTUl9FUlJURVNUCQkweDAwMDAwMjAwDQorI2RlZmlu ZSBNRVNSX0VSUlRFU1RfU0hJRlQJOQ0KKyNkZWZpbmUgTUVTUl9EQVRFWEMJCTB4MDAwMDA0MDAN CisjZGVmaW5lIE1FU1JfREFURVhDX1NISUZUCTEwDQorI2RlZmluZSBNRVNSX0lOU0VYQwkJMHgw MDAwMDgwMA0KKyNkZWZpbmUgTUVTUl9JTlNFWENfU0hJRlQJMTENCisjZGVmaW5lIE1FU1JfV0FZ TlVNX1NISUZUCTE2DQorI2RlZmluZSBNRVNSX0FDQ1RZUEVfU0hJRlQJMjANCisjZGVmaW5lIE1F U1JfTUVNVFlQRV9TSElGVAkyNA0KKyNkZWZpbmUgTUVTUl9FUlJUWVBFX1NISUZUCTMwDQorDQor LyogIE1FTUNUTCByZWdpc3RlciBmaWVsZHM6ICAqLw0KKyNkZWZpbmUgTUVNQ1RMX1NOT09QX0VO X1NISUZUCTENCisjZGVmaW5lIE1FTUNUTF9TTk9PUF9FTgkJMHgwMgkvKiBlbmFibGUgc25vb3Ag cmVzcG9uc2VzIChkZWZhdWx0IDApICovDQorI2RlZmluZSBNRU1DVExfTDBJQlVGX0VOX1NISUZU CTANCisjZGVmaW5lIE1FTUNUTF9MMElCVUZfRU4JMHgwMQkvKiBlbmFibGUgbG9vcCBpbnN0ci4g YnVmZmVyIChkZWZhdWx0IDEpICovDQorI2RlZmluZSBNRU1DVExfSU5WX0VOX1NISUZUCTIzDQor I2RlZmluZSBNRU1DVExfSU5WX0VOCQkweDAwODAwMDAwCS8qIGludmFsaWRhdGUgY2FjaGUgd2F5 cyBiZWluZyBpbmNyZWFzZWQgKi8NCisjZGVmaW5lIE1FTUNUTF9EQ1dVX1NISUZUCTgNCisjZGVm aW5lIE1FTUNUTF9EQ1dVX0JJVFMJNQ0KKyNkZWZpbmUgTUVNQ1RMX0RDV0FfU0hJRlQJMTMNCisj ZGVmaW5lIE1FTUNUTF9EQ1dBX0JJVFMJNQ0KKyNkZWZpbmUgTUVNQ1RMX0lDV1VfU0hJRlQJMTgN CisjZGVmaW5lIE1FTUNUTF9JQ1dVX0JJVFMJNQ0KKyNkZWZpbmUgTUVNQ1RMX0RDV1VfTUFTSwkw eDAwMDAxRjAwCS8qIEJpdHMgIDgtMTIgZGNhY2hlIHdheXMgaW4gdXNlICovDQorI2RlZmluZSBN RU1DVExfRENXQV9NQVNLCTB4MDAwM0UwMDAJLyogQml0cyAxMy0xNyBkY2FjaGUgd2F5cyBhbGxv Y2F0YWJsZSAqLw0KKyNkZWZpbmUgTUVNQ1RMX0lDV1VfTUFTSwkweDAwN0MwMDAwCS8qIEJpdHMg MTgtMjIgaWNhY2hlIHdheXMgaW4gdXNlICovDQorI2RlZmluZSBNRU1DVExfRENXVV9DTFJfTUFT Swl+KE1FTUNUTF9EQ1dVX01BU0spDQorI2RlZmluZSBNRU1DVExfRENXQV9DTFJfTUFTSwl+KE1F TUNUTF9EQ1dBX01BU0spDQorI2RlZmluZSBNRU1DVExfSUNXVV9DTFJfTUFTSwl+KE1FTUNUTF9J Q1dVX01BU0spDQorI2RlZmluZSBNRU1DVExfRENXX0NMUl9NQVNLCShNRU1DVExfRENXVV9DTFJf TUFTSyB8IE1FTUNUTF9EQ1dBX0NMUl9NQVNLKQ0KKyNkZWZpbmUgTUVNQ1RMX0lEQ1dfQ0xSX01B U0sJKE1FTUNUTF9EQ1dfQ0xSX01BU0sgfCBNRU1DVExfSUNXVV9DTFJfTUFTSykNCisNCisNCisj ZW5kaWYgLypYVEVOU0FfQ09SRUJJVFNfSCovDQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRl bnNhL21haW4uYyBiL2xpYmdsb3NzL3h0ZW5zYS9tYWluLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQppbmRleCAwMDAwMDAwMDAuLjUxYjc2ZGYwZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliZ2xv c3MveHRlbnNhL21haW4uYw0KQEAgLTAsMCArMSwxMCBAQA0KKyNpbmNsdWRlIDxzdGRpby5oPg0K K2ludCBhYWEodm9pZCkNCit7DQorICByZXR1cm4gcmFuZCgpOw0KK30NCisNCisNCitpbnQgYmJi KCkgew0KKyAgcmV0dXJuIGFhYSgpICsgMTA7DQorfQ0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0 ZW5zYS9uYW5vLnNwZWNzIGIvbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLmFkZjdhYmJhZg0KLS0tIC9kZXYvbnVsbA0KKysr IGIvbGliZ2xvc3MveHRlbnNhL25hbm8uc3BlY3MNCkBAIC0wLDAgKzEsMTggQEANCislcmVuYW1l IGxpbmsgICAgICAgICAgICAgICAgbmFub19saW5rDQorJXJlbmFtZSBsaW5rX2djY19jX3NlcXVl bmNlICAgICAgICAgICAgICAgIG5hbm9fbGlua19nY2NfY19zZXF1ZW5jZQ0KKw0KKypuYW5vX2xp YmM6DQorLWxjX25hbm8NCisNCisqbmFub19saWJnbG9zczoNCisle3NwZWNzPW5vc3lzLnNwZWNz Oi1sbm9zeXN9DQorDQorKmxpbmtfZ2NjX2Nfc2VxdWVuY2U6DQorJShuYW5vX2xpbmtfZ2NjX2Nf c2VxdWVuY2UpIC0tc3RhcnQtZ3JvdXAgJUcgJShuYW5vX2xpYmMpICUobmFub19saWJnbG9zcykg LS1lbmQtZ3JvdXANCisNCisqbGluazoNCislKG5hbm9fbGluaykgJTpyZXBsYWNlLW91dGZpbGUo LWxjIC1sY19uYW5vKSAlOnJlcGxhY2Utb3V0ZmlsZSgtbGcgLWxnX25hbm8pICU6cmVwbGFjZS1v dXRmaWxlKC1sbSAtbG1fbmFubykNCisNCisqbGliOg0KKyV7IXNoYXJlZDole2cqOi1sZ19uYW5v fSAleyFwOiV7IXBnOi1sY19uYW5vfX0le3A6LWxjX3B9JXtwZzotbGNfcH19DQorDQpkaWZmIC0t Z2l0IGEvbGliZ2xvc3MveHRlbnNhL3NpbS1jYWxsLlMgYi9saWJnbG9zcy94dGVuc2Evc2ltLWNh bGwuUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNGI0OTNjMjk2DQot LS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2Evc2ltLWNhbGwuUw0KQEAgLTAsMCAr MSw4IEBADQorDQorCS50eXBlCV9fc2ltX2NhbGwsIEBmdW5jdGlvbg0KKwkuYWxpZ24JNA0KKwku Z2xvYmFsIF9fc2ltX2NhbGwNCitfX3NpbV9jYWxsOg0KKwllbnRyeQlhMSwgMzINCisJc2ltY2Fs bA0KKwlyZXR3DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3NpbS12ZWN0b3JzLlMgYi9s aWJnbG9zcy94dGVuc2Evc2ltLXZlY3RvcnMuUw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMC4uOTM2NzUzYTZkDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVu c2Evc2ltLXZlY3RvcnMuUw0KQEAgLTAsMCArMSwxNjMgQEANCisjaW5jbHVkZSA8eHRlbnNhL2Nv bmZpZy9jb3JlLWlzYS5oPg0KKyNpbmNsdWRlIDxzeXNjYWxscy5oPg0KKw0KKy8vI2RlZmluZSBQ U19PV0JfU0hJRlQgOA0KKy8vI2RlZmluZSBQU19PV0JfQklUUyA0DQorLy8jZGVmaW5lIEVYQ0NB VVNFX0FMTE9DQQkJCTUJLyogU3RhY2sgRXh0ZW5zaW9uIEFzc2lzdCAoTU9WU1AgaW5zdHJ1Y3Rp b24pIGZvciBhbGxvY2EgKi8NCisNCisjaWYgWENIQUxfSEFWRV9MMzJSDQorICAgIC5zZWN0aW9u IC5yb2RhdGENCitfc2ltX3BhbmljX21zZzoNCisgICAgLmFzY2lpICJQQU5JQzogVW5oYW5kbGVk IGV4Y2VwdGlvbiFcbiINCisJX3NpbV9wYW5pY19tc2dfbGVuID0gLiAtIF9zaW1fcGFuaWNfbXNn DQorDQorICAgIC5zZWN0aW9uIC50ZXh0DQorICAgIC5saXRlcmFsIC5McGFuaWNfbXNnLCBfc2lt X3BhbmljX21zZw0KKyAgICAubGl0ZXJhbCAuTHBhbmljX21zZ19sZW4sIF9zaW1fcGFuaWNfbXNn X2xlbg0KKyAgICAuYWxpZ24gICAgICA0DQorX3h0X3VuaGFuZGxlZF9leGM6DQorICAgIG1vdmkg YTIsIFNZU193cml0ZQ0KKyAgICBtb3ZpIGEzLCAyDQorICAgIGwzMnIgYTQsIC5McGFuaWNfbXNn DQorICAgIGwzMnIgYTUsIC5McGFuaWNfbXNnX2xlbg0KKyAgICBzaW1jYWxsDQorI2Vsc2UNCitf eHRfdW5oYW5kbGVkX2V4YzoNCisjZW5kaWYNCisgICAgbW92aSBhMiwgU1lTX2V4aXQNCisgICAg bW92aSBhMywgMQ0KKyAgICBzaW1jYWxsDQorDQorLyoNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KK0hhbmRsZSBhbGxvY2EgZXhjZXB0aW9uIGdlbmVyYXRlZCBieSBpbnRlcnJ1cHRlZSBleGVj dXRpbmcgJ21vdnNwJy4NCitUaGlzIHVzZXMgc3BhY2UgYmV0d2VlbiB0aGUgd2luZG93IHZlY3Rv cnMsIHNvIGlzIGVzc2VudGlhbGx5ICJmcmVlIi4NCitBbGwgaW50ZXJydXB0ZWUncyByZWdzIGFy ZSBpbnRhY3QgZXhjZXB0IGEwIHdoaWNoIGlzIHNhdmVkIGluIEVYQ1NBVkVfMSwNCithbmQgUFMu RVhDTSBoYXMgYmVlbiBzZXQgYnkgdGhlIGV4Y2VwdGlvbiBoYXJkd2FyZSAoY2FuJ3QgYmUgaW50 ZXJydXB0ZWQpLg0KK1RoZSBmYWN0IHRoZSBhbGxvY2EgZXhjZXB0aW9uIHdhcyB0YWtlbiBtZWFu cyB0aGUgcmVnaXN0ZXJzIGFzc29jaWF0ZWQgd2l0aA0KK3RoZSBiYXNlLXNhdmUgYXJlYSBoYXZl IGJlZW4gc3BpbGxlZCBhbmQgd2lsbCBiZSByZXN0b3JlZCBieSB0aGUgdW5kZXJmbG93DQoraGFu ZGxlciwgc28gdGhvc2UgNCByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZSBmb3Igc2NyYXRjaC4NCitU aGUgY29kZSBpcyBvcHRpbWl6ZWQgdG8gYXZvaWQgdW5hbGlnbmVkIGJyYW5jaGVzIGFuZCBtaW5p bWl6ZSBjYWNoZSBtaXNzZXMuDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqLw0KKw0KKyAg ICAjaWYgWENIQUxfSEFWRV9XSU5ET1dFRA0KKyAgICAuc2VjdGlvbiAudGV4dA0KKyAgICAuZ2xv YmFsIF94dF9hbGxvY2FfZXhjDQorICAgIC5hbGlnbiAgNA0KK194dF9hbGxvY2FfZXhjOg0KKw0K KyAgICByc3IgICAgIGEwLCBXSU5ET1dCQVNFICAvKiBncmFiIFdJTkRPV0JBU0UgYmVmb3JlIHJv dHcgY2hhbmdlcyBpdCAqLw0KKyAgICByb3R3ICAgIC0xICAgICAgICAgICAgICAvKiBXSU5ET1dC QVNFIGdvZXMgdG8gYTQsIG5ldyBhMC1hMyBhcmUgc2NyYXRjaCAqLw0KKyAgICByc3IgICAgIGEy LCBQUw0KKyAgICBleHR1aSAgIGEzLCBhMiwgOC8qUFNfT1dCX0JJVFMqLywgNC8qUFNfT1dCX0JJ VFMqLw0KKyAgICB4b3IgICAgIGEzLCBhMywgYTQgICAgICAvKiBiaXRzIGNoYW5nZWQgZnJvbSBv bGQgdG8gY3VycmVudCB3aW5kb3diYXNlICovDQorICAgIHJzciAgICAgYTQsIEVYQ1NBVkUxICAg LyogcmVzdG9yZSBvcmlnaW5hbCBhMCAobm93IGluIGE0KSAqLw0KKyAgICBzbGxpICAgIGEzLCBh MywgOA0KKyAgICB4b3IgICAgIGEyLCBhMiwgYTMgICAgICAvKiBmbGlwIGNoYW5nZWQgYml0cyBp biBvbGQgd2luZG93IGJhc2UgKi8NCisgICAgd3NyICAgICBhMiwgUFMgICAgICAgICAgLyogdXBk YXRlIFBTLk9XQiB0byBuZXcgd2luZG93IGJhc2UgKi8NCisgICAgcnN5bmMNCisNCisgICAgYmJj aS5sIGE0LCAzMSwgX1dpbmRvd1VuZGVyZmxvdzQNCisgICAgcm90dyAgICAtMSAgICAgICAgICAg ICAgLyogb3JpZ2luYWwgYTAgZ29lcyB0byBhOCAqLw0KKyAgICBiYmNpLmwgYTgsIDMwLCBfV2lu ZG93VW5kZXJmbG93OA0KKyAgICByb3R3ICAgIC0xDQorICAgIGogICAgICAgICAgICAgICBfV2lu ZG93VW5kZXJmbG93MTINCisgICAgI2VuZGlmDQorDQorDQorLyoNCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KKyAgVXNlciBleGNlcHRpb24gaGFuZGxlci4NCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKyovDQorDQorICAgICNpZiBYQ0hBTF9IQVZFX1dJTkRPV0VEDQorICAgIC5zZWN0aW9u IC50ZXh0DQorICAgIC5hbGlnbiAgICAgIDQNCitfeHRfdG9fYWxsb2NhX2V4YzoNCisgICAgaiAg IF94dF9hbGxvY2FfZXhjICAgICAgICAgICAgICAgICAgLyogaW4gd2luZG93IHZlY3RvcnMgc2Vj dGlvbiAqLw0KKyAgICAjZW5kaWYNCisNCisgICAgLnR5cGUgICAgICAgX3h0X3VzZXJfZXhjLEBm dW5jdGlvbg0KKyAgICAuYWxpZ24gICAgICA0DQorX3h0X3VzZXJfZXhjOg0KKw0KKyAgICByc3Ig ICAgIGEwLCBFWENDQVVTRQ0KKyAgICAvKiBIYW5kbGUgYWxsb2NhIGFuZCBzeXNjYWxsIGV4Y2Vw dGlvbnMgKi8NCisgICAgI2lmIFhDSEFMX0hBVkVfV0lORE9XRUQNCisgICAgYmVxaSAgICBhMCwg NS8qRVhDQ0FVU0VfQUxMT0NBKi8sICBfeHRfdG9fYWxsb2NhX2V4Yw0KKyAgICAjZW5kaWYNCisg ICAgaiBfeHRfdW5oYW5kbGVkX2V4Yw0KKw0KKw0KKy8qDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCitOTUkgRXhjZXB0aW9uDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqLw0KKw0KKyAg ICAuYmVnaW4gICAgICBsaXRlcmFsX3ByZWZpeCAuTk1JRXhjZXB0aW9uVmVjdG9yDQorICAgIC5z ZWN0aW9uICAgIC5OTUlFeGNlcHRpb25WZWN0b3IudGV4dCwgImF4Ig0KKyAgICAuZ2xvYmFsICAg ICBOTUlFeGNlcHRpb25WZWN0b3INCisgICAgLnR5cGUgICAgICAgTk1JRXhjZXB0aW9uVmVjdG9y LEBmdW5jdGlvbg0KKyAgICAuYWxpZ24gICAgICA0DQorDQorTk1JRXhjZXB0aW9uVmVjdG9yOg0K KyAgICBqICAgX3h0X3VuaGFuZGxlZF9leGMNCisNCisgICAgLmVuZCAgICAgICAgbGl0ZXJhbF9w cmVmaXgNCisNCisvKg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorS2VybmVsIEV4Y2VwdGlv bg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorKi8NCisNCisgICAgLmJlZ2luICAgICAgbGl0 ZXJhbF9wcmVmaXggLktlcm5lbEV4Y2VwdGlvblZlY3Rvcg0KKyAgICAuc2VjdGlvbiAgICAuS2Vy bmVsRXhjZXB0aW9uVmVjdG9yLnRleHQsICJheCINCisgICAgLmdsb2JhbCAgICAgS2VybmVsRXhj ZXB0aW9uVmVjdG9yDQorICAgIC50eXBlICAgICAgIEtlcm5lbEV4Y2VwdGlvblZlY3RvcixAZnVu Y3Rpb24NCisgICAgLmFsaWduICAgICAgNA0KKw0KK0tlcm5lbEV4Y2VwdGlvblZlY3RvcjoNCisg ICAgaiAgIF94dF91bmhhbmRsZWRfZXhjDQorDQorICAgIC5lbmQgICAgICAgIGxpdGVyYWxfcHJl Zml4DQorDQorLyoNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1VzZXIgRXhjZXB0aW9uDQor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisqLw0KKw0KKyAgICAuYmVnaW4gICAgICBsaXRlcmFs X3ByZWZpeCAuVXNlckV4Y2VwdGlvblZlY3Rvcg0KKyAgICAuc2VjdGlvbiAgICAuVXNlckV4Y2Vw dGlvblZlY3Rvci50ZXh0LCAiYXgiDQorICAgIC5nbG9iYWwgICAgIF9Vc2VyRXhjZXB0aW9uVmVj dG9yDQorICAgIC50eXBlICAgICAgIF9Vc2VyRXhjZXB0aW9uVmVjdG9yLEBmdW5jdGlvbg0KKyAg ICAuYWxpZ24gICAgICA0DQorDQorX1VzZXJFeGNlcHRpb25WZWN0b3I6DQorDQorICAgIHdzciAg ICAgYTAsIEVYQ1NBVkUxICAgICAgICAgICAgICAgICAgIC8qIHByZXNlcnZlIGEwICovDQorICAg IGogICBfeHRfdXNlcl9leGMgICAgICAgICAgICAgICAgICAgIC8qIHVzZXIgZXhjZXB0aW9uIGhh bmRsZXIgKi8NCisgICAgLyogbmV2ZXIgcmV0dXJucyBoZXJlIC0gY2FsbDAgaXMgdXNlZCBhcyBh IGp1bXAgKHNlZSBub3RlIGF0IHRvcCkgKi8NCisNCisgICAgLmVuZCAgICAgICAgbGl0ZXJhbF9w cmVmaXgNCisNCisvKg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorRG91YmxlIEV4Y2VwdGlv bg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorKi8NCisNCisgICAgLmJlZ2luICAgICAgbGl0 ZXJhbF9wcmVmaXggLkRvdWJsZUV4Y2VwdGlvblZlY3Rvcg0KKyAgICAuc2VjdGlvbiAgICAuRG91 YmxlRXhjZXB0aW9uVmVjdG9yLnRleHQsICJheCINCisgICAgLmdsb2JhbCAgICAgRG91YmxlRXhj ZXB0aW9uVmVjdG9yDQorICAgIC50eXBlICAgICAgIERvdWJsZUV4Y2VwdGlvblZlY3RvcixAZnVu Y3Rpb24NCisgICAgLmFsaWduICAgICAgNA0KKw0KK0RvdWJsZUV4Y2VwdGlvblZlY3RvcjoNCisg ICAgaiAgIF94dF91bmhhbmRsZWRfZXhjDQorDQorICAgIC5lbmQgICAgICAgIGxpdGVyYWxfcHJl Zml4DQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3NpbS5lbGYuc3BlY3MgYi9saWJnbG9z cy94dGVuc2Evc2ltLmVsZi5zcGVjcw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAw MDAwMC4uMzAyNGY2ODg3DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2Evc2lt LmVsZi5zcGVjcw0KQEAgLTAsMCArMSw1IEBADQorKnN0YXJ0ZmlsZToNCitjcnQxLXNpbSVPJXMN CisNCisqbGliOg0KKy1sYyAtLXdob2xlLWFyY2hpdmUgLWxnbG9zcyAtLW5vLXdob2xlLWFyY2hp dmUgLWxwdGhyZWFkX3N0dWJzIC1sYyAlVG1lbW9yeS5lbGYubGQgJVRhcHAuZWxmLmxkDQpkaWZm IC0tZ2l0IGEvbGliZ2xvc3MveHRlbnNhL3NsZWVwLlMgYi9saWJnbG9zcy94dGVuc2Evc2xlZXAu Uw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uNDEzY2U5Mjg4DQotLS0g L2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94dGVuc2Evc2xlZXAuUw0KQEAgLTAsMCArMSw2NCBA QA0KKyNpbmNsdWRlIDxzb2MvY3B1Lmg+DQorDQorI2RlZmluZSBVU0VDT05EU19JTl9TRUNPTkQg MTAwMDAwMA0KKw0KKwkudHlwZQlzbGVlcCwgQGZ1bmN0aW9uDQorCS5hbGlnbgk0DQorCS5nbG9i YWwgc2xlZXANCitzbGVlcDoNCisJZW50cnkJYTEsIDB4MzANCisJbW92Lm4JYTcsIGExDQorCXMz MmkubglhMiwgYTcsIDANCisNCisJbW92CWEzLCBhMg0KKy5Mc2xlZXBfZGVsYXlfc2Vjb25kOg0K KwlhZGRpCWEzLCBhMywgLTENCisJbW92aQlhMTAsIFVTRUNPTkRTX0lOX1NFQ09ORA0KKwljYWxs OAl1c2xlZXANCisJYm5leglhMywgLkxzbGVlcF9kZWxheV9zZWNvbmQNCisNCisuTHNsZWVwX2V4 aXQ6DQorCXMzMmkubglhMiwgYTcsIDANCisJcmV0dw0KKw0KKw0KKwkudHlwZQl1c2xlZXAsIEBm dW5jdGlvbg0KKwkuYWxpZ24JNA0KKwkuZ2xvYmFsIHVzbGVlcA0KK3VzbGVlcDoNCisJZW50cnkJ YTEsIDB4MzANCisJbW92Lm4JYTcsIGExDQorCXMzMmkubglhMiwgYTcsIDANCisNCisJLyogY29u dmVydCB0aW1lIHRvIENMT0NLIHRpY2tzIHBlciAxdXMgKi8NCisJbW92aQlhNiwgQ1BVX0ZSRVFV RU5DWV9NSFogLy8gQ1BVX0ZSRVFVRU5DWV9NSFogPT0gdGlja3MgcGVyIHVzDQorCW11bGwJYTIs IGEyLCBhNg0KKw0KKwkvKg0KKwkgKiBSZWdpc3RlcnMgcHVycG9zZToNCisJICogICBhMyAtIHN0 YXJ0IENDT1VOVCB2YWx1ZQ0KKwkgKiAgIGE0IC0gY3VycmVudCBDQ09VTlQgdmFsdWUNCisJICog ICBhNSAtIHRhcmdldCBDQ09VTlQgdmFsdWUNCisJICovDQorDQorCXJzcglhMywgQ0NPVU5UDQor CWFkZAlhNSwgYTMsIGEyDQorCWJnZXUJYTUsIGEzLCAuTHVzbGVlcF93YWl0bG9vcA0KKw0KKy5M dXNsZWVwX3dhaXRvdmVyZmxvdzoNCisJLyogeW91IGFyZSBoZXJlIGJlY2F1c2UgYTUgKHRhcmdl dCBDQ09VTlQpIHdhcyBvdmVyZmxvd24NCisJICogaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdh aXQgQ0NPVU5UIHJlZ2lzdGVyIG92ZXJmbG93DQorCSAqIGJlZm9yZSBkbyBtYWluIGxvb3ANCisJ ICovDQorCXJzcglhNCwgQ0NPVU5UDQorCWJnZXUJYTQsIGEzLCAuTHVzbGVlcF93YWl0b3ZlcmZs b3cNCisNCisuTHVzbGVlcF93YWl0bG9vcDoNCisJLyogd2FpdCB1bnRpbCB3ZSByZWFjaCB0YXJn ZXQgQ0NPVU5UIHZhbHVlICovDQorCXJzcglhNCwgQ0NPVU5UDQorCWJnZXUJYTQsIGE1LCAuTHVz bGVlcF9leGl0DQorCWoJLkx1c2xlZXBfd2FpdGxvb3ANCisuTHVzbGVlcF9leGl0Og0KKwlzMzJp Lm4JYTIsIGE3LCAwDQorCXJldHcNCisNCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVuc2Evc3lz Lm9wZW5vY2Quc3BlY3MgYi9saWJnbG9zcy94dGVuc2Evc3lzLm9wZW5vY2Quc3BlY3MNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAuLjQ1NzMxODQyNA0KLS0tIC9kZXYvbnVs bA0KKysrIGIvbGliZ2xvc3MveHRlbnNhL3N5cy5vcGVub2NkLnNwZWNzDQpAQCAtMCwwICsxLDgg QEANCislcmVuYW1lIGxpbmtfZ2NjX2Nfc2VxdWVuY2UgICAgb3Blbm9jZF9saW5rX2djY19jX3Nl cXVlbmNlDQorDQorKmxpYm9wZW5vY2Q6DQorLS13aG9sZS1hcmNoaXZlIC1sc3lzX29wZW5vY2Qg LS1uby13aG9sZS1hcmNoaXZlDQorDQorKmxpbmtfZ2NjX2Nfc2VxdWVuY2U6DQorJShvcGVub2Nk X2xpbmtfZ2NjX2Nfc2VxdWVuY2UpIC0tc3RhcnQtZ3JvdXAgJUcgJShsaWJvcGVub2NkKSAtLWVu ZC1ncm91cA0KKw0KZGlmZiAtLWdpdCBhL2xpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcyBi L2xpYmdsb3NzL3h0ZW5zYS9zeXMucWVtdS5zcGVjcw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMC4uNTE4NWMwNDgwDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJnbG9zcy94 dGVuc2Evc3lzLnFlbXUuc3BlY3MNCkBAIC0wLDAgKzEsOCBAQA0KKyVyZW5hbWUgbGlua19nY2Nf Y19zZXF1ZW5jZSAgICBxZW11X2xpbmtfZ2NjX2Nfc2VxdWVuY2UNCisNCisqbGlicWVtdToNCist LXdob2xlLWFyY2hpdmUgLWxzeXNfcWVtdSAtLW5vLXdob2xlLWFyY2hpdmUNCisNCisqbGlua19n Y2NfY19zZXF1ZW5jZToNCislKHFlbXVfbGlua19nY2NfY19zZXF1ZW5jZSkgLS1zdGFydC1ncm91 cCAlRyAlKGxpYnFlbXUpIC0tZW5kLWdyb3VwDQorDQpkaWZmIC0tZ2l0IGEvbGliZ2xvc3MveHRl bnNhL3N5c2NhbGxzLmMgYi9saWJnbG9zcy94dGVuc2Evc3lzY2FsbHMuYw0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMC4uMmZjZmI0ZWNjDQotLS0gL2Rldi9udWxsDQorKysg Yi9saWJnbG9zcy94dGVuc2Evc3lzY2FsbHMuYw0KQEAgLTAsMCArMSwyMTEgQEANCisjaW5jbHVk ZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPHN5c2NhbGxzLmg+DQorI2luY2x1ZGUgPHN5cy9zdGF0 Lmg+DQorI2luY2x1ZGUgPHNvYy91YXJ0Lmg+DQorDQorI2lmIGRlZmluZWQgKE9QRU5PQ0RfU0VN SUhPU1RJTkcpIHx8IChRRU1VX1NFTUlIT1NUSU5HKQ0KKyMgZGVmaW5lIFdJVEhfU0VNSUhPU1RJ TkcNCisjIGRlZmluZSBfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorI2Vsc2UNCisjIGRlZmluZSBf X1dFQUtfRlVOQ1RJT05fQVRUUl9fIF9fYXR0cmlidXRlX18oKF9fd2Vha19fKSkNCisjZW5kaWYN CisNCisNCisvKiBfX3NlbWlob3N0aW5nX2NhbGwgaXMgYSBmdW5jdGlvbiBpbiBjYXNlIHNlbWlo b3N0aW5nIHVzYWdlLCBtYWNybyAoLTEpIG90aGVyd2lzZSAqLw0KKyNpZmRlZiBXSVRIX1NFTUlI T1NUSU5HDQorDQorc3RhdGljIGlubGluZSBpbnQNCitfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lu bGluZSkpDQorX19zZW1paG9zdGluZ19jYWxsKGludCBpZCwgaW50IGFyZzEsIGludCBhcmcyLCBp bnQgYXJnMywgaW50IGFyZzQpDQorew0KKyMgaWZkZWYgT1BFTk9DRF9TRU1JSE9TVElORw0KKyAg ICByZWdpc3RlciBsb25nIGEyIGFzbSgiYTIiKSA9IGlkOw0KKyAgICBsb25nIGFyZ3NbXSA9IHth cmcxLCBhcmcyLCBhcmczLCBhcmc0fTsNCisgICAgcmVnaXN0ZXIgbG9uZyBhMyBhc20oImEzIikg PSAobG9uZykmYXJnczsNCisNCisgICAgLyogT3Blbk9DRCBoYXMgZGlmZmVyZW50IHNlbWlob3N0 aW5nIGFwaSBmb3Igc3lzX2V4aXQgb24gMzItYml0IGFuZCA2NC1iaXQgKi8NCisgICAgaWYgKGlk ID09IFNZU19leGl0ICYmIHNpemVvZih2b2lkICopICE9IDgpIHsNCisgICAgICAgIGEzID0gQURQ X1NUT1BQRURfQVBQTElDQVRJT05fRVhJVDsNCisgICAgfQ0KKyAgICBfX2FzbV9fICBfX3ZvbGF0 aWxlX18gKA0KKyAgICAgICAgImJyZWFrIDEsIDE0XG4iDQorICAgICAgICA6ICIrciIoYTIpOiAi ciIoYTMpDQorICAgICAgICA6ICJtZW1vcnkiKTsNCisNCisgICAgLy8gcmV0dXJuIGNvZGUgaXMg cGxhY2VkIGluIGEyIHJlZ2lzdGVyLCBzbyByZXR1cm4gaXQgdG8gdGhlIGNhbGxlcg0KKyAgICBy ZXR1cm4gYTI7DQorIyBlbHNlIC8vIE9QRU5PQ0RfU0VNSUhPU1RJTkcNCisgICAgZXh0ZXJuIGlu dCBfX3NpbV9jYWxsKGludCBpZCwgaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywgaW50IGFy ZzQpOw0KKyAgICByZXR1cm4gX19zaW1fY2FsbChpZCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7 DQorIyBlbmRpZiAvLyBPUEVOT0NEX1NFTUlIT1NUSU5HDQorfQ0KKw0KKyMgaWZkZWYgT1BFTk9D RF9TRU1JSE9TVElORw0KKw0KK2ludA0KK19fc2VtaWhvc3RpbmdfaW5pdCAodm9pZCkNCit7DQor ICAgIHN0cnVjdCB7DQorICAgICAgICBpbnQgdmVyc2lvbjsNCisgICAgfSB2ZXJfaW5mbyA9IHsg MiB9Ow0KKyAgICBfX3NlbWlob3N0aW5nX2NhbGwoRVNQX1NFTUlIT1NUSU5HX1NZU19EUlZfSU5G TywgKGxvbmcpICZ2ZXJfaW5mbywgc2l6ZW9mKHZlcl9pbmZvKSwgMCwgMCk7DQorfQ0KKw0KKyMg ZW5kaWYgLy8gT1BFTk9DRF9TRU1JSE9TVElORw0KKw0KKyNlbHNlIC8vICFXSVRIX1NFTUlIT1NU SU5HDQorIyBkZWZpbmUgX19zZW1paG9zdGluZ19jYWxsKC4uLikgKC0xKQ0KKyNlbmRpZiAvLyBX SVRIX1NFTUlIT1NUSU5HDQorDQorDQordm9pZA0KK19fV0VBS19GVU5DVElPTl9BVFRSX18NCitf X2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKQ0KK19leGl0IChpbnQgc3RhdHVzKQ0KK3sNCisgICAg X19zZW1paG9zdGluZ19jYWxsKFNZU19leGl0LCBzdGF0dXMsIDAsIDAsIDApOw0KKw0KKyAgICBm b3IgKDs7KSB7DQorICAgICAgICA7DQorICAgIH0NCit9DQorDQorDQoraW50DQorX19XRUFLX0ZV TkNUSU9OX0FUVFJfXw0KK19vcGVuIChjb25zdCBjaGFyICpmaWxlLCBpbnQgZmxhZ3MsIGludCBt b2RlKQ0KK3sNCisgICAgcmV0dXJuIF9fc2VtaWhvc3RpbmdfY2FsbChTWVNfb3BlbiwgKGludCkg ZmlsZSwgZmxhZ3MsIG1vZGUsIDApOw0KK30NCisNCisNCitpbnQNCitfX1dFQUtfRlVOQ1RJT05f QVRUUl9fDQorX2xzZWVrIChpbnQgZmQsIF9vZmZfdCBvZmYsIGludCB3aGVuY2UpDQorew0KKyAg ICByZXR1cm4gX19zZW1paG9zdGluZ19jYWxsKFNZU19sc2VlaywgZmQsIG9mZiwgd2hlbmNlLCAw KTsNCit9DQorDQorDQoraW50DQorX19XRUFLX0ZVTkNUSU9OX0FUVFJfXw0KK19jbG9zZSAoaW50 IGZkKQ0KK3sNCisgICAgcmV0dXJuIF9fc2VtaWhvc3RpbmdfY2FsbChTWVNfY2xvc2UsIGZkLCAw LCAwLCAwKTsNCit9DQorDQorDQorX3NzaXplX3QNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQor X3dyaXRlIChpbnQgZmQsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNudCkNCit7DQorICAgIGlu dCByZXQgPSAwOw0KKyNpZmRlZiBXSVRIX1NFTUlIT1NUSU5HDQorICAgIHJldCA9IF9fc2VtaWhv c3RpbmdfY2FsbChTWVNfd3JpdGUsIGZkLCAoaW50KSBidWYsIGNudCwgMCk7DQorIyBpZmRlZiBP UEVOT0NEX1NFTUlIT1NUSU5HDQorICAgIC8qIHJldCAtIG51bWJlciBvZiBieXRlcyB0aGF0IGFy ZSBOT1Qgd3JpdHRlbi4gQ2FsY3VsYXRlIHdyaXR0ZW4gKi8NCisgICAgcmV0ID0gY250IC0gcmV0 Ow0KKyMgZW5kaWYgLy8gT1BFTk9DRF9TRU1JSE9TVElORw0KKyNlbHNlIC8vICFXSVRIX1NFTUlI T1NUSU5HDQorICAgIGlmIChmZCAhPSBTVERPVVRfRklMRU5PICYmIGZkICE9IFNUREVSUl9GSUxF Tk8pIHsNCisgICAgICAgIHJldHVybiAtMTsNCisgICAgfQ0KKw0KKyAgICBmb3IgKHVpbnQzMl90 IGkgPSAwOyBpIDwgY250OyBpKyspIHsNCisgICAgICAgIGJvYXJkX3VhcnRfd3JpdGVfY2hhcihi dWZbaV0pOw0KKyAgICB9DQorICAgIHJldCA9IGNudDsNCisjZW5kaWYgLy8gV0lUSF9TRU1JSE9T VElORw0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCisNCisvKiBEbyBub3QgY29tcGlsZSBmdW5j dGlvbnMgd2l0aCBjb21tb24gaW1wbGVtZW50YXRpb24NCisgKiBpZiBidWlsZGluZyBzZW1paG9z dGluZyBsaWJyYXJ5DQorICovDQorI2lmbmRlZiBXSVRIX1NFTUlIT1NUSU5HDQorDQorc3RhdGlj IHN0cnVjdCBfcmVlbnQgc19yZWVudDsNCisNCitzdHJ1Y3QgX3JlZW50Kg0KK19fV0VBS19GVU5D VElPTl9BVFRSX18NCitfX2luaXRyZWVudCh2b2lkKQ0KK3sNCisgICAgX0dMT0JBTF9SRUVOVCA9 ICZzX3JlZW50Ow0KKyAgICBfUkVFTlRfSU5JVF9QVFIoJnNfcmVlbnQpOw0KK30NCisNCisNCitz dHJ1Y3QgX3JlZW50Kg0KK19fV0VBS19GVU5DVElPTl9BVFRSX18NCitfX2dldHJlZW50KHZvaWQp DQorew0KKyAgICByZXR1cm4gX0dMT0JBTF9SRUVOVDsNCit9DQorDQorDQoraW50DQorX19XRUFL X0ZVTkNUSU9OX0FUVFJfXw0KK19mc3RhdCAoaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqcHN0YXQpDQor ew0KKw0KKyAgICBpZiAoZmQgPCBTVERFUlJfRklMRU5PKQ0KKyAgICB7DQorICAgICAgICBwc3Rh dC0+c3RfbW9kZSA9IFNfSUZDSFI7DQorICAgICAgICByZXR1cm4gIDA7DQorICAgIH0NCisgICAg cmV0dXJuICAtMTsNCit9DQorDQorDQorX3NzaXplX3QNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9f DQorX3JlYWQgKGludCBmZCwgY2hhciAqYnVmLCBzaXplX3QgY250KQ0KK3sNCisgICAgcmV0dXJu IC0xOw0KK30NCisNCisNCitpbnQNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX2dldHBpZCAo dm9pZCkNCit7DQorICAgIHJldHVybiAtMTsNCit9DQorDQorDQoraW50DQorX19XRUFLX0ZVTkNU SU9OX0FUVFJfXw0KK19raWxsIChpbnQgc2lnKQ0KK3sNCisgICAgcmV0dXJuIC0xOw0KK30NCisN CisNCit2b2lkICoNCitfX1dFQUtfRlVOQ1RJT05fQVRUUl9fDQorX3NicmsgKGludCBpbmNyKQ0K K3sNCisgICAgZXh0ZXJuIGNoYXIgICBlbmQ7IC8qIFNldCBieSBsaW5rZXIuICAqLw0KKyAgICBz dGF0aWMgY2hhciAqIGhlYXBfZW5kOw0KKyAgICBjaGFyICogICAgICAgIHByZXZfaGVhcF9lbmQ7 DQorDQorICAgIGlmIChoZWFwX2VuZCA9PSAwKSB7DQorICAgICAgICBoZWFwX2VuZCA9ICYgZW5k Ow0KKyAgICB9DQorDQorICAgIHByZXZfaGVhcF9lbmQgPSBoZWFwX2VuZDsNCisgICAgaGVhcF9l bmQgKz0gaW5jcjsNCisNCisgICAgcmV0dXJuICh2b2lkICopIHByZXZfaGVhcF9lbmQ7DQorfQ0K Kw0KKw0KK2ludA0KK19fV0VBS19GVU5DVElPTl9BVFRSX18NCitwdGhyZWFkX3NldGNhbmNlbHN0 YXRlIChpbnQgc3RhdGUsIGludCAqb2xkc3RhdGUpDQorew0KKyAgICByZXR1cm4gMDsNCit9DQor DQorI2VuZGlmIC8vIFdJVEhfU0VNSUhPU1RJTkcNCmRpZmYgLS1naXQgYS9saWJnbG9zcy94dGVu c2Evd2luZG93LXZlY3RvcnMuUyBiL2xpYmdsb3NzL3h0ZW5zYS93aW5kb3ctdmVjdG9ycy5TDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwLi5hY2FiOGIzNTUNCi0tLSAvZGV2 L251bGwNCisrKyBiL2xpYmdsb3NzL3h0ZW5zYS93aW5kb3ctdmVjdG9ycy5TDQpAQCAtMCwwICsx LDI1MiBAQA0KKy8vIHdpbmRvdy12ZWN0b3JzLW5ldy5TIC0gUmVnaXN0ZXIgV2luZG93IE92ZXJm bG93L1VuZGVyZmxvdyBIYW5kbGVycyBmb3IgWEVBMg0KKy8vICRJZDogLy9kZXBvdC9yZWwvRWFn bGVuZXN0L1h0ZW5zYS9PUy94dG9zL3dpbmRvdy12ZWN0b3JzLW5ldy5TIzMgJA0KKw0KKy8vIENv cHlyaWdodCAoYykgMTk5OS0yMDEzIFRlbnNpbGljYSBJbmMuDQorLy8NCisvLyBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcNCisvLyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUNCisvLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nDQorLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLA0KKy8vIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0bw0KKy8vIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0bw0KKy8vIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisv Lw0KKy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkDQorLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQorLy8NCisvLyBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCisvLyBFWFBSRVNTIE9S IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YN CisvLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuDQorLy8gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkNCisvLyBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULA0KKy8v IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFDQorLy8gU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU SEUgU09GVFdBUkUuDQorDQorLy8gRXhwb3J0cw0KKy5nbG9iYWwgX1dpbmRvd092ZXJmbG93NA0K Ky5nbG9iYWwgX1dpbmRvd1VuZGVyZmxvdzQNCisuZ2xvYmFsIF9XaW5kb3dPdmVyZmxvdzgNCisu Z2xvYmFsIF9XaW5kb3dVbmRlcmZsb3c4DQorLmdsb2JhbCBfV2luZG93T3ZlcmZsb3cxMg0KKy5n bG9iYWwgX1dpbmRvd1VuZGVyZmxvdzEyDQorDQorCS8vICBOb3RlOiAgdGhlIGN1cnJlbnQgd2lu ZG93IGV4Y2VwdGlvbiB2ZWN0b3JzIGRvIG5vdCBnZW5lcmF0ZSBhbnkNCisJLy8gIGxpdGVyYWxz LiAgSGVuY2UgdGhlIGxpdGVyYWxfcHJlZml4IGRpcmVjdGl2ZSBpcyBub3QgbmVjZXNzYXJ5Lg0K KwkvLyAgU3BlY2lmeWluZyBpdCAianVzdCBpbiBjYXNlIiBjcmVhdGVzIGFuIGVtcHR5IHNlY3Rp b24gKG5hbWVkDQorCS8vICAiLldpbmRvd1ZlY3RvcnMubGl0ZXJhbCIpIHdoaWNoIGNhbiBpbiBz b21lIGNhc2VzIGNhdXNlIGxpbmtpbmcNCisJLy8gIHByb2JsZW1zICh0aGUgbGlua2VyIHNjcmlw dHMgZG9uJ3QgcGxhY2UgaXQgYW55d2hlcmUpLg0KKwkvLyAgU28gbGVhdmUgaXQgY29tbWVudGVk IG91dDoNCisJLy8NCisJLy8uYmVnaW4JbGl0ZXJhbF9wcmVmaXgJLldpbmRvd1ZlY3RvcnMNCisN CisJLnNlY3Rpb24JCS5XaW5kb3dWZWN0b3JzLnRleHQsICJheCINCisNCisvLw0KKy8vIEdFTkVS QUwgTk9URVM6DQorLy8NCisvLyBUaGVzZSB3aW5kb3cgZXhjZXB0aW9uIGhhbmRsZXJzIG5lZWQg bm90IGJlIG1vZGlmaWVkLg0KKy8vIFRoZXkgYXJlIHNwZWNpZmljIHRvIHRoZSB3aW5kb3dlZCBj YWxsIEFCSSBvbmx5Lg0KKy8vDQorLy8gVW5kZXJmbG93IEhhbmRsZXJzOg0KKy8vDQorLy8gVGhl IHVuZGVyZmxvdyBoYW5kbGVyIGZvciByZXR1cm5pbmcgZnJvbSBjYWxsW2krMV0gdG8gY2FsbFtp XQ0KKy8vIG11c3QgcHJlc2VydmUgYWxsIHRoZSByZWdpc3RlcnMgZnJvbSBjYWxsW2krMV0ncyB3 aW5kb3cuDQorLy8gSW4gcGFydGljdWxhciwgYTAgYW5kIGExIG11c3QgYmUgcHJlc2VydmVkIGJl Y2F1c2UgdGhlIFJFVFcgaW5zdHJ1Y3Rpb24NCisvLyB3aWxsIGJlIHJlZXhlY3V0ZWQgKGFuZCBt YXkgZXZlbiB1bmRlcmZsb3cgYWdhaW4gaWYgYW4gaW50ZXJ2ZW5pbmcNCisvLyBleGNlcHRpb24g aGFzIGZsdXNoZWQgY2FsbFtpXSdzIHJlZ2lzdGVycykuDQorLy8gUmVnaXN0ZXJzIGEyIGFuZCB1 cCBtYXkgY29udGFpbiByZXR1cm4gdmFsdWVzLg0KKy8vDQorLy8gVGhlIGNhbGxlciBjb3VsZCBh bHNvIHBvdGVudGlhbGx5IGFzc3VtZSB0aGF0IHRoZSBjYWxsZWUncyBhMCBhbmQgYTENCisvLyAo aXRzIG93biBhNCZhNSBpZiBjYWxsNCwgYTgmYTkgaWYgY2FsbDgsIGExMiZhMTMgaWYgY2FsbDEy KQ0KKy8vIGFyZSBjb3JyZWN0IGZvciB3aGF0ZXZlciByZWFzb24gKG5vdCBhIGNsZWFuIHRoaW5n IHRvIGRvIGluIGdlbmVyYWwsDQorLy8gYnV0IGlmIGl0J3MgcG9zc2libGUsIHVubGVzcyB0aGUg QUJJIGV4cGxpY2l0bHkgcHJvaGliaXRzIGl0LA0KKy8vIGl0IHdpbGwgZXZlbnR1YWxseSBiZSBk b25lIDopIC0tIHdoZXRoZXIgdGhlIHRoZSBBQkkgbmVlZHMgdG8NCisvLyBwcm9oaWJpdCB0aGlz IGlzIGEgZGlmZmVyZW50IHF1ZXN0aW9uKS4NCisvLw0KKy8vIFRpbWluZyBvZiBIYW5kbGVyczoN CisvLw0KKy8vIEhlcmUgaXMgYW4gb3ZlcnZpZXcgb2YgdGhlIG92ZXJoZWFkIG9mIHRha2luZyBh IHdpbmRvdyBleGNlcHRpb24sDQorLy8gaWUuIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBjeWNs ZXMgdGFrZW4gcmVsYXRpdmUgdG8gY2FzZSB3aGVyZQ0KKy8vIGFuIGV4Y2VwdGlvbiBpcyBub3Qg dGFrZW4uDQorLy8gTk9URTogIHRoZXNlIG51bWJlcnMgZG8gbm90IHRha2UgaW50byBhY2NvdW50 IGFueSBjYWNoZSBtaXNzZXMsDQorLy8gd3JpdGUgYnVmZmVyIHN0YWxscywgb3Igb3RoZXIgZXh0 ZXJuYWwgc3RhbGxzLCBpZiB0aGV5IG9jY3VyLg0KKy8vIFRoZSB0b3RhbHMgY29uc2lzdCBvZiA1 IGN5Y2xlcyB0byBlbnRlciB0aGUgaGFuZGxlciAob3IgNiBvciA3DQorLy8gZm9yIG9wdGlvbmFs IGxvbmdlciBwaXBlbGluZXMgaW4gWHRlbnNhIExYKSwgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlv bnMNCisvLyBhbmQgaW50ZXJsb2NrcyAoMm5kIGFuZCAzcmQgY29sdW1ucyBiZWxvdyksIGFuZCAy IGN5Y2xlcyBqdW1wIGRlbGF5DQorLy8gb24gcmV0dXJuICgzIGN5Y2xlcyBmb3Igb3B0aW9uYWwg bG9uZ2VyIEktc2lkZSBwaXBlbGluZSBpbiBYdGVuc2EgTFgpOg0KKy8vDQorLy8JCQlJbnN0cnVj dGlvbitidWJibGVzCVRvdGFscyAoNS1zdGFnZSkNCisvLwkJCVhFQTEJWEVBMgkJWEVBMQlYRUEy DQorLy8JT3ZlcmZsb3ctNAk3CTUJCTE0CTEyDQorLy8JT3ZlcmZsb3ctOAkxNAkxMAkJMjEJMTcN CisvLwlPdmVyZmxvdy0xMgkxOAkxNAkJMjUJMjENCisvLwlVbmRlcmZsb3ctNAk2CTUJCTEzCTEy DQorLy8JVW5kZXJmbG93LTgJMTQJMTAJCTIxCTE3DQorLy8JVW5kZXJmbG93LTEyCTE4CTE0CQky NQkyMQ0KKy8vDQorLy8JVW5kZXJmbG93LTgJMTUJMTIJCTI1CTIyCSg3LXN0YWdlOyBjb3VsZCBi ZSBtYWRlIDEgbGVzcykNCisvLwlVbmRlcmZsb3ctMTIJMTkJMTYJCTI5CTI2CSg3LXN0YWdlOyBj b3VsZCBiZSBtYWRlIDEgbGVzcykNCisNCisNCisvLyA0LVJlZ2lzdGVyIFdpbmRvdyBPdmVyZmxv dyBWZWN0b3IgKEhhbmRsZXIpDQorLy8NCisvLyBJbnZva2VkIGlmIGEgY2FsbFtpXSByZWZlcmVu Y2VkIGEgcmVnaXN0ZXIgKGE0LWExNSkNCisvLyB0aGF0IGNvbnRhaW5zIGRhdGEgZnJvbSBhbmNl c3RvciBjYWxsW2pdOw0KKy8vIGNhbGxbal0gaGFkIGRvbmUgYSBjYWxsNCB0byBjYWxsW2orMV0u DQorLy8gT24gZW50cnkgaGVyZToNCisvLwl3aW5kb3cgcm90YXRlZCB0byBjYWxsW2pdIHN0YXJ0 IHBvaW50Ow0KKy8vCWEwLWEzIGFyZSByZWdpc3RlcnMgdG8gYmUgc2F2ZWQ7DQorLy8JYTQtYTE1 IG11c3QgYmUgcHJlc2VydmVkOw0KKy8vCWE1IGlzIGNhbGxbaisxXSdzIHN0YWNrIHBvaW50ZXIu DQorDQorCS5vcmcJMHgwDQorX1dpbmRvd092ZXJmbG93NDoNCisJczMyZQlhMCwgYTUsIC0xNgkv LyBzYXZlIGEwIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTEsIGE1LCAtMTIJ Ly8gc2F2ZSBhMSB0byBjYWxsW2orMV0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWEyLCBhNSwgIC04 CS8vIHNhdmUgYTIgdG8gY2FsbFtqKzFdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhMywgYTUsICAt NAkvLyBzYXZlIGEzIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCXJmd28JCQkvLyByb3Rh dGVzIGJhY2sgdG8gY2FsbFtpXSBwb3NpdGlvbg0KKw0KKwkuc2l6ZQlfV2luZG93T3ZlcmZsb3c0 LCAuIC0gX1dpbmRvd092ZXJmbG93NA0KKw0KKw0KKy8vIDQtUmVnaXN0ZXIgV2luZG93IFVuZGVy ZmxvdyBWZWN0b3IgKEhhbmRsZXIpDQorLy8NCisvLyBJbnZva2VkIGJ5IFJFVFcgcmV0dXJuaW5n IGZyb20gY2FsbFtpKzFdIHRvIGNhbGxbaV0NCisvLyB3aGVyZSBjYWxsW2ldJ3MgcmVnaXN0ZXJz IG11c3QgYmUgcmVsb2FkZWQgKG5vdCBsaXZlIGluIEFScyk7DQorLy8gY2FsbFtpXSBoYWQgZG9u ZSBhIGNhbGw0IHRvIGNhbGxbaSsxXS4NCisvLyBPbiBlbnRyeSBoZXJlOg0KKy8vICAgICAgd2lu ZG93IHJvdGF0ZWQgdG8gY2FsbFtpXSBzdGFydCBwb2ludDsNCisvLyAgICAgIGEwLWEzIGFyZSB1 bmRlZmluZWQsIG11c3QgYmUgcmVsb2FkZWQgd2l0aCBjYWxsW2ldLnJlZ1swLi4zXTsNCisvLyAg ICAgIGE0LWExNSBtdXN0IGJlIHByZXNlcnZlZCAodGhleSBhcmUgY2FsbFtpKzFdLnJlZ1swLi4x MV0pOw0KKy8vICAgICAgYTUgaXMgY2FsbFtpKzFdJ3Mgc3RhY2sgcG9pbnRlci4NCisNCisJLm9y ZwkweDQwDQorX1dpbmRvd1VuZGVyZmxvdzQ6DQorCWwzMmUJYTAsIGE1LCAtMTYJLy8gcmVzdG9y ZSBhMCBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTEsIGE1LCAtMTIJLy8g cmVzdG9yZSBhMSBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTIsIGE1LCAg LTgJLy8gcmVzdG9yZSBhMiBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTMs IGE1LCAgLTQJLy8gcmVzdG9yZSBhMyBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrIGZyYW1lDQorCXJm d3UNCisNCisJLnNpemUJX1dpbmRvd1VuZGVyZmxvdzQsIC4gLSBfV2luZG93VW5kZXJmbG93NA0K Kw0KKw0KKy8vIDgtUmVnaXN0ZXIgV2luZG93IE92ZXJmbG93IFZlY3RvciAoSGFuZGxlcikNCisv Lw0KKy8vIEludm9rZWQgaWYgYSBjYWxsW2ldIHJlZmVyZW5jZWQgYSByZWdpc3RlciAoYTQtYTE1 KQ0KKy8vIHRoYXQgY29udGFpbnMgZGF0YSBmcm9tIGFuY2VzdG9yIGNhbGxbal07DQorLy8gY2Fs bFtqXSBoYWQgZG9uZSBhIGNhbGw4IHRvIGNhbGxbaisxXS4NCisvLyBPbiBlbnRyeSBoZXJlOg0K Ky8vCXdpbmRvdyByb3RhdGVkIHRvIGNhbGxbal0gc3RhcnQgcG9pbnQ7DQorLy8JYTAtYTcgYXJl IHJlZ2lzdGVycyB0byBiZSBzYXZlZDsNCisvLwlhOC1hMTUgbXVzdCBiZSBwcmVzZXJ2ZWQ7DQor Ly8JYTkgaXMgY2FsbFtqKzFdJ3Mgc3RhY2sgcG9pbnRlci4NCisNCisJLm9yZwkweDgwDQorX1dp bmRvd092ZXJmbG93ODoNCisJczMyZQlhMCwgYTksIC0xNgkvLyBzYXZlIGEwIHRvIGNhbGxbaisx XSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTAsIGExLCAtMTIJLy8gYTAgPC0gY2FsbFtqLTFdJ3Mg c3AgKHVzZWQgdG8gZmluZCBlbmQgb2YgY2FsbFtqXSdzIGZyYW1lKQ0KKwlzMzJlCWExLCBhOSwg LTEyCS8vIHNhdmUgYTEgdG8gY2FsbFtqKzFdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhMiwgYTks ICAtOAkvLyBzYXZlIGEyIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTMsIGE5 LCAgLTQJLy8gc2F2ZSBhMyB0byBjYWxsW2orMV0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWE0LCBh MCwgLTMyCS8vIHNhdmUgYTQgdG8gY2FsbFtqXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTUsIGEw LCAtMjgJLy8gc2F2ZSBhNSB0byBjYWxsW2pdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhNiwgYTAs IC0yNAkvLyBzYXZlIGE2IHRvIGNhbGxbal0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWE3LCBhMCwg LTIwCS8vIHNhdmUgYTcgdG8gY2FsbFtqXSdzIHN0YWNrIGZyYW1lDQorCXJmd28JCQkvLyByb3Rh dGVzIGJhY2sgdG8gY2FsbFtpXSBwb3NpdGlvbg0KKw0KKwkuc2l6ZQlfV2luZG93T3ZlcmZsb3c4 LCAuIC0gX1dpbmRvd092ZXJmbG93OA0KKw0KKw0KKy8vIDgtUmVnaXN0ZXIgV2luZG93IFVuZGVy ZmxvdyBWZWN0b3IgKEhhbmRsZXIpDQorLy8NCisvLyBJbnZva2VkIGJ5IFJFVFcgcmV0dXJuaW5n IGZyb20gY2FsbFtpKzFdIHRvIGNhbGxbaV0NCisvLyB3aGVyZSBjYWxsW2ldJ3MgcmVnaXN0ZXJz IG11c3QgYmUgcmVsb2FkZWQgKG5vdCBsaXZlIGluIEFScyk7DQorLy8gY2FsbFtpXSBoYWQgZG9u ZSBhIGNhbGw4IHRvIGNhbGxbaSsxXS4NCisvLyBPbiBlbnRyeSBoZXJlOg0KKy8vCXdpbmRvdyBy b3RhdGVkIHRvIGNhbGxbaV0gc3RhcnQgcG9pbnQ7DQorLy8JYTAtYTcgYXJlIHVuZGVmaW5lZCwg bXVzdCBiZSByZWxvYWRlZCB3aXRoIGNhbGxbaV0ucmVnWzAuLjddOw0KKy8vCWE4LWExNSBtdXN0 IGJlIHByZXNlcnZlZCAodGhleSBhcmUgY2FsbFtpKzFdLnJlZ1swLi43XSk7DQorLy8JYTkgaXMg Y2FsbFtpKzFdJ3Mgc3RhY2sgcG9pbnRlci4NCisNCisJLm9yZwkweEMwDQorX1dpbmRvd1VuZGVy Zmxvdzg6DQorCWwzMmUJYTAsIGE5LCAtMTYJLy8gcmVzdG9yZSBhMCBmcm9tIGNhbGxbaSsxXSdz IHN0YWNrIGZyYW1lDQorCWwzMmUJYTEsIGE5LCAtMTIJLy8gcmVzdG9yZSBhMSBmcm9tIGNhbGxb aSsxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTIsIGE5LCAgLTgJLy8gcmVzdG9yZSBhMiBmcm9t IGNhbGxbaSsxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTcsIGExLCAtMTIJLy8gYTcgPC0gY2Fs bFtpLTFdJ3Mgc3AgKHVzZWQgdG8gZmluZCBlbmQgb2YgY2FsbFtpXSdzIGZyYW1lKQ0KKwlsMzJl CWEzLCBhOSwgIC00CS8vIHJlc3RvcmUgYTMgZnJvbSBjYWxsW2krMV0ncyBzdGFjayBmcmFtZQ0K KwlsMzJlCWE0LCBhNywgLTMyCS8vIHJlc3RvcmUgYTQgZnJvbSBjYWxsW2ldJ3Mgc3RhY2sgZnJh bWUNCisJbDMyZQlhNSwgYTcsIC0yOAkvLyByZXN0b3JlIGE1IGZyb20gY2FsbFtpXSdzIHN0YWNr IGZyYW1lDQorCWwzMmUJYTYsIGE3LCAtMjQJLy8gcmVzdG9yZSBhNiBmcm9tIGNhbGxbaV0ncyBz dGFjayBmcmFtZS4uLy4uLy4uLy4vbGliZ2xvc3MveHRlbnNhL3dpbmRvdy12ZWN0b3JzLlMNCisJ bDMyZQlhNywgYTcsIC0yMAkvLyByZXN0b3JlIGE3IGZyb20gY2FsbFtpXSdzIHN0YWNrIGZyYW1l DQorCXJmd3UNCisNCisJLnNpemUJX1dpbmRvd1VuZGVyZmxvdzgsIC4gLSBfV2luZG93VW5kZXJm bG93OA0KKw0KKw0KKy8vIDEyLVJlZ2lzdGVyIFdpbmRvdyBPdmVyZmxvdyBWZWN0b3IgKEhhbmRs ZXIpDQorLy8NCisvLyBJbnZva2VkIGlmIGEgY2FsbFtpXSByZWZlcmVuY2VkIGEgcmVnaXN0ZXIg KGE0LWExNSkNCisvLyB0aGF0IGNvbnRhaW5zIGRhdGEgZnJvbSBhbmNlc3RvciBjYWxsW2pdOw0K Ky8vIGNhbGxbal0gaGFkIGRvbmUgYSBjYWxsMTIgdG8gY2FsbFtqKzFdLg0KKy8vIE9uIGVudHJ5 IGhlcmU6DQorLy8Jd2luZG93IHJvdGF0ZWQgdG8gY2FsbFtqXSBzdGFydCBwb2ludDsNCisvLwlh MC1hMTEgYXJlIHJlZ2lzdGVycyB0byBiZSBzYXZlZDsNCisvLwlhMTItYTE1IG11c3QgYmUgcHJl c2VydmVkOw0KKy8vCWExMyBpcyBjYWxsW2orMV0ncyBzdGFjayBwb2ludGVyLg0KKw0KKwkub3Jn CTB4MTAwDQorX1dpbmRvd092ZXJmbG93MTI6DQorCXMzMmUJYTAsICBhMTMsIC0xNgkvLyBzYXZl IGEwIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTAsICBhMSwgIC0xMgkvLyBh MCA8LSBjYWxsW2otMV0ncyBzcCAodXNlZCB0byBmaW5kIGVuZCBvZiBjYWxsW2pdJ3MgZnJhbWUp DQorCXMzMmUJYTEsICBhMTMsIC0xMgkvLyBzYXZlIGExIHRvIGNhbGxbaisxXSdzIHN0YWNrIGZy YW1lDQorCXMzMmUJYTIsICBhMTMsICAtOAkvLyBzYXZlIGEyIHRvIGNhbGxbaisxXSdzIHN0YWNr IGZyYW1lDQorCXMzMmUJYTMsICBhMTMsICAtNAkvLyBzYXZlIGEzIHRvIGNhbGxbaisxXSdzIHN0 YWNrIGZyYW1lDQorCXMzMmUJYTQsICBhMCwgIC00OAkvLyBzYXZlIGE0IHRvIGVuZCBvZiBjYWxs W2pdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhNSwgIGEwLCAgLTQ0CS8vIHNhdmUgYTUgdG8gZW5k IG9mIGNhbGxbal0ncyBzdGFjayBmcmFtZQ0KKwlzMzJlCWE2LCAgYTAsICAtNDAJLy8gc2F2ZSBh NiB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNrIGZyYW1lDQorCXMzMmUJYTcsICBhMCwgIC0zNgkv LyBzYXZlIGE3IHRvIGVuZCBvZiBjYWxsW2pdJ3Mgc3RhY2sgZnJhbWUNCisJczMyZQlhOCwgIGEw LCAgLTMyCS8vIHNhdmUgYTggdG8gZW5kIG9mIGNhbGxbal0ncyBzdGFjayBmcmFtZQ0KKwlzMzJl CWE5LCAgYTAsICAtMjgJLy8gc2F2ZSBhOSB0byBlbmQgb2YgY2FsbFtqXSdzIHN0YWNrIGZyYW1l DQorCXMzMmUJYTEwLCBhMCwgIC0yNAkvLyBzYXZlIGExMCB0byBlbmQgb2YgY2FsbFtqXSdzIHN0 YWNrIGZyYW1lDQorCXMzMmUJYTExLCBhMCwgIC0yMAkvLyBzYXZlIGExMSB0byBlbmQgb2YgY2Fs bFtqXSdzIHN0YWNrIGZyYW1lDQorCXJmd28JCQkvLyByb3RhdGVzIGJhY2sgdG8gY2FsbFtpXSBw b3NpdGlvbg0KKw0KKwkuc2l6ZQlfV2luZG93T3ZlcmZsb3cxMiwgLiAtIF9XaW5kb3dPdmVyZmxv dzEyDQorDQorDQorLy8gMTItUmVnaXN0ZXIgV2luZG93IFVuZGVyZmxvdyBWZWN0b3IgKEhhbmRs ZXIpDQorLy8NCisvLyBJbnZva2VkIGJ5IFJFVFcgcmV0dXJuaW5nIGZyb20gY2FsbFtpKzFdIHRv IGNhbGxbaV0NCisvLyB3aGVyZSBjYWxsW2ldJ3MgcmVnaXN0ZXJzIG11c3QgYmUgcmVsb2FkZWQg KG5vdCBsaXZlIGluIEFScyk7DQorLy8gY2FsbFtpXSBoYWQgZG9uZSBhIGNhbGwxMiB0byBjYWxs W2krMV0uDQorLy8gT24gZW50cnkgaGVyZToNCisvLwl3aW5kb3cgcm90YXRlZCB0byBjYWxsW2ld IHN0YXJ0IHBvaW50Ow0KKy8vCWEwLWExMSBhcmUgdW5kZWZpbmVkLCBtdXN0IGJlIHJlbG9hZGVk IHdpdGggY2FsbFtpXS5yZWdbMC4uMTFdOw0KKy8vCWExMi1hMTUgbXVzdCBiZSBwcmVzZXJ2ZWQg KHRoZXkgYXJlIGNhbGxbaSsxXS5yZWdbMC4uM10pOw0KKy8vCWExMyBpcyBjYWxsW2krMV0ncyBz dGFjayBwb2ludGVyLg0KKw0KKwkub3JnCTB4MTQwDQorX1dpbmRvd1VuZGVyZmxvdzEyOg0KKwls MzJlCWEwLCAgYTEzLCAtMTYJLy8gcmVzdG9yZSBhMCBmcm9tIGNhbGxbaSsxXSdzIHN0YWNrIGZy YW1lDQorCWwzMmUJYTEsICBhMTMsIC0xMgkvLyByZXN0b3JlIGExIGZyb20gY2FsbFtpKzFdJ3Mg c3RhY2sgZnJhbWUNCisJbDMyZQlhMiwgIGExMywgIC04CS8vIHJlc3RvcmUgYTIgZnJvbSBjYWxs W2krMV0ncyBzdGFjayBmcmFtZQ0KKwlsMzJlCWExMSwgYTEsICAtMTIJLy8gYTExIDwtIGNhbGxb aS0xXSdzIHNwICh1c2VkIHRvIGZpbmQgZW5kIG9mIGNhbGxbaV0ncyBmcmFtZSkNCisJbDMyZQlh MywgIGExMywgIC00CS8vIHJlc3RvcmUgYTMgZnJvbSBjYWxsW2krMV0ncyBzdGFjayBmcmFtZQ0K KwlsMzJlCWE0LCAgYTExLCAtNDgJLy8gcmVzdG9yZSBhNCBmcm9tIGVuZCBvZiBjYWxsW2ldJ3Mg c3RhY2sgZnJhbWUNCisJbDMyZQlhNSwgIGExMSwgLTQ0CS8vIHJlc3RvcmUgYTUgZnJvbSBlbmQg b2YgY2FsbFtpXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTYsICBhMTEsIC00MAkvLyByZXN0b3Jl IGE2IGZyb20gZW5kIG9mIGNhbGxbaV0ncyBzdGFjayBmcmFtZQ0KKwlsMzJlCWE3LCAgYTExLCAt MzYJLy8gcmVzdG9yZSBhNyBmcm9tIGVuZCBvZiBjYWxsW2ldJ3Mgc3RhY2sgZnJhbWUNCisJbDMy ZQlhOCwgIGExMSwgLTMyCS8vIHJlc3RvcmUgYTggZnJvbSBlbmQgb2YgY2FsbFtpXSdzIHN0YWNr IGZyYW1lDQorCWwzMmUJYTksICBhMTEsIC0yOAkvLyByZXN0b3JlIGE5IGZyb20gZW5kIG9mIGNh bGxbaV0ncyBzdGFjayBmcmFtZQ0KKwlsMzJlCWExMCwgYTExLCAtMjQJLy8gcmVzdG9yZSBhMTAg ZnJvbSBlbmQgb2YgY2FsbFtpXSdzIHN0YWNrIGZyYW1lDQorCWwzMmUJYTExLCBhMTEsIC0yMAkv LyByZXN0b3JlIGExMSBmcm9tIGVuZCBvZiBjYWxsW2ldJ3Mgc3RhY2sgZnJhbWUNCisJcmZ3dQ0K Kw0KKwkuc2l6ZQlfV2luZG93VW5kZXJmbG93MTIsIC4gLSBfV2luZG93VW5kZXJmbG93MTINCisN CisNCisJLy8uZW5kCWxpdGVyYWxfcHJlZml4DQorCS50ZXh0DQotLSANCjIuMzQuMQ0KDQo=