LyoKICogKEMpIENvcHlyaWdodCAyMDA3CiAqIEhlaWtvIFNjaG9jaGVyLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8aHNAZGVueC5kZT4uCiAqCiAqIEZyb206CiAqIChDKSBDb3B5cmlnaHQgMjAwMwogKiBKdWVyZ2VuIEJlaXNlcnQsIEV1cm9EZXNpZ24gZW1iZWRkZWQgdGVjaG5vbG9naWVzLCBqYmVpc2VydEBldXJvZHNuLmRlCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2lmbmRlZiBfX0NPTkZJR19ICiNkZWZpbmUgX19DT05GSUdfSAoKI3VuZGVmIFVTRV9WR0FfR1JBUEhJQ1MKCi8qIE1lbW9yeSBNYXAKICogMHgwMDAwMDAwMCAuLi4uIDB4MDNGRkZGRkYgLT4gUkFNICh1cCB0byAxMjhNaUIpCiAqIDB4NzQwMDAwMDAgLi4uLiAweDc0MEZGRkZGIC0+IENTIzYKICogMHg3NDEwMDAwMCAuLi4uIDB4NzQxRkZGRkYgLT4gQ1MjNwogKiAweDc0MjAwMDAwIC4uLi4gMHg3NDJGRkZGRiAtPiBDUzQjIGlmIG5vIGludGVybmFsIFVTQgogKiAweDc0MzAwMDAwIC4uLi4gMHg3NDNGRkZGRiAtPiBDUzUjIGlmIG5vIGJvb3N0ZWQgSURFCiAqIDB4NzdDMDAwMDAgLi4uLiAweDc3Q0ZGRkZGIC0+IENTNCMgVVNCIEhDICgxIE1pQikKICogMHg3N0QwMDAwMCAuLi4uIDB4NzdERkZGRkYgLT4gQ1MxIyBOQU5ELUZsYXNoICgxIE1pQikKICogMHg3ODAwMDAwMCAuLi4uIDB4NzhGRkZGRkYgLT4gQ1MyIyBJU0EtQnVzIFNwZWljaGVyenVncmlmZiAoMTYgTWlCKQogKiAweDc5MDAwMDAwIC4uLi4gMHg3OTAwRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAoMTYgTWlCLCBtYXBwZWQ6IDY0a2lCKQogKiAweDc5MDEwMDAwIC4uLi4gMHg3OUZGRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAobWlycm9yZWQpCiAqIDB4N0EwMDAwMDAgLi4uLiAweDdBMEZGRkZGIC0+IENTNSMgSURFIGVtdWxhdGlvbiAoMU1pQikKICoKICogMHg4MDAwMDAwMCAuLi4uIDB4OUZGRkZGRkYgLT4gUENJLUJ1cyBTcGVpY2hlcnp1Z3JpZmYgKDUxMk1pQiwgbWFwcGVkOiAxOjEpCiAqIDB4QTAwMDAwMDAgLi4uLiAweEJGRkZGRkZGIC0+IFBDSS1CdXMgU3BlaWNoZXJ6dWdyaWZmICg1MTJNaUIsIG1hcHBlZDogMHgwMDAwMDAwMC4uLjB4MUZGRkZGRkYpCiAqIDB4RTgwMDAwMDAgLi4uLiAweEU4MDBGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNjRraUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwMDAuLi4weEZGRkYpCiAqIDB4RTg4MDAwMDAgLi4uLiAweEVCRkZGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNTZNaUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwODAwMDAwLi4uMHgzRkZGRkZGKQogKiAweEVFRDAwMDAwIC4uLi4gMHhFRUQwMDAwMyAtPiBQQ0ktQnVzCiAqIDB4RUY0MDAwMDAgLi4uLiAweEVGNDAwMDNGIC0+IFBDSS1CdXMgTG9jYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMKICogMHhFRjQwMDAzRiAuLi4uIDB4RUY1RkZGRkYgLT4gcmVzZXJ2ZWQKICogMHhFRjYwMDAwMCAuLi4uIDB4RUZGRkZGRkYgLT4gNDA1R1AgaW50ZXJuYWwgRGV2aWNlcyAoMTAgTWlCKQogKiAweEYwMDAwMDAwIC4uLi4gMHhGMDFGRkZGRiAtPiBGbGFzaC1ST00gKDIgTWlCKQogKiAweEYwMjAwMDAwIC4uLi4gMHhGN0ZGRkZGRiAtPiBmcmVlIGZvciBmbGFzaCBkZXZpY2VzCiAqIDB4RjgwMDAwMDAgLi4uLiAweEY4MDAwRkZGIC0+IE9uQ2hpcE1lbW9yeSAoNGtpQikKICogMHhGODAwMTAwMCAuLi4uIDB4RkZERkZGRkYgLT4gZnJlZSBmb3IgZmxhc2ggZGV2aWNlcwogKiAweEZGRTAwMDAwIC4uLi4gMHhGRkZGRkZGRiAtPiBCT09ULVJPTSAoMiBNaUIpCiAqLwoKI2RlZmluZSBDT05GSUdfU0MzCTEKI2RlZmluZSBDT05GSUdfNHh4CTEKI2RlZmluZSBDT05GSUdfNDA1R1AJMQoKI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GCTEKCi8qCiAqIERlZmluZSBJREVfVVNFU19JU0FfRU1VTEFUSU9OIGZvciBzbG93ZXIgSURFIGFjY2VzcyBpbiB0aGUgSVNBLUlPIGFkZHJlc3MgcmFuZ2UKICogSWYgdW5kZWZpbmVkLCBJREUgYWNjZXNzIHVzZXMgYSBzZXBlcmF0IGVtdWxhdGlvbiB3aXRoIGhpZ2hlciBhY2Nlc3Mgc3BlZWQuCiAqIENvbnNpZGVyIHRvIGluZm9ybSB5b3VyIExpbnV4IElERSBkcml2ZXIgYWJvdXQgdGhlIGRpZmZlcmVudCBhZGRyZXNzZXMhCiAqIElERV9VU0VTX0lTQV9FTVVMQVRJT04gaXMgb25seSB1c2VkIGlmIHlvdXIgQ09ORklHX0NPTU1BTkRTIG1hY3JvIGluY2x1ZGVzCiAqIHRoZSBDRkdfQ01EX0lERSBtYWNybyEKICovCiNkZWZpbmUgSURFX1VTRVNfSVNBX0VNVUxBVElPTgoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBTZXJpYWwgUG9ydAogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwojZGVmaW5lIENPTkZJR19TRVJJQUxfTVVMVEkKI3VuZGVmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTwovKgogKiBkZWZpbmUgQ09ORklHX1BPV0VSX0RPV04gaWYgeW91ciBjcHUgc2hvdWxkIHBvd2VyIGRvd24gd2hpbGUgd2FpdGluZyBmb3IgeW91ciBpbnB1dAogKiBXb3JrcyBvbmx5LCBpZiB5b3UgaGF2ZSBlbmFibGVkIHRoZSBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gZmVhdHVyZQogKi8KI2lmIENPTkZJR19TRVJJQUxfU09GVFdBUkVfRklGTwogI2RlZmluZSBDT05GSUdfUE9XRVJfRE9XTgojZW5kaWYKCi8qCiAqIGRlZmluZSBDT05GSUdfU1lTX0NMS19GUkVRIHRvIHlvdXIgYmFzZSBjcnlzdGFsIGNsb2NrIGluIEh6CiAqLwojZGVmaW5lIENPTkZJR19TWVNfQ0xLX0ZSRVEJMzMzMzMzMzMKCi8qCiAqIGRlZmluZSBDT05GSUdfQkFVRFJBVEUgdG8gdGhlIGJhdWRyYXRlIHZhbHVlIHlvdSB3YW50IHRvIHVzZSBhcyBkZWZhdWx0CiAqLwojZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCiNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzIC8qIGF1dG9ib290IGFmdGVyIDMgc2Vjb25kcwkgICAgICAqLwoKI2RlZmluZSBDT05GSUdfUFJFQk9PVAkiZWNobzsiCVwKCSJlY2hvIFR5cGUgXCJydW4gZmxhc2hfbmZzXCIgdG8gbW91bnQgcm9vdCBmaWxlc3lzdGVtIG92ZXIgTkZTOyIgXAoJImVjaG8iCgojdW5kZWYJQ09ORklHX0JPT1RBUkdTCgojZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCVwKCSJuZXRkZXY9ZXRoMFwwIgkJCQkJCQlcCgkibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyAiCQkJXAoJCSJuZnNyb290PSR7c2VydmVyaXB9OiR7cm9vdHBhdGh9XDAiCQkJXAoJInJhbWFyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcndcMCIJCQlcCgkibmFuZF9hcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2s1IHJ3IgkJXAoJCSJyb290ZnN0eXBlPWpmZnMyXDAiCQkJCQlcCgkiYWRkaXA9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9ICIJCQkJXAoJCSJpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9OiR7bmV0bWFza30iCVwKCQkiOiR7aG9zdG5hbWV9OiR7bmV0ZGV2fTpvZmYgcGFuaWM9MVwwIgkJCVwKCSJhZGRjb25zPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAiCQkJCVwKCQkiY29uc29sZT10dHlTMCwke2JhdWRyYXRlfVwwIgkJCQlcCgkiZmxhc2hfbmZzPXJ1biBuZnNhcmdzIGFkZGlwIGFkZGNvbnM7IgkJCQlcCgkJImJvb3RtICR7a2VybmVsX2FkZHJ9XDAiCQkJCVwKCSJmbGFzaF9uYW5kPXJ1biBuYW5kX2FyZ3MgYWRkaXAgYWRkY29ucztib290bSAke2tlcm5lbF9hZGRyfVwwIglcCgkibmV0X25mcz10ZnRwIDIwMDAwMCAke2Jvb3RmaWxlfTtydW4gbmZzYXJncyBhZGRpcCBhZGRjb25zOyIJXAoJCSJib290bVwwIgkJCQkJCVwKCSJyb290cGF0aD0vb3B0L2VsZGsvcHBjXzR4eFwwIgkJCQkJXAoJImJvb3RmaWxlPS90ZnRwYm9vdC9zYzMvdUltYWdlXDAiCQkJCVwKCSJ1LWJvb3Q9L3RmdHBib290L3NjMy91LWJvb3QuYmluXDAiCQkJCVwKCSJzZXR1cD10ZnRwIDIwMDAwMCAvdGZ0cGJvb3Qvc2MzL3NldHVwLmltZzthdXRvc2NyIDIwMDAwMFwwIglcCgkia2VybmVsX2FkZHI9RkZFMDgwMDBcMCIJCQkJCVwKCSIiCiN1bmRlZiBDT05GSUdfQk9PVENPTU1BTkQKCiNkZWZpbmUgQ09ORklHX1NJTEVOVF9DT05TT0xFCTEJLyogZW5hYmxlIHNpbGVudCBzdGFydHVwICovCiNkZWZpbmUgQ0ZHX0RFVklDRV9OVUxMREVWCTEJLyogaW5jbHVkZSBudWxsZGV2IGRldmljZQkqLwoKI2lmIDEJLyogZmVlbCBmcmVlIHRvIGRpc2FibGUgZm9yIGRldmVsb3BtZW50ICovCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0tFWUVECQkvKiBFbmFibGUgcGFzc3dvcmQgcHJvdGVjdGlvbgkqLwojZGVmaW5lIENPTkZJR19BVVRPQk9PVF9QUk9NUFQJCSJcblNDMyAtIGJvb3RpbmcuLi4gc3RvcCB3aXRoIEVOVEVSXG4iCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0RFTEFZX1NUUgkiXHIiCS8qIDFzdCAicGFzc3dvcmQiCSovCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0RFTEFZX1NUUjIJIlxuIgkvKiAxc3QgInBhc3N3b3JkIgkqLwojZW5kaWYKCi8qCiAqIGRlZmluZSBDT05GSUdfQk9PVENPTU1BTkQgdG8gdGhlIGF1dG9ib290IGNvbW1hbmRzLiBUaGV5IHdpbGwgcnVubmluZyBhZnRlcgogKiB0aGUgQ09ORklHX0JPT1RERUxBWSBkZWxheSB0byBib290IHlvdXIgbWFjaGluZQogKi8KI2RlZmluZSBDT05GSUdfQk9PVENPTU1BTkQJImJvb3RwO2RjYWNoZSBvbjtib290bSIKCi8qCiAqIGRlZmluZSBDT05GSUdfQk9PVEFSR1MgdG8gdGhlIGRlZmF1bHQga2VybmVsIHBhcmFtZXRlcnMuIFRoZXkgd2lsbCB1c2VkIGlmIHlvdSBkb24ndAogKiBzZXQgZGlmZmVyZW50IHZhbHVlcyBhdCB0aGUgdS1ib290IHByb21wdAogKi8KI2lmZGVmIFVTRV9WR0FfR1JBUEhJQ1MKICNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCSJyb290PS9kZXYvbmZzIHJ3IGlwPWJvb3RwIG5mc3Jvb3Q9L3RmdHBib290L3NvbGlkY2FyZDNyZSIKI2Vsc2UKICNkZWZpbmUgQ09ORklHX0JPT1RBUkdTCSJjb25zb2xlPXR0eVMwLDExNTIwMCByb290PS9kZXYvbmZzIHJ3IGlwPWJvb3RwIgojZW5kaWYKLyoKICogSXMgdGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgYXNzZW1ibGVkPyBJZiB5ZXMgZGVmaW5lIENPTkZJR19JU1AxMTYxX1BSRVNFTlQKICogVGhpcyByZXNlcnZlcyBtZW1vcnkgYmFuayAjNCBmb3IgdGhpcyBwdXJwb3NlCiAqLwojdW5kZWYgQ09ORklHX0lTUDExNjFfUFJFU0VOVAoKI3VuZGVmIENPTkZJR19MT0FEU19FQ0hPICAgLyogbm8gZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCiNkZWZpbmUgQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlCSovCgojZGVmaW5lIENPTkZJR19ORVRfTVVMVEkKLyogI2RlZmluZSBDT05GSUdfRUVQUk8xMDBfU1JPTV9XUklURSAqLwovKiAjZGVmaW5lIENPTkZJR19TSE9XX01BQyAqLwojZGVmaW5lIENPTkZJR19FRVBSTzEwMAojZGVmaW5lIENPTkZJR19NSUkgMQkJCS8qIGFkZCA0MDVHUCBNSUkgUEhZIG1hbmFnZW1lbnQJCSovCiNkZWZpbmUgQ09ORklHX1BIWV9BRERSIDEJLyogdGhlIGNvbm5lY3RlZCBQaHkgZGVmYXVsdHMgdG8gYWRkcmVzcyAxICovCgovKgogKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KICovCiNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KCgojZGVmaW5lIENPTkZJR19DTURfQVVUT1NDUklQVAojZGVmaW5lIENPTkZJR19DTURfUENJCiNkZWZpbmUgQ09ORklHX0NNRF9JUlEKI2RlZmluZSBDT05GSUdfQ01EX05FVAojZGVmaW5lIENPTkZJR19DTURfTUlJCiNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCiNkZWZpbmUgQ09ORklHX0NNRF9OQU5ECiNkZWZpbmUgQ09ORklHX0NNRF9KRkZTMgojZGVmaW5lIENPTkZJR19DTURfSTJDCiNkZWZpbmUgQ09ORklHX0NNRF9JREUKI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKI2RlZmluZSBDT05GSUdfQ01EX0NBQ0hFCiNkZWZpbmUgQ09ORklHX0NNRF9FTEYKCgojdW5kZWYgQ09ORklHX1dBVENIRE9HCQkJLyogd2F0Y2hkb2cgZGlzYWJsZWQJCSovCgovKgogKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAqLwojZGVmaW5lIENGR19MT05HSEVMUAkxCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KI2RlZmluZSBDRkdfUFJPTVBUCSJTQzM+ICIJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLwojZGVmaW5lCUNGR19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDRkdfUEJTSVpFIChDRkdfQ0JTSVpFK3NpemVvZihDRkdfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KCiNkZWZpbmUgQ0ZHX01BWEFSR1MJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCiNkZWZpbmUgQ0ZHX0JBUkdTSVpFCUNGR19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZQkqLwoKI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDA0MDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLwojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwQzAwMDAwCS8qIDQgLi4uIDEyIE1CIGluIERSQU0JKi8KCi8qCiAqIElmIENGR19FWFRfU0VSSUFMX0NMT0NLLCB0aGVuIHRoZSBVQVJUIGRpdmlzb3IgaXMgMS4KICogSWYgQ0ZHXzQwNV9VQVJUX0VSUkFUQV81OSwgdGhlbiBVQVJUIGRpdmlzb3IgaXMgMzEuCiAqIE90aGVyd2lzZSwgVUFSVCBkaXZpc29yIGlzIGRldGVybWluZWQgYnkgQ1BVIENsb2NrIGFuZCBDRkdfQkFTRV9CQVVEIHZhbHVlLgogKiBUaGUgTGludXggQkFTRV9CQVVEIGRlZmluZSBzaG91bGQgbWF0Y2ggdGhpcyBjb25maWd1cmF0aW9uLgogKiAgICBiYXNlQmF1ZCA9IGNwdUNsb2NrLyh1YXJ0RGl2aXNvcioxNikKICogSWYgQ0ZHXzQwNV9VQVJUX0VSUkFUQV81OSBhbmQgMjAwTUh6IENQVSBjbG9jaywKICogc2V0IExpbnV4IEJBU0VfQkFVRCB0byA0MDMyMDAuCiAqCiAqIENvbnNpZGVyIHRoZSBPUEIgY2xvY2shIElmIGl0IGdldCBsb3dlciB0aGUgQkFTRV9CQVVEIG11c3QgYmUgbG93ZXIgdG8KICogKHNlZSA0MDVHUCBkYXRhc2hlZXQgZm9yIGRlc2NyaXRwaW9uKQogKi8KI3VuZGVmCUNGR19FWFRfU0VSSUFMX0NMT0NLCQkvKiBleHRlcm5hbCBzZXJpYWwgY2xvY2sgKi8KI3VuZGVmCUNGR180MDVfVUFSVF9FUlJBVEFfNTkJCS8qIDQwNUdQL0NSIFJldi4gRCBzaWxpY29uICovCiNkZWZpbmUgQ0ZHX0JBU0VfQkFVRAkJOTIxNjAwCS8qIGludGVybmFsIGNsb2NrICovCgovKiBUaGUgZm9sbG93aW5nIHRhYmxlIGluY2x1ZGVzIHRoZSBzdXBwb3J0ZWQgYmF1ZHJhdGVzICovCiNkZWZpbmUgQ0ZHX0JBVURSQVRFX1RBQkxFICBcCiAgICB7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwfQoKI2RlZmluZSBDRkdfTE9BRF9BRERSCQkweDEwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KI2RlZmluZSBDRkdfRVhUQkRJTkZPCQkxCS8qIFRvIHVzZSBleHRlbmRlZCBib2FyZF9pbnRvIChiZF90KSAqLwoKI2RlZmluZQlDRkdfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MJKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogSUlDIHN0dWZmCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiNkZWZpbmUgIENPTkZJR19IQVJEX0kyQwkJLyogSTJDIHdpdGggaGFyZHdhcmUgc3VwcG9ydAkqLwojdW5kZWYJQ09ORklHX1NPRlRfSTJDCQkJLyogSTJDIGJpdC1iYW5nZWQJCSovCgojZGVmaW5lIEkyQ19JTklUCiNkZWZpbmUgSTJDX0FDVElWRSAwCiNkZWZpbmUgSTJDX1RSSVNUQVRFIDAKCiNkZWZpbmUgQ0ZHX0kyQ19TUEVFRAkJMTAwMDAwCS8qIHVzZSB0aGUgc3RhbmRhcmQgMTAwa0h6IHNwZWVkICovCiNkZWZpbmUgQ0ZHX0kyQ19TTEFWRQkJMHg3RgkJLyogbWFzayB2YWxpZCBiaXRzICovCgojZGVmaW5lIENPTkZJR19SVENfRFMxMzM3CiNkZWZpbmUgQ0ZHX0kyQ19SVENfQUREUiAweDY4CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBDSSBzdHVmZgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojZGVmaW5lIFBDSV9IT1NUX0FEQVBURVIgMAkJLyogY29uZmlndXJlIGFyIHBjaSBhZGFwdGVyCSovCiNkZWZpbmUgUENJX0hPU1RfRk9SQ0UJMQkJLyogY29uZmlndXJlIGFzIHBjaSBob3N0CSovCiNkZWZpbmUgUENJX0hPU1RfQVVUTwkyCQkvKiBkZXRlY3RlZCB2aWEgYXJiaXRlciBlbmFibGUJKi8KCiNkZWZpbmUgQ09ORklHX1BDSQkJCS8qIGluY2x1ZGUgcGNpIHN1cHBvcnQJCSovCiNkZWZpbmUgQ09ORklHX1BDSV9IT1NUCVBDSV9IT1NUX0ZPUkNFCS8qIHNlbGVjdCBwY2kgaG9zdCBmdW5jdGlvbgkqLwojZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkJLyogZG8gcGNpIHBsdWctYW5kLXBsYXkJCSovCgkJCQkJLyogcmVzb3VyY2UgY29uZmlndXJhdGlvbgkqLwoKLyogSWYgeW91IHdhbnQgdG8gc2VlLCB3aGF0cyBjb25uZWN0ZWQgdG8geW91ciBQQ0kgYnVzICovCi8qICNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cgKi8KCiNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfVkVORE9SSUQgMHgwMDAwCS8qIFBDSSBWZW5kb3IgSUQ6IHRvLWRvISEhCSovCiNkZWZpbmUgQ0ZHX1BDSV9TVUJTWVNfREVWSUNFSUQgMHgwMDAwCS8qIFBDSSBEZXZpY2UgSUQ6IHRvLWRvISEhCSovCiNkZWZpbmUgQ0ZHX1BDSV9QVE0xTEEJMHgwMDAwMDAwMAkvKiBwb2ludCB0byBzZHJhbQkJKi8KI2RlZmluZSBDRkdfUENJX1BUTTFNUwkweDgwMDAwMDAxCS8qIDJHQiwgZW5hYmxlIGhhcmQtd2lyZWQgdG8gMQkqLwojZGVmaW5lIENGR19QQ0lfUFRNMVBDSSAweDAwMDAwMDAwCS8qIEhvc3Q6IHVzZSB0aGlzIHBjaSBhZGRyZXNzCSovCiNkZWZpbmUgQ0ZHX1BDSV9QVE0yTEEJMHgwMDAwMDAwMAkvKiBkaXNhYmxlZAkJCSovCiNkZWZpbmUgQ0ZHX1BDSV9QVE0yTVMJMHgwMDAwMDAwMAkvKiBkaXNhYmxlZAkJCSovCiNkZWZpbmUgQ0ZHX1BDSV9QVE0yUENJIDB4MDQwMDAwMDAJLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MJKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRXh0ZXJuYWwgcGVyaXBoZXJhbCBiYXNlIGFkZHJlc3MKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KI2lmICFkZWZpbmVkKENPTkZJR19DTURfSURFKQoKI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCiN1bmRlZglDT05GSUdfSURFX1JFU0VUCQkvKiBubyByZXNldCBmb3IgaWRlIHN1cHBvcnRlZAkqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBJREUvQVRBIHN0dWZmCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiNlbHNlCiNkZWZpbmUgQ09ORklHX1NUQVJUX0lERQkxCS8qIGNoZWNrLCBpZiB1c2UgSURFICovCgojdW5kZWYJQ09ORklHX0lERV84eHhfRElSRUNUCQkvKiBubyBwY21jaWEgaW50ZXJmYWNlIHJlcXVpcmVkICovCiN1bmRlZglDT05GSUdfSURFX0xFRAkJCS8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZAkqLwojdW5kZWYJQ09ORklHX0lERV9SRVNFVAkJLyogbm8gcmVzZXQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KCiNkZWZpbmUJQ09ORklHX0FUQVBJCiNkZWZpbmUJQ09ORklHX0RPU19QQVJUSVRJT04KI2RlZmluZQlDRkdfSURFX01BWERFVklDRQkoQ0ZHX0lERV9NQVhCVVMqMSkgLyogbWF4LiAxIGRyaXZlcyBwZXIgSURFIGJ1cyAqLwoKI2lmbmRlZiBJREVfVVNFU19JU0FfRU1VTEFUSU9OCgovKiBOZXcgYW5kIGZhc3RlciBhY2Nlc3MgKi8KI2RlZmluZQlDRkdfQVRBX0JBU0VfQUREUgkJMHg3QTAwMDAwMAkvKiBzdGFydCBvZiBJU0EgSU8gZW11bGF0aW9uICovCgovKiBIb3cgbWFueSBJREUgYnVzc2VzIGFyZSBhdmFpbGFibGUgKi8KI2RlZmluZQlDRkdfSURFX01BWEJVUwkJMQoKLyogV2hhdCBJREUgcG9ydHMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNGR19BVEFfSURFMF9PRkZTRVQJMHgwMDAJCS8qIGZpcnN0IGlzIGF2YWlsYWJsZSAqLwojdW5kZWYJQ0ZHX0FUQV9JREUxX09GRlNFVAkJCS8qIHNlY29uZCBub3QgYXZhaWxhYmxlICovCgovKiBhY2Nlc3MgdG8gdGhlIGRhdGEgcG9ydCBpcyBjYWxjdWxhdGVkOgogICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX0RBVEFfT0ZGU0VUICsgMCAqLwojZGVmaW5lIENGR19BVEFfREFUQV9PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3IgZGF0YSBJL08gKi8KCi8qIGFjY2VzcyB0byB0aGUgcmVnaXN0ZXJzIGlzIGNhbGN1bGF0ZWQ6CiAgIENGR19BVEFfQkFTRV9BRERSICsgQ0ZHX0FUQV9JREUwX09GRlNFVCArIENGR19BVEFfUkVHX09GRlNFVCArIFsxLi43XSAqLwojZGVmaW5lCUNGR19BVEFfUkVHX09GRlNFVAkweDAwMDAJLyogT2Zmc2V0IGZvciBub3JtYWwgcmVnaXN0ZXIgYWNjZXNzZXMJKi8KCi8qIGFjY2VzcyB0byB0aGUgYWx0ZXJuYXRlIHJlZ2lzdGVyIGlzIGNhbGN1bGF0ZWQ6CiAgIENGR19BVEFfQkFTRV9BRERSICsgQ0ZHX0FUQV9JREUwX09GRlNFVCArIENGR19BVEFfQUxUX09GRlNFVCArIDYgKi8KI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwMDgJCS8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycwkqLwoKI2Vsc2UgLyogSURFX1VTRVNfSVNBX0VNVUxBVElPTiAqLwoKI2RlZmluZQlDRkdfQVRBX0JBU0VfQUREUgkJMHg3OTAwMDAwMAkvKiBzdGFydCBvZiBJU0EgSU8gZW11bGF0aW9uICovCgovKiBIb3cgbWFueSBJREUgYnVzc2VzIGFyZSBhdmFpbGFibGUgKi8KI2RlZmluZQlDRkdfSURFX01BWEJVUwkJMQoKLyogV2hhdCBJREUgcG9ydHMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNGR19BVEFfSURFMF9PRkZTRVQJMHgwMUYwCS8qIGZpcnN0IGlzIGF2YWlsYWJsZSAqLwojdW5kZWYJQ0ZHX0FUQV9JREUxX09GRlNFVAkJCQkvKiBzZWNvbmQgbm90IGF2YWlsYWJsZSAqLwoKLyogYWNjZXNzIHRvIHRoZSBkYXRhIHBvcnQgaXMgY2FsY3VsYXRlZDoKICAgQ0ZHX0FUQV9CQVNFX0FERFIgKyBDRkdfQVRBX0lERTBfT0ZGU0VUICsgQ0ZHX0FUQV9EQVRBX09GRlNFVCArIDAgKi8KI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PICovCgovKiBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVycyBpcyBjYWxjdWxhdGVkOgogICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX1JFR19PRkZTRVQgKyBbMS4uN10gKi8KI2RlZmluZQlDRkdfQVRBX1JFR19PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3Igbm9ybWFsIHJlZ2lzdGVyIGFjY2Vzc2VzCSovCgovKiBhY2Nlc3MgdG8gdGhlIGFsdGVybmF0ZSByZWdpc3RlciBpcyBjYWxjdWxhdGVkOgogICBDRkdfQVRBX0JBU0VfQUREUiArIENGR19BVEFfSURFMF9PRkZTRVQgKyBDRkdfQVRBX0FMVF9PRkZTRVQgKyA2ICovCiNkZWZpbmUgQ0ZHX0FUQV9BTFRfT0ZGU0VUCTB4MDNGMAkJLyogT2Zmc2V0IGZvciBhbHRlcm5hdGUgcmVnaXN0ZXJzCSovCgojZW5kaWYgLyogSURFX1VTRVNfSVNBX0VNVUxBVElPTiAqLwoKI2VuZGlmCgovKgojZGVmaW5lCUNGR19LRVlfUkVHX0JBU0VfQUREUgkweEYwMTAwMDAwCiNkZWZpbmUJQ0ZHX0lSX1JFR19CQVNFX0FERFIJMHhGMDIwMDAwMAojZGVmaW5lCUNGR19GUEdBX1JFR19CQVNFX0FERFIJMHhGMDMwMDAwMAoqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBTdGFydCBhZGRyZXNzZXMgZm9yIHRoZSBmaW5hbCBtZW1vcnkgY29uZmlndXJhdGlvbgogKiAoU2V0IHVwIGJ5IHRoZSBzdGFydHVwIGNvZGUpCiAqIFBsZWFzZSBub3RlIHRoYXQgQ0ZHX1NEUkFNX0JBU0UgX211c3RfIHN0YXJ0IGF0IDAKICoKICogQ0ZHX0ZMQVNIX0JBU0UgICAtPiBzdGFydCBhZGRyZXNzIG9mIGludGVybmFsIGZsYXNoCiAqIENGR19NT05JVE9SX0JBU0UgLT4gc3RhcnQgb2YgdS1ib290CiAqLwojaWZuZGVmIF9fQVNTRU1CTEVSX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgb2Zmc2V0T2ZCaWdGbGFzaDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgb2Zmc2V0T2ZFbnZpcm9ubWVudDsKI2VuZGlmCgojZGVmaW5lIENGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCTB4RkZFMDAwMDAKI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCTB4RkZGQzAwMDAgICAgIC8qIHBsYWNlZCBsYXN0IDI1NmsgKi8KI2RlZmluZSBDRkdfTU9OSVRPUl9MRU4JCSgyMjQgKiAxMDI0KQkvKiBSZXNlcnZlIDIyNCBLaUIgZm9yIE1vbml0b3IJKi8KI2RlZmluZSBDRkdfTUFMTE9DX0xFTgkJKDEyOCAqIDEwMjQpCS8qIFJlc2VydmUgMTI4IEtpQiBmb3IgbWFsbG9jKCkJKi8KCi8qCiAqIEZvciBib290aW5nIExpbnV4LCB0aGUgYm9hcmQgaW5mbyBhbmQgY29tbWFuZCBsaW5lIGRhdGEKICogaGF2ZSB0byBiZSBpbiB0aGUgZmlyc3QgOCBNaUIgb2YgbWVtb3J5LCBzaW5jZSB0aGlzIGlzCiAqIHRoZSBtYXhpbXVtIG1hcHBlZCBieSB0aGUgTGludXgga2VybmVsIGR1cmluZyBpbml0aWFsaXphdGlvbi4KICovCiNkZWZpbmUgQ0ZHX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBGTEFTSCBvcmdhbml6YXRpb24gIyMgRklYTUU6IGxvb2t1cCBpbiBkYXRhc2hlZXQKICovCiNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkyCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLwojZGVmaW5lIENGR19NQVhfRkxBU0hfU0VDVAkyNTYJLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwCSovCgojZGVmaW5lIENGR19GTEFTSF9DRkkJCQkvKiBmbGFzaCBpcyBDRkkgY29tcGF0LgkqLwojZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCQkvKiBVc2UgY29tbW9uIENGSSBkcml2ZXIqLwojZGVmaW5lIENGR19GTEFTSF9FTVBUWV9JTkZPCQkvKiBwcmludCAnRScgZm9yIGVtcHR5IHNlY3RvcgkqLwojZGVmaW5lIENGR19GTEFTSF9RVUlFVF9URVNUCTEJLyogZG9uJ3Qgd2FybiB1cG9uIHVua25vd24gZmxhc2gqLwojZGVmaW5lIENGR19GTEFTSF9FUkFTRV9UT1VUCTEyMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAoaW4gbXMpCSovCiNkZWZpbmUgQ0ZHX0ZMQVNIX1dSSVRFX1RPVVQJNTAwCS8qIFRpbWVvdXQgZm9yIEZsYXNoIFdyaXRlIChpbiBtcykJKi8KI2RlZmluZSBDRkdfV1JJVEVfU1dBUFBFRF9EQVRBCQkvKiBzd2FwIERhdGFieXRlcyBiZXR3ZWVuIHJlYWRpbmcvd3JpdGluZyAqLwoKI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICTEKI2lmIENGR19FTlZfSVNfSU5fRkxBU0gKI2RlZmluZSBDRkdfRU5WX09GRlNFVAkJMHgwMDAwMDAwMCAgLyogT2Zmc2V0IG9mIEVudmlyb25tZW50IFNlY3RvciBpbiBib3R0b20gdHlwZSAqLwojZGVmaW5lIENGR19FTlZfU0laRQkJMHg0MDAwCSAgICAvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLwojZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4NDAwMAkgICAgLyogc2VlIFJFQURNRSAtIGVudiBzZWN0b3IgdG90YWwgc2l6ZQkqLwoKLyogQWRkcmVzcyBhbmQgc2l6ZSBvZiBSZWR1bmRhbnQgRW52aXJvbm1lbnQgU2VjdG9yCSovCiNkZWZpbmUgQ0ZHX0VOVl9PRkZTRVRfUkVEVU5ECShDRkdfRU5WX09GRlNFVCtDRkdfRU5WX1NJWkUpCiNkZWZpbmUgQ0ZHX0VOVl9TSVpFX1JFRFVORAkoQ0ZHX0VOVl9TSVpFKQoKI2VuZGlmCi8qIGxldCB1cyBjaGFuZ2luZyBhbnl0aGluZyBpbiBvdXIgZW52aXJvbm1lbnQgKi8KI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQoKLyoKICogTkFORC1GTEFTSCBzdHVmZgogKi8KI2RlZmluZSBDRkdfTUFYX05BTkRfREVWSUNFCTEKI2RlZmluZSBOQU5EX01BWF9DSElQUwkJMQojZGVmaW5lIENGR19OQU5EX0JBU0UJCTB4NzdEMDAwMDAKCgojZGVmaW5lIENPTkZJR19KRkZTMl9OQU5EIDEJCQkvKiBqZmZzMiBvbiBuYW5kIHN1cHBvcnQgKi8KCi8qIE5vIGNvbW1hbmQgbGluZSwgb25lIHN0YXRpYyBwYXJ0aXRpb24gKi8KI3VuZGVmCUNPTkZJR19KRkZTMl9DTURMSU5FCiNkZWZpbmUgQ09ORklHX0pGRlMyX0RFVgkJIm5hbmQwIgojZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX1NJWkUJCTB4MDEwMDAwMDAKI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9PRkZTRVQJMHgwMDAwMDAwMAoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBDYWNoZSBDb25maWd1cmF0aW9uCiAqCiAqIENGR19EQ0FDSEVfU0laRSAtPiBzaXplIG9mIGRhdGEgY2FjaGU6CiAqIC0gNDA1R1AgOGsKICogLSA0MDVHUHIgMTZrCiAqIEhvdyB0byBoYW5kbGUgdGhlIGRpZmZlcmVuY2UgaW4gY2hhY2hlIHNpemU/CiAqIENGR19DQUNIRUxJTkVfU0laRSAtPiBzaXplIG9mIG9uZSBjYWNoZSBsaW5lOiAzMiBieXRlcwogKiAodXNlZCBpbiBjcHUvcHBjNHh4L3N0YXJ0LlMpCiovCiNkZWZpbmUgQ0ZHX0RDQUNIRV9TSVpFICAgIDE2Mzg0CgojZGVmaW5lIENGR19DQUNIRUxJTkVfU0laRSAzMgoKI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQogI2RlZmluZSBDRkdfQ0FDSEVMSU5FX1NISUZUCTUJLyogbG9nIGJhc2UgMiBvZiB0aGUgYWJvdmUgdmFsdWUJKi8KI2VuZGlmCgovKgogKiBJbml0IE1lbW9yeSBDb250cm9sbGVyOgogKgogKi8KCiNkZWZpbmUgRkxBU0hfQkFTRTBfUFJFTElNCUNGR19GTEFTSF9CQVNFCiNkZWZpbmUgRkxBU0hfQkFTRTFfUFJFTElNCTAKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU29tZSBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIGludGVybmFsIFNSQU0gKE9DTT1PbiBDaGlwIE1lbW9yeSkKICoKICogQ0ZHX09DTV9EQVRBX0FERFIgLT4gbG9jYXRpb24KICogQ0ZHX09DTV9EQVRBX1NJWkUgLT4gc2l6ZQoqLwoKI2RlZmluZSBDRkdfVEVNUF9TVEFDS19PQ00JMQojZGVmaW5lIENGR19PQ01fREFUQV9BRERSCTB4RjgwMDAwMDAKI2RlZmluZSBDRkdfT0NNX0RBVEFfU0laRQkweDEwMDAKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRGVmaW5pdGlvbnMgZm9yIGluaXRpYWwgc3RhY2sgcG9pbnRlciBhbmQgZGF0YSBhcmVhIChpbiBEUFJBTSk6CiAqIC0gd2UgYXJlIHVzaW5nIHRoZSBpbnRlcm5hbCA0ayBTUkFNLCBzbyB3ZSBkb24ndCBuZWVkIGRhdGEgY2FjaGUgbWFwcGluZwogKiAtIGludGVybmFsIFNSQU0gKE9DTT1PbiBDaGlwIE1lbW9yeSkgaXMgcGxhY2VkIHRvIENGR19PQ01fREFUQV9BRERSCiAqIC0gU3RhY2twb2ludGVyIHdpbGwgYmUgbG9jYXRlZCB0bwogKiAgIChDRkdfSU5JVF9SQU1fQUREUiYweEZGRkYwMDAwKSB8IChDRkdfSU5JVF9TUF9PRkZTRVQmMHgwMDAwRkZGRikKICogICBpbiBjcHUvcHBjNHh4L3N0YXJ0LlMKICovCgojdW5kZWYgQ0ZHX0lOSVRfRENBQ0hFX0NTCi8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIHN0YXJ0cyAqLwojZGVmaW5lIENGR19JTklUX1JBTV9BRERSCUNGR19PQ01fREFUQV9BRERSCi8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIGVuZHMgKG9ubHkgb2Zmc2V0KSAqLwojZGVmaW5lIENGR19JTklUX1JBTV9FTkQJMHgwRjAwCgovKgoKIENGR19JTklUX1JBTV9BRERSIC0tLS0tLT4gLS0tLS0tLS0tLS0tIGxvd2VyIGFkZHJlc3MKCQkJICAgfAkgICAgICB8CgkJCSAgIHwgIF4gICAgICAgfAoJCQkgICB8ICB8ICAgICAgIHwKCQkJICAgfCAgfCBTdGFjayB8CiBDRkdfR0JMX0RBVEFfT0ZGU0VUIC0tLS0+IC0tLS0tLS0tLS0tLQoJCQkgICB8CSAgICAgIHwKCQkJICAgfCA2NCBCeXRlcyB8CgkJCSAgIHwJICAgICAgfAogQ0ZHX0lOSVRfUkFNX0VORCAgLS0tLS0tPiAtLS0tLS0tLS0tLS0gaGlnaGVyIGFkZHJlc3MKICAob2Zmc2V0IG9ubHkpCgoqLwovKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KI2RlZmluZSBDRkdfR0JMX0RBVEFfU0laRSAgICAgNjQKI2RlZmluZSBDRkdfR0JMX0RBVEFfT0ZGU0VUICAgKENGR19JTklUX1JBTV9FTkQgLSBDRkdfR0JMX0RBVEFfU0laRSkKLyogSW5pdGlhbCB2YWx1ZSBvZiB0aGUgc3RhY2sgcG9pbnRlcm4gaW4gaW50ZXJuYWwgU1JBTSAqLwojZGVmaW5lIENGR19JTklUX1NQX09GRlNFVCAgICBDRkdfR0JMX0RBVEFfT0ZGU0VUCgovKgogKiBJbnRlcm5hbCBEZWZpbml0aW9ucwogKgogKiBCb290IEZsYWdzCiAqLwojZGVmaW5lIEJPT1RGTEFHX0NPTEQJMHgwMQkJLyogTm9ybWFsIFBvd2VyLU9uOiBCb290IGZyb20gRkxBU0gJKi8KI2RlZmluZSBCT09URkxBR19XQVJNCTB4MDIJCS8qIFNvZnR3YXJlIHJlYm9vdAkJCSovCgovKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLwovKiBUaGVzZSBkZWZpbmVzIHdpbGwgYmUgdXNlZCBpbiBjcHUvcHBjNHh4L2NwdV9pbml0LmMgdG8gc2V0dXAgZXh0ZXJuYWwgY2hpcCBzZWxlY3RzICAqLwovKiBUaGV5IGFyZSBjdXJyZW50bHkgdW5kZWZpbmVkIGNhdXNlIHRoZXkgYXJlIGluaXRpYWl6ZWQgaW4gYm9hcmQvc29saWRjYXJkMy9pbml0LlMgICAqLwoKLyogVGhpcyBjaGlwIHNlbGVjdCBhY2Nlc3NlcyB0aGUgYm9vdCBkZXZpY2UgKi8KLyogSXQgZGVwZW5kcyBvbiBib290IHNlbGVjdCBzd2l0Y2ggaWYgdGhpcyBkZXZpY2UgaXMgMTYgb3IgOCBiaXQgKi8KCiN1bmRlZiBDRkdfRUJDX1BCMEFQCiN1bmRlZiBDRkdfRUJDX1BCMENSCgojdW5kZWYgQ0ZHX0VCQ19QQjFBUAojdW5kZWYgQ0ZHX0VCQ19QQjFDUgoKI3VuZGVmIENGR19FQkNfUEIyQVAKI3VuZGVmIENGR19FQkNfUEIyQ1IKCiN1bmRlZiBDRkdfRUJDX1BCM0FQCiN1bmRlZiBDRkdfRUJDX1BCM0NSCgojdW5kZWYgQ0ZHX0VCQ19QQjRBUAojdW5kZWYgQ0ZHX0VCQ19QQjRDUgoKI3VuZGVmIENGR19FQkNfUEI1QVAKI3VuZGVmIENGR19FQkNfUEI1Q1IKCiN1bmRlZiBDRkdfRUJDX1BCNkFQCiN1bmRlZiBDRkdfRUJDX1BCNkNSCgojdW5kZWYgQ0ZHX0VCQ19QQjdBUAojdW5kZWYgQ0ZHX0VCQ19QQjdDUgoKI2RlZmluZSBDRkdfRUJDX0NGRyAgICAweGI4NGVmMDAwCgojZGVmaW5lIENPTkZJR19TRFJBTV9CQU5LMAkvKiB1c2UgdGhlIHN0YW5kYXJkIFNEUkFNIGluaXRpYWxpemF0aW9uICovCiN1bmRlZiBDT05GSUdfU1BEX0VFUFJPTQoKLyoKICogRGVmaW5lIHRoaXMgdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGNvbmZpZ3VyYXRpb24KICovCi8qICNkZWZpbmUgU0MzX0RFQlVHT1VUICovCiN1bmRlZiBTQzNfREVCVUdPVVQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBFeHRlcm5hbCBwZXJpcGhlcmFsIGJhc2UgYWRkcmVzcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojZGVmaW5lIENGR19JU0FfTUVNX0JBU0VfQUREUkVTUyAweDc4MDAwMDAwCi8qCiBEaWUgR3JhZmlrLVRyZWliZXIgZ3JlaWZlbiD8YmVyIGRpZSBBZHJlc3NlIGluIGRpZXNlbSBNYWNybyBhdWYgZGVuIENoaXAgenUuCiBEYXMgZnVua3Rpb25pZXJ0IGJlaSBkZXJlbiBLYXJ0ZW4sIHdlaWwgc2llIGVpbmUgUENJLUJyaWRnZSBiZW51dHplbiwgZGllCiBkYXMgZ2xlaWNoZSBNYXBwaW5nIGR1cmNoZvxocmVuIGthbm4sIHdpZSBkZXIgU0M1MjAgKGFsc28gQXVmdGVpbGVuIHZvbiBJTy1adWdyaWZmZW4KIGF1ZiBJU0EtIHVuZCBQQ0ktWnlrbGVuKQogKi8KI2RlZmluZSBDRkdfSVNBX0lPX0JBU0VfQUREUkVTUyAgMHhFODAwMDAwMAovKiNkZWZpbmUgQ0ZHX0lTQV9JT19CQVNFX0FERFJFU1MgIDB4NzkwMDAwMDAgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogVmlkZW8gc3VwcG9ydAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2lmZGVmIFVTRV9WR0FfR1JBUEhJQ1MKI2RlZmluZSBDT05GSUdfVklERU8JCS8qIFRvIGVuYWJsZSB2aWRlbyBjb250cm9sbGVyIHN1cHBvcnQgKi8KI2RlZmluZSBDT05GSUdfVklERU9fQ1Q2OTAwMAojZGVmaW5lIENPTkZJR19DRkJfQ09OU09MRQovKiAjZGVmaW5lIENPTkZJR19WSURFT19MT0dPICovCiNkZWZpbmUgQ09ORklHX1ZHQV9BU19TSU5HTEVfREVWSUNFCiNkZWZpbmUgQ09ORklHX1ZJREVPX1NXX0NVUlNPUgovKiAjZGVmaW5lIENPTkZJR19WSURFT19IV19DVVJTT1IgKi8KI2RlZmluZSBDT05GSUdfVklERU9fT05CT0FSRAkvKiBWaWRlbyBjb250cm9sbGVyIGlzIG9uLWJvYXJkICovCgojZGVmaW5lIFZJREVPX0hXX1JFQ1RGSUxMCiNkZWZpbmUgVklERU9fSFdfQklUQkxUCgojZW5kaWYKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogSWRlbnQKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBDT05GSUdfU0MzX1ZFUlNJT04gInIxLjQiCgojZGVmaW5lIFBPU1RfT1VUKHgpICgqKCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyKikoMHg3OTAwMDA4MCkpPXgpCgojZW5kaWYJLyogX19DT05GSUdfSCAqLwo=