From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50066.outbound.protection.outlook.com [40.107.5.66]) by sourceware.org (Postfix) with ESMTPS id F013E3858D32 for ; Thu, 7 Jul 2022 07:49:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F013E3858D32 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=VInaOria56OhBlthk04mv9fXDDFBBs0V5rqgK+xy8aX5kCeek8swt9eAjpuN/zY4jUMzqgMMqIEHYYXv3EZ8ip9RUy9duV0sM3+vXIfHIEh+mI290QpyftSzWWtrMHEvonY5Bt4BikkQl1sqnkfydVK8fCrNZ2pYcd18bucaTX/Tu8qM6uWTQJOEhcFQFnHTX08Oyz2PeEu+DC97i5kK0GBrDo+6ke+MQg2Iv1lJpRQESydGkR4FP3orepfooiUAILCXdwnSpIWheUGmmipOQWCKEMeeWeM4JqHW+7127d+0VCLE+lE4ia5SMyynOYcezYoxr+hZtqvdL8Qo1XX8qw== 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=zjtTIiN7c725FT5nGd8Ur7QSlekp/iTvArmskAbQE6E=; b=mgjsDqHbHYiseiKCJg7K2jAvI3HDKO5JU3vJasJ0tKpfDejN5zOFM12ZafrKXpBFv9/qB9IH1Gtl+UuVXmgKCcDGVf3RJVdU/rriiwk0PVzQjItZOR70ASOq9oqcoT+nCbT8YrnfhX+ZFdctrnrvjF7F34S79sdAl0H4v/F7ExlcRF4ealQkqOv+cbE2LthkGBM0ALVcAIXCQy/O3ZbQC6kxm4G/ivjt4PdOP9eSumzVwkbQ/cnGCQH5an/Ul3WVCmZo6hzkCnklTrvdo447+Y+yvhrLBTwTkLGgbqP1VwScGme0ymqeBf4maUdneegxlDdg3XIcRATzA+dpbYCUkg== 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]) Received: from DB6PR0202CA0014.eurprd02.prod.outlook.com (2603:10a6:4:29::24) by AM5PR0801MB1906.eurprd08.prod.outlook.com (2603:10a6:203:48::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16; Thu, 7 Jul 2022 07:49:03 +0000 Received: from DBAEUR03FT017.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:29:cafe::8d) by DB6PR0202CA0014.outlook.office365.com (2603:10a6:4:29::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16 via Frontend Transport; Thu, 7 Jul 2022 07:49:03 +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 DBAEUR03FT017.mail.protection.outlook.com (100.127.142.243) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15 via Frontend Transport; Thu, 7 Jul 2022 07:49:03 +0000 Received: ("Tessian outbound afad550a20c6:v122"); Thu, 07 Jul 2022 07:49:03 +0000 X-CR-MTA-TID: 64aa7808 Received: from f8f5406db2cc.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B6C3CE02-AC5A-40B9-8D4B-3DF75FBCDCF7.1; Thu, 07 Jul 2022 07:48:57 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f8f5406db2cc.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 07 Jul 2022 07:48:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LRGG+umKlsfUeh1V24+FDWLHeqsj2OlbKPpQu1lHYuVTqAhcP5KIYEOEYuD4z7FOFHaUFkkaIMZmOwKzmTNq9Ei74oN6GSE9rSM3eJt4ocnaS7spR58kTF2WTf/L+uP57p8fsuetqXqpv4amGXrYGPXagNXv1rraW90rjlZpiIbxyBEeSbcuj71kJ91nn+ljRz5G1RB1qHcRFkFpmQRO4SWodI0kB4HinmCGpJWMdiu0hqIEyyw4JIty5Mh/BBONb0ScHzJwCfXVWKiz+ZiP3KOocC2DL/D2998NPZGmhTYwpqQu/J305mUfrTZQst7YU8F0cHQ1XkSez1RsuVLazw== 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=zjtTIiN7c725FT5nGd8Ur7QSlekp/iTvArmskAbQE6E=; b=UdbTWiEQRt7SifvRx2LI7+JHjI5rLc50T5gjxUGciRB/CxWYpZ7ykyVOZNjZEhst6vV7w0Sp7LkdzpVPTr1bwrrMA7inpuar1vpcrfyBl5bLD8Qv4uKzhqKcVzUN9JhGvhVE3VLx6IVh4izWXGSwjB6i8qUEYLHiOLAXAwzByTmjG0nLROT4QUr4SiCPHQdEPbvrBhQLT6iT/qxmeKdD5lglC9P/NIBqVbqvTHmBaGEwQv6i+60n4uHw1M4p+m7VxVfeQT8uS0SByCTDtTyth5ArGznnu+sJKiSdKRz3DGn/5bg21eF/IO2geOHpLTbn4tJBV5ZuFFa57EDOHU5dgw== 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 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB3968.eurprd08.prod.outlook.com (2603:10a6:803:e5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Thu, 7 Jul 2022 07:48:53 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%9]) with mapi id 15.20.5417.016; Thu, 7 Jul 2022 07:48:53 +0000 From: Tamar Christina To: Andrew Pinski CC: Richard Biener , 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: AQHYgYV05EjYER2K3U6QUesqLBCP9q1YBFAAgBf6HbCAALlnAIAA4k0AgABCX4CAAMr7gA== Date: Thu, 7 Jul 2022 07:48:53 +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: B88578CEA5426947A3A84EB3C3B76ED7.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-Office365-Filtering-Correlation-Id: 6c07aaa3-75fd-430e-0574-08da5fed29b0 x-ms-traffictypediagnostic: VI1PR08MB3968:EE_|DBAEUR03FT017:EE_|AM5PR0801MB1906:EE_ 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: hsJmOy2tK276wfLcVFurF9fF4G3HJ6CHVE2em2lW9g1DGkEmZ3bPjzvCvP6dvMy33aX0t7vNwUDvWkyk5UO/lYa79nB2gwenSbRIcvlmwYFzoXfYX1de4w8HIyqnLZVkTnj3vD352vY31JKACcGZdGnSrP95kYDHk9euKcnlUt08QIjKlXGyusfeMVdLluT1w2rW7g708zeFhFlPQzkJ5u9X0n7L39bdqN2jxcfsZmObuqddZbEY6E5ZuAuFBhFs9jMD9BwDdLB6nDCryM3bp92td93Jqm6+WsAzWT+NOoaYVAiqMTQbqt3rO9PlYxB7L29AyAzH6m6kI4nxZfLNM20QNDUEotXo+TGLD0EbQlbs8WYE6apR/e9ZLckPM4/zEs2z1GCxcYX0Q2OS69ZbvuCIpnIkTa6cae6PREkaFlZLUdXKb8zrWFpuI/14cLf9f/5W9InDMC2w0tB6s1/bh4j+6WoGoKn1jAIWtz2iXCBAmD2h4jkB/76TyxMe3NLqeP5AXyNlbuwbJcswCWiKqSy/ziap0vNrq6QTYhwHrPKrgu15GWRjr5T+LojCnfAobzFN1zAyIrYcle2JX6ENLVCrjcBjva2KKtjik9CXxIAkUOIa7Fg4BRtEO4fJfXv/8bcueQp8/rrn0Sum5mULfwQFYL7Wy7LshNaENd2l+S8+5wSmDIPNXeEIvf+0FSWZNY7jOJe57Jc2YbAgQRb6gTUWhplHr8aYKbni0wXod+bGx/Prc6VOM+16hoiIQQgChv8mElKh8OJCk4xhYhp9X+WrWEYOifZxW/aWEiLMiunqE2LarNgV3ERziKxKJ1poMMBEjBNlSCskDMFrhADR1V564z2Ks+vlwYZxMgAqtBDLRO+KwgUwuLbsLWroo7j2 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:(13230016)(4636009)(396003)(366004)(376002)(136003)(346002)(39860400002)(66556008)(64756008)(26005)(122000001)(38100700002)(478600001)(7696005)(186003)(86362001)(66476007)(6506007)(6916009)(9686003)(54906003)(5660300002)(4326008)(66446008)(66946007)(76116006)(52536014)(8676002)(316002)(33656002)(41300700001)(8936002)(38070700005)(83380400001)(30864003)(53546011)(84970400001)(2906002)(55016003)(71200400001)(579004); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3968 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: DBAEUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3d4d3c0e-39b5-4330-6564-08da5fed2364 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EyWWedq+Uc/xjy53EUf+1GtyxnmHqmmP8SFi4A2NARxiAQZjfpvMdJSfRq8So5C386f0dXOeI9wwWPohJTGiQQFUFAHzdiDjIrYmNuqZHuPo5gL0fNyGdwK8mY52SxD2813zXR7jc+/JK+5p8VsKZbw5P5fJs+gGWwVoV5g67c0qG0wLeohUsGP+sa7iRX2pNrYOoqOSYCjHv8Tj7miILVhOM/XCzw2fB61d/8ZQvOqb5UHBb/ojyB+qZfaos7/1X4VxmijcfSw1tlo2bop/7dTDZMvhlnnd/XpHVwz8BqelyCbGR55NFp23/Bjcs/o90kPOl6Ml6fC7adlzlrmJu2xLeQePNFCjt9h1SCPq8atabLYuDebyKdsyDSd9DhJCHde6rBwIFHggYCCZ+1EYU/VJjJ+mS1bwnK4cKprv6HeipnVmAZ9dERg6r5lTVFuKALem4sqe7EpQe3AWr5zvMN3Bp5ZAlIgiMg4KNMhPhZbgpSzJkRU+r9PbEco62hBZVGCBUppcYCprwVCtUsjGI1qgRqKMn1YS12l3DuA8WB8g9/9Z4VCDuk4qz4yGc8sbrwnWCTxKtA3cS++mupXyEYdu1ZOoOWdaJksqyJzQ5bu3M7p+fr6gdADwF2RbSqWkiLQA7ZBcL6LFqmH1x3fCfFAkypfuBXhEXvyaC9ubJ6Ll9+1miE6ZdP155i2UHdOPEkvcif0IHx/mOW0mN/wPBaGKPsLYXZ2hhzNDqQFWvrBBvoNW9IGdhiXEwFIQ/L5z437Jlof1x+gJtPaMslbmUdbnUe4gMlvoEdi2hwwz5G6/PKpyH25cpvQa/U7CXVavX4kiV2EkyVu+h9rAS4g0GuwgQ+og6RFifn+sNmH5Lsso3bdi1X7PgAP15iM6pH3rJy9WGK7VqT2+yFb1+Zw0vQ== 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:(13230016)(4636009)(39860400002)(346002)(376002)(396003)(136003)(46966006)(40470700004)(36840700001)(6506007)(7696005)(81166007)(54906003)(40480700001)(356005)(53546011)(316002)(55016003)(86362001)(36860700001)(82740400003)(82310400005)(9686003)(83380400001)(41300700001)(30864003)(33656002)(84970400001)(70586007)(47076005)(336012)(70206006)(26005)(186003)(5660300002)(52536014)(40460700003)(8676002)(4326008)(478600001)(8936002)(6862004)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2022 07:49:03.7635 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c07aaa3-75fd-430e-0574-08da5fed29b0 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: DBAEUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1906 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2022 07:49:11 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBBbmRyZXcgUGluc2tpIDxwaW5z a2lhQGdtYWlsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDYsIDIwMjIgODozNyBQTQ0K PiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4NCj4gQ2M6IFJp Y2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT47IG5kIDxuZEBhcm0uY29tPjsgZ2NjLQ0K PiBwYXRjaGVzQGdjYy5nbnUub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdbWlkZGxlLWVuZCBz aW1wbGlmeSBjb21wbGV4IGlmIGV4cHJlc3Npb25zIHdoZXJlDQo+IGNvbXBhcmlzb25zIGFyZSBp bnZlcnNlIG9mIG9uZSBhbm90aGVyLg0KPiANCj4gT24gV2VkLCBKdWwgNiwgMjAyMiBhdCA5OjA2 IEFNIFRhbWFyIENocmlzdGluYSA8VGFtYXIuQ2hyaXN0aW5hQGFybS5jb20+DQo+IHdyb3RlOg0K PiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQW5kcmV3 IFBpbnNraSA8cGluc2tpYUBnbWFpbC5jb20+DQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIEp1bHkg NiwgMjAyMiAzOjEwIEFNDQo+ID4gPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3Rp bmFAYXJtLmNvbT4NCj4gPiA+IENjOiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+ OyBuZCA8bmRAYXJtLmNvbT47IGdjYy0NCj4gPiA+IHBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gPiA+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdbWlkZGxlLWVuZCBzaW1wbGlmeSBjb21wbGV4IGlmIGV4cHJl c3Npb25zIHdoZXJlDQo+ID4gPiBjb21wYXJpc29ucyBhcmUgaW52ZXJzZSBvZiBvbmUgYW5vdGhl ci4NCj4gPiA+DQo+ID4gPiBPbiBUdWUsIEp1bCA1LCAyMDIyIGF0IDg6MTYgQU0gVGFtYXIgQ2hy aXN0aW5hIHZpYSBHY2MtcGF0Y2hlcyA8Z2NjLQ0KPiA+ID4gcGF0Y2hlc0BnY2MuZ251Lm9yZz4g d3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVy QHN1c2UuZGU+DQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBKdW5lIDIwLCAyMDIyIDk6NTcgQU0N Cj4gPiA+ID4gPiBUbzogVGFtYXIgQ2hyaXN0aW5hIDxUYW1hci5DaHJpc3RpbmFAYXJtLmNvbT4N Cj4gPiA+ID4gPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IG5kIDxuZEBhcm0uY29tPg0K PiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdbWlkZGxlLWVuZCBzaW1wbGlmeSBjb21wbGV4 IGlmIGV4cHJlc3Npb25zDQo+ID4gPiA+ID4gd2hlcmUgY29tcGFyaXNvbnMgYXJlIGludmVyc2Ug b2Ygb25lIGFub3RoZXIuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBPbiBUaHUsIDE2IEp1biAyMDIy LCBUYW1hciBDaHJpc3RpbmEgd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEhpIEFsbCwN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGlzIG9wdGltaXplcyB0aGUgZm9sbG93aW5nIHNl cXVlbmNlDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAoKGEgPCBiKSAmIGMpIHwgKChhID49 IGIpICYgZCkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBpbnRvDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gICAoYSA8IGIgPyBjIDogZCkgJiAxDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g Zm9yIHNjYWxhci4gT24gdmVjdG9yIHdlIGNhbiBvbWl0IHRoZSAmIDEuDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gVGhpcyBjaGFuZ2VzIHRoZSBjb2RlIGdlbmVyYXRpb24gZnJvbQ0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IHpvbzI6DQo+ID4gPiA+ID4gPiAgICAgY21wICAgICB3MCwgdzEN Cj4gPiA+ID4gPiA+ICAgICBjc2V0ICAgIHcwLCBsdA0KPiA+ID4gPiA+ID4gICAgIGNzZXQgICAg dzEsIGdlDQo+ID4gPiA+ID4gPiAgICAgYW5kICAgICB3MCwgdzAsIHcyDQo+ID4gPiA+ID4gPiAg ICAgYW5kICAgICB3MSwgdzEsIHczDQo+ID4gPiA+ID4gPiAgICAgb3JyICAgICB3MCwgdzAsIHcx DQo+ID4gPiA+ID4gPiAgICAgcmV0DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gaW50bw0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgICBjbXAgICAgIHcwLCB3MQ0KPiA+ID4gPiA+ID4gICAg IGNzZWwgICAgdzAsIHcyLCB3MywgbHQNCj4gPiA+ID4gPiA+ICAgICBhbmQgICAgIHcwLCB3MCwg MQ0KPiA+ID4gPiA+ID4gICAgIHJldA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGFuZCBzaWdu aWZpY2FudGx5IHJlZHVjZXMgdGhlIG51bWJlciBvZiBzZWxlY3RzIHdlIGhhdmUgdG8gZG8NCj4g PiA+ID4gPiA+IGluIHRoZSB2ZWN0b3IgY29kZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBC b290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFhcmNoNjQtbm9uZS1saW51eC1nbnUsDQo+ID4gPiA+ ID4gPiB4ODZfNjQtcGMtbGludXgtZ251IGFuZCBubyBpc3N1ZXMuDQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gT2sgZm9yIG1hc3Rlcj8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3Ms DQo+ID4gPiA+ID4gPiBUYW1hcg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGdjYy9DaGFuZ2VM b2c6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgICogZm9sZC1jb25zdC5jYyAoaW52ZXJz ZV9jb25kaXRpb25zX3ApOiBUcmF2ZXJzZSBpZiBTU0FfTkFNRS4NCj4gPiA+ID4gPiA+ICAgICAq IG1hdGNoLnBkOiBBZGQgbmV3IHJ1bGUuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZ2NjL3Rl c3RzdWl0ZS9DaGFuZ2VMb2c6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgICogZ2NjLnRh cmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jOiBOZXcgdGVzdC4NCj4gPiA+ID4gPiA+ICAgICAq IGdjYy50YXJnZXQvYWFyY2g2NC9pZi1jb21wYXJlXzIuYzogTmV3IHRlc3QuDQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gLS0tIGlubGluZSBjb3B5IG9mIHBhdGNoIC0tDQo+ID4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZ2NjL2ZvbGQtY29uc3QuY2MgYi9nY2MvZm9sZC1jb25zdC5jYyBpbmRleA0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4gMzlhNWE1Mjk1OGQ4NzQ5N2YzMDE4MjZl NzA2ODg2YjI5MDc3MWEyZC4uZjE4MDU5OWI5MDE1MGFjZDNlZDg5NWE2NA0KPiA+ID4gPiA+IDI4 MA0KPiA+ID4gPiA+ID4gYWEzMjU1MDYxMjU2IDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvZ2Nj L2ZvbGQtY29uc3QuY2MNCj4gPiA+ID4gPiA+ICsrKyBiL2djYy9mb2xkLWNvbnN0LmNjDQo+ID4g PiA+ID4gPiBAQCAtMjgzMywxNSArMjgzMywzOCBAQCBjb21wY29kZV90b19jb21wYXJpc29uIChl bnVtDQo+ID4gPiA+ID4gY29tcGFyaXNvbl9jb2RlDQo+ID4gPiA+ID4gPiBjb2RlKSAgYm9vbCAg aW52ZXJzZV9jb25kaXRpb25zX3AgKGNvbnN0X3RyZWUgY29uZDEsDQo+ID4gPiA+ID4gPiBjb25z dF90cmVlDQo+ID4gPiA+ID4gPiBjb25kMikgew0KPiA+ID4gPiA+ID4gLSAgcmV0dXJuIChDT01Q QVJJU09OX0NMQVNTX1AgKGNvbmQxKQ0KPiA+ID4gPiA+ID4gLSAgICAgJiYgQ09NUEFSSVNPTl9D TEFTU19QIChjb25kMikNCj4gPiA+ID4gPiA+IC0gICAgICYmIChpbnZlcnRfdHJlZV9jb21wYXJp c29uDQo+ID4gPiA+ID4gPiAtICAgICAgICAgKFRSRUVfQ09ERSAoY29uZDEpLA0KPiA+ID4gPiA+ ID4gLSAgICAgICAgICBIT05PUl9OQU5TIChUUkVFX09QRVJBTkQgKGNvbmQxLCAwKSkpID09IFRS RUVfQ09ERQ0KPiA+ID4gPiA+IChjb25kMikpDQo+ID4gPiA+ID4gPiAtICAgICAmJiBvcGVyYW5k X2VxdWFsX3AgKFRSRUVfT1BFUkFORCAoY29uZDEsIDApLA0KPiA+ID4gPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICBUUkVFX09QRVJBTkQgKGNvbmQyLCAwKSwgMCkNCj4gPiA+ID4gPiA+ IC0gICAgICYmIG9wZXJhbmRfZXF1YWxfcCAoVFJFRV9PUEVSQU5EIChjb25kMSwgMSksDQo+ID4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIFRSRUVfT1BFUkFORCAoY29uZDIsIDEp LCAwKSk7DQo+ID4gPiA+ID4gPiArICBpZiAoQ09NUEFSSVNPTl9DTEFTU19QIChjb25kMSkNCj4g PiA+ID4gPiA+ICsgICAgICAmJiBDT01QQVJJU09OX0NMQVNTX1AgKGNvbmQyKQ0KPiA+ID4gPiA+ ID4gKyAgICAgICYmIChpbnZlcnRfdHJlZV9jb21wYXJpc29uDQo+ID4gPiA+ID4gPiArICAgICAg KFRSRUVfQ09ERSAoY29uZDEpLA0KPiA+ID4gPiA+ID4gKyAgICAgICBIT05PUl9OQU5TIChUUkVF X09QRVJBTkQgKGNvbmQxLCAwKSkpID09IFRSRUVfQ09ERQ0KPiA+ID4gPiA+IChjb25kMikpDQo+ ID4gPiA+ID4gPiArICAgICAgJiYgb3BlcmFuZF9lcXVhbF9wIChUUkVFX09QRVJBTkQgKGNvbmQx LCAwKSwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBUUkVFX09QRVJBTkQgKGNv bmQyLCAwKSwgMCkNCj4gPiA+ID4gPiA+ICsgICAgICAmJiBvcGVyYW5kX2VxdWFsX3AgKFRSRUVf T1BFUkFORCAoY29uZDEsIDEpLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIFRS RUVfT1BFUkFORCAoY29uZDIsIDEpLCAwKSkNCj4gPiA+ID4gPiA+ICsgICAgcmV0dXJuIHRydWU7 DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICBpZiAoVFJFRV9DT0RFIChjb25kMSkgPT0g U1NBX05BTUUNCj4gPiA+ID4gPiA+ICsgICAgICAmJiBUUkVFX0NPREUgKGNvbmQyKSA9PSBTU0Ff TkFNRSkNCj4gPiA+ID4gPiA+ICsgICAgew0KPiA+ID4gPiA+ID4gKyAgICAgIGdpbXBsZSAqZ2Nv bmQxID0gU1NBX05BTUVfREVGX1NUTVQgKGNvbmQxKTsNCj4gPiA+ID4gPiA+ICsgICAgICBnaW1w bGUgKmdjb25kMiA9IFNTQV9OQU1FX0RFRl9TVE1UIChjb25kMik7DQo+ID4gPiA+ID4gPiArICAg ICAgaWYgKCFpc19naW1wbGVfYXNzaWduIChnY29uZDEpIHx8ICFpc19naW1wbGVfYXNzaWduIChn Y29uZDIpKQ0KPiA+ID4gPiA+ID4gKyAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgICAgICB0cmVlX2NvZGUgY29kZTEgPSBnaW1wbGVfYXNzaWduX3Joc19jb2Rl IChnY29uZDEpOw0KPiA+ID4gPiA+ID4gKyAgICAgIHRyZWVfY29kZSBjb2RlMiA9IGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKGdjb25kMik7DQo+ID4gPiA+ID4gPiArICAgICAgcmV0dXJuIFRSRUVf Q09ERV9DTEFTUyAoY29kZTEpID09IHRjY19jb21wYXJpc29uDQo+ID4gPiA+ID4gPiArICAgICAg ICAmJiBUUkVFX0NPREVfQ0xBU1MgKGNvZGUyKSA9PSB0Y2NfY29tcGFyaXNvbg0KPiA+ID4gPiA+ ID4gKyAgICAgICAgJiYgaW52ZXJ0X3RyZWVfY29tcGFyaXNvbiAoY29kZTEsDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgIEhPTk9SX05BTlMgKGdpbXBsZV9hcmcgKGdjb25kMSwgMCkpKSA9PSBj b2RlMg0KPiA+ID4gPiA+ID4gKyAgICAgICAgJiYgb3BlcmFuZF9lcXVhbF9wIChnaW1wbGVfYXJn IChnY29uZDEsIDApLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBn aW1wbGVfYXJnIChnY29uZDIsIDApLCAwKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgJiYgb3BlcmFu ZF9lcXVhbF9wIChnaW1wbGVfYXJnIChnY29uZDEsIDEpLA0KPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnaW1wbGVfYXJnIChnY29uZDIsIDEpLCAwKTsNCj4gPiA+ID4g PiA+ICsgICAgfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgcmV0dXJuIGZhbHNlOw0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gaWYgd2UgZG8gZXh0ZW5kIGludmVyc2VfY29uZGl0aW9uX3Ag cGxlYXNlIGFkZCBhbiBvdmVybG9hZCBsaWtlDQo+ID4gPiA+DQo+ID4gPiA+IERvbmUuDQo+ID4g PiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBib29sDQo+ID4gPiA+ID4gaW52ZXJzZV9jb25kaXRp b25fcCAoZW51bSB0cmVlX2NvZGUsIHRyZWUgb3AwMCwgdHJlZSBvcDAxLA0KPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgIGVudW0gdHJlZV9jb2RlLCB0cmVlIG9wMTAsIHRyZWUgb3AxMSkN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IHNvIHlvdSBjYW4gYXZvaWQgc29tZSBjb2RlIGR1cGxpY2F0 aW9uIGhlcmUuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gIC8qIFJldHVybiBhIHRyZWUgZm9yIHRoZSBjb21wYXJpc29uIHdoaWNoIGlzIHRoZSBj b21iaW5hdGlvbg0KPiA+ID4gPiA+ID4gb2YgZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2dj Yy9tYXRjaC5wZCBpbmRleA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4gNmQ2OTFk MzAyYjMzOWMwZTQ1NTZiNDBhZjE1OGI1MjA4YzEyZDA4Zi4uYmFkNDlkZDM0OGFkZDc1MWQ5ZWMx ZTMwDQo+ID4gPiA+ID4gMjNlMw0KPiA+ID4gPiA+ID4gNGQ5YWMxMjMxOTRmIDEwMDY0NA0KPiA+ ID4gPiA+ID4gLS0tIGEvZ2NjL21hdGNoLnBkDQo+ID4gPiA+ID4gPiArKysgYi9nY2MvbWF0Y2gu cGQNCj4gPiA+ID4gPiA+IEBAIC0xMTYwLDYgKzExNjAsMzIgQEAgREVGSU5FX0lOVF9BTkRfRkxP QVRfUk9VTkRfRk4NCj4gPiA+IChSSU5UKQ0KPiA+ID4gPiA+ID4gICAgICAgKGNvbnZlcnQgKGJp dF9hbmQgKG5lZ2F0ZSAoY29udmVydDp1dHlwZSB7IHBtb3BbMF07IH0pKQ0KPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICAgICAgIChjb252ZXJ0OnV0eXBlIEAxKSkpKSkpKQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ICsvKiBGb2xkICgoKGEgPCBiKSAmIGMpIHwgKChhID49IGIpICYgZCkpIGlu dG8gKGEgPCBiID8gYyA6IGQpICYgMS4NCj4gPiA+ID4gPiA+ICsqLyAoc2ltcGxpZnkgIChiaXRf aW9yDQo+ID4gPiA+ID4gPiArICAoYml0X2FuZDpjIChjb252ZXJ0PyBAMCkgQDIpDQo+ID4gPiA+ ID4gPiArICAoYml0X2FuZDpjIChjb252ZXJ0PyBAMSkgQDMpKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gaW4gY2FzZSB0aGUgY29tcGFyaXNvbiByZXR1cm5zIGEgc2lnbmVkIGJvb2wgdGhpcyBtaWdo dCB0dXJuIG91dA0KPiB3cm9uZy4NCj4gPiA+ID4gPiBNYXliZSBzaW1wbHkgdXNlIHplcm9fb25l X3ZhbHVlZF9wQDAgaGVyZSBpbnN0ZWFkIG9mIChjb252ZXJ0Pw0KPiA+ID4gQDApPw0KPiA+ID4g Pg0KPiA+ID4gPiBJIHRoaW5rIEkgc3RpbGwgbmVlZCB0aGUgY29udmVydCBhcyB0aGUgY29tcGFy aXNvbiBnZXRzIHByb21vdGVkDQo+ID4gPiA+IHRvIGludCBhbmQgdGhlIHByZWRpY2F0ZSBkb2Vz bid0IGhhbmRsZSBleHRlbnNpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiBTbyBJIGxlZnQgdGhlIGNv bnZlcnQgYnV0IGFkZGVkIHRoZSB6ZXJvX29uZV92YWx1ZWRfcEAwIHN1Y2ggdGhhdA0KPiA+ID4g PiBpdCdzIGNoZWNraW5nIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpdHNlbGYg aXMgYXQgbGVhc3QgMCBvciAxLg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArICAg KGlmIChpbnZlcnNlX2NvbmRpdGlvbnNfcCAoQDAsIEAxKQ0KPiA+ID4gPiA+ID4gKyAgIC8qIFRo ZSBzY2FsYXIgdmVyc2lvbiBoYXMgdG8gYmUgY2Fub25pY2FsaXplZCBhZnRlciB2ZWN0b3JpemF0 aW9uDQo+ID4gPiA+ID4gPiArICAgICAgYmVjYXVzZSBpdCBtYWtlcyB1bmNvbmRpdGlvbmFsIGxv YWRzIGNvbmRpdGlvbmFsIG9uZXMsIHdoaWNoDQo+ID4gPiA+ID4gPiArICAgICAgbWVhbnMgd2Ug bG9zZSB2ZWN0b3JpemF0aW9uIGJlY2F1c2UgdGhlIGxvYWRzIG1heSB0cmFwLiAgKi8NCj4gPiA+ ID4gPiA+ICsgICAmJiBjYW5vbmljYWxpemVfbWF0aF9hZnRlcl92ZWN0b3JpemF0aW9uX3AgKCkp DQo+ID4gPiA+ID4gPiArICAgIChiaXRfYW5kIChjb25kIEAwIEAyIEAzKSB7IGJ1aWxkX2VhY2hf b25lX2NzdCAodHlwZSk7DQo+ID4gPiA+ID4gPiArIH0pKSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IEkgdGhpbmsgeW91IHNob3VsZCByZXN0cmljdCB0aGlzIHRvIElOVEVHUkFMX1RZUEVfUCBhbmQg dXNlDQo+ID4gPiA+ID4gYnVpbGRfb25lX2NzdA0KPiA+ID4gPiA+ICh0eXBlKSAoYWxzbyBzZWUg YmVsb3cpLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4geW91IGNhbiBkbyBpbnZlcnNlX29uZGl0aW9u c19wIHdpdGggbG9jay1zdGVwIGZvciBvdmVyDQo+ID4gPiA+ID4gdGNjX2NvbXBhcmlzb24gYW5k IGludmVydGVkX3RjY19jb21wYXJpc29ueyxfd2l0aF9uYW5zfSAoc2VlDQo+ID4gPiA+ID4gZXhp c3RpbmcNCj4gPiA+IGV4YW1wbGVzKS4NCj4gPiA+ID4NCj4gPiA+ID4gSSBjb3VsZG4ndCBmaWd1 cmUgb3V0IGhvdyB0byBjb21iaW5lIHRoaXMgYXBwcm9hY2ggd2l0aCB0aGUNCj4gPiA+ID4gemVy b19vbmVfdmFsdWVkX3AgcHJlZGljYXRlLiBUaGUgemVyb19vbmVfdmFsdWVkX3Agd291bGQgbmVl ZCB0bw0KPiA+ID4gPiBiZQ0KPiA+ID4gb24NCj4gPiA+ID4gKGNtcCBAMCBAMSkgYnV0IGRvbid0 IHRoaW5rIHRoYXQgaXMgYWxsb3dlZC4NCj4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g KyhzaW1wbGlmeQ0KPiA+ID4gPiA+ID4gKyAoYml0X2lvcg0KPiA+ID4gPiA+ID4gKyAgKGJpdF9h bmQ6YyAoY29udmVydD8gKHZlY19jb25kOnMgQDAgQDQgaW50ZWdlcl96ZXJvcCkpIEAyKQ0KPiA+ ID4gPiA+ID4gKyAgKGJpdF9hbmQ6YyAoY29udmVydD8gKHZlY19jb25kOnMgQDEgQDQgaW50ZWdl cl96ZXJvcCkpIEAzKSkNCj4gPiA+ID4gPiA+ICsgICAoaWYgKGludmVyc2VfY29uZGl0aW9uc19w IChAMCwgQDEpDQo+ID4gPiA+ID4gPiArICAgJiYgaW50ZWdlcl9vbmVwIChANCkpDQo+ID4gPiA+ ID4gPiArICAgIChiaXRfYW5kICh2ZWNfY29uZCBAMCBAMiBAMykgQDQpKSkNCj4gPiA+ID4gPiA+ ICsvKiBGb2xkICgoKGEgPCBiKSAmIGMpIHwgKChhID49IGIpICYgZCkpIGludG8gYSA8IGIgPyBj IDogZC4NCj4gPiA+ID4gPiA+ICsqLyAoc2ltcGxpZnkgIChiaXRfaW9yDQo+ID4gPiA+ID4gPiAr ICAoYml0X2FuZDpjIChjb252ZXJ0PyAodmVjX2NvbmQ6cyBAMCBpbnRlZ2VyX21pbnVzX29uZXAN Cj4gPiA+ID4gPiA+ICtpbnRlZ2VyX3plcm9wKSkgQDIpDQo+ID4gPiA+ID4gPiArICAoYml0X2Fu ZDpjIChjb252ZXJ0PyAodmVjX2NvbmQ6cyBAMSBpbnRlZ2VyX21pbnVzX29uZXANCj4gPiA+ID4g PiBpbnRlZ2VyX3plcm9wKSkgQDMpKQ0KPiA+ID4gPiA+ID4gKyAgIChpZiAoaW52ZXJzZV9jb25k aXRpb25zX3AgKEAwLCBAMSkpDQo+ID4gPiA+ID4gPiArICAgICh2ZWNfY29uZCBAMCBAMiBAMykp KQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSB0aGluayB0aGUgZHVwbGljYXRpb24gaXMgcHJlLW1h dHVyZSBvcHRpbWl6YXRpb24gLSB3ZSBzaG91bGQNCj4gPiA+ID4gPiBnZXQgdGhlIChiaXRfYW5k ICguLikgaW50ZWdlcl9taW51c19vbmVwKSBzaW1wbGlmaWVkLiAgQWxzbw0KPiA+ID4gPiA+IGRp ZG4ndCB3ZSBoYXZlICh2ZWNfY29uZA0KPiA+ID4gPiA+IEAwIC0xIDApIC0+ICh2aWV3X2NvbnZl cnQgQDApIHdoZW4gdGhlIG1vZGVzIG1hdGNoPw0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIHdhc24n dCBpbiBteSB0cmVlIGF0IHRoZSB0aW1lLCBJIGNvdWxkIHVzZSB0aGlzDQo+ID4gPiA+IHJlcHJl c2VudGF0aW9uIGluc3RlYWQgYnV0IGl0IHdvdWxkbid0IHNob3J0ZW4gdGhlIG1hdGNoIHRyZWUu DQo+ID4gPiA+IENvbWJpbmluZyB0aGVtIGFzIHlvdSBzdWdnZXN0ZWQgYmVsb3cgc2VlbXMgbW9z dCBvcHRpbWFsLg0KPiA+ID4gPg0KPiA+ID4gPiA+IFdlIG1pZ2h0IHdhbnQgdG8gYWRkIChtYXRj aCB6ZXJvX21pbnVzX29uZV92YWx1ZWRfcCkgb3IgdXNlDQo+ID4gPiA+ID4gdHJ1dGhfdmFsdWVk X3AgKHdpdGggYXBwcm9wcmlhdGUgdmVjdG9yIHNlbWFudGljcywgcGx1cyBleHRlbmQgaXQpLg0K PiA+ID4gPiA+IFdoeSBkbyB5b3UgbmVlZCAoY29udmVydD8gLi4uKSBmb3IgdGhlIHZlY3RvciBj YXNlIGJ0dz8NCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBTaW5jZSB3ZSBoYXZlIHRvIGRl ZmVyIHRoZSBzY2FsYXIgdmVyc2lvbiB0aGVuIHRoZSB2ZWN0b3JpemVyDQo+ID4gPiA+IHdvbid0 DQo+ID4gPiA+DQo+ID4gPiA+ID4gSSBndWVzcyB0aGUgaW50ZWdyYWwgdHlwZSBhbmQgdmVjdG9y IHR5cGUgY2FzZXMgYXJlIHNpbWlsYXINCj4gPiA+ID4gPiBlbm91Z2ggdGhhdCB0aGUgcGF0dGVy bnMgY2FuIGJlIG1lcmdlZCB3aXRoIGNvbmRpdGlvbmFsaXppbmcNCj4gPiA+ID4gPiBvbmx5IHRo ZQ0KPiA+ID4gcmVwbGFjZW1lbnQuDQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gTWVyZ2Vk Lg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBCb290c3RyYXBwZWQgUmVndGVzdGVkIG9uIGFh cmNoNjQtbm9uZS1saW51eC1nbnUsDQo+ID4gPiA+IHg4Nl82NC1wYy1saW51eC1nbnUgYW5kIG5v IGlzc3Vlcy4NCj4gPiA+ID4NCj4gPiA+ID4gT2sgZm9yIG1hc3Rlcj8NCj4gPiA+ID4NCj4gPiA+ ID4gVGhhbmtzLA0KPiA+ID4gPiBUYW1hcg0KPiA+ID4gPg0KPiA+ID4gPiBnY2MvQ2hhbmdlTG9n Og0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgICogZm9sZC1jb25zdC5jYyAoaW52ZXJzZV9jb25k aXRpb25zX3ApOiBUcmF2ZXJzZSBpZiBTU0FfTkFNRS4NCj4gPiA+ID4gICAgICAgICAoaW52ZXJz ZV9jb25kaXRpb25zX3BfMSk6IE5ldy4NCj4gPiA+ID4gICAgICAgICAqIG1hdGNoLnBkOiBBZGQg bmV3IHJ1bGUuDQo+ID4gPiA+DQo+ID4gPiA+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPiA+ ID4gPg0KPiA+ID4gPiAgICAgICAgICogZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5j OiBOZXcgdGVzdC4NCj4gPiA+ID4gICAgICAgICAqIGdjYy50YXJnZXQvYWFyY2g2NC9pZi1jb21w YXJlXzIuYzogTmV3IHRlc3QuDQo+ID4gPiA+DQo+ID4gPiA+IC0tLSBpbmxpbmUgY29weSBvZiBw YXRjaCAtLS0NCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9mb2xkLWNvbnN0LmNj IGIvZ2NjL2ZvbGQtY29uc3QuY2MgaW5kZXgNCj4gPiA+ID4NCj4gPiA+DQo+IDk5MDIxYTgyZGY0 OTc3YjE3OWI0NWRiMDRlMzA4MzAxMmM2MzA2N2EuLjA2MjhmZmQzOTU0MTZkNzRiYzAzMWUzZTQN Cj4gPiA+IGFjOA0KPiA+ID4gPiAyNDY4OTRjYTU2NGQgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2dj Yy9mb2xkLWNvbnN0LmNjDQo+ID4gPiA+ICsrKyBiL2djYy9mb2xkLWNvbnN0LmNjDQo+ID4gPiA+ IEBAIC0yODI5LDIwICsyODI5LDU1IEBAIGNvbXBjb2RlX3RvX2NvbXBhcmlzb24gKGVudW0NCj4g PiA+IGNvbXBhcmlzb25fY29kZSBjb2RlKQ0KPiA+ID4gPiAgICAgIH0NCj4gPiA+ID4gIH0NCj4g PiA+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyogSGVscGVyIG9mIGludmVyc2VfY29uZGl0aW9u X3AuICBSZXR1cm5zIFRSVUUgaWYgQ09ERTEgaXMgdGhlDQo+IGludmVyc2Ugb2YNCj4gPiA+ID4g KyAgIENPREUyIGFuZCBPUDAwID09IE9QMTAgYW5kIE9QMDEgPT0gT1AxMS4gICovDQo+ID4gPiA+ ICsNCj4gPiA+ID4gK3N0YXRpYyBib29sDQo+ID4gPiA+ICtpbnZlcnNlX2NvbmRpdGlvbnNfcF8x IChlbnVtIHRyZWVfY29kZSBjb2RlMSwgdHJlZSBvcDAwLCB0cmVlDQo+IG9wMDEsDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdHJlZV9jb2RlIGNvZGUyLCB0cmVlIG9wMTAs IHRyZWUNCj4gPiA+ID4gK29wMTEpIHsNCj4gPiA+ID4gKyAgcmV0dXJuIChpbnZlcnRfdHJlZV9j b21wYXJpc29uIChjb2RlMSwgSE9OT1JfTkFOUyAob3AwMCkpID09DQo+ID4gPiBjb2RlMikNCj4g PiA+ID4gKyAgICAgICYmIG9wZXJhbmRfZXF1YWxfcCAob3AwMCwgb3AxMCwgMCkNCj4gPiA+ID4g KyAgICAgICYmIG9wZXJhbmRfZXF1YWxfcCAob3AwMSwgb3AxMSwgMCk7IH0NCj4gPiA+ID4gKw0K PiA+ID4gPiAgLyogUmV0dXJuIHRydWUgaWYgQ09ORDEgdGVzdHMgdGhlIG9wcG9zaXRlIGNvbmRp dGlvbiBvZiBDT05EMi4NCj4gPiA+ID4gKi8NCj4gPiA+ID4NCj4gPiA+ID4gIGJvb2wNCj4gPiA+ ID4gIGludmVyc2VfY29uZGl0aW9uc19wIChjb25zdF90cmVlIGNvbmQxLCBjb25zdF90cmVlIGNv bmQyKSAgew0KPiA+ID4gPiAtICByZXR1cm4gKENPTVBBUklTT05fQ0xBU1NfUCAoY29uZDEpDQo+ ID4gPiA+IC0gICAgICAgICAmJiBDT01QQVJJU09OX0NMQVNTX1AgKGNvbmQyKQ0KPiA+ID4gPiAt ICAgICAgICAgJiYgKGludmVydF90cmVlX2NvbXBhcmlzb24NCj4gPiA+ID4gLSAgICAgICAgICAg ICAoVFJFRV9DT0RFIChjb25kMSksDQo+ID4gPiA+IC0gICAgICAgICAgICAgIEhPTk9SX05BTlMg KFRSRUVfT1BFUkFORCAoY29uZDEsIDApKSkgPT0gVFJFRV9DT0RFDQo+ID4gPiAoY29uZDIpKQ0K PiA+ID4gPiAtICAgICAgICAgJiYgb3BlcmFuZF9lcXVhbF9wIChUUkVFX09QRVJBTkQgKGNvbmQx LCAwKSwNCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJFRV9PUEVSQU5E IChjb25kMiwgMCksIDApDQo+ID4gPiA+IC0gICAgICAgICAmJiBvcGVyYW5kX2VxdWFsX3AgKFRS RUVfT1BFUkFORCAoY29uZDEsIDEpLA0KPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUUkVFX09QRVJBTkQgKGNvbmQyLCAxKSwgMCkpOw0KPiA+ID4gPiArICBpZiAoQ09NUEFS SVNPTl9DTEFTU19QIChjb25kMSkNCj4gPiA+ID4gKyAgICAgICYmIENPTVBBUklTT05fQ0xBU1Nf UCAoY29uZDIpDQo+ID4gPiA+ICsgICAgICAmJiBpbnZlcnNlX2NvbmRpdGlvbnNfcF8xIChUUkVF X0NPREUgKGNvbmQxKSwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VFJFRV9PUEVSQU5EIChjb25kMSwgMCksDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRSRUVfT1BFUkFORCAoY29uZDEsIDEpLA0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUUkVFX0NPREUgKGNvbmQyKSwNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVFJFRV9PUEVSQU5EIChjb25kMiwgMCksDQo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSRUVfT1BFUkFORCAoY29uZDIsIDEp KSkNCj4gPiA+ID4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICBpZiAo VFJFRV9DT0RFIChjb25kMSkgPT0gU1NBX05BTUUNCj4gPiA+ID4gKyAgICAgICYmIFRSRUVfQ09E RSAoY29uZDIpID09IFNTQV9OQU1FKQ0KPiA+ID4gPiArICAgIHsNCj4gPiA+ID4gKyAgICAgIGdp bXBsZSAqZ2NvbmQxID0gU1NBX05BTUVfREVGX1NUTVQgKGNvbmQxKTsNCj4gPiA+ID4gKyAgICAg IGdpbXBsZSAqZ2NvbmQyID0gU1NBX05BTUVfREVGX1NUTVQgKGNvbmQyKTsNCj4gPiA+ID4gKyAg ICAgIGlmICghaXNfZ2ltcGxlX2Fzc2lnbiAoZ2NvbmQxKSB8fCAhaXNfZ2ltcGxlX2Fzc2lnbiAo Z2NvbmQyKSkNCj4gPiA+ID4gKyAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICAgIHRyZWVfY29kZSBjb2RlMSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGdjb25k MSk7DQo+ID4gPiA+ICsgICAgICB0cmVlX2NvZGUgY29kZTIgPSBnaW1wbGVfYXNzaWduX3Joc19j b2RlIChnY29uZDIpOw0KPiA+ID4gPiArICAgICAgcmV0dXJuIFRSRUVfQ09ERV9DTEFTUyAoY29k ZTEpID09IHRjY19jb21wYXJpc29uDQo+ID4gPiA+ICsgICAgICAgICAgICAmJiBUUkVFX0NPREVf Q0xBU1MgKGNvZGUyKSA9PSB0Y2NfY29tcGFyaXNvbg0KPiA+ID4gPiArICAgICAgICAgICAgJiYg aW52ZXJzZV9jb25kaXRpb25zX3BfMSAoY29kZTEsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnaW1wbGVfYXJnIChnY29uZDEsIDApLA0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ltcGxlX2FyZyAoZ2NvbmQx LCAxKSwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv ZGUyLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lt cGxlX2FyZyAoZ2NvbmQyLCAwKSwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdpbXBsZV9hcmcgKGdjb25kMiwgMSkpOw0KPiA+ID4gPiArICAgIH0NCj4g PiA+ID4gKw0KPiA+ID4gPiArICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICAvKiBSZXR1cm4gYSB0cmVlIGZvciB0aGUgY29tcGFyaXNvbiB3aGljaCBpcyB0aGUg Y29tYmluYXRpb24gb2YNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9t YXRjaC5wZCBpbmRleA0KPiA+ID4gPg0KPiA+ID4NCj4gMjRjYmJiYjViYzFkNzE4YmQwM2FmNzcx MmZjNzI1NTIxM2YyYTc0Mi4uMGE0NTlmMjgwNGUyOTZmNDMzNmFlZTcwZTMNCj4gPiA+IDUxDQo+ ID4gPiA+IGRkYzQ1NDg2Yzg2NyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZ2NjL21hdGNoLnBkDQo+ ID4gPiA+ICsrKyBiL2djYy9tYXRjaC5wZA0KPiA+ID4gPiBAQCAtMTg3Miw2ICsxODcyLDMwIEBA IERFRklORV9JTlRfQU5EX0ZMT0FUX1JPVU5EX0ZODQo+IChSSU5UKQ0KPiA+ID4gPiAgIChpZiAo SU5URUdSQUxfVFlQRV9QICh0eXBlKSkNCj4gPiA+ID4gICAgKGJpdF9hbmQgQDAgQDEpKSkNCj4g PiA+ID4NCj4gPiA+ID4gKy8qIEZvbGQgKCgoYSA8IGIpICYgYykgfCAoKGEgPj0gYikgJiBkKSkg aW50byAoYSA8IGIgPyBjIDogZCkgJiAxLg0KPiA+ID4gPiArICAgYW5kIHZlY3RvciBGb2xkICgo KGEgPCBiKSAmIGMpIHwgKChhID49IGIpICYgZCkpIGludG8gYSA8IGIgPyBjIDoNCj4gPiA+ID4g K2QuICovIChzaW1wbGlmeSAgKGJpdF9pb3INCj4gPiA+ID4gKyAgKGJpdF9hbmQ6YyAoY29udmVy dD8gemVyb19vbmVfdmFsdWVkX3BAMCkgQDIpDQo+ID4gPiA+ICsgIChiaXRfYW5kOmMgKGNvbnZl cnQ/IHplcm9fb25lX3ZhbHVlZF9wQDEpIEAzKSkNCj4gPiA+ID4gKyAgIChpZiAoSU5URUdSQUxf VFlQRV9QICh0eXBlKQ0KPiA+ID4gPiArICAgICAgICYmIGludmVyc2VfY29uZGl0aW9uc19wIChA MCwgQDEpDQo+ID4gPiA+ICsgICAgICAgLyogVGhlIHNjYWxhciB2ZXJzaW9uIGhhcyB0byBiZSBj YW5vbmljYWxpemVkIGFmdGVyIHZlY3Rvcml6YXRpb24NCj4gPiA+ID4gKyAgICAgICAgICBiZWNh dXNlIGl0IG1ha2VzIHVuY29uZGl0aW9uYWwgbG9hZHMgY29uZGl0aW9uYWwgb25lcywgd2hpY2gN Cj4gPiA+ID4gKyAgICAgICAgICBtZWFucyB3ZSBsb3NlIHZlY3Rvcml6YXRpb24gYmVjYXVzZSB0 aGUgbG9hZHMgbWF5IHRyYXAuICAqLw0KPiA+ID4gPiArICAgICAgICYmIGNhbm9uaWNhbGl6ZV9t YXRoX2FmdGVyX3ZlY3Rvcml6YXRpb25fcCAoKSkNCj4gPiA+ID4gKyAgICAoYml0X2FuZCAoY29u ZCBAMCBAMiBAMykgeyBidWlsZF9vbmVfY3N0ICh0eXBlKTsgfSkpKQ0KPiA+ID4NCj4gPiA+IEkg S25vdyB0aGlzIGlzIG5vdCBwYXJ0IG9mIHRoZSBjdXJyZW50IHBhdHRlcm4gYnV0IGNvdWxkIHlv dSBhZGQ6DQo+ID4gPiAoKChhIDwgYikgJiBjKSB8ICgoLShhID49IGIpKSAmIGQpKSAtPiBhIDwg YiA/IGMgOiBkDQo+ID4gPg0KPiA+ID4gTm90IHlvdXIgZmF1bHQgYnV0IHRoZXJlIGFyZSBub3cg bGlrZSB0d28gZGlmZmVyZW50IHByZWRpY2F0ZXMgZm9yIGENCj4gPiA+IGJvb2xlYW4gbGlrZSBv cGVyYW5kLg0KPiA+ID4gemVyb19vbmVfdmFsdWVkX3AgYW5kIHRydXRoX3ZhbHVlZF9wIGFuZCBh IHRoaXJkIHdheSB0byBkZXNjcmliZSBpdA0KPiA+ID4gaXMgdG8gdXNlIFNTQV9OQU1FIGFuZCBj aGVjayBzc2FfbmFtZV9oYXNfYm9vbGVhbl9yYW5nZS4NCj4gPiA+DQo+ID4gPiBBbHNvIHdoeSBj YW4ndCB5b3UganVzdCBkbzoNCj4gPiA+IFNvbWV0aGluZyBzaW1pbGFyIGxpa2U6DQo+ID4gPiAr IC8qIFNpbWlsYXIgYnV0IGZvciBjb21wYXJpc29ucyB3aGljaCBoYXZlIGJlZW4gaW52ZXJ0ZWQg YWxyZWFkeSwNCj4gPiA+ICsgICAgTm90ZSBpdCBpcyBoYXJkIHRvIHNpbWlsdWxhdGUgaW52ZXJ0 ZWQgdGNjX2NvbXBhcmlzb24gZHVlIHRvIE5hTnMNCj4gPiA+ICsgICAgc28gYSBkb3VibGUgZm9y IGxvb3AgaXMgbmVlZGVkIGFuZCB0aGVuIGNvbXBhcmUgdGhlIGludmVyc2UgY29kZQ0KPiA+ID4g KyAgICB3aXRoIHRoZSByZXN1bHQgb2YgaW52ZXJ0X3RyZWVfY29tcGFyaXNvbiBpcyBuZWVkZWQu ICAqLyAoZm9yDQo+ID4gPiArIGNtcA0KPiA+ID4gKyAodGNjX2NvbXBhcmlzb24pICAoZm9yIGlj bXAgKHRjY19jb21wYXJpc29uKQ0KPiA+ID4gKyAgIChzaW1wbGlmeQ0KPiA+ID4gKyAgICAoYml0 b3A6YyAocmJpdG9wOmMgKGljbXAgQDAgQDEpIEAyKSAoY21wQDMgQDAgQDEpKQ0KPiA+ID4gKyAg ICAgKHdpdGggeyBlbnVtIHRyZWVfY29kZSBpYyA9IGludmVydF90cmVlX2NvbXBhcmlzb24NCj4g PiA+ICsgICAgICAgICAgICAgKGNtcCwgSE9OT1JfTkFOUyAoQDApKTsgfQ0KPiA+ID4gKyAgICAg IChpZiAoaWMgPT0gaWNtcCkNCj4gPiA+ICsgICAgICAgKGJpdG9wIEAzIEAyKSkpKSkpKQ0KPiA+ ID4NCj4gPiA+IFdoZXJlIHlvdSBtYXRjaCBldmVyeXRoaW5nIGluIG1hdGNoIGFuZCBzaW1wbGlm eSBpbnN0ZWFkIG9mIG5lZWRpbmcNCj4gPiA+IHRvIHVzZSBpbnZlcnNlX2NvbmRpdGlvbnNfcD8N Cj4gPg0KPiA+IEFzIEkgbWVudGlvbmVkIGFib3ZlIGluIHRoZSByZXBseSB0byBSaWNoaSwgdGhp cyBpcyBiZWNhdXNlIEkgY2FuJ3QNCj4gPiBhcHBseSB0aGUgcHJlZGljYXRlIHplcm9fb25lX3Zh bHVlZF9wIHRvIHRoZSBjb21wYXJpc29uIHJlc3VsdCBpZiBJDQo+IGRlY29tcG9zZSB0aGUgY29t cGFyaXNvbi4NCj4gPiB6ZXJvX29uZV92YWx1ZWRfcEAoY21wIEAwIEAxKSBhbmQgb3RoZXIgdmFy aWFudHMgSSd2ZSB0cmllZCBkbyBub3QNCj4gY29tcGlsZS4NCj4gPg0KPiA+IElzIHRoZXJlIGEg d2F5IEkgY2FuIGRvIHNvPw0KPiANCj4gDQo+IFRoaW5raW5nIGFib3V0IGl0IG1heWJlIGFkZGlu ZyBhIGNoZWNrIGZvciBub24gdmVjdG9yIHR5cGUgb3IganVzdCBhIGJvb2xlYW4NCj4gdHlwZSwg Y29tcGFyaXNvbnMgd2lsbCBhbHdheXMgaGF2ZSBlaXRoZXIgYSBib29sIG9yIGFuIHZlY3RvciB0 eXBlLg0KPiBOb3RlIHlvdSBtaWdodCBuZWVkIHRvIGNoZWNrIGZvciBzaWduZWQgdnMgdW5zaWdu ZWQgYm9vbCdzIGJlY2F1c2Ugb2YgdGhlDQo+IGNvbnZlcnQgKGFuZCB5ZXMgc29tZSBsYW5ndWFn ZXMgaGF2ZSBzaWduZWQgYm9vbHMsIEFkYSkuDQoNClllcywgdGhhdCdzIHdoeSBSaWNoaSByZXF1 ZXN0ZWQgdGhlIHVzZSBvZiB0aGUgemVyb19vbmVfdmFsdWVkX3AuIEJlY2F1c2UgYWxsDQp3ZSBj YXJlIGFib3V0IGlzIHRoYXQgdGhlIHR5cGUgcmV0dXJucyAwIG9yIDEgZm9yIGNvbXBhcmlzb25z IGFzIGl0J3MgZ29pbmcgdG8NCm1hc2sgaXQgd2l0aCAxLg0KDQo+IFRoYXQgaXMgc29tZXRoaW5n IGxpa2UgKGZvcm1hdGluZyBuZWVkcyB0byBiZSBmaXhlZCk6DQo+IChmb3IgY21wICh0Y2NfY29t cGFyaXNvbikNCj4gICAoZm9yIGljbXAgKHRjY19jb21wYXJpc29uKQ0KPiAgICAoc2ltcGxpZnkN Cj4gIChiaXRfaW9yDQo+ICAgKGJpdF9hbmQ6YyAoY29udmVydD8gKGNtcDpjQDAgQDQgQDUpKSBA MikNCj4gICAoYml0X2FuZDpjIChjb252ZXJ0PyAoaWNtcEAxIEA0IEA1KSkgQDMpKQ0KPiAgICAo aWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChAMCkpID09IEJPT0xFQU5fVFlQRQ0KPiAgICAgICAg ICYmIFRZUEVfU0lHTiAoVFJFRV9UWVBFIChAMCkpID09IFVOU0lHTkVEDQo+ICAgICAgICAgJiYg VFJFRV9DT0RFIChUUkVFX1RZUEUgKEAxKSkgPT0gQk9PTEVBTl9UWVBFDQo+ICAgICAgICAgJiYg VFlQRV9TSUdOIChUUkVFX1RZUEUgKEAxKSkgPT0gVU5TSUdORUQNCj4gICAgICAgIC8qIFRoZSBz Y2FsYXIgdmVyc2lvbiBoYXMgdG8gYmUgY2Fub25pY2FsaXplZCBhZnRlciB2ZWN0b3JpemF0aW9u DQo+ICAgICAgICAgICBiZWNhdXNlIGl0IG1ha2VzIHVuY29uZGl0aW9uYWwgbG9hZHMgY29uZGl0 aW9uYWwgb25lcywgd2hpY2gNCj4gICAgICAgICAgIG1lYW5zIHdlIGxvc2UgdmVjdG9yaXphdGlv biBiZWNhdXNlIHRoZSBsb2FkcyBtYXkgdHJhcC4gICovDQo+ICAgICAgICAmJiBjYW5vbmljYWxp emVfbWF0aF9hZnRlcl92ZWN0b3JpemF0aW9uX3AgKCkpDQo+ICAgICAgKHdpdGggeyBlbnVtIHRy ZWVfY29kZSBpYyA9IGludmVydF90cmVlX2NvbXBhcmlzb24NCj4gICAgICAgICAgICAgIChjbXAs IEhPTk9SX05BTlMgKEAwKSk7IH0NCj4gICAgICAoaWYgKGljID09IGljbXApDQo+ICAgICAoYml0 X2FuZCAoY29uZCBAMCBAMiBAMykgeyBidWlsZF9lYWNoX29uZV9jc3QgKHR5cGUpOyB9KSkpDQo+ IA0KDQp6ZXJvX29uZV92YWx1ZWRfcCBpcyBtb3JlIGdlbmVyYWwgYXMgaXQgZG9lc24ndCBsaW1p dCB0aGUgb3BlcmF0aW9uIHRvIGp1c3QNCkJvb2xlYW5zLiAgU28gSSdkIGxpa2UgdG8gaGVhciB3 aGF0IFJpY2hpIHRoaW5rcyBiZWZvcmUgbm90IHVzaW5nIGl0Lg0KDQpUaGFua3MsDQpUYW1hcg0K DQo+IA0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IFRhbWFyDQo+ID4NCj4gPiA+DQo+ID4gPiBUaGFu a3MsDQo+ID4gPiBBbmRyZXcgUGluc2tpDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gKyhzaW1wbGlm eQ0KPiA+ID4gPiArIChiaXRfaW9yDQo+ID4gPiA+ICsgIChiaXRfYW5kOmMgKHZlY19jb25kOnMg QDAgQDQgaW50ZWdlcl96ZXJvcCkgQDIpDQo+ID4gPiA+ICsgIChiaXRfYW5kOmMgKHZlY19jb25k OnMgQDEgQDQgaW50ZWdlcl96ZXJvcCkgQDMpKQ0KPiA+ID4gPiArICAgKGlmIChpbnZlcnNlX2Nv bmRpdGlvbnNfcCAoQDAsIEAxKSkNCj4gPiA+ID4gKyAgICAoc3dpdGNoDQo+ID4gPiA+ICsgICAg IChpZiAoaW50ZWdlcl9vbmVwIChANCkpDQo+ID4gPiA+ICsgICAgICAoYml0X2FuZCAodmVjX2Nv bmQgQDAgQDIgQDMpIEA0KSkNCj4gPiA+ID4gKyAgICAgKGlmIChpbnRlZ2VyX21pbnVzX29uZXAg KEA0KSkNCj4gPiA+ID4gKyAgICAgICh2ZWNfY29uZCBAMCBAMiBAMykpKSkpDQo+ID4gPiA+ICsN Cj4gPiA+ID4gIC8qIFRyYW5zZm9ybSBYICYgLVkgaW50byBYICogWSB3aGVuIFkgaXMgeyAwIG9y IDEgfS4gICovICAoc2ltcGxpZnkNCj4gPiA+ID4gICAoYml0X2FuZDpjIChjb252ZXJ0PyAobmVn YXRlIHplcm9fb25lX3ZhbHVlZF9wQDApKSBAMSkgZGlmZg0KPiA+ID4gPiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jDQo+ID4gPiA+IGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvaWYtY29tcGFyZV8xLmMNCj4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXgNCj4gPiA+ID4NCj4gPiA+DQo+IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YTEyOTJmYTkwYzcwYjE0YTc5 ODUxMjJmDQo+ID4gPiA0Mw0KPiA+ID4gPiA3MTFmNTVkMDQ3ZWENCj4gPiA+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9pZi1j b21wYXJlXzEuYw0KPiA+ID4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gPiA+ICsvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLw0KPiA+ID4gPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PIiB9 ICovDQo+ID4gPiA+ICsvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIg IiIgIiIgeyB0YXJnZXQgeyBsZSB9DQo+ID4gPiA+ICt9IH0gfSAqLw0KPiA+ID4gPiArDQo+ID4g PiA+ICsvKg0KPiA+ID4gPiArKip6b28yOg0KPiA+ID4gPiArKiogICAgIGNtcCAgICAgdzAsIHcx DQo+ID4gPiA+ICsqKiAgICAgY3NlbCAgICB3MCwgdzIsIHczLCBsdA0KPiA+ID4gPiArKiogICAg IGFuZCAgICAgdzAsIHcwLCAxDQo+ID4gPiA+ICsqKiAgICAgcmV0DQo+ID4gPiA+ICsqLw0KPiA+ ID4gPiAraW50IHpvbzIgKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkKSB7DQo+ID4gPiA+ICsg ICByZXR1cm4gKChhIDwgYikgJiBjKSB8ICgoYSA+PSBiKSAmIGQpOyB9DQo+ID4gPiA+ICsNCj4g PiA+ID4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNv bXBhcmVfMi5jDQo+ID4gPiA+IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvaWYt Y29tcGFyZV8yLmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gaW5kZXgN Cj4gPiA+ID4NCj4gPiA+DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjM0YmM2NWY1ZGIxMGVhZTgxYjhkZWUzMzENCj4gPiA+IDZkZg0KPiA+ID4gPiBiN2QxMmJm NDcxYzgNCj4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiArKysgYi9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvYWFyY2g2NC9pZi1jb21wYXJlXzIuYw0KPiA+ID4gPiBAQCAtMCwwICsxLDMy IEBADQo+ID4gPiA+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiA+ID4gPiArLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtc3RkPWM5OSIgfSAqLw0KPiA+ID4gPiArLyogeyBkZy1m aW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFyZ2V0IHsgbGUgfQ0K PiA+ID4gPiArfSB9IH0gKi8NCj4gPiA+ID4gKw0KPiA+ID4gPiArdHlwZWRlZiBpbnQgdjRzaSBf X2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDE2KSkpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsv Kg0KPiA+ID4gPiArKipmb286DQo+ID4gPiA+ICsqKiAgICAgY21ndCAgICB2MC40cywgdjEuNHMs IHYwLjRzDQo+ID4gPiA+ICsqKiAgICAgYnNsICAgICB2MC4xNmIsIHYyLjE2YiwgdjMuMTZiDQo+ ID4gPiA+ICsqKiAgICAgcmV0DQo+ID4gPiA+ICsqLw0KPiA+ID4gPiArdjRzaSBmb28gKHY0c2kg YSwgdjRzaSBiLCB2NHNpIGMsIHY0c2kgZCkgew0KPiA+ID4gPiArICAgIHJldHVybiAoKGEgPCBi KSAmIGMpIHwgKChhID49IGIpICYgZCk7IH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsvKioNCj4gPiA+ID4gKyoqYmFyOg0KPiA+ID4gPiArKiouLi4NCj4gPiA+ID4gKyoqICAgICBj bWdlICAgIHZbMC05XSsuNHMsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMNCj4gPiA+ID4gKyoqICAg ICBic2wgICAgIHZbMC05XSsuMTZiLCB2WzAtOV0rLjE2YiwgdlswLTldKy4xNmINCj4gPiA+ID4g KyoqICAgICBhbmQgICAgIHZbMC05XSsuMTZiLCB2WzAtOV0rLjE2YiwgdlswLTldKy4xNmINCj4g PiA+ID4gKyoqLi4uDQo+ID4gPiA+ICsqLw0KPiA+ID4gPiArdm9pZCBiYXIgKGludCAqIHJlc3Ry aWN0IGEsIGludCAqIHJlc3RyaWN0IGIsIGludCAqIHJlc3RyaWN0IGMsDQo+ID4gPiA+ICsgICAg ICAgICBpbnQgKiByZXN0cmljdCBkLCBpbnQgKiByZXN0cmljdCByZXMsIGludCBuKSB7DQo+ID4g PiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgKG4gJiAtNCk7IGkrKykNCj4gPiA+ID4gKyAgICBy ZXNbaV0gPSAoKGFbaV0gPCBiW2ldKSAmIGNbaV0pIHwgKChhW2ldID49IGJbaV0pICYgZFtpXSk7 IH0NCj4gPiA+ID4gKw0K