From: marko.makela Date: June 2 2010 10:24am Subject: bzr commit into mysql-5.1-innodb branch (marko.makela:3494) Bug#53674 List-Archive: http://lists.mysql.com/commits/109922 X-Bug: 53674 Message-Id: <201006021024.o528BZhY030782@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0840591190==" --===============0840591190== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjEtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMTk0MC02MHgz MnhpaXZ0cWo5dmExCgogMzQ5NCBNYXJrbyBNw6RrZWzDpAkyMDEwLTA2LTAyCiAgICAgIEJ1ZyM1 MzY3NDogSW5ub0RCOiBFcnJvcjogdW5sb2NrIHJvdyBjb3VsZCBub3QgZmluZCBhIDQgbW9kZSBs b2NrIG9uIHRoZSByZWNvcmQKICAgICAgCiAgICAgIEluIHNlbWktY29uc2lzdGVudCByZWFkLCBv bmx5IHVubG9jayBmcmVzaGx5IGxvY2tlZCBub24tbWF0Y2hpbmcgcmVjb3Jkcy4KICAgICAgCiAg ICAgIGxvY2tfcmVjX2xvY2tfZmFzdCgpOiBSZXR1cm4gTE9DS19SRUNfU1VDQ0VTUywKICAgICAg TE9DS19SRUNfU1VDQ0VTU19DUkVBVEVELCBvciBMT0NLX1JFQ19GQUlMIGluc3RlYWQgb2YgVFJV RS9GQUxTRS4KICAgICAgCiAgICAgIGVudW0gZGJfZXJyOiBBZGQgREJfU1VDQ0VTU19MT0NLRURf UkVDIGZvciBpbmRpY2F0aW5nIGEgc3VjY2Vzc2Z1bAogICAgICBvcGVyYXRpb24gd2hlcmUgYSBy ZWNvcmQgbG9jayB3YXMgY3JlYXRlZC4KICAgICAgCiAgICAgIGxvY2tfc2VjX3JlY19yZWFkX2No ZWNrX2FuZF9sb2NrKCksCiAgICAgIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2so KSwgbG9ja19yZWNfZW5xdWV1ZV93YWl0aW5nKCksCiAgICAgIGxvY2tfcmVjX2xvY2tfc2xvdygp LCBsb2NrX3JlY19sb2NrKCksIHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygpLAogICAgICBy b3dfaW5zX3NldF9leGNsdXNpdmVfcmVjX2xvY2soKSwgc2VsX3NldF9yZWNfbG9jaygpLAogICAg ICByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKCk6IFJldHVybiBEQl9TVUNDRVNTX0xP Q0tFRF9SRUMgaWYgYQogICAgICBuZXcgcmVjb3JkIGxvY2sgd2FzIGNyZWF0ZWQuIEFkanVzdCBj YWxsZXJzLgogICAgICAKICAgICAgcm93X3VubG9ja19mb3JfbXlzcWwoKTogQ29ycmVjdCB0aGUg ZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4KICAgICAgCiAgICAgIHJvd19wcmVidWlsdF90OjpuZXdf cmVjX2xvY2tzOiBDb3JyZWN0IHRoZSBkb2N1bWVudGF0aW9uLgoKICAgIG1vZGlmaWVkOgogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGIwZXJyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2xvY2swbG9jay5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cw bXlzcWwuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazBsb2NrLmMKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBteXNxbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RiMGVyci5oJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGIwZXJyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMDA2MDIxMDE5NDAtNjB4MzJ4aWl2dHFqOXZhMQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvZGIwZXJyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDI0 MzEtc3JncXh1NmtwdTJvNHZtYwpAQCAtMTAsNiArMTAsOCBAQCBDcmVhdGVkIDUvMjQvMTk5NiBI ZWlra2kgVHV1cmkKICNkZWZpbmUgZGIwZXJyX2gKIAogCisjZGVmaW5lIERCX1NVQ0NFU1NfTE9D S0VEX1JFQwk5CS8qIGxpa2UgREJfU1VDQ0VTUywgYnV0IGEgbmV3CisJCQkJCWV4cGxpY2l0IHJl Y29yZCBsb2NrIHdhcyBjcmVhdGVkICovCiAjZGVmaW5lIERCX1NVQ0NFU1MJCTEwCiAKIC8qIFRo ZSBmb2xsb3dpbmcgYXJlIGVycm9yIGNvZGVzICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2xvY2swbG9jay5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvbG9jazBsb2NrLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIx MDE5NDAtNjB4MzJ4aWl2dHFqOXZhMQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9j azBsb2NrLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDI0MzEtc3Jn cXh1NmtwdTJvNHZtYwpAQCAtMjkyLDE0ICsyOTIsMTUgQEAgbG9ja19zZWNfcmVjX21vZGlmeV9j aGVja19hbmRfbG9jaygKIAlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiBpbjogc2Vjb25kYXJ5IGlu ZGV4ICovCiAJcXVlX3Rocl90Kgl0aHIpOwkvKiBpbjogcXVlcnkgdGhyZWFkICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgotTGlrZSB0aGUgY291bnRlcnBhcnQgZm9yIGEgY2x1c3RlcmVkIGluZGV4IGJl bG93LCBidXQgbm93IHdlIHJlYWQgYQorTGlrZSBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2Fu ZF9sb2NrKCksIGJ1dCByZWFkcyBhCiBzZWNvbmRhcnkgaW5kZXggcmVjb3JkLiAqLwogCiB1bGlu dAogbG9ja19zZWNfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwKLQkJ CQlEQl9ERUFETE9DSywgb3IgREJfUVVFX1RIUl9TVVNQRU5ERUQgKi8KKwkJCQkvKiBvdXQ6IERC X1NVQ0NFU1MsIERCX1NVQ0NFU1NfTE9DS0VEX1JFQywKKwkJCQlEQl9MT0NLX1dBSVQsIERCX0RF QURMT0NLLAorCQkJCW9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCiAJdWxpbnQJCWZsYWdzLAkv KiBpbjogaWYgQlRSX05PX0xPQ0tJTkdfRkxBRyBiaXQgaXMgc2V0LAogCQkJCWRvZXMgbm90aGlu ZyAqLwogCXJlY190KgkJcmVjLAkvKiBpbjogdXNlciByZWNvcmQgb3IgcGFnZSBzdXByZW11bSBy ZWNvcmQKQEAgLTMyNCw4ICszMjUsOSBAQCBsb2NrIG9uIHRoZSByZWNvcmQuICovCiB1bGludAog bG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0J CQkJREJfREVBRExPQ0ssIG9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCisJCQkJLyogb3V0OiBE Ql9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9E RUFETE9DSywKKwkJCQlvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJ LyogaW46IGlmIEJUUl9OT19MT0NLSU5HX0ZMQUcgYml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhp bmcgKi8KIAlyZWNfdCoJCXJlYywJLyogaW46IHVzZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0g cmVjb3JkCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBt eXNxbC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDE5NDAtNjB4MzJ4aWl2dHFqOXZhMQor KysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG15c3FsLmgJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMDA2MDIxMDI0MzEtc3JncXh1NmtwdTJvNHZtYwpAQCAtMjQ2LDIy ICsyNDYsMjAgQEAgcm93X3VwZGF0ZV9mb3JfbXlzcWwoCiAJcm93X3ByZWJ1aWx0X3QqCXByZWJ1 aWx0KTsJLyogaW46IHByZWJ1aWx0IHN0cnVjdCBpbiBNeVNRTAogCQkJCQloYW5kbGUgKi8KIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCi1UaGlzIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcnZfbG9ja3NfdW5z YWZlX2Zvcl9iaW5sb2cgaXMgVFJVRSBvcgotc2Vzc2lvbiBpcyB1c2luZyBhIFJFQUQgQ09NTUlU VEVEIGlzb2xhdGlvbiBsZXZlbC4gQmVmb3JlCi1jYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2UgbXVz dCB1c2UgdHJ4X3Jlc2V0X25ld19yZWNfbG9ja19pbmZvKCkgYW5kCi10cnhfcmVnaXN0ZXJfbmV3 X3JlY19sb2NrKCkgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldyByZWNvcmQgbG9j a3MKLXJlYWxseSB3ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3bHkgc2V0IGxv Y2sgdW5kZXIgcHJlYnVpbHQtPnBjdXIsCi1hbmQgYWxzbyB1bmRlciBwcmVidWlsdC0+Y2x1c3Rf cGN1ci4gQ3VycmVudGx5LCB0aGlzIGlzIG9ubHkgdXNlZCBhbmQgdGVzdGVkCi1pbiB0aGUgY2Fz ZSBvZiBhbiBVUERBVEUgb3IgYSBERUxFVEUgc3RhdGVtZW50LCB3aGVyZSB0aGUgcm93IGxvY2sg aXMgb2YgdGhlCi1MT0NLX1ggdHlwZS4KLVRodXMsIHRoaXMgaW1wbGVtZW50cyBhICdtaW5pLXJv bGxiYWNrJyB0aGF0IHJlbGVhc2VzIHRoZSBsYXRlc3QgcmVjb3JkCi1sb2NrcyB3ZSBzZXQuICov CitUaGlzIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cg aXMgVFJVRSBvciB0aGlzCitzZXNzaW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRURUQgb3IgUkVB RCBVTkNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuCitCZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0 aW9uIHJvd19zZWFyY2hfZm9yX215c3FsKCkgbXVzdCBoYXZlCitpbml0aWFsaXplZCBwcmVidWls dC0+bmV3X3JlY19sb2NrcyB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2ggbmV3CityZWNv cmQgbG9ja3MgcmVhbGx5IHdlcmUgc2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBuZXdseSBz ZXQKK2NsdXN0ZXJlZCBpbmRleCByZWNvcmQgbG9jayB1bmRlciBwcmVidWlsdC0+cGN1ciBvcgor cHJlYnVpbHQtPmNsdXN0X3BjdXIuICBUaHVzLCB0aGlzIGltcGxlbWVudHMgYSAnbWluaS1yb2xs YmFjaycgdGhhdAorcmVsZWFzZXMgdGhlIGxhdGVzdCBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIGxv Y2sgd2Ugc2V0LiAqLwogCiBpbnQKIHJvd191bmxvY2tfZm9yX215c3FsKAogLyo9PT09PT09PT09 PT09PT09PSovCiAJCQkJCS8qIG91dDogZXJyb3IgY29kZSBvciBEQl9TVUNDRVNTICovCi0Jcm93 X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiBpbjogcHJlYnVpbHQgc3RydWN0IGluIE15U1FMCisJ cm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiBpbi9vdXQ6IHByZWJ1aWx0IHN0cnVjdCBpbiBN eVNRTAogCQkJCQloYW5kbGUgKi8KIAlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVjcyk7LyogVFJV RSBpZiBjYWxsZWQgc28gdGhhdCB3ZSBoYXZlCiAJCQkJCXRoZSBsYXRjaGVzIG9uIHRoZSByZWNv cmRzIHVuZGVyIHBjdXIKQEAgLTY2MCwxOCArNjU4LDE3IEBAIHN0cnVjdCByb3dfcHJlYnVpbHRf c3RydWN0IHsKIAl1bGludAkJbmV3X3JlY19sb2NrczsJLyogbm9ybWFsbHkgMDsgaWYKIAkJCQkJ c3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlubG9nIGlzCiAJCQkJCVRSVUUgb3Igc2Vzc2lvbiBpcyB1 c2luZyBSRUFECi0JCQkJCUNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwsIGluIGEKLQkJCQkJY3Vy c29yIHNlYXJjaCwgaWYgd2Ugc2V0IGEgbmV3Ci0JCQkJCXJlY29yZCBsb2NrIG9uIGFuIGluZGV4 LCB0aGlzIGlzCi0JCQkJCWluY3JlbWVudGVkOyB0aGlzIGlzIHVzZWQgaW4KLQkJCQkJcmVsZWFz aW5nIHRoZSBsb2NrcyB1bmRlciB0aGUKLQkJCQkJY3Vyc29ycyBpZiB3ZSBhcmUgcGVyZm9ybWlu ZyBhbgotCQkJCQlVUERBVEUgYW5kIHdlIGRldGVybWluZSBhZnRlcgotCQkJCQlyZXRyaWV2aW5n IHRoZSByb3cgdGhhdCBpdCBkb2VzCi0JCQkJCW5vdCBuZWVkIHRvIGJlIGxvY2tlZDsgdGh1cywK LQkJCQkJdGhlc2UgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IGEKLQkJCQkJJ21pbmktcm9sbGJh Y2snIHRoYXQgcmVsZWFzZXMKLQkJCQkJdGhlIGxhdGVzdCByZWNvcmQgbG9ja3MgKi8KKwkJCQkJ Q09NTUlUVEVEIG9yIFJFQUQgVU5DT01NSVRURUQKKwkJCQkJaXNvbGF0aW9uIGxldmVsLCBzZXQg aW4KKwkJCQkJcm93X3NlYXJjaF9mb3JfbXlzcWwoKSBpZiB3ZSBzZXQgYSBuZXcKKwkJCQkJcmVj b3JkIGxvY2sgb24gdGhlIHNlY29uZGFyeQorCQkJCQlvciBjbHVzdGVyZWQgaW5kZXg7IHRoaXMg aXMKKwkJCQkJdXNlZCBpbiByb3dfdW5sb2NrX2Zvcl9teXNxbCgpCisJCQkJCXdoZW4gcmVsZWFz aW5nIHRoZSBsb2NrIHVuZGVyCisJCQkJCXRoZSBjdXJzb3IgaWYgd2UgZGV0ZXJtaW5lCisJCQkJ CWFmdGVyIHJldHJpZXZpbmcgdGhlIHJvdyB0aGF0CisJCQkJCWl0IGRvZXMgbm90IG5lZWQgdG8g YmUgbG9ja2VkCisJCQkJCSgnbWluaS1yb2xsYmFjaycpICovCiAJdWxpbnQJCW15c3FsX3ByZWZp eF9sZW47LyogYnl0ZSBvZmZzZXQgb2YgdGhlIGVuZCBvZgogCQkJCQl0aGUgbGFzdCByZXF1ZXN0 ZWQgY29sdW1uICovCiAJdWxpbnQJCW15c3FsX3Jvd19sZW47CS8qIGxlbmd0aCBpbiBieXRlcyBv ZiBhIHJvdyBpbiB0aGUKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvY2sv bG9jazBsb2NrLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suYwlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMTk0MC02MHgzMnhpaXZ0cWo5dmEx CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvbG9jay9sb2NrMGxvY2suYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEwMDYwMjEwMjQzMS1zcmdxeHU2a3B1Mm80dm1jCkBAIC0xNzM5LDEx ICsxNzM5LDEyIEBAIHVsaW50CiBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAvKj09PT09PT09 PT09PT09PT09PT09PSovCiAJCQkJLyogb3V0OiBEQl9MT0NLX1dBSVQsIERCX0RFQURMT0NLLCBv cgotCQkJCURCX1FVRV9USFJfU1VTUEVOREVELCBvciBEQl9TVUNDRVNTOwotCQkJCURCX1NVQ0NF U1MgbWVhbnMgdGhhdCB0aGVyZSB3YXMgYSBkZWFkbG9jaywKLQkJCQlidXQgYW5vdGhlciB0cmFu c2FjdGlvbiB3YXMgY2hvc2VuIGFzIGEKLQkJCQl2aWN0aW0sIGFuZCB3ZSBnb3QgdGhlIGxvY2sg aW1tZWRpYXRlbHk6Ci0JCQkJbm8gbmVlZCB0byB3YWl0IHRoZW4gKi8KKwkJCQlEQl9RVUVfVEhS X1NVU1BFTkRFRCwgb3IgREJfU1VDQ0VTU19MT0NLRURfUkVDOworCQkJCURCX1NVQ0NFU1NfTE9D S0VEX1JFQyBtZWFucyB0aGF0IHRoZXJlCisJCQkJd2FzIGEgZGVhZGxvY2ssIGJ1dCBhbm90aGVy CisJCQkJdHJhbnNhY3Rpb24gd2FzIGNob3NlbiBhcyBhIHZpY3RpbSwKKwkJCQlhbmQgd2UgZ290 IHRoZSBsb2NrIGltbWVkaWF0ZWx5OiBubworCQkJCW5lZWQgdG8gd2FpdCB0aGVuICovCiAJdWxp bnQJCXR5cGVfbW9kZSwvKiBpbjogbG9jayBtb2RlIHRoaXMgdHJhbnNhY3Rpb24gaXMKIAkJCQly ZXF1ZXN0aW5nOiBMT0NLX1Mgb3IgTE9DS19YLCBwb3NzaWJseSBPUmVkCiAJCQkJd2l0aCBMT0NL X0dBUCBvciBMT0NLX1JFQ19OT1RfR0FQLCBPUmVkCkBAIC0xODA0LDcgKzE4MDUsNyBAQCBsb2Nr X3JlY19lbnF1ZXVlX3dhaXRpbmcoCiAKIAlpZiAodHJ4LT53YWl0X2xvY2sgPT0gTlVMTCkgewog Ci0JCXJldHVybihEQl9TVUNDRVNTKTsKKwkJcmV0dXJuKERCX1NVQ0NFU1NfTE9DS0VEX1JFQyk7 CiAJfQogCiAJdHJ4LT5xdWVfc3RhdGUgPSBUUlhfUVVFX0xPQ0tfV0FJVDsKQEAgLTE5MDMsNiAr MTkwNCwxNiBAQCBsb2NrX3JlY19hZGRfdG9fcXVldWUoCiAJcmV0dXJuKGxvY2tfcmVjX2NyZWF0 ZSh0eXBlX21vZGUsIHJlYywgaW5kZXgsIHRyeCkpOwogfQogCisvKiogUmVjb3JkIGxvY2tpbmcg cmVxdWVzdCBzdGF0dXMgKi8KK2VudW0gbG9ja19yZWNfcmVxX3N0YXR1cyB7CisJLyoqIEZhaWxl ZCB0byBhY3F1aXJlIGEgbG9jayAqLworCUxPQ0tfUkVDX0ZBSUwsCisJLyoqIFN1Y2NlZWRlZCBp biBhY3F1aXJpbmcgYSBsb2NrIChpbXBsaWNpdCBvciBhbHJlYWR5IGFjcXVpcmVkKSAqLworCUxP Q0tfUkVDX1NVQ0NFU1MsCisJLyoqIEV4cGxpY2l0bHkgY3JlYXRlZCBhIG5ldyBsb2NrICovCisJ TE9DS19SRUNfU1VDQ0VTU19DUkVBVEVECit9OworCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogVGhpcyBp cyBhIGZhc3Qgcm91dGluZSBmb3IgbG9ja2luZyBhIHJlY29yZCBpbiB0aGUgbW9zdCBjb21tb24g Y2FzZXM6CiB0aGVyZSBhcmUgbm8gZXhwbGljaXQgbG9ja3Mgb24gdGhlIHBhZ2UsIG9yIHRoZXJl IGlzIGp1c3Qgb25lIGxvY2ssIG93bmVkCkBAIC0xOTExLDEwICsxOTIyLDEwIEBAIHdoaWNoIGRv ZXMgTk9UIGxvb2sgYXQgaW1wbGljaXQgbG9ja3MhIEMKIGV4cGxpY2l0IGxvY2tzLiBUaGlzIGZ1 bmN0aW9uIHNldHMgYSBub3JtYWwgbmV4dC1rZXkgbG9jaywgb3IgaW4gdGhlIGNhc2Ugb2YKIGEg cGFnZSBzdXByZW11bSByZWNvcmQsIGEgZ2FwIHR5cGUgbG9jay4gKi8KIFVOSVZfSU5MSU5FCi1p Ym9vbAorZW51bSBsb2NrX3JlY19yZXFfc3RhdHVzCiBsb2NrX3JlY19sb2NrX2Zhc3QoCiAvKj09 PT09PT09PT09PT09PSovCi0JCQkJLyogb3V0OiBUUlVFIGlmIGxvY2tpbmcgc3VjY2VlZGVkICov CisJCQkJLyogb3V0OiB3aGV0aGVyIHRoZSBsb2NraW5nIHN1Y2NlZWRlZCAqLwogCWlib29sCQlp bXBsLAkvKiBpbjogaWYgVFJVRSwgbm8gbG9jayBpcyBzZXQgaWYgbm8gd2FpdAogCQkJCWlzIG5l Y2Vzc2FyeTogd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGxlciB3aWxsCiAJCQkJc2V0IGFuIGltcGxp Y2l0IGxvY2sgKi8KQEAgLTE5NTAsMTkgKzE5NjEsMTkgQEAgbG9ja19yZWNfbG9ja19mYXN0KAog CQkJbG9ja19yZWNfY3JlYXRlKG1vZGUsIHJlYywgaW5kZXgsIHRyeCk7CiAJCX0KIAotCQlyZXR1 cm4oVFJVRSk7CisJCXJldHVybihMT0NLX1JFQ19TVUNDRVNTX0NSRUFURUQpOwogCX0KIAogCWlm IChsb2NrX3JlY19nZXRfbmV4dF9vbl9wYWdlKGxvY2spKSB7CiAKLQkJcmV0dXJuKEZBTFNFKTsK KwkJcmV0dXJuKExPQ0tfUkVDX0ZBSUwpOwogCX0KIAogCWlmIChsb2NrLT50cnggIT0gdHJ4CiAJ ICAgIHx8IGxvY2stPnR5cGVfbW9kZSAhPSAobW9kZSB8IExPQ0tfUkVDKQogCSAgICB8fCBsb2Nr X3JlY19nZXRfbl9iaXRzKGxvY2spIDw9IGhlYXBfbm8pIHsKIAotCQlyZXR1cm4oRkFMU0UpOwor CQlyZXR1cm4oTE9DS19SRUNfRkFJTCk7CiAJfQogCiAJaWYgKCFpbXBsKSB7CkBAIC0xOTcxLDEw ICsxOTgyLDExIEBAIGxvY2tfcmVjX2xvY2tfZmFzdCgKIAogCQlpZiAoIWxvY2tfcmVjX2dldF9u dGhfYml0KGxvY2ssIGhlYXBfbm8pKSB7CiAJCQlsb2NrX3JlY19zZXRfbnRoX2JpdChsb2NrLCBo ZWFwX25vKTsKKwkJCXJldHVybihMT0NLX1JFQ19TVUNDRVNTX0NSRUFURUQpOwogCQl9CiAJfQog Ci0JcmV0dXJuKFRSVUUpOworCXJldHVybihMT0NLX1JFQ19TVUNDRVNTKTsKIH0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKQEAgLTE5ODYsOCArMTk5OCw5IEBAIHN0YXRpYwogdWxpbnQKIGxvY2tfcmVj X2xvY2tfc2xvdygKIC8qPT09PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Ms IERCX0xPQ0tfV0FJVCwgb3IgZXJyb3IKLQkJCQljb2RlICovCisJCQkJLyogb3V0OiBEQl9TVUND RVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9D SywKKwkJCQlvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCWlib29sCQlpbXBsLAkvKiBpbjog aWYgVFJVRSwgbm8gbG9jayBpcyBzZXQgaWYgbm8gd2FpdCBpcwogCQkJCW5lY2Vzc2FyeTogd2Ug YXNzdW1lIHRoYXQgdGhlIGNhbGxlciB3aWxsIHNldAogCQkJCWFuIGltcGxpY2l0IGxvY2sgKi8K QEAgLTE5OTgsNyArMjAxMSw2IEBAIGxvY2tfcmVjX2xvY2tfc2xvdygKIAlxdWVfdGhyX3QqCXRo cikJLyogaW46IHF1ZXJ5IHRocmVhZCAqLwogewogCXRyeF90Kgl0cng7Ci0JdWxpbnQJZXJyOwog CiAJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKIAl1dF9hZCgoTE9DS19NT0RFX01B U0sgJiBtb2RlKSAhPSBMT0NLX1MKQEAgLTIwMTcsMjYgKzIwMjksMjEgQEAgbG9ja19yZWNfbG9j a19zbG93KAogCQkvKiBUaGUgdHJ4IGFscmVhZHkgaGFzIGEgc3Ryb25nIGVub3VnaCBsb2NrIG9u IHJlYzogZG8KIAkJbm90aGluZyAqLwogCi0JCWVyciA9IERCX1NVQ0NFU1M7CiAJfSBlbHNlIGlm IChsb2NrX3JlY19vdGhlcl9oYXNfY29uZmxpY3RpbmcobW9kZSwgcmVjLCB0cngpKSB7CiAKIAkJ LyogSWYgYW5vdGhlciB0cmFuc2FjdGlvbiBoYXMgYSBub24tZ2FwIGNvbmZsaWN0aW5nIHJlcXVl c3QgaW4KIAkJdGhlIHF1ZXVlLCBhcyB0aGlzIHRyYW5zYWN0aW9uIGRvZXMgbm90IGhhdmUgYSBs b2NrIHN0cm9uZwogCQllbm91Z2ggYWxyZWFkeSBncmFudGVkIG9uIHRoZSByZWNvcmQsIHdlIGhh dmUgdG8gd2FpdC4gKi8KIAotCQllcnIgPSBsb2NrX3JlY19lbnF1ZXVlX3dhaXRpbmcobW9kZSwg cmVjLCBpbmRleCwgdGhyKTsKLQl9IGVsc2UgewotCQlpZiAoIWltcGwpIHsKLQkJCS8qIFNldCB0 aGUgcmVxdWVzdGVkIGxvY2sgb24gdGhlIHJlY29yZCAqLworCQlyZXR1cm4obG9ja19yZWNfZW5x dWV1ZV93YWl0aW5nKG1vZGUsIHJlYywgaW5kZXgsIHRocikpOworCX0gZWxzZSBpZiAoIWltcGwp IHsKKwkJLyogU2V0IHRoZSByZXF1ZXN0ZWQgbG9jayBvbiB0aGUgcmVjb3JkICovCiAKLQkJCWxv Y2tfcmVjX2FkZF90b19xdWV1ZShMT0NLX1JFQyB8IG1vZGUsIHJlYywgaW5kZXgsCi0JCQkJCSAg ICAgIHRyeCk7Ci0JCX0KLQotCQllcnIgPSBEQl9TVUNDRVNTOworCQlsb2NrX3JlY19hZGRfdG9f cXVldWUoTE9DS19SRUMgfCBtb2RlLCByZWMsIGluZGV4LCB0cngpOworCQlyZXR1cm4oREJfU1VD Q0VTU19MT0NLRURfUkVDKTsKIAl9CiAKLQlyZXR1cm4oZXJyKTsKKwlyZXR1cm4oREJfU1VDQ0VT Uyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0yMDQ5LDggKzIwNTYsOSBAQCBzdGF0aWMK IHVsaW50CiBsb2NrX3JlY19sb2NrKAogLyo9PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NV Q0NFU1MsIERCX0xPQ0tfV0FJVCwgb3IgZXJyb3IKLQkJCQljb2RlICovCisJCQkJLyogb3V0OiBE Ql9TVUNDRVNTLCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9E RUFETE9DSywgb3IKKwkJCQlEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCWlib29sCQlpbXBsLAkv KiBpbjogaWYgVFJVRSwgbm8gbG9jayBpcyBzZXQgaWYgbm8gd2FpdCBpcwogCQkJCW5lY2Vzc2Fy eTogd2UgYXNzdW1lIHRoYXQgdGhlIGNhbGxlciB3aWxsIHNldAogCQkJCWFuIGltcGxpY2l0IGxv Y2sgKi8KQEAgLTIwNjAsOCArMjA2OCw2IEBAIGxvY2tfcmVjX2xvY2soCiAJZGljdF9pbmRleF90 KglpbmRleCwJLyogaW46IGluZGV4IG9mIHJlY29yZCAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiBp bjogcXVlcnkgdGhyZWFkICovCiB7Ci0JdWxpbnQJZXJyOwotCiAJdXRfYWQobXV0ZXhfb3duKCZr ZXJuZWxfbXV0ZXgpKTsKIAl1dF9hZCgoTE9DS19NT0RFX01BU0sgJiBtb2RlKSAhPSBMT0NLX1MK IAkgICAgICB8fCBsb2NrX3RhYmxlX2hhcyh0aHJfZ2V0X3RyeCh0aHIpLCBpbmRleC0+dGFibGUs IExPQ0tfSVMpKTsKQEAgLTIwNzMsMTcgKzIwNzksMTkgQEAgbG9ja19yZWNfbG9jaygKIAkgICAg ICB8fCBtb2RlIC0gKExPQ0tfTU9ERV9NQVNLICYgbW9kZSkgPT0gTE9DS19SRUNfTk9UX0dBUAog CSAgICAgIHx8IG1vZGUgLSAoTE9DS19NT0RFX01BU0sgJiBtb2RlKSA9PSAwKTsKIAotCWlmIChs b2NrX3JlY19sb2NrX2Zhc3QoaW1wbCwgbW9kZSwgcmVjLCBpbmRleCwgdGhyKSkgewotCi0JCS8q IFdlIHRyeSBhIHNpbXBsaWZpZWQgYW5kIGZhc3RlciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAot CQljb21tb24gY2FzZXMgKi8KLQotCQllcnIgPSBEQl9TVUNDRVNTOwotCX0gZWxzZSB7Ci0JCWVy ciA9IGxvY2tfcmVjX2xvY2tfc2xvdyhpbXBsLCBtb2RlLCByZWMsIGluZGV4LCB0aHIpOworCS8q IFdlIHRyeSBhIHNpbXBsaWZpZWQgYW5kIGZhc3RlciBzdWJyb3V0aW5lIGZvciB0aGUgbW9zdAor CWNvbW1vbiBjYXNlcyAqLworCXN3aXRjaCAobG9ja19yZWNfbG9ja19mYXN0KGltcGwsIG1vZGUs IHJlYywgaW5kZXgsIHRocikpIHsKKwljYXNlIExPQ0tfUkVDX1NVQ0NFU1M6CisJCXJldHVybihE Ql9TVUNDRVNTKTsKKwljYXNlIExPQ0tfUkVDX1NVQ0NFU1NfQ1JFQVRFRDoKKwkJcmV0dXJuKERC X1NVQ0NFU1NfTE9DS0VEX1JFQyk7CisJY2FzZSBMT0NLX1JFQ19GQUlMOgorCQlyZXR1cm4obG9j a19yZWNfbG9ja19zbG93KGltcGwsIG1vZGUsIHJlYywgaW5kZXgsIHRocikpOwogCX0KIAotCXJl dHVybihlcnIpOworCXV0X2Vycm9yOworCXJldHVybihEQl9FUlJPUik7CiB9CiAKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCkBAIC00ODMyLDcgKzQ4NDAsNyBAQCBsb2NrX3JlY19pbnNlcnRfY2hlY2tfYW5k X2xvY2soCiAKIAlsb2NrID0gbG9ja19yZWNfZ2V0X2ZpcnN0KG5leHRfcmVjKTsKIAotCWlmIChs b2NrID09IE5VTEwpIHsKKwlpZiAoVU5JVl9MSUtFTFkobG9jayA9PSBOVUxMKSkgewogCQkvKiBX ZSBvcHRpbWl6ZSBDUFUgdGltZSB1c2FnZSBpbiB0aGUgc2ltcGxlc3QgY2FzZSAqLwogCiAJCWxv Y2tfbXV0ZXhfZXhpdF9rZXJuZWwoKTsKQEAgLTQ4NDAsOCArNDg0OCw3IEBAIGxvY2tfcmVjX2lu c2VydF9jaGVja19hbmRfbG9jaygKIAkJaWYgKCEoaW5kZXgtPnR5cGUgJiBESUNUX0NMVVNURVJF RCkpIHsKIAogCQkJLyogVXBkYXRlIHRoZSBwYWdlIG1heCB0cnggaWQgZmllbGQgKi8KLQkJCXBh Z2VfdXBkYXRlX21heF90cnhfaWQoYnVmX2ZyYW1lX2FsaWduKHJlYyksCi0JCQkJCSAgICAgICB0 aHJfZ2V0X3RyeCh0aHIpLT5pZCk7CisJCQlwYWdlX3VwZGF0ZV9tYXhfdHJ4X2lkKGJ1Zl9mcmFt ZV9hbGlnbihyZWMpLCB0cngtPmlkKTsKIAkJfQogCiAJCXJldHVybihEQl9TVUNDRVNTKTsKQEAg LTQ4NzMsMTEgKzQ4ODAsMTYgQEAgbG9ja19yZWNfaW5zZXJ0X2NoZWNrX2FuZF9sb2NrKAogCiAJ bG9ja19tdXRleF9leGl0X2tlcm5lbCgpOwogCi0JaWYgKCEoaW5kZXgtPnR5cGUgJiBESUNUX0NM VVNURVJFRCkgJiYgKGVyciA9PSBEQl9TVUNDRVNTKSkgewotCisJc3dpdGNoIChlcnIpIHsKKwlj YXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwkJLyogZmFs bCB0aHJvdWdoICovCisJY2FzZSBEQl9TVUNDRVNTOgorCQlpZiAoaW5kZXgtPnR5cGUgJiBESUNU X0NMVVNURVJFRCkgeworCQkJYnJlYWs7CisJCX0KIAkJLyogVXBkYXRlIHRoZSBwYWdlIG1heCB0 cnggaWQgZmllbGQgKi8KLQkJcGFnZV91cGRhdGVfbWF4X3RyeF9pZChidWZfZnJhbWVfYWxpZ24o cmVjKSwKLQkJCQkgICAgICAgdGhyX2dldF90cngodGhyKS0+aWQpOworCQlwYWdlX3VwZGF0ZV9t YXhfdHJ4X2lkKGJ1Zl9mcmFtZV9hbGlnbihyZWMpLCB0cngtPmlkKTsKIAl9CiAKICNpZmRlZiBV TklWX0RFQlVHCkBAIC00OTg0LDYgKzQ5OTYsMTAgQEAgbG9ja19jbHVzdF9yZWNfbW9kaWZ5X2No ZWNrX2FuZF9sb2NrKAogCiAJdXRfYWQobG9ja19yZWNfcXVldWVfdmFsaWRhdGUocmVjLCBpbmRl eCwgb2Zmc2V0cykpOwogCisJaWYgKFVOSVZfVU5MSUtFTFkoZXJyID09IERCX1NVQ0NFU1NfTE9D S0VEX1JFQykpIHsKKwkJZXJyID0gREJfU1VDQ0VTUzsKKwl9CisKIAlyZXR1cm4oZXJyKTsKIH0K IApAQCAtNTA0MywyNSArNTA1OSwyOSBAQCBsb2NrX3NlY19yZWNfbW9kaWZ5X2NoZWNrX2FuZF9s b2NrKAogCX0KICNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKLQlpZiAoZXJyID09IERCX1NVQ0NF U1MpIHsKKwlpZiAoZXJyID09IERCX1NVQ0NFU1MgfHwgZXJyID09IERCX1NVQ0NFU1NfTE9DS0VE X1JFQykgewogCQkvKiBVcGRhdGUgdGhlIHBhZ2UgbWF4IHRyeCBpZCBmaWVsZCAqLwotCisJCS8q IEl0IG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkgdG8gZG8gdGhpcyBpZgorCQllcnIgPT0gREJfU1VD Q0VTUyAobm8gbmV3IGxvY2sgY3JlYXRlZCksCisJCWJ1dCBpdCBzaG91bGQgbm90IGNvc3QgdG9v IG11Y2ggcGVyZm9ybWFuY2UuICovCiAJCXBhZ2VfdXBkYXRlX21heF90cnhfaWQoYnVmX2ZyYW1l X2FsaWduKHJlYyksCiAJCQkJICAgICAgIHRocl9nZXRfdHJ4KHRociktPmlkKTsKKwkJZXJyID0g REJfU1VDQ0VTUzsKIAl9CiAKIAlyZXR1cm4oZXJyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK LUxpa2UgdGhlIGNvdW50ZXJwYXJ0IGZvciBhIGNsdXN0ZXJlZCBpbmRleCBiZWxvdywgYnV0IG5v dyB3ZSByZWFkIGEKK0xpa2UgbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygpLCBi dXQgcmVhZHMgYQogc2Vjb25kYXJ5IGluZGV4IHJlY29yZC4gKi8KIAogdWxpbnQKIGxvY2tfc2Vj X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJREJfREVBRExP Q0ssIG9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBE Ql9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywKKwkJ CQlvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJLyogaW46IGlmIEJU Ul9OT19MT0NLSU5HX0ZMQUcgYml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcgKi8KIAlyZWNf dCoJCXJlYywJLyogaW46IHVzZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkCkBAIC01 MTI2LDggKzUxNDYsOSBAQCBsb2NrIG9uIHRoZSByZWNvcmQuICovCiB1bGludAogbG9ja19jbHVz dF9yZWNfcmVhZF9jaGVja19hbmRfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSovCi0JCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsCi0JCQkJREJfREVB RExPQ0ssIG9yIERCX1FVRV9USFJfU1VTUEVOREVEICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNT LCBEQl9TVUNDRVNTX0xPQ0tFRF9SRUMsCisJCQkJREJfTE9DS19XQUlULCBEQl9ERUFETE9DSywK KwkJCQlvciBEQl9RVUVfVEhSX1NVU1BFTkRFRCAqLwogCXVsaW50CQlmbGFncywJLyogaW46IGlm IEJUUl9OT19MT0NLSU5HX0ZMQUcgYml0IGlzIHNldCwKIAkJCQlkb2VzIG5vdGhpbmcgKi8KIAly ZWNfdCoJCXJlYywJLyogaW46IHVzZXIgcmVjb3JkIG9yIHBhZ2Ugc3VwcmVtdW0gcmVjb3JkCkBA IC01MjA2LDE2ICs1MjI3LDIxIEBAIGxvY2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2tf YWx0KAogCW1lbV9oZWFwX3QqCXRtcF9oZWFwCT0gTlVMTDsKIAl1bGludAkJb2Zmc2V0c19bUkVD X09GRlNfTk9STUFMX1NJWkVdOwogCXVsaW50KgkJb2Zmc2V0cwkJPSBvZmZzZXRzXzsKLQl1bGlu dAkJcmV0OworCXVsaW50CQllcnI7CiAJKm9mZnNldHNfID0gKHNpemVvZiBvZmZzZXRzXykgLyBz aXplb2YgKm9mZnNldHNfOwogCiAJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4 LCBvZmZzZXRzLAogCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmdG1wX2hlYXApOwotCXJldCA9IGxv Y2tfY2x1c3RfcmVjX3JlYWRfY2hlY2tfYW5kX2xvY2soZmxhZ3MsIHJlYywgaW5kZXgsCisJZXJy ID0gbG9ja19jbHVzdF9yZWNfcmVhZF9jaGVja19hbmRfbG9jayhmbGFncywgcmVjLCBpbmRleCwK IAkJCQkJCSBvZmZzZXRzLCBtb2RlLCBnYXBfbW9kZSwgdGhyKTsKIAlpZiAodG1wX2hlYXApIHsK IAkJbWVtX2hlYXBfZnJlZSh0bXBfaGVhcCk7CiAJfQotCXJldHVybihyZXQpOworCisJaWYgKFVO SVZfVU5MSUtFTFkoZXJyID09IERCX1NVQ0NFU1NfTE9DS0VEX1JFQykpIHsKKwkJZXJyID0gREJf U1VDQ0VTUzsKKwl9CisKKwlyZXR1cm4oZXJyKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAxOTQwLTYw eDMyeGlpdnRxajl2YTEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNDMxLXNyZ3F4dTZrcHUybzR2bWMK QEAgLTExMTQsNyArMTExNCw4IEBAIHN0YXRpYwogdWxpbnQKIHJvd19pbnNfc2V0X3NoYXJlZF9y ZWNfbG9jaygKIC8qPT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NV Q0NFU1Mgb3IgZXJyb3IgY29kZSAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VT U19MT0NLRURfUkVDLAorCQkJCW9yIGVycm9yIGNvZGUgKi8KIAl1bGludAkJdHlwZSwJLyogaW46 IExPQ0tfT1JESU5BUlksIExPQ0tfR0FQLCBvcgogCQkJCUxPQ0tfUkVDX05PVF9HQVAgdHlwZSBs b2NrICovCiAJcmVjX3QqCQlyZWMsCS8qIGluOiByZWNvcmQgKi8KQEAgLTExNDUsNyArMTE0Niw4 IEBAIHN0YXRpYwogdWxpbnQKIHJvd19pbnNfc2V0X2V4Y2x1c2l2ZV9yZWNfbG9jaygKIC8qPT09 PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mgb3IgZXJy b3IgY29kZSAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURfUkVD LAorCQkJCW9yIGVycm9yIGNvZGUgKi8KIAl1bGludAkJdHlwZSwJLyogaW46IExPQ0tfT1JESU5B UlksIExPQ0tfR0FQLCBvcgogCQkJCUxPQ0tfUkVDX05PVF9HQVAgdHlwZSBsb2NrICovCiAJcmVj X3QqCQlyZWMsCS8qIGluOiByZWNvcmQgKi8KQEAgLTExOTUsOSArMTE5Nyw3IEBAIHJvd19pbnNf Y2hlY2tfZm9yZWlnbl9jb25zdHJhaW50KAogCWRpY3RfdGFibGVfdCoJY2hlY2tfdGFibGU7CiAJ ZGljdF9pbmRleF90KgljaGVja19pbmRleDsKIAl1bGludAkJbl9maWVsZHNfY21wOwotCXJlY190 KgkJcmVjOwogCWJ0cl9wY3VyX3QJcGN1cjsKLQlpYm9vbAkJbW92ZWQ7CiAJaW50CQljbXA7CiAJ dWxpbnQJCWVycjsKIAl1bGludAkJaTsKQEAgLTEzMjgsMTIgKzEzMjgsMTIgQEAgcnVuX2FnYWlu OgogCiAJLyogU2NhbiBpbmRleCByZWNvcmRzIGFuZCBjaGVjayBpZiB0aGVyZSBpcyBhIG1hdGNo aW5nIHJlY29yZCAqLwogCi0JZm9yICg7OykgewotCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZw Y3VyKTsKKwlkbyB7CisJCXJlY190KglyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKIAog CQlpZiAocGFnZV9yZWNfaXNfaW5maW11bShyZWMpKSB7CiAKLQkJCWdvdG8gbmV4dF9yZWM7CisJ CQljb250aW51ZTsKIAkJfQogCiAJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBjaGVj a19pbmRleCwKQEAgLTEzNDMsMTIgKzEzNDMsMTMgQEAgcnVuX2FnYWluOgogCiAJCQllcnIgPSBy b3dfaW5zX3NldF9zaGFyZWRfcmVjX2xvY2soCiAJCQkJTE9DS19PUkRJTkFSWSwgcmVjLCBjaGVj a19pbmRleCwgb2Zmc2V0cywgdGhyKTsKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0J CQkJYnJlYWs7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9S RUM6CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJY29udGludWU7CisJCQlkZWZhdWx0OgorCQkJ CWdvdG8gZW5kX3NjYW47CiAJCQl9Ci0KLQkJCWdvdG8gbmV4dF9yZWM7CiAJCX0KIAogCQljbXAg PSBjbXBfZHR1cGxlX3JlYyhlbnRyeSwgcmVjLCBvZmZzZXRzKTsKQEAgLTEzNTksOSArMTM2MCwx MiBAQCBydW5fYWdhaW46CiAJCQkJZXJyID0gcm93X2luc19zZXRfc2hhcmVkX3JlY19sb2NrKAog CQkJCQlMT0NLX09SRElOQVJZLCByZWMsIGNoZWNrX2luZGV4LAogCQkJCQlvZmZzZXRzLCB0aHIp OwotCQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJ CQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CiAJCQkJ CWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCQkJfSBl bHNlIHsKIAkJCQkvKiBGb3VuZCBhIG1hdGNoaW5nIHJlY29yZC4gTG9jayBvbmx5CkBAIC0xMzcy LDE1ICsxMzc2LDE4IEBAIHJ1bl9hZ2FpbjoKIAkJCQkJTE9DS19SRUNfTk9UX0dBUCwgcmVjLCBj aGVja19pbmRleCwKIAkJCQkJb2Zmc2V0cywgdGhyKTsKIAotCQkJCWlmIChlcnIgIT0gREJfU1VD Q0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VE X1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CiAJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJ CQkJCWdvdG8gZW5kX3NjYW47CiAJCQkJfQogCiAJCQkJaWYgKGNoZWNrX3JlZikgewogCQkJCQll cnIgPSBEQl9TVUNDRVNTOwogCi0JCQkJCWJyZWFrOworCQkJCQlnb3RvIGVuZF9zY2FuOwogCQkJ CX0gZWxzZSBpZiAoZm9yZWlnbi0+dHlwZSAhPSAwKSB7CiAJCQkJCS8qIFRoZXJlIGlzIGFuIE9O IFVQREFURSBvciBPTiBERUxFVEUKIAkJCQkJY29uZGl0aW9uOiBjaGVjayB0aGVtIGluIGEgc2Vw YXJhdGUKQEAgLTE0MDYsNyArMTQxMyw3IEBAIHJ1bl9hZ2FpbjoKIAkJCQkJCQllcnIgPSBEQl9G T1JFSUdOX0RVUExJQ0FURV9LRVk7CiAJCQkJCQl9CiAKLQkJCQkJCWJyZWFrOworCQkJCQkJZ290 byBlbmRfc2NhbjsKIAkJCQkJfQogCQkJCX0gZWxzZSB7CiAJCQkJCXJvd19pbnNfZm9yZWlnbl9y ZXBvcnRfZXJyKApAQCAtMTQxNCw0OCArMTQyMSwzOSBAQCBydW5fYWdhaW46CiAJCQkJCQl0aHIs IGZvcmVpZ24sIHJlYywgZW50cnkpOwogCiAJCQkJCWVyciA9IERCX1JPV19JU19SRUZFUkVOQ0VE OwotCQkJCQlicmVhazsKKwkJCQkJZ290byBlbmRfc2NhbjsKIAkJCQl9CiAJCQl9Ci0JCX0KKwkJ fSBlbHNlIHsKKwkJCXV0X2EoY21wIDwgMCk7CiAKLQkJaWYgKGNtcCA8IDApIHsKIAkJCWVyciA9 IHJvd19pbnNfc2V0X3NoYXJlZF9yZWNfbG9jaygKIAkJCQlMT0NLX0dBUCwgcmVjLCBjaGVja19p bmRleCwgb2Zmc2V0cywgdGhyKTsKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCi0JCQkJ YnJlYWs7Ci0JCQl9Ci0KLQkJCWlmIChjaGVja19yZWYpIHsKLQkJCQllcnIgPSBEQl9OT19SRUZF UkVOQ0VEX1JPVzsKLQkJCQlyb3dfaW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCi0JCQkJCXRy eCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9IERCX1NVQ0NF U1M7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJ CQljYXNlIERCX1NVQ0NFU1M6CisJCQkJaWYgKGNoZWNrX3JlZikgeworCQkJCQllcnIgPSBEQl9O T19SRUZFUkVOQ0VEX1JPVzsKKwkJCQkJcm93X2luc19mb3JlaWduX3JlcG9ydF9hZGRfZXJyKAor CQkJCQkJdHJ4LCBmb3JlaWduLCByZWMsIGVudHJ5KTsKKwkJCQl9IGVsc2UgeworCQkJCQllcnIg PSBEQl9TVUNDRVNTOworCQkJCX0KIAkJCX0KIAotCQkJYnJlYWs7CisJCQlnb3RvIGVuZF9zY2Fu OwogCQl9CisJfSB3aGlsZSAoYnRyX3BjdXJfbW92ZV90b19uZXh0KCZwY3VyLCAmbXRyKSk7CiAK LQkJdXRfYShjbXAgPT0gMCk7Ci1uZXh0X3JlYzoKLQkJbW92ZWQgPSBidHJfcGN1cl9tb3ZlX3Rv X25leHQoJnBjdXIsICZtdHIpOwotCi0JCWlmICghbW92ZWQpIHsKLQkJCWlmIChjaGVja19yZWYp IHsKLQkJCQlyZWMgPSBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKTsKLQkJCQlyb3dfaW5zX2ZvcmVp Z25fcmVwb3J0X2FkZF9lcnIoCi0JCQkJCXRyeCwgZm9yZWlnbiwgcmVjLCBlbnRyeSk7Ci0JCQkJ ZXJyID0gREJfTk9fUkVGRVJFTkNFRF9ST1c7Ci0JCQl9IGVsc2UgewotCQkJCWVyciA9IERCX1NV Q0NFU1M7Ci0JCQl9Ci0KLQkJCWJyZWFrOwotCQl9CisJaWYgKGNoZWNrX3JlZikgeworCQlyb3df aW5zX2ZvcmVpZ25fcmVwb3J0X2FkZF9lcnIoCisJCQl0cngsIGZvcmVpZ24sIGJ0cl9wY3VyX2dl dF9yZWMoJnBjdXIpLCBlbnRyeSk7CisJCWVyciA9IERCX05PX1JFRkVSRU5DRURfUk9XOworCX0g ZWxzZSB7CisJCWVyciA9IERCX1NVQ0NFU1M7CiAJfQogCitlbmRfc2NhbjoKIAlidHJfcGN1cl9j bG9zZSgmcGN1cik7CiAKIAltdHJfY29tbWl0KCZtdHIpOwpAQCAtMTY0MSwxMCArMTYzOSw4IEBA IHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9yX2R1cGxpY2F0ZSgKIAl1bGludAkJaTsKIAlpbnQJ CWNtcDsKIAl1bGludAkJbl9maWVsZHNfY21wOwotCXJlY190KgkJcmVjOwogCWJ0cl9wY3VyX3QJ cGN1cjsKIAl1bGludAkJZXJyCQk9IERCX1NVQ0NFU1M7Ci0JaWJvb2wJCW1vdmVkOwogCXVuc2ln bmVkCWFsbG93X2R1cGxpY2F0ZXM7CiAJbXRyX3QJCW10cjsKIAltZW1faGVhcF90KgloZWFwCQk9 IE5VTEw7CkBAIC0xNjgwLDEyICsxNjc2LDEyIEBAIHJvd19pbnNfc2Nhbl9zZWNfaW5kZXhfZm9y X2R1cGxpY2F0ZSgKIAogCS8qIFNjYW4gaW5kZXggcmVjb3JkcyBhbmQgY2hlY2sgaWYgdGhlcmUg aXMgYSBkdXBsaWNhdGUgKi8KIAotCWZvciAoOzspIHsKLQkJcmVjID0gYnRyX3BjdXJfZ2V0X3Jl YygmcGN1cik7CisJZG8geworCQlyZWNfdCoJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7 CiAKIAkJaWYgKHBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewogCi0JCQlnb3RvIG5leHRfcmVj OworCQkJY29udGludWU7CiAJCX0KIAogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywg aW5kZXgsIG9mZnNldHMsCkBAIC0xNzA2LDE0ICsxNzAyLDE4IEBAIHJvd19pbnNfc2Nhbl9zZWNf aW5kZXhfZm9yX2R1cGxpY2F0ZSgKIAkJCQlMT0NLX09SRElOQVJZLCByZWMsIGluZGV4LCBvZmZz ZXRzLCB0aHIpOwogCQl9CiAKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJc3dpdGNo IChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6CisJCQllcnIgPSBEQl9TVUND RVNTOworCQljYXNlIERCX1NVQ0NFU1M6CiAJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWdvdG8g ZW5kX3NjYW47CiAJCX0KIAogCQlpZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgewogCi0J CQlnb3RvIG5leHRfcmVjOworCQkJY29udGludWU7CiAJCX0KIAogCQljbXAgPSBjbXBfZHR1cGxl X3JlYyhlbnRyeSwgcmVjLCBvZmZzZXRzKTsKQEAgLTE3MjUsMjMgKzE3MjUsMTUgQEAgcm93X2lu c19zY2FuX3NlY19pbmRleF9mb3JfZHVwbGljYXRlKAogCiAJCQkJdGhyX2dldF90cngodGhyKS0+ ZXJyb3JfaW5mbyA9IGluZGV4OwogCi0JCQkJYnJlYWs7CisJCQkJZ290byBlbmRfc2NhbjsKIAkJ CX0KKwkJfSBlbHNlIHsKKwkJCXV0X2EoY21wIDwgMCk7CisJCQlnb3RvIGVuZF9zY2FuOwogCQl9 CisJfSB3aGlsZSAoYnRyX3BjdXJfbW92ZV90b19uZXh0KCZwY3VyLCAmbXRyKSk7CiAKLQkJaWYg KGNtcCA8IDApIHsKLQkJCWJyZWFrOwotCQl9Ci0KLQkJdXRfYShjbXAgPT0gMCk7Ci1uZXh0X3Jl YzoKLQkJbW92ZWQgPSBidHJfcGN1cl9tb3ZlX3RvX25leHQoJnBjdXIsICZtdHIpOwotCi0JCWlm ICghbW92ZWQpIHsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCitlbmRfc2NhbjoKIAlpZiAoVU5JVl9M SUtFTFlfTlVMTChoZWFwKSkgewogCQltZW1faGVhcF9mcmVlKGhlYXApOwogCX0KQEAgLTE4Mzcs NyArMTgyOSwxMSBAQCByb3dfaW5zX2R1cGxpY2F0ZV9lcnJvcl9pbl9jbHVzdCgKIAkJCQkJY3Vy c29yLT5pbmRleCwgb2Zmc2V0cywgdGhyKTsKIAkJCX0KIAotCQkJaWYgKGVyciAhPSBEQl9TVUND RVNTKSB7CisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSBEQl9TVUNDRVNTX0xPQ0tFRF9SRUM6 CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCWdvdG8g ZnVuY19leGl0OwogCQkJfQogCkBAIC0xODc1LDcgKzE4NzEsMTEgQEAgcm93X2luc19kdXBsaWNh dGVfZXJyb3JfaW5fY2x1c3QoCiAJCQkJCWN1cnNvci0+aW5kZXgsIG9mZnNldHMsIHRocik7CiAJ CQl9CiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJ CWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJY2FzZSBEQl9TVUNDRVNTOgorCQkJCWJy ZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGZ1bmNfZXhpdDsKIAkJCX0KIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDEwMDYwMjEwMTk0MC02MHgzMnhpaXZ0cWo5dmExCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBteXNxbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNDMx LXNyZ3F4dTZrcHUybzR2bWMKQEAgLTE0NTUsMjIgKzE0NTUsMjAgQEAgcnVuX2FnYWluOgogfQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgotVGhpcyBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3J2X2xvY2tz X3Vuc2FmZV9mb3JfYmlubG9nIGlzIFRSVUUgb3IKLXRoaXMgc2Vzc2lvbiBpcyB1c2luZyBhIFJF QUQgQ09NTUlUVEVEIGlzb2xhdGlvbiBsZXZlbC4gQmVmb3JlCi1jYWxsaW5nIHRoaXMgZnVuY3Rp b24gd2UgbXVzdCB1c2UgdHJ4X3Jlc2V0X25ld19yZWNfbG9ja19pbmZvKCkgYW5kCi10cnhfcmVn aXN0ZXJfbmV3X3JlY19sb2NrKCkgdG8gc3RvcmUgdGhlIGluZm9ybWF0aW9uIHdoaWNoIG5ldyBy ZWNvcmQgbG9ja3MKLXJlYWxseSB3ZXJlIHNldC4gVGhpcyBmdW5jdGlvbiByZW1vdmVzIGEgbmV3 bHkgc2V0IGxvY2sgdW5kZXIgcHJlYnVpbHQtPnBjdXIsCi1hbmQgYWxzbyB1bmRlciBwcmVidWls dC0+Y2x1c3RfcGN1ci4gQ3VycmVudGx5LCB0aGlzIGlzIG9ubHkgdXNlZCBhbmQgdGVzdGVkCi1p biB0aGUgY2FzZSBvZiBhbiBVUERBVEUgb3IgYSBERUxFVEUgc3RhdGVtZW50LCB3aGVyZSB0aGUg cm93IGxvY2sgaXMgb2YgdGhlCi1MT0NLX1ggdHlwZS4KLVRodXMsIHRoaXMgaW1wbGVtZW50cyBh ICdtaW5pLXJvbGxiYWNrJyB0aGF0IHJlbGVhc2VzIHRoZSBsYXRlc3QgcmVjb3JkCi1sb2NrcyB3 ZSBzZXQuICovCitUaGlzIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcnZfbG9ja3NfdW5zYWZlX2Zv cl9iaW5sb2cgaXMgVFJVRSBvciB0aGlzCitzZXNzaW9uIGlzIHVzaW5nIGEgUkVBRCBDT01NSVRU RUQgb3IgUkVBRCBVTkNPTU1JVFRFRCBpc29sYXRpb24gbGV2ZWwuCitCZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uIHJvd19zZWFyY2hfZm9yX215c3FsKCkgbXVzdCBoYXZlCitpbml0aWFsaXpl ZCBwcmVidWlsdC0+bmV3X3JlY19sb2NrcyB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gd2hpY2gg bmV3CityZWNvcmQgbG9ja3MgcmVhbGx5IHdlcmUgc2V0LiBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMg YSBuZXdseSBzZXQKK2NsdXN0ZXJlZCBpbmRleCByZWNvcmQgbG9jayB1bmRlciBwcmVidWlsdC0+ cGN1ciBvcgorcHJlYnVpbHQtPmNsdXN0X3BjdXIuICBUaHVzLCB0aGlzIGltcGxlbWVudHMgYSAn bWluaS1yb2xsYmFjaycgdGhhdAorcmVsZWFzZXMgdGhlIGxhdGVzdCBjbHVzdGVyZWQgaW5kZXgg cmVjb3JkIGxvY2sgd2Ugc2V0LiAqLwogCiBpbnQKIHJvd191bmxvY2tfZm9yX215c3FsKAogLyo9 PT09PT09PT09PT09PT09PSovCiAJCQkJCS8qIG91dDogZXJyb3IgY29kZSBvciBEQl9TVUNDRVNT ICovCi0Jcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiBpbjogcHJlYnVpbHQgc3RydWN0IGlu IE15U1FMCisJcm93X3ByZWJ1aWx0X3QqCXByZWJ1aWx0LAkvKiBpbi9vdXQ6IHByZWJ1aWx0IHN0 cnVjdCBpbiBNeVNRTAogCQkJCQloYW5kbGUgKi8KIAlpYm9vbAkJaGFzX2xhdGNoZXNfb25fcmVj cykvKiBUUlVFIGlmIGNhbGxlZCBzbyB0aGF0IHdlIGhhdmUKIAkJCQkJdGhlIGxhdGNoZXMgb24g dGhlIHJlY29yZHMgdW5kZXIgcGN1cgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBzZWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTAwNjAyMTAxOTQwLTYweDMyeGlpdnRxajl2 YTEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTAwNjAyMTAyNDMxLXNyZ3F4dTZrcHUybzR2bWMKQEAgLTc1NCw4ICs3 NTQsMTQgQEAgcm93X3NlbF9nZXRfY2x1c3RfcmVjKAogCQkJMCwgY2x1c3RfcmVjLCBpbmRleCwg b2Zmc2V0cywKIAkJCW5vZGUtPnJvd19sb2NrX21vZGUsIGxvY2tfdHlwZSwgdGhyKTsKIAotCQlp ZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NV Q0NFU1M6CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJLyogRGVjbGFyZSB0aGUg dmFyaWFibGUgdW5pbml0aWFsaXplZCBpbiBWYWxncmluZC4KKwkJCUl0IHNob3VsZCBiZSBzZXQg dG8gREJfU1VDQ0VTUyBhdCBmdW5jX2V4aXQuICovCisJCQlVTklWX01FTV9JTlZBTElEKCZlcnIs IHNpemVvZiBlcnIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CiAJCQlnb3RvIGVycl9leGl0Owog CQl9CiAJfSBlbHNlIHsKQEAgLTgyNiw3ICs4MzIsOCBAQCBVTklWX0lOTElORQogdWxpbnQKIHNl bF9zZXRfcmVjX2xvY2soCiAvKj09PT09PT09PT09PT0qLwotCQkJCS8qIG91dDogREJfU1VDQ0VT UyBvciBlcnJvciBjb2RlICovCisJCQkJLyogb3V0OiBEQl9TVUNDRVNTLCBEQl9TVUNDRVNTX0xP Q0tFRF9SRUMsCisJCQkJb3IgZXJyb3IgY29kZSAqLwogCXJlY190KgkJcmVjLAkvKiBpbjogcmVj b3JkICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyogaW46IGluZGV4ICovCiAJY29uc3QgdWxp bnQqCW9mZnNldHMsLyogaW46IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KSAqLwpAQCAtMTM3 NCwxMSArMTM4MSwxNSBAQCByZWNfbG9vcDoKIAkJCQkJICAgICAgIG5vZGUtPnJvd19sb2NrX21v ZGUsCiAJCQkJCSAgICAgICBsb2NrX3R5cGUsIHRocik7CiAKLQkJCWlmIChlcnIgIT0gREJfU1VD Q0VTUykgeworCQkJc3dpdGNoIChlcnIpIHsKKwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVD OgorCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgogCQkJCS8qIE5vdGUgdGhhdCBpbiB0aGlzIGNhc2Ugd2Ugd2lsbCBzdG9y ZSBpbiBwY3VyCiAJCQkJdGhlIFBSRURFQ0VTU09SIG9mIHRoZSByZWNvcmQgd2UgYXJlIHdhaXRp bmcKIAkJCQl0aGUgbG9jayBmb3IgKi8KLQogCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwog CQkJfQogCQl9CkBAIC0xNDI5LDggKzE0NDAsMTIgQEAgc2tpcF9sb2NrOgogCQllcnIgPSBzZWxf c2V0X3JlY19sb2NrKHJlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJICAgICAgIG5vZGUtPnJvd19s b2NrX21vZGUsIGxvY2tfdHlwZSwgdGhyKTsKIAotCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsK LQorCQlzd2l0Y2ggKGVycikgeworCQljYXNlIERCX1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCWVy ciA9IERCX1NVQ0NFU1M7CisJCWNhc2UgREJfU1VDQ0VTUzoKKwkJCWJyZWFrOworCQlkZWZhdWx0 OgogCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCX0KIAl9CkBAIC0yNzQ1LDcgKzI3NjAs OCBAQCBzdGF0aWMKIHVsaW50CiByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215c3FsKAogLyo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQkJCQkvKiBvdXQ6IERCX1NVQ0NFU1Mgb3Ig ZXJyb3IgY29kZSAqLworCQkJCS8qIG91dDogREJfU1VDQ0VTUywgREJfU1VDQ0VTU19MT0NLRURf UkVDLAorCQkJCW9yIGVycm9yIGNvZGUgKi8KIAlyb3dfcHJlYnVpbHRfdCoJcHJlYnVpbHQsLyog aW46IHByZWJ1aWx0IHN0cnVjdCBpbiB0aGUgaGFuZGxlICovCiAJZGljdF9pbmRleF90KglzZWNf aW5kZXgsLyogaW46IHNlY29uZGFyeSBpbmRleCB3aGVyZSByZWMgcmVzaWRlcyAqLwogCXJlY190 KgkJcmVjLAkvKiBpbjogcmVjb3JkIGluIGEgbm9uLWNsdXN0ZXJlZCBpbmRleDsgaWYKQEAgLTI4 MjYsNiArMjg0Miw3IEBAIHJvd19zZWxfZ2V0X2NsdXN0X3JlY19mb3JfbXlzcWwoCiAKIAkJY2x1 c3RfcmVjID0gTlVMTDsKIAorCQllcnIgPSBEQl9TVUNDRVNTOwogCQlnb3RvIGZ1bmNfZXhpdDsK IAl9CiAKQEAgLTI4NDAsOCArMjg1NywxMSBAQCByb3dfc2VsX2dldF9jbHVzdF9yZWNfZm9yX215 c3FsKAogCQllcnIgPSBsb2NrX2NsdXN0X3JlY19yZWFkX2NoZWNrX2FuZF9sb2NrKAogCQkJMCwg Y2x1c3RfcmVjLCBjbHVzdF9pbmRleCwgKm9mZnNldHMsCiAJCQlwcmVidWlsdC0+c2VsZWN0X2xv Y2tfdHlwZSwgTE9DS19SRUNfTk9UX0dBUCwgdGhyKTsKLQkJaWYgKGVyciAhPSBEQl9TVUNDRVNT KSB7Ci0KKwkJc3dpdGNoIChlcnIpIHsKKwkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NV Q0NFU1NfTE9DS0VEX1JFQzoKKwkJCWJyZWFrOworCQlkZWZhdWx0OgogCQkJZ290byBlcnJfZXhp dDsKIAkJfQogCX0gZWxzZSB7CkBAIC0yOTAwLDYgKzI5MjAsOCBAQCByb3dfc2VsX2dldF9jbHVz dF9yZWNfZm9yX215c3FsKAogCQkJCSAgICAgcmVjLCBzZWNfaW5kZXgsIGNsdXN0X3JlYywgY2x1 c3RfaW5kZXgpKTsKICNlbmRpZgogCQl9CisKKwkJZXJyID0gREJfU1VDQ0VTUzsKIAl9CiAKIGZ1 bmNfZXhpdDoKQEAgLTI5MTIsNyArMjkzNCw2IEBAIGZ1bmNfZXhpdDoKIAkJYnRyX3BjdXJfc3Rv cmVfcG9zaXRpb24ocHJlYnVpbHQtPmNsdXN0X3BjdXIsIG10cik7CiAJfQogCi0JZXJyID0gREJf U1VDQ0VTUzsKIGVycl9leGl0OgogCXJldHVybihlcnIpOwogfQpAQCAtMzYyNiw4ICszNjQ3LDEy IEBAIHNob3J0Y3V0X2ZhaWxzX3Rvb19iaWdfcmVjOgogCQkJCQkgICAgICAgcHJlYnVpbHQtPnNl bGVjdF9sb2NrX3R5cGUsCiAJCQkJCSAgICAgICBMT0NLX0dBUCwgdGhyKTsKIAotCQkJaWYgKGVy ciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJCXN3aXRjaCAoZXJyKSB7CisJCQljYXNlIERCX1NVQ0NF U1NfTE9DS0VEX1JFQzoKKwkJCQllcnIgPSBEQl9TVUNDRVNTOworCQkJY2FzZSBEQl9TVUNDRVNT OgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKIAkJCQlnb3RvIGxvY2tfd2FpdF9vcl9lcnJvcjsK IAkJCX0KIAkJfQpAQCAtMzcyNCw4ICszNzQ5LDEyIEBAIHJlY19sb29wOgogCQkJCQkgICAgICAg cHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUsCiAJCQkJCSAgICAgICBMT0NLX09SRElOQVJZLCB0 aHIpOwogCi0JCQlpZiAoZXJyICE9IERCX1NVQ0NFU1MpIHsKLQorCQkJc3dpdGNoIChlcnIpIHsK KwkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJCWVyciA9IERCX1NVQ0NFU1M7CisJ CQljYXNlIERCX1NVQ0NFU1M6CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgogCQkJCWdvdG8gbG9j a193YWl0X29yX2Vycm9yOwogCQkJfQogCQl9CkBAIC0zODU2LDggKzM4ODUsMTEgQEAgd3Jvbmdf b2ZmczoKIAkJCQkJcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUsIExPQ0tfR0FQLAogCQkJCQl0 aHIpOwogCi0JCQkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7Ci0KKwkJCQlzd2l0Y2ggKGVycikg eworCQkJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVDOgorCQkJCWNhc2UgREJfU1VDQ0VTUzoK KwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKIAkJCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7 CiAJCQkJfQogCQkJfQpAQCAtMzg5MSw4ICszOTIzLDExIEBAIHdyb25nX29mZnM6CiAJCQkJCXBy ZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlLCBMT0NLX0dBUCwKIAkJCQkJdGhyKTsKIAotCQkJCWlm IChlcnIgIT0gREJfU1VDQ0VTUykgewotCisJCQkJc3dpdGNoIChlcnIpIHsKKwkJCQljYXNlIERC X1NVQ0NFU1NfTE9DS0VEX1JFQzoKKwkJCQljYXNlIERCX1NVQ0NFU1M6CisJCQkJCWJyZWFrOwor CQkJCWRlZmF1bHQ6CiAJCQkJCWdvdG8gbG9ja193YWl0X29yX2Vycm9yOwogCQkJCX0KIAkJCX0K QEAgLTM5NjEsMTUgKzM5OTYsMjEgQEAgbm9fZ2FwX2xvY2s6CiAKIAkJc3dpdGNoIChlcnIpIHsK IAkJCXJlY190KglvbGRfdmVyczsKLQkJY2FzZSBEQl9TVUNDRVNTOgorCQljYXNlIERCX1NVQ0NF U1NfTE9DS0VEX1JFQzoKIAkJCWlmIChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9iaW5sb2cKLQkJCSAg ICB8fCB0cngtPmlzb2xhdGlvbl9sZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09NTUlUVEVEKSB7CisJ CQkgICAgfHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwKKwkJCSAgICA8PSBUUlhfSVNPX1JFQURfQ09N TUlUVEVEKSB7CiAJCQkJLyogTm90ZSB0aGF0IGEgcmVjb3JkIG9mCiAJCQkJcHJlYnVpbHQtPmlu ZGV4IHdhcyBsb2NrZWQuICovCiAJCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAxOwogCQkJ fQorCQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJY2FzZSBEQl9TVUNDRVNTOgogCQkJYnJlYWs7CiAJ CWNhc2UgREJfTE9DS19XQUlUOgorCQkJLyogTmV2ZXIgdW5sb2NrIHJvd3MgdGhhdCB3ZXJlIHBh cnQgb2YgYSBjb25mbGljdC4gKi8KKwkJCXByZWJ1aWx0LT5uZXdfcmVjX2xvY2tzID0gMDsKKwog CQkJaWYgKFVOSVZfTElLRUxZKHByZWJ1aWx0LT5yb3dfcmVhZF90eXBlCiAJCQkJCSE9IFJPV19S RUFEX1RSWV9TRU1JX0NPTlNJU1RFTlQpCiAJCQkgICAgfHwgdW5pcXVlX3NlYXJjaApAQCAtMzk5 OSw3ICs0MDQwLDYgQEAgbm9fZ2FwX2xvY2s6CiAJCQlpZiAoVU5JVl9MSUtFTFkodHJ4LT53YWl0 X2xvY2sgIT0gTlVMTCkpIHsKIAkJCQlsb2NrX2NhbmNlbF93YWl0aW5nX2FuZF9yZWxlYXNlKAog CQkJCQl0cngtPndhaXRfbG9jayk7Ci0JCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPSAwOwog CQkJfSBlbHNlIHsKIAkJCQltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOwogCkBAIC00MDExLDkg KzQwNTEsNiBAQCBub19nYXBfbG9jazoKIAkJCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwKIAkJCQkJ CQkgICZoZWFwKTsKIAkJCQllcnIgPSBEQl9TVUNDRVNTOwotCQkJCS8qIE5vdGUgdGhhdCBhIHJl Y29yZCBvZgotCQkJCXByZWJ1aWx0LT5pbmRleCB3YXMgbG9ja2VkLiAqLwotCQkJCXByZWJ1aWx0 LT5uZXdfcmVjX2xvY2tzID0gMTsKIAkJCQlicmVhazsKIAkJCX0KIAkJCW11dGV4X2V4aXQoJmtl cm5lbF9tdXRleCk7CkBAIC00MTUxLDI3ICs0MTg4LDMwIEBAIHJlcXVpcmVzX2NsdXN0X3JlYzoK IAkJZXJyID0gcm93X3NlbF9nZXRfY2x1c3RfcmVjX2Zvcl9teXNxbChwcmVidWlsdCwgaW5kZXgs IHJlYywKIAkJCQkJCSAgICAgIHRociwgJmNsdXN0X3JlYywKIAkJCQkJCSAgICAgICZvZmZzZXRz LCAmaGVhcCwgJm10cik7Ci0JCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgeworCQlzd2l0Y2ggKGVy cikgeworCQljYXNlIERCX1NVQ0NFU1M6CisJCQlpZiAoY2x1c3RfcmVjID09IE5VTEwpIHsKKwkJ CQkvKiBUaGUgcmVjb3JkIGRpZCBub3QgZXhpc3QgaW4gdGhlIHJlYWQgdmlldyAqLworCQkJCXV0 X2FkKHByZWJ1aWx0LT5zZWxlY3RfbG9ja190eXBlID09IExPQ0tfTk9ORSk7CiAKKwkJCQlnb3Rv IG5leHRfcmVjOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgREJfU1VDQ0VTU19MT0NLRURfUkVD OgorCQkJdXRfYShjbHVzdF9yZWMgIT0gTlVMTCk7CisJCQlpZiAoc3J2X2xvY2tzX3Vuc2FmZV9m b3JfYmlubG9nCisJCQkgICAgIHx8IHRyeC0+aXNvbGF0aW9uX2xldmVsCisJCQkgICAgPD0gVFJY X0lTT19SRUFEX0NPTU1JVFRFRCkgeworCQkJCS8qIE5vdGUgdGhhdCB0aGUgY2x1c3RlcmVkIGlu ZGV4IHJlY29yZAorCQkJCXdhcyBsb2NrZWQuICovCisJCQkJcHJlYnVpbHQtPm5ld19yZWNfbG9j a3MgPSAyOworCQkJfQorCQkJZXJyID0gREJfU1VDQ0VTUzsKKwkJCWJyZWFrOworCQlkZWZhdWx0 OgogCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCX0KIAotCQlpZiAoY2x1c3RfcmVjID09 IE5VTEwpIHsKLQkJCS8qIFRoZSByZWNvcmQgZGlkIG5vdCBleGlzdCBpbiB0aGUgcmVhZCB2aWV3 ICovCi0JCQl1dF9hZChwcmVidWlsdC0+c2VsZWN0X2xvY2tfdHlwZSA9PSBMT0NLX05PTkUpOwot Ci0JCQlnb3RvIG5leHRfcmVjOwotCQl9Ci0KLQkJaWYgKChzcnZfbG9ja3NfdW5zYWZlX2Zvcl9i aW5sb2cKLQkJICAgICB8fCB0cngtPmlzb2xhdGlvbl9sZXZlbCA8PSBUUlhfSVNPX1JFQURfQ09N TUlUVEVEKQotCQkgICAgJiYgcHJlYnVpbHQtPnNlbGVjdF9sb2NrX3R5cGUgIT0gTE9DS19OT05F KSB7Ci0JCQkvKiBOb3RlIHRoYXQgYm90aCB0aGUgc2Vjb25kYXJ5IGluZGV4IHJlY29yZAotCQkJ YW5kIHRoZSBjbHVzdGVyZWQgaW5kZXggcmVjb3JkIHdlcmUgbG9ja2VkLiAqLwotCQkJdXRfYWQo cHJlYnVpbHQtPm5ld19yZWNfbG9ja3MgPT0gMSk7Ci0JCQlwcmVidWlsdC0+bmV3X3JlY19sb2Nr cyA9IDI7Ci0JCX0KLQogCQlpZiAoVU5JVl9VTkxJS0VMWShyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhj bHVzdF9yZWMsIGNvbXApKSkgewogCiAJCQkvKiBUaGUgcmVjb3JkIGlzIGRlbGV0ZSBtYXJrZWQ6 IHdlIGNhbiBza2lwIGl0ICovCgo= --===============0840591190== 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.1-innodb/ # testament_sha1: df317c95681f15027aaa243b3bfc2b33625b7201 # timestamp: 2010-06-02 13:24:46 +0300 # base_revision_id: marko.makela@stripped\ # 60x32xiivtqj9va1 # # Begin bundle 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 --===============0840591190==--