From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2083.outbound.protection.outlook.com [40.107.21.83]) by sourceware.org (Postfix) with ESMTPS id 79CEE3858025 for ; Fri, 8 Jan 2021 09:59:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 79CEE3858025 Received: from DB8PR03CA0024.eurprd03.prod.outlook.com (2603:10a6:10:be::37) by DB8PR08MB4188.eurprd08.prod.outlook.com (2603:10a6:10:b0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 09:59:20 +0000 Received: from DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:be:cafe::c6) by DB8PR03CA0024.outlook.office365.com (2603:10a6:10:be::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 09:59:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT019.mail.protection.outlook.com (10.152.20.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 09:59:20 +0000 Received: ("Tessian outbound 665ba7fbdfd9:v71"); Fri, 08 Jan 2021 09:59:20 +0000 X-CR-MTA-TID: 64aa7808 Received: from 46e2904c7d12.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 71365537-986D-4590-973C-0FF568D52A05.1; Fri, 08 Jan 2021 09:59:15 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 46e2904c7d12.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 Jan 2021 09:59:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DCKvMLO7iCG1tzxrok46H06E7X2D1hleIHzapkC5W2RueRmrSIWESfKuBGIly28OUD1exK+7/0z61SIPqYsIGZl/bzUtUa5Y8on1K9KFOXDVo4QoeR+DL/V07PRFL6wDTw77zdaOC2ThPxYSy4bLCKfMXKnAY7Je6oOAvjdafME5+OQXgrm69f0ZNqgayK218371PvH0OxV/TWV4Pz9QYjk1PIlCs9XOh6On+kqP9bn4nplcCCUQrTqnkrEycJMQn0Ty808BQExukNc6CMwHGm+wJuqVAggmJPxyMnYZ38b15KR18hzb+lNUHFB+ziA4Ai9adySDKUxUVFfx2jWLkw== 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-SenderADCheck; bh=uqjpjAdE27Jt1Nfiqp2E9ULFSMfn+mszFAL0LNu50zQ=; b=YEN/jHmXKJaXXZbLHKAS2BaFQrr3fgmNbpNh5959MyHxFaI22zO+qBrzLc1it3nVFLTkEZ057qeSzIGTrXoe0poP+11gy8Jt5g54ie8hI47VgCynKrJfI0u8bIIfWG/++wPQoEJHsVKJ5utvsDjmOMJ/n0/b0OfjcgziC7SJimuUR76IT8PcPie88rJhAtPGdvmpBhZHOsJEpttUEZ9bttqN/Fiz2lsEuHzACFv84d7DXhv/z0/cvarYz6zlzseahm0nWPhvWlL7mZO6yUvI+KO7mLOtCG2HssQ6IkXQcAsLTYrQKgfh/mr7oDVsseocdBhY72liwXbt8z1WrR4wVw== 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 VE1PR08MB4766.eurprd08.prod.outlook.com (2603:10a6:802:a9::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 09:59:12 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f937:5b3:12e1:8297]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f937:5b3:12e1:8297%5]) with mapi id 15.20.3742.007; Fri, 8 Jan 2021 09:59:12 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd , "ook@ucw.cz" Subject: RE: [PATCH 6/8 v9]middle-end slp: support complex FMA and complex FMA conjugate Thread-Topic: [PATCH 6/8 v9]middle-end slp: support complex FMA and complex FMA conjugate Thread-Index: AQHW3R6fqk5bnkCFi0iOAFBbsZ7ibKodi6sAgAABb5A= Date: Fri, 8 Jan 2021 09:59:12 +0000 Message-ID: References: <20201228133743.GA29457@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 4D5CDDD69B57C145A6779D8C1396F3F9.0 x-checkrecipientchecked: true Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.99.251] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4b1c5068-d773-48e9-6362-08d8b3bc1193 x-ms-traffictypediagnostic: VE1PR08MB4766:|DB8PR08MB4188: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: K7pVM6LgNbu4DDFiMzqKnNHijqqVUKFEqRu6wvq8i4p4VQM8dF576bviQL8ex3sWe8J8cJ8G+G6EuS6xhF2QX328SwVYvvulZAkJCl2mshhEHpQbIdJLp5+ynFUXBJ0p9P6i/7ek8ZOTeNk0fSwXQGjgMk/szxMr1fRdVus8SK8c1Co7V9N0v7Al2KTrji0Skpwi49AFcHTNxHHN37ATjUt4WmqV48zBnOwvXDdfGiBmdg9/97DJtf6p1RvYeRt13fjYaaJv3by7yKL/c71p41GDRdm5KmQ4ZyPrILiMShkVco+H2oMzbBwaVI0xKYlheVhXsUOzLfOooxYgnZCNyyR1eJm3J/nIhwHf4BofxWD8C4kdUioMmCtjf5Rs41vfv0EG0QFDjQroQIruX1es7w== 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:(4636009)(346002)(376002)(396003)(136003)(366004)(39860400002)(76116006)(33656002)(8676002)(316002)(52536014)(2906002)(8936002)(83380400001)(186003)(86362001)(66574015)(64756008)(4326008)(6506007)(71200400001)(53546011)(6916009)(66446008)(55016002)(66476007)(66946007)(54906003)(7696005)(9686003)(66556008)(30864003)(26005)(478600001)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?cDBXS05LelNTekVxdCtZYU4wTFZqbllZNG1HbEN4QzFDRFIxVkxiTnlhbjR3?= =?utf-8?B?RG9xc2tDZUJzbXVzaFp5UkJralFIQS8zS0xGSStaT0FqOVNtVXhEWFU4SGRR?= =?utf-8?B?RG0rUVBhWCs1K1RzczdHa2toaGpiK21NaVlLLzJoc0Y4aVFKN2dGNGpQa0kv?= =?utf-8?B?a3ZoaW5hMVVQV0ZEbHVZMTgwaitGalNaRkZMbTRpRFkyYk8rM2pFUnk3ZjI3?= =?utf-8?B?TEhpaUk4anJqMDQ3cWlnbm1jSm5xQS9UQ1VzUWxCR1VjZlZrY3pIRFlWT29M?= =?utf-8?B?b3hjOG1GT3JQdmRBalorSHNqZGttNjZ1R3lWWnFvRTFhSncwekxLcC81ZU5s?= =?utf-8?B?c3o2SEZPaFdOYnNTdDJXVmNycnVoQWdZWXN3V1ozZ2MxZkxvT0wrZ1RxMFg3?= =?utf-8?B?TGM5ZkJIeUliRnNTNksyV2NZZmdIUVlLL3ZsR3haOE81eTIyN3lqQ2wwSGFu?= =?utf-8?B?a3NBZnprbTNCTWVBUmdlMm9BNHJxWno2bjB1ZmZQei9kREF4L2dWRTRvQ2Y1?= =?utf-8?B?YUh0ZWNZelQ5enVvdkhsS1FzK0hjVElsZkk1dEFkRUhYL2hPMFc4TUw0Uzlk?= =?utf-8?B?ZEJTOFViNEc5dml0Nll6bWVFNkVjSmtzRHNuNUFaaEE5ZGVGenVNUjkvSkor?= =?utf-8?B?NlBaUWNpMTRhTXJvcmRCZERGNkpTZjVueExXWVBPNHA2aUo4djAyT2ZidVNT?= =?utf-8?B?TGZ6YnpjZmI5bGo0NGsybEF5U2o1bU4yaXJDK3FMMEdFNHpqdkFSSEFUQmo1?= =?utf-8?B?T1lmL1A4WGlITWRkK3BQcU5RdkhtR0JLL3I0TXoyOThzdE0xRkc5Z2RBTWRK?= =?utf-8?B?Visvd2ltUzlnZ1Q5S1FOeXg3b01yc25yTHd2V3ArZnBabGdmakNpOHpKODdK?= =?utf-8?B?aGF3S0tyQ2IycXUwZTYzYmMvSlkyYWVVRWZDdnd6YjNBM2VMSDZSWmFxaHZk?= =?utf-8?B?N0FNTUhsOFhJc1hMbFRqVmVwbXJuQmpQRTBDQnkzbGFraVVQNzgyUERoSkh5?= =?utf-8?B?UWxWcXprb2NUTHRJcHcwTC9FOGxkcHdPdVVCNUNZZk1zYXh5cXFPTHgwaW14?= =?utf-8?B?VWJscm5zM1hTODFKbzhUbmxNNFZqSmozZjBlQktUVjA0VHhqekk4eDlZaEVD?= =?utf-8?B?UzlYN3NVSlN2czNLUHNaTThTQ1FFTlNYVGNRcG1mL3JzQ0ZjK0dvQ1piVnhu?= =?utf-8?B?QmEyaXBZQzFxVElYZVBmNE0rU0hRa0lJK09uem9hSExvTGp2USt3a0ZjMGhj?= =?utf-8?B?RXdWWWFyeHU4V3lvNE1WblArQUxqVXNUSGlmdm1OY2FsU3R0WS9lWXBha21x?= =?utf-8?Q?T5OQOHGc52K5g=3D?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4766 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: de4065e5-f4e0-4e85-c71e-08d8b3bc0d08 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ezbywn74BIt8WH97Yc6wvC1vCUH8yIMl9C/l45+cKWCJV9fef5TZIxkWWaqGPr5M1uksabzIAKPq6ITlfcJBoKlNp1LvPdVw4oyY6jOn9pAaDX4125kuu1xfIY1sEtO3IRD6yDWD2yobJfA3DZ/TyZQOc+Xv8YLBAdPDHoxf8UqQ2QtpP5f5XEp3kBctepJTvWPwA4AvHx9cnDcEQn5XVPkbEPzbj0fOy8HBNAkg19nN3GhVGtYf+c2d+yI9ZYT89c20DLN1Bd909/4ASN5imQHBF4HgZyQZpS2pdjR+hxApoekqk9CTHMx2PX5fqFqyx2MlRhzNLJyFGt45La7SwgGwRzBF9cf4wrqdBDBx6K+nyTOrEUl/KNgBeMspozf9yF3cNk7F+i7xvhpn9V4eOWjQpKyZSgpfU6aL0LmrWSdHekZpjX5ecgZ1PBED2/wLirCRiK9W5kjqBbe0QQ97djyTvXtXtFguHHbFV+lgRTxYsghvkTEIzzsasY8OTBAZ 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:(4636009)(39860400002)(396003)(376002)(346002)(136003)(46966006)(82310400003)(33656002)(81166007)(8936002)(34020700004)(336012)(82740400003)(2906002)(478600001)(8676002)(54906003)(356005)(7696005)(70206006)(5660300002)(70586007)(4326008)(66574015)(6506007)(6862004)(86362001)(186003)(316002)(52536014)(53546011)(55016002)(30864003)(26005)(47076005)(9686003)(83380400001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2021 09:59:20.2950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b1c5068-d773-48e9-6362-08d8b3bc1193 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: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB4188 X-Spam-Status: No, score=-13.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Fri, 08 Jan 2021 09:59:27 -0000 SGkgUmljaGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFy ZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTZW50OiBGcmlkYXksIEphbnVhcnkgOCwg MjAyMSA5OjQ1IEFNDQo+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0u Y29tPg0KPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IG5kIDxuZEBhcm0uY29tPjsgb29r QHVjdy5jeg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDYvOCB2OV1taWRkbGUtZW5kIHNscDogc3Vw cG9ydCBjb21wbGV4IEZNQSBhbmQNCj4gY29tcGxleCBGTUEgY29uanVnYXRlDQo+IA0KPiBPbiBN b24sIDI4IERlYyAyMDIwLCBUYW1hciBDaHJpc3RpbmEgd3JvdGU6DQo+IA0KPiA+IEhpIEFsbCwN Cj4gPg0KPiA+IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBGTUEgYW5kIEZNQSBjb25qdWdhdGVkIHRv IHRoZSBzbHAgcGF0dGVybiBtYXRjaGVyLg0KPiA+DQo+ID4gQm9vdHN0cmFwcGVkIFJlZ3Rlc3Rl ZCBvbiBhYXJjaDY0LW5vbmUtbGludXgtZ251LCB4ODZfNjQtcGMtbGludXgtZ251DQo+ID4gYW5k IG5vIGlzc3Vlcy4NCj4gPg0KPiA+IE9rIGZvciBtYXN0ZXI/DQo+ID4NCj4gPiBUaGFua3MsDQo+ ID4gVGFtYXINCj4gPg0KPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAJKiBpbnRlcm5hbC1m bi5kZWYgKENPTVBMRVhfRk1BLCBDT01QTEVYX0ZNQV9DT05KKTogTmV3Lg0KPiA+IAkqIG9wdGFi cy5kZWYgKGNtbGFfb3B0YWIsIGNtbGFfY29ual9vcHRhYik6IE5ldy4NCj4gPiAJKiBkb2MvbWQu dGV4aTogRG9jdW1lbnQgdGhlbS4NCj4gPiAJKiB0cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmMgKHZl Y3RfbWF0Y2hfY2FsbF9wLA0KPiA+IAljbGFzcyBjb21wbGV4X2ZtYV9wYXR0ZXJuLCB2ZWN0X3Ns cF9yZXNldF9wYXR0ZXJuLA0KPiA+IAljb21wbGV4X2ZtYV9wYXR0ZXJuOjptYXRjaGVzLCBjb21w bGV4X2ZtYV9wYXR0ZXJuOjpyZWNvZ25pemUsDQo+ID4gCWNvbXBsZXhfZm1hX3BhdHRlcm46OmJ1 aWxkKTogTmV3Lg0KPiA+DQo+ID4gLS0tIGlubGluZSBjb3B5IG9mIHBhdGNoIC0tDQo+ID4gZGlm ZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBiL2djYy9kb2MvbWQudGV4aSBpbmRleA0KPiA+DQo+ IGI4Y2M5MGUxYTc1ZTQwMmFiYmY4YThjZjJlZmVmYzFhMzMzZjhiM2EuLjZkNWE5OGM0OTQ2ZDNm ZjRjMmI4YWJlYTVjMg0KPiA5DQo+ID4gY2FhNjg2M2ZkM2Y3IDEwMDY0NA0KPiA+IC0tLSBhL2dj Yy9kb2MvbWQudGV4aQ0KPiA+ICsrKyBiL2djYy9kb2MvbWQudGV4aQ0KPiA+IEBAIC02MjAyLDYg KzYyMDIsNTEgQEAgVGhlIG9wZXJhdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdmVjdG9yDQo+ IG1vZGVzIEB2YXJ7bX0uDQo+ID4NCj4gPiAgVGhpcyBwYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIHRv IEBjb2Rle0ZBSUx9Lg0KPiA+DQo+ID4gK0BjaW5kZXggQGNvZGV7Y21sYUB2YXJ7bX00fSBpbnN0 cnVjdGlvbiBwYXR0ZXJuIEBpdGVtDQo+ID4gK0BzYW1we2NtbGFAdmFye219NH0gUGVyZm9ybSBh IHZlY3RvciBtdWx0aXBseSBhbmQgYWNjdW11bGF0ZSB0aGF0IGlzDQo+ID4gK3NlbWFudGljYWxs eSB0aGUgc2FtZSBhcyBhIG11bHRpcGx5IGFuZCBhY2N1bXVsYXRlIG9mIGNvbXBsZXgNCj4gPiAr bnVtYmVycy4NCj4gPiArDQo+ID4gK0BzbWFsbGV4YW1wbGUNCj4gPiArICBjb21wbGV4IFRZUEUg Y1tOXTsNCj4gPiArICBjb21wbGV4IFRZUEUgYVtOXTsNCj4gPiArICBjb21wbGV4IFRZUEUgYltO XTsNCj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkgKz0gMSkNCj4gPiArICAgIEB7DQo+ ID4gKyAgICAgIGNbaV0gKz0gYVtpXSAqIGJbaV07DQo+ID4gKyAgICBAfQ0KPiA+ICtAZW5kIHNt YWxsZXhhbXBsZQ0KPiA+ICsNCj4gPiArSW4gR0NDIGxhbmUgb3JkZXJpbmcgdGhlIHJlYWwgcGFy dCBvZiB0aGUgbnVtYmVyIG11c3QgYmUgaW4gdGhlIGV2ZW4NCj4gPiArbGFuZXMgd2l0aCB0aGUg aW1hZ2luYXJ5IHBhcnQgaW4gdGhlIG9kZCBsYW5lcy4NCj4gPiArDQo+ID4gK1RoZSBvcGVyYXRp b24gaXMgb25seSBzdXBwb3J0ZWQgZm9yIHZlY3RvciBtb2RlcyBAdmFye219Lg0KPiA+ICsNCj4g PiArVGhpcyBwYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIHRvIEBjb2Rle0ZBSUx9Lg0KPiA+ICsNCj4g PiArQGNpbmRleCBAY29kZXtjbWxhX2NvbmpAdmFye219NH0gaW5zdHJ1Y3Rpb24gcGF0dGVybiBA aXRlbQ0KPiA+ICtAc2FtcHtjbWxhX2NvbmpAdmFye219NH0gUGVyZm9ybSBhIHZlY3RvciBtdWx0 aXBseSBieSBjb25qdWdhdGUgYW5kDQo+ID4gK2FjY3VtdWxhdGUgdGhhdCBpcyBzZW1hbnRpY2Fs bHkgdGhlIHNhbWUgYXMgYSBtdWx0aXBseSBhbmQgYWNjdW11bGF0ZQ0KPiA+ICtvZiBjb21wbGV4 IG51bWJlcnMgd2hlcmUgdGhlIHNlY29uZCBtdWx0aXBseSBhcmd1bWVudHMgaXMgY29uanVnYXRl ZC4NCj4gPiArDQo+ID4gK0BzbWFsbGV4YW1wbGUNCj4gPiArICBjb21wbGV4IFRZUEUgY1tOXTsN Cj4gPiArICBjb21wbGV4IFRZUEUgYVtOXTsNCj4gPiArICBjb21wbGV4IFRZUEUgYltOXTsNCj4g PiArICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkgKz0gMSkNCj4gPiArICAgIEB7DQo+ID4gKyAg ICAgIGNbaV0gKz0gYVtpXSAqIGNvbmogKGJbaV0pOw0KPiA+ICsgICAgQH0NCj4gPiArQGVuZCBz bWFsbGV4YW1wbGUNCj4gPiArDQo+ID4gK0luIEdDQyBsYW5lIG9yZGVyaW5nIHRoZSByZWFsIHBh cnQgb2YgdGhlIG51bWJlciBtdXN0IGJlIGluIHRoZSBldmVuDQo+ID4gK2xhbmVzIHdpdGggdGhl IGltYWdpbmFyeSBwYXJ0IGluIHRoZSBvZGQgbGFuZXMuDQo+ID4gKw0KPiA+ICtUaGUgb3BlcmF0 aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB2ZWN0b3IgbW9kZXMgQHZhcnttfS4NCj4gPiArDQo+ ID4gK1RoaXMgcGF0dGVybiBpcyBub3QgYWxsb3dlZCB0byBAY29kZXtGQUlMfS4NCj4gPiArDQo+ ID4gIEBjaW5kZXggQGNvZGV7Y211bEB2YXJ7bX00fSBpbnN0cnVjdGlvbiBwYXR0ZXJuICBAaXRl bQ0KPiA+IEBzYW1we2NtdWxAdmFye219NH0gIFBlcmZvcm0gYSB2ZWN0b3IgbXVsdGlwbHkgdGhh dCBpcyBzZW1hbnRpY2FsbHkNCj4gPiB0aGUgc2FtZSBhcyBtdWx0aXBseSBvZiBkaWZmIC0tZ2l0 IGEvZ2NjL2ludGVybmFsLWZuLmRlZg0KPiA+IGIvZ2NjL2ludGVybmFsLWZuLmRlZiBpbmRleA0K PiA+DQo+IDVhMGJiZTNmZTVkZWU1OTFkNTQxMzBlNjBmNjk5NmIyODE2NGFlMzguLjMwNTQ1MGUw MjZkNGI5NGFiNjJjZWI5Yw0KPiBhNzE5DQo+ID4gZWM1NTcwZmY0M2ViIDEwMDY0NA0KPiA+IC0t LSBhL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ ID4gQEAgLTI4OCw2ICsyODgsOCBAQCBERUZfSU5URVJOQUxfRkxUX0ZOIChMREVYUCwgRUNGX0NP TlNULCBsZGV4cCwNCj4gPiBiaW5hcnkpDQo+ID4NCj4gPiAgLyogVGVybmFyeSBtYXRoIGZ1bmN0 aW9ucy4gICovDQo+ID4gIERFRl9JTlRFUk5BTF9GTFRfRkxPQVROX0ZOIChGTUEsIEVDRl9DT05T VCwgZm1hLCB0ZXJuYXJ5KQ0KPiA+ICtERUZfSU5URVJOQUxfT1BUQUJfRk4gKENPTVBMRVhfRk1B LCBFQ0ZfQ09OU1QsIGNtbGEsIHRlcm5hcnkpDQo+ID4gK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAo Q09NUExFWF9GTUFfQ09OSiwgRUNGX0NPTlNULA0KPiBjbWxhX2NvbmosDQo+ID4gK3Rlcm5hcnkp DQo+ID4NCj4gPiAgLyogVW5hcnkgaW50ZWdlciBvcHMuICAqLw0KPiA+ICBERUZfSU5URVJOQUxf SU5UX0ZOIChDTFJTQiwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csIGNscnNiLA0KPiB1bmFyeSkN Cj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZiBpbmRleA0K PiA+DQo+IGU4MjM5NmJhZTExMTdjNmRlOTEzMDQ3NjFhNTYwYjdmYmNiNjljZTEuLjhlMjc1OGQ2 ODVlZDg1ZTAyZGYxMGRhYw0KPiA1NzFlDQo+ID4gYjQwZDQ1YTI5NGVkIDEwMDY0NA0KPiA+IC0t LSBhL2djYy9vcHRhYnMuZGVmDQo+ID4gKysrIGIvZ2NjL29wdGFicy5kZWYNCj4gPiBAQCAtMjk0 LDYgKzI5NCw4IEBAIE9QVEFCX0QgKGNhZGQ5MF9vcHRhYiwgImNhZGQ5MCRhMyIpICBPUFRBQl9E DQo+ID4gKGNhZGQyNzBfb3B0YWIsICJjYWRkMjcwJGEzIikgIE9QVEFCX0QgKGNtdWxfb3B0YWIs ICJjbXVsJGEzIikNCj4gPiBPUFRBQl9EIChjbXVsX2Nvbmpfb3B0YWIsICJjbXVsX2NvbmokYTMi KQ0KPiA+ICtPUFRBQl9EIChjbWxhX29wdGFiLCAiY21sYSRhNCIpDQo+ID4gK09QVEFCX0QgKGNt bGFfY29ual9vcHRhYiwgImNtbGFfY29uaiRhNCIpDQo+ID4gIE9QVEFCX0QgKGNvc19vcHRhYiwg ImNvcyRhMiIpDQo+ID4gIE9QVEFCX0QgKGNvc2hfb3B0YWIsICJjb3NoJGEyIikNCj4gPiAgT1BU QUJfRCAoZXhwMTBfb3B0YWIsICJleHAxMCRhMiIpDQo+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVl LXZlY3Qtc2xwLXBhdHRlcm5zLmMNCj4gPiBiL2djYy90cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmMg aW5kZXgNCj4gPg0KPiA4MjcyMWFjYmFiOGNmODFjNGQ2Zjk5NTRjOThmYjkxM2E3YmI2MjgyLi4z NjI1YTgwYzA4ZTNkNzBmZDM2MmZjNTJlMQ0KPiA3ZQ0KPiA+IDY1YjNiMmM3ZGE4MyAxMDA2NDQN Cj4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXNscC1wYXR0ZXJucy5jDQo+ID4gKysrIGIvZ2NjL3Ry ZWUtdmVjdC1zbHAtcGF0dGVybnMuYw0KPiA+IEBAIC0zMjUsNiArMzI1LDI0IEBAIHZlY3RfbWF0 Y2hfZXhwcmVzc2lvbl9wIChzbHBfdHJlZSBub2RlLA0KPiB0cmVlX2NvZGUgY29kZSkNCj4gPiAg ICByZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0KPiA+DQo+ID4gKy8qIENoZWNrcyB0byBzZWUgaWYgdGhl IGV4cHJlc3Npb24gcmVwcmVzZW50ZWQgYnkgTk9ERSBpcyBhIGNhbGwgdG8gdGhlDQo+IGludGVy bmFsDQo+ID4gKyAgIGZ1bmN0aW9uIEZOLiAgKi8NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUg Ym9vbA0KPiA+ICt2ZWN0X21hdGNoX2NhbGxfcCAoc2xwX3RyZWUgbm9kZSwgaW50ZXJuYWxfZm4g Zm4pIHsNCj4gPiArICBpZiAoIW5vZGUNCj4gPiArICAgICAgfHwgIVNMUF9UUkVFX1JFUFJFU0VO VEFUSVZFIChub2RlKSkNCj4gPiArICAgIHJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKyAgZ2lt cGxlKiBleHByID0gU1RNVF9WSU5GT19TVE1UIChTTFBfVFJFRV9SRVBSRVNFTlRBVElWRQ0KPiAo bm9kZSkpOw0KPiA+ICsgaWYgKCFleHByDQo+ID4gKyAgICAgIHx8ICFnaW1wbGVfY2FsbF9pbnRl cm5hbF9wIChleHByLCBmbikpDQo+ID4gKyAgICByZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICsg ICByZXR1cm4gdHJ1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgLyogQ2hlY2sgaWYgdGhlIGdpdmVu IGxhbmUgcGVybXV0ZSBpbiBQRVJNVVRFUyBtYXRjaGVzIGFuIGFsdGVybmF0aW5nDQo+IHNlcXVl bmNlDQo+ID4gICAgIG9mIHtldmVuIG9kZCBldmVuIG9kZCAuLi59LiAgVGhpcyB0byBhY2NvdW50 IGZvciB1bnJvbGxlZCBsb29wcy4gIEZ1cnRoZXINCj4gPiAgICAgbW9kZSB0aGVyZSByZXN1bHRp bmcgcGVybXV0ZSBtdXN0IGJlIGxpbmVhci4gICAqLw0KPiA+IEBAIC0xMDgxLDYgKzEwOTksMTYx IEBAIGNvbXBsZXhfbXVsX3BhdHRlcm46OmJ1aWxkICh2ZWNfaW5mbyAqdmluZm8pDQo+ID4gICAg Y29tcGxleF9wYXR0ZXJuOjpidWlsZCAodmluZm8pOw0KPiA+ICB9DQo+ID4NCj4gPg0KPiArLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K PiAqKioqKioqKioqKg0KPiA+ICsqKioqKioqKioqKg0KPiA+ICsgKiBjb21wbGV4X2ZtYV9wYXR0 ZXJuIGNsYXNzDQo+ID4gKw0KPiA+DQo+ICsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqDQo+ID4gKyoqKioqKioq Ki8NCj4gPiArDQo+ID4gK2NsYXNzIGNvbXBsZXhfZm1hX3BhdHRlcm4gOiBwdWJsaWMgY29tcGxl eF9wYXR0ZXJuIHsNCj4gPiArICBwcm90ZWN0ZWQ6DQo+ID4gKyAgICBjb21wbGV4X2ZtYV9wYXR0 ZXJuIChzbHBfdHJlZSAqbm9kZSwgdmVjPHNscF90cmVlPiAqbV9vcHMsDQo+IGludGVybmFsX2Zu IGlmbikNCj4gPiArICAgICAgOiBjb21wbGV4X3BhdHRlcm4gKG5vZGUsIG1fb3BzLCBpZm4pDQo+ ID4gKyAgICB7DQo+ID4gKyAgICAgIHRoaXMtPm1fbnVtX2FyZ3MgPSAzOw0KPiA+ICsgICAgfQ0K PiA+ICsNCj4gPiArICBwdWJsaWM6DQo+ID4gKyAgICB2b2lkIGJ1aWxkICh2ZWNfaW5mbyAqKTsN Cj4gPiArICAgIHN0YXRpYyBpbnRlcm5hbF9mbg0KPiA+ICsgICAgbWF0Y2hlcyAoY29tcGxleF9v cGVyYXRpb25fdCBvcCwgc2xwX3RyZWVfdG9fbG9hZF9wZXJtX21hcF90ICosDQo+IHNscF90cmVl ICosDQo+ID4gKwkgICAgIHZlYzxzbHBfdHJlZT4gKik7DQo+ID4gKw0KPiA+ICsgICAgc3RhdGlj IHZlY3RfcGF0dGVybioNCj4gPiArICAgIHJlY29nbml6ZSAoc2xwX3RyZWVfdG9fbG9hZF9wZXJt X21hcF90ICosIHNscF90cmVlICopOw0KPiA+ICsNCj4gPiArICAgIHN0YXRpYyB2ZWN0X3BhdHRl cm4qDQo+ID4gKyAgICBta0luc3RhbmNlIChzbHBfdHJlZSAqbm9kZSwgdmVjPHNscF90cmVlPiAq bV9vcHMsIGludGVybmFsX2ZuIGlmbikNCj4gPiArICAgIHsNCj4gPiArICAgICAgcmV0dXJuIG5l dyBjb21wbGV4X2ZtYV9wYXR0ZXJuIChub2RlLCBtX29wcywgaWZuKTsNCj4gPiArICAgIH0NCj4g PiArfTsNCj4gPiArDQo+ID4gKy8qIEhlbHBlciBmdW5jdGlvbiB0byAicmVzZXQiIGEgcHJldmlv dXNseSBtYXRjaGVkIG5vZGUgYW5kIHVuZG8gdGhlDQo+IGNoYW5nZXMNCj4gPiArICAgbWFkZSBl bm91Z2ggc28gdGhhdCB0aGUgbm9kZSBpcyB0cmVhdGVkIGFzIGFuIGlycmVsZXZhbnQgbm9kZS4g ICovDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gPiArdmVjdF9zbHBfcmVzZXRf cGF0dGVybiAoc2xwX3RyZWUgbm9kZSkgew0KPiA+ICsgIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZv ID0gdmVjdF9vcmlnX3N0bXQgKFNMUF9UUkVFX1JFUFJFU0VOVEFUSVZFDQo+ID4gKyhub2RlKSk7 DQo+ID4gKyAgU1RNVF9WSU5GT19JTl9QQVRURVJOX1AgKHN0bXRfaW5mbykgPSBmYWxzZTsNCj4g PiArICBTVE1UX1NMUF9UWVBFIChzdG10X2luZm8pID0gcHVyZV9zbHA7DQo+ID4gKyAgU0xQX1RS RUVfUkVQUkVTRU5UQVRJVkUgKG5vZGUpID0gc3RtdF9pbmZvOyB9DQo+ID4gKw0KPiA+ICsvKiBQ YXR0ZXJuIG1hdGNoZXIgZm9yIHRyeWluZyB0byBtYXRjaCBjb21wbGV4IG11bHRpcGx5IGFuZCBh Y2N1bXVsYXRlDQo+ID4gKyAgIGFuZCBtdWx0aXBseSBhbmQgc3VidHJhY3QgcGF0dGVybnMgaW4g U0xQIHRyZWUuDQo+ID4gKyAgIElmIHRoZSBvcGVyYXRpb24gbWF0Y2hlcyB0aGVuIElGTiBpcyBz ZXQgdG8gdGhlIG9wZXJhdGlvbiBpdCBtYXRjaGVkIGFuZA0KPiA+ICsgICB0aGUgYXJndW1lbnRz IHRvIHRoZSB0d28gcmVwbGFjZW1lbnQgc3RhdGVtZW50cyBhcmUgcHV0IGluIG1fb3BzLg0KPiA+ ICsNCj4gPiArICAgSWYgbm8gbWF0Y2ggaXMgZm91bmQgdGhlbiBJRk4gaXMgc2V0IHRvIElGTl9M QVNUIGFuZCBtX29wcyBpcyB1bmNoYW5nZWQuDQo+ID4gKw0KPiA+ICsgICBUaGlzIGZ1bmN0aW9u IG1hdGNoZXMgdGhlIHBhdHRlcm5zIHNoYXBlZCBhczoNCj4gPiArDQo+ID4gKyAgIGRvdWJsZSBh eCA9IChiW2krMV0gKiBhW2ldKSArIChiW2ldICogYVtpXSk7DQo+ID4gKyAgIGRvdWJsZSBieCA9 IChhW2krMV0gKiBiW2ldKSAtIChhW2krMV0gKiBiW2krMV0pOw0KPiA+ICsNCj4gPiArICAgY1tp XSA9IGNbaV0gLSBheDsNCj4gPiArICAgY1tpKzFdID0gY1tpKzFdICsgYng7DQo+ID4gKw0KPiA+ ICsgICBJZiBhIG1hdGNoIG9jY3VycmVkIHRoZW4gVFJVRSBpcyByZXR1cm5lZCwgZWxzZSBGQUxT RS4gIFRoZSBtYXRjaCBpcw0KPiA+ICsgICBwZXJmb3JtZWQgYWZ0ZXIgQ09NUExFWF9NVUwgd2hp Y2ggd291bGQgaGF2ZSBkb25lIHRoZSBtYWpvcml0eSBvZg0KPiB0aGUgd29yay4NCj4gPiArICAg VGhpcyBmdW5jdGlvbiBtZXJlbHkgbWF0Y2hlcyBhbiBBREQgd2l0aCBhIENPTVBMRVhfTVVMIElG Ti4gIFRoZQ0KPiBpbml0aWFsDQo+ID4gKyAgIG1hdGNoIGlzIGV4cGVjdGVkIHRvIGJlIGluIE9Q MSBhbmQgdGhlIGluaXRpYWwgbWF0Y2ggb3BlcmFuZHMgaW4NCj4gPiArIGFyZ3MwLiAgKi8NCj4g PiArDQo+ID4gK2ludGVybmFsX2ZuDQo+ID4gK2NvbXBsZXhfZm1hX3BhdHRlcm46Om1hdGNoZXMg KGNvbXBsZXhfb3BlcmF0aW9uX3Qgb3AsDQo+ID4gKwkJCSAgICAgIHNscF90cmVlX3RvX2xvYWRf cGVybV9tYXBfdCAqIC8qIHBlcm1fY2FjaGUNCj4gKi8sDQo+ID4gKwkJCSAgICAgIHNscF90cmVl ICpyZWZfbm9kZSwgdmVjPHNscF90cmVlPiAqb3BzKSB7DQo+ID4gKyAgaW50ZXJuYWxfZm4gaWZu ID0gSUZOX0xBU1Q7DQo+ID4gKw0KPiA+ICsgIC8qIEZpbmQgdGhlIHR3byBjb21wb25lbnRzLiAg V2UgbWF0Y2ggQ29tcGxleCBNVUwgZmlyc3Qgd2hpY2gNCj4gcmVkdWNlcyB0aGUNCj4gPiArICAg ICBhbW91bnQgb2Ygd29yayB0aGlzIHBhdHRlcm4gaGFzIHRvIGRvLiAgQWZ0ZXIgdGhhdCB3ZSBq dXN0IG1hdGNoIHRoZQ0KPiA+ICsgICAgIGhlYWQgbm9kZSBhbmQgd2UncmUgZG9uZS46DQo+ID4g Kw0KPiA+ICsgICAgICogRk1BOiArICsuDQo+ID4gKw0KPiA+ICsgICAgIFdlIG5lZWQgdG8gaWdu b3JlIHRoZSB0d29fb3BlcmFuZHMgbm9kZXMgdGhhdCBtYXkgYWxzbyBtYXRjaC4NCj4gPiArICAg ICBGb3IgdGhhdCB3ZSBjYW4gY2hlY2sgaWYgdGhleSBoYXZlIGFueSBzY2FsYXIgc3RhdGVtZW50 cyBhbmQgYWxzbw0KPiA+ICsgICAgIGNoZWNrIHRoYXQgaXQncyBub3QgYSBwZXJtdXRlIG5vZGUg YXMgd2UncmUgbG9va2luZyBmb3IgYSBub3JtYWwNCj4gPiArICAgICBQTFVTX0VYUFIgb3BlcmF0 aW9uLiAgKi8NCj4gPiArICBpZiAob3AgIT0gQ01QTFhfTk9ORSkNCj4gPiArICAgIHJldHVybiBJ Rk5fTEFTVDsNCj4gPiArDQo+ID4gKyAgLyogRmluZCB0aGUgdHdvIGNvbXBvbmVudHMuICBXZSBt YXRjaCBDb21wbGV4IE1VTCBmaXJzdCB3aGljaA0KPiByZWR1Y2VzIHRoZQ0KPiA+ICsgICAgIGFt b3VudCBvZiB3b3JrIHRoaXMgcGF0dGVybiBoYXMgdG8gZG8uICBBZnRlciB0aGF0IHdlIGp1c3Qg bWF0Y2ggdGhlDQo+ID4gKyAgICAgaGVhZCBub2RlIGFuZCB3ZSdyZSBkb25lLjoNCj4gPiArDQo+ ID4gKyAgICogRk1BOiArICsgb24gYSBub24tdHdvX29wZXJhbmRzIG5vZGUuICAqLw0KPiA+ICsg IHNscF90cmVlIHZub2RlID0gKnJlZl9ub2RlOw0KPiA+ICsgIGlmIChTTFBfVFJFRV9MQU5FX1BF Uk1VVEFUSU9OICh2bm9kZSkuZXhpc3RzICgpDQo+ID4gKyAgICAgIC8qIE5lZWQgdG8gZXhjbHVk ZSB0aGUgcGx1cyB0d28tb3BlcmFuZHMgbm9kZS4gIFRoZXNlIGFyZSBub3QNCj4gbWFya2VkDQo+ ID4gKwkgc28gd2UgaGF2ZSB0byBpbmZlciBpdCBiYXNlZCBvbiBjb25kaXRpb25zLiAgKi8NCj4g PiArICAgICAgfHwgIVNMUF9UUkVFX1NDQUxBUl9TVE1UUyAodm5vZGUpLmV4aXN0cyAoKQ0KPiAN Cj4gYXMgc2FpZCBlYXJsaWVyIHdlIHNob3VsZG4ndCB0ZXN0IHRoaXMuICBUaGUgZXhpc3Rpbmcg bGFuZSBwZXJtdXRlIHNob3VsZA0KPiBhbHJlYWR5IGNvdmVyIHRoaXMgLSB3aGVyZSB0aGUgdGVz dCB3b3VsZCBiZXR0ZXIgYmUNCj4gDQo+ICBTTFBfVFJFRV9DT0RFICh2bm9kZSkgPT0gVkVDX1BF Uk1fRVhQUg0KPiANCj4gPiArICAgICAgfHwgIXZlY3RfbWF0Y2hfZXhwcmVzc2lvbl9wICh2bm9k ZSwgUExVU19FWFBSKSkNCj4gDQo+IEJ1dCB0aGVuIGl0IHNob3VsZG4ndCBtYXRjaCB0aGlzICh0 aGUgdmVjdF9tYXRjaF9leHByZXNzaW9uX3Agc2hvdWxkIG9ubHkNCj4gZXZlciBtYXRjaCBTTFBf VFJFRV9DT0RFICh2bm9kZSkgIT0gVkVDX1BFUk1fRVhQUikgYW55d2F5Lg0KPiANCg0KSG93IHNv PyBBbiBGTUEgZG9lc24ndCBoYXZlIGEgVFdPX09QRVJBTkRTIG5vZGUgYXMgdGhlIHJvb3Qgc2lu Y2UgdGhlIG9wZXJhdGlvbnMNCkFyZSBhbHdheXMgdHdvIFBMVVMgb3BlcmF0aW9ucy4NCg0KVGhl IGNvcnJlc3BvbmRpbmcgdHJlZSBpcw0KDQpub3RlOiAgIFNMUCBzaXplIDEwIHZzLiBsaW1pdCAy NC4NCm5vdGU6ICAgRmluYWwgU0xQIHRyZWUgZm9yIGluc3RhbmNlIDB4NDhmNjhkMDoNCm5vdGU6 ICAgbm9kZSAweDQ4MDk4NzAgKG1heF9udW5pdHM9NCwgcmVmY250PTIpDQpub3RlOiAgIG9wIHRl bXBsYXRlOiBSRUFMUEFSVF9FWFBSIDwqXzM+ID0gXzMxOw0Kbm90ZTogICAgIHN0bXQgMCBSRUFM UEFSVF9FWFBSIDwqXzM+ID0gXzMxOw0Kbm90ZTogICAgIHN0bXQgMSBJTUFHUEFSVF9FWFBSIDwq XzM+ID0gXzMyOw0Kbm90ZTogICAgIGNoaWxkcmVuIDB4NDgwOThmOA0Kbm90ZTogICBub2RlIDB4 NDgwOThmOCAobWF4X251bml0cz00LCByZWZjbnQ9MikNCm5vdGU6ICAgb3AgdGVtcGxhdGU6IF8z MSA9IF8xMiArIF8yOTsNCm5vdGU6ICAgICBzdG10IDAgXzMxID0gXzEyICsgXzI5Ow0Kbm90ZTog ICAgIHN0bXQgMSBfMzIgPSBfMTEgKyBfMzA7DQpub3RlOiAgICAgY2hpbGRyZW4gMHg0ODA5OTgw IDB4NDgwOWEwOA0Kbm90ZTogICBub2RlIDB4NDgwOTk4MCAobWF4X251bml0cz00LCByZWZjbnQ9 MikNCm5vdGU6ICAgb3AgdGVtcGxhdGU6IF8xMiA9IFJFQUxQQVJUX0VYUFIgPCpfMz47DQpub3Rl OiAgICAgc3RtdCAwIF8xMiA9IFJFQUxQQVJUX0VYUFIgPCpfMz47DQpub3RlOiAgICAgc3RtdCAx IF8xMSA9IElNQUdQQVJUX0VYUFIgPCpfMz47DQpub3RlOiAgICAgbG9hZCBwZXJtdXRhdGlvbiB7 IDAgMSB9DQpub3RlOiAgIG5vZGUgMHg0ODA5YTA4IChtYXhfbnVuaXRzPTQsIHJlZmNudD0yKQ0K bm90ZTogICBvcDogVkVDX1BFUk1fRVhQUg0Kbm90ZTogICAgIHN0bXQgMCBfMjkgPSBfMjUgLSBf MjY7DQpub3RlOiAgICAgc3RtdCAxIF8zMCA9IF8yNyArIF8yODsNCm5vdGU6ICAgICBsYW5lIHBl cm11dGF0aW9uIHsgMFswXSAxWzFdIH0NCm5vdGU6ICAgICBjaGlsZHJlbiAweDQ4MDlkYzAgMHg0 ODA5ZTQ4DQpub3RlOiAgIG5vZGUgMHg0ODA5ZGMwIChtYXhfbnVuaXRzPTEsIHJlZmNudD0xKQ0K bm90ZTogICBvcCB0ZW1wbGF0ZTogXzI5ID0gXzI1IC0gXzI2Ow0Kbm90ZTogICAgIHsgfQ0Kbm90 ZTogICAgIGNoaWxkcmVuIDB4NDgwOWE5MCAweDQ4MDljMjgNCm5vdGU6ICAgbm9kZSAweDQ4MDlh OTAgKG1heF9udW5pdHM9NCwgcmVmY250PTMpDQpub3RlOiAgIG9wIHRlbXBsYXRlOiBfMjUgPSBf MTkgKiBfMjI7DQpub3RlOiAgICAgc3RtdCAwIF8yNSA9IF8xOSAqIF8yMjsNCm5vdGU6ICAgICBz dG10IDEgXzI3ID0gXzIwICogXzIyOw0Kbm90ZTogICAgIGNoaWxkcmVuIDB4NDgwOWIxOCAweDQ4 MDliYTANCm5vdGU6ICAgbm9kZSAweDQ4MDliMTggKG1heF9udW5pdHM9NCwgcmVmY250PTIpDQpu b3RlOiAgIG9wIHRlbXBsYXRlOiBfMTkgPSBSRUFMUEFSVF9FWFBSIDwqXzc+Ow0Kbm90ZTogICAg IHN0bXQgMCBfMTkgPSBSRUFMUEFSVF9FWFBSIDwqXzc+Ow0Kbm90ZTogICAgIHN0bXQgMSBfMjAg PSBJTUFHUEFSVF9FWFBSIDwqXzc+Ow0Kbm90ZTogICAgIGxvYWQgcGVybXV0YXRpb24geyAwIDEg fQ0Kbm90ZTogICBub2RlIDB4NDgwOWJhMCAobWF4X251bml0cz00LCByZWZjbnQ9MikNCm5vdGU6 ICAgb3AgdGVtcGxhdGU6IF8yMiA9IFJFQUxQQVJUX0VYUFIgPCpfNT47DQpub3RlOiAgICAgc3Rt dCAwIF8yMiA9IFJFQUxQQVJUX0VYUFIgPCpfNT47DQpub3RlOiAgICAgc3RtdCAxIF8yMiA9IFJF QUxQQVJUX0VYUFIgPCpfNT47DQpub3RlOiAgICAgbG9hZCBwZXJtdXRhdGlvbiB7IDAgMCB9DQpu b3RlOiAgIG5vZGUgMHg0ODA5YzI4IChtYXhfbnVuaXRzPTQsIHJlZmNudD0zKQ0Kbm90ZTogICBv cCB0ZW1wbGF0ZTogXzI2ID0gXzIwICogXzIxOw0Kbm90ZTogICAgIHN0bXQgMCBfMjYgPSBfMjAg KiBfMjE7DQpub3RlOiAgICAgc3RtdCAxIF8yOCA9IF8xOSAqIF8yMTsNCm5vdGU6ICAgICBjaGls ZHJlbiAweDQ4MDljYjAgMHg0ODA5ZDM4DQpub3RlOiAgIG5vZGUgMHg0ODA5Y2IwIChtYXhfbnVu aXRzPTQsIHJlZmNudD0yKQ0Kbm90ZTogICBvcCB0ZW1wbGF0ZTogXzIwID0gSU1BR1BBUlRfRVhQ UiA8Kl83PjsNCm5vdGU6ICAgICBzdG10IDAgXzIwID0gSU1BR1BBUlRfRVhQUiA8Kl83PjsNCm5v dGU6ICAgICBzdG10IDEgXzE5ID0gUkVBTFBBUlRfRVhQUiA8Kl83PjsNCm5vdGU6ICAgICBsb2Fk IHBlcm11dGF0aW9uIHsgMSAwIH0NCm5vdGU6ICAgbm9kZSAweDQ4MDlkMzggKG1heF9udW5pdHM9 NCwgcmVmY250PTIpDQpub3RlOiAgIG9wIHRlbXBsYXRlOiBfMjEgPSBJTUFHUEFSVF9FWFBSIDwq XzU+Ow0Kbm90ZTogICAgIHN0bXQgMCBfMjEgPSBJTUFHUEFSVF9FWFBSIDwqXzU+Ow0Kbm90ZTog ICAgIHN0bXQgMSBfMjEgPSBJTUFHUEFSVF9FWFBSIDwqXzU+Ow0Kbm90ZTogICAgIGxvYWQgcGVy bXV0YXRpb24geyAxIDEgfQ0Kbm90ZTogICBub2RlIDB4NDgwOWU0OCAobWF4X251bml0cz0xLCBy ZWZjbnQ9MSkNCm5vdGU6ICAgb3AgdGVtcGxhdGU6IF8zMCA9IF8yNyArIF8yODsNCm5vdGU6ICAg ICB7IH0NCm5vdGU6ICAgICBjaGlsZHJlbiAweDQ4MDlhOTAgMHg0ODA5YzI4DQoNCmFuZCBhZnRl ciBtYXRjaGluZyB0aGUgTVVMIGFsbCB5b3UgaGF2ZSBhcmUgdGhlIEFERCBub2RlIGdvaW5nIGlu dG8gYSBDT01QTEVYX01VTCBub2RlLg0KDQo+ID4gKyAgICByZXR1cm4gSUZOX0xBU1Q7DQo+ID4g Kw0KPiA+ICsgIHNscF90cmVlIG5vZGUgPSBTTFBfVFJFRV9DSElMRFJFTiAodm5vZGUpWzFdOw0K PiA+ICsNCj4gPiArICBpZiAodmVjdF9tYXRjaF9jYWxsX3AgKG5vZGUsIElGTl9DT01QTEVYX01V TCkpDQo+ID4gKyAgICBpZm4gPSBJRk5fQ09NUExFWF9GTUE7DQo+ID4gKyAgZWxzZSBpZiAodmVj dF9tYXRjaF9jYWxsX3AgKG5vZGUsIElGTl9DT01QTEVYX01VTF9DT05KKSkNCj4gPiArICAgIGlm biA9IElGTl9DT01QTEVYX0ZNQV9DT05KOw0KPiA+ICsgIGVsc2UNCj4gPiArICAgIHJldHVybiBJ Rk5fTEFTVDsNCj4gPiArDQo+ID4gKyAgaWYgKCF2ZWN0X3BhdHRlcm5fdmFsaWRhdGVfb3B0YWIg KGlmbiwgdm5vZGUpKQ0KPiA+ICsgICAgcmV0dXJuIElGTl9MQVNUOw0KPiA+ICsNCj4gPiArICB2 ZWN0X3NscF9yZXNldF9wYXR0ZXJuIChub2RlKTsNCj4gDQo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB0 aGlzIC4uLiBpdCBkZXNlcnZlcyBhIGNvbW1lbnQgYXQgbGVhc3QuDQoNClRoZSBwcmV2aW91cyBw YXNzIGRldGVjdGluZyBDT01QTEVYX01VTCB3b3VsZCBoYXZlIG1hcmtlZCB0aGUNCkluc3RydWN0 aW9ucyBhcyBiZWluZyBpbnNpZGUgb2YgYSBNVUwgcGF0dGVybi4gIFRoZXNlIG5lZWQgdG8gYmUg dW5tYXJrZWQNCkFzIGJlaW5nIHBhcnQgb2YgdGhlIENPTVBMRVhfTVVMIGFuZCBpbnN0ZWFkIGJl IG1hcmtlZCBhcyBDT01QTEVYX0ZNQS4NCg0KPiBIYXZpbmcgbm8gdGVzdGNhc2VzIHdpdGggdGhp cyBwYXRjaCBtYWtlcyBpdCBpbXBvc3NpYmxlIGZvciBtZSB0byBkaWcgaW4NCj4gbXlzZWxmIDov DQoNClNvcnJ5LCB0aGUgdGVzdHMgd291bGQgaGF2ZSBtYWRlIHRoZSBmaWxlIHRvbyBiaWcgYWdh aW4uLiBUaGUgcHJldmlvdXMgdGVzdCBmb3IgY29tcGxleCBhZGQNCkFkZGVkIGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvY29tcGxleC9jb21wbGV4LW9wZXJhdGlvbnMuYyB3aGljaCBpcyBhbiBv dmVyYXJjaGluZyB0ZXN0DQpUZXN0aW5nIGV2ZXJ5dGhpbmcgaW4gb25lIGdvLg0KDQpUaGUgaW5k aXZpZHVhbCB0ZXN0cyBhcmUgc3BsaXQgb2ZmIGZyb20gdGhhdCBsYXJnZSB0ZXN0Lg0KDQo+IA0K PiBPdGhlcndpc2UgbG9va3MgT0suDQo+IA0KPiBUaGFua3MsDQo+IFJpY2hhcmQuDQo+IA0KPiA+ ICsgIG9wcy0+dHJ1bmNhdGUgKDApOw0KPiA+ICsgIG9wcy0+Y3JlYXRlICgzKTsNCj4gPiArDQo+ ID4gKyAgaWYgKGlmbiA9PSBJRk5fQ09NUExFWF9GTUEpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAg IG9wcy0+cXVpY2tfcHVzaCAoU0xQX1RSRUVfQ0hJTERSRU4gKHZub2RlKVswXSk7DQo+ID4gKyAg ICAgIG9wcy0+cXVpY2tfcHVzaCAoU0xQX1RSRUVfQ0hJTERSRU4gKG5vZGUpWzFdKTsNCj4gPiAr ICAgICAgb3BzLT5xdWlja19wdXNoIChTTFBfVFJFRV9DSElMRFJFTiAobm9kZSlbMF0pOw0KPiA+ ICsgICAgfQ0KPiA+ICsgIGVsc2UNCj4gPiArICAgIHsNCj4gPiArICAgICAgb3BzLT5xdWlja19w dXNoIChTTFBfVFJFRV9DSElMRFJFTiAodm5vZGUpWzBdKTsNCj4gPiArICAgICAgb3BzLT5xdWlj a19wdXNoIChTTFBfVFJFRV9DSElMRFJFTiAobm9kZSlbMF0pOw0KPiA+ICsgICAgICBvcHMtPnF1 aWNrX3B1c2ggKFNMUF9UUkVFX0NISUxEUkVOIChub2RlKVsxXSk7DQo+ID4gKyAgICB9DQo+ID4g Kw0KPiA+ICsgIHJldHVybiBpZm47DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEF0dGVtcHQgdG8g cmVjb2duaXplIGEgY29tcGxleCBtdWwgcGF0dGVybi4gICovDQo+ID4gKw0KPiA+ICt2ZWN0X3Bh dHRlcm4qDQo+ID4gK2NvbXBsZXhfZm1hX3BhdHRlcm46OnJlY29nbml6ZSAoc2xwX3RyZWVfdG9f bG9hZF9wZXJtX21hcF90DQo+ICpwZXJtX2NhY2hlLA0KPiA+ICsJCQkJc2xwX3RyZWUgKm5vZGUp DQo+ID4gK3sNCj4gPiArICBhdXRvX3ZlYzxzbHBfdHJlZT4gb3BzOw0KPiA+ICsgIGNvbXBsZXhf b3BlcmF0aW9uX3Qgb3ANCj4gPiArICAgID0gdmVjdF9kZXRlY3RfcGFpcl9vcCAoKm5vZGUsIHRy dWUsICZvcHMpOw0KPiA+ICsgIGludGVybmFsX2ZuIGlmbg0KPiA+ICsgICAgPSBjb21wbGV4X2Zt YV9wYXR0ZXJuOjptYXRjaGVzIChvcCwgcGVybV9jYWNoZSwgbm9kZSwgJm9wcyk7DQo+ID4gKyAg aWYgKGlmbiA9PSBJRk5fTEFTVCkNCj4gPiArICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiAr ICByZXR1cm4gbmV3IGNvbXBsZXhfZm1hX3BhdHRlcm4gKG5vZGUsICZvcHMsIGlmbik7IH0NCj4g PiArDQo+ID4gKy8qIFBlcmZvcm0gYSByZXBsYWNlbWVudCBvZiB0aGUgZGV0ZWN0ZWQgY29tcGxl eCBtdWwgcGF0dGVybiB3aXRoIHRoZQ0KPiBuZXcNCj4gPiArICAgaW5zdHJ1Y3Rpb24gc2VxdWVu Y2VzLiAgKi8NCj4gPiArDQo+ID4gK3ZvaWQNCj4gPiArY29tcGxleF9mbWFfcGF0dGVybjo6YnVp bGQgKHZlY19pbmZvICp2aW5mbykgew0KPiA+ICsgIFNMUF9UUkVFX0NISUxEUkVOICgqdGhpcy0+ bV9ub2RlKS50cnVuY2F0ZSAoMCk7DQo+ID4gKyAgU0xQX1RSRUVfQ0hJTERSRU4gKCp0aGlzLT5t X25vZGUpLnNhZmVfc3BsaWNlICh0aGlzLT5tX29wcyk7DQo+ID4gKw0KPiA+ICsgIGNvbXBsZXhf cGF0dGVybjo6YnVpbGQgKHZpbmZvKTsNCj4gPiArfQ0KPiA+ICsNCj4gPg0KPiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioq KioqKioqKioqKioqKioqKioNCj4gPiAgICogUGF0dGVybiBtYXRjaGluZyBkZWZpbml0aW9ucw0K PiA+DQo+ID4NCj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KPiAqKioqKioqKioqKioNCj4gPiAqKioqKioqKi8NCj4gPg0KPiA+DQo+ ID4NCj4gDQo+IC0tDQo+IFJpY2hhcmQgQmllbmVyIDxyZ3VlbnRoZXJAc3VzZS5kZT4NCj4gU1VT RSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJILCBNYXhmZWxkc3RyYXNzZSA1LCA5MDQw OQ0KPiBOdWVybmJlcmcsIEdlcm1hbnk7IEdGOiBGZWxpeCBJbWVuZMO2cmZmZXI7IEhSQiAzNjgw OSAoQUcgTnVlcm5iZXJnKQ0K