From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [PATCH 57/59] drm/i915: Update a bunch of LRC functions to take requests Date: Thu, 19 Mar 2015 12:31:02 +0000 Message-ID: <1426768264-16996-58-git-send-email-John.C.Harrison@Intel.com> References: <1426768264-16996-1-git-send-email-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 ESMTP id 2C1766EA39 for ; Thu, 19 Mar 2015 05:32:17 -0700 (PDT) In-Reply-To: <1426768264-16996-1-git-send-email-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KCkEgYnVuY2gg b2YgdGhlIGxvdyBsZXZlbCBMUkMgZnVuY3Rpb25zIHdlcmUgcGFzc2luZyBhcm91bmQgcmluZ2J1 ZiBhbmQgY3R4CnBhaXJzLiBJbiBhIGZldyBjYXNlcywgdGhleSB0b29rIHRoZSByL2MgcGFpciBh bmQgYSByZXF1ZXN0IGFzIHdlbGwuIFRoaXMgaXMgYWxsCnF1aXRlIG1lc3N5IGFuZCB1bm5lY2Vz YXJ5LiBUaGUgY29udGV4dF9xdWV1ZSgpIGNhbGwgaXMgZXNwZWNpYWxseSBiYWQgc2luY2UgdGhl CmZha2UgcmVxdWVzdCBjb2RlIGdvdCByZW1vdmVkIC0gaXQgdGFrZXMgYSByZXF1ZXN0IGFuZCB0 aHJlZSBleHRyYSB0aGluZ3MgdGhhdAptdXN0IGJlIGV4dHJhY3RlZCBmcm9tIHRoZSByZXF1ZXN0 IGFuZCB0aGVuIGl0IGNoZWNrcyB0aGVtIGFnYWluc3Qgd2hhdCBpdCBmaW5kcwppbiB0aGUgcmVx dWVzdC4gUmVtb3ZpbmcgYWxsIHRoZSBkZXJpdmFibGUgZGF0YSBtYWtlcyB0aGUgY29kZSBtdWNo IHNpbXBsZXIgYWxsCnJvdW5kLgoKVGhpcyBwYXRjaCB1cGRhdGVzIHRob3NlIGZ1bmN0aW9ucyB0 byBqdXN0IHRha2UgdGhlIHJlcXVlc3Qgc3RydWN0dXJlLgoKRm9yOiBWSVotNTExNQpTaWduZWQt b2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgICA2NiArKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDM3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggODIxOTBhZC4uYWUw MDA1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTQ5NCwyNSArNDk0LDIwIEBAIHZv aWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJ CSAgICgodTMyKXJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyICYgMHgwNykgPDwgOCk7 CiB9CiAKLXN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKLQkJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqdG8sCi0JCQkJICAg dTMyIHRhaWwsCi0JCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQor c3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QpCiB7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcXVl c3QtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpjdXJzb3I7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBudW1fZWxlbWVudHMgPSAwOwogCi0JaWYgKHRvICE9 IHJpbmctPmRlZmF1bHRfY29udGV4dCkKLQkJaW50ZWxfbHJfY29udGV4dF9waW4ocmluZywgdG8p OwotCi0JV0FSTl9PTighcmVxdWVzdCk7Ci0JV0FSTl9PTih0byAhPSByZXF1ZXN0LT5jdHgpOwor CWlmIChyZXF1ZXN0LT5jdHggIT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KQorCQlpbnRlbF9scl9j b250ZXh0X3BpbihyaW5nLCByZXF1ZXN0LT5jdHgpOwogCiAJaTkxNV9nZW1fcmVxdWVzdF9yZWZl cmVuY2UocmVxdWVzdCk7CiAKLQlyZXF1ZXN0LT50YWlsID0gdGFpbDsKKwlyZXF1ZXN0LT50YWls ID0gcmVxdWVzdC0+cmluZ2J1Zi0+dGFpbDsKIAogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKIApAQCAtNTI5LDcgKzUyNCw3IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRf cXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkJCQkJICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0LAogCQkJCQkgICBleGVjbGlzdF9saW5rKTsKIAotCQlpZiAodG8gPT0g dGFpbF9yZXEtPmN0eCkgeworCQlpZiAocmVxdWVzdC0+Y3R4ID09IHRhaWxfcmVxLT5jdHgpIHsK IAkJCVdBUk4odGFpbF9yZXEtPmVsc3Bfc3VibWl0dGVkICE9IDAsCiAJCQkJIk1vcmUgdGhhbiAy IGFscmVhZHktc3VibWl0dGVkIHJlcXMgcXVldWVkXG4iKTsKIAkJCWxpc3RfZGVsKCZ0YWlsX3Jl cS0+ZXhlY2xpc3RfbGluayk7CkBAIC02MTAsMTIgKzYwNSwxMiBAQCBpbnQgaW50ZWxfbG9naWNh bF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X2Zv cl9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKLQkJCQkgICAgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCwKK3N0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9y X3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJCSAgICAgICBpbnQg Ynl0ZXMpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7 Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0OworCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOworCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcgPSByZXEtPnJpbmc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0YXJn ZXQ7CiAJaW50IHJldCwgbmV3X3NwYWNlOwogCiAJLyogVGhlIHdob2xlIHBvaW50IG9mIHJlc2Vy dmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KQEAgLTYyNCwzMCArNjE5LDMwIEBAIHN0YXRp YyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmLAogCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQogCQly ZXR1cm4gMDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJlcXVlc3Rf bGlzdCwgbGlzdCkgeworCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAmcmluZy0+cmVxdWVz dF9saXN0LCBsaXN0KSB7CiAJCS8qCiAJCSAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlzIHBlci1lbmdp bmUsIHNvIGNhbiBjb250YWluIHJlcXVlc3RzCiAJCSAqIGZyb20gbXVsdGlwbGUgcmluZ2J1ZmZl cnMuIEhlcmUsIHdlIG11c3QgaWdub3JlIGFueSB0aGF0CiAJCSAqIGFyZW4ndCBmcm9tIHRoZSBy aW5nYnVmZmVyIHdlJ3JlIGNvbnNpZGVyaW5nLgogCQkgKi8KLQkJc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCA9IHJlcXVlc3QtPmN0eDsKKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHRh cmdldC0+Y3R4OwogCQlpZiAoY3R4LT5lbmdpbmVbcmluZy0+aWRdLnJpbmdidWYgIT0gcmluZ2J1 ZikKIAkJCWNvbnRpbnVlOwogCiAJCS8qIFdvdWxkIGNvbXBsZXRpb24gb2YgdGhpcyByZXF1ZXN0 IGZyZWUgZW5vdWdoIHNwYWNlPyAqLwotCQluZXdfc3BhY2UgPSBfX2ludGVsX3Jpbmdfc3BhY2Uo cmVxdWVzdC0+cG9zdGZpeCwgcmluZ2J1Zi0+dGFpbCwKKwkJbmV3X3NwYWNlID0gX19pbnRlbF9y aW5nX3NwYWNlKHRhcmdldC0+cG9zdGZpeCwgcmluZ2J1Zi0+dGFpbCwKIAkJCQkgICAgICAgcmlu Z2J1Zi0+c2l6ZSk7CiAJCWlmIChuZXdfc3BhY2UgPj0gYnl0ZXMpCiAJCQlicmVhazsKIAl9CiAK IAkvKiBJdCBzaG91bGQgYWx3YXlzIGJlIHBvc3NpYmxlIHRvIGZpbmQgYSBzdWl0YWJsZSByZXF1 ZXN0ISAqLwotCWlmICgmcmVxdWVzdC0+bGlzdCA9PSAmcmluZy0+cmVxdWVzdF9saXN0KSB7CisJ aWYgKCZ0YXJnZXQtPmxpc3QgPT0gJnJpbmctPnJlcXVlc3RfbGlzdCkgewogCQlXQVJOX09OKHRy dWUpOwogCQlyZXR1cm4gLUVOT1NQQzsKIAl9CiAKLQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChy ZXF1ZXN0KTsKKwlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdCh0YXJnZXQpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKQEAgLTY2MCw3ICs2NTUsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmlu Z193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKIAogLyoK ICAqIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoKSAtIGFkdmFuY2UgdGhl IHRhaWwgYW5kIHN1Ym1pdCB0aGUgd29ya2xvYWQKLSAqIEByaW5nYnVmOiBMb2dpY2FsIFJpbmdi dWZmZXIgdG8gYWR2YW5jZS4KKyAqIEByZXF1ZXN0OiBSZXF1ZXN0IHRvIGFkdmFuY2UgdGhlIGxv Z2ljYWwgcmluZ2J1ZmZlciBvZi4KICAqCiAgKiBUaGUgdGFpbCBpcyB1cGRhdGVkIGluIG91ciBs b2dpY2FsIHJpbmdidWZmZXIgc3RydWN0LCBub3QgaW4gdGhlIGFjdHVhbCBjb250ZXh0LiBXaGF0 CiAgKiByZWFsbHkgaGFwcGVucyBkdXJpbmcgc3VibWlzc2lvbiBpcyB0aGF0IHRoZSBjb250ZXh0 IGFuZCBjdXJyZW50IHRhaWwgd2lsbCBiZSBwbGFjZWQKQEAgLTY2OCwyMyArNjYzLDIxIEBAIHN0 YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLAogICogcG9pbnQsIHRoZSB0YWlsICppbnNpZGUqIHRoZSBjb250ZXh0IGlz IHVwZGF0ZWQgYW5kIHRoZSBFTFNQIHdyaXR0ZW4gdG8uCiAgKi8KIHN0YXRpYyB2b2lkCi1pbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmLAotCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCi0JCQkJICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQoraW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3QpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CiAKLQlpbnRlbF9s b2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5j ZShyZXF1ZXN0LT5yaW5nYnVmKTsKIAogCWlmIChpbnRlbF9yaW5nX3N0b3BwZWQocmluZykpCiAJ CXJldHVybjsKIAotCWV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHJpbmcsIGN0eCwgcmluZ2J1Zi0+ dGFpbCwgcmVxdWVzdCk7CisJZXhlY2xpc3RzX2NvbnRleHRfcXVldWUocmVxdWVzdCk7CiB9CiAK LXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVyKHN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmLAotCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQorc3RhdGlj IGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCiB7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdi dWY7CiAJdWludDMyX3QgX19pb21lbSAqdmlydDsKIAlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAt IHJpbmdidWYtPnRhaWw7CiAKQEAgLTY5Miw3ICs2ODUsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxf cmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKIAlXQVJO X09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7CiAKIAlpZiAocmluZ2J1Zi0+c3BhY2UgPCBy ZW0pIHsKLQkJaW50IHJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShyaW5nYnVmLCBj dHgsIHJlbSk7CisJCWludCByZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmVxLCBy ZW0pOwogCiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtNzA5LDIyICs3MDIsMjIgQEAg c3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3By ZXBhcmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCi0JCQkJc3RydWN0IGludGVs X2NvbnRleHQgKmN0eCwgaW50IGJ5dGVzKQorc3RhdGljIGludCBsb2dpY2FsX3JpbmdfcHJlcGFy ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQogeworCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwogCWludCByZXQ7CiAK IAlpZiAoIXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSkKIAkJYnl0ZXMgKz0gcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZTsKIAogCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0ZXMgPiByaW5n YnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKLQkJcmV0ID0gbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVy KHJpbmdidWYsIGN0eCk7CisJCXJldCA9IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihyZXEpOwog CQlpZiAodW5saWtlbHkocmV0KSkKIAkJCXJldHVybiByZXQ7CiAJfQogCiAJaWYgKHVubGlrZWx5 KHJpbmdidWYtPnNwYWNlIDwgYnl0ZXMpKSB7Ci0JCXJldCA9IGxvZ2ljYWxfcmluZ193YWl0X2Zv cl9zcGFjZShyaW5nYnVmLCBjdHgsIGJ5dGVzKTsKKwkJcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRf Zm9yX3NwYWNlKHJlcSwgYnl0ZXMpOwogCQlpZiAodW5saWtlbHkocmV0KSkKIAkJCXJldHVybiBy ZXQ7CiAJfQpAQCAtNzU5LDggKzc1Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5n X2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKLQlyZXQgPSBsb2dpY2FsX3JpbmdfcHJlcGFyZShyZXEtPnJpbmdidWYsIHJl cS0+Y3R4LAotCQkJCSAgIG51bV9kd29yZHMgKiBzaXplb2YodWludDMyX3QpKTsKKwlyZXQgPSBs b2dpY2FsX3JpbmdfcHJlcGFyZShyZXEsIG51bV9kd29yZHMgKiBzaXplb2YodWludDMyX3QpKTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMjY2LDcgKzEyNTgsNyBAQCBzdGF0aWMg aW50IGdlbjhfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCkKIAlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9zZXFubyhyZXF1ZXN0KSk7CiAJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf VVNFUl9JTlRFUlJVUFQpOwogCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05P T1ApOwotCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQocmluZ2J1ZiwgcmVx dWVzdC0+Y3R4LCByZXF1ZXN0KTsKKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3Vi bWl0KHJlcXVlc3QpOwogCiAJcmV0dXJuIDA7CiB9Ci0tIAoxLjcuOS41CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=