From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v9 2/4] drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem Date: Fri, 8 Nov 2019 19:13:25 +0200 Message-ID: <20191108171325.GF15731@pendragon.ideasonboard.com> References: <20190925235544.11524-1-laurent.pinchart@ideasonboard.com> <20190925235544.11524-3-laurent.pinchart@ideasonboard.com> <20190928000456.GA25231@smtp.xilinx.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8AD816FA1C for ; Fri, 8 Nov 2019 17:13:37 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190928000456.GA25231@smtp.xilinx.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hyun Kwon Cc: Michal Simek , "dri-devel@lists.freedesktop.org" , Satish Kumar Nagireddy List-Id: dri-devel@lists.freedesktop.org SGkgSHl1biwKCihDQydpbmcgRGFuaWVsLCB3aXRoIGEgcXVlc3Rpb24gZm9yIGhpbSBiZWxvdykK Ck9uIEZyaSwgU2VwIDI3LCAyMDE5IGF0IDA1OjA0OjU3UE0gLTA3MDAsIEh5dW4gS3dvbiB3cm90 ZToKPiBPbiBXZWQsIDIwMTktMDktMjUgYXQgMTY6NTU6NDIgLTA3MDAsIExhdXJlbnQgUGluY2hh cnQgd3JvdGU6Cj4gPiBGcm9tOiBIeXVuIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPgo+ID4g Cj4gPiBUaGUgWGlsaW54IFp5bnFNUCBTb0MgaGFzIGEgaGFyZGVuZWQgZGlzcGxheSBwaXBlbGlu ZSBuYW1lZCBEaXNwbGF5UG9ydAo+ID4gU3Vic3lzdGVtLiBJdCBpbmNsdWRlcyBhIGJ1ZmZlciBt YW5hZ2VyLCBhIHZpZGVvIHBpcGVsaW5lIHJlbmRlcmVyCj4gPiAoYmxlbmRlciksIGFuIGF1ZGlv IG1peGVyIGFuZCBhIERpc3BsYXlQb3J0IHNvdXJjZSBjb250cm9sbGVyCj4gPiAodHJhbnNtaXR0 ZXIpLiBUaGUgRE1BIGVuZ2luZSB0aGUgcHJvdmlkZSBkYXRhIHRvIHRoZSBidWZmZXIgbWFuYWdl ciwgYXMKPiA+IHdlbGwgYXMgdGhlIERpc3BsYXlQb3J0IFBIWXMgdGhhdCBkcml2ZSB0aGUgbGFu ZXMsIGFyZSBleHRlcm5hbCB0byB0aGUKPiA+IHN1YnN5c3RlbSBhbmQgaW50ZXJmYWNlZCB1c2lu ZyB0aGUgRE1BIGVuZ2luZSBhbmQgUEhZIEFQSXMgcmVzcGVjdGl2ZWx5Lgo+ID4gCj4gPiBUaGlz IGRyaXZlciBzdXBwb3J0cyB0aGUgRGlzcGxheVBvcnQgU3Vic3lzdGVtIGFuZCBpbXBsZW1lbnRz Cj4gPiAKPiA+IC0gVHdvIHBsYW5lcywgZm9yIGdyYXBoaWNzIGFuZCB2aWRlbwo+ID4gLSBPbmUg Q1JUQyB0aGF0IHN1cHBvcnRzIGFscGhhIGJsZW5kaW5nCj4gPiAtIE9uZSBlbmNvZGVyIGZvciB0 aGUgRGlzcGxheVBvcnQgdHJhbnNtaXR0ZXIKPiA+IC0gT25lIGNvbm5lY3RvciBmb3IgYW4gZXh0 ZXJuYWwgbW9uaXRvcgo+ID4gCj4gPiBJdCBjdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0Cj4gPiAK PiA+IC0gQ29sb3Iga2V5aW5nCj4gPiAtIFRlc3QgcGF0dGVybiBnZW5lcmF0aW9uCj4gPiAtIEF1 ZGlvCj4gPiAtIExpdmUgaW5wdXQgZnJvbSB0aGUgUHJvZ3JhbW1hYmxlIExvZ2ljIChGUEdBKQo+ ID4gLSBPdXRwdXQgdG8gdGhlIFByb2dyYW1tYWJsZSBMb2dpYyAoRlBHQSkKPiA+IAo+ID4gU2ln bmVkLW9mZi1ieTogSHl1biBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4KPiA+IFNpZ25lZC1v ZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNv bT4KPiA+IC0tLQo+ID4gTm90YWJsZSBjaGFuZ2VzIHNpbmNlIHY4Ogo+ID4gCj4gPiAtIFJlYmFz ZSBvbiB0b3Agb2YgdjUuMyBhbmQgdXBkYXRlIHRvIEFQSSBjaGFuZ2VzCj4gPiAtIENsZWFudXAg I2luY2x1ZGUgc3RhdGVtZW50cwo+ID4gLSBVc2UgdGhlIG1vZGUgY29uZmlnIHN1c3BlbmQvcmVz dW1lIGhlbHBlcnMKPiA+IC0gUmVtb3ZlIHVudXNlZCBjb2RlIChtYWNyb3MsIGZpZWxkcywgZnVu Y3Rpb25zLCAuLi4pCj4gPiAtIFNvcnQgaGVhZGVycyBhbmQgZm9yd2FyZCBkZWNsYXJhdGlvbnMg YWxwaGFiZXRpY2FsbHkKPiA+IC0gVXNlIG1vcmUgc3RhbmRhcmQgRFJNL0tNUyBoZWxwZXJzIChz dXNwZW5kL3Jlc3VtZSwgZmJkZXYsCj4gPiAgIERFRklORV9EUk1fR0VNX0NNQV9GT1BTKQo+ID4g LSBEcm9wIHN1cHBvcnQgZm9yIGhhbGYtaW1wbGVtZW50ZWQgb3IgdW5zdXBwb3J0ZWQgZmVhdHVy ZXMgKHNvdW5kIERUCj4gPiAgIGJpbmRpbmdzIHBhcnNpbmcsIGludGVyZmFjZSB3aXRoIFBMKQo+ ID4gLSBSZW1vdmUgdGhlIHhsbnggZHJtIGhlbHBlcnMKPiAKPiBUaGlzIHdpbGwgaGF2ZSBpbXBh Y3Qgb24gb3RoZXIgZG93bnN0cmVhbSBkcml2ZXJzLCBhcyB0aGlzIGlzIHNoYXJlZCBsYXllcgo+ IGluIHhsbnggdHJlZS4KClJpZ2h0LiBXZSBtYXkgbm90IHdhbnQgdG8gZHJvcCB0aGVtIGNvbXBs ZXRlbHksIGJ1dCBJIGRvbid0IHRoaW5rCmludHJvZHVjaW5nIHRoZW0gZm9yIHRoaXMgZHJpdmVy IGlzIHRoZSByaWdodCB0aGluZyB0byBkby4gSXQncyB1c3VhbGx5CmJldHRlciB0byBzdGFydCB3 aXRoIHR3byBkcml2ZXJzIGFuZCBjcmVhdGUgaGVscGVycyBvdXQgb2YgdGhlbSBpbnN0ZWFkCm9m IGNyZWF0aW5nIGhlbHBlcnMgdXAtZnJvbnQgYW5kIG1ha2luZyB0aGUgZHJpdmVycyBmaXQgdGhl bS4KCkkgY2FuIGNlcnRhaW5seSBoZWxwIHdpdGggdGhlIGhlbHBlcnMgYW5kIHRoZSBvdGhlciBk cml2ZXJzIHRoYXQgdXNlCnRoZW0sIGJ1dCBiYXNlZCBvbiB3aGF0IEkndmUgc2VlbiwgdGhlcmUn cyBubyBjb2RlIHRoYXQgZXhwb3NlcyBtdWx0aXBsZQpDUlRDcyBhdCB0aGUgbW9tZW50LCBzbyBo ZWxwZXJzIGZvciB0aGlzIGFyZSBsaWtlbHkgbm90IG5lZWRlZC4gT3IgZGlkIEkKbWlzcyBzb21l dGhpbmcgPwoKPiA+IC0gUmVtb3ZlIHNvbWUgbW9kdWxlIHBhcmFtZXRlcnMKPiAKPiBUaGUgZGVm YXVsdCBmb3JtYXQgbW9kdWxlIHBhcmFtZXRlciBpcyByZXF1aXJlZCB0byBjaGFuZ2UgdGhlIGZi ZGV2Cj4gZm9ybWF0LiBUaGUgZmJkZXYgc2VlbXMgd2lkZWx5IHVzZWQgaW4gbWFueSBhcHBsaWNh dGlvbnMsIGVzcGVjaWFsbHkKPiBhbG9uZyB3aXRoIGdyYXBoaWNzIHN0YWNrLgoKRG9lc24ndCBm YmRldiBhbHdheXMgcGVyZm9ybSBhIG1vZGUgc2V0LCBhbmQgdGh1cyBvdmVycmlkZSB0aGlzID8K Cj4gPiAtIFJlb3JnYW5pemUgY29kZSBpbiBzZWN0aW9ucywgd2l0aCBiZXR0ZXIgc2VwYXJhdGlv biBvZiBvcGVyYXRpb25zCj4gPiAtIEJldHRlciBzZXBhcmF0aW9uIG9mIHRoZSBlbmNvZGVyIGZy b20gdGhlIENSVEMKPiA+IC0gRHJvcCB0aGUgY29tcG9uZW50IGZyYW1ld29yawo+ID4gLSBWYXJp b3VzIGtlcm5lbGRvYyByZXdvcmtzLCB3aXRoIHJlbmFtZXMgb2Ygc3RydWN0dXJlcywgZmllbGRz IGFuZAo+ID4gICBmdW5jdGlvbnMKPiA+IC0gRml4IHZibGFuayBhbmQgcGFnZSBmbGlwIGV2ZW50 IGhhbmRsaW5nCj4gPiAtIFJlbW92ZSBoYWNrIHRvIGRpc2FibGUgY2xvY2tzIGF0IHN0YXJ0dXAK PiAKPiBIb2VwZnVsbHksIGl0J3MgZml4ZWQgaW4gZmlybXdhcmUuIFByZXZpb3VzbHkgaXQgd2Fz bid0IGd1YXJhbnRlZWQKPiB0aGF0IHRoZSBjbG9jayBpcyBkaXNhYmxlZCBhdCBib290dXAsIGJl Y2F1c2UgaXQgd2FzIG9uZSBvZiBkZXNpZ24KPiBwYXJhbWV0ZXJzLiBUaGVuIGlmIHRoZSBjbG9j ayByYXRlIGNoYW5nZWQgd2hlbiBlbmFibGVkLCBpdCByZXN1bHRlZAo+IGluIGluY29ycmVjdCBy YXRlLgoKRXZlbiBpZiB0aGUgZmlybXdhcmUgaGFuZGxlcyB0aGlzIGluY29ycmVjdGx5LCBJIHRo aW5rIHRoZSB3b3JrYXJvdW5kCnNob3VsZCBiZSBpbiB0aGUgY2xvY2sgZHJpdmVyLCBub3QgaW4g dGhlIGRwc3ViIGRyaXZlci4gSSBjYW4gdHJ5IHRvCmhhbmRsZSB0aGlzIG9uIHRvcCBvZiB0aGUg ZHBzdWIgc2VyaWVzLiBJdCB3aWxsIHJlcXVpcmUgbW92aW5nIHRvCnByb2dyYW1tYWJsZSBjbG9j a3MgZmlyc3QgdGhvdWdoLCB0aGUgdXBzdHJlYW0gWnlucU1QIERUIHNvdXJjZXMgdXNlCmZpeGVk IGNsb2Nrcy4KCj4gPiAtIFVwZGF0ZSBjb3B5cmlnaHQgaGVhZGVycwo+ID4gLSBNb3ZlIGNoZWNr cyBmcm9tIGF0b21pYyBjb21taXQgdGltZSB0byBhdG9taWMgY2hlY2sgdGltZQo+ID4gLSBSZW1v dmUgcGFydGlhbCBzdXBwb3J0IGZvciB0aGUgVFBHCj4gPiAtIFJlbW92ZSBwYXJ0aWFsIHN1cHBv cnQgZm9yIGxpdmUgaW5wdXRzCj4gPiAtIFJlbW92ZSBhc3luYyB1cGRhdGUgc3VwcG9ydAo+IAo+ IEFsbCBhYm92ZSAzIGFyZSBhY3R1YWxseSByZXF1ZXN0ZWQgZmVhdHVyZXMgLyBmaXhlcy4KCkkg dGhpbmsgd2Ugc2hvdWxkIGhhdmUgVFBHIGFuZCBsaXZlIGlucHV0cyBzdXBwb3J0LCBidXQgaXQg d2FzIG9ubHkgaGFsZgppbXBsZW1lbnRlZC4gSXQncyBiZXN0LCBJIGJlbGlldmUsIGdpdmVuIGhv dyBsYXJnZSB0aGUgZHJpdmVyIGFscmVhZHkKaXMsIHRvIGRyb3AgdGhlIGhhbGYgaW1wbGVtZW50 YXRpb24gbm93IGFuZCB0aGVuIGFkZCBhIGZ1bGwKaW1wbGVtZW50YXRpb24gb24gdG9wLiBJZiBh bnlvbmUgY2FuIHByb3ZpZGUgbWUgd2l0aCBndWlkYW5jZSByZWdhcmRpbmcKcHJpb3JpdGllcyBi ZXR3ZWVuIHRob3NlIGl0ZW1zLCBJIGNhbiBzdGFydCB3b3JraW5nIG9uIHRoZW0uIEZvciBsaXZl CmlucHV0cyBhbmQgYXN5bmMgdXBkYXRlcyBJIHdvdWxkIGFsc28gbmVlZCB0byBrbm93IGFib3V0 IHRoZSB1c2UgY2FzZXMuCgo+ID4gLSBDbGVhbiB1cCBEUCBUWCBpbml0aWFsaXNhdGlvbiBhbmQg Y2xlYW51cAo+ID4gLS0tCj4gPiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgOSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAg IHwgICAgMiArCj4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgIHwg ICAgMSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngvS2NvbmZpZyAgICAgICAgICAgIHwgICAx MyArCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngvTWFrZWZpbGUgICAgICAgICAgIHwgICAgMiAr Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngvenlucW1wX2Rpc3AuYyAgICAgIHwgMTY3OCArKysr KysrKysrKysrKysrKysrKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kaXNw LmggICAgICB8ICAgNDMgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kaXNwX3Jl Z3MuaCB8ICAyMDEgKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngvenlucW1wX2RwLmMgICAg ICAgIHwgMTY3NyArKysrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hs bngvenlucW1wX2RwLmggICAgICAgIHwgICAyOSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL3hsbngv enlucW1wX2Rwc3ViLmMgICAgIHwgIDMzMSArKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS94bG54 L3p5bnFtcF9kcHN1Yi5oICAgICB8ICAgNDggKwo+ID4gIDEyIGZpbGVzIGNoYW5nZWQsIDQwMzQg aW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGxu eC9LY29uZmlnCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L01h a2VmaWxlCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94bG54L3p5bnFt cF9kaXNwLmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hsbngvenlu cW1wX2Rpc3AuaAo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGxueC96 eW5xbXBfZGlzcF9yZWdzLmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L3hsbngvenlucW1wX2RwLmMKPiAKPiBbc25pcF0KPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+IGluZGV4IDlm MGQyZWUzNTc5NC4uZWI5MWNmZGFjMTNhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+IEBAIC0xMjAs MyArMTIwLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9MSU1BKSAgKz0gbGltYS8KPiA+ICBvYmotJChD T05GSUdfRFJNX1BBTkZST1NUKSArPSBwYW5mcm9zdC8KPiA+ICBvYmotJChDT05GSUdfRFJNX0FT UEVFRF9HRlgpICs9IGFzcGVlZC8KPiA+ICBvYmotJChDT05GSUdfRFJNX01DREUpICs9IG1jZGUv Cj4gPiArb2JqLXkJCQkrPSB4bG54Lwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94 bG54L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0veGxueC9LY29uZmlnCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYTZjZDg4OWJkMTEKPiA+IC0tLSAv ZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94bG54L0tjb25maWcKPiA+IEBAIC0w LDAgKzEsMTMgQEAKPiA+ICtjb25maWcgRFJNX1pZTlFNUF9EUFNVQgo+ID4gKwl0cmlzdGF0ZSAi WnlucU1QIERpc3BsYXlQb3J0IENvbnRyb2xsZXIgRHJpdmVyIgo+ID4gKwlkZXBlbmRzIG9uIEFS Q0hfWllOUU1QIHx8IENPTVBJTEVfVEVTVAo+ID4gKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsgJiYg RFJNICYmIE9GCj4gPiArCXNlbGVjdCBETUFfRU5HSU5FCj4gPiArCXNlbGVjdCBEUk1fR0VNX0NN QV9IRUxQRVIKPiA+ICsJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ID4gKwlzZWxlY3QgRFJN X0tNU19IRUxQRVIKPiA+ICsJc2VsZWN0IEdFTkVSSUNfUEhZCj4gCj4gQ2FuIHdlIGVuZm9yY2Ug dGhlIERSTV9GQkRFVl9PVkVSQUxMT0M9MjAwIGZvciB0aGlzIGRyaXZlciBzb21laG93PyBPciBz aG91bGQKPiBpdCBiZSBkb25lIGluIHRoZSBkZWZjb25maWc/IFRoaXMgaXMgcmVxdWlyZWQsIGVz cGVjaWFsbHkgd2hlbiB1c2VkIGJ5IHRoZSBHUFUKPiBkcml2ZXIgdG8gc3dhcCBidWZmZXJzLgoK SSB0aGluayBpdCB3aWxsIGhhdmUgdG8gZ28gaW4gYSBkZWZjb25maWcsIGFzIGZhciBhcyBJIGtu b3cgdGhlcmUncyBubwp3YXkgdG8gZG8gYSBzZWxlY3QgRFJNX0ZCREVWX09WRVJBTExPQz0yMDAK Cj4gPiArCWhlbHAKPiA+ICsJICBUaGlzIGlzIGEgRFJNL0tNUyBkcml2ZXIgZm9yIFp5bnFNUCBE aXNwbGF5UG9ydCBjb250cm9sbGVyLiBDaG9vc2UKPiA+ICsJICB0aGlzIG9wdGlvbiBpZiB5b3Ug aGF2ZSBhIFhpbGlueCBaeW5xTVAgU29DIHdpdGggRGlzcGxheVBvcnQKPiA+ICsJICBzdWJzeXN0 ZW0uCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hsbngvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0veGxueC9NYWtlZmlsZQo+IAo+IFtzbmlwXQo+IAo+ID4gKwo+ID4gKy8qKgo+ ID4gKyAqIHp5bnFtcF9kaXNwX2F2YnVmX2VuYWJsZV9jaGFubmVscyAtIEVuYWJsZSBidWZmZXIg Y2hhbm5lbHMKPiA+ICsgKiBAYXZidWY6IEF1ZGlvL3ZpZGVvIGJ1ZmZlciBtYW5hZ2VyCj4gPiAr ICoKPiA+ICsgKiBFbmFibGUgYWxsICh2aWRlbyBhbmQgYXVkaW8pIGJ1ZmZlciBjaGFubmVscy4K PiA+ICsgKi8KPiA+ICtzdGF0aWMgdm9pZCB6eW5xbXBfZGlzcF9hdmJ1Zl9lbmFibGVfY2hhbm5l bHMoc3RydWN0IHp5bnFtcF9kaXNwX2F2YnVmICphdmJ1ZikKPiA+ICt7Cj4gPiArCXVuc2lnbmVk IGludCBpOwo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4gKwl2YWwgPSBaWU5RTVBfRElTUF9BVl9C VUZfQ0hCVUZfRU4KPiA+ICsJICAgIHwgKFpZTlFNUF9ESVNQX0FWX0JVRl9DSEJVRl9CVVJTVF9M RU5fTUFYIDw8Cj4gCj4gTml0LiBUaGUgbGluZSBiZXR0ZXIgZW5kIHdpdGggYW4gb3BlcmF0b3Ig J3wnLgoKSSBsaWtlIGl0IGJldHRlciB3aXRoIHwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlu ZSA6LSkgQXMgdGhpcyBpcyBhCm1hdHRlciBvZiBzdHlsZSwgYW5kIHlvdSBhdXRob3JlZCB0aGUg ZHJpdmVyLCBJIHdpbGwgY2hhbmdlIGl0LgoKPiA+ICsJICAgICAgIFpZTlFNUF9ESVNQX0FWX0JV Rl9DSEJVRl9CVVJTVF9MRU5fU0hJRlQpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgWllO UU1QX0RJU1BfQVZfQlVGX05VTV9WSURfR0ZYX0JVRkZFUlM7IGkrKykKPiA+ICsJCXp5bnFtcF9k aXNwX2F2YnVmX3dyaXRlKGF2YnVmLCBaWU5RTVBfRElTUF9BVl9CVUZfQ0hCVUYoaSksCj4gPiAr CQkJCQl2YWwpOwo+ID4gKwo+ID4gKwl2YWwgPSBaWU5RTVBfRElTUF9BVl9CVUZfQ0hCVUZfRU4K PiA+ICsJICAgIHwgKFpZTlFNUF9ESVNQX0FWX0JVRl9DSEJVRl9CVVJTVF9MRU5fQVVEX01BWCA8 PAo+IAo+IEhlcmUgdG9vLgo+IAo+ID4gKwkgICAgICAgWllOUU1QX0RJU1BfQVZfQlVGX0NIQlVG X0JVUlNUX0xFTl9TSElGVCk7Cj4gPiArCj4gPiArCWZvciAoOyBpIDwgWllOUU1QX0RJU1BfQVZf QlVGX05VTV9CVUZGRVJTOyBpKyspCj4gPiArCQl6eW5xbXBfZGlzcF9hdmJ1Zl93cml0ZShhdmJ1 ZiwgWllOUU1QX0RJU1BfQVZfQlVGX0NIQlVGKGkpLAo+ID4gKwkJCQkJdmFsKTsKPiA+ICt9Cj4g PiArCj4gCj4gW3NuaXBdCj4gCj4gPiArCj4gPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ ICsgKiBCbGVuZGVyIChWaWRlbyBQaXBlbGluZSkKPiA+ICsgKi8KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCB6eW5xbXBfZGlzcF9ibGVuZF93cml0ZShzdHJ1Y3QgenlucW1wX2Rpc3BfYmxlbmQgKmJs ZW5kLAo+ID4gKwkJCQkgICAgaW50IHJlZywgdTMyIHZhbCkKPiA+ICt7Cj4gPiArCXdyaXRlbCh2 YWwsIGJsZW5kLT5iYXNlICsgcmVnKTsKPiA+ICt9Cj4gPiArCj4gPiArLyoKPiA+ICsgKiBDb2xv cnNwYWNlIGNvbnZlcnNpb24gbWF0cmljZXMuCj4gPiArICoKPiA+ICsgKiBIYXJkY29kZSBSR0Ig PC0+IFlVViBjb252ZXJzaW9uIHRvIGZ1bGwtcmFuZ2UgU0RUViBmb3Igbm93Lgo+ID4gKyAqLwo+ ID4gK3N0YXRpYyBjb25zdCB1MTYgY3NjX3plcm9fbWF0cml4W10gPSB7Cj4gPiArCTB4MCwgICAg MHgwLCAgICAweDAsCj4gPiArCTB4MCwgICAgMHgwLCAgICAweDAsCj4gPiArCTB4MCwgICAgMHgw LCAgICAweDAKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCB1MTYgY3NjX2lkZW50aXR5 X21hdHJpeFtdID0gewo+ID4gKwkweDEwMDAsIDB4MCwgICAgMHgwLAo+ID4gKwkweDAsICAgIDB4 MTAwMCwgMHgwLAo+ID4gKwkweDAsICAgIDB4MCwgICAgMHgxMDAwCj4gPiArfTsKPiA+ICsKPiA+ ICtzdGF0aWMgY29uc3QgdTMyIGNzY196ZXJvX29mZnNldHNbXSA9IHsKPiA+ICsJMCwgMCwgMAo+ ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHUxNiBjc2NfcmdiX3RvX3NkdHZfbWF0cml4 W10gPSB7Cj4gPiArCTB4NGM5LCAgMHg4NjQsICAweDFkMywKPiA+ICsJMHg3ZDRkLCAweDdhYjMs IDB4ODAwLAo+ID4gKwkweDgwMCwgIDB4Nzk0ZCwgMHg3ZWIzCj4gPiArfTsKPiA+ICsKPiA+ICtz dGF0aWMgY29uc3QgdTMyIGNzY19yZ2JfdG9fc2R0dl9vZmZzZXRzW10gPSB7Cj4gPiArCTB4MCwg MHg4MDAwMDAwLCAweDgwMDAwMDAKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCB1MTYg Y3NjX3NkdHZfdG9fcmdiX21hdHJpeFtdID0gewo+ID4gKwkweDEwMDAsIDB4MTY2ZiwgMHgwLAo+ ID4gKwkweDEwMDAsIDB4NzQ4MywgMHg3YTdmLAo+ID4gKwkweDEwMDAsIDB4MCwgICAgMHgxYzVh Cj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3QgdTMyIGNzY19zZHR2X3RvX3JnYl9vZmZz ZXRzW10gPSB7Cj4gPiArCTB4MCwgMHgxODAwLCAweDE4MDAKPiA+ICt9Owo+IAo+IEp1c3QgYSBx dWVzdGlvbi4gVGhlc2UgYXJlIGFsbCBwcm9ncmFtYWJsZSBwYXJhbWV0ZXJzLiBJZiB3ZSB3YW50 IHRvIGFsbG93IHVzZXJzIHRvCj4gY2hhbmdlIHRoZXNlLCB3aGF0J2QgYmUgdGhlIGJlc3Qgd2F5 PyBUaGUgZHJtIHByb3BlcnRpZXMgc2VlbXMgZ2V0dGluZyBtb3JlIHN0cmljdAo+IGNvbnRyb2xs ZWQsIGFuZCB0aGVyZSBhcmUgYSBmZXcgbW9yZSwgZXggVFBHIC8gYWxwaGEgLywsLCB0aGF0IGFy ZSBub3QgaW5jbHVkZWQgaW4KPiB0aGlzIHNldC4KClRoZXJlIGFyZSBjb2xvciBzcGFjZSBjb252 ZXJzaW9uIHByb3BlcnRpZXMsIEkgdGhpbmsgdGhleSB3b3VsZCBiZSBhCmdvb2QgbWF0Y2ggZm9y IHRoaXMuIElmIHByb3BlcnRpZXMgYXJlIG1pc3Npbmcgd2UgbmVlZCB0byBhZGQgdGhlbSwgYnV0 CmluIHRoYXQgY2FzZSB3ZSB3aWxsIGFsc28gbmVlZCB0byBzaG93IGEgdXNlcnNwYWNlIGltcGxl bWVudGF0aW9uIHRoYXQKbWFrZXMgdXNlIG9mIHRoZW0uIFRQRyBtYXkgYmUgYSBiaXQgb2YgYSBn cmV5IGFyZWEsIGFzIEknbSBub3Qgc3VyZSBpbgp3aGF0IHVzZXJzcGFjZSBpdCBjb3VsZCBmaXQu IFBvc3NpYmx5IGlndCA/IERhbmllbCwgd2hhdCdzIHlvdXIgb3BpbmlvbgphYm91dCB0ZXN0IHBh dHRlcm4gZ2VuZXJhdG9yIHByb3BlcnRpZXMgPyBTaG91bGQgd2UgcGVyaGFwcyBleHBvc2UgdGhl bQp0aHJvdWdoIHN5c2ZzIGluc3RlYWQsIHNpbWlsYXJseSB0byBob3cgQ1JDIHdvcmtzID8KCj4g PiArCj4gPiArLyoqCj4gPiArICogenlucW1wX2Rpc3BfYmxlbmRfc2V0X291dHB1dF9mb3JtYXQg LSBTZXQgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhlIGJsZW5kZXIKPiA+ICsgKiBAYmxlbmQ6IEJs ZW5kZXIgb2JqZWN0Cj4gPiArICogQGZvcm1hdDogT3V0cHV0IGZvcm1hdAo+ID4gKyAqCj4gPiAr ICogU2V0IHRoZSBvdXRwdXQgZm9ybWF0IG9mIHRoZSBibGVuZGVyIHRvIEBmb3JtYXQuCj4gPiAr ICovCj4gPiArc3RhdGljIHZvaWQgenlucW1wX2Rpc3BfYmxlbmRfc2V0X291dHB1dF9mb3JtYXQo c3RydWN0IHp5bnFtcF9kaXNwX2JsZW5kICpibGVuZCwKPiA+ICsJCQkJCQllbnVtIHp5bnFtcF9k cHN1Yl9mb3JtYXQgZm9ybWF0KQo+ID4gK3sKPiA+ICsJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBibGVuZF9vdXRwdXRfZm10c1tdID0gewo+ID4gKwkJW1pZTlFNUF9EUFNVQl9GT1JNQVRfUkdC XSA9IFpZTlFNUF9ESVNQX1ZfQkxFTkRfT1VUUFVUX1ZJRF9GTVRfUkdCLAo+ID4gKwkJW1pZTlFN UF9EUFNVQl9GT1JNQVRfWUNSQ0I0NDRdID0gWllOUU1QX0RJU1BfVl9CTEVORF9PVVRQVVRfVklE X0ZNVF9ZQ0JDUjQ0NCwKPiA+ICsJCVtaWU5RTVBfRFBTVUJfRk9STUFUX1lDUkNCNDIyXSA9IFpZ TlFNUF9ESVNQX1ZfQkxFTkRfT1VUUFVUX1ZJRF9GTVRfWUNCQ1I0MjIKPiA+ICsJCQkJCSAgICAg ICB8IFpZTlFNUF9ESVNQX1ZfQkxFTkRfT1VUUFVUX1ZJRF9GTVRfRU5fRE9XTlNBTVBMRSwKPiA+ ICsJCVtaWU5RTVBfRFBTVUJfRk9STUFUX1lPTkxZXSA9IFpZTlFNUF9ESVNQX1ZfQkxFTkRfT1VU UFVUX1ZJRF9GTVRfWU9OTFksCj4gPiArCX07Cj4gPiArCj4gPiArCXUzMiBmbXQgPSBibGVuZF9v dXRwdXRfZm10c1tmb3JtYXRdOwo+IAo+IFtzbmlwXQo+IAo+ID4gK30KPiA+ICsKPiA+ICsvKioK PiA+ICsgKiB6eW5xbXBfZGlzcF9ibGVuZF9sYXllcl9lbmFibGUgLSBFbmFibGUgYSBsYXllcgo+ ID4gKyAqIEBibGVuZDogQmxlbmRlciBvYmplY3QKPiA+ICsgKiBAbGF5ZXI6IFRoZSBsYXllcgo+ ID4gKyAqLwo+ID4gK3N0YXRpYyB2b2lkIHp5bnFtcF9kaXNwX2JsZW5kX2xheWVyX2VuYWJsZShz dHJ1Y3QgenlucW1wX2Rpc3BfYmxlbmQgKmJsZW5kLAo+ID4gKwkJCQkJICAgc3RydWN0IHp5bnFt cF9kaXNwX2xheWVyICpsYXllcikKPiA+ICt7Cj4gPiArCWNvbnN0IHUxNiAqY29lZmZzOwo+ID4g Kwljb25zdCB1MzIgKm9mZnNldHM7Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IChs YXllci0+ZHJtX2ZtdC0+aXNfeXV2ID8KPiA+ICsJICAgICAgIDAgOiBaWU5RTVBfRElTUF9WX0JM RU5EX0xBWUVSX0NPTlRST0xfUkdCKQo+ID4gKwkgICAgfCAobGF5ZXItPmRybV9mbXQtPmhzdWIg PiAxID8KPiAKPiBEaXR0byBmb3IgJ3wnLgo+IAo+ID4gKwkgICAgICAgWllOUU1QX0RJU1BfVl9C TEVORF9MQVlFUl9DT05UUk9MX0VOX1VTIDogMCk7Cj4gPiArCj4gPiArCXp5bnFtcF9kaXNwX2Js ZW5kX3dyaXRlKGJsZW5kLAo+ID4gKwkJCQlaWU5RTVBfRElTUF9WX0JMRU5EX0xBWUVSX0NPTlRS T0wobGF5ZXItPmlkKSwKPiAKPiBbc25pcF0KPiAKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlu dCB6eW5xbXBfZHBzdWJfZHJtX2luaXQoc3RydWN0IHp5bnFtcF9kcHN1YiAqZHBzdWIpCj4gPiAr ewo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4g Kwlkcm0gPSBkcm1fZGV2X2FsbG9jKCZ6eW5xbXBfZHBzdWJfZHJtX2RyaXZlciwgZHBzdWItPmRl dik7Cj4gPiArCWlmIChJU19FUlIoZHJtKSkKPiA+ICsJCXJldHVybiBQVFJfRVJSKGRybSk7Cj4g PiArCj4gPiArCWRwc3ViLT5kcm0gPSBkcm07Cj4gPiArCWRybS0+ZGV2X3ByaXZhdGUgPSBkcHN1 YjsKPiA+ICsKPiA+ICsJLyogSW5pdGlhbGl6ZSBtb2RlIGNvbmZpZywgdmJsYW5rIGFuZCB0aGUg S01TIHBvbGwgaGVscGVyLiAqLwo+ID4gKwlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOwo+ID4g Kwo+ID4gKwlkcm0tPm1vZGVfY29uZmlnLmZ1bmNzID0gJnp5bnFtcF9kcHN1Yl9tb2RlX2NvbmZp Z19mdW5jczsKPiAKPiBbc25pcF0KPiAKPiA+ICt9Owo+ID4gKwo+ID4gK21vZHVsZV9wbGF0Zm9y bV9kcml2ZXIoenlucW1wX2Rwc3ViX2RyaXZlcik7Cj4gPiArCj4gPiArTU9EVUxFX0FVVEhPUigi WGlsaW54LCBJbmMuIik7Cj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJaeW5xTVAgRFAgU3Vic3lz dGVtIERyaXZlciIpOwo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0veGxueC96eW5xbXBfZHBzdWIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS94bG54L3p5bnFtcF9kcHN1Yi5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi5kNGUwNjEzZDJmODIKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS94bG54L3p5bnFtcF9kcHN1Yi5oCj4gPiBAQCAtMCwwICsxLDQ4IEBACj4g PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiA+ICsvKgo+ID4gKyAq IFp5bnFNUCBEUFNVQiBTdWJzeXN0ZW0gRHJpdmVyCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTcgLSAyMDE5IFhpbGlueCwgSW5jLgo+ID4gKyAqCj4gPiArICogQXV0aG9yczoKPiA+ ICsgKiAtIEh5dW4gV29vIEt3b24gPGh5dW4ua3dvbkB4aWxpbnguY29tPgo+ID4gKyAqIC0gTGF1 cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ID4gKyAq Lwo+ID4gKwo+ID4gKyNpZm5kZWYgX1pZTlFNUF9EUFNVQl9IXwo+ID4gKyNkZWZpbmUgX1pZTlFN UF9EUFNVQl9IXwo+ID4gKwo+ID4gK3N0cnVjdCBjbGs7Cj4gPiArc3RydWN0IGRldmljZTsKPiA+ ICtzdHJ1Y3QgZHJtX2RldmljZTsKPiA+ICtzdHJ1Y3QgenlucW1wX2Rpc3A7Cj4gPiArc3RydWN0 IHp5bnFtcF9kcDsKPiA+ICsKPiA+ICtlbnVtIHp5bnFtcF9kcHN1Yl9mb3JtYXQgewo+ID4gKwla WU5RTVBfRFBTVUJfRk9STUFUX1JHQiwKPiA+ICsJWllOUU1QX0RQU1VCX0ZPUk1BVF9ZQ1JDQjQ0 NCwKPiA+ICsJWllOUU1QX0RQU1VCX0ZPUk1BVF9ZQ1JDQjQyMiwKPiA+ICsJWllOUU1QX0RQU1VC X0ZPUk1BVF9ZT05MWSwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIHN0cnVjdCB6eW5x bXBfZHBzdWIgLSBaeW5xTVAgRGlzcGxheVBvcnQgU3Vic3lzdGVtCj4gPiArICogQGRybTogVGhl IERSTS9LTVMgZGV2aWNlCj4gPiArICogQGRldjogVGhlIHBoeXNpY2FsIGRldmljZQo+ID4gKyAq IEBkaXNwOiBUaGUgZGlzcGxheSBjb250cm9sbGVyCj4gPiArICogQGRwOiBUaGUgRGlzcGxheVBv cnQgY29udHJvbGxlcgo+ID4gKyAqIEBhbGlnbjogQnVmZmVyIHBpdGNoIGFsaWdubWVudCBjb25z dHJhaW50IChtdXN0IGJlIGEgcG93ZXIgb2YgMikKPiAKPiBUaGlzIGlzIGEgbGl0dGxlIG1pc2xl YWRpbmcuIFRoZSBhbGluZ21lbnQgbGltaXRhdGlvbiBpcyBmcm9tIERNQS4KPiBUaGUgZGVkaWNh dGVkIERNQSByZXF1aXJlcyAyNTYgYnl0ZSBhbGlnbm1lbnQsIGZvciBleGFtcGxlLgoKWW91J3Jl IHJpZ2h0LCBJJ2xsIHJlcGhyYXNlIHRoYXQgYXMgIkRNQSBhbGlnbm1lbnQgY29uc3RyYWludCAo bXVzdCBiZSBhCnBvd2VyIG9mIDIpIiBhbmQgd2lsbCByZW5hbWUgdGhlIGZpZWxkIHRvIGRtYV9h bGlnbi4KCj4gPiArICovCj4gPiArc3RydWN0IHp5bnFtcF9kcHN1YiB7Cj4gPiArCXN0cnVjdCBk cm1fZGV2aWNlICpkcm07Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ICsKPiA+ICsJc3Ry dWN0IGNsayAqYXBiX2NsazsKPiAKPiBUaGUgZGVzY3JpcHRpb24gaXMgbWlzc2luZyBmb3IgdGhp cyBvbmUuCgpPb3BzLCBJJ2xsIGZpeCB0aGF0LgoKPiA+ICsKPiA+ICsJc3RydWN0IHp5bnFtcF9k aXNwICpkaXNwOwo+ID4gKwlzdHJ1Y3QgenlucW1wX2RwICpkcDsKPiA+ICsKPiA+ICsJdW5zaWdu ZWQgaW50IGFsaWduOwo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhpcyB2YXJpYWJsZSBpcyBuZWVkZWQs IGJ1dCBtYXliZSBpdCdzIHNpbXBsZXIgd2l0aCB0aGlzLgoKVGhlIGFsaWdubWVudCBjb25zdHJh aW50IG5lZWRzIHRvIGJlIGVuZm9yY2VkIGluCnp5bnFtcF9kcHN1Yl9kdW1iX2NyZWF0ZSgpIGFu ZCB6eW5xbXBfZHBzdWJfZmJfY3JlYXRlKCksIGltcGxlbWVudGVkIGluCnp5bnFtcF9kcHN1Yi5j LCB3aGljaCBtb2RlbHMgdGhlIHRvcC1sZXZlbCBEUk0vS01TIGRldmljZS4gVGhlIHZhbHVlIGlz CnJldHJpZXZlZCBmcm9tIHRoZSBEUERNQSBlbmdpbmUsIG9ubHkgdmlzaWJsZSB0byB6eW5xbXBf ZGlzcC5jLCB3aGljaAptb2RlbHMgdGhlIGRpc3BsYXkgY29udHJvbGxlciBwYXJ0IG9mIHRoZSBz dWJzeXN0ZW0gKGFuZCB0aHVzIHRoZQpwbGFuZXMsIENSVEMsIGVuY29kZXIgYW5kIGNvbm5lY3Rv cikuIFRoaXMgaXMgd2h5IEkndmUgYWRkZWQgdGhpcyBmaWVsZApoZXJlLCB0byBjb21tdW5pY2F0 ZSBiZXR3ZWVuIHRoZSB0d28gcGFydHMuCgpUaGlzIGJlaW5nIHNhaWQsIG1heWJlIHdlIHNob3Vs ZCBtZXJnZSB6eW5xbXBfZHBzdWIuYyBhbmQgenlucW1wX2Rpc3AuYywKYW5kIG1lcmdlIHN0cnVj dCB6eW5xbXBfZGlzcCB3aXRoIHN0cnVjdCB6eW5xbXBfZHBzdWIuIERvaW5nIHNvIHdvdWxkLCBJ CnRoaW5rLCBzaW1wbGlmeSB0aGUgY29kZSBhIGxpdHRsZSBiaXQgYnkgcmVtb3ZpbmcgYSBsb2dp Y2FsIHNwbGl0IHRoYXQKZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIGRldmljZS4gSWYgeW91IGFn cmVlIHdpdGggdGhpcywgdGhlbiB0aGUgYWxpZ24KbWVtYmVyIGNvdWxkIGJlIHJlbW92ZWQuIEkg d291bGQgaG93ZXZlciBwcmVmZXIgZG9pbmcgc28gb24gdG9wIG9mIHRoaXMKc2VyaWVzLgoKPiA+ ICt9Owo+IAo+IEkgc2tpbW1lZCB0aHJvdWdoLCBhbmQgSSBvbmx5IGhhdmUgbWlub3IgY29tbWVu dHMgYXMgYWJvdmUuIFRoYW5rcyBmb3IKPiBjbGVhbi11cCEKCllvdSdyZSB3ZWxjb21lIDotKQoK PiBBcyBhbHNvIG5vdGVkIGFib3ZlIGFuZCBicmllZmx5IGRpc2N1c3NlZCBvZmZsaW5lLCBzaW5j ZSBhIGxvdCBvZiBjb2RlcyB3ZXJlCj4gdHJpbW1lZCBvdXQgaW4gdGhpcyBzZXQsIGl0J2QgYmUg aGVscGZ1bCB0byBrbm93IGhvdyB0byBicmluZyB0aG9zZSBiYWNrCj4gcHJvcGVybHksIHNvIHRo ZSB1cHN0cmVhbSBvbmUgY2FuIHN0YWJpbGl6ZSBpbiByZWFzb25hYmxlIHRpbWVmcmFtZS4gQWxz bywKPiB0aGlzIGlzIHJlbGF0ZWQgdG8gaG93IGl0IHNob3VsZCBiZSBtYWludGFpbmVkIGJldHdl ZW4gdXBzdHJlYW0gYW5kIHhpbGlueAo+IHRyZWVzLiBXZSBjYW4gZGlzY3VzcyBkZXRhaWxzIG9m ZmxpbmUgYXMgd2VsbC4KCklkZWFsbHkgdGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZlcmVuY2UgYmV0 d2VlbiB1cHN0cmVhbSBhbmQgdGhlIFhpbGlueAp0cmVlcyA6LSkgQW4gdXBzdHJlYW0tZmlyc3Qg YXBwcm9hY2ggbWFrZXMgdGhvc2UgaXNzdWVzIGdvIGF3YXkuIE9mCmNvdXJzZSB0aGF0IG1heSBj b25mbGljdCB3aXRoIFhpbGlueCdzIHNjaGVkdWxlLCBzbyBzb21lIG1pZGRsZSBncm91bmQKdXN1 YWxseSBuZWVkcyB0byBiZSBmb3VuZC4KCkFzIG5vdGVkIGFib3ZlLCBJJ2QgbGlrZSB0byBkaXNj dXNzIHByaW9yaXRpZXMgYW5kIHVzZSBjYXNlcyBmb3IgdGhlCm1pc3NpbmcgZmVhdHVyZXMsIGFu ZCBJIHdpbGwgdGhlbiB3b3JrIG9uIHRoZW0uCgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hh cnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs