From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Subject: [PATCH] drm/i915: Create vfuncs for the reset/enable/disable GuC functions Date: Thu, 24 Aug 2017 10:12:34 -0700 Message-ID: <1503594754-7650-1-git-send-email-oscar.mateo@intel.com> References: <20170824130706.GD7040@mwajdecz-MOBL1.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5EBB6E12C for ; Thu, 24 Aug 2017 17:12:45 +0000 (UTC) In-Reply-To: <20170824130706.GD7040@mwajdecz-MOBL1.ger.corp.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 Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RmFjaWxpdGF0ZXMgY3JlYXRpbmcgR2VuLXNwZWNpZmljIHZlcnNpb25zIG9mIHRoZXNlIGZ1bmN0 aW9ucyBsYXRlciBvbi4KCnYyOiBNb3ZlIGV2ZXJ5dGhpbmcgaW50byBndWMuaW50ZXJydXB0cyAo TWljaGFsKQoKQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KQ2M6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBNaWNoYWwgV2FqZGVj emtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVy aW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE9zY2Fy IE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgIDQgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgfCAgMyAtLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2cuYyAgICAgICB8ICA2ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWMuYyAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VjLmggICAgICAgICAgICB8ICA3ICsrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwg MjcgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDQ4YTFlOTMuLmI0NjkzMjYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTEzMDIsNyArMTMwMiw3IEBA IGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykK IAkJcmV0dXJuIDA7CiAKLQlnZW45X2Rpc2FibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwor CWd1Yy0+aW50ZXJydXB0cy5kaXNhYmxlKGRldl9wcml2KTsKIAogCWN0eCA9IGRldl9wcml2LT5r ZXJuZWxfY29udGV4dDsKIApAQCAtMTMyOSw3ICsxMzI5LDcgQEAgaW50IGludGVsX2d1Y19yZXN1 bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlyZXR1cm4gMDsKIAogCWlm IChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkKLQkJZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMo ZGV2X3ByaXYpOworCQlndWMtPmludGVycnVwdHMuZW5hYmxlKGRldl9wcml2KTsKIAogCWN0eCA9 IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXgg NWQzOTFlNi4uOTY0OWRmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC00MTMsMjkgKzQx MywyOSBAQCB2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7 CiB9CiAKLXZvaWQgZ2VuOV9yZXNldF9ndWNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzcGluX2xvY2tfaXJxKCZkZXZf cHJpdi0+aXJxX2xvY2spOwogCWdlbjZfcmVzZXRfcG1faWlyKGRldl9wcml2LCBkZXZfcHJpdi0+ cG1fZ3VjX2V2ZW50cyk7CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwog fQogCi12b2lkIGdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzcGluX2xvY2tfaXJxKCZkZXZf cHJpdi0+aXJxX2xvY2spOwotCWlmICghZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJsZWQp IHsKKwlpZiAoIWRldl9wcml2LT5ndWMuaW50ZXJydXB0cy5lbmFibGVkKSB7CiAJCVdBUk5fT05f T05DRShJOTE1X1JFQUQoZ2VuNl9wbV9paXIoZGV2X3ByaXYpKSAmCiAJCQkJICAgICAgIGRldl9w cml2LT5wbV9ndWNfZXZlbnRzKTsKLQkJZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzX2VuYWJsZWQg PSB0cnVlOworCQlkZXZfcHJpdi0+Z3VjLmludGVycnVwdHMuZW5hYmxlZCA9IHRydWU7CiAJCWdl bjZfZW5hYmxlX3BtX2lycShkZXZfcHJpdiwgZGV2X3ByaXYtPnBtX2d1Y19ldmVudHMpOwogCX0K IAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiB9CiAKLXZvaWQgZ2VuOV9k aXNhYmxlX2d1Y19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3N0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2Nr KTsKLQlkZXZfcHJpdi0+Z3VjLmludGVycnVwdHNfZW5hYmxlZCA9IGZhbHNlOworCWRldl9wcml2 LT5ndWMuaW50ZXJydXB0cy5lbmFibGVkID0gZmFsc2U7CiAKIAlnZW42X2Rpc2FibGVfcG1faXJx KGRldl9wcml2LCBkZXZfcHJpdi0+cG1fZ3VjX2V2ZW50cyk7CiAKQEAgLTQxNjQsNiArNDE2NCwx MiBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQogCQlkZXZfcHJpdi0+cnBzLnBtX2lu dHJtc2tfbWJ6IHw9IEdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1RfVE9fR1VDOwogCisJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgeworCQlkZXZfcHJpdi0+Z3VjLmludGVycnVwdHMu cmVzZXQgPSBnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzOworCQlkZXZfcHJpdi0+Z3VjLmludGVy cnVwdHMuZW5hYmxlID0gZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHM7CisJCWRldl9wcml2LT5n dWMuaW50ZXJydXB0cy5kaXNhYmxlID0gZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzOworCX0K KwogCWlmIChJU19HRU4yKGRldl9wcml2KSkgewogCQkvKiBHZW4yIGRvZXNuJ3QgaGF2ZSBhIGhh cmR3YXJlIGZyYW1lIGNvdW50ZXIgKi8KIAkJZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMDsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzRjMTg2MC4uNDQyZDM3OCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKQEAgLTEyMzQsOSArMTIzNCw2IEBAIHZvaWQgZ2VuOF9pcnFfcG93ZXJf d2VsbF9wb3N0X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJ ICAgICB1OCBwaXBlX21hc2spOwogdm9pZCBnZW44X2lycV9wb3dlcl93ZWxsX3ByZV9kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgIHU4IHBpcGVfbWFz ayk7Ci12b2lkIGdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKLXZvaWQgZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLXZvaWQgZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1 cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGludGVsX2NydC5j ICovCiB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKaW5kZXggMTZkM2I4Ny4uYTA2N2Ji YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cuYwpAQCAtNTA2LDcgKzUwNiw3IEBA IHN0YXRpYyB2b2lkIGd1Y19mbHVzaF9sb2dzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJcmV0 dXJuOwogCiAJLyogRmlyc3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0cywgd2lsbCBiZSByZW5hYmxl ZCBhZnRlcndhcmRzICovCi0JZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsK KwlndWMtPmludGVycnVwdHMuZGlzYWJsZShkZXZfcHJpdik7CiAKIAkvKiBCZWZvcmUgaW5pdGlh dGluZyB0aGUgZm9yY2VmdWwgZmx1c2gsIHdhaXQgZm9yIGFueSBwZW5kaW5nL29uZ29pbmcKIAkg KiBmbHVzaCB0byBjb21wbGV0ZSBvdGhlcndpc2UgZm9yY2VmdWwgZmx1c2ggbWF5IG5vdCBhY3R1 YWxseSBoYXBwZW4uCkBAIC02MjMsNyArNjIzLDcgQEAgaW50IGk5MTVfZ3VjX2xvZ19jb250cm9s KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRyb2xfdmFsKQogCQl9 CiAKIAkJLyogR3VDIGxvZ2dpbmcgaXMgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2YgR3VjMkhv c3QgaW50ZXJydXB0cyAqLwotCQlnZW45X2VuYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7 CisJCWd1Yy0+aW50ZXJydXB0cy5lbmFibGUoZGV2X3ByaXYpOwogCX0gZWxzZSB7CiAJCS8qIE9u Y2UgbG9nZ2luZyBpcyBkaXNhYmxlZCwgR3VDIHdvbid0IGdlbmVyYXRlIGxvZ3MgJiBzZW5kIGFu CiAJCSAqIGludGVycnVwdC4gQnV0IHRoZXJlIGNvdWxkIGJlIHNvbWUgZGF0YSBpbiB0aGUgbG9n IGJ1ZmZlcgpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgaTkxNV9ndWNfbG9nX3VucmVnaXN0ZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJbXV0ZXhfbG9jaygmZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCS8qIEd1QyBsb2dnaW5nIGlzIGN1cnJlbnRseSB0aGUg b25seSB1c2VyIG9mIEd1YzJIb3N0IGludGVycnVwdHMgKi8KLQlnZW45X2Rpc2FibGVfZ3VjX2lu dGVycnVwdHMoZGV2X3ByaXYpOworCWRldl9wcml2LT5ndWMuaW50ZXJydXB0cy5kaXNhYmxlKGRl dl9wcml2KTsKIAlndWNfbG9nX3J1bnRpbWVfZGVzdHJveSgmZGV2X3ByaXYtPmd1Yyk7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuYwppbmRleCAwMTc4YmE0Li5mZjBmMjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMK QEAgLTMzNyw3ICszMzcsNyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybiAwOwogCiAJZ3VjX2Rpc2FibGVfY29tbXVuaWNh dGlvbihndWMpOwotCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOworCWd1Yy0+ aW50ZXJydXB0cy5yZXNldChkZXZfcHJpdik7CiAKIAkvKiBXZSBuZWVkIHRvIG5vdGlmeSB0aGUg Z3VjIHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgR0dUVCAqLwogCWk5MTVfZ2d0dF9lbmFibGVfZ3Vj KGRldl9wcml2KTsKQEAgLTM5Myw3ICszOTMsNyBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50ZWxfZ3VjX2F1dGhfaHVjKGRldl9w cml2KTsKIAlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKIAkJaWYgKGk5MTUuZ3Vj X2xvZ19sZXZlbCA+PSAwKQotCQkJZ2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYp OworCQkJZ3VjLT5pbnRlcnJ1cHRzLmVuYWJsZShkZXZfcHJpdik7CiAKIAkJcmV0ID0gaTkxNV9n dWNfc3VibWlzc2lvbl9lbmFibGUoZGV2X3ByaXYpOwogCQlpZiAocmV0KQpAQCAtNDEzLDcgKzQx Myw3IEBAIGludCBpbnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAkgKi8KIGVycl9pbnRlcnJ1cHRzOgogCWd1Y19kaXNhYmxlX2NvbW11bmljYXRpb24o Z3VjKTsKLQlnZW45X2Rpc2FibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOworCWd1Yy0+aW50 ZXJydXB0cy5kaXNhYmxlKGRldl9wcml2KTsKIGVycl9sb2dfY2FwdHVyZToKIAlndWNfY2FwdHVy ZV9sb2FkX2Vycl9sb2coZ3VjKTsKIGVycl9zdWJtaXNzaW9uOgpAQCAtNDUyLDcgKzQ1Miw3IEBA IHZvaWQgaW50ZWxfdWNfZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbigmZGV2X3ByaXYtPmd1Yyk7CiAKIAlpZiAoaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKLQkJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRz KGRldl9wcml2KTsKKwkJZGV2X3ByaXYtPmd1Yy5pbnRlcnJ1cHRzLmRpc2FibGUoZGV2X3ByaXYp OwogCQlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwogCX0KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjLmgKaW5kZXggMjJhZTUyYi4uMDY0MGE4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5oCkBAIC0xODMsNyArMTgzLDEyIEBAIHN0cnVjdCBpbnRlbF9ndWMgewogCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpsb2FkX2Vycl9sb2c7CiAKIAkvKiBpbnRlbF9ndWNfcmVjdiBpbnRl cnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLwotCWJvb2wgaW50ZXJydXB0c19lbmFibGVkOworCXN0cnVj dCB7CisJCWJvb2wgZW5hYmxlZDsKKwkJdm9pZCAoKnJlc2V0KShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOworCQl2b2lkICgqZW5hYmxlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOworCQl2b2lkICgqZGlzYWJsZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKKwl9IGludGVycnVwdHM7CiAKIAlzdHJ1Y3QgaTkxNV92bWEgKmFkc192bWE7 CiAJc3RydWN0IGk5MTVfdm1hICpzdGFnZV9kZXNjX3Bvb2w7Ci0tIAoxLjkuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==