LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKgogKiBib2FyZC9jb25maWcuaCAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYm9hcmQgc3BlY2lmaWMKICovCgojaWZuZGVmIF9fQ09ORklHX0gKI2RlZmluZSBfX0NPTkZJR19ICgovKgogKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogKiAoZWFzeSB0byBjaGFuZ2UpCiAqLwoKI2RlZmluZSBDT05GSUdfWDg2CQkxCS8qIFRoaXMgaXMgYSBYODYgQ1BVCQkqLwojZGVmaW5lIENPTkZJR19TQzUyMAkJMQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIEFNRCBTQzUyMCAqLwoKI2RlZmluZSBDRkdfU0RSQU1fUFJFQ0hBUkdFX0RFTEFZIDYgICAgIC8qIDZUICovCiNkZWZpbmUgQ0ZHX1NEUkFNX1JFRlJFU0hfUkFURSAgICA3OCAgICAvKiA3Ljh1UyAoY2hvaWNlcyBhcmUgNy44LCAxNS42LCAzMS4yIG9yIDYyLjV1UykgKi8KI2RlZmluZSBDRkdfU0RSQU1fUkFTX0NBU19ERUxBWSAgIDMgICAgIC8qIDNUICovCgovKiBkZWZpbmUgYXQgbW9zdCBvbmUgb2YgdGhlc2UgKi8KI3VuZGVmIENGR19TRFJBTV9DQVNfTEFURU5DWV8yVAojZGVmaW5lIENGR19TRFJBTV9DQVNfTEFURU5DWV8zVAoKI2RlZmluZSBDRkdfU0M1MjBfSElHSF9TUEVFRCAgICAwICAgICAgIC8qIDEwMCBvciAxMzNNSHogKi8KI2RlZmluZSBDRkdfUkVTRVRfR0VORVJJQyAgICAgICAxICAgICAgIC8qIHVzZSB0cmlwcGxlLWZhdWx0IHRvIHJlc2V0IGNwdSAqLwojdW5kZWYgIENGR19SRVNFVF9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIE1NQ1IncyB0byByZXNldCBjcHUgKi8KI3VuZGVmICBDRkdfVElNRVJfU0M1MjAgICAgICAgICAgICAgICAgIC8qIHVzZSBTQzUyMCBzd3RpbWVycyAqLwojZGVmaW5lIENGR19USU1FUl9HRU5FUklDICAgICAgIDEgICAgICAgLyogdXNlIHRoZSBpODI1NCBQSVQgdGltZXJzICovCiN1bmRlZiAgQ0ZHX1RJTUVSX1RTQyAgICAgICAgICAgICAgICAgICAvKiB1c2UgdGhlIFBlbnRpdW0gVFNDIHRpbWVycyAqLwoKI2RlZmluZSBDRkdfU1RBQ0tfU0laRSAgICAgICAgICAweDgwMDAgIC8qIFNpemUgb2YgYm9vdGxvYWRlciBzdGFjayAqLwoKI2RlZmluZSBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTIDEKI2RlZmluZSBDT05GSUdfTEFTVF9TVEFHRV9JTklUICAgIDEKCi8qCiAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogKi8KI2RlZmluZSBDT05GSUdfTUFMTE9DX1NJWkUJKENGR19FTlZfU0laRSArIDEyOCoxMDI0KQoKCiNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQk5NjAwCgojZGVmaW5lIENPTkZJR19DT01NQU5EUyAgICAgICAgIChDT05GSUdfQ01EX0RGTCB8IENGR19DTURfUENJIHwgQ0ZHX0NNRF9KRkZTMiB8IENGR19DTURfSURFIHwgQ0ZHX0NNRF9ORVQgfCBDRkdfQ01EX1BDTUNJQSB8IENGR19DTURfRUVQUk9NKQoKLyogdGhpcyBtdXN0IGJlIGluY2x1ZGVkIEFGVEVSIHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19DT01NQU5EUyAoaWYgYW55KSAqLwojaW5jbHVkZSA8Y21kX2NvbmZkZWZzLmg+CgojZGVmaW5lIENPTkZJR19CT09UREVMQVkJMTUKI2RlZmluZSBDT05GSUdfQk9PVEFSR1MgICAgCSJyb290PS9kZXYvbXRkYmxvY2sxIGNvbnNvbGU9dHR5UzAsOTYwMCBtdGRwYXJ0cz1waHlzOjc5MzZrKHJvb3QpLDI1NmsodWJvb3QpICIKI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJInNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIGlwPWF1dG9jb25mIGNvbnNvbGU9dHR5UzAsOTYwMCBtdGRwYXJ0cz1waHlzOjc4MDhrKHJvb3QpLDEyOGsoZW52KSwyNTZrKHVib290KTsgYm9vdHA7IGJvb3RtIgoKI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCiNkZWZpbmUgQ09ORklHX0tHREJfQkFVRFJBVEUJMTE1MjAwCQkvKiBzcGVlZCB0byBydW4ga2dkYiBzZXJpYWwgcG9ydCAqLwojZGVmaW5lIENPTkZJR19LR0RCX1NFUl9JTkRFWAkyCQkvKiB3aGljaCBzZXJpYWwgcG9ydCB0byB1c2UgKi8KI2VuZGlmCgoKLyoKICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogKi8KI2RlZmluZQlDRkdfTE9OR0hFTFAJCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJCSovCiNkZWZpbmUJQ0ZHX1BST01QVAkJImJvb3QgPiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KI2RlZmluZQlDRkdfQ0JTSVpFCQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCiNkZWZpbmUJQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCiNkZWZpbmUJQ0ZHX01BWEFSR1MJCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwojZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCgojZGVmaW5lIENGR19NRU1URVNUX1NUQVJUCTB4MDAxMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLwojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMTAwMDAwMAkvKiAxIC4uLiAxNiBNQiBpbiBEUkFNCSovCgojdW5kZWYgIENGR19DTEtTX0lOX0haCQkvKiBldmVyeXRoaW5nLCBpbmNsIGJvYXJkIGluZm8sIGluIEh6ICovCgojZGVmaW5lCUNGR19MT0FEX0FERFIJCTB4MTAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzCSovCgojZGVmaW5lCUNGR19IWgkJCTEwMjQJCS8qIGluY3JlbWVudGVyIGZyZXE6IDFrSHogKi8KCgkJCQkJCS8qIHZhbGlkIGJhdWRyYXRlcyAqLwojZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBQaHlzaWNhbCBNZW1vcnkgTWFwCiAqLwojZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJICAgLyogd2UgaGF2ZSA0IGJhbmtzIG9mIERSQU0gKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgogKi8KCgojZGVmaW5lIENGR19NQVhfRkxBU0hfQkFOS1MJMQkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcwkJKi8KI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJNTEyCS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcAkqLwoKLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCiNkZWZpbmUgQ0ZHX0ZMQVNIX0VSQVNFX1RPVVQJKDIqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAqLwojZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCSgyKkNGR19IWikgLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKi8KCgojZGVmaW5lIENPTkZJR19TUElfRUVQUk9NICAgICAgIC8qIFNQSSBFRVBST01zIHN1Y2ggYXMgQVQyNTAxMCBvciBBVDI1NjQwICovCiNkZWZpbmUgQ09ORklHX01XX0VFUFJPTSAgICAgICAgLyogTWljcm9XaXJlIEVFUFJPTVMgc3VjaCBhcyBBVDkzTEM0NiAqLwojZGVmaW5lIENPTkZJR19EUzE3MjIgICAgICAgICAgIC8qIERhbGxhcyBEUzE3MjIgU1BJIFRlbXBlcmF0dXJlIHByb2JlICovCgoKLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLwojZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCgoKI2lmIDAKLyogRW52aXJvbm1lbnQgaW4gZmxhc2ggKi8KI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNIICAgICAxCiMgZGVmaW5lIENGR19FTlZfQUREUgkJKDB4Mzg3YTAwMDApCS8qIEFkZHIgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCiMgZGVmaW5lIENGR19FTlZfU0laRQkJMHgyMDAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvciAob3IgMHgxMDAwMCkgKi8KIyBkZWZpbmUgQ0ZHX0VOVl9PRkZTRVQgICAgICAgICAwCgojZWxzZQovKiBFbnZpcm9ubWVudCBpbiBFRVBST00gKi8KCiMgZGVmaW5lIENGR19FTlZfSVNfSU5fRUVQUk9NICAgMQojIGRlZmluZSBDT05GSUdfU1BJCiMgZGVmaW5lIENPTkZJR19TUElfWCAxCiMgZGVmaW5lIENGR19FTlZfU0laRQkJMHgyMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgRUVQUk9NCSovCiMgZGVmaW5lIENGR19FTlZfT0ZGU0VUICAgICAgICAgMHgxYzAwCgojZW5kaWYKCiNkZWZpbmUgQ0ZHX0pGRlMyX0ZJUlNUX0JBTksgICAgMCAgICAgICAgICAgLyogdXNlIGZvciBKRkZTMiAqLwojZGVmaW5lIENGR19KRkZTMl9OVU1fQkFOS1MgICAgIDEgICAgICAgICAgIC8qICAqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBEZXZpY2UgZHJpdmVycwogKi8KI2RlZmluZSBDT05GSUdfTkVUX01VTFRJICAgICAgICAvKiBNdWx0aSBldGhlcm5ldCBjYXJkcyBzdXBwb3J0ICovCiNkZWZpbmUgQ09ORklHX0VFUFJPMTAwCiNkZWZpbmUgQ0ZHX1JYX0VUSF9CVUZGRVIJOCAgICAgICAgICAgICAgIC8qIHVzZSA4IHJ4IGJ1ZmZlciBvbiBlZXBybzEwMCAgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogSURFL0FUQSBzdHVmZgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENGR19JREVfTUFYQlVTCQkyICAgLyogbWF4LiAyIElERSBidXNzZXMJKi8KI2RlZmluZSBDRkdfSURFX01BWERFVklDRQkoQ0ZHX0lERV9NQVhCVVMqMikgLyogbWF4LiAyIGRyaXZlcyBwZXIgSURFIGJ1cyAqLwojZGVmaW5lIENGR19BVEFfQkFTRV9BRERSICAgICAgIDAKI2RlZmluZSBDRkdfQVRBX0lERTBfT0ZGU0VUCTB4MDFmMAkvKiBpZGUwIG9mZnNldCAqLwojZGVmaW5lIENGR19BVEFfSURFMV9PRkZTRVQJMHhlMDAwCS8qIGlkZTEgb2Zmc2V0ICovCiNkZWZpbmUgQ0ZHX0FUQV9EQVRBX09GRlNFVAkwCS8qIGRhdGEgcmVnIG9mZnNldAkqLwojZGVmaW5lIENGR19BVEFfUkVHX09GRlNFVAkwCS8qIHJlZyBvZmZzZXQgKi8KI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgyMDAJLyogYWx0ZXJuYXRlIHJlZ2lzdGVyIG9mZnNldCAqLwoKI2RlZmluZSBDRkdfRklSU1RfUENNQ0lBX0JVUyAgICAxCgojdW5kZWYJQ09ORklHX0lERV9MRUQJCQkvKiBubyBsZWQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KI3VuZGVmICBDT05GSUdfSURFX1JFU0VUCQkvKiByZXNldCBmb3IgaWRlIHVuc3VwcG9ydGVkLi4uCSovCiN1bmRlZiAgQ09ORklHX0lERV9SRVNFVF9ST1VUSU5FCS8qIG5vIHNwZWNpYWwgcmVzZXQgZnVuY3Rpb24gKi8KCiNkZWZpbmUgQ09ORklHX0lERV9USV9DQVJEQlVTCiNkZWZpbmUgQ0ZHX1BDTUNJQV9DSVNfV0lOICAgICAgICAgIDB4MjdmMDAwMDAKI2RlZmluZSBDRkdfUENNQ0lBX0NJU19XSU5fU0laRSAgICAgMHgwMDEwMDAwMAojZGVmaW5lIENGR19QQ01DSUFfSU9fV0lOICAgICAgICAgICAweGUwMDAKI2RlZmluZSBDRkdfUENNQ0lBX0lPX1dJTl9TSVpFICAgICAgMTYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRElTSyBQYXJ0aXRpb24gc3VwcG9ydAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCiNkZWZpbmUgQ09ORklHX01BQ19QQVJUSVRJT04KI2RlZmluZSBDT05GSUdfSVNPX1BBUlRJVElPTiAvKiBFeHBlcmltZW50YWwgKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFJUQwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX1JUQ19NQzE0NjgxOAojdW5kZWYgQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCgovKgogKiBQQ0kgc3R1ZmYKICovCiNkZWZpbmUgQ09ORklHX1BDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5jbHVkZSBwY2kgc3VwcG9ydCAqLwojZGVmaW5lIENPTkZJR19QQ0lfUE5QICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBjaSBwbHVnLWFuZC1wbGF5ICovCiNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cKCiNkZWZpbmUJQ0ZHX0ZJUlNUX1BDSV9JUlEgICA5CiNkZWZpbmUJQ0ZHX1NFQ09ORF9QQ0lfSVJRICAxMAojZGVmaW5lCUNGR19USElSRF9QQ0lfSVJRICAgMTEKI2RlZmluZQlDRkdfRk9SVEhfUENJX0lSUSAgIDEyCgojZW5kaWYJLyogX19DT05GSUdfSCAqLwo=