From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: DP link training optimization Date: Fri, 27 Feb 2015 09:44:00 +0200 Message-ID: <87sidrajen.fsf@intel.com> References: <1424942770-14493-1-git-send-email-mika.kahola@intel.com> <54EFC889.5000504@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 1459D6E26B for ; Thu, 26 Feb 2015 23:45:00 -0800 (PST) In-Reply-To: <54EFC889.5000504@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Todd Previte , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyNyBGZWIgMjAxNSwgVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5jb20+IHdy b3RlOgo+IEhpIE1pa2EsCj4KPiBPbiAyLzI2LzIwMTUgMjoyNiBBTSwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4+IEluIGEgY2FzZSB3aGVuIERQIGxpbmsgaGFzIGJlZW4gb25jZSB0cmFpbmVkIHdlIGNh biByZXVzZQo+PiB0aGUgZXhpc3RpbmcgbGluayB0cmFpbmluZyBwYXJhbWV0ZXJzIGkuZS4gdm9s dGFnZSBzd2luZwo+PiBhbmQgcHJlLWVtcGhhc2lzIGxldmVscyBmcm9tIGNhY2hlIHdoZW4gdGhl cmUgaXMgYSBuZWVkIHRvCj4+IHJlc3RhcnQgbGluayB0cmFpbmluZy4gSW4gYSBjYXNlIG9mIGVE UCB3ZSBpbml0aWFsbHkgdHJ5Cj4+IHRvIHRyYWluIHRoZSBsaW5rIGJ5IHVzaW5nIHRoZSBwYXJh bWV0ZXIgc2V0IHRoYXQgd2UgY2FuIGZpbmQKPj4gZnJvbSBWQlQuIFRoZSBmYWxsYmFjayBvbiBi b3RoIGNhc2VzIGlzIHRvIHJlc2V0IHRoZSBsaW5rCj4+IHRyYWluaW5nIHBhcmFtZXRlcnMgYW5k IHJlc3RhcnQuCj4gSSB0aGluayB5b3UgaGF2ZSBhIGdvb2QgaWRlYSBoZXJlIGZvciB0aGUgZURQ IGNhc2UuIEJ1dCB0aGUgd2F5IGl0J3MgCj4gY29kZWQsIHRoZXJlIGFwcGVhciB0byBiZSBjYXNl cyB3aGVyZSB0aGUgY29kZSB3aWxsIHRyeSB0byByZXVzZSB0aGUgCj4gc2FtZSB0cmFpbmluZyBz ZXR0aW5ncyBmb3IgcmVndWxhciBEUCBhcyB3ZWxsLiBUaGF0IHdpbGwgbGlrZWx5IGhhdmUgCj4g c29tZSB1bmZvcnR1bmF0ZSByZXN1bHRzLCBhcyB0aGVyZSdzIG5vIGd1YXJhbnRlZSBmb3IgYSBu b3JtYWwgZXh0ZXJuYWwgCj4gRGlzcGxheXBvcnQgY29ubmVjdGlvbiB0aGF0IHRyYWluaW5nIHNl dHRpbmdzIHdoaWNoIHdvcmtlZCBvbmNlIHdpbGwgCj4gd29yayB0aGUgbmV4dCB0aW1lLiBUaGlz IHdvdWxkIGJlIG9mIHBhcnRpY3VsYXIgY29uY2VybiB3aGVuIAo+IGRpc2Nvbm5lY3RpbmcgYW5k IHJlY29ubmVjdGluZyBEaXNwbGF5cG9ydCBzaW5rIGRldmljZXMsIGFzIGl0IGFwcGVhcnMgCj4g YXMgdGhvdWdoIGl0IHdvdWxkIHRyeSB0byByZXRyYWluIHRoZSBuZXdseSBjb25uZWN0ZWQgZGV2 aWNlIHVzaW5nIHRoZSAKPiBwcmV2aW91c2x5IHZhbGlkIHNldHRpbmdzIGZvciB0aGUgb2xkIGRl dmljZS4KCkhtbSwgSSB0aG91Z2h0IGl0IHdvdWxkIGJlIGFsbCByaWdodCBvbiBleHRlcm5hbCBE UCBhbHNvIGlmIHdlIGVuc3VyZSB3ZQpyZXNldCB0aGUgdHJhaW4gc2V0IHdoZW4gdGhlIHNpbmsg bWF5IGhhdmUgY2hhbmdlZCwgaS5lLiBhdCBzdXNwZW5kIGFuZApob3RwbHVnLgoKQlIsCkphbmku Cgo+Cj4gSU1ITywgdGhpcyByZWFsbHkgbmVlZHMgdG8gYmUgd3JpdHRlbiBhcyBlRFAgb25seSBh bmQgc3VjaCB0aGF0IGl0IGNhbiAKPiBuZXZlciBvY2N1ciBvbiBhbiBleHRlcm5hbCBEaXNwbGF5 cG9ydCBkZXZpY2UuIE90aGVyd2lzZSwgaXQgc2VlbXMgbGlrZSAKPiB0aGVyZSdzIGEgZ29vZCBj aGFuY2Ugb2YgZW5kaW5nIHVwIHdpdGggYSBibGFjayBzY3JlZW4gd2hlbiB5b3UgcGx1ZyBpbiAK PiBhIERpc3BsYXlwb3J0IG1vbml0b3IuCj4KPj4gU2lnbmVkLW9mZi1ieTogTWlrYSBLYWhvbGEg PG1pa2Eua2Fob2xhQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYyAgfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t Cj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgMSArCj4+ICAgMiBmaWxl cyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4+IGluZGV4IGQxMTQxZDMuLjg0ODJmNTggMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+PiBAQCAtMzI4OCw4ICszMjg4LDM5IEBAIHN0YXRpYyBib29sCj4+ ICAgaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1 aW50MzJfdCAqRFAsCj4+ICAgCQkJdWludDhfdCBkcF90cmFpbl9wYXQpCj4+ICAgewo+PiAtCW1l bXNldChpbnRlbF9kcC0+dHJhaW5fc2V0LCAwLCBzaXplb2YoaW50ZWxfZHAtPnRyYWluX3NldCkp Owo+PiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCWludCBpOwo+PiArCj4+ICsJLyogaW4gY2Fz ZSBvZiBlRFAsIGdldCBsaW5rIHRyYWluaW5nIHBhcmFtZXRlcnMgZnJvbSBWQlQgKi8KPj4gKwlp ZiAoaXNfZWRwKGludGVsX2RwKSkgewo+PiArCQlmb3IgKGk9MDsgaTxpbnRlbF9kcC0+bGFuZV9j b3VudDsgaSsrKQo+PiArCQkJaW50ZWxfZHAtPnRyYWluX3NldFtpXSA9ICBkZXZfcHJpdi0+dmJ0 LmVkcF92c3dpbmcgfCBkZXZfcHJpdi0+dmJ0LmVkcF9wcmVlbXBoYXNpczsKPj4gKwl9Cj4+ICsJ ZWxzZQo+PiArCQltZW1zZXQoaW50ZWxfZHAtPnRyYWluX3NldCwgMCwgc2l6ZW9mKGludGVsX2Rw LT50cmFpbl9zZXQpKTsKPj4gKwo+PiArCWludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKGludGVs X2RwLCBEUCk7Cj4+ICsJcmV0dXJuIGludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLCBE UCwgZHBfdHJhaW5fcGF0KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wKPj4gK2ludGVsX2Rw X3JldXNlX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDMyX3QgKkRQ LAo+PiArCQkJICB1aW50OF90IGRwX3RyYWluX3BhdCkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5k ZXY7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPj4gKwo+PiAgIAlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9kcCwgRFAp Owo+PiArCj4+ICsJSTkxNV9XUklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgKkRQKTsKPj4gKwlQ T1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwo+PiArCj4+ICsJZHJtX2RwX2RwY2Rf d3JpdGUoJmludGVsX2RwLT5hdXgsIERQX1RSQUlOSU5HX0xBTkUwX1NFVCwKPj4gKwkJCSAgaW50 ZWxfZHAtPnRyYWluX3NldCwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+PiArCj4+ICAgCXJldHVy biBpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwgRFAsIGRwX3RyYWluX3BhdCk7Cj4+ ICAgfQo+PiAgIAo+IEknbSBub3Qgc3VyZSB5b3Ugd2FudCB0byBiZSB1cGRhdGluZyB0aGUgc2lu ayBkZXZpY2UgYXQgdGhpcyBwb2ludC4gVGhpcyAKPiBzaG91bGQgYmUgY2hlY2tlZCBhZ2FpbnN0 IHRoZSBzcGVjIHRvIGJlIHN1cmUgaXQncyBub3Qgb3V0IG9mIHNlcXVlbmNlLgo+Cj4+IEBAIC0z MzU2LDYgKzMzODcsOCBAQCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4+ICAgCWludCB2b2x0YWdlX3RyaWVzLCBsb29wX3RyaWVzOwo+PiAgIAl1 aW50MzJfdCBEUCA9IGludGVsX2RwLT5EUDsKPj4gICAJdWludDhfdCBsaW5rX2NvbmZpZ1syXTsK Pj4gKwl1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOwo+PiArCWJvb2wg cmV1c2VfdHJhaW5fc2V0ID0gZmFsc2U7Cj4+ICAgCj4+ICAgCWlmIChIQVNfRERJKGRldikpCj4+ ICAgCQlpbnRlbF9kZGlfcHJlcGFyZV9saW5rX3JldHJhaW4oZW5jb2Rlcik7Cj4+IEBAIC0zMzcz LDIwICszNDA2LDQ0IEBAIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPj4gICAKPj4gICAJRFAgfD0gRFBfUE9SVF9FTjsKPj4gICAKPj4gLQkvKiBj bG9jayByZWNvdmVyeSAqLwo+PiAtCWlmICghaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihpbnRl bF9kcCwgJkRQLAo+PiAtCQkJCSAgICAgICBEUF9UUkFJTklOR19QQVRURVJOXzEgfAo+PiAtCQkJ CSAgICAgICBEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpIHsKPj4gLQkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOwo+PiAtCQlyZXR1cm47Cj4+ICsJLyoK Pj4gKwkgKiBjaGVjayBpZiBEUCBoYXMgYWxyZWFkeSB0cmFpbmVkLiBSZXNldCB2b2x0YWdlIHN3 aW5nIGFuZAo+PiArCSAqIHByZS1lbXBoYXNpcyBsZXZlbHMgaWYgdGhhdCdzIG5vdCB0aGUgY2Fz ZS4KPj4gKwkgKi8KPj4gKwlpZiAoaW50ZWxfZHAtPmxpbmtfdHJhaW5lZCkgewo+PiArCQlpZiAo IWludGVsX2RwX3JldXNlX2xpbmtfdHJhaW4oaW50ZWxfZHAsICZEUCwKPj4gKwkJCQkJICAgICAg IERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8Cj4+ICsJCQkJCSAgICAgICBEUF9MSU5LX1NDUkFNQkxJ TkdfRElTQUJMRSkpIHsKPj4gKwkJCURSTV9ERUJVR19LTVMoInVuYWJsZSB0byBzZXQga25vd24g bGluayB0cmFpbmluZyB2YWx1ZXNcbiIpOwo+PiArCQkJcmV0dXJuOwo+PiArCQl9Cj4+ICsJCURS TV9ERUJVR19LTVMoInJldXNlIGN1cnJlbnQgbGluayB0cmFpbiBzZXRcbiIpOwo+PiArCQlyZXVz ZV90cmFpbl9zZXQgPSB0cnVlOwo+PiArCX0KPj4gKwllbHNlIHsKPj4gKwkJLyogcmVzZXQgbGlu ayB0cmFpbmluZyB2YWx1ZXMgKi8KPj4gKwkJaWYgKCFpbnRlbF9kcF9yZXNldF9saW5rX3RyYWlu KGludGVsX2RwLCAmRFAsCj4+ICsJCQkJCSAgICAgICBEUF9UUkFJTklOR19QQVRURVJOXzEgfAo+ PiArCQkJCQkgICAgICAgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7Cj4+ICsJCQlEUk1f RVJST1IoImZhaWxlZCB0byBlbmFibGUgbGluayB0cmFpbmluZ1xuIik7Cj4+ICsJCQlyZXR1cm47 Cj4+ICsJCX0KPj4gKwkJRFJNX0RFQlVHX0tNUygicmVzZXQgbGluayB0cmFpbiBzZXRcbiIpOwo+ PiArCj4+ICsJCS8qCj4+ICsJCSAqIGluIGNhc2Ugb2YgZURQLCBhbGxvdyBmYWxsYmFjayB0byBy ZXNldCBsaW5rIHRyYWluaW5nIHNldAo+PiArCQkgKiBpZiBWQlQgcGFyYW1ldGVycyBkb2Vzbid0 IGFwcGx5Cj4+ICsJCSAqLwo+PiArCQlpZiAoaXNfZWRwKGludGVsX2RwKSkKPj4gKwkJCXJldXNl X3RyYWluX3NldCA9IHRydWU7Cj4+ICsJCWVsc2UKPj4gKwkJCXJldXNlX3RyYWluX3NldCA9IGZh bHNlOwo+PiAgIAl9Cj4+ICAgCj4+ICAgCXZvbHRhZ2UgPSAweGZmOwo+PiAgIAl2b2x0YWdlX3Ry aWVzID0gMDsKPj4gICAJbG9vcF90cmllcyA9IDA7Cj4+ICAgCWZvciAoOzspIHsKPj4gLQkJdWlu dDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPj4gLQo+PiAgIAkJZHJtX2Rw X2xpbmtfdHJhaW5fY2xvY2tfcmVjb3ZlcnlfZGVsYXkoaW50ZWxfZHAtPmRwY2QpOwo+PiAgIAkJ aWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+ PiAgIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Cj4+IEBAIC0z Mzk3LDYgKzM0NTQsMjAgQEAgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKQo+PiAgIAkJCURSTV9ERUJVR19LTVMoImNsb2NrIHJlY292ZXJ5IE9LXG4i KTsKPj4gICAJCQlicmVhazsKPj4gICAJCX0KPj4gKwkJLyoKPj4gKwkJICogaWYgd2UgdXNlZCBw cmV2aW91c2x5IHRyYWluZWQgdm9sdGFnZSBhbmQgcHJlLWVtcGhhc2lzIHZhbHVlcwo+PiArCQkg KiBhbmQgd2UgZG9uJ3QgZ2V0IGNsb2NrIHJlY292ZXJ5LCByZXNldCBsaW5rIHRyYWluaW5nIHZh bHVlcwo+PiArCQkgKi8KPj4gKwkJaWYgKHJldXNlX3RyYWluX3NldCkgewo+PiArCQkJRFJNX0RF QlVHX0tNUygiY2xvY2sgcmVjb3Zlcnkgbm90IG9rLCByZXNldHRpbmcgRFAgdHJhaW4gc2V0XG4i KTsKPj4gKwkJCWlmICghaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihpbnRlbF9kcCwgJkRQLAo+ PiArCQkJCQkJICAgICAgIERQX1RSQUlOSU5HX1BBVFRFUk5fMSB8Cj4+ICsJCQkJCQkgICAgICAg RFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7Cj4+ICsJCQkJRFJNX0VSUk9SKCJmYWlsZWQg dG8gZW5hYmxlIGxpbmsgdHJhaW5pbmdcbiIpOwo+PiArCQkJCXJldHVybjsKPj4gKwkJCX0KPj4g KwkJCXJldXNlX3RyYWluX3NldCA9IGZhbHNlOwo+PiArCQl9Cj4+ICAgCj4+ICAgCQkvKiBDaGVj ayB0byBzZWUgaWYgd2UndmUgdHJpZWQgdGhlIG1heCB2b2x0YWdlICovCj4+ICAgCQlmb3IgKGkg PSAwOyBpIDwgaW50ZWxfZHAtPmxhbmVfY291bnQ7IGkrKykKPj4gQEAgLTM1MTEsOCArMzU4Miwx MCBAQCBpbnRlbF9kcF9jb21wbGV0ZV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4+ICAgCj4+ICAgCWludGVsX2RwLT5EUCA9IERQOwo+PiAgIAo+PiAtCWlmIChjaGFubmVs X2VxKQo+PiArCWlmIChjaGFubmVsX2VxKSB7Cj4+ICAgCQlEUk1fREVCVUdfS01TKCJDaGFubmVs IEVRIGRvbmUuIERQIFRyYWluaW5nIHN1Y2Nlc3NmdWxcbiIpOwo+PiArCQlpbnRlbF9kcC0+bGlu a190cmFpbmVkID0gdHJ1ZTsKPiBUaGUgbGlua190cmFpbmVkIGZsYWcgaXMgc2V0IGhlcmUgYnV0 IG5ldmVyIGluaXRpYWxpemVkIG9yIGNsZWFyZWQgCj4gYW55d2hlcmUgZWxzZS4gU28gaXQgbG9v a3MgbGlrZSBvbmNlIGl0J3Mgc2V0LCBpdCdzIHRoZXJlIGZvcmV2ZXIuIFRoYXQgCj4gYmVpbmcg dGhlIGNhc2UsIHRoaXMgY29kZSB3b3VsZCBuZXZlciBoaXQgdGhlIGVsc2UoKSBjYXNlIHdoZXJl IAo+IGludGVsX2RwLT5saW5rX3RyYWluZWQgaXMgY2hlY2tlZCBmdXJ0aGVyIHVwLiBJJ20gcHJl dHR5IHN1cmUgdGhhdCdzIG5vdCAKPiB3aGF0IHlvdSBpbnRlbmRlZC4uLiA6KQo+Cj4+ICsJfQo+ PiAgIAo+PiAgIH0KPj4gICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggMWZi MTUyOS4uMzJlY2UwZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAgLTY2 OCw2ICs2NjgsNyBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+PiAgIAkJCQkgICAgIGJvb2wgaGFzX2F1 eF9pcnEsCj4+ICAgCQkJCSAgICAgaW50IHNlbmRfYnl0ZXMsCj4+ICAgCQkJCSAgICAgdWludDMy X3QgYXV4X2Nsb2NrX2RpdmlkZXIpOwo+PiArCWJvb2wgbGlua190cmFpbmVkOyAvKiBmbGFnIHRv IGluZGljYXRlIGlmIERQIGxpbmsgaGFzIGJlZW4gdHJhaW5lZCBvciBub3QgKi8KPj4gICB9Owo+ PiAgIAo+PiAgIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+Cj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK