From: marko.makela Date: May 23 2012 8:52am Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3852 to 3855) WL#6255 List-Archive: http://lists.mysql.com/commits/143917 Message-Id: <201205230852.q4N8quBF016213@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4NTUgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0yMwogICAgICBXTCM2MjU1IHByZXBhcmF0aW9u OiBEbyBub3QgcmVjb21wdXRlIG9mZnNldHMgYWZ0ZXIgQi10cmVlIGluc2VydC4KICAgICAgCiAg ICAgIGJ0cl9yb290X3JhaXNlX2FuZF9pbnNlcnQoKSwgYnRyX3BhZ2VfaW5zZXJ0X2ZpdHMoKSwK ICAgICAgYnRyX3BhZ2VfdHVwbGVfc21hbGxlcigpLCBidHJfcGFnZV9zcGxpdF9hbmRfaW5zZXJ0 KCksCiAgICAgIGJ0cl9jdXJfaW5zZXJ0X2lmX3Bvc3NpYmxlKCksIGJ0cl9jdXJfb3B0aW1pc3Rp Y19pbnNlcnQoKSwKICAgICAgYnRyX2N1cl9wZXNzaW1pc3RpY19pbnNlcnQoKSwgaWJ1Zl9pbnNl cnRfdG9faW5kZXhfcGFnZV9sb3coKSwKICAgICAgcGFnZV9jdXJfdHVwbGVfaW5zZXJ0KCksIHJv d19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgpOgogICAgICBBZGQgaW4vb3V0IHBhcmFt ZXRlcnMgZm9yIG9mZnNldHMgYW5kIGhlYXAuCiAgICAgIAogICAgICByb3dfaW5zX3NlY19pbmRl eF9lbnRyeV9sb3coKTogQWRkIGEgcGFyYW1ldGVyIGZvciBoZWFwLgoKICAgIG1vZGlmaWVkOgog ICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5j YwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3BhZ2UwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmljCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MGxvZy5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MK IDM4NTQgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0yMwogICAgICBBZGQgZnVuY3Rpb24gYXR0cmli dXRlcy4gUmVwbGFjZSBidHJfcGFnZV9nZXRfbGV2ZWwoKSB3aXRoIGEgbWFjcm8uCgogICAgbW9k aWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaWMKIDM4NTMgTWFya28gTcOka2Vsw6QJMjAx Mi0wNS0yMwogICAgICBXTCM1NTI2IG9wdGltaXphdGlvbiBjbGVhbnVwOgogICAgICAKICAgICAg cm93X2xvZ19vbmxpbmVfb3AoKTogRml4IGEgYm9ndXMgd2FybmluZyBvbiB1bmluaXRpYWxpemVk IG1yZWNfc2l6ZSwKICAgICAgYW5kIGRvIGEgbGl0dGxlIGxlc3Mgd29yayB3aGlsZSBob2xkaW5n IGluZGV4LT5vbmxpbmVfbG9nLT5tdXRleC4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MGxvZy5jYwogMzg1MiBNYXJrbyBNw6RrZWzDpAkyMDEyLTA1LTIyCiAg ICAgIEFkZCBmdW5jdGlvbiBhdHRyaWJ1dGVzLgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwYnRyLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRy LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTIyMDgyODQ1LWtwOWFvcGJs MmdqcTdhbmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0ci5jYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUyMzA4NDgwNC1lczNkbXBtemJhOHN5NmljCkBAIC0x ODY0LDYgKzE4NjQsOCBAQCBidHJfcm9vdF9yYWlzZV9hbmRfaW5zZXJ0KAogCQkJCW9uIHRoZSBy b290IHBhZ2U7IHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMsCiAJCQkJdGhlIGN1cnNvciBpcyBw b3NpdGlvbmVkIG9uIHRoZSBwcmVkZWNlc3NvcgogCQkJCW9mIHRoZSBpbnNlcnRlZCByZWNvcmQg Ki8KKwl1bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBvZmZzZXRzIG9uIGluc2VydGVkIHJlY29y ZCAqLworCW1lbV9oZWFwX3QqKgloZWFwLAkvKiE8IGluL291dDogcG9pbnRlciB0byBtZW1vcnkg aGVhcCwgb3IgTlVMTCAqLwogCWNvbnN0IGR0dXBsZV90Kgl0dXBsZSwJLyohPCBpbjogdHVwbGUg dG8gaW5zZXJ0ICovCiAJdWxpbnQJCW5fZXh0LAkvKiE8IGluOiBudW1iZXIgb2YgZXh0ZXJuYWxs eSBzdG9yZWQgY29sdW1ucyAqLwogCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KQEAgLTE4 NzMsNyArMTg3NSw2IEBAIGJ0cl9yb290X3JhaXNlX2FuZF9pbnNlcnQoCiAJcGFnZV90KgkJbmV3 X3BhZ2U7CiAJdWxpbnQJCW5ld19wYWdlX25vOwogCXJlY190KgkJcmVjOwotCW1lbV9oZWFwX3Qq CWhlYXA7CiAJZHR1cGxlX3QqCW5vZGVfcHRyOwogCXVsaW50CQlsZXZlbDsKIAlyZWNfdCoJCW5v ZGVfcHRyX3JlYzsKQEAgLTE5NTgsNyArMTk1OSw5IEBAIGJ0cl9yb290X3JhaXNlX2FuZF9pbnNl cnQoCiAJbG9ja191cGRhdGVfcm9vdF9yYWlzZShuZXdfYmxvY2ssIHJvb3RfYmxvY2spOwogCiAJ LyogQ3JlYXRlIGEgbWVtb3J5IGhlYXAgd2hlcmUgdGhlIG5vZGUgcG9pbnRlciBpcyBzdG9yZWQg Ki8KLQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMCk7CisJaWYgKCEqaGVhcCkgeworCQkqaGVh cCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDAwKTsKKwl9CiAKIAlyZWMgPSBwYWdlX3JlY19nZXRfbmV4 dChwYWdlX2dldF9pbmZpbXVtX3JlYyhuZXdfcGFnZSkpOwogCW5ld19wYWdlX25vID0gYnVmX2Js b2NrX2dldF9wYWdlX25vKG5ld19ibG9jayk7CkBAIC0xOTY2LDggKzE5NjksOCBAQCBidHJfcm9v dF9yYWlzZV9hbmRfaW5zZXJ0KAogCS8qIEJ1aWxkIHRoZSBub2RlIHBvaW50ZXIgKD0gbm9kZSBr ZXkgYW5kIHBhZ2UgYWRkcmVzcykgZm9yIHRoZQogCWNoaWxkICovCiAKLQlub2RlX3B0ciA9IGRp Y3RfaW5kZXhfYnVpbGRfbm9kZV9wdHIoaW5kZXgsIHJlYywgbmV3X3BhZ2Vfbm8sIGhlYXAsCi0J CQkJCSAgICAgbGV2ZWwpOworCW5vZGVfcHRyID0gZGljdF9pbmRleF9idWlsZF9ub2RlX3B0cigK KwkJaW5kZXgsIHJlYywgbmV3X3BhZ2Vfbm8sICpoZWFwLCBsZXZlbCk7CiAJLyogVGhlIG5vZGUg cG9pbnRlciBtdXN0IGJlIG1hcmtlZCBhcyB0aGUgcHJlZGVmaW5lZCBtaW5pbXVtIHJlY29yZCwK IAlhcyB0aGVyZSBpcyBubyBsb3dlciBhbHBoYWJldGljYWwgbGltaXQgdG8gcmVjb3JkcyBpbiB0 aGUgbGVmdG1vc3QKIAlub2RlIG9mIGEgbGV2ZWw6ICovCkBAIC0xOTkzLDE1ICsxOTk2LDEyIEBA IGJ0cl9yb290X3JhaXNlX2FuZF9pbnNlcnQoCiAJcGFnZV9jdXJfc2V0X2JlZm9yZV9maXJzdChy b290X2Jsb2NrLCBwYWdlX2N1cnNvcik7CiAKIAlub2RlX3B0cl9yZWMgPSBwYWdlX2N1cl90dXBs ZV9pbnNlcnQocGFnZV9jdXJzb3IsIG5vZGVfcHRyLAotCQkJCQkgICAgIGluZGV4LCAwLCBtdHIp OworCQkJCQkgICAgIGluZGV4LCBvZmZzZXRzLCBoZWFwLCAwLCBtdHIpOwogCiAJLyogVGhlIHJv b3QgcGFnZSBzaG91bGQgb25seSBjb250YWluIHRoZSBub2RlIHBvaW50ZXIKIAl0byBuZXdfcGFn ZSBhdCB0aGlzIHBvaW50LiAgVGh1cywgdGhlIGRhdGEgc2hvdWxkIGZpdC4gKi8KIAl1dF9hKG5v ZGVfcHRyX3JlYyk7CiAKLQkvKiBGcmVlIHRoZSBtZW1vcnkgaGVhcCAqLwotCW1lbV9oZWFwX2Zy ZWUoaGVhcCk7Ci0KIAkvKiBXZSBwbGF5IHNhZmUgYW5kIHJlc2V0IHRoZSBmcmVlIGJpdHMgZm9y IHRoZSBuZXcgcGFnZSAqLwogCiAjaWYgMApAQCAtMjAxNyw3ICsyMDE3LDggQEAgYnRyX3Jvb3Rf cmFpc2VfYW5kX2luc2VydCgKIAkJCVBBR0VfQ1VSX0xFLCBwYWdlX2N1cnNvcik7CiAKIAkvKiBT cGxpdCB0aGUgY2hpbGQgYW5kIGluc2VydCB0dXBsZSAqLwotCXJldHVybihidHJfcGFnZV9zcGxp dF9hbmRfaW5zZXJ0KGZsYWdzLCBjdXJzb3IsIHR1cGxlLCBuX2V4dCwgbXRyKSk7CisJcmV0dXJu KGJ0cl9wYWdlX3NwbGl0X2FuZF9pbnNlcnQoZmxhZ3MsIGN1cnNvciwgb2Zmc2V0cywgaGVhcCwK KwkJCQkJIHR1cGxlLCBuX2V4dCwgbXRyKSk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjI0NSw5ICsy MjQ2LDkgQEAgZnVuY19leGl0OgogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIFRSVUUgaWYgdGhlIGluc2Vy dCBmaXRzIG9uIHRoZSBhcHByb3ByaWF0ZSBoYWxmLXBhZ2Ugd2l0aCB0aGUKIGNob3NlbiBzcGxp dF9yZWMuCi1AcmV0dXJuCVRSVUUgaWYgZml0cyAqLwotc3RhdGljCi1pYm9vbAorQHJldHVybgl0 cnVlIGlmIGZpdHMgKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKDEsMyw0LDYpLCB3 YXJuX3VudXNlZF9yZXN1bHQpKQorYm9vbAogYnRyX3BhZ2VfaW5zZXJ0X2ZpdHMoCiAvKj09PT09 PT09PT09PT09PT09Ki8KIAlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIGF0IHdo aWNoIGluc2VydApAQCAtMjI1NSwxMSArMjI1NiwxMSBAQCBidHJfcGFnZV9pbnNlcnRfZml0cygK IAljb25zdCByZWNfdCoJc3BsaXRfcmVjLC8qITwgaW46IHN1Z2dlc3Rpb24gZm9yIGZpcnN0IHJl Y29yZAogCQkJCW9uIHVwcGVyIGhhbGYtcGFnZSwgb3IgTlVMTCBpZgogCQkJCXR1cGxlIHRvIGJl IGluc2VydGVkIHNob3VsZCBiZSBmaXJzdCAqLwotCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwg aW46IHJlY19nZXRfb2Zmc2V0cygKLQkJCQlzcGxpdF9yZWMsIGN1cnNvci0+aW5kZXgpICovCisJ dWxpbnQqKgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnNldHMoCisJCQkJc3BsaXRfcmVj LCBjdXJzb3ItPmluZGV4KTsgb3V0OiBnYXJiYWdlICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxl LAkvKiE8IGluOiB0dXBsZSB0byBpbnNlcnQgKi8KIAl1bGludAkJbl9leHQsCS8qITwgaW46IG51 bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCi0JbWVtX2hlYXBfdCoJaGVhcCkJ LyohPCBpbjogdGVtcG9yYXJ5IG1lbW9yeSBoZWFwICovCisJbWVtX2hlYXBfdCoqCWhlYXApCS8q ITwgaW46IHRlbXBvcmFyeSBtZW1vcnkgaGVhcCAqLwogewogCXBhZ2VfdCoJCXBhZ2U7CiAJdWxp bnQJCWluc2VydF9zaXplOwpAQCAtMjI2OCwxNSArMjI2OSwxMyBAQCBidHJfcGFnZV9pbnNlcnRf Zml0cygKIAl1bGludAkJdG90YWxfbl9yZWNzOwogCWNvbnN0IHJlY190KglyZWM7CiAJY29uc3Qg cmVjX3QqCWVuZF9yZWM7Ci0JdWxpbnQqCQlvZmZzOwogCiAJcGFnZSA9IGJ0cl9jdXJfZ2V0X3Bh Z2UoY3Vyc29yKTsKIAotCXV0X2FkKCFzcGxpdF9yZWMgPT0gIW9mZnNldHMpOwotCXV0X2FkKCFv ZmZzZXRzCi0JICAgICAgfHwgIXBhZ2VfaXNfY29tcChwYWdlKSA9PSAhcmVjX29mZnNfY29tcChv ZmZzZXRzKSk7Ci0JdXRfYWQoIW9mZnNldHMKLQkgICAgICB8fCByZWNfb2Zmc192YWxpZGF0ZShz cGxpdF9yZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMpKTsKKwl1dF9hZCghc3BsaXRfcmVjCisJ ICAgICAgfHwgIXBhZ2VfaXNfY29tcChwYWdlKSA9PSAhcmVjX29mZnNfY29tcCgqb2Zmc2V0cykp OworCXV0X2FkKCFzcGxpdF9yZWMKKwkgICAgICB8fCByZWNfb2Zmc192YWxpZGF0ZShzcGxpdF9y ZWMsIGN1cnNvci0+aW5kZXgsICpvZmZzZXRzKSk7CiAKIAlpbnNlcnRfc2l6ZSA9IHJlY19nZXRf Y29udmVydGVkX3NpemUoY3Vyc29yLT5pbmRleCwgdHVwbGUsIG5fZXh0KTsKIAlmcmVlX3NwYWNl ICA9IHBhZ2VfZ2V0X2ZyZWVfc3BhY2Vfb2ZfZW1wdHkocGFnZV9pc19jb21wKHBhZ2UpKTsKQEAg LTIyOTQsNyArMjI5Myw3IEBAIGJ0cl9wYWdlX2luc2VydF9maXRzKAogCQlyZWMgPSBwYWdlX3Jl Y19nZXRfbmV4dChwYWdlX2dldF9pbmZpbXVtX3JlYyhwYWdlKSk7CiAJCWVuZF9yZWMgPSBwYWdl X3JlY19nZXRfbmV4dChidHJfY3VyX2dldF9yZWMoY3Vyc29yKSk7CiAKLQl9IGVsc2UgaWYgKGNt cF9kdHVwbGVfcmVjKHR1cGxlLCBzcGxpdF9yZWMsIG9mZnNldHMpID49IDApIHsKKwl9IGVsc2Ug aWYgKGNtcF9kdHVwbGVfcmVjKHR1cGxlLCBzcGxpdF9yZWMsICpvZmZzZXRzKSA+PSAwKSB7CiAK IAkJcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocGFnZV9nZXRfaW5maW11bV9yZWMocGFnZSkpOwog CQllbmRfcmVjID0gc3BsaXRfcmVjOwpAQCAtMjMwOSwxOSArMjMwOCwxNyBAQCBidHJfcGFnZV9p bnNlcnRfZml0cygKIAkJLyogT2ssIHRoZXJlIHdpbGwgYmUgZW5vdWdoIGF2YWlsYWJsZSBzcGFj ZSBvbiB0aGUKIAkJaGFsZiBwYWdlIHdoZXJlIHRoZSB0dXBsZSBpcyBpbnNlcnRlZCAqLwogCi0J CXJldHVybihUUlVFKTsKKwkJcmV0dXJuKHRydWUpOwogCX0KIAotCW9mZnMgPSBOVUxMOwotCiAJ d2hpbGUgKHJlYyAhPSBlbmRfcmVjKSB7CiAJCS8qIEluIHRoaXMgbG9vcCB3ZSBjYWxjdWxhdGUg dGhlIGFtb3VudCBvZiByZXNlcnZlZAogCQlzcGFjZSBhZnRlciByZWMgaXMgcmVtb3ZlZCBmcm9t IHBhZ2UuICovCiAKLQkJb2ZmcyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGN1cnNvci0+aW5kZXgs IG9mZnMsCi0JCQkJICAgICAgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQkqb2Zmc2V0cyA9 IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGN1cnNvci0+aW5kZXgsICpvZmZzZXRzLAorCQkJCQkgICBV TElOVF9VTkRFRklORUQsIGhlYXApOwogCi0JCXRvdGFsX2RhdGEgLT0gcmVjX29mZnNfc2l6ZShv ZmZzKTsKKwkJdG90YWxfZGF0YSAtPSByZWNfb2Zmc19zaXplKCpvZmZzZXRzKTsKIAkJdG90YWxf bl9yZWNzLS07CiAKIAkJaWYgKHRvdGFsX2RhdGEgKyBwYWdlX2Rpcl9jYWxjX3Jlc2VydmVkX3Nw YWNlKHRvdGFsX25fcmVjcykKQEAgLTIzMzAsMTMgKzIzMjcsMTMgQEAgYnRyX3BhZ2VfaW5zZXJ0 X2ZpdHMoCiAJCQkvKiBPaywgdGhlcmUgd2lsbCBiZSBlbm91Z2ggYXZhaWxhYmxlIHNwYWNlIG9u IHRoZQogCQkJaGFsZiBwYWdlIHdoZXJlIHRoZSB0dXBsZSBpcyBpbnNlcnRlZCAqLwogCi0JCQly ZXR1cm4oVFJVRSk7CisJCQlyZXR1cm4odHJ1ZSk7CiAJCX0KIAogCQlyZWMgPSBwYWdlX3JlY19n ZXRfbmV4dF9jb25zdChyZWMpOwogCX0KIAotCXJldHVybihGQUxTRSk7CisJcmV0dXJuKGZhbHNl KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCkBAIC0yMzU4LDYgKzIzNTUsOCBAQCBidHJfaW5zZXJ0X29uX25vbl9sZWFm X2xldmVsX2Z1bmMoCiAJYnRyX2N1cl90CWN1cnNvcjsKIAlkYmVycl90CQllcnI7CiAJcmVjX3Qq CQlyZWM7CisJdWxpbnQqCQlvZmZzZXRzCT0gTlVMTDsKKwltZW1faGVhcF90KgloZWFwID0gTlVM TDsKIAogCXV0X2FkKGxldmVsID4gMCk7CiAKQEAgLTIzNjksMTUgKzIzNjgsMTcgQEAgYnRyX2lu c2VydF9vbl9ub25fbGVhZl9sZXZlbF9mdW5jKAogCQkJCQkgfCBCVFJfTk9fTE9DS0lOR19GTEFH CiAJCQkJCSB8IEJUUl9LRUVQX1NZU19GTEFHCiAJCQkJCSB8IEJUUl9OT19VTkRPX0xPR19GTEFH LAotCQkJCQkgJmN1cnNvciwgdHVwbGUsICZyZWMsCisJCQkJCSAmY3Vyc29yLCAmb2Zmc2V0cywg JmhlYXAsCisJCQkJCSB0dXBsZSwgJnJlYywKIAkJCQkJICZkdW1teV9iaWdfcmVjLCAwLCBOVUxM LCBtdHIpOwogCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOworCW1lbV9oZWFwX2ZyZWUoaGVhcCk7 CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIEF0dGFjaGVzIHRoZSBoYWx2ZXMgb2YgYW4gaW5kZXggcGFnZSBv biB0aGUgYXBwcm9wcmlhdGUgbGV2ZWwgaW4gYW4KIGluZGV4IHRyZWUuICovCi1zdGF0aWMKK3N0 YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsKSkKIHZvaWQKIGJ0cl9hdHRhY2hfaGFsZl9wYWdl cygKIC8qPT09PT09PT09PT09PT09PT09Ki8KQEAgLTI1MTMsMTMgKzI1MTQsMTMgQEAgYnRyX2F0 dGFjaF9oYWxmX3BhZ2VzKAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmUgaWYgYSB0dXBsZSBpcyBzbWFs bGVyIHRoYW4gYW55IHJlY29yZCBvbiB0aGUgcGFnZS4KIEByZXR1cm4gVFJVRSBpZiBzbWFsbGVy ICovCi1zdGF0aWMKLWlib29sCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91 bnVzZWRfcmVzdWx0KSkKK2Jvb2wKIGJ0cl9wYWdlX3R1cGxlX3NtYWxsZXIoCiAvKj09PT09PT09 PT09PT09PT09PT0qLwogCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBiLXRyZWUgY3Vyc29y ICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxlLAkvKiE8IGluOiB0dXBsZSB0byBjb25zaWRlciAq LwotCXVsaW50KgkJb2Zmc2V0cywvKiE8IGluL291dDogdGVtcG9yYXJ5IHN0b3JhZ2UgKi8KKwl1 bGludCoqCQlvZmZzZXRzLC8qITwgaW4vb3V0OiB0ZW1wb3Jhcnkgc3RvcmFnZSAqLwogCXVsaW50 CQluX3VuaXEsCS8qITwgaW46IG51bWJlciBvZiB1bmlxdWUgZmllbGRzCiAJCQkJaW4gdGhlIGlu ZGV4IHBhZ2UgcmVjb3JkcyAqLwogCW1lbV9oZWFwX3QqKgloZWFwKQkvKiE8IGluL291dDogaGVh cCBmb3Igb2Zmc2V0cyAqLwpAQCAtMjUzNCwxMSArMjUzNSwxMSBAQCBidHJfcGFnZV90dXBsZV9z bWFsbGVyKAogCXBhZ2VfY3VyX21vdmVfdG9fbmV4dCgmcGN1cik7CiAJZmlyc3RfcmVjID0gcGFn ZV9jdXJfZ2V0X3JlYygmcGN1cik7CiAKLQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKAotCQlm aXJzdF9yZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMsCisJKm9mZnNldHMgPSByZWNfZ2V0X29m ZnNldHMoCisJCWZpcnN0X3JlYywgY3Vyc29yLT5pbmRleCwgKm9mZnNldHMsCiAJCW5fdW5pcSwg aGVhcCk7CiAKLQlyZXR1cm4oY21wX2R0dXBsZV9yZWModHVwbGUsIGZpcnN0X3JlYywgb2Zmc2V0 cykgPCAwKTsKKwlyZXR1cm4oY21wX2R0dXBsZV9yZWModHVwbGUsIGZpcnN0X3JlYywgKm9mZnNl dHMpIDwgMCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjU1OCw2ICsyNTU5LDggQEAgYnRyX3BhZ2Vf c3BsaXRfYW5kX2luc2VydCgKIAlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIGF0 IHdoaWNoIHRvIGluc2VydDsgd2hlbiB0aGUKIAkJCQlmdW5jdGlvbiByZXR1cm5zLCB0aGUgY3Vy c29yIGlzIHBvc2l0aW9uZWQKIAkJCQlvbiB0aGUgcHJlZGVjZXNzb3Igb2YgdGhlIGluc2VydGVk IHJlY29yZCAqLworCXVsaW50KioJCW9mZnNldHMsLyohPCBvdXQ6IG9mZnNldHMgb24gaW5zZXJ0 ZWQgcmVjb3JkICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRv IG1lbW9yeSBoZWFwLCBvciBOVUxMICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxlLAkvKiE8IGlu OiB0dXBsZSB0byBpbnNlcnQgKi8KIAl1bGludAkJbl9leHQsCS8qITwgaW46IG51bWJlciBvZiBl eHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAq LwpAQCAtMjU4MywxNSArMjU4NiwxNSBAQCBidHJfcGFnZV9zcGxpdF9hbmRfaW5zZXJ0KAogCWli b29sCQlpbnNlcnRfbGVmdDsKIAl1bGludAkJbl9pdGVyYXRpb25zID0gMDsKIAlyZWNfdCoJCXJl YzsKLQltZW1faGVhcF90KgloZWFwOwogCXVsaW50CQluX3VuaXE7Ci0JdWxpbnQqCQlvZmZzZXRz OwogCi0JaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDI0KTsKKwlpZiAoISpoZWFwKSB7CisJCSpo ZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOworCX0KIAluX3VuaXEgPSBkaWN0X2luZGV4X2dl dF9uX3VuaXF1ZV9pbl90cmVlKGN1cnNvci0+aW5kZXgpOwogZnVuY19zdGFydDoKLQltZW1faGVh cF9lbXB0eShoZWFwKTsKLQlvZmZzZXRzID0gTlVMTDsKKwltZW1faGVhcF9lbXB0eSgqaGVhcCk7 CisJKm9mZnNldHMgPSBOVUxMOwogCiAJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBkaWN0 X2luZGV4X2dldF9sb2NrKGN1cnNvci0+aW5kZXgpLAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwpA QCAtMjYyMCw3ICsyNjIzLDcgQEAgZnVuY19zdGFydDoKIAogCQlpZiAoc3BsaXRfcmVjID09IE5V TEwpIHsKIAkJCWluc2VydF9sZWZ0ID0gYnRyX3BhZ2VfdHVwbGVfc21hbGxlcigKLQkJCQljdXJz b3IsIHR1cGxlLCBvZmZzZXRzLCBuX3VuaXEsICZoZWFwKTsKKwkJCQljdXJzb3IsIHR1cGxlLCBv ZmZzZXRzLCBuX3VuaXEsIGhlYXApOwogCQl9CiAJfSBlbHNlIGlmIChidHJfcGFnZV9nZXRfc3Bs aXRfcmVjX3RvX3JpZ2h0KGN1cnNvciwgJnNwbGl0X3JlYykpIHsKIAkJZGlyZWN0aW9uID0gRlNQ X1VQOwpAQCAtMjY0Miw3ICsyNjQ1LDcgQEAgZnVuY19zdGFydDoKIAkJaWYgKHBhZ2VfZ2V0X25f cmVjcyhwYWdlKSA+IDEpIHsKIAkJCXNwbGl0X3JlYyA9IHBhZ2VfZ2V0X21pZGRsZV9yZWMocGFn ZSk7CiAJCX0gZWxzZSBpZiAoYnRyX3BhZ2VfdHVwbGVfc21hbGxlcihjdXJzb3IsIHR1cGxlLAot CQkJCQkJICBvZmZzZXRzLCBuX3VuaXEsICZoZWFwKSkgeworCQkJCQkJICBvZmZzZXRzLCBuX3Vu aXEsIGhlYXApKSB7CiAJCQlzcGxpdF9yZWMgPSBwYWdlX3JlY19nZXRfbmV4dCgKIAkJCQlwYWdl X2dldF9pbmZpbXVtX3JlYyhwYWdlKSk7CiAJCX0gZWxzZSB7CkBAIC0yNjY1LDEwICsyNjY4LDEw IEBAIGZ1bmNfc3RhcnQ6CiAJaWYgKHNwbGl0X3JlYykgewogCQlmaXJzdF9yZWMgPSBtb3ZlX2xp bWl0ID0gc3BsaXRfcmVjOwogCi0JCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMoc3BsaXRfcmVj LCBjdXJzb3ItPmluZGV4LCBvZmZzZXRzLAotCQkJCQkgIG5fdW5pcSwgJmhlYXApOworCQkqb2Zm c2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhzcGxpdF9yZWMsIGN1cnNvci0+aW5kZXgsICpvZmZzZXRz LAorCQkJCQkgICBuX3VuaXEsIGhlYXApOwogCi0JCWluc2VydF9sZWZ0ID0gY21wX2R0dXBsZV9y ZWModHVwbGUsIHNwbGl0X3JlYywgb2Zmc2V0cykgPCAwOworCQlpbnNlcnRfbGVmdCA9IGNtcF9k dHVwbGVfcmVjKHR1cGxlLCBzcGxpdF9yZWMsICpvZmZzZXRzKSA8IDA7CiAKIAkJaWYgKCFpbnNl cnRfbGVmdCAmJiBuZXdfcGFnZV96aXAgJiYgbl9pdGVyYXRpb25zID4gMCkgewogCQkJLyogSWYg YSBjb21wcmVzc2VkIHBhZ2UgaGFzIGFscmVhZHkgYmVlbiBzcGxpdCwKQEAgLTI3MTUsNyArMjcx OCw3IEBAIGluc2VydF9lbXB0eToKIAogCQlpbnNlcnRfd2lsbF9maXQgPSAhbmV3X3BhZ2Vfemlw CiAJCQkmJiBidHJfcGFnZV9pbnNlcnRfZml0cyhjdXJzb3IsIE5VTEwsCi0JCQkJCQlOVUxMLCB0 dXBsZSwgbl9leHQsIGhlYXApOworCQkJCQkJb2Zmc2V0cywgdHVwbGUsIG5fZXh0LCBoZWFwKTsK IAl9CiAKIAlpZiAoaW5zZXJ0X3dpbGxfZml0ICYmIHBhZ2VfaXNfbGVhZihwYWdlKSkgewpAQCAt MjgzNSw4ICsyODM4LDggQEAgaW5zZXJ0X2VtcHR5OgogCXBhZ2VfY3VyX3NlYXJjaChpbnNlcnRf YmxvY2ssIGN1cnNvci0+aW5kZXgsIHR1cGxlLAogCQkJUEFHRV9DVVJfTEUsIHBhZ2VfY3Vyc29y KTsKIAotCXJlYyA9IHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1cnNvciwgdHVwbGUsCi0J CQkJICAgIGN1cnNvci0+aW5kZXgsIG5fZXh0LCBtdHIpOworCXJlYyA9IHBhZ2VfY3VyX3R1cGxl X2luc2VydChwYWdlX2N1cnNvciwgdHVwbGUsIGN1cnNvci0+aW5kZXgsCisJCQkJICAgIG9mZnNl dHMsIGhlYXAsIG5fZXh0LCBtdHIpOwogCiAjaWZkZWYgVU5JVl9aSVBfREVCVUcKIAl7CkBAIC0y ODY2LDcgKzI4NjksNyBAQCBpbnNlcnRfZW1wdHk6CiAJcGFnZV9jdXJfc2VhcmNoKGluc2VydF9i bG9jaywgY3Vyc29yLT5pbmRleCwgdHVwbGUsCiAJCQlQQUdFX0NVUl9MRSwgcGFnZV9jdXJzb3Ip OwogCXJlYyA9IHBhZ2VfY3VyX3R1cGxlX2luc2VydChwYWdlX2N1cnNvciwgdHVwbGUsIGN1cnNv ci0+aW5kZXgsCi0JCQkJICAgIG5fZXh0LCBtdHIpOworCQkJCSAgICBvZmZzZXRzLCBoZWFwLCBu X2V4dCwgbXRyKTsKIAogCWlmIChyZWMgPT0gTlVMTCkgewogCQkvKiBUaGUgaW5zZXJ0IGRpZCBu b3QgZml0IG9uIHRoZSBwYWdlOiBsb29wIGJhY2sgdG8gdGhlCkBAIC0yOTA3LDcgKzI5MTAsNyBA QCBmdW5jX2V4aXQ6CiAJdXRfYWQocGFnZV92YWxpZGF0ZShidWZfYmxvY2tfZ2V0X2ZyYW1lKGxl ZnRfYmxvY2spLCBjdXJzb3ItPmluZGV4KSk7CiAJdXRfYWQocGFnZV92YWxpZGF0ZShidWZfYmxv Y2tfZ2V0X2ZyYW1lKHJpZ2h0X2Jsb2NrKSwgY3Vyc29yLT5pbmRleCkpOwogCi0JbWVtX2hlYXBf ZnJlZShoZWFwKTsKKwl1dF9hZCghcmVjIHx8IHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgY3Vyc29y LT5pbmRleCwgKm9mZnNldHMpKTsKIAlyZXR1cm4ocmVjKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBjdXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjIw ODI4NDUta3A5YW9wYmwyZ2pxN2FuYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3Vy LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTIzMDg0ODA0LWVzM2RtcG16 YmE4c3k2aWMKQEAgLTEwNTQsNyArMTA1NCw3IEBAIGJlIGZyZWVkIGJ5IHJlb3JnYW5pemluZy4g RGlmZmVycyBmcm9tIGIKIG5vIGhldXJpc3RpY3MgaXMgYXBwbGllZCB0byB3aGV0aGVyIGl0IHBh eXMgdG8gdXNlIENQVSB0aW1lIGZvcgogcmVvcmdhbml6aW5nIHRoZSBwYWdlIG9yIG5vdC4KIEBy ZXR1cm4JcG9pbnRlciB0byBpbnNlcnRlZCByZWNvcmQgaWYgc3VjY2VlZCwgZWxzZSBOVUxMICov Ci1zdGF0aWMKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1 bHQpKQogcmVjX3QqCiBidHJfY3VyX2luc2VydF9pZl9wb3NzaWJsZSgKIC8qPT09PT09PT09PT09 PT09PT09PT09PT0qLwpAQCAtMTA2Miw2ICsxMDYyLDggQEAgYnRyX2N1cl9pbnNlcnRfaWZfcG9z c2libGUoCiAJCQkJY3Vyc29yIHN0YXlzIHZhbGlkICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxl LAkvKiE8IGluOiB0dXBsZSB0byBpbnNlcnQ7IHRoZSBzaXplIGluZm8gbmVlZCBub3QKIAkJCQlo YXZlIGJlZW4gc3RvcmVkIHRvIHR1cGxlICovCisJdWxpbnQqKgkJb2Zmc2V0cywvKiE8IG91dDog b2Zmc2V0cyBvbiAqcmVjICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2lu dGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICovCiAJdWxpbnQJCW5fZXh0LAkvKiE8IGluOiBu dW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLwogCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtdHIgKi8KIHsKQEAgLTEwNzcsOCArMTA3OSw4IEBAIGJ0cl9jdXJfaW5zZXJ0X2lmX3Bv c3NpYmxlKAogCXBhZ2VfY3Vyc29yID0gYnRyX2N1cl9nZXRfcGFnZV9jdXIoY3Vyc29yKTsKIAog CS8qIE5vdywgdHJ5IHRoZSBpbnNlcnQgKi8KLQlyZWMgPSBwYWdlX2N1cl90dXBsZV9pbnNlcnQo cGFnZV9jdXJzb3IsIHR1cGxlLAotCQkJCSAgICBjdXJzb3ItPmluZGV4LCBuX2V4dCwgbXRyKTsK KwlyZWMgPSBwYWdlX2N1cl90dXBsZV9pbnNlcnQocGFnZV9jdXJzb3IsIHR1cGxlLCBjdXJzb3It PmluZGV4LAorCQkJCSAgICBvZmZzZXRzLCBoZWFwLCBuX2V4dCwgbXRyKTsKIAogCWlmIChVTklW X1VOTElLRUxZKCFyZWMpKSB7CiAJCS8qIElmIHJlY29yZCBkaWQgbm90IGZpdCwgcmVvcmdhbml6 ZSAqLwpAQCAtMTA4OCwxMSArMTA5MCwxMyBAQCBidHJfY3VyX2luc2VydF9pZl9wb3NzaWJsZSgK IAkJCXBhZ2VfY3VyX3NlYXJjaChibG9jaywgY3Vyc29yLT5pbmRleCwgdHVwbGUsCiAJCQkJCVBB R0VfQ1VSX0xFLCBwYWdlX2N1cnNvcik7CiAKLQkJCXJlYyA9IHBhZ2VfY3VyX3R1cGxlX2luc2Vy dChwYWdlX2N1cnNvciwgdHVwbGUsCi0JCQkJCQkgICAgY3Vyc29yLT5pbmRleCwgbl9leHQsIG10 cik7CisJCQlyZWMgPSBwYWdlX2N1cl90dXBsZV9pbnNlcnQoCisJCQkJcGFnZV9jdXJzb3IsIHR1 cGxlLCBjdXJzb3ItPmluZGV4LAorCQkJCW9mZnNldHMsIGhlYXAsIG5fZXh0LCBtdHIpOwogCQl9 CiAJfQogCisJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc192YWxpZGF0ZShyZWMsIGN1cnNvci0+aW5k ZXgsICpvZmZzZXRzKSk7CiAJcmV0dXJuKHJlYyk7CiB9CiAKQEAgLTExOTEsNiArMTE5NSw4IEBA IGJ0cl9jdXJfb3B0aW1pc3RpY19pbnNlcnQoCiAJCQkJc3BlY2lmaWVkICovCiAJYnRyX2N1cl90 KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBvbiBwYWdlIGFmdGVyIHdoaWNoIHRvIGluc2VydDsK IAkJCQljdXJzb3Igc3RheXMgdmFsaWQgKi8KKwl1bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBv ZmZzZXRzIG9uICpyZWMgKi8KKwltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50 ZXIgdG8gbWVtb3J5IGhlYXAsIG9yIE5VTEwgKi8KIAlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4v b3V0OiBlbnRyeSB0byBpbnNlcnQgKi8KIAlyZWNfdCoqCQlyZWMsCS8qITwgb3V0OiBwb2ludGVy IHRvIGluc2VydGVkIHJlY29yZCBpZgogCQkJCXN1Y2NlZWQgKi8KQEAgLTEzNDYsNyArMTM1Miw3 IEBAIGZhaWxfZXJyOgogCXsKIAkJY29uc3QgcmVjX3QqIHBhZ2VfY3Vyc29yX3JlYyA9IHBhZ2Vf Y3VyX2dldF9yZWMocGFnZV9jdXJzb3IpOwogCQkqcmVjID0gcGFnZV9jdXJfdHVwbGVfaW5zZXJ0 KHBhZ2VfY3Vyc29yLCBlbnRyeSwgaW5kZXgsCi0JCQkJCSAgICAgbl9leHQsIG10cik7CisJCQkJ CSAgICAgb2Zmc2V0cywgaGVhcCwgbl9leHQsIG10cik7CiAJCXJlb3JnID0gcGFnZV9jdXJzb3Jf cmVjICE9IHBhZ2VfY3VyX2dldF9yZWMocGFnZV9jdXJzb3IpOwogCiAJCWlmIChVTklWX1VOTElL RUxZKHJlb3JnKSkgewpAQCAtMTM3MSw3ICsxMzc3LDcgQEAgZmFpbF9lcnI6CiAJCXBhZ2VfY3Vy X3NlYXJjaChibG9jaywgaW5kZXgsIGVudHJ5LCBQQUdFX0NVUl9MRSwgcGFnZV9jdXJzb3IpOwog CiAJCSpyZWMgPSBwYWdlX2N1cl90dXBsZV9pbnNlcnQocGFnZV9jdXJzb3IsIGVudHJ5LCBpbmRl eCwKLQkJCQkJICAgICBuX2V4dCwgbXRyKTsKKwkJCQkJICAgICBvZmZzZXRzLCBoZWFwLCBuX2V4 dCwgbXRyKTsKIAogCQlpZiAoVU5JVl9VTkxJS0VMWSghKnJlYykpIHsKIAkJCWlmICh6aXBfc2l6 ZSAhPSAwKSB7CkBAIC0xNDU3LDYgKzE0NjMsOCBAQCBidHJfY3VyX3Blc3NpbWlzdGljX2luc2Vy dCgKIAkJCQlpbnNlcnRpb24gd2lsbCBjZXJ0YWlubHkgc3VjY2VlZCAqLwogCWJ0cl9jdXJfdCoJ Y3Vyc29yLAkvKiE8IGluOiBjdXJzb3IgYWZ0ZXIgd2hpY2ggdG8gaW5zZXJ0OwogCQkJCWN1cnNv ciBzdGF5cyB2YWxpZCAqLworCXVsaW50KioJCW9mZnNldHMsLyohPCBvdXQ6IG9mZnNldHMgb24g KnJlYyAqLworCW1lbV9oZWFwX3QqKgloZWFwLAkvKiE8IGluL291dDogcG9pbnRlciB0byBtZW1v cnkgaGVhcCwgb3IgTlVMTCAqLwogCWR0dXBsZV90KgllbnRyeSwJLyohPCBpbi9vdXQ6IGVudHJ5 IHRvIGluc2VydCAqLwogCXJlY190KioJCXJlYywJLyohPCBvdXQ6IHBvaW50ZXIgdG8gaW5zZXJ0 ZWQgcmVjb3JkIGlmCiAJCQkJc3VjY2VlZCAqLwpAQCAtMTQ3MCw3ICsxNDc4LDYgQEAgYnRyX2N1 cl9wZXNzaW1pc3RpY19pbnNlcnQoCiAJZGljdF9pbmRleF90KglpbmRleAkJPSBjdXJzb3ItPmlu ZGV4OwogCXVsaW50CQl6aXBfc2l6ZQk9IGRpY3RfdGFibGVfemlwX3NpemUoaW5kZXgtPnRhYmxl KTsKIAliaWdfcmVjX3QqCWJpZ19yZWNfdmVjCT0gTlVMTDsKLQltZW1faGVhcF90KgloZWFwCQk9 IE5VTEw7CiAJZGJlcnJfdAkJZXJyOwogCWlib29sCQlkdW1teV9pbmg7CiAJaWJvb2wJCXN1Y2Nl c3M7CkBAIC0xNDkzLDggKzE1MDAsOSBAQCBidHJfY3VyX3Blc3NpbWlzdGljX2luc2VydCgKIAog CWN1cnNvci0+ZmxhZyA9IEJUUl9DVVJfQklOQVJZOwogCi0JZXJyID0gYnRyX2N1cl9vcHRpbWlz dGljX2luc2VydChmbGFncywgY3Vyc29yLCBlbnRyeSwgcmVjLAotCQkJCQliaWdfcmVjLCBuX2V4 dCwgdGhyLCBtdHIpOworCWVyciA9IGJ0cl9jdXJfb3B0aW1pc3RpY19pbnNlcnQoCisJCWZsYWdz LCBjdXJzb3IsIG9mZnNldHMsIGhlYXAsIGVudHJ5LCByZWMsCisJCWJpZ19yZWMsIG5fZXh0LCB0 aHIsIG10cik7CiAJaWYgKGVyciAhPSBEQl9GQUlMKSB7CiAKIAkJcmV0dXJuKGVycik7CkBAIC0x NTU2LDE0ICsxNTY0LDEwIEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KAogCiAJCS8qIFRo ZSBwYWdlIGlzIHRoZSByb290IHBhZ2UgKi8KIAkJKnJlYyA9IGJ0cl9yb290X3JhaXNlX2FuZF9p bnNlcnQoCi0JCQlmbGFncywgY3Vyc29yLCBlbnRyeSwgbl9leHQsIG10cik7CisJCQlmbGFncywg Y3Vyc29yLCBvZmZzZXRzLCBoZWFwLCBlbnRyeSwgbl9leHQsIG10cik7CiAJfSBlbHNlIHsKIAkJ KnJlYyA9IGJ0cl9wYWdlX3NwbGl0X2FuZF9pbnNlcnQoCi0JCQlmbGFncywgY3Vyc29yLCBlbnRy eSwgbl9leHQsIG10cik7Ci0JfQotCi0JaWYgKFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKLQkJ bWVtX2hlYXBfZnJlZShoZWFwKTsKKwkJCWZsYWdzLCBjdXJzb3IsIG9mZnNldHMsIGhlYXAsIGVu dHJ5LCBuX2V4dCwgbXRyKTsKIAl9CiAKIAl1dF9hZChwYWdlX3JlY19nZXRfbmV4dChidHJfY3Vy X2dldF9yZWMoY3Vyc29yKSkgPT0gKnJlYyk7CkBAIC0yMTQ4LDcgKzIxNTIsOCBAQCBhbnlfZXh0 ZXJuOgogCX0KIAogCS8qIFRoZXJlIGFyZSBubyBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zIGlu IG5ld19lbnRyeSAqLwotCXJlYyA9IGJ0cl9jdXJfaW5zZXJ0X2lmX3Bvc3NpYmxlKGN1cnNvciwg bmV3X2VudHJ5LCAwLypuX2V4dCovLCBtdHIpOworCXJlYyA9IGJ0cl9jdXJfaW5zZXJ0X2lmX3Bv c3NpYmxlKAorCQljdXJzb3IsIG5ld19lbnRyeSwgb2Zmc2V0cywgaGVhcCwgMC8qbl9leHQqLywg bXRyKTsKIAl1dF9hKHJlYyk7IC8qIDwtIFdlIGNhbGN1bGF0ZWQgYWJvdmUgdGhlIGluc2VydCB3 b3VsZCBmaXQgKi8KIAogCWlmIChwYWdlX3ppcCAmJiAhZGljdF9pbmRleF9pc19jbHVzdChpbmRl eCkKQEAgLTI0MjcsNyArMjQzMiw4IEBAIG1ha2VfZXh0ZXJuYWw6CiAKIAlwYWdlX2N1cl9tb3Zl X3RvX3ByZXYocGFnZV9jdXJzb3IpOwogCi0JcmVjID0gYnRyX2N1cl9pbnNlcnRfaWZfcG9zc2li bGUoY3Vyc29yLCBuZXdfZW50cnksIG5fZXh0LCBtdHIpOworCXJlYyA9IGJ0cl9jdXJfaW5zZXJ0 X2lmX3Bvc3NpYmxlKGN1cnNvciwgbmV3X2VudHJ5LAorCQkJCQkgb2Zmc2V0cywgaGVhcCwgbl9l eHQsIG10cik7CiAKIAlpZiAocmVjKSB7CiAJCXBhZ2VfY3Vyc29yLT5yZWMgPSByZWM7CkBAIC0y NDM1LDkgKzI0NDEsNiBAQCBtYWtlX2V4dGVybmFsOgogCQlsb2NrX3JlY19yZXN0b3JlX2Zyb21f cGFnZV9pbmZpbXVtKGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvciksCiAJCQkJCQkgICByZWMsIGJs b2NrKTsKIAotCQkqb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCAqb2Zmc2V0 cywKLQkJCQkJICAgVUxJTlRfVU5ERUZJTkVELCBoZWFwKTsKLQogCQlpZiAoIXJlY19nZXRfZGVs ZXRlZF9mbGFnKHJlYywgcmVjX29mZnNfY29tcCgqb2Zmc2V0cykpKSB7CiAJCQkvKiBUaGUgbmV3 IGluc2VydGVkIHJlY29yZCBvd25zIGl0cyBwb3NzaWJsZSBleHRlcm5hbGx5CiAJCQlzdG9yZWQg ZmllbGRzICovCkBAIC0yNDkzLDExICsyNDk2LDEzIEBAIG1ha2VfZXh0ZXJuYWw6CiAJZXJyID0g YnRyX2N1cl9wZXNzaW1pc3RpY19pbnNlcnQoQlRSX05PX1VORE9fTE9HX0ZMQUcKIAkJCQkJIHwg QlRSX05PX0xPQ0tJTkdfRkxBRwogCQkJCQkgfCBCVFJfS0VFUF9TWVNfRkxBRywKLQkJCQkJIGN1 cnNvciwgbmV3X2VudHJ5LCAmcmVjLAorCQkJCQkgY3Vyc29yLCBvZmZzZXRzLCBoZWFwLAorCQkJ CQkgbmV3X2VudHJ5LCAmcmVjLAogCQkJCQkgJmR1bW15X2JpZ19yZWMsIG5fZXh0LCBOVUxMLCBt dHIpOwogCXV0X2EocmVjKTsKIAl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKIAl1dF9hKGR1bW15 X2JpZ19yZWMgPT0gTlVMTCk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBjdXJzb3It PmluZGV4LCAqb2Zmc2V0cykpOwogCXBhZ2VfY3Vyc29yLT5yZWMgPSByZWM7CiAKIAlpZiAoZGlj dF9pbmRleF9pc19zZWNfb3JfaWJ1ZihpbmRleCkpIHsKQEAgLTI1MjQsOCArMjUyOSw2IEBAIG1h a2VfZXh0ZXJuYWw6CiAjZW5kaWYgLyogVU5JVl9aSVBfREVCVUcgKi8KIAkJcGFnZV96aXAgPSBi dWZfYmxvY2tfZ2V0X3BhZ2VfemlwKHJlY19ibG9jayk7CiAKLQkJKm9mZnNldHMgPSByZWNfZ2V0 X29mZnNldHMocmVjLCBpbmRleCwgKm9mZnNldHMsCi0JCQkJCSAgIFVMSU5UX1VOREVGSU5FRCwg aGVhcCk7CiAJCWJ0cl9jdXJfdW5tYXJrX2V4dGVybl9maWVsZHMocGFnZV96aXAsCiAJCQkJCSAg ICAgcmVjLCBpbmRleCwgKm9mZnNldHMsIG10cik7CiAJfQpAQCAtMzE2Nyw4ICszMTcwLDggQEAg YnRyX2N1cl9wZXNzaW1pc3RpY19kZWxldGUoCiAJCQkJaW5kZXgsIG5leHRfcmVjLCBidWZfYmxv Y2tfZ2V0X3BhZ2Vfbm8oYmxvY2spLAogCQkJCWhlYXAsIGxldmVsKTsKIAotCQkJYnRyX2luc2Vy dF9vbl9ub25fbGVhZl9sZXZlbChmbGFncywgaW5kZXgsCi0JCQkJCQkgICAgIGxldmVsICsgMSwg bm9kZV9wdHIsIG10cik7CisJCQlidHJfaW5zZXJ0X29uX25vbl9sZWFmX2xldmVsKAorCQkJCWZs YWdzLCBpbmRleCwgbGV2ZWwgKyAxLCBub2RlX3B0ciwgbXRyKTsKIAkJfQogCX0KIAoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA1MjIwODI4NDUta3A5YW9wYmwyZ2pxN2FuYQorKysgYi9zdG9yYWdlL2lubm9i YXNlL2lidWYvaWJ1ZjBpYnVmLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NTIzMDg0ODA0LWVzM2RtcG16YmE4c3k2aWMKQEAgLTMyMzksNiArMzIzOSw3IEBAIGlidWZfaW5z ZXJ0X2xvdygKIAlidHJfY3VyX3QqCWN1cnNvcjsKIAlkdHVwbGVfdCoJaWJ1Zl9lbnRyeTsKIAlt ZW1faGVhcF90KgloZWFwOworCXVsaW50KgkJb2Zmc2V0cwkJPSBOVUxMOwogCXVsaW50CQlidWZm ZXJlZDsKIAlsaW50CQltaW5fbl9yZWNzOwogCXJlY190KgkJaW5zX3JlYzsKQEAgLTMyODYsNyAr MzI4Nyw3IEBAIGlidWZfaW5zZXJ0X2xvdygKIAkJcmV0dXJuKERCX1NUUk9OR19GQUlMKTsKIAl9 CiAKLQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDUxMik7CisJaGVhcCA9IG1lbV9oZWFwX2NyZWF0 ZSgxMDI0KTsKIAogCS8qIEJ1aWxkIHRoZSBlbnRyeSB3aGljaCBjb250YWlucyB0aGUgc3BhY2Ug aWQgYW5kIHRoZSBwYWdlIG51bWJlcgogCWFzIHRoZSBmaXJzdCBmaWVsZHMgYW5kIHRoZSB0eXBl IGluZm9ybWF0aW9uIGZvciBvdGhlciBmaWVsZHMsIGFuZApAQCAtMzQ1Niw5ICszNDU3LDExIEBA IGZhaWxfZXhpdDoKIAljdXJzb3IgPSBidHJfcGN1cl9nZXRfYnRyX2N1cigmcGN1cik7CiAKIAlp ZiAobW9kZSA9PSBCVFJfTU9ESUZZX1BSRVYpIHsKLQkJZXJyID0gYnRyX2N1cl9vcHRpbWlzdGlj X2luc2VydChCVFJfTk9fTE9DS0lOR19GTEFHLCBjdXJzb3IsCi0JCQkJCQlpYnVmX2VudHJ5LCAm aW5zX3JlYywKLQkJCQkJCSZkdW1teV9iaWdfcmVjLCAwLCB0aHIsICZtdHIpOworCQllcnIgPSBi dHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAorCQkJQlRSX05PX0xPQ0tJTkdfRkxBRywKKwkJCWN1 cnNvciwgJm9mZnNldHMsICZoZWFwLAorCQkJaWJ1Zl9lbnRyeSwgJmluc19yZWMsCisJCQkmZHVt bXlfYmlnX3JlYywgMCwgdGhyLCAmbXRyKTsKIAkJYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhj dXJzb3IpOwogCQl1dF9hZChidWZfYmxvY2tfZ2V0X3NwYWNlKGJsb2NrKSA9PSBJQlVGX1NQQUNF X0lEKTsKIApAQCAtMzQ4NSw3ICszNDg4LDcgQEAgZmFpbF9leGl0OgogCiAJCWVyciA9IGJ0cl9j dXJfcGVzc2ltaXN0aWNfaW5zZXJ0KEJUUl9OT19MT0NLSU5HX0ZMQUcKIAkJCQkJCSB8IEJUUl9O T19VTkRPX0xPR19GTEFHLAotCQkJCQkJIGN1cnNvciwKKwkJCQkJCSBjdXJzb3IsICZvZmZzZXRz LCAmaGVhcCwKIAkJCQkJCSBpYnVmX2VudHJ5LCAmaW5zX3JlYywKIAkJCQkJCSAmZHVtbXlfYmln X3JlYywgMCwgdGhyLCAmbXRyKTsKIAkJbXV0ZXhfZXhpdCgmaWJ1Zl9wZXNzaW1pc3RpY19pbnNl cnRfbXV0ZXgpOwpAQCAtMzY4NCw3ICszNjg3LDcgQEAgc2tpcF93YXRjaDoKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIER1cmluZyBtZXJnZSwgaW5zZXJ0cyB0byBhbiBpbmRleCBwYWdlIGEgc2Vjb25kYXJ5 IGluZGV4IGVudHJ5IGV4dHJhY3RlZAogZnJvbSB0aGUgaW5zZXJ0IGJ1ZmZlci4gKi8KLXN0YXRp Yworc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKQogdm9pZAogaWJ1Zl9pbnNlcnRfdG9f aW5kZXhfcGFnZV9sb3coCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTM2OTIs NiArMzY5NSw4IEBAIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KAogCWJ1Zl9ibG9ja190 KglibG9jaywJLyohPCBpbi9vdXQ6IGluZGV4IHBhZ2Ugd2hlcmUgdGhlIGJ1ZmZlcmVkCiAJCQkJ ZW50cnkgc2hvdWxkIGJlIHBsYWNlZCAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46 IHJlY29yZCBkZXNjcmlwdG9yICovCisJdWxpbnQqKgkJb2Zmc2V0cywvKiE8IG91dDogb2Zmc2V0 cyBvbiAqcmVjICovCisJbWVtX2hlYXBfdCoJaGVhcCwJLyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFw ICovCiAJbXRyX3QqCQltdHIsCS8qITwgaW4vb3V0OiBtdHIgKi8KIAlwYWdlX2N1cl90KglwYWdl X2N1cikvKiE8IGluL291dDogY3Vyc29yIHBvc2l0aW9uZWQgb24gdGhlIHJlY29yZAogCQkJCWFm dGVyIHdoaWNoIHRvIGluc2VydCB0aGUgYnVmZmVyZWQgZW50cnkgKi8KQEAgLTM3MDMsOCArMzcw OCw4IEBAIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KAogCWNvbnN0IHBhZ2VfdCoJYml0 bWFwX3BhZ2U7CiAJdWxpbnQJCW9sZF9iaXRzOwogCi0JaWYgKFVOSVZfTElLRUxZCi0JICAgIChw YWdlX2N1cl90dXBsZV9pbnNlcnQocGFnZV9jdXIsIGVudHJ5LCBpbmRleCwgMCwgbXRyKSAhPSBO VUxMKSkgeworCWlmIChwYWdlX2N1cl90dXBsZV9pbnNlcnQoCisJCSAgICBwYWdlX2N1ciwgZW50 cnksIGluZGV4LCBvZmZzZXRzLCAmaGVhcCwgMCwgbXRyKSAhPSBOVUxMKSB7CiAJCXJldHVybjsK IAl9CiAKQEAgLTM3MTUsOCArMzcyMCw4IEBAIGlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93 KAogCiAJLyogVGhpcyB0aW1lIHRoZSByZWNvcmQgbXVzdCBmaXQgKi8KIAotCWlmIChVTklWX0xJ S0VMWQotCSAgICAocGFnZV9jdXJfdHVwbGVfaW5zZXJ0KHBhZ2VfY3VyLCBlbnRyeSwgaW5kZXgs IDAsIG10cikgIT0gTlVMTCkpIHsKKwlpZiAocGFnZV9jdXJfdHVwbGVfaW5zZXJ0KHBhZ2VfY3Vy LCBlbnRyeSwgaW5kZXgsCisJCQkJICBvZmZzZXRzLCAmaGVhcCwgMCwgbXRyKSAhPSBOVUxMKSB7 CiAJCXJldHVybjsKIAl9CiAKQEAgLTM3NzAsNiArMzc3NSw4IEBAIGlidWZfaW5zZXJ0X3RvX2lu ZGV4X3BhZ2UoCiAJdWxpbnQJCWxvd19tYXRjaDsKIAlwYWdlX3QqCQlwYWdlCQk9IGJ1Zl9ibG9j a19nZXRfZnJhbWUoYmxvY2spOwogCXJlY190KgkJcmVjOworCXVsaW50KgkJb2Zmc2V0czsKKwlt ZW1faGVhcF90KgloZWFwOwogCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQoZHR1 cGxlX2NoZWNrX3R5cGVkKGVudHJ5KSk7CkBAIC0zODIwLDEwICszODI3LDE0IEBAIGR1bXA6CiAJ bG93X21hdGNoID0gcGFnZV9jdXJfc2VhcmNoKGJsb2NrLCBpbmRleCwgZW50cnksCiAJCQkJICAg IFBBR0VfQ1VSX0xFLCAmcGFnZV9jdXIpOwogCisJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgKKwkJ c2l6ZW9mKHVwZF90KQorCQkrIFJFQ19PRkZTX0hFQURFUl9TSVpFICogc2l6ZW9mKCpvZmZzZXRz KQorCQkrIGR0dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpCisJCSogKHNpemVvZih1cGRfZmllbGRf dCkgKyBzaXplb2YgKm9mZnNldHMpKTsKKwogCWlmIChVTklWX1VOTElLRUxZKGxvd19tYXRjaCA9 PSBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KSkpIHsKLQkJbWVtX2hlYXBfdCoJaGVhcDsKIAkJ dXBkX3QqCQl1cGRhdGU7Ci0JCXVsaW50KgkJb2Zmc2V0czsKIAkJcGFnZV96aXBfZGVzX3QqCXBh Z2VfemlwOwogCiAJCXJlYyA9IHBhZ2VfY3VyX2dldF9yZWMoJnBhZ2VfY3VyKTsKQEAgLTM4MzIs MTIgKzM4NDMsNiBAQCBkdW1wOgogCQlyb3dfaW5zX3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnko QlRSX01PRElGWV9MRUFGKS4gKi8KIAkJdXRfYWQocmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBw YWdlX2lzX2NvbXAocGFnZSkpKTsKIAotCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKAotCQkJc2l6 ZW9mKHVwZF90KQotCQkJKyBSRUNfT0ZGU19IRUFERVJfU0laRSAqIHNpemVvZigqb2Zmc2V0cykK LQkJCSsgZHR1cGxlX2dldF9uX2ZpZWxkcyhlbnRyeSkKLQkJCSogKHNpemVvZih1cGRfZmllbGRf dCkgKyBzaXplb2YgKm9mZnNldHMpKTsKLQogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJl YywgaW5kZXgsIE5VTEwsIFVMSU5UX1VOREVGSU5FRCwKIAkJCQkJICAmaGVhcCk7CiAJCXVwZGF0 ZSA9IHJvd191cGRfYnVpbGRfc2VjX3JlY19kaWZmZXJlbmNlX2JpbmFyeSgKQEAgLTM4NTEsOSAr Mzg1Niw3IEBAIGR1bXA6CiAJCQlCdWcgIzU2NjgwIHdhcyBmaXhlZC4gKi8KIAkJCWJ0cl9jdXJf c2V0X2RlbGV0ZWRfZmxhZ19mb3JfaWJ1ZigKIAkJCQlyZWMsIHBhZ2VfemlwLCBGQUxTRSwgbXRy KTsKLXVwZGF0ZWRfaW5fcGxhY2U6Ci0JCQltZW1faGVhcF9mcmVlKGhlYXApOwotCQkJcmV0dXJu OworCQkJZ290byB1cGRhdGVkX2luX3BsYWNlOwogCQl9CiAKIAkJLyogQ29weSB0aGUgaW5mbyBi aXRzLiBDbGVhciB0aGUgZGVsZXRlLW1hcmsuICovCkBAIC0zODk3LDE1ICszOTAwLDIwIEBAIHVw ZGF0ZWRfaW5fcGxhY2U6CiAJCWxvY2tfcmVjX3N0b3JlX29uX3BhZ2VfaW5maW11bShibG9jaywg cmVjKTsKIAkJcGFnZV9jdXJfZGVsZXRlX3JlYygmcGFnZV9jdXIsIGluZGV4LCBvZmZzZXRzLCBt dHIpOwogCQlwYWdlX2N1cl9tb3ZlX3RvX3ByZXYoJnBhZ2VfY3VyKTsKLQkJbWVtX2hlYXBfZnJl ZShoZWFwKTsKIAotCQlpYnVmX2luc2VydF90b19pbmRleF9wYWdlX2xvdyhlbnRyeSwgYmxvY2ss IGluZGV4LCBtdHIsCisJCWlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KGVudHJ5LCBibG9j aywgaW5kZXgsCisJCQkJCSAgICAgICZvZmZzZXRzLCBoZWFwLCBtdHIsCiAJCQkJCSAgICAgICZw YWdlX2N1cik7CiAJCWxvY2tfcmVjX3Jlc3RvcmVfZnJvbV9wYWdlX2luZmltdW0oYmxvY2ssIHJl YywgYmxvY2spOwogCX0gZWxzZSB7Ci0JCWlidWZfaW5zZXJ0X3RvX2luZGV4X3BhZ2VfbG93KGVu dHJ5LCBibG9jaywgaW5kZXgsIG10ciwKKwkJb2Zmc2V0cyA9IE5VTEw7CisJCWlidWZfaW5zZXJ0 X3RvX2luZGV4X3BhZ2VfbG93KGVudHJ5LCBibG9jaywgaW5kZXgsCisJCQkJCSAgICAgICZvZmZz ZXRzLCBoZWFwLCBtdHIsCiAJCQkJCSAgICAgICZwYWdlX2N1cik7CiAJfQorCit1cGRhdGVkX2lu X3BsYWNlOgorCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA1MjIwODI4NDUta3A5YW9wYmwyZ2pxN2FuYQorKysgYi9zdG9yYWdlL2lubm9i YXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NTIzMDg0ODA0LWVzM2RtcG16YmE4c3k2aWMKQEAgLTIxNyw3ICsyMTcsOCBAQCBwYWdlX3QqCiBi dHJfcm9vdF9nZXQoCiAvKj09PT09PT09PSovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBp bjogaW5kZXggdHJlZSAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJbXRyX3Qq CQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8vKioKIEdldHMgdGhlIGhlaWdodCBvZiB0aGUgQi10cmVlICh0aGUgbGV2ZWwgb2YgdGhlIHJv b3QsIHdoZW4gdGhlIGxlYWYKIGxldmVsIGlzIGFzc3VtZWQgdG8gYmUgMCkuIFRoZSBjYWxsZXIg bXVzdCBob2xkIGFuIFMgb3IgWCBsYXRjaCBvbgpAQCAtMjkwLDcgKzI5MSw4IEBAIFVOSVZfSU5M SU5FCiBpbmRleF9pZF90CiBidHJfcGFnZV9nZXRfaW5kZXhfaWQoCiAvKj09PT09PT09PT09PT09 PT09PSovCi0JY29uc3QgcGFnZV90KglwYWdlKTsJLyohPCBpbjogaW5kZXggcGFnZSAqLworCWNv bnN0IHBhZ2VfdCoJcGFnZSkJLyohPCBpbjogaW5kZXggcGFnZSAqLworCV9fYXR0cmlidXRlX18o KG5vbm51bGwsIHB1cmUsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogI2lmbmRlZiBVTklWX0hPVEJB Q0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgogR2V0cyB0aGUgbm9kZSBsZXZlbCBmaWVsZCBpbiBhbiBpbmRleCBwYWdlLgpA QCAtMjk5LDE2ICszMDEsOSBAQCBVTklWX0lOTElORQogdWxpbnQKIGJ0cl9wYWdlX2dldF9sZXZl bF9sb3coCiAvKj09PT09PT09PT09PT09PT09PT0qLwotCWNvbnN0IHBhZ2VfdCoJcGFnZSk7CS8q ITwgaW46IGluZGV4IHBhZ2UgKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKLUdldHMgdGhlIG5vZGUgbGV2ZWwgZmllbGQgaW4g YW4gaW5kZXggcGFnZS4KLUByZXR1cm4JbGV2ZWwsIGxlYWYgbGV2ZWwgPT0gMCAqLwotVU5JVl9J TkxJTkUKLXVsaW50Ci1idHJfcGFnZV9nZXRfbGV2ZWwoCi0vKj09PT09PT09PT09PT09PSovCi0J Y29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBpbmRleCBwYWdlICovCi0JbXRyX3QqCQltdHIp OwkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIGhhbmRsZSAqLworCWNvbnN0IHBhZ2VfdCoJcGFn ZSkJLyohPCBpbjogaW5kZXggcGFnZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHB1cmUs IHdhcm5fdW51c2VkX3Jlc3VsdCkpOworI2RlZmluZSBidHJfcGFnZV9nZXRfbGV2ZWwocGFnZSwg bXRyKSBidHJfcGFnZV9nZXRfbGV2ZWxfbG93KHBhZ2UpCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSBuZXh0IGlu ZGV4IHBhZ2UgbnVtYmVyLgogQHJldHVybgluZXh0IHBhZ2UgbnVtYmVyICovCkBAIC0zMTcsNyAr MzEyLDggQEAgdWxpbnQKIGJ0cl9wYWdlX2dldF9uZXh0KAogLyo9PT09PT09PT09PT09PSovCiAJ Y29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBpbmRleCBwYWdlICovCi0JbXRyX3QqCQltdHIp OwkvKiE8IGluOiBtaW5pLXRyYW5zYWN0aW9uIGhhbmRsZSAqLworCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtaW5pLXRyYW5zYWN0aW9uIGhhbmRsZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGws IHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgcHJldmlvdXMgaW5kZXggcGFn ZSBudW1iZXIuCiBAcmV0dXJuCXByZXYgcGFnZSBudW1iZXIgKi8KQEAgLTMyNiw3ICszMjIsOCBA QCB1bGludAogYnRyX3BhZ2VfZ2V0X3ByZXYoCiAvKj09PT09PT09PT09PT09Ki8KIAljb25zdCBw YWdlX3QqCXBhZ2UsCS8qITwgaW46IGluZGV4IHBhZ2UgKi8KLQltdHJfdCoJCW10cik7CS8qITwg aW46IG1pbmktdHJhbnNhY3Rpb24gaGFuZGxlICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG1p bmktdHJhbnNhY3Rpb24gaGFuZGxlICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91 bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgcG9pbnRlciB0byB0aGUgcHJldmlvdXMg dXNlciByZWNvcmQgaW4gdGhlIHRyZWUuIEl0IGlzIGFzc3VtZWQKIHRoYXQgdGhlIGNhbGxlciBo YXMgYXBwcm9wcmlhdGUgbGF0Y2hlcyBvbiB0aGUgcGFnZSBhbmQgaXRzIG5laWdoYm9yLgpAQCAt MzM2LDggKzMzMyw5IEBAIHJlY190KgogYnRyX2dldF9wcmV2X3VzZXJfcmVjKAogLyo9PT09PT09 PT09PT09PT09PT0qLwogCXJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCBvbiBsZWFmIGxldmVs ICovCi0JbXRyX3QqCW10cik7CS8qITwgaW46IG10ciBob2xkaW5nIGEgbGF0Y2ggb24gdGhlIHBh Z2UsIGFuZCBpZgorCW10cl90KgltdHIpCS8qITwgaW46IG10ciBob2xkaW5nIGEgbGF0Y2ggb24g dGhlIHBhZ2UsIGFuZCBpZgogCQkJbmVlZGVkLCBhbHNvIHRvIHRoZSBwcmV2aW91cyBwYWdlICov CisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIEdldHMgcG9pbnRlciB0byB0aGUgbmV4dCB1c2VyIHJlY29yZCBpbiB0aGUgdHJlZS4gSXQg aXMgYXNzdW1lZAogdGhhdCB0aGUgY2FsbGVyIGhhcyBhcHByb3ByaWF0ZSBsYXRjaGVzIG9uIHRo ZSBwYWdlIGFuZCBpdHMgbmVpZ2hib3IuCkBAIC0zNDcsOCArMzQ1LDkgQEAgcmVjX3QqCiBidHJf Z2V0X25leHRfdXNlcl9yZWMoCiAvKj09PT09PT09PT09PT09PT09PSovCiAJcmVjX3QqCXJlYywJ LyohPCBpbjogcmVjb3JkIG9uIGxlYWYgbGV2ZWwgKi8KLQltdHJfdCoJbXRyKTsJLyohPCBpbjog bXRyIGhvbGRpbmcgYSBsYXRjaCBvbiB0aGUgcGFnZSwgYW5kIGlmCisJbXRyX3QqCW10cikJLyoh PCBpbjogbXRyIGhvbGRpbmcgYSBsYXRjaCBvbiB0aGUgcGFnZSwgYW5kIGlmCiAJCQluZWVkZWQs IGFsc28gdG8gdGhlIG5leHQgcGFnZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5f dW51c2VkX3Jlc3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVsZWFzZXMgdGhlIGxhdGNoIG9uIGEgbGVh ZiBwYWdlIGFuZCBidWZmZXJ1bmZpeGVzIGl0LiAqLwogVU5JVl9JTkxJTkUKQEAgLTM1OCw3ICsz NTcsOCBAQCBidHJfbGVhZl9wYWdlX3JlbGVhc2UoCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkJLyoh PCBpbjogYnVmZmVyIGJsb2NrICovCiAJdWxpbnQJCWxhdGNoX21vZGUsCS8qITwgaW46IEJUUl9T RUFSQ0hfTEVBRiBvcgogCQkJCQlCVFJfTU9ESUZZX0xFQUYgKi8KLQltdHJfdCoJCW10cik7CQkv KiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10cikJCS8qITwgaW46IG10ciAqLworCV9fYXR0cmli dXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIGNoaWxkIG5vZGUgZmlsZSBh ZGRyZXNzIGluIGEgbm9kZSBwb2ludGVyLgogTk9URTogdGhlIG9mZnNldHMgYXJyYXkgbXVzdCBj b250YWluIGFsbCBvZmZzZXRzIGZvciB0aGUgcmVjb3JkIHNpbmNlCkBAIC0zNzEsNyArMzcxLDgg QEAgdWxpbnQKIGJ0cl9ub2RlX3B0cl9nZXRfY2hpbGRfcGFnZV9ubygKIC8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAljb25zdCByZWNfdCoJcmVjLAkvKiE8IGluOiBub2RlIHBvaW50 ZXIgcmVjb3JkICovCi0JY29uc3QgdWxpbnQqCW9mZnNldHMpOy8qITwgaW46IGFycmF5IHJldHVy bmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMpLyohPCBp bjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsLCBwdXJlLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDcmVhdGVz IHRoZSByb290IG5vZGUgZm9yIGEgbmV3IGluZGV4IHRyZWUuCiBAcmV0dXJuCXBhZ2UgbnVtYmVy IG9mIHRoZSBjcmVhdGVkIHJvb3QsIEZJTF9OVUxMIGlmIGRpZCBub3Qgc3VjY2VlZCAqLwpAQCAt Mzg1LDcgKzM4Niw4IEBAIGJ0cl9jcmVhdGUoCiAJCQkJb3IgMCBmb3IgdW5jb21wcmVzc2VkIHBh Z2VzICovCiAJaW5kZXhfaWRfdAlpbmRleF9pZCwvKiE8IGluOiBpbmRleCBpZCAqLwogCWRpY3Rf aW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4ICovCi0JbXRyX3QqCQltdHIpOwkvKiE8IGlu OiBtaW5pLXRyYW5zYWN0aW9uIGhhbmRsZSAqLworCW10cl90KgkJbXRyKQkvKiE8IGluOiBtaW5p LXRyYW5zYWN0aW9uIGhhbmRsZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBGcmVlcyBhIEItdHJlZSBleGNlcHQgdGhlIHJvb3QgcGFnZSwgd2hpY2ggTVVTVCBiZSBm cmVlZCBhZnRlciB0aGlzCiBieSBjYWxsaW5nIGJ0cl9mcmVlX3Jvb3QuICovCkBAIC00MDcsNyAr NDA5LDggQEAgYnRyX2ZyZWVfcm9vdCgKIAl1bGludAl6aXBfc2l6ZSwJLyohPCBpbjogY29tcHJl c3NlZCBwYWdlIHNpemUgaW4gYnl0ZXMKIAkJCQlvciAwIGZvciB1bmNvbXByZXNzZWQgcGFnZXMg Ki8KIAl1bGludAlyb290X3BhZ2Vfbm8sCS8qITwgaW46IHJvb3QgcGFnZSBudW1iZXIgKi8KLQlt dHJfdCoJbXRyKTsJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJbXRyX3QqCW10 cikJCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBNYWtlcyB0cmVlIG9uZSBsZXZlbCBoaWdoZXIgYnkgc3BsaXR0 aW5nIHRoZSByb290LCBhbmQgaW5zZXJ0cwogdGhlIHR1cGxlLiBJdCBpcyBhc3N1bWVkIHRoYXQg bXRyIGNvbnRhaW5zIGFuIHgtbGF0Y2ggb24gdGhlIHRyZWUuCkBAIC00MjQsOSArNDI3LDEyIEBA IGJ0cl9yb290X3JhaXNlX2FuZF9pbnNlcnQoCiAJCQkJb24gdGhlIHJvb3QgcGFnZTsgd2hlbiB0 aGUgZnVuY3Rpb24gcmV0dXJucywKIAkJCQl0aGUgY3Vyc29yIGlzIHBvc2l0aW9uZWQgb24gdGhl IHByZWRlY2Vzc29yCiAJCQkJb2YgdGhlIGluc2VydGVkIHJlY29yZCAqLworCXVsaW50KioJCW9m ZnNldHMsLyohPCBvdXQ6IG9mZnNldHMgb24gaW5zZXJ0ZWQgcmVjb3JkICovCisJbWVtX2hlYXBf dCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICov CiAJY29uc3QgZHR1cGxlX3QqCXR1cGxlLAkvKiE8IGluOiB0dXBsZSB0byBpbnNlcnQgKi8KIAl1 bGludAkJbl9leHQsCS8qITwgaW46IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5z ICovCi0JbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10cikJLyohPCBp bjogbXRyICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7 CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJlb3JnYW5pemVzIGFuIGluZGV4IHBhZ2UuCiBJTVBPUlRBTlQ6IGlmIGJ0 cl9wYWdlX3Jlb3JnYW5pemUoKSBpcyBpbnZva2VkIG9uIGEgY29tcHJlc3NlZCBsZWFmCkBAIC00 NDAsNyArNDQ2LDggQEAgYnRyX3BhZ2VfcmVvcmdhbml6ZSgKIC8qPT09PT09PT09PT09PT09PSov CiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBwYWdlIHRvIGJlIHJlb3JnYW5pemVkICov CiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8KLQlt dHJfdCoJCW10cik7CS8qITwgaW46IG10ciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIERlY2lkZXMgaWYgdGhl IHBhZ2Ugc2hvdWxkIGJlIHNwbGl0IGF0IHRoZSBjb252ZXJnZW5jZSBwb2ludCBvZgogaW5zZXJ0 cyBjb252ZXJnaW5nIHRvIGxlZnQuCkBAIC00NTAsOSArNDU3LDEwIEBAIGlib29sCiBidHJfcGFn ZV9nZXRfc3BsaXRfcmVjX3RvX2xlZnQoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PSov CiAJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBhdCB3aGljaCB0byBpbnNlcnQg Ki8KLQlyZWNfdCoqCQlzcGxpdF9yZWMpOy8qITwgb3V0OiBpZiBzcGxpdCByZWNvbW1lbmRlZCwK KwlyZWNfdCoqCQlzcGxpdF9yZWMpLyohPCBvdXQ6IGlmIHNwbGl0IHJlY29tbWVuZGVkLAogCQkJ CXRoZSBmaXJzdCByZWNvcmQgb24gdXBwZXIgaGFsZiBwYWdlLAogCQkJCW9yIE5VTEwgaWYgdHVw bGUgc2hvdWxkIGJlIGZpcnN0ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVz ZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIERlY2lkZXMgaWYgdGhlIHBhZ2Ugc2hvdWxkIGJlIHNw bGl0IGF0IHRoZSBjb252ZXJnZW5jZSBwb2ludCBvZgogaW5zZXJ0cyBjb252ZXJnaW5nIHRvIHJp Z2h0LgpAQCAtNDYyLDkgKzQ3MCwxMCBAQCBpYm9vbAogYnRyX3BhZ2VfZ2V0X3NwbGl0X3JlY190 b19yaWdodCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJYnRyX2N1cl90Kglj dXJzb3IsCS8qITwgaW46IGN1cnNvciBhdCB3aGljaCB0byBpbnNlcnQgKi8KLQlyZWNfdCoqCQlz cGxpdF9yZWMpOy8qITwgb3V0OiBpZiBzcGxpdCByZWNvbW1lbmRlZCwKKwlyZWNfdCoqCQlzcGxp dF9yZWMpLyohPCBvdXQ6IGlmIHNwbGl0IHJlY29tbWVuZGVkLAogCQkJCXRoZSBmaXJzdCByZWNv cmQgb24gdXBwZXIgaGFsZiBwYWdlLAogCQkJCW9yIE5VTEwgaWYgdHVwbGUgc2hvdWxkIGJlIGZp cnN0ICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIFNwbGl0cyBhbiBpbmRleCBwYWdlIHRvIGhhbHZlcyBhbmQgaW5zZXJ0cyB0aGUg dHVwbGUuIEl0IGlzIGFzc3VtZWQKIHRoYXQgbXRyIGhvbGRzIGFuIHgtbGF0Y2ggdG8gdGhlIGlu ZGV4IHRyZWUuIE5PVEU6IHRoZSB0cmVlIHgtbGF0Y2ggaXMKQEAgLTQ4Miw5ICs0OTEsMTIgQEAg YnRyX3BhZ2Vfc3BsaXRfYW5kX2luc2VydCgKIAlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjog Y3Vyc29yIGF0IHdoaWNoIHRvIGluc2VydDsgd2hlbiB0aGUKIAkJCQlmdW5jdGlvbiByZXR1cm5z LCB0aGUgY3Vyc29yIGlzIHBvc2l0aW9uZWQKIAkJCQlvbiB0aGUgcHJlZGVjZXNzb3Igb2YgdGhl IGluc2VydGVkIHJlY29yZCAqLworCXVsaW50KioJCW9mZnNldHMsLyohPCBvdXQ6IG9mZnNldHMg b24gaW5zZXJ0ZWQgcmVjb3JkICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBw b2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxl LAkvKiE8IGluOiB0dXBsZSB0byBpbnNlcnQgKi8KIAl1bGludAkJbl9leHQsCS8qITwgaW46IG51 bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCi0JbXRyX3QqCQltdHIpOwkvKiE8 IGluOiBtdHIgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEluc2VydHMgYSBkYXRhIHR1 cGxlIHRvIGEgdHJlZSBvbiBhIG5vbi1sZWFmIGxldmVsLiBJdCBpcyBhc3N1bWVkCiB0aGF0IG10 ciBob2xkcyBhbiB4LWxhdGNoIG9uIHRoZSB0cmVlLiAqLwpAQCAtNDk4LDcgKzUxMCw4IEBAIGJ0 cl9pbnNlcnRfb25fbm9uX2xlYWZfbGV2ZWxfZnVuYygKIAlkdHVwbGVfdCoJdHVwbGUsCS8qITwg aW46IHRoZSByZWNvcmQgdG8gYmUgaW5zZXJ0ZWQgKi8KIAljb25zdCBjaGFyKglmaWxlLAkvKiE8 IGluOiBmaWxlIG5hbWUgKi8KIAl1bGludAkJbGluZSwJLyohPCBpbjogbGluZSB3aGVyZSBjYWxs ZWQgKi8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciAqLworCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtdHIgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAjIGRlZmluZSBidHJfaW5z ZXJ0X29uX25vbl9sZWFmX2xldmVsKGYsaSxsLHQsbSkJCQlcCiAJYnRyX2luc2VydF9vbl9ub25f bGVhZl9sZXZlbF9mdW5jKGYsaSxsLHQsX19GSUxFX18sX19MSU5FX18sbSkKICNlbmRpZiAvKiAh VU5JVl9IT1RCQUNLVVAgKi8KQEAgLTUwOSw3ICs1MjIsOCBAQCB2b2lkCiBidHJfc2V0X21pbl9y ZWNfbWFyaygKIC8qPT09PT09PT09PT09PT09PT0qLwogCXJlY190KglyZWMsCS8qITwgaW4vb3V0 OiByZWNvcmQgKi8KLQltdHJfdCoJbXRyKTsJLyohPCBpbjogbXRyICovCisJbXRyX3QqCW10cikJ LyohPCBpbjogbXRyICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogI2lmbmRlZiBVTklW X0hPVEJBQ0tVUAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBEZWxldGVzIG9uIHRoZSB1cHBlciBsZXZlbCB0aGUgbm9k ZSBwb2ludGVyIHRvIGEgcGFnZS4gKi8KQEAgLTUxOSw3ICs1MzMsOCBAQCBidHJfbm9kZV9wdHJf ZGVsZXRlKAogLyo9PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8 IGluOiBpbmRleCB0cmVlICovCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBwYWdlIHdo b3NlIG5vZGUgcG9pbnRlciBpcyBkZWxldGVkICovCi0JbXRyX3QqCQltdHIpOwkvKiE8IGluOiBt dHIgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICovCisJX19hdHRyaWJ1dGVfXygobm9u bnVsbCkpOwogI2lmZGVmIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgdGhhdCB0aGUgbm9k ZSBwb2ludGVyIHRvIGEgcGFnZSBpcyBhcHByb3ByaWF0ZS4KQEAgLTUzMCw3ICs1NDUsOCBAQCBi dHJfY2hlY2tfbm9kZV9wdHIoCiAvKj09PT09PT09PT09PT09PSovCiAJZGljdF9pbmRleF90Kglp bmRleCwJLyohPCBpbjogaW5kZXggdHJlZSAqLwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBp bjogaW5kZXggcGFnZSAqLwotCW10cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJbXRyX3Qq CQltdHIpCS8qITwgaW46IG10ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51 c2VkX3Jlc3VsdCkpOwogI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogVHJpZXMg dG8gbWVyZ2UgdGhlIHBhZ2UgZmlyc3QgdG8gdGhlIGxlZnQgaW1tZWRpYXRlIGJyb3RoZXIgaWYg c3VjaCBhCkBAIC01NjQsNyArNTgwLDggQEAgYnRyX2Rpc2NhcmRfcGFnZSgKIC8qPT09PT09PT09 PT09PSovCiAJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBvbiB0aGUgcGFnZSB0 byBkaXNjYXJkOiBub3Qgb24KIAkJCQl0aGUgcm9vdCBwYWdlICovCi0JbXRyX3QqCQltdHIpOwkv KiE8IGluOiBtdHIgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICovCisJX19hdHRyaWJ1 dGVfXygobm9ubnVsbCkpOwogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBQYXJzZXMgdGhlIHJlZG8gbG9nIHJlY29yZCBmb3Igc2V0dGluZyBhbiBpbmRleCByZWNv cmQgYXMgdGhlIHByZWRlZmluZWQKQEAgLTU3OCw3ICs1OTUsOCBAQCBidHJfcGFyc2Vfc2V0X21p bl9yZWNfbWFyaygKIAlieXRlKgllbmRfcHRyLC8qITwgaW46IGJ1ZmZlciBlbmQgKi8KIAl1bGlu dAljb21wLAkvKiE8IGluOiBub256ZXJvPWNvbXBhY3QgcGFnZSBmb3JtYXQgKi8KIAlwYWdlX3Qq CXBhZ2UsCS8qITwgaW46IHBhZ2Ugb3IgTlVMTCAqLwotCW10cl90KgltdHIpOwkvKiE8IGluOiBt dHIgb3IgTlVMTCAqLworCW10cl90KgltdHIpCS8qITwgaW46IG10ciBvciBOVUxMICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCgxLDIpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFBhcnNlcyBhIHJlZG8gbG9nIHJlY29yZCBvZiByZW9yZ2FuaXppbmcgYSBwYWdlLgogQHJldHVy bgllbmQgb2YgbG9nIHJlY29yZCBvciBOVUxMICovCkBAIC01OTAsNyArNjA4LDggQEAgYnRyX3Bh cnNlX3BhZ2VfcmVvcmdhbml6ZSgKIAlieXRlKgkJZW5kX3B0ciwvKiE8IGluOiBidWZmZXIgZW5k ICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogcmVjb3JkIGRlc2NyaXB0b3IgKi8K IAlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW46IHBhZ2UgdG8gYmUgcmVvcmdhbml6ZWQsIG9y IE5VTEwgKi8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciBvciBOVUxMICovCisJbXRyX3Qq CQltdHIpCS8qITwgaW46IG10ciBvciBOVUxMICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgx LDIsMyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpOwogI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogR2V0cyB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIGEgQi10cmVlLgpAQCAtNjM2LDcg KzY1NSw4IEBAIGJ0cl9wYWdlX2ZyZWUoCiAvKj09PT09PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJ aW5kZXgsCS8qITwgaW46IGluZGV4IHRyZWUgKi8KIAlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwg aW46IGJsb2NrIHRvIGJlIGZyZWVkLCB4LWxhdGNoZWQgKi8KLQltdHJfdCoJCW10cik7CS8qITwg aW46IG10ciAqLworCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBGcmVlcyBhIGZpbGUgcGFnZSB1c2VkIGluIGFuIGlu ZGV4IHRyZWUuIENhbiBiZSB1c2VkIGFsc28gdG8gQkxPQgogZXh0ZXJuYWwgc3RvcmFnZSBwYWdl cywgYmVjYXVzZSB0aGUgcGFnZSBsZXZlbCAwIGNhbiBiZSBnaXZlbiBhcyBhbgpAQCAtNjQ4LDcg KzY2OCw4IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwg aW46IGluZGV4IHRyZWUgKi8KIAlidWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW46IGJsb2NrIHRv IGJlIGZyZWVkLCB4LWxhdGNoZWQgKi8KIAl1bGludAkJbGV2ZWwsCS8qITwgaW46IHBhZ2UgbGV2 ZWwgKi8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciAqLworCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtdHIgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAjaWZkZWYgVU5JVl9CVFJf UFJJTlQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogUHJpbnRzIHNpemUgaW5mbyBvZiBhIEItdHJlZS4gKi8KQEAgLTY1 Niw3ICs2NzcsOCBAQCBVTklWX0lOVEVSTgogdm9pZAogYnRyX3ByaW50X3NpemUoCiAvKj09PT09 PT09PT09Ki8KLQlkaWN0X2luZGV4X3QqCWluZGV4KTsJLyohPCBpbjogaW5kZXggdHJlZSAqLwor CWRpY3RfaW5kZXhfdCoJaW5kZXgpCS8qITwgaW46IGluZGV4IHRyZWUgKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBQcmludHMgZGlyZWN0b3JpZXMgYW5kIG90aGVy IGluZm8gb2YgYWxsIG5vZGVzIGluIHRoZSBpbmRleC4gKi8KIFVOSVZfSU5URVJOCkBAIC02NjQs OCArNjg2LDkgQEAgdm9pZAogYnRyX3ByaW50X2luZGV4KAogLyo9PT09PT09PT09PT0qLwogCWRp Y3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4ICovCi0JdWxpbnQJCXdpZHRoKTsJLyoh PCBpbjogcHJpbnQgdGhpcyBtYW55IGVudHJpZXMgZnJvbSBzdGFydAorCXVsaW50CQl3aWR0aCkJ LyohPCBpbjogcHJpbnQgdGhpcyBtYW55IGVudHJpZXMgZnJvbSBzdGFydAogCQkJCWFuZCBlbmQg Ki8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7CiAjZW5kaWYgLyogVU5JVl9CVFJfUFJJTlQg Ki8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCiBDaGVja3MgdGhlIHNpemUgYW5kIG51bWJlciBvZiBmaWVsZHMgaW4gYSBy ZWNvcmQgYmFzZWQgb24gdGhlIGRlZmluaXRpb24gb2YKQEAgLTY3Nyw5ICs3MDAsMTAgQEAgYnRy X2luZGV4X3JlY192YWxpZGF0ZSgKIC8qPT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgcmVj X3QqCQlyZWMsCQkvKiE8IGluOiBpbmRleCByZWNvcmQgKi8KIAljb25zdCBkaWN0X2luZGV4X3Qq CWluZGV4LAkJLyohPCBpbjogaW5kZXggKi8KLQlpYm9vbAkJCWR1bXBfb25fZXJyb3IpOwkvKiE8 IGluOiBUUlVFIGlmIHRoZSBmdW5jdGlvbgorCWlib29sCQkJZHVtcF9vbl9lcnJvcikJLyohPCBp bjogVFJVRSBpZiB0aGUgZnVuY3Rpb24KIAkJCQkJCXNob3VsZCBwcmludCBoZXggZHVtcCBvZiBy ZWNvcmQKIAkJCQkJCWFuZCBwYWdlIG9uIGVycm9yICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVs bCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVja3MgdGhlIGNvbnNpc3Rl bmN5IG9mIGFuIGluZGV4IHRyZWUuCiBAcmV0dXJuCVRSVUUgaWYgb2sgKi8KQEAgLTY4OCw3ICs3 MTIsOCBAQCBpYm9vbAogYnRyX3ZhbGlkYXRlX2luZGV4KAogLyo9PT09PT09PT09PT09PT0qLwog CWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4ICovCi0JdHJ4X3QqCQl0cngpOwkv KiE8IGluOiB0cmFuc2FjdGlvbiBvciBOVUxMICovCisJdHJ4X3QqCQl0cngpCS8qITwgaW46IHRy YW5zYWN0aW9uIG9yIE5VTEwgKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEpLCB3YXJuX3Vu dXNlZF9yZXN1bHQpKTsKIAogI2RlZmluZSBCVFJfTl9MRUFGX1BBR0VTCTEKICNkZWZpbmUgQlRS X1RPVEFMX1NJWkUJCTIKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvYnRyMGJ0ci5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaWMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjIwODI4NDUta3A5YW9wYmwyZ2px N2FuYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5pYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUyMzA4NDgwNC1lczNkbXBtemJhOHN5NmljCkBAIC0x LDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwg MjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K K0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCkBAIC0xMjYsMjIgKzEyNiw2IEBAIGJ0cl9wYWdlX2dldF9sZXZlbF9sb3coCiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKLUdldHMgdGhlIG5vZGUgbGV2ZWwgZmllbGQgaW4gYW4gaW5kZXggcGFnZS4KLUBy ZXR1cm4JbGV2ZWwsIGxlYWYgbGV2ZWwgPT0gMCAqLwotVU5JVl9JTkxJTkUKLXVsaW50Ci1idHJf cGFnZV9nZXRfbGV2ZWwoCi0vKj09PT09PT09PT09PT09PSovCi0JY29uc3QgcGFnZV90KglwYWdl LAkvKiE8IGluOiBpbmRleCBwYWdlICovCi0JbXRyX3QqCQltdHIgX19hdHRyaWJ1dGVfXygodW51 c2VkKSkpCi0JCQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiBoYW5kbGUgKi8KLXsKLQl1dF9h ZChwYWdlICYmIG10cik7Ci0KLQlyZXR1cm4oYnRyX3BhZ2VfZ2V0X2xldmVsX2xvdyhwYWdlKSk7 Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFNldHMgdGhlIG5vZGUgbGV2ZWwgZmllbGQgaW4gYW4gaW5kZXggcGFnZS4g Ki8KIFVOSVZfSU5MSU5FCiB2b2lkCkBAIC0yNzgsNiArMjYyLDcgQEAgYnRyX25vZGVfcHRyX2dl dF9jaGlsZF9wYWdlX25vKAogCQkJIiBpbiBhIG5vZGUgcHRyIHJlY29yZCBhdCBvZmZzZXQgJWx1 XG4iLAogCQkJKHVsb25nKSBwYWdlX29mZnNldChyZWMpKTsKIAkJYnVmX3BhZ2VfcHJpbnQocGFn ZV9hbGlnbihyZWMpLCAwLCAwKTsKKwkJdXRfYWQoMCk7CiAJfQogCiAJcmV0dXJuKHBhZ2Vfbm8p OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA1MjIwODI4NDUta3A5YW9wYmwyZ2pxN2FuYQorKysgYi9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwNTIzMDg0ODA0LWVzM2RtcG16YmE4c3k2aWMKQEAgLTIxMiw2ICsyMTIsOCBAQCBi dHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAogCQkJCXNwZWNpZmllZCAqLwogCWJ0cl9jdXJfdCoJ Y3Vyc29yLAkvKiE8IGluOiBjdXJzb3Igb24gcGFnZSBhZnRlciB3aGljaCB0byBpbnNlcnQ7CiAJ CQkJY3Vyc29yIHN0YXlzIHZhbGlkICovCisJdWxpbnQqKgkJb2Zmc2V0cywvKiE8IG91dDogb2Zm c2V0cyBvbiAqcmVjICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVy IHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICovCiAJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291 dDogZW50cnkgdG8gaW5zZXJ0ICovCiAJcmVjX3QqKgkJcmVjLAkvKiE8IG91dDogcG9pbnRlciB0 byBpbnNlcnRlZCByZWNvcmQgaWYKIAkJCQlzdWNjZWVkICovCkBAIC0yMjUsNyArMjI3LDcgQEAg YnRyX2N1cl9vcHRpbWlzdGljX2luc2VydCgKIAkJCQlpbmRleCBpbiBhIGNvbXByZXNzZWQgdGFi bGVzcGFjZSwgdGhlCiAJCQkJbXRyIG11c3QgYmUgY29tbWl0dGVkIGJlZm9yZSBsYXRjaGluZwog CQkJCWFueSBmdXJ0aGVyIHBhZ2VzICovCi0JX19hdHRyaWJ1dGVfXygobm9ubnVsbCgyLDMsNCw1 LDgpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDIsMyw0 LDUsNiw3LDEwKSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFBlcmZvcm1zIGFu IGluc2VydCBvbiBhIHBhZ2Ugb2YgYW4gaW5kZXggdHJlZS4gSXQgaXMgYXNzdW1lZCB0aGF0IG10 cgogaG9sZHMgYW4geC1sYXRjaCBvbiB0aGUgdHJlZSBhbmQgb24gdGhlIGN1cnNvciBwYWdlLiBJ ZiB0aGUgaW5zZXJ0IGlzCkBAIC0yNDQsNiArMjQ2LDggQEAgYnRyX2N1cl9wZXNzaW1pc3RpY19p bnNlcnQoCiAJCQkJaW5zZXJ0aW9uIHdpbGwgY2VydGFpbmx5IHN1Y2NlZWQgKi8KIAlidHJfY3Vy X3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIGFmdGVyIHdoaWNoIHRvIGluc2VydDsKIAkJCQlj dXJzb3Igc3RheXMgdmFsaWQgKi8KKwl1bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBvZmZzZXRz IG9uICpyZWMgKi8KKwltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50ZXIgdG8g bWVtb3J5IGhlYXAsIG9yIE5VTEwgKi8KIAlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiBl bnRyeSB0byBpbnNlcnQgKi8KIAlyZWNfdCoqCQlyZWMsCS8qITwgb3V0OiBwb2ludGVyIHRvIGlu c2VydGVkIHJlY29yZCBpZgogCQkJCXN1Y2NlZWQgKi8KQEAgLTI1Myw3ICsyNTcsNyBAQCBidHJf Y3VyX3Blc3NpbWlzdGljX2luc2VydCgKIAl1bGludAkJbl9leHQsCS8qITwgaW46IG51bWJlciBv ZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46 IHF1ZXJ5IHRocmVhZCBvciBOVUxMICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAqLwot CV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiwzLDQsNSw4KSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7 CisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgyLDMsNCw1LDYsNywxMCksIHdhcm5fdW51c2VkX3Jl c3VsdCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCiBTZWUgaWYgdGhlcmUgaXMgZW5vdWdoIHBsYWNlIGluIHRoZSBw YWdlIG1vZGlmaWNhdGlvbiBsb2cgdG8gbG9nCiBhbiB1cGRhdGUtaW4tcGxhY2UuCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmgnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMGN1ci5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTIwNTIyMDgyODQ1LWtwOWFvcGJsMmdqcTdhbmEKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MjA1MjMwODQ4MDQtZXMzZG1wbXpiYThzeTZpYwpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMDksIE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIw MTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAK IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTcwLDggKzE3 MCwxMSBAQCBwYWdlX2N1cl90dXBsZV9pbnNlcnQoCiAJcGFnZV9jdXJfdCoJY3Vyc29yLAkvKiE8 IGluL291dDogYSBwYWdlIGN1cnNvciAqLwogCWNvbnN0IGR0dXBsZV90Kgl0dXBsZSwJLyohPCBp bjogcG9pbnRlciB0byBhIGRhdGEgdHVwbGUgKi8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8 IGluOiByZWNvcmQgZGVzY3JpcHRvciAqLworCXVsaW50KioJCW9mZnNldHMsLyohPCBvdXQ6IG9m ZnNldHMgb24gKnJlYyAqLworCW1lbV9oZWFwX3QqKgloZWFwLAkvKiE8IGluL291dDogcG9pbnRl ciB0byBtZW1vcnkgaGVhcCwgb3IgTlVMTCAqLwogCXVsaW50CQluX2V4dCwJLyohPCBpbjogbnVt YmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8KLQltdHJfdCoJCW10cik7CS8qITwg aW46IG1pbmktdHJhbnNhY3Rpb24gaGFuZGxlLCBvciBOVUxMICovCisJbXRyX3QqCQltdHIpCS8q ITwgaW46IG1pbmktdHJhbnNhY3Rpb24gaGFuZGxlLCBvciBOVUxMICovCisJX19hdHRyaWJ1dGVf Xygobm9ubnVsbCgxLDIsMyw0LDUpLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKICNlbmRpZiAvKiAh VU5JVl9IT1RCQUNLVVAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIEluc2VydHMgYSByZWNvcmQgbmV4dCB0byBwYWdl IGN1cnNvci4gUmV0dXJucyBwb2ludGVyIHRvIGluc2VydGVkIHJlY29yZCBpZgoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMGN1ci5pYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTIwNTIyMDgyODQ1LWtwOWFvcGJsMmdqcTdhbmEKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3BhZ2UwY3VyLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTIwNTIzMDg0ODA0LWVzM2RtcG16YmE4c3k2aWMKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAy MDEyLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog CiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTI0NSwzMyAr MjQ1LDM2IEBAIHBhZ2VfY3VyX3R1cGxlX2luc2VydCgKIAlwYWdlX2N1cl90KgljdXJzb3IsCS8q ITwgaW4vb3V0OiBhIHBhZ2UgY3Vyc29yICovCiAJY29uc3QgZHR1cGxlX3QqCXR1cGxlLAkvKiE8 IGluOiBwb2ludGVyIHRvIGEgZGF0YSB0dXBsZSAqLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8q ITwgaW46IHJlY29yZCBkZXNjcmlwdG9yICovCisJdWxpbnQqKgkJb2Zmc2V0cywvKiE8IG91dDog b2Zmc2V0cyBvbiAqcmVjICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2lu dGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICovCiAJdWxpbnQJCW5fZXh0LAkvKiE8IGluOiBu dW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLwogCW10cl90KgkJbXRyKQkvKiE8 IGluOiBtaW5pLXRyYW5zYWN0aW9uIGhhbmRsZSwgb3IgTlVMTCAqLwogewotCW1lbV9oZWFwX3Qq CWhlYXA7Ci0JdWxpbnQqCQlvZmZzZXRzOwogCXVsaW50CQlzaXplCiAJCT0gcmVjX2dldF9jb252 ZXJ0ZWRfc2l6ZShpbmRleCwgdHVwbGUsIG5fZXh0KTsKIAlyZWNfdCoJCXJlYzsKIAotCWhlYXAg PSBtZW1faGVhcF9jcmVhdGUoc2l6ZQotCQkJICAgICAgICsgKDQgKyBSRUNfT0ZGU19IRUFERVJf U0laRQotCQkJCSAgKyBkdHVwbGVfZ2V0X25fZmllbGRzKHR1cGxlKSkKLQkJCSAgICAgICAqIHNp emVvZiAqb2Zmc2V0cyk7Ci0JcmVjID0gcmVjX2NvbnZlcnRfZHR1cGxlX3RvX3JlYygoYnl0ZSop IG1lbV9oZWFwX2FsbG9jKGhlYXAsIHNpemUpLAorCWlmICghKmhlYXApIHsKKwkJKmhlYXAgPSBt ZW1faGVhcF9jcmVhdGUoc2l6ZQorCQkJCQkrICg0ICsgUkVDX09GRlNfSEVBREVSX1NJWkUKKwkJ CQkJICAgKyBkdHVwbGVfZ2V0X25fZmllbGRzKHR1cGxlKSkKKwkJCQkJKiBzaXplb2YgKipvZmZz ZXRzKTsKKwl9CisKKwlyZWMgPSByZWNfY29udmVydF9kdHVwbGVfdG9fcmVjKChieXRlKikgbWVt X2hlYXBfYWxsb2MoKmhlYXAsIHNpemUpLAogCQkJCQlpbmRleCwgdHVwbGUsIG5fZXh0KTsKLQlv ZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIE5VTEwsIFVMSU5UX1VOREVGSU5F RCwgJmhlYXApOworCSpvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKAorCQlyZWMsIGluZGV4LCAq b2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCBoZWFwKTsKIAogCWlmIChidWZfYmxvY2tfZ2V0X3Bh Z2VfemlwKGN1cnNvci0+YmxvY2spKSB7CiAJCXJlYyA9IHBhZ2VfY3VyX2luc2VydF9yZWNfemlw KCZjdXJzb3ItPnJlYywgY3Vyc29yLT5ibG9jaywKLQkJCQkJICAgICAgaW5kZXgsIHJlYywgb2Zm c2V0cywgbXRyKTsKKwkJCQkJICAgICAgaW5kZXgsIHJlYywgKm9mZnNldHMsIG10cik7CiAJfSBl bHNlIHsKIAkJcmVjID0gcGFnZV9jdXJfaW5zZXJ0X3JlY19sb3coY3Vyc29yLT5yZWMsCi0JCQkJ CSAgICAgIGluZGV4LCByZWMsIG9mZnNldHMsIG10cik7CisJCQkJCSAgICAgIGluZGV4LCByZWMs ICpvZmZzZXRzLCBtdHIpOwogCX0KIAotCXV0X2FkKCFyZWMgfHwgIWNtcF9kdHVwbGVfcmVjKHR1 cGxlLCByZWMsIG9mZnNldHMpKTsKLQltZW1faGVhcF9mcmVlKGhlYXApOworCXV0X2FkKCFyZWMg fHwgIWNtcF9kdHVwbGVfcmVjKHR1cGxlLCByZWMsICpvZmZzZXRzKSk7CiAJcmV0dXJuKHJlYyk7 CiB9CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MGlucy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUyMjA4Mjg0NS1r cDlhb3BibDJnanE3YW5hCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuY2MJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjMwODQ4MDQtZXMzZG1wbXpiYThzeTZp YwpAQCAtMjM0LDE2ICsyMzQsMTYgQEAgcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5 KAogCQkJCWRlcGVuZGluZyBvbiB3aGV0aGVyIG10ciBob2xkcyBqdXN0IGEgbGVhZgogCQkJCWxh dGNoIG9yIGFsc28gYSB0cmVlIGxhdGNoICovCiAJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46 IEItdHJlZSBjdXJzb3IgKi8KKwl1bGludCoqCQlvZmZzZXRzLC8qITwgaW4vb3V0OiBvZmZzZXRz IG9uIGN1cnNvci0+cGFnZV9jdXIucmVjICovCisJbWVtX2hlYXBfdCoJaGVhcCwJLyohPCBpbi9v dXQ6IG1lbW9yeSBoZWFwICovCiAJY29uc3QgZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluOiBpbmRl eCBlbnRyeSB0byBpbnNlcnQgKi8KIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkgdGhy ZWFkICovCiAJbXRyX3QqCQltdHIpCS8qITwgaW46IG10cjsgbXVzdCBiZSBjb21taXR0ZWQgYmVm b3JlCiAJCQkJbGF0Y2hpbmcgYW55IGZ1cnRoZXIgcGFnZXMgKi8KIHsKIAliaWdfcmVjX3QqCWR1 bW15X2JpZ19yZWM7Ci0JbWVtX2hlYXBfdCoJaGVhcDsKIAl1cGRfdCoJCXVwZGF0ZTsKIAlyZWNf dCoJCXJlYzsKLQl1bGludCoJCW9mZnNldHM7CiAJZGJlcnJfdAkJZXJyOwogCiAJcmVjID0gYnRy X2N1cl9nZXRfcmVjKGN1cnNvcik7CkBAIC0yNTEsMjkgKzI1MSwyMyBAQCByb3dfaW5zX3NlY19p bmRleF9lbnRyeV9ieV9tb2RpZnkoCiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfY2x1c3QoY3Vyc29y LT5pbmRleCkpOwogCXV0X2FkKHJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywKIAkJCQkgICBkaWN0 X3RhYmxlX2lzX2NvbXAoY3Vyc29yLT5pbmRleC0+dGFibGUpKSk7CisJdXRfYWQocmVjX29mZnNf dmFsaWRhdGUocmVjLCBjdXJzb3ItPmluZGV4LCAqb2Zmc2V0cykpOwogCiAJLyogV2Uga25vdyB0 aGF0IGluIHRoZSBhbHBoYWJldGljYWwgb3JkZXJpbmcsIGVudHJ5IGFuZCByZWMgYXJlCiAJaWRl bnRpZmllZC4gQnV0IGluIHRoZWlyIGJpbmFyeSBmb3JtIHRoZXJlIG1heSBiZSBkaWZmZXJlbmNl cyBpZgogCXRoZXJlIGFyZSBjaGFyIGZpZWxkcyBpbiB0aGVtLiBUaGVyZWZvcmUgd2UgaGF2ZSB0 byBjYWxjdWxhdGUgdGhlCiAJZGlmZmVyZW5jZS4gKi8KIAotCWhlYXAgPSBtZW1faGVhcF9jcmVh dGUoCi0JCXNpemVvZih1cGRfdCkKLQkJKyBSRUNfT0ZGU19IRUFERVJfU0laRSAqIHNpemVvZigq b2Zmc2V0cykKLQkJKyBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KQotCQkqIChzaXplb2YodXBk X2ZpZWxkX3QpICsgc2l6ZW9mICpvZmZzZXRzKSk7Ci0Jb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0 cyhyZWMsIGN1cnNvci0+aW5kZXgsIE5VTEwsCi0JCQkJICBVTElOVF9VTkRFRklORUQsICZoZWFw KTsKIAl1cGRhdGUgPSByb3dfdXBkX2J1aWxkX3NlY19yZWNfZGlmZmVyZW5jZV9iaW5hcnkoCi0J CXJlYywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0cywgZW50cnksIGhlYXApOworCQlyZWMsIGN1cnNv ci0+aW5kZXgsICpvZmZzZXRzLCBlbnRyeSwgaGVhcCk7CiAJaWYgKG1vZGUgPT0gQlRSX01PRElG WV9MRUFGKSB7CiAJCS8qIFRyeSBhbiBvcHRpbWlzdGljIHVwZGF0aW5nIG9mIHRoZSByZWNvcmQs IGtlZXBpbmcgY2hhbmdlcwogCQl3aXRoaW4gdGhlIHBhZ2UgKi8KIAotCQkvKiBUT0RPOiBwYXNz IG9ubHkgb2Zmc2V0cywgbm8gJm9mZnNldHMsICZoZWFwICovCisJCS8qIFRPRE86IHBhc3Mgb25s eSAqb2Zmc2V0cyAqLwogCQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAogCQkJQlRS X0tFRVBfU1lTX0ZMQUcsIGN1cnNvciwKLQkJCSZvZmZzZXRzLCAmaGVhcCwgdXBkYXRlLCAwLCB0 aHIsCisJCQlvZmZzZXRzLCAmaGVhcCwgdXBkYXRlLCAwLCB0aHIsCiAJCQl0aHJfZ2V0X3RyeCh0 aHIpLT5pZCwgbXRyKTsKIAkJc3dpdGNoIChlcnIpIHsKIAkJY2FzZSBEQl9PVkVSRkxPVzoKQEAg LTI4NywxOSArMjgxLDE1IEBAIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgKIAkJ dXRfYShtb2RlID09IEJUUl9NT0RJRllfVFJFRSk7CiAJCWlmIChidWZfTFJVX2J1Zl9wb29sX3J1 bm5pbmdfb3V0KCkpIHsKIAotCQkJZXJyID0gREJfTE9DS19UQUJMRV9GVUxMOwotCi0JCQlnb3Rv IGZ1bmNfZXhpdDsKKwkJCXJldHVybihEQl9MT0NLX1RBQkxFX0ZVTEwpOwogCQl9CiAKIAkJZXJy ID0gYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAJCQlCVFJfS0VFUF9TWVNfRkxBRywgY3Vy c29yLAotCQkJJm9mZnNldHMsICZoZWFwLCAmZHVtbXlfYmlnX3JlYywgdXBkYXRlLCAwLCB0aHIs CisJCQlvZmZzZXRzLCAmaGVhcCwgJmR1bW15X2JpZ19yZWMsIHVwZGF0ZSwgMCwgdGhyLAogCQkJ dGhyX2dldF90cngodGhyKS0+aWQsIG10cik7CiAJCXV0X2FkKCFkdW1teV9iaWdfcmVjKTsKIAl9 Ci1mdW5jX2V4aXQ6Ci0JbWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCXJldHVybihlcnIpOwogfQpA QCAtMjI3Myw3ICsyMjYzLDggQEAgZXJyX2V4aXQ6CiAJCWlmIChtb2RlICE9IEJUUl9NT0RJRllf VFJFRSkgewogCQkJdXRfYWQobW9kZSA9PSBCVFJfTU9ESUZZX0xFQUYpOwogCQkJZXJyID0gYnRy X2N1cl9vcHRpbWlzdGljX2luc2VydCgKLQkJCQkwLCAmY3Vyc29yLCBlbnRyeSwgJmluc2VydF9y ZWMsICZiaWdfcmVjLAorCQkJCTAsICZjdXJzb3IsICZvZmZzZXRzLCAmaGVhcCwKKwkJCQllbnRy eSwgJmluc2VydF9yZWMsICZiaWdfcmVjLAogCQkJCW5fZXh0LCB0aHIsICZtdHIpOwogCQl9IGVs c2UgewogCQkJaWYgKGJ1Zl9MUlVfYnVmX3Bvb2xfcnVubmluZ19vdXQoKSkgewpAQCAtMjI4Miw3 ICsyMjczLDggQEAgZXJyX2V4aXQ6CiAJCQkJZ290byBlcnJfZXhpdDsKIAkJCX0KIAkJCWVyciA9 IGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KAotCQkJCTAsICZjdXJzb3IsIGVudHJ5LCAmaW5z ZXJ0X3JlYywgJmJpZ19yZWMsCisJCQkJMCwgJmN1cnNvciwgJm9mZnNldHMsICZoZWFwLAorCQkJ CWVudHJ5LCAmaW5zZXJ0X3JlYywgJmJpZ19yZWMsCiAJCQkJbl9leHQsIHRociwgJm10cik7CiAJ CX0KIApAQCAtMjMwMSw5ICsyMjkzLDEwIEBAIGVycl9leGl0OgogCQl9CiAJfQogCi0JaWYgKFVO SVZfTElLRUxZX05VTEwoaGVhcCkpIHsKKwlpZiAoaGVhcCkgewogCQltZW1faGVhcF9mcmVlKGhl YXApOwogCX0KKwogCXJldHVybihlcnIpOwogfQogCkBAIC0yMzIxLDYgKzIzMTQsNyBAQCByb3df aW5zX3NlY19pbmRleF9lbnRyeV9sb3coCiAJCQkJZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2Ugd2lz aCBvcHRpbWlzdGljIG9yCiAJCQkJcGVzc2ltaXN0aWMgZGVzY2VudCBkb3duIHRoZSBpbmRleCB0 cmVlICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogc2Vjb25kYXJ5IGluZGV4ICov CisJbWVtX2hlYXBfdCoJaGVhcCwJLyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFwICovCiAJZHR1cGxl X3QqCWVudHJ5LAkvKiE8IGluL291dDogaW5kZXggZW50cnkgdG8gaW5zZXJ0ICovCiAJcXVlX3Ro cl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewpAQCAtMjMyOSw2ICsyMzIzLDcg QEAgcm93X2luc19zZWNfaW5kZXhfZW50cnlfbG93KAogCWRiZXJyX3QJCWVycjsKIAl1bGludAkJ bl91bmlxdWU7CiAJbXRyX3QJCW10cjsKKwl1bGludCoJCW9mZnNldHMJPSBOVUxMOwogCiAJdXRf YWQoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAl1dF9hZCghZGljdF9pbmRleF9pc19v bmxpbmVfZGRsKGluZGV4KSk7CkBAIC0yNDAzLDE2ICsyMzk4LDIwIEBAIHJvd19pbnNfc2VjX2lu ZGV4X2VudHJ5X2xvdygKIAkJLyogVGhlcmUgaXMgYWxyZWFkeSBhbiBpbmRleCBlbnRyeSB3aXRo IGEgbG9uZyBlbm91Z2ggY29tbW9uCiAJCXByZWZpeCwgd2UgbXVzdCBjb252ZXJ0IHRoZSBpbnNl cnQgaW50byBhIG1vZGlmeSBvZiBhbgogCQlleGlzdGluZyByZWNvcmQgKi8KKwkJb2Zmc2V0cyA9 IHJlY19nZXRfb2Zmc2V0cygKKwkJCWJ0cl9jdXJfZ2V0X3JlYygmY3Vyc29yKSwgaW5kZXgsIG9m ZnNldHMsCisJCQlVTElOVF9VTkRFRklORUQsICZoZWFwKTsKIAogCQllcnIgPSByb3dfaW5zX3Nl Y19pbmRleF9lbnRyeV9ieV9tb2RpZnkoCi0JCQltb2RlLCAmY3Vyc29yLCBlbnRyeSwgdGhyLCAm bXRyKTsKKwkJCW1vZGUsICZjdXJzb3IsICZvZmZzZXRzLCBoZWFwLCBlbnRyeSwgdGhyLCAmbXRy KTsKIAl9IGVsc2UgewogCQlyZWNfdCoJCWluc2VydF9yZWM7CiAJCWJpZ19yZWNfdCoJYmlnX3Jl YzsKIAogCQlpZiAobW9kZSA9PSBCVFJfTU9ESUZZX0xFQUYpIHsKIAkJCWVyciA9IGJ0cl9jdXJf b3B0aW1pc3RpY19pbnNlcnQoCi0JCQkJMCwgJmN1cnNvciwgZW50cnksICZpbnNlcnRfcmVjLAor CQkJCTAsICZjdXJzb3IsICZvZmZzZXRzLCAmaGVhcCwKKwkJCQllbnRyeSwgJmluc2VydF9yZWMs CiAJCQkJJmJpZ19yZWMsIDAsIHRociwgJm10cik7CiAJCX0gZWxzZSB7CiAJCQl1dF9hZChtb2Rl ID09IEJUUl9NT0RJRllfVFJFRSk7CkBAIC0yNDIxLDcgKzI0MjAsOCBAQCByb3dfaW5zX3NlY19p bmRleF9lbnRyeV9sb3coCiAJCQkJZXJyID0gREJfTE9DS19UQUJMRV9GVUxMOwogCQkJfSBlbHNl IHsKIAkJCQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX2luc2VydCgKLQkJCQkJMCwgJmN1cnNv ciwgZW50cnksICZpbnNlcnRfcmVjLAorCQkJCQkwLCAmY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAs CisJCQkJCWVudHJ5LCAmaW5zZXJ0X3JlYywKIAkJCQkJJmJpZ19yZWMsIDAsIHRociwgJm10cik7 CiAJCQl9CiAJCX0KQEAgLTI1MzYsNyArMjUzNiw4IEBAIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5 KAogCWR0dXBsZV90KgllbnRyeSwJLyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5IHRvIGluc2VydCAq LwogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KIHsKLQlkYmVycl90 CWVycjsKKwlkYmVycl90CQllcnI7CisJbWVtX2hlYXBfdCoJaGVhcDsKIAogCWlmIChVVF9MSVNU X0dFVF9GSVJTVChpbmRleC0+dGFibGUtPmZvcmVpZ25fbGlzdCkpIHsKIAkJZXJyID0gcm93X2lu c19jaGVja19mb3JlaWduX2NvbnN0cmFpbnRzKGluZGV4LT50YWJsZSwgaW5kZXgsCkBAIC0yNTUy LDE4ICsyNTUzLDIzIEBAIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5KAogCQlyZXR1cm4oREJfU1VD Q0VTUyk7CiAJfQogCisJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDI0KTsKKwogCS8qIFRyeSBm aXJzdCBvcHRpbWlzdGljIGRlc2NlbnQgdG8gdGhlIEItdHJlZSAqLwogCi0JZXJyID0gcm93X2lu c19zZWNfaW5kZXhfZW50cnlfbG93KEJUUl9NT0RJRllfTEVBRiwgaW5kZXgsIGVudHJ5LCB0aHIp OwotCWlmIChlcnIgIT0gREJfRkFJTCkgeworCWVyciA9IHJvd19pbnNfc2VjX2luZGV4X2VudHJ5 X2xvdyhCVFJfTU9ESUZZX0xFQUYsIGluZGV4LCBoZWFwLAorCQkJCQkgIGVudHJ5LCB0aHIpOwor CWlmIChlcnIgPT0gREJfRkFJTCkgeworCQltZW1faGVhcF9lbXB0eShoZWFwKTsKIAotCQlyZXR1 cm4oZXJyKTsKLQl9CisJCS8qIFRyeSB0aGVuIHBlc3NpbWlzdGljIGRlc2NlbnQgdG8gdGhlIEIt dHJlZSAqLwogCi0JLyogVHJ5IHRoZW4gcGVzc2ltaXN0aWMgZGVzY2VudCB0byB0aGUgQi10cmVl ICovCisJCWVyciA9IHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2xvdygKKwkJCUJUUl9NT0RJRllf VFJFRSwgaW5kZXgsIGhlYXAsIGVudHJ5LCB0aHIpOworCX0KIAotCXJldHVybihyb3dfaW5zX3Nl Y19pbmRleF9lbnRyeV9sb3coCi0JCSAgICAgICBCVFJfTU9ESUZZX1RSRUUsIGluZGV4LCBlbnRy eSwgdGhyKSk7CisJbWVtX2hlYXBfZnJlZShoZWFwKTsKKwlyZXR1cm4oZXJyKTsKIH0KIAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9n LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwNTIyMDgyODQ1LWtwOWFvcGJsMmdqcTdhbmEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUyMzA4NDgwNC1lczNkbXBtemJhOHN5NmljCkBAIC0xMDUsMzIgKzEwNSwxMSBAQCBy b3dfbG9nX29ubGluZV9vcCgKIAkgICAgICA9PSAob3AgPT0gUk9XX09QX1BVUkdFKSk7CiAjZW5k aWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAKLSNpZmRlZiBVTklWX0RFQlVHCi0Jc3dpdGNoIChv cCkgewotCWNhc2UgUk9XX09QX0lOU0VSVDoKLQljYXNlIFJPV19PUF9ERUxFVEVfTUFSSzoKLQlj YXNlIFJPV19PUF9ERUxFVEVfVU5NQVJLOgotCWNhc2UgUk9XX09QX0RFTEVURV9QVVJHRToKLQkJ dXRfYWQodHJ4X2lkKTsKLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSBST1dfT1BfUFVSR0U6 Ci0JCWdvdG8gb3Bfb2s7Ci0JfQotb3Bfb2s6Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCWlm IChkaWN0X2luZGV4X2lzX2NvcnJ1cHRlZChpbmRleCkpIHsKIAkJcmV0dXJuOwogCX0KIAogCXV0 X2FkKGRpY3RfaW5kZXhfaXNfb25saW5lX2RkbChpbmRleCkpOwotCW11dGV4X2VudGVyKCZpbmRl eC0+b25saW5lX2xvZy0+bXV0ZXgpOwotCi0JaWYgKHRyeF9pZCA+IGluZGV4LT5vbmxpbmVfbG9n LT5tYXhfdHJ4KSB7Ci0JCWluZGV4LT5vbmxpbmVfbG9nLT5tYXhfdHJ4ID0gdHJ4X2lkOwotCX0K LQotCWxvZyA9IGluZGV4LT5vbmxpbmVfbG9nOwotCVVOSVZfTUVNX0lOVkFMSUQobG9nLT50YWls LmJ1Ziwgc2l6ZW9mIGxvZy0+dGFpbC5idWYpOwogCiAJLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0 aGUgcmVjb3JkLiBUaGlzIGRpZmZlcnMgZnJvbQogCXJvd19tZXJnZV9idWZfZW5jb2RlKCksIGJl Y2F1c2UgaGVyZSB3ZSBkbyBub3QgZW5jb2RlCkBAIC0xNTAsMTUgKzEyOSwzMyBAQCBvcF9vazoK IAljYXNlIFJPV19PUF9ERUxFVEVfTUFSSzoKIAljYXNlIFJPV19PUF9ERUxFVEVfVU5NQVJLOgog CWNhc2UgUk9XX09QX0RFTEVURV9QVVJHRToKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwkJdXRf YWQocndfbG9ja19vd24oZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksIFJXX0xPQ0tfU0hBUkVE KSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisJCXV0X2FkKHRyeF9pZCk7CiAJCW1y ZWNfc2l6ZSA9IFJPV19MT0dfSEVBREVSX1NJWkUgKyBEQVRBX1RSWF9JRF9MRU4KIAkJCSsgKGV4 dHJhX3NpemUgPj0gMHg4MCkgKyBzaXplOwotCQlicmVhazsKKwkJZ290byBvcF9vazsKIAljYXNl IFJPV19PUF9QVVJHRToKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwkJdXRfYWQocndfbG9ja19v d24oZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksIFJXX0xPQ0tfRVgpKTsKKyNlbmRpZiAvKiBV TklWX1NZTkNfREVCVUcgKi8KIAkJbXJlY19zaXplID0gUk9XX0xPR19IRUFERVJfU0laRQogCQkJ KyAoZXh0cmFfc2l6ZSA+PSAweDgwKSArIHNpemU7Ci0JCWJyZWFrOworCQlnb3RvIG9wX29rOwog CX0KIAorCXV0X2Vycm9yOworb3Bfb2s6CisJbG9nID0gaW5kZXgtPm9ubGluZV9sb2c7CisJbXV0 ZXhfZW50ZXIoJmxvZy0+bXV0ZXgpOworCisJaWYgKHRyeF9pZCA+IGxvZy0+bWF4X3RyeCkgewor CQlsb2ctPm1heF90cnggPSB0cnhfaWQ7CisJfQorCisJVU5JVl9NRU1fSU5WQUxJRChsb2ctPnRh aWwuYnVmLCBzaXplb2YgbG9nLT50YWlsLmJ1Zik7CisKIAl1dF9hZChsb2ctPnRhaWwuYnl0ZXMg PCBzcnZfc29ydF9idWZfc2l6ZSk7CiAJYXZhaWxfc2l6ZSA9IHNydl9zb3J0X2J1Zl9zaXplIC0g bG9nLT50YWlsLmJ5dGVzOwogCkBAIC0yMTUsNyArMjEyLDcgQEAgb3Bfb2s6CiAJCVVOSVZfTUVN X0FTU0VSVF9SVyhsb2ctPnRhaWwuYmxvY2ssIHNydl9zb3J0X2J1Zl9zaXplKTsKIAkJcmV0ID0g b3NfZmlsZV93cml0ZSgKIAkJCSIobW9kaWZpY2F0aW9uIGxvZykiLAotCQkJT1NfRklMRV9GUk9N X0ZEKGluZGV4LT5vbmxpbmVfbG9nLT5mZCksCisJCQlPU19GSUxFX0ZST01fRkQobG9nLT5mZCks CiAJCQlsb2ctPnRhaWwuYmxvY2ssIGJ5dGVfb2Zmc2V0LCBzcnZfc29ydF9idWZfc2l6ZSk7CiAJ CWxvZy0+dGFpbC5ibG9ja3MrKzsKIAkJaWYgKCFyZXQpIHsKQEAgLTIzNSw3ICsyMzIsNyBAQCB3 cml0ZV9mYWlsZWQ6CiAJfQogCiAJVU5JVl9NRU1fSU5WQUxJRChsb2ctPnRhaWwuYnVmLCBzaXpl b2YgbG9nLT50YWlsLmJ1Zik7Ci0JbXV0ZXhfZXhpdCgmaW5kZXgtPm9ubGluZV9sb2ctPm11dGV4 KTsKKwltdXRleF9leGl0KCZsb2ctPm11dGV4KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTU3Miw3ICs1NjksNyBA QCBpbnNlcnRfdGhlX3JlYzoKIAkJCQkJQlRSX05PX1VORE9fTE9HX0ZMQUcKIAkJCQkJfCBCVFJf Tk9fTE9DS0lOR19GTEFHCiAJCQkJCXwgQlRSX0NSRUFURV9GTEFHLAotCQkJCQkmY3Vyc29yLAor CQkJCQkmY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAsCiAJCQkJCWNvbnN0X2Nhc3Q8ZHR1cGxlX3Qq PihlbnRyeSksCiAJCQkJCSZyZWMsICZiaWdfcmVjLAogCQkJCQkwLCBOVUxMLCAmbXRyKTsKQEAg LTU5OSw3ICs1OTYsNyBAQCBpbnNlcnRfdGhlX3JlYzoKIAkJCQlCVFJfTk9fVU5ET19MT0dfRkxB RwogCQkJCXwgQlRSX05PX0xPQ0tJTkdfRkxBRwogCQkJCXwgQlRSX0NSRUFURV9GTEFHLAotCQkJ CSZjdXJzb3IsCisJCQkJJmN1cnNvciwgJm9mZnNldHMsICZoZWFwLAogCQkJCWNvbnN0X2Nhc3Q8 ZHR1cGxlX3QqPihlbnRyeSksCiAJCQkJJnJlYywgJmJpZ19yZWMsCiAJCQkJMCwgTlVMTCwgJm10 cik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG1lcmdlLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA1MjIwODI4NDUta3A5YW9wYmwyZ2pxN2FuYQorKysgYi9zdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMjA1MjMwODQ4MDQtZXMzZG1wbXpiYThzeTZpYwpAQCAtMjE1NSw2ICsyMTU1LDcgQEAg cm93X21lcmdlX2luc2VydF9pbmRleF90dXBsZXMoCiAJY29uc3QgYnl0ZSoJCWI7CiAJbWVtX2hl YXBfdCoJCWhlYXA7CiAJbWVtX2hlYXBfdCoJCXR1cGxlX2hlYXA7CisJbWVtX2hlYXBfdCoJCWlu c19oZWFwOwogCWRiZXJyX3QJCQllcnJvciA9IERCX1NVQ0NFU1M7CiAJdWxpbnQJCQlmb2ZmcyA9 IDA7CiAJdWxpbnQqCQkJb2Zmc2V0czsKQEAgLTIxNzAsNiArMjE3MSw3IEBAIHJvd19tZXJnZV9p bnNlcnRfaW5kZXhfdHVwbGVzKAogCQl1bGludCBpCT0gMSArIFJFQ19PRkZTX0hFQURFUl9TSVpF CiAJCQkrIGRpY3RfaW5kZXhfZ2V0X25fZmllbGRzKGluZGV4KTsKIAkJaGVhcCA9IG1lbV9oZWFw X2NyZWF0ZShzaXplb2YgKmJ1ZiArIGkgKiBzaXplb2YgKm9mZnNldHMpOworCQlpbnNfaGVhcCA9 IG1lbV9oZWFwX2NyZWF0ZShzaXplb2YgKmJ1ZiArIGkgKiBzaXplb2YgKm9mZnNldHMpOwogCQlv ZmZzZXRzID0gc3RhdGljX2Nhc3Q8dWxpbnQqPigKIAkJCW1lbV9oZWFwX2FsbG9jKGhlYXAsIGkg KiBzaXplb2YgKm9mZnNldHMpKTsKIAkJb2Zmc2V0c1swXSA9IGk7CkBAIC0yMjQ2LDEyICsyMjQ4 LDEzIEBAIHJvd19tZXJnZV9pbnNlcnRfaW5kZXhfdHVwbGVzKAogCQkJCSAgICAgID4gMCk7CiAJ CQl9CiAjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCQkJdWxpbnQqCWluc19vZmZzZXRzID0gTlVM TDsKIAogCQkJZXJyb3IgPSBidHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAogCQkJCUJUUl9OT19V TkRPX0xPR19GTEFHIHwgQlRSX05PX0xPQ0tJTkdfRkxBRwogCQkJCXwgQlRSX0tFRVBfU1lTX0ZM QUcgfCBCVFJfQ1JFQVRFX0ZMQUcsCi0JCQkJJmN1cnNvciwgZHR1cGxlLCAmcmVjLCAmYmlnX3Jl YywKLQkJCQkwLCBOVUxMLCAmbXRyKTsKKwkJCQkmY3Vyc29yLCAmaW5zX29mZnNldHMsICZpbnNf aGVhcCwKKwkJCQlkdHVwbGUsICZyZWMsICZiaWdfcmVjLCAwLCBOVUxMLCAmbXRyKTsKIAogCQkJ aWYgKGVycm9yID09IERCX0ZBSUwpIHsKIAkJCQl1dF9hZCghYmlnX3JlYyk7CkBAIC0yMjcwLDgg KzIyNzMsOCBAQCByb3dfbWVyZ2VfaW5zZXJ0X2luZGV4X3R1cGxlcygKIAkJCQkJQlRSX05PX1VO RE9fTE9HX0ZMQUcKIAkJCQkJfCBCVFJfTk9fTE9DS0lOR19GTEFHCiAJCQkJCXwgQlRSX0tFRVBf U1lTX0ZMQUcgfCBCVFJfQ1JFQVRFX0ZMQUcsCi0JCQkJCSZjdXJzb3IsIGR0dXBsZSwgJnJlYywg JmJpZ19yZWMsCi0JCQkJCTAsIE5VTEwsICZtdHIpOworCQkJCQkmY3Vyc29yLCAmaW5zX29mZnNl dHMsICZpbnNfaGVhcCwKKwkJCQkJZHR1cGxlLCAmcmVjLCAmYmlnX3JlYywgMCwgTlVMTCwgJm10 cik7CiAJCQl9CiAKIAkJCWlmICghZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKQEAgLTIy OTQsNyArMjI5Nyw4IEBAIHJvd19tZXJnZV9pbnNlcnRfaW5kZXhfdHVwbGVzKAogCQkJCXV0X2Fk KGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKIAkJCQl1dF9hZChlcnJvciA9PSBEQl9TVUND RVNTKTsKIAkJCQllcnJvciA9IHJvd19pbnNfaW5kZXhfZW50cnlfYmlnX3JlYygKLQkJCQkJZHR1 cGxlLCBiaWdfcmVjLCBvZmZzZXRzLCAmdHVwbGVfaGVhcCwKKwkJCQkJZHR1cGxlLCBiaWdfcmVj LAorCQkJCQlpbnNfb2Zmc2V0cywgJmluc19oZWFwLAogCQkJCQlpbmRleCwgTlVMTCwgX19GSUxF X18sIF9fTElORV9fKTsKIAkJCQlkdHVwbGVfY29udmVydF9iYWNrX2JpZ19yZWMoCiAJCQkJCWlu ZGV4LCBkdHVwbGUsIGJpZ19yZWMpOwpAQCAtMjMwNSwxMSArMjMwOSwxMyBAQCByb3dfbWVyZ2Vf aW5zZXJ0X2luZGV4X3R1cGxlcygKIAkJCX0KIAogCQkJbWVtX2hlYXBfZW1wdHkodHVwbGVfaGVh cCk7CisJCQltZW1faGVhcF9lbXB0eShpbnNfaGVhcCk7CiAJCX0KIAl9CiAKIGVycl9leGl0Ogog CW1lbV9oZWFwX2ZyZWUodHVwbGVfaGVhcCk7CisJbWVtX2hlYXBfZnJlZShpbnNfaGVhcCk7CiAJ bWVtX2hlYXBfZnJlZShoZWFwKTsKIAogCXJldHVybihlcnJvcik7CgpObyBidW5kbGUgKHJlYXNv bjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==