From: marko.makela Date: April 5 2011 11:14am Subject: bzr commit into mysql-trunk-innodb branch (marko.makela:3563) List-Archive: http://lists.mysql.com/commits/134705 Message-Id: <201104051115.p35BFEsj007016@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0112766751==" --===============0112766751== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjYtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9n N3JkbnAzcjVlZmMKCiAzNTYzIE1hcmtvIE3DpGtlbMOkCTIwMTEtMDQtMDUgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjUtaW5ub2RiIHRvIG15c3FsLXRydW5rLWlubm9kYi4KCiAgICBtb2Rp ZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvZmlsL2ZpbDBmaWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvbG9n MGxvZy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9vczB0aHJlYWQuaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvc3J2MHNydi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5 bmMuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHRyeC5oCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS91dDBkYmcuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvdXQwdXQuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazB3YWl0LmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvb3Mv b3MwZmlsZS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3Mwc3luYy5jCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBteXNxbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwogICAgICBzdG9y YWdlL2lubm9iYXNlL3Nydi9zcnYwc3J2LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2 MHN0YXJ0LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3luYy5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByb2xsLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS90cngv dHJ4MHRyeC5jCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1 LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwNDA1MTExMjQ4LTlzNW52OXF1cnQxcW00YXMKQEAgLTE3NDQsNyArMTc0NCw3IEBAIGJ1Zl9m bHVzaF9iYXRjaCgKIAl1dF9hZChmbHVzaF90eXBlID09IEJVRl9GTFVTSF9MUlUgfHwgZmx1c2hf dHlwZSA9PSBCVUZfRkxVU0hfTElTVCk7CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQo KGZsdXNoX3R5cGUgIT0gQlVGX0ZMVVNIX0xJU1QpCi0JICAgICAgfHwgc3luY190aHJlYWRfbGV2 ZWxzX2VtcHR5X2dlbihUUlVFKSk7CisJICAgICAgfHwgc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5 X2V4Y2VwdF9kaWN0KCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCiAJYnVmX3Bv b2xfbXV0ZXhfZW50ZXIoYnVmX3Bvb2wpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvZmlsL2ZpbDBmaWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9maWwvZmlsMGZpbC5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNy NWVmYworKysgYi9zdG9yYWdlL2lubm9iYXNlL2ZpbC9maWwwZmlsLmMJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTEyNDgtOXM1bnY5cXVydDFxbTRhcwpAQCAtNDUyNCw4 ICs0NTI0LDggQEAgZmlsX2Fpb193YWl0KAogCQlyZXQgPSBvc19haW9fbGludXhfaGFuZGxlKHNl Z21lbnQsICZmaWxfbm9kZSwKIAkJCQkJICAmbWVzc2FnZSwgJnR5cGUpOwogI2Vsc2UKLQkJcmV0 ID0gMDsgLyogRWxpbWluYXRlIGNvbXBpbGVyIHdhcm5pbmcgKi8KIAkJdXRfZXJyb3I7CisJCXJl dCA9IDA7IC8qIEVsaW1pbmF0ZSBjb21waWxlciB3YXJuaW5nICovCiAjZW5kaWYKIAl9IGVsc2Ug ewogCQlzcnZfc2V0X2lvX3RocmVhZF9vcF9pbmZvKHNlZ21lbnQsICJzaW11bGF0ZWQgYWlvIGhh bmRsZSIpOwpAQCAtNDUzNSw2ICs0NTM1LDEwIEBAIGZpbF9haW9fd2FpdCgKIAl9CiAKIAl1dF9h KHJldCk7CisJaWYgKFVOSVZfVU5MSUtFTFkoZmlsX25vZGUgPT0gTlVMTCkpIHsKKwkJdXRfYWQo c3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMpOworCQlyZXR1 cm47CisJfQogCiAJc3J2X3NldF9pb190aHJlYWRfb3BfaW5mbyhzZWdtZW50LCAiY29tcGxldGUg aW8gZm9yIGZpbCBub2RlIik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvbG9nMGxvZy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2xvZzBs b2cuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdy ZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9sb2cwbG9nLmljCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExMjQ4LTlzNW52OXF1cnQxcW00YXMK QEAgLTQzOSw3ICs0MzksNyBAQCBsb2dfZnJlZV9jaGVjayh2b2lkKQogewogCiAjaWZkZWYgVU5J Vl9TWU5DX0RFQlVHCi0JdXRfYWQoc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dlbihUUlVFKSk7 CisJdXRfYWQoc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2V4Y2VwdF9kaWN0KCkpOwogI2VuZGlm IC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCiAJaWYgKGxvZ19zeXMtPmNoZWNrX2ZsdXNoX29yX2No ZWNrcG9pbnQpIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv b3Mwc3luYy5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oCXJldmlk OnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYwor KysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3Mwc3luYy5oCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNDA1MTExMjQ4LTlzNW52OXF1cnQxcW00YXMKQEAgLTE2MiwxMCAr MTYyLDcgQEAgb3NfZXZlbnRfZnJlZSgKIAlvc19ldmVudF90CWV2ZW50KTsJLyohPCBpbjogZXZl bnQgdG8gZnJlZSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKLVdhaXRzIGZvciBhbiBldmVudCBvYmplY3QgdW50aWwg aXQgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlLiBJZgotc3J2X3NodXRkb3duX3N0YXRlID09IFNS Vl9TSFVURE9XTl9FWElUX1RIUkVBRFMgdGhpcyBhbHNvIGV4aXRzIHRoZQotd2FpdGluZyB0aHJl YWQgd2hlbiB0aGUgZXZlbnQgYmVjb21lcyBzaWduYWxlZCAob3IgaW1tZWRpYXRlbHkgaWYgdGhl Ci1ldmVudCBpcyBhbHJlYWR5IGluIHRoZSBzaWduYWxlZCBzdGF0ZSkuCitXYWl0cyBmb3IgYW4g ZXZlbnQgb2JqZWN0IHVudGlsIGl0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZS4KIAogVHlwaWNh bGx5LCBpZiB0aGUgZXZlbnQgaGFzIGJlZW4gc2lnbmFsbGVkIGFmdGVyIHRoZSBvc19ldmVudF9y ZXNldCgpCiB3ZSdsbCByZXR1cm4gaW1tZWRpYXRlbHkgYmVjYXVzZSBldmVudC0+aXNfc2V0ID09 IFRSVUUuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL29zMHRo cmVhZC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvb3MwdGhyZWFkLmgJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9vczB0aHJlYWQuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC0xMDcsOCAr MTA3LDkgQEAgVU5JVl9JTlRFUk4KIHZvaWQKIG9zX3RocmVhZF9leGl0KAogLyo9PT09PT09PT09 PSovCi0Jdm9pZCoJZXhpdF92YWx1ZSk7CS8qITwgaW46IGV4aXQgdmFsdWU7IGluIFdpbmRvd3Mg dGhpcyB2b2lkKgorCXZvaWQqCWV4aXRfdmFsdWUpCS8qITwgaW46IGV4aXQgdmFsdWU7IGluIFdp bmRvd3MgdGhpcyB2b2lkKgogCQkJCWlzIGNhc3QgYXMgYSBEV09SRCAqLworCV9fYXR0cmlidXRl X18oKGNvbGQsIG5vcmV0dXJuKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRoZSB0aHJlYWQg aWRlbnRpZmllciBvZiBjdXJyZW50IHRocmVhZC4KIEByZXR1cm4JY3VycmVudCB0aHJlYWQgaWRl bnRpZmllciAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9z cnYwc3J2LmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zcnYwc3J2LmgJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zcnYwc3J2LmgJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA0MDUxMTEyNDgtOXM1bnY5cXVydDFxbTRhcwpAQCAtNzc0LDggKzc3 NCw2IEBAIHN0cnVjdCBleHBvcnRfdmFyX3N0cnVjdHsKIAogLyoqIFRocmVhZCBzbG90IGluIHRo ZSB0aHJlYWQgdGFibGUuICAqLwogc3RydWN0IHNydl9zbG90X3N0cnVjdHsKLQlvc190aHJlYWRf aWRfdAlpZDsJCQkvKiE8IHRocmVhZCBpZCAqLwotCW9zX3RocmVhZF90CWhhbmRsZTsJCQkvKiE8 IHRocmVhZCBoYW5kbGUgKi8KIAllbnVtIHNydl90aHJlYWRfdHlwZQogCQkJdHlwZTsJCQkvKiE8 IHRocmVhZCB0eXBlOiB1c2VyLAogCQkJCQkJdXRpbGl0eSBldGMuICovCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQw NTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC00MjMsMTMgKzQyMyw2IEBAIHN5bmNfdGhyZWFk X3Jlc2V0X2xldmVsKAogLyo9PT09PT09PT09PT09PT09PT09PSovCiAJdm9pZCoJbGF0Y2gpOwkv KiE8IGluOiBwb2ludGVyIHRvIGEgbXV0ZXggb3IgYW4gcnctbG9jayAqLwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKLUNoZWNrcyB0aGF0IHRoZSBsZXZlbCBhcnJheSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlz IGVtcHR5LgotQHJldHVybglUUlVFIGlmIGVtcHR5ICovCi1VTklWX0lOVEVSTgotaWJvb2wKLXN5 bmNfdGhyZWFkX2xldmVsc19lbXB0eSh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09PT09PT09 PT0qLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyBpZiB0aGUgbGV2ZWwgYXJyYXkgZm9yIHRoZSBj dXJyZW50IHRocmVhZCBjb250YWlucyBhCiBtdXRleCBvciBydy1sYXRjaCBhdCB0aGUgc3BlY2lm aWVkIGxldmVsLgogQHJldHVybglhIG1hdGNoaW5nIGxhdGNoLCBvciBOVUxMIGlmIG5vdCBmb3Vu ZCAqLwpAQCAtNDQwLDE3ICs0MzMsMzMgQEAgc3luY190aHJlYWRfbGV2ZWxzX2NvbnRhaW5zKAog CXVsaW50CWxldmVsKTsJCQkvKiE8IGluOiBsYXRjaGluZyBvcmRlciBsZXZlbAogCQkJCQkoU1lO Q19ESUNULCAuLi4pKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DaGVja3MgaWYgdGhlIGxldmVsIGFycmF5 IGZvciB0aGUgY3VycmVudCB0aHJlYWQgaXMgZW1wdHkuCitDaGVja3MgdGhhdCB0aGUgbGV2ZWwg YXJyYXkgZm9yIHRoZSBjdXJyZW50IHRocmVhZCBpcyBlbXB0eS4KIEByZXR1cm4JYSBsYXRjaCwg b3IgTlVMTCBpZiBlbXB0eSBleGNlcHQgdGhlIGV4Y2VwdGlvbnMgc3BlY2lmaWVkIGJlbG93ICov CiBVTklWX0lOVEVSTgogdm9pZCoKIHN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV9nZW4oCiAv Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCWlib29sCWRpY3RfbXV0ZXhfYWxsb3dl ZCk7CS8qITwgaW46IFRSVUUgaWYgZGljdGlvbmFyeSBtdXRleCBpcwotCQkJCQlhbGxvd2VkIHRv IGJlIG93bmVkIGJ5IHRoZSB0aHJlYWQsCi0JCQkJCWFsc28gcHVyZ2VfaXNfcnVubmluZyBtdXRl eCBpcwotCQkJCQlhbGxvd2VkICovCi0jZGVmaW5lIHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9n ZW4oZCkgKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfZ2VuKGQpKQorCWlib29sCWRpY3Rf bXV0ZXhfYWxsb3dlZCkJLyohPCBpbjogVFJVRSBpZiBkaWN0aW9uYXJ5IG11dGV4IGlzCisJCQkJ CWFsbG93ZWQgdG8gYmUgb3duZWQgYnkgdGhlIHRocmVhZCAqLworCV9fYXR0cmlidXRlX18oKHdh cm5fdW51c2VkX3Jlc3VsdCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NoZWNrcyBpZiB0aGUgbGV2ZWwg YXJyYXkgZm9yIHRoZSBjdXJyZW50IHRocmVhZCBpcyBlbXB0eSwKK2V4Y2VwdCBmb3IgZGF0YSBk aWN0aW9uYXJ5IGxhdGNoZXMuICovCisjZGVmaW5lIHN5bmNfdGhyZWFkX2xldmVsc19lbXB0eV9l eGNlcHRfZGljdCgpCQlcCisJKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfZ2VuKFRSVUUp KQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK0NoZWNrcyBpZiB0aGUgbGV2ZWwgYXJyYXkgZm9yIHRoZSBjdXJy ZW50IHRocmVhZCBpcyBlbXB0eSwKK2V4Y2VwdCBmb3IgdGhlIGJ0cl9zZWFyY2hfbGF0Y2guCitA cmV0dXJuCWEgbGF0Y2gsIG9yIE5VTEwgaWYgZW1wdHkgZXhjZXB0IHRoZSBleGNlcHRpb25zIHNw ZWNpZmllZCBiZWxvdyAqLworVU5JVl9JTlRFUk4KK3ZvaWQqCitzeW5jX3RocmVhZF9sZXZlbHNf bm9uZW1wdHlfdHJ4KAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwlpYm9vbAlo YXNfc2VhcmNoX2xhdGNoKQorCQkJCS8qITwgaW46IFRSVUUgaWYgYW5kIG9ubHkgaWYgdGhlIHRo cmVhZAorCQkJCWlzIHN1cHBvc2VkIHRvIGhvbGQgYnRyX3NlYXJjaF9sYXRjaCAqLworCV9fYXR0 cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0 aGUgZGVidWcgaW5mb3JtYXRpb24gZm9yIGEgcmVzZXJ2ZWQgbXV0ZXguICovCiBVTklWX0lOVEVS TgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4Lmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdHJ4LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA0MDUxMTEyNDgtOXM1bnY5cXVydDFxbTRhcwpAQCAtNjcyLDE0ICs2NzIsMTAgQEAg c3RydWN0IHRyeF9zdHJ1Y3R7CiAJCQkJCWNvbnRhaW5zIGEgcG9pbnRlciB0byB0aGUgbGF0ZXN0 IGZpbGUKIAkJCQkJbmFtZTsgdGhpcyBpcyBOVUxMIGlmIGJpbmxvZyBpcyBub3QKIAkJCQkJdXNl ZCAqLwotCWliX2ludDY0X3QJbXlzcWxfbG9nX29mZnNldDsvKiE8IGlmIE15U1FMIGJpbmxvZyBp cyB1c2VkLCB0aGlzCi0JCQkJCSBmaWVsZCBjb250YWlucyB0aGUgZW5kIG9mZnNldCBvZiB0aGUK LQkJCQkJIGJpbmxvZyBlbnRyeSAqLwotCW9zX3RocmVhZF9pZF90CW15c3FsX3RocmVhZF9pZDsv KiE8IGlkIG9mIHRoZSBNeVNRTCB0aHJlYWQgYXNzb2NpYXRlZAotCQkJCQl3aXRoIHRoaXMgdHJh bnNhY3Rpb24gb2JqZWN0ICovCi0JdWxpbnQJCW15c3FsX3Byb2Nlc3Nfbm87LyohPCBzaW5jZSBp biBMaW51eCwgJ3RvcCcgcmVwb3J0cwotCQkJCQlwcm9jZXNzIGlkJ3MgYW5kIG5vdCB0aHJlYWQg aWQncywgd2UKLQkJCQkJc3RvcmUgdGhlIHByb2Nlc3MgbnVtYmVyIHRvbyAqLworCWliX2ludDY0 X3QJbXlzcWxfbG9nX29mZnNldDsKKwkJCQkJLyohPCBpZiBNeVNRTCBiaW5sb2cgaXMgdXNlZCwg dGhpcworCQkJCQlmaWVsZCBjb250YWlucyB0aGUgZW5kIG9mZnNldCBvZiB0aGUKKwkJCQkJYmlu bG9nIGVudHJ5ICovCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCXVsaW50 CQluX215c3FsX3RhYmxlc19pbl91c2U7IC8qITwgbnVtYmVyIG9mIElubm9iYXNlIHRhYmxlcwog CQkJCQl1c2VkIGluIHRoZSBwcm9jZXNzaW5nIG9mIHRoZSBjdXJyZW50Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MGRiZy5oJwotLS0gYS9zdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvdXQwZGJnLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEx MDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS91dDBkYmcuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTExMTI0OC05 czVudjlxdXJ0MXFtNGFzCkBAIC01MCw5ICs1MCwxMCBAQCBVTklWX0lOVEVSTgogdm9pZAogdXRf ZGJnX2Fzc2VydGlvbl9mYWlsZWQoCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KLQljb25zdCBj aGFyKiBleHByLAkvKiE8IGluOiB0aGUgZmFpbGVkIGFzc2VydGlvbiAqLwotCWNvbnN0IGNoYXIq IGZpbGUsCS8qITwgaW46IHNvdXJjZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGFzc2VydGlvbiAqLwot CXVsaW50IGxpbmUpOwkJLyohPCBpbjogbGluZSBudW1iZXIgb2YgdGhlIGFzc2VydGlvbiAqLwor CWNvbnN0IGNoYXIqCWV4cHIsCS8qITwgaW46IHRoZSBmYWlsZWQgYXNzZXJ0aW9uICovCisJY29u c3QgY2hhcioJZmlsZSwJLyohPCBpbjogc291cmNlIGZpbGUgY29udGFpbmluZyB0aGUgYXNzZXJ0 aW9uICovCisJdWxpbnQJCWxpbmUpCS8qITwgaW46IGxpbmUgbnVtYmVyIG9mIHRoZSBhc3NlcnRp b24gKi8KKwlfX2F0dHJpYnV0ZV9fKChub25udWxsKDIpLCBjb2xkKSk7CiAKICNpZiBkZWZpbmVk KF9fV0lOX18pIHx8IGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKICMgdW5kZWYgVVRfREJHX1VT RV9BQk9SVAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDB1 dC5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdXQwdXQuaAlyZXZpZDp2YXNpbC5k aW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3V0MHV0LmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA0MDUxMTEyNDgtOXM1bnY5cXVydDFxbTRhcwpAQCAtMjc5LDcgKzI3OSw4IEBAIFVO SVZfSU5URVJOCiB2b2lkCiB1dF9wcmludF90aW1lc3RhbXAoCiAvKj09PT09PT09PT09PT09PSov Ci0JRklMRSogIGZpbGUpOyAvKiE8IGluOiBmaWxlIHdoZXJlIHRvIHByaW50ICovCisJRklMRSoJ ZmlsZSkJLyohPCBpbjogZmlsZSB3aGVyZSB0byBwcmludCAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwsIGNvbGQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogU3ByaW50ZnMgYSB0aW1lc3RhbXAgdG8gYSBidWZmZXIs IDEzLi4xNCBjaGFycyBwbHVzIHRlcm1pbmF0aW5nIE5VTC4gKi8KIFVOSVZfSU5URVJOCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9sb2NrL2xvY2swd2FpdC5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2xvY2svbG9jazB3YWl0LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvbG9jay9sb2NrMHdhaXQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQw NTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC01OCwxMCArNTgsOSBAQCBsb2NrX3dhaXRfdGFi bGVfcHJpbnQodm9pZCkKIAlmb3IgKGkgPSAwOyBpIDwgT1NfVEhSRUFEX01BWF9OOyBpKyssICsr c2xvdCkgewogCiAJCWZwcmludGYoc3RkZXJyLAotCQkJIlNsb3QgJWx1OiB0aHJlYWQgaWQgJWx1 LCB0eXBlICVsdSwiCisJCQkiU2xvdCAlbHU6IHRocmVhZCB0eXBlICVsdSwiCiAJCQkiIGluIHVz ZSAlbHUsIHN1c3AgJWx1LCB0aW1lb3V0ICVsdSwgdGltZSAlbHVcbiIsCiAJCQkodWxvbmcpIGks Ci0JCQkodWxvbmcpIG9zX3RocmVhZF9wZihzbG90LT5pZCksCiAJCQkodWxvbmcpIHNsb3QtPnR5 cGUsCiAJCQkodWxvbmcpIHNsb3QtPmluX3VzZSwKIAkJCSh1bG9uZykgc2xvdC0+c3VzcGVuZGVk LApAQCAtMTU1LDggKzE1NCw2IEBAIGxvY2tfd2FpdF90YWJsZV9yZXNlcnZlX3Nsb3QoCiAJCQlz bG90LT5pbl91c2UgPSBUUlVFOwogCQkJc2xvdC0+dGhyID0gdGhyOwogCQkJc2xvdC0+dGhyLT5z bG90ID0gc2xvdDsKLQkJCXNsb3QtPmlkID0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCk7Ci0JCQlz bG90LT5oYW5kbGUgPSBvc190aHJlYWRfZ2V0X2N1cnIoKTsKIAogCQkJaWYgKHNsb3QtPmV2ZW50 ID09IE5VTEwpIHsKIAkJCQlzbG90LT5ldmVudCA9IG9zX2V2ZW50X2NyZWF0ZShOVUxMKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9s b2cvbG9nMGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExMjQ4 LTlzNW52OXF1cnQxcW00YXMKQEAgLTMxNDUsNiArMzE0NSw4IEBAIGxvZ3NfZW1wdHlfYW5kX21h cmtfZmlsZXNfYXRfc2h1dGRvd24odm8KIAl1bGludAkJCXRvdGFsX3RyeDsKIAl1bGludAkJCXBl bmRpbmdfaW87CiAJZW51bSBzcnZfdGhyZWFkX3R5cGUJYWN0aXZlX3RoZDsKKwljb25zdCBjaGFy KgkJdGhyZWFkX25hbWU7CisJaWJvb2wJCQlzZXJ2ZXJfYnVzeTsKIAogCWlmIChzcnZfcHJpbnRf dmVyYm9zZV9sb2cpIHsKIAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CkBAIC0zMTU5LDI5 ICszMTYxLDI0IEBAIGxvb3A6CiAKIAljb3VudCsrOwogCi0JLyogV2UgbmVlZCB0aGUgbW9uaXRv ciB0aHJlYWRzIHRvIHN0b3AgYmVmb3JlIHdlIHByb2NlZWQgd2l0aCBhCi0Jbm9ybWFsIHNodXRk b3duLiBJbiBjYXNlIG9mIHZlcnkgZmFzdCBzaHV0ZG93biwgaG93ZXZlciwgd2UgY2FuCi0JcHJv Y2VlZCB3aXRob3V0IHdhaXRpbmcgZm9yIG1vbml0b3IgdGhyZWFkcy4gKi8KLQotCWlmIChzcnZf ZmFzdF9zaHV0ZG93biA8IDIpIHsKLQkgICAgICAgCWNvbnN0IGNoYXIqCXRocmVhZF9uYW1lOwot CQkKLQkJdGhyZWFkX25hbWUgPSBzcnZfYW55X2JhY2tncm91bmRfdGhyZWFkc19hcmVfYWN0aXZl KCk7CisJLyogV2UgbmVlZCB0aGUgbW9uaXRvciB0aHJlYWRzIHRvIHN0b3AgYmVmb3JlIHdlIHBy b2NlZWQgd2l0aAorCWEgc2h1dGRvd24uICovCiAKLQkJaWYgKHRocmVhZF9uYW1lICE9IE5VTEwp IHsKLQkJCS8qIFByaW50IGEgbWVzc2FnZSBldmVyeSA2MCBzZWNvbmRzIGlmIHdlIGFyZSB3YWl0 aW5nCi0JCQlmb3IgdGhlIG1vbml0b3IgdGhyZWFkIHRvIGV4aXQuIE1hc3RlciBhbmQgd29ya2Vy Ci0JCSAgICAgICAJdGhyZWFkcyBjaGVjayB3aWxsIGJlIGRvbmUgbGF0ZXIuICovCi0KLQkJCWlm IChzcnZfcHJpbnRfdmVyYm9zZV9sb2cgJiYgY291bnQgPiA2MDApIHsKLQkJCQl1dF9wcmludF90 aW1lc3RhbXAoc3RkZXJyKTsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgSW5ub0RCOiBXYWl0aW5n IGZvciAlcyAiCi0JCQkJCSJ0byBleGl0XG4iLCB0aHJlYWRfbmFtZSk7Ci0JCQkJY291bnQgPSAw OwotCQkJfQorCXRocmVhZF9uYW1lID0gc3J2X2FueV9iYWNrZ3JvdW5kX3RocmVhZHNfYXJlX2Fj dGl2ZSgpOwogCi0JCQlnb3RvIGxvb3A7CisJaWYgKHRocmVhZF9uYW1lICE9IE5VTEwpIHsKKwkJ LyogUHJpbnQgYSBtZXNzYWdlIGV2ZXJ5IDYwIHNlY29uZHMgaWYgd2UgYXJlIHdhaXRpbmcKKwkJ Zm9yIHRoZSBtb25pdG9yIHRocmVhZCB0byBleGl0LiBNYXN0ZXIgYW5kIHdvcmtlcgorCQl0aHJl YWRzIGNoZWNrIHdpbGwgYmUgZG9uZSBsYXRlci4gKi8KKworCQlpZiAoc3J2X3ByaW50X3ZlcmJv c2VfbG9nICYmIGNvdW50ID4gNjAwKSB7CisJCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsK KwkJCWZwcmludGYoc3RkZXJyLCAiICBJbm5vREI6IFdhaXRpbmcgZm9yICVzIHRvIGV4aXRcbiIs CisJCQkJdGhyZWFkX25hbWUpOworCQkJY291bnQgPSAwOwogCQl9CisKKwkJZ290byBsb29wOwog CX0KIAogCS8qIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGxvbmdlciB0cmFuc2FjdGlvbnMuIFdl IG5lZWQgdGhpcyB3YWl0IGV2ZW4KQEAgLTMyMDQsMjEgKzMyMDEsNiBAQCBsb29wOgogCQlnb3Rv IGxvb3A7CiAJfQogCi0JaWYgKHNydl9mYXN0X3NodXRkb3duID09IDIpIHsKLQotCQkvKiBJbiB0 aGlzIGZhc3Rlc3Qgc2h1dGRvd24gd2UgZG8gbm90IGZsdXNoIHRoZSBidWZmZXIgcG9vbDoKLQkJ aXQgaXMgZXNzZW50aWFsbHkgYSAnY3Jhc2gnIG9mIHRoZSBJbm5vREIgc2VydmVyLiBNYWtlIHN1 cmUKLQkJdGhhdCB0aGUgbG9nIGlzIGFsbCBmbHVzaGVkIHRvIGRpc2ssIHNvIHRoYXQgd2UgY2Fu IHJlY292ZXIKLQkJYWxsIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgaW4gYSBjcmFzaCByZWNvdmVy eS4gV2UgbXVzdCBub3QKLQkJd3JpdGUgdGhlIGxzbiBzdGFtcHMgdG8gdGhlIGRhdGEgZmlsZXMs IHNpbmNlIGF0IGEgc3RhcnR1cAotCQlJbm5vREIgZGVkdWNlcyBmcm9tIHRoZSBzdGFtcHMgaWYg dGhlIHByZXZpb3VzIHNodXRkb3duIHdhcwotCQljbGVhbi4gKi8KLQotCQlsb2dfYnVmZmVyX2Zs dXNoX3RvX2Rpc2soKTsKLQotCQlyZXR1cm47IC8qIFdlIFNLSVAgQUxMIFRIRSBSRVNUICEhICov Ci0JfQotCiAJLyogQ2hlY2sgdGhhdCB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIGFyZSBzdXNwZW5k ZWQgKi8KIAogCWFjdGl2ZV90aGQgPSBzcnZfZ2V0X2FjdGl2ZV90aHJlYWRfdHlwZSgpOwpAQCAt MzI3NiwxNiArMzI1OCwxNSBAQCBsb29wOgogCQl9CiAJfQogCi0JbXV0ZXhfZW50ZXIoJihsb2df c3lzLT5tdXRleCkpOwotCi0JaWYgKGxvZ19zeXMtPm5fcGVuZGluZ19jaGVja3BvaW50X3dyaXRl cworCW11dGV4X2VudGVyKCZsb2dfc3lzLT5tdXRleCk7CisJc2VydmVyX2J1c3kgPSBsb2dfc3lz LT5uX3BlbmRpbmdfY2hlY2twb2ludF93cml0ZXMKICNpZmRlZiBVTklWX0xPR19BUkNISVZFCi0J ICAgIHx8IGxvZ19zeXMtPm5fcGVuZGluZ19hcmNoaXZlX2lvcworCQl8fCBsb2dfc3lzLT5uX3Bl bmRpbmdfYXJjaGl2ZV9pb3MKICNlbmRpZiAvKiBVTklWX0xPR19BUkNISVZFICovCi0JICAgIHx8 IGxvZ19zeXMtPm5fcGVuZGluZ193cml0ZXMpIHsKLQotCQltdXRleF9leGl0KCYobG9nX3N5cy0+ bXV0ZXgpKTsKKwkJfHwgbG9nX3N5cy0+bl9wZW5kaW5nX3dyaXRlczsKKwltdXRleF9leGl0KCZs b2dfc3lzLT5tdXRleCk7CiAKKwlpZiAoc2VydmVyX2J1c3kpIHsKIAkJaWYgKHNydl9wcmludF92 ZXJib3NlX2xvZyAmJiBjb3VudCA+IDYwMCkgewogCQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVy cik7CiAJCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTMyOTgsOCArMzI3OSw2IEBAIGxvb3A6CiAJCWdv dG8gbG9vcDsKIAl9CiAKLQltdXRleF9leGl0KCYobG9nX3N5cy0+bXV0ZXgpKTsKLQogCXBlbmRp bmdfaW8gPSBidWZfcG9vbF9jaGVja19ub19wZW5kaW5nX2lvKCk7CiAKIAlpZiAocGVuZGluZ19p bykgewpAQCAtMzMxNywxMCArMzI5NiwzNiBAQCBsb29wOgogI2lmZGVmIFVOSVZfTE9HX0FSQ0hJ VkUKIAlsb2dfYXJjaGl2ZV9hbGwoKTsKICNlbmRpZiAvKiBVTklWX0xPR19BUkNISVZFICovCisJ aWYgKHNydl9mYXN0X3NodXRkb3duID09IDIpIHsKKwkJLyogSW4gdGhpcyBmYXN0ZXN0IHNodXRk b3duIHdlIGRvIG5vdCBmbHVzaCB0aGUgYnVmZmVyIHBvb2w6CisJCWl0IGlzIGVzc2VudGlhbGx5 IGEgJ2NyYXNoJyBvZiB0aGUgSW5ub0RCIHNlcnZlci4gTWFrZSBzdXJlCisJCXRoYXQgdGhlIGxv ZyBpcyBhbGwgZmx1c2hlZCB0byBkaXNrLCBzbyB0aGF0IHdlIGNhbiByZWNvdmVyCisJCWFsbCBj b21taXR0ZWQgdHJhbnNhY3Rpb25zIGluIGEgY3Jhc2ggcmVjb3ZlcnkuIFdlIG11c3Qgbm90CisJ CXdyaXRlIHRoZSBsc24gc3RhbXBzIHRvIHRoZSBkYXRhIGZpbGVzLCBzaW5jZSBhdCBhIHN0YXJ0 dXAKKwkJSW5ub0RCIGRlZHVjZXMgZnJvbSB0aGUgc3RhbXBzIGlmIHRoZSBwcmV2aW91cyBzaHV0 ZG93biB3YXMKKwkJY2xlYW4uICovCisKKwkJbG9nX2J1ZmZlcl9mbHVzaF90b19kaXNrKCk7CisK KwkJLyogQ2hlY2sgdGhhdCB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIHN0YXkgc3VzcGVuZGVkICov CisJCXRocmVhZF9uYW1lID0gc3J2X2FueV9iYWNrZ3JvdW5kX3RocmVhZHNfYXJlX2FjdGl2ZSgp OworCQlpZiAodGhyZWFkX25hbWUgIT0gTlVMTCkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJ Iklubm9EQjogV2FybmluZzogYmFja2dyb3VuZCB0aHJlYWQgJXMiCisJCQkJIiB3b2tlIHVwIGR1 cmluZyBzaHV0ZG93blxuIiwgdGhyZWFkX25hbWUpOworCQkJZ290byBsb29wOworCQl9CisKKwkJ c3J2X3NodXRkb3duX3N0YXRlID0gU1JWX1NIVVRET1dOX0xBU1RfUEhBU0U7CisJCWZpbF9jbG9z ZV9hbGxfZmlsZXMoKTsKKwkJdGhyZWFkX25hbWUgPSBzcnZfYW55X2JhY2tncm91bmRfdGhyZWFk c19hcmVfYWN0aXZlKCk7CisJCXV0X2EoIXRocmVhZF9uYW1lKTsKKwkJcmV0dXJuOworCX0KIAog CWxvZ19tYWtlX2NoZWNrcG9pbnRfYXQoTFNOX01BWCwgVFJVRSk7CiAKLQltdXRleF9lbnRlcigm KGxvZ19zeXMtPm11dGV4KSk7CisJbXV0ZXhfZW50ZXIoJmxvZ19zeXMtPm11dGV4KTsKIAogCWxz biA9IGxvZ19zeXMtPmxzbjsKIApAQCAtMzMzMSw3ICszMzM2LDcgQEAgbG9vcDoKICNlbmRpZiAv KiBVTklWX0xPR19BUkNISVZFICovCiAJICAgICkgewogCi0JCW11dGV4X2V4aXQoJihsb2dfc3lz LT5tdXRleCkpOworCQltdXRleF9leGl0KCZsb2dfc3lzLT5tdXRleCk7CiAKIAkJZ290byBsb29w OwogCX0KQEAgLTMzNDksMTMgKzMzNTQsMTQgQEAgbG9vcDoKIAlsb2dfYXJjaGl2ZV9jbG9zZV9n cm91cHMoVFJVRSk7CiAjZW5kaWYgLyogVU5JVl9MT0dfQVJDSElWRSAqLwogCi0JbXV0ZXhfZXhp dCgmKGxvZ19zeXMtPm11dGV4KSk7CisJbXV0ZXhfZXhpdCgmbG9nX3N5cy0+bXV0ZXgpOwogCiAJ LyogQ2hlY2sgdGhhdCB0aGUgYmFja2dyb3VuZCB0aHJlYWRzIHN0YXkgc3VzcGVuZGVkICovCi0J aWYgKHNydl9nZXRfYWN0aXZlX3RocmVhZF90eXBlKCkgIT0gU1JWX05PTkUpIHsKKwl0aHJlYWRf bmFtZSA9IHNydl9hbnlfYmFja2dyb3VuZF90aHJlYWRzX2FyZV9hY3RpdmUoKTsKKwlpZiAodGhy ZWFkX25hbWUgIT0gTlVMTCkgewogCQlmcHJpbnRmKHN0ZGVyciwKLQkJCSJJbm5vREI6IFdhcm5p bmc6IHNvbWUgYmFja2dyb3VuZCB0aHJlYWQgd29rZSB1cCIKLQkJCSIgZHVyaW5nIHNodXRkb3du XG4iKTsKKwkJCSJJbm5vREI6IFdhcm5pbmc6IGJhY2tncm91bmQgdGhyZWFkICVzIgorCQkJIiB3 b2tlIHVwIGR1cmluZyBzaHV0ZG93blxuIiwgdGhyZWFkX25hbWUpOwogCiAJCWdvdG8gbG9vcDsK IAl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9vcy9vczBmaWxlLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3MwZmlsZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYworKysgYi9zdG9yYWdlL2lubm9i YXNlL29zL29zMGZpbGUuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQwNTEx MTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC00MDgyLDEzICs0MDgyLDEzIEBAIG9zX2Fpb19mdW5j KAogCX0KIAogdHJ5X2FnYWluOgotCWlmIChtb2RlID09IE9TX0FJT19OT1JNQUwpIHsKLQkJaWYg KHR5cGUgPT0gT1NfRklMRV9SRUFEKSB7Ci0JCQlhcnJheSA9IG9zX2Fpb19yZWFkX2FycmF5Owot CQl9IGVsc2UgewotCQkJYXJyYXkgPSBvc19haW9fd3JpdGVfYXJyYXk7Ci0JCX0KLQl9IGVsc2Ug aWYgKG1vZGUgPT0gT1NfQUlPX0lCVUYpIHsKKwlzd2l0Y2ggKG1vZGUpIHsKKwljYXNlIE9TX0FJ T19OT1JNQUw6CisJCWFycmF5ID0gKHR5cGUgPT0gT1NfRklMRV9SRUFEKQorCQkJPyBvc19haW9f cmVhZF9hcnJheQorCQkJOiBvc19haW9fd3JpdGVfYXJyYXk7CisJCWJyZWFrOworCWNhc2UgT1Nf QUlPX0lCVUY6CiAJCXV0X2FkKHR5cGUgPT0gT1NfRklMRV9SRUFEKTsKIAkJLyogUmVkdWNlIHBy b2JhYmlsaXR5IG9mIGRlYWRsb2NrIGJ1Z3MgaW4gY29ubmVjdGlvbiB3aXRoIGlidWY6CiAJCWRv IG5vdCBsZXQgdGhlIGlidWYgaS9vIGhhbmRsZXIgc2xlZXAgKi8KQEAgLTQwOTYsMTkgKzQwOTYs MjEgQEAgdHJ5X2FnYWluOgogCQl3YWtlX2xhdGVyID0gRkFMU0U7CiAKIAkJYXJyYXkgPSBvc19h aW9faWJ1Zl9hcnJheTsKLQl9IGVsc2UgaWYgKG1vZGUgPT0gT1NfQUlPX0xPRykgewotCisJCWJy ZWFrOworCWNhc2UgT1NfQUlPX0xPRzoKIAkJYXJyYXkgPSBvc19haW9fbG9nX2FycmF5OwotCX0g ZWxzZSBpZiAobW9kZSA9PSBPU19BSU9fU1lOQykgeworCQlicmVhazsKKwljYXNlIE9TX0FJT19T WU5DOgogCQlhcnJheSA9IG9zX2Fpb19zeW5jX2FycmF5OwogCiAjaWYgZGVmaW5lZChMSU5VWF9O QVRJVkVfQUlPKQogCQkvKiBJbiBMaW51eCBuYXRpdmUgQUlPIHdlIGRvbid0IHVzZSBzeW5jIElP IGFycmF5LiAqLwogCQl1dF9hKCFzcnZfdXNlX25hdGl2ZV9haW8pOwogI2VuZGlmIC8qIExJTlVY X05BVElWRV9BSU8gKi8KLQl9IGVsc2UgewotCQlhcnJheSA9IE5VTEw7IC8qIEVsaW1pbmF0ZSBj b21waWxlciB3YXJuaW5nICovCisJCWJyZWFrOworCWRlZmF1bHQ6CiAJCXV0X2Vycm9yOworCQlh cnJheSA9IE5VTEw7IC8qIEVsaW1pbmF0ZSBjb21waWxlciB3YXJuaW5nICovCiAJfQogCiAJc2xv dCA9IG9zX2Fpb19hcnJheV9yZXNlcnZlX3Nsb3QodHlwZSwgYXJyYXksIG1lc3NhZ2UxLCBtZXNz YWdlMiwgZmlsZSwKQEAgLTQyNzEsMTEgKzQyNzMsMTcgQEAgb3NfYWlvX3dpbmRvd3NfaGFuZGxl KAogCQkJCQkgICBJTkZJTklURSk7CiAJfQogCi0JaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBT UlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0JCW9zX3RocmVhZF9leGl0KE5VTEwpOworCW9z X211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CisKKwlpZiAoc3J2X3NodXRkb3duX3N0YXRlID09 IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFMKKwkgICAgJiYgYXJyYXktPm5fcmVzZXJ2ZWQgPT0g MCkgeworCQkqbWVzc2FnZTEgPSBOVUxMOworCQkqbWVzc2FnZTIgPSBOVUxMOworCQlvc19tdXRl eF9leGl0KGFycmF5LT5tdXRleCk7CisJCXJldHVybihUUlVFKTsKIAl9CiAKLQlvc19tdXRleF9l bnRlcihhcnJheS0+bXV0ZXgpOworCXV0X2EoaSA+PSBXQUlUX09CSkVDVF8wICYmIGkgPD0gV0FJ VF9PQkpFQ1RfMCArIG4pOwogCiAJc2xvdCA9IG9zX2Fpb19hcnJheV9nZXRfbnRoX3Nsb3QoYXJy YXksIGkgKyBzZWdtZW50ICogbik7CiAKQEAgLTQ0MjEsMTQgKzQ0MjksNiBAQCBvc19haW9fbGlu dXhfY29sbGVjdCgKIAogcmV0cnk6CiAKLQkvKiBHbyBkb3duIGlmIHdlIGFyZSBpbiBzaHV0ZG93 biBtb2RlLgotCUluIGNhc2Ugb2Ygc3J2X2Zhc3Rfc2h1dGRvd24gPT0gMiwgdGhlcmUgbWF5IGJl IHBlbmRpbmcKLQlJTyByZXF1ZXN0cyBidXQgdGhhdCBzaG91bGQgYmUgT0sgYXMgd2UgZXNzZW50 aWFsbHkgdHJlYXQKLQl0aGF0IGFzIGEgY3Jhc2ggb2YgSW5ub0RCLiAqLwotCWlmIChzcnZfc2h1 dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUykgewotCQlvc190aHJlYWRf ZXhpdChOVUxMKTsKLQl9Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBldmVudHMuIFRoZSB0aW1lb3V0 IHZhbHVlIGlzIGFyYml0cmFyeS4KIAlXZSBwcm9iYWJseSBuZWVkIHRvIGV4cGVyaW1lbnQgd2l0 aCBpdCBhIGxpdHRsZS4gKi8KIAltZW1zZXQoZXZlbnRzLCAwLCBzaXplb2YoKmV2ZW50cykgKiBz ZWdfc2l6ZSk7CkBAIC00NDM3LDc2ICs0NDM3LDcyIEBAIHJldHJ5OgogCiAJcmV0ID0gaW9fZ2V0 ZXZlbnRzKGlvX2N0eCwgMSwgc2VnX3NpemUsIGV2ZW50cywgJnRpbWVvdXQpOwogCi0JLyogVGhp cyBlcnJvciBoYW5kbGluZyBpcyBmb3IgYW55IGVycm9yIGluIGNvbGxlY3RpbmcgdGhlCi0JSU8g cmVxdWVzdHMuIFRoZSBlcnJvcnMsIGlmIGFueSwgZm9yIGFueSBwYXJ0aWN1bGFyIElPCi0JcmVx dWVzdCBhcmUgc2ltcGx5IHBhc3NlZCBvbiB0byB0aGUgY2FsbGluZyByb3V0aW5lLiAqLworCWlm IChyZXQgPiAwKSB7CisJCWZvciAoaSA9IDA7IGkgPCByZXQ7IGkrKykgeworCQkJb3NfYWlvX3Ns b3RfdCoJc2xvdDsKKwkJCXN0cnVjdCBpb2NiKgljb250cm9sOworCisJCQljb250cm9sID0gKHN0 cnVjdCBpb2NiICopZXZlbnRzW2ldLm9iajsKKwkJCXV0X2EoY29udHJvbCAhPSBOVUxMKTsKKwor CQkJc2xvdCA9IChvc19haW9fc2xvdF90ICopIGNvbnRyb2wtPmRhdGE7CisKKwkJCS8qIFNvbWUg c2FuaXR5IGNoZWNrcy4gKi8KKwkJCXV0X2Eoc2xvdCAhPSBOVUxMKTsKKwkJCXV0X2Eoc2xvdC0+ cmVzZXJ2ZWQpOwogCi0JLyogTm90IGVub3VnaCByZXNvdXJjZXMhIFRyeSBhZ2Fpbi4gKi8KLQlp ZiAocmV0ID09IC1FQUdBSU4pIHsKLQkJZ290byByZXRyeTsKLQl9CisjaWYgZGVmaW5lZChVTklW X0FJT19ERUJVRykKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJpb19nZXRldmVudHNbJWNdOiBz bG90WyVwXSBjdHhbJXBdIgorCQkJCSIgc2VnWyVsdV1cbiIsCisJCQkJKHNsb3QtPnR5cGUgPT0g T1NfRklMRV9XUklURSkgPyAndycgOiAncicsCisJCQkJc2xvdCwgaW9fY3R4LCBzZWdtZW50KTsK KyNlbmRpZgogCi0JLyogSW50ZXJydXB0ZWQhIEkgaGF2ZSB0ZXN0ZWQgdGhlIGJlaGF2aW91ciBp biBjYXNlIG9mIGFuCi0JaW50ZXJydXB0LiBJZiB3ZSBoYXZlIHNvbWUgY29tcGxldGVkIElPcyBh dmFpbGFibGUgdGhlbgotCXRoZSByZXR1cm4gY29kZSB3aWxsIGJlIHRoZSBudW1iZXIgb2YgSU9z LiBXZSBnZXQgRUlOVFIgb25seQotCWlmIHRoZXJlIGFyZSBubyBjb21wbGV0ZWQgSU9zIGFuZCB3 ZSBoYXZlIGJlZW4gaW50ZXJydXB0ZWQuICovCi0JaWYgKHJldCA9PSAtRUlOVFIpIHsKLQkJZ290 byByZXRyeTsKLQl9CisJCQkvKiBXZSBhcmUgbm90IHNjcmliYmxpbmcgcHJldmlvdXMgc2VnbWVu dC4gKi8KKwkJCXV0X2Eoc2xvdC0+cG9zID49IHN0YXJ0X3Bvcyk7CiAKLQkvKiBObyBwZW5kaW5n IHJlcXVlc3QhIEdvIGJhY2sgYW5kIGNoZWNrIGFnYWluLiAqLwotCWlmIChyZXQgPT0gMCkgewot CQlnb3RvIHJldHJ5OwotCX0KKwkJCS8qIFdlIGhhdmUgbm90IG92ZXJzdGVwcGVkIHRvIG5leHQg c2VnbWVudC4gKi8KKwkJCXV0X2Eoc2xvdC0+cG9zIDwgZW5kX3Bvcyk7CiAKLQkvKiBBbGwgb3Ro ZXIgZXJyb3JzISBzaG91bGQgY2F1c2UgYSB0cmFwIGZvciBub3cuICovCi0JaWYgKFVOSVZfVU5M SUtFTFkocmV0IDwgMCkpIHsKLQkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7Ci0JCWZwcmlu dGYoc3RkZXJyLAotCQkJIiAgSW5ub0RCOiB1bmV4cGVjdGVkIHJldF9jb2RlWyVkXSBmcm9tIgot CQkJIiBpb19nZXRldmVudHMoKSFcbiIsIHJldCk7Ci0JCXV0X2Vycm9yOworCQkJLyogTWFyayB0 aGlzIHJlcXVlc3QgYXMgY29tcGxldGVkLiBUaGUgZXJyb3IgaGFuZGxpbmcKKwkJCXdpbGwgYmUg ZG9uZSBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbi4gKi8KKwkJCW9zX211dGV4X2VudGVyKGFycmF5 LT5tdXRleCk7CisJCQlzbG90LT5uX2J5dGVzID0gZXZlbnRzW2ldLnJlczsKKwkJCXNsb3QtPnJl dCA9IGV2ZW50c1tpXS5yZXMyOworCQkJc2xvdC0+aW9fYWxyZWFkeV9kb25lID0gVFJVRTsKKwkJ CW9zX211dGV4X2V4aXQoYXJyYXktPm11dGV4KTsKKwkJfQorCQlyZXR1cm47CiAJfQogCi0JdXRf YShyZXQgPiAwKTsKLQotCWZvciAoaSA9IDA7IGkgPCByZXQ7IGkrKykgewotCQlvc19haW9fc2xv dF90KglzbG90OwotCQlzdHJ1Y3QgaW9jYioJY29udHJvbDsKLQotCQljb250cm9sID0gKHN0cnVj dCBpb2NiICopZXZlbnRzW2ldLm9iajsKLQkJdXRfYShjb250cm9sICE9IE5VTEwpOwotCi0JCXNs b3QgPSAob3NfYWlvX3Nsb3RfdCAqKSBjb250cm9sLT5kYXRhOwotCi0JCS8qIFNvbWUgc2FuaXR5 IGNoZWNrcy4gKi8KLQkJdXRfYShzbG90ICE9IE5VTEwpOwotCQl1dF9hKHNsb3QtPnJlc2VydmVk KTsKLQotI2lmIGRlZmluZWQoVU5JVl9BSU9fREVCVUcpCi0JCWZwcmludGYoc3RkZXJyLAotCQkJ ImlvX2dldGV2ZW50c1slY106IHNsb3RbJXBdIGN0eFslcF0iCi0JCQkiIHNlZ1slbHVdXG4iLAot CQkJKHNsb3QtPnR5cGUgPT0gT1NfRklMRV9XUklURSkgPyAndycgOiAncicsCi0JCQlzbG90LCBp b19jdHgsIHNlZ21lbnQpOwotI2VuZGlmCi0KLQkJLyogV2UgYXJlIG5vdCBzY3JpYmJsaW5nIHBy ZXZpb3VzIHNlZ21lbnQuICovCi0JCXV0X2Eoc2xvdC0+cG9zID49IHN0YXJ0X3Bvcyk7CisJaWYg KFVOSVZfVU5MSUtFTFkoc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9FWElUX1RI UkVBRFMpKSB7CisJCXJldHVybjsKKwl9CiAKLQkJLyogV2UgaGF2ZSBub3Qgb3ZlcnN0ZXBwZWQg dG8gbmV4dCBzZWdtZW50LiAqLwotCQl1dF9hKHNsb3QtPnBvcyA8IGVuZF9wb3MpOworCS8qIFRo aXMgZXJyb3IgaGFuZGxpbmcgaXMgZm9yIGFueSBlcnJvciBpbiBjb2xsZWN0aW5nIHRoZQorCUlP IHJlcXVlc3RzLiBUaGUgZXJyb3JzLCBpZiBhbnksIGZvciBhbnkgcGFydGljdWxhciBJTworCXJl cXVlc3QgYXJlIHNpbXBseSBwYXNzZWQgb24gdG8gdGhlIGNhbGxpbmcgcm91dGluZS4gKi8KIAot CQkvKiBNYXJrIHRoaXMgcmVxdWVzdCBhcyBjb21wbGV0ZWQuIFRoZSBlcnJvciBoYW5kbGluZwot CQl3aWxsIGJlIGRvbmUgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24uICovCi0JCW9zX211dGV4X2Vu dGVyKGFycmF5LT5tdXRleCk7Ci0JCXNsb3QtPm5fYnl0ZXMgPSBldmVudHNbaV0ucmVzOwotCQlz bG90LT5yZXQgPSBldmVudHNbaV0ucmVzMjsKLQkJc2xvdC0+aW9fYWxyZWFkeV9kb25lID0gVFJV RTsKLQkJb3NfbXV0ZXhfZXhpdChhcnJheS0+bXV0ZXgpOworCXN3aXRjaCAocmV0KSB7CisJY2Fz ZSAtRUFHQUlOOgorCQkvKiBOb3QgZW5vdWdoIHJlc291cmNlcyEgVHJ5IGFnYWluLiAqLworCWNh c2UgLUVJTlRSOgorCQkvKiBJbnRlcnJ1cHRlZCEgSSBoYXZlIHRlc3RlZCB0aGUgYmVoYXZpb3Vy IGluIGNhc2Ugb2YgYW4KKwkJaW50ZXJydXB0LiBJZiB3ZSBoYXZlIHNvbWUgY29tcGxldGVkIElP cyBhdmFpbGFibGUgdGhlbgorCQl0aGUgcmV0dXJuIGNvZGUgd2lsbCBiZSB0aGUgbnVtYmVyIG9m IElPcy4gV2UgZ2V0IEVJTlRSIG9ubHkKKwkJaWYgdGhlcmUgYXJlIG5vIGNvbXBsZXRlZCBJT3Mg YW5kIHdlIGhhdmUgYmVlbiBpbnRlcnJ1cHRlZC4gKi8KKwljYXNlIDA6CisJCS8qIE5vIHBlbmRp bmcgcmVxdWVzdCEgR28gYmFjayBhbmQgY2hlY2sgYWdhaW4uICovCisJCWdvdG8gcmV0cnk7CiAJ fQogCi0JcmV0dXJuOworCS8qIEFsbCBvdGhlciBlcnJvcnMgc2hvdWxkIGNhdXNlIGEgdHJhcCBm b3Igbm93LiAqLworCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOworCWZwcmludGYoc3RkZXJy LAorCQkiICBJbm5vREI6IHVuZXhwZWN0ZWQgcmV0X2NvZGVbJWRdIGZyb20gaW9fZ2V0ZXZlbnRz KCkhXG4iLAorCQlyZXQpOworCXV0X2Vycm9yOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKQEAg LTQ1NTAsMjAgKzQ1NDYsMzUgQEAgb3NfYWlvX2xpbnV4X2hhbmRsZSgKIAogCS8qIExvb3AgdW50 aWwgd2UgaGF2ZSBmb3VuZCBhIGNvbXBsZXRlZCByZXF1ZXN0LiAqLwogCWZvciAoOzspIHsKKwkJ aWJvb2wJYW55X3Jlc2VydmVkID0gRkFMU0U7CiAJCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRl eCk7CiAJCWZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKIAkJCXNsb3QgPSBvc19haW9fYXJyYXlf Z2V0X250aF9zbG90KAotCQkJCQlhcnJheSwgaSArIHNlZ21lbnQgKiBuKTsKLQkJCWlmIChzbG90 LT5yZXNlcnZlZCAmJiBzbG90LT5pb19hbHJlYWR5X2RvbmUpIHsKKwkJCQlhcnJheSwgaSArIHNl Z21lbnQgKiBuKTsKKwkJCWlmICghc2xvdC0+cmVzZXJ2ZWQpIHsKKwkJCQljb250aW51ZTsKKwkJ CX0gZWxzZSBpZiAoc2xvdC0+aW9fYWxyZWFkeV9kb25lKSB7CiAJCQkJLyogU29tZXRoaW5nIGZv ciB1cyB0byB3b3JrIG9uLiAqLwogCQkJCWdvdG8gZm91bmQ7CisJCQl9IGVsc2UgeworCQkJCWFu eV9yZXNlcnZlZCA9IFRSVUU7CiAJCQl9CiAJCX0KIAogCQlvc19tdXRleF9leGl0KGFycmF5LT5t dXRleCk7CiAKLQkJLyogV2UgZG9uJ3QgaGF2ZSBhbnkgY29tcGxldGVkIHJlcXVlc3QuCi0JCVdh aXQgZm9yIHNvbWUgcmVxdWVzdC4gTm90ZSB0aGF0IHdlIHJldHVybgorCQkvKiBUaGVyZSBpcyBu byBjb21wbGV0ZWQgcmVxdWVzdC4KKwkJSWYgdGhlcmUgaXMgbm8gcGVuZGluZyByZXF1ZXN0IGF0 IGFsbCwKKwkJYW5kIHRoZSBzeXN0ZW0gaXMgYmVpbmcgc2h1dCBkb3duLCBleGl0LiAqLworCQlp ZiAoVU5JVl9VTkxJS0VMWQorCQkgICAgKCFhbnlfcmVzZXJ2ZWQKKwkJICAgICAmJiBzcnZfc2h1 dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUykpIHsKKwkJCSptZXNzYWdl MSA9IE5VTEw7CisJCQkqbWVzc2FnZTIgPSBOVUxMOworCQkJcmV0dXJuKFRSVUUpOworCQl9CisK KwkJLyogV2FpdCBmb3Igc29tZSByZXF1ZXN0LiBOb3RlIHRoYXQgd2UgcmV0dXJuCiAJCWZyb20g d2FpdCBpZmYgd2UgaGF2ZSBmb3VuZCBhIHJlcXVlc3QuICovCiAKIAkJc3J2X3NldF9pb190aHJl YWRfb3BfaW5mbyhnbG9iYWxfc2VnLApAQCAtNDY1OSw2ICs0NjcwLDcgQEAgb3NfYWlvX3NpbXVs YXRlZF9oYW5kbGUoCiAJYnl0ZSoJCWNvbWJpbmVkX2J1ZjsKIAlieXRlKgkJY29tYmluZWRfYnVm MjsKIAlpYm9vbAkJcmV0OworCWlib29sCQlhbnlfcmVzZXJ2ZWQ7CiAJdWxpbnQJCW47CiAJdWxp bnQJCWk7CiAKQEAgLTQ2ODksMTggKzQ3MDEsMjEgQEAgcmVzdGFydDoKIAkJZ290byByZWNvbW1l bmRlZF9zbGVlcDsKIAl9CiAKLQlvc19tdXRleF9lbnRlcihhcnJheS0+bXV0ZXgpOwotCiAJc3J2 X3NldF9pb190aHJlYWRfb3BfaW5mbyhnbG9iYWxfc2VnbWVudCwKIAkJCQkgICJsb29raW5nIGZv ciBpL28gcmVxdWVzdHMgKGIpIik7CiAKIAkvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHNsb3QgZm9y IHdoaWNoIHRoZSBpL28gaGFzIGFscmVhZHkgYmVlbgogCWRvbmUgKi8KKwlhbnlfcmVzZXJ2ZWQg PSBGQUxTRTsKKworCW9zX211dGV4X2VudGVyKGFycmF5LT5tdXRleCk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7CiAJCXNsb3QgPSBvc19haW9fYXJyYXlfZ2V0X250aF9zbG90KGFycmF5 LCBpICsgc2VnbWVudCAqIG4pOwogCi0JCWlmIChzbG90LT5yZXNlcnZlZCAmJiBzbG90LT5pb19h bHJlYWR5X2RvbmUpIHsKKwkJaWYgKCFzbG90LT5yZXNlcnZlZCkgeworCQkJY29udGludWU7CisJ CX0gZWxzZSBpZiAoc2xvdC0+aW9fYWxyZWFkeV9kb25lKSB7CiAKIAkJCWlmIChvc19haW9fcHJp bnRfZGVidWcpIHsKIAkJCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTQ3MTIsOSArNDcyNywyMyBAQCBy ZXN0YXJ0OgogCQkJcmV0ID0gVFJVRTsKIAogCQkJZ290byBzbG90X2lvX2RvbmU7CisJCX0gZWxz ZSB7CisJCQlhbnlfcmVzZXJ2ZWQgPSBUUlVFOwogCQl9CiAJfQogCisJLyogVGhlcmUgaXMgbm8g Y29tcGxldGVkIHJlcXVlc3QuCisJSWYgdGhlcmUgaXMgbm8gcGVuZGluZyByZXF1ZXN0IGF0IGFs bCwKKwlhbmQgdGhlIHN5c3RlbSBpcyBiZWluZyBzaHV0IGRvd24sIGV4aXQuICovCisJaWYgKFVO SVZfVU5MSUtFTFkKKwkgICAgKCFhbnlfcmVzZXJ2ZWQKKwkgICAgICYmIHNydl9zaHV0ZG93bl9z dGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSkgeworCQlvc19tdXRleF9leGl0KGFy cmF5LT5tdXRleCk7CisJCSptZXNzYWdlMSA9IE5VTEw7CisJCSptZXNzYWdlMiA9IE5VTEw7CisJ CXJldHVybihUUlVFKTsKKwl9CisKIAluX2NvbnNlY3V0aXZlID0gMDsKIAogCS8qIElmIHRoZXJl IGFyZSBhdCBsZWFzdCAyIHNlY29uZHMgb2xkIHJlcXVlc3RzLCB0aGVuIHBpY2sgdGhlIG9sZGVz dAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvb3Mvb3Mwc3luYy5jJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL29zL29zMHN5bmMuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAzcjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9vcy9vczBzeW5jLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTEy NDgtOXM1bnY5cXVydDFxbTRhcwpAQCAtNTcwLDEwICs1NzAsNyBAQCBvc19ldmVudF9mcmVlKAog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLVdhaXRzIGZvciBhbiBldmVudCBvYmplY3QgdW50aWwgaXQgaXMgaW4gdGhl IHNpZ25hbGVkIHN0YXRlLiBJZgotc3J2X3NodXRkb3duX3N0YXRlID09IFNSVl9TSFVURE9XTl9F WElUX1RIUkVBRFMgdGhpcyBhbHNvIGV4aXRzIHRoZQotd2FpdGluZyB0aHJlYWQgd2hlbiB0aGUg ZXZlbnQgYmVjb21lcyBzaWduYWxlZCAob3IgaW1tZWRpYXRlbHkgaWYgdGhlCi1ldmVudCBpcyBh bHJlYWR5IGluIHRoZSBzaWduYWxlZCBzdGF0ZSkuCitXYWl0cyBmb3IgYW4gZXZlbnQgb2JqZWN0 IHVudGlsIGl0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZS4KIAogVHlwaWNhbGx5LCBpZiB0aGUg ZXZlbnQgaGFzIGJlZW4gc2lnbmFsbGVkIGFmdGVyIHRoZSBvc19ldmVudF9yZXNldCgpCiB3ZSds bCByZXR1cm4gaW1tZWRpYXRlbHkgYmVjYXVzZSBldmVudC0+aXNfc2V0ID09IFRSVUUuCkBAIC01 OTgsOCArNTk1LDYgQEAgb3NfZXZlbnRfd2FpdF9sb3coCiAJCQkJCXJldHVybmVkIGJ5IHByZXZp b3VzIGNhbGwgb2YKIAkJCQkJb3NfZXZlbnRfcmVzZXQoKS4gKi8KIHsKLQlpYl9pbnQ2NF90CW9s ZF9zaWduYWxfY291bnQ7Ci0KICNpZmRlZiBfX1dJTl9fCiAJaWYoIXNydl91c2VfbmF0aXZlX2Nv bmRpdGlvbnMpIHsKIAkJRFdPUkQJZXJyOwpAQCAtNjEyLDQzICs2MDcsMjUgQEAgb3NfZXZlbnRf d2FpdF9sb3coCiAJCWVyciA9IFdhaXRGb3JTaW5nbGVPYmplY3QoZXZlbnQtPmhhbmRsZSwgSU5G SU5JVEUpOwogCiAJCXV0X2EoZXJyID09IFdBSVRfT0JKRUNUXzApOwotCi0JCWlmIChzcnZfc2h1 dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VYSVRfVEhSRUFEUykgewotCQkJb3NfdGhyZWFk X2V4aXQoTlVMTCk7Ci0JCX0KIAkJcmV0dXJuOwogCX0KICNlbmRpZgogCi0Jb3NfZmFzdF9tdXRl eF9sb2NrKCYoZXZlbnQtPm9zX211dGV4KSk7CisJb3NfZmFzdF9tdXRleF9sb2NrKCZldmVudC0+ b3NfbXV0ZXgpOwogCi0JaWYgKHJlc2V0X3NpZ19jb3VudCkgewotCQlvbGRfc2lnbmFsX2NvdW50 ID0gcmVzZXRfc2lnX2NvdW50OwotCX0gZWxzZSB7Ci0JCW9sZF9zaWduYWxfY291bnQgPSBldmVu dC0+c2lnbmFsX2NvdW50OworCWlmICghcmVzZXRfc2lnX2NvdW50KSB7CisJCXJlc2V0X3NpZ19j b3VudCA9IGV2ZW50LT5zaWduYWxfY291bnQ7CiAJfQogCi0JZm9yICg7OykgewotCQlpZiAoZXZl bnQtPmlzX3NldCA9PSBUUlVFCi0JCSAgICB8fCBldmVudC0+c2lnbmFsX2NvdW50ICE9IG9sZF9z aWduYWxfY291bnQpIHsKLQotCQkJb3NfZmFzdF9tdXRleF91bmxvY2soJihldmVudC0+b3NfbXV0 ZXgpKTsKLQotCQkJaWYgKHNydl9zaHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9U SFJFQURTKSB7Ci0KLQkJCQlvc190aHJlYWRfZXhpdChOVUxMKTsKLQkJCX0KLQkJCS8qIE9rLCB3 ZSBtYXkgcmV0dXJuICovCi0KLQkJCXJldHVybjsKLQkJfQotCisJd2hpbGUgKCFldmVudC0+aXNf c2V0ICYmIGV2ZW50LT5zaWduYWxfY291bnQgPT0gcmVzZXRfc2lnX2NvdW50KSB7CiAJCW9zX2Nv bmRfd2FpdCgmKGV2ZW50LT5jb25kX3ZhciksICYoZXZlbnQtPm9zX211dGV4KSk7CiAKIAkJLyog U29sYXJpcyBtYW51YWwgc2FpZCB0aGF0IHNwdXJpb3VzIHdha2V1cHMgbWF5IG9jY3VyOiB3ZQog CQloYXZlIHRvIGNoZWNrIGlmIHRoZSBldmVudCByZWFsbHkgaGFzIGJlZW4gc2lnbmFsZWQgYWZ0 ZXIKIAkJd2UgY2FtZSBoZXJlIHRvIHdhaXQgKi8KIAl9CisKKwlvc19mYXN0X211dGV4X3VubG9j aygmZXZlbnQtPm9zX211dGV4KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC02NjksNyArNjQ2LDYgQEAgb3Nf ZXZlbnRfd2FpdF90aW1lX2xvdygKIAogewogCWlib29sCQl0aW1lZF9vdXQgPSBGQUxTRTsKLQlp Yl9pbnQ2NF90CW9sZF9zaWduYWxfY291bnQ7CiAKICNpZmRlZiBfX1dJTl9fCiAJRFdPUkQJCXRp bWVfaW5fbXM7CkBAIC03MzksMTUgKzcxNSwxMiBAQCBvc19ldmVudF93YWl0X3RpbWVfbG93KAog CiAJb3NfZmFzdF9tdXRleF9sb2NrKCZldmVudC0+b3NfbXV0ZXgpOwogCi0JaWYgKHJlc2V0X3Np Z19jb3VudCkgewotCQlvbGRfc2lnbmFsX2NvdW50ID0gcmVzZXRfc2lnX2NvdW50OwotCX0gZWxz ZSB7Ci0JCW9sZF9zaWduYWxfY291bnQgPSBldmVudC0+c2lnbmFsX2NvdW50OworCWlmICghcmVz ZXRfc2lnX2NvdW50KSB7CisJCXJlc2V0X3NpZ19jb3VudCA9IGV2ZW50LT5zaWduYWxfY291bnQ7 CiAJfQogCiAJZG8gewotCQlpZiAoZXZlbnQtPmlzX3NldCA9PSBUUlVFCi0JCSAgICB8fCBldmVu dC0+c2lnbmFsX2NvdW50ICE9IG9sZF9zaWduYWxfY291bnQpIHsKKwkJaWYgKGV2ZW50LT5pc19z ZXQgfHwgZXZlbnQtPnNpZ25hbF9jb3VudCAhPSByZXNldF9zaWdfY291bnQpIHsKIAogCQkJYnJl YWs7CiAJCX0KQEAgLTc2NSwxMSArNzM4LDYgQEAgb3NfZXZlbnRfd2FpdF90aW1lX2xvdygKIAog CW9zX2Zhc3RfbXV0ZXhfdW5sb2NrKCZldmVudC0+b3NfbXV0ZXgpOwogCi0JaWYgKHNydl9zaHV0 ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0KLQkJb3NfdGhyZWFk X2V4aXQoTlVMTCk7Ci0JfQotCiAJcmV0dXJuKHRpbWVkX291dCA/IE9TX1NZTkNfVElNRV9FWENF RURFRCA6IDApOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MG1lcmdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jCXJldmlk OnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDUwODM2NDYtNnJmb2c3cmRucDNyNWVmYwor KysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQwNTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC0xOTI5LDggKzE5 MjksNiBAQCByb3dfbWVyZ2VfbG9ja190YWJsZSgKIAlzZWxfbm9kZV90Kglub2RlOwogCiAJdXRf YWQodHJ4KTsKLQl1dF9hZCh0cngtPm15c3FsX3RoZCA9PSBOVUxMCi0JICAgICAgfHwgdHJ4LT5t eXNxbF90aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkpOwogCXV0X2FkKG1vZGUg PT0gTE9DS19YIHx8IG1vZGUgPT0gTE9DS19TKTsKIAogCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUo NTEyKTsKQEAgLTI0MDMsOCArMjQwMSw2IEBAIHJvd19tZXJnZV9yZW5hbWVfdGFibGVzKAogCXBh cnNfaW5mb190KglpbmZvOwogCWNoYXIJCW9sZF9uYW1lW01BWF9GVUxMX05BTUVfTEVOICsgMV07 CiAKLQl1dF9hZCh0cngtPm15c3FsX3RoZCA9PSBOVUxMCi0JICAgICAgfHwgdHJ4LT5teXNxbF90 aHJlYWRfaWQgPT0gb3NfdGhyZWFkX2dldF9jdXJyX2lkKCkpOwogCXV0X2FkKG9sZF90YWJsZSAh PSBuZXdfdGFibGUpOwogCXV0X2FkKG11dGV4X293bigmZGljdF9zeXMtPm11dGV4KSk7CiAKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15c3FsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2Uvcm93L3JvdzBteXNxbC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1 MTExMjQ4LTlzNW52OXF1cnQxcW00YXMKQEAgLTk3OSw4ICs5NzksNiBAQCByb3dfbG9ja190YWJs ZV9hdXRvaW5jX2Zvcl9teXNxbCgKIAlpYm9vbAkJCXdhc19sb2NrX3dhaXQ7CiAKIAl1dF9hZCh0 cngpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhkICE9IE5VTEwKLQkgICAgICAmJiB0cngtPm15c3Fs X3RocmVhZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAkvKiBJZiB3ZSBhbHJl YWR5IGhvbGQgYW4gQVVUT0lOQyBsb2NrIG9uIHRoZSB0YWJsZSB0aGVuIGRvIG5vdGhpbmcuCiAg ICAgICAgIE5vdGU6IFdlIHBlZWsgYXQgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IG93bmVyIHdp dGhvdXQgYWNxdWlyaW5nCkBAIC0xMDYwLDggKzEwNTgsNiBAQCByb3dfbG9ja190YWJsZV9mb3Jf bXlzcWwoCiAJaWJvb2wJCXdhc19sb2NrX3dhaXQ7CiAKIAl1dF9hZCh0cngpOwotCXV0X2FkKHRy eC0+bXlzcWxfdGhkICE9IE5VTEwKLQkgICAgICAmJiB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBv c190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAl0cngtPm9wX2luZm8gPSAic2V0dGluZyB0YWJs ZSBsb2NrIjsKIApAQCAtMTEzNSw4ICsxMTMxLDYgQEAgcm93X2luc2VydF9mb3JfbXlzcWwoCiAJ aW5zX25vZGVfdCoJbm9kZQkJPSBwcmVidWlsdC0+aW5zX25vZGU7CiAKIAl1dF9hZCh0cngpOwot CXV0X2FkKHRyeC0+bXlzcWxfdGhkICE9IE5VTEwKLQkgICAgICAmJiB0cngtPm15c3FsX3RocmVh ZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAlpZiAocHJlYnVpbHQtPnRhYmxl LT5pYmRfZmlsZV9taXNzaW5nKSB7CiAJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwpAQCAt MTM3Miw4ICsxMzY2LDYgQEAgcm93X3VwZGF0ZV9mb3JfbXlzcWwoCiAJdHJ4X3QqCQl0cngJCT0g cHJlYnVpbHQtPnRyeDsKIAogCXV0X2FkKHByZWJ1aWx0ICYmIHRyeCk7Ci0JdXRfYWQodHJ4LT5t eXNxbF90aGQgIT0gTlVMTAotCSAgICAgICYmIHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3Ro cmVhZF9nZXRfY3Vycl9pZCgpKTsKIAlVVF9OT1RfVVNFRChteXNxbF9yZWMpOwogCiAJaWYgKHBy ZWJ1aWx0LT50YWJsZS0+aWJkX2ZpbGVfbWlzc2luZykgewpAQCAtMTU0MSw4ICsxNTMzLDYgQEAg cm93X3VubG9ja19mb3JfbXlzcWwoCiAJdHJ4X3QqCQl0cngJCT0gcHJlYnVpbHQtPnRyeDsKIAog CXV0X2FkKHByZWJ1aWx0ICYmIHRyeCk7Ci0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0gTlVMTAot CSAgICAgIHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgp KTsKIAogCWlmIChVTklWX1VOTElLRUxZCiAJICAgICghc3J2X2xvY2tzX3Vuc2FmZV9mb3JfYmlu bG9nCkBAIC0xODQyLDggKzE4MzIsNiBAQCByb3dfY3JlYXRlX3RhYmxlX2Zvcl9teXNxbCgKIAl1 bGludAkJdGFibGVfbmFtZV9sZW47CiAJdWxpbnQJCWVycjsKIAotCXV0X2FkKHRyeC0+bXlzcWxf dGhkID09IE5VTEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJlYWRf Z2V0X2N1cnJfaWQoKSk7CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQocndfbG9ja19v d24oJmRpY3Rfb3BlcmF0aW9uX2xvY2ssIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAvKiBVTklWX1NZ TkNfREVCVUcgKi8KQEAgLTIwMjYsOCArMjAxNCw2IEBAIHJvd19jcmVhdGVfaW5kZXhfZm9yX215 c3FsKAogCXV0X2FkKHJ3X2xvY2tfb3duKCZkaWN0X29wZXJhdGlvbl9sb2NrLCBSV19MT0NLX0VY KSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAJdXRfYWQobXV0ZXhfb3duKCYoZGlj dF9zeXMtPm11dGV4KSkpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhkID09IE5VTEwKLQkgICAgICB8 fCB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAl0 cngtPm9wX2luZm8gPSAiY3JlYXRpbmcgaW5kZXgiOwogCkBAIC0yNDMwLDkgKzI0MTYsNiBAQCBy b3dfZGlzY2FyZF90YWJsZXNwYWNlX2Zvcl9teXNxbCgKIAl0YWJsZS0+bl9mb3JlaWduX2tleV9j aGVja3NfcnVubmluZyA+IDAsIHdlIGRvIG5vdCBhbGxvdyB0aGUKIAlkaXNjYXJkLiBXZSBhbHNv IHJlc2VydmUgdGhlIGRhdGEgZGljdGlvbmFyeSBsYXRjaC4gKi8KIAotCXV0X2FkKHRyeC0+bXlz cWxfdGhkID09IE5VTEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJl YWRfZ2V0X2N1cnJfaWQoKSk7Ci0KIAl0cngtPm9wX2luZm8gPSAiZGlzY2FyZGluZyB0YWJsZXNw YWNlIjsKIAl0cnhfc3RhcnRfaWZfbm90X3N0YXJ0ZWRfeGEodHJ4KTsKIApAQCAtMjU5Nyw5ICsy NTgwLDYgQEAgcm93X2ltcG9ydF90YWJsZXNwYWNlX2Zvcl9teXNxbCgKIAlsc25fdAkJY3VycmVu dF9sc247CiAJdWxpbnQJCWVycgkJPSBEQl9TVUNDRVNTOwogCi0JdXRfYWQodHJ4LT5teXNxbF90 aGQgPT0gTlVMTAotCSAgICAgIHx8IHRyeC0+bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9n ZXRfY3Vycl9pZCgpKTsKLQogCXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZF94YSh0cngpOwogCiAJ dHJ4LT5vcF9pbmZvID0gImltcG9ydGluZyB0YWJsZXNwYWNlIjsKQEAgLTI3OTAsOCArMjc3MCw2 IEBAIHJvd190cnVuY2F0ZV90YWJsZV9mb3JfbXlzcWwoCiAJcmVkbyBsb2cgcmVjb3JkcyBvbiB0 aGUgdHJ1bmNhdGVkIHRhYmxlc3BhY2UsIHdlIHdpbGwgYXNzaWduCiAJYSBuZXcgdGFibGVzcGFj ZSBpZGVudGlmaWVyIHRvIHRoZSB0cnVuY2F0ZWQgdGFibGVzcGFjZS4gKi8KIAotCXV0X2FkKHRy eC0+bXlzcWxfdGhkID09IE5VTEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBv c190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQodGFibGUpOwogCiAJaWYgKHNydl9jcmVh dGVkX25ld19yYXcpIHsKQEAgLTM2ODgsOCArMzY2Niw2IEBAIHJvd19kcm9wX2RhdGFiYXNlX2Zv cl9teXNxbCgKIAlpbnQJZXJyCT0gREJfU1VDQ0VTUzsKIAl1bGludAluYW1lbGVuCT0gc3RybGVu KG5hbWUpOwogCi0JdXRfYWQodHJ4LT5teXNxbF90aGQgPT0gTlVMTAotCSAgICAgIHx8IHRyeC0+ bXlzcWxfdGhyZWFkX2lkID09IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgpKTsKIAl1dF9hKG5hbWUg IT0gTlVMTCk7CiAJdXRfYShuYW1lW25hbWVsZW4gLSAxXSA9PSAnLycpOwogCkBAIC0zODYyLDgg KzM4MzgsNiBAQCByb3dfcmVuYW1lX3RhYmxlX2Zvcl9teXNxbCgKIAlpYm9vbAkJb2xkX2lzX3Rt cCwgbmV3X2lzX3RtcDsKIAlwYXJzX2luZm9fdCoJaW5mbwkJCT0gTlVMTDsKIAotCXV0X2FkKHRy eC0+bXlzcWxfdGhkICE9IE5VTEwKLQkgICAgICAmJiB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBv c190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYShvbGRfbmFtZSAhPSBOVUxMKTsKIAl1dF9h KG5ld19uYW1lICE9IE5VTEwpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHNlbC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZj CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBzZWwuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQwNTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC0xOTYyLDcgKzE5 NjIsNyBAQCBzdG9wX2Zvcl9hX3doaWxlOgogCW10cl9jb21taXQoJm10cik7CiAKICNpZmRlZiBV TklWX1NZTkNfREVCVUcKLQl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKFRSVUUp KTsKKwl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKSk7CiAjZW5k aWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAJZXJyID0gREJfU1VDQ0VTUzsKIAlnb3RvIGZ1bmNf ZXhpdDsKQEAgLTE5ODIsNyArMTk4Miw3IEBAIGNvbW1pdF9tdHJfZm9yX2Ffd2hpbGU6CiAJbXRy X2hhc19leHRyYV9jbHVzdF9sYXRjaCA9IEZBTFNFOwogCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVH Ci0JdXRfYWQoc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dlbihUUlVFKSk7CisJdXRfYWQoc3lu Y190aHJlYWRfbGV2ZWxzX2VtcHR5X2V4Y2VwdF9kaWN0KCkpOwogI2VuZGlmIC8qIFVOSVZfU1lO Q19ERUJVRyAqLwogCiAJZ290byB0YWJsZV9sb29wOwpAQCAtMTk5OSw3ICsxOTk5LDcgQEAgbG9j a193YWl0X29yX2Vycm9yOgogCW10cl9jb21taXQoJm10cik7CiAKICNpZmRlZiBVTklWX1NZTkNf REVCVUcKLQl1dF9hZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZ2VuKFRSVUUpKTsKKwl1dF9h ZChzeW5jX3RocmVhZF9sZXZlbHNfZW1wdHlfZXhjZXB0X2RpY3QoKSk7CiAjZW5kaWYgLyogVU5J Vl9TWU5DX0RFQlVHICovCiAKIGZ1bmNfZXhpdDoKQEAgLTM1NjgsOCArMzU2OCw2IEBAIHJvd19z ZWFyY2hfZm9yX215c3FsKAogCXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCiAJdXRfYWQoaW5k ZXggJiYgcGN1ciAmJiBzZWFyY2hfdHVwbGUpOwotCXV0X2FkKHRyeC0+bXlzcWxfdGhkID09IE5V TEwKLQkgICAgICB8fCB0cngtPm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJf aWQoKSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShwcmVidWlsdC0+dGFibGUtPmliZF9maWxlX21p c3NpbmcpKSB7CiAJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwpAQCAtMzU4NiwxMSArMzU4 NCwxNyBAQCByb3dfc2VhcmNoX2Zvcl9teXNxbCgKIAkJCSJJbm5vREI6IGhvdyB5b3UgY2FuIHJl c29sdmUgdGhlIHByb2JsZW0uXG4iLAogCQkJcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKIAorI2lm ZGVmIFVOSVZfU1lOQ19ERUJVRworCQl1dF9hZCghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5 X3RyeCh0cngtPmhhc19zZWFyY2hfbGF0Y2gpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcg Ki8KIAkJcmV0dXJuKERCX0VSUk9SKTsKIAl9CiAKIAlpZiAoVU5JVl9VTkxJS0VMWSghcHJlYnVp bHQtPmluZGV4X3VzYWJsZSkpIHsKIAorI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCQl1dF9hZCgh c3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCh0cngtPmhhc19zZWFyY2hfbGF0Y2gpKTsK KyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAkJcmV0dXJuKERCX01JU1NJTkdfSElTVE9S WSk7CiAJfQogCkBAIC00OTY4LDYgKzQ5NzIsMTAgQEAgZnVuY19leGl0OgogCQkJcHJlYnVpbHQt PnJvd19yZWFkX3R5cGUgPSBST1dfUkVBRF9UUllfU0VNSV9DT05TSVNURU5UOwogCQl9CiAJfQor CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRfYWQoIXN5bmNfdGhyZWFkX2xldmVsc19ub25l bXB0eV90cngodHJ4LT5oYXNfc2VhcmNoX2xhdGNoKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RF QlVHICovCiAJcmV0dXJuKGVycik7CiB9CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3Nydi9zcnYwc3J2LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzcnYu YwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA1MDgzNjQ2LTZyZm9nN3JkbnAz cjVlZmMKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHNydi5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwNDA1MTExMjQ4LTlzNW52OXF1cnQxcW00YXMKQEAgLTU5MSw3 ICs1OTEsNyBAQCBpbmZvcm1hdGlvbiBpcyBvdXRkYXRlZCBmb3IgdGhlIHRpbWUgb2YKIHRoZSBt YWNoaW5lIHN1cHBvcnRzIGF0b21pYyBzd2FwLikKIAogVGhlIGFib3ZlIHNvbHV0aW9uIHdpdGgg cHJpb3JpdHkgaW5oZXJpdGFuY2UgbWF5IGJlY29tZSBhY3R1YWwgaW4gdGhlCi1mdXR1cmUsIGN1 cnJlbnRseSB3ZSBkb24ndCBpbXBsZW1lbnQgYW55IHByaW9yaXR5IHR3aWRkbGluZyBzb2x1dGlv bi4KK2Z1dHVyZSwgY3VycmVudGx5IHdlIGRvIG5vdCBpbXBsZW1lbnQgYW55IHByaW9yaXR5IHR3 aWRkbGluZyBzb2x1dGlvbi4KIE91ciBnZW5lcmFsIGFpbSBpcyB0byByZWR1Y2UgdGhlIGNvbnRl bnRpb24gb2YgYWxsIG11dGV4ZXMgYnkgbWFraW5nCiB0aGVtIG1vcmUgZmluZSBncmFpbmVkLgog CkBAIC03ODMsOCArNzgzLDYgQEAgc3J2X3RhYmxlX3Jlc2VydmVfc2xvdCgKIAlzbG90LT5zdXNw ZW5kZWQgPSBGQUxTRTsKIAlzbG90LT50eXBlID0gdHlwZTsKIAl1dF9hZChzcnZfc2xvdF9nZXRf dHlwZShzbG90KSA9PSB0eXBlKTsKLQlzbG90LT5pZCA9IG9zX3RocmVhZF9nZXRfY3Vycl9pZCgp OwotCXNsb3QtPmhhbmRsZSA9IG9zX3RocmVhZF9nZXRfY3VycigpOwogCiAJcmV0dXJuKHNsb3Qp OwogfQpAQCAtODAyLDcgKzgwMCw2IEBAIHNydl9zdXNwZW5kX3RocmVhZCgKIAlzcnZfc3lzX211 dGV4X2VudGVyKCk7CiAJdXRfYWQoc2xvdC0+aW5fdXNlKTsKIAl1dF9hZCghc2xvdC0+c3VzcGVu ZGVkKTsKLQl1dF9hZChzbG90LT5pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAKIAlp ZiAoc3J2X3ByaW50X3RocmVhZF9yZWxlYXNlcykgewogCQlmcHJpbnRmKHN0ZGVyciwKQEAgLTg2 MywxMCArODYwLDkgQEAgc3J2X3JlbGVhc2VfdGhyZWFkcygKIAogCQkJaWYgKHNydl9wcmludF90 aHJlYWRfcmVsZWFzZXMpIHsKIAkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJIlJlbGVhc2luZyB0 aHJlYWQgJWx1IHR5cGUgJWx1IgorCQkJCQkiUmVsZWFzaW5nIHRocmVhZCB0eXBlICVsdSIKIAkJ CQkJIiBmcm9tIHNsb3QgJWx1XG4iLAotCQkJCQkodWxvbmcpIHNsb3QtPmlkLCAodWxvbmcpIHR5 cGUsCi0JCQkJCSh1bG9uZykgaSk7CisJCQkJCSh1bG9uZykgdHlwZSwgKHVsb25nKSBpKTsKIAkJ CX0KIAogCQkJY291bnQrKzsKQEAgLTEwMzksNiArMTAzNSwxMCBAQCBzcnZfY29uY19lbnRlcl9p bm5vZGIoCiAJc3J2X2NvbmNfc2xvdF90KglzbG90CSAgPSBOVUxMOwogCXVsaW50CQkJaTsKIAor I2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1w dHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJV RyAqLworCiAJaWYgKHRyeC0+bXlzcWxfdGhkICE9IE5VTEwKIAkgICAgJiYgdGhkX2lzX3JlcGxp Y2F0aW9uX3NsYXZlX3RocmVhZCh0cngtPm15c3FsX3RoZCkpIHsKIApAQCAtMTE2Miw2ICsxMTYy LDEwIEBAIHJldHJ5OgogCS8qIEdvIHRvIHdhaXQgZm9yIHRoZSBldmVudDsgd2hlbiBhIHRocmVh ZCBsZWF2ZXMgSW5ub0RCIGl0IHdpbGwKIAlyZWxlYXNlIHRoaXMgdGhyZWFkICovCiAKKwl1dF9h ZCghdHJ4LT5oYXNfc2VhcmNoX2xhdGNoKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9h ZCghc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCh0cngtPmhhc19zZWFyY2hfbGF0Y2gp KTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAl0cngtPm9wX2luZm8gPSAid2FpdGlu ZyBpbiBJbm5vREIgcXVldWUiOwogCiAJdGhkX3dhaXRfYmVnaW4odHJ4LT5teXNxbF90aGQsIFRI RF9XQUlUX1JPV19UQUJMRV9MT0NLKTsKQEAgLTExOTcsNiArMTIwMSwxMCBAQCBzcnZfY29uY19m b3JjZV9lbnRlcl9pbm5vZGIoCiAJdHJ4X3QqCXRyeCkJLyohPCBpbjogdHJhbnNhY3Rpb24gb2Jq ZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUKIAkJCXRocmVhZCAqLwogeworI2lmZGVmIFVOSVZfU1lO Q19ERUJVRworCXV0X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFz X3NlYXJjaF9sYXRjaCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCiAJaWYgKFVO SVZfTElLRUxZKCFzcnZfdGhyZWFkX2NvbmN1cnJlbmN5KSkgewogCiAJCXJldHVybjsKQEAgLTEy NjgsNiArMTI3NiwxMCBAQCBzcnZfY29uY19mb3JjZV9leGl0X2lubm9kYigKIAlpZiAoc2xvdCAh PSBOVUxMKSB7CiAJCW9zX2V2ZW50X3NldChzbG90LT5ldmVudCk7CiAJfQorCisjaWZkZWYgVU5J Vl9TWU5DX0RFQlVHCisJdXRfYWQoIXN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV90cngodHJ4 LT5oYXNfc2VhcmNoX2xhdGNoKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovLyoqCkBAIC0xMjc5LDYgKzEyOTEsMTAgQEAgc3J2X2NvbmNfZXhpdF9p bm5vZGIoCiAJdHJ4X3QqCXRyeCkJLyohPCBpbjogdHJhbnNhY3Rpb24gb2JqZWN0IGFzc29jaWF0 ZWQgd2l0aCB0aGUKIAkJCXRocmVhZCAqLwogeworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0 X2FkKCFzeW5jX3RocmVhZF9sZXZlbHNfbm9uZW1wdHlfdHJ4KHRyeC0+aGFzX3NlYXJjaF9sYXRj aCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCiAJaWYgKHRyeC0+bl90aWNrZXRz X3RvX2VudGVyX2lubm9kYiA+IDApIHsKIAkJLyogV2Ugd2lsbCBwcmV0ZW5kIHRoZSB0aHJlYWQg aXMgc3RpbGwgaW5zaWRlIElubm9EQiB0aG91Z2ggaXQKIAkJbm93IGxlYXZlcyB0aGUgSW5ub0RC IGVuZ2luZS4gSW4gdGhpcyB3YXkgd2Ugc2F2ZQpAQCAtMjYzMiwxMSArMjY0OCw3IEBAIHN1c3Bl bmRfdGhyZWFkOgogCW9zX2V2ZW50X3dhaXQoc2xvdC0+ZXZlbnQpOwogCiAJaWYgKHNydl9zaHV0 ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKSB7Ci0JCS8qIFRoaXMgaXMg b25seSBleHRyYSBzYWZldHksIHRoZSB0aHJlYWQgc2hvdWxkIGV4aXQKLQkJYWxyZWFkeSB3aGVu IHRoZSBldmVudCB3YWl0IGVuZHMgKi8KLQogCQlvc190aHJlYWRfZXhpdChOVUxMKTsKLQogCX0K IAogCWdvdG8gbG9vcDsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Nydi9z cnYwc3RhcnQuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9zcnYvc3J2MHN0YXJ0LmMJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDA1MTExMjQ4LTlzNW52OXF1cnQxcW00YXMKQEAgLTIxNjksMTcgKzIx NjksOSBAQCBpbm5vYmFzZV9zaHV0ZG93bl9mb3JfbXlzcWwodm9pZCkKIAogCXNydl9zaHV0ZG93 bl9zdGF0ZSA9IFNSVl9TSFVURE9XTl9FWElUX1RIUkVBRFM7CiAKLQkvKiBJbiBhICd2ZXJ5IGZh c3QnIHNodXRkb3duLCB3ZSBkbyBub3QgbmVlZCB0byB3YWl0IGZvciB0aGVzZSB0aHJlYWRzCi0J dG8gZGllOyBhbGwgd2hpY2ggY291bnRzIGlzIHRoYXQgd2UgZmx1c2hlZCB0aGUgbG9nOyBhICd2 ZXJ5IGZhc3QnCi0Jc2h1dGRvd24gaXMgZXNzZW50aWFsbHkgYSBjcmFzaC4gKi8KLQotCWlmIChz cnZfZmFzdF9zaHV0ZG93biA9PSAyKSB7Ci0JCXJldHVybihEQl9TVUNDRVNTKTsKLQl9Ci0KIAkv KiBBbGwgdGhyZWFkcyBlbmQgdXAgd2FpdGluZyBmb3IgY2VydGFpbiBldmVudHMuIFB1dCB0aG9z ZSBldmVudHMKLQl0byB0aGUgc2lnbmFsZWQgc3RhdGUuIFRoZW4gdGhlIHRocmVhZHMgd2lsbCBl eGl0IHRoZW1zZWx2ZXMgaW4KLQlvc190aHJlYWRfZXZlbnRfd2FpdCgpLiAqLworCXRvIHRoZSBz aWduYWxlZCBzdGF0ZS4gVGhlbiB0aGUgdGhyZWFkcyB3aWxsIGV4aXQgdGhlbXNlbHZlcyBhZnRl cgorCW9zX2V2ZW50X3dhaXQoKS4gKi8KIAogCWZvciAoaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsK IAkJLyogTk9URTogSUYgWU9VIENSRUFURSBUSFJFQURTIElOIElOTk9EQiwgWU9VIE1VU1QgRVhJ VCBUSEVNCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3lu Yy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMJcmV2aWQ6dmFzaWwu ZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDQwNTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC0xODksMTIgKzE4OSwxMiBA QCBVTklWX0lOVEVSTiBzeW5jX2FycmF5X3QqCXN5bmNfcHJpbWFyeV93CiAvKiogVGhpcyB2YXJp YWJsZSBpcyBzZXQgdG8gVFJVRSB3aGVuIHN5bmNfaW5pdCBpcyBjYWxsZWQgKi8KIFVOSVZfSU5U RVJOIGlib29sCXN5bmNfaW5pdGlhbGl6ZWQJPSBGQUxTRTsKIAorI2lmZGVmIFVOSVZfU1lOQ19E RUJVRwogLyoqIEFuIGFjcXVpcmVkIG11dGV4IG9yIHJ3LWxvY2sgYW5kIGl0cyBsZXZlbCBpbiB0 aGUgbGF0Y2hpbmcgb3JkZXIgKi8KIHR5cGVkZWYgc3RydWN0IHN5bmNfbGV2ZWxfc3RydWN0CXN5 bmNfbGV2ZWxfdDsKIC8qKiBNdXRleGVzIG9yIHJ3LWxvY2tzIGhlbGQgYnkgYSB0aHJlYWQgKi8K IHR5cGVkZWYgc3RydWN0IHN5bmNfdGhyZWFkX3N0cnVjdAlzeW5jX3RocmVhZF90OwogCi0jaWZk ZWYgVU5JVl9TWU5DX0RFQlVHCiAvKiogVGhlIGxhdGNoIGxldmVscyBjdXJyZW50bHkgb3duZWQg YnkgdGhyZWFkcyBhcmUgc3RvcmVkIGluIHRoaXMgZGF0YQogc3RydWN0dXJlOyB0aGUgc2l6ZSBv ZiB0aGlzIGFycmF5IGlzIE9TX1RIUkVBRF9NQVhfTiAqLwogCkBAIC0yMjEsNyArMjIxLDYgQEAg VU5JVl9JTlRFUk4gbXlzcWxfcGZzX2tleV90CW11dGV4X2xpc3RfbQogI2lmZGVmIFVOSVZfU1lO Q19ERUJVRwogLyoqIExhdGNoaW5nIG9yZGVyIGNoZWNrcyBzdGFydCB3aGVuIHRoaXMgaXMgc2V0 IFRSVUUgKi8KIFVOSVZfSU5URVJOIGlib29sCXN5bmNfb3JkZXJfY2hlY2tzX29uCT0gRkFMU0U7 Ci0jZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAKIC8qKiBOdW1iZXIgb2Ygc2xvdHMgcmVz ZXJ2ZWQgZm9yIGVhY2ggT1MgdGhyZWFkIGluIHRoZSBzeW5jIGxldmVsIGFycmF5ICovCiBzdGF0 aWMgY29uc3QgdWxpbnQgU1lOQ19USFJFQURfTl9MRVZFTFMgPSAxMDAwMDsKQEAgLTI1OCw2ICsy NTcsNyBAQCBzdHJ1Y3Qgc3luY19sZXZlbF9zdHJ1Y3R7CiAJCQkJCXRoZSBvcmRpbmFsIHZhbHVl IG9mIHRoZSBuZXh0IGZyZWUKIAkJCQkJZWxlbWVudCAqLwogfTsKKyNlbmRpZiAvKiBVTklWX1NZ TkNfREVCVUcgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENyZWF0ZXMsIG9yIHJhdGhlciwgaW5pdGlh bGl6ZXMgYSBtdXRleCBvYmplY3QgaW4gYSBzcGVjaWZpZWQgbWVtb3J5CkBAIC0xMDIxLDkgKzEw MjEsNyBAQCB2b2lkKgogc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X2dlbigKIC8qPT09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCiAJaWJvb2wJZGljdF9tdXRleF9hbGxvd2VkKQkvKiE8 IGluOiBUUlVFIGlmIGRpY3Rpb25hcnkgbXV0ZXggaXMKLQkJCQkJYWxsb3dlZCB0byBiZSBvd25l ZCBieSB0aGUgdGhyZWFkLAotCQkJCQlhbHNvIHB1cmdlX2lzX3J1bm5pbmcgbXV0ZXggaXMKLQkJ CQkJYWxsb3dlZCAqLworCQkJCQlhbGxvd2VkIHRvIGJlIG93bmVkIGJ5IHRoZSB0aHJlYWQgKi8K IHsKIAl1bGludAkJaTsKIAlzeW5jX2Fycl90KglhcnI7CkBAIC0xMDcwLDE0ICsxMDY4LDYxIEBA IHN5bmNfdGhyZWFkX2xldmVsc19ub25lbXB0eV9nZW4oCiB9CiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1D aGVja3MgdGhhdCB0aGUgbGV2ZWwgYXJyYXkgZm9yIHRoZSBjdXJyZW50IHRocmVhZCBpcyBlbXB0 eS4KLUByZXR1cm4JVFJVRSBpZiBlbXB0eSAqLworQ2hlY2tzIGlmIHRoZSBsZXZlbCBhcnJheSBm b3IgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGVtcHR5LAorZXhjZXB0IGZvciB0aGUgYnRyX3NlYXJj aF9sYXRjaC4KK0ByZXR1cm4JYSBsYXRjaCwgb3IgTlVMTCBpZiBlbXB0eSBleGNlcHQgdGhlIGV4 Y2VwdGlvbnMgc3BlY2lmaWVkIGJlbG93ICovCiBVTklWX0lOVEVSTgotaWJvb2wKLXN5bmNfdGhy ZWFkX2xldmVsc19lbXB0eSh2b2lkKQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PSovCit2 b2lkKgorc3luY190aHJlYWRfbGV2ZWxzX25vbmVtcHR5X3RyeCgKKy8qPT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovCisJaWJvb2wJaGFzX3NlYXJjaF9sYXRjaCkKKwkJCQkvKiE8IGluOiBU UlVFIGlmIGFuZCBvbmx5IGlmIHRoZSB0aHJlYWQKKwkJCQlpcyBzdXBwb3NlZCB0byBob2xkIGJ0 cl9zZWFyY2hfbGF0Y2ggKi8KIHsKLQlyZXR1cm4oc3luY190aHJlYWRfbGV2ZWxzX2VtcHR5X2dl bihGQUxTRSkpOworCXVsaW50CQlpOworCXN5bmNfYXJyX3QqCWFycjsKKwlzeW5jX3RocmVhZF90 Kgl0aHJlYWRfc2xvdDsKKworCWlmICghc3luY19vcmRlcl9jaGVja3Nfb24pIHsKKworCQlyZXR1 cm4oTlVMTCk7CisJfQorCisJdXRfYSghaGFzX3NlYXJjaF9sYXRjaAorCSAgICAgfHwgc3luY190 aHJlYWRfbGV2ZWxzX2NvbnRhaW5zKFNZTkNfU0VBUkNIX1NZUykpOworCisJbXV0ZXhfZW50ZXIo JnN5bmNfdGhyZWFkX211dGV4KTsKKworCXRocmVhZF9zbG90ID0gc3luY190aHJlYWRfbGV2ZWxf YXJyYXlzX2ZpbmRfc2xvdCgpOworCisJaWYgKHRocmVhZF9zbG90ID09IE5VTEwpIHsKKworCQlt dXRleF9leGl0KCZzeW5jX3RocmVhZF9tdXRleCk7CisKKwkJcmV0dXJuKE5VTEwpOworCX0KKwor CWFyciA9IHRocmVhZF9zbG90LT5sZXZlbHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgYXJyLT5uX2Vs ZW1zOyArK2kpIHsKKwkJY29uc3Qgc3luY19sZXZlbF90KglzbG90OworCisJCXNsb3QgPSAmYXJy LT5lbGVtc1tpXTsKKworCQlpZiAoc2xvdC0+bGF0Y2ggIT0gTlVMTAorCQkgICAgJiYgKCFoYXNf c2VhcmNoX2xhdGNoCisJCQl8fCBzbG90LT5sZXZlbCAhPSBTWU5DX1NFQVJDSF9TWVMpKSB7CisK KwkJCW11dGV4X2V4aXQoJnN5bmNfdGhyZWFkX211dGV4KTsKKwkJCXV0X2Vycm9yOworCisJCQly ZXR1cm4oc2xvdC0+bGF0Y2gpOworCQl9CisJfQorCisJbXV0ZXhfZXhpdCgmc3luY190aHJlYWRf bXV0ZXgpOworCisJcmV0dXJuKE5VTEwpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByb2xsLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvdHJ4L3RyeDByb2xsLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEx MDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDByb2xsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MDUxMTEyNDgtOXM1 bnY5cXVydDFxbTRhcwpAQCAtNTc0LDEwICs1NzQsNiBAQCB0cnhfcm9sbGJhY2tfYWN0aXZlKAog CQkodWxsaW50KSB0cngtPmlkLAogCQkodWxvbmcpIHJvd3NfdG9fdW5kbywgdW5pdCk7CiAKLQl0 cngtPm15c3FsX3RocmVhZF9pZCA9IDA7Ci0KLQl0cngtPm15c3FsX3Byb2Nlc3Nfbm8gPSAwOwot CiAJaWYgKHRyeF9nZXRfZGljdF9vcGVyYXRpb24odHJ4KSAhPSBUUlhfRElDVF9PUF9OT05FKSB7 CiAJCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCQlkaWN0aW9uYXJ5X2xv Y2tlZCA9IFRSVUU7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4 MHRyeC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6dmFzaWwu ZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwNTA4MzY0Ni02cmZvZzdyZG5wM3I1ZWZjCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDB0cnguYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDQwNTExMTI0OC05czVudjlxdXJ0MXFtNGFzCkBAIC0xNzgsMTAgKzE3OCw2IEBAIHRy eF9hbGxvY2F0ZV9mb3JfbXlzcWwodm9pZCkKIAogCXJ3X2xvY2tfeF91bmxvY2soJnRyeF9zeXMt PmxvY2spOwogCi0JdHJ4LT5teXNxbF90aHJlYWRfaWQgPSBvc190aHJlYWRfZ2V0X2N1cnJfaWQo KTsKLQotCXRyeC0+bXlzcWxfcHJvY2Vzc19ubyA9IG9zX3Byb2NfZ2V0X251bWJlcigpOwotCiAJ cmV0dXJuKHRyeCk7CiB9CiAKQEAgLTEzMDEsMTEgKzEyOTcsNiBAQCB0cnhfcHJpbnRfbG93KAog CWZwcmludGYoZiwgIiwgc3RhdGUgJWx1IiwgKHVsb25nKSB0cngtPnN0YXRlKTsKIAl1dF9hZCgw KTsKIHN0YXRlX29rOgotI2lmZGVmIFVOSVZfTElOVVgKLQlmcHJpbnRmKGYsICIsIHByb2Nlc3Mg bm8gJWx1IiwgdHJ4LT5teXNxbF9wcm9jZXNzX25vKTsKLSNlbmRpZgotCWZwcmludGYoZiwgIiwg T1MgdGhyZWFkIGlkICVsdSIsCi0JCSh1bG9uZykgb3NfdGhyZWFkX3BmKHRyeC0+bXlzcWxfdGhy ZWFkX2lkKSk7CiAKIAkvKiBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gKi8KIAlvcF9pbmZvID0g dHJ4LT5vcF9pbmZvOwoK --===============0112766751== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.6-innodb/ # testament_sha1: d1faacd0433a2a9552b8deaf8ae266b10cdc9b55 # timestamp: 2011-04-05 14:14:57 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # base_revision_id: vasil.dimov@stripped\ # 6rfog7rdnp3r5efc # # Begin bundle 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 ckU4UJCkIm5e --===============0112766751==--