From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm/i915: Fix modeset handling during gpu reset, v2. Date: Fri, 6 May 2016 16:06:12 +0300 Message-ID: <20160506130612.GZ4329@intel.com> References: <1462179422-32203-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1462179422-32203-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, drm-intel-fixes@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDIsIDIwMTYgYXQgMTA6NTc6MDFBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gVGhpcyBmdW5jdGlvbiB3b3VsZCBjYWxsIGRybV9tb2Rlc2V0X2xvY2tfYWxs LCB3aGlsZSB0aGUgc3VzcGVuZC9yZXN1bWUKPiBmdW5jdGlvbnMgYWxyZWFkeSBoYXZlIHRoZWly IG93biBsb2NraW5nLiBGaXggdGhpcyBieSBmYWN0b3Jpbmcgb3V0Cj4gX19pbnRlbF9kaXNwbGF5 X3Jlc3VtZSwgYW5kIGNhbGxpbmcgdGhlIGF0b21pYyBoZWxwZXJzIGZvciBkdXBsaWNhdGluZwo+ IGF0b21pYyBzdGF0ZSBhbmQgZGlzYWJsaW5nIGFsbCBjcnRjJ3MgZHVyaW5nIHN1c3BlbmQuCj4g Cj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAtIERlYWwgd2l0aCAtRURFQURMSyByaWdodCBhZnRlciBs b2NrX2FsbCBhbmQgY2xlYW4gdXAgY2FsbHMKPiAgIHRvIGh3IHJlYWRvdXQuCj4gLSBBbHdheXMg dGFrZSBhbGwgbW9kZXNldCBsb2NrcyBzbyB1cGRhdGVzIGR1cmluZyBncHUgcmVzZXQgYXJlIGJs b2NrZWQuCgpGb3VuZCB0aGlzIHBhdGNoIGJ5IGFjY2lkZW50LiAtLWluLXJlcGx5LXRvIHdvdWxk IGhhdmUgaGVscGVkIGEgYml0LgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IEZpeGVzOiBlMmM4Yjg3MDFl MmQgKCJkcm0vaTkxNTogVXNlIGF0b21pYyBoZWxwZXJzIGZvciBzdXNwZW5kLCB2Mi4iKQo+IENj OiBkcm0taW50ZWwtZml4ZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE0MSArKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgNTIgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDJm MzY0MTQ3MDJmZS4uNGZiOTA0ZjJiY2Y5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IEBAIC0zMTQ0LDI3ICszMTQ0LDgzIEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJfQo+ICB9Cj4gIAo+ ICtzdGF0aWMgaW50Cj4gK19faW50ZWxfZGlzcGxheV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiArCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gKwlpbnQgaTsKPiArCj4gKwlpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKGRl dik7Cj4gKwlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPiArCj4gKwlpZiAoIXN0YXRlKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPiArCQkvKgo+ICsJCSAqIEZvcmNlIHJlY2FsY3VsYXRpb24gZXZlbiBp ZiB3ZSByZXN0b3JlCj4gKwkJICogY3VycmVudCBzdGF0ZS4gV2l0aCBmYXN0IG1vZGVzZXQgdGhp cyBtYXkgbm90IHJlc3VsdAo+ICsJCSAqIGluIGEgbW9kZXNldCB3aGVuIHRoZSBzdGF0ZSBpcyBj b21wYXRpYmxlLgo+ICsJCSAqLwo+ICsJCWNydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKClRoZSAtRURF QURMSyB3YXJuIGNvdWxkIGJlIGhlcmUgc28gd2UgZG9uJ3QgaGF2ZSB0byBkdXBsaWNhdGUgaXQg aW4gdHdvCnBsYWNlcyBwZXJoYXBzPyBFeHRyYWN0aW5nIF9faW50ZWxfZGlzcGxheV9yZXNldCgp IGNvdWxkIGFsc28gYmUgYSBzZXBhcmF0ZQpwYXRjaCB0byBtYWtlIHRoaXMgc3R1ZmYgYSBiaXQg ZWFzaWVyIHRvIHJldmlldy4KCk9oIGFuZCBCVFcgcmVzdW1lIGlzIGFsc28gYnJva2VuIG9uIHBs YXRmb3JtcyB0aGF0IGhhdmUgdGhlIGZvcmNlIHBpcGUgQQpxdWlyay4gSSBkbyBoYXZlIHNvbWUg cGF0Y2hlcyBsaW5lZCB1cCB0byBudWtlIHRoYXQgcXVpcmsgZm9yIGdvb2QsIHdoaWNoCkkgc2hv dWxkIHByb2JhYmx5IHBvc3Qgc29vbmVyIHJhdGhlciB0aGFuIGxhdGVyLiBCdXQgdGhvc2UgaGF2 ZSBhdCBsZWFzdAphIHRoZW9yZXRpY2FsIGNoYW5jZSBvZiByZWdyZXNzaW5nIHNvbWV0aGluZywg c28gaW4gdGhlIG1lYW50aW1lIEkgdGhpbmsKd2UnbGwgc3RpbGwgbmVlZCB0byBmaXggdGhpcyB0 aGluZyBmb3IgdGhlIG5vcm1hbCByZXN1bWUgcGF0aCBhcyB3ZWxsLgoKPiArfQo+ICsKPiAgdm9p ZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiArCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1 aXJlX2N0eCAqcGN0eDsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiArCWludCByZXQ7Cj4gKwo+ICAJLyogbm8gcmVzZXQgc3VwcG9ydCBmb3Ig Z2VuMiAqLwo+IC0JaWYgKElTX0dFTjIoZGV2KSkKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSkK PiAgCQlyZXR1cm47Cj4gIAo+IC0JLyogcmVzZXQgZG9lc24ndCB0b3VjaCB0aGUgZGlzcGxheSAq Lwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCj4gKwlk cm1fbW9kZXNldF9sb2NrX2FsbChkZXYpOwoKSXNuJ3QgdGhhdCBnb2luZyB0byBjbGFzaCB3aXRo IHRoZSBsb2NraW5nIGluCmludGVsX3VwZGF0ZV9wcmltYXJ5X3BsYW5lcygpID8KCj4gKwo+ICsJ LyogcmVzZXQgZG9lc24ndCB0b3VjaCB0aGUgZGlzcGxheSwgYnV0IGZsaXBzIG1pZ2h0IGdldCBu dWtlZCBhbnl3YXksICovCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA1IHx8 IElTX0c0WChkZXZfcHJpdikpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWRybV9tb2Rlc2V0X2xvY2tf YWxsKGRldik7Cj4gKwlwY3R4ID0gZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJlX2N0eDsKClN0aWxs IGxvb2tzIGxpa2UgcG93ZXIgY29udGV4dC4KCj4gKwo+ICAJLyoKPiAgCSAqIERpc2FibGluZyB0 aGUgY3J0Y3MgZ3JhY2VmdWxseSBzZWVtcyBuaWNlci4gQWxzbyB0aGUKPiAgCSAqIGczMyBkb2Nz IHNheSB3ZSBzaG91bGQgYXQgbGVhc3QgZGlzYWJsZSBhbGwgdGhlIHBsYW5lcy4KPiAgCSAqLwo+ IC0JaW50ZWxfZGlzcGxheV9zdXNwZW5kKGRldik7Cj4gKwo+ICsJc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9kdXBsaWNhdGVfc3RhdGUoZGV2LCBwY3R4KTsKPiArCWlmIChJU19FUlIoc3RhdGUp KSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihzdGF0ZSk7Cj4gKwkJc3RhdGUgPSBOVUxMOwo+ICsJCURS TV9FUlJPUigiRHVwbGljYXRpbmcgc3RhdGUgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7Cj4gKwkJ Z290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9h bGwoZGV2LCBwY3R4KTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fRVJST1IoIlN1c3BlbmRpbmcg Y3J0YydzIGZhaWxlZCB3aXRoICVpXG4iLCByZXQpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsK PiArCWRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGUgPSBzdGF0ZTsKPiArCXN0YXRlLT5h Y3F1aXJlX2N0eCA9IHBjdHg7Cj4gKwlyZXR1cm47Cj4gKwo+ICtlcnI6Cj4gKwlkcm1fYXRvbWlj X3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUgPSBkZXZfcHJpdi0+bW9kZXNldF9yZXN0b3JlX3N0YXRlOwo+ICsJaW50IHJldDsKPiAgCj4g IAkvKgo+ICAJICogRmxpcHMgaW4gdGhlIHJpbmdzIHdpbGwgYmUgbnVrZWQgYnkgdGhlIHJlc2V0 LAo+IEBAIC0zMTc3LDYgKzMyMzMsOCBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTX0dFTjIoZGV2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ ICsJZGV2X3ByaXYtPm1vZGVzZXRfcmVzdG9yZV9zdGF0ZSA9IE5VTEw7Cj4gKwo+ICAJLyogcmVz ZXQgZG9lc24ndCB0b3VjaCB0aGUgZGlzcGxheSAqLwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDUgfHwgSVNfRzRYKGRldikpIHsKPiAgCQkvKgo+IEBAIC0zMTg5LDI2ICszMjQ3LDI3 IEBAIHZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJ ICogQ1MtYmFzZWQgZmxpcHMgKHdoaWNoIG1pZ2h0IGdldCBsb3N0IGluIGdwdSByZXNldHMpIGFu eSBtb3JlLgo+ICAJCSAqLwo+ICAJCWludGVsX3VwZGF0ZV9wcmltYXJ5X3BsYW5lcyhkZXYpOwo+ IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gLQkvKgo+IC0JICogVGhlIGRpc3BsYXkgaGFzIGJlZW4g cmVzZXQgYXMgd2VsbCwKPiAtCSAqIHNvIG5lZWQgYSBmdWxsIHJlLWluaXRpYWxpemF0aW9uLgo+ IC0JICovCj4gLQlpbnRlbF9ydW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7 Cj4gLQlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCX0g ZWxzZSB7Cj4gKwkJLyoKPiArCQkgKiBUaGUgZGlzcGxheSBoYXMgYmVlbiByZXNldCBhcyB3ZWxs LAo+ICsJCSAqIHNvIG5lZWQgYSBmdWxsIHJlLWluaXRpYWxpemF0aW9uLgo+ICsJCSAqLwo+ICsJ CWludGVsX3J1bnRpbWVfcG1fZGlzYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCQlpbnRl bF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgCj4gLQlpbnRlbF9t b2Rlc2V0X2luaXRfaHcoZGV2KTsKPiArCQlpbnRlbF9tb2Rlc2V0X2luaXRfaHcoZGV2KTsKPiAg Cj4gLQlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+IC0JaWYgKGRldl9wcml2 LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXApCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9z ZXR1cChkZXYpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ICsJ CXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gKwkJaWYgKGRldl9wcml2LT5k aXNwbGF5LmhwZF9pcnFfc2V0dXApCj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0 dXAoZGV2KTsKPiArCQlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gIAo+ IC0JaW50ZWxfZGlzcGxheV9yZXN1bWUoZGV2KTsKPiArCQlyZXQgPSBfX2ludGVsX2Rpc3BsYXlf cmVzdW1lKGRldiwgc3RhdGUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCURSTV9FUlJPUigiUmVzdG9y aW5nIG9sZCBzdGF0ZSBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0KTsKPiAgCj4gLQlpbnRlbF9ocGRf aW5pdChkZXZfcHJpdik7Cj4gKwkJaW50ZWxfaHBkX2luaXQoZGV2X3ByaXYpOwo+ICsJfQo+ICAK PiAgCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiAgfQo+IEBAIC0xNTk1Nyw5ICsxNjAx NiwxMCBAQCB2b2lkIGludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBkZXZfcHJpdi0+bW9kZXNldF9y ZXN0b3JlX3N0YXRlOwo+ICAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiAg CWludCByZXQ7Cj4gLQlib29sIHNldHVwID0gZmFsc2U7Cj4gIAo+ICAJZGV2X3ByaXYtPm1vZGVz ZXRfcmVzdG9yZV9zdGF0ZSA9IE5VTEw7Cj4gKwlpZiAoc3RhdGUpCj4gKwkJc3RhdGUtPmFjcXVp cmVfY3R4ID0gJmN0eDsKPiAgCj4gIAkvKgo+ICAJICogVGhpcyBpcyBhIGNsdWRnZSBiZWNhdXNl IHdpdGggcmVhbCBhdG9taWMgbW9kZXNldCBtb2RlX2NvbmZpZy5tdXRleAo+IEBAIC0xNTk3MCw0 MCArMTYwMzAsMTcgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJbXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gIAlkcm1f bW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gIAo+IC1yZXRyeToKPiAtCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpOwo+IC0KPiAtCWlmIChyZXQgPT0gMCAm JiAhc2V0dXApIHsKPiAtCQlzZXR1cCA9IHRydWU7Cj4gLQo+IC0JCWludGVsX21vZGVzZXRfc2V0 dXBfaHdfc3RhdGUoZGV2KTsKPiAtCQlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPiAtCX0KPiAt Cj4gLQlpZiAocmV0ID09IDAgJiYgc3RhdGUpIHsKPiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGU7Cj4gLQkJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0JCWludCBpOwo+IC0K PiAtCQlzdGF0ZS0+YWNxdWlyZV9jdHggPSAmY3R4Owo+IC0KPiAtCQlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gLQkJCS8qCj4gLQkJCSAqIEZv cmNlIHJlY2FsY3VsYXRpb24gZXZlbiBpZiB3ZSByZXN0b3JlCj4gLQkJCSAqIGN1cnJlbnQgc3Rh dGUuIFdpdGggZmFzdCBtb2Rlc2V0IHRoaXMgbWF5IG5vdCByZXN1bHQKPiAtCQkJICogaW4gYSBt b2Rlc2V0IHdoZW4gdGhlIHN0YXRlIGlzIGNvbXBhdGlibGUuCj4gLQkJCSAqLwo+IC0JCQljcnRj X3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+IC0JCX0KPiAtCj4gLQkJcmV0ID0gZHJtX2F0 b21pY19jb21taXQoc3RhdGUpOwo+IC0JfQo+ICsJd2hpbGUgKDEpIHsKPiArCQlyZXQgPSBkcm1f bW9kZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKPiArCQlpZiAocmV0ICE9IC1FREVBRExL KQo+ICsJCQlicmVhazsKPiAgCj4gLQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gIAkJZHJtX21v ZGVzZXRfYmFja29mZigmY3R4KTsKPiAtCQlnb3RvIHJldHJ5Owo+ICAJfQo+ICAKPiArCXJldCA9 IF9faW50ZWxfZGlzcGxheV9yZXN1bWUoZGV2LCBzdGF0ZSk7CgpTaG91bGRuJ3Qgd2Ugc2tpcCB0 aGlzIGNhbGwgaWYgdGhlIGxvY2tfYWxsIGZhaWxlZD8KCj4gKwlXQVJOX09OKHJldCA9PSAtRURF QURMSyk7Cj4gKwo+ICAJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiAgCWRybV9tb2Rl c2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZp Zy5tdXRleCk7Cj4gLS0gCj4gMi41LjUKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=