Received: by 10.223.176.5 with SMTP id f5csp1800468wra; Wed, 31 Jan 2018 11:47:46 -0800 (PST) X-Google-Smtp-Source: AH8x227Kr1fCFtQHGAxuDScA+1XC1j8G0SsPxlg+vur0bl5V7X3zzJ8+x81QJtXl/kblS89AZF2B X-Received: by 2002:a17:902:5388:: with SMTP id c8-v6mr28335000pli.91.1517428066141; Wed, 31 Jan 2018 11:47:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517428066; cv=none; d=google.com; s=arc-20160816; b=JqU7rch4y/RE7iNMb/SaMvrub4k6HfJsD/yH/h4S7+UhPPnGC2/IDqNTrp+Hipx1oX LLHzePi+81Eb1Lvgntr4Mv6Auc39Ui/w8W320ZBepygCOT8RYX8LtBGoRgN9Toh7ua2Q 4BYkw47ZdczNVKSqLdJ4S39E4EpFsiQV7CfikEm5oAzXRgFhhSsIO8GBkCspWpnQyaXn QRDHuitGmqaEjorlNPzqixm7CBHtQZX4qGQVOgahJguPjzNYaPSYwFqXI4bDen5Ly9wo 2VehnxxErN1vI0EmgnJkcWCJ3Aj+65b7Y3zkKRGBURo2eDuOmzBzhgZZikJmYRdNlmnM ia2g== 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 :spamdiagnosticmetadata:spamdiagnosticoutput:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=1xe3KbWCj0yHL2RABEtW04BHs0InO8MrQz2O3mIOctU=; b=T36B1SIBlu9ON+Ri/V7vWVugNQRGujxTEf+heGJt3mOk0FQZrWJZXs8EYy/8uR1d1L OR+ONWOA/oyVkcJfK1tFjZUZQO7j6ipTna+LKu9XNV29d5tylw1Cgbigf/YscbHA4iax ItfZ7aDbQhjoj34WL7RkLxqb5T7u+Si/mSEwpOWeOfntWnDjzBD5nGsiF2w2okP/zXbw 6QfFVhizUP3UPKB8UtX89HvKBL0s0eqDn4vB0rOoa0SJq8zcBlvvitxHCPaeTbHa2x1j VVytmMXxmQvCe2JUgSfFSoQu0ig/2g/2CEZ47uxhv85Vg3sKX5RXWxST7+oD9105joE9 Vf5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=nSe4oWNN; 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 y92-v6si4705167plb.137.2018.01.31.11.47.30; Wed, 31 Jan 2018 11:47:46 -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=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=nSe4oWNN; 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 S1751537AbeAaTqg (ORCPT + 99 others); Wed, 31 Jan 2018 14:46:36 -0500 Received: from mail-bl2nam02on0040.outbound.protection.outlook.com ([104.47.38.40]:51456 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751190AbeAaTqe (ORCPT ); Wed, 31 Jan 2018 14:46:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1xe3KbWCj0yHL2RABEtW04BHs0InO8MrQz2O3mIOctU=; b=nSe4oWNN7n9UhL8LfgZJKFG/nsPKfhPCcvCKAslV17jxN9rkSOOqCW8mpGFM6f15geZSBWlcbdfPZrBHE2ALPwAzh4mq6kWQekNwGw8MBjbFcLY+atILYUqDef34pOvVspm7L/Adj3oKrpjKdWGn0e7nig89ZAaCOJipbd8Qoqs= Received: from DM2PR0201MB0767.namprd02.prod.outlook.com (10.160.95.13) by DM2PR0201MB0894.namprd02.prod.outlook.com (10.160.215.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Wed, 31 Jan 2018 19:46:24 +0000 Received: from DM2PR0201MB0767.namprd02.prod.outlook.com ([fe80::5d1e:ad23:462e:4de1]) by DM2PR0201MB0767.namprd02.prod.outlook.com ([fe80::5d1e:ad23:462e:4de1%14]) with mapi id 15.20.0464.012; Wed, 31 Jan 2018 19:46:20 +0000 From: Jolly Shah To: Shubhrajyoti Datta CC: "ard.biesheuvel@linaro.org" , "mingo@kernel.org" , Greg Kroah-Hartman , "matt@codeblueprint.co.uk" , "sudeep.holla@arm.com" , "hkallweit1@gmail.com" , "keescook@chromium.org" , "dmitry.torokhov@gmail.com" , Michal Simek , "Rob Herring" , Mark Rutland , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , Rajan Vaja Subject: RE: [PATCH v3 2/4] drivers: firmware: xilinx: Add ZynqMP firmware driver Thread-Topic: [PATCH v3 2/4] drivers: firmware: xilinx: Add ZynqMP firmware driver Thread-Index: AQHTlWou2XFDSgiaBEabjrwcvuQZWKOL5SsAgAKGXHA= Date: Wed, 31 Jan 2018 19:46:20 +0000 Message-ID: References: <1516836074-4149-1-git-send-email-jollys@xilinx.com> <1516836074-4149-3-git-send-email-jollys@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=JOLLYS@xilinx.com; x-originating-ip: [73.162.184.228] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM2PR0201MB0894;7:40fDIcJt8mZLUwGPmyZopMXKdvYsVcnEJKFTrD4Pjx3vjCGhJSodzXwxrVw3OYgMbGhBng0MTtxsuCHx+UIOY0Ezo7ZAvN3D+Iag/4OuOVg4idve9YAHPYkz46H2SLgBmwyCYhJsfQZY77H0hM0XmpgoH46jW4etu4bBiaxJh9SXVA8A3FhyA9DTs12hEhDhnBHKv65+K558++LdjjxfN0PAp3i5GMxzSxDytAirR96NsbwM3HXNkd/sf2RrD/lr x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI;SCL:-1;SFV:NSPM;SFS:(10009020)(366004)(376002)(39380400002)(346002)(39860400002)(396003)(13464003)(51914003)(43544003)(189003)(199004)(7696005)(25786009)(9686003)(5660300001)(76176011)(97736004)(72206003)(5250100002)(66066001)(14454004)(2900100001)(3846002)(6506007)(6116002)(102836004)(8936002)(478600001)(53546011)(33656002)(53936002)(55016002)(6436002)(3280700002)(68736007)(59450400001)(3660700001)(26005)(2950100002)(6916009)(99286004)(4326008)(2906002)(39060400002)(229853002)(107886003)(6246003)(106356001)(54906003)(8676002)(81166006)(7416002)(81156014)(186003)(316002)(305945005)(7736002)(74316002)(86362001)(105586002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0201MB0894;H:DM2PR0201MB0767.namprd02.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: a9843ef9-e568-4285-7f06-08d568e34d27 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:DM2PR0201MB0894; x-ms-traffictypediagnostic: DM2PR0201MB0894: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(9452136761055)(85827821059158)(258649278758335)(192813158149592); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040501)(2401047)(8121501046)(5005006)(3231101)(2400082)(944501161)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041288)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:DM2PR0201MB0894;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0201MB0894; x-forefront-prvs: 056929CBB8 received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: mGCVAjN2NQn0qiRRzE+Baxzjtv34KIQ4npnw8KSDl9E6fAr8B7X2u3x3xjlIOFXRz90BiUFxUMnEmkWtpEKWlg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9843ef9-e568-4285-7f06-08d568e34d27 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jan 2018 19:46:20.2529 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0201MB0894 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgU2h1YmhyYWp5b3RpLA0KVGhhbmtzIGZvciB0aGUgcmV2aWV3LA0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFNodWJocmFqeW90aSBEYXR0YSBbbWFpbHRvOnNodWJo cmFqeW90aS5kYXR0YUBnbWFpbC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAyOSwgMjAx OCA5OjA2IFBNDQo+IFRvOiBKb2xseSBTaGFoIDxKT0xMWVNAeGlsaW54LmNvbT4NCj4gQ2M6IGFy ZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc7IG1pbmdvQGtlcm5lbC5vcmc7IEdyZWcgS3JvYWgtSGFy dG1hbg0KPiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+OyBtYXR0QGNvZGVibHVlcHJpbnQu Y28udWs7DQo+IHN1ZGVlcC5ob2xsYUBhcm0uY29tOyBoa2FsbHdlaXQxQGdtYWlsLmNvbTsga2Vl c2Nvb2tAY2hyb21pdW0ub3JnOw0KPiBkbWl0cnkudG9yb2tob3ZAZ21haWwuY29tOyBNaWNoYWwg U2ltZWsgPG1pY2hhbC5zaW1la0B4aWxpbnguY29tPjsgUm9iDQo+IEhlcnJpbmcgPHJvYmgrZHRA a2VybmVsLm9yZz47IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+OyBsaW51eC0N Cj4gYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnOw0KPiBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsgSm9sbHkgU2hhaCA8Sk9MTFlT QHhpbGlueC5jb20+OyBSYWphbiBWYWphDQo+IDxSQUpBTlZAeGlsaW54LmNvbT4NCj4gU3ViamVj dDogUmU6IFtQQVRDSCB2MyAyLzRdIGRyaXZlcnM6IGZpcm13YXJlOiB4aWxpbng6IEFkZCBaeW5x TVAgZmlybXdhcmUNCj4gZHJpdmVyDQo+IA0KPiBIaSwNCj4gDQo+IFRoYW5rcyBmb3IgdGhlIHBh dGNoLg0KPiBBIGZldyBxdWVzdGlvbnMgYmVsb3cuDQo+IA0KPiANCj4gT24gVGh1LCBKYW4gMjUs IDIwMTggYXQgNDo1MSBBTSwgSm9sbHkgU2hhaCA8am9sbHkuc2hhaEB4aWxpbnguY29tPiB3cm90 ZToNCj4gPiBUaGlzIHBhdGNoIGlzIGFkZGluZyBjb21tdW5pY2F0aW9uIGxheWVyIHdpdGggZmly bXdhcmUuDQo+ID4gRmlybXdhcmUgZHJpdmVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBmaXJt d2FyZSBBUElzLg0KPiA+IEludGVyZmFjZSBBUElzIGNhbiBiZSB1c2VkIGJ5IGFueSBkcml2ZXIg dG8gY29tbXVuaWNhdGUgdG8NCj4gPiBQTVVGVyhQbGF0Zm9ybSBNYW5hZ2VtZW50IFVuaXQpLiBB bGwgcmVxdWVzdHMgZ28gdGhyb3VnaCBBVEYuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKb2xs eSBTaGFoIDxqb2xseXNAeGlsaW54LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSYWphbiBWYWph IDxyYWphbnZAeGlsaW54LmNvbT4NCj4gPiAtLS0NCj4gPHNuaXA+DQo+ID4NCj4gDQo+ID4gKy8q Kg0KPiA+ICsgKiB6eW5xbXBfcG1fY2xvY2tfZW5hYmxlIC0gRW5hYmxlIHRoZSBjbG9jayBmb3Ig Z2l2ZW4gaWQNCj4gPiArICogQGNsb2NrX2lkOiAgSUQgb2YgdGhlIGNsb2NrIHRvIGJlIGVuYWJs ZWQNCj4gDQo+IERvZXMgaXQgZW5hYmxlIGFsbCB0aGUgcGFyZW50cyBhbHNvIGlmIHRoZXkgYXJl IGRpc2FibGVkPw0KQ3VycmVudCBzb2x1dGlvbiBlbmFibGVzIHNwZWNpZmllZCBjbG9jayBvbmx5 LiBXZSBhcmUgd29ya2luZyBvbiBlbmhhbmNpbmcgdGhlIHNvbHV0aW9uIHRvIHRha2UgY2FyZSBv ZiBvdGhlciBkZXBlbmRlbnQgY2xvY2tzLg0KDQo+IA0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgYnkgbWFzdGVyIHRvIGVuYWJsZSB0aGUgY2xvY2sNCj4gPiArICogaW5j bHVkaW5nIHBlcmlwaGVyYWxzIGFuZCBQTEwgY2xvY2tzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1 cm46ICAgICBSZXR1cm5zIHN0YXR1cywgZWl0aGVyIHN1Y2Nlc3Mgb3IgZXJyb3IrcmVhc29uLg0K PiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6eW5xbXBfcG1fY2xvY2tfZW5hYmxlKHUzMiBjbG9j a19pZCkgew0KPiA+ICsgICAgICAgcmV0dXJuIGludm9rZV9wbV9mbihQTV9DTE9DS19FTkFCTEUs IGNsb2NrX2lkLCAwLCAwLCAwLCBOVUxMKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHp5bnFtcF9wbV9jbG9ja19kaXNhYmxlIC0gRGlzYWJsZSB0aGUgY2xvY2sgZm9yIGdpdmVu IGlkDQo+ID4gKyAqIEBjbG9ja19pZDogIElEIG9mIHRoZSBjbG9jayB0byBiZSBkaXNhYmxlDQo+ ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBtYXN0ZXIgdG8gZGlzYWJs ZSB0aGUgY2xvY2sNCj4gPiArICogaW5jbHVkaW5nIHBlcmlwaGVyYWxzIGFuZCBQTEwgY2xvY2tz Lg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46ICAgICBSZXR1cm5zIHN0YXR1cywgZWl0aGVyIHN1 Y2Nlc3Mgb3IgZXJyb3IrcmVhc29uLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB6eW5xbXBf cG1fY2xvY2tfZGlzYWJsZSh1MzIgY2xvY2tfaWQpIHsNCj4gPiArICAgICAgIHJldHVybiBpbnZv a2VfcG1fZm4oUE1fQ0xPQ0tfRElTQUJMRSwgY2xvY2tfaWQsIDAsIDAsIDAsDQo+ID4gK05VTEwp OyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogenlucW1wX3BtX2Nsb2NrX2dldHN0YXRlIC0g R2V0IHRoZSBjbG9jayBzdGF0ZSBmb3IgZ2l2ZW4gaWQNCj4gPiArICogQGNsb2NrX2lkOiAgSUQg b2YgdGhlIGNsb2NrIHRvIGJlIHF1ZXJpZWQNCj4gPiArICogQHN0YXRlOiAgICAgMS8wIChFbmFi bGVkL0Rpc2FibGVkKQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkg bWFzdGVyIHRvIGdldCB0aGUgc3RhdGUgb2YgY2xvY2sNCj4gPiArICogaW5jbHVkaW5nIHBlcmlw aGVyYWxzIGFuZCBQTEwgY2xvY2tzLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46ICAgICBSZXR1 cm5zIHN0YXR1cywgZWl0aGVyIHN1Y2Nlc3Mgb3IgZXJyb3IrcmVhc29uLg0KPiA+ICsgKi8NCj4g PiArc3RhdGljIGludCB6eW5xbXBfcG1fY2xvY2tfZ2V0c3RhdGUodTMyIGNsb2NrX2lkLCB1MzIg KnN0YXRlKSB7DQo+ID4gKyAgICAgICB1MzIgcmV0X3BheWxvYWRbUEFZTE9BRF9BUkdfQ05UXTsN Cj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gaW52b2tlX3Bt X2ZuKFBNX0NMT0NLX0dFVFNUQVRFLCBjbG9ja19pZCwgMCwgMCwgMCwNCj4gcmV0X3BheWxvYWQp Ow0KPiA+ICsgICAgICAgKnN0YXRlID0gcmV0X3BheWxvYWRbMV07DQo+ID4gKw0KPiA+ICsgICAg ICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHp5bnFtcF9w bV9jbG9ja19zZXRkaXZpZGVyIC0gU2V0IHRoZSBjbG9jayBkaXZpZGVyIGZvciBnaXZlbiBpZA0K PiA+ICsgKiBAY2xvY2tfaWQ6ICBJRCBvZiB0aGUgY2xvY2sNCj4gPiArICogQGRpdl90eXBlOiAg VFlQRV9ESVYxOiBkaXYxDQo+ID4gKyAqICAgICAgICAgICAgIFRZUEVfRElWMjogZGl2Mg0KPiBk aXYgdHlwZSBkaWRudCBzZWUgaW4gdGhlIHNpZ25hdHVyZS4NCg0KDQpXaWxsIGJlIGZpeGVkIGlu IG5leHQgdmVyc2lvbi4NCg0KPiANCj4gDQo+IA0KPiA+ICsgKiBAZGl2aWRlcjogICBkaXZpZGVy IHZhbHVlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgbWFzdGVy IHRvIHNldCBkaXZpZGVyIGZvciBhbnkgY2xvY2sNCj4gPiArICogdG8gYWNoaWV2ZSBkZXNpcmVk IHJhdGUuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogICAgIFJldHVybnMgc3RhdHVzLCBlaXRo ZXIgc3VjY2VzcyBvciBlcnJvcityZWFzb24uDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHp5 bnFtcF9wbV9jbG9ja19zZXRkaXZpZGVyKHUzMiBjbG9ja19pZCwgdTMyIGRpdmlkZXIpIHsNCj4g PiArICAgICAgIHJldHVybiBpbnZva2VfcG1fZm4oUE1fQ0xPQ0tfU0VURElWSURFUiwgY2xvY2tf aWQsIGRpdmlkZXIsIDAsDQo+ID4gKzAsIE5VTEwpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogenlucW1wX3BtX2Nsb2NrX2dldGRpdmlkZXIgLSBHZXQgdGhlIGNsb2NrIGRpdmlkZXIgZm9y IGdpdmVuIGlkDQo+ID4gKyAqIEBjbG9ja19pZDogIElEIG9mIHRoZSBjbG9jaw0KPiA+ICsgKiBA ZGl2X3R5cGU6ICBUWVBFX0RJVjE6IGRpdjENCj4gPiArICogICAgICAgICAgICAgVFlQRV9ESVYy OiBkaXYyDQo+IGRpZG50IHNlZSB0aGlzICBiZWxvdy4NCldpbGwgYmUgZml4ZWQgaW4gbmV4dCB2 ZXJzaW9uLg0KDQoNCj4gDQo+ID4gKyAqIEBkaXZpZGVyOiAgIGRpdmlkZXIgdmFsdWUuDQo+ID4g KyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBtYXN0ZXIgdG8gZ2V0IGRpdmlk ZXIgdmFsdWVzDQo+ID4gKyAqIGZvciBhbnkgY2xvY2suDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVy bjogICAgIFJldHVybnMgc3RhdHVzLCBlaXRoZXIgc3VjY2VzcyBvciBlcnJvcityZWFzb24uDQo+ ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHp5bnFtcF9wbV9jbG9ja19nZXRkaXZpZGVyKHUzMiBj bG9ja19pZCwgdTMyICpkaXZpZGVyKSB7DQo+ID4gKyAgICAgICB1MzIgcmV0X3BheWxvYWRbUEFZ TE9BRF9BUkdfQ05UXTsNCj4gPiArICAgICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgICAg cmV0ID0gaW52b2tlX3BtX2ZuKFBNX0NMT0NLX0dFVERJVklERVIsIGNsb2NrX2lkLCAwLCAwLCAw LA0KPiByZXRfcGF5bG9hZCk7DQo+ID4gKyAgICAgICAqZGl2aWRlciA9IHJldF9wYXlsb2FkWzFd Ow0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiB6eW5xbXBfcG1fY2xvY2tfc2V0cmF0ZSAtIFNldCB0aGUgY2xvY2sgcmF0ZSBm b3IgZ2l2ZW4gaWQNCj4gPiArICogQGNsb2NrX2lkOiAgSUQgb2YgdGhlIGNsb2NrDQo+ID4gKyAq IEByYXRlOiAgICAgIHJhdGUgdmFsdWUgaW4gaHoNCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5j dGlvbiBpcyB1c2VkIGJ5IG1hc3RlciB0byBzZXQgcmF0ZSBmb3IgYW55IGNsb2NrLg0KPiA+ICsg Kg0KPiA+ICsgKiBSZXR1cm46ICAgICBSZXR1cm5zIHN0YXR1cywgZWl0aGVyIHN1Y2Nlc3Mgb3Ig ZXJyb3IrcmVhc29uLg0KPiA+ICsgKi8NCj4gU28gdGhpcyBjYW4gc2V0IHJhdGUgb25seSA0RyBt YXggPw0KTmVlZCB0byBmaXggdGhpcyB0byBoYXZlIHU2NCByYXRlLg0KDQo+IA0KPiA+ICtzdGF0 aWMgaW50IHp5bnFtcF9wbV9jbG9ja19zZXRyYXRlKHUzMiBjbG9ja19pZCwgdTMyIHJhdGUpIHsN Cj4gPiArICAgICAgIHJldHVybiBpbnZva2VfcG1fZm4oUE1fQ0xPQ0tfU0VUUkFURSwgY2xvY2tf aWQsIHJhdGUsIDAsIDAsDQo+ID4gK05VTEwpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog enlucW1wX3BtX2Nsb2NrX2dldHJhdGUgLSBHZXQgdGhlIGNsb2NrIHJhdGUgZm9yIGdpdmVuIGlk DQo+ID4gKyAqIEBjbG9ja19pZDogIElEIG9mIHRoZSBjbG9jaw0KPiA+ICsgKiBAcmF0ZTogICAg ICByYXRlIHZhbHVlIGluIGh6DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCBieSBtYXN0ZXIgdG8gZ2V0IHJhdGUNCj4gPiArICogZm9yIGFueSBjbG9jay4NCj4gPiArICoN Cj4gPiArICogUmV0dXJuOiAgICAgUmV0dXJucyBzdGF0dXMsIGVpdGhlciBzdWNjZXNzIG9yIGVy cm9yK3JlYXNvbi4NCj4gPiArICovDQo+IFNhbWUgcXVlc3Rpb24gaGVyZT8NCk5lZWQgdG8gZml4 IHRoaXMgdG8gaGF2ZSB1NjQgcmF0ZS4NCg0KPiANCj4gPiArc3RhdGljIGludCB6eW5xbXBfcG1f Y2xvY2tfZ2V0cmF0ZSh1MzIgY2xvY2tfaWQsIHUzMiAqcmF0ZSkgew0KPiA+ICsgICAgICAgdTMy IHJldF9wYXlsb2FkW1BBWUxPQURfQVJHX0NOVF07DQo+ID4gKyAgICAgICBpbnQgcmV0Ow0KPiA+ ICsNCj4gPiArICAgICAgIHJldCA9IGludm9rZV9wbV9mbihQTV9DTE9DS19HRVRSQVRFLCBjbG9j a19pZCwgMCwgMCwgMCwgcmV0X3BheWxvYWQpOw0KPiA+ICsgICAgICAgKnJhdGUgPSByZXRfcGF5 bG9hZFsxXTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiBBbHNvICB3aGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2V0IHJhdGUgYW5kIHNldCBk aXZpZGVyPw0KU2V0IHJhdGUgdGFrZXMgcmF0ZSBhcyBpbnB1dCBhbmQgZGl2aWRlcnMgYXJlIGNh bGN1bGF0ZWQgYnkgRlcuIA0KU2V0IGRpdmlkZXIgdGFrZXMgZGl2aWRlcnMgYXMgaW5wdXQgYW5k IHNldHMgdGhlbSBkaXJlY3RseS4NCldpdGggbGludXgsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVz ZSBzZXQgZGl2aWRlciBvbmx5LiBTZXQgcmF0ZSBBUEkgaXMgbWFpbmx5IGZvciBiYXJlbWV0YWwg Y2FzZS4NCg0KDQpUaGFua3MsDQpKb2xseSBTaGFoDQo=