From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2062.outbound.protection.outlook.com [40.107.6.62]) by sourceware.org (Postfix) with ESMTPS id 26E743858C5F for ; Thu, 5 Oct 2023 14:16:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26E743858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lWHQSlVgrKEYcg5m771u0dnHMUwDcGrk3stneUg1t18=; b=2TIJoLB6OceRODgy1Kx7FFJUNg72eIsc0r7qTDNoi3kQlhELXxuFJYpo3f61Irpy+mMJKAeGa6074/5HXwIUl9XE/MK3aIQWY3Iq6/cAFIn2kcWfoUllxrndgUlEOTRA0ZU4Mbn0miyXD0hwiD4n0U8o7u5/nHs9VkleEy+oGDQ= Received: from DUZPR01CA0114.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bb::13) by DU0PR08MB9536.eurprd08.prod.outlook.com (2603:10a6:10:44c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.33; Thu, 5 Oct 2023 14:16:06 +0000 Received: from DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:4bb:cafe::b9) by DUZPR01CA0114.outlook.office365.com (2603:10a6:10:4bb::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.33 via Frontend Transport; Thu, 5 Oct 2023 14:16:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT021.mail.protection.outlook.com (100.127.142.184) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.26 via Frontend Transport; Thu, 5 Oct 2023 14:16:06 +0000 Received: ("Tessian outbound ab4fc72d2cd4:v211"); Thu, 05 Oct 2023 14:16:06 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: e1dff0da52c2d47f X-CR-MTA-TID: 64aa7808 Received: from 4325af9d76ce.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 69E1C4E0-7B16-4605-A205-FEE4F80DC7C2.1; Thu, 05 Oct 2023 14:16:00 +0000 Received: from EUR02-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4325af9d76ce.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 05 Oct 2023 14:16:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=brZ35sdY0Ww/wuj+5GnIXDgvPAu0mx7JwZcvo5Ytcf3ZtvKPc+jIg5Gt799+ZYAxxSTJH2r6/6WYTcEukpLCCz45zfYwYma1eOiyumZFNe+jqZWYK6FpBauiFBlI408LpSM7GedPmDJgkO+PYqJnqH9cnFdvCYxN+o08o09/qyNHJATz/PgUkvEuWCYYKIWpxcbBBi88cA+DRxMk5VRjxMe6/kQLc6vEKihe28oWK1X5DnHGvpxHl668WaSgH+bxWCtlhm30i/XUSp5IlYOSYGpjcydqTMd3Zaio87K7nVK04mgE6/FS0RQZNuZWgsh6OvE+snSdado0HhtpBtm7+A== 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=lWHQSlVgrKEYcg5m771u0dnHMUwDcGrk3stneUg1t18=; b=CDmVQC2hcTUjfQKY5oruo1ladNc9MlzGDhLZBuDai079PkUhYh5ja5qYPnM2Yd6+51vQzdH/P/E+cfBuTjN7k2CYrDvIphtVHG2K3J+F1/TxruXAPXp7OINaULzsMLN+bJsX9D025bXvs56Lf6JqsHmo8wh/7FBBtIDQekbkxG/sqOvn+RZSeBTaXbKckli5Mhy1L8ECic2u+PVM1HypXFv7PwuiUuJXAvw9pYMVrL/wmXOwc37O5E1lJvKfPpI5sTTk2eEo2lVBXmv5MsXIDmxz9I0tOb/0tcSEKK7m7otW8Xl58D9Aaioy6JWNeM2k4HUAbGjD+ytMunjSurhfww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lWHQSlVgrKEYcg5m771u0dnHMUwDcGrk3stneUg1t18=; b=2TIJoLB6OceRODgy1Kx7FFJUNg72eIsc0r7qTDNoi3kQlhELXxuFJYpo3f61Irpy+mMJKAeGa6074/5HXwIUl9XE/MK3aIQWY3Iq6/cAFIn2kcWfoUllxrndgUlEOTRA0ZU4Mbn0miyXD0hwiD4n0U8o7u5/nHs9VkleEy+oGDQ= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS8PR08MB6181.eurprd08.prod.outlook.com (2603:10a6:20b:29a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.37; Thu, 5 Oct 2023 14:15:55 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::662f:8e26:1bf8:aaa1%7]) with mapi id 15.20.6838.033; Thu, 5 Oct 2023 14:15:55 +0000 From: Tamar Christina To: Robin Dapp , gcc-patches , Richard Biener Subject: RE: [PATCH] ifcvt/vect: Emit COND_ADD for conditional scalar reduction. Thread-Topic: [PATCH] ifcvt/vect: Emit COND_ADD for conditional scalar reduction. Thread-Index: AQHZ68mTraLO0OuF1E+ghd6M1r2t27At07uQgAuEloCAAHNxAIABhsOAgAAAwJA= Date: Thu, 5 Oct 2023 14:15:55 +0000 Message-ID: References: <0193b63e-98dc-42bc-cd33-485361ea50bf@gmail.com> <671a575c-02ff-071b-967e-2e93d8986c1a@gmail.com> <85b08273-7eea-be3f-f08a-edf0780d36a7@gmail.com> In-Reply-To: <85b08273-7eea-be3f-f08a-edf0780d36a7@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AS8PR08MB6181:EE_|DBAEUR03FT021:EE_|DU0PR08MB9536:EE_ X-MS-Office365-Filtering-Correlation-Id: 040e2050-1c28-4374-a309-08dbc5ad9dba x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 2ah3Z+clUf5xbM927MMO49NPkBoCkZhKcw+rOm0NDiBkI/svkbYcR6dwyjnMhv7wXNVlNt09rpmTR14pIZII5+dULJLzvVmPIXur+BeP1rjvbblUcZtbBf/c/ivDf6t8KZ8q5Nfl7GV7IIaP36Qt482YjmWhsPwQptMtCWIoZ6OqHIzpLKq6PCozfqbzzyiAjqKRRsY3j7RHLsTiScm+CTxhRyKCsqYPqA7y40kFKpRKPdD/5GBfauNpMbtCwj1XfodABlwZLbmpqiH0pG6KaI33LuXaPcEivdNrJEdDLfC24bK4ZdAshX5K6/Pf7ZfeO1Ob4MggcffQiI50Ve0T7gUadz6p5gxX1wGk5mxoNcuwEhCVAdXvkbx0smZ6Mo6TbzmMlsMOUHCalw3kHAIpjf2+0XHJUPYxreciUcZOjNjvagMrI0nMH4Jl5wpXMJKc1QCRaX/al1qMK2i7N0ubvknO7xlI1yHbOChpPTnhe5tCedb7ihjpRvHdlpJcYaslC5pROrh+KgCMB5rUnocq1zWoto5G7hsyUXmFK/Hg9hoMDFgijhp1o/8t21coDBLLvGKQMK5hWNm4aBmOYYSaNdBGu/G+uRiEbrXyuPd78pX4JFl8b4ix3w0eW99xkIcnqDqu0mD8W8F7dmf2JkxZLw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB5325.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(39860400002)(346002)(396003)(366004)(230922051799003)(64100799003)(186009)(1800799009)(451199024)(7696005)(478600001)(6506007)(9686003)(53546011)(83380400001)(71200400001)(26005)(2906002)(30864003)(316002)(64756008)(66446008)(110136005)(66476007)(66556008)(66946007)(76116006)(8936002)(52536014)(5660300002)(41300700001)(8676002)(38100700002)(38070700005)(86362001)(33656002)(122000001)(55016003)(84970400001)(579004)(559001);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6181 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 9f6d8897-588f-4458-4efa-08dbc5ad96da X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9CFidyHhuncC+IikuIRkwR1E20H4DHc3twDAWuSygDy4Hf6ii5WSBv8KuBVvIUndqK1ueEt+dgOOxihkJJtwIz673KpWwJJLVoD3vvrFMsGkcdcCzKNtJIWZQVONWN/noHvzL475+Dv/U/PukDhN8UNXSO2VEsIw6LZdOgcrHBqxC3BScHcCySRgfDo4hBGl5dW+mtikpuWAnrT1BJnQIsZWJRcOrQO7+cUWcHFFK7ttwlysKua9LfS2o46GGLWovfaEZMc+iiPU+ISFbZOqAthFOLr/Tcz6IoHX3V7xd205YL17LducrBuq1dyISUgEhww3Jz1/spHfKzm9iqHmo2vK6Mq531DtTXU+hNaw9uBmDmo56FEDa8nvIQKiAG3HweWJiRV2i+wgsJRILqwrXlkfoK3hi8/lzVw4zX9EwovvRosFysvLQz6mSItd70YITjYizAzIIOnFFd0KXMF+vQHfZwSTJezuFuEQhG5VJ5Ahddecxh2jNK64S5zniyCLM5Th6CLPg7FjsqHMxevuWgSSnJt7V6R5Js/ARITYzOTueUYHsybz/E39i9ovZKFjJGrB8NW3xjd5nYag/ua5QX3/Rv9E9nbsMUTYyqODAZ8wqA1jCyOtThK5GRJd474KoZuXEV9TKSFWM4dVStHJoRr23V3qQ03HT2r5IGcZxnmwsok6QF+9RN/G9XhgjfN9R0yyA9yCt/f6kV6cVg2Y/DM3lizpcgqZyLOsytxB9IBkuA/imq9U/CwNZnWwiBcGaCUxx9MHCagxHTdEmlR6gw== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(376002)(136003)(39860400002)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(82310400011)(36840700001)(40470700004)(46966006)(316002)(478600001)(83380400001)(53546011)(9686003)(336012)(7696005)(6506007)(84970400001)(26005)(47076005)(81166007)(70206006)(36860700001)(356005)(82740400003)(70586007)(110136005)(41300700001)(5660300002)(52536014)(8936002)(8676002)(33656002)(40480700001)(55016003)(2906002)(30864003)(40460700003)(86362001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2023 14:16:06.8856 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 040e2050-1c28-4374-a309-08dbc5ad9dba X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT021.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9536 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: SGkgUm9iaW4sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUm9iaW4g RGFwcCA8cmRhcHAuZ2NjQGdtYWlsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9jdG9iZXIgNSwg MjAyMyAzOjA2IFBNDQo+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0u Y29tPjsgZ2NjLXBhdGNoZXMgPGdjYy0NCj4gcGF0Y2hlc0BnY2MuZ251Lm9yZz47IFJpY2hhcmQg QmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gQ2M6IHJkYXBwLmdjY0BnbWFpbC5jb20NCj4g U3ViamVjdDogUmU6IFtQQVRDSF0gaWZjdnQvdmVjdDogRW1pdCBDT05EX0FERCBmb3IgY29uZGl0 aW9uYWwgc2NhbGFyDQo+IHJlZHVjdGlvbi4NCj4gDQo+IEhpIFRhbWFyLA0KPiANCj4gPiBUaGUg b25seSBjb21tZW50IEkgaGF2ZSBpcyB3aGV0aGVyIHlvdSBhY3R1YWxseSBuZWVkIHRoaXMgaGVs cGVyDQo+ID4gZnVuY3Rpb24/IEl0IGxvb2tzIGxpa2UgYWxsIHRoZSB1c2VzIG9mIGl0IGFyZSBp biBjYXNlcyB5b3UgaGF2ZSwgb3INCj4gPiB3aWxsIGNhbGwgY29uZGl0aW9uYWxfaW50ZXJuYWxf Zm5fY29kZSBkaXJlY3RseS4NCj4gcmVtb3ZlZCB0aGUgY29uZF9mbl9wIGVudGlyZWx5IGluIHRo ZSBhdHRhY2hlZCB2My4NCj4gDQo+IEJvb3RzdHJhcHBlZCBhbmQgcmVndGVzdGVkIG9uIHg4Nl82 NCwgYWFyY2g2NCBhbmQgcG93ZXIxMC4NCj4gDQoNCkNoYW5nZXMgbG9vayBnb29kIHRvIG1lIHRo YW5rcyEgSSdsbCBsZWF2ZSBpdCB1cCB0byBSaWNoaSBmb3IgZmluYWwgYXBwcm92YWwuDQoNClJl Z2FyZHMsDQpUYW1hcg0KDQo+IFJlZ2FyZHMNCj4gIFJvYmluDQo+IA0KPiBTdWJqZWN0OiBbUEFU Q0ggdjNdIGlmY3Z0L3ZlY3Q6IEVtaXQgQ09ORF9BREQgZm9yIGNvbmRpdGlvbmFsIHNjYWxhcg0K PiByZWR1Y3Rpb24uDQo+IA0KPiBBcyBkZXNjcmliZWQgaW4gUFIxMTE0MDEgd2UgY3VycmVudGx5 IGVtaXQgYSBDT05EIGFuZCBhIFBMVVMgZXhwcmVzc2lvbg0KPiBmb3IgY29uZGl0aW9uYWwgcmVk dWN0aW9ucy4gIFRoaXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGNvbWJpbmUgYm90aCBpbnRvIGEN Cj4gbWFza2VkIHJlZHVjdGlvbiBzdGF0ZW1lbnQgbGF0ZXIuDQo+IFRoaXMgcGF0Y2ggaW1wcm92 ZXMgdGhhdCBieSBkaXJlY3RseSBlbWl0dGluZyBhIENPTkRfQUREIGR1cmluZyBpZmN2dCBhbmQN Cj4gYWRqdXN0aW5nIHNvbWUgdmVjdG9yaXplciBjb2RlIHRvIGhhbmRsZSBpdC4NCj4gDQo+IEl0 IGFsc28gbWFrZXMgbmV1dHJhbF9vcF9mb3JfcmVkdWN0aW9uIHJldHVybiAtMCBpZiBIT05PUl9T SUdORURfWkVST1MgaXMNCj4gdHJ1ZS4NCj4gDQo+IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAJUFIg bWlkZGxlLWVuZC8xMTE0MDENCj4gCSogdHJlZS1pZi1jb252LmNjIChjb252ZXJ0X3NjYWxhcl9j b25kX3JlZHVjdGlvbik6IEVtaXQgQ09ORF9BREQNCj4gCWlmIHN1cHBvcnRlZC4NCj4gCShwcmVk aWNhdGVfc2NhbGFyX3BoaSk6IEFkZCB3aGl0ZXNwYWNlLg0KPiAJKiB0cmVlLXZlY3QtbG9vcC5j YyAoZm9sZF9sZWZ0X3JlZHVjdGlvbl9mbik6IEFkZCBJRk5fQ09ORF9BREQuDQo+IAkobmV1dHJh bF9vcF9mb3JfcmVkdWN0aW9uKTogUmV0dXJuIC0wIGZvciBQTFVTLg0KPiAJKHZlY3RfaXNfc2lt cGxlX3JlZHVjdGlvbik6IERvbid0IGNvdW50IGVsc2Ugb3BlcmFuZCBpbg0KPiAJQ09ORF9BREQu DQo+IAkodmVjdF9jcmVhdGVfZXBpbG9nX2Zvcl9yZWR1Y3Rpb24pOiBGaXggd2hpdGVzcGFjZS4N Cj4gCSh2ZWN0b3JpemVfZm9sZF9sZWZ0X3JlZHVjdGlvbik6IEFkZCBDT05EX0FERCBoYW5kbGlu Zy4NCj4gCSh2ZWN0b3JpemFibGVfcmVkdWN0aW9uKTogRG9uJ3QgY291bnQgZWxzZSBvcGVyYW5k IGluIENPTkRfQURELg0KPiAJKHZlY3RfdHJhbnNmb3JtX3JlZHVjdGlvbik6IEFkZCBDT05EX0FE RCBoYW5kbGluZy4NCj4gCSogdHJlZS12ZWN0b3JpemVyLmggKG5ldXRyYWxfb3BfZm9yX3JlZHVj dGlvbik6IEFkZCBkZWZhdWx0DQo+IAlwYXJhbWV0ZXIuDQo+IA0KPiBnY2MvdGVzdHN1aXRlL0No YW5nZUxvZzoNCj4gDQo+IAkqIGdjYy5kZy92ZWN0L3ZlY3QtY29uZC1yZWR1Yy1pbi1vcmRlci0y LXNpZ25lZC16ZXJvLmM6IE5ldyB0ZXN0Lg0KPiAJKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL2NvbmQvcHIxMTE0MDEuYzogTmV3IHRlc3QuDQo+IC0tLQ0KPiAgLi4uL3ZlY3QtY29uZC1y ZWR1Yy1pbi1vcmRlci0yLXNpZ25lZC16ZXJvLmMgIHwgMTQxICsrKysrKysrKysrKysrKysNCj4g IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9jb25kL3ByMTExNDAxLmMgICAgICAgICB8IDEzOSArKysr KysrKysrKysrKysrDQo+ICBnY2MvdHJlZS1pZi1jb252LmNjICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNjMgKysrKysrLS0NCj4gIGdjYy90cmVlLXZlY3QtbG9vcC5jYyAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE1MCArKysrKysrKysrKysrKy0tLS0NCj4gIGdjYy90cmVlLXZlY3Rv cml6ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQ0KPiAgNSBmaWxlcyBjaGFu Z2VkLCA0NTEgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZSAxMDA2 NDQNCj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWNvbmQtcmVkdWMtaW4tb3JkZXIt Mi1zaWduZWQtemVyby5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL2NvbmQvcHIxMTE0MDEuYw0KPiANCj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1jb25kLXJlZHVjLWluLW9yZGVy LTItc2lnbmVkLQ0KPiB6ZXJvLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3QtY29u ZC1yZWR1Yy1pbi1vcmRlci0yLXNpZ25lZC16ZXJvLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAuLjdiNDZlN2Q4YTJhDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LWNvbmQtcmVkdWMtaW4tb3JkZXItMi1z aWduZWQtemVyby5jDQo+IEBAIC0wLDAgKzEsMTQxIEBADQo+ICsvKiBNYWtlIHN1cmUgYSAtMCBz dGF5cyAtMCB3aGVuIHdlIHBlcmZvcm0gYSBjb25kaXRpb25hbCByZWR1Y3Rpb24uICAqLw0KPiAr LyogeyBkZy1kbyBydW4gfSAqLw0KPiArLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg dmVjdF9kb3VibGUgfSAqLw0KPiArLyogeyBkZy1hZGQtb3B0aW9ucyBpZWVlIH0gKi8NCj4gKy8q IHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItc3RkPWdudTk5IC1mbm8tZmFzdC1tYXRoIiB9ICov DQo+ICsNCj4gKyNpbmNsdWRlICJ0cmVlLXZlY3QuaCINCj4gKw0KPiArI2luY2x1ZGUgPG1hdGgu aD4NCj4gKw0KPiArI2RlZmluZSBOIChWRUNUT1JfQklUUyAqIDE3KQ0KPiArDQo+ICtkb3VibGUg X19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkgcmVkdWNfcGx1c19kb3VibGUgKGRv dWJsZQ0KPiArKnJlc3RyaWN0IGEsIGRvdWJsZSBpbml0LCBpbnQgKmNvbmQsIGludCBuKSB7DQo+ ICsgIGRvdWJsZSByZXMgPSBpbml0Ow0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykN Cj4gKyAgICBpZiAoY29uZFtpXSkNCj4gKyAgICAgIHJlcyArPSBhW2ldOw0KPiArICByZXR1cm4g cmVzOw0KPiArfQ0KPiArDQo+ICtkb3VibGUgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Ns b25lLCBvcHRpbWl6ZSAoIjAiKSkpDQo+ICtyZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGRvdWJsZSAq cmVzdHJpY3QgYSwgZG91YmxlIGluaXQsIGludCAqY29uZCwgaW50DQo+ICtuKSB7DQo+ICsgIGRv dWJsZSByZXMgPSBpbml0Ow0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gKyAg ICBpZiAoY29uZFtpXSkNCj4gKyAgICAgIHJlcyArPSBhW2ldOw0KPiArICByZXR1cm4gcmVzOw0K PiArfQ0KPiArDQo+ICtkb3VibGUgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBub2Nsb25lKSkg cmVkdWNfbWludXNfZG91YmxlIChkb3VibGUNCj4gKypyZXN0cmljdCBhLCBkb3VibGUgaW5pdCwg aW50ICpjb25kLCBpbnQgbikgew0KPiArICBkb3VibGUgcmVzID0gaW5pdDsNCj4gKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ICsgICAgaWYgKGNvbmRbaV0pDQo+ICsgICAgICByZXMg LT0gYVtpXTsNCj4gKyAgcmV0dXJuIHJlczsNCj4gK30NCj4gKw0KPiArZG91YmxlIF9fYXR0cmli dXRlX18gKChub2lubGluZSwgbm9jbG9uZSwgb3B0aW1pemUgKCIwIikpKQ0KPiArcmVkdWNfbWlu dXNfZG91YmxlX3JlZiAoZG91YmxlICpyZXN0cmljdCBhLCBkb3VibGUgaW5pdCwgaW50ICpjb25k LCBpbnQNCj4gK24pIHsNCj4gKyAgZG91YmxlIHJlcyA9IGluaXQ7DQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSsrKQ0KPiArICAgIGlmIChjb25kW2ldKQ0KPiArICAgICAgcmVzIC09IGFb aV07DQo+ICsgIHJldHVybiByZXM7DQo+ICt9DQo+ICsNCj4gK2ludCBfX2F0dHJpYnV0ZV9fICgo b3B0aW1pemUgKDEpKSkNCj4gK21haW4gKCkNCj4gK3sNCj4gKyAgaW50IG4gPSAxOTsNCj4gKyAg ZG91YmxlIGFbTl07DQo+ICsgIGludCBjb25kMVtOXSwgY29uZDJbTl07DQo+ICsNCj4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBOOyBpKyspDQo+ICsgICAgew0KPiArICAgICAgYVtpXSA9IChpICog MC4xKSAqIChpICYgMSA/IDEgOiAtMSk7DQo+ICsgICAgICBjb25kMVtpXSA9IDA7DQo+ICsgICAg ICBjb25kMltpXSA9IGkgJiA0ID8gMSA6IDA7DQo+ICsgICAgICBhc20gdm9sYXRpbGUgKCIiIDo6 OiAibWVtb3J5Iik7DQo+ICsgICAgfQ0KPiArDQo+ICsgIGRvdWJsZSByZXMxID0gcmVkdWNfcGx1 c19kb3VibGUgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRvdWJsZSByZWYxID0NCj4gKyByZWR1Y19w bHVzX2RvdWJsZV9yZWYgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRvdWJsZSByZXMyID0NCj4gKyBy ZWR1Y19taW51c19kb3VibGUgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRvdWJsZSByZWYyID0NCj4g KyByZWR1Y19taW51c19kb3VibGVfcmVmIChhLCAtMC4wLCBjb25kMSwgbik7ICBkb3VibGUgcmVz MyA9DQo+ICsgcmVkdWNfcGx1c19kb3VibGUgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRvdWJsZSBy ZWYzID0NCj4gKyByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEsIC0wLjAsIGNvbmQxLCBuKTsgIGRv dWJsZSByZXM0ID0NCj4gKyByZWR1Y19taW51c19kb3VibGUgKGEsIC0wLjAsIGNvbmQxLCBuKTsg IGRvdWJsZSByZWY0ID0NCj4gKyByZWR1Y19taW51c19kb3VibGVfcmVmIChhLCAtMC4wLCBjb25k MSwgbik7DQo+ICsNCj4gKyAgaWYgKHJlczEgIT0gcmVmMSB8fCBzaWduYml0IChyZXMxKSAhPSBz aWduYml0IChyZWYxKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXMy ICE9IHJlZjIgfHwgc2lnbmJpdCAocmVzMikgIT0gc2lnbmJpdCAocmVmMikpDQo+ICsgICAgX19i dWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMyAhPSByZWYzIHx8IHNpZ25iaXQgKHJlczMp ICE9IHNpZ25iaXQgKHJlZjMpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYg KHJlczQgIT0gcmVmNCB8fCBzaWduYml0IChyZXM0KSAhPSBzaWduYml0IChyZWY0KSkNCj4gKyAg ICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsNCj4gKyAgcmVzMSA9IHJlZHVjX3BsdXNfZG91Ymxl IChhLCAwLjAsIGNvbmQxLCBuKTsNCj4gKyAgcmVmMSA9IHJlZHVjX3BsdXNfZG91YmxlX3JlZiAo YSwgMC4wLCBjb25kMSwgbik7DQo+ICsgIHJlczIgPSByZWR1Y19taW51c19kb3VibGUgKGEsIDAu MCwgY29uZDEsIG4pOw0KPiArICByZWYyID0gcmVkdWNfbWludXNfZG91YmxlX3JlZiAoYSwgMC4w LCBjb25kMSwgbik7DQo+ICsgIHJlczMgPSByZWR1Y19wbHVzX2RvdWJsZSAoYSwgMC4wLCBjb25k MSwgbik7DQo+ICsgIHJlZjMgPSByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEsIDAuMCwgY29uZDEs IG4pOw0KPiArICByZXM0ID0gcmVkdWNfbWludXNfZG91YmxlIChhLCAwLjAsIGNvbmQxLCBuKTsN Cj4gKyAgcmVmNCA9IHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIDAuMCwgY29uZDEsIG4pOw0K PiArDQo+ICsgIGlmIChyZXMxICE9IHJlZjEgfHwgc2lnbmJpdCAocmVzMSkgIT0gc2lnbmJpdCAo cmVmMSkpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMiAhPSByZWYy IHx8IHNpZ25iaXQgKHJlczIpICE9IHNpZ25iaXQgKHJlZjIpKQ0KPiArICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsNCj4gKyAgaWYgKHJlczMgIT0gcmVmMyB8fCBzaWduYml0IChyZXMzKSAhPSBzaWdu Yml0IChyZWYzKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXM0ICE9 IHJlZjQgfHwgc2lnbmJpdCAocmVzNCkgIT0gc2lnbmJpdCAocmVmNCkpDQo+ICsgICAgX19idWls dGluX2Fib3J0ICgpOw0KPiArDQo+ICsgIHJlczEgPSByZWR1Y19wbHVzX2RvdWJsZSAoYSwgLTAu MCwgY29uZDIsIG4pOw0KPiArICByZWYxID0gcmVkdWNfcGx1c19kb3VibGVfcmVmIChhLCAtMC4w LCBjb25kMiwgbik7DQo+ICsgIHJlczIgPSByZWR1Y19taW51c19kb3VibGUgKGEsIC0wLjAsIGNv bmQyLCBuKTsNCj4gKyAgcmVmMiA9IHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIC0wLjAsIGNv bmQyLCBuKTsNCj4gKyAgcmVzMyA9IHJlZHVjX3BsdXNfZG91YmxlIChhLCAtMC4wLCBjb25kMiwg bik7DQo+ICsgIHJlZjMgPSByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEsIC0wLjAsIGNvbmQyLCBu KTsNCj4gKyAgcmVzNCA9IHJlZHVjX21pbnVzX2RvdWJsZSAoYSwgLTAuMCwgY29uZDIsIG4pOw0K PiArICByZWY0ID0gcmVkdWNfbWludXNfZG91YmxlX3JlZiAoYSwgLTAuMCwgY29uZDIsIG4pOw0K PiArDQo+ICsgIGlmIChyZXMxICE9IHJlZjEgfHwgc2lnbmJpdCAocmVzMSkgIT0gc2lnbmJpdCAo cmVmMSkpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMiAhPSByZWYy IHx8IHNpZ25iaXQgKHJlczIpICE9IHNpZ25iaXQgKHJlZjIpKQ0KPiArICAgIF9fYnVpbHRpbl9h Ym9ydCAoKTsNCj4gKyAgaWYgKHJlczMgIT0gcmVmMyB8fCBzaWduYml0IChyZXMzKSAhPSBzaWdu Yml0IChyZWYzKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXM0ICE9 IHJlZjQgfHwgc2lnbmJpdCAocmVzNCkgIT0gc2lnbmJpdCAocmVmNCkpDQo+ICsgICAgX19idWls dGluX2Fib3J0ICgpOw0KPiArDQo+ICsgIHJlczEgPSByZWR1Y19wbHVzX2RvdWJsZSAoYSwgMC4w LCBjb25kMiwgbik7DQo+ICsgIHJlZjEgPSByZWR1Y19wbHVzX2RvdWJsZV9yZWYgKGEsIDAuMCwg Y29uZDIsIG4pOw0KPiArICByZXMyID0gcmVkdWNfbWludXNfZG91YmxlIChhLCAwLjAsIGNvbmQy LCBuKTsNCj4gKyAgcmVmMiA9IHJlZHVjX21pbnVzX2RvdWJsZV9yZWYgKGEsIDAuMCwgY29uZDIs IG4pOw0KPiArICByZXMzID0gcmVkdWNfcGx1c19kb3VibGUgKGEsIDAuMCwgY29uZDIsIG4pOw0K PiArICByZWYzID0gcmVkdWNfcGx1c19kb3VibGVfcmVmIChhLCAwLjAsIGNvbmQyLCBuKTsNCj4g KyAgcmVzNCA9IHJlZHVjX21pbnVzX2RvdWJsZSAoYSwgMC4wLCBjb25kMiwgbik7DQo+ICsgIHJl ZjQgPSByZWR1Y19taW51c19kb3VibGVfcmVmIChhLCAwLjAsIGNvbmQyLCBuKTsNCj4gKw0KPiAr ICBpZiAocmVzMSAhPSByZWYxIHx8IHNpZ25iaXQgKHJlczEpICE9IHNpZ25iaXQgKHJlZjEpKQ0K PiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYgKHJlczIgIT0gcmVmMiB8fCBzaWdu Yml0IChyZXMyKSAhPSBzaWduYml0IChyZWYyKSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 DQo+ICsgIGlmIChyZXMzICE9IHJlZjMgfHwgc2lnbmJpdCAocmVzMykgIT0gc2lnbmJpdCAocmVm MykpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzNCAhPSByZWY0IHx8 IHNpZ25iaXQgKHJlczQpICE9IHNpZ25iaXQgKHJlZjQpKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9y dCAoKTsNCj4gKw0KPiArICByZXR1cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9jb25kL3ByMTExNDAxLmMNCj4gYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvY29uZC9wcjExMTQwMS5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi44ZjFjYjBkNjhk ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy9jb25kL3ByMTExNDAxLmMNCj4gQEAgLTAsMCArMSwxMzkgQEANCj4gKy8q IHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdiB9IH0gfSAqLw0KPiArLyogeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIC0tcGFyYW0NCj4gK3Jp c2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJlZS12ZWN0LWRldGFpbHMi IH0gKi8NCj4gKw0KPiArZG91YmxlDQo+ICtfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQ0KPiArZm9v MiAoZG91YmxlICpfX3Jlc3RyaWN0IGEsIGRvdWJsZSBpbml0LCBpbnQgKl9fcmVzdHJpY3QgY29u ZCwgaW50IG4pIHsNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ICsgICAgaWYg KGNvbmRbaV0pDQo+ICsgICAgICBpbml0ICs9IGFbaV07DQo+ICsgIHJldHVybiBpbml0Ow0KPiAr fQ0KPiArDQo+ICtkb3VibGUNCj4gK19fYXR0cmlidXRlX18gKChub2lwYSkpDQo+ICtmb28zIChk b3VibGUgKl9fcmVzdHJpY3QgYSwgZG91YmxlIGluaXQsIGludCAqX19yZXN0cmljdCBjb25kLCBp bnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gKyAgICBpZiAoY29u ZFtpXSkNCj4gKyAgICAgIGluaXQgLT0gYVtpXTsNCj4gKyAgcmV0dXJuIGluaXQ7DQo+ICt9DQo+ ICsNCj4gK2RvdWJsZQ0KPiArX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkNCj4gK2ZvbzQgKGRvdWJs ZSAqX19yZXN0cmljdCBhLCBkb3VibGUgaW5pdCwgaW50ICpfX3Jlc3RyaWN0IGNvbmQsIGludCBu KSB7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQ0KPiArICAgIGlmIChjb25kW2ld KQ0KPiArICAgICAgaW5pdCAqPSBhW2ldOw0KPiArICByZXR1cm4gaW5pdDsNCj4gK30NCj4gKw0K PiAraW50DQo+ICtfX2F0dHJpYnV0ZV9fICgobm9pcGEpKQ0KPiArZm9vNSAoaW50ICpfX3Jlc3Ry aWN0IGEsIGludCBpbml0LCBpbnQgKl9fcmVzdHJpY3QgY29uZCwgaW50IG4pIHsNCj4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+ICsgICAgaWYgKGNvbmRbaV0pDQo+ICsgICAgICBp bml0ICY9IGFbaV07DQo+ICsgIHJldHVybiBpbml0Ow0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK19f YXR0cmlidXRlX18gKChub2lwYSkpDQo+ICtmb282IChpbnQgKl9fcmVzdHJpY3QgYSwgaW50IGlu aXQsIGludCAqX19yZXN0cmljdCBjb25kLCBpbnQgbikgew0KPiArICBmb3IgKGludCBpID0gMDsg aSA8IG47IGkrKykNCj4gKyAgICBpZiAoY29uZFtpXSkNCj4gKyAgICAgIGluaXQgfD0gYVtpXTsN Cj4gKyAgcmV0dXJuIGluaXQ7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArX19hdHRyaWJ1dGVfXyAo KG5vaXBhKSkNCj4gK2ZvbzcgKGludCAqX19yZXN0cmljdCBhLCBpbnQgaW5pdCwgaW50ICpfX3Jl c3RyaWN0IGNvbmQsIGludCBuKSB7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQ0K PiArICAgIGlmIChjb25kW2ldKQ0KPiArICAgICAgaW5pdCBePSBhW2ldOw0KPiArICByZXR1cm4g aW5pdDsNCj4gK30NCj4gKw0KPiArI2RlZmluZSBTWiAxMjUNCj4gKw0KPiAraW50DQo+ICttYWlu ICgpDQo+ICt7DQo+ICsgIGRvdWJsZSByZXMxID0gMCwgcmVzMiA9IDAsIHJlczMgPSAwOw0KPiAr ICBkb3VibGUgYTFbU1pdLCBhMltTWl0sIGEzW1NaXTsNCj4gKyAgaW50IGMxW1NaXSwgYzJbU1pd LCBjM1tTWl07DQo+ICsNCj4gKyAgaW50IGE0W1NaXSwgYTVbU1pdLCBhNltTWl0sIGE3W1NaXSwg YThbU1pdOyAgaW50IHJlczQgPSAwLCByZXM1ID0gMCwNCj4gKyByZXM2ID0gMDsgIGludCBjNFtT Wl0sIGM1W1NaXSwgYzZbU1pdOw0KPiArDQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgU1o7IGkr KykNCj4gKyAgICB7DQo+ICsgICAgICBhMVtpXSA9IGkgKiAzICsgKGkgJiA0KSAtIChpICYgNyk7 DQo+ICsgICAgICBhMltpXSA9IGkgKiAzICsgKGkgJiA0KSAtIChpICYgNyk7DQo+ICsgICAgICBh M1tpXSA9IGkgKiAwLjA1ICsgKGkgJiA0KSAtIChpICYgNyk7DQo+ICsgICAgICBhNFtpXSA9IGkg KiAzICsgKGkgJiA0KSAtIChpICYgNyk7DQo+ICsgICAgICBhNVtpXSA9IGkgKiAzICsgKGkgJiA0 KSAtIChpICYgNyk7DQo+ICsgICAgICBhNltpXSA9IGkgKiAzICsgKGkgJiA0KSAtIChpICYgNyk7 DQo+ICsgICAgICBjMVtpXSA9IGkgJiAxOw0KPiArICAgICAgYzJbaV0gPSBpICYgMjsNCj4gKyAg ICAgIGMzW2ldID0gaSAmIDM7DQo+ICsgICAgICBjNFtpXSA9IGkgJiA0Ow0KPiArICAgICAgYzVb aV0gPSBpICYgNTsNCj4gKyAgICAgIGM2W2ldID0gaSAmIDY7DQo+ICsgICAgICBfX2FzbV9fIHZv bGF0aWxlICgiIiA6IDogOiAibWVtb3J5Iik7DQo+ICsgICAgfQ0KPiArDQo+ICsgIGRvdWJsZSBp bml0MSA9IDIuNywgaW5pdDIgPSA4LjIsIGluaXQzID0gMC4xOyAgZG91YmxlIHJlZjEgPSBpbml0 MSwNCj4gKyByZWYyID0gaW5pdDIsIHJlZjMgPSBpbml0MzsNCj4gKw0KPiArICBpbnQgaW5pdDQg PSA4NywgaW5pdDUgPSAxMSwgaW5pdDYgPSAtMTIzODk0MzQ0LCBpbml0NyA9IC0yLCBpbml0OCA9 DQo+ICsgODU0ODkzOyAgaW50IHJlZjQgPSBpbml0NCwgcmVmNSA9IGluaXQ1LCByZWY2ID0gaW5p dDY7DQo+ICsNCj4gKyNwcmFnbWEgR0NDIG5vdmVjdG9yDQo+ICsgIGZvciAoaW50IGkgPSAwOyBp IDwgU1o7IGkrKykNCj4gKyAgICB7DQo+ICsgICAgICBpZiAoYzFbaV0pDQo+ICsgICAgICAgIHJl ZjEgKz0gYTFbaV07DQo+ICsgICAgICBpZiAoYzJbaV0pDQo+ICsgICAgICAgIHJlZjIgLT0gYTJb aV07DQo+ICsgICAgICBpZiAoYzNbaV0pDQo+ICsgICAgICAgIHJlZjMgKj0gYTNbaV07DQo+ICsg ICAgICBpZiAoYzRbaV0pDQo+ICsgICAgICAgIHJlZjQgJj0gYTRbaV07DQo+ICsgICAgICBpZiAo YzVbaV0pDQo+ICsgICAgICAgIHJlZjUgfD0gYTVbaV07DQo+ICsgICAgICBpZiAoYzZbaV0pDQo+ ICsgICAgICAgIHJlZjYgXj0gYTZbaV07DQo+ICsgICAgfQ0KPiArDQo+ICsgIHJlczEgPSBmb28y IChhMSwgaW5pdDEsIGMxLCBTWik7DQo+ICsgIHJlczIgPSBmb28zIChhMiwgaW5pdDIsIGMyLCBT Wik7DQo+ICsgIHJlczMgPSBmb280IChhMywgaW5pdDMsIGMzLCBTWik7DQo+ICsgIHJlczQgPSBm b281IChhNCwgaW5pdDQsIGM0LCBTWik7DQo+ICsgIHJlczUgPSBmb282IChhNSwgaW5pdDUsIGM1 LCBTWik7DQo+ICsgIHJlczYgPSBmb283IChhNiwgaW5pdDYsIGM2LCBTWik7DQo+ICsNCj4gKyAg aWYgKHJlczEgIT0gcmVmMSkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChy ZXMyICE9IHJlZjIpDQo+ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzMyAh PSByZWYzKQ0KPiArICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gKyAgaWYgKHJlczQgIT0gcmVm NCkNCj4gKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQo+ICsgIGlmIChyZXM1ICE9IHJlZjUpDQo+ ICsgICAgX19idWlsdGluX2Fib3J0ICgpOw0KPiArICBpZiAocmVzNiAhPSByZWY2KQ0KPiArICAg IF9fYnVpbHRpbl9hYm9ydCAoKTsNCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcCIgNSAidmVjdCIgfSB9DQo+ICsqLw0K PiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiVkNPTkRfTUFTSyIgInZlY3Qi IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtaWYtY29udi5jYyBiL2djYy90cmVlLWlm LWNvbnYuY2MgaW5kZXgNCj4gYThjOTE1OTEzYWUuLmIzMzQxNzM3OTRkIDEwMDY0NA0KPiAtLS0g YS9nY2MvdHJlZS1pZi1jb252LmNjDQo+ICsrKyBiL2djYy90cmVlLWlmLWNvbnYuY2MNCj4gQEAg LTE4NTIsMTAgKzE4NTIsMTIgQEAgY29udmVydF9zY2FsYXJfY29uZF9yZWR1Y3Rpb24gKGdpbXBs ZSAqcmVkdWMsDQo+IGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksDQo+ICAgIGdpbXBsZSAqbmV3 X2Fzc2lnbjsNCj4gICAgdHJlZSByaHM7DQo+ICAgIHRyZWUgcmhzMSA9IGdpbXBsZV9hc3NpZ25f cmhzMSAocmVkdWMpOw0KPiArICB0cmVlIGxocyA9IGdpbXBsZV9hc3NpZ25fbGhzIChyZWR1Yyk7 DQo+ICAgIHRyZWUgdG1wID0gbWFrZV90ZW1wX3NzYV9uYW1lIChUUkVFX1RZUEUgKHJoczEpLCBO VUxMLCAiX2lmY18iKTsNCj4gICAgdHJlZSBjOw0KPiAgICBlbnVtIHRyZWVfY29kZSByZWR1Y3Rp b25fb3AgID0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAocmVkdWMpOw0KPiAtICB0cmVlIG9wX25v Y2hhbmdlID0gbmV1dHJhbF9vcF9mb3JfcmVkdWN0aW9uIChUUkVFX1RZUEUgKHJoczEpLA0KPiBy ZWR1Y3Rpb25fb3AsIE5VTEwpOw0KPiArICB0cmVlIG9wX25vY2hhbmdlID0gbmV1dHJhbF9vcF9m b3JfcmVkdWN0aW9uIChUUkVFX1RZUEUgKHJoczEpLA0KPiByZWR1Y3Rpb25fb3AsDQo+ICsJCQkJ CSAgICAgICBOVUxMLCBmYWxzZSk7DQo+ICAgIGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0KPiAN Cj4gICAgaWYgKGR1bXBfZmlsZSAmJiAoZHVtcF9mbGFncyAmIFRERl9ERVRBSUxTKSkgQEAgLTE4 NjQsMTkgKzE4NjYsNTINCj4gQEAgY29udmVydF9zY2FsYXJfY29uZF9yZWR1Y3Rpb24gKGdpbXBs ZSAqcmVkdWMsIGdpbXBsZV9zdG10X2l0ZXJhdG9yDQo+ICpnc2ksDQo+ICAgICAgICBwcmludF9n aW1wbGVfc3RtdCAoZHVtcF9maWxlLCByZWR1YywgMCwgVERGX1NMSU0pOw0KPiAgICAgIH0NCj4g DQo+IC0gIC8qIEJ1aWxkIGNvbmQgZXhwcmVzc2lvbiB1c2luZyBDT05EIGFuZCBjb25zdGFudCBv cGVyYW5kDQo+IC0gICAgIG9mIHJlZHVjdGlvbiByaHMuICAqLw0KPiAtICBjID0gZm9sZF9idWls ZF9jb25kX2V4cHIgKFRSRUVfVFlQRSAocmhzMSksDQo+IC0JCQkgICAgdW5zaGFyZV9leHByIChj b25kKSwNCj4gLQkJCSAgICBzd2FwID8gb3Bfbm9jaGFuZ2UgOiBvcDEsDQo+IC0JCQkgICAgc3dh cCA/IG9wMSA6IG9wX25vY2hhbmdlKTsNCj4gKyAgLyogSWYgcG9zc2libGUgdHJ5IHRvIGNyZWF0 ZSBhbiBJRk5fQ09ORF9BREQgaW5zdGVhZCBvZiBhIENPTkRfRVhQUiBhbmQNCj4gKyAgICAgYSBQ TFVTX0VYUFIuICBEb24ndCBkbyB0aGlzIGlmIHRoZSByZWR1Y3Rpb24gZGVmIG9wZXJhbmQgaXRz ZWxmIGlzDQo+ICsgICAgIGEgdmVjdG9yaXphYmxlIGNhbGwgYXMgd2UgY2FuIGNyZWF0ZSBhIENP TkQgdmVyc2lvbiBvZiBpdA0KPiArIGRpcmVjdGx5LiAgKi8gIGludGVybmFsX2ZuIGlmbjsgIGlm biA9IGdldF9jb25kaXRpb25hbF9pbnRlcm5hbF9mbg0KPiArIChyZWR1Y3Rpb25fb3ApOw0KPiAN Cj4gLSAgLyogQ3JlYXRlIGFzc2lnbm1lbnQgc3RtdCBhbmQgaW5zZXJ0IGl0IGF0IEdTSS4gICov DQo+IC0gIG5ld19hc3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduICh0bXAsIGMpOw0KPiAtICBn c2lfaW5zZXJ0X2JlZm9yZSAoZ3NpLCBuZXdfYXNzaWduLCBHU0lfU0FNRV9TVE1UKTsNCj4gLSAg LyogQnVpbGQgcmhzIGZvciB1bmNvbmRpdGlvbmFsIGluY3JlbWVudC9kZWNyZW1lbnQvbG9naWNf b3BlcmF0aW9uLiAgKi8NCj4gLSAgcmhzID0gZ2ltcGxlX2J1aWxkICgmc3RtdHMsIHJlZHVjdGlv bl9vcCwNCj4gLQkJICAgICAgVFJFRV9UWVBFIChyaHMxKSwgb3AwLCB0bXApOw0KPiArICBib29s IHRyeV9jb25kX29wID0gdHJ1ZTsNCj4gKyAgZ2ltcGxlICpvcHN0bXQ7DQo+ICsgIGlmIChUUkVF X0NPREUgKG9wMSkgPT0gU1NBX05BTUUNCj4gKyAgICAgICYmIChvcHN0bXQgPSBTU0FfTkFNRV9E RUZfU1RNVCAob3AxKSkNCj4gKyAgICAgICYmIGlzX2dpbXBsZV9jYWxsIChvcHN0bXQpKQ0KPiAr ICAgIHsNCj4gKyAgICAgIGNvbWJpbmVkX2ZuIGNmbiA9IGdpbXBsZV9jYWxsX2NvbWJpbmVkX2Zu IChvcHN0bXQpOw0KPiArICAgICAgaW50ZXJuYWxfZm4gaWZub3A7DQo+ICsgICAgICByZWR1Y3Rp b25fZm5fZm9yX3NjYWxhcl9jb2RlIChjZm4sICZpZm5vcCk7DQo+ICsgICAgICBpZiAodmVjdG9y aXplZF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoaWZub3AsIFRSRUVfVFlQRQ0KPiArCQkJCQkg ICAgICAoZ2ltcGxlX2NhbGxfbGhzIChvcHN0bXQpKSkpDQo+ICsJdHJ5X2NvbmRfb3AgPSBmYWxz ZTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgaWYgKGlmbiAhPSBJRk5fTEFTVA0KPiArICAgICAgJiYg dmVjdG9yaXplZF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoaWZuLCBUUkVFX1RZUEUgKGxocykp DQo+ICsgICAgICAmJiB0cnlfY29uZF9vcCAmJiAhc3dhcCkNCj4gKyAgICB7DQo+ICsgICAgICBn Y2FsbCAqY29uZF9jYWxsID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKGlmbiwgNCwNCj4g KwkJCQkJCSAgICAgdW5zaGFyZV9leHByIChjb25kKSwNCj4gKwkJCQkJCSAgICAgb3AwLCBvcDEs IG9wMCk7DQo+ICsgICAgICBnc2lfaW5zZXJ0X2JlZm9yZSAoZ3NpLCBjb25kX2NhbGwsIEdTSV9T QU1FX1NUTVQpOw0KPiArICAgICAgZ2ltcGxlX2NhbGxfc2V0X2xocyAoY29uZF9jYWxsLCB0bXAp Ow0KPiArICAgICAgcmhzID0gdG1wOw0KPiArICAgIH0NCj4gKyAgZWxzZQ0KPiArICAgIHsNCj4g KyAgICAgIC8qIEJ1aWxkIGNvbmQgZXhwcmVzc2lvbiB1c2luZyBDT05EIGFuZCBjb25zdGFudCBv cGVyYW5kDQo+ICsJIG9mIHJlZHVjdGlvbiByaHMuICAqLw0KPiArICAgICAgYyA9IGZvbGRfYnVp bGRfY29uZF9leHByIChUUkVFX1RZUEUgKHJoczEpLA0KPiArCQkJCXVuc2hhcmVfZXhwciAoY29u ZCksDQo+ICsJCQkJc3dhcCA/IG9wX25vY2hhbmdlIDogb3AxLA0KPiArCQkJCXN3YXAgPyBvcDEg OiBvcF9ub2NoYW5nZSk7DQo+ICsgICAgICAvKiBDcmVhdGUgYXNzaWdubWVudCBzdG10IGFuZCBp bnNlcnQgaXQgYXQgR1NJLiAgKi8NCj4gKyAgICAgIG5ld19hc3NpZ24gPSBnaW1wbGVfYnVpbGRf YXNzaWduICh0bXAsIGMpOw0KPiArICAgICAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwgbmV3X2Fz c2lnbiwgR1NJX1NBTUVfU1RNVCk7DQo+ICsgICAgICAvKiBCdWlsZCByaHMgZm9yIHVuY29uZGl0 aW9uYWwgaW5jcmVtZW50L2RlY3JlbWVudC9sb2dpY19vcGVyYXRpb24uICAqLw0KPiArICAgICAg cmhzID0gZ2ltcGxlX2J1aWxkICgmc3RtdHMsIHJlZHVjdGlvbl9vcCwNCj4gKwkJCSAgVFJFRV9U WVBFIChyaHMxKSwgb3AwLCB0bXApOw0KPiArICAgIH0NCj4gDQo+ICAgIGlmIChoYXNfbm9wKQ0K PiAgICAgIHsNCj4gQEAgLTIyNDEsNyArMjI3Niw3IEBAIHByZWRpY2F0ZV9zY2FsYXJfcGhpIChn cGhpICpwaGksDQo+IGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2kpDQo+ICAJew0KPiAgCSAgLyog Q29udmVydCByZWR1Y3Rpb24gc3RtdCBpbnRvIHZlY3Rvcml6YWJsZSBmb3JtLiAgKi8NCj4gIAkg IHJocyA9IGNvbnZlcnRfc2NhbGFyX2NvbmRfcmVkdWN0aW9uIChyZWR1YywgZ3NpLCBjb25kLCBv cDAsIG9wMSwNCj4gLQkJCQkJICAgICAgIHN3YXAsaGFzX25vcCwgbm9wX3JlZHVjKTsNCj4gKwkJ CQkJICAgICAgIHN3YXAsIGhhc19ub3AsIG5vcF9yZWR1Yyk7DQo+ICAJICByZWR1bmRhbnRfc3Nh X25hbWVzLnNhZmVfcHVzaCAoc3RkOjptYWtlX3BhaXIgKHJlcywgcmhzKSk7DQo+ICAJfQ0KPiAg ICAgICAgbmV3X3N0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChyZXMsIHJocyk7IGRpZmYgLS1n aXQgYS9nY2MvdHJlZS12ZWN0LQ0KPiBsb29wLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGlu ZGV4IDIzYzZlODI1OWU3Li4zYzgwMDI5ZWVjNSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVj dC1sb29wLmNjDQo+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiBAQCAtMzY3Miw3ICsz NjcyLDcgQEAgdmVjdF9hbmFseXplX2xvb3AgKGNsYXNzIGxvb3AgKmxvb3AsDQo+IHZlY19pbmZv X3NoYXJlZCAqc2hhcmVkKSAgc3RhdGljIGJvb2wgIGZvbGRfbGVmdF9yZWR1Y3Rpb25fZm4gKGNv ZGVfaGVscGVyDQo+IGNvZGUsIGludGVybmFsX2ZuICpyZWR1Y19mbikgIHsNCj4gLSAgaWYgKGNv ZGUgPT0gUExVU19FWFBSKQ0KPiArICBpZiAoY29kZSA9PSBQTFVTX0VYUFIgfHwgY29kZSA9PSBN SU5VU19FWFBSKQ0KPiAgICAgIHsNCj4gICAgICAgICpyZWR1Y19mbiA9IElGTl9GT0xEX0xFRlRf UExVUzsNCj4gICAgICAgIHJldHVybiB0cnVlOw0KPiBAQCAtMzc1MSwyMyArMzc1MSwyOSBAQCBy ZWR1Y3Rpb25fZm5fZm9yX3NjYWxhcl9jb2RlIChjb2RlX2hlbHBlcg0KPiBjb2RlLCBpbnRlcm5h bF9mbiAqcmVkdWNfZm4pDQo+ICAgICBieSB0aGUgaW50cm9kdWN0aW9uIG9mIGFkZGl0aW9uYWwg WCBlbGVtZW50cywgcmV0dXJuIHRoYXQgWCwgb3RoZXJ3aXNlDQo+ICAgICByZXR1cm4gbnVsbC4g IENPREUgaXMgdGhlIGNvZGUgb2YgdGhlIHJlZHVjdGlvbiBhbmQgU0NBTEFSX1RZUEUgaXMgdHlw ZQ0KPiAgICAgb2YgdGhlIHNjYWxhciBlbGVtZW50cy4gIElmIHRoZSByZWR1Y3Rpb24gaGFzIGp1 c3QgYSBzaW5nbGUgaW5pdGlhbCB2YWx1ZQ0KPiAtICAgdGhlbiBJTklUSUFMX1ZBTFVFIGlzIHRo YXQgdmFsdWUsIG90aGVyd2lzZSBpdCBpcyBudWxsLiAgKi8NCj4gKyAgIHRoZW4gSU5JVElBTF9W QUxVRSBpcyB0aGF0IHZhbHVlLCBvdGhlcndpc2UgaXQgaXMgbnVsbC4NCj4gKyAgIElmIEFTX0lO SVRJQUwgaXMgVFJVRSB0aGUgdmFsdWUgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhcyBpbml0aWFs IHZhbHVlLg0KPiArICAgSW4gdGhhdCBjYXNlIG5vIHNpZ25lZCB6ZXJvIGlzIHJldHVybmVkLiAg Ki8NCj4gDQo+ICB0cmVlDQo+ICBuZXV0cmFsX29wX2Zvcl9yZWR1Y3Rpb24gKHRyZWUgc2NhbGFy X3R5cGUsIGNvZGVfaGVscGVyIGNvZGUsDQo+IC0JCQkgIHRyZWUgaW5pdGlhbF92YWx1ZSkNCj4g KwkJCSAgdHJlZSBpbml0aWFsX3ZhbHVlLCBib29sIGFzX2luaXRpYWwpDQo+ICB7DQo+ICAgIGlm IChjb2RlLmlzX3RyZWVfY29kZSAoKSkNCj4gICAgICBzd2l0Y2ggKHRyZWVfY29kZSAoY29kZSkp DQo+ICAgICAgICB7DQo+IC0gICAgICBjYXNlIFdJREVOX1NVTV9FWFBSOg0KPiAgICAgICAgY2Fz ZSBET1RfUFJPRF9FWFBSOg0KPiAgICAgICAgY2FzZSBTQURfRVhQUjoNCj4gLSAgICAgIGNhc2Ug UExVU19FWFBSOg0KPiAgICAgICAgY2FzZSBNSU5VU19FWFBSOg0KPiAgICAgICAgY2FzZSBCSVRf SU9SX0VYUFI6DQo+ICAgICAgICBjYXNlIEJJVF9YT1JfRVhQUjoNCj4gIAlyZXR1cm4gYnVpbGRf emVyb19jc3QgKHNjYWxhcl90eXBlKTsNCj4gKyAgICAgIGNhc2UgV0lERU5fU1VNX0VYUFI6DQo+ ICsgICAgICBjYXNlIFBMVVNfRVhQUjoNCj4gKwlpZiAoIWFzX2luaXRpYWwgJiYgSE9OT1JfU0lH TkVEX1pFUk9TIChzY2FsYXJfdHlwZSkpDQo+ICsJICByZXR1cm4gYnVpbGRfcmVhbCAoc2NhbGFy X3R5cGUsIGRjb25zdG0wKTsNCj4gKwllbHNlDQo+ICsJICByZXR1cm4gYnVpbGRfemVyb19jc3Qg KHNjYWxhcl90eXBlKTsNCj4gDQo+ICAgICAgICBjYXNlIE1VTFRfRVhQUjoNCj4gIAlyZXR1cm4g YnVpbGRfb25lX2NzdCAoc2NhbGFyX3R5cGUpOw0KPiBAQCAtNDEwNiw4ICs0MTEyLDE0IEBAIHZl Y3RfaXNfc2ltcGxlX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX2luZm8sIHN0bXRf dmVjX2luZm8gcGhpX2luZm8sDQo+ICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICAgICAgICAg IH0NCj4gDQo+IC0gICAgICBucGhpX2RlZl9sb29wX3VzZXMrKzsNCj4gLSAgICAgIHBoaV91c2Vf c3RtdCA9IHVzZV9zdG10Ow0KPiArICAgICAgLyogSW4gY2FzZSBvZiBhIENPTkRfT1AgKG1hc2ss IG9wMSwgb3AyLCBvcDEpIHJlZHVjdGlvbiB3ZSBtaWdodCBoYXZlDQo+ICsJIG9wMSB0d2ljZSAo b25jZSBhcyBkZWZpbml0aW9uLCBvbmNlIGFzIGVsc2UpIGluIHRoZSBzYW1lIG9wZXJhdGlvbi4N Cj4gKwkgT25seSBjb3VudCBpdCBhcyBvbmUuICovDQo+ICsgICAgICBpZiAodXNlX3N0bXQgIT0g cGhpX3VzZV9zdG10KQ0KPiArCXsNCj4gKwkgIG5waGlfZGVmX2xvb3BfdXNlcysrOw0KPiArCSAg cGhpX3VzZV9zdG10ID0gdXNlX3N0bXQ7DQo+ICsJfQ0KPiAgICAgIH0NCj4gDQo+ICAgIHRyZWUg bGF0Y2hfZGVmID0gUEhJX0FSR19ERUZfRlJPTV9FREdFIChwaGksIGxvb3BfbGF0Y2hfZWRnZSAo bG9vcCkpOw0KPiBAQCAtNjA0MSw3ICs2MDUzLDcgQEAgdmVjdF9jcmVhdGVfZXBpbG9nX2Zvcl9y ZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywNCj4gICAgICAgIGdjY19hc3Nl cnQgKFNUTVRfVklORk9fSU5fUEFUVEVSTl9QIChvcmlnX3N0bXRfaW5mbykpOw0KPiAgICAgICAg Z2NjX2Fzc2VydCAoU1RNVF9WSU5GT19SRUxBVEVEX1NUTVQgKG9yaWdfc3RtdF9pbmZvKSA9PSBz dG10X2luZm8pOw0KPiAgICAgIH0NCj4gLQ0KPiArDQo+ICAgIHNjYWxhcl9kZXN0ID0gZ2ltcGxl X2dldF9saHMgKG9yaWdfc3RtdF9pbmZvLT5zdG10KTsNCj4gICAgc2NhbGFyX3R5cGUgPSBUUkVF X1RZUEUgKHNjYWxhcl9kZXN0KTsNCj4gICAgc2NhbGFyX3Jlc3VsdHMudHJ1bmNhdGUgKDApOw0K PiBAQCAtNjM3OCw3ICs2MzkwLDcgQEAgdmVjdF9jcmVhdGVfZXBpbG9nX2Zvcl9yZWR1Y3Rpb24g KGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywNCj4gIAkgIGlmIChSRURVQ19HUk9VUF9GSVJT VF9FTEVNRU5UIChzdG10X2luZm8pKQ0KPiAgCSAgICBpbml0aWFsX3ZhbHVlID0gcmVkdWNfaW5m by0+cmVkdWNfaW5pdGlhbF92YWx1ZXNbMF07DQo+ICAJICBuZXV0cmFsX29wID0gbmV1dHJhbF9v cF9mb3JfcmVkdWN0aW9uIChUUkVFX1RZUEUgKHZlY3R5cGUpLCBjb2RlLA0KPiAtCQkJCQkJIGlu aXRpYWxfdmFsdWUpOw0KPiArCQkJCQkJIGluaXRpYWxfdmFsdWUsIGZhbHNlKTsNCj4gIAl9DQo+ ICAgICAgICBpZiAobmV1dHJhbF9vcCkNCj4gIAl2ZWN0b3JfaWRlbnRpdHkgPSBnaW1wbGVfYnVp bGRfdmVjdG9yX2Zyb21fdmFsICgmc2VxLCB2ZWN0eXBlLCBAQCAtDQo+IDY4NjAsOCArNjg3Miw4 IEBAIHZlY3Rvcml6ZV9mb2xkX2xlZnRfcmVkdWN0aW9uIChsb29wX3ZlY19pbmZvIGxvb3Bfdmlu Zm8sDQo+ICAJCQkgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwNCj4gIAkJCSAgICAg ICBnaW1wbGUgKip2ZWNfc3RtdCwgc2xwX3RyZWUgc2xwX25vZGUsDQo+ICAJCQkgICAgICAgZ2lt cGxlICpyZWR1Y19kZWZfc3RtdCwNCj4gLQkJCSAgICAgICB0cmVlX2NvZGUgY29kZSwgaW50ZXJu YWxfZm4gcmVkdWNfZm4sDQo+IC0JCQkgICAgICAgdHJlZSBvcHNbM10sIHRyZWUgdmVjdHlwZV9p biwNCj4gKwkJCSAgICAgICBjb2RlX2hlbHBlciBjb2RlLCBpbnRlcm5hbF9mbiByZWR1Y19mbiwN Cj4gKwkJCSAgICAgICB0cmVlICpvcHMsIGludCBudW1fb3BzLCB0cmVlIHZlY3R5cGVfaW4sDQo+ ICAJCQkgICAgICAgaW50IHJlZHVjX2luZGV4LCB2ZWNfbG9vcF9tYXNrcyAqbWFza3MsDQo+ICAJ CQkgICAgICAgdmVjX2xvb3BfbGVucyAqbGVucykNCj4gIHsNCj4gQEAgLTY4NzcsMTcgKzY4ODks NDggQEAgdmVjdG9yaXplX2ZvbGRfbGVmdF9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8NCj4gbG9v cF92aW5mbywNCj4gDQo+ICAgIGdjY19hc3NlcnQgKCFuZXN0ZWRfaW5fdmVjdF9sb29wX3AgKGxv b3AsIHN0bXRfaW5mbykpOw0KPiAgICBnY2NfYXNzZXJ0IChuY29waWVzID09IDEpOw0KPiAtICBn Y2NfYXNzZXJ0IChUUkVFX0NPREVfTEVOR1RIIChjb2RlKSA9PSBiaW5hcnlfb3ApOw0KPiArDQo+ ICsgIGJvb2wgaXNfY29uZF9vcCA9IGZhbHNlOw0KPiArICBpZiAoIWNvZGUuaXNfdHJlZV9jb2Rl ICgpKQ0KPiArICAgIHsNCj4gKyAgICAgIGNvZGUgPSBjb25kaXRpb25hbF9pbnRlcm5hbF9mbl9j b2RlIChpbnRlcm5hbF9mbiAoY29kZSkpOw0KPiArICAgICAgZ2NjX2Fzc2VydCAoY29kZSAhPSBF UlJPUl9NQVJLKTsNCj4gKyAgICAgIGlzX2NvbmRfb3AgPSB0cnVlOw0KPiArICAgIH0NCj4gKw0K PiArICBnY2NfYXNzZXJ0IChUUkVFX0NPREVfTEVOR1RIICh0cmVlX2NvZGUgKGNvZGUpKSA9PSBi aW5hcnlfb3ApOw0KPiANCj4gICAgaWYgKHNscF9ub2RlKQ0KPiAtICAgIGdjY19hc3NlcnQgKGtu b3duX2VxIChUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZV9vdXQpLA0KPiAtCQkJICBUWVBF X1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZV9pbikpKTsNCj4gKyAgICB7DQo+ICsgICAgICBpZiAo aXNfY29uZF9vcCkNCj4gKwl7DQo+ICsJICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpDQo+ICsJICAg IGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJT04sIHZlY3RfbG9jYXRpb24s DQo+ICsJCQkgICAgICJmb2xkLWxlZnQgcmVkdWN0aW9uIG9uIFNMUCBub3Qgc3VwcG9ydGVkLlxu Iik7DQo+ICsJICByZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiANCj4gLSAgdHJlZSBvcDAgPSBvcHNb MSAtIHJlZHVjX2luZGV4XTsNCj4gKyAgICAgIGdjY19hc3NlcnQgKGtub3duX2VxIChUWVBFX1ZF Q1RPUl9TVUJQQVJUUyAodmVjdHlwZV9vdXQpLA0KPiArCQkJICAgIFRZUEVfVkVDVE9SX1NVQlBB UlRTICh2ZWN0eXBlX2luKSkpOw0KPiArICAgIH0NCj4gKw0KPiArICAvKiBUaGUgb3BlcmFuZHMg ZWl0aGVyIGNvbWUgZnJvbSBhIGJpbmFyeSBvcGVyYXRpb24gb3IgYW4gSUZOX0NPTkQNCj4gb3Bl cmF0aW9uLg0KPiArICAgICBUaGUgZm9ybWVyIGlzIGEgZ2ltcGxlIGFzc2lnbiB3aXRoIGJpbmFy eSByaHMgYW5kIHRoZSBsYXR0ZXIgaXMgYQ0KPiArICAgICBnaW1wbGUgY2FsbCB3aXRoIGZvdXIg YXJndW1lbnRzLiAgKi8gIGdjY19hc3NlcnQgKG51bV9vcHMgPT0gMiB8fA0KPiArIG51bV9vcHMg PT0gNCk7ICB0cmVlIG9wMCwgb3BtYXNrOyAgaWYgKCFpc19jb25kX29wKQ0KPiArICAgIG9wMCA9 IG9wc1sxIC0gcmVkdWNfaW5kZXhdOw0KPiArICBlbHNlDQo+ICsgICAgew0KPiArICAgICAgb3Aw ID0gb3BzWzJdOw0KPiArICAgICAgb3BtYXNrID0gb3BzWzBdOw0KPiArICAgICAgZ2NjX2Fzc2Vy dCAoIXNscF9ub2RlKTsNCj4gKyAgICB9DQo+IA0KPiAgICBpbnQgZ3JvdXBfc2l6ZSA9IDE7DQo+ ICAgIHN0bXRfdmVjX2luZm8gc2NhbGFyX2Rlc3RfZGVmX2luZm87DQo+IC0gIGF1dG9fdmVjPHRy ZWU+IHZlY19vcHJuZHMwOw0KPiArICBhdXRvX3ZlYzx0cmVlPiB2ZWNfb3BybmRzMCwgdmVjX29w bWFzazsNCj4gICAgaWYgKHNscF9ub2RlKQ0KPiAgICAgIHsNCj4gICAgICAgIGF1dG9fdmVjPHZl Yzx0cmVlPiA+IHZlY19kZWZzICgyKTsgQEAgLTY5MDMsOSArNjk0NiwxNSBAQA0KPiB2ZWN0b3Jp emVfZm9sZF9sZWZ0X3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPiAgICAg ICAgdmVjdF9nZXRfdmVjX2RlZnNfZm9yX29wZXJhbmQgKGxvb3BfdmluZm8sIHN0bXRfaW5mbywg MSwNCj4gIAkJCQkgICAgIG9wMCwgJnZlY19vcHJuZHMwKTsNCj4gICAgICAgIHNjYWxhcl9kZXN0 X2RlZl9pbmZvID0gc3RtdF9pbmZvOw0KPiArDQo+ICsgICAgICAvKiBGb3IgYW4gSUZOX0NPTkRf T1Agd2UgYWxzbyBuZWVkIHRoZSB2ZWN0b3IgbWFzayBvcGVyYW5kLiAgKi8NCj4gKyAgICAgIGlm IChpc19jb25kX29wKQ0KPiArCSAgdmVjdF9nZXRfdmVjX2RlZnNfZm9yX29wZXJhbmQgKGxvb3Bf dmluZm8sIHN0bXRfaW5mbywgMSwNCj4gKwkJCQkJIG9wbWFzaywgJnZlY19vcG1hc2spOw0KPiAg ICAgIH0NCj4gDQo+IC0gIHRyZWUgc2NhbGFyX2Rlc3QgPSBnaW1wbGVfYXNzaWduX2xocyAoc2Nh bGFyX2Rlc3RfZGVmX2luZm8tPnN0bXQpOw0KPiArICBnaW1wbGUgKnNkZWYgPSBzY2FsYXJfZGVz dF9kZWZfaW5mby0+c3RtdDsgIHRyZWUgc2NhbGFyX2Rlc3QgPQ0KPiArIGdpbXBsZV9nZXRfbGhz IChzZGVmKTsNCj4gICAgdHJlZSBzY2FsYXJfdHlwZSA9IFRSRUVfVFlQRSAoc2NhbGFyX2Rlc3Qp Ow0KPiAgICB0cmVlIHJlZHVjX3ZhciA9IGdpbXBsZV9waGlfcmVzdWx0IChyZWR1Y19kZWZfc3Rt dCk7DQo+IA0KPiBAQCAtNjkzOSwxMyArNjk4OCwxNiBAQCB2ZWN0b3JpemVfZm9sZF9sZWZ0X3Jl ZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiAgICAgICAgdHJlZSBiaWFz ID0gTlVMTF9UUkVFOw0KPiAgICAgICAgaWYgKExPT1BfVklORk9fRlVMTFlfTUFTS0VEX1AgKGxv b3BfdmluZm8pKQ0KPiAgCW1hc2sgPSB2ZWN0X2dldF9sb29wX21hc2sgKGxvb3BfdmluZm8sIGdz aSwgbWFza3MsIHZlY19udW0sDQo+IHZlY3R5cGVfaW4sIGkpOw0KPiArICAgICAgZWxzZSBpZiAo aXNfY29uZF9vcCkNCj4gKwltYXNrID0gdmVjX29wbWFza1swXTsNCj4gICAgICAgIGlmIChMT09Q X1ZJTkZPX0ZVTExZX1dJVEhfTEVOR1RIX1AgKGxvb3BfdmluZm8pKQ0KPiAgCXsNCj4gIAkgIGxl biA9IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBnc2ksIGxlbnMsIHZlY19udW0sIHZl Y3R5cGVfaW4sDQo+ICAJCQkJICAgaSwgMSk7DQo+ICAJICBzaWduZWQgY2hhciBiaWFzdmFsID0g TE9PUF9WSU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUw0KPiAobG9vcF92aW5mbyk7DQo+ICAJ ICBiaWFzID0gYnVpbGRfaW50X2NzdCAoaW50UUlfdHlwZV9ub2RlLCBiaWFzdmFsKTsNCj4gLQkg IG1hc2sgPSBidWlsZF9taW51c19vbmVfY3N0ICh0cnV0aF90eXBlX2ZvciAodmVjdHlwZV9pbikp Ow0KPiArCSAgaWYgKCFpc19jb25kX29wKQ0KPiArCSAgICBtYXNrID0gYnVpbGRfbWludXNfb25l X2NzdCAodHJ1dGhfdHlwZV9mb3IgKHZlY3R5cGVfaW4pKTsNCj4gIAl9DQo+IA0KPiAgICAgICAg LyogSGFuZGxlIE1JTlVTIGJ5IGFkZGluZyB0aGUgbmVnYXRpdmUuICAqLyBAQCAtNjk1Nyw3ICs3 MDA5LDggQEANCj4gdmVjdG9yaXplX2ZvbGRfbGVmdF9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywNCj4gIAkgIGRlZjAgPSBuZWdhdGVkOw0KPiAgCX0NCj4gDQo+IC0gICAgICBp ZiAobWFzayAmJiBtYXNrX3JlZHVjX2ZuID09IElGTl9MQVNUKQ0KPiArICAgICAgaWYgKExPT1Bf VklORk9fRlVMTFlfTUFTS0VEX1AgKGxvb3BfdmluZm8pDQo+ICsJICAmJiBtYXNrICYmIG1hc2tf cmVkdWNfZm4gPT0gSUZOX0xBU1QpDQo+ICAJZGVmMCA9IG1lcmdlX3dpdGhfaWRlbnRpdHkgKGdz aSwgbWFzaywgdmVjdHlwZV9vdXQsIGRlZjAsDQo+ICAJCQkJICAgIHZlY3Rvcl9pZGVudGl0eSk7 DQo+IA0KPiBAQCAtNjk4OCw4ICs3MDQxLDggQEAgdmVjdG9yaXplX2ZvbGRfbGVmdF9yZWR1Y3Rp b24gKGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywNCj4gIAl9DQo+ICAgICAgICBlbHNlDQo+ ICAJew0KPiAtCSAgcmVkdWNfdmFyID0gdmVjdF9leHBhbmRfZm9sZF9sZWZ0IChnc2ksIHNjYWxh cl9kZXN0X3ZhciwgY29kZSwNCj4gLQkJCQkJICAgICByZWR1Y192YXIsIGRlZjApOw0KPiArCSAg cmVkdWNfdmFyID0gdmVjdF9leHBhbmRfZm9sZF9sZWZ0IChnc2ksIHNjYWxhcl9kZXN0X3ZhciwN Cj4gKwkJCQkJICAgICB0cmVlX2NvZGUgKGNvZGUpLCByZWR1Y192YXIsIGRlZjApOw0KPiAgCSAg bmV3X3N0bXQgPSBTU0FfTkFNRV9ERUZfU1RNVCAocmVkdWNfdmFyKTsNCj4gIAkgIC8qIFJlbW92 ZSB0aGUgc3RhdGVtZW50LCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlIHNhbWUgY29kZSBwYXRocw0K PiAgCSAgICAgYXMgZm9yIHN0YXRlbWVudHMgdGhhdCB3ZSd2ZSBqdXN0IGNyZWF0ZWQuICAqLyBA QCAtNzQ0MCw2DQo+ICs3NDkzLDExIEBAIHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24gKGxvb3BfdmVj X2luZm8gbG9vcF92aW5mbywNCj4gICAgICAgIGlmIChpID09IFNUTVRfVklORk9fUkVEVUNfSURY IChzdG10X2luZm8pKQ0KPiAgCWNvbnRpbnVlOw0KPiANCj4gKyAgICAgIC8qIEZvciBhbiBJRk5f Q09ORF9PUCB3ZSBtaWdodCBoaXQgdGhlIHJlZHVjdGlvbiBkZWZpbml0aW9uIG9wZXJhbmQNCj4g KwkgdHdpY2UgKG9uY2UgYXMgZGVmaW5pdGlvbiwgb25jZSBhcyBlbHNlKS4gICovDQo+ICsgICAg ICBpZiAob3Aub3BzW2ldID09IG9wLm9wc1tTVE1UX1ZJTkZPX1JFRFVDX0lEWCAoc3RtdF9pbmZv KV0pDQo+ICsJY29udGludWU7DQo+ICsNCj4gICAgICAgIC8qIFRoZXJlIHNob3VsZCBiZSBvbmx5 IG9uZSBjeWNsZSBkZWYgaW4gdGhlIHN0bXQsIHRoZSBvbmUNCj4gICAgICAgICAgIGxlYWRpbmcg dG8gcmVkdWNfZGVmLiAgKi8NCj4gICAgICAgIGlmIChWRUNUT1JJWkFCTEVfQ1lDTEVfREVGIChk dCkpDQo+IEBAIC03NjQwLDYgKzc2OTgsMTUgQEAgdmVjdG9yaXphYmxlX3JlZHVjdGlvbiAobG9v cF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiAgICAgICAgICAgIHdoZW4gZ2VuZXJhdGluZyB0 aGUgY29kZSBpbnNpZGUgdGhlIGxvb3AuICAqLw0KPiANCj4gICAgY29kZV9oZWxwZXIgb3JpZ19j b2RlID0gU1RNVF9WSU5GT19SRURVQ19DT0RFIChwaGlfaW5mbyk7DQo+ICsNCj4gKyAgLyogSWYg Y29udmVyc2lvbiBtaWdodCBoYXZlIGNyZWF0ZWQgYSBjb25kaXRpb25hbCBvcGVyYXRpb24gbGlr ZQ0KPiArICAgICBJRk5fQ09ORF9BREQgYWxyZWFkeS4gIFVzZSB0aGUgaW50ZXJuYWwgY29kZSBm b3IgdGhlIGZvbGxvd2luZw0KPiArIGNoZWNrcy4gICovICBpZiAob3JpZ19jb2RlLmlzX2ludGVy bmFsX2ZuICgpKQ0KPiArICAgIHsNCj4gKyAgICAgIHRyZWVfY29kZSBuZXdfY29kZSA9IGNvbmRp dGlvbmFsX2ludGVybmFsX2ZuX2NvZGUgKGludGVybmFsX2ZuDQo+IChvcmlnX2NvZGUpKTsNCj4g KyAgICAgIG9yaWdfY29kZSA9IG5ld19jb2RlICE9IEVSUk9SX01BUksgPyBuZXdfY29kZSA6IG9y aWdfY29kZTsNCj4gKyAgICB9DQo+ICsNCj4gICAgU1RNVF9WSU5GT19SRURVQ19DT0RFIChyZWR1 Y19pbmZvKSA9IG9yaWdfY29kZTsNCj4gDQo+ICAgIHZlY3RfcmVkdWN0aW9uX3R5cGUgcmVkdWN0 aW9uX3R5cGUgPSBTVE1UX1ZJTkZPX1JFRFVDX1RZUEUNCj4gKHJlZHVjX2luZm8pOyBAQCAtNzY3 OCw3ICs3NzQ1LDcgQEAgdmVjdG9yaXphYmxlX3JlZHVjdGlvbg0KPiAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLA0KPiAgCXsNCj4gIAkgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gIAkgICAg ZHVtcF9wcmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwgdmVjdF9sb2NhdGlvbiwN Cj4gLQkJCSAgICAicmVkdWN0aW9uOiBub3QgY29tbXV0YXRpdmUvYXNzb2NpYXRpdmUiKTsNCj4g KwkJCSAgICAicmVkdWN0aW9uOiBub3QgY29tbXV0YXRpdmUvYXNzb2NpYXRpdmVcbiIpOw0KPiAg CSAgcmV0dXJuIGZhbHNlOw0KPiAgCX0NCj4gICAgICB9DQo+IEBAIC04MjEzLDYgKzgyODAsNyBA QCB2ZWN0X3RyYW5zZm9ybV9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8NCj4gbG9vcF92aW5mbywN Cj4gDQo+ICAgIGNvZGVfaGVscGVyIGNvZGUgPSBjYW5vbmljYWxpemVfY29kZSAob3AuY29kZSwg b3AudHlwZSk7DQo+ICAgIGludGVybmFsX2ZuIGNvbmRfZm4gPSBnZXRfY29uZGl0aW9uYWxfaW50 ZXJuYWxfZm4gKGNvZGUsIG9wLnR5cGUpOw0KPiArDQo+ICAgIHZlY19sb29wX21hc2tzICptYXNr cyA9ICZMT09QX1ZJTkZPX01BU0tTIChsb29wX3ZpbmZvKTsNCj4gICAgdmVjX2xvb3BfbGVucyAq bGVucyA9ICZMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pOw0KPiAgICBib29sIG1hc2tfYnlf Y29uZF9leHByID0gdXNlX21hc2tfYnlfY29uZF9leHByX3AgKGNvZGUsIGNvbmRfZm4sDQo+IHZl Y3R5cGVfaW4pOyBAQCAtODIzMSwxNyArODI5OSwyOSBAQCB2ZWN0X3RyYW5zZm9ybV9yZWR1Y3Rp b24NCj4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gICAgaWYgKGNvZGUgPT0gQ09ORF9F WFBSKQ0KPiAgICAgIGdjY19hc3NlcnQgKG5jb3BpZXMgPT0gMSk7DQo+IA0KPiArICAvKiBBIGJp bmFyeSBDT05EX09QIHJlZHVjdGlvbiBtdXN0IGhhdmUgdGhlIHNhbWUgZGVmaW5pdGlvbiBhbmQg ZWxzZQ0KPiArICAgICB2YWx1ZS4gKi8NCj4gKyAgYm9vbCBjb25kX2ZuX3AgPSBjb2RlLmlzX2lu dGVybmFsX2ZuICgpDQo+ICsgICAgJiYgY29uZGl0aW9uYWxfaW50ZXJuYWxfZm5fY29kZSAoaW50 ZXJuYWxfZm4gKGNvZGUpKSAhPSBFUlJPUl9NQVJLOw0KPiArICBpZiAoY29uZF9mbl9wKQ0KPiAr ICAgIHsNCj4gKyAgICAgIGdjY19hc3NlcnQgKGNvZGUgPT0gSUZOX0NPTkRfQUREIHx8IGNvZGUg PT0gSUZOX0NPTkRfU1VCDQo+ICsJCSAgfHwgY29kZSA9PSBJRk5fQ09ORF9NVUwgfHwgY29kZSA9 PSBJRk5fQ09ORF9BTkQNCj4gKwkJICB8fCBjb2RlID09IElGTl9DT05EX0lPUiB8fCBjb2RlID09 IElGTl9DT05EX1hPUik7DQo+ICsgICAgICBnY2NfYXNzZXJ0IChvcC5udW1fb3BzID09IDQgJiYg KG9wLm9wc1sxXSA9PSBvcC5vcHNbM10pKTsNCj4gKyAgICB9DQo+ICsNCj4gICAgYm9vbCBtYXNr ZWRfbG9vcF9wID0gTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbyk7DQo+IA0K PiAgICB2ZWN0X3JlZHVjdGlvbl90eXBlIHJlZHVjdGlvbl90eXBlID0gU1RNVF9WSU5GT19SRURV Q19UWVBFDQo+IChyZWR1Y19pbmZvKTsNCj4gICAgaWYgKHJlZHVjdGlvbl90eXBlID09IEZPTERf TEVGVF9SRURVQ1RJT04pDQo+ICAgICAgew0KPiAgICAgICAgaW50ZXJuYWxfZm4gcmVkdWNfZm4g PSBTVE1UX1ZJTkZPX1JFRFVDX0ZOIChyZWR1Y19pbmZvKTsNCj4gLSAgICAgIGdjY19hc3NlcnQg KGNvZGUuaXNfdHJlZV9jb2RlICgpKTsNCj4gKyAgICAgIGdjY19hc3NlcnQgKGNvZGUuaXNfdHJl ZV9jb2RlICgpIHx8IGNvbmRfZm5fcCk7DQo+ICAgICAgICByZXR1cm4gdmVjdG9yaXplX2ZvbGRf bGVmdF9yZWR1Y3Rpb24NCj4gIAkgIChsb29wX3ZpbmZvLCBzdG10X2luZm8sIGdzaSwgdmVjX3N0 bXQsIHNscF9ub2RlLCByZWR1Y19kZWZfcGhpLA0KPiAtCSAgIHRyZWVfY29kZSAoY29kZSksIHJl ZHVjX2ZuLCBvcC5vcHMsIHZlY3R5cGVfaW4sIHJlZHVjX2luZGV4LCBtYXNrcywNCj4gLQkgICBs ZW5zKTsNCj4gKwkgICBjb2RlLCByZWR1Y19mbiwgb3Aub3BzLCBvcC5udW1fb3BzLCB2ZWN0eXBl X2luLA0KPiArCSAgIHJlZHVjX2luZGV4LCBtYXNrcywgbGVucyk7DQo+ICAgICAgfQ0KPiANCj4g ICAgYm9vbCBzaW5nbGVfZGVmdXNlX2N5Y2xlID0gU1RNVF9WSU5GT19GT1JDRV9TSU5HTEVfQ1lD TEUNCj4gKHJlZHVjX2luZm8pOyBAQCAtODI1NCwxNCArODMzNCwyMCBAQCB2ZWN0X3RyYW5zZm9y bV9yZWR1Y3Rpb24NCj4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gICAgdHJlZSBzY2Fs YXJfZGVzdCA9IGdpbXBsZV9nZXRfbGhzIChzdG10X2luZm8tPnN0bXQpOw0KPiAgICB0cmVlIHZl Y19kZXN0ID0gdmVjdF9jcmVhdGVfZGVzdGluYXRpb25fdmFyIChzY2FsYXJfZGVzdCwgdmVjdHlw ZV9vdXQpOw0KPiANCj4gKyAgLyogR2V0IE5DT1BJRVMgdmVjdG9yIGRlZmluaXRpb25zIGZvciBh bGwgb3BlcmFuZHMgZXhjZXB0IHRoZSByZWR1Y3Rpb24NCj4gKyAgICAgZGVmaW5pdGlvbi4gICov DQo+ICAgIHZlY3RfZ2V0X3ZlY19kZWZzIChsb29wX3ZpbmZvLCBzdG10X2luZm8sIHNscF9ub2Rl LCBuY29waWVzLA0KPiAgCQkgICAgIHNpbmdsZV9kZWZ1c2VfY3ljbGUgJiYgcmVkdWNfaW5kZXgg PT0gMA0KPiAgCQkgICAgID8gTlVMTF9UUkVFIDogb3Aub3BzWzBdLCAmdmVjX29wcm5kczAsDQo+ ICAJCSAgICAgc2luZ2xlX2RlZnVzZV9jeWNsZSAmJiByZWR1Y19pbmRleCA9PSAxDQo+ICAJCSAg ICAgPyBOVUxMX1RSRUUgOiBvcC5vcHNbMV0sICZ2ZWNfb3BybmRzMSwNCj4gLQkJICAgICBvcC5u dW1fb3BzID09IDMNCj4gLQkJICAgICAmJiAhKHNpbmdsZV9kZWZ1c2VfY3ljbGUgJiYgcmVkdWNf aW5kZXggPT0gMikNCj4gKwkJICAgICBvcC5udW1fb3BzID09IDQNCj4gKwkJICAgICB8fCAob3Au bnVtX29wcyA9PSAzDQo+ICsJCQkgJiYgIShzaW5nbGVfZGVmdXNlX2N5Y2xlICYmIHJlZHVjX2lu ZGV4ID09IDIpKQ0KPiAgCQkgICAgID8gb3Aub3BzWzJdIDogTlVMTF9UUkVFLCAmdmVjX29wcm5k czIpOw0KPiArDQo+ICsgIC8qIEZvciBzaW5nbGUgZGVmLXVzZSBjeWNsZXMgZ2V0IG9uZSBjb3B5 IG9mIHRoZSB2ZWN0b3JpemVkIHJlZHVjdGlvbg0KPiArICAgICBkZWZpbml0aW9uLiAgKi8NCj4g ICAgaWYgKHNpbmdsZV9kZWZ1c2VfY3ljbGUpDQo+ICAgICAgew0KPiAgICAgICAgZ2NjX2Fzc2Vy dCAoIXNscF9ub2RlKTsNCj4gQEAgLTgzMDEsNyArODM4Nyw3IEBAIHZlY3RfdHJhbnNmb3JtX3Jl ZHVjdGlvbiAobG9vcF92ZWNfaW5mbw0KPiBsb29wX3ZpbmZvLA0KPiAgCX0NCj4gICAgICAgIGVs c2UNCj4gIAl7DQo+IC0JICBpZiAob3AubnVtX29wcyA9PSAzKQ0KPiArCSAgaWYgKG9wLm51bV9v cHMgPj0gMykNCj4gIAkgICAgdm9wWzJdID0gdmVjX29wcm5kczJbaV07DQo+IA0KPiAgCSAgaWYg KG1hc2tlZF9sb29wX3AgJiYgbWFza19ieV9jb25kX2V4cHIpIEBAIC04MzE0LDEwDQo+ICs4NDAw LDE2IEBAIHZlY3RfdHJhbnNmb3JtX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZv LA0KPiAgCSAgaWYgKGVtdWxhdGVkX21peGVkX2RvdF9wcm9kKQ0KPiAgCSAgICBuZXdfc3RtdCA9 IHZlY3RfZW11bGF0ZV9taXhlZF9kb3RfcHJvZCAobG9vcF92aW5mbywgc3RtdF9pbmZvLA0KPiBn c2ksDQo+ICAJCQkJCQkgICAgdmVjX2Rlc3QsIHZvcCk7DQo+IC0JICBlbHNlIGlmIChjb2RlLmlz X2ludGVybmFsX2ZuICgpKQ0KPiArDQo+ICsJICBlbHNlIGlmIChjb2RlLmlzX2ludGVybmFsX2Zu ICgpICYmICFjb25kX2ZuX3ApDQo+ICAJICAgIG5ld19zdG10ID0gZ2ltcGxlX2J1aWxkX2NhbGxf aW50ZXJuYWwgKGludGVybmFsX2ZuIChjb2RlKSwNCj4gIAkJCQkJCSAgIG9wLm51bV9vcHMsDQo+ ICAJCQkJCQkgICB2b3BbMF0sIHZvcFsxXSwgdm9wWzJdKTsNCj4gKwkgIGVsc2UgaWYgKGNvZGUu aXNfaW50ZXJuYWxfZm4gKCkgJiYgY29uZF9mbl9wKQ0KPiArCSAgICBuZXdfc3RtdCA9IGdpbXBs ZV9idWlsZF9jYWxsX2ludGVybmFsIChpbnRlcm5hbF9mbiAoY29kZSksDQo+ICsJCQkJCQkgICBv cC5udW1fb3BzLA0KPiArCQkJCQkJICAgdm9wWzBdLCB2b3BbMV0sIHZvcFsyXSwNCj4gKwkJCQkJ CSAgIHZvcFsxXSk7DQo+ICAJICBlbHNlDQo+ICAJICAgIG5ld19zdG10ID0gZ2ltcGxlX2J1aWxk X2Fzc2lnbiAodmVjX2Rlc3QsIHRyZWVfY29kZSAob3AuY29kZSksDQo+ICAJCQkJCSAgICB2b3Bb MF0sIHZvcFsxXSwgdm9wWzJdKTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIu aCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBpbmRleA0KPiBmMWQwY2Q3OTk2MS4uZTIyMDY3NDAw YWYgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiArKysgYi9nY2MvdHJl ZS12ZWN0b3JpemVyLmgNCj4gQEAgLTIzMTksNyArMjMxOSw3IEBAIGV4dGVybiB0cmVlIHZlY3Rf Y3JlYXRlX2FkZHJfYmFzZV9mb3JfdmVjdG9yX3JlZg0KPiAodmVjX2luZm8gKiwNCj4gIAkJCQkJ CSAgdHJlZSk7DQo+IA0KPiAgLyogSW4gdHJlZS12ZWN0LWxvb3AuY2MuICAqLw0KPiAtZXh0ZXJu IHRyZWUgbmV1dHJhbF9vcF9mb3JfcmVkdWN0aW9uICh0cmVlLCBjb2RlX2hlbHBlciwgdHJlZSk7 DQo+ICtleHRlcm4gdHJlZSBuZXV0cmFsX29wX2Zvcl9yZWR1Y3Rpb24gKHRyZWUsIGNvZGVfaGVs cGVyLCB0cmVlLCBib29sID0NCj4gK3RydWUpOw0KPiAgZXh0ZXJuIHdpZGVzdF9pbnQgdmVjdF9p dl9saW1pdF9mb3JfcGFydGlhbF92ZWN0b3JzIChsb29wX3ZlY19pbmZvDQo+IGxvb3BfdmluZm8p OyAgYm9vbCB2ZWN0X3Jncm91cF9pdl9taWdodF93cmFwX3AgKGxvb3BfdmVjX2luZm8sDQo+IHJn cm91cF9jb250cm9scyAqKTsNCj4gIC8qIFVzZWQgaW4gdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2Mg Ki8NCj4gLS0NCj4gMi40MS4wDQoNCg==