From: Joerg Bruehe Date: August 26 2011 9:48am Subject: bzr push into mysql-5.1 branch (joerg.bruehe:3587 to 3590) List-Archive: http://lists.mysql.com/commits/140802 Message-Id: <201108260949.p7Q9n9Rb014865@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1OTAgU2VyZ2V5IFZvanRvdmljaAkyMDExLTA4LTI0IFttZXJnZV0KICAgICAgTWVyZ2UuCgog ICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9tZXJnZS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC90L21lcmdlLnRlc3QKICAgICAgc3FsL3NxbF9iYXNlLmNjCiAzNTg5IE1hcmtvIE3DpGtl bMOkCTIwMTEtMDgtMjIKICAgICAgQnVnICMxMTc2NjU5MSAgNTk3MzM6IFBPU1NJQkxFIERFQURM T0NLIFdIRU4gQlVGRkVSRUQgQ0hBTkdFUyBBUkUgVE8gQkUgRElTQ0FSREVECiAgICAgIAogICAg ICBUaGUgZml4IGluIHJldmlzaW9uIGlkIG1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwODE1 MDkxMTQzLWgzemJ2bTBwdjhuaTNxcWwKICAgICAgaW50cm9kdWNlZCBhIGZhbHNlIFVOSVZfU1lO Q19ERUJVRyBhbGFybS4gUmVsYXggdGhlIGFzc2VydGlvbi4KCiAgICBtb2RpZmllZDoKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL3N5bmMvc3luYzBzeW5jLmMKIDM1ODggSm9lcmcgQnJ1ZWhl CTIwMTEtMDgtMTkgW21lcmdlXQogICAgICBNZXJnZSBidWcgZml4IHRvIG1haW4uCgogICAgbW9k aWZpZWQ6CiAgICAgIHN1cHBvcnQtZmlsZXMvbXlzcWwuc3BlYy5zaAogMzU4NyBoZXJ5LnJhbWls aXNvbkBvcmFjbGUuY29tCTIwMTEtMDgtMTcKICAgICAgMm5kIGZpeCBmb3IgQnVnICM1NTcxMyAg aW5ub2NoZWNrc3VtIGlzIE5PVCBidWlsdCB3aXRoIGxhcmdlIGZpbGUgc3VwcG9ydCBlbmFibGVk CgogICAgbW9kaWZpZWQ6CiAgICAgIGV4dHJhL2lubm9jaGVja3N1bS5jCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3IvbWVyZ2UucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvbWVyZ2Uu cmVzdWx0CTIwMTAtMTEtMzAgMDQ6NDY6NDMgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL21lcmdl LnJlc3VsdAkyMDExLTA4LTE4IDA2OjM4OjUxICswMDAwCkBAIC0yMzQxLDQgKzIzNDEsMzMgQEAg UkVQQUlSIFRBQkxFIG0xOwogVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKIHRlc3QubTEJcmVw YWlyCW5vdGUJVGhlIHN0b3JhZ2UgZW5naW5lIGZvciB0aGUgdGFibGUgZG9lc24ndCBzdXBwb3J0 IHJlcGFpcgogRFJPUCBUQUJMRSBtMSwgdDE7CisjCisjIEJVRyMxMTc2MzcxMiAtIDU2NDU4OiBL SUxMSU5HIEEgRkxVU0ggVEFCTEUgRk9SIEEgTUVSR0UvQ0hJTEQKKyMgICAgICAgICAgICAgICAg ICAgICAgIENSQVNIRVMgU0VSVkVSCisjCitDUkVBVEUgVEFCTEUgdDEoYSBJTlQpOworQ1JFQVRF IFRBQkxFIHQyKGEgSU5UKTsKK0NSRUFURSBUQUJMRSB0MyhhIElOVCwgYiBJTlQpOworQ1JFQVRF IFRBQkxFIG0xKGEgSU5UKSBFTkdJTkU9TUVSR0UgVU5JT049KHQxLCB0Mik7CisjIFRlc3QgcmVv cGVuIG1lcmdlIHBhcmVudCBmYWlsdXJlCitMT0NLIFRBQkxFUyBtMSBSRUFEOworIyBSZW1vdmUg J20xJyB0YWJsZSB1c2luZyBmaWxlIG9wZXJhdGlvbnMuCitGTFVTSCBUQUJMRVM7CitFUlJPUiA0 MlMwMjogVGFibGUgJ3Rlc3QubTEnIGRvZXNuJ3QgZXhpc3QKK1VOTE9DSyBUQUJMRVM7CitDUkVB VEUgVEFCTEUgbTEoYSBJTlQpIEVOR0lORT1NRVJHRSBVTklPTj0odDEsIHQyKTsKKyMgVGVzdCBy ZW9wZW4gbWVyZ2UgY2hpbGQgZmFpbHVyZQorTE9DSyBUQUJMRVMgbTEgUkVBRDsKKyMgUmVtb3Zl ICd0MScgdGFibGUgdXNpbmcgZmlsZSBvcGVyYXRpb25zLgorRkxVU0ggVEFCTEVTOworRVJST1Ig NDJTMDI6IFRhYmxlICd0ZXN0LnQxJyBkb2Vzbid0IGV4aXN0CitVTkxPQ0sgVEFCTEVTOworQ1JF QVRFIFRBQkxFIHQxKGEgSU5UKTsKKyMgVGVzdCByZWF0dGFjaCBtZXJnZSBmYWlsdXJlCitMT0NL IFRBQkxFUyBtMSBSRUFEOworIyBSZXBsYWNlICd0MScgd2l0aCAndDMnIHRhYmxlIHVzaW5nIGZp bGUgb3BlcmF0aW9ucy4KK0ZMVVNIIFRBQkxFUzsKK0VSUk9SIEhZMDAwOiBDYW4ndCByZW9wZW4g dGFibGU6ICdtMScKK1VOTE9DSyBUQUJMRVM7CitEUk9QIFRBQkxFIHQxLCB0MiwgdDMsIG0xOwog RW5kIG9mIDUuMSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9tZXJnZS50 ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvbWVyZ2UudGVzdAkyMDEwLTA0LTI2IDEzOjQ0OjEwICsw MDAwCisrKyBiL215c3FsLXRlc3QvdC9tZXJnZS50ZXN0CTIwMTEtMDgtMTggMDY6Mzg6NTEgKzAw MDAKQEAgLTE3ODMsNCArMTc4Myw0OSBAQCBSRVBBSVIgVEFCTEUgbTE7CiAjCiBEUk9QIFRBQkxF IG0xLCB0MTsKIAorCistLWVjaG8gIworLS1lY2hvICMgQlVHIzExNzYzNzEyIC0gNTY0NTg6IEtJ TExJTkcgQSBGTFVTSCBUQUJMRSBGT1IgQSBNRVJHRS9DSElMRAorLS1lY2hvICMgICAgICAgICAg ICAgICAgICAgICAgIENSQVNIRVMgU0VSVkVSCistLWVjaG8gIworQ1JFQVRFIFRBQkxFIHQxKGEg SU5UKTsKK0NSRUFURSBUQUJMRSB0MihhIElOVCk7CitDUkVBVEUgVEFCTEUgdDMoYSBJTlQsIGIg SU5UKTsKK0NSRUFURSBUQUJMRSBtMShhIElOVCkgRU5HSU5FPU1FUkdFIFVOSU9OPSh0MSwgdDIp OworCistLWVjaG8gIyBUZXN0IHJlb3BlbiBtZXJnZSBwYXJlbnQgZmFpbHVyZQorTE9DSyBUQUJM RVMgbTEgUkVBRDsKKy0tZWNobyAjIFJlbW92ZSAnbTEnIHRhYmxlIHVzaW5nIGZpbGUgb3BlcmF0 aW9ucy4KK3JlbW92ZV9maWxlICRNWVNRTERfREFUQURJUi90ZXN0L20xLk1SRzsKK3JlbW92ZV9m aWxlICRNWVNRTERfREFUQURJUi90ZXN0L20xLmZybTsKKy0tZXJyb3IgRVJfTk9fU1VDSF9UQUJM RQorRkxVU0ggVEFCTEVTOworVU5MT0NLIFRBQkxFUzsKK0NSRUFURSBUQUJMRSBtMShhIElOVCkg RU5HSU5FPU1FUkdFIFVOSU9OPSh0MSwgdDIpOworCistLWVjaG8gIyBUZXN0IHJlb3BlbiBtZXJn ZSBjaGlsZCBmYWlsdXJlCitMT0NLIFRBQkxFUyBtMSBSRUFEOworLS1lY2hvICMgUmVtb3ZlICd0 MScgdGFibGUgdXNpbmcgZmlsZSBvcGVyYXRpb25zLgorcmVtb3ZlX2ZpbGUgJE1ZU1FMRF9EQVRB RElSL3Rlc3QvdDEuZnJtOworcmVtb3ZlX2ZpbGUgJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDEuTVlJ OworcmVtb3ZlX2ZpbGUgJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDEuTVlEOworLS1lcnJvciBFUl9O T19TVUNIX1RBQkxFCitGTFVTSCBUQUJMRVM7CitVTkxPQ0sgVEFCTEVTOworQ1JFQVRFIFRBQkxF IHQxKGEgSU5UKTsKKworLS1lY2hvICMgVGVzdCByZWF0dGFjaCBtZXJnZSBmYWlsdXJlCitMT0NL IFRBQkxFUyBtMSBSRUFEOworLS1lY2hvICMgUmVwbGFjZSAndDEnIHdpdGggJ3QzJyB0YWJsZSB1 c2luZyBmaWxlIG9wZXJhdGlvbnMuCityZW1vdmVfZmlsZSAkTVlTUUxEX0RBVEFESVIvdGVzdC90 MS5mcm07CityZW1vdmVfZmlsZSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5NWUk7CityZW1vdmVf ZmlsZSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5NWUQ7Citjb3B5X2ZpbGUgJE1ZU1FMRF9EQVRB RElSL3Rlc3QvdDMuZnJtICRNWVNRTERfREFUQURJUi90ZXN0L3QxLmZybTsKK2NvcHlfZmlsZSAk TVlTUUxEX0RBVEFESVIvdGVzdC90My5NWUkgJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDEuTVlJOwor Y29weV9maWxlICRNWVNRTERfREFUQURJUi90ZXN0L3QzLk1ZRCAkTVlTUUxEX0RBVEFESVIvdGVz dC90MS5NWUQ7CistLWVycm9yIEVSX0NBTlRfUkVPUEVOX1RBQkxFCitGTFVTSCBUQUJMRVM7CitV TkxPQ0sgVEFCTEVTOworRFJPUCBUQUJMRSB0MSwgdDIsIHQzLCBtMTsKKwogLS1lY2hvIEVuZCBv ZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX2Jhc2UuY2MnCi0tLSBhL3Nx bC9zcWxfYmFzZS5jYwkyMDExLTA4LTAyIDA3OjMzOjQ1ICswMDAwCisrKyBiL3NxbC9zcWxfYmFz ZS5jYwkyMDExLTA4LTI0IDA3OjE4OjAwICswMDAwCkBAIC05Niw2ICs5NiwxMyBAQCBzdGF0aWMg VEFCTEVfU0hBUkUgKm9sZGVzdF91bnVzZWRfc2hhcmUsCiBzdGF0aWMgcHRocmVhZF9tdXRleF90 IExPQ0tfdGFibGVfc2hhcmU7CiBzdGF0aWMgYm9vbCB0YWJsZV9kZWZfaW5pdGVkPSAwOwogCisv KioKKyAgRHVtbXkgVEFCTEUgaW5zdGFuY2Ugd2hpY2ggaXMgdXNlZCBpbiByZW9wZW5fdGFibGVz KCkgYW5kIHJlYXR0YWNoX21lcmdlKCkKKyAgZnVuY3Rpb25zIHRvIG1hcmsgTUVSR0UgdGFibGVz IGFuZCB0aGVpciBjaGlsZHJlbiB3aXRoIHdoaWNoIHRoZXJlIGlzIHNvbWUKKyAga2luZCBvZiBw cm9ibGVtIGFuZCB3aGljaCB0aGVyZWZvcmUgd2UgbmVlZCB0byBjbG9zZS4KKyovCitzdGF0aWMg VEFCTEUgYmFkX21lcmdlX21hcmtlcjsKKwogc3RhdGljIGludCBvcGVuX3VuaXJlZ19lbnRyeShU SEQgKnRoZCwgVEFCTEUgKmVudHJ5LCBUQUJMRV9MSVNUICp0YWJsZV9saXN0LAogCQkJICAgICBj b25zdCBjaGFyICphbGlhcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2Fj aGVfa2V5LCB1aW50IGNhY2hlX2tleV9sZW5ndGgsCkBAIC0zMjE1LDQ2ICszMjIyLDY1IEBAIHZv aWQgY2xvc2VfZGF0YV9maWxlc19hbmRfbW9ycGhfbG9ja3MoVEgKIAogCiAvKioKKyAgQGJyaWVm IE1hcmsgbWVyZ2UgcGFyZW50IGFuZCBjaGlsZHJlbiB3aXRoIGJhZF9tZXJnZV9tYXJrZXIKKwor ICBAcGFyYW1baW4sb3V0XSAgcGFyZW50ICAgICAgIHRoZSBUQUJMRSBvYmplY3Qgb2YgdGhlIHBh cmVudAorKi8KKworc3RhdGljIHZvaWQgbWFya19tZXJnZV9wYXJlbnRfYW5kX2NoaWxkcmVuX2Fz X2JhZChUQUJMRSAqcGFyZW50KQoreworICBUQUJMRV9MSVNUICpjaGlsZF9sOworICBEQlVHX0VO VEVSKCJtYXJrX21lcmdlX3BhcmVudF9hbmRfY2hpbGRyZW5fYXNfYmFkIik7CisgIHBhcmVudC0+ cGFyZW50PSAmYmFkX21lcmdlX21hcmtlcjsKKyAgZm9yIChjaGlsZF9sPSBwYXJlbnQtPmNoaWxk X2w7IDsgY2hpbGRfbD0gY2hpbGRfbC0+bmV4dF9nbG9iYWwpCisgIHsKKyAgICBjaGlsZF9sLT50 YWJsZS0+cGFyZW50PSAmYmFkX21lcmdlX21hcmtlcjsKKyAgICBjaGlsZF9sLT50YWJsZT0gTlVM TDsKKyAgICBpZiAoJmNoaWxkX2wtPm5leHRfZ2xvYmFsID09IHBhcmVudC0+Y2hpbGRfbGFzdF9s KQorICAgICAgYnJlYWs7CisgIH0KKyAgREJVR19WT0lEX1JFVFVSTjsKK30KKworCisvKioKICAg UmVhdHRhY2ggTUVSR0UgY2hpbGRyZW4gYWZ0ZXIgcmVvcGVuLgogCiAgIEBwYXJhbVtpbl0gICAg IHRoZCAgICAgICAgICAgIHRocmVhZCBjb250ZXh0Ci0gIEBwYXJhbVtpbixvdXRdIGVycl90YWJs ZXNfcCAgIHBvaW50ZXIgdG8gcG9pbnRlciBvZiB0YWJsZXMgaW4gZXJyb3IKKworICBAbm90ZSBJ ZiByZWF0dGFjaCBmYWlsZWQgZm9yIGNlcnRhaW4gTUVSR0UgdGFibGUsIHRoZSB0YWJsZSAoYW5k IGFsbAorICAgICAgICBpdCdzIGNoaWxkcmVuKSBhcmUgbWFya2VkIHdpdGggYmFkX21lcmdlX21h cmtlci4KIAogICBAcmV0dXJuICAgICAgIHN0YXR1cwotICAgIEByZXR2YWwgICAgIEZBTFNFICAg ICAgICAgICBPSywgZXJyX3RhYmxlc19wIHVuY2hhbmdlZAotICAgIEByZXR2YWwgICAgIFRSVUUg ICAgICAgICAgICBFcnJvciwgZXJyX3RhYmxlc19wIGNvbnRhaW5zIHRhYmxlKHMpCisgICAgQHJl dHZhbCAgICAgRkFMU0UgICAgICAgICAgIE9LCisgICAgQHJldHZhbCAgICAgVFJVRSAgICAgICAg ICAgIEVycm9yCiAqLwogCi1zdGF0aWMgYm9vbCByZWF0dGFjaF9tZXJnZShUSEQgKnRoZCwgVEFC TEUgKiplcnJfdGFibGVzX3ApCitzdGF0aWMgYm9vbCByZWF0dGFjaF9tZXJnZShUSEQgKnRoZCkK IHsKICAgVEFCTEUgKnRhYmxlOwotICBUQUJMRSAqbmV4dDsKLSAgVEFCTEUgKipwcnZfcD0gJnRo ZC0+b3Blbl90YWJsZXM7CiAgIGJvb2wgZXJyb3I9IEZBTFNFOwogICBEQlVHX0VOVEVSKCJyZWF0 dGFjaF9tZXJnZSIpOwogCi0gIGZvciAodGFibGU9IHRoZC0+b3Blbl90YWJsZXM7IHRhYmxlOyB0 YWJsZT0gbmV4dCkKKyAgZm9yICh0YWJsZT0gdGhkLT5vcGVuX3RhYmxlczsgdGFibGU7IHRhYmxl PSB0YWJsZS0+bmV4dCkKICAgewotICAgIG5leHQ9IHRhYmxlLT5uZXh0OwotICAgIERCVUdfUFJJ TlQoInRjYWNoZSIsICgiY2hlY2sgdGFibGU6ICclcycuJyVzJyAweCVseCAgbmV4dDogMHglbHgi LAorICAgIERCVUdfUFJJTlQoInRjYWNoZSIsICgiY2hlY2sgdGFibGU6ICclcycuJyVzJyAweCVs eCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5zLT5kYi5zdHIsIHRhYmxlLT5z LT50YWJsZV9uYW1lLnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIHRhYmxl LCAobG9uZykgbmV4dCkpOwotICAgIC8qIFJlYXR0YWNoIGNoaWxkcmVuIGZvciBNRVJHRSB0YWJs ZXMgd2l0aCAiY2xvc2VkIGRhdGEgZmlsZXMiIG9ubHkuICovCi0gICAgaWYgKHRhYmxlLT5jaGls ZF9sICYmICF0YWJsZS0+Y2hpbGRyZW5fYXR0YWNoZWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChsb25nKSB0YWJsZSkpOworICAgIC8qCisgICAgICBSZWF0dGFjaCBjaGlsZHJlbiBvbmx5 IGZvciBNRVJHRSB0YWJsZXMgdGhhdCBoYWQgY2hpbGRyZW4gb3IgcGFyZW50CisgICAgICB3aXRo ICJjbG9zZWQgZGF0YSBmaWxlcyIgYW5kIHdlcmUgcmVvcGVuLiBGb3IgZXh0cmEgc2FmZXR5IHNr aXAgTUVSR0UKKyAgICAgIHRhYmxlcyB3aGljaCB3ZSBmYWlsZWQgdG8gcmVvcGVuIChzaG91bGQg bm90IGhhcHBlbiB3aXRoIGN1cnJlbnQgY29kZSkuCisgICAgKi8KKyAgICBpZiAodGFibGUtPmNo aWxkX2wgJiYgdGFibGUtPnBhcmVudCAhPSAmYmFkX21lcmdlX21hcmtlciAmJgorICAgICAgICAh dGFibGUtPmNoaWxkcmVuX2F0dGFjaGVkKQogICAgIHsKICAgICAgIERCVUdfUFJJTlQoInRjYWNo ZSIsICgiTUVSR0UgcGFyZW50LCBhdHRhY2ggY2hpbGRyZW4iKSk7Ci0gICAgICBpZih0YWJsZS0+ ZmlsZS0+ZXh0cmEoSEFfRVhUUkFfQVRUQUNIX0NISUxEUkVOKSkKKyAgICAgIGlmICh0YWJsZS0+ ZmlsZS0+ZXh0cmEoSEFfRVhUUkFfQVRUQUNIX0NISUxEUkVOKSkKICAgICAgIHsKICAgICAgICAg bXlfZXJyb3IoRVJfQ0FOVF9SRU9QRU5fVEFCTEUsIE1ZRigwKSwgdGFibGUtPmFsaWFzKTsKICAg ICAgICAgZXJyb3I9IFRSVUU7Ci0gICAgICAgIC8qIFJlbW92ZSB0YWJsZSBmcm9tIG9wZW5fdGFi bGVzLiAqLwotICAgICAgICAqcHJ2X3A9IG5leHQ7Ci0gICAgICAgIGlmIChuZXh0KQotICAgICAg ICAgIHBydl9wPSAmbmV4dC0+bmV4dDsKLSAgICAgICAgLyogU3RhY2sgdGFibGUgb24gZXJyb3Ig bGlzdC4gKi8KLSAgICAgICAgdGFibGUtPm5leHQ9ICplcnJfdGFibGVzX3A7Ci0gICAgICAgICpl cnJfdGFibGVzX3A9IHRhYmxlOwotICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbWFya19tZXJn ZV9wYXJlbnRfYW5kX2NoaWxkcmVuX2FzX2JhZCh0YWJsZSk7CiAgICAgICB9CiAgICAgICBlbHNl CiAgICAgICB7CkBAIC0zMjY0LDcgKzMyOTAsNiBAQCBzdGF0aWMgYm9vbCByZWF0dGFjaF9tZXJn ZShUSEQgKnRoZCwgVEFCCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPnMtPnRh YmxlX25hbWUuc3RyLCAobG9uZykgdGFibGUpKTsKICAgICAgIH0KICAgICB9Ci0gICAgcHJ2X3A9 ICZ0YWJsZS0+bmV4dDsKICAgfQogICBEQlVHX1JFVFVSTihlcnJvcik7CiB9CkBAIC0zMjk0LDcg KzMzMTksNiBAQCBib29sIHJlb3Blbl90YWJsZXMoVEhEICp0aGQsIGJvb2wgZ2V0X2xvCiB7CiAg IFRBQkxFICp0YWJsZSwqbmV4dCwqKnByZXY7CiAgIFRBQkxFICoqdGFibGVzLCoqdGFibGVzX3B0 cjsJCQkvLyBGb3IgbG9ja3MKLSAgVEFCTEUgKmVycl90YWJsZXM9IE5VTEw7CiAgIGJvb2wgZXJy b3I9MCwgbm90X3VzZWQ7CiAgIGJvb2wgbWVyZ2VfdGFibGVfZm91bmQ9IEZBTFNFOwogICBjb25z dCB1aW50IGZsYWdzPSBNWVNRTF9MT0NLX05PVElGWV9JRl9ORUVEX1JFT1BFTiB8CkBAIC0zMzI4 LDI5ICszMzUyLDY5IEBAIGJvb2wgcmVvcGVuX3RhYmxlcyhUSEQgKnRoZCwgYm9vbCBnZXRfbG8K ICAgZm9yICh0YWJsZT10aGQtPm9wZW5fdGFibGVzOyB0YWJsZSA7IHRhYmxlPW5leHQpCiAgIHsK ICAgICB1aW50IGRiX3N0YXQ9dGFibGUtPmRiX3N0YXQ7CisgICAgVEFCTEUgKnBhcmVudD0gdGFi bGUtPmNoaWxkX2wgPyB0YWJsZSA6IHRhYmxlLT5wYXJlbnQ7CiAgICAgbmV4dD10YWJsZS0+bmV4 dDsKICAgICBEQlVHX1BSSU5UKCJ0Y2FjaGUiLCAoIm9wZW4gdGFibGU6ICclcycuJyVzJyAweCVs eCAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50OiAweCVseCAgZGJfc3RhdDog JXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+cy0+ZGIuc3RyLCB0YWJsZS0+ cy0+dGFibGVfbmFtZS5zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKSB0YWJs ZSwgKGxvbmcpIHRhYmxlLT5wYXJlbnQsIGRiX3N0YXQpKTsKLSAgICBpZiAodGFibGUtPmNoaWxk X2wgJiYgIWRiX3N0YXQpCisgICAgLyoKKyAgICAgIElmIHdlIG5lZWQgdG8gcmVvcGVuIGNoaWxk IG9yIHBhcmVudCB0YWJsZSBpbiBhIE1FUkdFIHRhYmxlLCB0aGVuCisgICAgICBjaGlsZHJlbiBp biB0aGlzIE1FUkdFIHRhYmxlIGhhcyB0byBiZSBhbHJlYWR5IGRldGFjaGVkIGF0IHRoaXMKKyAg ICAgIHBvaW50LgorICAgICovCisgICAgREJVR19BU1NFUlQoZGJfc3RhdCB8fCAhcGFyZW50IHx8 ICFwYXJlbnQtPmNoaWxkcmVuX2F0dGFjaGVkKTsKKyAgICAvKgorICAgICAgVGhhbmtzIHRvIHRo ZSBhYm92ZSBhc3N1bXB0aW9uIHRoZSBiZWxvdyBjb25kaXRpb24gd2lsbCBndWFyYW50ZWUgdGhh dAorICAgICAgbWVyZ2VfdGFibGVfZm91bmQgaXMgVFJVRSB3aGVuIHdlIG5lZWQgdG8gcmVvcGVu IGNoaWxkIG9yIHBhcmVudCB0YWJsZS4KKyAgICAgIE5vdGUgdGhhdCBpdCB3b3JrcyBldmVuIGlu IHNpdHVhdGlvbiB3aGVuIGl0IGlzIG9ubHkgYSBjaGlsZCBhbmQgbm90IGEKKyAgICAgIHBhcmVu dCB0aGF0IG5lZWRzIHJlb3BlbiAodGhpcyBjYW4gaGFwcGVuIHdoZW4gZ2V0X2xvY2tzID09IEZB TFNFKS4KKyAgICAqLworICAgIGlmICh0YWJsZS0+Y2hpbGRfbCAmJiAhdGFibGUtPmNoaWxkcmVu X2F0dGFjaGVkKQogICAgICAgbWVyZ2VfdGFibGVfZm91bmQ9IFRSVUU7Ci0gICAgaWYgKCF0YWJs ZXMgfHwgKCFkYl9zdGF0ICYmIHJlb3Blbl90YWJsZSh0YWJsZSkpKQorCisgICAgaWYgKCF0YWJs ZXMpCiAgICAgewotICAgICAgbXlfZXJyb3IoRVJfQ0FOVF9SRU9QRU5fVEFCTEUsIE1ZRigwKSwg dGFibGUtPmFsaWFzKTsKICAgICAgIC8qCi0gICAgICAgIElmIHdlIGNvdWxkIG5vdCBhbGxvY2F0 ZSAndGFibGVzJywgd2UgbWF5IGNsb3NlIG9wZW4gdGFibGVzCi0gICAgICAgIGhlcmUuIElmIGEg TUVSR0UgdGFibGUgaXMgYWZmZWN0ZWQsIGRldGFjaCB0aGUgY2hpbGRyZW4gZmlyc3QuCi0gICAg ICAgIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2xlYXIgdGhlIGNoaWxkIG9yIHBhcmVudCB0YWJs ZSByZWZlcmVuY2UKLSAgICAgICAgb2YgdGhpcyB0YWJsZSBiZWNhdXNlIHRoZSBUQUJMRSBpcyBm cmVlZC4gQnV0IHdlIG5lZWQgdG8gY2xlYXIKLSAgICAgICAgdGhlIGNoaWxkIG9yIHBhcmVudCBy ZWZlcmVuY2VzIG9mIHRoZSBvdGhlciBiZWxvbmdpbmcgdGFibGVzIHNvCi0gICAgICAgIHRoYXQg dGhleSBjYW5ub3QgYmUgbW92ZWQgaW50byB0aGUgdW51c2VkX3RhYmxlcyBjaGFpbiB3aXRoCi0g ICAgICAgIHRoZXNlIHBvaW50ZXJzIHNldC4KKyAgICAgICAgSWYgd2UgY291bGQgbm90IGFsbG9j YXRlICd0YWJsZXMnIHdlIGNsb3NlIEFMTCBvcGVuIHRhYmxlcyBoZXJlLgorICAgICAgICBCZWZv cmUgY2xvc2luZyBNRVJHRSBjaGlsZCBvciBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2ggY2hpbGRy ZW4KKyAgICAgICAgYW5kL29yIGNsZWFyIHJlZmVyZW5jZXMgaW4vdG8gdGhlbS4KICAgICAgICov Ci0gICAgICBpZiAodGFibGUtPmNoaWxkX2wgfHwgdGFibGUtPnBhcmVudCkKKyAgICAgIGlmIChw YXJlbnQpCiAgICAgICAgIGRldGFjaF9tZXJnZV9jaGlsZHJlbih0YWJsZSwgVFJVRSk7Ci0gICAg ICBWT0lEKGhhc2hfZGVsZXRlKCZvcGVuX2NhY2hlLCh1Y2hhciopIHRhYmxlKSk7Ci0gICAgICBl cnJvcj0xOworICAgIH0KKyAgICBlbHNlIGlmICh0YWJsZS0+cGFyZW50ID09ICZiYWRfbWVyZ2Vf bWFya2VyKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgIFRoaXMgaXMgZWl0aGVyIGEgY2hpbGQg b3IgYSBwYXJlbnQgb2YgYSBNRVJHRSB0YWJsZSBmb3Igd2hpY2gKKyAgICAgICAgd2UgYWxyZWFk eSBkZWNpZGVkIHRoYXQgd2UgYXJlIHVuYWJsZSB0byByZW9wZW4gaXQuIENsb3NlIGl0LgorCisg ICAgICAgIFJlc2V0IHBhcmVudCByZWZlcmVuY2UsIGl0IG1heSBiZSB1c2VkIHdoaWxlIGZyZWVp bmcgdGhlIHRhYmxlLgorICAgICAgKi8KKyAgICAgIHRhYmxlLT5wYXJlbnQ9IE5VTEw7CisgICAg fQorICAgIGVsc2UgaWYgKCFkYl9zdGF0ICYmIHJlb3Blbl90YWJsZSh0YWJsZSkpCisgICAgewor ICAgICAgLyoKKyAgICAgICAgSWYgd2UgZmFpbCB0byByZW9wZW4gYSBjaGlsZCBvciBhIHBhcmVu dCBpbiBhIE1FUkdFIHRhYmxlIGFuZCB0aGUKKyAgICAgICAgTUVSR0UgdGFibGUgaXMgYWZmZWN0 ZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBtYXJrIGFsbCByZWxldmFudCB0YWJsZXMKKyAgICAgICAg aW52YWxpZC4gT3RoZXJ3aXNlIGhhbmRsZSBpdCBhcyB1c3VhbC4KKworICAgICAgICBBbGwgaW4g YWxsIHdlIG11c3QgZW5kIHVwIHdpdGg6CisgICAgICAgIC0gY2hpbGQgdGFibGVzIGFyZSBkZXRh Y2hlZCBmcm9tIHBhcmVudC4gVGhpcyB3YXMgZG9uZSBlYXJsaWVyLAorICAgICAgICAgIGJ1dCBj aGlsZDwtPnBhcmVudCByZWZlcmVuY2VzIHdlcmUga2VwdCB2YWxpZCBmb3IgcmVvcGVuLgorICAg ICAgICAtIHBhcmVudCBpcyBub3QgaW4gdGhlIHRvLWJlLWxvY2tlZCB0YWJsZXMKKyAgICAgICAg LSBhbGwgY2hpbGQgdGFibGVzIGFuZCBwYXJlbnQgYXJlIG5vdCBpbiB0aGUgVEhEOjpvcGVuX3Rh Ymxlcy4KKyAgICAgICAgLSBhbGwgY2hpbGQgdGFibGVzIGFuZCBwYXJlbnQgYXJlIG5vdCBpbiB0 aGUgb3Blbl9jYWNoZS4KKworICAgICAgICBQbGVhc2Ugbm90ZSB0aGF0IGJlbG93IHdlIGRvIGFk ZGl0aW9uYWwgcGFzcyB0aHJvdWdoIFRIRDo6b3Blbl90YWJsZXMKKyAgICAgICAgbGlzdCB0byBh Y2hpZXZlIHRoZSBsYXN0IHRocmVlIHBvaW50cy4KKyAgICAgICovCisgICAgICBpZiAocGFyZW50 KQorICAgICAgeworICAgICAgICBtYXJrX21lcmdlX3BhcmVudF9hbmRfY2hpbGRyZW5fYXNfYmFk KHBhcmVudCk7CisgICAgICAgIHRhYmxlLT5wYXJlbnQ9IE5VTEw7CisgICAgICB9CiAgICAgfQog ICAgIGVsc2UKICAgICB7CkBAIC0zMzY2LDIxICszNDMwLDU2IEBAIGJvb2wgcmVvcGVuX3RhYmxl cyhUSEQgKnRoZCwgYm9vbCBnZXRfbG8KIAl0YWJsZS0+cy0+dmVyc2lvbj0wOwogCXRhYmxlLT5v cGVuX3BsYWNlaG9sZGVyPSAwOwogICAgICAgfQorICAgICAgY29udGludWU7CiAgICAgfQorICAg IG15X2Vycm9yKEVSX0NBTlRfUkVPUEVOX1RBQkxFLCBNWUYoMCksIHRhYmxlLT5hbGlhcyk7Cisg ICAgVk9JRChoYXNoX2RlbGV0ZSgmb3Blbl9jYWNoZSwgKHVjaGFyICopIHRhYmxlKSk7CisgICAg ZXJyb3I9IDE7CiAgIH0KICAgKnByZXY9MDsKICAgLyoKICAgICBXaGVuIGFsbCB0YWJsZXMgYXJl IG9wZW4gYWdhaW4sIHdlIGNhbiByZS1hdHRhY2ggTUVSR0UgY2hpbGRyZW4gdG8KLSAgICB0aGVp ciBwYXJlbnRzLiBBbGwgVEFCTEUgb2JqZWN0cyBhcmUgc3RpbGwgcHJlc2VudC4KKyAgICB0aGVp ciBwYXJlbnRzLgorCisgICAgSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHJlb3BlbmluZyBh IGNoaWxkIG9yIGEgcGFyZW50IG9mIGEgTUVSR0UKKyAgICB0YWJsZSwgb3Igd2hpbGUgcmVhdHRh Y2hpbmcgY2hpbGQgdGFibGVzIHRvIHRoZWlyIHBhcmVudHMsIHNvbWUgdGFibGVzCisgICAgbWF5 IGhhdmUgYmVlbiBrZXB0IG9wZW4gYnV0IG1hcmtlZCBmb3IgY2xvc2Ugd2l0aCBiYWRfbWVyZ2Vf bWFya2VyLgorICAgIENsb3NlIHRoZXNlIHRhYmxlcyBub3cuCiAgICovCi0gIERCVUdfUFJJTlQo InRjYWNoZSIsICgicmUtYXR0YWNoaW5nIE1FUkdFIHRhYmxlczogJWQiLCBtZXJnZV90YWJsZV9m b3VuZCkpOwotICBpZiAoIWVycm9yICYmIG1lcmdlX3RhYmxlX2ZvdW5kICYmIHJlYXR0YWNoX21l cmdlKHRoZCwgJmVycl90YWJsZXMpKQorICBpZiAodGFibGVzICYmIG1lcmdlX3RhYmxlX2ZvdW5k ICYmIChlcnJvcnw9IHJlYXR0YWNoX21lcmdlKHRoZCkpKQogICB7Ci0gICAgd2hpbGUgKGVycl90 YWJsZXMpCisgICAgcHJldj0gJnRoZC0+b3Blbl90YWJsZXM7CisgICAgZm9yICh0YWJsZT0gdGhk LT5vcGVuX3RhYmxlczsgdGFibGU7IHRhYmxlPSBuZXh0KQogICAgIHsKLSAgICAgIFZPSUQoaGFz aF9kZWxldGUoJm9wZW5fY2FjaGUsICh1Y2hhciopIGVycl90YWJsZXMpKTsKLSAgICAgIGVycl90 YWJsZXM9IGVycl90YWJsZXMtPm5leHQ7CisgICAgICBuZXh0PSB0YWJsZS0+bmV4dDsKKyAgICAg IGlmICh0YWJsZS0+cGFyZW50ID09ICZiYWRfbWVyZ2VfbWFya2VyKQorICAgICAgeworICAgICAg ICAvKiBSZW1vdmUgbWVyZ2UgcGFyZW50IGZyb20gdG8tYmUtbG9ja2VkIHRhYmxlcyBhcnJheS4g Ki8KKyAgICAgICAgaWYgKGdldF9sb2NrcyAmJiB0YWJsZS0+Y2hpbGRfbCkKKyAgICAgICAgewor ICAgICAgICAgIFRBQkxFICoqdDsKKyAgICAgICAgICBmb3IgKHQ9IHRhYmxlczsgdCA8IHRhYmxl c19wdHI7IHQrKykKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoKnQgPT0gdGFibGUpCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgIHRhYmxlc19wdHItLTsKKyAgICAgICAgICAgICAg bWVtbW92ZSh0LCB0ICsgMSwgKHRhYmxlc19wdHIgLSB0KSAqIHNpemVvZihUQUJMRSAqKSk7Cisg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICAvKiBSZXNldCBwYXJlbnQgcmVmZXJlbmNlLCBpdCBtYXkgYmUgdXNlZCB3aGls ZSBmcmVlaW5nIHRoZSB0YWJsZS4gKi8KKyAgICAgICAgdGFibGUtPnBhcmVudD0gTlVMTDsKKyAg ICAgICAgLyogRnJlZSB0YWJsZS4gKi8KKyAgICAgICAgVk9JRChoYXNoX2RlbGV0ZSgmb3Blbl9j YWNoZSwgKHVjaGFyICopIHRhYmxlKSk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7Cisg ICAgICAgICpwcmV2PSB0YWJsZTsKKyAgICAgICAgcHJldj0gJnRhYmxlLT5uZXh0OworICAgICAg fQogICAgIH0KKyAgICAqcHJldj0gMDsKICAgfQogICBEQlVHX1BSSU5UKCJ0Y2FjaGUiLCAoIm9w ZW4gdGFibGVzIHRvIGxvY2s6ICV1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50KSAo dGFibGVzX3B0ciAtIHRhYmxlcykpKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9k Yl9wbHVnaW4vc3luYy9zeW5jMHN5bmMuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3N5 bmMvc3luYzBzeW5jLmMJMjAxMS0wOC0xNSAwOToxMTo0MyArMDAwMAorKysgYi9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vc3luYy9zeW5jMHN5bmMuYwkyMDExLTA4LTIyIDE0OjAzOjA3ICswMDAwCkBA IC0xMjQ4LDcgKzEyNDgsMTMgQEAgc3luY190aHJlYWRfYWRkX2xldmVsKAogCQkJCQkgICAgIFRS VUUpKTsKIAkJYnJlYWs7CiAJY2FzZSBTWU5DX0lCVUZfVFJFRV9OT0RFX05FVzoKLQkJdXRfYShz eW5jX3RocmVhZF9sZXZlbHNfY29udGFpbihhcnJheSwgU1lOQ19JQlVGX01VVEVYKSk7CisJCS8q IGlidWZfYWRkX2ZyZWVfcGFnZSgpIGFsbG9jYXRlcyBuZXcgcGFnZXMgZm9yIHRoZQorCQljaGFu Z2UgYnVmZmVyIHdoaWxlIG9ubHkgaG9sZGluZyB0aGUgdGFibGVzcGFjZQorCQl4LWxhdGNoLiBU aGVzZSBwcmUtYWxsb2NhdGVkIG5ldyBwYWdlcyBtYXkgb25seSBiZQorCQl0YWtlbiBpbiB1c2Ug d2hpbGUgaG9sZGluZyBpYnVmX211dGV4LCBpbgorCQlidHJfcGFnZV9hbGxvY19mb3JfaWJ1Zigp LiAqLworCQl1dF9hKHN5bmNfdGhyZWFkX2xldmVsc19jb250YWluKGFycmF5LCBTWU5DX0lCVUZf TVVURVgpCisJCSAgICAgfHwgc3luY190aHJlYWRfbGV2ZWxzX2NvbnRhaW4oYXJyYXksIFNZTkNf RlNQKSk7CiAJCWJyZWFrOwogCWNhc2UgU1lOQ19JQlVGX0lOREVYX1RSRUU6CiAJCWlmIChzeW5j X3RocmVhZF9sZXZlbHNfY29udGFpbihhcnJheSwgU1lOQ19GU1ApKSB7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3VwcG9ydC1maWxlcy9teXNxbC5zcGVjLnNoJwotLS0gYS9zdXBwb3J0LWZpbGVzL215 c3FsLnNwZWMuc2gJMjAxMS0wNy0wNyAxNToyMjoyNCArMDAwMAorKysgYi9zdXBwb3J0LWZpbGVz L215c3FsLnNwZWMuc2gJMjAxMS0wOC0xOSAxNjo0ODoxNCArMDAwMApAQCAtMzgyLDcgKzM4Miw3 IEBAIHNoIC1jICAiUEFUSD1cIiR7TVlTUUxfQlVJTERfUEFUSDotJFBBVEgKIAkgICAgLS1lbmFi bGUtbG9jYWwtaW5maWxlIFwKIAkgICAgLS13aXRoLWZhc3QtbXV0ZXhlcyBcCiAJICAgIC0td2l0 aC1teXNxbGQtdXNlcj0le215c3FsZF91c2VyfSBcCi0JICAgIC0td2l0aC11bml4LXNvY2tldC1w YXRoPS92YXIvbGliL215c3FsL215c3FsLnNvY2sgXAorCSAgICAtLXdpdGgtdW5peC1zb2NrZXQt cGF0aD0le215c3FsZGF0YWRpcn0vbXlzcWwuc29jayBcCiAJICAgIC0td2l0aC1waWMgXAogCSAg ICAtLXByZWZpeD0vIFwKICVpZiAle0NMVVNURVJfQlVJTER9CkBAIC04NTgsNiArODU4LDEzIEBA IGNob3duIC1SICV7bXlzcWxkX3VzZXJ9OiV7bXlzcWxkX2dyb3VwfSAKICMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogY2htb2QgLVIgb2ctcncgJG15c3FsX2RhdGFkaXIvbXlzcWwKIAorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIERlYWwgd2l0aCBTRUxpbnV4LCBpZiBpdCBpcyBpbnN0YWxsZWQgLyB1c2VkCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK2lmIFsgLXggL3NiaW4vcmVzdG9yZWNvbiBdIDsgdGhlbgorCS9zYmluL3Jlc3Rv cmVjb24gLVIgJXtteXNxbGRhdGFkaXJ9CitmaQorCiAjIFdhcyB0aGUgc2VydmVyIHJ1bm5pbmcg YmVmb3JlIHRoZSB1cGdyYWRlPyBJZiBzbywgcmVzdGFydCB0aGUgbmV3IG9uZS4KIGlmIFsgIiRT RVJWRVJfVE9fU1RBUlQiID0gInRydWUiIF0gOyB0aGVuCiAJIyBSZXN0YXJ0IGluIHRoZSBzYW1l IHdheSB0aGF0IG15c3FsZCB3aWxsIGJlIHN0YXJ0ZWQgbm9ybWFsbHkuCkBAIC0xMTY1LDYgKzEx NzIsMTUgQEAgZmkKICMgbWVyZ2luZyBCSyB0cmVlcykKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog JWNoYW5nZWxvZworKiBGcmkgQXVnIDE5IDIwMTEgSm9lcmcgQnJ1ZWhlIDxqb2VyZy5icnVlaGVA b3JhY2xlLmNvbT4KKworLSBGaXggYnVnIzM3MTY1ICIoKEdlbmVyaWMgcnBtKSkgZmFpbCB0byBp bnN0YWxsIG9uIEZlZG9yYSA5IHg4Nl82NCIKKyAgT24gRmVkb3JhLCBjZXJ0YWluIGFjY2Vzc2Vz IHRvICIvdmFyL2xpYi9teXNxbC9IT1NUTkFNRS5lcnIiIHdlcmUgYmxvY2tlZAorICBieSBTRUxp bnV4IHBvbGljeSwgdGhpcyBtYWRlIHRoZSBzZXJ2ZXIgc3RhcnQgZmFpbCB3aXRoIHRoZSBtZXNz YWdlCisgICAgICBNYW5hZ2VyIG9mIHBpZC1maWxlIHF1aXQgd2l0aG91dCB1cGRhdGluZyBmaWxl CisgIENhbGxpbmcgIi9zYmluL3Jlc3RvcmVjb24gLVIgL3Zhci9saWIvbXlzcWwiIGZpeGVzIHRo aXMuCistIFJlcGxhY2Ugb2NjdXJyZW5jZXMgb2YgdGhhdCBwYXRoIG5hbWUgYnkgdGhlIHNwZWMg ZmlsZSB2YXJpYWJsZSAle215c3FsZGF0YWRpcn0uCisKICogVGh1IEp1bCAwNyAyMDExIEpvZXJn IEJydWVoZSA8am9lcmcuYnJ1ZWhlQG9yYWNsZS5jb20+CiAKIC0gRml4IGJ1ZyM0NTQxNTogInJw bSB1cGdyYWRlIHJlY3JlYXRlcyB0ZXN0IGRhdGFiYXNlIgoKTm8gYnVuZGxlIChyZWFzb246IHVz ZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=