From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915: Keep user GGTT alive for a minimum of 250ms Date: Fri, 24 May 2019 19:06:01 +0300 Message-ID: <87h89jon12.fsf@gaia.fi.intel.com> References: <20190524151223.17879-1-chris@chris-wilson.co.uk> <20190524153338.8877-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 158356E119 for ; Fri, 24 May 2019 16:06:57 +0000 (UTC) In-Reply-To: <20190524153338.8877-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gRG8gbm90 IGFsbG93IHJ1bnRpbWUgcG0gYXV0b3N1c3BlbmQgdG8gcmVtb3ZlIHVzZXJzcGFjZSBHR1RUIG1t YXBzIHRvbwo+IHF1aWNrbHkuIEZvciBleGFtcGxlLCBpZ3Qgc2V0cyB0aGUgYXV0b3N1c3BlbmQg ZGVsYXkgdG8gMCwgYW5kIHNvIHdlCj4gaW1tZWRpYXRlbHkgYXR0ZW1wdCB0byBwZXJmb3JtIHJ1 bnRpbWUgc3VzcGVuZCB1cG9uIHJlbGVhc2luZyB0aGUKPiB3YWtlcmVmLiBVbmZvcnR1bmF0ZWx5 LCB0aGF0IGludm9sdmVzIHRlYXJpbmcgZG93biBHR1RUIG1tYXBzIGFzIHRoZXkKPiByZXF1aXJl IGFuIGFjdGl2ZSBkZXZpY2UuCj4KPiBPdmVycmlkZSB0aGUgYXV0b3N1c3BlbmQgZm9yIEdHVFQg bW1hcHMsIGJ5IGtlZXBpbmcgdGhlIHdha2VyZWYgYXJvdW5kCj4gZm9yIDI1MG1zIGFmdGVyIHBv cHVsYXRpbmcgdGhlIFBURSBmb3IgYSBmcmVzaCBtbWFwLgo+Cj4gdjI6IFByZWZlciByZWZjb3Vu dF90IGZvciBpdHMgdW5kZXIvb3ZlcmZsb3cgZXJyb3IgZGV0ZWN0aW9uCj4KPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogTWlrYSBL dW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L0tjb25maWcucHJvZmlsZSB8IDE0ICsrKysrKysKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDMgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgIHwgIDcgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 YWtlcmVmLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3dha2VyZWYuaCB8IDI4ICsrKysrKysrKysrKysrCj4gIDUgZmlsZXMg Y2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9LY29uZmlnLnByb2ZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLnBy b2ZpbGUKPiBpbmRleCAwZTVkYjk4ZGE4ZjMuLjRmZDFlYTYzOWQwZiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLnByb2ZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9LY29uZmlnLnByb2ZpbGUKPiBAQCAtMSwzICsxLDE3IEBACj4gK2NvbmZpZyBEUk1f STkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQKPiArCWludCAiUnVudGltZSBhdXRvc3VzcGVuZCBk ZWxheSBmb3IgdXNlcnNwYWNlIEdHVFQgbW1hcHMgKG1zKSIKPiArCWRlZmF1bHQgMjUwICMgbWls bGlzZWNvbmRzCj4gKwloZWxwCj4gKwkgIE9uIHJ1bnRpbWUgc3VzcGVuZCwgYXMgd2Ugc3VzcGVu ZCB0aGUgZGV2aWNlLCB3ZSBoYXZlIHRvIHJldm9rZQo+ICsJICB1c2Vyc3BhY2UgR0dUVCBtbWFw cyBhbmQgZm9yY2UgdXNlcnNwYWNlIHRvIHRha2UgYSBwYWdlZmF1bHQgb24KPiArCSAgdGhlaXIg bmV4dCBhY2Nlc3MuIFRoZSByZXZvY2F0aW9uIGFuZCBzdWJzZXF1ZW50IHJlY3JlYXRpb24gb2YK PiArCSAgdGhlIEdHVFQgbW1hcCBjYW4gYmUgdmVyeSBzbG93IGFuZCBzbyB3ZSBpbXBvc2UgYSBz bWFsbCBoeXN0ZXJpcwo+ICsJICB0aGF0IGNvbXBsZW1lbnRzIHRoZSBydW50aW1lLXBtIGF1dG9z dXNwZW5kIGFuZCBwcm92aWRlcyBhIGxvd2VyCj4gKwkgIGZsb29yIG9uIHRoZSBhdXRvc3VzcGVu ZCBkZWxheS4KPiArCj4gKwkgIE1heSBiZSAwIHRvIGRpc2FibGUgdGhlIGV4dHJhIGRlbGF5IGFu ZCBzb2xlbHkgdXNlIHRoZSBkZXZpY2UgbGV2ZWwKPiArCSAgcnVudGltZSBwbSBhdXRvc3VzcGVu ZCBkZWxheSB0dW5hYmxlLgo+ICsKPiAgY29uZmlnIERSTV9JOTE1X1NQSU5fUkVRVUVTVAo+ICAJ aW50Cj4gIAlkZWZhdWx0IDUgIyBtaWNyb3NlY29uZHMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBpbmRleCAzMTFlMTkxNTQ2NzIuLjQxZGFkODg4OWVhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+IEBAIC04NzQsNiArODc0LDkgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKPiAgCSAq Lwo+ICAJc3RydWN0IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGlzdDsKPiAgCj4gKwkvKiBNYW51YWwg cnVudGltZSBwbSBhdXRvc3VzcGVuZCBkZWxheSBmb3IgdXNlciBHR1RUIG1tYXBzICovCj4gKwlz dHJ1Y3QgaW50ZWxfd2FrZXJlZl9hdXRvIHVzZXJmYXVsdF93YWtlcmVmOwo+ICsKPiAgCS8qKgo+ ICAJICogTGlzdCBvZiBvYmplY3RzIHdoaWNoIGFyZSBwZW5kaW5nIGRlc3RydWN0aW9uLgo+ICAJ ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZDNiN2RhYzUyN2RjLi5jYjc4NjU4 MmUyZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTgzNCw2ICsxODM0LDkg QEAgdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiAgCWFz c2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gIAlpZiAoIWk5MTVfdm1hX3NldF91 c2VyZmF1bHQodm1hKSAmJiAhb2JqLT51c2VyZmF1bHRfY291bnQrKykKPiAgCQlsaXN0X2FkZCgm b2JqLT51c2VyZmF1bHRfbGluaywgJmRldl9wcml2LT5tbS51c2VyZmF1bHRfbGlzdCk7Cj4gKwlp ZiAoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkKPiArCQlpbnRlbF93YWtl cmVmX2F1dG8oJmRldl9wcml2LT5tbS51c2VyZmF1bHRfd2FrZXJlZiwKPiArCQkJCSAgIG1zZWNz X3RvX2ppZmZpZXNfdGltZW91dChDT05GSUdfRFJNX0k5MTVfVVNFUkZBVUxUX0FVVE9TVVNQRU5E KSk7Cj4gIAlHRU1fQlVHX09OKCFvYmotPnVzZXJmYXVsdF9jb3VudCk7Cj4gIAo+ICAJaTkxNV92 bWFfc2V0X2dndHRfd3JpdGUodm1hKTsKPiBAQCAtNDY3MSw2ICs0Njc0LDggQEAgdm9pZCBpOTE1 X2dlbV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJR0VN X0JVR19PTihkZXZfcHJpdi0+Z3QuYXdha2UpOwo+ICAKPiArCWludGVsX3dha2VyZWZfYXV0b19m aW5pKCZkZXZfcHJpdi0+bW0udXNlcmZhdWx0X3dha2VyZWYpOwo+ICsKPiAgCWk5MTVfZ2VtX3N1 c3BlbmRfbGF0ZShkZXZfcHJpdik7Cj4gIAlpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShkZXZf cHJpdik7Cj4gIAo+IEBAIC00NzQ4LDYgKzQ3NTMsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9p bml0X19tbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCUlOSVRfTElTVF9IRUFE KCZpOTE1LT5tbS5mZW5jZV9saXN0KTsKPiAgCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5tbS51c2Vy ZmF1bHRfbGlzdCk7Cj4gIAo+ICsJaW50ZWxfd2FrZXJlZl9hdXRvX2luaXQoJmk5MTUtPm1tLnVz ZXJmYXVsdF93YWtlcmVmLCBpOTE1KTsKPiArCj4gIAlJTklUX1dPUksoJmk5MTUtPm1tLmZyZWVf d29yaywgX19pOTE1X2dlbV9mcmVlX3dvcmspOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF93YWtlcmVmLmMKPiBpbmRleCA5MTE5NmQ5NjEyYmIuLjc4YjYyNGMxZWQ1OSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmMKPiBAQCAtNzMsMyArNzMsNjEgQEAgdm9p ZCBfX2ludGVsX3dha2VyZWZfaW5pdChzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YsIHN0cnVjdCBs b2NrX2NsYXNzX2tleSAqa2V5KQo+ICAJYXRvbWljX3NldCgmd2YtPmNvdW50LCAwKTsKPiAgCXdm LT53YWtlcmVmID0gMDsKPiAgfQo+ICsKPiArc3RhdGljIHZvaWQgd2FrZXJlZl9hdXRvX3RpbWVv dXQoc3RydWN0IHRpbWVyX2xpc3QgKnQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF93YWtlcmVmX2F1 dG8gKndmID0gZnJvbV90aW1lcih3ZiwgdCwgdGltZXIpOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArCWlmICghcmVmY291bnRfZGVj X2FuZF9sb2NrX2lycXNhdmUoJndmLT5jb3VudCwgJndmLT5sb2NrLCAmZmxhZ3MpKQo+ICsJCXJl dHVybjsKPiArCj4gKwl3YWtlcmVmID0gZmV0Y2hfYW5kX3plcm8oJndmLT53YWtlcmVmKTsKPiAr CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndmLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJaW50ZWxf cnVudGltZV9wbV9wdXQod2YtPmk5MTUsIHdha2VyZWYpOwo+ICt9Cj4gKwo+ICt2b2lkIGludGVs X3dha2VyZWZfYXV0b19pbml0KHN0cnVjdCBpbnRlbF93YWtlcmVmX2F1dG8gKndmLAo+ICsJCQkg ICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzcGluX2xvY2tfaW5p dCgmd2YtPmxvY2spOwo+ICsJdGltZXJfc2V0dXAoJndmLT50aW1lciwgd2FrZXJlZl9hdXRvX3Rp bWVvdXQsIDApOwo+ICsJcmVmY291bnRfc2V0KCZ3Zi0+Y291bnQsIDApOwo+ICsJd2YtPndha2Vy ZWYgPSAwOwo+ICsJd2YtPmk5MTUgPSBpOTE1Owo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX3dha2Vy ZWZfYXV0byhzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9hdXRvICp3ZiwgbG9uZyB0aW1lb3V0KQo+ICt7 Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVs ZCh3Zi0+aTkxNSk7Cj4gKwo+ICsJaWYgKCFyZWZjb3VudF9pbmNfbm90X3plcm8oJndmLT5jb3Vu dCkpIHsKPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmd2YtPmxvY2ssIGZsYWdzKTsKPiArCQlpZiAo IXJlZmNvdW50X3JlYWQoJndmLT5jb3VudCkpIHsKPiArCQkJR0VNX0JVR19PTih3Zi0+d2FrZXJl Zik7Cj4gKwkJCXdmLT53YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHdm LT5pOTE1KTsKPiArCQl9Cj4gKwkJcmVmY291bnRfaW5jKCZ3Zi0+Y291bnQpOwo+ICsJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJndmLT5sb2NrLCBmbGFncyk7CgpBIGJpdCBjb21wbGV4IG1vcmUg Y29tcGxleCB0aGFuIHdpdGggdjEgYnV0IGFzIGEgdHJhZGVvZmYgd2UgZ2V0CnRoZSByZWZjb3Vu dCBjaGVja3MuCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51 eC5pbnRlbC5jb20+Cgo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBJZiB3ZSBleHRlbmQgYSBwZW5k aW5nIHRpbWVyLCB3ZSB3aWxsIG9ubHkgZ2V0IGEgc2luZ2xlIHRpbWVyCj4gKwkgKiBjYWxsYmFj ayBhbmQgc28gbmVlZCB0byBjYW5jZWwgdGhlIGxvY2FsIGluYyBieSBydW5uaW5nIHRoZQo+ICsJ ICogZWxpZGVkIGNhbGxiYWNrIHRvIGtlZXAgdGhlIHdmLT5jb3VudCBiYWxhbmNlZC4KPiArCSAq Lwo+ICsJaWYgKG1vZF90aW1lcigmd2YtPnRpbWVyLCBqaWZmaWVzICsgdGltZW91dCkpCj4gKwkJ d2FrZXJlZl9hdXRvX3RpbWVvdXQoJndmLT50aW1lcik7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxf d2FrZXJlZl9hdXRvX2Zpbmkoc3RydWN0IGludGVsX3dha2VyZWZfYXV0byAqd2YpCj4gK3sKPiAr CWlmIChkZWxfdGltZXJfc3luYygmd2YtPnRpbWVyKSkKPiArCQl3YWtlcmVmX2F1dG9fdGltZW91 dCgmd2YtPnRpbWVyKTsKPiArCj4gKwlHRU1fQlVHX09OKHdmLT53YWtlcmVmKTsKPiArfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmgKPiBpbmRleCBkYjc0MjI5MTIxMWMuLjIyMWJi MjM3ZWZkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVm LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93YWtlcmVmLmgKPiBAQCAtOSw3 ICs5LDkgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGxp bnV4L211dGV4Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWZjb3VudC5oPgo+ICAjaW5jbHVkZSA8 bGludXgvc3RhY2tkZXBvdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KPiAgCj4gIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICAKPiBAQCAtMTMwLDQgKzEzMiwzMCBAQCBpbnRlbF93 YWtlcmVmX2FjdGl2ZShzdHJ1Y3QgaW50ZWxfd2FrZXJlZiAqd2YpCj4gIAlyZXR1cm4gUkVBRF9P TkNFKHdmLT53YWtlcmVmKTsKPiAgfQo+ICAKPiArc3RydWN0IGludGVsX3dha2VyZWZfYXV0byB7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiArCXN0cnVjdCB0aW1lcl9saXN0 IHRpbWVyOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlzcGlubG9ja190IGxvY2s7 Cj4gKwlyZWZjb3VudF90IGNvdW50Owo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGludGVsX3dha2Vy ZWZfYXV0bzogRGVsYXkgdGhlIHJ1bnRpbWUtcG0gYXV0b3N1c3BlbmQKPiArICogQHdmOiB0aGUg d2FrZXJlZgo+ICsgKiBAdGltZW91dDogcmVsYXRpdmUgdGltZW91dCBpbiBqaWZmaWVzCj4gKyAq Cj4gKyAqIFRoZSBydW50aW1lLXBtIGNvcmUgdXNlcyBhIHN1c3BlbmQgZGVsYXkgYWZ0ZXIgdGhl IGxhc3Qgd2FrZXJlZgo+ICsgKiBpcyByZWxlYXNlZCBiZWZvcmUgdHJpZ2dlcmluZyBydW50aW1l IHN1c3BlbmQgb2YgdGhlIGRldmljZS4gVGhhdAo+ICsgKiBkZWxheSBpcyBjb25maWd1cmFibGUg dmlhIHN5c2ZzIHdpdGggbGl0dGxlIHJlZ2FyZCB0byB0aGUgZGV2aWNlCj4gKyAqIGNoYXJhY3Rl cmlzdGljcy4gSW5zdGVhZCwgd2Ugd2FudCB0byB0dW5lIHRoZSBhdXRvc3VzcGVuZCBiYXNlZCBv biBvdXIKPiArICogSFcga25vd2xlZGdlLiBpbnRlbF93YWtlcmVmX2F1dG8oKSBkZWxheXMgdGhl IHNsZWVwIGJ5IHRoZSBzdXBwbGllZAo+ICsgKiB0aW1lb3V0Lgo+ICsgKi8KPiArdm9pZCBpbnRl bF93YWtlcmVmX2F1dG8oc3RydWN0IGludGVsX3dha2VyZWZfYXV0byAqd2YsIGxvbmcgdGltZW91 dCk7Cj4gKwo+ICt2b2lkIGludGVsX3dha2VyZWZfYXV0b19pbml0KHN0cnVjdCBpbnRlbF93YWtl cmVmX2F1dG8gKndmLAo+ICsJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK PiArdm9pZCBpbnRlbF93YWtlcmVmX2F1dG9fZmluaShzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9hdXRv ICp3Zik7Cj4gKwo+ICAjZW5kaWYgLyogSU5URUxfV0FLRVJFRl9IICovCj4gLS0gCj4gMi4yMC4x Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==