From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [RFC 1/2] drm/i915: Extend GuC action fast spin time Date: Fri, 17 Nov 2017 16:39:33 -0800 Message-ID: <20171118003934.4800-2-John.C.Harrison@Intel.com> References: <20171118003934.4800-1-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB6186E9F9 for ; Sat, 18 Nov 2017 00:39:35 +0000 (UTC) In-Reply-To: <20171118003934.4800-1-John.C.Harrison@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: Winiarski@freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KClRoZSAncmVx dWVzdCBwcmUtZW1wdGlvbicgR3VDIGNvbW1hbmQgc2VlbXMgdG8gYmUgc2xvd2VyIHRoYW4gb3Ro ZXIKY29tbWFuZHMuIEl0IHR5cGljYWxseSB0YWtlcyAyMC0zMHVzIG9uIGEgR1AtTVJCIHN5c3Rl bSAoQlhUKS4gVGhhdAptZWFucyB0aGF0IHRoZSBzdXBlci1mYXN0IGJ1c3ktc3BpbiB3YWl0IGlu IHRoZSBHdUMgc2VuZCBhY3Rpb24gY29kZQpoaXRzIHRoZSAxMHVzIHRpbWUgb3V0LiBJdCB0aGVu IGRyb3BzIHRocm91Z2ggdG8gdGhlIG1vcmUgc3lzdGVtCmZyaWVuZGx5IHNsZWVwaW5nIHdhaXQg d2l0aCBhIDEwbXMgdGltZW91dC4gVW5mb3J0dW5hdGVseSwgdGhlCnNsZWVwaW5nIHdhaXQgc2Vl bXMgdG8gYXZlcmFnZSBhIDEuNW1zIGRlbGF5LiBUaGF0IGlzIGFsbW9zdCAxMDAgdGltZXMKc2xv d2VyIHRoYW4gbmVjZXNzYXJ5ISBJdCBhbHNvIG1lYW5zIHRoYXQgdGhlIHN1cGVyLWhpZ2gtcHJp b3JpdHkKcHJlLWVtcHRpb24gcmVxdWVzdCBpcyBnZXR0aW5nIGEgc2lnbmlmaWNhbnQgZXh0cmEg bGF0ZW5jeS4gRXZlbgp3b3JzZSwgdGhlIGxhdGVuY3kgY2FuIGJlIHVwd2FyZHMgb2YgOG1zIGlm IHRoZSBrZXJuZWwgZGVjaWRlcyBub3QgdG8KcmVzY2hlZHVsZSB0aGUgaTkxNSBkcml2ZXIgc29v biBiZWF1c2UgdGhlIHN5c3RlbSBpcyBidXN5IGRvaW5nIG90aGVyCnRoaW5ncy4KClRoaXMgcGF0 Y2ggZXh0ZW5kcyB0aGUgYnVzeS1zcGluIHdhaXQgdGltZW91dCBzcGVjaWZpY2FsbHkgZm9yIHRo ZQpjYXNlIG9mIHByZS1lbXRpb24gcmVxdWVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJp c29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDEyICsrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX2xvZy5jICAgICAgIHwgIDYgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9odWMuYyAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuYyAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAgICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFuZ2Vk LCAyNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggOTE4Y2VkY2VmMTA0Li5mZjgyZjA1NjFlYzEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTc4LDcg Kzc4LDcgQEAgc3RhdGljIGludCBndWNfYWxsb2NhdGVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1 YyAqZ3VjLAogCQljbGllbnQtPmN0eF9pbmRleAogCX07CiAKLQlyZXR1cm4gaW50ZWxfZ3VjX3Nl bmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CisJcmV0dXJuIGludGVsX2d1Y19z ZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbiksIGZhbHNlKTsKIH0KIAogc3RhdGlj IGludCBndWNfcmVsZWFzZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCkBAIC04OSw3 ICs4OSw3IEBAIHN0YXRpYyBpbnQgZ3VjX3JlbGVhc2VfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1 YyAqZ3VjLAogCQljbGllbnQtPmN0eF9pbmRleAogCX07CiAKLQlyZXR1cm4gaW50ZWxfZ3VjX3Nl bmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CisJcmV0dXJuIGludGVsX2d1Y19z ZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbiksIGZhbHNlKTsKIH0KIAogc3RhdGlj IHN0cnVjdCBndWNfY29udGV4dF9kZXNjICpfX2dldF9jb250ZXh0X2Rlc2Moc3RydWN0IGk5MTVf Z3VjX2NsaWVudCAqY2xpZW50KQpAQCAtNjA1LDcgKzYwNSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9n dWNfcHJlZW1wdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJZGF0YVs1XSA9IGd1 Yy0+ZXhlY2J1Zl9jbGllbnQtPmN0eF9pbmRleDsKIAlkYXRhWzZdID0gZ3VjLT5zaGFyZWRfZGF0 YV9vZmZzZXQ7CiAKLQlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpF KGRhdGEpKTsKKwlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRh dGEpLCB0cnVlKTsKIH0KIAogLyoqCkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBpbnQgaW50ZWxfZ3Vj X3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCS8qIGZpcnN0IHBh Z2Ugb2YgZGVmYXVsdCBjdHggaXMgc2hhcmVkIGRhdGEgd2l0aCBHdUMgKi8KIAlkYXRhWzJdID0g Z3VjLT5zaGFyZWRfZGF0YV9vZmZzZXQ7CiAKLQlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBk YXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKKwlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBkYXRh LCBBUlJBWV9TSVpFKGRhdGEpLCBmYWxzZSk7CiB9CiAKIApAQCAtMTQ2Niw3ICsxNDY2LDcgQEAg aW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CS8qIGZpcnN0IHBhZ2Ugb2YgZGVmYXVsdCBjdHggaXMgc2hhcmVkIGRhdGEgd2l0aCBHdUMgKi8K IAlkYXRhWzJdID0gZ3VjLT5zaGFyZWRfZGF0YV9vZmZzZXQ7CiAKLQlyZXR1cm4gaW50ZWxfZ3Vj X3NlbmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKKwlyZXR1cm4gaW50ZWxfZ3VjX3Nl bmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpLCBmYWxzZSk7CiB9CiAKIGludCBpOTE1X2d1 Y19yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQpAQCAtMTQ5Myw1 ICsxNDkzLDUgQEAgaW50IGk5MTVfZ3VjX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJLyogZmlyc3QgcGFnZSBpcyBzaGFyZWQgZGF0YSB3aXRoIEd1QyAqLwog CWRhdGFbNl0gPSBndWNfZ2d0dF9vZmZzZXQoY3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSk7CiAKLQly ZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpKTsKKwlyZXR1 cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBkYXRhLCBBUlJBWV9TSVpFKGRhdGEpLCBmYWxzZSk7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKaW5kZXggMGE0ZGQ0NDU0YWRmLi45NWZk NGUxYWNlNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMKQEAgLTQzLDcgKzQz LDcgQEAgc3RhdGljIGludCBndWNfbG9nX2ZsdXNoX2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKIAkJSU5URUxfR1VDX0FDVElPTl9MT0dfQlVGRkVSX0ZJTEVfRkxVU0hfQ09NUExFVEUK IAl9OwogCi0JcmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFj dGlvbikpOworCXJldHVybiBpbnRlbF9ndWNfc2VuZChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShh Y3Rpb24pLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBpbnQgZ3VjX2xvZ19mbHVzaChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19mbHVzaChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJCTAKIAl9OwogCi0JcmV0dXJuIGludGVsX2d1Y19zZW5k KGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOworCXJldHVybiBpbnRlbF9ndWNfc2Vu ZChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLCBmYWxzZSk7CiB9CiAKIHN0YXRpYyBp bnQgZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGNvbnRyb2xfdmFs KQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgaW50IGd1Y19sb2dfY29udHJvbChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsIHUzMiBjb250cm9sX3ZhbCkKIAkJY29udHJvbF92YWwKIAl9OwogCi0JcmV0 dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOworCXJl dHVybiBpbnRlbF9ndWNfc2VuZChndWMsIGFjdGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLCBmYWxz ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwppbmRleCA4MGMyNjJmZDU2YWIuLmU3 OGJjYTdmZDA3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKQEAgLTMxNCw3ICszMTQsNyBA QCB2b2lkIGludGVsX2d1Y19hdXRoX2h1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJZGF0YVswXSA9IElOVEVMX0dVQ19BQ1RJT05fQVVUSEVOVElDQVRFX0hVQzsKIAlkYXRh WzFdID0gZ3VjX2dndHRfb2Zmc2V0KHZtYSkgKyBodWMtPmZ3LnJzYV9vZmZzZXQ7CiAKLQlyZXQg PSBpbnRlbF9ndWNfc2VuZChndWMsIGRhdGEsIEFSUkFZX1NJWkUoZGF0YSkpOworCXJldCA9IGlu dGVsX2d1Y19zZW5kKGd1YywgZGF0YSwgQVJSQVlfU0laRShkYXRhKSwgZmFsc2UpOwogCWlmIChy ZXQpIHsKIAkJRFJNX0VSUk9SKCJIdUM6IEd1QyBkaWQgbm90IGFjayBBdXRoIHJlcXVlc3QgJWRc biIsIHJldCk7CiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKaW5kZXggYzQ2YmM4 NTk0ZjIyLi42ODAyOTBhYzM2ZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwpAQCAtNDMsMTIg KzQzLDEzIEBAIHN0YXRpYyBib29sIGludGVsX2d1Y19yZWN2KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywgdTMyICpzdGF0dXMpCiAJcmV0dXJuIElOVEVMX0dVQ19SRUNWX0lTX1JFU1BPTlNFKHZhbCk7 CiB9CiAKLWludCBpbnRlbF9ndWNfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUz MiAqYWN0aW9uLCB1MzIgbGVuKQoraW50IGludGVsX2d1Y19zZW5kKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sIGJvb2wgdXJnZW50KQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJdTMyIHN0 YXR1czsKIAlpbnQgaTsKIAlpbnQgcmV0OworCWludCBmYXN0X3JldHJ5ID0gdXJnZW50ID8gMTAg OiAxOwogCiAJaWYgKFdBUk5fT04obGVuIDwgMSB8fCBsZW4gPiAxNSkpCiAJCXJldHVybiAtRUlO VkFMOwpAQCAtNjksOSArNzAsMTggQEAgaW50IGludGVsX2d1Y19zZW5kKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4pCiAJLyoKIAkgKiBGYXN0IGNvbW1h bmRzIHNob3VsZCBjb21wbGV0ZSBpbiBsZXNzIHRoYW4gMTB1cywgc28gc2FtcGxlIHF1aWNrbHkK IAkgKiB1cCB0byB0aGF0IGxlbmd0aCBvZiB0aW1lLCB0aGVuIHN3aXRjaCB0byBhIHNsb3dlciBz bGVlcC13YWl0IGxvb3AuCi0JICogTm8gaW50ZV9ndWNfc2VuZCBjb21tYW5kIHNob3VsZCBldmVy IHRha2UgbG9uZ2VyIHRoYW4gMTBtcy4KKwkgKiBObyBpbnRlbF9ndWNfc2VuZCBjb21tYW5kIHNo b3VsZCBldmVyIHRha2UgbG9uZ2VyIHRoYW4gMTBtcy4KKwkgKgorCSAqIFVwZGF0ZWQ6IFRoZSAn cmVxdWVzdCBwcmUtZW1wdGlvbicgR3VDIGNvbW1hbmQgc2VlbXMgdG8gYXZlcmFnZSAxMjB1cwor CSAqIG5vdCA8MTB1cy4gVW5mb3J0dW5hdGVseSwgdGhlIHNlY29uZCBzbGVlcCBvcHRpb24gc2Vl bXMgdG8gaGF2ZSBhCisJICogbWluaW11bSBzdGFsbCB0aW1lIG9mIGFyb3VuZCA4bXMuIFRoYXQg Y2F1c2VzIGEgaHVnZSBpbmNyZWFzZSBpbgorCSAqIHByZS1lbXB0aW9uIGxhdGVuY3kgd2hpY2gg aXMgdW5hY2NlcHRhYmxlIGZvciBoaWdoIHByaW9yaXR5IHdvcmtsb2Fkcy4KIAkgKi8KLQlyZXQg PSB3YWl0X2Zvcl91cyhpbnRlbF9ndWNfcmVjdihndWMsICZzdGF0dXMpLCAxMCk7CisJZm9yIChp ID0gMDsgaSA8IGZhc3RfcmV0cnk7IGkrKykgeworCQlyZXQgPSB3YWl0X2Zvcl91cyhpbnRlbF9n dWNfcmVjdihndWMsICZzdGF0dXMpLCAxMCk7CisJCWlmIChyZXQgPT0gMCkKKwkJCWJyZWFrOwor CX0KIAlpZiAocmV0KQogCQlyZXQgPSB3YWl0X2ZvcihpbnRlbF9ndWNfcmVjdihndWMsICZzdGF0 dXMpLCAxMCk7CiAJaWYgKHN0YXR1cyAhPSBJTlRFTF9HVUNfU1RBVFVTX1NVQ0NFU1MpIHsKQEAg LTExMSw2ICsxMjEsNiBAQCBpbnQgaW50ZWxfZ3VjX3NhbXBsZV9mb3JjZXdha2Uoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQogCQkvKiBiaXQgMCBhbmQgMSBhcmUgZm9yIFJlbmRlciBhbmQgTWVkaWEg ZG9tYWluIHNlcGFyYXRlbHkgKi8KIAkJYWN0aW9uWzFdID0gR1VDX0ZPUkNFV0FLRV9SRU5ERVIg fCBHVUNfRk9SQ0VXQUtFX01FRElBOwogCi0JcmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0 aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOworCXJldHVybiBpbnRlbF9ndWNfc2VuZChndWMsIGFj dGlvbiwgQVJSQVlfU0laRShhY3Rpb24pLCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5oCmluZGV4IGE0NzI2OTIyMzUzMS4uYjc2NjA0ZGZiODJkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjLmgKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdHJ1Y3QgaW50ZWxfaHVjIHsKIAogLyogaW50ZWxf dWMuYyAqLwogdm9pZCBpbnRlbF91Y19pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Ci1pbnQgaW50ZWxfZ3VjX3NlbmQoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBj b25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbik7CitpbnQgaW50ZWxfZ3VjX3NlbmQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwgYm9vbCB1cmdlbnQpOwog aW50IGludGVsX2d1Y19zYW1wbGVfZm9yY2V3YWtlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CiAK IC8qIGludGVsX2d1Y19sb2FkZXIuYyAqLwotLSAKMi4xMy4wCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK