LyoKICogTW90aW9uIEV5ZSB2aWRlbzRsaW51eCBkcml2ZXIgZm9yIFNvbnkgVmFpbyBQaWN0dXJlQm9vawogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBBbGP0dmUgPHd3dy5hbGNvdmUuY29tPgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMDAgQW5kcmV3IFRyaWRnZWxsIDx0cmlkZ2VAdmFsaW51eC5jb20+CiAqCiAqIEVhcmxpZXIgd29yayBieSBXZXJuZXIgQWxtZXNiZXJnZXIsIFBhdWwgYFJ1c3R5JyBSdXNzZWxsIGFuZCBQYXVsIE1hY2tlcnJhcy4KICoKICogU29tZSBwYXJ0cyBib3Jyb3dlZCBmcm9tIHZhcmlvdXMgdmlkZW80bGludXggZHJpdmVycywgZXNwZWNpYWxseQogKiBidHR2LWRyaXZlci5jIGFuZCB6b3Jhbi5jLCBzZWUgb3JpZ2luYWwgZmlsZXMgZm9yIGNyZWRpdHMuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgogKi8KCiNpZm5kZWYgX01FWUVfUFJJVl9IXwojZGVmaW5lIF9NRVlFX1BSSVZfSF8KCiNkZWZpbmUgTUVZRV9EUklWRVJfTUFKT1JWRVJTSU9OCSAxCiNkZWZpbmUgTUVZRV9EUklWRVJfTUlOT1JWRVJTSU9OCTEzCgojZGVmaW5lIE1FWUVfRFJJVkVSX1ZFUlNJT04gX19zdHJpbmdpZnkoTUVZRV9EUklWRVJfTUFKT1JWRVJTSU9OKSAiLiIgXAoJCQkgICAgX19zdHJpbmdpZnkoTUVZRV9EUklWRVJfTUlOT1JWRVJTSU9OKQoKI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgojaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgojaW5jbHVkZSA8bGludXgva2ZpZm8uaD4KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBNb3Rpb24gSlBFRyBjaGlwIHJlZ2lzdGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBNb3Rpb24gSlBFRyBjaGlwIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAqLwojZGVmaW5lIE1DSElQX1BDSV9QT1dFUl9DU1IJCTB4NTQKI2RlZmluZSBNQ0hJUF9QQ0lfTUNPUkVfU1RBVFVTCQkweDYwCQkvKiBzZWUgSElDX1NUQVRVUyAgICovCiNkZWZpbmUgTUNISVBfUENJX0hPU1RVU0VSRVFfU0VUCTB4NjQKI2RlZmluZSBNQ0hJUF9QQ0lfSE9TVFVTRVJFUV9DTFIJMHg2OAojZGVmaW5lIE1DSElQX1BDSV9MT1dQT1dFUl9TRVQJCTB4NmMKI2RlZmluZSBNQ0hJUF9QQ0lfTE9XUE9XRVJfQ0xSCQkweDcwCiNkZWZpbmUgTUNISVBfUENJX1NPRlRSRVNFVF9TRVQJCTB4NzQKCi8qIE1vdGlvbiBKUEVHIGNoaXAgbWVtb3J5IG1hcHBlZCByZWdpc3RlcnMgKi8KI2RlZmluZSBNQ0hJUF9NTV9SRUdTCQkJMHgyMDAJCS8qIDUxMiBieXRlcyAgICAgICAgKi8KI2RlZmluZSBNQ0hJUF9SRUdfVElNRU9VVAkJMTAwMAkJLyogcmVnIGFjY2VzcywgfnVzICAqLwojZGVmaW5lIE1DSElQX01DQ19WUkpfVElNRU9VVAkJMTAwMAkJLyogTUNDICYgVlJKIGFjY2VzcyAqLwoKI2RlZmluZSBNQ0hJUF9NTV9QQ0lfTU9ERQkJMHgwMAkJLyogUENJIGFjY2VzcyBtb2RlICovCiNkZWZpbmUgTUNISVBfTU1fUENJX01PREVfUkVUUlkJCTB4MDAwMDAwMDEJLyogcmV0cnkgbW9kZSAqLwojZGVmaW5lIE1DSElQX01NX1BDSV9NT0RFX01BU1RFUgkweDAwMDAwMDAyCS8qIG1hc3RlciBhY2Nlc3MgKi8KI2RlZmluZSBNQ0hJUF9NTV9QQ0lfTU9ERV9SRUFEX0xJTkUJMHgwMDAwMDAwNAkvKiByZWFkIGxpbmUgKi8KCiNkZWZpbmUgTUNISVBfTU1fSU5UQQkJCTB4MDQJCS8qIEludCBzdGF0dXMvbWFzayAqLwojZGVmaW5lIE1DSElQX01NX0lOVEFfTUNDCQkweDAwMDAwMDAxCS8qIE1DQyBpbnRlcnJ1cHQgKi8KI2RlZmluZSBNQ0hJUF9NTV9JTlRBX1ZSSgkJMHgwMDAwMDAwMgkvKiBWUkogaW50ZXJydXB0ICovCiNkZWZpbmUgTUNISVBfTU1fSU5UQV9ISUNfMQkJMHgwMDAwMDAwNAkvKiBvbmUgZnJhbWUgZG9uZSAqLwojZGVmaW5lIE1DSElQX01NX0lOVEFfSElDXzFfTUFTSwkweDAwMDAwNDAwCS8qIDE6IGVuYWJsZSAqLwojZGVmaW5lIE1DSElQX01NX0lOVEFfSElDX0VORAkJMHgwMDAwMDAwOAkvKiBhbGwgZnJhbWVzIGRvbmUgKi8KI2RlZmluZSBNQ0hJUF9NTV9JTlRBX0hJQ19FTkRfTUFTSwkweDAwMDAwODAwCiNkZWZpbmUgTUNISVBfTU1fSU5UQV9KUEVHCQkweDAwMDAwMDEwCS8qIGRlY29tcHJlc3MuIGVycm9yICovCiNkZWZpbmUgTUNISVBfTU1fSU5UQV9KUEVHX01BU0sJCTB4MDAwMDEwMDAKI2RlZmluZSBNQ0hJUF9NTV9JTlRBX0NBUFRVUkUJCTB4MDAwMDAwMjAJLyogY2FwdHVyZSBlbmQgKi8KI2RlZmluZSBNQ0hJUF9NTV9JTlRBX1BDSV9FUlIJCTB4MDAwMDAwNDAJLyogUENJIGVycm9yICovCiNkZWZpbmUgTUNISVBfTU1fSU5UQV9QQ0lfRVJSX01BU0sJMHgwMDAwNDAwMAoKI2RlZmluZSBNQ0hJUF9NTV9QVF9BRERSCQkweDA4CQkvKiBwYWdlIHRhYmxlIGFkZHJlc3MqLwoJCQkJCQkJLyogbio0a0IgKi8KI2RlZmluZSBNQ0hJUF9OQl9QQUdFUwkJCTEwMjQJCS8qIHBhZ2VzIGZvciBkaXNwbGF5ICovCiNkZWZpbmUgTUNISVBfTkJfUEFHRVNfTUpQRUcJCTI1NgkJLyogcGFnZXMgZm9yIG1qcGVnICovCgojZGVmaW5lIE1DSElQX01NX0ZJUihuKQkJCSgweDBjKyhuKSo0KQkvKiBGcmFtZSBpbmZvIDAtMyAqLwojZGVmaW5lIE1DSElQX01NX0ZJUl9SRFkJCTB4MDAwMDAwMDEJLyogZnJhbWUgcmVhZHkgKi8KI2RlZmluZSBNQ0hJUF9NTV9GSVJfRkFJTEZSX01BU0sJMHhmODAwMDAwMAkvKiAjIG9mIGZhaWxlZCBmcmFtZXMgKi8KI2RlZmluZSBNQ0hJUF9NTV9GSVJfRkFJTEZSX1NISUZUCTI3CgoJLyogY29udGludW91cyBjb21wL2RlY29tcCBtb2RlICovCiNkZWZpbmUgTUNISVBfTU1fRklSX0NfRU5ETF9NQVNLCTB4MDAwMDA3ZmUJLyogZW5kIERXIFsxMF0gKi8KI2RlZmluZSBNQ0hJUF9NTV9GSVJfQ19FTkRMX1NISUZUCTEKI2RlZmluZSBNQ0hJUF9NTV9GSVJfQ19FTkRQX01BU0sJMHgwMDA3ZjgwMAkvKiBlbmQgcGFnZSBbOF0gKi8KI2RlZmluZSBNQ0hJUF9NTV9GSVJfQ19FTkRQX1NISUZUCTExCiNkZWZpbmUgTUNISVBfTU1fRklSX0NfU1RBUlRQX01BU0sJMHgwN2Y4MDAwMAkvKiBzdGFydCBwYWdlIFs4XSAqLwojZGVmaW5lIE1DSElQX01NX0ZJUl9DX1NUQVJUUF9TSElGVAkxOQoKCS8qIGNvbnRpbnVvdXMgcGljdHVyZSBvdXRwdXQgbW9kZSAqLwojZGVmaW5lIE1DSElQX01NX0ZJUl9PX1NUQVJUUF9NQVNLCTB4N2ZmZTAwMDAJLyogc3RhcnQgcGFnZSBbMTBdICovCiNkZWZpbmUgTUNISVBfTU1fRklSX09fU1RBUlRQX1NISUZUCTE3CgojZGVmaW5lIE1DSElQX01NX0ZJRk9fREFUQQkJMHgxYwkJLyogUENJIFRHVCBGSUZPIGRhdGEgKi8KI2RlZmluZSBNQ0hJUF9NTV9GSUZPX1NUQVRVUwkJMHgyMAkJLyogUENJIFRHVCBGSUZPIHN0YXQgKi8KI2RlZmluZSBNQ0hJUF9NTV9GSUZPX01BU0sJCTB4MDAwMDAwMDMKI2RlZmluZSBNQ0hJUF9NTV9GSUZPX1dBSVRfT1JfUkVBRFkJMHgwMDAwMDAwMiAgICAgIC8qIEJpdHMgY29tbW9uIHRvIFdBSVQgJiBSRUFEWSovCiNkZWZpbmUgTUNISVBfTU1fRklGT19JRExFCQkweDAJCS8qIEhJQyBpZGxlICovCiNkZWZpbmUgTUNISVBfTU1fRklGT19JRExFMQkJMHgxCQkvKiBpZGVtID8/PyAqLwojZGVmaW5lCU1DSElQX01NX0ZJRk9fV0FJVAkJMHgyCQkvKiB3YWl0IHJlcXVlc3QgKi8KI2RlZmluZSBNQ0hJUF9NTV9GSUZPX1JFQURZCQkweDMJCS8qIGRhdGEgcmVhZHkgKi8KCiNkZWZpbmUgTUNISVBfSElDX0hPU1RfVVNFUkVRCQkweDQwCQkvKiBob3N0IHVzZXMgTUNPUkUgKi8KCiNkZWZpbmUgTUNISVBfSElDX1RQX0JVU1kJCTB4NDQJCS8qIHRha2luZyBwaWN0dXJlICovCgojZGVmaW5lIE1DSElQX0hJQ19QSUNfU0FWRUQJCTB4NDgJCS8qIHBpYyBpbiBTRFJBTSAqLwoKI2RlZmluZSBNQ0hJUF9ISUNfTE9XUE9XRVIJCTB4NGMJCS8qIGNsb2NrIHN0b3BwZWQgKi8KCiNkZWZpbmUgTUNISVBfSElDX0NUTAkJCTB4NTAJCS8qIEhJQyBjb250cm9sICovCiNkZWZpbmUgTUNISVBfSElDX0NUTF9TT0ZUX1JFU0VUCTB4MDAwMDAwMDEJLyogTUNPUkUgcmVzZXQgKi8KI2RlZmluZSBNQ0hJUF9ISUNfQ1RMX01DT1JFX1JEWQkJMHgwMDAwMDAwMgkvKiBNQ09SRSByZWFkeSAqLwoKI2RlZmluZSBNQ0hJUF9ISUNfQ01ECQkJMHg1NAkJLyogSElDIGNvbW1hbmQgKi8KI2RlZmluZSBNQ0hJUF9ISUNfQ01EX0JJVFMJCTB4MDAwMDAwMDMgICAgICAvKiBjbWQgd2lkdGg9WzE6MF0qLwojZGVmaW5lIE1DSElQX0hJQ19DTURfTk9PUAkJMHgwCiNkZWZpbmUgTUNISVBfSElDX0NNRF9TVEFSVAkJMHgxCiNkZWZpbmUgTUNISVBfSElDX0NNRF9TVE9QCQkweDIKCiNkZWZpbmUgTUNISVBfSElDX01PREUJCQkweDU4CiNkZWZpbmUgTUNISVBfSElDX01PREVfTk9PUAkJMHgwCiNkZWZpbmUgTUNISVBfSElDX01PREVfU1RJTExfQ0FQCTB4MQkJLyogc3RpbGwgcGljIGNhcHQgKi8KI2RlZmluZSBNQ0hJUF9ISUNfTU9ERV9ESVNQTEFZCQkweDIJCS8qIGRpc3BsYXkgKi8KI2RlZmluZSBNQ0hJUF9ISUNfTU9ERV9TVElMTF9DT01QCTB4MwkJLyogc3RpbGwgcGljIGNvbXAuICovCiNkZWZpbmUgTUNISVBfSElDX01PREVfU1RJTExfREVDT01QCTB4NAkJLyogc3RpbGwgcGljIGRlY29tcC4gKi8KI2RlZmluZSBNQ0hJUF9ISUNfTU9ERV9DT05UX0NPTVAJMHg1CQkvKiBjb250IGNhcHQrY29tcCAqLwojZGVmaW5lIE1DSElQX0hJQ19NT0RFX0NPTlRfREVDT01QCTB4NgkJLyogY29udCBkZWNvbXArZGlzcCAqLwojZGVmaW5lIE1DSElQX0hJQ19NT0RFX1NUSUxMX09VVAkweDcJCS8qIHN0aWxsIHBpYyBvdXRwdXQgKi8KI2RlZmluZSBNQ0hJUF9ISUNfTU9ERV9DT05UX09VVAkJMHg4CQkvKiBjb250IG91dHB1dCAqLwoKI2RlZmluZSBNQ0hJUF9ISUNfU1RBVFVTCQkweDVjCiNkZWZpbmUgTUNISVBfSElDX1NUQVRVU19NQ0NfUkRZCTB4MDAwMDAwMDEJLyogTUNDIHJlZyBhY2Mgb2sgKi8KI2RlZmluZSBNQ0hJUF9ISUNfU1RBVFVTX1ZSSl9SRFkJMHgwMDAwMDAwMgkvKiBWUkogcmVnIGFjYyBvayAqLwojZGVmaW5lIE1DSElQX0hJQ19TVEFUVVNfSURMRSAgICAgICAgICAgMHgwMDAwMDAwMwojZGVmaW5lIE1DSElQX0hJQ19TVEFUVVNfQ0FQRElTCQkweDAwMDAwMDA0CS8qIGNhcC9kaXNwIGluIHByb2cgKi8KI2RlZmluZSBNQ0hJUF9ISUNfU1RBVFVTX0NPTVBERUMJMHgwMDAwMDAwOAkvKiAoZGUpY29tcCBpbiBwcm9nICovCiNkZWZpbmUgTUNISVBfSElDX1NUQVRVU19CVVNZCQkweDAwMDAwMDEwCS8qIEhJQyBidXN5ICovCgojZGVmaW5lIE1DSElQX0hJQ19TX1JBVEUJCTB4NjAJCS8qIE1KUEVHICMgZnJhbWVzICovCgojZGVmaW5lIE1DSElQX0hJQ19QQ0lfVkZNVAkJMHg2NAkJLyogdmlkZW8gZm9ybWF0ICovCiNkZWZpbmUgTUNISVBfSElDX1BDSV9WRk1UX1lWWVUJCTB4MDAwMDAwMDEJLyogMDogViBZJyBVIFkgKi8KCQkJCQkJCS8qIDE6IFknIFYgWSBVICovCgojZGVmaW5lIE1DSElQX01DQ19DTUQJCQkweDgwCQkvKiBNQ0MgY29tbWFuZHMgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX0lOSVRJQUwJCTB4MAkJLyogaWRsZSA/ICovCiNkZWZpbmUgTUNISVBfTUNDX0NNRF9JSUNfU1RBUlRfU0VUCTB4MQojZGVmaW5lIE1DSElQX01DQ19DTURfSUlDX0VORF9TRVQJMHgyCiNkZWZpbmUgTUNISVBfTUNDX0NNRF9GTV9XUklURQkJMHgzCQkvKiBmcmFtZSBtZW1vcnkgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX0ZNX1JFQUQJCTB4NAojZGVmaW5lIE1DSElQX01DQ19DTURfRk1fU1RPUAkJMHg1CiNkZWZpbmUgTUNISVBfTUNDX0NNRF9DQVBUVVJFCQkweDYKI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX0RJU1BMQVkJCTB4NwojZGVmaW5lIE1DSElQX01DQ19DTURfRU5EX0RJU1AJCTB4OAojZGVmaW5lIE1DSElQX01DQ19DTURfU1RJTExfQ09NUAkweDkKI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX1NUSUxMX0RFQ09NUAkweGEKI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX1NUSUxMX09VVFBVVAkweGIKI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX0NPTlRfT1VUUFVUCTB4YwojZGVmaW5lIE1DSElQX01DQ19DTURfQ09OVF9DT01QCQkweGQKI2RlZmluZSBNQ0hJUF9NQ0NfQ01EX0NPTlRfREVDT01QCTB4ZQojZGVmaW5lIE1DSElQX01DQ19DTURfUkVTRVQJCTB4ZgkJLyogTUNDIHJlc2V0ICovCgojZGVmaW5lIE1DSElQX01DQ19JSUNfV1IJCTB4ODQKCiNkZWZpbmUgTUNISVBfTUNDX01DQ19XUgkJMHg4OAoKI2RlZmluZSBNQ0hJUF9NQ0NfTUNDX1JECQkweDhjCgojZGVmaW5lIE1DSElQX01DQ19TVEFUVVMJCTB4OTAKI2RlZmluZSBNQ0hJUF9NQ0NfU1RBVFVTX0NBUFQJCTB4MDAwMDAwMDEJLyogY2FwdHVyaW5nICovCiNkZWZpbmUgTUNISVBfTUNDX1NUQVRVU19ESVNQCQkweDAwMDAwMDAyCS8qIGRpc3BsYXlpbmcgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfU1RBVFVTX0NPTVAJCTB4MDAwMDAwMDQJLyogY29tcHJlc3NpbmcgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfU1RBVFVTX0RFQ09NUAkJMHgwMDAwMDAwOAkvKiBkZWNvbXByZXNzaW5nICovCiNkZWZpbmUgTUNISVBfTUNDX1NUQVRVU19NQ0NfV1IJCTB4MDAwMDAwMTAJLyogcmVnaXN0ZXIgcmVhZHkgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfU1RBVFVTX01DQ19SRAkJMHgwMDAwMDAyMAkvKiByZWdpc3RlciByZWFkeSAqLwojZGVmaW5lIE1DSElQX01DQ19TVEFUVVNfSUlDX1dSCQkweDAwMDAwMDQwCS8qIHJlZ2lzdGVyIHJlYWR5ICovCiNkZWZpbmUgTUNISVBfTUNDX1NUQVRVU19PVVRQVVQJCTB4MDAwMDAwODAJLyogb3V0cHV0IGluIHByb2cgKi8KCiNkZWZpbmUgTUNISVBfTUNDX1NJR19QT0xBUklUWQkJMHg5NAojZGVmaW5lIE1DSElQX01DQ19TSUdfUE9MX1ZTX0gJCTB4MDAwMDAwMDEJLyogVlMgYWN0aXZlLWhpZ2ggKi8KI2RlZmluZSBNQ0hJUF9NQ0NfU0lHX1BPTF9IU19ICQkweDAwMDAwMDAyCS8qIEhTIGFjdGl2ZS1oaWdoICovCiNkZWZpbmUgTUNISVBfTUNDX1NJR19QT0xfRE9FX0gJCTB4MDAwMDAwMDQJLyogRE9FIGFjdGl2ZS1oaWdoICovCgojZGVmaW5lIE1DSElQX01DQ19JUlEJCQkweDk4CiNkZWZpbmUgTUNISVBfTUNDX0lSUV9DQVBESVNfU1RSVAkweDAwMDAwMDAxCS8qIGNhcC9kaXNwIHN0YXJ0ZWQgKi8KI2RlZmluZSBNQ0hJUF9NQ0NfSVJRX0NBUERJU19TVFJUX01BU0sJMHgwMDAwMDAxMAojZGVmaW5lIE1DSElQX01DQ19JUlFfQ0FQRElTX0VORAkweDAwMDAwMDAyCS8qIGNhcC9kaXNwIGVuZGVkICovCiNkZWZpbmUgTUNISVBfTUNDX0lSUV9DQVBESVNfRU5EX01BU0sJMHgwMDAwMDAyMAojZGVmaW5lIE1DSElQX01DQ19JUlFfQ09NUERFQ19TVFJUCTB4MDAwMDAwMDQJLyogKGRlKWNvbXAgc3RhcnRlZCAqLwojZGVmaW5lIE1DSElQX01DQ19JUlFfQ09NUERFQ19TVFJUX01BU0sJMHgwMDAwMDA0MAojZGVmaW5lIE1DSElQX01DQ19JUlFfQ09NUERFQ19FTkQJMHgwMDAwMDAwOAkvKiAoZGUpY29tcCBlbmRlZCAqLwojZGVmaW5lIE1DSElQX01DQ19JUlFfQ09NUERFQ19FTkRfTUFTSwkweDAwMDAwMDgwCgojZGVmaW5lIE1DSElQX01DQ19IU1RBUlQJCTB4OWMJCS8qIHZpZGVvIGluICovCiNkZWZpbmUgTUNISVBfTUNDX1ZTVEFSVAkJMHhhMAojZGVmaW5lIE1DSElQX01DQ19IQ09VTlQJCTB4YTQKI2RlZmluZSBNQ0hJUF9NQ0NfVkNPVU5UCQkweGE4CiNkZWZpbmUgTUNISVBfTUNDX1JfWEJBU0UJCTB4YWMJCS8qIGNhcHQvZGlzcCAqLwojZGVmaW5lIE1DSElQX01DQ19SX1lCQVNFCQkweGIwCiNkZWZpbmUgTUNISVBfTUNDX1JfWFJBTkdFCQkweGI0CiNkZWZpbmUgTUNISVBfTUNDX1JfWVJBTkdFCQkweGI4CiNkZWZpbmUgTUNISVBfTUNDX0JfWEJBU0UJCTB4YmMJCS8qIGNvbXAvZGVjb21wICovCiNkZWZpbmUgTUNISVBfTUNDX0JfWUJBU0UJCTB4YzAKI2RlZmluZSBNQ0hJUF9NQ0NfQl9YUkFOR0UJCTB4YzQKI2RlZmluZSBNQ0hJUF9NQ0NfQl9ZUkFOR0UJCTB4YzgKCiNkZWZpbmUgTUNISVBfTUNDX1JfU0FNUExJTkcJCTB4Y2MJCS8qIDE6IDE6NCAqLwoKI2RlZmluZSBNQ0hJUF9WUkpfQ01ECQkJMHgxMDAJCS8qIFZSSiBjb21tYW5kcyAqLwoKLyogVlJKIHJlZ2lzdGVycyAoc2VlIHRhYmxlIDEyLjIuNCkgKi8KI2RlZmluZSBNQ0hJUF9WUkpfQ09NUFJFU1NFRF9EQVRBCTB4MWIwCiNkZWZpbmUgTUNISVBfVlJKX1BJWEVMX0RBVEEJCTB4MWI4CgojZGVmaW5lIE1DSElQX1ZSSl9CVVNfTU9ERQkJMHgxMDAKI2RlZmluZSBNQ0hJUF9WUkpfU0lHTkFMX0FDVElWRV9MRVZFTAkweDEwOAojZGVmaW5lIE1DSElQX1ZSSl9QREFUX1VTRQkJMHgxMTAKI2RlZmluZSBNQ0hJUF9WUkpfTU9ERV9TUEVDSUZZCQkweDExOAojZGVmaW5lIE1DSElQX1ZSSl9MSU1JVF9DT01QUkVTU0VEX0xPCTB4MTIwCiNkZWZpbmUgTUNISVBfVlJKX0xJTUlUX0NPTVBSRVNTRURfSEkJMHgxMjQKI2RlZmluZSBNQ0hJUF9WUkpfQ09NUF9EQVRBX0ZPUk1BVAkweDEyOAojZGVmaW5lIE1DSElQX1ZSSl9UQUJMRV9EQVRBCQkweDE0MAojZGVmaW5lIE1DSElQX1ZSSl9SRVNUQVJUX0lOVEVSVkFMCTB4MTQ4CiNkZWZpbmUgTUNISVBfVlJKX05VTV9MSU5FUwkJMHgxNTAKI2RlZmluZSBNQ0hJUF9WUkpfTlVNX1BJWEVMUwkJMHgxNTgKI2RlZmluZSBNQ0hJUF9WUkpfTlVNX0NPTVBPTkVOVFMJMHgxNjAKI2RlZmluZSBNQ0hJUF9WUkpfU09GMQkJCTB4MTY4CiNkZWZpbmUgTUNISVBfVlJKX1NPRjIJCQkweDE3MAojZGVmaW5lIE1DSElQX1ZSSl9TT0YzCQkJMHgxNzgKI2RlZmluZSBNQ0hJUF9WUkpfU09GNAkJCTB4MTgwCiNkZWZpbmUgTUNISVBfVlJKX1NPUwkJCTB4MTg4CiNkZWZpbmUgTUNISVBfVlJKX1NPRlRfUkVTRVQJCTB4MTkwCgojZGVmaW5lIE1DSElQX1ZSSl9TVEFUVVMJCTB4MWMwCiNkZWZpbmUgTUNISVBfVlJKX1NUQVRVU19CVVNZCQkweDAwMDAxCiNkZWZpbmUgTUNISVBfVlJKX1NUQVRVU19DT01QX0FDQ0VTUwkweDAwMDAyCiNkZWZpbmUgTUNISVBfVlJKX1NUQVRVU19QSVhFTF9BQ0NFU1MJMHgwMDAwNAojZGVmaW5lIE1DSElQX1ZSSl9TVEFUVVNfRVJST1IJCTB4MDAwMDgKCiNkZWZpbmUgTUNISVBfVlJKX0lSUV9GTEFHCQkweDFjOAojZGVmaW5lIE1DSElQX1ZSSl9FUlJPUl9SRVBPUlQJCTB4MWQ4CgojZGVmaW5lIE1DSElQX1ZSSl9TVEFSVF9DT01NQU5ECQkweDFhMAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIERyaXZlciBkZWZpbml0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIFNvbnkgUHJvZ3JhbW1hYmxlIEkvTyBDb250cm9sbGVyIGZvciBhY2Nlc3NpbmcgdGhlIGNhbWVyYSBjb21tYW5kcyAqLwojaW5jbHVkZSA8bGludXgvc29ueXBpLmg+CgovKiBwcml2YXRlIEFQSSBkZWZpbml0aW9ucyAqLwojaW5jbHVkZSA8bGludXgvbWV5ZS5oPgoKLyogRW5hYmxlIGpwZyBzb2Z0d2FyZSBjb3JyZWN0aW9uICovCiNkZWZpbmUgTUVZRV9KUEVHX0NPUlJFQ1RJT04JMQoKLyogTWF4aW11bSBzaXplIG9mIGEgYnVmZmVyICovCiNkZWZpbmUgTUVZRV9NQVhfQlVGU0laRQk2MTQ0MDAJLyogNjQwICogNDgwICogMiAqLwoKLyogTWF4aW11bSBudW1iZXIgb2YgYnVmZmVycyAqLwojZGVmaW5lIE1FWUVfTUFYX0JVRk5CUlMJMzIKCi8qIFN0YXRlIG9mIGEgYnVmZmVyICovCiNkZWZpbmUgTUVZRV9CVUZfVU5VU0VECTAJLyogbm90IHVzZWQgKi8KI2RlZmluZSBNRVlFX0JVRl9VU0lORwkxCS8qIGN1cnJlbnRseSBncmFiYmluZyAvIHBsYXlpbmcgKi8KI2RlZmluZSBNRVlFX0JVRl9ET05FCTIJLyogZG9uZSAqLwoKLyogZ3JhYiBidWZmZXIgKi8Kc3RydWN0IG1leWVfZ3JhYl9idWZmZXIgewoJaW50IHN0YXRlOwkJCS8qIHN0YXRlIG9mIGJ1ZmZlciAqLwoJdW5zaWduZWQgbG9uZyBzaXplOwkJLyogc2l6ZSBvZiBqcGcgZnJhbWUgKi8KCXN0cnVjdCB0aW1ldmFsIHRpbWVzdGFtcDsJLyogdGltZXN0YW1wICovCgl1bnNpZ25lZCBsb25nIHNlcXVlbmNlOwkJLyogc2VxdWVuY2UgbnVtYmVyICovCn07CgovKiBzaXplIG9mIGtmaWZvcyBjb250YWluaW5ncyBidWZmZXIgaW5kaWNlcyAqLwojZGVmaW5lIE1FWUVfUVVFVUVfU0laRQlNRVlFX01BWF9CVUZOQlJTCgovKiBNb3Rpb24gRXllIGRldmljZSBzdHJ1Y3R1cmUgKi8Kc3RydWN0IG1leWUgewoJc3RydWN0IHBjaV9kZXYgKm1jaGlwX2RldjsJLyogcGNpIGRldmljZSAqLwoJdTggbWNoaXBfaXJxOwkJCS8qIGlycSAqLwoJdTggbWNoaXBfbW9kZTsJCQkvKiBhY3R1YWwgbWNoaXAgbW9kZTogSElDX01PREUuLi4gKi8KCXU4IG1jaGlwX2ZudW07CQkJLyogY3VycmVudCBtY2hpcCBmcmFtZSBudW1iZXIgKi8KCXVuc2lnbmVkIGNoYXIgX19pb21lbSAqbWNoaXBfbW1yZWdzOy8qIG1jaGlwOiBtZW1vcnkgbWFwcGVkIHJlZ2lzdGVycyAqLwoJdTggKm1jaGlwX3B0YWJsZVtNQ0hJUF9OQl9QQUdFU107LyogbWNoaXA6IHB0YWJsZSAqLwoJdm9pZCAqbWNoaXBfcHRhYmxlX3RvYzsJCS8qIG1jaGlwOiBwdGFibGUgdG9jICovCglkbWFfYWRkcl90IG1jaGlwX2RtYWhhbmRsZTsJLyogbWNoaXA6IGRtYSBoYW5kbGUgdG8gcHRhYmxlIHRvYyAqLwoJdW5zaWduZWQgY2hhciAqZ3JhYl9mYnVmZmVyOwkvKiBjYXB0dXJlIGZyYW1lYnVmZmVyICovCgl1bnNpZ25lZCBjaGFyICpncmFiX3RlbXA7CS8qIHRlbXBvcmFyeSBidWZmZXIgKi8KCQkJCQkvKiBsaXN0IG9mIGJ1ZmZlcnMgKi8KCXN0cnVjdCBtZXllX2dyYWJfYnVmZmVyIGdyYWJfYnVmZmVyW01FWUVfTUFYX0JVRk5CUlNdOwoJaW50IHZtYV91c2VfY291bnRbTUVZRV9NQVhfQlVGTkJSU107IC8qIG1tYXAgY291bnQgKi8KCXN0cnVjdCBzZW1hcGhvcmUgbG9jazsJCS8qIHNlbWFwaG9yZSBmb3Igb3Blbi9tbWFwLi4uICovCglzdHJ1Y3Qga2ZpZm8gKmdyYWJxOwkJLyogcXVldWUgZm9yIGJ1ZmZlcnMgdG8gYmUgZ3JhYmJlZCAqLwoJc3BpbmxvY2tfdCBncmFicV9sb2NrOwkJLyogbG9jayBwcm90ZWN0aW5nIHRoZSBxdWV1ZSAqLwoJc3RydWN0IGtmaWZvICpkb25lcTsJCS8qIHF1ZXVlIGZvciBncmFiYmVkIGJ1ZmZlcnMgKi8KCXNwaW5sb2NrX3QgZG9uZXFfbG9jazsJCS8qIGxvY2sgcHJvdGVjdGluZyB0aGUgcXVldWUgKi8KCXdhaXRfcXVldWVfaGVhZF90IHByb2NfbGlzdDsJLyogd2FpdCBxdWV1ZSAqLwoJc3RydWN0IHZpZGVvX2RldmljZSAqdmlkZW9fZGV2OwkvKiB2aWRlbyBkZXZpY2UgcGFyYW1ldGVycyAqLwoJc3RydWN0IHZpZGVvX3BpY3R1cmUgcGljdHVyZTsJLyogdmlkZW8gcGljdHVyZSBwYXJhbWV0ZXJzICovCglzdHJ1Y3QgbWV5ZV9wYXJhbXMgcGFyYW1zOwkvKiBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgKi8KI2lmZGVmIENPTkZJR19QTQoJdTggcG1fbWNoaXBfbW9kZTsJCS8qIG9sZCBtY2hpcCBtb2RlICovCiNlbmRpZgp9OwoKI2VuZGlmCg==