From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: [PATCH v3 4/4] drm/imx: ipuv3-plane: add support for separate alpha
planes
Date: Wed, 1 Mar 2017 10:01:57 +0100
Message-ID: <1488358917-15411-4-git-send-email-p.zabel@pengutronix.de>
References: <1488358917-15411-1-git-send-email-p.zabel@pengutronix.de>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de
[IPv6:2001:67c:670:201:290:27ff:fe1d:cc33])
by gabe.freedesktop.org (Postfix) with ESMTPS id 93FA16E8CF
for ; Wed, 1 Mar 2017 09:02:01 +0000 (UTC)
In-Reply-To: <1488358917-15411-1-git-send-email-p.zabel@pengutronix.de>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: dri-devel@lists.freedesktop.org
Cc: Daniel Vetter , kernel@pengutronix.de
List-Id: dri-devel@lists.freedesktop.org
VGhlIElQVXYzIGNhbiByZWFkIDgtYml0IGFscGhhIHZhbHVlcyBmcm9tIGEgc2VwYXJhdGUgcGxh
bmUgYnVmZmVyIHVzaW5nCmEgY29tcGFuaW9uIElETUFDIGNoYW5uZWwgZHJpdmVuIGJ5IHRoZSBB
bHBoYSBUcmFuc3BhcmVuY3kgQ29udHJvbGxlcgooQVRDKSBmb3IgdGhlIGdyYXBoaWNzIGNoYW5u
ZWxzLiBUaGUgY29uZGl0aW9uYWwgcmVhZCBtZWNoYW5pc20gYWxsb3dzCnRvIHJlZHVjZSBtZW1v
cnkgYmFuZHdpZHRoIGJ5IHNraXBwaW5nIHJlYWRzIG9mIGNvbG9yIGRhdGEgZm9yCmNvbXBsZXRl
bHkgdHJhbnNwYXJlbnQgYnVyc3RzLgoKU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBaYWJlbCA8cC56
YWJlbEBwZW5ndXRyb25peC5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5l
LmMgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMv
Z3B1L2RybS9pbXgvaXB1djMtcGxhbmUuaCB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgOTcgaW5z
ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p
bXgvaXB1djMtcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuYwppbmRl
eCA1M2VjZWZmMDlkMTc5Li5jZWNiOGViYTVjMzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k
cm0vaW14L2lwdXYzLXBsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1wbGFu
ZS5jCkBAIC01Nyw2ICs1NywxMiBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgaXB1X3BsYW5lX2Zv
cm1hdHNbXSA9IHsKIAlEUk1fRk9STUFUX05WMTIsCiAJRFJNX0ZPUk1BVF9OVjE2LAogCURSTV9G
T1JNQVRfUkdCNTY1LAorCURSTV9GT1JNQVRfUkdCNTY1X0E4LAorCURSTV9GT1JNQVRfQkdSNTY1
X0E4LAorCURSTV9GT1JNQVRfUkdCODg4X0E4LAorCURSTV9GT1JNQVRfQkdSODg4X0E4LAorCURS
TV9GT1JNQVRfUkdCWDg4ODhfQTgsCisJRFJNX0ZPUk1BVF9CR1JYODg4OF9BOCwKIH07CiAKIGlu
dCBpcHVfcGxhbmVfaXJxKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKQEAgLTEyNiwxMSAr
MTMyLDE0IEBAIHZvaWQgaXB1X3BsYW5lX3B1dF9yZXNvdXJjZXMoc3RydWN0IGlwdV9wbGFuZSAq
aXB1X3BsYW5lKQogCQlpcHVfZG1mY19wdXQoaXB1X3BsYW5lLT5kbWZjKTsKIAlpZiAoIUlTX0VS
Ul9PUl9OVUxMKGlwdV9wbGFuZS0+aXB1X2NoKSkKIAkJaXB1X2lkbWFjX3B1dChpcHVfcGxhbmUt
PmlwdV9jaCk7CisJaWYgKCFJU19FUlJfT1JfTlVMTChpcHVfcGxhbmUtPmFscGhhX2NoKSkKKwkJ
aXB1X2lkbWFjX3B1dChpcHVfcGxhbmUtPmFscGhhX2NoKTsKIH0KIAogaW50IGlwdV9wbGFuZV9n
ZXRfcmVzb3VyY2VzKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKIHsKIAlpbnQgcmV0Owor
CWludCBhbHBoYV9jaDsKIAogCWlwdV9wbGFuZS0+aXB1X2NoID0gaXB1X2lkbWFjX2dldChpcHVf
cGxhbmUtPmlwdSwgaXB1X3BsYW5lLT5kbWEpOwogCWlmIChJU19FUlIoaXB1X3BsYW5lLT5pcHVf
Y2gpKSB7CkBAIC0xMzksNiArMTQ4LDE3IEBAIGludCBpcHVfcGxhbmVfZ2V0X3Jlc291cmNlcyhz
dHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpCiAJCXJldHVybiByZXQ7CiAJfQogCisJYWxwaGFf
Y2ggPSBpcHVfY2hhbm5lbF9hbHBoYV9jaGFubmVsKGlwdV9wbGFuZS0+ZG1hKTsKKwlpZiAoYWxw
aGFfY2ggPj0gMCkgeworCQlpcHVfcGxhbmUtPmFscGhhX2NoID0gaXB1X2lkbWFjX2dldChpcHVf
cGxhbmUtPmlwdSwgYWxwaGFfY2gpOworCQlpZiAoSVNfRVJSKGlwdV9wbGFuZS0+YWxwaGFfY2gp
KSB7CisJCQlyZXQgPSBQVFJfRVJSKGlwdV9wbGFuZS0+YWxwaGFfY2gpOworCQkJRFJNX0VSUk9S
KCJmYWlsZWQgdG8gZ2V0IGFscGhhIGlkbWFjIGNoYW5uZWwgJWQ6ICVkXG4iLAorCQkJCSAgYWxw
aGFfY2gsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCiAJaXB1X3BsYW5lLT5kbWZj
ID0gaXB1X2RtZmNfZ2V0KGlwdV9wbGFuZS0+aXB1LCBpcHVfcGxhbmUtPmRtYSk7CiAJaWYgKElT
X0VSUihpcHVfcGxhbmUtPmRtZmMpKSB7CiAJCXJldCA9IFBUUl9FUlIoaXB1X3BsYW5lLT5kbWZj
KTsKQEAgLTE2MiwxMiArMTgyLDI5IEBAIGludCBpcHVfcGxhbmVfZ2V0X3Jlc291cmNlcyhzdHJ1
Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGJvb2wg
aXB1X3BsYW5lX3NlcGFyYXRlX2FscGhhKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFuZSkKK3sK
Kwlzd2l0Y2ggKGlwdV9wbGFuZS0+YmFzZS5zdGF0ZS0+ZmItPmZvcm1hdC0+Zm9ybWF0KSB7CisJ
Y2FzZSBEUk1fRk9STUFUX1JHQjU2NV9BODoKKwljYXNlIERSTV9GT1JNQVRfQkdSNTY1X0E4Ogor
CWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODhfQTg6CisJY2FzZSBEUk1fRk9STUFUX0JHUjg4OF9BODoK
KwljYXNlIERSTV9GT1JNQVRfUkdCWDg4ODhfQTg6CisJY2FzZSBEUk1fRk9STUFUX0JHUlg4ODg4
X0E4OgorCQlyZXR1cm4gdHJ1ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQor
CiBzdGF0aWMgdm9pZCBpcHVfcGxhbmVfZW5hYmxlKHN0cnVjdCBpcHVfcGxhbmUgKmlwdV9wbGFu
ZSkKIHsKIAlpZiAoaXB1X3BsYW5lLT5kcCkKIAkJaXB1X2RwX2VuYWJsZShpcHVfcGxhbmUtPmlw
dSk7CiAJaXB1X2RtZmNfZW5hYmxlX2NoYW5uZWwoaXB1X3BsYW5lLT5kbWZjKTsKIAlpcHVfaWRt
YWNfZW5hYmxlX2NoYW5uZWwoaXB1X3BsYW5lLT5pcHVfY2gpOworCWlmIChpcHVfcGxhbmVfc2Vw
YXJhdGVfYWxwaGEoaXB1X3BsYW5lKSkKKwkJaXB1X2lkbWFjX2VuYWJsZV9jaGFubmVsKGlwdV9w
bGFuZS0+YWxwaGFfY2gpOwogCWlmIChpcHVfcGxhbmUtPmRwKQogCQlpcHVfZHBfZW5hYmxlX2No
YW5uZWwoaXB1X3BsYW5lLT5kcCk7CiB9CkBAIC0xODEsNiArMjE4LDggQEAgdm9pZCBpcHVfcGxh
bmVfZGlzYWJsZShzdHJ1Y3QgaXB1X3BsYW5lICppcHVfcGxhbmUsIGJvb2wgZGlzYWJsZV9kcF9j
aGFubmVsKQogCWlmIChpcHVfcGxhbmUtPmRwICYmIGRpc2FibGVfZHBfY2hhbm5lbCkKIAkJaXB1
X2RwX2Rpc2FibGVfY2hhbm5lbChpcHVfcGxhbmUtPmRwLCBmYWxzZSk7CiAJaXB1X2lkbWFjX2Rp
c2FibGVfY2hhbm5lbChpcHVfcGxhbmUtPmlwdV9jaCk7CisJaWYgKGlwdV9wbGFuZS0+YWxwaGFf
Y2gpCisJCWlwdV9pZG1hY19kaXNhYmxlX2NoYW5uZWwoaXB1X3BsYW5lLT5hbHBoYV9jaCk7CiAJ
aXB1X2RtZmNfZGlzYWJsZV9jaGFubmVsKGlwdV9wbGFuZS0+ZG1mYyk7CiAJaWYgKGlwdV9wbGFu
ZS0+ZHApCiAJCWlwdV9kcF9kaXNhYmxlKGlwdV9wbGFuZS0+aXB1KTsKQEAgLTIyNCw3ICsyNjMs
NyBAQCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq
cGxhbmUsCiAJc3RydWN0IGRldmljZSAqZGV2ID0gcGxhbmUtPmRldi0+ZGV2OwogCXN0cnVjdCBk
cm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmZiOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg
Km9sZF9mYiA9IG9sZF9zdGF0ZS0+ZmI7Ci0JdW5zaWduZWQgbG9uZyBlYmEsIHVibywgdmJvLCBv
bGRfdWJvLCBvbGRfdmJvOworCXVuc2lnbmVkIGxvbmcgZWJhLCB1Ym8sIHZibywgb2xkX3Vibywg
b2xkX3ZibywgYWxwaGFfZWJhOwogCWJvb2wgY2FuX3Bvc2l0aW9uID0gKHBsYW5lLT50eXBlID09
IERSTV9QTEFORV9UWVBFX09WRVJMQVkpOwogCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwogCWludCBo
c3ViLCB2c3ViOwpAQCAtMzU1LDYgKzM5NCwyMyBAQCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9t
aWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCWlmICgoKHN0YXRlLT5zcmMueDEg
Pj4gMTYpICYgKGhzdWIgLSAxKSkgfHwKIAkJICAgICgoc3RhdGUtPnNyYy55MSA+PiAxNikgJiAo
dnN1YiAtIDEpKSkKIAkJCXJldHVybiAtRUlOVkFMOworCQlicmVhazsKKwljYXNlIERSTV9GT1JN
QVRfUkdCNTY1X0E4OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjVfQTg6CisJY2FzZSBEUk1fRk9S
TUFUX1JHQjg4OF9BODoKKwljYXNlIERSTV9GT1JNQVRfQkdSODg4X0E4OgorCWNhc2UgRFJNX0ZP
Uk1BVF9SR0JYODg4OF9BODoKKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODhfQTg6CisJCWFscGhh
X2ViYSA9IGRybV9wbGFuZV9zdGF0ZV90b19lYmEoc3RhdGUsIDEpOworCQlpZiAoYWxwaGFfZWJh
ICYgMHg3KQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJaWYgKGZiLT5waXRjaGVzWzFdIDwgMSB8
fCBmYi0+cGl0Y2hlc1sxXSA+IDE2Mzg0KQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJaWYgKG9s
ZF9mYiAmJiBvbGRfZmItPnBpdGNoZXNbMV0gIT0gZmItPnBpdGNoZXNbMV0pCisJCQljcnRjX3N0
YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCQlicmVhazsKIAl9CiAKIAlyZXR1cm4gMDsKQEAg
LTM3OSw2ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCBpcHVfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1
Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRl
LT5mYjsKIAlzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9ICZzdGF0ZS0+ZHN0OwogCXVuc2lnbmVkIGxv
bmcgZWJhLCB1Ym8sIHZibzsKKwl1bnNpZ25lZCBsb25nIGFscGhhX2ViYSA9IDA7CiAJZW51bSBp
cHVfY29sb3Jfc3BhY2UgaWNzOwogCWludCBhY3RpdmU7CiAKQEAgLTM5MSw2ICs0NDgsMTIgQEAg
c3RhdGljIHZvaWQgaXB1X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh
bmUsCiAJCWFjdGl2ZSA9IGlwdV9pZG1hY19nZXRfY3VycmVudF9idWZmZXIoaXB1X3BsYW5lLT5p
cHVfY2gpOwogCQlpcHVfY3BtZW1fc2V0X2J1ZmZlcihpcHVfcGxhbmUtPmlwdV9jaCwgIWFjdGl2
ZSwgZWJhKTsKIAkJaXB1X2lkbWFjX3NlbGVjdF9idWZmZXIoaXB1X3BsYW5lLT5pcHVfY2gsICFh
Y3RpdmUpOworCQlpZiAoaXB1X3BsYW5lX3NlcGFyYXRlX2FscGhhKGlwdV9wbGFuZSkpIHsKKwkJ
CWFjdGl2ZSA9IGlwdV9pZG1hY19nZXRfY3VycmVudF9idWZmZXIoaXB1X3BsYW5lLT5hbHBoYV9j
aCk7CisJCQlpcHVfY3BtZW1fc2V0X2J1ZmZlcihpcHVfcGxhbmUtPmFscGhhX2NoLCAhYWN0aXZl
LAorCQkJCQkgICAgIGFscGhhX2ViYSk7CisJCQlpcHVfaWRtYWNfc2VsZWN0X2J1ZmZlcihpcHVf
cGxhbmUtPmFscGhhX2NoLCAhYWN0aXZlKTsKKwkJfQogCQlyZXR1cm47CiAJfQogCkBAIC00MTYs
NiArNDc5LDEyIEBAIHN0YXRpYyB2b2lkIGlwdV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBk
cm1fcGxhbmUgKnBsYW5lLAogCQljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6CiAJCWNhc2UgRFJN
X0ZPUk1BVF9SR0JBODg4ODoKIAkJY2FzZSBEUk1fRk9STUFUX0JHUkE4ODg4OgorCQljYXNlIERS
TV9GT1JNQVRfUkdCNTY1X0E4OgorCQljYXNlIERSTV9GT1JNQVRfQkdSNTY1X0E4OgorCQljYXNl
IERSTV9GT1JNQVRfUkdCODg4X0E4OgorCQljYXNlIERSTV9GT1JNQVRfQkdSODg4X0E4OgorCQlj
YXNlIERSTV9GT1JNQVRfUkdCWDg4ODhfQTg6CisJCWNhc2UgRFJNX0ZPUk1BVF9CR1JYODg4OF9B
ODoKIAkJCWlwdV9kcF9zZXRfZ2xvYmFsX2FscGhhKGlwdV9wbGFuZS0+ZHAsIGZhbHNlLCAwLCBm
YWxzZSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTQ2Niw2ICs1MzUsMzIgQEAgc3RhdGlj
IHZvaWQgaXB1X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ
CQkicGh5ID0gJWx1ICVsdSwgeCA9ICVkLCB5ID0gJWQiLCBlYmEsIHVibywKIAkJCXN0YXRlLT5z
cmMueDEgPj4gMTYsIHN0YXRlLT5zcmMueTEgPj4gMTYpOwogCQlicmVhazsKKwljYXNlIERSTV9G
T1JNQVRfUkdCNTY1X0E4OgorCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjVfQTg6CisJY2FzZSBEUk1f
Rk9STUFUX1JHQjg4OF9BODoKKwljYXNlIERSTV9GT1JNQVRfQkdSODg4X0E4OgorCWNhc2UgRFJN
X0ZPUk1BVF9SR0JYODg4OF9BODoKKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODhfQTg6CisJCWFs
cGhhX2ViYSA9IGRybV9wbGFuZV9zdGF0ZV90b19lYmEoc3RhdGUsIDEpOworCisJCWRldl9kYmco
aXB1X3BsYW5lLT5iYXNlLmRldi0+ZGV2LCAicGh5cyA9ICVsdSAlbHUsIHggPSAlZCwgeSA9ICVk
IiwKKwkJCWViYSwgYWxwaGFfZWJhLCBzdGF0ZS0+c3JjLngxID4+IDE2LCBzdGF0ZS0+c3JjLnkx
ID4+IDE2KTsKKworCQlpcHVfY3BtZW1fc2V0X2J1cnN0c2l6ZShpcHVfcGxhbmUtPmlwdV9jaCwg
MTYpOworCisJCWlwdV9jcG1lbV96ZXJvKGlwdV9wbGFuZS0+YWxwaGFfY2gpOworCQlpcHVfY3Bt
ZW1fc2V0X3Jlc29sdXRpb24oaXB1X3BsYW5lLT5hbHBoYV9jaCwKKwkJCQkJIGRybV9yZWN0X3dp
ZHRoKCZzdGF0ZS0+c3JjKSA+PiAxNiwKKwkJCQkJIGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPnNy
YykgPj4gMTYpOworCQlpcHVfY3BtZW1fc2V0X2Zvcm1hdF9wYXNzdGhyb3VnaChpcHVfcGxhbmUt
PmFscGhhX2NoLCA4KTsKKwkJaXB1X2NwbWVtX3NldF9oaWdoX3ByaW9yaXR5KGlwdV9wbGFuZS0+
YWxwaGFfY2gpOworCQlpcHVfaWRtYWNfc2V0X2RvdWJsZV9idWZmZXIoaXB1X3BsYW5lLT5hbHBo
YV9jaCwgMSk7CisJCWlwdV9jcG1lbV9zZXRfc3RyaWRlKGlwdV9wbGFuZS0+YWxwaGFfY2gsCisJ
CQkJICAgICBzdGF0ZS0+ZmItPnBpdGNoZXNbMV0pOworCQlpcHVfY3BtZW1fc2V0X2J1cnN0c2l6
ZShpcHVfcGxhbmUtPmFscGhhX2NoLCAxNik7CisJCWlwdV9jcG1lbV9zZXRfYnVmZmVyKGlwdV9w
bGFuZS0+YWxwaGFfY2gsIDAsIGFscGhhX2ViYSk7CisJCWlwdV9jcG1lbV9zZXRfYnVmZmVyKGlw
dV9wbGFuZS0+YWxwaGFfY2gsIDEsIGFscGhhX2ViYSk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJ
CWRldl9kYmcoaXB1X3BsYW5lLT5iYXNlLmRldi0+ZGV2LCAicGh5cyA9ICVsdSwgeCA9ICVkLCB5
ID0gJWQiLAogCQkJZWJhLCBzdGF0ZS0+c3JjLngxID4+IDE2LCBzdGF0ZS0+c3JjLnkxID4+IDE2
KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuaCBiL2RyaXZl
cnMvZ3B1L2RybS9pbXgvaXB1djMtcGxhbmUuaAppbmRleCAwZTJhNzIzZmY5ODE2Li41OTZiMjRk
ZGJmNjU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmgKKysr
IGIvZHJpdmVycy9ncHUvZHJtL2lteC9pcHV2My1wbGFuZS5oCkBAIC0xOCw2ICsxOCw3IEBAIHN0
cnVjdCBpcHVfcGxhbmUgewogCiAJc3RydWN0IGlwdV9zb2MJCSppcHU7CiAJc3RydWN0IGlwdXYz
X2NoYW5uZWwJKmlwdV9jaDsKKwlzdHJ1Y3QgaXB1djNfY2hhbm5lbAkqYWxwaGFfY2g7CiAJc3Ry
dWN0IGRtZmNfY2hhbm5lbAkqZG1mYzsKIAlzdHJ1Y3QgaXB1X2RwCQkqZHA7CiAKLS0gCjIuMTEu
MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl
dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v
bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==