From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v2 03/12] drm: rcar-du: Fix legacy DT to create LVDS encoder nodes Date: Mon, 15 Jan 2018 20:01:27 +0200 Message-ID: <1905364.eR590Hd45s@avalon> References: <20180112231430.26943-1-laurent.pinchart+renesas@ideasonboard.com> <20180112231430.26943-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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Laurent Pinchart , Sergei Shtylyov , dri-devel , "open list:MEDIA DRIVERS FOR RENESAS - FCP" , Geert Uytterhoeven , Frank Rowand List-Id: devicetree@vger.kernel.org SGkgUm9iLAoKKENDJ2luZyBHZWVydCkKCk9uIE1vbmRheSwgMTUgSmFudWFyeSAyMDE4IDE5OjA5 OjUzIEVFVCBSb2IgSGVycmluZyB3cm90ZToKPiArRnJhbmsKPiAKPiBPbiBGcmksIEphbiAxMiwg MjAxOCBhdCA1OjE0IFBNLCBMYXVyZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gVGhlIGludGVybmFs IExWRFMgZW5jb2RlcnMgbm93IGhhdmUgdGhlaXIgb3duIERUIGJpbmRpbmdzLiBCZWZvcmUKPiA+ IHN3aXRjaGluZyB0aGUgZHJpdmVyIGluZnJhc3RydWN0dXJlIHRvIHRob3NlIG5ldyBiaW5kaW5n cywgaW1wbGVtZW50Cj4gPiBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHRocm91Z2ggbGl2ZSBEVCBw YXRjaGluZy4KPiAKPiBVaGgsIHdlIGp1c3QgZ290IHJpZCBvZiBUSSdzIHBhdGNoaW5nIGFuZCBu b3cgYWRkaW5nIHRoaXMgb25lLiBJIGd1ZXNzCj4gaXQncyBuZWNlc3NhcnksIGJ1dCBJJ2QgbGlr ZSB0byBrbm93IGhvdyBsb25nIHdlIG5lZWQgdG8ga2VlcCB0aGlzPwoKVGhhdCdzIGEgZ29vZCBx dWVzdGlvbi4gSG93IGxvbmcgYXJlIHdlIHN1cHBvc2VkIHRvIGtlZXAgRFQgYmFja3dhcmQgCmNv bXBhdGliaWxpdHkgZm9yID8gSSBkb24ndCB0aGluayB0aGVyZSdzIGEgb25lLXNpemUtZml0cy10 aGVtLWFsbCBhbnN3ZXIgdG8gCnRoaXMgcXVlc3Rpb24uIEdlZXJ0LCBhbnkgb3BpbmlvbiA/IEhv dyBsb25nIGRvIHlvdSBwbGFuIHRvIGtlZXAgdGhlIENQRyAKKGNsb2NrcykgRFQgYmFja3dhcmQg Y29tcGF0aWJpbGl0eSBmb3IgaW5zdGFuY2UgPwoKPiBIb3cgbWFueSBvdmVybGF5cyB3b3VsZCB5 b3UgbmVlZCBpZiBldmVyeXRoaW5nIGlzIHN0YXRpYyAoaS5lLiByZW1vdmluZyBhbGwKPiB5b3Vy IGZpeHVwIGNvZGUpPwoKRG8geW91IG1lYW4gaWYgSSBoYXJkY29kZWQgc3VwcG9ydCBmb3IgU29D cyBpbmRpdmlkdWFsbHkgaW5zdGVhZCBvZiBoYW5kbGluZyAKdGhlIGRpZmZlcmVuY2VzIGluIGNv ZGUgPyBBdCBsZWFzdCA1IGFzIHRoYXQncyB0aGUgbnVtYmVyIG9mIFNvQ3MgdGhhdCBhcmUgCmlt cGFjdGVkLCBidXQgdGhhdCB3b3VsZG4ndCBiZSBlbm91Z2guIFBhcnQgb2YgdGhlIERUIHN0cnVj dHVyZSB0aGF0IGlzIApwYXRjaGVkIGlzIGJvYXJkLXNwZWNpZmljLCBub3QgU29DLXNwZWNpZmlj LiBUaGF0J3MgMTAgYm9hcmRzIGluIG1haW5saW5lLCAKcGx1cyBhbGwgdGhlIGN1c3RvbSBib2Fy ZHMgb3V0IHRoZXJlLCBhbmQgZXZlbiB0aGUgZGV2ZWxvcG1lbnQgYm9hcmRzIApzdXBwb3J0ZWQg aW4gbWFpbmxpbmUgdG8gd2hpY2ggYSBmbGF0IHBhbmVsIGhhcyBiZWVuIGV4dGVybmFsbHkgY29u bmVjdGVkLgoKPiA+IFBhdGNoaW5nIGlzIGRpc2FibGVkIGFuZCB3aWxsIGJlIGVuYWJsZWQgYWxv bmcgd2l0aCBzdXBwb3J0IGZvciB0aGUgbmV3Cj4gPiBEVCBiaW5kaW5ncyBpbiB0aGUgRFUgZHJp dmVyLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0Cj4gPiA8bGF1cmVu dC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+Cj4gPiAtLS0KPiA+IENoYW5nZXMg c2luY2UgdjE6Cj4gPiAKPiA+IC0gU2VsZWN0IE9GX0ZMQVRUUkVFCj4gPiAtIENvbXBpbGUgTFZE UyBEVCBiaW5kaW5ncyBwYXRjaCBjb2RlIHdoZW4gRFJNX1JDQVJfTFZEUyBpcyBzZWxlY3RlZAo+ ID4gLSBVcGRhdGUgdGhlIFNQRFggaGVhZGVycyB0byB1c2UgR1BMLTIuMCBpbnN0ZWFkIG9mIEdQ TC0yLjAtb25seQo+ID4gLSBUdXJuIF9fZHRiX3JjYXJfZHVfb2ZfbHZkc18oYmVnaW58ZW5kKSBm cm9tIHU4IHRvIGNoYXIKPiA+IC0gUGFzcyB2b2lkIGJlZ2luIGFuZCBlbmQgcG9pbnRlcnMgdG8g cmNhcl9kdV9vZl9nZXRfb3ZlcmxheSgpCj4gPiAtIFVzZSBvZl9nZXRfcGFyZW50KCkgaW5zdGVh ZCBvZiBhY2Nlc3NpbmcgdGhlIHBhcmVudCBwb2ludGVyIGRpcmVjdGx5Cj4gPiAtIEZpbmQgdGhl IExWRFMgZW5kcG9pbnRzIG5vZGVzIGJhc2VkIG9uIHRoZSBMVkRTIG5vZGUgaW5zdGVhZCBvZiB0 aGUKPiA+ICAgcm9vdCBvZiB0aGUgb3ZlcmxheQo+ID4gLSBVcGRhdGUgdG8gdGhlIDxzb2M+LWx2 ZHMgY29tcGF0aWJsZSBzdHJpbmcgZm9ybWF0Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v cmNhci1kdS9LY29uZmlnICAgICAgICAgICAgIHwgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0v cmNhci1kdS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAzICstCj4gPiAgZHJpdmVycy9ncHUvZHJt L3JjYXItZHUvcmNhcl9kdV9vZi5jICAgICAgICB8IDQ1MSArKysrKysrKysrKysrKysrKysrKysr Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuaCAgICAgICAgfCAgMTYg Kwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkcy5kdHMgfCAgODIg KysrKysKPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDU1MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJf ZHVfb2YuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X29mLmgKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3JjYXIt ZHUvcmNhcl9kdV9vZl9sdmRzLmR0cwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvS2NvbmZpZwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9LY29uZmln IGluZGV4IDVkMGI0YjcxMTlhZi4uM2Y4MzM1MmE3MzEzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXIt ZHUvS2NvbmZpZwo+ID4gQEAgLTIyLDYgKzIyLDggQEAgY29uZmlnIERSTV9SQ0FSX0xWRFMKPiA+ ICAgICAgICAgYm9vbCAiUi1DYXIgRFUgTFZEUyBFbmNvZGVyIFN1cHBvcnQiCj4gPiAgICAgICAg IGRlcGVuZHMgb24gRFJNX1JDQVJfRFUKPiA+ICAgICAgICAgc2VsZWN0IERSTV9QQU5FTAo+ID4g KyAgICAgICBzZWxlY3QgT0ZfRkxBVFRSRUUKPiA+ICsgICAgICAgc2VsZWN0IE9GX09WRVJMQVkK PiAKPiBPRl9PVkVSTEFZIHNob3VsZCBwcm9iYWJseSBzZWxlY3QgT0ZfRkxBVFRSRUUuIEkgZ3Vl c3MgaW4gdGhlb3J5LCB3ZQo+IGNvdWxkIGhhdmUgYW4gb3ZlcmxheSBmcm9tIGEgbm9uLUZEVCBz b3VyY2UuLi4KClVwIHRvIHlvdSwgSSdsbCBoYXBwaWx5IGRyb3AgT0ZfRkxBVFRSRUUgaWYgaXQg Z2V0cyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LiBJZiAKeW91IHRoaW5rIGl0J3MgYSBnb29kIGlk ZWEgSSBjYW4gc3VibWl0IGEgcGF0Y2guCgo+ID4gICAgICAgICBoZWxwCj4gPiAgICAgICAgICAg RW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBSLUNhciBEaXNwbGF5IFVuaXQgZW1iZWRkZWQgTFZEUwo+ ID4gICAgICAgICAgIGVuY29kZXJzLgoKW3NuaXBdCgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2YuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X29mLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAw MC4uMmJmOTEyMDFmYzkzCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vcmNhci1kdS9yY2FyX2R1X29mLmMKPiA+IEBAIC0wLDAgKzEsNDUxIEBACj4gPiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiA+ICsvKgo+ID4gKyAqIHJjYXJfZHVfb2Yu YyAtIExlZ2FjeSBEVCBiaW5kaW5ncyBjb21wYXRpYmlsaXR5Cj4gPiArICoKPiA+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTggTGF1cmVudCBQaW5jaGFydAo+ID4gPGxhdXJlbnQucGluY2hhcnRAaWRl YXNvbmJvYXJkLmNvbT4KPiA+ICsgKgo+ID4gKyAqIEJhc2VkIG9uIHdvcmsgZnJvbSBKeXJpIFNh cmhhIDxqc2FyaGFAdGkuY29tPgo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0 cnVtZW50cwo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gPiAr I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ID4g KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2Zk dC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgInJjYXJfZHVfY3J0Yy5oIgo+ID4gKyNpbmNs dWRlICJyY2FyX2R1X2Rydi5oIgo+ID4gKwo+ID4gKyNpZmRlZiBDT05GSUdfRFJNX1JDQVJfTFZE Uwo+IAo+IFdoeSBub3QgbWFrZSBjb21waWxpbmcgdGhpcyBmaWxlIGNvbmRpdGlvbmFsIGluIHRo ZSBNYWtlZmlsZT8KCkluIGNhc2UgSSBuZWVkIHRvIHBhdGNoIG90aGVyIERVLXJlbGF0ZWQgY29u c3RydWN0cyBpbiB0aGUgZnV0dXJlIG90aGVyIHRoYW4gCkxWRFMuIEkgY291bGQgY29tcGlsZSB0 aGlzIGNvbmRpdGlvbmFsbHkgaW4gdGhlIE1ha2VmaWxlIGZvciBub3cgYW5kIGNoYW5nZSBpdCAK bGF0ZXIgaWYgbmVlZGVkLiBJIGhhdmUgbm8gc3Ryb25nIHByZWZlcmVuY2UuCgo+ID4gKwo+ID4g K3N0cnVjdCByY2FyX2R1X29mX292ZXJsYXkgewo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wOwo+ID4gKyAgICAgICB2b2lkICpkYXRhOwo+ID4gKyAgICAgICB2b2lkICptZW07Cj4g PiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBfX2luaXQgcmNhcl9kdV9vZl9mcmVlX292ZXJs YXkoc3RydWN0IHJjYXJfZHVfb2Zfb3ZlcmxheQo+ID4gKm92ZXJsYXkpCj4gPiArewo+ID4gKyAg ICAgICBvZl9ub2RlX3B1dChvdmVybGF5LT5ucCk7Cj4gPiArICAgICAgIGtmcmVlKG92ZXJsYXkt PmRhdGEpOwo+ID4gKyAgICAgICBrZnJlZShvdmVybGF5LT5tZW0pOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgaW50IF9faW5pdCByY2FyX2R1X29mX2dldF9vdmVybGF5KHN0cnVjdCByY2FyX2R1 X29mX292ZXJsYXkKPiA+ICpvdmVybGF5LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpiZWdpbiwgdm9pZAo+ID4gKmVuZCkKPiA+ICt7Cj4gPiArICAg ICAgIGNvbnN0IHNpemVfdCBzaXplID0gZW5kIC0gYmVnaW47Cj4gPiArCj4gPiArICAgICAgIG1l bXNldChvdmVybGF5LCAwLCBzaXplb2YoKm92ZXJsYXkpKTsKPiA+ICsKPiA+ICsgICAgICAgaWYg KCFzaXplKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKyAg ICAgICBvdmVybGF5LT5kYXRhID0ga21lbWR1cChiZWdpbiwgc2l6ZSwgR0ZQX0tFUk5FTCk7Cj4g PiArICAgICAgIGlmICghb3ZlcmxheS0+ZGF0YSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsKPiA+ICsKPiA+ICsgICAgICAgb3ZlcmxheS0+bWVtID0gb2ZfZmR0X3VuZmxhdHRl bl90cmVlKG92ZXJsYXktPmRhdGEsIE5VTEwsCj4gPiAmb3ZlcmxheS0+bnApOyArICAgICAgIGlm ICghb3ZlcmxheS0+bWVtKSB7Cj4gPiArICAgICAgICAgICAgICAgcmNhcl9kdV9vZl9mcmVlX292 ZXJsYXkob3ZlcmxheSk7Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiAr ICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgX19pbml0ICoKPiA+ICtyY2FyX2R1X29mX2ZpbmRfbm9k ZV9ieV9wYXRoKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyCj4gPiAqcGF0 aCkKPiA+ICt7Cj4gCj4gV2hhdCdzIHdyb25nIHdpdGggdGhlIGNvcmUgZnVuY3Rpb24gdG8gZG8g dGhpcz8KCkkgaGF2ZW4ndCBmb3VuZCBhbnkgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBsb29rdXAg YnkgcGF0aCBzdGFydGluZyBhdCBhIGdpdmVuIApyb290LiBvZl9maW5kX25vZGVfYnlfcGF0aCgp IG9wZXJhdGVzIG9uIGFuIGFic29sdXRlIHBhdGggc3RhcnRpbmcgYXQgdGhlIHJvb3QgCm9mIHRo ZSBsaXZlIERULiBJcyB0aGVyZSBhIGZ1bmN0aW9uIEkgaGF2ZSBtaXNzZWQgPwoKQW5kIG9mIGNv dXJzZSB0aGlzIHNob3VsZCBiZSBhIGNvcmUgT0YgZnVuY3Rpb24sIHRoZXJlJ3Mgbm8gcmVhc29u IHRvIG1ha2UgaXQgCmRyaXZlci1zcGVjaWZpYy4KCj4gPiArICAgICAgIHBhcmVudCA9IG9mX25v ZGVfZ2V0KHBhcmVudCk7Cj4gPiArICAgICAgIGlmICghcGFyZW50KQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiBOVUxMOwo+ID4gKwo+ID4gKyAgICAgICB3aGlsZSAocGFyZW50ICYmICpwYXRo ID09ICcvJykgewo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQg PSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKPiA+ ICsgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXh0Owo+ID4gKyAgICAgICAgICAgICAgIHNp emVfdCBsZW47Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgLyogU2tpcCB0aGUgaW5pdGlhbCAn LycgZGVsaW1pdGVyIGFuZCBmaW5kIHRoZSBuZXh0IG9uZS4KPiA+ICovCj4gPiArICAgICAgICAg ICAgICAgcGF0aCsrOwo+ID4gKyAgICAgICAgICAgICAgIG5leHQgPSBzdHJjaHJudWwocGF0aCwg Jy8nKTsKPiA+ICsgICAgICAgICAgICAgICBsZW4gPSBuZXh0IC0gcGF0aDsKPiA+ICsgICAgICAg ICAgICAgICBpZiAoIWxlbikKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7 Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShwYXJlbnQs IG5vZGUpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBr YmFzZW5hbWUobm9kZS0+ZnVsbF9uYW1lKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGlmIChzdHJuY21wKHBhdGgsIG5hbWUsIGxlbikgPT0gMCAmJgo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmxlbihuYW1lKSA9PSBsZW4pIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hpbGQgPSBub2RlOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ICsgICAg ICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWYgKCFjaGlsZCkKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4gPiArCj4gPiArICAgICAgICAgICAg ICAgb2Zfbm9kZV9wdXQocGFyZW50KTsKPiA+ICsgICAgICAgICAgICAgICBwYXJlbnQgPSBjaGls ZDsKPiA+ICsgICAgICAgICAgICAgICBwYXRoID0gbmV4dDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ ID4gKyAgICAgICByZXR1cm4gcGFyZW50Owo+ID4gKwo+ID4gK2Vycm9yOgo+ID4gKyAgICAgICBv Zl9ub2RlX3B1dChwYXJlbnQpOwo+ID4gKyAgICAgICByZXR1cm4gTlVMTDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGludCBfX2luaXQgcmNhcl9kdV9vZl9hZGRfcHJvcGVydHkoc3RydWN0IGRl dmljZV9ub2RlICpucCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQKPiA+ICp2YWx1ZSwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgpCj4gPiArewo+ IAo+IFRoaXMgc2hvdWxkIGJlIGEgY29yZSBmdW5jdGlvbi4gSW4gZmFjdCwgSUlSQywgUGFudGVs aXMgaGFkIGEgcGF0Y2gKPiBhZGRpbmcgZnVuY3Rpb25zIGxpa2UgdGhpcy4gSSBiZWxpZXZlIHRo ZXJlIHdlcmUgb25seSBtaW5vciBpc3N1ZXMgYW5kCj4gSSBzYWlkIEkgd291bGQgdGFrZSBpdCBl dmVuIHdpdGhvdXQgdXNlcnMsIGJ1dCBoZSBuZXZlciBmb2xsb3dlZCB1cC4KCkkgYWdyZWUsIGl0 IHNob3VsZCBiZSBhIGNvcmUgZnVuY3Rpb24uIFRoZSByZWFzb24gSSBpbXBsZW1lbnRlZCBpdCBh cyBhIApkcml2ZXItc3BlY2lmaWMgZnVuY3Rpb24gd2FzIHRoYXQgSSB3YW50ZWQgYSBmdW5jdGlv bmFsIHByb3RvdHlwZSBhbmQgYW4gCm92ZXJhbGwgYWdyZWVtZW50IG9uIHRoZSBhcHByb2FjaCBi ZWZvcmUgcHJvcG9zaW5nIGV4dGVuc2lvbnMgdG8gdGhlIE9GIEFQSS4KCj4gPiArICAgICAgIHN0 cnVjdCBwcm9wZXJ0eSAqcHJvcDsKPiAKPiBXZSB3YW50IHRvIG1ha2Ugc3RydWN0IHByb3BlcnR5 IG9wYXF1ZSwgc28gSSBkb24ndCByZWFsbHkgd2FudCB0byBzZWUKPiBtb3JlIHVzZXJzLi4uCgpJ ZiB3ZSBtYWtlIHRoaXMgYSBjb3JlIGZ1bmN0aW9uIGl0IHNob3VsZG4ndCBiZSBhbiBpc3N1ZS4g V2Ugd291bGQgdGhlbiBhbHNvIApuZWVkIGEgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2YWx1ZSBv ZiBhbiBleGlzdGluZyBwcm9wZXJ0eS4gVGhhdCdzIG1vcmUgCnRyaWNreSB0aGFuIGl0IG1pZ2h0 IHNlZW0sIGFzIHByb3BlcnRpZXMgYXJlIGVpdGhlciBmdWxseSBkeW5hbWljIG9yIGZ1bGx5IApz dGF0aWMuIFdlIGNhbid0IGhhdmUgYSBub24tT0ZfRFlOQU1JQyBzdHJ1Y3QgcHJvcGVydHkgaW5z dGFuY2UgKGNyZWF0ZWQgd2hlbiAKcGFyc2luZyB0aGUgRkRUKSB0aGF0IGdldHMgYSBkeW5hbWlj YWxseS1hbGxvY2F0ZWQgdmFsdWUgcG9pbnRlciBhbGwgb2YgYSAKc3VkZGVuLgoKSSBzZWUgdHdv IHdheXMgdG8gZml4IHRoaXMsIGVpdGhlciBtYWtpbmcgZHluYW1pYyBtZW1vcnkgbWFuYWdlbWVu dCBtb3JlIGZpbmUtCmdyYWluZWQgYXQgdGhlIHByb3BlcnR5IGxldmVsLCBvciBjcmVhdGluZyBh IG5ldyBwcm9wZXJ0eSB0byByZXBsYWNlIHRoZSBvbGQgCm9uZSB3aGVuIHVwZGF0aW5nIHRoZSB2 YWx1ZS4gSSBiZWxpZXZlIGRldmljZV9ub2RlIGluc3RhbmNlcyBzdWZmZXIgZnJvbSB0aGUgCnNh bWUgcHJvYmxlbS4KCkJ5IHRoZSB3YXkgSSBiZWxpZXZlIHRoZXJlIGFyZSBtZW1vcnkgbGVha3Mg aW4gdGhlIE9GIGNvcmUsIGFzIEkgaGF2ZW4ndCBmb3VuZCAKYW55IGNvZGUgdGhhdCBmcmVlcyBP Rl9EWU5BTUlDIHByb3BlcnRpZXMuIEEgZ3JlcCBmb3IgT0ZfRFlOQU1JQyBvciAKT0ZfSVNfRFlO QU1JQyByZXR1cm5lZCBubyBjaGVjayBvZiB0aGUgZmxhZyBmb3IgcHJvcGVydGllcyBhcGFydCBm cm9tIG9uZSAKb2NjdXJyZW5jZSBpbiBhcmNoL3NwYXJjL2tlcm5lbC9wcm9tX2NvbW1vbi5jLgoK PiA+ICsKPiA+ICsgICAgICAgcHJvcCA9IGt6YWxsb2Moc2l6ZW9mKCpwcm9wKSwgR0ZQX0tFUk5F TCk7Cj4gPiArICAgICAgIGlmICghcHJvcCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiA+ICsKPiA+ICsgICAgICAgcHJvcC0+bmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tF Uk5FTCk7Cj4gPiArICAgICAgIHByb3AtPnZhbHVlID0ga21lbWR1cCh2YWx1ZSwgbGVuZ3RoLCBH RlBfS0VSTkVMKTsKPiA+ICsgICAgICAgcHJvcC0+bGVuZ3RoID0gbGVuZ3RoOwo+ID4gKwo+ID4g KyAgICAgICBpZiAoIXByb3AtPm5hbWUgfHwgIXByb3AtPnZhbHVlKSB7Cj4gPiArICAgICAgICAg ICAgICAga2ZyZWUocHJvcC0+bmFtZSk7Cj4gPiArICAgICAgICAgICAgICAga2ZyZWUocHJvcC0+ dmFsdWUpOwo+ID4gKyAgICAgICAgICAgICAgIGtmcmVlKHByb3ApOwo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRU5PTUVNOwo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIG9mX3By b3BlcnR5X3NldF9mbGFnKHByb3AsIE9GX0RZTkFNSUMpOwo+ID4gKwo+ID4gKyAgICAgICBwcm9w LT5uZXh0ID0gbnAtPnByb3BlcnRpZXM7Cj4gPiArICAgICAgIG5wLT5wcm9wZXJ0aWVzID0gcHJv cDsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEZyZWUg cHJvcGVydGllcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgYnkgcmNhcl9kdV9vZl9hZGRfcHJvcGVy dHkoKS4gKi8KPiA+ICtzdGF0aWMgdm9pZCBfX2luaXQgcmNhcl9kdV9vZl9mcmVlX3Byb3BlcnRp ZXMoc3RydWN0IGRldmljZV9ub2RlICpucCkKPiA+ICt7Cj4gPiArICAgICAgIHdoaWxlIChucC0+ cHJvcGVydGllcykgewo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwcm9wZXJ0eSAqcHJvcCA9 IG5wLT5wcm9wZXJ0aWVzOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIG5wLT5wcm9wZXJ0aWVz ID0gcHJvcC0+bmV4dDsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICBpZiAoT0ZfSVNfRFlOQU1J Qyhwcm9wKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAga2ZyZWUocHJvcC0+bmFtZSk7 Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBrZnJlZShwcm9wLT52YWx1ZSk7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBrZnJlZShwcm9wKTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4g PiArICAgICAgIH0KPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBfX2luaXQgcmNhcl9kdV9v Zl91cGRhdGVfdGFyZ2V0X3BhdGgoc3RydWN0IGRldmljZV9ub2RlICpkdSwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9k ZQo+ID4gKnJlbW90ZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gPiArewo+ID4gKyAgICAgICBzdHJ1 Y3QgZGV2aWNlX25vZGUgKnRhcmdldCA9IE5VTEw7Cj4gPiArICAgICAgIHN0cnVjdCBwcm9wZXJ0 eSAqKnByZXY7Cj4gPiArICAgICAgIHN0cnVjdCBwcm9wZXJ0eSAqcHJvcDsKPiA+ICsgICAgICAg Y2hhciAqcGF0aDsKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgZm9yIChw cm9wID0gbnAtPnByb3BlcnRpZXMsIHByZXYgPSAmcHJvcDsgcHJvcCAhPSBOVUxMOwo+ID4gKyAg ICAgICAgICAgIHByZXYgPSAmcHJvcC0+bmV4dCwgcHJvcCA9IHByb3AtPm5leHQpIHsKPiA+ICsg ICAgICAgICAgICAgICBpZiAob2ZfcHJvcF9jbXAocHJvcC0+bmFtZSwgInRhcmdldC1wYXRoIikp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAg ICAgICAgICBpZiAoIW9mX3Byb3BfY21wKHByb3AtPnZhbHVlLCAic29jIikpIHsKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IG9mX2dldF9wYXJlbnQoZHUpOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKyAgICAg ICAgICAgICAgIGlmICghb2ZfcHJvcF9jbXAocHJvcC0+dmFsdWUsICJkdSIpKSB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBvZl9ub2RlX2dldChkdSk7Cj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArICAgICAg ICAgICAgICAgaWYgKCFvZl9wcm9wX2NtcChwcm9wLT52YWx1ZSwgImx2ZHMtc2luayIpKSB7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBvZl9ncmFwaF9nZXRfcG9ydF9wYXJl bnQocmVtb3RlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAg ICAgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBpZiAoIXRhcmdldCkKPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgICAgcGF0aCA9IGthc3ByaW50ZihH RlBfS0VSTkVMLCAiJXBPRiIsIHRhcmdldCk7Cj4gPiArICAgICAgIG9mX25vZGVfcHV0KHRhcmdl dCk7Cj4gPiArICAgICAgIGlmICghcGF0aCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiA+ICsKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogUmVtb3ZlIHRoZSBleGlz dGluZyB0YXJnZXQtcGF0aCBwcm9wZXJ0eSB0aGF0IGhhcyBub3QgYmVlbgo+ID4gKyAgICAgICAg KiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIG5ldyBkeW5hbWlj IG9uZSB0bwo+ID4gKyAgICAgICAgKiBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgd2lsbCBiZSBwcm9w ZXJseSBmcmVlZC4KPiA+ICsgICAgICAgICovCj4gPiArICAgICAgICpwcmV2ID0gcHJvcC0+bmV4 dDsKPiAKPiBZb3UgYXJlIGxlYWtpbmcgcHJldi4gcHJldiBzaG91bGQgYmUgbW92ZWQgdGhlIGRl bGV0ZWQgcHJvcGVydHkgbGlzdC4KPiBCdXQgdGhlbiB5b3Ugc2hvdWxkbid0IGJlIG11Y2tpbmcg d2l0aCBwcm9wZXJ0aWVzIGF0IHRoaXMgbGV2ZWwgaW4gdGhlCj4gZmlyc3QgcGxhY2UuCgpJZiB3 ZSBpbXBsZW1lbnQgYW4gT0YgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2YWx1ZSBvZiBhIHByb3Bl cnR5IEkgd29uJ3QgbmVlZCAKdG8sIGFuZCBJJ2QgYmUgZmluZSB3aXRoIHRoYXQuCgpXaGF0IEkg bmVlZCBmb3IgdGhpcyBwYXRjaCBzZXJpZXMgaXMgdGhyZWUgbmV3IGZ1bmN0aW9ucyB0bwoKLSBs b29rdXAgYSBub2RlIGJ5IHBhdGggc3RhcnRpbmcgYXQgYSBnaXZlbiBub2RlCi0gYWRkIGEgcHJv cGVydHkKLSB1cGRhdGUgdGhlIHZhbHVlIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CgpJIGNhbiBz dWJtaXQgcHJvcG9zYWxzIGlmIHdlIGFncmVlIHRoYXQgdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBi ZSBpbXBsZW1lbnRlZC4gCkknZCBsaWtlIHRvIGtub3cgaG93IHlvdSB3b3VsZCBsaWtlIHRvIGhh bmRsZSB0aGUgbGFzdCB0d28gdGhvdWdoOiB3ZSBoYXZlIApsb3RzIG9mIHR5cGUtc3BlY2lmaWMg cHJvcGVydHkgcmVhZCBmdW5jdGlvbnMsIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIApkdXBsaWNh dGUgYWxsIHRoYXQgZm9yIHdyaXRlIGdpdmVuIHRoZSBudW1iZXIgb2YgZXhwZWN0ZWQgdXNlcnMu IE1heWJlIHRoZSAKcHJvcGVydHkgYWRkIGFuZCB1cGRhdGUgZnVuY3Rpb25zIHNob3VsZCBqdXN0 IHRha2UgYSB2b2lkIHBvaW50ZXIgYW5kIGEgbGVuZ3RoIApmb3IgdGhlIHZhbHVlID8KCj4gPiAr ICAgICAgIHJldCA9IHJjYXJfZHVfb2ZfYWRkX3Byb3BlcnR5KG5wLCAidGFyZ2V0LXBhdGgiLCBw YXRoLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4ocGF0 aCkgKyAxKTsKPiA+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPiA+ICsgICAgICAgICAgICAgICBr ZnJlZShwYXRoKTsKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICAgICB9 Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtleHRlcm4gY2hh ciBfX2R0Yl9yY2FyX2R1X29mX2x2ZHNfYmVnaW5bXTsKPiA+ICtleHRlcm4gY2hhciBfX2R0Yl9y Y2FyX2R1X29mX2x2ZHNfZW5kW107Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgX19pbml0IHJjYXJf ZHVfb2ZfbHZkc19wYXRjaF9vbmUoc3RydWN0IGRldmljZV9ub2RlICpkdSwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwb3J0X2lk LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHJlc291cmNlICpyZXMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBfX2JlMzIgKnJlZywKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MKPiA+ ICpjbGtzcGVjLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRldmljZV9ub2RlCj4gPiAqbG9jYWwsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUKPiA+ICpyZW1vdGUp Cj4gPiArewo+ID4gKyAgICAgICBzdHJ1Y3QgcmNhcl9kdV9vZl9vdmVybGF5IG92ZXJsYXk7Cj4g PiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZHVfcG9ydF9maXh1cDsKPiA+ICsgICAgICAg c3RydWN0IGRldmljZV9ub2RlICpkdV9wb3J0Owo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKmx2ZHNfZW5kcG9pbnRzWzJdOwo+ID4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmx2 ZHM7Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZnJhZ21lbnQ7Cj4gPiArICAgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqYnVzOwo+ID4gKyAgICAgICBzdHJ1Y3QgcHJvcGVydHkgKnBy b3A7Cj4gPiArICAgICAgIGNvbnN0IGNoYXIgKmNvbXBhdGlibGU7Cj4gPiArICAgICAgIGNvbnN0 IGNoYXIgKnNvY19zdWZmaXg7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBwc2l6ZTsKPiA+ICsg ICAgICAgdW5zaWduZWQgaW50IGk7Cj4gPiArICAgICAgIF9fYmUzMiB2YWx1ZVs0XTsKPiA+ICsg ICAgICAgY2hhciBuYW1lWzIzXTsKPiA+ICsgICAgICAgaW50IG92Y3NfaWQ7Cj4gPiArICAgICAg IGludCByZXQ7Cj4gPiArCj4gPiArICAgICAgIC8qIFNraXAgaWYgdGhlIExWRFMgbm9kZSBhbHJl YWR5IGV4aXN0cy4gKi8KPiA+ICsgICAgICAgc3ByaW50ZihuYW1lLCAibHZkc0AlbGx4IiwgKHU2 NClyZXMtPnN0YXJ0KTsKPiAKPiBGcmFnaWxlLiB1bml0LWFkZHJlc3MgYW5kIHJlcy0+c3RhcnQg YXJlIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSB0aGluZy4KCkkgdGhvdWdodCB0aGUgdW5pdCBh ZGRyZXNzIHdhcyBzdXBwb3NlZCB0byBiZSB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUgZmlyc3Qg CnJlZyBlbnRyeSA/IEkgY2FuIGluc3RlYWQgbG9vcCBvdmVyIGFsbCBub2RlcyBuYW1lZCBsdmRz IGFuZCBjb21wYXJlZCB0aGUgcmVnIAphZGRyZXNzLgoKSW4gcHJhY3RpY2UgSSB0aGluayB0aGlz IHNob3VsZCB3b3JrLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSAKZGV2aWNl IHRyZWUgaW1wbGVtZW50cyB0aGUgbGVnYWN5IGJpbmRpbmdzIChvdGhlcndpc2UgdGhlcmUncyBu byAibHZkcy4qIiByZWctCm5hbWVzIGVudHJ5KSBhbmQgd2UgdGh1cyBoYXZlIG5vIGV4aXN0aW5n IGx2ZHNAKiBub2RlIGF0IGJvb3QgdGltZS4gVGhlIApwdXJwb3NlIG9mIHRoaXMgY2hlY2sgaXMg dG8gYXZvaWQgcGF0Y2hpbmcgdGhlIHNhbWUgZGV2aWNlIHRyZWUgdHdpY2UgaWYgdGhlIAptb2R1 bGUgaXMgcmVtb3ZlZCBhbiByZWluc2VydGVkLiBJIHRodXMgY29udHJvbCB0aGUgdW5pdCBhZGRy ZXNzIGFzIEkgZ2VuZXJhdGUgCml0IG15c2VsZi4KCj4gPiArICAgICAgIGJ1cyA9IG9mX2dldF9w YXJlbnQoZHUpOwo+ID4gKyAgICAgICBsdmRzID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoYnVzLCBu YW1lKTsKPiA+ICsgICAgICAgb2Zfbm9kZV9wdXQoYnVzKTsKPiA+ICsgICAgICAgaWYgKGx2ZHMp IHsKPiA+ICsgICAgICAgICAgICAgICBvZl9ub2RlX3B1dChsdmRzKTsKPiA+ICsgICAgICAgICAg ICAgICByZXR1cm47Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgLyogUGFyc2UgdGhl IG92ZXJsYXkuICovCj4gPiArICAgICAgIHJldCA9IHJjYXJfZHVfb2ZfZ2V0X292ZXJsYXkoJm92 ZXJsYXksCj4gPiBfX2R0Yl9yY2FyX2R1X29mX2x2ZHNfYmVnaW4sCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19kdGJfcmNhcl9kdV9vZl9sdmRzX2VuZCk7Cj4gPiAr ICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogUGF0Y2ggdGhlIExWRFMgYW5kIERVIHBvcnQgbm9k ZXMgbmFtZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGZpeHVwCj4gPiArICAgICAgICAqIGVudHJpZXMu Cj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBsdmRzID0gcmNhcl9kdV9vZl9maW5kX25vZGVf YnlfcGF0aChvdmVybGF5Lm5wLAo+ID4gKyAgICAgICAgICAgICAgICIvZnJhZ21lbnRAMC9fX292 ZXJsYXlfXy9sdmRzIik7Cj4gPiArICAgICAgIGx2ZHNfZW5kcG9pbnRzWzBdID0gcmNhcl9kdV9v Zl9maW5kX25vZGVfYnlfcGF0aChsdmRzLAo+ID4gKyAgICAgICAgICAgICAgICIvcG9ydHMvcG9y dEAwL2VuZHBvaW50Iik7Cj4gPiArICAgICAgIGx2ZHNfZW5kcG9pbnRzWzFdID0gcmNhcl9kdV9v Zl9maW5kX25vZGVfYnlfcGF0aChsdmRzLAo+ID4gKyAgICAgICAgICAgICAgICIvcG9ydHMvcG9y dEAxL2VuZHBvaW50Iik7Cj4gPiArICAgICAgIGR1X3BvcnQgPSByY2FyX2R1X29mX2ZpbmRfbm9k ZV9ieV9wYXRoKG92ZXJsYXkubnAsCj4gPiArICAgICAgICAgICAgICAgIi9mcmFnbWVudEAxL19f b3ZlcmxheV9fL3BvcnRzL3BvcnRAMCIpOwo+ID4gKyAgICAgICBkdV9wb3J0X2ZpeHVwID0gcmNh cl9kdV9vZl9maW5kX25vZGVfYnlfcGF0aChvdmVybGF5Lm5wLAo+ID4gKyAgICAgICAgICAgICAg ICIvX19sb2NhbF9maXh1cHNfXy9mcmFnbWVudEAxL19fb3ZlcmxheV9fL3BvcnRzL3BvcnRAMCIp Owo+ID4gKyAgICAgICBpZiAoIWx2ZHMgfHwgIWx2ZHNfZW5kcG9pbnRzWzBdIHx8ICFsdmRzX2Vu ZHBvaW50c1sxXSB8fAo+ID4gKyAgICAgICAgICAgIWR1X3BvcnQgfHwgIWR1X3BvcnRfZml4dXAp Cj4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfcHV0X25vZGVzOwo+ID4gKwo+ID4gKyAgICAg ICBsdmRzLT5mdWxsX25hbWUgPSBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwpOwo+ID4gKwo+ID4g KyAgICAgICBzcHJpbnRmKG5hbWUsICJwb3J0QCV1IiwgcG9ydF9pZCk7Cj4gPiArICAgICAgIGR1 X3BvcnQtPmZ1bGxfbmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7Cj4gPiArICAgICAg IGR1X3BvcnRfZml4dXAtPmZ1bGxfbmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7Cj4g PiArCj4gPiArICAgICAgIGlmICghbHZkcy0+ZnVsbF9uYW1lIHx8ICFkdV9wb3J0LT5mdWxsX25h bWUgfHwKPiA+ICsgICAgICAgICAgICFkdV9wb3J0X2ZpeHVwLT5mdWxsX25hbWUpCj4gPiArICAg ICAgICAgICAgICAgZ290byBvdXRfZnJlZV9uYW1lczsKPiA+ICsKPiA+ICsgICAgICAgLyogUGF0 Y2ggdGhlIHRhcmdldCBwYXRocyBpbiBhbGwgZnJhZ21lbnRzLiAqLwo+ID4gKyAgICAgICBmb3Jf ZWFjaF9jaGlsZF9vZl9ub2RlKG92ZXJsYXkubnAsIGZyYWdtZW50KSB7Cj4gPiArICAgICAgICAg ICAgICAgaWYgKHN0cm5jbXAoImZyYWdtZW50QCIsIG9mX25vZGVfZnVsbF9uYW1lKGZyYWdtZW50 KSwgOSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgICByZXQgPSByY2FyX2R1X29mX3VwZGF0ZV90YXJnZXRfcGF0aChkdSwgcmVt b3RlLCBmcmFnbWVudCk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGZyYWdtZW50KTsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gb3V0X2ZyZWVfcHJvcGVydGllczsKPiA+ICsgICAgICAgICAg ICAgICB9Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICog Q3JlYXRlIGEgY29tcGF0aWJsZSBzdHJpbmcgZm9yIHRoZSBMVkRTIG5vZGUgdXNpbmcgdGhlIFNv Qwo+ID4gbW9kZWwKPiA+ICsgICAgICAgICogZnJvbSB0aGUgRFUgbm9kZS4KPiA+ICsgICAgICAg ICovCj4gPiArICAgICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGR1LCAiY29tcGF0 aWJsZSIsICZjb21wYXRpYmxlKTsKPiA+ICsgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAg ICAgICAgICAgZ290byBvdXRfZnJlZV9wcm9wZXJ0aWVzOwo+ID4gKwo+ID4gKyAgICAgICBzb2Nf c3VmZml4ID0gc3RyY2hyKGNvbXBhdGlibGUsICctJyk7Cj4gPiArICAgICAgIGlmICghc29jX3N1 ZmZpeCB8fCBzdHJsZW4oc29jX3N1ZmZpeCkgPiAxMCkKPiA+ICsgICAgICAgICAgICAgICBnb3Rv IG91dF9mcmVlX3Byb3BlcnRpZXM7Cj4gPiArCj4gPiArICAgICAgIHBzaXplID0gc3ByaW50Zihu YW1lLCAicmVuZXNhcywlcy1sdmRzIiwgc29jX3N1ZmZpeCArIDEpICsgMTsKPiA+ICsgICAgICAg cmV0ID0gcmNhcl9kdV9vZl9hZGRfcHJvcGVydHkobHZkcywgImNvbXBhdGlibGUiLCBuYW1lLCBw c2l6ZSk7Cj4gPiArICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8g b3V0X2ZyZWVfcHJvcGVydGllczsKPiA+ICsKPiA+ICsgICAgICAgLyogQ29weSB0aGUgTFZEUyBy ZWcgYW5kIGNsb2NrcyBwcm9wZXJ0aWVzIGZyb20gdGhlIERVIG5vZGUuICovCj4gPiArICAgICAg IHBzaXplID0gKG9mX25fYWRkcl9jZWxscyhkdSkgKyBvZl9uX3NpemVfY2VsbHMoZHUpKSAqIDQ7 Cj4gPiArICAgICAgIHJldCA9IHJjYXJfZHVfb2ZfYWRkX3Byb3BlcnR5KGx2ZHMsICJyZWciLCBy ZWcsIHBzaXplKTsKPiA+ICsgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgICAg Z290byBvdXRfZnJlZV9wcm9wZXJ0aWVzOwo+ID4gKwo+ID4gKyAgICAgICBpZiAoY2xrc3BlYy0+ YXJnc19jb3VudCA+PSBBUlJBWV9TSVpFKHZhbHVlKSAtIDEpCj4gPiArICAgICAgICAgICAgICAg Z290byBvdXRfZnJlZV9wcm9wZXJ0aWVzOwo+ID4gKwo+ID4gKyAgICAgICB2YWx1ZVswXSA9IGNw dV90b19iZTMyKGNsa3NwZWMtPm5wLT5waGFuZGxlKTsKPiA+ICsgICAgICAgZm9yIChpID0gMDsg aSA8IGNsa3NwZWMtPmFyZ3NfY291bnQ7ICsraSkKPiA+ICsgICAgICAgICAgICAgICB2YWx1ZVtp ICsgMV0gPSBjcHVfdG9fYmUzMihjbGtzcGVjLT5hcmdzW2ldKTsKPiA+ICsKPiA+ICsgICAgICAg cHNpemUgPSAoY2xrc3BlYy0+YXJnc19jb3VudCArIDEpICogNDsKPiA+ICsgICAgICAgcmV0ID0g cmNhcl9kdV9vZl9hZGRfcHJvcGVydHkobHZkcywgImNsb2NrcyIsIHZhbHVlLCBwc2l6ZSk7Cj4g PiArICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0X2ZyZWVf cHJvcGVydGllczsKPiA+ICsKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogSW5zZXJ0IHRo ZSBub2RlIGluIHRoZSBPRiBncmFwaDogcGF0Y2ggdGhlIExWRFMgcG9ydHMKPiA+IHJlbW90ZS1l bmRwb2ludAo+ID4gKyAgICAgICAgKiBwcm9wZXJ0aWVzIHRvIHBvaW50IHRvIHRoZSBlbmRwb2lu dHMgb2YgdGhlIHNpYmxpbmcgbm9kZXMgaW4KPiA+IHRoZQo+ID4gKyAgICAgICAgKiBncmFwaC4K PiA+ICsgICAgICAgICovCj4gPiArICAgICAgIHByb3AgPSBvZl9maW5kX3Byb3BlcnR5KGx2ZHNf ZW5kcG9pbnRzWzBdLCAicmVtb3RlLWVuZHBvaW50IiwKPiA+IE5VTEwpOwo+ID4gKyAgICAgICBp ZiAoIXByb3ApCj4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfZnJlZV9wcm9wZXJ0aWVzOwo+ ID4gKwo+ID4gKyAgICAgICAqKF9fYmUzMiAqKXByb3AtPnZhbHVlID0gY3B1X3RvX2JlMzIobG9j YWwtPnBoYW5kbGUpOwo+ID4gKwo+ID4gKyAgICAgICBwcm9wID0gb2ZfZmluZF9wcm9wZXJ0eShs dmRzX2VuZHBvaW50c1sxXSwgInJlbW90ZS1lbmRwb2ludCIsCj4gPiBOVUxMKTsKPiA+ICsgICAg ICAgaWYgKCFwcm9wKQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gb3V0X2ZyZWVfcHJvcGVydGll czsKPiA+ICsKPiA+ICsgICAgICAgKihfX2JlMzIgKilwcm9wLT52YWx1ZSA9IGNwdV90b19iZTMy KHJlbW90ZS0+cGhhbmRsZSk7Cj4gPiArCj4gPiArICAgICAgIC8qIEFwcGx5IHRoZSBvdmVybGF5 LCB0aGlzIHdpbGwgcmVzb2x2ZSBwaGFuZGxlcy4gKi8KPiA+ICsgICAgICAgb3Zjc19pZCA9IDA7 Cj4gPiArICAgICAgIHJldCA9IG9mX292ZXJsYXlfYXBwbHkob3ZlcmxheS5ucCwgJm92Y3NfaWQp Owo+ID4gKwo+ID4gKyAgICAgICAvKiBXZSdyZSBkb25lLCBmcmVlIGFsbCBhbGxvY2F0ZWQgbWVt b3J5LiAqLwo+ID4gK291dF9mcmVlX3Byb3BlcnRpZXM6Cj4gPiArICAgICAgIHJjYXJfZHVfb2Zf ZnJlZV9wcm9wZXJ0aWVzKGx2ZHMpOwo+ID4gKyAgICAgICByY2FyX2R1X29mX2ZyZWVfcHJvcGVy dGllcyhkdV9wb3J0KTsKPiA+ICsgICAgICAgcmNhcl9kdV9vZl9mcmVlX3Byb3BlcnRpZXMoZHVf cG9ydF9maXh1cCk7Cj4gPiArb3V0X2ZyZWVfbmFtZXM6Cj4gPiArICAgICAgIGtmcmVlKGx2ZHMt PmZ1bGxfbmFtZSk7Cj4gPiArICAgICAgIGtmcmVlKGR1X3BvcnQtPmZ1bGxfbmFtZSk7Cj4gPiAr ICAgICAgIGtmcmVlKGR1X3BvcnRfZml4dXAtPmZ1bGxfbmFtZSk7Cj4gPiArb3V0X3B1dF9ub2Rl czoKPiA+ICsgICAgICAgb2Zfbm9kZV9wdXQobHZkcyk7Cj4gPiArICAgICAgIG9mX25vZGVfcHV0 KGx2ZHNfZW5kcG9pbnRzWzBdKTsKPiA+ICsgICAgICAgb2Zfbm9kZV9wdXQobHZkc19lbmRwb2lu dHNbMV0pOwo+ID4gKyAgICAgICBvZl9ub2RlX3B1dChkdV9wb3J0KTsKPiA+ICsgICAgICAgb2Zf bm9kZV9wdXQoZHVfcG9ydF9maXh1cCk7Cj4gPiArCj4gPiArICAgICAgIHJjYXJfZHVfb2ZfZnJl ZV9vdmVybGF5KCZvdmVybGF5KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgX19pbml0 IHJjYXJfZHVfb2ZfbHZkc19wYXRjaChjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkCj4gPiAqb2Zf aWRzKQo+ID4gK3sKPiA+ICsgICAgICAgY29uc3Qgc3RydWN0IHJjYXJfZHVfZGV2aWNlX2luZm8g KmluZm87Cj4gPiArICAgICAgIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoOwo+ID4g KyAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmR1Owo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQg aTsKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgLyogR2V0IHRoZSBEVSBu b2RlIGFuZCBleGl0IGlmIG5vdCBwcmVzZW50IG9yIGRpc2FibGVkLiAqLwo+ID4gKyAgICAgICBk dSA9IG9mX2ZpbmRfbWF0Y2hpbmdfbm9kZV9hbmRfbWF0Y2goTlVMTCwgb2ZfaWRzLCAmbWF0Y2gp Owo+ID4gKyAgICAgICBpZiAoIWR1IHx8ICFvZl9kZXZpY2VfaXNfYXZhaWxhYmxlKGR1KSkKPiA+ ICsgICAgICAgICAgICAgICBnb3RvIGRvbmU7Cj4gPiArCj4gPiArICAgICAgIGluZm8gPSBtYXRj aC0+ZGF0YTsKPiA+ICsKPiA+ICsgICAgICAgLyogUGF0Y2ggZXZlcnkgTFZEUyBlbmNvZGVyLiAq Lwo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX2x2ZHM7ICsraSkgewo+ID4g KyAgICAgICAgICAgICAgIHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgY2xrc3BlYzsKPiA+ICsgICAg ICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmxvY2FsLCAqcmVtb3RlOwo+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCByZXNvdXJjZSByZXM7Cj4gPiArICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHBvcnRfaWQ7Cj4gPiArICAgICAgICAgICAgICAgY29uc3QgX19iZTMyICpyZWc7Cj4g PiArICAgICAgICAgICAgICAgY2hhciBuYW1lWzddOwo+ID4gKyAgICAgICAgICAgICAgIGludCBp bmRleDsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAvKgo+ID4gKyAgICAgICAgICAgICAgICAq IFJldHJpZXZlIHRoZSByZWdpc3RlciBzcGVjaWZpZXIsIHRoZSBjbG9jayBzcGVjaWZpZXIKPiA+ IGFuZCB0aGUKPiA+ICsgICAgICAgICAgICAgICAgKiBsb2NhbCBhbmQgcmVtb3RlIGVuZHBvaW50 cyBvZiB0aGUgTFZEUyBsaW5rLgo+ID4gKyAgICAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAg ICAgICAgIHNwcmludGYobmFtZSwgImx2ZHMuJXUiLCBpKTsKPiA+ICsgICAgICAgICAgICAgICBp bmRleCA9IG9mX3Byb3BlcnR5X21hdGNoX3N0cmluZyhkdSwgInJlZy1uYW1lcyIsIG5hbWUpOwo+ ID4gKyAgICAgICAgICAgICAgIGlmIChpbmRleCA8IDApCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICByZWcgPSBvZl9nZXRfYWRk cmVzcyhkdSwgaW5kZXgsIE5VTEwsIE5VTEwpOwo+ID4gKyAgICAgICAgICAgICAgIGlmICghcmVn KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAg ICAgICAgICAgcmV0ID0gb2ZfYWRkcmVzc190b19yZXNvdXJjZShkdSwgaW5kZXgsICZyZXMpOwo+ ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaW5kZXggPSBvZl9wcm9wZXJ0 eV9tYXRjaF9zdHJpbmcoZHUsICJjbG9jay1uYW1lcyIsIG5hbWUpOwo+ID4gKyAgICAgICAgICAg ICAgIGlmIChpbmRleCA8IDApCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiA+ICsKPiA+ICsgICAgICAgICAgICAgICByZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJn cyhkdSwgImNsb2NrcyIsCj4gPiAiI2Nsb2NrLWNlbGxzIiwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgJmNsa3NwZWMpOwo+ID4gKyAg ICAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29u dGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgcG9ydF9pZCA9IGluZm8tPnJvdXRlc1tS Q0FSX0RVX09VVFBVVF9MVkRTMCArIGldLnBvcnQ7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAg bG9jYWwgPSBvZl9ncmFwaF9nZXRfZW5kcG9pbnRfYnlfcmVncyhkdSwgcG9ydF9pZCwgMCk7Cj4g PiArICAgICAgICAgICAgICAgaWYgKCFsb2NhbCkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgb2Zfbm9kZV9wdXQoY2xrc3BlYy5ucCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgICAg cmVtb3RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9lbmRwb2ludChsb2NhbCk7Cj4gPiArICAgICAg ICAgICAgICAgaWYgKCFyZW1vdGUpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mX25v ZGVfcHV0KGxvY2FsKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGNs a3NwZWMubnApOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArICAg ICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgIC8qIFBhdGNoIHRoZSBMVkRT IGVuY29kZXIuICovCj4gPiArICAgICAgICAgICAgICAgcmNhcl9kdV9vZl9sdmRzX3BhdGNoX29u ZShkdSwgcG9ydF9pZCwgJnJlcywgcmVnLAo+ID4gJmNsa3NwZWMsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCwgcmVtb3RlKTsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgICBvZl9ub2RlX3B1dChjbGtzcGVjLm5wKTsKPiA+ICsgICAgICAgICAgICAg ICBvZl9ub2RlX3B1dChyZW1vdGUpOwo+ID4gKyAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KGxv Y2FsKTsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gK2RvbmU6Cj4gPiArICAgICAgIG9mX25vZGVf cHV0KGR1KTsKPiA+ICt9Cj4gPiArI2Vsc2UKPiA+ICtzdGF0aWMgdm9pZCBfX2luaXQgcmNhcl9k dV9vZl9sdmRzX3BhdGNoKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQKPiA+ICpvZl9pZHMpCj4g PiArewo+ID4gK30KPiA+ICsjZW5kaWYgLyogQ09ORklHX0RSTV9SQ0FSX0xWRFMgKi8KPiA+ICsK PiA+ICt2b2lkIF9faW5pdCByY2FyX2R1X29mX2luaXQoY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCAqb2ZfaWRzKQo+ID4gK3sKPiA+ICsgICAgICAgcmNhcl9kdV9vZl9sdmRzX3BhdGNoKG9mX2lk cyk7Cj4gPiArfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJf ZHVfb2YuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mLmggbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzEwNWVhZWY1OGM2Cj4gPiAt LS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29m LmgKPiA+IEBAIC0wLDAgKzEsMTYgQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+IAo+IFRoZSBndWlkZWxpbmVzIHNheSBoZWFkZXJzIHNob3VsZCBiZSBDIHN0eWxl LiBUaGlzIGlzIGR1ZSB0byBoZWFkZXJzCj4gZ2V0dGluZyBpbmNsdWRlZCBieSBhc3NlbWJseSBj b2RlLgoKTXkgYmFkLCBJJ2xsIGZpeCB0aGF0LgoKPiA+ICsvKgo+ID4gKyAqIHJjYXJfZHVfb2Yu aCAtIExlZ2FjeSBEVCBiaW5kaW5ncyBjb21wYXRpYmlsaXR5Cj4gPiArICoKPiA+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTggTGF1cmVudCBQaW5jaGFydAo+ID4gPGxhdXJlbnQucGluY2hhcnRAaWRl YXNvbmJvYXJkLmNvbT4KPiA+ICsgKi8KPiA+ICsjaWZuZGVmIF9fUkNBUl9EVV9PRl9IX18KPiA+ ICsjZGVmaW5lIF9fUkNBUl9EVV9PRl9IX18KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvaW5p dC5oPgo+ID4gKwo+ID4gK3N0cnVjdCBvZl9kZXZpY2VfaWQ7Cj4gPiArCj4gPiArdm9pZCBfX2lu aXQgcmNhcl9kdV9vZl9pbml0KGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkcyk7Cj4g PiArCj4gPiArI2VuZGlmIC8qIF9fUkNBUl9EVV9PRl9IX18gKi8KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHMuZHRzCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfb2ZfbHZkcy5kdHMgbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYmM3NWM3YTFjM2JkCj4gPiAtLS0gL2Rldi9udWxsCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X29mX2x2ZHMuZHRzCj4gPiBA QCAtMCwwICsxLDgyIEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK PiA+ICsvKgo+ID4gKyAqIHJjYXJfZHVfb2ZfbHZkcy5kdHMgLSBMZWdhY3kgTFZEUyBEVCBiaW5k aW5ncyBjb252ZXJzaW9uCj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTGF1cmVu dCBQaW5jaGFydAo+ID4gPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiA+ICsg Kgo+ID4gKyAqIEJhc2VkIG9uIHdvcmsgZnJvbSBKeXJpIFNhcmhhIDxqc2FyaGFAdGkuY29tPgo+ ID4gKyAqIENvcHlyaWdodCAoQykgMjAxNSBUZXhhcyBJbnN0cnVtZW50cwo+ID4gKyAqLwo+ID4g Kwo+ID4gKy8qCj4gPiArICogVGhlIHRhcmdldC1wYXRocywgbHZkcyBub2RlIG5hbWUsIERVIHBv cnQgbnVtYmVyIGFuZCBMVkRTIHJlbW90ZQo+ID4gZW5kcG9pbnRzCj4gPiArICogd2lsbCBiZSBw YXRjaGVkIGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWUuCj4gPiArICovCj4gPiArCj4gPiArL2R0cy12 MS87Cj4gPiArLyB7Cj4gPiArICAgICAgIGZyYWdtZW50QDAgewo+ID4gKyAgICAgICAgICAgICAg IHRhcmdldC1wYXRoID0gInNvYyI7Cj4gCj4gSSBkb24ndCByZWFsbHkgbGlrZSB0aGlzIGFidXNl IG9mIHRhcmdldC1wYXRoIHRoYXQgaXNuJ3QgcmVhbGx5IGEKPiB2YWxpZCBwYXRoLiBJIGRvbid0 IGRlYmF0ZSB0aGUgbmVlZCwgYnV0IHdlIGp1c3QgbmVlZCBhIHN0YW5kYXJkIHdheQo+IHRvIGhh bmRsZSB0aGlzLgoKSSBhZ3JlZSBpdCdzIGEgYml0IG9mIGEgaGFjaywgSSBqdXN0IGNvdWxkbid0 IHRoaW5rIG9mIGEgYmV0dGVyIHdheS4gUHJvcG9zYWxzIAphcmUgd2VsY29tZSA6LSkKCj4gUGVy aGFwcyB3ZSBuZWVkIHRvIGFsbG93IHRhcmdldC1wYXRoIHRvIGJlIGEgc3RyaW5nIGxpc3QuIFRo YXQgZ2V0cwo+IGJhY2sgdG8gbXkgcXVlc3Rpb24gb24gaG93IG1hbnkgc3RhdGljIGNvbWJpbmF0 aW9ucyB5b3UgaGF2ZS4gSSdkCj4gcHJlZmVyIGR1cGxpY2F0aW9uIG9mIG92ZXJsYXlzIHdpdGgg c2ltcGxlIGFwcGx5aW5nIGNvZGUgdG8gY29kaW5nIGEKPiBidW5jaCBvZiBtYXRjaGluZyBhbmQg Zml4dXBzLgoKU2VlIG15IGFuc3dlciBhYm92ZSwgSSBkb24ndCB0aGluayBzdGF0aWMgb3Zlcmxh eXMgd291bGQgYmUgYSBnb29kIG9wdGlvbi4gRm9yIApmcmFnbWVudHMgMCBhbmQgMSB3ZSBjb3Vs ZCB1c2Ugb25lIG92ZXJsYXkgcGVyIFNvQywgd2hpY2ggY291bGQgYmUgbWFuYWdlYWJsZSwgCmJ1 dCBmcmFnbWVudCAyIGlzIGJvYXJkLXNwZWNpZmljLgoKPiA+ICsgICAgICAgICAgICAgICBfX292 ZXJsYXlfXyB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBsdmRzIHsKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9ydHMgewo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDA+Owo+ID4gKwo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRAMCB7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD47Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdmRzX2lu cHV0OiBlbmRwb2ludCB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9Cj4gPiA8MD47ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwb3J0QDEgewo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDE+Owo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHZkc19vdXRwdXQ6IGVuZHBvaW50IHsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVtb3RlLWVuZHBvaW50ID0KPiA+IDwwPjsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gPiArICAgICAgICAgICAgICAgfTsKPiA+ ICsgICAgICAgfTsKPiA+ICsKPiA+ICsgICAgICAgZnJhZ21lbnRAMSB7Cj4gPiArICAgICAgICAg ICAgICAgdGFyZ2V0LXBhdGggPSAiZHUiOwo+ID4gKyAgICAgICAgICAgICAgIF9fb3ZlcmxheV9f IHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBvcnRzIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9ydEAwIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbmRwb2ludCB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZW1vdGUtZW5kcG9pbnQgPQo+ID4gPCZsdmRzX2lucHV0PjsK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg fTsKPiA+ICsgICAgICAgICAgICAgICB9Owo+ID4gKyAgICAgICB9Owo+ID4gKwo+ID4gKyAgICAg ICBmcmFnbWVudEAyIHsKPiA+ICsgICAgICAgICAgICAgICB0YXJnZXQtcGF0aCA9ICJsdmRzLXNp bmsiOwo+ID4gKyAgICAgICAgICAgICAgIF9fb3ZlcmxheV9fIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmbHZkc19vdXRwdXQ+Owo+ID4gKyAgICAgICAg ICAgICAgIH07Cj4gPiArICAgICAgIH07Cj4gPiArCj4gPiArICAgICAgIF9fbG9jYWxfZml4dXBz X18gewo+IAo+IGR0YyBnZW5lcmF0ZXMgdGhpcyBub3cuCgpBaCwgbmljZSB0byBrbm93LiBJJ2xs IHJldGVzdCB3aXRob3V0IHRoZSBtYW51YWwgX19sb2NhbF9maXh1cHNfXy4KCj4gPiArICAgICAg ICAgICAgICAgZnJhZ21lbnRAMSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBfX292ZXJs YXlfXyB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRzIHsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0QDAgewo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZW1vdGUtZW5kcG9pbnQgPQo+ID4gPDA+OyArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH07Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICB9Owo+ID4gKyAgICAgICAgICAgICAgIH07Cj4gPiArICAgICAg ICAgICAgICAgZnJhZ21lbnRAMiB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBfX292ZXJs YXlfXyB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2lu dCA9IDwwPjsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIH07Cj4gPiArICAgICAgICAgICAg ICAgfTsKPiA+ICsgICAgICAgfTsKPiA+ICt9OwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK