From: marko.makela Date: May 10 2012 9:17am Subject: bzr push into mysql-trunk branch (marko.makela:3812 to 3813) Bug#14006907 List-Archive: http://lists.mysql.com/commits/144130 X-Bug: 14006907 Message-Id: <201205100917.q4A9HMWX001124@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4MTMgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xMAogICAgICBCdWcjMTQwMDY5MDcgRk9SRUlH TiBLRVkgcHJvYmxlbXMgYWZ0ZXIgRFJPUCBJTkRFWAogICAgICAKICAgICAgZGljdF9pbmRleF90 OiBBZGQgdGhlIHRvX2JlX2Ryb3BwZWQgZmxhZyB0byBpbmNpZGF0ZSB3aGVuIGFuIGluZGV4CiAg ICAgIGlzIGFib3V0IHRvIGJlIGRyb3BwZWQuCiAgICAgIAogICAgICBkaWN0X2ZvcmVpZ25fZmlu ZF9pbmRleCgpOiBBc3NlcnQgdGhhdCB0aGUgY2FsbGVyIGlzIGhvbGRpbmcgdGhlCiAgICAgIGRp Y3Rfc3lzLT5tdXRleC4gU2tpcCBpbmRleGVzIHRoYXQgYXJlIGZsYWdnZWQgYXMgdG8tYmUtZHJv cHBlZC4KICAgICAgCiAgICAgIGRpY3RfZm9yZWlnbl9yZXBsYWNlX2luZGV4KCk6IEFzc2VydCB0 aGF0IHRoZSBpbmRleCBpcyB0by1iZS1kcm9wcGVkLgogICAgICAKICAgICAgaGFfaW5ub2Jhc2U6 OnByZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZSgpOiBMb2NrIHRoZSBkYXRhIGRpY3Rpb25hcnkK ICAgICAgd2hpbGUgY2hlY2tpbmcgaWYgYW55IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGRlcGVu ZCBvbiB0aGUgaW5kZXhlcwogICAgICB0aGF0IGFyZSB0byBiZSBkcm9wcGVkLiBGbGFnIHRoZW0g YXMgc3VjaCBpbiB0aGUgZGF0YSBkaWN0aW9uYXJ5IGNhY2hlLgogICAgICAKICAgICAgaGFfaW5u b2Jhc2U6OmlucGxhY2VfYWx0ZXJfdGFibGUoKTogQWRkIGEgZGVidWcgc3luYyBwb2ludCBmb3Ig dGhlCiAgICAgIERFQlVHX1NZTkMgdGVzdC4KICAgICAgCiAgICAgIHJvbGxiYWNrX2lucGxhY2Vf YWx0ZXJfdGFibGUoKTogQ2xlYXIgdGhlIGluZGV4LT50b19iZV9kcm9wcGVkIGZsYWcgaW4KICAg ICAgdGhlIGRhdGEgZGljdGlvbmFyeSBjYWNoZS4KICAgICAgCiAgICAgIHJiOjEwNDkgYXBwcm92 ZWQgYnkgSmltbXkgWWFuZwoKICAgIGFkZGVkOgogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9k Yi9yL2lubm9kYl9idWcxNDAwNjkwNy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGIvdC9pbm5vZGJfYnVnMTQwMDY5MDcudGVzdAogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVy L2hhbmRsZXIwYWx0ZXIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwZGlj dC5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MG1lbS5oCiAzODEyIE5pc2hh IEdvcGFsYWtyaXNobmFuCTIwMTItMDUtMTAKICAgICAgQnVnIzExNzU3NDg2OjQ5NTM5OiBOT04t REVTQ1JJUFRJVkUgRVJSIChFUlJPUiAwIEZST00gU1RPUkFHRSBFTkdJTkUpIFdJVEgKICAgICAg ICAgICAgICAgICAgICAgICAgICBNVUxUSS1UQUJMRSBVUERBVEUKICAgICAgICAgICAgCiAgICAg IEFuYWx5c2lzOgogICAgICAtLS0tLS0tLS0KICAgICAgTXVsdGlwbGUtdGFibGUgVVBEQVRFIHN0 YXRlbWVudCB3aXRoIElHTk9SRSBrZXl3b3JkIGluIHN0cmljdCBtb2RlIAogICAgICBoYXZpbmcg aW52YWxpZCBvciBtaXNzaW5nIHZhbHVlcyBjb3VsZCB0cmlnZ2VyIGFuIGFzc2VydGlvbiBpbiBk ZWJ1ZwogICAgICBtb2RlLiBIb3dldmVyIG9uIGEgcmVsZWFzZSBidWlsZCwgdGhlIHF1ZXJ5IGV4 ZWN1dGlvbiBmYWlscyByZXBvcnRpbmcgCiAgICAgIGluYXBwcm9wcmlhdGUgZXJyb3JzLgogICAg ICAKICAgICAgVGhlIG11bHRpcGxlLXRhYmxlIFVQREFURSBkb2VzIG5vdCB0ZXN0IGZvciBJR05P UkUgdG8gZGVjaWRlCiAgICAgIHdoZXRoZXIgdGhlIHF1ZXJ5IHNob3VsZCBiZSBhYm9ydGVkIGlu IGNhc2Ugb2YgYW55IHdhcm5pbmcuVGhpcyBjYXVzZXMKICAgICAgdGhlIHdhcm5pbmcgdG8gYmUg Y29udmVydGVkIHRvIGVycm9yKFNUUklDVCBNT0RFIGJlaGF2aW9yKS4gSG93ZXZlcgogICAgICBz aW5jZSB0aGUgZXJyb3JzIGFyZSB0byBiZSBzdXBwcmVzc2VkIGR1ZSB0byB0aGUgSUdOT1JFIGtl eXdvcmQsIHRoZQogICAgICBkaWFnbm9zdGljIGFyZWEgaXMgbm90IHNldCB0byBEQV9FUlJPUi4K ICAgICAgCiAgICAgIFNpbmNlIHRoZSBkaWFnbm9zdGljIGFyZWEgcmVtYWlucyBEQV9FTVBUWSwg YW4gQVNTRVJUIGlzIHRyaWdnZXJlZAogICAgICB3aGljaCBjYXVzZXMgdGhlIG15c3FsZCB0byBj cmFzaCBvbiBhIGRlYnVnIGJ1aWxkLiBPbiBhIHJlbGVhc2UgYnVpbGQKICAgICAgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiBmYWlscyB3aXRoIGluY29ycmVjdCBlcnJvcnMgYmVpbmcgcmVwb3J0ZWQuIAog ICAgICAKICAgICAgRml4OgogICAgICAtLS0KICAgICAgVG8gdGVzdCBmb3IgSUdOT1JFIGR1cmlu ZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBtdWx0aXBsZS10YWJsZSBVUERBVEUgCiAgICAgIHN0YXRl bWVudC4gVGhpcyBjYXVzZXMgdGhlIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIHRoZSBxdWVyeSB3 aXRoCiAgICAgIGFwcHJvcHJpYXRlIHdhcm5pbmdzIGJlaW5nIHJlcG9ydGVkLgoKICAgIG1vZGlm aWVkOgogICAgICBteXNxbC10ZXN0L3IvbXVsdGlfdXBkYXRlLnJlc3VsdAogICAgICBteXNxbC10 ZXN0L3IvbXVsdGlfdXBkYXRlX2lubm9kYi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L211bHRp X3VwZGF0ZS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9tdWx0aV91cGRhdGVfaW5ub2RiLnRlc3QK ICAgICAgc3FsL3NxbF91cGRhdGUuY2MKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3IvaW5ub2RiX2J1ZzE0MDA2OTA3LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0 ZS9pbm5vZGIvci9pbm5vZGJfYnVnMTQwMDY5MDcucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAg KzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfYnVnMTQwMDY5MDcu cmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMDkxNjE1LWFuZXcz czFyNmo5ajU5bjMKQEAgLTAsMCArMSwyMyBAQAorQ1JFQVRFIFRBQkxFIHQxIChjMSBJTlQgUFJJ TUFSWSBLRVksIGMyIElOVCwgSU5ERVgoYzIpKSBFTkdJTkUgPSBJbm5vREI7CitDUkVBVEUgVEFC TEUgdDIgKAorYzIgSU5UIFBSSU1BUlkgS0VZLAorQ09OU1RSQUlOVCB0MmMyIEZPUkVJR04gS0VZ IChjMikgUkVGRVJFTkNFUyB0MSAoYzIpKQorRU5HSU5FID0gSW5ub0RCOworRFJPUCBJTkRFWCBj MiBPTiB0MTsKK0VSUk9SIEhZMDAwOiBDYW5ub3QgZHJvcCBpbmRleCAnYzInOiBuZWVkZWQgaW4g YSBmb3JlaWduIGtleSBjb25zdHJhaW50CitEUk9QIFRBQkxFIHQyOworU0VUIERFQlVHX1NZTkMg PSAnaW5ub2RiX2FmdGVyX2lucGxhY2VfYWx0ZXJfdGFibGUgU0lHTkFMIGRyb3AgV0FJVF9GT1Ig ZmsnOworRFJPUCBJTkRFWCBjMiBPTiB0MTsKK1NFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZP UiBkcm9wJzsKK0NSRUFURSBUQUJMRSB0MiAoCitjMiBJTlQgUFJJTUFSWSBLRVksCitDT05TVFJB SU5UIHQyYzIgRk9SRUlHTiBLRVkgKGMyKSBSRUZFUkVOQ0VTIHQxIChjMikpCitFTkdJTkUgPSBJ bm5vREI7CitFUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRlIHRhYmxlICd0ZXN0LnQyJyAoZXJybm86 IDE1MCkKK1NFVCBERUJVR19TWU5DID0gJ25vdyBTSUdOQUwgZmsnOworQ1JFQVRFIFRBQkxFIHQy ICgKK2MyIElOVCBQUklNQVJZIEtFWSwKK0NPTlNUUkFJTlQgdDJjMiBGT1JFSUdOIEtFWSAoYzIp IFJFRkVSRU5DRVMgdDEgKGMyKSkKK0VOR0lORSA9IElubm9EQjsKK0VSUk9SIEhZMDAwOiBDYW4n dCBjcmVhdGUgdGFibGUgJ3Rlc3QudDInIChlcnJubzogMTUwKQorRFJPUCBUQUJMRSB0MTsKCj09 PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWcxNDAwNjkw Ny50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWcxNDAwNjkw Ny50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9p bm5vZGIvdC9pbm5vZGJfYnVnMTQwMDY5MDcudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDUxMDA5MTYxNS1hbmV3M3MxcjZqOWo1OW4zCkBAIC0wLDAgKzEsNDkgQEAKKy0t c291cmNlIGluY2x1ZGUvaGF2ZV9pbm5vZGIuaW5jCistLXNvdXJjZSBpbmNsdWRlL2hhdmVfZGVi dWdfc3luYy5pbmMKKworIyBTYXZlIHRoZSBpbml0aWFsIG51bWJlciBvZiBjb25jdXJyZW50IHNl c3Npb25zLgorLS1zb3VyY2UgaW5jbHVkZS9jb3VudF9zZXNzaW9ucy5pbmMKKworQ1JFQVRFIFRB QkxFIHQxIChjMSBJTlQgUFJJTUFSWSBLRVksIGMyIElOVCwgSU5ERVgoYzIpKSBFTkdJTkUgPSBJ bm5vREI7CisKK0NSRUFURSBUQUJMRSB0MiAoCisgYzIgSU5UIFBSSU1BUlkgS0VZLAorIENPTlNU UkFJTlQgdDJjMiBGT1JFSUdOIEtFWSAoYzIpIFJFRkVSRU5DRVMgdDEgKGMyKSkKK0VOR0lORSA9 IElubm9EQjsKKworLS1lcnJvciBFUl9EUk9QX0lOREVYX0ZLCitEUk9QIElOREVYIGMyIE9OIHQx OworCitEUk9QIFRBQkxFIHQyOworCitTRVQgREVCVUdfU1lOQyA9ICdpbm5vZGJfYWZ0ZXJfaW5w bGFjZV9hbHRlcl90YWJsZSBTSUdOQUwgZHJvcCBXQUlUX0ZPUiBmayc7CistLXNlbmQKK0RST1Ag SU5ERVggYzIgT04gdDE7CisKK2Nvbm5lY3QgKGNvbjEsbG9jYWxob3N0LHJvb3QsLCk7Citjb25u ZWN0aW9uIGNvbjE7CisKK1NFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZPUiBkcm9wJzsKKy0t ZXJyb3IgRVJfQ0FOVF9DUkVBVEVfVEFCTEUKK0NSRUFURSBUQUJMRSB0MiAoCisgYzIgSU5UIFBS SU1BUlkgS0VZLAorIENPTlNUUkFJTlQgdDJjMiBGT1JFSUdOIEtFWSAoYzIpIFJFRkVSRU5DRVMg dDEgKGMyKSkKK0VOR0lORSA9IElubm9EQjsKK1NFVCBERUJVR19TWU5DID0gJ25vdyBTSUdOQUwg ZmsnOworCitkaXNjb25uZWN0IGNvbjE7Citjb25uZWN0aW9uIGRlZmF1bHQ7CisKK3JlYXA7CisK Ky0tZXJyb3IgRVJfQ0FOVF9DUkVBVEVfVEFCTEUKK0NSRUFURSBUQUJMRSB0MiAoCisgYzIgSU5U IFBSSU1BUlkgS0VZLAorIENPTlNUUkFJTlQgdDJjMiBGT1JFSUdOIEtFWSAoYzIpIFJFRkVSRU5D RVMgdDEgKGMyKSkKK0VOR0lORSA9IElubm9EQjsKKworRFJPUCBUQUJMRSB0MTsKKworIyBDaGVj ayB0aGF0IGFsbCBjb25uZWN0aW9ucyBvcGVuZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUg YXJlIHJlYWxseQorIyBnb25lIHNvIGV4ZWN1dGlvbiBvZiBvdGhlciB0ZXN0cyB3b24ndCBiZSBh ZmZlY3RlZCBieSB0aGVpciBwcmVzZW5jZS4KKy0tc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9j b3VudF9zZXNzaW9ucy5pbmMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2Rp Y3QvZGljdDBkaWN0LmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNj CXJldmlkOm5pc2hhLmdvcGFsYWtyaXNobmFuQG9yYWNsZS5jb20tMjAxMjA1MTAwODQ5MjMtaXBk ajh4N2M3eWNodHZubAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2RpY3QvZGljdDBkaWN0LmNjCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMDkxNjE1LWFuZXczczFyNmo5ajU5 bjMKQEAgLTMwNTEsMTIgKzMwNTEsMTUgQEAgZGljdF9mb3JlaWduX2ZpbmRfaW5kZXgoCiB7CiAJ ZGljdF9pbmRleF90KglpbmRleDsKIAorCXV0X2FkKG11dGV4X293bigmZGljdF9zeXMtPm11dGV4 KSk7CisKIAlpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRhYmxlKTsKIAogCXdo aWxlIChpbmRleCAhPSBOVUxMKSB7CiAJCS8qIElnbm9yZSBtYXRjaGVzIHRoYXQgcmVmZXIgdG8g dGhlIHNhbWUgaW5zdGFuY2UKIAkJKG9yIHRoZSBpbmRleCBpcyB0byBiZSBkcm9wcGVkKSAqLwot CQlpZiAodHlwZXNfaWR4ID09IGluZGV4IHx8IGluZGV4LT50eXBlICYgRElDVF9GVFMpIHsKKwkJ aWYgKHR5cGVzX2lkeCA9PSBpbmRleCB8fCBpbmRleC0+dHlwZSAmIERJQ1RfRlRTCisJCSAgICB8 fCBpbmRleC0+dG9fYmVfZHJvcHBlZCkgewogCiAJCQlnb3RvIG5leHRfcmVjOwogCkBAIC01NTgx LDcgKzU1ODQsNiBAQCBkaWN0X3RhYmxlX2dldF9pbmRleF9vbl9uYW1lKAogCiB9CiAKLSNpZiAx IC8qIFRPRE86IGVuYWJsZSB0aGlzIGluIFdMIzYwNDkgKE1ETCBmb3IgRksgbG9va3VwcykgKi8K IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogUmVwbGFjZSB0aGUgaW5kZXggcGFzc2VkIGluIHdpdGggYW5v dGhlciBlcXVpdmFsZW50IGluZGV4IGluIHRoZQogZm9yZWlnbiBrZXkgbGlzdHMgb2YgdGhlIHRh YmxlLiAqLwpAQCAtNTU5NSw2ICs1NTk3LDggQEAgZGljdF9mb3JlaWduX3JlcGxhY2VfaW5kZXgo CiB7CiAJZGljdF9mb3JlaWduX3QqCWZvcmVpZ247CiAKKwl1dF9hZChpbmRleC0+dG9fYmVfZHJv cHBlZCk7CisKIAlmb3IgKGZvcmVpZ24gPSBVVF9MSVNUX0dFVF9GSVJTVCh0YWJsZS0+Zm9yZWln bl9saXN0KTsKIAkgICAgIGZvcmVpZ247CiAJICAgICBmb3JlaWduID0gVVRfTElTVF9HRVRfTkVY VChmb3JlaWduX2xpc3QsIGZvcmVpZ24pKSB7CkBAIC01NjEzLDYgKzU2MTcsNyBAQCBkaWN0X2Zv cmVpZ25fcmVwbGFjZV9pbmRleCgKIAkJCXNpbmNlIHRoaXMgbXVzdCBoYXZlIGJlZW4gY2hlY2tl ZCBlYXJsaWVyLiAqLwogCQkJdXRfYShuZXdfaW5kZXggfHwgIXRyeC0+Y2hlY2tfZm9yZWlnbnMp OwogCQkJdXRfYWQoIW5ld19pbmRleCB8fCBuZXdfaW5kZXgtPnRhYmxlID09IGluZGV4LT50YWJs ZSk7CisJCQl1dF9hZCghbmV3X2luZGV4IHx8ICFuZXdfaW5kZXgtPnRvX2JlX2Ryb3BwZWQpOwog CiAJCQlmb3JlaWduLT5mb3JlaWduX2luZGV4ID0gbmV3X2luZGV4OwogCQl9CkBAIC01NjM2LDEy ICs1NjQxLDEyIEBAIGRpY3RfZm9yZWlnbl9yZXBsYWNlX2luZGV4KAogCQkJc2luY2UgdGhpcyBt dXN0IGhhdmUgYmVlbiBjaGVja2VkIGVhcmxpZXIuICovCiAJCQl1dF9hKG5ld19pbmRleCB8fCAh dHJ4LT5jaGVja19mb3JlaWducyk7CiAJCQl1dF9hZCghbmV3X2luZGV4IHx8IG5ld19pbmRleC0+ dGFibGUgPT0gaW5kZXgtPnRhYmxlKTsKKwkJCXV0X2FkKCFuZXdfaW5kZXggfHwgIW5ld19pbmRl eC0+dG9fYmVfZHJvcHBlZCk7CiAKIAkJCWZvcmVpZ24tPnJlZmVyZW5jZWRfaW5kZXggPSBuZXdf aW5kZXg7CiAJCX0KIAl9CiB9Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBJbiBjYXNl IHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgaW5kZXggd2l0aCB0aGUgc2FtZSBuYW1lIHJldHVybiB0 aGUgaW5kZXgKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFu ZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0 ZXIuY2MJcmV2aWQ6bmlzaGEuZ29wYWxha3Jpc2huYW5Ab3JhY2xlLmNvbS0yMDEyMDUxMDA4NDky My1pcGRqOHg3Yzd5Y2h0dm5sCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVy MGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTEwMDkxNjE1LWFu ZXczczFyNmo5ajU5bjMKQEAgLTExODMsMTMgKzExODMsMjEgQEAgcHVibGljOgogCQlkcm9wIChk cm9wX2FyZyksIG51bV90b19kcm9wIChudW1fdG9fZHJvcF9hcmcpLAogCQlkcm9wX2ZrIChkcm9w X2ZrX2FyZyksIG51bV90b19kcm9wX2ZrIChudW1fdG9fZHJvcF9ma19hcmcpLAogCQlvbmxpbmUg KG9ubGluZV9hcmcpLCBoZWFwIChoZWFwX2FyZyksIHRyeCAodHJ4X2FyZyksCi0JCWluZGV4ZWRf dGFibGUgKGluZGV4ZWRfdGFibGVfYXJnKSB7fQorCQlpbmRleGVkX3RhYmxlIChpbmRleGVkX3Rh YmxlX2FyZykgeworI2lmZGVmIFVOSVZfREVCVUcKKwkJZm9yICh1bGludCBpID0gMDsgaSA8IG51 bV90b19hZGQ7IGkrKykgeworCQkJdXRfYWQoIWFkZFtpXS0+dG9fYmVfZHJvcHBlZCk7CisJCX0K KwkJZm9yICh1bGludCBpID0gMDsgaSA8IG51bV90b19kcm9wOyBpKyspIHsKKwkJCXV0X2FkKGRy b3BbaV0tPnRvX2JlX2Ryb3BwZWQpOworCQl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCX0K IAl+aGFfaW5ub2Jhc2VfaW5wbGFjZV9jdHgoKSB7CiAJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJ fQogfTsKIAotI2lmIDEgLyogVE9ETzogZW5hYmxlIHRoaXMgaW4gV0wjNjA0OSAoTURMIGZvciBG SyBsb29rdXBzKSAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDaGVjayBpZiBhIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgY2FuIG1ha2UgdXNlIG9mIGFuIGluZGV4CiB0aGF0IGlzIGJlaW5nIGNyZWF0ZWQu CkBAIC0xMjQ1LDcgKzEyNTMsNiBAQCBub19tYXRjaDoKIAogCXJldHVybihOVUxMKTsKIH0KLSNl bmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBEcm9wIGFueSBpbmRleGVzIHRoYXQgd2Ugd2VyZSBu b3QgYWJsZSB0byBmcmVlIHByZXZpb3VzbHkgZHVlIHRvCkBAIC0xOTA5LDYgKzE5MTYsMTQgQEAg aGFfaW5ub2Jhc2U6OnByZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZQogCiAJTU9OSVRPUl9BVE9N SUNfSU5DKE1PTklUT1JfUEVORElOR19BTFRFUl9UQUJMRSk7CiAKKyNpZmRlZiBVTklWX0RFQlVH CisJZm9yIChkaWN0X2luZGV4X3QqIGluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgo cHJlYnVpbHQtPnRhYmxlKTsKKwkgICAgIGluZGV4OworCSAgICAgaW5kZXggPSBkaWN0X3RhYmxl X2dldF9uZXh0X2luZGV4KGluZGV4KSkgeworCQl1dF9hZCghaW5kZXgtPnRvX2JlX2Ryb3BwZWQp OworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVHICovCisKIAlpZiAoIShoYV9hbHRlcl9pbmZvLT5o YW5kbGVyX2ZsYWdzICYgfklOTk9CQVNFX0lOUExBQ0VfSUdOT1JFKSkgewogCQkvKiBOb3RoaW5n IHRvIGRvICovCiAJCWdvdG8gZnVuY19leGl0OwpAQCAtMjA4OCw3ICsyMTAzLDcgQEAgZm91bmRf Zms6CiAJCURCVUdfQVNTRVJUKGhhX2FsdGVyX2luZm8tPmhhbmRsZXJfZmxhZ3MKIAkJCSAgICAm IChBbHRlcl9pbnBsYWNlX2luZm86OkRST1BfSU5ERVgKIAkJCSAgICAgICB8IEFsdGVyX2lucGxh Y2VfaW5mbzo6RFJPUF9VTklRVUVfSU5ERVgpKTsKLQkJLyogY2hlY2sgd2hpY2ggaW5kZXhlcyB0 byBkcm9wICovCisJCS8qIENoZWNrIHdoaWNoIGluZGV4ZXMgdG8gZHJvcC4gKi8KIAkJaWYgKCFo ZWFwKSB7CiAJCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOwogCQl9CkBAIC0yMDk2LDYg KzIxMTEsNyBAQCBmb3VuZF9mazoKIAkJCW1lbV9oZWFwX2FsbG9jKAogCQkJCWhlYXAsIChoYV9h bHRlcl9pbmZvLT5pbmRleF9kcm9wX2NvdW50ICsgMSkKIAkJCQkqIHNpemVvZiAqZHJvcF9pbmRl eCkpOworCiAJCWZvciAodWludCBpID0gMDsgaSA8IGhhX2FsdGVyX2luZm8tPmluZGV4X2Ryb3Bf Y291bnQ7IGkrKykgewogCQkJY29uc3QgS0VZKglrZXkKIAkJCQk9IGhhX2FsdGVyX2luZm8tPmlu ZGV4X2Ryb3BfYnVmZmVyW2ldOwpAQCAtMjExNCw2ICsyMTMwLDcgQEAgZm91bmRfZms6CiAJCQkJ bXlfZXJyb3IoRVJfUkVRVUlSRVNfUFJJTUFSWV9LRVksIE1ZRigwKSk7CiAJCQkJZ290byBlcnJf ZXhpdDsKIAkJCX0gZWxzZSB7CisJCQkJdXRfYWQoIWluZGV4LT50b19iZV9kcm9wcGVkKTsKIAkJ CQlkcm9wX2luZGV4W25fZHJvcF9pbmRleCsrXSA9IGluZGV4OwogCQkJfQogCQl9CkBAIC0yMTMy LDYgKzIxNDksNyBAQCBmb3VuZF9mazoKIAkJCWlmIGZ1bGx0ZXh0IGluZGV4ZXMgZXhpc3QsIHVu bGVzcyB0aGUgTXlTUUwKIAkJCWFuZCBJbm5vREIgZGF0YSBkaWN0aW9uYXJpZXMgYXJlIG91dCBv ZiBzeW5jLiAqLwogCQkJREJVR19BU1NFUlQoZnRzX2RvY19pbmRleCAhPSBOVUxMKTsKKwkJCURC VUdfQVNTRVJUKCFmdHNfZG9jX2luZGV4LT50b19iZV9kcm9wcGVkKTsKIAogCQkJLy8gQWRkIHNv bWUgZmF1bHQgdG9sZXJhbmNlIGZvciBub24tZGVidWcgYnVpbGRzLgogCQkJaWYgKGZ0c19kb2Nf aW5kZXggPT0gTlVMTCkgewpAQCAtMjE1NSwxMyArMjE3MywxOSBAQCBmb3VuZF9mazoKIAkJfQog CiBjaGVja19pZl9jYW5fZHJvcF9pbmRleGVzOgotCQkvKiBDaGVjayBpZiB0aGUgaW5kZXhlcyBj YW4gYmUgZHJvcHBlZCAqLworCQkvKiBDaGVjayBpZiB0aGUgaW5kZXhlcyBjYW4gYmUgZHJvcHBl ZC4gKi8KKworCQkvKiBQcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiBEUk9QIElOREVY IGFuZAorCQlDUkVBVEUgVEFCTEUgYWRkaW5nIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRzLiAqLwor CQlyb3dfbXlzcWxfbG9ja19kYXRhX2RpY3Rpb25hcnkocHJlYnVpbHQtPnRyeCk7CiAKIAkJaWYg KHByZWJ1aWx0LT50cngtPmNoZWNrX2ZvcmVpZ25zKSB7CiAJCQlmb3IgKHVpbnQgaSA9IDA7IGkg PCBuX2Ryb3BfaW5kZXg7IGkrKykgewogCQkJCWRpY3RfaW5kZXhfdCoJaW5kZXggPSBkcm9wX2lu ZGV4W2ldOwogCQkJCWRpY3RfZm9yZWlnbl90Kglmb3JlaWduOwogCisJCQkJdXRfYWQoIWluZGV4 LT50b19iZV9kcm9wcGVkKTsKKwogCQkJCS8qIENoZWNrIGlmIHRoZSBpbmRleCBpcyByZWZlcmVu Y2VkLiAqLwogCQkJCWZvcmVpZ24gPSBkaWN0X3RhYmxlX2dldF9yZWZlcmVuY2VkX2NvbnN0cmFp bnQoCiAJCQkJCWluZGV4ZWRfdGFibGUsIGluZGV4KTsKQEAgLTIxNzAsNyArMjE5NCw2IEBAIGNo ZWNrX2lmX2Nhbl9kcm9wX2luZGV4ZXM6CiAJCQkJICAgICAgPT0gZm9yZWlnbi0+cmVmZXJlbmNl ZF90YWJsZSk7CiAKIAkJCQlpZiAoZm9yZWlnbgotI2lmIDEgLyogVE9ETzogZW5hYmxlIHRoaXMg aW4gV0wjNjA0OSAoTURMIGZvciBGSyBsb29rdXBzKSAqLwogCQkJCSAgICAmJiAhZGljdF9mb3Jl aWduX2ZpbmRfaW5kZXgoCiAJCQkJCSAgICBpbmRleGVkX3RhYmxlLAogCQkJCQkgICAgZm9yZWln bi0+cmVmZXJlbmNlZF9jb2xfbmFtZXMsCkBAIC0yMTgzLDEyICsyMjA2LDEzIEBAIGNoZWNrX2lm X2Nhbl9kcm9wX2luZGV4ZXM6CiAJCQkJCSAgICBoYV9hbHRlcl9pbmZvLT5rZXlfaW5mb19idWZm ZXIsCiAJCQkJCSAgICBoYV9hbHRlcl9pbmZvLT5pbmRleF9hZGRfYnVmZmVyLAogCQkJCQkgICAg aGFfYWx0ZXJfaW5mby0+aW5kZXhfYWRkX2NvdW50KQotI2VuZGlmCiAJCQkJICAgICkgewogaW5k ZXhfbmVlZGVkOgogCQkJCQlwcmVidWlsdC0+dHJ4LT5lcnJvcl9pbmZvID0gaW5kZXg7CiAJCQkJ CXByaW50X2Vycm9yKEhBX0VSUl9EUk9QX0lOREVYX0ZLLAogCQkJCQkJICAgIE1ZRigwKSk7CisJ CQkJCXJvd19teXNxbF91bmxvY2tfZGF0YV9kaWN0aW9uYXJ5KAorCQkJCQkJcHJlYnVpbHQtPnRy eCk7CiAJCQkJCWdvdG8gZXJyX2V4aXQ7CiAJCQkJfQogCkBAIC0yMjAzLDcgKzIyMjcsNiBAQCBp bmRleF9uZWVkZWQ6CiAJCQkJaWYgKGZvcmVpZ24KIAkJCQkgICAgJiYgIWlubm9iYXNlX2Ryb3Bw aW5nX2ZvcmVpZ24oCiAJCQkJCSAgICBmb3JlaWduLCBkcm9wX2ZrLCBuX2Ryb3BfZmspCi0jaWYg MSAvKiBUT0RPOiBlbmFibGUgdGhpcyBpbiBXTCM2MDQ5IChNREwgZm9yIEZLIGxvb2t1cHMpICov CiAJCQkJICAgICYmICFkaWN0X2ZvcmVpZ25fZmluZF9pbmRleCgKIAkJCQkJICAgIGluZGV4ZWRf dGFibGUsCiAJCQkJCSAgICBmb3JlaWduLT5mb3JlaWduX2NvbF9uYW1lcywKQEAgLTIyMTYsMTIg KzIyMzksMTkgQEAgaW5kZXhfbmVlZGVkOgogCQkJCQkgICAgaGFfYWx0ZXJfaW5mby0+a2V5X2lu Zm9fYnVmZmVyLAogCQkJCQkgICAgaGFfYWx0ZXJfaW5mby0+aW5kZXhfYWRkX2J1ZmZlciwKIAkJ CQkJICAgIGhhX2FsdGVyX2luZm8tPmluZGV4X2FkZF9jb3VudCkKLSNlbmRpZgogCQkJCSAgICAp IHsKIAkJCQkJZ290byBpbmRleF9uZWVkZWQ7CiAJCQkJfQogCQkJfQogCQl9CisKKwkJLyogRmxh ZyBhbGwgaW5kZXhlcyB0aGF0IGFyZSB0byBiZSBkcm9wcGVkLiAqLworCQlmb3IgKHVsaW50IGkg PSAwOyBpIDwgbl9kcm9wX2luZGV4OyBpKyspIHsKKwkJCXV0X2FkKCFkcm9wX2luZGV4W2ldLT50 b19iZV9kcm9wcGVkKTsKKwkJCWRyb3BfaW5kZXhbaV0tPnRvX2JlX2Ryb3BwZWQgPSAxOworCQl9 CisKKwkJcm93X215c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkocHJlYnVpbHQtPnRyeCk7CiAJ fSBlbHNlIHsKIAkJZHJvcF9pbmRleCA9IE5VTEw7CiAJfQpAQCAtMjM1MCw2ICsyMzgwLDggQEAg aGFfaW5ub2Jhc2U6OmlucGxhY2VfYWx0ZXJfdGFibGUoCiAjZW5kaWYgLyogVU5JVl9TWU5DX0RF QlVHICovCiAKIAlpZiAoIShoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2ZsYWdzICYgSU5OT0JBU0Vf SU5QTEFDRV9DUkVBVEUpKSB7Citva19leGl0OgorCQlERUJVR19TWU5DKHVzZXJfdGhkLCAiaW5u b2RiX2FmdGVyX2lucGxhY2VfYWx0ZXJfdGFibGUiKTsKIAkJREJVR19SRVRVUk4oZmFsc2UpOwog CX0KIApAQCAtMjM5NCw4ICsyNDI2LDcgQEAgb29tOgogCQloYXBwZW5zIHRvIGJlIGV4ZWN1dGlu ZyBvbiB0aGlzIHZlcnkgdGFibGUuICovCiAJCURCVUdfQVNTRVJUKGN0eC0+aW5kZXhlZF90YWJs ZSA9PSBwcmVidWlsdC0+dGFibGUKIAkJCSAgICB8fCBwcmVidWlsdC0+dGFibGUtPm5fcmVmX2Nv dW50IC0gMSA8PSAxKTsKLQkJREVCVUdfU1lOQyh1c2VyX3RoZCwgImlubm9kYl9hZnRlcl9pbnBs YWNlX2FsdGVyX3RhYmxlIik7Ci0JCURCVUdfUkVUVVJOKGZhbHNlKTsKKwkJZ290byBva19leGl0 OwogCWNhc2UgREJfRFVQTElDQVRFX0tFWToKIAkJaWYgKHByZWJ1aWx0LT50cngtPmVycm9yX2tl eV9udW0gPT0gVUxJTlRfVU5ERUZJTkVEKSB7CiAJCQkvKiBUaGlzIHNob3VsZCBiZSB0aGUgaGlk ZGVuIGluZGV4IG9uIEZUU19ET0NfSUQuICovCkBAIC0yNTAyLDYgKzI1MzMsMTggQEAgcm9sbGJh Y2tfaW5wbGFjZV9hbHRlcl90YWJsZSgKIAl0cnhfZnJlZV9mb3JfbXlzcWwoY3R4LT50cngpOwog CiBmdW5jX2V4aXQ6CisJaWYgKGN0eCAmJiBwcmVidWlsdC0+dGFibGUgPT0gY3R4LT5pbmRleGVk X3RhYmxlKSB7CisJCS8qIENsZWFyIHRoZSB0b19iZV9kcm9wcGVkIGZsYWcgaW4gdGhlIGRhdGEg ZGljdGlvbmFyeS4gKi8KKwkJZm9yICh1bGludCBpID0gMDsgaSA8IGN0eC0+bnVtX3RvX2Ryb3A7 IGkrKykgeworCQkJZGljdF9pbmRleF90KglpbmRleCA9IGN0eC0+ZHJvcFtpXTsKKwkJCURCVUdf QVNTRVJUKCppbmRleC0+bmFtZSAhPSBURU1QX0lOREVYX1BSRUZJWCk7CisJCQlEQlVHX0FTU0VS VChpbmRleC0+dGFibGUgPT0gcHJlYnVpbHQtPnRhYmxlKTsKKwkJCURCVUdfQVNTRVJUKGluZGV4 LT50b19iZV9kcm9wcGVkKTsKKworCQkJaW5kZXgtPnRvX2JlX2Ryb3BwZWQgPSAwOworCQl9CisJ fQorCiAJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVpbHQtPnRyeCk7CiAJc3J2X2FjdGl2ZV93 YWtlX21hc3Rlcl90aHJlYWQoKTsKIAlNT05JVE9SX0FUT01JQ19ERUMoTU9OSVRPUl9QRU5ESU5H X0FMVEVSX1RBQkxFKTsKQEAgLTI5MDAsNiArMjk0Myw3IEBAIGhhX2lubm9iYXNlOjpjb21taXRf aW5wbGFjZV9hbHRlcl90YWJsZSgKIAkJCWRpY3RfaW5kZXhfdCoJaW5kZXggPSBjdHgtPmRyb3Bb aV07CiAJCQlEQlVHX0FTU0VSVCgqaW5kZXgtPm5hbWUgIT0gVEVNUF9JTkRFWF9QUkVGSVgpOwog CQkJREJVR19BU1NFUlQoaW5kZXgtPnRhYmxlID09IHByZWJ1aWx0LT50YWJsZSk7CisJCQlEQlVH X0FTU0VSVChpbmRleC0+dG9fYmVfZHJvcHBlZCk7CiAKIAkJCWVycm9yID0gcm93X21lcmdlX3Jl bmFtZV9pbmRleF90b19kcm9wKAogCQkJCXRyeCwgaW5kZXgtPnRhYmxlLT5pZCwgaW5kZXgtPmlk KTsKQEAgLTMwMDksNiArMzA1Myw3IEBAIHRyeF9jb21taXQ6CiAJCQkJZGljdF9pbmRleF90Kglp bmRleCA9IGN0eC0+ZHJvcFtpXTsKIAkJCQlEQlVHX0FTU0VSVCgqaW5kZXgtPm5hbWUgIT0gVEVN UF9JTkRFWF9QUkVGSVgpOwogCQkJCURCVUdfQVNTRVJUKGluZGV4LT50YWJsZSA9PSBwcmVidWls dC0+dGFibGUpOworCQkJCURCVUdfQVNTRVJUKGluZGV4LT50b19iZV9kcm9wcGVkKTsKIAogCQkJ CS8qIFJlcGxhY2UgdGhlIGluZGV4ZXMgaW4gZm9yZWlnbiBrZXkKIAkJCQljb25zdHJhaW50cyBp ZiBuZWVkZWQuICovCkBAIC0zMDQ2LDYgKzMwOTEsMTQgQEAgdHJ4X2NvbW1pdDoKIAogCQl1dF9k KGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKAogCQkJICAgICBwcmVidWlsdC0+dGFi bGUsIENIRUNLX0FMTF9DT01QTEVURSkpOworI2lmZGVmIFVOSVZfREVCVUcKKwkJZm9yIChkaWN0 X2luZGV4X3QqIGluZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgoCisJCQkgICAgIHBy ZWJ1aWx0LT50YWJsZSk7CisJCSAgICAgaW5kZXg7CisJCSAgICAgaW5kZXggPSBkaWN0X3RhYmxl X2dldF9uZXh0X2luZGV4KGluZGV4KSkgeworCQkJdXRfYWQoIWluZGV4LT50b19iZV9kcm9wcGVk KTsKKwkJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAkJREJVR19BU1NFUlQobmV3X2NsdXN0 ZXJlZCA9PSAhcHJlYnVpbHQtPnRyeCk7CiAKIAkJaWYgKGFkZF9mdHMpIHsKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBkaWN0LmgnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaAlyZXZpZDpuaXNoYS5nb3BhbGFrcmlzaG5h bkBvcmFjbGUuY29tLTIwMTIwNTEwMDg0OTIzLWlwZGo4eDdjN3ljaHR2bmwKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwZGljdC5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwNTEwMDkxNjE1LWFuZXczczFyNmo5ajU5bjMKQEAgLTM5OCw3ICszOTgsNiBAQCBk aWN0X3RhYmxlX2lzX3JlZmVyZW5jZWRfYnlfZm9yZWlnbl9rZXkoCiAvKj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCiAJY29uc3QgZGljdF90YWJsZV90Kgl0YWJsZSkJLyoh PCBpbjogSW5ub0RCIHRhYmxlICovCiAJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVz ZWRfcmVzdWx0KSk7Ci0jaWYgMSAvKiBUT0RPOiBlbmFibGUgdGhpcyBpbiBXTCM2MDQ5IChNREwg Zm9yIEZLIGxvb2t1cHMpICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlcGxhY2UgdGhlIGluZGV4 IHBhc3NlZCBpbiB3aXRoIGFub3RoZXIgZXF1aXZhbGVudCBpbmRleCBpbiB0aGUKIGZvcmVpZ24g a2V5IGxpc3RzIG9mIHRoZSB0YWJsZS4gKi8KQEAgLTQxMCw3ICs0MDksNiBAQCBkaWN0X2ZvcmVp Z25fcmVwbGFjZV9pbmRleCgKIAljb25zdCBkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBp bmRleCB0byBiZSByZXBsYWNlZCAqLwogCWNvbnN0IHRyeF90KgkJdHJ4KQkvKiE8IGluOiB0cmFu c2FjdGlvbiBoYW5kbGUgKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxsKSk7Ci0jZW5kaWYKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIHN0YXJ0cyB3aXRo IHRoZSBzcGVjaWZpZWQga2V5d29yZC4KIEByZXR1cm4gVFJVRSBpZiBzdHIgc3RhcnRzIHdpdGgg a2V5d29yZCAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9k aWN0MG1lbS5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGljdDBtZW0uaAlyZXZp ZDpuaXNoYS5nb3BhbGFrcmlzaG5hbkBvcmFjbGUuY29tLTIwMTIwNTEwMDg0OTIzLWlwZGo4eDdj N3ljaHR2bmwKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwbWVtLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTAwOTE2MTUtYW5ldzNzMXI2ajlqNTluMwpA QCAtNDgzLDYgKzQ4Myw4IEBAIHN0cnVjdCBkaWN0X2luZGV4X3N0cnVjdHsKIAl1bnNpZ25lZAlu X251bGxhYmxlOjEwOy8qITwgbnVtYmVyIG9mIG51bGxhYmxlIGZpZWxkcyAqLwogCXVuc2lnbmVk CWNhY2hlZDoxOy8qITwgVFJVRSBpZiB0aGUgaW5kZXggb2JqZWN0IGlzIGluIHRoZQogCQkJCWRp Y3Rpb25hcnkgY2FjaGUgKi8KKwl1bnNpZ25lZAl0b19iZV9kcm9wcGVkOjE7CisJCQkJLyohPCBU UlVFIGlmIHRoZSBpbmRleCBpcyB0byBiZSBkcm9wcGVkICovCiAJdW5zaWduZWQJb25saW5lX3N0 YXR1czoyOwogCQkJCS8qITwgZW51bSBvbmxpbmVfaW5kZXhfc3RhdHVzICovCiAJZGljdF9maWVs ZF90KglmaWVsZHM7CS8qITwgYXJyYXkgb2YgZmllbGQgZGVzY3JpcHRpb25zICovCgpObyBidW5k bGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==