From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30059.outbound.protection.outlook.com [40.107.3.59]) by sourceware.org (Postfix) with ESMTPS id 962DF3858025 for ; Fri, 8 Jan 2021 10:02:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 962DF3858025 Received: from AM6PR10CA0032.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:89::45) by AM5PR0801MB2113.eurprd08.prod.outlook.com (2603:10a6:203:2f::23) 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 10:02:35 +0000 Received: from VE1EUR03FT016.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:89:cafe::68) by AM6PR10CA0032.outlook.office365.com (2603:10a6:209:89::45) 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 10:02:35 +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 VE1EUR03FT016.mail.protection.outlook.com (10.152.18.115) 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 10:02:35 +0000 Received: ("Tessian outbound eeda57fffe7b:v71"); Fri, 08 Jan 2021 10:02:34 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5658f42be2fa.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 0C41AB9B-A17B-49DF-9804-9DD6E7929205.1; Fri, 08 Jan 2021 10:02:29 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5658f42be2fa.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 Jan 2021 10:02:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YDWQBUzcTT0QiCnbxNCnxAmC7pK4L+6K1bRLENjMztpKamKmvhpBNwKDsHQpdAk9rZcvmOOaCy3Kf2InKOJ1PttC9XWyBVD8ErCakpEFgWJGwmrIjl6qF6bBkA2pvfIdiH8xtFmI0TZHzNTpCLh6QiJEtP2D64le9823aTs/V+f5ak7wLTwz8ElIjowMnCIefHm2jUuhJ1mb7sSJIL/7ojxx5icJoS7e7bgieXf9w0m8O/5j4CkIlBILHNiRa1n08l7cQWwNaREyUMCJPQuL/Ey+F7aXH4nAVIBDbjiaKi6JvH3nWZZ7PXZQoYEWLl7YLHf1FfFYuMUoX9gqqIgrpg== 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=tBZDsR5zoPyDNHeBT03eALYXhn+LsaY7EkLkyIqLUpg=; b=VLTFigzjbz0s8aHPYs/vhRv/x0o2USIlQp1ZVfGlOEX5Yb1GRK4Db/AUOiSJ8KaUcCQd2GtMm7hLH7UyId1Ug42WjeKvzMpw3zQsS3TgPR/FAq6Bw1o/lAkWQWMwLGGV5MXBLOKGfnEpKGZxlAtB/ceISCraoMX5WqeOzW/mLLNulr8UzUK9/GHIPxPDwa12EqcKWFpbUoaiY3FOxh7Q9t8UarW+6meVSP5BftDX9RoNInfyprZeugTaAXykPN9jv99hsQQWDXyI4R7fJWDTe3IenSb2uY5mUPE8sm5Fro4hSwayFfamXI5JziFfbV1r1nqrDNmTKmcFsAyrXViCnw== 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 VI1PR08MB4109.eurprd08.prod.outlook.com (2603:10a6:803:e7::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3721.19; Fri, 8 Jan 2021 10:02:28 +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 10:02:28 +0000 From: Tamar Christina To: Richard Biener CC: "gcc-patches@gcc.gnu.org" , nd Subject: RE: [PATCH 7/8 v9]middle-end slp: support complex FMS and complex FMS conjugate Thread-Topic: [PATCH 7/8 v9]middle-end slp: support complex FMS and complex FMS conjugate Thread-Index: AQHW3R6tG4TIcUGMJ0Gzsb1/krRQRKodjMYAgAAC5hA= Date: Fri, 8 Jan 2021 10:02:28 +0000 Message-ID: References: <20201228133806.GA32350@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: 74DF07270F5CE7469562E642739D8A57.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: 2c257ffd-4ee4-4641-0d01-08d8b3bc85d9 x-ms-traffictypediagnostic: VI1PR08MB4109:|AM5PR0801MB2113: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:7691;OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: vI1hNoTqdJhy/3jCQxP367zlfa0R7OfnYrsG2bDmvSU4w6h1WG1UAH4uR0s+7rfExjUBQOl/nkUucs5S4zmo0+Tj51DZrszoLE9bQ9+/Wo8muumlYNFyn0A4WO1LIbp8OI/HuPdmwf3lt5GUdKrIQ68AP3rFIeyu+Z7/ot6XTNj0yhIW8bg0fs97CMUbxIl2WT34WpPmFztAGhkp91f/hsQ6n+1sSvxqEJPfT2YoWgsUJVrRRx8SI4J/HbsYVPIRk+gDAlnBoPXEs23MTvf2U3/NNqndJSCSIIxer0s1RwG02mgc4/jlXlbXsaGvB+zRZ1CW9NkrKZfnDz+TdEtfqWd+8yB2onzrs1aMrNOduvpL0bukZct/2o4iq4fMXYwV1EQdtnBdaXcuV64GYrn+Pw== 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)(39860400002)(396003)(346002)(366004)(136003)(376002)(2906002)(8936002)(66476007)(316002)(7696005)(6506007)(186003)(86362001)(71200400001)(33656002)(8676002)(4326008)(6916009)(83380400001)(66574015)(55016002)(26005)(66556008)(478600001)(5660300002)(64756008)(66946007)(52536014)(66446008)(54906003)(76116006)(30864003)(9686003)(53546011); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?Nm8yR2k4bk5zRDlJVzR4RFBOQ2xaYllxdnBWdHZVOHlSR0Z4VXNkUUo4cXJm?= =?utf-8?B?OEhHOGk1QlVYdC9hSHorcTg3M1B2L3dHcncrMjFNRkR2SDZuUzhabldkVC9S?= =?utf-8?B?YzRBUmVFUkRDQU1aeEl3ZEJQWTExcVJHS0ZoMVFsK0lqUEY5a1dWbFZZZzQy?= =?utf-8?B?ZXhCVVlLR29DTDJrNXEwN0Q2V0IyS0xoTVIreTlKWi9VeEo5cmdFMXRxWjh0?= =?utf-8?B?OHpqaFI5ME15SEZUdGh1NEU3NUo3M0Y2M2dlU1F3aEdwbTYyR2laRnZ4MlhQ?= =?utf-8?B?dk9Pd0VlSDlnbDZkN2FBN05UWXhNY09PM0RGZWZ3RXErc211d1Z6U3A4WjVt?= =?utf-8?B?Ym9WekxPNUVwRVMrM1ZKNDkyZnFSQTFVQWpwcXo0MlpqMWZCVDRrWDZkdzBQ?= =?utf-8?B?bGVVV1JDUXArd3lWbVN4bVNBUlVDZFVXQmpqeVZBRXN6aHAwVFNpU0xVZGNr?= =?utf-8?B?OFdvTWorN1ZvdnpUVWhteUF4YmVIcjkyZGtuRlZtNWV2UWdXYmhKcDQ5UXox?= =?utf-8?B?c1haNzV6NmtodHBoTmhRakc1STloK0JBWHpDKzl4a3l0N1hhakZEVHd6a0NW?= =?utf-8?B?N3IrZmc1Y1VFL285aFpjRytDbVRhaUIvUFdoTkkvQTlvKzZjaU9PYnlXSzhu?= =?utf-8?B?ZmUrZjZudGhTMmdNS0RLcW0raERRQnVpVk9YSnlxMXlnK3N0Y1JEbm5oSUdt?= =?utf-8?B?NDFzdXQ1VTUrcS9XcW1DSGI4ZHhiemdVbEpPNVZiNVU3YXRJTldWYzNuaWo3?= =?utf-8?B?S0dqM0FxUC9BOXNYS3NHeDY4SzNrY3VmUlFaQ2tNOW4ybGVDdkRlWGtWUFVT?= =?utf-8?B?dExwSURoYVltdEZ5YXZqY0pOUzdDdTdyVklDYnBSOTdYNCtrc05rVXNWeUVl?= =?utf-8?B?UlJLcWxKMFhPZ204UVlwRVd5MzA1eFJHTGtydVJDOUNWbzhaeXRTOUUxa1Vt?= =?utf-8?B?S1Q5N0xRUTBKNnhRcEc0YlRIY2V3cHFSM3hOVE0vNEs1L3lsbkJ4UXREYzEr?= =?utf-8?B?UXpkRW1pQzRKZENIMFNzempMcmJPWUNNVURLK1pPcjR3YjRTQWpnYzExRGN5?= =?utf-8?B?NmpmeUtCbmM2SHBLd1ZmRG5QRVg5TzlQQVdHYUxFNGh5Y0RnNnhmcjRUN3ZK?= =?utf-8?B?cmx5SWVqb2s3MHU1WmdxZkhZYnNoTmpRcUlQK2FZcUZoL3BJUER2a0JzaUNZ?= =?utf-8?B?N3ZLWVVtUmdmS1VhVXFadHJxZUNPbGJJaEVlNnU3QUxPZjcxYlVNUGFSTlVJ?= =?utf-8?B?YlZIZ0xsa3oyc2EwbElRMkVGUm5FbVFIdnNIZlJJRG5BdDVkYitJWnQvelE3?= =?utf-8?Q?C2gFJfDOtvyms=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: VI1PR08MB4109 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: VE1EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: bf536dec-1b27-492a-fb8d-08d8b3bc8196 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cshn86hdCAnHdrly2eRKpM5aw59fzLOelHDtNPREA65DgX2GGW+IQDwpxLn1IugyuWpL7Br3BUzwpSxdUkY7XKLPUrOaRCkCXFbm8iCD2f9l/PDLrjcQmgYst7+7Dlkv5K/QOhmYbAW+R22jyHbjs0XjQUOX0rkQGQWuxte+vqAOG3xv2P7woDMIkycq45HRC0jZjPcmHJV9jo7cr0sscRIXgStrwpEBE2Q8Troavi6+KRFXVwfA90JRaEH43JCft1KQHG335MgaJxI7maSU7w0dvWA1fgV13KLS/OC2cVpzKbknueyzeIv0PivC2BBg3awb2Q/mJK7nb8UieSvqt8iFoOg3+bU459J7VY6aNrnWK2dUHzoCnVxbI5duwJzXdPVTL3JPZnCcCXJhtRhWHUujgGCv2JQJCy6MqxJanqFXOyt5hfm9IMcIsGwS8//qZteH48CRz3cUEESBcUQShFEcGEB1DUrwA1/m4TajbOkzNQxMN7lp7M/6nGJZN8K2 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)(346002)(396003)(39860400002)(136003)(376002)(46966006)(316002)(8936002)(34020700004)(82310400003)(7696005)(54906003)(52536014)(30864003)(70206006)(53546011)(70586007)(478600001)(5660300002)(2906002)(33656002)(336012)(81166007)(47076005)(26005)(6862004)(186003)(9686003)(356005)(55016002)(83380400001)(82740400003)(66574015)(86362001)(4326008)(6506007)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2021 10:02:35.2023 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c257ffd-4ee4-4641-0d01-08d8b3bc85d9 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: VE1EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2113 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, PDS_BTC_ID, RCVD_IN_DNSWL_LOW, 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 10:02:40 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBCaWVuZXIg PHJndWVudGhlckBzdXNlLmRlPg0KPiBTZW50OiBGcmlkYXksIEphbnVhcnkgOCwgMjAyMSA5OjQ5 IEFNDQo+IFRvOiBUYW1hciBDaHJpc3RpbmEgPFRhbWFyLkNocmlzdGluYUBhcm0uY29tPg0KPiBD YzogZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc7IG5kIDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBS ZTogW1BBVENIIDcvOCB2OV1taWRkbGUtZW5kIHNscDogc3VwcG9ydCBjb21wbGV4IEZNUyBhbmQN Cj4gY29tcGxleCBGTVMgY29uanVnYXRlDQo+IA0KPiBPbiBNb24sIDI4IERlYyAyMDIwLCBUYW1h ciBDaHJpc3RpbmEgd3JvdGU6DQo+IA0KPiA+IEhpIEFsbCwNCj4gPg0KPiA+IFRoaXMgYWRkcyBz dXBwb3J0IGZvciBGTVMgYW5kIEZNUyBjb25qdWdhdGVkIHRvIHRoZSBzbHAgcGF0dGVybiBtYXRj aGVyLg0KPiA+DQo+ID4gQm9vdHN0cmFwcGVkIFJlZ3Rlc3RlZCBvbiBhYXJjaDY0LW5vbmUtbGlu dXgtZ251LCB4ODZfNjQtcGMtbGludXgtZ251DQo+ID4gYW5kIG5vIGlzc3Vlcy4NCj4gPg0KPiA+ IE9rIGZvciBtYXN0ZXI/DQo+IA0KPiBJbnRlcmVzdGluZ2x5IHRoaXMgcGF0Y2ggbG9va3MgZGlm ZmVyZW50IGZyb20gdGhlIEZNQSBvbmUoIT8pLiAgSSB3b3VsZCBoYXZlDQo+IGV4cGVjdGVkIHRv IGhhdmUgdGhlIHNhbWUgcGF0dGVybiBmb3IgRk1BIGFuZCBGTVMgaW4gdGhlIGVuZC4NCg0KTm8s IGJlY2F1c2UgdGhlIG1pZC1lbmQgY2Fub25pemF0aW9uIG9mIHRoZSB0cmVlIGZvciBGTUEgYW5k IEZNUyBhcmUgZGlmZmVyZW50Lg0KQmVjYXVzZSBGTVMgaGFzIHR3byBUV09fT1BFUkFORFMgbm9k ZXMgdGhlIG9yZGVyIG9mIHRoZSB0cmVlIGlzIHN3YXBwZWQuDQoNClRoZXJlJ3Mgbm8gcmVhbCBy ZWFzb24gZm9yIGl0IChhcyBmYXIgYXMgSSBjYW4gdGVsbCkgYnV0IHRoYXQgcmVzdWx0cyBpbiBh IHJldmVyc2UgdHJlZS4NCkhvd2V2ZXIgdGhlIG9wZXJhdGlvbnMgYXJlIG5vdCBzdWZmaWNpZW50 bHkgZGlmZmVyZW50IHRoYXQgSSBjYW4gZGV0ZWN0IHRoZSBNVUwgcGFydC4NCg0KSSBoYXZlIGEg bm90ZSBmb3IgbmV4dCB5ZWFyJ3MgcmV3cml0ZSB0byBmaXggdGhpcyBkdXJpbmcgc2xwIGJ1aWxk IHNvIHRoZXkgY2FuIGJlIHNoYXJlZC4NCg0KPiANCj4gPiBUaGFua3MsDQo+ID4gVGFtYXINCj4g Pg0KPiA+IGdjYy9DaGFuZ2VMb2c6DQo+ID4NCj4gPiAJKiBpbnRlcm5hbC1mbi5kZWYgKENPTVBM RVhfRk1TLCBDT01QTEVYX0ZNU19DT05KKTogTmV3Lg0KPiA+IAkqIG9wdGFicy5kZWYgKGNtbHNf b3B0YWIsIGNtbHNfY29ual9vcHRhYik6IE5ldy4NCj4gPiAJKiBkb2MvbWQudGV4aTogRG9jdW1l bnQgdGhlbS4NCj4gPiAJKiB0cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmMgKGNsYXNzIGNvbXBsZXhf Zm1zX3BhdHRlcm4sDQo+ID4gCWNvbXBsZXhfZm1zX3BhdHRlcm46Om1hdGNoZXMsIGNvbXBsZXhf Zm1zX3BhdHRlcm46OnJlY29nbml6ZSwNCj4gPiAJY29tcGxleF9mbXNfcGF0dGVybjo6YnVpbGQp OiBOZXcuDQo+ID4NCj4gPiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0Y2ggLS0NCj4gPiBkaWZmIC0t Z2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2NjL2RvYy9tZC50ZXhpIGluZGV4DQo+ID4NCj4gNmQ1 YTk4YzQ5NDZkM2ZmNGMyYjhhYmVhNWMyOWNhYTY4NjNmZDNmNy4uM2Y1YTQyZGYyODViM2VlMTYy ZWRjOWVjNjYNCj4gMWYNCj4gPiAyNWMwZWVjNWU0ZmEgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL2Rv Yy9tZC50ZXhpDQo+ID4gKysrIGIvZ2NjL2RvYy9tZC50ZXhpDQo+ID4gQEAgLTYyNDcsNiArNjI0 Nyw1MSBAQCBUaGUgb3BlcmF0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB2ZWN0b3INCj4gbW9k ZXMgQHZhcnttfS4NCj4gPg0KPiA+ICBUaGlzIHBhdHRlcm4gaXMgbm90IGFsbG93ZWQgdG8gQGNv ZGV7RkFJTH0uDQo+ID4NCj4gPiArQGNpbmRleCBAY29kZXtjbWxzQHZhcnttfTR9IGluc3RydWN0 aW9uIHBhdHRlcm4gQGl0ZW0NCj4gPiArQHNhbXB7Y21sc0B2YXJ7bX00fSBQZXJmb3JtIGEgdmVj dG9yIG11bHRpcGx5IGFuZCBzdWJ0cmFjdCB0aGF0IGlzDQo+ID4gK3NlbWFudGljYWxseSB0aGUg c2FtZSBhcyBhIG11bHRpcGx5IGFuZCBzdWJ0cmFjdCBvZiBjb21wbGV4IG51bWJlcnMuDQo+ID4g Kw0KPiA+ICtAc21hbGxleGFtcGxlDQo+ID4gKyAgY29tcGxleCBUWVBFIGNbTl07DQo+ID4gKyAg Y29tcGxleCBUWVBFIGFbTl07DQo+ID4gKyAgY29tcGxleCBUWVBFIGJbTl07DQo+ID4gKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBOOyBpICs9IDEpDQo+ID4gKyAgICBAew0KPiA+ICsgICAgICBjW2ld IC09IGFbaV0gKiBiW2ldOw0KPiA+ICsgICAgQH0NCj4gPiArQGVuZCBzbWFsbGV4YW1wbGUNCj4g PiArDQo+ID4gK0luIEdDQyBsYW5lIG9yZGVyaW5nIHRoZSByZWFsIHBhcnQgb2YgdGhlIG51bWJl ciBtdXN0IGJlIGluIHRoZSBldmVuDQo+ID4gK2xhbmVzIHdpdGggdGhlIGltYWdpbmFyeSBwYXJ0 IGluIHRoZSBvZGQgbGFuZXMuDQo+ID4gKw0KPiA+ICtUaGUgb3BlcmF0aW9uIGlzIG9ubHkgc3Vw cG9ydGVkIGZvciB2ZWN0b3IgbW9kZXMgQHZhcnttfS4NCj4gPiArDQo+ID4gK1RoaXMgcGF0dGVy biBpcyBub3QgYWxsb3dlZCB0byBAY29kZXtGQUlMfS4NCj4gPiArDQo+ID4gK0BjaW5kZXggQGNv ZGV7Y21sc19jb25qQHZhcnttfTR9IGluc3RydWN0aW9uIHBhdHRlcm4gQGl0ZW0NCj4gPiArQHNh bXB7Y21sc19jb25qQHZhcnttfTR9IFBlcmZvcm0gYSB2ZWN0b3IgbXVsdGlwbHkgYnkgY29uanVn YXRlIGFuZA0KPiA+ICtzdWJ0cmFjdCB0aGF0IGlzIHNlbWFudGljYWxseSB0aGUgc2FtZSBhcyBh IG11bHRpcGx5IGFuZCBzdWJ0cmFjdCBvZg0KPiA+ICtjb21wbGV4IG51bWJlcnMgd2hlcmUgdGhl IHNlY29uZCBtdWx0aXBseSBhcmd1bWVudHMgaXMgY29uanVnYXRlZC4NCj4gPiArDQo+ID4gK0Bz bWFsbGV4YW1wbGUNCj4gPiArICBjb21wbGV4IFRZUEUgY1tOXTsNCj4gPiArICBjb21wbGV4IFRZ UEUgYVtOXTsNCj4gPiArICBjb21wbGV4IFRZUEUgYltOXTsNCj4gPiArICBmb3IgKGludCBpID0g MDsgaSA8IE47IGkgKz0gMSkNCj4gPiArICAgIEB7DQo+ID4gKyAgICAgIGNbaV0gLT0gYVtpXSAq IGNvbmogKGJbaV0pOw0KPiA+ICsgICAgQH0NCj4gPiArQGVuZCBzbWFsbGV4YW1wbGUNCj4gPiAr DQo+ID4gK0luIEdDQyBsYW5lIG9yZGVyaW5nIHRoZSByZWFsIHBhcnQgb2YgdGhlIG51bWJlciBt dXN0IGJlIGluIHRoZSBldmVuDQo+ID4gK2xhbmVzIHdpdGggdGhlIGltYWdpbmFyeSBwYXJ0IGlu IHRoZSBvZGQgbGFuZXMuDQo+ID4gKw0KPiA+ICtUaGUgb3BlcmF0aW9uIGlzIG9ubHkgc3VwcG9y dGVkIGZvciB2ZWN0b3IgbW9kZXMgQHZhcnttfS4NCj4gPiArDQo+ID4gK1RoaXMgcGF0dGVybiBp cyBub3QgYWxsb3dlZCB0byBAY29kZXtGQUlMfS4NCj4gPiArDQo+ID4gIEBjaW5kZXggQGNvZGV7 Y211bEB2YXJ7bX00fSBpbnN0cnVjdGlvbiBwYXR0ZXJuICBAaXRlbQ0KPiA+IEBzYW1we2NtdWxA dmFye219NH0gIFBlcmZvcm0gYSB2ZWN0b3IgbXVsdGlwbHkgdGhhdCBpcyBzZW1hbnRpY2FsbHkN Cj4gPiB0aGUgc2FtZSBhcyBtdWx0aXBseSBvZiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZu LmRlZg0KPiA+IGIvZ2NjL2ludGVybmFsLWZuLmRlZiBpbmRleA0KPiA+DQo+IDMwNTQ1MGUwMjZk NGI5NGFiNjJjZWI5Y2E3MTllYzU1NzBmZjQzZWIuLmM4MTYxNTA5ZDk0OTdhZmU1OGYzMmJkZTEN Cj4gMmQ4DQo+ID4gZTZiZDdiODc2YTNjIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9pbnRlcm5hbC1m bi5kZWYNCj4gPiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ID4gQEAgLTI5MCw2ICsyOTAs OCBAQCBERUZfSU5URVJOQUxfRkxUX0ZOIChMREVYUCwgRUNGX0NPTlNULCBsZGV4cCwNCj4gPiBi aW5hcnkpICBERUZfSU5URVJOQUxfRkxUX0ZMT0FUTl9GTiAoRk1BLCBFQ0ZfQ09OU1QsIGZtYSwg dGVybmFyeSkNCj4gPiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENPTVBMRVhfRk1BLCBFQ0ZfQ09O U1QsIGNtbGEsIHRlcm5hcnkpDQo+ID4gREVGX0lOVEVSTkFMX09QVEFCX0ZOIChDT01QTEVYX0ZN QV9DT05KLCBFQ0ZfQ09OU1QsDQo+IGNtbGFfY29uaiwNCj4gPiB0ZXJuYXJ5KQ0KPiA+ICtERUZf SU5URVJOQUxfT1BUQUJfRk4gKENPTVBMRVhfRk1TLCBFQ0ZfQ09OU1QsIGNtbHMsIHRlcm5hcnkp DQo+ID4gK0RFRl9JTlRFUk5BTF9PUFRBQl9GTiAoQ09NUExFWF9GTVNfQ09OSiwgRUNGX0NPTlNU LA0KPiBjbWxzX2NvbmosDQo+ID4gK3Rlcm5hcnkpDQo+ID4NCj4gPiAgLyogVW5hcnkgaW50ZWdl ciBvcHMuICAqLw0KPiA+ICBERUZfSU5URVJOQUxfSU5UX0ZOIChDTFJTQiwgRUNGX0NPTlNUIHwg RUNGX05PVEhST1csIGNscnNiLA0KPiB1bmFyeSkNCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFi cy5kZWYgYi9nY2Mvb3B0YWJzLmRlZiBpbmRleA0KPiA+DQo+IDhlMjc1OGQ2ODVlZDg1ZTAyZGYx MGRhYzU3MWViNDBkNDVhMjk0ZWQuLjMyMGJiNWYzZGNlMzE4NjdkMzEyYmJiDQo+IGI2YTRjDQo+ ID4gNmUzMWM1MzQyNTRlIDEwMDY0NA0KPiA+IC0tLSBhL2djYy9vcHRhYnMuZGVmDQo+ID4gKysr IGIvZ2NjL29wdGFicy5kZWYNCj4gPiBAQCAtMjk2LDYgKzI5Niw4IEBAIE9QVEFCX0QgKGNtdWxf b3B0YWIsICJjbXVsJGEzIikgIE9QVEFCX0QNCj4gPiAoY211bF9jb25qX29wdGFiLCAiY211bF9j b25qJGEzIikgIE9QVEFCX0QgKGNtbGFfb3B0YWIsICJjbWxhJGE0IikNCj4gPiBPUFRBQl9EIChj bWxhX2Nvbmpfb3B0YWIsICJjbWxhX2NvbmokYTQiKQ0KPiA+ICtPUFRBQl9EIChjbWxzX29wdGFi LCAiY21scyRhNCIpDQo+ID4gK09QVEFCX0QgKGNtbHNfY29ual9vcHRhYiwgImNtbHNfY29uaiRh NCIpDQo+ID4gIE9QVEFCX0QgKGNvc19vcHRhYiwgImNvcyRhMiIpDQo+ID4gIE9QVEFCX0QgKGNv c2hfb3B0YWIsICJjb3NoJGEyIikNCj4gPiAgT1BUQUJfRCAoZXhwMTBfb3B0YWIsICJleHAxMCRh MiIpDQo+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmMNCj4gPiBi L2djYy90cmVlLXZlY3Qtc2xwLXBhdHRlcm5zLmMgaW5kZXgNCj4gPg0KPiAzNjI1YTgwYzA4ZTNk NzBmZDM2MmZjNTJlMTdlNjViM2IyYzdkYTgzLi5hYjY1ODdmMGI4NTIyZWM1ZjkxNmY3NGU3ZQ0K PiA3NA0KPiA+IDAxYjFmN2EzNWJiYiAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvdHJlZS12ZWN0LXNs cC1wYXR0ZXJucy5jDQo+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdC1zbHAtcGF0dGVybnMuYw0KPiA+ IEBAIC0xMjU0LDYgKzEyNTQsMTgxIEBAIGNvbXBsZXhfZm1hX3BhdHRlcm46OmJ1aWxkICh2ZWNf aW5mbyAqdmluZm8pDQo+ID4gICAgY29tcGxleF9wYXR0ZXJuOjpidWlsZCAodmluZm8pOw0KPiA+ ICB9DQo+ID4NCj4gPg0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioqKioqKg0KPiA+ICsqKioqKioqKioqKg0KPiA+ ICsgKiBjb21wbGV4X2Ztc19wYXR0ZXJuIGNsYXNzDQo+ID4gKw0KPiA+DQo+ICsqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioq KioqKioqDQo+ID4gKyoqKioqKioqKi8NCj4gPiArDQo+ID4gK2NsYXNzIGNvbXBsZXhfZm1zX3Bh dHRlcm4gOiBwdWJsaWMgY29tcGxleF9wYXR0ZXJuIHsNCj4gPiArICBwcm90ZWN0ZWQ6DQo+ID4g KyAgICBjb21wbGV4X2Ztc19wYXR0ZXJuIChzbHBfdHJlZSAqbm9kZSwgdmVjPHNscF90cmVlPiAq bV9vcHMsDQo+IGludGVybmFsX2ZuIGlmbikNCj4gPiArICAgICAgOiBjb21wbGV4X3BhdHRlcm4g KG5vZGUsIG1fb3BzLCBpZm4pDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIHRoaXMtPm1fbnVtX2Fy Z3MgPSAzOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBwdWJsaWM6DQo+ID4gKyAgICB2b2lk IGJ1aWxkICh2ZWNfaW5mbyAqKTsNCj4gPiArICAgIHN0YXRpYyBpbnRlcm5hbF9mbg0KPiA+ICsg ICAgbWF0Y2hlcyAoY29tcGxleF9vcGVyYXRpb25fdCBvcCwgc2xwX3RyZWVfdG9fbG9hZF9wZXJt X21hcF90ICosDQo+IHNscF90cmVlICosDQo+ID4gKwkgICAgIHZlYzxzbHBfdHJlZT4gKik7DQo+ ID4gKw0KPiA+ICsgICAgc3RhdGljIHZlY3RfcGF0dGVybioNCj4gPiArICAgIHJlY29nbml6ZSAo c2xwX3RyZWVfdG9fbG9hZF9wZXJtX21hcF90ICosIHNscF90cmVlICopOw0KPiA+ICsNCj4gPiAr ICAgIHN0YXRpYyB2ZWN0X3BhdHRlcm4qDQo+ID4gKyAgICBta0luc3RhbmNlIChzbHBfdHJlZSAq bm9kZSwgdmVjPHNscF90cmVlPiAqbV9vcHMsIGludGVybmFsX2ZuIGlmbikNCj4gPiArICAgIHsN Cj4gPiArICAgICAgcmV0dXJuIG5ldyBjb21wbGV4X2Ztc19wYXR0ZXJuIChub2RlLCBtX29wcywg aWZuKTsNCj4gPiArICAgIH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKw0KPiA+ICsvKiBQYXR0ZXJu IG1hdGNoZXIgZm9yIHRyeWluZyB0byBtYXRjaCBjb21wbGV4IG11bHRpcGx5IGFuZCBhY2N1bXVs YXRlDQo+ID4gKyAgIGFuZCBtdWx0aXBseSBhbmQgc3VidHJhY3QgcGF0dGVybnMgaW4gU0xQIHRy ZWUuDQo+ID4gKyAgIElmIHRoZSBvcGVyYXRpb24gbWF0Y2hlcyB0aGVuIElGTiBpcyBzZXQgdG8g dGhlIG9wZXJhdGlvbiBpdCBtYXRjaGVkIGFuZA0KPiA+ICsgICB0aGUgYXJndW1lbnRzIHRvIHRo ZSB0d28gcmVwbGFjZW1lbnQgc3RhdGVtZW50cyBhcmUgcHV0IGluIG1fb3BzLg0KPiA+ICsNCj4g PiArICAgSWYgbm8gbWF0Y2ggaXMgZm91bmQgdGhlbiBJRk4gaXMgc2V0IHRvIElGTl9MQVNUIGFu ZCBtX29wcyBpcyB1bmNoYW5nZWQuDQo+ID4gKw0KPiA+ICsgICBUaGlzIGZ1bmN0aW9uIG1hdGNo ZXMgdGhlIHBhdHRlcm5zIHNoYXBlZCBhczoNCj4gPiArDQo+ID4gKyAgIGRvdWJsZSBheCA9IChi W2krMV0gKiBhW2ldKSArIChiW2ldICogYVtpXSk7DQo+ID4gKyAgIGRvdWJsZSBieCA9IChhW2kr MV0gKiBiW2ldKSAtIChhW2krMV0gKiBiW2krMV0pOw0KPiA+ICsNCj4gPiArICAgY1tpXSA9IGNb aV0gLSBheDsNCj4gPiArICAgY1tpKzFdID0gY1tpKzFdICsgYng7DQo+ID4gKw0KPiA+ICsgICBJ ZiBhIG1hdGNoIG9jY3VycmVkIHRoZW4gVFJVRSBpcyByZXR1cm5lZCwgZWxzZSBGQUxTRS4gIFRo ZSBpbml0aWFsIG1hdGNoDQo+IGlzDQo+ID4gKyAgIGV4cGVjdGVkIHRvIGJlIGluIE9QMSBhbmQg dGhlIGluaXRpYWwgbWF0Y2ggb3BlcmFuZHMgaW4gYXJnczAuICAqLw0KPiA+ICsNCj4gPiAraW50 ZXJuYWxfZm4NCj4gPiArY29tcGxleF9mbXNfcGF0dGVybjo6bWF0Y2hlcyAoY29tcGxleF9vcGVy YXRpb25fdCBvcCwNCj4gPiArCQkJICAgICAgc2xwX3RyZWVfdG9fbG9hZF9wZXJtX21hcF90ICpw ZXJtX2NhY2hlLA0KPiA+ICsJCQkgICAgICBzbHBfdHJlZSAqIHJlZl9ub2RlLCB2ZWM8c2xwX3Ry ZWU+ICpvcHMpIHsNCj4gPiArICBpbnRlcm5hbF9mbiBpZm4gPSBJRk5fTEFTVDsNCj4gPiArDQo+ ID4gKyAgLyogRmluZCB0aGUgdHdvIGNvbXBvbmVudHMuICBXZSBtYXRjaCBDb21wbGV4IE1VTCBm aXJzdCB3aGljaA0KPiByZWR1Y2VzIHRoZQ0KPiA+ICsgICAgIGFtb3VudCBvZiB3b3JrIHRoaXMg cGF0dGVybiBoYXMgdG8gZG8uICBBZnRlciB0aGF0IHdlIGp1c3QgbWF0Y2ggdGhlDQo+ID4gKyAg ICAgaGVhZCBub2RlIGFuZCB3ZSdyZSBkb25lLjoNCj4gPiArDQo+ID4gKyAgICAgKiBGTVM6IC0g Ky4gICovDQo+ID4gKyAgc2xwX3RyZWUgY2hpbGQgPSBOVUxMOw0KPiA+ICsNCj4gPiArICAvKiBX ZSBuZWVkIHRvIGlnbm9yZSB0aGUgdHdvX29wZXJhbmRzIG5vZGVzIHRoYXQgbWF5IGFsc28gbWF0 Y2gsDQo+ID4gKyAgICAgZm9yIHRoYXQgd2UgY2FuIGNoZWNrIGlmIHRoZXkgaGF2ZSBhbnkgc2Nh bGFyIHN0YXRlbWVudHMgYW5kIGFsc28NCj4gPiArICAgICBjaGVjayB0aGF0IGl0J3Mgbm90IGEg cGVybXV0ZSBub2RlIGFzIHdlJ3JlIGxvb2tpbmcgZm9yIGEgbm9ybWFsDQo+ID4gKyAgICAgUExV U19FWFBSIG9wZXJhdGlvbi4gICovDQo+ID4gKyAgaWYgKG9wICE9IFBMVVNfTUlOVVMpDQo+ID4g KyAgICByZXR1cm4gSUZOX0xBU1Q7DQo+ID4gKw0KPiA+ICsgIGNoaWxkID0gU0xQX1RSRUVfQ0hJ TERSRU4gKCgqb3BzKVsxXSlbMV07ICBpZiAodmVjdF9kZXRlY3RfcGFpcl9vcA0KPiA+ICsgKGNo aWxkKSAhPSBNSU5VU19QTFVTKQ0KPiA+ICsgICAgcmV0dXJuIElGTl9MQVNUOw0KPiA+ICsNCj4g PiArICAvKiBGaXJzdCB0d28gbm9kZXMgbXVzdCBiZSBhIG11bHRpcGx5LiAgKi8gIGF1dG9fdmVj PHNscF90cmVlPg0KPiA+ICsgbXVsczsgIGlmICh2ZWN0X21hdGNoX2NhbGxfY29tcGxleF9tbGEg KGNoaWxkLCAwKSAhPSBNVUxUX01VTFQNCj4gPiArICAgICAgfHwgdmVjdF9tYXRjaF9jYWxsX2Nv bXBsZXhfbWxhIChjaGlsZCwgMSwgJm11bHMpICE9IE1VTFRfTVVMVCkNCj4gPiArICAgIHJldHVy biBJRk5fTEFTVDsNCj4gPiArDQo+ID4gKyAgLyogTm93IG9wZXJhbmQyKzQgbWF5IGxlYWQgdG8g YW5vdGhlciBleHByZXNzaW9uLiAgKi8NCj4gPiArIGF1dG9fdmVjPHNscF90cmVlPiBsZWZ0X29w LCByaWdodF9vcDsgIGxlZnRfb3Auc2FmZV9zcGxpY2UNCj4gPiArIChTTFBfVFJFRV9DSElMRFJF TiAobXVsc1swXSkpOyAgcmlnaHRfb3Auc2FmZV9zcGxpY2UNCj4gPiArIChTTFBfVFJFRV9DSElM RFJFTiAobXVsc1sxXSkpOw0KPiA+ICsNCj4gPiArICBib29sIGlzX25lZyA9IHZlY3Rfbm9ybWFs aXplX2NvbmpfbG9jIChsZWZ0X29wKTsNCj4gPiArDQo+ID4gKyAgY2hpbGQgPSBTTFBfVFJFRV9D SElMRFJFTiAoKCpvcHMpWzFdKVswXTsNCj4gPiArICBib29sIGNvbmpfZmlyc3Rfb3BlcmFuZDsN Cj4gPiArICBpZiAoIXZlY3RfdmFsaWRhdGVfbXVsdGlwbGljYXRpb24gKHBlcm1fY2FjaGUsIHJp Z2h0X29wLCBsZWZ0X29wLCBmYWxzZSwNCj4gPiArCQkJCSAgICAgJmNvbmpfZmlyc3Rfb3BlcmFu ZCwgdHJ1ZSkpDQo+ID4gKyAgICByZXR1cm4gSUZOX0xBU1Q7DQo+ID4gKw0KPiA+ICsgIGlmICgh aXNfbmVnKQ0KPiA+ICsgICAgaWZuID0gSUZOX0NPTVBMRVhfRk1TOw0KPiA+ICsgIGVsc2UgaWYg KGlzX25lZykNCj4gPiArICAgIGlmbiA9IElGTl9DT01QTEVYX0ZNU19DT05KOw0KPiA+ICsNCj4g PiArICBpZiAoIXZlY3RfcGF0dGVybl92YWxpZGF0ZV9vcHRhYiAoaWZuLCAqcmVmX25vZGUpKQ0K PiA+ICsgICAgcmV0dXJuIElGTl9MQVNUOw0KPiA+ICsNCj4gPiArICBvcHMtPnRydW5jYXRlICgw KTsNCj4gPiArICBvcHMtPmNyZWF0ZSAoNCk7DQo+ID4gKw0KPiA+ICsgIGNvbXBsZXhfcGVybV9r aW5kc190IGtpbmQgPSBsaW5lYXJfbG9hZHNfcCAocGVybV9jYWNoZSwNCj4gPiArIHJpZ2h0X29w WzBdKS5maXJzdDsgIGlmIChraW5kID09IFBFUk1fRVZFTk9ERCkNCj4gPiArICAgIHsNCj4gPiAr ICAgICAgb3BzLT5xdWlja19wdXNoIChjaGlsZCk7DQo+ID4gKyAgICAgIG9wcy0+cXVpY2tfcHVz aCAocmlnaHRfb3BbMF0pOw0KPiA+ICsgICAgICBvcHMtPnF1aWNrX3B1c2ggKHJpZ2h0X29wWzFd KTsNCj4gPiArICAgICAgb3BzLT5xdWlja19wdXNoIChsZWZ0X29wWzBdKTsNCj4gPiArICAgIH0N Cj4gPiArICBlbHNlIGlmIChraW5kID09IFBFUk1fVE9QKQ0KPiA+ICsgICAgew0KPiA+ICsgICAg ICBvcHMtPnF1aWNrX3B1c2ggKGNoaWxkKTsNCj4gPiArICAgICAgb3BzLT5xdWlja19wdXNoIChy aWdodF9vcFsxXSk7DQo+ID4gKyAgICAgIG9wcy0+cXVpY2tfcHVzaCAocmlnaHRfb3BbMF0pOw0K PiA+ICsgICAgICBvcHMtPnF1aWNrX3B1c2ggKGxlZnRfb3BbMF0pOw0KPiA+ICsgICAgfQ0KPiA+ ICsgIGVsc2UNCj4gPiArICAgIHsNCj4gPiArICAgICAgb3BzLT5xdWlja19wdXNoIChjaGlsZCk7 DQo+ID4gKyAgICAgIG9wcy0+cXVpY2tfcHVzaCAocmlnaHRfb3BbMV0pOw0KPiA+ICsgICAgICBv cHMtPnF1aWNrX3B1c2ggKHJpZ2h0X29wWzBdKTsNCj4gPiArICAgICAgb3BzLT5xdWlja19wdXNo IChsZWZ0X29wWzFdKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIGlmbjsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyogQXR0ZW1wdCB0byByZWNvZ25pemUgYSBjb21wbGV4IG11bCBw YXR0ZXJuLiAgKi8NCj4gPiArDQo+ID4gK3ZlY3RfcGF0dGVybioNCj4gPiArY29tcGxleF9mbXNf cGF0dGVybjo6cmVjb2duaXplIChzbHBfdHJlZV90b19sb2FkX3Blcm1fbWFwX3QNCj4gKnBlcm1f Y2FjaGUsDQo+ID4gKwkJCQlzbHBfdHJlZSAqbm9kZSkNCj4gPiArew0KPiA+ICsgIGF1dG9fdmVj PHNscF90cmVlPiBvcHM7DQo+ID4gKyAgY29tcGxleF9vcGVyYXRpb25fdCBvcA0KPiA+ICsgICAg PSB2ZWN0X2RldGVjdF9wYWlyX29wICgqbm9kZSwgdHJ1ZSwgJm9wcyk7DQo+ID4gKyAgaW50ZXJu YWxfZm4gaWZuDQo+ID4gKyAgICA9IGNvbXBsZXhfZm1zX3BhdHRlcm46Om1hdGNoZXMgKG9wLCBw ZXJtX2NhY2hlLCBub2RlLCAmb3BzKTsNCj4gPiArICBpZiAoaWZuID09IElGTl9MQVNUKQ0KPiA+ ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBuZXcgY29tcGxleF9mbXNf cGF0dGVybiAobm9kZSwgJm9wcywgaWZuKTsgfQ0KPiA+ICsNCj4gPiArLyogUGVyZm9ybSBhIHJl cGxhY2VtZW50IG9mIHRoZSBkZXRlY3RlZCBjb21wbGV4IG11bCBwYXR0ZXJuIHdpdGggdGhlDQo+ IG5ldw0KPiA+ICsgICBpbnN0cnVjdGlvbiBzZXF1ZW5jZXMuICAqLw0KPiA+ICsNCj4gPiArdm9p ZA0KPiA+ICtjb21wbGV4X2Ztc19wYXR0ZXJuOjpidWlsZCAodmVjX2luZm8gKnZpbmZvKSB7DQo+ ID4gKyAgYXV0b192ZWM8c2xwX3RyZWU+IG5vZGVzOw0KPiA+ICsNCj4gPiArICAvKiBGaXJzdCBy ZS1hcnJhbmdlIHRoZSBjaGlsZHJlbi4gICovICBub2Rlcy5jcmVhdGUgKDMpOw0KPiA+ICsNCj4g PiArICBub2Rlcy5xdWlja19wdXNoICh0aGlzLT5tX29wc1swXSk7DQo+ID4gKyAgbm9kZXMucXVp Y2tfcHVzaCAodGhpcy0+bV9vcHNbMV0pOw0KPiA+ICsgIG5vZGVzLnF1aWNrX3B1c2ggKA0KPiA+ ICsgICAgdmVjdF9idWlsZF9jb21iaW5lX25vZGUgKHRoaXMtPm1fb3BzWzJdLCB0aGlzLT5tX29w c1szXSwNCj4gPiArICp0aGlzLT5tX25vZGUpKTsgIFNMUF9UUkVFX1JFRl9DT1VOVCAodGhpcy0+ bV9vcHNbMF0pKys7DQo+ID4gKyBTTFBfVFJFRV9SRUZfQ09VTlQgKHRoaXMtPm1fb3BzWzFdKSsr Ow0KPiA+ICsNCj4gPiArICBzbHBfdHJlZSBub2RlOw0KPiA+ICsgIHVuc2lnbmVkIGk7DQo+ID4g KyAgRk9SX0VBQ0hfVkVDX0VMVCAoU0xQX1RSRUVfQ0hJTERSRU4gKCp0aGlzLT5tX25vZGUpLCBp LCBub2RlKQ0KPiA+ICsgICAgdmVjdF9mcmVlX3NscF90cmVlIChub2RlKTsNCj4gPiArDQo+ID4g KyAgU0xQX1RSRUVfQ0hJTERSRU4gKCp0aGlzLT5tX25vZGUpLnRydW5jYXRlICgwKTsNCj4gU0xQ X1RSRUVfQ0hJTERSRU4NCj4gPiArICgqdGhpcy0+bV9ub2RlKS5zYWZlX3NwbGljZSAobm9kZXMp Ow0KPiANCj4gcGxlYXNlIGVsaWRlIHRoZSBub2RlcyB2ZWN0b3IuDQo+IA0KPiBPdGhlcndpc2Ug T0suDQo+IFJpY2hhcmQuDQo+IA0KPiA+ICsNCj4gPiArICBjb21wbGV4X3BhdHRlcm46OmJ1aWxk ICh2aW5mbyk7DQo+ID4gK30NCj4gPiArDQo+ID4NCj4gLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioqKioq KioqDQo+ID4gICAqIFBhdHRlcm4gbWF0Y2hpbmcgZGVmaW5pdGlvbnMNCj4gPg0KPiA+DQo+ICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN Cj4gKioqKioqKioqKioqDQo+ID4gKioqKioqKiovDQo+ID4NCj4gPg0KPiA+DQo+IA0KPiAtLQ0K PiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+IFNVU0UgU29mdHdhcmUgU29s dXRpb25zIEdlcm1hbnkgR21iSCwgTWF4ZmVsZHN0cmFzc2UgNSwgOTA0MDkNCj4gTnVlcm5iZXJn LCBHZXJtYW55OyBHRjogRmVsaXggSW1lbmTDtnJmZmVyOyBIUkIgMzY4MDkgKEFHIE51ZXJuYmVy ZykNCg==