From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40053.outbound.protection.outlook.com [40.107.4.53]) by sourceware.org (Postfix) with ESMTPS id 09EF83893659 for ; Mon, 21 Jun 2021 08:11:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 09EF83893659 Received: from AM6P195CA0021.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:81::34) by AM9PR08MB6915.eurprd08.prod.outlook.com (2603:10a6:20b:30f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16; Mon, 21 Jun 2021 08:11:34 +0000 Received: from AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:81:cafe::1) by AM6P195CA0021.outlook.office365.com (2603:10a6:209:81::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16 via Frontend Transport; Mon, 21 Jun 2021 08:11:34 +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 AM5EUR03FT047.mail.protection.outlook.com (10.152.16.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.16 via Frontend Transport; Mon, 21 Jun 2021 08:11:33 +0000 Received: ("Tessian outbound 92494750bf3c:v96"); Mon, 21 Jun 2021 08:11:33 +0000 X-CR-MTA-TID: 64aa7808 Received: from efa387f1e8b0.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E881C426-76F2-4DD4-BD0F-2F4E0F878D3A.1; Mon, 21 Jun 2021 08:11:23 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id efa387f1e8b0.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 21 Jun 2021 08:11:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=amO7DQxKNm4CmWRbTRMRvriS+coyhQnkO3YsdFMDOBZ6gDg5m8oICf9Jwzg8FjQREbiiEPpvwIjeeUV/6OHkRXmvDB9Irvoatrjf2iqdjJfYQomndMmbEkZCch/k0AlgMjLze9ib+6nTI7T8+6j62uSdpkKHchBvc/qLOrR9RLPvdNuZS3xZSQggRBspXaSe/C9mFmq2nvWv64HORsF4PmSwAhz3dvA97ocuv9V7W6kLlZSehMY73UCOb+slujgN0yBmH2h4CJ5SM8/ECQNJoSJJX4bdvlXd+m0IR5KqUcWvoGf3s1GGFizfLcOFEgj6ntEV+IMjT7IPJT5YXxqDpw== 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=xs5w5+aZ9WL69EATgeKjqjgijPBm2y2PNRcIA6vwWq4=; b=FSEib7Xj21HnPLve5MsKs7t4/uIE1jXNQca0kPznNwYr607qLaGypJ9mUVv7f6l1VC3TkdAkePOA6K4GyRLb9+i8PQ8oOU0KUGG8mee66Vyxmd7zJPTiKUjfZSv689/4CHPKAr5rTeB3uQgPELQ0paAxavEJez9Tnw+JhvKgbeHqon8c4a7i3bjuVKGK7kzlRAsipuVWiV09gGjekgsblyXUCzU5bz5IgNwPwCL3c92mzm95dEW31G+xhHIRnniik7qx1LcGDKnVaKhyg7t2hKfwQGRnda5Zo0C8bpeIHmAsFaYFeUbTIkd8flor8nrvrmjsiTkALcfCY0tKHwKoiA== 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 VE1PR08MB5006.eurprd08.prod.outlook.com (2603:10a6:803:113::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4242.21; Mon, 21 Jun 2021 08:11:18 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::69b2:ae3a:1d7b:5e3c]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::69b2:ae3a:1d7b:5e3c%9]) with mapi id 15.20.4242.023; Mon, 21 Jun 2021 08:11:18 +0000 From: Tamar Christina To: Tamar Christina , Richard Sandiford CC: nd , Richard Biener , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Topic: [PATCH 1/4]middle-end Vect: Add support for dot-product where the sign for the multiplicant changes. Thread-Index: AQHXQdV4g2WFnSd+rEyE6iZSy1EmNqrX6WiAgAABSHCABLQJgIAAAwwAgAAbeYCAF6c1YIABMgmAgAsI3tCAAzBucIAEtzcggAsfWKCACr+tAA== Date: Mon, 21 Jun 2021 08:11:17 +0000 Message-ID: References: <7q3oonr2-92r0-8o9q-s27q-9r735s4n3s3@fhfr.qr> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 3E13741905CF214DA85CC3193FE0A05A.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.11.185.166] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 54893c6d-af10-43d7-1c42-08d9348c2f09 x-ms-traffictypediagnostic: VE1PR08MB5006:|AM9PR08MB6915: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2582;OLM:2582; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: XlNU0CGGdPMQvPj7RRVwHIy8lE4fR6eAF80YO+kh67NOgVxl7gnyt5cdcbtMbuwPmN1Eo4Syks5AfnUB2zeZUptPaoEjuYYIQL34UWRYeYC9WcBD7KrH/nkIyH/YcZlziqvlvPytvHKecwTcL+M/AI5pH00LnEZWszHgfP1ZKQFTZVi7F0TlF6cvsPjczddXIo0i0ZqAJuGGtZcofO3SUXw9qj+ZpCULQW/lnciHFrbRVpbHVVI/s6nYvmN4t4ZEG3fq6PTt2ffDdYiL0qDWd/9/0pL8dcHEi+PlpjzO4b4Oz2NYOJW8j78MLoR1sXOqs7mWxLfcfuuxAVLyk9xf/R2yH57npfgiM5jhyFlRtsRZ8xQwqTeX9gjtoYfxpMkmNx5HsGLuZ5LyZRgGBAOl+RJED2Y3al9znDLplBWh0dMK6a3qz4zdSojllrafHmnxOUqSV14w4WnxQYGWDV5jjXYCgtBXAKX+NtorPlU52FjuN4JfreTeFjr52xdQezKuY1DXNr3GHCB6ofngIRCjPH7s3ilCEGTnLXkYhbXd9ZZToY3EHJVO3+uUiyZqYymeCs7VUDVfKv8E1ifq0pDv1uNjViPIaOQ1foGNG2QmDuB2Hewcodq4od2yPaGVMk3od7muO1uiEXEnDmKgEZQXrw== 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)(136003)(376002)(346002)(366004)(396003)(39850400004)(316002)(54906003)(110136005)(5660300002)(30864003)(55016002)(478600001)(9686003)(8676002)(52536014)(8936002)(7696005)(6636002)(26005)(4326008)(122000001)(33656002)(64756008)(86362001)(71200400001)(66556008)(6506007)(53546011)(66446008)(83380400001)(38100700002)(66946007)(76116006)(2906002)(66476007)(186003)(579004)(357404004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U3M3R09sL0FrZEdQODhOOU43dnJiOUlsa2JqVE1qL3c1c1NGOSt0dTJHb0oy?= =?utf-8?B?UjROWEE4Smx4NGRvU3JEQ3d2S3JjWXROZmRkSWJKd0FURXNxVWN4SytQVEhM?= =?utf-8?B?V24xU0x1Z0tSQVBsdm80RFRiK28yaXZISjdYQ1FFbGd1T25ZVC9tUE1iSE5n?= =?utf-8?B?aHNkN0lWMDVIN01YejhYSnE0cHVKeTkxYzgvbjU3VmtSR0RrQlpBRmE3enM0?= =?utf-8?B?MS9mY1EzaVpnVG56ZndGR2Evb2ZGUklEdjI3TGVtbEVxRUJRUUFyTkkvQ1Rw?= =?utf-8?B?blE4cmJrYmJpcHFVYW5seGJUQ01mYkszYVQ2WUx5bEc3b094ek9BTWFWYnRq?= =?utf-8?B?TjIrNzVMWXpiMGs2aHU1dnV4dDloT0xCL0RyMCswUm02UGkxc0M5YUJCeDRR?= =?utf-8?B?UWdjZm8vUjJrRmpkcS8yR3VtRlpPeEI3ZmhOMGxGQ0puMEtmUkdQajM4UjhB?= =?utf-8?B?dHEwekc4UEYyOU5kL3BNUUNFTkMwUDBTeTBDM0xNVWYzKys4a1Y3bGpvTlhl?= =?utf-8?B?ZjBrWEludkFPdDVZZUJXcTVRbkFmQS8zazRGV1l1My9IZElKNVltRk9LVHEx?= =?utf-8?B?WGdFWHBHdGRuYWNXakRFelc4ZWgwd3ZmVGtsVUFBTGNhUU52WjJreWJzb3Zw?= =?utf-8?B?Vk1qT1FlQUFtUmJIOWI2OFdRbi9mM0VhSGdYZk1jbTFNNGE3V3BzaUxmWUp0?= =?utf-8?B?QWpDWjBJbEJhSVNXZVMwcytGdSsybFhBdUorN0o2NWZucDlWdG12dndlMVRj?= =?utf-8?B?T1paVmpoK1N0WHlaT0xpZ3FsRHVOb3gxVm1hRDZPRDZTZStZQkVKN09rRUM2?= =?utf-8?B?em9jVDVwK1pVVW50RWQ1eTNmYWVLbGxtWmVEYkptbHkrNVJxd1cyQktEWkI0?= =?utf-8?B?dmRCMnlUUTN5UFVxY2E3MDRtWmtEZ08xWnhDSFVqcjYwY1FZVWRLUFB5QzRS?= =?utf-8?B?R0kxVCtpcWU1MDU2cmZLTTRnOHVRZDFQU2ZQc3JlNml5TTVEalZ4L1ZoMm95?= =?utf-8?B?SHcvd3J1MGJwUnB1UFNtSnJ0YVp6bHhUQmd5NmtBb1JTV2VJcUI4UFUxOWUv?= =?utf-8?B?d0VYaldUSnlYeFNOOExWSTBQZnVwekVzRkxwR3dkTWZQWHFwNjJNa3VvTGpT?= =?utf-8?B?dlJGNXVKbldpMVBRQzBJRWpxVGswbXBIbUNVTitqRUtsaE5LbE82bjdMZzRI?= =?utf-8?B?QjIzQ3hRbTdGVThrYjFscEZQMG5TcW9yQ3E0QW9EWlUvbk1mVEtxSkpKVU1z?= =?utf-8?B?NjdQWVBmRDZlRndVVzFmY0RXVkJUbjYzU3J2ZFRYd1pTaTRFUVQ0R0lRSU5m?= =?utf-8?B?WFNiZkg3azNoT0ZJeS9DYVFYaEtqRytpalRSWFJFRFRpREowc210eVdzYkNO?= =?utf-8?B?Ym1sZUJJSjlZTXNQTVpIUnI5N1NIK0FjR1pNWGpKQTJZaFR2ZTF1ZHNUTCsv?= =?utf-8?B?RGdnMlk1d0FvdU1uZUNQbndCK0pKRXdlcUZIN3dBUnRWSmdsQXBwN3poUTBD?= =?utf-8?B?ajRKdWtOMjVGK1k2aTFKODh2b1NLTmtuT29acFg1bUZrZnllaHZ6eGczMVhu?= =?utf-8?B?RlAvZk1weTZCQkMrU3dYUXNZMGFwcFpwZVNDczUvQkp0M1JVVlpFSE9xU0Jl?= =?utf-8?B?RUNqVlRQeWg2YmdxSU9wUlp0ckFWM2RNSXZ1UEUzWm42bis4ZjRLUnlUR2xB?= =?utf-8?B?YWllb2pvNi9Wem1IRHE3a0pFdXpPWmZwcVErRzExajJXWkppckJ1c1c4Rzh5?= =?utf-8?Q?g3lYFTJwye4wXRCvhU=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5006 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: cd0103da-c2c5-4b4a-20ba-08d9348c259a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tM5SiS+VmMFhX9uj9zZHqs9ndoZbg796r7DCTAN8NJOHg7L38IPQGkBUsT4JMggYJ2Xzv3g5KoFGn70WtsifCJRCLExB/aYY4Rf6/T6uqTE8A25RLEdUheuouyVe7F5rCMkuAc5dKAuG7iX15dRRf/eUNP8zHbpdfjuNFsiT7T3ahOO0D0i6oJ32duoskbJEWK+eMzGeiTjnYhG7tmlffj+fnFblSWsI0S1ktrt5Qta5FWb1X/HzIRyQN3EtLJ9RdgDVcekG3j5vGW+jRcazSUs8IlpjA+kUs4GUvaLaa8xj6ooUQrmVh0j3HurQXobbdXwSgeWE1oIoM98U/hzneEgHauDl1m5dqRPXRQt8INvupXNZDWsk3aaXtW4Yzwg4YmODSdBzIjudn4AlJtW/Ifvi+5Y4IM4gXHVDKrL0E22MFomdo7/u/99us4MJ0AUcz/HQVhWhYclxwJVonPLa022y298GrMkr2qa0dEF1ZK3oqcooxt26J7g4+16ZSHIv5DKDJmpRF1ru4ZNb74yepMjaYJDMiiHAI3X9pvBLt8tVqfH0t28ECjcj48n0FH7VKcQ0kOIkU5qB4F1mbw92/k4W2hGqzPn1zc9ov/I5vbxso31sM99ojh/CK15ML4Ujiv7ifmm/1WhgtOfgOXEyvdmB3Jxf8lR8qmH5NaCKcnsJmYmtI2GJTE9xzTsicNN4 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)(36840700001)(46966006)(70206006)(356005)(9686003)(26005)(81166007)(5660300002)(54906003)(8936002)(8676002)(4326008)(110136005)(70586007)(47076005)(55016002)(36860700001)(336012)(186003)(6636002)(6506007)(2906002)(30864003)(52536014)(86362001)(83380400001)(82310400003)(7696005)(498600001)(53546011)(33656002)(357404004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2021 08:11:33.7648 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 54893c6d-af10-43d7-1c42-08d9348c2f09 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: AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6915 X-Spam-Status: No, score=-13.8 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: Mon, 21 Jun 2021 08:11:39 -0000 UGluZw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEdjYy1wYXRjaGVz IDxnY2MtcGF0Y2hlcy0NCj4gYm91bmNlcyt0YW1hci5jaHJpc3RpbmE9YXJtLmNvbUBnY2MuZ251 Lm9yZz4gT24gQmVoYWxmIE9mIFRhbWFyDQo+IENocmlzdGluYSB2aWEgR2NjLXBhdGNoZXMNCj4g U2VudDogTW9uZGF5LCBKdW5lIDE0LCAyMDIxIDE6MDYgUE0NCj4gVG86IFJpY2hhcmQgU2FuZGlm b3JkIDxSaWNoYXJkLlNhbmRpZm9yZEBhcm0uY29tPg0KPiBDYzogZ2NjLXBhdGNoZXNAZ2NjLmdu dS5vcmc7IG5kIDxuZEBhcm0uY29tPjsgUmljaGFyZCBCaWVuZXINCj4gPHJndWVudGhlckBzdXNl LmRlPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIDEvNF1taWRkbGUtZW5kIFZlY3Q6IEFkZCBzdXBw b3J0IGZvciBkb3QtcHJvZHVjdA0KPiB3aGVyZSB0aGUgc2lnbiBmb3IgdGhlIG11bHRpcGxpY2Fu dCBjaGFuZ2VzLg0KPiANCj4gSGkgUmljaGFyZCwNCj4gDQo+IEkndmUgYXR0YWNoZWQgYSBuZXcg dmVyc2lvbiBvZiB0aGUgcGF0Y2ggd2l0aCB0aGUgY2hhbmdlcy4NCj4gSSBoYXZlIGFsc28gYWRk ZWQgNyBuZXcgdGVzdHMgaW4gdGhlIHRlc3RzdWl0ZSB0byBjaGVjayB0aGUgY2FzZXMgeW91DQo+ IG1lbnRpb25lZC4NCj4gDQo+IEJvb3RzdHJhcHBlZCBSZWd0ZXN0ZWQgb24gYWFyY2g2NC1ub25l LWxpbnV4LWdudSBhbmQgbm8gaXNzdWVzLg0KPiANCj4gT2sgZm9yIG1hc3Rlcj8NCj4gDQo+IFRo YW5rcywNCj4gVGFtYXINCj4gDQo+IGdjYy9DaGFuZ2VMb2c6DQo+IA0KPiAJKiBvcHRhYnMuZGVm ICh1c2RvdF9wcm9kX29wdGFiKTogTmV3Lg0KPiAJKiBkb2MvbWQudGV4aTogRG9jdW1lbnQgaXQg YW5kIGNsYXJpZnkgb3RoZXIgZG90IHByb2Qgb3B0YWJzLg0KPiAJKiBvcHRhYnMtdHJlZS5oIChl bnVtIG9wdGFiX3N1YnR5cGUpOiBBZGQNCj4gb3B0YWJfdmVjdG9yX21peGVkX3NpZ24uDQo+IAkq IG9wdGFicy10cmVlLmMgKG9wdGFiX2Zvcl90cmVlX2NvZGUpOiBTdXBwb3J0IHVzZG90X3Byb2Rf b3B0YWIuDQo+IAkqIG9wdGFicy5jIChleHBhbmRfd2lkZW5fcGF0dGVybl9leHByKTogTGlrZXdp c2UuDQo+IAkqIHRyZWUtY2ZnLmMgKHZlcmlmeV9naW1wbGVfYXNzaWduX3Rlcm5hcnkpOiBMaWtl d2lzZS4NCj4gCSogdHJlZS12ZWN0LWxvb3AuYyAodmVjdG9yaXphYmxlX3JlZHVjdGlvbik6IFF1 ZXJ5IGRvdC1wcm9kdWN0IGtpbmQuDQo+IAkqIHRyZWUtdmVjdC1wYXR0ZXJucy5jICh2ZWN0X3N1 cHBvcnRhYmxlX2RpcmVjdF9vcHRhYl9wKTogVGFrZQ0KPiBvcHRpb25hbA0KPiAJb3B0YWIgc3Vi dHlwZS4NCj4gCSh2ZWN0X3dpZGVuZWRfb3BfdHJlZSk6IE9wdGlvbmFsbHkgaWdub3JlDQo+IAlt aXNtYXRjaCB0eXBlcy4NCj4gCSh2ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm4pOiBTdXBwb3J0 IHVzZG90X3Byb2Rfb3B0YWIuDQo+IA0KPiAtLS0gaW5saW5lIGNvcHkgb2YgcGF0Y2ggLS0tDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2NjL2RvYy9tZC50ZXhpIGluZGV4 DQo+IDAwY2FmMzg0NGNjZjhlYTI4OWQ1ODE4Mzk3NjY1MDJkNTFiOWU4ZDcuLjEzNTZhZmI3Zjkw M2YxN2MxOTgxMDM1NjJiDQo+IDVjZDE0NWVjYjk5NjZmIDEwMDY0NA0KPiAtLS0gYS9nY2MvZG9j L21kLnRleGkNCj4gKysrIGIvZ2NjL2RvYy9tZC50ZXhpDQo+IEBAIC01NDQ2LDEzICs1NDQ2LDU1 IEBAIExpa2UgQHNhbXB7Zm9sZF9sZWZ0X3BsdXNfQHZhcnttfX0sIGJ1dCB0YWtlcw0KPiBhbiBh ZGRpdGlvbmFsIG1hc2sgb3BlcmFuZA0KPiANCj4gIEBjaW5kZXggQGNvZGV7c2RvdF9wcm9kQHZh cnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybiAgQGl0ZW0NCj4gQHNhbXB7c2RvdF9wcm9kQHZhcntt fX0NCj4gKw0KPiArQ29tcHV0ZSB0aGUgc3VtIG9mIHRoZSBwcm9kdWN0cyBvZiB0d28gc2lnbmVk IGVsZW1lbnRzLg0KPiArT3BlcmFuZCAxIGFuZCBvcGVyYW5kIDIgYXJlIG9mIHRoZSBzYW1lIG1v ZGUuIFRoZWlyIHByb2R1Y3QsIHdoaWNoIGlzDQo+ICtvZiBhIHdpZGVyIG1vZGUsIGlzIGNvbXB1 dGVkIGFuZCBhZGRlZCB0byBvcGVyYW5kIDMuDQo+ICtPcGVyYW5kIDMgaXMgb2YgYSBtb2RlIGVx dWFsIG9yIHdpZGVyIHRoYW4gdGhlIG1vZGUgb2YgdGhlIHByb2R1Y3QuIFRoZQ0KPiArcmVzdWx0 IGlzIHBsYWNlZCBpbiBvcGVyYW5kIDAsIHdoaWNoIGlzIG9mIHRoZSBzYW1lIG1vZGUgYXMgb3Bl cmFuZCAzLg0KPiArDQo+ICtTZW1hbnRpY2FsbHkgdGhlIGV4cHJlc3Npb25zIHBlcmZvcm0gdGhl IG11bHRpcGxpY2F0aW9uIGluIHRoZQ0KPiArZm9sbG93aW5nIHNpZ25zDQo+ICsNCj4gK0BzbWFs bGV4YW1wbGUNCj4gK3Nkb3Q8c2lnbmVkIGMsIHNpZ25lZCBhLCBzaWduZWQgYj4gPT0NCj4gKyAg IHJlcyA9IHNpZ24tZXh0IChhKSAqIHNpZ24tZXh0IChiKSArIGMgQGRvdHN7fSBAZW5kIHNtYWxs ZXhhbXBsZQ0KPiArDQo+ICBAY2luZGV4IEBjb2Rle3Vkb3RfcHJvZEB2YXJ7bX19IGluc3RydWN0 aW9uIHBhdHRlcm4gLUBpdGVteA0KPiBAc2FtcHt1ZG90X3Byb2RAdmFye219fSAtQ29tcHV0ZSB0 aGUgc3VtIG9mIHRoZSBwcm9kdWN0cyBvZiB0d28NCj4gc2lnbmVkL3Vuc2lnbmVkIGVsZW1lbnRz Lg0KPiAtT3BlcmFuZCAxIGFuZCBvcGVyYW5kIDIgYXJlIG9mIHRoZSBzYW1lIG1vZGUuIFRoZWly IHByb2R1Y3QsIHdoaWNoIGlzIG9mIGENCj4gLXdpZGVyIG1vZGUsIGlzIGNvbXB1dGVkIGFuZCBh ZGRlZCB0byBvcGVyYW5kIDMuIE9wZXJhbmQgMyBpcyBvZiBhIG1vZGUNCj4gZXF1YWwgb3IgLXdp ZGVyIHRoYW4gdGhlIG1vZGUgb2YgdGhlIHByb2R1Y3QuIFRoZSByZXN1bHQgaXMgcGxhY2VkIGlu IG9wZXJhbmQNCj4gMCwgd2hpY2ggLWlzIG9mIHRoZSBzYW1lIG1vZGUgYXMgb3BlcmFuZCAzLg0K PiArQGl0ZW0gQHNhbXB7dWRvdF9wcm9kQHZhcnttfX0NCj4gKw0KPiArQ29tcHV0ZSB0aGUgc3Vt IG9mIHRoZSBwcm9kdWN0cyBvZiB0d28gdW5zaWduZWQgZWxlbWVudHMuDQo+ICtPcGVyYW5kIDEg YW5kIG9wZXJhbmQgMiBhcmUgb2YgdGhlIHNhbWUgbW9kZS4gVGhlaXIgcHJvZHVjdCwgd2hpY2gg aXMNCj4gK29mIGEgd2lkZXIgbW9kZSwgaXMgY29tcHV0ZWQgYW5kIGFkZGVkIHRvIG9wZXJhbmQg My4NCj4gK09wZXJhbmQgMyBpcyBvZiBhIG1vZGUgZXF1YWwgb3Igd2lkZXIgdGhhbiB0aGUgbW9k ZSBvZiB0aGUgcHJvZHVjdC4gVGhlDQo+ICtyZXN1bHQgaXMgcGxhY2VkIGluIG9wZXJhbmQgMCwg d2hpY2ggaXMgb2YgdGhlIHNhbWUgbW9kZSBhcyBvcGVyYW5kIDMuDQo+ICsNCj4gK1NlbWFudGlj YWxseSB0aGUgZXhwcmVzc2lvbnMgcGVyZm9ybSB0aGUgbXVsdGlwbGljYXRpb24gaW4gdGhlDQo+ ICtmb2xsb3dpbmcgc2lnbnMNCj4gKw0KPiArQHNtYWxsZXhhbXBsZQ0KPiArdWRvdDx1bnNpZ25l ZCBjLCB1bnNpZ25lZCBhLCB1bnNpZ25lZCBiPiA9PQ0KPiArICAgcmVzID0gemVyby1leHQgKGEp ICogemVyby1leHQgKGIpICsgYyBAZG90c3t9IEBlbmQgc21hbGxleGFtcGxlDQo+ICsNCj4gKw0K PiArDQo+ICtAY2luZGV4IEBjb2Rle3VzZG90X3Byb2RAdmFye219fSBpbnN0cnVjdGlvbiBwYXR0 ZXJuDQo+ICtAaXRlbSBAc2FtcHt1c2RvdF9wcm9kQHZhcnttfX0NCj4gK0NvbXB1dGUgdGhlIHN1 bSBvZiB0aGUgcHJvZHVjdHMgb2YgZWxlbWVudHMgb2YgZGlmZmVyZW50IHNpZ25zLg0KPiArT3Bl cmFuZCAxIG11c3QgYmUgdW5zaWduZWQgYW5kIG9wZXJhbmQgMiBzaWduZWQuIFRoZWlyDQo+ICtw cm9kdWN0LCB3aGljaCBpcyBvZiBhIHdpZGVyIG1vZGUsIGlzIGNvbXB1dGVkIGFuZCBhZGRlZCB0 byBvcGVyYW5kIDMuDQo+ICtPcGVyYW5kIDMgaXMgb2YgYSBtb2RlIGVxdWFsIG9yIHdpZGVyIHRo YW4gdGhlIG1vZGUgb2YgdGhlIHByb2R1Y3QuIFRoZQ0KPiArcmVzdWx0IGlzIHBsYWNlZCBpbiBv cGVyYW5kIDAsIHdoaWNoIGlzIG9mIHRoZSBzYW1lIG1vZGUgYXMgb3BlcmFuZCAzLg0KPiArDQo+ ICtTZW1hbnRpY2FsbHkgdGhlIGV4cHJlc3Npb25zIHBlcmZvcm0gdGhlIG11bHRpcGxpY2F0aW9u IGluIHRoZSBmb2xsb3dpbmcNCj4gc2lnbnMNCj4gKw0KPiArQHNtYWxsZXhhbXBsZQ0KPiArdXNk b3Q8dW5zaWduZWQgYywgdW5zaWduZWQgYSwgc2lnbmVkIGI+ID09DQo+ICsgICByZXMgPSAoKHVu c2lnbmVkLWNvbnYpIHNpZ24tZXh0IChhKSkgKiB6ZXJvLWV4dCAoYikgKyBjDQo+ICtAZG90c3t9 DQo+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPiANCj4gIEBjaW5kZXggQGNvZGV7c3NhZEB2YXJ7bX19 IGluc3RydWN0aW9uIHBhdHRlcm4NCj4gIEBpdGVtIEBzYW1we3NzYWRAdmFye219fQ0KPiBkaWZm IC0tZ2l0IGEvZ2NjL29wdGFicy10cmVlLmggYi9nY2Mvb3B0YWJzLXRyZWUuaA0KPiBpbmRleA0K PiBjM2FhYTFhNDE2OTkxZTg1NmQzZTI0ZGE0NTk2OGE5MmViYWRhODJjLi5mYmQyYjA2YjhkYmZk NTYwZGZiNjZiMzENCj4gNDgzMGU2YjU2NGIzN2FiYiAxMDA2NDQNCj4gLS0tIGEvZ2NjL29wdGFi cy10cmVlLmgNCj4gKysrIGIvZ2NjL29wdGFicy10cmVlLmgNCj4gQEAgLTI5LDcgKzI5LDggQEAg ZW51bSBvcHRhYl9zdWJ0eXBlDQo+ICB7DQo+ICAgIG9wdGFiX2RlZmF1bHQsDQo+ICAgIG9wdGFi X3NjYWxhciwNCj4gLSAgb3B0YWJfdmVjdG9yDQo+ICsgIG9wdGFiX3ZlY3RvciwNCj4gKyAgb3B0 YWJfdmVjdG9yX21peGVkX3NpZ24NCj4gIH07DQo+IA0KPiAgLyogUmV0dXJuIHRoZSBvcHRhYiB1 c2VkIGZvciBjb21wdXRpbmcgdGhlIGdpdmVuIG9wZXJhdGlvbiBvbiB0aGUgdHlwZQ0KPiBnaXZl biBieQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy10cmVlLmMgYi9nY2Mvb3B0YWJzLXRyZWUu Yw0KPiBpbmRleA0KPiA5NWZmZTM5N2MyM2U4MGMxMDVhZmVhNTJlOWQ0NzIxNmJmNTJmNTVhLi5l ZWI1YWVlZDMyMDJjYzY5NzFiNjQ0Nzk5NA0KPiBiYzUzMTFlOWMwMTBiYiAxMDA2NDQNCj4gLS0t IGEvZ2NjL29wdGFicy10cmVlLmMNCj4gKysrIGIvZ2NjL29wdGFicy10cmVlLmMNCj4gQEAgLTEy Nyw3ICsxMjcsMTIgQEAgb3B0YWJfZm9yX3RyZWVfY29kZSAoZW51bSB0cmVlX2NvZGUgY29kZSwN Cj4gY29uc3RfdHJlZSB0eXBlLA0KPiAgICAgICAgcmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUp ID8gdXN1bV93aWRlbl9vcHRhYiA6DQo+IHNzdW1fd2lkZW5fb3B0YWI7DQo+IA0KPiAgICAgIGNh c2UgRE9UX1BST0RfRVhQUjoNCj4gLSAgICAgIHJldHVybiBUWVBFX1VOU0lHTkVEICh0eXBlKSA/ IHVkb3RfcHJvZF9vcHRhYiA6IHNkb3RfcHJvZF9vcHRhYjsNCj4gKyAgICAgIHsNCj4gKwlpZiAo c3VidHlwZSA9PSBvcHRhYl92ZWN0b3JfbWl4ZWRfc2lnbikNCj4gKwkgIHJldHVybiB1c2RvdF9w cm9kX29wdGFiOw0KPiArDQo+ICsJcmV0dXJuIChUWVBFX1VOU0lHTkVEICh0eXBlKSA/IHVkb3Rf cHJvZF9vcHRhYiA6DQo+IHNkb3RfcHJvZF9vcHRhYik7DQo+ICsgICAgICB9DQo+IA0KPiAgICAg IGNhc2UgU0FEX0VYUFI6DQo+ICAgICAgICByZXR1cm4gVFlQRV9VTlNJR05FRCAodHlwZSkgPyB1 c2FkX29wdGFiIDogc3NhZF9vcHRhYjsNCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMuYyBiL2dj Yy9vcHRhYnMuYw0KPiBpbmRleA0KPiA2MmE2YmRiNGM1OWJmODI2M2M0OTkyNDU3OTU1NzYxOTk2 MDZkMzcyLi4xNGQ4YWQyZjMzZmQ3NTM4ODQzNWZlOTEyMw0KPiA4MGUxNzdmOGYzYzU0YiAxMDA2 NDQNCj4gLS0tIGEvZ2NjL29wdGFicy5jDQo+ICsrKyBiL2djYy9vcHRhYnMuYw0KPiBAQCAtMjYy LDYgKzI2MiwxMSBAQCBleHBhbmRfd2lkZW5fcGF0dGVybl9leHByIChzZXBvcHMgb3BzLCBydHgg b3AwLA0KPiBydHggb3AxLCBydHggd2lkZV9vcCwNCj4gICAgYm9vbCBzYm9vbCA9IGZhbHNlOw0K PiANCj4gICAgb3BybmQwID0gb3BzLT5vcDA7DQo+ICsgIGlmIChub3BzID49IDIpDQo+ICsgICAg b3BybmQxID0gb3BzLT5vcDE7DQo+ICsgIGlmIChub3BzID49IDMpDQo+ICsgICAgb3BybmQyID0g b3BzLT5vcDI7DQo+ICsNCj4gICAgdG1vZGUwID0gVFlQRV9NT0RFIChUUkVFX1RZUEUgKG9wcm5k MCkpOw0KPiAgICBpZiAob3BzLT5jb2RlID09IFZFQ19VTlBBQ0tfRklYX1RSVU5DX0hJX0VYUFIN Cj4gICAgICAgIHx8IG9wcy0+Y29kZSA9PSBWRUNfVU5QQUNLX0ZJWF9UUlVOQ19MT19FWFBSKQ0K PiBAQCAtMjg1LDYgKzI5MCwyNyBAQCBleHBhbmRfd2lkZW5fcGF0dGVybl9leHByIChzZXBvcHMg b3BzLCBydHggb3AwLA0KPiBydHggb3AxLCBydHggd2lkZV9vcCwNCj4gIAkgICA/IHZlY191bnBh Y2tzX3Nib29sX2hpX29wdGFiIDogdmVjX3VucGFja3Nfc2Jvb2xfbG9fb3B0YWIpOw0KPiAgICAg ICAgc2Jvb2wgPSB0cnVlOw0KPiAgICAgIH0NCj4gKyAgZWxzZSBpZiAob3BzLT5jb2RlID09IERP VF9QUk9EX0VYUFIpDQo+ICsgICAgew0KPiArICAgICAgZW51bSBvcHRhYl9zdWJ0eXBlIHN1YnR5 cGUgPSBvcHRhYl9kZWZhdWx0Ow0KPiArICAgICAgc2lnbm9wIHNpZ24xID0gVFlQRV9TSUdOIChU UkVFX1RZUEUgKG9wcm5kMCkpOw0KPiArICAgICAgc2lnbm9wIHNpZ24yID0gVFlQRV9TSUdOIChU UkVFX1RZUEUgKG9wcm5kMSkpOw0KPiArICAgICAgaWYgKHNpZ24xID09IHNpZ24yKQ0KPiArCTsN Cj4gKyAgICAgIGVsc2UgaWYgKHNpZ24xID09IFNJR05FRCAmJiBzaWduMiA9PSBVTlNJR05FRCkN Cj4gKwl7DQo+ICsJICBzdWJ0eXBlID0gb3B0YWJfdmVjdG9yX21peGVkX3NpZ247DQo+ICsJICAv KiBTYW1lIGFzIG9wdGFiX3ZlY3Rvcl9taXhlZF9zaWduIGJ1dCBmbGlwIHRoZSBvcGVyYW5kcy4g ICovDQo+ICsJICBzdGQ6OnN3YXAgKG9wMCwgb3AxKTsNCj4gKwl9DQo+ICsgICAgICBlbHNlIGlm IChzaWduMSA9PSBVTlNJR05FRCAmJiBzaWduMiA9PSBTSUdORUQpDQo+ICsJc3VidHlwZSA9IG9w dGFiX3ZlY3Rvcl9taXhlZF9zaWduOw0KPiArICAgICAgZWxzZQ0KPiArCWdjY191bnJlYWNoYWJs ZSAoKTsNCj4gKw0KPiArICAgICAgd2lkZW5fcGF0dGVybl9vcHRhYg0KPiArCT0gb3B0YWJfZm9y X3RyZWVfY29kZSAob3BzLT5jb2RlLCBUUkVFX1RZUEUgKG9wcm5kMCksIHN1YnR5cGUpOw0KPiAr ICAgIH0NCj4gICAgZWxzZQ0KPiAgICAgIHdpZGVuX3BhdHRlcm5fb3B0YWINCj4gICAgICAgID0g b3B0YWJfZm9yX3RyZWVfY29kZSAob3BzLT5jb2RlLCBUUkVFX1RZUEUgKG9wcm5kMCksIG9wdGFi X2RlZmF1bHQpOw0KPiBAQCAtMjk4LDEwICszMjQsNyBAQCBleHBhbmRfd2lkZW5fcGF0dGVybl9l eHByIChzZXBvcHMgb3BzLCBydHggb3AwLA0KPiBydHggb3AxLCBydHggd2lkZV9vcCwNCj4gICAg Z2NjX2Fzc2VydCAoaWNvZGUgIT0gQ09ERV9GT1Jfbm90aGluZyk7DQo+IA0KPiAgICBpZiAobm9w cyA+PSAyKQ0KPiAtICAgIHsNCj4gLSAgICAgIG9wcm5kMSA9IG9wcy0+b3AxOw0KPiAtICAgICAg dG1vZGUxID0gVFlQRV9NT0RFIChUUkVFX1RZUEUgKG9wcm5kMSkpOw0KPiAtICAgIH0NCj4gKyAg ICB0bW9kZTEgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3BybmQxKSk7DQo+ICAgIGVsc2UgaWYg KHNib29sKQ0KPiAgICAgIHsNCj4gICAgICAgIG5vcHMgPSAyOw0KPiBAQCAtMzE2LDcgKzMzOSw2 IEBAIGV4cGFuZF93aWRlbl9wYXR0ZXJuX2V4cHIgKHNlcG9wcyBvcHMsIHJ0eCBvcDAsDQo+IHJ0 eCBvcDEsIHJ0eCB3aWRlX29wLA0KPiAgICAgIHsNCj4gICAgICAgIGdjY19hc3NlcnQgKHRtb2Rl MSA9PSB0bW9kZTApOw0KPiAgICAgICAgZ2NjX2Fzc2VydCAob3AxKTsNCj4gLSAgICAgIG9wcm5k MiA9IG9wcy0+b3AyOw0KPiAgICAgICAgd21vZGUgPSBUWVBFX01PREUgKFRSRUVfVFlQRSAob3By bmQyKSk7DQo+ICAgICAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRhYnMuZGVmIGIvZ2Nj L29wdGFicy5kZWYNCj4gaW5kZXgNCj4gYjE5MmE5ZDA3MGI4YWE3MmU1Njc2YjJlYWEwMjBiNWJk ZDdmZmNjOC4uZjQ3MGMyMTY4Mzc4Y2VjODQwZWRmN2ZiZA0KPiBiN2MxODYxNWJhYWU5MjggMTAw NjQ0DQo+IC0tLSBhL2djYy9vcHRhYnMuZGVmDQo+ICsrKyBiL2djYy9vcHRhYnMuZGVmDQo+IEBA IC0zNTIsNiArMzUyLDcgQEAgT1BUQUJfRCAodWF2Z19jZWlsX29wdGFiLCAidWF2ZyRhM19jZWls IikNCj4gIE9QVEFCX0QgKHNkb3RfcHJvZF9vcHRhYiwgInNkb3RfcHJvZCRJJGEiKQ0KPiAgT1BU QUJfRCAoc3N1bV93aWRlbl9vcHRhYiwgIndpZGVuX3NzdW0kSSRhMyIpDQo+ICBPUFRBQl9EICh1 ZG90X3Byb2Rfb3B0YWIsICJ1ZG90X3Byb2QkSSRhIikNCj4gK09QVEFCX0QgKHVzZG90X3Byb2Rf b3B0YWIsICJ1c2RvdF9wcm9kJEkkYSIpDQo+ICBPUFRBQl9EICh1c3VtX3dpZGVuX29wdGFiLCAi d2lkZW5fdXN1bSRJJGEzIikNCj4gIE9QVEFCX0QgKHVzYWRfb3B0YWIsICJ1c2FkJEkkYSIpDQo+ ICBPUFRBQl9EIChzc2FkX29wdGFiLCAic3NhZCRJJGEiKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUtY2ZnLmMgYi9nY2MvdHJlZS1jZmcuYw0KPiBpbmRleA0KPiAwMjI1NjU4MGM5ODZiZTQyNjU2 NGFkYzExMDVlZDJlMWM2OWIwZWZjLi5mMjUwZjBmZTk5YmVjNTI3OGEwOTYzZTkyYg0KPiBjMWQy YTYxZDllZWU3MCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtY2ZnLmMNCj4gKysrIGIvZ2NjL3Ry ZWUtY2ZnLmMNCj4gQEAgLTQ0MTIsNyArNDQxMiw4IEBAIHZlcmlmeV9naW1wbGVfYXNzaWduX3Rl cm5hcnkgKGdhc3NpZ24gKnN0bXQpDQo+ICAJCSAgJiYgIVNDQUxBUl9GTE9BVF9UWVBFX1AgKHJo czFfdHlwZSkpDQo+ICAJCSB8fCAoIUlOVEVHUkFMX1RZUEVfUCAobGhzX3R5cGUpDQo+ICAJCSAg ICAgJiYgIVNDQUxBUl9GTE9BVF9UWVBFX1AgKGxoc190eXBlKSkpKQ0KPiAtCSAgICB8fCAhdHlw ZXNfY29tcGF0aWJsZV9wIChyaHMxX3R5cGUsIHJoczJfdHlwZSkNCj4gKwkgICAgLyogcmhzMV90 eXBlIGFuZCByaHMyX3R5cGUgbWF5IGRpZmZlciBpbiBzaWduLiAgKi8NCj4gKwkgICAgfHwgIXRy ZWVfbm9wX2NvbnZlcnNpb25fcCAocmhzMV90eXBlLCByaHMyX3R5cGUpDQo+ICAJICAgIHx8ICF1 c2VsZXNzX3R5cGVfY29udmVyc2lvbl9wIChsaHNfdHlwZSwgcmhzM190eXBlKQ0KPiAgCSAgICB8 fCBtYXliZV9sdCAoR0VUX01PREVfU0laRSAoZWxlbWVudF9tb2RlIChyaHMzX3R5cGUpKSwNCj4g IAkJCSAyICogR0VUX01PREVfU0laRSAoZWxlbWVudF9tb2RlIChyaHMxX3R5cGUpKSkpDQo+IGRp ZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWxvb3AuYyBiL2djYy90cmVlLXZlY3QtbG9vcC5jDQo+ IGluZGV4DQo+IGVlNzk4MDg0NzJjZWE4ODc4NmU1YzA0NzU2OTgwYjQ1NmMzZjVhMDIuLmQyYWNj ZjNjMzVhZGUyNWU4ZDJmZjRlZTg4DQo+IDEzNjY1MWUzZTg3Yzc0IDEwMDY0NA0KPiAtLS0gYS9n Y2MvdHJlZS12ZWN0LWxvb3AuYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuYw0KPiBAQCAt NjY2Myw2ICs2NjYzLDEyIEBAIHZlY3Rvcml6YWJsZV9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywNCj4gICAgYm9vbCBsYW5lX3JlZHVjX2NvZGVfcA0KPiAgICAgID0gKGNvZGUg PT0gRE9UX1BST0RfRVhQUiB8fCBjb2RlID09IFdJREVOX1NVTV9FWFBSIHx8IGNvZGUgPT0NCj4g U0FEX0VYUFIpOw0KPiAgICBpbnQgb3BfdHlwZSA9IFRSRUVfQ09ERV9MRU5HVEggKGNvZGUpOw0K PiArICBlbnVtIG9wdGFiX3N1YnR5cGUgb3B0YWJfcXVlcnlfa2luZCA9IG9wdGFiX3ZlY3RvcjsN Cj4gKyAgaWYgKGNvZGUgPT0gRE9UX1BST0RfRVhQUg0KPiArICAgICAgJiYgVFlQRV9TSUdOIChU UkVFX1RZUEUgKGdpbXBsZV9hc3NpZ25fcmhzMSAoc3RtdCkpKQ0KPiArCSAgICE9IFRZUEVfU0lH TiAoVFJFRV9UWVBFIChnaW1wbGVfYXNzaWduX3JoczIgKHN0bXQpKSkpDQo+ICsgICAgb3B0YWJf cXVlcnlfa2luZCA9IG9wdGFiX3ZlY3Rvcl9taXhlZF9zaWduOw0KPiArDQo+IA0KPiAgICBzY2Fs YXJfZGVzdCA9IGdpbXBsZV9hc3NpZ25fbGhzIChzdG10KTsNCj4gICAgc2NhbGFyX3R5cGUgPSBU UkVFX1RZUEUgKHNjYWxhcl9kZXN0KTsNCj4gQEAgLTcxOTAsNyArNzE5Niw3IEBAIHZlY3Rvcml6 YWJsZV9yZWR1Y3Rpb24gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gICAgICAgIGJvb2wg b2sgPSB0cnVlOw0KPiANCj4gICAgICAgIC8qIDQuMS4gY2hlY2sgc3VwcG9ydCBmb3IgdGhlIG9w ZXJhdGlvbiBpbiB0aGUgbG9vcCAgKi8NCj4gLSAgICAgIG9wdGFiIG9wdGFiID0gb3B0YWJfZm9y X3RyZWVfY29kZSAoY29kZSwgdmVjdHlwZV9pbiwgb3B0YWJfdmVjdG9yKTsNCj4gKyAgICAgIG9w dGFiIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoY29kZSwgdmVjdHlwZV9pbiwNCj4gb3B0 YWJfcXVlcnlfa2luZCk7DQo+ICAgICAgICBpZiAoIW9wdGFiKQ0KPiAgCXsNCj4gIAkgIGlmIChk dW1wX2VuYWJsZWRfcCAoKSkNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMu YyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMuYw0KPiBpbmRleA0KPiBjNmI2ZmVhZGI4ZDhkNWNj NTdkZWQxOTJjZDY4ZGQ1NGI5MTg1YWVmLi43NzYwNWU1NWRlYzdiNGY2YjBhMWUxZmQNCj4gYWZh NjMxM2I5ODdmYTEyYyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jDQo+ ICsrKyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMuYw0KPiBAQCAtMTkxLDkgKzE5MSw5IEBAIHZl Y3RfZ2V0X2V4dGVybmFsX2RlZl9lZGdlICh2ZWNfaW5mbyAqdmluZm8sIHRyZWUNCj4gdmFyKQ0K PiAgfQ0KPiANCj4gIC8qIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgYSB2ZWN0 b3IgdmVyc2lvbiBvZiBDT0RFLA0KPiAtICAgd2hlcmUgQ09ERSBpcyBrbm93biB0byBtYXAgdG8g YSBkaXJlY3Qgb3B0YWIuICBJVFlQRSBzcGVjaWZpZXMNCj4gLSAgIHRoZSB0eXBlIG9mIChzb21l IG9mKSB0aGUgc2NhbGFyIGlucHV0cyBhbmQgT1RZUEUgc3BlY2lmaWVzIHRoZQ0KPiAtICAgdHlw ZSBvZiB0aGUgc2NhbGFyIHJlc3VsdC4NCj4gKyAgIHdoZXJlIENPREUgaXMga25vd24gdG8gbWFw IHRvIGEgZGlyZWN0IG9wdGFiIHdpdGggdGhlIGdpdmVuIFNVQlRZUEUuDQo+ICsgICBJVFlQRSBz cGVjaWZpZXMgdGhlIHR5cGUgb2YgKHNvbWUgb2YpIHRoZSBzY2FsYXIgaW5wdXRzIGFuZCBPVFlQ RQ0KPiArICAgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBzY2FsYXIgcmVzdWx0Lg0KPiANCj4g ICAgIElmIENPREUgYWxsb3dzIHRoZSBpbnB1dHMgYW5kIG91dHB1dHMgdG8gaGF2ZSBkaWZmZXJl bnQgdHlwZQ0KPiAgICAgKHN1Y2ggYXMgZm9yIFdJREVOX1NVTV9FWFBSKSwgaXQgaXMgdGhlIGlu cHV0IG1vZGUgcmF0aGVyDQo+IEBAIC0yMDgsNyArMjA4LDggQEAgdmVjdF9nZXRfZXh0ZXJuYWxf ZGVmX2VkZ2UgKHZlY19pbmZvICp2aW5mbywgdHJlZQ0KPiB2YXIpDQo+ICBzdGF0aWMgYm9vbA0K PiAgdmVjdF9zdXBwb3J0YWJsZV9kaXJlY3Rfb3B0YWJfcCAodmVjX2luZm8gKnZpbmZvLCB0cmVl IG90eXBlLCB0cmVlX2NvZGUNCj4gY29kZSwNCj4gIAkJCQkgdHJlZSBpdHlwZSwgdHJlZSAqdmVj b3R5cGVfb3V0LA0KPiAtCQkJCSB0cmVlICp2ZWNpdHlwZV9vdXQgPSBOVUxMKQ0KPiArCQkJCSB0 cmVlICp2ZWNpdHlwZV9vdXQgPSBOVUxMLA0KPiArCQkJCSBlbnVtIG9wdGFiX3N1YnR5cGUgc3Vi dHlwZSA9DQo+IG9wdGFiX2RlZmF1bHQpDQo+ICB7DQo+ICAgIHRyZWUgdmVjaXR5cGUgPSBnZXRf dmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUgKHZpbmZvLCBpdHlwZSk7DQo+ICAgIGlmICghdmVjaXR5 cGUpDQo+IEBAIC0yMTgsNyArMjE5LDcgQEAgdmVjdF9zdXBwb3J0YWJsZV9kaXJlY3Rfb3B0YWJf cCAodmVjX2luZm8gKnZpbmZvLA0KPiB0cmVlIG90eXBlLCB0cmVlX2NvZGUgY29kZSwNCj4gICAg aWYgKCF2ZWNvdHlwZSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+IA0KPiAtICBvcHRhYiBvcHRh YiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHZlY2l0eXBlLCBvcHRhYl9kZWZhdWx0KTsN Cj4gKyAgb3B0YWIgb3B0YWIgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjb2RlLCB2ZWNpdHlwZSwg c3VidHlwZSk7DQo+ICAgIGlmICghb3B0YWIpDQo+ICAgICAgcmV0dXJuIGZhbHNlOw0KPiANCj4g QEAgLTUyMSw2ICs1MjIsOSBAQCB2ZWN0X2pvdXN0X3dpZGVuZWRfdHlwZSAodHJlZSB0eXBlLCB0 cmVlIG5ld190eXBlLA0KPiB0cmVlICpjb21tb25fdHlwZSkNCj4gICAgdW5zaWduZWQgaW50IHBy ZWNpc2lvbiA9IE1BWCAoVFlQRV9QUkVDSVNJT04gKCpjb21tb25fdHlwZSksDQo+ICAJCQkJVFlQ RV9QUkVDSVNJT04gKG5ld190eXBlKSk7DQo+ICAgIHByZWNpc2lvbiAqPSAyOw0KPiArDQo+ICsg IC8qIFRoZSByZXN1bHRpbmcgYXBwbGljYXRpb24gaXMgdW5zaWduZWQsIGNoZWNrIGlmIHdlIGhh dmUgZW5vdWdoDQo+ICsgICAgIHByZWNpc2lvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uICAq Lw0KPiAgICBpZiAocHJlY2lzaW9uICogMiA+IFRZUEVfUFJFQ0lTSU9OICh0eXBlKSkNCj4gICAg ICByZXR1cm4gZmFsc2U7DQo+IA0KPiBAQCAtNTM5LDYgKzU0MywxMCBAQCB2ZWN0X2pvdXN0X3dp ZGVuZWRfdHlwZSAodHJlZSB0eXBlLCB0cmVlDQo+IG5ld190eXBlLCB0cmVlICpjb21tb25fdHlw ZSkNCj4gICAgIHRvIGEgdHlwZSB0aGF0IChhKSBpcyBuYXJyb3dlciB0aGFuIHRoZSByZXN1bHQg b2YgU1RNVF9JTkZPIGFuZA0KPiAgICAgKGIpIGNhbiBob2xkIGFsbCBsZWFmIG9wZXJhbmQgdmFs dWVzLg0KPiANCj4gKyAgIElmIFNVQlRZUEUgdGhlbiBhbGxvdyB0aGF0IHRoZSBzaWducyBvZiB0 aGUgb3BlcmFuZHMNCj4gKyAgIG1heSBkaWZmZXIgaW4gc2lnbnMgYnV0IG5vdCBpbiBwcmVjaXNp b24uICBTVUJUWVBFIGlzIHVwZGF0ZWQgdG8gcmVmbGVjdA0KPiArICAgdGhpcy4NCj4gKw0KPiAg ICAgUmV0dXJuIDAgaWYgU1RNVF9JTkZPIGlzbid0IHN1Y2ggYSB0cmVlLCBvciBpZiBubyBzdWNo IENPTU1PTl9UWVBFDQo+ICAgICBleGlzdHMuICAqLw0KPiANCj4gQEAgLTU0Niw3ICs1NTQsOCBA QCBzdGF0aWMgdW5zaWduZWQgaW50DQo+ICB2ZWN0X3dpZGVuZWRfb3BfdHJlZSAodmVjX2luZm8g KnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywNCj4gdHJlZV9jb2RlIGNvZGUsDQo+ICAJ CSAgICAgIHRyZWVfY29kZSB3aWRlbmVkX2NvZGUsIGJvb2wgc2hpZnRfcCwNCj4gIAkJICAgICAg dW5zaWduZWQgaW50IG1heF9ub3BzLA0KPiAtCQkgICAgICB2ZWN0X3VucHJvbW90ZWRfdmFsdWUg KnVucHJvbSwgdHJlZSAqY29tbW9uX3R5cGUpDQo+ICsJCSAgICAgIHZlY3RfdW5wcm9tb3RlZF92 YWx1ZSAqdW5wcm9tLCB0cmVlICpjb21tb25fdHlwZSwNCj4gKwkJICAgICAgZW51bSBvcHRhYl9z dWJ0eXBlICpzdWJ0eXBlID0gTlVMTCkNCj4gIHsNCj4gICAgLyogQ2hlY2sgZm9yIGFuIGludGVn ZXIgb3BlcmF0aW9uIHdpdGggdGhlIHJpZ2h0IGNvZGUuICAqLw0KPiAgICBnYXNzaWduICphc3Np Z24gPSBkeW5fY2FzdCA8Z2Fzc2lnbiAqPiAoc3RtdF9pbmZvLT5zdG10KTsNCj4gQEAgLTYwNyw3 ICs2MTYsOCBAQCB2ZWN0X3dpZGVuZWRfb3BfdHJlZSAodmVjX2luZm8gKnZpbmZvLA0KPiBzdG10 X3ZlY19pbmZvIHN0bXRfaW5mbywgdHJlZV9jb2RlIGNvZGUsDQo+ICAJCT0gdmluZm8tPmxvb2t1 cF9kZWYgKHRoaXNfdW5wcm9tLT5vcCk7DQo+ICAJICAgICAgbm9wcyA9IHZlY3Rfd2lkZW5lZF9v cF90cmVlICh2aW5mbywgZGVmX3N0bXRfaW5mbywgY29kZSwNCj4gIAkJCQkJICAgd2lkZW5lZF9j b2RlLCBzaGlmdF9wLCBtYXhfbm9wcywNCj4gLQkJCQkJICAgdGhpc191bnByb20sIGNvbW1vbl90 eXBlKTsNCj4gKwkJCQkJICAgdGhpc191bnByb20sIGNvbW1vbl90eXBlLA0KPiArCQkJCQkgICBz dWJ0eXBlKTsNCj4gIAkgICAgICBpZiAobm9wcyA9PSAwKQ0KPiAgCQlyZXR1cm4gMDsNCj4gDQo+ IEBAIC02MjUsNyArNjM1LDI0IEBAIHZlY3Rfd2lkZW5lZF9vcF90cmVlICh2ZWNfaW5mbyAqdmlu Zm8sDQo+IHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB0cmVlX2NvZGUgY29kZSwNCj4gIAkJKmNv bW1vbl90eXBlID0gdGhpc191bnByb20tPnR5cGU7DQo+ICAJICAgICAgZWxzZSBpZiAoIXZlY3Rf am91c3Rfd2lkZW5lZF90eXBlICh0eXBlLCB0aGlzX3VucHJvbS0+dHlwZSwNCj4gIAkJCQkJCSBj b21tb25fdHlwZSkpDQo+IC0JCXJldHVybiAwOw0KPiArCQl7DQo+ICsJCSAgaWYgKHN1YnR5cGUp DQo+ICsJCSAgICB7DQo+ICsJCSAgICAgIHRyZWUgbmV3X3R5cGUgPSAqY29tbW9uX3R5cGU7DQo+ ICsJCSAgICAgIC8qIFNlZSBpZiB3ZSBjYW4gc2lnbiBleHRlbmQgdGhlIHNtYWxsZXIgdHlwZS4g ICovDQo+ICsJCSAgICAgIGlmIChUWVBFX1BSRUNJU0lPTiAodGhpc191bnByb20tPnR5cGUpID4N Cj4gVFlQRV9QUkVDSVNJT04gKG5ld190eXBlKQ0KPiArCQkJICAmJiAoVFlQRV9VTlNJR05FRCAo dGhpc191bnByb20tPnR5cGUpDQo+ICYmICFUWVBFX1VOU0lHTkVEIChuZXdfdHlwZSkpKQ0KPiAr CQkJbmV3X3R5cGUgPSBidWlsZF9ub25zdGFuZGFyZF9pbnRlZ2VyX3R5cGUNCj4gKFRZUEVfUFJF Q0lTSU9OICh0aGlzX3VucHJvbS0+dHlwZSksIHRydWUpOw0KPiArDQo+ICsJCSAgICAgIGlmICh0 cmVlX25vcF9jb252ZXJzaW9uX3AgKHRoaXNfdW5wcm9tLT50eXBlLA0KPiBuZXdfdHlwZSkpDQo+ ICsJCQl7DQo+ICsJCQkgICpzdWJ0eXBlID0gb3B0YWJfdmVjdG9yX21peGVkX3NpZ247DQo+ICsJ CQkgICpjb21tb25fdHlwZSA9IG5ld190eXBlOw0KPiArCQkJfQ0KPiArCQkgICAgfQ0KPiArCQkg IGVsc2UNCj4gKwkJICAgIHJldHVybiAwOw0KPiArCQl9DQo+ICAJICAgIH0NCj4gIAl9DQo+ICAg ICAgICBuZXh0X29wICs9IG5vcHM7DQo+IEBAIC04MDYsMTIgKzgzMywxNSBAQCB2ZWN0X2NvbnZl cnRfaW5wdXQgKHZlY19pbmZvICp2aW5mbywNCj4gc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sIHRy ZWUgdHlwZSwNCj4gIH0NCj4gDQo+ICAvKiBJbnZva2UgdmVjdF9jb252ZXJ0X2lucHV0IGZvciBO IGVsZW1lbnRzIG9mIFVOUFJPTSBhbmQgc3RvcmUgdGhlDQo+IC0gICByZXN1bHQgaW4gdGhlIGNv cnJlc3BvbmRpbmcgZWxlbWVudHMgb2YgUkVTVUxULiAgKi8NCj4gKyAgIHJlc3VsdCBpbiB0aGUg Y29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiBSRVNVTFQuDQo+ICsNCj4gKyAgIElmIFNVQlRZUEUg dGhlbiBkb24ndCBjb252ZXJ0IHRoZSB0eXBlcyBpZiB0aGV5IG9ubHkNCj4gKyAgIGRpZmZlciBi eSBzaWduLiAgKi8NCj4gDQo+ICBzdGF0aWMgdm9pZA0KPiAgdmVjdF9jb252ZXJ0X2lucHV0cyAo dmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywgdW5zaWduZWQNCj4gaW50 IG4sDQo+ICAJCSAgICAgdHJlZSAqcmVzdWx0LCB0cmVlIHR5cGUsIHZlY3RfdW5wcm9tb3RlZF92 YWx1ZSAqdW5wcm9tLA0KPiAtCQkgICAgIHRyZWUgdmVjdHlwZSkNCj4gKwkJICAgICB0cmVlIHZl Y3R5cGUsIGVudW0gb3B0YWJfc3VidHlwZSBzdWJ0eXBlID0NCj4gb3B0YWJfZGVmYXVsdCkNCj4g IHsNCj4gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuOyArK2kpDQo+ICAgICAgew0K PiBAQCAtODE5LDggKzg0OSwxMiBAQCB2ZWN0X2NvbnZlcnRfaW5wdXRzICh2ZWNfaW5mbyAqdmlu Zm8sDQo+IHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLCB1bnNpZ25lZCBpbnQgbiwNCj4gICAgICAg IGZvciAoaiA9IDA7IGogPCBpOyArK2opDQo+ICAJaWYgKHVucHJvbVtqXS5vcCA9PSB1bnByb21b aV0ub3ApDQo+ICAJICBicmVhazsNCj4gKw0KPiAgICAgICAgaWYgKGogPCBpKQ0KPiAgCXJlc3Vs dFtpXSA9IHJlc3VsdFtqXTsNCj4gKyAgICAgIGVsc2UgaWYgKHN1YnR5cGUgPT0gb3B0YWJfdmVj dG9yX21peGVkX3NpZ24NCj4gKwkgICAgICAgJiYgdHJlZV9ub3BfY29udmVyc2lvbl9wICh0eXBl LCB1bnByb21baV0udHlwZSkpDQo+ICsJcmVzdWx0W2ldID0gdW5wcm9tW2ldLm9wOw0KPiAgICAg ICAgZWxzZQ0KPiAgCXJlc3VsdFtpXSA9IHZlY3RfY29udmVydF9pbnB1dCAodmluZm8sIHN0bXRf aW5mbywNCj4gIAkJCQkJdHlwZSwgJnVucHJvbVtpXSwgdmVjdHlwZSk7DQo+IEBAIC04OTUsNyAr OTI5LDggQEAgdmVjdF9yZWFzc29jaWF0aW5nX3JlZHVjdGlvbl9wICh2ZWNfaW5mbyAqdmluZm8s DQo+IA0KPiAgICAgVHJ5IHRvIGZpbmQgdGhlIGZvbGxvd2luZyBwYXR0ZXJuOg0KPiANCj4gLSAg ICAgdHlwZSB4X3QsIHlfdDsNCj4gKyAgICAgdHlwZTFhIHhfdA0KPiArICAgICB0eXBlMWIgeV90 Ow0KPiAgICAgICBUWVBFMSBwcm9kOw0KPiAgICAgICBUWVBFMiBzdW0gPSBpbml0Ow0KPiAgICAg bG9vcDoNCj4gQEAgLTkwOCw4ICs5NDMsMTAgQEAgdmVjdF9yZWFzc29jaWF0aW5nX3JlZHVjdGlv bl9wICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgIFtTNiAgcHJvZCA9IChUWVBFMikgcHJvZDsg ICNvcHRpb25hbF0NCj4gICAgICAgUzcgIHN1bV8xID0gcHJvZCArIHN1bV8wOw0KPiANCj4gLSAg IHdoZXJlICdUWVBFMScgaXMgZXhhY3RseSBkb3VibGUgdGhlIHNpemUgb2YgdHlwZSAndHlwZScs IGFuZCAnVFlQRTInIGlzIHRoZQ0KPiAtICAgc2FtZSBzaXplIG9mICdUWVBFMScgb3IgYmlnZ2Vy LiBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIG9mIGEgcmVkdWN0aW9uDQo+ICsgICB3aGVyZSAnVFlQ RTEnIGlzIGV4YWN0bHkgZG91YmxlIHRoZSBzaXplIG9mIHR5cGUgJ3R5cGUxYScgYW5kICd0eXBl MWInLA0KPiArICAgdGhlIHNpZ24gb2YgJ1RZUEUxJyBtdXN0IGJlIG9uZSBvZiAndHlwZTFhJyBv ciAndHlwZTFiJyBidXQgdGhlIHNpZ24gb2YNCj4gKyAgICd0eXBlMWEnIGFuZCAndHlwZTFiJyBj YW4gZGlmZmVyLiAnVFlQRTInIGlzIHRoZSBzYW1lIHNpemUgb2YgJ1RZUEUxJyBvcg0KPiArICAg YmlnZ2VyIGFuZCBtdXN0IGJlIHRoZSBzYW1lIHNpZ24uIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ug b2YgYSByZWR1Y3Rpb24NCj4gICAgIGNvbXB1dGF0aW9uLg0KPiANCj4gICAgIElucHV0Og0KPiBA QCAtOTQ2LDE1ICs5ODMsMTUgQEAgdmVjdF9yZWNvZ19kb3RfcHJvZF9wYXR0ZXJuICh2ZWNfaW5m byAqdmluZm8sDQo+IA0KPiAgICAvKiBMb29rIGZvciB0aGUgZm9sbG93aW5nIHBhdHRlcm4NCj4g ICAgICAgICAgICBEWCA9IChUWVBFMSkgWDsNCj4gLSAgICAgICAgICBEWSA9IChUWVBFMSkgWTsN Cj4gKwkgIERZID0gKFRZUEUxKSBZOw0KPiAgICAgICAgICAgIERQUk9EID0gRFggKiBEWTsNCj4g LSAgICAgICAgICBERFBST0QgPSAoVFlQRTIpIERQUk9EOw0KPiArCSAgRERQUk9EID0gKFRZUEUy KSBEUFJPRDsNCj4gICAgICAgICAgICBzdW1fMSA9IEREUFJPRCArIHN1bV8wOw0KPiAgICAgICBJ biB3aGljaA0KPiAgICAgICAtIERYIGlzIGRvdWJsZSB0aGUgc2l6ZSBvZiBYDQo+ICAgICAgIC0g RFkgaXMgZG91YmxlIHRoZSBzaXplIG9mIFkNCj4gICAgICAgLSBEWCwgRFksIERQUk9EIGFsbCBo YXZlIHRoZSBzYW1lIHR5cGUgYnV0IHRoZSBzaWduDQo+IC0gICAgICAgYmV0d2VlbiBEWCwgRFkg YW5kIERQUk9EIGNhbiBkaWZmZXIuDQo+ICsgICAgICAgYmV0d2VlbiBYLCBZIGFuZCBEUFJPRCBj YW4gZGlmZmVyLg0KPiAgICAgICAtIHN1bSBpcyB0aGUgc2FtZSBzaXplIG9mIERQUk9EIG9yIGJp Z2dlcg0KPiAgICAgICAtIHN1bSBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcmVkdWN0aW9uIHZh cmlhYmxlLg0KPiANCj4gQEAgLTk5MiwyMSArMTAyOSwyNyBAQCB2ZWN0X3JlY29nX2RvdF9wcm9k X3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywNCj4gICAgLyogRk9STk9XLiAgQ2FuIGNvbnRpbnVl IGFuYWx5emluZyB0aGUgZGVmLXVzZSBjaGFpbiB3aGVuIHRoaXMgc3RtdCBpbiBhDQo+IHBoaQ0K PiAgICAgICBpbnNpZGUgdGhlIGxvb3AgKGluIGNhc2Ugd2UgYXJlIGFuYWx5emluZyBhbiBvdXRl ci1sb29wKS4gICovDQo+ICAgIHZlY3RfdW5wcm9tb3RlZF92YWx1ZSB1bnByb20wWzJdOw0KPiAr ICBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZSA9IG9wdGFiX3ZlY3RvcjsNCj4gICAgaWYgKCF2 ZWN0X3dpZGVuZWRfb3BfdHJlZSAodmluZm8sIG11bHRfdmluZm8sIE1VTFRfRVhQUiwNCj4gV0lE RU5fTVVMVF9FWFBSLA0KPiAtCQkJICAgICBmYWxzZSwgMiwgdW5wcm9tMCwgJmhhbGZfdHlwZSkp DQo+ICsJCQkgICAgIGZhbHNlLCAyLCB1bnByb20wLCAmaGFsZl90eXBlLCAmc3VidHlwZSkpDQo+ ICsgICAgcmV0dXJuIE5VTEw7DQo+ICsNCj4gKyAgaWYgKHN1YnR5cGUgPT0gb3B0YWJfdmVjdG9y X21peGVkX3NpZ24NCj4gKyAgICAgICYmIFRZUEVfVU5TSUdORUQgKHVucHJvbV9tdWx0LnR5cGUp DQo+ICsgICAgICAmJiBUWVBFX1BSRUNJU0lPTiAoaGFsZl90eXBlKSAqIDQgPiBUWVBFX1BSRUNJ U0lPTg0KPiAodW5wcm9tX211bHQudHlwZSkpDQo+ICAgICAgcmV0dXJuIE5VTEw7DQo+IA0KPiAg ICB2ZWN0X3BhdHRlcm5fZGV0ZWN0ZWQgKCJ2ZWN0X3JlY29nX2RvdF9wcm9kX3BhdHRlcm4iLCBs YXN0X3N0bXQpOw0KPiANCj4gICAgdHJlZSBoYWxmX3ZlY3R5cGU7DQo+ICAgIGlmICghdmVjdF9z dXBwb3J0YWJsZV9kaXJlY3Rfb3B0YWJfcCAodmluZm8sIHR5cGUsIERPVF9QUk9EX0VYUFIsDQo+ IGhhbGZfdHlwZSwNCj4gLQkJCQkJdHlwZV9vdXQsICZoYWxmX3ZlY3R5cGUpKQ0KPiArCQkJCQl0 eXBlX291dCwgJmhhbGZfdmVjdHlwZSwgc3VidHlwZSkpDQo+ICAgICAgcmV0dXJuIE5VTEw7DQo+ IA0KPiAgICAvKiBHZXQgdGhlIGlucHV0cyBpbiB0aGUgYXBwcm9wcmlhdGUgdHlwZXMuICAqLw0K PiAgICB0cmVlIG11bHRfb3BybmRbMl07DQo+ICAgIHZlY3RfY29udmVydF9pbnB1dHMgKHZpbmZv LCBzdG10X3ZpbmZvLCAyLCBtdWx0X29wcm5kLCBoYWxmX3R5cGUsDQo+IC0JCSAgICAgICB1bnBy b20wLCBoYWxmX3ZlY3R5cGUpOw0KPiArCQkgICAgICAgdW5wcm9tMCwgaGFsZl92ZWN0eXBlLCBz dWJ0eXBlKTsNCj4gDQo+ICAgIHZhciA9IHZlY3RfcmVjb2dfdGVtcF9zc2FfdmFyICh0eXBlLCBO VUxMKTsNCj4gICAgcGF0dGVybl9zdG10ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAodmFyLCBET1Rf UFJPRF9FWFBSLA0K