From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 1/5] drm/amdgpu: add the common code to support mclk OD Date: Wed, 25 May 2016 17:26:02 -0400 Message-ID: <1464211566-31025-2-git-send-email-alexander.deucher@amd.com> References: <1464211566-31025-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-it0-x244.google.com (mail-it0-x244.google.com [IPv6:2607:f8b0:4001:c0b::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id A391F6E5C1 for ; Wed, 25 May 2016 21:26:14 +0000 (UTC) Received: by mail-it0-x244.google.com with SMTP id k76so6924525ita.1 for ; Wed, 25 May 2016 14:26:14 -0700 (PDT) In-Reply-To: <1464211566-31025-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Eric Huang , Alex Deucher List-Id: dri-devel@lists.freedesktop.org RnJvbTogRXJpYyBIdWFuZyA8SmluSHVpRXJpYy5IdWFuZ0BhbWQuY29tPgoKVGhpcyBpbXBsZW1l bnRzIG1jbGsgT3ZlckRyaXZlKE9EKSB0aHJvdWdoIHN5c2ZzLgpUaGUgbmV3IGVudHJ5IHBwX21j bGtfb2QgaXMgcmVhZC93cml0ZS4gVGhlIHZhbHVlIG9mIGlucHV0L291dHB1dAppcyBhbiBpbnRl Z2VyIG9mIHRoZSBvdmVyY2xvY2tpbmcgcGVyY2VudGFnZS4KClJldmlld2VkLWJ5OiBBbGV4IERl dWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgSHVh bmcgPEppbkh1aUVyaWMuSHVhbmdAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVy IDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdS5oICAgICAgICAgICAgICAgfCAgOCArKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfcG0uYyAgICAgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dlcnBsYXkuYyAgICAgfCA0 MCArKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2Ft ZF9wb3dlcnBsYXkuaCB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9o d21nci5oICAgICAgICAgfCAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAppbmRleCBiZmM5OTRiYy4uYWIxMjJjYzQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCkBAIC0xNTYzLDYgKzE1NjMsOCBAQCBz dHJ1Y3QgYW1kZ3B1X2RwbV9mdW5jcyB7CiAJaW50ICgqcHJpbnRfY2xvY2tfbGV2ZWxzKShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgZW51bSBwcF9jbG9ja190eXBlIHR5cGUsIGNoYXIgKmJ1 Zik7CiAJaW50ICgqZ2V0X3NjbGtfb2QpKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIAlp bnQgKCpzZXRfc2Nsa19vZCkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHZh bHVlKTsKKwlpbnQgKCpnZXRfbWNsa19vZCkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwor CWludCAoKnNldF9tY2xrX29kKShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg dmFsdWUpOwogfTsKIAogc3RydWN0IGFtZGdwdV9kcG0gewpAQCAtMjM0NCw2ICsyMzQ2LDEyIEBA IGFtZGdwdV9nZXRfc2RtYV9pbnN0YW5jZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiAjZGVm aW5lIGFtZGdwdV9kcG1fc2V0X3NjbGtfb2QoYWRldiwgdmFsdWUpIFwKIAkoYWRldiktPnBvd2Vy cGxheS5wcF9mdW5jcy0+c2V0X3NjbGtfb2QoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLCB2 YWx1ZSkKIAorI2RlZmluZSBhbWRncHVfZHBtX2dldF9tY2xrX29kKGFkZXYpIFwKKwkoKGFkZXYp LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdldF9tY2xrX29kKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hh bmRsZSkpCisKKyNkZWZpbmUgYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChhZGV2LCB2YWx1ZSkgXAor CSgoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+c2V0X21jbGtfb2QoKGFkZXYpLT5wb3dlcnBs YXkucHBfaGFuZGxlLCB2YWx1ZSkpCisKICNkZWZpbmUgYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNr KGFkZXYsIGV2ZW50X2lkLCBpbnB1dCwgb3V0cHV0KQkJXAogCShhZGV2KS0+cG93ZXJwbGF5LnBw X2Z1bmNzLT5kaXNwYXRjaF90YXNrcygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsIChldmVu dF9pZCksIChpbnB1dCksIChvdXRwdXQpKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9wbS5jCmluZGV4IGViYjk5ZmQuLjdmODQxNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9wbS5jCkBAIC01MjksNiArNTI5LDUyIEBAIGZhaWw6CiAJcmV0dXJuIGNvdW50Owog fQogCitzdGF0aWMgc3NpemVfdCBhbWRncHVfZ2V0X3BwX21jbGtfb2Qoc3RydWN0IGRldmljZSAq ZGV2LAorCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJY2hhciAqYnVmKQorewor CXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZGV2LT5kZXZfcHJpdmF0ZTsKKwl1aW50MzJfdCB2YWx1 ZSA9IDA7CisKKwlpZiAoYWRldi0+cHBfZW5hYmxlZCkKKwkJdmFsdWUgPSBhbWRncHVfZHBtX2dl dF9tY2xrX29kKGFkZXYpOworCWVsc2UgaWYgKGFkZXYtPnBtLmZ1bmNzLT5nZXRfbWNsa19vZCkK KwkJdmFsdWUgPSBhZGV2LT5wbS5mdW5jcy0+Z2V0X21jbGtfb2QoYWRldik7CisKKwlyZXR1cm4g c25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwgdmFsdWUpOworfQorCitzdGF0aWMgc3Np emVfdCBhbWRncHVfc2V0X3BwX21jbGtfb2Qoc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJY29uc3QgY2hhciAqYnVmLAorCQlzaXplX3QgY291 bnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK KwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRkZXYtPmRldl9wcml2YXRlOworCWludCBy ZXQ7CisJbG9uZyBpbnQgdmFsdWU7CisKKwlyZXQgPSBrc3RydG9sKGJ1ZiwgMCwgJnZhbHVlKTsK KworCWlmIChyZXQpIHsKKwkJY291bnQgPSAtRUlOVkFMOworCQlnb3RvIGZhaWw7CisJfQorCisJ aWYgKGFkZXYtPnBwX2VuYWJsZWQpIHsKKwkJYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChhZGV2LCAo dWludDMyX3QpdmFsdWUpOworCQlhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwgQU1EX1BQ X0VWRU5UX1JFQURKVVNUX1BPV0VSX1NUQVRFLCBOVUxMLCBOVUxMKTsKKwl9IGVsc2UgaWYgKGFk ZXYtPnBtLmZ1bmNzLT5zZXRfbWNsa19vZCkgeworCQlhZGV2LT5wbS5mdW5jcy0+c2V0X21jbGtf b2QoYWRldiwgKHVpbnQzMl90KXZhbHVlKTsKKwkJYWRldi0+cG0uZHBtLmN1cnJlbnRfcHMgPSBh ZGV2LT5wbS5kcG0uYm9vdF9wczsKKwkJYW1kZ3B1X3BtX2NvbXB1dGVfY2xvY2tzKGFkZXYpOwor CX0KKworZmFpbDoKKwlyZXR1cm4gY291bnQ7Cit9CisKIHN0YXRpYyBERVZJQ0VfQVRUUihwb3dl cl9kcG1fc3RhdGUsIFNfSVJVR08gfCBTX0lXVVNSLCBhbWRncHVfZ2V0X2RwbV9zdGF0ZSwgYW1k Z3B1X3NldF9kcG1fc3RhdGUpOwogc3RhdGljIERFVklDRV9BVFRSKHBvd2VyX2RwbV9mb3JjZV9w ZXJmb3JtYW5jZV9sZXZlbCwgU19JUlVHTyB8IFNfSVdVU1IsCiAJCSAgIGFtZGdwdV9nZXRfZHBt X2ZvcmNlZF9wZXJmb3JtYW5jZV9sZXZlbCwKQEAgLTU1Myw2ICs1OTksOSBAQCBzdGF0aWMgREVW SUNFX0FUVFIocHBfZHBtX3BjaWUsIFNfSVJVR08gfCBTX0lXVVNSLAogc3RhdGljIERFVklDRV9B VFRSKHBwX3NjbGtfb2QsIFNfSVJVR08gfCBTX0lXVVNSLAogCQlhbWRncHVfZ2V0X3BwX3NjbGtf b2QsCiAJCWFtZGdwdV9zZXRfcHBfc2Nsa19vZCk7CitzdGF0aWMgREVWSUNFX0FUVFIocHBfbWNs a19vZCwgU19JUlVHTyB8IFNfSVdVU1IsCisJCWFtZGdwdV9nZXRfcHBfbWNsa19vZCwKKwkJYW1k Z3B1X3NldF9wcF9tY2xrX29kKTsKIAogc3RhdGljIHNzaXplX3QgYW1kZ3B1X2h3bW9uX3Nob3df dGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsCkBAIC0xMTkzLDYgKzEyNDIsMTEgQEAgaW50IGFtZGdwdV9wbV9zeXNmc19pbml0 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlEUk1fRVJST1IoImZhaWxlZCB0byBjcmVh dGUgZGV2aWNlIGZpbGUgcHBfc2Nsa19vZFxuIik7CiAJCXJldHVybiByZXQ7CiAJfQorCXJldCA9 IGRldmljZV9jcmVhdGVfZmlsZShhZGV2LT5kZXYsICZkZXZfYXR0cl9wcF9tY2xrX29kKTsKKwlp ZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBkZXZpY2UgZmlsZSBwcF9t Y2xrX29kXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CiAKIAlyZXQgPSBhbWRncHVfZGVidWdmc19w bV9pbml0KGFkZXYpOwogCWlmIChyZXQpIHsKQEAgLTEyMjEsNiArMTI3NSw3IEBAIHZvaWQgYW1k Z3B1X3BtX3N5c2ZzX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJZGV2aWNlX3Jl bW92ZV9maWxlKGFkZXYtPmRldiwgJmRldl9hdHRyX3BwX2RwbV9tY2xrKTsKIAlkZXZpY2VfcmVt b3ZlX2ZpbGUoYWRldi0+ZGV2LCAmZGV2X2F0dHJfcHBfZHBtX3BjaWUpOwogCWRldmljZV9yZW1v dmVfZmlsZShhZGV2LT5kZXYsICZkZXZfYXR0cl9wcF9zY2xrX29kKTsKKwlkZXZpY2VfcmVtb3Zl X2ZpbGUoYWRldi0+ZGV2LCAmZGV2X2F0dHJfcHBfbWNsa19vZCk7CiB9CiAKIHZvaWQgYW1kZ3B1 X3BtX2NvbXB1dGVfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCmluZGV4IGUwZjI0NDAuLjI5 NGUwMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZF9wb3dl cnBsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5 LmMKQEAgLTg0Miw2ICs4NDIsNDQgQEAgc3RhdGljIGludCBwcF9kcG1fc2V0X3NjbGtfb2Qodm9p ZCAqaGFuZGxlLCB1aW50MzJfdCB2YWx1ZSkKIAlyZXR1cm4gaHdtZ3ItPmh3bWdyX2Z1bmMtPnNl dF9zY2xrX29kKGh3bWdyLCB2YWx1ZSk7CiB9CiAKK3N0YXRpYyBpbnQgcHBfZHBtX2dldF9tY2xr X29kKHZvaWQgKmhhbmRsZSkKK3sKKwlzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyOworCisJaWYgKCFo YW5kbGUpCisJCXJldHVybiAtRUlOVkFMOworCisJaHdtZ3IgPSAoKHN0cnVjdCBwcF9pbnN0YW5j ZSAqKWhhbmRsZSktPmh3bWdyOworCisJUFBfQ0hFQ0tfSFcoaHdtZ3IpOworCisJaWYgKGh3bWdy LT5od21ncl9mdW5jLT5nZXRfbWNsa19vZCA9PSBOVUxMKSB7CisJCXByaW50ayhLRVJOX0lORk8g IiVzIHdhcyBub3QgaW1wbGVtZW50ZWQuXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAwOworCX0K KworCXJldHVybiBod21nci0+aHdtZ3JfZnVuYy0+Z2V0X21jbGtfb2QoaHdtZ3IpOworfQorCitz dGF0aWMgaW50IHBwX2RwbV9zZXRfbWNsa19vZCh2b2lkICpoYW5kbGUsIHVpbnQzMl90IHZhbHVl KQoreworCXN0cnVjdCBwcF9od21nciAqaHdtZ3I7CisKKwlpZiAoIWhhbmRsZSkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlod21nciA9ICgoc3RydWN0IHBwX2luc3RhbmNlICopaGFuZGxlKS0+aHdt Z3I7CisKKwlQUF9DSEVDS19IVyhod21ncik7CisKKwlpZiAoaHdtZ3ItPmh3bWdyX2Z1bmMtPnNl dF9tY2xrX29kID09IE5VTEwpIHsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiJXMgd2FzIG5vdCBpbXBs ZW1lbnRlZC5cbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIGh3bWdy LT5od21ncl9mdW5jLT5zZXRfbWNsa19vZChod21nciwgdmFsdWUpOworfQorCiBjb25zdCBzdHJ1 Y3QgYW1kX3Bvd2VycGxheV9mdW5jcyBwcF9kcG1fZnVuY3MgPSB7CiAJLmdldF90ZW1wZXJhdHVy ZSA9IHBwX2RwbV9nZXRfdGVtcGVyYXR1cmUsCiAJLmxvYWRfZmlybXdhcmUgPSBwcF9kcG1fbG9h ZF9mdywKQEAgLTg2Niw2ICs5MDQsOCBAQCBjb25zdCBzdHJ1Y3QgYW1kX3Bvd2VycGxheV9mdW5j cyBwcF9kcG1fZnVuY3MgPSB7CiAJLnByaW50X2Nsb2NrX2xldmVscyA9IHBwX2RwbV9wcmludF9j bG9ja19sZXZlbHMsCiAJLmdldF9zY2xrX29kID0gcHBfZHBtX2dldF9zY2xrX29kLAogCS5zZXRf c2Nsa19vZCA9IHBwX2RwbV9zZXRfc2Nsa19vZCwKKwkuZ2V0X21jbGtfb2QgPSBwcF9kcG1fZ2V0 X21jbGtfb2QsCisJLnNldF9tY2xrX29kID0gcHBfZHBtX3NldF9tY2xrX29kLAogfTsKIAogc3Rh dGljIGludCBhbWRfcHBfaW5zdGFuY2VfaW5pdChzdHJ1Y3QgYW1kX3BwX2luaXQgKnBwX2luaXQs CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvYW1kX3Bvd2Vy cGxheS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2FtZF9wb3dlcnBsYXku aAppbmRleCBkZTFkNmE4Li5kMGRmYWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9pbmMvYW1kX3Bvd2VycGxheS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2luYy9hbWRfcG93ZXJwbGF5LmgKQEAgLTM0NSw2ICszNDUsOCBAQCBzdHJ1Y3Qg YW1kX3Bvd2VycGxheV9mdW5jcyB7CiAJaW50ICgqcHJpbnRfY2xvY2tfbGV2ZWxzKSh2b2lkICpo YW5kbGUsIGVudW0gcHBfY2xvY2tfdHlwZSB0eXBlLCBjaGFyICpidWYpOwogCWludCAoKmdldF9z Y2xrX29kKSh2b2lkICpoYW5kbGUpOwogCWludCAoKnNldF9zY2xrX29kKSh2b2lkICpoYW5kbGUs IHVpbnQzMl90IHZhbHVlKTsKKwlpbnQgKCpnZXRfbWNsa19vZCkodm9pZCAqaGFuZGxlKTsKKwlp bnQgKCpzZXRfbWNsa19vZCkodm9pZCAqaGFuZGxlLCB1aW50MzJfdCB2YWx1ZSk7CiB9OwogCiBz dHJ1Y3QgYW1kX3Bvd2VycGxheSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvaHdtZ3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9o d21nci5oCmluZGV4IDNkOWE0MTNjLi5iY2IyMjRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS9pbmMvaHdtZ3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvaHdtZ3IuaApAQCAtMzQwLDYgKzM0MCw4IEBAIHN0cnVjdCBwcF9od21ncl9m dW5jIHsKIAlpbnQgKCplbmFibGVfcGVyX2N1X3Bvd2VyX2dhdGluZykoc3RydWN0IHBwX2h3bWdy ICpod21nciwgYm9vbCBlbmFibGUpOwogCWludCAoKmdldF9zY2xrX29kKShzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyKTsKIAlpbnQgKCpzZXRfc2Nsa19vZCkoc3RydWN0IHBwX2h3bWdyICpod21nciwg dWludDMyX3QgdmFsdWUpOworCWludCAoKmdldF9tY2xrX29kKShzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyKTsKKwlpbnQgKCpzZXRfbWNsa19vZCkoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDMy X3QgdmFsdWUpOwogfTsKIAogc3RydWN0IHBwX3RhYmxlX2Z1bmMgewotLSAKMi41LjUKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=