From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v3 10/12] drm/i915: Rename helpers used for unwinding, use macro for can_preempt Date: Wed, 25 Oct 2017 22:00:18 +0200 Message-ID: <20171025200020.16636-11-michal.winiarski@intel.com> References: <20171025200020.16636-1-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCD4F6E30E for ; Wed, 25 Oct 2017 20:04:36 +0000 (UTC) In-Reply-To: <20171025200020.16636-1-michal.winiarski@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 V2Ugd291bGQgYWxzbyBsaWtlIHRvIG1ha2UgdXNlIG9mIGV4ZWNsaXN0X2NhbmNlbF9wb3J0X3Jl cXVlc3RzIGFuZAp1bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0cyBpbiBHdUMgcHJlZW1wdGlvbiBi YWNrZW5kLgpMZXQncyByZW5hbWUgdGhlIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGNvcnJlY3QgcHJl Zml4ZXMsIHNvIHRoYXQgd2UgY2FuCnNpbXBseSBhZGQgdGhlIGRlY2xhcmF0aW9ucyBpbiB0aGUg Zm9sbG93aW5nIHBhdGNoLgpTaW1pbGFyIHRoaW5nIGZvciBhcHBsaWVzIGZvciBjYW5fcHJlZW1w dCwgZXhjZXB0IHdlJ3JlIGludHJvZHVjaW5nCkhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTiBt YWNybyBpbnN0YWQsIGNvbnZlcnRpbmcgb3RoZXIgdXNlcnMgdGhhdAp3ZXJlIHByZXZpb3VzbHkg dG91Y2hpbmcgZGV2aWNlIGluZm8gZGlyZWN0bHkuCgp2Mjogcy9pbnRlbF9lbmdpbmUvZXhlY2xp c3RzIGFuZCBwYXNzIGV4ZWNsaXN0cyB0byB1bndpbmQgKENocmlzKQp2MzogdXNlIGxvY2tlZCB2 ZXJzaW9uIGZvciBleHBvcnRpbmcsIGRyb3AgY29uc3QgcXVhbCAoQ2hyaXMpCgpTaWduZWQtb2Zm LWJ5OiBNaWNoYcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IEpvb25hcyBMYWh0aW5l biA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IE1pY2hhbCBXYWpkZWN6a28g PG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgIHwgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIHwg IDYgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICB8IDM1ICsr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjUgaW5z ZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXgg M2RiNTg1MTc1NmYwLi43Yjg3MTgwMmFlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAt MzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJdmFsdWUgfD0gSTkxNV9TQ0hFRFVMRVJfQ0FQX0VOQUJM RUQ7CiAJCQl2YWx1ZSB8PSBJOTE1X1NDSEVEVUxFUl9DQVBfUFJJT1JJVFk7CiAKLQkJCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+aGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9uICYmCisJCQlp ZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGRldl9wcml2KSAmJgogCQkJICAgIGk5MTVf bW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMgJiYKIAkJCSAgICAhaTkxNV9tb2RwYXJhbXMuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKQogCQkJCXZhbHVlIHw9IEk5MTVfU0NIRURVTEVSX0NBUF9QUkVF TVBUSU9OOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMzY2YmE3NGIwYWQyLi42MWMxNTVj YmY5ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzE0MCw2ICszMTQwLDggQEAgaW50 ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKICNkZWZp bmUgSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhkZXZfcHJpdikgXAogCQkoKGRldl9wcml2KS0+ aW5mby5oYXNfbG9naWNhbF9yaW5nX2NvbnRleHRzKQorI2RlZmluZSBIQVNfTE9HSUNBTF9SSU5H X1BSRUVNUFRJT04oZGV2X3ByaXYpIFwKKwkJKChkZXZfcHJpdiktPmluZm8uaGFzX2xvZ2ljYWxf cmluZ19wcmVlbXB0aW9uKQogI2RlZmluZSBVU0VTX1BQR1RUKGRldl9wcml2KQkJKGk5MTVfbW9k cGFyYW1zLmVuYWJsZV9wcGd0dCkKICNkZWZpbmUgVVNFU19GVUxMX1BQR1RUKGRldl9wcml2KQko aTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BwZ3R0ID49IDIpCiAjZGVmaW5lIFVTRVNfRlVMTF80OEJJ VF9QUEdUVChkZXZfcHJpdikJKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wcGd0dCA9PSAzKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBmZWRiODM5ZGZmNjEuLjNhYzg3 NmNhNmNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTYyMCw3 ICs2MjAsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAkgKiBTaW1pbGFybHkgdGhlIHByZWVtcHQgY29udGV4dCBtdXN0IGFs d2F5cyBiZSBhdmFpbGFibGUgc28gdGhhdAogCSAqIHdlIGNhbiBpbnRlcnJ1cHQgdGhlIGVuZ2lu ZSBhdCBhbnkgdGltZS4KIAkgKi8KLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmk5MTUpLT5oYXNf bG9naWNhbF9yaW5nX3ByZWVtcHRpb24pIHsKKwlpZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBU SU9OKGVuZ2luZS0+aTkxNSkpIHsKIAkJcmluZyA9IGVuZ2luZS0+Y29udGV4dF9waW4oZW5naW5l LAogCQkJCQkgICBlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCk7CiAJCWlmIChJU19FUlIo cmluZykpIHsKQEAgLTY1MSw3ICs2NTEsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIGVycl9icmVhZGNydW1iczoKIAlpbnRl bF9lbmdpbmVfZmluaV9icmVhZGNydW1icyhlbmdpbmUpOwogZXJyX3VucGluX3ByZWVtcHQ6Ci0J aWYgKElOVEVMX0lORk8oZW5naW5lLT5pOTE1KS0+aGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9u KQorCWlmIChIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oZW5naW5lLT5pOTE1KSkKIAkJZW5n aW5lLT5jb250ZXh0X3VucGluKGVuZ2luZSwgZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQp OwogZXJyX3VucGluX2tlcm5lbDoKIAllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdp bmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIGludGVs X2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ aW50ZWxfZW5naW5lX2NsZWFudXBfY21kX3BhcnNlcihlbmdpbmUpOwogCWk5MTVfZ2VtX2JhdGNo X3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsKIAotCWlmIChJTlRFTF9JTkZPKGVuZ2lu ZS0+aTkxNSktPmhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlvbikKKwlpZiAoSEFTX0xPR0lDQUxf UklOR19QUkVFTVBUSU9OKGVuZ2luZS0+aTkxNSkpCiAJCWVuZ2luZS0+Y29udGV4dF91bnBpbihl bmdpbmUsIGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250ZXh0KTsKIAllbmdpbmUtPmNvbnRleHRf dW5waW4oZW5naW5lLCBlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKaW5kZXggNTk5YzcwOWZjNWE3Li5iNWQzODJlZjhkODUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIHZvaWQgdW53aW5k X3dhX3RhaWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIAlhc3NlcnRfcmluZ190 YWlsX3ZhbGlkKHJxLT5yaW5nLCBycS0+dGFpbCk7CiB9CiAKLXN0YXRpYyB2b2lkIHVud2luZF9p bmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3N0YXRp YyB2b2lkIF9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEsICpybjsKIAlz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdW5pbml0aWFsaXplZF92YXIocCk7CkBAIC0zODUsNiArMzg1 LDE3IEBAIHN0YXRpYyB2b2lkIHVud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkCitleGVjbGlzdHNfdW53 aW5kX2luY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4 ZWNsaXN0cykKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPQorCQljb250YWlu ZXJfb2YoZXhlY2xpc3RzLCB0eXBlb2YoKmVuZ2luZSksIGV4ZWNsaXN0cyk7CisKKwlzcGluX2xv Y2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwlfX3Vud2luZF9pbmNvbXBsZXRlX3Jl cXVlc3RzKGVuZ2luZSk7CisJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2Nr KTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkCiBleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hh bmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEsCiAJCQkJdW5zaWduZWQgbG9uZyBz dGF0dXMpCkBAIC01MTUsMTEgKzUyNiw2IEBAIHN0YXRpYyB2b2lkIGluamVjdF9wcmVlbXB0X2Nv bnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWVsc3Bfd3JpdGUoY2UtPmxy Y19kZXNjLCBlbHNwKTsKIH0KIAotc3RhdGljIGJvb2wgY2FuX3ByZWVtcHQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQotewotCXJldHVybiBJTlRFTF9JTkZPKGVuZ2luZS0+aTkxNSkt Pmhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlvbjsKLX0KLQogc3RhdGljIHZvaWQgZXhlY2xpc3Rz X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBpbnRl bF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3Rz OwpAQCAtNTY3LDcgKzU3Myw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJaWYgKHBvcnRfY291bnQoJnBvcnRbMF0pID4g MSkKIAkJCWdvdG8gdW5sb2NrOwogCi0JCWlmIChjYW5fcHJlZW1wdChlbmdpbmUpICYmCisJCWlm IChIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oZW5naW5lLT5pOTE1KSAmJgogCQkgICAgcmJf ZW50cnkocmIsIHN0cnVjdCBpOTE1X3ByaW9saXN0LCBub2RlKS0+cHJpb3JpdHkgPgogCQkgICAg bWF4KGxhc3QtPnByaW90cmVlLnByaW9yaXR5LCAwKSkgewogCQkJLyoKQEAgLTY5MSw3ICs2OTcs NyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCiB9CiAKIHN0YXRpYyB2b2lkCi1leGVjbGlzdF9jYW5jZWxfcG9ydF9yZXF1ZXN0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQorZXhlY2xpc3RzX2Nh bmNlbF9wb3J0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3Qg ZXhlY2xpc3RzKQogewogCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5w b3J0OwogCXVuc2lnbmVkIGludCBudW1fcG9ydHMgPSBleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNs aXN0cyk7CkBAIC03MTgsNyArNzI0LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9y ZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3Bpbl9sb2NrX2lycXNh dmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKIAogCS8qIENhbmNlbCB0aGUgcmVx dWVzdHMgb24gdGhlIEhXIGFuZCBjbGVhciB0aGUgRUxTUCB0cmFja2VyLiAqLwotCWV4ZWNsaXN0 X2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7CisJZXhlY2xpc3RzX2NhbmNlbF9wb3J0 X3JlcXVlc3RzKGV4ZWNsaXN0cyk7CiAKIAkvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVxdWVzdHMg YXMgc2tpcHBlZC4gKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5lLT50aW1lbGlu ZS0+cmVxdWVzdHMsIGxpbmspIHsKQEAgLTg1OCwxMSArODY0LDggQEAgc3RhdGljIHZvaWQgaW50 ZWxfbHJjX2lycV9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAogCQkJaWYgKHN0YXR1cyAm IEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSAmJgogCQkJICAgIGJ1ZlsyKmhlYWQgKyAxXSA9 PSBQUkVFTVBUX0lEKSB7Ci0JCQkJZXhlY2xpc3RfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xp c3RzKTsKLQotCQkJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwotCQkJ CXVud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGVuZ2luZSk7Ci0JCQkJc3Bpbl91bmxvY2tfaXJx KCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKwkJCQlleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVx dWVzdHMoZXhlY2xpc3RzKTsKKwkJCQlleGVjbGlzdHNfdW53aW5kX2luY29tcGxldGVfcmVxdWVz dHMoZXhlY2xpc3RzKTsKIAogCQkJCUdFTV9CVUdfT04oIWV4ZWNsaXN0c19pc19hY3RpdmUoZXhl Y2xpc3RzLAogCQkJCQkJCQlFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpKTsKQEAgLTE1MzEsMTAg KzE1MzQsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAogCSAqIGd1ZXNzaW5nIHRoZSBtaXNzZWQgY29udGV4dC1zd2l0Y2gg ZXZlbnRzIGJ5IGxvb2tpbmcgYXQgd2hhdAogCSAqIHJlcXVlc3RzIHdlcmUgY29tcGxldGVkLgog CSAqLwotCWV4ZWNsaXN0X2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7CisJZXhlY2xp c3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKGV4ZWNsaXN0cyk7CiAKIAkvKiBQdXNoIGJhY2sgYW55 IGluY29tcGxldGUgcmVxdWVzdHMgZm9yIHJlcGxheSBhZnRlciB0aGUgcmVzZXQuICovCi0JdW53 aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKKwlfX3Vud2luZF9pbmNvbXBsZXRlX3Jl cXVlc3RzKGVuZ2luZSk7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVs aW5lLT5sb2NrLCBmbGFncyk7CiAKLS0gCjIuMTMuNgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==