From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Filter out spurious execlists context-switch interrupts Date: Fri, 20 Oct 2017 12:48:39 +0100 Message-ID: <20171020114839.8200-1-chris@chris-wilson.co.uk> References: <20171020095950.25714-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2615B6EC2A for ; Fri, 20 Oct 2017 11:48:54 +0000 (UTC) In-Reply-To: <20171020095950.25714-2-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: intel-gfx@lists.freedesktop.org Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org QmFjayBpbiBjb21taXQgYTRiMmIwMTUyM2E4ICgiZHJtL2k5MTU6IERvbid0IG1hcmsgYW4gZXhl Y2xpc3RzCmNvbnRleHQtc3dpdGNoIHdoZW4gaWRsZSIpIHdlIG5vdGljZWQgdGhlIHByZXNlbmNl IG9mIGxhdGUKY29udGV4dC1zd2l0Y2ggaW50ZXJydXB0cy4gV2Ugd2VyZSBhYmxlIHRvIGZpbHRl ciB0aG9zZSBvdXQgYnkgbG9va2luZwphdCB3aGV0aGVyIHRoZSBFTFNQIHJlbWFpbmVkIGFjdGl2 ZSwgYnV0IGluIGNvbW1pdCBiZWVjZWM5MDE3OTAKKCJkcm0vaTkxNS9leGVjbGlzdHM6IFByZWVt cHRpb24hIikgdGhhdCBiZWNhbWUgcHJvYmxlbWF0aWMgYXMgd2Ugbm93CmFudGljaXBhdGUgcmVj ZWl2aW5nIGEgY29udGV4dC1zd2l0Y2ggZXZlbnQgZm9yIHByZWVtcHRpb24gd2hpbGUgRUxTUApt YXkgYmUgZW1wdHkuIFRvIHJlc3RvcmUgdGhlIHNwdXJpb3VzIGludGVycnVwdCBzdXBwcmVzc2lv biwgYWRkIGEKY291bnRlciBmb3IgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwZW5kaW5nIGNvbnRl eHQtc3dpdGNoZXMgYW5kIHNraXAgaWYKd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIHRoaXMgaW50 ZXJydXB0IHRvIG1ha2UgZm9yd2FyZCBwcm9ncmVzcy4KCnYyOiBBZGQgdGhlIG1pc3NpbmcgaW5j KGFjdGl2ZSkgZm9yIHByZWVtcHQuCgpGaXhlczogYmVlY2VjOTAxNzkwICgiZHJtL2k5MTUvZXhl Y2xpc3RzOiBQcmVlbXB0aW9uISIpClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpDYzogTWljaGFsIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNr aUBpbnRlbC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgpDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPgpDYzogTWlr YSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgMTEgKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICB8ICA2ICsrKystLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgIDUgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICA3ICsrKysrKysKIDUg ZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IGEyZTgxMTRiNzM5ZC4u YzIyZDBhMDc0NjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCkBAIC01NTAsMTEgKzU1MCw5IEBAIHN0YXRpYyB2b2lkIHBvcnRfYXNzaWduKHN0cnVjdCBl eGVjbGlzdF9wb3J0ICpwb3J0LAogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkK IHsKIAlHRU1fQlVHX09OKHJxID09IHBvcnRfcmVxdWVzdChwb3J0KSk7CisJR0VNX0JVR19PTihw b3J0X2lzc2V0KHBvcnQpKTsKIAotCWlmIChwb3J0X2lzc2V0KHBvcnQpKQotCQlpOTE1X2dlbV9y ZXF1ZXN0X3B1dChwb3J0X3JlcXVlc3QocG9ydCkpOwotCi0JcG9ydF9zZXQocG9ydCwgcG9ydF9w YWNrKGk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJxKSwgcG9ydF9jb3VudChwb3J0KSkpOworCXBvcnRf c2V0KHBvcnQsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJxKSk7CiAJbmVzdGVkX2VuYWJsZV9zaWdu YWxpbmcocnEpOwogfQogCkBAIC01ODYsOCArNTg0LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ3Vj X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQkJCQlnb3RvIGRvbmU7 CiAJCQkJfQogCi0JCQkJaWYgKHN1Ym1pdCkKKwkJCQlpZiAoc3VibWl0KSB7CiAJCQkJCXBvcnRf YXNzaWduKHBvcnQsIGxhc3QpOworCQkJCQlleGVjbGlzdHMtPmFjdGl2ZSsrOworCQkJCX0KIAkJ CQlwb3J0Kys7CiAJCQl9CiAKQEAgLTYxMCw2ICs2MTAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2d1 Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlleGVjbGlzdHMtPmZp cnN0ID0gcmI7CiAJaWYgKHN1Ym1pdCkgewogCQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKKwkJ ZXhlY2xpc3RzLT5hY3RpdmUrKzsKIAkJaTkxNV9ndWNfc3VibWl0KGVuZ2luZSk7CiAJfQogCXNw aW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwppbmRleCBiMTI5NmE1NWMxZTQuLmY4MjA1ODQxODY4YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCkBAIC0xMzg4LDggKzEzODgsMTAgQEAgZ2VuOF9jc19pcnFfaGFuZGxlcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0KQogCWJvb2wg dGFza2xldCA9IGZhbHNlOwogCiAJaWYgKGlpciAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJV UFQgPDwgdGVzdF9zaGlmdCkpIHsKLQkJX19zZXRfYml0KEVOR0lORV9JUlFfRVhFQ0xJU1QsICZl bmdpbmUtPmlycV9wb3N0ZWQpOwotCQl0YXNrbGV0ID0gdHJ1ZTsKKwkJaWYgKFJFQURfT05DRShl bmdpbmUtPmV4ZWNsaXN0cy5hY3RpdmUpKSB7CisJCQlfX3NldF9iaXQoRU5HSU5FX0lSUV9FWEVD TElTVCwgJmVuZ2luZS0+aXJxX3Bvc3RlZCk7CisJCQl0YXNrbGV0ID0gdHJ1ZTsKKwkJfQogCX0K IAogCWlmIChpaXIgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IHRlc3Rfc2hpZnQpKSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGE0N2E5YzZiZWE1Mi4u OGFlY2JjMzIxNzg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAt MTU0OCw4ICsxNTQ4LDggQEAgYm9vbCBpbnRlbF9lbmdpbmVfaXNfaWRsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJaWYgKHRlc3RfYml0KEVOR0lORV9JUlFfRVhFQ0xJU1QsICZl bmdpbmUtPmlycV9wb3N0ZWQpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQkvKiBCb3RoIHBvcnRzIGRy YWluZWQsIG5vIG1vcmUgRUxTUCBzdWJtaXNzaW9uPyAqLwotCWlmIChwb3J0X3JlcXVlc3QoJmVu Z2luZS0+ZXhlY2xpc3RzLnBvcnRbMF0pKQorCS8qIFdhaXRpbmcgdG8gZHJhaW4gRUxTUD8gKi8K KwlpZiAoUkVBRF9PTkNFKGVuZ2luZS0+ZXhlY2xpc3RzLmFjdGl2ZSkpCiAJCXJldHVybiBmYWxz ZTsKIAogCS8qIEVMU1AgaXMgZW1wdHksIGJ1dCB0aGVyZSBhcmUgcmVhZHkgcmVxdWVzdHM/ICov CkBAIC0xNzQ5LDYgKzE3NDksNyBAQCB2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGRybV9wcmludGVyICptKQogCQkJCQkgICBpZHgp OwogCQkJfQogCQl9CisJCWRybV9wcmludGYobSwgIlx0XHRFTFNQIGFjdGl2ZSAlZFxuIiwgZXhl Y2xpc3RzLT5hY3RpdmUpOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAl9IGVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPiA2KSB7CiAJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0U6IDB4 JTA4eFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggN2Y0NWRkN2RjM2U1Li5jMmNk Yjg1ZGIzNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC00ODIsMTUgKzQ4MiwyMyBA QCBzdGF0aWMgYm9vbCBjYW5fbWVyZ2VfY3R4KGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpwcmV2LAogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBwb3J0X2Fzc2lnbihzdHJ1 Y3QgZXhlY2xpc3RfcG9ydCAqcG9ydCwKK3N0YXRpYyBib29sIHBvcnRfYXNzaWduKHN0cnVjdCBl eGVjbGlzdF9wb3J0ICpwb3J0LAogCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkK IHsKKwlib29sIHdhc19pZGxlOworCiAJR0VNX0JVR19PTihycSA9PSBwb3J0X3JlcXVlc3QocG9y dCkpOwogCi0JaWYgKHBvcnRfaXNzZXQocG9ydCkpCisJaWYgKHBvcnRfaXNzZXQocG9ydCkpIHsK IAkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocG9ydF9yZXF1ZXN0KHBvcnQpKTsKKwkJd2FzX2lkbGUg PSBmYWxzZTsKKwl9IGVsc2UgeworCQl3YXNfaWRsZSA9IHRydWU7CisJfQogCiAJcG9ydF9zZXQo cG9ydCwgcG9ydF9wYWNrKGk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJxKSwgcG9ydF9jb3VudChwb3J0 KSkpOworCisJcmV0dXJuIHdhc19pZGxlOwogfQogCiBzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1w dF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKQEAgLTU3Niw2ICs1ODQs NyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiAJCQkgKi8KIAkJCWluamVjdF9wcmVlbXB0X2NvbnRleHQoZW5naW5lKTsKIAkJ CWV4ZWNsaXN0cy0+cHJlZW1wdCA9IHRydWU7CisJCQlleGVjbGlzdHMtPmFjdGl2ZSsrOwogCQkJ Z290byB1bmxvY2s7CiAJCX0gZWxzZSB7CiAJCQkvKgpAQCAtNjU3LDcgKzY2Niw3IEBAIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAkJCQlHRU1fQlVHX09OKGxhc3QtPmN0eCA9PSBycS0+Y3R4KTsKIAogCQkJCWlmIChzdWJtaXQp Ci0JCQkJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOworCQkJCQlleGVjbGlzdHMtPmFjdGl2ZSAr PSBwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKIAkJCQlwb3J0Kys7CiAKIAkJCQlHRU1fQlVHX09O KHBvcnRfaXNzZXQocG9ydCkpOwpAQCAtNjc5LDcgKzY4OCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIGRvbmU6CiAJZXhl Y2xpc3RzLT5maXJzdCA9IHJiOwogCWlmIChzdWJtaXQpCi0JCXBvcnRfYXNzaWduKHBvcnQsIGxh c3QpOworCQlleGVjbGlzdHMtPmFjdGl2ZSArPSBwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKIHVu bG9jazoKIAlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwogCkBAIC02 OTYsMTAgKzcwNSwxMiBAQCBleGVjbGlzdF9jYW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQogCXdoaWxlIChudW1fcG9ydHMtLSAmJiBw b3J0X2lzc2V0KHBvcnQpKSB7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEgPSBw b3J0X3JlcXVlc3QocG9ydCk7CiAKKwkJR0VNX0JVR19PTighZXhlY2xpc3RzLT5hY3RpdmUpOwog CQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVE VUxFX1BSRUVNUFRFRCk7CiAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJxKTsKIAogCQltZW1zZXQo cG9ydCwgMCwgc2l6ZW9mKCpwb3J0KSk7CisJCWV4ZWNsaXN0cy0+YWN0aXZlLS07CiAJCXBvcnQr KzsKIAl9CiB9CkBAIC04NjMsNiArODc0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfbHJjX2lycV9o YW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAogCQkJCUdFTV9CVUdfT04oIWV4ZWNsaXN0cy0+ cHJlZW1wdCk7CiAJCQkJZXhlY2xpc3RzLT5wcmVlbXB0ID0gZmFsc2U7CisJCQkJZXhlY2xpc3Rz LT5hY3RpdmUtLTsKKwkJCQlHRU1fQlVHX09OKGV4ZWNsaXN0cy0+YWN0aXZlKTsKIAkJCQljb250 aW51ZTsKIAkJCX0KIApAQCAtMTQ2MSw2ICsxNDc0LDcgQEAgc3RhdGljIGludCBnZW44X2luaXRf Y29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWNsZWFyX2JpdChF TkdJTkVfSVJRX0VYRUNMSVNULCAmZW5naW5lLT5pcnFfcG9zdGVkKTsKIAlleGVjbGlzdHMtPmNz Yl9oZWFkID0gLTE7CiAJZXhlY2xpc3RzLT5wcmVlbXB0ID0gZmFsc2U7CisJZXhlY2xpc3RzLT5h Y3RpdmUgPSAwOwogCiAJLyogQWZ0ZXIgYSBHUFUgcmVzZXQsIHdlIG1heSBoYXZlIHJlcXVlc3Rz IHRvIHJlcGxheSAqLwogCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1Y19zdWJtaXNzaW9u ICYmIGV4ZWNsaXN0cy0+Zmlyc3QpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKaW5kZXggMTcxODZmMDY3NDA4Li41ODhmNWZlOWQyYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTI0NSw2ICsyNDUsMTEgQEAgc3RydWN0IGludGVsX2Vu Z2luZV9leGVjbGlzdHMgewogCSAqLwogCWJvb2wgcHJlZW1wdDsKIAorCS8qKgorCSAqIEBhY3Rp dmU6IGNvdW50IG9mIHRoZSBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgQ1NCIGV2ZW50cworCSAqLwor CXVuc2lnbmVkIGludCBhY3RpdmU7CisKIAkvKioKIAkgKiBAcG9ydF9tYXNrOiBudW1iZXIgb2Yg ZXhlY2xpc3QgcG9ydHMgLSAxCiAJICovCkBAIC01MzgsOSArNTQzLDExIEBAIGV4ZWNsaXN0c19w b3J0X2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xp c3RzLAogCWNvbnN0IHVuc2lnbmVkIGludCBtID0gZXhlY2xpc3RzLT5wb3J0X21hc2s7CiAKIAlH RU1fQlVHX09OKHBvcnRfaW5kZXgocG9ydCwgZXhlY2xpc3RzKSAhPSAwKTsKKwlHRU1fQlVHX09O KCFleGVjbGlzdHMtPmFjdGl2ZSk7CiAKIAltZW1tb3ZlKHBvcnQsIHBvcnQgKyAxLCBtICogc2l6 ZW9mKHN0cnVjdCBleGVjbGlzdF9wb3J0KSk7CiAJbWVtc2V0KHBvcnQgKyBtLCAwLCBzaXplb2Yo c3RydWN0IGV4ZWNsaXN0X3BvcnQpKTsKKwlleGVjbGlzdHMtPmFjdGl2ZS0tOwogfQogCiBzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludAotLSAKMi4xNS4wLnJjMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==