Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp250496img; Mon, 18 Mar 2019 02:13:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqwRTmpK9i/d76GqDxb7HC88O9QOuuP4q9hKlDCYkjOaQxWEX1oLDIX9t7tCoaevE16T/auS X-Received: by 2002:a63:c06:: with SMTP id b6mr5201575pgl.440.1552900396894; Mon, 18 Mar 2019 02:13:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552900396; cv=none; d=google.com; s=arc-20160816; b=C8f7JvTaxVWLQBPRFChpuTyFHEglmjNKeEM8tZR3UkQK4MxWcaIQPR8J3gBKaGknzN aOeJW+iyZ4Q8qeSP/uyh0oHtp9+0PKMh1dolh+1dkNT7arhktLwhZkOpzQxcRPfH2anC SAVk2wN3O868acofSNK3/KJyhiIHsUbd7kKY26tZmarmgShRzAcy4OLV/mTIPmbhweqX Taye4/bgCJHZDmIK/fLKNkuJ5JO6pBNumNkll0TFg5nM8CtYUVMOwxy2OHigeZfqljwi 7D6gCLa53Cxvzw1XX4ZAcnNX46/bmJvoWBRMaGrOJOWpE4ekqzpICqDtpuW4BkvfMfQO zsCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:to:from :dkim-signature; bh=i+3I4EYOBmpuna5nYPIZ0hbgTLOAOxHRLVkg/kY7Gm0=; b=t1CfAfZlftZU/zrWiNMw065xm0On+Hl1koV5D2YqR4T9WiPi0sPROvGG+f9j++T7jN e16Wz0ZPbSc/oxo4Cqt27LgPQD3U4fYnHpPrWC9QGw1BbI9OsXBpogpD5J+xP42fIzVA BnP+EU4XRHB1epSBUKugHQaHBLgWHEML/lQzLhFC0LZD5H3B6lFPXgUwyslJxG/NUFq/ JW7Civ4D3whSD38+xCFosdvecdRmepiBzrZC9bdvhzn6vE8XUtplgZu+ldrPEgeifcl4 KSCVqZpDna/uDTDFrBB2ynJUJ9yJdpT4OjR/JdDvEj4l63B07IPD+Qc2K+nEdDHutjGs y4dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector1-microchiptechnology-onmicrosoft-com header.b=VLvjrLNN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w8si8748260plp.349.2019.03.18.02.13.01; Mon, 18 Mar 2019 02:13:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector1-microchiptechnology-onmicrosoft-com header.b=VLvjrLNN; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727022AbfCRJLL (ORCPT + 99 others); Mon, 18 Mar 2019 05:11:11 -0400 Received: from esa1.microchip.iphmx.com ([68.232.147.91]:36772 "EHLO esa1.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726748AbfCRJLL (ORCPT ); Mon, 18 Mar 2019 05:11:11 -0400 X-IronPort-AV: E=Sophos;i="5.58,493,1544511600"; d="scan'208";a="29522268" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 18 Mar 2019 02:11:09 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.76.38) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 18 Mar 2019 02:11:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector1-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i+3I4EYOBmpuna5nYPIZ0hbgTLOAOxHRLVkg/kY7Gm0=; b=VLvjrLNNdyixbRB87uKZywAo8zltW1AmaW6xHr9ixh0/r0JRC51DhQf1SnHhYb8MwMhnoL8arNZ1nxhE/NYayXRe76g8U8WAzhLbQcsxmdOfSxEJOlXs60b/Tyi/xJqeXqjVEDoNAvAGUOv/M/NRd3G7CiqbKXHh6y7gyuc+4tM= Received: from DM5PR11MB1242.namprd11.prod.outlook.com (10.168.108.8) by DM5PR11MB1803.namprd11.prod.outlook.com (10.175.91.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.13; Mon, 18 Mar 2019 09:11:06 +0000 Received: from DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e8b6:2ae9:9b9c:2ca8]) by DM5PR11MB1242.namprd11.prod.outlook.com ([fe80::e8b6:2ae9:9b9c:2ca8%3]) with mapi id 15.20.1709.015; Mon, 18 Mar 2019 09:11:06 +0000 From: To: , , , , , , Subject: Re: [PATCH v2 1/2] media: atmel: atmel-isc: reworked driver and formats Thread-Topic: [PATCH v2 1/2] media: atmel: atmel-isc: reworked driver and formats Thread-Index: AQHU2W3jEjSHs0v2fEmY3j98V2LyQaYJ0K6AgAdQPIA= Date: Mon, 18 Mar 2019 09:11:06 +0000 Message-ID: <85658c13-6785-6c5d-0fe6-2e48fe8741b9@microchip.com> References: <1552461639-8708-1-git-send-email-eugen.hristev@microchip.com> In-Reply-To: Accept-Language: ro-RO, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR07CA0219.eurprd07.prod.outlook.com (2603:10a6:802:58::22) To DM5PR11MB1242.namprd11.prod.outlook.com (2603:10b6:3:14::8) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Eugen.Hristev@microchip.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190318110635334 x-originating-ip: [94.177.32.154] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ae146926-be4d-4e42-af81-08d6ab81a6c5 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(2017052603328)(7153060)(7193020);SRVR:DM5PR11MB1803; x-ms-traffictypediagnostic: DM5PR11MB1803: x-microsoft-antispam-prvs: x-forefront-prvs: 098076C36C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(136003)(346002)(376002)(39860400002)(366004)(189003)(199004)(13464003)(316002)(2616005)(476003)(486006)(446003)(106356001)(105586002)(11346002)(71200400001)(71190400001)(102836004)(52116002)(30864003)(26005)(386003)(53946003)(53936002)(53546011)(5660300002)(6506007)(99286004)(229853002)(6512007)(76176011)(110136005)(25786009)(6486002)(6246003)(186003)(6436002)(256004)(14444005)(14454004)(72206003)(66066001)(8936002)(478600001)(68736007)(31686004)(36756003)(97736004)(81156014)(6116002)(8676002)(86362001)(2201001)(81166006)(305945005)(7736002)(31696002)(3846002)(2501003)(2906002)(461764006)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR11MB1803;H:DM5PR11MB1242.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microchip.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: j+pHWHkUCxlk+BUbGN5bQpNqkWnvpWSnCor6T2hKKGg+USffu0KAgPBpMv53NZM9fWThE3cM+CVQenOYUYoIt/V0j9K6k6VMKbEYD2BuKEKiVdWSNk6I+x4aPx89vt95f3WJCVDG+yiUPyIsg0g49n9/XTNMigD3vmS/NIX/oL9rFcqXXJUcOjv/JzD6OSlt8VbDe5/jfx66NK8PN+YXVTG2MTdHYejJ+Z+MSz2prmQ5X78e5pvYueE9uu/F53wumY9EZHba6knt5f/hMyE/l8/eZPZ1F3jaYmzi491laMcbEJafDYbBZerXRiAGWGWYPrImZ1MVAp67p6W35VAeE4VhvSRRQPUgnsNQmdKCJMSj9j5oRLv/7LUEZvtseC/mwAIAFjGINmjU7myKTccJRFN+Hjw7wQ8pWydj5FOAIN0= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: ae146926-be4d-4e42-af81-08d6ab81a6c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2019 09:11:06.1692 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1803 X-OriginatorOrg: microchip.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDEzLjAzLjIwMTkgMTk6MzMsIEtlbiBTbG9hdCB3cm90ZToNCj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBFdWdlbi5IcmlzdGV2QG1pY3JvY2hpcC5jb20gPEV1 Z2VuLkhyaXN0ZXZAbWljcm9jaGlwLmNvbT4NCj4+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggMTMs IDIwMTkgMzoyNSBBTQ0KPj4gVG86IGh2ZXJrdWlsQHhzNGFsbC5ubDsgTmljb2xhcy5GZXJyZUBt aWNyb2NoaXAuY29tOyBsaW51eC0NCj4+IG1lZGlhQHZnZXIua2VybmVsLm9yZzsgbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC0NCj4+IGtlcm5lbEB2Z2VyLmtlcm5l bC5vcmc7IG1jaGVoYWJAa2VybmVsLm9yZw0KPj4gQ2M6IEtlbiBTbG9hdCA8S1Nsb2F0QGFhbXBn bG9iYWwuY29tPjsgRXVnZW4uSHJpc3RldkBtaWNyb2NoaXAuY29tDQo+PiBTdWJqZWN0OiBbUEFU Q0ggdjIgMS8yXSBtZWRpYTogYXRtZWw6IGF0bWVsLWlzYzogcmV3b3JrZWQgZHJpdmVyIGFuZCBm b3JtYXRzDQo+Pg0KPj4gRnJvbTogRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJpc3RldkBtaWNyb2No aXAuY29tPg0KPj4NCj4+IFRoaXMgY2hhbmdlIGlzIGEgcmVkZXNpZ24gaW4gdGhlIGZvcm1hdHMg YW5kIHRoZSB3YXkgdGhlIElTQyBpcyBjb25maWd1cmVkIHcuci50Lg0KPj4gc2Vuc29yIGZvcm1h dCBhbmQgdGhlIG91dHB1dCBmb3JtYXQgZnJvbSB0aGUgSVNDLg0KPj4gSSBoYXZlIGNoYW5nZWQg dGhlIHNwbGl0dGluZyBiZXR3ZWVuIHNlbnNvciBvdXRwdXQgKHdoaWNoIGlzIGFsc28gSVNDIGlu cHV0KSBhbmQNCj4+IElTQyBvdXRwdXQuDQo+PiBUaGUgc2Vuc29yIGZvcm1hdCByZXByZXNlbnRz IHRoZSB3YXkgdGhlIHNlbnNvciBpcyBjb25maWd1cmVkLCBhbmQgd2hhdCBJU0MgaXMNCj4+IHJl Y2VpdmluZy4NCj4+IFRoZSBmb3JtYXQgY29uZmlndXJhdGlvbiByZXByZXNlbnRzIHRoZSB3YXkg SVNDIGlzIGludGVycHJldGluZyB0aGUgZGF0YSBhbmQNCj4+IGZvcm1hdHRpbmcgdGhlIG91dHB1 dCB0byB0aGUgc3Vic3lzdGVtLg0KPj4gTm93IGl0J3MgbXVjaCBlYXNpZXIgdG8gZmlndXJlIG91 dCB3aGF0IGlzIHRoZSBJU0MgY29uZmlndXJhdGlvbiBmb3IgaW5wdXQsIGFuZA0KPj4gd2hhdCBp cyB0aGUgY29uZmlndXJhdGlvbiBmb3Igb3V0cHV0Lg0KPj4gVGhlIG5vbi1yYXcgZm9ybWF0IGNh biBiZSBvYnRhaW5lZCBkaXJlY3RseSBmcm9tIHNlbnNvciBvciBpdCBjYW4gYmUgZG9uZQ0KPj4g aW5zaWRlIHRoZSBJU0MuIFRoZSBjb250cm9sbGVyIGZvcm1hdCBsaXN0IHdpbGwgaW5jbHVkZSBh IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2gNCj4+IGZvcm1hdC4NCj4+IFRoZSBvbGQgc3VwcG9ydGVk IGZvcm1hdHMgYXJlIHN0aWxsIGluIHBsYWNlLCBpZiB3ZSB3YW50IHRvIGR1bXAgdGhlIHNlbnNv cg0KPj4gZm9ybWF0IGRpcmVjdGx5IHRvIHRoZSBvdXRwdXQsIHRoZSB0cnkgZm9ybWF0IHJvdXRp bmUgd2lsbCBkZXRlY3QgYW5kIGNvbmZpZ3VyZQ0KPj4gdGhlIHBpcGVsaW5lIGFjY29yZGluZ2x5 Lg0KPj4gVGhpcyBhbHNvIGZpeGVzIHRoZSBwcmV2aW91cyBpc3N1ZXMgd2hlbiB0aGUgcmF3IGZv cm1hdCB3YXMgTlVMTCB3aGljaA0KPj4gcmVzdWx0ZWQgaW4gbWFueSBjcmFzaGVzIGZvciBzZW5z b3JzIHdoaWNoIGRpZCBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQvdGVzdGVkDQo+PiBmb3JtYXRzLg0K Pj4NCj4+IFNpZ25lZC1vZmYtYnk6IEV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWljcm9j aGlwLmNvbT4NCj4+IC0tLQ0KPj4NCj4+IEhlbGxvLA0KPj4NCj4+IEkgaGF2ZSBjaGFuZ2VkIHRo ZSB0cnkgdnMgc2V0IHNldHRpbmdzLCB3aXRoIGhhdmluZyBhbm90aGVyIGNvbmZpZ3VyYXRpb24g Zm9yIHRyeSwNCj4+IHdoaWNoIHdpbGwgYmUgY29waWVkIHRvIHRoZSBhY3R1YWwgY29uZmlndXJh dGlvbiBvbmx5IGFmdGVyIHNldCB3aWxsIGJlIGNhbGxlZC4NCj4+DQo+PiBUaGlzIHBhdGNoIGtl ZXBzIHRoZSBvcmlnaW5hbCBmb3JtYXRzLiBJIGFkZGVkIGEgc2Vjb25kIHBhdGNoIHRoYXQgZml4 ZXMgQVJHQg0KPj4gZm9ybWF0IHcuci50LiBieXRlIGVuZGlhbmVzcyBpbnNpZGUgdGhlIGZvcm1h dC4NCj4+DQo+PiBDaGFuZ2VzIGluIHYyOg0KPj4gICAtIG5vdyBoYXZlIHRyeV9jb25maWcgYW5k IGFsc28gY29uZmlnLCBhbGwgY29uZmlndXJhdGlvbiBzZXR0aW5nIHdpbGwgYmUgZG9uZQ0KPj4g aW5pdGlhbGx5IG9uIHRyeV9jb25maWcsIGFuZCB0aGVuIGlmIGV2ZXJ5dGhpbmcgaXMgT0ssIGlu IHNldF9mbXQsIGl0IHdpbGwgYmUgY29waWVkDQo+PiB0byB0aGUgYWN0dWFsIGNvbmZpZy4NCj4+ ICAgLSBjaGFuZ2VkIG1hY3JvIElTX1JBVyB0byBhcHBseSBvbiBtYnVzIGNvZGUgYW5kIG5vdCBp c2Mgc3RydWN0dXJlLCBpdCdzIG5vdw0KPj4gY2FsbGVkIElTQ19JU19GT1JNQVRfUkFXIGFuZCBp dCdzIGNhbGxlZCBldmVyeXdoZXJlIGl0J3MgbmVlZGVkLg0KPj4gICAtIHJlbmFtZWQgYWxsIGZ1 bmN0aW9ucyBmb3IgY29uZmlndXJlIG1vZHVsZXMgKGRtYSwgcmxwLCBwaXBlbGluZSwgZm9ybWF0 cykNCj4+IHdpdGggJ3RyeScgcHJlZml4DQo+Pg0KPj4gdGVzdGVkIHdpdGggc2Vuc29ycyBvdjc2 NzAsIG92Nzc0MCwgb3Y1NjQwDQo+Pg0KPj4gdjRsMi1jb21wbGlhbmNlOg0KPj4NCj4+IHY0bDIt Y29tcGxpYW5jZSBTSEE6IDMyY2Y0OTVmZjVkYTI0ZGY1NDkzNmZhZTNiZjBlYjkxZmJhNzdmM2Es IDMyIGJpdHMNCj4+DQo+PiBDb21wbGlhbmNlIHRlc3QgZm9yIGF0bWVsX2lzYyBkZXZpY2UgL2F0 bWVsX2RlbzA6aXNjIGYwMDA4MDAwLmlzYzoNCj4+ID09PT09PT09PT09PT09PT09ICBTVEFSVCBT VEFUVVMgID09PT09PT09PT09PT09PT09IGF0bWVsX2lzYw0KPj4gZjAwMDgwMDAuaXNjOiBCcmln aHRuZXNzOiAwIGF0bWVsX2lzYyBmMDAwODAwMC5pc2M6IENvbnRyYXN0OiAyNTYgYXRtZWxfaXNj DQo+PiBmMDAwODAwMC5pc2M6IEdhbW1hOiAyDQo+Pg0KPj4gYXRtZWl2ZXIgSW5mbzoNCj4+ICAg ICAgICAgIERyaXZlciBuYW1lICAgICAgOiBhdG1lbF9pc2MNCj4+ICAgICAgICAgIENhcmQgdHlw ZSAgICAgICAgOiBBdG1lbCBJbWFnZSBTZW5zb3IgQ29udHJvbGxlcg0KPj4gICAgICAgICAgQnVz IGluZm8gICAgICAgICA6IHBsYXRmb3JtOmF0bWVsX2lzYyBmMDAwODAwMC5pc2MNCj4+ICAgICAg ICAgIERyaXZlciB2ZXJzaW9uICAgOiA1LjAuMA0KPj4gICAgICAgICAgQ2FwYWJpbGl0aWVzICAg ICA6IDB4ODQyMDAwMDENCj4+ICAgICAgICAgICAgICAgICAgVmlkZW8gQ2FwdHVyZQ0KPj4gICAg ICAgICAgICAgICAgICBTdHJlYW1pbmcNCj4+ICAgICAgICAgICAgICAgICAgRXh0ZW5kZWQgUGl4 IEZvcm1hdA0KPj4gICAgICAgICAgICAgICAgICBEZXZpY2UgQ2FwYWJpbGl0aWVzDQo+PiAgICAg ICAgICBEZXZpY2UgQ2FwcyAgICAgIDogMHgwNDIwMDAwMQ0KPj4gICAgICAgICAgICAgICAgICBW aWRlbyBDYXB0dXJlDQo+PiAgICAgICAgICAgICAgICAgIFN0cmVhbWluZw0KPj4gICAgICAgICAg ICAgICAgICBFeHRlbmRlZCBQaXggRm9ybWF0DQo+Pg0KPj4gUmVxdWlyZWQgaW9jdGxzOg0KPj4g ICAgICAgICAgdGVzdCBWSURJT0NfUVVFUllDQVA6IE9LDQo+Pg0KPj4gQWxsb3cgZm9yIG11bHRp cGxlIG9wZW5zOg0KPj4gICAgICAgICAgdGVzdCBzZWNvbmQgL2Rldi92aWRlbzAgb3BlbjogT0sN Cj4+ICAgICAgICAgIHRlc3QgVklESU9DX1FVRVJZQ0FQOiBPSw0KPj4gICAgICAgICAgdGVzdCBW SURJT0NfRy9TX1BSSU9SSVRZOiBPSw0KPj4gICAgICAgICAgdGVzdCBmb3IgdW5saW1pdGVkIG9w ZW5zOiBPSw0KPj4NCj4+IERlYnVnIGlvY3RsczoNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0RC R19HL1NfUkVHSVNURVI6IE9LIChOb3QgU3VwcG9ydGVkKSBsX2lzYyBmMDAwODAwMC5pc2M6DQo+ PiBXaGl0ZSBCYWxhbmNlLCBBdXRvbWF0aWM6IHRydWUgYXRtZWxfaXNjIGYwMDA4MDAwLmlzYzog PT09PT09PT09PT09PT09PT09DQo+PiBFTkQgU1RBVFVTICA9PT09PT09PT09PT09PT09PT0NCj4+ ICAgICAgICAgIHRlc3QgVklESU9DX0xPR19TVEFUVVM6IE9LDQo+Pg0KPj4gSW5wdXQgaW9jdGxz Og0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfRy9TX1RVTkVSL0VOVU1fRlJFUV9CQU5EUzogT0sg KE5vdCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19HL1NfRlJFUVVFTkNZOiBP SyAoTm90IFN1cHBvcnRlZCkNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX1NfSFdfRlJFUV9TRUVL OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0VOVU1BVURJTzog T0sgKE5vdCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19HL1MvRU5VTUlOUFVU OiBPSw0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfRy9TX0FVRElPOiBPSyAoTm90IFN1cHBvcnRl ZCkNCj4+ICAgICAgICAgIElucHV0czogMSBBdWRpbyBJbnB1dHM6IDAgVHVuZXJzOiAwDQo+Pg0K Pj4gT3V0cHV0IGlvY3RsczoNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0cvU19NT0RVTEFUT1I6 IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfRy9TX0ZSRVFVRU5D WTogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19FTlVNQVVET1VU OiBPSyAoTm90IFN1cHBvcnRlZCkNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0cvUy9FTlVNT1VU UFVUOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0cvU19BVURP VVQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgT3V0cHV0czogMCBBdWRpbyBPdXRw dXRzOiAwIE1vZHVsYXRvcnM6IDANCj4+DQo+PiBJbnB1dC9PdXRwdXQgY29uZmlndXJhdGlvbiBp b2N0bHM6DQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19FTlVNL0cvUy9RVUVSWV9TVEQ6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfRU5VTS9HL1MvUVVFUllfRFZf VElNSU5HUzogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19EVl9U SU1JTkdTX0NBUDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19H L1NfRURJRDogT0sgKE5vdCBTdXBwb3J0ZWQpDQo+Pg0KPj4gQ29udHJvbCBpb2N0bHMgKElucHV0 IDApOg0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfUVVFUllfRVhUX0NUUkwvUVVFUllNRU5VOiBP Sw0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfUVVFUllDVFJMOiBPSw0KPj4gICAgICAgICAgdGVz dCBWSURJT0NfRy9TX0NUUkw6IE9LDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19HL1MvVFJZX0VY VF9DVFJMUzogT0sNCj4+ICAgICAgICAgIHRlc3QgVklESU9DXyhVTilTVUJTQ1JJQkVfRVZFTlQv RFFFVkVOVDogT0sNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0cvU19KUEVHQ09NUDogT0sgKE5v dCBTdXBwb3J0ZWQpDQo+PiAgICAgICAgICBTdGFuZGFyZCBDb250cm9sczogNSBQcml2YXRlIENv bnRyb2xzOiAwDQo+Pg0KPj4gRm9ybWF0IGlvY3RscyAoSW5wdXQgMCk6DQo+PiAgICAgICAgICB0 ZXN0IFZJRElPQ19FTlVNX0ZNVC9GUkFNRVNJWkVTL0ZSQU1FSU5URVJWQUxTOiBPSw0KPj4gICAg ICAgICAgdGVzdCBWSURJT0NfRy9TX1BBUk06IE9LDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19H X0ZCVUY6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfR19GTVQ6 IE9LDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19UUllfRk1UOiBPSw0KPj4gICAgICAgICAgdGVz dCBWSURJT0NfU19GTVQ6IE9LDQo+PiAgICAgICAgICB0ZXN0IFZJRElPQ19HX1NMSUNFRF9WQklf Q0FQOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4+ICAgICAgICAgIHRlc3QgQ3JvcHBpbmc6IE9LIChO b3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBDb21wb3Npbmc6IE9LIChOb3QgU3VwcG9y dGVkKQ0KPj4gICAgICAgICAgdGVzdCBTY2FsaW5nOiBPSyAoTm90IFN1cHBvcnRlZCkNCj4+DQo+ PiBDb2RlYyBpb2N0bHMgKElucHV0IDApOg0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfKFRSWV8p RU5DT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBWSURJT0Nf R19FTkNfSU5ERVg6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4gICAgICAgICAgdGVzdCBWSURJT0Nf KFRSWV8pREVDT0RFUl9DTUQ6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4NCj4+IEJ1ZmZlciBpb2N0 bHMgKElucHV0IDApOg0KPj4gICAgICAgICAgdGVzdCBWSURJT0NfUkVRQlVGUy9DUkVBVEVfQlVG Uy9RVUVSWUJVRjogT0sNCj4+ICAgICAgICAgIHRlc3QgVklESU9DX0VYUEJVRjogT0sNCj4+ICAg ICAgICAgIHRlc3QgUmVxdWVzdHM6IE9LIChOb3QgU3VwcG9ydGVkKQ0KPj4NCj4+IFRvdGFsIGZv ciBhdG1lbF9pc2MgZGV2aWNlIC9kZXYvdmlkZW8wOiA0NCwgU3VjY2VlZGVkOiA0NCwgRmFpbGVk OiAwLCBXYXJuaW5nczoNCj4+IDANCj4+DQo+Pg0KPj4gICBkcml2ZXJzL21lZGlhL3BsYXRmb3Jt L2F0bWVsL2F0bWVsLWlzYy5jIHwgODg4ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQo+ PiAtLQ0KPj4gICAxIGZpbGUgY2hhbmdlZCwgNDcxIGluc2VydGlvbnMoKyksIDQxNyBkZWxldGlv bnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hdG1lbC9h dG1lbC1pc2MuYw0KPj4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL2F0bWVsLWlzYy5j DQo+PiBpbmRleCA1MDE3ODk2Li5mNGVjYjI0IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9hdG1lbC9hdG1lbC1pc2MuYw0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9hdG1lbC9hdG1lbC1pc2MuYw0KPj4gQEAgLTg5LDM1ICs4OSwyNSBAQCBzdHJ1Y3QgaXNj X3N1YmRldl9lbnRpdHkgew0KPj4gICAJc3RydWN0IGxpc3RfaGVhZCBsaXN0Ow0KPj4gICB9Ow0K Pj4NCj4+IC0vKiBJbmRpY2F0ZSB0aGUgZm9ybWF0IGlzIGdlbmVyYXRlZCBieSB0aGUgc2Vuc29y ICovDQo+PiAtI2RlZmluZSBGTVRfRkxBR19GUk9NX1NFTlNPUgkJQklUKDApDQo+PiAtLyogSW5k aWNhdGUgdGhlIGZvcm1hdCBpcyBwcm9kdWNlZCBieSBJU0MgaXRzZWxmICovDQo+PiAtI2RlZmlu ZSBGTVRfRkxBR19GUk9NX0NPTlRST0xMRVIJQklUKDEpDQo+PiAtLyogSW5kaWNhdGUgYSBSYXcg QmF5ZXIgZm9ybWF0ICovDQo+PiAtI2RlZmluZSBGTVRfRkxBR19SQVdfRk9STUFUCQlCSVQoMikN Cj4+IC0NCj4+IC0jZGVmaW5lIEZNVF9GTEFHX1JBV19GUk9NX1NFTlNPUgkoRk1UX0ZMQUdfRlJP TV9TRU5TT1IgfA0KPj4gXA0KPj4gLQkJCQkJIEZNVF9GTEFHX1JBV19GT1JNQVQpDQo+PiAtDQo+ PiAgIC8qDQo+PiAgICAqIHN0cnVjdCBpc2NfZm9ybWF0IC0gSVNDIG1lZGlhIGJ1cyBmb3JtYXQg aW5mb3JtYXRpb24NCj4+ICsJCQlUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBpbnRlcmZh Y2UgYmV0d2VlbiB0aGUgSVNDDQo+PiArCQkJYW5kIHRoZSBzZW5zb3IuIEl0J3MgdGhlIGlucHV0 IGZvcm1hdCByZWNlaXZlZCBieQ0KPj4gKwkJCXRoZSBJU0MuDQo+PiAgICAqIEBmb3VyY2M6CQlG b3VyY2MgY29kZSBmb3IgdGhpcyBmb3JtYXQNCj4+ICAgICogQG1idXNfY29kZToJCVY0TDIgbWVk aWEgYnVzIGZvcm1hdCBjb2RlLg0KPj4gLSAqIGZsYWdzOgkJSW5kaWNhdGUgZm9ybWF0IGZyb20g c2Vuc29yIG9yIGNvbnZlcnRlZCBieSBjb250cm9sbGVyDQo+PiAtICogQGJwcDoJCUJpdHMgcGVy IHBpeGVsICh3aGVuIHN0b3JlZCBpbiBtZW1vcnkpDQo+PiAtICoJCQkod2hlbiB0cmFuc2ZlcnJl ZCBvdmVyIGEgYnVzKQ0KPj4gLSAqIEBzZF9zdXBwb3J0OgkJU3ViZGV2IHN1cHBvcnRzIHRoaXMg Zm9ybWF0DQo+PiAtICogQGlzY19zdXBwb3J0OglJU0MgY2FuIGNvbnZlcnQgcmF3IGZvcm1hdCB0 byB0aGlzIGZvcm1hdA0KPj4gKyAqIEBjZmFfYmF5Y2ZnOgkJSWYgdGhpcyBmb3JtYXQgaXMgUkFX IEJBWUVSLCBpbmRpY2F0ZSB0aGUgdHlwZQ0KPj4gb2YgYmF5ZXIuDQo+PiArCQkJdGhpcyBpcyBl aXRoZXIgQkdCRywgUkdSRywgZXRjLg0KPj4gKyAqIEBwZmVfY2ZnMF9icHM6CU51bWJlciBvZiBo YXJkd2FyZSBkYXRhIGxpbmVzIGNvbm5lY3RlZCB0byB0aGUgSVNDDQo+PiAgICAqLw0KPj4NCj4+ ICAgc3RydWN0IGlzY19mb3JtYXQgew0KPj4gICAJdTMyCWZvdXJjYzsNCj4+ICAgCXUzMgltYnVz X2NvZGU7DQo+PiAtCXUzMglmbGFnczsNCj4+IC0JdTgJYnBwOw0KPj4gKwl1MzIJY2ZhX2JheWNm ZzsNCj4+DQo+PiAgIAlib29sCXNkX3N1cHBvcnQ7DQo+PiAtCWJvb2wJaXNjX3N1cHBvcnQ7DQo+ PiArCXUzMglwZmVfY2ZnMF9icHM7DQo+PiAgIH07DQo+Pg0KPj4gICAvKiBQaXBlbGluZSBiaXRt YXAgKi8NCj4+IEBAIC0xMzUsMTYgKzEyNSwzMSBAQCBzdHJ1Y3QgaXNjX2Zvcm1hdCB7DQo+Pg0K Pj4gICAjZGVmaW5lIEdBTV9FTkFCTEVTCShHQU1fUkVOQUJMRSB8IEdBTV9HRU5BQkxFIHwgR0FN X0JFTkFCTEUgfA0KPj4gR0FNX0VOQUJMRSkNCj4+DQo+PiArLyoNCj4+ICsgKiBzdHJ1Y3QgZm10 X2NvbmZpZyAtIElTQyBmb3JtYXQgY29uZmlndXJhdGlvbiBhbmQgaW50ZXJuYWwgcGlwZWxpbmUN Cj4+ICsJCQlUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRzIHRoZSBpbnRlcm5hbCBjb25maWd1cmF0 aW9uDQo+PiArCQkJb2YgdGhlIElTQy4NCj4+ICsJCQlJdCBhbHNvIGhvbGRzIHRoZSBmb3JtYXQg dGhhdCBJU0Mgd2lsbCBwcmVzZW50IHRvIHY0bDIuDQo+PiArICogQHNkX2Zvcm1hdDoJCVBvaW50 ZXIgdG8gYW4gaXNjX2Zvcm1hdCBzdHJ1Y3QgdGhhdCBob2xkcyB0aGUNCj4+IHNlbnNvcg0KPj4g KwkJCWNvbmZpZ3VyYXRpb24uDQo+PiArICogQGZvdXJjYzoJCUZvdXJjYyBjb2RlIGZvciB0aGlz IGZvcm1hdC4NCj4+ICsgKiBAYnBwOgkJQnl0ZXMgcGVyIHBpeGVsIGluIHRoZSBjdXJyZW50IGZv cm1hdC4NCj4+ICsgKiBAcmxwX2NmZ19tb2RlOglDb25maWd1cmF0aW9uIG9mIHRoZSBSTFAgKHJv dW5kaW5nLCBsaW1pdGluZyBwYWNrYWdpbmcpDQo+PiArICogQGRjZmdfaW1vZGU6CQlDb25maWd1 cmF0aW9uIG9mIHRoZSBpbnB1dCBvZiB0aGUgRE1BIG1vZHVsZQ0KPj4gKyAqIEBkY3RybF9kdmll dzoJQ29uZmlndXJhdGlvbiBvZiB0aGUgb3V0cHV0IG9mIHRoZSBETUEgbW9kdWxlDQo+PiArICog QGJpdHNfcGlwZWxpbmU6CUNvbmZpZ3VyYXRpb24gb2YgdGhlIHBpcGVsaW5lLCB3aGljaCBtb2R1 bGVzIGFyZQ0KPj4gZW5hYmxlZA0KPj4gKyAqLw0KPj4gICBzdHJ1Y3QgZm10X2NvbmZpZyB7DQo+ PiAtCXUzMglmb3VyY2M7DQo+PiArCXN0cnVjdCBpc2NfZm9ybWF0CSpzZF9mb3JtYXQ7DQo+Pg0K Pj4gLQl1MzIJcGZlX2NmZzBfYnBzOw0KPj4gLQl1MzIJY2ZhX2JheWNmZzsNCj4+IC0JdTMyCXJs cF9jZmdfbW9kZTsNCj4+IC0JdTMyCWRjZmdfaW1vZGU7DQo+PiAtCXUzMglkY3RybF9kdmlldzsN Cj4+ICsJdTMyCQkJZm91cmNjOw0KPj4gKwl1OAkJCWJwcDsNCj4+DQo+PiAtCXUzMgliaXRzX3Bp cGVsaW5lOw0KPj4gKwl1MzIJCQlybHBfY2ZnX21vZGU7DQo+PiArCXUzMgkJCWRjZmdfaW1vZGU7 DQo+PiArCXUzMgkJCWRjdHJsX2R2aWV3Ow0KPj4gKw0KPj4gKwl1MzIJCQliaXRzX3BpcGVsaW5l Ow0KPj4gICB9Ow0KPj4NCj4+ICAgI2RlZmluZSBISVNUX0VOVFJJRVMJCTUxMg0KPj4gQEAgLTE5 Niw4ICsyMDEsOSBAQCBzdHJ1Y3QgaXNjX2RldmljZSB7DQo+PiAgIAlzdHJ1Y3QgdjRsMl9mb3Jt YXQJZm10Ow0KPj4gICAJc3RydWN0IGlzY19mb3JtYXQJKip1c2VyX2Zvcm1hdHM7DQo+PiAgIAl1 bnNpZ25lZCBpbnQJCW51bV91c2VyX2Zvcm1hdHM7DQo+PiAtCWNvbnN0IHN0cnVjdCBpc2NfZm9y bWF0CSpjdXJyZW50X2ZtdDsNCj4+IC0JY29uc3Qgc3RydWN0IGlzY19mb3JtYXQJKnJhd19mbXQ7 DQo+PiArDQo+PiArCXN0cnVjdCBmbXRfY29uZmlnCWNvbmZpZzsNCj4+ICsJc3RydWN0IGZtdF9j b25maWcJdHJ5X2NvbmZpZzsNCj4+DQo+PiAgIAlzdHJ1Y3QgaXNjX2N0cmxzCWN0cmxzOw0KPj4g ICAJc3RydWN0IHdvcmtfc3RydWN0CWF3Yl93b3JrOw0KPj4gQEAgLTIxMCwzMTkgKzIxNiwxMjIg QEAgc3RydWN0IGlzY19kZXZpY2Ugew0KPj4gICAJc3RydWN0IGxpc3RfaGVhZAkJc3ViZGV2X2Vu dGl0aWVzOw0KPj4gICB9Ow0KPj4NCj4+IC1zdGF0aWMgc3RydWN0IGlzY19mb3JtYXQgZm9ybWF0 c19saXN0W10gPSB7DQo+PiAtCXsNCj4+IC0JCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NCR0dS OCwNCj4+IC0JCS5tYnVzX2NvZGUJPSBNRURJQV9CVVNfRk1UX1NCR0dSOF8xWDgsDQo+PiAtCQku ZmxhZ3MJCT0gRk1UX0ZMQUdfUkFXX0ZST01fU0VOU09SLA0KPj4gLQkJLmJwcAkJPSA4LA0KPj4g LQl9LA0KPj4gKy8qIFRoaXMgaXMgYSBsaXN0IG9mIHRoZSBmb3JtYXRzIHRoYXQgdGhlIElTQyBj YW4gKm91dHB1dCogKi8gc3RhdGljDQo+PiArc3RydWN0IGlzY19mb3JtYXQgY29udHJvbGxlcl9m b3JtYXRzW10gPSB7DQo+PiAgIAl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR0JS RzgsDQo+PiAtCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TR0JSRzhfMVg4LA0KPj4gLQkJ LmZsYWdzCQk9IEZNVF9GTEFHX1JBV19GUk9NX1NFTlNPUiwNCj4+IC0JCS5icHAJCT0gOCwNCj4+ IC0JfSwNCj4+IC0Jew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfU0dSQkc4LA0KPj4g LQkJLm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfU0dSQkc4XzFYOCwNCj4+IC0JCS5mbGFncwkJ PSBGTVRfRkxBR19SQVdfRlJPTV9TRU5TT1IsDQo+PiAtCQkuYnBwCQk9IDgsDQo+PiAtCX0sDQo+ PiAtCXsNCj4+IC0JCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NSR0dCOCwNCj4+IC0JCS5tYnVz X2NvZGUJPSBNRURJQV9CVVNfRk1UX1NSR0dCOF8xWDgsDQo+PiAtCQkuZmxhZ3MJCT0gRk1UX0ZM QUdfUkFXX0ZST01fU0VOU09SLA0KPj4gLQkJLmJwcAkJPSA4LA0KPj4gLQl9LA0KPj4gLQl7DQo+ PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjEwLA0KPj4gLQkJLm1idXNfY29kZQk9 IE1FRElBX0JVU19GTVRfU0JHR1IxMF8xWDEwLA0KPj4gLQkJLmZsYWdzCQk9IEZNVF9GTEFHX1JB V19GUk9NX1NFTlNPUiwNCj4+IC0JCS5icHAJCT0gMTYsDQo+PiAtCX0sDQo+PiAtCXsNCj4+IC0J CS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NHQlJHMTAsDQo+PiAtCQkubWJ1c19jb2RlCT0gTUVE SUFfQlVTX0ZNVF9TR0JSRzEwXzFYMTAsDQo+PiAtCQkuZmxhZ3MJCT0gRk1UX0ZMQUdfUkFXX0ZS T01fU0VOU09SLA0KPj4gLQkJLmJwcAkJPSAxNiwNCj4+IC0JfSwNCj4+IC0Jew0KPj4gLQkJLmZv dXJjYwkJPSBWNEwyX1BJWF9GTVRfU0dSQkcxMCwNCj4+IC0JCS5tYnVzX2NvZGUJPSBNRURJQV9C VVNfRk1UX1NHUkJHMTBfMVgxMCwNCj4+IC0JCS5mbGFncwkJPSBGTVRfRkxBR19SQVdfRlJPTV9T RU5TT1IsDQo+PiAtCQkuYnBwCQk9IDE2LA0KPj4gLQl9LA0KPj4gLQl7DQo+PiAtCQkuZm91cmNj CQk9IFY0TDJfUElYX0ZNVF9TUkdHQjEwLA0KPj4gLQkJLm1idXNfY29kZQk9IE1FRElBX0JVU19G TVRfU1JHR0IxMF8xWDEwLA0KPj4gLQkJLmZsYWdzCQk9IEZNVF9GTEFHX1JBV19GUk9NX1NFTlNP UiwNCj4+IC0JCS5icHAJCT0gMTYsDQo+PiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9BUkdC NDQ0LA0KPj4gICAJfSwNCj4+ICAgCXsNCj4+IC0JCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NC R0dSMTIsDQo+PiAtCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TQkdHUjEyXzFYMTIsDQo+ PiAtCQkuZmxhZ3MJCT0gRk1UX0ZMQUdfUkFXX0ZST01fU0VOU09SLA0KPj4gLQkJLmJwcAkJPSAx NiwNCj4+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX0FSR0I1NTUsDQo+PiAgIAl9LA0KPj4g ICAJew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfU0dCUkcxMiwNCj4+IC0JCS5tYnVz X2NvZGUJPSBNRURJQV9CVVNfRk1UX1NHQlJHMTJfMVgxMiwNCj4+IC0JCS5mbGFncwkJPSBGTVRf RkxBR19SQVdfRlJPTV9TRU5TT1IsDQo+PiAtCQkuYnBwCQk9IDE2LA0KPj4gKwkJLmZvdXJjYwkJ PSBWNEwyX1BJWF9GTVRfUkdCNTY1LA0KPj4gICAJfSwNCj4+ICAgCXsNCj4+IC0JCS5mb3VyY2MJ CT0gVjRMMl9QSVhfRk1UX1NHUkJHMTIsDQo+PiAtCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZN VF9TR1JCRzEyXzFYMTIsDQo+PiAtCQkuZmxhZ3MJCT0gRk1UX0ZMQUdfUkFXX0ZST01fU0VOU09S LA0KPj4gLQkJLmJwcAkJPSAxNiwNCj4+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX0FSR0Iz MiwNCj4+ICAgCX0sDQo+PiAgIAl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdH QjEyLA0KPj4gLQkJLm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfU1JHR0IxMl8xWDEyLA0KPj4g LQkJLmZsYWdzCQk9IEZNVF9GTEFHX1JBV19GUk9NX1NFTlNPUiwNCj4+IC0JCS5icHAJCT0gMTYs DQo+PiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVVY0MjAsDQo+PiAgIAl9LA0KPj4gICAJ ew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVWNDIwLA0KPj4gLQkJLm1idXNfY29k ZQk9IDB4MCwNCj4+IC0JCS5mbGFncwkJPSBGTVRfRkxBR19GUk9NX0NPTlRST0xMRVIsDQo+PiAt CQkuYnBwCQk9IDEyLA0KPj4gKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCj4+ICAg CX0sDQo+PiAgIAl7DQo+PiAgIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVWNDIyUCwNCj4+ IC0JCS5tYnVzX2NvZGUJPSAweDAsDQo+PiAtCQkuZmxhZ3MJCT0gRk1UX0ZMQUdfRlJPTV9DT05U Uk9MTEVSLA0KPj4gLQkJLmJwcAkJPSAxNiwNCj4+ICAgCX0sDQo+PiAgIAl7DQo+PiAgIAkJLmZv dXJjYwkJPSBWNEwyX1BJWF9GTVRfR1JFWSwNCj4+IC0JCS5tYnVzX2NvZGUJPSBNRURJQV9CVVNf Rk1UX1k4XzFYOCwNCj4+IC0JCS5mbGFncwkJPSBGTVRfRkxBR19GUk9NX0NPTlRST0xMRVIgfA0K Pj4gLQkJCQkgIEZNVF9GTEFHX0ZST01fU0VOU09SLA0KPj4gLQkJLmJwcAkJPSA4LA0KPj4gLQl9 LA0KPj4gLQl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9BUkdCNDQ0LA0KPj4gLQkJ Lm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfUkdCNDQ0XzJYOF9QQURISV9MRSwNCj4+IC0JCS5m bGFncwkJPSBGTVRfRkxBR19GUk9NX0NPTlRST0xMRVIsDQo+PiAtCQkuYnBwCQk9IDE2LA0KPj4g LQl9LA0KPj4gLQl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9BUkdCNTU1LA0KPj4g LQkJLm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfUkdCNTU1XzJYOF9QQURISV9MRSwNCj4+IC0J CS5mbGFncwkJPSBGTVRfRkxBR19GUk9NX0NPTlRST0xMRVIsDQo+PiAtCQkuYnBwCQk9IDE2LA0K Pj4gLQl9LA0KPj4gLQl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9SR0I1NjUsDQo+ PiAtCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9SR0I1NjVfMlg4X0xFLA0KPj4gLQkJLmZs YWdzCQk9IEZNVF9GTEFHX0ZST01fQ09OVFJPTExFUiwNCj4+IC0JCS5icHAJCT0gMTYsDQo+PiAt CX0sDQo+PiAtCXsNCj4+IC0JCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX0FSR0IzMiwNCj4+IC0J CS5tYnVzX2NvZGUJPSBNRURJQV9CVVNfRk1UX0FSR0I4ODg4XzFYMzIsDQo+PiAtCQkuZmxhZ3MJ CT0gRk1UX0ZMQUdfRlJPTV9DT05UUk9MTEVSLA0KPj4gLQkJLmJwcAkJPSAzMiwNCj4+IC0JfSwN Cj4+IC0Jew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCj4+IC0JCS5tYnVz X2NvZGUJPSBNRURJQV9CVVNfRk1UX1lVWVY4XzJYOCwNCj4+IC0JCS5mbGFncwkJPSBGTVRfRkxB R19GUk9NX0NPTlRST0xMRVIgfA0KPj4gLQkJCQkgIEZNVF9GTEFHX0ZST01fU0VOU09SLA0KPj4g LQkJLmJwcAkJPSAxNiwNCj4+ICAgCX0sDQo+PiAgIH07DQo+Pg0KPj4gLXN0YXRpYyBzdHJ1Y3Qg Zm10X2NvbmZpZyBmbXRfY29uZmlnc19saXN0W10gPSB7DQo+PiArLyogVGhpcyBpcyBhIGxpc3Qg b2YgZm9ybWF0cyB0aGF0IHRoZSBJU0MgY2FuIHJlY2VpdmUgYXMgKmlucHV0KiAqLw0KPj4gK3N0 YXRpYyBzdHJ1Y3QgaXNjX2Zvcm1hdCBmb3JtYXRzX2xpc3RbXSA9IHsNCj4+ICAgCXsNCj4+ICAg CQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjgsDQo+PiArCQkubWJ1c19jb2RlCT0gTUVE SUFfQlVTX0ZNVF9TQkdHUjhfMVg4LA0KPj4gICAJCS5wZmVfY2ZnMF9icHMJPSBJU0NfUEZFX0NG RzBfQlBTX0VJR0hULA0KPj4gICAJCS5jZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfQkdCRywNCj4+ IC0JCS5ybHBfY2ZnX21vZGUJPSBJU0NfUkxQX0NGR19NT0RFX0RBVDgsDQo+PiAtCQkuZGNmZ19p bW9kZQk9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDgsDQo+PiAtCQkuZGN0cmxfZHZpZXcJPSBJU0Nf RENUUkxfRFZJRVdfUEFDS0VELA0KPj4gLQkJLmJpdHNfcGlwZWxpbmUJPSAweDAsDQo+PiAgIAl9 LA0KPj4gICAJew0KPj4gICAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NHQlJHOCwNCj4+ICsJ CS5tYnVzX2NvZGUJPSBNRURJQV9CVVNfRk1UX1NHQlJHOF8xWDgsDQo+PiAgIAkJLnBmZV9jZmcw X2Jwcwk9IElTQ19QRkVfQ0ZHMF9CUFNfRUlHSFQsDQo+PiAgIAkJLmNmYV9iYXljZmcJPSBJU0Nf QkFZX0NGR19HQkdCLA0KPj4gLQkJLnJscF9jZmdfbW9kZQk9IElTQ19STFBfQ0ZHX01PREVfREFU OCwNCj4+IC0JCS5kY2ZnX2ltb2RlCT0gSVNDX0RDRkdfSU1PREVfUEFDS0VEOCwNCj4+IC0JCS5k Y3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+PiAtCQkuYml0c19waXBlbGlu ZQk9IDB4MCwNCj4+ICAgCX0sDQo+PiAgIAl7DQo+PiAgIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9G TVRfU0dSQkc4LA0KPj4gKwkJLm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfU0dSQkc4XzFYOCwN Cj4+ICAgCQkucGZlX2NmZzBfYnBzCT0gSVNDX1BGRV9DRkcwX0JQU19FSUdIVCwNCj4+ICAgCQku Y2ZhX2JheWNmZwk9IElTQ19CQVlfQ0ZHX0dSR1IsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVND X1JMUF9DRkdfTU9ERV9EQVQ4LA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9Q QUNLRUQ4LA0KPj4gLQkJLmRjdHJsX2R2aWV3CT0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRCwNCj4+ IC0JCS5iaXRzX3BpcGVsaW5lCT0gMHgwLA0KPj4gICAJfSwNCj4+ICAgCXsNCj4+ICAgCQkuZm91 cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdHQjgsDQo+PiArCQkubWJ1c19jb2RlCT0gTUVESUFfQlVT X0ZNVF9TUkdHQjhfMVg4LA0KPj4gICAJCS5wZmVfY2ZnMF9icHMJPSBJU0NfUEZFX0NGRzBfQlBT X0VJR0hULA0KPj4gICAJCS5jZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfUkdSRywNCj4+IC0JCS5y bHBfY2ZnX21vZGUJPSBJU0NfUkxQX0NGR19NT0RFX0RBVDgsDQo+PiAtCQkuZGNmZ19pbW9kZQk9 IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDgsDQo+PiAtCQkuZGN0cmxfZHZpZXcJPSBJU0NfRENUUkxf RFZJRVdfUEFDS0VELA0KPj4gLQkJLmJpdHNfcGlwZWxpbmUJPSAweDAsDQo+PiAgIAl9LA0KPj4g ICAJew0KPj4gICAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NCR0dSMTAsDQo+PiArCQkubWJ1 c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TQkdHUjEwXzFYMTAsDQo+PiAgIAkJLnBmZV9jZmcwX2Jw cwk9IElTQ19QRkdfQ0ZHMF9CUFNfVEVOLA0KPj4gLQkJLmNmYV9iYXljZmcJPSBJU0NfQkFZX0NG R19CR0JHLA0KPj4gLQkJLnJscF9jZmdfbW9kZQk9IElTQ19STFBfQ0ZHX01PREVfREFUMTAsDQo+ PiAtCQkuZGNmZ19pbW9kZQk9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDE2LA0KPj4gLQkJLmRjdHJs X2R2aWV3CT0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRCwNCj4+IC0JCS5iaXRzX3BpcGVsaW5lCT0g MHgwLA0KPj4gKwkJLmNmYV9iYXljZmcJPSBJU0NfQkFZX0NGR19SR1JHLA0KPj4gICAJfSwNCj4+ ICAgCXsNCj4+ICAgCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR0JSRzEwLA0KPj4gKwkJLm1i dXNfY29kZQk9IE1FRElBX0JVU19GTVRfU0dCUkcxMF8xWDEwLA0KPj4gICAJCS5wZmVfY2ZnMF9i cHMJPSBJU0NfUEZHX0NGRzBfQlBTX1RFTiwNCj4+ICAgCQkuY2ZhX2JheWNmZwk9IElTQ19CQVlf Q0ZHX0dCR0IsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9EQVQxMCwN Cj4+IC0JCS5kY2ZnX2ltb2RlCT0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTYsDQo+PiAtCQkuZGN0 cmxfZHZpZXcJPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VELA0KPj4gLQkJLmJpdHNfcGlwZWxpbmUJ PSAweDAsDQo+PiAgIAl9LA0KPj4gICAJew0KPj4gICAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1U X1NHUkJHMTAsDQo+PiArCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TR1JCRzEwXzFYMTAs DQo+PiAgIAkJLnBmZV9jZmcwX2Jwcwk9IElTQ19QRkdfQ0ZHMF9CUFNfVEVOLA0KPj4gICAJCS5j ZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfR1JHUiwNCj4+IC0JCS5ybHBfY2ZnX21vZGUJPSBJU0Nf UkxQX0NGR19NT0RFX0RBVDEwLA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9Q QUNLRUQxNiwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+ PiAtCQkuYml0c19waXBlbGluZQk9IDB4MCwNCj4+ICAgCX0sDQo+PiAgIAl7DQo+PiAgIAkJLmZv dXJjYwkJPSBWNEwyX1BJWF9GTVRfU1JHR0IxMCwNCj4+ICsJCS5tYnVzX2NvZGUJPSBNRURJQV9C VVNfRk1UX1NSR0dCMTBfMVgxMCwNCj4+ICAgCQkucGZlX2NmZzBfYnBzCT0gSVNDX1BGR19DRkcw X0JQU19URU4sDQo+PiAgIAkJLmNmYV9iYXljZmcJPSBJU0NfQkFZX0NGR19SR1JHLA0KPj4gLQkJ LnJscF9jZmdfbW9kZQk9IElTQ19STFBfQ0ZHX01PREVfREFUMTAsDQo+PiAtCQkuZGNmZ19pbW9k ZQk9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDE2LA0KPj4gLQkJLmRjdHJsX2R2aWV3CT0gSVNDX0RD VFJMX0RWSUVXX1BBQ0tFRCwNCj4+IC0JCS5iaXRzX3BpcGVsaW5lCT0gMHgwLA0KPj4gICAJfSwN Cj4+ICAgCXsNCj4+ICAgCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjEyLA0KPj4gKwkJ Lm1idXNfY29kZQk9IE1FRElBX0JVU19GTVRfU0JHR1IxMl8xWDEyLA0KPj4gICAJCS5wZmVfY2Zn MF9icHMJPSBJU0NfUEZHX0NGRzBfQlBTX1RXRUxWRSwNCj4+ICAgCQkuY2ZhX2JheWNmZwk9IElT Q19CQVlfQ0ZHX0JHQkcsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9E QVQxMiwNCj4+IC0JCS5kY2ZnX2ltb2RlCT0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTYsDQo+PiAt CQkuZGN0cmxfZHZpZXcJPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VELA0KPj4gLQkJLmJpdHNfcGlw ZWxpbmUJPSAweDAsDQo+PiAgIAl9LA0KPj4gICAJew0KPj4gICAJCS5mb3VyY2MJCT0gVjRMMl9Q SVhfRk1UX1NHQlJHMTIsDQo+PiArCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TR0JSRzEy XzFYMTIsDQo+PiAgIAkJLnBmZV9jZmcwX2Jwcwk9IElTQ19QRkdfQ0ZHMF9CUFNfVFdFTFZFLA0K Pj4gICAJCS5jZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfR0JHQiwNCj4+IC0JCS5ybHBfY2ZnX21v ZGUJPSBJU0NfUkxQX0NGR19NT0RFX0RBVDEyLA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENG R19JTU9ERV9QQUNLRUQxNiwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19Q QUNLRUQsDQo+PiAtCQkuYml0c19waXBlbGluZQk9IDB4MA0KPj4gICAJfSwNCj4+ICAgCXsNCj4+ ICAgCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR1JCRzEyLA0KPj4gKwkJLm1idXNfY29kZQk9 IE1FRElBX0JVU19GTVRfU0dSQkcxMl8xWDEyLA0KPj4gICAJCS5wZmVfY2ZnMF9icHMJPSBJU0Nf UEZHX0NGRzBfQlBTX1RXRUxWRSwNCj4+ICAgCQkuY2ZhX2JheWNmZwk9IElTQ19CQVlfQ0ZHX0dS R1IsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9EQVQxMiwNCj4+IC0J CS5kY2ZnX2ltb2RlCT0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTYsDQo+PiAtCQkuZGN0cmxfZHZp ZXcJPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VELA0KPj4gLQkJLmJpdHNfcGlwZWxpbmUJPSAweDAs DQo+PiAgIAl9LA0KPj4gICAJew0KPj4gICAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1NSR0dC MTIsDQo+PiArCQkubWJ1c19jb2RlCT0gTUVESUFfQlVTX0ZNVF9TUkdHQjEyXzFYMTIsDQo+PiAg IAkJLnBmZV9jZmcwX2Jwcwk9IElTQ19QRkdfQ0ZHMF9CUFNfVFdFTFZFLA0KPj4gICAJCS5jZmFf YmF5Y2ZnCT0gSVNDX0JBWV9DRkdfUkdSRywNCj4+IC0JCS5ybHBfY2ZnX21vZGUJPSBJU0NfUkxQ X0NGR19NT0RFX0RBVDEyLA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9QQUNL RUQxNiwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+PiAt CQkuYml0c19waXBlbGluZQk9IDB4MCwNCj4+IC0JfSwNCj4+IC0Jew0KPj4gLQkJLmZvdXJjYyA9 IFY0TDJfUElYX0ZNVF9ZVVY0MjAsDQo+PiAtCQkucGZlX2NmZzBfYnBzCT0gSVNDX1BGRV9DRkcw X0JQU19FSUdIVCwNCj4+IC0JCS5jZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfQkdCRywNCj4+IC0J CS5ybHBfY2ZnX21vZGUJPSBJU0NfUkxQX0NGR19NT0RFX1lZQ0MsDQo+PiAtCQkuZGNmZ19pbW9k ZQk9IElTQ19EQ0ZHX0lNT0RFX1lDNDIwUCwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RS TF9EVklFV19QTEFOQVIsDQo+PiAtCQkuYml0c19waXBlbGluZQk9IFNVQjQyMF9FTkFCTEUgfCBT VUI0MjJfRU5BQkxFIHwNCj4+IC0JCQkJICBDQkNfRU5BQkxFIHwgQ1NDX0VOQUJMRSB8DQo+PiAt CQkJCSAgR0FNX0VOQUJMRVMgfA0KPj4gLQkJCQkgIENGQV9FTkFCTEUgfCBXQl9FTkFCTEUsDQo+ PiAtCX0sDQo+PiAtCXsNCj4+IC0JCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lVVjQyMlAsDQo+ PiAtCQkucGZlX2NmZzBfYnBzCT0gSVNDX1BGRV9DRkcwX0JQU19FSUdIVCwNCj4+IC0JCS5jZmFf YmF5Y2ZnCT0gSVNDX0JBWV9DRkdfQkdCRywNCj4+IC0JCS5ybHBfY2ZnX21vZGUJPSBJU0NfUkxQ X0NGR19NT0RFX1lZQ0MsDQo+PiAtCQkuZGNmZ19pbW9kZQk9IElTQ19EQ0ZHX0lNT0RFX1lDNDIy UCwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QTEFOQVIsDQo+PiAtCQku Yml0c19waXBlbGluZQk9IFNVQjQyMl9FTkFCTEUgfA0KPj4gLQkJCQkgIENCQ19FTkFCTEUgfCBD U0NfRU5BQkxFIHwNCj4+IC0JCQkJICBHQU1fRU5BQkxFUyB8DQo+PiAtCQkJCSAgQ0ZBX0VOQUJM RSB8IFdCX0VOQUJMRSwNCj4+ICAgCX0sDQo+PiAgIAl7DQo+PiAgIAkJLmZvdXJjYwkJPSBWNEwy X1BJWF9GTVRfR1JFWSwNCj4+ICsJCS5tYnVzX2NvZGUJPSBNRURJQV9CVVNfRk1UX1k4XzFYOCwN Cj4+ICAgCQkucGZlX2NmZzBfYnBzCT0gSVNDX1BGRV9DRkcwX0JQU19FSUdIVCwNCj4+IC0JCS5j ZmFfYmF5Y2ZnCT0gSVNDX0JBWV9DRkdfQkdCRywNCj4+IC0JCS5ybHBfY2ZnX21vZGUJPSBJU0Nf UkxQX0NGR19NT0RFX0RBVFk4LA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9Q QUNLRUQ4LA0KPj4gLQkJLmRjdHJsX2R2aWV3CT0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRCwNCj4+ IC0JCS5iaXRzX3BpcGVsaW5lCT0gQ0JDX0VOQUJMRSB8IENTQ19FTkFCTEUgfA0KPj4gLQkJCQkg IEdBTV9FTkFCTEVTIHwNCj4+IC0JCQkJICBDRkFfRU5BQkxFIHwgV0JfRU5BQkxFLA0KPj4gLQl9 LA0KPj4gLQl7DQo+PiAtCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9BUkdCNDQ0LA0KPj4gLQkJ LnBmZV9jZmcwX2Jwcwk9IElTQ19QRkVfQ0ZHMF9CUFNfRUlHSFQsDQo+PiAtCQkuY2ZhX2JheWNm Zwk9IElTQ19CQVlfQ0ZHX0JHQkcsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdf TU9ERV9BUkdCNDQ0LA0KPj4gLQkJLmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9QQUNLRUQx NiwNCj4+IC0JCS5kY3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+PiAtCQku Yml0c19waXBlbGluZQk9IEdBTV9FTkFCTEVTIHwgQ0ZBX0VOQUJMRSB8DQo+PiBXQl9FTkFCTEUs DQo+PiAgIAl9LA0KPj4gICAJew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfQVJHQjU1 NSwNCj4+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lVWVYsDQo+PiArCQkubWJ1c19jb2Rl CT0gTUVESUFfQlVTX0ZNVF9ZVVlWOF8yWDgsDQo+PiAgIAkJLnBmZV9jZmcwX2Jwcwk9IElTQ19Q RkVfQ0ZHMF9CUFNfRUlHSFQsDQo+PiAtCQkuY2ZhX2JheWNmZwk9IElTQ19CQVlfQ0ZHX0JHQkcs DQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9BUkdCNTU1LA0KPj4gLQkJ LmRjZmdfaW1vZGUJPSBJU0NfRENGR19JTU9ERV9QQUNLRUQxNiwNCj4+IC0JCS5kY3RybF9kdmll dwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+PiAtCQkuYml0c19waXBlbGluZQk9IEdBTV9F TkFCTEVTIHwgQ0ZBX0VOQUJMRSB8DQo+PiBXQl9FTkFCTEUsDQo+PiAgIAl9LA0KPj4gICAJew0K Pj4gICAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1JHQjU2NSwNCj4+ICsJCS5tYnVzX2NvZGUJ PSBNRURJQV9CVVNfRk1UX1JHQjU2NV8yWDhfTEUsDQo+PiAgIAkJLnBmZV9jZmcwX2Jwcwk9IElT Q19QRkVfQ0ZHMF9CUFNfRUlHSFQsDQo+PiAtCQkuY2ZhX2JheWNmZwk9IElTQ19CQVlfQ0ZHX0JH QkcsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9SR0I1NjUsDQo+PiAt CQkuZGNmZ19pbW9kZQk9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDE2LA0KPj4gLQkJLmRjdHJsX2R2 aWV3CT0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRCwNCj4+IC0JCS5iaXRzX3BpcGVsaW5lCT0gR0FN X0VOQUJMRVMgfCBDRkFfRU5BQkxFIHwNCj4+IFdCX0VOQUJMRSwNCj4+IC0JfSwNCj4+IC0Jew0K Pj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfQVJHQjMyLA0KPj4gLQkJLnBmZV9jZmcwX2Jw cwk9IElTQ19QRkVfQ0ZHMF9CUFNfRUlHSFQsDQo+PiAtCQkuY2ZhX2JheWNmZwk9IElTQ19CQVlf Q0ZHX0JHQkcsDQo+PiAtCQkucmxwX2NmZ19tb2RlCT0gSVNDX1JMUF9DRkdfTU9ERV9BUkdCMzIs DQo+PiAtCQkuZGNmZ19pbW9kZQk9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDMyLA0KPj4gLQkJLmRj dHJsX2R2aWV3CT0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRCwNCj4+IC0JCS5iaXRzX3BpcGVsaW5l CT0gR0FNX0VOQUJMRVMgfCBDRkFfRU5BQkxFIHwNCj4+IFdCX0VOQUJMRSwNCj4+IC0JfSwNCj4+ IC0Jew0KPj4gLQkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfWVVZViwNCj4+IC0JCS5wZmVfY2Zn MF9icHMJPSBJU0NfUEZFX0NGRzBfQlBTX0VJR0hULA0KPj4gLQkJLmNmYV9iYXljZmcJPSBJU0Nf QkFZX0NGR19CR0JHLA0KPj4gLQkJLnJscF9jZmdfbW9kZQk9IElTQ19STFBfQ0ZHX01PREVfREFU OCwNCj4+IC0JCS5kY2ZnX2ltb2RlCT0gSVNDX0RDRkdfSU1PREVfUEFDS0VEOCwNCj4+IC0JCS5k Y3RybF9kdmlldwk9IElTQ19EQ1RSTF9EVklFV19QQUNLRUQsDQo+PiAtCQkuYml0c19waXBlbGlu ZQk9IDB4MA0KPj4gICAJfSwNCj4+ICAgfTsNCj4+DQo+PiBAQCAtNTcxLDYgKzM4MCwxMyBAQCBz dGF0aWMgY29uc3QgdTMyIGlzY19nYW1tYV90YWJsZVtHQU1NQV9NQVggKw0KPj4gMV1bR0FNTUFf RU5UUklFU10gPSB7DQo+PiAgIAkgIDB4M0UyMDAwNywgMHgzRTkwMDA3LCAweDNGMDAwMDgsIDB4 M0Y4MDAwNyB9LCAgfTsNCj4+DQo+PiArI2RlZmluZSBJU0NfSVNfRk9STUFUX1JBVyhtYnVzX2Nv ZGUpIFwNCj4+ICsJKCgobWJ1c19jb2RlKSAmIDB4ZjAwMCkgPT0gMHgzMDAwKQ0KPj4gKw0KPj4g K3N0YXRpYyB1bnNpZ25lZCBpbnQgZGVidWc7DQo+PiArbW9kdWxlX3BhcmFtKGRlYnVnLCBpbnQs IDA2NDQpOw0KPj4gK01PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJkZWJ1ZyBsZXZlbCAoMC0yKSIp Ow0KPj4gKw0KPj4gICBzdGF0aWMgdW5zaWduZWQgaW50IHNlbnNvcl9wcmVmZXJyZWQgPSAxOyAg bW9kdWxlX3BhcmFtKHNlbnNvcl9wcmVmZXJyZWQsDQo+PiB1aW50LCAwNjQ0KTsgIE1PRFVMRV9Q QVJNX0RFU0Moc2Vuc29yX3ByZWZlcnJlZCwNCj4+IEBAIC04OTYsNDAgKzcxMiwxNyBAQCBzdGF0 aWMgaW50IGlzY19idWZmZXJfcHJlcGFyZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpDQo+PiAgIAly ZXR1cm4gMDsNCj4+ICAgfQ0KPj4NCj4+IC1zdGF0aWMgaW5saW5lIGJvb2wgc2Vuc29yX2lzX3By ZWZlcnJlZChjb25zdCBzdHJ1Y3QgaXNjX2Zvcm1hdCAqaXNjX2ZtdCkgLXsNCj4+IC0JcmV0dXJu IChzZW5zb3JfcHJlZmVycmVkICYmIGlzY19mbXQtPnNkX3N1cHBvcnQpIHx8DQo+PiAtCQkhaXNj X2ZtdC0+aXNjX3N1cHBvcnQ7DQo+PiAtfQ0KPj4gLQ0KPj4gLXN0YXRpYyBzdHJ1Y3QgZm10X2Nv bmZpZyAqZ2V0X2ZtdF9jb25maWcodTMyIGZvdXJjYykgLXsNCj4+IC0Jc3RydWN0IGZtdF9jb25m aWcgKmNvbmZpZzsNCj4+IC0JaW50IGk7DQo+PiAtDQo+PiAtCWNvbmZpZyA9ICZmbXRfY29uZmln c19saXN0WzBdOw0KPj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmbXRfY29uZmlnc19s aXN0KTsgaSsrKSB7DQo+PiAtCQlpZiAoY29uZmlnLT5mb3VyY2MgPT0gZm91cmNjKQ0KPj4gLQkJ CXJldHVybiBjb25maWc7DQo+PiAtDQo+PiAtCQljb25maWcrKzsNCj4+IC0JfQ0KPj4gLQlyZXR1 cm4gTlVMTDsNCj4+IC19DQo+PiAtDQo+PiAgIHN0YXRpYyB2b2lkIGlzY19zdGFydF9kbWEoc3Ry dWN0IGlzY19kZXZpY2UgKmlzYykgIHsNCj4+ICAgCXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IGlz Yy0+cmVnbWFwOw0KPj4gLQlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXhmbXQgPSAmaXNjLT5m bXQuZm10LnBpeDsNCj4+IC0JdTMyIHNpemVpbWFnZSA9IHBpeGZtdC0+c2l6ZWltYWdlOw0KPj4g LQlzdHJ1Y3QgZm10X2NvbmZpZyAqY29uZmlnID0gZ2V0X2ZtdF9jb25maWcoaXNjLT5jdXJyZW50 X2ZtdC0+Zm91cmNjKTsNCj4+ICsJdTMyIHNpemVpbWFnZSA9IGlzYy0+Zm10LmZtdC5waXguc2l6 ZWltYWdlOw0KPj4gICAJdTMyIGRjdHJsX2R2aWV3Ow0KPj4gICAJZG1hX2FkZHJfdCBhZGRyMDsN Cj4+DQo+PiAgIAlhZGRyMCA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKCZpc2MtPmN1 cl9mcm0tDQo+Pj4gdmIudmIyX2J1ZiwgMCk7DQo+PiAgIAlyZWdtYXBfd3JpdGUocmVnbWFwLCBJ U0NfREFEMCwgYWRkcjApOw0KPj4NCj4+IC0Jc3dpdGNoIChwaXhmbXQtPnBpeGVsZm9ybWF0KSB7 DQo+PiArCXN3aXRjaCAoaXNjLT5jb25maWcuZm91cmNjKSB7DQo+PiAgIAljYXNlIFY0TDJfUElY X0ZNVF9ZVVY0MjA6DQo+PiAgIAkJcmVnbWFwX3dyaXRlKHJlZ21hcCwgSVNDX0RBRDEsIGFkZHIw ICsgKHNpemVpbWFnZSAqIDIpIC8NCj4+IDMpOw0KPj4gICAJCXJlZ21hcF93cml0ZShyZWdtYXAs IElTQ19EQUQyLCBhZGRyMCArIChzaXplaW1hZ2UgKiA1KSAvDQo+PiA2KTsgQEAgLTk0MiwxMCAr NzM1LDcgQEAgc3RhdGljIHZvaWQgaXNjX3N0YXJ0X2RtYShzdHJ1Y3QgaXNjX2RldmljZSAqaXNj KQ0KPj4gICAJCWJyZWFrOw0KPj4gICAJfQ0KPj4NCj4+IC0JaWYgKHNlbnNvcl9pc19wcmVmZXJy ZWQoaXNjLT5jdXJyZW50X2ZtdCkpDQo+PiAtCQlkY3RybF9kdmlldyA9IElTQ19EQ1RSTF9EVklF V19QQUNLRUQ7DQo+PiAtCWVsc2UNCj4+IC0JCWRjdHJsX2R2aWV3ID0gY29uZmlnLT5kY3RybF9k dmlldzsNCj4+ICsJZGN0cmxfZHZpZXcgPSBpc2MtPmNvbmZpZy5kY3RybF9kdmlldzsNCj4+DQo+ PiAgIAlyZWdtYXBfd3JpdGUocmVnbWFwLCBJU0NfRENUUkwsIGRjdHJsX2R2aWV3IHwgSVNDX0RD VFJMX0lFX0lTKTsNCj4+ICAgCXJlZ21hcF93cml0ZShyZWdtYXAsIElTQ19DVFJMRU4sIElTQ19D VFJMX0NBUFRVUkUpOyBAQCAtOTU1LDcNCj4+ICs3NDUsNiBAQCBzdGF0aWMgdm9pZCBpc2Nfc2V0 X3BpcGVsaW5lKHN0cnVjdCBpc2NfZGV2aWNlICppc2MsIHUzMiBwaXBlbGluZSkgIHsNCj4+ICAg CXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IGlzYy0+cmVnbWFwOw0KPj4gICAJc3RydWN0IGlzY19j dHJscyAqY3RybHMgPSAmaXNjLT5jdHJsczsNCj4+IC0Jc3RydWN0IGZtdF9jb25maWcgKmNvbmZp ZyA9IGdldF9mbXRfY29uZmlnKGlzYy0+cmF3X2ZtdC0+Zm91cmNjKTsNCj4+ICAgCXUzMiB2YWws IGJheV9jZmc7DQo+PiAgIAljb25zdCB1MzIgKmdhbW1hOw0KPj4gICAJdW5zaWduZWQgaW50IGk7 DQo+PiBAQCAtOTY5LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIGlzY19zZXRfcGlwZWxpbmUoc3Ry dWN0IGlzY19kZXZpY2UgKmlzYywgdTMyDQo+PiBwaXBlbGluZSkNCj4+ICAgCWlmICghcGlwZWxp bmUpDQo+PiAgIAkJcmV0dXJuOw0KPj4NCj4+IC0JYmF5X2NmZyA9IGNvbmZpZy0+Y2ZhX2JheWNm ZzsNCj4+ICsJYmF5X2NmZyA9IGlzYy0+Y29uZmlnLnNkX2Zvcm1hdC0+Y2ZhX2JheWNmZzsNCj4+ DQo+PiAgIAlyZWdtYXBfd3JpdGUocmVnbWFwLCBJU0NfV0JfQ0ZHLCBiYXlfY2ZnKTsNCj4+ICAg CXJlZ21hcF93cml0ZShyZWdtYXAsIElTQ19XQl9PX1JHUiwgMHgwKTsgQEAgLTEwMTEsMjQgKzgw MCwyNA0KPj4gQEAgc3RhdGljIGludCBpc2NfdXBkYXRlX3Byb2ZpbGUoc3RydWN0IGlzY19kZXZp Y2UgKmlzYykNCj4+ICAgCX0NCj4+DQo+PiAgIAlpZiAoY291bnRlciA8IDApIHsNCj4+IC0JCXY0 bDJfd2FybigmaXNjLT52NGwyX2RldiwgIlRpbWUgb3V0IHRvIHVwZGF0ZSBwcm9maWVcbiIpOw0K Pj4gKwkJdjRsMl93YXJuKCZpc2MtPnY0bDJfZGV2LCAiVGltZSBvdXQgdG8gdXBkYXRlIHByb2Zp bGVcbiIpOw0KPj4gICAJCXJldHVybiAtRVRJTUVET1VUOw0KPj4gICAJfQ0KPj4NCj4+ICAgCXJl dHVybiAwOw0KPj4gICB9DQo+Pg0KPj4gLXN0YXRpYyB2b2lkIGlzY19zZXRfaGlzdG9ncmFtKHN0 cnVjdCBpc2NfZGV2aWNlICppc2MpDQo+PiArc3RhdGljIHZvaWQgaXNjX3NldF9oaXN0b2dyYW0o c3RydWN0IGlzY19kZXZpY2UgKmlzYywgYm9vbCBlbmFibGUpDQo+PiAgIHsNCj4+ICAgCXN0cnVj dCByZWdtYXAgKnJlZ21hcCA9IGlzYy0+cmVnbWFwOw0KPj4gICAJc3RydWN0IGlzY19jdHJscyAq Y3RybHMgPSAmaXNjLT5jdHJsczsNCj4+IC0Jc3RydWN0IGZtdF9jb25maWcgKmNvbmZpZyA9IGdl dF9mbXRfY29uZmlnKGlzYy0+cmF3X2ZtdC0+Zm91cmNjKTsNCj4+DQo+PiAtCWlmIChjdHJscy0+ YXdiICYmIChjdHJscy0+aGlzdF9zdGF0ICE9IEhJU1RfRU5BQkxFRCkpIHsNCj4+ICsJaWYgKGVu YWJsZSkgew0KPj4gICAJCXJlZ21hcF93cml0ZShyZWdtYXAsIElTQ19ISVNfQ0ZHLA0KPj4gICAJ CQkgICAgIElTQ19ISVNfQ0ZHX01PREVfUiB8DQo+PiAtCQkJICAgICAoY29uZmlnLT5jZmFfYmF5 Y2ZnIDw8DQo+PiBJU0NfSElTX0NGR19CQVlTRUxfU0hJRlQpIHwNCj4+IC0JCQkgICAgIElTQ19I SVNfQ0ZHX1JBUik7DQo+PiArCQkJICAgICAoaXNjLT5jb25maWcuc2RfZm9ybWF0LT5jZmFfYmF5 Y2ZnDQo+PiArCQkJCQk8PCBJU0NfSElTX0NGR19CQVlTRUxfU0hJRlQpIHwNCj4+ICsJCQkJCUlT Q19ISVNfQ0ZHX1JBUik7DQo+PiAgIAkJcmVnbWFwX3dyaXRlKHJlZ21hcCwgSVNDX0hJU19DVFJM LCBJU0NfSElTX0NUUkxfRU4pOw0KPj4gICAJCXJlZ21hcF93cml0ZShyZWdtYXAsIElTQ19JTlRF TiwgSVNDX0lOVF9ISVNET05FKTsNCj4+ICAgCQljdHJscy0+aGlzdF9pZCA9IElTQ19ISVNfQ0ZH X01PREVfUjsNCj4+IEBAIC0xMDM2LDcgKzgyNSw3IEBAIHN0YXRpYyB2b2lkIGlzY19zZXRfaGlz dG9ncmFtKHN0cnVjdCBpc2NfZGV2aWNlICppc2MpDQo+PiAgIAkJcmVnbWFwX3dyaXRlKHJlZ21h cCwgSVNDX0NUUkxFTiwgSVNDX0NUUkxfSElTUkVRKTsNCj4+DQo+PiAgIAkJY3RybHMtPmhpc3Rf c3RhdCA9IEhJU1RfRU5BQkxFRDsNCj4+IC0JfSBlbHNlIGlmICghY3RybHMtPmF3YiAmJiAoY3Ry bHMtPmhpc3Rfc3RhdCAhPSBISVNUX0RJU0FCTEVEKSkgew0KPj4gKwl9IGVsc2Ugew0KPj4gICAJ CXJlZ21hcF93cml0ZShyZWdtYXAsIElTQ19JTlRESVMsIElTQ19JTlRfSElTRE9ORSk7DQo+PiAg IAkJcmVnbWFwX3dyaXRlKHJlZ21hcCwgSVNDX0hJU19DVFJMLCBJU0NfSElTX0NUUkxfRElTKTsN Cj4+DQo+PiBAQCAtMTA0NCw1MyArODMzLDE4IEBAIHN0YXRpYyB2b2lkIGlzY19zZXRfaGlzdG9n cmFtKHN0cnVjdCBpc2NfZGV2aWNlICppc2MpDQo+PiAgIAl9DQo+PiAgIH0NCj4+DQo+PiAtc3Rh dGljIGlubGluZSB2b2lkIGlzY19nZXRfcGFyYW0oY29uc3Qgc3RydWN0IGlzY19mb3JtYXQgKmZt dCwNCj4+IC0JCQkJIHUzMiAqcmxwX21vZGUsIHUzMiAqZGNmZykNCj4+IC17DQo+PiAtCXN0cnVj dCBmbXRfY29uZmlnICpjb25maWcgPSBnZXRfZm10X2NvbmZpZyhmbXQtPmZvdXJjYyk7DQo+PiAt DQo+PiAtCSpkY2ZnID0gSVNDX0RDRkdfWU1CU0laRV9CRUFUUzg7DQo+PiAtDQo+PiAtCXN3aXRj aCAoZm10LT5mb3VyY2MpIHsNCj4+IC0JY2FzZSBWNEwyX1BJWF9GTVRfU0JHR1IxMDoNCj4+IC0J Y2FzZSBWNEwyX1BJWF9GTVRfU0dCUkcxMDoNCj4+IC0JY2FzZSBWNEwyX1BJWF9GTVRfU0dSQkcx MDoNCj4+IC0JY2FzZSBWNEwyX1BJWF9GTVRfU1JHR0IxMDoNCj4+IC0JY2FzZSBWNEwyX1BJWF9G TVRfU0JHR1IxMjoNCj4+IC0JY2FzZSBWNEwyX1BJWF9GTVRfU0dCUkcxMjoNCj4+IC0JY2FzZSBW NEwyX1BJWF9GTVRfU0dSQkcxMjoNCj4+IC0JY2FzZSBWNEwyX1BJWF9GTVRfU1JHR0IxMjoNCj4+ IC0JCSpybHBfbW9kZSA9IGNvbmZpZy0+cmxwX2NmZ19tb2RlOw0KPj4gLQkJKmRjZmcgfD0gY29u ZmlnLT5kY2ZnX2ltb2RlOw0KPj4gLQkJYnJlYWs7DQo+PiAtCWRlZmF1bHQ6DQo+PiAtCQkqcmxw X21vZGUgPSBJU0NfUkxQX0NGR19NT0RFX0RBVDg7DQo+PiAtCQkqZGNmZyB8PSBJU0NfRENGR19J TU9ERV9QQUNLRUQ4Ow0KPj4gLQkJYnJlYWs7DQo+PiAtCX0NCj4+IC19DQo+PiAtDQo+PiAgIHN0 YXRpYyBpbnQgaXNjX2NvbmZpZ3VyZShzdHJ1Y3QgaXNjX2RldmljZSAqaXNjKSAgew0KPj4gICAJ c3RydWN0IHJlZ21hcCAqcmVnbWFwID0gaXNjLT5yZWdtYXA7DQo+PiAtCWNvbnN0IHN0cnVjdCBp c2NfZm9ybWF0ICpjdXJyZW50X2ZtdCA9IGlzYy0+Y3VycmVudF9mbXQ7DQo+PiAtCXN0cnVjdCBm bXRfY29uZmlnICpjdXJmbXRfY29uZmlnID0gZ2V0X2ZtdF9jb25maWcoY3VycmVudF9mbXQtDQo+ Pj4gZm91cmNjKTsNCj4+IC0Jc3RydWN0IGZtdF9jb25maWcgKnJhd2ZtdF9jb25maWcgPSBnZXRf Zm10X2NvbmZpZyhpc2MtPnJhd19mbXQtDQo+Pj4gZm91cmNjKTsNCj4+IC0Jc3RydWN0IGlzY19z dWJkZXZfZW50aXR5ICpzdWJkZXYgPSBpc2MtPmN1cnJlbnRfc3ViZGV2Ow0KPj4gICAJdTMyIHBm ZV9jZmcwLCBybHBfbW9kZSwgZGNmZywgbWFzaywgcGlwZWxpbmU7DQo+PiArCXN0cnVjdCBpc2Nf c3ViZGV2X2VudGl0eSAqc3ViZGV2ID0gaXNjLT5jdXJyZW50X3N1YmRldjsNCj4+DQo+PiAtCWlm IChzZW5zb3JfaXNfcHJlZmVycmVkKGN1cnJlbnRfZm10KSkgew0KPj4gLQkJcGZlX2NmZzAgPSBj dXJmbXRfY29uZmlnLT5wZmVfY2ZnMF9icHM7DQo+PiAtCQlwaXBlbGluZSA9IDB4MDsNCj4+IC0J CWlzY19nZXRfcGFyYW0oY3VycmVudF9mbXQsICZybHBfbW9kZSwgJmRjZmcpOw0KPj4gLQkJaXNj LT5jdHJscy5oaXN0X3N0YXQgPSBISVNUX0lOSVQ7DQo+PiAtCX0gZWxzZSB7DQo+PiAtCQlwZmVf Y2ZnMCA9IHJhd2ZtdF9jb25maWctPnBmZV9jZmcwX2JwczsNCj4+IC0JCXBpcGVsaW5lID0gY3Vy Zm10X2NvbmZpZy0+Yml0c19waXBlbGluZTsNCj4+IC0JCXJscF9tb2RlID0gY3VyZm10X2NvbmZp Zy0+cmxwX2NmZ19tb2RlOw0KPj4gLQkJZGNmZyA9IGN1cmZtdF9jb25maWctPmRjZmdfaW1vZGUg fA0KPj4gKwlwZmVfY2ZnMCA9IGlzYy0+Y29uZmlnLnNkX2Zvcm1hdC0+cGZlX2NmZzBfYnBzOw0K Pj4gKwlybHBfbW9kZSA9IGlzYy0+Y29uZmlnLnJscF9jZmdfbW9kZTsNCj4+ICsJcGlwZWxpbmUg PSBpc2MtPmNvbmZpZy5iaXRzX3BpcGVsaW5lOw0KPj4gKw0KPj4gKwlkY2ZnID0gaXNjLT5jb25m aWcuZGNmZ19pbW9kZSB8DQo+PiAgIAkJICAgICAgIElTQ19EQ0ZHX1lNQlNJWkVfQkVBVFM4IHwN Cj4+IElTQ19EQ0ZHX0NNQlNJWkVfQkVBVFM4Ow0KPj4gLQl9DQo+Pg0KPj4gICAJcGZlX2NmZzAg IHw9IHN1YmRldi0+cGZlX2NmZzAgfCBJU0NfUEZFX0NGRzBfTU9ERV9QUk9HUkVTU0lWRTsNCj4+ ICAgCW1hc2sgPSBJU0NfUEZFX0NGRzBfQlBTX01BU0sgfCBJU0NfUEZFX0NGRzBfSFBPTF9MT1cg fCBAQCAtDQo+PiAxMTA3LDggKzg2MSwxNSBAQCBzdGF0aWMgaW50IGlzY19jb25maWd1cmUoc3Ry dWN0IGlzY19kZXZpY2UgKmlzYykNCj4+ICAgCS8qIFNldCB0aGUgcGlwZWxpbmUgKi8NCj4+ICAg CWlzY19zZXRfcGlwZWxpbmUoaXNjLCBwaXBlbGluZSk7DQo+Pg0KPj4gLQlpZiAocGlwZWxpbmUp DQo+PiAtCQlpc2Nfc2V0X2hpc3RvZ3JhbShpc2MpOw0KPj4gKwkvKg0KPj4gKwkgKiBUaGUgY3Vy cmVudCBpbXBsZW1lbnRlZCBoaXN0b2dyYW0gaXMgYXZhaWxhYmxlIGZvciBSQVcgUiwgQiwgR0IN Cj4+ICsJICogY2hhbm5lbHMuIFdlIG5lZWQgdG8gY2hlY2sgaWYgc2Vuc29yIGlzIG91dHB1dHRp bmcgUkFXIEJBWUVSDQo+PiArCSAqLw0KPj4gKwlpZiAoaXNjLT5jdHJscy5hd2IgJiYNCj4+ICsJ ICAgIElTQ19JU19GT1JNQVRfUkFXKGlzYy0+Y29uZmlnLnNkX2Zvcm1hdC0+bWJ1c19jb2RlKSkN Cj4+ICsJCWlzY19zZXRfaGlzdG9ncmFtKGlzYywgdHJ1ZSk7DQo+PiArCWVsc2UNCj4+ICsJCWlz Y19zZXRfaGlzdG9ncmFtKGlzYywgZmFsc2UpOw0KPj4NCj4+ICAgCS8qIFVwZGF0ZSBwcm9maWxl ICovDQo+PiAgIAlyZXR1cm4gaXNjX3VwZGF0ZV9wcm9maWxlKGlzYyk7DQo+PiBAQCAtMTEyNSw3 ICs4ODYsOCBAQCBzdGF0aWMgaW50IGlzY19zdGFydF9zdHJlYW1pbmcoc3RydWN0IHZiMl9xdWV1 ZSAqdnEsDQo+PiB1bnNpZ25lZCBpbnQgY291bnQpDQo+PiAgIAkvKiBFbmFibGUgc3RyZWFtIG9u IHRoZSBzdWIgZGV2aWNlICovDQo+PiAgIAlyZXQgPSB2NGwyX3N1YmRldl9jYWxsKGlzYy0+Y3Vy cmVudF9zdWJkZXYtPnNkLCB2aWRlbywgc19zdHJlYW0sIDEpOw0KPj4gICAJaWYgKHJldCAmJiBy ZXQgIT0gLUVOT0lPQ1RMQ01EKSB7DQo+PiAtCQl2NGwyX2VycigmaXNjLT52NGwyX2RldiwgInN0 cmVhbSBvbiBmYWlsZWQgaW4gc3ViZGV2XG4iKTsNCj4+ICsJCXY0bDJfZXJyKCZpc2MtPnY0bDJf ZGV2LCAic3RyZWFtIG9uIGZhaWxlZCBpbiBzdWJkZXYgJWRcbiIsDQo+PiArCQkJIHJldCk7DQo+ PiAgIAkJZ290byBlcnJfc3RhcnRfc3RyZWFtOw0KPj4gICAJfQ0KPj4NCj4+IEBAIC0xMjIzLDYg Kzk4NSwyMiBAQCBzdGF0aWMgdm9pZCBpc2NfYnVmZmVyX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVy ICp2YikNCj4+ICAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlzYy0+ZG1hX3F1ZXVlX2xvY2ss IGZsYWdzKTsgIH0NCj4+DQo+PiArc3RhdGljIHN0cnVjdCBpc2NfZm9ybWF0ICpmaW5kX2Zvcm1h dF9ieV9mb3VyY2Moc3RydWN0IGlzY19kZXZpY2UgKmlzYywNCj4+ICsJCQkJCQkgdW5zaWduZWQg aW50IGZvdXJjYykNCj4+ICt7DQo+PiArCXVuc2lnbmVkIGludCBudW1fZm9ybWF0cyA9IGlzYy0+ bnVtX3VzZXJfZm9ybWF0czsNCj4+ICsJc3RydWN0IGlzY19mb3JtYXQgKmZtdDsNCj4+ICsJdW5z aWduZWQgaW50IGk7DQo+PiArDQo+PiArCWZvciAoaSA9IDA7IGkgPCBudW1fZm9ybWF0czsgaSsr KSB7DQo+PiArCQlmbXQgPSBpc2MtPnVzZXJfZm9ybWF0c1tpXTsNCj4+ICsJCWlmIChmbXQtPmZv dXJjYyA9PSBmb3VyY2MpDQo+PiArCQkJcmV0dXJuIGZtdDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwly ZXR1cm4gTlVMTDsNCj4+ICt9DQo+PiArDQo+PiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmIyX29w cyBpc2NfdmIyX29wcyA9IHsNCj4+ICAgCS5xdWV1ZV9zZXR1cAkJPSBpc2NfcXVldWVfc2V0dXAs DQo+PiAgIAkud2FpdF9wcmVwYXJlCQk9IHZiMl9vcHNfd2FpdF9wcmVwYXJlLA0KPj4gQEAgLTEy NDksMTUgKzEwMjcsMzEgQEAgc3RhdGljIGludCBpc2NfcXVlcnljYXAoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKnByaXYsDQo+PiBzdGF0aWMgaW50IGlzY19lbnVtX2ZtdF92aWRfY2FwKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KPj4gICAJCQkJIHN0cnVjdCB2NGwyX2ZtdGRlc2Mg KmYpDQo+PiAgIHsNCj4+IC0Jc3RydWN0IGlzY19kZXZpY2UgKmlzYyA9IHZpZGVvX2RydmRhdGEo ZmlsZSk7DQo+PiAgIAl1MzIgaW5kZXggPSBmLT5pbmRleDsNCj4+ICsJdTMyIGksIHN1cHBvcnRl ZF9pbmRleDsNCj4+DQo+PiAtCWlmIChpbmRleCA+PSBpc2MtPm51bV91c2VyX2Zvcm1hdHMpDQo+ PiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJaWYgKGluZGV4IDwgQVJSQVlfU0laRShjb250cm9s bGVyX2Zvcm1hdHMpKSB7DQo+PiArCQlmLT5waXhlbGZvcm1hdCA9IGNvbnRyb2xsZXJfZm9ybWF0 c1tpbmRleF0uZm91cmNjOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+DQo+PiAtCWYtPnBp eGVsZm9ybWF0ID0gaXNjLT51c2VyX2Zvcm1hdHNbaW5kZXhdLT5mb3VyY2M7DQo+PiArCWluZGV4 IC09IEFSUkFZX1NJWkUoY29udHJvbGxlcl9mb3JtYXRzKTsNCj4+DQo+PiAtCXJldHVybiAwOw0K Pj4gKwlpID0gMDsNCj4+ICsJc3VwcG9ydGVkX2luZGV4ID0gMDsNCj4+ICsNCj4+ICsJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoZm9ybWF0c19saXN0KTsgaSsrKSB7DQo+PiArCQlpZiAoIUlT Q19JU19GT1JNQVRfUkFXKGZvcm1hdHNfbGlzdFtpXS5tYnVzX2NvZGUpIHx8DQo+PiArCQkgICAg IWZvcm1hdHNfbGlzdFtpXS5zZF9zdXBwb3J0KQ0KPj4gKwkJCWNvbnRpbnVlOw0KPj4gKwkJaWYg KHN1cHBvcnRlZF9pbmRleCA9PSBpbmRleCkgew0KPj4gKwkJCWYtPnBpeGVsZm9ybWF0ID0gZm9y bWF0c19saXN0W2ldLmZvdXJjYzsNCj4+ICsJCQlyZXR1cm4gMDsNCj4+ICsJCX0NCj4+ICsJCXN1 cHBvcnRlZF9pbmRleCsrOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAtRUlOVkFMOw0KPj4g ICB9DQo+Pg0KPj4gICBzdGF0aWMgaW50IGlzY19nX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LCBAQCAtMTI3MCwyNg0KPj4gKzEwNjQsMjMxIEBAIHN0YXRpYyBpbnQg aXNjX2dfZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+PiAgIAly ZXR1cm4gMDsNCj4+ICAgfQ0KPj4NCj4+IC1zdGF0aWMgc3RydWN0IGlzY19mb3JtYXQgKmZpbmRf Zm9ybWF0X2J5X2ZvdXJjYyhzdHJ1Y3QgaXNjX2RldmljZSAqaXNjLA0KPj4gLQkJCQkJCSB1bnNp Z25lZCBpbnQgZm91cmNjKQ0KPj4gKy8qDQo+PiArICogQ2hlY2tzIHRoZSBjdXJyZW50IGNvbmZp Z3VyZWQgZm9ybWF0LCBpZiBJU0MgY2FuIG91dHB1dCBpdCwNCj4+ICsgKiBjb25zaWRlcmluZyB3 aGljaCB0eXBlIG9mIGZvcm1hdCB0aGUgSVNDIHJlY2VpdmVzIGZyb20gdGhlIHNlbnNvcg0KPj4g KyovIHN0YXRpYyBpbnQgaXNjX3RyeV92YWxpZGF0ZV9mb3JtYXRzKHN0cnVjdCBpc2NfZGV2aWNl ICppc2MpDQo+PiAgIHsNCj4+IC0JdW5zaWduZWQgaW50IG51bV9mb3JtYXRzID0gaXNjLT5udW1f dXNlcl9mb3JtYXRzOw0KPj4gLQlzdHJ1Y3QgaXNjX2Zvcm1hdCAqZm10Ow0KPj4gLQl1bnNpZ25l ZCBpbnQgaTsNCj4+ICsJaW50IHJldDsNCj4+ICsJYm9vbCBiYXllciA9IGZhbHNlLCB5dXYgPSBm YWxzZSwgcmdiID0gZmFsc2UsIGdyZXkgPSBmYWxzZTsNCj4+ICsNCj4+ICsJLyogYWxsIGZvcm1h dHMgc3VwcG9ydGVkIGJ5IHRoZSBSTFAgbW9kdWxlIGFyZSBPSyAqLw0KPj4gKwlzd2l0Y2ggKGlz Yy0+dHJ5X2NvbmZpZy5mb3VyY2MpIHsNCj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfU0JHR1I4Og0K Pj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TR0JSRzg6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NH UkJHODoNCj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfU1JHR0I4Og0KPj4gKwljYXNlIFY0TDJfUElY X0ZNVF9TQkdHUjEwOg0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TR0JSRzEwOg0KPj4gKwljYXNl IFY0TDJfUElYX0ZNVF9TR1JCRzEwOg0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TUkdHQjEwOg0K Pj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TQkdHUjEyOg0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9T R0JSRzEyOg0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TR1JCRzEyOg0KPj4gKwljYXNlIFY0TDJf UElYX0ZNVF9TUkdHQjEyOg0KPj4gKwkJcmV0ID0gMDsNCj4+ICsJCWJheWVyID0gdHJ1ZTsNCj4+ ICsJCWJyZWFrOw0KPj4NCj4+IC0JZm9yIChpID0gMDsgaSA8IG51bV9mb3JtYXRzOyBpKyspIHsN Cj4+IC0JCWZtdCA9IGlzYy0+dXNlcl9mb3JtYXRzW2ldOw0KPj4gLQkJaWYgKGZtdC0+Zm91cmNj ID09IGZvdXJjYykNCj4+IC0JCQlyZXR1cm4gZm10Ow0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9Z VVY0MjA6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1lVVjQyMlA6DQo+PiArCWNhc2UgVjRMMl9Q SVhfRk1UX1lVWVY6DQo+PiArCQlyZXQgPSAwOw0KPj4gKwkJeXV2ID0gdHJ1ZTsNCj4+ICsJCWJy ZWFrOw0KPj4gKw0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9SR0I1NjU6DQo+PiArCWNhc2UgVjRM Ml9QSVhfRk1UX0FSR0IzMjoNCj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfQVJHQjQ0NDoNCj4+ICsJ Y2FzZSBWNEwyX1BJWF9GTVRfQVJHQjU1NToNCj4+ICsJCXJldCA9IDA7DQo+PiArCQlyZ2IgPSB0 cnVlOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0dSRVk6DQo+PiArCQly ZXQgPSAwOw0KPj4gKwkJZ3JleSA9IHRydWU7DQo+PiArCQlicmVhazsNCj4+ICsJZGVmYXVsdDoN Cj4+ICsJLyogYW55IG90aGVyIGRpZmZlcmVudCBmb3JtYXRzIGFyZSBub3Qgc3VwcG9ydGVkICov DQo+PiArCQlyZXQgPSAtRUlOVkFMOw0KPj4gICAJfQ0KPj4NCj4+IC0JcmV0dXJuIE5VTEw7DQo+ PiArCS8qIHdlIGNhbm5vdCBvdXRwdXQgUkFXL0dyZXkgaWYgd2UgZG8gbm90IHJlY2VpdmUgUkFX ICovDQo+PiArCWlmICgoYmF5ZXIgfHwgZ3JleSkgJiYNCj4+ICsJICAgICFJU0NfSVNfRk9STUFU X1JBVyhpc2MtPnRyeV9jb25maWcuc2RfZm9ybWF0LT5tYnVzX2NvZGUpKQ0KPj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+PiArDQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gKy8qDQo+ PiArICogQ29uZmlndXJlcyB0aGUgUkxQIGFuZCBETUEgbW9kdWxlcywgZGVwZW5kaW5nIG9uIHRo ZSBvdXRwdXQgZm9ybWF0DQo+PiArICogY29uZmlndXJlZCBmb3IgdGhlIElTQy4NCj4+ICsgKiBJ ZiBkaXJlY3RfZHVtcCA9PSB0cnVlLCBqdXN0IGR1bXAgcmF3IGRhdGEgOCBiaXRzLg0KPj4gKyAq Lw0KPj4gK3N0YXRpYyBpbnQgaXNjX3RyeV9jb25maWd1cmVfcmxwX2RtYShzdHJ1Y3QgaXNjX2Rl dmljZSAqaXNjLCBib29sDQo+PiArZGlyZWN0X2R1bXApIHsNCj4+ICsJaWYgKGRpcmVjdF9kdW1w KSB7DQo+PiArCQlpc2MtPnRyeV9jb25maWcucmxwX2NmZ19tb2RlID0gSVNDX1JMUF9DRkdfTU9E RV9EQVQ4Ow0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmRjZmdfaW1vZGUgPSBJU0NfRENGR19JTU9E RV9QQUNLRUQ4Ow0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmRjdHJsX2R2aWV3ID0gSVNDX0RDVFJM X0RWSUVXX1BBQ0tFRDsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5icHAgPSAxNjsNCj4+ICsJCXJl dHVybiAwOw0KPj4gKwl9DQo+PiArDQo+PiArCXN3aXRjaCAoaXNjLT50cnlfY29uZmlnLmZvdXJj Yykgew0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9TQkdHUjg6DQo+PiArCWNhc2UgVjRMMl9QSVhf Rk1UX1NHQlJHODoNCj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfU0dSQkc4Og0KPj4gKwljYXNlIFY0 TDJfUElYX0ZNVF9TUkdHQjg6DQo+PiArCQlpc2MtPnRyeV9jb25maWcucmxwX2NmZ19tb2RlID0g SVNDX1JMUF9DRkdfTU9ERV9EQVQ4Ow0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmRjZmdfaW1vZGUg PSBJU0NfRENGR19JTU9ERV9QQUNLRUQ4Ow0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmRjdHJsX2R2 aWV3ID0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRDsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5icHAg PSA4Ow0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NCR0dSMTA6DQo+PiAr CWNhc2UgVjRMMl9QSVhfRk1UX1NHQlJHMTA6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NHUkJH MTA6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NSR0dCMTA6DQo+PiArCQlpc2MtPnRyeV9jb25m aWcucmxwX2NmZ19tb2RlID0gSVNDX1JMUF9DRkdfTU9ERV9EQVQxMDsNCj4+ICsJCWlzYy0+dHJ5 X2NvbmZpZy5kY2ZnX2ltb2RlID0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTY7DQo+PiArCQlpc2Mt PnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VEOw0KPj4gKwkJ aXNjLT50cnlfY29uZmlnLmJwcCA9IDE2Ow0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9Q SVhfRk1UX1NCR0dSMTI6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NHQlJHMTI6DQo+PiArCWNh c2UgVjRMMl9QSVhfRk1UX1NHUkJHMTI6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1NSR0dCMTI6 DQo+PiArCQlpc2MtPnRyeV9jb25maWcucmxwX2NmZ19tb2RlID0gSVNDX1JMUF9DRkdfTU9ERV9E QVQxMjsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5kY2ZnX2ltb2RlID0gSVNDX0RDRkdfSU1PREVf UEFDS0VEMTY7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0NfRENUUkxf RFZJRVdfUEFDS0VEOw0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmJwcCA9IDE2Ow0KPj4gKwkJYnJl YWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1JHQjU2NToNCj4+ICsJCWlzYy0+dHJ5X2NvbmZp Zy5ybHBfY2ZnX21vZGUgPSBJU0NfUkxQX0NGR19NT0RFX1JHQjU2NTsNCj4+ICsJCWlzYy0+dHJ5 X2NvbmZpZy5kY2ZnX2ltb2RlID0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTY7DQo+PiArCQlpc2Mt PnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VEOw0KPj4gKwkJ aXNjLT50cnlfY29uZmlnLmJwcCA9IDE2Ow0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9Q SVhfRk1UX0FSR0I0NDQ6DQo+PiArCQlpc2MtPnRyeV9jb25maWcucmxwX2NmZ19tb2RlID0NCj4+ IElTQ19STFBfQ0ZHX01PREVfQVJHQjQ0NDsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5kY2ZnX2lt b2RlID0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMTY7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGN0 cmxfZHZpZXcgPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VEOw0KPj4gKwkJaXNjLT50cnlfY29uZmln LmJwcCA9IDE2Ow0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0FSR0I1NTU6 DQo+PiArCQlpc2MtPnRyeV9jb25maWcucmxwX2NmZ19tb2RlID0NCj4+IElTQ19STFBfQ0ZHX01P REVfQVJHQjU1NTsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5kY2ZnX2ltb2RlID0gSVNDX0RDRkdf SU1PREVfUEFDS0VEMTY7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0Nf RENUUkxfRFZJRVdfUEFDS0VEOw0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmJwcCA9IDE2Ow0KPj4g KwkJYnJlYWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0FSR0IzMjoNCj4+ICsJCWlzYy0+dHJ5 X2NvbmZpZy5ybHBfY2ZnX21vZGUgPSBJU0NfUkxQX0NGR19NT0RFX0FSR0IzMjsNCj4+ICsJCWlz Yy0+dHJ5X2NvbmZpZy5kY2ZnX2ltb2RlID0gSVNDX0RDRkdfSU1PREVfUEFDS0VEMzI7DQo+PiAr CQlpc2MtPnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0NfRENUUkxfRFZJRVdfUEFDS0VEOw0K Pj4gKwkJaXNjLT50cnlfY29uZmlnLmJwcCA9IDMyOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2Ug VjRMMl9QSVhfRk1UX1lVVjQyMDoNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5ybHBfY2ZnX21vZGUg PSBJU0NfUkxQX0NGR19NT0RFX1lZQ0M7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGNmZ19pbW9k ZSA9IElTQ19EQ0ZHX0lNT0RFX1lDNDIwUDsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5kY3RybF9k dmlldyA9IElTQ19EQ1RSTF9EVklFV19QTEFOQVI7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuYnBw ID0gMTI7DQo+PiArCQlicmVhazsNCj4+ICsJY2FzZSBWNEwyX1BJWF9GTVRfWVVWNDIyUDoNCj4+ ICsJCWlzYy0+dHJ5X2NvbmZpZy5ybHBfY2ZnX21vZGUgPSBJU0NfUkxQX0NGR19NT0RFX1lZQ0M7 DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGNmZ19pbW9kZSA9IElTQ19EQ0ZHX0lNT0RFX1lDNDIy UDsNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5kY3RybF9kdmlldyA9IElTQ19EQ1RSTF9EVklFV19Q TEFOQVI7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuYnBwID0gMTY7DQo+PiArCQlicmVhazsNCj4+ ICsJY2FzZSBWNEwyX1BJWF9GTVRfWVVZVjoNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5ybHBfY2Zn X21vZGUgPSBJU0NfUkxQX0NGR19NT0RFX1lZQ0M7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGNm Z19pbW9kZSA9IElTQ19EQ0ZHX0lNT0RFX1BBQ0tFRDMyOw0KPj4gKwkJaXNjLT50cnlfY29uZmln LmRjdHJsX2R2aWV3ID0gSVNDX0RDVFJMX0RWSUVXX1BBQ0tFRDsNCj4+ICsJCWlzYy0+dHJ5X2Nv bmZpZy5icHAgPSAxNjsNCj4+ICsJCWJyZWFrOw0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9HUkVZ Og0KPj4gKwkJaXNjLT50cnlfY29uZmlnLnJscF9jZmdfbW9kZSA9IElTQ19STFBfQ0ZHX01PREVf REFUWTg7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGNmZ19pbW9kZSA9IElTQ19EQ0ZHX0lNT0RF X1BBQ0tFRDg7DQo+PiArCQlpc2MtPnRyeV9jb25maWcuZGN0cmxfZHZpZXcgPSBJU0NfRENUUkxf RFZJRVdfUEFDS0VEOw0KPj4gKwkJaXNjLT50cnlfY29uZmlnLmJwcCA9IDg7DQo+PiArCQlicmVh azsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9DQo+PiArCXJl dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKg0KPj4gKyAqIENvbmZpZ3VyaW5nIHBpcGVsaW5l IG1vZHVsZXMsIGRlcGVuZGluZyBvbiB3aGljaCBmb3JtYXQgdGhlIElTQw0KPj4gK291dHB1dHMN Cj4+ICsgKiBhbmQgY29uc2lkZXJpbmcgd2hpY2ggZm9ybWF0IGl0IGhhcyBhcyBpbnB1dCBmcm9t IHRoZSBzZW5zb3IuDQo+PiArICovDQo+PiArc3RhdGljIGludCBpc2NfdHJ5X2NvbmZpZ3VyZV9w aXBlbGluZShzdHJ1Y3QgaXNjX2RldmljZSAqaXNjKSB7DQo+PiArCXN3aXRjaCAoaXNjLT50cnlf Y29uZmlnLmZvdXJjYykgew0KPj4gKwljYXNlIFY0TDJfUElYX0ZNVF9SR0I1NjU6DQo+PiArCWNh c2UgVjRMMl9QSVhfRk1UX0FSR0I1NTU6DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0FSR0I0NDQ6 DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX0FSR0IzMjoNCj4+ICsJCS8qIGlmIHNlbnNvciBmb3Jt YXQgaXMgUkFXLCB3ZSBjb252ZXJ0IGluc2lkZSBJU0MgKi8NCj4+ICsJCWlmIChJU0NfSVNfRk9S TUFUX1JBVyhpc2MtPnRyeV9jb25maWcuc2RfZm9ybWF0LQ0KPj4+IG1idXNfY29kZSkpIHsNCj4+ ICsJCQlpc2MtPnRyeV9jb25maWcuYml0c19waXBlbGluZSA9IENGQV9FTkFCTEUgfA0KPj4gKwkJ CQlXQl9FTkFCTEUgfCBHQU1fRU5BQkxFUzsNCj4+ICsJCX0gZWxzZSB7DQo+PiArCQkJaXNjLT50 cnlfY29uZmlnLmJpdHNfcGlwZWxpbmUgPSAweDA7DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ ICsJY2FzZSBWNEwyX1BJWF9GTVRfWVVWNDIwOg0KPj4gKwkJLyogaWYgc2Vuc29yIGZvcm1hdCBp cyBSQVcsIHdlIGNvbnZlcnQgaW5zaWRlIElTQyAqLw0KPj4gKwkJaWYgKElTQ19JU19GT1JNQVRf UkFXKGlzYy0+dHJ5X2NvbmZpZy5zZF9mb3JtYXQtDQo+Pj4gbWJ1c19jb2RlKSkgew0KPj4gKwkJ CWlzYy0+dHJ5X2NvbmZpZy5iaXRzX3BpcGVsaW5lID0gQ0ZBX0VOQUJMRSB8DQo+PiArCQkJCUNT Q19FTkFCTEUgfCBXQl9FTkFCTEUgfCBHQU1fRU5BQkxFUyB8DQo+PiArCQkJCVNVQjQyMF9FTkFC TEUgfCBTVUI0MjJfRU5BQkxFIHwNCj4+IENCQ19FTkFCTEU7DQo+PiArCQl9IGVsc2Ugew0KPj4g KwkJCWlzYy0+dHJ5X2NvbmZpZy5iaXRzX3BpcGVsaW5lID0gMHgwOw0KPj4gKwkJfQ0KPj4gKwkJ YnJlYWs7DQo+PiArCWNhc2UgVjRMMl9QSVhfRk1UX1lVVjQyMlA6DQo+PiArCQkvKiBpZiBzZW5z b3IgZm9ybWF0IGlzIFJBVywgd2UgY29udmVydCBpbnNpZGUgSVNDICovDQo+PiArCQlpZiAoSVND X0lTX0ZPUk1BVF9SQVcoaXNjLT50cnlfY29uZmlnLnNkX2Zvcm1hdC0NCj4+PiBtYnVzX2NvZGUp KSB7DQo+PiArCQkJaXNjLT50cnlfY29uZmlnLmJpdHNfcGlwZWxpbmUgPSBDRkFfRU5BQkxFIHwN Cj4+ICsJCQkJQ1NDX0VOQUJMRSB8IFdCX0VOQUJMRSB8IEdBTV9FTkFCTEVTIHwNCj4+ICsJCQkJ U1VCNDIyX0VOQUJMRSB8IENCQ19FTkFCTEU7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCWlzYy0+ dHJ5X2NvbmZpZy5iaXRzX3BpcGVsaW5lID0gMHgwOw0KPj4gKwkJfQ0KPj4gKwkJYnJlYWs7DQo+ PiArCWNhc2UgVjRMMl9QSVhfRk1UX1lVWVY6DQo+PiArCQkvKiBpZiBzZW5zb3IgZm9ybWF0IGlz IFJBVywgd2UgY29udmVydCBpbnNpZGUgSVNDICovDQo+PiArCQlpZiAoSVNDX0lTX0ZPUk1BVF9S QVcoaXNjLT50cnlfY29uZmlnLnNkX2Zvcm1hdC0NCj4+PiBtYnVzX2NvZGUpKSB7DQo+PiArCQkJ aXNjLT50cnlfY29uZmlnLmJpdHNfcGlwZWxpbmUgPSBDRkFfRU5BQkxFIHwNCj4+ICsJCQkJQ1ND X0VOQUJMRSB8IFdCX0VOQUJMRSB8IEdBTV9FTkFCTEVTIHwNCj4+ICsJCQkJU1VCNDIyX0VOQUJM RSB8IENCQ19FTkFCTEU7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCWlzYy0+dHJ5X2NvbmZpZy5i aXRzX3BpcGVsaW5lID0gMHgwOw0KPj4gKwkJfQ0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgVjRM Ml9QSVhfRk1UX0dSRVk6DQo+PiArCQlpZiAoSVNDX0lTX0ZPUk1BVF9SQVcoaXNjLT50cnlfY29u ZmlnLnNkX2Zvcm1hdC0NCj4+PiBtYnVzX2NvZGUpKSB7DQo+PiArCQkvKiBpZiBzZW5zb3IgZm9y bWF0IGlzIFJBVywgd2UgY29udmVydCBpbnNpZGUgSVNDICovDQo+PiArCQkJaXNjLT50cnlfY29u ZmlnLmJpdHNfcGlwZWxpbmUgPSBDRkFfRU5BQkxFIHwNCj4+ICsJCQkJQ1NDX0VOQUJMRSB8IFdC X0VOQUJMRSB8IEdBTV9FTkFCTEVTIHwNCj4+ICsJCQkJQ0JDX0VOQUJMRTsNCj4+ICsJCX0gZWxz ZSB7DQo+PiArCQkJaXNjLT50cnlfY29uZmlnLmJpdHNfcGlwZWxpbmUgPSAweDA7DQo+PiArCQl9 DQo+PiArCQlicmVhazsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCWlzYy0+dHJ5X2NvbmZpZy5iaXRz X3BpcGVsaW5lID0gMHgwOw0KPj4gKwl9DQo+PiArCXJldHVybiAwOw0KPj4gICB9DQo+Pg0KPj4g ICBzdGF0aWMgaW50IGlzY190cnlfZm10KHN0cnVjdCBpc2NfZGV2aWNlICppc2MsIHN0cnVjdCB2 NGwyX2Zvcm1hdCAqZiwNCj4+IC0JCQlzdHJ1Y3QgaXNjX2Zvcm1hdCAqKmN1cnJlbnRfZm10LCB1 MzIgKmNvZGUpDQo+PiArCQkJdTMyICpjb2RlKQ0KPj4gICB7DQo+PiAtCXN0cnVjdCBpc2NfZm9y bWF0ICppc2NfZm10Ow0KPj4gKwlpbnQgaTsNCj4+ICsJc3RydWN0IGlzY19mb3JtYXQgKnNkX2Zt dCA9IE5VTEwsICpkaXJlY3RfZm10ID0gTlVMTDsNCj4+ICAgCXN0cnVjdCB2NGwyX3BpeF9mb3Jt YXQgKnBpeGZtdCA9ICZmLT5mbXQucGl4Ow0KPj4gICAJc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9j b25maWcgcGFkX2NmZzsNCj4+ICAgCXN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgZm9ybWF0ID0g ew0KPj4gQEAgLTEyOTcsNDggKzEyOTYsMTE0IEBAIHN0YXRpYyBpbnQgaXNjX3RyeV9mbXQoc3Ry dWN0IGlzY19kZXZpY2UgKmlzYywgc3RydWN0DQo+PiB2NGwyX2Zvcm1hdCAqZiwNCj4+ICAgCX07 DQo+PiAgIAl1MzIgbWJ1c19jb2RlOw0KPj4gICAJaW50IHJldDsNCj4+ICsJYm9vbCBybHBfZG1h X2RpcmVjdF9kdW1wID0gZmFsc2U7DQo+Pg0KPj4gICAJaWYgKGYtPnR5cGUgIT0gVjRMMl9CVUZf VFlQRV9WSURFT19DQVBUVVJFKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4NCj4+IC0JaXNj X2ZtdCA9IGZpbmRfZm9ybWF0X2J5X2ZvdXJjYyhpc2MsIHBpeGZtdC0+cGl4ZWxmb3JtYXQpOw0K Pj4gLQlpZiAoIWlzY19mbXQpIHsNCj4+IC0JCXY0bDJfd2FybigmaXNjLT52NGwyX2RldiwgIkZv cm1hdCAweCV4IG5vdCBmb3VuZFxuIiwNCj4+IC0JCQkgIHBpeGZtdC0+cGl4ZWxmb3JtYXQpOw0K Pj4gLQkJaXNjX2ZtdCA9IGlzYy0+dXNlcl9mb3JtYXRzW2lzYy0+bnVtX3VzZXJfZm9ybWF0cyAt IDFdOw0KPj4gLQkJcGl4Zm10LT5waXhlbGZvcm1hdCA9IGlzY19mbXQtPmZvdXJjYzsNCj4+ICsJ LyogU3RlcCAxOiBmaW5kIGEgUkFXIGZvcm1hdCB0aGF0IGlzIHN1cHBvcnRlZCAqLw0KPj4gKwlm b3IgKGkgPSAwOyBpIDwgaXNjLT5udW1fdXNlcl9mb3JtYXRzOyBpKyspIHsNCj4+ICsJCWlmIChJ U0NfSVNfRk9STUFUX1JBVyhpc2MtPnVzZXJfZm9ybWF0c1tpXS0+bWJ1c19jb2RlKSkgew0KPj4g KwkJCXNkX2ZtdCA9IGlzYy0+dXNlcl9mb3JtYXRzW2ldOw0KPj4gKwkJCWJyZWFrOw0KPj4gKwkJ fQ0KPj4gKwl9DQo+PiArCS8qIFN0ZXAgMjogV2UgY2FuIGNvbnRpbnVlIHdpdGggdGhpcyBSQVcg Zm9ybWF0LCBvciB3ZSBjYW4gbG9vaw0KPj4gKwkgKiBmb3IgYmV0dGVyOiBtYXliZSBzZW5zb3Ig c3VwcG9ydHMgZGlyZWN0bHkgd2hhdCB3ZSBuZWVkLg0KPj4gKwkgKi8NCj4+ICsJZGlyZWN0X2Zt dCA9IGZpbmRfZm9ybWF0X2J5X2ZvdXJjYyhpc2MsIHBpeGZtdC0+cGl4ZWxmb3JtYXQpOw0KPj4g Kw0KPj4gKwkvKiBTdGVwIDM6IFdlIGhhdmUgYm90aC4gV2UgZGVjaWRlIGdpdmVuIHRoZSBtb2R1 bGUgcGFyYW1ldGVyIHdoaWNoDQo+PiArCSAqIG9uZSB0byB1c2UuDQo+PiArCSAqLw0KPj4gKwlp ZiAoZGlyZWN0X2ZtdCAmJiBzZF9mbXQgJiYgc2Vuc29yX3ByZWZlcnJlZCkNCj4+ICsJCXNkX2Zt dCA9IGRpcmVjdF9mbXQ7DQo+PiArDQo+PiArCS8qIFN0ZXAgNDogd2UgZG8gbm90IGhhdmUgUkFX IGJ1dCB3ZSBoYXZlIGEgZGlyZWN0IGZvcm1hdC4gVXNlIGl0LiAqLw0KPj4gKwlpZiAoZGlyZWN0 X2ZtdCAmJiAhc2RfZm10KQ0KPj4gKwkJc2RfZm10ID0gZGlyZWN0X2ZtdDsNCj4+ICsNCj4+ICsJ LyogU3RlcCA1OiBpZiB3ZSBhcmUgdXNpbmcgYSBkaXJlY3QgZm9ybWF0LCB3ZSBuZWVkIHRvIHBh Y2thZ2UNCj4+ICsJICogZXZlcnl0aGluZyBhcyA4IGJpdCBkYXRhIGFuZCBqdXN0IGR1bXAgaXQN Cj4+ICsJICovDQo+PiArCWlmIChzZF9mbXQgPT0gZGlyZWN0X2ZtdCkNCj4+ICsJCXJscF9kbWFf ZGlyZWN0X2R1bXAgPSB0cnVlOw0KPj4gKw0KPj4gKwkvKiBTdGVwIDY6IFdlIGhhdmUgbm8gZm9y bWF0LiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHVzZXJzcGFjZQ0KPj4gKwkgKiByZXF1ZXN0cyBz b21lIHdlaXJkL2ludmFsaWQgZm9ybWF0Lg0KPj4gKwkgKiBJbiB0aGlzIGNhc2UsIGRlZmF1bHQg dG8gd2hhdGV2ZXIgd2UgaGF2ZQ0KPj4gKwkgKi8NCj4+ICsJaWYgKCFzZF9mbXQgJiYgIWRpcmVj dF9mbXQpIHsNCj4+ICsJCXNkX2ZtdCA9IGlzYy0+dXNlcl9mb3JtYXRzW2lzYy0+bnVtX3VzZXJf Zm9ybWF0cyAtIDFdOw0KPj4gKwkJdjRsMl9kYmcoMSwgZGVidWcsICZpc2MtPnY0bDJfZGV2LA0K Pj4gKwkJCSAiU2Vuc29yIG5vdCBzdXBwb3J0aW5nICUuNHMsIHVzaW5nICUuNHNcbiIsDQo+PiAr CQkJIChjaGFyICopJnBpeGZtdC0+cGl4ZWxmb3JtYXQsIChjaGFyICopJnNkX2ZtdC0NCj4+PiBm b3VyY2MpOw0KPj4gICAJfQ0KPj4NCj4+ICsJLyogU3RlcCA3OiBQcmludCBvdXQgd2hhdCB3ZSBk ZWNpZGVkIGZvciBkZWJ1Z2dpbmcgKi8NCj4+ICsJdjRsMl9kYmcoMSwgZGVidWcsICZpc2MtPnY0 bDJfZGV2LA0KPj4gKwkJICJQcmVmZXJyaW5nIHRvIGhhdmUgc2Vuc29yIHVzaW5nIGZvcm1hdCAl LjRzXG4iLA0KPj4gKwkJIChjaGFyICopJnNkX2ZtdC0+Zm91cmNjKTsNCj4+ICsNCj4+ICsJLyog U3RlcCA4OiBhdCB0aGlzIG1vbWVudCB3ZSBkZWNpZGVkIHdoaWNoIGZvcm1hdCB0aGUgc3ViZGV2 IHdpbGwgdXNlDQo+PiAqLw0KPj4gKwlpc2MtPnRyeV9jb25maWcuc2RfZm9ybWF0ID0gc2RfZm10 Ow0KPj4gKw0KPj4gICAJLyogTGltaXQgdG8gQXRtZWwgSVNDIGhhcmR3YXJlIGNhcGFiaWxpdGll cyAqLw0KPj4gICAJaWYgKHBpeGZtdC0+d2lkdGggPiBJU0NfTUFYX1NVUFBPUlRfV0lEVEgpDQo+ PiAgIAkJcGl4Zm10LT53aWR0aCA9IElTQ19NQVhfU1VQUE9SVF9XSURUSDsNCj4+ICAgCWlmIChw aXhmbXQtPmhlaWdodCA+IElTQ19NQVhfU1VQUE9SVF9IRUlHSFQpDQo+PiAgIAkJcGl4Zm10LT5o ZWlnaHQgPSBJU0NfTUFYX1NVUFBPUlRfSEVJR0hUOw0KPj4NCj4+IC0JaWYgKHNlbnNvcl9pc19w cmVmZXJyZWQoaXNjX2ZtdCkpDQo+PiAtCQltYnVzX2NvZGUgPSBpc2NfZm10LT5tYnVzX2NvZGU7 DQo+PiAtCWVsc2UNCj4+IC0JCW1idXNfY29kZSA9IGlzYy0+cmF3X2ZtdC0+bWJ1c19jb2RlOw0K Pj4gKwkvKg0KPj4gKwkgKiBUaGUgbWJ1cyBmb3JtYXQgaXMgdGhlIG9uZSB0aGUgc3ViZGV2IG91 dHB1dHMuDQo+PiArCSAqIFRoZSBwaXhlbHMgd2lsbCBiZSB0cmFuc2ZlcnJlZCBpbiB0aGlzIGZv cm1hdCBTZW5zb3IgLT4gSVNDDQo+PiArCSAqLw0KPj4gKwltYnVzX2NvZGUgPSBzZF9mbXQtPm1i dXNfY29kZTsNCj4+ICsNCj4+ICsJLyoNCj4+ICsJICogVmFsaWRhdGUgZm9ybWF0cy4gSWYgdGhl IHJlcXVpcmVkIGZvcm1hdCBpcyBub3QgT0ssIGRlZmF1bHQgdG8gcmF3Lg0KPj4gKwkgKi8NCj4+ ICsNCj4+ICsJaXNjLT50cnlfY29uZmlnLmZvdXJjYyA9IHBpeGZtdC0+cGl4ZWxmb3JtYXQ7DQo+ PiArDQo+PiArCWlmIChpc2NfdHJ5X3ZhbGlkYXRlX2Zvcm1hdHMoaXNjKSkgew0KPj4gKwkJcGl4 Zm10LT5waXhlbGZvcm1hdCA9IGlzYy0+dHJ5X2NvbmZpZy5mb3VyY2MgPSBzZF9mbXQtPmZvdXJj YzsNCj4+ICsJCS8qIFRoaXMgc2hvdWxkIGJlIHJlZHVuZGFudCwgZm9ybWF0IHNob3VsZCBiZSBz dXBwb3J0ZWQgKi8NCj4+ICsJCXJldCA9IGlzY190cnlfdmFsaWRhdGVfZm9ybWF0cyhpc2MpOw0K Pj4gKwkJaWYgKHJldCkNCj4+ICsJCQlnb3RvIGlzY190cnlfZm10X2VycjsNCj4+ICsJfQ0KPj4g Kw0KPj4gKwlyZXQgPSBpc2NfdHJ5X2NvbmZpZ3VyZV9ybHBfZG1hKGlzYywgcmxwX2RtYV9kaXJl Y3RfZHVtcCk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlnb3RvIGlzY190cnlfZm10X2VycjsNCj4+ ICsNCj4+ICsJcmV0ID0gaXNjX3RyeV9jb25maWd1cmVfcGlwZWxpbmUoaXNjKTsNCj4+ICsJaWYg KHJldCkNCj4+ICsJCWdvdG8gaXNjX3RyeV9mbXRfZXJyOw0KPj4NCj4+ICAgCXY0bDJfZmlsbF9t YnVzX2Zvcm1hdCgmZm9ybWF0LmZvcm1hdCwgcGl4Zm10LCBtYnVzX2NvZGUpOw0KPj4gICAJcmV0 ID0gdjRsMl9zdWJkZXZfY2FsbChpc2MtPmN1cnJlbnRfc3ViZGV2LT5zZCwgcGFkLCBzZXRfZm10 LA0KPj4gICAJCQkgICAgICAgJnBhZF9jZmcsICZmb3JtYXQpOw0KPj4gICAJaWYgKHJldCA8IDAp DQo+PiAtCQlyZXR1cm4gcmV0Ow0KPj4gKwkJZ290byBpc2NfdHJ5X2ZtdF9lcnI7DQo+Pg0KPj4g ICAJdjRsMl9maWxsX3BpeF9mb3JtYXQocGl4Zm10LCAmZm9ybWF0LmZvcm1hdCk7DQo+Pg0KPj4g ICAJcGl4Zm10LT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsNCj4+IC0JcGl4Zm10LT5ieXRlc3Bl cmxpbmUgPSAocGl4Zm10LT53aWR0aCAqIGlzY19mbXQtPmJwcCkgPj4gMzsNCj4+ICsJcGl4Zm10 LT5ieXRlc3BlcmxpbmUgPSAocGl4Zm10LT53aWR0aCAqIGlzYy0+dHJ5X2NvbmZpZy5icHApID4+ IDM7DQo+PiAgIAlwaXhmbXQtPnNpemVpbWFnZSA9IHBpeGZtdC0+Ynl0ZXNwZXJsaW5lICogcGl4 Zm10LT5oZWlnaHQ7DQo+Pg0KPj4gLQlpZiAoY3VycmVudF9mbXQpDQo+PiAtCQkqY3VycmVudF9m bXQgPSBpc2NfZm10Ow0KPj4gLQ0KPj4gICAJaWYgKGNvZGUpDQo+PiAgIAkJKmNvZGUgPSBtYnVz X2NvZGU7DQo+Pg0KPj4gICAJcmV0dXJuIDA7DQo+PiArDQo+PiAraXNjX3RyeV9mbXRfZXJyOg0K Pj4gKwl2NGwyX2VycigmaXNjLT52NGwyX2RldiwgIkNvdWxkIG5vdCBmaW5kIGFueSBwb3NzaWJs ZSBmb3JtYXQgZm9yIGENCj4+IHdvcmtpbmcgcGlwZWxpbmVcbiIpOw0KPj4gKwltZW1zZXQoJmlz Yy0+dHJ5X2NvbmZpZywgMCwgc2l6ZW9mKGlzYy0+dHJ5X2NvbmZpZykpOw0KPj4gKw0KPj4gKwly ZXR1cm4gcmV0Ow0KPj4gICB9DQo+Pg0KPj4gICBzdGF0aWMgaW50IGlzY19zZXRfZm10KHN0cnVj dCBpc2NfZGV2aWNlICppc2MsIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikgQEAgLQ0KPj4gMTM0Niwx MSArMTQxMSwxMCBAQCBzdGF0aWMgaW50IGlzY19zZXRfZm10KHN0cnVjdCBpc2NfZGV2aWNlICpp c2MsIHN0cnVjdA0KPj4gdjRsMl9mb3JtYXQgKmYpDQo+PiAgIAlzdHJ1Y3QgdjRsMl9zdWJkZXZf Zm9ybWF0IGZvcm1hdCA9IHsNCj4+ICAgCQkud2hpY2ggPSBWNEwyX1NVQkRFVl9GT1JNQVRfQUNU SVZFLA0KPj4gICAJfTsNCj4+IC0Jc3RydWN0IGlzY19mb3JtYXQgKmN1cnJlbnRfZm10Ow0KPj4g LQl1MzIgbWJ1c19jb2RlOw0KPj4gKwl1MzIgbWJ1c19jb2RlID0gMDsNCj4+ICAgCWludCByZXQ7 DQo+Pg0KPj4gLQlyZXQgPSBpc2NfdHJ5X2ZtdChpc2MsIGYsICZjdXJyZW50X2ZtdCwgJm1idXNf Y29kZSk7DQo+PiArCXJldCA9IGlzY190cnlfZm10KGlzYywgZiwgJm1idXNfY29kZSk7DQo+PiAg IAlpZiAocmV0KQ0KPj4gICAJCXJldHVybiByZXQ7DQo+Pg0KPj4gQEAgLTEzNjEsNyArMTQyNSwx MCBAQCBzdGF0aWMgaW50IGlzY19zZXRfZm10KHN0cnVjdCBpc2NfZGV2aWNlICppc2MsIHN0cnVj dA0KPj4gdjRsMl9mb3JtYXQgKmYpDQo+PiAgIAkJcmV0dXJuIHJldDsNCj4+DQo+PiAgIAlpc2Mt PmZtdCA9ICpmOw0KPj4gLQlpc2MtPmN1cnJlbnRfZm10ID0gY3VycmVudF9mbXQ7DQo+PiArCS8q IG1ha2UgdGhlIHRyeSBjb25maWd1cmF0aW9uIGFjdGl2ZSAqLw0KPj4gKwltZW1jcHkoJmlzYy0+ Y29uZmlnLCAmaXNjLT50cnlfY29uZmlnLCBzaXplb2YoaXNjLT5jb25maWcpKTsNCj4+ICsNCj4+ ICsJdjRsMl9kYmcoMSwgZGVidWcsICZpc2MtPnY0bDJfZGV2LCAiTmV3IElTQyBjb25maWd1cmF0 aW9uIGluDQo+PiArcGxhY2VcbiIpOw0KPj4NCj4+ICAgCXJldHVybiAwOw0KPj4gICB9DQo+PiBA QCAtMTM4Miw3ICsxNDQ5LDcgQEAgc3RhdGljIGludCBpc2NfdHJ5X2ZtdF92aWRfY2FwKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkDQo+PiAqcHJpdiwgIHsNCj4+ICAgCXN0cnVjdCBpc2NfZGV2aWNl ICppc2MgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KPj4NCj4+IC0JcmV0dXJuIGlzY190cnlfZm10 KGlzYywgZiwgTlVMTCwgTlVMTCk7DQo+PiArCXJldHVybiBpc2NfdHJ5X2ZtdChpc2MsIGYsIE5V TEwpOw0KPj4gICB9DQo+Pg0KPj4gICBzdGF0aWMgaW50IGlzY19lbnVtX2lucHV0KHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpwcml2LCBAQCAtMTQzMSwyNyArMTQ5OCwzMQ0KPj4gQEAgc3RhdGlj IGludCBpc2NfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwNCj4+ ICAgCQkJICAgICAgIHN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSkgIHsNCj4+ICAgCXN0 cnVjdCBpc2NfZGV2aWNlICppc2MgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KPj4gLQljb25zdCBz dHJ1Y3QgaXNjX2Zvcm1hdCAqaXNjX2ZtdDsNCj4+ICAgCXN0cnVjdCB2NGwyX3N1YmRldl9mcmFt ZV9zaXplX2VudW0gZnNlID0gew0KPj4gICAJCS5pbmRleCA9IGZzaXplLT5pbmRleCwNCj4+ICAg CQkud2hpY2ggPSBWNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFLA0KPj4gICAJfTsNCj4+IC0JaW50 IHJldDsNCj4+ICsJaW50IHJldCA9IC1FSU5WQUw7DQo+PiArCWludCBpOw0KPj4NCj4+IC0JaXNj X2ZtdCA9IGZpbmRfZm9ybWF0X2J5X2ZvdXJjYyhpc2MsIGZzaXplLT5waXhlbF9mb3JtYXQpOw0K Pj4gLQlpZiAoIWlzY19mbXQpDQo+PiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJZm9yIChpID0g MDsgaSA8IGlzYy0+bnVtX3VzZXJfZm9ybWF0czsgaSsrKQ0KPj4gKwkJaWYgKGlzYy0+dXNlcl9m b3JtYXRzW2ldLT5mb3VyY2MgPT0gZnNpemUtPnBpeGVsX2Zvcm1hdCkNCj4+ICsJCQlyZXQgPSAw Ow0KPj4NCj4+IC0JaWYgKHNlbnNvcl9pc19wcmVmZXJyZWQoaXNjX2ZtdCkpDQo+PiAtCQlmc2Uu Y29kZSA9IGlzY19mbXQtPm1idXNfY29kZTsNCj4+IC0JZWxzZQ0KPj4gLQkJZnNlLmNvZGUgPSBp c2MtPnJhd19mbXQtPm1idXNfY29kZTsNCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo Y29udHJvbGxlcl9mb3JtYXRzKTsgaSsrKQ0KPj4gKwkJaWYgKGNvbnRyb2xsZXJfZm9ybWF0c1tp XS5mb3VyY2MgPT0gZnNpemUtPnBpeGVsX2Zvcm1hdCkNCj4+ICsJCQlyZXQgPSAwOw0KPj4gKw0K Pj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAgIAlyZXQgPSB2NGwyX3N1 YmRldl9jYWxsKGlzYy0+Y3VycmVudF9zdWJkZXYtPnNkLCBwYWQsDQo+PiBlbnVtX2ZyYW1lX3Np emUsDQo+PiAgIAkJCSAgICAgICBOVUxMLCAmZnNlKTsNCj4+ICAgCWlmIChyZXQpDQo+PiAgIAkJ cmV0dXJuIHJldDsNCj4+DQo+PiArCWZzZS5jb2RlID0gaXNjLT5jb25maWcuc2RfZm9ybWF0LT5t YnVzX2NvZGU7DQo+PiArDQo+PiAgIAlmc2l6ZS0+dHlwZSA9IFY0TDJfRlJNU0laRV9UWVBFX0RJ U0NSRVRFOw0KPj4gICAJZnNpemUtPmRpc2NyZXRlLndpZHRoID0gZnNlLm1heF93aWR0aDsNCj4+ ICAgCWZzaXplLT5kaXNjcmV0ZS5oZWlnaHQgPSBmc2UubWF4X2hlaWdodDsgQEAgLTE0NjMsMjkg KzE1MzQsMzIgQEANCj4+IHN0YXRpYyBpbnQgaXNjX2VudW1fZnJhbWVpbnRlcnZhbHMoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKmZoLA0KPj4gICAJCQkJICAgIHN0cnVjdCB2NGwyX2ZybWl2YWxl bnVtICpmaXZhbCkgIHsNCj4+ICAgCXN0cnVjdCBpc2NfZGV2aWNlICppc2MgPSB2aWRlb19kcnZk YXRhKGZpbGUpOw0KPj4gLQljb25zdCBzdHJ1Y3QgaXNjX2Zvcm1hdCAqaXNjX2ZtdDsNCj4+ICAg CXN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9pbnRlcnZhbF9lbnVtIGZpZSA9IHsNCj4+ICAgCQku aW5kZXggPSBmaXZhbC0+aW5kZXgsDQo+PiAgIAkJLndpZHRoID0gZml2YWwtPndpZHRoLA0KPj4g ICAJCS5oZWlnaHQgPSBmaXZhbC0+aGVpZ2h0LA0KPj4gICAJCS53aGljaCA9IFY0TDJfU1VCREVW X0ZPUk1BVF9BQ1RJVkUsDQo+PiAgIAl9Ow0KPj4gLQlpbnQgcmV0Ow0KPj4gKwlpbnQgcmV0ID0g LUVJTlZBTDsNCj4+ICsJaW50IGk7DQo+Pg0KPj4gLQlpc2NfZm10ID0gZmluZF9mb3JtYXRfYnlf Zm91cmNjKGlzYywgZml2YWwtPnBpeGVsX2Zvcm1hdCk7DQo+PiAtCWlmICghaXNjX2ZtdCkNCj4+ IC0JCXJldHVybiAtRUlOVkFMOw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgaXNjLT5udW1fdXNlcl9m b3JtYXRzOyBpKyspDQo+PiArCQlpZiAoaXNjLT51c2VyX2Zvcm1hdHNbaV0tPmZvdXJjYyA9PSBm aXZhbC0+cGl4ZWxfZm9ybWF0KQ0KPj4gKwkJCXJldCA9IDA7DQo+Pg0KPj4gLQlpZiAoc2Vuc29y X2lzX3ByZWZlcnJlZChpc2NfZm10KSkNCj4+IC0JCWZpZS5jb2RlID0gaXNjX2ZtdC0+bWJ1c19j b2RlOw0KPj4gLQllbHNlDQo+PiAtCQlmaWUuY29kZSA9IGlzYy0+cmF3X2ZtdC0+bWJ1c19jb2Rl Ow0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb250cm9sbGVyX2Zvcm1hdHMpOyBp KyspDQo+PiArCQlpZiAoY29udHJvbGxlcl9mb3JtYXRzW2ldLmZvdXJjYyA9PSBmaXZhbC0+cGl4 ZWxfZm9ybWF0KQ0KPj4gKwkJCXJldCA9IDA7DQo+PiArDQo+PiArCWlmIChyZXQpDQo+PiArCQly ZXR1cm4gcmV0Ow0KPj4NCj4+ICAgCXJldCA9IHY0bDJfc3ViZGV2X2NhbGwoaXNjLT5jdXJyZW50 X3N1YmRldi0+c2QsIHBhZCwNCj4+ICAgCQkJICAgICAgIGVudW1fZnJhbWVfaW50ZXJ2YWwsIE5V TEwsICZmaWUpOw0KPj4gICAJaWYgKHJldCkNCj4+ICAgCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICsJ ZmllLmNvZGUgPSBpc2MtPmNvbmZpZy5zZF9mb3JtYXQtPm1idXNfY29kZTsNCj4+ICAgCWZpdmFs LT50eXBlID0gVjRMMl9GUk1JVkFMX1RZUEVfRElTQ1JFVEU7DQo+PiAgIAlmaXZhbC0+ZGlzY3Jl dGUgPSBmaWUuaW50ZXJ2YWw7DQo+Pg0KPj4gQEAgLTE2NjgsNyArMTc0Miw2IEBAIHN0YXRpYyB2 b2lkIGlzY19hd2Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpDQo+PiAgIAlzdHJ1Y3QgaXNj X2RldmljZSAqaXNjID0NCj4+ICAgCQljb250YWluZXJfb2Yodywgc3RydWN0IGlzY19kZXZpY2Us IGF3Yl93b3JrKTsNCj4+ICAgCXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IGlzYy0+cmVnbWFwOw0K Pj4gLQlzdHJ1Y3QgZm10X2NvbmZpZyAqY29uZmlnID0gZ2V0X2ZtdF9jb25maWcoaXNjLT5yYXdf Zm10LT5mb3VyY2MpOw0KPj4gICAJc3RydWN0IGlzY19jdHJscyAqY3RybHMgPSAmaXNjLT5jdHJs czsNCj4+ICAgCXUzMiBoaXN0X2lkID0gY3RybHMtPmhpc3RfaWQ7DQo+PiAgIAl1MzIgYmF5c2Vs Ow0KPj4gQEAgLTE2ODYsNyArMTc1OSw3IEBAIHN0YXRpYyB2b2lkIGlzY19hd2Jfd29yayhzdHJ1 Y3Qgd29ya19zdHJ1Y3QgKncpDQo+PiAgIAl9DQo+Pg0KPj4gICAJY3RybHMtPmhpc3RfaWQgPSBo aXN0X2lkOw0KPj4gLQliYXlzZWwgPSBjb25maWctPmNmYV9iYXljZmcgPDwgSVNDX0hJU19DRkdf QkFZU0VMX1NISUZUOw0KPj4gKwliYXlzZWwgPSBpc2MtPmNvbmZpZy5zZF9mb3JtYXQtPmNmYV9i YXljZmcgPDwNCj4+ICtJU0NfSElTX0NGR19CQVlTRUxfU0hJRlQ7DQo+Pg0KPj4gICAJcG1fcnVu dGltZV9nZXRfc3luYyhpc2MtPmRldik7DQo+Pg0KPj4gQEAgLTE3NTQsNyArMTgyNyw2IEBAIHN0 YXRpYyBpbnQgaXNjX2N0cmxfaW5pdChzdHJ1Y3QgaXNjX2RldmljZSAqaXNjKQ0KPj4gICAJcmV0 dXJuIDA7DQo+PiAgIH0NCj4+DQo+PiAtDQo+PiAgIHN0YXRpYyBpbnQgaXNjX2FzeW5jX2JvdW5k KHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICpub3RpZmllciwNCj4+ICAgCQkJICAgIHN0cnVj dCB2NGwyX3N1YmRldiAqc3ViZGV2LA0KPj4gICAJCQkgICAgc3RydWN0IHY0bDJfYXN5bmNfc3Vi ZGV2ICphc2QpDQo+PiBAQCAtMTgxMiwzNSArMTg4NCwyMCBAQCBzdGF0aWMgaW50IGlzY19mb3Jt YXRzX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYykNCj4+ICAgCQkud2hpY2ggPSBWNEwyX1NV QkRFVl9GT1JNQVRfQUNUSVZFLA0KPj4gICAJfTsNCj4+DQo+PiArCW51bV9mbXRzID0gMDsNCj4+ ICAgCXdoaWxlICghdjRsMl9zdWJkZXZfY2FsbChzdWJkZXYsIHBhZCwgZW51bV9tYnVzX2NvZGUs DQo+PiAgIAkgICAgICAgTlVMTCwgJm1idXNfY29kZSkpIHsNCj4+ICAgCQltYnVzX2NvZGUuaW5k ZXgrKzsNCj4+DQo+PiAgIAkJZm10ID0gZmluZF9mb3JtYXRfYnlfY29kZShtYnVzX2NvZGUuY29k ZSwgJmkpOw0KPj4gLQkJaWYgKCghZm10KSB8fCAoIShmbXQtPmZsYWdzICYgRk1UX0ZMQUdfRlJP TV9TRU5TT1IpKSkNCj4+ICsJCWlmICghZm10KSB7DQo+PiArCQkJdjRsMl93YXJuKCZpc2MtPnY0 bDJfZGV2LCAiTWJ1cyBjb2RlICV4IG5vdA0KPj4gc3VwcG9ydGVkXG4iLA0KPj4gKwkJCQkgIG1i dXNfY29kZS5jb2RlKTsNCj4+ICAgCQkJY29udGludWU7DQo+PiArCQl9DQo+Pg0KPj4gICAJCWZt dC0+c2Rfc3VwcG9ydCA9IHRydWU7DQo+PiAtDQo+PiAtCQlpZiAoZm10LT5mbGFncyAmIEZNVF9G TEFHX1JBV19GT1JNQVQpDQo+PiAtCQkJaXNjLT5yYXdfZm10ID0gZm10Ow0KPj4gLQl9DQo+PiAt DQo+PiAtCWZtdCA9ICZmb3JtYXRzX2xpc3RbMF07DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBsaXN0 X3NpemU7IGkrKykgew0KPj4gLQkJaWYgKGZtdC0+ZmxhZ3MgJiBGTVRfRkxBR19GUk9NX0NPTlRS T0xMRVIpDQo+PiAtCQkJZm10LT5pc2Nfc3VwcG9ydCA9IHRydWU7DQo+PiAtDQo+PiAtCQlmbXQr KzsNCj4+IC0JfQ0KPj4gLQ0KPj4gLQlmbXQgPSAmZm9ybWF0c19saXN0WzBdOw0KPj4gLQludW1f Zm10cyA9IDA7DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBsaXN0X3NpemU7IGkrKykgew0KPj4gLQkJ aWYgKGZtdC0+aXNjX3N1cHBvcnQgfHwgZm10LT5zZF9zdXBwb3J0KQ0KPj4gLQkJCW51bV9mbXRz Kys7DQo+PiAtDQo+PiAtCQlmbXQrKzsNCj4+ICsJCW51bV9mbXRzKys7DQo+PiAgIAl9DQo+Pg0K Pj4gICAJaWYgKCFudW1fZm10cykNCj4+IEBAIC0xODU1LDkgKzE5MTIsOCBAQCBzdGF0aWMgaW50 IGlzY19mb3JtYXRzX2luaXQoc3RydWN0IGlzY19kZXZpY2UgKmlzYykNCj4+DQo+PiAgIAlmbXQg PSAmZm9ybWF0c19saXN0WzBdOw0KPj4gICAJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsaXN0X3Np emU7IGkrKykgew0KPj4gLQkJaWYgKGZtdC0+aXNjX3N1cHBvcnQgfHwgZm10LT5zZF9zdXBwb3J0 KQ0KPj4gKwkJaWYgKGZtdC0+c2Rfc3VwcG9ydCkNCj4+ICAgCQkJaXNjLT51c2VyX2Zvcm1hdHNb aisrXSA9IGZtdDsNCj4+IC0NCj4+ICAgCQlmbXQrKzsNCj4+ICAgCX0NCj4+DQo+PiBAQCAtMTg3 NywxMyArMTkzMywxMSBAQCBzdGF0aWMgaW50IGlzY19zZXRfZGVmYXVsdF9mbXQoc3RydWN0IGlz Y19kZXZpY2UNCj4+ICppc2MpDQo+PiAgIAl9Ow0KPj4gICAJaW50IHJldDsNCj4+DQo+PiAtCXJl dCA9IGlzY190cnlfZm10KGlzYywgJmYsIE5VTEwsIE5VTEwpOw0KPj4gKwlyZXQgPSBpc2NfdHJ5 X2ZtdChpc2MsICZmLCBOVUxMKTsNCj4+ICAgCWlmIChyZXQpDQo+PiAgIAkJcmV0dXJuIHJldDsN Cj4+DQo+PiAtCWlzYy0+Y3VycmVudF9mbXQgPSBpc2MtPnVzZXJfZm9ybWF0c1swXTsNCj4+ICAg CWlzYy0+Zm10ID0gZjsNCj4+IC0NCj4+ICAgCXJldHVybiAwOw0KPj4gICB9DQo+Pg0KPj4gLS0N Cj4+IDIuNy40DQo+IA0KPiBIaSBFdWdlbi9IYW5zLA0KPiANCj4gU29ycnkgZm9yIHRoZSBsYXRl IHJlcGx5IG9uIHRoaXMsIEkgaGFkIHNvbWUgY2hhbmdlcyBJIG5lZWRlZCB0byBkbyB0byBteSBz ZXR1cCB0byBnZXQgaXQgd29ya2luZyB3aXRoIHRoZSBsYXRlc3QgY2hhbmdlcyBpbiB0aGUgbWVk aWEgdHJlZS4gSSBqdXN0IHRlc3RlZCB5b3VyIHYyIGl0ZXJhdGlvbiBoZXJlIEV1Z2VuLCBhbmQg Y29uZmlybWVkLCB5ZXMgaXQgZG9lcyBpbmRlZWQgd29yayB3aXRoIG15IHNldHVwIGFuZCBvYnZp b3VzbHkgbm8gbG9uZ2VyIGdldHMgYSBrZXJuZWwgb29wcyBhcyB3YXMgaGFwcGVuaW5nIGZvciBt ZSBpbiB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgZHJpdmVyLg0KPiANCj4gT25lIHRoaW5n IEkgd291bGQgbGlrZSB0byBjb21tZW50IGFib3V0IG15IHNldHVwLCBpcyB0aGF0IHdoaWxlIGl0 IGlzIGEgWVVWIHR5cGUgZm9ybWF0LCByYXRoZXIgdGhhbiB0aGUgZm9ybWF0IGluIHRoZSBkcml2 ZXIgKFY0TDJfUElYX0ZNVF9ZVVlWKSwgbXkgc2V0dXAgYWN0dWFsbHkgdXNlcyBWNEwyX1BJWF9G TVRfVVlWWS4gSW4gdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIGRyaXZlciwgSSBhY3R1YWxs eSBtYWRlIG1vZGlmaWNhdGlvbnMgaW4gbXkgdHJlZSB0byBzdXBwb3J0IHRoaXMgZm9ybWF0Lg0K PiANCj4gRm9yIHF1aWNrIHRlc3RpbmcgcHVycG9zZXMgb24geW91ciBwYXRjaCBzaW5jZSB0aGUg Zm9ybWF0IHNwZWNpZmljYXRpb24gbWV0aG9kIGhhcyBjaGFuZ2VkLCBJIHNpbXBseSByZXBsYWNl ZCBWNEwyX1BJWF9GTVRfWVVZViBzdGF0ZW1lbnRzIHdpdGggVjRMMl9QSVhfRk1UX1VZVlkgYW5k IE1FRElBX0JVU19GTVRfWVVZVjhfMlg4IHdpdGggTUVESUFfQlVTX0ZNVF9VWVZZOF8yWDguDQo+ IA0KPiBQZXJoYXBzIHRoaXMgYWx0ZXJuYXRpdmUgWVVWIGZvcm1hdCBjb3VsZCBiZSBhZGRlZCB0 byB0aGUgY3VycmVudCBsaXN0IGFzIHdlbGw/IFBlciBteSB0ZXN0LCBhbGwgb2YgdGhlIG90aGVy IHNldHRpbmdzIHlvdSBoYXZlIGFwcGxpZWQgaW4gdGhlIElTQyBmb3IgWVVWIHdvcmsganVzdCBm aW5lIGZvciBteSBzZXR1cCwgSSBhbSBzaW1wbHkgdXNpbmcgYSBkaWZmZXJlbnQgdmFyaWFudCBv ZiB0aGUgWVVWIGZvcm1hdC4gSWYgeW91IGRvbid0IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIHRo aXMgbm93LCBJIGNhbiBjZXJ0YWlubHkgc3VibWl0IGEgZnV0dXJlIHBhdGNoIGFzIHdlbGwuIExl dCBtZSBrbm93IGlmIHRoZXJlIGlzIGFueXRoaW5nIGVsc2UgeW91IHdvdWxkIGxpa2UgbWUgdG8g dGVzdCBmb3IgeW91IGFsc28uDQoNCkhpIEtlbiwNCg0KV2l0aCB0aGlzIGRyaXZlciByZXdvcmtl ZCwgZmlyc3Qgc3RlcCB3YXMgcmV3b3JrIGl0c2VsZiA6IGZpeCBjcmFzaCwgDQpmb3JtYXQgaXNz dWVzLCBldGMuDQpJIHRyaWVkIHRvIGtlZXAgdGhlIHNhbWUgc3VwcG9ydGVkIGZvcm1hdHMuDQpU byBhZGQgYWRkaXRpb25hbCBZVVYgYWx0ZXJuYXRpdmUsIG9uZSBuZWVkcyB0byBqdXN0IGFkZCB0 aGUgc3VwcG9ydGVkIA0KZm9ybWF0cyBpbnNpZGUgdGhlIHN0cnVjdHVyZXMgKGhhdmUgYSBsb29r IGF0IG15IHBhdGNoIDIvMiB3aGljaCBhZGRzIA0KQUJHUiBhbmQgWEJHUikuDQpGZWVsIGZyZWUg dG8gc2VuZCBhIHBhdGNoIG9uIHRvcCBvZiB0aGF0IHdpdGggeW91ciBmb3JtYXQuIEkgd2lsbCBo YXZlIGEgDQpsb29rIGFuZCB0ZXN0IHRoYXQgbm90aGluZyBpcyBicm9rZW4sIGJ1dCBJIGNhbm5v dCBjb25maXJtIGlmIHlvdXIgDQpzcGVjaWZpYyBmb3JtYXQgd29ya3MsIHNpbmNlIEkgZG8gbm90 IGhhdmUgeW91ciBzZW5zb3IuLi4NCg0KVGhlIElTQyBpdHNlbGYgY2Fubm90IG91dHB1dCBhbGwg NCB2YXJpYW50cyBvZiBZVVYsIGJ1dCwgaG93ZXZlciwgY2FuIA0KZHVtcCB0aGUgZm9ybWF0IHRo ZSBzZW5zb3IgaXMgdXNpbmcuIElmIHRoZSBzZW5zb3IgY2xhaW1zIGl0IGNhbiB1c2UgYSANCnNw ZWNpZmljIHJvdGF0aW9uIG9mIFlVViwgd2UgbmVlZCB0byBjb25maWd1cmUgSVNDIHRvIGhhdmUg YSA4Yml0IHJhdyANCmR1bXAsIGFuZCB0aGUgcm90YXRpb24gd2lsbCBiZSBwcmVzZXJ2ZWQgaW4g dGhlIG91dHB1dC4gdjRsIHdpbGwgYWxzbyBiZSANCm5vdGlmaWVkIG9mIHRoZSBjb3JyZWN0IHJv dGF0aW9uIHZpYSBzX2ZtdHMgYW5kIGFsbC4uLg0KDQpUaGFua3MgZm9yIHRlc3RpbmcsDQoNCkV1 Z2VuDQoNCj4gDQo+IFRoYW5rcywNCj4gS2VuIFNsb2F0DQo+IA0KPiANCg==