From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 4/4] drm: handle override edid and firmware EDID at drm_do_get_edid() level Date: Mon, 27 Feb 2017 17:09:44 +0200 Message-ID: <20170227150944.GD31595@intel.com> References: <1487344854-18777-1-git-send-email-jani.nikula@intel.com> <1487344854-18777-5-git-send-email-jani.nikula@intel.com> <20170226212242.exlkzm7f4wdaqgep@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170226212242.exlkzm7f4wdaqgep@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Jani Nikula , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU3VuLCBGZWIgMjYsIDIwMTcgYXQgMTA6MjI6NDJQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIEZlYiAxNywgMjAxNyBhdCAwNToyMDo1NFBNICswMjAwLCBKYW5pIE5p a3VsYSB3cm90ZToKPiA+IEhhbmRsZSBkZWJ1Z2ZzIG92ZXJyaWRlIGVkaWQgYW5kIGZpcm13YXJl IGVkaWQgYXQgdGhlIGxvdyBsZXZlbCB0bwo+ID4gdHJhbnNwYXJlbnRseSBhbmQgY29tcGxldGVs eSByZXBsYWNlIHRoZSByZWFsIGVkaWQuIFByZXZpb3VzbHksIHdlCj4gPiBwcmFjdGljYWxseSBv bmx5IHVzZWQgdGhlIG1vZGVzIGZyb20gdGhlIG92ZXJyaWRlIEVESUQsIGFuZCBub25lIG9mIHRo ZQo+ID4gb3RoZXIgZGF0YS4gVGhpcyBhbHNvIHByZXZlbnRzIGFjdHVhbCBFRElEIHJlYWRzIHdo ZW4gdGhlIEVESUQgaXMgdG8gYmUKPiA+IG92ZXJyaWRkZW4sIGJ1dCByZXRhaW5zIHRoZSBEREMg cHJvYmUuCj4gPiAKPiA+IE1vdmUgZmlybXdhcmUgRURJRCBsb2FkaW5nIGZyb20gaGVscGVyIHRv IGNvcmUsIGFzIHRoZSBmdW5jdGlvbmFsaXR5Cj4gPiBtb3ZlcyB0byBsb3dlciBsZXZlbCBhcyB3 ZWxsLiBUaGlzIHdpbGwgcmVzdWx0IGluIGEgY2hhbmdlIG9mIG1vZHVsZQo+ID4gcGFyYW1ldGVy IGZyb20gZHJtX2ttc19oZWxwZXIuZWRpZF9maXJtd2FyZSB0byBkcm0uZWRpZF9maXJtd2FyZSwg d2hpY2gKPiA+IGFyZ3VhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgYW55d2F5Lgo+ID4gCj4gPiBGSVhN RTogdmFsaWRhdGUgb3ZlcnJpZGUgZWRpZCwgZGVkdXBsaWNhdGUgZmlybXdhcmUgZWRpZCB2YWxp ZGF0aW9uLgo+ID4gCj4gPiB2MjogbW92ZSBmaXJtd2FyZSBsb2FkaW5nIHRvIGNvcmUKPiA+IAo+ ID4gU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiA+ IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgfCAgMiArLQo+ID4g IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgfCAgMiArLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9kcm1fZWRpZC5jICAgICAgICAgfCAxNSArKysrKysrKysrKysrKysKPiA+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jIHwgMTkgKy0tLS0tLS0tLS0tLS0tLS0tLQo+ ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4g PiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1 L2RybS9LY29uZmlnCj4gPiBpbmRleCA5MGJjNjVkMDdhMzUuLmY5ODNlZjYwMjk5YyAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZwo+ID4gQEAgLTEwMSw3ICsxMDEsNyBAQCBjb25maWcgRFJNX0ZCREVWX0VNVUxB VElPTgo+ID4gIAo+ID4gIGNvbmZpZyBEUk1fTE9BRF9FRElEX0ZJUk1XQVJFCj4gPiAgCWJvb2wg IkFsbG93IHRvIHNwZWNpZnkgYW4gRURJRCBkYXRhIHNldCBpbnN0ZWFkIG9mIHByb2JpbmcgZm9y IGl0Igo+ID4gLQlkZXBlbmRzIG9uIERSTV9LTVNfSEVMUEVSCj4gPiArCWRlcGVuZHMgb24gRFJN Cj4gPiAgCWhlbHAKPiA+ICAJICBTYXkgWSBoZXJlLCBpZiB5b3Ugd2FudCB0byB1c2UgRURJRCBk YXRhIHRvIGJlIGxvYWRlZCBmcm9tIHRoZQo+ID4gIAkgIC9saWIvZmlybXdhcmUgZGlyZWN0b3J5 IG9yIG9uZSBvZiB0aGUgcHJvdmlkZWQgYnVpbHQtaW4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+IGluZGV4IDky ZGUzOTkxZmE1Ni4uYTEwYWMwOTU2MDhmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+IEBAIC0yNywx MyArMjcsMTMgQEAgZHJtLSQoQ09ORklHX0RSTV9QQU5FTCkgKz0gZHJtX3BhbmVsLm8KPiA+ICBk cm0tJChDT05GSUdfT0YpICs9IGRybV9vZi5vCj4gPiAgZHJtLSQoQ09ORklHX0FHUCkgKz0gZHJt X2FncHN1cHBvcnQubwo+ID4gIGRybS0kKENPTkZJR19ERUJVR19GUykgKz0gZHJtX2RlYnVnZnMu byBkcm1fZGVidWdmc19jcmMubwo+ID4gK2RybS0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1X QVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KPiA+ICAKPiA+ICBkcm1fa21zX2hlbHBlci15IDo9IGRy bV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAo+ID4g IAkJZHJtX3BsYW5lX2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hl bHBlci5vIFwKPiA+ICAJCWRybV9rbXNfaGVscGVyX2NvbW1vbi5vIGRybV9kcF9kdWFsX21vZGVf aGVscGVyLm8gXAo+ID4gIAkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVs cGVyLm8KPiA+ICAKPiA+IC1kcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJ Uk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8KPiA+ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19E Uk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm8KPiA+ICBkcm1fa21zX2hlbHBl ci0kKENPTkZJR19EUk1fS01TX0NNQV9IRUxQRVIpICs9IGRybV9mYl9jbWFfaGVscGVyLm8KPiA+ ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRFBfQVVYX0NIQVJERVYpICs9IGRybV9kcF9h dXhfZGV2Lm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gPiBpbmRleCBlMTc0M2FiMjc2ZGMuLjQwMDc5OThk NWNlMyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gQEAgLTEzMDksNiArMTMwOSwxMCBAQCBz dGF0aWMgdm9pZCBjb25uZWN0b3JfYmFkX2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ICAgKiBsZXZlbCwgZHJpdmVycyBtdXN0IG1ha2UgYWxsIHJlYXNvbmFibGUgZWZm b3J0cyB0byBleHBvc2UgaXQgYXMgYW4gSTJDCj4gPiAgICogYWRhcHRlciBhbmQgdXNlIGRybV9n ZXRfZWRpZCgpIGluc3RlYWQgb2YgYWJ1c2luZyB0aGlzIGZ1bmN0aW9uLgo+ID4gICAqCj4gPiAr ICogVGhlIEVESUQgbWF5IGJlIG92ZXJyaWRkZW4gdXNpbmcgZGVidWdmcyBvdmVycmlkZV9lZGlk IG9yIGZpcm1hcmUgRURJRAo+ID4gKyAqIChkcm1fbG9hZF9lZGlkX2Zpcm13YXJlKCkpLCBpbiB0 aGlzIHByaW9yaXR5IG9yZGVyLiBIYXZpbmcgZWl0aGVyIG9mIHRoZW0KPiA+ICsgKiBieXBhc3Nl cyBhY3R1YWwgRURJRCByZWFkcy4KPiA+ICsgKgo+ID4gICAqIFJldHVybjogUG9pbnRlciB0byB2 YWxpZCBFRElEIG9yIE5VTEwgaWYgd2UgY291bGRuJ3QgZmluZCBhbnkuCj4gPiAgICovCj4gPiAg c3RydWN0IGVkaWQgKmRybV9kb19nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ID4gQEAgLTEzMTgsNiArMTMyMiwxNyBAQCBzdHJ1Y3QgZWRpZCAqZHJtX2RvX2dldF9l ZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAgewo+ID4gIAlpbnQgaSwg aiA9IDAsIHZhbGlkX2V4dGVuc2lvbnMgPSAwOwo+ID4gIAl1OCAqZWRpZCwgKm5ldzsKPiA+ICsJ c3RydWN0IGVkaWQgKm92ZXJyaWRlID0gTlVMTDsKPiA+ICsKPiA+ICsJaWYgKGNvbm5lY3Rvci0+ b3ZlcnJpZGVfZWRpZCkKPiA+ICsJCW92ZXJyaWRlID0gZHJtX2VkaWRfZHVwbGljYXRlKChjb25z dCBzdHJ1Y3QgZWRpZCAqKQo+ID4gKwkJCQkJICAgICAgY29ubmVjdG9yLT5lZGlkX2Jsb2JfcHRy LT5kYXRhKTsKPiA+ICsKPiA+ICsJaWYgKCFvdmVycmlkZSkKPiA+ICsJCW92ZXJyaWRlID0gZHJt X2xvYWRfZWRpZF9maXJtd2FyZShjb25uZWN0b3IpOwo+ID4gKwo+ID4gKwlpZiAoIUlTX0VSUl9P Ul9OVUxMKG92ZXJyaWRlKSkKPiA+ICsJCXJldHVybiBvdmVycmlkZTsKPiA+ICAKPiA+ICAJaWYg KChlZGlkID0ga21hbGxvYyhFRElEX0xFTkdUSCwgR0ZQX0tFUk5FTCkpID09IE5VTEwpCj4gPiAg CQlyZXR1cm4gTlVMTDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2Jl X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYwo+ID4gaW5kZXgg MzU4OTU3MTE4Y2E5Li44NzEzMjZjYmM0NjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2Jl X2hlbHBlci5jCj4gPiBAQCAtMTk5LDggKzE5OSw2IEBAIGRybV9jb25uZWN0b3JfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gPiAgICogICAgZHJt X21vZGVfcHJvYmVkX2FkZCgpLiBOZXcgbW9kZXMgc3RhcnQgdGhlaXIgbGlmZSB3aXRoIHN0YXR1 cyBhcyBPSy4KPiA+ICAgKiAgICBNb2RlcyBhcmUgYWRkZWQgZnJvbSBhIHNpbmdsZSBzb3VyY2Ug dXNpbmcgdGhlIGZvbGxvd2luZyBwcmlvcml0eSBvcmRlci4KPiA+ICAgKgo+ID4gLSAqICAgIC0g ZGVidWdmcyAnb3ZlcnJpZGVfZWRpZCcgKHVzZWQgZm9yIHRlc3Rpbmcgb25seSkKPiA+IC0gKiAg ICAtIGZpcm13YXJlIEVESUQgKGRybV9sb2FkX2VkaWRfZmlybXdhcmUoKSkKPiA+ICAgKiAgICAt ICZkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcy5nZXRfbW9kZXMgdmZ1bmMKPiA+ICAgKiAgICAt IGlmIHRoZSBjb25uZWN0b3Igc3RhdHVzIGlzIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkLCBz dGFuZGFyZAo+ID4gICAqICAgICAgVkVTQSBETVQgbW9kZXMgdXAgdG8gMTAyNHg3NjggYXJlIGF1 dG9tYXRpY2FsbHkgYWRkZWQKPiA+IEBAIC0zMDUsMjIgKzMwMyw3IEBAIGludCBkcm1faGVscGVy X3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ICAJCWdvdG8gcHJ1bmU7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaWYgKGNvbm5lY3Rv ci0+b3ZlcnJpZGVfZWRpZCkgewo+ID4gLQkJc3RydWN0IGVkaWQgKmVkaWQgPSAoc3RydWN0IGVk aWQgKikgY29ubmVjdG9yLT5lZGlkX2Jsb2JfcHRyLT5kYXRhOwo+ID4gLQo+ID4gLQkJY291bnQg PSBkcm1fYWRkX2VkaWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPiA+IC0JCWRybV9lZGlkX3Rv X2VsZChjb25uZWN0b3IsIGVkaWQpOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJc3RydWN0IGVkaWQg KmVkaWQgPSBkcm1fbG9hZF9lZGlkX2Zpcm13YXJlKGNvbm5lY3Rvcik7Cj4gPiAtCQlpZiAoIUlT X0VSUl9PUl9OVUxMKGVkaWQpKSB7Cj4gPiAtCQkJZHJtX21vZGVfY29ubmVjdG9yX3VwZGF0ZV9l ZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4gPiAtCQkJY291bnQgPSBkcm1fYWRkX2Vk aWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKPiA+IC0JCQlkcm1fZWRpZF90b19lbGQoY29ubmVj dG9yLCBlZGlkKTsKPiA+IC0JCQlrZnJlZShlZGlkKTsKPiA+IC0JCX0KPiA+IC0JCWlmIChjb3Vu dCA9PSAwKQo+ID4gLQkJCWNvdW50ID0gKCpjb25uZWN0b3JfZnVuY3MtPmdldF9tb2RlcykoY29u bmVjdG9yKTsKPiA+IC0JfQo+ID4gKwljb3VudCA9ICgqY29ubmVjdG9yX2Z1bmNzLT5nZXRfbW9k ZXMpKGNvbm5lY3Rvcik7Cj4gCj4gV2hhdCBoYXBwZW5zIGZvciBkcml2ZXJzIHdoaWNoIGNhY2hl IHRoZSBlZGlkIGluIHRoZWlyIHByb2JlIGZ1bmN0aW9uLCBhbmQKPiBpbiB0aGVpciBnZXRfbW9k ZXMgZnVuY3Rpb24gb25seSBwYXJzZSB0aGUgYWxyZWFkeSByZXRyaXZlZCBlZGlkPwoKSG1tLiBH b29kIHF1ZXN0aW9uLiBJIGd1ZXNzIGN1cnJlbnRseSB0aGV5J2xsIGp1c3Qga2VlcCB1c2luZyB0 aGF0CmluaXRpYWwgRURJRCAod2hpY2ggbWF5IG9yIG1heSBub3QgY29tZSBmcm9tIHRoZSBmaXJt d2FyZSBFRElEIGxvYWRlcikuCmJ1dCBvdmVycmlkaW5nIGF0IHJ1bnRpbWUgbGlrZWx5IHdvbid0 IHdvcmsuCgpGb3IgaTkxNSB0aGF0IG9ubHkgaGFwcGVucyBmb3IgZURQL0xWRFMvRFNJIGFuZCBz dWNoLiBBbmQgZm9yIHRob3NlIHdlCmFsc28gcGFyc2UgdGhlIHBhbmVsIGZpeGVkIG1vZGUgZnJv bSB0aGUgRURJRCBhdCBwcm9iZSB0aW1lLiBTbyB0aGVyZQppc24ndCBtdWNoIHlvdSBjb3VsZCBn YWluIGZyb20gcnVudGltZSBvdmVycmlkZSB1bmxlc3Mgd2UgY2hhbmdlIHRoZQplbnRpcmUgaW1w bGVtZW50YXRpb24gdG8gbm90IGhhbmcgb24gdG8gdGhlIGZpeGVkIG1vZGUgZWl0aGVyLgoKPiBU aGlzCj4gYmVjb21lcyBmdW4gaW4gY29tYmluYXRpb24gd2l0aCB0aGUgb3V0cHV0IGZvcmNpbmcs IHdoZXJlIHRoZSBjb25uZWN0b3IKPiBzdGF0dXMgZm9yY2luZyBwcmV2ZW50cyAtPmRldGVjdCBm cm9tIGJlaW5nIHJ1biAuLi4KCldlIGRvIGhhdmUgdGhlIC0+Zm9yY2UoKSBob29rIGZvciB0aG9z ZSBjYXNlcy4KCj4gSSBzdGlsbCB0aGluayB3ZSBjYW4ndCBoYW5kbGUgb3ZlcnJpZGUgZWRpZCB3 aXRob3V0IGFsc28gdGFraW5nIGNvbm5lY3Rvcgo+IGZvcmNpbmcgaW50byBhY2NvdW50LgoKQWZ0 ZXIgdGhlc2UgcGF0Y2hlcyB0aGUgdHdvIGFyZSBzb21ld2hhdCBsaW5rZWQuIFRoZSBmb3JjZSBz dGF0dXMKd2lsbCBhZmZlY3Qgd2hldGhlciBkcm1fZ2V0X2VkaWQoKSB3aWxsIGV2ZW4gcmV0dXJu IGFueXRoaW5nIChkb2Vzbid0Cm1hdHRlciBpZiB0aGVyZSdzIGFuIG92ZXJyaWRlIEVESUQgb3Ig bm90KSwgYnV0IHRoZSBwcmVzZW5jZSBvZiB0aGUKb3ZlcnJpZGUgRURJRCB3b24ndCBmb3JjZSB0 aGUgY29ubmVjdG9yIHN0YXR1cy4gVG8gbWUgdGhhdCBzZWVtcwpsaWtlIGEgcGVyZmVjdGx5IHNl bnNpYmxlIGFwcHJvYWNoLgoKPiAtRGFuaWVsCj4gCj4gPiAgCj4gPiAgCWlmIChjb3VudCA9PSAw ICYmIGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ID4g IAkJY291bnQgPSBkcm1fYWRkX21vZGVzX25vZWRpZChjb25uZWN0b3IsIDEwMjQsIDc2OCk7Cj4g PiAtLSAKPiA+IDIuMS40Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+IAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRl dmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0g ClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==