From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 132/138] drm/amd/powerplay: implement update enabled feature state to smc for smu11 Date: Fri, 25 Jan 2019 18:25:39 +0800 Message-ID: <1548411945-12396-133-git-send-email-ray.huang@amd.com> References: <1548411945-12396-1-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548411945-12396-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Likun Gao , Kevin Wang , Chengming Gui RnJvbTogS2V2aW4gV2FuZyA8a2V2aW4xLndhbmdAYW1kLmNvbT4KCmNoYW5nZToKMS53aGVuIGVu YWJsZSBzbXUgZmVhdHVyZSwgdGhlIGZlYXR1cmUgaWQgd2lsbCBzdG9yZSBzdy1iaXRtYXAgYW5k IHNtdQpjb250cm9sbGVyLgoyLmFkZCBmZWF0dXJlIG11dGV4IGxvY2sgdG8gcHJvdGVjdCBmZWF0 dXJlIGJpdG1hcCBjaGFuZ2VkIHdoZW4gdXBkYXRlCmZlYXR1cmUgZW5hYmxlZCBzdGF0ZS4KClNp Z25lZC1vZmYtYnk6IEtldmluIFdhbmcgPGtldmluMS53YW5nQGFtZC5jb20+ClJldmlld2VkLWJ5 OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2FtZGdwdV9zbXUuYyAgICAgfCA0NSArKysrKysrKysrKysrKysrKysrKystLS0K IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmggfCAgNCArKysK IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jICAgICAgfCA0NyArKysr KysrKysrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCsp LCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2FtZGdwdV9zbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9z bXUuYwppbmRleCA5MTJmNDRlLi45MjYyZDk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9hbWRncHVfc211LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvYW1kZ3B1X3NtdS5jCkBAIC0xNjMsMTYgKzE2MywyMCBAQCBpbnQgc211X2ZlYXR1cmVf aW5pdF9kcG0oc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCiAJaW50IHJldCA9IDA7CiAJdWludDMy X3QgdW5hbGxvd2VkX2ZlYXR1cmVfbWFza1tTTVVfRkVBVFVSRV9NQVgvMzJdOwogCisJbXV0ZXhf bG9jaygmZmVhdHVyZS0+bXV0ZXgpOwogCWJpdG1hcF9maWxsKGZlYXR1cmUtPmFsbG93ZWQsIFNN VV9GRUFUVVJFX01BWCk7CisJbXV0ZXhfdW5sb2NrKCZmZWF0dXJlLT5tdXRleCk7CiAKIAlyZXQg PSBzbXVfZ2V0X3VuYWxsb3dlZF9mZWF0dXJlX21hc2soc211LCB1bmFsbG93ZWRfZmVhdHVyZV9t YXNrLAogCQkJCQkgICAgIFNNVV9GRUFUVVJFX01BWC8zMik7CiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAorCW11dGV4X2xvY2soJmZlYXR1cmUtPm11dGV4KTsKIAliaXRtYXBfYW5kbm90KGZl YXR1cmUtPmFsbG93ZWQsIGZlYXR1cmUtPmFsbG93ZWQsCiAJCSAgICAgICh1bnNpZ25lZCBsb25n ICopdW5hbGxvd2VkX2ZlYXR1cmVfbWFzaywKIAkJICAgICAgZmVhdHVyZS0+ZmVhdHVyZV9udW0p OworCW11dGV4X3VubG9jaygmZmVhdHVyZS0+bXV0ZXgpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAg LTE4MCwzOCArMTg0LDcwIEBAIGludCBzbXVfZmVhdHVyZV9pbml0X2RwbShzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSkKIGludCBzbXVfZmVhdHVyZV9pc19lbmFibGVkKHN0cnVjdCBzbXVfY29udGV4 dCAqc211LCBpbnQgZmVhdHVyZV9pZCkKIHsKIAlzdHJ1Y3Qgc211X2ZlYXR1cmUgKmZlYXR1cmUg PSAmc211LT5zbXVfZmVhdHVyZTsKKwlpbnQgcmV0ID0gMDsKKwogCVdBUk5fT04oZmVhdHVyZV9p ZCA+IGZlYXR1cmUtPmZlYXR1cmVfbnVtKTsKLQlyZXR1cm4gdGVzdF9iaXQoZmVhdHVyZV9pZCwg ZmVhdHVyZS0+ZW5hYmxlZCk7CisKKwltdXRleF9sb2NrKCZmZWF0dXJlLT5tdXRleCk7CisJcmV0 ID0gdGVzdF9iaXQoZmVhdHVyZV9pZCwgZmVhdHVyZS0+ZW5hYmxlZCk7CisJbXV0ZXhfdW5sb2Nr KCZmZWF0dXJlLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBpbnQgc211X2ZlYXR1cmVf c2V0X2VuYWJsZWQoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIGludCBmZWF0dXJlX2lkLCBib29s IGVuYWJsZSkKIHsKIAlzdHJ1Y3Qgc211X2ZlYXR1cmUgKmZlYXR1cmUgPSAmc211LT5zbXVfZmVh dHVyZTsKKwlpbnQgcmV0ID0gMDsKKwogCVdBUk5fT04oZmVhdHVyZV9pZCA+IGZlYXR1cmUtPmZl YXR1cmVfbnVtKTsKKworCW11dGV4X2xvY2soJmZlYXR1cmUtPm11dGV4KTsKKwlyZXQgPSBzbXVf ZmVhdHVyZV91cGRhdGVfZW5hYmxlX3N0YXRlKHNtdSwgZmVhdHVyZV9pZCwgZW5hYmxlKTsKKwlp ZiAocmV0KQorCQlnb3RvIGZhaWxlZDsKKwogCWlmIChlbmFibGUpCiAJCXRlc3RfYW5kX3NldF9i aXQoZmVhdHVyZV9pZCwgZmVhdHVyZS0+ZW5hYmxlZCk7CiAJZWxzZQogCQl0ZXN0X2FuZF9jbGVh cl9iaXQoZmVhdHVyZV9pZCwgZmVhdHVyZS0+ZW5hYmxlZCk7Ci0JcmV0dXJuIDA7CisKK2ZhaWxl ZDoKKwltdXRleF91bmxvY2soJmZlYXR1cmUtPm11dGV4KTsKKworCXJldHVybiByZXQ7CiB9CiAK IGludCBzbXVfZmVhdHVyZV9pc19zdXBwb3J0ZWQoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIGlu dCBmZWF0dXJlX2lkKQogewogCXN0cnVjdCBzbXVfZmVhdHVyZSAqZmVhdHVyZSA9ICZzbXUtPnNt dV9mZWF0dXJlOworCWludCByZXQgPSAwOworCiAJV0FSTl9PTihmZWF0dXJlX2lkID4gZmVhdHVy ZS0+ZmVhdHVyZV9udW0pOwotCXJldHVybiB0ZXN0X2JpdChmZWF0dXJlX2lkLCBmZWF0dXJlLT5z dXBwb3J0ZWQpOworCisJbXV0ZXhfbG9jaygmZmVhdHVyZS0+bXV0ZXgpOworCXJldCA9IHRlc3Rf Yml0KGZlYXR1cmVfaWQsIGZlYXR1cmUtPnN1cHBvcnRlZCk7CisJbXV0ZXhfdW5sb2NrKCZmZWF0 dXJlLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OwogfQogCiBpbnQgc211X2ZlYXR1cmVfc2V0X3N1 cHBvcnRlZChzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSwgaW50IGZlYXR1cmVfaWQsCiAJCQkgICAg ICBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3Qgc211X2ZlYXR1cmUgKmZlYXR1cmUgPSAmc211LT5z bXVfZmVhdHVyZTsKKwlpbnQgcmV0ID0gMDsKKwogCVdBUk5fT04oZmVhdHVyZV9pZCA+IGZlYXR1 cmUtPmZlYXR1cmVfbnVtKTsKKworCW11dGV4X3VubG9jaygmZmVhdHVyZS0+bXV0ZXgpOwogCWlm IChlbmFibGUpCiAJCXRlc3RfYW5kX3NldF9iaXQoZmVhdHVyZV9pZCwgZmVhdHVyZS0+c3VwcG9y dGVkKTsKIAllbHNlCiAJCXRlc3RfYW5kX2NsZWFyX2JpdChmZWF0dXJlX2lkLCBmZWF0dXJlLT5z dXBwb3J0ZWQpOwotCXJldHVybiAwOworCW11dGV4X3VubG9jaygmZmVhdHVyZS0+bXV0ZXgpOwor CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBzbXVfc2V0X2Z1bmNzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQpAQCAtMzE5LDYgKzM1NSw3IEBAIHN0YXRpYyBpbnQgc211X3N3X2lu aXQodm9pZCAqaGFuZGxlKQogCiAJc211LT5wb29sX3NpemUgPSBhZGV2LT5wbS5zbXVfcHJ2X2J1 ZmZlcl9zaXplOwogCXNtdS0+c211X2ZlYXR1cmUuZmVhdHVyZV9udW0gPSBTTVVfRkVBVFVSRV9N QVg7CisJbXV0ZXhfaW5pdCgmc211LT5zbXVfZmVhdHVyZS5tdXRleCk7CiAJYml0bWFwX3plcm8o c211LT5zbXVfZmVhdHVyZS5zdXBwb3J0ZWQsIFNNVV9GRUFUVVJFX01BWCk7CiAJYml0bWFwX3pl cm8oc211LT5zbXVfZmVhdHVyZS5lbmFibGVkLCBTTVVfRkVBVFVSRV9NQVgpOwogCWJpdG1hcF96 ZXJvKHNtdS0+c211X2ZlYXR1cmUuYWxsb3dlZCwgU01VX0ZFQVRVUkVfTUFYKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmggYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvYW1kZ3B1X3NtdS5oCmluZGV4IGRkY2ZiZDku LjJjNjkyM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9h bWRncHVfc211LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2FtZGdw dV9zbXUuaApAQCAtMzQwLDYgKzM0MCw3IEBAIHN0cnVjdCBzbXVfZmVhdHVyZQogCURFQ0xBUkVf QklUTUFQKHN1cHBvcnRlZCwgU01VX0ZFQVRVUkVfTUFYKTsKIAlERUNMQVJFX0JJVE1BUChhbGxv d2VkLCBTTVVfRkVBVFVSRV9NQVgpOwogCURFQ0xBUkVfQklUTUFQKGVuYWJsZWQsIFNNVV9GRUFU VVJFX01BWCk7CisJc3RydWN0IG11dGV4IG11dGV4OwogfTsKIAogc3RydWN0IHNtdV9jbG9ja3Mg ewpAQCAtNDY5LDYgKzQ3MCw3IEBAIHN0cnVjdCBzbXVfZnVuY3MKIAlpbnQgKCpnZXRfZW5hYmxl ZF9tYXNrKShzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSwgdWludDMyX3QgKmZlYXR1cmVfbWFzaywg dWludDMyX3QgbnVtKTsKIAlpbnQgKCplbmFibGVfYWxsX21hc2spKHN0cnVjdCBzbXVfY29udGV4 dCAqc211KTsKIAlpbnQgKCpkaXNhYmxlX2FsbF9tYXNrKShzdHJ1Y3Qgc211X2NvbnRleHQgKnNt dSk7CisJaW50ICgqdXBkYXRlX2ZlYXR1cmVfZW5hYmxlX3N0YXRlKShzdHJ1Y3Qgc211X2NvbnRl eHQgKnNtdSwgdWludDMyX3QgZmVhdHVyZV9pZCwgYm9vbCBlbmFibGVkKTsKIAlpbnQgKCpub3Rp ZnlfZGlzcGxheV9jaGFuZ2UpKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAlpbnQgKCpnZXRf cG93ZXJfbGltaXQpKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAlpbnQgKCpnZXRfY3VycmVu dF9jbGtfZnJlcSkoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIHVpbnQzMl90IGNsa19pZCwgdWlu dDMyX3QgKnZhbHVlKTsKQEAgLTU4MCw2ICs1ODIsOCBAQCBzdHJ1Y3Qgc211X2Z1bmNzCiAJKChz bXUpLT5mdW5jcy0+ZW5hYmxlX2FsbF9tYXNrPyAoc211KS0+ZnVuY3MtPmVuYWJsZV9hbGxfbWFz aygoc211KSkgOiAwKQogI2RlZmluZSBzbXVfZmVhdHVyZV9kaXNhYmxlX2FsbChzbXUpIFwKIAko KHNtdSktPmZ1bmNzLT5kaXNhYmxlX2FsbF9tYXNrPyAoc211KS0+ZnVuY3MtPmRpc2FibGVfYWxs X21hc2soKHNtdSkpIDogMCkKKyNkZWZpbmUgc211X2ZlYXR1cmVfdXBkYXRlX2VuYWJsZV9zdGF0 ZShzbXUsIGZlYXR1cmVfaWQsIGVuYWJsZWQpIFwKKwkoKHNtdSktPmZ1bmNzLT51cGRhdGVfZmVh dHVyZV9lbmFibGVfc3RhdGU/IChzbXUpLT5mdW5jcy0+dXBkYXRlX2ZlYXR1cmVfZW5hYmxlX3N0 YXRlKChzbXUpLCAoZmVhdHVyZV9pZCksIChlbmFibGVkKSkgOiAwKQogI2RlZmluZSBzbXVfbm90 aWZ5X2Rpc3BsYXlfY2hhbmdlKHNtdSkgXAogCSgoc211KS0+ZnVuY3MtPm5vdGlmeV9kaXNwbGF5 X2NoYW5nZT8gKHNtdSktPmZ1bmNzLT5ub3RpZnlfZGlzcGxheV9jaGFuZ2UoKHNtdSkpIDogMCkK ICNkZWZpbmUgc211X3N0b3JlX3Bvd2VycGxheV90YWJsZShzbXUpIFwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMKaW5kZXggMTMwNGJhMS4uMDY2MmY0MCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211X3YxMV8wLmMKQEAgLTYxMywyNyArNjEzLDY3 IEBAIHN0YXRpYyBpbnQgc211X3YxMV8wX2luaXRfZGlzcGxheShzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSkKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IHNtdV92MTFfMF91cGRhdGVfZmVh dHVyZV9lbmFibGVfc3RhdGUoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIHVpbnQzMl90IGZlYXR1 cmVfaWQsIGJvb2wgZW5hYmxlZCkKK3sKKwl1aW50MzJfdCBmZWF0dXJlX2xvdyA9IDAsIGZlYXR1 cmVfaGlnaCA9IDA7CisJaW50IHJldCA9IDA7CisKKwlpZiAoZmVhdHVyZV9pZCA+PSAwICYmIGZl YXR1cmVfaWQgPCAzMSkKKwkJZmVhdHVyZV9sb3cgPSAoMSA8PCBmZWF0dXJlX2lkKTsKKwllbHNl IGlmIChmZWF0dXJlX2lkID4gMzEgJiYgZmVhdHVyZV9pZCA8IDYzKQorCQlmZWF0dXJlX2hpZ2gg PSAoMSA8PCBmZWF0dXJlX2lkKTsKKwllbHNlCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGVu YWJsZWQpIHsKKwkJcmV0ID0gc211X3NlbmRfc21jX21zZ193aXRoX3BhcmFtKHNtdSwgU01VX01T R19FbmFibGVTbXVGZWF0dXJlc0xvdywKKwkJCQkJCSAgZmVhdHVyZV9sb3cpOworCQlpZiAocmV0 KQorCQkJcmV0dXJuIHJldDsKKwkJcmV0ID0gc211X3NlbmRfc21jX21zZ193aXRoX3BhcmFtKHNt dSwgU01VX01TR19FbmFibGVTbXVGZWF0dXJlc0hpZ2gsCisJCQkJCQkgIGZlYXR1cmVfaGlnaCk7 CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCisJfSBlbHNlIHsKKwkJcmV0ID0gc211X3Nl bmRfc21jX21zZ193aXRoX3BhcmFtKHNtdSwgU01VX01TR19EaXNhYmxlU211RmVhdHVyZXNMb3cs CisJCQkJCQkgIGZlYXR1cmVfbG93KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCXJl dCA9IHNtdV9zZW5kX3NtY19tc2dfd2l0aF9wYXJhbShzbXUsIFNNVV9NU0dfRGlzYWJsZVNtdUZl YXR1cmVzSGlnaCwKKwkJCQkJCSAgZmVhdHVyZV9oaWdoKTsKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CisKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IHNtdV92MTFfMF9z ZXRfYWxsb3dlZF9tYXNrKHN0cnVjdCBzbXVfY29udGV4dCAqc211KQogewogCXN0cnVjdCBzbXVf ZmVhdHVyZSAqZmVhdHVyZSA9ICZzbXUtPnNtdV9mZWF0dXJlOwogCWludCByZXQgPSAwOwogCXVp bnQzMl90IGZlYXR1cmVfbWFza1syXTsKIAorCW11dGV4X2xvY2soJmZlYXR1cmUtPm11dGV4KTsK IAlpZiAoYml0bWFwX2VtcHR5KGZlYXR1cmUtPmFsbG93ZWQsIFNNVV9GRUFUVVJFX01BWCkgfHwg ZmVhdHVyZS0+ZmVhdHVyZV9udW0gPCA2NCkKLQkJcmV0dXJuIC1FSU5WQUw7CisJCWdvdG8gZmFp bGVkOwogCiAJYml0bWFwX2NvcHkoKHVuc2lnbmVkIGxvbmcgKilmZWF0dXJlX21hc2ssIGZlYXR1 cmUtPmFsbG93ZWQsIDY0KTsKIAogCXJldCA9IHNtdV9zZW5kX3NtY19tc2dfd2l0aF9wYXJhbShz bXUsIFNNVV9NU0dfU2V0QWxsb3dlZEZlYXR1cmVzTWFza0hpZ2gsCiAJCQkJCSAgZmVhdHVyZV9t YXNrWzFdKTsKIAlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCQlnb3RvIGZhaWxlZDsKIAogCXJl dCA9IHNtdV9zZW5kX3NtY19tc2dfd2l0aF9wYXJhbShzbXUsIFNNVV9NU0dfU2V0QWxsb3dlZEZl YXR1cmVzTWFza0xvdywKIAkJCQkJICBmZWF0dXJlX21hc2tbMF0pOwogCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7CisJCWdvdG8gZmFpbGVkOwogCitmYWlsZWQ6CisJbXV0ZXhfdW5sb2NrKCZmZWF0 dXJlLT5tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMTU3NSw2ICsxNjE1LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBzbXVfZnVuY3Mgc211X3YxMV8wX2Z1bmNzID0gewogCS5nZXRfZW5h YmxlZF9tYXNrID0gc211X3YxMV8wX2dldF9lbmFibGVkX21hc2ssCiAJLmVuYWJsZV9hbGxfbWFz ayA9IHNtdV92MTFfMF9lbmFibGVfYWxsX21hc2ssCiAJLmRpc2FibGVfYWxsX21hc2sgPSBzbXVf djExXzBfZGlzYWJsZV9hbGxfbWFzaywKKwkudXBkYXRlX2ZlYXR1cmVfZW5hYmxlX3N0YXRlID0g c211X3YxMV8wX3VwZGF0ZV9mZWF0dXJlX2VuYWJsZV9zdGF0ZSwKIAkubm90aWZ5X2Rpc3BsYXlf Y2hhbmdlID0gc211X3YxMV8wX25vdGlmeV9kaXNwbGF5X2NoYW5nZSwKIAkuZ2V0X3Bvd2VyX2xp bWl0ID0gc211X3YxMV8wX2dldF9wb3dlcl9saW1pdCwKIAkuZ2V0X2N1cnJlbnRfY2xrX2ZyZXEg PSBzbXVfdjExXzBfZ2V0X2N1cnJlbnRfY2xrX2ZyZXEsCi0tIAoyLjcuNAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==