From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Chiras Subject: Re: [PATCH 1/2] drm/panel: Add Raydium RM67191 DSI Panel Date: Thu, 3 May 2018 14:38:57 +0000 Message-ID: <1525358336.27738.18.camel@nxp.com> References: <1522751401-3381-1-git-send-email-robert.chiras@nxp.com> <1522751401-3381-2-git-send-email-robert.chiras@nxp.com> <20180426145440.GD31888@ulmo> <20180427110809.GA21066@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20055.outbound.protection.outlook.com [40.107.2.55]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17198899FF for ; Thu, 3 May 2018 14:39:00 +0000 (UTC) In-Reply-To: <20180427110809.GA21066@ulmo> Content-Language: en-US Content-ID: <727058B724643E42AB38FF7CE97E1F34@eurprd04.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "thierry.reding@gmail.com" Cc: dl-linux-imx , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVmksIDIwMTgtMDQtMjcgYXQgMTE6MDggKzAwMDAsIFRoaWVycnkgUmVkaW5nIHdyb3RlOg0K PiBPbiBGcmksIEFwciAyNywgMjAxOCBhdCAxMDozNzoxNkFNICswMDAwLCBSb2JlcnQgQ2hpcmFz IHdyb3RlOg0KPiA+IA0KPiA+IA0KPiA+IEhpIFRoaWVycnksDQo+ID4gDQo+ID4gVGhhbmtzIGEg bG90IGZvciByZXZpZXdpbmcgdGhpcy4gWW91ciBzdWdnZXN0aW9ucyBhcmUgdmVyeQ0KPiA+IHZh bHVhYmxlLg0KPiA+IFBsZWFzZSBzZWUgbXkgZGV0YWlsZWQgYW5zd2VycyBpbmxpbmUuDQo+ID4g DQo+ID4gQmVzdCByZWdhcmRzLA0KPiA+IFJvYmVydA0KPiBDb3VwbGUgb2YgY29tbWVudHMgcmVn YXJkaW5nIGVtYWlsIHJlcGxpZXMuIFBsZWFzZSB1c2UgcHJvcGVyIHF1b3RpbmcNCj4gb2YNCj4g d2hhdCB5b3UncmUgcmVwbHlpbmcgdG8uIFlvdXIgbWFpbCB1c2VyIGFnZW50IHNob3VsZCBiZSBh YmxlIHRvIGRvDQo+IHRoYXQNCj4gYXV0b21hdGljYWxseS4gSWYgbm90LCB5b3UgbWlnaHQgd2Fu dCB0byBjb25zaWRlciBzd2l0Y2hpbmcgdG8gYQ0KPiBiZXR0ZXINCj4gb25lLg0KPiANCj4gQWxz bywgcGxlYXNlIHRyeSB0byBzdGljayB0byA3OCBjb2x1bW5zIG9mIHRleHQuIEl0J3MgZGlmZmlj dWx0IHRvDQo+IHJlYWQNCj4gc29tZXRoaW5nIHRoYXQgaXMgd2lkZXIgdGhhbiB0aGF0IGFuZCBt YXkgZ2V0IHdyYXBwZWQuIEl0J3MgYWxzbw0KPiBkaWZmaWN1bHQgdG8gcmVwbHkgdG8gcGFyYWdy YXBocyB0aGF0IGFyZSB0b28gd2lkZS4NCj4gDQo+IE90aGVyIHRoYW4gdGhhbiwgc29tZSB0ZWNo bmljYWwgY29tbWVudHMgYmVsb3cuDQpTb3JyeSBhYm91dCB0aGUgcmVwbGllcywgSSB3YXMgdXNp bmcgdGhlIHdlYiB2ZXJzaW9uIG9mIE9mZmljZTM2NSAobm90DQpsaWtlIHRoZSBXaW5kb3dzIGFw cCBpcyBtdWNoIGJldHRlcikuIEkgc3dpdGNoZWQgdG8gRXZvbHV0aW9uLCBub3cuDQpBbHNvLCBz b3JyeSBmb3IgdGhlIGxhdGUgcmVwbHksIEkgd2FpdGVkIHRvIGluY2x1ZGUgYSBmaXggcmVnYXJk aW5nIERTSQ0KaW5pdCBzZXF1ZW5jZS4gVGhpcyBmaXggd2FzIG5lZWRlZCBhZnRlciBhIGNsaWVu dCBjb21wbGFpbmVkIGFib3V0IHRoZQ0KZmFjdCB0aGF0IHRoZXJlIGFyZSBEU0kgc2lnbmFscyBv biB0aGUgZGF0YSBsYW5lcyBkdXJpbmcgdGhlIHJlc2V0IG9mDQp0aGUgcGFuZWwsIHNvIEkgaGFk IHRvIHNlcGFyYXRlIHRoZSBHUElPIHJlc2V0IGZyb20gdGhlIERTSSBpbml0Lg0KQWxsIHlvdXIg Y29tbWVudHMgc2hvdWxkIGJlIGFkZHJlc3NlZCBpbiB0aGUgdjIgb2YgdGhpcyBwYXRjaCBJIGp1 c3QNCnNlbnQuDQo+IA0KPiA+IA0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f DQo+ID4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4NCj4g PiBTZW50OiBUaHVyc2RheSwgQXByaWwgMjYsIDIwMTggNTo1NCBQTQ0KPiA+IFRvOiBSb2JlcnQg Q2hpcmFzDQo+ID4gQ2M6IGRsLWxpbnV4LWlteDsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZw0KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8yXSBkcm0vcGFuZWw6IEFkZCBSYXlkaXVt IFJNNjcxOTEgRFNJIFBhbmVsDQo+ID4gDQo+ID4gT24gVHVlLCBBcHIgMDMsIDIwMTggYXQgMDE6 MzA6MDBQTSArMDMwMCwgUm9iZXJ0IENoaXJhcyB3cm90ZToNCj4gPiA+IA0KPiA+ID4gQWRkIHN1 cHBvcnQgZm9yIHRoZSBPTEVEIGRpc3BsYXkgYmFzZWQgb24gTUlQSS1EU0kgcHJvdG9jb2wgZnJv bQ0KPiA+ID4gUmF5ZGl1bToNCj4gPiA+IFJNNjcxOTEuDQo+ID4gPiANCj4gPiA+IFNpZ25lZC1v ZmYtYnk6IFJvYmVydCBDaGlyYXMgPHJvYmVydC5jaGlyYXNAbnhwLmNvbT4NCj4gPiA+IC0tLQ0K PiA+ID4gwqAuLi4vYmluZGluZ3MvZGlzcGxheS9wYW5lbC9yYXlkaXVtLHJtNjcxOTEudHh0wqDC oMKgwqDCoHzCoMKgNTUgKysNCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWfC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA5ICsNCj4g PiA+IMKgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgKw0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0v cGFuZWwvcGFuZWwtcmF5ZGl1bS1ybTY3MTkxLmPCoMKgwqDCoMKgwqB8IDY0NQ0KPiA+ID4gKysr KysrKysrKysrKysrKysrKysrDQo+ID4gPiDCoDQgZmlsZXMgY2hhbmdlZCwgNzEwIGluc2VydGlv bnMoKykNCj4gPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBEb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9yYXlkaXVtLHJtNjcxOTEudA0KPiA+ID4g eHQNCj4gPiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1yYXlkaXVtLXJtNjcxOTEuYw0KPiA+ID4gDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3JheWRpdW0scm02 NzE5MQ0KPiA+ID4gLnR4dA0KPiA+ID4gYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu Z3MvZGlzcGxheS9wYW5lbC9yYXlkaXVtLHJtNjcxOTENCj4gPiA+IC50eHQNCj4gPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiBpbmRleCAwMDAwMDAwLi4xOGE1N2RlDQo+ID4gPiAtLS0g L2Rldi9udWxsDQo+ID4gPiArKysNCj4gPiA+IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2Rpc3BsYXkvcGFuZWwvcmF5ZGl1bSxybTY3MTkxDQo+ID4gPiAudHh0DQo+ID4gPiBA QCAtMCwwICsxLDU1IEBADQo+ID4gPiArUmF5ZGl1bSBSTTY3MTcxIE9MRUQgTENEIHBhbmVsIHdp dGggTUlQSS1EU0kgcHJvdG9jb2wNCj4gPiA+ICsNCj4gPiA+ICtSZXF1aXJlZCBwcm9wZXJ0aWVz Og0KPiA+ID4gKy0gY29tcGF0aWJsZTrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg InJheWRpdW0scm02NzE5MSINCj4gPiA+ICstIHJlZzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdmlydHVhbCBjaGFubmVsIGZvciBNSVBJLURTSQ0KPiA+ID4g cHJvdG9jb2wNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBtdXN0IGJlIDwwPg0KPiA+ID4gKy0gZHNpLWxhbmVzOsKgwqDCoMKgwqDCoMKgwqDCoG51bWJl ciBvZiBEU0kgbGFuZXMgdG8gYmUgdXNlZA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG11c3QgYmUgPDM+IG9yIDw0Pg0KPiA+ID4gKy0gcG9ydDrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnB1dCBwb3J0IG5vZGUgd2l0aCBlbmRwb2ludCBk ZWZpbml0aW9uDQo+ID4gPiBhcw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlZmluZWQgaW4NCj4gPiA+IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9ncmFwaC50eHQ7DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdGhlIGlucHV0IHBvcnQgc2hvdWxkIGJlIGNvbm5lY3RlZCB0byBhDQo+ID4g PiBNSVBJLURTSSBkZXZpY2UNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkcml2ZXINCj4gPiA+ICsNCj4gPiA+ICtPcHRpb25hbCBwcm9wZXJ0aWVzOg0K PiA+ID4gKy0gcmVzZXQtZ3BpbzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGEgR1BJ TyBzcGVjIGZvciB0aGUgUlNUX0IgR1BJTyBwaW4NCj4gPiA+ICstIGRpc3BsYXktdGltaW5nczrC oMKgwqB0aW1pbmdzIGZvciB0aGUgY29ubmVjdGVkIHBhbmVsIGFjY29yZGluZw0KPiA+ID4gdG8g WzFdDQo+ID4gPiArLSBwaW5jdHJsLTDCoMKgwqDCoMKgwqDCoMKgwqDCoHBoYW5kbGUgdG8gdGhl IHBpbiBzZXR0aW5ncyBmb3IgdGhlIHJlc2V0DQo+ID4gPiBwaW4NCj4gPiA+ICstIHBhbmVsLXdp ZHRoLW1tOsKgwqDCoMKgcGh5c2ljYWwgcGFuZWwgd2lkdGggW21tXQ0KPiA+ID4gKy0gcGFuZWwt aGVpZ2h0LW1tOsKgwqDCoHBoeXNpY2FsIHBhbmVsIGhlaWdodCBbbW1dDQo+ID4gPiArDQo+ID4g PiArWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9kaXNwbGF5 LQ0KPiA+ID4gdGltaW5nLnR4dA0KPiA+ID4gKw0KPiA+ID4gK0V4YW1wbGU6DQo+ID4gPiArDQo+ ID4gPiArwqDCoMKgwqDCoHBhbmVsQDAgew0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29tcGF0aWJsZSA9ICJyYXlkaXVtLHJtNjcxOTEiOw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmVnID0gPDA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cGluY3RybC0wID0gPCZwaW5jdHJsX21pcGlfZHNpXzBfMV9lbj47DQo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXNldC1ncGlvID0gPCZncGlvMSA3IEdQSU9fQUNUSVZFX0hJR0g+ Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHNpLWxhbmVzID0gPDQ+Ow0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFuZWwtd2lkdGgtbW0gPSA8Njg+Ow0KPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFuZWwtaGVpZ2h0LW1tID0gPDEyMT47DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkaXNwbGF5LXRpbWluZ3Mgew0KPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRpbWluZyB7DQo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNsb2NrLWZyZXF1ZW5jeSA9IDwxMzIwMDAwMDA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYWN0aXZlID0gPDEw ODA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWN0aXZlID0gPDE5MjA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYmFjay1wb3JjaCA9IDwx MT47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGhmcm9udC1wb3JjaCA9IDw0PjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmJhY2stcG9yY2ggPSA8 NDg+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2ZnJvbnQtcG9yY2ggPSA8MjA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoc3luYy1sZW4gPSA8 NT47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHZzeW5jLWxlbiA9IDwxMj47DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhzeW5jLWFjdGl2ZSA9IDww PjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgdnN5bmMtYWN0aXZlID0gPDA+Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZS1hY3RpdmUgPSA8MD47 DQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBpeGVsY2xrLWFjdGl2ZSA9IDwwPjsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfTsNCj4gPiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkuIFlvdSBhbHJlYWR5IGhh dmUgdGhlIHRpbWluZ3MgaW4geW91cg0KPiA+IGRyaXZlciwgd2h5IHRoZSBleHRyYSB3b3JrIG9m IGdldHRpbmcgaXQgZnJvbSBEVD8NCj4gPiANCj4gPiBbUm9iZXJ0XSBJIGFkZGVkIHRoaXMgYXMg b3B0aW9uYWwgaW4gdGhlIERUIGluIGNhc2Ugc29tZW9uZSB3b3VsZA0KPiA+IGxpa2UNCj4gPiB0 byB1c2UgdGhlIHBhbmVsIHdpdGggZGlmZmVyZW50IHRpbWluZ3MgdGhhbiBvbmVzIGZyb20gZHJp dmVyLg0KPiA+IEFueXdheSwNCj4gPiBhZnRlciBzb21lIHRlc3RzIEkgc2F3IHRoYXQgdGhlIGJs YW5raW5nIHRpbWluZ3MgYXJlIGtpbmQgb2YgZml4ZWQsDQo+ID4gc28NCj4gPiBvbmx5IHRoZSBj bG9jay1mcmVxdWVuY3kgY291bGQgYmUgY2hhbmdlZC4gRm9yIGV4YW1wbGUsIGlmIHNvbWVvbmUN Cj4gPiB3YW50cyB0byB1c2UgdGhpcyBwYW5lbCBhdCAzMEh6ICg2Nk1IeiBwaXhlbCBjbG9jaykg aW5zdGVhZCBvZiB0aGUNCj4gPiBkZWZhdWx0IG9uZSBvZiA2MEh6ICgxMzJNSHogcGl4ZWwgY2xv Y2spLiBCdXQsIEkgdGhpbmsgeW91IGFyZQ0KPiA+IHJpZ2h0LA0KPiA+IEkgY291bGQgZ2V0IHJp ZCBvZiB0aGUgZGlzcGxheS10aW1pbmdzIGFuZCBqdXN0IGFkZCBhbiBvcHRpb25hbA0KPiA+IHBy b3BlcnR5IGZvciBjaGFuZ2luZyB0aGUgcGl4ZWwgY2xvY2sgaW4gZHJpdmVyLg0KPiBUbyBiZSBo b25lc3QsIEkgd291bGRuJ3QgYm90aGVyIHdpdGggdGhhdC4gTGV0IHNvbWVvbmUgZWxzZSBhZGQg dGhhdA0KPiBpZg0KPiB0aGV5IHdhbnQgdG8gZHJpdmUgdGhlIHBhbmVsIGF0IGEgZGlmZmVyZW50 IG1vZGUuIENoYW5jZXMgYXJlIG5vYm9keQ0KPiB3aWxsLCBpbiB3aGljaCBjYXNlIGFkZGluZyBp dCBub3cgd291bGQganVzdCBiZSBkZWFkIGNvZGUgdGhhdCB3ZQ0KPiBuZWVkDQo+IHRvIG1haW50 YWluIGZvciBubyBnb29kIHJlYXNvbi4NCj4gDQo+IFsuLi5dDQo+ID4gDQo+ID4gPiANCj4gPiA+ ICsNCj4gPiA+ICsvKiBXcml0ZSBNYW51ZmFjdHVyZSBDb21tYW5kIFNldCBDb250cm9sICovDQo+ ID4gPiArI2RlZmluZSBXUk1BVUNDVFIgMHhGRQ0KPiA+ID4gKw0KPiA+ID4gKy8qIE1hbnVmYWN0 dXJlciBDb21tYW5kIFNldCBwYWdlcyAoQ01EMikgKi8NCj4gPiA+ICtzdGF0aWMgY29uc3QgY21k X3NldF90YWJsZSBtYW51ZmFjdHVyZXJfY21kX3NldFtdID0gew0KPiA+IFRoZXJlIGEgbG90IG9m IG1hZ2ljIHZhbHVlcyBpbiB0aGlzIHRhYmxlLiBDYW4geW91IGFkZCBhIHJlZmVyZW5jZQ0KPiA+ IHRvDQo+ID4gd2hlcmUgeW91IGdvdCB0aGVzZSBmcm9tPyBBbHNvLCBsb29raW5nIGF0IHRoZXNl IGNvbW1hbmRzIGl0IHNlZW1zDQo+ID4gbGlrZSB0aGV5IGFyZSBhY3R1YWxseSA8Y29tbWFuZCwg cGFyYW1ldGVyPiBwYWlycywgc28gbWF5YmUgYQ0KPiA+IGJldHRlcg0KPiA+IHJlcHJlc2VudGF0 aW9uIHdvdWxkIGJlIHNvbWV0aGluZyBhbG9uZyB0aGUgbGluZXMgb2Y6DQo+ID4gDQo+ID4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCBjbWRfc2V0X2VudHJ5IHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHU4IGNvbW1hbmQ7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB1OCBwYXJhbTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgfTsNCj4gPiANCj4gPiDCoMKg wqDCoMKgwqDCoMKgc3RhdGljIGNvbnN0IHN0cnVjdCBjbWRfc2V0X2VudHJ5IG1hbnVmYWN0dXJl cl9jbWRfc2V0W10gPQ0KPiA+IHsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC4uLg0KPiA+IMKgwqDCoMKgwqDCoMKgwqB9Ow0KPiA+IA0KPiA+IFtSb2JlcnRdIFlvdXIgc3Vn Z2VzdGlvbiBpcyBnb29kIGFuZCBJIHdpbGwgY2hhbmdlIHRoZSBjb2RlDQo+ID4gYWNjb3JkaW5n bHkuIFJlZ2FyZGluZyB0aGUgIm1hZ2ljIHZhbHVlcyI6IEkgZ290IHRoZW0gZnJvbSBhIHNhbXBs ZQ0KPiA+IGRyaXZlciB3ZSByZWNlaXZlZCBmcm9tIHRoZSB2ZW5kb3IuIEFjY29yZGluZyB0byB0 aGUgUmVmZXJlbmNlDQo+ID4gTWFudWFsLA0KPiA+IHRoZSBJQyBvbiB0aGlzIHBhbmVsIGhhcyB0 d28gc2V0cyBvZiByZWdpc3RlcnM6IE1hbnVmYWN0dXJlIENvbW1hbmQNCj4gPiBTZXQgKE1DUyA9 IENNRDIpIGFuZCBVc2VyIENvbW1hbmQgU2V0IChVQ1MgPSBDTUQxKS4gSW4gdGhlIFJNLA0KPiA+ IHRoZXJlDQo+ID4gaXMgbm8gZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIE1DUywgb25seSBh IHJlZmVyZW5jZSB0byBhDQo+ID4gY29tbWFuZA0KPiA+IG9uIGhvdyB0byBzd2l0Y2ggYmV0d2Vl biB0aGVzZSBjb21tYW5kIHNldHMuIE5vdywgd2hhdCBhcmUgdGhvc2UNCj4gPiBjb21tYW5kcyB1 c2VkIGluIHRoZSBNQ1MgbW9kZTogd2UgZ290IG5vIGRldGFpbHMgZm9yIHRoZW0gKHByb2JhYmx5 DQo+ID4gdG8NCj4gPiBwcm90ZWN0IHRoZWlyIElQPykNCj4gT2theSwgbm90IG11Y2ggeW91IGNh biBkbyBhYm91dCBpdCwgdGhlbi4NCj4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGJhY2tsaWdodF9vcHMgcmFkX2JsX29wcyA9IHsNCj4gPiA+ICvCoMKgwqDCoMKg LnVwZGF0ZV9zdGF0dXMgPSByYWRfYmxfdXBkYXRlX3N0YXR1cywNCj4gPiA+ICvCoMKgwqDCoMKg LmdldF9icmlnaHRuZXNzID0gcmFkX2JsX2dldF9icmlnaHRuZXNzLA0KPiA+ID4gK307DQo+IFsu Li5dDQo+ID4gDQo+ID4gPiANCj4gPiA+ICtzdGF0aWMgaW50IHJhZF9wYW5lbF9wcm9iZShzdHJ1 Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpDQo+ID4gPiArew0KPiBbLi4uXQ0KPiA+IA0KPiA+ID4g DQo+ID4gPiArwqDCoMKgwqDCoG1lbXNldCgmYmxfcHJvcHMsIDAsIHNpemVvZihibF9wcm9wcykp Ow0KPiA+ID4gK8KgwqDCoMKgwqBibF9wcm9wcy50eXBlID0gQkFDS0xJR0hUX1JBVzsNCj4gPiA+ ICvCoMKgwqDCoMKgYmxfcHJvcHMuYnJpZ2h0bmVzcyA9IDI1NTsNCj4gPiBNYXliZSB0aGlzIHNo b3VsZCByZWFkIHRoZSBjdXJyZW50IGJyaWdodG5lc3MgZnJvbSB0aGUgcGFuZWwgdG8NCj4gPiBt YWtlDQo+ID4gc3VyZSBpdCdzIGNvcnJlY3Q/DQo+ID4gDQo+ID4gW1JvYmVydF0gSW4gb3JkZXIg dG8gcmVhZCB0aGUgY3VycmVudCBicmlnaHRuZXNzIGZyb20gdGhlIHBhbmVsLCB3ZQ0KPiA+IG5l ZWQgdG8gYmUgYWJsZSB0byBzZW5kIERTSSBjb21tYW5kcy4gU2luY2UgdGhlIERTSSBjb21tYW5k cyBjYW4gYmUNCj4gPiBzZW50IGJ5IG1lYW5zIG9mIHRoZSBEU0kgaG9zdCBjb250cm9sbGVyLCBh dCB0aGlzIG1vbWVudCBpcw0KPiA+IGltcG9zc2libGUNCj4gPiB0byBkbyB0aGlzLiBBbnl3YXks IGR1cmluZyB0aGUgcGFuZWxfcHJlcGFyZSwgd2hlbiB0aGUgcGFuZWwgaXMNCj4gPiBpbml0aWFs aXplZCwgdGhlIGJhY2tsaWdodCB2YWx1ZSBpcyBkZWZhdWx0ZWQgdGhlcmUsIHNvIEkgY2FuDQo+ ID4gdXBkYXRlDQo+ID4gdGhlIGN1cnJlbnQgYnJpZ2h0bmVzcyB0aGVyZS4NCj4gQ291bGRuJ3Qg eW91IGRvIGl0IHJpZ2h0IGFmdGVyIHRoZSBjYWxsIHRvIG1pcGlfZHNpX2F0dGFjaCgpPyBJdA0K PiBzZWVtcw0KPiBsaWtlIHRoZSBwYW5lbCBzaG91bGQgYmUgYWJsZSB0byBleGVjdXRlIERTSSBj b21tYW5kcyBhdCB0aGF0IHRpbWUuDQo+IEl0DQo+IG1heSBoYXZlIHRvIGNhbGwgLT5wcmVwYXJl KCkgYW5kIC0+dW5wcmVwYXJlKCkgYXJvdW5kIHRob3NlLCB0aG91Z2guDQo+IA0KPiBJIGd1ZXNz IGFub3RoZXIgcG9zc2liaWxpdHkgd291bGQgYmUgdG8gZG8gaXQgYXMgcGFydCBvZiB0aGUNCj4g LT5wcmVwYXJlKCkNCj4gY2FsbGJhY2suDQo+IA0KPiBMb29raW5nIGEgbGl0dGxlIGNsb3NlciBh dCBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9iYWNrbGlnaHQuYyBpdA0KPiBzZWVtcw0KPiBsaWtl IG1heWJlIGV2ZW4gdGhhdCB3b3VsZG4ndCBiZSBuZWNlc3NhcnkuIERyaXZlcnMgdGhhdCBpbXBs ZW1lbnQNCj4gdGhlDQo+IC0+Z2V0X2JyaWdodG5lc3MoKSBjYWxsYmFjayBkb24ndCByZWFsbHkg bmVlZCB0byBzZXQgLmJyaWdodG5lc3MsIHNvDQo+IG1heWJlIGp1c3QgZHJvcCB0aGF0IGxpbmU/ DQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoHJldCA9IG1pcGlf ZHNpX2RldGFjaChkc2kpOw0KPiA+ID4gK8KgwqDCoMKgwqBpZiAocmV0IDwgMCkNCj4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERVZfRVJST1IoZGV2LCAiRmFpbGVkIHRvIGRl dGFjaCBmcm9tIGhvc3QNCj4gPiA+ICglZClcbiIsDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0KTsNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKg ZHJtX3BhbmVsX2RldGFjaCgmcmFkLT5iYXNlKTsNCj4gPiBQbGVhc2UgZG9uJ3QgZG8gdGhhdC4g SSd2ZSBqdXN0IG1lcmdlZCBhIHNldCBvZiBwYXRjaGVzIHdoaWNoDQo+ID4gZG9jdW1lbnQNCj4g PiB0aGlzIGFzIGJlaW5nIHdyb25nIGFuZCB3aGljaCByZW1vdmUgc2ltaWxhciBjYWxscyBmcm9t IG90aGVyIHBhbmVsDQo+ID4gZHJpdmVycy4NCj4gPiANCj4gPiBbUm9iZXJ0XSBJIGFtIHNvcnJ5 LCBidXQgSSBkb24ndCB1bmRlcnN0YW5kIGhlcmUuIERvbid0IGRvIHdoYXQ/DQo+ID4gbWlwaV9k c2lfZGV0YWNoIG9yIGRybV9wYW5lbF9kZXRhY2g/IE9yIGFyZSB5b3UgcmVmZXJyaW5nIHRvIHRo ZQ0KPiA+IGZhY3QNCj4gPiB0aGF0IEknbSBzdGlsbCBjYWxsaW5nIGRybV9wYW5lbF9kZXRhY2gg ZXZlbiB0aG91Z2ggbWlwaV9kc2lfZGV0YWNoDQo+ID4gZmFpbHM/DQo+IGRybV9wYW5lbF9kZXRh Y2goKSBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIHBhbmVsIGRyaXZlcnMuIEl0IHNob3VsZA0K PiBiZQ0KPiBjYWxsZWQgZnJvbSBkaXNwbGF5IGRyaXZlcnMgdG8gZGV0YWNoIGZyb20gdGhlIHBh bmVsLg0KPiANCj4gVGhpZXJyeQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK