From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1MIoz0-0005KE-Cz for mharc-grub-devel@gnu.org; Mon, 22 Jun 2009 15:15:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MIoyz-0005JS-Aa for grub-devel@gnu.org; Mon, 22 Jun 2009 15:15:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MIoyu-0005HZ-Ot for grub-devel@gnu.org; Mon, 22 Jun 2009 15:15:09 -0400 Received: from [199.232.76.173] (port=40771 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MIoyu-0005HW-IU for grub-devel@gnu.org; Mon, 22 Jun 2009 15:15:04 -0400 Received: from mail-px0-f176.google.com ([209.85.216.176]:45771) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MIoyt-0007pk-UF for grub-devel@gnu.org; Mon, 22 Jun 2009 15:15:04 -0400 Received: by pxi6 with SMTP id 6so3766342pxi.14 for ; Mon, 22 Jun 2009 12:15:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=wC+4iJW0+g+l8g2teb9ZiUlnve0wBxsOVyhp1nHq0s8=; b=SfT3+9lSIc/C/gfDF7Dm2o4tsFxuuJvZvYJ7fut8Az4IDsPJ96Q0YADh0xtTZrx3Wo QKoG76hc5QcXU+dBC452gPvtde7Cs1foKoiA5I2DK6mCSaiEHQB7302ZilXc2BCq1gdW Si8gxCwFECenHX4wQ5YFddovgLc+evRDxNGJs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=W6Ry2znQf0q/yS4XS3TuigmIioqGcyk3U45GEBdBa32luMDdY9BphLkG7ya6uYD+fL e7RU8tSni0Ic1C9kg8RyOhtPfHPm3Nh0mWtlysxTNnYXQ9W7zeI6JKq4kl73+Qmr1Su7 AvV6XuYFSU+T+6pf3ckxAokhNk8G4tZ7vSiBE= MIME-Version: 1.0 Received: by 10.114.88.1 with SMTP id l1mr5445514wab.97.1245698103110; Mon, 22 Jun 2009 12:15:03 -0700 (PDT) In-Reply-To: <1245697145.1926.11.camel@mj> References: <1245631353.9864.7.camel@mj> <20090622094429.GB8969@thorin> <20090622105959.GI8969@thorin> <1245695500.1926.10.camel@mj> <1245697145.1926.11.camel@mj> Date: Tue, 23 Jun 2009 03:15:03 +0800 Message-ID: From: Bean To: The development of GRUB 2 Content-Type: multipart/mixed; boundary=0016364c673feeeefa046cf4b0e5 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: Re: [PATCH] File access library for lua X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jun 2009 19:15:09 -0000 --0016364c673feeeefa046cf4b0e5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Tue, Jun 23, 2009 at 2:59 AM, Pavel Roskin wrote: > On Tue, 2009-06-23 at 02:49 +0800, Bean wrote: > >> What's the name of kernel and initrd.img ? > > vmlinuz-2.6.30-wl and initrd-2.6.30-wl.img Hi, Oh, find the bug now, try this one. > > -- > Regards, > Pavel Roskin > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > -- Bean --0016364c673feeeefa046cf4b0e5 Content-Type: text/x-patch; charset=US-ASCII; name="lua_file_2.diff" Content-Disposition: attachment; filename="lua_file_2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fw9kgtie0 ZGlmZiAtLWdpdCBhL2NvbmYvY29tbW9uLnJtayBiL2NvbmYvY29tbW9uLnJtawppbmRleCBmYmNh MmU0Li5kYzc4ZGY5IDEwMDY0NAotLS0gYS9jb25mL2NvbW1vbi5ybWsKKysrIGIvY29uZi9jb21t b24ucm1rCkBAIC01MTksMTUgKzUxOSwxNCBAQCBsdWFfbW9kX1NPVVJDRVMgPSBzY3JpcHQvbHVh L2xhcGkuYyBzY3JpcHQvbHVhL2xjb2RlLmMgc2NyaXB0L2x1YS9sZGVidWcuYyBcCiAJc2NyaXB0 L2x1YS9sc3RhdGUuYyBzY3JpcHQvbHVhL2xzdHJpbmcuYyBzY3JpcHQvbHVhL2x0YWJsZS5jIFwK IAlzY3JpcHQvbHVhL2x0bS5jIHNjcmlwdC9sdWEvbHVuZHVtcC5jIHNjcmlwdC9sdWEvbHZtLmMg XAogCXNjcmlwdC9sdWEvbHppby5jIHNjcmlwdC9sdWEvbGF1eGxpYi5jIHNjcmlwdC9sdWEvbGJh c2VsaWIuYyBcCi0Jc2NyaXB0L2x1YS9saW5pdC5jIHNjcmlwdC9sdWEvbHRhYmxpYi5jIFwKKwlz Y3JpcHQvbHVhL2xpbml0LmMgc2NyaXB0L2x1YS9sdGFibGliLmMgc2NyaXB0L2x1YS9sc3RybGli LmMgXAogCXNjcmlwdC9sdWEvZ3J1Yl9tYWluLmMgc2NyaXB0L2x1YS9ncnViX2xpYi5jCiBsdWFf bW9kX0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykKIGx1YV9tb2RfTERGTEFHUyA9ICQoQ09NTU9O X0xERkxBR1MpCiAKICMgRXh0cmEgbGlicmFyaWVzIGZvciBsdWEKICMgc2NyaXB0L2x1YS9sbWF0 aGxpYi5jIHNjcmlwdC9sdWEvbG9zbGliLmMgc2NyaXB0L2x1YS9saW9saWIuYwotIyBzY3JpcHQv bHVhL2xzdHJsaWIuYyBzY3JpcHQvbHVhL2xkYmxpYi5jIHNjcmlwdC9sdWEvbHRhYmxpYi5jCi0j IHNjcmlwdC9sdWEvbG9hZGxpYi5jCisjIHNjcmlwdC9sdWEvbGRibGliLmMgc2NyaXB0L2x1YS9s b2FkbGliLmMKIAogIyBDb21tb24gVmlkZW8gU3Vic3lzdGVtIHNwZWNpZmljIG1vZHVsZXMuCiBw a2dsaWJfTU9EVUxFUyArPSB2aWRlby5tb2QgdmlkZW90ZXN0Lm1vZCBiaXRtYXAubW9kIHRnYS5t b2QganBlZy5tb2QJXApkaWZmIC0tZ2l0IGEvc2NyaXB0L2x1YS9ncnViX2xpYi5jIGIvc2NyaXB0 L2x1YS9ncnViX2xpYi5jCmluZGV4IDAyOTVmMGQuLjdmNzM4YzkgMTAwNjQ0Ci0tLSBhL3Njcmlw dC9sdWEvZ3J1Yl9saWIuYworKysgYi9zY3JpcHQvbHVhL2dydWJfbGliLmMKQEAgLTI0LDE4ICsy NCw0NyBAQAogI2luY2x1ZGUgPGdydWIvZW52Lmg+CiAjaW5jbHVkZSA8Z3J1Yi9wYXJzZXIuaD4K ICNpbmNsdWRlIDxncnViL2NvbW1hbmQuaD4KKyNpbmNsdWRlIDxncnViL25vcm1hbC5oPgorI2lu Y2x1ZGUgPGdydWIvZmlsZS5oPgorI2luY2x1ZGUgPGdydWIvZGV2aWNlLmg+CisKK3N0YXRpYyBp bnQKK3NhdmVfZXJybm8gKGx1YV9TdGF0ZSAqc3RhdGUpCit7CisgIGludCBzYXZlZF9lcnJubzsK KworICBzYXZlZF9lcnJubyA9IGdydWJfZXJybm87CisgIGdydWJfZXJybm8gPSAwOworCisgIGx1 YV9wdXNoaW50ZWdlciAoc3RhdGUsIHNhdmVkX2Vycm5vKTsKKyAgbHVhX3NldGZpZWxkIChzdGF0 ZSwgTFVBX0dMT0JBTFNJTkRFWCwgImdydWJfZXJybm8iKTsKKworICBpZiAoc2F2ZWRfZXJybm8p CisgICAgbHVhX3B1c2hzdHJpbmcgKHN0YXRlLCBncnViX2Vycm1zZyk7CisgIGVsc2UKKyAgICBs dWFfcHVzaG5pbCAoc3RhdGUpOworCisgIGx1YV9zZXRmaWVsZCAoc3RhdGUsIExVQV9HTE9CQUxT SU5ERVgsICJncnViX2Vycm1zZyIpOworCisgIHJldHVybiBzYXZlZF9lcnJubzsKK30KKworc3Rh dGljIGludAorcHVzaF9yZXN1bHQgKGx1YV9TdGF0ZSAqc3RhdGUpCit7CisgIGx1YV9wdXNoaW50 ZWdlciAoc3RhdGUsIHNhdmVfZXJybm8gKHN0YXRlKSk7CisgIHJldHVybiAxOworfQogCiBzdGF0 aWMgaW50CiBncnViX2x1YV9ydW4gKGx1YV9TdGF0ZSAqc3RhdGUpCiB7CiAgIGludCBuOwogICBj aGFyICoqYXJnczsKLSAgZ3J1Yl9lcnJfdCByZXN1bHQ7Ci0KLSAgaWYgKCEgbHVhX2dldHRvcChz dGF0ZSkpCi0gICAgcmV0dXJuIDA7CisgIGNvbnN0IGNoYXIgKnM7CiAKLSAgaWYgKCghIGdydWJf cGFyc2VyX3NwbGl0X2NtZGxpbmUgKGx1YV90b3N0cmluZyAoc3RhdGUsIDEpLCAwLCAmbiwgJmFy Z3MpKQorICBzID0gbHVhTF9jaGVja3N0cmluZyAoc3RhdGUsIDEpOworICBpZiAoKCEgZ3J1Yl9w YXJzZXJfc3BsaXRfY21kbGluZSAocywgMCwgJm4sICZhcmdzKSkKICAgICAgICYmIChuID49IDAp KQogICAgIHsKICAgICAgIGdydWJfY29tbWFuZF90IGNtZDsKQEAgLTUwLDE1ICs3OSw3IEBAIGdy dWJfbHVhX3J1biAobHVhX1N0YXRlICpzdGF0ZSkKICAgICAgIGdydWJfZnJlZSAoYXJncyk7CiAg ICAgfQogCi0gIHJlc3VsdCA9IGdydWJfZXJybm87Ci0gIGdydWJfZXJybm8gPSAwOwotCi0gIGx1 YV9wdXNoaW50ZWdlcihzdGF0ZSwgcmVzdWx0KTsKLQotICBpZiAocmVzdWx0KQotICAgIGx1YV9w dXNoc3RyaW5nIChzdGF0ZSwgZ3J1Yl9lcnJtc2cpOwotCi0gIHJldHVybiAocmVzdWx0KSA/IDIg OiAxOworICByZXR1cm4gcHVzaF9yZXN1bHQgKHN0YXRlKTsKIH0KIAogc3RhdGljIGludApAQCAt NjYsMTIgKzg3LDEyIEBAIGdydWJfbHVhX2dldGVudiAobHVhX1N0YXRlICpzdGF0ZSkKIHsKICAg aW50IG4sIGk7CiAKLSAgbiA9IGx1YV9nZXR0b3Aoc3RhdGUpOworICBuID0gbHVhX2dldHRvcCAo c3RhdGUpOwogICBmb3IgKGkgPSAxOyBpIDw9IG47IGkrKykKICAgICB7CiAgICAgICBjb25zdCBj aGFyICpuYW1lLCAqdmFsdWU7CiAKLSAgICAgIG5hbWUgPSBsdWFfdG9zdHJpbmcgKHN0YXRlLCBp KTsKKyAgICAgIG5hbWUgPSBsdWFMX2NoZWNrc3RyaW5nIChzdGF0ZSwgaSk7CiAgICAgICB2YWx1 ZSA9IGdydWJfZW52X2dldCAobmFtZSk7CiAgICAgICBpZiAodmFsdWUpCiAJbHVhX3B1c2hzdHJp bmcgKHN0YXRlLCB2YWx1ZSk7CkBAIC04NywxMSArMTA4LDggQEAgZ3J1Yl9sdWFfc2V0ZW52IChs dWFfU3RhdGUgKnN0YXRlKQogewogICBjb25zdCBjaGFyICpuYW1lLCAqdmFsdWU7CiAKLSAgaWYg KGx1YV9nZXR0b3Aoc3RhdGUpICE9IDIpCi0gICAgcmV0dXJuIDA7Ci0KLSAgbmFtZSA9IGx1YV90 b3N0cmluZyAoc3RhdGUsIDEpOwotICB2YWx1ZSA9IGx1YV90b3N0cmluZyAoc3RhdGUsIDIpOwor ICBuYW1lID0gbHVhTF9jaGVja3N0cmluZyAoc3RhdGUsIDEpOworICB2YWx1ZSA9IGx1YUxfY2hl Y2tzdHJpbmcgKHN0YXRlLCAyKTsKIAogICBpZiAobmFtZVswXSkKICAgICBncnViX2Vudl9zZXQg KG5hbWUsIHZhbHVlKTsKQEAgLTk5LDEwICsxMTcsMzI0IEBAIGdydWJfbHVhX3NldGVudiAobHVh X1N0YXRlICpzdGF0ZSkKICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2dydWJfbHVhX2Vu dW1fZGV2aWNlIChsdWFfU3RhdGUgKnN0YXRlKQoreworICBhdXRvIGludCBlbnVtX2RldmljZSAo Y29uc3QgY2hhciAqbmFtZSk7CisgIGludCBlbnVtX2RldmljZSAoY29uc3QgY2hhciAqbmFtZSkK KyAgeworICAgIGludCByZXN1bHQ7CisgICAgZ3J1Yl9kZXZpY2VfdCBkZXY7CisKKyAgICByZXN1 bHQgPSAwOworICAgIGRldiA9IGdydWJfZGV2aWNlX29wZW4gKG5hbWUpOworICAgIGlmIChkZXYp CisgICAgICB7CisJZ3J1Yl9mc190IGZzOworCisJZnMgPSBncnViX2ZzX3Byb2JlIChkZXYpOwor CWlmIChmcykKKwkgIHsKKwkgICAgbHVhX3B1c2h2YWx1ZSAoc3RhdGUsIDEpOworCSAgICBsdWFf cHVzaHN0cmluZyAoc3RhdGUsIG5hbWUpOworCSAgICBsdWFfcHVzaHN0cmluZyAoc3RhdGUsIGZz LT5uYW1lKTsKKwkgICAgaWYgKCEgZnMtPnV1aWQpCisJICAgICAgbHVhX3B1c2huaWwgKHN0YXRl KTsKKwkgICAgZWxzZQorCSAgICAgIHsKKwkJaW50IGVycjsKKwkJY2hhciAqdXVpZDsKKwkgICAg CSAgICAgIAorCQllcnIgPSBmcy0+dXVpZCAoZGV2LCAmdXVpZCk7CisJCWlmIChlcnIpCisJCSAg eworCQkgICAgZ3J1Yl9lcnJubyA9IDA7CisJCSAgICBsdWFfcHVzaG5pbCAoc3RhdGUpOworCQkg IH0KKwkJZWxzZQorCQkgIHsKKwkJICAgIGx1YV9wdXNoc3RyaW5nIChzdGF0ZSwgdXVpZCk7CisJ CSAgICBncnViX2ZyZWUgKHV1aWQpOwkJICAgIAorCQkgIH0KKwkgICAgICB9CisJCQkgICAgCisJ ICAgIGx1YV9jYWxsIChzdGF0ZSwgMywgMSk7CisJICAgIHJlc3VsdCA9IGx1YV90b2ludGVnZXIg KHN0YXRlLCAtMSk7CisJICAgIGx1YV9wb3AgKHN0YXRlLCAxKTsKKwkgIH0KKwllbHNlCisJICBn cnViX2Vycm5vID0gMDsKKwlncnViX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgIH0KKyAgICBl bHNlCisgICAgICBzYXZlX2Vycm5vIChzdGF0ZSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworICB9 CisKKyAgbHVhTF9jaGVja3R5cGUgKHN0YXRlLCAxLCBMVUFfVEZVTkNUSU9OKTsKKyAgZ3J1Yl9k ZXZpY2VfaXRlcmF0ZSAoZW51bV9kZXZpY2UpOworICByZXR1cm4gcHVzaF9yZXN1bHQgKHN0YXRl KTsKK30KKworc3RhdGljIGludAorZ3J1Yl9sdWFfZW51bV9maWxlIChsdWFfU3RhdGUgKnN0YXRl KQoreworICBjaGFyICpkZXZpY2VfbmFtZTsKKyAgY29uc3QgY2hhciAqYXJnOworICBncnViX2Rl dmljZV90IGRldjsKKworICBhdXRvIGludCBlbnVtX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IHN0cnVjdCBncnViX2Rpcmhvb2tfaW5mbyAqaW5mbyk7CisgIGludCBlbnVtX2ZpbGUgKGNv bnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBncnViX2Rpcmhvb2tfaW5mbyAqaW5mbykKKyAg eworICAgIGludCByZXN1bHQ7CisKKyAgICBsdWFfcHVzaHZhbHVlIChzdGF0ZSwgMSk7CisgICAg bHVhX3B1c2hzdHJpbmcgKHN0YXRlLCBuYW1lKTsKKyAgICBsdWFfcHVzaGludGVnZXIgKHN0YXRl LCBpbmZvLT5kaXIgIT0gMCk7CisgICAgbHVhX2NhbGwgKHN0YXRlLCAyLCAxKTsKKyAgICByZXN1 bHQgPSBsdWFfdG9pbnRlZ2VyIChzdGF0ZSwgLTEpOworICAgIGx1YV9wb3AgKHN0YXRlLCAxKTsK KworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKworICBsdWFMX2NoZWNrdHlwZSAoc3RhdGUsIDEs IExVQV9URlVOQ1RJT04pOworICBhcmcgPSBsdWFMX2NoZWNrc3RyaW5nIChzdGF0ZSwgMik7Cisg IGRldmljZV9uYW1lID0gZ3J1Yl9maWxlX2dldF9kZXZpY2VfbmFtZSAoYXJnKTsKKyAgZGV2ID0g Z3J1Yl9kZXZpY2Vfb3BlbiAoZGV2aWNlX25hbWUpOworICBpZiAoZGV2KQorICAgIHsKKyAgICAg IGdydWJfZnNfdCBmczsKKyAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CisKKyAgICAgIGZzID0gZ3J1 Yl9mc19wcm9iZSAoZGV2KTsKKyAgICAgIHBhdGggPSBncnViX3N0cmNociAoYXJnLCAnKScpOwor ICAgICAgaWYgKCEgcGF0aCkKKwlwYXRoID0gYXJnOworICAgICAgZWxzZQorCXBhdGgrKzsKKwor ICAgICAgaWYgKGZzKQorCXsKKwkgIChmcy0+ZGlyKSAoZGV2LCBwYXRoLCBlbnVtX2ZpbGUpOwor CX0KKworICAgICAgZ3J1Yl9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgfQorCisgIGdydWJfZnJl ZSAoZGV2aWNlX25hbWUpOworCisgIHJldHVybiBwdXNoX3Jlc3VsdCAoc3RhdGUpOworfQorCitz dGF0aWMgaW50CitncnViX2x1YV9maWxlX29wZW4gKGx1YV9TdGF0ZSAqc3RhdGUpCit7CisgIGdy dWJfZmlsZV90IGZpbGU7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisKKyAgbmFtZSA9IGx1YUxfY2hl Y2tzdHJpbmcgKHN0YXRlLCAxKTsKKyAgZmlsZSA9IGdydWJfZmlsZV9vcGVuIChuYW1lKTsKKyAg c2F2ZV9lcnJubyAoc3RhdGUpOworCisgIGlmICghIGZpbGUpCisgICAgcmV0dXJuIDA7CisKKyAg bHVhX3B1c2hsaWdodHVzZXJkYXRhIChzdGF0ZSwgZmlsZSk7CisgIHJldHVybiAxOworfQorCitz dGF0aWMgaW50CitncnViX2x1YV9maWxlX2Nsb3NlIChsdWFfU3RhdGUgKnN0YXRlKQoreworICBn cnViX2ZpbGVfdCBmaWxlOworCisgIGx1YUxfY2hlY2t0eXBlIChzdGF0ZSwgMSwgTFVBX1RMSUdI VFVTRVJEQVRBKTsKKyAgZmlsZSA9IGx1YV90b3VzZXJkYXRhIChzdGF0ZSwgMSk7CisgIGdydWJf ZmlsZV9jbG9zZSAoZmlsZSk7CisKKyAgcmV0dXJuIHB1c2hfcmVzdWx0IChzdGF0ZSk7Cit9CisK K3N0YXRpYyBpbnQKK2dydWJfbHVhX2ZpbGVfc2VlayAobHVhX1N0YXRlICpzdGF0ZSkKK3sKKyAg Z3J1Yl9maWxlX3QgZmlsZTsKKyAgZ3J1Yl9vZmZfdCBvZmZzZXQ7CisKKyAgbHVhTF9jaGVja3R5 cGUgKHN0YXRlLCAxLCBMVUFfVExJR0hUVVNFUkRBVEEpOworICBmaWxlID0gbHVhX3RvdXNlcmRh dGEgKHN0YXRlLCAxKTsKKyAgb2Zmc2V0ID0gbHVhTF9jaGVja2ludGVnZXIgKHN0YXRlLCAyKTsK KworICBvZmZzZXQgPSBncnViX2ZpbGVfc2VlayAoZmlsZSwgb2Zmc2V0KTsKKyAgc2F2ZV9lcnJu byAoc3RhdGUpOworCisgIGx1YV9wdXNoaW50ZWdlciAoc3RhdGUsIG9mZnNldCk7CisgIHJldHVy biAxOworfQorCitzdGF0aWMgaW50CitncnViX2x1YV9maWxlX3JlYWQgKGx1YV9TdGF0ZSAqc3Rh dGUpCit7CisgIGdydWJfZmlsZV90IGZpbGU7CisgIGx1YUxfQnVmZmVyIGI7CisgIGludCBuOwor CisgIGx1YUxfY2hlY2t0eXBlIChzdGF0ZSwgMSwgTFVBX1RMSUdIVFVTRVJEQVRBKTsKKyAgZmls ZSA9IGx1YV90b3VzZXJkYXRhIChzdGF0ZSwgMSk7CisgIG4gPSBsdWFMX2NoZWNraW50ZWdlciAo c3RhdGUsIDIpOworCisgIGx1YUxfYnVmZmluaXQgKHN0YXRlLCAmYik7CisgIHdoaWxlIChuKQor ICAgIHsKKyAgICAgIGNoYXIgKnA7CisgICAgICBpbnQgbnI7CisKKyAgICAgIG5yID0gKG4gPiBM VUFMX0JVRkZFUlNJWkUpID8gTFVBTF9CVUZGRVJTSVpFIDogbjsKKyAgICAgIHAgPSBsdWFMX3By ZXBidWZmZXIgKCZiKTsKKworICAgICAgbnIgPSBncnViX2ZpbGVfcmVhZCAoZmlsZSwgcCwgbnIp OworICAgICAgaWYgKG5yIDw9IDApCisJYnJlYWs7CisKKyAgICAgIGx1YUxfYWRkc2l6ZSAoJmIs IG5yKTsKKyAgICAgIG4gLT0gbnI7CisgICAgfQorCisgIHNhdmVfZXJybm8gKHN0YXRlKTsKKyAg bHVhTF9wdXNocmVzdWx0ICgmYik7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitncnVi X2x1YV9maWxlX2dldGxpbmUgKGx1YV9TdGF0ZSAqc3RhdGUpCit7CisgIGdydWJfZmlsZV90IGZp bGU7CisgIGNoYXIgKmxpbmU7CisKKyAgbHVhTF9jaGVja3R5cGUgKHN0YXRlLCAxLCBMVUFfVExJ R0hUVVNFUkRBVEEpOworICBmaWxlID0gbHVhX3RvdXNlcmRhdGEgKHN0YXRlLCAxKTsKKworICBs aW5lID0gZ3J1Yl9maWxlX2dldGxpbmUgKGZpbGUpOworICBzYXZlX2Vycm5vIChzdGF0ZSk7CisK KyAgaWYgKCEgbGluZSkKKyAgICByZXR1cm4gMDsKKworICBsdWFfcHVzaHN0cmluZyAoc3RhdGUs IGxpbmUpOworICBncnViX2ZyZWUgKGxpbmUpOworICByZXR1cm4gMTsKK30KKworc3RhdGljIGlu dAorZ3J1Yl9sdWFfZmlsZV9nZXRzaXplIChsdWFfU3RhdGUgKnN0YXRlKQoreworICBncnViX2Zp bGVfdCBmaWxlOworCisgIGx1YUxfY2hlY2t0eXBlIChzdGF0ZSwgMSwgTFVBX1RMSUdIVFVTRVJE QVRBKTsKKyAgZmlsZSA9IGx1YV90b3VzZXJkYXRhIChzdGF0ZSwgMSk7CisKKyAgbHVhX3B1c2hp bnRlZ2VyIChzdGF0ZSwgZmlsZS0+c2l6ZSk7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50 CitncnViX2x1YV9maWxlX2dldHBvcyAobHVhX1N0YXRlICpzdGF0ZSkKK3sKKyAgZ3J1Yl9maWxl X3QgZmlsZTsKKworICBsdWFMX2NoZWNrdHlwZSAoc3RhdGUsIDEsIExVQV9UTElHSFRVU0VSREFU QSk7CisgIGZpbGUgPSBsdWFfdG91c2VyZGF0YSAoc3RhdGUsIDEpOworCisgIGx1YV9wdXNoaW50 ZWdlciAoc3RhdGUsIGZpbGUtPm9mZnNldCk7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50 CitncnViX2x1YV9maWxlX2VvZiAobHVhX1N0YXRlICpzdGF0ZSkKK3sKKyAgZ3J1Yl9maWxlX3Qg ZmlsZTsKKworICBsdWFMX2NoZWNrdHlwZSAoc3RhdGUsIDEsIExVQV9UTElHSFRVU0VSREFUQSk7 CisgIGZpbGUgPSBsdWFfdG91c2VyZGF0YSAoc3RhdGUsIDEpOworCisgIGx1YV9wdXNoYm9vbGVh biAoc3RhdGUsIGZpbGUtPm9mZnNldCA+PSBmaWxlLT5zaXplKTsKKyAgcmV0dXJuIDE7Cit9CisK K3N0YXRpYyBpbnQKK2dydWJfbHVhX2ZpbGVfZXhpc3QgKGx1YV9TdGF0ZSAqc3RhdGUpCit7Cisg IGdydWJfZmlsZV90IGZpbGU7CisgIGNvbnN0IGNoYXIgKm5hbWU7CisgIGludCByZXN1bHQ7CisK KyAgbmFtZSA9IGx1YUxfY2hlY2tzdHJpbmcgKHN0YXRlLCAxKTsKKyAgZmlsZSA9IGdydWJfZmls ZV9vcGVuIChuYW1lKTsKKyAgaWYgKGZpbGUpCisgICAgeworICAgICAgcmVzdWx0ID0gMTsKKyAg ICAgIGdydWJfZmlsZV9jbG9zZSAoZmlsZSk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg cmVzdWx0ID0gMDsKKyAgICAgIGdydWJfZXJybm8gPSAwOworICAgIH0KKworICBsdWFfcHVzaGJv b2xlYW4gKHN0YXRlLCByZXN1bHQpOworICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZ3J1 Yl9sdWFfYWRkX21lbnUgKGx1YV9TdGF0ZSAqc3RhdGUpCit7ICAgCisgIGludCBuOworICBjb25z dCBjaGFyICpzb3VyY2U7CisKKyAgc291cmNlID0gbHVhTF9jaGVja2xzdHJpbmcgKHN0YXRlLCAx LCAwKTsKKyAgbiA9IGx1YV9nZXR0b3AgKHN0YXRlKSAtIDE7CisgIGlmIChuID4gMCkKKyAgICB7 CisgICAgICBjb25zdCBjaGFyICphcmdzW3NpemVvZiAoY2hhciAqKSAqIG5dOworICAgICAgY2hh ciAqcDsKKyAgICAgIGludCBpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCWFy Z3NbaV0gPSBsdWFMX2NoZWNrc3RyaW5nIChzdGF0ZSwgMiArIGkpOworCisgICAgICBwID0gZ3J1 Yl9zdHJkdXAgKHNvdXJjZSk7CisgICAgICBpZiAoISBwKQorCXJldHVybiBwdXNoX3Jlc3VsdCAo c3RhdGUpOworCisgICAgICBncnViX25vcm1hbF9hZGRfbWVudV9lbnRyeSAobiwgYXJncywgcCk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgbHVhX3B1c2hzdHJpbmcgKHN0YXRlLCAibm90 IGVub3VnaCBwYXJhbWV0ZXIiKTsKKyAgICAgIGx1YV9lcnJvciAoc3RhdGUpOworICAgIH0KKwor ICByZXR1cm4gcHVzaF9yZXN1bHQgKHN0YXRlKTsKK30KKwogbHVhTF9SZWcgZ3J1Yl9sdWFfbGli W10gPQogICB7CiAgICAgeyJydW4iLCBncnViX2x1YV9ydW59LAogICAgIHsiZ2V0ZW52IiwgZ3J1 Yl9sdWFfZ2V0ZW52fSwKICAgICB7InNldGVudiIsIGdydWJfbHVhX3NldGVudn0sCisgICAgeyJl bnVtX2RldmljZSIsIGdydWJfbHVhX2VudW1fZGV2aWNlfSwKKyAgICB7ImVudW1fZmlsZSIsIGdy dWJfbHVhX2VudW1fZmlsZX0sCisgICAgeyJmaWxlX29wZW4iLCBncnViX2x1YV9maWxlX29wZW59 LAorICAgIHsiZmlsZV9jbG9zZSIsIGdydWJfbHVhX2ZpbGVfY2xvc2V9LAorICAgIHsiZmlsZV9z ZWVrIiwgZ3J1Yl9sdWFfZmlsZV9zZWVrfSwKKyAgICB7ImZpbGVfcmVhZCIsIGdydWJfbHVhX2Zp bGVfcmVhZH0sCisgICAgeyJmaWxlX2dldGxpbmUiLCBncnViX2x1YV9maWxlX2dldGxpbmV9LAor ICAgIHsiZmlsZV9nZXRzaXplIiwgZ3J1Yl9sdWFfZmlsZV9nZXRzaXplfSwKKyAgICB7ImZpbGVf Z2V0cG9zIiwgZ3J1Yl9sdWFfZmlsZV9nZXRwb3N9LAorICAgIHsiZmlsZV9lb2YiLCBncnViX2x1 YV9maWxlX2VvZn0sCisgICAgeyJmaWxlX2V4aXN0IiwgZ3J1Yl9sdWFfZmlsZV9leGlzdH0sCisg ICAgeyJhZGRfbWVudSIsIGdydWJfbHVhX2FkZF9tZW51fSwKICAgICB7MCwgMH0KICAgfTsKZGlm ZiAtLWdpdCBhL3NjcmlwdC9sdWEvZ3J1Yl9sdWEuaCBiL3NjcmlwdC9sdWEvZ3J1Yl9sdWEuaApp bmRleCBhMTgxYjUyLi5kNTE4MWYxIDEwMDY0NAotLS0gYS9zY3JpcHQvbHVhL2dydWJfbHVhLmgK KysrIGIvc2NyaXB0L2x1YS9ncnViX2x1YS5oCkBAIC03NywyNiArNzcsMjggQEAgaXNjbnRybCAo aW50IGMpCiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50Ci1zdHJjc3BuKGNvbnN0IGNoYXIgKnMxLCBj b25zdCBjaGFyICpzMikKK2lzdXBwZXIgKGludCBjKQogewotICBpbnQgc2l6ZSA9IDA7Ci0KLSAg d2hpbGUgKCpzMSkKLSAgICB7Ci0gICAgICBjb25zdCBjaGFyICpwID0gczI7CisgIHJldHVybiAo KGMgPj0gJ0EnKSAmJiAoYyA8PSAnWicpKTsKK30KIAotICAgICAgd2hpbGUgKCpwKQotCXsKLQkg IGlmICgqczEgPT0gKnApCi0JICAgIHJldHVybiBzaXplOwotCSAgcCsrOwotCX0KK3N0YXRpYyBp bmxpbmUgaW50Citpc2xvd2VyIChpbnQgYykKK3sKKyAgcmV0dXJuICgoYyA+PSAnYScpICYmIChj IDw9ICd6JykpOworfQogCi0gICAgICBzMSsrOwotICAgICAgc2l6ZSsrOwotICAgIH0KK3N0YXRp YyBpbmxpbmUgaW50Citpc3B1bmN0IChpbnQgYykKK3sKKyAgcmV0dXJuICgoISBpc3NwYWNlIChj KSkgJiYgKCEgaXNhbG51bSAoYykpKTsKK30KIAotICByZXR1cm4gc2l6ZTsKK3N0YXRpYyBpbmxp bmUgaW50Citpc3hkaWdpdCAoaW50IGMpCit7CisgIHJldHVybiAoaXNkaWdpdCAoYykgfHwgKChj ID49ICdhJykgJiYgKGMgPD0gJ2YnKSkgfHwKKwkgICgoYyA+PSAnQScpICYmIChjIDw9ICdGJykp KTsKIH0KIAogc3RhdGljIGlubGluZSBpbnQKQEAgLTEwNSw0ICsxMDcsOCBAQCBhYnMgKGludCBj KQogICByZXR1cm4gKGMgPj0gMCkgPyA6IC1jOwogfQogCitpbnQgc3RyY3NwbiAoY29uc3QgY2hh ciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKK2NoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIgKnMxLCBj b25zdCBjaGFyICpzMik7Cit2b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKnMsIGludCBjLCBzaXpl X3Qgbik7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc2NyaXB0L2x1YS9ncnViX21haW4uYyBiL3Nj cmlwdC9sdWEvZ3J1Yl9tYWluLmMKaW5kZXggMDNmODkwYS4uYjM5MTQxZiAxMDA2NDQKLS0tIGEv c2NyaXB0L2x1YS9ncnViX21haW4uYworKysgYi9zY3JpcHQvbHVhL2dydWJfbWFpbi5jCkBAIC0y NCw2ICsyNCw2MSBAQAogI2luY2x1ZGUgPGdydWIvZGwuaD4KICNpbmNsdWRlIDxncnViL3BhcnNl ci5oPgogCitzdGF0aWMgY29uc3QgY2hhciAqCitzY2FuX3N0ciAoY29uc3QgY2hhciAqczEsIGNv bnN0IGNoYXIgKnMyKQoreworICB3aGlsZSAoKnMxKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIg KnAgPSBzMjsKKworICAgICAgd2hpbGUgKCpwKQorCXsKKwkgIGlmICgqczEgPT0gKnApCisJICAg IHJldHVybiBzMTsKKwkgIHArKzsKKwl9CisKKyAgICAgIHMxKys7CisgICAgfQorCisgIHJldHVy biBzMTsKK30KKworaW50CitzdHJjc3BuIChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIp Cit7CisgIGNvbnN0IGNoYXIgKnI7CisKKyAgciA9IHNjYW5fc3RyIChzMSwgczIpOworICByZXR1 cm4gciAtIHMxOworfQorCitjaGFyICoKK3N0cnBicmsgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBj aGFyICpzMikKK3sKKyAgY29uc3QgY2hhciAqcjsKKworICByID0gc2Nhbl9zdHIgKHMxLCBzMik7 CisgIHJldHVybiAoKnIpID8gKGNoYXIgKikgciA6IDA7Cit9CisKK3ZvaWQgKgorbWVtY2hyIChj b25zdCB2b2lkICpzLCBpbnQgYywgc2l6ZV90IG4pCit7CisgIGNvbnN0IHVuc2lnbmVkIGNoYXIg KnAgPSBzOworCisgIHdoaWxlIChuKQorICAgIHsKKyAgICAgIGlmICgqcCA9PSBjKQorCXJldHVy biAodm9pZCAqKSBwOworCisgICAgICBuLS07CisgICAgICBwKys7CisgICAgfQorCisgIHJldHVy biAwOworfQorCiBzdGF0aWMgbHVhX1N0YXRlICpzdGF0ZTsKIAogLyogQ2FsbCBgZ3J1Yl9lcnJv cicgdG8gcmVwb3J0IGEgTHVhIGVycm9yLiAgVGhlIGVycm9yIG1lc3NhZ2Ugc3RyaW5nIG11c3Qg YmUKZGlmZiAtLWdpdCBhL3NjcmlwdC9sdWEvbGluaXQuYyBiL3NjcmlwdC9sdWEvbGluaXQuYwpp bmRleCBkMDM0YTJmLi5mOTIwYTBiIDEwMDY0NAotLS0gYS9zY3JpcHQvbHVhL2xpbml0LmMKKysr IGIvc2NyaXB0L2x1YS9saW5pdC5jCkBAIC0yMCw3ICsyMCw3IEBAIHN0YXRpYyBjb25zdCBsdWFM X1JlZyBsdWFsaWJzW10gPSB7CiAgIHtMVUFfVEFCTElCTkFNRSwgbHVhb3Blbl90YWJsZX0sCiAv LyAge0xVQV9JT0xJQk5BTUUsIGx1YW9wZW5faW99LAogLy8gIHtMVUFfT1NMSUJOQU1FLCBsdWFv cGVuX29zfSwKLS8vICB7TFVBX1NUUkxJQk5BTUUsIGx1YW9wZW5fc3RyaW5nfSwKKyAge0xVQV9T VFJMSUJOQU1FLCBsdWFvcGVuX3N0cmluZ30sCiAvLyAge0xVQV9NQVRITElCTkFNRSwgbHVhb3Bl bl9tYXRofSwKIC8vICB7TFVBX0RCTElCTkFNRSwgbHVhb3Blbl9kZWJ1Z30sCiAgIHtOVUxMLCBO VUxMfQpkaWZmIC0tZ2l0IGEvdXRpbC9vc2RldGVjdC5sdWEgYi91dGlsL29zZGV0ZWN0Lmx1YQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjFkNDkxCi0tLSAvZGV2L251bGwK KysrIGIvdXRpbC9vc2RldGVjdC5sdWEKQEAgLTAsMCArMSw5NCBAQAorIyFsdWEKKy0tCistLSBD b3B5cmlnaHQgKEMpIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLS0KKy0t IEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorLS0gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0tIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCistLSAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorLS0KKy0tIEdSVUIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLSBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS0KKy0tIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistLSBh bG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCistLQorCitmdW5jdGlvbiBlbnVtX2RldmljZSAoZGV2aWNlLCBmcywgdXVpZCkKKyAgbG9j YWwgcm9vdAorICBsb2NhbCB0aXRsZQorICBsb2NhbCBzb3VyY2UKKyAgbG9jYWwga2VybmVscyA9 IHt9CisgIGxvY2FsIGtlcm5lbF9udW0gPSAwCisKKyAgbG9jYWwgZnVuY3Rpb24gZW51bV9maWxl IChuYW1lKQorICAgIGxvY2FsIHZlcnNpb24KKworICAgIHZlcnNpb24gPSBzdHJpbmcubWF0Y2gg KG5hbWUsICJ2bWxpbnV6JS0oLiopIikKKyAgICBpZiAodmVyc2lvbiB+PSBuaWwpIHRoZW4KKyAg ICAgIHRhYmxlLmluc2VydCAoa2VybmVscywgdmVyc2lvbikKKyAgICAgIGtlcm5lbF9udW0gPSBr ZXJuZWxfbnVtICsgMQorICAgIGVuZAorICBlbmQKKworICBsb2NhbCBmdW5jdGlvbiBzb3J0X2tl cm5lbCAoZmlyc3QsIHNlY29uZCkKKyAgICBsb2NhbCBhMSwgYTIsIGEzLCBhNCwgYjEsIGIyLCBi MywgYjQKKyAgICAKKyAgICBhMSwgYTIsIGEzLCBhNCA9IHN0cmluZy5tYXRjaCAoZmlyc3QsICIo JWQrKSUuPyglZCopLj8oJWQqKSUtPyglZCopIikKKyAgICBiMSwgYjIsIGIzLCBiNCA9IHN0cmlu Zy5tYXRjaCAoc2Vjb25kLCAiKCVkKyklLj8oJWQqKS4/KCVkKiklLT8oJWQqKSIpCisgICAgcmV0 dXJuIChhMSA+IGIxKSBvciAoYTIgPiBiMikgb3IgKGEzID4gYjMpIG9yIChhNCA+IGI0KTsKKyAg ZW5kCisKKyAgcm9vdCA9ICIoIiAuLiBkZXZpY2UgLi4gIikvIgorICBzb3VyY2UgPSAicm9vdCAi IC4uIGRldmljZSAuLiAiXG5jaGFpbmxvYWRlciArMSIKKyAgdGl0bGUgPSBuaWwKKyAgaWYgKGdy dWIuZmlsZV9leGlzdCAocm9vdCAuLiAiYm9vdG1nciIpIGFuZAorICAgICAgZ3J1Yi5maWxlX2V4 aXN0IChyb290IC4uICJib290L2JjZCIpKSB0aGVuCisgICAgdGl0bGUgPSAiV2luZG93cyBWaXN0 YSBib290bWdyIgorICBlbHNlaWYgKGdydWIuZmlsZV9leGlzdCAocm9vdCAuLiAibnRsZHIiKSBh bmQKKyAgICAgICAgICBncnViLmZpbGVfZXhpc3QgKHJvb3QgLi4gIm50ZGV0ZWN0LmNvbSIpIGFu ZAorICAgICAgICAgIGdydWIuZmlsZV9leGlzdCAocm9vdCAuLiAiYm9vdC5pbmkiKSkgdGhlbgor ICAgIHRpdGxlID0gIldpbmRvd3MgTlQvMjAwMC9YUCBsb2FkZXIiCisgIGVsc2UKKyAgICBncnVi LmVudW1fZmlsZSAoZW51bV9maWxlLCByb290IC4uICJib290IikKKyAgICBpZiBrZXJuZWxfbnVt IH49IDAgdGhlbgorICAgICAgdGFibGUuc29ydCAoa2VybmVscywgc29ydF9rZXJuZWwpCisgICAg ICBmb3IgaSA9IDEsIGtlcm5lbF9udW0gZG8KKwlsb2NhbCBpbml0cmQKKworCXRpdGxlID0gImxp bnV4ICIgLi4ga2VybmVsc1tpXQorCXNvdXJjZSA9ICJyb290ICIgLi4gZGV2aWNlIC4uCisJICAi XG5saW51eCAvYm9vdC92bWxpbnV6LSIgLi4ga2VybmVsc1tpXSAuLgorCSAgIiByb290PVVVSUQ9 IiAuLiB1dWlkIC4uICIgcm8iCisKKwlpZiBncnViLmZpbGVfZXhpc3QgKHJvb3QgLi4gImJvb3Qv aW5pdHJkLmltZy0iIC4uIGtlcm5lbHNbaV0pIHRoZW4KKwkgIGluaXRyZCA9ICJcbmluaXJkIC9i b290L2luaXRyZC5pbWctIiAuLiBrZXJuZWxzW2ldCisJZWxzZQorCSAgaW5pdHJkID0gIiIKKwll bmQKKworCWdydWIuYWRkX21lbnUgKHNvdXJjZSAuLiBpbml0cmQsIHRpdGxlKQorCWdydWIuYWRk X21lbnUgKHNvdXJjZSAuLiAiIHNpbmdsZSIgLi4gaW5pdHJkLAorCSAgICAgICAgICAgICAgIHRp dGxlIC4uICIgKHNpbmdsZS11c2VyIG1vZGUpIikKKyAgICAgIGVuZAorICAgICAgcmV0dXJuIDAK KyAgICBlbmQKKyAgZW5kCisKKyAgaWYgdGl0bGUgPT0gbmlsIHRoZW4KKyAgICBsb2NhbCBwYXJ0 aXRpb24gPSBzdHJpbmcubWF0Y2ggKGRldmljZSwgIi4qLCglZCspIikKKworICAgIGlmIChwYXJ0 aXRpb24gfj0gbmlsKSBhbmQgKHRvbnVtYmVyIChwYXJ0aXRpb24pID4gNCkgdGhlbgorICAgICAg cmV0dXJuIDAKKyAgICBlbmQKKworICAgIHRpdGxlID0gIk90aGVyIE9TIgorICBlbmQKKworICBn cnViLmFkZF9tZW51IChzb3VyY2UsIHRpdGxlKQorICByZXR1cm4gMAorZW5kCisKK2dydWIuZW51 bV9kZXZpY2UgKGVudW1fZGV2aWNlKQo= --0016364c673feeeefa046cf4b0e5--