ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCBkMjhmZWYwLi4wMGYxOTM1IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsMTUgQEAKIENoYW5nZXMgc2luY2UgVS1Cb290IDAuMi4yOgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCisqIFBhdGNoIGJ5IEFydW4gRGhhcmFua2FyLCAyNCBNYXIgMjAwMzoKKyAgLSBhZGQgdGhyZWFkcyAvIHNjaGVkdWxlciBleGFtcGxlIGNvZGUKKworKiBBZGQgcGF0Y2hlcyBieSBSb2JlcnQgU2Nod2ViZWwsIDMxIE1hciAyMDAzOgorICAtIGFkZCBjdHJsLWMgc3VwcG9ydCBmb3Iga2VybWl0IGRvd25sb2FkCisgIC0gYWxpZ24gYmRpbmZvIG91dHB1dCBvbiBBUk0KKworKiBBZGQgQ1BVIElELCB2ZXJzaW9uLCBhbmQgY2xvY2sgc3BlZWQgZm9yIElOQ0EtSVAgCisKICogUGF0Y2hlcyBieSBEYXZlIEVsbGlzLCAxOCBNYXIgMjAwMyBmb3IgU1hOSTg1NVQgYm9hcmQ6CiAgIC0gZml4IFNSQU0gYW5kIFNEUkFNIG1lbW9yeSBzaXppbmcKICAgLSBhZGQgc3RhdHVzIExFRCBzdXBwb3J0CmRpZmYgLS1naXQgYS9DUkVESVRTIGIvQ1JFRElUUwppbmRleCA0YTIxMzEwLi41NGViNWI2IDEwMDY0NAotLS0gYS9DUkVESVRTCisrKyBiL0NSRURJVFMKQEAgLTcwLDYgKzcwLDEwIEBACiBFOiBlcmFtZGFtQGtpZXJheTEucC55LmtpLmVyYS5lcmljc3Nvbi5zZQogRDogOHh4cm9tCiAKK046IEFydW4gRGhhcmFua2FyCitFOiBBRGhhcmFua2FyQEFUVEJJLkNvbQorRDogdGhyZWFkcyAvIHNjaGVkdWxlciBleGFtcGxlIGNvZGUKKwogTjogS+FyaSBEYXbt8HNzb24KIEU6IGtkQGZsYWdhLmlzCiBEOiBGTEFHQSBETSBTdXBwb3J0CmRpZmYgLS1naXQgYS9NQUtFQUxMIGIvTUFLRUFMTAppbmRleCBiYTRkOWViLi5mZDQ1OWI3IDEwMDY0NAotLS0gYS9NQUtFQUxMCisrKyBiL01BS0VBTEwKQEAgLTg0LDcgKzg0LDcgQEAKICMjIFN0cm9uZ0FSTSBTeXN0ZW1zCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUxJU1RfU0E9ImF0OTFybTkyMDBkayBkbnAxMTEwIGxhcnQgc2hhbm5vbiIKK0xJU1RfU0E9ImRucDExMTAgbGFydCBzaGFubm9uIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBBUk03IFN5c3RlbXMKQEAgLTk2LDcgKzk2LDcgQEAKICMjIEFSTTkgU3lzdGVtcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1MSVNUX0FSTTk9InNtZGsyNDAwIHNtZGsyNDEwIHRyYWIgVkNNQTkiCitMSVNUX0FSTTk9ImF0OTFybTkyMDBkayBzbWRrMjQwMCBzbWRrMjQxMCB0cmFiIFZDTUE5IgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBYc2NhbGUgU3lzdGVtcwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCA0YmE0MjAxLi41YjllM2M4IDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtNzE2LDcgKzcxNiw4IEBACiAJCVwoIC1uYW1lICdjb3JlJyAtbyAtbmFtZSAnKi5iYWsnIC1vIC1uYW1lICcqficgXAogCQktbyAtbmFtZSAnKi5vJyAgLW8gLW5hbWUgJyouYScgIFwpIC1wcmludCBcCiAJCXwgeGFyZ3Mgcm0gLWYKLQlybSAtZiBleGFtcGxlcy9oZWxsb193b3JsZCBleGFtcGxlcy90aW1lciBleGFtcGxlcy9lZXBybzEwMF9lZXByb20KKwlybSAtZiBleGFtcGxlcy9oZWxsb193b3JsZCBleGFtcGxlcy90aW1lciBcCisJICAgICAgZXhhbXBsZXMvZWVwcm8xMDBfZWVwcm9tIGV4YW1wbGVzL3NjaGVkCiAJcm0gLWYgdG9vbHMvaW1nMnNyZWMgdG9vbHMvbWtpbWFnZSB0b29scy9lbnZjcmMgdG9vbHMvZ2VuX2V0aF9hZGRyCiAJcm0gLWYgdG9vbHMvZWFzeWxvZ28vZWFzeWxvZ28gdG9vbHMvYm1wX2xvZ28KIAlybSAtZiB0b29scy9nZGIvYXN0ZXN0IHRvb2xzL2dkYi9nZGJjb250IHRvb2xzL2dkYi9nZGJzZW5kCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggN2U5ZjQ1OC4uNDZjYTdlOSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMTI0NSw3ICsxMjQ1LDcgQEAKIE1vZGVtIFN1cHBvcnQ6CiAtLS0tLS0tLS0tLS0tLQogCi1bc28gZmFyIG9ubHkgZm9yIFNNREsyNDAwIGJvYXJkXQorW3NvIGZhciBvbmx5IGZvciBTTURLMjQwMCBhbmQgVFJBQiBib2FyZHNdCiAKIC0gTW9kZW0gc3VwcG9ydCBlbmRhYmxlOgogCQlDT05GSUdfTU9ERU1fU1VQUE9SVApAQCAtMTUzMiwyMCArMTUzMiwxNiBAQAogY3JlYXRlZDsgYWxzbywgd2hlbiB1c2luZyBFRVBST00geW91IHdpbGwgaGF2ZSB0byB1c2UgZ2V0ZW52X3IoKQogdW50aWwgdGhlbiB0byByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAotVGhlIGVudmlyb25tZW50IGlzIG5vdyBwcm90ZWN0ZWQgYnkgYSBDUkMzMiBjaGVja3N1bS4gQmVmb3JlIHRoZQotbW9uaXRvciBpcyByZWxvY2F0ZWQgaW50byBSQU0sIGFzIGEgcmVzdWx0IG9mIGEgYmFkIENSQyB5b3Ugd2lsbCBiZQotd29ya2luZyB3aXRoIHRoZSBjb21waWxlZC1pbiBkZWZhdWx0IGVudmlyb25tZW50IC0gKnNpbGVudGx5KiEhIQotW1RoaXMgaXMgbmVjZXNzYXJ5LCBiZWNhdXNlIHRoZSBmaXJzdCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3ZSBuZWVkIGlzCi10aGUgImJhdWRyYXRlIiBzZXR0aW5nIGZvciB0aGUgY29uc29sZSAtIGlmIHdlIGhhdmUgYSBiYWQgQ1JDLCB3ZQotZG9uJ3QgaGF2ZSBhbnkgZGV2aWNlIHlldCB3aGVyZSB3ZSBjb3VsZCBjb21wbGFpbi5dCitUaGUgZW52aXJvbm1lbnQgaXMgcHJvdGVjdGVkIGJ5IGEgQ1JDMzIgY2hlY2tzdW0uIEJlZm9yZSB0aGUgbW9uaXRvcgoraXMgcmVsb2NhdGVkIGludG8gUkFNLCBhcyBhIHJlc3VsdCBvZiBhIGJhZCBDUkMgeW91IHdpbGwgYmUgd29ya2luZword2l0aCB0aGUgY29tcGlsZWQtaW4gZGVmYXVsdCBlbnZpcm9ubWVudCAtICpzaWxlbnRseSohISEgW1RoaXMgaXMKK25lY2Vzc2FyeSwgYmVjYXVzZSB0aGUgZmlyc3QgZW52aXJvbm1lbnQgdmFyaWFibGUgd2UgbmVlZCBpcyB0aGUKKyJiYXVkcmF0ZSIgc2V0dGluZyBmb3IgdGhlIGNvbnNvbGUgLSBpZiB3ZSBoYXZlIGEgYmFkIENSQywgd2UgZG9uJ3QKK2hhdmUgYW55IGRldmljZSB5ZXQgd2hlcmUgd2UgY291bGQgY29tcGxhaW4uXQogCiBOb3RlOiBvbmNlIHRoZSBtb25pdG9yIGhhcyBiZWVuIHJlbG9jYXRlZCwgdGhlbiBpdCB3aWxsIGNvbXBsYWluIGlmCiB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBpcyB1c2VkOyBhIG5ldyBDUkMgaXMgY29tcHV0ZWQgYXMgc29vbiBhcyB5b3UKLXVzZSB0aGUgInNldGVudiIgY29tbWFuZCB0byBtb2RpZnkgLyBkZWxldGUgLyBhZGQgYW55IGVudmlyb25tZW50Ci12YXJpYWJsZSBbZXZlbiB3aGVuIHlvdSB0cnkgdG8gZGVsZXRlIGEgbm9uLWV4aXN0aW5nIHZhcmlhYmxlIV0uCi0KLU5vdGUyOiB5b3UgbXVzdCBlZGl0IHlvdXIgdS1ib290LmxkcyBmaWxlIHRvIHJlZmxlY3QgdGhpcwotY29uZmlndXJhdGlvbi4KK3VzZSB0aGUgInNhdmVlbnYiIGNvbW1hbmQgdG8gc3RvcmUgYSB2YWxpZCBlbnZpcm9ubWVudC4KIAogCiBMb3cgTGV2ZWwgKGhhcmR3YXJlIHJlbGF0ZWQpIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKQEAgLTE2MDUsMTYgKzE2MDEsMTYgQEAKIAkJLSBNUEM4MjRYOiBkYXRhIGNhY2hlCiAJCS0gUFBDNHh4OiAgZGF0YSBjYWNoZQogCi0tIENGR19JTklUX0RBVEFfT0ZGU0VUOgorLSBDRkdfR0JMX0RBVEFfT0ZGU0VUOgogCiAJCU9mZnNldCBvZiB0aGUgaW5pdGlhbCBkYXRhIHN0cnVjdHVyZSBpbiB0aGUgbWVtb3J5CiAJCWFyZWEgZGVmaW5lZCBieSBDRkdfSU5JVF9SQU1fQUREUi4gVXN1YWxseQotCQlDRkdfSU5JVF9EQVRBX09GRlNFVCBpcyBjaG9zZW4gc3VjaCB0aGF0IHRoZSBpbml0aWFsCisJCUNGR19HQkxfREFUQV9PRkZTRVQgaXMgY2hvc2VuIHN1Y2ggdGhhdCB0aGUgaW5pdGlhbAogCQlkYXRhIGlzIGxvY2F0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlCiAJCShzb21ldGltZXMgd3JpdHRlbiBhcyAoQ0ZHX0lOSVRfUkFNX0VORCAtCiAJCUNGR19JTklUX0RBVEFfU0laRSksIGFuZCB0aGUgaW5pdGlhbCBzdGFjayBpcyBqdXN0CiAJCWJlbG93IHRoYXQgYXJlYSAoZ3Jvd2luZyBmcm9tIChDRkdfSU5JVF9SQU1fQUREUiArCi0JCUNGR19JTklUX0RBVEFfT0ZGU0VUKSBkb3dud2FyZC4KKwkJQ0ZHX0dCTF9EQVRBX09GRlNFVCkgZG93bndhcmQuCiAKIAlOb3RlOgogCQlPbiB0aGUgTVBDODI0WCAob3Igb3RoZXIgc3lzdGVtcyB0aGF0IHVzZSB0aGUgZGF0YQpAQCAtMTc3MSwxNCArMTc2NywyMSBAQAogc3RlcHM6CiAKIDEuICBBZGQgYSBuZXcgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHlvdXIgYm9hcmQgdG8gdGhlIHRvcGxldmVsCi0gICAgIk1ha2VmaWxlIiwgdXNpbmcgdGhlIGV4aXN0aW5nIGVudHJpZXMgYXMgZXhhbXBsZXMuCisgICAgIk1ha2VmaWxlIiBhbmQgdG8gdGhlICJNQUtFQUxMIiBzY3JpcHQsIHVzaW5nIHRoZSBleGlzdGluZworICAgIGVudHJpZXMgYXMgZXhhbXBsZXMuIE5vdGUgdGhhdCBoZXJlIGFuZCBhdCBtYW55IG90aGVyIHBsYWNlcworICAgIGJvYXJkcyBhbmQgb3RoZXIgbmFtZXMgYXJlIGxpc3RlZCBhbHBoYWJldGljYWxseSBzb3J0ZWQuIFBsZWFzZQorICAgIGtlZXAgdGhpcyBvcmRlci4KIDIuICBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IHRvIGhvbGQgeW91ciBib2FyZCBzcGVjaWZpYyBjb2RlLiBBZGQgYW55Ci0gICAgZmlsZXMgeW91IG5lZWQuCisgICAgZmlsZXMgeW91IG5lZWQuIEluIHlvdXIgYm9hcmQgZGlyZWN0b3J5LCB5b3Ugd2lsbCBuZWVkIGF0IGxlYXN0CisgICAgdGhlICJNYWtlZmlsZSIsIGEgIjxib2FyZD4uYyIsICJmbGFzaC5jIiBhbmQgInUtYm9vdC5sZHMiLgorMy4gIENyZWF0ZSBhIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgImluY2x1ZGUvY29uZmlncy88Ym9hcmQ+LmgiIGZvcgorICAgIHlvdXIgYm9hcmQKIDMuICBJZiB5b3UncmUgcG9ydGluZyBVLUJvb3QgdG8gYSBuZXcgQ1BVLCB0aGVuIGFsc28gY3JlYXRlIGEgbmV3CiAgICAgZGlyZWN0b3J5IHRvIGhvbGQgeW91ciBDUFUgc3BlY2lmaWMgY29kZS4gQWRkIGFueSBmaWxlcyB5b3UgbmVlZC4KLTQuICBSdW4gIm1ha2UgY29uZmlnX25hbWUiIHdpdGggeW91ciBuZXcgbmFtZS4KKzQuICBSdW4gIm1ha2UgPGJvYXJkPl9jb25maWciIHdpdGggeW91ciBuZXcgbmFtZS4KIDUuICBUeXBlICJtYWtlIiwgYW5kIHlvdSBzaG91bGQgZ2V0IGEgd29ya2luZyAidS1ib290LnNyZWMiIGZpbGUKICAgICB0byBiZSBpbnN0YWxsZWQgb24geW91ciB0YXJnZXQgc3lzdGVtLgorNi4gIERlYnVnIGFuZCBzb2x2ZSBhbnkgcHJvYmxlbXMgdGhhdCBtaWdodCBhcmlzZS4KICAgICBbT2YgY291cnNlLCB0aGlzIGxhc3Qgc3RlcCBpcyBtdWNoIGhhcmRlciB0aGFuIGl0IHNvdW5kcy5dCiAKIApAQCAtMjQ4MSw2ICsyNDg0LDE3IEBACiAJW3EsIGIsIGUsID9dICMjIEFwcGxpY2F0aW9uIHRlcm1pbmF0ZWQsIHJjID0gMHgwCiAKIAorCitNaW5pY29tIHdhcm5pbmc6Cis9PT09PT09PT09PT09PT09CisKK092ZXIgdGltZSwgbWFueSBwZW9wbGUgaGF2ZSByZXBvcnRlZCBwcm9ibGVtcyB3aGVuIHRyeWluZyB0byB1c2VkIHRoZQorIm1pbmljb20iIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtICBmb3IgIHNlcmlhbCAgZG93bmxvYWQuICBJICAod2QpCitjb25zaWRlciAgbWluaWNvbSAgdG8gIGJlICBicm9rZW4sIGFuZCByZWNvbW1lbmQgbm90IHRvIHVzZSBpdC4gVW5kZXIKK1VuaXgsIEkgcmVjb21tZW5kICB0byAgdXNlICBDS2VybWl0ICBmb3IgIGdlbmVyYWwgIHB1cnBvc2UgIHVzZSAgKGFuZAorZXNwZWNpYWxseSBmb3Iga2VybWl0IGJpbmFyeSBwcm90b2NvbCBkb3dubG9hZCAoImxvYWRiIiBjb21tYW5kKSwgYW5kCit1c2UgImN1IiBmb3IgUy1SZWNvcmQgZG93bmxvYWQgKCJsb2FkcyIgY29tbWFuZCkuCisKIE5ldEJTRCBOb3RlczoKID09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvYm9hcmQvYXQ5MXJtOTIwMGRrL2F0OTFybTkyMDBkay5jIGIvYm9hcmQvYXQ5MXJtOTIwMGRrL2F0OTFybTkyMDBkay5jCmluZGV4IDdjMzY3MGIuLjA3ZGVmMTggMTAwNjQ0Ci0tLSBhL2JvYXJkL2F0OTFybTkyMDBkay9hdDkxcm05MjAwZGsuYworKysgYi9ib2FyZC9hdDkxcm05MjAwZGsvYXQ5MXJtOTIwMGRrLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8QVQ5MVJNOTIwMC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL0FUOTFSTTkyMDAuaD4KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyoKZGlmZiAtLWdpdCBhL2JvYXJkL2luY2FpcC9pbmNhaXAuYyBiL2JvYXJkL2luY2FpcC9pbmNhaXAuYwppbmRleCA3MmYxYzIxLi4xMDE3MWRkIDEwMDY0NAotLS0gYS9ib2FyZC9pbmNhaXAvaW5jYWlwLmMKKysrIGIvYm9hcmQvaW5jYWlwL2luY2FpcC5jCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSA8YXNtL2luY2EtaXAuaD4KIAogCitleHRlcm4gdWludCBpbmNhaXBfZ2V0X2NwdWNsayh2b2lkKTsKKwogc3RhdGljIHVsb25nIG1heF9zZHJhbV9zaXplKHZvaWQpCiB7CiAJLyogVGhlIG9ubHkgc3VwcG9ydGVkIFNEUkFNIGRhdGEgd2lkdGggaXMgMTZiaXQuCkBAIC0xMjcsMyArMTI5LDI5IEBACiAJcmV0dXJuIG1heF9zaXplOwogfQogCitpbnQgY2hlY2tib2FyZCAodm9pZCkKK3sKKworCXVuc2lnbmVkIGxvbmcgY2hpcGlkID0gKklOQ0FfSVBfV0RUX0NISVBJRDsKKwlpbnQgcGFydF9udW07CisKKwlwdXRzICgiQm9hcmQ6IElOQ0EtSVAgIik7CisJcGFydF9udW0gPSAoY2hpcGlkID4+IDEyKSAmIDB4ZmZmZjsKKwlzd2l0Y2ggKHBhcnRfbnVtKSB7CisJY2FzZSAweGMwOgorCQlwcmludGYgKCJTdGFuZGFyZCBWZXJzaW9uLCAiKTsKKwkJYnJlYWs7CisJY2FzZSAweGMxOgorCQlwcmludGYgKCJCYXNpYyBWZXJzaW9uLCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmICgiVW5rbm93biBQYXJ0IE51bWJlciAweCV4ICIsIHBhcnRfbnVtKTsKKwkJYnJlYWs7CisJfQorCisJcHJpbnRmICgiQ2hpcCBWMS4lbGQsICIsIChjaGlwaWQgPj4gMjgpKTsKKworCXByaW50ZigiQ1BVIFNwZWVkICVkIE1IelxuIiwgaW5jYWlwX2dldF9jcHVjbGsoKS8xMDAwMDAwKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvaW5jYWlwL21lbXNldHVwLlMgYi9ib2FyZC9pbmNhaXAvbWVtc2V0dXAuUwppbmRleCA0ZmFmNjI3Li4wZDRkZTVhIDEwMDY0NAotLS0gYS9ib2FyZC9pbmNhaXAvbWVtc2V0dXAuUworKysgYi9ib2FyZC9pbmNhaXAvbWVtc2V0dXAuUwpAQCAtNjgsNyArNjgsNyBAQAogCXN3CXQxLCBFQlVfQUREU0VMMCh0MCkKIAogI2lmIENQVV9DTE9DS19SQVRFPT0xNTAwMDAwMDAgICAvKiAxNTAgTUh6IGNsb2NrIGZvciB0aGUgTUlQUyBjb3JlICovCi0JbGkJdDEsIDB4RTg0MTQxN0UKKwlsaQl0MSwgMHhBODQxNDE3RQogCXN3CXQxLCBFQlVfQlVTQ09OMCh0MCkgICAvKiB2YWx1ZSBzZXQgdXAgYnkgbWFnaWMgZmxhc2ggd29yZCAqLwogCXN3CXQxLCBFQlVfQlVTQ09OMih0MCkKICNlbHNlIC8qIDEwMCBNSHogKi8KZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfYm9vdC5jIGIvY29tbW9uL2NtZF9ib290LmMKaW5kZXggMWM5YTQxZC4uNTliYWIzNSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9ib290LmMKKysrIGIvY29tbW9uL2NtZF9ib290LmMKQEAgLTE2MywxMCArMTYzLDEwIEBACiAJCXByaW50ZiAoIiVjJTAyWCIsIGkgPyAnOicgOiAnICcsIGJkLT5iaV9lbmV0YWRkcltpXSk7CiAJfQogCXByaW50ZiAoIlxuIgotCQkiaXBfYWRkciAgICAgICA9ICIpOworCQkiaXBfYWRkciAgICAgPSAiKTsKIAlwcmludF9JUGFkZHIgKGJkLT5iaV9pcF9hZGRyKTsKIAlwcmludGYgKCJcbiIKLQkJImJhdWRyYXRlICAgICAgPSAlZCBicHNcbiIsIGJkLT5iaV9iYXVkcmF0ZSk7CisJCSJiYXVkcmF0ZSAgICA9ICVkIGJwc1xuIiwgYmQtPmJpX2JhdWRyYXRlKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTc1LDYgKzU3NSw3IEBACiAjZGVmaW5lIFhPTl9DSEFSICAgICAgICAxNwogI2RlZmluZSBYT0ZGX0NIQVIgICAgICAgMTkKICNkZWZpbmUgU1RBUlRfQ0hBUiAgICAgIDB4MDEKKyNkZWZpbmUgRVRYX0NIQVIJMHgwMwogI2RlZmluZSBFTkRfQ0hBUiAgICAgICAgMHgwRAogI2RlZmluZSBTUEFDRSAgICAgICAgICAgMHgyMAogI2RlZmluZSBLX0VTQ0FQRSAgICAgICAgMHgyMwpAQCAtOTk1LDggKzk5NiwxOCBAQAogI2VuZGlmCiAKIAkJLyogZ2V0IGEgcGFja2V0ICovCi0JCS8qIHdhaXQgZm9yIHRoZSBzdGFydGluZyBjaGFyYWN0ZXIgKi8KLQkJd2hpbGUgKHNlcmlhbF9nZXRjICgpICE9IFNUQVJUX0NIQVIpOworCQkvKiB3YWl0IGZvciB0aGUgc3RhcnRpbmcgY2hhcmFjdGVyIG9yIF5DICovCisJCWZvciAoOzspIHsKKwkJCXN3aXRjaCAoc2VyaWFsX2dldGMgKCkpIHsKKwkJCWNhc2UgU1RBUlRfQ0hBUjoJLyogc3RhcnQgcGFja2V0ICovCisJCQkJYnJlYWs7CisJCQljYXNlIEVUWF9DSEFSOgkJLyogXkMgd2FpdGluZyBmb3IgcGFja2V0ICovCisJCQkJcmV0dXJuICgwKTsKKwkJCWRlZmF1bHQ6CisJCQkJOworCQkJfQorCQl9CisJCQkKIAkJLyogZ2V0IGxlbmd0aCBvZiBwYWNrZXQgKi8KIAkJc3VtID0gMDsKIAkJbmV3X2NoYXIgPSBzZXJpYWxfZ2V0YyAoKTsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfbmFuZC5jIGIvY29tbW9uL2NtZF9uYW5kLmMKaW5kZXggZTkzMzEyMC4uYTA0MWIyOSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9uYW5kLmMKKysrIGIvY29tbW9uL2NtZF9uYW5kLmMKQEAgLTEyNjYsNiArMTI2Niw3IEBACiB7CiAJdW5zaWduZWQgbG9uZyBuYW5kcHRyOwogCXN0cnVjdCBOYW5kICpteWNoaXA7CisJaW50IHJldCA9IDA7CiAKIAlpZiAob2ZzICYgKG5hbmQtPmVyYXNlc2l6ZS0xKSB8fCBsZW4gJiAobmFuZC0+ZXJhc2VzaXplLTEpKSB7CiAJCXByaW50ZiAoIk9mZnNldCBhbmQgc2l6ZSBtdXN0IGJlIHNlY3RvciBhbGlnbmVkLCBlcmFzZXNpemUgPSAlZFxuIiwKQEAgLTEyNzUsNiArMTI3NiwxNyBAQAogCiAJbmFuZHB0ciA9IG5hbmQtPklPX0FERFI7CiAKKwkvKiBTZWxlY3QgdGhlIE5BTkQgZGV2aWNlICovCisJTkFORF9FTkFCTEVfQ0UobmFuZCk7ICAvKiBzZXQgcGluIGxvdyAqLworCisJLyogQ2hlY2sgdGhlIFdQIGJpdCAqLworCU5hbkRfQ29tbWFuZChuYW5kLCBOQU5EX0NNRF9TVEFUVVMpOworCWlmICghKFJFQURfTkFORChuYW5kLT5JT19BRERSKSAmIDB4ODApKSB7CisJCXByaW50ZiAoIm5hbmRfd3JpdGVfZWNjOiBEZXZpY2UgaXMgd3JpdGUgcHJvdGVjdGVkISEhXG4iKTsKKwkJcmV0ID0gLTE7CisJCWdvdG8gb3V0OworCX0KKwogCS8qIEZJWE1FOiBEbyBuYW5kIGluIHRoZSBiYWNrZ3JvdW5kLiBVc2UgdGltZXJzIG9yIHNjaGVkdWxlX3Rhc2soKSAqLwogCXdoaWxlKGxlbikgewogCQlteWNoaXAgPSAmbmFuZC0+Y2hpcHNbc2hyKG9mcywgbmFuZC0+Y2hpcHNoaWZ0KV07CkBAIC0xMjg4LDIwICsxMzAwLDIyIEBACiAJCWlmIChSRUFEX05BTkQobmFuZHB0cikgJiAxKSB7CiAJCQlwcmludGYoIkVycm9yIGVyYXNpbmcgYXQgMHglbHhcbiIsIChsb25nKW9mcyk7CiAJCQkvKiBUaGVyZSB3YXMgYW4gZXJyb3IgKi8KLQkJCWdvdG8gY2FsbGJhY2s7CisJCQlyZXQgPSAtMTsKKwkJCWdvdG8gb3V0OwogCQl9CiAJCW9mcyArPSBuYW5kLT5lcmFzZXNpemU7CiAJCWxlbiAtPSBuYW5kLT5lcmFzZXNpemU7CiAJfQogCi0gY2FsbGJhY2s6Ci0JcmV0dXJuIDA7CitvdXQ6CisJLyogRGUtc2VsZWN0IHRoZSBOQU5EIGRldmljZSAqLworCU5BTkRfRElTQUJMRV9DRShuYW5kKTsgIC8qIHNldCBwaW4gaGlnaCAqLworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgbmFuZGNoZWNrKHVuc2lnbmVkIGxvbmcgcG90ZW50aWFsLCB1bnNpZ25lZCBsb25nIHBoeXNhZHIpCiB7Ci0KLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9jcHUvYXQ5MXJtOTIwMC9jcHUuYyBiL2NwdS9hdDkxcm05MjAwL2NwdS5jCmluZGV4IGY0MTIxMGIuLmJjY2M3NWQgMTAwNjQ0Ci0tLSBhL2NwdS9hdDkxcm05MjAwL2NwdS5jCisrKyBiL2NwdS9hdDkxcm05MjAwL2NwdS5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxjb21tYW5kLmg+Ci0jaW5jbHVkZSA8QVQ5MVJNOTIwMC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgogCiAvKiByZWFkIGNvLXByb2Nlc3NvciAxNSwgcmVnaXN0ZXIgIzEgKGNvbnRyb2wgcmVnaXN0ZXIpICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyByZWFkX3AxNV9jMSh2b2lkKQpkaWZmIC0tZ2l0IGEvY3B1L2F0OTFybTkyMDAvaW50ZXJydXB0cy5jIGIvY3B1L2F0OTFybTkyMDAvaW50ZXJydXB0cy5jCmluZGV4IGExNGVmODEuLmFhMGQ0MTUgMTAwNjQ0Ci0tLSBhL2NwdS9hdDkxcm05MjAwL2ludGVycnVwdHMuYworKysgYi9jcHUvYXQ5MXJtOTIwMC9pbnRlcnJ1cHRzLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8QVQ5MVJNOTIwMC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wcm9jLWFybXYvcHRyYWNlLmg+CiAKIGV4dGVybiB2b2lkIHJlc2V0X2NwdSh1bG9uZyBhZGRyKTsKZGlmZiAtLWdpdCBhL2NwdS9hdDkxcm05MjAwL3NlcmlhbC5jIGIvY3B1L2F0OTFybTkyMDAvc2VyaWFsLmMKaW5kZXggNTY1Y2QzZC4uNWM1MTcyZSAxMDA2NDQKLS0tIGEvY3B1L2F0OTFybTkyMDAvc2VyaWFsLmMKKysrIGIvY3B1L2F0OTFybTkyMDAvc2VyaWFsLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8Y29tbW9uLmg+Ci0jaW5jbHVkZSA8QVQ5MVJNOTIwMC5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgogCiAvKiBnZ2kgdGh1bmRlciAqLwogQVQ5MVBTX1VTQVJUIHVzID0gKEFUOTFQU19VU0FSVCkgQVQ5MUNfQkFTRV9EQkdVOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdDkxcm05MjAwX2V0aGVyLmMgYi9kcml2ZXJzL2F0OTFybTkyMDBfZXRoZXIuYwppbmRleCAxYjNlODdmLi5mOTIwMDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0OTFybTkyMDBfZXRoZXIuYworKysgYi9kcml2ZXJzL2F0OTFybTkyMDBfZXRoZXIuYwpAQCAtMSw3ICsxLDcgQEAKIAogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGNvbW1hbmQuaD4KLSNpbmNsdWRlIDxBVDkxUk05MjAwLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8bmV0Lmg+CiAKIC8qIC0tLS0tIEV0aGVybmV0IEJ1ZmZlciBkZWZpbml0aW9ucyAtLS0tLSAqLwpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvTWFrZWZpbGUgYi9leGFtcGxlcy9NYWtlZmlsZQppbmRleCBiOTA1NmRkLi4xNjNiNDA0IDEwMDY0NAotLS0gYS9leGFtcGxlcy9NYWtlZmlsZQorKysgYi9leGFtcGxlcy9NYWtlZmlsZQpAQCAtMjgsNiArMjgsMTEgQEAKIFNSRUMJPSBoZWxsb193b3JsZC5zcmVjCiBCSU4JPSBoZWxsb193b3JsZC5iaW4KIAoraWZlcSAoJChBUkNIKSxwcGMpCitTUkVDICAgKz0gc2NoZWQuc3JlYworQklOICAgICs9IHNjaGVkLmJpbgorZW5kaWYKKwogaWZlcSAoJChDUFUpLG1pcHMpCiBTUkVDID0KIEJJTiA9CkBAIC0zNiw2ICs0MSw3IEBACiAjIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyBwcmV0dHkgOHh4IHNwZWNpZmljLi4uCiBpZmVxICgkKENQVSksbXBjOHh4KQogU1JFQyAgICs9IHRpbWVyLnNyZWMKK0JJTiAgICArPSB0aW1lci5iaW4KIGVuZGlmCiAKICMgVXRpbGl0eSBmb3IgcmVzZXR0aW5nIGk4MjU1OSBFRVBST00KQEAgLTQ1LDggKzUxLDExIEBACiAKIE9CSlMJPSAkKFNSRUM6LnNyZWM9Lm8pCiAKLUxJQgkJPSBsaWJzeXNjYWxsLmEKK0xJQgk9IGxpYnN5c2NhbGwuYQogTElCQU9CSlM9IHN5c2NhbGwubworaWZlcSAoJChBUkNIKSxwcGMpCitMSUJBT0JKUys9ICQoQVJDSClfbG9uZ2ptcC5vICQoQVJDSClfc2V0am1wLm8KK2VuZGlmCiBMSUJDT0JKUz0KIExJQk9CSlMJPSAkKExJQkFPQkpTKSAkKExJQkNPQkpTKQogCmRpZmYgLS1naXQgYS9leGFtcGxlcy9wcGNfbG9uZ2ptcC5TIGIvZXhhbXBsZXMvcHBjX2xvbmdqbXAuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDgyODVhCi0tLSAvZGV2L251bGwKKysrIGIvZXhhbXBsZXMvcHBjX2xvbmdqbXAuUwpAQCAtMCwwICsxLDc5IEBACisvKiBsb25nam1wIGZvciBQb3dlclBDLgorICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorICAgMDIxMTEtMTMwNyBVU0EuICAqLworCisjaW5jbHVkZSA8cHBjX2FzbS50bXBsPgorCisjIGRlZmluZSBKQl9HUFIxICAgMCAgLyogQWxzbyBrbm93biBhcyB0aGUgc3RhY2sgcG9pbnRlciAqLworIyBkZWZpbmUgSkJfR1BSMiAgIDEKKyMgZGVmaW5lIEpCX0xSICAgICAyICAvKiBUaGUgYWRkcmVzcyB3ZSB3aWxsIHJldHVybiB0byAqLworIyBkZWZpbmUgSkJfR1BSUyAgIDMgIC8qIEdQUnMgMTQgdGhyb3VnaCAzMSBhcmUgc2F2ZWQsIDE4IGluIHRvdGFsICovCisjIGRlZmluZSBKQl9DUiAgICAgMjEgLyogQ29uZGl0aW9uIGNvZGUgcmVnaXN0ZXJzLiAqLworIyBkZWZpbmUgSkJfRlBSUyAgIDIyIC8qIEZQUnMgMTQgdGhyb3VnaCAzMSBhcmUgc2F2ZWQsIDE4KjIgd29yZHMgdG90YWwgKi8KKyMgZGVmaW5lIEpCX1NJWkUgICAoNTgqNCkKKworI2RlZmluZSBGUCh4Li4uKSB4CisjZGVmaW5lIEZQKHguLi4pIHgKKworLmdsb2JsICAgICAgbG9uZ2ptcDsKKworbG9uZ2ptcDoKKwlsd3ogcjEsKEpCX0dQUjEqNCkocjMpCisJbHd6IHIyLChKQl9HUFIyKjQpKHIzKQorCWx3eiByMCwoSkJfTFIqNCkocjMpCisJbHd6IHIxNCwoKEpCX0dQUlMrMCkqNCkocjMpCitGUCgJbGZkIDE0LCgoSkJfRlBSUyswKjIpKjQpKHIzKSkKKwlsd3ogcjE1LCgoSkJfR1BSUysxKSo0KShyMykKK0ZQKAlsZmQgMTUsKChKQl9GUFJTKzEqMikqNCkocjMpKQorCWx3eiByMTYsKChKQl9HUFJTKzIpKjQpKHIzKQorRlAoCWxmZCAxNiwoKEpCX0ZQUlMrMioyKSo0KShyMykpCisJbHd6IHIxNywoKEpCX0dQUlMrMykqNCkocjMpCitGUCgJbGZkIDE3LCgoSkJfRlBSUyszKjIpKjQpKHIzKSkKKwlsd3ogcjE4LCgoSkJfR1BSUys0KSo0KShyMykKK0ZQKAlsZmQgMTgsKChKQl9GUFJTKzQqMikqNCkocjMpKQorCWx3eiByMTksKChKQl9HUFJTKzUpKjQpKHIzKQorRlAoCWxmZCAxOSwoKEpCX0ZQUlMrNSoyKSo0KShyMykpCisJbHd6IHIyMCwoKEpCX0dQUlMrNikqNCkocjMpCitGUCgJbGZkIDIwLCgoSkJfRlBSUys2KjIpKjQpKHIzKSkKKwltdGxyIHIwCisJbHd6IHIyMSwoKEpCX0dQUlMrNykqNCkocjMpCitGUCgJbGZkIDIxLCgoSkJfRlBSUys3KjIpKjQpKHIzKSkKKwlsd3ogcjIyLCgoSkJfR1BSUys4KSo0KShyMykKK0ZQKAlsZmQgMjIsKChKQl9GUFJTKzgqMikqNCkocjMpKQorCWx3eiByMCwoSkJfQ1IqNCkocjMpCisJbHd6IHIyMywoKEpCX0dQUlMrOSkqNCkocjMpCitGUCgJbGZkIDIzLCgoSkJfRlBSUys5KjIpKjQpKHIzKSkKKwlsd3ogcjI0LCgoSkJfR1BSUysxMCkqNCkocjMpCitGUCgJbGZkIDI0LCgoSkJfRlBSUysxMCoyKSo0KShyMykpCisJbHd6IHIyNSwoKEpCX0dQUlMrMTEpKjQpKHIzKQorRlAoCWxmZCAyNSwoKEpCX0ZQUlMrMTEqMikqNCkocjMpKQorCW10Y3JmIDB4RkYscjAKKwlsd3ogcjI2LCgoSkJfR1BSUysxMikqNCkocjMpCitGUCgJbGZkIDI2LCgoSkJfRlBSUysxMioyKSo0KShyMykpCisJbHd6IHIyNywoKEpCX0dQUlMrMTMpKjQpKHIzKQorRlAoCWxmZCAyNywoKEpCX0ZQUlMrMTMqMikqNCkocjMpKQorCWx3eiByMjgsKChKQl9HUFJTKzE0KSo0KShyMykKK0ZQKAlsZmQgMjgsKChKQl9GUFJTKzE0KjIpKjQpKHIzKSkKKwlsd3ogcjI5LCgoSkJfR1BSUysxNSkqNCkocjMpCitGUCgJbGZkIDI5LCgoSkJfRlBSUysxNSoyKSo0KShyMykpCisJbHd6IHIzMCwoKEpCX0dQUlMrMTYpKjQpKHIzKQorRlAoCWxmZCAzMCwoKEpCX0ZQUlMrMTYqMikqNCkocjMpKQorCWx3eiByMzEsKChKQl9HUFJTKzE3KSo0KShyMykKK0ZQKAlsZmQgMzEsKChKQl9GUFJTKzE3KjIpKjQpKHIzKSkKKwltciByMyxyNAorCWJscgpkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcHBjX3NldGptcC5TIGIvZXhhbXBsZXMvcHBjX3NldGptcC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MTgxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9leGFtcGxlcy9wcGNfc2V0am1wLlMKQEAgLTAsMCArMSw4MyBAQAorLyogc2V0am1wIGZvciBQb3dlclBDLgorICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorICAgMDIxMTEtMTMwNyBVU0EuICAqLworCisjaW5jbHVkZSA8cHBjX2FzbS50bXBsPgorCisjIGRlZmluZSBKQl9HUFIxICAgMCAgLyogQWxzbyBrbm93biBhcyB0aGUgc3RhY2sgcG9pbnRlciAqLworIyBkZWZpbmUgSkJfR1BSMiAgIDEKKyMgZGVmaW5lIEpCX0xSICAgICAyICAvKiBUaGUgYWRkcmVzcyB3ZSB3aWxsIHJldHVybiB0byAqLworIyBkZWZpbmUgSkJfR1BSUyAgIDMgIC8qIEdQUnMgMTQgdGhyb3VnaCAzMSBhcmUgc2F2ZWQsIDE4IGluIHRvdGFsICovCisjIGRlZmluZSBKQl9DUiAgICAgMjEgLyogQ29uZGl0aW9uIGNvZGUgcmVnaXN0ZXJzLiAqLworIyBkZWZpbmUgSkJfRlBSUyAgIDIyIC8qIEZQUnMgMTQgdGhyb3VnaCAzMSBhcmUgc2F2ZWQsIDE4KjIgd29yZHMgdG90YWwgKi8KKyMgZGVmaW5lIEpCX1NJWkUgICAoNTgqNCkKKworI2RlZmluZSBGUCh4Li4uKSB4CisKKy5nbG9ibCAgICAgIHNldGN0eHNwOworc2V0Y3R4c3A6CisJbXIgIHIxLCByMworCWJscgorCisuZ2xvYmwgICAgICBfc2V0am1wOworX3NldGptcDoKKwlzdHcgIHIxLChKQl9HUFIxKjQpKDMpCisJbWZsciByMAorCXN0dyAgcjIsKEpCX0dQUjIqNCkoMykKKwlzdHcgIHIxNCwoKEpCX0dQUlMrMCkqNCkoMykKK0ZQKAlzdGZkIDE0LCgoSkJfRlBSUyswKjIpKjQpKDMpKQorCXN0dyAgcjAsKEpCX0xSKjQpKDMpCisJc3R3ICByMTUsKChKQl9HUFJTKzEpKjQpKDMpCitGUCgJc3RmZCAxNSwoKEpCX0ZQUlMrMSoyKSo0KSgzKSkKKwltZmNyIHIwCisJc3R3ICByMTYsKChKQl9HUFJTKzIpKjQpKDMpCitGUCgJc3RmZCAxNiwoKEpCX0ZQUlMrMioyKSo0KSgzKSkKKwlzdHcgIHIwLChKQl9DUio0KSgzKQorCXN0dyAgcjE3LCgoSkJfR1BSUyszKSo0KSgzKQorRlAoCXN0ZmQgMTcsKChKQl9GUFJTKzMqMikqNCkoMykpCisJc3R3ICByMTgsKChKQl9HUFJTKzQpKjQpKDMpCitGUCgJc3RmZCAxOCwoKEpCX0ZQUlMrNCoyKSo0KSgzKSkKKwlzdHcgIHIxOSwoKEpCX0dQUlMrNSkqNCkoMykKK0ZQKAlzdGZkIDE5LCgoSkJfRlBSUys1KjIpKjQpKDMpKQorCXN0dyAgcjIwLCgoSkJfR1BSUys2KSo0KSgzKQorRlAoCXN0ZmQgMjAsKChKQl9GUFJTKzYqMikqNCkoMykpCisJc3R3ICByMjEsKChKQl9HUFJTKzcpKjQpKDMpCitGUCgJc3RmZCAyMSwoKEpCX0ZQUlMrNyoyKSo0KSgzKSkKKwlzdHcgIHIyMiwoKEpCX0dQUlMrOCkqNCkoMykKK0ZQKAlzdGZkIDIyLCgoSkJfRlBSUys4KjIpKjQpKDMpKQorCXN0dyAgcjIzLCgoSkJfR1BSUys5KSo0KSgzKQorRlAoCXN0ZmQgMjMsKChKQl9GUFJTKzkqMikqNCkoMykpCisJc3R3ICByMjQsKChKQl9HUFJTKzEwKSo0KSgzKQorRlAoCXN0ZmQgMjQsKChKQl9GUFJTKzEwKjIpKjQpKDMpKQorCXN0dyAgcjI1LCgoSkJfR1BSUysxMSkqNCkoMykKK0ZQKAlzdGZkIDI1LCgoSkJfRlBSUysxMSoyKSo0KSgzKSkKKwlzdHcgIHIyNiwoKEpCX0dQUlMrMTIpKjQpKDMpCitGUCgJc3RmZCAyNiwoKEpCX0ZQUlMrMTIqMikqNCkoMykpCisJc3R3ICByMjcsKChKQl9HUFJTKzEzKSo0KSgzKQorRlAoCXN0ZmQgMjcsKChKQl9GUFJTKzEzKjIpKjQpKDMpKQorCXN0dyAgcjI4LCgoSkJfR1BSUysxNCkqNCkoMykKK0ZQKAlzdGZkIDI4LCgoSkJfRlBSUysxNCoyKSo0KSgzKSkKKwlzdHcgIHIyOSwoKEpCX0dQUlMrMTUpKjQpKDMpCitGUCgJc3RmZCAyOSwoKEpCX0ZQUlMrMTUqMikqNCkoMykpCisJc3R3ICByMzAsKChKQl9HUFJTKzE2KSo0KSgzKQorRlAoCXN0ZmQgMzAsKChKQl9GUFJTKzE2KjIpKjQpKDMpKQorCXN0dyAgcjMxLCgoSkJfR1BSUysxNykqNCkoMykKK0ZQKAlzdGZkIDMxLCgoSkJfRlBSUysxNyoyKSo0KSgzKSkKKworCWxpIDMsIDAKKwlibHIKZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NjaGVkLmMgYi9leGFtcGxlcy9zY2hlZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNmY5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9leGFtcGxlcy9zY2hlZC5jCkBAIC0wLDAgKzEsMzYxIEBACisvKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqIAorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8c3lzY2FsbC5oPgorI2luY2x1ZGUgPHNldGptcC5oPgorCisvKgorICogQXV0aG9yOiBBcnVuIERoYXJhbmthciA8QURoYXJhbmthckBBVFRCSS5Db20+CisgKgorICogQSB2ZXJ5IHNpbXBsZSB0aHJlYWQvc2NoZWR1bGFyIG1vZGVsOgorICogICAtIG9ubHkgb25lIG1hc3RlciB0aHJlYWQsIGFuZCBubyBwYXJlbnQgY2hpbGQgcmVsYXRpb24gbWFpbnRhaW5lZAorICogICAtIHBhcmVudCB0aHJlYWQgY2Fubm90IGJlIHN0b3BwZWQgb3IgZGVsZXRlZAorICogICAtIG5vIHBlcm1pc3Npb25zIG9yIGNyZWRlbnRpYWxzCisgKiAgIC0gbm8gZWxhYm9yYXRlIHNhZmV0eSBjaGVja3MKKyAqICAgLSBjb29wZXJhdGl2ZSBtdWx0aSB0aHJlYWRpbmcKKyAqICAgLSBTaW1wbGUgcm91bmQtcm9iaW4gc2NoZWR1bGVpbmcgd2l0aCBubyBwcmlvcml0aWVzCisgKiAgIC0gbm8gbWV0ZXJpbmcvc3RhdGlzdGljcyBjb2xsZWN0aW9uCisgKgorICogQmFzaWMgaWRlYSBvZiBpbXBsZW1lbnRpbmcgdGhpcyBpcyB0byBhbGxvdyBtb3JlIHRoYW4gb25lIHRlc3RzIHRvCisgKiBleGVjdXRlICJzaW11bHRhbmVvdXNseSIuCisgKgorICogVGhpcyBtYXkgYmUgbW9kaWZpZWQgc3VjaCB0aHJlYWRfeWllbGQgbWF5IGJlIGNhbGxlZCBpbiBzeXNjYWxscywgYW5kCisgKiB0aW1lciBpbnRlcnJ1cHRzLgorICovCisKKworI2RlZmluZSBNQVhfVEhSRUFEUyA4CisKKyNkZWZpbmUgQ1RYX1NJWkUgNTEyCisjZGVmaW5lIFNUS19TSVpFIDgqMTAyNAorCisjZGVmaW5lIFNUQVRFX0VNUFRZIDAKKyNkZWZpbmUgU1RBVEVfUlVOTkFCTEUgMQorI2RlZmluZSBTVEFURV9TVE9QUEVEIDIKKyNkZWZpbmUgU1RBVEVfVEVSTUlOQVRFRCAyCisKKyNkZWZpbmUgTUFTVEVSX1RIUkVBRCAwCisKKyNkZWZpbmUgUkNfRkFJTFVSRQkoLTEpCisjZGVmaW5lCVJDX1NVQ0NFU1MJKDApCisKK3N0cnVjdCBsdGhyZWFkIHsKKwlpbnQgc3RhdGU7CisJaW50IHJldHZhbDsKKwljaGFyIHN0YWNrW1NUS19TSVpFXTsKKwl1Y2hhciBjb250ZXh0W0NUWF9TSVpFXTsKKwlpbnQgKCpmdW5jKSAodm9pZCAqKTsKKwl2b2lkICphcmc7Cit9Oworc3RhdGljIHZvbGF0aWxlIHN0cnVjdCBsdGhyZWFkIGx0aHJlYWRzW01BWF9USFJFQURTXTsKK3N0YXRpYyB2b2xhdGlsZSBpbnQgY3VycmVudF90aWQgPSBNQVNURVJfVEhSRUFEOworCisKK3N0YXRpYyB1Y2hhciBkYmcgPSAwOworCisjZGVmaW5lIERFQlVHKGZtdCwgYXJncy4uLikJIHsJCQkJCQkJCQkJCQlcCisJCWlmKGRiZyAhPSAwKSB7CQkJCQkJCQkJCQkJCQlcCisJCQltb25fcHJpbnRmKCJbJXMgJWQgJXNdOiAiLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7CVwKKwkJCW1vbl9wcmludGYoZm10LCAjI2FyZ3MpOwkJCQkJCQkJCQlcCisJCQltb25fcHJpbnRmKCJcbiIpOwkJCQkJCQkJCQkJCVwKKwkJfQkJCQkJCQkJCQkJCQkJCQkJXAorCX0KKworc3RhdGljIGludCB0ZXN0dGhyZWFkICh2b2lkICopOworc3RhdGljIHZvaWQgc2NoZWRfaW5pdCAodm9pZCk7CitzdGF0aWMgaW50IHRocmVhZF9jcmVhdGUgKGludCAoKmZ1bmMpICh2b2lkICopLCB2b2lkICphcmcpOworc3RhdGljIGludCB0aHJlYWRfc3RhcnQgKGludCBpZCk7CitzdGF0aWMgdm9pZCB0aHJlYWRfeWllbGQgKHZvaWQpOworc3RhdGljIGludCB0aHJlYWRfZGVsZXRlIChpbnQgaWQpOworc3RhdGljIGludCB0aHJlYWRfam9pbiAoaW50ICpyZXQpOworI2lmIDAgLyogbm90IHVzZWQgeWV0ICovCitzdGF0aWMgaW50IHRocmVhZF9zdG9wIChpbnQgaWQpOworI2VuZGlmIC8qIG5vdCB1c2VkIHlldCAqLworCisvKiBBbiBleGFtcGxlIG9mIHNjaGVkdWxhciB0ZXN0ICovCisKKyNkZWZpbmUgTlVNVEhSRUFEUyA3CitpbnQgc2NoZWQgKGJkX3QgKmJkLCBpbnQgYWMsIGNoYXIgKmF2W10pCit7CisJaW50IGksIGo7CisJaW50IHRpZFtOVU1USFJFQURTXTsKKwlpbnQgbmFtZXNbTlVNVEhSRUFEU107CisKKwlzY2hlZF9pbml0ICgpOworCisJZm9yIChpID0gMDsgaSA8IE5VTVRIUkVBRFM7IGkrKykgeworCQluYW1lc1tpXSA9IGk7CisJCWogPSB0aHJlYWRfY3JlYXRlICh0ZXN0dGhyZWFkLCAodm9pZCAqKSAmbmFtZXNbaV0pOworCQlpZiAoaiA9PSBSQ19GQUlMVVJFKQorCQkJbW9uX3ByaW50ZiAoInNjaGVkdGVzdDogRmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQgJWRcbiIsCisJCQlpKTsKKwkJaWYgKGogPiAwKSB7CisJCQltb25fcHJpbnRmICgic2NoZWR0ZXN0OiBDcmVhdGVkIHRocmVhZCB3aXRoIGlkICVkLCBuYW1lICVkXG4iLAorCQkJCWosIGkpOworCQkJdGlkW2ldID0gajsKKwkJfQorCX0KKwltb25fcHJpbnRmICgic2NoZWR0ZXN0OiBUaHJlYWRzIGNyZWF0ZWRcbiIpOworCisJbW9uX3ByaW50ZiAoInNjaGVkX3Rlc3Q6IGZ1bmN0aW9uPTB4JTA4eFxuIiwgdGVzdHRocmVhZCk7CisJZm9yIChpID0gMDsgaSA8IE5VTVRIUkVBRFM7IGkrKykgeworCQltb25fcHJpbnRmICgic2NoZWR0ZXN0OiBTZXR0aW5nIHRocmVhZCAlZCBydW5uYWJsZVxuIiwgdGlkW2ldKTsKKwkJdGhyZWFkX3N0YXJ0ICh0aWRbaV0pOworCQl0aHJlYWRfeWllbGQgKCk7CisJfQorCW1vbl9wcmludGYgKCJzY2hlZHRlc3Q6IFN0YXJ0ZWQgJWQgdGhyZWFkc1xuIiwgTlVNVEhSRUFEUyk7CisKKwl3aGlsZSAoMSkgeworCQltb25fcHJpbnRmICgic2NoZWR0ZXN0OiBXYWl0aW5nIGZvciB0aHJlYWRzIHRvIGNvbXBsZXRlXG4iKTsKKwkJaWYgKG1vbl90c3RjICgpICYmIG1vbl9nZXRjICgpID09IDB4MykgeworCQkJbW9uX3ByaW50ZiAoInNjaGVkdGVzdDogQWJvcnRpbmcgdGhyZWFkcy4uLlxuIik7CisJCQlmb3IgKGkgPSAwOyBpIDwgTlVNVEhSRUFEUzsgaSsrKSB7CisJCQkJbW9uX3ByaW50ZiAoInNjaGVkdGVzdDogRGVsZXRpbmcgdGhyZWFkICVkXG4iLAorCQkJCQl0aWRbaV0pOworCQkJCXRocmVhZF9kZWxldGUgKHRpZFtpXSk7CisJCQl9CisJCQlyZXR1cm4gUkNfU1VDQ0VTUzsKKwkJfQorCQlqID0gLTE7CisJCWkgPSB0aHJlYWRfam9pbiAoJmopOworCQlpZiAoaSA9PSBSQ19GQUlMVVJFKSB7CisJCQltb25fcHJpbnRmICgic2NoZWR0ZXN0OiBObyB0aHJlYWRzIHBlbmRpbmcsICIKKwkJCQkiZXhpdGluZyBzY2hlZHVsYXIgdGVzdFxuIik7CisJCQlyZXR1cm4gUkNfU1VDQ0VTUzsKKwkJfQorCQltb25fcHJpbnRmICgic2NoZWR0ZXN0OiB0aHJlYWQgaXMgJWQgcmV0dXJuZWQgJWRcbiIsIGksCisJCQkJCWopOworCQl0aHJlYWRfeWllbGQgKCk7CisJfQorCisJcmV0dXJuIFJDX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyBpbnQgdGVzdHRocmVhZCAodm9pZCAqbmFtZSkKK3sKKwlpbnQgaTsKKworCW1vbl9wcmludGYgKCJ0ZXN0dGhyZWFkOiBCZWdpbiBleGVjdXRpbmcgdGhyZWFkLCBteW5hbWUgJWQsICZpPTB4JTA4eFxuIiwKKwkJICooaW50ICopIG5hbWUsICZpKTsKKworCW1vbl9wcmludGYgKCJUaHJlYWQgJTAyZCwgaT0lZFxuIiwgKihpbnQgKikgbmFtZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMHhmZmZmICogKCooaW50ICopIG5hbWUgKyAxKTsgaSsrKSB7CisJCWlmIChtb25fdHN0YyAoKSAmJiBtb25fZ2V0YyAoKSA9PSAweDMpIHsKKwkJCW1vbl9wcmludGYgKCJ0ZXN0dGhyZWFkOiBteW5hbWUgJWQgdGVybWluYXRpbmcuXG4iLAorCQkJCSooaW50ICopIG5hbWUpOworCQkJcmV0dXJuICooaW50ICopIG5hbWUgKyAxOworCQl9CisKKwkJaWYgKGkgJSAxMDAgPT0gMCkKKwkJCXRocmVhZF95aWVsZCAoKTsKKwl9CisKKwltb25fcHJpbnRmICgidGVzdHRocmVhZDogcmV0dXJuaW5nICVkLCBpPTB4JXhcbiIsCisJCSooaW50ICopIG5hbWUgKyAxLCBpKTsKKworCXJldHVybiAqKGludCAqKSBuYW1lICsgMTsKK30KKworCitzdGF0aWMgdm9pZCBzY2hlZF9pbml0ICh2b2lkKQoreworCWludCBpOworCisJZm9yIChpID0gTUFTVEVSX1RIUkVBRCArIDE7IGkgPCBNQVhfVEhSRUFEUzsgaSsrKQorCQlsdGhyZWFkc1tpXS5zdGF0ZSA9IFNUQVRFX0VNUFRZOworCisJY3VycmVudF90aWQgPSBNQVNURVJfVEhSRUFEOworCWx0aHJlYWRzW2N1cnJlbnRfdGlkXS5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworCURFQlVHICgic2NoZWRfaW5pdDogbWFzdGVyIGNvbnRleHQgPSAweCUwOHgiLAorCQlsdGhyZWFkc1tjdXJyZW50X3RpZF0uY29udGV4dCk7CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB0aHJlYWRfeWllbGQgKHZvaWQpCit7CisJc3RhdGljIGludCBpOworCisJREVCVUcgKCJ0aHJlYWRfeWllbGQ6IGN1cnJlbnQgdGlkPSVkIiwgY3VycmVudF90aWQpOworCisjZGVmaW5lIFNXSVRDSChuZXcpIAkJCQkJCQlcCisJaWYobHRocmVhZHNbbmV3XS5zdGF0ZSA9PSBTVEFURV9SVU5OQUJMRSkgewkJCVwKKwkJREVCVUcoInRocmVhZF95aWVsZDogJWQgbWF0Y2gsIGN0eD0weCUwOHgiLAkJXAorCQkJbmV3LCBsdGhyZWFkc1tjdXJyZW50X3RpZF0uY29udGV4dCk7IAkJXAorCQlpZihzZXRqbXAobHRocmVhZHNbY3VycmVudF90aWRdLmNvbnRleHQpID09IDApIHsJXAorCQkJY3VycmVudF90aWQgPSBuZXc7CQkJCVwKKwkJCURFQlVHKCJ0aHJlYWRfeWllbGQ6IHRpZCAlZCByZXR1cm5zIDAiLAkJXAorCQkJCW5ldyk7IAkJCQkJXAorCQkJbG9uZ2ptcChsdGhyZWFkc1tuZXddLmNvbnRleHQsIDEpOwkJXAorCQl9IGVsc2UgewkJCQkJCVwKKwkJCURFQlVHKCJ0aHJlYWRfeWllbGQ6IHRpZCAlZCByZXR1cm5zIDEiLAkJXAorCQkJCW5ldyk7IAkJCQkJXAorCQkJcmV0dXJuOwkJCQkJCVwKKwkJfQkJCQkJCQlcCisJfQorCisJZm9yIChpID0gY3VycmVudF90aWQgKyAxOyBpIDwgTUFYX1RIUkVBRFM7IGkrKykgeworCQlTV0lUQ0ggKGkpOworCX0KKworCWlmIChjdXJyZW50X3RpZCAhPSAwKSB7CisJCWZvciAoaSA9IDA7IGkgPD0gY3VycmVudF90aWQ7IGkrKykgeworCQkJU1dJVENIIChpKTsKKwkJfQorCX0KKworCURFQlVHICgidGhyZWFkX3lpZWxkOiByZXR1cm5pbmcgZnJvbSB0aHJlYWRfeWllbGQiKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgdGhyZWFkX2NyZWF0ZSAoaW50ICgqZnVuYykgKHZvaWQgKiksIHZvaWQgKmFyZykKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IE1BU1RFUl9USFJFQUQgKyAxOyBpIDwgTUFYX1RIUkVBRFM7IGkrKykgeworCQlpZiAobHRocmVhZHNbaV0uc3RhdGUgPT0gU1RBVEVfRU1QVFkpIHsKKwkJCWx0aHJlYWRzW2ldLnN0YXRlID0gU1RBVEVfU1RPUFBFRDsKKwkJCWx0aHJlYWRzW2ldLmZ1bmMgPSBmdW5jOworCQkJbHRocmVhZHNbaV0uYXJnID0gYXJnOworCQkJREVCVUcgKCJ0aHJlYWRfY3JlYXRlOiByZXR1cm5zIG5ldyB0aWQgJWQiLCBpKTsKKwkJCXJldHVybiBpOworCQl9CisJfQorCisJREVCVUcgKCJ0aHJlYWRfY3JlYXRlOiByZXR1cm5zIGZhaWx1cmUiKTsKKwlyZXR1cm4gUkNfRkFJTFVSRTsKK30KKworc3RhdGljIGludCB0aHJlYWRfZGVsZXRlIChpbnQgaWQpCit7CisJaWYgKGlkIDw9IE1BU1RFUl9USFJFQUQgfHwgaWQgPiBNQVhfVEhSRUFEUykKKwkJcmV0dXJuIFJDX0ZBSUxVUkU7CisKKwlpZiAoY3VycmVudF90aWQgPT0gaWQpCisJCXJldHVybiBSQ19GQUlMVVJFOworCisJbHRocmVhZHNbaWRdLnN0YXRlID0gU1RBVEVfRU1QVFk7CisJcmV0dXJuIFJDX1NVQ0NFU1M7Cit9CisKK3N0YXRpYyB2b2lkIHRocmVhZF9sYXVuY2hlciAodm9pZCkKK3sKKwlERUJVRyAoInRocmVhZF9sYXVuY2hlcjogaW52b2tpbmcgZnVuYz0weCUwOHgiLAorCQkgICBsdGhyZWFkc1tjdXJyZW50X3RpZF0uZnVuYyk7CisKKwlsdGhyZWFkc1tjdXJyZW50X3RpZF0ucmV0dmFsID0KKwkJCWx0aHJlYWRzW2N1cnJlbnRfdGlkXS5mdW5jKGx0aHJlYWRzW2N1cnJlbnRfdGlkXS5hcmcpOworCisJREVCVUcgKCJ0aHJlYWRfbGF1bmNoZXI6IHRpZCAlZCB0ZXJtaW5hdGVkIiwgY3VycmVudF90aWQpOworCisJbHRocmVhZHNbY3VycmVudF90aWRdLnN0YXRlID0gU1RBVEVfVEVSTUlOQVRFRDsKKwl0aHJlYWRfeWllbGQgKCk7CisJbW9uX3ByaW50ZiAoInRocmVhZF9sYXVuY2hlcjogc2hvdWxkIE5FVkVSIGdldCBoZXJlIVxuIik7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgdGhyZWFkX3N0YXJ0IChpbnQgaWQpCit7CisJREVCVUcgKCJ0aHJlYWRfc3RhcnQ6IGlkPSVkIiwgaWQpOworCWlmIChpZCA8PSBNQVNURVJfVEhSRUFEIHx8IGlkID4gTUFYX1RIUkVBRFMpIHsKKwkJcmV0dXJuIFJDX0ZBSUxVUkU7CisJfQorCisJaWYgKGx0aHJlYWRzW2lkXS5zdGF0ZSAhPSBTVEFURV9TVE9QUEVEKQorCQlyZXR1cm4gUkNfRkFJTFVSRTsKKworCWlmIChzZXRqbXAgKGx0aHJlYWRzW2N1cnJlbnRfdGlkXS5jb250ZXh0KSA9PSAwKSB7CisJCWx0aHJlYWRzW2lkXS5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworCQljdXJyZW50X3RpZCA9IGlkOworCQlERUJVRyAoInRocmVhZF9zdGFydDogdG8gYmUgc3RhY2s9MCUwOHgiLCBsdGhyZWFkc1tpZF0uc3RhY2spOworCQlzZXRjdHhzcCAoJmx0aHJlYWRzW2lkXS5zdGFja1tTVEtfU0laRV0pOworCQl0aHJlYWRfbGF1bmNoZXIgKCk7CisJfQorCisJREVCVUcgKCJ0aHJlYWRfc3RhcnQ6IFRocmVhZCBpZD0lZCBzdGFydGVkLCBwYXJlbnQgcmV0dXJucyIsIGlkKTsKKworCXJldHVybiBSQ19TVUNDRVNTOworfQorCisjaWYgMAkvKiBub3QgdXNlZCBzbyBmYXIgKi8KK3N0YXRpYyBpbnQgdGhyZWFkX3N0b3AgKGludCBpZCkKK3sKKwlpZiAoaWQgPD0gTUFTVEVSX1RIUkVBRCB8fCBpZCA+PSBNQVhfVEhSRUFEUykKKwkJcmV0dXJuIFJDX0ZBSUxVUkU7CisKKwlpZiAoY3VycmVudF90aWQgPT0gaWQpCisJCXJldHVybiBSQ19GQUlMVVJFOworCisJbHRocmVhZHNbaWRdLnN0YXRlID0gU1RBVEVfU1RPUFBFRDsKKwlyZXR1cm4gUkNfU1VDQ0VTUzsKK30KKyNlbmRpZiAvKiBub3QgdXNlZCBzbyBmYXIgKi8KKworc3RhdGljIGludCB0aHJlYWRfam9pbiAoaW50ICpyZXQpCit7CisJaW50IGksIGogPSAwOworCisJREVCVUcgKCJ0aHJlYWRfam9pbjogKnJldCA9ICVkIiwgKnJldCk7CisKKwlpZiAoISgqcmV0ID09IC0xIHx8ICpyZXQgPiBNQVNURVJfVEhSRUFEIHx8ICpyZXQgPCBNQVhfVEhSRUFEUykpIHsKKwkJREVCVUcgKCJ0aHJlYWRfam9pbjogaW52YWxpZCB0aWQgJWQiLCAqcmV0KTsKKwkJcmV0dXJuIFJDX0ZBSUxVUkU7CisJfQorCisJaWYgKCpyZXQgPT0gLTEpIHsKKwkJREVCVUcgKCJDaGVja2luZyBmb3IgdGlkID0gLTEiKTsKKwkJd2hpbGUgKDEpIHsKKwkJCS8qIERFQlVHKCJ0aHJlYWRfam9pbjogc3RhcnQgd2hpbGUtbG9vcG4iKTsgKi8KKwkJCWogPSAwOworCQkJZm9yIChpID0gTUFTVEVSX1RIUkVBRCArIDE7IGkgPCBNQVhfVEhSRUFEUzsgaSsrKSB7CisJCQkJaWYgKGx0aHJlYWRzW2ldLnN0YXRlID09IFNUQVRFX1RFUk1JTkFURUQpIHsKKwkJCQkJKnJldCA9IGx0aHJlYWRzW2ldLnJldHZhbDsKKwkJCQkJbHRocmVhZHNbaV0uc3RhdGUgPSBTVEFURV9FTVBUWTsKKwkJCQkJLyogREVCVUcoInRocmVhZF9qb2luOiByZXR1cm5pbmcgcmV0dmFsICVkIG9mIHRpZCAlZCIsCisJCQkJCQlyZXQsIGkpOyAqLworCQkJCQlyZXR1cm4gUkNfU1VDQ0VTUzsKKwkJCQl9CisKKwkJCQlpZiAobHRocmVhZHNbaV0uc3RhdGUgIT0gU1RBVEVfRU1QVFkpIHsKKwkJCQkJREVCVUcgKCJ0aHJlYWRfam9pbjogJWQgdXNlZCBzbG90cyB0aWQgJWQgc3RhdGU9JWQiLAorCQkJCQkJaiwgaSwgbHRocmVhZHNbaV0uc3RhdGUpOworCQkJCQlqKys7CisJCQkJfQorCQkJfQorCQkJaWYgKGogPT0gMCkgeworCQkJCURFQlVHICgidGhyZWFkX2pvaW46IGFsbCBzbG90cyBlbXB0eSEiKTsKKwkJCQlyZXR1cm4gUkNfRkFJTFVSRTsKKwkJCX0KKwkJCS8qICBERUJVRygidGhyZWFkX2pvaW46IHlpZWxkaW5nIik7ICovCisJCQl0aHJlYWRfeWllbGQgKCk7CisJCQkvKiAgREVCVUcoInRocmVhZF9qb2luOiBiYWNrIGZyb20geWllbGQiKTsgKi8KKwkJfQorCX0KKworCWlmIChsdGhyZWFkc1sqcmV0XS5zdGF0ZSA9PSBTVEFURV9URVJNSU5BVEVEKSB7CisJCWkgPSAqcmV0OworCQkqcmV0ID0gbHRocmVhZHNbKnJldF0ucmV0dmFsOworCQlsdGhyZWFkc1sqcmV0XS5zdGF0ZSA9IFNUQVRFX0VNUFRZOworCQlERUJVRyAoInRocmVhZF9qb2luOiByZXR1cmluZyAlZCBmb3IgdGlkICVkIiwgKnJldCwgaSk7CisJCXJldHVybiBSQ19TVUNDRVNTOworCX0KKworCURFQlVHICgidGhyZWFkX2pvaW46IHRocmVhZCAlZCBpcyBub3QgdGVybWluYXRlZCEiLCAqcmV0KTsKKwlyZXR1cm4gUkNfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvQVQ5MVJNOTIwMC5oIGIvaW5jbHVkZS9BVDkxUk05MjAwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NTMyOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9BVDkxUk05MjAwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNDkgKzAsMCBAQAotLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgICAgICAgICBBVE1FTCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgU3VwcG9ydCAgLSAgUk9VU1NFVCAgLSAqLwotLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICAgVGhlIHNvZnR3YXJlIGlzIGRlbGl2ZXJlZCAiQVMgSVMiIHdpdGhvdXQgd2FycmFudHkgb3IgY29uZGl0aW9uIG9mIGFueSAqLwotLyogICBraW5kLCBlaXRoZXIgZXhwcmVzcywgaW1wbGllZCBvciBzdGF0dXRvcnkuIFRoaXMgaW5jbHVkZXMgd2l0aG91dCAqLwotLyogICBsaW1pdGF0aW9uIGFueSB3YXJyYW50eSBvciBjb25kaXRpb24gd2l0aCByZXNwZWN0IHRvIG1lcmNoYW50YWJpbGl0eSBvciAqLwotLyogICBmaXRuZXNzIGZvciBhbnkgcGFydGljdWxhciBwdXJwb3NlLCBvciBhZ2FpbnN0IHRoZSBpbmZyaW5nZW1lbnRzIG9mICovCi0vKiAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2Ygb3RoZXJzLiAqLwotLyogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICBGaWxlIE5hbWUgICAgICAgICAgIDogQVQ5MVJNOTIwMC5oICovCi0vKiAgT2JqZWN0ICAgICAgICAgICAgICA6IEFUOTFSTTkyMDAgZGVmaW5pdGlvbnMgKi8KLS8qICBHZW5lcmF0ZWQgICAgICAgICAgIDogQVQ5MSBTVyBBcHBsaWNhdGlvbiBHcm91cCAgMTAvMjkvMjAwMiAoMTY6MTA6NTEpICovCi0jaWZuZGVmIEFUOTFSTTkyMDBfSAotI2RlZmluZSBBVDkxUk05MjAwX0gKLQotdHlwZWRlZiB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgQVQ5MV9SRUc7LyogIEhhcmR3YXJlIHJlZ2lzdGVyIGRlZmluaXRpb24gKi8KLQotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0vKiAgICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgVGltZXIgQ291bnRlciBDaGFubmVsIEludGVyZmFjZSAqLwotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi10eXBlZGVmIHN0cnVjdCBfQVQ5MVNfVEMgewotCUFUOTFfUkVHCSBUQ19DQ1I7IAkvKiAgQ2hhbm5lbCBDb250cm9sIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFRDX0NNUjsgCS8qICBDaGFubmVsIE1vZGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzJdOyAJLyogICAqLwotCUFUOTFfUkVHCSBUQ19DVjsgCS8qICBDb3VudGVyIFZhbHVlICovCi0JQVQ5MV9SRUcJIFRDX1JBOyAJLyogIFJlZ2lzdGVyIEEgKi8KLQlBVDkxX1JFRwkgVENfUkI7IAkvKiAgUmVnaXN0ZXIgQiAqLwotCUFUOTFfUkVHCSBUQ19SQzsgCS8qICBSZWdpc3RlciBDICovCi0JQVQ5MV9SRUcJIFRDX1NSOyAJLyogIFN0YXR1cyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBUQ19JRVI7IAkvKiAgSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBUQ19JRFI7IAkvKiAgSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVENfSU1SOyAJLyogIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCi19IEFUOTFTX1RDLCAqQVQ5MVBTX1RDOwotCi0vKiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLS8qICAgICAgICAgICAgICAgU09GVFdBUkUgQVBJIERFRklOSVRJT04gIEZPUiBVc2FydCAqLwotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi10eXBlZGVmIHN0cnVjdCBfQVQ5MVNfVVNBUlQgewotCUFUOTFfUkVHCSBVU19DUjsgCS8qICBDb250cm9sIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX01SOyAJLyogIE1vZGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfSUVSOyAJLyogIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfSURSOyAJLyogIEludGVycnVwdCBEaXNhYmxlIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX0lNUjsgCS8qICBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBVU19DU1I7IAkvKiAgQ2hhbm5lbCBTdGF0dXMgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfUkhSOyAJLyogIFJlY2VpdmVyIEhvbGRpbmcgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfVEhSOyAJLyogIFRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfQlJHUjsgCS8qICBCYXVkIFJhdGUgR2VuZXJhdG9yIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1JUT1I7IAkvKiAgUmVjZWl2ZXIgVGltZS1vdXQgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfVFRHUjsgCS8qICBUcmFuc21pdHRlciBUaW1lLWd1YXJkIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkMFs1XTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgVVNfRklESTsgCS8qICBGSV9ESV9SYXRpbyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBVU19ORVI7IAkvKiAgTmIgRXJyb3JzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1hYUjsgCS8qICBYT05fWE9GRiBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBVU19JRjsgCS8qICBJUkRBX0ZJTFRFUiBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBSZXNlcnZlZDFbNDRdOyAJLyogICAqLwotCUFUOTFfUkVHCSBVU19SUFI7IAkvKiAgUmVjZWl2ZSBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1JDUjsgCS8qICBSZWNlaXZlIENvdW50ZXIgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfVFBSOyAJLyogIFRyYW5zbWl0IFBvaW50ZXIgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfVENSOyAJLyogIFRyYW5zbWl0IENvdW50ZXIgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfUk5QUjsgCS8qICBSZWNlaXZlIE5leHQgUG9pbnRlciBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBVU19STkNSOyAJLyogIFJlY2VpdmUgTmV4dCBDb3VudGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1ROUFI7IAkvKiAgVHJhbnNtaXQgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1ROQ1I7IAkvKiAgVHJhbnNtaXQgTmV4dCBDb3VudGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFVTX1BUQ1I7IAkvKiAgUERDIFRyYW5zZmVyIENvbnRyb2wgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgVVNfUFRTUjsgCS8qICBQREMgVHJhbnNmZXIgU3RhdHVzIFJlZ2lzdGVyICovCi19IEFUOTFTX1VTQVJULCAqQVQ5MVBTX1VTQVJUOwotCi0vKiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLS8qICAgICAgICAgICAgICAgU09GVFdBUkUgQVBJIERFRklOSVRJT04gIEZPUiBQYXJhbGxlbCBJbnB1dCBPdXRwdXQgQ29udHJvbGVyICovCi0vKiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLXR5cGVkZWYgc3RydWN0IF9BVDkxU19QSU8gewotCUFUOTFfUkVHCSBQSU9fUEVSOyAJLyogIFBJTyBFbmFibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX1BEUjsgCS8qICBQSU8gRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fUFNSOyAJLyogIFBJTyBTdGF0dXMgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzFdOyAJLyogICAqLwotCUFUOTFfUkVHCSBQSU9fT0VSOyAJLyogIE91dHB1dCBFbmFibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX09EUjsgCS8qICBPdXRwdXQgRGlzYWJsZSBSZWdpc3RlcnIgKi8KLQlBVDkxX1JFRwkgUElPX09TUjsgCS8qICBPdXRwdXQgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkMVsxXTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgUElPX0lGRVI7IAkvKiAgSW5wdXQgRmlsdGVyIEVuYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fSUZEUjsgCS8qICBJbnB1dCBGaWx0ZXIgRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fSUZTUjsgCS8qICBJbnB1dCBGaWx0ZXIgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkMlsxXTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgUElPX1NPRFI7IAkvKiAgU2V0IE91dHB1dCBEYXRhIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFBJT19DT0RSOyAJLyogIENsZWFyIE91dHB1dCBEYXRhIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFBJT19PRFNSOyAJLyogIE91dHB1dCBEYXRhIFN0YXR1cyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fUERTUjsgCS8qICBQaW4gRGF0YSBTdGF0dXMgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX0lFUjsgCS8qICBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFBJT19JRFI7IAkvKiAgSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX0lNUjsgCS8qICBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fSVNSOyAJLyogIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX01ERVI7IAkvKiAgTXVsdGktZHJpdmVyIEVuYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fTUREUjsgCS8qICBNdWx0aS1kcml2ZXIgRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fTURTUjsgCS8qICBNdWx0aS1kcml2ZXIgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkM1sxXTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgUElPX1BQVURSOyAJLyogIFB1bGwtdXAgRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fUFBVRVI7IAkvKiAgUHVsbC11cCBFbmFibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX1BQVVNSOyAJLyogIFBhZCBQdWxsLXVwIFN0YXR1cyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBSZXNlcnZlZDRbMV07IAkvKiAgICovCi0JQVQ5MV9SRUcJIFBJT19BU1I7IAkvKiAgU2VsZWN0IEEgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUElPX0JTUjsgCS8qICBTZWxlY3QgQiBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fQUJTUjsgCS8qICBBQiBTZWxlY3QgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkNVs5XTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgUElPX09XRVI7IAkvKiAgT3V0cHV0IFdyaXRlIEVuYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fT1dEUjsgCS8qICBPdXRwdXQgV3JpdGUgRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBQSU9fT1dTUjsgCS8qICBPdXRwdXQgV3JpdGUgU3RhdHVzIFJlZ2lzdGVyICovCi19IEFUOTFTX1BJTywgKkFUOTFQU19QSU87Ci0KLQotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0vKiAgICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgRGVidWcgVW5pdCAqLwotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi10eXBlZGVmIHN0cnVjdCBfQVQ5MVNfREJHVSB7Ci0JQVQ5MV9SRUcJIERCR1VfQ1I7IAkvKiAgQ29udHJvbCBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX01SOyAJLyogIE1vZGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgREJHVV9JRVI7IAkvKiAgSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX0lEUjsgCS8qICBJbnRlcnJ1cHQgRGlzYWJsZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX0lNUjsgCS8qICBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX0NTUjsgCS8qICBDaGFubmVsIFN0YXR1cyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX1JIUjsgCS8qICBSZWNlaXZlciBIb2xkaW5nIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfVEhSOyAJLyogIFRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgREJHVV9CUkdSOyAJLyogIEJhdWQgUmF0ZSBHZW5lcmF0b3IgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzddOyAJLyogICAqLwotCUFUOTFfUkVHCSBEQkdVX0MxUjsgCS8qICBDaGlwIElEMSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX0MyUjsgCS8qICBDaGlwIElEMiBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX0ZOVFI7IAkvKiAgRm9yY2UgTlRSU1QgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgUmVzZXJ2ZWQxWzQ1XTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgREJHVV9SUFI7IAkvKiAgUmVjZWl2ZSBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfUkNSOyAJLyogIFJlY2VpdmUgQ291bnRlciBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX1RQUjsgCS8qICBUcmFuc21pdCBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfVENSOyAJLyogIFRyYW5zbWl0IENvdW50ZXIgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgREJHVV9STlBSOyAJLyogIFJlY2VpdmUgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfUk5DUjsgCS8qICBSZWNlaXZlIE5leHQgQ291bnRlciBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBEQkdVX1ROUFI7IAkvKiAgVHJhbnNtaXQgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfVE5DUjsgCS8qICBUcmFuc21pdCBOZXh0IENvdW50ZXIgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgREJHVV9QVENSOyAJLyogIFBEQyBUcmFuc2ZlciBDb250cm9sIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIERCR1VfUFRTUjsgCS8qICBQREMgVHJhbnNmZXIgU3RhdHVzIFJlZ2lzdGVyICovCi19IEFUOTFTX0RCR1UsICpBVDkxUFNfREJHVTsKLQotCi0vKiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLS8qICAgICAgICAgICAgICAgU09GVFdBUkUgQVBJIERFRklOSVRJT04gIEZPUiBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgMiBJbnRlcmZhY2UgKi8KLS8qICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotdHlwZWRlZiBzdHJ1Y3QgX0FUOTFTX1NNQzIgewotCUFUOTFfUkVHCSBTTUMyX0NTUls4XTsgCS8qICBTTUMyIENoaXAgU2VsZWN0IFJlZ2lzdGVyICovCi19IEFUOTFTX1NNQzIsICpBVDkxUFNfU01DMjsKLQotLyogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0vKiAgICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgRXRoZXJuZXQgTUFDICovCi0vKiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLXR5cGVkZWYgc3RydWN0IF9BVDkxU19FTUFDIHsKLQlBVDkxX1JFRwkgRU1BQ19DVEw7IAkvKiAgTmV0d29yayBDb250cm9sIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfQ0ZHOyAJLyogIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX1NSOyAJLyogIE5ldHdvcmsgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfVEFSOyAJLyogIFRyYW5zbWl0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19UQ1I7IAkvKiAgVHJhbnNtaXQgQ29udHJvbCBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX1RTUjsgCS8qICBUcmFuc21pdCBTdGF0dXMgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19SQlFQOyAJLyogIFJlY2VpdmUgQnVmZmVyIFF1ZXVlIFBvaW50ZXIgKi8KLQlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzFdOyAJLyogICAqLwotCUFUOTFfUkVHCSBFTUFDX1JTUjsgCS8qICBSZWNlaXZlIFN0YXR1cyBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX0lTUjsgCS8qICBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfSUVSOyAJLyogIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19JRFI7IAkvKiAgSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19JTVI7IAkvKiAgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19NQU47IAkvKiAgUEhZIE1haW50ZW5hbmNlIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIFJlc2VydmVkMVsyXTsgCS8qICAgKi8KLQlBVDkxX1JFRwkgRU1BQ19GUkE7IAkvKiAgRnJhbWVzIFRyYW5zbWl0dGVkIE9LIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfU0NPTDsgCS8qICBTaW5nbGUgQ29sbGlzaW9uIEZyYW1lIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfTUNPTDsgCS8qICBNdWx0aXBsZSBDb2xsaXNpb24gRnJhbWUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19PSzsgCS8qICBGcmFtZXMgUmVjZWl2ZWQgT0sgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19TRVFFOyAJLyogIEZyYW1lIENoZWNrIFNlcXVlbmNlIEVycm9yIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfQUxFOyAJLyogIEFsaWdubWVudCBFcnJvciBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX0RURTsgCS8qICBEZWZlcnJlZCBUcmFuc21pc3Npb24gRnJhbWUgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19MQ09MOyAJLyogIExhdGUgQ29sbGlzaW9uIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfRUNPTDsgCS8qICBFeGNlc3NpdmUgQ29sbGlzaW9uIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfQ1NFOyAJLyogIENhcnJpZXIgU2Vuc2UgRXJyb3IgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19UVUU7IAkvKiAgVHJhbnNtaXQgVW5kZXJydW4gRXJyb3IgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19DREU7IAkvKiAgQ29kZSBFcnJvciBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX0VMUjsgCS8qICBFeGNlc3NpdmUgTGVuZ3RoIEVycm9yIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfUkpCOyAJLyogIFJlY2VpdmUgSmFiYmVyIFJlZ2lzdGVyICovCi0JQVQ5MV9SRUcJIEVNQUNfVVNGOyAJLyogIFVuZGVyc2l6ZSBGcmFtZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBFTUFDX1NRRUU7IAkvKiAgU1FFIFRlc3QgRXJyb3IgUmVnaXN0ZXIgKi8KLQlBVDkxX1JFRwkgRU1BQ19EUkZDOyAJLyogIERpc2NhcmRlZCBSWCBGcmFtZSBSZWdpc3RlciAqLwotCUFUOTFfUkVHCSBSZXNlcnZlZDJbM107IAkvKiAgICovCi0JQVQ5MV9SRUcJIEVNQUNfSFNIOyAJLyogIEhhc2ggQWRkcmVzcyBIaWdoWzYzOjMyXSAqLwotCUFUOTFfUkVHCSBFTUFDX0hTTDsgCS8qICBIYXNoIEFkZHJlc3MgTG93WzMxOjBdICovCi0JQVQ5MV9SRUcJIEVNQUNfU0ExTDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDEgTG93LCBGaXJzdCA0IGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0ExSDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDEgSGlnaCwgTGFzdCAyIGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0EyTDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDIgTG93LCBGaXJzdCA0IGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0EySDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDIgSGlnaCwgTGFzdCAyIGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0EzTDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDMgTG93LCBGaXJzdCA0IGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0EzSDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDMgSGlnaCwgTGFzdCAyIGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0E0TDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDQgTG93LCBGaXJzdCA0IGJ5dGVzICovCi0JQVQ5MV9SRUcJIEVNQUNfU0E0SDsgCS8qICBTcGVjaWZpYyBBZGRyZXNzIDQgSGlnaCwgTGFzdCAyIGJ5dGVzciAqLwotfSBBVDkxU19FTUFDLCAqQVQ5MVBTX0VNQUM7Ci0KLS8qICAtLS0tLS0tLSBEQkdVX0lFUiA6IChEQkdVIE9mZnNldDogMHg4KSBEZWJ1ZyBVbml0IEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgLS0tLS0tLS0gICovCi0jZGVmaW5lIEFUOTFDX1VTX1JYUkRZICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAwKSAvKiAgKERCR1UpIFJYUkRZIEludGVycnVwdCAqLwotI2RlZmluZSBBVDkxQ19VU19UWFJEWSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMSkgLyogIChEQkdVKSBUWFJEWSBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfRU5EUlggICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDMpIC8qICAoREJHVSkgRW5kIG9mIFJlY2VpdmUgVHJhbnNmZXIgSW50ZXJydXB0ICovCi0jZGVmaW5lIEFUOTFDX1VTX0VORFRYICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA0KSAvKiAgKERCR1UpIEVuZCBvZiBUcmFuc21pdCBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfT1ZSRSAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDUpIC8qICAoREJHVSkgT3ZlcnJ1biBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfRlJBTUUgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDYpIC8qICAoREJHVSkgRnJhbWluZyBFcnJvciBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfUEFSRSAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDcpIC8qICAoREJHVSkgUGFyaXR5IEVycm9yIEludGVycnVwdCAqLwotI2RlZmluZSBBVDkxQ19VU19UWEVNUFRZICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgOSkgLyogIChEQkdVKSBUWEVNUFRZIEludGVycnVwdCAqLwotI2RlZmluZSBBVDkxQ19VU19UWEJVRkUgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAxMSkgLyogIChEQkdVKSBUWEJVRkUgSW50ZXJydXB0ICovCi0jZGVmaW5lIEFUOTFDX1VTX1JYQlVGRiAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8IDEyKSAvKiAgKERCR1UpIFJYQlVGRiBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfQ09NTV9UWCAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgMzApIC8qICAoREJHVSkgQ09NTV9UWCBJbnRlcnJ1cHQgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfQ09NTV9SWCAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgMzEpIC8qICAoREJHVSkgQ09NTV9SWCBJbnRlcnJ1cHQgKi8KLQotLyogIC0tLS0tLS0tIERCR1VfQ1IgOiAoREJHVSBPZmZzZXQ6IDB4MCkgRGVidWcgVW5pdCBDb250cm9sIFJlZ2lzdGVyIC0tLS0tLS0tICAqLwotI2RlZmluZSBBVDkxQ19VU19SU1RSWCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMikgLyogIChEQkdVKSBSZXNldCBSZWNlaXZlciAqLwotI2RlZmluZSBBVDkxQ19VU19SU1RUWCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMykgLyogIChEQkdVKSBSZXNldCBUcmFuc21pdHRlciAqLwotI2RlZmluZSBBVDkxQ19VU19SWEVOICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNCkgLyogIChEQkdVKSBSZWNlaXZlciBFbmFibGUgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfUlhESVMgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDUpIC8qICAoREJHVSkgUmVjZWl2ZXIgRGlzYWJsZSAqLwotI2RlZmluZSBBVDkxQ19VU19UWEVOICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNikgLyogIChEQkdVKSBUcmFuc21pdHRlciBFbmFibGUgKi8KLSNkZWZpbmUgQVQ5MUNfVVNfVFhESVMgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDcpIC8qICAoREJHVSkgVHJhbnNtaXR0ZXIgRGlzYWJsZSAqLwotCi0jZGVmaW5lIAlBVDkxQ19VU19DTEtTX0NMT0NLICAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDAgPDwgIDQpIC8qICAoVVNBUlQpIENsb2NrICovCi0jZGVmaW5lIAlBVDkxQ19VU19DSFJMXzhfQklUUyAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDMgPDwgIDYpIC8qICAoVVNBUlQpIENoYXJhY3RlciBMZW5ndGg6IDggYml0cyAqLwotI2RlZmluZSAJQVQ5MUNfVVNfUEFSX05PTkUgICAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDQgPDwgIDkpIC8qICAoREJHVSkgTm8gUGFyaXR5ICovCi0jZGVmaW5lIAlBVDkxQ19VU19OQlNUT1BfMV9CSVQgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MCA8PCAxMikgLyogIChVU0FSVCkgMSBzdG9wIGJpdCAqLwotCi0jZGVmaW5lIEFUOTFDX1BNQ19QQ0VSICAoKEFUOTFfUkVHICopIAkweEZGRkZGQzEwKSAvKiAgKFBNQykgUGVyaXBoZXJhbCBDbG9jayBFbmFibGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgQVQ5MUNfUElPQV9QRFIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY0MDQpIC8qICAoUElPQSkgUElPIERpc2FibGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgQVQ5MUNfUElPX1BBMzAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMzApIC8qICBQaW4gQ29udHJvbGxlZCBieSBQQTMwICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQzAgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAwKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEMwICovCi0jZGVmaW5lIEFUOTFDX1BDMF9CRkNLICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BDMCkgLyogICBCdXJzdCBGbGFzaCBDbG9jayAqLwotI2RlZmluZSBBVDkxQ19QQTMwX0RSWEQgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEEzMCkgLyogICBEQkdVIERlYnVnIFJlY2VpdmUgRGF0YSAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEEzMSAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAzMSkgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBBMzEgKi8KLSNkZWZpbmUgQVQ5MUNfUEEzMV9EVFhEICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBMzEpIC8qICAgREJHVSBEZWJ1ZyBUcmFuc21pdCBEYXRhICovCi0KLSNkZWZpbmUgQVQ5MUNfSURfU1lTICAgICgodW5zaWduZWQgaW50KSAgMSkgLyogIFN5c3RlbSBQZXJpcGhlcmFsICovCi0jZGVmaW5lIEFUOTFDX0lEX1RDMCAgICAoKHVuc2lnbmVkIGludCkgMTcpIC8qICBUaW1lciBDb3VudGVyIDAgKi8KLSNkZWZpbmUgQVQ5MUNfSURfRU1BQyAgICgodW5zaWduZWQgaW50KSAyNCkgLyogIEV0aGVybmV0IE1BQyAqLwotCi0jZGVmaW5lIEFUOTFDX1BJT19QQzEgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAxKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEMxICovCi0jZGVmaW5lIEFUOTFDX1BDMV9CRlJEWV9TTU9FICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEMxKSAvKiAgIEJ1cnN0IEZsYXNoIFJlYWR5ICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQzMgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAzKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEMzICovCi0jZGVmaW5lIEFUOTFDX1BDM19CRkJBQV9TTVdFICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEMzKSAvKiAgIEJ1cnN0IEZsYXNoIEFkZHJlc3MgQWR2YW5jZSAvIFNtYXJ0TWVkaWEgV3JpdGUgRW5hYmxlICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQzIgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAyKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEMyICovCi0jZGVmaW5lIEFUOTFDX1BDMl9CRkFWRCAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BDMikgLyogICBCdXJzdCBGbGFzaCBBZGRyZXNzIFZhbGlkICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjEgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAxKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxICovCi0KLSNkZWZpbmUgQVQ5MUNfVENfVElNRVJfRElWMV9DTE9DSyAgICAgICgodW5zaWduZWQgaW50KSAweDAgPDwgIDApIC8qICAoVEMpIE1DSy8yICovCi0jZGVmaW5lIEFUOTFDX1RDX1RJTUVSX0RJVjJfQ0xPQ0sgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAwKSAvKiAgKFRDKSBNQ0svOCAqLwotI2RlZmluZSBBVDkxQ19UQ19USU1FUl9ESVYzX0NMT0NLICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MiA8PCAgMCkgLyogIChUQykgTUNLLzMyICovCi0jZGVmaW5lIEFUOTFDX1RDX1RJTUVSX0RJVjRfQ0xPQ0sgICAgICAoKHVuc2lnbmVkIGludCkgMHgzIDw8ICAwKSAvKiAgKFRDKSBNQ0svMTI4ICovCi0jZGVmaW5lIEFUOTFDX1RDX1NMT1dfQ0xPQ0sgICAgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHg0IDw8ICAwKSAvKiAgKFRDKSBTTE9XIENMSyAqLwotI2RlZmluZSBBVDkxQ19UQ19YQzBfQ0xPQ0sgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4NSA8PCAgMCkgLyogIChUQykgWEMwICovCi0jZGVmaW5lIEFUOTFDX1RDX1hDMV9DTE9DSyAgICAgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHg2IDw8ICAwKSAvKiAgKFRDKSBYQzEgKi8KLSNkZWZpbmUgQVQ5MUNfVENfWEMyX0NMT0NLICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDcgPDwgIDApIC8qICAoVEMpIFhDMiAqLwotI2RlZmluZSAJQVQ5MUNfVENCX1RDMFhDMFNfTk9ORSAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSkgLyogIChUQ0IpIE5vbmUgc2lnbmFsIGNvbm5lY3RlZCB0byBYQzAgKi8KLSNkZWZpbmUgCUFUOTFDX1RDQl9UQzFYQzFTX05PTkUgICAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDIpIC8qICAoVENCKSBOb25lIHNpZ25hbCBjb25uZWN0ZWQgdG8gWEMxICovCi0jZGVmaW5lIAlBVDkxQ19UQ0JfVEMyWEMyU19OT05FICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA0KSAvKiAgKFRDQikgTm9uZSBzaWduYWwgY29ubmVjdGVkIHRvIFhDMiAqLwotI2RlZmluZSBBVDkxQ19UQ19DTEtESVMgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMSkgLyogIChUQykgQ291bnRlciBDbG9jayBEaXNhYmxlIENvbW1hbmQgKi8KLSNkZWZpbmUgQVQ5MUNfVENfU1dUUkcgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDIpIC8qICAoVEMpIFNvZnR3YXJlIFRyaWdnZXIgQ29tbWFuZCAqLwotI2RlZmluZSBBVDkxQ19UQ19DTEtFTiAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogIChUQykgQ291bnRlciBDbG9jayBFbmFibGUgQ29tbWFuZCAqLwotCi0jZGVmaW5lIEFUOTFDX0VNQUNfQk5RICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA0KSAvKiAgKEVNQUMpICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX0NPTVAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNSkgLyogIChFTUFDKSAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19SRUMgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDEpIC8qICAoRU1BQykgICovCi0jZGVmaW5lIEFUOTFDX0VNQUNfUkUgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAyKSAvKiAgKEVNQUMpIFJlY2VpdmUgZW5hYmxlLiAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19URSAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDMpIC8qICAoRU1BQykgVHJhbnNtaXQgZW5hYmxlLiAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19DTEsgICAgICAgICgodW5zaWduZWQgaW50KSAweDMgPDwgMTApIC8qICAoRU1BQykgICovCi0jZGVmaW5lIEFUOTFDX0VNQUNfUk1JSSAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8IDEzKSAvKiAgKEVNQUMpICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX05CQyAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNSkgLyogIChFTUFDKSBObyBicm9hZGNhc3QuICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX0NBRiAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNCkgLyogIChFTUFDKSBDb3B5IGFsbCBmcmFtZXMuICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX0JOQSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogIChFTUFDKSAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19SRUMgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDEpIC8qICAoRU1BQykgICovCi0jZGVmaW5lIEFUOTFDX0VNQUNfUlNSX09WUiAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAyKSAvKiAgKEVNQUMpICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX0NTUiAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNSkgLyogIChFTUFDKSBDbGVhciBzdGF0aXN0aWNzIHJlZ2lzdGVycy4gICovCi0jZGVmaW5lIEFUOTFDX0VNQUNfU1BEICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAwKSAvKiAgKEVNQUMpIFNwZWVkLiAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19GRCAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDEpIC8qICAoRU1BQykgRnVsbCBkdXBsZXguICAqLwotI2RlZmluZSBBVDkxQ19FTUFDX0xJTksgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogIChFTUFDKSAgKi8KLSNkZWZpbmUgQVQ5MUNfRU1BQ19NUEUgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDQpIC8qICAoRU1BQykgTWFuYWdlbWVudCBwb3J0IGVuYWJsZS4gICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTE2ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE2KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEExNiAqLwotI2RlZmluZSBBVDkxQ19QQTE2X0VNRElPICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExNikgLyogICBFdGhlcm5ldCBNQUMgTWFuYWdlbWVudCBEYXRhIElucHV0L091dHB1dCAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEExNSAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNSkgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBBMTUgKi8KLSNkZWZpbmUgQVQ5MUNfUEExNV9FTURDICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBMTUpIC8qICAgRXRoZXJuZXQgTUFDIE1hbmFnZW1lbnQgRGF0YSBDbG9jayAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEExNCAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNCkgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBBMTQgKi8KLSNkZWZpbmUgQVQ5MUNfUEExNF9FUlhFUiAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBMTQpIC8qICAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRXJyb3IgKi8KLSNkZWZpbmUgQVQ5MUNfUElPX1BBMTMgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTMpIC8qICBQaW4gQ29udHJvbGxlZCBieSBQQTEzICovCi0jZGVmaW5lIEFUOTFDX1BBMTNfRVJYMSAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTEzKSAvKiAgIEV0aGVybmV0IE1BQyBSZWNlaXZlIERhdGEgMSAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEExMiAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxMikgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBBMTIgKi8KLSNkZWZpbmUgQVQ5MUNfUEExMl9FUlgwICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBMTIpIC8qICAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSAwICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTExICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDExKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEExMSAqLwotI2RlZmluZSBBVDkxQ19QQTExX0VDUlNfRUNSU0RWICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExMSkgLyogICBFdGhlcm5ldCBNQUMgQ2FycmllciBTZW5zZS9DYXJyaWVyIFNlbnNlIGFuZCBEYXRhIFZhbGlkICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTEwICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDEwKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEExMCAqLwotI2RlZmluZSBBVDkxQ19QQTEwX0VUWDEgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExMCkgLyogICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgRGF0YSAxICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTkgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICA5KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEE5ICovCi0jZGVmaW5lIEFUOTFDX1BBOV9FVFgwICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBOSkgLyogICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgRGF0YSAwICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTggICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICA4KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEE4ICovCi0jZGVmaW5lIEFUOTFDX1BBOF9FVFhFTiAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BBOCkgLyogICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgRW5hYmxlICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQTcgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICA3KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEE3ICovCi0jZGVmaW5lIEFUOTFDX1BBN19FVFhDS19FUkVGQ0sgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTcpIC8qICAgRXRoZXJuZXQgTUFDIFRyYW5zbWl0IENsb2NrL1JlZmVyZW5jZSBDbG9jayAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEIyNSAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAyNSkgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBCMjUgKi8KLSNkZWZpbmUgQVQ5MUNfUEIyNV9EU1IxICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMjUpIC8qICAgVVNBUlQgMSBEYXRhIFNldCByZWFkeSAqLwotI2RlZmluZSBBVDkxQ19QQjI1X0VGMTAwICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIyNSkgLyogICBFdGhlcm5ldCBNQUMgRm9yY2UgMTAwIE1iaXRzICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjE5ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE5KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxOSAqLwotI2RlZmluZSBBVDkxQ19QQjE5X0RUUjEgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxOSkgLyogICBVU0FSVCAxIERhdGEgVGVybWluYWwgcmVhZHkgKi8KLSNkZWZpbmUgQVQ5MUNfUEIxOV9FUlhDSyAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTkpIC8qICAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgQ2xvY2sgKi8KLSNkZWZpbmUgQVQ5MUNfUElPX1BCMTggICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTgpIC8qICBQaW4gQ29udHJvbGxlZCBieSBQQjE4ICovCi0jZGVmaW5lIEFUOTFDX1BCMThfUkkxICAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE4KSAvKiAgIFVTQVJUIDEgUmluZyBJbmRpY2F0b3IgKi8KLSNkZWZpbmUgQVQ5MUNfUEIxOF9FQ09MICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTgpIC8qICAgRXRoZXJuZXQgTUFDIENvbGxpc2lvbiBEZXRlY3RlZCAqLwotI2RlZmluZSBBVDkxQ19QSU9fUEIxNyAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNykgLyogIFBpbiBDb250cm9sbGVkIGJ5IFBCMTcgKi8KLSNkZWZpbmUgQVQ5MUNfUEIxN19SRjIgICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTcpIC8qICAgU1NDIFJlY2VpdmUgRnJhbWUgU3luYyAyICovCi0jZGVmaW5lIEFUOTFDX1BCMTdfRVJYRFYgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE3KSAvKiAgIEV0aGVybmV0IE1BQyBSZWNlaXZlIERhdGEgVmFsaWQgKi8KLSNkZWZpbmUgQVQ5MUNfUElPX1BCMTYgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTYpIC8qICBQaW4gQ29udHJvbGxlZCBieSBQQjE2ICovCi0jZGVmaW5lIEFUOTFDX1BCMTZfUksyICAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE2KSAvKiAgIFNTQyBSZWNlaXZlIENsb2NrIDIgKi8KLSNkZWZpbmUgQVQ5MUNfUEIxNl9FUlgzICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTYpIC8qICAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSAzICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjE1ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE1KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxNSAqLwotI2RlZmluZSBBVDkxQ19QQjE1X1JEMiAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxNSkgLyogICBTU0MgUmVjZWl2ZSBEYXRhIDIgKi8KLSNkZWZpbmUgQVQ5MUNfUEIxNV9FUlgyICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTUpIC8qICAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSAyICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjE0ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE0KSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxNCAqLwotI2RlZmluZSBBVDkxQ19QQjE0X1REMiAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxNCkgLyogICBTU0MgVHJhbnNtaXQgRGF0YSAyICovCi0jZGVmaW5lIEFUOTFDX1BCMTRfRVRYRVIgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE0KSAvKiAgIEV0aGVybmV0IE1BQyBUcmFuc21pa3QgQ29kaW5nIEVycm9yICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjEzICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDEzKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxMyAqLwotI2RlZmluZSBBVDkxQ19QQjEzX1RLMiAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxMykgLyogICBTU0MgVHJhbnNtaXQgQ2xvY2sgMiAqLwotI2RlZmluZSBBVDkxQ19QQjEzX0VUWDMgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxMykgLyogICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgRGF0YSAzICovCi0jZGVmaW5lIEFUOTFDX1BJT19QQjEyICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDEyKSAvKiAgUGluIENvbnRyb2xsZWQgYnkgUEIxMiAqLwotI2RlZmluZSBBVDkxQ19QQjEyX1RGMiAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxMikgLyogICBTU0MgVHJhbnNtaXQgRnJhbWUgU3luYyAyICovCi0jZGVmaW5lIEFUOTFDX1BCMTJfRVRYMiAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjEyKSAvKiAgIEV0aGVybmV0IE1BQyBUcmFuc21pdCBEYXRhIDIgKi8KLQotI2RlZmluZSBBVDkxQ19QSU9CX0JTUiAgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjY3NCkgLyogIChQSU9CKSBTZWxlY3QgQiBSZWdpc3RlciAqLwotI2RlZmluZSBBVDkxQ19CQVNFX0VNQUMgICAgICAoKEFUOTFQU19FTUFDKSAJMHhGRkZCQzAwMCkgLyogIChFTUFDKSBCYXNlIEFkZHJlc3MgKi8KLSNkZWZpbmUgQVQ5MUNfUElPQl9QRFIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY2MDQpIC8qICAoUElPQikgUElPIERpc2FibGUgUmVnaXN0ZXIgKi8KLQotI2RlZmluZSAJQVQ5MUNfRUJJX0NTM0FfU01DX1NtYXJ0TWVkaWEgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMykgLyogIChFQkkpIENoaXAgU2VsZWN0IDMgaXMgYXNzaWduZWQgdG8gdGhlIFN0YXRpYyBNZW1vcnkgQ29udHJvbGxlciBhbmQgdGhlIFNtYXJ0TWVkaWEgTG9naWMgaXMgYWN0aXZhdGVkLiAqLwotI2RlZmluZQlBVDkxQ19TTUMyX0FDU1NfU1RBTkRBUkQgKCh1bnNpZ25lZCBpbnQpIDB4MCA8PCAxNikgLyogIChTTUMyKSBTdGFuZGFyZCwgYXNzZXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYWNjZXNzIGFuZCBkZWFzc2VydGVkIGF0IHRoZSBlbmQuICovCi0jZGVmaW5lIEFUOTFDX1NNQzJfREJXXzggICAgICAoKHVuc2lnbmVkIGludCkgMHgyIDw8IDEzKSAvKiAgKFNNQzIpIDgtYml0LiAqLwotI2RlZmluZSBBVDkxQ19TTUMyX1dTRU4gICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNykgLyogIChTTUMyKSBXYWl0IFN0YXRlIEVuYWJsZSAqLwotI2RlZmluZSBBVDkxQ19QSU9DX0FTUiAgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjg3MCkgLyogIChQSU9DKSBTZWxlY3QgQSBSZWdpc3RlciAqLwotCi0jZGVmaW5lIEFUOTFDX0JBU0VfVEMwICAgICAgICgoQVQ5MVBTX1RDKSAJMHhGRkZBMDAwMCkgLyogIChUQzApIEJhc2UgQWRkcmVzcyAqLwotI2RlZmluZSBBVDkxQ19CQVNFX0RCR1UgICAgICAoKEFUOTFQU19EQkdVKSAJMHhGRkZGRjIwMCkgLyogIChEQkdVKSBCYXNlIEFkZHJlc3MgKi8KLSNkZWZpbmUgQVQ5MUNfQkFTRV9QSU9BICAgICAgKChBVDkxUFNfUElPKSAJMHhGRkZGRjQwMCkgLyogIChQSU9BKSBCYXNlIEFkZHJlc3MgKi8KLSNkZWZpbmUgQVQ5MUNfRUJJX0NTQSAgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkZGNjApIC8qICAoRUJJKSBDaGlwIFNlbGVjdCBBc3NpZ25tZW50IFJlZ2lzdGVyICovCi0jZGVmaW5lIEFUOTFDX0JBU0VfU01DMiAgICAgICgoQVQ5MVBTX1NNQzIpIAkweEZGRkZGRjcwKSAvKiAgKFNNQzIpIEJhc2UgQWRkcmVzcyAqLwotI2RlZmluZSBBVDkxQ19CQVNFX1VTMSAgICAgICAoKEFUOTFQU19VU0FSVCkgCTB4RkZGQzQwMDApIC8qICAoVVMxKSBCYXNlIEFkZHJlc3MgKi8KLSNkZWZpbmUgQVQ5MUNfVENCMF9CTVIgICgoQVQ5MV9SRUcgKikgCTB4RkZGQTAwQzQpIC8qICAoVENCMCkgVEMgQmxvY2sgTW9kZSBSZWdpc3RlciAqLwotI2RlZmluZSBBVDkxQ19UQ0IwX0JDUiAgKChBVDkxX1JFRyAqKSAJMHhGRkZBMDBDMCkgLyogIChUQ0IwKSBUQyBCbG9jayBDb250cm9sIFJlZ2lzdGVyICovCi0jZGVmaW5lIEFUOTFDX1BJT0NfUERSICAoKEFUOTFfUkVHICopIAkweEZGRkZGODA0KSAvKiAgKFBJT0MpIFBJTyBEaXNhYmxlIFJlZ2lzdGVyICovCi0jZGVmaW5lIEFUOTFDX1BJT0NfUEVSICAoKEFUOTFfUkVHICopIAkweEZGRkZGODAwKSAvKiAgKFBJT0MpIFBJTyBFbmFibGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgQVQ5MUNfUElPQ19PRFIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY4MTQpIC8qICAoUElPQykgT3V0cHV0IERpc2FibGUgUmVnaXN0ZXJyICovCi0jZGVmaW5lIEFUOTFDX1BJT0JfUEVSICAoKEFUOTFfUkVHICopIAkweEZGRkZGNjAwKSAvKiAgKFBJT0IpIFBJTyBFbmFibGUgUmVnaXN0ZXIgKi8KLSNkZWZpbmUgQVQ5MUNfUElPQl9PRFIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY2MTQpIC8qICAoUElPQikgT3V0cHV0IERpc2FibGUgUmVnaXN0ZXJyICovCi0jZGVmaW5lIEFUOTFDX1BJT0JfUERTUiAoKEFUOTFfUkVHICopIAkweEZGRkZGNjNDKSAvKiAgKFBJT0IpIFBpbiBEYXRhIFN0YXR1cyBSZWdpc3RlciAqLwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL0FUOTFSTTkyMDAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvQVQ5MVJNOTIwMC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOTNjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL0FUOTFSTTkyMDAuaApAQCAtMCwwICsxLDM1MiBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgQVRNRUwgTWljcm9jb250cm9sbGVyIFNvZnR3YXJlIFN1cHBvcnQgIC0gIFJPVVNTRVQgIC0gKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qICBUaGUgc29mdHdhcmUgaXMgZGVsaXZlcmVkICJBUyBJUyIgd2l0aG91dCB3YXJyYW50eSBvciBjb25kaXRpb24gb2YgYW55ICovCisvKiAga2luZCwgZWl0aGVyIGV4cHJlc3MsIGltcGxpZWQgb3Igc3RhdHV0b3J5LiBUaGlzIGluY2x1ZGVzIHdpdGhvdXQgKi8KKy8qICBsaW1pdGF0aW9uIGFueSB3YXJyYW50eSBvciBjb25kaXRpb24gd2l0aCByZXNwZWN0IHRvIG1lcmNoYW50YWJpbGl0eSBvciAqLworLyogIGZpdG5lc3MgZm9yIGFueSBwYXJ0aWN1bGFyIHB1cnBvc2UsIG9yIGFnYWluc3QgdGhlIGluZnJpbmdlbWVudHMgb2YgKi8KKy8qICBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG9mIG90aGVycy4gKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEZpbGUgTmFtZSAgICAgICAgICAgOiBBVDkxUk05MjAwLmggKi8KKy8qIE9iamVjdCAgICAgICAgICAgICAgOiBBVDkxUk05MjAwIGRlZmluaXRpb25zICovCisvKiBHZW5lcmF0ZWQgICAgICAgICAgIDogQVQ5MSBTVyBBcHBsaWNhdGlvbiBHcm91cCAgMTAvMjkvMjAwMiAoMTY6MTA6NTEpICovCisjaWZuZGVmIEFUOTFSTTkyMDBfSAorI2RlZmluZSBBVDkxUk05MjAwX0gKKwordHlwZWRlZiB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgQVQ5MV9SRUc7LyogSGFyZHdhcmUgcmVnaXN0ZXIgZGVmaW5pdGlvbiAqLworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworLyogICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgVGltZXIgQ291bnRlciBDaGFubmVsIEludGVyZmFjZSAqLworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KK3R5cGVkZWYgc3RydWN0IF9BVDkxU19UQyB7CisJQVQ5MV9SRUcJIFRDX0NDUjsgCS8qIENoYW5uZWwgQ29udHJvbCBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBUQ19DTVI7IAkvKiBDaGFubmVsIE1vZGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzJdOyAJLyogICovCisJQVQ5MV9SRUcJIFRDX0NWOyAJLyogQ291bnRlciBWYWx1ZSAqLworCUFUOTFfUkVHCSBUQ19SQTsgCS8qIFJlZ2lzdGVyIEEgKi8KKwlBVDkxX1JFRwkgVENfUkI7IAkvKiBSZWdpc3RlciBCICovCisJQVQ5MV9SRUcJIFRDX1JDOyAJLyogUmVnaXN0ZXIgQyAqLworCUFUOTFfUkVHCSBUQ19TUjsgCS8qIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBUQ19JRVI7IAkvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFRDX0lEUjsgCS8qIEludGVycnVwdCBEaXNhYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFRDX0lNUjsgCS8qIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCit9IEFUOTFTX1RDLCAqQVQ5MVBTX1RDOworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworLyogICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgVXNhcnQgKi8KKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCit0eXBlZGVmIHN0cnVjdCBfQVQ5MVNfVVNBUlQgeworCUFUOTFfUkVHCSBVU19DUjsgCS8qIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfTVI7IAkvKiBNb2RlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX0lFUjsgCS8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfSURSOyAJLyogSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfSU1SOyAJLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfQ1NSOyAJLyogQ2hhbm5lbCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfUkhSOyAJLyogUmVjZWl2ZXIgSG9sZGluZyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19USFI7IAkvKiBUcmFuc21pdHRlciBIb2xkaW5nIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX0JSR1I7IAkvKiBCYXVkIFJhdGUgR2VuZXJhdG9yIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1JUT1I7IAkvKiBSZWNlaXZlciBUaW1lLW91dCBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19UVEdSOyAJLyogVHJhbnNtaXR0ZXIgVGltZS1ndWFyZCBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDBbNV07IAkvKiAgKi8KKwlBVDkxX1JFRwkgVVNfRklESTsgCS8qIEZJX0RJX1JhdGlvIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX05FUjsgCS8qIE5iIEVycm9ycyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19YWFI7IAkvKiBYT05fWE9GRiBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19JRjsgCS8qIElSREFfRklMVEVSIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFJlc2VydmVkMVs0NF07IAkvKiAgKi8KKwlBVDkxX1JFRwkgVVNfUlBSOyAJLyogUmVjZWl2ZSBQb2ludGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1JDUjsgCS8qIFJlY2VpdmUgQ291bnRlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19UUFI7IAkvKiBUcmFuc21pdCBQb2ludGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1RDUjsgCS8qIFRyYW5zbWl0IENvdW50ZXIgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfUk5QUjsgCS8qIFJlY2VpdmUgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1JOQ1I7IAkvKiBSZWNlaXZlIE5leHQgQ291bnRlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBVU19UTlBSOyAJLyogVHJhbnNtaXQgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1ROQ1I7IAkvKiBUcmFuc21pdCBOZXh0IENvdW50ZXIgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgVVNfUFRDUjsgCS8qIFBEQyBUcmFuc2ZlciBDb250cm9sIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFVTX1BUU1I7IAkvKiBQREMgVHJhbnNmZXIgU3RhdHVzIFJlZ2lzdGVyICovCit9IEFUOTFTX1VTQVJULCAqQVQ5MVBTX1VTQVJUOworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworLyogICAgICAgICAgICAgIFNPRlRXQVJFIEFQSSBERUZJTklUSU9OICBGT1IgUGFyYWxsZWwgSW5wdXQgT3V0cHV0IENvbnRyb2xlciAqLworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KK3R5cGVkZWYgc3RydWN0IF9BVDkxU19QSU8geworCUFUOTFfUkVHCSBQSU9fUEVSOyAJLyogUElPIEVuYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fUERSOyAJLyogUElPIERpc2FibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUElPX1BTUjsgCS8qIFBJTyBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQwWzFdOyAJLyogICovCisJQVQ5MV9SRUcJIFBJT19PRVI7IAkvKiBPdXRwdXQgRW5hYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19PRFI7IAkvKiBPdXRwdXQgRGlzYWJsZSBSZWdpc3RlcnIgKi8KKwlBVDkxX1JFRwkgUElPX09TUjsgCS8qIE91dHB1dCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQxWzFdOyAJLyogICovCisJQVQ5MV9SRUcJIFBJT19JRkVSOyAJLyogSW5wdXQgRmlsdGVyIEVuYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fSUZEUjsgCS8qIElucHV0IEZpbHRlciBEaXNhYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19JRlNSOyAJLyogSW5wdXQgRmlsdGVyIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDJbMV07IAkvKiAgKi8KKwlBVDkxX1JFRwkgUElPX1NPRFI7IAkvKiBTZXQgT3V0cHV0IERhdGEgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUElPX0NPRFI7IAkvKiBDbGVhciBPdXRwdXQgRGF0YSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fT0RTUjsgCS8qIE91dHB1dCBEYXRhIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fUERTUjsgCS8qIFBpbiBEYXRhIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fSUVSOyAJLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fSURSOyAJLyogSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUElPX0lNUjsgCS8qIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19JU1I7IAkvKiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19NREVSOyAJLyogTXVsdGktZHJpdmVyIEVuYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fTUREUjsgCS8qIE11bHRpLWRyaXZlciBEaXNhYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19NRFNSOyAJLyogTXVsdGktZHJpdmVyIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDNbMV07IAkvKiAgKi8KKwlBVDkxX1JFRwkgUElPX1BQVURSOyAJLyogUHVsbC11cCBEaXNhYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19QUFVFUjsgCS8qIFB1bGwtdXAgRW5hYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19QUFVTUjsgCS8qIFBhZCBQdWxsLXVwIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDRbMV07IAkvKiAgKi8KKwlBVDkxX1JFRwkgUElPX0FTUjsgCS8qIFNlbGVjdCBBIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19CU1I7IAkvKiBTZWxlY3QgQiBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fQUJTUjsgCS8qIEFCIFNlbGVjdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQ1WzldOyAJLyogICovCisJQVQ5MV9SRUcJIFBJT19PV0VSOyAJLyogT3V0cHV0IFdyaXRlIEVuYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBQSU9fT1dEUjsgCS8qIE91dHB1dCBXcml0ZSBEaXNhYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFBJT19PV1NSOyAJLyogT3V0cHV0IFdyaXRlIFN0YXR1cyBSZWdpc3RlciAqLworfSBBVDkxU19QSU8sICpBVDkxUFNfUElPOworCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKiAgICAgICAgICAgICAgU09GVFdBUkUgQVBJIERFRklOSVRJT04gIEZPUiBEZWJ1ZyBVbml0ICovCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwordHlwZWRlZiBzdHJ1Y3QgX0FUOTFTX0RCR1UgeworCUFUOTFfUkVHCSBEQkdVX0NSOyAJLyogQ29udHJvbCBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX01SOyAJLyogTW9kZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX0lFUjsgCS8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9JRFI7IAkvKiBJbnRlcnJ1cHQgRGlzYWJsZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX0lNUjsgCS8qIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfQ1NSOyAJLyogQ2hhbm5lbCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9SSFI7IAkvKiBSZWNlaXZlciBIb2xkaW5nIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfVEhSOyAJLyogVHJhbnNtaXR0ZXIgSG9sZGluZyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX0JSR1I7IAkvKiBCYXVkIFJhdGUgR2VuZXJhdG9yIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIFJlc2VydmVkMFs3XTsgCS8qICAqLworCUFUOTFfUkVHCSBEQkdVX0MxUjsgCS8qIENoaXAgSUQxIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfQzJSOyAJLyogQ2hpcCBJRDIgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9GTlRSOyAJLyogRm9yY2UgTlRSU1QgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQxWzQ1XTsgCS8qICAqLworCUFUOTFfUkVHCSBEQkdVX1JQUjsgCS8qIFJlY2VpdmUgUG9pbnRlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX1JDUjsgCS8qIFJlY2VpdmUgQ291bnRlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX1RQUjsgCS8qIFRyYW5zbWl0IFBvaW50ZXIgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9UQ1I7IAkvKiBUcmFuc21pdCBDb3VudGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfUk5QUjsgCS8qIFJlY2VpdmUgTmV4dCBQb2ludGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfUk5DUjsgCS8qIFJlY2VpdmUgTmV4dCBDb3VudGVyIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIERCR1VfVE5QUjsgCS8qIFRyYW5zbWl0IE5leHQgUG9pbnRlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBEQkdVX1ROQ1I7IAkvKiBUcmFuc21pdCBOZXh0IENvdW50ZXIgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9QVENSOyAJLyogUERDIFRyYW5zZmVyIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgREJHVV9QVFNSOyAJLyogUERDIFRyYW5zZmVyIFN0YXR1cyBSZWdpc3RlciAqLworfSBBVDkxU19EQkdVLCAqQVQ5MVBTX0RCR1U7CisKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy8qICAgICAgICAgICAgICBTT0ZUV0FSRSBBUEkgREVGSU5JVElPTiAgRk9SIFN0YXRpYyBNZW1vcnkgQ29udHJvbGxlciAyIEludGVyZmFjZSAqLworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KK3R5cGVkZWYgc3RydWN0IF9BVDkxU19TTUMyIHsKKwlBVDkxX1JFRwkgU01DMl9DU1JbOF07IAkvKiBTTUMyIENoaXAgU2VsZWN0IFJlZ2lzdGVyICovCit9IEFUOTFTX1NNQzIsICpBVDkxUFNfU01DMjsKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy8qICAgICAgICAgICAgICBTT0ZUV0FSRSBBUEkgREVGSU5JVElPTiAgRk9SIEV0aGVybmV0IE1BQyAqLworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KK3R5cGVkZWYgc3RydWN0IF9BVDkxU19FTUFDIHsKKwlBVDkxX1JFRwkgRU1BQ19DVEw7IAkvKiBOZXR3b3JrIENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19DRkc7IAkvKiBOZXR3b3JrIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19TUjsgCS8qIE5ldHdvcmsgU3RhdHVzIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIEVNQUNfVEFSOyAJLyogVHJhbnNtaXQgQWRkcmVzcyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX1RDUjsgCS8qIFRyYW5zbWl0IENvbnRyb2wgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19UU1I7IAkvKiBUcmFuc21pdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19SQlFQOyAJLyogUmVjZWl2ZSBCdWZmZXIgUXVldWUgUG9pbnRlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDBbMV07IAkvKiAgKi8KKwlBVDkxX1JFRwkgRU1BQ19SU1I7IAkvKiBSZWNlaXZlIFN0YXR1cyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0lTUjsgCS8qIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19JRVI7IAkvKiBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIEVNQUNfSURSOyAJLyogSW50ZXJydXB0IERpc2FibGUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19JTVI7IAkvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX01BTjsgCS8qIFBIWSBNYWludGVuYW5jZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBSZXNlcnZlZDFbMl07IAkvKiAgKi8KKwlBVDkxX1JFRwkgRU1BQ19GUkE7IAkvKiBGcmFtZXMgVHJhbnNtaXR0ZWQgT0sgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19TQ09MOyAJLyogU2luZ2xlIENvbGxpc2lvbiBGcmFtZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX01DT0w7IAkvKiBNdWx0aXBsZSBDb2xsaXNpb24gRnJhbWUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19PSzsgCS8qIEZyYW1lcyBSZWNlaXZlZCBPSyBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX1NFUUU7IAkvKiBGcmFtZSBDaGVjayBTZXF1ZW5jZSBFcnJvciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0FMRTsgCS8qIEFsaWdubWVudCBFcnJvciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0RURTsgCS8qIERlZmVycmVkIFRyYW5zbWlzc2lvbiBGcmFtZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0xDT0w7IAkvKiBMYXRlIENvbGxpc2lvbiBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0VDT0w7IAkvKiBFeGNlc3NpdmUgQ29sbGlzaW9uIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIEVNQUNfQ1NFOyAJLyogQ2FycmllciBTZW5zZSBFcnJvciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX1RVRTsgCS8qIFRyYW5zbWl0IFVuZGVycnVuIEVycm9yIFJlZ2lzdGVyICovCisJQVQ5MV9SRUcJIEVNQUNfQ0RFOyAJLyogQ29kZSBFcnJvciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0VMUjsgCS8qIEV4Y2Vzc2l2ZSBMZW5ndGggRXJyb3IgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgRU1BQ19SSkI7IAkvKiBSZWNlaXZlIEphYmJlciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX1VTRjsgCS8qIFVuZGVyc2l6ZSBGcmFtZSBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX1NRRUU7IAkvKiBTUUUgVGVzdCBFcnJvciBSZWdpc3RlciAqLworCUFUOTFfUkVHCSBFTUFDX0RSRkM7IAkvKiBEaXNjYXJkZWQgUlggRnJhbWUgUmVnaXN0ZXIgKi8KKwlBVDkxX1JFRwkgUmVzZXJ2ZWQyWzNdOyAJLyogICovCisJQVQ5MV9SRUcJIEVNQUNfSFNIOyAJLyogSGFzaCBBZGRyZXNzIEhpZ2hbNjM6MzJdICovCisJQVQ5MV9SRUcJIEVNQUNfSFNMOyAJLyogSGFzaCBBZGRyZXNzIExvd1szMTowXSAqLworCUFUOTFfUkVHCSBFTUFDX1NBMUw7IAkvKiBTcGVjaWZpYyBBZGRyZXNzIDEgTG93LCBGaXJzdCA0IGJ5dGVzICovCisJQVQ5MV9SRUcJIEVNQUNfU0ExSDsgCS8qIFNwZWNpZmljIEFkZHJlc3MgMSBIaWdoLCBMYXN0IDIgYnl0ZXMgKi8KKwlBVDkxX1JFRwkgRU1BQ19TQTJMOyAJLyogU3BlY2lmaWMgQWRkcmVzcyAyIExvdywgRmlyc3QgNCBieXRlcyAqLworCUFUOTFfUkVHCSBFTUFDX1NBMkg7IAkvKiBTcGVjaWZpYyBBZGRyZXNzIDIgSGlnaCwgTGFzdCAyIGJ5dGVzICovCisJQVQ5MV9SRUcJIEVNQUNfU0EzTDsgCS8qIFNwZWNpZmljIEFkZHJlc3MgMyBMb3csIEZpcnN0IDQgYnl0ZXMgKi8KKwlBVDkxX1JFRwkgRU1BQ19TQTNIOyAJLyogU3BlY2lmaWMgQWRkcmVzcyAzIEhpZ2gsIExhc3QgMiBieXRlcyAqLworCUFUOTFfUkVHCSBFTUFDX1NBNEw7IAkvKiBTcGVjaWZpYyBBZGRyZXNzIDQgTG93LCBGaXJzdCA0IGJ5dGVzICovCisJQVQ5MV9SRUcJIEVNQUNfU0E0SDsgCS8qIFNwZWNpZmljIEFkZHJlc3MgNCBIaWdoLCBMYXN0IDIgYnl0ZXNyICovCit9IEFUOTFTX0VNQUMsICpBVDkxUFNfRU1BQzsKKworLyogLS0tLS0tLS0gREJHVV9JRVIgOiAoREJHVSBPZmZzZXQ6IDB4OCkgRGVidWcgVW5pdCBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyIC0tLS0tLS0tICAqLworI2RlZmluZSBBVDkxQ19VU19SWFJEWSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogKERCR1UpIFJYUkRZIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19UWFJEWSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMSkgLyogKERCR1UpIFRYUkRZIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19FTkRSWCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMykgLyogKERCR1UpIEVuZCBvZiBSZWNlaXZlIFRyYW5zZmVyIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19FTkRUWCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNCkgLyogKERCR1UpIEVuZCBvZiBUcmFuc21pdCBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgQVQ5MUNfVVNfT1ZSRSAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDUpIC8qIChEQkdVKSBPdmVycnVuIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19GUkFNRSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNikgLyogKERCR1UpIEZyYW1pbmcgRXJyb3IgSW50ZXJydXB0ICovCisjZGVmaW5lIEFUOTFDX1VTX1BBUkUgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA3KSAvKiAoREJHVSkgUGFyaXR5IEVycm9yIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19UWEVNUFRZICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgOSkgLyogKERCR1UpIFRYRU1QVFkgSW50ZXJydXB0ICovCisjZGVmaW5lIEFUOTFDX1VTX1RYQlVGRSAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8IDExKSAvKiAoREJHVSkgVFhCVUZFIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19SWEJVRkYgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAxMikgLyogKERCR1UpIFJYQlVGRiBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgQVQ5MUNfVVNfQ09NTV9UWCAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgMzApIC8qIChEQkdVKSBDT01NX1RYIEludGVycnVwdCAqLworI2RlZmluZSBBVDkxQ19VU19DT01NX1JYICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAzMSkgLyogKERCR1UpIENPTU1fUlggSW50ZXJydXB0ICovCisKKy8qIC0tLS0tLS0tIERCR1VfQ1IgOiAoREJHVSBPZmZzZXQ6IDB4MCkgRGVidWcgVW5pdCBDb250cm9sIFJlZ2lzdGVyIC0tLS0tLS0tICAqLworI2RlZmluZSBBVDkxQ19VU19SU1RSWCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMikgLyogKERCR1UpIFJlc2V0IFJlY2VpdmVyICovCisjZGVmaW5lIEFUOTFDX1VTX1JTVFRYICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAzKSAvKiAoREJHVSkgUmVzZXQgVHJhbnNtaXR0ZXIgKi8KKyNkZWZpbmUgQVQ5MUNfVVNfUlhFTiAgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDQpIC8qIChEQkdVKSBSZWNlaXZlciBFbmFibGUgKi8KKyNkZWZpbmUgQVQ5MUNfVVNfUlhESVMgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDUpIC8qIChEQkdVKSBSZWNlaXZlciBEaXNhYmxlICovCisjZGVmaW5lIEFUOTFDX1VTX1RYRU4gICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA2KSAvKiAoREJHVSkgVHJhbnNtaXR0ZXIgRW5hYmxlICovCisjZGVmaW5lIEFUOTFDX1VTX1RYRElTICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA3KSAvKiAoREJHVSkgVHJhbnNtaXR0ZXIgRGlzYWJsZSAqLworCisjZGVmaW5lIAlBVDkxQ19VU19DTEtTX0NMT0NLICAgICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDAgPDwgIDQpIC8qIChVU0FSVCkgQ2xvY2sgKi8KKyNkZWZpbmUgCUFUOTFDX1VTX0NIUkxfOF9CSVRTICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MyA8PCAgNikgLyogKFVTQVJUKSBDaGFyYWN0ZXIgTGVuZ3RoOiA4IGJpdHMgKi8KKyNkZWZpbmUgCUFUOTFDX1VTX1BBUl9OT05FICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHg0IDw8ICA5KSAvKiAoREJHVSkgTm8gUGFyaXR5ICovCisjZGVmaW5lIAlBVDkxQ19VU19OQlNUT1BfMV9CSVQgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MCA8PCAxMikgLyogKFVTQVJUKSAxIHN0b3AgYml0ICovCisKKyNkZWZpbmUgQVQ5MUNfUE1DX1BDRVIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkZDMTApIC8qIChQTUMpIFBlcmlwaGVyYWwgQ2xvY2sgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFDX1BJT0FfUERSICAoKEFUOTFfUkVHICopIAkweEZGRkZGNDA0KSAvKiAoUElPQSkgUElPIERpc2FibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BBMzAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMzApIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBBMzAgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BDMCAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgIDApIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBDMCAqLworI2RlZmluZSBBVDkxQ19QQzBfQkZDSyAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQzApIC8qICBCdXJzdCBGbGFzaCBDbG9jayAqLworI2RlZmluZSBBVDkxQ19QQTMwX0RSWEQgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEEzMCkgLyogIERCR1UgRGVidWcgUmVjZWl2ZSBEYXRhICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTMxICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDMxKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTMxICovCisjZGVmaW5lIEFUOTFDX1BBMzFfRFRYRCAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTMxKSAvKiAgREJHVSBEZWJ1ZyBUcmFuc21pdCBEYXRhICovCisKKyNkZWZpbmUgQVQ5MUNfSURfU1lTICAgICgodW5zaWduZWQgaW50KSAgMSkgLyogU3lzdGVtIFBlcmlwaGVyYWwgKi8KKyNkZWZpbmUgQVQ5MUNfSURfVEMwICAgICgodW5zaWduZWQgaW50KSAxNykgLyogVGltZXIgQ291bnRlciAwICovCisjZGVmaW5lIEFUOTFDX0lEX0VNQUMgICAoKHVuc2lnbmVkIGludCkgMjQpIC8qIEV0aGVybmV0IE1BQyAqLworCisjZGVmaW5lIEFUOTFDX1BJT19QQzEgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAxKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQzEgKi8KKyNkZWZpbmUgQVQ5MUNfUEMxX0JGUkRZX1NNT0UgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQzEpIC8qICBCdXJzdCBGbGFzaCBSZWFkeSAqLworI2RlZmluZSBBVDkxQ19QSU9fUEMzICAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAgMykgLyogUGluIENvbnRyb2xsZWQgYnkgUEMzICovCisjZGVmaW5lIEFUOTFDX1BDM19CRkJBQV9TTVdFICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEMzKSAvKiAgQnVyc3QgRmxhc2ggQWRkcmVzcyBBZHZhbmNlIC8gU21hcnRNZWRpYSBXcml0ZSBFbmFibGUgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BDMiAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgIDIpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBDMiAqLworI2RlZmluZSBBVDkxQ19QQzJfQkZBVkQgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQzIpIC8qICBCdXJzdCBGbGFzaCBBZGRyZXNzIFZhbGlkICovCisjZGVmaW5lIEFUOTFDX1BJT19QQjEgICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICAxKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQjEgKi8KKworI2RlZmluZSBBVDkxQ19UQ19USU1FUl9ESVYxX0NMT0NLICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MCA8PCAgMCkgLyogKFRDKSBNQ0svMiAqLworI2RlZmluZSBBVDkxQ19UQ19USU1FUl9ESVYyX0NMT0NLICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogKFRDKSBNQ0svOCAqLworI2RlZmluZSBBVDkxQ19UQ19USU1FUl9ESVYzX0NMT0NLICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MiA8PCAgMCkgLyogKFRDKSBNQ0svMzIgKi8KKyNkZWZpbmUgQVQ5MUNfVENfVElNRVJfRElWNF9DTE9DSyAgICAgICgodW5zaWduZWQgaW50KSAweDMgPDwgIDApIC8qIChUQykgTUNLLzEyOCAqLworI2RlZmluZSBBVDkxQ19UQ19TTE9XX0NMT0NLICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4NCA8PCAgMCkgLyogKFRDKSBTTE9XIENMSyAqLworI2RlZmluZSBBVDkxQ19UQ19YQzBfQ0xPQ0sgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4NSA8PCAgMCkgLyogKFRDKSBYQzAgKi8KKyNkZWZpbmUgQVQ5MUNfVENfWEMxX0NMT0NLICAgICAgICAgICAgICgodW5zaWduZWQgaW50KSAweDYgPDwgIDApIC8qIChUQykgWEMxICovCisjZGVmaW5lIEFUOTFDX1RDX1hDMl9DTE9DSyAgICAgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHg3IDw8ICAwKSAvKiAoVEMpIFhDMiAqLworI2RlZmluZSAJQVQ5MUNfVENCX1RDMFhDMFNfTk9ORSAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSkgLyogKFRDQikgTm9uZSBzaWduYWwgY29ubmVjdGVkIHRvIFhDMCAqLworI2RlZmluZSAJQVQ5MUNfVENCX1RDMVhDMVNfTk9ORSAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMikgLyogKFRDQikgTm9uZSBzaWduYWwgY29ubmVjdGVkIHRvIFhDMSAqLworI2RlZmluZSAJQVQ5MUNfVENCX1RDMlhDMlNfTk9ORSAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNCkgLyogKFRDQikgTm9uZSBzaWduYWwgY29ubmVjdGVkIHRvIFhDMiAqLworI2RlZmluZSBBVDkxQ19UQ19DTEtESVMgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMSkgLyogKFRDKSBDb3VudGVyIENsb2NrIERpc2FibGUgQ29tbWFuZCAqLworI2RlZmluZSBBVDkxQ19UQ19TV1RSRyAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMikgLyogKFRDKSBTb2Z0d2FyZSBUcmlnZ2VyIENvbW1hbmQgKi8KKyNkZWZpbmUgQVQ5MUNfVENfQ0xLRU4gICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDApIC8qIChUQykgQ291bnRlciBDbG9jayBFbmFibGUgQ29tbWFuZCAqLworCisjZGVmaW5lIEFUOTFDX0VNQUNfQk5RICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA0KSAvKiAoRU1BQykgICovCisjZGVmaW5lIEFUOTFDX0VNQUNfQ09NUCAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA1KSAvKiAoRU1BQykgICovCisjZGVmaW5lIEFUOTFDX0VNQUNfUkVDICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAxKSAvKiAoRU1BQykgICovCisjZGVmaW5lIEFUOTFDX0VNQUNfUkUgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAyKSAvKiAoRU1BQykgUmVjZWl2ZSBlbmFibGUuICAqLworI2RlZmluZSBBVDkxQ19FTUFDX1RFICAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMykgLyogKEVNQUMpIFRyYW5zbWl0IGVuYWJsZS4gICovCisjZGVmaW5lIEFUOTFDX0VNQUNfQ0xLICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgzIDw8IDEwKSAvKiAoRU1BQykgICovCisjZGVmaW5lIEFUOTFDX0VNQUNfUk1JSSAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8IDEzKSAvKiAoRU1BQykgICovCisjZGVmaW5lIEFUOTFDX0VNQUNfTkJDICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA1KSAvKiAoRU1BQykgTm8gYnJvYWRjYXN0LiAgKi8KKyNkZWZpbmUgQVQ5MUNfRU1BQ19DQUYgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDQpIC8qIChFTUFDKSBDb3B5IGFsbCBmcmFtZXMuICAqLworI2RlZmluZSBBVDkxQ19FTUFDX0JOQSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogKEVNQUMpICAqLworI2RlZmluZSBBVDkxQ19FTUFDX1JFQyAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMSkgLyogKEVNQUMpICAqLworI2RlZmluZSBBVDkxQ19FTUFDX1JTUl9PVlIgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMikgLyogKEVNQUMpICAqLworI2RlZmluZSBBVDkxQ19FTUFDX0NTUiAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNSkgLyogKEVNQUMpIENsZWFyIHN0YXRpc3RpY3MgcmVnaXN0ZXJzLiAgKi8KKyNkZWZpbmUgQVQ5MUNfRU1BQ19TUEQgICAgICAgICgodW5zaWduZWQgaW50KSAweDEgPDwgIDApIC8qIChFTUFDKSBTcGVlZC4gICovCisjZGVmaW5lIEFUOTFDX0VNQUNfRkQgICAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAxKSAvKiAoRU1BQykgRnVsbCBkdXBsZXguICAqLworI2RlZmluZSBBVDkxQ19FTUFDX0xJTksgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgMCkgLyogKEVNQUMpICAqLworI2RlZmluZSBBVDkxQ19FTUFDX01QRSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDB4MSA8PCAgNCkgLyogKEVNQUMpIE1hbmFnZW1lbnQgcG9ydCBlbmFibGUuICAqLworI2RlZmluZSBBVDkxQ19QSU9fUEExNiAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNikgLyogUGluIENvbnRyb2xsZWQgYnkgUEExNiAqLworI2RlZmluZSBBVDkxQ19QQTE2X0VNRElPICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExNikgLyogIEV0aGVybmV0IE1BQyBNYW5hZ2VtZW50IERhdGEgSW5wdXQvT3V0cHV0ICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTE1ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE1KSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTE1ICovCisjZGVmaW5lIEFUOTFDX1BBMTVfRU1EQyAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTE1KSAvKiAgRXRoZXJuZXQgTUFDIE1hbmFnZW1lbnQgRGF0YSBDbG9jayAqLworI2RlZmluZSBBVDkxQ19QSU9fUEExNCAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNCkgLyogUGluIENvbnRyb2xsZWQgYnkgUEExNCAqLworI2RlZmluZSBBVDkxQ19QQTE0X0VSWEVSICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExNCkgLyogIEV0aGVybmV0IE1BQyBSZWNlaXZlIEVycm9yICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTEzICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDEzKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTEzICovCisjZGVmaW5lIEFUOTFDX1BBMTNfRVJYMSAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTEzKSAvKiAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSAxICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTEyICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDEyKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTEyICovCisjZGVmaW5lIEFUOTFDX1BBMTJfRVJYMCAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTEyKSAvKiAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSAwICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTExICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDExKSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTExICovCisjZGVmaW5lIEFUOTFDX1BBMTFfRUNSU19FQ1JTRFYgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTExKSAvKiAgRXRoZXJuZXQgTUFDIENhcnJpZXIgU2Vuc2UvQ2FycmllciBTZW5zZSBhbmQgRGF0YSBWYWxpZCAqLworI2RlZmluZSBBVDkxQ19QSU9fUEExMCAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxMCkgLyogUGluIENvbnRyb2xsZWQgYnkgUEExMCAqLworI2RlZmluZSBBVDkxQ19QQTEwX0VUWDEgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEExMCkgLyogIEV0aGVybmV0IE1BQyBUcmFuc21pdCBEYXRhIDEgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BBOSAgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgIDkpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBBOSAqLworI2RlZmluZSBBVDkxQ19QQTlfRVRYMCAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTkpIC8qICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgRGF0YSAwICovCisjZGVmaW5lIEFUOTFDX1BJT19QQTggICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8ICA4KSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQTggKi8KKyNkZWZpbmUgQVQ5MUNfUEE4X0VUWEVOICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEE4KSAvKiAgRXRoZXJuZXQgTUFDIFRyYW5zbWl0IEVuYWJsZSAqLworI2RlZmluZSBBVDkxQ19QSU9fUEE3ICAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAgNykgLyogUGluIENvbnRyb2xsZWQgYnkgUEE3ICovCisjZGVmaW5lIEFUOTFDX1BBN19FVFhDS19FUkVGQ0sgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQTcpIC8qICBFdGhlcm5ldCBNQUMgVHJhbnNtaXQgQ2xvY2svUmVmZXJlbmNlIENsb2NrICovCisjZGVmaW5lIEFUOTFDX1BJT19QQjI1ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDI1KSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQjI1ICovCisjZGVmaW5lIEFUOTFDX1BCMjVfRFNSMSAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjI1KSAvKiAgVVNBUlQgMSBEYXRhIFNldCByZWFkeSAqLworI2RlZmluZSBBVDkxQ19QQjI1X0VGMTAwICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIyNSkgLyogIEV0aGVybmV0IE1BQyBGb3JjZSAxMDAgTWJpdHMgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BCMTkgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTkpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBCMTkgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxOV9EVFIxICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTkpIC8qICBVU0FSVCAxIERhdGEgVGVybWluYWwgcmVhZHkgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxOV9FUlhDSyAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTkpIC8qICBFdGhlcm5ldCBNQUMgUmVjZWl2ZSBDbG9jayAqLworI2RlZmluZSBBVDkxQ19QSU9fUEIxOCAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxOCkgLyogUGluIENvbnRyb2xsZWQgYnkgUEIxOCAqLworI2RlZmluZSBBVDkxQ19QQjE4X1JJMSAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxOCkgLyogIFVTQVJUIDEgUmluZyBJbmRpY2F0b3IgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxOF9FQ09MICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTgpIC8qICBFdGhlcm5ldCBNQUMgQ29sbGlzaW9uIERldGVjdGVkICovCisjZGVmaW5lIEFUOTFDX1BJT19QQjE3ICAgICAgICgodW5zaWduZWQgaW50KSAxIDw8IDE3KSAvKiBQaW4gQ29udHJvbGxlZCBieSBQQjE3ICovCisjZGVmaW5lIEFUOTFDX1BCMTdfUkYyICAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE3KSAvKiAgU1NDIFJlY2VpdmUgRnJhbWUgU3luYyAyICovCisjZGVmaW5lIEFUOTFDX1BCMTdfRVJYRFYgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE3KSAvKiAgRXRoZXJuZXQgTUFDIFJlY2VpdmUgRGF0YSBWYWxpZCAqLworI2RlZmluZSBBVDkxQ19QSU9fUEIxNiAgICAgICAoKHVuc2lnbmVkIGludCkgMSA8PCAxNikgLyogUGluIENvbnRyb2xsZWQgYnkgUEIxNiAqLworI2RlZmluZSBBVDkxQ19QQjE2X1JLMiAgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxNikgLyogIFNTQyBSZWNlaXZlIENsb2NrIDIgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxNl9FUlgzICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTYpIC8qICBFdGhlcm5ldCBNQUMgUmVjZWl2ZSBEYXRhIDMgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BCMTUgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTUpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBCMTUgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxNV9SRDIgICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTUpIC8qICBTU0MgUmVjZWl2ZSBEYXRhIDIgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxNV9FUlgyICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTUpIC8qICBFdGhlcm5ldCBNQUMgUmVjZWl2ZSBEYXRhIDIgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BCMTQgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTQpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBCMTQgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxNF9URDIgICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTQpIC8qICBTU0MgVHJhbnNtaXQgRGF0YSAyICovCisjZGVmaW5lIEFUOTFDX1BCMTRfRVRYRVIgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjE0KSAvKiAgRXRoZXJuZXQgTUFDIFRyYW5zbWlrdCBDb2RpbmcgRXJyb3IgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BCMTMgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTMpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBCMTMgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxM19USzIgICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTMpIC8qICBTU0MgVHJhbnNtaXQgQ2xvY2sgMiAqLworI2RlZmluZSBBVDkxQ19QQjEzX0VUWDMgICAgICgodW5zaWduZWQgaW50KSBBVDkxQ19QSU9fUEIxMykgLyogIEV0aGVybmV0IE1BQyBUcmFuc21pdCBEYXRhIDMgKi8KKyNkZWZpbmUgQVQ5MUNfUElPX1BCMTIgICAgICAgKCh1bnNpZ25lZCBpbnQpIDEgPDwgMTIpIC8qIFBpbiBDb250cm9sbGVkIGJ5IFBCMTIgKi8KKyNkZWZpbmUgQVQ5MUNfUEIxMl9URjIgICAgICAoKHVuc2lnbmVkIGludCkgQVQ5MUNfUElPX1BCMTIpIC8qICBTU0MgVHJhbnNtaXQgRnJhbWUgU3luYyAyICovCisjZGVmaW5lIEFUOTFDX1BCMTJfRVRYMiAgICAgKCh1bnNpZ25lZCBpbnQpIEFUOTFDX1BJT19QQjEyKSAvKiAgRXRoZXJuZXQgTUFDIFRyYW5zbWl0IERhdGEgMiAqLworCisjZGVmaW5lIEFUOTFDX1BJT0JfQlNSICAoKEFUOTFfUkVHICopIAkweEZGRkZGNjc0KSAvKiAoUElPQikgU2VsZWN0IEIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVQ5MUNfQkFTRV9FTUFDICAgICAgKChBVDkxUFNfRU1BQykgCTB4RkZGQkMwMDApIC8qIChFTUFDKSBCYXNlIEFkZHJlc3MgKi8KKyNkZWZpbmUgQVQ5MUNfUElPQl9QRFIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY2MDQpIC8qIChQSU9CKSBQSU8gRGlzYWJsZSBSZWdpc3RlciAqLworCisjZGVmaW5lIAlBVDkxQ19FQklfQ1MzQV9TTUNfU21hcnRNZWRpYSAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICAzKSAvKiAoRUJJKSBDaGlwIFNlbGVjdCAzIGlzIGFzc2lnbmVkIHRvIHRoZSBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgYW5kIHRoZSBTbWFydE1lZGlhIExvZ2ljIGlzIGFjdGl2YXRlZC4gKi8KKyNkZWZpbmUJQVQ5MUNfU01DMl9BQ1NTX1NUQU5EQVJEICgodW5zaWduZWQgaW50KSAweDAgPDwgMTYpIC8qIChTTUMyKSBTdGFuZGFyZCwgYXNzZXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYWNjZXNzIGFuZCBkZWFzc2VydGVkIGF0IHRoZSBlbmQuICovCisjZGVmaW5lIEFUOTFDX1NNQzJfREJXXzggICAgICAoKHVuc2lnbmVkIGludCkgMHgyIDw8IDEzKSAvKiAoU01DMikgOC1iaXQuICovCisjZGVmaW5lIEFUOTFDX1NNQzJfV1NFTiAgICAgICAoKHVuc2lnbmVkIGludCkgMHgxIDw8ICA3KSAvKiAoU01DMikgV2FpdCBTdGF0ZSBFbmFibGUgKi8KKyNkZWZpbmUgQVQ5MUNfUElPQ19BU1IgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY4NzApIC8qIChQSU9DKSBTZWxlY3QgQSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxQ19QSU9DX1NPRFIgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjgzMCkgLyogKFBJT0MpIFNldCBPdXRwdXQgRGF0YSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxQ19QSU9DX0NPRFIgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjgzNCkgLyogKFBJT0MpIENsZWFyIE91dHB1dCBEYXRhIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFDX1BJT0NfUERTUiAoKEFUOTFfUkVHICopIAkweEZGRkZGODNDKSAvKiAoUElPQykgUGluIERhdGEgU3RhdHVzIFJlZ2lzdGVyICovCisKKyNkZWZpbmUgQVQ5MUNfQkFTRV9UQzAgICAgICAgKChBVDkxUFNfVEMpIAkweEZGRkEwMDAwKSAvKiAoVEMwKSBCYXNlIEFkZHJlc3MgKi8KKyNkZWZpbmUgQVQ5MUNfQkFTRV9EQkdVICAgICAgKChBVDkxUFNfREJHVSkgCTB4RkZGRkYyMDApIC8qIChEQkdVKSBCYXNlIEFkZHJlc3MgKi8KKyNkZWZpbmUgQVQ5MUNfQkFTRV9QSU9BICAgICAgKChBVDkxUFNfUElPKSAJMHhGRkZGRjQwMCkgLyogKFBJT0EpIEJhc2UgQWRkcmVzcyAqLworI2RlZmluZSBBVDkxQ19FQklfQ1NBICAgKChBVDkxX1JFRyAqKSAJMHhGRkZGRkY2MCkgLyogKEVCSSkgQ2hpcCBTZWxlY3QgQXNzaWdubWVudCBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxQ19CQVNFX1NNQzIgICAgICAoKEFUOTFQU19TTUMyKSAJMHhGRkZGRkY3MCkgLyogKFNNQzIpIEJhc2UgQWRkcmVzcyAqLworI2RlZmluZSBBVDkxQ19CQVNFX1VTMSAgICAgICAoKEFUOTFQU19VU0FSVCkgCTB4RkZGQzQwMDApIC8qIChVUzEpIEJhc2UgQWRkcmVzcyAqLworI2RlZmluZSBBVDkxQ19UQ0IwX0JNUiAgKChBVDkxX1JFRyAqKSAJMHhGRkZBMDBDNCkgLyogKFRDQjApIFRDIEJsb2NrIE1vZGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVQ5MUNfVENCMF9CQ1IgICgoQVQ5MV9SRUcgKikgCTB4RkZGQTAwQzApIC8qIChUQ0IwKSBUQyBCbG9jayBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFDX1BJT0NfUERSICAoKEFUOTFfUkVHICopIAkweEZGRkZGODA0KSAvKiAoUElPQykgUElPIERpc2FibGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVQ5MUNfUElPQ19QRVIgICgoQVQ5MV9SRUcgKikgCTB4RkZGRkY4MDApIC8qIChQSU9DKSBQSU8gRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFDX1BJT0NfT0RSICAoKEFUOTFfUkVHICopIAkweEZGRkZGODE0KSAvKiAoUElPQykgT3V0cHV0IERpc2FibGUgUmVnaXN0ZXJyICovCisjZGVmaW5lIEFUOTFDX1BJT0JfUEVSICAoKEFUOTFfUkVHICopIAkweEZGRkZGNjAwKSAvKiAoUElPQikgUElPIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBBVDkxQ19QSU9CX09EUiAgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjYxNCkgLyogKFBJT0IpIE91dHB1dCBEaXNhYmxlIFJlZ2lzdGVyciAqLworI2RlZmluZSBBVDkxQ19QSU9CX1BEU1IgKChBVDkxX1JFRyAqKSAJMHhGRkZGRjYzQykgLyogKFBJT0IpIFBpbiBEYXRhIFN0YXR1cyBSZWdpc3RlciAqLworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxcm05MjAwL2hhcmR3YXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhZDhhOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTFybTkyMDAvaGFyZHdhcmUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogbGludXgvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9oYXJkd2FyZS5oCisgKgorICogIENvcHlyaWdodCAoQykgMjAwMyBTQU4gUGVvcGxlCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisjaWZuZGVmIF9fQVNNX0FSQ0hfSEFSRFdBUkVfSAorI2RlZmluZSBfX0FTTV9BUkNIX0hBUkRXQVJFX0gKKworI2luY2x1ZGUgPGFzbS9zaXplcy5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2luY2x1ZGUgIkFUOTFSTTkyMDAuaCIKKyNlbHNlCisjaW5jbHVkZSAiQVQ5MVJNOTIwMF9pbmMuaCIKKyNlbmRpZgorCisvKiBBVDkxUk05MjAwMCBjbG9ja3MgKi8KKyNkZWZpbmUgQVQ5MV9NQUlOX0NMT0NLCQkxNzk3MTIwMDAJLyogZnJvbSAxOC40MzIgTUh6IGNyeXN0YWwgKDE4NDMyMDAwIC8gNCAqIDM5KSAqLworI2RlZmluZSBBVDkxX01BU1RFUl9DTE9DSwk1OTkwNDAwMAkvKiBwZXJpcGhlcmFsIGNsb2NrIChBVDkxQ19NQVNURVJfQ0xPQ0sgLyAzKSAqLworI2RlZmluZSBBVDkxX1NMT1dfQ0xPQ0sJCTMyNzY4CQkvKiBzbG93IGNsb2NrICovCisKKy8qIFZpcnR1YWwgYW5kIFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBmb3Igc3lzdGVtIHBlcmlwaGVyYWxzICovCisjZGVmaW5lIEFUOTFfU1lTX0JBU0UJCTB4RkZGRkYwMDAgLyo0SyAqLworCisvKiBWaXJ0dWFsIGFuZCBQaHlzaWNhbCBiYXNlIGFkZHJlc3NlcyBvZiB1c2VyIHBlcmlwaGVyYWxzICovCisjZGVmaW5lIEFUOTFfU1BJX0JBU0UJCTB4RkZGRTAwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9TU0MyX0JBU0UJCTB4RkZGRDgwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9TU0MxX0JBU0UJCTB4RkZGRDQwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9TU0MwX0JBU0UJCTB4RkZGRDAwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9VU0FSVDNfQkFTRQkweEZGRkNDMDAwIC8qMTZLICovCisjZGVmaW5lIEFUOTFfVVNBUlQyX0JBU0UJMHhGRkZDODAwMCAvKjE2SyAqLworI2RlZmluZSBBVDkxX1VTQVJUMV9CQVNFCTB4RkZGQzQwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9VU0FSVDBfQkFTRQkweEZGRkMwMDAwIC8qMTZLICovCisjZGVmaW5lIEFUOTFfRU1BQ19CQVNFCQkweEZGRkJDMDAwIC8qMTZLICovCisjZGVmaW5lIEFUOTFfVFdJX0JBU0UJCTB4RkZGQjgwMDAgLyoxNksgKi8KKyNkZWZpbmUgQVQ5MV9NQ0lfQkFTRQkJMHhGRkZCNDAwMCAvKjE2SyAqLworI2RlZmluZSBBVDkxX1VEUF9CQVNFCQkweEZGRkIwMDAwIC8qMTZLICovCisjZGVmaW5lIEFUOTFfVENCMV9CQVNFCQkweEZGRkE0MDAwIC8qMTZLICovCisjZGVmaW5lIEFUOTFfVENCMF9CQVNFCQkweEZGRkEwMDAwIC8qMTZLICovCisKKy8qCisgKiBXaGVyZSBpbiB2aXJ0dWFsIG1lbW9yeSB0aGUgSU8gZGV2aWNlcyAodGltZXJzLCBzeXN0ZW0gY29udHJvbGxlcnMKKyAqIGFuZCBzbyBvbikKKyAqLworI2RlZmluZSBBVDkxX0lPX0JBU0UJCTB4RjAwMDAwMDAJLyogVmlydC9QaHlzIEFkZHJlc3Mgb2YgSU8gKi8KKworLyogRkxBU0ggKi8KKyNkZWZpbmUgQVQ5MV9GTEFTSF9CQVNFCQkweDEwMDAwMDAwCS8qIE5DUzAgKi8KKworLyogU0RSQU0gKi8KKyNkZWZpbmUgQVQ5MV9TRFJBTV9CQVNFCQkweDIwMDAwMDAwCS8qIE5DUzEgKi8KKworLyogU21hcnRNZWRpYSAqLworI2RlZmluZSBBVDkxX1NNQVJUTUVESUFfQkFTRQkweDQwMDAwMDAwCS8qIE5DUzMgKi8KKworLyogRGVmaW5pdGlvbiBvZiBpbnRlcnJ1cHQgcHJpb3JpdHkgbGV2ZWxzICovCisjZGVmaW5lIEFUOTFDX0FJQ19QUklPUl8wIEFUOTFDX0FJQ19QUklPUl9MT1dFU1QKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzEgKCh1bnNpZ25lZCBpbnQpIDB4MSkKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzIgKCh1bnNpZ25lZCBpbnQpIDB4MikKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzMgKCh1bnNpZ25lZCBpbnQpIDB4MykKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzQgKCh1bnNpZ25lZCBpbnQpIDB4NCkKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzUgKCh1bnNpZ25lZCBpbnQpIDB4NSkKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzYgKCh1bnNpZ25lZCBpbnQpIDB4NikKKyNkZWZpbmUgQVQ5MUNfQUlDX1BSSU9SXzcgQVQ5MUNfQUlDX1BSSU9SX0hJR0VTVAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYl9taXBzL2JvYXJkLmMgYi9saWJfbWlwcy9ib2FyZC5jCmluZGV4IDgxOTA5ZDMuLmEwN2NiM2YgMTAwNjQ0Ci0tLSBhL2xpYl9taXBzL2JvYXJkLmMKKysrIGIvbGliX21pcHMvYm9hcmQuYwpAQCAtMTYzLDYgKzE2Myw3IEBACiAJc2VyaWFsX2luaXQsCQkvKiBzZXJpYWwgY29tbXVuaWNhdGlvbnMgc2V0dXAgKi8KIAljb25zb2xlX2luaXRfZiwKIAlkaXNwbGF5X2Jhbm5lciwJCS8qIHNheSB0aGF0IHdlIGFyZSBoZXJlICovCisJY2hlY2tib2FyZCwKIAlpbml0X2Z1bmNfcmFtLAogCU5VTEwsCiB9Owo=