From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by sourceware.org (Postfix) with ESMTPS id 6019A3858C52 for ; Wed, 24 May 2023 03:39:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6019A3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684899558; x=1716435558; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=UcHNZVwiYKFnW/qrCY5nwcPQpYeHUtLJRhwI40OoaEw=; b=ZHWEljENtEGL83vqwlyOnhgkcvYYMkpn4J2zdagJ8H6XBeZEZSSBYAhO 9KES5YGZNhQUwTWsoe8x9zEyiKT7aR0uf2OJN/YmZ4vdt1EGIOTPNWnaw aBpGdhkVj4A+MBJgWnPRqnr4tTdiGqUeoK5+5QGqkmCQWrmV0jcyBOoar 5V34xyxdAmb0L+KMct0aDbaEotTuEBxI/S+Q3vzky3wDZlwkOhajSwfIk 1joBi+7XV/vTO/GHp+6VoqZicMQmpGpTDJ9//nbFtlHdqqE/snvQdyNmv hu+9kv0RpsHveX1uFQ+r7er7LSJ5zjTXQTo8InhQm2KIQeFvsdFqERLcZ g==; X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="381685022" X-IronPort-AV: E=Sophos;i="6.00,188,1681196400"; d="scan'208";a="381685022" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 May 2023 20:39:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="769271083" X-IronPort-AV: E=Sophos;i="6.00,188,1681196400"; d="scan'208";a="769271083" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga008.fm.intel.com with ESMTP; 23 May 2023 20:39:15 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 23 May 2023 20:39:14 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 23 May 2023 20:39:14 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.107) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 23 May 2023 20:39:14 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MOcEvVwv5GXrrQWbJKygBPhzmZXcf6MhiUS7W+PEZBWDcHHkhezfffFFOb0EJg3skxeHYKB8LPhF36GpIDtvu9Knsy3EsCfXOn4V+3zBLcD5X1hwm7HYd9M3/BvehHPujb/IvqFt52lY/DigJ55ygQnSE7ES1N/wVi/Czp+wSW0q77M99W2J2wRRfhCKqPlfCYcu2Hf7OcPRn93Z0lXKhdbCnvB5uk9eRX2pzetb64ryhK4+78U2zaFnQl23/9qMcN1M3DCKTtdwf3DYheDV6EywrpvZi16RqQ95CUtEVO8GOxQhBFjh/cwNb1JpkcD2oMF/fOmw8gbTCNiMZpjeKA== 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=UcHNZVwiYKFnW/qrCY5nwcPQpYeHUtLJRhwI40OoaEw=; b=G2ZBEiLlXC4uTBaW9mPWsubdDOOnIe2bdXQ+etnsGqXpPpArd8QclWzFGtNTu7Ty+RUt3Gr/1dGenOvCvdcYvsDXwngt/00SwjVozaGTCJ+VrgtMFr3P7sTnh4+DH/c830TqOAUMvQMry+uvxfBRDnNjJwIiQStiu09edj3DnuIb+aPmxaUSIk1RaILporrMCeQDoBIKWGEoRa4OU+UnhGv+Txh/NaglSU7+X+HnYhdcaMFGxQP3yw+47ncmUfG3y3JydLNBqEcqLeFZVxEuXPG9OuoD7EXWdx28eDiSUwRbOW6502Xgfk9OHJkztXWnlzZ4nQ+QhKiwXAdE3o50xA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by SA2PR11MB4873.namprd11.prod.outlook.com (2603:10b6:806:113::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.14; Wed, 24 May 2023 03:39:11 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::bbc5:f013:1f53:10a9]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::bbc5:f013:1f53:10a9%3]) with mapi id 15.20.6411.028; Wed, 24 May 2023 03:39:11 +0000 From: "Li, Pan2" To: Kito Cheng , "juzhe.zhong@rivai.ai" CC: "gcc-patches@gcc.gnu.org" , "kito.cheng@gmail.com" , "palmer@dabbelt.com" , "palmer@rivosinc.com" , "jeffreyalaw@gmail.com" , "rdapp.gcc@gmail.com" , Richard Sandiford Subject: RE: [PATCH V5] RISC-V: Add RVV comparison autovectorization Thread-Topic: [PATCH V5] RISC-V: Add RVV comparison autovectorization Thread-Index: AQHZjfAL8i87GJgKukSdFlyerGYBVa9oxYCAgAABKFA= Date: Wed, 24 May 2023 03:39:11 +0000 Message-ID: References: <20230524032917.1598882-1-juzhe.zhong@rivai.ai> In-Reply-To: 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5908:EE_|SA2PR11MB4873:EE_ x-ms-office365-filtering-correlation-id: f85d0c68-f804-419c-13f9-08db5c086ff5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nryRms0AiE9mEpZgj5b4qQ7BIKZIomz0/gN25pUlQ24sdaku26iI0PfpFKj2wxlzn4zGiQSnqoxNrCY6/RmZIO8BjaC5OOtbocttdaNAhCM764BpbsRS4rZm5fCjkx7kZuV7MBNJsGrsUjwISLdwj68F2Myzv8SMOG9xOL7Vy2xJdffqdJ1pt9ayTz96SY8tOicu5b517/CsKZVbgo++u/vpP/nty7vrLeWA73mg2KTZnbQJDsQL6kLQMK3GHI6myDVuaD8h3AvTBVtTdDoO+TdDlFlI0exwPQLRno8kNkEASSS3QSnK5pXiWX9qyaQDiWKVUYb7cF5HbkyUsfsl+/3qqrTgvX7fTpCMnAC9UVYHW3Arknr1JlHosma/lH9EToU+V05y4g7+bDnUWxIj5rPalDMe3sEp1XnwPQLBGW81sfcnMkF0/x7A/Zx8LM6oMQYdL1hE0552lvt/6F3+W98KeJQt+V2sq8+EH4J8JSFfEtyFyzDWhFdPkm1KkNR7xZ8omQmVAfWRevhHGtJ00PldoVKuK6nBsAGM1lUwfZ9vQXBhr7wyFysb/IHSsR3gWNCccfY5ZwvG+KKmoYMTI+gL+LOlQxG1UiN8tNlXLCqne2P2lavC5LOdMrBHbUZ/ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(396003)(136003)(366004)(346002)(376002)(451199021)(84970400001)(2906002)(54906003)(30864003)(52536014)(5660300002)(8936002)(8676002)(41300700001)(76116006)(110136005)(66476007)(66556008)(66946007)(66446008)(64756008)(478600001)(316002)(4326008)(7696005)(71200400001)(33656002)(55016003)(53546011)(9686003)(6506007)(26005)(122000001)(86362001)(38100700002)(186003)(83380400001)(38070700005)(82960400001)(21314003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y1dUNUcrQUE2emRRelorWFVSUzg0TWlOQ3FUWWF0VWtNQUdscTc5VDh2bko5?= =?utf-8?B?QndSYWpwZVhuTkdsWWx5bUl5QXBtT29Kby94WXhJeTdQM1ZOV08xdkROMlBp?= =?utf-8?B?bjZwbyt5QWRxejB1aEExTkQ3UU5nNWZiMjNHaDNzUEc0a3hOL2pwRHVPTk1N?= =?utf-8?B?eEpjeDhkZlhmZXdSaHIvQWJXaWc5MGFwUFlxMDE2Y0czekxmdDYvMkRxMllt?= =?utf-8?B?bHdqNk5QUHdhZFdPNWxQTWMrbUtrakNhc1lDQVNZaXdNSTZqelRaYk1PY0xr?= =?utf-8?B?anJvQ3cydHFEYjJUeGg3SVpnNU1wVWx0VDB0Uk00VmZNOXRvcFRrQzdHQ2hG?= =?utf-8?B?TjdNSDY0RVYzalg4RGY5REliVE1GUm9nRThybHg3K3JkYTZIYWZXWEZaUDR2?= =?utf-8?B?SFVRZS9yTmlpenRtRldEOTNNb3hFNkYvYi9sZVIvSlVXaVliVzJIOTA3VzVW?= =?utf-8?B?Q3hZZGY2K3BvRDB2K0ZyYXpoalZ4R3pFNVFpOWsvZG9ZbXRBZFBDNnR2ckRG?= =?utf-8?B?WDJ2VW1rOG5WT3I2M0hkOGZVSE5INlJxN0ZSdGJPVjZFbWxuVWVncGdDcTVT?= =?utf-8?B?OUR3V1JQYnJSNGFJZEV5VXZlM1Z2cEErOUJEUkRDeTJzL1pmeFhMMWJvSkMx?= =?utf-8?B?T3U1UFlWcVY3elFiRk1DL0tjOGprU1daa25rK1BWN0NTNFFXZEJteVpvTS9W?= =?utf-8?B?V3Izazhpc0ZmTm8zTnczYTF3bTFpK3FENmw3enF1cE1Rb0d4VWNyQUlxNjZh?= =?utf-8?B?ODFiNGZwRGRrSTRpMk5Ba0o0eThVajR5TXI4b0ZGOVE1SWk4Q0V6VGNsajhu?= =?utf-8?B?ZDQvb3JDd3JVT3AwaGxjRmJrajZLOXQvNnlPcEUyRjhQVldiQ0FFZk1OM1JO?= =?utf-8?B?eXU5WnFJM2xHM0hZTVpVRUt0ZVZodDhHcVFPaGt3cENIWkwvV0l0NzFBSWJS?= =?utf-8?B?OFRRUTFtTTNBeTRxK00xRlEvclFwWlBTTjIrOTQ1QnFtU3pkalBwVWdQcW52?= =?utf-8?B?VWpxN3Zyb2RwZlFsYTIwejc5T3J2U0pqZ2dNSU9VUWFtakRyY0lyV3hWNmxo?= =?utf-8?B?RnZXQXNWMVcrR3RSaWp3eHpoNlQvZmJLRVFWTmVSTWpvb3NFUXFoNHdPN2d1?= =?utf-8?B?OVduMlNFeWVqNGtuM2dvTWZmNW4ydXgxME9GRFlGUG9RcU5WTXcvVFlQR1FD?= =?utf-8?B?UmxZbzFQWjFhL3FVNVoyUWx1bk5sdUxTNVd5cmQ3Uk9XRFBQRFFIVGE5WmY1?= =?utf-8?B?aCtzczRNQTdMdGRQWjk1OXpmN3RpQU01TVQ2cXpFSzZSTlYzeUNCM25ocno3?= =?utf-8?B?VWNMQUYyQ2FtMVYvL2Q5alpWTVMrdThQQWtVZDZRajMwQVExa0pNNEdVYU1L?= =?utf-8?B?LzhHelI4bHJ3ZkRVd1FralY1eVlkU2NIMzVtMVFiQXNkYmV5eWI5eDNYbXV2?= =?utf-8?B?c2E1RjE2UHlvMTdHUjZ1QXYyQ1BtNjBMSkRDYjdETVdJMUlCWVNOL0J4d2lp?= =?utf-8?B?ZUdzWWszaGdsNVFTMUIzOXhiMkZ2amgrK1VQTjFLbmxJd2NYR09XcGdoUGJw?= =?utf-8?B?Sk5BYWlBVGRqWm82MG9US29SM3NvTlZNeVhNSzRnUnI3ampEYzk4U1RYaWwr?= =?utf-8?B?R0VuOXkweHRhK1o2YnF5Q1NDbDFXWGJWbHJOYngxdnUxcEo1a3k2cFhIRkx5?= =?utf-8?B?RUZ4WWtrVWtXQUxXdUxWMU4wdXpXd3pHOEpPclloTjF5THdJYnU4aDFpVllR?= =?utf-8?B?WWxLcmFEVVBoZFg0aDBlaDZaKzUxZHlMeFp4dEwxNW9OTThsdUl4eEdmN0V6?= =?utf-8?B?cXpkK3lxUitLcUlwblljbkdZMDFmVWRVQ2ErTnpKRkhzN1h5bkxmM2ZlNlI1?= =?utf-8?B?aWFlSWduWExEYTlhOVorTllXUTczaDRjWDk1M1ZucEE4bXVHMVVzWGc4SlZX?= =?utf-8?B?dEtKeHkwOTZMZEJIN3o2VUNiWG9jT2ZLQnQ1YjMzZkpzNG00T3dSamUwU05U?= =?utf-8?B?L2tucnlYTlRIVWpHNTZ4VXMwNjVVV2ZXK2ZVL0srckRlZGxWM0VESFYxVzdN?= =?utf-8?B?N3pDYXdnUjdkSnFNK29CVGZzQ0szV3hLc2NkRWJLaWRZaWNSVFYwYjZzNzZN?= =?utf-8?Q?vqnI=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f85d0c68-f804-419c-13f9-08db5c086ff5 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2023 03:39:11.0647 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SyWy9r42OU+EUuyQJealQvwcYzbZ3mrS37x3ysEi0R6nvYCINQsGOEyFb0+R/za4yrisIAAQxQ0tEV52l1TIOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4873 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,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: Q29tbWl0dGVkLCB0aGFua3MgS2l0by4NCg0KUGFuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQpGcm9tOiBHY2MtcGF0Y2hlcyA8Z2NjLXBhdGNoZXMtYm91bmNlcytwYW4yLmxpPWludGVs LmNvbUBnY2MuZ251Lm9yZz4gT24gQmVoYWxmIE9mIEtpdG8gQ2hlbmcgdmlhIEdjYy1wYXRjaGVz DQpTZW50OiBXZWRuZXNkYXksIE1heSAyNCwgMjAyMyAxMTozNSBBTQ0KVG86IGp1emhlLnpob25n QHJpdmFpLmFpDQpDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IGtpdG8uY2hlbmdAZ21haWwu Y29tOyBwYWxtZXJAZGFiYmVsdC5jb207IHBhbG1lckByaXZvc2luYy5jb207IGplZmZyZXlhbGF3 QGdtYWlsLmNvbTsgcmRhcHAuZ2NjQGdtYWlsLmNvbTsgUmljaGFyZCBTYW5kaWZvcmQgPHJpY2hh cmQuc2FuZGlmb3JkQGFybS5jb20+DQpTdWJqZWN0OiBSZTogW1BBVENIIFY1XSBSSVNDLVY6IEFk ZCBSVlYgY29tcGFyaXNvbiBhdXRvdmVjdG9yaXphdGlvbg0KDQpMR1RNDQoNCk9uIFdlZCwgTWF5 IDI0LCAyMDIzIGF0IDExOjI54oCvQU0gPGp1emhlLnpob25nQHJpdmFpLmFpPiB3cm90ZToNCj4N Cj4gRnJvbTogSnV6aGUtWmhvbmcgPGp1emhlLnpob25nQHJpdmFpLmFpPg0KPg0KPiBUaGlzIHBh dGNoIGVuYWJsZSBSVlYgYXV0by12ZWN0b3JpemF0aW9uIGluY2x1ZGluZyBmbG9hdGluZy1wb2lu dCANCj4gdW5vcmRlciBhbmQgb3JkZXIgY29tcGFyaXNvbi4NCj4NCj4gVGhlIHRlc3RjYXNlcyBh cmUgbGV2ZXJhZ2VkIGZyb20gUmljaGFyZC4NCj4gU28gaW5jbHVkZSBSaWNoYXJkIGFzIGNvLWF1 dGhvci4NCj4NCj4gQW5kIHRoaXMgcGF0Y2ggaXMgdGhlIHByZXJlcXVpc2l0ZSBwYXRjaCBmb3Ig bXkgY3VycmVudCBtaWRkbGUtZW5kIHdvcmsuDQo+IFdpdGhvdXQgdGhpcyBwYXRjaCwgSSBjYW4n dCBzdXBwb3J0IGxlbl9tYXNrX3h4eCBtaWRkbGUtZW5kIHBhdHRlcm4gDQo+IHNpbmNlIHRoZSBt YXNrIGlzIGdlbmVyYXRlZCBieSBjb21wYXJpc29uLg0KPg0KPiBGb3IgZXhhbXBsZSwNCj4gZm9y IChpbnQgaS4uLjsgaSA8IG4uKQ0KPiAgIGlmIChjb25kW2ldKQ0KPiAgICAgIGFbaV0gPSBiW2ld DQo+DQo+IFdlIG5lZWQgbGVuX21hc2tfbG9hZC9sZW5fbWFza19zdG9yZSBmb3Igc3VjaCBjb2Rl IGFuZCBJIGFtIGdvbm5hIA0KPiBzdXBwb3J0IHRoZW0gaW4gdGhlIG1pZGRsZS1lbmQgYWZ0ZXIg dGhpcyBwYXRjaCBpcyBtZXJnZWQuDQo+DQo+IEJvdGggaW50ZWdlciAmJiBmbG9hdGluZyAob3Jk ZXIgYW5kIHVub3JkZXIpIGFyZSB0ZXN0ZWQuDQo+IGJ1aWx0ICYmIHJlZ3Jlc3Npb24gcGFzc2Vk Lg0KPg0KPiBPayBmb3IgdHJ1bms/DQo+DQo+IFRoYW5rcy4NCj4NCj4gQ28tQXV0aG9yZWQtQnk6 IFJpY2hhcmQgU2FuZGlmb3JkIDxyaWNoYXJkLnNhbmRpZm9yZEBhcm0uY29tPg0KPg0KPiBnY2Mv Q2hhbmdlTG9nOg0KPg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2L2F1dG92ZWMubWQgKEB2Y29u ZF9tYXNrXzxtb2RlPjx2bT4pOiBOZXcgcGF0dGVybi4NCj4gICAgICAgICAodmVjX2NtcDxtb2Rl Pjx2bT4pOiBOZXcgcGF0dGVybi4NCj4gICAgICAgICAodmVjX2NtcHU8bW9kZT48dm0+KTogTmV3 IHBhdHRlcm4uDQo+ICAgICAgICAgKHZjb25kPFY6bW9kZT48Vkk6bW9kZT4pOiBOZXcgcGF0dGVy bi4NCj4gICAgICAgICAodmNvbmR1PFY6bW9kZT48Vkk6bW9kZT4pOiBOZXcgcGF0dGVybi4NCj4g ICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaCAoZW51bSBpbnNuX3R5cGUpOiBB ZGQgbmV3IGVudW0uDQo+ICAgICAgICAgKGVtaXRfdmxtYXhfbWVyZ2VfaW5zbik6IE5ldyBmdW5j dGlvbi4NCj4gICAgICAgICAoZW1pdF92bG1heF9jbXBfaW5zbik6IERpdHRvLg0KPiAgICAgICAg IChlbWl0X3ZsbWF4X2NtcF9tdV9pbnNuKTogRGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF92ZWNf Y21wKTogRGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF92ZWNfY21wX2Zsb2F0KTogRGl0dG8uDQo+ ICAgICAgICAgKGV4cGFuZF92Y29uZCk6IERpdHRvLg0KPiAgICAgICAgICogY29uZmlnL3Jpc2N2 L3Jpc2N2LXYuY2MgKGVtaXRfdmxtYXhfbWVyZ2VfaW5zbik6IERpdHRvLg0KPiAgICAgICAgIChl bWl0X3ZsbWF4X2NtcF9pbnNuKTogRGl0dG8uDQo+ICAgICAgICAgKGVtaXRfdmxtYXhfY21wX211 X2luc24pOiBEaXR0by4NCj4gICAgICAgICAoZ2V0X2NtcF9pbnNuX2NvZGUpOiBEaXR0by4NCj4g ICAgICAgICAoZXhwYW5kX3ZlY19jbXApOiBEaXR0by4NCj4gICAgICAgICAoZXhwYW5kX3ZlY19j bXBfZmxvYXQpOiBEaXR0by4NCj4gICAgICAgICAoZXhwYW5kX3Zjb25kKTogRGl0dG8uDQo+DQo+ IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNj di9ydnYvcnZ2LmV4cDoNCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv Y21wL3Zjb25kLTEuYzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL2NtcC92Y29uZC0yLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmQtMy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kX3J1bi0xLmM6IE5ldyB0ZXN0 Lg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmRfcnVu LTIuYzogTmV3IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L2NtcC92Y29uZF9ydW4tMy5jOiBOZXcgdGVzdC4NCj4NCj4gLS0tDQo+ICBnY2MvY29uZmlnL3Jp c2N2L2F1dG92ZWMubWQgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrKysrKysNCj4gIGdjYy9j b25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggICAgICAgICAgICAgICB8ICAgOSArDQo+ICBnY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgICAgICAgICAgICAgICAgICAgfCAyNTUgKysrKysrKysr KysrKysrKysrDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTEuYyAgICAgICAg ICAgfCAxNTcgKysrKysrKysrKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmQt Mi5jICAgICAgICAgICB8ICA3NSArKysrKysNCj4gIC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAv dmNvbmQtMy5jICAgICAgICAgICB8ICAxMyArDQo+ICAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvY21w L3Zjb25kX3J1bi0xLmMgICAgICAgfCAgNDkgKysrKw0KPiAgLi4uL3Jpc2N2L3J2di9hdXRvdmVj L2NtcC92Y29uZF9ydW4tMi5jICAgICAgIHwgIDc2ICsrKysrKw0KPiAgLi4uL3Jpc2N2L3J2di9h dXRvdmVjL2NtcC92Y29uZF9ydW4tMy5jICAgICAgIHwgICA2ICsNCj4gIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvcnZ2LmV4cCAgICB8ICAgMiArDQo+ICAxMCBmaWxlcyBjaGFu Z2VkLCA3NTQgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTEuYw0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvY21wL3Zjb25kLTIuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTMuYw0KPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IA0KPiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvY21wL3Zjb25kX3J1bi0xLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCANCj4gZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL2NtcC92Y29uZF9ydW4tMi5jDQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgDQo+IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv YXV0b3ZlYy9jbXAvdmNvbmRfcnVuLTMuYw0KPg0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9y aXNjdi9hdXRvdmVjLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi9hdXRvdmVjLm1kIA0KPiBpbmRleCA3 Yzg3YjYwMTJmNi4uNGVlZWFiNjI0YTQgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3Yv YXV0b3ZlYy5tZA0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L2F1dG92ZWMubWQNCj4gQEAgLTE2 MiwzICsxNjIsMTE1IEBADQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2N2 X3ZlY3Rvcjo6UlZWX0JJTk9QLCBvcGVyYW5kcyk7DQo+ICAgIERPTkU7DQo+ICB9KQ0KPiArDQo+ ICs7OyANCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KPiArPT09PQ0KPiArOzsgPT0gQ29tcGFyaXNvbnMgYW5k IHNlbGVjdHMNCj4gKzs7IA0KPiArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICs9PT09DQo+ICsNCj4gKzs7IA0K PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tIDs7IC0tLS0gW0lOVCxGUF0gU2VsZWN0IGJhc2VkIG9u IG1hc2tzIDs7IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tDQo+ICs7OyBJbmNsdWRlcyBtZXJn aW5nIHBhdHRlcm5zIGZvcjoNCj4gKzs7IC0gdm1lcmdlLnZ2DQo+ICs7OyAtIHZtZXJnZS52eA0K PiArOzsgLSB2Zm1lcmdlLnZmDQo+ICs7OyANCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArLS0tLQ0KPiAr DQo+ICsoZGVmaW5lX2V4cGFuZCAiQHZjb25kX21hc2tfPG1vZGU+PHZtPiINCj4gKyAgWyhtYXRj aF9vcGVyYW5kOlYgMCAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsgICAobWF0Y2hfb3BlcmFuZDo8 Vk0+IDMgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArICAgKG1hdGNoX29wZXJhbmQ6ViAxICJub25t ZW1vcnlfb3BlcmFuZCIpDQo+ICsgICAobWF0Y2hfb3BlcmFuZDpWIDIgInJlZ2lzdGVyX29wZXJh bmQiKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICsgIHsNCj4gKyAgICAvKiBUaGUgb3JkZXIg b2YgdmNvbmRfbWFzayBpcyBvcHBvc2l0ZSB0byBwcmVkX21lcmdlLiAgKi8NCj4gKyAgICBzdGQ6 OnN3YXAgKG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7DQo+ICsgICAgcmlzY3ZfdmVjdG9yOjpl bWl0X3ZsbWF4X21lcmdlX2luc24gKGNvZGVfZm9yX3ByZWRfbWVyZ2UgKDxNT0RFPm1vZGUpLA0K PiArICAgICAgICAgICAgICAgICAgICAgICByaXNjdl92ZWN0b3I6OlJWVl9NRVJHRV9PUCwgb3Bl cmFuZHMpOw0KPiArICAgIERPTkU7DQo+ICsgIH0NCj4gKykNCj4gKw0KPiArOzsgDQo+ICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gKy0tLS0NCj4gKzs7IC0tLS0gW0lOVCxGUF0gQ29tcGFyaXNvbnMNCj4gKzs7 IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tDQo+ICs7OyBJbmNsdWRlczoNCj4gKzs7IC0gdm1z PGVxL25lL2x0dS9sdC9sZXUvbGUvZ3R1L2d0Pi48dnYvdngvdmk+DQo+ICs7OyANCj4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiArLS0tLQ0KPiArDQo+ICsoZGVmaW5lX2V4cGFuZCAidmVjX2NtcDxtb2RlPjx2 bT4iDQo+ICsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWTT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIp DQo+ICsgICAgICAgKG1hdGNoX29wZXJhdG9yOjxWTT4gMSAiY29tcGFyaXNvbl9vcGVyYXRvciIN Cj4gKyAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIikNCj4g KyAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIildKSldDQo+ ICsgICJUQVJHRVRfVkVDVE9SIg0KPiArICB7DQo+ICsgICAgcmlzY3ZfdmVjdG9yOjpleHBhbmRf dmVjX2NtcCAob3BlcmFuZHNbMF0sIEdFVF9DT0RFIChvcGVyYW5kc1sxXSksDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOw0KPiAr ICAgIERPTkU7DQo+ICsgIH0NCj4gKykNCj4gKw0KPiArKGRlZmluZV9leHBhbmQgInZlY19jbXB1 PG1vZGU+PHZtPiINCj4gKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZNPiAwICJyZWdpc3Rlcl9v cGVyYW5kIikNCj4gKyAgICAgICAobWF0Y2hfb3BlcmF0b3I6PFZNPiAxICJjb21wYXJpc29uX29w ZXJhdG9yIg0KPiArICAgICAgICAgWyhtYXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJh bmQiKQ0KPiArICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDMgInJlZ2lzdGVyX29wZXJhbmQi KV0pKV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IiDQo+ICsgIHsNCj4gKyAgICByaXNjdl92ZWN0b3I6 OmV4cGFuZF92ZWNfY21wIChvcGVyYW5kc1swXSwgR0VUX0NPREUgKG9wZXJhbmRzWzFdKSwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1sz XSk7DQo+ICsgICAgRE9ORTsNCj4gKyAgfQ0KPiArKQ0KPiArDQo+ICsoZGVmaW5lX2V4cGFuZCAi dmVjX2NtcDxtb2RlPjx2bT4iDQo+ICsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWTT4gMCAicmVn aXN0ZXJfb3BlcmFuZCIpDQo+ICsgICAgICAgKG1hdGNoX29wZXJhdG9yOjxWTT4gMSAiY29tcGFy aXNvbl9vcGVyYXRvciINCj4gKyAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWRiAyICJyZWdpc3Rl cl9vcGVyYW5kIikNCj4gKyAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWRiAzICJyZWdpc3Rlcl9v cGVyYW5kIildKSldDQo+ICsgICJUQVJHRVRfVkVDVE9SIg0KPiArICB7DQo+ICsgICAgcmlzY3Zf dmVjdG9yOjpleHBhbmRfdmVjX2NtcF9mbG9hdCAob3BlcmFuZHNbMF0sIEdFVF9DT0RFIChvcGVy YW5kc1sxXSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVy YW5kc1syXSwgb3BlcmFuZHNbM10sIGZhbHNlKTsNCj4gKyAgICBET05FOw0KPiArICB9DQo+ICsp DQo+ICsNCj4gKzs7IA0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICstLS0tDQo+ICs7OyAtLS0tIFtJTlQs RlBdIENvbXBhcmUgYW5kIHNlbGVjdA0KPiArOzsgDQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKy0tLS0g OzsgVGhlIHBhdHRlcm5zIGluIHRoaXMgc2VjdGlvbiBhcmUgc3ludGhldGljLg0KPiArOzsgDQo+ ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gKy0tLS0NCj4gKw0KPiArKGRlZmluZV9leHBhbmQgInZjb25kPFY6 bW9kZT48Vkk6bW9kZT4iDQo+ICsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAicmVnaXN0ZXJf b3BlcmFuZCIpDQo+ICsgICAgICAgKGlmX3RoZW5fZWxzZTpWDQo+ICsgICAgICAgICAobWF0Y2hf b3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciINCj4gKyAgICAgICAgICAgWyhtYXRjaF9v cGVyYW5kOlZJIDQgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VkkgNSAicmVnaXN0ZXJfb3BlcmFuZCIpXSkNCj4gKyAgICAgICAgIChtYXRjaF9vcGVy YW5kOlYgMSAicmVnaXN0ZXJfb3BlcmFuZCIpDQo+ICsgICAgICAgICAobWF0Y2hfb3BlcmFuZDpW IDIgInJlZ2lzdGVyX29wZXJhbmQiKSkpXQ0KPiArICAiVEFSR0VUX1ZFQ1RPUiAmJiBrbm93bl9l cSAoR0VUX01PREVfTlVOSVRTICg8VjpNT0RFPm1vZGUpLA0KPiArICAgICAgICAgICAgICAgR0VU X01PREVfTlVOSVRTICg8Vkk6TU9ERT5tb2RlKSkiDQo+ICsgIHsNCj4gKyAgICByaXNjdl92ZWN0 b3I6OmV4cGFuZF92Y29uZCAob3BlcmFuZHMpOw0KPiArICAgIERPTkU7DQo+ICsgIH0NCj4gKykN Cj4gKw0KPiArKGRlZmluZV9leHBhbmQgInZjb25kdTxWOm1vZGU+PFZJOm1vZGU+Ig0KPiArICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWIDAgInJlZ2lzdGVyX29wZXJhbmQiKQ0KPiArICAgICAgIChp Zl90aGVuX2Vsc2U6Vg0KPiArICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25f b3BlcmF0b3IiDQo+ICsgICAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWSSA0ICJyZWdpc3Rlcl9v cGVyYW5kIikNCj4gKyAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDUgInJlZ2lzdGVyX29w ZXJhbmQiKV0pDQo+ICsgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWIDEgInJlZ2lzdGVyX29wZXJh bmQiKQ0KPiArICAgICAgICAgKG1hdGNoX29wZXJhbmQ6ViAyICJyZWdpc3Rlcl9vcGVyYW5kIikp KV0NCj4gKyAgIlRBUkdFVF9WRUNUT1IgJiYga25vd25fZXEgKEdFVF9NT0RFX05VTklUUyAoPFY6 TU9ERT5tb2RlKSwNCj4gKyAgICAgICAgICAgICAgIEdFVF9NT0RFX05VTklUUyAoPFZJOk1PREU+ bW9kZSkpIg0KPiArICB7DQo+ICsgICAgcmlzY3ZfdmVjdG9yOjpleHBhbmRfdmNvbmQgKG9wZXJh bmRzKTsNCj4gKyAgICBET05FOw0KPiArICB9DQo+ICspDQo+IGRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oIA0KPiBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJv dG9zLmggaW5kZXggMTU5YjUxYTEyMTAuLjVmNzhmZDU3OWJiIA0KPiAxMDA2NDQNCj4gLS0tIGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXByb3Rvcy5oDQo+IEBAIC0xMzcsNiArMTM3LDkgQEAgZW51bSBpbnNuX3R5cGUNCj4g ICAgUlZWX01JU0NfT1AgPSAxLA0KPiAgICBSVlZfVU5PUCA9IDIsDQo+ICAgIFJWVl9CSU5PUCA9 IDMsDQo+ICsgIFJWVl9NRVJHRV9PUCA9IDQsDQo+ICsgIFJWVl9DTVBfT1AgPSA0LA0KPiArICBS VlZfQ01QX01VX09QID0gUlZWX0NNUF9PUCArIDIsIC8qICsyIG1lYW5zIG1hc2sgYW5kIG1hc2tv ZmYgDQo+ICsgb3BlcmFuZC4gICovDQo+ICB9Ow0KPiAgZW51bSB2bG11bF90eXBlDQo+ICB7DQo+ IEBAIC0xNzQsNiArMTc3LDkgQEAgdm9pZCBlbWl0X3ZsbWF4X3ZzZXR2bCAobWFjaGluZV9tb2Rl LCBydHgpOyAgdm9pZCANCj4gZW1pdF9oYXJkX3ZsbWF4X3ZzZXR2bCAobWFjaGluZV9tb2RlLCBy dHgpOyAgdm9pZCBlbWl0X3ZsbWF4X2luc24gDQo+ICh1bnNpZ25lZCwgaW50LCBydHggKiwgcnR4 ID0gMCk7ICB2b2lkIGVtaXRfbm9udmxtYXhfaW5zbiAodW5zaWduZWQsIA0KPiBpbnQsIHJ0eCAq LCBydHgpOw0KPiArdm9pZCBlbWl0X3ZsbWF4X21lcmdlX2luc24gKHVuc2lnbmVkLCBpbnQsIHJ0 eCAqKTsgdm9pZCANCj4gK2VtaXRfdmxtYXhfY21wX2luc24gKHVuc2lnbmVkLCBydHggKik7IHZv aWQgZW1pdF92bG1heF9jbXBfbXVfaW5zbiANCj4gKyh1bnNpZ25lZCwgcnR4ICopOw0KPiAgZW51 bSB2bG11bF90eXBlIGdldF92bG11bCAobWFjaGluZV9tb2RlKTsgIHVuc2lnbmVkIGludCBnZXRf cmF0aW8gDQo+IChtYWNoaW5lX21vZGUpOyAgdW5zaWduZWQgaW50IGdldF9uZiAobWFjaGluZV9t b2RlKTsgQEAgLTIwNCw2ICsyMTAsOCANCj4gQEAgYm9vbCBzaW1tNV9wIChydHgpOyAgYm9vbCBu ZWdfc2ltbTVfcCAocnR4KTsgICNpZmRlZiBSVFhfQ09ERSAgYm9vbCANCj4gaGFzX3ZpX3Zhcmlh bnRfcCAocnR4X2NvZGUsIHJ0eCk7DQo+ICt2b2lkIGV4cGFuZF92ZWNfY21wIChydHgsIHJ0eF9j b2RlLCBydHgsIHJ0eCk7IGJvb2wgDQo+ICtleHBhbmRfdmVjX2NtcF9mbG9hdCAocnR4LCBydHhf Y29kZSwgcnR4LCBydHgsIGJvb2wpOw0KPiAgI2VuZGlmDQo+ICBib29sIHNldzY0X3NjYWxhcl9o ZWxwZXIgKHJ0eCAqLCBydHggKiwgcnR4LCBtYWNoaW5lX21vZGUsDQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCwgdm9pZCAoKikocnR4ICosIHJ0eCkpOyBAQCAtMjI2LDYgDQo+ICsy MzQsNyBAQCBtYWNoaW5lX21vZGUgcHJlZmVycmVkX3NpbWRfbW9kZSAoc2NhbGFyX21vZGUpOyAg DQo+IG9wdF9tYWNoaW5lX21vZGUgZ2V0X21hc2tfbW9kZSAobWFjaGluZV9tb2RlKTsgIHZvaWQg ZXhwYW5kX3ZlY19zZXJpZXMgDQo+IChydHgsIHJ0eCwgcnR4KTsgIHZvaWQgZXhwYW5kX3ZlY19p bml0IChydHgsIHJ0eCk7DQo+ICt2b2lkIGV4cGFuZF92Y29uZCAocnR4ICopOw0KPiAgLyogUm91 bmRpbmcgbW9kZSBiaXRmaWVsZCBmb3IgZml4ZWQgcG9pbnQgVlhSTS4gICovICBlbnVtIA0KPiB2 eHJtX2ZpZWxkX2VudW0gIHsgZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5j YyANCj4gYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgaW5kZXggMWNkYzRhOTk3MDEuLjEw ZGU1YTE5OTM3IDEwMDY0NA0KPiAtLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MNCj4g KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjDQo+IEBAIC0zODIsNiArMzgyLDUwIEBA IGVtaXRfbm9udmxtYXhfaW5zbiAodW5zaWduZWQgaWNvZGUsIGludCBvcF9udW0sIHJ0eCAqb3Bz LCBydHggYXZsKQ0KPiAgICBlLmVtaXRfaW5zbiAoKGVudW0gaW5zbl9jb2RlKSBpY29kZSwgb3Bz KTsgIH0NCj4NCj4gKy8qIFRoaXMgZnVuY3Rpb24gZW1pdHMgbWVyZ2UgaW5zdHJ1Y3Rpb24uICAq LyB2b2lkIA0KPiArZW1pdF92bG1heF9tZXJnZV9pbnNuICh1bnNpZ25lZCBpY29kZSwgaW50IG9w X251bSwgcnR4ICpvcHMpIHsNCj4gKyAgbWFjaGluZV9tb2RlIGRlc3RfbW9kZSA9IEdFVF9NT0RF IChvcHNbMF0pOw0KPiArICBtYWNoaW5lX21vZGUgbWFza19tb2RlID0gZ2V0X21hc2tfbW9kZSAo ZGVzdF9tb2RlKS5yZXF1aXJlICgpOw0KPiArICBpbnNuX2V4cGFuZGVyPDExPiBlICgvKk9QX05V TSovIG9wX251bSwgLypIQVNfREVTVF9QKi8gdHJ1ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAvKkZVTExZX1VOTUFTS0VEX1AqLyBmYWxzZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAv KlVTRV9SRUFMX01FUkdFX1AqLyBmYWxzZSwgLypIQVNfQVZMX1AqLyB0cnVlLA0KPiArICAgICAg ICAgICAgICAgICAgICAgIC8qVkxNQVhfUCovIHRydWUsIGRlc3RfbW9kZSwgbWFza19tb2RlKTsN Cj4gKyAgZS5zZXRfcG9saWN5IChUQUlMX0FOWSk7DQo+ICsgIGUuZW1pdF9pbnNuICgoZW51bSBp bnNuX2NvZGUpIGljb2RlLCBvcHMpOyB9DQo+ICsNCj4gKy8qIFRoaXMgZnVuY3Rpb24gZW1pdHMg Y21wIGluc3RydWN0aW9uLiAgKi8gdm9pZCBlbWl0X3ZsbWF4X2NtcF9pbnNuIA0KPiArKHVuc2ln bmVkIGljb2RlLCBydHggKm9wcykgew0KPiArICBtYWNoaW5lX21vZGUgbW9kZSA9IEdFVF9NT0RF IChvcHNbMF0pOw0KPiArICBpbnNuX2V4cGFuZGVyPDExPiBlICgvKk9QX05VTSovIFJWVl9DTVBf T1AsIC8qSEFTX0RFU1RfUCovIHRydWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgLypGVUxM WV9VTk1BU0tFRF9QKi8gdHJ1ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAvKlVTRV9SRUFM X01FUkdFX1AqLyBmYWxzZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAvKkhBU19BVkxfUCov IHRydWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgLypWTE1BWF9QKi8gdHJ1ZSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAvKkRFU1RfTU9ERSovIG1vZGUsIC8qTUFTS19NT0RFKi8gbW9k ZSk7DQo+ICsgIGUuc2V0X3BvbGljeSAoTUFTS19BTlkpOw0KPiArICBlLmVtaXRfaW5zbiAoKGVu dW0gaW5zbl9jb2RlKSBpY29kZSwgb3BzKTsgfQ0KPiArDQo+ICsvKiBUaGlzIGZ1bmN0aW9uIGVt aXRzIGNtcCB3aXRoIE1VIGluc3RydWN0aW9uLiAgKi8gdm9pZCANCj4gK2VtaXRfdmxtYXhfY21w X211X2luc24gKHVuc2lnbmVkIGljb2RlLCBydHggKm9wcykgew0KPiArICBtYWNoaW5lX21vZGUg bW9kZSA9IEdFVF9NT0RFIChvcHNbMF0pOw0KPiArICBpbnNuX2V4cGFuZGVyPDExPiBlICgvKk9Q X05VTSovIFJWVl9DTVBfTVVfT1AsIC8qSEFTX0RFU1RfUCovIHRydWUsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgLypGVUxMWV9VTk1BU0tFRF9QKi8gZmFsc2UsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgLypVU0VfUkVBTF9NRVJHRV9QKi8gdHJ1ZSwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAvKkhBU19BVkxfUCovIHRydWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgLypWTE1B WF9QKi8gdHJ1ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAvKkRFU1RfTU9ERSovIG1vZGUs IC8qTUFTS19NT0RFKi8gbW9kZSk7DQo+ICsgIGUuc2V0X3BvbGljeSAoTUFTS19VTkRJU1RVUkJF RCk7DQo+ICsgIGUuZW1pdF9pbnNuICgoZW51bSBpbnNuX2NvZGUpIGljb2RlLCBvcHMpOyB9DQo+ ICsNCj4gIC8qIEV4cGFuZCBzZXJpZXMgY29uc3QgdmVjdG9yLiAgKi8NCj4NCj4gIHZvaWQNCj4g QEAgLTEzMjMsNCArMTM2NywyMTUgQEAgZXhwYW5kX3ZlY19pbml0IChydHggdGFyZ2V0LCBydHgg dmFscykNCj4gICAgZXhwYW5kX3ZlY3Rvcl9pbml0X2luc2VydF9lbGVtcyAodGFyZ2V0LCB2LCBu ZWx0cyk7ICB9DQo+DQo+ICsvKiBHZXQgaW5zbiBjb2RlIGZvciBjb3JyZXNwb25kaW5nIGNvbXBh cmlzb24uICAqLw0KPiArDQo+ICtzdGF0aWMgaW5zbl9jb2RlDQo+ICtnZXRfY21wX2luc25fY29k ZSAocnR4X2NvZGUgY29kZSwgbWFjaGluZV9tb2RlIG1vZGUpIHsNCj4gKyAgaW5zbl9jb2RlIGlj b2RlOw0KPiArICBzd2l0Y2ggKGNvZGUpDQo+ICsgICAgew0KPiArICAgIGNhc2UgRVE6DQo+ICsg ICAgY2FzZSBORToNCj4gKyAgICBjYXNlIExFOg0KPiArICAgIGNhc2UgTEVVOg0KPiArICAgIGNh c2UgR1Q6DQo+ICsgICAgY2FzZSBHVFU6DQo+ICsgICAgY2FzZSBMVEdUOg0KPiArICAgICAgaWNv ZGUgPSBjb2RlX2Zvcl9wcmVkX2NtcCAobW9kZSk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBj YXNlIExUOg0KPiArICAgIGNhc2UgTFRVOg0KPiArICAgIGNhc2UgR0U6DQo+ICsgICAgY2FzZSBH RVU6DQo+ICsgICAgICBpZiAoRkxPQVRfTU9ERV9QIChtb2RlKSkNCj4gKyAgICAgICBpY29kZSA9 IGNvZGVfZm9yX3ByZWRfY21wIChtb2RlKTsNCj4gKyAgICAgIGVsc2UNCj4gKyAgICAgICBpY29k ZSA9IGNvZGVfZm9yX3ByZWRfbHRnZSAobW9kZSk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBk ZWZhdWx0Og0KPiArICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiArICAgIH0NCj4gKyAgcmV0 dXJuIGljb2RlOw0KPiArfQ0KPiArDQo+ICsvKiBFeHBhbmQgYW4gUlZWIGNvbXBhcmlzb24uICAq Lw0KPiArDQo+ICt2b2lkDQo+ICtleHBhbmRfdmVjX2NtcCAocnR4IHRhcmdldCwgcnR4X2NvZGUg Y29kZSwgcnR4IG9wMCwgcnR4IG9wMSkgew0KPiArICBtYWNoaW5lX21vZGUgbWFza19tb2RlID0g R0VUX01PREUgKHRhcmdldCk7DQo+ICsgIG1hY2hpbmVfbW9kZSBkYXRhX21vZGUgPSBHRVRfTU9E RSAob3AwKTsNCj4gKyAgaW5zbl9jb2RlIGljb2RlID0gZ2V0X2NtcF9pbnNuX2NvZGUgKGNvZGUs IGRhdGFfbW9kZSk7DQo+ICsNCj4gKyAgaWYgKGNvZGUgPT0gTFRHVCkNCj4gKyAgICB7DQo+ICsg ICAgICBydHggbHQgPSBnZW5fcmVnX3J0eCAobWFza19tb2RlKTsNCj4gKyAgICAgIHJ0eCBndCA9 IGdlbl9yZWdfcnR4IChtYXNrX21vZGUpOw0KPiArICAgICAgZXhwYW5kX3ZlY19jbXAgKGx0LCBM VCwgb3AwLCBvcDEpOw0KPiArICAgICAgZXhwYW5kX3ZlY19jbXAgKGd0LCBHVCwgb3AwLCBvcDEp Ow0KPiArICAgICAgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkIChJT1IsIG1hc2tfbW9kZSk7DQo+ICsg ICAgICBydHggb3BzW10gPSB7dGFyZ2V0LCBsdCwgZ3R9Ow0KPiArICAgICAgZW1pdF92bG1heF9p bnNuIChpY29kZSwgcmlzY3ZfdmVjdG9yOjpSVlZfQklOT1AsIG9wcyk7DQo+ICsgICAgICByZXR1 cm47DQo+ICsgICAgfQ0KPiArDQo+ICsgIHJ0eCBjbXAgPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwg bWFza19tb2RlLCBvcDAsIG9wMSk7DQo+ICsgIHJ0eCBvcHNbXSA9IHt0YXJnZXQsIGNtcCwgb3Aw LCBvcDF9Ow0KPiArICBlbWl0X3ZsbWF4X2NtcF9pbnNuIChpY29kZSwgb3BzKTsNCj4gK30NCj4g Kw0KPiArdm9pZA0KPiArZXhwYW5kX3ZlY19jbXAgKHJ0eCB0YXJnZXQsIHJ0eF9jb2RlIGNvZGUs IHJ0eCBtYXNrLCBydHggbWFza29mZiwgcnR4IG9wMCwNCj4gKyAgICAgICAgICAgICAgIHJ0eCBv cDEpDQo+ICt7DQo+ICsgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUgPSBHRVRfTU9ERSAodGFyZ2V0 KTsNCj4gKyAgbWFjaGluZV9tb2RlIGRhdGFfbW9kZSA9IEdFVF9NT0RFIChvcDApOw0KPiArICBp bnNuX2NvZGUgaWNvZGUgPSBnZXRfY21wX2luc25fY29kZSAoY29kZSwgZGF0YV9tb2RlKTsNCj4g Kw0KPiArICBpZiAoY29kZSA9PSBMVEdUKQ0KPiArICAgIHsNCj4gKyAgICAgIHJ0eCBsdCA9IGdl bl9yZWdfcnR4IChtYXNrX21vZGUpOw0KPiArICAgICAgcnR4IGd0ID0gZ2VuX3JlZ19ydHggKG1h c2tfbW9kZSk7DQo+ICsgICAgICBleHBhbmRfdmVjX2NtcCAobHQsIExULCBtYXNrLCBtYXNrb2Zm LCBvcDAsIG9wMSk7DQo+ICsgICAgICBleHBhbmRfdmVjX2NtcCAoZ3QsIEdULCBtYXNrLCBtYXNr b2ZmLCBvcDAsIG9wMSk7DQo+ICsgICAgICBpY29kZSA9IGNvZGVfZm9yX3ByZWQgKElPUiwgbWFz a19tb2RlKTsNCj4gKyAgICAgIHJ0eCBvcHNbXSA9IHt0YXJnZXQsIGx0LCBndH07DQo+ICsgICAg ICBlbWl0X3ZsbWF4X2luc24gKGljb2RlLCBSVlZfQklOT1AsIG9wcyk7DQo+ICsgICAgICByZXR1 cm47DQo+ICsgICAgfQ0KPiArDQo+ICsgIHJ0eCBjbXAgPSBnZW5fcnR4X2ZtdF9lZSAoY29kZSwg bWFza19tb2RlLCBvcDAsIG9wMSk7DQo+ICsgIHJ0eCBvcHNbXSA9IHt0YXJnZXQsIG1hc2ssIG1h c2tvZmYsIGNtcCwgb3AwLCBvcDF9Ow0KPiArICBlbWl0X3ZsbWF4X2NtcF9tdV9pbnNuIChpY29k ZSwgb3BzKTsgfQ0KPiArDQo+ICsvKiBFeHBhbmQgYW4gUlZWIGZsb2F0aW5nLXBvaW50IGNvbXBh cmlzb246DQo+ICsNCj4gKyAgIElmIENBTl9JTlZFUlRfUCBpcyB0cnVlLCB0aGUgY2FsbGVyIGNh biBhbHNvIGhhbmRsZSBpbnZlcnRlZCByZXN1bHRzOw0KPiArICAgcmV0dXJuIHRydWUgaWYgdGhl IHJlc3VsdCBpcyBpbiBmYWN0IGludmVydGVkLiAgKi8NCj4gKw0KPiArYm9vbA0KPiArZXhwYW5k X3ZlY19jbXBfZmxvYXQgKHJ0eCB0YXJnZXQsIHJ0eF9jb2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBv cDEsDQo+ICsgICAgICAgICAgICAgICAgICAgICBib29sIGNhbl9pbnZlcnRfcCkgew0KPiArICBt YWNoaW5lX21vZGUgbWFza19tb2RlID0gR0VUX01PREUgKHRhcmdldCk7DQo+ICsgIG1hY2hpbmVf bW9kZSBkYXRhX21vZGUgPSBHRVRfTU9ERSAob3AwKTsNCj4gKw0KPiArICAvKiBJZiBjYW5faW52 ZXJ0X3AgPSB0cnVlOg0KPiArICAgICBJdCBzdWZmaWNlcyB0byBpbXBsZW1lbnQgYSB1Pj0gYiBh cyAhKGEgPCBiKSBidXQgd2l0aCB0aGUgTmFOcyBtYXNrZWQgb2ZmOg0KPiArDQo+ICsgICAgICAg dm1mZXEudnYgICAgdjAsIHZhLCB2YQ0KPiArICAgICAgIHZtZmVxLnZ2ICAgIHYxLCB2YiwgdmIN Cj4gKyAgICAgICB2bWFuZC5tbSAgICB2MCwgdjAsIHYxDQo+ICsgICAgICAgdm1mbHQudnYgICAg djAsIHZhLCB2YiwgdjAudA0KPiArICAgICAgIHZtbm90Lm0gICAgIHYwLCB2MA0KPiArDQo+ICsg ICAgIEFuZCwgaWYgIUhPTk9SX1NOQU5TLCB0aGVuIHlvdSBjYW4gcmVtb3ZlIHRoZSB2bWFuZC5t bSBieSBtYXNraW5nIHRoZQ0KPiArICAgICBzZWNvbmQgdm1mZXEudnY6DQo+ICsNCj4gKyAgICAg ICB2bWZlcS52diAgICB2MCwgdmEsIHZhDQo+ICsgICAgICAgdm1mZXEudnYgICAgdjAsIHZiLCB2 YiwgdjAudA0KPiArICAgICAgIHZtZmx0LnZ2ICAgIHYwLCB2YSwgdmIsIHYwLnQNCj4gKyAgICAg ICB2bW5vdC5tICAgICB2MCwgdjANCj4gKw0KPiArICAgICBJZiBjYW5faW52ZXJ0X3AgPSBmYWxz ZToNCj4gKw0KPiArICAgICAgICMgRXhhbXBsZSBvZiBpbXBsZW1lbnRpbmcgaXNncmVhdGVyKCkN Cj4gKyAgICAgICB2bWZlcS52diB2MCwgdmEsIHZhICAgICAgICAjIE9ubHkgc2V0IHdoZXJlIEEg aXMgbm90IE5hTi4NCj4gKyAgICAgICB2bWZlcS52diB2MSwgdmIsIHZiICAgICAgICAjIE9ubHkg c2V0IHdoZXJlIEIgaXMgbm90IE5hTi4NCj4gKyAgICAgICB2bWFuZC5tbSB2MCwgdjAsIHYxICAg ICAgICAjIE9ubHkgc2V0IHdoZXJlIEEgYW5kIEIgYXJlIG9yZGVyZWQsDQo+ICsgICAgICAgdm1m Z3QudnYgdjAsIHZhLCB2YiwgdjAudCAgIyAgc28gb25seSBzZXQgZmxhZ3Mgb24gb3JkZXJlZCB2 YWx1ZXMuDQo+ICsgICovDQo+ICsNCj4gKyAgcnR4IGVxMCA9IGdlbl9yZWdfcnR4IChtYXNrX21v ZGUpOw0KPiArICBydHggZXExID0gZ2VuX3JlZ19ydHggKG1hc2tfbW9kZSk7DQo+ICsgIHN3aXRj aCAoY29kZSkNCj4gKyAgICB7DQo+ICsgICAgY2FzZSBFUToNCj4gKyAgICBjYXNlIE5FOg0KPiAr ICAgIGNhc2UgTFQ6DQo+ICsgICAgY2FzZSBMRToNCj4gKyAgICBjYXNlIEdUOg0KPiArICAgIGNh c2UgR0U6DQo+ICsgICAgY2FzZSBMVEdUOg0KPiArICAgICAgLyogVGhlcmUgaXMgbmF0aXZlIHN1 cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgKi8NCj4gKyAgICAgIGV4cGFuZF92ZWNfY21wICh0 YXJnZXQsIGNvZGUsIG9wMCwgb3AxKTsNCj4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4gKyAgICBj YXNlIFVORVE6DQo+ICsgICAgY2FzZSBPUkRFUkVEOg0KPiArICAgIGNhc2UgVU5PUkRFUkVEOg0K PiArICAgIGNhc2UgVU5MVDoNCj4gKyAgICBjYXNlIFVOTEU6DQo+ICsgICAgY2FzZSBVTkdUOg0K PiArICAgIGNhc2UgVU5HRToNCj4gKyAgICAgIC8qIHZtZmVxLnZ2IHYwLCB2YSwgdmEgICovDQo+ ICsgICAgICBleHBhbmRfdmVjX2NtcCAoZXEwLCBFUSwgb3AwLCBvcDApOw0KPiArICAgICAgaWYg KEhPTk9SX1NOQU5TIChkYXRhX21vZGUpKQ0KPiArICAgICAgIHsNCj4gKyAgICAgICAgIC8qDQo+ ICsgICAgICAgICAgICB2bWZlcS52diAgICB2MSwgdmIsIHZiDQo+ICsgICAgICAgICAgICB2bWFu ZC5tbSAgICB2MCwgdjAsIHYxDQo+ICsgICAgICAgICAqLw0KPiArICAgICAgICAgZXhwYW5kX3Zl Y19jbXAgKGVxMSwgRVEsIG9wMSwgb3AxKTsNCj4gKyAgICAgICAgIGluc25fY29kZSBpY29kZSA9 IGNvZGVfZm9yX3ByZWQgKEFORCwgbWFza19tb2RlKTsNCj4gKyAgICAgICAgIHJ0eCBvcHNbXSA9 IHtlcTAsIGVxMCwgZXExfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoaWNvZGUsIHJp c2N2X3ZlY3Rvcjo6UlZWX0JJTk9QLCBvcHMpOw0KPiArICAgICAgIH0NCj4gKyAgICAgIGVsc2UN Cj4gKyAgICAgICB7DQo+ICsgICAgICAgICAvKiB2bWZlcS52diAgICB2MCwgdmIsIHZiLCB2MC50 ICAqLw0KPiArICAgICAgICAgZXhwYW5kX3ZlY19jbXAgKGVxMCwgRVEsIGVxMCwgZXEwLCBvcDEs IG9wMSk7DQo+ICsgICAgICAgfQ0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgZGVmYXVsdDoNCj4g KyAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgaWYgKGNvZGUg PT0gT1JERVJFRCkNCj4gKyAgICB7DQo+ICsgICAgICBlbWl0X21vdmVfaW5zbiAodGFyZ2V0LCBl cTApOw0KPiArICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBUaGVy ZSBpcyBuYXRpdmUgc3VwcG9ydCBmb3IgdGhlIGludmVyc2UgY29tcGFyaXNvbi4gICovICBjb2Rl ID0gDQo+ICsgcmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVkIChjb2RlKTsgIGlmIChj b2RlID09IE9SREVSRUQpDQo+ICsgICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgZXEwKTsNCj4g KyAgZWxzZQ0KPiArICAgIGV4cGFuZF92ZWNfY21wIChlcTAsIGNvZGUsIGVxMCwgZXEwLCBvcDAs IG9wMSk7DQo+ICsNCj4gKyAgaWYgKGNhbl9pbnZlcnRfcCkNCj4gKyAgICB7DQo+ICsgICAgICBl bWl0X21vdmVfaW5zbiAodGFyZ2V0LCBlcTApOw0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsg ICAgfQ0KPiArICBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX25vdCAobWFza19tb2Rl KTsNCj4gKyAgcnR4IG9wc1tdID0ge3RhcmdldCwgZXEwfTsNCj4gKyAgZW1pdF92bG1heF9pbnNu IChpY29kZSwgUlZWX1VOT1AsIG9wcyk7DQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0K PiArLyogRXhwYW5kIGFuIFJWViB2Y29uZCBwYXR0ZXJuIHdpdGggb3BlcmFuZHMgT1BTLiAgREFU QV9NT0RFIGlzIHRoZSBtb2RlDQo+ICsgICBvZiB0aGUgZGF0YSBiZWluZyBtZXJnZWQgYW5kIENN UF9NT0RFIGlzIHRoZSBtb2RlIG9mIHRoZSB2YWx1ZXMgYmVpbmcNCj4gKyAgIGNvbXBhcmVkLiAg Ki8NCj4gKw0KPiArdm9pZA0KPiArZXhwYW5kX3Zjb25kIChydHggKm9wcykNCj4gK3sNCj4gKyAg bWFjaGluZV9tb2RlIGNtcF9tb2RlID0gR0VUX01PREUgKG9wc1s0XSk7DQo+ICsgIG1hY2hpbmVf bW9kZSBkYXRhX21vZGUgPSBHRVRfTU9ERSAob3BzWzFdKTsNCj4gKyAgbWFjaGluZV9tb2RlIG1h c2tfbW9kZSA9IGdldF9tYXNrX21vZGUgKGNtcF9tb2RlKS5yZXF1aXJlICgpOw0KPiArICBydHgg bWFzayA9IGdlbl9yZWdfcnR4IChtYXNrX21vZGUpOw0KPiArICBpZiAoRkxPQVRfTU9ERV9QIChj bXBfbW9kZSkpDQo+ICsgICAgew0KPiArICAgICAgaWYgKGV4cGFuZF92ZWNfY21wX2Zsb2F0ICht YXNrLCBHRVRfQ09ERSAob3BzWzNdKSwgb3BzWzRdLCBvcHNbNV0sIHRydWUpKQ0KPiArICAgICAg IHN0ZDo6c3dhcCAob3BzWzFdLCBvcHNbMl0pOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAg IGV4cGFuZF92ZWNfY21wIChtYXNrLCBHRVRfQ09ERSAob3BzWzNdKSwgb3BzWzRdLCBvcHNbNV0p Ow0KPiArICBlbWl0X2luc24gKA0KPiArICAgIGdlbl92Y29uZF9tYXNrIChkYXRhX21vZGUsIGRh dGFfbW9kZSwgb3BzWzBdLCBvcHNbMV0sIG9wc1syXSwgDQo+ICttYXNrKSk7IH0NCj4gKw0KPiAg fSAvLyBuYW1lc3BhY2UgcmlzY3ZfdmVjdG9yDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTEuYyANCj4gYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTEuYw0KPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uYzg4MjY1NGNiNDkNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvY21wL3Zjb25kLTEuYw0KPiBAQCAtMCwwICsxLDE1NyBAQA0KPiArLyogeyBkZy1kbyBj b21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFyY2g9cnYzMmdj diAtbWFiaT1pbHAzMmQgDQo+ICstLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2Fs YWJsZSIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ICsjZGVm aW5lIERFRl9WQ09ORF9WQVIoREFUQV9UWVBFLCBDTVBfVFlQRSwgQ09ORCwgU1VGRklYKSAgICAg ICBcDQo+ICsgIHZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIHZjb25kX3Zhcl8jI0NNUF9UWVBFIyNfIyNTVUZGSVggKERB VEFfVFlQRSAqX19yZXN0cmljdF9fIHIsICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREFUQV9UWVBFICpfX3Jlc3RyaWN0X18geCwgICBcDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgREFUQV9UWVBFICpfX3Jlc3RyaWN0X18geSwgICBcDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01QX1RZUEUgKl9fcmVzdHJpY3RfXyBh LCAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ01QX1RZUEUgKl9f cmVzdHJpY3RfXyBiLCAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IG4pICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBuOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIERBVEFfVFlQRSB4dmFsID0geFtp XSwgeXZhbCA9IHlbaV07ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIENNUF9UWVBF IGF2YWwgPSBhW2ldLCBidmFsID0gYltpXTsgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgIHJbaV0gPSBhdmFsIENPTkQgYnZhbCA/IHh2YWwgOiB5dmFsOyAgICAgICAgICAgICAgICAg ICAgXA0KPiArICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIH0NCj4gKw0KPiArI2RlZmluZSBERUZfVkNP TkRfSU1NKERBVEFfVFlQRSwgQ01QX1RZUEUsIENPTkQsIElNTSwgU1VGRklYKSAgXA0KPiArICB2 b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSwgbm9jbG9uZSkpICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICB2Y29uZF9pbW1fIyNDTVBfVFlQRSMjXyMjU1VGRklYIChEQVRBX1RZUEUgKl9f cmVzdHJpY3RfXyByLCAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERB VEFfVFlQRSAqX19yZXN0cmljdF9fIHgsICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERBVEFfVFlQRSAqX19yZXN0cmljdF9fIHksICAgXA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENNUF9UWVBFICpfX3Jlc3RyaWN0X18gYSwgICAgXA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuKSAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICAgICBEQVRBX1RZUEUgeHZhbCA9IHhbaV0sIHl2YWwgPSB5W2ldOyAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgICBDTVBfVFlQRSBhdmFsID0gYVtpXTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICByW2ldID0gYXZhbCBDT05EIChD TVBfVFlQRSkgSU1NID8geHZhbCA6IHl2YWw7ICAgICAgICAgIFwNCj4gKyAgICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICB9DQo+ICsNCj4gKyNkZWZpbmUgVEVTVF9DT05EX1ZBUl9TSUdORURfQUxMKFQsIENP TkQsIFNVRkZJWCkgICAgICBcDQo+ICsgIFQgKGludDhfdCwgaW50OF90LCBDT05ELCBTVUZGSVgp ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChpbnQxNl90LCBpbnQxNl90LCBDT05ELCBT VUZGSVgpICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAoaW50MzJfdCwgaW50MzJfdCwgQ09O RCwgU1VGRklYKSAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGludDY0X3QsIGludDY0X3Qs IENPTkQsIFNVRkZJWCkgICAgICAgICAgICAgICAgICAgXA0KPiArICBUIChmbG9hdCwgaW50MzJf dCwgQ09ORCwgU1VGRklYIyNfZmxvYXQpICAgICAgICAgICAgIFwNCj4gKyAgVCAoZG91YmxlLCBp bnQ2NF90LCBDT05ELCBTVUZGSVgjI19kb3VibGUpDQo+ICsNCj4gKyNkZWZpbmUgVEVTVF9DT05E X1ZBUl9VTlNJR05FRF9BTEwoVCwgQ09ORCwgU1VGRklYKSAgICBcDQo+ICsgIFQgKHVpbnQ4X3Qs IHVpbnQ4X3QsIENPTkQsIFNVRkZJWCkgICAgICAgICAgICAgICAgICAgXA0KPiArICBUICh1aW50 MTZfdCwgdWludDE2X3QsIENPTkQsIFNVRkZJWCkgICAgICAgICAgICAgICAgIFwNCj4gKyAgVCAo dWludDMyX3QsIHVpbnQzMl90LCBDT05ELCBTVUZGSVgpICAgICAgICAgICAgICAgICBcDQo+ICsg IFQgKHVpbnQ2NF90LCB1aW50NjRfdCwgQ09ORCwgU1VGRklYKSAgICAgICAgICAgICAgICAgXA0K PiArICBUIChmbG9hdCwgdWludDMyX3QsIENPTkQsIFNVRkZJWCMjX2Zsb2F0KSAgICAgICAgICAg IFwNCj4gKyAgVCAoZG91YmxlLCB1aW50NjRfdCwgQ09ORCwgU1VGRklYIyNfZG91YmxlKQ0KPiAr DQo+ICsjZGVmaW5lIFRFU1RfQ09ORF9WQVJfQUxMKFQsIENPTkQsIFNVRkZJWCkgICAgIFwNCj4g KyAgVEVTVF9DT05EX1ZBUl9TSUdORURfQUxMIChULCBDT05ELCBTVUZGSVgpICAgXA0KPiArICBU RVNUX0NPTkRfVkFSX1VOU0lHTkVEX0FMTCAoVCwgQ09ORCwgU1VGRklYKQ0KPiArDQo+ICsjZGVm aW5lIFRFU1RfVkFSX0FMTChUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBURVNUX0NPTkRfVkFSX0FMTCAoVCwgPiwgX2d0KSAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVEVTVF9DT05EX1ZBUl9BTEwgKFQsIDwsIF9sdCkgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFRFU1RfQ09ORF9WQVJfQUxMIChULCA+PSwgX2dlKSAgICAgICAgICAgICAgIFwN Cj4gKyAgVEVTVF9DT05EX1ZBUl9BTEwgKFQsIDw9LCBfbGUpICAgICAgICAgICAgICAgXA0KPiAr ICBURVNUX0NPTkRfVkFSX0FMTCAoVCwgPT0sIF9lcSkgICAgICAgICAgICAgICBcDQo+ICsgIFRF U1RfQ09ORF9WQVJfQUxMIChULCAhPSwgX25lKQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfQ09ORF9J TU1fU0lHTkVEX0FMTChULCBDT05ELCBJTU0sIFNVRkZJWCkgXA0KPiArICBUIChpbnQ4X3QsIGlu dDhfdCwgQ09ORCwgSU1NLCBTVUZGSVgpICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBU IChpbnQxNl90LCBpbnQxNl90LCBDT05ELCBJTU0sIFNVRkZJWCkgICAgICAgICAgICAgIFwNCj4g KyAgVCAoaW50MzJfdCwgaW50MzJfdCwgQ09ORCwgSU1NLCBTVUZGSVgpICAgICAgICAgICAgICBc DQo+ICsgIFQgKGludDY0X3QsIGludDY0X3QsIENPTkQsIElNTSwgU1VGRklYKSAgICAgICAgICAg ICAgXA0KPiArICBUIChmbG9hdCwgaW50MzJfdCwgQ09ORCwgSU1NLCBTVUZGSVgjI19mbG9hdCkg ICAgICAgICAgICAgICAgXA0KPiArICBUIChkb3VibGUsIGludDY0X3QsIENPTkQsIElNTSwgU1VG RklYIyNfZG91YmxlKQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxM KFQsIENPTkQsIElNTSwgU1VGRklYKSAgICAgICBcDQo+ICsgIFQgKHVpbnQ4X3QsIHVpbnQ4X3Qs IENPTkQsIElNTSwgU1VGRklYKSAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKHVpbnQx Nl90LCB1aW50MTZfdCwgQ09ORCwgSU1NLCBTVUZGSVgpICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIFQgKHVpbnQzMl90LCB1aW50MzJfdCwgQ09ORCwgSU1NLCBTVUZGSVgpICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIFQgKHVpbnQ2NF90LCB1aW50NjRfdCwgQ09ORCwgSU1NLCBTVUZGSVgp ICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGZsb2F0LCB1aW50MzJfdCwgQ09ORCwgSU1N LCBTVUZGSVgjI19mbG9hdCkgICAgICAgICAgICAgICBcDQo+ICsgIFQgKGRvdWJsZSwgdWludDY0 X3QsIENPTkQsIElNTSwgU1VGRklYIyNfZG91YmxlKQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfQ09O RF9JTU1fQUxMKFQsIENPTkQsIElNTSwgU1VGRklYKSAgICAgICAgICAgICAgICBcDQo+ICsgIFRF U1RfQ09ORF9JTU1fU0lHTkVEX0FMTCAoVCwgQ09ORCwgSU1NLCBTVUZGSVgpICAgICAgXA0KPiAr ICBURVNUX0NPTkRfSU1NX1VOU0lHTkVEX0FMTCAoVCwgQ09ORCwgSU1NLCBTVUZGSVgpDQo+ICsN Cj4gKyNkZWZpbmUgVEVTVF9JTU1fQUxMKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIC8qIEV4cGVjdCBpbW1lZGlhdGVzIHRv IG1ha2UgaXQgaW50byB0aGUgZW5jb2RpbmcuICAqLyAgICAgICAgICAgICAgIFwNCj4gKyAgVEVT VF9DT05EX0lNTV9BTEwgKFQsID4sIDUsIF9ndCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX0FMTCAoVCwgPCwgNSwgX2x0KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fQUxMIChU LCA+PSwgNSwgX2dlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg VEVTVF9DT05EX0lNTV9BTEwgKFQsIDw9LCA1LCBfbGUpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX0FMTCAoVCwgPT0sIDUsIF9lcSkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fQUxM IChULCAhPSwgNSwgX25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX1NJR05FRF9BTEwgKFQsID4sIDE1 LCBfZ3QyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1f U0lHTkVEX0FMTCAoVCwgPCwgMTUsIF9sdDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgVEVTVF9DT05EX0lNTV9TSUdORURfQUxMIChULCA+PSwgMTUsIF9nZTIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX1NJR05FRF9BTEwgKFQsIDw9 LCAxNSwgX2xlMikgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9J TU1fQUxMIChULCA9PSwgMTUsIF9lcTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgVEVTVF9DT05EX0lNTV9BTEwgKFQsICE9LCAxNSwgX25lMikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09O RF9JTU1fU0lHTkVEX0FMTCAoVCwgPiwgMTYsIF9ndDMpICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9TSUdORURfQUxMIChULCA8LCAxNiwgX2x0MykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX1NJR05FRF9BTEwg KFQsID49LCAxNiwgX2dlMykgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIFRFU1Rf Q09ORF9JTU1fU0lHTkVEX0FMTCAoVCwgPD0sIDE2LCBfbGUzKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9BTEwgKFQsID09LCAxNiwgX2VxMykgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX0FMTCAoVCwg IT0sIDE2LCBfbmUzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9TSUdORURfQUxMIChULCA+LCAtMTYsIF9n dDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX1NJR05F RF9BTEwgKFQsIDwsIC0xNiwgX2x0NCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IFRFU1RfQ09ORF9JTU1fU0lHTkVEX0FMTCAoVCwgPj0sIC0xNiwgX2dlNCkgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9TSUdORURfQUxMIChULCA8PSwgLTE2 LCBfbGU0KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1NX0FM TCAoVCwgPT0sIC0xNiwgX2VxNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIFRFU1RfQ09ORF9JTU1fQUxMIChULCAhPSwgLTE2LCBfbmU0KSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRfSU1N X1NJR05FRF9BTEwgKFQsID4sIC0xNywgX2d0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgIFRFU1RfQ09ORF9JTU1fU0lHTkVEX0FMTCAoVCwgPCwgLTE3LCBfbHQ1KSAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9TSUdORURfQUxMIChULCA+ PSwgLTE3LCBfZ2U1KSAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRf SU1NX1NJR05FRF9BTEwgKFQsIDw9LCAtMTcsIF9sZTUpICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fQUxMIChULCA9PSwgLTE3LCBfZXE1KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9BTEwgKFQsICE9LCAt MTcsIF9uZTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA+LCAwLCBfZ3Q2KSAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgLyogVGVzdGluZyBpZiBhbiB1bnNpZ25l ZCB2YWx1ZSA+PSAwIG9yIDwgMCBpcyBwb2ludGxlc3MgYXMgaXQgd2lsbCAgXA0KPiArICAgICBn ZXQgZm9sZGVkIGF3YXkgYnkgdGhlIGNvbXBpbGVyLiAgKi8gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA8PSwgMCwgX2xl NikgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBU RVNUX0NPTkRfSU1NX1VOU0lHTkVEX0FMTCAoVCwgPiwgMTI3LCBfZ3Q3KSAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA8LCAxMjcs IF9sdDcpICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9VTlNJ R05FRF9BTEwgKFQsID49LCAxMjcsIF9nZTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA8PSwgMTI3LCBfbGU3KSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gK1wN Cj4gKyAgLyogRXhwZWN0IGltbWVkaWF0ZXMgdG8gTk9UIG1ha2UgaXQgaW50byB0aGUgZW5jb2Rp bmcsIGFuZCBpbnN0ZWFkIGJlIFwNCj4gKyAgICAgZm9yY2VkIGludG8gYSByZWdpc3Rlci4gICov ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBURVNUX0NPTkRf SU1NX1VOU0lHTkVEX0FMTCAoVCwgPiwgMTI4LCBfZ3Q4KSAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA8LCAxMjgsIF9sdDgpICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgVEVTVF9DT05EX0lNTV9VTlNJR05FRF9BTEwg KFQsID49LCAxMjgsIF9nZTgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IFRFU1RfQ09ORF9JTU1fVU5TSUdORURfQUxMIChULCA8PSwgMTI4LCBfbGU4KQ0KPiArDQo+ICtU RVNUX1ZBUl9BTEwgKERFRl9WQ09ORF9WQVIpDQo+ICtURVNUX0lNTV9BTEwgKERFRl9WQ09ORF9J TU0pDQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR2bXNl cVwudml9IDQyIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz IHtcdHZtc25lXC52aX0gNDIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge1x0dm1zZ3RcLnZpfSAzMCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci10aW1lcyB7XHR2bXNndHVcLnZpfSAxMiB9IH0gKi8NCj4gKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR2bXNsdFwudml9IDggfSB9ICovDQo+ICsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dm1zZ2VcLnZpfSA4IH0gfSAqLw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHZtc2xlXC52aX0gMzAg fSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dm1zbGV1 XC52aX0gMTIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg e1x0dm1zZXF9IDc4IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzIHtcdHZtc25lfSA3OCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7XHR2bXNndH0gODIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMge1x0dm1zbHR9IDM4IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHtcdHZtc2dlfSAzOCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7XHR2bXNsZX0gODIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTIuYyAN Cj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25k LTIuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNzM4Zjk3 OGM1YTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTIuYw0KPiBAQCAtMCwwICsxLDc1IEBADQo+ICsv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1t YXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCANCj4gKy0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVm ZXJlbmNlPXNjYWxhYmxlIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQo+ ICsNCj4gKyNkZWZpbmUgZXEoQSwgQikgKChBKSA9PSAoQikpDQo+ICsjZGVmaW5lIG5lKEEsIEIp ICgoQSkgIT0gKEIpKQ0KPiArI2RlZmluZSBvbHQoQSwgQikgKChBKSA8IChCKSkNCj4gKyNkZWZp bmUgb2xlKEEsIEIpICgoQSkgPD0gKEIpKQ0KPiArI2RlZmluZSBvZ2UoQSwgQikgKChBKSA+PSAo QikpDQo+ICsjZGVmaW5lIG9ndChBLCBCKSAoKEEpID4gKEIpKQ0KPiArI2RlZmluZSBvcmRlcmVk KEEsIEIpICghX19idWlsdGluX2lzdW5vcmRlcmVkIChBLCBCKSkgI2RlZmluZSANCj4gK3Vub3Jk ZXJlZChBLCBCKSAoX19idWlsdGluX2lzdW5vcmRlcmVkIChBLCBCKSkgI2RlZmluZSB1ZXEoQSwg QikgDQo+ICsoIV9fYnVpbHRpbl9pc2xlc3NncmVhdGVyIChBLCBCKSkgI2RlZmluZSB1bHQoQSwg QikgKF9fYnVpbHRpbl9pc2xlc3MgDQo+ICsoQSwgQikpICNkZWZpbmUgdWxlKEEsIEIpIChfX2J1 aWx0aW5faXNsZXNzZXF1YWwgKEEsIEIpKSAjZGVmaW5lIA0KPiArdWdlKEEsIEIpIChfX2J1aWx0 aW5faXNncmVhdGVyZXF1YWwgKEEsIEIpKSAjZGVmaW5lIHVndChBLCBCKSANCj4gKyhfX2J1aWx0 aW5faXNncmVhdGVyIChBLCBCKSkgI2RlZmluZSBudWVxKEEsIEIpIA0KPiArKF9fYnVpbHRpbl9p c2xlc3NncmVhdGVyIChBLCBCKSkgI2RlZmluZSBudWx0KEEsIEIpIA0KPiArKCFfX2J1aWx0aW5f aXNsZXNzIChBLCBCKSkgI2RlZmluZSBudWxlKEEsIEIpICghX19idWlsdGluX2lzbGVzc2VxdWFs IA0KPiArKEEsIEIpKSAjZGVmaW5lIG51Z2UoQSwgQikgKCFfX2J1aWx0aW5faXNncmVhdGVyZXF1 YWwgKEEsIEIpKSAjZGVmaW5lIA0KPiArbnVndChBLCBCKSAoIV9fYnVpbHRpbl9pc2dyZWF0ZXIg KEEsIEIpKQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfTE9PUChUWVBFMSwgVFlQRTIsIENNUCkgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIHZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5s aW5lLCBub2Nsb25lKSkgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIHRlc3RfIyNUWVBFMSMj XyMjVFlQRTIjI18jI0NNUCMjX3ZhciAoVFlQRTEgKnJlc3RyaWN0IGRlc3QsICBcDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFMSAqcmVzdHJpY3Qgc3JjLCAg ICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUWVBFMSBmYWxs YmFjaywgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUWVBFMiAqcmVzdHJpY3QgYSwgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUWVBFMiAqcmVzdHJpY3QgYiwgICAgICBcDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQpICAgICAgICAgICAgICBcDQo+ICsg IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICB7XA0KPiArICAgICAgICBUWVBFMiBhdmFsID0g YVtpXTsgXA0KPiArICAgICAgICBUWVBFMiBidmFsID0gYltpXTsgXA0KPiArICAgICAgICBUWVBF MSBzcmN2YWwgPSBzcmNbaV07IFwNCj4gKyAgICAgICAgZGVzdFtpXSA9IENNUCAoYXZhbCwgYnZh bCkgPyBzcmN2YWwgOiBmYWxsYmFjazsgICAgICAgICAgICAgICAgXA0KPiArICAgICAgfVwNCj4g KyAgfQ0KPiArDQo+ICsjZGVmaW5lIFRFU1RfQ01QKENNUCkgXA0KPiArICBURVNUX0xPT1AgKGlu dDMyX3QsIGZsb2F0LCBDTVApIFwNCj4gKyAgVEVTVF9MT09QICh1aW50MzJfdCwgZmxvYXQsIENN UCkgXA0KPiArICBURVNUX0xPT1AgKGZsb2F0LCBmbG9hdCwgQ01QKSBcDQo+ICsgIFRFU1RfTE9P UCAoaW50NjRfdCwgZG91YmxlLCBDTVApIFwNCj4gKyAgVEVTVF9MT09QICh1aW50NjRfdCwgZG91 YmxlLCBDTVApIFwNCj4gKyAgVEVTVF9MT09QIChkb3VibGUsIGRvdWJsZSwgQ01QKQ0KPiArDQo+ ICtURVNUX0NNUCAoZXEpDQo+ICtURVNUX0NNUCAobmUpDQo+ICtURVNUX0NNUCAob2x0KQ0KPiAr VEVTVF9DTVAgKG9sZSkNCj4gK1RFU1RfQ01QIChvZ2UpDQo+ICtURVNUX0NNUCAob2d0KQ0KPiAr VEVTVF9DTVAgKG9yZGVyZWQpDQo+ICtURVNUX0NNUCAodW5vcmRlcmVkKQ0KPiArVEVTVF9DTVAg KHVlcSkNCj4gK1RFU1RfQ01QICh1bHQpDQo+ICtURVNUX0NNUCAodWxlKQ0KPiArVEVTVF9DTVAg KHVnZSkNCj4gK1RFU1RfQ01QICh1Z3QpDQo+ICtURVNUX0NNUCAobnVlcSkNCj4gK1RFU1RfQ01Q IChudWx0KQ0KPiArVEVTVF9DTVAgKG51bGUpDQo+ICtURVNUX0NNUCAobnVnZSkNCj4gK1RFU1Rf Q01QIChudWd0KQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg e1x0dm1mZXF9IDE1MCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyB7XHR2bWZuZX0gNiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7XHR2bWZndH0gMzAgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMge1x0dm1mbHR9IDMwIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHtcdHZtZmdlfSAxOCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7XHR2bWZsZX0gMTggfSB9ICovDQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTMuYyAN Cj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25k LTMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNTMzODQ4 MjllNjQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zjb25kLTMuYw0KPiBAQCAtMCwwICsxLDEzIEBADQo+ICsv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1t YXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCANCj4gKy0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVm ZXJlbmNlPXNjYWxhYmxlIC1mbm8tdHJhcHBpbmctbWF0aCIgfSAqLw0KPiArDQo+ICsvKiBUaGUg ZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQgbnVlcSBjYW4gdXNlIExUR1QuICAqLw0KPiArDQo+ICsj aW5jbHVkZSAidmNvbmQtMi5jIg0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge1x0dm1mZXF9IDkwIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHtcdHZtZm5lfSA2IH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHtcdHZtZmd0fSAzMCB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7XHR2bWZsdH0gMzAgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dm1mZ2V9IDE4IH0gfSAqLw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHZtZmxlfSAxOCB9IH0gKi8NCj4gZGlmZiAt LWdpdCANCj4gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21w L3Zjb25kX3J1bi0xLmMgDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL2NtcC92Y29uZF9ydW4tMS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwLi5hODRkMjJkMmE3Mw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmRfcnVuLTEuYw0K PiBAQCAtMCwwICsxLDQ5IEBADQo+ICsvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3Zl Y3RvciB9IH0gfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgDQo+ICsiLS1wYXJh bT1yaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1 ZGUgInZjb25kLTEuYyINCj4gKw0KPiArI2RlZmluZSBOIDk3DQo+ICsNCj4gKyNkZWZpbmUgVEVT VF9WQ09ORF9WQVIoREFUQV9UWVBFLCBDTVBfVFlQRSwgQ09ORCwgU1VGRklYKSAgICAgIFwNCj4g K3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgREFUQV9UWVBFIHhbTl0sIHlbTl0sIHJbTl07ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgQ01QX1RZUEUgYVtOXSwgYltOXTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBOOyArK2kpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICAgIHhbaV0gPSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgeVtpXSA9IChpICYgMSkgKyA1OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgYVtpXSA9IGkgLSBOIC8g MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICBiW2ldID0gTiAtIE4gLyAzIC0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgICBhc20gdm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7ICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIHZjb25kX3Zhcl8jI0NNUF9UWVBF IyNfIyNTVUZGSVggKHIsIHgsIHksIGEsIGIsIE4pOyAgICAgICAgICBcDQo+ICsgIGZvciAoaW50 IGkgPSAwOyBpIDwgTjsgKytpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgaWYgKHJbaV0gIT0gKGFbaV0gQ09ORCBiW2ldID8geFtpXSA6IHlbaV0pKSAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gK30NCj4gKw0KPiArI2RlZmluZSBURVNU X1ZDT05EX0lNTShEQVRBX1RZUEUsIENNUF9UWVBFLCBDT05ELCBJTU0sIFNVRkZJWCkgXA0KPiAr eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBEQVRBX1RZUEUgeFtOXSwgeVtOXSwgcltOXTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICBDTVBfVFlQRSBhW05dOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8 IE47ICsraSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgeFtpXSA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICB5W2ldID0gKGkgJiAxKSArIDU7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBhW2ldID0gSU1NIC0gTiAv IDMgKyBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBhc20g dm9sYXRpbGUgKCIiIDo6OiAibWVtb3J5Iik7ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIHZjb25kX2ltbV8jI0NNUF9UWVBFIyNfIyNTVUZGSVggKHIsIHgsIHks IGEsIE4pOyAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgaWYgKHJbaV0gIT0gKGFb aV0gQ09ORCAoQ01QX1RZUEUpIElNTSA/IHhbaV0gOiB5W2ldKSkgICAgICBcDQo+ICsgICAgICBf X2J1aWx0aW5fYWJvcnQgKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICt9DQo+ICsNCj4gK2ludCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDEpKSkNCj4gK21h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gK3sNCj4gKyAgVEVTVF9WQVJfQUxMIChURVNU X1ZDT05EX1ZBUikNCj4gKyAgVEVTVF9JTU1fQUxMIChURVNUX1ZDT05EX0lNTSkNCj4gKyAgcmV0 dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1naXQgDQo+IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL2NtcC92Y29uZF9ydW4tMi5jIA0KPiBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmRfcnVuLTIuYw0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4uNTZmZDM5ZjQ2OTENCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvY21wL3Zjb25kX3J1bi0yLmMNCj4gQEAgLTAsMCArMSw3NiBAQA0KPiArLyogeyBkZy1kbyBy dW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25h bC1vcHRpb25zIA0KPiArIi0tcGFyYW09cmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxl IiB9ICovDQo+ICsvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBmZW52X2V4Y2VwdGlv bnMgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSAidmNvbmQtMi5jIg0KPiArDQo+ICsjaWZuZGVmIFRF U1RfRVhDRVBUSU9OUw0KPiArI2RlZmluZSBURVNUX0VYQ0VQVElPTlMgMQ0KPiArI2VuZGlmDQo+ ICsNCj4gKyNpbmNsdWRlIDxmZW52Lmg+DQo+ICsNCj4gKyNkZWZpbmUgTiA0MDENCj4gKw0KPiAr I2RlZmluZSBSVU5fTE9PUChUWVBFMSwgVFlQRTIsIENNUCwgRVhQRUNUX0lOVkFMSUQpICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICBUWVBFMSBkZXN0W05d LCBzcmNbTl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgIFRZUEUyIGFbTl0sIGJbTl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyArK2kpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBzcmNbaV0gPSBpICogaTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIGlmIChpICUg NSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICAgICBhW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBlbHNlIGlmIChpICUgMykgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgYVtp XSA9IGkgKiAwLjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgIGFbaV0gPSBpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIGlm IChpICUgNyA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgICAgICBiW2ldID0gX19idWlsdGluX25hbiAoIiIpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICBlbHNlIGlmIChpICUgNikgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg ICAgYltpXSA9IGkgKiAwLjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgIGJbaV0gPSBpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgIGFzbSB2b2xhdGlsZSAoIiIgOjo6ICJtZW1vcnkiKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIGZlY2xlYXJl eGNlcHQgKEZFX0FMTF9FWENFUFQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgdGVzdF8jI1RZUEUxIyNfIyNUWVBFMiMjXyMjQ01QIyNfdmFyIChkZXN0LCBz cmMsIDExLCBhLCBiLCBOKTsgICAgIFwNCj4gKyAgICBpZiAoVEVTVF9FWENFUFRJT05TICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICAgJiYgIWZldGVzdGV4Y2VwdCAoRkVfSU5WQUxJRCkgIT0gIShFWFBFQ1RfSU5WQUxJRCkp ICAgICAgICAgICAgIFwNCj4gKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTjsgKytpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICAgIGlmIChkZXN0W2ldICE9IChDTVAgKGFbaV0sIGJbaV0pID8gc3JjW2ld IDogMTEpKSAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIH0NCj4g Kw0KPiArI2RlZmluZSBSVU5fQ01QKENNUCwgRVhQRUNUX0lOVkFMSUQpIFwNCj4gKyAgUlVOX0xP T1AgKGludDMyX3QsIGZsb2F0LCBDTVAsIEVYUEVDVF9JTlZBTElEKSBcDQo+ICsgIFJVTl9MT09Q ICh1aW50MzJfdCwgZmxvYXQsIENNUCwgRVhQRUNUX0lOVkFMSUQpIFwNCj4gKyAgUlVOX0xPT1Ag KGZsb2F0LCBmbG9hdCwgQ01QLCBFWFBFQ1RfSU5WQUxJRCkgXA0KPiArICBSVU5fTE9PUCAoaW50 NjRfdCwgZG91YmxlLCBDTVAsIEVYUEVDVF9JTlZBTElEKSBcDQo+ICsgIFJVTl9MT09QICh1aW50 NjRfdCwgZG91YmxlLCBDTVAsIEVYUEVDVF9JTlZBTElEKSBcDQo+ICsgIFJVTl9MT09QIChkb3Vi bGUsIGRvdWJsZSwgQ01QLCBFWFBFQ1RfSU5WQUxJRCkNCj4gKw0KPiAraW50IF9fYXR0cmlidXRl X18gKChvcHRpbWl6ZSAoMSkpKQ0KPiArbWFpbiAodm9pZCkNCj4gK3sNCj4gKyAgUlVOX0NNUCAo ZXEsIDApDQo+ICsgIFJVTl9DTVAgKG5lLCAwKQ0KPiArICBSVU5fQ01QIChvbHQsIDEpDQo+ICsg IFJVTl9DTVAgKG9sZSwgMSkNCj4gKyAgUlVOX0NNUCAob2dlLCAxKQ0KPiArICBSVU5fQ01QIChv Z3QsIDEpDQo+ICsgIFJVTl9DTVAgKG9yZGVyZWQsIDApDQo+ICsgIFJVTl9DTVAgKHVub3JkZXJl ZCwgMCkNCj4gKyAgUlVOX0NNUCAodWVxLCAwKQ0KPiArICBSVU5fQ01QICh1bHQsIDApDQo+ICsg IFJVTl9DTVAgKHVsZSwgMCkNCj4gKyAgUlVOX0NNUCAodWdlLCAwKQ0KPiArICBSVU5fQ01QICh1 Z3QsIDApDQo+ICsgIFJVTl9DTVAgKG51ZXEsIDApDQo+ICsgIFJVTl9DTVAgKG51bHQsIDApDQo+ ICsgIFJVTl9DTVAgKG51bGUsIDApDQo+ICsgIFJVTl9DTVAgKG51Z2UsIDApDQo+ICsgIFJVTl9D TVAgKG51Z3QsIDApDQo+ICsgIHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IA0KPiBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jbXAvdmNvbmRfcnVuLTMu YyANCj4gYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY21wL3Zj b25kX3J1bi0zLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAu LmU1MGQ1NjFiZDk4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL2NtcC92Y29uZF9ydW4tMy5jDQo+IEBAIC0wLDAgKzEs NiBAQA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0gKi8N Cj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtPXJpc2N2LWF1dG92ZWMtcHJl ZmVyZW5jZT1zY2FsYWJsZSANCj4gKy1mbm8tdHJhcHBpbmctbWF0aCIgfSAqLw0KPiArLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgZmVudl9leGNlcHRpb25zIH0gKi8NCj4gKw0KPiAr I2RlZmluZSBURVNUX0VYQ0VQVElPTlMgMA0KPiArI2luY2x1ZGUgInZjb25kX3J1bi0yLmMiDQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3J2di5leHAg DQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9ydnYuZXhwDQo+IGluZGV4 IGJjOTljYzBjM2NmLi45ODA5YTQyMWZjOCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9ydnYuZXhwDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvcnZ2LmV4cA0KPiBAQCAtNjMsNiArNjMsOCBAQCBmb3JlYWNoIG9wICRB VVRPVkVDX1RFU1RfT1BUUyB7DQo+ICAgICAgIiIgIiRvcCINCj4gICAgZGctcnVudGVzdCBbbHNv cnQgW2dsb2IgLW5vY29tcGxhaW4gJHNyY2Rpci8kc3ViZGlyL2F1dG92ZWMvYmlub3AvKi5cW2NT XF1dXSBcDQo+ICAgICAgIiIgIiRvcCINCj4gKyAgZGctcnVudGVzdCBbbHNvcnQgW2dsb2IgLW5v Y29tcGxhaW4gJHNyY2Rpci8kc3ViZGlyL2F1dG92ZWMvY21wLyouXFtjU1xdXV0gXA0KPiArICAg ICIiICIkb3AiDQo+ICB9DQo+DQo+ICAjIFZMUy1WTE1BWCB0ZXN0cw0KPiAtLQ0KPiAyLjM2LjMN Cj4NCg==