From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: [PATCH v4 RESEND 4/4] drm/i915/edp: Allow alternate fixed mode for eDP if available. Date: Tue, 25 Jul 2017 09:48:11 -0700 Message-ID: <1501001291-2708-5-git-send-email-jim.bride@linux.intel.com> References: <1501001291-2708-1-git-send-email-jim.bride@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 02E366E5BF for ; Tue, 25 Jul 2017 16:50:51 +0000 (UTC) In-Reply-To: <1501001291-2708-1-git-send-email-jim.bride@linux.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: Jani Nikula , Paulo Zanoni , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org U29tZSBmaXhlZCByZXNvbHV0aW9uIHBhbmVscyBhY3R1YWxseSBzdXBwb3J0IG1vcmUgdGhhbiBv bmUgbW9kZSwKd2l0aCB0aGUgb25seSB0aGluZyBkaWZmZXJlbnQgYmVpbmcgdGhlIHJlZnJlc2gg cmF0ZS4gIEhhdmluZyB0aGlzCmFsdGVybmF0ZSBtb2RlIGF2YWlsYWJsZSB0byB1cyBpcyBkZXNp cmFibGUsIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvCnRlc3QgUFNSIG9uIHBhbmVscyB3aG9zZSBz ZXR1cCB0aW1lIGF0IHRoZSBwcmVmZXJyZWQgbW9kZSBpcyB0b28gbG9uZy4KV2l0aCB0aGlzIHBh dGNoIHdlIGFsbG93IHRoZSB1c2Ugb2YgdGhlIGFsdGVybmF0ZSBtb2RlIGlmIGl0J3MKYXZhaWxh YmxlIGFuZCBpdCB3YXMgc3BlY2lmaWNhbGx5IHJlcXVlc3RlZC4KCnYyIGFuZCB2MzogUmViYXNl CnY0OiAqIEZpeCB1cCBzb21lIGxlYWt5IG1vZGUgc3R1ZmYgKENocmlzKQogICAgKiBSZWJhc2UK CkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CkNjOiBQYXVsbyBaYW5v bmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K U2lnbmVkLW9mZi1ieTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgfCAzNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgIHwg IDIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgfCAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9sdmRzLmMgIHwgIDMgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5l bC5jIHwgIDYgKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggN2MwZTUzMC4uYzlkYjBlNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xNjA2LDYgKzE2MDYsMTkgQEAgc3RhdGljIGlu dCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCXJldHVy biBicHA7CiB9CiAKK3N0YXRpYyBib29sIGludGVsX2VkcF9jb21wYXJlX2FsdF9tb2RlKHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptMSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm0yKQoreworCXJldHVybiAobTEtPmhkaXNwbGF5ID09IG0yLT5oZGlzcGxheSAmJgorCQlt MS0+aHN5bmNfc3RhcnQgPT0gbTItPmhzeW5jX3N0YXJ0ICYmCisJCW0xLT5oc3luY19lbmQgPT0g bTItPmhzeW5jX2VuZCAmJgorCQltMS0+aHRvdGFsID09IG0yLT5odG90YWwgJiYKKwkJbTEtPnZk aXNwbGF5ID09IG0yLT52ZGlzcGxheSAmJgorCQltMS0+dnN5bmNfc3RhcnQgPT0gbTItPnZzeW5j X3N0YXJ0ICYmCisJCW0xLT52c3luY19lbmQgPT0gbTItPnZzeW5jX2VuZCAmJgorCQltMS0+dnRv dGFsID09IG0yLT52dG90YWwpOworfQorCiBib29sCiBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKQEAgLTE2NTIsOCArMTY2NSwxNiBAQCBpbnRlbF9kcF9jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJcGlwZV9jb25maWctPmhhc19h dWRpbyA9IGludGVsX2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9fT047CiAK IAlpZiAoaXNfZWRwKGludGVsX2RwKSAmJiBpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpeGVkX21v ZGUpIHsKLQkJaW50ZWxfZml4ZWRfcGFuZWxfbW9kZShpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZp eGVkX21vZGUsCi0JCQkJICAgICAgIGFkanVzdGVkX21vZGUpOworCQlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqcGFuZWxfbW9kZSA9CisJCQlpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmFsdF9maXhl ZF9tb2RlOworCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqcmVxX21vZGUgPSAmcGlwZV9jb25m aWctPmJhc2UubW9kZTsKKworCQlpZiAoIWludGVsX2VkcF9jb21wYXJlX2FsdF9tb2RlKHJlcV9t b2RlLCBwYW5lbF9tb2RlKSkKKwkJCXBhbmVsX21vZGUgPSBpbnRlbF9jb25uZWN0b3ItPnBhbmVs LmZpeGVkX21vZGU7CisKKwkJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZShwYW5lbF9tb2Rl KTsKKworCQlpbnRlbF9maXhlZF9wYW5lbF9tb2RlKHBhbmVsX21vZGUsIGFkanVzdGVkX21vZGUp OwogCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJCWludCByZXQ7CkBAIC01 ODEwLDYgKzU4MzEsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxf ZW5jb2Rlci0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlID0gTlVM TDsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWx0X2ZpeGVkX21vZGUgPSBOVUxMOwogCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tfbW9kZSA9IE5VTEw7CiAJYm9vbCBoYXNf ZHBjZDsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqc2NhbjsKQEAgLTU4NjUsMTMgKzU4ODcs MTQgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCiAJfQogCWludGVsX2Nvbm5lY3Rvci0+ZWRpZCA9IGVkaWQ7CiAKLQkvKiBw cmVmZXIgZml4ZWQgbW9kZSBmcm9tIEVESUQgaWYgYXZhaWxhYmxlICovCisJLyogcHJlZmVyIGZp eGVkIG1vZGUgZnJvbSBFRElEIGlmIGF2YWlsYWJsZSwgc2F2ZSBhbiBhbHQgbW9kZSBhbHNvICov CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzY2FuLCAmY29ubmVjdG9yLT5wcm9iZWRfbW9kZXMsIGhl YWQpIHsKIAkJaWYgKChzY2FuLT50eXBlICYgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQpKSB7CiAJ CQlmaXhlZF9tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgc2Nhbik7CiAJCQlkb3duY2xv Y2tfbW9kZSA9IGludGVsX2RwX2RycnNfaW5pdCgKIAkJCQkJCWludGVsX2Nvbm5lY3RvciwgZml4 ZWRfbW9kZSk7Ci0JCQlicmVhazsKKwkJfSBlbHNlIGlmICghYWx0X2ZpeGVkX21vZGUpIHsKKwkJ CWFsdF9maXhlZF9tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgc2Nhbik7CiAJCX0KIAl9 CiAKQEAgLTU5MDgsNyArNTkzMSw4IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5l Y3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJICAgICAgcGlwZV9uYW1lKHBpcGUp KTsKIAl9CiAKLQlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhl ZF9tb2RlLCBkb3duY2xvY2tfbW9kZSk7CisJaW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVj dG9yLT5wYW5lbCwgZml4ZWRfbW9kZSwgYWx0X2ZpeGVkX21vZGUsCisJCQkgZG93bmNsb2NrX21v ZGUpOwogCWludGVsX2Nvbm5lY3Rvci0+cGFuZWwuYmFja2xpZ2h0LnBvd2VyID0gaW50ZWxfZWRw X2JhY2tsaWdodF9wb3dlcjsKIAlpbnRlbF9wYW5lbF9zZXR1cF9iYWNrbGlnaHQoY29ubmVjdG9y LCBwaXBlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBlNDUxNjNhLi4zYmQxMWUy IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMjY1LDYgKzI2NSw3IEBAIHN0cnVjdCBp bnRlbF9lbmNvZGVyIHsKIAogc3RydWN0IGludGVsX3BhbmVsIHsKIAlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqZml4ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWx0X2ZpeGVk X21vZGU7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2RlOwogCiAJLyog YmFja2xpZ2h0ICovCkBAIC0xNjk4LDYgKzE2OTksNyBAQCB2b2lkIGludGVsX292ZXJsYXlfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIC8qIGludGVsX3BhbmVsLmMg Ki8KIGludCBpbnRlbF9wYW5lbF9pbml0KHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwsCiAJCSAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUsCisJCSAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFsdF9maXhlZF9tb2RlLAogCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpkb3duY2xvY2tfbW9kZSk7CiB2b2lkIGludGVsX3BhbmVsX2Zpbmkoc3RydWN0IGlu dGVsX3BhbmVsICpwYW5lbCk7CiB2b2lkIGludGVsX2ZpeGVkX3BhbmVsX21vZGUoY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j CmluZGV4IDUwZWM4MzYuLmQzYTY2MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RzaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCkBAIC0x ODUxLDcgKzE4NTEsNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IGZpeGVk X21vZGUtPndpZHRoX21tOwogCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IGZp eGVkX21vZGUtPmhlaWdodF9tbTsKIAotCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rv ci0+cGFuZWwsIGZpeGVkX21vZGUsIE5VTEwpOworCWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nv bm5lY3Rvci0+cGFuZWwsIGZpeGVkX21vZGUsIE5VTEwsIE5VTEwpOwogCWludGVsX3BhbmVsX3Nl dHVwX2JhY2tsaWdodChjb25uZWN0b3IsIElOVkFMSURfUElQRSk7CiAKIAlpbnRlbF9kc2lfYWRk X3Byb3BlcnRpZXMoaW50ZWxfY29ubmVjdG9yKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMKaW5k ZXggYzE1NDRhNS4uMzlmZDRmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHZvLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMKQEAgLTU1NCw3 ICs1NTQsNyBAQCB2b2lkIGludGVsX2R2b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAkJCSAqLwogCQkJaW50ZWxfcGFuZWxfaW5pdCgmaW50ZWxfY29ubmVjdG9yLT5w YW5lbCwKIAkJCQkJIGludGVsX2R2b19nZXRfY3VycmVudF9tb2RlKGNvbm5lY3RvciksCi0JCQkJ CSBOVUxMKTsKKwkJCQkJIE5VTEwsIE5VTEwpOwogCQkJaW50ZWxfZHZvLT5wYW5lbF93YW50c19k aXRoZXIgPSB0cnVlOwogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwppbmRleCA2ZmU1 ZDdjLi5hOTk1Y2NiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCkBAIC0xMTQwLDcgKzEx NDAsOCBAQCB2b2lkIGludGVsX2x2ZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiBvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAot CWludGVsX3BhbmVsX2luaXQoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWwsIGZpeGVkX21vZGUsIGRv d25jbG9ja19tb2RlKTsKKwlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVs LCBmaXhlZF9tb2RlLCBOVUxMLAorCQkJIGRvd25jbG9ja19tb2RlKTsKIAlpbnRlbF9wYW5lbF9z ZXR1cF9iYWNrbGlnaHQoY29ubmVjdG9yLCBJTlZBTElEX1BJUEUpOwogCiAJbHZkc19lbmNvZGVy LT5pc19kdWFsX2xpbmsgPSBjb21wdXRlX2lzX2R1YWxfbGlua19sdmRzKGx2ZHNfZW5jb2Rlcik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwppbmRleCA5NmMyY2JkLi5hYTU5YjEyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKQEAgLTE5MTksMTEgKzE5MTksMTMgQEAgaW50ZWxf cGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKIAog aW50IGludGVsX3BhbmVsX2luaXQoc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCwKIAkJICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRfbW9kZSwKKwkJICAgICBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWx0X2ZpeGVkX21vZGUsCiAJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmRvd25jbG9ja19tb2RlKQogewogCWludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNz KHBhbmVsKTsKIAogCXBhbmVsLT5maXhlZF9tb2RlID0gZml4ZWRfbW9kZTsKKwlwYW5lbC0+YWx0 X2ZpeGVkX21vZGUgPSBhbHRfZml4ZWRfbW9kZTsKIAlwYW5lbC0+ZG93bmNsb2NrX21vZGUgPSBk b3duY2xvY2tfbW9kZTsKIAogCXJldHVybiAwOwpAQCAtMTkzNyw2ICsxOTM5LDEwIEBAIHZvaWQg aW50ZWxfcGFuZWxfZmluaShzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsKQogCWlmIChwYW5lbC0+ Zml4ZWRfbW9kZSkKIAkJZHJtX21vZGVfZGVzdHJveShpbnRlbF9jb25uZWN0b3ItPmJhc2UuZGV2 LCBwYW5lbC0+Zml4ZWRfbW9kZSk7CiAKKwlpZiAocGFuZWwtPmFsdF9maXhlZF9tb2RlKQorCQlk cm1fbW9kZV9kZXN0cm95KGludGVsX2Nvbm5lY3Rvci0+YmFzZS5kZXYsCisJCQkJcGFuZWwtPmFs dF9maXhlZF9tb2RlKTsKKwogCWlmIChwYW5lbC0+ZG93bmNsb2NrX21vZGUpCiAJCWRybV9tb2Rl X2Rlc3Ryb3koaW50ZWxfY29ubmVjdG9yLT5iYXNlLmRldiwKIAkJCQlwYW5lbC0+ZG93bmNsb2Nr X21vZGUpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=