ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCBlODI3ODk1Li4yODEwNzJlIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0xLDYgKzEsMTQgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIENoYW5nZXMgZm9yIFUtQm9vdCAxLjEuMzoKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyCisgIEZpeCBzdHlsZSBpc3N1ZXMgcHJpbWFyaWx5IGluIDg1eHggYW5kIDgzeHggYm9hcmRzLgorICAgIC0gQysrIGNvbW1lbnRzCisgICAgLSBUcmFpbGluZyB3aGl0ZSBzcGFjZQorICAgIC0gSW5kZW50YXRpb24gbm90IGJ5IFRBQgorICAgIC0gRXhjZXNzaXZlIGFtb3VudCBvZiBlbXB0eSBsaW5lcworICAgIC0gVHJhaWxpbmcgZW1wdHkgbGluZXMKKwogKiBQYXRjaCBieSBSb24gQWxkZXIsIDExIEp1bHkgMjAwNQogICAgIEFkZCBYaWFuZ2h1YSBYaWFvIGFuZCBMdW5zaGVuZyBXYW5nJ3Mgc3VwcG9ydCBmb3IgdGhlCiAgICAgR0RBIE1QQzg1NDAgRVZBTCBib2FyZC4KZGlmZiAtLWdpdCBhL2JvYXJkL21wYzgzNDlhZHMvbXBjODM0OWFkcy5jIGIvYm9hcmQvbXBjODM0OWFkcy9tcGM4MzQ5YWRzLmMKaW5kZXggNDA0MDBmMy4uZGE4ZDNkNyAxMDA2NDQKLS0tIGEvYm9hcmQvbXBjODM0OWFkcy9tcGM4MzQ5YWRzLmMKKysrIGIvYm9hcmQvbXBjODM0OWFkcy9tcGM4MzQ5YWRzLmMKQEAgLTUzLDcgKzUzLDYgQEAKIAogI2RlZmluZSBuczJjbGsobnMpIChucyAvICgxMDAwMDAwMDAwIC8gQ09ORklHXzgzNDlfQ0xLSU4pICsgMSkKIAotCiBsb25nIGludCBpbml0ZHJhbSAoaW50IGJvYXJkX3R5cGUpCiB7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW0gPSAoaW1tYXBfdCAqKUNGR19JTU1SQkFSOwpAQCAtMTQ4LDcgKzE0Nyw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLSNpZiBkZWZpbmVkKENPTkZJR19QQ0kpIC8vY29weSBmcm9tIG1wYzg1eHgKKyNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCiAvKgogICogSW5pdGlhbGl6ZSBQQ0kgRGV2aWNlcywgcmVwb3J0IGRldmljZXMgZm91bmQKICAqLwpAQCAtMTkwLDggKzE4OSw4IEBACiB9CiAKIC8qCi1pZiBNUEM4MzQ5QURTIGlzIHNvbGRlcmVkIHdpdGggU0RSQU0KLSovCisgKiBpZiBNUEM4MzQ5QURTIGlzIHNvbGRlcmVkIHdpdGggU0RSQU0KKyAqLwogI2lmIGRlZmluZWQoQ0ZHX0JSMl9QUkVMSU0pICBcCiAJJiYgZGVmaW5lZChDRkdfT1IyX1BSRUxJTSkgXAogCSYmIGRlZmluZWQoQ0ZHX0xCTEFXQkFSMl9QUkVMSU0pIFwKQEAgLTIwNyw3ICsyMDYsNiBAQAogCXZvbGF0aWxlIGxidXM4MzQ5X3QgKmxiYz0gJmltbWFwLT5sYnVzOwogCXVpbnQgKnNkcmFtX2FkZHIgPSAodWludCAqKUNGR19MQkNfU0RSQU1fQkFTRTsKIAotCiAJcHV0cygiXG4gICBTRFJBTSBvbiBMb2NhbCBCdXM6ICIpOwogCXByaW50X3NpemUgKENGR19MQkNfU0RSQU1fU0laRSAqIDEwMjQgKiAxMDI0LCAiXG4iKTsKIApAQCAtMjMzLDMyICsyMzEsMzMgQEAKIAogCWxiYy0+bHNkbXIgPSBDRkdfTEJDX0xTRE1SXzI7LyoweDQ4NjM2NzMzO2F1dG8gcmVmcmVzaCovCiAJYXNtKCJzeW5jIik7Ci0vKjEgdGltZXMqLworCS8qMSB0aW1lcyovCiAJKnNkcmFtX2FkZHIgPSAweGZmOwogCXVkZWxheSgxMDApOwotLyoyIHRpbWVzKi8KKwkvKjIgdGltZXMqLwogCSpzZHJhbV9hZGRyID0gMHhmZjsKIAl1ZGVsYXkoMTAwKTsKLS8qMyB0aW1lcyovCisJLyozIHRpbWVzKi8KIAkqc2RyYW1fYWRkciA9IDB4ZmY7CiAJdWRlbGF5KDEwMCk7Ci0vKjQgdGltZXMqLworCS8qNCB0aW1lcyovCiAJKnNkcmFtX2FkZHIgPSAweGZmOwogCXVkZWxheSgxMDApOwotLyo1IHRpbWVzKi8KKwkvKjUgdGltZXMqLwogCSpzZHJhbV9hZGRyID0gMHhmZjsKIAl1ZGVsYXkoMTAwKTsKLS8qNiB0aW1lcyovCisJLyo2IHRpbWVzKi8KIAkqc2RyYW1fYWRkciA9IDB4ZmY7CiAJdWRlbGF5KDEwMCk7Ci0vKjcgdGltZXMqLworCS8qNyB0aW1lcyovCiAJKnNkcmFtX2FkZHIgPSAweGZmOwogCXVkZWxheSgxMDApOwotLyo4IHRpbWVzKi8KKwkvKjggdGltZXMqLwogCSpzZHJhbV9hZGRyID0gMHhmZjsKIAl1ZGVsYXkoMTAwKTsKIAotCWxiYy0+bHNkbXIgPSBDRkdfTEJDX0xTRE1SXzQ7IC8qMHg1ODYzNjczMzttb2RlIHJlZ2lzdGVyIHdyaXRlIG9wZXJhdGlvbiovCisJLyogMHg1ODYzNjczMzttb2RlIHJlZ2lzdGVyIHdyaXRlIG9wZXJhdGlvbiAqLworCWxiYy0+bHNkbXIgPSBDRkdfTEJDX0xTRE1SXzQ7CiAJYXNtKCJzeW5jIik7CiAJKnNkcmFtX2FkZHIgPSAweGZmOwogCXVkZWxheSgxMDApOwpAQCAtMjc1LDQgKzI3NCwzIEBACiAJcHV0KCJTRFJBTSBvbiBMb2NhbCBCdXMgaXMgTk9UIGF2YWlsYWJsZSFcbiIpOwogfQogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2JvYXJkL21wYzg1NDBldmFsL21wYzg1NDBldmFsLmMgYi9ib2FyZC9tcGM4NTQwZXZhbC9tcGM4NTQwZXZhbC5jCmluZGV4IGM5MGRiYzcuLjNiM2M4ZWQgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wYzg1NDBldmFsL21wYzg1NDBldmFsLmMKKysrIGIvYm9hcmQvbXBjODU0MGV2YWwvbXBjODU0MGV2YWwuYwpAQCAtMjMsMzQgKzIzLDE1IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLQotZXh0ZXJuIGxvbmcgaW50IHNwZF9zZHJhbSAodm9pZCk7Ci0KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL2ltbWFwXzg1eHguaD4KICNpbmNsdWRlIDxzcGQuaD4KIAotCitleHRlcm4gbG9uZyBpbnQgc3BkX3NkcmFtICh2b2lkKTsKIAogbG9uZyBpbnQgZml4ZWRfc2RyYW0gKHZvaWQpOwogCi0vKiBNUEM4NTQwQURTIEJvYXJkIFN0YXR1cyAmIENvbnRyb2wgUmVnaXN0ZXJzICovCi0jaWYgMAotdHlwZWRlZiBzdHJ1Y3QgYnNjcl8gewotCXVuc2lnbmVkIGxvbmcgYmNzcjA7Ci0JdW5zaWduZWQgbG9uZyBiY3NyMTsKLQl1bnNpZ25lZCBsb25nIGJjc3IyOwotCXVuc2lnbmVkIGxvbmcgYmNzcjM7Ci0JdW5zaWduZWQgbG9uZyBiY3NyNDsKLQl1bnNpZ25lZCBsb25nIGJjc3I1OwotCXVuc2lnbmVkIGxvbmcgYmNzcjY7Ci0JdW5zaWduZWQgbG9uZyBiY3NyNzsKLX0gYmNzcl90OwotI2VuZGlmCi0KLQotCiBpbnQgYm9hcmRfcHJlX2luaXQgKHZvaWQpCiB7CiAjaWYgZGVmaW5lZChDT05GSUdfUENJKQpAQCAtNzQsNyArNTUsOCBAQAogCXByaW50ZiAoIlx0RERSOiAlbHUgTUh6XG4iLCBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAyMDAwMDAwKTsKIAlpZigoQ0ZHX0xCQ19MQ1JSICYgMHgwZikgPT0gMiB8fCAoQ0ZHX0xCQ19MQ1JSICYgMHgwZikgPT0gNCBcCiAJCXx8IChDRkdfTEJDX0xDUlIgJiAweDBmKSA9PSA4KSB7Ci0JCXByaW50ZiAoIlx0TEJDOiAlbHUgTUh6XG4iLCBzeXNpbmZvLmZyZXFTeXN0ZW1CdXMgLyAxMDAwMDAwIC8oQ0ZHX0xCQ19MQ1JSICYgMHgwZikpOworCQlwcmludGYgKCJcdExCQzogJWx1IE1IelxuIiwKKwkJCXN5c2luZm8uZnJlcVN5c3RlbUJ1cyAvIDEwMDAwMDAvKENGR19MQkNfTENSUiAmIDB4MGYpKTsKIAl9IGVsc2UgewogCQlwcmludGYoIlx0TEJDOiB1bmtub3duXG4iKTsKIAl9CkBAIC0xOTksNyArMTgxLDYgQEAKIAlyZXR1cm4gZHJhbV9zaXplOwogfQogCi0KICNpZiBkZWZpbmVkKENGR19EUkFNX1RFU1QpCiBpbnQgdGVzdGRyYW0gKHZvaWQpCiB7CkBAIC0yMzQsMTQgKzIxNSwxMyBAQAogfQogI2VuZGlmCiAKLQogI2lmICFkZWZpbmVkKENPTkZJR19TUERfRUVQUk9NKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBmaXhlZCBzZHJhbSBpbml0IC0tIGRvZXNuJ3QgdXNlIHNlcmlhbCBwcmVzZW5jZSBkZXRlY3QuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogbG9uZyBpbnQgZml4ZWRfc2RyYW0gKHZvaWQpCiB7Ci0gICNpZm5kZWYgQ0ZHX1JBTUJPT1QKKyNpZm5kZWYgQ0ZHX1JBTUJPT1QKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopQ0ZHX0lNTVI7CiAJdm9sYXRpbGUgY2Nzcl9kZHJfdCAqZGRyPSAmaW1tYXAtPmltX2RkcjsKIApAQCAtMjUxLDIxICsyMzEsMjEgQEAKIAlkZHItPnRpbWluZ19jZmdfMiA9IENGR19ERFJfVElNSU5HXzI7CiAJZGRyLT5zZHJhbV9tb2RlID0gQ0ZHX0REUl9NT0RFOwogCWRkci0+c2RyYW1faW50ZXJ2YWwgPSBDRkdfRERSX0lOVEVSVkFMOwotICAgICNpZiBkZWZpbmVkIChDT05GSUdfRERSX0VDQykKKyNpZiBkZWZpbmVkIChDT05GSUdfRERSX0VDQykKIAlkZHItPmVycl9kaXNhYmxlID0gMHgwMDAwMDAwRDsKIAlkZHItPmVycl9zYmUgPSAweDAwZmYwMDAwOwotICAgICNlbmRpZgorI2VuZGlmCiAJYXNtKCJzeW5jO2lzeW5jO21zeW5jIik7CiAJdWRlbGF5KDUwMCk7Ci0gICAgI2lmIGRlZmluZWQgKENPTkZJR19ERFJfRUNDKQorI2lmIGRlZmluZWQgKENPTkZJR19ERFJfRUNDKQogCS8qIEVuYWJsZSBFQ0MgY2hlY2tpbmcgKi8KIAlkZHItPnNkcmFtX2NmZyA9IChDRkdfRERSX0NPTlRST0wgfCAweDIwMDAwMDAwKTsKLSAgICAjZWxzZQorI2Vsc2UKIAlkZHItPnNkcmFtX2NmZyA9IENGR19ERFJfQ09OVFJPTDsKLSAgICAjZW5kaWYKKyNlbmRpZgogCWFzbSgic3luYzsgaXN5bmM7IG1zeW5jIik7CiAJdWRlbGF5KDUwMCk7Ci0gICNlbmRpZgorI2VuZGlmCiAJcmV0dXJuIChDRkdfU0RSQU1fU0laRSAqIDEwMjQgKiAxMDI0KTsKIH0KICNlbmRpZgkvKiAhZGVmaW5lZChDT05GSUdfU1BEX0VFUFJPTSkgKi8KZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfZmxhc2guYyBiL2NvbW1vbi9jbWRfZmxhc2guYwppbmRleCBhMGNjZGI2Li4xNjJkMWZmIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2ZsYXNoLmMKKysrIGIvY29tbW9uL2NtZF9mbGFzaC5jCkBAIC0xMDEsNyArMTAxLDcgQEAKICAqIGVyYXNlIGFuZCBwcm90ZWN0IGNvbW1hbmRzLiBUaGUgcmFuZ2Ugb2YgdGhlIGFkZHJlc3NlcyBvbiB3aGljaAogICogZWl0aGVyIG9mIHRoZSBjb21tYW5kcyBpcyB0byBvcGVyYXRlIGNhbiBiZSBnaXZlbiBpbiB0d28gZm9ybXM6CiAgKiAxLiA8Y21kPiBzdGFydCBlbmQgLSBvcGVyYXRlIG9uIDwnc3RhcnQnLCAgJ2VuZCcpCi0gKiAyLiA8Y21kPiBzdGFydCArbGVuZ3RoIC0gb3BlcmF0ZSBvbiA8J3N0YXJ0Jywgc3RhcnQgKyBsZW5ndGgpIAorICogMi4gPGNtZD4gc3RhcnQgK2xlbmd0aCAtIG9wZXJhdGUgb24gPCdzdGFydCcsIHN0YXJ0ICsgbGVuZ3RoKQogICogSWYgdGhlIHNlY29uZCBmb3JtIGlzIHVzZWQgYW5kIHRoZSBlbmQgYWRkcmVzcyBkb2Vzbid0IGZhbGwgb24gdGhlCiAgKiBzZWN0b3IgYm91bmRhcnksIHRoYW4gaXQgd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV4dCBzZWN0b3IgYm91bmRhcnkuCiAgKiBJZiBpdCBpc24ndCBpbiB0aGUgZmxhc2gsIHRoZSBmdW5jdGlvbiB3aWxsIGZhaWwgKHJldHVybiAtMSkuCmRpZmYgLS1naXQgYS9jb21tb24vY21kX3VzYi5jIGIvY29tbW9uL2NtZF91c2IuYwppbmRleCAzYWY4NjE5Li4wNzM4ZjU1IDEwMDY0NAotLS0gYS9jb21tb24vY21kX3VzYi5jCisrKyBiL2NvbW1vbi9jbWRfdXNiLmMKQEAgLTQ1NSw5ICs0NTUsOCBAQAogCQlpID0gdXNiX2luaXQoKTsKICNpZmRlZiBDT05GSUdfVVNCX1NUT1JBR0UKIAkJLyogdHJ5IHRvIHJlY29nbml6ZSBzdG9yYWdlIGRldmljZXMgaW1tZWRpYXRlbHkgKi8KLQkJaWYgKGkgPj0gMCkgCisJCWlmIChpID49IDApCiAJIAkJdXNiX3N0b3JfY3Vycl9kZXYgPSB1c2Jfc3Rvcl9zY2FuKDEpOwotCQkKICNlbmRpZgogCQlyZXR1cm4gMDsKIAl9CmRpZmYgLS1naXQgYS9jb21tb24vdXNiLmMgYi9jb21tb24vdXNiLmMKaW5kZXggMTczOGQ5NS4uODExZWQyNCAxMDA2NDQKLS0tIGEvY29tbW9uL3VzYi5jCisrKyBiL2NvbW1vbi91c2IuYwpAQCAtNDcsNyArNDcsNyBAQAogI2VuZGlmCiAKIAotI3VuZGVmIFVTQl9ERUJVRyAKKyN1bmRlZiBVU0JfREVCVUcKIAogI2lmZGVmCVVTQl9ERUJVRwogI2RlZmluZQlVU0JfUFJJTlRGKGZtdCxhcmdzLi4uKQlwcmludGYgKGZtdCAsIyNhcmdzKQpAQCAtMzQyLDcgKzM0Miw3IEBACiAJaWYgKHJlc3VsdCA8IDApCiAJCXJldHVybiByZXN1bHQ7CiAKLQkvKiAKKwkvKgogCSAqIE5PVEU6IHdlIGRvIG5vdCBnZXQgc3RhdHVzIGFuZCB2ZXJpZnkgcmVzZXQgd2FzIHN1Y2Nlc3NmdWwKIAkgKiBhcyBzb21lIGRldmljZXMgYXJlIHJlcG9ydGVkIHRvIGxvY2sgdXAgdXBvbiB0aGlzIGNoZWNrLi4KIAkgKi8KQEAgLTUxNywxMyArNTE3LDEyIEBACiAJCS8qIHNvbWUgZGV2aWNlcyBhcmUgZmxha3kgKi8KIAkJcmVzdWx0ID0gdXNiX2NvbnRyb2xfbXNnKGRldiwgdXNiX3JjdmN0cmxwaXBlKGRldiwgMCksCiAJCQlVU0JfUkVRX0dFVF9ERVNDUklQVE9SLCBVU0JfRElSX0lOLAotCQkJKFVTQl9EVF9TVFJJTkcgPDwgOCkgKyBpbmRleCwgbGFuZ2lkLCBidWYsIHNpemUsIAorCQkJKFVTQl9EVF9TVFJJTkcgPDwgOCkgKyBpbmRleCwgbGFuZ2lkLCBidWYsIHNpemUsCiAJCQlVU0JfQ05UTF9USU1FT1VUKTsKIAogCQlpZiAocmVzdWx0ID4gMCkKIAkJCWJyZWFrOwotCX0JCi0JCQkJCisJfQogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU3Miw3ICs1NzEsNyBAQAogCX0KIAogCWlmIChyYyA8IDIpCi0JCXJjID0gLTE7IAorCQlyYyA9IC0xOwogCiAJcmV0dXJuIHJjOwogfQpAQCAtNzIxLDEwICs3MjAsOSBAQAogCQl9CiAJfQogCWRldi0+ZGVzY3JpcHRvci5iTWF4UGFja2V0U2l6ZTAgPSBkZXNjLT5iTWF4UGFja2V0U2l6ZTA7Ci0JCisKIAkvKiBmaW5kIHRoZSBwb3J0IG51bWJlciB3ZSdyZSBhdCAqLwogCWlmIChwYXJlbnQpIHsKLQkKIAkJZm9yIChqID0gMDsgaiA8IHBhcmVudC0+bWF4Y2hpbGQ7IGorKykgewogCQkJaWYgKHBhcmVudC0+Y2hpbGRyZW5bal0gPT0gZGV2KSB7CiAJCQkJcG9ydCA9IGo7CkBAIC05NTgsNyArOTU2LDYgQEAKIAkJCXJldHVybiAtMTsKIAogCQlpZiAocG9ydHN0YXR1cyAmIFVTQl9QT1JUX1NUQVRfRU5BQkxFKSB7Ci0JCQkKIAkJCWJyZWFrOwogCQl9CiAKZGlmZiAtLWdpdCBhL2NvbW1vbi91c2Jfc3RvcmFnZS5jIGIvY29tbW9uL3VzYl9zdG9yYWdlLmMKaW5kZXggNTM5N2JiMi4uNmNmNjJlNCAxMDA2NDQKLS0tIGEvY29tbW9uL3VzYl9zdG9yYWdlLmMKKysrIGIvY29tbW9uL3VzYl9zdG9yYWdlLmMKQEAgLTIyOSw3ICsyMjksNyBAQAogCQl9CiAJCWlmKHVzYl9zdG9yYWdlX3Byb2JlKGRldiwwLCZ1c2Jfc3Rvclt1c2JfbWF4X2RldnNdKSkgeyAvKiBvaywgaXQgaXMgYSBzdG9yYWdlIGRldmljZXMgKi8KIAkJCS8qIGdldCBpbmZvIGFuZCBmaWxsIGl0IGluICovCi0JCQlpZih1c2Jfc3Rvcl9nZXRfaW5mbyhkZXYsICZ1c2Jfc3Rvclt1c2JfbWF4X2RldnNdLCAmdXNiX2Rldl9kZXNjW3VzYl9tYXhfZGV2c10pKSAKKwkJCWlmKHVzYl9zdG9yX2dldF9pbmZvKGRldiwgJnVzYl9zdG9yW3VzYl9tYXhfZGV2c10sICZ1c2JfZGV2X2Rlc2NbdXNiX21heF9kZXZzXSkpCiAJCQkJdXNiX21heF9kZXZzKys7CiAJCX0gLyogaWYgc3RvcmFnZSBkZXZpY2UgKi8KIAkJaWYodXNiX21heF9kZXZzPT1VU0JfTUFYX1NUT1JfREVWKSB7CkBAIC0yMzcsNyArMjM3LDcgQEAKIAkJCWJyZWFrOwogCQl9CiAJfSAvKiBmb3IgKi8KLQkKKwogCXVzYl9kaXNhYmxlX2FzeW5jaCgwKTsgLyogYXN5bmNoIHRyYW5zZmVyIGFsbG93ZWQgKi8KIAlwcmludGYoIiVkIFN0b3JhZ2UgRGV2aWNlKHMpIGZvdW5kXG4iLCB1c2JfbWF4X2RldnMpOwogCWlmKHVzYl9tYXhfZGV2cz4wKQpAQCAtNjU2LDcgKzY1Niw3IEBACiAJcmV0cnkgPSAwOwogICAgYWdhaW46CiAJVVNCX1NUT1JfUFJJTlRGKCJTVEFUVVMgcGhhc2VcbiIpOwotCXJlc3VsdCA9IHVzYl9idWxrX21zZyh1cy0+cHVzYl9kZXYsIHBpcGVpbiwgJmNzdywgVU1BU1NfQkJCX0NTV19TSVpFLCAKKwlyZXN1bHQgPSB1c2JfYnVsa19tc2codXMtPnB1c2JfZGV2LCBwaXBlaW4sICZjc3csIFVNQVNTX0JCQl9DU1dfU0laRSwKIAkJCQkmYWN0bGVuLCBVU0JfQ05UTF9USU1FT1VUKjUpOwogCiAJLyogc3BlY2lhbCBoYW5kbGluZyBvZiBTVEFMTCBpbiBTVEFUVVMgcGhhc2UgKi8KQEAgLTExMzQsNyArMTEzNCw3IEBACiAJICAgICBkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ID09IDB4MjAxMCkKIAkgICAgKQogCQlVU0JfU1RPUl9QUklOVEYoInVzYl9zdG9yX2dldF9pbmZvOiBza2lwcGluZyBSRVNFVC4uXG4iKTsKLQllbHNlIAorCWVsc2UKIAkJc3MtPnRyYW5zcG9ydF9yZXNldChzcyk7CiAKIAlwY2NiLT5wZGF0YSA9IHVzYl9zdG9yX2J1ZjsKQEAgLTExNDUsNyArMTE0NSw3IEBACiAKIAlpZih1c2JfaW5xdWlyeShwY2NiLHNzKSkKIAkJcmV0dXJuIC0xOwotCQkKKwogCXBlcnEgPSB1c2Jfc3Rvcl9idWZbMF07CiAJbW9kaSA9IHVzYl9zdG9yX2J1ZlsxXTsKIAlpZigocGVycSAmIDB4MWYpID09IDB4MWYpIHsKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuYyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuYwppbmRleCBmYTZhYmViLi5lYjgwYjFjIDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3VzYl9vaGNpLmMKKysrIGIvY3B1L2FybTkyMHQvczNjMjR4MC91c2Jfb2hjaS5jCkBAIC01Myw3ICs1Myw2IEBACiAjZGVmaW5lIE9IQ0lfVVNFX05QUwkJLyogZm9yY2UgTm9Qb3dlclN3aXRjaGluZyBtb2RlICovCiAjdW5kZWYgT0hDSV9WRVJCT1NFX0RFQlVHCS8qIG5vdCBhbHdheXMgaGVscGZ1bCAqLwogCi0KIC8qIEZvciBpbml0aWFsaXppbmcgY29udHJvbGxlciAobWFzayBpbiBhbiBIQ0ZTIG1vZGUgdG9vKSAqLwogI2RlZmluZQlPSENJX0NPTlRST0xfSU5JVCBcCiAJKE9IQ0lfQ1RSTF9DQlNSICYgMHgzKSB8IE9IQ0lfQ1RSTF9JRSB8IE9IQ0lfQ1RSTF9QTEUKQEAgLTEyMjEsNyArMTIyMCw2IEBACiB9CiAKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAvKiBjb21tb24gY29kZSBmb3IgaGFuZGxpbmcgc3VibWl0IG1lc3NhZ2VzIC0gdXNlZCBmb3IgYWxsIGJ1dCByb290IGh1YiAqLwpAQCAtMTI5NCw3ICsxMjkyLDcgQEAKIAkJCXdhaXRfbXMoMSk7CiAJCQlpZiAoIXVyYl9maW5pc2hlZCkKIAkJCQlkYmcoIlwlIik7Ci0JCQkKKwogCQl9IGVsc2UgewogCQkJZXJyKCJDVEw6VElNRU9VVCAiKTsKIAkJCWRiZygic3VibWl0X2NvbW1vbl9tc2c6IFRPIHN0YXR1cyAleFxuIiwgc3RhdCk7CkBAIC0xNTExLDcgKzE1MDksNyBAQAogCQlvaGNpLT5kaXNhYmxlZCsrOwogCQllcnIgKCIlcyBkZXZpY2UgcmVtb3ZlZCEiLCBvaGNpLT5zbG90X25hbWUpOwogCQlyZXR1cm4gLTE7Ci0JCisKIAl9IGVsc2UgaWYgKChpbnRzICY9IHJlYWRsICgmcmVncy0+aW50cmVuYWJsZSkpID09IDApIHsKIAkJZGJnKCJoY19pbnRlcnJ1cHQ6IHJldHVybmluZy4uXG4iKTsKIAkJcmV0dXJuIDB4ZmY7CmRpZmYgLS1naXQgYS9jcHUvbXBjNXh4eC91c2Jfb2hjaS5jIGIvY3B1L21wYzV4eHgvdXNiX29oY2kuYwppbmRleCAyZjE5ZDdlLi5jNzc0ZGEzIDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4eC91c2Jfb2hjaS5jCisrKyBiL2NwdS9tcGM1eHh4L3VzYl9vaGNpLmMKQEAgLTEyNjEsNyArMTI2MSw3IEBACiAJCQlzdGF0ID0gVVNCX1NUX0NSQ19FUlI7CiAJCQlicmVhazsKIAkJfQotCQkKKwogCQkvKiBOT1RFOiBzaW5jZSB3ZSBhcmUgbm90IGludGVycnVwdCBkcml2ZW4gaW4gVS1Cb290IGFuZCBhbHdheXMKIAkJICogaGFuZGxlIG9ubHkgb25lIFVSQiBhdCBhIHRpbWUsIHdlIGNhbm5vdCBhc3N1bWUgdGhlCiAJCSAqIHRyYW5zYWN0aW9uIGZpbmlzaGVkIG9uIHRoZSBmaXJzdCBzdWNjZXNzZnVsIHJldHVybiBmcm9tCkBAIC0xNDgzLDcgKzE0ODMsNyBAQAogCXN0cnVjdCBvaGNpX3JlZ3MgKnJlZ3MgPSBvaGNpLT5yZWdzOwogCWludCBpbnRzOwogCWludCBzdGF0ID0gLTE7Ci0JCisKIAlpZiAoKG9oY2ktPmhjY2EtPmRvbmVfaGVhZCAhPSAwKSAmJgogCSAgICAgIShvaGNpX2NwdV90b19sZTMyKG9oY2ktPmhjY2EtPmRvbmVfaGVhZCkgJiAweDAxKSkgewogCkBAIC0xNDkzLDcgKzE0OTMsNyBAQAogCQlvaGNpLT5kaXNhYmxlZCsrOwogCQllcnIgKCIlcyBkZXZpY2UgcmVtb3ZlZCEiLCBvaGNpLT5zbG90X25hbWUpOwogCQlyZXR1cm4gLTE7Ci0JCisKIAl9IGVsc2UgaWYgKChpbnRzICY9IHJlYWRsICgmcmVncy0+aW50cmVuYWJsZSkpID09IDApIHsKIAkJZGJnKCJoY19pbnRlcnJ1cHQ6IHJldHVybmluZy4uXG4iKTsKIAkJcmV0dXJuIDB4ZmY7CmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9jcHVfaW5pdC5jIGIvY3B1L21wYzgzeHgvY3B1X2luaXQuYwppbmRleCA3ZTgwY2VkLi5kY2IzNDQ1IDEwMDY0NAotLS0gYS9jcHUvbXBjODN4eC9jcHVfaW5pdC5jCisrKyBiL2NwdS9tcGM4M3h4L2NwdV9pbml0LmMKQEAgLTE2MSw0ICsxNjEsMyBAQAogewogCXJldHVybiAwOwogfQotCmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9wY2kuYyBiL2NwdS9tcGM4M3h4L3BjaS5jCmluZGV4IGQ5ZGFhM2UuLmQ1ZmE4MTEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3BjaS5jCisrKyBiL2NwdS9tcGM4M3h4L3BjaS5jCkBAIC00NSwxMiArNDUsMTIgQEAKIHBjaV9tcGM4M3h4X2luaXQodm9sYXRpbGUgc3RydWN0IHBjaV9jb250cm9sbGVyICpob3NlKQogewogCXZvbGF0aWxlIGltbWFwX3QgKglpbW1yOwotCXZvbGF0aWxlIGNsazgzNDlfdCAqCWNsazsJCisJdm9sYXRpbGUgY2xrODM0OV90ICoJY2xrOwogCXZvbGF0aWxlIGxhdzgzNDlfdCAqCXBjaV9sYXc7CiAJdm9sYXRpbGUgcG90ODM0OV90ICoJcGNpX3BvdDsKIAl2b2xhdGlsZSBwY2ljdHJsODM0OV90ICoJcGNpX2N0cmw7CiAJdm9sYXRpbGUgcGNpY29uZjgzNDlfdCAqCXBjaV9jb25mOwotCQorCiAJdTggdmFsOCx0bXA4LHJldDsKIAl1MTYgcmVnMTYsdG1wMTY7CiAJdTMyIHZhbDMyLHRtcDMyOwpAQCAtNjksNyArNjksNyBAQAogCXVkZWxheSgyMDAwKTsKIAljbGstPm9jY3IgPSAweGZmMDAwMDAwOwogCXVkZWxheSgyMDAwKTsKLQkKKwogCS8qCiAJICogQ29uZmlndXJlIFBDSSBMb2NhbCBBY2Nlc3MgV2luZG93cwogCSAqLwpAQCAtODksNyArODksNyBAQAogCXBjaV9wb3RbMV0ucG90YXIgPSAoQ0ZHX1BDSTFfSU9fQkFTRSA+PiAxMikgJiBQT1RBUl9UQV9NQVNLOwogCXBjaV9wb3RbMV0ucG9iYXIgPSAoQ0ZHX1BDSTFfSU9fUEhZUyA+PiAxMikgJiBQT0JBUl9CQV9NQVNLOwogCXBjaV9wb3RbMV0ucG9jbXIgPSBQT0NNUl9FTiB8IFBPQ01SX0lPIHwgKFBPQ01SX0NNXzE2TSAmIFBPQ01SX0NNX01BU0spOwotLy8jaWYgZGVmaW5lZChDT05GSUdfUENJXzIpCQorCiAJcGNpX3BvdFszXS5wb3RhciA9IChDRkdfUENJMl9NRU1fQkFTRSA+PiAxMikgJiBQT1RBUl9UQV9NQVNLOwogCXBjaV9wb3RbM10ucG9iYXIgPSAoQ0ZHX1BDSTJfTUVNX1BIWVMgPj4gMTIpICYgUE9CQVJfQkFfTUFTSzsKIAlwY2lfcG90WzNdLnBvY21yID0gUE9DTVJfRU4gfCBQT0NNUl9EU1QgfCAoUE9DTVJfQ01fNTEyTSAmIFBPQ01SX0NNX01BU0spOwpAQCAtOTgsOCArOTgsNyBAQAogCXBjaV9wb3RbNF0ucG90YXIgPSAoQ0ZHX1BDSTJfSU9fQkFTRSA+PiAxMikgJiBQT1RBUl9UQV9NQVNLOwogCXBjaV9wb3RbNF0ucG9iYXIgPSAoQ0ZHX1BDSTJfSU9fUEhZUyA+PiAxMikgJiBQT0JBUl9CQV9NQVNLOwogCXBjaV9wb3RbNF0ucG9jbXIgPSBQT0NNUl9FTiB8IFBPQ01SX0RTVCB8IFBPQ01SX0lPIHwgKFBPQ01SX0NNXzE2TSAmIFBPQ01SX0NNX01BU0spOwotLy8jZW5kaWYJCi0JCisKIAkvKgogCSAqIENvbmZpZ3VyZSBQQ0kgSW5ib3VuZCBUcmFuc2xhdGlvbiBXaW5kb3dzCiAJICovCkBAIC0xMzEsMTMgKzEzMCwxMyBAQAogCXZhbDggPSAweDM0OwogCXJldCA9IGkyY193cml0ZSgweDI2LDB4NywxLCZ2YWw4LDEpOwogI2lmIGRlZmluZWQoUENJXzY0QklUKQotCXZhbDggPSAweGY0OwkJLy8gUE1DMjwtPlBDSTEgIDY0Yml0CisJdmFsOCA9IDB4ZjQ7CS8qIFBNQzI8LT5QQ0kxICA2NGJpdCAqLwogI2VsaWYgZGVmaW5lZChQQ0lfQUxMX1BDSTEpCi0JdmFsOCA9IDB4ZjM7CQkvLyBQTUMxPC0+UENJMSxQTUMyPC0+UENJMSxQTUMzPC0+UENJMSAgMzJiaXQKKwl2YWw4ID0gMHhmMzsJLyogUE1DMTwtPlBDSTEsUE1DMjwtPlBDSTEsUE1DMzwtPlBDSTEgIDMyYml0ICovCiAjZWxpZiBkZWZpbmVkKFBDSV9PTkVfUENJMSkKLQl2YWw4ID0gMHhmOTsJCS8vIFBNQzE8LT5QQ0kxLFBNQzI8LT5QQ0kyLFBNQzM8LT5QQ0kyICAzMmJpdAorCXZhbDggPSAweGY5OwkvKiBQTUMxPC0+UENJMSxQTUMyPC0+UENJMixQTUMzPC0+UENJMiAgMzJiaXQgKi8KICNlbGlmIGRlZmluZWQoUENJX1RXT19QQ0kxKQotCXZhbDggPSAweGY1OwkJLy8gUE1DMTwtPlBDSTEsUE1DMjwtPlBDSTEsUE1DMzwtPlBDSTIgMzJiaXQKKwl2YWw4ID0gMHhmNTsJLyogUE1DMTwtPlBDSTEsUE1DMjwtPlBDSTEsUE1DMzwtPlBDSTIgMzJiaXQgKi8KICNlbHNlCiAJdmFsOCA9IDB4ZjU7CiAjZW5kaWYKQEAgLTE2MCw3ICsxNTksNyBAQAogCXBjaV9jdHJsWzBdLmdjciA9IDE7CiAjaWZuZGVmIFBDSV82NEJJVAogCXBjaV9jdHJsWzFdLmdjciA9IDE7Ci0jZW5kaWYJCisjZW5kaWYKIAl1ZGVsYXkoMjAwMCk7CiAKIAlob3NlWzBdLmZpcnN0X2J1c25vID0gMDsKQEAgLTE4Niw3ICsxODUsNyBAQAogI2RlZmluZSBQQ0lfQ0xBU1NfQlJJREdFCTB4MDYKIAlyZWcxNiA9IDB4ZmY7CiAJdG1wMzIgPSAweGZmZmY7Ci0JcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2J5dGUoJmhvc2VbMF0sUENJX0JERigwLDAsMCksUENJX0NMQVNTX0NPREUsUENJX0NMQVNTX0JSSURHRSk7CQorCXBjaV9ob3NlX3dyaXRlX2NvbmZpZ19ieXRlKCZob3NlWzBdLFBDSV9CREYoMCwwLDApLFBDSV9DTEFTU19DT0RFLFBDSV9DTEFTU19CUklER0UpOwogCiAJcGNpX2hvc2VfcmVhZF9jb25maWdfd29yZCAoJmhvc2VbMF0sUENJX0JERigwLDAsMCksUENJX0NPTU1BTkQsICZyZWcxNik7CiAJcmVnMTYgfD0gUENJX0NPTU1BTkRfU0VSUiB8IFBDSV9DT01NQU5EX01BU1RFUiB8IFBDSV9DT01NQU5EX01FTU9SWTsKQEAgLTIxOSw3ICsyMTgsNyBAQAogCQkJICAgKENGR19JTU1SQkFSKzB4ODM4MCksCiAJCQkgICAoQ0ZHX0lNTVJCQVIrMHg4Mzg0KSk7CiAKLQlwY2lfaG9zZV93cml0ZV9jb25maWdfYnl0ZSgmaG9zZVsxXSxQQ0lfQkRGKDAsMCwwKSxQQ0lfQ0xBU1NfQ09ERSxQQ0lfQ0xBU1NfQlJJREdFKTsJCisJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2J5dGUoJmhvc2VbMV0sUENJX0JERigwLDAsMCksUENJX0NMQVNTX0NPREUsUENJX0NMQVNTX0JSSURHRSk7CiAJcGNpX2hvc2VfcmVhZF9jb25maWdfd29yZCAoJmhvc2VbMV0sUENJX0JERigwLDAsMCksIFBDSV9DT01NQU5ELCAmcmVnMTYpOwogCXJlZzE2IHw9IFBDSV9DT01NQU5EX1NFUlIgfCBQQ0lfQ09NTUFORF9NQVNURVIgfCBQQ0lfQ09NTUFORF9NRU1PUlk7CiAJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX3dvcmQoJmhvc2VbMV0sUENJX0JERigwLDAsMCksIFBDSV9DT01NQU5ELCByZWcxNik7CmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9yZXNldHZlYy5TIGIvY3B1L21wYzgzeHgvcmVzZXR2ZWMuUwppbmRleCA3NTkzZTczLi4zZGZjZDBkIDEwMDY0NAotLS0gYS9jcHUvbXBjODN4eC9yZXNldHZlYy5TCisrKyBiL2NwdS9tcGM4M3h4L3Jlc2V0dmVjLlMKQEAgLTIsNSArMiw1IEBACiAjaWZuZGVmIEZJWE1FCiAjaWYgMAogCWIgX3N0YXJ0X2U1MDAKLSNlbmRpZgkKKyNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC9zcGRfc2RyYW0uYyBiL2NwdS9tcGM4M3h4L3NwZF9zZHJhbS5jCmluZGV4IDViZDExMmMuLjYzZGNkNjYgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3NwZF9zZHJhbS5jCisrKyBiL2NwdS9tcGM4M3h4L3NwZF9zZHJhbS5jCkBAIC0zNiwyMCArMzYsMTYgQEAKIAogI2lmZGVmIENPTkZJR19TUERfRUVQUk9NCiAKLQogI2lmIGRlZmluZWQoQ09ORklHX0REUl9FQ0MpCiBleHRlcm4gdm9pZCBkbWFfaW5pdCh2b2lkKTsKIGV4dGVybiB1aW50IGRtYV9jaGVjayh2b2lkKTsKIGV4dGVybiBpbnQgZG1hX3hmZXIodm9pZCAqZGVzdCwgdWludCBjb3VudCwgdm9pZCAqc3JjKTsKICNlbmRpZgogCi0KICNpZm5kZWYJQ0ZHX1JFQURfU1BECiAjZGVmaW5lIENGR19SRUFEX1NQRAlpMmNfcmVhZAogI2VuZGlmCiAKLQotCiAvKgogICogQ29udmVydCBwaWNvc2Vjb25kcyBpbnRvIGNsb2NrIGN5Y2xlcyAocm91bmRpbmcgdXAgaWYgbmVlZGVkKS4KICAqLwpAQCAtNjcsMTQgKzYzLDEyIEBACiAJcmV0dXJuIGNsa3M7CiB9CiAKLQogdW5zaWduZWQgaW50CiBiYW5rc2l6ZSh1bnNpZ25lZCBjaGFyIHJvd19kZW5zKQogewogCXJldHVybiAoKHJvd19kZW5zID4+IDIpIHwgKChyb3dfZGVucyAmIDMpIDw8IDYpKSA8PCAyNDsKIH0KIAotCiBsb25nIGludCBzcGRfc2RyYW0oaW50KHJlYWRfc3BkKSh1aW50IGFkZHIpKQogewogCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKilDRkdfSU1NUkJBUjsKQEAgLTg2LDggKzgwLDggQEAKIAl1bnNpZ25lZCBpbnQgbGF3X3NpemU7CiAJdW5zaWduZWQgY2hhciBjYXNsYXQ7CiAJdW5zaWduZWQgaW50IHRyZmMsIHRyZmNfY2xrLCB0cmZjX2xvdzsKLQkKLSN3YXJuaW5nIEN1cnJlbnQgc3BkX3NkcmFtIGRvZXMgbm90IGZpdCBpdHMgdXNhZ2UuLi4gYWRqdXN0IGltcGxlbWVudGF0aW9uIG9yIEFQSS4uLgkKKworI3dhcm5pbmcgQ3VycmVudCBzcGRfc2RyYW0gZG9lcyBub3QgZml0IGl0cyB1c2FnZS4uLiBhZGp1c3QgaW1wbGVtZW50YXRpb24gb3IgQVBJLi4uCiAKIAlDRkdfUkVBRF9TUEQoU1BEX0VFUFJPTV9BRERSRVNTLCAwLCAxLCAodWNoYXIgKikgJiBzcGQsIHNpemVvZiAoc3BkKSk7CiAKQEAgLTExMSw3ICsxMDUsNyBAQAogCWRlYnVnKCJcbiIpOwogCWRlYnVnKCJjczJfYm5kcyA9IDB4JTA4eFxuIixkZHItPmNzYm5kc1syXS5jc2JuZHMpOwogCWRlYnVnKCJjczJfY29uZmlnID0gMHglMDh4XG4iLGRkci0+Y3NfY29uZmlnWzJdKTsKLQkKKwogCWlmIChzcGQubnJvd3MgPT0gMikgewogCQlkZHItPmNzYm5kc1szXS5jc2JuZHMgPSAoIChiYW5rc2l6ZShzcGQucm93X2RlbnMpID4+IDgpCiAJCQkJICB8ICgoYmFua3NpemUoc3BkLnJvd19kZW5zKSA+PiAyMykgLSAxKSApOwpAQCAtMjk4LDkgKzI5MiwxMiBAQAogCiAJdWRlbGF5KDUwMCk7CiAKLQotCWRkci0+c2RyYW1fY2xrX2NudGwgPSAweDgyMDAwMDAwOy8qU1NfRU49MSwgQ0xLX0FESlNUID0gMi1NQ0svTUNLX0IsIGlzIGxhdWNoZWQgMS8yIG9mIG9uZSBTRFJBTSBjbG9jayBjeWNsZSBhZnRlciBhZGRyZXNzL2NvbW1hbmQqLwotCisJLyoKKwkgKiBTU19FTj0xLAorCSAqIENMS19BREpTVCA9IDItTUNLL01DS19CLCBpcyBsYXVjaGVkIDEvMiBvZiBvbmUgU0RSQU0KKwkgKiBjbG9jayBjeWNsZSBhZnRlciBhZGRyZXNzL2NvbW1hbmQKKwkgKi8KKwlkZHItPnNkcmFtX2Nsa19jbnRsID0gMHg4MjAwMDAwMDsKIAogCS8qCiAJICogRmlndXJlIG91dCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBzZHJhbV9jZmcgcmVnaXN0ZXIuICBCdWlsZCB1cApAQCAtMzM5LDcgKzMzNiw2IEBACiAjZW5kaWYKIAogCWRkci0+c2RyYW1fY2ZnID0gdG1wOwotCiAJYXNtKCJzeW5jO2lzeW5jIik7CiAJdWRlbGF5KDUwMCk7CiAKQEAgLTM0Nyw3ICszNDMsNiBAQAogCiAJcmV0dXJuIG1lbXNpemU7LyppbiBNQnl0ZXMqLwogfQotCiAjZW5kaWYgLyogQ09ORklHX1NQRF9FRVBST00gKi8KIAogCkBAIC00MDcsNyArNDAyLDcgQEAKIAkgKi8KIAlkZHItPmVycl9kaXNhYmxlID0gMHgwMDAwMDAwMDsKIAlhc20oInN5bmM7aXN5bmMiKTsKLSNlbmRpZgkKKyNlbmRpZgogfQogCiAjZW5kaWYJLyogQ09ORklHX0REUl9FQ0MgKi8KZGlmZiAtLWdpdCBhL2NwdS9tcGM4M3h4L3NwZWVkLmMgYi9jcHUvbXBjODN4eC9zcGVlZC5jCmluZGV4IDY1MzBmYmYuLjI2MDEzN2QgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4M3h4L3NwZWVkLmMKKysrIGIvY3B1L21wYzgzeHgvc3BlZWQuYwpAQCAtMTAxLDcgKzEwMSw3IEBACiAJdTMyIGNvcmVjbmZfdGFiX2luZGV4OwogCXU4ICBjb3JlcGxsOwogCXUzMiBsY3JyOwotCQorCiAJdTMyIGNzYl9jbGs7CiAJdTMyIHRzZWMxX2NsazsKIAl1MzIgdHNlYzJfY2xrOwpAQCAtMTEzLDEwICsxMTMsMTAgQEAKIAl1MzIgbGJpdV9jbGs7CiAJdTMyIGxjbGtfY2xrOwogCXUzMiBkZHJfY2xrOwotCQorCiAJaWYgKChpbS0+c3lzY29uZi5pbW1yYmFyICYgSU1NUkJBUl9CQVNFX0FERFIpICE9ICh1MzIpaW0pCiAJCXJldHVybiAtMTsKLQkJCisKICNpZm5kZWYgQ0ZHX0hSQ1dfSElHSAogIyBlcnJvciAiQ0ZHX0hSQ1dfSElHSCBtdXN0IGJlIGRlZmluZWQgaW4gaW5jbHVkZS9jb25maWdzL01DUDgzWFhBRFMuaCIKICNlbmRpZiAvKiBDRkdfSENXRF9ISUdIICovCkBAIC0xMzMsNyArMTMzLDYgQEAKIAkJLyogdGhvdWdoIFJDV0hfUENJSE9TVCBpcyBkZWZpbmVkIGluIENGR19IUkNXX0hJR0ggdGhlIGltLT5yZXNldC5yY3dociBQQ0kgSG9zdCBNb2RlIGlzIGRpc2FibGVkICovCiAJCS8qIEZJWE1FOiBmaW5kb3V0IGlmIHRoZXJlIGlzIGEgd2F5IHRvIGlzc3VlIHNvbWUgd2FybmluZyAqLwogCQlyZXR1cm4gLTI7Ci0JCQogCX0KIAlpZiAoaW0tPmNsay5zcG1yICYgU1BNUl9DS0lEKSB7CiAJCXBjaV9zeW5jX2luID0gQ09ORklHXzgzWFhfQ0xLSU4gLyAyOyAvKiBQQ0kgQ2xvY2sgaXMgaGFsZiBDT05GSUdfODNYWF9DTEtJTiAqLwpAQCAtMTU3LDE3ICsxNTYsMTYgQEAKICNlbmRpZiAvKiAoQ0ZHX0hSQ1dfSElHSCB8IFJDV0hfUENJSE9TVCkgKi8KIAogCS8qIHdlIGhhdmUgdXAgdG8gZGF0ZSBwY2lfc3luY19pbiAqLwotCQogCXNwbWYgPSAoKGltLT5yZXNldC5yY3dsICYgUkNXTF9TUE1GKSA+PiBSQ1dMX1NQTUZfU0hJRlQpOwogCWNsa2luX2RpdiA9ICgoaW0tPmNsay5zcG1yICYgU1BNUl9DS0lEKSA+PiBTUE1SX0NLSURfU0hJRlQpOwotCQorCiAJaWYgKChpbS0+cmVzZXQucmN3bCAmIFJDV0xfTEJJVUNNKSB8fCAoaW0tPnJlc2V0LnJjd2wgJiBSQ1dMX0REUkNNKSkgewogCQljc2JfY2xrCT0gKHBjaV9zeW5jX2luICogc3BtZiAqICgxICsgY2xraW5fZGl2KSkgLyAyOwogCX0KIAllbHNlIHsKIAkJY3NiX2NsayA9IHBjaV9zeW5jX2luICogc3BtZiAqICgxICsgY2xraW5fZGl2KTsKIAl9Ci0JCisKIAlzY2NyID0gaW0tPmNsay5zY2NyOwogCXN3aXRjaCAoKHNjY3IgJiBTQ0NSX1RTRUMxQ00pID4+IFNDQ1JfVFNFQzFDTV9TSElGVCkgewogCWNhc2UgMDoKQEAgLTE4Niw3ICsxODQsNyBAQAogCQkvKiB1bmtvd24gU0NDUl9UU0VDMUNNIHZhbHVlICovCiAJCXJldHVybiAtNDsKIAl9Ci0JCisKIAlzd2l0Y2ggKChzY2NyICYgU0NDUl9UU0VDMkNNKSA+PiBTQ0NSX1RTRUMyQ01fU0hJRlQpIHsKIAljYXNlIDA6CiAJCXRzZWMyX2NsayA9IDA7CkBAIC0yMDUsNyArMjAzLDcgQEAKIAkJcmV0dXJuIC01OwogCX0KIAlpMmNfY2xrID0gdHNlYzJfY2xrOwotCQorCiAJc3dpdGNoICgoc2NjciAmIFNDQ1JfRU5DQ00pID4+IFNDQ1JfRU5DQ01fU0hJRlQpIHsKIAljYXNlIDA6CiAJCWVuY19jbGsgPSAwOwpAQCAtMjIzLDcgKzIyMSw3IEBACiAJCS8qIHVua293biBTQ0NSX0VOQ0NNIHZhbHVlICovCiAJCXJldHVybiAtNjsKIAl9Ci0JCisKIAlzd2l0Y2ggKChzY2NyICYgU0NDUl9VU0JNUEhDTSkgPj4gU0NDUl9VU0JNUEhDTV9TSElGVCkgewogCWNhc2UgMDoKIAkJdXNibXBoX2NsayA9IDA7CkBAIC0yNTksMTQgKzI1NywxNCBAQAogCQkvKiB1bmtvd24gU0NDUl9VU0JEUkNNIHZhbHVlICovCiAJCXJldHVybiAtODsKIAl9Ci0JCisKIAlpZiAodXNibXBoX2NsayAhPSAwCiAJCSYmIHVzYmRyX2NsayAhPSAwCiAJCSYmIHVzYm1waF9jbGsgIT0gdXNiZHJfY2xrICkgewogCQkvKiBpZiBVU0IgTVBIIGNsb2NrIGlzIG5vdCBkaXNhYmxlZCBhbmQgVVNCIERSIGNsb2NrIGlzIG5vdCBkaXNhYmxlZCB0aGFuIFVTQiBNUEggJiBVU0IgRFIgbXVzdCBoYXZlIHRoZSBzYW1lIHJhdGUgKi8KIAkJcmV0dXJuIC05OwogCX0KLQkKKwogCWxiaXVfY2xrID0gY3NiX2NsayAqICgxICsgKChpbS0+cmVzZXQucmN3bCAmIFJDV0xfTEJJVUNNKSA+PiBSQ1dMX0xCSVVDTV9TSElGVCkpOwogCWxjcnIgPSAoaW0tPmxidXMubGNyciAmIExDUlJfQ0xLRElWKSA+PiBMQ1JSX0NMS0RJVl9TSElGVDsKIAlzd2l0Y2ggKGxjcnIpIHsKQEAgLTI3OSw5ICsyNzcsOSBAQAogCQkvKiB1bmtub3duIGxjcnIgKi8KIAkJcmV0dXJuIC0xMDsKIAl9Ci0JCisKIAlkZHJfY2xrID0gY3NiX2NsayAqICgxICsgKChpbS0+cmVzZXQucmN3bCAmIFJDV0xfRERSQ00pID4+IFJDV0xfRERSQ01fU0hJRlQpKTsKLQkKKwogCWNvcmVwbGwgPSAoaW0tPnJlc2V0LnJjd2wgJiBSQ1dMX0NPUkVQTEwpID4+IFJDV0xfQ09SRVBMTF9TSElGVDsKIAljb3JlY25mX3RhYl9pbmRleCA9ICgoY29yZXBsbCAmIDB4MUYpIDw8IDIpIHwgKChjb3JlcGxsICYgMHg2MCkgPj4gNSk7CiAJaWYgKGNvcmVjbmZfdGFiX2luZGV4ID4gKHNpemVvZihjb3JlY25mX3RhYikvc2l6ZW9mKGNvcmVjbmZfdCkpICkgewpAQCAtMzEwLDcgKzMwOCw3IEBACiAJCS8qIHVua293biBjb3JlIHRvIGNzYiByYXRpbyAqLwogCQlyZXR1cm4gLTEyOwogCX0KLQkKKwogCWdkLT5jc2JfY2xrICAgID0gY3NiX2NsayAgIDsKIAlnZC0+dHNlYzFfY2xrICA9IHRzZWMxX2NsayA7CiAJZ2QtPnRzZWMyX2NsayAgPSB0c2VjMl9jbGsgOwpAQCAtMzE4LDExICszMTYsMTEgQEAKIAlnZC0+dXNibXBoX2NsayA9IHVzYm1waF9jbGs7CiAJZ2QtPnVzYmRyX2NsayAgPSB1c2Jkcl9jbGsgOwogCWdkLT5pMmNfY2xrICAgID0gaTJjX2NsayAgIDsKLQlnZC0+ZW5jX2NsayAgICA9IGVuY19jbGsgICA7CQorCWdkLT5lbmNfY2xrICAgID0gZW5jX2NsayAgIDsKIAlnZC0+bGJpdV9jbGsgICA9IGxiaXVfY2xrICA7CiAJZ2QtPmxjbGtfY2xrICAgPSBsY2xrX2NsayAgOwogCWdkLT5kZHJfY2xrICAgID0gZGRyX2NsayAgIDsKLQkKKwogCWdkLT5jcHVfY2xrID0gZ2QtPmNvcmVfY2xrOwogCWdkLT5idXNfY2xrID0gZ2QtPmxiaXVfY2xrOwogCXJldHVybiAwOwpAQCAtMzQxLDcgKzMzOSw3IEBACiBpbnQgcHJpbnRfY2xvY2tfY29uZiAodm9pZCkKIHsKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKLQkKKwogCXByaW50ZigiQ2xvY2sgY29uZmlndXJhdGlvbjpcbiIpOwogCXByaW50ZigiICBDb2hlcmVudCBTeXN0ZW0gQnVzOiAlNGQgTUh6XG4iLGdkLT5jc2JfY2xrLzEwMDAwMDApOwogCXByaW50ZigiICBDb3JlOiAgICAgICAgICAgICAgICAlNGQgTUh6XG4iLGdkLT5jb3JlX2Nsay8xMDAwMDAwKTsKQEAgLTM1Myw3ICszNTEsNyBAQAogCXByaW50ZigiICBUU0VDMjogICAgICAgICAgICAgICAlNGQgTUh6XG4iLGdkLT50c2VjMl9jbGsvMTAwMDAwMCk7CiAJcHJpbnRmKCIgIFVTQiBNUEg6ICAgICAgICAgICAgICU0ZCBNSHpcbiIsZ2QtPnVzYm1waF9jbGsvMTAwMDAwMCk7CiAJcHJpbnRmKCIgIFVTQiBEUjogICAgICAgICAgICAgICU0ZCBNSHpcbiIsZ2QtPnVzYmRyX2Nsay8xMDAwMDAwKTsKLQkKKwogI2lmIDAKIAlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIApAQCAtNDE5LDYgKzQxNyw1IEBACiAJfQogCXB1dGMgKCdcbicpOwogI2VuZGlmCi0JcmV0dXJuICgwKTsKKwlyZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvc3RhcnQuUyBiL2NwdS9tcGM4M3h4L3N0YXJ0LlMKaW5kZXggZTlmMDc5MC4uZmIwMDFhNiAxMDA2NDQKLS0tIGEvY3B1L21wYzgzeHgvc3RhcnQuUworKysgYi9jcHUvbXBjODN4eC9zdGFydC5TCkBAIC0yOCw3ICsyOCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPG1wYzgzeHguaD4gCisjaW5jbHVkZSA8bXBjODN4eC5oPgogI2luY2x1ZGUgPHZlcnNpb24uaD4KIAogI2RlZmluZSBDT05GSUdfODNYWAkxCQkvKiBuZWVkZWQgZm9yIExpbnV4IGtlcm5lbCBoZWFkZXIgZmlsZXMqLwpAQCAtODksNyArODksNyBAQAogCS5hc2NpaSBVX0JPT1RfVkVSU0lPTgogCS5hc2NpaSAiICgiLCBfX0RBVEVfXywgIiAtICIsIF9fVElNRV9fLCAiKSIKIAkuYXNjaWkgIiAiLCBDT05GSUdfSURFTlRfU1RSSU5HLCAiXDAiCi0JCisKIAkudGV4dAogI2RlZmluZSBfSFJDV19UQUJMRV9FTlRSWSh3KQkJXAogCS5maWxsCTgsMSwoKCh3KT4+MjQpJjB4ZmYpOwlcCkBAIC0xMDEsNyArMTAxLDYgQEAKIAlfSFJDV19UQUJMRV9FTlRSWShDRkdfSFJDV19ISUdIKQogCiAKLQkKICNpZm5kZWYgQ09ORklHX0RFRkFVTFRfSU1NUgogI2Vycm9yIENPTkZJR19ERUZBVUxUX0lNTVIgbXVzdCBiZSBkZWZpbmVkCiAjZW5kaWYgLyogQ0ZHX0RFRkFVTFRfSU1NUiAqLwpAQCAtMTQzLDcgKzE0Miw3IEBACiAJLiA9IEVYQ19PRkZfU1lTX1JFU0VUICsgMHgxMAogCiAJLmdsb2JsCV9zdGFydF93YXJtCi1fc3RhcnRfd2FybTogCitfc3RhcnRfd2FybToKIAlsaQlyMjEsIEJPT1RGTEFHX1dBUk0JLyogU29mdHdhcmUgcmVib290CSovCiAJYglib290X3dhcm0KIApAQCAtMTU2LDEyICsxNTUsMTIgQEAKIAlsaXMJcjMsIENGR19JTU1SQkFSQGgKIAlvcmkJcjMsIHIzLCBDRkdfSU1NUkJBUkBsCiAJc3R3CXIzLCBJTU1SQkFSKHI0KQotCQorCiAJLyogSW5pdGlhbGlzZSB0aGUgRTMwMCBwcm9jZXNzb3IgY29yZQkJKi8KIAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0JCisKIAlibAlpbml0X2UzMDBfY29yZQotCQorCiAjaWZuZGVmIENGR19SQU1CT09UCiAKIAkvKiBJbmZsYXRlIGZsYXNoIGxvY2F0aW9uIHNvIGl0IGFwcGVhcnMgZXZlcnl3aGVyZSwgY2FsY3VsYXRlICovCkBAIC0yMTgsNyArMjE3LDcgQEAKIC8qIEV4dGVybmFsIEludGVycnVwdCBleGNlcHRpb24uICovCiAjaWZuZGVmIEZJWE1FCiAJU1REX0VYQ0VQVElPTigweDUwMCwgRXh0SW50ZXJydXB0LCBleHRlcm5hbF9pbnRlcnJ1cHQpCi0jZW5kaWYJCisjZW5kaWYKIAogLyogQWxpZ25tZW50IGV4Y2VwdGlvbi4gKi8KIAkuID0gMHg2MDAKQEAgLTQxNyw5ICs0MTYsOSBAQAogCWxpcyByNCwgQ0ZHX1dBVENIRE9HX1ZBTFVFCiAJb3JpIHI0LCByNCwgKFNXQ1JSX1NXRU4gfCBTV0NSUl9TV1JJIHwgU1dDUlJfU1dQUikKIAlzdHcgcjQsIFNXQ1JSKHIzKQotCQorCiAJLyogYW5kIHJlc2V0IGl0ICovCi0JCisKIAlsaQlyNCwgMHg1NTZDCiAJc3RoCXI0LCBTV1NSUkBsKHIzKQogCWxpCXI0LCAweEFBMzkKQEAgLTUwMiw3ICs1MDEsNyBAQAogCiAJLyogRG9uZSEJCQkJCQkqLwogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQlibHIgCisJYmxyCiAKIC8qIENhY2hlIGZ1bmN0aW9ucy4KICAqCkBAIC02NDUsOCArNjQ0LDggQEAKIAltdGN0cglyMAogCWxhCXI4LC00KHI0KQogCWxhCXI3LC00KHIzKQotCQotCS8qIGFuZCBjb21wYXJlICovCQorCisJLyogYW5kIGNvbXBhcmUgKi8KIDIwOglsd3p1CXIyMCw0KHI4KQogCWx3enUJcjIxLDQocjcpCiAJeG9yLiByMjIsIHIyMCwgcjIxCkBAIC02NjQsMjEgKzY2MywxOSBAQAogMzoJbHd6dQlyMCwtNChyOCkKIAlzdHd1CXIwLC00KHI3KQogCWJkbnoJM2IKLQkKLQkKIAogLyoKICAqIE5vdyBmbHVzaCB0aGUgY2FjaGU6IG5vdGUgdGhhdCB3ZSBtdXN0IHN0YXJ0IGZyb20gYSBjYWNoZSBhbGlnbmVkCiAgKiBhZGRyZXNzLiBPdGhlcndpc2Ugd2UgbWlnaHQgbWlzcyBvbmUgY2FjaGUgbGluZS4KICAqLwotNDoJCis0OgogCWJsIHVuX3NldHVwX3N0YWNrX2luX2RhdGFfY2FjaGUKIAltciByNywgcjMKIAltciByOCwgcjQKIAlibCBkY2FjaGVfZGlzYWJsZQogCW1yIHIzLCByNwogCW1yIHI0LCByOAotCQorCiAJY21wd2kJcjYsMAogCWFkZAlyNSxyMyxyNQogCWJlcQk3ZgkvKiBBbHdheXMgZmx1c2ggcHJlZmV0Y2ggcXVldWUgaW4gYW55IGNhc2UgKi8KQEAgLTg4OSw5ICs4ODYsOSBAQAogCS8qIEFkZHJlc3MgTWFzayBpbiBPUjAgc28gUk9NIGFwcGVhcnMgZXZlcnl3aGVyZSAgICAgICovCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAlsaXMJcjMsIChDRkdfSU1NUkJBUilAaCAgLyogcjMgPD0gQ0ZHX0lNTVJCQVIgICAgKi8KLQlsd3oJcjQsIE9SMEBsKHIzKSAgICAgCisJbHd6CXI0LCBPUjBAbChyMykKIAlsaQlyNSwgMHg3ZmZmICAgICAgICAvKiByNSA8PSAweDAwMDA3RkZGRiAqLwotCWFuZAlyNCwgcjQsIHI1ICAgICAgICAKKwlhbmQJcjQsIHI0LCByNQogCXN0dwlyNCwgT1IwQGwocjMpICAgICAvKiBPUjAgPD0gT1IwICYgMHgwMDAwN0ZGRkYgKi8KIAogCS8qIEFzIE1QQzgzNDlFIFVzZXIncyBNYW51YWwgcHJlc2VudGVkLCB3aGVuIFJDV1tCTVNdIGlzIHNldCB0byAwLApAQCAtOTI2LDkgKzkyMyw5IEBACiAJLyogSW5pdGlhbGl6ZSB0aGUgQlIwIHdpdGggdGhlIGJvb3QgUk9NIHN0YXJ0aW5nIGFkZHJlc3MuICovCiAJbHd6IHI0LCBCUjAocjMpCiAJbGkgIHI1LCAweDdGRkYKLQlhbmQgcjQsIHI0LCByNSAgICAgICAgICAgICAKKwlhbmQgcjQsIHI0LCByNQogCWxpcyByNSwgKENGR19GTEFTSF9CQVNFICYgMHhGRkZGODAwMClAaAotCW9yaSByNSwgcjUsIChDRkdfRkxBU0hfQkFTRSAmIDB4RkZGRjgwMDApQGwgCisJb3JpIHI1LCByNSwgKENGR19GTEFTSF9CQVNFICYgMHhGRkZGODAwMClAbAogCW9yICByNSwgcjUsIHI0CiAJc3R3IHI1LCBCUjAocjMpIC8qIHI1IDw9IChDRkdfRkxBU0hfQkFTRSAmIDB4RkZGRjgwMDApIHwgKEJSMCAmIDB4MDAwMDdGRkYpICovCiAKQEAgLTk1MCw5ICs5NDcsOSBAQAogCXN0dyByNCwgTEJMQVdBUjEocjMpIC8qIE9mZiBMQklVIExBVzEgKi8KIAlibHIKIAotc2V0dXBfc3RhY2tfaW5fZGF0YV9jYWNoZV9vbl9yMTogCitzZXR1cF9zdGFja19pbl9kYXRhX2NhY2hlX29uX3IxOgogCWxpcyByMywgKENGR19JTU1SQkFSKUBoCi0JCisKIAkvKiBzZXR1cCBELUJBVCBmb3IgdGhlIEQtQ2FjaGUgKHdpdGggb3V0IHJlYWwgbWVtb3J5IGJhY2t1cCkgKi8KIAogCWxpcyByNCwgKENGR19JTklUX1JBTV9BRERSICYgMHhGRkZFMDAwMClAaApAQCAtOTYxLDEzICs5NTgsMTMgQEAKIAltdHNwcglEQkFUMEwsIHI0CiAJaXN5bmMKIAotI2lmIDAJCisjaWYgMAogCS8qIEVuYWJsZSBNTVUgKi8KIAltZm1zciByNAogCW9yaSByNCwgcjQsIChNU1JfRFIgfCBNU1JfSVIpQGwKIAltdG1zciByNAotI2VuZGlmCQotCQorI2VuZGlmCisKIAkvKiBFbmFibGUgYW5kIGludmFsaWRhdGUgZGF0YSBjYWNoZS4gKi8KIAltZnNwcglyNCwgSElEMAogCW1yCXI1LCByNApAQCAtOTc3LDE5ICs5NzQsMTkgQEAKIAltdHNwcglISUQwLCByNAogCW10c3ByCUhJRDAsIHI1CiAJc3luYwotCQorCiAJLyogQWxsb2NhdGUgSW5pdGlhbCBSQU0gaW4gZGF0YSBjYWNoZS4qLwogCWxpICByMCwgMAogCWxpcwlyNCwgKENGR19JTklUX1JBTV9BRERSKUBoCiAJb3JpCXI0LCByNCwgKENGR19JTklUX1JBTV9BRERSKUBsCi0JbGkJcjUsIDEyOCo4IC8qIDEyOCo4KjMyPTMyS2IgKi8gCisJbGkJcjUsIDEyOCo4IC8qIDEyOCo4KjMyPTMyS2IgKi8KIAltdGN0cglyNQogMToKIAlkY2J6CXIwLCByNAogCWFkZGkJcjQsIHI0LCAzMgogCWJkbnoJMWIKIAlpc3luYwotCQkKKwogCS8qIExvY2sgYWxsIHRoZSBELWNhY2hlLCBiYXNpY2FsbHkgbGVhdmluZyB0aGUgcmVzZXQgb2YgdGhlIHByb2dyYW0gd2l0aG91dCBkY2FjaGUgKi8KIAltZnNwcglyNCwgSElEMAogCW9yaQlyNCwgcjQsIChISUQwX0RMT0NLKUBsCkBAIC0xMDEwLDE0ICsxMDA3LDE0IEBACiAJYmxyCiAJbXIgcjE0LCByNAogCW1yIHIxNSwgcjUKLQkKKwogCiAJbGlzIHI0LCAoQ0ZHX0lOSVRfUkFNX0FERFIgJiAweEZGRkUwMDAwKUBoCiAJbXRzcHIJREJBVDBVLCByNAogCW9yaSByNCwgcjQsIDB4MDAwMgogCW10c3ByCURCQVQwTCwgcjQKIAlpc3luYwotCQorCiAJLyogdW4gbG9jayBhbGwgdGhlIEQtY2FjaGUgKi8KIAltZnNwcglyNCwgSElEMAogCWxpcyByNSwgKH4oSElEMF9ETE9DSykpQGgKQEAgLTEwMzAsMjAgKzEwMjcsMjAgQEAKIAlsaSAgcjAsIDAKIAlsaXMJcjQsIChDRkdfSU5JVF9SQU1fQUREUilAaAogCW9yaQlyNCwgcjQsIChDRkdfSU5JVF9SQU1fQUREUilAbAotCWxpCXI1LCAxMjgqOCAvKiAxMjgqOCozMj0zMktiICovIAorCWxpCXI1LCAxMjgqOCAvKiAxMjgqOCozMj0zMktiICovCiAJbXRjdHIJcjUKIDE6CiAJZGNieglyMCwgcjQKIAlhZGRpCXI0LCByNCwgMzIKIAliZG56CTFiCiAJaXN5bmMKLQkKKwogCW1mbHIgcjE2CiAJYmwgZGNhY2hlX2Rpc2FibGUKIAltdGxyIHIxNgotCQorCiAJYmxyCi0JCisKICNpZiAwCiAjZGVmaW5lIEdSRUVOX0xJR0hUIDB4MkIwRDQwNDYKICNkZWZpbmUgUkVEX0xJR0hUICAgMHgyNTBENDA0NgpAQCAtMTA1NCw3ICsxMDUxLDcgQEAKICAqLwogCiAJLmdsb2JsIGxpYmxpZ2h0Ci1saWJsaWdodDoJCitsaWJsaWdodDoKIAlsaXMJcjMsIENGR19JTU1SQkFSQGgKIAlvcmkJcjMsIHIzLCBDRkdfSU1NUkJBUkBsCiAJbGkgcjQsIDB4MzAwMgpAQCAtMTA2Myw3ICsxMDYwLDcgQEAKIAltdHNwcglISUQwLCByNAogCW10c3ByCUhJRDIsIHI0CiAJbGlzIHI0LCAweEY4MDAwMDAwQGgKLQlvcmkgcjQsIHI0LCAweEY4MDAwMDAwQGwJCisJb3JpIHI0LCByNCwgMHhGODAwMDAwMEBsCiAJc3R3IHI0LCBMQkxBV0JBUjEocjMpCiAJbGlzIHI0LCAweDgwMDAwMDBFQGgKIAlvcmkgcjQsIHI0LCAweDgwMDAwMDBFQGwKQEAgLTEwODMsMTQgKzEwODAsMTQgQEAKIAlvcmkgcjYsIHI2LCBSRURfTElHSFRAbAogCWxpcyByNywgTElCX0NOVEBoCiAJb3JpIHI3LCByNywgTElCX0NOVEBsCi0JCisKIDE6CiAJc3R3IHI1LCAwKHI0KQotCW10Y3RyIHI3CQorCW10Y3RyIHI3CiAyOgliZG56IDJiCiAJc3R3IHI2LCAwKHI0KQotCW10Y3RyIHI3CQorCW10Y3RyIHI3CiAzOgliZG56IDNiCiAJYiAxYgotCQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L3NwZF9zZHJhbS5jIGIvY3B1L21wYzg1eHgvc3BkX3NkcmFtLmMKaW5kZXggMDQ5YmE2Ny4uYWY5OTI4MiAxMDA2NDQKLS0tIGEvY3B1L21wYzg1eHgvc3BkX3NkcmFtLmMKKysrIGIvY3B1L21wYzg1eHgvc3BkX3NkcmFtLmMKQEAgLTYzMCw3ICs2MzAsNyBAQAogCiAJZGRyLT50aW1pbmdfY2ZnXzIgPSAoMAogCQl8ICgoYWRkX2xhdCAmIDB4NykgPDwgMjgpCQkvKiBBRERfTEFUICovCi0JCXwgKChjcG8gJiAweDFmKSA8PCAyMykJCQkvKiBDUE8gKi8gCisJCXwgKChjcG8gJiAweDFmKSA8PCAyMykJCQkvKiBDUE8gKi8KIAkJfCAoKHdyX2xhdCAmIDB4NykgPDwgMTkpCQkvKiBXUl9MQVQgKi8KIAkJfCAoKHRydHBfY2xrICYgMHg3KSA8PCAxMykJCS8qIFJEX1RPX1BSRSAqLwogCQl8ICgod3JfZGF0YV9kZWxheSAmIDB4NykgPDwgMTApCQkvKiBXUl9EQVRBX0RFTEFZICovCkBAIC04MjIsNyArODIyLDcgQEAKIAkvKgogCSAqIE1lbW9yeSB3aWxsIGJlIGluaXRpYWxpemVkIHZpYSBETUEsIG9yIG5vdCBhdCBhbGwuCiAJICovCi0JZF9pbml0ID0gMDsJCisJZF9pbml0ID0gMDsKICNlbmRpZgogCiAJZGRyLT5zZHJhbV9jZmdfMiA9ICgwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RzZWMuYyBiL2RyaXZlcnMvdHNlYy5jCmluZGV4IGY1MDY3YjMuLjBjOGIwZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHNlYy5jCisrKyBiL2RyaXZlcnMvdHNlYy5jCkBAIC01MjQsMTEgKzUyNCwxMSBAQAogCQkJCXJlZ3MtPm1hY2NmZzIgPSAoKHJlZ3MtPm1hY2NmZzImfihNQUNDRkcyX0lGKSkKIAkJCQkJfCBNQUNDRkcyX01JSSk7CiAKLQkJCQkvKiBJZiBXZSdyZSBpbiByZWR1Y2VkIG1vZGUsIHdlCi0JCQkJICogbmVlZCB0byBzYXkgd2hldGhlciB3ZSdyZSAxMAotCQkJCSAqIG9yIDEwMCBNQi4gKi8KLQkJCQlpZiAoKHByaXYtPnNwZWVkID09IDEwMCkgCi0JCQkJCQkmJiAocHJpdi0+ZmxhZ3MgJiBUU0VDX1JFRFVDRUQpKQorCQkJCS8qIElmIFdlJ3JlIGluIHJlZHVjZWQgbW9kZSwgd2UgbmVlZAorCQkJCSAqIHRvIHNheSB3aGV0aGVyIHdlJ3JlIDEwIG9yIDEwMCBNQi4KKwkJCQkgKi8KKwkJCQlpZiAoKHByaXYtPnNwZWVkID09IDEwMCkKKwkJCQkgICAgJiYgKHByaXYtPmZsYWdzICYgVFNFQ19SRURVQ0VEKSkKIAkJCQkJcmVncy0+ZWNudHJsIHw9IEVDTlRSTF9SMTAwOwogCQkJCWVsc2UKIAkJCQkJcmVncy0+ZWNudHJsICY9IH4oRUNOVFJMX1IxMDApOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL2UzMDAuaCBiL2luY2x1ZGUvYXNtLXBwYy9lMzAwLmgKaW5kZXggMzA5NmEyNi4uOTA4MDA3YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2UzMDAuaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvZTMwMC5oCkBAIC03LDcgKzcsNyBAQAogI2RlZmluZSBfX0UzMDBfSF9fCiAKIC8qCi0gKiBlMzAwIFByb2Nlc3NvciBWZXJzaW9uICYgUmV2aXNpb24gTnVtYmVycyAKKyAqIGUzMDAgUHJvY2Vzc29yIFZlcnNpb24gJiBSZXZpc2lvbiBOdW1iZXJzCiAgKi8KICNkZWZpbmUgUFZSXzgzeHggMHg4MDgzMDAwMAogI2RlZmluZSBQVlJfODM0OV9SRVYxMCAoUFZSXzgzeHggfCAweDAwMTApCkBAIC0xNiw3ICsxNiw3IEBACiAvKgogICogSGFyZHdhcmUgSW1wbGVtZW50YXRpb24tRGVwZW5kZW50IFJlZ2lzdGVyIDAgKEhJRDApCiAgKi8KLSAKKwogLyogI2RlZmluZSBISUQwIDEwMDggYWxyZWFkeSBkZWZpbmVkIGluIHByb2Nlc3Nvci5oICovCiAjZGVmaW5lIEhJRDBfTUFTS19NQUNISU5FX0NIRUNLICAgICAgICAgICAgICAweDAwMDAwMDAwCiAjZGVmaW5lIEhJRDBfRU5BQkxFX01BQ0hJTkVfQ0hFQ0sgICAgICAgICAgICAweDgwMDAwMDAwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1wcGMvaTJjLmggYi9pbmNsdWRlL2FzbS1wcGMvaTJjLmgKaW5kZXggZTdlYzlhYS4uMmE0YWMwZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2kyYy5oCisrKyBiL2luY2x1ZGUvYXNtLXBwYy9pMmMuaApAQCAtMzYsMTMgKzM2LDEyIEBACiAjZGVmaW5lIEkyQ19BRFIJICAgICAgMHhGRQogI2RlZmluZSBJMkNfQURSX1NISUZUIDEKICNkZWZpbmUgSTJDX0FEUl9SRVMgICB+KEkyQ19BRFIpCi0gICAgdTggcmVzMFszXTsgICAgIAorICAgIHU4IHJlczBbM107CiAgICAgdTggZmRyOyAgICAgICAgICAvKio8IEkyQyBmcmVxdWVuY3kgZGl2aWRlciByZWdpc3RlciAqLwotICAgIAogI2RlZmluZSBJQzJfRkRSICAgICAgIDB4M0YKICNkZWZpbmUgSUMyX0ZEUl9TSElGVCAwCiAjZGVmaW5lIElDMl9GRFJfUkVTICAgfihJQzJfRkRSKQotICAgIHU4IHJlczFbM107ICAgICAKKyAgICB1OCByZXMxWzNdOwogICAgIHU4IGNyOyAgICAgICAgICAgLyoqPCBJMkMgY29udHJvbCByZWRpc3RlciAgICAgICAgICAgKi8KICNkZWZpbmUgSTJDX0NSX01FTgkgIDB4ODAKICNkZWZpbmUgSTJDX0NSX01JRU4JICAweDQwCkBAIC01MSw3ICs1MCw3IEBACiAjZGVmaW5lIEkyQ19DUl9UWEFLICAgMHgwOAogI2RlZmluZSBJMkNfQ1JfUlNUQSAgIDB4MDQKICNkZWZpbmUgSTJDX0NSX0JDU1QgICAweDAxCi0gICAgdTggcmVzMlszXTsgICAgIAorICAgIHU4IHJlczJbM107CiAgICAgdTggc3I7ICAgICAgICAgICAvKio8IEkyQyBzdGF0dXMgcmVnaXN0ZXIgICAgICAgICAgICAqLwogI2RlZmluZSBJMkNfU1JfTUNGICAgIDB4ODAKICNkZWZpbmUgSTJDX1NSX01BQVMgICAweDQwCkBAIC02MSwxOCArNjAsMTggQEAKICNkZWZpbmUgSTJDX1NSX1NSVyAgICAweDA0CiAjZGVmaW5lIEkyQ19TUl9NSUYgICAgMHgwMgogI2RlZmluZSBJMkNfU1JfUlhBSyAgIDB4MDEKLSAgICB1OCByZXMzWzNdOyAgICAgCisgICAgdTggcmVzM1szXTsKICAgICB1OCBkcjsgICAgICAgICAgIC8qKjwgSTJDIGRhdGEgcmVnaXN0ZXIgICAgICAgICAgICAgICovCiAjZGVmaW5lIEkyQ19EUiAweEZGCiAjZGVmaW5lIEkyQ19EUl9TSElGVCAwCiAjZGVmaW5lIEkyQ19EUl9SRVMgfihJMkNfRFIpCi0gICAgdTggcmVzNFszXTsgICAgIAorICAgIHU4IHJlczRbM107CiAgICAgdTggZGZzcnI7ICAgICAgICAvKio8IEkyQyBkaWdpdGFsIGZpbHRlciBzYW1wbGluZyByYXRlIHJlZ2lzdGVyICovCiAjZGVmaW5lIEkyQ19ERlNSUiAweDNGCiAjZGVmaW5lIEkyQ19ERlNSUl9TSElGVCAwCiAjZGVmaW5lIEkyQ19ERlNSUl9SRVMgfihJMkNfRFIpCiAgICAgdTggcmVzNVszXTsKLSAgICB1OCByZXM2WzB4RThdOyAgICAgCisgICAgdTggcmVzNlsweEU4XTsKIH0gaTJjX3Q7CiAKICNpZm5kZWYgQ0ZHX0haCkBAIC04OSw4ICs4OCw4IEBACiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19NUEM4MzQ5QURTCi0vKiAKLSAqIE1QQzgzNDkgaGF2ZSB0d28gaTJjIGJ1cyAKKy8qCisgKiBNUEM4MzQ5IGhhdmUgdHdvIGkyYyBidXMKICAqLwogZXh0ZXJuIGkyY190ICogbXBjODM0OV9pMmM7CiAjZGVmaW5lIEkyQyBtcGM4MzQ5X2kyYwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzgzeHguaCBiL2luY2x1ZGUvYXNtLXBwYy9pbW1hcF84M3h4LmgKaW5kZXggZTg5NGNkYS4uNWQyODRkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzgzeHguaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvaW1tYXBfODN4eC5oCkBAIC0yLDcgKzIsNyBAQAogICogTVBDODM0OSBJbnRlcm5hbCBNZW1vcnkgTWFwCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IuCiAgKiBFcmFuIExpYmVydHkgKGxpYmVydHlAZnJlZXNjYWxlLmNvbSkKLSAqIAorICoKICAqIGJhc2VkIG9uOgogICogLSBNUEM4MjYwIEludGVybmFsIE1lbW9yeSBNYXAKICAqICAgQ29weXJpZ2h0IChjKSAxOTk5IERhbiBNYWxlayAoZG1hbGVrQGpsYy5uZXQpCkBAIC0xNiwyMCArMTYsMzIgQEAKICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vaTJjLmg+CiAKLS8qIAorLyoKICAqIExvY2FsIEFjY2VzcyBXaW5kb3cuCiAgKi8KIHR5cGVkZWYgc3RydWN0IGxhdzgzNDkgewogCXUzMiBiYXI7IC8qIExCSVUgbG9jYWwgYWNjZXNzIHdpbmRvdyBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgTEFXQkFSX0JBUiAgICAgICAgIDB4RkZGRkYwMDAgLyogSWRlbnRpZmllcyB0aGUgMjAgbW9zdC1zaWduaWZpY2FudCBhZGRyZXNzIGJpdHMgb2YgdGhlIGJhc2Ugb2YgbG9jYWwgYWNjZXNzIHdpbmRvdyBuLiBUaGUgc3BlY2lmaWVkIGJhc2UgYWRkcmVzcyBzaG91bGQgYmUgYWxpZ25lZCB0byB0aGUgd2luZG93IHNpemUsIGFzIGRlZmluZWQgYnkgTEJMQVdBUm5bU0laRV0uICovCisvKiBJZGVudGlmaWVzIHRoZSAyMCBtb3N0LXNpZ25pZmljYW50IGFkZHJlc3MgYml0cyBvZiB0aGUgYmFzZSBvZiBsb2NhbAorICogYWNjZXNzIHdpbmRvdyBuLiBUaGUgc3BlY2lmaWVkIGJhc2UgYWRkcmVzcyBzaG91bGQgYmUgYWxpZ25lZCB0byB0aGUKKyAqIHdpbmRvdyBzaXplLCBhcyBkZWZpbmVkIGJ5IExCTEFXQVJuW1NJWkVdLgorICovCisjZGVmaW5lIExBV0JBUl9CQVIgICAgICAgICAweEZGRkZGMDAwCiAjZGVmaW5lIExBV0JBUl9SRVMJICAgICB+KExBV0JBUl9CQVIpCiAJdTMyIGFyOyAvKiBMQklVIGxvY2FsIGFjY2VzcyB3aW5kb3cgYXR0cmlidXRlIHJlZ2lzdGVyICovCiAvKgogICogVGhpcyBNYWNybyB3ZXJlIG1vdmVkIGludG8gbW11LmgKICAqLwotI2lmIDAgICAgCi0jZGVmaW5lIExBV0FSX0VOICAgICAgICAgICAweDgwMDAwMDAwIC8qIDAgVGhlIGxvY2FsIGJ1cyBsb2NhbCBhY2Nlc3Mgd2luZG93IG4gaXMgZGlzYWJsZWQuIDEgVGhlIGxvY2FsIGJ1cyBsb2NhbCBhY2Nlc3Mgd2luZG93IG4gaXMgZW5hYmxlZCBhbmQgb3RoZXIgTEJMQVdBUjAgYW5kIExCTEFXQkFSMCBmaWVsZHMgY29tYmluZSB0byBpZGVudGlmeSBhbiBhZGRyZXNzIHJhbmdlIGZvciB0aGlzIHdpbmRvdy4gKi8KLSNkZWZpbmUgTEFXQVJfU0laRSAgICAgICAgIDB4MDAwMDAwM0YgLyogSWRlbnRpZmllcyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGZyb20gdGhlIHN0YXJ0aW5nIGFkZHJlc3MuIFdpbmRvdyBzaXplIGlzIDJeKFNJWkUrMSkgYnl0ZXMuIDAwMDAwMJYwMDEwMTBSZXNlcnZlZC4gV2luZG93IGlzIHVuZGVmaW5lZC4gKi8KKyNpZiAwCisvKiAwIFRoZSBsb2NhbCBidXMgbG9jYWwgYWNjZXNzIHdpbmRvdyBuIGlzIGRpc2FibGVkLiAxIFRoZSBsb2NhbCBidXMKKyAqIGxvY2FsIGFjY2VzcyB3aW5kb3cgbiBpcyBlbmFibGVkIGFuZCBvdGhlciBMQkxBV0FSMCBhbmQgTEJMQVdCQVIwIGZpZWxkcworICogY29tYmluZSB0byBpZGVudGlmeSBhbiBhZGRyZXNzIHJhbmdlIGZvciB0aGlzIHdpbmRvdy4KKyAqLworI2RlZmluZSBMQVdBUl9FTiAgICAgICAgICAgMHg4MDAwMDAwMAorLyogSWRlbnRpZmllcyB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGZyb20gdGhlIHN0YXJ0aW5nIGFkZHJlc3MuIFdpbmRvdworICogc2l6ZSBpcyAyXihTSVpFKzEpIGJ5dGVzLiAwMDAwMDCWMDAxMDEwUmVzZXJ2ZWQuIFdpbmRvdyBpcworICogdW5kZWZpbmVkLgorICovCisjZGVmaW5lIExBV0FSX1NJWkUgICAgICAgICAweDAwMDAwMDNGCiAjZGVmaW5lCUxBV0FSX1NJWkVfNEsJMHgwMDAwMDAwQgogI2RlZmluZQlMQVdBUl9TSVpFXzhLCTB4MDAwMDAwMEMKICNkZWZpbmUJTEFXQVJfU0laRV8xNksJMHgwMDAwMDAwRApAQCAtNTUsMTQgKzY3LDE3IEBACiAKIH0gbGF3ODM0OV90OwogCi0vKiAKKy8qCiAgKiBTeXN0ZW0gY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCiAgKi8KIHR5cGVkZWYgc3RydWN0IHN5c2NvbmY4MzQ5IHsKIAl1MzIgaW1tcmJhcjsgLyogSW50ZXJuYWwgbWVtb3J5IG1hcCBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgKi8KIAl1OCByZXMwWzB4MDRdOwogCXUzMiBhbHRjYmFyOyAvKiBBbHRlcm5hdGUgY29uZmlndXJhdGlvbiBiYXNlIGFkZHJlc3MgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgQUxUQ0JBUl9CQVNFX0FERFIgICAgIDB4RkZGMDAwMDAgLyogSWRlbnRpZmllcyB0aGUxMiBtb3N0IHNpZ25pZmljYW50IGFkZHJlc3MgYml0cyBvZiBhbiBhbHRlcm5hdGUgYmFzZSBhZGRyZXNzIHVzZWQgZm9yIGJvb3Qgc2VxdWVuY2VyIGNvbmZpZ3VyYXRpb24gYWNjZXNzZXMuICovCisvKiBJZGVudGlmaWVzIHRoZTEyIG1vc3Qgc2lnbmlmaWNhbnQgYWRkcmVzcyBiaXRzIG9mIGFuIGFsdGVybmF0ZSBiYXNlCisgKiBhZGRyZXNzIHVzZWQgZm9yIGJvb3Qgc2VxdWVuY2VyIGNvbmZpZ3VyYXRpb24gYWNjZXNzZXMuCisgKi8KKyNkZWZpbmUgQUxUQ0JBUl9CQVNFX0FERFIgICAgIDB4RkZGMDAwMDAKICNkZWZpbmUgQUxUQ0JBUl9SRVMgICAgICAgICAgIH4oQUxUQ0JBUl9CQVNFX0FERFIpIC8qIFJlc2VydmVkLiBXcml0ZSBoYXMgbm8gZWZmZWN0LCByZWFkIHJldHVybnMgMC4gKi8KIAl1OCByZXMxWzB4MTRdOwogCWxhdzgzNDlfdCBsYmxhd1s0XTsgLyogTEJJVSBsb2NhbCBhY2Nlc3Mgd2luZG93ICovCkBAIC03Nyw3ICs5Miw3IEBACiAjZGVmaW5lIFNQUklEUl9QQVJUSUQgICAgICAgICAweEZGRkYwMDAwIC8qIFBhcnQgSWRlbnRpZmljYXRpb24uICovCiAjZGVmaW5lIFNQUklEUl9SRVZJRCAgICAgICAgICAweDAwMDBGRkZGIC8qIFJldmlzaW9uIElkZW50aWZpY2F0aW9uLiAqLwogCXU4IHJlczVbMHgwNF07Ci0JdTMyIHNwY3I7IC8qIFN5c3RlbSBQcmlvcml0eSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovIAorCXUzMiBzcGNyOyAvKiBTeXN0ZW0gUHJpb3JpdHkgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLwogI2RlZmluZSBTUENSX1BDSUhQRSAgIDB4MTAwMDAwMDAgLyogUENJIEhpZ2hlc3QgUHJpb3JpdHkgRW5hYmxlLiAqLwogI2RlZmluZSBTUENSX1BDSVBSICAgIDB4MDMwMDAwMDAgLyogUENJIGJyaWRnZSBzeXN0ZW0gYnVzIHJlcXVlc3QgcHJpb3JpdHkuICovCiAjZGVmaW5lIFNQQ1JfVEJFTiAgICAgMHgwMDQwMDAwMCAvKiBFMzAwIFBvd2VyUEMgY29yZSB0aW1lIGJhc2UgdW5pdCBlbmFibGUuICovCkBAIC04OCw4ICsxMDMsOSBAQAogI2RlZmluZSBTUENSX1RTRUMyRFAgIDB4MDAwMDAwMzAgLyogVFNFQzIgZGF0YSBwcmlvcml0eS4gKi8KICNkZWZpbmUgU1BDUl9UU0VDMkJEUCAweDAwMDAwMDBDIC8qIFRTRUMyIGJ1ZmZlciBkZXNjcmlwdG9yIHByaW9yaXR5LiAqLwogI2RlZmluZSBTUENSX1RTRUMyRVAgIDB4MDAwMDAwMDMgLyogVFNFQzIgZW1lcmdlbmN5IHByaW9yaXR5LiAqLwotI2RlZmluZSBTUENSX1JFUyAgICAgIH4oU1BDUl9QQ0lIUEV8U1BDUl9QQ0lQUnxTUENSX1RCRU58U1BDUl9DT1JFUFJ8U1BDUl9UU0VDMURQIFwKLSAgICAgICAgICAgICAgICAgICAgICAgfFNQQ1JfVFNFQzFCRFB8U1BDUl9UU0VDMUVQfFNQQ1JfVFNFQzJEUHxTUENSX1RTRUMyQkRQfFNQQ1JfVFNFQzJFUCkKKyNkZWZpbmUgU1BDUl9SRVMgICAgICB+KFNQQ1JfUENJSFBFIHwgU1BDUl9QQ0lQUiB8IFNQQ1JfVEJFTiB8IFNQQ1JfQ09SRVBSIFwKKwkJCXwgU1BDUl9UU0VDMURQIHwgU1BDUl9UU0VDMUJEUCB8IFNQQ1JfVFNFQzFFUCBcCisJCQl8IFNQQ1JfVFNFQzJEUCB8IFNQQ1JfVFNFQzJCRFAgfCBTUENSX1RTRUMyRVApCiAJdTMyIHNpY3JsOyAvKiBTeXN0ZW0gR2VuZXJhbCBQdXJwb3NlIFJlZ2lzdGVyIExvdyAqLwogI2RlZmluZSBTSUNSTF9MRFBfQSAgIDB4ODAwMDAwMDAKICNkZWZpbmUgU0lDUkxfVVNCMCAgICAweDQwMDAwMDAwCkBAIC0xMDcsMTAgKzEyMywxMSBAQAogI2RlZmluZSBTSUNSTF9HUElPMV9KIDB4MDAwMDgwMDAKICNkZWZpbmUgU0lDUkxfR1BJTzFfSyAweDAwMDA0MDAwCiAjZGVmaW5lIFNJQ1JMX0dQSU8xX0wgMHgwMDAwMzAwMAotI2RlZmluZSBTSUNSTF9SRVMgfihTSUNSTF9MRFBfQXxTSUNSTF9VU0IwfFNJQ1JMX1VTQjF8U0lDUkxfVUFSVHxTSUNSTF9HUElPMV9BIFwKLSAgICAgICAgICAgICAgICAgICAgfFNJQ1JMX0dQSU8xX0J8U0lDUkxfR1BJTzFfQ3xTSUNSTF9HUElPMV9EfFNJQ1JMX0dQSU8xX0UgXAotICAgICAgICAgICAgICAgICAgICB8U0lDUkxfR1BJTzFfRnxTSUNSTF9HUElPMV9HfFNJQ1JMX0dQSU8xX0h8U0lDUkxfR1BJTzFfSSBcCi0gICAgICAgICAgICAgICAgICAgIHxTSUNSTF9HUElPMV9KfFNJQ1JMX0dQSU8xX0t8U0lDUkxfR1BJTzFfTCApCisjZGVmaW5lIFNJQ1JMX1JFUyB+KFNJQ1JMX0xEUF9BIHwgU0lDUkxfVVNCMCB8IFNJQ1JMX1VTQjEgfCBTSUNSTF9VQVJUIFwKKwkJCXwgU0lDUkxfR1BJTzFfQSB8IFNJQ1JMX0dQSU8xX0IgfCBTSUNSTF9HUElPMV9DIFwKKwkJCXwgU0lDUkxfR1BJTzFfRCB8IFNJQ1JMX0dQSU8xX0UgfCBTSUNSTF9HUElPMV9GIFwKKwkJCXwgU0lDUkxfR1BJTzFfRyB8IFNJQ1JMX0dQSU8xX0ggfCBTSUNSTF9HUElPMV9JIFwKKwkJCXwgU0lDUkxfR1BJTzFfSiB8IFNJQ1JMX0dQSU8xX0sgfCBTSUNSTF9HUElPMV9MICkKIAl1MzIgc2ljcmg7IC8qIFN5c3RlbSBHZW5lcmFsIFB1cnBvc2UgUmVnaXN0ZXIgSGlnaCAqLwogI2RlZmluZSBTSUNSSF9ERFIgICAgIDB4ODAwMDAwMDAKICNkZWZpbmUgU0lDUkhfVFNFQzFfQSAweDEwMDAwMDAwCkBAIC0xMzcsMzAgKzE1NCwzMiBAQAogI2RlZmluZSBTSUNSSF9HUElPMl9IIDB4MDAwMDAwNjAKICNkZWZpbmUgU0lDUkhfVFNPQkkxICAweDAwMDAwMDAyCiAjZGVmaW5lIFNJQ1JIX1RTT0JJMiAgMHgwMDAwMDAwMQotI2RlZmluZSBTSUNSaF9SRVMgICAgIH4oU0lDUkhfRERSfFNJQ1JIX1RTRUMxX0F8U0lDUkhfVFNFQzFfQnxTSUNSSF9UU0VDMV9DIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9UU0VDMV9EfFNJQ1JIX1RTRUMxX0V8U0lDUkhfVFNFQzFfRnxTSUNSSF9UU0VDMl9BIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9UU0VDMl9CfFNJQ1JIX1RTRUMyX0N8U0lDUkhfVFNFQzJfRHxTSUNSSF9UU0VDMl9FIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9UU0VDMl9GfFNJQ1JIX1RTRUMyX0d8U0lDUkhfVFNFQzJfSHxTSUNSSF9HUElPMl9BIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9HUElPMl9CfFNJQ1JIX0dQSU8yX0N8U0lDUkhfR1BJTzJfRHxTSUNSSF9HUElPMl9FIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9HUElPMl9GfFNJQ1JIX0dQSU8yX0d8U0lDUkhfR1BJTzJfSHxTSUNSSF9UU09CSTEgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHxTSUNSSF9UU09CSTIpCisjZGVmaW5lIFNJQ1JoX1JFUyAgICAgfiggIFNJQ1JIX0REUiB8IFNJQ1JIX1RTRUMxX0EgfCBTSUNSSF9UU0VDMV9CIFwKKwkJCXwgU0lDUkhfVFNFQzFfQyB8IFNJQ1JIX1RTRUMxX0QgfCBTSUNSSF9UU0VDMV9FIFwKKwkJCXwgU0lDUkhfVFNFQzFfRiB8IFNJQ1JIX1RTRUMyX0EgfCBTSUNSSF9UU0VDMl9CIFwKKwkJCXwgU0lDUkhfVFNFQzJfQyB8IFNJQ1JIX1RTRUMyX0QgfCBTSUNSSF9UU0VDMl9FIFwKKwkJCXwgU0lDUkhfVFNFQzJfRiB8IFNJQ1JIX1RTRUMyX0cgfCBTSUNSSF9UU0VDMl9IIFwKKwkJCXwgU0lDUkhfR1BJTzJfQSB8IFNJQ1JIX0dQSU8yX0IgfCBTSUNSSF9HUElPMl9DIFwKKwkJCXwgU0lDUkhfR1BJTzJfRCB8IFNJQ1JIX0dQSU8yX0UgfCBTSUNSSF9HUElPMl9GIFwKKwkJCXwgU0lDUkhfR1BJTzJfRyB8IFNJQ1JIX0dQSU8yX0ggfCBTSUNSSF9UU09CSTEgXAorCQkJfCBTSUNSSF9UU09CSTIpCiAJdTggcmVzNlsweEU0XTsKIH0gc3lzY29uZjgzNDlfdDsKIAotLyogCisvKgogICogV2F0Y2ggRG9nIFRpbWVyIChXRFQpIFJlZ2lzdGVycwogICovCiB0eXBlZGVmIHN0cnVjdCB3ZHQ4MzQ5IHsKLQl1OCByZXMwWzRdOyAKKwl1OCByZXMwWzRdOwogCXUzMiBzd2NycjsgLyogU3lzdGVtIHdhdGNoZG9nIGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAl1MzIgc3djbnI7IC8qIFN5c3RlbSB3YXRjaGRvZyBjb3VudCByZWdpc3RlciAqLwogI2RlZmluZSBTV0NOUl9TV0NOIDB4MDAwMEZGRkYgU29mdHdhcmUgV2F0Y2hkb2cgQ291bnQgRmllbGQuCiAjZGVmaW5lIFNXQ05SX1JFUyAgfihTV0NOUl9TV0NOKQotCXU4IHJlczFbMl07IAorCXU4IHJlczFbMl07CiAJdTE2IHN3c3JyOyAvKiBTeXN0ZW0gd2F0Y2hkb2cgc2VydmljZSByZWdpc3RlciAqLwogCXU4IHJlczJbMHhGMF07CiB9IHdkdDgzNDlfdDsKLSAKKwogLyoKICAqIFJUQy9QSVQgTW9kdWxlIFJlZ2lzdGVycwogICovCkBAIC0xNzMsNyArMTkyLDcgQEAKICNkZWZpbmUgQ05SX1JFUyAgfihDTlJfQ0xFTiB8IENOUl9DTElOIHwgQ05SX0FJTSB8IENOUl9TSU0pCiAJdTMyIGxkcjsgLyogbG9hZCByZWdpc3RlciAqLwogCXUzMiBwc3I7IC8qIHByZXNjYWxlIHJlZ2lzdGVyICovCi0JdTMyIGN0cjsgLyogcmVnaXN0ZXIgKi8gCisJdTMyIGN0cjsgLyogcmVnaXN0ZXIgKi8KIAl1MzIgZXZyOyAvKiBldmVudCByZWdpc3RlciAqLwogI2RlZmluZSBSVEVWUl9TSUYgIDB4MDAwMDAwMDEgLyogU2Vjb25kIEludGVycnVwdCBGbGFnIEJpdCAgKi8KICNkZWZpbmUgUlRFVlJfQUlGICAweDAwMDAwMDAyIC8qIEFsYXJtIEludGVycnVwdCBGbGFnIEJpdCAgKi8KQEAgLTE4Nyw3ICsyMDYsNyBAQAogICovCiAKIHR5cGVkZWYgc3RydWN0IGd0bTgzNDkgewotICAgIHU4ICAgIGNmcjE7IC8qIFRpbWVyMS8yIENvbmZpZ3VyYXRpb24gICovCisJdTggICAgY2ZyMTsgLyogVGltZXIxLzIgQ29uZmlndXJhdGlvbiAgKi8KICNkZWZpbmUgQ0ZSMV9QQ0FTIDB4ODAgLyogUGFpciBDYXNjYWRlIG1vZGUgICovCiAjZGVmaW5lIENGUjFfQkNNICAweDQwICAvKiBCYWNrd2FyZCBjb21wYXRpYmxlIG1vZGUgICovCiAjZGVmaW5lIENGUjFfU1RQMiAweDIwIC8qIFN0b3AgdGltZXIgICovCkBAIC0xOTYsOCArMjE1LDggQEAKICNkZWZpbmUgQ0ZSMV9HTTEgIDB4MDQgLyogR2F0ZSBtb2RlIGZvciBwaW4gMSAgKi8KICNkZWZpbmUgQ0ZSMV9TVFAxIDB4MDIgLyogU3RvcCB0aW1lciAgKi8KICNkZWZpbmUgQ0ZSMV9SU1QxIDB4MDEgLyogUmVzZXQgdGltZXIgICovCi0gICAgdTggICAgcmVzMFszXTsKLSAgICB1OCAgICBjZnIyOyAvKiBUaW1lcjMvNCBDb25maWd1cmF0aW9uICAqLworCXU4ICAgIHJlczBbM107CisJdTggICAgY2ZyMjsgLyogVGltZXIzLzQgQ29uZmlndXJhdGlvbiAgKi8KICNkZWZpbmUgQ0ZSMl9QQ0FTIDB4ODAgLyogUGFpciBDYXNjYWRlIG1vZGUgICovCiAjZGVmaW5lIENGUjJfU0NBUyAweDQwIC8qIFN1cGVyIENhc2NhZGUgbW9kZSAgKi8KICNkZWZpbmUgQ0ZSMl9TVFA0IDB4MjAgLyogU3RvcCB0aW1lciAgKi8KQEAgLTIwNiw4ICsyMjUsOCBAQAogI2RlZmluZSBDRlIyX0dNMyAgMHgwNCAvKiBHYXRlIG1vZGUgZm9yIHBpbiAzICAqLwogI2RlZmluZSBDRlIyX1NUUDMgMHgwMiAvKiBTdG9wIHRpbWVyICAqLwogI2RlZmluZSBDRlIyX1JTVDMgMHgwMSAvKiBSZXNldCB0aW1lciAgKi8KLSAgICB1OCAgICByZXMxWzEwXTsKLSAgICB1MTYgICBtZHIxOyAvKiBUaW1lcjEgTW9kZSBSZWdpc3RlciAgKi8KKwl1OCAgICByZXMxWzEwXTsKKwl1MTYgICBtZHIxOyAvKiBUaW1lcjEgTW9kZSBSZWdpc3RlciAgKi8KICNkZWZpbmUgTURSX1NQUyAgMHhmZjAwIC8qIFNlY29uZGFyeSBQcmVzY2FsZXIgdmFsdWUgICovCiAjZGVmaW5lIE1EUl9DRSAgIDB4MDBjMCAvKiBDYXB0dXJlIGVkZ2UgYW5kIGVuYWJsZSBpbnRlcnJ1cHQgICovCiAjZGVmaW5lIE1EUl9PTSAgIDB4MDAyMCAvKiBPdXRwdXQgbW9kZSAgKi8KQEAgLTIxNSw0MCArMjM0LDQwIEBACiAjZGVmaW5lIE1EUl9GUlIgIDB4MDAwOCAvKiBGcmVlIHJ1bi9yZXN0YXJ0ICAqLwogI2RlZmluZSBNRFJfSUNMSyAweDAwMDYgLyogSW5wdXQgY2xvY2sgc291cmNlIGZvciB0aGUgdGltZXIgICovCiAjZGVmaW5lIE1EUl9HRSAgIDB4MDAwMSAvKiBHYXRlIGVuYWJsZSAgKi8KLSAgICB1MTYgICBtZHIyOyAvKiBUaW1lcjIgTW9kZSBSZWdpc3RlciAgKi8KKwl1MTYgICBtZHIyOyAvKiBUaW1lcjIgTW9kZSBSZWdpc3RlciAgKi8KIAl1MTYgICByZnIxOyAvKiBUaW1lcjEgUmVmZXJlbmNlIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIHJmcjI7IC8qIFRpbWVyMiBSZWZlcmVuY2UgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgY3ByMTsgLyogVGltZXIxIENhcHR1cmUgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgY3ByMjsgLyogVGltZXIyIENhcHR1cmUgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgY25yMTsgLyogVGltZXIxIENvdW50ZXIgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgY25yMjsgLyogVGltZXIyIENvdW50ZXIgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgbWRyMzsgLyogVGltZXIzIE1vZGUgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgbWRyNDsgLyogVGltZXI0IE1vZGUgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgcmZyMzsgLyogVGltZXIzIFJlZmVyZW5jZSBSZWdpc3RlciAgKi8KLSAgICB1MTYgICByZnI0OyAvKiBUaW1lcjQgUmVmZXJlbmNlIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGNwcjM7IC8qIFRpbWVyMyBDYXB0dXJlIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGNwcjQ7IC8qIFRpbWVyNCBDYXB0dXJlIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGNucjM7IC8qIFRpbWVyMyBDb3VudGVyIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGNucjQ7IC8qIFRpbWVyNCBDb3VudGVyIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGV2cjE7IC8qIFRpbWVyMSBFdmVudCBSZWdpc3RlciAgKi8KLSAgICB1MTYgICBldnIyOyAvKiBUaW1lcjIgRXZlbnQgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgZXZyMzsgLyogVGltZXIzIEV2ZW50IFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIGV2cjQ7IC8qIFRpbWVyNCBFdmVudCBSZWdpc3RlciAgKi8KKwl1MTYgICByZnIyOyAvKiBUaW1lcjIgUmVmZXJlbmNlIFJlZ2lzdGVyICAqLworCXUxNiAgIGNwcjE7IC8qIFRpbWVyMSBDYXB0dXJlIFJlZ2lzdGVyICAqLworCXUxNiAgIGNwcjI7IC8qIFRpbWVyMiBDYXB0dXJlIFJlZ2lzdGVyICAqLworCXUxNiAgIGNucjE7IC8qIFRpbWVyMSBDb3VudGVyIFJlZ2lzdGVyICAqLworCXUxNiAgIGNucjI7IC8qIFRpbWVyMiBDb3VudGVyIFJlZ2lzdGVyICAqLworCXUxNiAgIG1kcjM7IC8qIFRpbWVyMyBNb2RlIFJlZ2lzdGVyICAqLworCXUxNiAgIG1kcjQ7IC8qIFRpbWVyNCBNb2RlIFJlZ2lzdGVyICAqLworCXUxNiAgIHJmcjM7IC8qIFRpbWVyMyBSZWZlcmVuY2UgUmVnaXN0ZXIgICovCisJdTE2ICAgcmZyNDsgLyogVGltZXI0IFJlZmVyZW5jZSBSZWdpc3RlciAgKi8KKwl1MTYgICBjcHIzOyAvKiBUaW1lcjMgQ2FwdHVyZSBSZWdpc3RlciAgKi8KKwl1MTYgICBjcHI0OyAvKiBUaW1lcjQgQ2FwdHVyZSBSZWdpc3RlciAgKi8KKwl1MTYgICBjbnIzOyAvKiBUaW1lcjMgQ291bnRlciBSZWdpc3RlciAgKi8KKwl1MTYgICBjbnI0OyAvKiBUaW1lcjQgQ291bnRlciBSZWdpc3RlciAgKi8KKwl1MTYgICBldnIxOyAvKiBUaW1lcjEgRXZlbnQgUmVnaXN0ZXIgICovCisJdTE2ICAgZXZyMjsgLyogVGltZXIyIEV2ZW50IFJlZ2lzdGVyICAqLworCXUxNiAgIGV2cjM7IC8qIFRpbWVyMyBFdmVudCBSZWdpc3RlciAgKi8KKwl1MTYgICBldnI0OyAvKiBUaW1lcjQgRXZlbnQgUmVnaXN0ZXIgICovCiAjZGVmaW5lIEdURVZSX1JFRiAweDAwMDIgLyogT3V0cHV0IHJlZmVyZW5jZSBldmVudCAgKi8KICNkZWZpbmUgR1RFVlJfQ0FQIDB4MDAwMSAvKiBDb3VudGVyIENhcHR1cmUgZXZlbnQgICAqLwogI2RlZmluZSBHVEVWUl9SRVMgfihFVlJfQ0FQfEVWUl9SRUYpCi0gICAgdTE2ICAgcHNyMTsgLyogVGltZXIxIFByZXNjYWxlciBSZWdpc3RlciAgKi8KLSAgICB1MTYgICBwc3IyOyAvKiBUaW1lcjIgUHJlc2NhbGVyIFJlZ2lzdGVyICAqLwotICAgIHUxNiAgIHBzcjM7IC8qIFRpbWVyMyBQcmVzY2FsZXIgUmVnaXN0ZXIgICovCi0gICAgdTE2ICAgcHNyNDsgLyogVGltZXI0IFByZXNjYWxlciBSZWdpc3RlciAgKi8KLSAgICB1OCAgICByZXNbMHhDMF07Ci19IGd0bTgzNDlfdDsgCisJdTE2ICAgcHNyMTsgLyogVGltZXIxIFByZXNjYWxlciBSZWdpc3RlciAgKi8KKwl1MTYgICBwc3IyOyAvKiBUaW1lcjIgUHJlc2NhbGVyIFJlZ2lzdGVyICAqLworCXUxNiAgIHBzcjM7IC8qIFRpbWVyMyBQcmVzY2FsZXIgUmVnaXN0ZXIgICovCisJdTE2ICAgcHNyNDsgLyogVGltZXI0IFByZXNjYWxlciBSZWdpc3RlciAgKi8KKwl1OCAgICByZXNbMHhDMF07Cit9IGd0bTgzNDlfdDsKIAogLyoKICAqIEludGVncmF0ZWQgUHJvZ3JhbW1hYmxlIEludGVycnVwdCBDb250cm9sbGVyCiAgKi8KIHR5cGVkZWYgc3RydWN0IGlwaWM4MzQ5IHsKLSAgICB1MzIgICAgc2ljZnI7IC8qICBTeXN0ZW0gR2xvYmFsIEludGVycnVwdCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIChTSUNGUikgICovCisJdTMyICAgIHNpY2ZyOyAvKiAgU3lzdGVtIEdsb2JhbCBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAoU0lDRlIpICAqLwogI2RlZmluZSBTSUNGUl9IUEkgIDB4N2YwMDAwMDAgLyogIEhpZ2hlc3QgUHJpb3JpdHkgSW50ZXJydXB0ICAqLwogI2RlZmluZSBTSUNGUl9NUFNCIDB4MDA0MDAwMDAgLyogIE1peGVkIGludGVycnVwdHMgUHJpb3JpdHkgU2NoZW1lIGZvciBncm91cCBCICAqLwogI2RlZmluZSBTSUNGUl9NUFNBIDB4MDAyMDAwMDAgLyogIE1peGVkIGludGVycnVwdHMgUHJpb3JpdHkgU2NoZW1lIGZvciBncm91cCBBICAqLwpAQCAtMjU2LDExICsyNzUsMTEgQEAKICNkZWZpbmUgU0lDRlJfSVBTQSAweDAwMDEwMDAwIC8qICBJbnRlcm5hbCBpbnRlcnJ1cHRzIFByaW9yaXR5IFNjaGVtZSBmb3IgZ3JvdXAgQSAgKi8KICNkZWZpbmUgU0lDRlJfSFBJVCAweDAwMDAwMzAwIC8qICBIUEkgcHJpb3JpdHkgcG9zaXRpb24gSVBJQyBvdXRwdXQgaW50ZXJydXB0IFR5cGUgICovCiAjZGVmaW5lIFNJQ0ZSX1JFUyB+KFNJQ0ZSX0hQSXxTSUNGUl9NUFNCfFNJQ0ZSX01QU0F8U0lDRlJfSVBTRHxTSUNGUl9JUFNBfFNJQ0ZSX0hQSVQpCi0gICAgdTMyICAgIHNpdmNyOyAvKiAgU3lzdGVtIEdsb2JhbCBJbnRlcnJ1cHQgVmVjdG9yIFJlZ2lzdGVyIChTSVZDUikgICovCisJdTMyICAgIHNpdmNyOyAvKiAgU3lzdGVtIEdsb2JhbCBJbnRlcnJ1cHQgVmVjdG9yIFJlZ2lzdGVyIChTSVZDUikgICovCiAjZGVmaW5lIFNJQ1ZSX0lWRUNYIDB4ZmMwMDAwMDAgLyogIEludGVycnVwdCB2ZWN0b3IgKGZvciBDRSBjb21wYXRpYmlsaXR5IHB1cnBvc2Ugb25seSBub3QgdXNlZCBpbiA4MzQ5IElQSUMgaW1wbGVtZW50YXRpb24pICAqLwogI2RlZmluZSBTSUNWUl9JVkVDICAweDAwMDAwMDdmIC8qICBJbnRlcnJ1cHQgdmVjdG9yICAqLwogI2RlZmluZSBTSUNWUl9SRVMgfihTSUNWUl9JVkVDWHxTSUNWUl9JVkVDKQotICAgIHUzMiAgICBzaXBucl9oOyAvKiAgU3lzdGVtIEludGVybmFsIEludGVycnVwdCBQZW5kaW5nIFJlZ2lzdGVyIC0gSGlnaCAoU0lQTlJfSCkgICovCisJdTMyICAgIHNpcG5yX2g7IC8qICBTeXN0ZW0gSW50ZXJuYWwgSW50ZXJydXB0IFBlbmRpbmcgUmVnaXN0ZXIgLSBIaWdoIChTSVBOUl9IKSAgKi8KICNkZWZpbmUgU0lJSF9UU0VDMVRYIDB4ODAwMDAwMDAgLyogIFRTRUMxIFR4IGludGVycnVwdCAgKi8KICNkZWZpbmUgU0lJSF9UU0VDMVJYIDB4NDAwMDAwMDAgLyogIFRTRUMxIFJ4IGludGVycnVwdCAgKi8KICNkZWZpbmUgU0lJSF9UU0VDMUVSIDB4MjAwMDAwMDAgLyogIFRTRUMxIEVyb3IgaW50ZXJydXB0ICAqLwpAQCAtMjc1LDExICsyOTQsMTIgQEAKICNkZWZpbmUgU0lJSF9JMkMxICAgIDB4MDAwMDAwMDQgLyogIEkyQzEgaW50ZXJydXB0ICAqLwogI2RlZmluZSBTSUlIX0kyQzIgICAgMHgwMDAwMDAwMiAvKiAgSTJDMSBpbnRlcnJ1cHQgICovCiAjZGVmaW5lIFNJSUhfU1BJICAgICAweDAwMDAwMDAxIC8qICBTUEkgaW50ZXJydXB0ICAqLwotI2RlZmluZSBTSUlIX1JFUyB+KFNJSUhfVFNFQzFUWHxTSUlIX1RTRUMxUlh8U0lJSF9UU0VDMUVSfFNJSUhfVFNFQzJUWCBcCi0gICAgICAgICAgICAgICAgICAgIHxTSUlIX1RTRUMyUlh8U0lJSF9UU0VDMkVSfFNJSUhfVVNCMkRSfFNJSUhfVVNCMk1QSCBcCi0gICAgICAgICAgICAgICAgICAgIHxTSUlIX1VBUlQxICB8U0lJSF9VQVJUMiAgfFNJSUhfU0VDICAgfFNJSUhfSTJDMSAgICBcCi0gICAgICAgICAgICAgICAgICAgIHxTSUlIX0kyQzIgICB8U0lJSF9TUEkpCi0gICAgdTMyICAgIHNpcG5yX2w7IC8qICBTeXN0ZW0gSW50ZXJuYWwgSW50ZXJydXB0IFBlbmRpbmcgUmVnaXN0ZXIgLSBMb3cgKFNJUE5SX0wpICAqLworI2RlZmluZSBTSUlIX1JFUwl+KFNJSUhfVFNFQzFUWCB8IFNJSUhfVFNFQzFSWCB8IFNJSUhfVFNFQzFFUiBcCisJCQl8IFNJSUhfVFNFQzJUWCB8IFNJSUhfVFNFQzJSWCB8IFNJSUhfVFNFQzJFUiBcCisJCQl8IFNJSUhfVVNCMkRSIHwgU0lJSF9VU0IyTVBIIHwgU0lJSF9VQVJUMSBcCisJCQl8IFNJSUhfVUFSVDIgfCBTSUlIX1NFQyB8IFNJSUhfSTJDMSBcCisJCQl8IFNJSUhfSTJDMiB8IFNJSUhfU1BJKQorCXUzMiAgICBzaXBucl9sOyAvKiAgU3lzdGVtIEludGVybmFsIEludGVycnVwdCBQZW5kaW5nIFJlZ2lzdGVyIC0gTG93IChTSVBOUl9MKSAgKi8KICNkZWZpbmUgU0lJTF9SVENTICAweDgwMDAwMDAwIC8qICBSVEMgU0VDT05EIGludGVycnVwdCAgKi8KICNkZWZpbmUgU0lJTF9QSVQgICAweDQwMDAwMDAwIC8qICBQSVQgaW50ZXJydXB0ICAqLwogI2RlZmluZSBTSUlMX1BDSTEgIDB4MjAwMDAwMDAgLyogIFBDSTEgaW50ZXJydXB0ICAqLwpAQCAtMzAyLDIwICszMjIsMjEgQEAKICNkZWZpbmUgU0lJTF9HVE0xICAweDAwMDAwMDIwIC8qICBHVE0xIGludGVycnVwdCAgKi8KICNkZWZpbmUgU0lJTF9HVE01ICAweDAwMDAwMDEwIC8qICBHVE01IGludGVycnVwdCAgKi8KICNkZWZpbmUgU0lJTF9EUFRDICAweDAwMDAwMDAxIC8qICBEUFRDIGludGVycnVwdCAoISEhIEludmlzaWJsZSBmb3IgdXNlciAhISEpICAqLwotI2RlZmluZSBTSUlMX1JFUyB+KFNJSUxfUlRDUyAgfFNJSUxfUElUICB8U0lJTF9QQ0kxIHxTSUlMX1BDSTIgfFNJSUxfUlRDQSBcCi0gICAgICAgICAgICAgICAgICAgfFNJSUxfTVUgICB8U0lJTF9TQkEgIHxTSUlMX0RNQSAgfFNJSUxfR1RNNCB8U0lJTF9HVE04IFwKLSAgICAgICAgICAgICAgICAgICB8U0lJTF9HUElPMXxTSUlMX0dQSU8yfFNJSUxfRERSICB8U0lJTF9MQkMgIHxTSUlMX0dUTTIgXAotICAgICAgICAgICAgICAgICAgIHxTSUlMX0dUTTYgfFNJSUxfUE1DICB8U0lJTF9HVE0zIHxTSUlMX0dUTTcgfFNJSUxfR1RNMSBcCi0gICAgICAgICAgICAgICAgICAgfFNJSUxfR1RNNSB8U0lJTF9EUFRDICkKLSAgICB1MzIgICAgc2lwcnJfYTsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgR3JvdXAgQSBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KLSAgICB1OCAgICAgcmVzMFs4XTsKLSAgICB1MzIgICAgc2lwcnJfZDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgR3JvdXAgRCBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KLSAgICB1MzIgICAgc2ltc3JfaDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAtIEhpZ2ggKFNJSUgpICAqLwotICAgIHUzMiAgICBzaW1zcl9sOyAvKiAgU3lzdGVtIEludGVybmFsIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyIC0gTG93IChTSUlMKSAgKi8KLSAgICB1OCAgICAgcmVzMVs0XTsKLSAgICB1MzIgICAgc2VwbnI7ICAgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgUGVuZGluZyBSZWdpc3RlciAoU0VJKSAgKi8KLSAgICB1MzIgICAgc21wcnJfYTsgLyogIFN5c3RlbSBNaXhlZCBJbnRlcnJ1cHQgR3JvdXAgQSBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KLSAgICB1MzIgICAgc21wcnJfYjsgLyogIFN5c3RlbSBNaXhlZCBJbnRlcnJ1cHQgR3JvdXAgQiBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KKyNkZWZpbmUgU0lJTF9SRVMJfihTSUlMX1JUQ1MgfCBTSUlMX1BJVCB8IFNJSUxfUENJMSB8IFNJSUxfUENJMiBcCisJCQl8IFNJSUxfUlRDQSB8IFNJSUxfTVUgfCBTSUlMX1NCQSB8IFNJSUxfRE1BIFwKKwkJCXwgU0lJTF9HVE00IHwgU0lJTF9HVE04IHwgU0lJTF9HUElPMSB8IFNJSUxfR1BJTzIgXAorCQkJfCBTSUlMX0REUiB8IFNJSUxfTEJDIHwgU0lJTF9HVE0yIHwgU0lJTF9HVE02IFwKKwkJCXwgU0lJTF9QTUMgfFNJSUxfR1RNMyB8IFNJSUxfR1RNNyB8IFNJSUxfR1RNMSBcCisJCQl8IFNJSUxfR1RNNSB8U0lJTF9EUFRDICkKKwl1MzIgICAgc2lwcnJfYTsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgR3JvdXAgQSBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KKwl1OCAgICAgcmVzMFs4XTsKKwl1MzIgICAgc2lwcnJfZDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgR3JvdXAgRCBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KKwl1MzIgICAgc2ltc3JfaDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAtIEhpZ2ggKFNJSUgpICAqLworCXUzMiAgICBzaW1zcl9sOyAvKiAgU3lzdGVtIEludGVybmFsIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyIC0gTG93IChTSUlMKSAgKi8KKwl1OCAgICAgcmVzMVs0XTsKKwl1MzIgICAgc2VwbnI7ICAgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgUGVuZGluZyBSZWdpc3RlciAoU0VJKSAgKi8KKwl1MzIgICAgc21wcnJfYTsgLyogIFN5c3RlbSBNaXhlZCBJbnRlcnJ1cHQgR3JvdXAgQSBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KKwl1MzIgICAgc21wcnJfYjsgLyogIFN5c3RlbSBNaXhlZCBJbnRlcnJ1cHQgR3JvdXAgQiBQcmlvcml0eSBSZWdpc3RlciAoUFJSKSAgKi8KICNkZWZpbmUgUFJSXzAgMHhlMDAwMDAwMCAvKiBQcmlvcml0eSBSZWdpc3RlciwgUG9zaXRpb24gMCBwcm9ncmFtbWluZyAqLwogI2RlZmluZSBQUlJfMSAweDFjMDAwMDAwIC8qIFByaW9yaXR5IFJlZ2lzdGVyLCBQb3NpdGlvbiAxIHByb2dyYW1taW5nICovCiAjZGVmaW5lIFBSUl8yIDB4MDM4MDAwMDAgLyogUHJpb3JpdHkgUmVnaXN0ZXIsIFBvc2l0aW9uIDIgcHJvZ3JhbW1pbmcgKi8KQEAgLTMyNSw3ICszNDYsNyBAQAogI2RlZmluZSBQUlJfNiAweDAwMDAwMzgwIC8qIFByaW9yaXR5IFJlZ2lzdGVyLCBQb3NpdGlvbiA2IHByb2dyYW1taW5nICovCiAjZGVmaW5lIFBSUl83IDB4MDAwMDAwNzAgLyogUHJpb3JpdHkgUmVnaXN0ZXIsIFBvc2l0aW9uIDcgcHJvZ3JhbW1pbmcgKi8KICNkZWZpbmUgUFJSX1JFUyB+KFBSUl8wfFBSUl8xfFBSUl8yfFBSUl8zfFBSUl80fFBSUl81fFBSUl82fFBSUl83KQotICAgIHUzMiAgICBzZW1zcjsgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAoU0VJKSAgKi8KKwl1MzIgICAgc2Vtc3I7IC8qICBTeXN0ZW0gRXh0ZXJuYWwgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKFNFSSkgICovCiAjZGVmaW5lIFNFSV9JUlEwICAweDgwMDAwMDAwIC8qICBJUlEwIGV4dGVybmFsIGludGVycnVwdCAgKi8KICNkZWZpbmUgU0VJX0lSUTEgIDB4NDAwMDAwMDAgLyogIElSUTEgZXh0ZXJuYWwgaW50ZXJydXB0ICAqLwogI2RlZmluZSBTRUlfSVJRMiAgMHgyMDAwMDAwMCAvKiAgSVJRMiBleHRlcm5hbCBpbnRlcnJ1cHQgICovCkBAIC0zMzUsOSArMzU2LDEwIEBACiAjZGVmaW5lIFNFSV9JUlE2ICAweDAyMDAwMDAwIC8qICBJUlE2IGV4dGVybmFsIGludGVycnVwdCAgKi8KICNkZWZpbmUgU0VJX0lSUTcgIDB4MDEwMDAwMDAgLyogIElSUTcgZXh0ZXJuYWwgaW50ZXJydXB0ICAqLwogI2RlZmluZSBTRUlfU0lSUTAgMHgwMDAwODAwMCAvKiAgU0lSUTAgZXh0ZXJuYWwgaW50ZXJydXB0ICAqLwotI2RlZmluZSBTRUlfUkVTIH4oIFNFSV9JUlEwIHxTRUlfSVJRMSB8U0VJX0lSUTIgfFNFSV9JUlEzIHxTRUlfSVJRNCBcCi0gICAgICAgICAgICAgICAgICB8U0VJX0lSUTUgfFNFSV9JUlE2IHxTRUlfSVJRNyB8U0VJX1NJUlEwKQotICAgIHUzMiAgICBzZWNucjsgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAoU0VDTlIpICAqLworI2RlZmluZSBTRUlfUkVTCQl+KCBTRUlfSVJRMCB8IFNFSV9JUlExIHwgU0VJX0lSUTIgfCBTRUlfSVJRMyBcCisJCQl8IFNFSV9JUlE0IHwgU0VJX0lSUTUgfCBTRUlfSVJRNiB8IFNFSV9JUlE3IFwKKwkJCXwgU0VJX1NJUlEwKQorCXUzMiAgICBzZWNucjsgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciAoU0VDTlIpICovCiAjZGVmaW5lIFNFQ05SX01JWEIwVCAweGMwMDAwMDAwIC8qICBNSVhCMCBwcmlvcml0eSBwb3NpdGlvbiBJUElDIG91dHB1dCBpbnRlcnJ1cHQgdHlwZSAgKi8KICNkZWZpbmUgU0VDTlJfTUlYQjFUIDB4MzAwMDAwMDAgLyogIE1JWEIxIHByaW9yaXR5IHBvc2l0aW9uIElQSUMgb3V0cHV0IGludGVycnVwdCB0eXBlICAqLwogI2RlZmluZSBTRUNOUl9NSVhBMFQgMHgwMGMwMDAwMCAvKiAgTUlYQTAgcHJpb3JpdHkgcG9zaXRpb24gSVBJQyBvdXRwdXQgaW50ZXJydXB0IHR5cGUgICovCkBAIC0zNTAsMTEgKzM3MiwxMiBAQAogI2RlZmluZSBTRUNOUl9FREk1ICAgMHgwMDAwMDQwMCAvKiAgSVJRNSBleHRlcm5hbCBpbnRlcnJ1cHQgZWRnZS9sZXZlbCBkZXRlY3QgICovCiAjZGVmaW5lIFNFQ05SX0VESTYgICAweDAwMDAwMjAwIC8qICBJUlE2IGV4dGVybmFsIGludGVycnVwdCBlZGdlL2xldmVsIGRldGVjdCAgKi8KICNkZWZpbmUgU0VDTlJfRURJNyAgIDB4MDAwMDAxMDAgLyogIElSUTcgZXh0ZXJuYWwgaW50ZXJydXB0IGVkZ2UvbGV2ZWwgZGV0ZWN0ICAqLwotI2RlZmluZSBTRUNOUl9SRVMgfiggU0VDTlJfTUlYQjBUfFNFQ05SX01JWEIxVHxTRUNOUl9NSVhBMFR8U0VDTlJfU1lTQTFUIFwKLSAgICAgICAgICAgICAgICAgICAgfFNFQ05SX0VESTAgIHxTRUNOUl9FREkxICB8U0VDTlJfRURJMiAgfFNFQ05SX0VESTMgICBcCi0gICAgICAgICAgICAgICAgICAgIHxTRUNOUl9FREk0ICB8U0VDTlJfRURJNSAgfFNFQ05SX0VESTYgIHxTRUNOUl9FREk3KQotICAgIHUzMiAgIHNlcnNyOyAvKiAgU3lzdGVtIEVycm9yIFN0YXR1cyBSZWdpc3RlciAoU0VSUikgICovCi0gICAgdTMyICAgc2VybXI7IC8qICBTeXN0ZW0gRXJyb3IgTWFzayBSZWdpc3RlciAoU0VSUikgICovCisjZGVmaW5lIFNFQ05SX1JFUwl+KCBTRUNOUl9NSVhCMFQgfCBTRUNOUl9NSVhCMVQgfCBTRUNOUl9NSVhBMFQgXAorCQkJfCBTRUNOUl9TWVNBMVQgfCBTRUNOUl9FREkwIHwgU0VDTlJfRURJMSBcCisJCQl8IFNFQ05SX0VESTIgfCBTRUNOUl9FREkzIHwgU0VDTlJfRURJNCBcCisJCQl8IFNFQ05SX0VESTUgfCBTRUNOUl9FREk2IHwgU0VDTlJfRURJNykKKwl1MzIgICBzZXJzcjsgLyogIFN5c3RlbSBFcnJvciBTdGF0dXMgUmVnaXN0ZXIgKFNFUlIpICAqLworCXUzMiAgIHNlcm1yOyAvKiAgU3lzdGVtIEVycm9yIE1hc2sgUmVnaXN0ZXIgKFNFUlIpICAqLwogI2RlZmluZSBTRVJSX0lSUTAgMHg4MDAwMDAwMCAvKiAgSVJRMCBNQ1AgcmVxdWVzdCAgKi8KICNkZWZpbmUgU0VSUl9XRFQgIDB4NDAwMDAwMDAgLyogIFdEVCBNQ1AgcmVxdWVzdCAgKi8KICNkZWZpbmUgU0VSUl9TQkEgIDB4MjAwMDAwMDAgLyogIFNCQSBNQ1AgcmVxdWVzdCAgKi8KQEAgLTM2NCwxNyArMzg3LDE4IEBACiAjZGVmaW5lIFNFUlJfUENJMiAweDAyMDAwMDAwIC8qICBQQ0kyIE1DUCByZXF1ZXN0ICAqLwogI2RlZmluZSBTRVJSX01VICAgMHgwMTAwMDAwMCAvKiAgTVUgTUNQIHJlcXVlc3QgICovCiAjZGVmaW5lIFNFUlJfUk5DICAweDAwMDEwMDAwIC8qICBNVSBNQ1AgcmVxdWVzdCAoISEhIE5vbi12aXNpYmxlIGZvciB1c2VycyAhISEpICAqLwotI2RlZmluZSBTRVJSX1JFUyB+KCBTRVJSX0lSUTB8U0VSUl9XRFQgfFNFUlJfU0JBIHxTRVJSX0REUiB8U0VSUl9MQkMgXAotICAgICAgICAgICAgICAgICAgIHxTRVJSX1BDSTF8U0VSUl9QQ0kyfFNFUlJfTVUgIHxTRVJSX1JOQyApCi0gICAgdTMyICAgIHNlcmNyOyAvKiAgU3lzdGVtIEVycm9yIENvbnRyb2wgUmVnaXN0ZXIgIChTRVJDUikgICovCisjZGVmaW5lIFNFUlJfUkVTCX4oIFNFUlJfSVJRMCB8IFNFUlJfV0RUIHwgU0VSUl9TQkEgfCBTRVJSX0REUiBcCisJCQl8U0VSUl9MQkMgfCBTRVJSX1BDSTEgfCBTRVJSX1BDSTIgfCBTRVJSX01VIFwKKwkJCXxTRVJSX1JOQyApCisJdTMyICAgIHNlcmNyOyAvKiAgU3lzdGVtIEVycm9yIENvbnRyb2wgUmVnaXN0ZXIgIChTRVJDUikgICovCiAjZGVmaW5lIFNFUkNSX01DUFIgMHgwMDAwMDAwMSAvKiAgTUNQIFJvdXRlICAqLwogI2RlZmluZSBTRVJDUl9SRVMgfihTRVJDUl9NQ1BSKQotICAgIHU4ICAgIHJlczJbNF07Ci0gICAgdTMyICAgc2lmY3JfaDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgRm9yY2UgUmVnaXN0ZXIgLSBIaWdoIChTSUlIKSAgKi8KLSAgICB1MzIgICBzaWZjcl9sOyAvKiAgU3lzdGVtIEludGVybmFsIEludGVycnVwdCBGb3JjZSBSZWdpc3RlciAtIExvdyAoU0lJTCkgICovCi0gICAgdTMyICAgc2VmY3I7ICAgLyogIFN5c3RlbSBFeHRlcm5hbCBJbnRlcnJ1cHQgRm9yY2UgUmVnaXN0ZXIgKFNFSSkgICovCi0gICAgdTMyICAgc2VyZnI7ICAgLyogIFN5c3RlbSBFcnJvciBGb3JjZSBSZWdpc3RlciAoU0VSUikgICovCi0gICAgdTggICAgcmVzM1sweEEwXTsKKwl1OCAgICByZXMyWzRdOworCXUzMiAgIHNpZmNyX2g7IC8qICBTeXN0ZW0gSW50ZXJuYWwgSW50ZXJydXB0IEZvcmNlIFJlZ2lzdGVyIC0gSGlnaCAoU0lJSCkgICovCisJdTMyICAgc2lmY3JfbDsgLyogIFN5c3RlbSBJbnRlcm5hbCBJbnRlcnJ1cHQgRm9yY2UgUmVnaXN0ZXIgLSBMb3cgKFNJSUwpICAqLworCXUzMiAgIHNlZmNyOyAgIC8qICBTeXN0ZW0gRXh0ZXJuYWwgSW50ZXJydXB0IEZvcmNlIFJlZ2lzdGVyIChTRUkpICAqLworCXUzMiAgIHNlcmZyOyAgIC8qICBTeXN0ZW0gRXJyb3IgRm9yY2UgUmVnaXN0ZXIgKFNFUlIpICAqLworCXU4ICAgIHJlczNbMHhBMF07CiB9IGlwaWM4MzQ5X3Q7CiAKIC8qCkBAIC0zODIsMTAgKzQwNiwxMCBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBhcmJpdGVyODM0OSB7CiAJdTMyIGFjcjsgLyogQXJiaXRlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCi0jZGVmaW5lIEFDUl9DT1JFRElTICAgIDB4MTAwMDAwMDAgLyogQ29yZSBkaXNhYmxlLiAqLyAgICAKKyNkZWZpbmUgQUNSX0NPUkVESVMgICAgMHgxMDAwMDAwMCAvKiBDb3JlIGRpc2FibGUuICovCiAjZGVmaW5lIEFDUl9QSVBFX0RFUCAgIDB4MDAwNzAwMDAgLyogUGlwZWxpbmUgZGVwdGggKG51bWJlciBvZiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMpLiAqLwogI2RlZmluZSBBQ1JfUENJX1JQVENOVCAweDAwMDA3MDAwIC8qIFBDSSByZXBlYXQgY291bnQuICovCi0jZGVmaW5lIEFDUl9SUFRDTlQgICAgIDB4MDAwMDA3MDAgLyogUmVwZWF0IGNvdW50LiAqLyAKKyNkZWZpbmUgQUNSX1JQVENOVCAgICAgMHgwMDAwMDcwMCAvKiBSZXBlYXQgY291bnQuICovCiAjZGVmaW5lIEFDUl9BUEFSSyAgICAgIDB4MDAwMDAwMzAgLyogQWRkcmVzcyBwYXJraW5nLiAqLwogI2RlZmluZSBBQ1JfUEFSS00JICAgMHgwMDAwMDAwRiAvKiBQYXJraW5nIG1hc3Rlci4gKi8KICNkZWZpbmUgQUNSX1JFUyB+KEFDUl9DT1JFRElTfEFDUl9QSVBFX0RFUHxBQ1JfUENJX1JQVENOVHxBQ1JfUlBUQ05UfEFDUl9BUEFSS3xBQ1JfUEFSS00pCkBAIC00MjAsNyArNDQ0LDcgQEAKICAqIFJlc2V0IE1vZHVsZQogICovCiB0eXBlZGVmIHN0cnVjdCByZXNldDgzNDkgewotICAgIHUzMiAgICByY3dsOyAvKiBSQ1dMIFJlZ2lzdGVyICAqLworCXUzMiAgICByY3dsOyAvKiBSQ1dMIFJlZ2lzdGVyICAqLwogI2RlZmluZSBSQ1dMX0xCSVVDTSAgMHg4MDAwMDAwMCAvKiBMQklVQ00gICovCiAjZGVmaW5lIFJDV0xfTEJJVUNNX1NISUZUICAgIDMxCiAjZGVmaW5lIFJDV0xfRERSQ00gICAweDQwMDAwMDAwIC8qIEREUkNNICAqLwpAQCAtNDMzLDggKzQ1Nyw4IEBACiAjZGVmaW5lIFJDV0xfQ0VWQ09EICAweDAwMDAwMEMwIC8qIENFVkNPRCAgKi8KICNkZWZpbmUgUkNXTF9DRVBERiAgIDB4MDAwMDAwMjAgLyogQ0VQREYgICovCiAjZGVmaW5lIFJDV0xfQ0VQTUYgICAweDAwMDAwMDFGIC8qIENFUE1GICAqLwotI2RlZmluZSBSQ1dMX1JFUyB+KFJDV0xfQklVQ018UkNXTF9ERFJDTXxSQ1dMX1NWQ09EfFJDV0xfU1BNRnxSQ1dMX0NPUkVQTEx8UkNXTF9DRVZDT0R8UkNXTF9DRVBERnxSQ1dMX0NFUE1GKSAgCi0gICAgdTMyICAgIHJjd2g7IC8qIFJDSEwgUmVnaXN0ZXIgICovCisjZGVmaW5lIFJDV0xfUkVTIH4oUkNXTF9CSVVDTXxSQ1dMX0REUkNNfFJDV0xfU1ZDT0R8UkNXTF9TUE1GfFJDV0xfQ09SRVBMTHxSQ1dMX0NFVkNPRHxSQ1dMX0NFUERGfFJDV0xfQ0VQTUYpCisJdTMyICAgIHJjd2g7IC8qIFJDSEwgUmVnaXN0ZXIgICovCiAjZGVmaW5lIFJDV0hfUENJSE9TVCAweDgwMDAwMDAwIC8qIFBDSUhPU1QgICovCiAjZGVmaW5lIFJDV0hfUENJSE9TVF9TSElGVCAgIDMxCiAjZGVmaW5lIFJDV0hfUENJNjQgICAweDQwMDAwMDAwIC8qIFBDSTY0ICAqLwpAQCAtNDUwLDExICs0NzQsMTMgQEAKICNkZWZpbmUgUkNXSF9UUFIgICAgIDB4MDAwMDAxMDAgLyogVFBSICAqLwogI2RlZmluZSBSQ1dIX1RMRSAgICAgMHgwMDAwMDAwOCAvKiBUTEUgICovCiAjZGVmaW5lIFJDV0hfTEFMRSAgICAweDAwMDAwMDA0IC8qIExBTEUgICovCi0jZGVmaW5lIFJDV0hfUkVTIH4oUkNXSF9QQ0lIT1NUfFJDV0hfUENJNjR8UkNXSF9QQ0kxQVJCfFJDV0hfUENJMkFSQiBcCi0gICAgICAgICAgICAgICAgICAgIHxSQ1dIX0NPUkVESVN8UkNXSF9CTVN8UkNXSF9CT09UU0VRfFJDV0hfU1dFTnxSQ1dIX1JPTUxPQyBcCi0gICAgICAgICAgICAgICAgICAgIHxSQ1dIX1RTRUMxTXxSQ1dIX1RTRUMyTXxSQ1dIX1RQUnxSQ1dIX1RMRXxSQ1dIX0xBTEUpCi0gICAgdTggICAgIHJlczBbOF07Ci0gICAgdTMyICAgIHJzcjsgLyogUmVzZXQgc3RhdHVzIFJlZ2lzdGVyICAqLworI2RlZmluZSBSQ1dIX1JFUwl+KFJDV0hfUENJSE9TVCB8IFJDV0hfUENJNjQgfCBSQ1dIX1BDSTFBUkIgXAorCQkJfCBSQ1dIX1BDSTJBUkIgfCBSQ1dIX0NPUkVESVMgfCBSQ1dIX0JNUyBcCisJCQl8IFJDV0hfQk9PVFNFUSB8IFJDV0hfU1dFTiB8IFJDV0hfUk9NTE9DIFwKKwkJCXwgUkNXSF9UU0VDMU0gfCBSQ1dIX1RTRUMyTSB8IFJDV0hfVFBSIFwKKwkJCXwgUkNXSF9UTEUgfCBSQ1dIX0xBTEUpCisJdTggICAgIHJlczBbOF07CisJdTMyICAgIHJzcjsgLyogUmVzZXQgc3RhdHVzIFJlZ2lzdGVyICAqLwogI2RlZmluZSBSU1JfUlNUU1JDIDB4RTAwMDAwMDAgLyogUmVzZXQgc291cmNlICAqLwogI2RlZmluZSBSU1JfUlNUU1JDX1NISUZUICAgMjkKICNkZWZpbmUgUlNSX0JTRiAgICAweDAwMDEwMDAwIC8qIEJvb3Qgc2VxLiBmYWlsICAqLwpAQCAtNDc3LDM3ICs1MDMsMzggQEAKICNkZWZpbmUgUlNSX1NSU19TSElGVCAgICAgICAxCiAjZGVmaW5lIFJTUl9IUlMgICAgMHgwMDAwMDAwMSAvKiBoYXJkIHJlc2V0IHN0YXR1cyAgKi8KICNkZWZpbmUgUlNSX0hSU19TSElGVCAgICAgICAwCi0jZGVmaW5lIFJTUl9SRVMgfihSU1JfUlNUU1JDfFJTUl9CU0Z8UlNSX1NXU1J8UlNSX1NXSFJ8UlNSX0pIUlN8UlNSX0pTUlN8UlNSX0NTSFJ8UlNSX1NXUlN8UlNSX0JNUlN8UlNSX1NSU3xSU1JfSFJTKQotICAgIHUzMiAgICBybXI7IC8qIFJlc2V0IG1vZGUgUmVnaXN0ZXIgICovCisjZGVmaW5lIFJTUl9SRVMgfihSU1JfUlNUU1JDIHwgUlNSX0JTRiB8IFJTUl9TV1NSIHwgUlNSX1NXSFIgfCBSU1JfSkhSUyB8IFJTUl9KU1JTIHwgUlNSX0NTSFIgfCBSU1JfU1dSUyB8IFJTUl9CTVJTIHwgUlNSX1NSUyB8IFJTUl9IUlMpCisJdTMyICAgIHJtcjsgLyogUmVzZXQgbW9kZSBSZWdpc3RlciAgKi8KICNkZWZpbmUgUk1SX0NTUkUgICAweDAwMDAwMDAxIC8qIGNoZWNrc3RvcCByZXNldCBlbmFibGUgICovCiAjZGVmaW5lIFJNUl9DU1JFX1NISUZUICAgICAgMAogI2RlZmluZSBSTVJfUkVTIH4oUk1SX0NTUkUpCi0gICAgdTMyICAgIHJwcjsgLyogUmVzZXQgcHJvdGVjdGlvbiBSZWdpc3RlciAgKi8KLSAgICB1MzIgICAgcmNyOyAvKiBSZXNldCBDb250cm9sIFJlZ2lzdGVyICAqLworCXUzMiAgICBycHI7IC8qIFJlc2V0IHByb3RlY3Rpb24gUmVnaXN0ZXIgICovCisJdTMyICAgIHJjcjsgLyogUmVzZXQgQ29udHJvbCBSZWdpc3RlciAgKi8KICNkZWZpbmUgUkNSX1NXSFIgMHgwMDAwMDAwMiAvKiBzb2Z0d2FyZSBoYXJkIHJlc2V0ICAqLwogI2RlZmluZSBSQ1JfU1dTUiAweDAwMDAwMDAxIC8qIHNvZnR3YXJlIHNvZnQgcmVzZXQgICovCi0jZGVmaW5lIFJDUl9SRVMgfihSQ1JfU1dIUnxSQ1JfU1dTUikKLSAgICB1MzIgICAgcmNlcjsgLyogUmVzZXQgQ29udHJvbCBFbmFibGUgUmVnaXN0ZXIgICovCisjZGVmaW5lIFJDUl9SRVMgfihSQ1JfU1dIUiB8IFJDUl9TV1NSKQorCXUzMiAgICByY2VyOyAvKiBSZXNldCBDb250cm9sIEVuYWJsZSBSZWdpc3RlciAgKi8KICNkZWZpbmUgUkNFUl9DUkUgMHgwMDAwMDAwMSAvKiBzb2Z0d2FyZSBoYXJkIHJlc2V0ICAqLwogI2RlZmluZSBSQ0VSX1JFUyB+KFJDRVJfQ1JFKQogCXU4ICAgICByZXMxWzB4RENdOwogfSByZXNldDgzNDlfdDsKLSAKKwogdHlwZWRlZiBzdHJ1Y3QgY2xrODM0OSB7Ci0gICAgdTMyICAgIHNwbXI7IC8qIHN5c3RlbSBQTEwgbW9kZSBSZWdpc3RlciAgKi8KKwl1MzIgICAgc3BtcjsgLyogc3lzdGVtIFBMTCBtb2RlIFJlZ2lzdGVyICAqLwogI2RlZmluZSBTUE1SX0xCSVVDTSAgMHg4MDAwMDAwMCAvKiBMQklVQ00gICovCiAjZGVmaW5lIFNQTVJfRERSQ00gICAweDQwMDAwMDAwIC8qIEREUkNNICAqLwogI2RlZmluZSBTUE1SX1NWQ09EICAgMHgzMDAwMDAwMCAvKiBTVkNPRCAgKi8KICNkZWZpbmUgU1BNUl9TUE1GICAgIDB4MEYwMDAwMDAgLyogU1BNRiAgKi8KICNkZWZpbmUgU1BNUl9DS0lEICAgIDB4MDA4MDAwMDAgLyogQ0tJRCAgKi8KLSNkZWZpbmUgU1BNUl9DS0lEX1NISUZUIDIzIAorI2RlZmluZSBTUE1SX0NLSURfU0hJRlQgMjMKICNkZWZpbmUgU1BNUl9DT1JFUExMIDB4MDA3RjAwMDAgLyogQ09SRVBMTCAgKi8KICNkZWZpbmUgU1BNUl9DRVZDT0QgIDB4MDAwMDAwQzAgLyogQ0VWQ09EICAqLwogI2RlZmluZSBTUE1SX0NFUERGICAgMHgwMDAwMDAyMCAvKiBDRVBERiAgKi8KICNkZWZpbmUgU1BNUl9DRVBNRiAgIDB4MDAwMDAwMUYgLyogQ0VQTUYgICovCi0jZGVmaW5lIFNQTVJfUkVTIH4oU1BNUl9MQklVQ018U1BNUl9ERFJDTXxTUE1SX1NWQ09EfFNQTVJfU1BNRnxTUE1SX0NLSUQgXAotICAgICAgICAgICAgICAgICAgIHxTUE1SX0NPUkVQTEx8U1BNUl9DRVZDT0R8U1BNUl9DRVBERnxTUE1SX0NFUE1GKQotICAgIHUzMiAgICBvY2NyOyAvKiBvdXRwdXQgY2xvY2sgY29udHJvbCBSZWdpc3RlciAgKi8KKyNkZWZpbmUgU1BNUl9SRVMJfihTUE1SX0xCSVVDTSB8IFNQTVJfRERSQ00gfCBTUE1SX1NWQ09EIFwKKwkJCXwgU1BNUl9TUE1GIHwgU1BNUl9DS0lEIHwgU1BNUl9DT1JFUExMIFwKKwkJCXwgU1BNUl9DRVZDT0QgfCBTUE1SX0NFUERGIHwgU1BNUl9DRVBNRikKKwl1MzIgICAgb2NjcjsgLyogb3V0cHV0IGNsb2NrIGNvbnRyb2wgUmVnaXN0ZXIgICovCiAjZGVmaW5lIE9DQ1JfUENJQ09FMCAweDgwMDAwMDAwIC8qIFBDSUNPRTAgICovCiAjZGVmaW5lIE9DQ1JfUENJQ09FMSAweDQwMDAwMDAwIC8qIFBDSUNPRTEgICovCiAjZGVmaW5lIE9DQ1JfUENJQ09FMiAweDIwMDAwMDAwIC8qIFBDSUNPRTIgICovCkBAIC01MjYsMTEgKzU1MywxMyBAQAogI2RlZmluZSBPQ0NSX1BDSUNENyAgMHgwMDAxMDAwMCAvKiBQQ0lDRDcgICovCiAjZGVmaW5lIE9DQ1JfUENJMUNSICAweDAwMDAwMDAyIC8qIFBDSTFDUiAgKi8KICNkZWZpbmUgT0NDUl9QQ0kyQ1IgIDB4MDAwMDAwMDEgLyogUENJMkNSICAqLwotI2RlZmluZSBPQ0NSX1JFUyB+KE9DQ1JfUENJQ09FMHxPQ0NSX1BDSUNPRTF8T0NDUl9QQ0lDT0UyfE9DQ1JfUENJQ09FM3xPQ0NSX1BDSUNPRTQgXAotICAgICAgICAgICAgICAgICAgIHxPQ0NSX1BDSUNPRTV8T0NDUl9QQ0lDT0U2fE9DQ1JfUENJQ09FN3xPQ0NSX1BDSUNEMHxPQ0NSX1BDSUNEMSAgXAotICAgICAgICAgICAgICAgICAgIHxPQ0NSX1BDSUNEMiB8T0NDUl9QQ0lDRDMgfE9DQ1JfUENJQ0Q0IHxPQ0NSX1BDSUNENXxPQ0NSX1BDSUNENiAgXAotICAgICAgICAgICAgICAgICAgIHxPQ0NSX1BDSUNENyB8T0NDUl9QQ0kxQ1IgfE9DQ1JfUENJMkNSICkKLSAgICB1MzIgICAgc2NjcjsgLyogc3lzdGVtIGNsb2NrIGNvbnRyb2wgUmVnaXN0ZXIgICovCisjZGVmaW5lIE9DQ1JfUkVTCX4oT0NDUl9QQ0lDT0UwIHwgT0NDUl9QQ0lDT0UxIHwgT0NDUl9QQ0lDT0UyIFwKKwkJCXwgT0NDUl9QQ0lDT0UzIHwgT0NDUl9QQ0lDT0U0IHwgT0NDUl9QQ0lDT0U1IFwKKwkJCXwgT0NDUl9QQ0lDT0U2IHwgT0NDUl9QQ0lDT0U3IHwgT0NDUl9QQ0lDRDAgXAorCQkJfCBPQ0NSX1BDSUNEMSB8IE9DQ1JfUENJQ0QyICB8IE9DQ1JfUENJQ0QzIFwKKwkJCXwgT0NDUl9QQ0lDRDQgIHwgT0NDUl9QQ0lDRDUgfCBPQ0NSX1BDSUNENiAgXAorCQkJfCBPQ0NSX1BDSUNENyAgfCBPQ0NSX1BDSTFDUiAgfCBPQ0NSX1BDSTJDUiApCisJdTMyICAgIHNjY3I7IC8qIHN5c3RlbSBjbG9jayBjb250cm9sIFJlZ2lzdGVyICAqLwogI2RlZmluZSBTQ0NSX1RTRUMxQ00gIDB4YzAwMDAwMDAgLyogVFNFQzFDTSAgKi8KICNkZWZpbmUgU0NDUl9UU0VDMUNNX1NISUZUIDMwCiAjZGVmaW5lIFNDQ1JfVFNFQzJDTSAgMHgzMDAwMDAwMCAvKiBUU0VDMkNNICAqLwpAQCAtNTQyLDIzICs1NzEsMjMgQEAKICNkZWZpbmUgU0NDUl9VU0JEUkNNICAweDAwMzAwMDAwIC8qIFVTQkRSQ00gICovCiAjZGVmaW5lIFNDQ1JfVVNCRFJDTV9TSElGVCAyMAogI2RlZmluZSBTQ0NSX1BDSUNNICAgIDB4MDAwMTAwMDAgLyogUENJQ00gICovCi0jZGVmaW5lIFNDQ1JfUkVTIH4oIFNDQ1JfVFNFQzFDTXxTQ0NSX1RTRUMyQ018U0NDUl9FTkNDTXxTQ0NSX1VTQk1QSENNIFwKLSAgICAgICAgICAgICAgICAgICB8U0NDUl9VU0JEUkNNfFNDQ1JfUENJQ00pCisjZGVmaW5lIFNDQ1JfUkVTCX4oIFNDQ1JfVFNFQzFDTSB8IFNDQ1JfVFNFQzJDTSB8IFNDQ1JfRU5DQ00gXAorCQkJfCBTQ0NSX1VTQk1QSENNIHwgU0NDUl9VU0JEUkNNIHwgU0NDUl9QQ0lDTSkKIAl1OCAgICAgcmVzMFsweEY0XTsKLX0gY2xrODM0OV90OyAKK30gY2xrODM0OV90OwogCiAvKgogICogUG93ZXIgTWFuYWdlbWVudCBDb250cm9sIE1vZHVsZQogICovCiB0eXBlZGVmIHN0cnVjdCBwbWM4MzQ5IHsKLSAgICB1MzIgICAgcG1jY3I7IC8qIFBNQyBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICAqLworCXUzMiAgICBwbWNjcjsgLyogUE1DIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgICovCiAjZGVmaW5lIFBNQ0NSX1NMUEVOIDB4MDAwMDAwMDEgLyogU3lzdGVtIExvdyBQb3dlciBFbmFibGUgICovCiAjZGVmaW5lIFBNQ0NSX0RMUEVOIDB4MDAwMDAwMDIgLyogRERSIFNEUkFNIExvdyBQb3dlciBFbmFibGUgICovCi0jZGVmaW5lIFBNQ0NSX1JFUyB+KFBNQ0NSX1NMUEVOfFBNQ0NSX0RMUEVOKQotICAgIHUzMiAgICBwbWNlcjsgLyogUE1DIEV2ZW50IFJlZ2lzdGVyICAqLworI2RlZmluZSBQTUNDUl9SRVMgfihQTUNDUl9TTFBFTiB8IFBNQ0NSX0RMUEVOKQorCXUzMiAgICBwbWNlcjsgLyogUE1DIEV2ZW50IFJlZ2lzdGVyICAqLwogI2RlZmluZSBQTUNFUl9QTUNJICAweDAwMDAwMDAxIC8qIFBNQyBJbnRlcnJ1cHQgICovCiAjZGVmaW5lIFBNQ0VSX1JFUyB+KFBNQ0VSX1BNQ0kpCi0gICAgdTMyICAgIHBtY21yOyAvKiBQTUMgTWFzayBSZWdpc3RlciAgKi8KKwl1MzIgICAgcG1jbXI7IC8qIFBNQyBNYXNrIFJlZ2lzdGVyICAqLwogI2RlZmluZSBQTUNNUl9QTUNJRSAweDAwMDEgLyogUE1DIEludGVycnVwdCBFbmFibGUgICovCiAjZGVmaW5lIFBNQ01SX1JFUyB+KFBNQ01SX1BNQ0lFKQogCXU4IHJlczBbMHhGNF07CkBAIC01NzAsNyArNTk5LDcgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ3BpbzgzNDkgewogCXUzMiBkaXI7IC8qIGRpcmVjdGlvbiByZWdpc3RlciAqLwotCXUzMiBvZHI7IC8qIG9wZW4gZHJhaW4gcmVnaXN0ZXIgKi8gCisJdTMyIG9kcjsgLyogb3BlbiBkcmFpbiByZWdpc3RlciAqLwogCXUzMiBkYXQ7IC8qIGRhdGEgcmVnaXN0ZXIgKi8KIAl1MzIgaWVyOyAvKiBpbnRlcnJ1cHQgZXZlbnQgcmVnaXN0ZXIgKi8KIAl1MzIgaW1yOyAvKiBpbnRlcnJ1cHQgbWFzayByZWdpc3RlciAqLwpAQCAtNTc4LDIyICs2MDcsMjIgQEAKIAl1OCByZXMwWzB4RThdOwogfSBncGlvODM0OV90OwogCi0vKiAKKy8qCiAgKiBERFIgTWVtb3J5IENvbnRyb2xsZXIgTWVtb3J5IE1hcAogICovCiB0eXBlZGVmIHN0cnVjdCBkZHJfY3NfYm5kc3sKLSAgICB1MzIgY3NibmRzOworCXUzMiBjc2JuZHM7CiAjZGVmaW5lIENTQk5EU19TQSAweDAwRkYwMDAwCiAjZGVmaW5lIENTQk5EU19TQV9TSElGVCAgIDE2CiAjZGVmaW5lIENTQk5EU19FQSAweDAwMDAwMEZGCiAjZGVmaW5lIENTQk5EU19FQV9TSElGVCAgICAwCi0gICAgdTggIHJlczBbNF07CisJdTggIHJlczBbNF07CiB9IGRkcl9jc19ibmRzX3Q7CiAKIHR5cGVkZWYgc3RydWN0IGRkcjgzNDl7Ci0gICAgZGRyX2NzX2JuZHNfdCBjc2JuZHNbNF07ICAgICAgICAgICAgLyoqPCBDaGlwIFNlbGVjdCB4IE1lbW9yeSBCb3VuZHMgKi8gCi0gICAgdTggcmVzMFsweDYwXTsKLSAgICB1MzIgY3NfY29uZmlnWzRdOyAgICAgICAvKio8IENoaXAgU2VsZWN0IHggQ29uZmlndXJhdGlvbiAqLyAKKwlkZHJfY3NfYm5kc190IGNzYm5kc1s0XTsgICAgICAgICAgICAvKio8IENoaXAgU2VsZWN0IHggTWVtb3J5IEJvdW5kcyAqLworCXU4IHJlczBbMHg2MF07CisJdTMyIGNzX2NvbmZpZ1s0XTsgICAgICAgLyoqPCBDaGlwIFNlbGVjdCB4IENvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQ1NDT05GSUdfRU4gICAgICAgICAweDgwMDAwMDAwCiAjZGVmaW5lIENTQ09ORklHX0FQICAgICAgICAgMHgwMDgwMDAwMAogI2RlZmluZSBDU0NPTkZJR19ST1dfQklUICAgIDB4MDAwMDA3MDAKQEAgLTYwNSw4ICs2MzQsOCBAQAogI2RlZmluZSBDU0NPTkZJR19DT0xfQklUXzkgIDB4MDAwMDAwMDEKICNkZWZpbmUgQ1NDT05GSUdfQ09MX0JJVF8xMCAweDAwMDAwMDAyCiAjZGVmaW5lIENTQ09ORklHX0NPTF9CSVRfMTEgMHgwMDAwMDAwMwotICAgIHU4IHJlczFbMHg3OF07Ci0gICAgdTMyIHRpbWluZ19jZmdfMTsgICAgICAgLyoqPCBTRFJBTSBUaW1pbmcgQ29uZmlndXJhdGlvbiAxICovCisJdTggcmVzMVsweDc4XTsKKwl1MzIgdGltaW5nX2NmZ18xOyAgICAgICAvKio8IFNEUkFNIFRpbWluZyBDb25maWd1cmF0aW9uIDEgKi8KICNkZWZpbmUgVElNSU5HX0NGRzFfUFJFVE9BQ1QgMHg3MDAwMDAwMAogI2RlZmluZSBUSU1JTkdfQ0ZHMV9QUkVUT0FDVF9TSElGVCAgIDI4CiAjZGVmaW5lIFRJTUlOR19DRkcxX0FDVFRPUFJFIDB4MEYwMDAwMDAKQEAgLTYyMCwxOCArNjQ5LDE4IEBACiAjZGVmaW5lIFRJTUlOR19DRkcxX1dSUkVDICAgIDB4MDAwMDA3MDAKICNkZWZpbmUgVElNSU5HX0NGRzFfV1JSRUNfU0hJRlQgICAgICAgOAogI2RlZmluZSBUSU1JTkdfQ0ZHMV9BQ1RUT0FDVCAweDAwMDAwMDcwCi0jZGVmaW5lIFRJTUlOR19DRkcxX0FDVFRPQUNUX1NISUZUICAgIDQgICAKKyNkZWZpbmUgVElNSU5HX0NGRzFfQUNUVE9BQ1RfU0hJRlQgICAgNAogI2RlZmluZSBUSU1JTkdfQ0ZHMV9XUlRPUkQgICAweDAwMDAwMDA3CiAjZGVmaW5lIFRJTUlOR19DRkcxX1dSVE9SRF9TSElGVCAgICAgIDAKIAotICAgIHUzMiB0aW1pbmdfY2ZnXzI7ICAgICAgIC8qKjwgU0RSQU0gVGltaW5nIENvbmZpZ3VyYXRpb24gMiAqLworCXUzMiB0aW1pbmdfY2ZnXzI7ICAgICAgIC8qKjwgU0RSQU0gVGltaW5nIENvbmZpZ3VyYXRpb24gMiAqLwogI2RlZmluZSBUSU1JTkdfQ0ZHMl9DUE8gICAgICAgICAgIDB4MEYwMDAwMDAKICNkZWZpbmUgVElNSU5HX0NGRzJfQ1BPX1NISUZUICAgICAgICAgICAgIDI0CiAjZGVmaW5lIFRJTUlOR19DRkcyX0FDU00gICAgICAgICAgMHgwMDA4MDAwMAotI2RlZmluZSBUSU1JTkdfQ0ZHMl9XUl9EQVRBX0RFTEFZIDB4MDAwMDFDMDAgICAKKyNkZWZpbmUgVElNSU5HX0NGRzJfV1JfREFUQV9ERUxBWSAweDAwMDAxQzAwCiAjZGVmaW5lIFRJTUlOR19DRkcyX1dSX0RBVEFfREVMQVlfU0hJRlQgICAxMAogCi0gICAgdTMyIHNkcmFtX2NmZzsgICAgICAgICAgLyoqPCBTRFJBTSBDb250cm9sIENvbmZpZ3VyYXRpb24gKi8KKwl1MzIgc2RyYW1fY2ZnOyAgICAgICAgICAvKio8IFNEUkFNIENvbnRyb2wgQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBTRFJBTV9DRkdfTUVNX0VOICAgICAweDgwMDAwMDAwCiAjZGVmaW5lIFNEUkFNX0NGR19TUkVOICAgICAgIDB4NDAwMDAwMDAKICNkZWZpbmUgU0RSQU1fQ0ZHX0VDQ19FTiAgICAgMHgyMDAwMDAwMApAQCAtNjQ0LDEwOSArNjczLDEwOCBAQAogI2RlZmluZSBTRFJBTV9DRkdfTkNBUCAgICAgICAweDAwMDIwMDAwCiAjZGVmaW5lIFNEUkFNX0NGR18yVF9FTiAgICAgIDB4MDAwMDgwMDAKIAotICAgIHU4IHJlczJbNF07Ci0gICAgdTMyIHNkcmFtX21vZGU7ICAgICAgICAgLyoqPCBTRFJBTSBNb2RlIENvbmZpZ3VyYXRpb24gKi8gCi0jZGVmaW5lIFNEUkFNX01PREVfRVNEIDB4RkZGRjAwMDAgICAKLSNkZWZpbmUgU0RSQU1fTU9ERV9FU0RfU0hJRlQgICAxNiAgICAgICAgICAgICAgCisJdTggcmVzMls0XTsKKwl1MzIgc2RyYW1fbW9kZTsgICAgICAgICAvKio8IFNEUkFNIE1vZGUgQ29uZmlndXJhdGlvbiAqLworI2RlZmluZSBTRFJBTV9NT0RFX0VTRCAweEZGRkYwMDAwCisjZGVmaW5lIFNEUkFNX01PREVfRVNEX1NISUZUICAgMTYKICNkZWZpbmUgU0RSQU1fTU9ERV9TRCAgMHgwMDAwRkZGRgogI2RlZmluZSBTRFJBTV9NT0RFX1NEX1NISUZUICAgICAwCiAKLSAgICB1OCByZXMzWzhdOwotICAgIHUzMiBzZHJhbV9pbnRlcnZhbDsgICAgIC8qKjwgU0RSQU0gSW50ZXJ2YWwgQ29uZmlndXJhdGlvbiAqLworCXU4IHJlczNbOF07CisJdTMyIHNkcmFtX2ludGVydmFsOyAgICAgLyoqPCBTRFJBTSBJbnRlcnZhbCBDb25maWd1cmF0aW9uICovCiAjZGVmaW5lIFNEUkFNX0lOVEVSVkFMX1JFRklOVCAgMHgzRkZGMDAwMAogI2RlZmluZSBTRFJBTV9JTlRFUlZBTF9SRUZJTlRfU0hJRlQgICAgMTYKICNkZWZpbmUgU0RSQU1fSU5URVJWQUxfQlNUT1BSRSAweDAwMDAzRkZGCiAjZGVmaW5lIFNEUkFNX0lOVEVSVkFMX0JTVE9QUkVfU0hJRlQgICAgMAotICAgIHU4ICAgcmVzOVs4XTsKLSAgICB1MzIgIHNkcmFtX2Nsa19jbnRsOwotICAgIHU4IHJlczRbMHhDQ0NdOwotICAgIHUzMiBkYXRhX2Vycl9pbmplY3RfaGk7IC8qKjwgTWVtb3J5IERhdGEgUGF0aCBFcnJvciBJbmplY3Rpb24gTWFzayBIaWdoICovCi0gICAgdTMyIGRhdGFfZXJyX2luamVjdF9sbzsgLyoqPCBNZW1vcnkgRGF0YSBQYXRoIEVycm9yIEluamVjdGlvbiBNYXNrIExvdyAqLwotICAgIHUzMiBlY2NfZXJyX2luamVjdDsgICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBFcnJvciBJbmplY3Rpb24gTWFzayBFQ0MgKi8KLSAgICB1OCByZXM1WzB4MTRdOwotICAgIHUzMiBjYXB0dXJlX2RhdGFfaGk7ICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBSZWFkIENhcHR1cmUgSGlnaCAqLwotICAgIHUzMiBjYXB0dXJlX2RhdGFfbG87ICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBSZWFkIENhcHR1cmUgTG93ICovCi0gICAgdTMyIGNhcHR1cmVfZWNjOyAgICAgICAgLyoqPCBNZW1vcnkgRGF0YSBQYXRoIFJlYWQgQ2FwdHVyZSBFQ0MgKi8KLSAgICB1OCByZXM2WzB4MTRdOwotICAgIHUzMiBlcnJfZGV0ZWN0OyAgICAgICAgIC8qKjwgTWVtb3J5IEVycm9yIERldGVjdCAqLyAKLSAgICB1MzIgZXJyX2Rpc2FibGU7ICAgICAgICAvKio8IE1lbW9yeSBFcnJvciBEaXNhYmxlICovCi0gICAgdTMyIGVycl9pbnRfZW47ICAgICAgICAgLyoqPCBNZW1vcnkgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLwotICAgIHUzMiBjYXB0dXJlX2F0dHJpYnV0ZXM7IC8qKjwgTWVtb3J5IEVycm9yIEF0dHJpYnV0ZXMgQ2FwdHVyZSAqLwotICAgIHUzMiBjYXB0dXJlX2FkZHJlc3M7ICAgIC8qKjwgTWVtb3J5IEVycm9yIEFkZHJlc3MgQ2FwdHVyZSAqLwotICAgIHUzMiBjYXB0dXJlX2V4dF9hZGRyZXNzOy8qKjwgTWVtb3J5IEVycm9yIEV4dGVuZGVkIEFkZHJlc3MgQ2FwdHVyZSAqLwotICAgIHUzMiBlcnJfc2JlOyAgICAgICAgICAgIC8qKjwgTWVtb3J5IFNpbmdsZS1CaXQgRUNDIEVycm9yIE1hbmFnZW1lbnQgKi8KLSAgICB1OCByZXM3WzB4QTRdOworCXU4ICAgcmVzOVs4XTsKKwl1MzIgIHNkcmFtX2Nsa19jbnRsOworCXU4IHJlczRbMHhDQ0NdOworCXUzMiBkYXRhX2Vycl9pbmplY3RfaGk7IC8qKjwgTWVtb3J5IERhdGEgUGF0aCBFcnJvciBJbmplY3Rpb24gTWFzayBIaWdoICovCisJdTMyIGRhdGFfZXJyX2luamVjdF9sbzsgLyoqPCBNZW1vcnkgRGF0YSBQYXRoIEVycm9yIEluamVjdGlvbiBNYXNrIExvdyAqLworCXUzMiBlY2NfZXJyX2luamVjdDsgICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBFcnJvciBJbmplY3Rpb24gTWFzayBFQ0MgKi8KKwl1OCByZXM1WzB4MTRdOworCXUzMiBjYXB0dXJlX2RhdGFfaGk7ICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBSZWFkIENhcHR1cmUgSGlnaCAqLworCXUzMiBjYXB0dXJlX2RhdGFfbG87ICAgIC8qKjwgTWVtb3J5IERhdGEgUGF0aCBSZWFkIENhcHR1cmUgTG93ICovCisJdTMyIGNhcHR1cmVfZWNjOyAgICAgICAgLyoqPCBNZW1vcnkgRGF0YSBQYXRoIFJlYWQgQ2FwdHVyZSBFQ0MgKi8KKwl1OCByZXM2WzB4MTRdOworCXUzMiBlcnJfZGV0ZWN0OyAgICAgICAgIC8qKjwgTWVtb3J5IEVycm9yIERldGVjdCAqLworCXUzMiBlcnJfZGlzYWJsZTsgICAgICAgIC8qKjwgTWVtb3J5IEVycm9yIERpc2FibGUgKi8KKwl1MzIgZXJyX2ludF9lbjsgICAgICAgICAvKio8IE1lbW9yeSBFcnJvciBJbnRlcnJ1cHQgRW5hYmxlICovCisJdTMyIGNhcHR1cmVfYXR0cmlidXRlczsgLyoqPCBNZW1vcnkgRXJyb3IgQXR0cmlidXRlcyBDYXB0dXJlICovCisJdTMyIGNhcHR1cmVfYWRkcmVzczsgICAgLyoqPCBNZW1vcnkgRXJyb3IgQWRkcmVzcyBDYXB0dXJlICovCisJdTMyIGNhcHR1cmVfZXh0X2FkZHJlc3M7LyoqPCBNZW1vcnkgRXJyb3IgRXh0ZW5kZWQgQWRkcmVzcyBDYXB0dXJlICovCisJdTMyIGVycl9zYmU7ICAgICAgICAgICAgLyoqPCBNZW1vcnkgU2luZ2xlLUJpdCBFQ0MgRXJyb3IgTWFuYWdlbWVudCAqLworCXU4IHJlczdbMHhBNF07CiAJdTMyIGRlYnVnX3JlZzsKLSAgICB1OCByZXM4WzB4RkNdOworCXU4IHJlczhbMHhGQ107CiB9IGRkcjgzNDlfdDsKIAogLyoKICAqIEkyQzEgQ29udHJvbGxlcgotICovIAorICovCiAKIAogLyoKICAqIERVQVJUCiAgKi8KIHR5cGVkZWYgc3RydWN0IGR1YXJ0ODM0OXsKLSAgICB1OCB1cmJyX3VsY3JfdWRsYjsgLyoqPCBjb21iaW5lZCByZWdpc3RlciBmb3IgVVJCUiwgVVRIUiBhbmQgVURMQiAqLwotICAgIHU4IHVpZXJfdWRtYjsgICAgICAvKio8IGNvbWJpbmVkIHJlZ2lzdGVyIGZvciBVSUVSIGFuZCBVRE1CICovCi0gICAgdTggdWlpcl91ZmNyX3VhZnI7IC8qKjwgY29tYmluZWQgcmVnaXN0ZXIgZm9yIFVJSVIsIFVGQ1IgYW5kIFVBRlIgKi8KLSAgICB1OCB1bGNyOyAgICAgICAgLyoqPCBsaW5lIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLSAgICB1OCB1bWNyOyAgICAgICAgLyoqPCBNT0RFTSBjb250cm9sIHJlZ2lzdGVyICovCi0gICAgdTggdWxzcjsgICAgICAgIC8qKjwgbGluZSBzdGF0dXMgcmVnaXN0ZXIgKi8KLSAgICB1OCB1bXNyOyAgICAgICAgLyoqPCBNT0RFTSBzdGF0dXMgcmVnaXN0ZXIgKi8KLSAgICB1OCB1c2NyOyAgICAgICAgLyoqPCBzY3JhdGNoIHJlZ2lzdGVyICovCi0gICAgdTggcmVzMFs4XTsKLSAgICB1OCB1ZHNyOyAgICAgICAgLyoqPCBETUEgc3RhdHVzIHJlZ2lzdGVyICovCi0gICAgdTggcmVzMVszXTsKLSAgICB1OCByZXMyWzB4RUNdOwotICAgIAorCXU4IHVyYnJfdWxjcl91ZGxiOyAvKio8IGNvbWJpbmVkIHJlZ2lzdGVyIGZvciBVUkJSLCBVVEhSIGFuZCBVRExCICovCisJdTggdWllcl91ZG1iOyAgICAgIC8qKjwgY29tYmluZWQgcmVnaXN0ZXIgZm9yIFVJRVIgYW5kIFVETUIgKi8KKwl1OCB1aWlyX3VmY3JfdWFmcjsgLyoqPCBjb21iaW5lZCByZWdpc3RlciBmb3IgVUlJUiwgVUZDUiBhbmQgVUFGUiAqLworCXU4IHVsY3I7ICAgICAgICAvKio8IGxpbmUgY29udHJvbCByZWdpc3RlciAqLworCXU4IHVtY3I7ICAgICAgICAvKio8IE1PREVNIGNvbnRyb2wgcmVnaXN0ZXIgKi8KKwl1OCB1bHNyOyAgICAgICAgLyoqPCBsaW5lIHN0YXR1cyByZWdpc3RlciAqLworCXU4IHVtc3I7ICAgICAgICAvKio8IE1PREVNIHN0YXR1cyByZWdpc3RlciAqLworCXU4IHVzY3I7ICAgICAgICAvKio8IHNjcmF0Y2ggcmVnaXN0ZXIgKi8KKwl1OCByZXMwWzhdOworCXU4IHVkc3I7ICAgICAgICAvKio8IERNQSBzdGF0dXMgcmVnaXN0ZXIgKi8KKwl1OCByZXMxWzNdOworCXU4IHJlczJbMHhFQ107CiB9IGR1YXJ0ODM0OV90OwogCiAvKgogICogTG9jYWwgQnVzIENvbnRyb2xsZXIgUmVnaXN0ZXJzCiAgKi8KIHR5cGVkZWYgc3RydWN0IGxidXNfYmFua3sKLSAgICB1MzIgYnI7ICAgICAgICAgICAgIC8qKjwgQmFzZSBSZWdpc3RlciAgKi8KLSAgICB1MzIgb3I7ICAgICAgICAgICAgIC8qKjwgQmFzZSBSZWdpc3RlciAgKi8KKwl1MzIgYnI7ICAgICAgICAgICAgIC8qKjwgQmFzZSBSZWdpc3RlciAgKi8KKwl1MzIgb3I7ICAgICAgICAgICAgIC8qKjwgQmFzZSBSZWdpc3RlciAgKi8KIH0gbGJ1c19iYW5rX3Q7CiAKIHR5cGVkZWYgc3RydWN0IGxidXM4MzQ5IHsKLSAgICBsYnVzX2JhbmtfdCBiYW5rWzhdOwotICAgIHU4IHJlczBbMHgyOF07Ci0gICAgdTMyIG1hcjsgICAgICAgICAgICAgICAgLyoqPCBVUE0gQWRkcmVzcyBSZWdpc3RlciAqLwotICAgIHU4IHJlczFbMHg0XTsKLSAgICB1MzIgbWFtcjsgICAgICAgICAgICAgICAvKio8IFVQTUEgTW9kZSBSZWdpc3RlciAqLwotICAgIHUzMiBtYm1yOyAgICAgICAgICAgICAgIC8qKjwgVVBNQiBNb2RlIFJlZ2lzdGVyICovCi0gICAgdTMyIG1jbXI7ICAgICAgICAgICAgICAgLyoqPCBVUE1DIE1vZGUgUmVnaXN0ZXIgKi8KLSAgICB1OCByZXMyWzB4OF07Ci0gICAgdTMyIG1ydHByOyAgICAgICAgICAgICAgLyoqPCBNZW1vcnkgUmVmcmVzaCBUaW1lciBQcmVzY2FsZXIgUmVnaXN0ZXIgKi8KLSAgICB1MzIgbWRyOyAgICAgICAgICAgICAgICAvKio8IFVQTSBEYXRhIFJlZ2lzdGVyICovCi0gICAgdTggcmVzM1sweDhdOwotICAgIHUzMiBsc2RtcjsgICAgICAgICAgICAgIC8qKjwgU0RSQU0gTW9kZSBSZWdpc3RlciAqLwotICAgIHU4IHJlczRbMHg4XTsKLSAgICB1MzIgbHVydDsgICAgICAgICAgICAgICAvKio8IFVQTSBSZWZyZXNoIFRpbWVyICovCi0gICAgdTMyIGxzcnQ7ICAgICAgICAgICAgICAgLyoqPCBTRFJBTSBSZWZyZXNoIFRpbWVyICovCi0gICAgdTggcmVzNVsweDhdOwotICAgIHUzMiBsdGVzcjsgICAgICAgICAgICAgIC8qKjwgVHJhbnNmZXIgRXJyb3IgU3RhdHVzIFJlZ2lzdGVyICovCi0gICAgdTMyIGx0ZWRyOyAgICAgICAgICAgICAgLyoqPCBUcmFuc2ZlciBFcnJvciBEaXNhYmxlIFJlZ2lzdGVyICovCi0gICAgdTMyIGx0ZWlyOyAgICAgICAgICAgICAgLyoqPCBUcmFuc2ZlciBFcnJvciBJbnRlcnJ1cHQgUmVnaXN0ZXIgKi8KLSAgICB1MzIgbHRlYXRyOyAgICAgICAgICAgICAvKio8IFRyYW5zZmVyIEVycm9yIEF0dHJpYnV0ZXMgUmVnaXN0ZXIgKi8KLSAgICB1MzIgbHRlYXI7ICAgICAgICAgICAgICAvKio8IFRyYW5zZmVyIEVycm9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KLSAgICB1OCByZXM2WzB4Q107Ci0gICAgdTMyIGxiY3I7ICAgICAgICAgICAgICAgLyoqPCBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisJbGJ1c19iYW5rX3QgYmFua1s4XTsKKwl1OCByZXMwWzB4MjhdOworCXUzMiBtYXI7ICAgICAgICAgICAgICAgIC8qKjwgVVBNIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKwl1OCByZXMxWzB4NF07CisJdTMyIG1hbXI7ICAgICAgICAgICAgICAgLyoqPCBVUE1BIE1vZGUgUmVnaXN0ZXIgKi8KKwl1MzIgbWJtcjsgICAgICAgICAgICAgICAvKio8IFVQTUIgTW9kZSBSZWdpc3RlciAqLworCXUzMiBtY21yOyAgICAgICAgICAgICAgIC8qKjwgVVBNQyBNb2RlIFJlZ2lzdGVyICovCisJdTggcmVzMlsweDhdOworCXUzMiBtcnRwcjsgICAgICAgICAgICAgIC8qKjwgTWVtb3J5IFJlZnJlc2ggVGltZXIgUHJlc2NhbGVyIFJlZ2lzdGVyICovCisJdTMyIG1kcjsgICAgICAgICAgICAgICAgLyoqPCBVUE0gRGF0YSBSZWdpc3RlciAqLworCXU4IHJlczNbMHg4XTsKKwl1MzIgbHNkbXI7ICAgICAgICAgICAgICAvKio8IFNEUkFNIE1vZGUgUmVnaXN0ZXIgKi8KKwl1OCByZXM0WzB4OF07CisJdTMyIGx1cnQ7ICAgICAgICAgICAgICAgLyoqPCBVUE0gUmVmcmVzaCBUaW1lciAqLworCXUzMiBsc3J0OyAgICAgICAgICAgICAgIC8qKjwgU0RSQU0gUmVmcmVzaCBUaW1lciAqLworCXU4IHJlczVbMHg4XTsKKwl1MzIgbHRlc3I7ICAgICAgICAgICAgICAvKio8IFRyYW5zZmVyIEVycm9yIFN0YXR1cyBSZWdpc3RlciAqLworCXUzMiBsdGVkcjsgICAgICAgICAgICAgIC8qKjwgVHJhbnNmZXIgRXJyb3IgRGlzYWJsZSBSZWdpc3RlciAqLworCXUzMiBsdGVpcjsgICAgICAgICAgICAgIC8qKjwgVHJhbnNmZXIgRXJyb3IgSW50ZXJydXB0IFJlZ2lzdGVyICovCisJdTMyIGx0ZWF0cjsgICAgICAgICAgICAgLyoqPCBUcmFuc2ZlciBFcnJvciBBdHRyaWJ1dGVzIFJlZ2lzdGVyICovCisJdTMyIGx0ZWFyOyAgICAgICAgICAgICAgLyoqPCBUcmFuc2ZlciBFcnJvciBBZGRyZXNzIFJlZ2lzdGVyICovCisJdTggcmVzNlsweENdOworCXUzMiBsYmNyOyAgICAgICAgICAgICAgIC8qKjwgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLwogI2RlZmluZSBMQkNSX0xESVMgIDB4ODAwMDAwMDAKICNkZWZpbmUgTEJDUl9MRElTX1NISUZUICAgIDMxCiAjZGVmaW5lIExCQ1JfQkNUTEMgMHgwMEMwMDAwMAogI2RlZmluZSBMQkNSX0JDVExDX1NISUZUICAgMjIKICNkZWZpbmUgTEJDUl9MUEJTRSAweDAwMDIwMDAwCi0jZGVmaW5lIExCQ1JfTFBCU0VfU0hJRlQgICAxNyAgCisjZGVmaW5lIExCQ1JfTFBCU0VfU0hJRlQgICAxNwogI2RlZmluZSBMQkNSX0VQQVIgIDB4MDAwMTAwMDAKICNkZWZpbmUgTEJDUl9FUEFSX1NISUZUICAgIDE2CiAjZGVmaW5lIExCQ1JfQk1UICAgMHgwMDAwRkYwMAogI2RlZmluZSBMQkNSX0JNVF9TSElGVCAgICAgIDgKLSAgICB1MzIgbGNycjsgICAgICAgICAgICAgICAvKio8IENsb2NrIFJhdGlvIFJlZ2lzdGVyICovCisJdTMyIGxjcnI7ICAgICAgICAgICAgICAgLyoqPCBDbG9jayBSYXRpbyBSZWdpc3RlciAqLwogI2RlZmluZSBMQ1JSX0RCWVAgICAgMHg4MDAwMDAwMAogI2RlZmluZSBMQ1JSX0RCWVBfU0hJRlQgICAgICAzMQogI2RlZmluZSBMQ1JSX0JVRkNNREMgMHgzMDAwMDAwMApAQCAtNzU5LDggKzc4Nyw4IEBACiAjZGVmaW5lIExDUlJfQ0xLRElWX1NISUZUICAgICAwCiAKIAotICAgIHU4IHJlczdbMHgyOF07Ci0gICAgdTggcmVzOFsweEYwMF07CisJdTggcmVzN1sweDI4XTsKKwl1OCByZXM4WzB4RjAwXTsKIH0gbGJ1czgzNDlfdDsKIAogLyoKQEAgLTc2OCwxNiArNzk2LDE2IEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IHNwaTgzNDkKIHsKLSAgICB1MzIgbW9kZTsgICAgIC8qKjwgbW9kZSByZWdpc3RlciAgKi8KLSAgICB1MzIgZXZlbnQ7ICAgIC8qKjwgZXZlbnQgcmVnaXN0ZXIgKi8KLSAgICB1MzIgbWFzazsgICAgIC8qKjwgbWFzayByZWdpc3RlciAgKi8KLSAgICB1MzIgY29tOyAgICAgIC8qKjwgY29tbWFuZCByZWdpc3RlciAqLwotICAgIHU4IHJlczBbMHgxMF07Ci0gICAgdTMyIHR4OyAgICAgICAvKio8IHRyYW5zbWl0IHJlZ2lzdGVyICovCi0gICAgdTMyIHJ4OyAgICAgICAvKio8IHJlY2VpdmUgcmVnaXN0ZXIgKi8KLSAgICB1OCByZXMxWzB4RDhdOworCXUzMiBtb2RlOyAgICAgLyoqPCBtb2RlIHJlZ2lzdGVyICAqLworCXUzMiBldmVudDsgICAgLyoqPCBldmVudCByZWdpc3RlciAqLworCXUzMiBtYXNrOyAgICAgLyoqPCBtYXNrIHJlZ2lzdGVyICAqLworCXUzMiBjb207ICAgICAgLyoqPCBjb21tYW5kIHJlZ2lzdGVyICovCisJdTggcmVzMFsweDEwXTsKKwl1MzIgdHg7ICAgICAgIC8qKjwgdHJhbnNtaXQgcmVnaXN0ZXIgKi8KKwl1MzIgcng7ICAgICAgIC8qKjwgcmVjZWl2ZSByZWdpc3RlciAqLworCXU4IHJlczFbMHhEOF07CiB9IHNwaTgzNDlfdDsKLSAKKwogdHlwZWRlZiBzdHJ1Y3QgZG1hODM0OSB7CiAJdTggZml4bWVbMHgzMDBdOwogfSBkbWE4MzQ5X3Q7CkBAIC04MTQsNyArODQyLDcgQEAKIH0gcG90ODM0OV90OwogLyoKICAqIFNlcXVlbmNlcgotICovIAorICovCiB0eXBlZGVmIHN0cnVjdCBpb3M4MzQ5IHsKIAlwb3Q4MzQ5X3QJcG90WzZdOwogI2RlZmluZSBQT1RBUl9UQV9NQVNLCTB4MDAwZmZmZmYKQEAgLTkwNSw3ICs5MzMsNyBAQAogI2RlZmluZQlFQVRDUl9UU18zCQkweDAwMzAwMDAwCiAjZGVmaW5lCUVBVENSX0VTX01BU0sJCTB4MDAwZjAwMDAJLyogZXJyb3Igc291cmNlICovCiAjZGVmaW5lCUVBVENSX0VTX0VNCQkweDAwMDAwMDAwCS8qIGV4dGVybmFsIG1hc3RlciAqLwotI2RlZmluZQlFQVRDUl9FU19ETUEJCTB4MDAwNTAwMDAJCisjZGVmaW5lCUVBVENSX0VTX0RNQQkJMHgwMDA1MDAwMAogI2RlZmluZQlFQVRDUl9DTURfTUFTSwkJMHgwMDAwZjAwMAogI2RlZmluZQlFQVRDUl9IQkVfTUFTSwkJMHgwMDAwMGYwMAkvKiBQQ0kgaGlnaCBieXRlIGVuYWJsZSovCiAjZGVmaW5lCUVBVENSX0JFX01BU0sJCTB4MDAwMDAwZjAJLyogUENJIGJ5dGUgZW5hYmxlICovCkBAIC05NDgsNyArOTc2LDcgQEAKICNkZWZpbmUgUElXQVJfUlRUX1NOT09QCQkweDAwMDUwMDAwCiAjZGVmaW5lCVBJV0FSX1dUVF9NQVNLCQkweDAwMDBmMDAwCiAjZGVmaW5lCVBJV0FSX1dUVF9OT19TTk9PUAkweDAwMDA0MDAwCi0jZGVmaW5lIFBJV0FSX1dUVF9TTk9PUAkJMHgwMDAwNTAwMAkKKyNkZWZpbmUgUElXQVJfV1RUX1NOT09QCQkweDAwMDA1MDAwCiAjZGVmaW5lCVBJV0FSX0lXU19NQVNLCTB4MDAwMDAwM0YKICNkZWZpbmUJUElXQVJfSVdTXzRLCTB4MDAwMDAwMEIKICNkZWZpbmUJUElXQVJfSVdTXzhLCTB4MDAwMDAwMEMKQEAgLTk3Myw3ICsxMDAxLDcgQEAKIH0gcGNpY3RybDgzNDlfdDsKIAogLyoKLSAqIFVTQiAKKyAqIFVTQgogICovCiB0eXBlZGVmIHN0cnVjdCB1c2I4MzQ5IHsKIAl1OCBmaXhtZVsweDIwMDBdOwpAQCAtMTAwMCw5ICsxMDI4LDkgQEAKIAlydGNsazgzNDlfdCAgIHBpdDsgICAgIC8qIFBlcmlvZGljIEludGVydmFsIFRpbWVyICovCiAJZ3RtODM0OV90ICAgICBndG1bMl07ICAvKiBHbG9iYWwgVGltZXJzIE1vZHVsZSAqLwogCWlwaWM4MzQ5X3QgICAgaXBpYzsgICAgLyogSW50ZWdyYXRlZCBQcm9ncmFtbWFibGUgSW50ZXJydXB0IENvbnRyb2xsZXIgKi8KLQlhcmJpdGVyODM0OV90IGFyYml0ZXI7IC8qIFN5c3RlbSBBcmJpdGVyIFJlZ2lzdGVycyAqLyAKKwlhcmJpdGVyODM0OV90IGFyYml0ZXI7IC8qIFN5c3RlbSBBcmJpdGVyIFJlZ2lzdGVycyAqLwogCXJlc2V0ODM0OV90ICAgcmVzZXQ7ICAgLyogUmVzZXQgTW9kdWxlICovCi0JY2xrODM0OV90ICAgICBjbGs7ICAgICAvKiBTeXN0ZW0gQ2xvY2sgTW9kdWxlICovIAorCWNsazgzNDlfdCAgICAgY2xrOyAgICAgLyogU3lzdGVtIENsb2NrIE1vZHVsZSAqLwogCXBtYzgzNDlfdCAgICAgcG1jOyAgICAgLyogUG93ZXIgTWFuYWdlbWVudCBDb250cm9sIE1vZHVsZSAqLwogCWdwaW84MzQ5X3QgICAgcGdpb1syXTsgLyogZ2VuZXJhbCBwdXJwb3NlIEkvTyBtb2R1bGUgKi8KIAl1OCByZXMwWzB4MjAwXTsKQEAgLTEwMjYsNyArMTA1NCw3IEBACiAJdXNiODM0OV90ICAgICB1c2I7CiAJdHNlYzgzNDlfdCAgICB0c2VjWzJdOwogCXU4IHJlczdbMHhBMDAwXTsKLQlzZWN1cml0eTgzNDlfdCBzZWN1cml0eTsgCisJc2VjdXJpdHk4MzQ5X3Qgc2VjdXJpdHk7CiB9IGltbWFwX3Q7CiAKICNlbmRpZiAvKiBfX0lNTUFQXzgzNDlfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzg1eHguaCBiL2luY2x1ZGUvYXNtLXBwYy9pbW1hcF84NXh4LmgKaW5kZXggMjJmMTlmMC4uMmYxMGU5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tcHBjL2ltbWFwXzg1eHguaAorKysgYi9pbmNsdWRlL2FzbS1wcGMvaW1tYXBfODV4eC5oCkBAIC05LDkgKzksOSBAQAogI2lmbmRlZiBfX0lNTUFQXzg1eHhfXwogI2RlZmluZSBfX0lNTUFQXzg1eHhfXwogCi0KLS8qIExvY2FsLUFjY2VzcyBSZWdpc3RlcnMgYW5kIEVDTSBSZWdpc3RlcnMoMHgwMDAwLTB4MjAwMCkgKi8KLQorLyoKKyAqIExvY2FsLUFjY2VzcyBSZWdpc3RlcnMgYW5kIEVDTSBSZWdpc3RlcnMoMHgwMDAwLTB4MjAwMCkKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9sb2NhbF9lY20gewogCXVpbnQJY2NzcmJhcjsJLyogMHgwIC0gQ29udHJvbCBDb25maWd1cmF0aW9uIFN0YXR1cyBSZWdpc3RlcnMgQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICovCiAJY2hhcglyZXMxWzRdOwpAQCAtNjUsOSArNjUsOSBAQAogCWNoYXIJcmVzMjRbNDkyXTsKIH0gY2Nzcl9sb2NhbF9lY21fdDsKIAotCi0vKiBERFIgbWVtb3J5IGNvbnRyb2xsZXIgcmVnaXN0ZXJzKDB4MjAwMC0weDMwMDApICovCi0KKy8qCisgKiBERFIgbWVtb3J5IGNvbnRyb2xsZXIgcmVnaXN0ZXJzKDB4MjAwMC0weDMwMDApCisgKi8KIHR5cGVkZWYgc3RydWN0IGNjc3JfZGRyIHsKIAl1aW50CWNzMF9ibmRzOwkJLyogMHgyMDAwIC0gRERSIENoaXAgU2VsZWN0IDAgTWVtb3J5IEJvdW5kcyAqLwogCWNoYXIJcmVzMVs0XTsKQEAgLTEyNSwxMSArMTI1LDkgQEAKIAljaGFyCXJlczEyWzI0MF07CiB9IGNjc3JfZGRyX3Q7CiAKLQotCi0KLS8qIEkyQyBSZWdpc3RlcnMoMHgzMDAwLTB4NDAwMCkgKi8KLQorLyoKKyAqIEkyQyBSZWdpc3RlcnMoMHgzMDAwLTB4NDAwMCkKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9pMmMgewogCXVfY2hhcglpMmNhZHI7CQkvKiAweDMwMDAgLSBJMkMgQWRkcmVzcyBSZWdpc3RlciAqLwogI2RlZmluZSBNUEM4NXh4X0kyQ0FEUl9NQVNLCTB4RkUKQEAgLTI0NiwxMCArMjQ0LDEwIEBACiAJY2hhcglyZXM4WzEyMDcyXTsKIH0gY2Nzcl9sYmNfdDsKIAotCi0vKiBQQ0kgUmVnaXN0ZXJzKDB4ODAwMC0weDkwMDApICovCi0vKiBPbWl0dGluZyBSZXNlcnZlZCgweDkwMDAtMHgyXzAwMDApICovCi0KKy8qCisgKiBQQ0kgUmVnaXN0ZXJzKDB4ODAwMC0weDkwMDApCisgKiBPbWl0dGluZyBSZXNlcnZlZCgweDkwMDAtMHgyXzAwMDApCisgKi8KIHR5cGVkZWYgc3RydWN0IGNjc3JfcGNpeCB7CiAJdWludAljZmdfYWRkcjsJLyogMHg4MDAwIC0gUENJWCBDb25maWd1cmF0aW9uIEFkZHJlc3MgUmVnaXN0ZXIgKi8KIAl1aW50CWNmZ19kYXRhOwkvKiAweDgwMDQgLSBQQ0lYIENvbmZpZ3VyYXRpb24gRGF0YSBSZWdpc3RlciAqLwpAQCAtMzE0LDkgKzMxMiw5IEBACiAJY2hhcglyZXMxMVs5NDY4OF07CiB9IGNjc3JfcGNpeF90OwogCi0KLS8qIEwyIENhY2hlIFJlZ2lzdGVycygweDJfMDAwMC0weDJfMTAwMCkgKi8KLQorLyoKKyAqIEwyIENhY2hlIFJlZ2lzdGVycygweDJfMDAwMC0weDJfMTAwMCkKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9sMmNhY2hlIHsKIAl1aW50CWwyY3RsOwkJLyogMHgyMDAwMCAtIEwyIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgMCAqLwogCWNoYXIJcmVzMVsxMl07CkBAIC0zNTgsOSArMzU2LDkgQEAKIAljaGFyCXJlczE1WzQyMF07CiB9IGNjc3JfbDJjYWNoZV90OwogCi0KLS8qIERNQSBSZWdpc3RlcnMoMHgyXzEwMDAtMHgyXzIwMDApICovCi0KKy8qCisgKiBETUEgUmVnaXN0ZXJzKDB4Ml8xMDAwLTB4Ml8yMDAwKQorICovCiB0eXBlZGVmIHN0cnVjdCBjY3NyX2RtYSB7CiAJY2hhcglyZXMxWzI1Nl07CiAJdWludAltcjA7CQkvKiAweDIxMTAwIC0gRE1BIDAgTW9kZSBSZWdpc3RlciAqLwpAQCAtNDM5LDcgKzQzNyw5IEBACiAJY2hhcglyZXMyMlsxMTUxNl07CiB9IGNjc3JfZG1hX3Q7CiAKLS8qIHRzZWMxIHRzZWMyOiAyNDAwMC0yNjAwMCAqLworLyoKKyAqIHRzZWMxIHRzZWMyOiAyNDAwMC0yNjAwMAorICovCiB0eXBlZGVmIHN0cnVjdCBjY3NyX3RzZWMgewogCWNoYXIJcmVzMVsxNl07CiAJdWludAlpZXZlbnQ7CQkvKiAweDI0MDEwIC0gSW50ZXJydXB0IEV2ZW50IFJlZ2lzdGVyICovCkBAIC03MjYsOCArNzI2LDkgQEAKIAljaGFyCXJlczc0WzEwMjRdOwogfSBjY3NyX3RzZWNfdDsKIAotLyogUElDIFJlZ2lzdGVycygweDJfNjAwMC0weDRfMDAwMC0weDhfMDAwMCkgKi8KLQorLyoKKyAqIFBJQyBSZWdpc3RlcnMoMHgyXzYwMDAtMHg0XzAwMDAtMHg4XzAwMDApCisgKi8KIHR5cGVkZWYgc3RydWN0IGNjc3JfcGljIHsKIAljaGFyIAlyZXMwWzEwNjQ5Nl07CS8qIDB4MjYwMDAtMHg0MDAwMCAqLwogCWNoYXIJcmVzMVs2NF07CkBAIC0xMDMzLDE1ICsxMDM0LDE4IEBACiAJY2hhcglyZXMxNTBbMTMwODkyXTsKIH0gY2Nzcl9waWNfdDsKIAotLyogQ1BNIEJsb2NrKDB4OF8wMDAwLTB4Y18wMDAwKSAqLworLyoKKyAqIENQTSBCbG9jaygweDhfMDAwMC0weGNfMDAwMCkKKyAqLwogI2lmbmRlZiBDT05GSUdfQ1BNMgogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9jcG0gewogCWNoYXIgcmVzWzI2MjE0NF07CiB9IGNjc3JfY3BtX3Q7CiAjZWxzZQotLyogMHg4MDAwLTB4OGZmZmY6RFBBUk0gKi8KLQotLyogMHg5MDAwLTB4OTBiZmY6IEdlbmVyYWwgU0lVICovCisvKgorICogMHg4MDAwLTB4OGZmZmY6RFBBUk0KKyAqIDB4OTAwMC0weDkwYmZmOiBHZW5lcmFsIFNJVQorICovCiB0eXBlZGVmIHN0cnVjdCBjY3NyX2NwbV9zaXUgewogCWNoYXIgCXJlczFbODBdOwogCXVpbnQJc21hZXI7CkBAIC0xMzMyLDcgKzEzMzYsNiBAQAogCWNoYXIgICAgICAgICAgICAJcmVzMVsxNioxMDI0XTsKIAl1X2NoYXIgICAgICAgICAgCWltX2RwcmFtMlsxNioxMDI0XTsKIAljaGFyICAgICAgICAgICAgCXJlczJbMTYqMTAyNF07Ci0KIAljY3NyX2NwbV9zaXVfdCAgCWltX2NwbV9zaXU7ICAgICAvKiBTSVUgQ29uZmlndXJhdGlvbiAqLwogCWNjc3JfY3BtX2ludGN0bF90ICAgIAlpbV9jcG1faW50Y3RsOyAgLyogSW50ZXJydXB0IENvbnRyb2xsZXIgKi8KIAljY3NyX2NwbV9pb3BfdCAgICAgICAJaW1fY3BtX2lvcDsgICAgIC8qIElPIFBvcnQgY29udHJvbC9zdGF0dXMgKi8KQEAgLTEzNTcsOCArMTM2MCwxMCBAQAogCWNjc3JfY3BtX2lyYW1fdAkJaW1fY3BtX2lyYW07CiB9IGNjc3JfY3BtX3Q7CiAjZW5kaWYKLS8qIFJhcGlkSU8gUmVnaXN0ZXJzKDB4Y18wMDAwLTB4ZV8wMDAwKSAqLwogCisvKgorICogUmFwaWRJTyBSZWdpc3RlcnMoMHhjXzAwMDAtMHhlXzAwMDApCisgKi8KIHR5cGVkZWYgc3RydWN0IGNjc3JfcmlvIHsKIAl1aW50CWRpZGNhcjsJCS8qIDB4YzAwMDAgLSBEZXZpY2UgSWRlbnRpdHkgQ2FwYWJpbGl0eSBSZWdpc3RlciAqLwogCXVpbnQJZGljYXI7CQkvKiAweGMwMDA0IC0gRGV2aWNlIEluZm9ybWF0aW9uIENhcGFiaWxpdHkgUmVnaXN0ZXIgKi8KQEAgLTE1MjQsNyArMTUyOSw5IEBACiAJY2hhcglyZXM1OFs2MDE3Nl07CiB9IGNjc3JfcmlvX3Q7CiAKLS8qIEdsb2JhbCBVdGlsaXRpZXMgUmVnaXN0ZXIgQmxvY2soMHhlXzAwMDAtMHhmX2ZmZmYpICovCisvKgorICogR2xvYmFsIFV0aWxpdGllcyBSZWdpc3RlciBCbG9jaygweGVfMDAwMC0weGZfZmZmZikKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9ndXIgewogCXVpbnQJcG9ycGxsc3I7CS8qIDB4ZTAwMDAgLSBQT1IgUExMIHJhdGlvIHN0YXR1cyByZWdpc3RlciAqLwogCXVpbnQJcG9yYm1zcjsJLyogMHhlMDAwNCAtIFBPUiBib290IG1vZGUgc3RhdHVzIHJlZ2lzdGVyICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM0OUFEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzgzNDlBRFMuaAppbmRleCA0ZjRhOTliLi44ZGFhYjMxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODM0OUFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4MzQ5QURTLmgKQEAgLTczLDggKzczLDYgQEAKICNkZWZpbmUgQ0ZHX01FTVRFU1RfU1RBUlQgICAgICAgMHgwMDAwMDAwMCAgICAgIC8qIG1lbXRlc3QgcmVnaW9uICovCiAjZGVmaW5lIENGR19NRU1URVNUX0VORCAgICAgICAgIDB4MDAxMDAwMDAKIAotCi0KIC8qCiAgKiBERFIgU2V0dXAKICAqLwpAQCAtODUsMjUgKzgzLDIzIEBACiAjZGVmaW5lIENGR19ERFJfU0RSQU1fQkFTRSBDRkdfRERSX0JBU0UKIAogI2lmIGRlZmluZWQoQ09ORklHX1NQRF9FRVBST00pCi0gICAgLyoKLSAgICAgKiBEZXRlcm1pbmUgRERSIGNvbmZpZ3VyYXRpb24gZnJvbSBJMkMgaW50ZXJmYWNlLgotICAgICAqLwotICAgICNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTCTB4NTEJCS8qIEREUiBESU1NICovCi0KKwkvKgorCSAqIERldGVybWluZSBERFIgY29uZmlndXJhdGlvbiBmcm9tIEkyQyBpbnRlcmZhY2UuCisJICovCisJI2RlZmluZSBTUERfRUVQUk9NX0FERFJFU1MJMHg1MQkJLyogRERSIERJTU0gKi8KICNlbHNlCi0gICAgLyoKLSAgICAgKiBNYW51YWxseSBzZXQgdXAgRERSIHBhcmFtZXRlcnMKLSAgICAgKi8KLSAgICAjZGVmaW5lIENGR19ERFJfU0laRQkgICAgMjU2CQkvKiBNYiAqLwotICAgICNkZWZpbmUgQ0ZHX0REUl9DT05GSUcJKENTQ09ORklHX0VOIHwgQ1NDT05GSUdfUk9XX0JJVF8xMyB8IENTQ09ORklHX0NPTF9CSVRfOSkKLSAgICAjZGVmaW5lIENGR19ERFJfVElNSU5HXzEJMHgzNzM0NDMyMQotICAgICNkZWZpbmUgQ0ZHX0REUl9USU1JTkdfMgkweDAwMDAwODAwICAvKiBQOS00NSxtYXkgbmVlZCB0dW5pbmcgKi8KLSAgICAjZGVmaW5lIENGR19ERFJfQ09OVFJPTCAJMHhjMjAwMDAwMCAgLyogdW5idWZmZXJlZCxubyBEWU5fUFdSICovCi0gICAgI2RlZmluZSBDRkdfRERSX01PREUgICAgCTB4MDAwMDAwNjIgIC8qIERMTCxub3JtYWwsc2VxLDQvMi41ICovCi0gICAgI2RlZmluZSBDRkdfRERSX0lOVEVSVkFMCTB4MDUyMDAxMDAgIC8qIGF1dG9jaGFyZ2Usbm8gb3BlbiBwYWdlICovCisJLyoKKwkgKiBNYW51YWxseSBzZXQgdXAgRERSIHBhcmFtZXRlcnMKKwkgKi8KKwkjZGVmaW5lIENGR19ERFJfU0laRQkgICAgMjU2CQkvKiBNYiAqLworCSNkZWZpbmUgQ0ZHX0REUl9DT05GSUcJKENTQ09ORklHX0VOIHwgQ1NDT05GSUdfUk9XX0JJVF8xMyB8IENTQ09ORklHX0NPTF9CSVRfOSkKKwkjZGVmaW5lIENGR19ERFJfVElNSU5HXzEJMHgzNzM0NDMyMQorCSNkZWZpbmUgQ0ZHX0REUl9USU1JTkdfMgkweDAwMDAwODAwICAvKiBQOS00NSxtYXkgbmVlZCB0dW5pbmcgKi8KKwkjZGVmaW5lIENGR19ERFJfQ09OVFJPTCAJMHhjMjAwMDAwMCAgLyogdW5idWZmZXJlZCxubyBEWU5fUFdSICovCisJI2RlZmluZSBDRkdfRERSX01PREUgICAgCTB4MDAwMDAwNjIgIC8qIERMTCxub3JtYWwsc2VxLDQvMi41ICovCisJI2RlZmluZSBDRkdfRERSX0lOVEVSVkFMCTB4MDUyMDAxMDAgIC8qIGF1dG9jaGFyZ2Usbm8gb3BlbiBwYWdlICovCiAjZW5kaWYKIAotCiAvKgogICogU0RSQU0gb24gdGhlIExvY2FsIEJ1cwogICovCkBAIC0xMjYsNyArMTIyLDYgQEAKICNkZWZpbmUgQ0ZHX0xCTEFXQkFSMF9QUkVMSU0gQ0ZHX0ZMQVNIX0JBU0UJLyogV2luZG93IGJhc2UgYXQgZmxhc2ggYmFzZSAqLwogI2RlZmluZSBDRkdfTEJMQVdBUjBfUFJFTElNICAweDgwMDAwMDE2CQkvKiAxNk1iIHdpbmRvdyBzaXplICovCiAKLQogI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTEJCS8qIG51bWJlciBvZiBiYW5rcyAqLwogI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJNjQJCS8qIHNlY3RvcnMgcGVyIGRldmljZSAqLwogCkBAIC0xMzcsNyArMTMyLDYgQEAKICNkZWZpbmUgQ0ZHX01JRF9GTEFTSF9KVU1QICAgICAgMHg3RjAwMDAwMAogI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFICAgIAlURVhUX0JBU0UJLyogc3RhcnQgb2YgbW9uaXRvciAqLwogCi0KICNpZiAoQ0ZHX01PTklUT1JfQkFTRSA8IENGR19GTEFTSF9CQVNFKQogI2RlZmluZSBDRkdfUkFNQk9PVAogI2Vsc2UKQEAgLTE1Myw3ICsxNDcsNiBAQAogI2RlZmluZSBDRkdfQlIxX1BSRUxJTQkgIChDRkdfQkNTUnwweDAwMDAwODAxKQkvKiBQb3J0LXNpemU9OGJpdCwgTVNFTD1HUENNICovCiAjZGVmaW5lIENGR19PUjFfUFJFTElNCQkweEZGRkZFOGYwCS8qIGxlbmd0aCAzMksgKi8KIAotCiAjZGVmaW5lIENPTkZJR19MMV9JTklUX1JBTQogI2RlZmluZSBDRkdfSU5JVF9SQU1fTE9DSyAJMQogI2RlZmluZSBDRkdfSU5JVF9SQU1fQUREUgkweGU0MDEwMDAwICAgLyogSW5pdGlhbCBSQU0gYWRkcmVzcyAqLwpAQCAtMTk4LDExICsxOTEsOCBAQAogICovCiAKICNkZWZpbmUgQ0ZHX0JSMl9QUkVMSU0JCTB4ZjAwMDE4NjEgLypQb3J0LXNpemU9MzJiaXQsIE1TRUw9U0RSQU0qLwotCi0jZGVmaW5lIENGR19MQkxBV0JBUjJfUFJFTElNIDB4RjAwMDAwMDAKLQotI2RlZmluZSBDRkdfTEJMQVdBUjJfUFJFTElNIDB4ODAwMDAwMTkgLyo2NE0qLwotCisjZGVmaW5lIENGR19MQkxBV0JBUjJfUFJFTElNCTB4RjAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0xCTEFXQVIyX1BSRUxJTQkweDgwMDAwMDE5IC8qNjRNKi8KIAogLyoKICAqIFRoZSBTRFJBTSBzaXplIGluIE1CLCBDRkdfTEJDX1NEUkFNX1NJWkUsIGlzIDY0LgpAQCAtMjU1LDcgKzI0NSw3IEBACiAjZGVmaW5lIENGR19MQkNfTFNETVJfT1BfUldJTlYJKDcgPDwgKDMxIC0gNCkpCiAKICNkZWZpbmUgQ0ZHX0xCQ19MU0RNUl9DT01NT04gICAgKCBDRkdfTEJDX0xTRE1SX1JGRU4gICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0ZHX0xCQ19MU0RNUl9CU01BMTUxNglcCisJCQkJfCBDRkdfTEJDX0xTRE1SX0JTTUExNTE2CVwKIAkJCQl8IENGR19MQkNfTFNETVJfUkZDUjgJCVwKIAkJCQl8IENGR19MQkNfTFNETVJfUFJFVE9BQ1Q2CVwKIAkJCQl8IENGR19MQkNfTFNETVJfQUNUVE9SVzMJXApAQCAtMjY0LDcgKzI1NCw2IEBACiAJCQkJfCBDRkdfTEJDX0xTRE1SX0NMMwkJXAogCQkJCSkKIAotCiAvKgogICogU0RSQU0gQ29udHJvbGxlciBjb25maWd1cmF0aW9uIHNlcXVlbmNlLgogICovCkBAIC0yNzgsMTMgKzI2Nyw4IEBACiAJCQkJfCBDRkdfTEJDX0xTRE1SX09QX01SVykKICNkZWZpbmUgQ0ZHX0xCQ19MU0RNUl81CQkoIENGR19MQkNfTFNETVJfQ09NTU9OIFwKIAkJCQl8IENGR19MQkNfTFNETVJfT1BfTk9STUFMKQotCiAjZW5kaWYKIAotCi0KLQotCiAvKgogICogU2VyaWFsIFBvcnQKICAqLwpAQCAtMzIyLDcgKzMwNiw2IEBACiAjZGVmaW5lIENGR19UU0VDMl9PRkZTRVQgMHgyNTAwMAogI2RlZmluZSBDRkdfVFNFQzIgKENGR19JTU1SQkFSK0NGR19UU0VDMl9PRkZTRVQpCiAKLQogLyogSU8gQ29uZmlndXJhdGlvbiAqLwogI2RlZmluZSBDRkdfSU9fQ09ORiAoXAogCUlPX0NPTkZfVUFSVCB8XApAQCAtMzQ3LDcgKzMzMCw2IEBACiAjZGVmaW5lIENGR19QQ0kxX0lPX1BIWVMJMHhlMjAwMDAwMAogI2RlZmluZSBDRkdfUENJMV9JT19TSVpFCTB4MTAwMDAwMAkvKiAxNk0gKi8KIAotCiAjZGVmaW5lIENGR19QQ0kyX01FTV9CQVNFCTB4QTAwMDAwMDAKICNkZWZpbmUgQ0ZHX1BDSTJfTUVNX1BIWVMJQ0ZHX1BDSTJfTUVNX0JBU0UKICNkZWZpbmUgQ0ZHX1BDSTJfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCkBAIC0zNTYsMTAgKzMzOCw3IEBACiAjZGVmaW5lIENGR19QQ0kyX0lPX1NJWkUJMHgxMDAwMDAwCS8qIDE2TSAqLwogI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKIAotLy8jZGVmaW5lIFBDSV82NEJJVAogI2RlZmluZSBQQ0lfQUxMX1BDSTEKLS8vI2RlZmluZSBQQ0lfT05FX1BDSTEKLS8vI2RlZmluZSBQQ0lfVFdPX1BDSTEKICNpZiBkZWZpbmVkKFBDSV82NEJJVCkKICN1bmRlZiBQQ0lfQUxMX1BDSTEKICN1bmRlZiBQQ0lfVFdPX1BDSTEKQEAgLTM3Myw5ICszNTIsOSBAQAogI3VuZGVmIENPTkZJR19UVUxJUAogCiAjaWYgIWRlZmluZWQoQ09ORklHX1BDSV9QTlApCi0gICAgI2RlZmluZSBQQ0lfRU5FVDBfSU9BRERSCTB4RklYTUUKLSAgICAjZGVmaW5lIFBDSV9FTkVUMF9NRU1BRERSCTB4RklYTUUKLSAgICAjZGVmaW5lIFBDSV9JRFNFTF9OVU1CRVIJMHgwYyAJLyogc2xvdDAtPjMoSURTRUwpPTEyLT4xNSAqLworCSNkZWZpbmUgUENJX0VORVQwX0lPQUREUgkweEZJWE1FCisJI2RlZmluZSBQQ0lfRU5FVDBfTUVNQUREUgkweEZJWE1FCisJI2RlZmluZSBQQ0lfSURTRUxfTlVNQkVSCTB4MGMgCS8qIHNsb3QwLT4zKElEU0VMKT0xMi0+MTUgKi8KICNlbmRpZgogCiAjdW5kZWYgQ09ORklHX1BDSV9TQ0FOX1NIT1cJCS8qIHNob3cgcGNpIGRldmljZXMgb24gc3RhcnR1cCAqLwpAQCAtMzgzLDkgKzM2Miw3IEBACiAKICNlbmRpZgkvKiBDT05GSUdfUENJICovCiAKLQogI2lmIGRlZmluZWQoQ09ORklHX1RTRUNfRU5FVCkKLQogI2lmbmRlZiBDT05GSUdfTkVUX01VTFRJCiAjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkgCTEKICNlbmRpZgpAQCAtNDA1LDU1ICszODIsNTQgQEAKIAogI2VuZGlmCS8qIENPTkZJR19UU0VDX0VORVQgKi8KIAotCiAvKgogICogRW52aXJvbm1lbnQKICAqLwogI2lmbmRlZiBDRkdfUkFNQk9PVAotICAjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMQotICAjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyAweDQwMDAwKQotICAjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4NDAwMDAJLyogMjU2SyhvbmUgc2VjdG9yKSBmb3IgZW52ICovCi0gICNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKKwkjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMQorCSNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoQ0ZHX01PTklUT1JfQkFTRSArIDB4NDAwMDApCisJI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDQwMDAwCS8qIDI1Nksob25lIHNlY3RvcikgZm9yIGVudiAqLworCSNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKICNlbHNlCi0gICNkZWZpbmUgQ0ZHX05PX0ZMQVNICQkxCS8qIEZsYXNoIGlzIG5vdCB1c2FibGUgbm93ICovCi0gICNkZWZpbmUgQ0ZHX0VOVl9JU19OT1dIRVJFCTEJLyogU3RvcmUgRU5WIGluIG1lbW9yeSBvbmx5ICovCi0gICNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoQ0ZHX01PTklUT1JfQkFTRSAtIDB4MTAwMCkKLSAgI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MjAwMAorCSNkZWZpbmUgQ0ZHX05PX0ZMQVNICQkxCS8qIEZsYXNoIGlzIG5vdCB1c2FibGUgbm93ICovCisJI2RlZmluZSBDRkdfRU5WX0lTX05PV0hFUkUJMQkvKiBTdG9yZSBFTlYgaW4gbWVtb3J5IG9ubHkgKi8KKwkjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgLSAweDEwMDApCisJI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MjAwMAogI2VuZGlmCiAKICNkZWZpbmUgQ09ORklHX0xPQURTX0VDSE8JMQkvKiBlY2hvIG9uIGZvciBzZXJpYWwgZG93bmxvYWQgKi8KICNkZWZpbmUgQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlICovCiAKICNpZiBkZWZpbmVkKENGR19SQU1CT09UKQotICAjaWYgZGVmaW5lZChDT05GSUdfUENJKQotICAgICNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoKENPTkZJR19DTURfREZMCVwKKyNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCisjZGVmaW5lICBDT05GSUdfQ09NTUFORFMJKChDT05GSUdfQ01EX0RGTAlcCiAJCQkJIHwgQ0ZHX0NNRF9QSU5HCQlcCiAJCQkJIHwgQ0ZHX0NNRF9QQ0kJCVwKIAkJCQkgfCBDRkdfQ01EX0kyQykJCVwKIAkJCQkmCQkJXAogCQkJCSB+KENGR19DTURfRU5WCQlcCiAJCQkJICB8IENGR19DTURfTE9BRFMpKQotICAjZWxzZQotICAgICNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoKENPTkZJR19DTURfREZMCVwKKyNlbHNlCisjZGVmaW5lICBDT05GSUdfQ09NTUFORFMJKChDT05GSUdfQ01EX0RGTAlcCiAJCQkJIHwgQ0ZHX0NNRF9QSU5HCQlcCiAJCQkJIHwgQ0ZHX0NNRF9JMkMpCQlcCiAJCQkJJgkJCVwKIAkJCQkgfihDRkdfQ01EX0VOVgkJXAogCQkJCSAgfCBDRkdfQ01EX0xPQURTKSkKLSAgI2VuZGlmCisjZW5kaWYKICNlbHNlCi0gICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCi0gICAgI2RlZmluZSAgQ09ORklHX0NPTU1BTkRTCShDT05GSUdfQ01EX0RGTAkJXAorI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKKyNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoQ09ORklHX0NNRF9ERkwJCVwKIAkJCQl8IENGR19DTURfUENJCQlcCiAJCQkJfCBDRkdfQ01EX1BJTkcJCVwKIAkJCQl8IENGR19DTURfSTJDKQotICAjZWxzZQotICAgICNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoQ09ORklHX0NNRF9ERkwJCVwKKyNlbHNlCisjZGVmaW5lICBDT05GSUdfQ09NTUFORFMJKENPTkZJR19DTURfREZMCQlcCiAJCQkJfCBDRkdfQ01EX1BJTkcJCVwKIAkJCQl8IENGR19DTURfSTJDICAgICAgIFwKIAkJCQl8IENGR19DTURfTUlJICAgICAgIFwKIAkJCQkpCi0gICNlbmRpZgorI2VuZGlmCiAjZW5kaWYKIAogI2luY2x1ZGUgPGNtZF9jb25mZGVmcy5oPgpAQCAtNDY4LDkgKzQ0NCw5IEBACiAjZGVmaW5lIENGR19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KIAogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCi0gICAgI2RlZmluZSBDRkdfQ0JTSVpFCTEwMjQJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCisJI2RlZmluZSBDRkdfQ0JTSVpFCTEwMjQJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCiAjZWxzZQotICAgICNkZWZpbmUgQ0ZHX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplICovCisJI2RlZmluZSBDRkdfQ0JTSVpFCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KICNlbmRpZgogCiAjZGVmaW5lIENGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwpAQCAtNTI5LDcgKzUwNSw2IEBACiAJSFJDV0hfVFNFQzJNX0lOX0dNSUkgKQogI2VuZGlmCiAKLQogI2RlZmluZSBDRkdfSElEMF9JTklUIDB4MDAwMDAwMDAwCiAKICNkZWZpbmUgQ0ZHX0hJRDBfRklOQUwgQ0ZHX0hJRDBfSU5JVApAQCAtNTU0LDcgKzUyOSw2IEBACiAjZGVmaW5lIENPTkZJR19LR0RCX1NFUl9JTkRFWAkyCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLwogI2VuZGlmCiAKLQogLyoKICAqIEVudmlyb25tZW50IENvbmZpZ3VyYXRpb24KICAqLwpAQCAtNTY1LDEzICs1MzksMTMgQEAKICNkZWZpbmUgQ09ORklHX0VUSDFBRERSICAwMDpFMDowQzowMDo3RDowMQogI2VuZGlmCiAKLSNkZWZpbmUgQ09ORklHX0lQQUREUiAgICAxMC4xOTMuMjAuMTUwCisjZGVmaW5lIENPTkZJR19JUEFERFIgICAgMTkyLjE2OC4xLjI1MwogCiAjZGVmaW5lIENPTkZJR19IT1NUTkFNRQkgdW5rbm93bgotI2RlZmluZSBDT05GSUdfUk9PVFBBVEgJIC90ZnRwYm9vdC8xMC4xOTMuMjAuMTUwCi0jZGVmaW5lIENPTkZJR19CT09URklMRQkgL3RmdHBib290L3ZtbGludXguMTUwCisjZGVmaW5lIENPTkZJR19ST09UUEFUSAkgL25mc3Jvb3QKKyNkZWZpbmUgQ09ORklHX0JPT1RGSUxFCSB5b3VyLnVJbWFnZQogCi0jZGVmaW5lIENPTkZJR19TRVJWRVJJUCAgMTAuMTkzLjIwLjU4CisjZGVmaW5lIENPTkZJR19TRVJWRVJJUCAgMTkyLjE2OC4xLjEKICNkZWZpbmUgQ09ORklHX0dBVEVXQVlJUCAxOTIuMTY4LjEuMQogI2RlZmluZSBDT05GSUdfTkVUTUFTSyAgIDI1NS4yNTUuMjU1LjAKIApAQCAtNTgzLDI2ICs1NTcsMjYgQEAKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCSAxMTUyMDAKIAogCi0jZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJuZXRkZXY9ZXRoMFwwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJjb25zb2xlZGV2PXR0eVMwXDAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJyYW1kaXNrYWRkcj00MDAwMDBcMCIJCQkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAicmFtZGlza2ZpbGU9cmFtZnMuODN4eFwwIgkJCQkJCVwKKyNkZWZpbmUJQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCVwKKwkibmV0ZGV2PWV0aDBcMCIJCQkJCVwKKwkiY29uc29sZWRldj10dHlTMFwwIgkJCQlcCisJInJhbWRpc2thZGRyPTQwMDAwMFwwIgkJCQlcCisJInJhbWRpc2tmaWxlPXJhbWZzLjgzeHhcMCIKIAotI2RlZmluZSBDT05GSUdfTkZTQk9PVENPTU1BTkQJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJuZnNyb290PSRzZXJ2ZXJpcDokcm9vdHBhdGggIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTokbmV0ZGV2Om9mZiAiICAgIFwKLSAgICJjb25zb2xlPSRjb25zb2xlZGV2LCRiYXVkcmF0ZSAkb3RoYm9vdGFyZ3M7IiAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJ0ZnRwICRsb2FkYWRkciAkYm9vdGZpbGU7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJib290bSAkbG9hZGFkZHIiCisjZGVmaW5lIENPTkZJR19ORlNCT09UQ09NTUFORAkJCQlcCisJInNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJCVwKKwkibmZzcm9vdD0kc2VydmVyaXA6JHJvb3RwYXRoICIJCQlcCisJImlwPSRpcGFkZHI6JHNlcnZlcmlwOiRnYXRld2F5aXA6JG5ldG1hc2s6JGhvc3RuYW1lOiRuZXRkZXY6b2ZmICIgXAorCSJjb25zb2xlPSRjb25zb2xlZGV2LCRiYXVkcmF0ZSAkb3RoYm9vdGFyZ3M7IglcCisJInRmdHAgJGxvYWRhZGRyICRib290ZmlsZTsiCQkJXAorCSJib290bSAkbG9hZGFkZHIiCiAKLSNkZWZpbmUgQ09ORklHX1JBTUJPT1RDT01NQU5EIFwKLSAgICJzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSBydyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJjb25zb2xlPSRjb25zb2xlZGV2LCRiYXVkcmF0ZSAkb3RoYm9vdGFyZ3M7IiAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJ0ZnRwICRyYW1kaXNrYWRkciAkcmFtZGlza2ZpbGU7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJ0ZnRwICRsb2FkYWRkciAkYm9vdGZpbGU7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICJib290bSAkbG9hZGFkZHIgJHJhbWRpc2thZGRyIgorI2RlZmluZSBDT05GSUdfUkFNQk9PVENPTU1BTkQJCQkJXAorCSJzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSBydyAiCQlcCisJImNvbnNvbGU9JGNvbnNvbGVkZXYsJGJhdWRyYXRlICRvdGhib290YXJnczsiCVwKKwkidGZ0cCAkcmFtZGlza2FkZHIgJHJhbWRpc2tmaWxlOyIJCVwKKwkidGZ0cCAkbG9hZGFkZHIgJGJvb3RmaWxlOyIJCQlcCisJImJvb3RtICRsb2FkYWRkciAkcmFtZGlza2FkZHIiCiAKICNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5EIENPTkZJR19ORlNCT09UQ09NTUFORAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEVWQUwuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oCmluZGV4IDM0Y2JlNDYuLjFhZjkyMzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwRVZBTC5oCkBAIC01MSwxMCArNTEsMTMgQEAKIAogLyogc3lzY2xrIGZvciBNUEM4NTQwRVZBTCAqLwogI2lmIGRlZmluZWQoQ09ORklHX1NZU0NMS182Nk0pCi0jZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEgICA2NjAwMDAwMCAgICAvKiB0aGUgb3NjaWxsYXRvciBvbiBib2FyZCBpcyA2Nk1oeiAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNhbiBhbHNvIGdldCA2Nk0gY2xvY2sgZnJvbSBleHRlcm5hbCBQQ0kgKi8KKwkvKgorCSAqIHRoZSBvc2NpbGxhdG9yIG9uIGJvYXJkIGlzIDY2TWh6CisJICogY2FuIGFsc28gZ2V0IDY2TSBjbG9jayBmcm9tIGV4dGVybmFsIFBDSQorCSAqLworCSNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUSAgIDY2MDAwMDAwCiAjZWxzZQotICAjZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEgICAzMzAwMDAwMCAgIC8qIG1vc3QgcGNpIGNhcmRzIGFyZSAzM01oeiAqLworCSNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUSAgIDMzMDAwMDAwICAgLyogbW9zdCBwY2kgY2FyZHMgYXJlIDMzTWh6ICovCiAjZW5kaWYKIAogLyogYmVsb3cgY2FuIGJlIHRvZ2dsZWQgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiBvdGhlcndpc2UgdXNlIGRlZmF1bHQgKi8KQEAgLTE5NCwxMSArMTk3LDExIEBACiAjdW5kZWYgQ09ORklHX0VFUFJPMTAwCiAjZGVmaW5lIENPTkZJR19UVUxJUAogI2RlZmluZSBDT05GSUdfUENJX1BOUAkgICAgICAgICAgICAgICAJLyogZG8gcGNpIHBsdWctYW5kLXBsYXkgKi8KLSAgI2lmICFkZWZpbmVkKENPTkZJR19QQ0lfUE5QKQotICAjZGVmaW5lIFBDSV9FTkVUMF9JT0FERFIgICAgICAweGUwMDAwMDAwCi0gICNkZWZpbmUgUENJX0VORVQwX01FTUFERFIgICAgIDB4ZTAwMDAwMDAKLSAgI2RlZmluZSBQQ0lfSURTRUxfTlVNQkVSICAgICAgMHgwYyAJLypzbG90MC0+MyhJRFNFTCk9MTItPjE1Ki8KLSAgI2VuZGlmCisjaWYgIWRlZmluZWQoQ09ORklHX1BDSV9QTlApCisjZGVmaW5lIFBDSV9FTkVUMF9JT0FERFIgICAgICAweGUwMDAwMDAwCisjZGVmaW5lIFBDSV9FTkVUMF9NRU1BRERSICAgICAweGUwMDAwMDAwCisjZGVmaW5lIFBDSV9JRFNFTF9OVU1CRVIgICAgICAweDBjIAkvKnNsb3QwLT4zKElEU0VMKT0xMi0+MTUqLworI2VuZGlmCiAjZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XICAgIDEgICAgICAgLyogc2hvdyBwY2kgZGV2aWNlcyBvbiBzdGFydHVwICAqLwogI2RlZmluZSBDRkdfUENJX1NVQlNZU19WRU5ET1JJRCAweDEwNTcgIC8qIE1vdG9yb2xhICovCiAjZGVmaW5lIENGR19QQ0lfU1VCU1lTX0RFVklDRUlEIDB4MDAwOApAQCAtMjIxLDIzICsyMjQsMjMgQEAKICNkZWZpbmUgQ09ORklHX0VUSFBSSU1FICAgICAgICAgICAgICAgICJUU0VDMCIKIAogI2RlZmluZSBDT05GSUdfUEhZX004OEUxMDExICAgICAxICAgICAgIC8qIEdpZ2FCaXQgRXRoZXIgUEhZICAgICovCi0jZGVmaW5lIElOVEVMX0xYVDk3MV9QSFkJMQkvKiBvbiBFVkFMIGJvYXJkLiBJdCBpcyBEYXZpY29tIDkxNjEgb24gQURTLiAqLworI2RlZmluZSBJTlRFTF9MWFQ5NzFfUEhZCTEKICNlbmRpZgogCiAjdW5kZWYgREVCVUcKIAogLyogRW52aXJvbm1lbnQgKi8KICNpZm5kZWYgQ0ZHX1JBTUJPT1QKLSAgI2lmIGRlZmluZWQoQ09ORklHX1JBTV9BU19GTEFTSCkKLSAgI2RlZmluZSBDRkdfRU5WX0lTX05PV0hFUkUKLSAgI2RlZmluZSBDRkdfRU5WX0FERFIJCShDRkdfRkxBU0hfQkFTRSArIDB4MTAwMDAwKQotICAjZGVmaW5lIENGR19FTlZfU0laRQkJMHgyMDAwCi0gICNlbHNlCi0gICNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSAkxCi0gICNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoQ0ZHX01PTklUT1JfQkFTRSArIDB4NDAwMDApCi0gICNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJMHg0MDAwMAkvKiAyNTZLKG9uZSBzZWN0b3IpIGZvciBlbnYgKi8KLSAgI2VuZGlmCi0gICNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKKyNpZiBkZWZpbmVkKENPTkZJR19SQU1fQVNfRkxBU0gpCisjZGVmaW5lIENGR19FTlZfSVNfTk9XSEVSRQorI2RlZmluZSBDRkdfRU5WX0FERFIJCShDRkdfRkxBU0hfQkFTRSArIDB4MTAwMDAwKQorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MjAwMAorI2Vsc2UKKyNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9GTEFTSAkxCisjZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UgKyAweDQwMDAwKQorI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDQwMDAwCS8qIDI1Nksob25lIHNlY3RvcikgZm9yIGVudiAqLworI2VuZGlmCisjZGVmaW5lIENGR19FTlZfU0laRQkJMHgyMDAwCiAjZWxzZQogLyogI2RlZmluZSBDRkdfTk9fRkxBU0gJCTEgKi8JLyogRmxhc2ggaXMgbm90IHVzYWJsZSBub3cJKi8KICNkZWZpbmUgQ0ZHX0VOVl9JU19OT1dIRVJFCTEJLyogU3RvcmUgRU5WIGluIG1lbW9yeSBvbmx5CSovCkBAIC0yNDUsNyArMjQ4LDYgQEAKICNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQkweDIwMDAKICNlbmRpZgogCi0vKiNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCSJyb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9MTkyLjE2OC4xLjEwOi90ZnRwcm9vdC8xOTIuMTY4LjEuMTEgaXA9MTkyLjE2OC4xLjExOjE5Mi4xNjguMS4xMDoxOTIuMTY4LjEuMDoyNTUuMjU1LjI1NS4wOm1wYzg1NDBhZHMtMDAzOmV0aDA6b2ZmIGNvbnNvbGU9dHR5UzAsMTE1MjAwIiovCiAjZGVmaW5lIENPTkZJR19CT09UQVJHUwkicm9vdD0vZGV2L3JhbSBydyBjb25zb2xlPXR0eVMwLDExNTIwMCIKICNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJib290bSAweGZmODAwMDAwIDB4ZmZhMDAwMDAiCiAjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMyAJLyogLTEgZGlzYWJsZSBhdXRvYm9vdCAqLwpAQCAtMjU0LDIxICsyNTYsMjQgQEAKICNkZWZpbmUgQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlCSovCiAKICNpZiBkZWZpbmVkKENGR19SQU1CT09UKSB8fCBkZWZpbmVkKENPTkZJR19SQU1fQVNfRkxBU0gpCi0gICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCi0gICNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoKENPTkZJR19DTURfREZMIHwgQ0ZHX0NNRF9QSU5HIHwgQ0ZHX0NNRF9QQ0kgfCBDRkdfQ01EX0kyQyApICYgXAorI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKKyNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoKENPTkZJR19DTURfREZMIHwgQ0ZHX0NNRF9QSU5HIFwKKwkJCQl8IENGR19DTURfUENJIHwgQ0ZHX0NNRF9JMkMgKSAmIFwKIAkJCQkgfihDRkdfQ01EX0VOViB8IENGR19DTURfTE9BRFMgKSkKLSAgI2Vsc2UKLSAgI2RlZmluZSAgQ09ORklHX0NPTU1BTkRTCSgoQ09ORklHX0NNRF9ERkwgfCBDRkdfQ01EX1BJTkcgfCBDRkdfQ01EX0kyQyApICYgXAotCQkJCSB+KENGR19DTURfRU5WIHwgXAotCQkJCSAgQ0ZHX0NNRF9MT0FEUyApKQotICAjZW5kaWYKICNlbHNlCi0gICNpZiBkZWZpbmVkKENPTkZJR19QQ0kpCi0gICNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoQ09ORklHX0NNRF9ERkwgfCBDRkdfQ01EX1BDSSB8IENGR19DTURfUElORyB8IENGR19DTURfSTJDICkKLSAgI2Vsc2UKLSAgI2RlZmluZSAgQ09ORklHX0NPTU1BTkRTCShDT05GSUdfQ01EX0RGTCB8IENGR19DTURfUElORyB8IENGR19DTURfSTJDICkKLSAgI2VuZGlmCisjZGVmaW5lICBDT05GSUdfQ09NTUFORFMJKChDT05GSUdfQ01EX0RGTCB8IENGR19DTURfUElORyBcCisJCQkJfCBDRkdfQ01EX0kyQyApICYgXAorCQkJCSB+KENGR19DTURfRU5WIHwgQ0ZHX0NNRF9MT0FEUyApKQogI2VuZGlmCisjZWxzZQorI2lmIGRlZmluZWQoQ09ORklHX1BDSSkKKyNkZWZpbmUgIENPTkZJR19DT01NQU5EUwkoQ09ORklHX0NNRF9ERkwgfCBDRkdfQ01EX1BDSSBcCisJCQkJfCBDRkdfQ01EX1BJTkcgfCBDRkdfQ01EX0kyQyApCisjZWxzZQorI2RlZmluZSAgQ09ORklHX0NPTU1BTkRTCShDT05GSUdfQ01EX0RGTCB8IENGR19DTURfUElORyB8IENGR19DTURfSTJDICkKKyNlbmRpZgorI2VuZGlmCisKICNpbmNsdWRlIDxjbWRfY29uZmRlZnMuaD4KIAogI3VuZGVmIENPTkZJR19XQVRDSERPRwkJCS8qIHdhdGNoZG9nIGRpc2FibGVkCQkqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tcGM4M3h4LmggYi9pbmNsdWRlL21wYzgzeHguaAppbmRleCA1MTYxZGY4Li4zOGY3MTE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL21wYzgzeHguaAorKysgYi9pbmNsdWRlL21wYzgzeHguaApAQCAtNTMsMTAgKzUzLDEwIEBACiAvKgogICogV2F0Y2hkb2cKICAqLwotI2RlZmluZSBTV0NSUiAgICAgIDB4MDIwNCAKKyNkZWZpbmUgU1dDUlIgICAgICAweDAyMDQKICNkZWZpbmUgU1dDUlJfU1dUQyAweEZGRkYwMDAwIC8qIFNvZnR3YXJlIFdhdGNoZG9nIFRpbWUgQ291bnQuICovCiAjZGVmaW5lIFNXQ1JSX1NXRU4gMHgwMDAwMDAwNCAvKiBXYXRjaGRvZyBFbmFibGUgYml0LiAqLwotI2RlZmluZSBTV0NSUl9TV1JJIDB4MDAwMDAwMDIgLyogU29mdHdhcmUgV2F0Y2hkb2cgUmVzZXQvSW50ZXJydXB0IFNlbGVjdCBiaXQuICovIAorI2RlZmluZSBTV0NSUl9TV1JJIDB4MDAwMDAwMDIgLyogU29mdHdhcmUgV2F0Y2hkb2cgUmVzZXQvSW50ZXJydXB0IFNlbGVjdCBiaXQuICovCiAjZGVmaW5lIFNXQ1JSX1NXUFIgMHgwMDAwMDAwMSAvKiBTb2Z0d2FyZSBXYXRjaGRvZyBDb3VudGVyIFByZXNjYWxlIGJpdC4gKi8KICNkZWZpbmUgU1dDUlJfUkVTICB+KFNXQ1JSX1NXVEMgfCBTV0NSUl9TV0VOIHwgU1dDUlJfU1dSSSB8IFNXQ1JSX1NXUFIpCiAKQEAgLTE3Miw3ICsxNzIsNyBAQAogCiAvKgogICogSGFyZCBSZXNldCBDb25maWdyYXRpb24gV29yZCAtIEhpZ2gKLSAqLwkKKyAqLwogI2RlZmluZSBIUkNXSF9QQ0lfQUdFTlQgICAgICAgICAgICAgIDB4MDAwMDAwMDAKICNkZWZpbmUgSFJDV0hfUENJX0hPU1QgICAgICAgICAgICAgICAweDgwMDAwMDAwCiAKQEAgLTE5NSw4ICsxOTUsOCBAQAogI2RlZmluZSBIUkNXSF9CT09UU0VRX05PUk1BTCAgICAgICAgIDB4MDEwMDAwMDAKICNkZWZpbmUgSFJDV0hfQk9PVFNFUV9FWFRFTkRFRCAgICAgICAweDAyMDAwMDAwCiAKLSNkZWZpbmUgSFJDV0hfU1dfV0FUQ0hET0dfRElTQUJMRSAgICAweDAwMDAwMDAwIAotI2RlZmluZSBIUkNXSF9TV19XQVRDSERPR19FTkFCTEUgICAgIDB4MDA4MDAwMDAgCisjZGVmaW5lIEhSQ1dIX1NXX1dBVENIRE9HX0RJU0FCTEUgICAgMHgwMDAwMDAwMAorI2RlZmluZSBIUkNXSF9TV19XQVRDSERPR19FTkFCTEUgICAgIDB4MDA4MDAwMDAKIAogI2RlZmluZSBIUkNXSF9ST01fTE9DX0REUl9TRFJBTSAgICAgIDB4MDAwMDAwMDAKICNkZWZpbmUgSFJDV0hfUk9NX0xPQ19QQ0kxICAgICAgICAgICAweDAwMTAwMDAwCkBAIC0yNTcsNyArMjU3LDcgQEAKICNkZWZpbmUgSFJDV0xfQ09SRV9UT19DU0JfM1gxICAgICAgICAweDAwMDYwMDAwCiAKIC8qCi0gKiBMQ1JSIC0gQ2xvY2sgUmF0aW8gUmVnaXN0ZXIgKDEwLjMuMS4xNikgCisgKiBMQ1JSIC0gQ2xvY2sgUmF0aW8gUmVnaXN0ZXIgKDEwLjMuMS4xNikKICAqLwogI2RlZmluZSBMQ1JSX0RCWVAgICAgICAweDgwMDAwMDAwCiAjZGVmaW5lIExDUlJfREJZUF9TSElGVCAgICAgICAgMzEKQEAgLTI4NCw2ICsyODQsNSBAQAogI2RlZmluZSBMQ1JSX0NMS0RJVl80ICAweDAwMDAwMDA0CiAjZGVmaW5lIExDUlJfQ0xLRElWXzggIDB4MDAwMDAwMDgKICNkZWZpbmUgTENSUl9DTEtESVZfU0hJRlQgICAgICAgMAotIAogCiAjZW5kaWYJLyogX19NUEM4M1hYX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zcGQuaCBiL2luY2x1ZGUvc3BkLmgKaW5kZXggYWNiYzFlMS4uNTRiNjBkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zcGQuaAorKysgYi9pbmNsdWRlL3NwZC5oCkBAIC0xMDMsNiArMTAzLDQgQEAKICNkZWZpbmUgU1BEX01FTVRZUEVfRERSCQkoMHgwNykKICNkZWZpbmUgU1BEX01FTVRZUEVfRERSMgkoMHgwOCkKIAotCiAjZW5kaWYgLyogX1NQRF9IXyAqLwotCg==