From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE4BCC282C4 for ; Tue, 12 Feb 2019 08:10:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8EA132186A for ; Tue, 12 Feb 2019 08:10:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728329AbfBLIKw (ORCPT ); Tue, 12 Feb 2019 03:10:52 -0500 Received: from mga18.intel.com ([134.134.136.126]:39033 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725916AbfBLIKw (ORCPT ); Tue, 12 Feb 2019 03:10:52 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2019 00:08:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,361,1544515200"; d="scan'208";a="125776819" Received: from pgsmsx106.gar.corp.intel.com ([10.221.44.98]) by orsmga003.jf.intel.com with ESMTP; 12 Feb 2019 00:08:45 -0800 Received: from pgsmsx109.gar.corp.intel.com ([169.254.14.167]) by PGSMSX106.gar.corp.intel.com ([169.254.9.56]) with mapi id 14.03.0415.000; Tue, 12 Feb 2019 16:08:44 +0800 From: "Ong, Hean Loong" To: "daniel@ffwll.ch" CC: "linux-kernel@vger.kernel.org" , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "sam@ravnborg.org" , "See, Chin Liang" , "Vetter, Daniel" , "noralf@tronnes.org" , "rienk.dejong@quest-innovations.com" , "dri-devel@lists.freedesktop.org" , "dinguyen@kernel.org" , "Ong@freedesktop.org" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCHv13 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Thread-Topic: [PATCHv13 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Thread-Index: AQHUwqcMqt4+BHOT4EWKwDta36P7caXbSOsA Date: Tue, 12 Feb 2019 08:08:44 +0000 Message-ID: <60ce72a2ec9fe9d51a037d300119f912a8eb6aef.camel@intel.com> References: <20190212023623.2646-1-hean.loong.ong@intel.com> <20190212023623.2646-4-hean.loong.ong@intel.com> <20190212074605.GW23159@phenom.ffwll.local> In-Reply-To: <20190212074605.GW23159@phenom.ffwll.local> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.226.243.17] Content-Type: text/plain; charset="utf-8" Content-ID: <61EDB86BE462654FB80F87965BD3AE86@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVHVlLCAyMDE5LTAyLTEyIGF0IDA4OjQ2ICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBUdWUsIEZlYiAxMiwgMjAxOSBhdCAxMDozNjoyM0FNICswODAwLCBIZWFuLUxvb25nLCBP bmcgdmlhIGRyaS0NCj4gZGV2ZWwgd3JvdGU6DQo+ID4gRnJvbTogT25nLCBIZWFuIExvb25nIDxo ZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+DQo+ID4gDQo+ID4gRHJpdmVyIGZvciBJbnRlbCBGUEdB IFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIEZyYW1lIEJ1ZmZlcg0KPiA+IElJLg0K PiA+IFRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQgYW5k IGl0cyB2YXJpYW50cy4NCj4gPiBUaGlzIGRyaXZlciBjYW4gYmUgZWl0aGVyIGxvYWRlZCBzdGF0 aWNsbHkgb3IgaW4gbW9kdWxlcy4NCj4gPiBUaGUgT0YgZGV2aWNlIHRyZWUgYmluZGluZyBpcyBs b2NhdGVkIGF0Og0KPiA+IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5 L2FsdHIsdmlwLWZiMi50eHQNCj4gPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBPbmcsIEhlYW4gTG9v bmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4NCj4gDQo+IEl0IGxvb2tzIGxpa2UgeW91ciBj b3ZlciBsZXR0ZXIgYW5kIHBhdGNoIDIgZGlkbid0IG1ha2UgaXQgdG8gdGhlDQo+IGxpc3QNCj4g c29tZWhvdy4gUGxlYXNlIGNoZWNrIHRob3NlIGFyZW4ndCBzdHVjayBvbiB5b3VyIHNpZGUgKGxp c3QgYWRtaW5zDQo+IGRpZG4ndA0KPiBzZWUgdGhlbSB5ZXQpLg0KPiANClRoYXQncyB3ZWlyZCBt eSBnaXQgc2VuZC1lbWFpbCBzYXlzIGV2ZXJ5dGhpbmcgd2FzIG9rYXkNCg0KPiA+IC0tLQ0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgIHwgICAgMiArDQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsNCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2l2aXAvS2NvbmZpZyAgICAgICAgICB8ICAgMTQgKysNCj4gPiAgZHJpdmVycy9n cHUvZHJtL2l2aXAvTWFrZWZpbGUgICAgICAgICB8ICAgIDYgKw0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vaXZpcC9pbnRlbF92aXBfY29ubi5jIHwgICA5MSArKysrKysrKysNCj4gPiAgZHJpdmVycy9n cHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5jICB8ICAzMzINCj4gPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gPiAgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Ry di5oICB8ICAgNzMgKysrKysrKw0KPiA+ICA3IGZpbGVzIGNoYW5nZWQsIDUxOSBpbnNlcnRpb25z KCspLCAwIGRlbGV0aW9ucygtKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2l2aXAvS2NvbmZpZw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2l2aXAvTWFrZWZpbGUNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p dmlwL2ludGVsX3ZpcF9jb25uLmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gPiBpbmRl eCA0Mzg1ZjAwLi4wMjUxYTlmIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29u ZmlnDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gPiBAQCAtMjM1LDYgKzIz NSw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyINCj4gPiAgDQo+ ID4gIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyINCj4gPiAgDQo+ID4gK3Nv dXJjZSAiZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZyINCj4gPiArDQo+ID4gIGNvbmZpZyBE Uk1fVkdFTQ0KPiA+ICAJdHJpc3RhdGUgIlZpcnR1YWwgR0VNIHByb3ZpZGVyIg0KPiA+ICAJZGVw ZW5kcyBvbiBEUk0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlDQo+ID4gaW5kZXggY2U4ZDFkMy4uODVhNTY5NCAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUNCj4gPiBAQCAtNjMsNiArNjMsNyBAQCBvYmotJChDT05GSUdfRFJN X0FNREdQVSkrPSBhbWQvYW1kZ3B1Lw0KPiA+ICBvYmotJChDT05GSUdfRFJNX01HQSkJKz0gbWdh Lw0KPiA+ICBvYmotJChDT05GSUdfRFJNX0k4MTApCSs9IGk4MTAvDQo+ID4gIG9iai0kKENPTkZJ R19EUk1fSTkxNSkJKz0gaTkxNS8NCj4gPiArb2JqLSQoQ09ORklHX0RSTV9JVklQKQkrPSBpdmlw Lw0KPiA+ICBvYmotJChDT05GSUdfRFJNX01HQUcyMDApICs9IG1nYWcyMDAvDQo+ID4gIG9iai0k KENPTkZJR19EUk1fVjNEKSAgKz0gdjNkLw0KPiA+ICBvYmotJChDT05GSUdfRFJNX1ZDNCkgICs9 IHZjNC8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZw0KPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMC4uMWQwOGI5MA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnDQo+ID4gQEAgLTAsMCArMSwxNCBAQA0KPiA+ ICtjb25maWcgRFJNX0lWSVANCj4gPiArICAgICAgICB0cmlzdGF0ZSAiSW50ZWwgRkdQQSBWaWRl byBhbmQgSW1hZ2UgUHJvY2Vzc2luZyINCj4gPiArICAgICAgICBkZXBlbmRzIG9uIERSTSAmJiBP Rg0KPiA+ICsgICAgICAgIHNlbGVjdCBEUk1fR0VNX0NNQV9IRUxQRVINCj4gPiArICAgICAgICBz ZWxlY3QgRFJNX0tNU19IRUxQRVINCj4gPiArICAgICAgICBzZWxlY3QgRFJNX0tNU19GQl9IRUxQ RVINCj4gPiArICAgICAgICBzZWxlY3QgRFJNX0tNU19DTUFfSEVMUEVSDQo+ID4gKyAgICAgICAg aGVscA0KPiA+ICsJCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEludGVsIEZQ R0ENCj4gPiBBcnJpYSAxMCBzeXN0ZW0NCj4gPiArCQkgIGFuZCBhYm92ZSB3aXRoIGFuIEludGVs IERpc3BsYXkgUG9ydCBJUC4gVGhpcw0KPiA+IGRvZXMgbm90IHN1cHBvcnQNCj4gPiArCQkgIGxl Z2FjeSBJbnRlbCBGUEdBIEN5Y2xvbmUgViBkaXNwbGF5IHBvcnQuDQo+ID4gQ3VycmVudGx5IG9u bHkgc2luZ2xlDQo+ID4gKwkJICBmcmFtZSBidWZmZXIgaXMgc3VwcG9ydGVkLiBOb3RlIHRoYXQg QUNQSSBhbmQNCj4gPiBYXzg2IGFyY2hpdGVjdHVyZQ0KPiA+ICsJCSAgaXMgbm90IHN1cHBvcnRl ZCBmb3IgQXJyaWExMC4gSWYgTSBpcyBzZWxlY3RlZA0KPiA+IHRoZSBtb2R1bGUgd2lsbCBiZQ0K PiA+ICsJCSAgY2FsbGVkIGl2aXAuDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p dmlwL01ha2VmaWxlDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQ0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uOGM1NGUxMQ0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQ0KPiA+IEBA IC0wLDAgKzEsNiBAQA0KPiA+ICsjDQo+ID4gKyMgTWFrZWZpbGUgZm9yIHRoZSBkcm0gZGV2aWNl IGRyaXZlci4gIFRoaXMgZHJpdmVyIHByb3ZpZGVzDQo+ID4gc3VwcG9ydCBmb3IgdGhlDQo+ID4g KyMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4w IGFuZA0KPiA+IGhpZ2hlci4NCj4gPiArDQo+ID4gK29iai0kKENPTkZJR19EUk1fSVZJUCkgKz0g aXZpcC5vDQo+ID4gK2l2aXAtb2JqcyA6PSBpbnRlbF92aXBfZHJ2Lm8gaW50ZWxfdmlwX2Nvbm4u bw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5j DQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi45M2NlMGIzDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMNCj4g PiBAQCAtMCwwICsxLDkxIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+ID4gKy8qDQo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlv bi4NCj4gPiArICoNCj4gPiArICogaW50ZWxfdmlwX2Nvbm4uYyAtLSBJbnRlbCBWaWRlbyBhbmQg SW1hZ2UgUHJvY2Vzc2luZyhWSVApDQo+ID4gKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXINCj4g PiArICoNCj4gPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVsIFZJUCBGcmFtZSBS ZWFkZXIgY29tcG9uZW50Lg0KPiA+ICsgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3YXJlIGNhbiBi ZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8NCj4gPiArICogYW5kIEltYWdlIFByb2Nlc3Npbmcg U3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MNCj4gPiArICogaHR0cDovL3d3dy5hbHRl cmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4NCj4gPiArICoNCj4gPiArICogQXV0aG9y czoNCj4gPiArICogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vuc0Bob21lLm5sPg0KPiA+ ICsgKiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+DQo+ID4gKyAqIENocmlzIFJh dWVyIDxjcmF1ZXJAYWx0ZXJhLmNvbT4NCj4gPiArICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxv b25nLm9uZ0BpbnRlbC5jb20+DQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgPGxpbnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXJfc2xhdmUuaD4N Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+DQo+ID4gKw0KPiA+ICtzdGF0 aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cw0KPiA+ICtpbnRlbHZpcGZiX2RybV9jb25uZWN0 b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQo+ID4gYm9vbCBmb3Jj ZSkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGVz dHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcg0KPiA+ICpjb25uZWN0b3IpDQo+ID4gK3sNCj4gPiAr CWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOw0KPiA+ICsJZHJtX2Nvbm5lY3Rv cl9jbGVhbnVwKGNvbm5lY3Rvcik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcw0KPiA+IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9m dW5jcyA9IHsNCj4gPiArCS5kZXRlY3QgPSBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGV0ZWN0 LA0KPiA+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiA+ ICsJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMs DQo+ID4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9DQo+ID4gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4gPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 DQo+ID4gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+ID4gKwku ZGVzdHJveSA9IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LA0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yDQo+ID4gKmNvbm5lY3RvcikNCj4gPiArew0KPiA+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRybSA9IGNvbm5lY3Rvci0+ZGV2Ow0KPiA+ICsJaW50IGNvdW50Ow0KPiA+ ICsNCj4gPiArCWNvdW50ID0gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCBkcm0tDQo+ ID4gPm1vZGVfY29uZmlnLm1heF93aWR0aCwNCj4gPiArCQkJZHJtLT5tb2RlX2NvbmZpZy5tYXhf aGVpZ2h0KTsNCj4gPiArCWRybV9zZXRfcHJlZmVycmVkX21vZGUoY29ubmVjdG9yLCBkcm0tDQo+ ID4gPm1vZGVfY29uZmlnLm1heF93aWR0aCwNCj4gPiArCQkJZHJtLT5tb2RlX2NvbmZpZy5tYXhf aGVpZ2h0KTsNCj4gPiArCXJldHVybiBjb3VudDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcw0KPiA+ICtpbnRlbHZpcGZi X2RybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gew0KPiA+ICsJLmdldF9tb2RlcyA9IGludGVs dmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqDQo+ID4gK2ludGVsdmlwZmJfY29ubl9zZXR1cChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsN Cj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJY29ubiA9IGRldm1fa3phbGxvYyhkcm0tPmRl diwgc2l6ZW9mKCpjb25uKSwgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoSVNfRVJSKGNvbm4pKQ0K PiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2Fk ZChjb25uLA0KPiA+ICZpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsNCj4g PiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm4sDQo+ID4gJmludGVsdmlwZmJf ZHJtX2Nvbm5lY3Rvcl9mdW5jcywNCj4gPiArCQkJRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQ b3J0KTsNCj4gPiArCWlmIChyZXQgPCAwKSB7DQo+ID4gKwkJZGV2X2Vycihkcm0tPmRldiwgImZh aWxlZCB0byBpbml0aWFsaXplIGRybQ0KPiA+IGNvbm5lY3RvclxuIik7DQo+ID4gKwkJcmV0ID0g LUVOT01FTTsNCj4gPiArCQlnb3RvIGVycm9yX2Nvbm5lY3Rvcl9jbGVhbnVwOw0KPiA+ICsJfQ0K PiA+ICsNCj4gPiArCXJldHVybiBjb25uOw0KPiA+ICsNCj4gPiArZXJyb3JfY29ubmVjdG9yX2Ns ZWFudXA6DQo+ID4gKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubik7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIE5VTEw7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2 aXAvaW50ZWxfdmlwX2Rydi5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf ZHJ2LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjM4Nzkw YjcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50 ZWxfdmlwX2Rydi5jDQo+ID4gQEAgLTAsMCArMSwzMzIgQEANCj4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE5 IEludGVsIENvcnBvcmF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBpbnRlbF92aXBfY29yZS5jIC0t IEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkNCj4gPiArICogRnJhbWUgQnVm ZmVyIElJIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUg SW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuDQo+ID4gKyAqIE1vcmUgaW5mbyBvbiB0 aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRlbw0KPiA+ICsgKiBhbmQg SW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVzcw0KPiA+ICsg KiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLg0KPiA+ICsg Kg0KPiA+ICsgKiBBdXRob3JzOg0KPiA+ICsgKiBXYWx0ZXIgR29vc3NlbnMgPHdhbHRlcmdvb3Nz ZW5zQGhvbWUubmw+DQo+ID4gKyAqIFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4N Cj4gPiArICogQ2hyaXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPg0KPiA+ICsgKiBPbmcsIEhl YW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ ID4gKw0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4gPiArI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBl ci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4NCj4gPiArI2luY2x1ZGUg PGRybS9kcm1fZmJfY21hX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21h X2hlbHBlci5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVy Lmg+DQo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPg0KPiA+ICsjaW5jbHVk ZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiaW50ZWxfdmlwX2Rydi5o Ig0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICoNCj4g PiArcGlwZV90b19pbnRlbHZpcGRybShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBp cGUpDQo+ID4gK3sNCj4gPiArCXJldHVybiBjb250YWluZXJfb2YocGlwZSwgc3RydWN0IGludGVs dmlwZmJfcHJpdiwgcGlwZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK0RFRklORV9EUk1fR0VNX0NN QV9GT1BTKGRybV9mb3BzKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBp bnRlbHZpcGZiX2RybSA9IHsNCj4gPiArCS5kcml2ZXJfZmVhdHVyZXMgPQ0KPiA+ICsJCQlEUklW RVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfA0KPiA+ICsJCQlEUklWRVJfUFJJTUUgfCBEUklWRVJf QVRPTUlDLA0KPiA+ICsJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGRybV9nZW1fY21hX2Zy ZWVfb2JqZWN0LA0KPiA+ICsJLmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLA0KPiA+ ICsJLmR1bWJfY3JlYXRlID0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsDQo+ID4gKwkuZHVtYl9k ZXN0cm95ID0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksDQo+ID4gKwkucHJpbWVfaGFuZGxlX3RvX2Zk ID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsDQo+ID4gKwkucHJpbWVfZmRfdG9faGFuZGxl ID0gZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUsDQo+ID4gKwkuZ2VtX3ByaW1lX2V4cG9ydCA9 IGRybV9nZW1fcHJpbWVfZXhwb3J0LA0KPiA+ICsJLmdlbV9wcmltZV9pbXBvcnQgPSBkcm1fZ2Vt X3ByaW1lX2ltcG9ydCwNCj4gPiArCS5nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gZHJtX2dlbV9j bWFfcHJpbWVfZ2V0X3NnX3RhYmxlLA0KPiA+ICsJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUg PQ0KPiA+IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwNCj4gPiArCS5nZW1fcHJp bWVfdm1hcCA9IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAsDQo+ID4gKwkuZ2VtX3ByaW1lX3Z1bm1h cCA9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwNCj4gPiArCS5nZW1fcHJpbWVfbW1hcCA9IGRy bV9nZW1fY21hX3ByaW1lX21tYXAsDQo+ID4gKwkubmFtZSA9IERSSVZFUl9OQU1FLA0KPiA+ICsJ LmRhdGUgPSAiMjAxOTAxMjkiLA0KPiA+ICsJLmRlc2MgPSAiSW50ZWwgRlBHQSBWSVAgU1VJVEUi LA0KPiA+ICsJLm1ham9yID0gMSwNCj4gPiArCS5taW5vciA9IDAsDQo+ID4gKwkuaW9jdGxzID0g TlVMTCwNCj4gPiArCS5wYXRjaGxldmVsID0gMCwNCj4gPiArCS5mb3BzID0gJmRybV9mb3BzLA0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogU2V0dGluZyB1cCBpbmZvcm1hdGlvbiBk ZXJpdmVkIGZyb20gT0YgRGV2aWNlIFRyZWUgTm9kZXMNCj4gPiArICogbWF4LXdpZHRoLCBtYXgt aGVpZ2h0LCBiaXRzIHBlciBwaXhlbCwgbWVtb3J5IHBvcnQgd2lkdGgNCj4gPiArICovDQo+ID4g Kw0KPiA+ICtzdGF0aWMgaW50IGludGVsdmlwZmJfZHJtX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRl diwNCj4gPiArCQkJCQlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2DQo+ID4gKnByaXYpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwcml2LT5kcm07DQo+ID4gKwlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiA+ICsJaW50IG1lbV93b3JkX3dpZHRo Ow0KPiA+ICsJaW50IG1heF9oLCBtYXhfdzsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJ cmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1heC13aWR0aCIsICZtYXhfdyk7 DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJZGV2X2VycihkZXYsDQo+ID4gKwkJCSJNaXNzaW5n IHJlcXVpcmVkIHBhcmFtZXRlciAnYWx0cixtYXgtDQo+ID4gd2lkdGgnIik7DQo+ID4gKwkJcmV0 dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3Uz MihucCwgImFsdHIsbWF4LWhlaWdodCIsICZtYXhfaCk7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4g KwkJZGV2X2VycihkZXYsDQo+ID4gKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAnYWx0 cixtYXgtDQo+ID4gaGVpZ2h0JyIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1lbS1wb3J0LXdp ZHRoIiwNCj4gPiAmbWVtX3dvcmRfd2lkdGgpOw0KPiA+ICsJaWYgKHJldCkgew0KPiA+ICsJCWRl dl9lcnIoZGV2LCAiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXINCj4gPiAnYWx0cixtZW0tcG9y dC13aWR0aCAnIik7DQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlp ZiAoIShtZW1fd29yZF93aWR0aCA+PSAzMiAmJiBtZW1fd29yZF93aWR0aCAlIDMyID09IDApKSB7 DQo+ID4gKwkJZGV2X2VycihkZXYsDQo+ID4gKwkJCSJtZW0td29yZC13aWR0aCBpcyBzZXQgdG8g JWkuIG11c3QgYmUgPj0NCj4gPiAzMiBhbmQgbXVsdGlwbGUgb2YgMzIuIiwNCj4gPiArCQkJIG1l bV93b3JkX3dpZHRoKTsNCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwlkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDY0MDsNCj4gPiArCWRybS0+bW9kZV9j b25maWcubWluX2hlaWdodCA9IDQ4MDsNCj4gPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dpZHRo ID0gbWF4X3c7DQo+ID4gKwlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSBtYXhfaDsNCj4g PiArCWRybS0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoID0gMzI7DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0 dmFsOw0KPiA+ICsJc3RydWN0IHJlc291cmNlICpyZWdfcmVzOw0KPiA+ICsJc3RydWN0IGludGVs dmlwZmJfcHJpdiAqcHJpdjsNCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 DQo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOw0KPiA+ICsNCj4gPiArCXByaXYgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsNCj4gPiArCWlmICghcHJp dikNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwkvKiBzZXR1cCBEUk0gKi8N Cj4gPiArCWRybSA9IGRybV9kZXZfYWxsb2MoJmludGVsdmlwZmJfZHJtLCBkZXYpOw0KPiANCj4g SnVzdCBhIHRpbnkgYmlrZXNoZWQ6IFJlY29tbWVuZGVkIHN0eWxlIG5vd2FkYXlzIGlzIHRvIHVz ZQ0KPiBkcm1fZGV2X2luaXQNCj4gYW4gZW1iZWQgZHJtX2RldmljZSBpbnRvIHlvdXIgZHJpdmVy IHByaXZhdGUgc3RydWN0dXJlLiBUaGlzIG1lYW5zDQo+IHlvdQ0KPiBjYW4ndCB1c2UgZGV2bV9r emFsbG9jIChidXQgdG8gYmUgcmVhbGx5IHN0cmljdCwgYWxtb3N0IGFsbCB1c2FnZSBvZg0KPiBk ZXZtX2t6YWxsb2MgaW4gZHJtIGRyaXZlcnMgaXMgYnJva2VuLCBidXQgdGhhdCdzIGFuIGVudGly ZWx5DQo+IGRpZmZlcmVudA0KPiBzdG9yeSkuIFdvdWxkIGJlIGdyZWF0IHRvIHN3aXRjaCBvdmVy IHRvIGRybV9kZXZfaW5pdCB0byBhbGlnbiBiZXR0ZXINCj4gd2l0aA0KPiBzb21lIG9mIHRoZSBw bGFubmVkIHdvcmsgd2UgaGF2ZS4NCj4gDQpTdXJlIEkgdGhpbmsgSSBjYW4gZml4IHRoaXMNCj4g DQo+ID4gKwlpZiAoSVNfRVJSKGRybSkpDQo+ID4gKwkJcmV0dXJuIFBUUl9FUlIoZHJtKTsNCj4g PiArDQo+ID4gKwlyZXR2YWwgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRybS0+ZGV2LA0K PiA+IERNQV9CSVRfTUFTSygzMikpOw0KPiA+ICsJaWYgKHJldHZhbCkNCj4gPiArCQlyZXR1cm4g LUVOT0RFVjsNCj4gPiArDQo+ID4gKwlwcml2LT5kcm0gPSBkcm07DQo+ID4gKw0KPiA+ICsJcmVn X3JlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ ID4gKwlpZiAoIXJlZ19yZXMpDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJ cHJpdi0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlZ19yZXMpOw0KPiA+ICsN Cj4gPiArCWlmIChJU19FUlIocHJpdi0+YmFzZSkpIHsNCj4gPiArCQlkZXZfZXJyKGRldiwgImRl dm1faW9yZW1hcF9yZXNvdXJjZSBmYWlsZWRcbiIpOw0KPiA+ICsJCXJldHZhbCA9IFBUUl9FUlIo cHJpdi0+YmFzZSk7DQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJaW50ZWx2aXBmYl9kcm1fc2V0dXAoZGV2LCBwcml2KTsNCj4gPiArDQo+ID4gKwlkZXZfc2V0 X2RydmRhdGEoZGV2LCBwcml2KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gaW50ZWx2aXBmYl9wcm9i ZShkZXYpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArCXJldHVybiBp bnRlbHZpcGZiX3JlbW92ZSgmcGRldi0+ZGV2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHZvaWQgaW50ZWx2aXBmYl9lbmFibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlDQo+ ID4gKnBpcGUsDQo+ID4gKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ ID4gKwkJCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoNCj4gPiArCQkJCXBsYW5lX3N0YXRlKQ0K PiA+ICt7DQo+ID4gKwkvKg0KPiA+ICsJICogVGhlIGZyYW1laW5mbyB2YXJpYWJsZSBoYXMgdG8g Y29ycmVzcG9uZCB0byB0aGUgc2l6ZSBvZg0KPiA+IHRoZSBWSVAgU3VpdGUNCj4gPiArCSAqIEZy YW1lIFJlYWRlciByZWdpc3RlciA3IHdoaWNoIHdpbGwgZGV0ZXJtaW5lIHRoZQ0KPiA+IG1heGlt dW0gc2l6ZSB1c2VkDQo+ID4gKwkgKiBpbiB0aGlzIGZyYW1laW5mbw0KPiA+ICsJICovDQo+ID4g KwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpwcml2ID0gcGlwZV90b19pbnRlbHZpcGRybShwaXBl KTsNCj4gPiArCXUzMiBmcmFtZWluZm87DQo+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBwcml2 LT5iYXNlOw0KPiA+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwaXBlLT5wbGFu ZS5zdGF0ZTsNCj4gPiArCWRtYV9hZGRyX3QgYWRkcjsNCj4gPiArDQo+ID4gKwlhZGRyID0gZHJt X2ZiX2NtYV9nZXRfZ2VtX2FkZHIoc3RhdGUtPmZiLCBzdGF0ZSwgMCk7DQo+ID4gKw0KPiA+ICsJ ZnJhbWVpbmZvID0NCj4gPiArCQlyZWFkbChiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIp ICYNCj4gPiAweDAwZmZmZmZmOw0KPiA+ICsJd3JpdGVsKGZyYW1laW5mbywgYmFzZSArIElOVEVM VklQRkJfRlJBTUVfSU5GTyk7DQo+ID4gKwl3cml0ZWwoYWRkciwgYmFzZSArIElOVEVMVklQRkJf RlJBTUVfU1RBUlQpOw0KPiA+ICsJLyogRmluYWxseSBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIg dG8gMSB0byBzdGFydA0KPiA+IHN0cmVhbWluZyAqLw0KPiA+ICsJd3JpdGVsKDEsIGJhc2UgKyBJ TlRFTFZJUEZCX0NPTlRST0wpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBpbnRl bHZpcGZiX2Rpc2FibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlDQo+ID4gKnBpcGUp DQo+ID4gK3sNCj4gPiArCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKnByaXYgPSBwaXBlX3RvX2lu dGVsdmlwZHJtKHBpcGUpOw0KPiA+ICsJdm9pZCBfX2lvbWVtICpiYXNlID0gcHJpdi0+YmFzZTsN Cj4gPiArCS8qIHNldCB0aGUgY29udHJvbCByZWdpc3RlciB0byAwIHRvIHN0b3Agc3RyZWFtaW5n ICovDQo+ID4gKwl3cml0ZWwoMCwgYmFzZSArIElOVEVMVklQRkJfQ09OVFJPTCk7DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzDQo+ ID4gaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jcyA9IHsNCj4gPiArCS5mYl9jcmVhdGUgPSBk cm1fZ2VtX2ZiX2NyZWF0ZSwNCj4gPiArCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVjaywNCj4gPiArCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9zZXR1cF9tb2Rl X2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQ0KPiA+ICt7DQo+ID4gKwlkcm1fbW9kZV9j b25maWdfaW5pdChkcm0pOw0KPiA+ICsJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZpbnRlbHZp cGZiX21vZGVfY29uZmlnX2Z1bmNzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGludGVsdmlw ZmJfZGlzcGxheV9waXBlX3VwZGF0ZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUNCj4g PiAqcGlwZSwNCj4gPiArCQkJCSAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlDQo+ID4gKm9sZF9z dGF0ZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqcHJpdiA9IHBpcGVf dG9faW50ZWx2aXBkcm0ocGlwZSk7DQo+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsNCj4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZw cml2LT5waXBlLmNydGM7DQo+ID4gKw0KPiA+ICsJaWYgKGZiICYmIGZiICE9IG9sZF9zdGF0ZS0+ ZmIpIHsNCj4gPiArCQlpZiAocHJpdi0+ZmJfZGlydHkpDQo+ID4gKwkJCXByaXYtPmZiX2RpcnR5 KGZiLCBOVUxMLCAwLCAwLCBOVUxMLCAwKTsNCj4gPiArCX0NCj4gDQo+IC0+ZmJfZGlydHkgaGVy ZSBzZWVtcyBlbnRpcmVseSB1bnVzZWQuIEl0J3MgYWxzbyBpbmNvbXBsZXRlLCB0aGVyZSdzDQo+ IGEgbG90DQo+IG1vcmUgdG8gaW1wbGVtZW50aW5nIG1hbnVhbCB1cGxvYWQgc3VwcG9ydCB0aGFu IGp1c3QgdGhpcyBoZXJlICh5b3UNCj4gbmVlZA0KPiB0byBzZXR1cCBmcmFtZWJ1ZmZlcnMgd2l0 aCB0aGUgZGlydHkgY2FsbGJhY2ssIHBsdXMgcmVnaXN0ZXIgdGhlIG5ldw0KPiBkYW1hZ2UgcHJv cGVydHkpLiBJbW8gYmV0dGVyIGlmIHdlIGFkZCB0aGlzIHdoZW4geW91IHN0YXJ0IHVzaW5nIGl0 LA0KPiBoZW5jZQ0KPiBwbGVhc2UgcmVtb3ZlIC0+ZmJfZGlydHkgaGVyZSBhbmQgZnJvbSB0aGUg aGVhZGVycy4NCg0KTm90ZWQuDQo+IA0KPiA+ICsNCj4gPiArCWlmIChjcnRjLT5zdGF0ZS0+ZXZl bnQpIHsNCj4gPiArCQlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOw0KPiA+ ICsJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLQ0KPiA+ID5l dmVudCk7DQo+ID4gKwkJc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOw0K PiA+ICsJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiAr RVhQT1JUX1NZTUJPTChpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91cGRhdGUpOw0KPiA+ICsNCj4g PiArc3RhdGljIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBwcml2X2Z1bmNz ID0gew0KPiA+ICsJLnByZXBhcmVfZmIgPSBkcm1fZ2VtX2ZiX3NpbXBsZV9kaXNwbGF5X3BpcGVf cHJlcGFyZV9mYiwNCj4gPiArCS51cGRhdGUgPSBpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91cGRh dGUsDQo+ID4gKwkuZW5hYmxlID0gaW50ZWx2aXBmYl9lbmFibGUsDQo+ID4gKwkuZGlzYWJsZSA9 IGludGVsdmlwZmJfZGlzYWJsZQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAraW50IGludGVsdmlwZmJf cHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0dmFsOw0KPiA+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybTsNCj4gPiArCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYg KnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiArDQo+ID4gKwlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yOw0KPiA+ICsJdTMyIGZvcm1hdHNbXSA9IHtEUk1fRk9STUFUX1hS R0I4ODg4fTsNCj4gPiArDQo+ID4gKwlkcm0gPSBwcml2LT5kcm07DQo+ID4gKw0KPiA+ICsJaW50 ZWx2aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhkcm0pOw0KPiANCj4gUGVyc29uYWxseSBJJ2QgaW5s aW5lIHRoaXMsIGl0J3MganVzdCAyIGxpbmVzLg0KPiANCj4gPiArDQo+ID4gKwljb25uZWN0b3Ig PSBpbnRlbHZpcGZiX2Nvbm5fc2V0dXAoZHJtKTsNCj4gPiArCWlmICghY29ubmVjdG9yKSB7DQo+ ID4gKwkJZGV2X2Vycihkcm0tPmRldiwgIkNvbm5lY3RvciBzZXR1cCBmYWlsZWRcbiIpOw0KPiA+ ICsJCWdvdG8gZXJyX21vZGVfY29uZmlnOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHZhbCA9 IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQoZHJtLA0KPiA+ICsJCQkJCQkmcHJpdi0+cGlw ZSwNCj4gPiArCQkJCQkJJnByaXZfZnVuY3MsDQo+ID4gKwkJCQkJCWZvcm1hdHMsDQo+ID4gKwkJ CQkJCUFSUkFZX1NJWkUoZm9ybWF0cw0KPiA+ICksDQo+ID4gKwkJCQkJCU5VTEwsIGNvbm5lY3Rv cik7DQo+ID4gKw0KPiA+ICsJaWYgKHJldHZhbCA8IDApIHsNCj4gPiArCQlkZXZfZXJyKGRybS0+ ZGV2LCAiQ2Fubm90IHNldHVwIHNpbXBsZSBkaXNwbGF5DQo+ID4gcGlwZVxuIik7DQo+ID4gKwkJ Z290byBlcnJfbW9kZV9jb25maWc7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZHJtX21vZGVfY29u ZmlnX3Jlc2V0KGRybSk7DQo+ID4gKw0KPiA+ICsJZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOw0K PiA+ICsNCj4gPiArCWRybV9mYmRldl9nZW5lcmljX3NldHVwKGRybSwgMzIpOw0KPiA+ICsNCj4g PiArCWRldl9pbmZvKGRybS0+ZGV2LCAiaXZpcDogU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZmJcbiIp Ow0KPiA+ICsNCj4gPiArCXJldHVybiByZXR2YWw7DQo+ID4gKw0KPiA+ICtlcnJfbW9kZV9jb25m aWc6DQo+ID4gKw0KPiA+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsNCj4gPiArCXJl dHVybiAtRU5PREVWOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgaW50ZWx2aXBmYl9yZW1vdmUo c3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2 ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtID0gIHByaXYtPmRybTsNCj4gPiArDQo+ID4gKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJtKTsN Cj4gPiArDQo+ID4gKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOw0KPiA+ICsNCj4gPiAr CXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBpbnRlbHZpcGZiX29mX21hdGNoW10gPSB7DQo+ID4gKwl7IC5jb21wYXRpYmxlID0g ImFsdHIsdmlwLWZyYW1lLWJ1ZmZlci0yLjAiIH0sDQo+ID4gKwl7fSwNCj4gPiArLyoNCj4gPiAr ICogVGhlIG5hbWUgdmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMgZGVyaXZlZCBmcm9tDQo+ID4gKyAq IGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYNCj4gPiArICog ZnJhbWUgYnVmZmVyIElQIGNvcmVzIHNlY3Rpb24gMTQNCj4gPiArICovDQo+ID4gK307DQo+ID4g Kw0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbHZpcGZiX29mX21hdGNoKTsNCj4g PiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsdmlwZmJfZHJpdmVy ID0gew0KPiA+ICsJLnByb2JlID0gaW50ZWx2aXBmYl9vZl9wcm9iZSwNCj4gPiArCS5yZW1vdmUg PSBpbnRlbHZpcGZiX29mX3JlbW92ZSwNCj4gPiArCS5kcml2ZXIgPSB7DQo+ID4gKwkJLm5hbWUg PSBEUklWRVJfTkFNRSwNCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBpbnRlbHZpcGZiX29mX21h dGNoLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2 ZXIoaW50ZWx2aXBmYl9kcml2ZXIpOw0KPiA+ICsNCj4gPiArLyogT3JpZ2luYWwgYXV0aG9yIG9m IEFsdGVyYSBGcmFtZSBCdWZmZXIqLw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJXYWx0ZXIgR29vc3Nl bnMgPHdhbHRlcmdvb3NzZW5zQGhvbWUubmw+Iik7DQo+ID4gK01PRFVMRV9BVVRIT1IoIlRob21h cyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4iKTsNCj4gPiArTU9EVUxFX0FVVEhPUigiQ2hy aXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPiIpOw0KPiA+ICsvKiBBdXRob3Igb2YgSW50ZWwg RlBHQSBGcmFtZSBCdWZmZXIgSUkqLw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJPbmcsIEhlYW4tTG9v bmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4iKTsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9O KCJJbnRlbCBWSVAgRnJhbWUgQnVmZmVyIElJIGRyaXZlciIpOw0KPiA+ICtNT0RVTEVfTElDRU5T RSgiR1BMIHYyIik7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVs X3ZpcF9kcnYuaA0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi44MjFlNzRlDQo+ID4g LS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9k cnYuaA0KPiA+IEBAIC0wLDAgKzEsNzMgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAgKi8NCj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEludGVs IENvcnBvcmF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJv Y2Vzc2luZyhWSVApIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIuDQo+ID4gKyAqIEZyYW1lIEJ1ZmZl ciBJSSBkcml2ZXINCj4gPiArICoNCj4gPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIElu dGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50Lg0KPiA+ICsgKiBNb3JlIGluZm8gb24gdGhl IGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8NCj4gPiArICogYW5kIElt YWdlIFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MNCj4gPiArICog aHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4NCj4gPiArICoN Cj4gPiArICogQXV0aG9yczoNCj4gPiArICogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vu c0Bob21lLm5sPg0KPiA+ICsgKiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+DQo+ ID4gKyAqIENocmlzIFJhdWVyIDxjcmF1ZXJAYWx0ZXJhLmNvbT4NCj4gPiArICogT25nLCBIZWFu LUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+DQo+ID4gKyAqDQo+ID4gKyAqLw0KPiA+ ICsjaWZuZGVmIF9JTlRFTF9WSVBfRFJWX0gNCj4gPiArI2RlZmluZSBfSU5URUxfVklQX0RSVl9I DQo+ID4gKw0KPiA+ICsjZGVmaW5lIERSSVZFUl9OQU1FICAgICJpbnRlbHZpcGZiIg0KPiA+ICsj ZGVmaW5lIEJZVEVTX1BFUl9QSVhFTAkgNA0KPiA+ICsjZGVmaW5lIENSVENfTlVNCSAgICAgICAg MQ0KPiA+ICsjZGVmaW5lIENPTk5fTlVNCSAgICAgICAgMQ0KPiA+ICsNCj4gPiArLyogY29udHJv bCByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBJTlRFTFZJUEZCX0NPTlRST0wJICAgICAgMA0K PiA+ICsjZGVmaW5lIElOVEVMVklQRkJfU1RBVFVTCSAgICAgICAweDQNCj4gPiArI2RlZmluZSBJ TlRFTFZJUEZCX0lOVEVSUlVQVAkgICAgMHg4DQo+ID4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFN RV9DT1VOVEVSCTB4Qw0KPiA+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfRFJPUAkgICAweDEw DQo+ID4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9JTkZPCSAgIDB4MTQNCj4gPiArI2RlZmlu ZSBJTlRFTFZJUEZCX0ZSQU1FX1NUQVJUCSAgMHgxOA0KPiA+ICsjZGVmaW5lIElOVEVMVklQRkJf RlJBTUVfUkVBREVSCSAgICAgICAgIDB4MUMNCj4gPiArDQo+ID4gK2ludCBpbnRlbHZpcGZiX3By b2JlKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ID4gK2ludCBpbnRlbHZpcGZiX3JlbW92ZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOw0KPiA+ICtpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBk cm1fZGV2aWNlICpkcm0pOw0KPiA+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqaW50ZWx2aXBmYl9j b25uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlDQo+ID4gKmRybSk7DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgaW50ZWx2aXBmYl9wcml2IHsNCj4gPiArCS8qKg0KPiA+ICsJICogQHBpcGU6IERpc3BsYXkg cGlwZSBzdHJ1Y3R1cmUNCj4gPiArCSAqLw0KPiA+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlIHBpcGU7DQo+ID4gKw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBAZHJtOiBEUk0gZGV2aWNl DQo+ID4gKwkgKi8NCj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07DQo+ID4gKw0KPiA+ICsJ LyoqDQo+ID4gKwkgKiBAZGlydHlfbG9jazogU2VyaWFsaXplcyBmcmFtZWJ1ZmZlciBmbHVzaGlu Zw0KPiA+ICsJICovDQo+ID4gKwlzdHJ1Y3QgbXV0ZXggZGlydHlfbG9jazsNCj4gPiArDQo+ID4g KwkvKioNCj4gPiArCSAqIEBiYXNlOiBCYXNlIG1lbW9yeSBmb3IgdGhlIGZyYW1lYnVmZmVyDQo+ ID4gKwkgKi8NCj4gPiArCXZvaWQgICAgX19pb21lbSAqYmFzZTsNCj4gPiArDQo+ID4gKwkvKioN Cj4gPiArCSAqIEBmYl9kaXJ0eTogRnJhbWVidWZmZXIgZGlydHkgY2FsbGJhY2sNCj4gPiArCSAq Lw0KPiA+ICsJaW50ICgqZmJfZGlydHkpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZyYW1lYnVm ZmVyLA0KPiA+ICsJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgdW5zaWduZWQgaW50DQo+ ID4gZmxhZ3MsDQo+ID4gKwkJCXVuc2lnbmVkIGludCBjb2xvciwgc3RydWN0IGRybV9jbGlwX3Jl Y3QNCj4gPiAqY2xpcHMsDQo+ID4gKwkJCXVuc2lnbmVkIGludCBudW1fY2xpcHMpOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArI2VuZGlmDQo+IA0KPiBWZXJ5IHRpZHkgZHJpdmVyLCBuaWNlIHdvcmsu IFRoaXMgbG9va3MgcmVhZHkgKGFzaWRlIGZyb20gdGhlIHRpbnkNCj4gbml0cyksDQo+IG9uZSBs YXN0IHF1ZXN0aW9uOiBXaGF0J3MgdGhlIHBsYW4gd2l0aCBtYWludGFpbmlnIHRoaXM/IEZvciBz bWFsbA0KPiBkcml2ZXJzDQo+IEkgYWx3YXlzIHJlY29tbWVuZCBkcm0tbWlzYzoNCj4gDQo+IGh0 dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9tYWludGFpbmVyLXRvb2xzL2NvbW1pdHRl ci1kcm0tbWlzYw0KPiAuaHRtbCNzbWFsbC1kcml2ZXJzDQo+IA0KPiBUaGlzIHdvdWxkIG1lYW4g eW91J2QgbmVlZCB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZiB3aXRoIHRoZSB0b29saW5nDQo+IGFu ZA0KPiBldmVyeXRoaW5nLiBCdXQgdGhpcyBhbHNvIG9ubHkgbWFrZXMgc2Vuc2UgaWYgeW91IGV4 cGVjdCB0aGF0IHRoZXJlDQo+IHdpbGwNCj4gYmUgbW9yZSBjb250cmlidXRpb25zIGZyb20geW91 ciAob3IgeW91ciB0ZWFtKS4NCj4gDQo+IElmIHlvdSB3YW50IHRvIG1haW50YWluIHRoaXMgaW4g ZHJtLW1pc2MgcGxzIGFsc28gYWRkIGEgY29ycmVzcG9uZGluZw0KPiBNQUlOVEFJTkVSUyBlbnRy eSwgd2l0aCB5b3UgYXMgbWFpbnRhaW5lciBhbmQgdGhlIGRybS1taXNjIHJlcG8gYXMNCj4gZ2l0 DQo+IHJlcG8uDQo+IA0KPiBDaGVlcnMsIERhbmllbA0KDQpUaGFua3MgZm9yIGxvb2tpbmcgaW50 byB0aGlzIERhbmllbC4gQ3VycmVudGx5IHRoZXJlIGFyZSBubyBsb25nIHRlcm0NCnJvYWRtYXAg Zm9yIHRoaXMgZHJpdmVyIGJ1dCBpdCBoYXMgdG8gYmUgaW4gdGhlIHVwc3RyZWFtIGtlcm5lbC4N Cg0KSSdkIGxpa2UgdG8gY29udHJpYnV0ZSB0byBkcm0tbWlzYyBob3dldmVyIEknZCBuZWVkIHNv bWUgZ3VpZGFuY2UgaW4NCmZhbWlsaWFyaXppbmcgbXlzZWxmIHdpdGggdGhlIHRvb2xpbmcu