From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abhinav Kumar Subject: Re: [PATCH v7 1/2] drm/panel: Add support for Truly NT35597 panel driver Date: Thu, 20 Sep 2018 10:18:55 -0700 Message-ID: References: <1537412140-5252-1-git-send-email-abhinavk@codeaurora.org> <20180920155226.GC188300@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180920155226.GC188300@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, bjorn.andersson@linaro.org, thierry.reding@gmail.com, seanpaul@chromium.org, hoegsberg@google.com, chandanu@codeaurora.org List-Id: linux-arm-msm@vger.kernel.org SGkgU2VhbgoKU3VyZSwgSSB3aWxsIGFkZHJlc3MgdGhlc2UgaW4gdjguCgpUaGFua3MKCkFiaGlu YXYKT24gMjAxOC0wOS0yMCAwODo1MiwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFdlZCwgU2VwIDE5 LCAyMDE4IGF0IDA3OjU1OjM5UE0gLTA3MDAsIEFiaGluYXYgS3VtYXIgd3JvdGU6Cj4+IEZyb206 ICJhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZyIgPGFiaGluYXZrQGNvZGVhdXJvcmEub3JnPgo+PiAK Pj4gQWRkIHN1cHBvcnQgZm9yIFRydWx5IE5UMzU1OTcgcGFuZWwgZHJpdmVyIHVzZWQKPj4gaW4g TVNNIHJlZmVyZW5jZSBwbGF0Zm9ybXMuCj4+IAo+PiBUaGlzIHBhbmVsIGRyaXZlciBzdXBwb3J0 cyBib3RoIHNpbmdsZSBEU0kgYW5kIGR1YWwgRFNJCj4+IG1vZGVzLgo+PiAKPj4gSG93ZXZlciwg dGhpcyBwYXRjaCBzZXJpZXMgYWRkcyBzdXBwb3J0IG9ubHkgZm9yCj4+IGR1YWwgRFNJIG1vZGUu Cj4+IAo+PiBDaGFuZ2VzIGluIHY3Ogo+PiAtIE1ha2UgdGhlIHBhbmVsIGNvbW1hbmRzLCBuYW1l IGFuZCBtb2RlIGFzIGNvbnN0Cj4+IC0gQ29uZmlndXJlIHRoZSByZXNldCBwaW4gYXMgYWN0aXZl IGxvdyBpbiB0aGUgZGV2aWNlCj4+ICAgdHJlZSBhbmQgYWRqdXN0IHRoZSByZXNldCBzZXF1ZW5j ZQo+PiAtIFJlbW92ZSB0aGUgbWFjcm9zIHRvIGNhbGwgdGhlIGZ1bmN0aW9ucwo+PiAtIEZpeCBy ZXR1cm4gY29uZGl0aW9ucyBpbiB0aGUgcGFuZWwgcHJlcGFyZSBjYWxsCj4+IC0gQ2hhbmdlIHRo ZSBjb21wYXRpYmxlIHN0cmluZyB0byBoYXZlIG9ubHkgdGhlCj4+ICAgcGFuZWwgZHJpdmVyIGFu ZCB0aGUgcmVzb2x1dGlvbiBkZXRhaWxzCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFu ZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+PiBTaWduZWQtb2ZmLWJ5OiBBYmhpbmF2IEt1 bWFyIDxhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZz4KPiAKPiBIZXkgQWJoaW5hdiwKPiBUaGFua3Mg Zm9yIHJldmlzaW5nIHRoZSBwYXRjaC4gSSdtIGEgYml0IHRvcm4gb24gc2VuZGluZyBtb3JlIGZl ZWRiYWNrIAo+IHNpbmNlCj4geW91J3JlIGFscmVhZHkgb24gdjcgYW5kIGl0J3MgYmVlbiBvbi1s aXN0IGZvciBhIHdoaWxlLiBVbmZvcnR1bmF0ZWx5IEkgCj4gdGhpbmsKPiB0aGVyZSdzIGVub3Vn aCB0byB3YXJyYW50IGEgcmVzcGluLCBzbyBhcG9sb2dpZXMgZm9yIGtlZXBpbmcgdGhpcyB0aGlu ZyAKPiBpbgo+IGxpbWJvLCBidXQgaG9wZWZ1bGx5IHdlJ3JlIGNvbnZlcmdpbmcuCj4gCj4+IC0t LQo+PiAgZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcgICAgICAgICAgICAgICB8ICAgOCAr Cj4+ICBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsK Pj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC10cnVseS1udDM1NTk3LmMgfCA3MDYgCj4+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gIDMgZmlsZXMgY2hhbmdlZCwgNzE1IGlu c2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFuZWwv cGFuZWwtdHJ1bHktbnQzNTU5Ny5jCj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPj4gaW5k ZXggNjAyMGMzMC4uN2FlNzRjMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVs L0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPj4gQEAgLTE4 Niw0ICsxODYsMTIgQEAgY29uZmlnIERSTV9QQU5FTF9TSVRST05JWF9TVDc3ODlWCj4+ICAJICBT YXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU2l0cm9uaXgK Pj4gIAkgIFNUNzc4OVYgY29udHJvbGxlciBmb3IgMjQweDMyMCBMQ0QgcGFuZWxzCj4+IAo+PiAr Y29uZmlnIERSTV9QQU5FTF9UUlVMWV9OVDM1NTk3X1dRWEdBCj4+ICsJdHJpc3RhdGUgIlRydWx5 IFdRWEdBIgo+PiArCWRlcGVuZHMgb24gT0YKPj4gKwlkZXBlbmRzIG9uIERSTV9NSVBJX0RTSQo+ PiArCXNlbGVjdCBWSURFT01PREVfSEVMUEVSUwo+IAo+IEkgZG9uJ3QgdGhpbmsgeW91J3JlIHVz aW5nIHRoZSB2aWRlb21vZGUgc3R1ZmYgYW55IGxvbmdlcj8KPiAKPj4gKwloZWxwCj4+ICsJICBT YXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBUcnVseSBOVDM1NTk3 IFdRWEdBIAo+PiBEdWFsIERTSQo+PiArCSAgVmlkZW8gTW9kZSBwYW5lbAo+PiAgZW5kbWVudQo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIAo+PiBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQo+PiBpbmRleCA1Y2NhYWE5Li44MGZkMTlmIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+IEBAIC0xOSwzICsxOSw0IEBAIG9iai0kKENPTkZJ R19EUk1fUEFORUxfU0VJS09fNDNXVkYxRykgKz0gCj4+IHBhbmVsLXNlaWtvLTQzd3ZmMWcubwo+ PiAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUTEwMVIxU1gwMSkgKz0gCj4+IHBhbmVs LXNoYXJwLWxxMTAxcjFzeDAxLm8KPj4gIG9iai0kKENPTkZJR19EUk1fUEFORUxfU0hBUlBfTFMw NDNUMUxFMDEpICs9IAo+PiBwYW5lbC1zaGFycC1sczA0M3QxbGUwMS5vCj4+ICBvYmotJChDT05G SUdfRFJNX1BBTkVMX1NJVFJPTklYX1NUNzc4OVYpICs9IHBhbmVsLXNpdHJvbml4LXN0Nzc4OXYu bwo+PiArb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9UUlVMWV9OVDM1NTk3X1dRWEdBKSArPSBwYW5l bC10cnVseS1udDM1NTk3Lm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9w YW5lbC10cnVseS1udDM1NTk3LmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRy dWx5LW50MzU1OTcuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5h MDcwZDBmCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh bmVsLXRydWx5LW50MzU1OTcuYwo+PiBAQCAtMCwwICsxLDcwNiBAQAo+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgs IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+PiArICovCj4+ICsK Pj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv b2ZfZ3JhcGguaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv b2ZfZGV2aWNlLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPj4g KyNpbmNsdWRlIDx2aWRlby9vZl92aWRlb21vZGUuaD4KPj4gKyNpbmNsdWRlIDx2aWRlby92aWRl b21vZGUuaD4KPiAKPiBTYW1lIGNvbW1lbnQgaGVyZSByZTogdmlkZW9tb2RlCj4gCj4+ICsKPj4g KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPj4g KyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBjaGFy ICogY29uc3QgcmVndWxhdG9yX25hbWVzW10gPSB7Cj4+ICsJInZkZGEiLAo+PiArCSJ2ZGlzcHAi LAo+PiArCSJ2ZGlzcG4iLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY29u c3QgcmVndWxhdG9yX2VuYWJsZV9sb2Fkc1tdID0gewo+PiArCTYyMDAwLAo+PiArCTEwMDAwMCwK Pj4gKwkxMDAwMDAsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjb25zdCBy ZWd1bGF0b3JfZGlzYWJsZV9sb2Fkc1tdID0gewo+PiArCTgwLAo+PiArCTEwMCwKPj4gKwkxMDAs Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgbnQzNTU5N19jb25maWcgewo+PiArCXUzMiB3aWR0aF9t bTsKPj4gKwl1MzIgaGVpZ2h0X21tOwo+PiArCWNvbnN0IGNoYXIgKnBhbmVsX25hbWU7Cj4+ICsJ Y29uc3Qgdm9pZCAqcGFuZWxfb25fY21kczsKPj4gKwl1MzIgbnVtX29uX2NtZHM7Cj4+ICsJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IHRy dWx5X250MzU1OTcgewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPj4gKwlzdHJ1Y3QgZHJtX3Bh bmVsIHBhbmVsOwo+PiArCj4+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNb QVJSQVlfU0laRShyZWd1bGF0b3JfbmFtZXMpXTsKPj4gKwo+PiArCXN0cnVjdCBncGlvX2Rlc2Mg KnJlc2V0X2dwaW87Cj4+ICsJc3RydWN0IGdwaW9fZGVzYyAqbW9kZV9ncGlvOwo+PiArCj4+ICsJ c3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodDsKPj4gKwo+PiArCXN0cnVjdCBtaXBp X2RzaV9kZXZpY2UgKmRzaVsyXTsKPj4gKwo+PiArCWNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZp ZyAqY29uZmlnOwo+PiArCWJvb2wgcHJlcGFyZWQ7Cj4+ICsJYm9vbCBlbmFibGVkOwo+PiArfTsK Pj4gKwo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqcGFuZWxfdG9fY3R4 KHN0cnVjdCBkcm1fcGFuZWwgCj4+ICpwYW5lbCkKPj4gK3sKPj4gKwlyZXR1cm4gY29udGFpbmVy X29mKHBhbmVsLCBzdHJ1Y3QgdHJ1bHlfbnQzNTU5NywgcGFuZWwpOwo+PiArfQo+PiArCj4+ICsj ZGVmaW5lIE1BWF9MRU4JNQo+IAo+IEFzaWRlIGZyb20gdGhlIGFtYmlndW91cyBuYW1lLCB0aGlz IGlzIG9ubHkgdXNlZCBpbiBvbmUgcGxhY2UgYW5kIHNlZW1zIAo+IGxpa2UKPiBpdCdzIDEgYnl0 ZSB0b28gYmlnLiBDb3VsZCB5b3UgcGxlYXNlIGp1c3QgZGVjbGFyZSBjb21tYW5kcyBhcyAndTgg Cj4gY29tbWFuZHNbNF07Jwo+IGJlbG93Pwo+IAo+PiArI2RlZmluZSBTSE9SVF9QQUNLRVQgMgo+ PiArI2RlZmluZSBMT05HX1BBQ0tFVCA0Cj4gCj4gU0hPUlRfUEFDS0VUIGFuZCBMT05HX1BBQ0tF VCBhcmVuJ3QgdXNlZCBhbnl3aGVyZQo+IAo+PiArCj4+ICtzdHJ1Y3QgY21kX3NldCB7Cj4+ICsJ dTggY29tbWFuZHNbTUFYX0xFTl07Cj4+ICsJdTggc2l6ZTsKPj4gK307Cj4+ICsKPj4gK3N0YXRp YyBzdHJ1Y3QgY21kX3NldCBxY29tXzJrX3BhbmVsX21hZ2ljX2NtZHNbXSA9IHsKPj4gKwkvKiBD TUQyX1AwICovCj4+ICsJeyB7IDB4ZmYsIDB4MjAgfSwgMiB9LAo+PiArCXsgeyAweGZiLCAweDAx IH0sIDIgfSwKPj4gKwl7IHsgMHgwMCwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7IDB4MDEsIDB4NTUg fSwgMiB9LAo+PiArCXsgeyAweDAyLCAweDQ1IH0sIDIgfSwKPj4gKwl7IHsgMHgwNSwgMHg0MCB9 LCAyIH0sCj4+ICsJeyB7IDB4MDYsIDB4MTkgfSwgMiB9LAo+PiArCXsgeyAweDA3LCAweDFlIH0s IDIgfSwKPj4gKwl7IHsgMHgwYiwgMHg3MyB9LCAyIH0sCj4+ICsJeyB7IDB4MGMsIDB4NzMgfSwg MiB9LAo+PiArCXsgeyAweDBlLCAweGIwIH0sIDIgfSwKPj4gKwl7IHsgMHgwZiwgMHhhZSB9LCAy IH0sCj4+ICsJeyB7IDB4MTEsIDB4YjggfSwgMiB9LAo+PiArCXsgeyAweDEzLCAweDAwIH0sIDIg fSwKPj4gKwl7IHsgMHg1OCwgMHg4MCB9LCAyIH0sCj4+ICsJeyB7IDB4NTksIDB4MDEgfSwgMiB9 LAo+PiArCXsgeyAweDVhLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg1YiwgMHgwMSB9LCAyIH0s Cj4+ICsJeyB7IDB4NWMsIDB4ODAgfSwgMiB9LAo+PiArCXsgeyAweDVkLCAweDgxIH0sIDIgfSwK Pj4gKwl7IHsgMHg1ZSwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4NWYsIDB4MDEgfSwgMiB9LAo+ PiArCXsgeyAweDcyLCAweDExIH0sIDIgfSwKPj4gKwl7IHsgMHg2OCwgMHgwMyB9LCAyIH0sCj4+ ICsJLyogQ01EMl9QNCAqLwo+PiArCXsgeyAweEZGLCAweDI0IH0sIDIgfSwKPj4gKwl7IHsgMHhG QiwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7IDB4MDAsIDB4MUMgfSwgMiB9LAo+PiArCXsgeyAweDAx LCAweDBCIH0sIDIgfSwKPj4gKwl7IHsgMHgwMiwgMHgwQyB9LCAyIH0sCj4+ICsJeyB7IDB4MDMs IDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDA0LCAweDBGIH0sIDIgfSwKPj4gKwl7IHsgMHgwNSwg MHgxMCB9LCAyIH0sCj4+ICsJeyB7IDB4MDYsIDB4MTAgfSwgMiB9LAo+PiArCXsgeyAweDA3LCAw eDEwIH0sIDIgfSwKPj4gKwl7IHsgMHgwOCwgMHg4OSB9LCAyIH0sCj4+ICsJeyB7IDB4MDksIDB4 OEEgfSwgMiB9LAo+PiArCXsgeyAweDBBLCAweDEzIH0sIDIgfSwKPj4gKwl7IHsgMHgwQiwgMHgx MyB9LCAyIH0sCj4+ICsJeyB7IDB4MEMsIDB4MTUgfSwgMiB9LAo+PiArCXsgeyAweDBELCAweDE1 IH0sIDIgfSwKPj4gKwl7IHsgMHgwRSwgMHgxNyB9LCAyIH0sCj4+ICsJeyB7IDB4MEYsIDB4MTcg fSwgMiB9LAo+PiArCXsgeyAweDEwLCAweDFDIH0sIDIgfSwKPj4gKwl7IHsgMHgxMSwgMHgwQiB9 LCAyIH0sCj4+ICsJeyB7IDB4MTIsIDB4MEMgfSwgMiB9LAo+PiArCXsgeyAweDEzLCAweDAxIH0s IDIgfSwKPj4gKwl7IHsgMHgxNCwgMHgwRiB9LCAyIH0sCj4+ICsJeyB7IDB4MTUsIDB4MTAgfSwg MiB9LAo+PiArCXsgeyAweDE2LCAweDEwIH0sIDIgfSwKPj4gKwl7IHsgMHgxNywgMHgxMCB9LCAy IH0sCj4+ICsJeyB7IDB4MTgsIDB4ODkgfSwgMiB9LAo+PiArCXsgeyAweDE5LCAweDhBIH0sIDIg fSwKPj4gKwl7IHsgMHgxQSwgMHgxMyB9LCAyIH0sCj4+ICsJeyB7IDB4MUIsIDB4MTMgfSwgMiB9 LAo+PiArCXsgeyAweDFDLCAweDE1IH0sIDIgfSwKPj4gKwl7IHsgMHgxRCwgMHgxNSB9LCAyIH0s Cj4+ICsJeyB7IDB4MUUsIDB4MTcgfSwgMiB9LAo+PiArCXsgeyAweDFGLCAweDE3IH0sIDIgfSwK Pj4gKwkvKiBTVFYgKi8KPj4gKwl7IHsgMHgyMCwgMHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjEs IDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDIyLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHgyMywg MHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjQsIDB4NDAgfSwgMiB9LAo+PiArCXsgeyAweDI1LCAw eDZEIH0sIDIgfSwKPj4gKwl7IHsgMHgyNiwgMHg0MCB9LCAyIH0sCj4+ICsJeyB7IDB4MjcsIDB4 NDAgfSwgMiB9LAo+PiArCS8qIFZlbmQgKi8KPj4gKwl7IHsgMHhFMCwgMHgwMCB9LCAyIH0sCj4+ ICsJeyB7IDB4REMsIDB4MjEgfSwgMiB9LAo+PiArCXsgeyAweERELCAweDIyIH0sIDIgfSwKPj4g Kwl7IHsgMHhERSwgMHgwNyB9LCAyIH0sCj4+ICsJeyB7IDB4REYsIDB4MDcgfSwgMiB9LAo+PiAr CXsgeyAweEUzLCAweDZEIH0sIDIgfSwKPj4gKwl7IHsgMHhFMSwgMHgwNyB9LCAyIH0sCj4+ICsJ eyB7IDB4RTIsIDB4MDcgfSwgMiB9LAo+PiArCS8qIFVEICovCj4+ICsJeyB7IDB4MjksIDB4RDgg fSwgMiB9LAo+PiArCXsgeyAweDJBLCAweDJBIH0sIDIgfSwKPj4gKwkvKiBDTEsgKi8KPj4gKwl7 IHsgMHg0QiwgMHgwMyB9LCAyIH0sCj4+ICsJeyB7IDB4NEMsIDB4MTEgfSwgMiB9LAo+PiArCXsg eyAweDRELCAweDEwIH0sIDIgfSwKPj4gKwl7IHsgMHg0RSwgMHgwMSB9LCAyIH0sCj4+ICsJeyB7 IDB4NEYsIDB4MDEgfSwgMiB9LAo+PiArCXsgeyAweDUwLCAweDEwIH0sIDIgfSwKPj4gKwl7IHsg MHg1MSwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4NTIsIDB4ODAgfSwgMiB9LAo+PiArCXsgeyAw eDUzLCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg1NiwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4 NTQsIDB4MDcgfSwgMiB9LAo+PiArCXsgeyAweDU4LCAweDA3IH0sIDIgfSwKPj4gKwl7IHsgMHg1 NSwgMHgyNSB9LCAyIH0sCj4+ICsJLyogUmVzZXQgWERPTkIgKi8KPj4gKwl7IHsgMHg1QiwgMHg0 MyB9LCAyIH0sCj4+ICsJeyB7IDB4NUMsIDB4MDAgfSwgMiB9LAo+PiArCXsgeyAweDVGLCAweDcz IH0sIDIgfSwKPj4gKwl7IHsgMHg2MCwgMHg3MyB9LCAyIH0sCj4+ICsJeyB7IDB4NjMsIDB4MjIg fSwgMiB9LAo+PiArCXsgeyAweDY0LCAweDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg2NywgMHgwOCB9 LCAyIH0sCj4+ICsJeyB7IDB4NjgsIDB4MDQgfSwgMiB9LAo+PiArCS8qIFJlc29sdXRpb246MTQ0 MHgyNTYwICovCj4+ICsJeyB7IDB4NzIsIDB4MDIgfSwgMiB9LAo+PiArCS8qIG11eCAqLwo+PiAr CXsgeyAweDdBLCAweDgwIH0sIDIgfSwKPj4gKwl7IHsgMHg3QiwgMHg5MSB9LCAyIH0sCj4+ICsJ eyB7IDB4N0MsIDB4RDggfSwgMiB9LAo+PiArCXsgeyAweDdELCAweDYwIH0sIDIgfSwKPj4gKwl7 IHsgMHg3RiwgMHgxNSB9LCAyIH0sCj4+ICsJeyB7IDB4NzUsIDB4MTUgfSwgMiB9LAo+PiArCS8q IEFCT0ZGICovCj4+ICsJeyB7IDB4QjMsIDB4QzAgfSwgMiB9LAo+PiArCXsgeyAweEI0LCAweDAw IH0sIDIgfSwKPj4gKwl7IHsgMHhCNSwgMHgwMCB9LCAyIH0sCj4+ICsJLyogU291cmNlIEVRICov Cj4+ICsJeyB7IDB4NzgsIDB4MDAgfSwgMiB9LAo+PiArCXsgeyAweDc5LCAweDAwIH0sIDIgfSwK Pj4gKwl7IHsgMHg4MCwgMHgwMCB9LCAyIH0sCj4+ICsJeyB7IDB4ODMsIDB4MDAgfSwgMiB9LAo+ PiArCS8qIEZQIEJQICovCj4+ICsJeyB7IDB4OTMsIDB4MEEgfSwgMiB9LAo+PiArCXsgeyAweDk0 LCAweDBBIH0sIDIgfSwKPj4gKwkvKiBJbnZlcnNpb24gVHlwZSAqLwo+PiArCXsgeyAweDhBLCAw eDAwIH0sIDIgfSwKPj4gKwl7IHsgMHg5QiwgMHhGRiB9LCAyIH0sCj4+ICsJLyogSU1HU1dBUCA9 MSBAUG9ydFN3YXA9MSAqLwo+PiArCXsgeyAweDlELCAweEIwIH0sIDIgfSwKPj4gKwl7IHsgMHg5 RiwgMHg2MyB9LCAyIH0sCj4+ICsJeyB7IDB4OTgsIDB4MTAgfSwgMiB9LAo+PiArCS8qIEZSTSAq Lwo+PiArCXsgeyAweEVDLCAweDAwIH0sIDIgfSwKPj4gKwkvKiBDTUQxICovCj4+ICsJeyB7IDB4 RkYsIDB4MTAgfSwgMiB9LAo+PiArCS8qIFZCUCtWU0E9LFZGUCA9IDEwSCAqLwo+PiArCXsgeyAw eDNCLCAweDAzLCAweDBBLCAweDBBIH0sIDQgfSwKPj4gKwkvKiBGVEUgb24gKi8KPj4gKwl7IHsg MHgzNSwgMHgwMCB9LCAyIH0sCj4+ICsJLyogRU5fQksgPTEoYXV0byBibGFjaykgKi8KPj4gKwl7 IHsgMHhFNSwgMHgwMSB9LCAyIH0sCj4+ICsJLyogQ01EIG1vZGUoMTApIFZETyBtb2RlKDAzKSAq Lwo+PiArCXsgeyAweEJCLCAweDAzIH0sIDIgfSwKPj4gKwkvKiBOb24gUmVsb2FkIE1UUCAqLwo+ PiArCXsgeyAweEZCLCAweDAxIH0sIDIgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1 bHlfZGNzX3dyaXRlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsLCB1MzIgY29tbWFuZCkKPj4gK3sK Pj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPj4g KwlpbnQgaSwgcmV0Owo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3R4LT5k c2kpOyBpKyspIHsKPj4gKwkJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlKGN0eC0+ZHNpW2ldLAo+ PiArCQkJY29tbWFuZCwgTlVMTCwgMCk7Cj4gCj4gVGhpcyBjYW4gZml0IG9uIG9uZSBsaW5lCj4g Cj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+PiAr CQkJCSJjbWQgMHgleCBmYWlsZWQgZm9yIGRzaSA9ICVkXG4iLCBjb21tYW5kLAo+PiArCQkJCQlp KTsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgdHJ1bHlfZGNzX3dyaXRlX2J1ZihzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwKPj4g Kwl1MzIgc2l6ZSwgdTggKmJ1ZikKPj4gK3sKPj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4 ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPj4gKwlpbnQgcmV0ID0gMDsKPj4gKwlpbnQgaTsKPj4g Kwo+PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ZHNpKTsgaSsrKSB7Cj4+ICsJ CXJldCA9IG1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoY3R4LT5kc2lbaV0sCj4+ICsJCQlidWYs Cj4+ICsJCQlzaXplKTsKPiAKPiBUaGlzIGNhbiBmaXQgb24gb25lIGxpbmUKPiAKPj4gKwo+PiAr CQlpZiAocmV0IDwgMCkgewo+PiArCQkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPj4gKwkJCQki ZmFpbGVkIHRvIHR4IGNtZCBbJWRdLCBlcnI6ICVkXG4iLAo+PiArCQkJCWksIHJldCk7Cj4+ICsJ CQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCB0cnVseV8zNTU5N19wb3dlcl9vbihzdHJ1Y3QgdHJ1bHlfbnQz NTU5NyAqY3R4KQo+PiArewo+PiArCWludCByZXQsIGk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4+ICsJCXJldCA9IHJlZ3VsYXRv cl9zZXRfbG9hZChjdHgtPnN1cHBsaWVzW2ldLmNvbnN1bWVyLAo+PiArCQkJCQlyZWd1bGF0b3Jf ZW5hYmxlX2xvYWRzW2ldKTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJ fQo+PiArCj4+ICsJcmV0ID0gcmVndWxhdG9yX2J1bGtfZW5hYmxlKEFSUkFZX1NJWkUoY3R4LT5z dXBwbGllcyksIAo+PiBjdHgtPnN1cHBsaWVzKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJcmV0 dXJuIHJldDsKPj4gKwo+PiArCS8qIFJlc2V0IHNlcXVlbmNlIG9mIHRydWx5IHBhbmVsIHJlcXVp cmVzCj4+ICsJICogdGhlIHJlc2V0IHBpbiB0byBiZSBwdWxsZWQgaGlnaCBmb3IgMTBtcwo+PiAr CSAqIGZvbGxvd2VkIGJ5IGEgbG93IHBlcmlvZCBvZiAxMG1zIGFuZCB0aGVuCj4gCj4gVGhlIGhp Z2hzIGFuZCBsb3dzIGFyZSBiYWNrd2FyZHMgaW4gdGhpcyBjb21tZW50LiBZb3VyIGFsc28gd2F5 IGluc2lkZSAKPiA4MCBjaGFycwo+IGZvciB0aGlzIGNvbW1lbnQuIFBlcmhhcHMgaXQgd2FzIHBy ZXZpb3VzbHkgaW5kZW50ZWQgYSBidW5jaCBhbmQgaGFzbid0IAo+IGJlZW4KPiByZWZsb3dlZD8g QW55d2F5cywgaXQgbWlnaHQgYmUgbW9yZSBjbGVhciBpZiB5b3UgZG9uJ3QgdGFsayBhYm91dCB3 aGF0IAo+IHRoZSBwaW4KPiBpcyBkb2luZywgYnV0IHJhdGhlciB0aGUgcmVzZXQgc3RhdGUgb2Yg dGhlIHBhbmVsOgo+IAo+ICAgICAgICAgLyoKPiAgICAgICAgICAqIFJlc2V0IHNlcXVlbmNlIG9m IHRydWx5IHBhbmVsIHJlcXVpcmVzIHRoZSBwYW5lbCB0byBiZSBvdXQgCj4gb2YgcmVzZXQKPiAg ICAgICAgICAqIGZvciAxMG1zLCBmb2xsb3dlZCBieSBiZWluZyBoZWxkIGluIHJlc2V0IGZvciAx MG1zIGFuZCB0aGVuIAo+IG91dCBhZ2Fpbgo+ICAgICAgICAgICovCj4gCj4+ICsJICogcHVsbGVk IGhpZ2ggYWdhaW4KPj4gKwkgKi8KPj4gKwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0 X2dwaW8sIDApOwo+PiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAwMDApOwo+PiArCWdwaW9kX3Nl dF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDEpOwo+PiArCXVzbGVlcF9yYW5nZSgxMDAwMCwgMjAw MDApOwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0X2dwaW8sIDApOwo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wb3dlcl9v ZmYoc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCkKPj4gK3sKPj4gKwlpbnQgcmV0LCBpOwo+PiAr Cj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMSk7Cj4+ICsKPj4gKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKSB7Cj4+ICsJCXJldCA9 IHJlZ3VsYXRvcl9zZXRfbG9hZChjdHgtPnN1cHBsaWVzW2ldLmNvbnN1bWVyLAo+PiArCQkJCXJl Z3VsYXRvcl9kaXNhYmxlX2xvYWRzW2ldKTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiBy ZXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHJlZ3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlf U0laRShjdHgtPnN1cHBsaWVzKSwgCj4+IGN0eC0+c3VwcGxpZXMpOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW50IHRydWx5X250MzU1OTdfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkK Pj4gK3sKPj4gKwlzdHJ1Y3QgdHJ1bHlfbnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVs KTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJaWYgKCFjdHgtPmVuYWJsZWQpCj4+ICsJCXJldHVy biAwOwo+PiArCj4+ICsJaWYgKGN0eC0+YmFja2xpZ2h0KSB7Cj4+ICsJCXJldCA9IGJhY2tsaWdo dF9kaXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlEUk1f REVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFja2xpZ2h0IGRpc2FibGUgZmFpbGVkICVkXG4iLAo+PiAr CQkJCXJldCk7Cj4+ICsJfQo+PiArCj4+ICsJY3R4LT5lbmFibGVkID0gZmFsc2U7Cj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N191bnByZXBhcmUo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+ICt7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcg KmN0eCA9IHBhbmVsX3RvX2N0eChwYW5lbCk7Cj4+ICsJaW50IHJldCA9IDA7Cj4+ICsKPj4gKwlp ZiAoIWN0eC0+cHJlcGFyZWQpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJY3R4LT5kc2lbMF0t Pm1vZGVfZmxhZ3MgPSAwOwo+PiArCWN0eC0+ZHNpWzFdLT5tb2RlX2ZsYWdzID0gMDsKPj4gKwo+ PiArCXJldCA9IHRydWx5X2Rjc193cml0ZShwYW5lbCwgTUlQSV9EQ1NfU0VUX0RJU1BMQVlfT0ZG KTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+PiAr CQkJInNldF9kaXNwbGF5X29mZiBjbWQgZmFpbGVkIHJldCA9ICVkXG4iLAo+PiArCQkJcmV0KTsK Pj4gKwl9Cj4+ICsKPj4gKwkvKiAxMjBtcyBkZWxheSByZXF1aXJlZCBoZXJlIGFzIHBlciBEQ1Mg c3BlYyAqLwo+PiArCW1zbGVlcCgxMjApOwo+PiArCj4+ICsJcmV0ID0gdHJ1bHlfZGNzX3dyaXRl KHBhbmVsLCBNSVBJX0RDU19FTlRFUl9TTEVFUF9NT0RFKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+ PiArCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LAo+PiArCQkJImVudGVyX3NsZWVwIGNtZCBmYWls ZWQgcmV0ID0gJWRcbiIsCj4+ICsJCQlyZXQpOwo+PiArCX0KPj4gKwo+PiArCXJldCA9IHRydWx5 X250MzU1OTdfcG93ZXJfb2ZmKGN0eCk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCURSTV9ERVZf RVJST1IoY3R4LT5kZXYsCj4+ICsJCQkidHJ1bHlfbnQzNTU5N19wb3dlcl9vZmYgZmFpbGVkIHJl dCA9ICVkXG4iLAo+PiArCQkJcmV0KTsKPj4gKwo+PiArCWN0eC0+cHJlcGFyZWQgPSBmYWxzZTsK Pj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRydWx5X250MzU1OTdf cHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4gK3sKPj4gKwlzdHJ1Y3QgdHJ1bHlf bnQzNTU5NyAqY3R4ID0gcGFuZWxfdG9fY3R4KHBhbmVsKTsKPj4gKwlpbnQgcmV0Owo+PiArCWlu dCBpOwo+PiArCXN0cnVjdCBjbWRfc2V0ICpwYW5lbF9vbl9jbWRzOwo+PiArCWNvbnN0IHN0cnVj dCBudDM1NTk3X2NvbmZpZyAqY29uZmlnOwo+PiArCXUzMiBudW1fY21kczsKPj4gKwo+PiArCWlm IChjdHgtPnByZXBhcmVkKQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCXJldCA9IHRydWx5XzM1 NTk3X3Bvd2VyX29uKGN0eCk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ ICsKPj4gKwljdHgtPmRzaVswXS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPj4g KwljdHgtPmRzaVsxXS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKPj4gKwo+PiAr CWNvbmZpZyA9IGN0eC0+Y29uZmlnOwo+PiArCXBhbmVsX29uX2NtZHMgPSAoc3RydWN0IGNtZF9z ZXQgKiljb25maWctPnBhbmVsX29uX2NtZHM7Cj4+ICsJbnVtX2NtZHMgPSBjb25maWctPm51bV9v bl9jbWRzOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IG51bV9jbWRzOyBpKyspIHsKPj4gKwkJ cmV0ID0gdHJ1bHlfZGNzX3dyaXRlX2J1ZihwYW5lbCwKPj4gKwkJCQlwYW5lbF9vbl9jbWRzW2ld LnNpemUsCj4+ICsJCQkJCXBhbmVsX29uX2NtZHNbaV0uY29tbWFuZHMpOwo+PiArCQlpZiAocmV0 IDwgMCkgewo+PiArCQkJRFJNX0RFVl9FUlJPUihjdHgtPmRldiwKPj4gKwkJCQkiY21kIHNldCB0 eCBmYWlsZWQgaSA9ICVkIHJldCA9ICVkXG4iLAo+PiArCQkJCQlpLCByZXQpOwo+PiArCQkJZ290 byBwb3dlcl9vZmY7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwkvKiBBcyBwZXIgRFNJIHNwZWMg bmVlZCB0byB3YWl0IGZvciAxMjBtcwo+PiArCSAqIGFmdGVyIHNlbmRpbmcgdGhlIGV4aXQgc2xl ZXAgRENTIGNvbW1hbmQKPj4gKwkgKi8KPiAKPiBUaGlzIGNvbW1lbnQgc2VlbXMgbGlrZSBpdCdz IGluIHRoZSB3cm9uZyBwbGFjZS4gQWxzbywgbXVsdGktbGluZSAKPiBjb21tZW50cyBhcmUKPiBm b3JtYXR0ZWQgYXMgZm9sbG93czoKPiAKPiAvKgo+ICAqIG11bHRpLWxpbmUKPiAgKiBjb21tZW50 Cj4gICovCj4gCj4gSWYgeW91IGxpa2UgdG8gc2F2ZSBzcGFjZSwgbGlrZSBtZSwgeW91IGNvdWxk IHByb2JhYmx5IGZpdCB0aGlzIG9uIDEgCj4gbGluZSBsaWtlOgo+IAo+ICAgICAgICAgLyogUGVy IERTSSBzcGVjLCB3YWl0IDEyMG1zIGFmdGVyIHNlbmRpbmcgdGhlIGV4aXQgc2xlZXAgRENTIAo+ IGNvbW1hbmQgKi8KPiAKPj4gKwo+PiArCXJldCA9IHRydWx5X2Rjc193cml0ZShwYW5lbCwgTUlQ SV9EQ1NfRVhJVF9TTEVFUF9NT0RFKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fREVW X0VSUk9SKGN0eC0+ZGV2LAo+PiArCQkJImV4aXRfc2xlZXBfbW9kZSBjbWQgZmFpbGVkIHJldCA9 ICVkXG4iLAo+PiArCQkJcmV0KTsKPj4gKwkJZ290byBwb3dlcl9vZmY7Cj4+ICsJfQo+PiArCj4+ ICsJbXNsZWVwKDEyMCk7Cj4+ICsKPj4gKwlyZXQgPSB0cnVseV9kY3Nfd3JpdGUocGFuZWwsIE1J UElfRENTX1NFVF9ESVNQTEFZX09OKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQlEUk1fREVW X0VSUk9SKGN0eC0+ZGV2LAo+PiArCQkJInNldF9kaXNwbGF5X29uIGNtZCBmYWlsZWQgcmV0ID0g JWRcbiIsCj4+ICsJCQlyZXQpOwo+PiArCQlnb3RvIHBvd2VyX29mZjsKPj4gKwl9Cj4+ICsKPj4g KwkvKiBBZGRpbmcgMTIwbXMgZGVsYXkgYmVmb3JlIHRoZSBzdGFydCBvZgo+PiArCSAqIHBpeGVs IHN0cmVhbSB0byB0aGUgcGFuZWwgYWZ0ZXIgc2VuZGluZwo+PiArCSAqIHRoZSBzZXRfZGlzcGxh eV9vbiBEQ1MgY29tbWFuZAo+PiArCSAqLwo+PiArCj4+ICsJbXNsZWVwKDEyMCk7Cj4+ICsKPj4g KwljdHgtPnByZXBhcmVkID0gdHJ1ZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtwb3dl cl9vZmY6Cj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXRfZ3BpbywgMSk7Cj4+ICsKPj4g Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKTsgaSsrKQo+PiArCQly ZWd1bGF0b3Jfc2V0X2xvYWQoY3R4LT5zdXBwbGllc1tpXS5jb25zdW1lciwKPj4gKwkJCXJlZ3Vs YXRvcl9kaXNhYmxlX2xvYWRzW2ldKTsKPj4gKwo+PiArCXJldCA9IHJlZ3VsYXRvcl9idWxrX2Rp c2FibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwKPj4gKwkJCWN0eC0+c3VwcGxpZXMpOwo+ IAo+IFRoaXMgc2VlbXMgbGlrZSBhIHN0cmFpZ2h0IGNvcHkgb2YgdHJ1bHlfbnQzNTU5N19wb3dl cl9vZmYoKSwganVzdCBjYWxsIAo+IHRoYXQKPiBmdW5jdGlvbi4KPiAKPj4gKwlEUk1fREVWX0VS Uk9SKGN0eC0+ZGV2LAo+PiArCQkicmVndWxhdG9yIGRpc2FibGUgZmFpbGVkLCAlZFxuIiwgcmV0 KTsKPiAKPiBUaGlzIGZpdHMgb24gb25lIGxpbmUuCj4gCj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRydWx5X250MzU1OTdfZW5hYmxlKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5l bF90b19jdHgocGFuZWwpOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoY3R4LT5lbmFibGVk KQo+PiArCQlyZXR1cm4gMDsKPj4gKwo+PiArCWlmIChjdHgtPmJhY2tsaWdodCkgewo+PiArCQly ZXQgPSBiYWNrbGlnaHRfZW5hYmxlKGN0eC0+YmFja2xpZ2h0KTsKPj4gKwkJaWYgKHJldCA8IDAp Cj4+ICsJCQlEUk1fREVWX0VSUk9SKGN0eC0+ZGV2LCAiYmFja2xpZ2h0IGVuYWJsZSBmYWlsZWQg JWRcbiIsCj4+ICsJCQkJCQkgIHJldCk7Cj4+ICsJfQo+PiArCj4+ICsJY3R4LT5lbmFibGVkID0g dHJ1ZTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHRydWx5 X250MzU1OTdfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+PiArewo+PiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOwo+PiArCXN0 cnVjdCB0cnVseV9udDM1NTk3ICpjdHggPSBwYW5lbF90b19jdHgocGFuZWwpOwo+PiArCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+PiArCWNvbnN0IHN0cnVjdCBudDM1NTk3X2NvbmZp ZyAqY29uZmlnOwo+PiArCj4+ICsJY29uZmlnID0gY3R4LT5jb25maWc7Cj4+ICsJbW9kZSA9IGRy bV9tb2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7Cj4+ICsJaWYgKCFtb2RlKSB7Cj4+ICsJCURS TV9ERVZfRVJST1IoY3R4LT5kZXYsCj4+ICsJCQkiZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBkaXNw bGF5IG1vZGVcbiIpOwo+PiArCQlyZXR1cm4gMDsKPj4gKwl9Cj4+ICsKPj4gKwljb25uZWN0b3It PmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IGNvbmZpZy0+d2lkdGhfbW07Cj4+ICsJY29ubmVjdG9y LT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gY29uZmlnLT5oZWlnaHRfbW07Cj4+ICsJZHJtX21v ZGVfY29weShtb2RlLCBjb25maWctPmRtKTsKPj4gKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQ RV9EUklWRVIgfCBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRDsKPj4gKwlkcm1fbW9kZV9wcm9iZWRf YWRkKGNvbm5lY3RvciwgbW9kZSk7Cj4+ICsKPj4gKwlyZXR1cm4gMTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgdHJ1bHlfbnQzNTU5N19kcm1fZnVu Y3MgPSB7Cj4+ICsJLmRpc2FibGUgPSB0cnVseV9udDM1NTk3X2Rpc2FibGUsCj4+ICsJLnVucHJl cGFyZSA9IHRydWx5X250MzU1OTdfdW5wcmVwYXJlLAo+PiArCS5wcmVwYXJlID0gdHJ1bHlfbnQz NTU5N19wcmVwYXJlLAo+PiArCS5lbmFibGUgPSB0cnVseV9udDM1NTk3X2VuYWJsZSwKPj4gKwku Z2V0X21vZGVzID0gdHJ1bHlfbnQzNTU5N19nZXRfbW9kZXMsCj4+ICt9Owo+PiArCj4+ICtzdGF0 aWMgaW50IHRydWx5X250MzU1OTdfcGFuZWxfYWRkKHN0cnVjdCB0cnVseV9udDM1NTk3ICpjdHgp Cj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXY7Cj4+ICsJaW50IHJldCwg aTsKPj4gKwljb25zdCBzdHJ1Y3QgbnQzNTU5N19jb25maWcgKmNvbmZpZzsKPj4gKwo+PiArCWNv bmZpZyA9IGN0eC0+Y29uZmlnOwo+PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ c3VwcGxpZXMpOyBpKyspCj4+ICsJCWN0eC0+c3VwcGxpZXNbaV0uc3VwcGx5ID0gcmVndWxhdG9y X25hbWVzW2ldOwo+PiArCj4+ICsJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVsa19nZXQoZGV2LCBB UlJBWV9TSVpFKGN0eC0+c3VwcGxpZXMpLAo+PiArCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwo+ PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJY3R4LT5yZXNldF9n cGlvID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfTE9XKTsKPj4gKwlp ZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsKPj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJj YW5ub3QgZ2V0IHJlc2V0IGdwaW8gJWxkXG4iLAo+PiArCQkJUFRSX0VSUihjdHgtPnJlc2V0X2dw aW8pKTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlvKTsKPj4gKwl9Cj4+ICsK Pj4gKwljdHgtPm1vZGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgIm1vZGUiLCBHUElPRF9P VVRfTE9XKTsKPj4gKwlpZiAoSVNfRVJSKGN0eC0+bW9kZV9ncGlvKSkgewo+PiArCQlEUk1fREVW X0VSUk9SKGRldiwgImNhbm5vdCBnZXQgbW9kZSBncGlvICVsZFxuIiwKPj4gKwkJCVBUUl9FUlIo Y3R4LT5tb2RlX2dwaW8pKTsKPj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5tb2RlX2dwaW8pOwo+ PiArCX0KPj4gKwo+PiArCS8qIGR1YWwgcG9ydCAqLwo+PiArCWdwaW9kX3NldF92YWx1ZShjdHgt Pm1vZGVfZ3BpbywgMCk7Cj4+ICsKPj4gKwlkcm1fcGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7Cj4+ ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7Cj4+ICsJY3R4LT5wYW5lbC5mdW5jcyA9ICZ0cnVseV9u dDM1NTk3X2RybV9mdW5jczsKPj4gKwlkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVsKTsKPj4gKwo+ PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgcWNvbV9zZG04NDVfbXRwXzJrX21vZGUgPSB7Cj4+ICsJLm5hbWUgPSAiMTQ0MHgy NTYwIiwKPj4gKwkuY2xvY2sgPSAyNjgzMTYsCj4+ICsJLmhkaXNwbGF5ID0gMTQ0MCwKPj4gKwku aHN5bmNfc3RhcnQgPSAxNDQwICsgMjAwLAo+PiArCS5oc3luY19lbmQgPSAxNDQwICsgMjAwICsg MzIsCj4+ICsJLmh0b3RhbCA9IDE0NDAgKyAyMDAgKyAzMiArIDY0LAo+PiArCS52ZGlzcGxheSA9 IDI1NjAsCj4+ICsJLnZzeW5jX3N0YXJ0ID0gMjU2MCArIDgsCj4+ICsJLnZzeW5jX2VuZCA9IDI1 NjAgKyA4ICsgMSwKPj4gKwkudnRvdGFsID0gMjU2MCArIDggKyAxICsgNywKPj4gKwkudnJlZnJl c2ggPSA2MCwKPj4gKwkuZmxhZ3MgPSAwLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBudDM1NTk3X2NvbmZpZyBudDM1NTk3X2RpciA9IHsKPj4gKwkud2lkdGhfbW0gPSA3NCwK Pj4gKwkuaGVpZ2h0X21tID0gMTMxLAo+PiArCS5wYW5lbF9uYW1lID0gInFjb21fc2RtODQ1X210 cF8ya19wYW5lbCIsCj4+ICsJLmRtID0gJnFjb21fc2RtODQ1X210cF8ya19tb2RlLAo+PiArCS5w YW5lbF9vbl9jbWRzID0gcWNvbV8ya19wYW5lbF9tYWdpY19jbWRzLAo+PiArCS5udW1fb25fY21k cyA9IEFSUkFZX1NJWkUocWNvbV8ya19wYW5lbF9tYWdpY19jbWRzKSwKPj4gK307Cj4+ICsKPj4g K3N0YXRpYyBpbnQgdHJ1bHlfbnQzNTU5N19wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2kpCj4+ICt7Cj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJmRzaS0+ZGV2Owo+PiArCXN0cnVj dCB0cnVseV9udDM1NTk3ICpjdHg7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpMV9k ZXZpY2U7Cj4+ICsJc3RydWN0IGRldmljZV9ub2RlICpkc2kxOwo+PiArCXN0cnVjdCBtaXBpX2Rz aV9ob3N0ICpkc2kxX2hvc3Q7Cj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldjsK Pj4gKwlpbnQgcmV0ID0gMDsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCWNvbnN0IHN0cnVjdCBtaXBp X2RzaV9kZXZpY2VfaW5mbyBpbmZvID0gewo+PiArCQkudHlwZSA9ICJ0cnVseW50MzU1OTciLAo+ PiArCQkuY2hhbm5lbCA9IDAsCj4+ICsJCS5ub2RlID0gTlVMTCwKPj4gKwl9Owo+PiArCj4+ICsJ Y3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPj4gKwo+ PiArCWlmICghY3R4KQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCS8qIFRoaXMgZGV2 aWNlIHJlcHJlc2VudHMgaXRzZWxmIGFzIG9uZSB3aXRoCj4+ICsJICogdHdvIGlucHV0IHBvcnRz IHdoaWNoIGFyZSBmZWQgYnkgdGhlIG91dHB1dAo+PiArCSAqIHBvcnRzIG9mIHRoZSB0d28gRFNJ IGNvbnRyb2xsZXJzIC4gVGhlIERTSTAKPj4gKwkgKiBpcyB0aGUgbWFzdGVyIGNvbnRyb2xsZXIg YW5kIGhhcyBtb3N0IG9mIHRoZQo+PiArCSAqIHBhbmVsIHJlbGF0ZWQgaW5mbyBpbiBpdHMgY2hp bGQgbm9kZS4KPj4gKwkgKi8KPj4gKwo+PiArCWN0eC0+Y29uZmlnID0gb2ZfZGV2aWNlX2dldF9t YXRjaF9kYXRhKGRldik7Cj4+ICsKPj4gKwlpZiAoIWN0eC0+Y29uZmlnKSB7Cj4+ICsJCWRldl9l cnIoZGV2LCAibWlzc2luZyBkZXZpY2UgY29uZmlndXJhdGlvblxuIik7Cj4+ICsJCXJldHVybiAt RU5PREVWOwo+PiArCX0KPj4gKwo+PiArCWRzaTEgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX25vZGUo ZHNpLT5kZXYub2Zfbm9kZSwgMSwgLTEpOwo+PiArCWlmICghZHNpMSkgewo+PiArCQlEUk1fREVW X0VSUk9SKGRldiwKPj4gKwkJCSJmYWlsZWQgdG8gZ2V0IHJlbW90ZSBub2RlIGZvciBkc2kxX2Rl dmljZVxuIik7Cj4+ICsJCXJldCA9IC1FTk9ERVY7Cj4+ICsJCWdvdG8gZXJyX2dldF9yZW1vdGU7 Cj4gCj4gSnVzdCByZXR1cm4gZGlyZWN0bHkuCj4gCj4+ICsJfQo+PiArCj4+ICsJZHNpMV9ob3N0 ID0gb2ZfZmluZF9taXBpX2RzaV9ob3N0X2J5X25vZGUoZHNpMSk7Cj4gCj4gTW92ZSB0aGF0IG9m X25vZGVfcHV0KGRzaTEpIGhlcmUuCj4gCj4+ICsJaWYgKCFkc2kxX2hvc3QpIHsKPj4gKwkJRFJN X0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gZmluZCBkc2kgaG9zdFxuIik7Cj4+ICsJCXJldCA9 IC1FUFJPQkVfREVGRVI7Cj4+ICsJCWdvdG8gZXJyX2hvc3Q7Cj4gCj4gTm93IHlvdSBjYW4gcmV0 dXJuIGRpcmVjdGx5IGZyb20gaGVyZQo+IAo+PiArCX0KPj4gKwo+PiArCW9mX25vZGVfcHV0KGRz aTEpOwo+PiArCj4+ICsJLyogcmVnaXN0ZXIgdGhlIHNlY29uZCBEU0kgZGV2aWNlICovCj4+ICsJ ZHNpMV9kZXZpY2UgPSBtaXBpX2RzaV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChkc2kxX2hvc3QsICZp bmZvKTsKPj4gKwlpZiAoSVNfRVJSKGRzaTFfZGV2aWNlKSkgewo+PiArCQlEUk1fREVWX0VSUk9S KGRldiwgImZhaWxlZCB0byBjcmVhdGUgZHNpIGRldmljZVxuIik7Cj4+ICsJCXJldCA9IFBUUl9F UlIoZHNpKTsKPj4gKwkJZ290byBlcnJfZHNpX2RldmljZTsKPiAKPiBBbmQgaGVyZQo+IAo+PiAr CX0KPj4gKwo+PiArCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsKPj4gKwo+PiArCWN0 eC0+ZGV2ID0gZGV2Owo+PiArCWN0eC0+ZHNpWzBdID0gZHNpOwo+PiArCWN0eC0+ZHNpWzFdID0g ZHNpMV9kZXZpY2U7Cj4+ICsKPj4gKwlyZXQgPSB0cnVseV9udDM1NTk3X3BhbmVsX2FkZChjdHgp Owo+PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gYWRk IHBhbmVsXG4iKTsKPj4gKwkJZ290byBlcnJfcGFuZWxfYWRkOwo+PiArCX0KPj4gKwo+PiArCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+ZHNpKTsgaSsrKSB7Cj4+ICsJCWRzaV9kZXYg PSBjdHgtPmRzaVtpXTsKPj4gKwkJZHNpX2Rldi0+bGFuZXMgPSA0Owo+PiArCQlkc2lfZGV2LT5m b3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4Owo+PiArCQlkc2lfZGV2LT5tb2RlX2ZsYWdzID0g TUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01PREVfTFBNIHwKPj4gKwkJCU1JUElfRFNJ X0NMT0NLX05PTl9DT05USU5VT1VTOwo+PiArCQlyZXQgPSBtaXBpX2RzaV9hdHRhY2goZHNpX2Rl dik7Cj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4+ICsJCQlEUk1fREVWX0VSUk9SKGRldiwKPj4gKwkJ CQkiZHNpIGF0dGFjaCBmYWlsZWQgaSA9ICVkXG4iLCBpKTsKPj4gKwkJCQlnb3RvIGVycl9kc2lf YXR0YWNoOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4gK2Vycl9k c2lfYXR0YWNoOgo+PiArCWRybV9wYW5lbF9yZW1vdmUoJmN0eC0+cGFuZWwpOwo+PiArZXJyX3Bh bmVsX2FkZDoKPj4gKwltaXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kxX2RldmljZSk7Cj4+ ICtlcnJfZHNpX2RldmljZToKPj4gK2Vycl9ob3N0Ogo+PiArCW9mX25vZGVfcHV0KGRzaTEpOwo+ PiArZXJyX2dldF9yZW1vdGU6Cj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IGludCB0cnVseV9udDM1NTk3X3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kpCj4+ ICt7Cj4+ICsJc3RydWN0IHRydWx5X250MzU1OTcgKmN0eCA9IG1pcGlfZHNpX2dldF9kcnZkYXRh KGRzaSk7Cj4+ICsKPj4gKwlpZiAoY3R4LT5kc2lbMF0pCj4+ICsJCW1pcGlfZHNpX2RldGFjaChj dHgtPmRzaVswXSk7Cj4+ICsJaWYgKGN0eC0+ZHNpWzFdKSB7Cj4+ICsJCW1pcGlfZHNpX2RldGFj aChjdHgtPmRzaVsxXSk7Cj4+ICsJCW1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKGN0eC0+ZHNp WzFdKTsKPj4gKwl9Cj4+ICsKPj4gKwlkcm1fcGFuZWxfcmVtb3ZlKCZjdHgtPnBhbmVsKTsKPj4g KwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2Vf aWQgdHJ1bHlfbnQzNTU5N19vZl9tYXRjaFtdID0gewo+PiArCXsJLmNvbXBhdGlibGUgPSAidHJ1 bHksbnQzNTU5Ny0ySy1kaXNwbGF5IiwKPj4gKwkJLmRhdGEgPSAmbnQzNTU5N19kaXIsCj4+ICsJ fSwKPj4gKwo+PiArCXsgfQo+PiArfTsKPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHRydWx5 X250MzU1OTdfb2ZfbWF0Y2gpOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZl ciB0cnVseV9udDM1NTk3X2RyaXZlciA9IHsKPj4gKwkuZHJpdmVyID0gewo+PiArCQkubmFtZSA9 ICJwYW5lbF90cnVseV9udDM1NTk3IiwKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gdHJ1bHlfbnQz NTU5N19vZl9tYXRjaCwKPj4gKwl9LAo+PiArCS5wcm9iZSA9IHRydWx5X250MzU1OTdfcHJvYmUs Cj4+ICsJLnJlbW92ZSA9IHRydWx5X250MzU1OTdfcmVtb3ZlLAo+PiArfTsKPj4gK21vZHVsZV9t aXBpX2RzaV9kcml2ZXIodHJ1bHlfbnQzNTU5N19kcml2ZXIpOwo+PiArCj4+ICtNT0RVTEVfREVT Q1JJUFRJT04oIlRydWx5IE5UMzU1OTcgRFNJIFBhbmVsIERyaXZlciIpOwo+PiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCB2MiIpOwo+PiAtLQo+PiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIs IEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIAo+PiBGb3J1bSwKPj4gYSBMaW51 eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAo+PiAKPj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxpbmcgbGlz dAo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=