From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 1/5] drm/i915: Record the sseu configuration per-context & engine Date: Fri, 25 Jan 2019 15:24:37 +0000 Message-ID: <20190125152441.5080-2-tvrtko.ursulin@linux.intel.com> References: <20190125152441.5080-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id F08F66E01C for ; Fri, 25 Jan 2019 15:24:40 +0000 (UTC) In-Reply-To: <20190125152441.5080-1-tvrtko.ursulin@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: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK V2Ugd2FudCB0byBleHBvc2UgdGhlIGFiaWxpdHkgdG8gcmVjb25maWd1cmUgdGhlIHNsaWNlcywg c3Vic2xpY2UgYW5kCmV1IHBlciBjb250ZXh0IGFuZCBwZXIgZW5naW5lLiBUbyBmYWNpbGl0YXRl IHRoYXQsIHN0b3JlIHRoZSBjdXJyZW50CmNvbmZpZ3VyYXRpb24gb24gdGhlIGNvbnRleHQgZm9y IGVhY2ggZW5naW5lLCB3aGljaCBpcyBpbml0aWFsbHkgc2V0CnRvIHRoZSBkZXZpY2UgZGVmYXVs dCB1cG9uIGNyZWF0aW9uLgoKdjI6IHJlY29yZCBzc2V1IGNvbmZpZ3VyYXRpb24gcGVyIGNvbnRl eHQgJiBlbmdpbmUgKENocmlzKQoKdjM6IGludHJvZHVjZSB0aGUgaTkxNV9nZW1fY29udGV4dF9z c2V1IHRvIHN0b3JlIHBvd2VyZ2F0aW5nCiAgICBwcm9ncmFtbWluZywgc3NldV9kZXZfaW5mbyBo YXMgZ3Jvd24gcXVpdGUgYSBiaXQgKExpb25lbCkKCnY0OiByZW5hbWUgaTkxNV9nZW1fc3NldSBp bnRvIGludGVsX3NzZXUgKENocmlzKQogICAgdXNlIHRvX2ludGVsX2NvbnRleHQoKSAoQ2hyaXMp Cgp2NTogTW9yZSB0b19pbnRlbF9jb250ZXh0KCkgKFR2cnRrbykKICAgIFN3aXRjaCBpbnRlbF9z c2V1IGZyb20gdW5pb24gdG8gc3RydWN0IChUdnJ0a28pCiAgICBNb3ZlIGNvbnRleHQgZGVmYXVs dCBzc2V1IGluIGV4aXN0aW5nIGxvb3AgKENocmlzKQoKdjY6IHMvaW50ZWxfc3NldV9mcm9tX2Rl dmljZV9zc2V1L2ludGVsX2RldmljZV9kZWZhdWx0X3NzZXUvIChUdnJ0a28pCgpUdnJ0a28gVXJz dWxpbjoKCnY3OgogKiBQYXNzIGludGVsX3NzZXUgYnkgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVl IHRvIG1ha2VfcnBjcy4KICogUmViYXNlIGZvciBtYWtlX3JwY3MgY2hhbmdlcy4KCnY4OgogKiBS ZWJhc2UgZm9yIFJQQ1MgZWRpdCBvbiBwaW4uCgp2OToKICogUmViYXNlIGZvciBjb250ZXh0IGlt YWdlIHNldHVwIGNoYW5nZXMuCgp2MTA6CiAqIFJlbmFtZSBkZXZfcHJpdiB0byBpOTE1LiAoQ2hy aXMgV2lsc29uKQoKdjExOgogKiBSZWJhc2UuCgp2MTI6CiAqIFJlYmFzZSBmb3IgSVNfR0VOIGNo YW5nZXMuCgp2MTM6CiAqIFJlYmFzZSBmb3IgUlVOVElNRV9JTkZPLgoKdjE0OgogKiBSZWJhc2Ug Zm9yIGludGVsX2NvbnRleHRfaW5pdC4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8 bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8 am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgfCAxNCArKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgIDMgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmggfCAgNCArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaCAgICAgfCAxMCArKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg ICAgICAgIHwgMzEgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA0 NyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApp bmRleCAwMTMzZDFkYTNkM2MuLjg4OGNiZDNlMzg5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CkBAIC0zMjk1LDYgKzMyOTUsMjAgQEAgbWt3cml0ZV9kZXZpY2VfaW5mbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g KilJTlRFTF9JTkZPKGRldl9wcml2KTsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxf c3NldQoraW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKK3sKKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lO Rk8oaTkxNSktPnNzZXU7CisJc3RydWN0IGludGVsX3NzZXUgdmFsdWUgPSB7CisJCS5zbGljZV9t YXNrID0gc3NldS0+c2xpY2VfbWFzaywKKwkJLnN1YnNsaWNlX21hc2sgPSBzc2V1LT5zdWJzbGlj ZV9tYXNrWzBdLAorCQkubWluX2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9z dWJzbGljZSwKKwkJLm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+bWF4X2V1c19wZXJfc3Vi c2xpY2UsCisJfTsKKworCXJldHVybiB2YWx1ZTsKK30KKwogLyogbW9kZXNldHRpbmcgKi8KIGV4 dGVybiB2b2lkIGludGVsX21vZGVzZXRfaW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IGV4dGVybiBpbnQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDkzZTg0NzUxMzcwZi4u YzRlYmFlNjZlZWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBA IC0zMjcsNiArMzI3LDkgQEAgaW50ZWxfY29udGV4dF9pbml0KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwKIAkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCWNlLT5nZW1f Y29udGV4dCA9IGN0eDsKKworCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRlZmF1bHQgKi8K KwljZS0+c3NldSA9IGludGVsX2RldmljZV9kZWZhdWx0X3NzZXUoY3R4LT5pOTE1KTsKIH0KIAog c3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuaAppbmRleCAzNzY5NDM4MjI4ZjYuLjAwMTBlNWMzMjY1NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5j bHVkZSAiaTkxNV9nZW0uaCIKICNpbmNsdWRlICJpOTE1X3NjaGVkdWxlci5oIgorI2luY2x1ZGUg ImludGVsX2RldmljZV9pbmZvLmgiCiAKIHN0cnVjdCBwaWQ7CiAKQEAgLTE3MSw2ICsxNzIsOSBA QCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJCWludCBwaW5fY291bnQ7CiAKIAkJY29uc3Qg c3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CisKKwkJLyoqIHNzZXU6IENvbnRyb2wgZXUv c2xpY2UgcGFydGl0aW9uaW5nICovCisJCXN0cnVjdCBpbnRlbF9zc2V1IHNzZXU7CiAJfSBfX2Vu Z2luZVtJOTE1X05VTV9FTkdJTkVTXTsKIAogCS8qKiByaW5nX3NpemU6IHNpemUgZm9yIGFsbG9j YXRpbmcgdGhlIHBlci1lbmdpbmUgcmluZyBidWZmZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmgKaW5kZXggYzBmMDg0Y2E0ZjI5Li41MmFjZmFjN2JlZjQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5oCkBAIC0zOCw2ICszOCwxNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdDsKIHN0cnVjdCBpOTE1X3JlcXVlc3Q7CiBzdHJ1Y3QgaTkxNV90aW1lbGluZTsKIAor LyoKKyAqIFBvd2VyZ2F0aW5nIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFydGljdWxhciAoY29udGV4 dCxlbmdpbmUpLgorICovCitzdHJ1Y3QgaW50ZWxfc3NldSB7CisJdTggc2xpY2VfbWFzazsKKwl1 OCBzdWJzbGljZV9tYXNrOworCXU4IG1pbl9ldXNfcGVyX3N1YnNsaWNlOworCXU4IG1heF9ldXNf cGVyX3N1YnNsaWNlOworfTsKKwogc3RydWN0IGludGVsX3dhaXQgewogCXN0cnVjdCByYl9ub2Rl IG5vZGU7CiAJc3RydWN0IHRhc2tfc3RydWN0ICp0c2s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CmluZGV4IDE4NTg2NzEwNmMxNC4uNThiMTMwYWU2MzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwpAQCAtMTE3Nyw3ICsxMTc3LDggQEAgc3RhdGljIGludCBfX2NvbnRleHRfcGluKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXJldHVybiBp OTE1X3ZtYV9waW4odm1hLCAwLCAwLCBmbGFncyk7CiB9CiAKLXN0YXRpYyB1MzIgbWFrZV9ycGNz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitzdGF0aWMgdTMyCittYWtlX3Jw Y3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1ICpjdHhf c3NldSk7CiAKIHN0YXRpYyB2b2lkCiBfX2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0YXRlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKQEAgLTExOTIsNyArMTE5Myw4IEBAIF9fZXhlY2xp c3RzX3VwZGF0ZV9yZWdfc3RhdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJ LyogUlBDUyAqLwogCWlmIChlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykKLQkJcmVnc1tD VFhfUl9QV1JfQ0xLX1NUQVRFICsgMV0gPSBtYWtlX3JwY3MoZW5naW5lLT5pOTE1KTsKKwkJcmVn c1tDVFhfUl9QV1JfQ0xLX1NUQVRFICsgMV0gPSBtYWtlX3JwY3MoZW5naW5lLT5pOTE1LAorCQkJ CQkJCSAgJmNlLT5zc2V1KTsKIH0KIAogc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKQEAg LTIyOTMsMTggKzIyOTUsMTkgQEAgaW50IGxvZ2ljYWxfeGNzX3JpbmdfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB9CiAKIHN0YXRpYyB1MzIKLW1ha2VfcnBjcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCittYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsIHN0cnVjdCBpbnRlbF9zc2V1ICpjdHhfc3NldSkKIHsKLQlib29sIHN1YnNs aWNlX3BnID0gUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5oYXNfc3Vic2xpY2VfcGc7Ci0J dTggc2xpY2VzID0gaHdlaWdodDgoUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zbGljZV9t YXNrKTsKLQl1OCBzdWJzbGljZXMgPSBod2VpZ2h0OChSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1LnN1YnNsaWNlX21hc2tbMF0pOworCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1 ID0gJlJVTlRJTUVfSU5GTyhpOTE1KS0+c3NldTsKKwlib29sIHN1YnNsaWNlX3BnID0gc3NldS0+ aGFzX3N1YnNsaWNlX3BnOworCXU4IHNsaWNlcyA9IGh3ZWlnaHQ4KGN0eF9zc2V1LT5zbGljZV9t YXNrKTsKKwl1OCBzdWJzbGljZXMgPSBod2VpZ2h0OChjdHhfc3NldS0+c3Vic2xpY2VfbWFzayk7 CiAJdTMyIHJwY3MgPSAwOwogCiAJLyoKIAkgKiBObyBleHBsaWNpdCBSUENTIHJlcXVlc3QgaXMg bmVlZGVkIHRvIGVuc3VyZSBmdWxsCiAJICogc2xpY2Uvc3Vic2xpY2UvRVUgZW5hYmxlbWVudCBw cmlvciB0byBHZW45LgogCSovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5KQorCWlmIChJ TlRFTF9HRU4oaTkxNSkgPCA5KQogCQlyZXR1cm4gMDsKIAogCS8qCkBAIC0yMzMyLDcgKzIzMzUs NyBAQCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHN1 YnNsaWNlcyBhcmUgZW5hYmxlZCwgb3IgYSBjb3VudCBiZXR3ZWVuIG9uZSBhbmQgZm91ciBvbiB0 aGUgZmlyc3QKIAkgKiBzbGljZS4KIAkgKi8KLQlpZiAoSVNfR0VOKGRldl9wcml2LCAxMSkgJiYg c2xpY2VzID09IDEgJiYgc3Vic2xpY2VzID49IDQpIHsKKwlpZiAoSVNfR0VOKGk5MTUsIDExKSAm JiBzbGljZXMgPT0gMSAmJiBzdWJzbGljZXMgPj0gNCkgewogCQlHRU1fQlVHX09OKHN1YnNsaWNl cyAmIDEpOwogCiAJCXN1YnNsaWNlX3BnID0gZmFsc2U7CkBAIC0yMzQ1LDEwICsyMzQ4LDEwIEBA IG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogbXVzdCBt YWtlIGFuIGV4cGxpY2l0IHJlcXVlc3QgdGhyb3VnaCBSUENTIGZvciBmdWxsCiAJICogZW5hYmxl bWVudC4KIAkqLwotCWlmIChSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lmhhc19zbGljZV9w ZykgeworCWlmIChzc2V1LT5oYXNfc2xpY2VfcGcpIHsKIAkJdTMyIG1hc2ssIHZhbCA9IHNsaWNl czsKIAotCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgeworCQlpZiAoSU5URUxfR0VO KGk5MTUpID49IDExKSB7CiAJCQltYXNrID0gR0VOMTFfUlBDU19TX0NOVF9NQVNLOwogCQkJdmFs IDw8PSBHRU4xMV9SUENTX1NfQ05UX1NISUZUOwogCQl9IGVsc2UgewpAQCAtMjM3MywxOCArMjM3 NiwxNiBAQCBtYWtlX3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQly cGNzIHw9IEdFTjhfUlBDU19FTkFCTEUgfCBHRU44X1JQQ1NfU1NfQ05UX0VOQUJMRSB8IHZhbDsK IAl9CiAKLQlpZiAoUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5oYXNfZXVfcGcpIHsKKwlp ZiAoc3NldS0+aGFzX2V1X3BnKSB7CiAJCXUzMiB2YWw7CiAKLQkJdmFsID0gUlVOVElNRV9JTkZP KGRldl9wcml2KS0+c3NldS5ldV9wZXJfc3Vic2xpY2UgPDwKLQkJICAgICAgR0VOOF9SUENTX0VV X01JTl9TSElGVDsKKwkJdmFsID0gY3R4X3NzZXUtPm1pbl9ldXNfcGVyX3N1YnNsaWNlIDw8IEdF TjhfUlBDU19FVV9NSU5fU0hJRlQ7CiAJCUdFTV9CVUdfT04odmFsICYgfkdFTjhfUlBDU19FVV9N SU5fTUFTSyk7CiAJCXZhbCAmPSBHRU44X1JQQ1NfRVVfTUlOX01BU0s7CiAKIAkJcnBjcyB8PSB2 YWw7CiAKLQkJdmFsID0gUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5ldV9wZXJfc3Vic2xp Y2UgPDwKLQkJICAgICAgR0VOOF9SUENTX0VVX01BWF9TSElGVDsKKwkJdmFsID0gY3R4X3NzZXUt Pm1heF9ldXNfcGVyX3N1YnNsaWNlIDw8IEdFTjhfUlBDU19FVV9NQVhfU0hJRlQ7CiAJCUdFTV9C VUdfT04odmFsICYgfkdFTjhfUlBDU19FVV9NQVhfTUFTSyk7CiAJCXZhbCAmPSBHRU44X1JQQ1Nf RVVfTUFYX01BU0s7CiAKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==