From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Christian=20K=C3=B6nig?= Subject: [PATCH 05/13] drm/radeon: rework gpu lockup detection and processing Date: Fri, 20 Apr 2012 00:39:12 +0200 Message-ID: <1334875160-5454-6-git-send-email-deathsimple@vodafone.de> References: <1334875160-5454-1-git-send-email-deathsimple@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from outgoing.email.vodafone.de (outgoing.email.vodafone.de [139.7.28.128]) by gabe.freedesktop.org (Postfix) with ESMTP id 6AAD59EB26 for ; Thu, 19 Apr 2012 15:39:26 -0700 (PDT) In-Reply-To: <1334875160-5454-1-git-send-email-deathsimple@vodafone.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org UHJldml1c2x5IG11bHRpcGxlIHJpbmcgY291bGQgdHJpZ2dlciBtdWx0aXBsZSBHUFUKcmVzZXRz IGF0IHRoZSBzYW1lIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0 aHNpbXBsZUB2b2RhZm9uZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o ICAgICAgIHwgICAgMyArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYyB8 ICAxNDYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQs IDc1IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uLmggYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbi5o CmluZGV4IDg4MDE2NTcuLjg1YTNhYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vcmFkZW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb24uaApAQCAtMjU1 LDggKzI1NSw3IEBAIHN0cnVjdCByYWRlb25fZmVuY2VfZHJpdmVyIHsKIAl2b2xhdGlsZSB1aW50 MzJfdAkJKmNwdV9hZGRyOwogCWF0b21pY190CQkJc2VxOwogCXVpbnQzMl90CQkJbGFzdF9zZXE7 Ci0JdW5zaWduZWQgbG9uZwkJCWxhc3RfamlmZmllczsKLQl1bnNpZ25lZCBsb25nCQkJbGFzdF90 aW1lb3V0OworCXVuc2lnbmVkIGxvbmcJCQlsYXN0X2FjdGl2aXR5OwogCXdhaXRfcXVldWVfaGVh ZF90CQlxdWV1ZTsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQljcmVhdGVkOwogCXN0cnVjdCBsaXN0X2hl YWQJCWVtaXR0ZWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9m ZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmVuY2UuYwppbmRleCAzNmM0 MTFmLi4xYTk3NjVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9m ZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZlbmNlLmMKQEAgLTc0 LDYgKzc0LDEwIEBAIGludCByYWRlb25fZmVuY2VfZW1pdChzdHJ1Y3QgcmFkZW9uX2RldmljZSAq cmRldiwgc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UpCiAJcmFkZW9uX2ZlbmNlX3JpbmdfZW1p dChyZGV2LCBmZW5jZS0+cmluZywgZmVuY2UpOwogCXRyYWNlX3JhZGVvbl9mZW5jZV9lbWl0KHJk ZXYtPmRkZXYsIGZlbmNlLT5zZXEpOwogCWZlbmNlLT5lbWl0dGVkID0gdHJ1ZTsKKwkvKiBhcmUg d2UgdGhlIGZpcnN0IGZlbmNlIG9uIGEgcHJldml1c2x5IGlkbGUgcmluZz8gKi8KKwlpZiAobGlz dF9lbXB0eSgmcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5lbWl0dGVkKSkgeworCQlyZGV2 LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZpdHkgPSBqaWZmaWVzOworCX0KIAls aXN0X21vdmVfdGFpbCgmZmVuY2UtPmxpc3QsICZyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmdd LmVtaXR0ZWQpOwogCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBp cnFfZmxhZ3MpOwogCXJldHVybiAwOwpAQCAtODUsMzQgKzg5LDE0IEBAIHN0YXRpYyBib29sIHJh ZGVvbl9mZW5jZV9wb2xsX2xvY2tlZChzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldiwgaW50IHJp bmcpCiAJc3RydWN0IGxpc3RfaGVhZCAqaSwgKm47CiAJdWludDMyX3Qgc2VxOwogCWJvb2wgd2Fr ZSA9IGZhbHNlOwotCXVuc2lnbmVkIGxvbmcgY2ppZmZpZXM7CiAKIAlzZXEgPSByYWRlb25fZmVu Y2VfcmVhZChyZGV2LCByaW5nKTsKLQlpZiAoc2VxICE9IHJkZXYtPmZlbmNlX2RydltyaW5nXS5s YXN0X3NlcSkgewotCQlyZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9zZXEgPSBzZXE7Ci0JCXJk ZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X2ppZmZpZXMgPSBqaWZmaWVzOwotCQlyZGV2LT5mZW5j ZV9kcnZbcmluZ10ubGFzdF90aW1lb3V0ID0gUkFERU9OX0ZFTkNFX0pJRkZJRVNfVElNRU9VVDsK LQl9IGVsc2UgewotCQljamlmZmllcyA9IGppZmZpZXM7Ci0JCWlmICh0aW1lX2FmdGVyKGNqaWZm aWVzLCByZGV2LT5mZW5jZV9kcnZbcmluZ10ubGFzdF9qaWZmaWVzKSkgewotCQkJY2ppZmZpZXMg LT0gcmRldi0+ZmVuY2VfZHJ2W3JpbmddLmxhc3RfamlmZmllczsKLQkJCWlmICh0aW1lX2FmdGVy KHJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQsIGNqaWZmaWVzKSkgewotCQkJCS8q IHVwZGF0ZSB0aGUgdGltZW91dCAqLwotCQkJCXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3Rp bWVvdXQgLT0gY2ppZmZpZXM7Ci0JCQl9IGVsc2UgewotCQkJCS8qIHRoZSA1MDBtcyB0aW1lb3V0 IGlzIGVsYXBzZWQgd2Ugc2hvdWxkIHRlc3QKLQkJCQkgKiBmb3IgR1BVIGxvY2t1cAotCQkJCSAq LwotCQkJCXJkZXYtPmZlbmNlX2RydltyaW5nXS5sYXN0X3RpbWVvdXQgPSAxOwotCQkJfQotCQl9 IGVsc2UgewotCQkJLyogd3JhcCBhcm91bmQgdXBkYXRlIGxhc3QgamlmZmllcywgd2Ugd2lsbCBq dXN0IHdhaXQKLQkJCSAqIGEgbGl0dGxlIGxvbmdlcgotCQkJICovCi0JCQlyZGV2LT5mZW5jZV9k cnZbcmluZ10ubGFzdF9qaWZmaWVzID0gY2ppZmZpZXM7Ci0JCX0KKwlpZiAoc2VxID09IHJkZXYt PmZlbmNlX2RydltyaW5nXS5sYXN0X3NlcSkKIAkJcmV0dXJuIGZhbHNlOwotCX0KKworCXJkZXYt PmZlbmNlX2RydltyaW5nXS5sYXN0X3NlcSA9IHNlcTsKKwlyZGV2LT5mZW5jZV9kcnZbcmluZ10u bGFzdF9hY3Rpdml0eSA9IGppZmZpZXM7CisKIAluID0gTlVMTDsKIAlsaXN0X2Zvcl9lYWNoKGks ICZyZGV2LT5mZW5jZV9kcnZbcmluZ10uZW1pdHRlZCkgewogCQlmZW5jZSA9IGxpc3RfZW50cnko aSwgc3RydWN0IHJhZGVvbl9mZW5jZSwgbGlzdCk7CkBAIC0yMDcsNjYgKzE5MSw4NCBAQCBpbnQg cmFkZW9uX2ZlbmNlX3dhaXQoc3RydWN0IHJhZGVvbl9mZW5jZSAqZmVuY2UsIGJvb2wgaW50cikK IAlzdHJ1Y3QgcmFkZW9uX2RldmljZSAqcmRldjsKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFncywg dGltZW91dDsKIAl1MzIgc2VxOwotCWludCByOworCWludCBpLCByOworCWJvb2wgc2lnbmFsZWQ7 CiAKIAlpZiAoZmVuY2UgPT0gTlVMTCkgewogCQlXQVJOKDEsICJRdWVyeWluZyBhbiBpbnZhbGlk IGZlbmNlIDogJXAgIVxuIiwgZmVuY2UpOwotCQlyZXR1cm4gMDsKKwkJcmV0dXJuIC1FSU5WQUw7 CiAJfQorCiAJcmRldiA9IGZlbmNlLT5yZGV2OwotCWlmIChyYWRlb25fZmVuY2Vfc2lnbmFsZWQo ZmVuY2UpKSB7Ci0JCXJldHVybiAwOwotCX0KLQl0aW1lb3V0ID0gcmRldi0+ZmVuY2VfZHJ2W2Zl bmNlLT5yaW5nXS5sYXN0X3RpbWVvdXQ7Ci1yZXRyeToKLQkvKiBzYXZlIGN1cnJlbnQgc2VxdWVu Y2UgdXNlZCB0byBjaGVjayBmb3IgR1BVIGxvY2t1cCAqLwotCXNlcSA9IHJkZXYtPmZlbmNlX2Ry dltmZW5jZS0+cmluZ10ubGFzdF9zZXE7Ci0JdHJhY2VfcmFkZW9uX2ZlbmNlX3dhaXRfYmVnaW4o cmRldi0+ZGRldiwgc2VxKTsKLQlpZiAoaW50cikgeworCXNpZ25hbGVkID0gcmFkZW9uX2ZlbmNl X3NpZ25hbGVkKGZlbmNlKTsKKwl3aGlsZSAoIXNpZ25hbGVkKSB7CisJCXJlYWRfbG9ja19pcnFz YXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCQl0aW1lb3V0ID0gamlmZmllcyAt IFJBREVPTl9GRU5DRV9KSUZGSUVTX1RJTUVPVVQ7CisJCWlmICh0aW1lX2FmdGVyKHJkZXYtPmZl bmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSwgdGltZW91dCkpIHsKKwkJCS8qIHRo ZSBub3JtYWwgY2FzZSwgdGltZW91dCBpcyBzb21ld2hlcmUgYmVmb3JlIGxhc3RfYWN0aXZpdHkg Ki8KKwkJCXRpbWVvdXQgPSByZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3RfYWN0aXZp dHkgLSB0aW1lb3V0OworCQl9IGVsc2UgeworCQkJLyogZWl0aGVyIGppZmZpZXMgd3JhcHBlZCBh cm91bmQsIG9yIG5vIGZlbmNlIHdhcyBzaWduYWxlZCBpbiB0aGUgbGFzdCA1MDBtcworCQkJICog YW55d2F5IHdlIHdpbGwganVzdCB3YWl0IGZvciB0aGUgbWluaW11bSBhbW91bnQgYW5kIHRoZW4g Y2hlY2sgZm9yIGEgbG9ja3VwICovCisJCQl0aW1lb3V0ID0gMTsKKwkJfQorCQkvKiBzYXZlIGN1 cnJlbnQgc2VxdWVuY2UgdmFsdWUgdXNlZCB0byBjaGVjayBmb3IgR1BVIGxvY2t1cHMgKi8KKwkJ c2VxID0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3NlcTsKKwkJcmVhZF91bmxv Y2tfaXJxcmVzdG9yZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdzKTsKKworCQl0cmFjZV9y YWRlb25fZmVuY2Vfd2FpdF9iZWdpbihyZGV2LT5kZGV2LCBzZXEpOwogCQlyYWRlb25faXJxX2tt c19zd19pcnFfZ2V0KHJkZXYsIGZlbmNlLT5yaW5nKTsKLQkJciA9IHdhaXRfZXZlbnRfaW50ZXJy dXB0aWJsZV90aW1lb3V0KHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkJ cmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSwgdGltZW91dCk7CisJCWlmIChpbnRyKSB7CisJ CQlyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoCisJCQkJcmRldi0+ZmVuY2Vf ZHJ2W2ZlbmNlLT5yaW5nXS5xdWV1ZSwKKwkJCQkoc2lnbmFsZWQgPSByYWRlb25fZmVuY2Vfc2ln bmFsZWQoZmVuY2UpKSwgdGltZW91dCk7CisJCX0gZWxzZSB7CisJCQlyID0gd2FpdF9ldmVudF90 aW1lb3V0KAorCQkJCXJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCisJCQkJKHNp Z25hbGVkID0gcmFkZW9uX2ZlbmNlX3NpZ25hbGVkKGZlbmNlKSksIHRpbWVvdXQpOworCQl9CiAJ CXJhZGVvbl9pcnFfa21zX3N3X2lycV9wdXQocmRldiwgZmVuY2UtPnJpbmcpOwogCQlpZiAodW5s aWtlbHkociA8IDApKSB7CiAJCQlyZXR1cm4gcjsKIAkJfQotCX0gZWxzZSB7Ci0JCXJhZGVvbl9p cnFfa21zX3N3X2lycV9nZXQocmRldiwgZmVuY2UtPnJpbmcpOwotCQlyID0gd2FpdF9ldmVudF90 aW1lb3V0KHJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ucXVldWUsCi0JCQkgcmFkZW9uX2Zl bmNlX3NpZ25hbGVkKGZlbmNlKSwgdGltZW91dCk7Ci0JCXJhZGVvbl9pcnFfa21zX3N3X2lycV9w dXQocmRldiwgZmVuY2UtPnJpbmcpOwotCX0KLQl0cmFjZV9yYWRlb25fZmVuY2Vfd2FpdF9lbmQo cmRldi0+ZGRldiwgc2VxKTsKLQlpZiAodW5saWtlbHkoIXJhZGVvbl9mZW5jZV9zaWduYWxlZChm ZW5jZSkpKSB7Ci0JCS8qIHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZCBm ZW5jZSBpc24ndAotCQkgKiBpc24ndCBzaWduYWxlZCB5ZXQsIHJlc3VtZSB3YWl0Ci0JCSAqLwot CQlpZiAocikgewotCQkJdGltZW91dCA9IHI7Ci0JCQlnb3RvIHJldHJ5OwotCQl9Ci0JCS8qIGRv bid0IHByb3RlY3QgcmVhZCBhY2Nlc3MgdG8gcmRldi0+ZmVuY2VfZHJ2W3RdLmxhc3Rfc2VxCi0J CSAqIGlmIHdlIGV4cGVyaWVuY2luZyBhIGxvY2t1cCB0aGUgdmFsdWUgZG9lc24ndCBjaGFuZ2UK LQkJICovCi0JCWlmIChzZXEgPT0gcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3Nl cSAmJgotCQkgICAgcmFkZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5yaW5nLCAmcmRl di0+cmluZ1tmZW5jZS0+cmluZ10pKSB7Ci0KLQkJCS8qIGdvb2QgbmV3cyB3ZSBiZWxpZXZlIGl0 J3MgYSBsb2NrdXAgKi8KLQkJCXByaW50ayhLRVJOX1dBUk5JTkcgIkdQVSBsb2NrdXAgKHdhaXRp bmcgZm9yIDB4JTA4WCBsYXN0IGZlbmNlIGlkIDB4JTA4WClcbiIsCi0JCQkgICAgIGZlbmNlLT5z ZXEsIHNlcSk7Ci0KLQkJCS8qIG1hcmsgdGhlIHJpbmcgYXMgbm90IHJlYWR5IGFueSBtb3JlICov Ci0JCQlyZGV2LT5yaW5nW2ZlbmNlLT5yaW5nXS5yZWFkeSA9IGZhbHNlOwotCQkJciA9IHJhZGVv bl9ncHVfcmVzZXQocmRldik7Ci0JCQlpZiAocikKLQkJCQlyZXR1cm4gcjsKKwkJdHJhY2VfcmFk ZW9uX2ZlbmNlX3dhaXRfZW5kKHJkZXYtPmRkZXYsIHNlcSk7CisKKwkJaWYgKHVubGlrZWx5KCFz aWduYWxlZCkpIHsKKwkJCS8qIHdlIHdlcmUgaW50ZXJydXB0ZWQgZm9yIHNvbWUgcmVhc29uIGFu ZCBmZW5jZQorCQkJICogaXNuJ3Qgc2lnbmFsZWQgeWV0LCByZXN1bWUgd2FpdGluZyAqLworCQkJ aWYgKHIpIHsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJd3JpdGVfbG9ja19pcnFzYXZlKCZy ZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOworCQkJLyogY2hlY2sgaWYgc2VxdWVuY2UgdmFs dWUgaGFzIGNoYW5nZWQgc2luY2UgbGFzdF9hY3Rpdml0eSAqLworCQkJaWYgKHNlcSAhPSByZGV2 LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxhc3Rfc2VxKSB7CisJCQkJd3JpdGVfdW5sb2NrX2ly cXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGlycV9mbGFncyk7CisJCQkJY29udGludWU7CisJ CQl9CisKKwkJCS8qIGNoYW5nZSBzZXF1ZW5jZSB2YWx1ZSBvbiBhbGwgcmluZ3MsIHNvIG5vYm9k eSBlbHNlIHRoaW5ncyB0aGVyZSBpcyBhIGxvY2t1cCAqLworCQkJZm9yIChpID0gMDsgaSA8IFJB REVPTl9OVU1fUklOR1M7ICsraSkKKwkJCQlyZGV2LT5mZW5jZV9kcnZbaV0ubGFzdF9zZXEgLT0g MHgxMDAwMDsKKwkJCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5mZW5jZV9sb2NrLCBp cnFfZmxhZ3MpOworCisJCQlpZiAocmFkZW9uX3JpbmdfaXNfbG9ja3VwKHJkZXYsIGZlbmNlLT5y aW5nLCAmcmRldi0+cmluZ1tmZW5jZS0+cmluZ10pKSB7CisKKwkJCQkvKiBnb29kIG5ld3Mgd2Ug YmVsaWV2ZSBpdCdzIGEgbG9ja3VwICovCisJCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiR1BVIGxv Y2t1cCAod2FpdGluZyBmb3IgMHglMDhYIGxhc3QgZmVuY2UgaWQgMHglMDhYKVxuIiwKKwkJCQkg ICAgIGZlbmNlLT5zZXEsIHNlcSk7CisKKwkJCQkvKiBtYXJrIHRoZSByaW5nIGFzIG5vdCByZWFk eSBhbnkgbW9yZSAqLworCQkJCXJkZXYtPnJpbmdbZmVuY2UtPnJpbmddLnJlYWR5ID0gZmFsc2U7 CisJCQkJciA9IHJhZGVvbl9ncHVfcmVzZXQocmRldik7CisJCQkJaWYgKHIpCisJCQkJCXJldHVy biByOworCisJCQkJd3JpdGVfbG9ja19pcnFzYXZlKCZyZGV2LT5mZW5jZV9sb2NrLCBpcnFfZmxh Z3MpOworCQkJCXJkZXYtPmZlbmNlX2RydltmZW5jZS0+cmluZ10ubGFzdF9hY3Rpdml0eSA9IGpp ZmZpZXM7CisJCQkJd3JpdGVfdW5sb2NrX2lycXJlc3RvcmUoJnJkZXYtPmZlbmNlX2xvY2ssIGly cV9mbGFncyk7CisJCQl9CiAJCX0KLQkJdGltZW91dCA9IFJBREVPTl9GRU5DRV9KSUZGSUVTX1RJ TUVPVVQ7Ci0JCXdyaXRlX2xvY2tfaXJxc2F2ZSgmcmRldi0+ZmVuY2VfbG9jaywgaXJxX2ZsYWdz KTsKLQkJcmRldi0+ZmVuY2VfZHJ2W2ZlbmNlLT5yaW5nXS5sYXN0X3RpbWVvdXQgPSBSQURFT05f RkVOQ0VfSklGRklFU19USU1FT1VUOwotCQlyZGV2LT5mZW5jZV9kcnZbZmVuY2UtPnJpbmddLmxh c3RfamlmZmllcyA9IGppZmZpZXM7Ci0JCXdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZyZGV2LT5m ZW5jZV9sb2NrLCBpcnFfZmxhZ3MpOwotCQlnb3RvIHJldHJ5OwogCX0KIAlyZXR1cm4gMDsKIH0K LS0gCjEuNy41LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==