LyoKICogKEMpIENvcHlyaWdodCAyMDA3CiAqIEhlaWtvIFNjaG9jaGVyLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8aHNAZGVueC5kZT4uCiAqCiAqIEZyb206CiAqIChDKSBDb3B5cmlnaHQgMjAwMwogKiBKdWVyZ2VuIEJlaXNlcnQsIEV1cm9EZXNpZ24gZW1iZWRkZWQgdGVjaG5vbG9naWVzLCBqYmVpc2VydEBldXJvZHNuLmRlCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKI2lmbmRlZiBfX0NPTkZJR19ICiNkZWZpbmUgX19DT05GSUdfSAoKI3VuZGVmIFVTRV9WR0FfR1JBUEhJQ1MKCi8qIE1lbW9yeSBNYXAKICogMHgwMDAwMDAwMCAuLi4uIDB4MDNGRkZGRkYgLT4gUkFNICh1cCB0byAxMjhNaUIpCiAqIDB4NzQwMDAwMDAgLi4uLiAweDc0MEZGRkZGIC0+IENTIzYKICogMHg3NDEwMDAwMCAuLi4uIDB4NzQxRkZGRkYgLT4gQ1MjNwogKiAweDc0MjAwMDAwIC4uLi4gMHg3NDJGRkZGRiAtPiBDUzQjIGlmIG5vIGludGVybmFsIFVTQgogKiAweDc0MzAwMDAwIC4uLi4gMHg3NDNGRkZGRiAtPiBDUzUjIGlmIG5vIGJvb3N0ZWQgSURFCiAqIDB4NzdDMDAwMDAgLi4uLiAweDc3Q0ZGRkZGIC0+IENTNCMgVVNCIEhDICgxIE1pQikKICogMHg3N0QwMDAwMCAuLi4uIDB4NzdERkZGRkYgLT4gQ1MxIyBOQU5ELUZsYXNoICgxIE1pQikKICogMHg3ODAwMDAwMCAuLi4uIDB4NzhGRkZGRkYgLT4gQ1MyIyBJU0EtQnVzIFNwZWljaGVyenVncmlmZiAoMTYgTWlCKQogKiAweDc5MDAwMDAwIC4uLi4gMHg3OTAwRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAoMTYgTWlCLCBtYXBwZWQ6IDY0a2lCKQogKiAweDc5MDEwMDAwIC4uLi4gMHg3OUZGRkZGRiAtPiBDUzIjIElTQS1CdXMgSU8tWnVncmlmZiAobWlycm9yZWQpCiAqIDB4N0EwMDAwMDAgLi4uLiAweDdBMEZGRkZGIC0+IENTNSMgSURFIGVtdWxhdGlvbiAoMU1pQikKICoKICogMHg4MDAwMDAwMCAuLi4uIDB4OUZGRkZGRkYgLT4gUENJLUJ1cyBTcGVpY2hlcnp1Z3JpZmYgKDUxMk1pQiwgbWFwcGVkOiAxOjEpCiAqIDB4QTAwMDAwMDAgLi4uLiAweEJGRkZGRkZGIC0+IFBDSS1CdXMgU3BlaWNoZXJ6dWdyaWZmICg1MTJNaUIsIG1hcHBlZDogMHgwMDAwMDAwMC4uLjB4MUZGRkZGRkYpCiAqIDB4RTgwMDAwMDAgLi4uLiAweEU4MDBGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNjRraUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwMDAuLi4weEZGRkYpCiAqIDB4RTg4MDAwMDAgLi4uLiAweEVCRkZGRkZGIC0+IFBDSS1CdXMgSU8tWnVncmlmZiAoNTZNaUIsIHRyYW5zbGF0ZWQgdG8gUENJOiAweDAwODAwMDAwLi4uMHgzRkZGRkZGKQogKiAweEVFRDAwMDAwIC4uLi4gMHhFRUQwMDAwMyAtPiBQQ0ktQnVzCiAqIDB4RUY0MDAwMDAgLi4uLiAweEVGNDAwMDNGIC0+IFBDSS1CdXMgTG9jYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMKICogMHhFRjQwMDAzRiAuLi4uIDB4RUY1RkZGRkYgLT4gcmVzZXJ2ZWQKICogMHhFRjYwMDAwMCAuLi4uIDB4RUZGRkZGRkYgLT4gNDA1R1AgaW50ZXJuYWwgRGV2aWNlcyAoMTAgTWlCKQogKiAweEYwMDAwMDAwIC4uLi4gMHhGMDFGRkZGRiAtPiBGbGFzaC1ST00gKDIgTWlCKQogKiAweEYwMjAwMDAwIC4uLi4gMHhGN0ZGRkZGRiAtPiBmcmVlIGZvciBmbGFzaCBkZXZpY2VzCiAqIDB4RjgwMDAwMDAgLi4uLiAweEY4MDAwRkZGIC0+IE9uQ2hpcE1lbW9yeSAoNGtpQikKICogMHhGODAwMTAwMCAuLi4uIDB4RkZERkZGRkYgLT4gZnJlZSBmb3IgZmxhc2ggZGV2aWNlcwogKiAweEZGRTAwMDAwIC4uLi4gMHhGRkZGRkZGRiAtPiBCT09ULVJPTSAoMiBNaUIpCiAqLwoKI2RlZmluZSBDT05GSUdfU0MzCTEKI2RlZmluZSBDT05GSUdfNHh4CTEKI2RlZmluZSBDT05GSUdfNDA1R1AJMQoKI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GCTEKCi8qCiAqIERlZmluZSBJREVfVVNFU19JU0FfRU1VTEFUSU9OIGZvciBzbG93ZXIgSURFIGFjY2VzcyBpbiB0aGUgSVNBLUlPIGFkZHJlc3MgcmFuZ2UKICogSWYgdW5kZWZpbmVkLCBJREUgYWNjZXNzIHVzZXMgYSBzZXBlcmF0IGVtdWxhdGlvbiB3aXRoIGhpZ2hlciBhY2Nlc3Mgc3BlZWQuCiAqIENvbnNpZGVyIHRvIGluZm9ybSB5b3VyIExpbnV4IElERSBkcml2ZXIgYWJvdXQgdGhlIGRpZmZlcmVudCBhZGRyZXNzZXMhCiAqIElERV9VU0VTX0lTQV9FTVVMQVRJT04gaXMgb25seSB1c2VkIGlmIHlvdSBkZWZpbmUgQ09ORklHX0NNRF9JREUhCiAqLwojZGVmaW5lIElERV9VU0VTX0lTQV9FTVVMQVRJT04KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU2VyaWFsIFBvcnQKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KI2RlZmluZSBDT05GSUdfU0VSSUFMX01VTFRJCiN1bmRlZiBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8KLyoKICogZGVmaW5lIENPTkZJR19QT1dFUl9ET1dOIGlmIHlvdXIgY3B1IHNob3VsZCBwb3dlciBkb3duIHdoaWxlIHdhaXRpbmcgZm9yIHlvdXIgaW5wdXQKICogV29ya3Mgb25seSwgaWYgeW91IGhhdmUgZW5hYmxlZCB0aGUgQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPIGZlYXR1cmUKICovCiNpZiBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8KICNkZWZpbmUgQ09ORklHX1BPV0VSX0RPV04KI2VuZGlmCgovKgogKiBkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUSB0byB5b3VyIGJhc2UgY3J5c3RhbCBjbG9jayBpbiBIegogKi8KI2RlZmluZSBDT05GSUdfU1lTX0NMS19GUkVRCTMzMzMzMzMzCgovKgogKiBkZWZpbmUgQ09ORklHX0JBVURSQVRFIHRvIHRoZSBiYXVkcmF0ZSB2YWx1ZSB5b3Ugd2FudCB0byB1c2UgYXMgZGVmYXVsdAogKi8KI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAojZGVmaW5lIENPTkZJR19CT09UREVMQVkJMyAvKiBhdXRvYm9vdCBhZnRlciAzIHNlY29uZHMJICAgICAgKi8KCiNkZWZpbmUgQ09ORklHX1BSRUJPT1QJImVjaG87IglcCgkiZWNobyBUeXBlIFxcXCJydW4gZmxhc2hfbmZzXFxcIiB0byBtb3VudCByb290IGZpbGVzeXN0ZW0gb3ZlciBORlM7IiBcCgkiZWNobyIKCiN1bmRlZglDT05GSUdfQk9PVEFSR1MKCiNkZWZpbmUJQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAoJIm5ldGRldj1ldGgwXDAiCQkJCQkJCVwKCSJuZnNhcmdzPXNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJCQlcCgkJIm5mc3Jvb3Q9JHtzZXJ2ZXJpcH06JHtyb290cGF0aH1cMCIJCQlcCgkicmFtYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSByd1wwIgkJCVwKCSJuYW5kX2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazUgcnciCQlcCgkJInJvb3Rmc3R5cGU9amZmczJcMCIJCQkJCVwKCSJhZGRpcD1zZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gIgkJCQlcCgkJImlwPSR7aXBhZGRyfToke3NlcnZlcmlwfToke2dhdGV3YXlpcH06JHtuZXRtYXNrfSIJXAoJCSI6JHtob3N0bmFtZX06JHtuZXRkZXZ9Om9mZiBwYW5pYz0xXDAiCQkJXAoJImFkZGNvbnM9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9ICIJCQkJXAoJCSJjb25zb2xlPXR0eVMwLCR7YmF1ZHJhdGV9XDAiCQkJCVwKCSJmbGFzaF9uZnM9cnVuIG5mc2FyZ3MgYWRkaXAgYWRkY29uczsiCQkJCVwKCQkiYm9vdG0gJHtrZXJuZWxfYWRkcn1cMCIJCQkJXAoJImZsYXNoX25hbmQ9cnVuIG5hbmRfYXJncyBhZGRpcCBhZGRjb25zO2Jvb3RtICR7a2VybmVsX2FkZHJ9XDAiCVwKCSJuZXRfbmZzPXRmdHAgMjAwMDAwICR7Ym9vdGZpbGV9O3J1biBuZnNhcmdzIGFkZGlwIGFkZGNvbnM7IglcCgkJImJvb3RtXDAiCQkJCQkJXAoJInJvb3RwYXRoPS9vcHQvZWxkay9wcGNfNHh4XDAiCQkJCQlcCgkiYm9vdGZpbGU9L3RmdHBib290L3NjMy91SW1hZ2VcMCIJCQkJXAoJInUtYm9vdD0vdGZ0cGJvb3Qvc2MzL3UtYm9vdC5iaW5cMCIJCQkJXAoJInNldHVwPXRmdHAgMjAwMDAwIC90ZnRwYm9vdC9zYzMvc2V0dXAuaW1nO3NvdXJjZSAyMDAwMDBcMCIJXAoJImtlcm5lbF9hZGRyPUZGRTA4MDAwXDAiCQkJCQlcCgkiIgojdW5kZWYgQ09ORklHX0JPT1RDT01NQU5ECgojZGVmaW5lIENPTkZJR19TSUxFTlRfQ09OU09MRQkxCS8qIGVuYWJsZSBzaWxlbnQgc3RhcnR1cCAqLwojZGVmaW5lIENPTkZJR19TWVNfREVWSUNFX05VTExERVYJMQkvKiBpbmNsdWRlIG51bGxkZXYgZGV2aWNlCSovCgojaWYgMQkvKiBmZWVsIGZyZWUgdG8gZGlzYWJsZSBmb3IgZGV2ZWxvcG1lbnQgKi8KI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfS0VZRUQJCS8qIEVuYWJsZSBwYXNzd29yZCBwcm90ZWN0aW9uCSovCiNkZWZpbmUgQ09ORklHX0FVVE9CT09UX1BST01QVAkJXAoJIlxuU0MzIC0gYm9vdGluZy4uLiBzdG9wIHdpdGggRU5URVJcbiIKI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfREVMQVlfU1RSCSJcciIJLyogMXN0ICJwYXNzd29yZCIJKi8KI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfREVMQVlfU1RSMgkiXG4iCS8qIDFzdCAicGFzc3dvcmQiCSovCiNlbmRpZgoKLyoKICogZGVmaW5lIENPTkZJR19CT09UQ09NTUFORCB0byB0aGUgYXV0b2Jvb3QgY29tbWFuZHMuIFRoZXkgd2lsbCBydW5uaW5nIGFmdGVyCiAqIHRoZSBDT05GSUdfQk9PVERFTEFZIGRlbGF5IHRvIGJvb3QgeW91ciBtYWNoaW5lCiAqLwojZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkiYm9vdHA7ZGNhY2hlIG9uO2Jvb3RtIgoKLyoKICogZGVmaW5lIENPTkZJR19CT09UQVJHUyB0byB0aGUgZGVmYXVsdCBrZXJuZWwgcGFyYW1ldGVycy4gVGhleSB3aWxsIHVzZWQgaWYgeW91IGRvbid0CiAqIHNldCBkaWZmZXJlbnQgdmFsdWVzIGF0IHRoZSB1LWJvb3QgcHJvbXB0CiAqLwojaWZkZWYgVVNFX1ZHQV9HUkFQSElDUwogI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJInJvb3Q9L2Rldi9uZnMgcncgaXA9Ym9vdHAgbmZzcm9vdD0vdGZ0cGJvb3Qvc29saWRjYXJkM3JlIgojZWxzZQogI2RlZmluZSBDT05GSUdfQk9PVEFSR1MJImNvbnNvbGU9dHR5UzAsMTE1MjAwIHJvb3Q9L2Rldi9uZnMgcncgaXA9Ym9vdHAiCiNlbmRpZgovKgogKiBJcyB0aGUgVVNCIGhvc3QgY29udHJvbGxlciBhc3NlbWJsZWQ/IElmIHllcyBkZWZpbmUgQ09ORklHX0lTUDExNjFfUFJFU0VOVAogKiBUaGlzIHJlc2VydmVzIG1lbW9yeSBiYW5rICM0IGZvciB0aGlzIHB1cnBvc2UKICovCiN1bmRlZiBDT05GSUdfSVNQMTE2MV9QUkVTRU5UCgojdW5kZWYgQ09ORklHX0xPQURTX0VDSE8gICAvKiBubyBlY2hvIG9uIGZvciBzZXJpYWwgZG93bmxvYWQJKi8KI2RlZmluZSBDT05GSUdfU1lTX0xPQURTX0JBVURfQ0hBTkdFCTEJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlCSovCgojZGVmaW5lIENPTkZJR19ORVRfTVVMVEkKLyogI2RlZmluZSBDT05GSUdfRUVQUk8xMDBfU1JPTV9XUklURSAqLwovKiAjZGVmaW5lIENPTkZJR19TSE9XX01BQyAqLwojZGVmaW5lIENPTkZJR19FRVBSTzEwMAoKI2RlZmluZSBDT05GSUdfUFBDNHh4X0VNQUMKI2RlZmluZSBDT05GSUdfTUlJIDEJCQkvKiBhZGQgNDA1R1AgTUlJIFBIWSBtYW5hZ2VtZW50CQkqLwojZGVmaW5lIENPTkZJR19QSFlfQUREUiAxCS8qIHRoZSBjb25uZWN0ZWQgUGh5IGRlZmF1bHRzIHRvIGFkZHJlc3MgMSAqLwoKLyoKICogQk9PVFAgb3B0aW9ucwogKi8KI2RlZmluZSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFCiNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RQQVRICiNkZWZpbmUgQ09ORklHX0JPT1RQX0dBVEVXQVkKI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUKCgovKgogKiBDb21tYW5kIGxpbmUgY29uZmlndXJhdGlvbi4KICovCiNpbmNsdWRlIDxjb25maWdfY21kX2RlZmF1bHQuaD4KCgojZGVmaW5lIENPTkZJR19DTURfQ0FDSEUKI2RlZmluZSBDT05GSUdfQ01EX0RBVEUKI2RlZmluZSBDT05GSUdfQ01EX0RIQ1AKI2RlZmluZSBDT05GSUdfQ01EX0VMRgojZGVmaW5lIENPTkZJR19DTURfSTJDCiNkZWZpbmUgQ09ORklHX0NNRF9JREUKI2RlZmluZSBDT05GSUdfQ01EX0lSUQojZGVmaW5lIENPTkZJR19DTURfSkZGUzIKI2RlZmluZSBDT05GSUdfQ01EX01JSQojZGVmaW5lIENPTkZJR19DTURfTkFORAojZGVmaW5lIENPTkZJR19DTURfTkVUCiNkZWZpbmUgQ09ORklHX0NNRF9QQ0kKI2RlZmluZSBDT05GSUdfQ01EX1BJTkcKI2RlZmluZSBDT05GSUdfQ01EX1NPVVJDRQoKCiN1bmRlZiBDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KCi8qCiAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICovCiNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkxCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkiU0MzPiAiCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQJKi8KI2RlZmluZQlDT05GSUdfU1lTX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCgojZGVmaW5lIENPTkZJR19TWVNfUEJTSVpFIChDT05GSUdfU1lTX0NCU0laRStzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwoKI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCiNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQlDT05GSUdfU1lTX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCgojZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDA0MDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLwojZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCTB4MEMwMDAwMAkvKiA0IC4uLiAxMiBNQiBpbiBEUkFNCSovCgovKgogKiBJZiBDT05GSUdfU1lTX0VYVF9TRVJJQUxfQ0xPQ0ssIHRoZW4gdGhlIFVBUlQgZGl2aXNvciBpcyAxLgogKiBJZiBDT05GSUdfU1lTXzQwNV9VQVJUX0VSUkFUQV81OSwgdGhlbiBVQVJUIGRpdmlzb3IgaXMgMzEuCiAqIE90aGVyd2lzZSwgVUFSVCBkaXZpc29yIGlzIGRldGVybWluZWQgYnkgQ1BVIENsb2NrIGFuZCBDT05GSUdfU1lTX0JBU0VfQkFVRCB2YWx1ZS4KICogVGhlIExpbnV4IEJBU0VfQkFVRCBkZWZpbmUgc2hvdWxkIG1hdGNoIHRoaXMgY29uZmlndXJhdGlvbi4KICogICAgYmFzZUJhdWQgPSBjcHVDbG9jay8odWFydERpdmlzb3IqMTYpCiAqIElmIENPTkZJR19TWVNfNDA1X1VBUlRfRVJSQVRBXzU5IGFuZCAyMDBNSHogQ1BVIGNsb2NrLAogKiBzZXQgTGludXggQkFTRV9CQVVEIHRvIDQwMzIwMC4KICoKICogQ29uc2lkZXIgdGhlIE9QQiBjbG9jayEgSWYgaXQgZ2V0IGxvd2VyIHRoZSBCQVNFX0JBVUQgbXVzdCBiZSBsb3dlciB0bwogKiAoc2VlIDQwNUdQIGRhdGFzaGVldCBmb3IgZGVzY3JpdHBpb24pCiAqLwojdW5kZWYJQ09ORklHX1NZU19FWFRfU0VSSUFMX0NMT0NLCQkvKiBleHRlcm5hbCBzZXJpYWwgY2xvY2sgKi8KI3VuZGVmCUNPTkZJR19TWVNfNDA1X1VBUlRfRVJSQVRBXzU5CQkvKiA0MDVHUC9DUiBSZXYuIEQgc2lsaWNvbiAqLwojZGVmaW5lIENPTkZJR19TWVNfQkFTRV9CQVVECQk5MjE2MDAJLyogaW50ZXJuYWwgY2xvY2sgKi8KCi8qIFRoZSBmb2xsb3dpbmcgdGFibGUgaW5jbHVkZXMgdGhlIHN1cHBvcnRlZCBiYXVkcmF0ZXMgKi8KI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFICBcCiAgICB7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCwgMjMwNDAwfQoKI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJMHgxMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiNkZWZpbmUgQ09ORklHX1NZU19FWFRCRElORk8JCTEJLyogVG8gdXNlIGV4dGVuZGVkIGJvYXJkX2ludG8gKGJkX3QpICovCgojZGVmaW5lCUNPTkZJR19TWVNfSFoJCQkxMDAwCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MJKi8KCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogSUlDIHN0dWZmCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiNkZWZpbmUgIENPTkZJR19IQVJEX0kyQwkJLyogSTJDIHdpdGggaGFyZHdhcmUgc3VwcG9ydAkqLwojdW5kZWYJQ09ORklHX1NPRlRfSTJDCQkJLyogSTJDIGJpdC1iYW5nZWQJCSovCgojZGVmaW5lIEkyQ19JTklUCiNkZWZpbmUgSTJDX0FDVElWRSAwCiNkZWZpbmUgSTJDX1RSSVNUQVRFIDAKCiNkZWZpbmUgQ09ORklHX1NZU19JMkNfU1BFRUQJCTEwMDAwMAkvKiB1c2UgdGhlIHN0YW5kYXJkIDEwMGtIeiBzcGVlZCAqLwojZGVmaW5lIENPTkZJR19TWVNfSTJDX1NMQVZFCQkweDdGCQkvKiBtYXNrIHZhbGlkIGJpdHMgKi8KCiNkZWZpbmUgQ09ORklHX1JUQ19EUzEzMzcKI2RlZmluZSBDT05GSUdfU1lTX0kyQ19SVENfQUREUiAweDY4CgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBDSSBzdHVmZgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojZGVmaW5lIFBDSV9IT1NUX0FEQVBURVIgMAkJLyogY29uZmlndXJlIGFyIHBjaSBhZGFwdGVyCSovCiNkZWZpbmUgUENJX0hPU1RfRk9SQ0UJMQkJLyogY29uZmlndXJlIGFzIHBjaSBob3N0CSovCiNkZWZpbmUgUENJX0hPU1RfQVVUTwkyCQkvKiBkZXRlY3RlZCB2aWEgYXJiaXRlciBlbmFibGUJKi8KCiNkZWZpbmUgQ09ORklHX1BDSQkJCS8qIGluY2x1ZGUgcGNpIHN1cHBvcnQJCSovCiNkZWZpbmUgQ09ORklHX1BDSV9IT1NUCVBDSV9IT1NUX0ZPUkNFCS8qIHNlbGVjdCBwY2kgaG9zdCBmdW5jdGlvbgkqLwojZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkJLyogZG8gcGNpIHBsdWctYW5kLXBsYXkJCSovCgkJCQkJLyogcmVzb3VyY2UgY29uZmlndXJhdGlvbgkqLwoKLyogSWYgeW91IHdhbnQgdG8gc2VlLCB3aGF0cyBjb25uZWN0ZWQgdG8geW91ciBQQ0kgYnVzICovCi8qICNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cgKi8KCiNkZWZpbmUgQ09ORklHX1NZU19QQ0lfU1VCU1lTX1ZFTkRPUklEIDB4MDAwMAkvKiBQQ0kgVmVuZG9yIElEOiB0by1kbyEhIQkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1NVQlNZU19ERVZJQ0VJRCAweDAwMDAJLyogUENJIERldmljZSBJRDogdG8tZG8hISEJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QVE0xTEEJMHgwMDAwMDAwMAkvKiBwb2ludCB0byBzZHJhbQkJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QVE0xTVMJMHg4MDAwMDAwMQkvKiAyR0IsIGVuYWJsZSBoYXJkLXdpcmVkIHRvIDEJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QVE0xUENJIDB4MDAwMDAwMDAJLyogSG9zdDogdXNlIHRoaXMgcGNpIGFkZHJlc3MJKi8KI2RlZmluZSBDT05GSUdfU1lTX1BDSV9QVE0yTEEJMHgwMDAwMDAwMAkvKiBkaXNhYmxlZAkJCSovCiNkZWZpbmUgQ09ORklHX1NZU19QQ0lfUFRNMk1TCTB4MDAwMDAwMDAJLyogZGlzYWJsZWQJCQkqLwojZGVmaW5lIENPTkZJR19TWVNfUENJX1BUTTJQQ0kgMHgwNDAwMDAwMAkvKiBIb3N0OiB1c2UgdGhpcyBwY2kgYWRkcmVzcwkqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBFeHRlcm5hbCBwZXJpcGhlcmFsIGJhc2UgYWRkcmVzcwogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojaWYgIWRlZmluZWQoQ09ORklHX0NNRF9JREUpCgojdW5kZWYJQ09ORklHX0lERV9MRUQJCQkvKiBubyBsZWQgZm9yIGlkZSBzdXBwb3J0ZWQJKi8KI3VuZGVmCUNPTkZJR19JREVfUkVTRVQJCS8qIG5vIHJlc2V0IGZvciBpZGUgc3VwcG9ydGVkCSovCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIElERS9BVEEgc3R1ZmYKICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKi8KI2Vsc2UKI2RlZmluZSBDT05GSUdfU1RBUlRfSURFCTEJLyogY2hlY2ssIGlmIHVzZSBJREUgKi8KCiN1bmRlZglDT05GSUdfSURFXzh4eF9ESVJFQ1QJCS8qIG5vIHBjbWNpYSBpbnRlcmZhY2UgcmVxdWlyZWQgKi8KI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCiN1bmRlZglDT05GSUdfSURFX1JFU0VUCQkvKiBubyByZXNldCBmb3IgaWRlIHN1cHBvcnRlZAkqLwoKI2RlZmluZQlDT05GSUdfQVRBUEkKI2RlZmluZQlDT05GSUdfRE9TX1BBUlRJVElPTgojZGVmaW5lCUNPTkZJR19TWVNfSURFX01BWERFVklDRQkoQ09ORklHX1NZU19JREVfTUFYQlVTKjEpIC8qIG1heC4gMSBkcml2ZXMgcGVyIElERSBidXMgKi8KCiNpZm5kZWYgSURFX1VTRVNfSVNBX0VNVUxBVElPTgoKLyogTmV3IGFuZCBmYXN0ZXIgYWNjZXNzICovCiNkZWZpbmUJQ09ORklHX1NZU19BVEFfQkFTRV9BRERSCQkweDdBMDAwMDAwCS8qIHN0YXJ0IG9mIElTQSBJTyBlbXVsYXRpb24gKi8KCi8qIEhvdyBtYW55IElERSBidXNzZXMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfSURFX01BWEJVUwkJMQoKLyogV2hhdCBJREUgcG9ydHMgYXJlIGF2YWlsYWJsZSAqLwojZGVmaW5lCUNPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUCTB4MDAwCQkvKiBmaXJzdCBpcyBhdmFpbGFibGUgKi8KI3VuZGVmCUNPTkZJR19TWVNfQVRBX0lERTFfT0ZGU0VUCQkJLyogc2Vjb25kIG5vdCBhdmFpbGFibGUgKi8KCi8qIGFjY2VzcyB0byB0aGUgZGF0YSBwb3J0IGlzIGNhbGN1bGF0ZWQ6CiAgIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiArIENPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUICsgQ09ORklHX1NZU19BVEFfREFUQV9PRkZTRVQgKyAwICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfREFUQV9PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3IgZGF0YSBJL08gKi8KCi8qIGFjY2VzcyB0byB0aGUgcmVnaXN0ZXJzIGlzIGNhbGN1bGF0ZWQ6CiAgIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiArIENPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUICsgQ09ORklHX1NZU19BVEFfUkVHX09GRlNFVCArIFsxLi43XSAqLwojZGVmaW5lCUNPTkZJR19TWVNfQVRBX1JFR19PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3Igbm9ybWFsIHJlZ2lzdGVyIGFjY2Vzc2VzCSovCgovKiBhY2Nlc3MgdG8gdGhlIGFsdGVybmF0ZSByZWdpc3RlciBpcyBjYWxjdWxhdGVkOgogICBDT05GSUdfU1lTX0FUQV9CQVNFX0FERFIgKyBDT05GSUdfU1lTX0FUQV9JREUwX09GRlNFVCArIENPTkZJR19TWVNfQVRBX0FMVF9PRkZTRVQgKyA2ICovCiNkZWZpbmUgQ09ORklHX1NZU19BVEFfQUxUX09GRlNFVAkweDAwOAkJLyogT2Zmc2V0IGZvciBhbHRlcm5hdGUgcmVnaXN0ZXJzCSovCgojZWxzZSAvKiBJREVfVVNFU19JU0FfRU1VTEFUSU9OICovCgojZGVmaW5lCUNPTkZJR19TWVNfQVRBX0JBU0VfQUREUgkJMHg3OTAwMDAwMAkvKiBzdGFydCBvZiBJU0EgSU8gZW11bGF0aW9uICovCgovKiBIb3cgbWFueSBJREUgYnVzc2VzIGFyZSBhdmFpbGFibGUgKi8KI2RlZmluZQlDT05GSUdfU1lTX0lERV9NQVhCVVMJCTEKCi8qIFdoYXQgSURFIHBvcnRzIGFyZSBhdmFpbGFibGUgKi8KI2RlZmluZQlDT05GSUdfU1lTX0FUQV9JREUwX09GRlNFVAkweDAxRjAJLyogZmlyc3QgaXMgYXZhaWxhYmxlICovCiN1bmRlZglDT05GSUdfU1lTX0FUQV9JREUxX09GRlNFVAkJCQkvKiBzZWNvbmQgbm90IGF2YWlsYWJsZSAqLwoKLyogYWNjZXNzIHRvIHRoZSBkYXRhIHBvcnQgaXMgY2FsY3VsYXRlZDoKICAgQ09ORklHX1NZU19BVEFfQkFTRV9BRERSICsgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQgKyBDT05GSUdfU1lTX0FUQV9EQVRBX09GRlNFVCArIDAgKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9EQVRBX09GRlNFVAkweDAwMDAJLyogT2Zmc2V0IGZvciBkYXRhIEkvTyAqLwoKLyogYWNjZXNzIHRvIHRoZSByZWdpc3RlcnMgaXMgY2FsY3VsYXRlZDoKICAgQ09ORklHX1NZU19BVEFfQkFTRV9BRERSICsgQ09ORklHX1NZU19BVEFfSURFMF9PRkZTRVQgKyBDT05GSUdfU1lTX0FUQV9SRUdfT0ZGU0VUICsgWzEuLjddICovCiNkZWZpbmUJQ09ORklHX1NZU19BVEFfUkVHX09GRlNFVAkweDAwMDAJLyogT2Zmc2V0IGZvciBub3JtYWwgcmVnaXN0ZXIgYWNjZXNzZXMJKi8KCi8qIGFjY2VzcyB0byB0aGUgYWx0ZXJuYXRlIHJlZ2lzdGVyIGlzIGNhbGN1bGF0ZWQ6CiAgIENPTkZJR19TWVNfQVRBX0JBU0VfQUREUiArIENPTkZJR19TWVNfQVRBX0lERTBfT0ZGU0VUICsgQ09ORklHX1NZU19BVEFfQUxUX09GRlNFVCArIDYgKi8KI2RlZmluZSBDT05GSUdfU1lTX0FUQV9BTFRfT0ZGU0VUCTB4MDNGMAkJLyogT2Zmc2V0IGZvciBhbHRlcm5hdGUgcmVnaXN0ZXJzCSovCgojZW5kaWYgLyogSURFX1VTRVNfSVNBX0VNVUxBVElPTiAqLwoKI2VuZGlmCgovKgojZGVmaW5lCUNPTkZJR19TWVNfS0VZX1JFR19CQVNFX0FERFIJMHhGMDEwMDAwMAojZGVmaW5lCUNPTkZJR19TWVNfSVJfUkVHX0JBU0VfQUREUgkweEYwMjAwMDAwCiNkZWZpbmUJQ09ORklHX1NZU19GUEdBX1JFR19CQVNFX0FERFIJMHhGMDMwMDAwMAoqLwoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBTdGFydCBhZGRyZXNzZXMgZm9yIHRoZSBmaW5hbCBtZW1vcnkgY29uZmlndXJhdGlvbgogKiAoU2V0IHVwIGJ5IHRoZSBzdGFydHVwIGNvZGUpCiAqIFBsZWFzZSBub3RlIHRoYXQgQ09ORklHX1NZU19TRFJBTV9CQVNFIF9tdXN0XyBzdGFydCBhdCAwCiAqCiAqIENPTkZJR19TWVNfRkxBU0hfQkFTRSAgIC0+IHN0YXJ0IGFkZHJlc3Mgb2YgaW50ZXJuYWwgZmxhc2gKICogQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLT4gc3RhcnQgb2YgdS1ib290CiAqLwojaWZuZGVmIF9fQVNTRU1CTEVSX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgb2Zmc2V0T2ZCaWdGbGFzaDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgb2Zmc2V0T2ZFbnZpcm9ubWVudDsKI2VuZGlmCgojZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJMHgwMDAwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQkFTRQkJMHhGRkUwMDAwMAojZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCTB4RkZGQzAwMDAgICAgIC8qIHBsYWNlZCBsYXN0IDI1NmsgKi8KI2RlZmluZSBDT05GSUdfU1lTX01PTklUT1JfTEVOCQkoMjI0ICogMTAyNCkJLyogUmVzZXJ2ZSAyMjQgS2lCIGZvciBNb25pdG9yCSovCiNkZWZpbmUgQ09ORklHX1NZU19NQUxMT0NfTEVOCQkoMTI4ICogMTAyNCkJLyogUmVzZXJ2ZSAxMjggS2lCIGZvciBtYWxsb2MoKQkqLwoKLyoKICogRm9yIGJvb3RpbmcgTGludXgsIHRoZSBib2FyZCBpbmZvIGFuZCBjb21tYW5kIGxpbmUgZGF0YQogKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCA4IE1pQiBvZiBtZW1vcnksIHNpbmNlIHRoaXMgaXMKICogdGhlIG1heGltdW0gbWFwcGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogKi8KI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkJKDggPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBGTEFTSCBvcmdhbml6YXRpb24gIyMgRklYTUU6IGxvb2t1cCBpbiBkYXRhc2hlZXQKICovCiNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfQkFOS1MJMgkvKiBtYXggbnVtYmVyIG9mIG1lbW9yeSBiYW5rcwkJKi8KI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9TRUNUCTI1NgkvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAJKi8KCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9DRkkJCQkvKiBmbGFzaCBpcyBDRkkgY29tcGF0LgkqLwojZGVmaW5lIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCQkvKiBVc2UgY29tbW9uIENGSSBkcml2ZXIqLwojZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfRU1QVFlfSU5GTwkJLyogcHJpbnQgJ0UnIGZvciBlbXB0eSBzZWN0b3IJKi8KI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX1FVSUVUX1RFU1QJMQkvKiBkb24ndCB3YXJuIHVwb24gdW5rbm93biBmbGFzaCovCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCTEyMDAwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAoaW4gbXMpCSovCiNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9XUklURV9UT1VUCTUwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAoaW4gbXMpCSovCiNkZWZpbmUgQ09ORklHX1NZU19XUklURV9TV0FQUEVEX0RBVEEJCS8qIHN3YXAgRGF0YWJ5dGVzIGJldHdlZW4gcmVhZGluZy93cml0aW5nICovCgojZGVmaW5lIENPTkZJR19FTlZfSVNfSU5fRkxBU0gJMQojaWZkZWYgQ09ORklHX0VOVl9JU19JTl9GTEFTSAojZGVmaW5lIENPTkZJR19FTlZfT0ZGU0VUCQkweDAwMDAwMDAwICAvKiBPZmZzZXQgb2YgRW52aXJvbm1lbnQgU2VjdG9yIGluIGJvdHRvbSB0eXBlICovCiNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkweDQwMDAJICAgIC8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yCSovCiNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJMHg0MDAwCSAgICAvKiBzZWUgUkVBRE1FIC0gZW52IHNlY3RvciB0b3RhbCBzaXplCSovCgovKiBBZGRyZXNzIGFuZCBzaXplIG9mIFJlZHVuZGFudCBFbnZpcm9ubWVudCBTZWN0b3IJKi8KI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVF9SRURVTkQJKENPTkZJR19FTlZfT0ZGU0VUK0NPTkZJR19FTlZfU0laRSkKI2RlZmluZSBDT05GSUdfRU5WX1NJWkVfUkVEVU5ECShDT05GSUdfRU5WX1NJWkUpCgojZW5kaWYKLyogbGV0IHVzIGNoYW5naW5nIGFueXRoaW5nIGluIG91ciBlbnZpcm9ubWVudCAqLwojZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCgovKgogKiBOQU5ELUZMQVNIIHN0dWZmCiAqLwojZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCTEKI2RlZmluZSBDT05GSUdfU1lTX05BTkRfQkFTRQkJMHg3N0QwMDAwMAoKCiNkZWZpbmUgQ09ORklHX0pGRlMyX05BTkQgMQkJCS8qIGpmZnMyIG9uIG5hbmQgc3VwcG9ydCAqLwoKLyogTm8gY29tbWFuZCBsaW5lLCBvbmUgc3RhdGljIHBhcnRpdGlvbiAqLwojdW5kZWYJQ09ORklHX0NNRF9NVERQQVJUUwojZGVmaW5lIENPTkZJR19KRkZTMl9ERVYJCSJuYW5kMCIKI2RlZmluZSBDT05GSUdfSkZGUzJfUEFSVF9TSVpFCQkweDAxMDAwMDAwCiNkZWZpbmUgQ09ORklHX0pGRlMyX1BBUlRfT0ZGU0VUCTB4MDAwMDAwMDAKCi8qCiAqIEluaXQgTWVtb3J5IENvbnRyb2xsZXI6CiAqCiAqLwoKI2RlZmluZSBGTEFTSF9CQVNFMF9QUkVMSU0JQ09ORklHX1NZU19GTEFTSF9CQVNFCiNkZWZpbmUgRkxBU0hfQkFTRTFfUFJFTElNCTAKCi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU29tZSBpbmZvcm1hdGlvbnMgYWJvdXQgdGhlIGludGVybmFsIFNSQU0gKE9DTT1PbiBDaGlwIE1lbW9yeSkKICoKICogQ09ORklHX1NZU19PQ01fREFUQV9BRERSIC0+IGxvY2F0aW9uCiAqIENPTkZJR19TWVNfT0NNX0RBVEFfU0laRSAtPiBzaXplCiovCgojZGVmaW5lIENPTkZJR19TWVNfVEVNUF9TVEFDS19PQ00JMQojZGVmaW5lIENPTkZJR19TWVNfT0NNX0RBVEFfQUREUgkweEY4MDAwMDAwCiNkZWZpbmUgQ09ORklHX1NZU19PQ01fREFUQV9TSVpFCTB4MTAwMAoKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBEZWZpbml0aW9ucyBmb3IgaW5pdGlhbCBzdGFjayBwb2ludGVyIGFuZCBkYXRhIGFyZWEgKGluIERQUkFNKToKICogLSB3ZSBhcmUgdXNpbmcgdGhlIGludGVybmFsIDRrIFNSQU0sIHNvIHdlIGRvbid0IG5lZWQgZGF0YSBjYWNoZSBtYXBwaW5nCiAqIC0gaW50ZXJuYWwgU1JBTSAoT0NNPU9uIENoaXAgTWVtb3J5KSBpcyBwbGFjZWQgdG8gQ09ORklHX1NZU19PQ01fREFUQV9BRERSCiAqIC0gU3RhY2twb2ludGVyIHdpbGwgYmUgbG9jYXRlZCB0bwogKiAgIChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFImMHhGRkZGMDAwMCkgfCAoQ09ORklHX1NZU19JTklUX1NQX09GRlNFVCYweDAwMDBGRkZGKQogKiAgIGluIGNwdS9wcGM0eHgvc3RhcnQuUwogKi8KCiN1bmRlZiBDT05GSUdfU1lTX0lOSVRfRENBQ0hFX0NTCi8qIFdoZXJlIHRoZSBpbnRlcm5hbCBTUkFNIHN0YXJ0cyAqLwojZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUglDT05GSUdfU1lTX09DTV9EQVRBX0FERFIKLyogV2hlcmUgdGhlIGludGVybmFsIFNSQU0gZW5kcyAob25seSBvZmZzZXQpICovCiNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwRjAwCgovKgoKIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAtLS0tLS0+IC0tLS0tLS0tLS0tLSBsb3dlciBhZGRyZXNzCgkJCSAgIHwJICAgICAgfAoJCQkgICB8ICBeICAgICAgIHwKCQkJICAgfCAgfCAgICAgICB8CgkJCSAgIHwgIHwgU3RhY2sgfAogQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgLS0tLT4gLS0tLS0tLS0tLS0tCgkJCSAgIHwJICAgICAgfAoJCQkgICB8IDY0IEJ5dGVzIHwKCQkJICAgfAkgICAgICB8CiBDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAgLS0tLS0tPiAtLS0tLS0tLS0tLS0gaGlnaGVyIGFkZHJlc3MKICAob2Zmc2V0IG9ubHkpCgoqLwovKiBzaXplIGluIGJ5dGVzIHJlc2VydmVkIGZvciBpbml0aWFsIGRhdGEgKi8KI2RlZmluZSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUgICAgIDY0CiNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9PRkZTRVQgICAoQ09ORklHX1NZU19JTklUX1JBTV9FTkQgLSBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUpCi8qIEluaXRpYWwgdmFsdWUgb2YgdGhlIHN0YWNrIHBvaW50ZXJuIGluIGludGVybmFsIFNSQU0gKi8KI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfU1BfT0ZGU0VUICAgIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCgovKgogKiBJbnRlcm5hbCBEZWZpbml0aW9ucwogKgogKiBCb290IEZsYWdzCiAqLwojZGVmaW5lIEJPT1RGTEFHX0NPTEQJMHgwMQkJLyogTm9ybWFsIFBvd2VyLU9uOiBCb290IGZyb20gRkxBU0gJKi8KI2RlZmluZSBCT09URkxBR19XQVJNCTB4MDIJCS8qIFNvZnR3YXJlIHJlYm9vdAkJCSovCgovKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLwovKiBUaGVzZSBkZWZpbmVzIHdpbGwgYmUgdXNlZCBpbiBjcHUvcHBjNHh4L2NwdV9pbml0LmMgdG8gc2V0dXAgZXh0ZXJuYWwgY2hpcCBzZWxlY3RzICAqLwovKiBUaGV5IGFyZSBjdXJyZW50bHkgdW5kZWZpbmVkIGNhdXNlIHRoZXkgYXJlIGluaXRpYWl6ZWQgaW4gYm9hcmQvc29saWRjYXJkMy9pbml0LlMgICAqLwoKLyogVGhpcyBjaGlwIHNlbGVjdCBhY2Nlc3NlcyB0aGUgYm9vdCBkZXZpY2UgKi8KLyogSXQgZGVwZW5kcyBvbiBib290IHNlbGVjdCBzd2l0Y2ggaWYgdGhpcyBkZXZpY2UgaXMgMTYgb3IgOCBiaXQgKi8KCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjBBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEIwQ1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjFBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEIxQ1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjJBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEIyQ1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjNBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEIzQ1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjRBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEI0Q1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjVBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEI1Q1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjZBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEI2Q1IKCiN1bmRlZiBDT05GSUdfU1lTX0VCQ19QQjdBUAojdW5kZWYgQ09ORklHX1NZU19FQkNfUEI3Q1IKCiNkZWZpbmUgQ09ORklHX1NZU19FQkNfQ0ZHICAgIDB4Yjg0ZWYwMDAKCiNkZWZpbmUgQ09ORklHX1NEUkFNX0JBTkswCS8qIHVzZSB0aGUgc3RhbmRhcmQgU0RSQU0gaW5pdGlhbGl6YXRpb24gKi8KI3VuZGVmIENPTkZJR19TUERfRUVQUk9NCgovKgogKiBEZWZpbmUgdGhpcyB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzeXN0ZW0gY29uZmlndXJhdGlvbgogKi8KLyogI2RlZmluZSBTQzNfREVCVUdPVVQgKi8KI3VuZGVmIFNDM19ERUJVR09VVAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEV4dGVybmFsIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNkZWZpbmUgQ09ORklHX1NZU19JU0FfTUVNX0JBU0VfQUREUkVTUyAweDc4MDAwMDAwCi8qCiBEaWUgR3JhZmlrLVRyZWliZXIgZ3JlaWZlbiD8YmVyIGRpZSBBZHJlc3NlIGluIGRpZXNlbSBNYWNybyBhdWYgZGVuIENoaXAgenUuCiBEYXMgZnVua3Rpb25pZXJ0IGJlaSBkZXJlbiBLYXJ0ZW4sIHdlaWwgc2llIGVpbmUgUENJLUJyaWRnZSBiZW51dHplbiwgZGllCiBkYXMgZ2xlaWNoZSBNYXBwaW5nIGR1cmNoZvxocmVuIGthbm4sIHdpZSBkZXIgU0M1MjAgKGFsc28gQXVmdGVpbGVuIHZvbiBJTy1adWdyaWZmZW4KIGF1ZiBJU0EtIHVuZCBQQ0ktWnlrbGVuKQogKi8KI2RlZmluZSBDT05GSUdfU1lTX0lTQV9JT19CQVNFX0FERFJFU1MgIDB4RTgwMDAwMDAKLyojZGVmaW5lIENPTkZJR19TWVNfSVNBX0lPX0JBU0VfQUREUkVTUyAgMHg3OTAwMDAwMCAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBWaWRlbyBzdXBwb3J0CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZkZWYgVVNFX1ZHQV9HUkFQSElDUwojZGVmaW5lIENPTkZJR19WSURFTwkJLyogVG8gZW5hYmxlIHZpZGVvIGNvbnRyb2xsZXIgc3VwcG9ydCAqLwojZGVmaW5lIENPTkZJR19WSURFT19DVDY5MDAwCiNkZWZpbmUgQ09ORklHX0NGQl9DT05TT0xFCi8qICNkZWZpbmUgQ09ORklHX1ZJREVPX0xPR08gKi8KI2RlZmluZSBDT05GSUdfVkdBX0FTX1NJTkdMRV9ERVZJQ0UKI2RlZmluZSBDT05GSUdfVklERU9fU1dfQ1VSU09SCi8qICNkZWZpbmUgQ09ORklHX1ZJREVPX0hXX0NVUlNPUiAqLwojZGVmaW5lIENPTkZJR19WSURFT19PTkJPQVJECS8qIFZpZGVvIGNvbnRyb2xsZXIgaXMgb24tYm9hcmQgKi8KCiNkZWZpbmUgVklERU9fSFdfUkVDVEZJTEwKI2RlZmluZSBWSURFT19IV19CSVRCTFQKCiNlbmRpZgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBJZGVudAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIENPTkZJR19TQzNfVkVSU0lPTiAicjEuNCIKCiNkZWZpbmUgUE9TVF9PVVQoeCkgKCooKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqKSgweDc5MDAwMDgwKSk9eCkKCiNlbmRpZgkvKiBfX0NPTkZJR19IICovCg==