From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH v2 07/13] drm/mediatek: separae hdmi phy to different file Date: Fri, 7 Sep 2018 09:15:40 +0800 Message-ID: <1536282940.25853.1.camel@mtksdaap41> References: <20180905083146.14727-1-bibby.hsieh@mediatek.com> <20180905083146.14727-8-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180905083146.14727-8-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bibby Hsieh Cc: linux-kernel@vger.kernel.org, Sascha Hauer , chunhui dai , David Airlie , Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , Thierry Reding , linux-mediatek@lists.infradead.org, Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIEJpYmJ5OgoKT24gV2VkLCAyMDE4LTA5LTA1IGF0IDE2OjMxICswODAwLCBCaWJieSBIc2ll aCB3cm90ZToKPiBGcm9tOiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+ IAo+IERpZmZlcmVudCBJQyBoYXMgZGlmZmVyZW50IHBoeSBzZXR0aW5nIG9mIEhETUkuCj4gVGhp cyBwYXRjaCBzZXBhcmFlcyB0aGUgcGh5IGhhcmR3YXJlIHJlbGF0ZSBwYXJ0IGZvciBtdDgxNzMu CgpJIGd1ZXNzICdzZXBhcmFlJyBpcyAnc2VwYXJhdGUnLiBBbSBJIHJpZ2h0PwoKUmVnYXJkcywK Q0sKCj4gCj4gU2lnbmVkLW9mZi1ieTogY2h1bmh1aSBkYWkgPGNodW5odWkuZGFpQG1lZGlhdGVr LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlICAgICAgICAg ICAgICB8ICAxNSArLS0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMgICAg ICAgICAgICB8ICAzMCArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWku aCAgICAgICAgICAgIHwgIDI2ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaV9waHkuYyAgICAgICAgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1pX3BoeS5jIHwgMTI5ICsrLS0tLS0t LS0tLS0tLS0tLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCspLCAxMzgg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2hkbWlfcGh5LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCj4gaW5kZXgg Y2U4M2MzOTZhNzQyLi43Zjk0Nzk3OWQ2OGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2Vm aWxlCj4gQEAgLTEsNCArMSwxMiBAQAo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCj4gK21lZGlhdGVrLWRybS1oZG1pLW9ianMgOj0gbXRrX2NlYy5vIFwKPiArCQkJICBtdGtf aGRtaS5vIFwKPiArCQkJICBtdGtfaGRtaV9kZGMubyBcCj4gKwkJCSAgbXRrX210ODE3M19oZG1p X3BoeS5vIFwKPiArCQkJICBtdGtfaGRtaV9waHkubwo+ICsKPiArb2JqLSQoQ09ORklHX0RSTV9N RURJQVRFS19IRE1JKSArPSBtZWRpYXRlay1kcm0taGRtaS5vCj4gKwo+ICBtZWRpYXRlay1kcm0t eSA6PSBtdGtfZGlzcF9jb2xvci5vIFwKPiAgCQkgIG10a19kaXNwX292bC5vIFwKPiAgCQkgIG10 a19kaXNwX3JkbWEubyBcCj4gQEAgLTE0LDEwICsyMiwzIEBAIG1lZGlhdGVrLWRybS15IDo9IG10 a19kaXNwX2NvbG9yLm8gXAo+ICAJCSAgbXRrX2RwaS5vCj4gIAo+ICBvYmotJChDT05GSUdfRFJN X01FRElBVEVLKSArPSBtZWRpYXRlay1kcm0ubwo+IC0KPiAtbWVkaWF0ZWstZHJtLWhkbWktb2Jq cyA6PSBtdGtfY2VjLm8gXAo+IC0JCQkgIG10a19oZG1pLm8gXAo+IC0JCQkgIG10a19oZG1pX2Rk Yy5vIFwKPiAtCQkJICBtdGtfbXQ4MTczX2hkbWlfcGh5Lm8KPiAtCj4gLW9iai0kKENPTkZJR19E Uk1fTUVESUFURUtfSERNSSkgKz0gbWVkaWF0ZWstZHJtLWhkbWkubwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfaGRtaS5jCj4gaW5kZXggMmQ0NWQxZGQ5NTU0Li43YzAyMmYzZjUzZWMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYwo+IEBAIC0yMzMsNiArMjMzLDcgQEAgc3Rh dGljIHZvaWQgbXRrX2hkbWlfaHdfdmlkX2JsYWNrKHN0cnVjdCBtdGtfaGRtaSAqaGRtaSwgYm9v bCBibGFjaykKPiAgc3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUoc3Ry dWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSkKPiAgewo+ICAJc3RydWN0IGFybV9zbWNj Y19yZXMgcmVzOwo+ICsJc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSBwaHlfZ2V0X2Ry dmRhdGEoaGRtaS0+cGh5KTsKPiAgCj4gIAkvKgo+ICAJICogTVQ4MTczIEhETUkgaGFyZHdhcmUg aGFzIGFuIG91dHB1dCBjb250cm9sIGJpdCB0byBlbmFibGUvZGlzYWJsZSBIRE1JCj4gQEAgLTI0 MCw4ICsyNDEsMTMgQEAgc3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfbWFrZV9yZWdfd3JpdGFibGUo c3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSkKPiAgCSAqIFRoZSBBUk0gdHJ1c3Rl ZCBmaXJtd2FyZSBwcm92aWRlcyBhbiBBUEkgZm9yIHRoZSBIRE1JIGRyaXZlciB0byBzZXQKPiAg CSAqIHRoaXMgY29udHJvbCBiaXQgdG8gZW5hYmxlIEhETUkgb3V0cHV0IGluIHN1cGVydmlzb3Ig bW9kZS4KPiAgCSAqLwo+IC0JYXJtX3NtY2NjX3NtYyhNVEtfU0lQX1NFVF9BVVRIT1JJWkVEX1NF Q1VSRV9SRUcsIDB4MTQwMDA5MDQsIDB4ODAwMDAwMDAsCj4gLQkJICAgICAgMCwgMCwgMCwgMCwg MCwgJnJlcyk7Cj4gKwlpZiAoaGRtaV9waHktPmNvbmYgJiYgaGRtaV9waHktPmNvbmYtPnR6X2Vu YWJsZWQpCj4gKwkJYXJtX3NtY2NjX3NtYyhNVEtfU0lQX1NFVF9BVVRIT1JJWkVEX1NFQ1VSRV9S RUcsIDB4MTQwMDA5MDQsCj4gKwkJCSAgICAgIDB4ODAwMDAwMDAsIDAsIDAsIDAsIDAsIDAsICZy ZXMpOwo+ICsJZWxzZQo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhoZG1pLT5zeXNfcmVnbWFwLAo+ ICsJCQkJICAgaGRtaS0+c3lzX29mZnNldCArIEhETUlfU1lTX0NGRzIwLAo+ICsJCQkJICAgMHg4 MDAwODAwNSwgZW5hYmxlID8gMHg4MDAwMDAwNSA6IDB4ODAwMCk7Cj4gIAo+ICAJcmVnbWFwX3Vw ZGF0ZV9iaXRzKGhkbWktPnN5c19yZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19D RkcyMCwKPiAgCQkJICAgSERNSV9QQ0xLX0ZSRUVfUlVOLCBlbmFibGUgPyBIRE1JX1BDTEtfRlJF RV9SVU4gOiAwKTsKPiBAQCAtMTQzNyw2ICsxNDQzLDcgQEAgc3RhdGljIGludCBtdGtfaGRtaV9k dF9wYXJzZV9wZGF0YShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksCj4gIAlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpjZWNfcGRldjsKPiAgCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiAgCXN0cnVjdCBy ZXNvdXJjZSAqbWVtOwo+ICsJY29uc3QgY2hhciAqcGh5X25hbWU7Cj4gIAlpbnQgcmV0Owo+ICAK PiAgCXJldCA9IG10a19oZG1pX2dldF9hbGxfY2xrKGhkbWksIG5wKTsKPiBAQCAtMTQ0NSw2ICsx NDUyLDE4IEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfZHRfcGFyc2VfcGRhdGEoc3RydWN0IG10a19o ZG1pICpoZG1pLAo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gb2ZfcHJvcGVy dHlfcmVhZF9zdHJpbmcobnAsICJwaHktbmFtZXMiLCAmcGh5X25hbWUpOwo+ICsJaWYgKHJldCA8 IDApIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFkIHBoeS1uYW1lczogJWRcbiIs IHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCWhkbWktPnBoeSA9IGRldm1fcGh5X2dl dChkZXYsIHBoeV9uYW1lKTsKPiArCWlmIChJU19FUlIoaGRtaS0+cGh5KSkgewo+ICsJCXJldCA9 IFBUUl9FUlIoaGRtaS0+cGh5KTsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgSERN SSBQSFk6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICAJLyogVGhl IENFQyBtb2R1bGUgaGFuZGxlcyBIRE1JIGhvdHBsdWcgZGV0ZWN0aW9uICovCj4gIAljZWNfbnAg PSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShucC0+cGFyZW50LCBOVUxMLAo+ICAJCQkJCSAibWVk aWF0ZWssbXQ4MTczLWNlYyIpOwo+IEBAIC0xNjc3LDEzICsxNjk2LDYgQEAgc3RhdGljIGludCBt dGtfZHJtX2hkbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmIChy ZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQloZG1pLT5waHkgPSBkZXZtX3BoeV9nZXQoZGV2 LCAiaGRtaSIpOwo+IC0JaWYgKElTX0VSUihoZG1pLT5waHkpKSB7Cj4gLQkJcmV0ID0gUFRSX0VS UihoZG1pLT5waHkpOwo+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBIRE1JIFBIWTog JWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gIAlwbGF0Zm9ybV9zZXRf ZHJ2ZGF0YShwZGV2LCBoZG1pKTsKPiAgCj4gIAlyZXQgPSBtdGtfaGRtaV9vdXRwdXRfaW5pdCho ZG1pKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuaAo+IGluZGV4IDYzNzFiM2RlMWZm Ni4uYTM1MGE2YzkyNzFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfaGRtaS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmgKPiBA QCAtMTMsMTEgKzEzLDM3IEBACj4gICAqLwo+ICAjaWZuZGVmIF9NVEtfSERNSV9DVFJMX0gKPiAg I2RlZmluZSBfTVRLX0hETUlfQ1RSTF9ICj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5o Pgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKwo+ICtzdHJ1Y3QgbXRr X2hkbWlfcGh5X2NvbmYgewo+ICsJYm9vbCB0el9lbmFibGVkOwo+ICsJY29uc3Qgc3RydWN0IGNs a19vcHMgKmhkbWlfcGh5X2Nsa19vcHM7Cj4gKwljb25zdCBzdHJ1Y3QgcGh5X29wcyAqaGRtaV9w aHlfZGV2X29wczsKPiArfTsKPiArCj4gK3N0cnVjdCBtdGtfaGRtaV9waHkgewo+ICsJdm9pZCBf X2lvbWVtICpyZWdzOwo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IG10a19oZG1p X3BoeV9jb25mICpjb25mOwo+ICsJc3RydWN0IGNsayAqcGxsOwo+ICsJc3RydWN0IGNsa19odyBw bGxfaHc7Cj4gKwl1bnNpZ25lZCBsb25nIHBsbF9yYXRlOwo+ICsJdW5zaWduZWQgY2hhciBkcnZf aW1wX2NsazsKPiArCXVuc2lnbmVkIGNoYXIgZHJ2X2ltcF9kMjsKPiArCXVuc2lnbmVkIGNoYXIg ZHJ2X2ltcF9kMTsKPiArCXVuc2lnbmVkIGNoYXIgZHJ2X2ltcF9kMDsKPiArCXVuc2lnbmVkIGlu dCBpYmlhczsKPiArCXVuc2lnbmVkIGludCBpYmlhc191cDsKPiArfTsKPiAgCj4gIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXI7Cj4gIAo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtf Y2VjX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlfZGRj X2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlfcGh5X2Ry aXZlcjsKPiArZXh0ZXJuIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9waHlfODE3 M19jb25mOwo+ICAKPiAgI2VuZGlmIC8qIF9NVEtfSERNSV9DVFJMX0ggKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19oZG1pX3BoeS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjgyZWQ3MzU3NWUwNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMKPiBAQCAtMCwwICsxLDE1NCBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgKGMpIDIwMTggTWVkaWFUZWsgSW5jLgo+ICsgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVA bWVkaWF0ZWsuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nv bi5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9w bGF0Zm9ybS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bo eS9waHkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSAibXRrX2hkbWkuaCIKPiArCj4gK3N0YXRpYyB2 b2lkIG10a19oZG1pX3BoeV9jbGtfZ2V0X29wcyhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3Bo eSwKPiArCQkJCSAgICAgY29uc3Qgc3RydWN0IGNsa19vcHMgKipvcHMpCj4gK3sKPiArCWlmICho ZG1pX3BoeSAmJiBoZG1pX3BoeS0+Y29uZiAmJiBoZG1pX3BoeS0+Y29uZi0+aGRtaV9waHlfY2xr X29wcykKPiArCQkqb3BzID0gaGRtaV9waHktPmNvbmYtPmhkbWlfcGh5X2Nsa19vcHM7Cj4gKwll bHNlCj4gKwkJZGV2X2VycihoZG1pX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIGdldCBjbGsgb3BzIG9m IHBoeVxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyAqCj4gK210 a19oZG1pX3BoeV9kZXZfZ2V0X29wcyhjb25zdCBzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3Bo eSkKPiArewo+ICsJaWYgKGhkbWlfcGh5ICYmIGhkbWlfcGh5LT5jb25mICYmIGhkbWlfcGh5LT5j b25mLT5oZG1pX3BoeV9kZXZfb3BzKQo+ICsJCXJldHVybiBoZG1pX3BoeS0+Y29uZi0+aGRtaV9w aHlfZGV2X29wczsKPiArCWRldl9lcnIoaGRtaV9waHktPmRldiwgIkZhaWxlZCB0byBnZXQgZGV2 IG9wcyBvZiBwaHlcbiIpOwo+ICsJCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19oZG1pX3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsJc3RydWN0IG10a19oZG1pX3Bo eSAqaGRtaV9waHk7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsKPiArCXN0cnVjdCBjbGsgKnJl Zl9jbGs7Cj4gKwljb25zdCBjaGFyICpyZWZfY2xrX25hbWU7Cj4gKwlzdHJ1Y3QgY2xrX2luaXRf ZGF0YSBjbGtfaW5pdCA9IHsKPiArCQkubnVtX3BhcmVudHMgPSAxLAo+ICsJCS5wYXJlbnRfbmFt ZXMgPSAoY29uc3QgY2hhciAqIGNvbnN0ICopJnJlZl9jbGtfbmFtZSwKPiArCQkuZmxhZ3MgPSBD TEtfU0VUX1JBVEVfUEFSRU5UIHwgQ0xLX1NFVF9SQVRFX0dBVEUsCj4gKwl9Owo+ICsKPiArCXN0 cnVjdCBwaHkgKnBoeTsKPiArCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsKPiAr CWludCByZXQ7Cj4gKwo+ICsJaGRtaV9waHkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmhk bWlfcGh5KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWhkbWlfcGh5KQo+ICsJCXJldHVybiAtRU5P TUVNOwo+ICsKPiArCW1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNF X01FTSwgMCk7Cj4gKwloZG1pX3BoeS0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYs IG1lbSk7Cj4gKwlpZiAoSVNfRVJSKGhkbWlfcGh5LT5yZWdzKSkgewo+ICsJCXJldCA9IFBUUl9F UlIoaGRtaV9waHktPnJlZ3MpOwo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBtZW1v cnkgcmVzb3VyY2U6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJ cmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwbGxfcmVmIik7Cj4gKwlpZiAoSVNfRVJSKHJl Zl9jbGspKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihyZWZfY2xrKTsKPiArCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJGYWlsZWQgdG8gZ2V0IFBMTCByZWZlcmVuY2UgY2xvY2s6ICVkXG4iLAo+ICsJCQly ZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwlyZWZfY2xrX25hbWUgPSBfX2Nsa19nZXRf bmFtZShyZWZfY2xrKTsKPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyhkZXYt Pm9mX25vZGUsICJjbG9jay1vdXRwdXQtbmFtZXMiLAo+ICsJCQkJICAgICAgJmNsa19pbml0Lm5h bWUpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFk IGNsb2NrLW91dHB1dC1uYW1lczogJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwloZG1pX3BoeS0+ZGV2ID0gZGV2Owo+ICsJaGRtaV9waHktPmNvbmYgPQo+ICsJCShz dHJ1Y3QgbXRrX2hkbWlfcGh5X2NvbmYgKilvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsK PiArCW10a19oZG1pX3BoeV9jbGtfZ2V0X29wcyhoZG1pX3BoeSwgJmNsa19pbml0Lm9wcyk7Cj4g KwloZG1pX3BoeS0+cGxsX2h3LmluaXQgPSAmY2xrX2luaXQ7Cj4gKwloZG1pX3BoeS0+cGxsID0g ZGV2bV9jbGtfcmVnaXN0ZXIoZGV2LCAmaGRtaV9waHktPnBsbF9odyk7Cj4gKwlpZiAoSVNfRVJS KGhkbWlfcGh5LT5wbGwpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihoZG1pX3BoeS0+cGxsKTsKPiAr CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBQTEw6ICVkXG4iLCByZXQpOwo+ICsJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2 LT5vZl9ub2RlLCAibWVkaWF0ZWssaWJpYXMiLAo+ICsJCQkJICAgJmhkbWlfcGh5LT5pYmlhcyk7 Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBn ZXQgaWJpYXM6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0 ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2RlLCAibWVkaWF0ZWssaWJpYXNfdXAi LAo+ICsJCQkJICAgJmhkbWlfcGh5LT5pYmlhc191cCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJ CWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgaWJpYXMgdXA6ICVkXG4iLCByZXQp Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZGV2X2luZm8oZGV2LCAiVXNpbmcgZGVm YXVsdCBUWCBEUlYgaW1wZWRhbmNlOiA0LjJrLzM2XG4iKTsKPiArCWhkbWlfcGh5LT5kcnZfaW1w X2NsayA9IDB4MzA7Cj4gKwloZG1pX3BoeS0+ZHJ2X2ltcF9kMiA9IDB4MzA7Cj4gKwloZG1pX3Bo eS0+ZHJ2X2ltcF9kMSA9IDB4MzA7Cj4gKwloZG1pX3BoeS0+ZHJ2X2ltcF9kMCA9IDB4MzA7Cj4g Kwo+ICsJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwgbXRrX2hkbWlfcGh5X2Rldl9n ZXRfb3BzKGhkbWlfcGh5KSk7Cj4gKwlpZiAoSVNfRVJSKHBoeSkpIHsKPiArCQlkZXZfZXJyKGRl diwgIkZhaWxlZCB0byBjcmVhdGUgSERNSSBQSFlcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKHBo eSk7Cj4gKwl9Cj4gKwlwaHlfc2V0X2RydmRhdGEocGh5LCBoZG1pX3BoeSk7Cj4gKwo+ICsJcGh5 X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2lt cGxlX3hsYXRlKTsKPiArCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgewo+ICsJCWRldl9lcnIo ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEhETUkgUEhZXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VS UihwaHlfcHJvdmlkZXIpOwo+ICsJfQo+ICsKPiArCXJldHVybiBvZl9jbGtfYWRkX3Byb3ZpZGVy KGRldi0+b2Zfbm9kZSwgb2ZfY2xrX3NyY19zaW1wbGVfZ2V0LAo+ICsJCQkJICAgaGRtaV9waHkt PnBsbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2hkbWlfcGh5X21hdGNoW10gPSB7Cj4g Kwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBoeSIsCj4gKwkgIC5kYXRh ID0gJm10a19oZG1pX3BoeV84MTczX2NvbmYsCj4gKwl9LAo+ICsJe30sCj4gK307Cj4gKwo+ICtz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3BoeV9kcml2ZXIgPSB7Cj4gKwkucHJvYmUg PSBtdGtfaGRtaV9waHlfcHJvYmUsCj4gKwkucmVtb3ZlID0gbXRrX2hkbWlfcGh5X3JlbW92ZSwK PiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAibWVkaWF0ZWstaGRtaS1waHkiLAo+ICsJCS5v Zl9tYXRjaF90YWJsZSA9IG10a19oZG1pX3BoeV9tYXRjaCwKPiArCX0sCj4gK307Cj4gKwo+ICtN T0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIEhETUkgUEhZIERyaXZlciIpOwo+ICtNT0RVTEVf TElDRU5TRSgiR1BMIHYyIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210 ODE3M19oZG1pX3BoeS5jCj4gaW5kZXggNTFjYjljZmI2NjQ2Li4xYTM1ZmRkNDA1ZDggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMKPiBA QCAtMjEsNiArMjEsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ ICsjaW5jbHVkZSAibXRrX2hkbWkuaCIKPiAgCj4gICNkZWZpbmUgSERNSV9DT04wCQkweDAwCj4g ICNkZWZpbmUgUkdfSERNSVRYX1BMTF9FTgkJQklUKDMxKQo+IEBAIC0xMjMsMjAgKzEyNCw2IEBA Cj4gICNkZWZpbmUgUkdTX0hETUlUWF81VDFfRURHCQkoMHhmIDw8IDQpCj4gICNkZWZpbmUgUkdT X0hETUlUWF9QTFVHX1RTVAkJQklUKDApCj4gIAo+IC1zdHJ1Y3QgbXRrX2hkbWlfcGh5IHsKPiAt CXZvaWQgX19pb21lbSAqcmVnczsKPiAtCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAtCXN0cnVjdCBj bGsgKnBsbDsKPiAtCXN0cnVjdCBjbGtfaHcgcGxsX2h3Owo+IC0JdW5zaWduZWQgbG9uZyBwbGxf cmF0ZTsKPiAtCXU4IGRydl9pbXBfY2xrOwo+IC0JdTggZHJ2X2ltcF9kMjsKPiAtCXU4IGRydl9p bXBfZDE7Cj4gLQl1OCBkcnZfaW1wX2QwOwo+IC0JdTMyIGliaWFzOwo+IC0JdTMyIGliaWFzX3Vw Owo+IC19Owo+IC0KPiAgc3RhdGljIGNvbnN0IHU4IFBSRURJVlszXVs0XSA9IHsKPiAgCXsweDAs IDB4MCwgMHgwLCAweDB9LAkvKiAyN01oeiAqLwo+ICAJezB4MSwgMHgxLCAweDEsIDB4MX0sCS8q IDc0TWh6ICovCj4gQEAgLTM2Nyw3ICszNTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBtdGtf aGRtaV9wbGxfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCj4gIAlyZXR1cm4gaGRtaV9w aHktPnBsbF9yYXRlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgbXRr X2hkbWlfcGxsX29wcyA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG10a19oZG1p X3BoeV9wbGxfb3BzID0gewo+ICAJLnByZXBhcmUgPSBtdGtfaGRtaV9wbGxfcHJlcGFyZSwKPiAg CS51bnByZXBhcmUgPSBtdGtfaGRtaV9wbGxfdW5wcmVwYXJlLAo+ICAJLnNldF9yYXRlID0gbXRr X2hkbWlfcGxsX3NldF9yYXRlLAo+IEBAIC00MTQsMTE4ICs0MDEsMTYgQEAgc3RhdGljIGludCBt dGtfaGRtaV9waHlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgbXRrX2hkbWlfcGh5X29wcyA9IHsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIG10a19oZG1pX3BoeV9kZXZfb3BzID0gewo+ ICAJLnBvd2VyX29uID0gbXRrX2hkbWlfcGh5X3Bvd2VyX29uLAo+ICAJLnBvd2VyX29mZiA9IG10 a19oZG1pX3BoeV9wb3dlcl9vZmYsCj4gIAkub3duZXIgPSBUSElTX01PRFVMRSwKPiAgfTsKPiAg Cj4gLXN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCj4gLXsKPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gLQlzdHJ1 Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeTsKPiAtCXN0cnVjdCByZXNvdXJjZSAqbWVtOwo+IC0J c3RydWN0IGNsayAqcmVmX2NsazsKPiAtCWNvbnN0IGNoYXIgKnJlZl9jbGtfbmFtZTsKPiAtCXN0 cnVjdCBjbGtfaW5pdF9kYXRhIGNsa19pbml0ID0gewo+IC0JCS5vcHMgPSAmbXRrX2hkbWlfcGxs X29wcywKPiAtCQkubnVtX3BhcmVudHMgPSAxLAo+IC0JCS5wYXJlbnRfbmFtZXMgPSAoY29uc3Qg Y2hhciAqIGNvbnN0ICopJnJlZl9jbGtfbmFtZSwKPiAtCQkuZmxhZ3MgPSBDTEtfU0VUX1JBVEVf UEFSRU5UIHwgQ0xLX1NFVF9SQVRFX0dBVEUsCj4gLQl9Owo+IC0Jc3RydWN0IHBoeSAqcGh5Owo+ IC0Jc3RydWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOwo+IC0JaW50IHJldDsKPiAtCj4g LQloZG1pX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaGRtaV9waHkpLCBHRlBfS0VS TkVMKTsKPiAtCWlmICghaGRtaV9waHkpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+IC0JbWVt ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiAtCWhk bWlfcGh5LT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgbWVtKTsKPiAtCWlmIChJ U19FUlIoaGRtaV9waHktPnJlZ3MpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihoZG1pX3BoeS0+cmVn cyk7Cj4gLQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IG1lbW9yeSByZXNvdXJjZTogJWRc biIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlyZWZfY2xrID0gZGV2bV9j bGtfZ2V0KGRldiwgInBsbF9yZWYiKTsKPiAtCWlmIChJU19FUlIocmVmX2NsaykpIHsKPiAtCQly ZXQgPSBQVFJfRVJSKHJlZl9jbGspOwo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0 byBnZXQgUExMIHJlZmVyZW5jZSBjbG9jazogJWRcbiIsCj4gLQkJCXJldCk7Cj4gLQkJcmV0dXJu IHJldDsKPiAtCX0KPiAtCXJlZl9jbGtfbmFtZSA9IF9fY2xrX2dldF9uYW1lKHJlZl9jbGspOwo+ IC0KPiAtCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldi0+b2Zfbm9kZSwgImNsb2Nr LW91dHB1dC1uYW1lcyIsCj4gLQkJCQkgICAgICAmY2xrX2luaXQubmFtZSk7Cj4gLQlpZiAocmV0 IDwgMCkgewo+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQgY2xvY2stb3V0cHV0LW5h bWVzOiAlZFxuIiwgcmV0KTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiAtCWhkbWlfcGh5 LT5wbGxfaHcuaW5pdCA9ICZjbGtfaW5pdDsKPiAtCWhkbWlfcGh5LT5wbGwgPSBkZXZtX2Nsa19y ZWdpc3RlcihkZXYsICZoZG1pX3BoeS0+cGxsX2h3KTsKPiAtCWlmIChJU19FUlIoaGRtaV9waHkt PnBsbCkpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5wbGwpOwo+IC0JCWRldl9lcnIo ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIFBMTDogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJl dDsKPiAtCX0KPiAtCj4gLQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUs ICJtZWRpYXRlayxpYmlhcyIsCj4gLQkJCQkgICAmaGRtaV9waHktPmliaWFzKTsKPiAtCWlmIChy ZXQgPCAwKSB7Cj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhczog JWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlyZXQgPSBvZl9wcm9w ZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJtZWRpYXRlayxpYmlhc191cCIsCj4gLQkJCQkg ICAmaGRtaV9waHktPmliaWFzX3VwKTsKPiAtCWlmIChyZXQgPCAwKSB7Cj4gLQkJZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhcyB1cDogJWRcbiIsIHJldCk7Cj4gLQkJcmV0 dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlkZXZfaW5mbyhkZXYsICJVc2luZyBkZWZhdWx0IFRYIERS ViBpbXBlZGFuY2U6IDQuMmsvMzZcbiIpOwo+IC0JaGRtaV9waHktPmRydl9pbXBfY2xrID0gMHgz MDsKPiAtCWhkbWlfcGh5LT5kcnZfaW1wX2QyID0gMHgzMDsKPiAtCWhkbWlfcGh5LT5kcnZfaW1w X2QxID0gMHgzMDsKPiAtCWhkbWlfcGh5LT5kcnZfaW1wX2QwID0gMHgzMDsKPiAtCj4gLQlwaHkg PSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAmbXRrX2hkbWlfcGh5X29wcyk7Cj4gLQlpZiAo SVNfRVJSKHBoeSkpIHsKPiAtCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBjcmVhdGUgSERNSSBQ SFlcbiIpOwo+IC0JCXJldHVybiBQVFJfRVJSKHBoeSk7Cj4gLQl9Cj4gLQlwaHlfc2V0X2RydmRh dGEocGh5LCBoZG1pX3BoeSk7Cj4gLQo+IC0JcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJv dmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKPiAtCWlmIChJU19FUlIo cGh5X3Byb3ZpZGVyKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihwaHlfcHJvdmlkZXIpOwo+IC0KPiAt CWhkbWlfcGh5LT5kZXYgPSBkZXY7Cj4gLQlyZXR1cm4gb2ZfY2xrX2FkZF9wcm92aWRlcihkZXYt Pm9mX25vZGUsIG9mX2Nsa19zcmNfc2ltcGxlX2dldCwKPiAtCQkJCSAgIGhkbWlfcGh5LT5wbGwp Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG10a19oZG1pX3BoeV9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiAtewo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19oZG1pX3BoeV9tYXRjaFtdID0gewo+IC0JeyAu Y29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaGRtaS1waHkiLCB9LAo+IC0Je30sCj4gLX07 Cj4gLQo+IC1zdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3BoeV9kcml2ZXIgPSB7Cj4g LQkucHJvYmUgPSBtdGtfaGRtaV9waHlfcHJvYmUsCj4gLQkucmVtb3ZlID0gbXRrX2hkbWlfcGh5 X3JlbW92ZSwKPiAtCS5kcml2ZXIgPSB7Cj4gLQkJLm5hbWUgPSAibWVkaWF0ZWstaGRtaS1waHki LAo+IC0JCS5vZl9tYXRjaF90YWJsZSA9IG10a19oZG1pX3BoeV9tYXRjaCwKPiAtCX0sCj4gK3N0 cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9waHlfODE3M19jb25mID0gewo+ICsJLnR6 X2VuYWJsZWQgPSB0cnVlLAo+ICsJLmhkbWlfcGh5X2Nsa19vcHMgPSAmbXRrX2hkbWlfcGh5X3Bs bF9vcHMsCj4gKwkuaGRtaV9waHlfZGV2X29wcyA9ICZtdGtfaGRtaV9waHlfZGV2X29wcywKPiAg fTsKPiAgCj4gIE1PRFVMRV9BVVRIT1IoIkppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPiIp OwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=