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: Thu, 22 Feb 2018 14:10:17 -0800 Message-ID: <06d3fb91-961d-a053-df22-cddf3419b159@gmail.com> References: <20180222131336.7712-1-laurent.pinchart+renesas@ideasonboard.com> <20180222131336.7712-4-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180222131336.7712-4-laurent.pinchart+renesas@ideasonboard.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 SGkgTGF1cmVudCwgUm9iLAoKVGhhbmtzIGZvciB0aGUgcHJvbXB0IHNwaW4gdG8gYWRkcmVzcyBt eSBjb25jZXJucy4gIFRoZXJlIGFyZSBzb21lIHNtYWxsCnRlY2huaWNhbCBpc3N1ZXMuCgpJIGRp ZCBub3QgcmVhZCB0aGUgdjMgcGF0Y2ggdW50aWwgdG9kYXkuICB2MyB0aHJvdWdoIHY2IGFyZSBz dGlsbCB1c2luZyB0aGUKb2xkIG92ZXJsYXkgYXBwbHkgbWV0aG9kIHdoaWNoIHVzZXMgYW4gZXhw YW5kZWQgZGV2aWNlIHRyZWUgYXMgaW5wdXQuCgpSb2IsIEkgZG9uJ3Qgc2VlIG15IG92ZXJsYXkg cGF0Y2hlcyBpbiB5b3UgZm9yLW5leHQgYnJhbmNoLCBhbmQgSSBoYXZlCm5vdCBzZWVuIGFuICJB cHBsaWVkIiBtZXNzYWdlIGZyb20geW91LiAgV2hhdCBpcyB0aGUgc3RhdHVzIG9mIHRoZQpvdmVy bGF5IHBhdGNoZXM/CgpDb21tZW50cyBpbiB0aGUgcGF0Y2ggYmVsb3cuCgoKT24gMDIvMjIvMTgg MDU6MTMsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gVGhlIGludGVybmFsIExWRFMgZW5jb2Rl cnMgbm93IGhhdmUgdGhlaXIgb3duIERUIGJpbmRpbmdzLiBCZWZvcmUKPiBzd2l0Y2hpbmcgdGhl IGRyaXZlciBpbmZyYXN0cnVjdHVyZSB0byB0aG9zZSBuZXcgYmluZGluZ3MsIGltcGxlbWVudAo+ IGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgdGhyb3VnaCBsaXZlIERUIHBhdGNoaW5nLgo+IAo+IFBh dGNoaW5nIGlzIGRpc2FibGVkIGFuZCB3aWxsIGJlIGVuYWJsZWQgYWxvbmcgd2l0aCBzdXBwb3J0 IGZvciB0aGUgbmV3Cj4gRFQgYmluZGluZ3MgaW4gdGhlIERVIGRyaXZlci4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRlYXNv bmJvYXJkLmNvbT4KPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIHY1Ogo+IAo+IC0gVXNlIGEgcHJpdmF0 ZSBjb3B5IG9mIHJjYXJfZHVfb2ZfY2hhbmdlc2V0X2FkZF9wcm9wZXJ0eSgpCj4gCj4gQ2hhbmdl cyBzaW5jZSB2MzoKPiAKPiAtIFVzZSB0aGUgT0YgY2hhbmdlc2V0IEFQSQo+IC0gVXNlIG9mX2dy YXBoX2dldF9lbmRwb2ludF9ieV9yZWdzKCkKPiAtIFJlcGxhY2UgaGFyZGNvZGVkIGNvbnN0YW50 cyBieSBzaXplb2YoKQo+IAo+IENoYW5nZXMgc2luY2UgdjI6Cj4gCj4gLSBVcGRhdGUgdGhlIFNQ RFggaGVhZGVycyB0byB1c2UgQy1zdHlsZSBjb21tZW50cyBpbiBoZWFkZXIgZmlsZXMKPiAtIFJl bW92ZWQgdGhlIG1hbnVhbGx5IGNyZWF0ZWQgX19sb2NhbF9maXh1cHNfXyBub2RlCj4gLSBQZXJm b3JtIG1hbnVhbCBmaXh1cHMgb24gbGl2ZSBEVCBpbnN0ZWFkIG9mIG92ZXJsYXkKPiAKPiBDaGFu Z2VzIHNpbmNlIHYxOgo+IAo+IC0gU2VsZWN0IE9GX0ZMQVRUUkVFCj4gLSBDb21waWxlIExWRFMg RFQgYmluZGluZ3MgcGF0Y2ggY29kZSB3aGVuIERSTV9SQ0FSX0xWRFMgaXMgc2VsZWN0ZWQKPiAt IFVwZGF0ZSB0aGUgU1BEWCBoZWFkZXJzIHRvIHVzZSBHUEwtMi4wIGluc3RlYWQgb2YgR1BMLTIu MC1vbmx5Cj4gLSBUdXJuIF9fZHRiX3JjYXJfZHVfb2ZfbHZkc18oYmVnaW58ZW5kKSBmcm9tIHU4 IHRvIGNoYXIKPiAtIFBhc3Mgdm9pZCBiZWdpbiBhbmQgZW5kIHBvaW50ZXJzIHRvIHJjYXJfZHVf b2ZfZ2V0X292ZXJsYXkoKQo+IC0gVXNlIG9mX2dldF9wYXJlbnQoKSBpbnN0ZWFkIG9mIGFjY2Vz c2luZyB0aGUgcGFyZW50IHBvaW50ZXIgZGlyZWN0bHkKPiAtIEZpbmQgdGhlIExWRFMgZW5kcG9p bnRzIG5vZGVzIGJhc2VkIG9uIHRoZSBMVkRTIG5vZGUgaW5zdGVhZCBvZiB0aGUKPiAgIHJvb3Qg b2YgdGhlIG92ZXJsYXkKPiAtIFVwZGF0ZSB0byB0aGUgPHNvYz4tbHZkcyBjb21wYXRpYmxlIHN0 cmluZyBmb3JtYXQKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZyAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICB8ICAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X29mLmMgICAgICAgICAgICAgICB8IDM0MiArKysrKysrKysrKysrKysrKysrKysKPiAg ZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZi5oICAgICAgICAgICAgICAgfCAgMjAg KysKPiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5MC5kdHMgICAg fCAgNzkgKysrKysKPiAgLi4uL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5 MS5kdHMgICAgfCAgNTMgKysrKwo+ICAuLi4vZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZk c19yOGE3NzkzLmR0cyAgICB8ICA1MyArKysrCj4gIC4uLi9ncHUvZHJtL3JjYXItZHUvcmNhcl9k dV9vZl9sdmRzX3I4YTc3OTUuZHRzICAgIHwgIDUzICsrKysKPiAgLi4uL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMgICAgfCAgNTMgKysrKwo+ICA5IGZpbGVzIGNo YW5nZWQsIDY2MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmMKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaAo+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTAu ZHRzCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1 X29mX2x2ZHNfcjhhNzc5MS5kdHMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkzLmR0cwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2 ZHNfcjhhNzc5Ni5kdHMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKPiBpbmRleCA1ZDBiNGI3 MTE5YWYuLjNmODMzNTJhNzMxMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZwo+IEBAIC0y Miw2ICsyMiw4IEBAIGNvbmZpZyBEUk1fUkNBUl9MVkRTCj4gIAlib29sICJSLUNhciBEVSBMVkRT IEVuY29kZXIgU3VwcG9ydCIKPiAgCWRlcGVuZHMgb24gRFJNX1JDQVJfRFUKPiAgCXNlbGVjdCBE Uk1fUEFORUwKPiArCXNlbGVjdCBPRl9GTEFUVFJFRQo+ICsJc2VsZWN0IE9GX09WRVJMQVkKPiAg CWhlbHAKPiAgCSAgRW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBSLUNhciBEaXNwbGF5IFVuaXQgZW1i ZWRkZWQgTFZEUyBlbmNvZGVycy4KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9y Y2FyLWR1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUKPiBpbmRl eCAwY2Y1YzExMDMwZTguLjg2YjMzN2I0YmU1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vcmNhci1kdS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L01ha2Vm aWxlCj4gQEAgLTgsNyArOCwxMiBAQCByY2FyLWR1LWRybS15IDo9IHJjYXJfZHVfY3J0Yy5vIFwK PiAgCQkgcmNhcl9kdV9wbGFuZS5vCj4gIAo+ICByY2FyLWR1LWRybS0kKENPTkZJR19EUk1fUkNB Ul9MVkRTKQkrPSByY2FyX2R1X2x2ZHNlbmMubwo+IC0KPiArcmNhci1kdS1kcm0tJChDT05GSUdf RFJNX1JDQVJfTFZEUykJKz0gcmNhcl9kdV9vZi5vIFwKPiArCQkJCQkgICByY2FyX2R1X29mX2x2 ZHNfcjhhNzc5MC5kdGIubyBcCj4gKwkJCQkJICAgcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTEuZHRi Lm8gXAo+ICsJCQkJCSAgIHJjYXJfZHVfb2ZfbHZkc19yOGE3NzkzLmR0Yi5vIFwKPiArCQkJCQkg ICByY2FyX2R1X29mX2x2ZHNfcjhhNzc5NS5kdGIubyBcCj4gKwkJCQkJICAgcmNhcl9kdV9vZl9s dmRzX3I4YTc3OTYuZHRiLm8KPiAgcmNhci1kdS1kcm0tJChDT05GSUdfRFJNX1JDQVJfVlNQKQkr PSByY2FyX2R1X3ZzcC5vCj4gIAo+ICBvYmotJChDT05GSUdfRFJNX1JDQVJfRFUpCQkrPSByY2Fy LWR1LWRybS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf b2YuYyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hYzQ0MmRkZmVkMTYKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZi5jCj4gQEAgLTAs MCArMSwzNDIgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoK PiArICogcmNhcl9kdV9vZi5jIC0gTGVnYWN5IERUIGJpbmRpbmdzIGNvbXBhdGliaWxpdHkKPiAr ICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGlu Y2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiArICoKPiArICogQmFzZWQgb24gd29yayBmcm9tIEp5 cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBUZXhhcyBJ bnN0cnVtZW50cwo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9mZHQuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L29mX2dyYXBoLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ ICsjaW5jbHVkZSAicmNhcl9kdV9jcnRjLmgiCj4gKyNpbmNsdWRlICJyY2FyX2R1X2Rydi5oIgo+ ICsKPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICogR2VuZXJpYyBPdmVybGF5IEhhbmRs aW5nCj4gKyAqLwo+ICsKPiArc3RydWN0IHJjYXJfZHVfb2Zfb3ZlcmxheSB7Cj4gKwljb25zdCBj aGFyICpjb21wYXRpYmxlOwo+ICsJdm9pZCAqYmVnaW47Cj4gKwl2b2lkICplbmQ7Cj4gK307Cj4g Kwo+ICsjZGVmaW5lIFJDQVJfRFVfT0ZfRFRCKHR5cGUsIHNvYykJCQkJCVwKPiArCWV4dGVybiBj aGFyIF9fZHRiX3JjYXJfZHVfb2ZfIyN0eXBlIyNfIyNzb2MjI19iZWdpbltdOwkJXAo+ICsJZXh0 ZXJuIGNoYXIgX19kdGJfcmNhcl9kdV9vZl8jI3R5cGUjI18jI3NvYyMjX2VuZFtdCj4gKwo+ICsj ZGVmaW5lIFJDQVJfRFVfT0ZfT1ZFUkxBWSh0eXBlLCBzb2MpCQkJCQlcCj4gKwl7CQkJCQkJCQlc Cj4gKwkJLmNvbXBhdGlibGUgPSAicmVuZXNhcyxkdS0iICNzb2MsCQkJXAo+ICsJCS5iZWdpbiA9 IF9fZHRiX3JjYXJfZHVfb2ZfIyN0eXBlIyNfIyNzb2MjI19iZWdpbiwJXAo+ICsJCS5lbmQgPSBf X2R0Yl9yY2FyX2R1X29mXyMjdHlwZSMjXyMjc29jIyNfZW5kLAkJXAo+ICsJfQo+ICsKPiArc3Rh dGljIGludCBfX2luaXQgcmNhcl9kdV9vZl9hcHBseV9vdmVybGF5KGNvbnN0IHN0cnVjdCByY2Fy X2R1X29mX292ZXJsYXkgKmR0YnMsCj4gKwkJCQkJICAgY29uc3QgY2hhciAqY29tcGF0aWJsZSkK PiArewo+ICsJY29uc3Qgc3RydWN0IHJjYXJfZHVfb2Zfb3ZlcmxheSAqZHRiID0gTlVMTDsKPiAr CXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IE5VTEw7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiAr CWludCBvdmNzX2lkOwo+ICsJdm9pZCAqZGF0YTsKPiArCXZvaWQgKm1lbTsKPiArCWludCByZXQ7 Cj4gKwo+ICsJZm9yIChpID0gMDsgZHRic1tpXS5jb21wYXRpYmxlOyArK2kpIHsKPiArCQlpZiAo IXN0cmNtcChkdGJzW2ldLmNvbXBhdGlibGUsIGNvbXBhdGlibGUpKSB7Cj4gKwkJCWR0YiA9ICZk dGJzW2ldOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKCFkdGIpCj4gKwkJ cmV0dXJuIC1FTk9ERVY7CgpfX0lmX18gbXkgb3ZlcmxheSBwYXRjaGVzIGFyZSBhY2NlcHRlZCwg dGhpcyBibG9jazoKCj4gKwo+ICsJZGF0YSA9IGttZW1kdXAoZHRiLT5iZWdpbiwgZHRiLT5lbmQg LSBkdGItPmJlZ2luLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZGF0YSkKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCj4gKwltZW0gPSBvZl9mZHRfdW5mbGF0dGVuX3RyZWUoZGF0YSwgTlVMTCwgJm5v ZGUpOwo+ICsJaWYgKCFtZW0pIHsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gZG9uZTsK PiArCX0KPiArCj4gKwlvdmNzX2lkID0gMDsKPiArCXJldCA9IG9mX292ZXJsYXlfYXBwbHkobm9k ZSwgJm92Y3NfaWQpOwo+ICsKPiArZG9uZToKPiArCW9mX25vZGVfcHV0KG5vZGUpOwo+ICsJa2Zy ZWUoZGF0YSk7Cj4gKwlrZnJlZShtZW0pOwoKYmVjb21lczoKCglyZXQgPSBvZl9vdmVybGF5X2Zk dF9hcHBseShkdGItPmJlZ2luLCAmb3Zjc19pZCk7CgpJZiBteSBvdmVybGF5IHBhdGNoZXMgZG8g bm90IGV4aXN0LCB0aGVyZSBhcmUgb3RoZXIgc21hbGwgZXJyb3JzCmluIHRoZSBjb2RlIGJsb2Nr IGFib3ZlLiAgSSdsbCBpZ25vcmUgdGhlbSBmb3IgdGhlIG1vbWVudC4KCkEgcXVpY2sgc2NhbiBv ZiB0aGUgcmVzdCBvZiB0aGUgY29kZSBsb29rcyBPSy4gIEknbGwgcmVhZCB0aHJvdWdoIGl0Cm1v cmUgY2FyZWZ1bGx5LCBidXQgd2FudGVkIHRvIGdldCB0aGlzIHJlcGx5IG91dCB3aXRob3V0IGZ1 cnRoZXIKZGVsYXkuCgotRnJhbmsKCgo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgX19pbml0IHJjYXJfZHVfb2ZfYWRkX3Byb3BlcnR5KHN0cnVjdCBvZl9jaGFuZ2Vz ZXQgKm9jcywKPiArCQkJCQkgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCj4gKwkJCQkJICBjb25z dCBjaGFyICpuYW1lLCBjb25zdCB2b2lkICp2YWx1ZSwKPiArCQkJCQkgIGludCBsZW5ndGgpCj4g K3sKPiArCXN0cnVjdCBwcm9wZXJ0eSAqcHJvcDsKPiArCWludCByZXQgPSAtRU5PTUVNOwo+ICsK PiArCXByb3AgPSBremFsbG9jKHNpemVvZigqcHJvcCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFw cm9wKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXByb3AtPm5hbWUgPSBrc3RyZHVwKG5h bWUsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwcm9wLT5uYW1lKQo+ICsJCWdvdG8gb3V0X2VycjsK PiArCj4gKwlwcm9wLT52YWx1ZSA9IGttZW1kdXAodmFsdWUsIGxlbmd0aCwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIXByb3AtPnZhbHVlKQo+ICsJCWdvdG8gb3V0X2VycjsKPiArCj4gKwlvZl9wcm9w ZXJ0eV9zZXRfZmxhZyhwcm9wLCBPRl9EWU5BTUlDKTsKPiArCj4gKwlwcm9wLT5sZW5ndGggPSBs ZW5ndGg7Cj4gKwo+ICsJcmV0ID0gb2ZfY2hhbmdlc2V0X2FkZF9wcm9wZXJ0eShvY3MsIG5wLCBw cm9wKTsKPiArCWlmICghcmV0KQo+ICsJCXJldHVybiAwOwo+ICsKPiArb3V0X2VycjoKPiArCWtm cmVlKHByb3AtPnZhbHVlKTsKPiArCWtmcmVlKHByb3AtPm5hbWUpOwo+ICsJa2ZyZWUocHJvcCk7 Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsg KiBMVkRTIE92ZXJsYXlzCj4gKyAqLwo+ICsKPiArUkNBUl9EVV9PRl9EVEIobHZkcywgcjhhNzc5 MCk7Cj4gK1JDQVJfRFVfT0ZfRFRCKGx2ZHMsIHI4YTc3OTEpOwo+ICtSQ0FSX0RVX09GX0RUQihs dmRzLCByOGE3NzkzKTsKPiArUkNBUl9EVV9PRl9EVEIobHZkcywgcjhhNzc5NSk7Cj4gK1JDQVJf RFVfT0ZfRFRCKGx2ZHMsIHI4YTc3OTYpOwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCByY2Fy X2R1X29mX292ZXJsYXkgcmNhcl9kdV9sdmRzX292ZXJsYXlzW10gX19pbml0Y29uc3QgPSB7Cj4g KwlSQ0FSX0RVX09GX09WRVJMQVkobHZkcywgcjhhNzc5MCksCj4gKwlSQ0FSX0RVX09GX09WRVJM QVkobHZkcywgcjhhNzc5MSksCj4gKwlSQ0FSX0RVX09GX09WRVJMQVkobHZkcywgcjhhNzc5Myks Cj4gKwlSQ0FSX0RVX09GX09WRVJMQVkobHZkcywgcjhhNzc5NSksCj4gKwlSQ0FSX0RVX09GX09W RVJMQVkobHZkcywgcjhhNzc5NiksCj4gKwl7IC8qIFNlbnRpbmVsICovIH0sCj4gK307Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IG9mX2NoYW5nZXNldCByY2FyX2R1X2x2ZHNfY2hhbmdlc2V0Owo+ICsK PiArc3RhdGljIHZvaWQgX19pbml0IHJjYXJfZHVfb2ZfbHZkc19wYXRjaF9vbmUoc3RydWN0IGRl dmljZV9ub2RlICpsdmRzLAo+ICsJCQkJCSAgICAgY29uc3Qgc3RydWN0IG9mX3BoYW5kbGVfYXJn cyAqY2xrLAo+ICsJCQkJCSAgICAgc3RydWN0IGRldmljZV9ub2RlICpsb2NhbCwKPiArCQkJCQkg ICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgcHNp emU7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCV9fYmUzMiB2YWx1ZVs0XTsKPiArCWludCByZXQ7 Cj4gKwo+ICsJLyoKPiArCSAqIFNldCB0aGUgTFZEUyBjbG9ja3MgcHJvcGVydHkuIFRoaXMgY2Fu J3QgYmUgcGVyZm9ybWVkIGJ5IHRoZSBvdmVybGF5Cj4gKwkgKiBhcyB0aGUgc3RydWN0dXJlIG9m IHRoZSBjbG9jayBzcGVjaWZpZXIgaGFzIGNoYW5nZWQgb3ZlciB0aW1lLCBhbmQgd2UKPiArCSAq IGRvbid0IGtub3cgYXQgY29tcGlsZSB0aW1lIHdoaWNoIGJpbmRpbmcgdmVyc2lvbiB0aGUgc3lz dGVtIHdlIHdpbGwKPiArCSAqIHJ1biBvbiB1c2VzLgo+ICsJICovCj4gKwlpZiAoY2xrLT5hcmdz X2NvdW50ID49IEFSUkFZX1NJWkUodmFsdWUpIC0gMSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJb2Zf Y2hhbmdlc2V0X2luaXQoJnJjYXJfZHVfbHZkc19jaGFuZ2VzZXQpOwo+ICsKPiArCXZhbHVlWzBd ID0gY3B1X3RvX2JlMzIoY2xrLT5ucC0+cGhhbmRsZSk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY2xr LT5hcmdzX2NvdW50OyArK2kpCj4gKwkJdmFsdWVbaSArIDFdID0gY3B1X3RvX2JlMzIoY2xrLT5h cmdzW2ldKTsKPiArCj4gKwlwc2l6ZSA9IChjbGstPmFyZ3NfY291bnQgKyAxKSAqIDQ7Cj4gKwly ZXQgPSByY2FyX2R1X29mX2FkZF9wcm9wZXJ0eSgmcmNhcl9kdV9sdmRzX2NoYW5nZXNldCwgbHZk cywKPiArCQkJCSAgICAgICJjbG9ja3MiLCB2YWx1ZSwgcHNpemUpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJZ290byBkb25lOwo+ICsKPiArCS8qCj4gKwkgKiBJbnNlcnQgdGhlIG5vZGUgaW4gdGhl IE9GIGdyYXBoOiBwYXRjaCB0aGUgTFZEUyBwb3J0cyByZW1vdGUtZW5kcG9pbnQKPiArCSAqIHBy b3BlcnRpZXMgdG8gcG9pbnQgdG8gdGhlIGVuZHBvaW50cyBvZiB0aGUgc2libGluZyBub2RlcyBp biB0aGUKPiArCSAqIGdyYXBoLiBUaGlzIGNhbid0IGJlIHBlcmZvcm1lZCBieSB0aGUgb3Zlcmxh eTogb24gdGhlIGlucHV0IHNpZGUgdGhlCj4gKwkgKiBvdmVybGF5IHdvdWxkIGNvbnRhaW4gYSBw aGFuZGxlIGZvciB0aGUgRFUgTFZEUyBvdXRwdXQgcG9ydCB0aGF0Cj4gKwkgKiB3b3VsZCBjbGFz aCB3aXRoIHRoZSBzeXN0ZW0gRFQsIGFuZCBvbiB0aGUgb3V0cHV0IHNpZGUgdGhlIGNvbm5lY3Rp b24KPiArCSAqIGlzIGJvYXJkLXNwZWNpZmljLgo+ICsJICovCj4gKwl2YWx1ZVswXSA9IGNwdV90 b19iZTMyKGxvY2FsLT5waGFuZGxlKTsKPiArCXZhbHVlWzFdID0gY3B1X3RvX2JlMzIocmVtb3Rl LT5waGFuZGxlKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMjsgKytpKSB7Cj4gKwkJc3RydWN0 IGRldmljZV9ub2RlICplbmRwb2ludDsKPiArCj4gKwkJZW5kcG9pbnQgPSBvZl9ncmFwaF9nZXRf ZW5kcG9pbnRfYnlfcmVncyhsdmRzLCBpLCAwKTsKPiArCQlpZiAoIWVuZHBvaW50KSB7Cj4gKwkJ CXJldCA9IC1FSU5WQUw7Cj4gKwkJCWdvdG8gZG9uZTsKPiArCQl9Cj4gKwo+ICsJCXJldCA9IHJj YXJfZHVfb2ZfYWRkX3Byb3BlcnR5KCZyY2FyX2R1X2x2ZHNfY2hhbmdlc2V0LAo+ICsJCQkJCSAg ICAgIGVuZHBvaW50LCAicmVtb3RlLWVuZHBvaW50IiwKPiArCQkJCQkgICAgICAmdmFsdWVbaV0s IHNpemVvZih2YWx1ZVtpXSkpOwo+ICsJCW9mX25vZGVfcHV0KGVuZHBvaW50KTsKPiArCQlpZiAo cmV0IDwgMCkKPiArCQkJZ290byBkb25lOwo+ICsJfQo+ICsKPiArCXJldCA9IG9mX2NoYW5nZXNl dF9hcHBseSgmcmNhcl9kdV9sdmRzX2NoYW5nZXNldCk7Cj4gKwo+ICtkb25lOgo+ICsJaWYgKHJl dCA8IDApCj4gKwkJb2ZfY2hhbmdlc2V0X2Rlc3Ryb3koJnJjYXJfZHVfbHZkc19jaGFuZ2VzZXQp Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgbHZkc19vZl9kYXRhIHsKPiArCXN0cnVjdCByZXNvdXJjZSBy ZXM7Cj4gKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIGNsa3NwZWM7Cj4gKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKmxvY2FsOwo+ICsJc3RydWN0IGRldmljZV9ub2RlICpyZW1vdGU7Cj4gK307Cj4gKwo+ ICtzdGF0aWMgdm9pZCBfX2luaXQgcmNhcl9kdV9vZl9sdmRzX3BhdGNoKGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgKm9mX2lkcykKPiArewo+ICsJY29uc3Qgc3RydWN0IHJjYXJfZHVfZGV2aWNl X2luZm8gKmluZm87Cj4gKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKPiArCXN0 cnVjdCBsdmRzX29mX2RhdGEgbHZkc19kYXRhWzJdID0geyB9Owo+ICsJc3RydWN0IGRldmljZV9u b2RlICpsdmRzX25vZGU7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnNvY19ub2RlOwo+ICsJc3Ry dWN0IGRldmljZV9ub2RlICpkdV9ub2RlOwo+ICsJY2hhciBjb21wYXRpYmxlWzIxXTsKPiArCWNv bnN0IGNoYXIgKnNvY19uYW1lOwo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCS8qIEdldCB0aGUgRFUgbm9kZSBhbmQgZXhpdCBpZiBub3QgcHJlc2VudCBvciBkaXNhYmxl ZC4gKi8KPiArCWR1X25vZGUgPSBvZl9maW5kX21hdGNoaW5nX25vZGVfYW5kX21hdGNoKE5VTEws IG9mX2lkcywgJm1hdGNoKTsKPiArCWlmICghZHVfbm9kZSB8fCAhb2ZfZGV2aWNlX2lzX2F2YWls YWJsZShkdV9ub2RlKSkgewo+ICsJCW9mX25vZGVfcHV0KGR1X25vZGUpOwo+ICsJCXJldHVybjsK PiArCX0KPiArCj4gKwlpbmZvID0gbWF0Y2gtPmRhdGE7Cj4gKwlzb2Nfbm9kZSA9IG9mX2dldF9w YXJlbnQoZHVfbm9kZSk7Cj4gKwo+ICsJaWYgKFdBUk5fT04oaW5mby0+bnVtX2x2ZHMgPiBBUlJB WV9TSVpFKGx2ZHNfZGF0YSkpKQo+ICsJCWdvdG8gZG9uZTsKPiArCj4gKwkvKgo+ICsJICogU2tp cCBpZiB0aGUgTFZEUyBub2RlcyBhbHJlYWR5IGV4aXN0cy4KPiArCSAqCj4gKwkgKiBUaGUgbm9k ZXMgYXJlIHNlYXJjaGVkIGJhc2VkIG9uIHRoZSBjb21wYXRpYmxlIHN0cmluZywgd2hpY2ggd2UK PiArCSAqIGNvbnN0cnVjdCBmcm9tIHRoZSBTb0MgbmFtZSBmb3VuZCBpbiB0aGUgRFUgY29tcGF0 aWJsZSBzdHJpbmcuIEFzIGEKPiArCSAqIG1hdGNoIGhhcyBiZWVuIGZvdW5kIHdlIGtub3cgdGhl IGNvbXBhdGlibGUgc3RyaW5nIG1hdGNoZXMgdGhlCj4gKwkgKiBleHBlY3RlZCBmb3JtYXQgYW5k IGNhbiB0aHVzIHNraXAgc29tZSBvZiB0aGUgc3RyaW5nIG1hbmlwdWxhdGlvbgo+ICsJICogbm9y bWFsIHNhZmV0eSBjaGVja3MuCj4gKwkgKi8KPiArCXNvY19uYW1lID0gc3RyY2hyKG1hdGNoLT5j b21wYXRpYmxlLCAnLScpICsgMTsKPiArCXNwcmludGYoY29tcGF0aWJsZSwgInJlbmVzYXMsJXMt bHZkcyIsIHNvY19uYW1lKTsKPiArCWx2ZHNfbm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2Rl KE5VTEwsIE5VTEwsIGNvbXBhdGlibGUpOwo+ICsJaWYgKGx2ZHNfbm9kZSkgewo+ICsJCW9mX25v ZGVfcHV0KGx2ZHNfbm9kZSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBQ YXJzZSB0aGUgRFUgbm9kZSBhbmQgc3RvcmUgdGhlIHJlZ2lzdGVyIHNwZWNpZmllciwgdGhlIGNs b2NrCj4gKwkgKiBzcGVjaWZpZXIgYW5kIHRoZSBsb2NhbCBhbmQgcmVtb3RlIGVuZHBvaW50IG9m IHRoZSBMVkRTIGxpbmsgZm9yCj4gKwkgKiBsYXRlciB1c2UuCj4gKwkgKi8KPiArCWZvciAoaSA9 IDA7IGkgPCBpbmZvLT5udW1fbHZkczsgKytpKSB7Cj4gKwkJc3RydWN0IGx2ZHNfb2ZfZGF0YSAq bHZkcyA9ICZsdmRzX2RhdGFbaV07Cj4gKwkJdW5zaWduZWQgaW50IHBvcnQ7Cj4gKwkJY2hhciBu YW1lWzddOwo+ICsJCWludCBpbmRleDsKPiArCj4gKwkJc3ByaW50ZihuYW1lLCAibHZkcy4ldSIs IGkpOwo+ICsJCWluZGV4ID0gb2ZfcHJvcGVydHlfbWF0Y2hfc3RyaW5nKGR1X25vZGUsICJjbG9j ay1uYW1lcyIsIG5hbWUpOwo+ICsJCWlmIChpbmRleCA8IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlyZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJncyhkdV9ub2RlLCAiY2xvY2tzIiwK PiArCQkJCQkJICIjY2xvY2stY2VsbHMiLCBpbmRleCwKPiArCQkJCQkJICZsdmRzLT5jbGtzcGVj KTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBvcnQgPSBpbmZv LT5yb3V0ZXNbUkNBUl9EVV9PVVRQVVRfTFZEUzAgKyBpXS5wb3J0Owo+ICsKPiArCQlsdmRzLT5s b2NhbCA9IG9mX2dyYXBoX2dldF9lbmRwb2ludF9ieV9yZWdzKGR1X25vZGUsIHBvcnQsIDApOwo+ ICsJCWlmICghbHZkcy0+bG9jYWwpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlsdmRzLT5yZW1v dGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX2VuZHBvaW50KGx2ZHMtPmxvY2FsKTsKPiArCQlpZiAo IWx2ZHMtPnJlbW90ZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWluZGV4ID0gb2ZfcHJvcGVy dHlfbWF0Y2hfc3RyaW5nKGR1X25vZGUsICJyZWctbmFtZXMiLCBuYW1lKTsKPiArCQlpZiAoaW5k ZXggPCAwKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJb2ZfYWRkcmVzc190b19yZXNvdXJjZShk dV9ub2RlLCBpbmRleCwgJmx2ZHMtPnJlcyk7Cj4gKwl9Cj4gKwo+ICsJLyogUGFyc2UgYW5kIGFw cGx5IHRoZSBvdmVybGF5LiBUaGlzIHdpbGwgcmVzb2x2ZSBwaGFuZGxlcy4gKi8KPiArCXJldCA9 IHJjYXJfZHVfb2ZfYXBwbHlfb3ZlcmxheShyY2FyX2R1X2x2ZHNfb3ZlcmxheXMsCj4gKwkJCQkg ICAgICAgbWF0Y2gtPmNvbXBhdGlibGUpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBkb25l Owo+ICsKPiArCS8qIFBhdGNoIHRoZSBuZXdseSBjcmVhdGVkIExWRFMgZW5jb2RlciBub2Rlcy4g Ki8KPiArCWZvcl9lYWNoX2NoaWxkX29mX25vZGUoc29jX25vZGUsIGx2ZHNfbm9kZSkgewo+ICsJ CXN0cnVjdCByZXNvdXJjZSByZXM7Cj4gKwo+ICsJCWlmICghb2ZfZGV2aWNlX2lzX2NvbXBhdGli bGUobHZkc19ub2RlLCBjb21wYXRpYmxlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCS8qIExv Y2F0ZSB0aGUgbHZkc19kYXRhIGVudHJ5IGJhc2VkIG9uIHRoZSByZXNvdXJjZSBzdGFydC4gKi8K PiArCQlyZXQgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKGx2ZHNfbm9kZSwgMCwgJnJlcyk7Cj4g KwkJaWYgKHJldCA8IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShsdmRzX2RhdGEpOyArK2kpIHsKPiArCQkJaWYgKGx2ZHNfZGF0YVtpXS5yZXMu c3RhcnQgPT0gcmVzLnN0YXJ0KQo+ICsJCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlpZiAoaSA9 PSBBUlJBWV9TSVpFKGx2ZHNfZGF0YSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKiBQYXRj aCB0aGUgTFZEUyBlbmNvZGVyLiAqLwo+ICsJCXJjYXJfZHVfb2ZfbHZkc19wYXRjaF9vbmUobHZk c19ub2RlLCAmbHZkc19kYXRhW2ldLmNsa3NwZWMsCj4gKwkJCQkJICBsdmRzX2RhdGFbaV0ubG9j YWwsCj4gKwkJCQkJICBsdmRzX2RhdGFbaV0ucmVtb3RlKTsKPiArCX0KPiArCj4gK2RvbmU6Cj4g Kwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX2x2ZHM7ICsraSkgewo+ICsJCW9mX25vZGVfcHV0 KGx2ZHNfZGF0YVtpXS5jbGtzcGVjLm5wKTsKPiArCQlvZl9ub2RlX3B1dChsdmRzX2RhdGFbaV0u bG9jYWwpOwo+ICsJCW9mX25vZGVfcHV0KGx2ZHNfZGF0YVtpXS5yZW1vdGUpOwo+ICsJfQo+ICsK PiArCW9mX25vZGVfcHV0KHNvY19ub2RlKTsKPiArCW9mX25vZGVfcHV0KGR1X25vZGUpOwo+ICt9 Cj4gKwo+ICt2b2lkIF9faW5pdCByY2FyX2R1X29mX2luaXQoY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCAqb2ZfaWRzKQo+ICt7Cj4gKwlyY2FyX2R1X29mX2x2ZHNfcGF0Y2gob2ZfaWRzKTsKPiAr fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmggYi9k cml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzJlNjVhNzI3ZTkxCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaAo+IEBAIC0wLDAgKzEsMjAg QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiArLyoKPiArICog cmNhcl9kdV9vZi5oIC0gTGVnYWN5IERUIGJpbmRpbmdzIGNvbXBhdGliaWxpdHkKPiArICoKPiAr ICogQ29weXJpZ2h0IChDKSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRA aWRlYXNvbmJvYXJkLmNvbT4KPiArICovCj4gKyNpZm5kZWYgX19SQ0FSX0RVX09GX0hfXwo+ICsj ZGVmaW5lIF9fUkNBUl9EVV9PRl9IX18KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4g Kwo+ICtzdHJ1Y3Qgb2ZfZGV2aWNlX2lkOwo+ICsKPiArI2lmZGVmIENPTkZJR19EUk1fUkNBUl9M VkRTCj4gK3ZvaWQgX19pbml0IHJjYXJfZHVfb2ZfaW5pdChjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkICpvZl9pZHMpOwo+ICsjZWxzZQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9kdV9vZl9p bml0KGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcykgeyB9Cj4gKyNlbmRpZiAvKiBD T05GSUdfRFJNX1JDQVJfTFZEUyAqLwo+ICsKPiArI2VuZGlmIC8qIF9fUkNBUl9EVV9PRl9IX18g Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRz X3I4YTc3OTAuZHRzIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4 YTc3OTAuZHRzCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmYx MThhNmFlNzc4Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5MC5kdHMKPiBAQCAtMCwwICsxLDc5IEBACj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIHJjYXJfZHVfb2ZfbHZk c19yOGE3NzkwLmR0cyAtIExlZ2FjeSBMVkRTIERUIGJpbmRpbmdzIGNvbnZlcnNpb24gZm9yIFI4 QTc3OTAKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxh dXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiArICoKPiArICogQmFzZWQgb24gd29y ayBmcm9tIEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gKyAqIENvcHlyaWdodCAoQykgMjAx NSBUZXhhcyBJbnN0cnVtZW50cwo+ICsgKi8KPiArCj4gKy9kdHMtdjEvOwo+ICsvcGx1Z2luLzsK PiArLyB7Cj4gKwlmcmFnbWVudEAwIHsKPiArCQl0YXJnZXQtcGF0aCA9ICIvIjsKPiArCQlfX292 ZXJsYXlfXyB7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDI+Owo+ICsJCQkjc2l6ZS1jZWxscyA9 IDwyPjsKPiArCj4gKwkJCWx2ZHNAZmViOTAwMDAgewo+ICsJCQkJY29tcGF0aWJsZSA9ICJyZW5l c2FzLHI4YTc3OTAtbHZkcyI7Cj4gKwkJCQlyZWcgPSA8MCAweGZlYjkwMDAwIDAgMHgxYz47Cj4g Kwo+ICsJCQkJcG9ydHMgewo+ICsJCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJCQkJCSNz aXplLWNlbGxzID0gPDA+Owo+ICsKPiArCQkJCQlwb3J0QDAgewo+ICsJCQkJCQlyZWcgPSA8MD47 Cj4gKwkJCQkJCWx2ZHMwX2lucHV0OiBlbmRwb2ludCB7Cj4gKwkJCQkJCX07Cj4gKwkJCQkJfTsK PiArCQkJCQlwb3J0QDEgewo+ICsJCQkJCQlyZWcgPSA8MT47Cj4gKwkJCQkJCWx2ZHMwX291dDog ZW5kcG9pbnQgewo+ICsJCQkJCQl9Owo+ICsJCQkJCX07Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsK PiArCQkJbHZkc0BmZWI5NDAwMCB7Cj4gKwkJCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5 MC1sdmRzIjsKPiArCQkJCXJlZyA9IDwwIDB4ZmViOTQwMDAgMCAweDFjPjsKPiArCj4gKwkJCQlw b3J0cyB7Cj4gKwkJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKwkJCQkJI3NpemUtY2VsbHMg PSA8MD47Cj4gKwo+ICsJCQkJCXBvcnRAMCB7Cj4gKwkJCQkJCXJlZyA9IDwwPjsKPiArCQkJCQkJ bHZkczFfaW5wdXQ6IGVuZHBvaW50IHsKPiArCQkJCQkJfTsKPiArCQkJCQl9Owo+ICsJCQkJCXBv cnRAMSB7Cj4gKwkJCQkJCXJlZyA9IDwxPjsKPiArCQkJCQkJbHZkczFfb3V0OiBlbmRwb2ludCB7 Cj4gKwkJCQkJCX07Cj4gKwkJCQkJfTsKPiArCQkJCX07Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07 Cj4gKwo+ICsJZnJhZ21lbnRAMSB7Cj4gKwkJdGFyZ2V0LXBhdGggPSAiL2Rpc3BsYXlAZmViMDAw MDAvcG9ydHMiOwo+ICsJCV9fb3ZlcmxheV9fIHsKPiArCQkJcG9ydEAxIHsKPiArCQkJCWVuZHBv aW50IHsKPiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jmx2ZHMwX2lucHV0PjsKPiArCQkJCX07 Cj4gKwkJCX07Cj4gKwkJCXBvcnRAMiB7Cj4gKwkJCQllbmRwb2ludCB7Cj4gKwkJCQkJcmVtb3Rl LWVuZHBvaW50ID0gPCZsdmRzMV9pbnB1dD47Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsJCX07Cj4g Kwl9Owo+ICt9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1 X29mX2x2ZHNfcjhhNzc5MS5kdHMgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29m X2x2ZHNfcjhhNzc5MS5kdHMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uN2Q4NjU3Mjc5MjhjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkxLmR0cwo+IEBAIC0wLDAgKzEsNTMgQEAK PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogcmNhcl9k dV9vZl9sdmRzX3I4YTc3OTEuZHRzIC0gTGVnYWN5IExWRFMgRFQgYmluZGluZ3MgY29udmVyc2lv biBmb3IgUjhBNzc5MQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTGF1cmVudCBQaW5j aGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgo+ICsgKgo+ICsgKiBCYXNl ZCBvbiB3b3JrIGZyb20gSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KPiArICogQ29weXJpZ2h0 IChDKSAyMDE1IFRleGFzIEluc3RydW1lbnRzCj4gKyAqLwo+ICsKPiArL2R0cy12MS87Cj4gKy9w bHVnaW4vOwo+ICsvIHsKPiArCWZyYWdtZW50QDAgewo+ICsJCXRhcmdldC1wYXRoID0gIi8iOwo+ ICsJCV9fb3ZlcmxheV9fIHsKPiArCQkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47Cj4gKwkJCSNzaXpl LWNlbGxzID0gPDI+Owo+ICsKPiArCQkJbHZkc0BmZWI5MDAwMCB7Cj4gKwkJCQljb21wYXRpYmxl ID0gInJlbmVzYXMscjhhNzc5MS1sdmRzIjsKPiArCQkJCXJlZyA9IDwwIDB4ZmViOTAwMDAgMCAw eDFjPjsKPiArCj4gKwkJCQlwb3J0cyB7Cj4gKwkJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4g KwkJCQkJI3NpemUtY2VsbHMgPSA8MD47Cj4gKwo+ICsJCQkJCXBvcnRAMCB7Cj4gKwkJCQkJCXJl ZyA9IDwwPjsKPiArCQkJCQkJbHZkczBfaW5wdXQ6IGVuZHBvaW50IHsKPiArCQkJCQkJfTsKPiAr CQkJCQl9Owo+ICsJCQkJCXBvcnRAMSB7Cj4gKwkJCQkJCXJlZyA9IDwxPjsKPiArCQkJCQkJbHZk czBfb3V0OiBlbmRwb2ludCB7Cj4gKwkJCQkJCX07Cj4gKwkJCQkJfTsKPiArCQkJCX07Cj4gKwkJ CX07Cj4gKwkJfTsKPiArCX07Cj4gKwo+ICsJZnJhZ21lbnRAMSB7Cj4gKwkJdGFyZ2V0LXBhdGgg PSAiL2Rpc3BsYXlAZmViMDAwMDAvcG9ydHMiOwo+ICsJCV9fb3ZlcmxheV9fIHsKPiArCQkJcG9y dEAxIHsKPiArCQkJCWVuZHBvaW50IHsKPiArCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jmx2ZHMw X2lucHV0PjsKPiArCQkJCX07Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07Cj4gK307Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkzLmR0 cyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkc19yOGE3NzkzLmR0cwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iYjI2MzcxMTgzNGQK PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9v Zl9sdmRzX3I4YTc3OTMuZHRzCj4gQEAgLTAsMCArMSw1MyBAQAo+ICsvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiByY2FyX2R1X29mX2x2ZHNfcjhhNzc5My5k dHMgLSBMZWdhY3kgTFZEUyBEVCBiaW5kaW5ncyBjb252ZXJzaW9uIGZvciBSOEE3NzkzCj4gKyAq Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxOCBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNo YXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gKyAqCj4gKyAqIEJhc2VkIG9uIHdvcmsgZnJvbSBKeXJp IFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGV4YXMgSW5z dHJ1bWVudHMKPiArICovCj4gKwo+ICsvZHRzLXYxLzsKPiArL3BsdWdpbi87Cj4gKy8gewo+ICsJ ZnJhZ21lbnRAMCB7Cj4gKwkJdGFyZ2V0LXBhdGggPSAiLyI7Cj4gKwkJX19vdmVybGF5X18gewo+ ICsJCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKPiArCQkJI3NpemUtY2VsbHMgPSA8Mj47Cj4gKwo+ ICsJCQlsdmRzQGZlYjkwMDAwIHsKPiArCQkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3Nzkz LWx2ZHMiOwo+ICsJCQkJcmVnID0gPDAgMHhmZWI5MDAwMCAwIDB4MWM+Owo+ICsKPiArCQkJCXBv cnRzIHsKPiArCQkJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiArCQkJCQkjc2l6ZS1jZWxscyA9 IDwwPjsKPiArCj4gKwkJCQkJcG9ydEAwIHsKPiArCQkJCQkJcmVnID0gPDA+Owo+ICsJCQkJCQls dmRzMF9pbnB1dDogZW5kcG9pbnQgewo+ICsJCQkJCQl9Owo+ICsJCQkJCX07Cj4gKwkJCQkJcG9y dEAxIHsKPiArCQkJCQkJcmVnID0gPDE+Owo+ICsJCQkJCQlsdmRzMF9vdXQ6IGVuZHBvaW50IHsK PiArCQkJCQkJfTsKPiArCQkJCQl9Owo+ICsJCQkJfTsKPiArCQkJfTsKPiArCQl9Owo+ICsJfTsK PiArCj4gKwlmcmFnbWVudEAxIHsKPiArCQl0YXJnZXQtcGF0aCA9ICIvZGlzcGxheUBmZWIwMDAw MC9wb3J0cyI7Cj4gKwkJX19vdmVybGF5X18gewo+ICsJCQlwb3J0QDEgewo+ICsJCQkJZW5kcG9p bnQgewo+ICsJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmbHZkczBfaW5wdXQ+Owo+ICsJCQkJfTsK PiArCQkJfTsKPiArCQl9Owo+ICsJfTsKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzIGIvZHJpdmVycy9ncHUvZHJt L3JjYXItZHUvcmNhcl9kdV9vZl9sdmRzX3I4YTc3OTUuZHRzCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjliYmY3YzllNWNlNAo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5NS5kdHMK PiBAQCAtMCwwICsxLDUzIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w Cj4gKy8qCj4gKyAqIHJjYXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0cyAtIExlZ2FjeSBMVkRTIERU IGJpbmRpbmdzIGNvbnZlcnNpb24gZm9yIFI4QTc3OTUKPiArICoKPiArICogQ29weXJpZ2h0IChD KSAyMDE4IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNv bT4KPiArICoKPiArICogQmFzZWQgb24gd29yayBmcm9tIEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5j b20+Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0cnVtZW50cwo+ICsgKi8KPiAr Cj4gKy9kdHMtdjEvOwo+ICsvcGx1Z2luLzsKPiArLyB7Cj4gKwlmcmFnbWVudEAwIHsKPiArCQl0 YXJnZXQtcGF0aCA9ICIvc29jIjsKPiArCQlfX292ZXJsYXlfXyB7Cj4gKwkJCSNhZGRyZXNzLWNl bGxzID0gPDI+Owo+ICsJCQkjc2l6ZS1jZWxscyA9IDwyPjsKPiArCj4gKwkJCWx2ZHNAZmViOTAw MDAgewo+ICsJCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTUtbHZkcyI7Cj4gKwkJCQly ZWcgPSA8MCAweGZlYjkwMDAwIDAgMHgxND47Cj4gKwo+ICsJCQkJcG9ydHMgewo+ICsJCQkJCSNh ZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsJCQkJCSNzaXplLWNlbGxzID0gPDA+Owo+ICsKPiArCQkJ CQlwb3J0QDAgewo+ICsJCQkJCQlyZWcgPSA8MD47Cj4gKwkJCQkJCWx2ZHMwX2lucHV0OiBlbmRw b2ludCB7Cj4gKwkJCQkJCX07Cj4gKwkJCQkJfTsKPiArCQkJCQlwb3J0QDEgewo+ICsJCQkJCQly ZWcgPSA8MT47Cj4gKwkJCQkJCWx2ZHMwX291dDogZW5kcG9pbnQgewo+ICsJCQkJCQl9Owo+ICsJ CQkJCX07Cj4gKwkJCQl9Owo+ICsJCQl9Owo+ICsJCX07Cj4gKwl9Owo+ICsKPiArCWZyYWdtZW50 QDEgewo+ICsJCXRhcmdldC1wYXRoID0gIi9zb2MvZGlzcGxheUBmZWIwMDAwMC9wb3J0cyI7Cj4g KwkJX19vdmVybGF5X18gewo+ICsJCQlwb3J0QDMgewo+ICsJCQkJZW5kcG9pbnQgewo+ICsJCQkJ CXJlbW90ZS1lbmRwb2ludCA9IDwmbHZkczBfaW5wdXQ+Owo+ICsJCQkJfTsKPiArCQkJfTsKPiAr CQl9Owo+ICsJfTsKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUv cmNhcl9kdV9vZl9sdmRzX3I4YTc3OTYuZHRzIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNh cl9kdV9vZl9sdmRzX3I4YTc3OTYuZHRzCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAwMDAuLmQxNmYzZTllMDhhYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHNfcjhhNzc5Ni5kdHMKPiBAQCAtMCwwICsx LDUzIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAq IHJjYXJfZHVfb2ZfbHZkc19yOGE3Nzk2LmR0cyAtIExlZ2FjeSBMVkRTIERUIGJpbmRpbmdzIGNv bnZlcnNpb24gZm9yIFI4QTc3OTYKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDE4IExhdXJl bnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiArICoKPiAr ICogQmFzZWQgb24gd29yayBmcm9tIEp5cmkgU2FyaGEgPGpzYXJoYUB0aS5jb20+Cj4gKyAqIENv cHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0cnVtZW50cwo+ICsgKi8KPiArCj4gKy9kdHMtdjEv Owo+ICsvcGx1Z2luLzsKPiArLyB7Cj4gKwlmcmFnbWVudEAwIHsKPiArCQl0YXJnZXQtcGF0aCA9 ICIvc29jIjsKPiArCQlfX292ZXJsYXlfXyB7Cj4gKwkJCSNhZGRyZXNzLWNlbGxzID0gPDI+Owo+ ICsJCQkjc2l6ZS1jZWxscyA9IDwyPjsKPiArCj4gKwkJCWx2ZHNAZmViOTAwMDAgewo+ICsJCQkJ Y29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTYtbHZkcyI7Cj4gKwkJCQlyZWcgPSA8MCAweGZl YjkwMDAwIDAgMHgxND47Cj4gKwo+ICsJCQkJcG9ydHMgewo+ICsJCQkJCSNhZGRyZXNzLWNlbGxz ID0gPDE+Owo+ICsJCQkJCSNzaXplLWNlbGxzID0gPDA+Owo+ICsKPiArCQkJCQlwb3J0QDAgewo+ ICsJCQkJCQlyZWcgPSA8MD47Cj4gKwkJCQkJCWx2ZHMwX2lucHV0OiBlbmRwb2ludCB7Cj4gKwkJ CQkJCX07Cj4gKwkJCQkJfTsKPiArCQkJCQlwb3J0QDEgewo+ICsJCQkJCQlyZWcgPSA8MT47Cj4g KwkJCQkJCWx2ZHMwX291dDogZW5kcG9pbnQgewo+ICsJCQkJCQl9Owo+ICsJCQkJCX07Cj4gKwkJ CQl9Owo+ICsJCQl9Owo+ICsJCX07Cj4gKwl9Owo+ICsKPiArCWZyYWdtZW50QDEgewo+ICsJCXRh cmdldC1wYXRoID0gIi9zb2MvZGlzcGxheUBmZWIwMDAwMC9wb3J0cyI7Cj4gKwkJX19vdmVybGF5 X18gewo+ICsJCQlwb3J0QDMgewo+ICsJCQkJZW5kcG9pbnQgewo+ICsJCQkJCXJlbW90ZS1lbmRw b2ludCA9IDwmbHZkczBfaW5wdXQ+Owo+ICsJCQkJfTsKPiArCQkJfTsKPiArCQl9Owo+ICsJfTsK PiArfTsKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=