From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH 1/2] drm/bridge: Refactor out the panel wrapper from the lvds-encoder bridge. Date: Thu, 4 May 2017 14:28:31 +0530 Message-ID: <3f873837-82e0-81b0-8cbf-db6c8af8f677@codeaurora.org> References: <20170427163601.7313-1-eric@anholt.net> <87lgqdzyvj.fsf@eliezer.anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.codeaurora.org (smtp.codeaurora.org [198.145.29.96]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01E6B6E068 for ; Thu, 4 May 2017 08:58:37 +0000 (UTC) In-Reply-To: <87lgqdzyvj.fsf@eliezer.anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt , dri-devel@lists.freedesktop.org Cc: Yannick Fertre , Thierry Reding , linux-kernel@vger.kernel.org, Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org CgpPbiAwNS8wMy8yMDE3IDEwOjAwIFBNLCBFcmljIEFuaG9sdCB3cm90ZToKPiBBcmNoaXQgVGFu ZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPiB3cml0ZXM6Cj4KPj4gSGksCj4+Cj4+IE9uIDA0 LzI3LzIwMTcgMTA6MDYgUE0sIEVyaWMgQW5ob2x0IHdyb3RlOgo+Pj4gTWFueSBEUk0gZHJpdmVy cyBoYXZlIGNvbW1vbiBjb2RlIHRvIG1ha2UgYSBzdHViIGNvbm5lY3Rvcgo+Pj4gaW1wbGVtZW50 YXRpb24gdGhhdCB3cmFwcyBhIGRybV9wYW5lbC4gIEJ5IHdyYXBwaW5nIHRoZSBwYW5lbCBpbiBh IERSTQo+Pj4gYnJpZGdlLCBhbGwgb2YgdGhlIGNvbm5lY3RvciBjb2RlIChpbmNsdWRpbmcgY2Fs bHMgZHVyaW5nIGVuY29kZXIKPj4+IGVuYWJsZS9kaXNhYmxlKSBnb2VzIGF3YXkuCj4+Pgo+Pj4g U2lnbmVkLW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KPj4+IC0tLQo+Pj4g IERvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgfCAgIDMgKwo+Pj4gIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAgfCAgMTEgKy0KPj4+ICBkcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlICAgICAgIHwgICAxICsKPj4+ICBkcml2ZXJzL2dwdS9kcm0v YnJpZGdlL2x2ZHMtZW5jb2Rlci5jIHwgMTU4ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Pj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3BhbmVsLmMgICAgICAgIHwgMTg4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgg ICAgICAgICAgICAgIHwgICA4ICsrCj4+PiAgNiBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9u cygrKSwgMTQxIGRlbGV0aW9ucygtKQo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3BhbmVsLmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVy cy5yc3QKPj4+IGluZGV4IGMwNzVhYWRkNzA3OC4uNjBlYjNiNDE3MDJiIDEwMDY0NAo+Pj4gLS0t IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+Pj4gKysrIGIvRG9jdW1l bnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+Pj4gQEAgLTE0Myw2ICsxNDMsOSBAQCBC cmlkZ2UgSGVscGVyIFJlZmVyZW5jZQo+Pj4gIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9k cm0vZHJtX2JyaWRnZS5jCj4+PiAgICAgOmV4cG9ydDoKPj4+Cj4+PiArLi4ga2VybmVsLWRvYzo6 IGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFuZWwuYwo+Pj4gKyAgIDpleHBvcnQ6Cj4+PiArCj4+ PiAgLi4gX2RybV9wYW5lbF9oZWxwZXI6Cj4+Pgo+Pj4gIFBhbmVsIEhlbHBlciBSZWZlcmVuY2UK Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgYi9kcml2ZXJz L2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPj4+IGluZGV4IGY2OTY4ZDNiNGI0MS4uYzRkYWNhMzg3 NDNjIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPj4+IEBAIC00LDYgKzQsMTQgQEAg Y29uZmlnIERSTV9CUklER0UKPj4+ICAJaGVscAo+Pj4gIAkgIEJyaWRnZSByZWdpc3RyYXRpb24g YW5kIGxvb2t1cCBmcmFtZXdvcmsuCj4+Pgo+Pj4gK2NvbmZpZyBEUk1fUEFORUxfQlJJREdFCj4+ PiArCWRlZl9ib29sIHkKPj4+ICsJZGVwZW5kcyBvbiBEUk1fQlJJREdFCj4+PiArCXNlbGVjdCBE Uk1fS01TX0hFTFBFUgo+Pj4gKwlzZWxlY3QgRFJNX1BBTkVMCj4+PiArCWhlbHAKPj4+ICsJICBE Uk0gYnJpZGdlIHdyYXBwZXIgb2YgRFJNIHBhbmVscwo+Pj4gKwo+Pj4gIG1lbnUgIkRpc3BsYXkg SW50ZXJmYWNlIEJyaWRnZXMiCj4+PiAgCWRlcGVuZHMgb24gRFJNICYmIERSTV9CUklER0UKPj4+ Cj4+PiBAQCAtMjcsOCArMzUsNyBAQCBjb25maWcgRFJNX0RVTUJfVkdBX0RBQwo+Pj4gIGNvbmZp ZyBEUk1fTFZEU19FTkNPREVSCj4+PiAgCXRyaXN0YXRlICJUcmFuc3BhcmVudCBwYXJhbGxlbCB0 byBMVkRTIGVuY29kZXIgc3VwcG9ydCIKPj4+ICAJZGVwZW5kcyBvbiBPRgo+Pj4gLQlzZWxlY3Qg RFJNX0tNU19IRUxQRVIKPj4+IC0Jc2VsZWN0IERSTV9QQU5FTAo+Pj4gKwlzZWxlY3QgRFJNX1BB TkVMX0JSSURHRQo+Pj4gIAloZWxwCj4+PiAgCSAgU3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgcGFy YWxsZWwgdG8gTFZEUyBlbmNvZGVycyB0aGF0IGRvbid0IHJlcXVpcmUKPj4+ICAJICBhbnkgY29u ZmlndXJhdGlvbi4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+Pj4gaW5kZXggM2ZlMjIyNmVl MmYyLi40MGE0Mzc1MGFkNTUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L01ha2VmaWxlCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCj4+PiBA QCAtNSw2ICs1LDcgQEAgb2JqLSQoQ09ORklHX0RSTV9EVU1CX1ZHQV9EQUMpICs9IGR1bWItdmdh LWRhYy5vCj4+PiAgb2JqLSQoQ09ORklHX0RSTV9MVkRTX0VOQ09ERVIpICs9IGx2ZHMtZW5jb2Rl ci5vCj4+PiAgb2JqLSQoQ09ORklHX0RSTV9NRUdBQ0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZX KSArPSBtZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1MHYzLWZ3Lm8KPj4+ICBvYmotJChDT05GSUdf RFJNX05YUF9QVE4zNDYwKSArPSBueHAtcHRuMzQ2MC5vCj4+PiArb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9CUklER0UpICs9IHBhbmVsLm8KPj4+ICBvYmotJChDT05GSUdfRFJNX1BBUkFERV9QUzg2 MjIpICs9IHBhcmFkZS1wczg2MjIubwo+Pj4gIG9iai0kKENPTkZJR19EUk1fU0lMX1NJSTg2MjAp ICs9IHNpbC1zaWk4NjIwLm8KPj4+ICBvYmotJChDT05GSUdfRFJNX1NJSTkwMlgpICs9IHNpaTkw Mngubwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZkcy1lbmNvZGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2x2ZHMtZW5jb2Rlci5jCj4+PiBpbmRleCBmMWY2 N2EyNzk0MjYuLjA0ZTE1MDRjNGQ4ZiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvbHZkcy1lbmNvZGVyLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbHZk cy1lbmNvZGVyLmMKPj4+IEBAIC04LDE0NCArOCwxOCBAQAo+Pj4gICAqLwo+Pj4KPj4+ICAjaW5j bHVkZSA8ZHJtL2RybVAuaD4KPj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ Cj4+PiAtI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+Cj4+PiAtI2luY2x1ZGUgPGRybS9k cm1fY3J0Y19oZWxwZXIuaD4KPj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+Cj4+PiAt I2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oPgo+Pj4gKyNpbmNsdWRl IDxkcm0vZHJtX2JyaWRnZS5oPgo+Pj4gICNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4+Pgo+ Pj4gICNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+Pj4KPj4+IC1zdHJ1Y3QgbHZkc19lbmNv ZGVyIHsKPj4+IC0Jc3RydWN0IGRldmljZSAqZGV2Owo+Pj4gLQo+Pj4gLQlzdHJ1Y3QgZHJtX2Jy aWRnZSBicmlkZ2U7Cj4+PiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPj4+IC0J c3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4+PiAtfTsKPj4+IC0KPj4+IC1zdGF0aWMgaW5saW5l IHN0cnVjdCBsdmRzX2VuY29kZXIgKgo+Pj4gLWRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiAtewo+Pj4gLQlyZXR1cm4gY29udGFpbmVyX29m KGJyaWRnZSwgc3RydWN0IGx2ZHNfZW5jb2RlciwgYnJpZGdlKTsKPj4+IC19Cj4+PiAtCj4+PiAt c3RhdGljIGlubGluZSBzdHJ1Y3QgbHZkc19lbmNvZGVyICoKPj4+IC1kcm1fY29ubmVjdG9yX3Rv X2x2ZHNfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+Pj4gLXsKPj4+ IC0JcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBsdmRzX2VuY29kZXIsIGNv bm5lY3Rvcik7Cj4+PiAtfQo+Pj4gLQo+Pj4gLXN0YXRpYyBpbnQgbHZkc19jb25uZWN0b3JfZ2V0 X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4+PiAtewo+Pj4gLQlzdHJ1 Y3QgbHZkc19lbmNvZGVyICpsdmRzID0gZHJtX2Nvbm5lY3Rvcl90b19sdmRzX2VuY29kZXIoY29u bmVjdG9yKTsKPj4+IC0KPj4+IC0JcmV0dXJuIGRybV9wYW5lbF9nZXRfbW9kZXMobHZkcy0+cGFu ZWwpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jf aGVscGVyX2Z1bmNzIGx2ZHNfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPj4+IC0JLmdldF9t b2RlcyA9IGx2ZHNfY29ubmVjdG9yX2dldF9tb2RlcywKPj4+IC19Owo+Pj4gLQo+Pj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBsdmRzX2Nvbm5lY3Rvcl9mdW5jcyA9 IHsKPj4+IC0JLmRwbXMgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKPj4+IC0J LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+Pj4gLQkuZmlsbF9t b2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPj4+IC0JLmRl c3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCj4+PiAtCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPj4+IC0J LmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ry b3lfc3RhdGUsCj4+PiAtfTsKPj4+IC0KPj4+IC1zdGF0aWMgaW50IGx2ZHNfZW5jb2Rlcl9hdHRh Y2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+IC17Cj4+PiAtCXN0cnVjdCBsdmRzX2Vu Y29kZXIgKmx2ZHMgPSBkcm1fYnJpZGdlX3RvX2x2ZHNfZW5jb2RlcihicmlkZ2UpOwo+Pj4gLQlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmx2ZHMtPmNvbm5lY3RvcjsKPj4+IC0J aW50IHJldDsKPj4+IC0KPj4+IC0JaWYgKCFicmlkZ2UtPmVuY29kZXIpIHsKPj4+IC0JCURSTV9F UlJPUigiTWlzc2luZyBlbmNvZGVyXG4iKTsKPj4+IC0JCXJldHVybiAtRU5PREVWOwo+Pj4gLQl9 Cj4+PiAtCj4+PiAtCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZsdmRzX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+Pj4gLQo+Pj4gLQlyZXQgPSBkcm1fY29ubmVjdG9yX2lu aXQoYnJpZGdlLT5kZXYsIGNvbm5lY3RvciwgJmx2ZHNfY29ubmVjdG9yX2Z1bmNzLAo+Pj4gLQkJ CQkgRFJNX01PREVfQ09OTkVDVE9SX0xWRFMpOwo+Pj4gLQlpZiAocmV0KSB7Cj4+PiAtCQlEUk1f RVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3RvclxuIik7Cj4+PiAtCQlyZXR1cm4g cmV0Owo+Pj4gLQl9Cj4+PiAtCj4+PiAtCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rl cigmbHZkcy0+Y29ubmVjdG9yLCBicmlkZ2UtPmVuY29kZXIpOwo+Pj4gLQo+Pj4gLQlyZXQgPSBk cm1fcGFuZWxfYXR0YWNoKGx2ZHMtPnBhbmVsLCAmbHZkcy0+Y29ubmVjdG9yKTsKPj4+IC0JaWYg KHJldCA8IDApCj4+PiAtCQlyZXR1cm4gcmV0Owo+Pj4gLQo+Pj4gLQlyZXR1cm4gMDsKPj4+IC19 Cj4+PiAtCj4+PiAtc3RhdGljIHZvaWQgbHZkc19lbmNvZGVyX2RldGFjaChzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKQo+Pj4gLXsKPj4+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRy bV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4+PiAtCj4+PiAtCWRybV9wYW5lbF9k ZXRhY2gobHZkcy0+cGFuZWwpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgdm9pZCBsdmRzX2Vu Y29kZXJfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4gLXsKPj4+IC0J c3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJy aWRnZSk7Cj4+PiAtCj4+PiAtCWRybV9wYW5lbF9wcmVwYXJlKGx2ZHMtPnBhbmVsKTsKPj4+IC19 Cj4+PiAtCj4+PiAtc3RhdGljIHZvaWQgbHZkc19lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKQo+Pj4gLXsKPj4+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRy bV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4+PiAtCj4+PiAtCWRybV9wYW5lbF9l bmFibGUobHZkcy0+cGFuZWwpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgdm9pZCBsdmRzX2Vu Y29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4gLXsKPj4+IC0Jc3Ry dWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9IGRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRn ZSk7Cj4+PiAtCj4+PiAtCWRybV9wYW5lbF9kaXNhYmxlKGx2ZHMtPnBhbmVsKTsKPj4+IC19Cj4+ PiAtCj4+PiAtc3RhdGljIHZvaWQgbHZkc19lbmNvZGVyX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlKQo+Pj4gLXsKPj4+IC0Jc3RydWN0IGx2ZHNfZW5jb2RlciAqbHZkcyA9 IGRybV9icmlkZ2VfdG9fbHZkc19lbmNvZGVyKGJyaWRnZSk7Cj4+PiAtCj4+PiAtCWRybV9wYW5l bF91bnByZXBhcmUobHZkcy0+cGFuZWwpOwo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGRybV9icmlkZ2VfZnVuY3MgbHZkc19lbmNvZGVyX2JyaWRnZV9mdW5jcyA9IHsKPj4+ IC0JLmF0dGFjaCA9IGx2ZHNfZW5jb2Rlcl9hdHRhY2gsCj4+PiAtCS5kZXRhY2ggPSBsdmRzX2Vu Y29kZXJfZGV0YWNoLAo+Pj4gLQkucHJlX2VuYWJsZSA9IGx2ZHNfZW5jb2Rlcl9wcmVfZW5hYmxl LAo+Pj4gLQkuZW5hYmxlID0gbHZkc19lbmNvZGVyX2VuYWJsZSwKPj4+IC0JLmRpc2FibGUgPSBs dmRzX2VuY29kZXJfZGlzYWJsZSwKPj4+IC0JLnBvc3RfZGlzYWJsZSA9IGx2ZHNfZW5jb2Rlcl9w b3N0X2Rpc2FibGUsCj4+PiAtfTsKPj4+IC0KPj4+ICBzdGF0aWMgaW50IGx2ZHNfZW5jb2Rlcl9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gIHsKPj4+IC0Jc3RydWN0IGx2 ZHNfZW5jb2RlciAqbHZkczsKPj4+ICAJc3RydWN0IGRldmljZV9ub2RlICpwb3J0Owo+Pj4gIAlz dHJ1Y3QgZGV2aWNlX25vZGUgKmVuZHBvaW50Owo+Pj4gLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBh bmVsOwo+Pj4gLQo+Pj4gLQlsdmRzID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigq bHZkcyksIEdGUF9LRVJORUwpOwo+Pj4gLQlpZiAoIWx2ZHMpCj4+PiAtCQlyZXR1cm4gLUVOT01F TTsKPj4+IC0KPj4+IC0JbHZkcy0+ZGV2ID0gJnBkZXYtPmRldjsKPj4+IC0JcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgbHZkcyk7Cj4+PiAtCj4+PiAtCWx2ZHMtPmJyaWRnZS5mdW5jcyA9ICZs dmRzX2VuY29kZXJfYnJpZGdlX2Z1bmNzOwo+Pj4gLQlsdmRzLT5icmlkZ2Uub2Zfbm9kZSA9IHBk ZXYtPmRldi5vZl9ub2RlOwo+Pj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhbmVsX25vZGU7Cj4+ PiArCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwo+Pj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlOwo+Pj4KPj4+ICAJLyogTG9jYXRlIHRoZSBwYW5lbCBEVCBub2RlLiAqLwo+Pj4gIAlwb3J0 ID0gb2ZfZ3JhcGhfZ2V0X3BvcnRfYnlfaWQocGRldi0+ZGV2Lm9mX25vZGUsIDEpOwo+Pj4gQEAg LTE2MSwyOSArMzUsMzUgQEAgc3RhdGljIGludCBsdmRzX2VuY29kZXJfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPj4+ICAJCXJldHVybiAtRU5YSU87Cj4+PiAgCX0KPj4+Cj4+ PiAtCXBhbmVsID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlbmRwb2ludCk7Cj4+ PiArCXBhbmVsX25vZGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50 KTsKPj4+ICAJb2Zfbm9kZV9wdXQoZW5kcG9pbnQpOwo+Pj4gLQlpZiAoIXBhbmVsKSB7Cj4+PiAr CWlmICghcGFuZWxfbm9kZSkgewo+Pj4gIAkJZGV2X2RiZygmcGRldi0+ZGV2LCAibm8gcmVtb3Rl IGVuZHBvaW50IGZvciBwb3J0IDFcbiIpOwo+Pj4gIAkJcmV0dXJuIC1FTlhJTzsKPj4+ICAJfQo+ Pj4KPj4+IC0JbHZkcy0+cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChwYW5lbCk7Cj4+PiAtCW9m X25vZGVfcHV0KHBhbmVsKTsKPj4+IC0JaWYgKCFsdmRzLT5wYW5lbCkgewo+Pj4gKwlwYW5lbCA9 IG9mX2RybV9maW5kX3BhbmVsKHBhbmVsX25vZGUpOwo+Pj4gKwlvZl9ub2RlX3B1dChwYW5lbF9u b2RlKTsKPj4+ICsJaWYgKCFwYW5lbCkgewo+Pj4gIAkJZGV2X2RiZygmcGRldi0+ZGV2LCAicGFu ZWwgbm90IGZvdW5kLCBkZWZlcnJpbmcgcHJvYmVcbiIpOwo+Pj4gIAkJcmV0dXJuIC1FUFJPQkVf REVGRVI7Cj4+PiAgCX0KPj4+Cj4+PiAtCS8qIFJlZ2lzdGVyIHRoZSBicmlkZ2UuICovCj4+PiAt CXJldHVybiBkcm1fYnJpZGdlX2FkZCgmbHZkcy0+YnJpZGdlKTsKPj4+ICsJYnJpZGdlID0gZHJt X3BhbmVsX2JyaWRnZV9hZGQoJnBkZXYtPmRldiwgcGFuZWwsCj4+PiArCQkJCSAgICAgIERSTV9N T0RFX0NPTk5FQ1RPUl9MVkRTKTsKPj4+ICsJaWYgKElTX0VSUihicmlkZ2UpKQo+Pj4gKwkJcmV0 dXJuIFBUUl9FUlIoYnJpZGdlKTsKPj4+ICsKPj4+ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRl diwgYnJpZGdlKTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4KPj4+ICBzdGF0aWMg aW50IGx2ZHNfZW5jb2Rlcl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+ ICB7Cj4+PiAtCXN0cnVjdCBsdmRzX2VuY29kZXIgKmVuY29kZXIgPSBwbGF0Zm9ybV9nZXRfZHJ2 ZGF0YShwZGV2KTsKPj4+ICsJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSA9IHBsYXRmb3JtX2dl dF9kcnZkYXRhKHBkZXYpOwo+Pj4KPj4+IC0JZHJtX2JyaWRnZV9yZW1vdmUoJmVuY29kZXItPmJy aWRnZSk7Cj4+PiArCWRybV9icmlkZ2VfcmVtb3ZlKGJyaWRnZSk7Cj4+Pgo+Pj4gIAlyZXR1cm4g MDsKPj4+ICB9Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYW5lbC5j IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYW5lbC5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yMDgxMjQ1NDU1YzYKPj4+IC0tLSAvZGV2L251bGwK Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvcGFuZWwuYwo+Pj4gQEAgLTAsMCArMSwx ODggQEAKPj4+ICsvKgo+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBMYXVyZW50IFBpbmNoYXJ0 IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4+PiArICogQ29weXJpZ2h0IChD KSAyMDE3IEJyb2FkY29tCj4+PiArICoKPj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+PiArICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPj4+ICsg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZgo+Pj4gKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pj4g KyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj X2hlbHBlci5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+Pj4gKyNpbmNs dWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rl ci5oPgo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaD4KPj4+ ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+Pj4gKwo+Pj4gK3N0cnVjdCBwYW5lbF9icmlk Z2Ugewo+Pj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7Cj4+PiArCXN0cnVjdCBkZXZpY2Ug KmRldjsKPj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwo+Pj4gKwlzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbDsKPj4+ICsJdTMyIGNvbm5lY3Rvcl90eXBlOwo+Pj4gK307Cj4+PiAr Cj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFuZWxfYnJpZGdlICoKPj4+ICtkcm1fYnJpZGdl X3RvX3BhbmVsX2JyaWRnZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4gK3sKPj4+ICsJ cmV0dXJuIGNvbnRhaW5lcl9vZihicmlkZ2UsIHN0cnVjdCBwYW5lbF9icmlkZ2UsIGJyaWRnZSk7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBhbmVsX2JyaWRnZSAqCj4+ PiArZHJtX2Nvbm5lY3Rvcl90b19wYW5lbF9icmlkZ2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKPj4+ICt7Cj4+PiArCXJldHVybiBjb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1 Y3QgcGFuZWxfYnJpZGdlLCBjb25uZWN0b3IpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50 IHBhbmVsX2JyaWRnZV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgcGFuZWxfYnJpZGdlICpwYW5lbF9icmlkZ2Ug PQo+Pj4gKwkJZHJtX2Nvbm5lY3Rvcl90b19wYW5lbF9icmlkZ2UoY29ubmVjdG9yKTsKPj4+ICsK Pj4+ICsJcmV0dXJuIGRybV9wYW5lbF9nZXRfbW9kZXMocGFuZWxfYnJpZGdlLT5wYW5lbCk7Cj4+ PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJf ZnVuY3MgcGFuZWxfYnJpZGdlX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4+PiArCS5nZXRf bW9kZXMgPSBwYW5lbF9icmlkZ2VfY29ubmVjdG9yX2dldF9tb2RlcywKPj4+ICt9Owo+Pj4gKwo+ Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBwYW5lbF9icmlkZ2Vf Y29ubmVjdG9yX2Z1bmNzID0gewo+Pj4gKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5l Y3Rvcl9kcG1zLAo+Pj4gKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVz ZXQsCj4+PiArCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9y X21vZGVzLAo+Pj4gKwkuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwKPj4+ICsJLmF0 b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlLAo+Pj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg cGFuZWxfYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4gK3sKPj4+ ICsJc3RydWN0IHBhbmVsX2JyaWRnZSAqcGFuZWxfYnJpZGdlID0gZHJtX2JyaWRnZV90b19wYW5l bF9icmlkZ2UoYnJpZGdlKTsKPj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9 ICZwYW5lbF9icmlkZ2UtPmNvbm5lY3RvcjsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJaWYg KCFicmlkZ2UtPmVuY29kZXIpIHsKPj4+ICsJCURSTV9FUlJPUigiTWlzc2luZyBlbmNvZGVyXG4i KTsKPj4+ICsJCXJldHVybiAtRU5PREVWOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWRybV9jb25uZWN0 b3JfaGVscGVyX2FkZChjb25uZWN0b3IsCj4+PiArCQkJCSAmcGFuZWxfYnJpZGdlX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MpOwo+Pj4gKwo+Pj4gKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoYnJp ZGdlLT5kZXYsIGNvbm5lY3RvciwKPj4+ICsJCQkJICZwYW5lbF9icmlkZ2VfY29ubmVjdG9yX2Z1 bmNzLAo+Pj4gKwkJCQkgcGFuZWxfYnJpZGdlLT5jb25uZWN0b3JfdHlwZSk7Cj4+PiArCWlmIChy ZXQpIHsKPj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdG9yXG4i KTsKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCX0KPj4+ICsKPj4+ICsJZHJtX21vZGVfY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKCZwYW5lbF9icmlkZ2UtPmNvbm5lY3RvciwKPj4+ICsJCQkJCSAg YnJpZGdlLT5lbmNvZGVyKTsKPj4+ICsKPj4+ICsJcmV0ID0gZHJtX3BhbmVsX2F0dGFjaChwYW5l bF9icmlkZ2UtPnBhbmVsLCAmcGFuZWxfYnJpZGdlLT5jb25uZWN0b3IpOwo+Pj4gKwlpZiAocmV0 IDwgMCkKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+ ICsKPj4+ICtzdGF0aWMgdm9pZCBwYW5lbF9icmlkZ2VfZGV0YWNoKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgcGFuZWxfYnJpZGdlICpwYW5lbF9icmlkZ2Ug PSBkcm1fYnJpZGdlX3RvX3BhbmVsX2JyaWRnZShicmlkZ2UpOwo+Pj4gKwo+Pj4gKwlkcm1fcGFu ZWxfZGV0YWNoKHBhbmVsX2JyaWRnZS0+cGFuZWwpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg dm9pZCBwYW5lbF9icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ Pj4gK3sKPj4+ICsJc3RydWN0IHBhbmVsX2JyaWRnZSAqcGFuZWxfYnJpZGdlID0gZHJtX2JyaWRn ZV90b19wYW5lbF9icmlkZ2UoYnJpZGdlKTsKPj4+ICsKPj4+ICsJZHJtX3BhbmVsX3ByZXBhcmUo cGFuZWxfYnJpZGdlLT5wYW5lbCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHBhbmVs X2JyaWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPj4+ICt7Cj4+PiArCXN0 cnVjdCBwYW5lbF9icmlkZ2UgKnBhbmVsX2JyaWRnZSA9IGRybV9icmlkZ2VfdG9fcGFuZWxfYnJp ZGdlKGJyaWRnZSk7Cj4+PiArCj4+PiArCWRybV9wYW5lbF9lbmFibGUocGFuZWxfYnJpZGdlLT5w YW5lbCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHBhbmVsX2JyaWRnZV9kaXNhYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgcGFuZWxfYnJp ZGdlICpwYW5lbF9icmlkZ2UgPSBkcm1fYnJpZGdlX3RvX3BhbmVsX2JyaWRnZShicmlkZ2UpOwo+ Pj4gKwo+Pj4gKwlkcm1fcGFuZWxfZGlzYWJsZShwYW5lbF9icmlkZ2UtPnBhbmVsKTsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgcGFuZWxfYnJpZGdlX3Bvc3RfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlKQo+Pj4gK3sKPj4+ICsJc3RydWN0IHBhbmVsX2JyaWRnZSAqcGFu ZWxfYnJpZGdlID0gZHJtX2JyaWRnZV90b19wYW5lbF9icmlkZ2UoYnJpZGdlKTsKPj4+ICsKPj4+ ICsJZHJtX3BhbmVsX3VucHJlcGFyZShwYW5lbF9icmlkZ2UtPnBhbmVsKTsKPj4+ICt9Cj4+PiAr Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIHBhbmVsX2JyaWRnZV9i cmlkZ2VfZnVuY3MgPSB7Cj4+PiArCS5hdHRhY2ggPSBwYW5lbF9icmlkZ2VfYXR0YWNoLAo+Pj4g KwkuZGV0YWNoID0gcGFuZWxfYnJpZGdlX2RldGFjaCwKPj4+ICsJLnByZV9lbmFibGUgPSBwYW5l bF9icmlkZ2VfcHJlX2VuYWJsZSwKPj4+ICsJLmVuYWJsZSA9IHBhbmVsX2JyaWRnZV9lbmFibGUs Cj4+PiArCS5kaXNhYmxlID0gcGFuZWxfYnJpZGdlX2Rpc2FibGUsCj4+PiArCS5wb3N0X2Rpc2Fi bGUgPSBwYW5lbF9icmlkZ2VfcG9zdF9kaXNhYmxlLAo+Pj4gK307Cj4+PiArCj4+PiArLyoqCj4+ PiArICogZHJtX3BhbmVsX2JyaWRnZV9hZGQgLSBDcmVhdGVzIGEgZHJtX2JyaWRnZSBhbmQgZHJt X2Nvbm5lY3RvciB0aGF0Cj4+PiArICoganVzdCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlv bnMgZnJvbSBkcm1fcGFuZWwuCj4+PiArICoKPj4+ICsgKiBAZGV2OiBUaGUgc3RydWN0IGRldmlj ZSBvZiB0aGUgcGFuZWwgZGV2aWNlLiAgVGhpcyBpcyB1c2VkIGZvcgo+Pj4gKyAqIHJlZ2lzdGVy aW5nIHRoZSBkcm1fYnJpZGdlLgo+Pj4gKyAqIEBwYW5lbDogVGhlIGRybV9wYW5lbCBiZWluZyB3 cmFwcGVkLiAgTXVzdCBiZSBub24tTlVMTC4KPj4+ICsgKiBAY29ubmVjdG9yX3R5cGU6IFRoZSBE Uk1fTU9ERV9DT05ORUNUT1JfKiBmb3IgdGhlIGNvbm5lY3RvciB0byBiZQo+Pj4gKyAqIGNyZWF0 ZWQuCj4+PiArICoKPj4+ICsgKiBGb3IgZHJpdmVycyBjb252ZXJ0aW5nIGZyb20gZGlyZWN0bHkg dXNpbmcgZHJtX3BhbmVsOiBUaGUgZXhwZWN0ZWQKPj4+ICsgKiB1c2FnZSBwYXR0ZXJuIGlzIHRo YXQgZHVyaW5nIGVpdGhlciBlbmNvZGVyIG1vZHVsZSBwcm9iZSBvciBEU0kKPj4+ICsgKiBob3N0 IGF0dGFjaCwgYSBkcm1fcGFuZWwgd2lsbCBiZSBsb29rZWQgdXAgdGhyb3VnaAo+Pj4gKyAqIGRy bV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZSgpLiAgZHJtX3BhbmVsX2JyaWRnZV9hZGQoKSBpcyB1 c2VkIHRvCj4+PiArICogd3JhcCB0aGF0IHBhbmVsIGluIHRoZSBuZXcgYnJpZGdlLCBhbmQgdGhl IHJlc3VsdCBjYW4gdGhlbiBiZQo+Pj4gKyAqIHBhc3NlZCB0byBkcm1fYnJpZGdlX2F0dGFjaCgp LiAgVGhlIGRybV9wYW5lbF9wcmVwYXJlKCkgYW5kIHJlbGF0ZWQKPj4+ICsgKiBmdW5jdGlvbnMg Y2FuIGJlIGRyb3BwZWQgZnJvbSB0aGUgZW5jb2RlciBkcml2ZXIgKHRoZXkncmUgbm93Cj4+PiAr ICogY2FsbGVkIGJ5IHRoZSBLTVMgaGVscGVycyBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBlbmNv ZGVyKSwgYWxvbmcKPj4+ICsgKiB3aXRoIGNvbm5lY3RvciBjcmVhdGlvbi4KPj4KPj4gK3BhbmVs L2JyaWRnZSByZXZpZXdlcnMuCj4+Cj4+IFRoaXMgZG9lcyBtYWtlIHRoaW5ncyBtdWNoIGNsZWFu ZXIsIGJ1dCBpdCBzZWVtcyBhIGJpdCBzdHJhbmdlIHRvIGNyZWF0ZQo+PiBhIGRybV9icmlkZ2Ug d2hlbiB0aGVyZSBpc24ndCByZWFsbHkgYSBIVyBicmlkZ2UgaW4gdGhlIGRpc3BsYXkgY2hhaW4g KGkuZSwKPj4gd2hlbiB0aGUgRFNJIGVuY29kZXIgaXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIGEg RFNJIHBhbmVsKS4KPj4KPj4gVGhlcmUgYXJlIGttcyBkcml2ZXJzIHRoYXQgdXNlIGRybV9wYW5l bCwgYnV0IGRvbid0IGhhdmUgc2ltcGxlIHN0dWIgY29ubmVjdG9ycwo+PiB0aGF0IHdyYXAgYXJv dW5kIGEgZHJtX3BhbmVsLiBUaGV5IGhhdmUgbW9yZSBjb21wbGljYXRlZCBjb25uZWN0b3Igb3Bz LCBhbmQKPj4gbWF5IGNhbGwgZHJtX3BhbmVsX3ByZXBhcmUoKSBhbmQgcmVsYXRlZCBmdW5jdGlv bnMgYSBiaXQgZGlmZmVyZW50bHkuIFdlIHdvbid0Cj4+IGJlIGFibGUgdG8gdXNlIGRybV9wYW5l bF9icmlkZ2UgZm9yIHRob3NlIGRyaXZlcnMuCj4KPiBDYW4geW91IHBvaW50IHRvIGV4YW1wbGVz Pwo+Cj4gVGhlIG9ubHkgdGhpbmcgb24gbXkgbWluZCB0aGF0IHdvdWxkIGJlIG1pc3NpbmcgaWYg ZHJpdmVycyBjb252ZXJ0ZWQgdG8KPiBicmlkZ2VzIG9ubHkgaXMgaGF2aW5nIHlvdXIgZW5jb2Rl ciBiZSBhYmxlIHRvIGZpbHRlciB0aGUgbW9kZSBsaXN0IGZvcgo+IHRpbWluZyBsaW1pdHMuICBU aGF0IHNlZW1zIGxpa2Ugc29tZXRoaW5nIHlvdSdkIHdhbnQgYW55IGxpbmsgaW4gdGhlCj4gZGlz cGxheSBjaGFpbiB0byBiZSBhYmxlIHRvIGRvLCBzbyB3ZSBtYXkgd2FudCB0byBleHRlbmQgZHJt X2JyaWRnZSBmb3IKPiBoYW5kbGluZyB0aGF0LgoKWWVhaCwgdGhhdCdzIG9uZSBvZiB0aGUgcmVh c29ucywgYW5kIHByb2JhYmx5IHRoZSBtb3N0IGltcG9ydGFudCBvbmUgc2luY2UKdGhlIG1ham9y aXR5IG9mIHRoZSBrbXMgZHJpdmVycyB1c2UgdGhlIGNvbm5lY3RvcidzIG1vZGVfdmFsaWQoKSB0 byBjaGVjawp0aGVpciBlbmNvZGVyL2NydGMgcmVsYXRlZCBtb2RlIGNvbnN0cmFpbnRzLgoKU29t ZSBkcml2ZXJzIHN1YmNsYXNzIHRoZSBjb25uZWN0b3IgYXRvbWljIHN0YXRlLCB0aGlzIHdvdWxk IHJlcXVpcmUgdGhlaXIKb3duIHZlcnNpb25zIG9mIGNvbm5lY3RvciBvcHMgdG8gZHVwbGljYXRl LCBjb3B5LCBkZXN0cm95IHRoZWlyIGF0b21pYwpzdGF0ZSwgd2hpY2ggd291bGQgYmUgaGFyZCB0 byBkbyBpZiBjb25uZWN0b3IgY3JlYXRpb24gd2FzIG1vdmVkIG91dHNpZGUKb2YgdGhlIGttcyBk cml2ZXIuIEkgc2VlIGF0IGxlYXN0IHRoZSB0ZWdyYSBEU0kgZHJpdmVyIGRvIHRoYXQuIEl0J3Mg YW5vdGhlcgpxdWVzdGlvbiB3aGV0aGVyIHRoYXQgc3R1ZmYgc2hvdWxkIGJlbG9uZyB0byB0aGUg Y29ubmVjdG9yIHN0YXRlIG9yIGVsc2V3aGVyZS4KClRoZSBtc20gRFNJIGRyaXZlciBoYXMgc3Bl Y2lhbCBjb25uZWN0b3Igb3BzIHRoYXQgZG9lcyBzb21lIHRyaWNrcyB0byBlbnN1cmUKYSBkdWFs IERTSSBsaW5rIHBhbmVsIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkuIEluIHRoaXMgY2FzZSwgdGhl cmUgYXJlIDIKY29ubmVjdG9ycyBjcmVhdGVkLCBidXQgb25seSBvbmUgZHJtX3BhbmVsLiBXZSBh bHNvIG5lZWQgdG8gY29uZmlndXJlIHNvbWUKbXNtIGNvbXBvbmVudHMgdG8gd29yayBpbiBkdWFs IERTSSBtb2RlLCB0aGlzIGlzIGRvbmUgYXMgY2FsbGJhY2tzIGZyb20gdGhlCmNvbm5lY3RvciBv cHMuIFRoYXQgYmVpbmcgc2FpZCwgSSB0aGluayB3ZSBjb3VsZCBtb3ZlIHNvbWUgb2YgdGhpcyBm cm9tIHRoZSBrbXMKZHJpdmVyIHRvIGRybV9wYW5lbF9icmlkZ2UoKSBhcyBhIHNwZWNpYWwgY2Fz ZS4KCkFib3V0IHRoZSB1c2FnZSBvZiBkcm1fcGFuZWxfcHJlcGFyZSgpIGFuZCBvdGhlciBmdW5j cywgdGhlIG1ham9yaXR5IG9mIHRoZQp1c2VycyBtb3N0bHkgZG86CgplbmNvZGVyX2VuYWJsZV9o ZWxwZXJfZnVuYygpIHsKCWRybV9wYW5lbF9wcmVwYXJlKCk7CgoJLyogZG8gc3R1ZmYgdG8gYWN0 dWFsbHkgZW5hYmxlIHRoZSBlbmNvZGVyICovCgoJZHJtX3BhbmVsX2VuYWJsZSgpOwp9CgpUaGUg YWJvdmUgdXNhZ2UgY2FuIGJlIHJlcGxhY2VkIGJ5IGNyZWF0aW5nIGEgZHJtX3BhbmVsX2JyaWRn ZSgpLCBidXQgb3RoZXIKdHlwZXMgb2YgdXNhZ2Ugd291bGQgbWVzcyB1cCB0aGUgc2VxdWVuY2Ug YSBiaXQuIEZvciBleGFtcGxlLCByb2NrY2hpcCdzCmR3LW1pcGktZHNpIHNlZW1zIHRvIHNvbWV0 aGluZyBsaWtlIGRvOgoKZHdfbWlwaV9kc2lfZW5jb2Rlcl9lbmFibGUoKSB7CgoJLyogc29tZSBE U0kgZW5jb2RlciBwcmVwYXJhdGlvbiwgY29uZmlndXJlIERTSSBpbiBjb21tYW5kIG1vZGUgKi8K Cglkcm1fcGFuZWxfcHJlcGFyZSgpOwoKCS8qIGNvbmZpZ3VyZSBEU0kgaW4gdmlkZW8gbW9kZSAq LwoKCWRybV9wYW5lbF9lbmFibGUoKTsKCgkvKiBzb21lIG1vcmUgRFNJIGNvbmZpZ3VyYXRpb24g Ki8KfQoKSXQncyBwb3NzaWJsZSB0aGF0IHdlIGNhbiBhZGp1c3QgdGhlc2Ugbm9uLWNvbXBseWlu ZyBjYXNlcyB3aXRob3V0IGJyZWFraW5nCmZ1bmN0aW9uYWxpdHksIGJ1dCBpdCB3b3VsZCBuZWVk IHNvbWUgdGVzdGluZy4KCj4KPiBNYXliZSB5b3UncmUgdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVs c2UsIHRob3VnaC4KPgo+PiBGb3IgbXNtLCB3ZSBjaGVjayB3aGV0aGVyIHRoZSBEU0kgZW5jb2Rl ciBpcyBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gYSBwYW5lbAo+PiBvciBhbiBleHRlcm5hbCBicmlk Z2UuIElmIGl0J3MgY29ubmVjdGVkIHRvIGFuIGV4dGVybmFsIGJyaWRnZSwgd2Ugc2tpcCB0aGUK Pj4gY3JlYXRpb24gb2YgdGhlIHN0dWIgY29ubmVjdG9yLCBhbmQgcmVseSBvbiB0aGUgZXh0ZXJu YWwgYnJpZGdlIGRyaXZlciB0bwo+PiBjcmVhdGUgdGhlIGNvbm5lY3RvcjoKPj4KPj4gaHR0cDov L2x4ci5mcmVlLWVsZWN0cm9ucy5jb20vc291cmNlL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2Rz aS5jI0wyMjcKPj4KPj4gVGhlIG1zbSBzb2x1dGlvbiBpc24ndCB2ZXJ5IG5lYXQsIGJ1dCBpdCBh dm9pZHMgdGhlIG5lZWQgdG8gY3JlYXRlIGFub3RoZXIKPj4gYnJpZGdlIHRvIGdsdWUgdGhpbmdz IHRvZ2V0aGVyLgo+Cj4gWWVhaCwgdGhhdCdzIGJhc2ljYWxseSB0aGUgY29kZSBJIHdhcyBnb2lu ZyB0byBoYXZlIHRvIHJlcGxpY2F0ZSwgd2hpY2gKPiBpcyB3aHkgSSB3cm90ZSBhIGdlbmVyaWMg aGVscGVyIGluc3RlYWQuICBJIHRoaW5rIGFsbG9jYXRpbmcgYQo+IGRybV9icmlkZ2UgKHdoaWNo IGlzbid0IHZpc2libGUgdG8gdXNlcnNwYWNlKSBpcyBhIHNtYWxsIHByaWNlIHRvIHBheQo+IGZv ciBjdXR0aW5nIDEwMCBsaW5lcyBvZiBib2lsZXJwbGF0ZSBmcm9tIGEgZHJpdmVyLgoKVGhhdCBz b3VuZHMgZmFpciBlbm91Z2gsIEkgZ3Vlc3MuCgpUaGFua3MsCkFyY2hpdAoKLS0gClF1YWxjb21t IElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVt LAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=