From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2059.outbound.protection.outlook.com [40.107.20.59]) by sourceware.org (Postfix) with ESMTPS id 814483857356 for ; Fri, 23 Sep 2022 13:27:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 814483857356 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=ODa/fhXId1+WMWl8XPSovTvjPiVsvuDaHspspvrpvVTLXvL33mvbe/MwCExAUKrttjADosO1LbZGe+kWOwmw1bFII3BK7D7UqfiETXghjiQpP1E50kHK2/IJKjidxntaw+0wd0QIBhLB1IoOd1hRrk/6WeEDoBM8gdgR/EQuereGO0RVxbY3MRwmtk/w26kUP+xWmSYsxrNf4DlNg5WpBZ0LW+jaBKGL5U1w4btGeu6Oc7Y6mc+IVhV6LButlOLSh0flW9X7ra942kYqLpLqwApNLZ6u3vQDDYeUJ6lWMEQ1qdDp/8jFycZy9HXONKpecqS5BbFsIUw+1Md7ll8v0A== ARC-Message-Signature: i=2; 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=rBOdtsyQkYTG9TDERidl4ZEfjH0oyOsx8DStsfXpGgw=; b=g/3IBTDlxQ7HdAnp2WZik1n+EvA/fsZeIvpFz55YvlRdJgFqsYxPo6brjOdts7ar66U1W+dUEohzvj2p44HwdyuQ5gUUFxgiusqKm7VdLDGiJcPVGItguc5Cniv1MB2Ti/XV0uIVb38ywVP8pOLKrvz1fNH42CUw56nhRifCRTb92miI30sW0o5I9EMEoCTYqv/S2OBzI/+qVphPjqQbVvyNz1Kgl0UhI3b/6JaLqaIT1w/nqeekADrU+eZ9rxhC4io5sGoqNVP0q/cIRjiN+BwbU4koLf3QC3d8jxpJ3R55BXSIzM/6f3gljejbqy6M6z7PHL1pIIrUEXSD645fXA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=rBOdtsyQkYTG9TDERidl4ZEfjH0oyOsx8DStsfXpGgw=; b=edJ5g67zAB7vVe3+MboWaPRedaheRjfHEnebZLJC1RepGyzMjxpMMXCOdGEDQskgkAm7kaY4W3S1WacQ1gRuoz5xjJAQ5BOQynZxRt+bET5ER03EwAjThTyDXzOvlkavNa61Kb+x3vo4f4xOL6u+RugP27JKoZmrDTvxfSOuTBU= Received: from DU2PR04CA0347.eurprd04.prod.outlook.com (2603:10a6:10:2b4::27) by AS8PR08MB5877.eurprd08.prod.outlook.com (2603:10a6:20b:291::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 13:27:20 +0000 Received: from DBAEUR03FT054.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b4:cafe::8a) by DU2PR04CA0347.outlook.office365.com (2603:10a6:10:2b4::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.19 via Frontend Transport; Fri, 23 Sep 2022 13:27:20 +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 DBAEUR03FT054.mail.protection.outlook.com (100.127.142.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14 via Frontend Transport; Fri, 23 Sep 2022 13:27:19 +0000 Received: ("Tessian outbound e2c58cd9a6bb:v124"); Fri, 23 Sep 2022 13:27:19 +0000 X-CR-MTA-TID: 64aa7808 Received: from 00121f45a59f.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C9EC7556-E180-4C68-AB1F-996CF431D1A1.1; Fri, 23 Sep 2022 13:27:13 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 00121f45a59f.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 23 Sep 2022 13:27:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UxLUR0qk2shehFVat32YjlQeUUwCtBOEnSzuto89Ax0AaSejlt6ecLb9VkAXPpyUVP84+6VmEi/xPu2iJ4XQAnxS0RBUekWXhAu1uuUISGfK94apkFau2P1PZtvbQ9VQinb2Nuyx7WoH0gbZ0FEvCWqf7On4ht0gepb8rIYPd0JXGj8I9g/Gkuinc0JD7Fq1WzydkvyDGypxLrSiVtGGKLfsCnuRoi8qNyR4tNz1zn8/9jturCLWjCWBJF71ScxeIYSpyRsGwT9ph1uZFgkN4jLIhVz00jDoYrF4pGmjrUyfp8bJLaBO2tKQe9Qo8Pzi/u0FKGWV3Sh0uifXlYC75Q== 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=rBOdtsyQkYTG9TDERidl4ZEfjH0oyOsx8DStsfXpGgw=; b=X6ogvSAtL1l0RTB6sNvOfV8RosJokTFPmWdbQjPbmDgSkLBC4IS1p19THjnpUllMlvCi7ZcAxvm7a+QVpnP28LIlFp0ipnU5eVSH0N4S379b2+MpXKKzemhSTXInKAgt/Qmb/eV7g8sPuClxOComJ3b5YBotuGw03x4zBM6hpCIz0X0AZaeRhsZ9KNqQQVMfjcUvFPyc21wLaGHK5IRhLAQW1grABWscg+d27wvTy932vekt3pbVUnqdTRxGYeDTjXB01raJ0fUtmrmzdUZrpzQ/XUuF7SDYPidc5O7SSzt1LQ+dn8tf6wSKaq0j7huoMUIpZrExlNkoP5GNSWPtvQ== 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=rBOdtsyQkYTG9TDERidl4ZEfjH0oyOsx8DStsfXpGgw=; b=edJ5g67zAB7vVe3+MboWaPRedaheRjfHEnebZLJC1RepGyzMjxpMMXCOdGEDQskgkAm7kaY4W3S1WacQ1gRuoz5xjJAQ5BOQynZxRt+bET5ER03EwAjThTyDXzOvlkavNa61Kb+x3vo4f4xOL6u+RugP27JKoZmrDTvxfSOuTBU= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AS4PR08MB8069.eurprd08.prod.outlook.com (2603:10a6:20b:588::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14; Fri, 23 Sep 2022 13:27:03 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::6529:66e5:e7d4:1a40%4]) with mapi id 15.20.5632.021; Fri, 23 Sep 2022 13:27:03 +0000 From: Tamar Christina To: Richard Biener CC: Andrew Pinski , nd , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH]middle-end simplify complex if expressions where comparisons are inverse of one another. Thread-Topic: [PATCH]middle-end simplify complex if expressions where comparisons are inverse of one another. Thread-Index: AQHYgYV05EjYER2K3U6QUesqLBCP9q1YBFAAgBf6HbCAALlnAIAA4k0AgABCX4CAAMr7gIAByk8AgHjkW2CAAEKBAIAAAjww Date: Fri, 23 Sep 2022 13:27:03 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 44BDF9C7E094AC4B9BD7E4A7D01D74DA.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AS4PR08MB8069:EE_|DBAEUR03FT054:EE_|AS8PR08MB5877:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f18cf48-1bc3-490a-dab2-08da9d67573b 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: XMQC4EYFowfUq81xT1VqE7zfgTnhPHfad+zNg5dekaaTjtn7N+tSAt1bwF/WygxaGNLIHnvoTPXuLgczYYDOm7u5uFzZXHsMcgP4ekGQV1XdXoMlrmDEez5H1XZUvJT9Q6r1aRQ4L3sfJ4NgB+nHTogi/OeuFrvrhMT1644+jzgW0XEL4vOqlFv9yTAE5L4igkdWz/Ae4dSAT71QyxDlCC+9v87oDFjuzbXs3sARSp/GAXP7f3PsPX1HhsktjDJRqp60PhI4j4KjOpQsICL8pygNJlSgyj8ZoF/6SzXLPqS4qAjeSUrSBIhig3reWl7yW3t6gmplm0+l9CDF6BTOvxTt2fs/ouNbkKrfQI9ZevrudkSeggiEGu8p8Y/l9+Lu0SS74E18ShAnJtvozgznGt3hRl/bXYQnoS4T74VfiNeBLCQjeKKGRohXmbQwfTUYVNSSWhhimxDwuen7QQnmHgVykfazv0xr9AP5leRBv/EyCKrPfeujMnA6OZs5yL2d4mHRJXlzqSQYN368bsQNn6PzqzQzAwgdKCyjS/v1DS1ajq+6ZnUavHEeEFnn3keVZL5LAXqPcCbLBBpPlQjIxJQk/UQ/osbZNugPg/FyYI7MJBSXtm1yXMzz3S8Iv7y2SApi4aaiZoL21pGc/XMoIwdN3MNUe/KWEda960RjLW7O4F6hAm/pdOEIo6R6JfiIIbxKAs+BYN/UD6CMK8RiUSwyo/ZmlMzl7NqUSjypAldwdeGhMp/OhLbDBj7wSUJMnUMcO6z2JpNgKFN8I+Wn0rL/j/Ynv7LFVx5g76ZMw0woTYj7qpr6qsE2ALE9EVwY8LX8N8HuFkp2U2BVTOFzPg== 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:(13230022)(4636009)(396003)(366004)(346002)(376002)(39860400002)(136003)(451199015)(4326008)(478600001)(26005)(53546011)(71200400001)(55016003)(8936002)(9686003)(5660300002)(7696005)(6506007)(6916009)(54906003)(41300700001)(186003)(38070700005)(76116006)(84970400001)(33656002)(2906002)(38100700002)(52536014)(66446008)(64756008)(66476007)(66946007)(83380400001)(86362001)(66556008)(316002)(122000001)(8676002)(30864003);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8069 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: DBAEUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7b104813-4562-4d76-37ec-08da9d674daa X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Wz1xGKX2zHoPCyaVnmGsvVTuMmDcqeyXp0jmqHDX1V1LgrmGTQb76i9JaD+rMJUgLrvhBh096VG/Dw9XhQx88IUH2CwM5Jlfn5tOVtcWOlTeVZ7c6gOWKeB1cugbFOaY7Iu5GQkxLWX3FZjKu47bdJzZ9QjvSEzGEL54xQQandH8OCAFH5Rkp5WFXc9sG2Ddy+wCus4Ot+Z96KmiLs5OPYn3oyAF7tsptifLVBnRwuiULMmw73chixrMq3nM0BbG+VCaL8x+RQyenaB2jd+1vldiK2hv73rI5VvDRMTu4m3P9WFUAX3Lip2PYxcef+Vs6x/yzr737K3GqEaIfazLM+bZ/eTlMia/4enHTYBW5VlkplgQ87wg0I/fNEmPTYon2/8xMGVTcgN8zGYJg6ipetNrzrhUYC+QU4AF9CTAC25nuguQRRSxqu0c4JbNhvLiSbAn+eA45e6pgs5WWI0jFVm84JCKVWIqO3eluKEGNGq3fG+2WIkOwk84sq7WEgMYsDXg1hmmtA39q6t1FW0H8TfbLLzcyTa6tT7urD3XWMcZ6CM/s+MHepLgY9bvgKNeGQW209axDb/fIqKxDsy5C/vHCncb4vWGE0d1orHaQeVqmODmqIe/BryYSOtC7QQ5XkY0xXKx2qWQBrxDyDEKa9/MNbHIkivEcKQHWosyllLPNrKCesOtjTt14U5z5zuhoRcubdEyehfMqVuG/V+q51rhS36hSqeMVrmTd0c5s/G9j4vXa6fzfaBzMZZT1DHwcBeo3gVopI3L48lQpOYrOpRoWF5pByUfw7GTY3q/JxuxKWrGCNTMsebg/8p+ugmiagAtxWBR12bF2J1plbDjpQ== 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:(13230022)(4636009)(376002)(346002)(396003)(136003)(39860400002)(451199015)(36840700001)(46966006)(40470700004)(55016003)(336012)(84970400001)(5660300002)(53546011)(186003)(33656002)(6862004)(52536014)(83380400001)(70586007)(8936002)(36860700001)(478600001)(81166007)(41300700001)(47076005)(82740400003)(86362001)(2906002)(316002)(6506007)(40460700003)(8676002)(4326008)(356005)(7696005)(40480700001)(30864003)(26005)(82310400005)(70206006)(54906003)(9686003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2022 13:27:19.7079 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f18cf48-1bc3-490a-dab2-08da9d67573b 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: DBAEUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB5877 X-Spam-Status: No, score=-12.7 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: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1 ZW50aGVyQHN1c2UuZGU+DQo+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDIzLCAyMDIyIDk6MTAg QU0NCj4gVG86IFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5hQGFybS5jb20+DQo+IENj OiBBbmRyZXcgUGluc2tpIDxwaW5za2lhQGdtYWlsLmNvbT47IG5kIDxuZEBhcm0uY29tPjsgZ2Nj LQ0KPiBwYXRjaGVzQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0hdbWlkZGxlLWVu ZCBzaW1wbGlmeSBjb21wbGV4IGlmIGV4cHJlc3Npb25zIHdoZXJlDQo+IGNvbXBhcmlzb25zIGFy ZSBpbnZlcnNlIG9mIG9uZSBhbm90aGVyLg0KPiANCj4gT24gRnJpLCAyMyBTZXAgMjAyMiwgVGFt YXIgQ2hyaXN0aW5hIHdyb3RlOg0KPiANCj4gPiBIZWxsbywNCj4gPg0KPiA+ID4gd2hlcmUgbG9n aWNhbF9pbnZlcnRlZCBpcyBzb21ld2hhdCBjb250cmFkaWN0aW5nIHVzaW5nDQo+ID4gPiB6ZXJv X29uZV92YWx1ZWQgaW5zdGVhZCBvZiB0cnV0aF92YWx1ZWRfcCAoSSB0aGluayB0aGUgZm9ybWVy IG1pZ2h0DQo+ID4gPiBub3Qgd29yayBmb3IgdmVjdG9yIGJvb2xlYW5zPykuDQo+ID4gPg0KPiA+ ID4gSW4gdGhlIGVuZCBJJ2QgcHJlZmVyIHplcm9fb25lX3ZhbHVlZF9wIGJ1dCBhdm9pZGluZw0K PiA+ID4gaW52ZXJzZV9jb25kaXRpb25zX3Agd291bGQgYmUgbmljZS4NCj4gPiA+DQo+ID4gPiBS aWNoYXJkLg0KPiA+DQo+ID4gSXQncyBub3QgcHJldHR5IGJ1dCBJJ3ZlIG1hZGUgaXQgd29yayBh bmQgYWRkZWQgbW9yZSB0ZXN0cy4NCj4gPg0KPiA+IEJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQgb24g YWFyY2g2NC1ub25lLWxpbnV4LWdudSwgeDg2XzY0LXBjLWxpbnV4LWdudQ0KPiA+IGFuZCBubyBp c3N1ZXMuDQo+ID4NCj4gPiBPayBmb3IgbWFzdGVyPw0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IFRh bWFyDQo+ID4NCj4gPiBnY2MvQ2hhbmdlTG9nOg0KPiA+DQo+ID4gCSogbWF0Y2gucGQ6IEFkZCBu ZXcgcnVsZS4NCj4gPg0KPiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+DQo+ID4gCSog Z2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jOiBOZXcgdGVzdC4NCj4gPiAJKiBnY2Mu dGFyZ2V0L2FhcmNoNjQvaWYtY29tcGFyZV8yLmM6IE5ldyB0ZXN0Lg0KPiA+DQo+ID4gLS0tIGlu bGluZSBjb3B5IG9mIHBhdGNoIC0tLQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5w ZCBiL2djYy9tYXRjaC5wZCBpbmRleA0KPiA+DQo+IGI2MWVkNzBlNjliODgxYTQ5MTc3ZjEwZjIw YzFmOTI3MTJiYjg2NjUuLjM5ZGE2MWJmMTE3YTZlYjI5MjRmYzhhNjQ3DQo+IDNmDQo+ID4gYjM3 ZGRhZGQ2MGU5IDEwMDY0NA0KPiA+IC0tLSBhL2djYy9tYXRjaC5wZA0KPiA+ICsrKyBiL2djYy9t YXRjaC5wZA0KPiA+IEBAIC0xOTAzLDYgKzE5MDMsMTAxIEBAIERFRklORV9JTlRfQU5EX0ZMT0FU X1JPVU5EX0ZOIChSSU5UKQ0KPiA+ICAgKGlmIChJTlRFR1JBTF9UWVBFX1AgKHR5cGUpKQ0KPiA+ ICAgIChiaXRfYW5kIEAwIEAxKSkpDQo+ID4NCj4gPiArKGZvciBjbXAgKHRjY19jb21wYXJpc29u KQ0KPiA+ICsgICAgIGljbXAgKGludmVydGVkX3RjY19jb21wYXJpc29uKQ0KPiA+ICsgLyogRm9s ZCAoKChhIDwgYikgJiBjKSB8ICgoYSA+PSBiKSAmIGQpKSBpbnRvIChhIDwgYiA/IGMgOiBkKSAm IDEuDQo+ID4gKyovICAoc2ltcGxpZnkNCj4gPiArICAoYml0X2lvcg0KPiA+ICsgICAoYml0X2Fu ZDpjIChjb252ZXJ0PyB6ZXJvX29uZV92YWx1ZWRfcEAwKSBAMikNCj4gPiArICAgKGJpdF9hbmQ6 YyAoY29udmVydD8gemVyb19vbmVfdmFsdWVkX3BAMSkgQDMpKQ0KPiA+ICsgICAgKHdpdGggew0K PiA+ICsgICAgICBlbnVtIHRyZWVfY29kZSBjMQ0KPiA+ICsJPSAoVFJFRV9DT0RFIChAMCkgPT0g U1NBX05BTUUNCj4gPiArCSAgID8gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoU1NBX05BTUVfREVG X1NUTVQgKEAwKSkgOg0KPiBUUkVFX0NPREUNCj4gPiArKEAwKSk7DQo+ID4gKw0KPiA+ICsgICAg ICBlbnVtIHRyZWVfY29kZSBjMg0KPiA+ICsJPSAoVFJFRV9DT0RFIChAMSkgPT0gU1NBX05BTUUN Cj4gPiArCSAgID8gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoU1NBX05BTUVfREVGX1NUTVQgKEAx KSkgOg0KPiBUUkVFX0NPREUgKEAxKSk7DQo+ID4gKyAgICAgfQ0KPiA+ICsgICAgKGlmIChJTlRF R1JBTF9UWVBFX1AgKHR5cGUpDQo+ID4gKwkgJiYgYzEgPT0gY21wDQo+ID4gKwkgJiYgYzIgPT0g aWNtcA0KPiANCj4gU28gdGhhdCBkb2Vzbid0IGhhdmUgYW55IGFkdmFudGFnZSBvdmVyIGRvaW5n DQo+IA0KPiAgKHNpbXBsaWZ5DQo+ICAgKGJpdF9pb3INCj4gICAgKGJpdF9hbmQ6YyAoY29udmVy dD8gKGNtcEAwIEAwMSBAMDIpKSBAMikNCj4gICAgKGJpdF9hbmQ6YyAoY29udmVydD8gKGljbXBA MSBAMTEgQDEyKSkgQDMpKSAuLi4NCj4gDQo+IEkgZG9uJ3QgcmVtZW1iZXIgaWYgdGhhdCdzIHdo YXQgd2UgaGFkIGJlZm9yZS4NCg0KTm8sIHRoZSBzcGVjaWZpYyBwcm9ibGVtIGhhcyBhbHdheXMg YmVlbiBhcHBseWluZyB6ZXJvX29uZV92YWx1ZWRfcCB0byB0aGUgcmlnaHQgdHlwZS4NCkJlZm9y ZSBpdCB3YXMgbXVjaCBzaG9ydGVyIGJlY2F1c2UgSSB3YXMgdXNpbmcgdGhlIHRyZWUgIGhlbHBl ciBmdW5jdGlvbiB0byBnZXQgdGhlIGludmVyc2VzLg0KDQpCdXQgd2l0aCB5b3VyIHN1Z2dlc3Rp b24gSSB0aGluayBJIGNhbiBkbyB6ZXJvX29uZV92YWx1ZWRfcCBvbiBAMCBhbmQgQDEgaW5zdGVh ZC4uDQoNCj4gDQo+ID4gKwkgLyogVGhlIHNjYWxhciB2ZXJzaW9uIGhhcyB0byBiZSBjYW5vbmlj YWxpemVkIGFmdGVyIHZlY3Rvcml6YXRpb24NCj4gPiArCSAgICBiZWNhdXNlIGl0IG1ha2VzIHVu Y29uZGl0aW9uYWwgbG9hZHMgY29uZGl0aW9uYWwgb25lcywgd2hpY2gNCj4gPiArCSAgICBtZWFu cyB3ZSBsb3NlIHZlY3Rvcml6YXRpb24gYmVjYXVzZSB0aGUgbG9hZHMgbWF5IHRyYXAuICAqLw0K PiA+ICsJICYmIGNhbm9uaWNhbGl6ZV9tYXRoX2FmdGVyX3ZlY3Rvcml6YXRpb25fcCAoKSkNCj4g PiArICAgICAoYml0X2FuZCAoY29uZCBAMCBAMiBAMykgeyBidWlsZF9vbmVfY3N0ICh0eXBlKTsg fSkpKSkNCj4gPiArDQo+ID4gKyAvKiBGb2xkICgoLShhIDwgYikgJiBjKSB8ICgtKGEgPj0gYikg JiBkKSkgaW50byBhIDwgYiA/IGMgOiBkLiAgKi8NCj4gDQo+IFRoZSBjb21tZW50IGRvZXNuJ3Qg bWF0Y2ggdGhlIHBhdHRlcm4gYmVsb3c/DQoNClRoZSBwYXR0ZXJuIGluIHRoZSBjb21tZW50IGdl dHMgcmV3cml0dGVuIHRvIHRoaXMgZm9ybSBldmVudHVhbGx5LA0Kc28gSSBtYXRjaCBpdCBpbnN0 ZWFkLiAgSSBjYW4gdXBkYXRlIHRoZSBjb21tZW50IGJ1dCBJIHRob3VnaHQgdGhlIGFib3ZlDQpt YWRlIGl0IG1vcmUgY2xlYXIgd2h5IHRoZXNlIGJlbG9uZyB0b2dldGhlciDwn5iKDQoNCj4gDQo+ ID4gKyAoc2ltcGxpZnkNCj4gPiArICAoYml0X2lvcg0KPiA+ICsgICAoY29uZCB6ZXJvX29uZV92 YWx1ZWRfcEAwIEAyIHplcm9wKQ0KPiA+ICsgICAoY29uZCB6ZXJvX29uZV92YWx1ZWRfcEAxIEAz IHplcm9wKSkNCj4gPiArICAgICh3aXRoIHsNCj4gPiArICAgICAgZW51bSB0cmVlX2NvZGUgYzEN Cj4gPiArCT0gKFRSRUVfQ09ERSAoQDApID09IFNTQV9OQU1FDQo+ID4gKwkgICA/IGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKFNTQV9OQU1FX0RFRl9TVE1UIChAMCkpIDoNCj4gVFJFRV9DT0RFDQo+ ID4gKyhAMCkpOw0KPiA+ICsNCj4gPiArICAgICAgZW51bSB0cmVlX2NvZGUgYzINCj4gPiArCT0g KFRSRUVfQ09ERSAoQDEpID09IFNTQV9OQU1FDQo+ID4gKwkgICA/IGdpbXBsZV9hc3NpZ25fcmhz X2NvZGUgKFNTQV9OQU1FX0RFRl9TVE1UIChAMSkpIDoNCj4gVFJFRV9DT0RFIChAMSkpOw0KPiA+ ICsgICAgIH0NCj4gPiArICAgIChpZiAoSU5URUdSQUxfVFlQRV9QICh0eXBlKQ0KPiA+ICsJICYm IGMxID09IGNtcA0KPiA+ICsJICYmIGMyID09IGljbXANCj4gPiArCSAvKiBUaGUgc2NhbGFyIHZl cnNpb24gaGFzIHRvIGJlIGNhbm9uaWNhbGl6ZWQgYWZ0ZXIgdmVjdG9yaXphdGlvbg0KPiA+ICsJ ICAgIGJlY2F1c2UgaXQgbWFrZXMgdW5jb25kaXRpb25hbCBsb2FkcyBjb25kaXRpb25hbCBvbmVz LCB3aGljaA0KPiA+ICsJICAgIG1lYW5zIHdlIGxvc2UgdmVjdG9yaXphdGlvbiBiZWNhdXNlIHRo ZSBsb2FkcyBtYXkgdHJhcC4gICovDQo+ID4gKwkgJiYgY2Fub25pY2FsaXplX21hdGhfYWZ0ZXJf dmVjdG9yaXphdGlvbl9wICgpKQ0KPiA+ICsgICAgKGNvbmQgQDAgQDIgQDMpKSkpDQo+ID4gKw0K PiA+ICsgLyogVmVjdG9yIEZvbGQgKCgoYSA8IGIpICYgYykgfCAoKGEgPj0gYikgJiBkKSkgaW50 byBhIDwgYiA/IGMgOiBkLg0KPiA+ICsgICAgYW5kICgofihhIDwgYikgJiBjKSB8ICh+KGEgPj0g YikgJiBkKSkgaW50byBhIDwgYiA/IGMgOiBkLiAgKi8NCj4gPiArKHNpbXBsaWZ5DQo+ID4gKyAg KGJpdF9pb3INCj4gPiArICAgKGJpdF9hbmQ6YyAodmVjX2NvbmQ6cyBAMCBANCBANSkgQDIpDQo+ ID4gKyAgIChiaXRfYW5kOmMgKHZlY19jb25kOnMgQDEgQDQgQDUpIEAzKSkNCj4gPiArICAgICh3 aXRoIHsNCj4gPiArICAgICAgZW51bSB0cmVlX2NvZGUgYzENCj4gPiArCT0gKFRSRUVfQ09ERSAo QDApID09IFNTQV9OQU1FDQo+ID4gKwkgICA/IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKFNTQV9O QU1FX0RFRl9TVE1UIChAMCkpIDoNCj4gVFJFRV9DT0RFDQo+ID4gKyhAMCkpOw0KPiA+ICsNCj4g PiArICAgICAgZW51bSB0cmVlX2NvZGUgYzINCj4gPiArCT0gKFRSRUVfQ09ERSAoQDEpID09IFNT QV9OQU1FDQo+ID4gKwkgICA/IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKFNTQV9OQU1FX0RFRl9T VE1UIChAMSkpIDoNCj4gVFJFRV9DT0RFIChAMSkpOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICAo aWYgKGMxID09IGNtcCAmJiBjMiA9PSBpY21wKQ0KPiA+ICsgICAgICAoaWYgKGludGVnZXJfemVy b3AgKEA1KSkNCj4gPiArICAgICAgIChzd2l0Y2gNCj4gPiArCShpZiAoaW50ZWdlcl9vbmVwIChA NCkpDQo+ID4gKwkgKGJpdF9hbmQgKHZlY19jb25kIEAwIEAyIEAzKSBANCkpDQo+ID4gKwkoaWYg KGludGVnZXJfbWludXNfb25lcCAoQDQpKQ0KPiA+ICsJICh2ZWNfY29uZCBAMCBAMiBAMykpKQ0K PiA+ICsgICAgICAoaWYgKGludGVnZXJfemVyb3AgKEA0KSkNCj4gPiArICAgICAgIChzd2l0Y2gN Cj4gPiArCShpZiAoaW50ZWdlcl9vbmVwIChANSkpDQo+ID4gKwkgKGJpdF9hbmQgKHZlY19jb25k IEAwIEAzIEAyKSBANSkpDQo+ID4gKwkoaWYgKGludGVnZXJfbWludXNfb25lcCAoQDUpKQ0KPiA+ ICsJICh2ZWNfY29uZCBAMCBAMyBAMikpKSkpKSkpDQo+ID4gKw0KPiA+ICsgLyogU2NhbGFyIFZl Y3Rvcml6ZWQgRm9sZCAoKC0oYSA8IGIpICYgYykgfCAoLShhID49IGIpICYgZCkpDQo+ID4gKyAg ICBpbnRvIGEgPCBiID8gZCA6IGMuICAqLw0KPiA+ICsgKHNpbXBsaWZ5DQo+ID4gKyAgKGJpdF9p b3INCj4gPiArICAgKHZlY19jb25kOnMgQDAgQDIgaW50ZWdlcl96ZXJvcCkNCj4gPiArICAgKHZl Y19jb25kOnMgQDEgQDMgaW50ZWdlcl96ZXJvcCkpDQo+ID4gKyAgICAod2l0aCB7DQo+ID4gKyAg ICAgIGVudW0gdHJlZV9jb2RlIGMxDQo+ID4gKwk9IChUUkVFX0NPREUgKEAwKSA9PSBTU0FfTkFN RQ0KPiA+ICsJICAgPyBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChTU0FfTkFNRV9ERUZfU1RNVCAo QDApKSA6DQo+IFRSRUVfQ09ERQ0KPiA+ICsoQDApKTsNCj4gPiArDQo+ID4gKyAgICAgIGVudW0g dHJlZV9jb2RlIGMyDQo+ID4gKwk9IChUUkVFX0NPREUgKEAxKSA9PSBTU0FfTkFNRQ0KPiA+ICsJ ICAgPyBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChTU0FfTkFNRV9ERUZfU1RNVCAoQDEpKSA6DQo+ IFRSRUVfQ09ERSAoQDEpKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgKGlmIChjMSA9PSBjbXAg JiYgYzIgPT0gaWNtcCkNCj4gPiArICAgICAgKHZlY19jb25kIEAwIEAyIEAzKSkpKSkNCj4gPiAr DQo+IA0KPiBBcyB5b3Ugc2F5LCBpdCdzIG5vdCBwcmV0dHkuICBXaGVuIGxvb2tpbmcgYXQNCj4g DQo+IGludCB6b28xIChpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCkNCj4gew0KPiAgICByZXR1 cm4gKChhIDwgYikgJiBjKSB8ICgoYSA+PSBiKSAmIGQpOyB9DQo+IA0KPiBJIHNlZSB0aGF0IHdl IGZhaWwgdG8gdHJhbnNmb3JtIHRoaXMgdG8NCj4gDQo+ICAgX0Jvb2wgdGVtID0gYSA8IGI7DQo+ ICAgIHJldHVybiAodGVtICYgYykgfCAoIXRlbSAmIGQpOw0KPiANCj4gYnV0IHdoZW4gZmVlZGlu ZyB0aGF0IGluIGFzIHNvdXJjZSB0aGVuIGZvcndwcm9wIHVuZG9lcyB0aGlzIHRyYW5zZm9ybS4N Cj4gU3RpbGwgd2hlbiBpbiB0aGlzIGZvcm0gdGhlIHBhdHRlcm5zIHdvdWxkIGJlIGEgbG90IGVh c2llciB0byBoYW5kbGU/DQoNCkhtbSBwZXJoYXBzLCB0aGF0IHdvdWxkIHJlbW92ZSB0aGUgbmVl ZCBmb3IgaWNtcCwgYnV0IHdpdGggeW91ciBzdWdnZXN0aW9uIGFib3ZlIEkgdGhpbmsNCkkgY2Fu IGNsZWFuIHRoaXMgdXAsIGxldCBtZSBnaXZlIGl0IGEgdHJ5Lg0KDQpUYW1hci4NCg0KPiANCj4g UmljaGFyZC4NCj4gDQo+IA0KPiA+ICAvKiBUcmFuc2Zvcm0gWCAmIC1ZIGludG8gWCAqIFkgd2hl biBZIGlzIHsgMCBvciAxIH0uICAqLyAgKHNpbXBsaWZ5DQo+ID4gICAoYml0X2FuZDpjIChjb252 ZXJ0PyAobmVnYXRlIHplcm9fb25lX3ZhbHVlZF9wQDApKSBAMSkgZGlmZiAtLWdpdA0KPiA+IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvaWYtY29tcGFyZV8xLmMNCj4gPiBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleA0KPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjUzYmJkNzc5YTMwZTFhMzBlMGNlMGU0ZTUNCj4gZWFmDQo+ID4g NTg5YmZhZjU3MGZlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jDQo+ID4gQEAgLTAsMCArMSw0NyBAQA0K PiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItTyAtc2F2ZS10ZW1wcyIgfSAqLw0KPiA+ICsvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgIiIgeyB0YXJnZXQgeyBsZSB9IH0gfQ0KPiA+ICt9ICovDQo+ID4g Kw0KPiA+ICtleHRlcm4gdm9pZCBhYm9ydCAoKTsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyoqem9v MToNCj4gPiArKioJY21wCXcwLCB3MQ0KPiA+ICsqKgljc2VsCXcwLCB3MiwgdzMsIGx0DQo+ID4g KyoqCWFuZAl3MCwgdzAsIDENCj4gPiArKioJcmV0DQo+ID4gKyovDQo+ID4gK19fYXR0cmlidXRl KChub2lwYSwgbm9pbmxpbmUpKQ0KPiA+ICtpbnQgem9vMSAoaW50IGEsIGludCBiLCBpbnQgYywg aW50IGQpIHsNCj4gPiArICAgcmV0dXJuICgoYSA8IGIpICYgYykgfCAoKGEgPj0gYikgJiBkKTsg fQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArKip6b28yOg0KPiA+ICsqKgljbXAJdzAsIHcxDQo+ID4g KyoqCWNzZWwJdzAsIHcyLCB3MywgbHQNCj4gPiArKioJcmV0DQo+ID4gKyovDQo+ID4gK19fYXR0 cmlidXRlKChub2lwYSwgbm9pbmxpbmUpKQ0KPiA+ICtpbnQgem9vMiAoaW50IGEsIGludCBiLCBp bnQgYywgaW50IGQpDQo+ID4gK3sNCj4gPiArICAgcmV0dXJuICgtKGEgPCBiKSAmIGMpIHwgKC0o YSA+PSBiKSAmIGQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgbWFpbiAoKQ0KPiA+ICt7DQo+ ID4gKyAgaWYgKHpvbzEgKC0zLCAzLCA1LCA4KSAhPSAxKQ0KPiA+ICsgICAgYWJvcnQgKCk7DQo+ ID4gKw0KPiA+ICsgIGlmICh6b28xICgzLCAtMywgNSwgOCkgIT0gMCkNCj4gPiArICAgIGFib3J0 ICgpOw0KPiA+ICsNCj4gPiArICBpZiAoem9vMiAoLTMsIDMsIDUsIDgpICE9IDUpDQo+ID4gKyAg ICBhYm9ydCAoKTsNCj4gPiArDQo+ID4gKyAgaWYgKHpvbzIgKDMsIC0zLCA1LCA4KSAhPSA4KQ0K PiA+ICsgICAgYWJvcnQgKCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVf Mi5jDQo+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvaWYtY29tcGFyZV8yLmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OTg4YWJhYzQ1OTg5NTc4YjE5OGYyOGM3DQo+IGMw ZWEyMDM5NTljMDhiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMi5jDQo+ID4gQEAgLTAsMCArMSw5NiBAQA0K PiA+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ID4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItTzMgLXN0ZD1jOTkgLXNhdmUtdGVtcHMiIH0gKi8NCj4gPiArLyogeyBkZy1maW5hbCB7IGNo ZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFyZ2V0IHsgbGUgfSB9IH0gfSAqLw0K PiA+ICsNCj4gPiArI3ByYWdtYSBHQ0MgdGFyZ2V0ICIrbm9zdmUiDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8c3RyaW5nLmg+DQo+ID4gKw0KPiA+ICt0eXBlZGVmIGludCB2NHNpIF9fYXR0cmlidXRl X18gKCh2ZWN0b3Jfc2l6ZSAoMTYpKSk7DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsqKmZvbzE6DQo+ ID4gKyoqCWNtZ3QJdjAuNHMsIHYxLjRzLCB2MC40cw0KPiA+ICsqKglic2wJdjAuMTZiLCB2Mi4x NmIsIHYzLjE2Yg0KPiA+ICsqKglyZXQNCj4gPiArKi8NCj4gPiArdjRzaSBmb28xICh2NHNpIGEs IHY0c2kgYiwgdjRzaSBjLCB2NHNpIGQpIHsNCj4gPiArICAgIHJldHVybiAoKGEgPCBiKSAmIGMp IHwgKChhID49IGIpICYgZCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyoqZm9vMjoN Cj4gPiArKioJY21ndAl2MC40cywgdjEuNHMsIHYwLjRzDQo+ID4gKyoqCWJzbAl2MC4xNmIsIHYz LjE2YiwgdjIuMTZiDQo+ID4gKyoqCXJldA0KPiA+ICsqLw0KPiA+ICt2NHNpIGZvbzIgKHY0c2kg YSwgdjRzaSBiLCB2NHNpIGMsIHY0c2kgZCkgew0KPiA+ICsgICAgcmV0dXJuICh+KGEgPCBiKSAm IGMpIHwgKH4oYSA+PSBiKSAmIGQpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyoqYmFyMToNCj4gPiArKiouLi4NCj4gPiArKioJY21nZQl2WzAtOV0rLjRzLCB2WzAtOV0r LjRzLCB2WzAtOV0rLjRzDQo+ID4gKyoqCWJzbAl2WzAtOV0rLjE2YiwgdlswLTldKy4xNmIsIHZb MC05XSsuMTZiDQo+ID4gKyoqCWFuZAl2WzAtOV0rLjE2YiwgdlswLTldKy4xNmIsIHZbMC05XSsu MTZiDQo+ID4gKyoqLi4uDQo+ID4gKyovDQo+ID4gK3ZvaWQgYmFyMSAoaW50ICogcmVzdHJpY3Qg YSwgaW50ICogcmVzdHJpY3QgYiwgaW50ICogcmVzdHJpY3QgYywNCj4gPiArCSAgaW50ICogcmVz dHJpY3QgZCwgaW50ICogcmVzdHJpY3QgcmVzLCBpbnQgbikNCj4gPiArew0KPiA+ICsgIGZvciAo aW50IGkgPSAwOyBpIDwgKG4gJiAtNCk7IGkrKykNCj4gPiArICAgIHJlc1tpXSA9ICgoYVtpXSA8 IGJbaV0pICYgY1tpXSkgfCAoKGFbaV0gPj0gYltpXSkgJiBkW2ldKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyoqYmFyMjoNCj4gPiArKiouLi4NCj4gPiArKioJY21nZQl2WzAtOV0r LjRzLCB2WzAtOV0rLjRzLCB2WzAtOV0rLjRzDQo+ID4gKyoqCWJzbAl2WzAtOV0rLjE2Yiwgdlsw LTldKy4xNmIsIHZbMC05XSsuMTZiDQo+ID4gKyoqLi4uDQo+ID4gKyovDQo+ID4gK3ZvaWQgYmFy MiAoaW50ICogcmVzdHJpY3QgYSwgaW50ICogcmVzdHJpY3QgYiwgaW50ICogcmVzdHJpY3QgYywN Cj4gPiArCSAgaW50ICogcmVzdHJpY3QgZCwgaW50ICogcmVzdHJpY3QgcmVzLCBpbnQgbikNCj4g PiArew0KPiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtNCk7IGkrKykNCj4gPiArICAg IHJlc1tpXSA9ICgtKGFbaV0gPCBiW2ldKSAmIGNbaV0pIHwgKC0oYVtpXSA+PSBiW2ldKSAmIGRb aV0pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtleHRlcm4gdm9pZCBhYm9ydCAoKTsNCj4gPiArDQo+ ID4gK2ludCBtYWluICgpDQo+ID4gK3sNCj4gPiArDQo+ID4gKyAgdjRzaSBhID0geyAtMywgLTMs IC0zLCAtMyB9Ow0KPiA+ICsgIHY0c2kgYiA9IHsgMywgMywgMywgMyB9Ow0KPiA+ICsgIHY0c2kg YyA9IHsgNSwgNSwgNSwgNSB9Ow0KPiA+ICsgIHY0c2kgZCA9IHsgOCwgOCwgOCwgOCB9Ow0KPiA+ ICsNCj4gPiArICB2NHNpIHJlczEgPSBmb28xIChhLCBiLCBjLCBkKTsNCj4gPiArICBpZiAobWVt Y21wICgmcmVzMSwgJmMsIDE2VUwpICE9IDApDQo+ID4gKyAgICBhYm9ydCAoKTsNCj4gPiArDQo+ ID4gKyAgdjRzaSByZXMyID0gZm9vMiAoYSwgYiwgYywgZCk7DQo+ID4gKyAgaWYgKG1lbWNtcCAo JnJlczIsICZkLCAxNlVMKSAhPSAwKQ0KPiA+ICsgICBhYm9ydCAoKTsNCj4gPiArDQo+ID4gKyAg aW50IGFyWzRdID0geyAtMywgLTMsIC0zLCAtMyB9Ow0KPiA+ICsgIGludCBicls0XSA9IHsgMywg MywgMywgMyB9Ow0KPiA+ICsgIGludCBjcls0XSA9IHsgNSwgNSwgNSwgNSB9Ow0KPiA+ICsgIGlu dCBkcls0XSA9IHsgOCwgOCwgOCwgOCB9Ow0KPiA+ICsNCj4gPiArICBpbnQgZXhwMVs0XSA9IHsg MSwgMSwgMSwgMSB9Ow0KPiA+ICsgIGludCByZXMzWzRdOw0KPiA+ICsgIGJhcjEgKChpbnQqKSZh ciwgKGludCopJmJyLCAoaW50KikmY3IsIChpbnQqKSZkciwgKGludCopJnJlczMsIDQpOw0KPiA+ ICsgIGlmIChtZW1jbXAgKCZyZXMzLCAmZXhwMSwgMTZVTCkgIT0gMCkNCj4gPiArICAgIGFib3J0 ICgpOw0KPiA+ICsNCj4gPiArICBpbnQgcmVzNFs0XTsNCj4gPiArICBiYXIyICgoaW50KikmYXIs IChpbnQqKSZiciwgKGludCopJmNyLCAoaW50KikmZHIsIChpbnQqKSZyZXM0LCA0KTsNCj4gPiAr ICBpZiAobWVtY21wICgmcmVzNCwgJmNyLCAxNlVMKSAhPSAwKQ0KPiA+ICsgICAgYWJvcnQgKCk7 DQo+ID4gKw0KPiA+ICsgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4NCj4gPg0KPiA+DQo+IA0KPiAt LQ0KPiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+IFNVU0UgU29mdHdhcmUg U29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtlbnN0cmFzc2UgMTQ2LCA5MDQ2MQ0KPiBOdWVy bmJlcmcsDQo+IEdlcm1hbnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1j RG9uYWxkLCBCb3VkaWVuDQo+IE1vZXJtYW47DQo+IEhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K