From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [RFC PATCH 29/42] drm/i915: Set correct vmf source pages for gem objects Date: Thu, 14 Feb 2019 14:57:27 +0000 Message-ID: <20190214145740.14521-30-matthew.auld@intel.com> References: <20190214145740.14521-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95AF16E924 for ; Thu, 14 Feb 2019 14:58:19 +0000 (UTC) In-Reply-To: <20190214145740.14521-1-matthew.auld@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 RnJvbTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgoK VGhpcyBhbGxvd3MgcGFnZS1mYXVsdHMgZnJvbSBvYmplY3RzIHdpdGggZGlmZmVyZW50IGJhY2tp bmcgc3RvcmVzCmZyb20gYSBzaW5nbGUgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1ieTogQWJkaWVs IEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGlu ZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fb2JqZWN0LmggICB8ICA2ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmVnaW9uX2xtZW0uYyB8IDI4ICsrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCA5 MiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmlu ZGV4IGRjNDQ2NDMwYTM0MC4uYjEyMDBkN2ViZDEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK QEAgLTI5NDQsNyArMjk0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGk5MTVfZHJpdmVyX2ZvcHMgPSB7CiAJLm9wZW4gPSBkcm1fb3BlbiwKIAkucmVsZWFzZSA9IGRy bV9yZWxlYXNlLAogCS51bmxvY2tlZF9pb2N0bCA9IGRybV9pb2N0bCwKLQkubW1hcCA9IGRybV9n ZW1fbW1hcCwKKwkubW1hcCA9IGk5MTVfZ2VtX21tYXAsCiAJLnBvbGwgPSBkcm1fcG9sbCwKIAku cmVhZCA9IGRybV9yZWFkLAogCS5jb21wYXRfaW9jdGwgPSBpOTE1X2NvbXBhdF9pb2N0bCwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDc3MmZmZmE4NzU0NS4uMDY1OTUzYTkyNjRmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMwNzEsNiArMzA3MSw3IEBAIGludCBpOTE1X2dlbV93 YWl0X2Zvcl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIGludCBfX211 c3RfY2hlY2sgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CitpbnQgaTkxNV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpOwogdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qg dm1fZmF1bHQgKnZtZik7CiBpbnQgaTkxNV9nZW1fb2JqZWN0X3dhaXQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJCSB1bnNpZ25lZCBpbnQgZmxhZ3MsCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwppbmRleCA5NWUzMTUyOWE3MzguLjQ4ZGJiNTdmYmM2ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8bGludXgvcGNpLmg+CiAjaW5j bHVkZSA8bGludXgvZG1hLWJ1Zi5oPgogI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4KKyNpbmNsdWRl IDxsaW51eC9wZm5fdC5oPgogCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1 X2dlbV9jbGZsdXNoLmgiCkBAIC0zNzcsNiArMzc4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9waHlzX29wcyA9IHsKIAkuZ2V0X3BhZ2Vz ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzLAogCS5wdXRfcGFnZXMgPSBpOTE1X2dl bV9vYmplY3RfcHV0X3BhZ2VzX3BoeXMsCiAJLnJlbGVhc2UgPSBpOTE1X2dlbV9vYmplY3RfcmVs ZWFzZV9waHlzLAorCS52bWZfZmlsbF9wYWdlcyA9IGk5MTVfZ2VtX3ZtZl9maWxsX3BhZ2VzX2Nw dSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkx NV9nZW1fb2JqZWN0X29wczsKQEAgLTE5MzgsNyArMTk0MCw3IEBAIHZtX2ZhdWx0X3QgaTkxNV9n ZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCWdvdG8gZXJyX3VubG9jazsKIAl9CiAK LQlyZXQgPSBfX3ZtZl9maWxsX3BhZ2VzX2d0dChvYmosIHZtZiwgcGFnZV9vZmZzZXQpOworCXJl dCA9IG9iai0+b3BzLT52bWZfZmlsbF9wYWdlcyhvYmosIHZtZiwgcGFnZV9vZmZzZXQpOwogCiBl cnJfdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMjE2Niw2 ICsyMTY4LDI2IEBAIGk5MTVfZ2VtX21tYXBfZ3R0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJcmV0dXJuIGk5MTVfZ2VtX21tYXBfZ3R0KGZpbGUsIGRldiwgYXJn cy0+aGFuZGxlLCAmYXJncy0+b2Zmc2V0KTsKIH0KIAoraW50IGk5MTVfZ2VtX21tYXAoc3RydWN0 IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCWludCByZXQ7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKworCXJldCA9IGRybV9nZW1fbW1hcChm aWxwLCB2bWEpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJb2JqID0gdG9faW50 ZWxfYm8odm1hLT52bV9wcml2YXRlX2RhdGEpOworCWlmIChvYmotPm1lbW9yeV9yZWdpb24pIHsK KwkJaWYgKG9iai0+bW1hcF9vcmlnaW4gPT0gSTkxNV9NTUFQX09SSUdJTl9PRkZTRVQpIHsKKwkJ CXZtYS0+dm1fZmxhZ3MgJj0gflZNX1BGTk1BUDsKKwkJCXZtYS0+dm1fZmxhZ3MgfD0gVk1fTUlY RURNQVA7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfQorCiAvKiBJbW1lZGlhdGVseSBkaXNj YXJkIHRoZSBiYWNraW5nIHN0b3JhZ2UgKi8KIHN0YXRpYyB2b2lkCiBpOTE1X2dlbV9vYmplY3Rf dHJ1bmNhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKQEAgLTQxOTQsNiArNDIx NiwzNyBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCiAJaTkxNV9nZW1faW5mb19hZGRfb2JqKHRvX2k5MTUob2JqLT5iYXNlLmRldiks IG9iai0+YmFzZS5zaXplKTsKIH0KIAoraW50IGk5MTVfZ2VtX3ZtZl9maWxsX3BhZ2VzX2NwdShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCQkgc3RydWN0IHZtX2ZhdWx0ICp2 bWYsCisJCQkJCSBwZ29mZl90IHBhZ2Vfb2Zmc2V0KQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqYXJlYSA9IHZtZi0+dm1hOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2Uu ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK KwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwl1bnNpZ25lZCBsb25nIHBmbjsKKwl2bV9mYXVsdF90IHZt Zl9yZXQ7CisJcGdvZmZfdCBwZ19vZmYgPSAodm1mLT5hZGRyZXNzIC0gYXJlYS0+dm1fc3RhcnQp ID4+IFBBR0VfU0hJRlQ7CisKKwlpZiAoSEFTX01BUFBBQkxFX0FQRVJUVVJFKGRldl9wcml2KSkK KwkJcmV0dXJuIF9fdm1mX2ZpbGxfcGFnZXNfZ3R0KG9iaiwgdm1mLCBwYWdlX29mZnNldCk7CisK KwlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgcGdfb2ZmKTsKKwlwZm4gPSBw YWdlX3RvX3BmbihwYWdlKTsKKworCXZtZl9yZXQgPSB2bWZfaW5zZXJ0X21peGVkKGFyZWEsIHZt Zi0+YWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Bmbl90b19w Zm5fdChwZm4sIFBGTl9ERVYpKTsKKwlpZiAodm1mX3JldCAmIFZNX0ZBVUxUX0VSUk9SKQorCQly ZXR1cm4gdm1fZmF1bHRfdG9fZXJybm8odm1mX3JldCwgMCk7CisKKwlpZiAoIW9iai0+dXNlcmZh dWx0X2NvdW50KyspCisJCWxpc3RfYWRkKCZvYmotPnVzZXJmYXVsdF9saW5rLCAmZGV2X3ByaXYt Pm1tLnVzZXJmYXVsdF9saXN0KTsKKworCUdFTV9CVUdfT04oIW9iai0+dXNlcmZhdWx0X2NvdW50 KTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9vcHMgPSB7CiAJLmZsYWdzID0gSTkxNV9HRU1fT0JK RUNUX0hBU19TVFJVQ1RfUEFHRSB8CiAJCSBJOTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRSwK QEAgLTQyMDIsNiArNDI1NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X29wcyA9IHsKIAkucHV0X3BhZ2VzID0gaTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlc19ndHQsCiAKIAkucHdyaXRlID0gaTkxNV9nZW1fb2JqZWN0X3B3cml0 ZV9ndHQsCisJLnZtZl9maWxsX3BhZ2VzID0gaTkxNV9nZW1fdm1mX2ZpbGxfcGFnZXNfY3B1LAog fTsKIAogc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCkBAIC00ODE4LDYgKzQ4NzIsOCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2Vt X2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCXNwaW5fdW5s b2NrKCZpOTE1LT5tbS5vYmpfbG9jayk7CiAJCX0KIAorCisJCWk5MTVfZ2VtX3JlbGVhc2VfbW1h cChvYmopOwogCQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJCUdF TV9CVUdfT04ob2JqLT5iaW5kX2NvdW50KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX29iamVjdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fb2Jq ZWN0LmgKaW5kZXggZjViOGJjYTMzZmUzLi41YzZiYmU2ZjVlODQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVjdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX29iamVjdC5oCkBAIC04Miw2ICs4Miw4IEBAIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0X29wcyB7CiAKIAlpbnQgKCpkbWFidWZfZXhwb3J0KShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqKTsKIAl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKik7CisJaW50ICgqdm1mX2ZpbGxfcGFnZXMpKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICosIHN0cnVjdCB2bV9mYXVsdCAqLAorCQkJICAgICAgcGdvZmZfdCk7CiB9OwogCiBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCB7CkBAIC01MjAsNSArNTIyLDcgQEAgdm9pZCBpOTE1X2dlbV9v YmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCQkJCQkgdW5zaWduZWQgaW50IGNhY2hlX2xldmVsKTsKIHZvaWQgaTkxNV9nZW1fb2JqZWN0 X2ZsdXNoX2lmX2Rpc3BsYXkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiAKK2lu dCBpOTE1X2dlbV92bWZfZmlsbF9wYWdlc19jcHUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKKwkJCQlzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwKKwkJCQlwZ29mZl90IHBhZ2Vfb2Zmc2V0 KTsKICNlbmRpZgotCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdp b25fbG1lbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uYwppbmRl eCBkNTQ5MjQyYTM1NzguLmI4YjZiODI0ODczNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yZWdpb25fbG1lbS5jCkBAIC0xNzAsMTIgKzE3MCw0MCBAQCBzdGF0aWMgaW50IHJlZ2lvbl9s bWVtX3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXJldHVybiByZXQ7 CiB9CiAKK3N0YXRpYyBpbnQgcmVnaW9uX2xtZW1fdm1mX2ZpbGxfcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJCQkgICAgICBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwKKwkJ CQkgICAgICBwZ29mZl90IHBhZ2Vfb2Zmc2V0KQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq YXJlYSA9IHZtZi0+dm1hOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2 OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOworCXVuc2ln bmVkIGxvbmcgc2l6ZSA9IGFyZWEtPnZtX2VuZCAtIGFyZWEtPnZtX3N0YXJ0OworCWludCBpOwor CXZtX2ZhdWx0X3Qgdm1mX3JldDsKKworCWZvciAoaSA9IDA7IGkgPCBzaXplID4+IFBBR0VfU0hJ RlQ7IGkrKykgeworCQl2bWZfcmV0ID0gdm1mX2luc2VydF9wZm4oYXJlYSwKKwkJCQkJICh1bnNp Z25lZCBsb25nKWFyZWEtPnZtX3N0YXJ0ICsgaSAqIFBBR0VfU0laRSwKKwkJCQkJIGk5MTVfZ2Vt X29iamVjdF9sbWVtX2lvX3BmbihvYmosIGkpKTsKKwkJaWYgKHZtZl9yZXQgJiBWTV9GQVVMVF9F UlJPUikKKwkJCXJldHVybiB2bV9mYXVsdF90b19lcnJubyh2bWZfcmV0LCAwKTsKKwl9CisKKwlp ZiAoIW9iai0+dXNlcmZhdWx0X2NvdW50KyspCisJCWxpc3RfYWRkKCZvYmotPnVzZXJmYXVsdF9s aW5rLCAmaTkxNS0+bW0udXNlcmZhdWx0X2xpc3QpOworCisJR0VNX0JVR19PTighb2JqLT51c2Vy ZmF1bHRfY291bnQpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdF9vcHMgcmVnaW9uX2xtZW1fb2JqX29wcyA9IHsKIAkuZ2V0X3BhZ2Vz ID0gaTkxNV9tZW1vcnlfcmVnaW9uX2dldF9wYWdlc19idWRkeSwKIAkucHV0X3BhZ2VzID0gaTkx NV9tZW1vcnlfcmVnaW9uX3B1dF9wYWdlc19idWRkeSwKIAkucmVsZWFzZSA9IGk5MTVfZ2VtX29i amVjdF9yZWxlYXNlX21lbW9yeV9yZWdpb24sCiAJLnByZWFkID0gcmVnaW9uX2xtZW1fcHJlYWQs CiAJLnB3cml0ZSA9IHJlZ2lvbl9sbWVtX3B3cml0ZSwKKwkudm1mX2ZpbGxfcGFnZXMgPSByZWdp b25fbG1lbV92bWZfZmlsbF9wYWdlcywKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeA==