From mboxrd@z Thu Jan 1 00:00:00 1970 From: abhinavk@codeaurora.org Subject: Re: [DPU PATCH v2 1/2] drm/panel: Add Truly NT35597 panel Date: Wed, 23 May 2018 18:28:08 -0700 Message-ID: <24de94b0666c60a97871817f6a671abf@codeaurora.org> References: <1523690713-22543-1-git-send-email-abhinavk@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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: Archit Taneja Cc: jeykumar@quicinc.com, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, hoegsberg@google.com, freedreno@lists.freedesktop.org, linux-arm-msm-owner@vger.kernel.org, chandanu@codeaurora.org List-Id: linux-arm-msm@vger.kernel.org VGhhbmtzIEFyY2hpdCBmb3IgeW91ciBjb21tZW50cy4KCkkgaGF2ZSBhZGRyZXNzZWQgYWxsIG9m IHRoZW0gaW4gVjMgYW5kIGFkZGVkIFRoZWlycnkgUmVhZGluZyBhbmQgUm9iIApIZXJyaW5nIGZv ciByZXZpZXdzIGFzIHdlbGwuCgpBYmhpbmF2CgpPbiAyMDE4LTA0LTE5IDEwOjQ0LCBBcmNoaXQg VGFuZWphIHdyb3RlOgo+IEhpLAo+IAo+IE9uIFNhdHVyZGF5IDE0IEFwcmlsIDIwMTggMTI6NTUg UE0sIEFiaGluYXYgS3VtYXIgd3JvdGU6Cj4+IEZyb206IEFyY2hpdCBUYW5lamEgPGFyY2hpdHRA Y29kZWF1cm9yYS5vcmc+Cj4gCj4gWW91IGNhbiBkcm9wIERQVSBmcm9tIHRoZSBzdWJqZWN0LiBB bHNvLCB5b3UnZCBuZWVkIHRvIGFkZAo+IFRoZWlycnkgUmVhZGluZyBmb3IgcGFuZWwgcmVsYXRl ZCBwYXRjaGVzLCBhbmQgUm9iIEhlcnJpbmcKPiBmb3IgYW4gQWNrIG9uIHRoZSBEVCBiaW5kaW5n cy4KPiAKPiBJIHRoaW5rIHlvdSBjYW4gY2hhbmdlIHRoZSBhdXRob3IgdG8geW91cnNlbGYuIFlv dSd2ZSBoYWQgdG8KPiBtYWtlIHBsZW50eSBvZiBjaGFuZ2VzIHRvIGdldCB0aGlzIGluIHVwc3Ry ZWFtIHN0YXRlLiBZb3UKPiBjYW4ga2VlcCBteSBTaWduZWQtb2ZmLWJ5LCB0aG91Z2guCj4gCj4+ IAo+PiBBZGQgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBwYW5lbCB1c2VkCj4+IGluIE1TTSBy ZWZlcmVuY2UgcGxhdGZvcm1zLgo+IAo+IFlvdSBjYW4gbWVudGlvbiBoZXJlIHRoYXQgdGhlIHBh bmVsIHN1cHBvcnRzIGJvdGggc2luZ2xlCj4gYW5kIGR1YWwgRFNJIG1vZGVzLCBhbmQgdGhhdCB3 ZSBzdXBwb3J0IG9ubHkgZHVhbC1EU0kKPiBtb2RlIGZvciBub3cuCj4gCj4+IAo+PiBDaGFuZ2Vz IGluIHYyOgo+PiAtIFJlbmFtZWQgcGFuZWwgdG8gdHJ1bHksbnQzNTU5Nwo+PiAtIEFkZGVkIFNQ RFggbGljZW5zZQo+PiAtIFVzZWQgZW5kcG9pbnRzIGluc3RlYWQgb2YgY3VzdG9tIG5vZGUKPj4g LSBSZW5hbWVkIGFuZCBjbGVhbmVkIHVwIHBvd2VyIHN1cHBsaWVzCj4+IAo+PiBTaWduZWQtb2Zm LWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+PiBTaWduZWQtb2Zm LWJ5OiBBYmhpbmF2IEt1bWFyIDxhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZz4KPj4gLS0tCj4+ICAg Li4uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90cnVseSxudDM1NTk3LnR4dCAgfCAgNDcg KysKPj4gICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICB8ICAgNyArCj4+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1u dDM1NTk3LmMgICAgICAgIHwgNTk3IAo+PiArKysrKysrKysrKysrKysrKysrKysKPj4gICA0IGZp bGVzIGNoYW5nZWQsIDY1MiBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IAo+ PiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90cnVseSxudDM1NTk3 LnR4dAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt dHJ1bHktbnQzNTU5Ny5jCj4+IAo+PiBkaWZmIC0tZ2l0IAo+PiBhL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RydWx5LG50MzU1OTcudHh0IAo+PiBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RydWx5LG50MzU1OTcudHh0Cj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjIyYjZmMTkKPj4gLS0tIC9kZXYv bnVsbAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90 cnVseSxudDM1NTk3LnR4dAo+PiBAQCAtMCwwICsxLDQ3IEBACj4+ICtUcnVseSBtb2RlbCBOVDM1 NTk3IDE0NDB4MjU2MCBEU0kgUGFuZWwKPj4gKwo+PiArUmVxdWlyZWQgcHJvcGVydGllczoKPj4g Ky0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ0cnVseSxudDM1NTk3Igo+PiArLSB2ZGRhLXN1cHBs eTogcGhhbmRsZSBvZiB0aGUgcmVndWxhdG9yIHRoYXQgcHJvdmlkZXMgdGhlIHN1cHBseSAKPj4g dm9sdGFnZQo+PiArICBQb3dlciBJQyBzdXBwbHkKPj4gKy0gdmRpc3BwLXN1cHBseTogcGhhbmRs ZSBvZiB0aGUgcmVndWxhdG9yIHRoYXQgcHJvdmlkZXMgdGhlIHN1cHBseSAKPj4gdm9sdGFnZQo+ PiArICBmb3IgcG9zaXRpdmUgTENEIGJpYXMKPj4gKy0gdmRpc3BuLXN1cHBseTogcGhhbmRsZSBv ZiB0aGUgcmVndWxhdG9yIHRoYXQgcHJvdmlkZXMgdGhlIHN1cHBseSAKPj4gdm9sdGFnZQo+PiAr ICBmb3IgbmVnYXRpdmUgTENEIGJpYXMKPj4gKy0gcmVzZXQtZ3Bpb3M6IHBoYW5kbGUgb2YgZ3Bp byBmb3IgcmVzZXQgbGluZQo+PiArICBUaGlzIHNob3VsZCBiZSA4bUEsIGdwaW8gY2FuIGJlIGNv bmZpZ3VyZWQgdXNpbmcgbXV4LCBwaW5jdHJsLCAKPj4gcGluY3RybC1uYW1lcwo+PiArLSBtb2Rl LWdwaW9zOiBwaGFuZGxlIG9mIHRoZSBncGlvIGZvciBjaG9vc2luZyB0aGUgbW9kZSBvZiB0aGUg Cj4+IGRpc3BsYXkKPj4gKyAgZm9yIHNpbmdsZSBEU0kgb3IgRHVhbCBEU0kKPj4gKyAgVGhpcyBz aG91bGQgYmUgbG93IGZvciBkdWFsIERTSSBhbmQgaGlnaCBmb3Igc2luZ2xlIERTSSBtb2RlCj4+ ICstIGRpc3BsYXktdGltaW5nczogTm9kZSBmb3IgdGhlIFBhbmVsIHRpbWluZ3MKPj4gKwo+IAo+ IFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIG9mLWdyYXBoIGJpbmRpbmdzIGhlcmUuIEVzcGVjaWFs bHksIHdoYXQgcG9ydCAjCj4gY29ycmVzcG9uZHMgdG8gbWFzdGVyIERTSSwgYW5kIHdoYXQgIyBm b3Igc2xhdmUgRFNJLgo+IAo+PiArRXhhbXBsZToKPj4gKwo+PiArCWRzaUBhZTk0MDAwIHsKPj4g KwkJcGFuZWxAMCB7Cj4+ICsJCQljb21wYXRpYmxlID0gInRydWx5LG50MzU1OTciOwo+PiArCQkJ cmVnID0gPDA+Owo+PiArCQkJdmRkYS1zdXBwbHkgPSA8JnBtODk5OF9sMTQ+Owo+PiArCQkJdmRp c3BwLXN1cHBseSA9IDwmbGFiX3JlZ3VsYXRvcj47Cj4+ICsJCQl2ZGlzcG4tc3VwcGx5ID0gPCZp YmJfcmVndWxhdG9yPjsKPj4gKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJzdXNwZW5k IjsKPj4gKwkJCXBpbmN0cmwtMCA9IDwmc2RlX2RzaV9hY3RpdmU+Owo+PiArCQkJcGluY3RybC0x ID0gPCZzZGVfZHNpX3N1c3BlbmQ+Owo+PiArCj4+ICsJCQlyZXNldC1ncGlvcyA9IDwmdGxtbSA2 IDA+Owo+PiArCQkJbW9kZS1ncGlvcyA9IDwmdGxtbSA1MiAwPjsKPj4gKwkJCWRpc3BsYXktdGlt aW5ncyB7Cj4+ICsJCQkJdGltaW5nMDogdGltaW5nLTAgewo+PiArCQkJCQljbG9jay1mcmVxdWVu Y3kgPSA8MjY4MzE2MTM4PjsKPj4gKwkJCQkJaGFjdGl2ZSA9IDwxNDQwPjsKPj4gKwkJCQkJdmFj dGllID0gPDI1NjA+Owo+PiArCQkJCQloZnJvbnQtcG9yY2ggPSA8MjAwPjsKPj4gKwkJCQkJaGJh Y2stcG9yY2ggPSA8NjQ+Owo+PiArCQkJCQloc3luYy1sZW4gPSA8MzI+Owo+PiArCQkJCQl2ZnJv bnQtcG9yY2ggPSA8OD47Cj4+ICsJCQkJCXZiYWNrLXBvcmNoID0gPDc+Owo+PiArCQkJCQl2c3lu Yy1sZW4gPSA8MT47Cj4+ICsJCQkJfTsKPj4gKwkJCX07Cj4+ICsJCX07Cj4gCj4gVGhlIGV4YW1w bGUgc2hvdWxkIHNwZWNpZnkgdGhlIHBvcnQgdG9vLgo+IAo+PiArCX07Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvS2NvbmZpZwo+PiBpbmRleCA5ODgwNDhlLi45ZjBjNDkwIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZwo+PiBAQCAtMTY4LDQgKzE2OCwxMSBAQCBjb25maWcgRFJNX1BBTkVMX1NJVFJPTklY X1NUNzc4OVYKPj4gICAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0 IGZvciB0aGUgU2l0cm9uaXgKPj4gICAJICBTVDc3ODlWIGNvbnRyb2xsZXIgZm9yIDI0MHgzMjAg TENEIHBhbmVscwo+PiAgICtjb25maWcgRFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EKPj4g Kwl0cmlzdGF0ZSAiVHJ1bHkgV1FYR0EiCj4+ICsJZGVwZW5kcyBvbiBPRgo+PiArCWRlcGVuZHMg b24gRFJNX01JUElfRFNJCj4+ICsJaGVscAo+PiArCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0 byBlbmFibGUgc3VwcG9ydCBmb3IgVHJ1bHkgTlQzNTU5NyBXUVhHQSAKPj4gRHVhbCBEU0kKPj4g KwkgIFZpZGVvIE1vZGUgcGFuZWwKPj4gICBlbmRtZW51Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2Vm aWxlCj4+IGluZGV4IDNkMmE4OGQuLmI1YjRiNjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9wYW5lbC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZp bGUKPj4gQEAgLTE3LDMgKzE3LDQgQEAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TRUlLT180M1dW RjFHKSArPSAKPj4gcGFuZWwtc2Vpa28tNDN3dmYxZy5vCj4+ICAgb2JqLSQoQ09ORklHX0RSTV9Q QU5FTF9TSEFSUF9MUTEwMVIxU1gwMSkgKz0gCj4+IHBhbmVsLXNoYXJwLWxxMTAxcjFzeDAxLm8K Pj4gICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NIQVJQX0xTMDQzVDFMRTAxKSArPSAKPj4gcGFu ZWwtc2hhcnAtbHMwNDN0MWxlMDEubwo+PiAgIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0lUUk9O SVhfU1Q3Nzg5VikgKz0gcGFuZWwtc2l0cm9uaXgtc3Q3Nzg5di5vCj4+ICtvYmotJChDT05GSUdf RFJNX1BBTkVMX1RSVUxZX05UMzU1OTdfV1FYR0EpICs9IHBhbmVsLXRydWx5LW50MzU1OTcubwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRydWx5LW50MzU1OTcu YyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5jCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjViZDVmZGMKPj4gLS0tIC9kZXYv bnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtdHJ1bHktbnQzNTU5Ny5j Cj4+IEBAIC0wLDAgKzEsNTk3IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAo+PiArLyogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIAo+PiBtb2RpZnkKPj4gKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFuZAo+PiArICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQo+PiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIu aD4KPj4gKwo+PiArI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+PiArI2luY2x1ZGUg PHZpZGVvL29mX3ZpZGVvbW9kZS5oPgo+PiArI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgo+ PiArCj4+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVs Lmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgo+PiArCj4+ICtzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IHJlZ3VsYXRvcl9uYW1lc1tdID0gewo+PiArCSJ2ZGRhIiwKPj4gKwki dmRpc3BwIiwKPj4gKwkidmRpc3BuIgo+PiArfTsKPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGxv bmcgcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tdID0gewo+PiArCTYyMDAwLAo+PiArCTEwMDAwMCwK Pj4gKwkxMDAwMDB9Owo+IAo+IGNvZGluZyBzdHlsZSBuaXQ6IHRoZSBjbG9zaW5nIGJyYWNrZXQg c2hvdWxkIGNvbWUgb24gdGhlIG5leHQgbGluZS4KPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGxv bmcgcmVndWxhdG9yX2Rpc2FibGVfbG9hZHNbXSA9IHsKPj4gKwk4MCwKPj4gKwkxMDAsCj4+ICsJ MTAwfTsKPj4gKwo+IAo+IFNhbWUgaGVyZS4KPiAKPj4gK3N0cnVjdCB0cnVseV93cXhnYSB7Cj4+ ICsJc3RydWN0IGRldmljZSAqZGV2Owo+PiArCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7Cj4+ICsK Pj4gKwlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSBzdXBwbGllc1tBUlJBWV9TSVpFKHJlZ3Vs YXRvcl9uYW1lcyldOwo+PiArCj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsKPj4g KwlzdHJ1Y3QgZ3Bpb19kZXNjICptb2RlX2dwaW87Cj4+ICsKPj4gKwlzdHJ1Y3QgYmFja2xpZ2h0 X2RldmljZSAqYmFja2xpZ2h0Owo+PiArCXN0cnVjdCB2aWRlb21vZGUgdm07Cj4+ICsKPj4gKwlz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2lbMl07Cj4+ICsKPj4gKwlib29sIHByZXBhcmVkOwo+ PiArCWJvb2wgZW5hYmxlZDsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRy dWx5X3dxeGdhICpwYW5lbF90b190cnVseV93cXhnYShzdHJ1Y3QgCj4+IGRybV9wYW5lbCAqcGFu ZWwpCj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihwYW5lbCwgc3RydWN0IHRydWx5X3dx eGdhLCBwYW5lbCk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfd3F4Z2FfcG93ZXJf b24oc3RydWN0IHRydWx5X3dxeGdhICpjdHgpCj4+ICt7Cj4+ICsJaW50IHJldCwgaTsKPj4gKwo+ PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpOyBpKyspIHsKPj4g KwkJcmV0ID0gcmVndWxhdG9yX3NldF9sb2FkKGN0eC0+c3VwcGxpZXNbaV0uY29uc3VtZXIsCj4+ ICsJCQkJcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tpXSk7Cj4gCj4gY29kaW5nIHN0eWxlIG5pdDog dGhlIGZ1bmMgYXJndW1lbnQgc2hvdWxkIGJlIGFsaWduZWQgd2l0aCB0aGUgb3BlbmluZwo+IHBh cmVudGhlc2lzLgo+IAo+PiArCQlpZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ ICsKPj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUoQVJSQVlfU0laRShjdHgtPnN1cHBs aWVzKSwgCj4+IGN0eC0+c3VwcGxpZXMpOwo+PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4g cmV0Owo+PiArCj4+ICsJbXNsZWVwKDIwKTsKPj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNl dF9ncGlvLCAxKTsKPj4gKwl1c2xlZXBfcmFuZ2UoMjAwMDAsIDIwMTAwKTsKPj4gKwlncGlvZF9z ZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPj4gKwl1c2xlZXBfcmFuZ2UoMjAwMDAsIDIw MTAwKTsKPj4gKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5yZXNldF9ncGlvLCAxKTsKPj4gKwl1c2xl ZXBfcmFuZ2UoNTAwMDAsIDUwMTAwKTsKPiAKPiBBY2NvcmlkbmcgdG8gRG9jdW1lbnRhdGlvbi90 aW1lcnMvdGltZXJzLWhvd3RvLnR4dCwgeW91J3JlIHN1cHBvc2VkIHRvCj4gdXNlIG1zbGVlcCBp ZiB0aGUgZGVsYXlzIGFyZSA+PSAyMCBtcy4KPiAKPj4gKwo+PiArCS8qIGR1YWwgcG9ydCAqLwo+ PiArCWdwaW9kX3NldF92YWx1ZShjdHgtPm1vZGVfZ3BpbywgMCk7Cj4gCj4gTWF5YmUgd2UgY2Fu IHNldCB0aGlzIGp1c3Qgb25jZSBkdXJpbmcgcHJvYmUsIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQK PiBzaW5nbGUgY2hhbm5lbCBEU0k/Cj4gCj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCB0cnVseV93cXhnYV9wb3dlcl9vZmYoc3RydWN0IHRydWx5X3dxeGdhICpj dHgpCj4+ICt7Cj4+ICsJaW50IHJldCwgaTsKPj4gKwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgt PnJlc2V0X2dwaW8sIDApOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4 LT5zdXBwbGllcyk7IGkrKykgewo+PiArCQlyZXQgPSByZWd1bGF0b3Jfc2V0X2xvYWQoY3R4LT5z dXBwbGllc1tpXS5jb25zdW1lciwKPj4gKwkJCQlyZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tpXSk7 Cj4+ICsJCWlmIChyZXQpCj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCXJldHVy biByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyksIAo+PiBj dHgtPnN1cHBsaWVzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB0cnVseV93cXhnYV9kaXNh YmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCB0cnVseV93cXhn YSAqY3R4ID0gcGFuZWxfdG9fdHJ1bHlfd3F4Z2EocGFuZWwpOwo+PiArCj4+ICsJaWYgKCFjdHgt PmVuYWJsZWQpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJaWYgKGN0eC0+YmFja2xpZ2h0KSB7 Cj4+ICsJCWN0eC0+YmFja2xpZ2h0LT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsK Pj4gKwkJYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoY3R4LT5iYWNrbGlnaHQpOwo+PiArCX0KPj4g Kwo+PiArCWN0eC0+ZW5hYmxlZCA9IGZhbHNlOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHRydWx5X3dxeGdhX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKPj4gK3sKPj4gKwlzdHJ1Y3QgdHJ1bHlfd3F4Z2EgKmN0eCA9IHBhbmVsX3RvX3RydWx5X3dx eGdhKHBhbmVsKTsKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICoqZHNpcyA9IGN0eC0+ZHNp Owo+PiArCWludCByZXQgPSAwLCBpOwo+PiArCj4+ICsJaWYgKCFjdHgtPnByZXBhcmVkKQo+PiAr CQlyZXR1cm4gMDsKPj4gKwo+PiArCWRzaXNbMF0tPm1vZGVfZmxhZ3MgPSAwOwo+PiArCWRzaXNb MV0tPm1vZGVfZmxhZ3MgPSAwOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IDI7IGkrKykKPj4g KwkJaWYgKG1pcGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vZmYoZHNpc1tpXSkgPCAwKQo+PiArCQkJ cmV0ID0gLUVDT01NOwo+PiArCW1zbGVlcCg3OCk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwg MjsgaSsrKQo+PiArCQlpZiAobWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUoZHNpc1tpXSkg PCAwKQo+PiArCQkJcmV0ID0gLUVDT01NOwo+PiArCW1zbGVlcCg3OCk7Cj4gCj4gQ291bGQgeW91 IGNyb3NzIGNoZWNrIGlmIHdlIG5lZWQgdGhlc2Ugc2xlZXBzIGZvciB1bnByZXBhcmUgdG9vPwo+ IAo+PiArCj4+ICsJdHJ1bHlfd3F4Z2FfcG93ZXJfb2ZmKGN0eCk7Cj4+ICsKPj4gKwljdHgtPnBy ZXBhcmVkID0gZmFsc2U7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArI2RlZmluZSBN QVhfTEVOCTUKPj4gK3N0cnVjdCB7Cj4+ICsJdTggY29tbWFuZHNbTUFYX0xFTl07Cj4+ICsJaW50 IHNpemU7Cj4+ICt9IHBhbmVsX2NtZHNbXSA9IHsgLyogQ01EMl9QMCAqLwo+PiArCQkgICB7IHsg MHhmZiwgMHgyMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweGZiLCAweDAxIH0sIDIgfSwKPj4gKwkJ ICAgeyB7IDB4MDAsIDB4MDEgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgwMSwgMHg1NSB9LCAyIH0s Cj4+ICsJCSAgIHsgeyAweDAyLCAweDQ1IH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MDUsIDB4NDAg fSwgMiB9LAo+PiArCQkgICB7IHsgMHgwNiwgMHgxOSB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDA3 LCAweDFlIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MGIsIDB4NzMgfSwgMiB9LAo+PiArCQkgICB7 IHsgMHgwYywgMHg3MyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDBlLCAweGIwIH0sIDIgfSwKPj4g KwkJICAgeyB7IDB4MGYsIDB4YWUgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgxMSwgMHhiOCB9LCAy IH0sCj4+ICsJCSAgIHsgeyAweDEzLCAweDAwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4NTgsIDB4 ODAgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg1OSwgMHgwMSB9LCAyIH0sCj4+ICsJCSAgIHsgeyAw eDVhLCAweDAwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4NWIsIDB4MDEgfSwgMiB9LAo+PiArCQkg ICB7IHsgMHg1YywgMHg4MCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDVkLCAweDgxIH0sIDIgfSwK Pj4gKwkJICAgeyB7IDB4NWUsIDB4MDAgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg1ZiwgMHgwMSB9 LCAyIH0sCj4+ICsJCSAgIHsgeyAweDcyLCAweDExIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4Njgs IDB4MDMgfSwgMiB9LAo+PiArCQkgICAvKiBDTUQyX1A0ICovCj4+ICsJCSAgIHsgeyAweEZGLCAw eDI0IH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4RkIsIDB4MDEgfSwgMiB9LAo+PiArCQkgICB7IHsg MHgwMCwgMHgxQyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDAxLCAweDBCIH0sIDIgfSwKPj4gKwkJ ICAgeyB7IDB4MDIsIDB4MEMgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgwMywgMHgwMSB9LCAyIH0s Cj4+ICsJCSAgIHsgeyAweDA0LCAweDBGIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MDUsIDB4MTAg fSwgMiB9LAo+PiArCQkgICB7IHsgMHgwNiwgMHgxMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDA3 LCAweDEwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MDgsIDB4ODkgfSwgMiB9LAo+PiArCQkgICB7 IHsgMHgwOSwgMHg4QSB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDBBLCAweDEzIH0sIDIgfSwKPj4g KwkJICAgeyB7IDB4MEIsIDB4MTMgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgwQywgMHgxNSB9LCAy IH0sCj4+ICsJCSAgIHsgeyAweDBELCAweDE1IH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MEUsIDB4 MTcgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgwRiwgMHgxNyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAw eDEwLCAweDFDIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MTEsIDB4MEIgfSwgMiB9LAo+PiArCQkg ICB7IHsgMHgxMiwgMHgwQyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDEzLCAweDAxIH0sIDIgfSwK Pj4gKwkJICAgeyB7IDB4MTQsIDB4MEYgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgxNSwgMHgxMCB9 LCAyIH0sCj4+ICsJCSAgIHsgeyAweDE2LCAweDEwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MTcs IDB4MTAgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgxOCwgMHg4OSB9LCAyIH0sCj4+ICsJCSAgIHsg eyAweDE5LCAweDhBIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MUEsIDB4MTMgfSwgMiB9LAo+PiAr CQkgICB7IHsgMHgxQiwgMHgxMyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDFDLCAweDE1IH0sIDIg fSwKPj4gKwkJICAgeyB7IDB4MUQsIDB4MTUgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgxRSwgMHgx NyB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDFGLCAweDE3IH0sIDIgfSwKPj4gKwkJICAgLyogU1RW ICovCj4+ICsJCSAgIHsgeyAweDIwLCAweDQwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MjEsIDB4 MDEgfSwgMiB9LAo+PiArCQkgICB7IHsgMHgyMiwgMHgwMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAw eDIzLCAweDQwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4MjQsIDB4NDAgfSwgMiB9LAo+PiArCQkg ICB7IHsgMHgyNSwgMHg2RCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDI2LCAweDQwIH0sIDIgfSwK Pj4gKwkJICAgeyB7IDB4MjcsIDB4NDAgfSwgMiB9LAo+PiArCQkgICAvKiBWZW5kICovCj4+ICsJ CSAgIHsgeyAweEUwLCAweDAwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4REMsIDB4MjEgfSwgMiB9 LAo+PiArCQkgICB7IHsgMHhERCwgMHgyMiB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweERFLCAweDA3 IH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4REYsIDB4MDcgfSwgMiB9LAo+PiArCQkgICB7IHsgMHhF MywgMHg2RCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweEUxLCAweDA3IH0sIDIgfSwKPj4gKwkJICAg eyB7IDB4RTIsIDB4MDcgfSwgMiB9LAo+PiArCQkgICAvKiBVRCAqLwo+PiArCQkgICB7IHsgMHgy OSwgMHhEOCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDJBLCAweDJBIH0sIDIgfSwKPj4gKwkJICAg LyogQ0xLICovCj4+ICsJCSAgIHsgeyAweDRCLCAweDAzIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4 NEMsIDB4MTEgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg0RCwgMHgxMCB9LCAyIH0sCj4+ICsJCSAg IHsgeyAweDRFLCAweDAxIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4NEYsIDB4MDEgfSwgMiB9LAo+ PiArCQkgICB7IHsgMHg1MCwgMHgxMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDUxLCAweDAwIH0s IDIgfSwKPj4gKwkJICAgeyB7IDB4NTIsIDB4ODAgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg1Mywg MHgwMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDU2LCAweDAwIH0sIDIgfSwKPj4gKwkJICAgeyB7 IDB4NTQsIDB4MDcgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg1OCwgMHgwNyB9LCAyIH0sCj4+ICsJ CSAgIHsgeyAweDU1LCAweDI1IH0sIDIgfSwKPj4gKwkJICAgLyogUmVzZXQgWERPTkIgKi8KPj4g KwkJICAgeyB7IDB4NUIsIDB4NDMgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg1QywgMHgwMCB9LCAy IH0sCj4+ICsJCSAgIHsgeyAweDVGLCAweDczIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4NjAsIDB4 NzMgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg2MywgMHgyMiB9LCAyIH0sCj4+ICsJCSAgIHsgeyAw eDY0LCAweDAwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4NjcsIDB4MDggfSwgMiB9LAo+PiArCQkg ICB7IHsgMHg2OCwgMHgwNCB9LCAyIH0sCj4+ICsJCSAgIC8qIFJlc29sdXRpb246MTQ0MHgyNTYw ICovCj4+ICsJCSAgIHsgeyAweDcyLCAweDAyIH0sIDIgfSwKPj4gKwkJICAgLyogbXV4ICovCj4+ ICsJCSAgIHsgeyAweDdBLCAweDgwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4N0IsIDB4OTEgfSwg MiB9LAo+PiArCQkgICB7IHsgMHg3QywgMHhEOCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDdELCAw eDYwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4N0YsIDB4MTUgfSwgMiB9LAo+PiArCQkgICB7IHsg MHg3NSwgMHgxNSB9LCAyIH0sCj4+ICsJCSAgIC8qIEFCT0ZGICovCj4+ICsJCSAgIHsgeyAweEIz LCAweEMwIH0sIDIgfSwKPj4gKwkJICAgeyB7IDB4QjQsIDB4MDAgfSwgMiB9LAo+PiArCQkgICB7 IHsgMHhCNSwgMHgwMCB9LCAyIH0sCj4+ICsJCSAgIC8qIFNvdXJjZSBFUSAqLwo+PiArCQkgICB7 IHsgMHg3OCwgMHgwMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDc5LCAweDAwIH0sIDIgfSwKPj4g KwkJICAgeyB7IDB4ODAsIDB4MDAgfSwgMiB9LAo+PiArCQkgICB7IHsgMHg4MywgMHgwMCB9LCAy IH0sCj4+ICsJCSAgIC8qIEZQIEJQICovCj4+ICsJCSAgIHsgeyAweDkzLCAweDBBIH0sIDIgfSwK Pj4gKwkJICAgeyB7IDB4OTQsIDB4MEEgfSwgMiB9LAo+PiArCQkgICAvKiBJbnZlcnNpb24gVHlw ZSAqLwo+PiArCQkgICB7IHsgMHg4QSwgMHgwMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDlCLCAw eEZGIH0sIDIgfSwKPj4gKwkJICAgLyogSU1HU1dBUCA9MSBAUG9ydFN3YXA9MSAqLwo+PiArCQkg ICB7IHsgMHg5RCwgMHhCMCB9LCAyIH0sCj4+ICsJCSAgIHsgeyAweDlGLCAweDYzIH0sIDIgfSwK Pj4gKwkJICAgeyB7IDB4OTgsIDB4MTAgfSwgMiB9LAo+PiArCQkgICAvKiBGUk0gKi8KPj4gKwkJ ICAgeyB7IDB4RUMsIDB4MDAgfSwgMiB9LAo+PiArCQkgICAvKiBDTUQxICovCj4+ICsJCSAgIHsg eyAweEZGLCAweDEwIH0sIDIgfSwKPj4gKwkJICAgIC8qIFZCUCtWU0E9LFZGUCA9IDEwSCAqLwo+ PiArCQkgICB7IHsgMHgzQiwgMHgwMywgMHgwQSwgMHgwQSwgfSwgNCB9LAo+PiArCQkgICAvKiBG VEUgb24gKi8KPj4gKwkJICAgeyB7IDB4MzUsIDB4MDAgfSwgMiB9LAo+PiArCQkgICAvKiBFTl9C SyA9MShhdXRvIGJsYWNrKSAqLwo+PiArCQkgICB7IHsgMHhFNSwgMHgwMSB9LCAyIH0sCj4+ICsJ CSAgIC8qIENNRCBtb2RlKDEwKSBWRE8gbW9kZSgwMykgKi8KPj4gKwkJICAgeyB7IDB4QkIsIDB4 MDMgfSwgMiB9LAo+PiArCQkgICAvKiBOb24gUmVsb2FkIE1UUCAqLwo+PiArCQkgICB7IHsgMHhG QiwgMHgwMSB9LCAyIH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHRydWx5X3dxeGdhX3By ZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IHRydWx5X3dx eGdhICpjdHggPSBwYW5lbF90b190cnVseV93cXhnYShwYW5lbCk7Cj4+ICsJc3RydWN0IG1pcGlf ZHNpX2RldmljZSAqKmRzaXMgPSBjdHgtPmRzaTsKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNl ICpkOwo+PiArCWludCByZXQsIGksIGo7Cj4+ICsKPj4gKwlpZiAoY3R4LT5wcmVwYXJlZCkKPj4g KwkJcmV0dXJuIDA7Cj4+ICsKPj4gKwlyZXQgPSB0cnVseV93cXhnYV9wb3dlcl9vbihjdHgpOwo+ PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJZHNpc1swXS0+bW9k ZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPj4gKwlkc2lzWzFdLT5tb2RlX2ZsYWdzIHw9 IE1JUElfRFNJX01PREVfTFBNOwo+PiArCj4+ICsJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUo cGFuZWxfY21kcyk7IGorKykgewo+PiArCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7Cj4+ICsJ CQlkID0gZHNpc1tpXTsKPj4gKwkJCXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNp c1tpXSwKPj4gKwkJCQkJcGFuZWxfY21kc1tqXS5jb21tYW5kcywKPj4gKwkJCQkJcGFuZWxfY21k c1tqXS5zaXplKTsKPj4gKwkJCWlmIChyZXQgPCAwKSB7Cj4+ICsJCQkJZGV2X2VycihjdHgtPmRl diwgImZhaWxlZCB0byBjbWQgbm8gJWQsIGVycjogJWRcbiIsCj4+ICsJCQkJCQlqLCByZXQpOwo+ PiArCQkJCXJldHVybiByZXQ7Cj4+ICsJCQl9Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwo+IAo+ IFVubmVjZXNzYXJ5IGV4dHJhIGJsYW5rIGhlcmUuCj4gCj4+ICsJZm9yIChpID0gMDsgaSA8IDI7 IGkrKykKPj4gKwkJaWYgKG1pcGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoZHNpc1tpXSkgPCAw KSB7Cj4+ICsJCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVkIHRvIGV4aXQgc2xlZXAgbW9kZVxu Iik7Cj4+ICsJCQlyZXR1cm4gLUVDT01NOwo+PiArCQl9Cj4+ICsJbXNsZWVwKDc4KTsKPj4gKwo+ PiArCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspCj4+ICsJCWlmIChtaXBpX2RzaV9kY3Nfc2V0X2Rp c3BsYXlfb24oZHNpc1tpXSkgPCAwKSB7Cj4+ICsJCQlkZXZfZXJyKGN0eC0+ZGV2LCAiZmFpbGVk IHRvIHNlbmQgZGlzcGxheSBvblxuIik7Cj4+ICsJCQlyZXR1cm4gLUVDT01NOwo+PiArCQl9Cj4+ ICsJbXNsZWVwKDc4KTsKPj4gKwo+PiArCWN0eC0+cHJlcGFyZWQgPSB0cnVlOwo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfd3F4Z2FfZW5hYmxlKHN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCB0cnVseV93cXhnYSAqY3R4 ID0gcGFuZWxfdG9fdHJ1bHlfd3F4Z2EocGFuZWwpOwo+PiArCj4+ICsJaWYgKGN0eC0+ZW5hYmxl ZCkKPj4gKwkJcmV0dXJuIDA7Cj4+ICsKPj4gKwlpZiAoY3R4LT5iYWNrbGlnaHQpIHsKPj4gKwkJ Y3R4LT5iYWNrbGlnaHQtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKPj4gKwkJYmFj a2xpZ2h0X3VwZGF0ZV9zdGF0dXMoY3R4LT5iYWNrbGlnaHQpOwo+PiArCX0KPj4gKwljdHgtPmVu YWJsZWQgPSB0cnVlOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgdHJ1bHlfd3F4Z2FfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+ PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+ PiArCXN0cnVjdCB0cnVseV93cXhnYSAqY3R4ID0gcGFuZWxfdG9fdHJ1bHlfd3F4Z2EocGFuZWwp Owo+PiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+PiArCj4+ICsJbW9kZSA9IGRy bV9tb2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7Cj4+ICsJaWYgKCFtb2RlKSB7Cj4+ICsJCWRl dl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGRpc3BsYXkgbW9kZVxuIik7 Cj4+ICsJCXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWRybV9kaXNwbGF5X21vZGVfZnJvbV92 aWRlb21vZGUoJmN0eC0+dm0sIG1vZGUpOwo+PiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndp ZHRoX21tID0gNzQ7Cj4+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gMTMx Owo+PiArCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RFX1RZUEVf UFJFRkVSUkVEOwo+PiArCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPj4g Kwo+PiArCXJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9w YW5lbF9mdW5jcyB0cnVseV93cXhnYV9kcm1fZnVuY3MgPSB7Cj4+ICsJLmRpc2FibGUgPSB0cnVs eV93cXhnYV9kaXNhYmxlLAo+PiArCS51bnByZXBhcmUgPSB0cnVseV93cXhnYV91bnByZXBhcmUs Cj4+ICsJLnByZXBhcmUgPSB0cnVseV93cXhnYV9wcmVwYXJlLAo+PiArCS5lbmFibGUgPSB0cnVs eV93cXhnYV9lbmFibGUsCj4+ICsJLmdldF9tb2RlcyA9IHRydWx5X3dxeGdhX2dldF9tb2RlcywK Pj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfd3F4Z2FfcGFuZWxfYWRkKHN0cnVjdCB0 cnVseV93cXhnYSAqY3R4KQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2 Owo+PiArCWludCByZXQsIGk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShj dHgtPnN1cHBsaWVzKTsgaSsrKQo+PiArCQljdHgtPnN1cHBsaWVzW2ldLnN1cHBseSA9IHJlZ3Vs YXRvcl9uYW1lc1tpXTsKPj4gKwo+PiArCXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRl diwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwKPj4gKwkJCQkgICAgICBjdHgtPnN1cHBsaWVz KTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCWN0eC0+cmVz ZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0hJR0gpOwo+ PiArCWlmIChJU19FUlIoY3R4LT5yZXNldF9ncGlvKSkgewo+PiArCQlkZXZfZXJyKGRldiwgImNh bm5vdCBnZXQgcmVzZXQtZ3Bpb3MgJWxkXG4iLAo+PiArCQkJUFRSX0VSUihjdHgtPnJlc2V0X2dw aW8pKTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPj4gKwl9Cj4+ICsK Pj4gKwljdHgtPm1vZGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgIm1vZGUiLCBHUElPRF9P VVRfTE9XKTsKPj4gKwlpZiAoSVNfRVJSKGN0eC0+bW9kZV9ncGlvKSkgewo+PiArCQlkZXZfZXJy KGRldiwgImNhbm5vdCBnZXQgbW9kZSBncGlvICVsZFxuIiwKPj4gKwkJCVBUUl9FUlIoY3R4LT5t b2RlX2dwaW8pKTsKPj4gKwkJY3R4LT5tb2RlX2dwaW8gPSBOVUxMOwo+PiArCQlyZXR1cm4gUFRS X0VSUihjdHgtPm1vZGVfZ3Bpbyk7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gcGluY3RybF9wbV9z ZWxlY3RfZGVmYXVsdF9zdGF0ZShkZXYpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJZGV2X2Vycihk ZXYsICIlczogZmFpbGVkIHRvIHNldCBwaW5jdHJsIGRlZmF1bHQgc3RhdGUsICVkXG4iLAo+PiAr CQkJX19mdW5jX18sIHJldCk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+IAo+IFRoaXMgbWln aHQgYmUgdW5uZWNlc3NhcnksIEkgdGhpbmsgdGhpcyBtYXkgYmUgZG9uZSBpbgo+IGRyaXZlcnMv YmFzZS9kZC5jLiBJJ20gbm90IGEgMTAwJSBzdXJlIHRob3VnaC4KPiAKPj4gKwo+PiArCXJldCA9 IG9mX2dldF92aWRlb21vZGUoZGV2LT5vZl9ub2RlLCAmY3R4LT52bSwgMCk7Cj4+ICsJaWYgKHJl dCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlkcm1fcGFuZWxfaW5pdCgmY3R4LT5w YW5lbCk7Cj4+ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7Cj4+ICsJY3R4LT5wYW5lbC5mdW5jcyA9 ICZ0cnVseV93cXhnYV9kcm1fZnVuY3M7Cj4+ICsJZHJtX3BhbmVsX2FkZCgmY3R4LT5wYW5lbCk7 Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdHJ1bHlfd3F4 Z2FfcGFuZWxfZGVsKHN0cnVjdCB0cnVseV93cXhnYSAqY3R4KQo+PiArewo+PiArCWlmIChjdHgt PnBhbmVsLmRldikKPj4gKwkJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfd3F4Z2FfcHJvYmUoc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpKQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZkc2ktPmRldjsKPj4gKwlz dHJ1Y3QgdHJ1bHlfd3F4Z2EgKmN0eDsKPj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpzZWNv bmRhcnkgPSBOVUxMOwo+IAo+IFdlIGRvbid0IG5lZWQgdG8gc2V0IGl0IHRvIE5VTEwgaGVyZS4K PiAKPj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRzaTE7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2hv c3QgKmRzaTFfaG9zdDsKPj4gKwlpbnQgcmV0ID0gMDsKPj4gKwljb25zdCBzdHJ1Y3QgbWlwaV9k c2lfZGV2aWNlX2luZm8gaW5mbyA9IHsudHlwZSA9ICJ0cnVseW50MzU1OTciLAo+PiArCQkuY2hh bm5lbCA9IDAsCj4+ICsJCS5ub2RlID0gTlVMTCwKPj4gKwl9Owo+PiArCj4+ICsJLyogVGhpcyBk ZXZpY2UgcmVwcmVzZW50cyBpdHNlbGYgYXMgb25lIHdpdGgKPj4gKwkgKiB0d28gaW5wdXQgcG9y dHMgd2hpY2ggYXJlIGZlZCBieSB0aGUgb3V0cHV0Cj4+ICsJICogcG9ydHMgb2YgdGhlIHR3byBE U0kgY29udHJvbGxlcnMgLiBUaGUgRFNJMAo+PiArCSAqIGlzIHRoZSBtYXN0ZXIgY29udHJvbGxl ciBhbmQgaGFzIG1vc3Qgb2YgdGhlCj4+ICsJICogcGFuZWwgcmVsYXRlZCBpbmZvIGluIGl0cyBj aGlsZCBub2RlLgo+PiArCSAqLwo+PiArCj4+ICsJLyogY29uZmlndXJlIG1hc3RlciBEU0kgZGV2 aWNlICovCj4+ICsJZHNpLT5sYW5lcyA9IDQ7Cj4+ICsJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9G TVRfUkdCODg4Owo+PiArCWRzaS0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01PREVfVklERU8gfCAK Pj4gTUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVMgfAo+PiArCU1JUElfRFNJX01PREVfTFBN Owo+IAo+IENvdWxkIHdlIG1vdmUgdGhlIG1hc3RlciBEU0kgc2V0dGluZ3MganVzdCBiZWZvcmUg d2UgY2FsbAo+IG1pcGlfZHNpX2F0dGFjaCgpIG9uIGl0Pwo+IAo+PiArCj4+ICsJLyogZ2V0IHRo ZSBkc2kxIG91dHB1dCBwb3J0IG5vZGUgKi8KPj4gKwlkc2kxID0gb2ZfZ3JhcGhfZ2V0X3JlbW90 ZV9ub2RlKGRzaS0+ZGV2Lm9mX25vZGUsIDEsIC0xKTsKPj4gKwlpZiAoIWRzaTEpIHsKPj4gKwkJ ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHJlbW90ZSBub2RlXG4iKVlvdSBjb3VsZCBtZW50 aW9uIAo+PiAncmVtb3RlIG5vZGUgZm9yIHNlY29uZGFyeSBEU0knIGZvciB0aGUgc2FrZSBvZgo+ IGNsYXJpdHkuCj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCX0KPj4gKwo+PiArCWRzaTFfaG9z dCA9IG9mX2ZpbmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlKGRzaTEpOwo+PiArCWlmICghZHNpMV9o b3N0KSB7Cj4+ICsJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGZpbmQgZHNpIGhvc3RcbiIpOwo+ PiArCQlyZXQgPSAtRVBST0JFX0RFRkVSOwo+PiArCQlnb3RvIGVycl9ob3N0Owo+PiArCX0KPj4g Kwo+PiArCS8qIHJlZ2lzdGVyIHRoZSBzZWNvbmQgRFNJIGRldmljZSAqLwo+PiArCXNlY29uZGFy eSA9IG1pcGlfZHNpX2RldmljZV9yZWdpc3Rlcl9mdWxsKGRzaTFfaG9zdCwKPj4gKwkJJmluZm8p Owo+IAo+IGNvZGluZyBzdHlsZSBuaXQ6IG5lZWRzIHRvIGJlIGFsaWduZWQgd2l0aCBvcGVuaW5n IHBhcmVudGhlc2lzLgo+IAo+PiArCj4+ICsJaWYgKElTX0VSUihzZWNvbmRhcnkpKSB7Cj4+ICsJ CWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBkc2kgZGV2aWNlXG4iKTsKPj4gKwkJcmV0 ID0gUFRSX0VSUihkc2kpOwo+PiArCQlnb3RvIGVycl9kc2lfZGV2aWNlOwo+PiArCX0KPj4gKwo+ PiArCS8qIGNvbmZpZ3VyZSBzZWNvbmRhcnkgRFNJIGRldmljZSAqLwo+PiArCXNlY29uZGFyeS0+ bGFuZXMgPSA0Owo+PiArCXNlY29uZGFyeS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsK Pj4gKwlzZWNvbmRhcnktPm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwKPj4gKwkJ TUlQSV9EU0lfQ0xPQ0tfTk9OX0NPTlRJTlVPVVMgfAo+PiArCQlNSVBJX0RTSV9NT0RFX0xQTTsK PiAKPiBUaGlzIGNvdWxkIGJlIHNpbWlsYXJseSBtb3ZlZCBqdXN0IGJlZm9yZSBjYWxsaW5nIG1p cGlfZHNpX2F0dGFjaCgpCj4gb24gdGhlIHNlY29uZGFyeSBEU0kgZGV2aWNlLgo+IAo+PiArCj4+ ICsJY3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPj4g Kwo+IAo+IEFsbG9jYXRpbmcgY29udGV4dCBpcyBnZW5lcmFsbHkgdGhlIGZpcnN0IHRoaW5nIGRv bmUgaW4gcHJvYmUuIEl0IAo+IHNob3VsZAo+IHNpbXBsaWZ5IHRoZSBlcnJvciBoYW5kbGluZyBh IGJpdCB0b28uCj4gCj4+ICsJaWYgKCFjdHgpIHsKPj4gKwkJcmV0ID0gLUVOT01FTTsKPj4gKwkJ Z290byBlcnJfZHNpX2N0eDsKPj4gKwl9Cj4+ICsKPj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShk c2ksIGN0eCk7Cj4+ICsKPj4gKwljdHgtPmRldiA9IGRldjsKPj4gKwljdHgtPmRzaVswXSA9IGRz aTsKPj4gKwljdHgtPmRzaVsxXSA9IHNlY29uZGFyeTsKPj4gKwo+PiArCXJldCA9IHRydWx5X3dx eGdhX3BhbmVsX2FkZChjdHgpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gYWRkIHBhbmVsXG4iKTsKPj4gKwkJZ290byBlcnJfcGFuZWxfYWRkOwo+PiArCX0K Pj4gKwo+PiArCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOwo+PiArCWlmIChyZXQgPCAwKSB7 Cj4+ICsJCWRldl9lcnIoZGV2LCAibWFzdGVyIGRzaSBhdHRhY2ggZmFpbGVkXG4iKTsKPj4gKwkJ Z290byBlcnJfZHNpX2F0dGFjaDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSBtaXBpX2RzaV9hdHRh Y2goc2Vjb25kYXJ5KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlkZXZfZXJyKGRldiwgIm1p cGlfZHNpX2F0dGFjaCBvbiBzZWNvbmRhcnkgZmFpbGVkXG4iKTsKPj4gKwkJZ290byBlcnJfZHNp X2F0dGFjaF9zZWM7Cj4+ICsJfQo+PiArCj4+ICsJb2Zfbm9kZV9wdXQoZHNpMSk7Cj4gCj4gVGhp cyBzaG91bGQgYmUgZG9uZSBqdXN0IGFmdGVyIHdlIGNhbGwgb2ZfZmluZF9taXBpX2RzaV9ob3N0 X2J5X25vZGUoKQo+IGZvciBjbGFyaXR5Lgo+IAo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4g K2Vycl9kc2lfYXR0YWNoX3NlYzoKPj4gKwltaXBpX2RzaV9kZXRhY2goY3R4LT5kc2lbMF0pOwo+ PiArZXJyX2RzaV9hdHRhY2g6Cj4+ICsJdHJ1bHlfd3F4Z2FfcGFuZWxfZGVsKGN0eCk7Cj4+ICtl cnJfcGFuZWxfYWRkOgo+PiArCW1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKHNlY29uZGFyeSk7 Cj4+ICtlcnJfZHNpX2N0eDoKPj4gK2Vycl9kc2lfZGV2aWNlOgo+PiArZXJyX2hvc3Q6Cj4+ICsJ b2Zfbm9kZV9wdXQoZHNpMSk7Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IGludCB0cnVseV93cXhnYV9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpKQo+PiAr ewo+PiArCXN0cnVjdCB0cnVseV93cXhnYSAqY3R4ID0gbWlwaV9kc2lfZ2V0X2RydmRhdGEoZHNp KTsKPj4gKwo+PiArCWlmIChjdHgpIHsKPiAKPiBJIGRvbid0IHRoaW5rIHdlIG5lZWQgdGhlIGNo ZWNrIGFib3ZlLgo+PiArCQlpZiAoY3R4LT5kc2lbMF0pCj4+ICsJCQltaXBpX2RzaV9kZXRhY2go Y3R4LT5kc2lbMF0pOwo+PiArCQlpZiAoY3R4LT5kc2lbMV0pIHsKPj4gKwkJCW1pcGlfZHNpX2Rl dGFjaChjdHgtPmRzaVsxXSk7Cj4+ICsJCQltaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3RlcihjdHgt PmRzaVsxXSk7Cj4+ICsJCX0KPj4gKwkJdHJ1bHlfd3F4Z2FfcGFuZWxfZGVsKGN0eCk7Cj4+ICsJ CWtmcmVlKGN0eCk7Cj4gCj4gWW91IHNob3VsZG4ndCBmcmVlIHN0dWZmIHRoYXQncyBhbGxvY2F0 ZWQgdXNpbmcgZGV2bV8gZnVuY3MuCj4gCj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRydWx5X3dxeGdhX29m X21hdGNoW10gPSB7Cj4+ICsJeyAuY29tcGF0aWJsZSA9ICJ0cnVseSxudDM1NTk3IiwgfSwKPj4g Kwl7IH0KPj4gK307Cj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0cnVseV93cXhnYV9vZl9t YXRjaCk7Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgbWlwaV9kc2lfZHJpdmVyIHRydWx5X3dxeGdh X2RyaXZlciA9IHsKPj4gKwkuZHJpdmVyID0gewo+PiArCQkubmFtZSA9ICJwYW5lbF90cnVseV9u dDM1NTk3IiwKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gdHJ1bHlfd3F4Z2Ffb2ZfbWF0Y2gsCj4+ ICsJfSwKPj4gKwkucHJvYmUgPSB0cnVseV93cXhnYV9wcm9iZSwKPj4gKwkucmVtb3ZlID0gdHJ1 bHlfd3F4Z2FfcmVtb3ZlLAo+PiArfTsKPj4gK21vZHVsZV9taXBpX2RzaV9kcml2ZXIodHJ1bHlf d3F4Z2FfZHJpdmVyKTsKPj4gKwo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJ0cnVseSBudDM1NTk3 IERTSSBQYW5lbCBEcml2ZXIiKTsKPiAKPiBzL3RydWx5IG50MzU1OTcvVHJ1bHkgTlQzNTU5Nwo+ IAo+IFRoZSBkcml2ZXIgbG9va3MgaW4gZ29vZCBzaGFwZSBub3cuIFRoYW5rcyBmb3Igd29ya2lu ZyBvbiBpdC4KPiAKPiBSZWdhcmRzLAo+IEFyY2hpdAo+IAo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOwo+PiAKPiAtLQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRo ZSBsaW5lICJ1bnN1YnNjcmliZSAKPiBsaW51eC1hcm0tbXNtIiBpbgo+IHRoZSBib2R5IG9mIGEg bWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5m byBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=