From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Anholt Subject: [PATCH 02/11] clk: bcm2835: Register the DSI0/DSI1 pixel clocks. Date: Wed, 14 Dec 2016 11:46:12 -0800 Message-ID: <20161214194621.16499-3-eric@anholt.net> References: <20161214194621.16499-1-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from anholt.net (anholt.net [50.246.234.109]) by gabe.freedesktop.org (Postfix) with ESMTP id 0779B6E89D for ; Wed, 14 Dec 2016 19:46:33 +0000 (UTC) In-Reply-To: <20161214194621.16499-1-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Florian Fainelli , Michael Turquette , Stephen Boyd , Rob Herring , Mark Rutland , dri-devel@lists.freedesktop.org, Thierry Reding Cc: Stephen Warren , Lee Jones , linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org VGhlIERTSSBwaXhlbCBjbG9ja3MgYXJlIG11eGVkIGZyb20gY2xvY2tzIGdlbmVyYXRlZCBpbiB0 aGUgYW5hbG9nIHBoeQpieSB0aGUgRFNJIGRyaXZlci4gIEluIG9yZGVyIHRvIHNldCB0aGVtIGFz IHBhcmVudHMsIHdlIG5lZWQgdG8gZG8gdGhlCnNhbWUgbmFtZSBsb29rdXAgZGFuY2Ugb24gdGhl bSBhcyB3ZSBkbyBmb3Igb3VyIHJvb3Qgb3NjaWxsYXRvci4KClNpZ25lZC1vZmYtYnk6IEVyaWMg QW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Ci0tLQogLi4uL2JpbmRpbmdzL2Nsb2NrL2JyY20sYmNt MjgzNS1jcHJtYW4udHh0ICAgICAgICAgfCAgMTUgKystCiBkcml2ZXJzL2Nsay9iY20vY2xrLWJj bTI4MzUuYyAgICAgICAgICAgICAgICAgICAgICB8IDEyMCArKysrKysrKysrKysrKysrKystLS0K IGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svYmNtMjgzNS5oICAgICAgICAgICAgICAgIHwgICAy ICsKIDMgZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9icmNt LGJjbTI4MzUtY3BybWFuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9j bG9jay9icmNtLGJjbTI4MzUtY3BybWFuLnR4dAppbmRleCBlNTZhMWRmM2E5ZDMuLmRkOTA2ZGIz NGIzMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2Nr L2JyY20sYmNtMjgzNS1jcHJtYW4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9jbG9jay9icmNtLGJjbTI4MzUtY3BybWFuLnR4dApAQCAtMTYsNyArMTYsMjAgQEAg UmVxdWlyZWQgcHJvcGVydGllczoKIC0gI2Nsb2NrLWNlbGxzOglTaG91bGQgYmUgPDE+LiBUaGUg cGVybWl0dGVkIGNsb2NrLXNwZWNpZmllciB2YWx1ZXMgY2FuIGJlCiAJCSAgZm91bmQgaW4gaW5j bHVkZS9kdC1iaW5kaW5ncy9jbG9jay9iY20yODM1LmgKIC0gcmVnOgkJU3BlY2lmaWVzIGJhc2Ug cGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzCi0tIGNsb2NrczoJVGhl IGV4dGVybmFsIG9zY2lsbGF0b3IgY2xvY2sgcGhhbmRsZQorLSBjbG9ja3M6CXBoYW5kbGVzIHRv IHRoZSBwYXJlbnQgY2xvY2tzIHVzZWQgYXMgaW5wdXQgdG8gdGhlIG1vZHVsZSwgaW4KKwkJICB0 aGUgZm9sbG93aW5nIG9yZGVyOgorCisJCSAgLSBFeHRlcm5hbCBvc2NpbGxhdG9yCisJCSAgLSBE U0kwIGJ5dGUgY2xvY2sKKwkJICAtIERTSTAgRERSMiBjbG9jaworCQkgIC0gRFNJMCBERFIgY2xv Y2sKKwkJICAtIERTSTEgYnl0ZSBjbG9jaworCQkgIC0gRFNJMSBERFIyIGNsb2NrCisJCSAgLSBE U0kxIEREUiBjbG9jaworCisJCSAgT25seSBleHRlcm5hbCBvc2NpbGxhdG9yIGlzIHJlcXVpcmVk LiAgVGhlIERTSSBjbG9ja3MgbWF5CisJCSAgbm90IGJlIHByZXNlbnQsIGluIHdoaWNoIGNhc2Ug dGhlaXIgY2hpbGRyZW4gd2lsbCBiZQorCQkgIHVudXNhYmxlLgogCiBFeGFtcGxlOgogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYyBiL2RyaXZlcnMvY2xrL2JjbS9j bGstYmNtMjgzNS5jCmluZGV4IDY2NDEwMzBlOGVhZS4uYjBhOGNkMTlhMzBjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYworKysgYi9kcml2ZXJzL2Nsay9iY20vY2xr LWJjbTI4MzUuYwpAQCAtMjk3LDExICsyOTcsMzIgQEAKICNkZWZpbmUgTE9DS19USU1FT1VUX05T CQkxMDAwMDAwMDAKICNkZWZpbmUgQkNNMjgzNV9NQVhfRkJfUkFURQkxNzUwMDAwMDAwdQogCisv KgorICogTmFtZXMgb2YgY2xvY2tzIHVzZWQgd2l0aGluIHRoZSBkcml2ZXIgdGhhdCBuZWVkIHRv IGJlIHJlcGxhY2VkCisgKiB3aXRoIGFuIGV4dGVybmFsIHBhcmVudCdzIG5hbWUuICBUaGlzIGFy cmF5IGlzIGluIHRoZSBvcmRlciB0aGF0CisgKiB0aGUgY2xvY2tzIG5vZGUgaW4gdGhlIERUIHJl ZmVyZW5jZXMgZXh0ZXJuYWwgY2xvY2tzLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg Y3BybWFuX3BhcmVudF9uYW1lc1tdID0geworCSJ4b3NjIiwKKwkiZHNpMF9ieXRlIiwKKwkiZHNp MF9kZHIyIiwKKwkiZHNpMF9kZHIiLAorCSJkc2kxX2J5dGUiLAorCSJkc2kxX2RkcjIiLAorCSJk c2kxX2RkciIsCit9OworCiBzdHJ1Y3QgYmNtMjgzNV9jcHJtYW4gewogCXN0cnVjdCBkZXZpY2Ug KmRldjsKIAl2b2lkIF9faW9tZW0gKnJlZ3M7CiAJc3BpbmxvY2tfdCByZWdzX2xvY2s7IC8qIHNw aW5sb2NrIGZvciBhbGwgY2xvY2tzICovCi0JY29uc3QgY2hhciAqb3NjX25hbWU7CisKKwkvKgor CSAqIFJlYWwgbmFtZXMgb2YgY3BybWFuIGNsb2NrIHBhcmVudHMgbG9va2VkIHVwIHRocm91Z2gK KwkgKiBvZl9jbGtfZ2V0X3BhcmVudF9uYW1lKCksIHdoaWNoIHdpbGwgYmUgdXNlZCBpbiB0aGUK KwkgKiBwYXJlbnRfbmFtZXNbXSBhcnJheXMgZm9yIGNsb2NrIHJlZ2lzdHJhdGlvbi4KKwkgKi8K Kwljb25zdCBjaGFyICpyZWFsX3BhcmVudF9uYW1lc1tBUlJBWV9TSVpFKGNwcm1hbl9wYXJlbnRf bmFtZXMpXTsKIAogCS8qIE11c3QgYmUgbGFzdCAqLwogCXN0cnVjdCBjbGtfaHdfb25lY2VsbF9k YXRhIG9uZWNlbGw7CkBAIC05MDUsNiArOTI2LDkgQEAgc3RhdGljIGxvbmcgYmNtMjgzNV9jbG9j a19yYXRlX2Zyb21fZGl2aXNvcihzdHJ1Y3QgYmNtMjgzNV9jbG9jayAqY2xvY2ssCiAJY29uc3Qg c3RydWN0IGJjbTI4MzVfY2xvY2tfZGF0YSAqZGF0YSA9IGNsb2NrLT5kYXRhOwogCXU2NCB0ZW1w OwogCisJaWYgKGRhdGEtPmludF9iaXRzID09IDAgJiYgZGF0YS0+ZnJhY19iaXRzID09IDApCisJ CXJldHVybiBwYXJlbnRfcmF0ZTsKKwogCS8qCiAJICogVGhlIGRpdmlzb3IgaXMgYSAxMi4xMiBm aXhlZCBwb2ludCBmaWVsZCwgYnV0IG9ubHkgc29tZSBvZgogCSAqIHRoZSBiaXRzIGFyZSBwb3B1 bGF0ZWQgaW4gYW55IGdpdmVuIGNsb2NrLgpAQCAtOTI4LDcgKzk1MiwxMiBAQCBzdGF0aWMgdW5z aWduZWQgbG9uZyBiY20yODM1X2Nsb2NrX2dldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAogCXN0 cnVjdCBiY20yODM1X2Nsb2NrICpjbG9jayA9IGJjbTI4MzVfY2xvY2tfZnJvbV9odyhodyk7CiAJ c3RydWN0IGJjbTI4MzVfY3BybWFuICpjcHJtYW4gPSBjbG9jay0+Y3BybWFuOwogCWNvbnN0IHN0 cnVjdCBiY20yODM1X2Nsb2NrX2RhdGEgKmRhdGEgPSBjbG9jay0+ZGF0YTsKLQl1MzIgZGl2ID0g Y3BybWFuX3JlYWQoY3BybWFuLCBkYXRhLT5kaXZfcmVnKTsKKwl1MzIgZGl2OworCisJaWYgKGRh dGEtPmludF9iaXRzID09IDAgJiYgZGF0YS0+ZnJhY19iaXRzID09IDApCisJCXJldHVybiBwYXJl bnRfcmF0ZTsKKworCWRpdiA9IGNwcm1hbl9yZWFkKGNwcm1hbiwgZGF0YS0+ZGl2X3JlZyk7CiAK IAlyZXR1cm4gYmNtMjgzNV9jbG9ja19yYXRlX2Zyb21fZGl2aXNvcihjbG9jaywgcGFyZW50X3Jh dGUsIGRpdik7CiB9CkBAIC0xMTU4LDcgKzExODcsNyBAQCBzdGF0aWMgc3RydWN0IGNsa19odyAq YmNtMjgzNV9yZWdpc3Rlcl9wbGwoc3RydWN0IGJjbTI4MzVfY3BybWFuICpjcHJtYW4sCiAJbWVt c2V0KCZpbml0LCAwLCBzaXplb2YoaW5pdCkpOwogCiAJLyogQWxsIG9mIHRoZSBQTExzIGRlcml2 ZSBmcm9tIHRoZSBleHRlcm5hbCBvc2NpbGxhdG9yLiAqLwotCWluaXQucGFyZW50X25hbWVzID0g JmNwcm1hbi0+b3NjX25hbWU7CisJaW5pdC5wYXJlbnRfbmFtZXMgPSAmY3BybWFuLT5yZWFsX3Bh cmVudF9uYW1lc1swXTsKIAlpbml0Lm51bV9wYXJlbnRzID0gMTsKIAlpbml0Lm5hbWUgPSBkYXRh LT5uYW1lOwogCWluaXQub3BzID0gJmJjbTI4MzVfcGxsX2Nsa19vcHM7CkBAIC0xMjQ0LDE4ICsx MjczLDIyIEBAIHN0YXRpYyBzdHJ1Y3QgY2xrX2h3ICpiY20yODM1X3JlZ2lzdGVyX2Nsb2NrKHN0 cnVjdCBiY20yODM1X2Nwcm1hbiAqY3BybWFuLAogCXN0cnVjdCBiY20yODM1X2Nsb2NrICpjbG9j azsKIAlzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0OwogCWNvbnN0IGNoYXIgKnBhcmVudHNbMSA8 PCBDTV9TUkNfQklUU107Ci0Jc2l6ZV90IGk7CisJc2l6ZV90IGksIGo7CiAJaW50IHJldDsKIAog CS8qCi0JICogUmVwbGFjZSBvdXIgInhvc2MiIHJlZmVyZW5jZXMgd2l0aCB0aGUgb3NjaWxsYXRv cidzCi0JICogYWN0dWFsIG5hbWUuCisJICogUmVwbGFjZSBvdXIgc3RyaW5ncyByZWZlcmVuY2lu ZyBwYXJlbnQgY2xvY2tzIHdpdGggdGhlCisJICogYWN0dWFsIGNsb2NrLW91dHB1dC1uYW1lIG9m IHRoZSBwYXJlbnQuCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGRhdGEtPm51bV9tdXhfcGFyZW50 czsgaSsrKSB7Ci0JCWlmIChzdHJjbXAoZGF0YS0+cGFyZW50c1tpXSwgInhvc2MiKSA9PSAwKQot CQkJcGFyZW50c1tpXSA9IGNwcm1hbi0+b3NjX25hbWU7Ci0JCWVsc2UKLQkJCXBhcmVudHNbaV0g PSBkYXRhLT5wYXJlbnRzW2ldOworCQlwYXJlbnRzW2ldID0gZGF0YS0+cGFyZW50c1tpXTsKKwor CQlmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShjcHJtYW5fcGFyZW50X25hbWVzKTsgaisrKSB7 CisJCQlpZiAoc3RyY21wKHBhcmVudHNbaV0sIGNwcm1hbl9wYXJlbnRfbmFtZXNbal0pID09IDAp IHsKKwkJCQlwYXJlbnRzW2ldID0gY3BybWFuLT5yZWFsX3BhcmVudF9uYW1lc1tqXTsKKwkJCQli cmVhazsKKwkJCX0KKwkJfQogCX0KIAogCW1lbXNldCgmaW5pdCwgMCwgc2l6ZW9mKGluaXQpKTsK QEAgLTEzNzUsNiArMTQwOCw0NyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgYmNtMjgzNV9j bG9ja192cHVfcGFyZW50c1tdID0gewogCV9fVkFfQVJHU19fKQogCiAvKgorICogRFNJIHBhcmVu dCBjbG9ja3MuICBUaGUgRFNJIGJ5dGUvRERSL0REUjIgY2xvY2tzIGNvbWUgZnJvbSB0aGUgRFNJ CisgKiBhbmFsb2cgUEhZLiAgVGhlIF9pbnYgdmFyaWFudHMgYXJlIGdlbmVyYXRlZCBpbnRlcm5h bGx5IHRvIGNwcm1hbiwKKyAqIGJ1dCB3ZSBkb24ndCB1c2UgdGhlbSBzbyB0aGV5IGFyZW4ndCBo b29rZWQgdXAuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBiY20yODM1X2Nsb2NrX2Rz aTBfcGFyZW50c1tdID0geworCSJnbmQiLAorCSJ4b3NjIiwKKwkidGVzdGRlYnVnMCIsCisJInRl c3RkZWJ1ZzEiLAorCSJkc2kwX2RkciIsCisJImRzaTBfZGRyX2ludiIsCisJImRzaTBfZGRyMiIs CisJImRzaTBfZGRyMl9pbnYiLAorCSJkc2kwX2J5dGUiLAorCSJkc2kwX2J5dGVfaW52IiwKK307 CisKK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBiY20yODM1X2Nsb2NrX2RzaTFfcGFyZW50c1td ID0geworCSJnbmQiLAorCSJ4b3NjIiwKKwkidGVzdGRlYnVnMCIsCisJInRlc3RkZWJ1ZzEiLAor CSJkc2kxX2RkciIsCisJImRzaTFfZGRyX2ludiIsCisJImRzaTFfZGRyMiIsCisJImRzaTFfZGRy Ml9pbnYiLAorCSJkc2kxX2J5dGUiLAorCSJkc2kxX2J5dGVfaW52IiwKK307CisKKyNkZWZpbmUg UkVHSVNURVJfRFNJMF9DTEsoLi4uKQlSRUdJU1RFUl9DTEsoCQkJCVwKKwkubnVtX211eF9wYXJl bnRzID0gQVJSQVlfU0laRShiY20yODM1X2Nsb2NrX2RzaTBfcGFyZW50cyksCVwKKwkucGFyZW50 cyA9IGJjbTI4MzVfY2xvY2tfZHNpMF9wYXJlbnRzLAkJCQlcCisJX19WQV9BUkdTX18pCisKKyNk ZWZpbmUgUkVHSVNURVJfRFNJMV9DTEsoLi4uKQlSRUdJU1RFUl9DTEsoCQkJCVwKKwkubnVtX211 eF9wYXJlbnRzID0gQVJSQVlfU0laRShiY20yODM1X2Nsb2NrX2RzaTFfcGFyZW50cyksCVwKKwku cGFyZW50cyA9IGJjbTI4MzVfY2xvY2tfZHNpMV9wYXJlbnRzLAkJCQlcCisJX19WQV9BUkdTX18p CisKKy8qCiAgKiB0aGUgcmVhbCBkZWZpbml0aW9uIG9mIGFsbCB0aGUgcGxsLCBwbGxfZGl2aWRl cnMgYW5kIGNsb2NrcwogICogdGhlc2UgbWFrZSB1c2Ugb2YgdGhlIGFib3ZlIFJFR0lTVEVSXyog bWFjcm9zCiAgKi8KQEAgLTE4MzIsNiArMTkwNiwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJj bTI4MzVfY2xrX2Rlc2MgY2xrX2Rlc2NfYXJyYXlbXSA9IHsKIAkJLmRpdl9yZWcgPSBDTV9EU0kx RURJViwKIAkJLmludF9iaXRzID0gNCwKIAkJLmZyYWNfYml0cyA9IDgpLAorCVtCQ00yODM1X0NM T0NLX0RTSTBQXQk9IFJFR0lTVEVSX0RTSTBfQ0xLKAorCQkubmFtZSA9ICJkc2kwcCIsCisJCS5j dGxfcmVnID0gQ01fRFNJMFBDVEwsCisJCS5kaXZfcmVnID0gQ01fRFNJMFBESVYsCisJCS5pbnRf Yml0cyA9IDAsCisJCS5mcmFjX2JpdHMgPSAwKSwKKwlbQkNNMjgzNV9DTE9DS19EU0kxUF0JPSBS RUdJU1RFUl9EU0kxX0NMSygKKwkJLm5hbWUgPSAiZHNpMXAiLAorCQkuY3RsX3JlZyA9IENNX0RT STFQQ1RMLAorCQkuZGl2X3JlZyA9IENNX0RTSTFQRElWLAorCQkuaW50X2JpdHMgPSAwLAorCQku ZnJhY19iaXRzID0gMCksCiAKIAkvKiB0aGUgZ2F0ZXMgKi8KIApAQCAtMTg5MCw4ICsxOTc2LDE4 IEBAIHN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAlpZiAoSVNfRVJSKGNwcm1hbi0+cmVncykpCiAJCXJldHVybiBQVFJfRVJSKGNwcm1h bi0+cmVncyk7CiAKLQljcHJtYW4tPm9zY19uYW1lID0gb2ZfY2xrX2dldF9wYXJlbnRfbmFtZShk ZXYtPm9mX25vZGUsIDApOwotCWlmICghY3BybWFuLT5vc2NfbmFtZSkKKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShjcHJtYW5fcGFyZW50X25hbWVzKTsgaSsrKSB7CisJCWNwcm1hbi0+cmVh bF9wYXJlbnRfbmFtZXNbaV0gPQorCQkJb2ZfY2xrX2dldF9wYXJlbnRfbmFtZShkZXYtPm9mX25v ZGUsIGkpOworCX0KKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciBo YXMgYmVlbiByZWdpc3RlcmVkLgorCSAqCisJICogVGhlIG90aGVyIChEU0kpIGNsb2NrcyBhcmUg bm90IHByZXNlbnQgb24gb2xkZXIgZGV2aWNlCisJICogdHJlZXMsIHdoaWNoIHdlIHN0aWxsIG5l ZWQgdG8gc3VwcG9ydCBmb3IgYmFja3dhcmRzCisJICogY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlp ZiAoIWNwcm1hbi0+cmVhbF9wYXJlbnRfbmFtZXNbMF0pCiAJCXJldHVybiAtRU5PREVWOwogCiAJ cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY3BybWFuKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHQtYmluZGluZ3MvY2xvY2svYmNtMjgzNS5oIGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9i Y20yODM1LmgKaW5kZXggMzYwZTAwY2VmZDM1Li5hMGM4MTJiMGZhMzkgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svYmNtMjgzNS5oCisrKyBiL2luY2x1ZGUvZHQtYmluZGlu Z3MvY2xvY2svYmNtMjgzNS5oCkBAIC02NCwzICs2NCw1IEBACiAjZGVmaW5lIEJDTTI4MzVfQ0xP Q0tfQ0FNMQkJNDYKICNkZWZpbmUgQkNNMjgzNV9DTE9DS19EU0kwRQkJNDcKICNkZWZpbmUgQkNN MjgzNV9DTE9DS19EU0kxRQkJNDgKKyNkZWZpbmUgQkNNMjgzNV9DTE9DS19EU0kwUAkJNDkKKyNk ZWZpbmUgQkNNMjgzNV9DTE9DS19EU0kxUAkJNTAKLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==