From: Tor Didriksen Date: July 26 2010 1:01pm Subject: bzr push into mysql-next-mr-bugfixing branch (tor.didriksen:3330 to 3332) Bug#55553 List-Archive: http://lists.mysql.com/commits/114347 X-Bug: 55553 Message-Id: <20100726130109.74A173592@atum07.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2842715590870444335==" --===============2842715590870444335== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMzMzIgVG9yIERpZHJpa3NlbgkyMDEwLTA3LTI2CiAgICAgIEJ1ZyAjNTU1NTMgaHBfdGVzdDIg aXMgZmxha3kKICAgICBAIHN0b3JhZ2UvaGVhcC9ocF90ZXN0Mi5jCiAgICAgICAgRG9uJ3Qgc2F2 ZSB0aGUgaGVhcCBwb3NpdGlvbiBpZiBoZWFwX3NjYW4oKSByZXR1cm5zIGVycm9yLgoKICAgIG1v ZGlmaWVkOgogICAgICBzdG9yYWdlL2hlYXAvaHBfdGVzdDIuYwogMzMzMSBUb3IgRGlkcmlrc2Vu CTIwMTAtMDctMjYKICAgICAgQnVnICM1NDgwNSBkZWZpbml0aW9ucyBpbiByZWdleC9teV9yZWdl eC5oIGNvbmZsaWN0IHdpdGggL3Vzci9pbmNsdWRlL3JlZ2V4LmgKICAgICAgCiAgICAgIFRoZSBt eXNxbCBzb3VyY2UgaGFzIGl0cyBvd24gdmVyc2lvbiBvZiByZWdjb21wIGV0Yy4gY29tcGlsZWQg aW4uCiAgICAgIEFsbCBzeW1ib2xzIHdpdGggbGlua2FnZSAoaS5lLiBnbG9iYWwgZnVuY3Rpb25z KSBoYXZlIGJlZW4gcmVuYW1lZAogICAgICAoYWRkZWQgbXlfIHByZWZpeCkgdG8gYXZvaWQgbGlu a2FnZSBwcm9ibGVtcy4KICAgICAgCiAgICAgIFRoaXMgYnVnZml4IHJlbmFtZXMgY29tcGlsZS10 aW1lIHN5bWJvbHMgaW4gYSBzaW1pbGFyIGZhc2hpb24sCiAgICAgIFJFR19TVEFSVEVORCA9PiBN WV9SRUdfU1RBUlRFTkQgZXRjLgogICAgIEAgY2xpZW50L215c3FsdGVzdC5jYwogICAgICAgIFJl bmFtZSBSRUdfeHh4IG1hY3JvcyB0byBNWV9SRUdfeHh4CiAgICAgQCBteXNxbC10ZXN0L3IvZnVu Y19yZWdleHAucmVzdWx0CiAgICAgICAgQWRkIHRlc3QgY2FzZSBzaG93aW5nIHRoYXQgJ1x0JyBp cyBub3QgY29uc2lkZXJlZCBhIGJsYW5rIGJ5IE15U1FMLgogICAgIEAgbXlzcWwtdGVzdC90L2Z1 bmNfcmVnZXhwLnRlc3QKICAgICAgICBBZGQgdGVzdCBjYXNlIHNob3dpbmcgdGhhdCAnXHQnIGlz IG5vdCBjb25zaWRlcmVkIGEgYmxhbmsgYnkgTXlTUUwuCiAgICAgQCByZWdleC9DTWFrZUxpc3Rz LnR4dAogICAgICAgIEFkZCB0YXJnZXQgZm9yIGJ1aWxkaW5nIHJlZ3Jlc3Npb24gdGVzdCBtYWlu IHByb2dyYW0uCiAgICAgICAgQWRkIHRlc3QgdGFyZ2V0cyBhcyB3ZWxsLgogICAgIEAgcmVnZXgv ZW5naW5lLmMKICAgICAgICBSZW5hbWUgUkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4eAogICAg IEAgcmVnZXgvbWFpbi5jCiAgICAgICAgUmVuYW1lIFJFR194eHggbWFjcm9zIHRvIE1ZX1JFR194 eHgKICAgICAgICBBZGQgZ2V0b3B0IGZvciB3aW5kb3dzLgogICAgIEAgcmVnZXgvbXlfcmVnZXgu aAogICAgICAgIE1vdmUgaW5jbHVzaW9uIG9mIG1fY3R5cGUuaCBvdXRzaWRlIG9mICdleHRlcm4g IkMiJyBkZWNsYXJhdGlvbgogICAgICAgIChnYXZlIGVycm9yOiB0ZW1wbGF0ZSB3aXRoIEMgbGlu a2FnZSkKICAgICAgICAKICAgICAgICBSZW5hbWUgUkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4 eAogICAgICAgIAogICAgICAgIFVzZSBteV9yZWdvZmZfdCByYXRoZXIgdGhhbiByZWdvZmZfdC4K ICAgICBAIHJlZ2V4L3JlZ2NvbXAuYwogICAgICAgIFJlbmFtZSBSRUdfeHh4IG1hY3JvcyB0byBN WV9SRUdfeHh4CiAgICAgQCByZWdleC9yZWdlcnJvci5jCiAgICAgICAgUmVuYW1lIFJFR194eHgg bWFjcm9zIHRvIE1ZX1JFR194eHgKICAgICBAIHJlZ2V4L3JlZ2V4Mi5oCiAgICAgICAgVXNlIG15 X3JlZ29mZl90IHJhdGhlciB0aGFuIHJlZ29mZl90CiAgICAgQCByZWdleC9yZWdleGVjLmMKICAg ICAgICBSZW5hbWUgUkVHX3h4eCBtYWNyb3MgdG8gTVlfUkVHX3h4eAogICAgIEAgcmVnZXgvdGVz dHMKICAgICAgICBDaGFuZ2Ugb25lIHRlc3QgY2FzZSBpbiByZWdyZXNzaW9uIHRlc3QsCiAgICAg ICAgYXMgTXlTUUwgZG9lcyBub3QgcmVjb2duaXplICdcdCcgYXMgYmxhbmsuCiAgICAgQCBzcWwv aXRlbV9jbXBmdW5jLmNjCiAgICAgICAgUmVuYW1lIFJFR194eHggbWFjcm9zIHRvIE1ZX1JFR194 eHgKICAgICBAIHVuaXR0ZXN0L2d1bml0L0NNYWtlTGlzdHMudHh0CiAgICAgICAgQWRkIHVuaXQg dGVzdCBmb3IgbXlfcmVnZXguCiAgICAgQCB1bml0dGVzdC9ndW5pdC9teV9yZWdleC10LmNjCiAg ICAgICAgTmV3IHVuaXQgdGVzdC4KCiAgICBhZGRlZDoKICAgICAgdW5pdHRlc3QvZ3VuaXQvbXlf cmVnZXgtdC5jYwogICAgbW9kaWZpZWQ6CiAgICAgIGNsaWVudC9teXNxbHRlc3QuY2MKICAgICAg bXlzcWwtdGVzdC9yL2Z1bmNfcmVnZXhwLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3QvZnVuY19y ZWdleHAudGVzdAogICAgICByZWdleC9DTWFrZUxpc3RzLnR4dAogICAgICByZWdleC9lbmdpbmUu YwogICAgICByZWdleC9tYWluLmMKICAgICAgcmVnZXgvbXlfcmVnZXguaAogICAgICByZWdleC9y ZWdjb21wLmMKICAgICAgcmVnZXgvcmVnZXJyb3IuYwogICAgICByZWdleC9yZWdleDIuaAogICAg ICByZWdleC9yZWdleGVjLmMKICAgICAgcmVnZXgvdGVzdHMKICAgICAgc3FsL2l0ZW1fY21wZnVu Yy5jYwogICAgICB1bml0dGVzdC9ndW5pdC9DTWFrZUxpc3RzLnR4dAogMzMzMCBBbGV4YW5kZXIg Tm96ZHJpbgkyMDEwLTA3LTI2IFttZXJnZV0KICAgICAgQXV0by1tZXJnZSBmcm9tIG15c3FsLXRy dW5rLWJ1Z2ZpeGluZy4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9jb2xsZWN0aW9u cy9kZWZhdWx0LmV4cGVyaW1lbnRhbAo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3FsdGVz dC5jYycKLS0tIGEvY2xpZW50L215c3FsdGVzdC5jYwkyMDEwLTA3LTI0IDEzOjQ3OjQyICswMDAw CisrKyBiL2NsaWVudC9teXNxbHRlc3QuY2MJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAt NzQ3OCwxNSArNzQ3OCwxNCBAQCB2b2lkIHJ1bl9xdWVyeShzdHJ1Y3Qgc3RfY29ubmVjdGlvbiAq Y24sCiBjaGFyICpyZV9lcHJpbnQoaW50IGVycikKIHsKICAgc3RhdGljIGNoYXIgZXBidWZbMTAw XTsKLSAgc2l6ZV90IGxlbj0gbXlfcmVnZXJyb3IoUkVHX0lUT0F8ZXJyLCAobXlfcmVnZXhfdCAq KU5VTEwsCi0JCQkgIGVwYnVmLCBzaXplb2YoZXBidWYpKTsKKyAgc2l6ZV90IGxlbj0gbXlfcmVn ZXJyb3IoTVlfUkVHX0lUT0EgfCBlcnIsIE5VTEwsIGVwYnVmLCBzaXplb2YoZXBidWYpKTsKICAg YXNzZXJ0KGxlbiA8PSBzaXplb2YoZXBidWYpKTsKICAgcmV0dXJuKGVwYnVmKTsKIH0KIAogdm9p ZCBpbml0X3JlX2NvbXAobXlfcmVnZXhfdCAqcmUsIGNvbnN0IGNoYXIqIHN0cikKIHsKLSAgaW50 IGVycj0gbXlfcmVnY29tcChyZSwgc3RyLCAoUkVHX0VYVEVOREVEIHwgUkVHX0lDQVNFIHwgUkVH X05PU1VCKSwKKyAgaW50IGVycj0gbXlfcmVnY29tcChyZSwgc3RyLCAoTVlfUkVHX0VYVEVOREVE IHwgTVlfUkVHX0lDQVNFIHwgTVlfUkVHX05PU1VCKSwKICAgICAgICAgICAgICAgICAgICAgICAm bXlfY2hhcnNldF9sYXRpbjEpOwogICBpZiAoZXJyKQogICB7CkBAIC03NTQyLDcgKzc1NDEsNyBA QCBpbnQgbWF0Y2hfcmUobXlfcmVnZXhfdCAqcmUsIGNoYXIgKnN0cikKIAogICBpZiAoZXJyID09 IDApCiAgICAgcmV0dXJuIDE7Ci0gIGVsc2UgaWYgKGVyciA9PSBSRUdfTk9NQVRDSCkKKyAgZWxz ZSBpZiAoZXJyID09IE1ZX1JFR19OT01BVENIKQogICAgIHJldHVybiAwOwogCiAgIHsKQEAgLTg5 NDMsNyArODk0Miw3IEBAIGludCByZWdfcmVwbGFjZShjaGFyKiogYnVmX3AsIGludCogYnVmX2wK ICAgY2hhciAqYnVmPSAqYnVmX3A7CiAgIGludCBsZW47CiAgIGludCBidWZfbGVuLCBuZWVkX2J1 Zl9sZW47Ci0gIGludCBjZmxhZ3M9IFJFR19FWFRFTkRFRDsKKyAgaW50IGNmbGFncz0gTVlfUkVH X0VYVEVOREVEOwogICBpbnQgZXJyX2NvZGU7CiAgIGNoYXIgKnJlc19wLCpzdHJfcCwqc3RyX2Vu ZDsKIApAQCAtODk2MCw3ICs4OTU5LDcgQEAgaW50IHJlZ19yZXBsYWNlKGNoYXIqKiBidWZfcCwg aW50KiBidWZfbAogICBTRUNVUkVfUkVHX0JVRgogCiAgIGlmIChpY2FzZSkKLSAgICBjZmxhZ3N8 PSBSRUdfSUNBU0U7CisgICAgY2ZsYWdzfD0gTVlfUkVHX0lDQVNFOwogCiAgIGlmICgoZXJyX2Nv ZGU9IG15X3JlZ2NvbXAoJnIscGF0dGVybixjZmxhZ3MsJm15X2NoYXJzZXRfbGF0aW4xKSkpCiAg IHsKQEAgLTg5ODAsMTAgKzg5NzksMTAgQEAgaW50IHJlZ19yZXBsYWNlKGNoYXIqKiBidWZfcCwg aW50KiBidWZfbAogICB7CiAgICAgLyogZmluZCB0aGUgbWF0Y2ggKi8KICAgICBlcnJfY29kZT0g bXlfcmVnZXhlYygmcixzdHJfcCwgci5yZV9uc3ViKzEsIHN1YnMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cl9wID09IHN0cmluZykgPyBSRUdfTk9UQk9MIDogMCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cl9wID09IHN0cmluZykgPyBNWV9SRUdfTk9UQk9MIDogMCk7CiAK ICAgICAvKiBpZiByZWd1bGFyIGV4cHJlc3Npb24gZXJyb3IgKGVnLiBiYWQgc3ludGF4LCBvciBv dXQgb2YgbWVtb3J5KSAqLwotICAgIGlmIChlcnJfY29kZSAmJiBlcnJfY29kZSAhPSBSRUdfTk9N QVRDSCkKKyAgICBpZiAoZXJyX2NvZGUgJiYgZXJyX2NvZGUgIT0gTVlfUkVHX05PTUFUQ0gpCiAg ICAgewogICAgICAgY2hlY2tfcmVnZXJyKCZyLGVycl9jb2RlKTsKICAgICAgIG15X3JlZ2ZyZWUo JnIpOwpAQCAtOTAxNiw3ICs5MDE1LDcgQEAgaW50IHJlZ19yZXBsYWNlKGNoYXIqKiBidWZfcCwg aW50KiBidWZfbAogICAgICAgICAvKiBmb3VuZCBhIHZhbGlkIGJhY2tfcmVmIChlZy4gXDEpKi8K ICAgICAgICAgaWYgKGJhY2tfcmVmX251bSA+PSAwICYmIGJhY2tfcmVmX251bSA8PSAoaW50KXIu cmVfbnN1YikKICAgICAgICAgewotICAgICAgICAgIHJlZ29mZl90IHN0YXJ0X29mZiwgZW5kX29m ZjsKKyAgICAgICAgICBteV9yZWdvZmZfdCBzdGFydF9vZmYsIGVuZF9vZmY7CiAgICAgICAgICAg aWYgKChzdGFydF9vZmY9c3Vic1tiYWNrX3JlZl9udW1dLnJtX3NvKSA+IC0xICYmCiAgICAgICAg ICAgICAgIChlbmRfb2ZmPXN1YnNbYmFja19yZWZfbnVtXS5ybV9lbykgPiAtMSkKICAgICAgICAg ICB7CkBAIC05MDU5LDcgKzkwNTgsNyBAQCBpbnQgcmVnX3JlcGxhY2UoY2hhcioqIGJ1Zl9wLCBp bnQqIGJ1Zl9sCiAKICAgICAgICAgaWYgKGJhY2tfcmVmX251bSA+PSAwICYmIGJhY2tfcmVmX251 bSA8PSAoaW50KXIucmVfbnN1YikKICAgICAgICAgewotICAgICAgICAgIHJlZ29mZl90IHN0YXJ0 X29mZiwgZW5kX29mZjsKKyAgICAgICAgICBteV9yZWdvZmZfdCBzdGFydF9vZmYsIGVuZF9vZmY7 CiAgICAgICAgICAgaWYgKChzdGFydF9vZmY9c3Vic1tiYWNrX3JlZl9udW1dLnJtX3NvKSA+IC0x ICYmCiAgICAgICAgICAgICAgIChlbmRfb2ZmPXN1YnNbYmFja19yZWZfbnVtXS5ybV9lbykgPiAt MSkKICAgICAgICAgICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2Z1bmNfcmVn ZXhwLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2Z1bmNfcmVnZXhwLnJlc3VsdAkyMDA5LTEw LTE5IDExOjEzOjI2ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9mdW5jX3JlZ2V4cC5yZXN1bHQJ MjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtMTQ1LDMgKzE0NSwxNSBAQCBhCiBERUFMTE9D QVRFIFBSRVBBUkUgc3RtdDE7CiBEUk9QIFRBQkxFIHQxOwogRW5kIG9mIDUuMSB0ZXN0cworU0VM RUNUICcgJyAgUkVHRVhQICdbWzpibGFuazpdXSc7CisnICcgIFJFR0VYUCAnW1s6Ymxhbms6XV0n CisxCitTRUxFQ1QgJ1x0JyBSRUdFWFAgJ1tbOmJsYW5rOl1dJzsKKydcdCcgUkVHRVhQICdbWzpi bGFuazpdXScKKzAKK1NFTEVDVCAnICcgIFJFR0VYUCAnW1s6c3BhY2U6XV0nOworJyAnICBSRUdF WFAgJ1tbOnNwYWNlOl1dJworMQorU0VMRUNUICdcdCcgUkVHRVhQICdbWzpzcGFjZTpdXSc7Cisn XHQnIFJFR0VYUCAnW1s6c3BhY2U6XV0nCisxCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVz dC90L2Z1bmNfcmVnZXhwLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC9mdW5jX3JlZ2V4cC50ZXN0 CTIwMDgtMDktMDUgMDg6MzY6MDIgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L2Z1bmNfcmVnZXhw LnRlc3QJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtOTIsMyArOTIsMTcgQEAgRFJPUCBU QUJMRSB0MTsKIAogCiAtLWVjaG8gRW5kIG9mIDUuMSB0ZXN0cworCisjCisjIEJ1ZyAjNTQ4MDUg ZGVmaW5pdGlvbnMgaW4gcmVnZXgvbXlfcmVnZXguaCBjb25mbGljdCB3aXRoIC91c3IvaW5jbHVk ZS9yZWdleC5oCisjCisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0ICdcdCcgaXMgcmVjb2duaXpl ZCBhcyBzcGFjZSwgYnV0IG5vdCBhcyBibGFuay4KKyMgVGhpcyBpcyAqbm90KiBhY2NvcmRpbmcg dG8gdGhlIFBPU0lYIHN0YW5kYXJkLCBidXQgc2VlbXMgdG8gaGF2ZSBiZWVuIE15U1FMCisjIGJl aGF2aW91ciBldmVyIHNpbmNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2VyZSBpbnRyb2R1Y2VkLgor IyBTZWU6IEJ1ZyAjNTU0MjcgUkVHRVhQIGRvZXMgbm90IHJlY29nbml6ZSAnXHQnIGFzIFs6Ymxh bms6XQorIworU0VMRUNUICcgJyAgUkVHRVhQICdbWzpibGFuazpdXSc7CitTRUxFQ1QgJ1x0JyBS RUdFWFAgJ1tbOmJsYW5rOl1dJzsKKworU0VMRUNUICcgJyAgUkVHRVhQICdbWzpzcGFjZTpdXSc7 CitTRUxFQ1QgJ1x0JyBSRUdFWFAgJ1tbOnNwYWNlOl1dJzsKCj09PSBtb2RpZmllZCBmaWxlICdy ZWdleC9DTWFrZUxpc3RzLnR4dCcKLS0tIGEvcmVnZXgvQ01ha2VMaXN0cy50eHQJMjAxMC0wNy0w MyAyMzoxNzowMyArMDAwMAorKysgYi9yZWdleC9DTWFrZUxpc3RzLnR4dAkyMDEwLTA3LTI2IDEw OjM5OjM4ICswMDAwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYgTXlTUUwg QUIKKyMgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlh dGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKQEAgLTE4LDMgKzE4LDEwIEBAIElOQ0xVREVfRElSRUNUT1JJRVMoJHtDTUFLRV9TT1VSQ0Vf RElSfS8KIAogU0VUKFJFR0VYX1NPVVJDRVMgcmVnY29tcC5jIHJlZ2Vycm9yLmMgcmVnZXhlYy5j IHJlZ2ZyZWUuYyByZWdpbml0LmMpCiBBRERfQ09OVkVOSUVOQ0VfTElCUkFSWShyZWdleCAke1JF R0VYX1NPVVJDRVN9KQorCitBRERfRVhFQ1VUQUJMRShyZSBtYWluLmMgc3BsaXQuYyBkZWJ1Zy5j KQorVEFSR0VUX0xJTktfTElCUkFSSUVTKHJlIHJlZ2V4IHN0cmluZ3MpCisKK0FERF9URVNUKHJl Z2V4MSByZSAgICAgLWkke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vdGVzdHMpCitBRERfVEVT VChyZWdleDIgcmUgLWVsIC1pJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3Rlc3RzKQorQURE X1RFU1QocmVnZXgzIHJlIC1lciAtaSR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS90ZXN0cykK Cj09PSBtb2RpZmllZCBmaWxlICdyZWdleC9lbmdpbmUuYycKLS0tIGEvcmVnZXgvZW5naW5lLmMJ MjAwNS0wOS0yOSAwMToyMDozMSArMDAwMAorKysgYi9yZWdleC9lbmdpbmUuYwkyMDEwLTA3LTI2 IDEwOjM5OjM4ICswMDAwCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBtYXRjaCB7CiAjaWZkZWYg UkVERUJVRwogI2RlZmluZQlTUCh0LCBzLCBjKQlwcmludChtLCB0LCBzLCBjLCBzdGRvdXQpCiAj ZGVmaW5lCUFUKHQsIHAxLCBwMiwgczEsIHMyKQlhdChtLCB0LCBwMSwgcDIsIHMxLCBzMikKLSNk ZWZpbmUJTk9URShzdHIpCXsgaWYgKG0tPmVmbGFncyZSRUdfVFJBQ0UpIHByaW50ZigiPSVzXG4i LCAoc3RyKSk7IH0KKyNkZWZpbmUJTk9URShzdHIpCXsgaWYgKG0tPmVmbGFncyZNWV9SRUdfVFJB Q0UpIHByaW50ZigiPSVzXG4iLCAoc3RyKSk7IH0KICNlbHNlCiAjZGVmaW5lCVNQKHQsIHMsIGMp CS8qIG5vdGhpbmcgKi8KICNkZWZpbmUJQVQodCwgcDEsIHAyLCBzMSwgczIpCS8qIG5vdGhpbmcg Ki8KQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IG1hdGNoIHsKICA9PSBzdGF0aWMgaW50IG1hdGNo ZXIocmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmcsIGNoYXIgKnN0cmluZywgXAogID09CXNpemVf dCBubWF0Y2gsIHJlZ21hdGNoX3QgcG1hdGNoW10sIGludCBlZmxhZ3MpOwogICovCi1zdGF0aWMg aW50CQkJLyogMCBzdWNjZXNzLCBSRUdfTk9NQVRDSCBmYWlsdXJlICovCitzdGF0aWMgaW50CQkJ LyogMCBzdWNjZXNzLCBNWV9SRUdfTk9NQVRDSCBmYWlsdXJlICovCiBtYXRjaGVyKGNoYXJzZXQs Zywgc3RyLCBubWF0Y2gsIHBtYXRjaCwgZWZsYWdzKQogQ0hBUlNFVF9JTkZPICpjaGFyc2V0Owog cmVnaXN0ZXIgc3RydWN0IHJlX2d1dHMgKmc7CkBAIC04Miw5ICs4Miw5IEBAIGludCBlZmxhZ3M7 CiAJY2hhciAqc3RvcDsKIAogCS8qIHNpbXBsaWZ5IHRoZSBzaXR1YXRpb24gd2hlcmUgcG9zc2li bGUgKi8KLQlpZiAoZy0+Y2ZsYWdzJlJFR19OT1NVQikKKwlpZiAoZy0+Y2ZsYWdzJk1ZX1JFR19O T1NVQikKIAkJbm1hdGNoID0gMDsKLQlpZiAoZWZsYWdzJlJFR19TVEFSVEVORCkgeworCWlmIChl ZmxhZ3MmTVlfUkVHX1NUQVJURU5EKSB7CiAJCXN0YXJ0ID0gc3RyICsgcG1hdGNoWzBdLnJtX3Nv OwogCQlzdG9wID0gc3RyICsgcG1hdGNoWzBdLnJtX2VvOwogCX0gZWxzZSB7CkBAIC05Miw3ICs5 Miw3IEBAIGludCBlZmxhZ3M7CiAJCXN0b3AgPSBzdGFydCArIHN0cmxlbihzdGFydCk7CiAJfQog CWlmIChzdG9wIDwgc3RhcnQpCi0JCXJldHVybihSRUdfSU5WQVJHKTsKKwkJcmV0dXJuKE1ZX1JF R19JTlZBUkcpOwogCiAJLyogcHJlc2NyZWVuaW5nOyB0aGlzIGRvZXMgd29uZGVycyBmb3IgdGhp cyByYXRoZXIgc2xvdyBjb2RlICovCiAJaWYgKGctPm11c3QgIT0gTlVMTCkgewpAQCAtMTAxLDcg KzEwMSw3IEBAIGludCBlZmxhZ3M7CiAJCQkJbWVtY21wKGRwLCBnLT5tdXN0LCAoc2l6ZV90KWct Pm1sZW4pID09IDApCiAJCQkJYnJlYWs7CiAJCWlmIChkcCA9PSBzdG9wKQkJLyogd2UgZGlkbid0 IGZpbmQgZy0+bXVzdCAqLwotCQkJcmV0dXJuKFJFR19OT01BVENIKTsKKwkJCXJldHVybihNWV9S RUdfTk9NQVRDSCk7CiAJfQogCiAJLyogbWF0Y2ggc3RydWN0IHNldHVwICovCkBAIC0xMjgsNyAr MTI4LDcgQEAgaW50IGVmbGFnczsKIAkJICBpZiAobS0+bGFzdHBvcyAhPSBOVUxMKQogCQkgICAg ZnJlZSgoY2hhciAqKW0tPmxhc3Rwb3MpOwogCQkgIFNUQVRFVEVBUkRPV04obSk7Ci0JCSAgcmV0 dXJuKFJFR19OT01BVENIKTsKKwkJICByZXR1cm4oTVlfUkVHX05PTUFUQ0gpOwogCQl9CiAJCWlm IChubWF0Y2ggPT0gMCAmJiAhZy0+YmFja3JlZnMpCiAJCQlicmVhazsJCS8qIG5vIGZ1cnRoZXIg aW5mbyBuZWVkZWQgKi8KQEAgLTE1NCwxMSArMTU0LDExIEBAIGludCBlZmxhZ3M7CiAJCSAgCWlm IChtLT5sYXN0cG9zICE9IE5VTEwpCiAJCSAgICAJZnJlZSgoY2hhciAqKW0tPmxhc3Rwb3MpOwog CQkJU1RBVEVURUFSRE9XTihtKTsKLQkJCXJldHVybihSRUdfRVNQQUNFKTsKKwkJCXJldHVybihN WV9SRUdfRVNQQUNFKTsKIAkJfQogCQlmb3IgKGkgPSAxOyBpIDw9IG0tPmctPm5zdWI7IGkrKykK IAkJCW0tPnBtYXRjaFtpXS5ybV9zbyA9IG0tPnBtYXRjaFtpXS5ybV9lbyA9IC0xOwotCQlpZiAo IWctPmJhY2tyZWZzICYmICEobS0+ZWZsYWdzJlJFR19CQUNLUikpIHsKKwkJaWYgKCFnLT5iYWNr cmVmcyAmJiAhKG0tPmVmbGFncyZNWV9SRUdfQkFDS1IpKSB7CiAJCQlOT1RFKCJkaXNzZWN0aW5n Iik7CiAJCQlkcCA9IGRpc3NlY3QoY2hhcnNldCwgbSwgbS0+Y29sZHAsIGVuZHAsIGdmLCBnbCk7 CiAJCX0gZWxzZSB7CkBAIC0xNjgsNyArMTY4LDcgQEAgaW50IGVmbGFnczsKIAkJCWlmIChnLT5u cGx1cyA+IDAgJiYgbS0+bGFzdHBvcyA9PSBOVUxMKSB7CiAJCQkJZnJlZShtLT5wbWF0Y2gpOwog CQkJCVNUQVRFVEVBUkRPV04obSk7Ci0JCQkJcmV0dXJuKFJFR19FU1BBQ0UpOworCQkJCXJldHVy bihNWV9SRUdfRVNQQUNFKTsKIAkJCX0KIAkJCU5PVEUoImJhY2tyZWYgZGlzc2VjdCIpOwogCQkJ ZHAgPSBiYWNrcmVmKGNoYXJzZXQsIG0sIG0tPmNvbGRwLCBlbmRwLCBnZiwgZ2wsIChzb3Bubykw KTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzb3BubyBsZXY7CQkJLyogUExVUyBuZXN0aW5nIGxldmVs ICovCiAJcmVnaXN0ZXIgc2l6ZV90IGxlbjsKIAlyZWdpc3RlciBpbnQgaGFyZDsKIAlyZWdpc3Rl ciBzb3AgczsKLQlyZWdpc3RlciByZWdvZmZfdCBvZmZzYXZlOworCXJlZ2lzdGVyIG15X3JlZ29m Zl90IG9mZnNhdmU7CiAJcmVnaXN0ZXIgY3NldCAqY3M7CiAKIAlBVCgiYmFjayIsIHN0YXJ0LCBz dG9wLCBzdGFydHN0LCBzdG9wc3QpOwpAQCAtNDY5LDI1ICs0NjksMjUgQEAgc29wbm8gbGV2OwkJ CS8qIFBMVVMgbmVzdGluZyBsZXZlbCAqLwogCQkJCXJldHVybihOVUxMKTsKIAkJCWJyZWFrOwog CQljYXNlIE9CT0w6Ci0JCQlpZiAoIChzcCA9PSBtLT5iZWdpbnAgJiYgIShtLT5lZmxhZ3MmUkVH X05PVEJPTCkpIHx8CisJCQlpZiAoIChzcCA9PSBtLT5iZWdpbnAgJiYgIShtLT5lZmxhZ3MmTVlf UkVHX05PVEJPTCkpIHx8CiAJCQkJCShzcCA8IG0tPmVuZHAgJiYgKihzcC0xKSA9PSAnXG4nICYm Ci0JCQkJCQkobS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSkgKQorCQkJCQkJKG0tPmctPmNmbGFn cyZNWV9SRUdfTkVXTElORSkpICkKIAkJCQl7IC8qIHllcyAqLyB9CiAJCQllbHNlCiAJCQkJcmV0 dXJuKE5VTEwpOwogCQkJYnJlYWs7CiAJCWNhc2UgT0VPTDoKLQkJCWlmICggKHNwID09IG0tPmVu ZHAgJiYgIShtLT5lZmxhZ3MmUkVHX05PVEVPTCkpIHx8CisJCQlpZiAoIChzcCA9PSBtLT5lbmRw ICYmICEobS0+ZWZsYWdzJk1ZX1JFR19OT1RFT0wpKSB8fAogCQkJCQkoc3AgPCBtLT5lbmRwICYm ICpzcCA9PSAnXG4nICYmCi0JCQkJCQkobS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSkgKQorCQkJ CQkJKG0tPmctPmNmbGFncyZNWV9SRUdfTkVXTElORSkpICkKIAkJCQl7IC8qIHllcyAqLyB9CiAJ CQllbHNlCiAJCQkJcmV0dXJuKE5VTEwpOwogCQkJYnJlYWs7CiAJCWNhc2UgT0JPVzoKLQkJCWlm ICgoIChzcCA9PSBtLT5iZWdpbnAgJiYgIShtLT5lZmxhZ3MmUkVHX05PVEJPTCkpIHx8CisJCQlp ZiAoKCAoc3AgPT0gbS0+YmVnaW5wICYmICEobS0+ZWZsYWdzJk1ZX1JFR19OT1RCT0wpKSB8fAog CQkJCQkoc3AgPCBtLT5lbmRwICYmICooc3AtMSkgPT0gJ1xuJyAmJgotCQkJCQkJKG0tPmctPmNm bGFncyZSRUdfTkVXTElORSkpIHx8CisJCQkJCQkobS0+Zy0+Y2ZsYWdzJk1ZX1JFR19ORVdMSU5F KSkgfHwKIAkJCQkJKHNwID4gbS0+YmVnaW5wICYmCiAJCQkJCQkJIUlTV09SRChjaGFyc2V0LCoo c3AtMSkpKSApICYmCiAJCQkJCShzcCA8IG0tPmVuZHAgJiYgSVNXT1JEKGNoYXJzZXQsKnNwKSkg KQpAQCAtNDk2LDkgKzQ5Niw5IEBAIHNvcG5vIGxldjsJCQkvKiBQTFVTIG5lc3RpbmcgbGV2ZWwg Ki8KIAkJCQlyZXR1cm4oTlVMTCk7CiAJCQlicmVhazsKIAkJY2FzZSBPRU9XOgotCQkJaWYgKCgg KHNwID09IG0tPmVuZHAgJiYgIShtLT5lZmxhZ3MmUkVHX05PVEVPTCkpIHx8CisJCQlpZiAoKCAo c3AgPT0gbS0+ZW5kcCAmJiAhKG0tPmVmbGFncyZNWV9SRUdfTk9URU9MKSkgfHwKIAkJCQkJKHNw IDwgbS0+ZW5kcCAmJiAqc3AgPT0gJ1xuJyAmJgotCQkJCQkJKG0tPmctPmNmbGFncyZSRUdfTkVX TElORSkpIHx8CisJCQkJCQkobS0+Zy0+Y2ZsYWdzJk1ZX1JFR19ORVdMSU5FKSkgfHwKIAkJCQkJ KHNwIDwgbS0+ZW5kcCAmJiAhSVNXT1JEKGNoYXJzZXQsKnNwKSkgKSAmJgogCQkJCQkoc3AgPiBt LT5iZWdpbnAgJiYgSVNXT1JEKGNoYXJzZXQsKihzcC0xKSkpICkKIAkJCQl7IC8qIHllcyAqLyB9 CkBAIC02NjUsMTMgKzY2NSwxMyBAQCBzb3BubyBzdG9wc3Q7CiAJCS8qIGlzIHRoZXJlIGFuIEVP TCBhbmQvb3IgQk9MIGJldHdlZW4gbGFzdGMgYW5kIGM/ICovCiAJCWZsYWdjaCA9ICdcMCc7CiAJ CWkgPSAwOwotCQlpZiAoIChsYXN0YyA9PSAnXG4nICYmIG0tPmctPmNmbGFncyZSRUdfTkVXTElO RSkgfHwKLQkJCQkobGFzdGMgPT0gT1VUICYmICEobS0+ZWZsYWdzJlJFR19OT1RCT0wpKSApIHsK KwkJaWYgKCAobGFzdGMgPT0gJ1xuJyAmJiBtLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUpIHx8 CisJCQkJKGxhc3RjID09IE9VVCAmJiAhKG0tPmVmbGFncyZNWV9SRUdfTk9UQk9MKSkgKSB7CiAJ CQlmbGFnY2ggPSBCT0w7CiAJCQlpID0gbS0+Zy0+bmJvbDsKIAkJfQotCQlpZiAoIChjID09ICdc bicgJiYgbS0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKSB8fAotCQkJCShjID09IE9VVCAmJiAhKG0t PmVmbGFncyZSRUdfTk9URU9MKSkgKSB7CisJCWlmICggKGMgPT0gJ1xuJyAmJiBtLT5nLT5jZmxh Z3MmTVlfUkVHX05FV0xJTkUpIHx8CisJCQkJKGMgPT0gT1VUICYmICEobS0+ZWZsYWdzJk1ZX1JF R19OT1RFT0wpKSApIHsKIAkJCWZsYWdjaCA9IChmbGFnY2ggPT0gQk9MKSA/IEJPTEVPTCA6IEVP TDsKIAkJCWkgKz0gbS0+Zy0+bmVvbDsKIAkJfQpAQCAtNzU1LDEzICs3NTUsMTMgQEAgc29wbm8g c3RvcHN0OwogCQkvKiBpcyB0aGVyZSBhbiBFT0wgYW5kL29yIEJPTCBiZXR3ZWVuIGxhc3RjIGFu ZCBjPyAqLwogCQlmbGFnY2ggPSAnXDAnOwogCQlpID0gMDsKLQkJaWYgKCAobGFzdGMgPT0gJ1xu JyAmJiBtLT5nLT5jZmxhZ3MmUkVHX05FV0xJTkUpIHx8Ci0JCQkJKGxhc3RjID09IE9VVCAmJiAh KG0tPmVmbGFncyZSRUdfTk9UQk9MKSkgKSB7CisJCWlmICggKGxhc3RjID09ICdcbicgJiYgbS0+ Zy0+Y2ZsYWdzJk1ZX1JFR19ORVdMSU5FKSB8fAorCQkJCShsYXN0YyA9PSBPVVQgJiYgIShtLT5l ZmxhZ3MmTVlfUkVHX05PVEJPTCkpICkgewogCQkJZmxhZ2NoID0gQk9MOwogCQkJaSA9IG0tPmct Pm5ib2w7CiAJCX0KLQkJaWYgKCAoYyA9PSAnXG4nICYmIG0tPmctPmNmbGFncyZSRUdfTkVXTElO RSkgfHwKLQkJCQkoYyA9PSBPVVQgJiYgIShtLT5lZmxhZ3MmUkVHX05PVEVPTCkpICkgeworCQlp ZiAoIChjID09ICdcbicgJiYgbS0+Zy0+Y2ZsYWdzJk1ZX1JFR19ORVdMSU5FKSB8fAorCQkJCShj ID09IE9VVCAmJiAhKG0tPmVmbGFncyZNWV9SRUdfTk9URU9MKSkgKSB7CiAJCQlmbGFnY2ggPSAo ZmxhZ2NoID09IEJPTCkgPyBCT0xFT0wgOiBFT0w7CiAJCQlpICs9IG0tPmctPm5lb2w7CiAJCX0K QEAgLTk1NCw3ICs5NTQsNyBAQCBGSUxFICpkOwogCXJlZ2lzdGVyIGludCBmaXJzdCA9IDE7CiAJ Y2hhciBidWZbMTBdOwogCi0JaWYgKCEobS0+ZWZsYWdzJlJFR19UUkFDRSkpCisJaWYgKCEobS0+ ZWZsYWdzJk1ZX1JFR19UUkFDRSkpCiAJCXJldHVybjsKIAogCWZwcmludGYoZCwgIiVzIiwgY2Fw dGlvbik7CkBAIC05ODUsNyArOTg1LDcgQEAgc29wbm8gc3RhcnRzdDsKIHNvcG5vIHN0b3BzdDsK IHsKIAljaGFyIGJ1ZlsxMF07Ci0JaWYgKCEobS0+ZWZsYWdzJlJFR19UUkFDRSkpCisJaWYgKCEo bS0+ZWZsYWdzJk1ZX1JFR19UUkFDRSkpCiAJCXJldHVybjsKIAogCXByaW50ZigiJXMgJXMtIiwg dGl0bGUsIHByaW50Y2hhcigqc3RhcnQsYnVmKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAncmVnZXgv bWFpbi5jJwotLS0gYS9yZWdleC9tYWluLmMJMjAwNS0wOS0yOSAwMToyMDozMSArMDAwMAorKysg Yi9yZWdleC9tYWluLmMJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtMTEsMTUgKzExLDQ1 IEBAIGludCBkZWJ1ZyA9IDA7CiBpbnQgbGluZSA9IDA7CiBpbnQgc3RhdHVzID0gMDsKIAotaW50 IGNvcHRzID0gUkVHX0VYVEVOREVEOworaW50IGNvcHRzID0gTVlfUkVHX0VYVEVOREVEOwogaW50 IGVvcHRzID0gMDsKLXJlZ29mZl90IHN0YXJ0b2ZmID0gMDsKLXJlZ29mZl90IGVuZG9mZiA9IDA7 CitteV9yZWdvZmZfdCBzdGFydG9mZiA9IDA7CitteV9yZWdvZmZfdCBlbmRvZmYgPSAwOwogCiAK IGV4dGVybiBpbnQgc3BsaXQoKTsKIGV4dGVybiB2b2lkIHJlZ3ByaW50KCk7CiAKKworI2lmZGVm IF9fV0lOX18KK2NoYXIgKm9wdGFyZz0gIiI7CitpbnQgb3B0aW5kPSAxOworaW50IG9wdGVycjsK KworLyogQSAodmVyeSkgc2ltcGxpZmllZCB2ZXJzaW9uIG9mIGdldG9wdCwgZW5vdWdoIHRvIHJ1 biB0aGUgcmVnaXN0ZXJlZCB0ZXN0cy4gKi8KK2ludCBnZXRvcHQoaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSwgY29uc3QgY2hhciAqb3B0c3RyaW5nKQoreworICBjaGFyICpvcHQ9IE5VTEw7CisgIGlu dCByZXR2YWw9IC0xOworICBpZiAob3B0aW5kID49IGFyZ2MpCisgICAgcmV0dXJuIHJldHZhbDsK KworICBvcHQ9IGFyZ3Zbb3B0aW5kXTsKKyAgaWYgKCpvcHQgIT0gJy0nKQorICAgIHJldHVybiBy ZXR2YWw7CisKKyAgcmV0dmFsPSAqKG9wdCsxKTsKKyAgaWYgKCoob3B0KzEpICYmICoob3B0KzIp KQorICAgIG9wdGFyZz0gb3B0ICsgMjsKKyAgZWxzZQorICAgIG9wdGFyZz0gIiI7CisKKyAgKytv cHRpbmQ7CisgIHJldHVybiByZXR2YWw7Cit9CisjZW5kaWYKKworCiAvKgogIC0gbWFpbiAtIGRv IHRoZSBzaW1wbGUgY2FzZSwgaGFuZCBvZmYgdG8gcmVncmVzcygpIGZvciByZWdyZXNzaW9uCiAg Ki8KQEAgLTM2LDEyICs2NiwxMyBAQCBjaGFyICphcmd2W107CiAJaW50IGM7CiAJaW50IGVycmZs ZyA9IDA7CiAJcmVnaXN0ZXIgaW50IGk7CisgICAgICAgIGNoYXIgKmlucHV0X2ZpbGVfbmFtZT0g TlVMTDsKIAlleHRlcm4gaW50IG9wdGluZDsKIAlleHRlcm4gY2hhciAqb3B0YXJnOwogCiAJcHJv Z25hbWUgPSBhcmd2WzBdOwogCi0Jd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjOmU6 UzpFOngiKSkgIT0gRU9GKQorCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYzplOmk6 UzpFOngiKSkgIT0gRU9GKQogCQlzd2l0Y2ggKGMpIHsKIAkJY2FzZSAnYyc6CS8qIGNvbXBpbGUg b3B0aW9ucyAqLwogCQkJY29wdHMgPSBvcHRpb25zKCdjJywgb3B0YXJnKTsKQEAgLTQ5LDExICs4 MCwxNCBAQCBjaGFyICphcmd2W107CiAJCWNhc2UgJ2UnOgkvKiBleGVjdXRlIG9wdGlvbnMgKi8K IAkJCWVvcHRzID0gb3B0aW9ucygnZScsIG9wdGFyZyk7CiAJCQlicmVhazsKKyAgICAgICAgICAg ICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2ZpbGVfbmFtZT0g b3B0YXJnOworCQkJYnJlYWs7CiAJCWNhc2UgJ1MnOgkvKiBzdGFydCBvZmZzZXQgKi8KLQkJCXN0 YXJ0b2ZmID0gKHJlZ29mZl90KWF0b2kob3B0YXJnKTsKKwkJCXN0YXJ0b2ZmID0gKG15X3JlZ29m Zl90KWF0b2kob3B0YXJnKTsKIAkJCWJyZWFrOwogCQljYXNlICdFJzoJLyogZW5kIG9mZnNldCAq LwotCQkJZW5kb2ZmID0gKHJlZ29mZl90KWF0b2kob3B0YXJnKTsKKwkJCWVuZG9mZiA9IChteV9y ZWdvZmZfdClhdG9pKG9wdGFyZyk7CiAJCQlicmVhazsKIAkJY2FzZSAneCc6CS8qIERlYnVnZ2lu Zy4gKi8KIAkJCWRlYnVnKys7CkBAIC02NSwxNSArOTksMjggQEAgY2hhciAqYXJndltdOwogCQl9 CiAJaWYgKGVycmZsZykgewogCQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyAiLCBwcm9nbmFt ZSk7Ci0JCWZwcmludGYoc3RkZXJyLCAiWy1jIGNvcHRdWy1DXVstZF0gW3JlXVxuIik7CisJCWZw cmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAgIlstYyBjb3B0XVstZSBlb3B0 XVstaSBmaWxlbmFtZV1bLVNdWy1FXVsteF0gW3JlXVxuIik7CiAJCWV4aXQoMik7CiAJfQogCi0J aWYgKG9wdGluZCA+PSBhcmdjKSB7CisJaWYgKG9wdGluZCA+PSBhcmdjICYmICFpbnB1dF9maWxl X25hbWUpIHsKIAkJcmVncmVzcyhzdGRpbik7CiAJCWV4aXQoc3RhdHVzKTsKIAl9CiAKKyAgICAg ICAgaWYgKGlucHV0X2ZpbGVfbmFtZSkgeworICAgICAgICAgIEZJTEUgKmlucHV0X2ZpbGU9IGZv cGVuKGlucHV0X2ZpbGVfbmFtZSwgInIiKTsKKyAgICAgICAgICBpZiAoIWlucHV0X2ZpbGUpIHsK KyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IG9wZW4gJyVzJyA6ICIsIGlu cHV0X2ZpbGVfbmFtZSk7CisgICAgICAgICAgICBwZXJyb3IoTlVMTCk7CisgICAgICAgICAgICBl eGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgfQorICAgICAgICAgIHJlZ3Jlc3MoaW5wdXRf ZmlsZSk7CisgICAgICAgICAgZmNsb3NlKGlucHV0X2ZpbGUpOworICAgICAgICAgIGV4aXQoc3Rh dHVzKTsKKyAgICAgICAgfQorCiAJZXJyID0gbXlfcmVnY29tcCgmcmUsIGFyZ3Zbb3B0aW5kKytd LCBjb3B0cywgJm15X2NoYXJzZXRfbGF0aW4xKTsKIAlpZiAoZXJyKSB7CiAJCWxlbiA9IG15X3Jl Z2Vycm9yKGVyciwgJnJlLCBlcmJ1Ziwgc2l6ZW9mKGVyYnVmKSk7CkBAIC04OCw3ICsxMzUsNyBA QCBjaGFyICphcmd2W107CiAJCWV4aXQoc3RhdHVzKTsKIAl9CiAKLQlpZiAoZW9wdHMmUkVHX1NU QVJURU5EKSB7CisJaWYgKGVvcHRzJk1ZX1JFR19TVEFSVEVORCkgewogCQlzdWJzWzBdLnJtX3Nv ID0gc3RhcnRvZmY7CiAJCXN1YnNbMF0ucm1fZW8gPSBzdHJsZW4oYXJndltvcHRpbmRdKSAtIGVu ZG9mZjsKIAl9CkBAIC05OSw3ICsxNDYsNyBAQCBjaGFyICphcmd2W107CiAJCQllcHJpbnQoZXJy KSwgKGludCkgbGVuLCAoaW50KSBzaXplb2YoZXJidWYpLCBlcmJ1Zik7CiAJCWV4aXQoc3RhdHVz KTsKIAl9Ci0JaWYgKCEoY29wdHMmUkVHX05PU1VCKSkgeworCWlmICghKGNvcHRzJk1ZX1JFR19O T1NVQikpIHsKIAkJbGVuID0gKGludCkoc3Vic1swXS5ybV9lbyAtIHN1YnNbMF0ucm1fc28pOwog CQlpZiAoc3Vic1swXS5ybV9zbyAhPSAtMSkgewogCQkJaWYgKGxlbiAhPSAwKQpAQCAtMTM1LDcg KzE4Miw3IEBAIEZJTEUgKmluOwogCXNpemVfdCBuZTsKIAljb25zdCBjaGFyICpiYWRwYXQgPSAi aW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24iOwogIwlkZWZpbmUJU0hPUlQJMTAKLQljb25zdCBj aGFyICpicG5hbWUgPSAiUkVHX0JBRFBBVCI7CisJY29uc3QgY2hhciAqYnBuYW1lID0gIk1ZX1JF R19CQURQQVQiOwogCW15X3JlZ2V4X3QgcmU7CiAKIAl3aGlsZSAoZmdldHMoaW5idWYsIHNpemVv ZihpbmJ1ZiksIGluKSAhPSBOVUxMKSB7CkBAIC0xNjAsMzcgKzIwNywzNyBAQCBGSUxFICppbjsK IAkJcnhfdHJ5KGZbMF0sIGZbMV0sIGZbMl0sIGZbM10sIGZbNF0sIG9wdGlvbnMoJ2MnLCBmWzFd KSk7CiAJCWlmIChvcHQoJyYnLCBmWzFdKSkJLyogdHJ5IHdpdGggZWl0aGVyIHR5cGUgb2YgUkUg Ki8KIAkJCXJ4X3RyeShmWzBdLCBmWzFdLCBmWzJdLCBmWzNdLCBmWzRdLAotCQkJCQlvcHRpb25z KCdjJywgZlsxXSkgJn4gUkVHX0VYVEVOREVEKTsKKwkJCQkJb3B0aW9ucygnYycsIGZbMV0pICZ+ IE1ZX1JFR19FWFRFTkRFRCk7CiAJfQogCi0JbmUgPSBteV9yZWdlcnJvcihSRUdfQkFEUEFULCAo bXlfcmVnZXhfdCAqKU5VTEwsIGVyYnVmLCBzaXplb2YoZXJidWYpKTsKKwluZSA9IG15X3JlZ2Vy cm9yKE1ZX1JFR19CQURQQVQsIChteV9yZWdleF90ICopTlVMTCwgZXJidWYsIHNpemVvZihlcmJ1 ZikpOwogCWlmIChzdHJjbXAoZXJidWYsIGJhZHBhdCkgIT0gMCB8fCBuZSAhPSBzdHJsZW4oYmFk cGF0KSsxKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiZW5kOiByZWdlcnJvcigpIHRlc3QgZ2F2ZSBg JXMnIG5vdCBgJXMnXG4iLAogCQkJCQkJCWVyYnVmLCBiYWRwYXQpOwogCQlzdGF0dXMgPSAxOwog CX0KLQluZSA9IG15X3JlZ2Vycm9yKFJFR19CQURQQVQsIChteV9yZWdleF90ICopTlVMTCwgZXJi dWYsIChzaXplX3QpU0hPUlQpOworCW5lID0gbXlfcmVnZXJyb3IoTVlfUkVHX0JBRFBBVCwgKG15 X3JlZ2V4X3QgKilOVUxMLCBlcmJ1ZiwgKHNpemVfdClTSE9SVCk7CiAJaWYgKHN0cm5jbXAoZXJi dWYsIGJhZHBhdCwgU0hPUlQtMSkgIT0gMCB8fCBlcmJ1ZltTSE9SVC0xXSAhPSAnXDAnIHx8CiAJ CQkJCQluZSAhPSBzdHJsZW4oYmFkcGF0KSsxKSB7CiAJCWZwcmludGYoc3RkZXJyLCAiZW5kOiBy ZWdlcnJvcigpIHNob3J0IHRlc3QgZ2F2ZSBgJXMnIG5vdCBgJS4qcydcbiIsCiAJCQkJCQllcmJ1 ZiwgU0hPUlQtMSwgYmFkcGF0KTsKIAkJc3RhdHVzID0gMTsKIAl9Ci0JbmUgPSBteV9yZWdlcnJv cihSRUdfSVRPQXxSRUdfQkFEUEFULCAobXlfcmVnZXhfdCAqKU5VTEwsIGVyYnVmLCBzaXplb2Yo ZXJidWYpKTsKKwluZSA9IG15X3JlZ2Vycm9yKE1ZX1JFR19JVE9BfE1ZX1JFR19CQURQQVQsICht eV9yZWdleF90ICopTlVMTCwgZXJidWYsIHNpemVvZihlcmJ1ZikpOwogCWlmIChzdHJjbXAoZXJi dWYsIGJwbmFtZSkgIT0gMCB8fCBuZSAhPSBzdHJsZW4oYnBuYW1lKSsxKSB7CiAJCWZwcmludGYo c3RkZXJyLCAiZW5kOiByZWdlcnJvcigpIElUT0EgdGVzdCBnYXZlIGAlcycgbm90IGAlcydcbiIs CiAJCQkJCQllcmJ1ZiwgYnBuYW1lKTsKIAkJc3RhdHVzID0gMTsKIAl9CiAJcmUucmVfZW5kcCA9 IGJwbmFtZTsKLQluZSA9IG15X3JlZ2Vycm9yKFJFR19BVE9JLCAmcmUsIGVyYnVmLCBzaXplb2Yo ZXJidWYpKTsKLQlpZiAoYXRvaShlcmJ1ZikgIT0gKGludClSRUdfQkFEUEFUKSB7CisJbmUgPSBt eV9yZWdlcnJvcihNWV9SRUdfQVRPSSwgJnJlLCBlcmJ1Ziwgc2l6ZW9mKGVyYnVmKSk7CisJaWYg KGF0b2koZXJidWYpICE9IChpbnQpTVlfUkVHX0JBRFBBVCkgewogCQlmcHJpbnRmKHN0ZGVyciwg ImVuZDogcmVnZXJyb3IoKSBBVE9JIHRlc3QgZ2F2ZSBgJXMnIG5vdCBgJWxkJ1xuIiwKLQkJCQkJ CWVyYnVmLCAobG9uZylSRUdfQkFEUEFUKTsKKwkJCQkJCWVyYnVmLCAobG9uZylNWV9SRUdfQkFE UEFUKTsKIAkJc3RhdHVzID0gMTsKIAl9IGVsc2UgaWYgKG5lICE9IHN0cmxlbihlcmJ1ZikrMSkg ewogCQlmcHJpbnRmKHN0ZGVyciwgImVuZDogcmVnZXJyb3IoKSBBVE9JIHRlc3QgbGVuKGAlcycp ID0gJWxkXG4iLAotCQkJCQkJZXJidWYsIChsb25nKVJFR19CQURQQVQpOworCQkJCQkJZXJidWYs IChsb25nKU1ZX1JFR19CQURQQVQpOwogCQlzdGF0dXMgPSAxOwogCX0KIH0KQEAgLTIxNywxNCAr MjY0LDE0IEBAIGludCBvcHRzOwkJCS8qIG1heSBub3QgbWF0Y2ggZjEgKi8KIAljaGFyIGVyYnVm WzEwMF07CiAJaW50IGVycjsKIAlpbnQgbGVuOwotCWNvbnN0IGNoYXIgKnR5cGUgPSAob3B0cyAm IFJFR19FWFRFTkRFRCkgPyAiRVJFIiA6ICJCUkUiOworCWNvbnN0IGNoYXIgKnR5cGUgPSAob3B0 cyAmIE1ZX1JFR19FWFRFTkRFRCkgPyAiRVJFIiA6ICJCUkUiOwogCXJlZ2lzdGVyIGludCBpOwog CWNoYXIgKmdydW1wOwogCWNoYXIgZjBjb3B5WzEwMDBdOwogCWNoYXIgZjJjb3B5WzEwMDBdOwog CiAJc3RyY3B5KGYwY29weSwgZjApOwotCXJlLnJlX2VuZHAgPSAob3B0cyZSRUdfUEVORCkgPyBm MGNvcHkgKyBzdHJsZW4oZjBjb3B5KSA6IE5VTEw7CisJcmUucmVfZW5kcCA9IChvcHRzJk1ZX1JF R19QRU5EKSA/IGYwY29weSArIHN0cmxlbihmMGNvcHkpIDogTlVMTDsKIAlmaXhzdHIoZjBjb3B5 KTsKIAllcnIgPSBteV9yZWdjb21wKCZyZSwgZjBjb3B5LCBvcHRzLCAmbXlfY2hhcnNldF9sYXRp bjEpOwogCWlmIChlcnIgIT0gMCAmJiAoIW9wdCgnQycsIGYxKSB8fCBlcnIgIT0gZWZpbmQoZjIp KSkgewpAQCAtMjM2LDcgKzI4Myw3IEBAIGludCBvcHRzOwkJCS8qIG1heSBub3QgbWF0Y2ggZjEg Ki8KIAkJc3RhdHVzID0gMTsKIAl9IGVsc2UgaWYgKGVyciA9PSAwICYmIG9wdCgnQycsIGYxKSkg ewogCQkvKiB1bmV4cGVjdGVkIHN1Y2Nlc3MgKi8KLQkJZnByaW50ZihzdGRlcnIsICIlZDogJXMg c2hvdWxkIGhhdmUgZ2l2ZW4gUkVHXyVzXG4iLAorCQlmcHJpbnRmKHN0ZGVyciwgIiVkOiAlcyBz aG91bGQgaGF2ZSBnaXZlbiBNWV9SRUdfJXNcbiIsCiAJCQkJCQlsaW5lLCB0eXBlLCBmMik7CiAJ CXN0YXR1cyA9IDE7CiAJCWVyciA9IDE7CS8qIHNvIHdlIHdvbid0IHRyeSByZWdleGVjICovCkBA IC0yNTAsNyArMjk3LDcgQEAgaW50IG9wdHM7CQkJLyogbWF5IG5vdCBtYXRjaCBmMSAqLwogCXN0 cmNweShmMmNvcHksIGYyKTsKIAlmaXhzdHIoZjJjb3B5KTsKIAotCWlmIChvcHRpb25zKCdlJywg ZjEpJlJFR19TVEFSVEVORCkgeworCWlmIChvcHRpb25zKCdlJywgZjEpJk1ZX1JFR19TVEFSVEVO RCkgewogCQlpZiAoc3RyY2hyKGYyLCAnKCcpID09IE5VTEwgfHwgc3RyY2hyKGYyLCAnKScpID09 IE5VTEwpCiAJCQlmcHJpbnRmKHN0ZGVyciwgIiVkOiBiYWQgU1RBUlRFTkQgc3ludGF4XG4iLCBs aW5lKTsKIAkJc3Vic1swXS5ybV9zbyA9IHN0cmNocihmMiwgJygnKSAtIGYyICsgMTsKQEAgLTI1 OCw3ICszMDUsNyBAQCBpbnQgb3B0czsJCQkvKiBtYXkgbm90IG1hdGNoIGYxICovCiAJfQogCWVy ciA9IG15X3JlZ2V4ZWMoJnJlLCBmMmNvcHksIE5TVUJTLCBzdWJzLCBvcHRpb25zKCdlJywgZjEp KTsKIAotCWlmIChlcnIgIT0gMCAmJiAoZjMgIT0gTlVMTCB8fCBlcnIgIT0gUkVHX05PTUFUQ0gp KSB7CisJaWYgKGVyciAhPSAwICYmIChmMyAhPSBOVUxMIHx8IGVyciAhPSBNWV9SRUdfTk9NQVRD SCkpIHsKIAkJLyogdW5leHBlY3RlZCBlcnJvciBvciB3cm9uZyBlcnJvciAqLwogCQlsZW4gPSBt eV9yZWdlcnJvcihlcnIsICZyZSwgZXJidWYsIHNpemVvZihlcmJ1ZikpOwogCQlmcHJpbnRmKHN0 ZGVyciwgIiVkOiAlcyBleGVjIGVycm9yICVzLCAlZC8lZCBgJXMnXG4iLApAQCAtMjczLDcgKzMy MCw3IEBAIGludCBvcHRzOwkJCS8qIG1heSBub3QgbWF0Y2ggZjEgKi8KIAkJCQkJCWxpbmUsIHR5 cGUpOwogCQlzdGF0dXMgPSAxOwogCQllcnIgPSAxOwkJLyoganVzdCBvbiBwcmluY2lwbGUgKi8K LQl9IGVsc2UgaWYgKG9wdHMmUkVHX05PU1VCKSB7CisJfSBlbHNlIGlmIChvcHRzJk1ZX1JFR19O T1NVQikgewogCQkvKiBub3RoaW5nIG1vcmUgdG8gY2hlY2sgKi8KIAl9IGVsc2UgaWYgKChncnVt cCA9IGNoZWNrKGYyLCBzdWJzWzBdLCBmMykpICE9IE5VTEwpIHsKIAkJZnByaW50ZihzdGRlcnIs ICIlZDogJXMgJXNcbiIsIGxpbmUsIHR5cGUsIGdydW1wKTsKQEAgLTMyMyw0MSArMzcwLDQxIEBA IGNoYXIgKnM7CiAJCWlmIChzdHJjaHIobGVnYWwsICpwKSAhPSBOVUxMKQogCQkJc3dpdGNoICgq cCkgewogCQkJY2FzZSAnYic6Ci0JCQkJbyAmPSB+UkVHX0VYVEVOREVEOworCQkJCW8gJj0gfk1Z X1JFR19FWFRFTkRFRDsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ2knOgotCQkJCW8gfD0gUkVHX0lD QVNFOworCQkJCW8gfD0gTVlfUkVHX0lDQVNFOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncyc6Ci0J CQkJbyB8PSBSRUdfTk9TVUI7CisJCQkJbyB8PSBNWV9SRUdfTk9TVUI7CiAJCQkJYnJlYWs7CiAJ CQljYXNlICduJzoKLQkJCQlvIHw9IFJFR19ORVdMSU5FOworCQkJCW8gfD0gTVlfUkVHX05FV0xJ TkU7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdtJzoKLQkJCQlvICY9IH5SRUdfRVhURU5ERUQ7Ci0J CQkJbyB8PSBSRUdfTk9TUEVDOworCQkJCW8gJj0gfk1ZX1JFR19FWFRFTkRFRDsKKwkJCQlvIHw9 IE1ZX1JFR19OT1NQRUM7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdwJzoKLQkJCQlvIHw9IFJFR19Q RU5EOworCQkJCW8gfD0gTVlfUkVHX1BFTkQ7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdeJzoKLQkJ CQlvIHw9IFJFR19OT1RCT0w7CisJCQkJbyB8PSBNWV9SRUdfTk9UQk9MOwogCQkJCWJyZWFrOwog CQkJY2FzZSAnJCc6Ci0JCQkJbyB8PSBSRUdfTk9URU9MOworCQkJCW8gfD0gTVlfUkVHX05PVEVP TDsKIAkJCQlicmVhazsKIAkJCWNhc2UgJyMnOgotCQkJCW8gfD0gUkVHX1NUQVJURU5EOworCQkJ CW8gfD0gTVlfUkVHX1NUQVJURU5EOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndCc6CS8qIHRyYWNl ICovCi0JCQkJbyB8PSBSRUdfVFJBQ0U7CisJCQkJbyB8PSBNWV9SRUdfVFJBQ0U7CiAJCQkJYnJl YWs7CiAJCQljYXNlICdsJzoJLyogZm9yY2UgbG9uZyByZXByZXNlbnRhdGlvbiAqLwotCQkJCW8g fD0gUkVHX0xBUkdFOworCQkJCW8gfD0gTVlfUkVHX0xBUkdFOwogCQkJCWJyZWFrOwogCQkJY2Fz ZSAncic6CS8qIGZvcmNlIGJhY2tyZWYgdXNlICovCi0JCQkJbyB8PSBSRUdfQkFDS1I7CisJCQkJ byB8PSBNWV9SRUdfQkFDS1I7CiAJCQkJYnJlYWs7CiAJCQl9CiAJcmV0dXJuKG8pOwpAQCAtNDg1 LDcgKzUzMiw3IEBAIGludCBlcnI7CiAJc3RhdGljIGNoYXIgZXBidWZbMTAwXTsKIAlzaXplX3Qg bGVuOwogCi0JbGVuID0gbXlfcmVnZXJyb3IoUkVHX0lUT0F8ZXJyLCAobXlfcmVnZXhfdCAqKU5V TEwsIGVwYnVmLCBzaXplb2YoZXBidWYpKTsKKwlsZW4gPSBteV9yZWdlcnJvcihNWV9SRUdfSVRP QXxlcnIsIChteV9yZWdleF90ICopTlVMTCwgZXBidWYsIHNpemVvZihlcGJ1ZikpOwogCWFzc2Vy dChsZW4gPD0gc2l6ZW9mKGVwYnVmKSk7CiAJcmV0dXJuKGVwYnVmKTsKIH0KQEAgLTUwMSw5ICs1 NDgsOSBAQCBjaGFyICpuYW1lOwogCXN0YXRpYyBjaGFyIGVmYnVmWzEwMF07CiAJbXlfcmVnZXhf dCByZTsKIAotCXNwcmludGYoZWZidWYsICJSRUdfJXMiLCBuYW1lKTsKKwlzcHJpbnRmKGVmYnVm LCAiTVlfUkVHXyVzIiwgbmFtZSk7CiAJYXNzZXJ0KHN0cmxlbihlZmJ1ZikgPCBzaXplb2YoZWZi dWYpKTsKIAlyZS5yZV9lbmRwID0gZWZidWY7Ci0JKHZvaWQpIG15X3JlZ2Vycm9yKFJFR19BVE9J LCAmcmUsIGVmYnVmLCBzaXplb2YoZWZidWYpKTsKKwkodm9pZCkgbXlfcmVnZXJyb3IoTVlfUkVH X0FUT0ksICZyZSwgZWZidWYsIHNpemVvZihlZmJ1ZikpOwogCXJldHVybihhdG9pKGVmYnVmKSk7 CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAncmVnZXgvbXlfcmVnZXguaCcKLS0tIGEvcmVnZXgvbXlf cmVnZXguaAkyMDA1LTA5LTI5IDAwOjA4OjI0ICswMDAwCisrKyBiL3JlZ2V4L215X3JlZ2V4LmgJ MjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtMSw3NCArMSw3NSBAQAogI2lmbmRlZiBfUkVH RVhfSF8KICNkZWZpbmUJX1JFR0VYX0hfCS8qIG5ldmVyIGFnYWluICovCiAvKiA9PT09PT09PT0g YmVnaW4gaGVhZGVyIGdlbmVyYXRlZCBieSAuL21raCA9PT09PT09PT0gKi8KKworI2luY2x1ZGUg Im1fY3R5cGUuaCIKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgog Ci0jaW5jbHVkZSAibV9jdHlwZS5oIgotCiAvKiA9PT0gcmVnZXgyLmggPT09ICovCiAjaWZkZWYg X1dJTjY0Ci10eXBlZGVmIF9faW50NjQgcmVnb2ZmX3Q7Cit0eXBlZGVmIF9faW50NjQgbXlfcmVn b2ZmX3Q7CiAjZWxzZQotdHlwZWRlZiBvZmZfdCByZWdvZmZfdDsKK3R5cGVkZWYgb2ZmX3QgbXlf cmVnb2ZmX3Q7CiAjZW5kaWYKIHN0cnVjdCByZV9ndXRzOwkJCS8qIG5vbmUgb2YgeW91ciBidXNp bmVzcyA6LSkgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQgcmVfbWFnaWM7CiAJc2l6ZV90IHJl X25zdWI7CQkvKiBudW1iZXIgb2YgcGFyZW50aGVzaXplZCBzdWJleHByZXNzaW9ucyAqLwotCWNv bnN0IGNoYXIgKnJlX2VuZHA7CS8qIGVuZCBwb2ludGVyIGZvciBSRUdfUEVORCAqLworCWNvbnN0 IGNoYXIgKnJlX2VuZHA7CS8qIGVuZCBwb2ludGVyIGZvciBNWV9SRUdfUEVORCAqLwogCXN0cnVj dCByZV9ndXRzICpyZV9nOwkvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCiAJQ0hBUlNF VF9JTkZPICpjaGFyc2V0OwkvKiBGb3IgY3R5cGUgdGhpbmdzICovCiB9IG15X3JlZ2V4X3Q7CiB0 eXBlZGVmIHN0cnVjdCB7Ci0JcmVnb2ZmX3Qgcm1fc287CQkvKiBzdGFydCBvZiBtYXRjaCAqLwot CXJlZ29mZl90IHJtX2VvOwkJLyogZW5kIG9mIG1hdGNoICovCisJbXlfcmVnb2ZmX3Qgcm1fc287 CQkvKiBzdGFydCBvZiBtYXRjaCAqLworCW15X3JlZ29mZl90IHJtX2VvOwkJLyogZW5kIG9mIG1h dGNoICovCiB9IG15X3JlZ21hdGNoX3Q7CiAKIAogLyogPT09IHJlZ2NvbXAuYyA9PT0gKi8KIGV4 dGVybiBpbnQgbXlfcmVnY29tcChteV9yZWdleF90ICosIGNvbnN0IGNoYXIgKiwgaW50LCBDSEFS U0VUX0lORk8gKmNoYXJzZXQpOwotI2RlZmluZQlSRUdfQkFTSUMJMDAwMAotI2RlZmluZQlSRUdf RVhURU5ERUQJMDAwMQotI2RlZmluZQlSRUdfSUNBU0UJMDAwMgotI2RlZmluZQlSRUdfTk9TVUIJ MDAwNAotI2RlZmluZQlSRUdfTkVXTElORQkwMDEwCi0jZGVmaW5lCVJFR19OT1NQRUMJMDAyMAot I2RlZmluZQlSRUdfUEVORAkwMDQwCi0jZGVmaW5lCVJFR19EVU1QCTAyMDAKKyNkZWZpbmUJTVlf UkVHX0JBU0lDCTAwMDAKKyNkZWZpbmUJTVlfUkVHX0VYVEVOREVECTAwMDEKKyNkZWZpbmUJTVlf UkVHX0lDQVNFCTAwMDIKKyNkZWZpbmUJTVlfUkVHX05PU1VCCTAwMDQKKyNkZWZpbmUJTVlfUkVH X05FV0xJTkUJMDAxMAorI2RlZmluZQlNWV9SRUdfTk9TUEVDCTAwMjAKKyNkZWZpbmUJTVlfUkVH X1BFTkQJMDA0MAorI2RlZmluZQlNWV9SRUdfRFVNUAkwMjAwCiAKIAogLyogPT09IHJlZ2Vycm9y LmMgPT09ICovCi0jZGVmaW5lCVJFR19OT01BVENICSAxCi0jZGVmaW5lCVJFR19CQURQQVQJIDIK LSNkZWZpbmUJUkVHX0VDT0xMQVRFCSAzCi0jZGVmaW5lCVJFR19FQ1RZUEUJIDQKLSNkZWZpbmUJ UkVHX0VFU0NBUEUJIDUKLSNkZWZpbmUJUkVHX0VTVUJSRUcJIDYKLSNkZWZpbmUJUkVHX0VCUkFD SwkgNwotI2RlZmluZQlSRUdfRVBBUkVOCSA4Ci0jZGVmaW5lCVJFR19FQlJBQ0UJIDkKLSNkZWZp bmUJUkVHX0JBREJSCTEwCi0jZGVmaW5lCVJFR19FUkFOR0UJMTEKLSNkZWZpbmUJUkVHX0VTUEFD RQkxMgotI2RlZmluZQlSRUdfQkFEUlBUCTEzCi0jZGVmaW5lCVJFR19FTVBUWQkxNAotI2RlZmlu ZQlSRUdfQVNTRVJUCTE1Ci0jZGVmaW5lCVJFR19JTlZBUkcJMTYKLSNkZWZpbmUJUkVHX0FUT0kJ MjU1CS8qIGNvbnZlcnQgbmFtZSB0byBudW1iZXIgKCEpICovCi0jZGVmaW5lCVJFR19JVE9BCTA0 MDAJLyogY29udmVydCBudW1iZXIgdG8gbmFtZSAoISkgKi8KKyNkZWZpbmUJTVlfUkVHX05PTUFU Q0gJIDEKKyNkZWZpbmUJTVlfUkVHX0JBRFBBVAkgMgorI2RlZmluZQlNWV9SRUdfRUNPTExBVEUJ IDMKKyNkZWZpbmUJTVlfUkVHX0VDVFlQRQkgNAorI2RlZmluZQlNWV9SRUdfRUVTQ0FQRQkgNQor I2RlZmluZQlNWV9SRUdfRVNVQlJFRwkgNgorI2RlZmluZQlNWV9SRUdfRUJSQUNLCSA3CisjZGVm aW5lCU1ZX1JFR19FUEFSRU4JIDgKKyNkZWZpbmUJTVlfUkVHX0VCUkFDRQkgOQorI2RlZmluZQlN WV9SRUdfQkFEQlIJMTAKKyNkZWZpbmUJTVlfUkVHX0VSQU5HRQkxMQorI2RlZmluZQlNWV9SRUdf RVNQQUNFCTEyCisjZGVmaW5lCU1ZX1JFR19CQURSUFQJMTMKKyNkZWZpbmUJTVlfUkVHX0VNUFRZ CTE0CisjZGVmaW5lCU1ZX1JFR19BU1NFUlQJMTUKKyNkZWZpbmUJTVlfUkVHX0lOVkFSRwkxNgor I2RlZmluZQlNWV9SRUdfQVRPSQkyNTUJLyogY29udmVydCBuYW1lIHRvIG51bWJlciAoISkgKi8K KyNkZWZpbmUJTVlfUkVHX0lUT0EJMDQwMAkvKiBjb252ZXJ0IG51bWJlciB0byBuYW1lICghKSAq LwogZXh0ZXJuIHNpemVfdCBteV9yZWdlcnJvcihpbnQsIGNvbnN0IG15X3JlZ2V4X3QgKiwgY2hh ciAqLCBzaXplX3QpOwogCiAKIC8qID09PSByZWdleGVjLmMgPT09ICovCiBleHRlcm4gaW50IG15 X3JlZ2V4ZWMoY29uc3QgbXlfcmVnZXhfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbXlfcmVn bWF0Y2hfdCBbXSwgaW50KTsKLSNkZWZpbmUJUkVHX05PVEJPTAkwMDAwMQotI2RlZmluZQlSRUdf Tk9URU9MCTAwMDAyCi0jZGVmaW5lCVJFR19TVEFSVEVORAkwMDAwNAotI2RlZmluZQlSRUdfVFJB Q0UJMDA0MDAJLyogdHJhY2luZyBvZiBleGVjdXRpb24gKi8KLSNkZWZpbmUJUkVHX0xBUkdFCTAx MDAwCS8qIGZvcmNlIGxhcmdlIHJlcHJlc2VudGF0aW9uICovCi0jZGVmaW5lCVJFR19CQUNLUgkw MjAwMAkvKiBmb3JjZSB1c2Ugb2YgYmFja3JlZiBjb2RlICovCisjZGVmaW5lCU1ZX1JFR19OT1RC T0wJMDAwMDEKKyNkZWZpbmUJTVlfUkVHX05PVEVPTAkwMDAwMgorI2RlZmluZQlNWV9SRUdfU1RB UlRFTkQJMDAwMDQKKyNkZWZpbmUJTVlfUkVHX1RSQUNFCTAwNDAwCS8qIHRyYWNpbmcgb2YgZXhl Y3V0aW9uICovCisjZGVmaW5lCU1ZX1JFR19MQVJHRQkwMTAwMAkvKiBmb3JjZSBsYXJnZSByZXBy ZXNlbnRhdGlvbiAqLworI2RlZmluZQlNWV9SRUdfQkFDS1IJMDIwMDAJLyogZm9yY2UgdXNlIG9m IGJhY2tyZWYgY29kZSAqLwogCiAKIC8qID09PSByZWdmcmVlLmMgPT09ICovCgo9PT0gbW9kaWZp ZWQgZmlsZSAncmVnZXgvcmVnY29tcC5jJwotLS0gYS9yZWdleC9yZWdjb21wLmMJMjAxMC0wNy0y MyAyMDoxNjoyOSArMDAwMAorKysgYi9yZWdleC9yZWdjb21wLmMJMjAxMC0wNy0yNiAxMDozOToz OCArMDAwMApAQCAtOTAsMTYgKzkwLDE2IEBAIHN0YXRpYyBpbnQgbmV2ZXIgPSAwOwkJLyogZm9y IHVzZSBpbiBhc3MKIC8qCiAgLSByZWdjb21wIC0gaW50ZXJmYWNlIGZvciBwYXJzZXIgYW5kIGNv bXBpbGF0aW9uCiAgPSBleHRlcm4gaW50IHJlZ2NvbXAocmVnZXhfdCAqLCBjb25zdCBjaGFyICos IGludCk7Ci0gPSAjZGVmaW5lCVJFR19CQVNJQwkwMDAwCi0gPSAjZGVmaW5lCVJFR19FWFRFTkRF RAkwMDAxCi0gPSAjZGVmaW5lCVJFR19JQ0FTRQkwMDAyCi0gPSAjZGVmaW5lCVJFR19OT1NVQgkw MDA0Ci0gPSAjZGVmaW5lCVJFR19ORVdMSU5FCTAwMTAKLSA9ICNkZWZpbmUJUkVHX05PU1BFQwkw MDIwCi0gPSAjZGVmaW5lCVJFR19QRU5ECTAwNDAKLSA9ICNkZWZpbmUJUkVHX0RVTVAJMDIwMAor ID0gI2RlZmluZQlNWV9SRUdfQkFTSUMJMDAwMAorID0gI2RlZmluZQlNWV9SRUdfRVhURU5ERUQJ MDAwMQorID0gI2RlZmluZQlNWV9SRUdfSUNBU0UJMDAwMgorID0gI2RlZmluZQlNWV9SRUdfTk9T VUIJMDAwNAorID0gI2RlZmluZQlNWV9SRUdfTkVXTElORQkwMDEwCisgPSAjZGVmaW5lCU1ZX1JF R19OT1NQRUMJMDAyMAorID0gI2RlZmluZQlNWV9SRUdfUEVORAkwMDQwCisgPSAjZGVmaW5lCU1Z X1JFR19EVU1QCTAyMDAKICAqLwotaW50CQkJCS8qIDAgc3VjY2Vzcywgb3RoZXJ3aXNlIFJFR19z b21ldGhpbmcgKi8KK2ludAkJCQkvKiAwIHN1Y2Nlc3MsIG90aGVyd2lzZSBNWV9SRUdfc29tZXRo aW5nICovCiBteV9yZWdjb21wKHByZWcsIHBhdHRlcm4sIGNmbGFncywgY2hhcnNldCkKIG15X3Jl Z2V4X3QgKnByZWc7CiBjb25zdCBjaGFyICpwYXR0ZXJuOwpAQCAtMTE0LDE4ICsxMTQsMTggQEAg Q0hBUlNFVF9JTkZPICpjaGFyc2V0OwogI2lmZGVmIFJFREVCVUcKICMJZGVmaW5lCUdPT0RGTEFH UyhmKQkoZikKICNlbHNlCi0jCWRlZmluZQlHT09ERkxBR1MoZikJKChmKSZ+UkVHX0RVTVApCisj CWRlZmluZQlHT09ERkxBR1MoZikJKChmKSZ+TVlfUkVHX0RVTVApCiAjZW5kaWYKIAogCW15X3Jl Z2V4X2luaXQoY2hhcnNldCk7CS8qIEluaXQgY2NsYXNzIGlmIG5lYWRlZCAqLwogCXByZWctPmNo YXJzZXQ9Y2hhcnNldDsKIAljZmxhZ3MgPSBHT09ERkxBR1MoY2ZsYWdzKTsKLQlpZiAoKGNmbGFn cyZSRUdfRVhURU5ERUQpICYmIChjZmxhZ3MmUkVHX05PU1BFQykpCi0JCXJldHVybihSRUdfSU5W QVJHKTsKKwlpZiAoKGNmbGFncyZNWV9SRUdfRVhURU5ERUQpICYmIChjZmxhZ3MmTVlfUkVHX05P U1BFQykpCisJCXJldHVybihNWV9SRUdfSU5WQVJHKTsKIAotCWlmIChjZmxhZ3MmUkVHX1BFTkQp IHsKKwlpZiAoY2ZsYWdzJk1ZX1JFR19QRU5EKSB7CiAJCWlmIChwcmVnLT5yZV9lbmRwIDwgcGF0 dGVybikKLQkJCXJldHVybihSRUdfSU5WQVJHKTsKKwkJCXJldHVybihNWV9SRUdfSU5WQVJHKTsK IAkJbGVuID0gcHJlZy0+cmVfZW5kcCAtIHBhdHRlcm47CiAJfSBlbHNlCiAJCWxlbiA9IHN0cmxl bigoY2hhciAqKXBhdHRlcm4pOwpAQCAtMTM0LDEzICsxMzQsMTMgQEAgQ0hBUlNFVF9JTkZPICpj aGFyc2V0OwogCWcgPSAoc3RydWN0IHJlX2d1dHMgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCByZV9n dXRzKSArCiAJCQkJCQkJKE5DLTEpKnNpemVvZihjYXRfdCkpOwogCWlmIChnID09IE5VTEwpCi0J CXJldHVybihSRUdfRVNQQUNFKTsKKwkJcmV0dXJuKE1ZX1JFR19FU1BBQ0UpOwogCXAtPnNzaXpl ID0gKGxvbmcpIChsZW4vKHNpemVfdCkyKihzaXplX3QpMyArIChzaXplX3QpMSk7IC8qIHVnaCAq LwogCXAtPnN0cmlwID0gKHNvcCAqKW1hbGxvYyhwLT5zc2l6ZSAqIHNpemVvZihzb3ApKTsKIAlw LT5zbGVuID0gMDsKIAlpZiAocC0+c3RyaXAgPT0gTlVMTCkgewogCQlmcmVlKChjaGFyICopZyk7 Ci0JCXJldHVybihSRUdfRVNQQUNFKTsKKwkJcmV0dXJuKE1ZX1JFR19FU1BBQ0UpOwogCX0KIAog CS8qIHNldCB0aGluZ3MgdXAgKi8KQEAgLTE3Myw5ICsxNzMsOSBAQCBDSEFSU0VUX0lORk8gKmNo YXJzZXQ7CiAJLyogZG8gaXQgKi8KIAlFTUlUKE9FTkQsIDApOwogCWctPmZpcnN0c3RhdGUgPSBU SEVSRSgpOwotCWlmIChjZmxhZ3MmUkVHX0VYVEVOREVEKQorCWlmIChjZmxhZ3MmTVlfUkVHX0VY VEVOREVEKQogCQlwX2VyZShwLCBPVVQpOwotCWVsc2UgaWYgKGNmbGFncyZSRUdfTk9TUEVDKQor CWVsc2UgaWYgKGNmbGFncyZNWV9SRUdfTk9TUEVDKQogCQlwX3N0cihwKTsKIAllbHNlCiAJCXBf YnJlKHAsIE9VVCwgT1VUKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBDSEFSU0VUX0lORk8gKmNoYXJz ZXQ7CiAjaWZuZGVmIFJFREVCVUcKIAkvKiBub3QgZGVidWdnaW5nLCBzbyBjYW4ndCByZWx5IG9u IHRoZSBhc3NlcnQoKSBpbiByZWdleGVjKCkgKi8KIAlpZiAoZy0+aWZsYWdzJkJBRCkKLQkJU0VU RVJST1IoUkVHX0FTU0VSVCk7CisJCVNFVEVSUk9SKE1ZX1JFR19BU1NFUlQpOwogI2VuZGlmCiAK IAkvKiB3aW4gb3IgbG9zZSwgd2UncmUgZG9uZSAqLwpAQCAtMjIzLDcgKzIyMyw3IEBAIGludCBz dG9wOwkJCS8qIGNoYXJhY3RlciB0aGlzIEVSRSBzaG91bGQKIAkJY29uYyA9IEhFUkUoKTsKIAkJ d2hpbGUgKE1PUkUoKSAmJiAoYyA9IFBFRUsoKSkgIT0gJ3wnICYmIGMgIT0gc3RvcCkKIAkJCXBf ZXJlX2V4cChwKTsKLQkJaWYoUkVRVUlSRShIRVJFKCkgIT0gY29uYywgUkVHX0VNUFRZKSkge30v KiByZXF1aXJlIG5vbmVtcHR5ICovCisJCWlmKFJFUVVJUkUoSEVSRSgpICE9IGNvbmMsIE1ZX1JF R19FTVBUWSkpIHt9LyogcmVxdWlyZSBub25lbXB0eSAqLwogCiAJCWlmICghRUFUKCd8JykpCiAJ CQlicmVhazsJCS8qIE5PVEUgQlJFQUsgT1VUICovCkBAIC0yNzAsNyArMjcwLDcgQEAgcmVnaXN0 ZXIgc3RydWN0IHBhcnNlICpwOwogCXBvcyA9IEhFUkUoKTsKIAlzd2l0Y2ggKGMpIHsKIAljYXNl ICcoJzoKLQkJaWYoUkVRVUlSRShNT1JFKCksIFJFR19FUEFSRU4pKSB7fQorCQlpZihSRVFVSVJF KE1PUkUoKSwgTVlfUkVHX0VQQVJFTikpIHt9CiAJCXAtPmctPm5zdWIrKzsKIAkJc3Vibm8gPSAo c29wbm8pIHAtPmctPm5zdWI7CiAJCWlmIChzdWJubyA8IE5QQVJFTikKQEAgLTI4Myw3ICsyODMs NyBAQCByZWdpc3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCQlhc3NlcnQocC0+cGVuZFtzdWJub10g IT0gMCk7CiAJCX0KIAkJRU1JVChPUlBBUkVOLCBzdWJubyk7Ci0JCWlmKE1VU1RFQVQoJyknLCBS RUdfRVBBUkVOKSkge30KKwkJaWYoTVVTVEVBVCgnKScsIE1ZX1JFR19FUEFSRU4pKSB7fQogCQli cmVhazsKIAljYXNlICdeJzoKIAkJRU1JVChPQk9MLCAwKTsKQEAgLTI5NywxNSArMjk3LDE1IEBA IHJlZ2lzdGVyIHN0cnVjdCBwYXJzZSAqcDsKIAkJcC0+Zy0+bmVvbCsrOwogCQlicmVhazsKIAlj YXNlICd8JzoKLQkJU0VURVJST1IoUkVHX0VNUFRZKTsKKwkJU0VURVJST1IoTVlfUkVHX0VNUFRZ KTsKIAkJYnJlYWs7CiAJY2FzZSAnKic6CiAJY2FzZSAnKyc6CiAJY2FzZSAnPyc6Ci0JCVNFVEVS Uk9SKFJFR19CQURSUFQpOworCQlTRVRFUlJPUihNWV9SRUdfQkFEUlBUKTsKIAkJYnJlYWs7CiAJ Y2FzZSAnLic6Ci0JCWlmIChwLT5nLT5jZmxhZ3MmUkVHX05FV0xJTkUpCisJCWlmIChwLT5nLT5j ZmxhZ3MmTVlfUkVHX05FV0xJTkUpCiAJCQlub25uZXdsaW5lKHApOwogCQllbHNlCiAJCQlFTUlU KE9BTlksIDApOwpAQCAtMzE0LDEyICszMTQsMTIgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpw OwogCQlwX2JyYWNrZXQocCk7CiAJCWJyZWFrOwogCWNhc2UgJ1xcJzoKLQkJaWYoUkVRVUlSRShN T1JFKCksIFJFR19FRVNDQVBFKSkge30KKwkJaWYoUkVRVUlSRShNT1JFKCksIE1ZX1JFR19FRVND QVBFKSkge30KIAkJYyA9IEdFVE5FWFQoKTsKIAkJb3JkaW5hcnkocCwgYyk7CiAJCWJyZWFrOwog CWNhc2UgJ3snOgkJLyogb2theSBhcyBvcmRpbmFyeSBleGNlcHQgaWYgZGlnaXQgZm9sbG93cyAq LwotCQlpZihSRVFVSVJFKCFNT1JFKCkgfHwgIW15X2lzZGlnaXQocC0+Y2hhcnNldCxQRUVLKCkp LCBSRUdfQkFEUlBUKSkge30KKwkJaWYoUkVRVUlSRSghTU9SRSgpIHx8ICFteV9pc2RpZ2l0KHAt PmNoYXJzZXQsUEVFSygpKSwgTVlfUkVHX0JBRFJQVCkpIHt9CiAJCS8qIEZBTExUSFJPVUdIICov CiAJZGVmYXVsdDoKIAkJb3JkaW5hcnkocCwgYyk7CkBAIC0zMzYsNyArMzM2LDcgQEAgcmVnaXN0 ZXIgc3RydWN0IHBhcnNlICpwOwogCQlyZXR1cm47CQkvKiBubyByZXBldGl0aW9uLCB3ZSdyZSBk b25lICovCiAJTkVYVCgpOwogCi0JaWYoUkVRVUlSRSghd2FzY2FyZXQsIFJFR19CQURSUFQpKSB7 fQorCWlmKFJFUVVJUkUoIXdhc2NhcmV0LCBNWV9SRUdfQkFEUlBUKSkge30KIAlzd2l0Y2ggKGMp IHsKIAljYXNlICcqJzoJLyogaW1wbGVtZW50ZWQgYXMgKz8gKi8KIAkJLyogdGhpcyBjYXNlIGRv ZXMgbm90IHJlcXVpcmUgdGhlICh5fCkgdHJpY2ssIG5vS0xVREdFICovCkBAIC0zNjMsNyArMzYz LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQlpZiAoRUFUKCcsJykpIHsKIAkJCWlm IChteV9pc2RpZ2l0KHAtPmNoYXJzZXQsUEVFSygpKSkgewogCQkJCWNvdW50MiA9IHBfY291bnQo cCk7Ci0JCQkJaWYoUkVRVUlSRShjb3VudCA8PSBjb3VudDIsIFJFR19CQURCUikpIHt9CisJCQkJ aWYoUkVRVUlSRShjb3VudCA8PSBjb3VudDIsIE1ZX1JFR19CQURCUikpIHt9CiAJCQl9IGVsc2UJ CS8qIHNpbmdsZSBudW1iZXIgd2l0aCBjb21tYSAqLwogCQkJCWNvdW50MiA9IFJFX0lORklOSVRZ OwogCQl9IGVsc2UJCS8qIGp1c3QgYSBzaW5nbGUgbnVtYmVyICovCkBAIC0zNzIsOCArMzcyLDgg QEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQlpZiAoIUVBVCgnfScpKSB7CS8qIGVycm9y IGhldXJpc3RpY3MgKi8KIAkJCXdoaWxlIChNT1JFKCkgJiYgUEVFSygpICE9ICd9JykKIAkJCQlO RVhUKCk7Ci0JCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VCUkFDRSkpIHt9Ci0JCQlTRVRFUlJP UihSRUdfQkFEQlIpOworCQkJaWYoUkVRVUlSRShNT1JFKCksIE1ZX1JFR19FQlJBQ0UpKSB7fQor CQkJU0VURVJST1IoTVlfUkVHX0JBREJSKTsKIAkJfQogCQlicmVhazsKIAl9CkBAIC0zODUsNyAr Mzg1LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQkJCShjID09ICd7JyAmJiBNT1JF MigpICYmIAogCQkJCSBteV9pc2RpZ2l0KHAtPmNoYXJzZXQsUEVFSzIoKSkpICkgKQogCQlyZXR1 cm47Ci0JU0VURVJST1IoUkVHX0JBRFJQVCk7CisJU0VURVJST1IoTVlfUkVHX0JBRFJQVCk7CiB9 CiAKIC8qCkBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIHZvaWQKIHBfc3RyKHApCiByZWdpc3Rl ciBzdHJ1Y3QgcGFyc2UgKnA7CiB7Ci0JaWYoUkVRVUlSRShNT1JFKCksIFJFR19FTVBUWSkpIHt9 CisJaWYoUkVRVUlSRShNT1JFKCksIE1ZX1JFR19FTVBUWSkpIHt9CiAJd2hpbGUgKE1PUkUoKSkK IAkJb3JkaW5hcnkocCwgR0VUTkVYVCgpKTsKIH0KQEAgLTQzOSw3ICs0MzksNyBAQCByZWdpc3Rl ciBpbnQgZW5kMjsJCS8qIHNlY29uZCB0ZXJtaW5hdGluCiAJCXAtPmctPm5lb2wrKzsKIAl9CiAK LQlpZihSRVFVSVJFKEhFUkUoKSAhPSBzdGFydCwgUkVHX0VNUFRZKSkge30JLyogcmVxdWlyZSBu b25lbXB0eSAqLworCWlmKFJFUVVJUkUoSEVSRSgpICE9IHN0YXJ0LCBNWV9SRUdfRU1QVFkpKSB7 fQkvKiByZXF1aXJlIG5vbmVtcHR5ICovCiB9CiAKIC8qCkBAIC00NjQsMTIgKzQ2NCwxMiBAQCBp bnQgc3Rhcm9yZGluYXJ5OwkJLyogaXMgYSBsZWFkaW5nICogYW4gCiAJYXNzZXJ0KE1PUkUoKSk7 CQkvKiBjYWxsZXIgc2hvdWxkIGhhdmUgZW5zdXJlZCB0aGlzICovCiAJYyA9IEdFVE5FWFQoKTsK IAlpZiAoYyA9PSAnXFwnKSB7Ci0JCWlmKFJFUVVJUkUoTU9SRSgpLCBSRUdfRUVTQ0FQRSkpIHt9 CisJCWlmKFJFUVVJUkUoTU9SRSgpLCBNWV9SRUdfRUVTQ0FQRSkpIHt9CiAJCWMgPSBCQUNLU0wg fCAodW5zaWduZWQgY2hhcilHRVRORVhUKCk7CiAJfQogCXN3aXRjaCAoYykgewogCWNhc2UgJy4n OgotCQlpZiAocC0+Zy0+Y2ZsYWdzJlJFR19ORVdMSU5FKQorCQlpZiAocC0+Zy0+Y2ZsYWdzJk1Z X1JFR19ORVdMSU5FKQogCQkJbm9ubmV3bGluZShwKTsKIAkJZWxzZQogCQkJRU1JVChPQU5ZLCAw KTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBpbnQgc3Rhcm9yZGluYXJ5OwkJLyogaXMgYSBsZWFkaW5n ICogYW4gCiAJCXBfYnJhY2tldChwKTsKIAkJYnJlYWs7CiAJY2FzZSBCQUNLU0x8J3snOgotCQlT RVRFUlJPUihSRUdfQkFEUlBUKTsKKwkJU0VURVJST1IoTVlfUkVHX0JBRFJQVCk7CiAJCWJyZWFr OwogCWNhc2UgQkFDS1NMfCcoJzoKIAkJcC0+Zy0+bnN1YisrOwpAQCAtNDk0LDExICs0OTQsMTEg QEAgaW50IHN0YXJvcmRpbmFyeTsJCS8qIGlzIGEgbGVhZGluZyAqIGFuIAogCQkJYXNzZXJ0KHAt PnBlbmRbc3Vibm9dICE9IDApOwogCQl9CiAJCUVNSVQoT1JQQVJFTiwgc3Vibm8pOwotCQlpZihS RVFVSVJFKEVBVFRXTygnXFwnLCAnKScpLCBSRUdfRVBBUkVOKSkge30KKwkJaWYoUkVRVUlSRShF QVRUV08oJ1xcJywgJyknKSwgTVlfUkVHX0VQQVJFTikpIHt9CiAJCWJyZWFrOwogCWNhc2UgQkFD S1NMfCcpJzoJLyogc2hvdWxkIG5vdCBnZXQgaGVyZSAtLSBtdXN0IGJlIHVzZXIgKi8KIAljYXNl IEJBQ0tTTHwnfSc6Ci0JCVNFVEVSUk9SKFJFR19FUEFSRU4pOworCQlTRVRFUlJPUihNWV9SRUdf RVBBUkVOKTsKIAkJYnJlYWs7CiAJY2FzZSBCQUNLU0x8JzEnOgogCWNhc2UgQkFDS1NMfCcyJzoK QEAgLTUyMCwxMSArNTIwLDExIEBAIGludCBzdGFyb3JkaW5hcnk7CQkvKiBpcyBhIGxlYWRpbmcg KiBhbiAKIAkJCSh2b2lkKSBkdXBsKHAsIHAtPnBiZWdpbltpXSsxLCBwLT5wZW5kW2ldKTsKIAkJ CUVNSVQoT19CQUNLLCBpKTsKIAkJfSBlbHNlCi0JCQlTRVRFUlJPUihSRUdfRVNVQlJFRyk7CisJ CQlTRVRFUlJPUihNWV9SRUdfRVNVQlJFRyk7CiAJCXAtPmctPmJhY2tyZWZzID0gMTsKIAkJYnJl YWs7CiAJY2FzZSAnKic6Ci0JCWlmKFJFUVVJUkUoc3Rhcm9yZGluYXJ5LCBSRUdfQkFEUlBUKSkg e30KKwkJaWYoUkVRVUlSRShzdGFyb3JkaW5hcnksIE1ZX1JFR19CQURSUFQpKSB7fQogCQkvKiBG QUxMVEhST1VHSCAqLwogCWRlZmF1bHQ6CiAJCW9yZGluYXJ5KHAsIGMgJn4gQkFDS1NMKTsKQEAg LTU0Miw3ICs1NDIsNyBAQCBpbnQgc3Rhcm9yZGluYXJ5OwkJLyogaXMgYSBsZWFkaW5nICogYW4g CiAJCWlmIChFQVQoJywnKSkgewogCQkJaWYgKE1PUkUoKSAmJiBteV9pc2RpZ2l0KHAtPmNoYXJz ZXQsUEVFSygpKSkgewogCQkJCWNvdW50MiA9IHBfY291bnQocCk7Ci0JCQkJaWYoUkVRVUlSRShj b3VudCA8PSBjb3VudDIsIFJFR19CQURCUikpIHt9CisJCQkJaWYoUkVRVUlSRShjb3VudCA8PSBj b3VudDIsIE1ZX1JFR19CQURCUikpIHt9CiAJCQl9IGVsc2UJCS8qIHNpbmdsZSBudW1iZXIgd2l0 aCBjb21tYSAqLwogCQkJCWNvdW50MiA9IFJFX0lORklOSVRZOwogCQl9IGVsc2UJCS8qIGp1c3Qg YSBzaW5nbGUgbnVtYmVyICovCkBAIC01NTEsOCArNTUxLDggQEAgaW50IHN0YXJvcmRpbmFyeTsJ CS8qIGlzIGEgbGVhZGluZyAqIGFuIAogCQlpZiAoIUVBVFRXTygnXFwnLCAnfScpKSB7CS8qIGVy cm9yIGhldXJpc3RpY3MgKi8KIAkJCXdoaWxlIChNT1JFKCkgJiYgIVNFRVRXTygnXFwnLCAnfScp KQogCQkJCU5FWFQoKTsKLQkJCWlmKFJFUVVJUkUoTU9SRSgpLCBSRUdfRUJSQUNFKSkge30KLQkJ CVNFVEVSUk9SKFJFR19CQURCUik7CisJCQlpZihSRVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFD RSkpIHt9CisJCQlTRVRFUlJPUihNWV9SRUdfQkFEQlIpOwogCQl9CiAJfSBlbHNlIGlmIChjID09 ICh1bnNpZ25lZCBjaGFyKSckJykJLyogJCAoYnV0IG5vdCBcJCkgZW5kcyBpdCAqLwogCQlyZXR1 cm4oMSk7CkBAIC01NzYsNyArNTc2LDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQlu ZGlnaXRzKys7CiAJfQogCi0JaWYoUkVRVUlSRShuZGlnaXRzID4gMCAmJiBjb3VudCA8PSBEVVBN QVgsIFJFR19CQURCUikpIHt9CisJaWYoUkVRVUlSRShuZGlnaXRzID4gMCAmJiBjb3VudCA8PSBE VVBNQVgsIE1ZX1JFR19CQURCUikpIHt9CiAJcmV0dXJuKGNvdW50KTsKIH0KIApAQCAtNjE2LDEy ICs2MTYsMTIgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQlwX2JfdGVybShwLCBjcyk7 CiAJaWYgKEVBVCgnLScpKQogCQlDSGFkZChjcywgJy0nKTsKLQlpZihNVVNURUFUKCddJywgUkVH X0VCUkFDSykpIHt9CisJaWYoTVVTVEVBVCgnXScsIE1ZX1JFR19FQlJBQ0spKSB7fQogCiAJaWYg KHAtPmVycm9yICE9IDApCS8qIGRvbid0IG1lc3MgdGhpbmdzIHVwIGZ1cnRoZXIgKi8KIAkJcmV0 dXJuOwogCi0JaWYgKHAtPmctPmNmbGFncyZSRUdfSUNBU0UpIHsKKwlpZiAocC0+Zy0+Y2ZsYWdz Jk1ZX1JFR19JQ0FTRSkgewogCQlyZWdpc3RlciBpbnQgaTsKIAkJcmVnaXN0ZXIgaW50IGNpOwog CkBAIC02NDIsNyArNjQyLDcgQEAgcmVnaXN0ZXIgc3RydWN0IHBhcnNlICpwOwogCQkJCUNIc3Vi KGNzLCBpKTsKIAkJCWVsc2UKIAkJCQlDSGFkZChjcywgaSk7Ci0JCWlmIChwLT5nLT5jZmxhZ3Mm UkVHX05FV0xJTkUpCisJCWlmIChwLT5nLT5jZmxhZ3MmTVlfUkVHX05FV0xJTkUpCiAJCQlDSHN1 YihjcywgJ1xuJyk7CiAJCWlmIChjcy0+bXVsdGlzICE9IE5VTEwpCiAJCQltY2ludmVydChwLCBj cyk7CkBAIC02NzYsNyArNjc2LDcgQEAgcmVnaXN0ZXIgY3NldCAqY3M7CiAJCWMgPSAoTU9SRTIo KSkgPyBQRUVLMigpIDogJ1wwJzsKIAkJYnJlYWs7CiAJY2FzZSAnLSc6Ci0JCVNFVEVSUk9SKFJF R19FUkFOR0UpOworCQlTRVRFUlJPUihNWV9SRUdfRVJBTkdFKTsKIAkJcmV0dXJuOwkJCS8qIE5P VEUgUkVUVVJOICovCiAJZGVmYXVsdDoKIAkJYyA9ICdcMCc7CkBAIC02ODYsMjEgKzY4NiwyMSBA QCByZWdpc3RlciBjc2V0ICpjczsKIAlzd2l0Y2ggKGMpIHsKIAljYXNlICc6JzoJCS8qIGNoYXJh Y3RlciBjbGFzcyAqLwogCQlORVhUMigpOwotCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VCUkFD SykpIHt9CisJCWlmKFJFUVVJUkUoTU9SRSgpLCBNWV9SRUdfRUJSQUNLKSkge30KIAkJYyA9IFBF RUsoKTsKLQkJaWYoUkVRVUlSRShjICE9ICctJyAmJiBjICE9ICddJywgUkVHX0VDVFlQRSkpIHt9 CisJCWlmKFJFUVVJUkUoYyAhPSAnLScgJiYgYyAhPSAnXScsIE1ZX1JFR19FQ1RZUEUpKSB7fQog CQlwX2JfY2NsYXNzKHAsIGNzKTsKLQkJaWYoUkVRVUlSRShNT1JFKCksIFJFR19FQlJBQ0spKSB7 fQotCQlpZihSRVFVSVJFKEVBVFRXTygnOicsICddJyksIFJFR19FQ1RZUEUpKSB7fQorCQlpZihS RVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFDSykpIHt9CisJCWlmKFJFUVVJUkUoRUFUVFdPKCc6 JywgJ10nKSwgTVlfUkVHX0VDVFlQRSkpIHt9CiAJCWJyZWFrOwogCWNhc2UgJz0nOgkJLyogZXF1 aXZhbGVuY2UgY2xhc3MgKi8KIAkJTkVYVDIoKTsKLQkJaWYoUkVRVUlSRShNT1JFKCksIFJFR19F QlJBQ0spKSB7fQorCQlpZihSRVFVSVJFKE1PUkUoKSwgTVlfUkVHX0VCUkFDSykpIHt9CiAJCWMg PSBQRUVLKCk7Ci0JCWlmKFJFUVVJUkUoYyAhPSAnLScgJiYgYyAhPSAnXScsIFJFR19FQ09MTEFU RSkpIHt9CisJCWlmKFJFUVVJUkUoYyAhPSAnLScgJiYgYyAhPSAnXScsIE1ZX1JFR19FQ09MTEFU RSkpIHt9CiAJCXBfYl9lY2xhc3MocCwgY3MpOwotCQlpZihSRVFVSVJFKE1PUkUoKSwgUkVHX0VC UkFDSykpIHt9Ci0JCWlmKFJFUVVJUkUoRUFUVFdPKCc9JywgJ10nKSwgUkVHX0VDT0xMQVRFKSkg e30KKwkJaWYoUkVRVUlSRShNT1JFKCksIE1ZX1JFR19FQlJBQ0spKSB7fQorCQlpZihSRVFVSVJF KEVBVFRXTygnPScsICddJyksIE1ZX1JFR19FQ09MTEFURSkpIHt9CiAJCWJyZWFrOwogCWRlZmF1 bHQ6CQkvKiBzeW1ib2wsIG9yZGluYXJ5IGNoYXJhY3Rlciwgb3IgcmFuZ2UgKi8KIC8qIHh4eCBy ZXZpc2lvbiBuZWVkZWQgZm9yIG11bHRpY2hhciBzdHVmZiAqLwpAQCAtNzE1LDcgKzcxNSw3IEBA IHJlZ2lzdGVyIGNzZXQgKmNzOwogCQl9IGVsc2UKIAkJCWZpbmlzaCA9IHN0YXJ0OwogLyogeHh4 IHdoYXQgYWJvdXQgc2lnbmVkIGNoYXJzIGhlcmUuLi4gKi8KLQkJaWYoUkVRVUlSRShzdGFydCA8 PSBmaW5pc2gsIFJFR19FUkFOR0UpKSB7fQorCQlpZihSRVFVSVJFKHN0YXJ0IDw9IGZpbmlzaCwg TVlfUkVHX0VSQU5HRSkpIHt9CiAJCWZvciAoaSA9IHN0YXJ0OyBpIDw9IGZpbmlzaDsgaSsrKQog CQkJQ0hhZGQoY3MsIGkpOwogCQlicmVhazsKQEAgLTc0Myw3ICs3NDMsNyBAQCByZWdpc3RlciBj c2V0ICpjczsKIAkJCWJyZWFrOwogCWlmIChjcC0+bmFtZSA9PSBOVUxMKSB7CiAJCS8qIG9vcHMs IGRpZG4ndCBmaW5kIGl0ICovCi0JCVNFVEVSUk9SKFJFR19FQ1RZUEUpOworCQlTRVRFUlJPUihN WV9SRUdfRUNUWVBFKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNzk2LDEzICs3OTYsMTMgQEAgcmVn aXN0ZXIgc3RydWN0IHBhcnNlICpwOwogewogCXJlZ2lzdGVyIGNoYXIgdmFsdWU7CiAKLQlpZihS RVFVSVJFKE1PUkUoKSwgUkVHX0VCUkFDSykpIHt9CisJaWYoUkVRVUlSRShNT1JFKCksIE1ZX1JF R19FQlJBQ0spKSB7fQogCWlmICghRUFUVFdPKCdbJywgJy4nKSkKIAkJcmV0dXJuKEdFVE5FWFQo KSk7CiAKIAkvKiBjb2xsYXRpbmcgc3ltYm9sICovCiAJdmFsdWUgPSBwX2JfY29sbF9lbGVtKHAs ICcuJyk7Ci0JaWYoUkVRVUlSRShFQVRUV08oJy4nLCAnXScpLCBSRUdfRUNPTExBVEUpKSB7fQor CWlmKFJFUVVJUkUoRUFUVFdPKCcuJywgJ10nKSwgTVlfUkVHX0VDT0xMQVRFKSkge30KIAlyZXR1 cm4odmFsdWUpOwogfQogCkBAIC04MjUsNyArODI1LDcgQEAgaW50IGVuZGM7CQkJLyogbmFtZSBl bmRlZCBieSBlbmRjLCddJyAqLwogCXdoaWxlIChNT1JFKCkgJiYgIVNFRVRXTyhlbmRjLCAnXScp KQogCQlORVhUKCk7CiAJaWYgKCFNT1JFKCkpIHsKLQkJU0VURVJST1IoUkVHX0VCUkFDSyk7CisJ CVNFVEVSUk9SKE1ZX1JFR19FQlJBQ0spOwogCQlyZXR1cm4oMCk7CiAJfQogCWxlbiA9IHAtPm5l eHQgLSBzcDsKQEAgLTgzNCw3ICs4MzQsNyBAQCBpbnQgZW5kYzsJCQkvKiBuYW1lIGVuZGVkIGJ5 IGVuZGMsJ10nICovCiAJCQlyZXR1cm4oY3AtPmNvZGUpOwkvKiBrbm93biBuYW1lICovCiAJaWYg KGxlbiA9PSAxKQogCQlyZXR1cm4oKnNwKTsJLyogc2luZ2xlIGNoYXJhY3RlciAqLwotCVNFVEVS Uk9SKFJFR19FQ09MTEFURSk7CQkJLyogbmVpdGhlciAqLworCVNFVEVSUk9SKE1ZX1JFR19FQ09M TEFURSk7CQkJLyogbmVpdGhlciAqLwogCXJldHVybigwKTsKIH0KIApAQCAtOTExLDcgKzkxMSw3 IEBAIHJlZ2lzdGVyIGludCBjaDsKIHsKIAlyZWdpc3RlciBjYXRfdCAqY2FwID0gcC0+Zy0+Y2F0 ZWdvcmllczsKIAotCWlmICgocC0+Zy0+Y2ZsYWdzJlJFR19JQ0FTRSkgJiYgbXlfaXNhbHBoYShw LT5jaGFyc2V0LGNoKSAmJiAKKwlpZiAoKHAtPmctPmNmbGFncyZNWV9SRUdfSUNBU0UpICYmIG15 X2lzYWxwaGEocC0+Y2hhcnNldCxjaCkgJiYgCiAJICAgICBvdGhlcmNhc2UocC0+Y2hhcnNldCxj aCkgIT0gY2gpCiAJCWJvdGhjYXNlcyhwLCBjaCk7CiAJZWxzZSB7CkBAIC05MjIsNyArOTIyLDcg QEAgcmVnaXN0ZXIgaW50IGNoOwogfQogCiAvKgotIC0gbm9ubmV3bGluZSAtIGVtaXQgUkVHX05F V0xJTkUgdmVyc2lvbiBvZiBPQU5ZCisgLSBub25uZXdsaW5lIC0gZW1pdCBNWV9SRUdfTkVXTElO RSB2ZXJzaW9uIG9mIE9BTlkKICA9PSBzdGF0aWMgdm9pZCBub25uZXdsaW5lKHJlZ2lzdGVyIHN0 cnVjdCBwYXJzZSAqcCk7CiAgKgogICogQm95LCBpcyB0aGlzIGltcGxlbWVudGF0aW9uIGV2ZXIg YSBrbHVkZ2UuLi4KQEAgLTEwMTQsNyArMTAxNCw3IEBAIGludCB0bzsJCQkJLyogdG8gdGhpcyBu dW1iZXIgb2YgdGltZXMgKG0KIAkJcmVwZWF0KHAsIGNvcHksIGZyb20tMSwgdG8pOwogCQlicmVh azsKIAlkZWZhdWx0OgkJCS8qICJjYW4ndCBoYXBwZW4iICovCi0JCVNFVEVSUk9SKFJFR19BU1NF UlQpOwkvKiBqdXN0IGluIGNhc2UgKi8KKwkJU0VURVJST1IoTVlfUkVHX0FTU0VSVCk7CS8qIGp1 c3QgaW4gY2FzZSAqLwogCQlicmVhazsKIAl9CiB9CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCByZWdp c3RlciBzdHJ1Y3QgcGFyc2UgKnA7CiAJCQkJCQkJCTAsIGNzcyk7CiAJCWVsc2UgewogCQkJbm8g PSAwOwotCQkJU0VURVJST1IoUkVHX0VTUEFDRSk7CisJCQlTRVRFUlJPUihNWV9SRUdfRVNQQUNF KTsKIAkJCS8qIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IG5vdCB0byBkbyBzZXQgb3BzICovCiAJ CX0KIAl9CkBAIC0xMTE1LDcgKzExMTUsNyBAQCByZWdpc3RlciBjc2V0ICpjczsKICAqCiAgKiBU aGUgbWFpbiB0YXNrIGhlcmUgaXMgbWVyZ2luZyBpZGVudGljYWwgc2V0cy4gIFRoaXMgaXMgdXN1 YWxseSBhIHdhc3RlCiAgKiBvZiB0aW1lIChhbHRob3VnaCB0aGUgaGFzaCBjb2RlIG1pbmltaXpl cyB0aGUgb3ZlcmhlYWQpLCBidXQgY2FuIHdpbgotICogYmlnIGlmIFJFR19JQ0FTRSBpcyBiZWlu ZyB1c2VkLiAgUkVHX0lDQVNFLCBieSB0aGUgd2F5LCBpcyB3aHkgdGhlIGhhc2gKKyAqIGJpZyBp ZiBNWV9SRUdfSUNBU0UgaXMgYmVpbmcgdXNlZC4gIE1ZX1JFR19JQ0FTRSwgYnkgdGhlIHdheSwg aXMgd2h5IHRoZSBoYXNoCiAgKiBpcyBkb25lIHVzaW5nIGFkZGl0aW9uIHJhdGhlciB0aGFuIHhv ciAtLSBhbGwgQVNDSUkgW2FBXSBzZXRzIHhvciB0bwogICogdGhlIHNhbWUgdmFsdWUhCiAgKi8K QEAgLTEyMDcsNyArMTIwNyw3IEBAIHJlZ2lzdGVyIGNoYXIgKmNwOwogCWVsc2UKIAkJY3MtPm11 bHRpcyA9IHJlYWxsb2MoY3MtPm11bHRpcywgY3MtPnNtdWx0aXMpOwogCWlmIChjcy0+bXVsdGlz ID09IE5VTEwpIHsKLQkJU0VURVJST1IoUkVHX0VTUEFDRSk7CisJCVNFVEVSUk9SKE1ZX1JFR19F U1BBQ0UpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCByZWdpc3RlciBz b3BubyBzaXplOwogCiAJc3AgPSAoc29wICopcmVhbGxvYyhwLT5zdHJpcCwgc2l6ZSpzaXplb2Yo c29wKSk7CiAJaWYgKHNwID09IE5VTEwpIHsKLQkJU0VURVJST1IoUkVHX0VTUEFDRSk7CisJCVNF VEVSUk9SKE1ZX1JFR19FU1BBQ0UpOwogCQlyZXR1cm47CiAJfQogCXAtPnN0cmlwID0gc3A7CkBA IC0xNDcwLDcgKzE0NzAsNyBAQCByZWdpc3RlciBzdHJ1Y3QgcmVfZ3V0cyAqZzsKIAlnLT5uc3Rh dGVzID0gcC0+c2xlbjsKIAlnLT5zdHJpcCA9IChzb3AgKilyZWFsbG9jKChjaGFyICopcC0+c3Ry aXAsIHAtPnNsZW4gKiBzaXplb2Yoc29wKSk7CiAJaWYgKGctPnN0cmlwID09IE5VTEwpIHsKLQkJ U0VURVJST1IoUkVHX0VTUEFDRSk7CisJCVNFVEVSUk9SKE1ZX1JFR19FU1BBQ0UpOwogCQlnLT5z dHJpcCA9IHAtPnN0cmlwOwogCX0KIH0KCj09PSBtb2RpZmllZCBmaWxlICdyZWdleC9yZWdlcnJv ci5jJwotLS0gYS9yZWdleC9yZWdlcnJvci5jCTIwMDUtMDktMjkgMDE6MjA6MzEgKzAwMDAKKysr IGIvcmVnZXgvcmVnZXJyb3IuYwkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC03LDQ2ICs3 LDQ2IEBACiAjaW5jbHVkZSAicmVnZXJyb3IuaWgiCiAKIC8qCi0gPSAjZGVmaW5lCVJFR19OT01B VENICSAxCi0gPSAjZGVmaW5lCVJFR19CQURQQVQJIDIKLSA9ICNkZWZpbmUJUkVHX0VDT0xMQVRF CSAzCi0gPSAjZGVmaW5lCVJFR19FQ1RZUEUJIDQKLSA9ICNkZWZpbmUJUkVHX0VFU0NBUEUJIDUK LSA9ICNkZWZpbmUJUkVHX0VTVUJSRUcJIDYKLSA9ICNkZWZpbmUJUkVHX0VCUkFDSwkgNwotID0g I2RlZmluZQlSRUdfRVBBUkVOCSA4Ci0gPSAjZGVmaW5lCVJFR19FQlJBQ0UJIDkKLSA9ICNkZWZp bmUJUkVHX0JBREJSCTEwCi0gPSAjZGVmaW5lCVJFR19FUkFOR0UJMTEKLSA9ICNkZWZpbmUJUkVH X0VTUEFDRQkxMgotID0gI2RlZmluZQlSRUdfQkFEUlBUCTEzCi0gPSAjZGVmaW5lCVJFR19FTVBU WQkxNAotID0gI2RlZmluZQlSRUdfQVNTRVJUCTE1Ci0gPSAjZGVmaW5lCVJFR19JTlZBUkcJMTYK LSA9ICNkZWZpbmUJUkVHX0FUT0kJMjU1CS8vIGNvbnZlcnQgbmFtZSB0byBudW1iZXIgKCEpCi0g PSAjZGVmaW5lCVJFR19JVE9BCTA0MDAJLy8gY29udmVydCBudW1iZXIgdG8gbmFtZSAoISkKKyA9 ICNkZWZpbmUJTVlfUkVHX05PTUFUQ0gJIDEKKyA9ICNkZWZpbmUJTVlfUkVHX0JBRFBBVAkgMgor ID0gI2RlZmluZQlNWV9SRUdfRUNPTExBVEUJIDMKKyA9ICNkZWZpbmUJTVlfUkVHX0VDVFlQRQkg NAorID0gI2RlZmluZQlNWV9SRUdfRUVTQ0FQRQkgNQorID0gI2RlZmluZQlNWV9SRUdfRVNVQlJF RwkgNgorID0gI2RlZmluZQlNWV9SRUdfRUJSQUNLCSA3CisgPSAjZGVmaW5lCU1ZX1JFR19FUEFS RU4JIDgKKyA9ICNkZWZpbmUJTVlfUkVHX0VCUkFDRQkgOQorID0gI2RlZmluZQlNWV9SRUdfQkFE QlIJMTAKKyA9ICNkZWZpbmUJTVlfUkVHX0VSQU5HRQkxMQorID0gI2RlZmluZQlNWV9SRUdfRVNQ QUNFCTEyCisgPSAjZGVmaW5lCU1ZX1JFR19CQURSUFQJMTMKKyA9ICNkZWZpbmUJTVlfUkVHX0VN UFRZCTE0CisgPSAjZGVmaW5lCU1ZX1JFR19BU1NFUlQJMTUKKyA9ICNkZWZpbmUJTVlfUkVHX0lO VkFSRwkxNgorID0gI2RlZmluZQlNWV9SRUdfQVRPSQkyNTUJLy8gY29udmVydCBuYW1lIHRvIG51 bWJlciAoISkKKyA9ICNkZWZpbmUJTVlfUkVHX0lUT0EJMDQwMAkvLyBjb252ZXJ0IG51bWJlciB0 byBuYW1lICghKQogICovCiBzdGF0aWMgc3RydWN0IHJlcnIgewogCWludCBjb2RlOwogCWNvbnN0 IGNoYXIgKm5hbWU7CiAgICAgICAgIGNvbnN0IGNoYXIgKmV4cGxhaW47CiB9IHJlcnJzW10gPSB7 Ci0Je1JFR19OT01BVENILAkiUkVHX05PTUFUQ0giLAkicmVnZXhlYygpIGZhaWxlZCB0byBtYXRj aCJ9LAotCXtSRUdfQkFEUEFULAkiUkVHX0JBRFBBVCIsCSJpbnZhbGlkIHJlZ3VsYXIgZXhwcmVz c2lvbiJ9LAotCXtSRUdfRUNPTExBVEUsCSJSRUdfRUNPTExBVEUiLAkiaW52YWxpZCBjb2xsYXRp bmcgZWxlbWVudCJ9LAotCXtSRUdfRUNUWVBFLAkiUkVHX0VDVFlQRSIsCSJpbnZhbGlkIGNoYXJh Y3RlciBjbGFzcyJ9LAotCXtSRUdfRUVTQ0FQRSwJIlJFR19FRVNDQVBFIiwJInRyYWlsaW5nIGJh Y2tzbGFzaCAoXFwpIn0sCi0Je1JFR19FU1VCUkVHLAkiUkVHX0VTVUJSRUciLAkiaW52YWxpZCBi YWNrcmVmZXJlbmNlIG51bWJlciJ9LAotCXtSRUdfRUJSQUNLLAkiUkVHX0VCUkFDSyIsCSJicmFj a2V0cyAoWyBdKSBub3QgYmFsYW5jZWQifSwKLQl7UkVHX0VQQVJFTiwJIlJFR19FUEFSRU4iLAki cGFyZW50aGVzZXMgbm90IGJhbGFuY2VkIn0sCi0Je1JFR19FQlJBQ0UsCSJSRUdfRUJSQUNFIiwJ ImJyYWNlcyBub3QgYmFsYW5jZWQifSwKLQl7UkVHX0JBREJSLAkiUkVHX0JBREJSIiwJImludmFs aWQgcmVwZXRpdGlvbiBjb3VudChzKSJ9LAotCXtSRUdfRVJBTkdFLAkiUkVHX0VSQU5HRSIsCSJp bnZhbGlkIGNoYXJhY3RlciByYW5nZSJ9LAotCXtSRUdfRVNQQUNFLAkiUkVHX0VTUEFDRSIsCSJv dXQgb2YgbWVtb3J5In0sCi0Je1JFR19CQURSUFQsCSJSRUdfQkFEUlBUIiwJInJlcGV0aXRpb24t b3BlcmF0b3Igb3BlcmFuZCBpbnZhbGlkIn0sCi0Je1JFR19FTVBUWSwJIlJFR19FTVBUWSIsCSJl bXB0eSAoc3ViKWV4cHJlc3Npb24ifSwKLQl7UkVHX0FTU0VSVCwJIlJFR19BU1NFUlQiLAkiXCJj YW4ndCBoYXBwZW5cIiAtLSB5b3UgZm91bmQgYSBidWcifSwKLQl7UkVHX0lOVkFSRywJIlJFR19J TlZBUkciLAkiaW52YWxpZCBhcmd1bWVudCB0byByZWdleCByb3V0aW5lIn0sCisJe01ZX1JFR19O T01BVENILAkiTVlfUkVHX05PTUFUQ0giLAkicmVnZXhlYygpIGZhaWxlZCB0byBtYXRjaCJ9LAor CXtNWV9SRUdfQkFEUEFULAkiTVlfUkVHX0JBRFBBVCIsCSJpbnZhbGlkIHJlZ3VsYXIgZXhwcmVz c2lvbiJ9LAorCXtNWV9SRUdfRUNPTExBVEUsCSJNWV9SRUdfRUNPTExBVEUiLAkiaW52YWxpZCBj b2xsYXRpbmcgZWxlbWVudCJ9LAorCXtNWV9SRUdfRUNUWVBFLAkiTVlfUkVHX0VDVFlQRSIsCSJp bnZhbGlkIGNoYXJhY3RlciBjbGFzcyJ9LAorCXtNWV9SRUdfRUVTQ0FQRSwJIk1ZX1JFR19FRVND QVBFIiwJInRyYWlsaW5nIGJhY2tzbGFzaCAoXFwpIn0sCisJe01ZX1JFR19FU1VCUkVHLAkiTVlf UkVHX0VTVUJSRUciLAkiaW52YWxpZCBiYWNrcmVmZXJlbmNlIG51bWJlciJ9LAorCXtNWV9SRUdf RUJSQUNLLAkiTVlfUkVHX0VCUkFDSyIsCSJicmFja2V0cyAoWyBdKSBub3QgYmFsYW5jZWQifSwK Kwl7TVlfUkVHX0VQQVJFTiwJIk1ZX1JFR19FUEFSRU4iLAkicGFyZW50aGVzZXMgbm90IGJhbGFu Y2VkIn0sCisJe01ZX1JFR19FQlJBQ0UsCSJNWV9SRUdfRUJSQUNFIiwJImJyYWNlcyBub3QgYmFs YW5jZWQifSwKKwl7TVlfUkVHX0JBREJSLAkiTVlfUkVHX0JBREJSIiwJImludmFsaWQgcmVwZXRp dGlvbiBjb3VudChzKSJ9LAorCXtNWV9SRUdfRVJBTkdFLAkiTVlfUkVHX0VSQU5HRSIsCSJpbnZh bGlkIGNoYXJhY3RlciByYW5nZSJ9LAorCXtNWV9SRUdfRVNQQUNFLAkiTVlfUkVHX0VTUEFDRSIs CSJvdXQgb2YgbWVtb3J5In0sCisJe01ZX1JFR19CQURSUFQsCSJNWV9SRUdfQkFEUlBUIiwJInJl cGV0aXRpb24tb3BlcmF0b3Igb3BlcmFuZCBpbnZhbGlkIn0sCisJe01ZX1JFR19FTVBUWSwJIk1Z X1JFR19FTVBUWSIsCSJlbXB0eSAoc3ViKWV4cHJlc3Npb24ifSwKKwl7TVlfUkVHX0FTU0VSVCwJ Ik1ZX1JFR19BU1NFUlQiLAkiXCJjYW4ndCBoYXBwZW5cIiAtLSB5b3UgZm91bmQgYSBidWcifSwK Kwl7TVlfUkVHX0lOVkFSRywJIk1ZX1JFR19JTlZBUkciLAkiaW52YWxpZCBhcmd1bWVudCB0byBy ZWdleCByb3V0aW5lIn0sCiAJezAsCQkiIiwJCSIqKiogdW5rbm93biByZWdleHAgZXJyb3IgY29k ZSAqKioifSwKIH07CiAKQEAgLTYwLDIyICs2MCwyMiBAQCBteV9yZWdlcnJvcihpbnQgZXJyY29k ZSwgY29uc3QgbXlfcmVnZXhfCiB7CiAJcmVnaXN0ZXIgc3RydWN0IHJlcnIgKnI7CiAJcmVnaXN0 ZXIgc2l6ZV90IGxlbjsKLQlyZWdpc3RlciBpbnQgdGFyZ2V0ID0gZXJyY29kZSAmfiBSRUdfSVRP QTsKKwlyZWdpc3RlciBpbnQgdGFyZ2V0ID0gZXJyY29kZSAmfiBNWV9SRUdfSVRPQTsKIAlyZWdp c3RlciBjaGFyICpzOwogCWNoYXIgY29udmJ1Zls1MF07CiAKLQlpZiAoZXJyY29kZSA9PSBSRUdf QVRPSSkKKwlpZiAoZXJyY29kZSA9PSBNWV9SRUdfQVRPSSkKIAkJcyA9IHJlZ2F0b2kocHJlZywg Y29udmJ1Zik7CiAJZWxzZSB7CiAJCWZvciAociA9IHJlcnJzOyByLT5jb2RlICE9IDA7IHIrKykK IAkJCWlmIChyLT5jb2RlID09IHRhcmdldCkKIAkJCQlicmVhazsKIAotCQlpZiAoZXJyY29kZSZS RUdfSVRPQSkgeworCQlpZiAoZXJyY29kZSZNWV9SRUdfSVRPQSkgewogCQkJaWYgKHItPmNvZGUg IT0gMCkKIAkJCQkodm9pZCkgc3RyY3B5KGNvbnZidWYsIHItPm5hbWUpOwogCQkJZWxzZQotCQkJ CXNwcmludGYoY29udmJ1ZiwgIlJFR18weCV4IiwgdGFyZ2V0KTsKKwkJCQlzcHJpbnRmKGNvbnZi dWYsICJNWV9SRUdfMHgleCIsIHRhcmdldCk7CiAJCQlhc3NlcnQoc3RybGVuKGNvbnZidWYpIDwg c2l6ZW9mKGNvbnZidWYpKTsKIAkJCXMgPSBjb252YnVmOwogCQl9IGVsc2UKQEAgLTk2LDcgKzk2 LDcgQEAgbXlfcmVnZXJyb3IoaW50IGVycmNvZGUsIGNvbnN0IG15X3JlZ2V4XwogfQogCiAvKgot IC0gcmVnYXRvaSAtIGludGVybmFsIHJvdXRpbmUgdG8gaW1wbGVtZW50IFJFR19BVE9JCisgLSBy ZWdhdG9pIC0gaW50ZXJuYWwgcm91dGluZSB0byBpbXBsZW1lbnQgTVlfUkVHX0FUT0kKICA9PSBz dGF0aWMgY2hhciAqcmVnYXRvaShjb25zdCByZWdleF90ICpwcmVnLCBjaGFyICpsb2NhbGJ1Zik7 CiAgKi8KIHN0YXRpYyBjaGFyICoKCj09PSBtb2RpZmllZCBmaWxlICdyZWdleC9yZWdleDIuaCcK LS0tIGEvcmVnZXgvcmVnZXgyLmgJMjAwOS0xMS0wOSAxMTozMjo0OCArMDAwMAorKysgYi9yZWdl eC9yZWdleDIuaAkyMDEwLTA3LTI2IDEwOjM5OjM4ICswMDAwCkBAIC0xLDE1ICsxLDE1IEBACiAv KgogICogRmlyc3QsIHRoZSBzdHVmZiB0aGF0IGVuZHMgdXAgaW4gdGhlIG91dHNpZGUtd29ybGQg aW5jbHVkZSBmaWxlCi0gPSB0eXBlZGVmIG9mZl90IHJlZ29mZl90OworID0gdHlwZWRlZiBvZmZf dCBteV9yZWdvZmZfdDsKICA9IHR5cGVkZWYgc3RydWN0IHsKICA9IAlpbnQgcmVfbWFnaWM7CiAg PSAJc2l6ZV90IHJlX25zdWI7CQkvLyBudW1iZXIgb2YgcGFyZW50aGVzaXplZCBzdWJleHByZXNz aW9ucwotID0gCWNvbnN0IGNoYXIgKnJlX2VuZHA7CS8vIGVuZCBwb2ludGVyIGZvciBSRUdfUEVO RAorID0gCWNvbnN0IGNoYXIgKnJlX2VuZHA7CS8vIGVuZCBwb2ludGVyIGZvciBNWV9SRUdfUEVO RAogID0gCXN0cnVjdCByZV9ndXRzICpyZV9nOwkvLyBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0p CiAgPSB9IHJlZ2V4X3Q7CiAgPSB0eXBlZGVmIHN0cnVjdCB7Ci0gPSAJcmVnb2ZmX3Qgcm1fc287 CQkvLyBzdGFydCBvZiBtYXRjaAotID0gCXJlZ29mZl90IHJtX2VvOwkJLy8gZW5kIG9mIG1hdGNo CisgPSAJbXlfcmVnb2ZmX3Qgcm1fc287CQkvLyBzdGFydCBvZiBtYXRjaAorID0gCW15X3JlZ29m Zl90IHJtX2VvOwkJLy8gZW5kIG9mIG1hdGNoCiAgPSB9IHJlZ21hdGNoX3Q7CiAgKi8KIC8qCgo9 PT0gbW9kaWZpZWQgZmlsZSAncmVnZXgvcmVnZXhlYy5jJwotLS0gYS9yZWdleC9yZWdleGVjLmMJ MjAwNy0wMy0yOCAxNzo0Njo0MiArMDAwMAorKysgYi9yZWdleC9yZWdleGVjLmMJMjAxMC0wNy0y NiAxMDozOTozOCArMDAwMApAQCAtNzYsNyArNzYsNyBAQAogI2RlZmluZQlFUShhLCBiKQkobWVt Y21wKGEsIGIsIG0tPmctPm5zdGF0ZXMpID09IDApCiAjZGVmaW5lCVNUQVRFVkFSUwlpbnQgdm47 IGNoYXIgKnNwYWNlCiAjZGVmaW5lCVNUQVRFU0VUVVAobSwgbnYpCXsgKG0pLT5zcGFjZSA9IG1h bGxvYygobnYpKihtKS0+Zy0+bnN0YXRlcyk7IFwKLQkJCQlpZiAoKG0pLT5zcGFjZSA9PSBOVUxM KSByZXR1cm4oUkVHX0VTUEFDRSk7IFwKKwkJCQlpZiAoKG0pLT5zcGFjZSA9PSBOVUxMKSByZXR1 cm4oTVlfUkVHX0VTUEFDRSk7IFwKIAkJCQkobSktPnZuID0gMDsgfQogI2RlZmluZQlTVEFURVRF QVJET1dOKG0pCXsgZnJlZSgobSktPnNwYWNlKTsgfQogI2RlZmluZQlTRVRVUCh2KQkoKHYpID0g Jm0tPnNwYWNlW20tPnZuKysgKiBtLT5nLT5uc3RhdGVzXSkKQEAgLTk4LDE4ICs5OCwxOCBAQAog IC0gcmVnZXhlYyAtIGludGVyZmFjZSBmb3IgbWF0Y2hpbmcKICA9IGV4dGVybiBpbnQgcmVnZXhl Yyhjb25zdCByZWdleF90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBcCiAgPQkJCQkJcmVnbWF0 Y2hfdCBbXSwgaW50KTsKLSA9ICNkZWZpbmUJUkVHX05PVEJPTAkwMDAwMQotID0gI2RlZmluZQlS RUdfTk9URU9MCTAwMDAyCi0gPSAjZGVmaW5lCVJFR19TVEFSVEVORAkwMDAwNAotID0gI2RlZmlu ZQlSRUdfVFJBQ0UJMDA0MDAJLy8gdHJhY2luZyBvZiBleGVjdXRpb24KLSA9ICNkZWZpbmUJUkVH X0xBUkdFCTAxMDAwCS8vIGZvcmNlIGxhcmdlIHJlcHJlc2VudGF0aW9uCi0gPSAjZGVmaW5lCVJF R19CQUNLUgkwMjAwMAkvLyBmb3JjZSB1c2Ugb2YgYmFja3JlZiBjb2RlCisgPSAjZGVmaW5lCU1Z X1JFR19OT1RCT0wJMDAwMDEKKyA9ICNkZWZpbmUJTVlfUkVHX05PVEVPTAkwMDAwMgorID0gI2Rl ZmluZQlNWV9SRUdfU1RBUlRFTkQJMDAwMDQKKyA9ICNkZWZpbmUJTVlfUkVHX1RSQUNFCTAwNDAw CS8vIHRyYWNpbmcgb2YgZXhlY3V0aW9uCisgPSAjZGVmaW5lCU1ZX1JFR19MQVJHRQkwMTAwMAkv LyBmb3JjZSBsYXJnZSByZXByZXNlbnRhdGlvbgorID0gI2RlZmluZQlNWV9SRUdfQkFDS1IJMDIw MDAJLy8gZm9yY2UgdXNlIG9mIGJhY2tyZWYgY29kZQogICoKICAqIFdlIHB1dCB0aGlzIGhlcmUg c28gd2UgY2FuIGV4cGxvaXQga25vd2xlZGdlIG9mIHRoZSBzdGF0ZSByZXByZXNlbnRhdGlvbgog ICogd2hlbiBjaG9vc2luZyB3aGljaCBtYXRjaGVyIHRvIGNhbGwuICBBbHNvLCBieSB0aGlzIHBv aW50IHRoZSBtYXRjaGVycwogICogaGF2ZSBiZWVuIHByb3RvdHlwZWQuCiAgKi8KLWludAkJCQkv KiAwIHN1Y2Nlc3MsIFJFR19OT01BVENIIGZhaWx1cmUgKi8KK2ludAkJCQkvKiAwIHN1Y2Nlc3Ms IE1ZX1JFR19OT01BVENIIGZhaWx1cmUgKi8KIG15X3JlZ2V4ZWMocHJlZywgc3RyLCBubWF0Y2gs IHBtYXRjaCwgZWZsYWdzKQogY29uc3QgbXlfcmVnZXhfdCAqcHJlZzsKIGNvbnN0IGNoYXIgKnN0 cjsKQEAgLTEyMSwxOCArMTIxLDE4IEBAIGludCBlZmxhZ3M7CiAjaWZkZWYgUkVERUJVRwogIwlk ZWZpbmUJR09PREZMQUdTKGYpCShmKQogI2Vsc2UKLSMJZGVmaW5lCUdPT0RGTEFHUyhmKQkoKGYp JihSRUdfTk9UQk9MfFJFR19OT1RFT0x8UkVHX1NUQVJURU5EKSkKKyMJZGVmaW5lCUdPT0RGTEFH UyhmKQkoKGYpJihNWV9SRUdfTk9UQk9MfE1ZX1JFR19OT1RFT0x8TVlfUkVHX1NUQVJURU5EKSkK ICNlbmRpZgogCiAJaWYgKHByZWctPnJlX21hZ2ljICE9IE1BR0lDMSB8fCBnLT5tYWdpYyAhPSBN QUdJQzIpCi0JCXJldHVybihSRUdfQkFEUEFUKTsKKwkJcmV0dXJuKE1ZX1JFR19CQURQQVQpOwog CWFzc2VydCghKGctPmlmbGFncyZCQUQpKTsKIAlpZiAoZy0+aWZsYWdzJkJBRCkJCS8qIGJhY2tz dG9wIGZvciBuby1kZWJ1ZyBjYXNlICovCi0JCXJldHVybihSRUdfQkFEUEFUKTsKKwkJcmV0dXJu KE1ZX1JFR19CQURQQVQpOwogCWVmbGFncyA9IEdPT0RGTEFHUyhlZmxhZ3MpOwogCiAJaWYgKChz aXplX3QpIGctPm5zdGF0ZXMgPD0gQ0hBUl9CSVQqc2l6ZW9mKHN0YXRlczEpICYmCi0JICAgICEo ZWZsYWdzJlJFR19MQVJHRSkpCisJICAgICEoZWZsYWdzJk1ZX1JFR19MQVJHRSkpCiAJCXJldHVy bihzbWF0Y2hlcihwcmVnLT5jaGFyc2V0LCBnLCAoY2hhciAqKXN0ciwgbm1hdGNoLCBwbWF0Y2gs IGVmbGFncykpOwogCWVsc2UKIAkJcmV0dXJuKGxtYXRjaGVyKHByZWctPmNoYXJzZXQsIGcsIChj aGFyICopc3RyLCBubWF0Y2gsIHBtYXRjaCwgZWZsYWdzKSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn cmVnZXgvdGVzdHMnCi0tLSBhL3JlZ2V4L3Rlc3RzCTIwMDAtMDctMzEgMTk6Mjk6MTQgKzAwMDAK KysrIGIvcmVnZXgvdGVzdHMJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtMjgzLDcgKzI4 MywxMCBAQCBhW1s6YWxwaDpdXQkmQwlFQ1RZUEUKIGFbWzphbHBoYWJldDpdXQkmQwlFQ1RZUEUK IFtbOmFsbnVtOl1dKwktCS0lQGHvv70tCWHvv70KIFtbOmFscGhhOl1dKwktCS0lQGFYMC0JYVgK LVtbOmJsYW5rOl1dKwktCWFTU1RiCVNTVAorIyBjdHlwZV9sYXRpbjEgZG9lcyBub3QgdGFnICdc dCcgYXMgYmxhbmssIHNvIHdlIHdpbGwgbWF0Y2ggb25seSB0d28gc3BhY2VzLgorIyBTZWU6IEJ1 ZyAjNTU0MjcgUkVHRVhQIGRvZXMgbm90IHJlY29nbml6ZSAnXHQnIGFzIFs6Ymxhbms6XQorI1tb OmJsYW5rOl1dKwktCWFTU1RiCVNTVAorW1s6Ymxhbms6XV0rCS0JYVNTVGIJU1MKIFtbOmNudHJs Ol1dKwktCWFOVGIJTlQKIFtbOmRpZ2l0Ol1dKwktCWEwMTliCTAxOQogW1s6Z3JhcGg6XV0rCS0J U2ElYlMJYSViCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2l0ZW1fY21wZnVuYy5jYycKLS0tIGEv c3FsL2l0ZW1fY21wZnVuYy5jYwkyMDEwLTA3LTIzIDIwOjU5OjQyICswMDAwCisrKyBiL3NxbC9p dGVtX2NtcGZ1bmMuY2MJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtNDc5NSw4ICs0Nzk1 LDggQEAgSXRlbV9mdW5jX3JlZ2V4OjpmaXhfZmllbGRzKFRIRCAqdGhkLCBJdAogCiAgIHJlZ2V4 X2xpYl9mbGFncz0gKGNtcF9jb2xsYXRpb24uY29sbGF0aW9uLT5zdGF0ZSAmCiAgICAgICAgICAg ICAgICAgICAgIChNWV9DU19CSU5TT1JUIHwgTVlfQ1NfQ1NTT1JUKSkgPwotICAgICAgICAgICAg ICAgICAgIFJFR19FWFRFTkRFRCB8IFJFR19OT1NVQiA6Ci0gICAgICAgICAgICAgICAgICAgUkVH X0VYVEVOREVEIHwgUkVHX05PU1VCIHwgUkVHX0lDQVNFOworICAgICAgICAgICAgICAgICAgIE1Z X1JFR19FWFRFTkRFRCB8IE1ZX1JFR19OT1NVQiA6CisgICAgICAgICAgICAgICAgICAgTVlfUkVH X0VYVEVOREVEIHwgTVlfUkVHX05PU1VCIHwgTVlfUkVHX0lDQVNFOwogICAvKgogICAgIElmIHRo ZSBjYXNlIG9mIFVDUzIgYW5kIG90aGVyIG5vbi1BU0NJSSBjaGFyYWN0ZXIgc2V0cywKICAgICB3 ZSB3aWxsIGNvbnZlcnQgcGF0dGVybnMgYW5kIHN0cmluZ3MgdG8gVVRGOC4KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2hlYXAvaHBfdGVzdDIuYycKLS0tIGEvc3RvcmFnZS9oZWFwL2hwX3Rl c3QyLmMJMjAxMC0wNy0yMyAyMDowOToyNyArMDAwMAorKysgYi9zdG9yYWdlL2hlYXAvaHBfdGVz dDIuYwkyMDEwLTA3LTI2IDExOjE3OjM5ICswMDAwCkBAIC0zODUsNyArMzg1LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgewogICAgIGlmICghZXJyb3IpCiAgICAgICBw b3MtLTsKLSAgICBpZiAoaS0tID09IDApCisgICAgaWYgKCFlcnJvciAmJiAoaS0tID09IDApKQog ICAgIHsKICAgICAgIGJtb3ZlKHJlY29yZDMscmVjb3JkLHJlY2xlbmd0aCk7CiAgICAgICBwb3Np dGlvbj1oZWFwX3Bvc2l0aW9uKGZpbGUpOwpAQCAtNTkzLDYgKzU5Myw3IEBAIGVuZDoKICAgcHJp bnRmKCJcbkZvbGxvd2luZyB0ZXN0IGhhdmUgYmVlbiBtYWRlOlxuIik7CiAgIHByaW50ZigiV3Jp dGUgcmVjb3JkczogJWRcblVwZGF0ZSByZWNvcmRzOiAlZFxuRGVsZXRlIHJlY29yZHM6ICVkXG4i LCB3cml0ZV9jb3VudCx1cGRhdGUsb3B0X2RlbGV0ZSk7CiAgIGhlYXBfY2xlYXIoZmlsZSk7Cisg IGhlYXBfY2xlYXIoZmlsZTIpOwogICBpZiAoaGVhcF9jbG9zZShmaWxlKSB8fCAoZmlsZTIgJiYg aGVhcF9jbG9zZShmaWxlMikpKQogICAgIGdvdG8gZXJyOwogICBoZWFwX2RlbGV0ZV90YWJsZShm aWxlbmFtZTIpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3VuaXR0ZXN0L2d1bml0L0NNYWtlTGlzdHMu dHh0JwotLS0gYS91bml0dGVzdC9ndW5pdC9DTWFrZUxpc3RzLnR4dAkyMDEwLTA2LTE4IDA5OjA5 OjQwICswMDAwCisrKyBiL3VuaXR0ZXN0L2d1bml0L0NNYWtlTGlzdHMudHh0CTIwMTAtMDctMjYg MTA6Mzk6MzggKzAwMDAKQEAgLTE4NSw2ICsxODUsNyBAQCBFTkRJRigpCiBJTkNMVURFX0RJUkVD VE9SSUVTKAogICAke0dURVNUX0lOQ0xVREVfRElSU30KICAgJHtDTUFLRV9TT1VSQ0VfRElSfS9p bmNsdWRlCisgICR7Q01BS0VfU09VUkNFX0RJUn0vcmVnZXgKICAgJHtDTUFLRV9TT1VSQ0VfRElS fS9zcWwKICAgJHtDTUFLRV9TT1VSQ0VfRElSfS91bml0dGVzdC9teXRhcAogKQpAQCAtMjA2LDcg KzIwNyw3IEBAIElGIChDTUFLRV9DWFhfQ09NUElMRVJfSUQgU1RSRVFVQUwgIlN1blAKIEVORElG KCkKIAogIyBBZGQgdGVzdHMgKGxpbmsgdGhlbSB3aXRoIHNxbCBsaWJyYXJ5KSAKLVNFVChURVNU UyBzcWxfbGlzdCBtZGwgbWRsX215dGFwIHRocmVhZF91dGlscykKK1NFVChURVNUUyBzcWxfbGlz dCBtZGwgbWRsX215dGFwIG15X3JlZ2V4IHRocmVhZF91dGlscykKIEZPUkVBQ0godGVzdCAke1RF U1RTfSkKICAgQUREX0VYRUNVVEFCTEUoJHt0ZXN0fS10ICR7dGVzdH0tdC5jYykKICAgVEFSR0VU X0xJTktfTElCUkFSSUVTKCR7dGVzdH0tdCBndW5pdCBzcWwpCgo9PT0gYWRkZWQgZmlsZSAndW5p dHRlc3QvZ3VuaXQvbXlfcmVnZXgtdC5jYycKLS0tIGEvdW5pdHRlc3QvZ3VuaXQvbXlfcmVnZXgt dC5jYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL3VuaXR0ZXN0L2d1bml0L215X3Jl Z2V4LXQuY2MJMjAxMC0wNy0yNiAxMDozOTozOCArMDAwMApAQCAtMCwwICsxLDgyIEBACisvKiBD b3B5cmlnaHQgKGMpIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuIAorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAg VVNBICovCisKKy8vIE11c3QgaW5jbHVkZSBndGVzdCBmaXJzdCwgc2luY2UgTXlTUUwgc291cmNl IGhhcyBtYWNyb3MgZm9yIG1pbigpIGV0YyAuLi4uCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K KworI2luY2x1ZGUgIm15X3JlZ2V4LmgiCisKKy8qCisgIFRoaXN0IGlzIGp1c3QgYSAqdmVyeSog YmFzaWMgdGVzdCB0aGF0IHRoaW5ncyBjb21waWxlL2xpbmsgYW5kIGV4ZWN1dGUuCisgIFRoZSB0 ZXN0IGRhdGEgaXMgdGFrZW4gZnJvbSB0aGUgZmlyc3QgZmV3IGxpbmVzIGluIHJlZ2V4L3Rlc3Rz LgorICBGb3IgYSBmdWxsIHRlc3Qgc3VpdGUsIHNlZSByZWdleC9tYWluLmMgd2hpY2ggcGFyc2Vz IHRlc3QgaW5wdXQKKyAgYW5kIHRlc3RzIGV4cGVjdGVkIHN1Y2Vzcy9mYWlsdXJlIHdpdGggYmFz aWMvZXh0ZW5kZWQgcmVnZXhwcyBldGMuIGV0Yy4KKyAqLworCituYW1lc3BhY2UgeworCitjb25z dCBpbnQgTlNVQlM9IDEwOworCitjbGFzcyBSZWdleF90ZXN0IDogcHVibGljIDo6dGVzdGluZzo6 VGVzdAoreworcHJvdGVjdGVkOgorICBSZWdleF90ZXN0KCkKKyAgeworICAgIG1lbXNldCgmcmUs IDAsIHNpemVvZihyZSkpOworICB9CisgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2UoKQor ICB7CisgICAgbXlfcmVnZXhfZW5kKCk7CisgIH0KKworICBteV9yZWdtYXRjaF90IHN1YnNbTlNV QlNdOworICBteV9yZWdleF90IHJlOworfTsKKworc3RydWN0IFJlX3Rlc3RfZGF0YQoreworICBj b25zdCBjaGFyKiBwYXR0ZXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29sdW1uIDEg aW4gcmVnZXgvdGVzdHMuCisgIGNvbnN0IGludCAgIGNmbGFnczsgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBDb2x1bW4gMiBpbiByZWdleC90ZXN0cy4KKyAgY29uc3QgY2hhciogaW5wdXQ7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbHVtbiAzIGluIHJlZ2V4L3Rlc3RzLgor fTsKKworUmVfdGVzdF9kYXRhIGJhc2ljX2RhdGFbXT0gCit7CisgIHsgImEiLCAgICAgIE1ZX1JF R19CQVNJQywgICAgImEiICAgfSwKKyAgeyAiYWJjIiwgICAgTVlfUkVHX0JBU0lDLCAgICAiYWJj IiB9LAorICB7ICJhYmN8ZGUiLCBNWV9SRUdfRVhURU5ERUQsICJhYmMiIH0sCisgIHsgImF8Ynxj IiwgIE1ZX1JFR19FWFRFTkRFRCwgImFiYyIgfSwKKyAgeyBOVUxMLCAwLCBOVUxMIH0KK307CisK K1RFU1RfRihSZWdleF90ZXN0LCBiYXNpY190ZXN0KQoreworICBmb3IgKGludCBpeD0wOyBiYXNp Y19kYXRhW2l4XS5wYXR0ZXJuOyArK2l4KQorICB7CisgICAgRVhQRUNUX0VRKDAsIG15X3JlZ2Nv bXAoJnJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ljX2RhdGFbaXhdLnBhdHRl cm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaWNfZGF0YVtpeF0uY2ZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZteV9jaGFyc2V0X2xhdGluMSkpOworCisgICAg aW50IGVycj0gbXlfcmVnZXhlYygmcmUsIGJhc2ljX2RhdGFbaXhdLmlucHV0LCBOU1VCUywgc3Vi cywgMCk7CisgICAgRVhQRUNUX0VRKDAsIGVycikKKyAgICAgIDw8ICJteV9yZWdleGVjIHJldHVy bmVkICIgPDwgZXJyCisgICAgICA8PCAiIGZvciBwYXR0ZXJuICciIDw8IGJhc2ljX2RhdGFbaXhd LnBhdHRlcm4gPDwgIiciCisgICAgICA8PCAiIHdpdGggaW5wdXQgJyIgPDwgYmFzaWNfZGF0YVtp eF0uaW5wdXQgPDwgIiciOworICAgIG15X3JlZ2ZyZWUoJnJlKTsKKyAgfQorfQorCit9ICAvLyBu YW1lc3BhY2UKCg== --===============2842715590870444335== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/tor.didriksen@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: tor.didriksen@stripped\ # 0p3udx197422llkc # target_branch: file:///export/home/didrik/repo/next-mr-bf-bug54805-\ # pp/ # testament_sha1: eb60e58602a5f5fb954eb41c2bba2a2148898670 # timestamp: 2010-07-26 15:01:09 +0200 # base_revision_id: alik@stripped # # Begin bundle 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 --===============2842715590870444335==--