From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH] drm/i915/ehl: Add support for DPLL4 (v5) Date: Thu, 6 Jun 2019 12:22:53 +0300 Message-ID: <20190606092253.GC4301@ideak-desk.fi.intel.com> References: <20190605184128.4602-1-vivek.kasireddy@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71CB7893EC for ; Thu, 6 Jun 2019 09:22:57 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190605184128.4602-1-vivek.kasireddy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vivek Kasireddy Cc: intel-gfx@lists.freedesktop.org, Lucas De Marchi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMDUsIDIwMTkgYXQgMTE6NDE6MjhBTSAtMDcwMCwgVml2ZWsgS2FzaXJlZGR5 IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUExMNCBvbiBFSEwgdGhhdCBp bmNsdWRlIHRoZQo+IGZvbGxvd2luZyByZXN0cmljdGlvbnM6Cj4gCj4gLSBEUExMNCBjYW5ub3Qg YmUgdXNlZCB3aXRoIERESUEgKGNvbWJvIHBvcnQgQSBpbnRlcm5hbCBlRFAgdXNhZ2UpLgo+ICAg RFBMTDQgY2FuIGJlIHVzZWQgd2l0aCBvdGhlciBERElzLCBpbmNsdWRpbmcgRERJRAo+ICAgKGNv bWJvIHBvcnQgQSBleHRlcm5hbCB1c2FnZSkuCj4gCj4gLSBEUExMNCBjYW5ub3QgYmUgZW5hYmxl ZCB3aGVuIERDNSBvciBEQzYgYXJlIGVuYWJsZWQuCj4gCj4gLSBUaGUgRFBMTDQgZW5hYmxlLCBs b2NrLCBwb3dlciBlbmFibGVkLCBhbmQgcG93ZXIgc3RhdGUgYXJlIGNvbm5lY3RlZAo+ICAgdG8g dGhlIE1HUExMMV9FTkFCTEUgcmVnaXN0ZXIuCj4gCj4gdjI6IChzdWdnZXN0aW9ucyBmcm9tIEJv YiBQYWF1d2UpCj4gLSBSZXdvcmsgZWhsX2dldF9kcGxsKCkgZnVuY3Rpb24gdG8gY2FsbCBpbnRl bF9maW5kX3NoYXJlZF9kcGxsKCkgYW5kCj4gICBpdGVyYXRlIHR3aWNlOiBvbmNlIGZvciBDb21i byBwbGxzIGFuZCBvbmNlIGZvciBNRyBwbGxzLgo+IAo+IC0gVXNlIE1HIHBsbCBmdW5jcyBmb3Ig RFBMTDQgaW5zdGVhZCBvZiBjcmVhdGluZyBuZXcgb25lcyBhbmQgbW9kaWZ5Cj4gICBtZ19wbGxf ZW5hYmxlIHRvIGluY2x1ZGUgdGhlIHJlc3RyaWN0aW9ucyBmb3IgRUhMLgo+IAo+IHYzOiBGaXgg Y29tcGlsYXRpb24gZXJyb3IKPiAKPiB2NDogKHN1Z2dlc3Rpb25zIGZyb20gTHVjYXMgYW5kIFZp bGxlKQo+IC0gVHJlYXQgRFBMTDQgYXMgYSBjb21ibyBwaHkgUExMIGFuZCBub3QgYXMgTUcgUExM Cj4gLSBEaXNhYmxlIERDIHN0YXRlcyB3aGVuIHRoaXMgRFBMTCBpcyBiZWluZyBlbmFibGVkCj4g LSBSZXVzZSBpY2xfZ2V0X2RwbGwgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHNlcGFyYXRlIG9uZSBm b3IgRUhMCj4gCj4gdjU6IChzdWdnZXN0aW9uIGZyb20gVmlsbGUpCj4gLSBSZWZjb3VudCB0aGUg REMgT0ZGIHBvd2VyIGRvbWFpbnMgZHVyaW5nIHRoZSBlbmFibGluZyBhbmQgZGlzYWJsaW5nCj4g ICBvZiB0aGlzIERQTEwuCj4gCj4gQ2M6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlA aW50ZWwuY29tPgo+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVs LmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBWaXZlayBLYXNpcmVkZHkgPHZpdmVrLmthc2lyZWRkeUBpbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMgICB8IDQwICsrKysrKysr KysrKysrKysrKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3Iu aCAgIHwgIDUgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMg fCAyMSArKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uaCB8ICA1ICsrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IGluZGV4 IDg5N2Q5MzUzNzQxNC4uNmQ4OWQyMzFiMzNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcGxsX21nci5jCj4gQEAgLTIyLDggKzIyLDggQEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSAi aW50ZWxfZHBpb19waHkuaCIKPiAtI2luY2x1ZGUgImludGVsX2RwbGxfbWdyLmgiCj4gICNpbmNs dWRlICJpbnRlbF9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2RwbGxfbWdyLmgiCj4gIAo+ICAv KioKPiAgICogRE9DOiBEaXNwbGF5IFBMTHMKPiBAQCAtMjgwNiw2ICsyODA2LDEyIEBAIGljbF9n ZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChpbnRl bF9wb3J0X2lzX2NvbWJvcGh5KGRldl9wcml2LCBwb3J0KSkgewo+ICAJCW1pbiA9IERQTExfSURf SUNMX0RQTEwwOwo+ICAJCW1heCA9IERQTExfSURfSUNMX0RQTEwxOwo+ICsKPiArCQlpZiAoSVNf RUxLSEFSVExBS0UoZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChlbmNvZGVyLT50eXBlICE9IElOVEVM X09VVFBVVF9FRFApCj4gKwkJCQltYXggPSBEUExMX0lEX0VITF9EUExMNDsKPiArCQl9Cj4gKwo+ ICAJCXJldCA9IGljbF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19zdGF0ZSwgZW5jb2Rlcik7Cj4gIAl9 IGVsc2UgaWYgKGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIHBvcnQpKSB7Cj4gIAkJaWYgKGVu Y29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCkgewo+IEBAIC0yOTQ1LDggKzI5NTEs MTQgQEAgc3RhdGljIGJvb2wgY29tYm9fcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bCwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0ZSkKPiAgewo+ IC0JcmV0dXJuIGljbF9wbGxfZ2V0X2h3X3N0YXRlKGRldl9wcml2LCBwbGwsIGh3X3N0YXRlLAo+ IC0JCQkJICAgIENOTF9EUExMX0VOQUJMRShwbGwtPmluZm8tPmlkKSk7Cj4gKwlpOTE1X3JlZ190 IGVuYWJsZV9yZWcgPSBDTkxfRFBMTF9FTkFCTEUocGxsLT5pbmZvLT5pZCk7Cj4gKwo+ICsJaWYg KElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSAmJgo+ICsJICAgIHBsbC0+aW5mby0+aWQgPT0gRFBM TF9JRF9FSExfRFBMTDQpIHsKPiArCQllbmFibGVfcmVnID0gTUdfUExMX0VOQUJMRSgwKTsKPiAr CX0KPiArCj4gKwlyZXR1cm4gaWNsX3BsbF9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwgaHdf c3RhdGUsIGVuYWJsZV9yZWcpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCB0YnRfcGxsX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTMwNTcsNiAr MzA2OSwxNCBAQCBzdGF0aWMgdm9pZCBjb21ib19wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgewo+ICAJaTkxNV9yZWdfdCBlbmFibGVfcmVnID0gQ05MX0RQ TExfRU5BQkxFKHBsbC0+aW5mby0+aWQpOwo+ICAKPiArCWlmIChJU19FTEtIQVJUTEFLRShkZXZf cHJpdikgJiYKPiArCSAgICBwbGwtPmluZm8tPmlkID09IERQTExfSURfRUhMX0RQTEw0KSB7Cj4g KwkJZW5hYmxlX3JlZyA9IE1HX1BMTF9FTkFCTEUoMCk7Cj4gKwo+ICsJCS8qIE5lZWQgdG8gZGlz YWJsZSBEQyBzdGF0ZXMgd2hlbiB0aGlzIERQTEwgaXMgZW5hYmxlZC4gKi8KPiArCQlpY2xfZGlz YWJsZV9kY19zdGF0ZXMoZGV2X3ByaXYsIHBsbCk7Cj4gKwl9Cj4gKwo+ICAJaWNsX3BsbF9wb3dl cl9lbmFibGUoZGV2X3ByaXYsIHBsbCwgZW5hYmxlX3JlZyk7Cj4gIAo+ICAJaWNsX2RwbGxfd3Jp dGUoZGV2X3ByaXYsIHBsbCk7Cj4gQEAgLTMxNTIsNyArMzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBp Y2xfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0 aWMgdm9pZCBjb21ib19wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gLQlp Y2xfcGxsX2Rpc2FibGUoZGV2X3ByaXYsIHBsbCwgQ05MX0RQTExfRU5BQkxFKHBsbC0+aW5mby0+ aWQpKTsKPiArCWk5MTVfcmVnX3QgZW5hYmxlX3JlZyA9IENOTF9EUExMX0VOQUJMRShwbGwtPmlu Zm8tPmlkKTsKPiArCj4gKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpICYmCj4gKwkgICAg cGxsLT5pbmZvLT5pZCA9PSBEUExMX0lEX0VITF9EUExMNCkgewo+ICsJCWVuYWJsZV9yZWcgPSBN R19QTExfRU5BQkxFKDApOwo+ICsJCWljbF9wbGxfZGlzYWJsZShkZXZfcHJpdiwgcGxsLCBlbmFi bGVfcmVnKTsKPiArCj4gKwkJaWNsX2VuYWJsZV9kY19zdGF0ZXMoZGV2X3ByaXYsIHBsbCk7Cj4g KwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWljbF9wbGxfZGlzYWJsZShkZXZfcHJpdiwgcGxsLCBl bmFibGVfcmVnKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdGJ0X3BsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMzIzMCw2ICszMjYxLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBpY2xfcGxsX21nciA9IHsKPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcGxsX2luZm8gZWhsX3BsbHNbXSA9IHsKPiAgCXsgIkRQTEwgMCIsICZj b21ib19wbGxfZnVuY3MsIERQTExfSURfSUNMX0RQTEwwLCAwIH0sCj4gIAl7ICJEUExMIDEiLCAm Y29tYm9fcGxsX2Z1bmNzLCBEUExMX0lEX0lDTF9EUExMMSwgMCB9LAo+ICsJeyAiRFBMTCA0Iiwg JmNvbWJvX3BsbF9mdW5jcywgRFBMTF9JRF9FSExfRFBMTDQsIDAgfSwKPiAgCXsgfSwKPiAgfTsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gaW5kZXggODgzNWRkMjBm MWQyLi41YTcwMTM0ZjUzOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBsbF9tZ3IuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdy LmgKPiBAQCAtMTE3LDYgKzExNywxMCBAQCBlbnVtIGludGVsX2RwbGxfaWQgewo+ICAJICogQERQ TExfSURfSUNMX0RQTEwxOiBJQ0wgY29tYm8gUEhZIERQTEwxCj4gIAkgKi8KPiAgCURQTExfSURf SUNMX0RQTEwxID0gMSwKPiArCS8qKgo+ICsJICogQERQTExfSURfRUhMX0RQTEw0OiBFSEwgY29t Ym8gUEhZIERQTEw0Cj4gKwkgKi8KPiArCURQTExfSURfRUhMX0RQTEw0ID0gMiwKPiAgCS8qKgo+ ICAJICogQERQTExfSURfSUNMX1RCVFBMTDogSUNMIFRCVCBQTEwKPiAgCSAqLwo+IEBAIC0zMTIs NiArMzE2LDcgQEAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsIHsKPiAgCSAqIEBpbmZvOiBwbGF0 Zm9ybSBzcGVjaWZpYyBpbmZvCj4gIAkgKi8KPiAgCWNvbnN0IHN0cnVjdCBkcGxsX2luZm8gKmlu Zm87Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZnNbUE9XRVJfRE9NQUlOX05VTV07Cj4gIH07 Cj4gIAo+ICAjZGVmaW5lIFNLTF9EUExMMCAwCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYwo+IGluZGV4IDEyZjViNjY5ZjIwZS4uMDllYjVhNWUzMmZhIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC01MjI5LDMgKzUyMjksMjQg QEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gIHsKPiAgCWluaXRfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwo+ ICB9Cj4gKwo+ICt2b2lkIGljbF9kaXNhYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ ICt7Cj4gKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKPiArCj4gKwlm b3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBJQ0xfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9N QUlOUykKPiArCQlwbGwtPndha2VyZWZzW2RvbWFpbl0gPSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dl dChkZXZfcHJpdiwKPiArCQkJCQkJCSAgICAgICAgZG9tYWluKTsKPiArfQoKV2VsbCwgdXNpbmcg cG93ZXIgZG9tYWlucyBtZW50IGFkZGluZyBhIG5ldyBkb21haW4gZm9yIHRoaXMgcHVycG9zZS4K Cj4gKwo+ICt2b2lkIGljbF9lbmFibGVfZGNfc3RhdGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiArCQkJICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiArewo+ ICsJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW47Cj4gKwo+ICsJZm9yX2Vh Y2hfcG93ZXJfZG9tYWluKGRvbWFpbiwgSUNMX0RJU1BMQVlfRENfT0ZGX1BPV0VSX0RPTUFJTlMp Cj4gKwkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIGRvbWFpbiwKPiArCQkJCQlw bGwtPndha2VyZWZzW2RvbWFpbl0pOwo+ICt9Cj4gKwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmgKPiBpbmRleCAwYTRjNGIzYWVlN2QuLmEyZThjNjc5OWIwYSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmgKPiBAQCAtMTM5LDQgKzEzOSw5 IEBAIHZvaWQgY2h2X3BoeV9wb3dlcmdhdGVfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIGJvb2wgY2h2X3BoeV9wb3dlcmdhdGVfY2goc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIGRwaW9fcGh5IHBoeSwKPiAgCQkJICBlbnVtIGRwaW9fY2hhbm5l bCBjaCwgYm9vbCBvdmVycmlkZSk7Cj4gIAo+ICt2b2lkIGljbF9kaXNhYmxlX2RjX3N0YXRlcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgIHN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqcGxsKTsKPiArdm9pZCBpY2xfZW5hYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGwpOwo+ICsKPiAgI2VuZGlmIC8qIF9fSU5URUxfUlVOVElNRV9QTV9IX18gKi8KPiAtLSAK PiAyLjIxLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4