Received: by 2002:ac0:8c9a:0:0:0:0:0 with SMTP id r26csp1459006ima; Sat, 2 Feb 2019 00:58:55 -0800 (PST) X-Google-Smtp-Source: AHgI3IYKK6ToeajFKkxkwvbjQ9kLvbDuajDarQ7cyXtpyDTNFSS/55p8TFzdbr8ccO5ib6iYWhQ9 X-Received: by 2002:a63:cc12:: with SMTP id x18mr5478838pgf.33.1549097935318; Sat, 02 Feb 2019 00:58:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549097935; cv=none; d=google.com; s=arc-20160816; b=OOWpL+0aopYLAdFQGwcHEeK5sNsifR78QuycZOQLlx05nnhADb59Lwxv1JP4apqGDL SpaWVARUAIBG0BhQVLeKDhJwAgRc3USLUEDUY0vaRbJFnXnMEAsSVaADkbjF9G4cGIjs 8qHJ58KmZqzYGWOabj9zcnv8BLjDF/aLJOMfQZhPv5DKDafq8WuumjEfR4a+zGGoEbnM +nEcdCTB1JDzoD1lB65y9heRWc5CqYMxgVUHHxAQ2iM49N6H9jqUtTdRYvc/sq+UvMi0 77y/AhCFsld4lLhMz2eaMase/6uvdWokV8Iu2geX1byouC/yNfsVgdqWx7Qvr3Gf//7A UD2Q== 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:cc:to:from :dkim-signature; bh=o/vJCv+CtlYwTCsseWAZxKudqJqpb1Cb5VNMkWAzrLI=; b=JR0VBCsWyN9h83msz4+7BJ4W/BKD90TVeTvO8ZT3POW3+0uNdO3ukb4dJ+fDpSpcEH Dd0Yz8kxwV+OSCuJeW2d78CmM24yU68dkE74tldq/+T1r6Cu0dGf78HwEWvCKZ0ep7Bo uZ/fyXWydxBlf3n0Fmrth19YRYUG1WWUc8amr8GIxdIVWFRqjWUY8zjjVH9S4Zs8lGat 19GlzZfIaDzFHC/wcUwg9i+uNlU35kH0qu2nLTZLPSZmclNBTQTZ/hM/O62f1hnzohat RwMWWPr72REF/Su8O3eTxfQsnNLy314E4hXf6M3GtjtIIsgK90X1sIt3Y/c0a1gLxmRV qDhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector1-microchiptechnology-onmicrosoft-com header.b=ou+tHGok; 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 n13si8772203pgp.307.2019.02.02.00.58.39; Sat, 02 Feb 2019 00:58:55 -0800 (PST) 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=ou+tHGok; 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 S1727172AbfBBI6c (ORCPT + 99 others); Sat, 2 Feb 2019 03:58:32 -0500 Received: from esa4.microchip.iphmx.com ([68.232.154.123]:38366 "EHLO esa4.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726711AbfBBI6c (ORCPT ); Sat, 2 Feb 2019 03:58:32 -0500 X-IronPort-AV: E=Sophos;i="5.56,551,1539673200"; d="scan'208";a="25780733" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 02 Feb 2019 01:58:30 -0700 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.76.105) with Microsoft SMTP Server (TLS) id 14.3.352.0; Sat, 2 Feb 2019 01:58:29 -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=o/vJCv+CtlYwTCsseWAZxKudqJqpb1Cb5VNMkWAzrLI=; b=ou+tHGoky+Ll2zFrQw5W03k93qSKrblmCkBfX2GjVooN7RZV+XfpyOV1n/FEkj52D7wWalVXwcjmYZbTenoUYdSBxkOZBzrN8EkfVnCByA9OKXW4SjVPa/JrpbJaXHXYzfj9FyPi2KdouiBQR3RrfGgmWUruveCmDxCWVabgurU= Received: from BN6PR11MB1842.namprd11.prod.outlook.com (10.175.98.146) by BN6PR11MB1233.namprd11.prod.outlook.com (10.173.30.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Sat, 2 Feb 2019 08:58:25 +0000 Received: from BN6PR11MB1842.namprd11.prod.outlook.com ([fe80::847:4296:13b9:fc9f]) by BN6PR11MB1842.namprd11.prod.outlook.com ([fe80::847:4296:13b9:fc9f%8]) with mapi id 15.20.1580.017; Sat, 2 Feb 2019 08:58:25 +0000 From: To: CC: , , , , , , , , , , , , Subject: Re: [PATCH v3 13/13] spi: atmel-quadspi: add support for sam9x60 qspi controller Thread-Topic: [PATCH v3 13/13] spi: atmel-quadspi: add support for sam9x60 qspi controller Thread-Index: AQHUuqzaAg1hhqTy/0qkkFhSooruSKXMHKAAgAAY5oA= Date: Sat, 2 Feb 2019 08:58:25 +0000 Message-ID: <57d4d4b2-e765-1255-0b89-a4fd61f6c1e0@microchip.com> References: <20190202040653.1217-1-tudor.ambarus@microchip.com> <20190202040653.1217-14-tudor.ambarus@microchip.com> <20190202082910.0e60a757@bbrezillon> In-Reply-To: <20190202082910.0e60a757@bbrezillon> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0502CA0003.eurprd05.prod.outlook.com (2603:10a6:803:1::16) To BN6PR11MB1842.namprd11.prod.outlook.com (2603:10b6:404:101::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tudor.Ambarus@microchip.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [188.25.201.137] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BN6PR11MB1233;6:kPJhwBiBcyi904CxNOvyrQKOL9PWkJv92t1beUUymkExT1lwZLphjAuMot+XnVvSgQtzeYUoOjkcSiDmG1JJgfhss6wXaKpoSdZvQx4ahWd5HLde9keK9Xywn9ya/fLRP7A2foSK4f7861yqLOApEDYa1xmeGBOYkCRcOBORHNBjx+avsY9Ce+dqVXWvDVyYFpz7ModVY7Wo1a8RrEOj9CAAVAeFxz4ai/nc/i3k4fkO/oXEqijDXfneunuDAMmky4VDB29iBgFSV5gFMXWTM+lcUqo73wr0yoW+Uz9suJKgDCt2CG/eZLuS5p8WFUuUYSg0cNheNOJksrc9YTYB4xq3gdvNDyNMfFdVkh72CsHoyXhWLdDwpWRUtlMLGAWj6xvJLppYBJAxhn40S7yrFBJXxPckhiOoi8hjoHfjYCUZON2E1m6MpeVLsbXnhw8lIZuhCmHZcH0xAmRE2CKnWw==;5:zgfvtreT3Ril2A5jjz1oPsQtbzgndN7W3JzKfCfjouTD3lOr6EDfdPDD21UbfSohFr9TnfjlITaheO3mSyEvXyO4WViIXn2ZM6oINhSIRwLzUped8HhltA4ncxN6w6tfX6YpCyuw4wXU2FLZTEIjwoc6Biu1669/+QU8uU2q4656sojYkux5kDVZ8IZg0D7jTst625k1gBPwVfbYYRRKRg==;7:sLInfghauzebslXPXOcb0wZX/6ESdvDuFnkknyZXOIMEofD918ElC6w+OXKLJkVNPj866wLNB8j9etHEdR3iHslr0Xp2NjrmKDNjgngyUW9XuLcsVxB86KkIV8druIoT0+WEavC/napwAjUaSNVyag== x-ms-office365-filtering-correlation-id: d7781f3a-e308-4a2e-9432-08d688ec976c x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(2017052603328)(7153060)(7193020);SRVR:BN6PR11MB1233; x-ms-traffictypediagnostic: BN6PR11MB1233: x-microsoft-antispam-prvs: x-forefront-prvs: 09368DB063 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(396003)(136003)(366004)(376002)(199004)(189003)(6512007)(54906003)(25786009)(102836004)(71200400001)(76176011)(31686004)(6916009)(6306002)(6246003)(6506007)(386003)(105586002)(72206003)(53936002)(14444005)(316002)(256004)(36756003)(53546011)(52116002)(97736004)(7416002)(478600001)(71190400001)(6486002)(39060400002)(6116002)(476003)(68736007)(53946003)(2906002)(3846002)(31696002)(66066001)(26005)(11346002)(229853002)(7736002)(186003)(966005)(446003)(486006)(99286004)(2616005)(81166006)(14454004)(305945005)(106356001)(6436002)(30864003)(4326008)(8676002)(86362001)(81156014)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR11MB1233;H:BN6PR11MB1842.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX: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: QASVNvT/noUTCqDS4/mLAlrDpkQWOBibO83TdGO6SBVgxLFqGN3EQGk3hE59OWm2KnAdw+8gSH4DVKgo+4iGbCJmzE3ei4kdXCOoyBFc60YhzyQ83vqzROTdGQwzxU1xyFMchFoaMxth35iHX2bDYlqBpTE3BwPuZ64PiGiO61PEU/kH3Ko/8ZC/DuSw5HY0lWoEo0hKUpAwbLEJnKe95ezRymzXx5M4IBL5fYSTY5iDsA+kSO6INgDcf50svjDZ3LVwPKPkMYMOypxQNvAgdpKq3C1WpklKa/kfBaWU9VpqA6rIQ/Y2vWDv9lw6VF9qcJgcP16AQsFirJAonhzMtQKNz4p+1eE/N6qD4Eb0rFtYPOz6jLn+/HQkRFTuTWhNqSSAPXH/s7ibLCy7KPyetoKJNsiEOYH+gRTKJxgjHgM= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: d7781f3a-e308-4a2e-9432-08d688ec976c X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Feb 2019 08:58:23.1891 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1233 X-OriginatorOrg: microchip.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDAyLzAyLzIwMTkgMDk6MjkgQU0sIEJvcmlzIEJyZXppbGxvbiB3cm90ZToNCj4gT24g U2F0LCAyIEZlYiAyMDE5IDA0OjA3OjQ2ICswMDAwDQo+IDxUdWRvci5BbWJhcnVzQG1pY3JvY2hp cC5jb20+IHdyb3RlOg0KPiANCj4+IEZyb206IFR1ZG9yIEFtYmFydXMgPHR1ZG9yLmFtYmFydXNA bWljcm9jaGlwLmNvbT4NCj4+DQo+PiBUaGUgc2FtOXg2MCBxc3BpIGNvbnRyb2xsZXIgdXNlcyAy IGNsb2Nrcywgb25lIGZvciB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlcg0KPj4gYWNjZXNzLCB0aGUg b3RoZXIgZm9yIHRoZSBxc3BpIGNvcmUgYW5kIHBoeS4gQm90aCBhcmUgbWFuZGF0b3J5LiBJdCB1 c2VzDQo+PiBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSBiaXRzIGluIElGUiByZWdpc3Rlci4gSXQg aGFzIGRlZGljYXRlZCByZWdpc3RlcnMNCj4+IHRvIHNwZWNpZnkgYSByZWFkIG9yIGEgd3JpdGUg aW5zdHJ1Y3Rpb246IFJlYWQgSW5zdHJ1Y3Rpb24gQ29kZSBSZWdpc3Rlcg0KPj4gKFJJQ1IpIGFu ZCBXcml0ZSBJbnN0cnVjdGlvbiBDb2RlIFJlZ2lzdGVyIChXSUNSKS4gSUNSL1JJQ1IvV0lDUiBo YXZlDQo+PiBpZGVudGljYWwgZmllbGRzLg0KPj4NCj4+IFRlc3RlZCB3aXRoIHNzdDI2dmYwNjRi IGplZGVjLHNwaS1ub3IgZmxhc2guIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdGVzdA0KPj4gZG9u ZSBvbiBzYW1hNWQyIHFzcGkgY29udHJvbGxlciBhbmQgbXgyNWwyNTYzNWUgamVkZWMsc3BpLW5v ciBmbGFzaC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBBbWJhcnVzIDx0dWRvci5hbWJh cnVzQG1pY3JvY2hpcC5jb20+DQo+PiAtLS0NCj4+IHYzOg0KPj4gLSByZW9yZ2FuaXplIHRoZSBj b2RlIGFuZCBjaGFuZ2Ugb3BzIGZ1bmN0aW9ucyBwb2ludGVycyB0byBhdm9pZCBjb2RlDQo+PiAg IGR1cGxpY2F0aW9uLiBGcm9tIHRoZSBJUCBwZXJzcGVjdGl2ZSwgdGhlIHRyYW5zZmVyIHR5cGUg Yml0cyBhcmUNCj4+ICAgZGlmZmVyZW50LCBhbmQgd2hhdCByZWdpc3RlcnMgYXJlIHdyaXR0ZW46 IHJpY3Ivd2ljciBpbnN0ZWFkIG9mIGljci4NCj4+IC0gdHJlYXQganVzdCByZWd1bGFyIHNwaSB0 cmFuc2ZlcnMuIE1lbSB0cmFuc2ZlcnMgd2lsbCBiZSBhZGRlZCB0b2dldGhlcg0KPj4gICB3aXRo IGRpcm1hcCBzdXBwb3J0Lg0KPj4gdjI6DQo+PiAtIHJld29yayBjbG9jayBoYW5kbGluZw0KPj4g LSByZW9yZGVyIHNldHRpbmcgb2YgcmVnaXN0ZXIgdmFsdWVzIGluIHNldF9jZmcoKSBjYWxscyAt PiBtb3ZlIGZ1bmN0aW9ucw0KPj4gICB0aGF0IGNhbiBmYWlsIGluIHRoZSB1cHBlciBwYXJ0IG9m IHRoZSBmdW5jdGlvbiBib2R5Lg0KPj4NCj4+ICBkcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMg fCAyOTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4+ICAx IGZpbGUgY2hhbmdlZCwgMjM0IGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQ0KPj4NCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9hdG1lbC1xdWFkc3BpLmMgYi9kcml2ZXJzL3NwaS9h dG1lbC1xdWFkc3BpLmMNCj4+IGluZGV4IGM5NTQ4OTQyNTM1YS4uYWYxZTRlMjUwOTdhIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9zcGkvYXRtZWwtcXVhZHNwaS5jDQo+PiArKysgYi9kcml2ZXJz L3NwaS9hdG1lbC1xdWFkc3BpLmMNCj4+IEBAIC0xOSw2ICsxOSw3IEBADQo+PiAgI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPg0KPj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+ICAjaW5j bHVkZSA8bGludXgvb2YuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCj4+ ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+PiAgI2luY2x1ZGUgPGxpbnV4 L3NwaS9zcGktbWVtLmg+DQo+PiAgDQo+PiBAQCAtMzUsNyArMzYsOSBAQA0KPj4gIA0KPj4gICNk ZWZpbmUgUVNQSV9JQVIgICAgIDB4MDAzMCAgLyogSW5zdHJ1Y3Rpb24gQWRkcmVzcyBSZWdpc3Rl ciAqLw0KPj4gICNkZWZpbmUgUVNQSV9JQ1IgICAgIDB4MDAzNCAgLyogSW5zdHJ1Y3Rpb24gQ29k ZSBSZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgUVNQSV9XSUNSICAgIDB4MDAzNCAgLyogV3JpdGUg SW5zdHJ1Y3Rpb24gQ29kZSBSZWdpc3RlciAqLw0KPj4gICNkZWZpbmUgUVNQSV9JRlIgICAgIDB4 MDAzOCAgLyogSW5zdHJ1Y3Rpb24gRnJhbWUgUmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIFFTUElf UklDUiAgICAweDAwM0MgIC8qIFJlYWQgSW5zdHJ1Y3Rpb24gQ29kZSBSZWdpc3RlciAqLw0KPj4g IA0KPj4gICNkZWZpbmUgUVNQSV9TTVIgICAgIDB4MDA0MCAgLyogU2NyYW1ibGluZyBNb2RlIFJl Z2lzdGVyICovDQo+PiAgI2RlZmluZSBRU1BJX1NLUiAgICAgMHgwMDQ0ICAvKiBTY3JhbWJsaW5n IEtleSBSZWdpc3RlciAqLw0KPj4gQEAgLTg4LDcgKzkxLDcgQEANCj4+ICAjZGVmaW5lIFFTUElf U0NSX0RMWUJTX01BU0sgICAgICAgICAgICAgR0VOTUFTSygyMywgMTYpDQo+PiAgI2RlZmluZSBR U1BJX1NDUl9ETFlCUyhuKSAgICAgICAgICAgICAgICgoKG4pIDw8IDE2KSAmIFFTUElfU0NSX0RM WUJTX01BU0spDQo+PiAgDQo+PiAtLyogQml0ZmllbGRzIGluIFFTUElfSUNSIChJbnN0cnVjdGlv biBDb2RlIFJlZ2lzdGVyKSAqLw0KPj4gKy8qIEJpdGZpZWxkcyBpbiBRU1BJX0lDUiAoUmVhZC9X cml0ZSBJbnN0cnVjdGlvbiBDb2RlIFJlZ2lzdGVyKSAqLw0KPj4gICNkZWZpbmUgUVNQSV9JQ1Jf SU5TVF9NQVNLICAgICAgICAgICAgICBHRU5NQVNLKDcsIDApDQo+PiAgI2RlZmluZSBRU1BJX0lD Ul9JTlNUKGluc3QpICAgICAgICAgICAgICgoKGluc3QpIDw8IDApICYgUVNQSV9JQ1JfSU5TVF9N QVNLKQ0KPj4gICNkZWZpbmUgUVNQSV9JQ1JfT1BUX01BU0sgICAgICAgICAgICAgICBHRU5NQVNL KDIzLCAxNikNCj4+IEBAIC0xMTcsNiArMTIwLDcgQEANCj4+ICAjZGVmaW5lIFFTUElfSUZSX0NS TSAgICAgICAgICAgICAgICAgICAgQklUKDE0KQ0KPj4gICNkZWZpbmUgUVNQSV9JRlJfTkJEVU1f TUFTSyAgICAgICAgICAgICBHRU5NQVNLKDIwLCAxNikNCj4+ICAjZGVmaW5lIFFTUElfSUZSX05C RFVNKG4pICAgICAgICAgICAgICAgKCgobikgPDwgMTYpICYgUVNQSV9JRlJfTkJEVU1fTUFTSykN Cj4+ICsjZGVmaW5lIFFTUElfSUZSX0FQQlRGUlRZUF9SRUFECQlCSVQoMjQpDQo+IA0KPiBNYXli ZSBhZGQgYSBjb21tZW50IHNheWluZyBpdCdzIG9ubHkgYXZhaWxhYmxlIG9uIFNBTTlYNjAgb3Ig cHJlZml4IGl0DQo+IHdpdGggU0FNOVg2MC4NCg0KSSdsbCBhZGQgYSBjb21tZW50LiBUaGUgbWFj cm8gbmFtZSBpcyBtb3JlIGdlbmVyaWMgaG93IGl0IGlzIG5vdyBhbmQgY2FuIGJlIHVzZWQNCmJ5 IGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgSVAuIEh5cG90aGV0aWNhbGx5IHNwZWFraW5nLCBpZiB3 ZSByZW5hbWUgaXQgdG8NClFTUElfSUZSX1NBTTl4NjBfVEZTRlJfUkVBRCBhbmQgb3RoZXIgc2Ft OXggd2lsbCBjb21lIG91dCwgdGhlbiBJJ2xsIGhhdmUgdG8NCnJlbmFtZSB0aGlzIG1hY3JvIGFn YWluLCB0byBtYWtlIGl0IG1vcmUgZ2VuZXJpYy4JDQoNCj4gDQo+PiAgDQo+PiAgLyogQml0Zmll bGRzIGluIFFTUElfU01SIChTY3JhbWJsaW5nIE1vZGUgUmVnaXN0ZXIpICovDQo+PiAgI2RlZmlu ZSBRU1BJX1NNUl9TQ1JFTiAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPj4gQEAgLTEzMywxNiAr MTM3LDM5IEBADQo+PiAgI2RlZmluZSBRU1BJX1dQU1JfV1BWU1JDKHNyYykgICAgICAgICAgICgo KHNyYykgPDwgOCkgJiBRU1BJX1dQU1JfV1BWU1JDKQ0KPj4gIA0KPj4gIA0KPj4gKy8qIERlc2Ny aWJlcyByZWdpc3RlciB2YWx1ZXMuICovDQo+PiArc3RydWN0IGF0bWVsX3FzcGlfY2ZnIHsNCj4+ ICsJdTMyIGljcjsNCj4+ICsJdTMyIGlhcjsNCj4+ICsJdTMyIGlmcjsNCj4+ICt9Ow0KPj4gKw0K Pj4gK3N0cnVjdCBhdG1lbF9xc3BpX2NhcHM7DQo+PiArDQo+PiAgc3RydWN0IGF0bWVsX3FzcGkg ew0KPj4gIAl2b2lkIF9faW9tZW0JCSpyZWdzOw0KPj4gIAl2b2lkIF9faW9tZW0JCSptZW07DQo+ PiAgCXN0cnVjdCBjbGsJCSpwY2xrOw0KPj4gKwlzdHJ1Y3QgY2xrCQkqcXNwaWNrOw0KPj4gIAlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCSpwZGV2Ow0KPj4gKwljb25zdCBzdHJ1Y3QgYXRtZWxfcXNw aV9jYXBzICpjYXBzOw0KPj4gIAl1MzIJCQlwZW5kaW5nOw0KPj4gIAl1MzIJCQlzbW07DQo+PiAg CXN0cnVjdCBjb21wbGV0aW9uCWNtZF9jb21wbGV0aW9uOw0KPj4gIH07DQo+PiAgDQo+PiArc3Ry dWN0IGF0bWVsX3FzcGlfb3BzIHsNCj4+ICsJdm9pZCAoKnNldF90ZnJ0eXApKGNvbnN0IHN0cnVj dCBzcGlfbWVtX29wICpvcCwNCj4+ICsJCQkgICBzdHJ1Y3QgYXRtZWxfcXNwaV9jZmcgKmNmZyk7 DQo+PiArCXZvaWQgKCp3cml0ZV9yZWdzKSh2b2lkIF9faW9tZW0gKmJhc2UsIGNvbnN0IHN0cnVj dCBzcGlfbWVtX29wICpvcCwNCj4+ICsJCQkgICBjb25zdCBzdHJ1Y3QgYXRtZWxfcXNwaV9jZmcg KmNmZyk7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgYXRtZWxfcXNwaV9jYXBzIHsNCj4+ICsJ Y29uc3Qgc3RydWN0IGF0bWVsX3FzcGlfb3BzICpvcHM7DQo+PiArCWJvb2wgaGFzX3FzcGljazsN Cj4+ICt9Ow0KPj4gKw0KPj4gIHN0cnVjdCBhdG1lbF9xc3BpX21vZGUgew0KPj4gIAl1OCBjbWRf YnVzd2lkdGg7DQo+PiAgCXU4IGFkZHJfYnVzd2lkdGg7DQo+PiBAQCAtMjAwLDMwICsyMjcsMzYg QEAgc3RhdGljIGJvb2wgYXRtZWxfcXNwaV9zdXBwb3J0c19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVt LA0KPj4gIAlyZXR1cm4gdHJ1ZTsNCj4+ICB9DQo+PiAgDQo+PiAtc3RhdGljIGludCBhdG1lbF9x c3BpX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3Ag Km9wKQ0KPj4gK3N0YXRpYyBpbnQgYXRtZWxfcXNwaV9zZXRfbW9kZShzdHJ1Y3QgYXRtZWxfcXNw aV9jZmcgKmNmZywNCj4+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQ0K Pj4gIHsNCj4+IC0Jc3RydWN0IGF0bWVsX3FzcGkgKmFxID0gc3BpX2NvbnRyb2xsZXJfZ2V0X2Rl dmRhdGEobWVtLT5zcGktPm1hc3Rlcik7DQo+PiAtCXZvaWQgX19pb21lbSAqYmFzZSA9IGFxLT5y ZWdzOw0KPj4gLQlpbnQgbW9kZTsNCj4+IC0JdTMyIGR1bW15X2N5Y2xlcyA9IDA7DQo+PiAtCXUz MiBpYXIsIGljciwgaWZyLCBzcjsNCj4+IC0JaW50IGVyciA9IDA7DQo+PiAtDQo+PiAtCWlhciA9 IDA7DQo+PiAtCWljciA9IFFTUElfSUNSX0lOU1Qob3AtPmNtZC5vcGNvZGUpOw0KPj4gLQlpZnIg PSBRU1BJX0lGUl9JTlNURU47DQo+PiArCWludCBtb2RlID0gYXRtZWxfcXNwaV9maW5kX21vZGUo b3ApOw0KPj4gIA0KPj4gLQkvKiBTZXQgdGhlIFFTUEkgY29udHJvbGxlciBpbiBTZXJpYWwgTWVt b3J5IE1vZGUgKi8NCj4+IC0JaWYgKGFxLT5zbW0gIT0gUVNQSV9NUl9TTU0pIHsNCj4+IC0JCXdy aXRlbF9yZWxheGVkKFFTUElfTVJfU01NLCBiYXNlICsgUVNQSV9NUik7DQo+PiAtCQlhcS0+c21t ID0gUVNQSV9NUl9TTU07DQo+PiAtCX0NCj4+IC0NCj4+IC0JbW9kZSA9IGF0bWVsX3FzcGlfZmlu ZF9tb2RlKG9wKTsNCj4+ICAJaWYgKG1vZGUgPCAwKQ0KPj4gIAkJcmV0dXJuIG1vZGU7DQo+PiAr CWNmZy0+aWZyID0gc2FtYTVkMl9xc3BpX21vZGVzW21vZGVdLmNvbmZpZzsNCj4gDQo+IExvb2tz IGxpa2UgbW9kZXMgYXJlIHRoZSBzYW1lIGZvciBzYW1hNWQyIGFuZCBzYW05eDYwLCBzbyBtYXli ZSB5b3UNCj4gc2hvdWxkIHJlbmFtZSB0aGUgc2FtYTVkMl9xc3BpX21vZGVzIHZhcmlhYmxlIGlu dG8gc29tZXRoaW5nIG1vcmUNCj4gZ2VuZXJpYy4NCg0Kd2lsbCBkbw0KDQo+IA0KPj4gKwlyZXR1 cm4gMDsNCj4+ICt9DQo+PiAgDQo+PiAtCWlmciB8PSBzYW1hNWQyX3FzcGlfbW9kZXNbbW9kZV0u Y29uZmlnOw0KPj4gKy8qDQo+IA0KPiBLZXJuZWwgZG9jIGhlYWRlcnMgc2hvdWxkIHN0YXJ0cyB3 aXRoIC8qKiwgYnV0IG1heWJlIHlvdSBkaWQgdGhhdCBvbg0KPiBwdXJwb3NlIHRvIGF2b2lkIGhh dmluZyB0aGlzIGhlYWRlciBwYXJzZWQgaW4gY2FzZSBzb21lb25lIGRlY2lkZXMgdG8NCj4gYWRk IHRoaXMgZmlsZSB0byB0aGUgbGlzdCBvZiBmaWxlcyBwYXJzZWQgZm9yIGRvYyBjcmVhdGlvbi4N Cg0KSSdsbCBhZGQgLyoqDQoNCj4gDQo+PiArICogYXRtZWxfcXNwaV9zZXRfYWRkcmVzc19tb2Rl KCkgLSBzZXQgYWRkcmVzcyBtb2RlLg0KPj4gKyAqIEBjZmc6CWNvbnRhaW5zIHJlZ2lzdGVyIHZh bHVlcw0KPj4gKyAqIEBvcDoJCWRlc2NyaWJlcyBhIFNQSSBtZW1vcnkgb3BlcmF0aW9uDQo+PiAr ICoNCj4+ICsgKiBUaGUgY29udHJvbGxlciBhbGxvd3MgMjQgYW5kIDMyLWJpdCBhZGRyZXNzaW5n IHdoaWxlIE5BTkQtZmxhc2ggcmVxdWlyZXMNCj4+ICsgKiAxNi1iaXQgbG9uZy4gSGFuZGxpbmcg OC1iaXQgbG9uZyBhZGRyZXNzZXMgaXMgZG9uZSB1c2luZyB0aGUgb3B0aW9uIGZpZWxkLg0KPj4g KyAqIEZvciB0aGUgMTYtYml0IGFkZHJlc3NlcywgdGhlIHdvcmthcm91bmQgZGVwZW5kcyBvZiB0 aGUgbnVtYmVyIG9mIHJlcXVlc3RlZA0KPj4gKyAqIGR1bW15IGJpdHMuIElmIHRoZXJlIGFyZSA4 IG9yIG1vcmUgZHVtbXkgY3ljbGVzLCB0aGUgYWRkcmVzcyBpcyBzaGlmdGVkIGFuZA0KPj4gKyAq IHNlbnQgd2l0aCB0aGUgZmlyc3QgZHVtbXkgYnl0ZS4gT3RoZXJ3aXNlIG9wY29kZSBpcyBkaXNh YmxlZCBhbmQgdGhlIGZpcnN0DQo+PiArICogYnl0ZSBvZiB0aGUgYWRkcmVzcyBjb250YWlucyB0 aGUgY29tbWFuZCBvcGNvZGUgKHdvcmtzIG9ubHkgaWYgdGhlIG9wY29kZSBhbmQNCj4+ICsgKiBh ZGRyZXNzIHVzZSB0aGUgc2FtZSBidXN3aWR0aCkuIFRoZSBsaW1pdGF0aW9uIGlzIHdoZW4gdGhl IDE2LWJpdCBhZGRyZXNzIGlzDQo+PiArICogdXNlZCB3aXRob3V0IGVub3VnaCBkdW1teSBjeWNs ZXMgYW5kIHRoZSBvcGNvZGUgaXMgdXNpbmcgYSBkaWZmZXJlbnQgYnVzd2lkdGgNCj4+ICsgKiB0 aGFuIHRoZSBhZGRyZXNzLg0KPiANCj4gVGhpcyBjb21tZW50IHdvdWxkIGJldHRlciBiZSBwbGFj ZWQgZGlyZWN0bHkgaW4gdGhlIGZ1bmN0aW9uIGp1c3QNCj4gYmVmb3JlIHRoZSBzd2l0Y2goKSBz dGF0ZW1lbnQuDQoNCm9rDQoNCj4gDQo+PiArICovDQo+PiArc3RhdGljIGludCBhdG1lbF9xc3Bp X3NldF9hZGRyZXNzX21vZGUoc3RydWN0IGF0bWVsX3FzcGlfY2ZnICpjZmcsDQo+PiArCQkJCSAg ICAgICBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApDQo+PiArew0KPj4gKwl1MzIgZHVtbXlf Y3ljbGVzID0gMDsNCj4+ICANCj4+ICAJaWYgKG9wLT5kdW1teS5idXN3aWR0aCAmJiBvcC0+ZHVt bXkubmJ5dGVzKQ0KPj4gIAkJZHVtbXlfY3ljbGVzID0gb3AtPmR1bW15Lm5ieXRlcyAqIDggLyBv cC0+ZHVtbXkuYnVzd2lkdGg7DQo+PiBAQCAtMjMzLDI4ICsyNjYsMjggQEAgc3RhdGljIGludCBh dG1lbF9xc3BpX2V4ZWNfb3Aoc3RydWN0IHNwaV9tZW0gKm1lbSwgY29uc3Qgc3RydWN0IHNwaV9t ZW1fb3AgKm9wKQ0KPj4gIAkJY2FzZSAwOg0KPj4gIAkJCWJyZWFrOw0KPj4gIAkJY2FzZSAxOg0K Pj4gLQkJCWlmciB8PSBRU1BJX0lGUl9PUFRFTiB8IFFTUElfSUZSX09QVExfOEJJVDsNCj4+IC0J CQlpY3IgfD0gUVNQSV9JQ1JfT1BUKG9wLT5hZGRyLnZhbCAmIDB4ZmYpOw0KPj4gKwkJCWNmZy0+ aWZyIHw9IFFTUElfSUZSX09QVEVOIHwgUVNQSV9JRlJfT1BUTF84QklUOw0KPj4gKwkJCWNmZy0+ aWNyID0gUVNQSV9JQ1JfT1BUKG9wLT5hZGRyLnZhbCAmIDB4ZmYpOw0KPj4gIAkJCWJyZWFrOw0K Pj4gIAkJY2FzZSAyOg0KPj4gIAkJCWlmIChkdW1teV9jeWNsZXMgPCA4IC8gb3AtPmFkZHIuYnVz d2lkdGgpIHsNCj4+IC0JCQkJaWZyICY9IH5RU1BJX0lGUl9JTlNURU47DQo+PiAtCQkJCWlmciB8 PSBRU1BJX0lGUl9BRERSRU47DQo+PiAtCQkJCWlhciA9IChvcC0+Y21kLm9wY29kZSA8PCAxNikg fA0KPj4gLQkJCQkJKG9wLT5hZGRyLnZhbCAmIDB4ZmZmZik7DQo+PiArCQkJCWNmZy0+aWZyICY9 IH5RU1BJX0lGUl9JTlNURU47DQo+PiArCQkJCWNmZy0+aWZyIHw9IFFTUElfSUZSX0FERFJFTjsN Cj4+ICsJCQkJY2ZnLT5pYXIgPSAob3AtPmNtZC5vcGNvZGUgPDwgMTYpIHwNCj4+ICsJCQkJCSAg IChvcC0+YWRkci52YWwgJiAweGZmZmYpOw0KPj4gIAkJCX0gZWxzZSB7DQo+PiAtCQkJCWlmciB8 PSBRU1BJX0lGUl9BRERSRU47DQo+PiAtCQkJCWlhciA9IChvcC0+YWRkci52YWwgPDwgOCkgJiAw eGZmZmZmZjsNCj4+ICsJCQkJY2ZnLT5pZnIgfD0gUVNQSV9JRlJfQUREUkVOOw0KPj4gKwkJCQlj ZmctPmlhciA9IChvcC0+YWRkci52YWwgPDwgOCkgJiAweGZmZmZmZjsNCj4+ICAJCQkJZHVtbXlf Y3ljbGVzIC09IDggLyBvcC0+YWRkci5idXN3aWR0aDsNCj4+ICAJCQl9DQo+PiAgCQkJYnJlYWs7 DQo+PiAgCQljYXNlIDM6DQo+PiAtCQkJaWZyIHw9IFFTUElfSUZSX0FERFJFTjsNCj4+IC0JCQlp YXIgPSBvcC0+YWRkci52YWwgJiAweGZmZmZmZjsNCj4+ICsJCQljZmctPmlmciB8PSBRU1BJX0lG Ul9BRERSRU47DQo+PiArCQkJY2ZnLT5pYXIgPSBvcC0+YWRkci52YWwgJiAweGZmZmZmZjsNCj4+ ICAJCQlicmVhazsNCj4+ICAJCWNhc2UgNDoNCj4+IC0JCQlpZnIgfD0gUVNQSV9JRlJfQUREUkVO IHwgUVNQSV9JRlJfQUREUkw7DQo+PiAtCQkJaWFyID0gb3AtPmFkZHIudmFsICYgMHg3ZmZmZmZm Ow0KPj4gKwkJCWNmZy0+aWZyIHw9IFFTUElfSUZSX0FERFJFTiB8IFFTUElfSUZSX0FERFJMOw0K Pj4gKwkJCWNmZy0+aWFyID0gb3AtPmFkZHIudmFsICYgMHg3ZmZmZmZmOw0KPj4gIAkJCWJyZWFr Ow0KPj4gIAkJZGVmYXVsdDoNCj4+ICAJCQlyZXR1cm4gLUVOT1RTVVBQOw0KPj4gQEAgLTI2Mywy MiArMjk2LDk5IEBAIHN0YXRpYyBpbnQgYXRtZWxfcXNwaV9leGVjX29wKHN0cnVjdCBzcGlfbWVt ICptZW0sIGNvbnN0IHN0cnVjdCBzcGlfbWVtX29wICpvcCkNCj4+ICANCj4+ICAJLyogU2V0IG51 bWJlciBvZiBkdW1teSBjeWNsZXMgKi8NCj4+ICAJaWYgKGR1bW15X2N5Y2xlcykNCj4+IC0JCWlm ciB8PSBRU1BJX0lGUl9OQkRVTShkdW1teV9jeWNsZXMpOw0KPj4gKwkJY2ZnLT5pZnIgfD0gUVNQ SV9JRlJfTkJEVU0oZHVtbXlfY3ljbGVzKTsNCj4+ICANCj4+IC0JLyogU2V0IGRhdGEgZW5hYmxl ICovDQo+PiAtCWlmIChvcC0+ZGF0YS5uYnl0ZXMpDQo+PiAtCQlpZnIgfD0gUVNQSV9JRlJfREFU QUVOOw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiAgDQo+PiArc3RhdGljIHZvaWQgYXRtZWxf cXNwaV9zYW1hNWQyX3NldF90ZnJ0eXAoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wLA0KPj4g KwkJCQkJICBzdHJ1Y3QgYXRtZWxfcXNwaV9jZmcgKmNmZykNCj4+ICt7DQo+PiAgCWlmIChvcC0+ ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX09VVCkNCj4+IC0JCWlmciB8PSBRU1BJX0lGUl9TQU1B NUQyX1dSSVRFX1RSU0ZSOw0KPj4gKwkJY2ZnLT5pZnIgfD0gUVNQSV9JRlJfU0FNQTVEMl9XUklU RV9UUlNGUjsNCj4+ICt9DQo+PiAgDQo+PiArc3RhdGljIHZvaWQgYXRtZWxfcXNwaV9zYW1hNWQy X3dyaXRlX3JlZ3Modm9pZCBfX2lvbWVtICpiYXNlLA0KPj4gKwkJCQkJICBjb25zdCBzdHJ1Y3Qg c3BpX21lbV9vcCAqb3AsDQo+PiArCQkJCQkgIGNvbnN0IHN0cnVjdCBhdG1lbF9xc3BpX2NmZyAq Y2ZnKQ0KPj4gK3sNCj4+ICAJLyogQ2xlYXIgcGVuZGluZyBpbnRlcnJ1cHRzICovDQo+PiAgCSh2 b2lkKXJlYWRsX3JlbGF4ZWQoYmFzZSArIFFTUElfU1IpOw0KPj4gIA0KPj4gIAkvKiBTZXQgUVNQ SSBJbnN0cnVjdGlvbiBGcmFtZSByZWdpc3RlcnMgKi8NCj4+IC0Jd3JpdGVsX3JlbGF4ZWQoaWFy LCBiYXNlICsgUVNQSV9JQVIpOw0KPj4gLQl3cml0ZWxfcmVsYXhlZChpY3IsIGJhc2UgKyBRU1BJ X0lDUik7DQo+PiAtCXdyaXRlbF9yZWxheGVkKGlmciwgYmFzZSArIFFTUElfSUZSKTsNCj4+ICsJ d3JpdGVsX3JlbGF4ZWQoY2ZnLT5pYXIsIGJhc2UgKyBRU1BJX0lBUik7DQo+PiArCXdyaXRlbF9y ZWxheGVkKGNmZy0+aWNyLCBiYXNlICsgUVNQSV9JQ1IpOw0KPj4gKwl3cml0ZWxfcmVsYXhlZChj ZmctPmlmciwgYmFzZSArIFFTUElfSUZSKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQg YXRtZWxfcXNwaV9zYW05eDYwX3NldF90ZnJ0eXAoY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9w LA0KPj4gKwkJCQkJICBzdHJ1Y3QgYXRtZWxfcXNwaV9jZmcgKmNmZykNCj4+ICt7DQo+PiArCWlm ICghb3AtPmFkZHIubmJ5dGVzICYmIG9wLT5kYXRhLmRpciA9PSBTUElfTUVNX0RBVEFfSU4pDQo+ PiArCQljZmctPmlmciB8PSBRU1BJX0lGUl9BUEJURlJUWVBfUkVBRDsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIHZvaWQgYXRtZWxfcXNwaV9zYW05eDYwX3dyaXRlX3JlZ3Modm9pZCBfX2lvbWVt ICpiYXNlLA0KPj4gKwkJCQkJICBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3AsDQo+PiArCQkJ CQkgIGNvbnN0IHN0cnVjdCBhdG1lbF9xc3BpX2NmZyAqY2ZnKQ0KPj4gK3sNCj4+ICsJLyogQ2xl YXIgcGVuZGluZyBpbnRlcnJ1cHRzICovDQo+PiArCSh2b2lkKXJlYWRsX3JlbGF4ZWQoYmFzZSAr IFFTUElfU1IpOw0KPj4gKw0KPj4gKwkvKiBTZXQgUVNQSSBJbnN0cnVjdGlvbiBGcmFtZSByZWdp c3RlcnMgKi8NCj4+ICsJd3JpdGVsX3JlbGF4ZWQoY2ZnLT5pYXIsIGJhc2UgKyBRU1BJX0lBUik7 DQo+PiArCWlmIChvcC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRBX0lOKQ0KPj4gKwkJd3JpdGVs X3JlbGF4ZWQoY2ZnLT5pY3IsIGJhc2UgKyBRU1BJX1JJQ1IpOw0KPj4gKwllbHNlDQo+PiArCQl3 cml0ZWxfcmVsYXhlZChjZmctPmljciwgYmFzZSArIFFTUElfSUNSKTsNCj4+ICsJd3JpdGVsX3Jl bGF4ZWQoY2ZnLT5pZnIsIGJhc2UgKyBRU1BJX0lGUik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgYXRtZWxfcXNwaV9zZXRfY2ZnKHN0cnVjdCBhdG1lbF9xc3BpICphcSwNCj4+ICsJCQkg ICAgICBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3AsDQo+PiArCQkJICAgICAgc3RydWN0IGF0 bWVsX3FzcGlfY2ZnICpjZmcpDQo+PiArew0KPj4gKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBhcS0+ cmVnczsNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJLyogU2V0IHRoZSBRU1BJIGNvbnRyb2xs ZXIgaW4gU2VyaWFsIE1lbW9yeSBNb2RlICovDQo+PiArCWlmIChhcS0+c21tICE9IFFTUElfTVJf U01NKSB7DQo+PiArCQl3cml0ZWxfcmVsYXhlZChRU1BJX01SX1NNTSwgYmFzZSArIFFTUElfTVIp Ow0KPiANCj4gCQkJCQkgICAgYXEtPnJlcXMgKw0KPiANCj4gYW5kIHlvdSBjYW4gZ2V0IHJpZCBv ZiBiYXNlLg0KDQpJIHdpbGwgd2FpdCB5b3VyIHJlYXNvbnMgb24gdGhpcywgc2VlIDMvMTMNCg0K PiANCj4+ICsJCWFxLT5zbW0gPSBRU1BJX01SX1NNTTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXQg PSBhdG1lbF9xc3BpX3NldF9tb2RlKGNmZywgb3ApOw0KPj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0 dXJuIHJldDsNCj4+ICsNCj4+ICsJcmV0ID0gYXRtZWxfcXNwaV9zZXRfYWRkcmVzc19tb2RlKGNm Zywgb3ApOw0KPj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsJY2Zn LT5pZnIgfD0gUVNQSV9JRlJfSU5TVEVOOw0KPj4gKwljZmctPmljciB8PSBRU1BJX0lDUl9JTlNU KG9wLT5jbWQub3Bjb2RlKTsNCj4+ICsNCj4+ICsJLyogU2V0IGRhdGEgZW5hYmxlICovDQo+PiAr CWlmIChvcC0+ZGF0YS5uYnl0ZXMpDQo+PiArCQljZmctPmlmciB8PSBRU1BJX0lGUl9EQVRBRU47 DQo+PiArDQo+PiArCWFxLT5jYXBzLT5vcHMtPnNldF90ZnJ0eXAob3AsIGNmZyk7DQo+PiArCWFx LT5jYXBzLT5vcHMtPndyaXRlX3JlZ3MoYmFzZSwgb3AsIGNmZyk7DQo+PiArDQo+PiArCXJldHVy biAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGF0bWVsX3FzcGlfZXhlY19vcChzdHJ1 Y3Qgc3BpX21lbSAqbWVtLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApDQo+PiArew0KPj4g KwlzdHJ1Y3QgYXRtZWxfcXNwaSAqYXEgPSBzcGlfY29udHJvbGxlcl9nZXRfZGV2ZGF0YShtZW0t PnNwaS0+bWFzdGVyKTsNCj4+ICsJdm9pZCBfX2lvbWVtICpiYXNlID0gYXEtPnJlZ3M7DQo+PiAr CXN0cnVjdCBhdG1lbF9xc3BpX2NmZyBjZmcgPSB7MH07DQo+PiArCXUzMiBzcjsNCj4+ICsJaW50 IGVycjsNCj4+ICsNCj4+ICsJZXJyID0gYXRtZWxfcXNwaV9zZXRfY2ZnKGFxLCBvcCwgJmNmZyk7 DQo+PiArCWlmIChlcnIpDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gIA0KPj4gIAkvKiBTa2lwIHRv IHRoZSBmaW5hbCBzdGVwcyBpZiB0aGVyZSBpcyBubyBkYXRhICovDQo+PiAgCWlmIChvcC0+ZGF0 YS5uYnl0ZXMpIHsNCj4+IEBAIC0yODcsMTEgKzM5NywxMSBAQCBzdGF0aWMgaW50IGF0bWVsX3Fz cGlfZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVtLCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAq b3ApDQo+PiAgDQo+PiAgCQkvKiBTZW5kL1JlY2VpdmUgZGF0YSAqLw0KPj4gIAkJaWYgKG9wLT5k YXRhLmRpciA9PSBTUElfTUVNX0RBVEFfSU4pDQo+PiAtCQkJX21lbWNweV9mcm9taW8ob3AtPmRh dGEuYnVmLmluLA0KPj4gLQkJCQlhcS0+bWVtICsgaWFyLCBvcC0+ZGF0YS5uYnl0ZXMpOw0KPj4g KwkJCV9tZW1jcHlfZnJvbWlvKG9wLT5kYXRhLmJ1Zi5pbiwgYXEtPm1lbSArIGNmZy5pYXIsDQo+ PiArCQkJCSAgICAgICBvcC0+ZGF0YS5uYnl0ZXMpOw0KPj4gIAkJZWxzZQ0KPj4gLQkJCV9tZW1j cHlfdG9pbyhhcS0+bWVtICsgaWFyLA0KPj4gLQkJCQlvcC0+ZGF0YS5idWYub3V0LCBvcC0+ZGF0 YS5uYnl0ZXMpOw0KPj4gKwkJCV9tZW1jcHlfdG9pbyhhcS0+bWVtICsgY2ZnLmlhciwgb3AtPmRh dGEuYnVmLm91dCwNCj4+ICsJCQkJICAgICBvcC0+ZGF0YS5uYnl0ZXMpOw0KPj4gIA0KPj4gIAkJ LyogUmVsZWFzZSB0aGUgY2hpcC1zZWxlY3QgKi8NCj4+ICAJCXdyaXRlbF9yZWxheGVkKFFTUElf Q1JfTEFTVFhGRVIsIGJhc2UgKyBRU1BJX0NSKTsNCj4+IEBAIC0zOTEsOSArNTAxLDIyIEBAIHN0 YXRpYyBpbnQgYXRtZWxfcXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K Pj4gIAlzdHJ1Y3Qgc3BpX2NvbnRyb2xsZXIgKmN0cmw7DQo+PiAgCXN0cnVjdCBhdG1lbF9xc3Bp ICphcTsNCj4+ICAJc3RydWN0IHJlc291cmNlICpyZXM7DQo+PiArCWNvbnN0IHN0cnVjdCBhdG1l bF9xc3BpX2NhcHMgKmNhcHM7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 DQo+IA0KPiBJZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhpcyAmcGRldi0+ZGV2IC0+IGRldiBj b252ZXJzaW9uICh3aGljaCBJDQo+IGRvbid0IHRoaW5rIGlzIG5lY2Vzc2FyeSBnaXZlbiB0aGF0 IHdlIGRvbid0IGhhdmUgb3ZlciA4MCBjaGFycyBsaW5lcyksDQo+IHBsZWFzZSBkbyBpdCBpbiBz ZXBhcmF0ZSBwYXRjaC4NCg0KZGl0dG8uIFRoYW5rcyBhZ2FpbiENCnRhDQoNCj4gDQo+PiAgCWlu dCBpcnEsIGVyciA9IDA7DQo+PiAgDQo+PiAtCWN0cmwgPSBzcGlfYWxsb2NfbWFzdGVyKCZwZGV2 LT5kZXYsIHNpemVvZigqYXEpKTsNCj4+ICsJY2FwcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0 YShkZXYpOw0KPj4gKwlpZiAoIWNhcHMpIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiQ291bGQgbm90 IHJldHJpZXZlIFFTUEkgY2Fwc1xuIik7DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0K Pj4gKw0KPj4gKwlpZiAoIWNhcHMtPm9wcy0+c2V0X3RmcnR5cCB8fCAhY2Fwcy0+b3BzLT53cml0 ZV9yZWdzKSB7DQo+PiArCQlkZXZfZXJyKGRldiwgIkNvdWxkIG5vdCByZXRyaWV2ZSBRU1BJIG9w c1xuIik7DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwljdHJsID0g c3BpX2FsbG9jX21hc3RlcihkZXYsIHNpemVvZigqYXEpKTsNCj4+ICAJaWYgKCFjdHJsKQ0KPj4g IAkJcmV0dXJuIC1FTk9NRU07DQo+PiAgDQo+PiBAQCAtNDA5LDMyICs1MzIsMzMgQEAgc3RhdGlj IGludCBhdG1lbF9xc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiAg DQo+PiAgCWluaXRfY29tcGxldGlvbigmYXEtPmNtZF9jb21wbGV0aW9uKTsNCj4+ICAJYXEtPnBk ZXYgPSBwZGV2Ow0KPj4gKwlhcS0+Y2FwcyA9IGNhcHM7DQo+PiAgDQo+PiAgCS8qIE1hcCB0aGUg cmVnaXN0ZXJzICovDQo+PiAgCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRl diwgSU9SRVNPVVJDRV9NRU0sICJxc3BpX2Jhc2UiKTsNCj4+IC0JYXEtPnJlZ3MgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCj4+ICsJYXEtPnJlZ3MgPSBkZXZtX2lv cmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOw0KPj4gIAlpZiAoSVNfRVJSKGFxLT5yZWdzKSkgew0K Pj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAibWlzc2luZyByZWdpc3RlcnNcbiIpOw0KPj4gKwkJ ZGV2X2VycihkZXYsICJtaXNzaW5nIHJlZ2lzdGVyc1xuIik7DQo+PiAgCQllcnIgPSBQVFJfRVJS KGFxLT5yZWdzKTsNCj4+ICAJCWdvdG8gZXhpdDsNCj4+ICAJfQ0KPj4gIA0KPj4gIAkvKiBNYXAg dGhlIEFIQiBtZW1vcnkgKi8NCj4+ICAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFt ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgInFzcGlfbW1hcCIpOw0KPj4gLQlhcS0+bWVtID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQo+PiArCWFxLT5tZW0gPSBkZXZt X2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOw0KPj4gIAlpZiAoSVNfRVJSKGFxLT5tZW0pKSB7 DQo+PiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJtaXNzaW5nIEFIQiBtZW1vcnlcbiIpOw0KPj4g KwkJZGV2X2VycihkZXYsICJtaXNzaW5nIEFIQiBtZW1vcnlcbiIpOw0KPj4gIAkJZXJyID0gUFRS X0VSUihhcS0+bWVtKTsNCj4+ICAJCWdvdG8gZXhpdDsNCj4+ICAJfQ0KPj4gIA0KPj4gIAkvKiBH ZXQgdGhlIHBlcmlwaGVyYWwgY2xvY2sgKi8NCj4+IC0JYXEtPnBjbGsgPSBkZXZtX2Nsa19nZXQo JnBkZXYtPmRldiwgInBjbGsiKTsNCj4+ICsJYXEtPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAi cGNsayIpOw0KPj4gIAlpZiAoSVNfRVJSKGFxLT5wY2xrKSkNCj4+IC0JCWFxLT5wY2xrID0gZGV2 bV9jbGtfZ2V0KCZwZGV2LT5kZXYsIE5VTEwpOw0KPj4gKwkJYXEtPnBjbGsgPSBkZXZtX2Nsa19n ZXQoZGV2LCBOVUxMKTsNCj4+ICANCj4+ICAJaWYgKElTX0VSUihhcS0+cGNsaykpIHsNCj4+IC0J CWRldl9lcnIoJnBkZXYtPmRldiwgIm1pc3NpbmcgcGVyaXBoZXJhbCBjbG9ja1xuIik7DQo+PiAr CQlkZXZfZXJyKGRldiwgIm1pc3NpbmcgcGVyaXBoZXJhbCBjbG9ja1xuIik7DQo+PiAgCQllcnIg PSBQVFJfRVJSKGFxLT5wY2xrKTsNCj4+ICAJCWdvdG8gZXhpdDsNCj4+ICAJfQ0KPj4gQEAgLTQ0 MiwzMiArNTY2LDUyIEBAIHN0YXRpYyBpbnQgYXRtZWxfcXNwaV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPj4gIAkvKiBFbmFibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2sgKi8N Cj4+ICAJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxlKGFxLT5wY2xrKTsNCj4+ICAJaWYgKGVycikg ew0KPj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSB0aGUgcGVyaXBo ZXJhbCBjbG9ja1xuIik7DQo+PiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgdGhl IHBlcmlwaGVyYWwgY2xvY2tcbiIpOw0KPj4gIAkJZ290byBleGl0Ow0KPj4gIAl9DQo+PiAgDQo+ PiArCWlmIChjYXBzLT5oYXNfcXNwaWNrKSB7DQo+PiArCQkvKiBHZXQgdGhlIFFTUEkgc3lzdGVt IGNsb2NrICovDQo+PiArCQlhcS0+cXNwaWNrID0gZGV2bV9jbGtfZ2V0KGRldiwgInFzcGljayIp Ow0KPj4gKwkJaWYgKElTX0VSUihhcS0+cXNwaWNrKSkgew0KPj4gKwkJCWRldl9lcnIoZGV2LCAi bWlzc2luZyBzeXN0ZW0gY2xvY2tcbiIpOw0KPj4gKwkJCWVyciA9IFBUUl9FUlIoYXEtPnFzcGlj ayk7DQo+PiArCQkJZ290byBkaXNhYmxlX3BjbGs7DQo+PiArCQl9DQo+PiArDQo+PiArCQkvKiBF bmFibGUgdGhlIFFTUEkgc3lzdGVtIGNsb2NrICovDQo+PiArCQllcnIgPSBjbGtfcHJlcGFyZV9l bmFibGUoYXEtPnFzcGljayk7DQo+PiArCQlpZiAoZXJyKSB7DQo+PiArCQkJZGV2X2VycihkZXYs DQo+PiArCQkJCSJmYWlsZWQgdG8gZW5hYmxlIHRoZSBRU1BJIHN5c3RlbSBjbG9ja1xuIik7DQo+ PiArCQkJZ290byBkaXNhYmxlX3BjbGs7DQo+PiArCQl9DQo+PiArCX0NCj4+ICsNCj4+ICAJLyog UmVxdWVzdCB0aGUgSVJRICovDQo+PiAgCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7 DQo+PiAgCWlmIChpcnEgPCAwKSB7DQo+PiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJtaXNzaW5n IElSUVxuIik7DQo+PiArCQlkZXZfZXJyKGRldiwgIm1pc3NpbmcgSVJRXG4iKTsNCj4+ICAJCWVy ciA9IGlycTsNCj4+IC0JCWdvdG8gZGlzYWJsZV9wY2xrOw0KPj4gKwkJZ290byBkaXNhYmxlX3Fz cGljazsNCj4+ICAJfQ0KPj4gLQllcnIgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGly cSwgYXRtZWxfcXNwaV9pbnRlcnJ1cHQsDQo+PiAtCQkJICAgICAgIDAsIGRldl9uYW1lKCZwZGV2 LT5kZXYpLCBhcSk7DQo+PiArCWVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEsIGF0bWVs X3FzcGlfaW50ZXJydXB0LCAwLA0KPj4gKwkJCSAgICAgICBkZXZfbmFtZShkZXYpLCBhcSk7DQo+ PiAgCWlmIChlcnIpDQo+PiAtCQlnb3RvIGRpc2FibGVfcGNsazsNCj4+ICsJCWdvdG8gZGlzYWJs ZV9xc3BpY2s7DQo+PiAgDQo+PiAgCWVyciA9IGF0bWVsX3FzcGlfaW5pdChhcSk7DQo+PiAgCWlm IChlcnIpDQo+PiAtCQlnb3RvIGRpc2FibGVfcGNsazsNCj4+ICsJCWdvdG8gZGlzYWJsZV9xc3Bp Y2s7DQo+PiAgDQo+PiAgCWVyciA9IHNwaV9yZWdpc3Rlcl9jb250cm9sbGVyKGN0cmwpOw0KPj4g IAlpZiAoZXJyKQ0KPj4gLQkJZ290byBkaXNhYmxlX3BjbGs7DQo+PiArCQlnb3RvIGRpc2FibGVf cXNwaWNrOw0KPj4gIA0KPj4gIAlyZXR1cm4gMDsNCj4+ICANCj4+ICtkaXNhYmxlX3FzcGljazoN Cj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGFxLT5xc3BpY2spOw0KPj4gIGRpc2FibGVfcGNs azoNCj4+ICAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGFxLT5wY2xrKTsNCj4+ICBleGl0Og0KPj4g QEAgLTQ4Myw2ICs2MjcsNyBAQCBzdGF0aWMgaW50IGF0bWVsX3FzcGlfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiAgDQo+PiAgCXNwaV91bnJlZ2lzdGVyX2NvbnRyb2xs ZXIoY3RybCk7DQo+PiAgCXdyaXRlbF9yZWxheGVkKFFTUElfQ1JfUVNQSURJUywgYXEtPnJlZ3Mg KyBRU1BJX0NSKTsNCj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGFxLT5xc3BpY2spOw0KPj4g IAljbGtfZGlzYWJsZV91bnByZXBhcmUoYXEtPnBjbGspOw0KPj4gIAlyZXR1cm4gMDsNCj4+ICB9 DQo+PiBAQCAtNDkxLDYgKzYzNiw3IEBAIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYXRtZWxf cXNwaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICB7DQo+PiAgCXN0cnVjdCBhdG1l bF9xc3BpICphcSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPj4gIA0KPj4gKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoYXEtPnFzcGljayk7DQo+PiAgCWNsa19kaXNhYmxlX3VucHJlcGFyZShhcS0+ cGNsayk7DQo+PiAgDQo+PiAgCXJldHVybiAwOw0KPj4gQEAgLTUwMSw2ICs2NDcsNyBAQCBzdGF0 aWMgaW50IF9fbWF5YmVfdW51c2VkIGF0bWVsX3FzcGlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4+ICAJc3RydWN0IGF0bWVsX3FzcGkgKmFxID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ PiAgDQo+PiAgCWNsa19wcmVwYXJlX2VuYWJsZShhcS0+cGNsayk7DQo+PiArCWNsa19wcmVwYXJl X2VuYWJsZShhcS0+cXNwaWNrKTsNCj4+ICANCj4+ICAJcmV0dXJuIGF0bWVsX3FzcGlfaW5pdChh cSk7DQo+PiAgfQ0KPj4gQEAgLTUwOCw4ICs2NTUsMzQgQEAgc3RhdGljIGludCBfX21heWJlX3Vu dXNlZCBhdG1lbF9xc3BpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+PiAgc3RhdGljIFNJ TVBMRV9ERVZfUE1fT1BTKGF0bWVsX3FzcGlfcG1fb3BzLCBhdG1lbF9xc3BpX3N1c3BlbmQsDQo+ PiAgCQkJIGF0bWVsX3FzcGlfcmVzdW1lKTsNCj4+ICANCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGF0bWVsX3FzcGlfb3BzIGF0bWVsX3NhbWE1ZDJfcXNwaV9vcHMgPSB7DQo+PiArCS5zZXRfdGZy dHlwID0gYXRtZWxfcXNwaV9zYW1hNWQyX3NldF90ZnJ0eXAsDQo+PiArCS53cml0ZV9yZWdzID0g YXRtZWxfcXNwaV9zYW1hNWQyX3dyaXRlX3JlZ3MsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGF0bWVsX3FzcGlfY2FwcyBhdG1lbF9zYW1hNWQyX3FzcGlfY2FwcyA9IHsN Cj4+ICsJLm9wcyA9ICZhdG1lbF9zYW1hNWQyX3FzcGlfb3BzLA0KPj4gK307DQo+PiArDQo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBhdG1lbF9xc3BpX29wcyBhdG1lbF9zYW05eDYwX3FzcGlfb3Bz ID0gew0KPj4gKwkuc2V0X3RmcnR5cCA9IGF0bWVsX3FzcGlfc2FtOXg2MF9zZXRfdGZydHlwLA0K Pj4gKwkud3JpdGVfcmVncyA9IGF0bWVsX3FzcGlfc2FtOXg2MF93cml0ZV9yZWdzLA0KPj4gK307 DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdG1lbF9xc3BpX2NhcHMgYXRtZWxfc2Ft OXg2MF9xc3BpX2NhcHMgPSB7DQo+PiArCS5vcHMgPSAmYXRtZWxfc2FtOXg2MF9xc3BpX29wcywN Cj4+ICsJLmhhc19xc3BpY2sgPSB0cnVlLA0KPj4gK307DQo+PiArDQo+PiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRtZWxfcXNwaV9kdF9pZHNbXSA9IHsNCj4+IC0JeyAuY29t cGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQyLXFzcGkiIH0sDQo+PiArCXsNCj4+ICsJCS5jb21wYXRp YmxlID0gImF0bWVsLHNhbWE1ZDItcXNwaSIsDQo+PiArCQkuZGF0YSA9ICZhdG1lbF9zYW1hNWQy X3FzcGlfY2FwcywNCj4+ICsJfSwNCj4+ICsJew0KPj4gKwkJLmNvbXBhdGlibGUgPSAibWljcm9j aGlwLHNhbTl4NjAtcXNwaSIsDQo+PiArCQkuZGF0YSA9ICZhdG1lbF9zYW05eDYwX3FzcGlfY2Fw cywNCj4+ICsJfSwNCj4+ICAJeyAvKiBzZW50aW5lbCAqLyB9DQo+PiAgfTsNCj4+ICANCj4gDQo+ IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCj4gTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0DQo+IGh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLw0KPiANCg==