ZGlmZiAtLWdpdCBhL3NyYy9kaWdyYXBoLmMgYi9zcmMvZGlncmFwaC5jCmluZGV4IDJmMWJjZGEuLjg5MmEzZWQgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdyYXBoLmMKKysrIGIvc3JjL2RpZ3JhcGguYwpAQCAtMzM2LDYgKzMzNiw3IEBACiAJeydBJywgJ0UnLCAgIDE1OH0sCS8qIMYgKi8KIAl7J28nLCAneCcsICAgMTU5fSwJLyogpCAtIGN1cnJlbmN5IHN5bWJvbCBpbiBJU08gODg1OS0xICovCiAJeydlJywgJz0nLCAgIDE1OX0sCS8qIKQgLSBldXJvIHN5bWJvbCBpbiBJU08gODg1OS0xNSAqLworCXsnRScsICd1JywgICAxNTl9LAkvKiCkIC0gZXVybyBzeW1ib2wgaW4gSVNPIDg4NTktMTUgKi8KIAl7J2onLCAndScsICAgMTYwfSwJLyogtSAqLwogCXsneScsICciJywgICAxNjd9LAkvKiB4IFhYICovCiAJeyd+JywgJyEnLCAgIDE3MH0sCS8qIKEgKi8KQEAgLTE0MjMsNiArMTQyNCw3IEBACiAJeydQJywgJ3QnLCAweDIwYTd9LAogCXsnVycsICc9JywgMHgyMGE5fSwKIAl7Jz0nLCAnZScsIDB4MjBhY30sIC8qIGV1cm8gKi8KKwl7J0UnLCAndScsIDB4MjBhY30sIC8qIGV1cm8gKi8KIAl7J28nLCAnQycsIDB4MjEwM30sCiAJeydjJywgJ28nLCAweDIxMDV9LAogCXsnbycsICdGJywgMHgyMTA5fSwKZGlmZiAtLWdpdCBhL3NyYy9lZGl0LmMgYi9zcmMvZWRpdC5jCmluZGV4IGQxYTQ4ZGUuLjViNzI0NjEgMTAwNjQ0Ci0tLSBhL3NyYy9lZGl0LmMKKysrIGIvc3JjL2VkaXQuYwpAQCAtMzEsNyArMzEsNyBAQAogI2RlZmluZSBDVFJMX1hfVEhFU0FVUlVTCSgxMCArIENUUkxfWF9XQU5UX0lERU5UKQogI2RlZmluZSBDVFJMX1hfQ01ETElORQkJMTEKICNkZWZpbmUgQ1RSTF9YX0ZVTkNUSU9OCQkxMgotI2RlZmluZSBDVFJMX1hfT0NDVUxUCQkxMworI2RlZmluZSBDVFJMX1hfT01OSQkJMTMKICNkZWZpbmUgQ1RSTF9YX1NQRUxMCQkxNAogI2RlZmluZSBDVFJMX1hfTE9DQUxfTVNHCTE1CS8qIG9ubHkgdXNlZCBpbiAiY3RybF94X21zZ3MiICovCiAKQEAgLTUyLDcgKzUyLDcgQEAKICAgICBOXygiIFRoZXNhdXJ1cyBjb21wbGV0aW9uICheVF5OXlApIiksCiAgICAgTl8oIiBDb21tYW5kLWxpbmUgY29tcGxldGlvbiAoXlZeTl5QKSIpLAogICAgIE5fKCIgVXNlciBkZWZpbmVkIGNvbXBsZXRpb24gKF5VXk5eUCkiKSwKLSAgICBOXygiIE9jY3VsdCBjb21wbGV0aW9uICheT15OXlApIiksCisgICAgTl8oIiBPbW5pIGNvbXBsZXRpb24gKF5PXk5eUCkiKSwKICAgICBOXygiIFNwZWxsaW5nIHN1Z2dlc3Rpb24gKF5TXk5eUCkiKSwKICAgICBOXygiIEtleXdvcmQgTG9jYWwgY29tcGxldGlvbiAoXk5eUCkiKSwKIH07CkBAIC04MjAsNyArODIwLDcgQEAKIAogCWNhc2UgQ3RybF9POgkvKiBleGVjdXRlIG9uZSBjb21tYW5kICovCiAjaWZkZWYgRkVBVF9DT01QTF9GVU5DCi0JICAgIGlmIChjdHJsX3hfbW9kZSA9PSBDVFJMX1hfT0NDVUxUKQorCSAgICBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX09NTkkpCiAJCWdvdG8gZG9jb21wbGV0ZTsKICNlbmRpZgogCSAgICBpZiAoZWNoZWNrX2FiYnIoQ3RybF9PICsgQUJCUl9PRkYpKQpAQCAtMTg0NCw3ICsxODQ0LDcgQEAKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAljYXNlIENUUkxfWF9GVU5DVElPTjoKIAkgICAgcmV0dXJuIChjID09IEN0cmxfVSB8fCBjID09IEN0cmxfUCB8fCBjID09IEN0cmxfTik7Ci0JY2FzZSBDVFJMX1hfT0NDVUxUOgorCWNhc2UgQ1RSTF9YX09NTkk6CiAJICAgIHJldHVybiAoYyA9PSBDdHJsX08gfHwgYyA9PSBDdHJsX1AgfHwgYyA9PSBDdHJsX04pOwogI2VuZGlmCiAJY2FzZSBDVFJMX1hfU1BFTEw6CkBAIC0yMzYxLDcgKzIzNjEsNyBAQAogCQljdHJsX3hfbW9kZSA9IENUUkxfWF9GVU5DVElPTjsKIAkJYnJlYWs7CiAJICAgIGNhc2UgQ3RybF9POgotCQljdHJsX3hfbW9kZSA9IENUUkxfWF9PQ0NVTFQ7CisJCWN0cmxfeF9tb2RlID0gQ1RSTF9YX09NTkk7CiAJCWJyZWFrOwogI2VuZGlmCiAJICAgIGNhc2UgJ3MnOgpAQCAtMjU4NCwxMyArMjU4NCwxMyBAQAogc3RhdGljIGludCBleHBhbmRfYnlfZnVuY3Rpb24gX19BUkdTKChpbnQgdHlwZSwgY2hhcl91ICpiYXNlLCBjaGFyX3UgKioqbWF0Y2hlcykpOwogCiAvKgotICogRXhlY3V0ZSB1c2VyIGRlZmluZWQgY29tcGxldGUgZnVuY3Rpb24gJ2NvbXBsZXRlZnVuYycgb3IgJ29jY3VsdGZ1bmMnLCBhbmQKKyAqIEV4ZWN1dGUgdXNlciBkZWZpbmVkIGNvbXBsZXRlIGZ1bmN0aW9uICdjb21wbGV0ZWZ1bmMnIG9yICdvbW5pZnVuYycsIGFuZAogICogZ2V0IG1hdGNoZXMgaW4gIm1hdGNoZXMiLgogICogUmV0dXJuIHZhbHVlIGlzIG51bWJlciBvZiBtYXRjaGVzLgogICovCiAgICAgc3RhdGljIGludAogZXhwYW5kX2J5X2Z1bmN0aW9uKHR5cGUsIGJhc2UsIG1hdGNoZXMpCi0gICAgaW50CQl0eXBlOwkgICAgLyogQ1RSTF9YX09DQ1VMVCBvciBDVFJMX1hfRlVOQ1RJT04gKi8KKyAgICBpbnQJCXR5cGU7CSAgICAvKiBDVFJMX1hfT01OSSBvciBDVFJMX1hfRlVOQ1RJT04gKi8KICAgICBjaGFyX3UJKmJhc2U7CiAgICAgY2hhcl91CSoqKm1hdGNoZXM7CiB7CkBAIC0yODQ4LDggKzI4NDgsMTEgQEAKIAogI2lmZGVmIEZFQVRfQ09NUExfRlVOQwogCWNhc2UgQ1RSTF9YX0ZVTkNUSU9OOgotCWNhc2UgQ1RSTF9YX09DQ1VMVDoKLQkgICAgbnVtX21hdGNoZXMgPSBleHBhbmRfYnlfZnVuY3Rpb24odHlwZSwgY29tcGxfcGF0dGVybiwgJm1hdGNoZXMpOworCWNhc2UgQ1RSTF9YX09NTkk6CisJICAgIGlmICgqY29tcGxfcGF0dGVybiA9PSBOVUwpCisJCW51bV9tYXRjaGVzID0gMDsKKwkgICAgZWxzZQorCQludW1fbWF0Y2hlcyA9IGV4cGFuZF9ieV9mdW5jdGlvbih0eXBlLCBjb21wbF9wYXR0ZXJuLCAmbWF0Y2hlcyk7CiAJICAgIGlmIChudW1fbWF0Y2hlcyA+IDApCiAJCWluc19jb21wbF9hZGRfbWF0Y2hlcyhudW1fbWF0Y2hlcywgbWF0Y2hlcywgZGlyKTsKIAkgICAgYnJlYWs7CkBAIC0zNDU3LDcgKzM0NjAsNyBAQAogCSAgICBjb21wbF9jb2wgPSBzdGFydGNvbDsKIAkgICAgY29tcGxfbGVuZ3RoID0gY3Vyc19jb2wgLSBzdGFydGNvbDsKIAl9Ci0JZWxzZSBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX0ZVTkNUSU9OIHx8IGN0cmxfeF9tb2RlID09IENUUkxfWF9PQ0NVTFQpCisJZWxzZSBpZiAoY3RybF94X21vZGUgPT0gQ1RSTF9YX0ZVTkNUSU9OIHx8IGN0cmxfeF9tb2RlID09IENUUkxfWF9PTU5JKQogCXsKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAkgICAgLyoKQEAgLTM0NjksMTIgKzM0NzIsMTYgQEAKIAkgICAgY2hhcl91CSpmdW5jbmFtZTsKIAkgICAgcG9zX1QJcG9zOwogCi0JICAgIC8qIENhbGwgJ2NvbXBsZXRlZnVuYycgb3IgJ29jY3VsdGZ1bmMnIGFuZCBnZXQgcGF0dGVybiBsZW5ndGggYXMgYQorCSAgICAvKiBDYWxsICdjb21wbGV0ZWZ1bmMnIG9yICdvbW5pZnVuYycgYW5kIGdldCBwYXR0ZXJuIGxlbmd0aCBhcyBhCiAJICAgICAqIHN0cmluZyAqLwogCSAgICBmdW5jbmFtZSA9IGN0cmxfeF9tb2RlID09IENUUkxfWF9GVU5DVElPTgogCQkJCQkgID8gY3VyYnVmLT5iX3BfY2Z1IDogY3VyYnVmLT5iX3Bfb2Z1OwogCSAgICBpZiAoKmZ1bmNuYW1lID09IE5VTCkKKwkgICAgeworCQlFTVNHMihfKGVfbm90c2V0KSwgY3RybF94X21vZGUgPT0gQ1RSTF9YX0ZVTkNUSU9OCisJCQkJCSAgICAgPyAiY29tcGxldGVmdW5jIiA6ICJvbW5pZnVuYyIpOwogCQlyZXR1cm4gRkFJTDsKKwkgICAgfQogCiAJICAgIGFyZ3NbMF0gPSAoY2hhcl91ICopIjEiOwogCSAgICBhcmdzWzFdID0gTlVMTDsKQEAgLTM0ODMsNyArMzQ5MCw3IEBACiAJICAgIGN1cndpbi0+d19jdXJzb3IgPSBwb3M7CS8qIHJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiAqLwogCiAJICAgIGlmIChjb2wgPCAwKQotCQlyZXR1cm4gRkFJTDsKKwkJY29sID0gY3Vyc19jb2w7CiAJICAgIGNvbXBsX2NvbCA9IGNvbDsKIAkgICAgaWYgKChjb2xucl9UKWNvbXBsX2NvbCA+IGN1cnNfY29sKQogCQljb21wbF9jb2wgPSBjdXJzX2NvbDsKZGlmZiAtLWdpdCBhL3NyYy9nbG9iYWxzLmggYi9zcmMvZ2xvYmFscy5oCmluZGV4IDgwZDA5OWIuLjU3M2RjOTggMTAwNjQ0Ci0tLSBhL3NyYy9nbG9iYWxzLmgKKysrIGIvc3JjL2dsb2JhbHMuaApAQCAtMTQxOCw2ICsxNDE4LDcgQEAKIEVYVEVSTiBjaGFyX3UgZV9pbnZhbHBhdFtdCUlOSVQoPSBOXygiRTY4MjogSW52YWxpZCBzZWFyY2ggcGF0dGVybiBvciBkZWxpbWl0ZXIiKSk7CiAjZW5kaWYKIEVYVEVSTiBjaGFyX3UgZV9idWZsb2FkZWRbXQlJTklUKD0gTl8oIkUxMzk6IEZpbGUgaXMgbG9hZGVkIGluIGFub3RoZXIgYnVmZmVyIikpOworRVhURVJOIGNoYXJfdSBlX25vdHNldFtdCUlOSVQoPSBOXygiRTc2NDogT3B0aW9uICclcycgaXMgbm90IHNldCIpKTsKIAogI2lmZGVmIE1BQ09TX1hfVU5JWAogRVhURVJOIHNob3J0IGRpc2FsbG93X2d1aQlJTklUKD0gRkFMU0UpOwpkaWZmIC0tZ2l0IGEvc3JjL25vcm1hbC5jIGIvc3JjL25vcm1hbC5jCmluZGV4IGIxODRmZDcuLjEyZDRmZmMgMTAwNjQ0Ci0tLSBhL3NyYy9ub3JtYWwuYworKysgYi9zcmMvbm9ybWFsLmMKQEAgLTYwLDcgKzYwLDcgQEAKIHN0YXRpYyB2b2lkCW52X2hlbHAgX19BUkdTKChjbWRhcmdfVCAqY2FwKSk7CiBzdGF0aWMgdm9pZAludl9hZGRzdWIgX19BUkdTKChjbWRhcmdfVCAqY2FwKSk7CiBzdGF0aWMgdm9pZAludl9wYWdlIF9fQVJHUygoY21kYXJnX1QgKmNhcCkpOwotc3RhdGljIHZvaWQJbnZfZ2QgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCBuY2hhcikpOworc3RhdGljIHZvaWQJbnZfZ2QgX19BUkdTKChvcGFyZ19UICpvYXAsIGludCBuY2hhciwgaW50IHRoaXNibG9jaykpOwogc3RhdGljIGludAludl9zY3JlZW5nbyBfX0FSR1MoKG9wYXJnX1QgKm9hcCwgaW50IGRpciwgbG9uZyBkaXN0KSk7CiAjaWZkZWYgRkVBVF9NT1VTRQogc3RhdGljIHZvaWQJbnZfbW91c2VzY3JvbGwgX19BUkdTKChjbWRhcmdfVCAqY2FwKSk7CkBAIC0zOTIwLDE1ICszOTIwLDE2IEBACiAgKiBJbXBsZW1lbnRhdGlvbiBvZiAiZ2QiIGFuZCAiZ0QiIGNvbW1hbmQuCiAgKi8KICAgICBzdGF0aWMgdm9pZAotbnZfZ2Qob2FwLCBuY2hhcikKK252X2dkKG9hcCwgbmNoYXIsIHRoaXNibG9jaykKICAgICBvcGFyZ19UCSpvYXA7CiAgICAgaW50CQluY2hhcjsKKyAgICBpbnQJCXRoaXNibG9jazsJLyogMSBmb3IgIjFnZCIgYW5kICIxZ0QiICovCiB7CiAgICAgaW50CQlsZW47CiAgICAgY2hhcl91CSpwdHI7CiAKICAgICBpZiAoKGxlbiA9IGZpbmRfaWRlbnRfdW5kZXJfY3Vyc29yKCZwdHIsIEZJTkRfSURFTlQpKSA9PSAwCi0JICAgIHx8IGZpbmRfZGVjbChwdHIsIGxlbiwgbmNoYXIgPT0gJ2QnLCAwKSA9PSBGQUlMKQorCSAgICB8fCBmaW5kX2RlY2wocHRyLCBsZW4sIG5jaGFyID09ICdkJywgdGhpc2Jsb2NrLCAwKSA9PSBGQUlMKQogCWNsZWFyb3BiZWVwKG9hcCk7CiAjaWZkZWYgRkVBVF9GT0xESU5HCiAgICAgZWxzZSBpZiAoKGZkb19mbGFncyAmIEZET19TRUFSQ0gpICYmIEtleVR5cGVkICYmIG9hcC0+b3BfdHlwZSA9PSBPUF9OT1ApCkBAIC0zOTM3LDE1ICszOTM4LDE4IEBACiB9CiAKIC8qCi0gKiBTZWFyY2ggZm9yIHZhcmlhYmxlIGRlY2xhcmF0aW9uIG9mICJwdHJbbGVuXSIuICBXaGVuICJsb2NhbGx5IiBpcyBUUlVFIGluCi0gKiB0aGUgY3VycmVudCBmdW5jdGlvbiAoImdkIiksIG90aGVyd2lzZSBpbiB0aGUgY3VycmVudCBmaWxlICgiZ0QiKS4KKyAqIFNlYXJjaCBmb3IgdmFyaWFibGUgZGVjbGFyYXRpb24gb2YgInB0cltsZW5dIi4KKyAqIFdoZW4gImxvY2FsbHkiIGlzIFRSVUUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gKCJnZCIpLCBvdGhlcndpc2UgaW4gdGhlCisgKiBjdXJyZW50IGZpbGUgKCJnRCIpLgorICogV2hlbiAidGhpc2Jsb2NrIiBpcyBUUlVFIGNoZWNrIHRoZSB7fSBibG9jayBzY29wZS4KICAqIFJldHVybiBGQUlMIHdoZW4gbm90IGZvdW5kLgogICovCiAgICAgaW50Ci1maW5kX2RlY2wocHRyLCBsZW4sIGxvY2FsbHksIHNlYXJjaGZsYWdzKQorZmluZF9kZWNsKHB0ciwgbGVuLCBsb2NhbGx5LCB0aGlzYmxvY2ssIHNlYXJjaGZsYWdzKQogICAgIGNoYXJfdQkqcHRyOwogICAgIGludAkJbGVuOwogICAgIGludAkJbG9jYWxseTsKKyAgICBpbnQJCXRoaXNibG9jazsKICAgICBpbnQJCXNlYXJjaGZsYWdzOwkvKiBmbGFncyBwYXNzZWQgdG8gc2VhcmNoaXQoKSAqLwogewogICAgIGNoYXJfdQkqcGF0OwpAQCAtMzk4MywxMSArMzk4NywxMSBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotCXBhcl9wb3MgPSBjdXJ3aW4tPndfY3Vyc29yOwogCXdoaWxlIChjdXJ3aW4tPndfY3Vyc29yLmxudW0gPiAxICYmICpza2lwd2hpdGUobWxfZ2V0X2N1cmxpbmUoKSkgIT0gTlVMKQogCSAgICAtLWN1cndpbi0+d19jdXJzb3IubG51bTsKICAgICB9CiAgICAgY3Vyd2luLT53X2N1cnNvci5jb2wgPSAwOworICAgIHBhcl9wb3MgPSBjdXJ3aW4tPndfY3Vyc29yOwogCiAgICAgLyogU2VhcmNoIGZvcndhcmQgZm9yIHRoZSBpZGVudGlmaWVyLCBpZ25vcmUgY29tbWVudCBsaW5lcy4gKi8KICAgICBmb3VuZF9wb3MubG51bSA9IDA7CkBAIC0zOTk3LDYgKzQwMDEsMTkgQEAKIAkJCQkJICAgICAgIHBhdCwgMUwsIHNlYXJjaGZsYWdzLCBSRV9MQVNUKTsKIAlpZiAoY3Vyd2luLT53X2N1cnNvci5sbnVtID49IG9sZF9wb3MubG51bSkKIAkgICAgdCA9IEZBSUw7CS8qIG1hdGNoIGFmdGVyIHN0YXJ0IGlzIGZhaWx1cmUgdG9vICovCisKKwlpZiAodGhpc2Jsb2NrKQorCXsKKwkgICAgcG9zX1QJKnBvczsKKworCSAgICAvKiBDaGVjayB0aGF0IHRoZSBibG9jayB0aGUgbWF0Y2ggaXMgaW4gZG9lc24ndCBlbmQgYmVmb3JlIHRoZQorCSAgICAgKiBwb3NpdGlvbiB3aGVyZSB3ZSBzdGFydGVkIHRoZSBzZWFyY2ggZnJvbS4gKi8KKwkgICAgaWYgKChwb3MgPSBmaW5kbWF0Y2hsaW1pdChOVUxMLCAnfScsIEZNX0ZPUldBUkQsCisJCSAgICAgKGludCkob2xkX3Bvcy5sbnVtIC0gY3Vyd2luLT53X2N1cnNvci5sbnVtICsgMSkpKSAhPSBOVUxMCisJCSAgICAmJiBwb3MtPmxudW0gPCBvbGRfcG9zLmxudW0pCisJCWNvbnRpbnVlOworCX0KKwogCWlmICh0ID09IEZBSUwpCiAJewogCSAgICAvKiBJZiB3ZSBwcmV2aW91c2x5IGZvdW5kIGEgdmFsaWQgcG9zaXRpb24sIHVzZSBpdC4gKi8KQEAgLTc2NjgsNyArNzY4NSw3IEBACiAgICAgICovCiAgICAgY2FzZSAnZCc6CiAgICAgY2FzZSAnRCc6Ci0JbnZfZ2Qob2FwLCBjYXAtPm5jaGFyKTsKKwludl9nZChvYXAsIGNhcC0+bmNoYXIsIChpbnQpY2FwLT5jb3VudDApOwogCWJyZWFrOwogCiAjaWZkZWYgRkVBVF9NT1VTRQpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IDJjNzFjMzYuLjk2ZDlkZjIgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTE2MDMsNyArMTYwMyw3IEBACiAJCQkgICAgKGNoYXJfdSAqKU5VTEwsIFBWX05PTkUsCiAjZW5kaWYKIAkJCSAgICB7KGNoYXJfdSAqKThMLCAoY2hhcl91ICopNEx9fSwKLSAgICB7Im9jY3VsdGZ1bmMiLCAib2Z1IiwgUF9TVFJJTkd8UF9BTExPQ0VEfFBfVklfREVGfFBfU0VDVVJFLAorICAgIHsib21uaWZ1bmMiLCAgICAib2Z1IiwgIFBfU1RSSU5HfFBfQUxMT0NFRHxQX1ZJX0RFRnxQX1NFQ1VSRSwKICNpZmRlZiBGRUFUX0NPTVBMX0ZVTkMKIAkJCSAgICAoY2hhcl91ICopJnBfb2Z1LCBQVl9PRlUsCiAJCQkgICAgeyhjaGFyX3UgKikiIiwgKGNoYXJfdSAqKTBMfQpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL25vcm1hbC5wcm8gYi9zcmMvcHJvdG8vbm9ybWFsLnBybwppbmRleCA5NTBmMWUwLi44ZmQ0MTFhIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vbm9ybWFsLnBybworKysgYi9zcmMvcHJvdG8vbm9ybWFsLnBybwpAQCAtMTYsNyArMTYsNyBAQAogdm9pZCBwb3Bfc2hvd2NtZCBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZG9fY2hlY2tfc2Nyb2xsYmluZCBfX0FSR1MoKGludCBjaGVjaykpOwogdm9pZCBjaGVja19zY3JvbGxiaW5kIF9fQVJHUygobGluZW5yX1QgdG9wbGluZV9kaWZmLCBsb25nIGxlZnRjb2xfZGlmZikpOwotaW50IGZpbmRfZGVjbCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgbG9jYWxseSwgaW50IHNlYXJjaGZsYWdzKSk7CitpbnQgZmluZF9kZWNsIF9fQVJHUygoY2hhcl91ICpwdHIsIGludCBsZW4sIGludCBsb2NhbGx5LCBpbnQgdGhpc2Jsb2NrLCBpbnQgc2VhcmNoZmxhZ3MpKTsKIHZvaWQgc2Nyb2xsX3JlZHJhdyBfX0FSR1MoKGludCB1cCwgbG9uZyBjb3VudCkpOwogdm9pZCBkb19udl9pZGVudCBfX0FSR1MoKGludCBjMSwgaW50IGMyKSk7CiBpbnQgZ2V0X3Zpc3VhbF90ZXh0IF9fQVJHUygoY21kYXJnX1QgKmNhcCwgY2hhcl91ICoqcHAsIGludCAqbGVucCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4IDBiN2NiOTQuLjIxZGFhYTMgMTAwNjQ0Ci0tLSBhL3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAgLTE1NjIsNiArMTU2Miw5IEBACiAgKgkgIEZNX0ZPUldBUkQJc2VhcmNoIGZvcndhcmRzICh3aGVuIGluaXRjIGlzICcvJywgJyonIG9yICcjJykKICAqCSAgRk1fQkxPQ0tTVE9QCXN0b3AgYXQgc3RhcnQvZW5kIG9mIGJsb2NrICh7IG9yIH0gaW4gY29sdW1uIDApCiAgKgkgIEZNX1NLSVBDT01NCXNraXAgY29tbWVudHMgKG5vdCBpbXBsZW1lbnRlZCB5ZXQhKQorICoKKyAqICJvYXAiIGlzIG9ubHkgdXNlZCB0byBzZXQgb2FwLT5tb3Rpb25fdHlwZSBmb3IgYSBsaW5ld2lzZSBtb3Rpb24sIGl0IGJlCisgKiBOVUxMCiAgKi8KIAogICAgIHBvc19UICoKZGlmZiAtLWdpdCBhL3NyYy9zcGVsbC5jIGIvc3JjL3NwZWxsLmMKaW5kZXggYzNjNTRiNy4uOGY4Yzg5MiAxMDA2NDQKLS0tIGEvc3JjL3NwZWxsLmMKKysrIGIvc3JjL3NwZWxsLmMKQEAgLTc2OTksNyArNzY5OSw3IEBACiAKIAlpZiAoKmN1cmJ1Zi0+Yl9wX3NwZiA9PSBOVUwpCiAJewotCSAgICBFTVNHKF8oIkU3NjQ6ICdzcGVsbGZpbGUnIGlzIG5vdCBzZXQiKSk7CisJICAgIEVNU0cyKF8oZV9ub3RzZXQpLCAic3BlbGxmaWxlIik7CiAJICAgIHJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9zdHJ1Y3RzLmggYi9zcmMvc3RydWN0cy5oCmluZGV4IDg4ZmNmNDguLjk0YjlkZGIgMTAwNjQ0Ci0tLSBhL3NyYy9zdHJ1Y3RzLmgKKysrIGIvc3JjL3N0cnVjdHMuaApAQCAtMTI4OCw3ICsxMjg4LDcgQEAKICNlbmRpZgogI2lmZGVmIEZFQVRfQ09NUExfRlVOQwogICAgIGNoYXJfdQkqYl9wX2NmdTsJLyogJ2NvbXBsZXRlZnVuYycgKi8KLSAgICBjaGFyX3UJKmJfcF9vZnU7CS8qICdvY2N1bHRmdW5jJyAqLworICAgIGNoYXJfdQkqYl9wX29mdTsJLyogJ29tbmlmdW5jJyAqLwogI2VuZGlmCiAgICAgaW50CQliX3BfZW9sOwkvKiAnZW5kb2ZsaW5lJyAqLwogICAgIGludAkJYl9wX2V0OwkJLyogJ2V4cGFuZHRhYicgKi8KZGlmZiAtLWdpdCBhL3NyYy9zeW50YXguYyBiL3NyYy9zeW50YXguYwppbmRleCA2NWE3OTI2Li4xMTZiNzI0IDEwMDY0NAotLS0gYS9zcmMvc3ludGF4LmMKKysrIGIvc3JjL3N5bnRheC5jCkBAIC02MDg3LDcgKzYwODcsNyBAQAogCSJGb2xkZWQgdGVybT1zdGFuZG91dCBjdGVybWJnPUdyZXkgY3Rlcm1mZz1EYXJrQmx1ZSBndWliZz1MaWdodEdyZXkgZ3VpZmc9RGFya0JsdWUiLAogCSJGb2xkQ29sdW1uIHRlcm09c3RhbmRvdXQgY3Rlcm1iZz1HcmV5IGN0ZXJtZmc9RGFya0JsdWUgZ3VpYmc9R3JleSBndWlmZz1EYXJrQmx1ZSIsCiAJIlNpZ25Db2x1bW4gdGVybT1zdGFuZG91dCBjdGVybWJnPUdyZXkgY3Rlcm1mZz1EYXJrQmx1ZSBndWliZz1HcmV5IGd1aWZnPURhcmtCbHVlIiwKLQkiVmlzdWFsIHRlcm09cmV2ZXJzZSBjdGVybWJnPUxpZ2h0R3JleSBndWliZz1MaWdodEdyZXkiLAorCSJWaXN1YWwgdGVybT1yZXZlcnNlIGN0ZXJtYmc9TWFnZW50YSBndWliZz1MaWdodEdyZXkiLAogCSJEaWZmQWRkIHRlcm09Ym9sZCBjdGVybWJnPUxpZ2h0Qmx1ZSBndWliZz1MaWdodEJsdWUiLAogCSJEaWZmQ2hhbmdlIHRlcm09Ym9sZCBjdGVybWJnPUxpZ2h0TWFnZW50YSBndWliZz1MaWdodE1hZ2VudGEiLAogCSJEaWZmRGVsZXRlIHRlcm09Ym9sZCBjdGVybWZnPUJsdWUgY3Rlcm1iZz1MaWdodEN5YW4gZ3VpPWJvbGQgZ3VpZmc9Qmx1ZSBndWliZz1MaWdodEN5YW4iLApAQCAtNjExMyw3ICs2MTEzLDcgQEAKIAkiRm9sZGVkIHRlcm09c3RhbmRvdXQgY3Rlcm1iZz1EYXJrR3JleSBjdGVybWZnPUN5YW4gZ3VpYmc9RGFya0dyZXkgZ3VpZmc9Q3lhbiIsCiAJIkZvbGRDb2x1bW4gdGVybT1zdGFuZG91dCBjdGVybWJnPURhcmtHcmV5IGN0ZXJtZmc9Q3lhbiBndWliZz1HcmV5IGd1aWZnPUN5YW4iLAogCSJTaWduQ29sdW1uIHRlcm09c3RhbmRvdXQgY3Rlcm1iZz1EYXJrR3JleSBjdGVybWZnPUN5YW4gZ3VpYmc9R3JleSBndWlmZz1DeWFuIiwKLQkiVmlzdWFsIHRlcm09cmV2ZXJzZSBjdGVybWJnPURhcmtHcmV5IGd1aWJnPURhcmtHcmV5IiwKKwkiVmlzdWFsIHRlcm09cmV2ZXJzZSBjdGVybWJnPU1hZ2VudGEgZ3VpYmc9RGFya0dyZXkiLAogCSJEaWZmQWRkIHRlcm09Ym9sZCBjdGVybWJnPURhcmtCbHVlIGd1aWJnPURhcmtCbHVlIiwKIAkiRGlmZkNoYW5nZSB0ZXJtPWJvbGQgY3Rlcm1iZz1EYXJrTWFnZW50YSBndWliZz1EYXJrTWFnZW50YSIsCiAJIkRpZmZEZWxldGUgdGVybT1ib2xkIGN0ZXJtZmc9Qmx1ZSBjdGVybWJnPURhcmtDeWFuIGd1aT1ib2xkIGd1aWZnPUJsdWUgZ3VpYmc9RGFya0N5YW4iLApkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uaCBiL3NyYy92ZXJzaW9uLmgKaW5kZXggYzVjZmYzZC4uZDNlMjYyMCAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uaAorKysgYi9zcmMvdmVyc2lvbi5oCkBAIC0zNiw1ICszNiw1IEBACiAjZGVmaW5lIFZJTV9WRVJTSU9OX05PRE9UCSJ2aW03MGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9TSE9SVAkiNy4wYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wYWEgQUxQSEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxMCkiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgU2VwIDEwLCBjb21waWxlZCAiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IFNlcCAxMykiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgU2VwIDEzLCBjb21waWxlZCAiCg==