From: marko.makela Date: May 17 2011 11:47am Subject: bzr push into mysql-trunk-innodb branch (marko.makela:3628 to 3629) Bug#12561303 List-Archive: http://lists.mysql.com/commits/137631 X-Bug: 12561303 Message-Id: <201105171147.p4HBljsI003985@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0525058418==" --===============0525058418== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM2MjkgTWFya28gTcOka2Vsw6QJMjAxMS0wNS0xNwogICAgICBCdWcjMTI1NjEzMDMgSW5ub0RC IGZpbGUgQVBJIHVzZXMgdHdvIHBhcmFtZXRlcnMgZm9yIGZpbGUgc2l6ZQogICAgICAKICAgICAg RGVmaW5lIG9zX29mZnNldF90IGFzIGliX3VpbnQ2NF90LiBQcmV2aW91c2x5LCBmaWxlIG9mZnNl dHMgd2VyZQogICAgICBkZWZpbmVkIGFzIGliX2ludDY0X3Qgb3IgcGFpcnMgb2YgdWxpbnQuCiAg ICAgIAogICAgICBvc19haW8oKSwgb3NfZmlsZV9yZWFkKCksIG9zX2ZpbGVfd3JpdGUoKSwgb3Nf ZmlsZV9yZWFkX25vX2Vycm9yX2hhbmRsaW5nKCk6CiAgICAgIFJlcGxhY2Ugb2Zmc2V0X2xvdyxv ZmZzZXRfaGlnaCB3aXRoIG9mZnNldC4KICAgICAgCiAgICAgIG9zX2ZpbGVfZ2V0X3NpemUoKTog UmV0dXJuIHRoZSBmaWxlIHNpemUgb3IgLTEgb24gZXJyb3IuIENoZWNrIHRoZQogICAgICByZXR1 cm4gdmFsdWUgaW4gY2FsbGVycy4KICAgICAgCiAgICAgIG9zX2ZpbGVfZ2V0X3NpemVfYXNfaWJs b25nbG9uZygpOiBSZW1vdmU7IHJlcGxhY2VkIGJ5IG9zX2ZpbGVfZ2V0X3NpemUoKS4KICAgICAg CiAgICAgIHV0X2dldF9oaWdoMzIoKTogUmVtb3ZlLgogICAgICAKICAgICAgcmI6NjYyIGFwcHJv dmVkIGJ5IFN1bm55IEJhaW5zCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv ZmlsL2ZpbDBmaWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwZmlsZS5oCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9vczBmaWxlLmljCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS91dDB1dC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzByZWN2 LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MG1lcmdlLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0 LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS91dC91dDB1dC5jCiAzNjI4IEluYWFtIFJhbmEJMjAx MS0wNS0xNgogICAgICBCVUcjMTE3NjM2OTIgUmVtb3ZlIGNvbnRlbnRpb24gb24gZmlsX3N5c3Rl bTo6bXV0ZXggZHVyaW5nCiAgICAgIGZpbGUgZXh0ZW5zaW9uLgogICAgICAKICAgICAgQXBwcm92 ZWQgYnk6IE1hcmtvIGFuZCBKaW1teQogICAgICByYjovLzY2MAogICAgICAKICAgICAgRmlsZSBl eHRlbnNpb24gaW4gaW5ub2RiIGRvZXMgSU8gd2hpbGUgaG9sZGluZyBmaWxfc3lzdGVtOjptdXRl eC4KICAgICAgVGhpcyBibG9ja3MgYWxsIG90aGVyIElPIGFjdGl2aXR5IG9uIGFsbCBkYXRhZmls ZXMuIFRoaXMgcGF0Y2gKICAgICAgZml4ZXMgdGhhdCBieSBpbnRyb2R1Y2luZyBhIGZsYWcgOjpi ZWluZ19leHRlbmRlZCB0byBzcGFjZTo6bm9kZS4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5jCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2ZpbC9maWwwZmlsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwly ZXZpZDppbmFhbS5yYW5hQG9yYWNsZS5jb20tMjAxMTA1MTYxNjAxMzktOTU5andud3BjMXkyMjBt cgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA1MTcxMTQyMTAtZTdkZng5ejM2cjJ0dW16egpAQCAtNjY4LDkgKzY2 OCw3IEBAIGZpbF9ub2RlX29wZW5fZmlsZSgKIAlmaWxfc3lzdGVtX3QqCXN5c3RlbSwJLyohPCBp bjogdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUgKi8KIAlmaWxfc3BhY2VfdCoJc3BhY2UpCS8qITwg aW46IHNwYWNlICovCiB7Ci0JaWJfaW50NjRfdAlzaXplX2J5dGVzOwotCXVsaW50CQlzaXplX2xv dzsKLQl1bGludAkJc2l6ZV9oaWdoOworCW9zX29mZnNldF90CXNpemVfYnl0ZXM7CiAJaWJvb2wJ CXJldDsKIAlpYm9vbAkJc3VjY2VzczsKIAlieXRlKgkJYnVmMjsKQEAgLTcwOCwxMCArNzA2LDgg QEAgZmlsX25vZGVfb3Blbl9maWxlKAogCQkJdXRfYSgwKTsKIAkJfQogCi0JCW9zX2ZpbGVfZ2V0 X3NpemUobm9kZS0+aGFuZGxlLCAmc2l6ZV9sb3csICZzaXplX2hpZ2gpOwotCi0JCXNpemVfYnl0 ZXMgPSAoKChpYl9pbnQ2NF90KXNpemVfaGlnaCkgPDwgMzIpCi0JCQkrIChpYl9pbnQ2NF90KXNp emVfbG93OworCQlzaXplX2J5dGVzID0gb3NfZmlsZV9nZXRfc2l6ZShub2RlLT5oYW5kbGUpOwor CQl1dF9hKHNpemVfYnl0ZXMgIT0gKG9zX29mZnNldF90KSAtMSk7CiAjaWZkZWYgVU5JVl9IT1RC QUNLVVAKIAkJaWYgKHNwYWNlLT5pZCA9PSAwKSB7CiAJCQlub2RlLT5zaXplID0gKHVsaW50KSAo c2l6ZV9ieXRlcyAvIFVOSVZfUEFHRV9TSVpFKTsKQEAgLTcyNiwxMSArNzIyLDEwIEBAIGZpbF9u b2RlX29wZW5fZmlsZSgKIAkJCWZwcmludGYoc3RkZXJyLAogCQkJCSJJbm5vREI6IEVycm9yOiB0 aGUgc2l6ZSBvZiBzaW5nbGUtdGFibGUiCiAJCQkJIiB0YWJsZXNwYWNlIGZpbGUgJXNcbiIKLQkJ CQkiSW5ub0RCOiBpcyBvbmx5ICVsdSAlbHUsIgorCQkJCSJJbm5vREI6IGlzIG9ubHkgJWxsdSwi CiAJCQkJIiBzaG91bGQgYmUgYXQgbGVhc3QgJWx1IVxuIiwKIAkJCQlub2RlLT5uYW1lLAotCQkJ CSh1bG9uZykgc2l6ZV9oaWdoLAotCQkJCSh1bG9uZykgc2l6ZV9sb3csCisJCQkJc2l6ZV9ieXRl cywKIAkJCQkodWxvbmcpIChGSUxfSUJEX0ZJTEVfSU5JVElBTF9TSVpFCiAJCQkJCSAqIFVOSVZf UEFHRV9TSVpFKSk7CiAKQEAgLTc0NCw4ICs3MzksNyBAQCBmaWxfbm9kZV9vcGVuX2ZpbGUoCiAJ CXNldCAqLwogCQlwYWdlID0gdXRfYWxpZ24oYnVmMiwgVU5JVl9QQUdFX1NJWkUpOwogCi0JCXN1 Y2Nlc3MgPSBvc19maWxlX3JlYWQobm9kZS0+aGFuZGxlLCBwYWdlLCAwLCAwLAotCQkJCSAgICAg ICBVTklWX1BBR0VfU0laRSk7CisJCXN1Y2Nlc3MgPSBvc19maWxlX3JlYWQobm9kZS0+aGFuZGxl LCBwYWdlLCAwLCBVTklWX1BBR0VfU0laRSk7CiAJCXNwYWNlX2lkID0gZnNwX2hlYWRlcl9nZXRf c3BhY2VfaWQocGFnZSk7CiAJCWZsYWdzID0gZnNwX2hlYWRlcl9nZXRfZmxhZ3MocGFnZSk7CiAK QEAgLTE4MzcsNyArMTgzMSw3IEBAIGZpbF9yZWFkX2ZsdXNoZWRfbHNuX2FuZF9hcmNoX2xvZ19u bygKIAkvKiBBbGlnbiB0aGUgbWVtb3J5IGZvciBhIHBvc3NpYmxlIHJlYWQgZnJvbSBhIHJhdyBk ZXZpY2UgKi8KIAlidWYgPSB1dF9hbGlnbihidWYyLCBVTklWX1BBR0VfU0laRSk7CiAKLQlvc19m aWxlX3JlYWQoZGF0YV9maWxlLCBidWYsIDAsIDAsIFVOSVZfUEFHRV9TSVpFKTsKKwlvc19maWxl X3JlYWQoZGF0YV9maWxlLCBidWYsIDAsIFVOSVZfUEFHRV9TSVpFKTsKIAogCWZsdXNoZWRfbHNu ID0gbWFjaF9yZWFkX2Zyb21fOChidWYgKyBGSUxfUEFHRV9GSUxFX0ZMVVNIX0xTTik7CiAKQEAg LTI3NjAsNyArMjc1NCw3IEBAIGZpbF9jcmVhdGVfbmV3X3NpbmdsZV90YWJsZV90YWJsZXNwYWNl KAogCQlyZXR1cm4oREJfRVJST1IpOwogCX0KIAotCXJldCA9IG9zX2ZpbGVfc2V0X3NpemUocGF0 aCwgZmlsZSwgc2l6ZSAqIFVOSVZfUEFHRV9TSVpFLCAwKTsKKwlyZXQgPSBvc19maWxlX3NldF9z aXplKHBhdGgsIGZpbGUsIHNpemUgKiBVTklWX1BBR0VfU0laRSk7CiAKIAlpZiAoIXJldCkgewog CQllcnIgPSBEQl9PVVRfT0ZfRklMRV9TUEFDRTsKQEAgLTI3OTUsNyArMjc4OSw3IEBAIGVycm9y X2V4aXQyOgogCiAJaWYgKCEoZmxhZ3MgJiBESUNUX1RGX1pTU0laRV9NQVNLKSkgewogCQlidWZf Zmx1c2hfaW5pdF9mb3Jfd3JpdGluZyhwYWdlLCBOVUxMLCAwKTsKLQkJcmV0ID0gb3NfZmlsZV93 cml0ZShwYXRoLCBmaWxlLCBwYWdlLCAwLCAwLCBVTklWX1BBR0VfU0laRSk7CisJCXJldCA9IG9z X2ZpbGVfd3JpdGUocGF0aCwgZmlsZSwgcGFnZSwgMCwgVU5JVl9QQUdFX1NJWkUpOwogCX0gZWxz ZSB7CiAJCXBhZ2VfemlwX2Rlc190CXBhZ2VfemlwOwogCQl1bGludAkJemlwX3NpemU7CkBAIC0y ODEyLDcgKzI4MDYsNyBAQCBlcnJvcl9leGl0MjoKIAkJCXBhZ2VfemlwLm1fZW5kID0gcGFnZV96 aXAubV9ub25lbXB0eSA9CiAJCQlwYWdlX3ppcC5uX2Jsb2JzID0gMDsKIAkJYnVmX2ZsdXNoX2lu aXRfZm9yX3dyaXRpbmcocGFnZSwgJnBhZ2VfemlwLCAwKTsKLQkJcmV0ID0gb3NfZmlsZV93cml0 ZShwYXRoLCBmaWxlLCBwYWdlX3ppcC5kYXRhLCAwLCAwLCB6aXBfc2l6ZSk7CisJCXJldCA9IG9z X2ZpbGVfd3JpdGUocGF0aCwgZmlsZSwgcGFnZV96aXAuZGF0YSwgMCwgemlwX3NpemUpOwogCX0K IAogCXV0X2ZyZWUoYnVmMik7CkBAIC0yODk1LDggKzI4ODksOCBAQCBmaWxfcmVzZXRfdG9vX2hp Z2hfbHNucygKIAlieXRlKgkJYnVmMjsKIAlsc25fdAkJZmx1c2hfbHNuOwogCXVsaW50CQlzcGFj ZV9pZDsKLQlpYl9pbnQ2NF90CWZpbGVfc2l6ZTsKLQlpYl9pbnQ2NF90CW9mZnNldDsKKwlvc19v ZmZzZXRfdAlmaWxlX3NpemU7CisJb3Nfb2Zmc2V0X3QJb2Zmc2V0OwogCXVsaW50CQl6aXBfc2l6 ZTsKIAlpYm9vbAkJc3VjY2VzczsKIAlwYWdlX3ppcF9kZXNfdAlwYWdlX3ppcDsKQEAgLTI5Mjgs NyArMjkyMiw3IEBAIGZpbF9yZXNldF90b29faGlnaF9sc25zKAogCS8qIEFsaWduIHRoZSBtZW1v cnkgZm9yIGZpbGUgaS9vIGlmIHdlIG1pZ2h0IGhhdmUgT19ESVJFQ1Qgc2V0ICovCiAJcGFnZSA9 IHV0X2FsaWduKGJ1ZjIsIFVOSVZfUEFHRV9TSVpFKTsKIAotCXN1Y2Nlc3MgPSBvc19maWxlX3Jl YWQoZmlsZSwgcGFnZSwgMCwgMCwgVU5JVl9QQUdFX1NJWkUpOworCXN1Y2Nlc3MgPSBvc19maWxl X3JlYWQoZmlsZSwgcGFnZSwgMCwgVU5JVl9QQUdFX1NJWkUpOwogCWlmICghc3VjY2Vzcykgewog CiAJCWdvdG8gZnVuY19leGl0OwpAQCAtMjk3MiwxMyArMjk2NiwxMiBAQCBmaWxfcmVzZXRfdG9v X2hpZ2hfbHNucygKIAkvKiBMb29wIHRocm91Z2ggYWxsIHRoZSBwYWdlcyBpbiB0aGUgdGFibGVz cGFjZSBhbmQgcmVzZXQgdGhlIGxzbiBhbmQKIAl0aGUgcGFnZSBjaGVja3N1bSBpZiBuZWNlc3Nh cnkgKi8KIAotCWZpbGVfc2l6ZSA9IG9zX2ZpbGVfZ2V0X3NpemVfYXNfaWJsb25nbG9uZyhmaWxl KTsKKwlmaWxlX3NpemUgPSBvc19maWxlX2dldF9zaXplKGZpbGUpOworCXV0X2EoZmlsZV9zaXpl ICE9IChvc19vZmZzZXRfdCkgLTEpOwogCiAJZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBmaWxl X3NpemU7CiAJICAgICBvZmZzZXQgKz0gemlwX3NpemUgPyB6aXBfc2l6ZSA6IFVOSVZfUEFHRV9T SVpFKSB7Ci0JCXN1Y2Nlc3MgPSBvc19maWxlX3JlYWQoZmlsZSwgcGFnZSwKLQkJCQkgICAgICAg KHVsaW50KShvZmZzZXQgJiAweEZGRkZGRkZGVUwpLAotCQkJCSAgICAgICAodWxpbnQpKG9mZnNl dCA+PiAzMiksCisJCXN1Y2Nlc3MgPSBvc19maWxlX3JlYWQoZmlsZSwgcGFnZSwgb2Zmc2V0LAog CQkJCSAgICAgICB6aXBfc2l6ZSA/IHppcF9zaXplIDogVU5JVl9QQUdFX1NJWkUpOwogCQlpZiAo IXN1Y2Nlc3MpIHsKIApAQCAtMjk5MywxNiArMjk4NiwxMyBAQCBmaWxfcmVzZXRfdG9vX2hpZ2hf bHNucygKIAkJCQkJcGFnZSwgJnBhZ2VfemlwLCBjdXJyZW50X2xzbik7CiAJCQkJc3VjY2VzcyA9 IG9zX2ZpbGVfd3JpdGUoCiAJCQkJCWZpbGVwYXRoLCBmaWxlLCBwYWdlX3ppcC5kYXRhLAotCQkJ CQkodWxpbnQpIG9mZnNldCAmIDB4RkZGRkZGRkZVTCwKLQkJCQkJKHVsaW50KSAob2Zmc2V0ID4+ IDMyKSwgemlwX3NpemUpOworCQkJCQlvZmZzZXQsIHppcF9zaXplKTsKIAkJCX0gZWxzZSB7CiAJ CQkJYnVmX2ZsdXNoX2luaXRfZm9yX3dyaXRpbmcoCiAJCQkJCXBhZ2UsIE5VTEwsIGN1cnJlbnRf bHNuKTsKIAkJCQlzdWNjZXNzID0gb3NfZmlsZV93cml0ZSgKIAkJCQkJZmlsZXBhdGgsIGZpbGUs IHBhZ2UsCi0JCQkJCSh1bGludCkob2Zmc2V0ICYgMHhGRkZGRkZGRlVMKSwKLQkJCQkJKHVsaW50 KShvZmZzZXQgPj4gMzIpLAotCQkJCQlVTklWX1BBR0VfU0laRSk7CisJCQkJCW9mZnNldCwgVU5J Vl9QQUdFX1NJWkUpOwogCQkJfQogCiAJCQlpZiAoIXN1Y2Nlc3MpIHsKQEAgLTMwMTksNyArMzAw OSw3IEBAIGZpbF9yZXNldF90b29faGlnaF9sc25zKAogCX0KIAogCS8qIFdlIG5vdyB1cGRhdGUg dGhlIGZsdXNoX2xzbiBzdGFtcCBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKi8KLQlzdWNjZXNz ID0gb3NfZmlsZV9yZWFkKGZpbGUsIHBhZ2UsIDAsIDAsCisJc3VjY2VzcyA9IG9zX2ZpbGVfcmVh ZChmaWxlLCBwYWdlLCAwLAogCQkJICAgICAgIHppcF9zaXplID8gemlwX3NpemUgOiBVTklWX1BB R0VfU0laRSk7CiAJaWYgKCFzdWNjZXNzKSB7CiAKQEAgLTMwMjgsNyArMzAxOCw3IEBAIGZpbF9y ZXNldF90b29faGlnaF9sc25zKAogCiAJbWFjaF93cml0ZV90b184KHBhZ2UgKyBGSUxfUEFHRV9G SUxFX0ZMVVNIX0xTTiwgY3VycmVudF9sc24pOwogCi0Jc3VjY2VzcyA9IG9zX2ZpbGVfd3JpdGUo ZmlsZXBhdGgsIGZpbGUsIHBhZ2UsIDAsIDAsCisJc3VjY2VzcyA9IG9zX2ZpbGVfd3JpdGUoZmls ZXBhdGgsIGZpbGUsIHBhZ2UsIDAsCiAJCQkJemlwX3NpemUgPyB6aXBfc2l6ZSA6IFVOSVZfUEFH RV9TSVpFKTsKIAlpZiAoIXN1Y2Nlc3MpIHsKIApAQCAtMzEyOCw3ICszMTE4LDcgQEAgZmlsX29w ZW5fc2luZ2xlX3RhYmxlX3RhYmxlc3BhY2UoCiAJLyogQWxpZ24gdGhlIG1lbW9yeSBmb3IgZmls ZSBpL28gaWYgd2UgbWlnaHQgaGF2ZSBPX0RJUkVDVCBzZXQgKi8KIAlwYWdlID0gdXRfYWxpZ24o YnVmMiwgVU5JVl9QQUdFX1NJWkUpOwogCi0Jc3VjY2VzcyA9IG9zX2ZpbGVfcmVhZChmaWxlLCBw YWdlLCAwLCAwLCBVTklWX1BBR0VfU0laRSk7CisJc3VjY2VzcyA9IG9zX2ZpbGVfcmVhZChmaWxl LCBwYWdlLCAwLCBVTklWX1BBR0VfU0laRSk7CiAKIAkvKiBXZSBoYXZlIHRvIHJlYWQgdGhlIHRh Ymxlc3BhY2UgaWQgYW5kIGZsYWdzIGZyb20gdGhlIGZpbGUuICovCiAKQEAgLTMyMTksOSArMzIw OSw3IEBAIGZpbF9sb2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlKAogCWJ5dGUqCQlwYWdlOwog CXVsaW50CQlzcGFjZV9pZDsKIAl1bGludAkJZmxhZ3M7Ci0JdWxpbnQJCXNpemVfbG93OwotCXVs aW50CQlzaXplX2hpZ2g7Ci0JaWJfaW50NjRfdAlzaXplOworCW9zX29mZnNldF90CXNpemU7CiAj aWZkZWYgVU5JVl9IT1RCQUNLVVAKIAlmaWxfc3BhY2VfdCoJc3BhY2U7CiAjZW5kaWYKQEAgLTMy ODksOSArMzI3Nyw5IEBAIGZpbF9sb2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlKAogCQlleGl0 KDEpOwogCX0KIAotCXN1Y2Nlc3MgPSBvc19maWxlX2dldF9zaXplKGZpbGUsICZzaXplX2xvdywg JnNpemVfaGlnaCk7CisJc2l6ZSA9IG9zX2ZpbGVfZ2V0X3NpemUoZmlsZSk7CiAKLQlpZiAoIXN1 Y2Nlc3MpIHsKKwlpZiAoVU5JVl9VTkxJS0VMWShzaXplID09IChvc19vZmZzZXRfdCkgLTEpKSB7 CiAJCS8qIFRoZSBmb2xsb3dpbmcgY2FsbCBwcmludHMgYW4gZXJyb3IgbWVzc2FnZSAqLwogCQlv c19maWxlX2dldF9sYXN0X2Vycm9yKFRSVUUpOwogCkBAIC0zMzQyLDE2ICszMzMwLDE0IEBAIGZp bF9sb2FkX3NpbmdsZV90YWJsZV90YWJsZXNwYWNlKAogCS8qIEV2ZXJ5IC5pYmQgZmlsZSBpcyBj cmVhdGVkID49IDQgcGFnZXMgaW4gc2l6ZS4gU21hbGxlciBmaWxlcwogCWNhbm5vdCBiZSBvay4g Ki8KIAotCXNpemUgPSAoKChpYl9pbnQ2NF90KXNpemVfaGlnaCkgPDwgMzIpICsgKGliX2ludDY0 X3Qpc2l6ZV9sb3c7CiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAJaWYgKHNpemUgPCBGSUxfSUJE X0ZJTEVfSU5JVElBTF9TSVpFICogVU5JVl9QQUdFX1NJWkUpIHsKIAkJZnByaW50ZihzdGRlcnIs CiAJCQkiSW5ub0RCOiBFcnJvcjogdGhlIHNpemUgb2Ygc2luZ2xlLXRhYmxlIHRhYmxlc3BhY2Ui CiAJCQkiIGZpbGUgJXNcbiIKLQkJCSJJbm5vREI6IGlzIG9ubHkgJWx1ICVsdSwgc2hvdWxkIGJl IGF0IGxlYXN0ICVsdSEiLAorCQkJIklubm9EQjogaXMgb25seSAlbGx1LCBzaG91bGQgYmUgYXQg bGVhc3QgJWx1ISIsCiAJCQlmaWxlcGF0aCwKLQkJCSh1bG9uZykgc2l6ZV9oaWdoLAotCQkJKHVs b25nKSBzaXplX2xvdywgKHVsb25nKSAoNCAqIFVOSVZfUEFHRV9TSVpFKSk7CisJCQlzaXplLCAo dWxvbmcpICg0ICogVU5JVl9QQUdFX1NJWkUpKTsKIAkJb3NfZmlsZV9jbG9zZShmaWxlKTsKIAkJ bWVtX2ZyZWUoZmlsZXBhdGgpOwogCkBAIC0zMzY1LDcgKzMzNTEsNyBAQCBmaWxfbG9hZF9zaW5n bGVfdGFibGVfdGFibGVzcGFjZSgKIAlwYWdlID0gdXRfYWxpZ24oYnVmMiwgVU5JVl9QQUdFX1NJ WkUpOwogCiAJaWYgKHNpemUgPj0gRklMX0lCRF9GSUxFX0lOSVRJQUxfU0laRSAqIFVOSVZfUEFH RV9TSVpFKSB7Ci0JCXN1Y2Nlc3MgPSBvc19maWxlX3JlYWQoZmlsZSwgcGFnZSwgMCwgMCwgVU5J Vl9QQUdFX1NJWkUpOworCQlzdWNjZXNzID0gb3NfZmlsZV9yZWFkKGZpbGUsIHBhZ2UsIDAsIFVO SVZfUEFHRV9TSVpFKTsKIAogCQkvKiBXZSBoYXZlIHRvIHJlYWQgdGhlIHRhYmxlc3BhY2UgaWQg ZnJvbSB0aGUgZmlsZSAqLwogCkBAIC0zOTA5LDggKzM4OTUsNiBAQCBmaWxfZXh0ZW5kX3NwYWNl X3RvX2Rlc2lyZWRfc2l6ZSgKIAl1bGludAkJYnVmX3NpemU7CiAJdWxpbnQJCXN0YXJ0X3BhZ2Vf bm87CiAJdWxpbnQJCWZpbGVfc3RhcnRfcGFnZV9ubzsKLQl1bGludAkJb2Zmc2V0X2hpZ2g7Ci0J dWxpbnQJCW9mZnNldF9sb3c7CiAJdWxpbnQJCXBhZ2Vfc2l6ZTsKIAl1bGludAkJcGFnZXNfYWRk ZWQ7CiAJaWJvb2wJCXN1Y2Nlc3M7CkBAIC0zOTc0LDIzICszOTU4LDIwIEBAIHJldHJ5OgogCW1l bXNldChidWYsIDAsIGJ1Zl9zaXplKTsKIAogCXdoaWxlIChzdGFydF9wYWdlX25vIDwgc2l6ZV9h ZnRlcl9leHRlbmQpIHsKLQkJdWxpbnQJbl9wYWdlcyA9IHV0X21pbihidWZfc2l6ZSAvIHBhZ2Vf c2l6ZSwKLQkJCQkJIHNpemVfYWZ0ZXJfZXh0ZW5kIC0gc3RhcnRfcGFnZV9ubyk7CisJCXVsaW50 CQluX3BhZ2VzCisJCQk9IHV0X21pbihidWZfc2l6ZSAvIHBhZ2Vfc2l6ZSwKKwkJCQkgc2l6ZV9h ZnRlcl9leHRlbmQgLSBzdGFydF9wYWdlX25vKTsKIAotCQlvZmZzZXRfaGlnaCA9IChzdGFydF9w YWdlX25vIC0gZmlsZV9zdGFydF9wYWdlX25vKQotCQkJLyAoNDA5NiAqICgoMTAyNCAqIDEwMjQp IC8gcGFnZV9zaXplKSk7Ci0JCW9mZnNldF9sb3cgID0gKChzdGFydF9wYWdlX25vIC0gZmlsZV9z dGFydF9wYWdlX25vKQotCQkJICAgICAgICUgKDQwOTYgKiAoKDEwMjQgKiAxMDI0KSAvIHBhZ2Vf c2l6ZSkpKQorCQlvc19vZmZzZXRfdAlvZmZzZXQKKwkJCT0gKChvc19vZmZzZXRfdCkgKHN0YXJ0 X3BhZ2Vfbm8gLSBmaWxlX3N0YXJ0X3BhZ2Vfbm8pKQogCQkJKiBwYWdlX3NpemU7CiAjaWZkZWYg VU5JVl9IT1RCQUNLVVAKIAkJc3VjY2VzcyA9IG9zX2ZpbGVfd3JpdGUobm9kZS0+bmFtZSwgbm9k ZS0+aGFuZGxlLCBidWYsCi0JCQkJCW9mZnNldF9sb3csIG9mZnNldF9oaWdoLAotCQkJCQlwYWdl X3NpemUgKiBuX3BhZ2VzKTsKKwkJCQkJb2Zmc2V0LCBwYWdlX3NpemUgKiBuX3BhZ2VzKTsKICNl bHNlCiAJCXN1Y2Nlc3MgPSBvc19haW8oT1NfRklMRV9XUklURSwgT1NfQUlPX1NZTkMsCiAJCQkJ IG5vZGUtPm5hbWUsIG5vZGUtPmhhbmRsZSwgYnVmLAotCQkJCSBvZmZzZXRfbG93LCBvZmZzZXRf aGlnaCwKLQkJCQkgcGFnZV9zaXplICogbl9wYWdlcywKKwkJCQkgb2Zmc2V0LCBwYWdlX3NpemUg KiBuX3BhZ2VzLAogCQkJCSBOVUxMLCBOVUxMKTsKICNlbmRpZgogCQlpZiAoc3VjY2VzcykgewpA QCAtMzk5OCwxMiArMzk3OSwxMyBAQCByZXRyeToKIAkJfSBlbHNlIHsKIAkJCS8qIExldCB1cyBt ZWFzdXJlIHRoZSBzaXplIG9mIHRoZSBmaWxlIHRvIGRldGVybWluZQogCQkJaG93IG11Y2ggd2Ug d2VyZSBhYmxlIHRvIGV4dGVuZCBpdCAqLworCQkJb3Nfb2Zmc2V0X3QJc2l6ZTsKIAotCQkJbl9w YWdlcyA9ICgodWxpbnQpCi0JCQkJICAgKG9zX2ZpbGVfZ2V0X3NpemVfYXNfaWJsb25nbG9uZygK LQkJCQkJICAgbm9kZS0+aGFuZGxlKQotCQkJCSAgICAvIHBhZ2Vfc2l6ZSkpCi0JCQkJICAgIC0g KG5vZGUtPnNpemUgKyBwYWdlc19hZGRlZCk7CisJCQlzaXplID0gb3NfZmlsZV9nZXRfc2l6ZShu b2RlLT5oYW5kbGUpOworCQkJdXRfYShzaXplICE9IChvc19vZmZzZXRfdCkgLTEpOworCisJCQlu X3BhZ2VzID0gKCh1bGludCkgKHNpemUgLyBwYWdlX3NpemUpKQorCQkJCS0gbm9kZS0+c2l6ZSAt IHBhZ2VzX2FkZGVkOwogCiAJCQlwYWdlc19hZGRlZCArPSBuX3BhZ2VzOwogCQkJYnJlYWs7CkBA IC00MzUzLDExICs0MzM1LDEwIEBAIGZpbF9pbygKIAl1bGludAkJbW9kZTsKIAlmaWxfc3BhY2Vf dCoJc3BhY2U7CiAJZmlsX25vZGVfdCoJbm9kZTsKLQl1bGludAkJb2Zmc2V0X2hpZ2g7Ci0JdWxp bnQJCW9mZnNldF9sb3c7CiAJaWJvb2wJCXJldDsKIAl1bGludAkJaXNfbG9nOwogCXVsaW50CQl3 YWtlX2xhdGVyOworCW9zX29mZnNldF90CW9mZnNldDsKIAogCWlzX2xvZyA9IHR5cGUgJiBPU19G SUxFX0xPRzsKIAl0eXBlID0gdHlwZSAmIH5PU19GSUxFX0xPRzsKQEAgLTQ0NzUsOSArNDQ1Niw4 IEBAIGZpbF9pbygKIAkvKiBDYWxjdWxhdGUgdGhlIGxvdyAzMiBiaXRzIGFuZCB0aGUgaGlnaCAz MiBiaXRzIG9mIHRoZSBmaWxlIG9mZnNldCAqLwogCiAJaWYgKCF6aXBfc2l6ZSkgewotCQlvZmZz ZXRfaGlnaCA9IChibG9ja19vZmZzZXQgPj4gKDMyIC0gVU5JVl9QQUdFX1NJWkVfU0hJRlQpKTsK LQkJb2Zmc2V0X2xvdyAgPSAoKGJsb2NrX29mZnNldCA8PCBVTklWX1BBR0VfU0laRV9TSElGVCkK LQkJCSAgICAgICAmIDB4RkZGRkZGRkZVTCkgKyBieXRlX29mZnNldDsKKwkJb2Zmc2V0ID0gKChv c19vZmZzZXRfdCkgYmxvY2tfb2Zmc2V0IDw8IFVOSVZfUEFHRV9TSVpFX1NISUZUKQorCQkJKyBi eXRlX29mZnNldDsKIAogCQl1dF9hKG5vZGUtPnNpemUgLSBibG9ja19vZmZzZXQKIAkJICAgICA+ PSAoKGJ5dGVfb2Zmc2V0ICsgbGVuICsgKFVOSVZfUEFHRV9TSVpFIC0gMSkpCkBAIC00NDkyLDgg KzQ0NzIsNyBAQCBmaWxfaW8oCiAJCWNhc2UgMTYzODQ6IHppcF9zaXplX3NoaWZ0ID0gMTQ7IGJy ZWFrOwogCQlkZWZhdWx0OiB1dF9lcnJvcjsKIAkJfQotCQlvZmZzZXRfaGlnaCA9IGJsb2NrX29m ZnNldCA+PiAoMzIgLSB6aXBfc2l6ZV9zaGlmdCk7Ci0JCW9mZnNldF9sb3cgPSAoYmxvY2tfb2Zm c2V0IDw8IHppcF9zaXplX3NoaWZ0ICYgMHhGRkZGRkZGRlVMKQorCQlvZmZzZXQgPSAoKG9zX29m ZnNldF90KSBibG9ja19vZmZzZXQgPDwgemlwX3NpemVfc2hpZnQpCiAJCQkrIGJ5dGVfb2Zmc2V0 OwogCQl1dF9hKG5vZGUtPnNpemUgLSBibG9ja19vZmZzZXQKIAkJICAgICA+PSAobGVuICsgKHpp cF9zaXplIC0gMSkpIC8gemlwX3NpemUpOwpAQCAtNDUwNywxNiArNDQ4NiwxNSBAQCBmaWxfaW8o CiAjaWZkZWYgVU5JVl9IT1RCQUNLVVAKIAkvKiBJbiBpYmJhY2t1cCBkbyBub3JtYWwgaS9vLCBu b3QgYWlvICovCiAJaWYgKHR5cGUgPT0gT1NfRklMRV9SRUFEKSB7Ci0JCXJldCA9IG9zX2ZpbGVf cmVhZChub2RlLT5oYW5kbGUsIGJ1Ziwgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsCi0JCQkJICAg bGVuKTsKKwkJcmV0ID0gb3NfZmlsZV9yZWFkKG5vZGUtPmhhbmRsZSwgYnVmLCBvZmZzZXQsIGxl bik7CiAJfSBlbHNlIHsKIAkJcmV0ID0gb3NfZmlsZV93cml0ZShub2RlLT5uYW1lLCBub2RlLT5o YW5kbGUsIGJ1ZiwKLQkJCQkgICAgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsIGxlbik7CisJCQkJ ICAgIG9mZnNldCwgbGVuKTsKIAl9CiAjZWxzZQogCS8qIFF1ZXVlIHRoZSBhaW8gcmVxdWVzdCAq LwogCXJldCA9IG9zX2Fpbyh0eXBlLCBtb2RlIHwgd2FrZV9sYXRlciwgbm9kZS0+bmFtZSwgbm9k ZS0+aGFuZGxlLCBidWYsCi0JCSAgICAgb2Zmc2V0X2xvdywgb2Zmc2V0X2hpZ2gsIGxlbiwgbm9k ZSwgbWVzc2FnZSk7CisJCSAgICAgb2Zmc2V0LCBsZW4sIG5vZGUsIG1lc3NhZ2UpOwogI2VuZGlm CiAJdXRfYShyZXQpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL29zMGZpbGUuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMGZpbGUuaAly ZXZpZDppbmFhbS5yYW5hQG9yYWNsZS5jb20tMjAxMTA1MTYxNjAxMzktOTU5andud3BjMXkyMjBt cgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwZmlsZS5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNTE3MTE0MjEwLWU3ZGZ4OXozNnIydHVtenoKQEAgLTc0LDYg Kzc0LDggQEAgZXh0ZXJuIHVsaW50CW9zX25fcGVuZGluZ193cml0ZXM7CiAKICNlbmRpZgogCisv KiogRmlsZSBvZmZzZXQgaW4gYnl0ZXMgKi8KK3R5cGVkZWYgaWJfdWludDY0X3Qgb3Nfb2Zmc2V0 X3Q7CiAjaWZkZWYgX19XSU5fXwogLyoqIEZpbGUgaGFuZGxlICovCiAjIGRlZmluZSBvc19maWxl X3QJSEFORExFCkBAIC0yNzYsMjQgKzI3OCwyMCBAQCBUaGUgd3JhcHBlciBmdW5jdGlvbnMgaGF2 ZSB0aGUgcHJlZml4IG9mCiAjIGRlZmluZSBvc19maWxlX2Nsb3NlKGZpbGUpCQkJCQkJXAogCXBm c19vc19maWxlX2Nsb3NlX2Z1bmMoZmlsZSwgX19GSUxFX18sIF9fTElORV9fKQogCi0jIGRlZmlu ZSBvc19haW8odHlwZSwgbW9kZSwgbmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdo LAlcCisjIGRlZmluZSBvc19haW8odHlwZSwgbW9kZSwgbmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQs CQkJXAogCQluLCBtZXNzYWdlMSwgbWVzc2FnZTIpCQkJCQlcCiAJcGZzX29zX2Fpb19mdW5jKHR5 cGUsIG1vZGUsIG5hbWUsIGZpbGUsIGJ1Ziwgb2Zmc2V0LAkJXAotCQkJb2Zmc2V0X2hpZ2gsIG4s IG1lc3NhZ2UxLCBtZXNzYWdlMiwJCVwKLQkJCV9fRklMRV9fLCBfX0xJTkVfXykKKwkJCW4sIG1l c3NhZ2UxLCBtZXNzYWdlMiwgX19GSUxFX18sIF9fTElORV9fKQogCi0jIGRlZmluZSBvc19maWxl X3JlYWQoZmlsZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdoLCBuKQkJXAotCXBmc19vc19maWxl X3JlYWRfZnVuYyhmaWxlLCBidWYsIG9mZnNldCwgb2Zmc2V0X2hpZ2gsIG4sCVwKLQkJCSAgICAg IF9fRklMRV9fLCBfX0xJTkVfXykKLQotIyBkZWZpbmUgb3NfZmlsZV9yZWFkX25vX2Vycm9yX2hh bmRsaW5nKGZpbGUsIGJ1Ziwgb2Zmc2V0LAkJXAotCQkJCQlvZmZzZXRfaGlnaCwgbikJCQlcCi0J cGZzX29zX2ZpbGVfcmVhZF9ub19lcnJvcl9oYW5kbGluZ19mdW5jKGZpbGUsIGJ1Ziwgb2Zmc2V0 LAlcCi0JCQkJCQlvZmZzZXRfaGlnaCwgbiwJCVwKKyMgZGVmaW5lIG9zX2ZpbGVfcmVhZChmaWxl LCBidWYsIG9mZnNldCwgbikJCQkJXAorCXBmc19vc19maWxlX3JlYWRfZnVuYyhmaWxlLCBidWYs IG9mZnNldCwgbiwgX19GSUxFX18sIF9fTElORV9fKQorCisjIGRlZmluZSBvc19maWxlX3JlYWRf bm9fZXJyb3JfaGFuZGxpbmcoZmlsZSwgYnVmLCBvZmZzZXQsIG4pCQlcCisJcGZzX29zX2ZpbGVf cmVhZF9ub19lcnJvcl9oYW5kbGluZ19mdW5jKGZpbGUsIGJ1Ziwgb2Zmc2V0LCBuLAlcCiAJCQkJ CQlfX0ZJTEVfXywgX19MSU5FX18pCiAKLSMgZGVmaW5lIG9zX2ZpbGVfd3JpdGUobmFtZSwgZmls ZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdoLCBuKQkJXAotCXBmc19vc19maWxlX3dyaXRlX2Z1 bmMobmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdoLAlcCisjIGRlZmluZSBvc19m aWxlX3dyaXRlKG5hbWUsIGZpbGUsIGJ1Ziwgb2Zmc2V0LCBuKQlcCisJcGZzX29zX2ZpbGVfd3Jp dGVfZnVuYyhuYW1lLCBmaWxlLCBidWYsIG9mZnNldCwJXAogCQkJICAgICAgIG4sIF9fRklMRV9f LCBfX0xJTkVfXykKIAogIyBkZWZpbmUgb3NfZmlsZV9mbHVzaChmaWxlKQkJCQkJCVwKQEAgLTMx OCwyMCArMzE2LDE4IEBAIHRvIG9yaWdpbmFsIHVuLWluc3RydW1lbnRlZCBmaWxlIEkvTyBBUEkK IAogIyBkZWZpbmUgb3NfZmlsZV9jbG9zZShmaWxlKQlvc19maWxlX2Nsb3NlX2Z1bmMoZmlsZSkK IAotIyBkZWZpbmUgb3NfYWlvKHR5cGUsIG1vZGUsIG5hbWUsIGZpbGUsIGJ1Ziwgb2Zmc2V0LCBv ZmZzZXRfaGlnaCwJXAotCSAgICAgICBuLCBtZXNzYWdlMSwgbWVzc2FnZTIpCQkJCQlcCi0Jb3Nf YWlvX2Z1bmModHlwZSwgbW9kZSwgbmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdo LCBuLFwKKyMgZGVmaW5lIG9zX2Fpbyh0eXBlLCBtb2RlLCBuYW1lLCBmaWxlLCBidWYsIG9mZnNl dCwgbiwgbWVzc2FnZTEsIG1lc3NhZ2UyKSBcCisJb3NfYWlvX2Z1bmModHlwZSwgbW9kZSwgbmFt ZSwgZmlsZSwgYnVmLCBvZmZzZXQsIG4sCQlcCiAJCSAgICBtZXNzYWdlMSwgbWVzc2FnZTIpCiAK LSMgZGVmaW5lIG9zX2ZpbGVfcmVhZChmaWxlLCBidWYsIG9mZnNldCwgb2Zmc2V0X2hpZ2gsIG4p CQlcCi0Jb3NfZmlsZV9yZWFkX2Z1bmMoZmlsZSwgYnVmLCBvZmZzZXQsIG9mZnNldF9oaWdoLCBu KQorIyBkZWZpbmUgb3NfZmlsZV9yZWFkKGZpbGUsIGJ1Ziwgb2Zmc2V0LCBuKQlcCisJb3NfZmls ZV9yZWFkX2Z1bmMoZmlsZSwgYnVmLCBvZmZzZXQsIG4pCiAKLSMgZGVmaW5lIG9zX2ZpbGVfcmVh ZF9ub19lcnJvcl9oYW5kbGluZyhmaWxlLCBidWYsIG9mZnNldCwJCVwKLQkJCQkgICAgICAgb2Zm c2V0X2hpZ2gsIG4pCQkJXAotCW9zX2ZpbGVfcmVhZF9ub19lcnJvcl9oYW5kbGluZ19mdW5jKGZp bGUsIGJ1Ziwgb2Zmc2V0LCBvZmZzZXRfaGlnaCwgbikKKyMgZGVmaW5lIG9zX2ZpbGVfcmVhZF9u b19lcnJvcl9oYW5kbGluZyhmaWxlLCBidWYsIG9mZnNldCwgbikJCVwKKwlvc19maWxlX3JlYWRf bm9fZXJyb3JfaGFuZGxpbmdfZnVuYyhmaWxlLCBidWYsIG9mZnNldCwgbikKIAotIyBkZWZpbmUg b3NfZmlsZV93cml0ZShuYW1lLCBmaWxlLCBidWYsIG9mZnNldCwgb2Zmc2V0X2hpZ2gsIG4pCQlc Ci0Jb3NfZmlsZV93cml0ZV9mdW5jKG5hbWUsIGZpbGUsIGJ1Ziwgb2Zmc2V0LCBvZmZzZXRfaGln aCwgbikKKyMgZGVmaW5lIG9zX2ZpbGVfd3JpdGUobmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQsIG4p CQkJXAorCW9zX2ZpbGVfd3JpdGVfZnVuYyhuYW1lLCBmaWxlLCBidWYsIG9mZnNldCwgbikKIAog IyBkZWZpbmUgb3NfZmlsZV9mbHVzaChmaWxlKQlvc19maWxlX2ZsdXNoX2Z1bmMoZmlsZSkKIApA QCAtNjg3LDEwICs2ODMsNyBAQCBwZnNfb3NfZmlsZV9yZWFkX2Z1bmMoCiAvKj09PT09PT09PT09 PT09PT09PSovCiAJb3NfZmlsZV90CWZpbGUsCS8qITwgaW46IGhhbmRsZSB0byBhIGZpbGUgKi8K IAl2b2lkKgkJYnVmLAkvKiE8IGluOiBidWZmZXIgd2hlcmUgdG8gcmVhZCAqLwotCXVsaW50CQlv ZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgZmlsZQotCQkJCW9m ZnNldCB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJCW9mZnNldF9oaWdoLC8qITwgaW46IG1vc3Qg c2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAqLworCW9zX29mZnNldF90CW9mZnNl dCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gcmVhZCAqLwogCXVsaW50CQluLAkvKiE8 IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAqLwogCWNvbnN0IGNoYXIqCXNyY19maWxlLC8q ITwgaW46IGZpbGUgbmFtZSB3aGVyZSBmdW5jIGludm9rZWQgKi8KIAl1bGludAkJc3JjX2xpbmUp Oy8qITwgaW46IGxpbmUgd2hlcmUgdGhlIGZ1bmMgaW52b2tlZCAqLwpAQCAtNzA4LDEwICs3MDEs NyBAQCBwZnNfb3NfZmlsZV9yZWFkX25vX2Vycm9yX2hhbmRsaW5nX2Z1bmMoCiAvKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJb3NfZmlsZV90CWZpbGUsCS8qITwgaW46 IGhhbmRsZSB0byBhIGZpbGUgKi8KIAl2b2lkKgkJYnVmLAkvKiE8IGluOiBidWZmZXIgd2hlcmUg dG8gcmVhZCAqLwotCXVsaW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMy IGJpdHMgb2YgZmlsZQotCQkJCW9mZnNldCB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJCW9mZnNl dF9oaWdoLC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAq LworCW9zX29mZnNldF90CW9mZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gcmVh ZCAqLwogCXVsaW50CQluLAkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAqLwogCWNv bnN0IGNoYXIqCXNyY19maWxlLC8qITwgaW46IGZpbGUgbmFtZSB3aGVyZSBmdW5jIGludm9rZWQg Ki8KIAl1bGludAkJc3JjX2xpbmUpOy8qITwgaW46IGxpbmUgd2hlcmUgdGhlIGZ1bmMgaW52b2tl ZCAqLwpAQCAtNzMzLDEwICs3MjMsNyBAQCBwZnNfb3NfYWlvX2Z1bmMoCiAJb3NfZmlsZV90CWZp bGUsCS8qITwgaW46IGhhbmRsZSB0byBhIGZpbGUgKi8KIAl2b2lkKgkJYnVmLAkvKiE8IGluOiBi dWZmZXIgd2hlcmUgdG8gcmVhZCBvciBmcm9tIHdoaWNoCiAJCQkJdG8gd3JpdGUgKi8KLQl1bGlu dAkJb2Zmc2V0LAkvKiE8IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGZpbGUKLQkJ CQlvZmZzZXQgd2hlcmUgdG8gcmVhZCBvciB3cml0ZSAqLwotCXVsaW50CQlvZmZzZXRfaGlnaCwv KiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQgKi8KKwlvc19v ZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0IHdoZXJlIHRvIHJlYWQgb3Igd3Jp dGUgKi8KIAl1bGludAkJbiwJLyohPCBpbjogbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgb3Igd3Jp dGUgKi8KIAlmaWxfbm9kZV90KgltZXNzYWdlMSwvKiE8IGluOiBtZXNzYWdlIGZvciB0aGUgYWlv IGhhbmRsZXIKIAkJCQkoY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgYSBjb21wbGV0ZWQKQEAgLTc2 MiwxMCArNzQ5LDcgQEAgcGZzX29zX2ZpbGVfd3JpdGVfZnVuYygKIAkJCQludWxsLXRlcm1pbmF0 ZWQgc3RyaW5nICovCiAJb3NfZmlsZV90CWZpbGUsCS8qITwgaW46IGhhbmRsZSB0byBhIGZpbGUg Ki8KIAljb25zdCB2b2lkKglidWYsCS8qITwgaW46IGJ1ZmZlciBmcm9tIHdoaWNoIHRvIHdyaXRl ICovCi0JdWxpbnQJCW9mZnNldCwJLyohPCBpbjogbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBv ZiBmaWxlCi0JCQkJb2Zmc2V0IHdoZXJlIHRvIHdyaXRlICovCi0JdWxpbnQJCW9mZnNldF9oaWdo LC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAqLworCW9z X29mZnNldF90CW9mZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gd3JpdGUgKi8K IAl1bGludAkJbiwJLyohPCBpbjogbnVtYmVyIG9mIGJ5dGVzIHRvIHdyaXRlICovCiAJY29uc3Qg Y2hhcioJc3JjX2ZpbGUsLyohPCBpbjogZmlsZSBuYW1lIHdoZXJlIGZ1bmMgaW52b2tlZCAqLwog CXVsaW50CQlzcmNfbGluZSk7LyohPCBpbjogbGluZSB3aGVyZSB0aGUgZnVuYyBpbnZva2VkICov CkBAIC04MTQsMjMgKzc5OCwxMyBAQCBvc19maWxlX2Nsb3NlX25vX2Vycm9yX2hhbmRsaW5nKAog I2VuZGlmIC8qIFVOSVZfSE9UQkFDS1VQICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIGEg ZmlsZSBzaXplLgotQHJldHVybglUUlVFIGlmIHN1Y2Nlc3MgKi8KK0ByZXR1cm4JZmlsZSBzaXpl LCBvciAob3Nfb2Zmc2V0X3QpIC0xIG9uIGZhaWx1cmUgKi8KIFVOSVZfSU5URVJOCi1pYm9vbAor b3Nfb2Zmc2V0X3QKIG9zX2ZpbGVfZ2V0X3NpemUoCiAvKj09PT09PT09PT09PT0qLwotCW9zX2Zp bGVfdAlmaWxlLAkvKiE8IGluOiBoYW5kbGUgdG8gYSBmaWxlICovCi0JdWxpbnQqCQlzaXplLAkv KiE8IG91dDogbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJc2l6ZSAqLwot CXVsaW50KgkJc2l6ZV9oaWdoKTsvKiE8IG91dDogbW9zdCBzaWduaWZpY2FudCAzMiBiaXRzIG9m IHNpemUgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUdldHMgZmlsZSBzaXplIGFzIGEgNjQtYml0 IGludGVnZXIgaWJfaW50NjRfdC4KLUByZXR1cm4Jc2l6ZSBpbiBieXRlcywgLTEgaWYgZXJyb3Ig Ki8KLVVOSVZfSU5URVJOCi1pYl9pbnQ2NF90Ci1vc19maWxlX2dldF9zaXplX2FzX2libG9uZ2xv bmcoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi0Jb3NfZmlsZV90CWZpbGUpOwkv KiE8IGluOiBoYW5kbGUgdG8gYSBmaWxlICovCisJb3NfZmlsZV90CWZpbGUpCS8qITwgaW46IGhh bmRsZSB0byBhIGZpbGUgKi8KKwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKTsK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFdyaXRlIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHplcm9z IHRvIGEgbmV3bHkgY3JlYXRlZCBmaWxlLgogQHJldHVybglUUlVFIGlmIHN1Y2Nlc3MgKi8KQEAg LTg0MSw5ICs4MTUsOCBAQCBvc19maWxlX3NldF9zaXplKAogCWNvbnN0IGNoYXIqCW5hbWUsCS8q ITwgaW46IG5hbWUgb2YgdGhlIGZpbGUgb3IgcGF0aCBhcyBhCiAJCQkJbnVsbC10ZXJtaW5hdGVk IHN0cmluZyAqLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBoYW5kbGUgdG8gYSBmaWxlICov Ci0JdWxpbnQJCXNpemUsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgZmls ZQotCQkJCXNpemUgKi8KLQl1bGludAkJc2l6ZV9oaWdoKTsvKiE8IGluOiBtb3N0IHNpZ25pZmlj YW50IDMyIGJpdHMgb2Ygc2l6ZSAqLworCW9zX29mZnNldF90CXNpemUpCS8qITwgaW46IGZpbGUg c2l6ZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogVHJ1bmNhdGVzIGEgZmlsZSBhdCBpdHMgY3VycmVudCBwb3Np dGlvbi4KIEByZXR1cm4JVFJVRSBpZiBzdWNjZXNzICovCkBAIC04ODMsMTAgKzg1Niw3IEBAIG9z X2ZpbGVfcmVhZF9mdW5jKAogLyo9PT09PT09PT09PT09PSovCiAJb3NfZmlsZV90CWZpbGUsCS8q ITwgaW46IGhhbmRsZSB0byBhIGZpbGUgKi8KIAl2b2lkKgkJYnVmLAkvKiE8IGluOiBidWZmZXIg d2hlcmUgdG8gcmVhZCAqLwotCXVsaW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmlj YW50IDMyIGJpdHMgb2YgZmlsZQotCQkJCW9mZnNldCB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJ CW9mZnNldF9oaWdoLC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9m ZnNldCAqLworCW9zX29mZnNldF90CW9mZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUg dG8gcmVhZCAqLwogCXVsaW50CQluKTsJLyohPCBpbjogbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQg Ki8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogUmV3aW5kIGZpbGUgdG8gaXRzIHN0YXJ0LCByZWFkIGF0IG1v c3Qgc2l6ZSAtIDEgYnl0ZXMgZnJvbSBpdCB0byBzdHIsIGFuZApAQCAtOTExLDEwICs4ODEsNyBA QCBvc19maWxlX3JlYWRfbm9fZXJyb3JfaGFuZGxpbmdfZnVuYygKIC8qPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0qLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBoYW5kbGUgdG8g YSBmaWxlICovCiAJdm9pZCoJCWJ1ZiwJLyohPCBpbjogYnVmZmVyIHdoZXJlIHRvIHJlYWQgKi8K LQl1bGludAkJb2Zmc2V0LAkvKiE8IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGZp bGUKLQkJCQlvZmZzZXQgd2hlcmUgdG8gcmVhZCAqLwotCXVsaW50CQlvZmZzZXRfaGlnaCwvKiE8 IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQgKi8KKwlvc19vZmZz ZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0IHdoZXJlIHRvIHJlYWQgKi8KIAl1bGlu dAkJbik7CS8qITwgaW46IG51bWJlciBvZiBieXRlcyB0byByZWFkICovCiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgpAQCAtOTMwLDEwICs4OTcsNyBAQCBvc19maWxlX3dyaXRlX2Z1bmMoCiAJCQkJbnVsbC10 ZXJtaW5hdGVkIHN0cmluZyAqLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBoYW5kbGUgdG8g YSBmaWxlICovCiAJY29uc3Qgdm9pZCoJYnVmLAkvKiE8IGluOiBidWZmZXIgZnJvbSB3aGljaCB0 byB3cml0ZSAqLwotCXVsaW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMy IGJpdHMgb2YgZmlsZQotCQkJCW9mZnNldCB3aGVyZSB0byB3cml0ZSAqLwotCXVsaW50CQlvZmZz ZXRfaGlnaCwvKiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQg Ki8KKwlvc19vZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0IHdoZXJlIHRvIHdy aXRlICovCiAJdWxpbnQJCW4pOwkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUgKi8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogQ2hlY2sgdGhlIGV4aXN0ZW5jZSBhbmQgdHlwZSBvZiB0aGUgZ2l2 ZW4gZmlsZS4KQEAgLTEwMzcsMTAgKzEwMDEsNyBAQCBvc19haW9fZnVuYygKIAlvc19maWxlX3QJ ZmlsZSwJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwogCXZvaWQqCQlidWYsCS8qITwgaW46 IGJ1ZmZlciB3aGVyZSB0byByZWFkIG9yIGZyb20gd2hpY2gKIAkJCQl0byB3cml0ZSAqLwotCXVs aW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgZmlsZQot CQkJCW9mZnNldCB3aGVyZSB0byByZWFkIG9yIHdyaXRlICovCi0JdWxpbnQJCW9mZnNldF9oaWdo LCAvKiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQgKi8KKwlv c19vZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0IHdoZXJlIHRvIHJlYWQgb3Ig d3JpdGUgKi8KIAl1bGludAkJbiwJLyohPCBpbjogbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgb3Ig d3JpdGUgKi8KIAlmaWxfbm9kZV90KgltZXNzYWdlMSwvKiE8IGluOiBtZXNzYWdlIGZvciB0aGUg YWlvIGhhbmRsZXIKIAkJCQkoY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgYSBjb21wbGV0ZWQKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwZmlsZS5pYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMGZpbGUuaWMJcmV2aWQ6aW5hYW0ucmFuYUBv cmFjbGUuY29tLTIwMTEwNTE2MTYwMTM5LTk1OWp3bndwYzF5MjIwbXIKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL29zMGZpbGUuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTA1MTcxMTQyMTAtZTdkZng5ejM2cjJ0dW16egpAQCAtMjE2LDEwICsyMTYsNyBAQCBwZnNf b3NfYWlvX2Z1bmMoCiAJb3NfZmlsZV90CWZpbGUsCS8qITwgaW46IGhhbmRsZSB0byBhIGZpbGUg Ki8KIAl2b2lkKgkJYnVmLAkvKiE8IGluOiBidWZmZXIgd2hlcmUgdG8gcmVhZCBvciBmcm9tIHdo aWNoCiAJCQkJdG8gd3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0LAkvKiE8IGluOiBsZWFzdCBzaWdu aWZpY2FudCAzMiBiaXRzIG9mIGZpbGUKLQkJCQlvZmZzZXQgd2hlcmUgdG8gcmVhZCBvciB3cml0 ZSAqLwotCXVsaW50CQlvZmZzZXRfaGlnaCwvKiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJp dHMgb2YKLQkJCQlvZmZzZXQgKi8KKwlvc19vZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUg b2Zmc2V0IHdoZXJlIHRvIHJlYWQgb3Igd3JpdGUgKi8KIAl1bGludAkJbiwJLyohPCBpbjogbnVt YmVyIG9mIGJ5dGVzIHRvIHJlYWQgb3Igd3JpdGUgKi8KIAlmaWxfbm9kZV90KgltZXNzYWdlMSwv KiE8IGluOiBtZXNzYWdlIGZvciB0aGUgYWlvIGhhbmRsZXIKIAkJCQkoY2FuIGJlIHVzZWQgdG8g aWRlbnRpZnkgYSBjb21wbGV0ZWQKQEAgLTI0Myw3ICsyNDAsNyBAQCBwZnNfb3NfYWlvX2Z1bmMo CiAJCQkJCTogUFNJX0ZJTEVfUkVBRCwKIAkJCQkgICBzcmNfZmlsZSwgc3JjX2xpbmUpOwogCi0J cmVzdWx0ID0gb3NfYWlvX2Z1bmModHlwZSwgbW9kZSwgbmFtZSwgZmlsZSwgYnVmLCBvZmZzZXQs IG9mZnNldF9oaWdoLAorCXJlc3VsdCA9IG9zX2Fpb19mdW5jKHR5cGUsIG1vZGUsIG5hbWUsIGZp bGUsIGJ1Ziwgb2Zmc2V0LAogCQkJICAgICBuLCBtZXNzYWdlMSwgbWVzc2FnZTIpOwogCiAJcmVn aXN0ZXJfcGZzX2ZpbGVfaW9fZW5kKGxvY2tlciwgbik7CkBAIC0yNjMsMTAgKzI2MCw3IEBAIHBm c19vc19maWxlX3JlYWRfZnVuYygKIC8qPT09PT09PT09PT09PT09PT09Ki8KIAlvc19maWxlX3QJ ZmlsZSwJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwogCXZvaWQqCQlidWYsCS8qITwgaW46 IGJ1ZmZlciB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJCW9mZnNldCwJLyohPCBpbjogbGVhc3Qg c2lnbmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJb2Zmc2V0IHdoZXJlIHRvIHJlYWQgKi8K LQl1bGludAkJb2Zmc2V0X2hpZ2gsLyohPCBpbjogbW9zdCBzaWduaWZpY2FudCAzMiBiaXRzIG9m Ci0JCQkJb2Zmc2V0ICovCisJb3Nfb2Zmc2V0X3QJb2Zmc2V0LAkvKiE8IGluOiBmaWxlIG9mZnNl dCB3aGVyZSB0byByZWFkICovCiAJdWxpbnQJCW4sCS8qITwgaW46IG51bWJlciBvZiBieXRlcyB0 byByZWFkICovCiAJY29uc3QgY2hhcioJc3JjX2ZpbGUsLyohPCBpbjogZmlsZSBuYW1lIHdoZXJl IGZ1bmMgaW52b2tlZCAqLwogCXVsaW50CQlzcmNfbGluZSkvKiE8IGluOiBsaW5lIHdoZXJlIHRo ZSBmdW5jIGludm9rZWQgKi8KQEAgLTI3OCw3ICsyNzIsNyBAQCBwZnNfb3NfZmlsZV9yZWFkX2Z1 bmMoCiAJcmVnaXN0ZXJfcGZzX2ZpbGVfaW9fYmVnaW4oJnN0YXRlLCBsb2NrZXIsIGZpbGUsIG4s IFBTSV9GSUxFX1JFQUQsCiAJCQkJICAgc3JjX2ZpbGUsIHNyY19saW5lKTsKIAotCXJlc3VsdCA9 IG9zX2ZpbGVfcmVhZF9mdW5jKGZpbGUsIGJ1Ziwgb2Zmc2V0LCBvZmZzZXRfaGlnaCwgbik7CisJ cmVzdWx0ID0gb3NfZmlsZV9yZWFkX2Z1bmMoZmlsZSwgYnVmLCBvZmZzZXQsIG4pOwogCiAJcmVn aXN0ZXJfcGZzX2ZpbGVfaW9fZW5kKGxvY2tlciwgbik7CiAKQEAgLTI5OSwxMCArMjkzLDcgQEAg cGZzX29zX2ZpbGVfcmVhZF9ub19lcnJvcl9oYW5kbGluZ19mdW5jKAogLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0qLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBoYW5k bGUgdG8gYSBmaWxlICovCiAJdm9pZCoJCWJ1ZiwJLyohPCBpbjogYnVmZmVyIHdoZXJlIHRvIHJl YWQgKi8KLQl1bGludAkJb2Zmc2V0LAkvKiE8IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRz IG9mIGZpbGUKLQkJCQlvZmZzZXQgd2hlcmUgdG8gcmVhZCAqLwotCXVsaW50CQlvZmZzZXRfaGln aCwvKiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQgKi8KKwlv c19vZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0IHdoZXJlIHRvIHJlYWQgKi8K IAl1bGludAkJbiwJLyohPCBpbjogbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgKi8KIAljb25zdCBj aGFyKglzcmNfZmlsZSwvKiE8IGluOiBmaWxlIG5hbWUgd2hlcmUgZnVuYyBpbnZva2VkICovCiAJ dWxpbnQJCXNyY19saW5lKS8qITwgaW46IGxpbmUgd2hlcmUgdGhlIGZ1bmMgaW52b2tlZCAqLwpA QCAtMzE0LDggKzMwNSw3IEBAIHBmc19vc19maWxlX3JlYWRfbm9fZXJyb3JfaGFuZGxpbmdfZnVu YygKIAlyZWdpc3Rlcl9wZnNfZmlsZV9pb19iZWdpbigmc3RhdGUsIGxvY2tlciwgZmlsZSwgbiwg UFNJX0ZJTEVfUkVBRCwKIAkJCQkgICBzcmNfZmlsZSwgc3JjX2xpbmUpOwogCi0JcmVzdWx0ID0g b3NfZmlsZV9yZWFkX25vX2Vycm9yX2hhbmRsaW5nX2Z1bmMoZmlsZSwgYnVmLCBvZmZzZXQsCi0J CQkJCQkgICAgIG9mZnNldF9oaWdoLCBuKTsKKwlyZXN1bHQgPSBvc19maWxlX3JlYWRfbm9fZXJy b3JfaGFuZGxpbmdfZnVuYyhmaWxlLCBidWYsIG9mZnNldCwgbik7CiAKIAlyZWdpc3Rlcl9wZnNf ZmlsZV9pb19lbmQobG9ja2VyLCBuKTsKIApAQCAtMzM2LDEwICszMjYsNyBAQCBwZnNfb3NfZmls ZV93cml0ZV9mdW5jKAogCQkJCW51bGwtdGVybWluYXRlZCBzdHJpbmcgKi8KIAlvc19maWxlX3QJ ZmlsZSwJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwogCWNvbnN0IHZvaWQqCWJ1ZiwJLyoh PCBpbjogYnVmZmVyIGZyb20gd2hpY2ggdG8gd3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0LAkvKiE8 IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIGZpbGUKLQkJCQlvZmZzZXQgd2hlcmUg dG8gd3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0X2hpZ2gsLyohPCBpbjogbW9zdCBzaWduaWZpY2Fu dCAzMiBiaXRzIG9mCi0JCQkJb2Zmc2V0ICovCisJb3Nfb2Zmc2V0X3QJb2Zmc2V0LAkvKiE8IGlu OiBmaWxlIG9mZnNldCB3aGVyZSB0byB3cml0ZSAqLwogCXVsaW50CQluLAkvKiE8IGluOiBudW1i ZXIgb2YgYnl0ZXMgdG8gd3JpdGUgKi8KIAljb25zdCBjaGFyKglzcmNfZmlsZSwvKiE8IGluOiBm aWxlIG5hbWUgd2hlcmUgZnVuYyBpbnZva2VkICovCiAJdWxpbnQJCXNyY19saW5lKS8qITwgaW46 IGxpbmUgd2hlcmUgdGhlIGZ1bmMgaW52b2tlZCAqLwpAQCAtMzUxLDcgKzMzOCw3IEBAIHBmc19v c19maWxlX3dyaXRlX2Z1bmMoCiAJcmVnaXN0ZXJfcGZzX2ZpbGVfaW9fYmVnaW4oJnN0YXRlLCBs b2NrZXIsIGZpbGUsIG4sIFBTSV9GSUxFX1dSSVRFLAogCQkJCSAgIHNyY19maWxlLCBzcmNfbGlu ZSk7CiAKLQlyZXN1bHQgPSBvc19maWxlX3dyaXRlX2Z1bmMobmFtZSwgZmlsZSwgYnVmLCBvZmZz ZXQsIG9mZnNldF9oaWdoLCBuKTsKKwlyZXN1bHQgPSBvc19maWxlX3dyaXRlX2Z1bmMobmFtZSwg ZmlsZSwgYnVmLCBvZmZzZXQsIG4pOwogCiAJcmVnaXN0ZXJfcGZzX2ZpbGVfaW9fZW5kKGxvY2tl ciwgbik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQw dXQuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MHV0LmgJcmV2aWQ6aW5hYW0u cmFuYUBvcmFjbGUuY29tLTIwMTEwNTE2MTYwMTM5LTk1OWp3bndwYzF5MjIwbXIKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MHV0LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA1MTcxMTQyMTAtZTdkZng5ejM2cjJ0dW16egpAQCAtOTgsMTYgKzk4LDYgQEAgZG8g ewkJCQkJCQkJXAogI2RlZmluZSBVVF9NSU4oYSwgYikJKChhKSA8IChiKSA/IChhKSA6IChiKSkK ICNkZWZpbmUgVVRfTUFYKGEsIGIpCSgoYSkgPiAoYikgPyAoYSkgOiAoYikpCiAKLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUdl dHMgdGhlIGhpZ2ggMzIgYml0cyBpbiBhIHVsaW50LiBUaGF0IGlzIG1ha2VzIGEgc2hpZnQgPj4g MzIsCi1idXQgc2luY2UgdGhlcmUgc2VlbSB0byBiZSBjb21waWxlciBidWdzIGluIGJvdGggZ2Nj IGFuZCBWaXN1YWwgQysrLAotd2UgZG8gdGhpcyBieSBhIHNwZWNpYWwgY29udmVyc2lvbi4KLUBy ZXR1cm4JYSA+PiAzMiAqLwotVU5JVl9JTlRFUk4KLXVsaW50Ci11dF9nZXRfaGlnaDMyKAotLyo9 PT09PT09PT09Ki8KLQl1bGludAlhKTsJLyohPCBpbjogdWxpbnQgKi8KIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDYWxjdWxhdGVz IHRoZSBtaW5pbXVtIG9mIHR3byB1bGludHMuCiBAcmV0dXJuCW1pbmltdW0gKi8KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwcmVjdi5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2xvZy9sb2cwcmVjdi5jCXJldmlkOmluYWFtLnJhbmFAb3JhY2xlLmNvbS0yMDEx MDUxNjE2MDEzOS05NTlqd253cGMxeTIyMG1yCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xv ZzByZWN2LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA1MTcxMTQyMTAtZTdk Zng5ejM2cjJ0dW16egpAQCAtMzQ0MywxOSArMzQ0MywxNSBAQCByZWN2X3Jlc2V0X2xvZ19maWxl c19mb3JfYmFja3VwKAogCQl9CiAKIAkJZnByaW50ZihzdGRlcnIsCi0JCQkiU2V0dGluZyBsb2cg ZmlsZSBzaXplIHRvICVsdSAlbHVcbiIsCi0JCQkodWxvbmcpIHV0X2dldF9oaWdoMzIobG9nX2Zp bGVfc2l6ZSksCi0JCQkodWxvbmcpIGxvZ19maWxlX3NpemUgJiAweEZGRkZGRkZGVUwpOwotCi0J CXN1Y2Nlc3MgPSBvc19maWxlX3NldF9zaXplKG5hbWUsIGxvZ19maWxlLAotCQkJCQkgICBsb2df ZmlsZV9zaXplICYgMHhGRkZGRkZGRlVMLAotCQkJCQkgICB1dF9nZXRfaGlnaDMyKGxvZ19maWxl X3NpemUpKTsKKwkJCSJTZXR0aW5nIGxvZyBmaWxlIHNpemUgdG8gJWxsdVxuIiwKKwkJCWxvZ19m aWxlX3NpemUpOworCisJCXN1Y2Nlc3MgPSBvc19maWxlX3NldF9zaXplKG5hbWUsIGxvZ19maWxl LCBsb2dfZmlsZV9zaXplKTsKIAogCQlpZiAoIXN1Y2Nlc3MpIHsKIAkJCWZwcmludGYoc3RkZXJy LAotCQkJCSJJbm5vREI6IENhbm5vdCBzZXQgJXMgc2l6ZSB0byAlbHUgJWx1XG4iLAotCQkJCW5h bWUsICh1bG9uZykgdXRfZ2V0X2hpZ2gzMihsb2dfZmlsZV9zaXplKSwKLQkJCQkodWxvbmcpIChs b2dfZmlsZV9zaXplICYgMHhGRkZGRkZGRlVMKSk7CisJCQkJIklubm9EQjogQ2Fubm90IHNldCAl cyBzaXplIHRvICVsbHVcbiIsCisJCQkJbmFtZSwgbG9nX2ZpbGVfc2l6ZSk7CiAJCQlleGl0KDEp OwogCQl9CiAKQEAgLTM1MDksOSArMzUwNSw4IEBAIGxvZ19ncm91cF9yZWNvdmVyX2Zyb21fYXJj aGl2ZV9maWxlKAogCXVsaW50CQlsZW47CiAJaWJvb2wJCXJldDsKIAlieXRlKgkJYnVmOwotCXVs aW50CQlyZWFkX29mZnNldDsKLQl1bGludAkJZmlsZV9zaXplOwotCXVsaW50CQlmaWxlX3NpemVf aGlnaDsKKwlvc19vZmZzZXRfdAlyZWFkX29mZnNldDsKKwlvc19vZmZzZXRfdAlmaWxlX3NpemU7 CiAJaW50CQlpbnB1dF9jaGFyOwogCWNoYXIJCW5hbWVbMTAwMDBdOwogCkBAIC0zNTUzLDEwICsz NTQ4LDggQEAgYXNrX2FnYWluOgogCQl9CiAJfQogCi0JcmV0ID0gb3NfZmlsZV9nZXRfc2l6ZShm aWxlX2hhbmRsZSwgJmZpbGVfc2l6ZSwgJmZpbGVfc2l6ZV9oaWdoKTsKLQl1dF9hKHJldCk7Ci0K LQl1dF9hKGZpbGVfc2l6ZV9oaWdoID09IDApOworCWZpbGVfc2l6ZSA9IG9zX2ZpbGVfZ2V0X3Np emUoZmlsZV9oYW5kbGUpOworCXV0X2EoZmlsZV9zaXplICE9IChvc19vZmZzZXRfdCkgLTEpOwog CiAJZnByaW50ZihzdGRlcnIsICJJbm5vREI6IE9wZW5lZCBhcmNoaXZlZCBsb2cgZmlsZSAlc1xu IiwgbmFtZSk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL29zL29zMGZp bGUuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMJcmV2aWQ6aW5hYW0ucmFu YUBvcmFjbGUuY29tLTIwMTEwNTE2MTYwMTM5LTk1OWp3bndwYzF5MjIwbXIKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTA1MTcxMTQyMTAtZTdkZng5ejM2cjJ0dW16egpAQCAtMTY4LDkgKzE2OCw3IEBAIHN0cnVjdCBv c19haW9fc2xvdF9zdHJ1Y3R7CiAJCQkJCXdyaXRlICovCiAJYnl0ZSoJCWJ1ZjsJCS8qITwgYnVm ZmVyIHVzZWQgaW4gaS9vICovCiAJdWxpbnQJCXR5cGU7CQkvKiE8IE9TX0ZJTEVfUkVBRCBvciBP U19GSUxFX1dSSVRFICovCi0JdWxpbnQJCW9mZnNldDsJCS8qITwgMzIgbG93IGJpdHMgb2YgZmls ZSBvZmZzZXQgaW4KLQkJCQkJYnl0ZXMgKi8KLQl1bGludAkJb2Zmc2V0X2hpZ2g7CS8qITwgMzIg aGlnaCBiaXRzIG9mIGZpbGUgb2Zmc2V0ICovCisJb3Nfb2Zmc2V0X3QJb2Zmc2V0OwkJLyohPCBm aWxlIG9mZnNldCBpbiBieXRlcyAqLwogCW9zX2ZpbGVfdAlmaWxlOwkJLyohPCBmaWxlIHdoZXJl IHRvIHJlYWQgb3Igd3JpdGUgKi8KIAljb25zdCBjaGFyKgluYW1lOwkJLyohPCBmaWxlIG5hbWUg b3IgcGF0aCAqLwogCWlib29sCQlpb19hbHJlYWR5X2RvbmU7LyohPCB1c2VkIG9ubHkgaW4gc2lt dWxhdGVkIGFpbzoKQEAgLTE4NjMsNzYgKzE4NjEsMzMgQEAgb3NfZmlsZV9jbG9zZV9ub19lcnJv cl9oYW5kbGluZygKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyBhIGZpbGUgc2l6ZS4KLUBy ZXR1cm4JVFJVRSBpZiBzdWNjZXNzICovCitAcmV0dXJuCWZpbGUgc2l6ZSwgb3IgKG9zX29mZnNl dF90KSAtMSBvbiBmYWlsdXJlICovCiBVTklWX0lOVEVSTgotaWJvb2wKK29zX29mZnNldF90CiBv c19maWxlX2dldF9zaXplKAogLyo9PT09PT09PT09PT09Ki8KLQlvc19maWxlX3QJZmlsZSwJLyoh PCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwotCXVsaW50KgkJc2l6ZSwJLyohPCBvdXQ6IGxlYXN0 IHNpZ25pZmljYW50IDMyIGJpdHMgb2YgZmlsZQotCQkJCXNpemUgKi8KLQl1bGludCoJCXNpemVf aGlnaCkvKiE8IG91dDogbW9zdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mIHNpemUgKi8KKwlvc19m aWxlX3QJZmlsZSkJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwogewogI2lmZGVmIF9fV0lO X18KLQlEV09SRAloaWdoOwotCURXT1JECWxvdzsKKwlvc19vZmZzZXRfdAlvZmZzZXQ7CisJRFdP UkQJCWhpZ2g7CisJRFdPUkQJCWxvdzsKIAogCWxvdyA9IEdldEZpbGVTaXplKGZpbGUsICZoaWdo KTsKIAogCWlmICgobG93ID09IDB4RkZGRkZGRkYpICYmIChHZXRMYXN0RXJyb3IoKSAhPSBOT19F UlJPUikpIHsKLQkJcmV0dXJuKEZBTFNFKTsKKwkJcmV0dXJuKChvc19vZmZzZXRfdCkgLTEpOwog CX0KIAotCSpzaXplID0gbG93OwotCSpzaXplX2hpZ2ggPSBoaWdoOworCW9mZnNldCA9IChvc19v ZmZzZXRfdCkgbG93IHwgKChvc19vZmZzZXRfdCkgaGlnaCA8PCAzMik7CiAKLQlyZXR1cm4oVFJV RSk7CisJcmV0dXJuKG9mZnNldCk7CiAjZWxzZQotCW9mZl90CW9mZnM7Ci0KLQlvZmZzID0gbHNl ZWsoZmlsZSwgMCwgU0VFS19FTkQpOwotCi0JaWYgKG9mZnMgPT0gKChvZmZfdCktMSkpIHsKLQot CQlyZXR1cm4oRkFMU0UpOwotCX0KLQotCWlmIChzaXplb2Yob2ZmX3QpID4gNCkgewotCQkqc2l6 ZSA9ICh1bGludCkob2ZmcyAmIDB4RkZGRkZGRkZVTCk7Ci0JCSpzaXplX2hpZ2ggPSAodWxpbnQp KG9mZnMgPj4gMzIpOwotCX0gZWxzZSB7Ci0JCSpzaXplID0gKHVsaW50KSBvZmZzOwotCQkqc2l6 ZV9oaWdoID0gMDsKLQl9Ci0KLQlyZXR1cm4oVFJVRSk7CisJcmV0dXJuKChvc19vZmZzZXRfdCkg bHNlZWsoZmlsZSwgMCwgU0VFS19FTkQpKTsKICNlbmRpZgogfQogCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCi1HZXRzIGZpbGUgc2l6ZSBhcyBhIDY0LWJpdCBpbnRlZ2VyIGliX2ludDY0X3QuCi1AcmV0 dXJuCXNpemUgaW4gYnl0ZXMsIC0xIGlmIGVycm9yICovCi1VTklWX0lOVEVSTgotaWJfaW50NjRf dAotb3NfZmlsZV9nZXRfc2l6ZV9hc19pYmxvbmdsb25nKAotLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLwotCW9zX2ZpbGVfdAlmaWxlKQkvKiE8IGluOiBoYW5kbGUgdG8gYSBmaWxlICov Ci17Ci0JdWxpbnQJc2l6ZTsKLQl1bGludAlzaXplX2hpZ2g7Ci0JaWJvb2wJc3VjY2VzczsKLQot CXN1Y2Nlc3MgPSBvc19maWxlX2dldF9zaXplKGZpbGUsICZzaXplLCAmc2l6ZV9oaWdoKTsKLQot CWlmICghc3VjY2VzcykgewotCi0JCXJldHVybigtMSk7Ci0JfQotCi0JcmV0dXJuKCgoKGliX2lu dDY0X3Qpc2l6ZV9oaWdoKSA8PCAzMikgKyAoaWJfaW50NjRfdClzaXplKTsKLX0KLQotLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogV3JpdGUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgemVyb3MgdG8gYSBu ZXdseSBjcmVhdGVkIGZpbGUuCiBAcmV0dXJuCVRSVUUgaWYgc3VjY2VzcyAqLwogVU5JVl9JTlRF Uk4KQEAgLTE5NDIsMjQgKzE4OTcsMTggQEAgb3NfZmlsZV9zZXRfc2l6ZSgKIAljb25zdCBjaGFy KgluYW1lLAkvKiE8IGluOiBuYW1lIG9mIHRoZSBmaWxlIG9yIHBhdGggYXMgYQogCQkJCW51bGwt dGVybWluYXRlZCBzdHJpbmcgKi8KIAlvc19maWxlX3QJZmlsZSwJLyohPCBpbjogaGFuZGxlIHRv IGEgZmlsZSAqLwotCXVsaW50CQlzaXplLAkvKiE8IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBi aXRzIG9mIGZpbGUKLQkJCQlzaXplICovCi0JdWxpbnQJCXNpemVfaGlnaCkvKiE8IGluOiBtb3N0 IHNpZ25pZmljYW50IDMyIGJpdHMgb2Ygc2l6ZSAqLworCW9zX29mZnNldF90CXNpemUpCS8qITwg aW46IGZpbGUgc2l6ZSAqLwogewotCWliX2ludDY0X3QJY3VycmVudF9zaXplOwotCWliX2ludDY0 X3QJZGVzaXJlZF9zaXplOworCW9zX29mZnNldF90CWN1cnJlbnRfc2l6ZTsKIAlpYm9vbAkJcmV0 OwogCWJ5dGUqCQlidWY7CiAJYnl0ZSoJCWJ1ZjI7CiAJdWxpbnQJCWJ1Zl9zaXplOwogCi0JdXRf YShzaXplID09IChzaXplICYgMHhGRkZGRkZGRikpOwotCiAJY3VycmVudF9zaXplID0gMDsKLQlk ZXNpcmVkX3NpemUgPSAoaWJfaW50NjRfdClzaXplICsgKCgoaWJfaW50NjRfdClzaXplX2hpZ2gp IDw8IDMyKTsKIAogCS8qIFdyaXRlIHVwIHRvIDEgbWVnYWJ5dGUgYXQgYSB0aW1lLiAqLwotCWJ1 Zl9zaXplID0gdXRfbWluKDY0LCAodWxpbnQpIChkZXNpcmVkX3NpemUgLyBVTklWX1BBR0VfU0la RSkpCisJYnVmX3NpemUgPSB1dF9taW4oNjQsICh1bGludCkgKHNpemUgLyBVTklWX1BBR0VfU0la RSkpCiAJCSogVU5JVl9QQUdFX1NJWkU7CiAJYnVmMiA9IHV0X21hbGxvYyhidWZfc2l6ZSArIFVO SVZfUEFHRV9TSVpFKTsKIApAQCAtMTk2OSw0MiArMTkxOCwzOSBAQCBvc19maWxlX3NldF9zaXpl KAogCS8qIFdyaXRlIGJ1ZmZlciBmdWxsIG9mIHplcm9zICovCiAJbWVtc2V0KGJ1ZiwgMCwgYnVm X3NpemUpOwogCi0JaWYgKGRlc2lyZWRfc2l6ZSA+PSAoaWJfaW50NjRfdCkoMTAwICogMTAyNCAq IDEwMjQpKSB7CisJaWYgKHNpemUgPj0gKG9zX29mZnNldF90KSAxMDAgPDwgMjApIHsKIAogCQlm cHJpbnRmKHN0ZGVyciwgIklubm9EQjogUHJvZ3Jlc3MgaW4gTUI6Iik7CiAJfQogCi0Jd2hpbGUg KGN1cnJlbnRfc2l6ZSA8IGRlc2lyZWRfc2l6ZSkgeworCXdoaWxlIChjdXJyZW50X3NpemUgPCBz aXplKSB7CiAJCXVsaW50CW5fYnl0ZXM7CiAKLQkJaWYgKGRlc2lyZWRfc2l6ZSAtIGN1cnJlbnRf c2l6ZSA8IChpYl9pbnQ2NF90KSBidWZfc2l6ZSkgewotCQkJbl9ieXRlcyA9ICh1bGludCkgKGRl c2lyZWRfc2l6ZSAtIGN1cnJlbnRfc2l6ZSk7CisJCWlmIChzaXplIC0gY3VycmVudF9zaXplIDwg KGliX2ludDY0X3QpIGJ1Zl9zaXplKSB7CisJCQluX2J5dGVzID0gKHVsaW50KSAoc2l6ZSAtIGN1 cnJlbnRfc2l6ZSk7CiAJCX0gZWxzZSB7CiAJCQluX2J5dGVzID0gYnVmX3NpemU7CiAJCX0KIAot CQlyZXQgPSBvc19maWxlX3dyaXRlKG5hbWUsIGZpbGUsIGJ1ZiwKLQkJCQkgICAgKHVsaW50KShj dXJyZW50X3NpemUgJiAweEZGRkZGRkZGKSwKLQkJCQkgICAgKHVsaW50KShjdXJyZW50X3NpemUg Pj4gMzIpLAotCQkJCSAgICBuX2J5dGVzKTsKKwkJcmV0ID0gb3NfZmlsZV93cml0ZShuYW1lLCBm aWxlLCBidWYsIGN1cnJlbnRfc2l6ZSwgbl9ieXRlcyk7CiAJCWlmICghcmV0KSB7CiAJCQl1dF9m cmVlKGJ1ZjIpOwogCQkJZ290byBlcnJvcl9oYW5kbGluZzsKIAkJfQogCiAJCS8qIFByaW50IGFi b3V0IHByb2dyZXNzIGZvciBlYWNoIDEwMCBNQiB3cml0dGVuICovCi0JCWlmICgoaWJfaW50NjRf dCkgKGN1cnJlbnRfc2l6ZSArIG5fYnl0ZXMpIC8gKGliX2ludDY0X3QpKDEwMCAqIDEwMjQgKiAx MDI0KQotCQkgICAgIT0gY3VycmVudF9zaXplIC8gKGliX2ludDY0X3QpKDEwMCAqIDEwMjQgKiAx MDI0KSkgeworCQlpZiAoKGN1cnJlbnRfc2l6ZSArIG5fYnl0ZXMpIC8gKDEwMCA8PCAyMCkKKwkJ ICAgICE9IGN1cnJlbnRfc2l6ZSAvICgxMDAgPDwgMjApKSB7CiAKIAkJCWZwcmludGYoc3RkZXJy LCAiICVsdTAwIiwKIAkJCQkodWxvbmcpICgoY3VycmVudF9zaXplICsgbl9ieXRlcykKLQkJCQkJ IC8gKGliX2ludDY0X3QpKDEwMCAqIDEwMjQgKiAxMDI0KSkpOworCQkJCQkgLyAoMTAwIDw8IDIw KSkpOwogCQl9CiAKIAkJY3VycmVudF9zaXplICs9IG5fYnl0ZXM7CiAJfQogCi0JaWYgKGRlc2ly ZWRfc2l6ZSA+PSAoaWJfaW50NjRfdCkoMTAwICogMTAyNCAqIDEwMjQpKSB7CisJaWYgKHNpemUg Pj0gKG9zX29mZnNldF90KSAxMDAgPDwgMjApIHsKIAogCQlmcHJpbnRmKHN0ZGVyciwgIlxuIik7 CiAJfQpAQCAtMjE5MCwzNSArMjEzNiwyOCBAQCBvc19maWxlX2ZsdXNoX2Z1bmMoCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIERvZXMgYSBzeW5jaHJvbm91cyByZWFkIG9wZXJhdGlvbiBpbiBQb3NpeC4KIEBy ZXR1cm4JbnVtYmVyIG9mIGJ5dGVzIHJlYWQsIC0xIGlmIGVycm9yICovCi1zdGF0aWMKK3N0YXRp YyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKQogc3NpemVfdAog b3NfZmlsZV9wcmVhZCgKIC8qPT09PT09PT09PSovCiAJb3NfZmlsZV90CWZpbGUsCS8qITwgaW46 IGhhbmRsZSB0byBhIGZpbGUgKi8KIAl2b2lkKgkJYnVmLAkvKiE8IGluOiBidWZmZXIgd2hlcmUg dG8gcmVhZCAqLwogCXVsaW50CQluLAkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAq LwotCXVsaW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25pZmljYW50IDMyIGJpdHMgb2Yg ZmlsZQotCQkJCW9mZnNldCBmcm9tIHdoZXJlIHRvIHJlYWQgKi8KLQl1bGludAkJb2Zmc2V0X2hp Z2gpIC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAqLwor CW9zX29mZnNldF90CW9mZnNldCkJLyohPCBpbjogZmlsZSBvZmZzZXQgZnJvbSB3aGVyZSB0byBy ZWFkICovCiB7CiAJb2ZmX3QJb2ZmczsKICNpZiBkZWZpbmVkKEhBVkVfUFJFQUQpICYmICFkZWZp bmVkKEhBVkVfQlJPS0VOX1BSRUFEKQogCXNzaXplX3QJbl9ieXRlczsKICNlbmRpZiAvKiBIQVZF X1BSRUFEICYmICFIQVZFX0JST0tFTl9QUkVBRCAqLwogCi0JdXRfYSgob2Zmc2V0ICYgMHhGRkZG RkZGRlVMKSA9PSBvZmZzZXQpOworCXV0X2FkKG4pOwogCiAJLyogSWYgb2ZmX3QgaXMgPiA0IGJ5 dGVzIGluIHNpemUsIHRoZW4gd2UgYXNzdW1lIHdlIGNhbiBwYXNzIGEKIAk2NC1iaXQgYWRkcmVz cyAqLworCW9mZnMgPSAob2ZmX3QpIG9mZnNldDsKIAotCWlmIChzaXplb2Yob2ZmX3QpID4gNCkg ewotCQlvZmZzID0gKG9mZl90KW9mZnNldCArICgoKG9mZl90KW9mZnNldF9oaWdoKSA8PCAzMik7 Ci0KLQl9IGVsc2UgewotCQlvZmZzID0gKG9mZl90KW9mZnNldDsKLQotCQlpZiAob2Zmc2V0X2hp Z2ggPiAwKSB7CisJaWYgKHNpemVvZihvZmZfdCkgPD0gNCkgeworCQlpZiAoVU5JVl9VTkxJS0VM WShvZmZzZXQgIT0gKG9zX29mZnNldF90KSBvZmZzKSkgewogCQkJZnByaW50ZihzdGRlcnIsCiAJ CQkJIklubm9EQjogRXJyb3I6IGZpbGUgcmVhZCBhdCBvZmZzZXQgPiA0IEdCXG4iKTsKIAkJfQpA QCAtMjI4NywzMiArMjIyNiwyNiBAQCBvc19maWxlX3ByZWFkKAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBE b2VzIGEgc3luY2hyb25vdXMgd3JpdGUgb3BlcmF0aW9uIGluIFBvc2l4LgogQHJldHVybgludW1i ZXIgb2YgYnl0ZXMgd3JpdHRlbiwgLTEgaWYgZXJyb3IgKi8KLXN0YXRpYworc3RhdGljIF9fYXR0 cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpCiBzc2l6ZV90CiBvc19maWxl X3B3cml0ZSgKIC8qPT09PT09PT09PT0qLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBoYW5k bGUgdG8gYSBmaWxlICovCiAJY29uc3Qgdm9pZCoJYnVmLAkvKiE8IGluOiBidWZmZXIgZnJvbSB3 aGVyZSB0byB3cml0ZSAqLwogCXVsaW50CQluLAkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8g d3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0LAkvKiE8IGluOiBsZWFzdCBzaWduaWZpY2FudCAzMiBi aXRzIG9mIGZpbGUKLQkJCQlvZmZzZXQgd2hlcmUgdG8gd3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0 X2hpZ2gpIC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAq LworCW9zX29mZnNldF90CW9mZnNldCkJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gd3Jp dGUgKi8KIHsKIAlzc2l6ZV90CXJldDsKIAlvZmZfdAlvZmZzOwogCi0JdXRfYSgob2Zmc2V0ICYg MHhGRkZGRkZGRlVMKSA9PSBvZmZzZXQpOworCXV0X2FkKG4pOwogCiAJLyogSWYgb2ZmX3QgaXMg PiA0IGJ5dGVzIGluIHNpemUsIHRoZW4gd2UgYXNzdW1lIHdlIGNhbiBwYXNzIGEKIAk2NC1iaXQg YWRkcmVzcyAqLworCW9mZnMgPSAob2ZmX3QpIG9mZnNldDsKIAotCWlmIChzaXplb2Yob2ZmX3Qp ID4gNCkgewotCQlvZmZzID0gKG9mZl90KW9mZnNldCArICgoKG9mZl90KW9mZnNldF9oaWdoKSA8 PCAzMik7Ci0JfSBlbHNlIHsKLQkJb2ZmcyA9IChvZmZfdClvZmZzZXQ7Ci0KLQkJaWYgKG9mZnNl dF9oaWdoID4gMCkgeworCWlmIChzaXplb2Yob2ZmX3QpIDw9IDQpIHsKKwkJaWYgKFVOSVZfVU5M SUtFTFkob2Zmc2V0ICE9IChvc19vZmZzZXRfdCkgb2ZmcykpIHsKIAkJCWZwcmludGYoc3RkZXJy LAogCQkJCSJJbm5vREI6IEVycm9yOiBmaWxlIHdyaXRlIgogCQkJCSIgYXQgb2Zmc2V0ID4gNCBH QlxuIik7CkBAIC0yNDE5LDEwICsyMzUyLDcgQEAgb3NfZmlsZV9yZWFkX2Z1bmMoCiAvKj09PT09 PT09PT09PT09Ki8KIAlvc19maWxlX3QJZmlsZSwJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAq LwogCXZvaWQqCQlidWYsCS8qITwgaW46IGJ1ZmZlciB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJ CW9mZnNldCwJLyohPCBpbjogbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJ b2Zmc2V0IHdoZXJlIHRvIHJlYWQgKi8KLQl1bGludAkJb2Zmc2V0X2hpZ2gsIC8qITwgaW46IG1v c3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAqLworCW9zX29mZnNldF90CW9m ZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gcmVhZCAqLwogCXVsaW50CQluKQkv KiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAqLwogewogI2lmZGVmIF9fV0lOX18KQEAg LTI0MzgsNyArMjM2OCw2IEBAIG9zX2ZpbGVfcmVhZF9mdW5jKAogCiAJLyogT24gNjQtYml0IFdp bmRvd3MsIHVsaW50IGlzIDY0IGJpdHMuIEJ1dCBvZmZzZXQgYW5kIG4gc2hvdWxkIGJlCiAJbm8g bW9yZSB0aGFuIDMyIGJpdHMuICovCi0JdXRfYSgob2Zmc2V0ICYgMHhGRkZGRkZGRlVMKSA9PSBv ZmZzZXQpOwogCXV0X2EoKG4gJiAweEZGRkZGRkZGVUwpID09IG4pOwogCiAJb3Nfbl9maWxlX3Jl YWRzKys7CkBAIC0yNDQ5LDggKzIzNzgsOCBAQCB0cnlfYWdhaW46CiAJdXRfYWQoYnVmKTsKIAl1 dF9hZChuID4gMCk7CiAKLQlsb3cgPSAoRFdPUkQpIG9mZnNldDsKLQloaWdoID0gKERXT1JEKSBv ZmZzZXRfaGlnaDsKKwlsb3cgPSAoRFdPUkQpIG9mZnNldCAmIDB4RkZGRkZGRkY7CisJaGlnaCA9 IChEV09SRCkgKG9mZnNldCA+PiAzMik7CiAKIAlvc19tdXRleF9lbnRlcihvc19maWxlX2NvdW50 X211dGV4KTsKIAlvc19uX3BlbmRpbmdfcmVhZHMrKzsKQEAgLTI1MDEsNyArMjQzMCw3IEBAIHRy eV9hZ2FpbjoKIAlvc19ieXRlc19yZWFkX3NpbmNlX3ByaW50b3V0ICs9IG47CiAKIHRyeV9hZ2Fp bjoKLQlyZXQgPSBvc19maWxlX3ByZWFkKGZpbGUsIGJ1Ziwgbiwgb2Zmc2V0LCBvZmZzZXRfaGln aCk7CisJcmV0ID0gb3NfZmlsZV9wcmVhZChmaWxlLCBidWYsIG4sIG9mZnNldCk7CiAKIAlpZiAo KHVsaW50KXJldCA9PSBuKSB7CiAKQEAgLTI1MDksMTAgKzI0MzgsOSBAQCB0cnlfYWdhaW46CiAJ fQogCiAJZnByaW50ZihzdGRlcnIsCi0JCSJJbm5vREI6IEVycm9yOiB0cmllZCB0byByZWFkICVs dSBieXRlcyBhdCBvZmZzZXQgJWx1ICVsdS5cbiIKKwkJIklubm9EQjogRXJyb3I6IHRyaWVkIHRv IHJlYWQgJWx1IGJ5dGVzIGF0IG9mZnNldCAlbGx1LlxuIgogCQkiSW5ub0RCOiBXYXMgb25seSBh YmxlIHRvIHJlYWQgJWxkLlxuIiwKLQkJKHVsb25nKW4sICh1bG9uZylvZmZzZXRfaGlnaCwKLQkJ KHVsb25nKW9mZnNldCwgKGxvbmcpcmV0KTsKKwkJKHVsb25nKW4sIG9mZnNldCwgKGxvbmcpcmV0 KTsKICNlbmRpZiAvKiBfX1dJTl9fICovCiAjaWZkZWYgX19XSU5fXwogZXJyb3JfaGFuZGxpbmc6 CkBAIC0yNTUxLDEwICsyNDc5LDcgQEAgb3NfZmlsZV9yZWFkX25vX2Vycm9yX2hhbmRsaW5nX2Z1 bmMoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlvc19maWxlX3QJZmls ZSwJLyohPCBpbjogaGFuZGxlIHRvIGEgZmlsZSAqLwogCXZvaWQqCQlidWYsCS8qITwgaW46IGJ1 ZmZlciB3aGVyZSB0byByZWFkICovCi0JdWxpbnQJCW9mZnNldCwJLyohPCBpbjogbGVhc3Qgc2ln bmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJb2Zmc2V0IHdoZXJlIHRvIHJlYWQgKi8KLQl1 bGludAkJb2Zmc2V0X2hpZ2gsIC8qITwgaW46IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgot CQkJCW9mZnNldCAqLworCW9zX29mZnNldF90CW9mZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQg d2hlcmUgdG8gcmVhZCAqLwogCXVsaW50CQluKQkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8g cmVhZCAqLwogewogI2lmZGVmIF9fV0lOX18KQEAgLTI1NzAsNyArMjQ5NSw2IEBAIG9zX2ZpbGVf cmVhZF9ub19lcnJvcl9oYW5kbGluZ19mdW5jKAogCiAJLyogT24gNjQtYml0IFdpbmRvd3MsIHVs aW50IGlzIDY0IGJpdHMuIEJ1dCBvZmZzZXQgYW5kIG4gc2hvdWxkIGJlCiAJbm8gbW9yZSB0aGFu IDMyIGJpdHMuICovCi0JdXRfYSgob2Zmc2V0ICYgMHhGRkZGRkZGRlVMKSA9PSBvZmZzZXQpOwog CXV0X2EoKG4gJiAweEZGRkZGRkZGVUwpID09IG4pOwogCiAJb3Nfbl9maWxlX3JlYWRzKys7CkBA IC0yNTgxLDggKzI1MDUsOCBAQCB0cnlfYWdhaW46CiAJdXRfYWQoYnVmKTsKIAl1dF9hZChuID4g MCk7CiAKLQlsb3cgPSAoRFdPUkQpIG9mZnNldDsKLQloaWdoID0gKERXT1JEKSBvZmZzZXRfaGln aDsKKwlsb3cgPSAoRFdPUkQpIG9mZnNldCAmIDB4RkZGRkZGRkY7CisJaGlnaCA9IChEV09SRCkg KG9mZnNldCA+PiAzMik7CiAKIAlvc19tdXRleF9lbnRlcihvc19maWxlX2NvdW50X211dGV4KTsK IAlvc19uX3BlbmRpbmdfcmVhZHMrKzsKQEAgLTI2MzMsNyArMjU1Nyw3IEBAIHRyeV9hZ2FpbjoK IAlvc19ieXRlc19yZWFkX3NpbmNlX3ByaW50b3V0ICs9IG47CiAKIHRyeV9hZ2FpbjoKLQlyZXQg PSBvc19maWxlX3ByZWFkKGZpbGUsIGJ1Ziwgbiwgb2Zmc2V0LCBvZmZzZXRfaGlnaCk7CisJcmV0 ID0gb3NfZmlsZV9wcmVhZChmaWxlLCBidWYsIG4sIG9mZnNldCk7CiAKIAlpZiAoKHVsaW50KXJl dCA9PSBuKSB7CiAKQEAgLTI2ODgsMTAgKzI2MTIsNyBAQCBvc19maWxlX3dyaXRlX2Z1bmMoCiAJ CQkJbnVsbC10ZXJtaW5hdGVkIHN0cmluZyAqLwogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8IGluOiBo YW5kbGUgdG8gYSBmaWxlICovCiAJY29uc3Qgdm9pZCoJYnVmLAkvKiE8IGluOiBidWZmZXIgZnJv bSB3aGljaCB0byB3cml0ZSAqLwotCXVsaW50CQlvZmZzZXQsCS8qITwgaW46IGxlYXN0IHNpZ25p ZmljYW50IDMyIGJpdHMgb2YgZmlsZQotCQkJCW9mZnNldCB3aGVyZSB0byB3cml0ZSAqLwotCXVs aW50CQlvZmZzZXRfaGlnaCwgLyohPCBpbjogbW9zdCBzaWduaWZpY2FudCAzMiBiaXRzIG9mCi0J CQkJb2Zmc2V0ICovCisJb3Nfb2Zmc2V0X3QJb2Zmc2V0LAkvKiE8IGluOiBmaWxlIG9mZnNldCB3 aGVyZSB0byB3cml0ZSAqLwogCXVsaW50CQluKQkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8g d3JpdGUgKi8KIHsKICNpZmRlZiBfX1dJTl9fCkBAIC0yNzA4LDcgKzI2MjksNiBAQCBvc19maWxl X3dyaXRlX2Z1bmMoCiAKIAkvKiBPbiA2NC1iaXQgV2luZG93cywgdWxpbnQgaXMgNjQgYml0cy4g QnV0IG9mZnNldCBhbmQgbiBzaG91bGQgYmUKIAlubyBtb3JlIHRoYW4gMzIgYml0cy4gKi8KLQl1 dF9hKChvZmZzZXQgJiAweEZGRkZGRkZGVUwpID09IG9mZnNldCk7CiAJdXRfYSgobiAmIDB4RkZG RkZGRkZVTCkgPT0gbik7CiAKIAlvc19uX2ZpbGVfd3JpdGVzKys7CkBAIC0yNzE3LDggKzI2Mzcs OCBAQCBvc19maWxlX3dyaXRlX2Z1bmMoCiAJdXRfYWQoYnVmKTsKIAl1dF9hZChuID4gMCk7CiBy ZXRyeToKLQlsb3cgPSAoRFdPUkQpIG9mZnNldDsKLQloaWdoID0gKERXT1JEKSBvZmZzZXRfaGln aDsKKwlsb3cgPSAoRFdPUkQpIG9mZnNldCAmIDB4RkZGRkZGRkY7CisJaGlnaCA9IChEV09SRCkg KG9mZnNldCA+PiAzMik7CiAKIAlvc19tdXRleF9lbnRlcihvc19maWxlX2NvdW50X211dGV4KTsK IAlvc19uX3BlbmRpbmdfd3JpdGVzKys7CkBAIC0yNzUwLDE0ICsyNjcwLDEzIEBAIHJldHJ5Ogog CQlmcHJpbnRmKHN0ZGVyciwKIAkJCSIgIElubm9EQjogRXJyb3I6IEZpbGUgcG9pbnRlciBwb3Np dGlvbmluZyB0byIKIAkJCSIgZmlsZSAlcyBmYWlsZWQgYXRcbiIKLQkJCSJJbm5vREI6IG9mZnNl dCAlbHUgJWx1LiBPcGVyYXRpbmcgc3lzdGVtIgorCQkJIklubm9EQjogb2Zmc2V0ICVsbHUuIE9w ZXJhdGluZyBzeXN0ZW0iCiAJCQkiIGVycm9yIG51bWJlciAlbHUuXG4iCiAJCQkiSW5ub0RCOiBT b21lIG9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgbnVtYmVycyIKIAkJCSIgYXJlIGRlc2NyaWJlZCBh dFxuIgogCQkJIklubm9EQjogIgogCQkJUkVGTUFOICJvcGVyYXRpbmctc3lzdGVtLWVycm9yLWNv ZGVzLmh0bWxcbiIsCi0JCQluYW1lLCAodWxvbmcpIG9mZnNldF9oaWdoLCAodWxvbmcpIG9mZnNl dCwKLQkJCSh1bG9uZykgR2V0TGFzdEVycm9yKCkpOworCQkJbmFtZSwgb2Zmc2V0LCAodWxvbmcp IEdldExhc3RFcnJvcigpKTsKIAogCQlyZXR1cm4oRkFMU0UpOwogCX0KQEAgLTI4MDgsNyArMjcy Nyw3IEBAIHJldHJ5OgogCiAJCWZwcmludGYoc3RkZXJyLAogCQkJIiAgSW5ub0RCOiBFcnJvcjog V3JpdGUgdG8gZmlsZSAlcyBmYWlsZWQiCi0JCQkiIGF0IG9mZnNldCAlbHUgJWx1LlxuIgorCQkJ IiBhdCBvZmZzZXQgJWxsdS5cbiIKIAkJCSJJbm5vREI6ICVsdSBieXRlcyBzaG91bGQgaGF2ZSBi ZWVuIHdyaXR0ZW4sIgogCQkJIiBvbmx5ICVsdSB3ZXJlIHdyaXR0ZW4uXG4iCiAJCQkiSW5ub0RC OiBPcGVyYXRpbmcgc3lzdGVtIGVycm9yIG51bWJlciAlbHUuXG4iCkBAIC0yODE2LDcgKzI3MzUs NyBAQCByZXRyeToKIAkJCSIgc3VwcG9ydCBmaWxlcyBvZiB0aGlzIHNpemUuXG4iCiAJCQkiSW5u b0RCOiBDaGVjayBhbHNvIHRoYXQgdGhlIGRpc2sgaXMgbm90IGZ1bGwiCiAJCQkiIG9yIGEgZGlz ayBxdW90YSBleGNlZWRlZC5cbiIsCi0JCQluYW1lLCAodWxvbmcpIG9mZnNldF9oaWdoLCAodWxv bmcpIG9mZnNldCwKKwkJCW5hbWUsIG9mZnNldCwKIAkJCSh1bG9uZykgbiwgKHVsb25nKSBsZW4s ICh1bG9uZykgZXJyKTsKIAogCQlpZiAoc3RyZXJyb3IoKGludCllcnIpICE9IE5VTEwpIHsKQEAg LTI4MzgsNyArMjc1Nyw3IEBAIHJldHJ5OgogI2Vsc2UKIAlzc2l6ZV90CXJldDsKIAotCXJldCA9 IG9zX2ZpbGVfcHdyaXRlKGZpbGUsIGJ1Ziwgbiwgb2Zmc2V0LCBvZmZzZXRfaGlnaCk7CisJcmV0 ID0gb3NfZmlsZV9wd3JpdGUoZmlsZSwgYnVmLCBuLCBvZmZzZXQpOwogCiAJaWYgKCh1bGludCly ZXQgPT0gbikgewogCkBAIC0yODUxLDcgKzI3NzAsNyBAQCByZXRyeToKIAogCQlmcHJpbnRmKHN0 ZGVyciwKIAkJCSIgIElubm9EQjogRXJyb3I6IFdyaXRlIHRvIGZpbGUgJXMgZmFpbGVkIgotCQkJ IiBhdCBvZmZzZXQgJWx1ICVsdS5cbiIKKwkJCSIgYXQgb2Zmc2V0ICVsbHUuXG4iCiAJCQkiSW5u b0RCOiAlbHUgYnl0ZXMgc2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuLCIKIAkJCSIgb25seSAlbGQg d2VyZSB3cml0dGVuLlxuIgogCQkJIklubm9EQjogT3BlcmF0aW5nIHN5c3RlbSBlcnJvciBudW1i ZXIgJWx1LlxuIgpAQCAtMjg1OSw3ICsyNzc4LDcgQEAgcmV0cnk6CiAJCQkiIHN1cHBvcnQgZmls ZXMgb2YgdGhpcyBzaXplLlxuIgogCQkJIklubm9EQjogQ2hlY2sgYWxzbyB0aGF0IHRoZSBkaXNr IGlzIG5vdCBmdWxsIgogCQkJIiBvciBhIGRpc2sgcXVvdGEgZXhjZWVkZWQuXG4iLAotCQkJbmFt ZSwgb2Zmc2V0X2hpZ2gsIG9mZnNldCwgbiwgKGxvbmcgaW50KXJldCwKKwkJCW5hbWUsIG9mZnNl dCwgbiwgKGxvbmcgaW50KXJldCwKIAkJCSh1bGludCllcnJubyk7CiAJCWlmIChzdHJlcnJvcihl cnJubykgIT0gTlVMTCkgewogCQkJZnByaW50ZihzdGRlcnIsCkBAIC0zNjU0LDEwICszNTczLDcg QEAgb3NfYWlvX2FycmF5X3Jlc2VydmVfc2xvdCgKIAkJCQludWxsLXRlcm1pbmF0ZWQgc3RyaW5n ICovCiAJdm9pZCoJCWJ1ZiwJLyohPCBpbjogYnVmZmVyIHdoZXJlIHRvIHJlYWQgb3IgZnJvbSB3 aGljaAogCQkJCXRvIHdyaXRlICovCi0JdWxpbnQJCW9mZnNldCwJLyohPCBpbjogbGVhc3Qgc2ln bmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJb2Zmc2V0ICovCi0JdWxpbnQJCW9mZnNldF9o aWdoLCAvKiE8IGluOiBtb3N0IHNpZ25pZmljYW50IDMyIGJpdHMgb2YKLQkJCQlvZmZzZXQgKi8K Kwlvc19vZmZzZXRfdAlvZmZzZXQsCS8qITwgaW46IGZpbGUgb2Zmc2V0ICovCiAJdWxpbnQJCWxl bikJLyohPCBpbjogbGVuZ3RoIG9mIHRoZSBibG9jayB0byByZWFkIG9yIHdyaXRlICovCiB7CiAJ b3NfYWlvX3Nsb3RfdCoJc2xvdCA9IE5VTEw7CkBAIC0zNzQ1LDEzICszNjYxLDEyIEBAIGZvdW5k OgogCXNsb3QtPnR5cGUgICAgID0gdHlwZTsKIAlzbG90LT5idWYgICAgICA9IGJ1ZjsKIAlzbG90 LT5vZmZzZXQgICA9IG9mZnNldDsKLQlzbG90LT5vZmZzZXRfaGlnaCA9IG9mZnNldF9oaWdoOwog CXNsb3QtPmlvX2FscmVhZHlfZG9uZSA9IEZBTFNFOwogCiAjaWZkZWYgV0lOX0FTWU5DX0lPCiAJ Y29udHJvbCA9ICYoc2xvdC0+Y29udHJvbCk7Ci0JY29udHJvbC0+T2Zmc2V0ID0gKERXT1JEKW9m ZnNldDsKLQljb250cm9sLT5PZmZzZXRIaWdoID0gKERXT1JEKW9mZnNldF9oaWdoOworCWNvbnRy b2wtPk9mZnNldCA9IChEV09SRCkgb2Zmc2V0ICYgMHhGRkZGRkZGRjsKKwljb250cm9sLT5PZmZz ZXRIaWdoID0gKERXT1JEKSAob2Zmc2V0ID4+IDMyKTsKIAlSZXNldEV2ZW50KHNsb3QtPmhhbmRs ZSk7CiAKICNlbGlmIGRlZmluZWQoTElOVVhfTkFUSVZFX0FJTykKQEAgLTM3NjMsMTQgKzM2Nzgs MTAgQEAgZm91bmQ6CiAKIAkvKiBDaGVjayBpZiB3ZSBhcmUgZGVhbGluZyB3aXRoIDY0IGJpdCBh cmNoLgogCUlmIG5vdCB0aGVuIG1ha2Ugc3VyZSB0aGF0IG9mZnNldCBmaXRzIGluIDMyIGJpdHMu ICovCi0JaWYgKHNpemVvZihhaW9fb2Zmc2V0KSA9PSA4KSB7Ci0JCWFpb19vZmZzZXQgPSBvZmZz ZXRfaGlnaDsKLQkJYWlvX29mZnNldCA8PD0gMzI7Ci0JCWFpb19vZmZzZXQgKz0gb2Zmc2V0Owot CX0gZWxzZSB7Ci0JCXV0X2Eob2Zmc2V0X2hpZ2ggPT0gMCk7Ci0JCWFpb19vZmZzZXQgPSBvZmZz ZXQ7Ci0JfQorCWFpb19vZmZzZXQgPSAob2ZmX3QpIG9mZnNldDsKKworCXV0X2Eoc2l6ZW9mKGFp b19vZmZzZXQpID49IHNpemVvZihvZmZzZXQpCisJICAgICB8fCAoKG9zX29mZnNldF90KSBhaW9f b2Zmc2V0KSA9PSBvZmZzZXQpOwogCiAJaW9jYiA9ICZzbG90LT5jb250cm9sOwogCkBAIC0zNzg1 LDcgKzM2OTYsNiBAQCBmb3VuZDoKIAlzbG90LT5uX2J5dGVzID0gMDsKIAlzbG90LT5yZXQgPSAw OwogCS8qZnByaW50ZihzdGRlcnIsICJGaWxsZWQgdXAgTGludXggbmF0aXZlIGlvY2IuXG4iKTsq LwotCQogCiBza2lwX25hdGl2ZV9haW86CiAjZW5kaWYgLyogTElOVVhfTkFUSVZFX0FJTyAqLwpA QCAtNDAyMSwxMCArMzkzMSw3IEBAIG9zX2Fpb19mdW5jKAogCW9zX2ZpbGVfdAlmaWxlLAkvKiE8 IGluOiBoYW5kbGUgdG8gYSBmaWxlICovCiAJdm9pZCoJCWJ1ZiwJLyohPCBpbjogYnVmZmVyIHdo ZXJlIHRvIHJlYWQgb3IgZnJvbSB3aGljaAogCQkJCXRvIHdyaXRlICovCi0JdWxpbnQJCW9mZnNl dCwJLyohPCBpbjogbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZiBmaWxlCi0JCQkJb2Zmc2V0 IHdoZXJlIHRvIHJlYWQgb3Igd3JpdGUgKi8KLQl1bGludAkJb2Zmc2V0X2hpZ2gsIC8qITwgaW46 IG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0cyBvZgotCQkJCW9mZnNldCAqLworCW9zX29mZnNldF90 CW9mZnNldCwJLyohPCBpbjogZmlsZSBvZmZzZXQgd2hlcmUgdG8gcmVhZCBvciB3cml0ZSAqLwog CXVsaW50CQluLAkvKiE8IGluOiBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBvciB3cml0ZSAqLwog CWZpbF9ub2RlX3QqCW1lc3NhZ2UxLC8qITwgaW46IG1lc3NhZ2UgZm9yIHRoZSBhaW8gaGFuZGxl cgogCQkJCShjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBhIGNvbXBsZXRlZApAQCAtNDA4MCwxNCAr Mzk4NywxMiBAQCBvc19haW9fZnVuYygKIAkJYW5kIG9zX2ZpbGVfd3JpdGVfZnVuYygpICovCiAK IAkJaWYgKHR5cGUgPT0gT1NfRklMRV9SRUFEKSB7Ci0JCQlyZXR1cm4ob3NfZmlsZV9yZWFkX2Z1 bmMoZmlsZSwgYnVmLCBvZmZzZXQsCi0JCQkJCSAgICBvZmZzZXRfaGlnaCwgbikpOworCQkJcmV0 dXJuKG9zX2ZpbGVfcmVhZF9mdW5jKGZpbGUsIGJ1Ziwgb2Zmc2V0LCBuKSk7CiAJCX0KIAogCQl1 dF9hKHR5cGUgPT0gT1NfRklMRV9XUklURSk7CiAKLQkJcmV0dXJuKG9zX2ZpbGVfd3JpdGVfZnVu YyhuYW1lLCBmaWxlLCBidWYsIG9mZnNldCwKLQkJCQkJICBvZmZzZXRfaGlnaCwgbikpOworCQly ZXR1cm4ob3NfZmlsZV93cml0ZV9mdW5jKG5hbWUsIGZpbGUsIGJ1Ziwgb2Zmc2V0LCBuKSk7CiAJ fQogCiB0cnlfYWdhaW46CkBAIC00MTIzLDcgKzQwMjgsNyBAQCB0cnlfYWdhaW46CiAJfQogCiAJ c2xvdCA9IG9zX2Fpb19hcnJheV9yZXNlcnZlX3Nsb3QodHlwZSwgYXJyYXksIG1lc3NhZ2UxLCBt ZXNzYWdlMiwgZmlsZSwKLQkJCQkJIG5hbWUsIGJ1Ziwgb2Zmc2V0LCBvZmZzZXRfaGlnaCwgbik7 CisJCQkJCSBuYW1lLCBidWYsIG9mZnNldCwgbik7CiAJaWYgKHR5cGUgPT0gT1NfRklMRV9SRUFE KSB7CiAJCWlmIChzcnZfdXNlX25hdGl2ZV9haW8pIHsKIAkJCW9zX25fZmlsZV9yZWFkcysrOwpA QCAtNDY3Myw3ICs0NTc4LDcgQEAgb3NfYWlvX3NpbXVsYXRlZF9oYW5kbGUoCiAJdWxpbnQJCW5f Y29uc2VjdXRpdmU7CiAJdWxpbnQJCXRvdGFsX2xlbjsKIAl1bGludAkJb2ZmczsKLQl1bGludAkJ bG93ZXN0X29mZnNldDsKKwlvc19vZmZzZXRfdAlsb3dlc3Rfb2Zmc2V0OwogCXVsaW50CQliaWdn ZXN0X2FnZTsKIAl1bGludAkJYWdlOwogCWJ5dGUqCQljb21iaW5lZF9idWY7CkBAIC00NzYwLDcg KzQ2NjUsNyBAQCByZXN0YXJ0OgogCXRoZW4gcGljayB0aGUgb25lIGF0IHRoZSBsb3dlc3Qgb2Zm c2V0LiAqLwogCiAJYmlnZ2VzdF9hZ2UgPSAwOwotCWxvd2VzdF9vZmZzZXQgPSBVTElOVF9NQVg7 CisJbG93ZXN0X29mZnNldCA9IElCX1VJTlQ2NF9NQVg7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbjsg aSsrKSB7CiAJCXNsb3QgPSBvc19haW9fYXJyYXlfZ2V0X250aF9zbG90KGFycmF5LCBpICsgc2Vn bWVudCAqIG4pOwpAQCAtNDc4OSw3ICs0Njk0LDcgQEAgcmVzdGFydDoKIAkJbG93ZXN0IG9mZnNl dCBpbiB0aGUgYXJyYXkgKHdlIGlnbm9yZSB0aGUgaGlnaCAzMiBiaXRzIG9mIHRoZQogCQlvZmZz ZXQgaW4gdGhlc2UgaGV1cmlzdGljcykgKi8KIAotCQlsb3dlc3Rfb2Zmc2V0ID0gVUxJTlRfTUFY OworCQlsb3dlc3Rfb2Zmc2V0ID0gSUJfVUlOVDY0X01BWDsKIAogCQlmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKSB7CiAJCQlzbG90ID0gb3NfYWlvX2FycmF5X2dldF9udGhfc2xvdChhcnJheSwKQEAg LTQ4MjksOSArNDczNCw2IEBAIGNvbnNlY3V0aXZlX2xvb3A6CiAKIAkJaWYgKHNsb3QyLT5yZXNl cnZlZCAmJiBzbG90MiAhPSBzbG90CiAJCSAgICAmJiBzbG90Mi0+b2Zmc2V0ID09IHNsb3QtPm9m ZnNldCArIHNsb3QtPmxlbgotCQkgICAgLyogY2hlY2sgdGhhdCBzdW0gZG9lcyBub3Qgd3JhcCBv dmVyICovCi0JCSAgICAmJiBzbG90LT5vZmZzZXQgKyBzbG90LT5sZW4gPiBzbG90LT5vZmZzZXQK LQkJICAgICYmIHNsb3QyLT5vZmZzZXRfaGlnaCA9PSBzbG90LT5vZmZzZXRfaGlnaAogCQkgICAg JiYgc2xvdDItPnR5cGUgPT0gc2xvdC0+dHlwZQogCQkgICAgJiYgc2xvdDItPmZpbGUgPT0gc2xv dC0+ZmlsZSkgewogCkBAIC00ODk4LDIwICs0ODAwLDE4IEBAIGNvbnNlY3V0aXZlX2xvb3A6CiAK IAlpZiAob3NfYWlvX3ByaW50X2RlYnVnKSB7CiAJCWZwcmludGYoc3RkZXJyLAotCQkJIklubm9E QjogZG9pbmcgaS9vIG9mIHR5cGUgJWx1IGF0IG9mZnNldCAlbHUgJWx1LCIKKwkJCSJJbm5vREI6 IGRvaW5nIGkvbyBvZiB0eXBlICVsdSBhdCBvZmZzZXQgJWxsdSwiCiAJCQkiIGxlbmd0aCAlbHVc biIsCi0JCQkodWxvbmcpIHNsb3QtPnR5cGUsICh1bG9uZykgc2xvdC0+b2Zmc2V0X2hpZ2gsCi0J CQkodWxvbmcpIHNsb3QtPm9mZnNldCwgKHVsb25nKSB0b3RhbF9sZW4pOworCQkJKHVsb25nKSBz bG90LT50eXBlLCBzbG90LT5vZmZzZXQsICh1bG9uZykgdG90YWxfbGVuKTsKIAl9CiAKIAkvKiBE byB0aGUgaS9vIHdpdGggb3JkaW5hcnksIHN5bmNocm9ub3VzIGkvbyBmdW5jdGlvbnM6ICovCiAJ aWYgKHNsb3QtPnR5cGUgPT0gT1NfRklMRV9XUklURSkgewogCQlyZXQgPSBvc19maWxlX3dyaXRl KHNsb3QtPm5hbWUsIHNsb3QtPmZpbGUsIGNvbWJpbmVkX2J1ZiwKLQkJCQkgICAgc2xvdC0+b2Zm c2V0LCBzbG90LT5vZmZzZXRfaGlnaCwKLQkJCQkgICAgdG90YWxfbGVuKTsKKwkJCQkgICAgc2xv dC0+b2Zmc2V0LCB0b3RhbF9sZW4pOwogCX0gZWxzZSB7CiAJCXJldCA9IG9zX2ZpbGVfcmVhZChz bG90LT5maWxlLCBjb21iaW5lZF9idWYsCi0JCQkJICAgc2xvdC0+b2Zmc2V0LCBzbG90LT5vZmZz ZXRfaGlnaCwgdG90YWxfbGVuKTsKKwkJCQkgICBzbG90LT5vZmZzZXQsIHRvdGFsX2xlbik7CiAJ fQogCiAJdXRfYShyZXQpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBtZXJnZS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwlyZXZp ZDppbmFhbS5yYW5hQG9yYWNsZS5jb20tMjAxMTA1MTYxNjAxMzktOTU5andud3BjMXkyMjBtcgor KysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDUxNzExNDIxMC1lN2RmeDl6MzZyMnR1bXp6CkBAIC03MDEsNyArNzAx LDcgQEAgcm93X21lcmdlX3JlYWQoCiAJCQkJCWVsZW1lbnRzICovCiAJcm93X21lcmdlX2Jsb2Nr X3QqCWJ1ZikJLyohPCBvdXQ6IGRhdGEgKi8KIHsKLQlpYl91aW50NjRfdAlvZnMgPSAoKGliX3Vp bnQ2NF90KSBvZmZzZXQpICogc2l6ZW9mICpidWY7CisJb3Nfb2Zmc2V0X3QJb2ZzID0gKChvc19v ZmZzZXRfdCkgb2Zmc2V0KSAqIHNpemVvZiAqYnVmOwogCWlib29sCQlzdWNjZXNzOwogCiAjaWZk ZWYgVU5JVl9ERUJVRwpAQCAtNzEyLDkgKzcxMiw3IEBAIHJvd19tZXJnZV9yZWFkKAogI2VuZGlm IC8qIFVOSVZfREVCVUcgKi8KIAogCXN1Y2Nlc3MgPSBvc19maWxlX3JlYWRfbm9fZXJyb3JfaGFu ZGxpbmcoT1NfRklMRV9GUk9NX0ZEKGZkKSwgYnVmLAotCQkJCQkJICh1bGludCkgKG9mcyAmIDB4 RkZGRkZGRkYpLAotCQkJCQkJICh1bGludCkgKG9mcyA+PiAzMiksCi0JCQkJCQkgc2l6ZW9mICpi dWYpOworCQkJCQkJIG9mcywgc2l6ZW9mICpidWYpOwogI2lmZGVmIFBPU0lYX0ZBRFZfRE9OVE5F RUQKIAkvKiBFYWNoIGJsb2NrIGlzIHJlYWQgZXhhY3RseSBvbmNlLiAgRnJlZSB1cCB0aGUgZmls ZSBjYWNoZS4gKi8KIAlwb3NpeF9mYWR2aXNlKGZkLCBvZnMsIHNpemVvZiAqYnVmLCBQT1NJWF9G QURWX0RPTlRORUVEKTsKQEAgLTc0MiwxMyArNzQwLDEwIEBAIHJvd19tZXJnZV93cml0ZSgKIAlj b25zdCB2b2lkKglidWYpCS8qITwgaW46IGRhdGEgKi8KIHsKIAlzaXplX3QJCWJ1Zl9sZW4gPSBz aXplb2Yocm93X21lcmdlX2Jsb2NrX3QpOwotCWliX3VpbnQ2NF90CW9mcyA9IGJ1Zl9sZW4gKiAo aWJfdWludDY0X3QpIG9mZnNldDsKKwlvc19vZmZzZXRfdAlvZnMgPSBidWZfbGVuICogKG9zX29m ZnNldF90KSBvZmZzZXQ7CiAJaWJvb2wJCXJldDsKIAotCXJldCA9IG9zX2ZpbGVfd3JpdGUoIiht ZXJnZSkiLCBPU19GSUxFX0ZST01fRkQoZmQpLCBidWYsCi0JCQkgICAgKHVsaW50KSAob2ZzICYg MHhGRkZGRkZGRiksCi0JCQkgICAgKHVsaW50KSAob2ZzID4+IDMyKSwKLQkJCSAgICBidWZfbGVu KTsKKwlyZXQgPSBvc19maWxlX3dyaXRlKCIobWVyZ2UpIiwgT1NfRklMRV9GUk9NX0ZEKGZkKSwg YnVmLCBvZnMsIGJ1Zl9sZW4pOwogCiAjaWZkZWYgVU5JVl9ERUJVRwogCWlmIChyb3dfbWVyZ2Vf cHJpbnRfYmxvY2tfd3JpdGUpIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3Nydi9zcnYwc3RhcnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJ cmV2aWQ6aW5hYW0ucmFuYUBvcmFjbGUuY29tLTIwMTEwNTE2MTYwMTM5LTk1OWp3bndwYzF5MjIw bXIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTA1MTcxMTQyMTAtZTdkZng5ejM2cjJ0dW16egpAQCAtNTIwLDMy ICs1MjAsNiBAQCBzcnZfbm9ybWFsaXplX3BhdGhfZm9yX3dpbigKIAogI2lmbmRlZiBVTklWX0hP VEJBQ0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLUNhbGN1bGF0ZXMgdGhlIGxvdyAzMiBiaXRzIHdo ZW4gYSBmaWxlIHNpemUgd2hpY2ggaXMgZ2l2ZW4gYXMgYSBudW1iZXIKLWRhdGFiYXNlIHBhZ2Vz IGlzIGNvbnZlcnRlZCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzLgotQHJldHVybglsb3cgMzIgYnl0 ZXMgb2YgZmlsZSBzaXplIHdoZW4gZXhwcmVzc2VkIGluIGJ5dGVzICovCi1zdGF0aWMKLXVsaW50 Ci1zcnZfY2FsY19sb3czMigKLS8qPT09PT09PT09PT0qLwotCWliX3VpbnQ2NF90CWZpbGVfc2l6 ZSkJLyohPCBpbjogZmlsZSBzaXplIGluIGRhdGFiYXNlIHBhZ2VzICovCi17Ci0JcmV0dXJuKCh1 bGludCkgKDB4RkZGRkZGRkZVTCAmIChmaWxlX3NpemUgPDwgVU5JVl9QQUdFX1NJWkVfU0hJRlQp KSk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DYWxjdWxhdGVzIHRoZSBoaWdoIDMyIGJpdHMg d2hlbiBhIGZpbGUgc2l6ZSB3aGljaCBpcyBnaXZlbiBhcyBhIG51bWJlcgotb2YgZGF0YWJhc2Ug cGFnZXMgaXMgY29udmVydGVkIHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMuCi1AcmV0dXJuCWhpZ2gg MzIgYnl0ZXMgb2YgZmlsZSBzaXplIHdoZW4gZXhwcmVzc2VkIGluIGJ5dGVzICovCi1zdGF0aWMK LXVsaW50Ci1zcnZfY2FsY19oaWdoMzIoCi0vKj09PT09PT09PT09PSovCi0JaWJfdWludDY0X3QJ ZmlsZV9zaXplKQkvKiE8IGluOiBmaWxlIHNpemUgaW4gZGF0YWJhc2UgcGFnZXMgKi8KLXsKLQly ZXR1cm4oKHVsaW50KSAoZmlsZV9zaXplID4+ICgzMiAtIFVOSVZfUEFHRV9TSVpFX1NISUZUKSkp OwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgogQ3JlYXRlcyBvciBvcGVucyB0aGUgbG9nIGZpbGVz IGFuZCBjbG9zZXMgdGhlbS4KIEByZXR1cm4JREJfU1VDQ0VTUyBvciBlcnJvciBjb2RlICovCiBz dGF0aWMKQEAgLTU2MiwxMSArNTM2LDEwIEBAIG9wZW5fb3JfY3JlYXRlX2xvZ19maWxlKAogCXVs aW50CWssCQkJLyohPCBpbjogbG9nIGdyb3VwIG51bWJlciAqLwogCXVsaW50CWkpCQkJLyohPCBp bjogbG9nIGZpbGUgbnVtYmVyIGluIGdyb3VwICovCiB7Ci0JaWJvb2wJcmV0OwotCXVsaW50CXNp emU7Ci0JdWxpbnQJc2l6ZV9oaWdoOwotCWNoYXIJbmFtZVsxMDAwMF07Ci0JdWxpbnQJZGlybmFt ZWxlbjsKKwlpYm9vbAkJcmV0OworCW9zX29mZnNldF90CXNpemU7CisJY2hhcgkJbmFtZVsxMDAw MF07CisJdWxpbnQJCWRpcm5hbWVsZW47CiAKIAlVVF9OT1RfVVNFRChjcmVhdGVfbmV3X2RiKTsK IApAQCAtNjE0LDIwICs1ODcsMjAgQEAgb3Blbl9vcl9jcmVhdGVfbG9nX2ZpbGUoCiAJCQlyZXR1 cm4oREJfRVJST1IpOwogCQl9CiAKLQkJcmV0ID0gb3NfZmlsZV9nZXRfc2l6ZShmaWxlc1tpXSwg JnNpemUsICZzaXplX2hpZ2gpOwotCQl1dF9hKHJldCk7CisJCXNpemUgPSBvc19maWxlX2dldF9z aXplKGZpbGVzW2ldKTsKKwkJdXRfYShzaXplICE9IChvc19vZmZzZXRfdCkgLTEpOwogCi0JCWlm IChzaXplICE9IHNydl9jYWxjX2xvdzMyKHNydl9sb2dfZmlsZV9zaXplKQotCQkgICAgfHwgc2l6 ZV9oaWdoICE9IHNydl9jYWxjX2hpZ2gzMihzcnZfbG9nX2ZpbGVfc2l6ZSkpIHsKKwkJaWYgKFVO SVZfVU5MSUtFTFkoc2l6ZSAhPSAob3Nfb2Zmc2V0X3QpIHNydl9sb2dfZmlsZV9zaXplCisJCQkJ ICA8PCBVTklWX1BBR0VfU0laRV9TSElGVCkpIHsKIAogCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJ Iklubm9EQjogRXJyb3I6IGxvZyBmaWxlICVzIGlzIgotCQkJCSIgb2YgZGlmZmVyZW50IHNpemUg JWx1ICVsdSBieXRlc1xuIgorCQkJCSIgb2YgZGlmZmVyZW50IHNpemUgJWxsdSBieXRlc1xuIgog CQkJCSJJbm5vREI6IHRoYW4gc3BlY2lmaWVkIGluIHRoZSAuY25mIgotCQkJCSIgZmlsZSAlbHUg JWx1IGJ5dGVzIVxuIiwKLQkJCQluYW1lLCAodWxvbmcpIHNpemVfaGlnaCwgKHVsb25nKSBzaXpl LAotCQkJCSh1bG9uZykgc3J2X2NhbGNfaGlnaDMyKHNydl9sb2dfZmlsZV9zaXplKSwKLQkJCQko dWxvbmcpIHNydl9jYWxjX2xvdzMyKHNydl9sb2dfZmlsZV9zaXplKSk7CisJCQkJIiBmaWxlICVs bHUgYnl0ZXMhXG4iLAorCQkJCW5hbWUsIHNpemUsCisJCQkJKG9zX29mZnNldF90KSBzcnZfbG9n X2ZpbGVfc2l6ZQorCQkJCTw8IFVOSVZfUEFHRV9TSVpFX1NISUZUKTsKIAogCQkJcmV0dXJuKERC X0VSUk9SKTsKIAkJfQpAQCAtNjU0LDggKzYyNyw4IEBAIG9wZW5fb3JfY3JlYXRlX2xvZ19maWxl KAogCQkJIiBmdWxsOiB3YWl0Li4uXG4iKTsKIAogCQlyZXQgPSBvc19maWxlX3NldF9zaXplKG5h bWUsIGZpbGVzW2ldLAotCQkJCSAgICAgICBzcnZfY2FsY19sb3czMihzcnZfbG9nX2ZpbGVfc2l6 ZSksCi0JCQkJICAgICAgIHNydl9jYWxjX2hpZ2gzMihzcnZfbG9nX2ZpbGVfc2l6ZSkpOworCQkJ CSAgICAgICAob3Nfb2Zmc2V0X3QpIHNydl9sb2dfZmlsZV9zaXplCisJCQkJICAgICAgIDw8IFVO SVZfUEFHRV9TSVpFX1NISUZUKTsKIAkJaWYgKCFyZXQpIHsKIAkJCWZwcmludGYoc3RkZXJyLAog CQkJCSJJbm5vREI6IEVycm9yIGluIGNyZWF0aW5nICVzOiIKQEAgLTczMSwxNCArNzA0LDEzIEBA IG9wZW5fb3JfY3JlYXRlX2RhdGFfZmlsZXMoCiAJdWxpbnQqCQlzdW1fb2ZfbmV3X3NpemVzKS8q ITwgb3V0OiBzdW0gb2Ygc2l6ZXMgb2YgdGhlCiAJCQkJCW5ldyBmaWxlcyBhZGRlZCAqLwogewot CWlib29sCXJldDsKLQl1bGludAlpOwotCWlib29sCW9uZV9vcGVuZWQJPSBGQUxTRTsKLQlpYm9v bAlvbmVfY3JlYXRlZAk9IEZBTFNFOwotCXVsaW50CXNpemU7Ci0JdWxpbnQJc2l6ZV9oaWdoOwot CXVsaW50CXJvdW5kZWRfc2l6ZV9wYWdlczsKLQljaGFyCW5hbWVbMTAwMDBdOworCWlib29sCQly ZXQ7CisJdWxpbnQJCWk7CisJaWJvb2wJCW9uZV9vcGVuZWQJPSBGQUxTRTsKKwlpYm9vbAkJb25l X2NyZWF0ZWQJPSBGQUxTRTsKKwlvc19vZmZzZXRfdAlzaXplOworCXVsaW50CQlyb3VuZGVkX3Np emVfcGFnZXM7CisJY2hhcgkJbmFtZVsxMDAwMF07CiAKIAlpZiAoc3J2X25fZGF0YV9maWxlcyA+ PSAxMDAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiSW5ub0RCOiBjYW4gb25seSBoYXZlIDwgMTAw MCBkYXRhIGZpbGVzXG4iCkBAIC04NjQsMTMgKzgzNiwxMSBAQCBvcGVuX29yX2NyZWF0ZV9kYXRh X2ZpbGVzKAogCQkJCWdvdG8gc2tpcF9zaXplX2NoZWNrOwogCQkJfQogCi0JCQlyZXQgPSBvc19m aWxlX2dldF9zaXplKGZpbGVzW2ldLCAmc2l6ZSwgJnNpemVfaGlnaCk7Ci0JCQl1dF9hKHJldCk7 CisJCQlzaXplID0gb3NfZmlsZV9nZXRfc2l6ZShmaWxlc1tpXSk7CisJCQl1dF9hKHNpemUgIT0g KG9zX29mZnNldF90KSAtMSk7CiAJCQkvKiBSb3VuZCBzaXplIGRvd253YXJkIHRvIG1lZ2FieXRl cyAqLwogCi0JCQlyb3VuZGVkX3NpemVfcGFnZXMKLQkJCQk9IChzaXplIC8gKDEwMjQgKiAxMDI0 KSArIDQwOTYgKiBzaXplX2hpZ2gpCi0JCQkJCTw8ICgyMCAtIFVOSVZfUEFHRV9TSVpFX1NISUZU KTsKKwkJCXJvdW5kZWRfc2l6ZV9wYWdlcyA9IHNpemUgPj4gVU5JVl9QQUdFX1NJWkVfU0hJRlQ7 CiAKIAkJCWlmIChpID09IHNydl9uX2RhdGFfZmlsZXMgLSAxCiAJCQkgICAgJiYgc3J2X2F1dG9f ZXh0ZW5kX2xhc3RfZGF0YV9maWxlKSB7CkBAIC05NTksOCArOTI5LDggQEAgc2tpcF9zaXplX2No ZWNrOgogCiAJCQlyZXQgPSBvc19maWxlX3NldF9zaXplKAogCQkJCW5hbWUsIGZpbGVzW2ldLAot CQkJCXNydl9jYWxjX2xvdzMyKHNydl9kYXRhX2ZpbGVfc2l6ZXNbaV0pLAotCQkJCXNydl9jYWxj X2hpZ2gzMihzcnZfZGF0YV9maWxlX3NpemVzW2ldKSk7CisJCQkJKG9zX29mZnNldF90KSBzcnZf ZGF0YV9maWxlX3NpemVzW2ldCisJCQkJPDwgVU5JVl9QQUdFX1NJWkVfU0hJRlQpOwogCiAJCQlp ZiAoIXJldCkgewogCQkJCWZwcmludGYoc3RkZXJyLApAQCAtOTcwLDggKzk0MCw3IEBAIHNraXBf c2l6ZV9jaGVjazoKIAkJCQlyZXR1cm4oREJfRVJST1IpOwogCQkJfQogCi0JCQkqc3VtX29mX25l d19zaXplcyA9ICpzdW1fb2ZfbmV3X3NpemVzCi0JCQkJKyBzcnZfZGF0YV9maWxlX3NpemVzW2ld OworCQkJKnN1bV9vZl9uZXdfc2l6ZXMgKz0gc3J2X2RhdGFfZmlsZV9zaXplc1tpXTsKIAkJfQog CiAJCXJldCA9IG9zX2ZpbGVfY2xvc2UoZmlsZXNbaV0pOwpAQCAtMTQ2NCw3ICsxNDMzLDcgQEAg aW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9teXNxbCh2b2lkKQogCWlmIChzdW1fb2ZfbmV3 X3NpemVzIDwgMTA0ODU3NjAgLyBVTklWX1BBR0VfU0laRSkgewogCQl1dF9wcmludF90aW1lc3Rh bXAoc3RkZXJyKTsKIAkJZnByaW50ZihzdGRlcnIsCi0JCQkiIElubm9EQjogRXJyb3I6IHRhYmxl c3BhY2Ugc2l6ZSBtdXN0IGJlIgorCQkJIiBJbm5vREI6IEVycm9yOiB0YWJsZXNhcGNlIHNpemUg bXVzdCBiZSIKIAkJCSIgYXQgbGVhc3QgMTAgTUJcbiIpOwogCiAJCXJldHVybihEQl9FUlJPUik7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS91dC91dDB1dC5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL3V0L3V0MHV0LmMJcmV2aWQ6aW5hYW0ucmFuYUBvcmFjbGUuY29tLTIw MTEwNTE2MTYwMTM5LTk1OWp3bndwYzF5MjIwbXIKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS91dC91 dDB1dC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNTE3MTE0MjEwLWU3ZGZ4 OXozNnIydHVtenoKQEAgLTkzLDI2ICs5Myw2IEBAIHJlaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24u ICovCiAjZGVmaW5lCXV0X2dldHRpbWVvZmRheQkJZ2V0dGltZW9mZGF5CiAjZW5kaWYKIAotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgotR2V0cyB0aGUgaGlnaCAzMiBiaXRzIGluIGEgdWxpbnQuIFRoYXQgaXMgbWFrZXMgYSBzaGlm dCA+PiAzMiwKLWJ1dCBzaW5jZSB0aGVyZSBzZWVtIHRvIGJlIGNvbXBpbGVyIGJ1Z3MgaW4gYm90 aCBnY2MgYW5kIFZpc3VhbCBDKyssCi13ZSBkbyB0aGlzIGJ5IGEgc3BlY2lhbCBjb252ZXJzaW9u LgotQHJldHVybglhID4+IDMyICovCi1VTklWX0lOVEVSTgotdWxpbnQKLXV0X2dldF9oaWdoMzIo Ci0vKj09PT09PT09PT0qLwotCXVsaW50CWEpCS8qITwgaW46IHVsaW50ICovCi17Ci0JaWJfaW50 NjRfdAlpOwotCi0JaSA9IChpYl9pbnQ2NF90KWE7Ci0KLQlpID0gaSA+PiAzMjsKLQotCXJldHVy bigodWxpbnQpaSk7Ci19Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyBzeXN0ZW0gdGltZS4gV2UgZG8gbm90 IHNwZWNpZnkgdGhlIGZvcm1hdCBvZiB0aGUgdGltZSByZXR1cm5lZDoKIHRoZSBvbmx5IHdheSB0 byBtYW5pcHVsYXRlIGl0IGlzIHRvIHVzZSB0aGUgZnVuY3Rpb24gdXRfZGlmZnRpbWUuCgo= --===============0525058418== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.6-innodb/ # testament_sha1: 27cf7591a015419b6cc8f144c751998756755c5a # timestamp: 2011-05-17 14:47:37 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: inaam.rana@stripped\ # 959jwnwpc1y220mr # # Begin bundle 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 --===============0525058418==--