Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp1361168ybc; Tue, 12 Nov 2019 19:47:01 -0800 (PST) X-Google-Smtp-Source: APXvYqzMT0Qa67yFs5PXYOw3d9g182JVV5+Sy++3eqhMq2PDMLh8NcidBHgCGQmvIxC+vNYZ361x X-Received: by 2002:aa7:d05a:: with SMTP id n26mr1315416edo.239.1573616821309; Tue, 12 Nov 2019 19:47:01 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1573616821; cv=pass; d=google.com; s=arc-20160816; b=C/kpXYTQ1EUKrAj2Xs2nqYBLfw1G89SYt3oyDRfyjBNpJrWn8ZpYSmhkK8913rrFQJ xzofa46oRRE1SsNs/uUAhlLHfBTFlAe3ubTTaXVN6TWMKKxbPed07RQlUByAzPn9CvI3 MCAf932JZoEDhRPs+04AZUhgSMm8ajsvMgoFS0pqvIIGjvG4dsShJC7LSFKWfmqPz169 /P3hIZlOMrNC7OxbFS4+kRxX/qpICNGvT5EXJtpRKUZjXH1oPq74NPMncXQRgvBz4HHp U9RsQmntIKtlWFX8TGUm0tisaCLl3VUrCYauhQ9mtX9qYrQESHNeFK2zEIL870UuFd+2 2QXw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=u7UUttTngycrcP0ZnrdHYceNlQLZk24Pq65V/kYdg+8=; b=LwbhFQ4t90gKcY5T9NcmXYF2H9k/mVEEmDg5L+SRF3lpq9FbHAhwGnEOlR6QjzQzDb cGDUQeNtoCYh4K0hOah+DTJxDNx4JYRE9FH45ZiIS1hIileaSrcnPwHZrE7PC2dwJJur Srp3bfeZlfH59FYrWROimxcqDuMRTBaHRZ2lBIok/GK3qvQD1OzdSfYIpHZ+08McCQuZ vlxGU3q/mmrjjzo4W5HkJhdWNloaZm0KF8VKTkuHltYtDGlre8JGHm3aXTla84Y7Ea9Y cqMgj/P7qbVTMzJsKn1LSrHwA7eVWuRJ066VeksxtVNuxqPHFob5niaNUofqN7EtT/D6 VeYQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=qnjZFLxb; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r4si438392edm.100.2019.11.12.19.46.37; Tue, 12 Nov 2019 19:47:01 -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=@nxp.com header.s=selector2 header.b=qnjZFLxb; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727691AbfKMDpY (ORCPT + 99 others); Tue, 12 Nov 2019 22:45:24 -0500 Received: from mail-eopbgr130082.outbound.protection.outlook.com ([40.107.13.82]:20871 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727352AbfKMDpX (ORCPT ); Tue, 12 Nov 2019 22:45:23 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Aj7uZRmfhSmxCzH+PjoFTr7xfwpMVjyqeTgWQeLyayL+tallT1W05knGu5GiFHis9yQoDvCMm5TJezvw6qFRqklmBfbDxrdh85mA/n+/9sClzyi7V87sEYOJmz6BBHYh+OGnMFK4v4M9tnUNjYFXGy2eN0D5TxAr8t1TGmmwJB5uchdoewkErYknbrj1I/4MBjsF3AMr/5czec0o07Pp7+eLkkTEKYRqRUxh62+lRHRakybkUnCMl0bDB4PXU+y1Y+5TMelCrVl5XwjOWnMaeEvjt00LubJHsJxfWhMmzGa4mZ3dxId6chT5GtjGGsTzwuR0MluH+14vJxvgkfOPlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u7UUttTngycrcP0ZnrdHYceNlQLZk24Pq65V/kYdg+8=; b=Ks9DelqArzvCqLXzWsK/8DDDzbMZei6L1Se8N+6h5eEpLr/9KWp6lXrhoqjcZwh9EWkE6RIdjCPibSttEHi6ObzLQ2AQx8Sv9g0bAOj7TXPOFX+oIrM69RPbKhPWFaM2G+MeWDbArvWijdH4UWMbF2xHfNHiVG9Hs3/Mtmbh8CPQIaaKMjprn+LRTVdtOVp9XYcBtT9/bawueYG8zUDLz3LQ/JYH/DX4QUJs/uv9LtaZkE5YSn9wQw6tZPLig9QRkUAzp5U+mWkwxV+tLlz565ofBki07RzH74K1x5CnrJ9wLTj959TWxSYogGv8OPNkebB0EZ0Vyew4m0Lr9JY1HA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u7UUttTngycrcP0ZnrdHYceNlQLZk24Pq65V/kYdg+8=; b=qnjZFLxbbgmgf69AU3UgmHYh4GF2Aawan6IjMPuT5P9Fukpv77PeAV/cyQqm2swgIkViRfeljv7HjG1eC69tAN2a420Dt479/iXu4JZsTjZ7exDsQ3AX4jN2OYDnDOUhbgGSUo9VazVI8a9zI6ks11dSVSIIp6SFQqB+QcEYreY= Received: from VE1PR04MB6496.eurprd04.prod.outlook.com (20.179.232.221) by VE1PR04MB6415.eurprd04.prod.outlook.com (20.179.232.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Wed, 13 Nov 2019 03:45:09 +0000 Received: from VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::7c6e:3d38:6630:5515]) by VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::7c6e:3d38:6630:5515%4]) with mapi id 15.20.2430.028; Wed, 13 Nov 2019 03:45:09 +0000 From: Po Liu To: Ivan Khoronzhuk CC: Claudiu Manoil , "davem@davemloft.net" , "linux-kernel@vger.kernel.org" , "netdev@vger.kernel.org" , "vinicius.gomes@intel.com" , Vladimir Oltean , Alexandru Marginean , Xiaoliang Yang , Roy Zang , Mingkai Hu , Jerry Huang , Leo Li Subject: RE: [EXT] Re: [v2,net-next, 1/2] enetc: Configure the Time-Aware Scheduler via tc-taprio offload Thread-Topic: [EXT] Re: [v2,net-next, 1/2] enetc: Configure the Time-Aware Scheduler via tc-taprio offload Thread-Index: AQHVmTUqXYApGTOw3EOm7mArykD/f6eICKsAgABXyvA= Date: Wed, 13 Nov 2019 03:45:08 +0000 Message-ID: References: <20191111042715.13444-2-Po.Liu@nxp.com> <20191112082823.28998-1-Po.Liu@nxp.com> <20191112210958.GB1833@khorivan> In-Reply-To: <20191112210958.GB1833@khorivan> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=po.liu@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: a204a453-c39d-4593-ddc5-08d767ebe17d x-ms-traffictypediagnostic: VE1PR04MB6415:|VE1PR04MB6415: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0220D4B98D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(136003)(39860400002)(376002)(396003)(366004)(346002)(78114003)(199004)(189003)(13464003)(186003)(52536014)(305945005)(316002)(76116006)(229853002)(7736002)(6916009)(33656002)(99286004)(30864003)(71200400001)(8676002)(71190400001)(478600001)(74316002)(6506007)(66066001)(81166006)(81156014)(4326008)(6436002)(53546011)(7696005)(486006)(14444005)(3846002)(5660300002)(6116002)(76176011)(2906002)(8936002)(11346002)(102836004)(476003)(256004)(55016002)(446003)(26005)(25786009)(86362001)(9686003)(66446008)(66946007)(54906003)(44832011)(14454004)(6246003)(66556008)(66476007)(64756008);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR04MB6415;H:VE1PR04MB6496.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: dbSHJauVTPNHzYDunTfChomHocWAW3bSnF4dcMvzpzW9mfX3UrRoY1eS66svp3EXeHR4STbgX4j3byIbS0PCVzMSnkR+Uysw73iuxrSYk3YQM7ulq1ngFlGHuLI8V9e1Fud9PuA3WhyACpOOMks+Zh12nZXm146NVZhHxaRWArKkPkJyCFWxBgtGP2/t0Zb8keE0ABqd4j03LgpGpQ7/siwTCvt5r+VnqCmXhLFObFk3/RqNoq3refqJZ/q3KVVeLWljKf5HSTEXb1BBsfpnovBzXYJZ5cGMW4D8CONDRIlYSoceyrQMp4/D1il2/ETY+anknfStwQOYScVLrn5k8yrGz4Lb3Ulv9IQ1f83ppuHftW3TMmQmQGKDKNmOC2NL27CxECHnG+QYfLx+yK1oecdyM+q0tzq+KLrrHWAI8ATFdkPpDgfI8vjoC0iYwdvt Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a204a453-c39d-4593-ddc5-08d767ebe17d X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Nov 2019 03:45:08.8265 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: C/TBBrxRRHw6QjAFAIqpEQimFp6s8rDmjHB8iMYrZfjQQI26ptI9fv3T8EhB4tY+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6415 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgSXZhbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJdmFuIEto b3JvbnpodWsgPGl2YW4ua2hvcm9uemh1a0BsaW5hcm8ub3JnPg0KPiBTZW50OiAyMDE5xOoxMdTC MTPI1SA1OjEwDQo+IFRvOiBQbyBMaXUgPHBvLmxpdUBueHAuY29tPg0KPiBDYzogQ2xhdWRpdSBN YW5vaWwgPGNsYXVkaXUubWFub2lsQG54cC5jb20+OyBkYXZlbUBkYXZlbWxvZnQubmV0OyBsaW51 eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZzsgbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsgdmlu aWNpdXMuZ29tZXNAaW50ZWwuY29tOw0KPiBWbGFkaW1pciBPbHRlYW4gPHZsYWRpbWlyLm9sdGVh bkBueHAuY29tPjsgQWxleGFuZHJ1IE1hcmdpbmVhbg0KPiA8YWxleGFuZHJ1Lm1hcmdpbmVhbkBu eHAuY29tPjsgWGlhb2xpYW5nIFlhbmcNCj4gPHhpYW9saWFuZy55YW5nXzFAbnhwLmNvbT47IFJv eSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsgTWluZ2thaSBIdQ0KPiA8bWluZ2thaS5odUBueHAu Y29tPjsgSmVycnkgSHVhbmcgPGplcnJ5Lmh1YW5nQG54cC5jb20+OyBMZW8gTGkNCj4gPGxlb3lh bmcubGlAbnhwLmNvbT4NCj4gU3ViamVjdDogW0VYVF0gUmU6IFt2MixuZXQtbmV4dCwgMS8yXSBl bmV0YzogQ29uZmlndXJlIHRoZSBUaW1lLUF3YXJlIFNjaGVkdWxlcg0KPiB2aWEgdGMtdGFwcmlv IG9mZmxvYWQNCj4gDQo+IENhdXRpb246IEVYVCBFbWFpbA0KPiANCj4gSGVsbG8sDQo+IA0KPiBP biBUdWUsIE5vdiAxMiwgMjAxOSBhdCAwODo0Mjo0OUFNICswMDAwLCBQbyBMaXUgd3JvdGU6DQo+ ID5FTkVUQyBzdXBwb3J0cyBpbiBoYXJkd2FyZSBmb3IgdGltZS1iYXNlZCBlZ3Jlc3Mgc2hhcGlu ZyBhY2NvcmRpbmcgdG8NCj4gPklFRUUgODAyLjFRYnYuIFRoaXMgcGF0Y2ggaW1wbGVtZW50IHRo ZSBRYnYgZW5hYmxlbWVudCBieSB0aGUgaGFyZHdhcmUNCj4gPm9mZmxvYWQgbWV0aG9kIHFkaXNj IHRjLXRhcHJpbyBtZXRob2QuDQo+ID5BbHNvIHVwZGF0ZSBjYmRyIHdyaXRlYmFjayB0byB1cCBs ZXZlbCBzaW5jZSBjb250cm9sIGJkIHJpbmcgbWF5DQo+ID53cml0ZWJhY2sgZGF0YSB0byBjb250 cm9sIGJkIHJpbmcuDQo+ID4NCj4gPlNpZ25lZC1vZmYtYnk6IFBvIExpdSA8UG8uTGl1QG54cC5j b20+DQo+ID5TaWduZWQtb2ZmLWJ5OiBWbGFkaW1pciBPbHRlYW4gPHZsYWRpbWlyLm9sdGVhbkBu eHAuY29tPg0KPiA+U2lnbmVkLW9mZi1ieTogQ2xhdWRpdSBNYW5vaWwgPGNsYXVkaXUubWFub2ls QG54cC5jb20+DQo+ID4tLS0NCj4gPmNoYW5nZXM6DQo+ID4tIGludHJvZHVjZSBhIGxvY2FsIGRl ZmluZSBDT05GSUdfRlNMX0VORVRDX1FPUyB0byBmaXggdGhlIHZhcmlvdXMNCj4gPiAgY29uZmln dXJhdGlvbnMgd2lsbCByZXN1bHQgaW4gbGluayBlcnJvcnMuDQo+ID4gIFNpbmNlIHRoZSBDT05G SUdfTkVUX1NDSF9UQVBSSU8gZGVwZW5kcyBvbiBtYW55IFFvcyBjb25maWdzLiBOb3QNCj4gPiAg dG8gdXNlIGl0IGRpcmVjdGx5IGluIGRyaXZlci4gQWRkIGl0IHRvIENPTkZJR19GU0xfRU5FVENf UU9TIGRlcGVuZHMNCj4gPiAgb24gbGlzdCwgc28gb25seSBDT05GSUdfTkVUX1NDSF9UQVBSSU8g ZW5hYmxlZCwgdXNlciBjYW4gZW5hYmxlIHRoaXMNCj4gPiAgdHNuIGZlYXR1cmUsIG9yIGVsc2Us IHJldHVybiBub3Qgc3VwcG9ydC4NCj4gPg0KPiA+IGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVz Y2FsZS9lbmV0Yy9LY29uZmlnICB8ICAxMCArKw0KPiA+IGRyaXZlcnMvbmV0L2V0aGVybmV0L2Zy ZWVzY2FsZS9lbmV0Yy9NYWtlZmlsZSB8ICAgMSArDQo+ID4gZHJpdmVycy9uZXQvZXRoZXJuZXQv ZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmMgIHwgIDE5ICsrLQ0KPiA+IGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oICB8ICAgNyArDQo+ID4gLi4uL25ldC9ldGhlcm5l dC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfY2Jkci5jIHwgICA1ICstDQo+ID4gLi4uL25ldC9ldGhl cm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfaHcuaCAgIHwgMTUwICsrKysrKysrKysrKysrKyst LQ0KPiA+IC4uLi9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jICB8IDEz MCArKysrKysrKysrKysrKysNCj4gPiA3IGZpbGVzIGNoYW5nZWQsIDMwMCBpbnNlcnRpb25zKCsp LCAyMiBkZWxldGlvbnMoLSkgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gZHJpdmVycy9uZXQvZXRo ZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5jDQo+ID4NCj4gDQo+IFsuLi5dDQo+IA0K PiA+DQo+ID5AQCAtMTQ4Myw2ICsxNDc5LDE5IEBAIGludCBlbmV0Y19zZXR1cF90YyhzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldiwgZW51bQ0KPiB0Y19zZXR1cF90eXBlIHR5cGUsDQo+ID4gICAgICAg cmV0dXJuIDA7DQo+ID4gfQ0KPiA+DQo+ID4raW50IGVuZXRjX3NldHVwX3RjKHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwNCj4gPisgICAgICAgICAgICAg ICAgIHZvaWQgKnR5cGVfZGF0YSkNCj4gPit7DQo+ID4rICAgICAgc3dpdGNoICh0eXBlKSB7DQo+ ID4rICAgICAgY2FzZSBUQ19TRVRVUF9RRElTQ19NUVBSSU86DQo+ID4rICAgICAgICAgICAgICBy ZXR1cm4gZW5ldGNfc2V0dXBfdGNfbXFwcmlvKG5kZXYsIHR5cGVfZGF0YSk7DQo+IFNvcnJ5IGRp ZG4ndCBzZWUgdjIsIHNvIGkgZHVwbGljYXRlIG15IHF1ZXN0aW9uIGhlcmU6DQo+IA0KPiBUaGlz IHBhdGNoIGlzIGZvciB0YXByaW8gb2ZmbG9hZCwgSSBzZWUgdGhhdCBtcXByaW8gaXMgcmVsYXRl ZCBhbmQgaXMgcGFydCBvZiB0YXByaW8NCj4gb2ZmbG9hZCBjb25maWd1cmF0aW9uLiBCdXQgdGFw cmlvIG9mZmxvYWQgaGFzIG93biBtcXByaW8gc2V0dGluZ3MuDQo+IFRoZSB0YXByaW8gbXFwcmlv IHBhcnQgaXMgbm90IG9mZmxvYWRlZCB3aXRoIFRDX1NFVFVQX1FESVNDX01RUFJJTy4NCj4gDQo+ IFNvLCBhIGNvbWJpbmF0aW9uIG9mIG1xcHJpbyBhbmQgdGFyaW8gcWRpc2NzIHVzZWQuDQo+IENv dWxkIHlvdSBwbGVhc2Ugc2hhcmUgdGhlIGNvbW1hbmRzIHdlcmUgdXNlZCBmb3IgeW91ciBzZXR1 cD8NCj4gDQoNCkV4YW1wbGUgY29tbWFuZDogDQp0YyBxZGlzYyByZXBsYWNlIGRldiBldGgwIHBh cmVudCByb290IGhhbmRsZSAxMDAgIHRhcHJpbyBudW1fdGMgOCBtYXAgMCAxIDIgMyA0IDUgNiA3 IHF1ZXVlcyAxQDAgMUAxIDFAMiAxQDMgMUA0IDFANSAxQDYgMUA3IGJhc2UtdGltZSAwMSBzY2hl ZC1lbnRyeSBTIDAyIDMwMDAwMCBmbGFncyAweDINCg0KPiBBbmQgY291cGxlIGludGVyZXN0aW5n IHF1ZXN0aW9ucyBhYm91dCBhbGwgb2YgdGhpczoNCj4gLSBUaGUgdGFwcmlvIHFkaXNjIGhhcyB0 byBoYXZlIG1xcHJpbyBzZXR0aW5ncywgYnV0IGlmIGl0J3MgZG9uZSB3aXRoIG1xcHJpbyB0aGVu DQo+IGl0IGp1c3Qgc2tpcHBlZCAoYnkgcmVhZGluZyB0YyBjbGFzcyBudW0pLg0KPiAtIElmIG5v IHNlcGFyYXRlIG1xcHJpbyBxZGlzYyBjb25maWd1cmF0aW9uIHRoZW4gbXFwcmlvIGNvbmYgZnJv bSB0YXByaW8gaXMgc2V0LA0KPiB3aG8gc2hvdWxkIHJlc3RvcmUgdGMgbWFwcGluZ3Mgd2hlbiB0 YXByaW8gcWRpc2MgaXMgdW5sb2FkZWQ/DQo+IE1heWJlIHRoZXJlIGlzIHJlYXNvbiB0byBpbXBs ZW1lbnQgVENfU0VUVVBfUURJU0NfTVFQUklPIG9mZmxvYWQgaW4NCj4gdGFwcmlvIHNpbmNlIGl0 J3MgcmVxdWlyZWQgZmVhdHVyZT8NCg0KTXFwcmlvIG9mZmxvYWQgd2l0aCBUQ19TRVRVUF9RRElT Q19NUVBSSU8gd291bGQgYmUgZ29vZCBvciBldmVuIHRoZSBwbHVzIHdpdGggbnVtX3RjIHdvdWxk IGZpeCBzb21lIGhhY2suIFRoaXMgaGFzIGEgZGlzY3Vzc2lvbiB3aXRoIFZpbmljaXVzIEdvbWVz IGZvciBhIGZ1dHVyZSBwYXRjaCBmaXguIA0KSSBrbm93IHRoZSBwcm9ibGVtIGlzIHRoZSBtcXBy aW8gd2lsbCBiZSBzZXQgYWZ0ZXIgdGhlIG9mZmxvYWQgZnVuY3Rpb24uIEJ1dCBvZmZsb2FkIGZ1 bmN0aW9uIG1heSB1c2Ugc29tZSBmb3IgaGFyZHdhcmUgc2V0Lg0KDQo+IFdvdWxkIGJlIGJldHRl ciB0byBtb3ZlIGNoYW5nZXMgZm9yIG1xcHJpbyBpbiBzZXBhcmF0ZSBwYXRjaCB3aXRoDQo+IGV4 cGxhbmF0aW9uLg0KPiANCj4gPisgICAgICBjYXNlIFRDX1NFVFVQX1FESVNDX1RBUFJJTzoNCj4g PisgICAgICAgICAgICAgIHJldHVybiBlbmV0Y19zZXR1cF90Y190YXByaW8obmRldiwgdHlwZV9k YXRhKTsNCj4gPisgICAgICBkZWZhdWx0Og0KPiA+KyAgICAgICAgICAgICAgcmV0dXJuIC1FT1BO T1RTVVBQOw0KPiA+KyAgICAgIH0NCj4gPit9DQo+ID4rDQo+IA0KPiBbLi4uXQ0KPiANCj4gPmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcW9z LmMNCj4gPmIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3Fvcy5j DQo+ID5uZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+aW5kZXggMDAwMDAwMDAwMDAwLi4wMzZiYjM5 YzdhMGINCj4gPi0tLSAvZGV2L251bGwNCj4gPisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Zy ZWVzY2FsZS9lbmV0Yy9lbmV0Y19xb3MuYw0KPiANCj4gWy4uLl0NCj4gDQo+ID4rc3RhdGljIGlu dCBlbmV0Y19zZXR1cF90YXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQo+ID4rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1p bl9jb25mKQ0KPiA+K3sNCj4gPisgICAgICBzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0g bmV0ZGV2X3ByaXYobmRldik7DQo+ID4rICAgICAgc3RydWN0IGVuZXRjX2NiZCBjYmQgPSB7LmNt ZCA9IDB9Ow0KPiA+KyAgICAgIHN0cnVjdCB0Z3NfZ2NsX2NvbmYgKmdjbF9jb25maWc7DQo+ID4r ICAgICAgc3RydWN0IHRnc19nY2xfZGF0YSAqZ2NsX2RhdGE7DQo+ID4rICAgICAgc3RydWN0IGdj ZSAqZ2NlOw0KPiA+KyAgICAgIGRtYV9hZGRyX3QgZG1hOw0KPiA+KyAgICAgIHUxNiBkYXRhX3Np emU7DQo+ID4rICAgICAgdTE2IGdjbF9sZW47DQo+ID4rICAgICAgdTMyIHRlbXA7DQo+ID4rICAg ICAgaW50IGk7DQo+ID4rDQo+ID4rICAgICAgZ2NsX2xlbiA9IGFkbWluX2NvbmYtPm51bV9lbnRy aWVzOw0KPiA+KyAgICAgIGlmIChnY2xfbGVuID4gZW5ldGNfZ2V0X21heF9nY2xfbGVuKCZwcml2 LT5zaS0+aHcpKQ0KPiA+KyAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4rDQo+ID4r ICAgICAgaWYgKGFkbWluX2NvbmYtPmVuYWJsZSkgew0KPiA+KyAgICAgICAgICAgICAgZW5ldGNf d3IoJnByaXYtPnNpLT5odywNCj4gPisgICAgICAgICAgICAgICAgICAgICAgIEVORVRDX1FCVl9Q VEdDUl9PRkZTRVQsDQo+ID4rICAgICAgICAgICAgICAgICAgICAgICB0ZW1wICYgKH5FTkVUQ19R QlZfVEdFKSk7DQo+ID4rICAgICAgICAgICAgICB1c2xlZXBfcmFuZ2UoMTAsIDIwKTsNCj4gPisg ICAgICAgICAgICAgIGVuZXRjX3dyKCZwcml2LT5zaS0+aHcsDQo+ID4rICAgICAgICAgICAgICAg ICAgICAgICBFTkVUQ19RQlZfUFRHQ1JfT0ZGU0VULA0KPiA+KyAgICAgICAgICAgICAgICAgICAg ICAgdGVtcCB8IEVORVRDX1FCVl9UR0UpOw0KPiA+KyAgICAgIH0gZWxzZSB7DQo+ID4rICAgICAg ICAgICAgICBlbmV0Y193cigmcHJpdi0+c2ktPmh3LA0KPiA+KyAgICAgICAgICAgICAgICAgICAg ICAgRU5FVENfUUJWX1BUR0NSX09GRlNFVCwNCj4gPisgICAgICAgICAgICAgICAgICAgICAgIHRl bXAgJiAofkVORVRDX1FCVl9UR0UpKTsNCj4gPisgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ KyAgICAgIH0NCj4gDQo+IEJldHRlciBkbyB0aGUgdXBwZXIgcWJ2IGVuYWJsZS9kaXNhYmxlIHBy b2NlZHVyZSBjbG9zZXIgdG8gZW5ldGNfc2VuZF9jbWQoKQ0KPiBvciBhdCBsZWFzdCBhZnRlciBr emFsbG9jIHRoYXQgY2FuIGZhaWwsIG5vIG5lZWQgdG8gcmVzdG9yZSB0aGVuLg0KDQpBZnRlciBz YXZpbmcgdGhlICdpZicgc3VnZ2VzdCBieSBTaW1vbiBIb3JtYW4sIHRoZSBlbmFibGUgcGFydCBj b3VsZCBtb3ZlIGNsb3NlIHRvIHRoZSBjbWQoKS4NCg0KPiANCj4gPisNCj4gPisgICAgICAvKiBD b25maWd1cmUgdGhlIChhZG1pbmlzdHJhdGl2ZSkgZ2F0ZSBjb250cm9sIGxpc3QgdXNpbmcgdGhl DQo+ID4rICAgICAgICogY29udHJvbCBCRCBkZXNjcmlwdG9yLg0KPiA+KyAgICAgICAqLw0KPiA+ KyAgICAgIGdjbF9jb25maWcgPSAmY2JkLmdjbF9jb25mOw0KPiA+Kw0KPiA+KyAgICAgIGRhdGFf c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGdzX2djbF9kYXRhKSArIGdjbF9sZW4gKg0KPiA+KyBzaXpl b2Yoc3RydWN0IGdjZSk7DQo+ID4rDQo+ID4rICAgICAgZ2NsX2RhdGEgPSBremFsbG9jKGRhdGFf c2l6ZSwgX19HRlBfRE1BIHwgR0ZQX0tFUk5FTCk7DQo+ID4rICAgICAgaWYgKCFnY2xfZGF0YSkN Cj4gPisgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+Kw0KPiA+KyAgICAgIGdjZSA9 IChzdHJ1Y3QgZ2NlICopKGdjbF9kYXRhICsgMSk7DQo+ID4rDQo+ID4rICAgICAgLyogU2luY2Ug bm8gaW5pdGlhbCBzdGF0ZSBjb25maWcgaW4gdGFwcmlvLCBzZXQgZ2F0ZXMgb3BlbiBhcyBkZWZh dWx0Lg0KPiA+KyAgICAgICAqLw0KPiB0Yy10YXByaW8gYW5kIElFRUUgUWJ2IGFsbG93cyB0byBj aGFuZ2UgY29uZmlndXJhdGlvbiBpbiBmbGlnaHQsIHNvIHRoYXQgb3Blcg0KPiBzdGF0ZSBpcyBh Y3RpdmUgdGlsbCBuZXcgYWRtaW4gc3RhcnQgdGltZS4gU28sIGhlcmUgY29tbWVudCBzYXlzIGl0 IGRvZXMgaW5pdGlhbA0KPiBzdGF0ZSBjb25maWcsIGlmIGluLWZsaWdodCBmZWF0dXJlIGlzIG5v dCBzdXBwb3J0ZWQgdGhlbiBlcnJvciBoYXMgdG8gYmUgcmV0dXJuZWQNCj4gaW5zdGVhZCBvZiBz aWxlbnRseSByZXdyaXRpbmcgY29uZmlndXJhdGlvbi4gQnV0IGlmIGl0IGNhbiBiZSBpbXBsZW1l bnRlZCB0aGVuDQo+IHN0YXRlIHNob3VsZCBiZSByZW1lbWJlcmVkL3ZlcmlmaWVkIGluIG9yZGVy IHRvIG5vdCBicmFrZSBvcGVyIGNvbmZpZ3VyYXRpb24/DQoNCkkgdGhpbmsgdGhpcyBpcyBvayBh cyBwZXIgc3RhbmRhcmQuIEFsc28gc2VlIHRoaXMgY29tbWVudCBpbg0KbmV0L3NjaGVkL3NjaF90 YXByaW8uYzoNCg0KCS8qIFVudGlsIHRoZSBzY2hlZHVsZSBzdGFydHMsIGFsbCB0aGUgcXVldWVz IGFyZSBvcGVuICovDQpJIHdvdWxkIGNoYW5nZSB0aGUgY29tbWVudC4NCg0KPiA+KyAgICAgIGdj bF9jb25maWctPmF0YyA9IDB4ZmY7DQo+ID4rICAgICAgZ2NsX2NvbmZpZy0+YWNsX2xlbiA9IGNw dV90b19sZTE2KGdjbF9sZW4pOw0KPiANCj4gT2ssIHRoaXMgaXMgbWF4aW11bSBudW1iZXIgb2Yg c2NoZWR1bGVzLg0KPiBBY2NvcmRpbmcgdG8gdGMtdGFwcmlvIGl0J3MgcG9zc2libGUgdG8gc2V0 IGN5Y2xlIHBlcmlvZCBtb3JlIHRoZW4gc2NoZWR1bGVzDQo+IGFjdHVhbGx5IGNhbiBjb25zdW1l LiBJZiBjeWNsZSB0aW1lIGlzIG1vcmUsIHRoZW4gbGFzdCBnYXRlJ3Mgc3RhdGUgY2FuIGJlIGtl cHQNCj4gdGlsbCB0aGUgZW5kIG9mIGN5Y2xlLiBCdXQgaWYgbGFzdCBzY2hlZHVsZSBoYXMgaXQn cyBvd24gaW50ZXJ2YWwgc2V0IHRoZW4gZ2F0ZXMNCj4gc2hvdWxkIGJlIGNsb3NlZCB0aWxsIHRo ZSBlbmQgb2YgY3ljbGUgb3Igbm8/IGlmIGl0IGhhcyB0byBiZSBjbG9zZWQsIHRoZW4gb25lIG1v cmUNCj4gZW5kbCBzY2hlZHVsZSBzaG91bGQgYmUgcHJlc2VudCBjbG9zaW5nIGdhdGVzIGF0IHRo ZSBlbmQgb2YgbGlzdCBmb3IgdGhlIHJlc3QgY3ljbGUNCj4gdGltZS4gQ2FuIGJlIGltcGxlbWVu dGVkIGluIGgvdyBidXQganVzdCB0byBiZSBzdXJlLCBob3cgaXQncyBkb25lIGluIGgvdz8NCj4g DQpUaGVyZSBpcyBhbHJlYWR5IGNoZWNrIHRoZSBsaXN0IGxlbiBpbiB1cCBjb2RlLg0KaWYgKGFk bWluX2NvbmYtPm51bV9lbnRyaWVzID4gZW5ldGNfZ2V0X21heF9nY2xfbGVuKCZwcml2LT5zaS0+ aHcpKQ0KCXJldHVybiAtRUlOVkFMOw0KZ2NsX2xlbiA9IGFkbWluX2NvbmYtPm51bV9lbnRyaWVz OyANCg0KPiA+Kw0KPiA+KyAgICAgIGlmICghYWRtaW5fY29uZi0+YmFzZV90aW1lKSB7DQo+ID4r ICAgICAgICAgICAgICBnY2xfZGF0YS0+YnRsID0NCj4gPisgICAgICAgICAgICAgICAgICAgICAg Y3B1X3RvX2xlMzIoZW5ldGNfcmQoJnByaXYtPnNpLT5odywgRU5FVENfU0lDVFIwKSk7DQo+ID4r ICAgICAgICAgICAgICBnY2xfZGF0YS0+YnRoID0NCj4gPisgICAgICAgICAgICAgICAgICAgICAg Y3B1X3RvX2xlMzIoZW5ldGNfcmQoJnByaXYtPnNpLT5odywgRU5FVENfU0lDVFIxKSk7DQo+ID4r ICAgICAgfSBlbHNlIHsNCj4gPisgICAgICAgICAgICAgIGdjbF9kYXRhLT5idGwgPQ0KPiA+KyAg ICAgICAgICAgICAgICAgICAgICBjcHVfdG9fbGUzMihsb3dlcl8zMl9iaXRzKGFkbWluX2NvbmYt PmJhc2VfdGltZSkpOw0KPiA+KyAgICAgICAgICAgICAgZ2NsX2RhdGEtPmJ0aCA9DQo+ID4rICAg ICAgICAgICAgICAgICAgICAgIGNwdV90b19sZTMyKHVwcGVyXzMyX2JpdHMoYWRtaW5fY29uZi0+ YmFzZV90aW1lKSk7DQo+ID4rICAgICAgfQ0KPiA+Kw0KPiA+KyAgICAgIGdjbF9kYXRhLT5jdCA9 IGNwdV90b19sZTMyKGFkbWluX2NvbmYtPmN5Y2xlX3RpbWUpOw0KPiA+KyAgICAgIGdjbF9kYXRh LT5jdGUgPSBjcHVfdG9fbGUzMihhZG1pbl9jb25mLT5jeWNsZV90aW1lX2V4dGVuc2lvbik7DQo+ IA0KPiBOb3Qgc3VyZSBpdCdzIGdvb2QgaWRlYSB0byB3cml0ZSB2YWx1ZXMgdy9vIHZlcmlmaWNh dGlvbiwgVGhlIGN5Y2xlIHRpbWUgYW5kIHRpbWUNCj4gZXh0ZW5zaW9uIGlzIDY0IHZhbHVlcywg c28gaXQncyBzdXBwb3NlZCB0aGVtIHRvIGJlIG1vcmUgdGhlbiA0LDMgc2Vjb25kcywgaXQncw0K PiBwcm9iYWJseSBub3QgYSBjYXNlLCBidXQgYmV0dGVyIHJldHVybiBlcnJvciBpZiBpdCdzIG1v cmUuDQo+IA0KDQpDYW4gYWRkIGEgY2hlY2sgZm9yIGN5Y2xlIHRpbWUgYW5kIGV4dGVuc2lvbiBz aW5jZSB0eXBlIG5vdCBtYXRjaC4NCiANCj4gPisNCj4gPisgICAgICBmb3IgKGkgPSAwOyBpIDwg Z2NsX2xlbjsgaSsrKSB7DQo+ID4rICAgICAgICAgICAgICBzdHJ1Y3QgdGNfdGFwcmlvX3NjaGVk X2VudHJ5ICp0ZW1wX2VudHJ5Ow0KPiA+KyAgICAgICAgICAgICAgc3RydWN0IGdjZSAqdGVtcF9n Y2UgPSBnY2UgKyBpOw0KPiA+Kw0KPiA+KyAgICAgICAgICAgICAgdGVtcF9lbnRyeSA9ICZhZG1p bl9jb25mLT5lbnRyaWVzW2ldOw0KPiA+Kw0KPiA+KyAgICAgICAgICAgICAgdGVtcF9nY2UtPmdh dGUgPSBjcHVfdG9fbGUzMih0ZW1wX2VudHJ5LT5nYXRlX21hc2spOw0KPiANCj4gU28sIGdhdGVf bWFzayBjYW4gaGF2ZSB1cCB0byAzMiB0cmFmZmljIGNsYXNzZXM/IDotfC4NCg0KR2F0ZV9tYXNr IGlzIGRlZmluZWQgdTMyIHR5cGUuIFNpbW9uIGhhcyBzdWdnZXN0ZWQgZW5kaWFuIGlzc3VlLiBX b3VsZCBjaGFuZ2UgaW4gbmV4dCBwYXRjaC4NCg0KPiANCj4gPisgICAgICAgICAgICAgIHRlbXBf Z2NlLT5wZXJpb2QgPSBjcHVfdG9fbGUzMih0ZW1wX2VudHJ5LT5pbnRlcnZhbCk7DQo+IA0KPiBT bywgdGhlIGludGVydmFsIGNhbiBiZSB1cCB0byA0LjMgc2Vjb25kcyBmb3Igb25lIHNjaGVkdWxl Pw0KPiBUaGF0IGlzLCBvbmUgY3ljbGUgY2FuIGJlIG9uZSBzY2hlZHVsZS4NCj4gZ3JlYXQuDQo+ IA0KPiA+KyAgICAgIH0NCj4gDQo+IFRoZXJlIGlzIG5vIHNjaGVkdWxlIGNtZCBzZXQsIHNvIG9u bHkgU2V0R2F0ZVN0YXRlcyBpcyBzdXBwb3J0ZWQ/DQo+IEJ1dCBhbnl3YXkgaXQncyBPay4NCj4g DQo+ID4rDQo+ID4rICAgICAgY2JkLmxlbmd0aCA9IGNwdV90b19sZTE2KGRhdGFfc2l6ZSk7DQo+ ID4rICAgICAgY2JkLnN0YXR1c19mbGFncyA9IDA7DQo+ID4rDQo+ID4rICAgICAgZG1hID0gZG1h X21hcF9zaW5nbGUoJnByaXYtPnNpLT5wZGV2LT5kZXYsIGdjbF9kYXRhLA0KPiA+KyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSwgRE1BX1RPX0RFVklDRSk7DQo+ID4rICAgICAg aWYgKGRtYV9tYXBwaW5nX2Vycm9yKCZwcml2LT5zaS0+cGRldi0+ZGV2LCBkbWEpKSB7DQo+ID4r ICAgICAgICAgICAgICBuZXRkZXZfZXJyKHByaXYtPnNpLT5uZGV2LCAiRE1BIG1hcHBpbmcgZmFp bGVkIVxuIik7DQo+ID4rICAgICAgICAgICAgICBrZnJlZShnY2xfZGF0YSk7DQo+ID4rICAgICAg ICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPisgICAgICB9DQo+ID4rDQo+ID4rICAgICAgY2Jk LmFkZHJbMF0gPSBsb3dlcl8zMl9iaXRzKGRtYSk7DQo+ID4rICAgICAgY2JkLmFkZHJbMV0gPSB1 cHBlcl8zMl9iaXRzKGRtYSk7DQo+ID4rICAgICAgY2JkLmNscyA9IEJEQ1JfQ01EX1BPUlRfR0NM Ow0KPiA+Kw0KPiA+KyAgICAgIC8qIFVwZGF0ZWQgYnkgRU5FVEMgb24gY29tcGxldGlvbiBvZiB0 aGUgY29uZmlndXJhdGlvbg0KPiA+KyAgICAgICAqIGNvbW1hbmQuIEEgemVybyB2YWx1ZSBpbmRp Y2F0ZXMgc3VjY2Vzcy4NCj4gPisgICAgICAgKi8NCj4gPisgICAgICBjYmQuc3RhdHVzX2ZsYWdz ID0gMDsNCj4gDQo+IEl0J3MgdXBkYXRlZCBvbiBjb21wbGV0aW9uIGJ5IHNldHRpbmcgMCBvbiBz dWNjZXNzLCB0aGVuIHdoeSBpdCdzIGhlcmUgc2V0IHRvIDANCj4gYnV0IG5vdCAxIGFuZCBub3Qg dmVyaWZpZWQgYWZ0ZXJ3YXJkcz8NCj4NCg0KVGhpcyBieXRlIGlzIGZlZWRiYWNrIGJ5IGhhcmR3 YXJlIGFmdGVyIGVuZXRjX3NlbmRfY21kLiBIYXJkd2FyZSByZXF1aXJlIHRoZSBjYmQgc3BhY2Ug c2V0IHN0YXR1c19mbGFncyAwIGJlZm9yZSBzZW5kIHRvIGhhcmR3YXJlLg0KIE5vIGNob2ljZSBv ZiBsYXJnZXIgdGhhbiAwIGJlZm9yZSBzZW5kIHRvIGhhcmR3YXJlLg0KQnV0IHlvdSBtaW5kIG1l IHRoZSBlbmV0Y19zZW5kX2NtZCgpIG5lZWQgdG8gY2hlY2sgcmV0dXJuIHZhbHVlLg0KDQo+ID4r DQo+ID4rICAgICAgZW5ldGNfc2VuZF9jbWQocHJpdi0+c2ksICZjYmQpOw0KPiA+Kw0KPiA+KyAg ICAgIGRtYV91bm1hcF9zaW5nbGUoJnByaXYtPnNpLT5wZGV2LT5kZXYsIGRtYSwgZGF0YV9zaXpl LA0KPiBETUFfVE9fREVWSUNFKTsNCj4gPisgICAgICBrZnJlZShnY2xfZGF0YSk7DQo+ID4rDQo+ ID4rICAgICAgcmV0dXJuIDA7DQo+ID4rfQ0KPiA+Kw0KPiA+K2ludCBlbmV0Y19zZXR1cF90Y190 YXByaW8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnR5cGVfZGF0YSkgew0KPiA+KyAg ICAgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW8gPSB0eXBlX2RhdGE7DQo+ ID4rICAgICAgc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYp Ow0KPiA+KyAgICAgIGludCBpOw0KPiA+Kw0KPiA+KyAgICAgIGZvciAoaSA9IDA7IGkgPCBwcml2 LT5udW1fdHhfcmluZ3M7IGkrKykNCj4gPisgICAgICAgICAgICAgIGVuZXRjX3NldF9iZHJfcHJp bygmcHJpdi0+c2ktPmh3LA0KPiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy aXYtPnR4X3JpbmdbaV0tPmluZGV4LA0KPiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcHJpby0+ZW5hYmxlID8gaSA6IDApOw0KPiANCj4gdGhlbiB3aHkgZW5hYmxlL2Rpc2Fi bGUgYXQgdGhlIGJlZ2lubmluZyBmb3Igd2hvbGUgcWJ2IHNjaGVkdWxlciwgbWF5YmUNCj4gYmV0 dGVyIGRvIGl0IHRvZ2V0aGVyPyBPciBiZXR0ZXIgc2F5LCB3aGF0IGlmIHNldHVwX3RhcHJpbyBm YWlsZWQsIHdobyByZXN0b3JlDQo+IGNvbmZpZ3VyYXRpb24/DQoNCllvdSByZW1pbmQgbWUgdGhl IGVuZXRjX3NlbmRfY21kKCkgbmVlZCB0byBjaGVjayByZXR1cm4gdmFsdWUuDQoNCj4gPisNCj4g PisgICAgICByZXR1cm4gZW5ldGNfc2V0dXBfdGFwcmlvKG5kZXYsIHRhcHJpbyk7IH0NCj4gPi0t DQo+ID4yLjE3LjENCj4gPg0KPiANCj4gLS0NCj4gUmVnYXJkcywNCj4gSXZhbiBLaG9yb256aHVr DQo=