ZGlmZiAtLWdpdCBhL3NyYy9kaWdyYXBoLmMgYi9zcmMvZGlncmFwaC5jCmluZGV4IDQwN2I0NWYuLmQ5MzYxMzYgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdyYXBoLmMKKysrIGIvc3JjL2RpZ3JhcGguYwpAQCAtMTUsMTEgKzE1LDcgQEAKIAogI2lmIGRlZmluZWQoRkVBVF9ESUdSQVBIUykgfHwgZGVmaW5lZChQUk9UTykKIAotI2lmZGVmIEZFQVRfTUJZVEUKIHR5cGVkZWYgaW50IHJlc3VsdF9UOwotI2Vsc2UKLXR5cGVkZWYgY2hhcl91IHJlc3VsdF9UOwotI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IGRpZ3JhcGgKIHsKQEAgLTM4LDggKzM0LDggQEAKICAqIGNvbXBpbGVycyBjYW5ub3QgaGFuZGxlIHRoZW0gKEFtaWdhIFNBUy9DIGlzIHRoZSBtb3N0IHBpY2t5IG9uZSkuCiAgKi8KIHN0YXRpYyBkaWdyX1QgZGlncmFwaGRlZmF1bHRbXSA9Ci0jaWZkZWYgX19NSU5UX18KIAorI2lmZGVmIF9fTUlOVF9fCiAJLyoKIAkgKiBBVEFSSSBkaWdyYXBocwogCSAqLwpAQCAtMzIwLDEzNyArMzE2LDcgQEAKIAl9OwogCiAjICBlbHNlCi0jICAgaWYgZGVmaW5lZChNQUNPU19YKSAmJiAhZGVmaW5lZChGRUFUX01CWVRFKQotCi0JLyoKLQkgKiBNYWNpbnRvc2ggZGlncmFwaHMKLQkgKi8KLSAgICAgICB7eydhJywgJ3QnLCA2NH0sCQkvKiBAICovCi0JeydBJywgJyInLCAxMjh9LAkvKiB+QCBYWCAqLwotCXsnQScsICdvJywgMTI5fSwJLyogxSAqLwotCXsnQycsICcsJywgMTMwfSwJLyogxyAqLwotCXsnRScsICdcJycsIDEzMX0sCS8qIMkgKi8KLQl7J04nLCAnficsIDEzMn0sCS8qINEgKi8KLQl7J08nLCAnIicsIDEzM30sCS8qINYgKi8KLQl7J1UnLCAnIicsIDEzNH0sCS8qINwgKi8KLQl7J2EnLCAnXCcnLCAxMzV9LAkvKiB+RyBYWCAqLwotCXsnYScsICdgJywgMTM2fSwJLyogfkggWFggKi8KLQl7J2EnLCAnXicsIDEzN30sCS8qIOIgKi8KLQl7J2EnLCAnIicsIDEzOH0sCS8qIOQgKi8KLQl7J2EnLCAnficsIDEzOX0sCS8qIOMgKi8KLQl7J2EnLCAnbycsIDE0MH0sCS8qIOUgKi8KLQl7J2MnLCAnLCcsIDE0MX0sCS8qIOcgKi8KLQl7J2UnLCAnXCcnLCAxNDJ9LAkvKiDpICovCi0JeydlJywgJ2AnLCAxNDN9LAkvKiDoICovCi0JeydlJywgJ14nLCAxNDR9LAkvKiDqICovCi0JeydlJywgJyInLCAxNDV9LAkvKiDrICovCi0JeydpJywgJ1wnJywgMTQ2fSwJLyog7SAqLwotCXsnaScsICdgJywgMTQ3fSwJLyog7CAqLwotCXsnaScsICdeJywgMTQ4fSwJLyog7iAqLwotCXsnaScsICciJywgMTQ5fSwJLyog7yAqLwotCXsnbicsICd+JywgMTUwfSwJLyog8SAqLwotCXsnbycsICdcJycsIDE1MX0sCS8qIPMgKi8KLQl7J28nLCAnYCcsIDE1Mn0sCS8qIPIgKi8KLQl7J28nLCAnXicsIDE1M30sCS8qIPQgKi8KLQl7J28nLCAnIicsIDE1NH0sCS8qIPYgKi8KLQl7J28nLCAnficsIDE1NX0sCS8qIG8gKi8KLQl7J3UnLCAnXCcnLCAxNTZ9LAkvKiD6ICovCi0Jeyd1JywgJ2AnLCAxNTd9LAkvKiB+XSBYWCAqLwotCXsndScsICdeJywgMTU4fSwJLyog+yAqLwotCXsndScsICciJywgMTU5fSwJLyog/CAqLwotCXsnKycsICdfJywgMTYwfSwJLyog3SAqLwotCXsnficsICdvJywgMTYxfSwJLyogsCAqLwotCXsnYycsICd8JywgMTYyfSwJLyogoiAqLwotCXsnJCcsICckJywgMTYzfSwJLyogoyAqLwotCXsncCcsICdhJywgMTY0fSwJLyogpyAqLwotCXsnLicsICcuJywgMTY1fSwJLyogKiAqLwotCXsnUCcsICdQJywgMTY2fSwJLyogtiAqLwotCXsncycsICdzJywgMTY3fSwJLyog3yAqLwotCXsncicsICdPJywgMTY4fSwJLyogriAqLwotCXsnYycsICdPJywgMTY5fSwJLyogqSAqLwotCXsnVCcsICdNJywgMTcwfSwJLyoggSAqLwotCXsnPScsICcvJywgMTczfSwJLyoggiAqLwotCXsnQScsICdFJywgMTc0fSwJLyogxiAqLwotCXsnTycsICcvJywgMTc1fSwJLyog2CAqLwotCXsnMCcsICcwJywgMTc2fSwJLyoggyAqLwotCXsnKycsICctJywgMTc3fSwJLyogsSAqLwotCXsnPCcsICc9JywgMTc4fSwJLyogviAqLwotCXsnPicsICc9JywgMTc5fSwJLyoghCAqLwotCXsnWScsICctJywgMTgwfSwJLyogpSAqLwotCXsnaicsICd1JywgMTgxfSwJLyogtSAqLwotCXsnbScsICd1JywgMTgxfSwJLyogtSAqLwotCXsnZCcsICdkJywgMTgyfSwJLyogjyAqLwotCXsnUycsICdTJywgMTgzfSwJLyoghSAqLwotCXsnUycsICdJJywgMTgzfSwJLyoghSAqLwotCXsnUCcsICdJJywgMTg0fSwJLyogvSAqLwotCXsncCcsICdpJywgMTg1fSwJLyogvCAqLwotCXsnSScsICdJJywgMTg2fSwJLyoghiAqLwotCXsnYScsICctJywgMTg3fSwJLyoguyAqLwotCXsnbycsICctJywgMTg4fSwJLyoguiAqLwotCXsnTycsICdNJywgMTg5fSwJLyogvSAqLwotCXsnYScsICdlJywgMTkwfSwJLyog5iAqLwotCXsnbycsICcvJywgMTkxfSwJLyog+CAqLwotCXsnficsICc/JywgMTkyfSwJLyogvyAqLwotCXsnficsICchJywgMTkzfSwJLyogoSAqLwotCXsnLScsICcsJywgMTk0fSwJLyogrCAqLwotCXsndicsICctJywgMTk1fSwJLyogfkggWFggKi8KLQl7J2YnLCAnLScsIDE5Nn0sCS8qIJ8gKi8KLQl7J34nLCAnficsIDE5N30sCS8qIIkgKi8KLQl7J0QnLCAnRScsIDE5OH0sCS8qIJAgKi8KLQl7JzwnLCAnPCcsIDE5OX0sCS8qIKsgKi8KLQl7Jz4nLCAnPicsIDIwMH0sCS8qILsgKi8KLQl7Jy4nLCAnOicsIDIwMX0sCS8qIIogKi8KLQl7J0EnLCAnYCcsIDIwM30sCS8qIMAgKi8KLQl7J0EnLCAnficsIDIwNH0sCS8qIMMgKi8KLQl7J08nLCAnficsIDIwNX0sCS8qINUgKi8KLQl7J08nLCAnRScsIDIwNn0sCS8qIJEgKi8KLQl7J28nLCAnZScsIDIwN30sCS8qIKYgKi8KLQl7Jy0nLCAnLicsIDIwOH0sCS8qIC0gKi8KLQl7Jy0nLCAnLScsIDIwOX0sCS8qIC0gKi8KLQl7J2AnLCAnYCcsIDIxMH0sCS8qICIgKi8KLQl7J1wnJywgJ1wnJywgMjExfSwJLyogIiAqLwotCXsnYCcsICcgJywgMjEyfSwJLyogJyAqLwotCXsnXCcnLCAnICcsIDIxM30sCS8qICcgKi8KLQl7Jy0nLCAnOicsIDIxNH0sCS8qIPcgKi8KLQl7J0QnLCAnSScsIDIxNX0sCS8qINcgKi8KLQl7J3knLCAnOicsIDIxNn0sCS8qIP8gKi8KLQl7J1knLCAnOicsIDIxN30sCS8qII0gKi8KLQl7Jy8nLCAnLycsIDIxOH0sCS8qII4gKi8KLQl7J0UnLCAnPScsIDIxOX0sCS8qIKQgRXVybyBTeXN0ZW0gPj04LjUgKi8KLQl7J28nLCAneCcsIDIxOX0sCS8qIKQgQ3VycmVuY3kgU3lzdGVtIDw9OC4xKi8KLQl7JzwnLCAnICcsIDIyMH0sCS8qINAgKi8KLQl7Jz4nLCAnICcsIDIyMX0sCS8qIPAgKi8KLQl7J2YnLCAnaScsIDIyMn0sCS8qIN4gKi8KLQl7J2YnLCAnbCcsIDIyM30sCS8qIP4gKi8KLQl7JysnLCAnKycsIDIyNH0sCS8qIP0gKi8KLQl7J34nLCAnLicsIDIyNX0sCS8qILcgKi8KLQl7JywnLCAnICcsIDIyNn0sCS8qIJIgKi8KLQl7JywnLCAnLCcsIDIyN30sCS8qIJMgKi8KLQl7JyUnLCAnLicsIDIyOH0sCS8qIJQgKi8KLQl7JyUnLCAnMCcsIDIyOH0sCS8qIJQgKi8KLQl7J0EnLCAnXicsIDIyOX0sCS8qIMIgKi8KLQl7J0UnLCAnXicsIDIzMH0sCS8qIMogKi8KLQl7J0EnLCAnXCcnLCAyMzF9LAkvKiDBICovCi0JeydFJywgJyInLCAyMzJ9LAkvKiDLICovCi0JeydFJywgJ2AnLCAyMzN9LAkvKiDIICovCi0JeydJJywgJ1wnJywgMjM0fSwJLyogzSAqLwotCXsnSScsICdeJywgMjM1fSwJLyogziAqLwotCXsnSScsICciJywgMjM2fSwJLyogzyAqLwotCXsnSScsICdgJywgMjM3fSwJLyogzCAqLwotCXsnTycsICdcJycsIDIzOH0sCS8qINMgKi8KLQl7J08nLCAnXicsIDIzOX0sCS8qINQgKi8KLQl7J0EnLCAnUCcsIDI0MH0sCS8qIJUgKi8KLQl7J08nLCAnYCcsIDI0MX0sCS8qINIgKi8KLQl7J1UnLCAnXCcnLCAyNDJ9LAkvKiDaICovCi0JeydVJywgJ14nLCAyNDN9LAkvKiDbICovCi0JeydVJywgJ2AnLCAyNDR9LAkvKiDZICovCi0JeydpJywgJy4nLCAyNDV9LAkvKiCeICovCi0Je05VTCwgTlVMLCBOVUx9Ci0JfTsKLQotIyAgIGVsc2UJLyogIU1BQ09TX1ggKi8KLQotIyAgICBpZmRlZiBPTERfRElHUkFQSFMKKyMgICBpZmRlZiBPTERfRElHUkFQSFMKIAogCS8qCiAJICogZGlncmFwaHMgY29tcGF0aWJsZSB3aXRoIFZpbSA1LngKQEAgLTU1Nyw3ICs0MjMsNyBAQAogCXsneScsICciJywgMjU1fSwJLyogeCBYWCAqLwogCXtOVUwsIE5VTCwgTlVMfQogCX07Ci0jICAgIGVsc2UgLyogT0xEX0RJR1JBUEhTICovCisjICAgZWxzZSAvKiBPTERfRElHUkFQSFMgKi8KIAogCS8qCiAJICogZGlncmFwaHMgZm9yIFVuaWNvZGUgZnJvbSBSRkMxMzQ1CkBAIC03OTIsNyArNjU4LDYgQEAKIAl7J3knLCAnOicsIDB4ZmZ9LAogCXsneScsICciJywgMHhmZn0sCS8vIHggWFggIFZpbSA1LnggY29tcGF0aWJsZQogCi0jICAgICAgaWZkZWYgRkVBVF9NQllURQogIwlkZWZpbmUgVVNFX1VOSUNPREVfRElHUkFQSFMKIAogCXsnQScsICctJywgMHgwMTAwfSwKQEAgLTE5NTcsMTQgKzE4MjIsMTEgQEAKIAl7J2YnLCAnbCcsIDB4ZmIwMn0sCiAJeydmJywgJ3QnLCAweGZiMDV9LAogCXsncycsICd0JywgMHhmYjA2fSwKLSMgICAgICBlbmRpZiAvKiBGRUFUX01CWVRFICovCiAKIAl7TlVMLCBOVUwsIE5VTH0KICAgICAgICB9OwogCi0jICAgIGVuZGlmIC8qIE9MRF9ESUdSQVBIUyAqLwotCi0jICAgZW5kaWYgLyogTWFjaW50b3NoICovCisjICAgZW5kaWYgLyogT0xEX0RJR1JBUEhTICovCiAjICBlbmRpZiAvKiBFQkNESUMgKi8KICMgZW5kaWYgICAgLyogIUhQVVhfRElHUkFQSFMgKi8KICNlbmRpZgkvKiAhX19NSU5UX18gKi8KQEAgLTIxNDEsOCArMjAwMyw3IEBACiAJICAgICsrZHA7CiAJfQogICAgIH0KLSNpZmRlZiBGRUFUX01CWVRFCi0jIGlmZGVmIFVTRV9VTklDT0RFX0RJR1JBUEhTCisjaWZkZWYgVVNFX1VOSUNPREVfRElHUkFQSFMKICAgICBpZiAocmV0dmFsICE9IDAgJiYgIWVuY191dGY4KQogICAgIHsKIAljaGFyX3UJICAgIGJ1Zls2XSwgKnRvOwpAQCAtMjE2NiwxMiArMjAyNywxMSBAQAogCSAgICAodm9pZCljb252ZXJ0X3NldHVwKCZ2YywgTlVMTCwgTlVMTCk7CiAJfQogICAgIH0KLSMgZW5kaWYKKyNlbmRpZgogCiAgICAgLyogSWdub3JlIG11bHRpLWJ5dGUgY2hhcmFjdGVycyB3aGVuIG5vdCBpbiBtdWx0aS1ieXRlIG1vZGUuICovCiAgICAgaWYgKCFoYXNfbWJ5dGUgJiYgcmV0dmFsID4gMHhmZikKIAlyZXR2YWwgPSAwOwotI2VuZGlmCiAKICAgICBpZiAocmV0dmFsID09IDApCQkvKiBkaWdyYXBoIGRlbGV0ZWQgb3Igbm90IGZvdW5kICovCiAgICAgewpAQCAtMjI5NywxMCArMjE1Nyw3IEBACiAjZWxzZQogCiAJaWYgKGdldGV4YWN0ZGlncmFwaChkcC0+Y2hhcjEsIGRwLT5jaGFyMiwgRkFMU0UpID09IGRwLT5yZXN1bHQKLSMgaWZkZWYgRkVBVF9NQllURQotCQkmJiAoaGFzX21ieXRlIHx8IGRwLT5yZXN1bHQgPD0gMjU1KQotIyBlbmRpZgotCQkpCisJCSYmIChoYXNfbWJ5dGUgfHwgZHAtPnJlc3VsdCA8PSAyNTUpKQogCSAgICBwcmludGRpZ3JhcGgoZHAsIHVzZV9oZWFkZXJzID8gJnByZXZpb3VzIDogTlVMTCk7CiAjZW5kaWYKIAkrK2RwOwpAQCAtMjM2NCwxMSArMjIyMSw3IEBACiAKICAgICBpbnQJCWxpc3Rfd2lkdGg7CiAKLSAgICBpZiAoKGR5X2ZsYWdzICYgRFlfVUhFWCkKLSNpZmRlZiBGRUFUX01CWVRFCi0JICAgIHx8IGhhc19tYnl0ZQotI2VuZGlmCi0JICAgICkKKyAgICBpZiAoKGR5X2ZsYWdzICYgRFlfVUhFWCkgfHwgaGFzX21ieXRlKQogCWxpc3Rfd2lkdGggPSAxMzsKICAgICBlbHNlCiAJbGlzdF93aWR0aCA9IDExOwpAQCAtMjQwNCw3ICsyMjU3LDYgQEAKIAkqcCA9IE5VTDsKIAltc2dfb3V0dHJhbnMoYnVmKTsKIAlwID0gYnVmOwotI2lmZGVmIEZFQVRfTUJZVEUKIAlpZiAoaGFzX21ieXRlKQogCXsKIAkgICAgLyogYWRkIGEgc3BhY2UgdG8gZHJhdyBhIGNvbXBvc2luZyBjaGFyIG9uICovCkBAIC0yNDEzLDcgKzIyNjUsNiBAQAogCSAgICBwICs9ICgqbWJfY2hhcjJieXRlcykoZHAtPnJlc3VsdCwgcCk7CiAJfQogCWVsc2UKLSNlbmRpZgogCSAgICAqcCsrID0gKGNoYXJfdSlkcC0+cmVzdWx0OwogCSpwID0gTlVMOwogCW1zZ19vdXR0cmFuc19hdHRyKGJ1ZiwgSExfQVRUUihITEZfOCkpOwpAQCAtMjQ2NSwyMSArMjMxNiwxNSBAQAogCiAJLyogU291cmNlIHRoZSBrZXltYXAgZmlsZS4gIEl0IHdpbGwgY29udGFpbiBhICI6bG9hZGtleW1hcCIgY29tbWFuZAogCSAqIHdoaWNoIHdpbGwgY2FsbCBleF9sb2Fka2V5bWFwKCkgYmVsb3cuICovCi0JYnVmbGVuID0gU1RSTEVOKGN1cmJ1Zi0+Yl9wX2tleW1hcCkKLSMgaWZkZWYgRkVBVF9NQllURQotCQkJCQkgICArIFNUUkxFTihwX2VuYykKLSMgZW5kaWYKLQkJCQkJCSAgICAgICArIDE0OworCWJ1ZmxlbiA9IFNUUkxFTihjdXJidWYtPmJfcF9rZXltYXApICsgU1RSTEVOKHBfZW5jKSArIDE0OwogCWJ1ZiA9IGFsbG9jKCh1bnNpZ25lZClidWZsZW4pOwogCWlmIChidWYgPT0gTlVMTCkKIAkgICAgcmV0dXJuIGVfb3V0b2ZtZW07CiAKLSMgaWZkZWYgRkVBVF9NQllURQogCS8qIHRyeSBmaW5kaW5nICJrZXltYXAvJ2tleW1hcCdfJ2VuY29kaW5nJy52aW0iICBpbiAncnVudGltZXBhdGgnICovCiAJdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBidWZsZW4sICJrZXltYXAvJXNfJXMudmltIiwKIAkJCQkJCSAgIGN1cmJ1Zi0+Yl9wX2tleW1hcCwgcF9lbmMpOwogCWlmIChzb3VyY2VfcnVudGltZShidWYsIDApID09IEZBSUwpCi0jIGVuZGlmCiAJewogCSAgICAvKiB0cnkgZmluZGluZyAia2V5bWFwLydrZXltYXAnLnZpbSIgaW4gJ3J1bnRpbWVwYXRoJyAgKi8KIAkgICAgdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBidWZsZW4sICJrZXltYXAvJXMudmltIiwK