From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [PATCH 05/18] arm/altp2m: Add HVMOP_altp2m_set_domain_state. Date: Mon, 4 Jul 2016 13:45:34 +0200 Message-ID: <20160704114605.10086-6-proskurin@sec.in.tum.de> References: <20160704114605.10086-1-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bK2Ka-0007ya-T0 for xen-devel@lists.xenproject.org; Mon, 04 Jul 2016 11:46:28 +0000 In-Reply-To: <20160704114605.10086-1-proskurin@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Sergej Proskurin , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhlIEhWTU9QX2FsdHAybV9zZXRfZG9tYWluX3N0YXRlIGFsbG93cyB0byBhY3RpdmF0ZSBhbHRw Mm0gb24gYQpzcGVjaWZpYyBkb21haW4uIFRoaXMgY29tbWl0IGFkb3B0cyB0aGUgeDg2CkhWTU9Q X2FsdHAybV9zZXRfZG9tYWluX3N0YXRlIGltcGxlbWVudGF0aW9uLiAgVGhlIGZ1bmN0aW9uCnAy bV9mbHVzaF9hbHRwMm0gaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGluIGZvcm0gb2YgYSBzdHVi LgoKU2lnbmVkLW9mZi1ieTogU2VyZ2VqIFByb3NrdXJpbiA8cHJvc2t1cmluQHNlYy5pbi50dW0u ZGU+Ci0tLQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpD YzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KLS0tCiB4ZW4vYXJjaC9hcm0v TWFrZWZpbGUgICAgICAgIHwgIDEgKwogeGVuL2FyY2gvYXJtL2FsdHAybS5jICAgICAgICB8IDY4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC9h cm0vaHZtLmMgICAgICAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gvYXJt L3AybS5jICAgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2luY2x1ZGUvYXNtLWFybS9hbHRwMm0uaCB8IDIwICsrLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRl L2FzbS1hcm0vZG9tYWluLmggfCAgOSArKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgg ICAgfCAxOSArKysrKysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25zKCsp LCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vYWx0cDJt LmMKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vTWFr ZWZpbGUKaW5kZXggOWUzOGRhMy4uYWJkNmYxYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL01h a2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAtNDEsNiArNDEsNyBAQCBvYmot eSArPSBkZWNvZGUubwogb2JqLXkgKz0gcHJvY2Vzc29yLm8KIG9iai15ICs9IHNtYy5vCiBvYmot JChDT05GSUdfTElWRVBBVENIKSArPSBsaXZlcGF0Y2gubworb2JqLXkgKz0gYWx0cDJtLm8KIAog I29iai1iaW4teSArPSAuLi4ubwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYWx0cDJtLmMg Yi94ZW4vYXJjaC9hcm0vYWx0cDJtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMWQyNTA1ZgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS9hbHRwMm0uYwpAQCAt MCwwICsxLDY4IEBACisvKgorICogYXJjaC9hcm0vYWx0cDJtLmMKKyAqCisgKiBBbHRlcm5hdGUg cDJtCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgU2VyZ2VqIFByb3NrdXJpbiA8cHJvc2t1cmluQHNl Yy5pbi50dW0uZGU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24g MiwKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVz ZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCisgKiBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCisgKiBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlCisgKiBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJv Z3JhbTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisK KyNpbmNsdWRlIDxhc20vcDJtLmg+CisjaW5jbHVkZSA8YXNtL2FsdHAybS5oPgorI2luY2x1ZGUg PGFzbS9odm0vaHZtLmg+CisKK3ZvaWQgYWx0cDJtX3ZjcHVfcmVzZXQoc3RydWN0IHZjcHUgKnYp Cit7CisgICAgc3RydWN0IGFsdHAybXZjcHUgKmF2ID0gJnZjcHVfYWx0cDJtKHYpOworCisgICAg YXYtPnAybWlkeCA9IElOVkFMSURfQUxUUDJNOworfQorCit2b2lkIGFsdHAybV92Y3B1X2luaXRp YWxpc2Uoc3RydWN0IHZjcHUgKnYpCit7CisgICAgaWYgKCB2ICE9IGN1cnJlbnQgKQorICAgICAg ICB2Y3B1X3BhdXNlKHYpOworCisgICAgYWx0cDJtX3ZjcHVfcmVzZXQodik7CisgICAgdmNwdV9h bHRwMm0odikucDJtaWR4ID0gMDsKKyAgICBhdG9taWNfaW5jKCZwMm1fZ2V0X2FsdHAybSh2KS0+ YWN0aXZlX3ZjcHVzKTsKKworICAgIGlmICggdiAhPSBjdXJyZW50ICkKKyAgICAgICAgdmNwdV91 bnBhdXNlKHYpOworfQorCit2b2lkIGFsdHAybV92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYp Cit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybTsKKworICAgIGlmICggdiAhPSBjdXJyZW50 ICkKKyAgICAgICAgdmNwdV9wYXVzZSh2KTsKKworICAgIGlmICggKHAybSA9IHAybV9nZXRfYWx0 cDJtKHYpKSApCisgICAgICAgIGF0b21pY19kZWMoJnAybS0+YWN0aXZlX3ZjcHVzKTsKKworICAg IGFsdHAybV92Y3B1X3Jlc2V0KHYpOworCisgICAgaWYgKCB2ICE9IGN1cnJlbnQgKQorICAgICAg ICB2Y3B1X3VucGF1c2Uodik7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2Rl OiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFi LXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL2h2bS5jIGIveGVuL2FyY2gvYXJtL2h2bS5jCmluZGV4IDhlOGUw ZjcuLmNiOTBhNTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9odm0uYworKysgYi94ZW4vYXJj aC9hcm0vaHZtLmMKQEAgLTEwNCw4ICsxMDQsMzYgQEAgc3RhdGljIGludCBkb19hbHRwMm1fb3Ao WEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSBIVk1PUF9hbHRwMm1fc2V0X2RvbWFpbl9zdGF0ZToKLSAgICAgICAgcmMgPSAtRU9QTk9U U1VQUDsKKyAgICB7CisgICAgICAgIHN0cnVjdCB2Y3B1ICp2OworICAgICAgICBib29sX3Qgb3N0 YXRlOworCisgICAgICAgIGlmICggIWQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFN X0FMVFAyTV0gKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIG9zdGF0ZSA9IGQtPmFyY2guYWx0cDJt X2FjdGl2ZTsKKyAgICAgICAgZC0+YXJjaC5hbHRwMm1fYWN0aXZlID0gISFhLnUuZG9tYWluX3N0 YXRlLnN0YXRlOworCisgICAgICAgIC8qIElmIHRoZSBhbHRlcm5hdGUgcDJtIHN0YXRlIGhhcyBj aGFuZ2VkLCBoYW5kbGUgYXBwcm9wcmlhdGVseSAqLworICAgICAgICBpZiAoIGQtPmFyY2guYWx0 cDJtX2FjdGl2ZSAhPSBvc3RhdGUgJiYKKyAgICAgICAgICAgICAob3N0YXRlIHx8ICEocmMgPSBw Mm1faW5pdF9hbHRwMm1fYnlfaWQoZCwgMCkpKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv cl9lYWNoX3ZjcHUoIGQsIHYgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgg IW9zdGF0ZSApCisgICAgICAgICAgICAgICAgICAgIGFsdHAybV92Y3B1X2luaXRpYWxpc2Uodik7 CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhbHRwMm1fdmNwdV9k ZXN0cm95KHYpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIG9zdGF0ZSApCisg ICAgICAgICAgICAgICAgcDJtX2ZsdXNoX2FsdHAybShkKTsKKyAgICAgICAgfQogICAgICAgICBi cmVhazsKKyAgICB9CiAKICAgICBjYXNlIEhWTU9QX2FsdHAybV92Y3B1X2VuYWJsZV9ub3RpZnk6 CiAgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJt LmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKaW5kZXggZTcyY2E3YS4uNGE3NDVmZCAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL3AybS5jCisrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwpAQCAtMjA2NCw2 ICsyMDY0LDUyIEBAIGludCBwMm1fZ2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgZ2Zu X3QgZ2ZuLAogICAgIHJldHVybiByZXQ7CiB9CiAKK3N0cnVjdCBwMm1fZG9tYWluICpwMm1fZ2V0 X2FsdHAybShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSB2Y3B1 X2FsdHAybSh2KS5wMm1pZHg7CisKKyAgICBpZiAoIGluZGV4ID09IElOVkFMSURfQUxUUDJNICkK KyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBCVUdfT04oaW5kZXggPj0gTUFYX0FMVFAyTSk7 CisKKyAgICByZXR1cm4gdi0+ZG9tYWluLT5hcmNoLmFsdHAybV9wMm1baW5kZXhdOworfQorCitz dGF0aWMgdm9pZCBwMm1faW5pdF9hbHRwMm1faGVscGVyKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBpKQoreworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBkLT5hcmNoLmFsdHAy bV9wMm1baV07CisgICAgc3RydWN0IHZ0dGJyX2RhdGEgKnZ0dGJyID0gJnAybS0+dnR0YnI7CisK KyAgICBwMm0tPmxvd2VzdF9tYXBwZWRfZ2ZuID0gSU5WQUxJRF9HRk47CisgICAgcDJtLT5tYXhf bWFwcGVkX2dmbiA9IDA7CisKKyAgICB2dHRici0+dnR0YnJfYmFkZHIgPSBwYWdlX3RvX21hZGRy KHAybS0+cm9vdCk7CisgICAgdnR0YnItPnZ0dGJyX3ZtaWQgPSBwMm0tPnZtaWQ7CisKKyAgICBk LT5hcmNoLmFsdHAybV92dHRicltpXSA9IHZ0dGJyLT52dHRicjsKK30KKworaW50IHAybV9pbml0 X2FsdHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4KQoreworICAg IGludCByYyA9IC1FSU5WQUw7CisKKyAgICBpZiAoIGlkeCA+PSBNQVhfQUxUUDJNICkKKyAgICAg ICAgcmV0dXJuIHJjOworCisgICAgYWx0cDJtX2xvY2soZCk7CisKKyAgICBpZiAoIGQtPmFyY2gu YWx0cDJtX3Z0dGJyW2lkeF0gPT0gSU5WQUxJRF9NRk4gKQorICAgIHsKKyAgICAgICAgcDJtX2lu aXRfYWx0cDJtX2hlbHBlcihkLCBpZHgpOworICAgICAgICByYyA9IDA7CisgICAgfQorCisgICAg YWx0cDJtX3VubG9jayhkKTsKKworICAgIHJldHVybiByYzsKK30KKwogLyoKICAqIExvY2FsIHZh cmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWx0 cDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2FsdHAybS5oCmluZGV4IDE2YWU5ZDYuLmVjNGFh MDkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWx0cDJtLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLWFybS9hbHRwMm0uaApAQCAtMzYsMjIgKzM2LDggQEAgc3RhdGljIGlubGluZSB1 aW50MTZfdCBhbHRwMm1fdmNwdV9pZHgoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiAgICAgcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhbHRwMm1fdmNwdV9pbml0aWFsaXNlKHN0cnVj dCB2Y3B1ICp2KQotewotICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBvbiBBUk0sIHNob3VsZCBub3Qg YmUgcmVhY2hlZC4gKi8KLSAgICBCVUcoKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGFsdHAy bV92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCi17Ci0gICAgLyogTm90IGltcGxlbWVudGVk IG9uIEFSTSwgc2hvdWxkIG5vdCBiZSByZWFjaGVkLiAqLwotICAgIEJVRygpOwotfQotCi1zdGF0 aWMgaW5saW5lIHZvaWQgYWx0cDJtX3ZjcHVfcmVzZXQoc3RydWN0IHZjcHUgKnYpCi17Ci0gICAg LyogTm90IGltcGxlbWVudGVkIG9uIEFSTSwgc2hvdWxkIG5vdCBiZSByZWFjaGVkLiAqLwotICAg IEJVRygpOwotfQordm9pZCBhbHRwMm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KTsK K3ZvaWQgYWx0cDJtX3ZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdik7Cit2b2lkIGFsdHAybV92 Y3B1X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KTsKIAogI2VuZGlmIC8qIF9fQVNNX0FSTV9BTFRQMk1f SCAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vZG9tYWluLmgKaW5kZXggNmI5NzcwZi4uOGJjZDYxOCAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2Rv bWFpbi5oCkBAIC0xMzgsNiArMTM4LDEyIEBAIHN0cnVjdCBhcmNoX2RvbWFpbgogICAgIHVpbnQ2 NF90IGFsdHAybV92dHRicltNQVhfQUxUUDJNXTsKIH0gIF9fY2FjaGVsaW5lX2FsaWduZWQ7CiAK K3N0cnVjdCBhbHRwMm12Y3B1IHsKKyAgICB1aW50MTZfdCBwMm1pZHg7IC8qIGFsdGVybmF0ZSBw Mm0gaW5kZXggKi8KK307CisKKyNkZWZpbmUgdmNwdV9hbHRwMm0odikgKCh2KS0+YXJjaC5hdmNw dSkKKwogc3RydWN0IGFyY2hfdmNwdQogewogICAgIHN0cnVjdCB7CkBAIC0yNjcsNiArMjczLDkg QEAgc3RydWN0IGFyY2hfdmNwdQogICAgIHN0cnVjdCB2dGltZXIgcGh5c190aW1lcjsKICAgICBz dHJ1Y3QgdnRpbWVyIHZpcnRfdGltZXI7CiAgICAgYm9vbF90IHZ0aW1lcl9pbml0aWFsaXplZDsK KworICAgIC8qIEFsdGVybmF0ZSBwMm0gY29udGV4dCAqLworICAgIHN0cnVjdCBhbHRwMm12Y3B1 IGF2Y3B1OwogfSAgX19jYWNoZWxpbmVfYWxpZ25lZDsKIAogdm9pZCB2Y3B1X3Nob3dfZXhlY3V0 aW9uX3N0YXRlKHN0cnVjdCB2Y3B1ICopOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFy bS9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKaW5kZXggYTc4ZDU0Ny4uOGVlNzhl MCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20tYXJtL3AybS5oCkBAIC0xMjEsNiArMTIxLDI1IEBAIHZvaWQgcDJtX2FsdHAybV9jaGVj ayhzdHJ1Y3QgdmNwdSAqdiwgdWludDE2X3QgaWR4KQogICAgIC8qIE5vdCBzdXBwb3J0ZWQgb24g QVJNLiAqLwogfQogCisvKgorICogQWx0ZXJuYXRlIHAybTogc2hhZG93IHAybSB0YWJsZXMgdXNl ZCBmb3IgYWx0ZXJuYXRlIG1lbW9yeSB2aWV3cy4KKyAqLworCisjZGVmaW5lIGFsdHAybV9sb2Nr KGQpICAgICAgc3Bpbl9sb2NrKCYoZCktPmFyY2guYWx0cDJtX2xvY2spCisjZGVmaW5lIGFsdHAy bV91bmxvY2soZCkgICAgc3Bpbl91bmxvY2soJihkKS0+YXJjaC5hbHRwMm1fbG9jaykKKworLyog R2V0IGN1cnJlbnQgYWx0ZXJuYXRlIHAybSB0YWJsZSAqLworc3RydWN0IHAybV9kb21haW4gKnAy bV9nZXRfYWx0cDJtKHN0cnVjdCB2Y3B1ICp2KTsKKworLyogRmx1c2ggYWxsIHRoZSBhbHRlcm5h dGUgcDJtJ3MgZm9yIGEgZG9tYWluICovCitzdGF0aWMgaW5saW5lIHZvaWQgcDJtX2ZsdXNoX2Fs dHAybShzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIC8qIE5vdCBzdXBwb3J0ZWQgb24gQVJNLiAq LworfQorCisvKiBNYWtlIGEgc3BlY2lmaWMgYWx0ZXJuYXRlIHAybSB2YWxpZCAqLworaW50IHAy bV9pbml0X2FsdHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4KTsK KwogI2RlZmluZSBwMm1faXNfZm9yZWlnbihfdCkgICgoX3QpID09IHAybV9tYXBfZm9yZWlnbikK ICNkZWZpbmUgcDJtX2lzX3JhbShfdCkgICAgICAoKF90KSA9PSBwMm1fcmFtX3J3IHx8IChfdCkg PT0gcDJtX3JhbV9ybykKIAotLSAKMi44LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=