From: Jordan Crouse Subject: [PATCH 08/11] drm/msm: Add a common function to free kernel buffer objects Date: Wed, 17 Oct 2018 10:28:15 -0600 Message-ID: <20181017162818.8498-9-jcrouse@codeaurora.org> References: <20181017162818.8498-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181017162818.8498-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org QnVmZmVyIG9iamVjdHMgYWxsb2NhdGVkIHdpdGggbXNtX2dlbV9rZXJuZWxfbmV3KCkgYXJlIG1v c3RseQpmcmVlZCB0aGUgc2FtZSB3YXkgc28gd2UgY2FuIHNhdmUgYSBmZXcgbGluZXMgb2YgY29k ZSB3aXRoIGEKY29tbW9uIGZ1bmN0aW9uLgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8 amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9h NXh4X2dwdS5jICAgICAgIHwgMTMgKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYTV4eF9wb3dlci5jICAgICB8IDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tc20vYWRyZW5vL2E1eHhfcHJlZW1wdC5jICAgfCAxNCArKy0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHVfc3RhdGUuYyB8IDExICstLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAgICAgIHwgIDIgKysKIGRyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jICAgICAgICAgICAgICAgfCAxNSArKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgICAgICAgfCAxMiArKy0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYyAgICAgICAgfCAg NyArKy0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCmluZGV4IDJmMjFhNTU5YjE1 Yy4uODI5ZDEyYjE4ZjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9h NXh4X2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMKQEAg LTEyMjMsMTUgKzEyMjMsNiBAQCBzdGF0aWMgaW50IGE1eHhfY3Jhc2hkdW1wZXJfaW5pdChzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBhNXh4X2NyYXNo ZHVtcGVyX2ZyZWUoc3RydWN0IG1zbV9ncHUgKmdwdSwKLQkJc3RydWN0IGE1eHhfY3Jhc2hkdW1w ZXIgKmR1bXBlcikKLXsKLQltc21fZ2VtX3B1dF9pb3ZhKGR1bXBlci0+Ym8sIGdwdS0+YXNwYWNl KTsKLQltc21fZ2VtX3B1dF92YWRkcihkdW1wZXItPmJvKTsKLQotCWRybV9nZW1fb2JqZWN0X3B1 dChkdW1wZXItPmJvKTsKLX0KLQogc3RhdGljIGludCBhNXh4X2NyYXNoZHVtcGVyX3J1bihzdHJ1 Y3QgbXNtX2dwdSAqZ3B1LAogCQlzdHJ1Y3QgYTV4eF9jcmFzaGR1bXBlciAqZHVtcGVyKQogewpA QCAtMTMyNCw3ICsxMzE1LDcgQEAgc3RhdGljIHZvaWQgYTV4eF9ncHVfc3RhdGVfZ2V0X2hsc3Ff cmVncyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LAogCiAJaWYgKGE1eHhfY3Jhc2hkdW1wZXJfcnVuKGdw dSwgJmR1bXBlcikpIHsKIAkJa2ZyZWUoYTV4eF9zdGF0ZS0+aGxzcXJlZ3MpOwotCQlhNXh4X2Ny YXNoZHVtcGVyX2ZyZWUoZ3B1LCAmZHVtcGVyKTsKKwkJbXNtX2dlbV9rZXJuZWxfcHV0KGR1bXBl ci5ibywgZ3B1LT5hc3BhY2UsIHRydWUpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMzMyLDcgKzEz MjMsNyBAQCBzdGF0aWMgdm9pZCBhNXh4X2dwdV9zdGF0ZV9nZXRfaGxzcV9yZWdzKHN0cnVjdCBt c21fZ3B1ICpncHUsCiAJbWVtY3B5KGE1eHhfc3RhdGUtPmhsc3FyZWdzLCBkdW1wZXIucHRyICsg KDI1NiAqIFNaXzFLKSwKIAkJY291bnQgKiBzaXplb2YodTMyKSk7CiAKLQlhNXh4X2NyYXNoZHVt cGVyX2ZyZWUoZ3B1LCAmZHVtcGVyKTsKKwltc21fZ2VtX2tlcm5lbF9wdXQoZHVtcGVyLmJvLCBn cHUtPmFzcGFjZSwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbXNtX2dwdV9zdGF0ZSAqYTV4 eF9ncHVfc3RhdGVfZ2V0KHN0cnVjdCBtc21fZ3B1ICpncHUpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3Bvd2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Fk cmVuby9hNXh4X3Bvd2VyLmMKaW5kZXggN2E0MWUxYzE0N2U0Li42NmJjZDg4ZGQ4YzAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vYWRyZW5vL2E1eHhfcG93ZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3Bvd2VyLmMKQEAgLTI5OCw3ICsyOTgsNyBAQCB2 b2lkIGE1eHhfZ3BtdV91Y29kZV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCiAJCU1TTV9CT19V TkNBQ0hFRCB8IE1TTV9CT19HUFVfUkVBRE9OTFksIGdwdS0+YXNwYWNlLAogCQkmYTV4eF9ncHUt PmdwbXVfYm8sICZhNXh4X2dwdS0+Z3BtdV9pb3ZhKTsKIAlpZiAoSVNfRVJSKHB0cikpCi0JCWdv dG8gZXJyOworCQlyZXR1cm47CiAKIAl3aGlsZSAoY21kc19zaXplID4gMCkgewogCQlpbnQgaTsK QEAgLTMxNywxNSArMzE3LDQgQEAgdm9pZCBhNXh4X2dwbXVfdWNvZGVfaW5pdChzdHJ1Y3QgbXNt X2dwdSAqZ3B1KQogCiAJbXNtX2dlbV9wdXRfdmFkZHIoYTV4eF9ncHUtPmdwbXVfYm8pOwogCWE1 eHhfZ3B1LT5ncG11X2R3b3JkcyA9IGR3b3JkczsKLQotCXJldHVybjsKLWVycjoKLQlpZiAoYTV4 eF9ncHUtPmdwbXVfaW92YSkKLQkJbXNtX2dlbV9wdXRfaW92YShhNXh4X2dwdS0+Z3BtdV9ibywg Z3B1LT5hc3BhY2UpOwotCWlmIChhNXh4X2dwdS0+Z3BtdV9ibykKLQkJZHJtX2dlbV9vYmplY3Rf cHV0KGE1eHhfZ3B1LT5ncG11X2JvKTsKLQotCWE1eHhfZ3B1LT5ncG11X2JvID0gTlVMTDsKLQlh NXh4X2dwdS0+Z3BtdV9pb3ZhID0gMDsKLQlhNXh4X2dwdS0+Z3BtdV9kd29yZHMgPSAwOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wcmVlbXB0LmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X3ByZWVtcHQuYwppbmRleCA0YzM1N2VhZDFi ZTYuLjhhMzcxNjAyY2IxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8v YTV4eF9wcmVlbXB0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9wcmVl bXB0LmMKQEAgLTI2NywxOCArMjY3LDggQEAgdm9pZCBhNXh4X3ByZWVtcHRfZmluaShzdHJ1Y3Qg bXNtX2dwdSAqZ3B1KQogCXN0cnVjdCBhNXh4X2dwdSAqYTV4eF9ncHUgPSB0b19hNXh4X2dwdShh ZHJlbm9fZ3B1KTsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBp KyspIHsKLQkJaWYgKCFhNXh4X2dwdS0+cHJlZW1wdF9ib1tpXSkKLQkJCWNvbnRpbnVlOwotCi0J CW1zbV9nZW1fcHV0X3ZhZGRyKGE1eHhfZ3B1LT5wcmVlbXB0X2JvW2ldKTsKLQotCQlpZiAoYTV4 eF9ncHUtPnByZWVtcHRfaW92YVtpXSkKLQkJCW1zbV9nZW1fcHV0X2lvdmEoYTV4eF9ncHUtPnBy ZWVtcHRfYm9baV0sIGdwdS0+YXNwYWNlKTsKLQotCQlkcm1fZ2VtX29iamVjdF9wdXQoYTV4eF9n cHUtPnByZWVtcHRfYm9baV0pOwotCQlhNXh4X2dwdS0+cHJlZW1wdF9ib1tpXSA9IE5VTEw7Ci0J fQorCWZvciAoaSA9IDA7IGkgPCBncHUtPm5yX3JpbmdzOyBpKyspCisJCW1zbV9nZW1fa2VybmVs X3B1dChhNXh4X2dwdS0+cHJlZW1wdF9ib1tpXSwgZ3B1LT5hc3BhY2UsIHRydWUpOwogfQogCiB2 b2lkIGE1eHhfcHJlZW1wdF9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dwdV9zdGF0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHVfc3RhdGUuYwppbmRleCBkNDZiOTQ0NjJiYjUuLjg5ZDcx M2E5NzlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTZ4eF9ncHVf c3RhdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNnh4X2dwdV9zdGF0ZS5j CkBAIC0xMjAsMTUgKzEyMCw2IEBAIHN0YXRpYyBpbnQgYTZ4eF9jcmFzaGR1bXBlcl9ydW4oc3Ry dWN0IG1zbV9ncHUgKmdwdSwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBhNnh4X2Ny YXNoZHVtcGVyX2ZyZWUoc3RydWN0IG1zbV9ncHUgKmdwdSwKLQkJc3RydWN0IGE2eHhfY3Jhc2hk dW1wZXIgKmR1bXBlcikKLXsKLQltc21fZ2VtX3B1dF9pb3ZhKGR1bXBlci0+Ym8sIGdwdS0+YXNw YWNlKTsKLQltc21fZ2VtX3B1dF92YWRkcihkdW1wZXItPmJvKTsKLQotCWRybV9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlKGR1bXBlci0+Ym8pOwotfQotCiAvKiByZWFkIGEgdmFsdWUgZnJvbSB0aGUg R1ggZGVidWcgYnVzICovCiBzdGF0aWMgaW50IGRlYnVnYnVzX3JlYWQoc3RydWN0IG1zbV9ncHUg KmdwdSwgdTMyIGJsb2NrLCB1MzIgb2Zmc2V0LAogCQl1MzIgKmRhdGEpCkBAIC04NDYsNyArODM3 LDcgQEAgc3RydWN0IG1zbV9ncHVfc3RhdGUgKmE2eHhfZ3B1X3N0YXRlX2dldChzdHJ1Y3QgbXNt X2dwdSAqZ3B1KQogCQlhNnh4X2dldF9jbHVzdGVycyhncHUsIGE2eHhfc3RhdGUsICZkdW1wZXIp OwogCQlhNnh4X2dldF9kYmdhaGJfY2x1c3RlcnMoZ3B1LCBhNnh4X3N0YXRlLCAmZHVtcGVyKTsK IAotCQlhNnh4X2NyYXNoZHVtcGVyX2ZyZWUoZ3B1LCAmZHVtcGVyKTsKKwkJbXNtX2dlbV9rZXJu ZWxfcHV0KGR1bXBlci5ibywgZ3B1LT5hc3BhY2UsIHRydWUpOwogCX0KIAogCWE2eHhfZ2V0X2Rl YnVnYnVzKGdwdSwgYTZ4eF9zdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4IDlkMTFmMzIx ZjVhOS4uMzIyNWY4ZmJkOGM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaApAQCAtMzEyLDYgKzMxMiw4 IEBAIHZvaWQgKm1zbV9nZW1fa2VybmVsX25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50 MzJfdCBzaXplLAogdm9pZCAqbXNtX2dlbV9rZXJuZWxfbmV3X2xvY2tlZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1aW50MzJfdCBzaXplLAogCQl1aW50MzJfdCBmbGFncywgc3RydWN0IG1zbV9n ZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlLAogCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipibywg dWludDY0X3QgKmlvdmEpOwordm9pZCBtc21fZ2VtX2tlcm5lbF9wdXQoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpibywKKwkJc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlLCBib29s IGxvY2tlZCk7CiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm1zbV9nZW1faW1wb3J0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCXN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBzZ190YWJs ZSAqc2d0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwppbmRleCBmYTUwZmQ4NTczNjYuLjliMzhmYjY4 NTAyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKQEAgLTEwNzksMyArMTA3OSwxOCBAQCB2b2lkICpt c21fZ2VtX2tlcm5lbF9uZXdfbG9ja2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90 IHNpemUsCiB7CiAJcmV0dXJuIF9tc21fZ2VtX2tlcm5lbF9uZXcoZGV2LCBzaXplLCBmbGFncywg YXNwYWNlLCBibywgaW92YSwgdHJ1ZSk7CiB9CisKK3ZvaWQgbXNtX2dlbV9rZXJuZWxfcHV0KHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqYm8sCisJCXN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2Ug KmFzcGFjZSwgYm9vbCBsb2NrZWQpCit7CisJaWYgKElTX0VSUl9PUl9OVUxMKGJvKSkKKwkJcmV0 dXJuOworCisJbXNtX2dlbV9wdXRfdmFkZHIoYm8pOworCW1zbV9nZW1fcHV0X2lvdmEoYm8sIGFz cGFjZSk7CisKKwlpZiAobG9ja2VkKQorCQlkcm1fZ2VtX29iamVjdF9wdXQoYm8pOworCWVsc2UK KwkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGJvKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LmMK aW5kZXggODRiYThiMGZkMzkxLi5iMDJjY2JmNTI5MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2dwdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5jCkBA IC05NjUsMTEgKzk2NSw3IEBAIGludCBtc21fZ3B1X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRy bSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAkJZ3B1LT5yYltpXSA9IE5VTEw7CiAJ fQogCi0JaWYgKGdwdS0+bWVtcHRyc19ibykgewotCQltc21fZ2VtX3B1dF92YWRkcihncHUtPm1l bXB0cnNfYm8pOwotCQltc21fZ2VtX3B1dF9pb3ZhKGdwdS0+bWVtcHRyc19ibywgZ3B1LT5hc3Bh Y2UpOwotCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoZ3B1LT5tZW1wdHJzX2JvKTsKLQl9 CisJbXNtX2dlbV9rZXJuZWxfcHV0KGdwdS0+bWVtcHRyc19ibywgZ3B1LT5hc3BhY2UsIGZhbHNl KTsKIAogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIE5VTEwpOwogCXJldHVybiByZXQ7CkBA IC05ODgsMTEgKzk4NCw3IEBAIHZvaWQgbXNtX2dwdV9jbGVhbnVwKHN0cnVjdCBtc21fZ3B1ICpn cHUpCiAJCWdwdS0+cmJbaV0gPSBOVUxMOwogCX0KIAotCWlmIChncHUtPm1lbXB0cnNfYm8pIHsK LQkJbXNtX2dlbV9wdXRfdmFkZHIoZ3B1LT5tZW1wdHJzX2JvKTsKLQkJbXNtX2dlbV9wdXRfaW92 YShncHUtPm1lbXB0cnNfYm8sIGdwdS0+YXNwYWNlKTsKLQkJZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkKGdwdS0+bWVtcHRyc19ibyk7Ci0JfQorCW1zbV9nZW1fa2VybmVsX3B1dChncHUtPm1l bXB0cnNfYm8sIGdwdS0+YXNwYWNlLCBmYWxzZSk7CiAKIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGdw dS0+YXNwYWNlKSkgewogCQlncHUtPmFzcGFjZS0+bW11LT5mdW5jcy0+ZGV0YWNoKGdwdS0+YXNw YWNlLT5tbXUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKaW5kZXggNmY1Mjk1YjNm MmY2Li45ZmE5NTI1YzUyOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3Jp bmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKQEAg LTczLDEwICs3Myw3IEBAIHZvaWQgbXNtX3JpbmdidWZmZXJfZGVzdHJveShzdHJ1Y3QgbXNtX3Jp bmdidWZmZXIgKnJpbmcpCiAKIAltc21fZmVuY2VfY29udGV4dF9mcmVlKHJpbmctPmZjdHgpOwog Ci0JaWYgKHJpbmctPmJvKSB7Ci0JCW1zbV9nZW1fcHV0X2lvdmEocmluZy0+Ym8sIHJpbmctPmdw dS0+YXNwYWNlKTsKLQkJbXNtX2dlbV9wdXRfdmFkZHIocmluZy0+Ym8pOwotCQlkcm1fZ2VtX29i amVjdF9wdXRfdW5sb2NrZWQocmluZy0+Ym8pOwotCX0KKwltc21fZ2VtX2tlcm5lbF9wdXQocmlu Zy0+Ym8sIHJpbmctPmdwdS0+YXNwYWNlLCBmYWxzZSk7CisKIAlrZnJlZShyaW5nKTsKIH0KLS0g CjIuMTguMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K RnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==