From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8705BC4CED1 for ; Fri, 4 Oct 2019 07:20:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 36DF52084D for ; Fri, 4 Oct 2019 07:20:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="bgWuCijV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728839AbfJDHUi (ORCPT ); Fri, 4 Oct 2019 03:20:38 -0400 Received: from mail-eopbgr720060.outbound.protection.outlook.com ([40.107.72.60]:43808 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727484AbfJDHUi (ORCPT ); Fri, 4 Oct 2019 03:20:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LFR3UbYty4xBRs2536WKnEShSCp6rXfHfRGF1IZtbRwtK9fIP4KnTdqqgquUzK9fRGu+2zTTPfeQqpPafRcNVwIiDN4Jba7VEzdHbTDOCGJSMV62oKU625NKhx9ZbKD0M9BNPLLIpZlsEN/zdWPsBHQ7uCD+MCPglrrQN/TQj8FFF23sfHXgxyaReL2HuUbrkG+nYTR29ZeZErhUYGaprGy5vEjJ5jecl/lUDIhdIUumkKyT+O9ow3m49FtGXaMUHwrE28Ct7/nedzIAx6HJpAFfyqjFncidVx64ulyWV3IafvWupRE7re2efngs4pTLXY8pNKdDUT2DckaRakeLkQ== 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=v/YMYKCES44xqcqBcpiFoe8oUVuUVUaX9ITy/Fu52sk=; b=eI0B1KkLnZSGx1bGFZqO+Q3R0vjVBUPEgwSFyPmAjH1SZRJwKR0qycQtR/W4M7LwgNQS3an7i7p12m7tjnT5hdrPSnb9cxVP10KVLjPkjCVAKBKFPq+pIJlryFS86ZBBr0fFa1rmGS+JFSHFZBa5wNDJM+W46dec2+eav+S+FvRjvNFLFrwj4oRBlN4eCIxgrt5uRw5TkTBvS2AMqEEPUkbIaQOat394HuaZSJfkaWxRl2p/nXUQi4TgQa2Jjx9L/jx9WfWrO4LPiJTvnmt2HcR64QxCLr8QiLj2NpnXSEiD456lhZL7pjPV+Ml7tEXu2TvLPuWDFQFjFElHyUQFLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v/YMYKCES44xqcqBcpiFoe8oUVuUVUaX9ITy/Fu52sk=; b=bgWuCijVvFn2dNSMvvMKdiVIBROrFvx66j+U5s6gq82WJmhVDX4KvHeA6BpsfjWub16iuBztekLUQdoavwOFH+OE2uiN/CcHhLYmmq844VAOF3Cz3LCgvLynzfZmD4MFslNMU5d6S0IqfbKdtRzhKFENALHa7xMIHnpq7aqwhcQ= Received: from BN6PR12MB1699.namprd12.prod.outlook.com (10.175.97.148) by BN6PR12MB1331.namprd12.prod.outlook.com (10.168.224.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Fri, 4 Oct 2019 07:20:31 +0000 Received: from BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::7d62:3e74:d0f0:be92]) by BN6PR12MB1699.namprd12.prod.outlook.com ([fe80::7d62:3e74:d0f0:be92%3]) with mapi id 15.20.2305.023; Fri, 4 Oct 2019 07:20:31 +0000 From: "Koenig, Christian" To: Davidlohr Bueso , "akpm@linux-foundation.org" CC: "walken@google.com" , "peterz@infradead.org" , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" , "dri-devel@lists.freedesktop.org" , "linux-rdma@vger.kernel.org" , "Deucher, Alexander" , David Airlie , Daniel Vetter , Doug Ledford , Joerg Roedel , =?utf-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Davidlohr Bueso Subject: Re: [PATCH 09/11] lib/interval-tree: convert interval_tree to half closed intervals Thread-Topic: [PATCH 09/11] lib/interval-tree: convert interval_tree to half closed intervals Thread-Index: AQHVeigExCQU8/OvY02NFnOXX43dg6dKDccAgAAGRgA= Date: Fri, 4 Oct 2019 07:20:30 +0000 Message-ID: References: <20191003201858.11666-1-dave@stgolabs.net> <20191003201858.11666-10-dave@stgolabs.net> In-Reply-To: Accept-Language: de-DE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 x-originating-ip: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] x-clientproxiedby: AM3PR07CA0122.eurprd07.prod.outlook.com (2603:10a6:207:7::32) To BN6PR12MB1699.namprd12.prod.outlook.com (2603:10b6:404:ff::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Christian.Koenig@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aa29e2a5-d6e2-49f5-d22b-08d7489b5686 x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: BN6PR12MB1331: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 018093A9B5 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(396003)(366004)(376002)(346002)(199004)(189003)(4326008)(6506007)(36756003)(386003)(6436002)(6486002)(110136005)(478600001)(7416002)(102836004)(5660300002)(52116002)(6116002)(8936002)(8676002)(81156014)(31686004)(76176011)(2906002)(66574012)(14454004)(54906003)(7736002)(65956001)(99286004)(6246003)(30864003)(65806001)(305945005)(6512007)(229853002)(58126008)(31696002)(71190400001)(71200400001)(46003)(316002)(486006)(186003)(64756008)(66476007)(2616005)(66556008)(66446008)(256004)(11346002)(14444005)(446003)(476003)(66946007)(86362001)(25786009)(81166006)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1331;H:BN6PR12MB1699.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oUNYVP6G++b6XioGyihVB1KN11Rfm0uLJORqvjPy08SEt844BJ3FJ6uryIfKKbzm1z9ovr1+YT5guKdk3TA7bQ4IEIvO07K1fLVGlg60Z0/OgE8ZgoMoJZi7Z+a/afeBxExWuqCHPq35IqPPy76/8xj0M+MtCh3TJDwhUspwyglHLl4L63PxQQlRhbcYlvpqNzQz1/hdF7kRwwasFpukurjgBFcilmx74I8hGJEM9+iiFHC9lGRwawhw3f+RU8nCVyGyjUxgJtezqPF8JQRISHMdABPZWXW1g0fgE2TGDJfPRFwFfKmQ0Qbyigx/ujOkTRrPAZLe/rje3YiebWgZg81/TAQ6SD7Yk8bddya2Ui7wa3kx88xfxY8k2PcWGP0X8A8hguy61HKZXOpybnz44EN7oxt3vXMLhxtWwDA/eSA= Content-Type: text/plain; charset="utf-8" Content-ID: <1A74EE6A7053AA4DBCD6880EA1E1B449@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa29e2a5-d6e2-49f5-d22b-08d7489b5686 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2019 07:20:30.8939 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zXbeikmodLU3isPE+ltnRKKCKtG64JLNPaY0lZNYc2EIqC00++uG3BUOcSDK+wcE X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1331 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org QW0gMDQuMTAuMTkgdW0gMDg6NTcgc2NocmllYiBDaHJpc3RpYW4gS8O2bmlnOg0KPiBBbSAwMy4x MC4xOSB1bSAyMjoxOCBzY2hyaWViIERhdmlkbG9ociBCdWVzbzoNCj4+IFRoZSBnZW5lcmljIHRy ZWUgdHJlZSByZWFsbHkgd2FudHMgW2EsIGIpIGludGVydmFscywgbm90IGZ1bGx5IGNsb3NlZC4N Cj4+IEFzIHN1Y2ggY29udmVydCBpdCB0byB1c2UgdGhlIG5ldyBpbnRlcnZhbF90cmVlX2dlbi5o LiBNb3N0IG9mIHRoZQ0KPj4gY29udmVyc2lvbnMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCwgd2l0aCB0 aGUgZXhjZXB0aW9uIG9mIHBlcmhhcHMNCj4+IHJhZGVvbl92bV9ib19zZXRfYWRkcigpLCBidXQg c2VtYW50aWNzIGhhdmUgYmVlbiB0cmllZCB0byBiZSBsZWZ0DQo+PiB1bnRvdWNoZWQuDQo+DQo+ IE5BSywgdGhlIHdob2xlIHRoaW5nIHdvbid0IHdvcmsuDQo+DQo+IFNlZSB3ZSBuZWVkIHRvIGhh bmRsZSB0aGUgZnVsbCBkZXZpY2UgYWRkcmVzcyBzcGFjZSB3aGljaCBtZWFucyB3ZSANCj4gaGF2 ZSB2YWx1ZXMgaW4gdGhlIHJhbmdlIG9mIDB4MC0weGZmZmZmZmZmLg0KPg0KPiBJZiB5b3UgbWFr ZSB0aGlzIGEgY2xvc2VkIGludGVydmFsIHRoZW4gdGhlIGVuZCB3b3VsZCB3cmFwIGFyb3VuZCB0 byANCj4gMHgwIGlmIGxvbmcgaXMgb25seSAzMmJpdC4NCg0KV2VsbCBJJ3ZlIGp1c3Qgbm93IHJl LXJlYWQgdGhlIHN1YmplY3QgbGluZS4gRnJvbSB0aGF0IGl0IHNvdW5kcyBsaWtlIA0KeW91IGFy ZSBhY3R1YWxseSB0cnlpbmcgdG8gZml4IHRoZSBpbnRlcnZhbCB0cmVlIHRvIHVzZSBhIGhhbGYg Y2xvc2VkIA0KaW50ZXJ2YWwsIGUuZy4gc29tZXRoaW5nIGxpa2UgW2EsIGJbDQoNCkJ1dCB5b3Vy IGNvZGUgY2hhbmdlcyBzb21ldGltZXMgZG9lc24ndCBzZWVtIHRvIHJlZmxlY3QgdGhhdC4NCg0K UmVnYXJkcywNCkNocmlzdGlhbi4NCg0KPg0KPiBSZWdhcmRzLA0KPiBDaHJpc3RpYW4uDQo+DQo+ Pg0KPj4gQ2M6ICJDaHJpc3RpYW4gS8O2bmlnIiA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPg0K Pj4gQ2M6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4NCj4+IENjOiBE YXZpZCBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+DQo+PiBDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsQGZmd2xsLmNoPg0KPj4gQ2M6IERvdWcgTGVkZm9yZCA8ZGxlZGZvcmRAcmVkaGF0LmNvbT4N Cj4+IENjOiBKb2VyZyBSb2VkZWwgPGpvcm9AOGJ5dGVzLm9yZz4NCj4+IENjOiAiSsOpcsO0bWUg R2xpc3NlIiA8amdsaXNzZUByZWRoYXQuY29tPg0KPj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcNCj4+IENjOiBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZw0KPj4gU2lnbmVk LW9mZi1ieTogRGF2aWRsb2hyIEJ1ZXNvIDxkYnVlc29Ac3VzZS5kZT4NCj4+IC0tLQ0KPj4gwqAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmPCoMKgwqDCoMKgIHwgMTIgKysr LS0tLS0tLS0tDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0 ci5jIHzCoCA1ICstLS0tDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5j wqDCoMKgwqDCoMKgwqDCoMKgIHwgMTEgKysrKy0tLS0tLS0NCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX3RyYWNlLmjCoMKgwqDCoMKgwqAgfMKgIDIgKy0NCj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3ZtLmPCoMKgwqDCoMKgwqDCoMKgwqAgfCAyNiANCj4+ ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+PiDCoCBkcml2ZXJzL2luZmluaWJhbmQvY29y ZS91bWVtX29kcC5jwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjEgKysrKysrKy0tLS0tLS0tLS0tLS0t DQo+PiDCoCBkcml2ZXJzL2lvbW11L3ZpcnRpby1pb21tdS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCA2ICsrKy0tLQ0KPj4gwqAgaW5jbHVkZS9saW51eC9pbnRlcnZhbF90cmVl LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyICstDQo+PiDCoCBpbmNsdWRlL3Jk bWEvaWJfdW1lbV9vZHAuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQg KystLQ0KPj4gwqAgbGliL2ludGVydmFsX3RyZWUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNiArKystLS0NCj4+IMKgIDEwIGZpbGVzIGNoYW5n ZWQsIDM4IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYyANCj4+IGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMNCj4+IGluZGV4IDMxZDRkZWI1ZDI5NC4uNGJi YWE5ZmZhNTcwIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X21uLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5j DQo+PiBAQCAtMjA1LDkgKzIwNSw2IEBAIGFtZGdwdV9tbl9zeW5jX3BhZ2V0YWJsZXNfZ2Z4KHN0 cnVjdCBobW1fbWlycm9yIA0KPj4gKm1pcnJvciwNCj4+IMKgwqDCoMKgwqAgYm9vbCBibG9ja2Fi bGUgPSBtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHVwZGF0ZSk7DQo+PiDCoMKgwqDCoMKg IHN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0Ow0KPj4gwqAgLcKgwqDCoCAvKiBub3RpZmlj YXRpb24gaXMgZXhjbHVzaXZlLCBidXQgaW50ZXJ2YWwgaXMgaW5jbHVzaXZlICovDQo+PiAtwqDC oMKgIGVuZCAtPSAxOw0KPj4gLQ0KPj4gwqDCoMKgwqDCoCAvKiBUT0RPIHdlIHNob3VsZCBiZSBh YmxlIHRvIHNwbGl0IGxvY2tpbmcgZm9yIGludGVydmFsIHRyZWUgYW5kDQo+PiDCoMKgwqDCoMKg wqAgKiBhbWRncHVfbW5faW52YWxpZGF0ZV9ub2RlDQo+PiDCoMKgwqDCoMKgwqAgKi8NCj4+IEBA IC0yNTQsOSArMjUxLDYgQEAgYW1kZ3B1X21uX3N5bmNfcGFnZXRhYmxlc19oc2Eoc3RydWN0IGht bV9taXJyb3IgDQo+PiAqbWlycm9yLA0KPj4gwqDCoMKgwqDCoCBib29sIGJsb2NrYWJsZSA9IG1t dV9ub3RpZmllcl9yYW5nZV9ibG9ja2FibGUodXBkYXRlKTsNCj4+IMKgwqDCoMKgwqAgc3RydWN0 IGludGVydmFsX3RyZWVfbm9kZSAqaXQ7DQo+PiDCoCAtwqDCoMKgIC8qIG5vdGlmaWNhdGlvbiBp cyBleGNsdXNpdmUsIGJ1dCBpbnRlcnZhbCBpcyBpbmNsdXNpdmUgKi8NCj4+IC3CoMKgwqAgZW5k IC09IDE7DQo+PiAtDQo+PiDCoMKgwqDCoMKgIGlmIChhbWRncHVfbW5fcmVhZF9sb2NrKGFtbiwg YmxvY2thYmxlKSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVBR0FJTjsNCj4+IMKg IEBAIC0zNzQsNyArMzY4LDcgQEAgc3RydWN0IGFtZGdwdV9tbiAqYW1kZ3B1X21uX2dldChzdHJ1 Y3QgDQo+PiBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gwqDCoCAqLw0KPj4gwqAgaW50IGFtZGdw dV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgdW5zaWduZWQgbG9uZyBhZGRyKQ0K Pj4gwqAgew0KPj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIGVuZCA9IGFkZHIgKyBhbWRncHVfYm9f c2l6ZShibykgLSAxOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGVuZCA9IGFkZHIgKyBhbWRn cHVfYm9fc2l6ZShibyk7DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7DQo+PiDCoMKgwqDCoMKgIGVudW0gYW1k Z3B1X21uX3R5cGUgdHlwZSA9DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYm8tPmtmZF9ibyA/IEFN REdQVV9NTl9UWVBFX0hTQSA6IEFNREdQVV9NTl9UWVBFX0dGWDsNCj4+IEBAIC00MDAsNyArMzk0 LDcgQEAgaW50IGFtZGdwdV9tbl9yZWdpc3RlcihzdHJ1Y3QgYW1kZ3B1X2JvICpibywgDQo+PiB1 bnNpZ25lZCBsb25nIGFkZHIpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbm9kZSA9IGNvbnRhaW5l cl9vZihpdCwgc3RydWN0IGFtZGdwdV9tbl9ub2RlLCBpdCk7DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgaW50ZXJ2YWxfdHJlZV9yZW1vdmUoJm5vZGUtPml0LCAmYW1uLT5vYmplY3RzKTsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBhZGRyID0gbWluKGl0LT5zdGFydCwgYWRkcik7DQo+PiAtwqDCoMKg wqDCoMKgwqAgZW5kID0gbWF4KGl0LT5sYXN0LCBlbmQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGVu ZCA9IG1heChpdC0+ZW5kLCBlbmQpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3Rfc3BsaWNl KCZub2RlLT5ib3MsICZib3MpOw0KPj4gwqDCoMKgwqDCoCB9DQo+PiDCoCBAQCAtNDEyLDcgKzQw Niw3IEBAIGludCBhbWRncHVfbW5fcmVnaXN0ZXIoc3RydWN0IGFtZGdwdV9ibyAqYm8sIA0KPj4g dW5zaWduZWQgbG9uZyBhZGRyKQ0KPj4gwqDCoMKgwqDCoCBiby0+bW4gPSBhbW47DQo+PiDCoCDC oMKgwqDCoMKgIG5vZGUtPml0LnN0YXJ0ID0gYWRkcjsNCj4+IC3CoMKgwqAgbm9kZS0+aXQubGFz dCA9IGVuZDsNCj4+ICvCoMKgwqAgbm9kZS0+aXQuZW5kID0gZW5kOw0KPj4gwqDCoMKgwqDCoCBJ TklUX0xJU1RfSEVBRCgmbm9kZS0+Ym9zKTsNCj4+IMKgwqDCoMKgwqAgbGlzdF9zcGxpY2UoJmJv cywgJm5vZGUtPmJvcyk7DQo+PiDCoMKgwqDCoMKgIGxpc3RfYWRkKCZiby0+bW5fbGlzdCwgJm5v ZGUtPmJvcyk7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3VzZXJwdHIuYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3Vz ZXJwdHIuYw0KPj4gaW5kZXggMTFiMjMxYzE4N2M1Li44MThmZjZiMzMxMDIgMTAwNjQ0DQo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jDQo+PiBAQCAtOTks OSArOTksNiBAQCB1c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IA0KPj4g bW11X25vdGlmaWVyICpfbW4sDQo+PiDCoMKgwqDCoMKgIGlmIChSQl9FTVBUWV9ST09UKCZtbi0+ b2JqZWN0cy5yYl9yb290KSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+IMKg IC3CoMKgwqAgLyogaW50ZXJ2YWwgcmFuZ2VzIGFyZSBpbmNsdXNpdmUsIGJ1dCBpbnZhbGlkYXRl IHJhbmdlIGlzIA0KPj4gZXhjbHVzaXZlICovDQo+PiAtwqDCoMKgIGVuZCA9IHJhbmdlLT5lbmQg LSAxOw0KPj4gLQ0KPj4gwqDCoMKgwqDCoCBzcGluX2xvY2soJm1uLT5sb2NrKTsNCj4+IMKgwqDC oMKgwqAgaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJm1uLT5vYmplY3RzLCByYW5nZS0+ c3RhcnQsIGVuZCk7DQo+PiDCoMKgwqDCoMKgIHdoaWxlIChpdCkgew0KPj4gQEAgLTI3NSw3ICsy NzIsNyBAQCBpOTE1X2dlbV91c2VycHRyX2luaXRfX21tdV9ub3RpZmllcihzdHJ1Y3QgDQo+PiBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosDQo+PiDCoMKgwqDCoMKgIG1vLT5tbiA9IG1uOw0KPj4g wqDCoMKgwqDCoCBtby0+b2JqID0gb2JqOw0KPj4gwqDCoMKgwqDCoCBtby0+aXQuc3RhcnQgPSBv YmotPnVzZXJwdHIucHRyOw0KPj4gLcKgwqDCoCBtby0+aXQubGFzdCA9IG9iai0+dXNlcnB0ci5w dHIgKyBvYmotPmJhc2Uuc2l6ZSAtIDE7DQo+PiArwqDCoMKgIG1vLT5pdC5lbmQgPSBvYmotPnVz ZXJwdHIucHRyICsgb2JqLT5iYXNlLnNpemU7DQo+PiDCoMKgwqDCoMKgIFJCX0NMRUFSX05PREUo Jm1vLT5pdC5yYik7DQo+PiDCoCDCoMKgwqDCoMKgIG9iai0+dXNlcnB0ci5tbXVfb2JqZWN0ID0g bW87DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyAN Cj4+IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYw0KPj4gaW5kZXggZGJhYjlh M2E5NjliLi40ODEwNDIxZGFjYzIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9tbi5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9t bi5jDQo+PiBAQCAtNjYsMTIgKzY2LDkgQEAgc3RhdGljIGludCByYWRlb25fbW5faW52YWxpZGF0 ZV9yYW5nZV9zdGFydChzdHJ1Y3QgDQo+PiBtbXVfbm90aWZpZXIgKm1uLA0KPj4gwqDCoMKgwqDC oCBzdHJ1Y3QgcmFkZW9uX21uICpybW4gPSBjb250YWluZXJfb2YobW4sIHN0cnVjdCByYWRlb25f bW4sIG1uKTsNCj4+IMKgwqDCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsg ZmFsc2UsIGZhbHNlIH07DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUg Kml0Ow0KPj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIGVuZDsNCj4+ICvCoMKgwqAgdW5zaWduZWQg bG9uZyBlbmQgPSByYW5nZS0+ZW5kOw0KPj4gwqDCoMKgwqDCoCBpbnQgcmV0ID0gMDsNCj4+IMKg IC3CoMKgwqAgLyogbm90aWZpY2F0aW9uIGlzIGV4Y2x1c2l2ZSwgYnV0IGludGVydmFsIGlzIGlu Y2x1c2l2ZSAqLw0KPj4gLcKgwqDCoCBlbmQgPSByYW5nZS0+ZW5kIC0gMTsNCj4+IC0NCj4+IMKg wqDCoMKgwqAgLyogVE9ETyB3ZSBzaG91bGQgYmUgYWJsZSB0byBzcGxpdCBsb2NraW5nIGZvciBp bnRlcnZhbCB0cmVlIGFuZA0KPj4gwqDCoMKgwqDCoMKgICogdGhlIHRlYXIgZG93bi4NCj4+IMKg wqDCoMKgwqDCoCAqLw0KPj4gQEAgLTE3NCw3ICsxNzEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9ub3RpZmllcl9vcHMgDQo+PiByYWRlb25fbW5fb3BzID0gew0KPj4gwqDCoCAqLw0KPj4g wqAgaW50IHJhZGVvbl9tbl9yZWdpc3RlcihzdHJ1Y3QgcmFkZW9uX2JvICpibywgdW5zaWduZWQg bG9uZyBhZGRyKQ0KPj4gwqAgew0KPj4gLcKgwqDCoCB1bnNpZ25lZCBsb25nIGVuZCA9IGFkZHIg KyByYWRlb25fYm9fc2l6ZShibykgLSAxOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGVuZCA9 IGFkZHIgKyByYWRlb25fYm9fc2l6ZShibyk7DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBtbXVfbm90 aWZpZXIgKm1uOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgcmFkZW9uX21uICpybW47DQo+PiDCoMKg wqDCoMKgIHN0cnVjdCByYWRlb25fbW5fbm9kZSAqbm9kZSA9IE5VTEw7DQo+PiBAQCAtMTk1LDcg KzE5Miw3IEBAIGludCByYWRlb25fbW5fcmVnaXN0ZXIoc3RydWN0IHJhZGVvbl9ibyAqYm8sIA0K Pj4gdW5zaWduZWQgbG9uZyBhZGRyKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG5vZGUgPSBjb250 YWluZXJfb2YoaXQsIHN0cnVjdCByYWRlb25fbW5fbm9kZSwgaXQpOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGludGVydmFsX3RyZWVfcmVtb3ZlKCZub2RlLT5pdCwgJnJtbi0+b2JqZWN0cyk7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkciA9IG1pbihpdC0+c3RhcnQsIGFkZHIpOw0KPj4gLcKg wqDCoMKgwqDCoMKgIGVuZCA9IG1heChpdC0+bGFzdCwgZW5kKTsNCj4+ICvCoMKgwqDCoMKgwqDC oCBlbmQgPSBtYXgoaXQtPmVuZCwgZW5kKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X3Nw bGljZSgmbm9kZS0+Ym9zLCAmYm9zKTsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gwqAgQEAgLTIxMCw3 ICsyMDcsNyBAQCBpbnQgcmFkZW9uX21uX3JlZ2lzdGVyKHN0cnVjdCByYWRlb25fYm8gKmJvLCAN Cj4+IHVuc2lnbmVkIGxvbmcgYWRkcikNCj4+IMKgwqDCoMKgwqAgYm8tPm1uID0gcm1uOw0KPj4g wqAgwqDCoMKgwqDCoCBub2RlLT5pdC5zdGFydCA9IGFkZHI7DQo+PiAtwqDCoMKgIG5vZGUtPml0 Lmxhc3QgPSBlbmQ7DQo+PiArwqDCoMKgIG5vZGUtPml0LmVuZCA9IGVuZDsNCj4+IMKgwqDCoMKg wqAgSU5JVF9MSVNUX0hFQUQoJm5vZGUtPmJvcyk7DQo+PiDCoMKgwqDCoMKgIGxpc3Rfc3BsaWNl KCZib3MsICZub2RlLT5ib3MpOw0KPj4gwqDCoMKgwqDCoCBsaXN0X2FkZCgmYm8tPm1uX2xpc3Qs ICZub2RlLT5ib3MpOw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX3RyYWNlLmggDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX3RyYWNlLmgN Cj4+IGluZGV4IGM5M2YzYWIzYzRlMy4uNDMyNGYzZmM1ZDgyIDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fdHJhY2UuaA0KPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fdHJhY2UuaA0KPj4gQEAgLTczLDcgKzczLDcgQEAgVFJBQ0VfRVZF TlQocmFkZW9uX3ZtX2JvX3VwZGF0ZSwNCj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBUUF9mYXN0 X2Fzc2lnbigNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZW50cnktPnNv ZmZzZXQgPSBib192YS0+aXQuc3RhcnQ7DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBfX2VudHJ5LT5lb2Zmc2V0ID0gYm9fdmEtPml0Lmxhc3QgKyAxOw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgX19lbnRyeS0+ZW9mZnNldCA9IGJvX3ZhLT5pdC5lbmQ7DQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2VudHJ5LT5mbGFncyA9IGJvX3ZhLT5m bGFnczsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICksDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgVFBfcHJpbnRrKCJzb2Zmcz0lMDEwbGx4LCBlb2Zmcz0lMDEwbGx4LCBmbGFn cz0lMDh4IiwNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl92 bS5jIA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl92bS5jDQo+PiBpbmRleCBl MGFkNTQ3Nzg2ZTguLmIyYTU0YWZmMjFmNCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vcmFkZW9uX3ZtLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX3ZtLmMNCj4+IEBAIC0zMjksNyArMzI5LDcgQEAgc3RydWN0IHJhZGVvbl9ib192YSAqcmFk ZW9uX3ZtX2JvX2FkZChzdHJ1Y3QgDQo+PiByYWRlb25fZGV2aWNlICpyZGV2LA0KPj4gwqDCoMKg wqDCoCBib192YS0+dm0gPSB2bTsNCj4+IMKgwqDCoMKgwqAgYm9fdmEtPmJvID0gYm87DQo+PiDC oMKgwqDCoMKgIGJvX3ZhLT5pdC5zdGFydCA9IDA7DQo+PiAtwqDCoMKgIGJvX3ZhLT5pdC5sYXN0 ID0gMDsNCj4+ICvCoMKgwqAgYm9fdmEtPml0LmVuZCA9IDA7DQo+PiDCoMKgwqDCoMKgIGJvX3Zh LT5mbGFncyA9IDA7DQo+PiDCoMKgwqDCoMKgIGJvX3ZhLT5yZWZfY291bnQgPSAxOw0KPj4gwqDC oMKgwqDCoCBJTklUX0xJU1RfSEVBRCgmYm9fdmEtPmJvX2xpc3QpOw0KPj4gQEAgLTQ1Niw3ICs0 NTYsNyBAQCBpbnQgcmFkZW9uX3ZtX2JvX3NldF9hZGRyKHN0cnVjdCByYWRlb25fZGV2aWNlIA0K Pj4gKnJkZXYsDQo+PiDCoCDCoMKgwqDCoMKgIGlmIChzb2Zmc2V0KSB7DQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLyogbWFrZSBzdXJlIG9iamVjdCBmaXQgYXQgdGhpcyBvZmZzZXQgKi8NCj4+IC3C oMKgwqDCoMKgwqDCoCBlb2Zmc2V0ID0gc29mZnNldCArIHNpemUgLSAxOw0KPj4gK8KgwqDCoMKg wqDCoMKgIGVvZmZzZXQgPSBzb2Zmc2V0ICsgc2l6ZTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoc29mZnNldCA+PSBlb2Zmc2V0KSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ID0gLUVJTlZBTDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3JfdW5y ZXNlcnZlOw0KPj4gQEAgLTQ4NiwxNCArNDg2LDE0IEBAIGludCByYWRlb25fdm1fYm9fc2V0X2Fk ZHIoc3RydWN0IHJhZGVvbl9kZXZpY2UgDQo+PiAqcmRldiwNCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIGJvIGFuZCB0bXAgb3ZlcmxhcCwgaW52YWxpZCBvZmZzZXQgKi8NCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIocmRldi0+ZGV2LCAiYm8gJXAgdmEgMHgl MDEwTHggY29uZmxpY3Qgd2l0aCAiDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICIoYm8gJXAgMHglMDEwbHggMHglMDEwbHgpXG4iLCBib192YS0+Ym8sDQo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNvZmZzZXQsIHRtcC0+Ym8sIHRtcC0+aXQuc3RhcnQs IHRtcC0+aXQubGFzdCk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNvZmZz ZXQsIHRtcC0+Ym8sIHRtcC0+aXQuc3RhcnQsIHRtcC0+aXQuZW5kKTsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmdm0tPm11dGV4KTsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHIgPSAtRUlOVkFMOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byBlcnJvcl91bnJlc2VydmU7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gwqDC oMKgwqDCoCB9DQo+PiDCoCAtwqDCoMKgIGlmIChib192YS0+aXQuc3RhcnQgfHwgYm9fdmEtPml0 Lmxhc3QpIHsNCj4+ICvCoMKgwqAgaWYgKGJvX3ZhLT5pdC5zdGFydCB8fCBib192YS0+aXQuZW5k KSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYWRkIGEgY2xvbmUgb2YgdGhlIGJvX3ZhIHRv IGNsZWFyIHRoZSBvbGQgYWRkcmVzcyAqLw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBy YWRlb25fYm9fdmEgKnRtcDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB0bXAgPSBremFsbG9jKHNp emVvZihzdHJ1Y3QgcmFkZW9uX2JvX3ZhKSwgR0ZQX0tFUk5FTCk7DQo+PiBAQCAtNTAzLDE0ICs1 MDMsMTQgQEAgaW50IHJhZGVvbl92bV9ib19zZXRfYWRkcihzdHJ1Y3QgcmFkZW9uX2RldmljZSAN Cj4+ICpyZGV2LA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJvcl91bnJl c2VydmU7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRt cC0+aXQuc3RhcnQgPSBib192YS0+aXQuc3RhcnQ7DQo+PiAtwqDCoMKgwqDCoMKgwqAgdG1wLT5p dC5sYXN0ID0gYm9fdmEtPml0Lmxhc3Q7DQo+PiArwqDCoMKgwqDCoMKgwqAgdG1wLT5pdC5lbmQg PSBib192YS0+aXQuZW5kOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRtcC0+dm0gPSB2bTsNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB0bXAtPmJvID0gcmFkZW9uX2JvX3JlZihib192YS0+Ym8pOw0K Pj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVydmFsX3RyZWVfcmVtb3ZlKCZib192YS0+aXQs ICZ2bS0+dmEpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9jaygmdm0tPnN0YXR1c19s b2NrKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBib192YS0+aXQuc3RhcnQgPSAwOw0KPj4gLcKg wqDCoMKgwqDCoMKgIGJvX3ZhLT5pdC5sYXN0ID0gMDsNCj4+ICvCoMKgwqDCoMKgwqDCoCBib192 YS0+aXQuZW5kID0gMDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2RlbF9pbml0KCZib192 YS0+dm1fc3RhdHVzKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2FkZCgmdG1wLT52bV9z dGF0dXMsICZ2bS0+ZnJlZWQpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZ2 bS0+c3RhdHVzX2xvY2spOw0KPj4gQEAgLTUxOSw3ICs1MTksNyBAQCBpbnQgcmFkZW9uX3ZtX2Jv X3NldF9hZGRyKHN0cnVjdCByYWRlb25fZGV2aWNlIA0KPj4gKnJkZXYsDQo+PiDCoMKgwqDCoMKg IGlmIChzb2Zmc2V0IHx8IGVvZmZzZXQpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzcGluX2xv Y2soJnZtLT5zdGF0dXNfbG9jayk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYm9fdmEtPml0LnN0 YXJ0ID0gc29mZnNldDsNCj4+IC3CoMKgwqDCoMKgwqDCoCBib192YS0+aXQubGFzdCA9IGVvZmZz ZXQ7DQo+PiArwqDCoMKgwqDCoMKgwqAgYm9fdmEtPml0LmVuZCA9IGVvZmZzZXQ7DQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgbGlzdF9hZGQoJmJvX3ZhLT52bV9zdGF0dXMsICZ2bS0+Y2xlYXJlZCk7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3Bpbl91bmxvY2soJnZtLT5zdGF0dXNfbG9jayk7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZXJ2YWxfdHJlZV9pbnNlcnQoJmJvX3ZhLT5pdCwgJnZt LT52YSk7DQo+PiBAQCAtOTY0LDcgKzk2NCw3IEBAIGludCByYWRlb25fdm1fYm9fdXBkYXRlKHN0 cnVjdCByYWRlb25fZGV2aWNlICpyZGV2LA0KPj4gwqAgwqDCoMKgwqDCoCB0cmFjZV9yYWRlb25f dm1fYm9fdXBkYXRlKGJvX3ZhKTsNCj4+IMKgIC3CoMKgwqAgbnB0ZXMgPSBib192YS0+aXQubGFz dCAtIGJvX3ZhLT5pdC5zdGFydCArIDE7DQo+PiArwqDCoMKgIG5wdGVzID0gYm9fdmEtPml0LmVu ZCAtIGJvX3ZhLT5pdC5zdGFydDsNCj4+IMKgIMKgwqDCoMKgwqAgLyogcmVzZXJ2ZSBzcGFjZSBm b3Igb25lIGNvbW1hbmQgZXZlcnkgKDEgPDwgQkxPQ0tfU0laRSkgZW50cmllcw0KPj4gwqDCoMKg wqDCoMKgwqDCoCBvciAyayBkd29yZHMgKHdoYXRldmVyIGlzIHNtYWxsZXIpICovDQo+PiBAQCAt MTAxMCw3ICsxMDEwLDcgQEAgaW50IHJhZGVvbl92bV9ib191cGRhdGUoc3RydWN0IHJhZGVvbl9k ZXZpY2UgDQo+PiAqcmRldiwNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gwqAgwqDCoMKgwqDCoCByID0g cmFkZW9uX3ZtX3VwZGF0ZV9wdGVzKHJkZXYsIHZtLCAmaWIsIGJvX3ZhLT5pdC5zdGFydCwNCj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvX3ZhLT5pdC5sYXN0ICsgMSwg YWRkciwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvX3ZhLT5pdC5l bmQsIGFkZHIsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByYWRl b25fdm1fcGFnZV9mbGFncyhib192YS0+ZmxhZ3MpKTsNCj4+IMKgwqDCoMKgwqAgaWYgKHIpIHsN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByYWRlb25faWJfZnJlZShyZGV2LCAmaWIpOw0KPj4gQEAg LTEwMjYsNyArMTAyNiw3IEBAIGludCByYWRlb25fdm1fYm9fdXBkYXRlKHN0cnVjdCByYWRlb25f ZGV2aWNlIA0KPj4gKnJkZXYsDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHI7DQo+PiDC oMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAgaWIuZmVuY2UtPmlzX3ZtX3VwZGF0ZSA9IHRydWU7 DQo+PiAtwqDCoMKgIHJhZGVvbl92bV9mZW5jZV9wdHModm0sIGJvX3ZhLT5pdC5zdGFydCwgYm9f dmEtPml0Lmxhc3QgKyAxLCANCj4+IGliLmZlbmNlKTsNCj4+ICvCoMKgwqAgcmFkZW9uX3ZtX2Zl bmNlX3B0cyh2bSwgYm9fdmEtPml0LnN0YXJ0LCBib192YS0+aXQuZW5kLCBpYi5mZW5jZSk7DQo+ PiDCoMKgwqDCoMKgIHJhZGVvbl9mZW5jZV91bnJlZigmYm9fdmEtPmxhc3RfcHRfdXBkYXRlKTsN Cj4+IMKgwqDCoMKgwqAgYm9fdmEtPmxhc3RfcHRfdXBkYXRlID0gcmFkZW9uX2ZlbmNlX3JlZihp Yi5mZW5jZSk7DQo+PiDCoMKgwqDCoMKgIHJhZGVvbl9pYl9mcmVlKHJkZXYsICZpYik7DQo+PiBA QCAtMTEyNCwxMiArMTEyNCwxMiBAQCB2b2lkIHJhZGVvbl92bV9ib19ybXYoc3RydWN0IHJhZGVv bl9kZXZpY2UgDQo+PiAqcmRldiwNCj4+IMKgwqDCoMKgwqAgbGlzdF9kZWwoJmJvX3ZhLT5ib19s aXN0KTsNCj4+IMKgIMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmdm0tPm11dGV4KTsNCj4+IC3CoMKg wqAgaWYgKGJvX3ZhLT5pdC5zdGFydCB8fCBib192YS0+aXQubGFzdCkNCj4+ICvCoMKgwqAgaWYg KGJvX3ZhLT5pdC5zdGFydCB8fCBib192YS0+aXQuZW5kKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGludGVydmFsX3RyZWVfcmVtb3ZlKCZib192YS0+aXQsICZ2bS0+dmEpOw0KPj4gwqAgwqDCoMKg wqDCoCBzcGluX2xvY2soJnZtLT5zdGF0dXNfbG9jayk7DQo+PiDCoMKgwqDCoMKgIGxpc3RfZGVs KCZib192YS0+dm1fc3RhdHVzKTsNCj4+IC3CoMKgwqAgaWYgKGJvX3ZhLT5pdC5zdGFydCB8fCBi b192YS0+aXQubGFzdCkgew0KPj4gK8KgwqDCoCBpZiAoYm9fdmEtPml0LnN0YXJ0IHx8IGJvX3Zh LT5pdC5lbmQpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBib192YS0+Ym8gPSByYWRlb25fYm9f cmVmKGJvX3ZhLT5ibyk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9hZGQoJmJvX3ZhLT52 bV9zdGF0dXMsICZ2bS0+ZnJlZWQpOw0KPj4gwqDCoMKgwqDCoCB9IGVsc2Ugew0KPj4gQEAgLTEx NTgsNyArMTE1OCw3IEBAIHZvaWQgcmFkZW9uX3ZtX2JvX2ludmFsaWRhdGUoc3RydWN0IA0KPj4g cmFkZW9uX2RldmljZSAqcmRldiwNCj4+IMKgwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeShi b192YSwgJmJvLT52YSwgYm9fbGlzdCkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9j aygmYm9fdmEtPnZtLT5zdGF0dXNfbG9jayk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGxp c3RfZW1wdHkoJmJvX3ZhLT52bV9zdGF0dXMpICYmDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoYm9fdmEtPml0LnN0YXJ0IHx8IGJvX3ZhLT5pdC5sYXN0KSkNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIChib192YS0+aXQuc3RhcnQgfHwgYm9fdmEtPml0LmVuZCkpDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2FkZCgmYm9fdmEtPnZtX3N0YXR1cywgJmJvX3ZhLT52 bS0+aW52YWxpZGF0ZWQpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZib192 YS0+dm0tPnN0YXR1c19sb2NrKTsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaW5maW5pYmFuZC9jb3JlL3VtZW1fb2RwLmMgDQo+PiBiL2RyaXZlcnMvaW5maW5pYmFu ZC9jb3JlL3VtZW1fb2RwLmMNCj4+IGluZGV4IGY2N2EzMGZkYTFlZC4uOWI3YWM5MzIyM2Q2IDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYw0KPj4gKysr IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvdW1lbV9vZHAuYw0KPj4gQEAgLTIxOSwyNiArMjE5 LDE5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGliX2luaXRfdW1lbV9vZHAoc3RydWN0IA0KPj4gaWJf dW1lbV9vZHAgKnVtZW1fb2RwKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQUxJR05f RE9XTih1bWVtX29kcC0+dW1lbS5hZGRyZXNzLCBwYWdlX3NpemUpOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChjaGVja19hZGRfb3ZlcmZsb3codW1lbV9vZHAtPnVtZW0uYWRkcmVzcywNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodW5zaWdu ZWQgbG9uZyl1bWVtX29kcC0+dW1lbS5sZW5ndGgsDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnVtZW1fb2RwLT5pbnRlcnZhbF90cmVlLmxhc3QpKQ0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZ1bWVtX29k cC0+aW50ZXJ2YWxfdHJlZS5lbmQpKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FT1ZFUkZMT1c7DQo+PiAtwqDCoMKgwqDCoMKgwqAgdW1lbV9vZHAtPmludGVydmFsX3Ry ZWUubGFzdCA9DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTElHTih1bWVtX29kcC0+aW50 ZXJ2YWxfdHJlZS5sYXN0LCBwYWdlX3NpemUpOw0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmICh1bmxp a2VseSh1bWVtX29kcC0+aW50ZXJ2YWxfdHJlZS5sYXN0IDwgcGFnZV9zaXplKSkNCj4+ICvCoMKg wqDCoMKgwqDCoCB1bWVtX29kcC0+aW50ZXJ2YWxfdHJlZS5lbmQgPQ0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQUxJR04odW1lbV9vZHAtPmludGVydmFsX3RyZWUuZW5kLCBwYWdlX3NpemUp Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh1bmxpa2VseSh1bWVtX29kcC0+aW50ZXJ2YWxfdHJl ZS5lbmQgPCBwYWdlX3NpemUpKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FT1ZFUkZMT1c7DQo+PiDCoCAtwqDCoMKgwqDCoMKgwqAgcGFnZXMgPSAodW1lbV9vZHAtPmlu dGVydmFsX3RyZWUubGFzdCAtDQo+PiArwqDCoMKgwqDCoMKgwqAgcGFnZXMgPSAodW1lbV9vZHAt PmludGVydmFsX3RyZWUuZW5kIC0NCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW1l bV9vZHAtPmludGVydmFsX3RyZWUuc3RhcnQpID4+DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bWVtX29kcC0+cGFnZV9zaGlmdDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXBh Z2VzKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+PiDC oCAtwqDCoMKgwqDCoMKgwqAgLyoNCj4+IC3CoMKgwqDCoMKgwqDCoMKgICogTm90ZSB0aGF0IHRo ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZXJ2YWxzIGluIHRoZQ0KPj4gLcKgwqDCoMKgwqDC oMKgwqAgKiBpbnRlcnZhbCB0cmVlIGNvbnNpZGVycyB0aGUgZW5kaW5nIHBvaW50IGFzIGNvbnRh aW5lZCBpbg0KPj4gLcKgwqDCoMKgwqDCoMKgwqAgKiB0aGUgaW50ZXJ2YWwuDQo+PiAtwqDCoMKg wqDCoMKgwqDCoCAqLw0KPj4gLcKgwqDCoMKgwqDCoMKgIHVtZW1fb2RwLT5pbnRlcnZhbF90cmVl Lmxhc3QtLTsNCj4+IC0NCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB1bWVtX29kcC0+cGFnZV9saXN0 ID0ga3ZjYWxsb2MoDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWdlcywgc2l6ZW9m KCp1bWVtX29kcC0+cGFnZV9saXN0KSwgR0ZQX0tFUk5FTCk7DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKCF1bWVtX29kcC0+cGFnZV9saXN0KQ0KPj4gQEAgLTc3NywxMiArNzcwLDEyIEBAIGlu dCByYnRfaWJfdW1lbV9mb3JfZWFjaF9pbl9yYW5nZShzdHJ1Y3QgDQo+PiByYl9yb290X2NhY2hl ZCAqcm9vdCwNCj4+IMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KHN0YXJ0ID09IGxhc3QpKQ0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXRfdmFsOw0KPj4gwqAgLcKgwqDCoCBmb3IgKG5v ZGUgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3Qocm9vdCwgc3RhcnQsIGxhc3QgLSAxKTsNCj4+ ICvCoMKgwqAgZm9yIChub2RlID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KHJvb3QsIHN0YXJ0 LCBsYXN0KTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5vZGU7IG5vZGUgPSBuZXh0 KSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLyogVE9ETyBtb3ZlIHRoZSBibG9ja2FibGUgZGVj aXNpb24gdXAgdG8gdGhlIGNhbGxiYWNrICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFi bG9ja2FibGUpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVBR0FJTjsN Cj4+IC3CoMKgwqDCoMKgwqDCoCBuZXh0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQobm9kZSwg c3RhcnQsIGxhc3QgLSAxKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBuZXh0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQobm9kZSwgc3RhcnQsIGxhc3QpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVt ZW0gPSBjb250YWluZXJfb2Yobm9kZSwgc3RydWN0IGliX3VtZW1fb2RwLCBpbnRlcnZhbF90cmVl KTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXRfdmFsID0gY2IodW1lbSwgc3RhcnQsIGxhc3Qs IGNvb2tpZSkgfHwgcmV0X3ZhbDsNCj4+IMKgwqDCoMKgwqAgfQ0KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvaW9tbXUvdmlydGlvLWlvbW11LmMgYi9kcml2ZXJzL2lvbW11L3ZpcnRpby1pb21tdS5j DQo+PiBpbmRleCAzZWE5ZDc2ODI5OTkuLjc3MTc0MDk4MWY0MyAxMDA2NDQNCj4+IC0tLSBhL2Ry aXZlcnMvaW9tbXUvdmlydGlvLWlvbW11LmMNCj4+ICsrKyBiL2RyaXZlcnMvaW9tbXUvdmlydGlv LWlvbW11LmMNCj4+IEBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIGludCB2aW9tbXVfYWRkX21h cHBpbmcoc3RydWN0IA0KPj4gdmlvbW11X2RvbWFpbiAqdmRvbWFpbiwgdW5zaWduZWQgbG9uZyBp b3ZhLA0KPj4gwqAgwqDCoMKgwqDCoCBtYXBwaW5nLT5wYWRkcsKgwqDCoMKgwqDCoMKgID0gcGFk ZHI7DQo+PiDCoMKgwqDCoMKgIG1hcHBpbmctPmlvdmEuc3RhcnTCoMKgwqAgPSBpb3ZhOw0KPj4g LcKgwqDCoCBtYXBwaW5nLT5pb3ZhLmxhc3TCoMKgwqAgPSBpb3ZhICsgc2l6ZSAtIDE7DQo+PiAr wqDCoMKgIG1hcHBpbmctPmlvdmEuZW5kwqDCoMKgID0gaW92YSArIHNpemU7DQo+PiDCoMKgwqDC oMKgIG1hcHBpbmctPmZsYWdzwqDCoMKgwqDCoMKgwqAgPSBmbGFnczsNCj4+IMKgIMKgwqDCoMKg wqAgc3Bpbl9sb2NrX2lycXNhdmUoJnZkb21haW4tPm1hcHBpbmdzX2xvY2ssIGlycWZsYWdzKTsN Cj4+IEBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHNpemVfdCB2aW9tbXVfZGVsX21hcHBpbmdz KHN0cnVjdCANCj4+IHZpb21tdV9kb21haW4gKnZkb21haW4sDQo+PiDCoCB7DQo+PiDCoMKgwqDC oMKgIHNpemVfdCB1bm1hcHBlZCA9IDA7DQo+PiDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7DQo+PiAtwqDCoMKgIHVuc2lnbmVkIGxvbmcgbGFzdCA9IGlvdmEgKyBzaXplIC0gMTsNCj4+ ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBsYXN0ID0gaW92YSArIHNpemU7DQo+PiDCoMKgwqDCoMKg IHN0cnVjdCB2aW9tbXVfbWFwcGluZyAqbWFwcGluZyA9IE5VTEw7DQo+PiDCoMKgwqDCoMKgIHN0 cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKm5vZGUsICpuZXh0Ow0KPj4gwqAgQEAgLTM2Nyw3ICsz NjcsNyBAQCBzdGF0aWMgc2l6ZV90IHZpb21tdV9kZWxfbWFwcGluZ3Moc3RydWN0IA0KPj4gdmlv bW11X2RvbWFpbiAqdmRvbWFpbiwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVmlydGlvLWlv bW11IGRvZXNuJ3QgYWxsb3cgVU5NQVAgdG8gc3BsaXQgYSBtYXBwaW5nIGNyZWF0ZWQNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgICogd2l0aCBhIHNpbmdsZSBNQVAgcmVxdWVzdCwgc28gcmVtb3Zl IHRoZSBmdWxsIG1hcHBpbmcuDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gLcKgwqDC oMKgwqDCoMKgIHVubWFwcGVkICs9IG1hcHBpbmctPmlvdmEubGFzdCAtIG1hcHBpbmctPmlvdmEu c3RhcnQgKyAxOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHVubWFwcGVkICs9IG1hcHBpbmctPmlvdmEu ZW5kIC0gbWFwcGluZy0+aW92YS5zdGFydDsNCj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRl cnZhbF90cmVlX3JlbW92ZShub2RlLCAmdmRvbWFpbi0+bWFwcGluZ3MpOw0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGtmcmVlKG1hcHBpbmcpOw0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv aW50ZXJ2YWxfdHJlZS5oIA0KPj4gYi9pbmNsdWRlL2xpbnV4L2ludGVydmFsX3RyZWUuaA0KPj4g aW5kZXggMjg4YzI2ZjUwNzMyLi5mM2QxZWE5ZTQwMDMgMTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRl L2xpbnV4L2ludGVydmFsX3RyZWUuaA0KPj4gKysrIGIvaW5jbHVkZS9saW51eC9pbnRlcnZhbF90 cmVlLmgNCj4+IEBAIC03LDcgKzcsNyBAQA0KPj4gwqAgc3RydWN0IGludGVydmFsX3RyZWVfbm9k ZSB7DQo+PiDCoMKgwqDCoMKgIHN0cnVjdCByYl9ub2RlIHJiOw0KPj4gwqDCoMKgwqDCoCB1bnNp Z25lZCBsb25nIHN0YXJ0O8KgwqDCoCAvKiBTdGFydCBvZiBpbnRlcnZhbCAqLw0KPj4gLcKgwqDC oCB1bnNpZ25lZCBsb25nIGxhc3Q7wqDCoMKgIC8qIExhc3QgbG9jYXRpb24gX2luXyBpbnRlcnZh bCAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGVuZDvCoMKgwqAgLyogTGFzdCBsb2NhdGlv biBfb3V0c2lkZV8gaW50ZXJ2YWwgKi8NCj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBfX3N1 YnRyZWVfbGFzdDsNCj4+IMKgIH07DQo+PiDCoCBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9yZG1hL2li X3VtZW1fb2RwLmggYi9pbmNsdWRlL3JkbWEvaWJfdW1lbV9vZHAuaA0KPj4gaW5kZXggMjUzZGYx YTFmYTU0Li5kMGFlN2FhMjEzOWIgMTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL3JkbWEvaWJfdW1l bV9vZHAuaA0KPj4gKysrIGIvaW5jbHVkZS9yZG1hL2liX3VtZW1fb2RwLmgNCj4+IEBAIC05Nyw3 ICs5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBpYl91bWVtX3N0YXJ0KHN0cnVj dCANCj4+IGliX3VtZW1fb2RwICp1bWVtX29kcCkNCj4+IMKgIC8qIFJldHVybnMgdGhlIGFkZHJl c3Mgb2YgdGhlIHBhZ2UgYWZ0ZXIgdGhlIGxhc3Qgb25lIG9mIGFuIE9EUCANCj4+IHVtZW0uICov DQo+PiDCoCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgaWJfdW1lbV9lbmQoc3RydWN0IGli X3VtZW1fb2RwICp1bWVtX29kcCkNCj4+IMKgIHsNCj4+IC3CoMKgwqAgcmV0dXJuIHVtZW1fb2Rw LT5pbnRlcnZhbF90cmVlLmxhc3QgKyAxOw0KPj4gK8KgwqDCoCByZXR1cm4gdW1lbV9vZHAtPmlu dGVydmFsX3RyZWUuZW5kOw0KPj4gwqAgfQ0KPj4gwqAgwqAgc3RhdGljIGlubGluZSBzaXplX3Qg aWJfdW1lbV9vZHBfbnVtX3BhZ2VzKHN0cnVjdCBpYl91bWVtX29kcCANCj4+ICp1bWVtX29kcCkN Cj4+IEBAIC0xNjUsNyArMTY1LDcgQEAgcmJ0X2liX3VtZW1fbG9va3VwKHN0cnVjdCByYl9yb290 X2NhY2hlZCAqcm9vdCwgDQo+PiB1NjQgYWRkciwgdTY0IGxlbmd0aCkNCj4+IMKgIHsNCj4+IMKg wqDCoMKgwqAgc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqbm9kZTsNCj4+IMKgIC3CoMKgwqAg bm9kZSA9IGludGVydmFsX3RyZWVfaXRlcl9maXJzdChyb290LCBhZGRyLCBhZGRyICsgbGVuZ3Ro IC0gMSk7DQo+PiArwqDCoMKgIG5vZGUgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3Qocm9vdCwg YWRkciwgYWRkciArIGxlbmd0aCk7DQo+PiDCoMKgwqDCoMKgIGlmICghbm9kZSkNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsNCj4+IMKgwqDCoMKgwqAgcmV0dXJuIGNvbnRhaW5l cl9vZihub2RlLCBzdHJ1Y3QgaWJfdW1lbV9vZHAsIGludGVydmFsX3RyZWUpOw0KPj4gZGlmZiAt LWdpdCBhL2xpYi9pbnRlcnZhbF90cmVlLmMgYi9saWIvaW50ZXJ2YWxfdHJlZS5jDQo+PiBpbmRl eCA1OTNjZTU2ZWNlNTAuLjMzNmVjNTExM2EyOCAxMDA2NDQNCj4+IC0tLSBhL2xpYi9pbnRlcnZh bF90cmVlLmMNCj4+ICsrKyBiL2xpYi9pbnRlcnZhbF90cmVlLmMNCj4+IEBAIC0xLDE1ICsxLDE1 IEBADQo+PiDCoCAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+PiDC oCAjaW5jbHVkZSA8bGludXgvaW50ZXJ2YWxfdHJlZS5oPg0KPj4gLSNpbmNsdWRlIDxsaW51eC9p bnRlcnZhbF90cmVlX2dlbmVyaWMuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJ2YWxfdHJl ZV9nZW4uaD4NCj4+IMKgICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPg0KPj4gwqAgI2luY2x1 ZGUgPGxpbnV4L2V4cG9ydC5oPg0KPj4gwqAgwqAgI2RlZmluZSBTVEFSVChub2RlKSAoKG5vZGUp LT5zdGFydCkNCj4+IC0jZGVmaW5lIExBU1Qobm9kZSnCoCAoKG5vZGUpLT5sYXN0KQ0KPj4gKyNk ZWZpbmUgRU5EKG5vZGUpwqAgKChub2RlKS0+ZW5kKQ0KPj4gwqAgwqAgSU5URVJWQUxfVFJFRV9E RUZJTkUoc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSwgcmIsDQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcsIF9fc3VidHJlZV9sYXN0LA0KPj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBTVEFSVCwgTEFTVCwsIGludGVydmFsX3RyZWUpDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFNUQVJULCBFTkQsLCBpbnRlcnZhbF90cmVlKQ0KPj4gwqAgwqAg RVhQT1JUX1NZTUJPTF9HUEwoaW50ZXJ2YWxfdHJlZV9pbnNlcnQpOw0KPj4gwqAgRVhQT1JUX1NZ TUJPTF9HUEwoaW50ZXJ2YWxfdHJlZV9yZW1vdmUpOw0KPg0KDQo=