From mboxrd@z Thu Jan 1 00:00:00 1970 From: Frank Rowand Subject: Re: [PATCH v6 3/4] drm: rcar-du: Fix legacy DT to create LVDS encoder nodes Date: Sat, 24 Feb 2018 14:42:47 -0800 Message-ID: References: <20180222131336.7712-1-laurent.pinchart+renesas@ideasonboard.com> <20180222131336.7712-4-laurent.pinchart+renesas@ideasonboard.com> <06d3fb91-961d-a053-df22-cddf3419b159@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <06d3fb91-961d-a053-df22-cddf3419b159@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart , dri-devel@lists.freedesktop.org Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org List-Id: devicetree@vger.kernel.org T24gMDIvMjIvMTggMTQ6MTAsIEZyYW5rIFJvd2FuZCB3cm90ZToKPiBIaSBMYXVyZW50LCBSb2Is Cj4gCj4gVGhhbmtzIGZvciB0aGUgcHJvbXB0IHNwaW4gdG8gYWRkcmVzcyBteSBjb25jZXJucy4g IFRoZXJlIGFyZSBzb21lIHNtYWxsCj4gdGVjaG5pY2FsIGlzc3Vlcy4KPiAKPiBJIGRpZCBub3Qg cmVhZCB0aGUgdjMgcGF0Y2ggdW50aWwgdG9kYXkuICB2MyB0aHJvdWdoIHY2IGFyZSBzdGlsbCB1 c2luZyB0aGUKPiBvbGQgb3ZlcmxheSBhcHBseSBtZXRob2Qgd2hpY2ggdXNlcyBhbiBleHBhbmRl ZCBkZXZpY2UgdHJlZSBhcyBpbnB1dC4KPiAKPiBSb2IsIEkgZG9uJ3Qgc2VlIG15IG92ZXJsYXkg cGF0Y2hlcyBpbiB5b3UgZm9yLW5leHQgYnJhbmNoLCBhbmQgSSBoYXZlCj4gbm90IHNlZW4gYW4g IkFwcGxpZWQiIG1lc3NhZ2UgZnJvbSB5b3UuICBXaGF0IGlzIHRoZSBzdGF0dXMgb2YgdGhlCj4g b3ZlcmxheSBwYXRjaGVzPwo+IAo+IENvbW1lbnRzIGluIHRoZSBwYXRjaCBiZWxvdy4KPiAKPiAK PiBPbiAwMi8yMi8xOCAwNToxMywgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPj4gVGhlIGludGVy bmFsIExWRFMgZW5jb2RlcnMgbm93IGhhdmUgdGhlaXIgb3duIERUIGJpbmRpbmdzLiBCZWZvcmUK Pj4gc3dpdGNoaW5nIHRoZSBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmUgdG8gdGhvc2UgbmV3IGJpbmRp bmdzLCBpbXBsZW1lbnQKPj4gYmFja3dhcmQtY29tcGF0aWJpbGl0eSB0aHJvdWdoIGxpdmUgRFQg cGF0Y2hpbmcuCj4+Cj4+IFBhdGNoaW5nIGlzIGRpc2FibGVkIGFuZCB3aWxsIGJlIGVuYWJsZWQg YWxvbmcgd2l0aCBzdXBwb3J0IGZvciB0aGUgbmV3Cj4+IERUIGJpbmRpbmdzIGluIHRoZSBEVSBk cml2ZXIuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGlu Y2hhcnQrcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgo+PiAtLS0KPj4gQ2hhbmdlcyBzaW5jZSB2 NToKPj4KPj4gLSBVc2UgYSBwcml2YXRlIGNvcHkgb2YgcmNhcl9kdV9vZl9jaGFuZ2VzZXRfYWRk X3Byb3BlcnR5KCkKPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MzoKPj4KPj4gLSBVc2UgdGhlIE9GIGNo YW5nZXNldCBBUEkKPj4gLSBVc2Ugb2ZfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3MoKQo+PiAt IFJlcGxhY2UgaGFyZGNvZGVkIGNvbnN0YW50cyBieSBzaXplb2YoKQo+Pgo+PiBDaGFuZ2VzIHNp bmNlIHYyOgo+Pgo+PiAtIFVwZGF0ZSB0aGUgU1BEWCBoZWFkZXJzIHRvIHVzZSBDLXN0eWxlIGNv bW1lbnRzIGluIGhlYWRlciBmaWxlcwo+PiAtIFJlbW92ZWQgdGhlIG1hbnVhbGx5IGNyZWF0ZWQg X19sb2NhbF9maXh1cHNfXyBub2RlCj4+IC0gUGVyZm9ybSBtYW51YWwgZml4dXBzIG9uIGxpdmUg RFQgaW5zdGVhZCBvZiBvdmVybGF5Cj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+Cj4+IC0gU2Vs ZWN0IE9GX0ZMQVRUUkVFCj4+IC0gQ29tcGlsZSBMVkRTIERUIGJpbmRpbmdzIHBhdGNoIGNvZGUg d2hlbiBEUk1fUkNBUl9MVkRTIGlzIHNlbGVjdGVkCj4+IC0gVXBkYXRlIHRoZSBTUERYIGhlYWRl cnMgdG8gdXNlIEdQTC0yLjAgaW5zdGVhZCBvZiBHUEwtMi4wLW9ubHkKPj4gLSBUdXJuIF9fZHRi X3JjYXJfZHVfb2ZfbHZkc18oYmVnaW58ZW5kKSBmcm9tIHU4IHRvIGNoYXIKPj4gLSBQYXNzIHZv aWQgYmVnaW4gYW5kIGVuZCBwb2ludGVycyB0byByY2FyX2R1X29mX2dldF9vdmVybGF5KCkKPj4g LSBVc2Ugb2ZfZ2V0X3BhcmVudCgpIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBwYXJlbnQgcG9p bnRlciBkaXJlY3RseQo+PiAtIEZpbmQgdGhlIExWRFMgZW5kcG9pbnRzIG5vZGVzIGJhc2VkIG9u IHRoZSBMVkRTIG5vZGUgaW5zdGVhZCBvZiB0aGUKPj4gICByb290IG9mIHRoZSBvdmVybGF5Cj4+ IC0gVXBkYXRlIHRvIHRoZSA8c29jPi1sdmRzIGNvbXBhdGlibGUgc3RyaW5nIGZvcm1hdAo+PiAt LS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcgICAgICAgICAgICAgICAgICAg IHwgICAyICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgIHwgICA3ICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmMg ICAgICAgICAgICAgICB8IDM0MiArKysrKysrKysrKysrKysrKysrKysKPj4gIGRyaXZlcnMvZ3B1 L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaCAgICAgICAgICAgICAgIHwgIDIwICsrCj4+ICAuLi4v Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0cyAgICB8ICA3OSArKysr Kwo+PiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5MS5kdHMgICAg fCAgNTMgKysrKwo+PiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5 My5kdHMgICAgfCAgNTMgKysrKwo+PiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2 ZHNfcjhhNzc5NS5kdHMgICAgfCAgNTMgKysrKwo+PiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2Fy X2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMgICAgfCAgNTMgKysrKwo+PiAgOSBmaWxlcyBjaGFuZ2Vk LCA2NjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuYwo+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaAo+PiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0 cwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf b2ZfbHZkc19yOGE3NzkxLmR0cwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkzLmR0cwo+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0cwo+ PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2Zf bHZkc19yOGE3Nzk2LmR0cwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXIt ZHUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPj4gaW5kZXggNWQw YjRiNzExOWFmLi4zZjgzMzUyYTczMTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y Y2FyLWR1L0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZwo+ PiBAQCAtMjIsNiArMjIsOCBAQCBjb25maWcgRFJNX1JDQVJfTFZEUwo+PiAgCWJvb2wgIlItQ2Fy IERVIExWRFMgRW5jb2RlciBTdXBwb3J0Igo+PiAgCWRlcGVuZHMgb24gRFJNX1JDQVJfRFUKPj4g IAlzZWxlY3QgRFJNX1BBTkVMCj4+ICsJc2VsZWN0IE9GX0ZMQVRUUkVFCj4+ICsJc2VsZWN0IE9G X09WRVJMQVkKPj4gIAloZWxwCj4+ICAJICBFbmFibGUgc3VwcG9ydCBmb3IgdGhlIFItQ2FyIERp c3BsYXkgVW5pdCBlbWJlZGRlZCBMVkRTIGVuY29kZXJzLgo+PiAgCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmNhci1kdS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1 L01ha2VmaWxlCj4+IGluZGV4IDBjZjVjMTEwMzBlOC4uODZiMzM3YjRiZTVkIDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vcmNhci1kdS9NYWtlZmlsZQo+PiBAQCAtOCw3ICs4LDEyIEBAIHJjYXItZHUtZHJtLXkg Oj0gcmNhcl9kdV9jcnRjLm8gXAo+PiAgCQkgcmNhcl9kdV9wbGFuZS5vCj4+ICAKPj4gIHJjYXIt ZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX0xWRFMpCSs9IHJjYXJfZHVfbHZkc2VuYy5vCj4+IC0K Pj4gK3JjYXItZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX0xWRFMpCSs9IHJjYXJfZHVfb2YubyBc Cj4+ICsJCQkJCSAgIHJjYXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0Yi5vIFwKPj4gKwkJCQkJICAg cmNhcl9kdV9vZl9sdmRzX3I4YTc3OTEuZHRiLm8gXAo+PiArCQkJCQkgICByY2FyX2R1X29mX2x2 ZHNfcjhhNzc5My5kdGIubyBcCj4+ICsJCQkJCSAgIHJjYXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0 Yi5vIFwKPj4gKwkJCQkJICAgcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTYuZHRiLm8KPj4gIHJjYXIt ZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX1ZTUCkJKz0gcmNhcl9kdV92c3Aubwo+PiAgCj4+ICBv YmotJChDT05GSUdfRFJNX1JDQVJfRFUpCQkrPSByY2FyLWR1LWRybS5vCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmMgYi9kcml2ZXJzL2dwdS9kcm0v cmNhci1kdS9yY2FyX2R1X29mLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAw MDAwMDAwMDAwLi5hYzQ0MmRkZmVkMTYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmMKPj4gQEAgLTAsMCArMSwzNDIgQEAKPj4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsvKgo+PiArICogcmNhcl9kdV9v Zi5jIC0gTGVnYWN5IERUIGJpbmRpbmdzIGNvbXBhdGliaWxpdHkKPj4gKyAqCj4+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTggTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29u Ym9hcmQuY29tPgo+PiArICoKPj4gKyAqIEJhc2VkIG9uIHdvcmsgZnJvbSBKeXJpIFNhcmhhIDxq c2FyaGFAdGkuY29tPgo+PiArICogQ29weXJpZ2h0IChDKSAyMDE1IFRleGFzIEluc3RydW1lbnRz Cj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L29mX2FkZHJlc3MuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9mZHQuaD4KPj4gKyNpbmNs dWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gKwo+ PiArI2luY2x1ZGUgInJjYXJfZHVfY3J0Yy5oIgo+PiArI2luY2x1ZGUgInJjYXJfZHVfZHJ2Lmgi Cj4+ICsKPj4gKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKiBHZW5lcmljIE92ZXJsYXkg SGFuZGxpbmcKPj4gKyAqLwo+PiArCj4+ICtzdHJ1Y3QgcmNhcl9kdV9vZl9vdmVybGF5IHsKPj4g Kwljb25zdCBjaGFyICpjb21wYXRpYmxlOwo+PiArCXZvaWQgKmJlZ2luOwo+PiArCXZvaWQgKmVu ZDsKPj4gK307Cj4+ICsKPj4gKyNkZWZpbmUgUkNBUl9EVV9PRl9EVEIodHlwZSwgc29jKQkJCQkJ XAo+PiArCWV4dGVybiBjaGFyIF9fZHRiX3JjYXJfZHVfb2ZfIyN0eXBlIyNfIyNzb2MjI19iZWdp bltdOwkJXAo+PiArCWV4dGVybiBjaGFyIF9fZHRiX3JjYXJfZHVfb2ZfIyN0eXBlIyNfIyNzb2Mj I19lbmRbXQo+PiArCj4+ICsjZGVmaW5lIFJDQVJfRFVfT0ZfT1ZFUkxBWSh0eXBlLCBzb2MpCQkJ CQlcCj4+ICsJewkJCQkJCQkJXAo+PiArCQkuY29tcGF0aWJsZSA9ICJyZW5lc2FzLGR1LSIgI3Nv YywJCQlcCj4+ICsJCS5iZWdpbiA9IF9fZHRiX3JjYXJfZHVfb2ZfIyN0eXBlIyNfIyNzb2MjI19i ZWdpbiwJXAo+PiArCQkuZW5kID0gX19kdGJfcmNhcl9kdV9vZl8jI3R5cGUjI18jI3NvYyMjX2Vu ZCwJCVwKPj4gKwl9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgX19pbml0IHJjYXJfZHVfb2ZfYXBwbHlf b3ZlcmxheShjb25zdCBzdHJ1Y3QgcmNhcl9kdV9vZl9vdmVybGF5ICpkdGJzLAo+PiArCQkJCQkg ICBjb25zdCBjaGFyICpjb21wYXRpYmxlKQo+PiArewo+PiArCWNvbnN0IHN0cnVjdCByY2FyX2R1 X29mX292ZXJsYXkgKmR0YiA9IE5VTEw7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0g TlVMTDsKPj4gKwl1bnNpZ25lZCBpbnQgaTsKPj4gKwlpbnQgb3Zjc19pZDsKPj4gKwl2b2lkICpk YXRhOwo+PiArCXZvaWQgKm1lbTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJZm9yIChpID0gMDsg ZHRic1tpXS5jb21wYXRpYmxlOyArK2kpIHsKPj4gKwkJaWYgKCFzdHJjbXAoZHRic1tpXS5jb21w YXRpYmxlLCBjb21wYXRpYmxlKSkgewo+PiArCQkJZHRiID0gJmR0YnNbaV07Cj4+ICsJCQlicmVh azsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCWlmICghZHRiKQo+PiArCQlyZXR1cm4gLUVOT0RF VjsKPiAKCkkgd2FzIHRyeWluZyB0byBhdm9pZCByZXZpZXdpbmcgdGhpcyBsaXR0bGUgYmxvY2sg b2YgY29kZSwgYmVjYXVzZSBpdAptZWFudCBzcGVuZGluZyB0aGUgdGltZSB0byBkbyB0aGUgcmVz ZWFyY2ggdG8gdmVyaWZ5IG15IG1lbW9yeS4gIEkgZGlkCnRoZSByZXNlYXJjaCwgc28gaGVyZSBh cmUgdGhlIGNvbW1lbnRzLi4uCgo+IF9fSWZfXyBteSBvdmVybGF5IHBhdGNoZXMgYXJlIGFjY2Vw dGVkLCB0aGlzIGJsb2NrOgo+IAo+PiArCj4+ICsJZGF0YSA9IGttZW1kdXAoZHRiLT5iZWdpbiwg ZHRiLT5lbmQgLSBkdGItPmJlZ2luLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWRhdGEpCj4+ICsJ CXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJbWVtID0gb2ZfZmR0X3VuZmxhdHRlbl90cmVlKGRh dGEsIE5VTEwsICZub2RlKTsKPj4gKwlpZiAoIW1lbSkgewoKPj4gKwkJcmV0ID0gLUVOT01FTTsK CiAgICAgICAgICAgICAgICBrZnJlZShkYXRhKTsKClRoaXMgY291bGQgYmUgZG9uZSBhdCB0aGUg dGFpbCBvZiB0aGUgZnVuY3Rpb24gaWYgeW91IHByZWZlciwgYnV0Cml0IGlzIGVhc2llciBmb3Ig bWUgdG8gcHV0IGl0IGhlcmUgdG8gc2hvdyB3aGljaCBjYXNlIGl0IGlzIG9rCnRvIGtmcmVlKCku ICBBbmQgaWYgZG9pbmcgdGhlIGtmcmVlKCkgaGVyZSwgbWF5IGFzIHdlbGwganVzdApyZXR1cm4g LUVOT01FTSBoZXJlIGluc3RlYWQgb2YgZ29pbmcgdG8gZG9uZS4KCj4+ICsJCWdvdG8gZG9uZTsK Pj4gKwl9Cj4+ICsKPj4gKwlvdmNzX2lkID0gMDsKPj4gKwlyZXQgPSBvZl9vdmVybGF5X2FwcGx5 KG5vZGUsICZvdmNzX2lkKTsKPj4gKwo+PiArZG9uZToKCkRvIG5vdCBkbyB0aGUgb2Zfbm9kZV9w dXQoKSBvciB0aGUga2ZyZWUoKXMgaGVyZS4gIFRoZSBsaXZlCmRldmljZXRyZWUgYW5kIHRoZSBv dmVybGF5IGNoYW5nZXNldCBoYXZlIHBvaW50ZXJzIGludG8gdGhlbS4KClNvbWUgZXJyb3IgdmFs dWVzIGZyb20gb2Zfb3ZlcmxheV9hcHBseSgpIGRvIGFsbG93IHlvdSB0byBkbyBzb21lCmZyZWVp bmcsIGJ1dCBzaW5jZSB0aGlzIGlzIGF0IG1vc3QgYSB0ZW1wb3JhcnkgcGllY2Ugb2YgY29kZSwg aXQKaXNuJ3Qgd29ydGggYWxsIHRoZSBjb21wbGV4aXR5IG9mIHRyeWluZyB0byBmaWd1cmUgdGhh dCBvdXQuICBUaGUKaW1wbGljYXRpb25zIG9mIHRoZSB2YXJpb3VzIHJldHVybiB2YWx1ZXMgZnJv bSBvZl9vdmVybGF5X2FwcGx5KCkKYXJlIGEgYml0IG9mIGEgaGFpcmJhbGwuCgo+PiArCW9mX25v ZGVfcHV0KG5vZGUpOwo+PiArCWtmcmVlKGRhdGEpOwo+PiArCWtmcmVlKG1lbSk7CgotRnJhbmsK Cgo+IAo+IGJlY29tZXM6Cj4gCj4gCXJldCA9IG9mX292ZXJsYXlfZmR0X2FwcGx5KGR0Yi0+YmVn aW4sICZvdmNzX2lkKTsKPiAKPiBJZiBteSBvdmVybGF5IHBhdGNoZXMgZG8gbm90IGV4aXN0LCB0 aGVyZSBhcmUgb3RoZXIgc21hbGwgZXJyb3JzCj4gaW4gdGhlIGNvZGUgYmxvY2sgYWJvdmUuICBJ J2xsIGlnbm9yZSB0aGVtIGZvciB0aGUgbW9tZW50Lgo+IAo+IEEgcXVpY2sgc2NhbiBvZiB0aGUg cmVzdCBvZiB0aGUgY29kZSBsb29rcyBPSy4gIEknbGwgcmVhZCB0aHJvdWdoIGl0Cj4gbW9yZSBj YXJlZnVsbHksIGJ1dCB3YW50ZWQgdG8gZ2V0IHRoaXMgcmVwbHkgb3V0IHdpdGhvdXQgZnVydGhl cgo+IGRlbGF5Lgo+IAo+IC1GcmFuawo+IAo+IAo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCBfX2luaXQgcmNhcl9kdV9vZl9hZGRfcHJvcGVydHkoc3RydWN0 IG9mX2NoYW5nZXNldCAqb2NzLAo+PiArCQkJCQkgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCj4+ ICsJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqdmFsdWUsCj4+ICsJCQkJCSAg aW50IGxlbmd0aCkKPj4gK3sKPj4gKwlzdHJ1Y3QgcHJvcGVydHkgKnByb3A7Cj4+ICsJaW50IHJl dCA9IC1FTk9NRU07Cj4+ICsKPj4gKwlwcm9wID0ga3phbGxvYyhzaXplb2YoKnByb3ApLCBHRlBf S0VSTkVMKTsKPj4gKwlpZiAoIXByb3ApCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJ cHJvcC0+bmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFwcm9wLT5u YW1lKQo+PiArCQlnb3RvIG91dF9lcnI7Cj4+ICsKPj4gKwlwcm9wLT52YWx1ZSA9IGttZW1kdXAo dmFsdWUsIGxlbmd0aCwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFwcm9wLT52YWx1ZSkKPj4gKwkJ Z290byBvdXRfZXJyOwo+PiArCj4+ICsJb2ZfcHJvcGVydHlfc2V0X2ZsYWcocHJvcCwgT0ZfRFlO QU1JQyk7Cj4+ICsKPj4gKwlwcm9wLT5sZW5ndGggPSBsZW5ndGg7Cj4+ICsKPj4gKwlyZXQgPSBv Zl9jaGFuZ2VzZXRfYWRkX3Byb3BlcnR5KG9jcywgbnAsIHByb3ApOwo+PiArCWlmICghcmV0KQo+ PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArb3V0X2VycjoKPj4gKwlrZnJlZShwcm9wLT52YWx1ZSk7 Cj4+ICsJa2ZyZWUocHJvcC0+bmFtZSk7Cj4+ICsJa2ZyZWUocHJvcCk7Cj4+ICsJcmV0dXJuIHJl dDsKPj4gK30KPj4gKwo+PiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gKyAqIExWRFMgT3Zl cmxheXMKPj4gKyAqLwo+PiArCj4+ICtSQ0FSX0RVX09GX0RUQihsdmRzLCByOGE3NzkwKTsKPj4g K1JDQVJfRFVfT0ZfRFRCKGx2ZHMsIHI4YTc3OTEpOwo+PiArUkNBUl9EVV9PRl9EVEIobHZkcywg cjhhNzc5Myk7Cj4+ICtSQ0FSX0RVX09GX0RUQihsdmRzLCByOGE3Nzk1KTsKPj4gK1JDQVJfRFVf T0ZfRFRCKGx2ZHMsIHI4YTc3OTYpOwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJjYXJf ZHVfb2Zfb3ZlcmxheSByY2FyX2R1X2x2ZHNfb3ZlcmxheXNbXSBfX2luaXRjb25zdCA9IHsKPj4g KwlSQ0FSX0RVX09GX09WRVJMQVkobHZkcywgcjhhNzc5MCksCj4+ICsJUkNBUl9EVV9PRl9PVkVS TEFZKGx2ZHMsIHI4YTc3OTEpLAo+PiArCVJDQVJfRFVfT0ZfT1ZFUkxBWShsdmRzLCByOGE3Nzkz KSwKPj4gKwlSQ0FSX0RVX09GX09WRVJMQVkobHZkcywgcjhhNzc5NSksCj4+ICsJUkNBUl9EVV9P Rl9PVkVSTEFZKGx2ZHMsIHI4YTc3OTYpLAo+PiArCXsgLyogU2VudGluZWwgKi8gfSwKPj4gK307 Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3Qgb2ZfY2hhbmdlc2V0IHJjYXJfZHVfbHZkc19jaGFuZ2Vz ZXQ7Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9faW5pdCByY2FyX2R1X29mX2x2ZHNfcGF0Y2hfb25l KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbHZkcywKPj4gKwkJCQkJICAgICBjb25zdCBzdHJ1Y3Qgb2Zf cGhhbmRsZV9hcmdzICpjbGssCj4+ICsJCQkJCSAgICAgc3RydWN0IGRldmljZV9ub2RlICpsb2Nh bCwKPj4gKwkJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnJlbW90ZSkKPj4gK3sKPj4gKwl1 bnNpZ25lZCBpbnQgcHNpemU7Cj4+ICsJdW5zaWduZWQgaW50IGk7Cj4+ICsJX19iZTMyIHZhbHVl WzRdOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFNldCB0aGUgTFZEUyBjbG9j a3MgcHJvcGVydHkuIFRoaXMgY2FuJ3QgYmUgcGVyZm9ybWVkIGJ5IHRoZSBvdmVybGF5Cj4+ICsJ ICogYXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY2xvY2sgc3BlY2lmaWVyIGhhcyBjaGFuZ2VkIG92 ZXIgdGltZSwgYW5kIHdlCj4+ICsJICogZG9uJ3Qga25vdyBhdCBjb21waWxlIHRpbWUgd2hpY2gg YmluZGluZyB2ZXJzaW9uIHRoZSBzeXN0ZW0gd2Ugd2lsbAo+PiArCSAqIHJ1biBvbiB1c2VzLgo+ PiArCSAqLwo+PiArCWlmIChjbGstPmFyZ3NfY291bnQgPj0gQVJSQVlfU0laRSh2YWx1ZSkgLSAx KQo+PiArCQlyZXR1cm47Cj4+ICsKPj4gKwlvZl9jaGFuZ2VzZXRfaW5pdCgmcmNhcl9kdV9sdmRz X2NoYW5nZXNldCk7Cj4+ICsKPj4gKwl2YWx1ZVswXSA9IGNwdV90b19iZTMyKGNsay0+bnAtPnBo YW5kbGUpOwo+PiArCWZvciAoaSA9IDA7IGkgPCBjbGstPmFyZ3NfY291bnQ7ICsraSkKPj4gKwkJ dmFsdWVbaSArIDFdID0gY3B1X3RvX2JlMzIoY2xrLT5hcmdzW2ldKTsKPj4gKwo+PiArCXBzaXpl ID0gKGNsay0+YXJnc19jb3VudCArIDEpICogNDsKPj4gKwlyZXQgPSByY2FyX2R1X29mX2FkZF9w cm9wZXJ0eSgmcmNhcl9kdV9sdmRzX2NoYW5nZXNldCwgbHZkcywKPj4gKwkJCQkgICAgICAiY2xv Y2tzIiwgdmFsdWUsIHBzaXplKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZ290byBkb25lOwo+ PiArCj4+ICsJLyoKPj4gKwkgKiBJbnNlcnQgdGhlIG5vZGUgaW4gdGhlIE9GIGdyYXBoOiBwYXRj aCB0aGUgTFZEUyBwb3J0cyByZW1vdGUtZW5kcG9pbnQKPj4gKwkgKiBwcm9wZXJ0aWVzIHRvIHBv aW50IHRvIHRoZSBlbmRwb2ludHMgb2YgdGhlIHNpYmxpbmcgbm9kZXMgaW4gdGhlCj4+ICsJICog Z3JhcGguIFRoaXMgY2FuJ3QgYmUgcGVyZm9ybWVkIGJ5IHRoZSBvdmVybGF5OiBvbiB0aGUgaW5w dXQgc2lkZSB0aGUKPj4gKwkgKiBvdmVybGF5IHdvdWxkIGNvbnRhaW4gYSBwaGFuZGxlIGZvciB0 aGUgRFUgTFZEUyBvdXRwdXQgcG9ydCB0aGF0Cj4+ICsJICogd291bGQgY2xhc2ggd2l0aCB0aGUg c3lzdGVtIERULCBhbmQgb24gdGhlIG91dHB1dCBzaWRlIHRoZSBjb25uZWN0aW9uCj4+ICsJICog aXMgYm9hcmQtc3BlY2lmaWMuCj4+ICsJICovCj4+ICsJdmFsdWVbMF0gPSBjcHVfdG9fYmUzMihs b2NhbC0+cGhhbmRsZSk7Cj4+ICsJdmFsdWVbMV0gPSBjcHVfdG9fYmUzMihyZW1vdGUtPnBoYW5k bGUpOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IDI7ICsraSkgewo+PiArCQlzdHJ1Y3QgZGV2 aWNlX25vZGUgKmVuZHBvaW50Owo+PiArCj4+ICsJCWVuZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X2Vu ZHBvaW50X2J5X3JlZ3MobHZkcywgaSwgMCk7Cj4+ICsJCWlmICghZW5kcG9pbnQpIHsKPj4gKwkJ CXJldCA9IC1FSU5WQUw7Cj4+ICsJCQlnb3RvIGRvbmU7Cj4+ICsJCX0KPj4gKwo+PiArCQlyZXQg PSByY2FyX2R1X29mX2FkZF9wcm9wZXJ0eSgmcmNhcl9kdV9sdmRzX2NoYW5nZXNldCwKPj4gKwkJ CQkJICAgICAgZW5kcG9pbnQsICJyZW1vdGUtZW5kcG9pbnQiLAo+PiArCQkJCQkgICAgICAmdmFs dWVbaV0sIHNpemVvZih2YWx1ZVtpXSkpOwo+PiArCQlvZl9ub2RlX3B1dChlbmRwb2ludCk7Cj4+ ICsJCWlmIChyZXQgPCAwKQo+PiArCQkJZ290byBkb25lOwo+PiArCX0KPj4gKwo+PiArCXJldCA9 IG9mX2NoYW5nZXNldF9hcHBseSgmcmNhcl9kdV9sdmRzX2NoYW5nZXNldCk7Cj4+ICsKPj4gK2Rv bmU6Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCW9mX2NoYW5nZXNldF9kZXN0cm95KCZyY2FyX2R1 X2x2ZHNfY2hhbmdlc2V0KTsKPj4gK30KPj4gKwo+PiArc3RydWN0IGx2ZHNfb2ZfZGF0YSB7Cj4+ ICsJc3RydWN0IHJlc291cmNlIHJlczsKPj4gKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIGNsa3Nw ZWM7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpsb2NhbDsKPj4gKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKnJlbW90ZTsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9faW5pdCByY2FyX2R1X29m X2x2ZHNfcGF0Y2goY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWRzKQo+PiArewo+PiAr CWNvbnN0IHN0cnVjdCByY2FyX2R1X2RldmljZV9pbmZvICppbmZvOwo+PiArCWNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgKm1hdGNoOwo+PiArCXN0cnVjdCBsdmRzX29mX2RhdGEgbHZkc19kYXRh WzJdID0geyB9Owo+PiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbHZkc19ub2RlOwo+PiArCXN0cnVj dCBkZXZpY2Vfbm9kZSAqc29jX25vZGU7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpkdV9ub2Rl Owo+PiArCWNoYXIgY29tcGF0aWJsZVsyMV07Cj4+ICsJY29uc3QgY2hhciAqc29jX25hbWU7Cj4+ ICsJdW5zaWduZWQgaW50IGk7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCS8qIEdldCB0aGUgRFUg bm9kZSBhbmQgZXhpdCBpZiBub3QgcHJlc2VudCBvciBkaXNhYmxlZC4gKi8KPj4gKwlkdV9ub2Rl ID0gb2ZfZmluZF9tYXRjaGluZ19ub2RlX2FuZF9tYXRjaChOVUxMLCBvZl9pZHMsICZtYXRjaCk7 Cj4+ICsJaWYgKCFkdV9ub2RlIHx8ICFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKGR1X25vZGUpKSB7 Cj4+ICsJCW9mX25vZGVfcHV0KGR1X25vZGUpOwo+PiArCQlyZXR1cm47Cj4+ICsJfQo+PiArCj4+ ICsJaW5mbyA9IG1hdGNoLT5kYXRhOwo+PiArCXNvY19ub2RlID0gb2ZfZ2V0X3BhcmVudChkdV9u b2RlKTsKPj4gKwo+PiArCWlmIChXQVJOX09OKGluZm8tPm51bV9sdmRzID4gQVJSQVlfU0laRShs dmRzX2RhdGEpKSkKPj4gKwkJZ290byBkb25lOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBTa2lwIGlm IHRoZSBMVkRTIG5vZGVzIGFscmVhZHkgZXhpc3RzLgo+PiArCSAqCj4+ICsJICogVGhlIG5vZGVz IGFyZSBzZWFyY2hlZCBiYXNlZCBvbiB0aGUgY29tcGF0aWJsZSBzdHJpbmcsIHdoaWNoIHdlCj4+ ICsJICogY29uc3RydWN0IGZyb20gdGhlIFNvQyBuYW1lIGZvdW5kIGluIHRoZSBEVSBjb21wYXRp YmxlIHN0cmluZy4gQXMgYQo+PiArCSAqIG1hdGNoIGhhcyBiZWVuIGZvdW5kIHdlIGtub3cgdGhl IGNvbXBhdGlibGUgc3RyaW5nIG1hdGNoZXMgdGhlCj4+ICsJICogZXhwZWN0ZWQgZm9ybWF0IGFu ZCBjYW4gdGh1cyBza2lwIHNvbWUgb2YgdGhlIHN0cmluZyBtYW5pcHVsYXRpb24KPj4gKwkgKiBu b3JtYWwgc2FmZXR5IGNoZWNrcy4KPj4gKwkgKi8KPj4gKwlzb2NfbmFtZSA9IHN0cmNocihtYXRj aC0+Y29tcGF0aWJsZSwgJy0nKSArIDE7Cj4+ICsJc3ByaW50Zihjb21wYXRpYmxlLCAicmVuZXNh cywlcy1sdmRzIiwgc29jX25hbWUpOwo+PiArCWx2ZHNfbm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJs ZV9ub2RlKE5VTEwsIE5VTEwsIGNvbXBhdGlibGUpOwo+PiArCWlmIChsdmRzX25vZGUpIHsKPj4g KwkJb2Zfbm9kZV9wdXQobHZkc19ub2RlKTsKPj4gKwkJcmV0dXJuOwo+PiArCX0KPj4gKwo+PiAr CS8qCj4+ICsJICogUGFyc2UgdGhlIERVIG5vZGUgYW5kIHN0b3JlIHRoZSByZWdpc3RlciBzcGVj aWZpZXIsIHRoZSBjbG9jawo+PiArCSAqIHNwZWNpZmllciBhbmQgdGhlIGxvY2FsIGFuZCByZW1v dGUgZW5kcG9pbnQgb2YgdGhlIExWRFMgbGluayBmb3IKPj4gKwkgKiBsYXRlciB1c2UuCj4+ICsJ ICovCj4+ICsJZm9yIChpID0gMDsgaSA8IGluZm8tPm51bV9sdmRzOyArK2kpIHsKPj4gKwkJc3Ry dWN0IGx2ZHNfb2ZfZGF0YSAqbHZkcyA9ICZsdmRzX2RhdGFbaV07Cj4+ICsJCXVuc2lnbmVkIGlu dCBwb3J0Owo+PiArCQljaGFyIG5hbWVbN107Cj4+ICsJCWludCBpbmRleDsKPj4gKwo+PiArCQlz cHJpbnRmKG5hbWUsICJsdmRzLiV1IiwgaSk7Cj4+ICsJCWluZGV4ID0gb2ZfcHJvcGVydHlfbWF0 Y2hfc3RyaW5nKGR1X25vZGUsICJjbG9jay1uYW1lcyIsIG5hbWUpOwo+PiArCQlpZiAoaW5kZXgg PCAwKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJcmV0ID0gb2ZfcGFyc2VfcGhhbmRsZV93 aXRoX2FyZ3MoZHVfbm9kZSwgImNsb2NrcyIsCj4+ICsJCQkJCQkgIiNjbG9jay1jZWxscyIsIGlu ZGV4LAo+PiArCQkJCQkJICZsdmRzLT5jbGtzcGVjKTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJ CQljb250aW51ZTsKPj4gKwo+PiArCQlwb3J0ID0gaW5mby0+cm91dGVzW1JDQVJfRFVfT1VUUFVU X0xWRFMwICsgaV0ucG9ydDsKPj4gKwo+PiArCQlsdmRzLT5sb2NhbCA9IG9mX2dyYXBoX2dldF9l bmRwb2ludF9ieV9yZWdzKGR1X25vZGUsIHBvcnQsIDApOwo+PiArCQlpZiAoIWx2ZHMtPmxvY2Fs KQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJbHZkcy0+cmVtb3RlID0gb2ZfZ3JhcGhfZ2V0 X3JlbW90ZV9lbmRwb2ludChsdmRzLT5sb2NhbCk7Cj4+ICsJCWlmICghbHZkcy0+cmVtb3RlKQo+ PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJaW5kZXggPSBvZl9wcm9wZXJ0eV9tYXRjaF9zdHJp bmcoZHVfbm9kZSwgInJlZy1uYW1lcyIsIG5hbWUpOwo+PiArCQlpZiAoaW5kZXggPCAwKQo+PiAr CQkJY29udGludWU7Cj4+ICsKPj4gKwkJb2ZfYWRkcmVzc190b19yZXNvdXJjZShkdV9ub2RlLCBp bmRleCwgJmx2ZHMtPnJlcyk7Cj4+ICsJfQo+PiArCj4+ICsJLyogUGFyc2UgYW5kIGFwcGx5IHRo ZSBvdmVybGF5LiBUaGlzIHdpbGwgcmVzb2x2ZSBwaGFuZGxlcy4gKi8KPj4gKwlyZXQgPSByY2Fy X2R1X29mX2FwcGx5X292ZXJsYXkocmNhcl9kdV9sdmRzX292ZXJsYXlzLAo+PiArCQkJCSAgICAg ICBtYXRjaC0+Y29tcGF0aWJsZSk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCWdvdG8gZG9uZTsK Pj4gKwo+PiArCS8qIFBhdGNoIHRoZSBuZXdseSBjcmVhdGVkIExWRFMgZW5jb2RlciBub2Rlcy4g Ki8KPj4gKwlmb3JfZWFjaF9jaGlsZF9vZl9ub2RlKHNvY19ub2RlLCBsdmRzX25vZGUpIHsKPj4g KwkJc3RydWN0IHJlc291cmNlIHJlczsKPj4gKwo+PiArCQlpZiAoIW9mX2RldmljZV9pc19jb21w YXRpYmxlKGx2ZHNfbm9kZSwgY29tcGF0aWJsZSkpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiAr CQkvKiBMb2NhdGUgdGhlIGx2ZHNfZGF0YSBlbnRyeSBiYXNlZCBvbiB0aGUgcmVzb3VyY2Ugc3Rh cnQuICovCj4+ICsJCXJldCA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UobHZkc19ub2RlLCAwLCAm cmVzKTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShsdmRzX2RhdGEpOyArK2kpIHsKPj4gKwkJCWlmIChsdmRz X2RhdGFbaV0ucmVzLnN0YXJ0ID09IHJlcy5zdGFydCkKPj4gKwkJCQlicmVhazsKPj4gKwkJfQo+ PiArCj4+ICsJCWlmIChpID09IEFSUkFZX1NJWkUobHZkc19kYXRhKSkKPj4gKwkJCWNvbnRpbnVl Owo+PiArCj4+ICsJCS8qIFBhdGNoIHRoZSBMVkRTIGVuY29kZXIuICovCj4+ICsJCXJjYXJfZHVf b2ZfbHZkc19wYXRjaF9vbmUobHZkc19ub2RlLCAmbHZkc19kYXRhW2ldLmNsa3NwZWMsCj4+ICsJ CQkJCSAgbHZkc19kYXRhW2ldLmxvY2FsLAo+PiArCQkJCQkgIGx2ZHNfZGF0YVtpXS5yZW1vdGUp Owo+PiArCX0KPj4gKwo+PiArZG9uZToKPj4gKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX2x2 ZHM7ICsraSkgewo+PiArCQlvZl9ub2RlX3B1dChsdmRzX2RhdGFbaV0uY2xrc3BlYy5ucCk7Cj4+ ICsJCW9mX25vZGVfcHV0KGx2ZHNfZGF0YVtpXS5sb2NhbCk7Cj4+ICsJCW9mX25vZGVfcHV0KGx2 ZHNfZGF0YVtpXS5yZW1vdGUpOwo+PiArCX0KPj4gKwo+PiArCW9mX25vZGVfcHV0KHNvY19ub2Rl KTsKPj4gKwlvZl9ub2RlX3B1dChkdV9ub2RlKTsKPj4gK30KPj4gKwo+PiArdm9pZCBfX2luaXQg cmNhcl9kdV9vZl9pbml0KGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcykKPj4gK3sK Pj4gKwlyY2FyX2R1X29mX2x2ZHNfcGF0Y2gob2ZfaWRzKTsKPj4gK30KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaCBiL2RyaXZlcnMvZ3B1L2RybS9y Y2FyLWR1L3JjYXJfZHVfb2YuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAw MDAwMDAwMDAuLmMyZTY1YTcyN2U5MQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaAo+PiBAQCAtMCwwICsxLDIwIEBACj4+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+PiArLyoKPj4gKyAqIHJjYXJfZHVf b2YuaCAtIExlZ2FjeSBEVCBiaW5kaW5ncyBjb21wYXRpYmlsaXR5Cj4+ICsgKgo+PiArICogQ29w eXJpZ2h0IChDKSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNv bmJvYXJkLmNvbT4KPj4gKyAqLwo+PiArI2lmbmRlZiBfX1JDQVJfRFVfT0ZfSF9fCj4+ICsjZGVm aW5lIF9fUkNBUl9EVV9PRl9IX18KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4g Kwo+PiArc3RydWN0IG9mX2RldmljZV9pZDsKPj4gKwo+PiArI2lmZGVmIENPTkZJR19EUk1fUkNB Ul9MVkRTCj4+ICt2b2lkIF9faW5pdCByY2FyX2R1X29mX2luaXQoY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCAqb2ZfaWRzKTsKPj4gKyNlbHNlCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9k dV9vZl9pbml0KGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcykgeyB9Cj4+ICsjZW5k aWYgLyogQ09ORklHX0RSTV9SQ0FSX0xWRFMgKi8KPj4gKwo+PiArI2VuZGlmIC8qIF9fUkNBUl9E VV9PRl9IX18gKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJf ZHVfb2ZfbHZkc19yOGE3NzkwLmR0cyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf b2ZfbHZkc19yOGE3NzkwLmR0cwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAw MDAwMDAwMDAuLmYxMThhNmFlNzc4Mgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0cwo+PiBAQCAtMCwwICsx LDc5IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+PiArLyoKPj4g KyAqIHJjYXJfZHVfb2ZfbHZkc19yOGE3NzkwLmR0cyAtIExlZ2FjeSBMVkRTIERUIGJpbmRpbmdz IGNvbnZlcnNpb24gZm9yIFI4QTc3OTAKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTgg TGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+PiAr ICoKPj4gKyAqIEJhc2VkIG9uIHdvcmsgZnJvbSBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+ PiArICogQ29weXJpZ2h0IChDKSAyMDE1IFRleGFzIEluc3RydW1lbnRzCj4+ICsgKi8KPj4gKwo+ PiArL2R0cy12MS87Cj4+ICsvcGx1Z2luLzsKPj4gKy8gewo+PiArCWZyYWdtZW50QDAgewo+PiAr CQl0YXJnZXQtcGF0aCA9ICIvIjsKPj4gKwkJX19vdmVybGF5X18gewo+PiArCQkJI2FkZHJlc3Mt Y2VsbHMgPSA8Mj47Cj4+ICsJCQkjc2l6ZS1jZWxscyA9IDwyPjsKPj4gKwo+PiArCQkJbHZkc0Bm ZWI5MDAwMCB7Cj4+ICsJCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTAtbHZkcyI7Cj4+ ICsJCQkJcmVnID0gPDAgMHhmZWI5MDAwMCAwIDB4MWM+Owo+PiArCj4+ICsJCQkJcG9ydHMgewo+ PiArCQkJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPj4gKwkJCQkJI3NpemUtY2VsbHMgPSA8MD47 Cj4+ICsKPj4gKwkJCQkJcG9ydEAwIHsKPj4gKwkJCQkJCXJlZyA9IDwwPjsKPj4gKwkJCQkJCWx2 ZHMwX2lucHV0OiBlbmRwb2ludCB7Cj4+ICsJCQkJCQl9Owo+PiArCQkJCQl9Owo+PiArCQkJCQlw b3J0QDEgewo+PiArCQkJCQkJcmVnID0gPDE+Owo+PiArCQkJCQkJbHZkczBfb3V0OiBlbmRwb2lu dCB7Cj4+ICsJCQkJCQl9Owo+PiArCQkJCQl9Owo+PiArCQkJCX07Cj4+ICsJCQl9Owo+PiArCj4+ ICsJCQlsdmRzQGZlYjk0MDAwIHsKPj4gKwkJCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5 MC1sdmRzIjsKPj4gKwkJCQlyZWcgPSA8MCAweGZlYjk0MDAwIDAgMHgxYz47Cj4+ICsKPj4gKwkJ CQlwb3J0cyB7Cj4+ICsJCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+PiArCQkJCQkjc2l6ZS1j ZWxscyA9IDwwPjsKPj4gKwo+PiArCQkJCQlwb3J0QDAgewo+PiArCQkJCQkJcmVnID0gPDA+Owo+ PiArCQkJCQkJbHZkczFfaW5wdXQ6IGVuZHBvaW50IHsKPj4gKwkJCQkJCX07Cj4+ICsJCQkJCX07 Cj4+ICsJCQkJCXBvcnRAMSB7Cj4+ICsJCQkJCQlyZWcgPSA8MT47Cj4+ICsJCQkJCQlsdmRzMV9v dXQ6IGVuZHBvaW50IHsKPj4gKwkJCQkJCX07Cj4+ICsJCQkJCX07Cj4+ICsJCQkJfTsKPj4gKwkJ CX07Cj4+ICsJCX07Cj4+ICsJfTsKPj4gKwo+PiArCWZyYWdtZW50QDEgewo+PiArCQl0YXJnZXQt cGF0aCA9ICIvZGlzcGxheUBmZWIwMDAwMC9wb3J0cyI7Cj4+ICsJCV9fb3ZlcmxheV9fIHsKPj4g KwkJCXBvcnRAMSB7Cj4+ICsJCQkJZW5kcG9pbnQgewo+PiArCQkJCQlyZW1vdGUtZW5kcG9pbnQg PSA8Jmx2ZHMwX2lucHV0PjsKPj4gKwkJCQl9Owo+PiArCQkJfTsKPj4gKwkJCXBvcnRAMiB7Cj4+ ICsJCQkJZW5kcG9pbnQgewo+PiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jmx2ZHMxX2lucHV0 PjsKPj4gKwkJCQl9Owo+PiArCQkJfTsKPj4gKwkJfTsKPj4gKwl9Owo+PiArfTsKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkxLmR0 cyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkxLmR0cwo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjdkODY1NzI3OTI4 Ywo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJf ZHVfb2ZfbHZkc19yOGE3NzkxLmR0cwo+PiBAQCAtMCwwICsxLDUzIEBACj4+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+PiArLyoKPj4gKyAqIHJjYXJfZHVfb2ZfbHZkc19y OGE3NzkxLmR0cyAtIExlZ2FjeSBMVkRTIERUIGJpbmRpbmdzIGNvbnZlcnNpb24gZm9yIFI4QTc3 OTEKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTGF1cmVudCBQaW5jaGFydCA8bGF1 cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+PiArICoKPj4gKyAqIEJhc2VkIG9uIHdv cmsgZnJvbSBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+PiArICogQ29weXJpZ2h0IChDKSAy MDE1IFRleGFzIEluc3RydW1lbnRzCj4+ICsgKi8KPj4gKwo+PiArL2R0cy12MS87Cj4+ICsvcGx1 Z2luLzsKPj4gKy8gewo+PiArCWZyYWdtZW50QDAgewo+PiArCQl0YXJnZXQtcGF0aCA9ICIvIjsK Pj4gKwkJX19vdmVybGF5X18gewo+PiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47Cj4+ICsJCQkj c2l6ZS1jZWxscyA9IDwyPjsKPj4gKwo+PiArCQkJbHZkc0BmZWI5MDAwMCB7Cj4+ICsJCQkJY29t cGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTEtbHZkcyI7Cj4+ICsJCQkJcmVnID0gPDAgMHhmZWI5 MDAwMCAwIDB4MWM+Owo+PiArCj4+ICsJCQkJcG9ydHMgewo+PiArCQkJCQkjYWRkcmVzcy1jZWxs cyA9IDwxPjsKPj4gKwkJCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4+ICsKPj4gKwkJCQkJcG9ydEAw IHsKPj4gKwkJCQkJCXJlZyA9IDwwPjsKPj4gKwkJCQkJCWx2ZHMwX2lucHV0OiBlbmRwb2ludCB7 Cj4+ICsJCQkJCQl9Owo+PiArCQkJCQl9Owo+PiArCQkJCQlwb3J0QDEgewo+PiArCQkJCQkJcmVn ID0gPDE+Owo+PiArCQkJCQkJbHZkczBfb3V0OiBlbmRwb2ludCB7Cj4+ICsJCQkJCQl9Owo+PiAr CQkJCQl9Owo+PiArCQkJCX07Cj4+ICsJCQl9Owo+PiArCQl9Owo+PiArCX07Cj4+ICsKPj4gKwlm cmFnbWVudEAxIHsKPj4gKwkJdGFyZ2V0LXBhdGggPSAiL2Rpc3BsYXlAZmViMDAwMDAvcG9ydHMi Owo+PiArCQlfX292ZXJsYXlfXyB7Cj4+ICsJCQlwb3J0QDEgewo+PiArCQkJCWVuZHBvaW50IHsK Pj4gKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZsdmRzMF9pbnB1dD47Cj4+ICsJCQkJfTsKPj4g KwkJCX07Cj4+ICsJCX07Cj4+ICsJfTsKPj4gK307Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5My5kdHMgYi9kcml2ZXJzL2dwdS9k cm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5My5kdHMKPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iYjI2MzcxMTgzNGQKPj4gLS0tIC9kZXYvbnVs bAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5 My5kdHMKPj4gQEAgLTAsMCArMSw1MyBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiByY2FyX2R1X29mX2x2ZHNfcjhhNzc5My5kdHMgLSBMZWdh Y3kgTFZEUyBEVCBiaW5kaW5ncyBjb252ZXJzaW9uIGZvciBSOEE3NzkzCj4+ICsgKgo+PiArICog Q29weXJpZ2h0IChDKSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRl YXNvbmJvYXJkLmNvbT4KPj4gKyAqCj4+ICsgKiBCYXNlZCBvbiB3b3JrIGZyb20gSnlyaSBTYXJo YSA8anNhcmhhQHRpLmNvbT4KPj4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0cnVt ZW50cwo+PiArICovCj4+ICsKPj4gKy9kdHMtdjEvOwo+PiArL3BsdWdpbi87Cj4+ICsvIHsKPj4g KwlmcmFnbWVudEAwIHsKPj4gKwkJdGFyZ2V0LXBhdGggPSAiLyI7Cj4+ICsJCV9fb3ZlcmxheV9f IHsKPj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDI+Owo+PiArCQkJI3NpemUtY2VsbHMgPSA8Mj47 Cj4+ICsKPj4gKwkJCWx2ZHNAZmViOTAwMDAgewo+PiArCQkJCWNvbXBhdGlibGUgPSAicmVuZXNh cyxyOGE3NzkzLWx2ZHMiOwo+PiArCQkJCXJlZyA9IDwwIDB4ZmViOTAwMDAgMCAweDFjPjsKPj4g Kwo+PiArCQkJCXBvcnRzIHsKPj4gKwkJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4+ICsJCQkJ CSNzaXplLWNlbGxzID0gPDA+Owo+PiArCj4+ICsJCQkJCXBvcnRAMCB7Cj4+ICsJCQkJCQlyZWcg PSA8MD47Cj4+ICsJCQkJCQlsdmRzMF9pbnB1dDogZW5kcG9pbnQgewo+PiArCQkJCQkJfTsKPj4g KwkJCQkJfTsKPj4gKwkJCQkJcG9ydEAxIHsKPj4gKwkJCQkJCXJlZyA9IDwxPjsKPj4gKwkJCQkJ CWx2ZHMwX291dDogZW5kcG9pbnQgewo+PiArCQkJCQkJfTsKPj4gKwkJCQkJfTsKPj4gKwkJCQl9 Owo+PiArCQkJfTsKPj4gKwkJfTsKPj4gKwl9Owo+PiArCj4+ICsJZnJhZ21lbnRAMSB7Cj4+ICsJ CXRhcmdldC1wYXRoID0gIi9kaXNwbGF5QGZlYjAwMDAwL3BvcnRzIjsKPj4gKwkJX19vdmVybGF5 X18gewo+PiArCQkJcG9ydEAxIHsKPj4gKwkJCQllbmRwb2ludCB7Cj4+ICsJCQkJCXJlbW90ZS1l bmRwb2ludCA9IDwmbHZkczBfaW5wdXQ+Owo+PiArCQkJCX07Cj4+ICsJCQl9Owo+PiArCQl9Owo+ PiArCX07Cj4+ICt9Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNh cl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9k dV9vZl9sdmRzX3I4YTc3OTUuZHRzCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAw MDAwMDAwMDAwMC4uOWJiZjdjOWU1Y2U0Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzCj4+IEBAIC0wLDAg KzEsNTMgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsvKgo+ PiArICogcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzIC0gTGVnYWN5IExWRFMgRFQgYmluZGlu Z3MgY29udmVyc2lvbiBmb3IgUjhBNzc5NQo+PiArICoKPj4gKyAqIENvcHlyaWdodCAoQykgMjAx OCBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4+ ICsgKgo+PiArICogQmFzZWQgb24gd29yayBmcm9tIEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+ Cj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGV4YXMgSW5zdHJ1bWVudHMKPj4gKyAqLwo+PiAr Cj4+ICsvZHRzLXYxLzsKPj4gKy9wbHVnaW4vOwo+PiArLyB7Cj4+ICsJZnJhZ21lbnRAMCB7Cj4+ ICsJCXRhcmdldC1wYXRoID0gIi9zb2MiOwo+PiArCQlfX292ZXJsYXlfXyB7Cj4+ICsJCQkjYWRk cmVzcy1jZWxscyA9IDwyPjsKPj4gKwkJCSNzaXplLWNlbGxzID0gPDI+Owo+PiArCj4+ICsJCQls dmRzQGZlYjkwMDAwIHsKPj4gKwkJCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5NS1sdmRz IjsKPj4gKwkJCQlyZWcgPSA8MCAweGZlYjkwMDAwIDAgMHgxND47Cj4+ICsKPj4gKwkJCQlwb3J0 cyB7Cj4+ICsJCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+PiArCQkJCQkjc2l6ZS1jZWxscyA9 IDwwPjsKPj4gKwo+PiArCQkJCQlwb3J0QDAgewo+PiArCQkJCQkJcmVnID0gPDA+Owo+PiArCQkJ CQkJbHZkczBfaW5wdXQ6IGVuZHBvaW50IHsKPj4gKwkJCQkJCX07Cj4+ICsJCQkJCX07Cj4+ICsJ CQkJCXBvcnRAMSB7Cj4+ICsJCQkJCQlyZWcgPSA8MT47Cj4+ICsJCQkJCQlsdmRzMF9vdXQ6IGVu ZHBvaW50IHsKPj4gKwkJCQkJCX07Cj4+ICsJCQkJCX07Cj4+ICsJCQkJfTsKPj4gKwkJCX07Cj4+ ICsJCX07Cj4+ICsJfTsKPj4gKwo+PiArCWZyYWdtZW50QDEgewo+PiArCQl0YXJnZXQtcGF0aCA9 ICIvc29jL2Rpc3BsYXlAZmViMDAwMDAvcG9ydHMiOwo+PiArCQlfX292ZXJsYXlfXyB7Cj4+ICsJ CQlwb3J0QDMgewo+PiArCQkJCWVuZHBvaW50IHsKPj4gKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0g PCZsdmRzMF9pbnB1dD47Cj4+ICsJCQkJfTsKPj4gKwkJCX07Cj4+ICsJCX07Cj4+ICsJfTsKPj4g K307Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2 ZHNfcjhhNzc5Ni5kdHMgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNf cjhhNzc5Ni5kdHMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAw Li5kMTZmM2U5ZTA4YWIKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v cmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMKPj4gQEAgLTAsMCArMSw1MyBAQAo+ PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiByY2Fy X2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMgLSBMZWdhY3kgTFZEUyBEVCBiaW5kaW5ncyBjb252ZXJz aW9uIGZvciBSOEE3Nzk2Cj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IExhdXJlbnQg UGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPj4gKyAqCj4+ICsg KiBCYXNlZCBvbiB3b3JrIGZyb20gSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KPj4gKyAqIENv cHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0cnVtZW50cwo+PiArICovCj4+ICsKPj4gKy9kdHMt djEvOwo+PiArL3BsdWdpbi87Cj4+ICsvIHsKPj4gKwlmcmFnbWVudEAwIHsKPj4gKwkJdGFyZ2V0 LXBhdGggPSAiL3NvYyI7Cj4+ICsJCV9fb3ZlcmxheV9fIHsKPj4gKwkJCSNhZGRyZXNzLWNlbGxz ID0gPDI+Owo+PiArCQkJI3NpemUtY2VsbHMgPSA8Mj47Cj4+ICsKPj4gKwkJCWx2ZHNAZmViOTAw MDAgewo+PiArCQkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3Nzk2LWx2ZHMiOwo+PiArCQkJ CXJlZyA9IDwwIDB4ZmViOTAwMDAgMCAweDE0PjsKPj4gKwo+PiArCQkJCXBvcnRzIHsKPj4gKwkJ CQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4+ICsJCQkJCSNzaXplLWNlbGxzID0gPDA+Owo+PiAr Cj4+ICsJCQkJCXBvcnRAMCB7Cj4+ICsJCQkJCQlyZWcgPSA8MD47Cj4+ICsJCQkJCQlsdmRzMF9p bnB1dDogZW5kcG9pbnQgewo+PiArCQkJCQkJfTsKPj4gKwkJCQkJfTsKPj4gKwkJCQkJcG9ydEAx IHsKPj4gKwkJCQkJCXJlZyA9IDwxPjsKPj4gKwkJCQkJCWx2ZHMwX291dDogZW5kcG9pbnQgewo+ PiArCQkJCQkJfTsKPj4gKwkJCQkJfTsKPj4gKwkJCQl9Owo+PiArCQkJfTsKPj4gKwkJfTsKPj4g Kwl9Owo+PiArCj4+ICsJZnJhZ21lbnRAMSB7Cj4+ICsJCXRhcmdldC1wYXRoID0gIi9zb2MvZGlz cGxheUBmZWIwMDAwMC9wb3J0cyI7Cj4+ICsJCV9fb3ZlcmxheV9fIHsKPj4gKwkJCXBvcnRAMyB7 Cj4+ICsJCQkJZW5kcG9pbnQgewo+PiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jmx2ZHMwX2lu cHV0PjsKPj4gKwkJCQl9Owo+PiArCQkJfTsKPj4gKwkJfTsKPj4gKwl9Owo+PiArfTsKPj4KPiAK PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=