LyogCiAqIG5ldC1zbm1wIGNvbmZpZ3VyYXRpb24gaGVhZGVyIGZpbGUKICovCi8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQogKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cwogKiB0aGF0IG1heSBhcHBseToKICovCi8qCiAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CiAqIENvcHlyaWdodCCpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCiAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAqLwoKI2lmbmRlZiBORVRfU05NUF9DT05GSUdfSAojZGVmaW5lIE5FVF9TTk1QX0NPTkZJR19ICgoKLyogKioqKioqKioqIE5FVFNOTVBfTUFSS19CRUdJTl9BVVRPQ09ORl9ERUZJTklUSU9OUyAqKioqKioqKiogKi8KLyoKICogcHV0IGFsbCBhdXRvY29uZi1zcGVjaWZpYyBkZWZpbml0aW9ucyBiZWxvdyBoZXJlCiAqCiAqLwojaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDMyX3QgKi8KI3VuZGVmIEhBVkVfSU5UMzJfVAoKLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDMyX3QgKi8KI3VuZGVmIEhBVkVfVUlOVDMyX1QKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50MzJfdCAqLwojdW5kZWYgSEFWRV9VX0lOVDMyX1QKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDY0X3QgKi8KI3VuZGVmIEhBVkVfSU5UNjRfVAoKLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDY0X3QgKi8KI3VuZGVmIEhBVkVfVUlOVDY0X1QKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50NjRfdCAqLwojdW5kZWYgSEFWRV9VX0lOVDY0X1QKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludHB0cl90ICovCiN1bmRlZiBIQVZFX0lOVFBUUl9UCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50cHRyX3QgKi8KI3VuZGVmIEhBVkVfVUlOVFBUUl9UCgovKiBnb3Qgc29ja2xlbl90PyAqLwojdW5kZWYgSEFWRV9TT0NLTEVOX1QKCi8qIGdvdCBpbl9hZGRyX3Q/ICovCiN1bmRlZiBIQVZFX0lOX0FERFJfVAoKLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKSAqLwojdW5kZWYgSEFWRV9HRVRERVZTCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgZGV2c3RhdF9nZXRkZXZzKCkgKi8KI3VuZGVmIEhBVkVfREVWU1RBVF9HRVRERVZTCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgPG5ldGluZXQvaW5fcGNiLmg+ICovCiN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8c3lzL2Rpc2tsYWJlbC5oPiAqLwojdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKCi8qIGRlZmluZSBpZiB5b3VyIGNvbXBpbGVyIChwcm9jZXNzb3IpIGRlZmluZXMgX19GVU5DVElPTl9fIGZvciB5b3UgKi8KI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQKCi8qIG9uIGFpeCwgaWYgeW91IGhhdmUgcGVyZnN0YXQgKi8KI3VuZGVmIEhBVkVfUEVSRlNUQVQKCi8qIGRlZmluZSBpZiB5b3UgaGF2ZSBsaWJkYiwgbGlibm0gb3IgbGlicnBtLCByZXNwZWN0aXZlbHkgKi8KI3VuZGVmIEhBVkVfTElCREIKI3VuZGVmIEhBVkVfTElCTk0KI3VuZGVmIEhBVkVfTElCUlBNCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgcGtnaW5mbyAqLwojdW5kZWYgSEFWRV9QS0dJTkZPCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgZ2V0aG9zdGJ5bmFtZSAqLwojdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCgovKiBkZWZpbmUgaWYgeW91IGhhdmUgdGhlIHBlcmxfZXZhbF9wdigpIGZ1bmN0aW9uICovCiN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9MQwoKLyogZGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBQZXJsX2V2YWxfcHYoKSBmdW5jdGlvbiAqLwojdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFZfVUMKCi8qIHByaW50aW5nIHN5c3RlbSAqLwojdW5kZWYgSEFWRV9MUFNUQVQKI3VuZGVmIExQU1RBVF9QQVRICiN1bmRlZiBIQVZFX1BSSU5UQ0FQCi8qIFVzZSBkbWFsbG9jIHRvIGRvIG1hbGxvYyBkZWJ1Z2dpbmc/ICovCiN1bmRlZiBIQVZFX0RNQUxMT0NfSAoKLyogbG9jYXRpb24gb2YgVU5JWCBrZXJuZWwgKi8KI2RlZmluZSBLRVJORUxfTE9DICIvdm11bml4IgoKLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLwojZGVmaW5lIEVUQ19NTlRUQUIgIi9ldGMvbW50dGFiIgoKLyogbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2UgKG9rIGlmIG5vdCBmb3VuZCkgKi8KI3VuZGVmIERNRU1fTE9DCgovKiBDb21tYW5kIHRvIGdlbmVyYXRlIHBzIG91dHB1dCwgdGhlIGZpbmFsIGNvbHVtbiBtdXN0IGJlIHRoZSBwcm9jZXNzCiAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHMgKi8KI2RlZmluZSBQU0NNRCAiL2Jpbi9wcyIKCi8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCiNkZWZpbmUgVU5BTUVQUk9HICIvYmluL3VuYW1lIgoKLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgbGludXggYW5kIC9wcm9jL25ldC9kZXYgaGFzIHRoZSBjb21wcmVzc2VkCiAgIGZpZWxkLCB3aGljaCBleGlzdHMgaW4gbGludXgga2VybmVscyAyLjIgYW5kIGdyZWF0ZXIuICovCiN1bmRlZiBQUk9DX05FVF9ERVZfSEFTX0NPTVBSRVNTRUQKCi8qIGRlZmluZSBydGVudHJ5IHRvIG9ydGVudHJ5IG9uIFNZU1YgbWFjaGluZXMgKGFscGhhcykgKi8KI3VuZGVmIFJURU5UUlkKCi8qIFVzZSBCU0QgNC40IHJvdXRpbmcgdGFibGUgZW50cmllcz8gKi8KI3VuZGVmIFJURU5UUllfNF80CgovKiBEb2VzIHN0cnVjdCBzaWdhY3Rpb24gaGF2ZSBhIHNhX3NpZ2FjdGlvbiBmaWVsZD8gKi8KI3VuZGVmIFNUUlVDVF9TSUdBQ1RJT05fSEFTX1NBX1NJR0FDVElPTgoKLyogRG9lcyBzdHJ1Y3QgdG0gaGF2ZSBhIHRtX2dtdG9mZiBmaWVsZD8gKi8KI3VuZGVmIFNUUlVDVF9UTV9IQVNfVE1fR01UT0ZGRgoKLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2xlbiBmaWVsZD8gKi8KI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOCgovKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfZmFtaWx5MiBmaWVsZD8gKi8KI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyCgovKiBEb2VzIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGhhdmUgYSBzc19mYW1pbHkgZmllbGQ/ICovCiN1bmRlZiBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZCgovKiBEb2VzIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGhhdmUgYSBfX3NzX2ZhbWlseSBmaWVsZD8gKi8KI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19fX1NTX0ZBTUlMWQoKLyogRG9lcyBzdHJ1Y3QgaW42X2FkZHIgaGF2ZSBhIHM2X3VuLnNhNl9sYWRkIGZpZWxkPyAqLwojdW5kZWYgU1RSVUNUX0lONl9BRERSX0hBU19TNl9VTl9TQTZfTEFERFIKCi8qIHJ0ZW50cnkgc3RydWN0dXJlIHRlc3RzICovCiN1bmRlZiBSVEVOVFJZX1JUX05FWFQKI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VTklUCiN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFCiN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCiN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSAoKLyogaWZuZXQgc3RydWN0dXJlIHRlc3RzICovCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRQojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRAojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUwojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQwojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX05TRUMKI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTk9QUk9UTwojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUwojdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JQllURVMKI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQUREUkxJU1QKCi8qIHRjcHN0YXQudGNwc19yY3ZtZW1kcm9wICovCiN1bmRlZiBTVFJVQ1RfVENQU1RBVF9IQVNfVENQU19SQ1ZNRU1EUk9QCgovKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwojdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRAoKLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVAoKLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVEJDQVNUCgovKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwojdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRlVMTFNPQ0sKCi8qIGFycGhkLmF0X25leHQgKi8KI3VuZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAoKLyogaWZhZGRyLmlmYV9uZXh0ICovCiN1bmRlZiBTVFJVQ1RfSUZBRERSX0hBU19JRkFfTkVYVAoKLyogaWZuZXQuaWZfbXR1ICovCiN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX01UVQoKLyogc3dkZXZ0LnN3X25ibGtzZW5hYmxlZCAqLwojdW5kZWYgU1RSVUNUX1NXREVWVF9IQVNfU1dfTkJMS1NFTkFCTEVECgovKiBubGlzdC5uX3ZhbHVlICovCiN1bmRlZiBTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUKCi8qIG5saXN0NjQubl92YWx1ZSAqLwojdW5kZWYgU1RSVUNUX05MSVNUNjRfSEFTX05fVkFMVUUKCi8qIGlwc3RhdCBzdHJ1Y3R1cmUgdGVzdHMgKi8KI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URk9SV0FSRAojdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHCiN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfREVMSVZFUkVECiN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR0RST1BQRUQKI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHVElNRU9VVAojdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0xPQ0FMT1VUCiN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTwojdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRFJPUFBFRAojdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMKI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19SRUFTU0VNQkxFRAoKLyogdmZzc3RhdC5mX2Zyc2l6ZSAqLwojdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCgovKiB2ZnNzdGF0LmZfZmlsZXMgKi8KI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTCgovKiBzdGF0ZnMgaW5vZGUgc3RydWN0dXJlIHRlc3RzKi8KI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMKI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkZSRUUKI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkFWQUlMCgovKiBkZXNfa3Nfc3RydWN0LndlYWtfa2V5ICovCiN1bmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkKCi8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTCBkZWZpbmVkICovCiN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwKCi8qIHN5c2N0bCB3b3JrcyB0byBnZXQgYm9vdHRpbWUsIGV0Yy4uLiAqLwojdW5kZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAoKLyogZGVmaW5lIGlmIFNJT0NHSUZBRERSIGV4aXN0cyBpbiBzeXMvaW9jdGwuaCAqLwojdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSCgovKiBEZWZpbmUgaWYgc3RhdGZzIHRha2VzIDIgYXJncyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCBoYXMKICAgdHlwZSBzdHJ1Y3QgZnNfZGF0YS4gW1VsdHJpeF0gKi8KI3VuZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKCi8qIERlZmluZSBpZiB0aGUgVENQIHRpbWVyIGNvbnN0YW50cyBpbiA8bmV0aW5ldC90Y3BfdGltZXIuaD4KICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlIGBoeicuICBbRnJlZUJTRCA0LnhdICovCiN1bmRlZiBUQ1BUVl9ORUVEU19IWgoKLyogTm90LXRvLWJlLWNvbXBpbGVkIG1hY3JvcyBmb3IgdXNlIGJ5IGNvbmZpZ3VyZSBvbmx5ICovCiNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCkKI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KQojZGVmaW5lIGNvbmZpZ19hcmNoX3JlcXVpcmUoeCx5KQojZGVmaW5lIGNvbmZpZ19wYXJzZV9kb3RfY29uZih3LHgseSx6KQojZGVmaW5lIGNvbmZpZ19hZGRfbWliKHgpCiNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKI2RlZmluZSBjb25maWdfZXJyb3IoeCkKI2RlZmluZSBjb25maWdfd2FybmluZyh4KQogIAojaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKG1pbmd3MzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKI2RlZmluZSBFTlZfU0VQQVJBVE9SICI7IgojZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKI2Vsc2UKI2RlZmluZSBFTlZfU0VQQVJBVE9SICI6IgojZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOicKI2VuZGlmCgovKiBkZWZpbml0aW9ucyBhZGRlZCBieSBjb25maWd1cmUgb24tdGhlLWZseSAqLwpAVE9QQApAQk9UVE9NQAoKLyogZW5kIG9mIGRlZmluaXRpb25zIGFkZGVkIGJ5IGNvbmZpZ3VyZSBvbi10aGUtZmx5ICovCgojaWZuZGVmIEhBVkVfU1RSQ0hSCiNpZmRlZiBIQVZFX0lOREVYCiMgZGVmaW5lIHN0cmNociBpbmRleAojIGRlZmluZSBzdHJyY2hyIHJpbmRleAojZW5kaWYKI2VuZGlmCgojaWZuZGVmIEhBVkVfSU5ERVgKI2lmZGVmIEhBVkVfU1RSQ0hSCiNpZmRlZiBtaW5ndzMyCiMgZGVmaW5lIGluZGV4KGEsYikgc3RyY2hyKGEsYikKIyBkZWZpbmUgcmluZGV4KGEsYikgc3RycmNocihhLGIpCiNlbHNlCiMgZGVmaW5lIGluZGV4IHN0cmNocgojIGRlZmluZSByaW5kZXggc3RycmNocgojZW5kaWYKI2VuZGlmCiNlbmRpZgoKI2lmbmRlZiBIQVZFX01FTUNQWQojaWZkZWYgSEFWRV9CQ09QWQojIGRlZmluZSBtZW1jcHkoZCwgcywgbikgYmNvcHkgKChzKSwgKGQpLCAobikpCiMgZGVmaW5lIG1lbW1vdmUoZCwgcywgbikgYmNvcHkgKChzKSwgKGQpLCAobikpCiMgZGVmaW5lIG1lbWNtcCBiY21wCiNlbmRpZgojZW5kaWYKCiNpZm5kZWYgSEFWRV9NRU1NT1ZFCiNpZmRlZiBIQVZFX01FTUNQWQojIGRlZmluZSBtZW1tb3ZlIG1lbWNweQojZW5kaWYKI2VuZGlmCgojaWZuZGVmIEhBVkVfQkNPUFkKI2lmZGVmIEhBVkVfTUVNQ1BZCiMgZGVmaW5lIGJjb3B5KHMsIGQsIG4pIG1lbWNweSAoKGQpLCAocyksIChuKSkKIyBkZWZpbmUgYnplcm8ocCxuKSBtZW1zZXQoKHApLCgwKSwobikpCiMgZGVmaW5lIGJjbXAgbWVtY21wCiNlbmRpZgojZW5kaWYKCi8qIElmIHlvdSBoYXZlIG9wZW5zc2wgMC45Ljcgb3IgYWJvdmUsIHlvdSBsaWtlbHkgaGF2ZSBBRVMgc3VwcG9ydC4gKi8KI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wKI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX09QRU5TU0xfQUVTX0gpICYmIGRlZmluZWQoSEFWRV9BRVNfQ0ZCMTI4X0VOQ1JZUFQpCiNkZWZpbmUgSEFWRV9BRVMgMQojZW5kaWYKCi8qIGRlZmluZSByYW5kb20gZnVuY3Rpb25zICovCgojaWZuZGVmIEhBVkVfUkFORE9NCiNpZmRlZiBIQVZFX0xSQU5ENDgKI2RlZmluZSByYW5kb20gbHJhbmQ0OAojZGVmaW5lIHNyYW5kb20ocykgc3JhbmQ0OChzKQojZWxzZQojaWZkZWYgSEFWRV9SQU5ECiNkZWZpbmUgcmFuZG9tIHJhbmQKI2RlZmluZSBzcmFuZG9tKHMpIHNyYW5kKHMpCiNlbmRpZgojZW5kaWYKI2VuZGlmCgovKiBkZWZpbmUgc2lnbmFsIGlmIERORSAqLwoKI2lmbmRlZiBIQVZFX1NJR05BTAojaWZkZWYgSEFWRV9TSUdTRVQKI2RlZmluZSBzaWduYWwoYSxiKSBzaWdzZXQoYSxiKQojZW5kaWYKI2VuZGlmCgojaWZkZWYgSEFWRV9ETUFMTE9DX0gKI2RlZmluZSBETUFMTE9DX0ZVTkNfQ0hFQ0sKI2VuZGlmCgojZW5kaWYgLyogTkVUU05NUF9OT19BVVRPQ09ORl9ERUZJTklUSU9OUyAqLwoKCgoKLyogKioqKioqKioqIE5FVFNOTVBfTUFSS19CRUdJTl9DTEVBTl9OQU1FU1BBQ0UgKioqKioqKioqICovCi8qIAogKiBwdXQgYWxsIG5ldyBuZXQtc25tcC1zcGVjaWZpYyBkZWZpbml0aW9ucyBoZXJlCiAqCiAqIGFsbCBkZWZpbml0aW9ucyBNVVNUIGhhdmUgYSBORVRTTk1QXyBwcmVmaXgKICoKICovCgovKiBEZWZhdWx0IChTTk1QKSB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIHRvb2xzIHRvIHVzZSAqLwojZGVmaW5lIE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04gMwoKLyogZG9uJ3QgY2hhbmdlIHRoZXNlIHZhbHVlcyEgKi8KI2RlZmluZSBORVRTTk1QX1NOTVBWMSAgICAgIDB4QUFBQSAgICAgICAvKiByZWFkYWJsZSBieSBhbnlvbmUgKi8KI2RlZmluZSBORVRTTk1QX1NOTVBWMkFOWSAgIDB4QTAwMCAgICAgICAvKiBWMiBBbnkgdHlwZSAoaW5jbHVkZXMgTm9BdXRoKSAqLwojZGVmaW5lIE5FVFNOTVBfU05NUFYyQVVUSCAgMHg4MDAwICAgICAgIC8qIFYyIEF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgb25seSAqLwoKLyogZGVmYXVsdCBsaXN0IG9mIG1pYnMgdG8gbG9hZCAqLwojZGVmaW5lIE5FVFNOTVBfREVGQVVMVF9NSUJTICJJUC1NSUI6SUYtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QdjItTUlCOlJGQzEyMTMtTUlCIgoKLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucwogICBhbmQvb3IgdGhvc2UgaW4gdGhlIE1JQlMgZW52cmlvbm1lbnQgdmFyaWFibGUqLwojdW5kZWYgTkVUU05NUF9ERUZBVUxUX01JQkRJUlMKCi8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLwojdW5kZWYgTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTCgovKiBzaG91bGQgd2UgY29tcGlsZSB0byB1c2Ugc3BlY2lhbCBvcGFxdWUgdHlwZXM6IGZsb2F0LCBkb3VibGUsCiAgIGNvdW50ZXI2NCwgaTY0LCB1aTY0LCB1bmlvbj8gKi8KI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwoKLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgc3VwcG9ydCBmb3IgYm90aCBhdXRoZW50aWNhdGlvbiBhbmQKICAgcHJpdmFjeSBzdXBwb3J0LiAqLwojdW5kZWYgTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYKCi8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4qLwojdW5kZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1CgovKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiovCiN1bmRlZiBORVRTTk1QX1VTRV9QS0NTMTEKCi8qIGRlYnVnZ2luZyBzdHVmZiAqLwovKiBpZiBkZWZpbmVkLCB3ZSBvcHRpbWl6ZSB0aGUgY29kZSB0byBleGNsdWRlIGFsbCBkZWJ1Z2dpbmcgY2FsbHMuICovCiN1bmRlZiBORVRTTk1QX05PX0RFQlVHR0lORwovKiBpZ25vcmUgdGhlIC1EIGZsYWcgYW5kIGFsd2F5cyBwcmludCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gKi8KI2RlZmluZSBORVRTTk1QX0FMV0FZU19ERUJVRyAwCgovKiByZXZlcnNlIGVuY29kaW5nIEJFUiBwYWNrZXRzIGlzIGJvdGggZmFzdGVyIGFuZCBtb3JlIGVmZmljaWVudCBpbiBzcGFjZS4gKi8KI2RlZmluZSBORVRTTk1QX1VTRV9SRVZFUlNFX0FTTkVOQ09ESU5HICAgICAgIDEKI2RlZmluZSBORVRTTk1QX0RFRkFVTFRfQVNORU5DT0RJTkdfRElSRUNUSU9OIDEgLyogMSA9IHJldmVyc2UsIDAgPSBmb3J3YXJkcyAqLwoKLyogUEVSU0lTVEVOVF9ESVJFQ1RPUlk6IElmIGRlZmluZWQsIHRoZSBsaWJyYXJ5IGlzIGNhcGFiaWxlIG9mIHNhdmluZwogICBwZXJzaXNhbnQgaW5mb3JtYXRpb24gdG8gdGhpcyBkaXJlY3RvcnkgaW4gdGhlIGZvcm0gb2YgY29uZmlndXJhdGlvbgogICBsaW5lczogUEVSU0lTVEVOVF9ESVJFQ1RPUlkvTkFNRS5wZXJzaXN0ZW50LmNvbmYgKi8KI2RlZmluZSBORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZICIvdmFyL3NubXAiCgovKiBQRVJTSVNURU5UX01BU0s6IHRoZSB1bWFzayBwZXJtaXNzaW9ucyB0byBzZXQgdXAgcGVyc2lzdGVudCBmaWxlcyB3aXRoICovCiNkZWZpbmUgTkVUU05NUF9QRVJTSVNURU5UX01BU0sgMDc3CgovKiBBR0VOVF9ESVJFQ1RPUllfTU9ERTogdGhlIG1vZGUgdGhlIGFnZW50cyBzaG91bGQgdXNlIHRvIGNyZWF0ZQogICBkaXJlY3RvcmllcyB3aXRoLiBTaW5jZSB0aGUgZGF0YSBzdG9yZWQgaGVyZSBpcyBwcm9iYWJseSBzZW5zaXRpdmUsIGl0CiAgIHByb2JhYmx5IHNob3VsZCBiZSByZWFkLW9ubHkgYnkgcm9vdC9hZG1pbmlzdHJhdG9yLiAqLwojZGVmaW5lIE5FVFNOTVBfQUdFTlRfRElSRUNUT1JZX01PREUgMDcwMAoKLyogTUFYX1BFUlNJU1RFTlRfQkFDS1VQUzoKICogICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGVyc2lzdGVudCBiYWNrdXBzIHRoZSBsaWJyYXJ5IHdpbGwgdHJ5IHRvCiAqICAgcmVhZCBmcm9tIHRoZSBwZXJzaXN0ZW50IGNhY2hlIGRpcmVjdG9yeS4gIElmIGFuIGFwcGxpY2F0aW9uIGZhaWxzIHRvCiAqICAgY2xvc2UgZG93biBzdWNjZXNzZnVsbHkgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHRpbWVzLCBkYXRhIHdpbGwgYmUgbG9zdC4KICovCiNkZWZpbmUgTkVUU05NUF9NQVhfUEVSU0lTVEVOVF9CQUNLVVBTIDEwCgovKiBkZWZpbmUgdGhlIHN5c3RlbSB0eXBlIGluY2x1ZGUgZmlsZSBoZXJlICovCiNkZWZpbmUgTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFIDxuZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oPgoKLyogZGVmaW5lIHRoZSBtYWNoaW5lIChjcHUpIHR5cGUgaW5jbHVkZSBmaWxlIGhlcmUgKi8KI2RlZmluZSBORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFIDxuZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaD4KCi8qIGRlZmluZSB0aGUgVURQIGJ1ZmZlciBkZWZhdWx0cyB1bmRlZmluZWQgbWVhbnMgdXNlIHRoZSBPUyBidWZmZXJzCiAqIGJ5IGRlZmF1bHQgKi8KI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfU0VORF9CVUYKI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfUkVDVl9CVUYKI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9DTElFTlRfU0VORF9CVUYKI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9DTElFTlRfUkVDVl9CVUYKCi8qIG5ldC1zbm1wJ3MgbWFqb3IgcGF0aCBuYW1lcyAqLwojdW5kZWYgU05NUExJQlBBVEgKI3VuZGVmIFNOTVBTSEFSRVBBVEgKI3VuZGVmIFNOTVBDT05GUEFUSAojdW5kZWYgU05NUERMTU9EUEFUSAoKLyogTkVUU05NUF9MT0dGSUxFOiAgSWYgZGVmaW5lZCBpdCBjbG9zZXMgc3Rkb3V0L2Vyci9pbiBhbmQgb3BlbnMgdGhpcyBpbiAKICAgb3V0L2VycidzIHBsYWNlLiAgKHN0ZGluIGlzIGNsb3NlZCBzbyB0aGF0IHNoIHNjcmlwdHMgd29uJ3Qgd2FpdCBmb3IgaXQpICovCiN1bmRlZiBORVRTTk1QX0xPR0ZJTEUKCi8qIGRlZmF1bHQgc3lzdGVtIGNvbnRhY3QgKi8KI3VuZGVmIE5FVFNOTVBfU1lTX0NPTlRBQ1QKCi8qIHN5c3RlbSBsb2NhdGlvbiAqLwojdW5kZWYgTkVUU05NUF9TWVNfTE9DCgovKiBVc2UgbGlid3JhcCB0byBoYW5kbGUgYWxsb3cvZGVueSBob3N0cz8gKi8KI3VuZGVmIE5FVFNOTVBfVVNFX0xJQldSQVAKCi8qIHRlc3RpbmcgY29kZSBzZWN0aW9ucy4gKi8KI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAKCi8qIElmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9ycyAqLwojdW5kZWYgTkVUU05NUF9OT19ST09UX0FDQ0VTUwoKLyogSWYgd2UgZG9uJ3Qgd2FudCB0byB1c2Uga21lbS4gKi8KI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQoKLyogSWYgeW91IGRvbid0IHdhbnQgdGhlIGFnZW50IHRvIHJlcG9ydCBvbiB2YXJpYWJsZXMgaXQgZG9lc24ndCBoYXZlIGRhdGEgZm9yICovCiN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwoKCi8qIE1pYi0yIHRyZWUgSW5mbyAqLwovKiBUaGVzZSBhcmUgdGhlIHN5c3RlbSBpbmZvcm1hdGlvbiB2YXJpYWJsZXMuICovCgojZGVmaW5lIE5FVFNOTVBfVkVSU19ERVNDICAgInVua25vd24iICAgICAgICAgICAgIC8qIG92ZXJyaWRkZW4gYXQgcnVuIHRpbWUgKi8KI2RlZmluZSBORVRTTk1QX1NZU19OQU1FICAgICJ1bmtub3duIiAgICAgICAgICAgICAvKiBvdmVycmlkZGVuIGF0IHJ1biB0aW1lICovCgovKiBjb21tZW50IG91dCB0aGUgc2Vjb25kIGRlZmluZSB0byB0dXJuIG9mZiBmdW5jdGlvbmFsaXR5IGZvciBhbnkgb2YKICAgdGhlc2U6IChTZWUgUkVBRE1FIGZvciBkZXRhaWxzKSAqLwoKLyogICBwcm9jIFBST0NFU1NOQU1FIFtNQVhdIFtNSU5dICovCiNkZWZpbmUgTkVUU05NUF9QUk9DTUlCTlVNIDIKCi8qICAgZXhlYy9zaGVsbCBOQU1FIENPTU1BTkQgICAgICAqLwojZGVmaW5lIE5FVFNOTVBfU0hFTExNSUJOVU0gOAoKLyogICBzd2FwIE1JTiAgICAgICAgICAgICAgICAgICAgICovCiNkZWZpbmUgTkVUU05NUF9NRU1NSUJOVU0gNAoKLyogICBkaXNrIERJU0sgTUlOU0laRSAgICAgICAgICAgICovCiNkZWZpbmUgTkVUU05NUF9ESVNLTUlCTlVNIDkKCi8qICAgbG9hZCAxIDUgMTUgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIE5FVFNOTVBfTE9BREFWRU1JQk5VTSAxMAoKLyogd2hpY2ggdmVyc2lvbiBhcmUgeW91IHVzaW5nPyBUaGlzIG1pYmxvYyB3aWxsIHRlbGwgeW91ICovCiNkZWZpbmUgTkVUU05NUF9WRVJTSU9OTUlCTlVNIDEwMAoKLyogUmVwb3J0cyBlcnJvcnMgdGhlIGFnZW50IHJ1bnMgaW50byAqLwovKiAodHlwaWNhbGx5IGl0cyAiY2FuJ3QgZm9yaywgbm8gbWVtIiBwcm9ibGVtcykgKi8KI2RlZmluZSBORVRTTk1QX0VSUk9STUlCTlVNIDEwMQoKLyogVGhlIHN1YiBpZCBvZiBFWFRFTlNJQkxFTUlCIHJldHVybmVkIHRvIHF1ZXJpZXMgb2YKICAgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c09iamVjdElELjAgKi8KI2RlZmluZSBORVRTTk1QX0FHRU5USUQgMjUwCgovKiBUaGlzIElEIGlzIHJldHVybmVkIGFmdGVyIHRoZSBBR0VOVElEIGFib3ZlLiAgSUUsIHRoZSByZXN1bHRpbmcKICAgdmFsdWUgcmV0dXJuZWQgYnkgYSBxdWVyeSB0byBzeXNPYmplY3RJRCBpcwogICBFWFRFTlNJQkxFTUlCLkFHRU5USUQuPz8/LCB3aGVyZSA/Pz8gaXMgZGVmaW5lZCBiZWxvdyBieSBPU1RZUEUgKi8KCiNkZWZpbmUgTkVUU05NUF9IUFVYOUlEIDEKI2RlZmluZSBORVRTTk1QX1NVTk9TNElEIDIgCiNkZWZpbmUgTkVUU05NUF9TT0xBUklTSUQgMwojZGVmaW5lIE5FVFNOTVBfT1NGSUQgNAojZGVmaW5lIE5FVFNOTVBfVUxUUklYSUQgNQojZGVmaW5lIE5FVFNOTVBfSFBVWDEwSUQgNgojZGVmaW5lIE5FVFNOTVBfTkVUQlNEMUlEIDcKI2RlZmluZSBORVRTTk1QX0ZSRUVCU0RJRCA4CiNkZWZpbmUgTkVUU05NUF9JUklYSUQgOQojZGVmaW5lIE5FVFNOTVBfTElOVVhJRCAxMAojZGVmaW5lIE5FVFNOTVBfQlNESUlEIDExCiNkZWZpbmUgTkVUU05NUF9PUEVOQlNESUQgMTIKI2RlZmluZSBORVRTTk1QX1dJTjMySUQgMTMKI2RlZmluZSBORVRTTk1QX0hQVVgxMUlEIDE0CiNkZWZpbmUgTkVUU05NUF9BSVhJRCAxNQojZGVmaW5lIE5FVFNOTVBfTUFDT1NYSUQgMTYKI2RlZmluZSBORVRTTk1QX0RSQUdPTkZMWUlEIDE3CiNkZWZpbmUgTkVUU05NUF9VTktOT1dOSUQgMjU1CgojaWZkZWYgaHB1eDkKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX0hQVVg5SUQKI2VuZGlmCiNpZmRlZiBocHV4MTAKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX0hQVVgxMElECiNlbmRpZgojaWZkZWYgaHB1eDExCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9IUFVYMTFJRAojZW5kaWYKI2lmZGVmIHN1bm9zNAojZGVmaW5lIE5FVFNOTVBfT1NUWVBFIE5FVFNOTVBfU1VOT1M0SUQKI2VuZGlmCiNpZmRlZiBzb2xhcmlzMgojZGVmaW5lIE5FVFNOTVBfT1NUWVBFIE5FVFNOTVBfU09MQVJJU0lECiNlbmRpZgojaWYgZGVmaW5lZChvc2YzKSB8fCBkZWZpbmVkKG9zZjQpIHx8IGRlZmluZWQob3NmNSkKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX09TRklECiNlbmRpZgojaWZkZWYgdWx0cml4NAojZGVmaW5lIE5FVFNOTVBfT1NUWVBFIE5FVFNOTVBfVUxUUklYSUQKI2VuZGlmCiNpZiBkZWZpbmVkKG5ldGJzZDEpIHx8IGRlZmluZWQobmV0YnNkMikKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX05FVEJTRDFJRAojZW5kaWYKI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9GUkVFQlNESUQKI2VuZGlmCiNpZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9EUkFHT05GTFlJRAojZW5kaWYKI2lmIGRlZmluZWQoaXJpeDYpIHx8IGRlZmluZWQoaXJpeDUpCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9JUklYSUQKI2VuZGlmCiNpZmRlZiBsaW51eAojZGVmaW5lIE5FVFNOTVBfT1NUWVBFIE5FVFNOTVBfTElOVVhJRAojZW5kaWYKI2lmIGRlZmluZWQoYnNkaTIpIHx8IGRlZmluZWQoYnNkaTMpIHx8IGRlZmluZWQoYnNkaTQpCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9CU0RJSUQKI2VuZGlmCiNpZiBkZWZpbmVkKG9wZW5ic2QpCiNkZWZpbmUgTkVUU05NUF9PU1RZUEUgTkVUU05NUF9PUEVOQlNESUQKI2VuZGlmCiNpZmRlZiBXSU4zMgojZGVmaW5lIE5FVFNOTVBfT1NUWVBFIE5FVFNOTVBfV0lOMzJJRAojZW5kaWYKI2lmIGRlZmluZWQoYWl4MykgfHwgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX0FJWElECiNlbmRpZgojaWYgZGVmaW5lZChkYXJ3aW4pICYmIChkYXJ3aW4gPj0gOCkKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX01BQ09TWElECiNlbmRpZgovKiB1bmtub3duICovCiNpZm5kZWYgTkVUU05NUF9PU1RZUEUKI2RlZmluZSBORVRTTk1QX09TVFlQRSBORVRTTk1QX1VOS05PV05JRAojZW5kaWYKCi8qIFRoZSBlbnRlcnByaXNlIG51bWJlciBoYXMgYmVlbiBhc3NpZ25lZCBieSB0aGUgSUFOQSBncm91cC4gICAqLwovKiBPcHRpb25hbGx5LCB0aGlzIG1heSBwb2ludCB0byB0aGUgbG9jYXRpb24gaW4gdGhlIHRyZWUgeW91ciAgKi8KLyogY29tcGFueS9vcmdhbml6YXRpb24gaGFzIGJlZW4gYWxsb2NhdGVkLiAgICAgICAgICAgICAgICAgICAgICovCi8qIFRoZSBhc3NpZ25lZCBlbnRlcnByaXNlIG51bWJlciBmb3IgdGhlIE5FVF9TTk1QIE1JQiBtb2R1bGVzLiAqLwojZGVmaW5lIE5FVFNOTVBfRU5URVJQUklTRV9PSUQJCQk4MDcyCiNkZWZpbmUgTkVUU05NUF9FTlRFUlBSSVNFX01JQgkJCTEsMyw2LDEsNCwxLDgwNzIKI2RlZmluZSBORVRTTk1QX0VOVEVSUFJJU0VfRE9UX01JQgkJMS4zLjYuMS40LjEuODA3MgojZGVmaW5lIE5FVFNOTVBfRU5URVJQUklTRV9ET1RfTUlCX0xFTkdUSAk3CgovKiBUaGUgYXNzaWduZWQgZW50ZXJwcmlzZSBudW1iZXIgZm9yIHN5c09iamVjdElELiAqLwojZGVmaW5lIE5FVFNOTVBfU1lTVEVNX01JQgkJMSwzLDYsMSw0LDEsODA3MiwzLDIsTkVUU05NUF9PU1RZUEUKI2RlZmluZSBORVRTTk1QX1NZU1RFTV9ET1RfTUlCCQkxLjMuNi4xLjQuMS44MDcyLjMuMi5ORVRTTk1QX09TVFlQRQojZGVmaW5lIE5FVFNOTVBfU1lTVEVNX0RPVF9NSUJfTEVOR1RICTEwCgovKiBUaGUgYXNzaWduZWQgZW50ZXJwcmlzZSBudW1iZXIgZm9yIG5vdGlmaWNhdGlvbnMuICovCiNkZWZpbmUgTkVUU05NUF9OT1RJRklDQVRJT05fTUlCCQkxLDMsNiwxLDQsMSw4MDcyLDQKI2RlZmluZSBORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCCQkxLjMuNi4xLjQuMS44MDcyLjQKI2RlZmluZSBORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCX0xFTkdUSAk4CgovKiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdWNkYXZpcyBtaWIgdHJlZS4gIEl0IHNob3VsZG4ndCBiZQogICBjaGFuZ2VkLCBhcyB0aGUgcGxhY2VzIGl0IGlzIHVzZWQgYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnN0YW50CiAgIHZhbHVlcyBvciBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgVUNELVNOTVAtTUlCLiAqLwojZGVmaW5lIE5FVFNOTVBfVUNEQVZJU19PSUQJCTIwMjEKI2RlZmluZSBORVRTTk1QX1VDREFWSVNfTUlCCQkxLDMsNiwxLDQsMSwyMDIxCiNkZWZpbmUgTkVUU05NUF9VQ0RBVklTX0RPVF9NSUIJCTEuMy42LjEuNC4xLjIwMjEKI2RlZmluZSBORVRTTk1QX1VDREFWSVNfRE9UX01JQl9MRU5HVEgJNwoKLyogaG93IGxvbmcgdG8gd2FpdCAoc2Vjb25kcykgZm9yIGVycm9yIHF1ZXJ5cyBiZWZvcmUgcmVzZXRpbmcgdGhlIGVycm9yIHRyYXAuKi8KI2RlZmluZSBORVRTTk1QX0VSUk9SVElNRUxFTkdUSCA2MDAgCgovKiBFeGVjIGNvbW1hbmQgdG8gZml4IFBST0MgcHJvYmxlbXMgKi8KLyogJXMgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgcHJvY2VzcyBuYW1lIGluIGVycm9yICovCgovKiAjZGVmaW5lIE5FVFNOTVBfUFJPQ0ZJWENNRCAiL3Vzci9iaW4vcGVybCAvbG9jYWwvc2NyaXB0cy9maXhwcm9jICVzIiAqLwoKLyogRXhlYyBjb21tYW5kIHRvIGZpeCBFWEVDIHByb2JsZW1zICovCi8qICVzIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGV4ZWMvc2NyaXB0IG5hbWUgaW4gZXJyb3IgKi8KCi8qICNkZWZpbmUgTkVUU05NUF9FWEVDRklYQ01EICIvdXNyL2Jpbi9wZXJsIC9sb2NhbC9zY3JpcHRzL2ZpeHByb2MgJXMiICovCgovKiBTaG91bGQgZXhlYyBvdXRwdXQgQ2FzaGluZyBiZSB1c2VkIChzcGVlZHMgdXAgdGhpbmdzIGdyZWF0bHkpLCBhbmQKICAgaWYgc28sIEFmdGVyIGhvdyBtYW55IHNlY29uZHMgc2hvdWxkIHRoZSBjYWNoZSByZS1uZXdlZD8gIE5vdGU6CiAgIERvbid0IGRlZmluZSBDQVNIRVRJTUUgdG8gZGlzYWJsZSBjYXNoaW5nIGNvbXBsZXRlbHkgKi8KCiNkZWZpbmUgTkVUU05NUF9FWENBQ0hFVElNRSAzMAojZGVmaW5lIE5FVFNOTVBfQ0FDSEVGSUxFICIuc25tcC1leGVjLWNhY2hlIgojZGVmaW5lIE5FVFNOTVBfTUFYQ0FDSEVTSVpFICgxNTAwKjgwKSAgIC8qIHJvdWdobHkgMTUwMCBsaW5lcyBtYXggKi8KCi8qIG1pc2MgZGVmYXVsdHMgKi8KCi8qIGRlZmF1bHQgb2YgMTAwIG1lZyBtaW5pbXVtIGlmIHRoZSBtaW5pbXVtIHNpemUgaXMgbm90IHNwZWNpZmllZCBpbgogICB0aGUgY29uZmlnIGZpbGUgKi8KI2RlZmluZSBORVRTTk1QX0RFRkRJU0tNSU5JTVVNU1BBQ0UgMTAwMDAwCgovKiBkZWZhdWx0IG1heGltdW0gbG9hZCBhdmVyYWdlIGJlZm9yZSBlcnJvciAqLwojZGVmaW5lIE5FVFNOTVBfREVGTUFYTE9BREFWRSAxMi4wCgovKiBtYXggdGltZXMgdG8gbG9vcCByZWFkaW5nIG91dHB1dCBmcm9tIGV4ZWNzLiAqLwovKiBCZWNhdXNlIG9mIHNsZWVwKDEpcywgdGhpcyB3aWxsIGFsc28gYmUgdGltZSB0byB3YWl0IChpbiBzZWNvbmRzKSBmb3IgZXhlYwogICB0byBmaW5pc2ggKi8KI2RlZmluZSBORVRTTk1QX01BWFJFQURDT1VOVCAxMDAKCi8qIFNldCBpZiBzbm1wZ2V0cyBzaG91bGQgYmxvY2sgYW5kIG5ldmVyIHRpbWVvdXQgKi8KLyogVGhlIG9yaWdpbmFsIENNVSBjb2RlIGhhZCB0aGlzIGhhcmRjb2RlZCBhcyA9IDEgKi8KI2RlZmluZSBORVRTTk1QX1NOTVBCTE9DSyAxCgovKiBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSByZXN0YXJ0aW5nIHRoZSBhZ2VudCBhZnRlciBhIHNubXBzZXQgdG8KICAgRVhURU5TSUJMRU1JQi5WRVJTSU9OTUlCTlVNLlZFUlJFU1RBUlRBR0VOVC4gIFRoaXMgaXMKICAgbmVjZXNzYXJ5IHRvIGZpbmlzaCB0aGUgc25tcHNldCByZXBseSBiZWZvcmUgcmVzdGFydGluZy4gKi8KI2RlZmluZSBORVRTTk1QX1JFU1RBUlRTTEVFUCA1CgovKiBVTmRlZmluZSB0byBhbGxvdyBzcGVjaWZ5aW5nIHplcm8tbGVuZ3RoIGNvbW11bml0eSBzdHJpbmcgKi8KLyogI2RlZmluZSBORVRTTk1QX05PX1pFUk9MRU5HVEhfQ09NTVVOSVRZIDEgKi8KCi8qIE51bWJlciBvZiBjb21tdW5pdHkgc3RyaW5ncyB0byBzdG9yZSAqLwojZGVmaW5lIE5FVFNOTVBfTlVNX0NPTU1VTklUSUVTCTUKCi8qIGludGVybmFsIGRlZmluZSAqLwojZGVmaW5lIE5FVFNOTVBfTEFTVEZJRUxEIC0xCgovKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KI2RlZmluZSBORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TICIiCgovKiAgUGx1Z2dhYmxlIHRyYW5zcG9ydHMuICAqLwoKLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVURQL0lQIHRyYW5zcG9ydCBkb21haW4gaXMKICAgIGF2YWlsYWJsZS4gICAqLwojdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQX0RPTUFJTgoKLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgImNhbGxiYWNrIiB0cmFuc3BvcnQgZG9tYWluIGlzCiAgICBhdmFpbGFibGUuICAgKi8KI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0NBTExCQUNLX0RPTUFJTgoKLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVENQL0lQIHRyYW5zcG9ydCBkb21haW4gaXMKICAgIGF2YWlsYWJsZS4gICovCiN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCgovKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVbml4IHRyYW5zcG9ydCBkb21haW4KICAgIChhLmsuYS4gImxvY2FsIElQQyIpIGlzIGF2YWlsYWJsZS4gICovCiN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgoKLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgQUFMNSBQVkMgdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgYXZhaWxhYmxlLiAgKi8KI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0FBTDVQVkNfRE9NQUlOCgovKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBJUFggdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgYXZhaWxhYmxlLiAgKi8KI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0lQWF9ET01BSU4KCi8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFVEUC9JUHY2IHRyYW5zcG9ydCBkb21haW4gaXMKICAgIGF2YWlsYWJsZS4gICovCiN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgoKLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVENQL0lQdjYgdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgYXZhaWxhYmxlLiAgKi8KI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RDUElQVjZfRE9NQUlOCgovKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgYXZhaWxhYmxlLiAgICovCiN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UTFNfRE9NQUlOCgovKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHN0ZGluL291dCB0cmFuc3BvcnQgZG9tYWluIGlzIGF2YWlsYWJsZS4gICAqLwojdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfU1REX0RPTUFJTgoKLyogZGVmaW5lIHRoaXMgaWYgdGhlIFVTTSBzZWN1cml0eSBtb2R1bGUgaXMgYXZhaWxhYmxlICovCiN1bmRlZiBORVRTTk1QX1NFQ01PRF9VU00KCi8qIGRlZmluZSB0aGlzIGlmIHRoZSBLU00gKGtlcmJlcm9zIGJhc2VkIHNubXApIHNlY3VyaXR5IG1vZHVsZSBpcyBhdmFpbGFibGUgKi8KI3VuZGVmIE5FVFNOTVBfU0VDTU9EX0tTTQoKLyogZGVmaW5lIHRoaXMgaWYgdGhlIGxvY2FsIHNlY3VyaXR5IG1vZHVsZSBpcyBhdmFpbGFibGUgKi8KI3VuZGVmIE5FVFNOTVBfU0VDTU9EX0xPQ0FMU00KCi8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHJlZW50cmFudC90aHJlYWRlZCBjb2RlIChpbmNvbXBsZXRlKSovCiN1bmRlZiBORVRTTk1QX1JFRU5UUkFOVAoKLyogZGVmaW5lIGlmIGNvbmZpZ3VyZWQgYXMgYSAibWluaS1hZ2VudCIgKi8KI3VuZGVmIE5FVFNOTVBfTUlOSV9BR0VOVAoKLyogZGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQgKi8KI3VuZGVmIE5FVFNOTVBfRU1CRURERURfUEVSTAoKLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXMqLwojdW5kZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCgovKiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV0LXNubXAgbWliIHRyZWUuICBJdCBzaG91bGRuJ3QgYmUKICAgY2hhbmdlZCwgYXMgdGhlIHBsYWNlcyBpdCBpcyB1c2VkIGFyZSBleHBlY3RlZCB0byBiZSBjb25zdGFudAogICB2YWx1ZXMgb3IgYXJlIGRpcmVjdGx5IHRpZWQgdG8gdGhlIFVDRC1TTk1QLU1JQi4gKi8KI2RlZmluZSBORVRTTk1QX09JRAkJODA3MgojZGVmaW5lIE5FVFNOTVBfTUlCCQkxLDMsNiwxLDQsMSw4MDcyCiNkZWZpbmUgTkVUU05NUF9ET1RfTUlCCQkxLjMuNi4xLjQuMS44MDcyCiNkZWZpbmUgTkVUU05NUF9ET1RfTUlCX0xFTkdUSAk3CgovKiBwYXR0ZXJuIGZvciB0ZW1wb3JhcnkgZmlsZSBuYW1lcyAqLwojZGVmaW5lIE5FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4gIi90bXAvc25tcGRYWFhYWFgiCgovKgogKiB0aGlzIG11c3QgYmUgYmVmb3JlIHRoZSBzeXN0ZW0vbWFjaGluZSBpbmNsdWRlcywgdG8gYWxsb3cgdGhlbSB0bwogKiBvdmVycmlkZSBhbmQgdHVybiBvZmYgaW5saW5pbmcuIFRvIGRvIHNvLCB0aGV5IHNob3VsZCBkbyB0aGUKICogZm9sbG93aW5nOgogKgogKiAgICAjdW5kZWYgTkVUU05NUF9FTkFCTEVfSU5MSU5FCiAqICAgICNkZWZpbmUgTkVUU05NUF9FTkFCTEVfSU5MSU5FIDAKICoKICogQSB1c2VyIGhhdmluZyBwcm9ibGVtcyB3aXRoIHRoZWlyIGNvbXBpbGVyIGNhbiBhbHNvIHR1cm4gb2ZmCiAqIHRoZSB1c2Ugb2YgaW5saW5lIGJ5IGRlZmluaW5nIE5FVFNOTVBfTk9fSU5MSU5FIHZpYSB0aGVpciBjZmxhZ3M6CiAqCiAqICAgIC1ETkVUU05NUF9OT19JTkxJTkUKICoKICogSGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMgc2hvdWxkIG9ubHkgdGVzdCBhZ2FpbnN0IE5FVFNOTVBfVVNFX0lOTElORToKICoKICogICAjaWZkZWYgTkVUU05NUF9VU0VfSU5MSU5FCiAqICAgTkVUU05NUF9JTkxJTkUgZnVuY3Rpb24oaW50IHBhcm0pIHsgcmV0dXJuIHBhcm0gLTE7IH0KICogICAjZW5kaWYKICoKICogRnVuY3Rpb25zIHdoaWNoIHNob3VsZCBiZSBzdGF0aWMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgaW5saW5lCiAqIGlzIGF2YWlsYWJsZSBvciBlbmFibGVkIHNob3VsZCB1c2UgdGhlIE5FVFNOTVBfU1RBVElDX0lOTElORSBtYWNybywKICogbGlrZSBzbzoKICoKICogICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIGZ1bmN0aW9uKGludCBwYXJtKSB7IHJldHVybiBwYXJtIC0xOyB9CiAqCiAqIE5PVCBsaWtlIHRoaXM6CiAqCiAqICAgIHN0YXRpYyBORVRTTk1QX0lOTElORSBmdW5jdGlvbihpbnQgcGFybSkgeyByZXR1cm4gcGFybSAtMTsgfQogKgogKi8KI2lmZGVmIE5FVFNOTVBfQlJPS0VOX0lOTElORQojICAgZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lOTElORSAwCiNlbHNlCiMgICBkZWZpbmUgTkVUU05NUF9FTkFCTEVfSU5MSU5FIDEKI2VuZGlmCgojaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKI2luY2x1ZGUgTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRQoKI2lmIE5FVFNOTVBfRU5BQkxFX0lOTElORSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0lOTElORSkKIyAgIGRlZmluZSBORVRTTk1QX1VTRV9JTkxJTkUgMQojICAgaWZuZGVmIE5FVFNOTVBfSU5MSU5FCiMgICAgICBkZWZpbmUgTkVUU05NUF9JTkxJTkUgaW5saW5lCiMgICBlbmRpZgojICAgaWZuZGVmIE5FVFNOTVBfU1RBVElDX0lOTElORQojICAgICAgZGVmaW5lIE5FVFNOTVBfU1RBVElDX0lOTElORSBzdGF0aWMgaW5saW5lCiMgICBlbmRpZgojZWxzZQojICAgZGVmaW5lIE5FVFNOTVBfSU5MSU5FIAojICAgZGVmaW5lIE5FVFNOTVBfU1RBVElDX0lOTElORSBzdGF0aWMKI2VuZGlmCgojaWZuZGVmIE5FVFNOTVBfSU1QT1JUCiMgIGRlZmluZSBORVRTTk1QX0lNUE9SVCBleHRlcm4KI2VuZGlmCgovKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydCAqLwojdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNgoKLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IGJ5IGRlZmF1bHQgKi8KI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgKCi8qIGRlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5ICovCiN1bmRlZiBORVRTTk1QX0FHRU5UWF9ET01fU09DS19PTkxZCgovKiBkZWZpbmUgaWYgeW91IGRvIG5vdCB3YW50IHNubXB0cmFwZCB0byByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnQgKi8KI3VuZGVmIE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCgovKiBkZWZpbmUgdGhpcyBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IE1JVCBjcnlwdG8gQVBJICovCiN1bmRlZiBORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQKCi8qIGRlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zICovCiN1bmRlZiBORVRTTk1QX1VTRV9LRVJCRVJPU19IRUlNREFMCgovKiBjb21tZW50IHRoZSBuZXh0IGxpbmUgaWYgeW91IGFyZSBjb21waWxpbmcgd2l0aCBsaWJzbm1wLmggCiAgIGFuZCBhcmUgbm90IHVzaW5nIHRoZSBVQy1EYXZpcyBTTk1QIGxpYnJhcnkuICovCiNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCgovKiBhZGQgaW4gcmVjZW50IENNVSBsaWJyYXJ5IGV4dGVuc2lvbnMgKG5vdCBjb21wbGV0ZSkgKi8KI3VuZGVmIENNVV9DT01QQVRJQkxFCgovKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCiNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoU1RSVUNUX05MSVNUX0hBU19OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiNlbmRpZgoKCi8qICoqKioqKioqKiBORVRTTk1QX01BUktfQkVHSU5fTEVHQUNZX0RFRklOSVRJT05TICoqKioqKioqKi8KLyogCiAqIGV4aXN0aW5nIGRlZmluaXRpb25zIHByaW9yIHRvIE5ldC1TTk1QIDUuNAogKgogKiBkbyBub3QgYWRkIGFueXRoaW5nIG5ldyBoZXJlCiAqCiAqLwoKI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUwoKI2lmZGVmIE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04KIyBkZWZpbmUgREVGQVVMVF9TTk1QX1ZFUlNJT04gTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1NOTVBWMQojIGRlZmluZSBTTk1QVjEgTkVUU05NUF9TTk1QVjEKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9TTk1QVjJBTlkKIyBkZWZpbmUgU05NUFYyQU5ZIE5FVFNOTVBfU05NUFYyQU5ZCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfU05NUFYyQVVUSAojIGRlZmluZSBTTk1QVjJBVVRIIE5FVFNOTVBfU05NUFYyQVVUSAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCUwojIGRlZmluZSBERUZBVUxUX01JQlMgTkVUU05NUF9ERUZBVUxUX01JQlMKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9ERUZBVUxUX01JQkRJUlMKIyBkZWZpbmUgREVGQVVMVF9NSUJESVJTIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUwojIGRlZmluZSBERUZBVUxUX01JQkZJTEVTIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUwojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKIyBkZWZpbmUgT1BBUVVFX1NQRUNJQUxfVFlQRVMgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCiMgZGVmaW5lIFNDQVBJX0FVVEhQUklWIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQojIGRlZmluZSBVU0VfSU5URVJOQUxfTUQ1IE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1VTRV9QS0NTMTEKIyBkZWZpbmUgVVNFX1BLQ1MgTkVUU05NUF9VU0VfUEtDUzExCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wKIyBkZWZpbmUgVVNFX09QRU5TU0wgTkVUU05NUF9VU0VfT1BFTlNTTAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX05PX0RFQlVHR0lORwojIGRlZmluZSBTTk1QX05PX0RFQlVHR0lORyBORVRTTk1QX05PX0RFQlVHR0lORwojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0FMV0FZU19ERUJVRwojIGRlZmluZSBTTk1QX0FMV0FZU19ERUJVRyBORVRTTk1QX0FMV0FZU19ERUJVRwojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1VTRV9SRVZFUlNFX0FTTkVOQ09ESU5HCiMgZGVmaW5lIFVTRV9SRVZFUlNFX0FTTkVOQ09ESU5HIE5FVFNOTVBfVVNFX1JFVkVSU0VfQVNORU5DT0RJTkcKI2VuZGlmCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfQVNORU5DT0RJTkdfRElSRUNUSU9OCiMgZGVmaW5lIERFRkFVTFRfQVNORU5DT0RJTkdfRElSRUNUSU9OIE5FVFNOTVBfREVGQVVMVF9BU05FTkNPRElOR19ESVJFQ1RJT04KI2VuZGlmCgojZGVmaW5lIFBFUlNJU1RFTlRfRElSRUNUT1JZIE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkKI2RlZmluZSBQRVJTSVNURU5UX01BU0sgTkVUU05NUF9QRVJTSVNURU5UX01BU0sKI2RlZmluZSBBR0VOVF9ESVJFQ1RPUllfTU9ERSBORVRTTk1QX0FHRU5UX0RJUkVDVE9SWV9NT0RFCiNkZWZpbmUgTUFYX1BFUlNJU1RFTlRfQkFDS1VQUyBORVRTTk1QX01BWF9QRVJTSVNURU5UX0JBQ0tVUFMKI2RlZmluZSBTWVNURU1fSU5DTFVERV9GSUxFIE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRQojZGVmaW5lIE1BQ0hJTkVfSU5DTFVERV9GSUxFIE5FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEUKCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1NFTkRfQlVGCiMgZGVmaW5lIERFRkFVTFRfU0VSVkVSX1NFTkRfQlVGIE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfU0VORF9CVUYKI2VuZGlmCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGCiMgZGVmaW5lIERFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGIE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfUkVDVl9CVUYKI2VuZGlmCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1NFTkRfQlVGCiMgZGVmaW5lIERFRkFVTFRfQ0xJRU5UX1NFTkRfQlVGIE5FVFNOTVBfREVGQVVMVF9DTElFTlRfU0VORF9CVUYKI2VuZGlmCiNpZmRlZiBORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1JFQ1ZfQlVGCiMgZGVmaW5lIERFRkFVTFRfQ0xJRU5UX1JFQ1ZfQlVGIE5FVFNOTVBfREVGQVVMVF9DTElFTlRfUkVDVl9CVUYKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9MT0dGSUxFCiMgZGVmaW5lIExPR0ZJTEUgTkVUU05NUF9MT0dGSUxFCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfU1lTX0NPTlRBQ1QKIyBkZWZpbmUgU1lTX0NPTlRBQ1QgTkVUU05NUF9TWVNfQ09OVEFDVAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1NZU19MT0MKIyBkZWZpbmUgU1lTX0xPQyBORVRTTk1QX1NZU19MT0MKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9VU0VfTElCV1JBUAojIGRlZmluZSBVU0VfTElCV1JBUCBORVRTTk1QX1VTRV9MSUJXUkFQCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAKIyBkZWZpbmUgU05NUF9URVNUSU5HX0NPREUgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MKIyBkZWZpbmUgTk9fUk9PVF9BQ0NFU1MgTkVUU05NUF9OT19ST09UX0FDQ0VTUwojZW5kaWYKCiNpZmRlZiBORVRTTk1QX05PX0tNRU1fVVNBR0UKIyBkZWZpbmUgTk9fS01FTV9VU0FHRSBORVRTTk1QX05PX0tNRU1fVVNBR0UKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKIyBkZWZpbmUgTk9fRFVNTVlfVkFMVUVTIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCiNlbmRpZgoKI2RlZmluZSBWRVJTX0RFU0MgICAgIE5FVFNOTVBfVkVSU19ERVNDCiNkZWZpbmUgU1lTX05BTUUgICAgICBORVRTTk1QX1NZU19OQU1FCgojZGVmaW5lIFBST0NNSUJOVU0gICAgTkVUU05NUF9QUk9DTUlCTlVNCiNkZWZpbmUgU0hFTExNSUJOVU0gICBORVRTTk1QX1NIRUxMTUlCTlVNCiNkZWZpbmUgTUVNTUlCTlVNICAgICBORVRTTk1QX01FTU1JQk5VTQojZGVmaW5lIERJU0tNSUJOVU0gICAgTkVUU05NUF9ESVNLTUlCTlVNCgojZGVmaW5lIExPQURBVkVNSUJOVU0gTkVUU05NUF9MT0FEQVZFTUlCTlVNCiNkZWZpbmUgVkVSU0lPTk1JQk5VTSBORVRTTk1QX1ZFUlNJT05NSUJOVU0KI2RlZmluZSBFUlJPUk1JQk5VTSAgIE5FVFNOTVBfRVJST1JNSUJOVU0KI2RlZmluZSBBR0VOVElEICAgICAgIE5FVFNOTVBfQUdFTlRJRAoKI2RlZmluZSBIUFVYOUlEICAgICAgIE5FVFNOTVBfSFBVWDlJRAojZGVmaW5lIFNVTk9TNElEICAgICAgTkVUU05NUF9TVU5PUzRJRAojZGVmaW5lIFNPTEFSSVNJRCAgICAgTkVUU05NUF9TT0xBUklTSUQKI2RlZmluZSBPU0ZJRCAgICAgICAgIE5FVFNOTVBfT1NGSUQKI2RlZmluZSBVTFRSSVhJRCAgICAgIE5FVFNOTVBfVUxUUklYSUQKI2RlZmluZSBIUFVYMTBJRCAgICAgIE5FVFNOTVBfSFBVWDEwSUQKI2RlZmluZSBORVRCU0QxSUQgICAgIE5FVFNOTVBfTkVUQlNEMUlECiNkZWZpbmUgRlJFRUJTRElEICAgICBORVRTTk1QX0ZSRUVCU0RJRAojZGVmaW5lIElSSVhJRCAgICAgICAgTkVUU05NUF9JUklYSUQKI2RlZmluZSBMSU5VWElEICAgICAgIE5FVFNOTVBfTElOVVhJRAojZGVmaW5lIEJTRElJRCAgICAgICAgTkVUU05NUF9CU0RJSUQKI2RlZmluZSBPUEVOQlNESUQgICAgIE5FVFNOTVBfT1BFTkJTRElECiNkZWZpbmUgV0lOMzJJRCAgICAgICBORVRTTk1QX1dJTjMySUQKI2RlZmluZSBIUFVYMTFJRCAgICAgIE5FVFNOTVBfSFBVWDExSUQKI2RlZmluZSBBSVhJRCAgICAgICAgIE5FVFNOTVBfQUlYSUQKI2RlZmluZSBNQUNPU1hJRCAgICAgIE5FVFNOTVBfTUFDT1NYSUQKI2RlZmluZSBVTktOT1dOSUQgICAgIE5FVFNOTVBfVU5LTk9XTklECgojZGVmaW5lIEVOVEVSUFJJU0VfT0lEICAgICAgICAgICAgTkVUU05NUF9FTlRFUlBSSVNFX09JRAojZGVmaW5lIEVOVEVSUFJJU0VfTUlCICAgICAgICAgICAgTkVUU05NUF9FTlRFUlBSSVNFX01JQgojZGVmaW5lIEVOVEVSUFJJU0VfRE9UX01JQiAgICAgICAgTkVUU05NUF9FTlRFUlBSSVNFX0RPVF9NSUIKI2RlZmluZSBFTlRFUlBSSVNFX0RPVF9NSUJfTEVOR1RIIE5FVFNOTVBfRU5URVJQUklTRV9ET1RfTUlCX0xFTkdUSAoKI2RlZmluZSBTWVNURU1fTUlCCQkgIE5FVFNOTVBfU1lTVEVNX01JQgojZGVmaW5lIFNZU1RFTV9ET1RfTUlCCQkgIE5FVFNOTVBfU1lTVEVNX0RPVF9NSUIKI2RlZmluZSBTWVNURU1fRE9UX01JQl9MRU5HVEgJICBORVRTTk1QX1NZU1RFTV9ET1RfTUlCX0xFTkdUSAoKI2RlZmluZSBOT1RJRklDQVRJT05fTUlCCSAgICBORVRTTk1QX05PVElGSUNBVElPTl9NSUIJCiNkZWZpbmUgTk9USUZJQ0FUSU9OX0RPVF9NSUIJICAgIE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUIKI2RlZmluZSBOT1RJRklDQVRJT05fRE9UX01JQl9MRU5HVEggTkVUU05NUF9OT1RJRklDQVRJT05fRE9UX01JQl9MRU5HVEgKCiNkZWZpbmUgVUNEQVZJU19PSUQJCSAgTkVUU05NUF9VQ0RBVklTX09JRAojZGVmaW5lIFVDREFWSVNfTUlCCQkgIE5FVFNOTVBfVUNEQVZJU19NSUIKI2RlZmluZSBVQ0RBVklTX0RPVF9NSUIJCSAgTkVUU05NUF9VQ0RBVklTX0RPVF9NSUIKI2RlZmluZSBVQ0RBVklTX0RPVF9NSUJfTEVOR1RICSAgTkVUU05NUF9VQ0RBVklTX0RPVF9NSUJfTEVOR1RICgojZGVmaW5lIEVSUk9SVElNRUxFTkdUSCBORVRTTk1QX0VSUk9SVElNRUxFTkdUSAoKI2lmZGVmIE5FVFNOTVBfUFJPQ0ZJWENNRAojIGRlZmluZSBQUk9DRklYQ01EIE5FVFNOTVBfUFJPQ0ZJWENNRAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0VYRUNGSVhDTUQKIyBkZWZpbmUgRVhFQ0ZJWENNRCBORVRTTk1QX0VYRUNGSVhDTUQKI2VuZGlmCgojZGVmaW5lIEVYQ0FDSEVUSU1FICBORVRTTk1QX0VYQ0FDSEVUSU1FCiNkZWZpbmUgQ0FDSEVGSUxFICAgIE5FVFNOTVBfQ0FDSEVGSUxFCiNkZWZpbmUgTUFYQ0FDSEVTSVpFIE5FVFNOTVBfTUFYQ0FDSEVTSVpFCgojZGVmaW5lIERFRkRJU0tNSU5JTVVNU1BBQ0UgTkVUU05NUF9ERUZESVNLTUlOSU1VTVNQQUNFCiNkZWZpbmUgREVGTUFYTE9BREFWRSBORVRTTk1QX0RFRk1BWExPQURBVkUKI2RlZmluZSBNQVhSRUFEQ09VTlQgTkVUU05NUF9NQVhSRUFEQ09VTlQKCiNkZWZpbmUgU05NUEJMT0NLIE5FVFNOTVBfU05NUEJMT0NLCiNkZWZpbmUgUkVTVEFSVFNMRUVQIE5FVFNOTVBfUkVTVEFSVFNMRUVQCgojZGVmaW5lIE5VTV9DT01NVU5JVElFUwlORVRTTk1QX05VTV9DT01NVU5JVElFUwoKI2lmZGVmIE5FVFNOTVBfTk9fWkVST0xFTkdUSF9DT01NVU5JVFkKIyBkZWZpbmUgTk9fWkVST0xFTkdUSF9DT01NVU5JVFkgTkVUU05NUF9OT19aRVJPTEVOR1RIX0NPTU1VTklUWQojZW5kaWYKCiNkZWZpbmUgTEFTVEZJRUxEIE5FVFNOTVBfTEFTVEZJRUxECgojZGVmaW5lIENPTkZJR1VSRV9PUFRJT05TIE5FVFNOTVBfQ09ORklHVVJFX09QVElPTlMKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBfRE9NQUlOCiMgZGVmaW5lIFNOTVBfVFJBTlNQT1JUX1VEUF9ET01BSU4gTkVUU05NUF9UUkFOU1BPUlRfVURQX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9DQUxMQkFDS19ET01BSU4KIyBkZWZpbmUgU05NUF9UUkFOU1BPUlRfQ0FMTEJBQ0tfRE9NQUlOIE5FVFNOTVBfVFJBTlNQT1JUX0NBTExCQUNLX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCiMgZGVmaW5lIFNOTVBfVFJBTlNQT1JUX1RDUF9ET01BSU4gTkVUU05NUF9UUkFOU1BPUlRfVENQX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgojIGRlZmluZSBTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTiBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9BQUw1UFZDX0RPTUFJTgojIGRlZmluZSBTTk1QX1RSQU5TUE9SVF9BQUw1UFZDX0RPTUFJTiBORVRTTk1QX1RSQU5TUE9SVF9BQUw1UFZDX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9JUFhfRE9NQUlOCiMgZGVmaW5lIFNOTVBfVFJBTlNQT1JUX0lQWF9ET01BSU4gTkVUU05NUF9UUkFOU1BPUlRfSVBYX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgojIGRlZmluZSBTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTgojIGRlZmluZSBTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UTFNfRE9NQUlOCiMgZGVmaW5lIFNOTVBfVFJBTlNQT1JUX1RMU19ET01BSU4gTkVUU05NUF9UUkFOU1BPUlRfVExTX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TVERfRE9NQUlOCiMgZGVmaW5lIFNOTVBfVFJBTlNQT1JUX1NURF9ET01BSU4gTkVUU05NUF9UUkFOU1BPUlRfU1REX0RPTUFJTgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KIyBkZWZpbmUgU05NUF9TRUNNT0RfVVNNIE5FVFNOTVBfU0VDTU9EX1VTTQojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1NFQ01PRF9LU00KIyBkZWZpbmUgU05NUF9TRUNNT0RfS1NNIE5FVFNOTVBfU0VDTU9EX0tTTQojZW5kaWYKCiNpZmRlZiBORVRTTk1QX1NFQ01PRF9MT0NBTFNNIAojIGRlZmluZSBTTk1QX1NFQ01PRF9MT0NBTFNNIE5FVFNOTVBfU0VDTU9EX0xPQ0FMU00KI2VuZGlmCgojaWZkZWYgTkVUU05NUF9SRUVOVFJBTlQKIyBkZWZpbmUgTlNfUkVFTlRSQU5UIE5FVFNOTVBfUkVFTlRSQU5UCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKIyBkZWZpbmUgSU5FVDYgTkVUU05NUF9FTkFCTEVfSVBWNgojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0VOQUJMRV9MT0NBTF9TTVVYCiMgZGVmaW5lIExPQ0FMX1NNVVggTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0FHRU5UWF9ET01fU09DS19PTkxZCiMgZGVmaW5lIEFHRU5UWF9ET01fU09DS19PTkxZIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKIyBkZWZpbmUgU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVAojIGRlZmluZSBNSVRfTkVXX0NSWVBUTyBORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTAojIGRlZmluZSBIRUlNREFMIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9BR0VOVFhfU09DS0VUCiMgZGVmaW5lIEFHRU5UWF9TT0NLRVQgTkVUU05NUF9BR0VOVFhfU09DS0VUCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwojIGRlZmluZSBESVNBQkxFX01JQl9MT0FESU5HIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0RJU0FCTEVfU05NUFYxCiMgZGVmaW5lIERJU0FCTEVfU05NUFYxIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIyBkZWZpbmUgRElTQUJMRV9TTk1QVjJDIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAojIGRlZmluZSBESVNBQkxFX1NFVF9TVVBQT1JUIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCiMgZGVmaW5lIERJU0FCTEVfREVTIE5FVFNOTVBfRElTQUJMRV9ERVMKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9ESVNBQkxFX01ENQojIGRlZmluZSBESVNBQkxFX01ENSBORVRTTk1QX0RJU0FCTEVfTUQ1CiNlbmRpZgoKI2lmZGVmIE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QKIyBkZWZpbmUgRE9OVF9VU0VfTkxJU1QgTkVUU05NUF9ET05UX1VTRV9OTElTVAojZW5kaWYKCiNpZmRlZiBORVRTTk1QX0NBTl9VU0VfTkxJU1QKIyBkZWZpbmUgQ0FOX1VTRV9OTElTVCBORVRTTk1QX0NBTl9VU0VfTkxJU1QKI2VuZGlmCgojaWZkZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAojIGRlZmluZSBDQU5fVVNFX1NZU0NUTCBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCiNlbmRpZgoKI2VuZGlmIC8qIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TICovCgoKI2VuZGlmIC8qIE5FVF9TTk1QX0NPTkZJR19IICovCg==