From: marko.makela Date: February 2 2011 1:59pm Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3302) List-Archive: http://lists.mysql.com/commits/130228 Message-Id: <201102021359.p12DxhUY032239@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2110862105==" --===============2110862105== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjAxMTYyODQxLWphM2lu NGhmN29ha2M5amwKCiAzMzAyIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDItMDIgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEtaW5ub2RiIHRvIG15c3FsLTUuNS1pbm5vZGIuCgogICAgbW9kaWZp ZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2J1Zi9idWYwYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9mc3AvZnNwMGZzcC5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQogICAgICBzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MHB1cmdlLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2QuYwogICAgICBzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvYnRyL2J0cjBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40aGY3b2Fr YzlqbAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAtMTk3LDcg KzE5Nyw3IEBAIHN0YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVybmFsbHlfc3RvcmVkX2xl bigKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlyZWNfdCoJCXJlYywJLyoh PCBpbjogcmVjb3JkICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCiAJ Y29uc3QgdWxpbnQqCW9mZnNldHMpOy8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5IHJlY19nZXRf b2Zmc2V0cygpICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKQEAgLTM3NjIsMzQg KzM3NjIsNjIgQEAgYnRyX2VzdGltYXRlX251bWJlcl9vZl9kaWZmZXJlbnRfa2V5X3ZhbAogLyo9 PT09PT09PT09PT09PT09PT0gRVhURVJOQUwgU1RPUkFHRSBPRiBCSUcgRklFTERTID09PT09PT09 PT09PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBvZmZzZXQgb2YgdGhlIHBvaW50ZXIg dG8gdGhlIGV4dGVybmFsbHkgc3RvcmVkIHBhcnQgb2YgYSBmaWVsZC4KK0ByZXR1cm4Jb2Zmc2V0 IG9mIHRoZSBwb2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBwYXJ0ICovCitzdGF0aWMK K3VsaW50CitidHJfcmVjX2dldF9maWVsZF9yZWZfb2ZmcygKKy8qPT09PT09PT09PT09PT09PT09 PT09PT0qLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFycmF5IHJldHVybmVkIGJ5 IHJlY19nZXRfb2Zmc2V0cygpICovCisJdWxpbnQJCW4pCS8qITwgaW46IGluZGV4IG9mIHRoZSBl eHRlcm5hbCBmaWVsZCAqLworeworCXVsaW50CWZpZWxkX3JlZl9vZmZzOworCXVsaW50CWxvY2Fs X2xlbjsKKworCXV0X2EocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBuKSk7CisJZmllbGRf cmVmX29mZnMgPSByZWNfZ2V0X250aF9maWVsZF9vZmZzKG9mZnNldHMsIG4sICZsb2NhbF9sZW4p OworCXV0X2EobG9jYWxfbGVuICE9IFVOSVZfU1FMX05VTEwpOworCXV0X2EobG9jYWxfbGVuID49 IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCisJcmV0dXJuKGZpZWxkX3JlZl9vZmZzICsg bG9jYWxfbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7Cit9CisKKy8qKiBHZXRzIGEg cG9pbnRlciB0byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCBvZiBhIGZpZWxkLgorQHBhcmFt IHJlYwlyZWNvcmQKK0BwYXJhbSBvZmZzZXRzCXJlY19nZXRfb2Zmc2V0cyhyZWMpCitAcGFyYW0g bglpbmRleCBvZiB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQKK0ByZXR1cm4gcG9pbnRlciB0 byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCAqLworI2RlZmluZSBidHJfcmVjX2dldF9maWVs ZF9yZWYocmVjLCBvZmZzZXRzLCBuKQkJCVwKKwkoKHJlYykgKyBidHJfcmVjX2dldF9maWVsZF9y ZWZfb2ZmcyhvZmZzZXRzLCBuKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgZXh0ZXJuYWxseSBzdG9y ZWQgc2l6ZSBvZiBhIHJlY29yZCwgaW4gdW5pdHMgb2YgYSBkYXRhYmFzZSBwYWdlLgogQHJldHVy bglleHRlcm5hbGx5IHN0b3JlZCBwYXJ0LCBpbiB1bml0cyBvZiBhIGRhdGFiYXNlIHBhZ2UgKi8K IHN0YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVybmFsbHlfc3RvcmVkX2xlbigKIC8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlyZWNfdCoJCXJlYywJLyohPCBpbjogcmVj b3JkICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCiAJY29uc3QgdWxp bnQqCW9mZnNldHMpLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkg Ki8KIHsKIAl1bGludAluX2ZpZWxkczsKLQlieXRlKglkYXRhOwotCXVsaW50CWxvY2FsX2xlbjsK LQl1bGludAlleHRlcm5fbGVuOwogCXVsaW50CXRvdGFsX2V4dGVybl9sZW4gPSAwOwogCXVsaW50 CWk7CiAKIAl1dF9hZCghcmVjX29mZnNfY29tcChvZmZzZXRzKSB8fCAhcmVjX2dldF9ub2RlX3B0 cl9mbGFnKHJlYykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSB7CisJ CXJldHVybigwKTsKKwl9CisKIAluX2ZpZWxkcyA9IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMp OwogCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKIAkJaWYgKHJlY19vZmZzX250 aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKIAotCQkJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkKHJl Yywgb2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KLQkJCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJO X0ZJRUxEX1JFRl9TSVpFOwotCi0JCQlleHRlcm5fbGVuID0gbWFjaF9yZWFkX2Zyb21fNChkYXRh ICsgbG9jYWxfbGVuCi0JCQkJCQkgICAgICArIEJUUl9FWFRFUk5fTEVOICsgNCk7CisJCQl1bGlu dAlleHRlcm5fbGVuID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlidHJfcmVjX2dldF9maWVsZF9y ZWYocmVjLCBvZmZzZXRzLCBpKQorCQkJCSsgQlRSX0VYVEVSTl9MRU4gKyA0KTsKIAogCQkJdG90 YWxfZXh0ZXJuX2xlbiArPSB1dF9jYWxjX2FsaWduKGV4dGVybl9sZW4sCiAJCQkJCQkJICBVTklW X1BBR0VfU0laRSk7CkBAIC0zODE5LDcgKzM4NDcsNyBAQCBidHJfY3VyX3NldF9vd25lcnNoaXBf b2ZfZXh0ZXJuX2ZpZWxkKAogCXVsaW50CWJ5dGVfdmFsOwogCiAJZGF0YSA9IHJlY19nZXRfbnRo X2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KKwl1dF9hZChyZWNfb2Zmc19u dGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKIAl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFKTsKIAogCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpF OwpAQCAtMzgyOSw2ICszODU3LDkgQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9m aWVsZCgKIAlpZiAodmFsKSB7CiAJCWJ5dGVfdmFsID0gYnl0ZV92YWwgJiAofkJUUl9FWFRFUk5f T1dORVJfRkxBRyk7CiAJfSBlbHNlIHsKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5l ZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkJdXRfYSghKGJ5dGVfdmFsICYgQlRSX0VYVEVSTl9P V05FUl9GTEFHKSk7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVC VUcgKi8KIAkJYnl0ZV92YWwgPSBieXRlX3ZhbCB8IEJUUl9FWFRFUk5fT1dORVJfRkxBRzsKIAl9 CiAKQEAgLTQwNjcsOCArNDA5OCw4IEBAIGZpbGUgc2VnbWVudCBvZiB0aGUgaW5kZXggdHJlZS4K IEByZXR1cm4JREJfU1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9TUEFDRSAqLwogVU5JVl9JTlRF Uk4KIHVsaW50Ci1idHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAotLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KK2J0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVu YygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3Qq CWluZGV4LAkJLyohPCBpbjogaW5kZXggb2YgcmVjOyB0aGUgaW5kZXggdHJlZQogCQkJCQlNVVNU IGJlIFgtbGF0Y2hlZCAqLwogCWJ1Zl9ibG9ja190KglyZWNfYmxvY2ssCS8qITwgaW4vb3V0OiBi bG9jayBjb250YWluaW5nIHJlYyAqLwpAQCAtNDA3NywxMSArNDEwOCwxNyBAQCBidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJCQl0aGUgImV4dGVybmFsIHN0b3JhZ2UiIGZsYWdz IGluIG9mZnNldHMKIAkJCQkJd2lsbCBub3QgY29ycmVzcG9uZCB0byByZWMgd2hlbgogCQkJCQl0 aGlzIGZ1bmN0aW9uIHJldHVybnMgKi8KLQliaWdfcmVjX3QqCWJpZ19yZWNfdmVjLAkvKiE8IGlu OiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMKKyNpZmRlZiBVTklWX0RFQlVHCisJbXRyX3QqCQls b2NhbF9tdHIsCS8qITwgaW46IG10ciBjb250YWluaW5nIHRoZQorCQkJCQlsYXRjaCB0byByZWMg YW5kIHRvIHRoZSB0cmVlICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworI2lmIGRlZmluZWQg VU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCWlib29sCQl1cGRh dGVfaW5fcGxhY2UsLyohIGluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMgdXBkYXRlZAorCQkJCQlp biBwbGFjZSAobm90IGRlbGV0ZStpbnNlcnQpICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBV TklWX0JMT0JfTElHSFRfREVCVUcgKi8KKwljb25zdCBiaWdfcmVjX3QqYmlnX3JlY192ZWMpCS8q ITwgaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcwogCQkJCQl0byBiZSBzdG9yZWQgZXh0ZXJu YWxseSAqLwotCW10cl90KgkJbG9jYWxfbXRyIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKSAvKiE8 IGluOiBtdHIKLQkJCQkJY29udGFpbmluZyB0aGUgbGF0Y2ggdG8gcmVjIGFuZCB0byB0aGUKLQkJ CQkJdHJlZSAqLworCiB7CiAJdWxpbnQJcmVjX3BhZ2Vfbm87CiAJYnl0ZSoJZmllbGRfcmVmOwpA QCAtNDA5OSw2ICs0MTM2LDcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAl6 X3N0cmVhbSBjX3N0cmVhbTsKIAogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgs IG9mZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKIAl1dF9h ZChtdHJfbWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgp LAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2Fs X210ciwgcmVjX2Jsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7CkBAIC00MTMwLDIxICs0MTY4 LDM3IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCXV0X2EoZXJyID09IFpf T0spOwogCX0KIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9M SUdIVF9ERUJVRworCS8qIEFsbCBwb2ludGVycyB0byBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5z IGluIHRoZSByZWNvcmQKKwltdXN0IGVpdGhlciBiZSB6ZXJvIG9yIHRoZXkgbXVzdCBiZSBwb2lu dGVycyB0byBpbmhlcml0ZWQKKwljb2x1bW5zLCBvd25lZCBieSB0aGlzIHJlY29yZCBvciBhbiBl YXJsaWVyIHJlY29yZCB2ZXJzaW9uLiAqLworCWZvciAoaSA9IDA7IGkgPCByZWNfb2Zmc19uX2Zp ZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmICghcmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRz LCBpKSkgeworCQkJY29udGludWU7CisJCX0KKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmll bGRfcmVmKHJlYywgb2Zmc2V0cywgaSk7CisKKwkJdXRfYSghKGZpZWxkX3JlZltCVFJfRVhURVJO X0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJLyogRWl0aGVyIHRoaXMgbXVzdCBi ZSBhbiB1cGRhdGUgaW4gcGxhY2UsCisJCW9yIHRoZSBCTE9CIG11c3QgYmUgaW5oZXJpdGVkLCBv ciB0aGUgQkxPQiBwb2ludGVyCisJCW11c3QgYmUgemVybyAod2lsbCBiZSB3cml0dGVuIGluIHRo aXMgZnVuY3Rpb24pLiAqLworCQl1dF9hKHVwZGF0ZV9pbl9wbGFjZQorCQkgICAgIHx8IChmaWVs ZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9JTkhFUklURURfRkxBRykKKwkJICAg ICB8fCAhbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJQlRSX0VYVEVSTl9G SUVMRF9SRUZfU0laRSkpOworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9M SUdIVF9ERUJVRyAqLwogCS8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgZmlsZSBzZWdtZW50IHRvIHRo ZSB0YWJsZXNwYWNlCiAJZm9yIGVhY2ggZmllbGQgYW5kIHB1dCB0aGUgcG9pbnRlciB0byB0aGUg ZmllbGQgaW4gcmVjICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgYmlnX3JlY192ZWMtPm5fZmllbGRz OyBpKyspIHsKLQkJdXRfYWQocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLAotCQkJCQkgIGJp Z19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8pKTsKLQkJewotCQkJdWxpbnQJbG9jYWxfbGVu OwotCQkJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCi0JCQkJcmVjLCBvZmZzZXRzLCBi aWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vLAotCQkJCSZsb2NhbF9sZW4pOwotCQkJdXRf YShsb2NhbF9sZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7Ci0JCQlsb2NhbF9sZW4g LT0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKLQkJCWZpZWxkX3JlZiArPSBsb2NhbF9sZW47 Ci0JCX0KKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmllbGRfcmVmKAorCQkJcmVjLCBvZmZz ZXRzLCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vKTsKKyNpZiBkZWZpbmVkIFVOSVZf REVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkJLyogQSB6ZXJvIEJMT0Ig cG9pbnRlciBzaG91bGQgaGF2ZSBiZWVuIGluaXRpYWxseSBpbnNlcnRlZC4gKi8KKwkJdXRfYSgh bWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkgICAgIEJUUl9FWFRFUk5fRklF TERfUkVGX1NJWkUpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9E RUJVRyAqLwogCQlleHRlcm5fbGVuID0gYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5sZW47CiAJCVVO SVZfTUVNX0FTU0VSVF9SVyhiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmRhdGEsCiAJCQkJICAgZXh0 ZXJuX2xlbik7CkBAIC00NDI2LDYgKzQ0ODAsMjMgQEAgbmV4dF96aXBfcGFnZToKIAkJbWVtX2hl YXBfZnJlZShoZWFwKTsKIAl9CiAKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBV TklWX0JMT0JfTElHSFRfREVCVUcKKwkvKiBBbGwgcG9pbnRlcnMgdG8gZXh0ZXJuYWxseSBzdG9y ZWQgY29sdW1ucyBpbiB0aGUgcmVjb3JkCisJbXVzdCBiZSB2YWxpZC4gKi8KKwlmb3IgKGkgPSAw OyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAoIXJlY19vZmZz X250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZmllbGRf cmVmID0gYnRyX3JlY19nZXRfZmllbGRfcmVmKHJlYywgb2Zmc2V0cywgaSk7CisKKwkJLyogVGhl IHBvaW50ZXIgbXVzdCBub3QgYmUgemVyby4gKi8KKwkJdXRfYSgwICE9IG1lbWNtcChmaWVsZF9y ZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJ CS8qIFRoZSBjb2x1bW4gbXVzdCBub3QgYmUgZGlzb3duZWQgYnkgdGhpcyByZWNvcmQuICovCisJ CXV0X2EoIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9PV05FUl9GTEFH KSk7CisJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICov CiAJcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCkBAIC00NDQ4LDYgKzQ1MTksNyBAQCBidHJfY2hl Y2tfYmxvYl9maWxfcGFnZV90eXBlKAogCWlmIChVTklWX1VOTElLRUxZKHR5cGUgIT0gRklMX1BB R0VfVFlQRV9CTE9CKSkgewogCQl1bGludAlmbGFncyA9IGZpbF9zcGFjZV9nZXRfZmxhZ3Moc3Bh Y2VfaWQpOwogCisjaWZuZGVmIFVOSVZfREVCVUcgLyogSW1wcm92ZSBkZWJ1ZyB0ZXN0IGNvdmVy YWdlICovCiAJCWlmIChVTklWX0xJS0VMWQogCQkgICAgKChmbGFncyAmIERJQ1RfVEZfRk9STUFU X01BU0spID09IERJQ1RfVEZfRk9STUFUXzUxKSkgewogCQkJLyogT2xkIHZlcnNpb25zIG9mIElu bm9EQiBkaWQgbm90IGluaXRpYWxpemUKQEAgLTQ0NTYsNiArNDUyOCw3IEBAIGJ0cl9jaGVja19i bG9iX2ZpbF9wYWdlX3R5cGUoCiAJCQlhIEJMT0IgcGFnZSB0aGF0IGlzIGluIEFudGVsb3BlIGZv cm1hdC4qLwogCQkJcmV0dXJuOwogCQl9CisjZW5kaWYgLyogIVVOSVZfREVCVUcgKi8KIAogCQl1 dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKIAkJZnByaW50ZihzdGRlcnIsCkBAIC00NTA1LDIz ICs0NTc4LDEzIEBAIGJ0cl9mcmVlX2V4dGVybmFsbHlfc3RvcmVkX2ZpZWxkKAogCXVsaW50CQlw YWdlX25vOwogCXVsaW50CQluZXh0X3BhZ2Vfbm87CiAJbXRyX3QJCW10cjsKLSNpZmRlZiBVTklW X0RFQlVHCisKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhf Z2V0X2xvY2soaW5kZXgpLAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1v X2NvbnRhaW5zX3BhZ2UobG9jYWxfbXRyLCBmaWVsZF9yZWYsCiAJCQkJICAgICBNVFJfTUVNT19Q QUdFX1hfRklYKSk7CiAJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4 LCBvZmZzZXRzKSk7Ci0KLQlpZiAocmVjKSB7Ci0JCXVsaW50CWxvY2FsX2xlbjsKLQkJY29uc3Qg Ynl0ZSoJZiA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywKLQkJCQkJCSAgICAgIGks ICZsb2NhbF9sZW4pOwotCQl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9T SVpFKTsKLQkJbG9jYWxfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7Ci0JCWYgKz0g bG9jYWxfbGVuOwotCQl1dF9hZChmID09IGZpZWxkX3JlZik7Ci0JfQotI2VuZGlmIC8qIFVOSVZf REVCVUcgKi8KKwl1dF9hZCghcmVjIHx8IGZpZWxkX3JlZiA9PSBidHJfcmVjX2dldF9maWVsZF9y ZWYocmVjLCBvZmZzZXRzLCBpKSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWSghbWVtY21wKGZpZWxk X3JlZiwgZmllbGRfcmVmX3plcm8sCiAJCQkJICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSkp IHsKQEAgLTQ2ODQsMTMgKzQ3NDcsOCBAQCBidHJfcmVjX2ZyZWVfZXh0ZXJuYWxseV9zdG9yZWRf ZmllbGRzKAogCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKIAkJaWYgKHJlY19v ZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKLQkJCXVsaW50CWxlbjsKLQkJCWJ5dGUqCWRh dGEKLQkJCQk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7Ci0JCQl1 dF9hKGxlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKLQogCQkJYnRyX2ZyZWVfZXh0 ZXJuYWxseV9zdG9yZWRfZmllbGQoCi0JCQkJaW5kZXgsIGRhdGEgKyBsZW4gLSBCVFJfRVhURVJO X0ZJRUxEX1JFRl9TSVpFLAorCQkJCWluZGV4LCBidHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBv ZmZzZXRzLCBpKSwKIAkJCQlyZWMsIG9mZnNldHMsIHBhZ2VfemlwLCBpLCByYl9jdHgsIG10cik7 CiAJCX0KIAl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1 Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDExMDIwMTE2Mjg0MS1qYTNpbjRoZjdvYWtjOWpsCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDIwMjEzNTgwMS16M2Mzd2NzenJoNWw1NjZoCkBAIC04NjUsOSArODY1LDkgQEAgYnVmX2Js b2NrX2luaXQoCiAKIAlibG9jay0+bW9kaWZ5X2Nsb2NrID0gMDsKIAotI2lmZGVmIFVOSVZfREVC VUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8 IGRlZmluZWQgVU5JVl9ERUJVRwogCWJsb2NrLT5wYWdlLmZpbGVfcGFnZV93YXNfZnJlZWQgPSBG QUxTRTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRpZiAvKiBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCiAJYmxvY2stPmNoZWNr X2luZGV4X3BhZ2VfYXRfZmx1c2ggPSBGQUxTRTsKIAlibG9jay0+aW5kZXggPSBOVUxMOwpAQCAt MjIyOSw3ICsyMjI5LDcgQEAgYnVmX3BhZ2VfcGVla19pZl9zZWFyY2hfaGFzaGVkKAogCXJldHVy bihpc19oYXNoZWQpOwogfQogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYg ZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCiBTZXRzIGZpbGVfcGFnZV93YXNfZnJlZWQgVFJVRSBpZiB0aGUgcGFn ZSBpcyBmb3VuZCBpbiB0aGUgYnVmZmVyIHBvb2wuCiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBj YWxsZWQgd2hlbiB3ZSBmcmVlIGEgZmlsZSBwYWdlIGFuZCB3YW50IHRoZQpAQCAtMjI1Miw2ICsy MjUyLDggQEAgYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoCiAKIAlpZiAoYnBhZ2Up IHsKIAkJdXRfYWQoIWJ1Zl9wb29sX3dhdGNoX2lzX3NlbnRpbmVsKGJ1Zl9wb29sLCBicGFnZSkp OworCQkvKiBicGFnZS0+ZmlsZV9wYWdlX3dhc19mcmVlZCBjYW4gYWxyZWFkeSBob2xkCisJCXdo ZW4gdGhpcyBjb2RlIGlzIGludm9rZWQgZnJvbSBkaWN0X2Ryb3BfaW5kZXhfdHJlZSgpICovCiAJ CWJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gVFJVRTsKIAl9CiAKQEAgLTIyODksNyArMjI5 MSw3IEBAIGJ1Zl9wYWdlX3Jlc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoCiAKIAlyZXR1cm4oYnBh Z2UpOwogfQotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLworI2VuZGlmIC8q IFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIEdldCByZWFkIGFjY2VzcyB0byBhIGNvbXByZXNzZWQgcGFnZSAodXN1YWxseSBvZiB0 eXBlCkBAIC0yMzkwLDcgKzIzOTIsNyBAQCBnb3RfYmxvY2s6CiAKIAlidWZfcGFnZV9zZXRfYWNj ZXNzZWRfbWFrZV95b3VuZyhicGFnZSwgYWNjZXNzX3RpbWUpOwogCi0jaWZkZWYgVU5JVl9ERUJV R19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwg ZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYSghYnBhZ2UtPmZpbGVfcGFnZV93YXNfZnJlZWQpOwog I2VuZGlmCiAKQEAgLTMwNTgsNyArMzA2MCw3IEBAIHdhaXRfdW50aWxfdW5maXhlZDoKIAogCWJ1 Zl9wYWdlX3NldF9hY2Nlc3NlZF9tYWtlX3lvdW5nKCZibG9jay0+cGFnZSwgYWNjZXNzX3RpbWUp OwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RF QlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYSghYmxvY2stPnBh Z2UuZmlsZV9wYWdlX3dhc19mcmVlZCk7CiAjZW5kaWYKIApAQCAtMzIxNyw3ICszMjE5LDcgQEAg YnVmX3BhZ2Vfb3B0aW1pc3RpY19nZXQoCiAJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2Nr KSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZf QlVGX0RFQlVHICovCiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZp bmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9h KGJsb2NrLT5wYWdlLmZpbGVfcGFnZV93YXNfZnJlZWQgPT0gRkFMU0UpOwogI2VuZGlmCiAJaWYg KFVOSVZfVU5MSUtFTFkoIWFjY2Vzc190aW1lKSkgewpAQCAtMzMyOSw3ICszMzMxLDcgQEAgYnVm X3BhZ2VfZ2V0X2tub3duX25vd2FpdCgKIAl1dF9hKGJsb2NrLT5wYWdlLmJ1Zl9maXhfY291bnQg PiAwKTsKIAl1dF9hKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxF X1BBR0UpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KLSNpZmRl ZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9B Q0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKGJsb2NrLT5wYWdlLmZpbGVfcGFn ZV93YXNfZnJlZWQgPT0gRkFMU0UpOwogI2VuZGlmCiAKQEAgLTM0MTUsOSArMzQxNyw5IEBAIGJ1 Zl9wYWdlX3RyeV9nZXRfZnVuYygKIAl1dF9hKGJsb2NrLT5wYWdlLmJ1Zl9maXhfY291bnQgPiAw KTsKIAl1dF9hKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxFX1BB R0UpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KLSNpZmRlZiBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NF U1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKGJsb2NrLT5wYWdlLmZpbGVfcGFnZV93 YXNfZnJlZWQgPT0gRkFMU0UpOwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAq LworI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAJ YnVmX2Jsb2NrX2RiZ19hZGRfbGV2ZWwoYmxvY2ssIFNZTkNfTk9fT1JERVJfQ0hFQ0spOwogCiAJ YnVmX3Bvb2wtPnN0YXQubl9wYWdlX2dldHMrKzsKQEAgLTM0NDYsOSArMzQ0OCw5IEBAIGJ1Zl9w YWdlX2luaXRfbG93KAogCWJwYWdlLT5uZXdlc3RfbW9kaWZpY2F0aW9uID0gMDsKIAlicGFnZS0+ b2xkZXN0X21vZGlmaWNhdGlvbiA9IDA7CiAJSEFTSF9JTlZBTElEQVRFKGJwYWdlLCBoYXNoKTsK LSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlicGFnZS0+ZmlsZV9wYWdlX3dh c19mcmVlZCA9IEZBTFNFOwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLwor I2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKQEAgLTM4MDcsOSArMzgwOSw5IEBAIGJ1Zl9wYWdlX2NyZWF0ZSgK ICNpZmRlZiBVTklWX0lCVUZfQ09VTlRfREVCVUcKIAkJdXRfYShpYnVmX2NvdW50X2dldChzcGFj ZSwgb2Zmc2V0KSA9PSAwKTsKICNlbmRpZgotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9E RUJVRwogCQlibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gRkFMU0U7Ci0jZW5kaWYg LyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIAogCQkvKiBQYWdlIGNhbiBiZSBmb3VuZCBpbiBi dWZfcG9vbCAqLwogCQlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2ZzcC9mc3AwZnNwLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvZnNwL2ZzcDBmc3AuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjAx MTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9mc3AvZnNwMGZz cC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjAyMTM1ODAxLXozYzN3Y3N6 cmg1bDU2NmgKQEAgLTM0MzUsOSArMzQzNSw5IEBAIGZzZWdfZnJlZV9wYWdlKAogCiAJZnNlZ19m cmVlX3BhZ2VfbG93KHNlZ19pbm9kZSwgc3BhY2UsIHppcF9zaXplLCBwYWdlLCBtdHIpOwogCi0j aWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJ TEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFn ZV93YXNfZnJlZWQoc3BhY2UsIHBhZ2UpOwotI2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19G SUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBA IC0zNTAzLDEzICszNTAzLDEzIEBAIGZzZWdfZnJlZV9leHRlbnQoCiAKIAlmc3BfZnJlZV9leHRl bnQoc3BhY2UsIHppcF9zaXplLCBwYWdlLCBtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5l ZCBVTklWX0RFQlVHCiAJZm9yIChpID0gMDsgaSA8IEZTUF9FWFRFTlRfU0laRTsgaSsrKSB7CiAK IAkJYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoc3BhY2UsCiAJCQkJCQkgZmlyc3Rf cGFnZV9pbl9leHRlbnQgKyBpKTsKIAl9Ci0jZW5kaWYKKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJ TEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwMjAxMTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw MjAyMTM1ODAxLXozYzN3Y3N6cmg1bDU2NmgKQEAgLTIyNzYsOSArMjI3Niw5IEBAIGlidWZfcmVt b3ZlX2ZyZWVfcGFnZSh2b2lkKQogCWZzZWdfZnJlZV9wYWdlKGhlYWRlcl9wYWdlICsgSUJVRl9I RUFERVIgKyBJQlVGX1RSRUVfU0VHX0hFQURFUiwKIAkJICAgICAgIElCVUZfU1BBQ0VfSUQsIHBh Z2Vfbm8sICZtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVm aW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVm X3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsK LSNlbmRpZgorI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVH ICovCiAKIAlpYnVmX2VudGVyKCk7CiAKQEAgLTIzMjIsOSArMjMyMiw5IEBAIGlidWZfcmVtb3Zl X2ZyZWVfcGFnZSh2b2lkKQogCWlidWZfYml0bWFwX3BhZ2Vfc2V0X2JpdHMoCiAJCWJpdG1hcF9w YWdlLCBwYWdlX25vLCB6aXBfc2l6ZSwgSUJVRl9CSVRNQVBfSUJVRiwgRkFMU0UsICZtdHIpOwog Ci0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVH X0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX3BhZ2Vfc2V0X2ZpbGVf cGFnZV93YXNfZnJlZWQoSUJVRl9TUEFDRV9JRCwgcGFnZV9ubyk7Ci0jZW5kaWYKKyNlbmRpZiAv KiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCW10cl9jb21taXQo Jm10cik7CiAKIAlpYnVmX2V4aXQoKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnRyMGN1ci5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRy MGN1ci5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40 aGY3b2FrYzlqbAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjAyMTM1ODAxLXozYzN3Y3N6cmg1bDU2NmgK QEAgLTUwMCw4ICs1MDAsOCBAQCBmaWxlIHNlZ21lbnQgb2YgdGhlIGluZGV4IHRyZWUuCiBAcmV0 dXJuCURCX1NVQ0NFU1Mgb3IgREJfT1VUX09GX0ZJTEVfU1BBQ0UgKi8KIFVOSVZfSU5URVJOCiB1 bGludAotYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovCitidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoCisv Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJZGljdF9pbmRleF90KglpbmRl eCwJCS8qITwgaW46IGluZGV4IG9mIHJlYzsgdGhlIGluZGV4IHRyZWUKIAkJCQkJTVVTVCBiZSBY LWxhdGNoZWQgKi8KIAlidWZfYmxvY2tfdCoJcmVjX2Jsb2NrLAkvKiE8IGluL291dDogYmxvY2sg Y29udGFpbmluZyByZWMgKi8KQEAgLTUxMCwxMCArNTEwLDQyIEBAIGJ0cl9zdG9yZV9iaWdfcmVj X2V4dGVybl9maWVsZHMoCiAJCQkJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zm c2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNwb25kIHRvIHJlYyB3aGVuCiAJCQkJCXRoaXMgZnVu Y3Rpb24gcmV0dXJucyAqLwotCWJpZ19yZWNfdCoJYmlnX3JlY192ZWMsCS8qITwgaW46IHZlY3Rv ciBjb250YWluaW5nIGZpZWxkcworI2lmZGVmIFVOSVZfREVCVUcKKwltdHJfdCoJCWxvY2FsX210 ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcgdGhlCisJCQkJCWxhdGNoIHRvIHJlYyBhbmQgdG8g dGhlIHRyZWUgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisjaWYgZGVmaW5lZCBVTklWX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJaWJvb2wJCXVwZGF0ZV9pbl9w bGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkCisJCQkJCWluIHBsYWNl IChub3QgZGVsZXRlK2luc2VydCkgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxP Ql9MSUdIVF9ERUJVRyAqLworCWNvbnN0IGJpZ19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjog dmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCiAJCQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICov Ci0JbXRyX3QqCQlsb2NhbF9tdHIpOwkvKiE8IGluOiBtdHIgY29udGFpbmluZyB0aGUgbGF0Y2gg dG8KLQkJCQkJcmVjIGFuZCB0byB0aGUgdHJlZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwp KTsKKworLyoqIFN0b3JlcyB0aGUgZmllbGRzIGluIGJpZ19yZWNfdmVjIHRvIHRoZSB0YWJsZXNw YWNlIGFuZCBwdXRzIHBvaW50ZXJzIHRvCit0aGVtIGluIHJlYy4gIFRoZSBleHRlcm4gZmxhZ3Mg aW4gcmVjIHdpbGwgaGF2ZSB0byBiZSBzZXQgYmVmb3JlaGFuZC4KK1RoZSBmaWVsZHMgYXJlIHN0 b3JlZCBvbiBwYWdlcyBhbGxvY2F0ZWQgZnJvbSBsZWFmIG5vZGUKK2ZpbGUgc2VnbWVudCBvZiB0 aGUgaW5kZXggdHJlZS4KK0BwYXJhbSBpbmRleAlpbjogY2x1c3RlcmVkIGluZGV4OyBNVVNUIGJl IFgtbGF0Y2hlZCBieSBtdHIKK0BwYXJhbSBiCWluL291dDogYmxvY2sgY29udGFpbmluZyByZWM7 IE1VU1QgYmUgWC1sYXRjaGVkIGJ5IG10cgorQHBhcmFtIHJlYwlpbi9vdXQ6IGNsdXN0ZXJlZCBp bmRleCByZWNvcmQKK0BwYXJhbSBvZmZzZXRzCWluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRl eCk7CisJCXRoZSAiZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0cyB3aWxsIG5vdCBi ZSBhZGp1c3RlZAorQHBhcmFtIG10cglpbjogbWluaS10cmFuc2FjdGlvbiB0aGF0IGhvbGRzIHgt bGF0Y2ggb24gaW5kZXggYW5kIGIKK0BwYXJhbSB1cGQJaW46IFRSVUUgaWYgdGhlIHJlY29yZCBp cyB1cGRhdGVkIGluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkKK0BwYXJhbSBiaWcJaW46IHZl Y3RvciBjb250YWluaW5nIGZpZWxkcyB0byBiZSBzdG9yZWQgZXh0ZXJuYWxseQorQHJldHVybglE Ql9TVUNDRVNTIG9yIERCX09VVF9PRl9GSUxFX1NQQUNFICovCisjaWZkZWYgVU5JVl9ERUJVRwor IyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZz ZXRzLG10cix1cGQsYmlnKSBcCisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5j KGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpCisjZWxpZiBkZWZpbmVkIFVOSVZfQkxP Ql9MSUdIVF9ERUJVRworIyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhp bmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKSBcCisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0 ZXJuX2ZpZWxkc19mdW5jKGluZGV4LGIscmVjLG9mZnNldHMsdXBkLGJpZykKKyNlbHNlCisjIGRl ZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnNldHMs bXRyLHVwZCxiaWcpIFwKKwlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5k ZXgsYixyZWMsb2Zmc2V0cyxiaWcpCisjZW5kaWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBGcmVlcyB0 aGUgc3BhY2UgaW4gYW4gZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQgdG8gdGhlIGZpbGUgc3BhY2UK IG1hbmFnZW1lbnQgaWYgdGhlIGZpZWxkIGluIGRhdGEgaXMgb3duZWQgdGhlIGV4dGVybmFsbHkg c3RvcmVkIGZpZWxkLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9idWYwYnVmLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwMTE2Mjg0MS1qYTNpbjRoZjdvYWtjOWps CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAtNDgwLDcg KzQ4MCw3IEBAIGJ1Zl9yZXNldF9jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoKAogLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNl IGlkICovCiAJdWxpbnQJb2Zmc2V0KTsvKiE8IGluOiBwYWdlIG51bWJlciAqLwotI2lmZGVmIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyBmaWxlX3Bh Z2Vfd2FzX2ZyZWVkIFRSVUUgaWYgdGhlIHBhZ2UgaXMgZm91bmQgaW4gdGhlIGJ1ZmZlciBwb29s LgogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gd2UgZnJlZSBhIGZpbGUgcGFn ZSBhbmQgd2FudCB0aGUKQEAgLTUwNSw3ICs1MDUsNyBAQCBidWZfcGFnZV9yZXNldF9maWxlX3Bh Z2Vfd2FzX2ZyZWVkKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGlu dAlzcGFjZSwJLyohPCBpbjogc3BhY2UgaWQgKi8KIAl1bGludAlvZmZzZXQpOwkvKiE8IGluOiBw YWdlIG51bWJlciAqLwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLworI2Vu ZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBSZWFkcyB0aGUgZnJlZWRfcGFnZV9jbG9jayBvZiBhIGJ1ZmZlciBibG9jay4K IEByZXR1cm4JZnJlZWRfcGFnZV9jbG9jayAqLwpAQCAtMTQwMywxMSArMTQwMywxMSBAQCBzdHJ1 Y3QgYnVmX3BhZ2Vfc3RydWN0ewogCQkJCQkwIGlmIHRoZSBibG9jayB3YXMgbmV2ZXIgYWNjZXNz ZWQKIAkJCQkJaW4gdGhlIGJ1ZmZlciBwb29sICovCiAJLyogQH0gKi8KLSMgaWZkZWYgVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTCisjIGlmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VT IHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWlib29sCQlmaWxlX3BhZ2Vfd2FzX2ZyZWVkOwogCQkJ CQkvKiE8IHRoaXMgaXMgc2V0IHRvIFRSVUUgd2hlbiBmc3AKIAkJCQkJZnJlZXMgYSBwYWdlIGlu IGJ1ZmZlciBwb29sICovCi0jIGVuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLwor IyBlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogI2Vu ZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogfTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmknCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS91bml2LmkJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwMTE2Mjg0MS1qYTNp bjRoZjdvYWtjOWpsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91bml2LmkJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApA QCAtMTg0LDE0ICsxODQsMTUgQEAgY29tbWFuZC4gTm90IHRlc3RlZCBvbiBXaW5kb3dzLiAqLwog CQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0JVRl9E RUJVRwkJCQkvKiBFbmFibGUgYnVmZmVyIHBvb2wKIAkJCQkJCWRlYnVnZ2luZyB3aXRob3V0IFVO SVZfREVCVUcgKi8KKyNkZWZpbmUgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCQkJLyogRW5hYmxlIG9m Zi1wYWdlIGNvbHVtbgorCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2Rl ZmluZSBVTklWX0RFQlVHCQkJCS8qIEVuYWJsZSB1dF9hZCgpIGFzc2VydGlvbnMKIAkJCQkJCWFu ZCBkaXNhYmxlIFVOSVZfSU5MSU5FICovCiAjZGVmaW5lIFVOSVZfREVCVUdfTE9DS19WQUxJREFU RQkJLyogRW5hYmxlCiAJCQkJCQl1dF9hZChsb2NrX3JlY192YWxpZGF0ZV9wYWdlKCkpCiAJCQkJ CQlhc3NlcnRpb25zLiAqLwotI2RlZmluZSBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMJCS8qIERl YnVnIC5pYmQgZmlsZSBhY2Nlc3MKLQkJCQkJCShmaWVsZCBmaWxlX3BhZ2Vfd2FzX2ZyZWVkCi0J CQkJCQlpbiBidWZfcGFnZV90KSAqLworI2RlZmluZSBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMJ CS8qIEVuYWJsZSBmcmVlZCBibG9jayBhY2Nlc3MKKwkJCQkJCWRlYnVnZ2luZyB3aXRob3V0IFVO SVZfREVCVUcgKi8KICNkZWZpbmUgVU5JVl9MUlVfREVCVUcJCQkJLyogZGVidWcgdGhlIGJ1ZmZl ciBwb29sIExSVSAqLwogI2RlZmluZSBVTklWX0hBU0hfREVCVUcJCQkJLyogZGVidWcgSEFTSF8g bWFjcm9zICovCiAjZGVmaW5lIFVOSVZfTElTVF9ERUJVRwkJCQkvKiBkZWJ1ZyBVVF9MSVNUXyBt YWNyb3MgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5z LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwMjAxMTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMjAyMTM1ODAxLXozYzN3Y3N6cmg1bDU2NmgKQEAgLTIxMjIsNyArMjEyMiw3IEBAIGZ1bmN0 aW9uX2V4aXQ6CiAKIAkJZXJyID0gYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAkJ CWluZGV4LCBidHJfY3VyX2dldF9ibG9jaygmY3Vyc29yKSwKLQkJCXJlYywgb2Zmc2V0cywgYmln X3JlYywgJm10cik7CisJCQlyZWMsIG9mZnNldHMsICZtdHIsIEZBTFNFLCBiaWdfcmVjKTsKIAog CQlpZiAobW9kaWZ5KSB7CiAJCQlkdHVwbGVfYmlnX3JlY19mcmVlKGJpZ19yZWMpOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwMjAxMTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MHB1cmdlLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4 MDEtejNjM3djc3pyaDVsNTY2aApAQCAtNzE1LDQ3ICs3MTUsMzIgQEAgZXJyX2V4aXQ6CiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBGZXRjaGVzIGFuIHVuZG8gbG9nIHJlY29yZCBhbmQgZG9lcyB0aGUgcHVyZ2UgZm9yIHRo ZSByZWNvcmRlZCBvcGVyYXRpb24uCiBJZiBub25lIGxlZnQsIG9yIHRoZSBjdXJyZW50IHB1cmdl IGNvbXBsZXRlZCwgcmV0dXJucyB0aGUgY29udHJvbCB0byB0aGUKLXBhcmVudCBub2RlLCB3aGlj aCBpcyBhbHdheXMgYSBxdWVyeSB0aHJlYWQgbm9kZS4KLUByZXR1cm4JREJfU1VDQ0VTUyBpZiBv cGVyYXRpb24gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCwgZWxzZSBlcnJvciBjb2RlICovCi1zdGF0 aWMKLXVsaW50CitwYXJlbnQgbm9kZSwgd2hpY2ggaXMgYWx3YXlzIGEgcXVlcnkgdGhyZWFkIG5v ZGUuICovCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpCit2b2lkCiByb3dfcHVyZ2Uo CiAvKj09PT09PSovCiAJcHVyZ2Vfbm9kZV90Kglub2RlLAkvKiE8IGluOiByb3cgcHVyZ2Ugbm9k ZSAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQlyb2xs X3B0cl90CXJvbGxfcHRyOwotCWlib29sCQlwdXJnZV9uZWVkZWQ7CiAJaWJvb2wJCXVwZGF0ZWRf ZXh0ZXJuOwotCXRyeF90KgkJdHJ4OwogCi0JdXRfYWQobm9kZSAmJiB0aHIpOwotCi0JdHJ4ID0g dGhyX2dldF90cngodGhyKTsKKwl1dF9hZChub2RlKTsKKwl1dF9hZCh0aHIpOwogCi0Jbm9kZS0+ dW5kb19yZWMgPSB0cnhfcHVyZ2VfZmV0Y2hfbmV4dF9yZWMoJnJvbGxfcHRyLAotCQkJCQkJICAm KG5vZGUtPnJlc2VydmF0aW9uKSwKKwlub2RlLT51bmRvX3JlYyA9IHRyeF9wdXJnZV9mZXRjaF9u ZXh0X3JlYygmbm9kZS0+cm9sbF9wdHIsCisJCQkJCQkgICZub2RlLT5yZXNlcnZhdGlvbiwKIAkJ CQkJCSAgbm9kZS0+aGVhcCk7CiAJaWYgKCFub2RlLT51bmRvX3JlYykgewogCQkvKiBQdXJnZSBj b21wbGV0ZWQgZm9yIHRoaXMgcXVlcnkgdGhyZWFkICovCiAKIAkJdGhyLT5ydW5fbm9kZSA9IHF1 ZV9ub2RlX2dldF9wYXJlbnQobm9kZSk7CiAKLQkJcmV0dXJuKERCX1NVQ0NFU1MpOworCQlyZXR1 cm47CiAJfQogCi0Jbm9kZS0+cm9sbF9wdHIgPSByb2xsX3B0cjsKLQotCWlmIChub2RlLT51bmRv X3JlYyA9PSAmdHJ4X3B1cmdlX2R1bW15X3JlYykgewotCQlwdXJnZV9uZWVkZWQgPSBGQUxTRTsK LQl9IGVsc2UgewotCQlwdXJnZV9uZWVkZWQgPSByb3dfcHVyZ2VfcGFyc2VfdW5kb19yZWMobm9k ZSwgJnVwZGF0ZWRfZXh0ZXJuLAotCQkJCQkJCXRocik7Ci0JCS8qIElmIHB1cmdlX25lZWRlZCA9 PSBUUlVFLCB3ZSBtdXN0IGFsc28gcmVtZW1iZXIgdG8gdW5mcmVlemUKLQkJZGF0YSBkaWN0aW9u YXJ5ISAqLwotCX0KLQotCWlmIChwdXJnZV9uZWVkZWQpIHsKKwlpZiAobm9kZS0+dW5kb19yZWMg IT0gJnRyeF9wdXJnZV9kdW1teV9yZWMKKwkgICAgJiYgcm93X3B1cmdlX3BhcnNlX3VuZG9fcmVj KG5vZGUsICZ1cGRhdGVkX2V4dGVybiwgdGhyKSkgewogCQlub2RlLT5mb3VuZF9jbHVzdCA9IEZB TFNFOwogCiAJCW5vZGUtPmluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9pbmRleCgKQEAgLTc3 NCw3ICs3NTksNyBAQCByb3dfcHVyZ2UoCiAJCQlidHJfcGN1cl9jbG9zZSgmKG5vZGUtPnBjdXIp KTsKIAkJfQogCi0JCXJvd19teXNxbF91bmZyZWV6ZV9kYXRhX2RpY3Rpb25hcnkodHJ4KTsKKwkJ cm93X215c3FsX3VuZnJlZXplX2RhdGFfZGljdGlvbmFyeSh0aHJfZ2V0X3RyeCh0aHIpKTsKIAl9 CiAKIAkvKiBEbyBzb21lIGNsZWFudXAgKi8KQEAgLTc4Miw4ICs3NjcsNiBAQCByb3dfcHVyZ2Uo CiAJbWVtX2hlYXBfZW1wdHkobm9kZS0+aGVhcCk7CiAKIAl0aHItPnJ1bl9ub2RlID0gbm9kZTsK LQotCXJldHVybihEQl9TVUNDRVNTKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNzk3LDkgKzc4MCw2IEBA IHJvd19wdXJnZV9zdGVwKAogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQg Ki8KIHsKIAlwdXJnZV9ub2RlX3QqCW5vZGU7Ci0jaWZkZWYgVU5JVl9ERUJVRwotCXVsaW50CQll cnI7Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCiAJdXRfYWQodGhyKTsKIApAQCAtODA3LDEy ICs3ODcsNyBAQCByb3dfcHVyZ2Vfc3RlcCgKIAogCXV0X2FkKHF1ZV9ub2RlX2dldF90eXBlKG5v ZGUpID09IFFVRV9OT0RFX1BVUkdFKTsKIAotI2lmZGVmIFVOSVZfREVCVUcKLQllcnIgPQotI2Vu ZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlyb3dfcHVyZ2Uobm9kZSwgdGhyKTsKIAotCXV0X2FkKGVy ciA9PSBEQl9TVUNDRVNTKTsKLQogCXJldHVybih0aHIpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzB1bW9kLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwMTE2Mjg0 MS1qYTNpbjRoZjdvYWtjOWpsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVs NTY2aApAQCAtMTczLDQwICsxNzMsMjYgQEAgcm93X3VuZG9fbW9kX3JlbW92ZV9jbHVzdF9sb3co CiAJbXRyX3QqCQltdHIsCS8qITwgaW46IG10ciAqLwogCXVsaW50CQltb2RlKQkvKiE8IGluOiBC VFJfTU9ESUZZX0xFQUYgb3IgQlRSX01PRElGWV9UUkVFICovCiB7Ci0JYnRyX3BjdXJfdCoJcGN1 cjsKIAlidHJfY3VyX3QqCWJ0cl9jdXI7CiAJdWxpbnQJCWVycjsKLQlpYm9vbAkJc3VjY2VzczsK IAogCXV0X2FkKG5vZGUtPnJlY190eXBlID09IFRSWF9VTkRPX1VQRF9ERUxfUkVDKTsKLQlwY3Vy ID0gJihub2RlLT5wY3VyKTsKLQlidHJfY3VyID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1cik7 CiAKLQlzdWNjZXNzID0gYnRyX3BjdXJfcmVzdG9yZV9wb3NpdGlvbihtb2RlLCBwY3VyLCBtdHIp OworCS8qIEZpbmQgb3V0IGlmIHRoZSByZWNvcmQgaGFzIGJlZW4gcHVyZ2VkIGFscmVhZHkKKwlv ciBpZiB3ZSBjYW4gcmVtb3ZlIGl0LiAqLwogCi0JaWYgKCFzdWNjZXNzKSB7CisJaWYgKCFidHJf cGN1cl9yZXN0b3JlX3Bvc2l0aW9uKG1vZGUsICZub2RlLT5wY3VyLCBtdHIpCisJICAgIHx8IHJv d192ZXJzX211c3RfcHJlc2VydmVfZGVsX21hcmtlZChub2RlLT5uZXdfdHJ4X2lkLCBtdHIpKSB7 CiAKIAkJcmV0dXJuKERCX1NVQ0NFU1MpOwogCX0KIAotCS8qIEZpbmQgb3V0IGlmIHdlIGNhbiBy ZW1vdmUgdGhlIHdob2xlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgKi8KLQotCWlmIChub2RlLT5y ZWNfdHlwZSA9PSBUUlhfVU5ET19VUERfREVMX1JFQwotCSAgICAmJiAhcm93X3ZlcnNfbXVzdF9w cmVzZXJ2ZV9kZWxfbWFya2VkKG5vZGUtPm5ld190cnhfaWQsIG10cikpIHsKLQotCQkvKiBPaywg d2UgY2FuIHJlbW92ZSAqLwotCX0gZWxzZSB7Ci0JCXJldHVybihEQl9TVUNDRVNTKTsKLQl9CisJ YnRyX2N1ciA9IGJ0cl9wY3VyX2dldF9idHJfY3VyKCZub2RlLT5wY3VyKTsKIAogCWlmIChtb2Rl ID09IEJUUl9NT0RJRllfTEVBRikgewotCQlzdWNjZXNzID0gYnRyX2N1cl9vcHRpbWlzdGljX2Rl bGV0ZShidHJfY3VyLCBtdHIpOwotCi0JCWlmIChzdWNjZXNzKSB7Ci0JCQllcnIgPSBEQl9TVUND RVNTOwotCQl9IGVsc2UgewotCQkJZXJyID0gREJfRkFJTDsKLQkJfQorCQllcnIgPSBidHJfY3Vy X29wdGltaXN0aWNfZGVsZXRlKGJ0cl9jdXIsIG10cikKKwkJCT8gREJfU1VDQ0VTUworCQkJOiBE Ql9GQUlMOwogCX0gZWxzZSB7CiAJCXV0X2FkKG1vZGUgPT0gQlRSX01PRElGWV9UUkVFKTsKIAoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMTAyMDExNjI4NDEtamEzaW40aGY3b2FrYzlqbAorKysgYi9zdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwdXBkLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4 MDEtejNjM3djc3pyaDVsNTY2aApAQCAtMTk4Miw3ICsxOTgyLDcgQEAgcm93X3VwZF9jbHVzdF9y ZWMoCiAJCQlpbmRleCwgYnRyX2N1cl9nZXRfYmxvY2soYnRyX2N1ciksIHJlYywKIAkJCXJlY19n ZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJVUxJTlRfVU5ERUZJTkVELCAm aGVhcCksCi0JCQliaWdfcmVjLCBtdHIpOworCQkJbXRyLCBUUlVFLCBiaWdfcmVjKTsKIAkJbXRy X2NvbW1pdChtdHIpOwogCX0KIAoK --===============2110862105== 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.5-innodb/ # testament_sha1: 1da2e4c51aa123f62c40594dd58ac85852ca6412 # timestamp: 2011-02-02 15:59:32 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # ja3in4hf7oakc9jl # # Begin bundle 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 wRPtKKh8OpLof/icqfJP8i7kinChIMz2IPI= --===============2110862105==--