From: marko.makela Date: September 20 2012 10:35am Subject: bzr push into mysql-5.6-wl6494 branch (marko.makela:4301 to 4302) WL#6494 List-Archive: http://lists.mysql.com/commits/144857 Message-Id: <20120920103557.6072.88282.4302@x220> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDQzMDIgTWFya28gTcOka2Vsw6QJMjAxMi0wOS0yMAogICAgICBXTCM2NDk0IHByZXBhcmF0aW9u OiBSZWZhY3RvciB0aGUgcmVkbyBsb2cgb3Blbi9jcmVhdGUuCiAgICAgIAogICAgICBzcnZfbG9n X2ZpbGVfc2l6ZV9yZXF1ZXN0ZWQ6IEEgY29weSBvZiBzcnZfbG9nX2ZpbGVfc2l6ZS4KICAgICAg CiAgICAgIHNydl9sb2dfZmlsZV9zaXplOiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHJlZG8gbG9n IGZpbGVzLCBpbiBwYWdlcy4KICAgICAgCiAgICAgIG9wZW5fb3JfY3JlYXRlX2xvZ19maWxlKCk6 IFJlZmFjdG9yIGludG8gY3JlYXRlX2xvZ19maWxlKCkgYW5kCiAgICAgIG9wZW5fbG9nX2ZpbGUo KS4KICAgICAgCiAgICAgIGlubm9iYXNlX3N0YXJ0X29yX2NyZWF0ZV9mb3JfbXlzcWwoKTogSWYg aWJfbG9nZmlsZTAgY2Fubm90IGJlIGZvdW5kLAogICAgICBjcmVhdGUgbG9nIGZpbGVzLiBPdGhl cndpc2UsIG9wZW4gdGhlIGxvZyBmaWxlcyBhbmQgZW5zdXJlIHRoYXQgZXZlcnkKICAgICAgZmls ZSBpcyBvZiB0aGUgc2FtZSBzaXplLCB3aGljaCBpcyBhIG11bHRpcGxlIG9mIHRoZSBwYWdlIHNp emUuCiAgICAgIAogICAgICBpbm5vYmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKCk6IEFm dGVyIHByb2Nlc3NpbmcgdGhlIHJlZG8gbG9nCiAgICAgIGZpbGVzLCBpZiB0aGUgbnVtYmVyIG9y IHNpemUgb2YgcmVkbyBsb2cgZmlsZXMgZGlzYWdyZWVzIHdpdGggdGhlCiAgICAgIGNvbmZpZ3Vy ZWQgbnVtYmVyIG9yIHNpemUsIGNyYXNoIHRoZSBzZXJ2ZXIuIChUaGlzIGlzIGEgcGxhY2Vob2xk ZXIKICAgICAgZm9yIHRoZSBjb2RlIHRoYXQgd2lsbCByZXBsYWNlIHRoZSBsb2dzLikKCiAgICBt b2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3NydjBzcnYuaAogICAgICBz dG9yYWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3J2 L3NydjBzdGFydC5jYwogNDMwMSBNYXJrbyBNw6RrZWzDpAkyMDEyLTA5LTIwCiAgICAgIFdMIzY0 OTQgcHJlcGFyYXRpb24gKG5vbi1mdW5jdGlvbmFsIGNoYW5nZSkKICAgICAgCiAgICAgIGxvZ19n cm91cF9jbG9zZV9hbGwoKTogUmVmYWN0b3JlZCBmcm9tIGxvZ19zaHV0ZG93bigpLgoKICAgIG1v ZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9nMGxvZy5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuY2MKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9zcnYwc3J2LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9zcnYwc3J2LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA5MjAxMDA3NTct b3VmeWZieDI3NmdxY2JxZAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3J2MHNydi5o CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwOTIwMTAzNDMyLWNvNzlnNWp6MXM1 em9uZGIKQEAgLTI0NSw2ICsyNDUsNyBAQCBleHRlcm4gaWJvb2wJc3J2X2NyZWF0ZWRfbmV3X3Jh dzsKIAogZXh0ZXJuIHVsaW50CXNydl9uX2xvZ19maWxlczsKIGV4dGVybiBpYl91aW50NjRfdAlz cnZfbG9nX2ZpbGVfc2l6ZTsKK2V4dGVybiBpYl91aW50NjRfdAlzcnZfbG9nX2ZpbGVfc2l6ZV9y ZXF1ZXN0ZWQ7CiBleHRlcm4gdWxpbnQJc3J2X2xvZ19idWZmZXJfc2l6ZTsKIGV4dGVybiB1bG9u ZwlzcnZfZmx1c2hfbG9nX2F0X3RyeF9jb21taXQ7CiBleHRlcm4gdWludAlzcnZfZmx1c2hfbG9n X2F0X3RpbWVvdXQ7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2 MHNydi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDkyMDEwMDc1Ny1vdWZ5ZmJ4Mjc2Z3FjYnFkCisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA5MjAxMDM0MzItY283OWc1anoxczV6b25kYgpAQCAtMTgxLDYgKzE4MSw3IEBA IFVOSVZfSU5URVJOIGNoYXIqCXNydl9sb2dfZ3JvdXBfaG9tZV9kaXIKIFVOSVZfSU5URVJOIHVs aW50CXNydl9uX2xvZ19maWxlcwkJPSBVTElOVF9NQVg7CiAvKiBzaXplIGluIGRhdGFiYXNlIHBh Z2VzICovCiBVTklWX0lOVEVSTiBpYl91aW50NjRfdAlzcnZfbG9nX2ZpbGVfc2l6ZQk9IElCX1VJ TlQ2NF9NQVg7CitVTklWX0lOVEVSTiBpYl91aW50NjRfdAlzcnZfbG9nX2ZpbGVfc2l6ZV9yZXF1 ZXN0ZWQ7CiAvKiBzaXplIGluIGRhdGFiYXNlIHBhZ2VzICovCiBVTklWX0lOVEVSTiB1bGludAlz cnZfbG9nX2J1ZmZlcl9zaXplCT0gVUxJTlRfTUFYOwogVU5JVl9JTlRFUk4gdWxvbmcJc3J2X2Zs dXNoX2xvZ19hdF90cnhfY29tbWl0ID0gMTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Nydi9zcnYwc3RhcnQuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBz dGFydC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDkyMDEwMDc1Ny1vdWZ5 ZmJ4Mjc2Z3FjYnFkCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDkyMDEwMzQzMi1jbzc5ZzVqejFzNXpvbmRi CkBAIC01MDYsMTc0ICs1MDYsODEgQEAgc3J2X25vcm1hbGl6ZV9wYXRoX2Zvcl93aW4oCiAKICNp Zm5kZWYgVU5JVl9IT1RCQUNLVVAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DcmVhdGVzIG9yIG9wZW5z IHRoZSBsb2cgZmlsZXMgYW5kIGNsb3NlcyB0aGVtLgorQ3JlYXRlcyBhIGxvZyBmaWxlLgogQHJl dHVybglEQl9TVUNDRVNTIG9yIGVycm9yIGNvZGUgKi8KIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKChu b25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKQogZGJlcnJfdAotb3Blbl9vcl9jcmVhdGVfbG9n X2ZpbGUoCi0vKj09PT09PT09PT09PT09PT09PT09Ki8KLQlpYm9vbAljcmVhdGVfbmV3X2RiLAkJ LyohPCBpbjogVFJVRSBpZiB3ZSBzaG91bGQgY3JlYXRlIGEKLQkJCQkJbmV3IGRhdGFiYXNlICov Ci0JaWJvb2wqCWxvZ19maWxlX2NyZWF0ZWQsCS8qITwgb3V0OiBUUlVFIGlmIG5ldyBsb2cgZmls ZQotCQkJCQljcmVhdGVkICovCi0JaWJvb2wJbG9nX2ZpbGVfaGFzX2JlZW5fb3BlbmVkLC8qITwg aW46IFRSVUUgaWYgYSBsb2cgZmlsZSBoYXMgYmVlbgotCQkJCQlvcGVuZWQgYmVmb3JlOiB0aGVu IGl0IGlzIGFuIGVycm9yCi0JCQkJCXRvIHRyeSB0byBjcmVhdGUgYW5vdGhlciBsb2cgZmlsZSAq LwotCXVsaW50CWssCQkJLyohPCBpbjogbG9nIGdyb3VwIG51bWJlciAqLwotCXVsaW50CWkpCQkJ LyohPCBpbjogbG9nIGZpbGUgbnVtYmVyIGluIGdyb3VwICovCitjcmVhdGVfbG9nX2ZpbGUoCisv Kj09PT09PT09PT09PSovCisJb3NfZmlsZV90KglmaWxlLAkvKiE8IG91dDogZmlsZSBoYW5kbGUg Ki8KKwljb25zdCBjaGFyKgluYW1lKQkvKiE8IGluOiBsb2cgZmlsZSBuYW1lICovCiB7CiAJaWJv b2wJCXJldDsKLQlvc19vZmZzZXRfdAlzaXplOwotCWNoYXIJCW5hbWVbMTAwMDBdOwotCXVsaW50 CQlkaXJuYW1lbGVuOwotCi0JVVRfTk9UX1VTRUQoY3JlYXRlX25ld19kYik7Ci0KLQkqbG9nX2Zp bGVfY3JlYXRlZCA9IEZBTFNFOwotCi0Jc3J2X25vcm1hbGl6ZV9wYXRoX2Zvcl93aW4oc3J2X2xv Z19ncm91cF9ob21lX2Rpcik7Ci0KLQlkaXJuYW1lbGVuID0gc3RybGVuKHNydl9sb2dfZ3JvdXBf aG9tZV9kaXIpOwotCXV0X2EoZGlybmFtZWxlbiA8IChzaXplb2YgbmFtZSkgLSAxMCAtIHNpemVv ZiAiaWJfbG9nZmlsZSIpOwotCW1lbWNweShuYW1lLCBzcnZfbG9nX2dyb3VwX2hvbWVfZGlyLCBk aXJuYW1lbGVuKTsKIAotCS8qIEFkZCBhIHBhdGggc2VwYXJhdG9yIGlmIG5lZWRlZC4gKi8KLQlp ZiAoZGlybmFtZWxlbiAmJiBuYW1lW2Rpcm5hbWVsZW4gLSAxXSAhPSBTUlZfUEFUSF9TRVBBUkFU T1IpIHsKLQkJbmFtZVtkaXJuYW1lbGVuKytdID0gU1JWX1BBVEhfU0VQQVJBVE9SOwotCX0KLQot CXNwcmludGYobmFtZSArIGRpcm5hbWVsZW4sICIlcyVsdSIsICJpYl9sb2dmaWxlIiwgKHVsb25n KSBpKTsKLQotCS8qIE5vdGU6IElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QgdGhlbiB0aGlzIGNo ZWNrIHdpbGwgcmV0dXJuIHRydWUuICovCi0KLQlpZiAoIXNydl9maWxlX2NoZWNrX21vZGUobmFt ZSkpIHsKLQkJcmV0dXJuKERCX0VSUk9SKTsKLQl9Ci0KLQlmaWxlc1tpXSA9IG9zX2ZpbGVfY3Jl YXRlKAorCSpmaWxlID0gb3NfZmlsZV9jcmVhdGUoCiAJCWlubm9kYl9maWxlX2xvZ19rZXksIG5h bWUsCiAJCU9TX0ZJTEVfQ1JFQVRFLCBPU19GSUxFX05PUk1BTCwgT1NfTE9HX0ZJTEUsICZyZXQp OwogCi0JaWYgKHJldCA9PSBGQUxTRSkgewotCQlpZiAob3NfZmlsZV9nZXRfbGFzdF9lcnJvcihm YWxzZSkgIT0gT1NfRklMRV9BTFJFQURZX0VYSVNUUwotI2lmZGVmIFVOSVZfQUlYCi0JCSAgICAv KiBBSVggNS4xIGFmdGVyIHNlY3VyaXR5IHBhdGNoIE1MNyBtYXkgaGF2ZSBlcnJubyBzZXQKLQkJ ICAgIHRvIDAgaGVyZSwgd2hpY2ggY2F1c2VzIG91ciBmdW5jdGlvbiB0byByZXR1cm4gMTAwOwot CQkgICAgd29yayBhcm91bmQgdGhhdCBBSVggcHJvYmxlbSAqLwotCQkgICAgJiYgb3NfZmlsZV9n ZXRfbGFzdF9lcnJvcihmYWxzZSkgIT0gMTAwCi0jZW5kaWYKLQkJICAgICkgewotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJIklubm9EQjogRXJyb3IgaW4gY3JlYXRpbmciCi0JCQkJIiBvciBvcGVu aW5nICVzXG4iLCBuYW1lKTsKLQotCQkJcmV0dXJuKERCX0VSUk9SKTsKLQkJfQotCi0JCWZpbGVz W2ldID0gb3NfZmlsZV9jcmVhdGUoaW5ub2RiX2ZpbGVfbG9nX2tleSwgbmFtZSwKLQkJCQkJICBP U19GSUxFX09QRU4sIE9TX0ZJTEVfQUlPLAotCQkJCQkgIE9TX0xPR19GSUxFLCAmcmV0KTsKLQkJ aWYgKCFyZXQpIHsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCSJJbm5vREI6IEVycm9yIGluIG9w ZW5pbmcgJXNcbiIsIG5hbWUpOwotCi0JCQlyZXR1cm4oREJfRVJST1IpOwotCQl9Ci0KLQkJc2l6 ZSA9IG9zX2ZpbGVfZ2V0X3NpemUoZmlsZXNbaV0pOwotCQl1dF9hKHNpemUgIT0gKG9zX29mZnNl dF90KSAtMSk7Ci0KLQkJaWYgKFVOSVZfVU5MSUtFTFkoc2l6ZSAhPSAob3Nfb2Zmc2V0X3QpIHNy dl9sb2dfZmlsZV9zaXplCi0JCQkJICA8PCBVTklWX1BBR0VfU0laRV9TSElGVCkpIHsKLQotCQkJ ZnByaW50ZihzdGRlcnIsCi0JCQkJIklubm9EQjogRXJyb3I6IGxvZyBmaWxlICVzIGlzIgotCQkJ CSIgb2YgZGlmZmVyZW50IHNpemUgIlVJTlQ2NFBGIiBieXRlc1xuIgotCQkJCSJJbm5vREI6IHRo YW4gc3BlY2lmaWVkIGluIHRoZSAuY25mIgotCQkJCSIgZmlsZSAiVUlOVDY0UEYiIGJ5dGVzIVxu IiwKLQkJCQluYW1lLCBzaXplLAotCQkJCShvc19vZmZzZXRfdCkgc3J2X2xvZ19maWxlX3NpemUK LQkJCQk8PCBVTklWX1BBR0VfU0laRV9TSElGVCk7CisJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVy cik7CiAKLQkJCXJldHVybihEQl9FUlJPUik7Ci0JCX0KLQl9IGVsc2UgewotCQkqbG9nX2ZpbGVf Y3JlYXRlZCA9IFRSVUU7CisJZnByaW50ZihzdGRlcnIsCisJCSIgSW5ub0RCOiBMb2cgZmlsZSAl cyBkaWQgbm90IGV4aXN0OiIKKwkJIiBuZXcgdG8gYmUgY3JlYXRlZFxuIiwKKwkJbmFtZSk7CisK KwlmcHJpbnRmKHN0ZGVyciwgIklubm9EQjogU2V0dGluZyBsb2cgZmlsZSAlcyBzaXplIHRvICVs dSBNQlxuIiwKKwkJbmFtZSwgKHVsb25nKSBzcnZfbG9nX2ZpbGVfc2l6ZQorCQk+PiAoMjAgLSBV TklWX1BBR0VfU0laRV9TSElGVCkpOwogCi0JCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwor CWZwcmludGYoc3RkZXJyLAorCQkiSW5ub0RCOiBEYXRhYmFzZSBwaHlzaWNhbGx5IHdyaXRlcyB0 aGUgZmlsZSIKKwkJIiBmdWxsOiB3YWl0Li4uXG4iKTsKIAorCXJldCA9IG9zX2ZpbGVfc2V0X3Np emUobmFtZSwgKmZpbGUsCisJCQkgICAgICAgKG9zX29mZnNldF90KSBzcnZfbG9nX2ZpbGVfc2l6 ZQorCQkJICAgICAgIDw8IFVOSVZfUEFHRV9TSVpFX1NISUZUKTsKKwlpZiAoIXJldCkgewogCQlm cHJpbnRmKHN0ZGVyciwKLQkJCSIgSW5ub0RCOiBMb2cgZmlsZSAlcyBkaWQgbm90IGV4aXN0OiIK LQkJCSIgbmV3IHRvIGJlIGNyZWF0ZWRcbiIsCisJCQkiSW5ub0RCOiBFcnJvciBpbiBjcmVhdGlu ZyAlczoiCisJCQkiIHByb2JhYmx5IG91dCBvZiBkaXNrIHNwYWNlXG4iLAogCQkJbmFtZSk7Ci0J CWlmIChsb2dfZmlsZV9oYXNfYmVlbl9vcGVuZWQpIHsKLQotCQkJcmV0dXJuKERCX0VSUk9SKTsK LQkJfQotCi0JCWZwcmludGYoc3RkZXJyLCAiSW5ub0RCOiBTZXR0aW5nIGxvZyBmaWxlICVzIHNp emUgdG8gJWx1IE1CXG4iLAotCQkJbmFtZSwgKHVsb25nKSBzcnZfbG9nX2ZpbGVfc2l6ZQotCQkJ Pj4gKDIwIC0gVU5JVl9QQUdFX1NJWkVfU0hJRlQpKTsKIAotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CSJJbm5vREI6IERhdGFiYXNlIHBoeXNpY2FsbHkgd3JpdGVzIHRoZSBmaWxlIgotCQkJIiBmdWxs OiB3YWl0Li4uXG4iKTsKLQotCQlyZXQgPSBvc19maWxlX3NldF9zaXplKG5hbWUsIGZpbGVzW2ld LAotCQkJCSAgICAgICAob3Nfb2Zmc2V0X3QpIHNydl9sb2dfZmlsZV9zaXplCi0JCQkJICAgICAg IDw8IFVOSVZfUEFHRV9TSVpFX1NISUZUKTsKLQkJaWYgKCFyZXQpIHsKLQkJCWZwcmludGYoc3Rk ZXJyLAotCQkJCSJJbm5vREI6IEVycm9yIGluIGNyZWF0aW5nICVzOiIKLQkJCQkiIHByb2JhYmx5 IG91dCBvZiBkaXNrIHNwYWNlXG4iLAotCQkJCW5hbWUpOwotCi0JCQlyZXR1cm4oREJfRVJST1Ip OwotCQl9CisJCXJldHVybihEQl9FUlJPUik7CiAJfQogCi0JcmV0ID0gb3NfZmlsZV9jbG9zZShm aWxlc1tpXSk7CisJcmV0ID0gb3NfZmlsZV9jbG9zZSgqZmlsZSk7CiAJdXRfYShyZXQpOwogCi0J aWYgKGkgPT0gMCkgewotCQkvKiBDcmVhdGUgaW4gbWVtb3J5IHRoZSBmaWxlIHNwYWNlIG9iamVj dAotCQl3aGljaCBpcyBmb3IgdGhpcyBsb2cgZ3JvdXAgKi8KLQotCQlmaWxfc3BhY2VfY3JlYXRl KG5hbWUsCi0JCQkJIDIgKiBrICsgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCwKLQkJCQkgZnNwX2Zs YWdzX3NldF9wYWdlX3NpemUoMCwgVU5JVl9QQUdFX1NJWkUpLAotCQkJCSBGSUxfTE9HKTsKLQl9 Ci0KLQl1dF9hKGZpbF92YWxpZGF0ZSgpKTsKLQotCS8qIHNydl9sb2dfZmlsZV9zaXplIGlzIG1l YXN1cmVkIGluIHBhZ2VzOyBpZiBwYWdlIHNpemUgaXMgMTZLQiwKLQl0aGVuIHdlIGhhdmUgYSBs aW1pdCBvZiA2NFRCIG9uIDMyIGJpdCBzeXN0ZW1zICovCi0JdXRfYShzcnZfbG9nX2ZpbGVfc2l6 ZSA8PSBVTElOVF9NQVgpOworCXJldHVybihEQl9TVUNDRVNTKTsKK30KIAotCWZpbF9ub2RlX2Ny ZWF0ZShuYW1lLCAodWxpbnQpIHNydl9sb2dfZmlsZV9zaXplLAotCQkJMiAqIGsgKyBTUlZfTE9H X1NQQUNFX0ZJUlNUX0lELCBGQUxTRSk7Ci0jaWZkZWYgVU5JVl9MT0dfQVJDSElWRQotCS8qIElm IHRoaXMgaXMgdGhlIGZpcnN0IGxvZyBncm91cCwgY3JlYXRlIHRoZSBmaWxlIHNwYWNlIG9iamVj dAotCWZvciBhcmNoaXZlZCBsb2dzLgotCVVuZGVyIE15U1FMLCBubyBhcmNoaXZpbmcgZXZlciBk b25lLiAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK09wZW5zIGEgbG9nIGZpbGUuCitAcmV0dXJuCURC X1NVQ0NFU1Mgb3IgZXJyb3IgY29kZSAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGws IHdhcm5fdW51c2VkX3Jlc3VsdCkpCitkYmVycl90CitvcGVuX2xvZ19maWxlKAorLyo9PT09PT09 PT09Ki8KKwlvc19maWxlX3QqCWZpbGUsCS8qITwgb3V0OiBmaWxlIGhhbmRsZSAqLworCWNvbnN0 IGNoYXIqCW5hbWUsCS8qITwgaW46IGxvZyBmaWxlIG5hbWUgKi8KKwlvc19vZmZzZXRfdCoJc2l6 ZSkJLyohPCBvdXQ6IGZpbGUgc2l6ZSAqLworeworCWlib29sCXJldDsKIAotCWlmIChrID09IDAg JiYgaSA9PSAwKSB7Ci0JCWFyY2hfc3BhY2VfaWQgPSAyICogayArIDEgKyBTUlZfTE9HX1NQQUNF X0ZJUlNUX0lEOworCSpmaWxlID0gb3NfZmlsZV9jcmVhdGUoaW5ub2RiX2ZpbGVfbG9nX2tleSwg bmFtZSwKKwkJCSAgICAgICBPU19GSUxFX09QRU4sIE9TX0ZJTEVfQUlPLAorCQkJICAgICAgIE9T X0xPR19GSUxFLCAmcmV0KTsKKwlpZiAoIXJldCkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJJ bm5vREI6IEVycm9yIGluIG9wZW5pbmcgJXNcbiIsIG5hbWUpOwogCi0JCWZpbF9zcGFjZV9jcmVh dGUoImFyY2hfbG9nX3NwYWNlIiwgYXJjaF9zcGFjZV9pZCwgMCwgRklMX0xPRyk7Ci0JfSBlbHNl IHsKLQkJYXJjaF9zcGFjZV9pZCA9IFVMSU5UX1VOREVGSU5FRDsKLQl9Ci0jZW5kaWYgLyogVU5J Vl9MT0dfQVJDSElWRSAqLwotCWlmIChpID09IDApIHsKLQkJbG9nX2dyb3VwX2luaXQoaywgc3J2 X25fbG9nX2ZpbGVzLAotCQkJICAgICAgIHNydl9sb2dfZmlsZV9zaXplICogVU5JVl9QQUdFX1NJ WkUsCi0JCQkgICAgICAgMiAqIGsgKyBTUlZfTE9HX1NQQUNFX0ZJUlNUX0lELAotCQkJICAgICAg IFNSVl9MT0dfU1BBQ0VfRklSU1RfSUQgKyAxKTsgLyogZHVtbXkgYXJjaAotCQkJCQkJCSAgICBz cGFjZSBpZCAqLworCQlyZXR1cm4oREJfRVJST1IpOwogCX0KIAorCSpzaXplID0gb3NfZmlsZV9n ZXRfc2l6ZSgqZmlsZSk7CisKKwlyZXQgPSBvc19maWxlX2Nsb3NlKCpmaWxlKTsKKwl1dF9hKHJl dCk7CiAJcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCkBAIC0xMzczLDkgKzEyODAsNyBAQCBpbm5v YmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQpCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSovCiB7CiAJaWJvb2wJCWNyZWF0ZV9uZXdfZGI7Ci0JaWJvb2wJ CWxvZ19maWxlX2NyZWF0ZWQ7Ci0JaWJvb2wJCWxvZ19jcmVhdGVkCT0gRkFMU0U7Ci0JaWJvb2wJ CWxvZ19vcGVuZWQJPSBGQUxTRTsKKwlpYm9vbAkJbG9nX2NyZWF0ZWQ7CiAJbHNuX3QJCW1pbl9m bHVzaGVkX2xzbjsKIAlsc25fdAkJbWF4X2ZsdXNoZWRfbHNuOwogI2lmZGVmIFVOSVZfTE9HX0FS Q0hJVkUKQEAgLTEzOTAsNiArMTI5NSw4IEBAIGlubm9iYXNlX3N0YXJ0X29yX2NyZWF0ZV9mb3Jf bXlzcWwodm9pZCkKIAl1bGludAkJaW9fbGltaXQ7CiAJbXRyX3QJCW10cjsKIAlpYl9iaF90Kglp Yl9iaDsKKwljaGFyCQlsb2dmaWxlbmFtZVsxMDAwMF07CisJc2l6ZV90CQlkaXJuYW1lbGVuOwog CiAjaWZkZWYgSEFWRV9EQVJXSU5fVEhSRUFEUwogIyBpZmRlZiBGX0ZVTExGU1lOQwpAQCAtMTc5 NCw3ICsxNzAxLDcgQEAgaW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9teXNxbCh2b2lkKQog CX0KIAogI2lmZGVmIFVOSVZfTE9HX0FSQ0hJVkUKLQlpZiAoMCAhPSB1dF9zdHJjbXAoc3J2X2xv Z19ncm91cF9ob21lX2RpcnNbMF0sIHNydl9hcmNoX2RpcikpIHsKKwlpZiAoMCAhPSB1dF9zdHJj bXAoc3J2X2xvZ19ncm91cF9ob21lX2Rpciwgc3J2X2FyY2hfZGlyKSkgewogCQl1dF9wcmludF90 aW1lc3RhbXAoc3RkZXJyKTsKIAkJZnByaW50ZihzdGRlcnIsICIgSW5ub0RCOiBFcnJvcjogeW91 IG11c3Qgc2V0IHRoZSBsb2cgZ3JvdXAgaG9tZSBkaXIgaW4gbXkuY25mXG4iKTsKIAkJdXRfcHJp bnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0xODk4LDM2ICsxODA1LDEyMyBAQCBpbm5vYmFzZV9z dGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQpCiAJc3J2X2FyY2hfZGlyID0gc3J2X2FkZF9w YXRoX3NlcGFyYXRvcl9pZl9uZWVkZWQoc3J2X2FyY2hfZGlyKTsKICNlbmRpZiAvKiBVTklWX0xP R19BUkNISVZFICovCiAKLQlmb3IgKGkgPSAwOyBpIDwgc3J2X25fbG9nX2ZpbGVzOyBpKyspIHsK KwlkaXJuYW1lbGVuID0gc3RybGVuKHNydl9sb2dfZ3JvdXBfaG9tZV9kaXIpOworCXV0X2EoZGly bmFtZWxlbiA8IChzaXplb2YgbG9nZmlsZW5hbWUpIC0gMTAgLSBzaXplb2YgImliX2xvZ2ZpbGUi KTsKKwltZW1jcHkobG9nZmlsZW5hbWUsIHNydl9sb2dfZ3JvdXBfaG9tZV9kaXIsIGRpcm5hbWVs ZW4pOwogCi0JCWVyciA9IG9wZW5fb3JfY3JlYXRlX2xvZ19maWxlKAotCQkJY3JlYXRlX25ld19k YiwgJmxvZ19maWxlX2NyZWF0ZWQsIGxvZ19vcGVuZWQsIDAsIGkpOworCS8qIEFkZCBhIHBhdGgg c2VwYXJhdG9yIGlmIG5lZWRlZC4gKi8KKwlpZiAoZGlybmFtZWxlbiAmJiBsb2dmaWxlbmFtZVtk aXJuYW1lbGVuIC0gMV0gIT0gU1JWX1BBVEhfU0VQQVJBVE9SKSB7CisJCWxvZ2ZpbGVuYW1lW2Rp cm5hbWVsZW4rK10gPSBTUlZfUEFUSF9TRVBBUkFUT1I7CisJfQogCi0JCWlmIChlcnIgIT0gREJf U1VDQ0VTUykgeworCXNydl9sb2dfZmlsZV9zaXplX3JlcXVlc3RlZCA9IHNydl9sb2dfZmlsZV9z aXplOworCWxvZ19jcmVhdGVkID0gRkFMU0U7CiAKLQkJCXJldHVybihlcnIpOwotCQl9IGVsc2Ug aWYgKGxvZ19maWxlX2NyZWF0ZWQpIHsKLQkJCWxvZ19jcmVhdGVkID0gVFJVRTsKLQkJfSBlbHNl IHsKLQkJCWxvZ19vcGVuZWQgPSBUUlVFOworCWlmIChjcmVhdGVfbmV3X2RiKSB7CitjcmVhdGVf bG9nX2ZpbGVzOgorCQlmb3IgKGkgPSAwOyBpIDwgc3J2X25fbG9nX2ZpbGVzOyBpKyspIHsKKwkJ CXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLAorCQkJCSJpYl9sb2dmaWxlJWx1Iiwg KHVsb25nKSBpKTsKKworCQkJZXJyID0gY3JlYXRlX2xvZ19maWxlKCZmaWxlc1tpXSwgbG9nZmls ZW5hbWUpOworCisJCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKKwkJCQlyZXR1cm4oZXJyKTsK KwkJCX0KIAkJfQotCQlpZiAoKGxvZ19vcGVuZWQgJiYgY3JlYXRlX25ld19kYikKLQkJICAgIHx8 IChsb2dfb3BlbmVkICYmIGxvZ19jcmVhdGVkKSkgewogCi0JCQlpYl9sb2dmKElCX0xPR19MRVZF TF9FUlJPUiwKLQkJCQkiQWxsIGxvZyBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgYXQgdGhlICIKLQkJ CQkic2FtZSB0aW1lLiBBbGwgbG9nIGZpbGVzIG11c3QgYmUgY3JlYXRlZCAiCi0JCQkJImFsc28g aW4gZGF0YWJhc2UgY3JlYXRpb24uIElmIHlvdSB3YW50ICIKLQkJCQkiYmlnZ2VyIG9yIHNtYWxs ZXIgbG9nIGZpbGVzLCBzaHV0IGRvd24gIgotCQkJCSJ0aGUgZGF0YWJhc2UgY2xlYW5seSBhbmQg bWFrZSBzdXJlIHRoZXJlICIKLQkJCQkid2VyZSBubyBlcnJvcnMgZHVyaW5nIHNodXRkb3duLiBU aGVuIGRlbGV0ZSAiCi0JCQkJInRoZSBleGlzdGluZyBsb2cgZmlsZXMuIEVkaXQgdGhlIC5jbmYg ZmlsZSAiCi0JCQkJImFuZCBzdGFydCB0aGUgZGF0YWJhc2UgYWdhaW4uIik7CisJCWxvZ19jcmVh dGVkID0gVFJVRTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAwOyBpIDwgMTAwLyogbWF4IG9mIHNy dl9uX2xvZ19maWxlcyAqLzsgaSsrKSB7CisJCQlvc19vZmZzZXRfdAlzaXplOworCQkJb3NfZmls ZV9zdGF0X3QJc3RhdF9pbmZvOworCisJCQlzcHJpbnRmKGxvZ2ZpbGVuYW1lICsgZGlybmFtZWxl biwKKwkJCQkiaWJfbG9nZmlsZSVsdSIsICh1bG9uZykgaSk7CisKKwkJCWVyciA9IG9zX2ZpbGVf Z2V0X3N0YXR1cygKKwkJCQlsb2dmaWxlbmFtZSwgJnN0YXRfaW5mbywgZmFsc2UpOworCisJCQlp ZiAoZXJyID09IERCX05PVF9GT1VORCkgeworCQkJCWlmIChpID09IDApIHsKKwkJCQkJZ290byBj cmVhdGVfbG9nX2ZpbGVzOworCQkJCX0KIAotCQkJcmV0dXJuKERCX0VSUk9SKTsKKwkJCQlpZiAo aSA8IDIpIHsKKwkJCQkJLyogbXVzdCBoYXZlIGF0IGxlYXN0IDIgbG9nIGZpbGVzICovCisJCQkJ CXJldHVybihlcnIpOworCQkJCX0KKworCQkJCS8qIG9wZW5lZCBhbGwgZmlsZXMgKi8KKwkJCQli cmVhazsKKwkJCX0KKworCQkJZXJyID0gb3Blbl9sb2dfZmlsZSgmZmlsZXNbaV0sIGxvZ2ZpbGVu YW1lLCAmc2l6ZSk7CisKKwkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJCXJldHVybihl cnIpOworCQkJfQorCisJCQl1dF9hKHNpemUgIT0gKG9zX29mZnNldF90KSAtMSk7CisKKwkJCWlm IChzaXplICYgKCgxIDw8IFVOSVZfUEFHRV9TSVpFX1NISUZUKSAtIDEpKSB7CisJCQkJaWJfbG9n ZihJQl9MT0dfTEVWRUxfRVJST1IsCisJCQkJCSJJbm5vREI6IEVycm9yOiBsb2cgZmlsZSAlcyBz aXplICIKKwkJCQkJVUlOVDY0UEYgIiBpcyBub3QgYSBtdWx0aXBsZSBvZiIKKwkJCQkJIiBpbm5v ZGJfcGFnZV9zaXplXG4iLAorCQkJCQlsb2dmaWxlbmFtZSwgc2l6ZSk7CisJCQkJcmV0dXJuKERC X0VSUk9SKTsKKwkJCX0KKworCQkJc2l6ZSA+Pj0gVU5JVl9QQUdFX1NJWkVfU0hJRlQ7CisKKwkJ CWlmIChpID09IDApIHsKKwkJCQlzcnZfbG9nX2ZpbGVfc2l6ZSA9IHNpemU7CisJCQl9IGVsc2Ug aWYgKHNpemUgIT0gc3J2X2xvZ19maWxlX3NpemUpIHsKKwkJCQlpYl9sb2dmKElCX0xPR19MRVZF TF9FUlJPUiwKKwkJCQkJIkxvZyBmaWxlICVzIGlzIgorCQkJCQkiIG9mIGRpZmZlcmVudCBzaXpl ICJVSU5UNjRQRiIgYnl0ZXMiCisJCQkJCSIgdGhhbiBvdGhlciBsb2cgIgorCQkJCQkiIGZpbGVz ICJVSU5UNjRQRiIgYnl0ZXMhXG4iLAorCQkJCQlsb2dmaWxlbmFtZSwKKwkJCQkJc2l6ZSA8PCBV TklWX1BBR0VfU0laRV9TSElGVCwKKwkJCQkJKG9zX29mZnNldF90KSBzcnZfbG9nX2ZpbGVfc2l6 ZQorCQkJCQk8PCBVTklWX1BBR0VfU0laRV9TSElGVCk7CisJCQkJcmV0dXJuKERCX0VSUk9SKTsK KwkJCX0KIAkJfQogCX0KIAorCS8qIENyZWF0ZSB0aGUgaW4tbWVtb3J5IGZpbGUgc3BhY2Ugb2Jq ZWN0cy4gKi8KKworCXNwcmludGYobG9nZmlsZW5hbWUgKyBkaXJuYW1lbGVuLCAiaWJfbG9nZmls ZSVsdSIsIDBVTCk7CisKKwlmaWxfc3BhY2VfY3JlYXRlKGxvZ2ZpbGVuYW1lLAorCQkJIFNSVl9M T0dfU1BBQ0VfRklSU1RfSUQsCisJCQkgZnNwX2ZsYWdzX3NldF9wYWdlX3NpemUoMCwgVU5JVl9Q QUdFX1NJWkUpLAorCQkJIEZJTF9MT0cpOworCisJdXRfYShmaWxfdmFsaWRhdGUoKSk7CisKKwkv KiBzcnZfbG9nX2ZpbGVfc2l6ZSBpcyBtZWFzdXJlZCBpbiBwYWdlczsgaWYgcGFnZSBzaXplIGlz IDE2S0IsCisJdGhlbiB3ZSBoYXZlIGEgbGltaXQgb2YgNjRUQiBvbiAzMiBiaXQgc3lzdGVtcyAq LworCXV0X2Eoc3J2X2xvZ19maWxlX3NpemUgPD0gVUxJTlRfTUFYKTsKKworCWZvciAodWxpbnQg aiA9IDA7IGogPCBpOyBqKyspIHsKKwkJZmlsX25vZGVfY3JlYXRlKGxvZ2ZpbGVuYW1lLCAodWxp bnQpIHNydl9sb2dfZmlsZV9zaXplLAorCQkJCVNSVl9MT0dfU1BBQ0VfRklSU1RfSUQsIEZBTFNF KTsKKwl9CisKKyNpZmRlZiBVTklWX0xPR19BUkNISVZFCisJLyogQ3JlYXRlIHRoZSBmaWxlIHNw YWNlIG9iamVjdCBmb3IgYXJjaGl2ZWQgbG9ncy4gVW5kZXIKKwlNeVNRTCwgbm8gYXJjaGl2aW5n IGV2ZXIgZG9uZS4gKi8KKwlmaWxfc3BhY2VfY3JlYXRlKCJhcmNoX2xvZ19zcGFjZSIsIFNSVl9M T0dfU1BBQ0VfRklSU1RfSUQgKyAxLAorCQkJIDAsIEZJTF9MT0cpOworI2VuZGlmIC8qIFVOSVZf TE9HX0FSQ0hJVkUgKi8KKwlsb2dfZ3JvdXBfaW5pdCgwLCBpLCBzcnZfbG9nX2ZpbGVfc2l6ZSAq IFVOSVZfUEFHRV9TSVpFLAorCQkgICAgICAgU1JWX0xPR19TUEFDRV9GSVJTVF9JRCwKKwkJICAg ICAgIFNSVl9MT0dfU1BBQ0VfRklSU1RfSUQgKyAxKTsgLyogZHVtbXkgYXJjaCBzcGFjZSBpZCAq LworCiAJLyogT3BlbiBhbGwgbG9nIGZpbGVzIGFuZCBkYXRhIGZpbGVzIGluIHRoZSBzeXN0ZW0g dGFibGVzcGFjZTogd2UKIAlrZWVwIHRoZW0gb3BlbiB1bnRpbCBkYXRhYmFzZSBzaHV0ZG93biAq LwogCkBAIC0yMTEwLDYgKzIxMDQsMTEgQEAgaW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9t eXNxbCh2b2lkKQogCQkJcmV0dXJuKERCX0VSUk9SKTsKIAkJfQogCisJCWlmIChpICE9IHNydl9u X2xvZ19maWxlcworCQkgICAgfHwgc3J2X2xvZ19maWxlX3NpemVfcmVxdWVzdGVkICE9IHNydl9s b2dfZmlsZV9zaXplKSB7CisJCQl1dF9lcnJvcjsgLyogVE9ETyAqLworCQl9CisKIAkJLyogU2lu Y2UgdGhlIGluc2VydCBidWZmZXIgaW5pdCBpcyBpbiBkaWN0X2Jvb3QsIGFuZCB0aGUKIAkJaW5z ZXJ0IGJ1ZmZlciBpcyBuZWVkZWQgaW4gYW55IGRpc2sgaS9vLCBmaXJzdCB3ZSBjYWxsCiAJCWRp Y3RfYm9vdCgpLiBOb3RlIHRoYXQgdHJ4X3N5c19pbml0X2F0X2RiX3N0YXJ0KCkgb25seSBuZWVk cwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=