From: marko.makela Date: April 11 2011 2:04pm Subject: bzr commit into mysql-5.5-innodb branch (marko.makela:3364) List-Archive: http://lists.mysql.com/commits/135197 Message-Id: <201104111405.p3BE5KVx031710@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2003042766==" --===============2003042766== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS81LjUtaW5ub2RiLyBi YXNlZCBvbiByZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVo MThpNThyZjRiMncKCiAzMzY0IE1hcmtvIE3DpGtlbMOkCTIwMTEtMDQtMTEgW21lcmdlXQogICAg ICBNZXJnZSBteXNxbC01LjEtaW5ub2RiIHRvIG15c3FsLTUuNS1pbm5vZGIuCgogICAgYWRkZWQ6 CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiX2J1ZzU5NjQxLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTY0MS50ZXN0CiAgICBt b2RpZmllZDoKICAgICAgY2xpZW50L215c3FsdGVzdC5jYwogICAgICBzcWwvc3FsX2NsYXNzLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFu ZGxlci9oYW5kbGVyMGFsdGVyLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngw dHJ4LmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB1bmRvLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9sb2cvbG9nMGxvZy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3Ry eDBzeXMuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3Fs dGVzdC5jYycKLS0tIGEvY2xpZW50L215c3FsdGVzdC5jYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncKKysrIGIvY2xpZW50L215c3Fs dGVzdC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kw Znp5NzcyNjZvdnRsCkBAIC00NTk4LDEzICs0NTk4LDE0IEBAIHN0YXRpYyBpbnQgbXlfa2lsbChp bnQgcGlkLCBpbnQgc2lnKQogICBjb21tYW5kICBjYWxsZWQgY29tbWFuZAogCiAgIERFU0NSSVBU SU9OCi0gIHNodXRkb3duIFs8dGltZW91dD5dCisgIHNodXRkb3duX3NlcnZlciBbPHRpbWVvdXQ+ XQogCiAqLwogCiB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3RfY29tbWFuZCAqY29t bWFuZCkKIHsKLSAgaW50IHRpbWVvdXQ9NjAsIHBpZDsKKyAgbG9uZyB0aW1lb3V0PTYwOworICBp bnQgcGlkOwogICBEWU5BTUlDX1NUUklORyBkc19waWRmaWxlX25hbWU7CiAgIE1ZU1FMKiBteXNx bCA9ICZjdXJfY29uLT5teXNxbDsKICAgc3RhdGljIERZTkFNSUNfU1RSSU5HIGRzX3RpbWVvdXQ7 CkBAIC00NjE5LDggKzQ2MjAsOSBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihzdHJ1Y3Qgc3Rf Y29tbWFuCiAKICAgaWYgKGRzX3RpbWVvdXQubGVuZ3RoKQogICB7Ci0gICAgdGltZW91dD0gYXRv aShkc190aW1lb3V0LnN0cik7Ci0gICAgaWYgKHRpbWVvdXQgPT0gMCkKKyAgICBjaGFyKiBlbmRw dHI7CisgICAgdGltZW91dD0gc3RydG9sKGRzX3RpbWVvdXQuc3RyLCAmZW5kcHRyLCAxMCk7Cisg ICAgaWYgKCplbmRwdHIgIT0gJ1wwJykKICAgICAgIGRpZSgiSWxsZWdhbCBhcmd1bWVudCBmb3Ig dGltZW91dDogJyVzJyIsIGRzX3RpbWVvdXQuc3RyKTsKICAgfQogICBkeW5zdHJfZnJlZSgmZHNf dGltZW91dCk7CkBAIC00NjYyLDcgKzQ2NjQsNyBAQCB2b2lkIGRvX3NodXRkb3duX3NlcnZlcihz dHJ1Y3Qgc3RfY29tbWFuCiAgICAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJQcm9jZXNzICVkIGRv ZXMgbm90IGV4aXN0IGFueW1vcmUiLCBwaWQpKTsKICAgICAgIERCVUdfVk9JRF9SRVRVUk47CiAg ICAgfQotICAgIERCVUdfUFJJTlQoImluZm8iLCAoIlNsZWVwaW5nLCB0aW1lb3V0OiAlZCIsIHRp bWVvdXQpKTsKKyAgICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJTbGVlcGluZywgdGltZW91dDogJWxk IiwgdGltZW91dCkpOwogICAgIG15X3NsZWVwKDEwMDAwMDBMKTsKICAgfQogCgo9PT0gYWRkZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnNTk2NDEucmVzdWx0Jwot LS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYl9idWc1OTY0MS5yZXN1bHQJMTk3 MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lu bm9kYl9idWc1OTY0MS5yZXN1bHQJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0 MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtMCwwICsxLDU3IEBACitDUkVBVEUgVEFCTEUg dChhIElOVCBQUklNQVJZIEtFWSwgYiBJTlQpRU5HSU5FPUlubm9EQjsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTKDIsMiksKDQsNCksKDgsOCksKDE2LDE2KSwoMzIsMzIpOworQ09NTUlUOworWEEgU1RB UlQgJzEyMyc7CitJTlNFUlQgSU5UTyB0IFZBTFVFUygxLDEpOworWEEgRU5EICcxMjMnOworWEEg UFJFUEFSRSAnMTIzJzsKK1hBIFNUQVJUICc0NTYnOworSU5TRVJUIElOVE8gdCBWQUxVRVMoMyw0 NyksKDUsNjcpOworVVBEQVRFIHQgU0VUIGI9MipiIFdIRVJFIGEgQkVUV0VFTiA1IEFORCA4Owor WEEgRU5EICc0NTYnOworWEEgUFJFUEFSRSAnNDU2JzsKK1hBIFNUQVJUICc3ODknOworVVBEQVRF IHQgU0VUIGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQQVJFICc3ODkn OworY2FsbCBtdHIuYWRkX3N1cHByZXNzaW9uKCJGb3VuZCAzIHByZXBhcmVkIFhBIHRyYW5zYWN0 aW9ucyIpOworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVOQ09NTUlUVEVE OworU0VMRUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0NworNAk0Cis1CTEzNAorOAkx NgorMTYJMTYKKzMyCTEyOAorQ09NTUlUOworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZF TCBSRUFEIFVOQ09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworYQliCisxCTEKKzIJMgorMwk0 NworNAk0Cis1CTEzNAorOAkxNgorMTYJMTYKKzMyCTEyOAorQ09NTUlUOworWEEgUkVDT1ZFUjsK K2Zvcm1hdElECWd0cmlkX2xlbmd0aAlicXVhbF9sZW5ndGgJZGF0YQorMQkzCTAJNzg5CisxCTMJ MAk0NTYKKzEJMwkwCTEyMworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFDSyAnNDU2JzsK K1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKK2EJYgorMgkyCis0CTQKKzgJOAor MTYJMTYKKzMyCTEyOAorRFJPUCBUQUJMRSB0OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3Vp dGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzU5NjQxLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAw MAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWc1OTY0MS50ZXN0CXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92 dGwKQEAgLTAsMCArMSw2NiBAQAorIyBCdWcgIzU5NjQxIFByZXBhcmVkIFhBIHRyYW5zYWN0aW9u IGNhdXNlcyBzaHV0ZG93biBoYW5nIGFmdGVyIGEgY3Jhc2gKKworLS0gc291cmNlIGluY2x1ZGUv bm90X2VtYmVkZGVkLmluYworLS0gc291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCisKK0NS RUFURSBUQUJMRSB0KGEgSU5UIFBSSU1BUlkgS0VZLCBiIElOVClFTkdJTkU9SW5ub0RCOworSU5T RVJUIElOVE8gdCBWQUxVRVMoMiwyKSwoNCw0KSwoOCw4KSwoMTYsMTYpLCgzMiwzMik7CitDT01N SVQ7CitYQSBTVEFSVCAnMTIzJzsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTKDEsMSk7CitYQSBFTkQg JzEyMyc7CitYQSBQUkVQQVJFICcxMjMnOworCitDT05ORUNUIChjb24xLGxvY2FsaG9zdCxyb290 LCwpOworQ09OTkVDVElPTiBjb24xOworCitYQSBTVEFSVCAnNDU2JzsKK0lOU0VSVCBJTlRPIHQg VkFMVUVTKDMsNDcpLCg1LDY3KTsKK1VQREFURSB0IFNFVCBiPTIqYiBXSEVSRSBhIEJFVFdFRU4g NSBBTkQgODsKK1hBIEVORCAnNDU2JzsKK1hBIFBSRVBBUkUgJzQ1Nic7CisKK0NPTk5FQ1QgKGNv bjIsbG9jYWxob3N0LHJvb3QsLCk7CitDT05ORUNUSU9OIGNvbjI7CisKK1hBIFNUQVJUICc3ODkn OworVVBEQVRFIHQgU0VUIGI9NCphIFdIRVJFIGE9MzI7CitYQSBFTkQgJzc4OSc7CitYQSBQUkVQ QVJFICc3ODknOworCisjIFRoZSBzZXJ2ZXIgd291bGQgaXNzdWUgdGhpcyB3YXJuaW5nIG9uIHJl c3RhcnQuCitjYWxsIG10ci5hZGRfc3VwcHJlc3Npb24oIkZvdW5kIDMgcHJlcGFyZWQgWEEgdHJh bnNhY3Rpb25zIik7CisKKyMgS2lsbCB0aGUgc2VydmVyIHdpdGhvdXQgc2VuZGluZyBhIHNodXRk b3duIGNvbW1hbmQKKy0tIGV4ZWMgZWNobyAid2FpdCIgPiAkTVlTUUxURVNUX1ZBUkRJUi90bXAv bXlzcWxkLjEuZXhwZWN0CistLSBzaHV0ZG93bl9zZXJ2ZXIgMAorLS0gc291cmNlIGluY2x1ZGUv d2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5jCisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0g ZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBl Y3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0tIHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29u bmVjdGVkX2FnYWluLmluYworU0VUIFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRUFEIFVO Q09NTUlUVEVEOworU0VMRUNUICogRlJPTSB0OworQ09NTUlUOworCisjIFNodXQgZG93biB0aGUg c2VydmVyLiBUaGlzIHdvdWxkIGhhbmcgYmVjYXVzZSBvZiB0aGUgYnVnLgorLS0gZXhlYyBlY2hv ICJ3YWl0IiA+ICRNWVNRTFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIHNodXRk b3duX3NlcnZlcgorLS0gc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9kaXNjb25uZWN0ZWQuaW5j CisKKyMgUmVzdGFydCB0aGUgc2VydmVyLgorLS0gZXhlYyBlY2hvICJyZXN0YXJ0IiA+ICRNWVNR TFRFU1RfVkFSRElSL3RtcC9teXNxbGQuMS5leHBlY3QKKy0tIGVuYWJsZV9yZWNvbm5lY3QKKy0t IHNvdXJjZSBpbmNsdWRlL3dhaXRfdW50aWxfY29ubmVjdGVkX2FnYWluLmluYworCitTRVQgVFJB TlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFQUQgVU5DT01NSVRURUQ7CitTRUxFQ1QgKiBGUk9N IHQ7CitDT01NSVQ7CitYQSBSRUNPVkVSOworWEEgUk9MTEJBQ0sgJzEyMyc7CitYQSBST0xMQkFD SyAnNDU2JzsKK1hBIENPTU1JVCAnNzg5JzsKK1NFTEVDVCAqIEZST00gdDsKKworRFJPUCBUQUJM RSB0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfY2xhc3MuY2MnCi0tLSBhL3NxbC9zcWxf Y2xhc3MuY2MJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxl aDE4aTU4cmY0YjJ3CisrKyBiL3NxbC9zcWxfY2xhc3MuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtMzY3NSw2ICszNjc1 LDcgQEAgYm9vbCB4aWRfY2FjaGVfaW5zZXJ0KFhJRCAqeGlkLCBlbnVtIHhhXwogICAgIHhzLT54 YV9zdGF0ZT14YV9zdGF0ZTsKICAgICB4cy0+eGlkLnNldCh4aWQpOwogICAgIHhzLT5pbl90aGQ9 MDsKKyAgICB4cy0+cm1fZXJyb3I9MDsKICAgICByZXM9bXlfaGFzaF9pbnNlcnQoJnhpZF9jYWNo ZSwgKHVjaGFyKil4cyk7CiAgIH0KICAgbXlzcWxfbXV0ZXhfdW5sb2NrKCZMT0NLX3hpZF9jYWNo ZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9k Yi5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDp2 YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC02MjQ0LDEw ICs2MjQ0LDYgQEAgY3JlYXRlX3RhYmxlX2RlZigKIAlEQlVHX1BSSU5UKCJlbnRlciIsICgidGFi bGVfbmFtZTogJXMiLCB0YWJsZV9uYW1lKSk7CiAKIAl1dF9hKHRyeC0+bXlzcWxfdGhkICE9IE5V TEwpOwotCWlmIChJU19NQUdJQ19UQUJMRV9BTkRfVVNFUl9ERU5JRURfQUNDRVNTKHRhYmxlX25h bWUsCi0JCQkJCQkgIChUSEQqKSB0cngtPm15c3FsX3RoZCkpIHsKLQkJREJVR19SRVRVUk4oSEFf RVJSX0dFTkVSSUMpOwotCX0KIAogCS8qIE15U1FMIGRvZXMgdGhlIG5hbWUgbGVuZ3RoIGNoZWNr LiBCdXQgd2UgZG8gYWRkaXRpb25hbCBjaGVjawogCW9uIHRoZSBuYW1lIGxlbmd0aCBoZXJlICov CkBAIC02MzY4LDYgKzYzNjQsOCBAQCBlcnJfY29sOgogCQkJY29sX2xlbik7CiAJfQogCisJc3J2 X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOworCiAJZXJy b3IgPSByb3dfY3JlYXRlX3RhYmxlX2Zvcl9teXNxbCh0YWJsZSwgdHJ4KTsKIAogCWlmIChlcnJv ciA9PSBEQl9EVVBMSUNBVEVfS0VZKSB7CkBAIC02Nzg0LDM4ICs2NzgyLDE3IEBAIGhhX2lubm9i YXNlOjpjcmVhdGUoCiAJCURCVUdfUkVUVVJOKEhBX0VSUl9UT19CSUdfUk9XKTsKIAl9CiAKLQkv KiBHZXQgdGhlIHRyYW5zYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCB0aGQsIG9y IGNyZWF0ZSBvbmUKLQlpZiBub3QgeWV0IGNyZWF0ZWQgKi8KLQotCXBhcmVudF90cnggPSBjaGVj a190cnhfZXhpc3RzKHRoZCk7Ci0KLQkvKiBJbiBjYXNlIE15U1FMIGNhbGxzIHRoaXMgaW4gdGhl IG1pZGRsZSBvZiBhIFNFTEVDVCBxdWVyeSwgcmVsZWFzZQotCXBvc3NpYmxlIGFkYXB0aXZlIGhh c2ggbGF0Y2ggdG8gYXZvaWQgZGVhZGxvY2tzIG9mIHRocmVhZHMgKi8KLQotCXRyeF9zZWFyY2hf bGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwYXJlbnRfdHJ4KTsKLQotCXRyeCA9IGlubm9iYXNl X3RyeF9hbGxvY2F0ZSh0aGQpOwotCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dl cl9jYXNlX3RhYmxlX25hbWVzOwotCiAJc3RyY3B5KG5hbWUyLCBuYW1lKTsKIAogCW5vcm1hbGl6 ZV90YWJsZV9uYW1lKG5vcm1fbmFtZSwgbmFtZTIpOwogCi0JLyogTGF0Y2ggdGhlIElubm9EQiBk YXRhIGRpY3Rpb25hcnkgZXhjbHVzaXZlbHkgc28gdGhhdCBubyBkZWFkbG9ja3MKLQlvciBsb2Nr IHdhaXRzIGNhbiBoYXBwZW4gaW4gaXQgZHVyaW5nIGEgdGFibGUgY3JlYXRlIG9wZXJhdGlvbi4K LQlEcm9wIHRhYmxlIGV0Yy4gZG8gdGhpcyBsYXRjaGluZyBpbiByb3cwbXlzcWwuYy4gKi8KLQot CXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwotCiAJLyogQ3JlYXRlIHRoZSB0 YWJsZSBkZWZpbml0aW9uIGluIElubm9EQiAqLwogCiAJZmxhZ3MgPSAwOwogCiAJLyogVmFsaWRh dGUgY3JlYXRlIG9wdGlvbnMgaWYgaW5ub2RiX3N0cmljdF9tb2RlIGlzIHNldC4gKi8KIAlpZiAo IWNyZWF0ZV9vcHRpb25zX2FyZV92YWxpZCh0aGQsIGZvcm0sIGNyZWF0ZV9pbmZvKSkgewotCQll cnJvciA9IEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTjsKLQkJZ290byBjbGVhbnVwOworCQlE QlVHX1JFVFVSTihFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04pOwogCX0KIAogCWlmIChjcmVh dGVfaW5mby0+a2V5X2Jsb2NrX3NpemUpIHsKQEAgLTY5NTcsMTYgKzY5MzQsMzcgQEAgaGFfaW5u b2Jhc2U6OmNyZWF0ZSgKIAogCS8qIENoZWNrIGZvciBuYW1lIGNvbmZsaWN0cyAod2l0aCByZXNl cnZlZCBuYW1lKSBmb3IKIAlhbnkgdXNlciBpbmRpY2VzIHRvIGJlIGNyZWF0ZWQuICovCi0JaWYg KGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQodHJ4LCBmb3JtLT5rZXlfaW5mbywKKwlp ZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCh0aGQsIGZvcm0tPmtleV9pbmZvLAog CQkJCQkgICAgZm9ybS0+cy0+a2V5cykpIHsKLQkJZXJyb3IgPSAtMTsKLQkJZ290byBjbGVhbnVw OworCQlEQlVHX1JFVFVSTigtMSk7CisJfQorCisJaWYgKElTX01BR0lDX1RBQkxFX0FORF9VU0VS X0RFTklFRF9BQ0NFU1Mobm9ybV9uYW1lLCB0aGQpKSB7CisJCURCVUdfUkVUVVJOKEhBX0VSUl9H RU5FUklDKTsKIAl9CiAKIAlpZiAoY3JlYXRlX2luZm8tPm9wdGlvbnMgJiBIQV9MRVhfQ1JFQVRF X1RNUF9UQUJMRSkgewogCQlmbGFncyB8PSBESUNUX1RGMl9URU1QT1JBUlkgPDwgRElDVF9URjJf U0hJRlQ7CiAJfQogCisJLyogR2V0IHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhl IGN1cnJlbnQgdGhkLCBvciBjcmVhdGUgb25lCisJaWYgbm90IHlldCBjcmVhdGVkICovCisKKwlw YXJlbnRfdHJ4ID0gY2hlY2tfdHJ4X2V4aXN0cyh0aGQpOworCisJLyogSW4gY2FzZSBNeVNRTCBj YWxscyB0aGlzIGluIHRoZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKKwlwb3Nz aWJsZSBhZGFwdGl2ZSBoYXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzICov CisKKwl0cnhfc2VhcmNoX2xhdGNoX3JlbGVhc2VfaWZfcmVzZXJ2ZWQocGFyZW50X3RyeCk7CisK Kwl0cnggPSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodGhkKTsKKworCS8qIExhdGNoIHRoZSBJbm5v REIgZGF0YSBkaWN0aW9uYXJ5IGV4Y2x1c2l2ZWx5IHNvIHRoYXQgbm8gZGVhZGxvY2tzCisJb3Ig bG9jayB3YWl0cyBjYW4gaGFwcGVuIGluIGl0IGR1cmluZyBhIHRhYmxlIGNyZWF0ZSBvcGVyYXRp b24uCisJRHJvcCB0YWJsZSBldGMuIGRvIHRoaXMgbGF0Y2hpbmcgaW4gcm93MG15c3FsLmMuICov CisKKwlyb3dfbXlzcWxfbG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKKwogCWVycm9yID0gY3Jl YXRlX3RhYmxlX2RlZih0cngsIGZvcm0sIG5vcm1fbmFtZSwKIAkJY3JlYXRlX2luZm8tPm9wdGlv bnMgJiBIQV9MRVhfQ1JFQVRFX1RNUF9UQUJMRSA/IG5hbWUyIDogTlVMTCwKIAkJZmxhZ3MpOwpA QCAtNzIyMSwxNCArNzIxOSwxNCBAQCBoYV9pbm5vYmFzZTo6ZGVsZXRlX3RhYmxlKAogCiAJdHJ4 ID0gaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKHRoZCk7CiAKLQlzcnZfbG93ZXJfY2FzZV90YWJsZV9u YW1lcyA9IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7Ci0KIAluYW1lX2xlbiA9IHN0cmxlbihuYW1l KTsKIAogCXV0X2EobmFtZV9sZW4gPCAxMDAwKTsKIAogCS8qIERyb3AgdGhlIHRhYmxlIGluIElu bm9EQiAqLwogCisJc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSBsb3dlcl9jYXNlX3RhYmxl X25hbWVzOworCiAJZXJyb3IgPSByb3dfZHJvcF90YWJsZV9mb3JfbXlzcWwobm9ybV9uYW1lLCB0 cngsCiAJCQkJCSB0aGRfc3FsX2NvbW1hbmQodGhkKQogCQkJCQkgPT0gU1FMQ09NX0RST1BfREIp OwpAQCAtNzM0NCw4ICs3MzQyLDYgQEAgaW5ub2Jhc2VfcmVuYW1lX3RhYmxlKAogCWNoYXIqCW5v cm1fdG87CiAJY2hhcioJbm9ybV9mcm9tOwogCi0Jc3J2X2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMg PSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzOwotCiAJLy8gTWFnaWMgbnVtYmVyIDY0IGFyYml0cmFy eQogCW5vcm1fdG8gPSAoY2hhciopIG15X21hbGxvYyhzdHJsZW4odG8pICsgNjQsIE1ZRigwKSk7 CiAJbm9ybV9mcm9tID0gKGNoYXIqKSBteV9tYWxsb2Moc3RybGVuKGZyb20pICsgNjQsIE1ZRigw KSk7CkBAIC03MzYwLDYgKzczNTYsOCBAQCBpbm5vYmFzZV9yZW5hbWVfdGFibGUoCiAJCXJvd19t eXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCX0KIAorCXNydl9sb3dlcl9jYXNlX3Rh YmxlX25hbWVzID0gbG93ZXJfY2FzZV90YWJsZV9uYW1lczsKKwogCWVycm9yID0gcm93X3JlbmFt ZV90YWJsZV9mb3JfbXlzcWwoCiAJCW5vcm1fZnJvbSwgbm9ybV90bywgdHJ4LCBsb2NrX2FuZF9j b21taXQpOwogCkBAIC0xMDI2NSw3ICsxMDI2Myw3IEBAIGlubm9iYXNlX2NvbW1pdF9ieV94aWQo CiAKIAlpZiAodHJ4KSB7CiAJCWlubm9iYXNlX2NvbW1pdF9sb3codHJ4KTsKLQorCQl0cnhfZnJl ZV9mb3JfYmFja2dyb3VuZCh0cngpOwogCQlyZXR1cm4oWEFfT0spOwogCX0gZWxzZSB7CiAJCXJl dHVybihYQUVSX05PVEEpOwpAQCAtMTAyOTEsNyArMTAyODksOSBAQCBpbm5vYmFzZV9yb2xsYmFj a19ieV94aWQoCiAJdHJ4ID0gdHJ4X2dldF90cnhfYnlfeGlkKHhpZCk7CiAKIAlpZiAodHJ4KSB7 Ci0JCXJldHVybihpbm5vYmFzZV9yb2xsYmFja190cngodHJ4KSk7CisJCWludAlyZXQgPSBpbm5v YmFzZV9yb2xsYmFja190cngodHJ4KTsKKwkJdHJ4X2ZyZWVfZm9yX2JhY2tncm91bmQodHJ4KTsK KwkJcmV0dXJuKHJldCk7CiAJfSBlbHNlIHsKIAkJcmV0dXJuKFhBRVJfTk9UQSk7CiAJfQpAQCAt MTA5MjQsMTkgKzEwOTI0LDE5IEBAIHN0YXRpYyBpbnQgc2hvd19pbm5vZGJfdmFycyhUSEQgKnRo ZCwgU0gKICAgcmV0dXJuIDA7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGVhY2ggaW5kZXggbmFtZSBmb3IgYSB0YWJsZSBhZ2Fp bnN0IHJlc2VydmVkCi1zeXN0ZW0gZGVmYXVsdCBwcmltYXJ5IGluZGV4IG5hbWUgJ0dFTl9DTFVT VF9JTkRFWCcuIElmIGEgbmFtZSBtYXRjaGVzLAotdGhpcyBmdW5jdGlvbiBwdXNoZXMgYW4gd2Fy bmluZyBtZXNzYWdlIHRvIHRoZSBjbGllbnQsIGFuZCByZXR1cm5zIHRydWUuICovCitzeXN0ZW0g ZGVmYXVsdCBwcmltYXJ5IGluZGV4IG5hbWUgJ0dFTl9DTFVTVF9JTkRFWCcuIElmIGEgbmFtZQor bWF0Y2hlcywgdGhpcyBmdW5jdGlvbiBwdXNoZXMgYW4gd2FybmluZyBtZXNzYWdlIHRvIHRoZSBj bGllbnQsCithbmQgcmV0dXJucyB0cnVlLgorQHJldHVybiB0cnVlIGlmIHRoZSBpbmRleCBuYW1l IG1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KIGV4dGVybiAiQyIgVU5JVl9JTlRFUk4KIGJv b2wKIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwotCQkJCQkvKiBvdXQ6IHRydWUgaWYgYW4gaW5kZXggbmFtZQotCQkJCQlt YXRjaGVzIHRoZSByZXNlcnZlZCBuYW1lICovCi0JY29uc3QgdHJ4X3QqCXRyeCwJCS8qIGluOiBJ bm5vREIgdHJhbnNhY3Rpb24gaGFuZGxlICovCi0JY29uc3QgS0VZKglrZXlfaW5mbywJLyogaW46 IEluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwotCXVsaW50CQludW1fb2Zfa2V5cykJLyogaW46IE51 bWJlciBvZiBpbmRleGVzIHRvCisJVEhEKgkJdGhkLAkJLyohPCBpbi9vdXQ6IE15U1FMIGNvbm5l Y3Rpb24gKi8KKwljb25zdCBLRVkqCWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzIHRvIGJlIGNy ZWF0ZWQgKi8KKwl1bGludAkJbnVtX29mX2tleXMpCS8qITwgaW46IE51bWJlciBvZiBpbmRleGVz IHRvCiAJCQkJCWJlIGNyZWF0ZWQuICovCiB7CiAJY29uc3QgS0VZKglrZXk7CkBAIC0xMDk0OCw3 ICsxMDk0OCw3IEBAIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAJCWlmIChpbm5v YmFzZV9zdHJjYXNlY21wKGtleS0+bmFtZSwKIAkJCQkJaW5ub2Jhc2VfaW5kZXhfcmVzZXJ2ZV9u YW1lKSA9PSAwKSB7CiAJCQkvKiBQdXNoIHdhcm5pbmcgdG8gbXlzcWwgKi8KLQkJCXB1c2hfd2Fy bmluZ19wcmludGYoKFRIRCopIHRyeC0+bXlzcWxfdGhkLAorCQkJcHVzaF93YXJuaW5nX3ByaW50 Zih0aGQsCiAJCQkJCSAgICBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLAogCQkJCQkgICAg RVJfV1JPTkdfTkFNRV9GT1JfSU5ERVgsCiAJCQkJCSAgICAiQ2Fubm90IENyZWF0ZSBJbmRleCB3 aXRoIG5hbWUgIgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9o YV9pbm5vZGIuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCXJl dmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIy dworKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtMzIx LDE1ICszMjEsMTQgQEAgaW5ub2Jhc2VfdHJ4X2FsbG9jYXRlKAogVGhpcyBmdW5jdGlvbiBjaGVj a3MgZWFjaCBpbmRleCBuYW1lIGZvciBhIHRhYmxlIGFnYWluc3QgcmVzZXJ2ZWQKIHN5c3RlbSBk ZWZhdWx0IHByaW1hcnkgaW5kZXggbmFtZSAnR0VOX0NMVVNUX0lOREVYJy4gSWYgYSBuYW1lCiBt YXRjaGVzLCB0aGlzIGZ1bmN0aW9uIHB1c2hlcyBhbiB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNs aWVudCwKLWFuZCByZXR1cm5zIHRydWUuICovCithbmQgcmV0dXJucyB0cnVlLgorQHJldHVybiB0 cnVlIGlmIHRoZSBpbmRleCBuYW1lIG1hdGNoZXMgdGhlIHJlc2VydmVkIG5hbWUgKi8KIGV4dGVy biAiQyIKIGJvb2wKIGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQoCiAvKj09PT09PT09 PT09PT09PT09PT09PT09PT09PT0qLwotCQkJCQkvKiBvdXQ6IHRydWUgaWYgdGhlIGluZGV4IG5h bWUKLQkJCQkJbWF0Y2hlcyB0aGUgcmVzZXJ2ZWQgbmFtZSAqLwotCWNvbnN0IHRyeF90Kgl0cngs CQkvKiBpbjogSW5ub0RCIHRyYW5zYWN0aW9uIGhhbmRsZSAqLwotCWNvbnN0IEtFWSoJa2V5X2lu Zm8sCS8qIGluOiBJbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KLQl1bGludAkJbnVtX29mX2tleXMp OwkvKiBpbjogTnVtYmVyIG9mIGluZGV4ZXMgdG8KKwlUSEQqCQl0aGQsCQkvKiE8IGluL291dDog TXlTUUwgY29ubmVjdGlvbiAqLworCWNvbnN0IEtFWSoJa2V5X2luZm8sCS8qITwgaW46IEluZGV4 ZXMgdG8gYmUgY3JlYXRlZCAqLworCXVsaW50CQludW1fb2Zfa2V5cyk7CS8qITwgaW46IE51bWJl ciBvZiBpbmRleGVzIHRvCiAJCQkJCWJlIGNyZWF0ZWQuICovCiAKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6dmFzaWwuZGltb3ZAb3Jh Y2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3CisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTY1Myw0NCArNjUzLDM3IEBA IGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAKIAl1cGRhdGVfdGhkKCk7CiAKLQloZWFwID0gbWVt X2hlYXBfY3JlYXRlKDEwMjQpOwotCiAJLyogSW4gY2FzZSBNeVNRTCBjYWxscyB0aGlzIGluIHRo ZSBtaWRkbGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKIAlwb3NzaWJsZSBhZGFwdGl2ZSBo YXNoIGxhdGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzLiAqLwogCXRyeF9zZWFyY2hf bGF0Y2hfcmVsZWFzZV9pZl9yZXNlcnZlZChwcmVidWlsdC0+dHJ4KTsKLQl0cnhfc3RhcnRfaWZf bm90X3N0YXJ0ZWQocHJlYnVpbHQtPnRyeCk7CiAKLQkvKiBDcmVhdGUgYSBiYWNrZ3JvdW5kIHRy YW5zYWN0aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgotCXRoZSBkYXRhIGRpY3Rpb25hcnkgdGFi bGVzLiAqLwotCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxvY2F0ZSh1c2VyX3RoZCk7Ci0JdHJ4X3N0 YXJ0X2lmX25vdF9zdGFydGVkKHRyeCk7CisJLyogQ2hlY2sgaWYgdGhlIGluZGV4IG5hbWUgaXMg cmVzZXJ2ZWQuICovCisJaWYgKGlubm9iYXNlX2luZGV4X25hbWVfaXNfcmVzZXJ2ZWQodXNlcl90 aGQsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpIHsKKwkJREJVR19SRVRVUk4oLTEpOworCX0KIAog CWlubm9kYl90YWJsZSA9IGluZGV4ZWRfdGFibGUKIAkJPSBkaWN0X3RhYmxlX2dldChwcmVidWls dC0+dGFibGUtPm5hbWUsIEZBTFNFKTsKIAogCWlmIChVTklWX1VOTElLRUxZKCFpbm5vZGJfdGFi bGUpKSB7Ci0JCWVycm9yID0gSEFfRVJSX05PX1NVQ0hfVEFCTEU7Ci0JCWdvdG8gZXJyX2V4aXQ7 CisJCURCVUdfUkVUVVJOKEhBX0VSUl9OT19TVUNIX1RBQkxFKTsKIAl9CiAKLQkvKiBDaGVjayBp ZiB0aGUgaW5kZXggbmFtZSBpcyByZXNlcnZlZC4gKi8KLQlpZiAoaW5ub2Jhc2VfaW5kZXhfbmFt ZV9pc19yZXNlcnZlZCh0cngsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpIHsKLQkJZXJyb3IgPSAt MTsKLQl9IGVsc2UgewotCQkvKiBDaGVjayB0aGF0IGluZGV4IGtleXMgYXJlIHNlbnNpYmxlICov Ci0JCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tfaW5kZXhfa2V5cyhrZXlfaW5mbywgbnVtX29mX2tl eXMsCi0JCQkJCQkgIGlubm9kYl90YWJsZSk7Ci0JfQorCS8qIENoZWNrIHRoYXQgaW5kZXgga2V5 cyBhcmUgc2Vuc2libGUgKi8KKwllcnJvciA9IGlubm9iYXNlX2NoZWNrX2luZGV4X2tleXMoa2V5 X2luZm8sIG51bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFko ZXJyb3IpKSB7Ci1lcnJfZXhpdDoKLQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJdHJ4X2dlbmVy YWxfcm9sbGJhY2tfZm9yX215c3FsKHRyeCwgTlVMTCk7Ci0JCXRyeF9mcmVlX2Zvcl9teXNxbCh0 cngpOwotCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKIAkJREJVR19SRVRV Uk4oZXJyb3IpOwogCX0KIAorCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CisJdHJ4X3N0 YXJ0X2lmX25vdF9zdGFydGVkKHByZWJ1aWx0LT50cngpOworCisJLyogQ3JlYXRlIGEgYmFja2dy b3VuZCB0cmFuc2FjdGlvbiBmb3IgdGhlIG9wZXJhdGlvbnMgb24KKwl0aGUgZGF0YSBkaWN0aW9u YXJ5IHRhYmxlcy4gKi8KKwl0cnggPSBpbm5vYmFzZV90cnhfYWxsb2NhdGUodXNlcl90aGQpOwor CXRyeF9zdGFydF9pZl9ub3Rfc3RhcnRlZCh0cngpOworCiAJLyogQ3JlYXRlIHRhYmxlIGNvbnRh aW5pbmcgYWxsIGluZGV4ZXMgdG8gYmUgYnVpbHQgaW4gdGhpcwogCWFsdGVyIHRhYmxlIGFkZCBp bmRleCBzbyB0aGF0IHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAJaW4gdGhlIHRhYmxl LiAqLwpAQCAtNzYyLDggKzc1NSwxMiBAQCBlcnJfZXhpdDoKIAogCQkJdXRfZChkaWN0X3RhYmxl X2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhpbm5vZGJfdGFibGUsCiAJCQkJCQkJICAgICAgRkFMU0Up KTsKKwkJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJCQl0cnhfZ2VuZXJhbF9yb2xsYmFja19mb3Jf bXlzcWwodHJ4LCBOVUxMKTsKIAkJCXJvd19teXNxbF91bmxvY2tfZGF0YV9kaWN0aW9uYXJ5KHRy eCk7Ci0JCQlnb3RvIGVycl9leGl0OworCQkJdHJ4X2ZyZWVfZm9yX215c3FsKHRyeCk7CisJCQl0 cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWlsdC0+dHJ4KTsKKwkJCURCVUdfUkVUVVJOKGVycm9y KTsKIAkJfQogCiAJCXRyeC0+dGFibGVfaWQgPSBpbmRleGVkX3RhYmxlLT5pZDsKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHRyeC5oJwotLS0gYS9zdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHRyeC5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydworKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvdHJ4MHRyeC5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDEx MTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTQ0LDYgKzQ0LDkgQEAgZXh0ZXJuIHNlc3NfdCoJ dHJ4X2R1bW15X3Nlc3M7CiAvKiogTnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBjdXJyZW50bHkgYWxs b2NhdGVkIGZvciBNeVNRTDogcHJvdGVjdGVkIGJ5CiB0aGUga2VybmVsIG11dGV4ICovCiBleHRl cm4gdWxpbnQJdHJ4X25fbXlzcWxfdHJhbnNhY3Rpb25zOworLyoqIE51bWJlciBvZiB0cmFuc2Fj dGlvbnMgY3VycmVudGx5IGluIHRoZSBYQSBQUkVQQVJFRCBzdGF0ZTogcHJvdGVjdGVkIGJ5Cit0 aGUga2VybmVsIG11dGV4ICovCitleHRlcm4gdWxpbnQJdHJ4X25fcHJlcGFyZWQ7CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJlbGVhc2VzIHRoZSBzZWFyY2ggbGF0Y2ggaWYgdHJ4IGhhcyByZXNlcnZl ZCBpdC4gKi8KQEAgLTEwOCw2ICsxMTEsMTQgQEAgdHJ4X2ZyZWUoCiAvKj09PT09Ki8KIAl0cnhf dCoJdHJ4KTsJLyohPCBpbiwgb3duOiB0cnggb2JqZWN0ICovCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitB dCBzaHV0ZG93biwgZnJlZXMgYSB0cmFuc2FjdGlvbiBvYmplY3QgdGhhdCBpcyBpbiB0aGUgUFJF UEFSRUQgc3RhdGUuICovCitVTklWX0lOVEVSTgordm9pZAordHJ4X2ZyZWVfcHJlcGFyZWQoCisv Kj09PT09PT09PT09PT09Ki8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluLCBvd246IHRyeCBvYmplY3Qg Ki8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8q KgogRnJlZXMgYSB0cmFuc2FjdGlvbiBvYmplY3QgZm9yIE15U1FMLiAqLwogVU5JVl9JTlRFUk4K IHZvaWQKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdHJ4MHVu ZG8uaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3RyeDB1bmRvLmgJcmV2aWQ6dmFz aWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3CisrKyBi L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS90cngwdW5kby5oCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNDExMTQwMzMyLTc3aTBmenk3NzI2Nm92dGwKQEAgLTI5Niw2ICsyOTYs MTUgQEAgdm9pZAogdHJ4X3VuZG9faW5zZXJ0X2NsZWFudXAoCiAvKj09PT09PT09PT09PT09PT09 PT09Ki8KIAl0cnhfdCoJdHJ4KTsJLyohPCBpbjogdHJhbnNhY3Rpb24gaGFuZGxlICovCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKK0F0IHNodXRkb3duLCBmcmVlcyB0aGUgdW5kbyBsb2dzIG9mIGEgUFJF UEFSRUQgdHJhbnNhY3Rpb24uICovCitVTklWX0lOVEVSTgordm9pZAordHJ4X3VuZG9fZnJlZV9w cmVwYXJlZCgKKy8qPT09PT09PT09PT09PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbi9v dXQ6IFBSRVBBUkVEIHRyYW5zYWN0aW9uICovCisJVU5JVl9DT0xEIF9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFBhcnNlcyB0 aGUgcmVkbyBsb2cgZW50cnkgb2YgYW4gdW5kbyBsb2cgcGFnZSBpbml0aWFsaXphdGlvbi4KCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2xvZy9sb2cwbG9nLmMnCi0tLSBhL3N0 b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29t LTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9s b2cvbG9nMGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNDExMTQwMzMy LTc3aTBmenk3NzI2Nm92dGwKQEAgLTMxMDksMTIgKzMxMDksMTMgQEAgbG9vcDoKIAkJZ290byBs b29wOwogCX0KIAotCS8qIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGxvbmdlciB0cmFuc2FjdGlv bnMuIFdlIG5lZWQgdGhpcyB3YWl0IGV2ZW4KLQlmb3IgdGhlICd2ZXJ5IGZhc3QnIHNodXRkb3du LCBiZWNhdXNlIHRoZSBJbm5vREIgbGF5ZXIgbWF5IGhhdmUKLQljb21taXR0ZWQgb3IgcHJlcGFy ZWQgdHJhbnNhY3Rpb25zIGFuZCB3ZSBkb24ndCB3YW50IHRvIGxvc2UgdGhlbS4gKi8KKwkvKiBD aGVjayB0aGF0IHRoZXJlIGFyZSBubyBsb25nZXIgdHJhbnNhY3Rpb25zLCBleGNlcHQgZm9yCisJ UFJFUEFSRUQgb25lcy4gV2UgbmVlZCB0aGlzIHdhaXQgZXZlbiBmb3IgdGhlICd2ZXJ5IGZhc3Qn CisJc2h1dGRvd24sIGJlY2F1c2UgdGhlIElubm9EQiBsYXllciBtYXkgaGF2ZSBjb21taXR0ZWQg b3IKKwlwcmVwYXJlZCB0cmFuc2FjdGlvbnMgYW5kIHdlIGRvbid0IHdhbnQgdG8gbG9zZSB0aGVt LiAqLwogCiAJc2VydmVyX2J1c3kgPSB0cnhfbl9teXNxbF90cmFuc2FjdGlvbnMgPiAwCi0JCXx8 IFVUX0xJU1RfR0VUX0xFTih0cnhfc3lzLT50cnhfbGlzdCkgPiAwOworCQl8fCBVVF9MSVNUX0dF VF9MRU4odHJ4X3N5cy0+dHJ4X2xpc3QpID4gdHJ4X25fcHJlcGFyZWQ7CiAJbXV0ZXhfZXhpdCgm a2VybmVsX211dGV4KTsKIAogCWlmIChzZXJ2ZXJfYnVzeSB8fCBzcnZfaXNfYW55X2JhY2tncm91 bmRfdGhyZWFkX2FjdGl2ZSgpKSB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS90cngvdHJ4MHN5cy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwc3lzLmMJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDQwODA3MjM0Ni15MWxlaDE4aTU4cmY0YjJ3 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDBzeXMuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC0zNyw2ICszNyw3 IEBAIENyZWF0ZWQgMy8yNi8xOTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgInRyeDByc2VnLmgi CiAjaW5jbHVkZSAidHJ4MHVuZG8uaCIKICNpbmNsdWRlICJzcnYwc3J2LmgiCisjaW5jbHVkZSAi c3J2MHN0YXJ0LmgiCiAjaW5jbHVkZSAidHJ4MHB1cmdlLmgiCiAjaW5jbHVkZSAibG9nMGxvZy5o IgogI2luY2x1ZGUgImxvZzByZWN2LmgiCkBAIC0xNjE3LDEwICsxNjE4LDEyIEBAIHZvaWQKIHRy eF9zeXNfY2xvc2Uodm9pZCkKIC8qPT09PT09PT09PT09PT09Ki8KIHsKKwl0cnhfdCoJCXRyeDsK IAl0cnhfcnNlZ190Kglyc2VnOwogCXJlYWRfdmlld190Kgl2aWV3OwogCiAJdXRfYWQodHJ4X3N5 cyAhPSBOVUxMKTsKKwl1dF9hZChzcnZfc2h1dGRvd25fc3RhdGUgPT0gU1JWX1NIVVRET1dOX0VY SVRfVEhSRUFEUyk7CiAKIAkvKiBDaGVjayB0aGF0IGFsbCByZWFkIHZpZXdzIGFyZSBjbG9zZWQg ZXhjZXB0IHJlYWQgdmlldyBvd25lZAogCWJ5IGEgcHVyZ2UuICovCkBAIC0xNjUyLDYgKzE2NTUs MTMgQEAgdHJ4X3N5c19jbG9zZSh2b2lkKQogCW1lbV9mcmVlKHRyeF9kb3VibGV3cml0ZSk7CiAJ dHJ4X2RvdWJsZXdyaXRlID0gTlVMTDsKIAorCS8qIE9ubHkgcHJlcGFyZWQgdHJhbnNhY3Rpb25z IG1heSBiZSBsZWZ0IGluIHRoZSBzeXN0ZW0uIEZyZWUgdGhlbS4gKi8KKwl1dF9hKFVUX0xJU1Rf R0VUX0xFTih0cnhfc3lzLT50cnhfbGlzdCkgPT0gdHJ4X25fcHJlcGFyZWQpOworCisJd2hpbGUg KCh0cnggPSBVVF9MSVNUX0dFVF9GSVJTVCh0cnhfc3lzLT50cnhfbGlzdCkpICE9IE5VTEwpIHsK KwkJdHJ4X2ZyZWVfcHJlcGFyZWQodHJ4KTsKKwl9CisKIAkvKiBUaGVyZSBjYW4ndCBiZSBhbnkg YWN0aXZlIHRyYW5zYWN0aW9ucy4gKi8KIAlyc2VnID0gVVRfTElTVF9HRVRfRklSU1QodHJ4X3N5 cy0+cnNlZ19saXN0KTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4 L3RyeDB0cnguYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHRyeC5jCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA0MDgwNzIzNDYteTFsZWgxOGk1OHJmNGIydworKysg Yi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwdHJ4LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA0MTExNDAzMzItNzdpMGZ6eTc3MjY2b3Z0bApAQCAtNTAsNiArNTAsOSBAQCBV TklWX0lOVEVSTiBzZXNzX3QqCQl0cnhfZHVtbXlfc2VzcyA9IE5VCiAvKiogTnVtYmVyIG9mIHRy YW5zYWN0aW9ucyBjdXJyZW50bHkgYWxsb2NhdGVkIGZvciBNeVNRTDogcHJvdGVjdGVkIGJ5CiB0 aGUga2VybmVsIG11dGV4ICovCiBVTklWX0lOVEVSTiB1bGludAl0cnhfbl9teXNxbF90cmFuc2Fj dGlvbnMgPSAwOworLyoqIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgY3VycmVudGx5IGluIHRoZSBY QSBQUkVQQVJFRCBzdGF0ZTogcHJvdGVjdGVkIGJ5Cit0aGUga2VybmVsIG11dGV4ICovCitVTklW X0lOVEVSTiB1bGludAl0cnhfbl9wcmVwYXJlZCA9IDA7CiAKICNpZmRlZiBVTklWX1BGU19NVVRF WAogLyogS2V5IHRvIHJlZ2lzdGVyIHRoZSBtdXRleCB3aXRoIHBlcmZvcm1hbmNlIHNjaGVtYSAq LwpAQCAtMzM4LDYgKzM0MSw2MCBAQCB0cnhfZnJlZSgKIH0KIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgor QXQgc2h1dGRvd24sIGZyZWVzIGEgdHJhbnNhY3Rpb24gb2JqZWN0IHRoYXQgaXMgaW4gdGhlIFBS RVBBUkVEIHN0YXRlLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF9mcmVlX3ByZXBhcmVkKAor Lyo9PT09PT09PT09PT09PSovCisJdHJ4X3QqCXRyeCkJLyohPCBpbiwgb3duOiB0cnggb2JqZWN0 ICovCit7CisJdXRfYWQobXV0ZXhfb3duKCZrZXJuZWxfbXV0ZXgpKTsKKwl1dF9hKHRyeC0+Y29u Y19zdGF0ZSA9PSBUUlhfUFJFUEFSRUQpOworCXV0X2EodHJ4LT5tYWdpY19uID09IFRSWF9NQUdJ Q19OKTsKKworCS8qIFByZXBhcmVkIHRyYW5zYWN0aW9ucyBhcmUgc29ydCBvZiBhY3RpdmU7IHRo ZXkgYWxsb3cKKwlST0xMQkFDSyBhbmQgQ09NTUlUIG9wZXJhdGlvbnMuIEJlY2F1c2UgdGhlIHN5 c3RlbSBkb2VzIG5vdAorCWNvbnRhaW4gYW55IG90aGVyIHRyYW5zYWN0aW9ucyB0aGFuIHByZXBh cmVkIHRyYW5zYWN0aW9ucyBhdAorCXRoZSBzaHV0ZG93biBzdGFnZSBhbmQgYmVjYXVzZSBhIHRy YW5zYWN0aW9uIGNhbm5vdCBiZWNvbWUKKwlQUkVQQVJFRCB3aGlsZSBob2xkaW5nIGxvY2tzLCBp dCBpcyBzYWZlIHRvIHJlbGVhc2UgdGhlIGxvY2tzCisJaGVsZCBieSBQUkVQQVJFRCB0cmFuc2Fj dGlvbnMgaGVyZSBhdCBzaHV0ZG93bi4qLworCWxvY2tfcmVsZWFzZV9vZmZfa2VybmVsKHRyeCk7 CisKKwl0cnhfdW5kb19mcmVlX3ByZXBhcmVkKHRyeCk7CisKKwltdXRleF9mcmVlKCZ0cngtPnVu ZG9fbXV0ZXgpOworCisJaWYgKHRyeC0+dW5kb19ub19hcnIpIHsKKwkJdHJ4X3VuZG9fYXJyX2Zy ZWUodHJ4LT51bmRvX25vX2Fycik7CisJfQorCisJdXRfYShVVF9MSVNUX0dFVF9MRU4odHJ4LT5z aWduYWxzKSA9PSAwKTsKKwl1dF9hKFVUX0xJU1RfR0VUX0xFTih0cngtPnJlcGx5X3NpZ25hbHMp ID09IDApOworCisJdXRfYSh0cngtPndhaXRfbG9jayA9PSBOVUxMKTsKKwl1dF9hKFVUX0xJU1Rf R0VUX0xFTih0cngtPndhaXRfdGhycykgPT0gMCk7CisKKwl1dF9hKCF0cngtPmhhc19zZWFyY2hf bGF0Y2gpOworCisJdXRfYSh0cngtPmRpY3Rfb3BlcmF0aW9uX2xvY2tfbW9kZSA9PSAwKTsKKwor CWlmICh0cngtPmxvY2tfaGVhcCkgeworCQltZW1faGVhcF9mcmVlKHRyeC0+bG9ja19oZWFwKTsK Kwl9CisKKwlpZiAodHJ4LT5nbG9iYWxfcmVhZF92aWV3X2hlYXApIHsKKwkJbWVtX2hlYXBfZnJl ZSh0cngtPmdsb2JhbF9yZWFkX3ZpZXdfaGVhcCk7CisJfQorCisJdXRfYShpYl92ZWN0b3JfaXNf ZW1wdHkodHJ4LT5hdXRvaW5jX2xvY2tzKSk7CisJaWJfdmVjdG9yX2ZyZWUodHJ4LT5hdXRvaW5j X2xvY2tzKTsKKworCVVUX0xJU1RfUkVNT1ZFKHRyeF9saXN0LCB0cnhfc3lzLT50cnhfbGlzdCwg dHJ4KTsKKworCW1lbV9mcmVlKHRyeCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZyZWVzIGEg dHJhbnNhY3Rpb24gb2JqZWN0IGZvciBNeVNRTC4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCkBAIC00 NjcsNiArNTI0LDcgQEAgdHJ4X2xpc3RzX2luaXRfYXRfZGJfc3RhcnQodm9pZCkKIAkJCQkJaWYg KHNydl9mb3JjZV9yZWNvdmVyeSA9PSAwKSB7CiAKIAkJCQkJCXRyeC0+Y29uY19zdGF0ZSA9IFRS WF9QUkVQQVJFRDsKKwkJCQkJCXRyeF9uX3ByZXBhcmVkKys7CiAJCQkJCX0gZWxzZSB7CiAJCQkJ CQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkJCQkiSW5ub0RCOiBTaW5jZSIKQEAgLTU0Myw2ICs2MDEs NyBAQCB0cnhfbGlzdHNfaW5pdF9hdF9kYl9zdGFydCh2b2lkKQogCiAJCQkJCQkJdHJ4LT5jb25j X3N0YXRlCiAJCQkJCQkJCT0gVFJYX1BSRVBBUkVEOworCQkJCQkJCXRyeF9uX3ByZXBhcmVkKys7 CiAJCQkJCQl9IGVsc2UgewogCQkJCQkJCWZwcmludGYoc3RkZXJyLAogCQkJCQkJCQkiSW5ub0RC OiBTaW5jZSIKQEAgLTg3Nyw2ICs5MzYsMTEgQEAgdHJ4X2NvbW1pdF9vZmZfa2VybmVsKAogCXV0 X2FkKHRyeC0+Y29uY19zdGF0ZSA9PSBUUlhfQUNUSVZFIHx8IHRyeC0+Y29uY19zdGF0ZSA9PSBU UlhfUFJFUEFSRUQpOwogCXV0X2FkKG11dGV4X293bigma2VybmVsX211dGV4KSk7CiAKKwlpZiAo VU5JVl9VTkxJS0VMWSh0cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVEKSkgeworCQl1dF9h KHRyeF9uX3ByZXBhcmVkID4gMCk7CisJCXRyeF9uX3ByZXBhcmVkLS07CisJfQorCiAJLyogVGhl IGZvbGxvd2luZyBhc3NpZ25tZW50IG1ha2VzIHRoZSB0cmFuc2FjdGlvbiBjb21taXR0ZWQgaW4g bWVtb3J5CiAJYW5kIG1ha2VzIGl0cyBjaGFuZ2VzIHRvIGRhdGEgdmlzaWJsZSB0byBvdGhlciB0 cmFuc2FjdGlvbnMuCiAJTk9URSB0aGF0IHRoZXJlIGlzIGEgc21hbGwgZGlzY3JlcGFuY3kgZnJv bSB0aGUgc3RyaWN0IGZvcm1hbApAQCAtMTkwMSw2ICsxOTY1LDcgQEAgdHJ4X3ByZXBhcmVfb2Zm X2tlcm5lbCgKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwog CXRyeC0+Y29uY19zdGF0ZSA9IFRSWF9QUkVQQVJFRDsKKwl0cnhfbl9wcmVwYXJlZCsrOwogCS8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAJaWYgKGxzbikgewpA QCAtMjA3Nyw3ICsyMTQyLDggQEAgdHJ4X2dldF90cnhfYnlfeGlkKAogCQlvZiBndHJpZF9sZW5n dGgrYnF1YWxfbGVuZ3RoIGJ5dGVzIHNob3VsZCBiZQogCQl0aGUgc2FtZSAqLwogCi0JCWlmICh0 cngtPmNvbmNfc3RhdGUgPT0gVFJYX1BSRVBBUkVECisJCWlmICh0cngtPmlzX3JlY292ZXJlZAor CQkgICAgJiYgdHJ4LT5jb25jX3N0YXRlID09IFRSWF9QUkVQQVJFRAogCQkgICAgJiYgeGlkLT5n dHJpZF9sZW5ndGggPT0gdHJ4LT54aWQuZ3RyaWRfbGVuZ3RoCiAJCSAgICAmJiB4aWQtPmJxdWFs X2xlbmd0aCA9PSB0cngtPnhpZC5icXVhbF9sZW5ndGgKIAkJICAgICYmIG1lbWNtcCh4aWQtPmRh dGEsIHRyeC0+eGlkLmRhdGEsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS90 cngvdHJ4MHVuZG8uYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwlyZXZp ZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwNDA4MDcyMzQ2LXkxbGVoMThpNThyZjRiMncK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS90cngvdHJ4MHVuZG8uYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDQxMTE0MDMzMi03N2kwZnp5NzcyNjZvdnRsCkBAIC0zNiw2ICszNiw3 IEBAIENyZWF0ZWQgMy8yNi8xOTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgInRyeDByc2VnLmgi CiAjaW5jbHVkZSAidHJ4MHRyeC5oIgogI2luY2x1ZGUgInNydjBzcnYuaCIKKyNpbmNsdWRlICJz cnYwc3RhcnQuaCIKICNpbmNsdWRlICJ0cngwcmVjLmgiCiAjaW5jbHVkZSAidHJ4MHB1cmdlLmgi CiAKQEAgLTE5NzUsNCArMTk3NiwzMSBAQCB0cnhfdW5kb19pbnNlcnRfY2xlYW51cCgKIAogCW11 dGV4X2V4aXQoJihyc2VnLT5tdXRleCkpOwogfQorCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitBdCBzaHV0 ZG93biwgZnJlZXMgdGhlIHVuZG8gbG9ncyBvZiBhIFBSRVBBUkVEIHRyYW5zYWN0aW9uLiAqLwor VU5JVl9JTlRFUk4KK3ZvaWQKK3RyeF91bmRvX2ZyZWVfcHJlcGFyZWQoCisvKj09PT09PT09PT09 PT09PT09PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4vb3V0OiBQUkVQQVJFRCB0cmFuc2FjdGlv biAqLworeworCW11dGV4X2VudGVyKCZ0cngtPnJzZWctPm11dGV4KTsKKworCXV0X2FkKHNydl9z aHV0ZG93bl9zdGF0ZSA9PSBTUlZfU0hVVERPV05fRVhJVF9USFJFQURTKTsKKworCWlmICh0cngt PnVwZGF0ZV91bmRvKSB7CisJCXV0X2EodHJ4LT51cGRhdGVfdW5kby0+c3RhdGUgPT0gVFJYX1VO RE9fUFJFUEFSRUQpOworCQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3QsIHRyeC0+cnNlZy0+dXBk YXRlX3VuZG9fbGlzdCwKKwkJCSAgICAgICB0cngtPnVwZGF0ZV91bmRvKTsKKwkJdHJ4X3VuZG9f bWVtX2ZyZWUodHJ4LT51cGRhdGVfdW5kbyk7CisJfQorCWlmICh0cngtPmluc2VydF91bmRvKSB7 CisJCXV0X2EodHJ4LT5pbnNlcnRfdW5kby0+c3RhdGUgPT0gVFJYX1VORE9fUFJFUEFSRUQpOwor CQlVVF9MSVNUX1JFTU9WRSh1bmRvX2xpc3QsIHRyeC0+cnNlZy0+aW5zZXJ0X3VuZG9fbGlzdCwK KwkJCSAgICAgICB0cngtPmluc2VydF91bmRvKTsKKwkJdHJ4X3VuZG9fbWVtX2ZyZWUodHJ4LT5p bnNlcnRfdW5kbyk7CisJfQorCW11dGV4X2V4aXQoJnRyeC0+cnNlZy0+bXV0ZXgpOworfQogI2Vu ZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwoK --===============2003042766== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: 06db0cde04dc7256176d75f31d6fa22cbb8171e2 # timestamp: 2011-04-11 17:05:12 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # y1leh18i58rf4b2w # # Begin bundle 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 --===============2003042766==--