From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x227jWpvp/17rWrzsVDnwogv6AdUg1fkTQKj5xdr8cjoxKG1W97vccElu4I0ryk0Mw1XtNFdc ARC-Seal: i=1; a=rsa-sha256; t=1517427994; cv=none; d=google.com; s=arc-20160816; b=FU85vPLBgNi8BZxB6aZHoGDUVVbyGyd2Y+DHfGyia54JelFNn+UwvDGP/E9m+0LAgF /TyvBv/n48od2BvWMGb0/AfYTHKpVjKIXWnyBfGYAVpahId5bZJhvkCoQz1mhR0Xn3sQ OP07TEtkf0OMG6kKY1/yV4Kc0NTLP/wXZ4X+drN3UPlpl3thyfPQsoapyvp3f5rhOQnW nn44oOGfl22WTK/qaxCZpqtA9XZ6uUO8ps+8R0o9OPUJfHIGKKxgrDYb8UgYYHbeogQu GRBN24XQ3dejq7WR79qa/jbji+tOuoOkDwjm0EcpVFwOZdxOJHdpF7MiOgn3U7hcK94w Ot8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=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=UoFtlv+WmzmOn24xPNX/jN1wMIaLjRqwOzL6l/BlRj6B1+Sv/WMQ9KfTZ+QAQ6DkF9 iD+13cz3J9cmw2MxbKo6Oy0Z35soy1LDVLenb3Lkk8pBaxj4phk/4xGnLTLyHEqe27qM WCTv9QgBbZ/myW0cl3yrBR2S0/PN7hcncDPX+B0VrJgHKen0xo1YmcmSl94qRCLUX89A jswZA0QIZtAZ+erpqFyqAhivOrhoE5H9aKkne2y8BSUyl1r7iq0E/radgZf97kaZ439x lj0k8BnY0aiD7juCRYWuUWw+O/YQtB+9Mj4K1V72Gi0fTi5mQ/W6M1mLRUYllcbq7F+n UTRg== 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: domain of jollys@xilinx.com designates 104.47.38.73 as permitted sender) smtp.mailfrom=JOLLYS@xilinx.com Authentication-Results: mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-com header.b=nSe4oWNN; spf=pass (google.com: domain of jollys@xilinx.com designates 104.47.38.73 as permitted sender) smtp.mailfrom=JOLLYS@xilinx.com 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 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590517939735530008?= X-GMAIL-MSGID: =?utf-8?q?1591138575949860323?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 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=