LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KICoKICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICogcHJvamVjdC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwogKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgogKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKICogTUEgMDIxMTEtMTMwNyBVU0EKICovCgovKgogKiBib2FyZC9jb25maWcuaCAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYm9hcmQgc3BlY2lmaWMKICovCgojaWZuZGVmIF9fQ09ORklHX0gKI2RlZmluZSBfX0NPTkZJR19ICgovKgogKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucwogKiAoZWFzeSB0byBjaGFuZ2UpCiAqLwoKI2RlZmluZSBDT05GSUdfWDg2CQkxCS8qIFRoaXMgaXMgYSBYODYgQ1BVCQkqLwojZGVmaW5lIENPTkZJR19TQzUyMAkJMQkvKiBJbmNsdWRlIHN1cHBvcnQgZm9yIEFNRCBTQzUyMCAqLwojZGVmaW5lIENPTkZJR19BTEkxNTJYCQkxCS8qIEluY2x1ZGUgc3VwcG9ydCBmb3IgQWxpIDE1MnggU0lPICovCgojZGVmaW5lIENGR19TRFJBTV9QUkVDSEFSR0VfREVMQVkgNiAgICAgLyogNlQgKi8KI2RlZmluZSBDRkdfU0RSQU1fUkVGUkVTSF9SQVRFICAgIDc4ICAgIC8qIDcuOHVTIChjaG9pY2VzIGFyZSA3LjgsIDE1LjYsIDMxLjIgb3IgNjIuNXVTKSAqLwojZGVmaW5lIENGR19TRFJBTV9SQVNfQ0FTX0RFTEFZICAgMyAgICAgLyogM1QgKi8KCi8qIGRlZmluZSBhdCBtb3N0IG9uZSBvZiB0aGVzZSAqLwojdW5kZWYgQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzJUCiNkZWZpbmUgQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzNUCgojZGVmaW5lIENGR19TQzUyMF9ISUdIX1NQRUVEICAgIDAgICAgICAgLyogMTAwIG9yIDEzM01IeiAqLwojZGVmaW5lIENGR19SRVNFVF9HRU5FUklDICAgICAgIDEgICAgICAgLyogdXNlIHRyaXBwbGUtZmF1bHQgdG8gcmVzZXQgY3B1ICovCiN1bmRlZiAgQ0ZHX1JFU0VUX1NDNTIwICAgICAgICAgICAgICAgICAvKiB1c2UgU0M1MjAgTU1DUidzIHRvIHJlc2V0IGNwdSAqLwojdW5kZWYgIENGR19USU1FUl9TQzUyMCAgICAgICAgICAgICAgICAgLyogdXNlIFNDNTIwIHN3dGltZXJzICovCiNkZWZpbmUgQ0ZHX1RJTUVSX0dFTkVSSUMgICAgICAgMSAgICAgICAvKiB1c2UgdGhlIGk4MjU0IFBJVCB0aW1lcnMgKi8KI3VuZGVmICBDRkdfVElNRVJfVFNDICAgICAgICAgICAgICAgICAgIC8qIHVzZSB0aGUgUGVudGl1bSBUU0MgdGltZXJzICovCiNkZWZpbmUgIENGR19VU0VfU0lPX1VBUlQgICAgICAgMCAgICAgICAvKiBwcmVmZXIgdGhlIHVhcnRzIG9uIHRoZSBTSU8gdG8gdGhvc2UKCQkJCQkgKiBpbiB0aGUgU0M1MjAgb24gdGhlIENEUCAqLwoKI2RlZmluZSBDRkdfU1RBQ0tfU0laRSAgICAgICAgICAweDgwMDAgIC8qIFNpemUgb2YgYm9vdGxvYWRlciBzdGFjayAqLwoKI2RlZmluZSBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTIDEKI2RlZmluZSBDT05GSUdfTEFTVF9TVEFHRV9JTklUICAgIDEKCi8qCiAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAogKi8KI2RlZmluZSBDT05GSUdfTUFMTE9DX1NJWkUJKENGR19FTlZfU0laRSArIDEyOCoxMDI0KQoKI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTk2MDAKCi8qCiAqIEJPT1RQIG9wdGlvbnMKICovCiNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQojZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAojZGVmaW5lIENPTkZJR19CT09UUF9HQVRFV0FZCiNkZWZpbmUgQ09ORklHX0JPT1RQX0hPU1ROQU1FCgoKLyoKICogQ29tbWFuZCBsaW5lIGNvbmZpZ3VyYXRpb24uCiAqLwojaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CgojZGVmaW5lIENPTkZJR19DTURfUENJCiNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgojZGVmaW5lIENPTkZJR19DTURfSURFCiNkZWZpbmUgQ09ORklHX0NNRF9ORVQKI2RlZmluZSBDT05GSUdfQ01EX0VFUFJPTQoKI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTE1CiNkZWZpbmUgQ09ORklHX0JPT1RBUkdTICAgIAkicm9vdD0vZGV2L210ZGJsb2NrMCBjb25zb2xlPXR0eVMwLDk2MDAiCi8qICNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJib290bSAzODAwMDAwMCIgKi8KCiNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKI2RlZmluZSBDT05GSUdfS0dEQl9CQVVEUkFURQkxMTUyMDAJCS8qIHNwZWVkIHRvIHJ1biBrZ2RiIHNlcmlhbCBwb3J0ICovCiNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTIJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLwojZW5kaWYKCi8qCiAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICovCiNkZWZpbmUJQ0ZHX0xPTkdIRUxQCQkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CQkqLwojZGVmaW5lCUNGR19QUk9NUFQJCSJib290ID4gIgkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0CSovCiNkZWZpbmUJQ0ZHX0NCU0laRQkJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwojZGVmaW5lCUNGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwojZGVmaW5lCUNGR19NQVhBUkdTCQkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KI2RlZmluZSBDRkdfQkFSR1NJWkUJCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDAwMTAwMDAwCS8qIG1lbXRlc3Qgd29ya3Mgb24JKi8KI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDEwMDAwMDAJLyogMSAuLi4gMTYgTUIgaW4gRFJBTQkqLwoKI3VuZGVmICBDRkdfQ0xLU19JTl9IWgkJLyogZXZlcnl0aGluZywgaW5jbCBib2FyZCBpbmZvLCBpbiBIeiAqLwoKI2RlZmluZQlDRkdfTE9BRF9BRERSCQkweDEwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcwkqLwoKI2RlZmluZQlDRkdfSFoJCQkxMDI0CQkvKiBpbmNyZW1lbnRlciBmcmVxOiAxa0h6ICovCgoJCQkJCQkvKiB2YWxpZCBiYXVkcmF0ZXMgKi8KI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAgfQoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBQaHlzaWNhbCBNZW1vcnkgTWFwCiAqLwojZGVmaW5lIENPTkZJR19OUl9EUkFNX0JBTktTCTQJICAgLyogd2UgaGF2ZSA0IGJhbmtzIG9mIERSQU0gKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRkxBU0ggYW5kIGVudmlyb25tZW50IG9yZ2FuaXphdGlvbgogKi8KI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTMJLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MJCSovCiNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTY0CS8qIG1heCBudW1iZXIgb2Ygc2VjdG9ycyBvbiBvbmUgY2hpcAkqLwoKLyogdGltZW91dCB2YWx1ZXMgYXJlIGluIHRpY2tzICovCiNkZWZpbmUgQ0ZHX0ZMQVNIX0VSQVNFX1RPVVQJKDIqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAqLwojZGVmaW5lIENGR19GTEFTSF9XUklURV9UT1VUCSgyKkNGR19IWikgLyogVGltZW91dCBmb3IgRmxhc2ggV3JpdGUgKi8KCiNkZWZpbmUgQ09ORklHX1NQSV9FRVBST00gICAgICAvKiBTdXBwb3J0IGZvciBTUEkgRUVQUk9NcyAoQVQyNTEyOCkgKi8KI2RlZmluZSBDT05GSUdfTVdfRUVQUk9NICAgICAgIC8qIFN1cHBvcnQgZm9yIE1pY3JvV2lyZSBFRVBST01zIChBVDkzTEM0NikgKi8KCi8qIGFsbG93IHRvIG92ZXJ3cml0ZSBzZXJpYWwgYW5kIGV0aGFkZHIgKi8KI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQoKLyogRW52aXJvbm1lbnQgaW4gRUVQUk9NICovCiNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9FRVBST00gICAxCiNkZWZpbmUgQ09ORklHX1NQSQojZGVmaW5lIENGR19FTlZfU0laRQkgICAgICAgMHg0MDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgRUVQUk9NIDE2ayBpcyBTUEkgaXMgdXNlZCBvciAxMjggYnl0ZXMgaWYgTVcgaXMgdXNlZCovCiNkZWZpbmUgQ0ZHX0VOVl9PRkZTRVQgICAgICAgICAwCiNkZWZpbmUgQ09ORklHX1NDNTIwX0NEUF9VU0VfU1BJICAvKiBTdG9yZSBjb25maWd1cmF0aW9uIGluIHRoZSBTUEkgcGFydCAqLwojdW5kZWYgQ09ORklHX1NDNTIwX0NEUF9VU0VfTVcgICAgLyogU3RvcmUgY29uZmlndXJhdGlvbiBpbiB0aGUgTWljcm9XaXJlIHBhcnQgKi8KI2RlZmluZSBDT05GSUdfU1BJX1ggMQoKLyoKICogSkZGUzIgcGFydGl0aW9ucwogKi8KLyogTm8gY29tbWFuZCBsaW5lLCBvbmUgc3RhdGljIHBhcnRpdGlvbiwgd2hvbGUgZGV2aWNlICovCiN1bmRlZiBDT05GSUdfSkZGUzJfQ01ETElORQojZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJub3IwIgojZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX1NJWkUJCTB4RkZGRkZGRkYKI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9PRkZTRVQJMHgwMDAwMDAwMAoKLyogbXRkcGFydHMgY29tbWFuZCBsaW5lIHN1cHBvcnQgKi8KLyoKI2RlZmluZSBDT05GSUdfSkZGUzJfQ01ETElORQojZGVmaW5lIE1URElEU19ERUZBVUxUCQkibm9yMD1TQzUyMENEUCBGbGFzaCBCYW5rICMwIgojZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJIm10ZHBhcnRzPVNDNTIwQ0RQIEZsYXNoIEJhbmsgIzA6LShqZmZzMikiCiovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIERldmljZSBkcml2ZXJzCiAqLwojZGVmaW5lIENPTkZJR19ORVRfTVVMVEkgICAgICAgIC8qIE11bHRpIGV0aGVybmV0IGNhcmRzIHN1cHBvcnQgKi8KI2RlZmluZSBDT05GSUdfUENORVQKI2RlZmluZSBDT05GSUdfUENORVRfNzlDOTczCiNkZWZpbmUgQ09ORklHX1BDTkVUXzc5Qzk3NQojZGVmaW5lIFBDTkVUX0hBU19QUk9NICAgICAgICAgMQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBJREUvQVRBIHN0dWZmCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ0ZHX0lERV9NQVhCVVMJCTEgICAvKiBtYXguIDIgSURFIGJ1c3NlcwkqLwojZGVmaW5lIENGR19JREVfTUFYREVWSUNFCShDRkdfSURFX01BWEJVUyoyKSAvKiBtYXguIDIgZHJpdmVzIHBlciBJREUgYnVzICovCgojZGVmaW5lIENGR19BVEFfSURFMF9PRkZTRVQJMHgwMUYwCS8qIGlkZTAgb2Zmc3RlICovCi8qI2RlZmluZSBDRkdfQVRBX0lERTFfT0ZGU0VUCTB4MDE3MAkvIyMjKiBpZGUxIG9mZnNldCAqLwojZGVmaW5lIENGR19BVEFfREFUQV9PRkZTRVQJMAkvKiBkYXRhIHJlZyBvZmZzZXQJKi8KI2RlZmluZSBDRkdfQVRBX1JFR19PRkZTRVQJMAkvKiByZWcgb2Zmc2V0ICovCiNkZWZpbmUgQ0ZHX0FUQV9BTFRfT0ZGU0VUCTB4MjAwCS8qIGFsdGVybmF0ZSByZWdpc3RlciBvZmZzZXQgKi8KI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUiAgICAgICAwCgojdW5kZWYJQ09ORklHX0lERV9MRUQJCQkvKiBubyBsZWQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KI3VuZGVmICBDT05GSUdfSURFX1JFU0VUCQkvKiByZXNldCBmb3IgaWRlIHVuc3VwcG9ydGVkLi4uCSovCiN1bmRlZiAgQ09ORklHX0lERV9SRVNFVF9ST1VUSU5FCS8qIG5vIHNwZWNpYWwgcmVzZXQgZnVuY3Rpb24gKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKlNBVEEvTmF0aXZlIFN0dWZmCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBDRkdfU0FUQV9TVVBQT1JURUQgICAgICAxCiNkZWZpbmUgQ0ZHX1NBVEFfTUFYQlVTICAgICAgICAgMiAgICAgICAvKk1heCBTYXRhIGJ1c2VzIHN1cHBvcnRlZCAqLwojZGVmaW5lIENGR19TQVRBX0RFVlNfUEVSX0JVUyAgIDIgICAgICAvKk1heCBuby4gb2YgZGV2aWNlcyBwZXIgYnVzL3BvcnQgKi8KI2RlZmluZSBDRkdfU0FUQV9NQVhERVZJQ0VTICAgICAoQ0ZHX1NBVEFfTUFYQlVTKiBDRkdfU0FUQV9ERVZTX1BFUl9CVVMpCiNkZWZpbmUgQ0ZHX0FUQV9QSUlYICAgICAgICAgICAgMSAgICAgICAvKlN1cHBvcnRzIGF0YV9waWl4IGRyaXZlciAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBBVEFQSSBzdXBwb3J0IChleHBlcmltZW50YWwpCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX0FUQVBJCQkJLyogZW5hYmxlIEFUQVBJIFN1cHBvcnQgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogRElTSyBQYXJ0aXRpb24gc3VwcG9ydAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCiNkZWZpbmUgQ09ORklHX01BQ19QQVJUSVRJT04KI2RlZmluZSBDT05GSUdfSVNPX1BBUlRJVElPTiAvKiBFeHBlcmltZW50YWwgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVmlkZW8vS2V5Ym9hcmQgc3VwcG9ydAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19WSURFTwkJCS8qIFRvIGVuYWJsZSB2aWRlbyBjb250cm9sbGVyIHN1cHBvcnQgKi8KI2RlZmluZSBDT05GSUdfSTgwNDJfS0JECiNkZWZpbmUgQ0ZHX0lTQV9JTyAwCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIFJUQwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQ09ORklHX1JUQ19NQzE0NjgxOAojdW5kZWYgQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCgovKgogKiBQQ0kgc3R1ZmYKICovCiNkZWZpbmUgQ09ORklHX1BDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5jbHVkZSBwY2kgc3VwcG9ydCAqLwojZGVmaW5lIENPTkZJR19QQ0lfUE5QICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBjaSBwbHVnLWFuZC1wbGF5ICovCiNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cKCiNkZWZpbmUJQ0ZHX0ZJUlNUX1BDSV9JUlEgICAxMAojZGVmaW5lCUNGR19TRUNPTkRfUENJX0lSUSAgOQojZGVmaW5lIENGR19USElSRF9QQ0lfSVJRICAgMTEKI2RlZmluZQlDRkdfRk9SVEhfUENJX0lSUSAgIDE1CgojZW5kaWYJLyogX19DT05GSUdfSCAqLwo=