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 18:36:52 +0200 Message-ID: <20170227163652.GF31595@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> <20170227150944.GD31595@intel.com> <20170227161921.tso2hllft25wqhvv@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: <20170227161921.tso2hllft25wqhvv@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Jani Nikula , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBGZWIgMjcsIDIwMTcgYXQgMDU6MTk6MjFQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBNb24sIEZlYiAyNywgMjAxNyBhdCAwNTowOTo0NFBNICswMjAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBTdW4sIEZlYiAyNiwgMjAxNyBhdCAxMDoyMjo0MlBNICsw MTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBGcmksIEZlYiAxNywgMjAxNyBhdCAw NToyMDo1NFBNICswMjAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiA+ID4gPiBIYW5kbGUgZGVidWdm cyBvdmVycmlkZSBlZGlkIGFuZCBmaXJtd2FyZSBlZGlkIGF0IHRoZSBsb3cgbGV2ZWwgdG8KPiA+ ID4gPiB0cmFuc3BhcmVudGx5IGFuZCBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIHJlYWwgZWRpZC4g UHJldmlvdXNseSwgd2UKPiA+ID4gPiBwcmFjdGljYWxseSBvbmx5IHVzZWQgdGhlIG1vZGVzIGZy b20gdGhlIG92ZXJyaWRlIEVESUQsIGFuZCBub25lIG9mIHRoZQo+ID4gPiA+IG90aGVyIGRhdGEu IFRoaXMgYWxzbyBwcmV2ZW50cyBhY3R1YWwgRURJRCByZWFkcyB3aGVuIHRoZSBFRElEIGlzIHRv IGJlCj4gPiA+ID4gb3ZlcnJpZGRlbiwgYnV0IHJldGFpbnMgdGhlIEREQyBwcm9iZS4KPiA+ID4g PiAKPiA+ID4gPiBNb3ZlIGZpcm13YXJlIEVESUQgbG9hZGluZyBmcm9tIGhlbHBlciB0byBjb3Jl LCBhcyB0aGUgZnVuY3Rpb25hbGl0eQo+ID4gPiA+IG1vdmVzIHRvIGxvd2VyIGxldmVsIGFzIHdl bGwuIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBjaGFuZ2Ugb2YgbW9kdWxlCj4gPiA+ID4gcGFyYW1l dGVyIGZyb20gZHJtX2ttc19oZWxwZXIuZWRpZF9maXJtd2FyZSB0byBkcm0uZWRpZF9maXJtd2Fy ZSwgd2hpY2gKPiA+ID4gPiBhcmd1YWJseSBtYWtlcyBtb3JlIHNlbnNlIGFueXdheS4KPiA+ID4g PiAKPiA+ID4gPiBGSVhNRTogdmFsaWRhdGUgb3ZlcnJpZGUgZWRpZCwgZGVkdXBsaWNhdGUgZmly bXdhcmUgZWRpZCB2YWxpZGF0aW9uLgo+ID4gPiA+IAo+ID4gPiA+IHYyOiBtb3ZlIGZpcm13YXJl IGxvYWRpbmcgdG8gY29yZQo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gIGRyaXZlcnMv Z3B1L2RybS9LY29uZmlnICAgICAgICAgICAgfCAgMiArLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vTWFrZWZpbGUgICAgICAgICAgIHwgIDIgKy0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwo+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jIHwgMTkgKy0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ ICA0IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+ID4g PiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4gaW5kZXggOTBiYzY1ZDA3YTM1Li5mOTgzZWY2MDI5 OWMgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiA+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gPiA+IEBAIC0xMDEsNyArMTAxLDcgQEAg Y29uZmlnIERSTV9GQkRFVl9FTVVMQVRJT04KPiA+ID4gPiAgCj4gPiA+ID4gIGNvbmZpZyBEUk1f TE9BRF9FRElEX0ZJUk1XQVJFCj4gPiA+ID4gIAlib29sICJBbGxvdyB0byBzcGVjaWZ5IGFuIEVE SUQgZGF0YSBzZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdCIKPiA+ID4gPiAtCWRlcGVuZHMg b24gRFJNX0tNU19IRUxQRVIKPiA+ID4gPiArCWRlcGVuZHMgb24gRFJNCj4gPiA+ID4gIAloZWxw Cj4gPiA+ID4gIAkgIFNheSBZIGhlcmUsIGlmIHlvdSB3YW50IHRvIHVzZSBFRElEIGRhdGEgdG8g YmUgbG9hZGVkIGZyb20gdGhlCj4gPiA+ID4gIAkgIC9saWIvZmlybXdhcmUgZGlyZWN0b3J5IG9y IG9uZSBvZiB0aGUgcHJvdmlkZWQgYnVpbHQtaW4KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gaW5k ZXggOTJkZTM5OTFmYTU2Li5hMTBhYzA5NTYwOGYgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl Cj4gPiA+ID4gQEAgLTI3LDEzICsyNywxMyBAQCBkcm0tJChDT05GSUdfRFJNX1BBTkVMKSArPSBk cm1fcGFuZWwubwo+ID4gPiA+ICBkcm0tJChDT05GSUdfT0YpICs9IGRybV9vZi5vCj4gPiA+ID4g IGRybS0kKENPTkZJR19BR1ApICs9IGRybV9hZ3BzdXBwb3J0Lm8KPiA+ID4gPiAgZHJtLSQoQ09O RklHX0RFQlVHX0ZTKSArPSBkcm1fZGVidWdmcy5vIGRybV9kZWJ1Z2ZzX2NyYy5vCj4gPiA+ID4g K2RybS0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSArPSBkcm1fZWRpZF9sb2FkLm8K PiA+ID4gPiAgCj4gPiA+ID4gIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8g ZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxwZXIubyBcCj4gPiA+ID4gIAkJZHJtX3BsYW5l X2hlbHBlci5vIGRybV9kcF9tc3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hlbHBlci5vIFwKPiA+ ID4gPiAgCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5v IFwKPiA+ID4gPiAgCQlkcm1fc2ltcGxlX2ttc19oZWxwZXIubyBkcm1fbW9kZXNldF9oZWxwZXIu bwo+ID4gPiA+ICAKPiA+ID4gPiAtZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0xPQURfRURJ RF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vCj4gPiA+ID4gIGRybV9rbXNfaGVscGVyLSQo Q09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYl9oZWxwZXIubwo+ID4gPiA+ICBk cm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fS01TX0NNQV9IRUxQRVIpICs9IGRybV9mYl9jbWFf aGVscGVyLm8KPiA+ID4gPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0RQX0FVWF9DSEFS REVWKSArPSBkcm1fZHBfYXV4X2Rldi5vCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZWRpZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+ID4gPiBpbmRl eCBlMTc0M2FiMjc2ZGMuLjQwMDc5OThkNWNlMyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRp ZC5jCj4gPiA+ID4gQEAgLTEzMDksNiArMTMwOSwxMCBAQCBzdGF0aWMgdm9pZCBjb25uZWN0b3Jf YmFkX2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiAgICogbGV2 ZWwsIGRyaXZlcnMgbXVzdCBtYWtlIGFsbCByZWFzb25hYmxlIGVmZm9ydHMgdG8gZXhwb3NlIGl0 IGFzIGFuIEkyQwo+ID4gPiA+ICAgKiBhZGFwdGVyIGFuZCB1c2UgZHJtX2dldF9lZGlkKCkgaW5z dGVhZCBvZiBhYnVzaW5nIHRoaXMgZnVuY3Rpb24uCj4gPiA+ID4gICAqCj4gPiA+ID4gKyAqIFRo ZSBFRElEIG1heSBiZSBvdmVycmlkZGVuIHVzaW5nIGRlYnVnZnMgb3ZlcnJpZGVfZWRpZCBvciBm aXJtYXJlIEVESUQKPiA+ID4gPiArICogKGRybV9sb2FkX2VkaWRfZmlybXdhcmUoKSksIGluIHRo aXMgcHJpb3JpdHkgb3JkZXIuIEhhdmluZyBlaXRoZXIgb2YgdGhlbQo+ID4gPiA+ICsgKiBieXBh c3NlcyBhY3R1YWwgRURJRCByZWFkcy4KPiA+ID4gPiArICoKPiA+ID4gPiAgICogUmV0dXJuOiBQ b2ludGVyIHRvIHZhbGlkIEVESUQgb3IgTlVMTCBpZiB3ZSBjb3VsZG4ndCBmaW5kIGFueS4KPiA+ ID4gPiAgICovCj4gPiA+ID4gIHN0cnVjdCBlZGlkICpkcm1fZG9fZ2V0X2VkaWQoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiBAQCAtMTMxOCw2ICsxMzIyLDE3IEBAIHN0 cnVjdCBlZGlkICpkcm1fZG9fZ2V0X2VkaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiA+ID4gPiAgewo+ID4gPiA+ICAJaW50IGksIGogPSAwLCB2YWxpZF9leHRlbnNpb25zID0g MDsKPiA+ID4gPiAgCXU4ICplZGlkLCAqbmV3Owo+ID4gPiA+ICsJc3RydWN0IGVkaWQgKm92ZXJy aWRlID0gTlVMTDsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoY29ubmVjdG9yLT5vdmVycmlkZV9l ZGlkKQo+ID4gPiA+ICsJCW92ZXJyaWRlID0gZHJtX2VkaWRfZHVwbGljYXRlKChjb25zdCBzdHJ1 Y3QgZWRpZCAqKQo+ID4gPiA+ICsJCQkJCSAgICAgIGNvbm5lY3Rvci0+ZWRpZF9ibG9iX3B0ci0+ ZGF0YSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFvdmVycmlkZSkKPiA+ID4gPiArCQlvdmVy cmlkZSA9IGRybV9sb2FkX2VkaWRfZmlybXdhcmUoY29ubmVjdG9yKTsKPiA+ID4gPiArCj4gPiA+ ID4gKwlpZiAoIUlTX0VSUl9PUl9OVUxMKG92ZXJyaWRlKSkKPiA+ID4gPiArCQlyZXR1cm4gb3Zl cnJpZGU7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJaWYgKChlZGlkID0ga21hbGxvYyhFRElEX0xFTkdU SCwgR0ZQX0tFUk5FTCkpID09IE5VTEwpCj4gPiA+ID4gIAkJcmV0dXJuIE5VTEw7Cj4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCj4gPiA+ID4gaW5kZXggMzU4OTU3MTE4Y2E5Li44 NzEzMjZjYmM0NjUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9i ZV9oZWxwZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVy LmMKPiA+ID4gPiBAQCAtMTk5LDggKzE5OSw2IEBAIGRybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gPiA+ID4gICAqICAgIGRy bV9tb2RlX3Byb2JlZF9hZGQoKS4gTmV3IG1vZGVzIHN0YXJ0IHRoZWlyIGxpZmUgd2l0aCBzdGF0 dXMgYXMgT0suCj4gPiA+ID4gICAqICAgIE1vZGVzIGFyZSBhZGRlZCBmcm9tIGEgc2luZ2xlIHNv dXJjZSB1c2luZyB0aGUgZm9sbG93aW5nIHByaW9yaXR5IG9yZGVyLgo+ID4gPiA+ICAgKgo+ID4g PiA+IC0gKiAgICAtIGRlYnVnZnMgJ292ZXJyaWRlX2VkaWQnICh1c2VkIGZvciB0ZXN0aW5nIG9u bHkpCj4gPiA+ID4gLSAqICAgIC0gZmlybXdhcmUgRURJRCAoZHJtX2xvYWRfZWRpZF9maXJtd2Fy ZSgpKQo+ID4gPiA+ICAgKiAgICAtICZkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcy5nZXRfbW9k ZXMgdmZ1bmMKPiA+ID4gPiAgICogICAgLSBpZiB0aGUgY29ubmVjdG9yIHN0YXR1cyBpcyBjb25u ZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCwgc3RhbmRhcmQKPiA+ID4gPiAgICogICAgICBWRVNBIERN VCBtb2RlcyB1cCB0byAxMDI0eDc2OCBhcmUgYXV0b21hdGljYWxseSBhZGRlZAo+ID4gPiA+IEBA IC0zMDUsMjIgKzMwMyw3IEBAIGludCBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3Jf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiAgCQlnb3RvIHBy dW5lOwo+ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiAtCWlmIChjb25uZWN0b3ItPm92ZXJy aWRlX2VkaWQpIHsKPiA+ID4gPiAtCQlzdHJ1Y3QgZWRpZCAqZWRpZCA9IChzdHJ1Y3QgZWRpZCAq KSBjb25uZWN0b3ItPmVkaWRfYmxvYl9wdHItPmRhdGE7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JCWNv dW50ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4gPiA+ID4gLQkJZHJt X2VkaWRfdG9fZWxkKGNvbm5lY3RvciwgZWRpZCk7Cj4gPiA+ID4gLQl9IGVsc2Ugewo+ID4gPiA+ IC0JCXN0cnVjdCBlZGlkICplZGlkID0gZHJtX2xvYWRfZWRpZF9maXJtd2FyZShjb25uZWN0b3Ip Owo+ID4gPiA+IC0JCWlmICghSVNfRVJSX09SX05VTEwoZWRpZCkpIHsKPiA+ID4gPiAtCQkJZHJt X21vZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7Cj4g PiA+ID4gLQkJCWNvdW50ID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7Cj4g PiA+ID4gLQkJCWRybV9lZGlkX3RvX2VsZChjb25uZWN0b3IsIGVkaWQpOwo+ID4gPiA+IC0JCQlr ZnJlZShlZGlkKTsKPiA+ID4gPiAtCQl9Cj4gPiA+ID4gLQkJaWYgKGNvdW50ID09IDApCj4gPiA+ ID4gLQkJCWNvdW50ID0gKCpjb25uZWN0b3JfZnVuY3MtPmdldF9tb2RlcykoY29ubmVjdG9yKTsK PiA+ID4gPiAtCX0KPiA+ID4gPiArCWNvdW50ID0gKCpjb25uZWN0b3JfZnVuY3MtPmdldF9tb2Rl cykoY29ubmVjdG9yKTsKPiA+ID4gCj4gPiA+IFdoYXQgaGFwcGVucyBmb3IgZHJpdmVycyB3aGlj aCBjYWNoZSB0aGUgZWRpZCBpbiB0aGVpciBwcm9iZSBmdW5jdGlvbiwgYW5kCj4gPiA+IGluIHRo ZWlyIGdldF9tb2RlcyBmdW5jdGlvbiBvbmx5IHBhcnNlIHRoZSBhbHJlYWR5IHJldHJpdmVkIGVk aWQ/Cj4gPiAKPiA+IEhtbS4gR29vZCBxdWVzdGlvbi4gSSBndWVzcyBjdXJyZW50bHkgdGhleSds bCBqdXN0IGtlZXAgdXNpbmcgdGhhdAo+ID4gaW5pdGlhbCBFRElEICh3aGljaCBtYXkgb3IgbWF5 IG5vdCBjb21lIGZyb20gdGhlIGZpcm13YXJlIEVESUQgbG9hZGVyKS4KPiA+IGJ1dCBvdmVycmlk aW5nIGF0IHJ1bnRpbWUgbGlrZWx5IHdvbid0IHdvcmsuCj4gPiAKPiA+IEZvciBpOTE1IHRoYXQg b25seSBoYXBwZW5zIGZvciBlRFAvTFZEUy9EU0kgYW5kIHN1Y2guIEFuZCBmb3IgdGhvc2Ugd2UK PiA+IGFsc28gcGFyc2UgdGhlIHBhbmVsIGZpeGVkIG1vZGUgZnJvbSB0aGUgRURJRCBhdCBwcm9i ZSB0aW1lLiBTbyB0aGVyZQo+ID4gaXNuJ3QgbXVjaCB5b3UgY291bGQgZ2FpbiBmcm9tIHJ1bnRp bWUgb3ZlcnJpZGUgdW5sZXNzIHdlIGNoYW5nZSB0aGUKPiA+IGVudGlyZSBpbXBsZW1lbnRhdGlv biB0byBub3QgaGFuZyBvbiB0byB0aGUgZml4ZWQgbW9kZSBlaXRoZXIuCj4gPiAKPiA+ID4gVGhp cwo+ID4gPiBiZWNvbWVzIGZ1biBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBvdXRwdXQgZm9yY2lu Zywgd2hlcmUgdGhlIGNvbm5lY3Rvcgo+ID4gPiBzdGF0dXMgZm9yY2luZyBwcmV2ZW50cyAtPmRl dGVjdCBmcm9tIGJlaW5nIHJ1biAuLi4KPiA+IAo+ID4gV2UgZG8gaGF2ZSB0aGUgLT5mb3JjZSgp IGhvb2sgZm9yIHRob3NlIGNhc2VzLgo+IAo+IFllcywgdGhhdCdzIHRoZSBwcm9ibGVtIEknbSBz ZWVpbmcuIEF0bSBvdXIgaWd0cyBib3RoIGZvcmNlIHRoZSBjb25uZWN0b3IKPiBzdGF0ZSBhbmQg b3ZlcnJpZGUgdGhlIGVkaWQsIHdoaWNoIG1lYW5zIHRoZXknZCBiZSBkZWZ1bmN0LiBBdCBsZWFz dCBJCj4gdGhpbmsgdGhleSdkIGZhaWwgLi4uCgpUaGV5IHNob3VsZCB3b3JrIGp1c3QgZmluZS4K Cj4gCj4gPiA+IEkgc3RpbGwgdGhpbmsgd2UgY2FuJ3QgaGFuZGxlIG92ZXJyaWRlIGVkaWQgd2l0 aG91dCBhbHNvIHRha2luZyBjb25uZWN0b3IKPiA+ID4gZm9yY2luZyBpbnRvIGFjY291bnQuCj4g PiAKPiA+IEFmdGVyIHRoZXNlIHBhdGNoZXMgdGhlIHR3byBhcmUgc29tZXdoYXQgbGlua2VkLiBU aGUgZm9yY2Ugc3RhdHVzCj4gPiB3aWxsIGFmZmVjdCB3aGV0aGVyIGRybV9nZXRfZWRpZCgpIHdp bGwgZXZlbiByZXR1cm4gYW55dGhpbmcgKGRvZXNuJ3QKPiA+IG1hdHRlciBpZiB0aGVyZSdzIGFu IG92ZXJyaWRlIEVESUQgb3Igbm90KSwgYnV0IHRoZSBwcmVzZW5jZSBvZiB0aGUKPiA+IG92ZXJy aWRlIEVESUQgd29uJ3QgZm9yY2UgdGhlIGNvbm5lY3RvciBzdGF0dXMuIFRvIG1lIHRoYXQgc2Vl bXMKPiA+IGxpa2UgYSBwZXJmZWN0bHkgc2Vuc2libGUgYXBwcm9hY2guCj4gCj4gSG93IGRvZXMg dGhlIEVESUQgb3ZlcnJpZGUgYWZmZWN0IHRoZSBzdGF0dXM/CgpJdCBkb2Vzbid0LgoKPiBJZiB0 aGVyZSdzIGFuIGlzc3VlIHdpdGggaHBkCj4gb24gZS5nLiBEUCwgaXQgc3RpbGwgd29uJ3QuIEkn bSBub3QgZXZlbiBzdXJlIHRoaXMgd291bGQgYWZmZWN0IGFsbCB0aGUKPiBwbGFjZXMgd2hlcmUg d2UgcmVhbHkgb24gZGRjIGRldGVjdGlvbi4KCkkgdGhpbmsgdGhlIGxhY2sgb2YgRFBDRCByZWFk IGluIC0+Zm9yY2UoKSBpcyB0aGUgb25seSByZWFsIHByb2JsZW0KSSBzZWUgaW4gdGhlIERQIGNv ZGUuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK