LyoKICogRGVmaW5pdGlvbnMgZm9yIHRoZSBGVERJIFVTQiBTaW5nbGUgUG9ydCBTZXJpYWwgQ29udmVydGVyIC0gCiAqIGtub3duIGFzIEZURElfU0lPIChTZXJpYWwgSW5wdXQvT3V0cHV0IGFwcGxpY2F0aW9uIG9mIHRoZSBjaGlwc2V0KSAKICoKICogVGhlIGV4YW1wbGUgSSBoYXZlIGlzIGtub3duIGFzIHRoZSBVU0MtMTAwMCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQogKiBodHRwOi8vd3d3LmRzZS5jby5ueiAtIGNhdCBubyBYSDQyMTQgSXQgbG9va3Mgc2ltaWxhciB0byB0aGlzOgogKiBodHRwOi8vd3d3LmRhbnNkYXRhLmNvbS91c2JzZXIuaHRtIGJ1dCBJIGNhbid0IGJlIHN1cmUgVGhlcmUgYXJlIG90aGVyCiAqIFVTQy0xMDAwcyB3aGljaCBkb24ndCBsb29rIGxpa2UgbXkgZGV2aWNlIHRob3VnaCBzbyBiZXdhcmUhCiAqCiAqIFRoZSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIEZUREkgRlQ4VTEwMEFYIGNoaXAuIEl0IGhhcyBhIERCMjUgb24gb25lIHNpZGUsIAogKiBVU0Igb24gdGhlIG90aGVyLgogKgogKiBUaGFueCB0byBGVERJIChodHRwOi8vd3d3LmZ0ZGkuY28udWspIGZvciBzbyBraW5kbHkgcHJvdmlkaW5nIGRldGFpbHMKICogb2YgdGhlIHByb3RvY29sIHJlcXVpcmVkIHRvIHRhbGsgdG8gdGhlIGRldmljZSBhbmQgb25nb2luZyBhc3Npc3RlbmNlCiAqIGR1cmluZyBkZXZlbG9wbWVudC4KICoKICogQmlsbCBSeWRlciAtIGJyeWRlckBzZ2kuY29tIGZvcm1lcmx5IG9mIFNpbGljb24gR3JhcGhpY3MsIEluYy4tIHdyb3RlIHRoZSAKICogRlRESV9TSU8gaW1wbGVtZW50YXRpb24uCiAqCiAqIFBoaWxpcHAgR/xocmluZyAtIHBnQGZ1dHVyZXdhcmUuYXQgLSBhZGRlZCB0aGUgRGV2aWNlIElEIG9mIHRoZSBVU0IgcmVsYWlzCiAqIGZyb20gUnVkb2xmIEd1Z2xlcgogKgogKi8KCiNkZWZpbmUgRlRESV9WSUQJMHgwNDAzCS8qIFZlbmRvciBJZCAqLwojZGVmaW5lIEZURElfU0lPX1BJRAkweDgzNzIJLyogUHJvZHVjdCBJZCBTSU8gYXBwbGljYXRpb24gb2YgOFUxMDBBWCAgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fUElEIDB4NjAwMSAvKiBTaW1pbGFyIGRldmljZSB0byBTSU8gYWJvdmUgKi8KI2RlZmluZSBGVERJXzhVMjMyQU1fQUxUX1BJRCAweDYwMDYgLyogRlRESSdzIGFsdGVybmF0ZSBQSUQgZm9yIGFib3ZlICovCiNkZWZpbmUgRlRESV84VTIyMzJDX1BJRCAweDYwMTAgLyogRHVhbCBjaGFubmVsIGRldmljZSAqLwojZGVmaW5lIEZURElfMjMyUkxfUElEICAweEZCRkEgIC8qIFByb2R1Y3QgSUQgZm9yIEZUMjMyUkwgKi8KI2RlZmluZSBGVERJX1JFTEFJU19QSUQJMHhGQTEwICAvKiBSZWxhaXMgZGV2aWNlIGZyb20gUnVkb2xmIEd1Z2xlciAqLwojZGVmaW5lIEZURElfTkZfUklDX1ZJRAkweDBEQ0QJLyogVmVuZG9yIElkICovCiNkZWZpbmUgRlRESV9ORl9SSUNfUElECTB4MDAwMQkvKiBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9VU0JYXzcwN19QSUQgMHhGODU3CS8qIEFEU1RlY2ggSVIgQmxhc3RlciBVU0JYLTcwNyAqLwoKCi8qIHd3dy5jYW51c2IuY29tIExhd2ljZWwgQ0FOVVNCIGRldmljZSAqLwojZGVmaW5lIEZURElfQ0FOVVNCX1BJRCAweEZGQTggLyogUHJvZHVjdCBJZCAqLwoKLyogQWxwaGFNaWNybyBDb21wb25lbnRzIEFNQy0yMzJVU0IwMSBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0FNQzIzMl9QSUQgMHhGRjAwIC8qIFByb2R1Y3QgSWQgKi8KCi8qIEFDVCBTb2x1dGlvbnMgSG9tZVBybyBaV2F2ZSBpbnRlcmZhY2UgKGh0dHA6Ly93d3cuYWN0LXNvbHV0aW9ucy5jb20vSG9tZVByby5odG0pICovCiNkZWZpbmUgRlRESV9BQ1RaV0FWRV9QSUQJMHhGMkQwCgoKLyogd3d3LnN0YXJ0aW5nLXBvaW50LXN5c3RlbXMuY29tILVDaGFtZWxlb24gZGV2aWNlICovCiNkZWZpbmUgRlRESV9NSUNST19DSEFNRUxFT05fUElECTB4Q0FBMAkvKiBQcm9kdWN0IElkICovCgovKiB3d3cuaXJ0cmFucy5kZSBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lSVFJBTlNfUElEIDB4RkM2MCAvKiBQcm9kdWN0IElkICovCgoKLyogd3d3LnRob3VnaHR0ZWNobm9sb2d5LmNvbS8gVFQtVVNCIHByb3ZpZGUgd2l0aCBwcm9jb21wIHVzZSBmdGRpX3NpbyAqLwojZGVmaW5lIEZURElfVFRVU0JfUElEIDB4RkYyMCAvKiBQcm9kdWN0IElkICovCgovKiBpUGx1cyBkZXZpY2UgKi8KI2RlZmluZSBGVERJX0lQTFVTX1BJRCAweEQwNzAgLyogUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfSVBMVVMyX1BJRCAweEQwNzEgLyogUHJvZHVjdCBJZCAqLwoKLyogRE1YNEFMTCBETVggSW50ZXJmYWNlcyAqLwojZGVmaW5lIEZURElfRE1YNEFMTCAweEM4NTAKCi8qIE9wZW5EQ0MgKHd3dy5vcGVuZGNjLmRlKSBwcm9kdWN0IGlkICovCiNkZWZpbmUgRlRESV9PUEVORENDX1BJRAkweEJGRDgKCi8qIHd3dy5jcnlzdGFsZm9udHouY29tIGRldmljZXMgLSB0aGFueCBmb3IgcHJvdmlkaW5nIGZyZWUgZGV2aWNlcyBmb3IgZXZhbHVhdGlvbiAhICovCi8qIHRoZXkgdXNlIHRoZSBmdGRpIGNoaXBzZXQgZm9yIHRoZSBVU0IgaW50ZXJmYWNlIGFuZCB0aGUgdmVuZG9yIGlkIGlzIHRoZSBzYW1lICovCiNkZWZpbmUgRlRESV9YRl82MzJfUElEIDB4RkMwOAkvKiA2MzI6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNF9QSUQgMHhGQzA5CS8qIDYzNDogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNTQ3X1BJRCAweEZDMEEJLyogNTQ3OiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82MzNfUElEIDB4RkMwQgkvKiA2MzM6IDE2eDIgQ2hhcmFjdGVyIERpc3BsYXkgd2l0aCBLZXlzICovCiNkZWZpbmUgRlRESV9YRl82MzFfUElEIDB4RkMwQwkvKiA2MzE6IDIweDIgQ2hhcmFjdGVyIERpc3BsYXkgKi8KI2RlZmluZSBGVERJX1hGXzYzNV9QSUQgMHhGQzBECS8qIDYzNTogMjB4NCBDaGFyYWN0ZXIgRGlzcGxheSAqLwojZGVmaW5lIEZURElfWEZfNjQwX1BJRCAweEZDMEUJLyogNjQwOiBUd28gbGluZSBEaXNwbGF5ICovCiNkZWZpbmUgRlRESV9YRl82NDJfUElEIDB4RkMwRgkvKiA2NDI6IFR3byBsaW5lIERpc3BsYXkgKi8KCi8qIFZpZGVvIE5ldHdvcmtzIExpbWl0ZWQgLyBIb21lY2hvaWNlIGluIHRoZSBVSyB1c2UgYW4gZnRkaS1iYXNlZCBkZXZpY2UgZm9yIHRoZWlyIDFNYiAqLwovKiBicm9hZGJhbmQgaW50ZXJuZXQgc2VydmljZS4gIFRoZSBmb2xsb3dpbmcgUElEIGlzIGV4aGliaXRlZCBieSB0aGUgdXNiIGRldmljZSBzdXBwbGllZCAqLwovKiAodGhlIFZJRCBpcyB0aGUgc3RhbmRhcmQgZnRkaSB2aWQgKEZURElfVklEKSAqLwojZGVmaW5lIEZURElfVk5IQ1BDVVNCX0RfUElEIDB4ZmUzOCAvKiBQcm9kdWN0IElkICovCgovKgogKiBQQ0RKIHVzZSBmdGRpIGJhc2VkIGRqLWNvbnRyb2xsZXJzLiAgVGhlIGZvbGxvd2luZyBQSUQgaXMgZm9yIHRoZWlyIERBQy0yIGRldmljZQogKiBodHRwOi8vd3d3LnBjZGpoYXJkd2FyZS5jb20vREFDMi5hc3AgKFBJRCBzZW50IGJ5IFdvdXRlciBQYWVzZW4pCiAqICh0aGUgVklEIGlzIHRoZSBzdGFuZGFyZCBmdGRpIHZpZCAoRlRESV9WSUQpICovCiNkZWZpbmUgRlRESV9QQ0RKX0RBQzJfUElEIDB4RkE4OAoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdGhlIE1hdHJpeCBPcmJpdGFsIExDRCBkaXNwbGF5cywKICogd2hpY2ggYXJlIHRoZSBGVDIzMkJNICggc2ltaWxhciB0byB0aGUgOFUyMzJBTSApCiAqLwojZGVmaW5lIEZURElfTVRYT1JCXzBfUElEICAgICAgMHhGQTAwICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfMV9QSUQgICAgICAweEZBMDEgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl8yX1BJRCAgICAgIDB4RkEwMiAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzNfUElEICAgICAgMHhGQTAzICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCiNkZWZpbmUgRlRESV9NVFhPUkJfNF9QSUQgICAgICAweEZBMDQgIC8qIE1hdHJpeCBPcmJpdGFsIFByb2R1Y3QgSWQgKi8KI2RlZmluZSBGVERJX01UWE9SQl81X1BJRCAgICAgIDB4RkEwNSAgLyogTWF0cml4IE9yYml0YWwgUHJvZHVjdCBJZCAqLwojZGVmaW5lIEZURElfTVRYT1JCXzZfUElEICAgICAgMHhGQTA2ICAvKiBNYXRyaXggT3JiaXRhbCBQcm9kdWN0IElkICovCgovKiBJbnRlcmJpb21ldHJpY3MgVVNCIEkvTyBCb2FyZCAqLwovKiBEZXZlbG9wZWQgZm9yIEludGVyYmlvbWV0cmljcyBieSBSdWRvbGYgR3VnbGVyICovCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX1ZJRCAgICAgICAgICAgICAgMHgxMjA5CiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX0lPQk9BUkRfUElEICAgICAgMHgxMDAyCiNkZWZpbmUgSU5URVJCSU9NRVRSSUNTX01JTklfSU9CT0FSRF9QSUQgMHgxMDA2CgovKgogKiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgdmFsdWVzIGZvciB0aGUgUGVybGUgU3lzdGVtcwogKiBVbHRyYVBvcnQgVVNCIHNlcmlhbCBjb252ZXJ0ZXJzCiAqLwojZGVmaW5lIEZURElfUEVSTEVfVUxUUkFQT1JUX1BJRCAweEYwQzAJLyogUGVybGUgVWx0cmFQb3J0IFByb2R1Y3QgSWQgKi8KCi8qCiAqIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB2YWx1ZXMgZm9yIHRoZSBTZWFsZXZlbCBTZWFMSU5LKyBhZGFwdGVycy4KICogKE9yaWdpbmFsIGxpc3Qgc2VudCBieSBUdWFuIEhvYW5nLiAgSWFuIEFiYm90dCByZW5hbWVkIHRoZSBtYWNyb3MgYW5kCiAqIHJlbW92ZWQgc29tZSBQSURzIHRoYXQgZG9uJ3Qgc2VlbSB0byBtYXRjaCBhbnkgZXhpc3RpbmcgcHJvZHVjdHMuKQogKi8KI2RlZmluZSBTRUFMRVZFTF9WSUQJCTB4MGM1MgkvKiBTZWFsZXZlbCBWZW5kb3IgSUQgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAxX1BJRAkweDIxMDEJLyogU2VhTElOSysyMzIgKDIxMDEvMjEwNSkgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTAyX1BJRAkweDIxMDIJLyogU2VhTElOSys0ODUgKDIxMDIpICovCiNkZWZpbmUgU0VBTEVWRUxfMjEwM19QSUQJMHgyMTAzCS8qIFNlYUxJTksrMjMySSAoMjEwMykgKi8KI2RlZmluZSBTRUFMRVZFTF8yMTA0X1BJRAkweDIxMDQJLyogU2VhTElOSys0ODVJICgyMTA0KSAqLwojZGVmaW5lIFNFQUxFVkVMXzIxMDZfUElECTB4OTAyMAkvKiBTZWFMSU5LKzQyMiAoMjEwNikgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAxXzFfUElECTB4MjIxMQkvKiBTZWFQT1JUKzIvMjMyICgyMjAxKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAxXzJfUElECTB4MjIyMQkvKiBTZWFQT1JUKzIvMjMyICgyMjAxKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAyXzFfUElECTB4MjIxMgkvKiBTZWFQT1JUKzIvNDg1ICgyMjAyKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAyXzJfUElECTB4MjIyMgkvKiBTZWFQT1JUKzIvNDg1ICgyMjAyKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yMjAzXzFfUElECTB4MjIxMwkvKiBTZWFQT1JUKzIgKDIyMDMpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzIyMDNfMl9QSUQJMHgyMjIzCS8qIFNlYVBPUlQrMiAoMjIwMykgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8xX1BJRAkweDI0MTEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8yX1BJRAkweDI0MjEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV8zX1BJRAkweDI0MzEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMV80X1BJRAkweDI0NDEJLyogU2VhUE9SVCs0LzIzMiAoMjQwMSkgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8xX1BJRAkweDI0MTIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAxICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8yX1BJRAkweDI0MjIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAyICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl8zX1BJRAkweDI0MzIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwMl80X1BJRAkweDI0NDIJLyogU2VhUE9SVCs0LzQ4NSAoMjQwMikgUG9ydCA0ICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM18xX1BJRAkweDI0MTMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yNDAzXzJfUElECTB4MjQyMwkvKiBTZWFQT1JUKzQgKDI0MDMpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI0MDNfM19QSUQJMHgyNDMzCS8qIFNlYVBPUlQrNCAoMjQwMykgUG9ydCAzICovCiNkZWZpbmUgU0VBTEVWRUxfMjQwM180X1BJRAkweDI0NDMJLyogU2VhUE9SVCs0ICgyNDAzKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzFfUElECTBYMjgxMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzJfUElECTBYMjgyMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzNfUElECTBYMjgzMQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzRfUElECTBYMjg0MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzVfUElECTBYMjg1MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDUgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzZfUElECTBYMjg2MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDYgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzdfUElECTBYMjg3MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDcgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAxXzhfUElECTBYMjg4MQkvKiBTZWFMSU5LKzgvMjMyICgyODAxKSBQb3J0IDggKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzFfUElECTBYMjgxMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDEgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzJfUElECTBYMjgyMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDIgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzNfUElECTBYMjgzMgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDMgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzRfUElECTBYMjg0MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDQgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzVfUElECTBYMjg1MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDUgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzZfUElECTBYMjg2MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDYgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzdfUElECTBYMjg3MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDcgKi8KI2RlZmluZSBTRUFMRVZFTF8yODAyXzhfUElECTBYMjg4MgkvKiBTZWFMSU5LKzgvNDg1ICgyODAyKSBQb3J0IDggKi8KI2RlZmluZSBTRUFMRVZFTF8yODAzXzFfUElECTBYMjgxMwkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfMl9QSUQJMFgyODIzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfM19QSUQJMFgyODMzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgMyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNF9QSUQJMFgyODQzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNCAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNV9QSUQJMFgyODUzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNSAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfNl9QSUQJMFgyODYzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNiAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfN19QSUQJMFgyODczIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgNyAqLwojZGVmaW5lIFNFQUxFVkVMXzI4MDNfOF9QSUQJMFgyODgzIAkvKiBTZWFMSU5LKzggKDI4MDMpIFBvcnQgOCAqLwoKLyoKICogVGhlIGZvbGxvd2luZyBhcmUgdGhlIHZhbHVlcyBmb3IgdHdvIEtPQklMIGNoaXBjYXJkIHRlcm1pbmFscy4KICovCiNkZWZpbmUgS09CSUxfVklECQkweDBkNDYJLyogS09CSUwgVmVuZG9yIElEICovCiNkZWZpbmUgS09CSUxfQ09OVl9CMV9QSUQJMHgyMDIwCS8qIEtPQklMIEtvbnZlcnRlciBmb3IgQjEgKi8KI2RlZmluZSBLT0JJTF9DT05WX0tBQU5fUElECTB4MjAyMQkvKiBLT0JJTF9Lb252ZXJ0ZXIgZm9yIEtBQU4gKi8KCi8qCiAqIEljb20gSUQtMSBkaWdpdGFsIHRyYW5zY2VpdmVyCiAqLwoKI2RlZmluZSBJQ09NX0lEMV9WSUQgICAgICAgICAgICAweDBDMjYKI2RlZmluZSBJQ09NX0lEMV9QSUQgICAgICAgICAgICAweDAwMDQKCi8qCiAqIEFTSy5mciBkZXZpY2VzCiAqLwojZGVmaW5lIEZURElfQVNLX1JEUjQwMF9QSUQJMHhDOTkxCS8qIEFTSyBSRFIgNDAwIHNlcmllcyBjYXJkIHJlYWRlciAqLwoKLyoKICogRlRESSBVU0IgVUFSVCBjaGlwcyB1c2VkIGluIGNvbnN0cnVjdGlvbiBwcm9qZWN0cyBmcm9tIHRoZQogKiBFbGVrdG9yIEVsZWN0cm9uaWNzIG1hZ2F6aW5lIChodHRwOi8vZWxla3Rvci1lbGVjdHJvbmljcy5jby51aykKICovCiNkZWZpbmUgRUxFS1RPUl9WSUQJCTB4MEM3RAojZGVmaW5lIEVMRUtUT1JfRlQzMjNSX1BJRAkweDAwMDUJLyogUkZJRC1SZWFkZXIsIGlzc3VlIDA5LTIwMDYgKi8KCi8qCiAqIERTUy0yMCBTeW5jIFN0YXRpb24gZm9yIFNvbnkgRXJpY3Nzb24gUDgwMAogKi8KI2RlZmluZSBGVERJX0RTUzIwX1BJRCAgICAgICAgICAweEZDODIgIAoKLyoKICogSG9tZSBFbGVjdHJvbmljcyAod3d3LmhvbWUtZWxlY3Ryby5jb20pIFVTQiBnYWRnZXRzCiAqLwojZGVmaW5lIEZURElfSEVfVElSQTFfUElECTB4RkE3OAkvKiBUaXJhLTEgSVIgdHJhbnNjZWl2ZXIgKi8KCi8qIFVTQi1VSVJUIC0gQW4gaW5mcmFyZWQgcmVjZWl2ZXIgYW5kIHRyYW5zbWl0dGVyIHVzaW5nIHRoZSA4VTIzMkFNIGNoaXAgKi8KLyogaHR0cDovL2hvbWUuZWFydGhsaW5rLm5ldC9+anJoZWVzL1VTQlVJUlQvaW5kZXguaHRtICovCiNkZWZpbmUgRlRESV9VU0JfVUlSVF9QSUQJMHhGODUwCS8qIFByb2R1Y3QgSWQgKi8KCi8qIFROQy1YIFVTQi10by1wYWNrZXQtcmFkaW8gYWRhcHRlciwgdmVyc2lvbnMgcHJpb3IgdG8gMy4wIChETFAgbW9kdWxlKSAqLwoKI2RlZmluZSBGVERJX1ROQ19YX1BJRAkJMHhFQkUwCgovKgogKiBFTFYgVVNCIGRldmljZXMgc3VibWl0dGVkIGJ5IENocmlzdGlhbiBBYnQgb2YgRUxWICh3d3cuZWx2LmRlKS4KICogQWxsIG9mIHRoZXNlIGRldmljZXMgdXNlIEZUREkncyB2ZW5kb3IgSUQgKDB4MDQwMykuCiAqCiAqIFRoZSBwcmV2aW91c2x5IGluY2x1ZGVkIFBJRCBmb3IgdGhlIFVPIDEwMCBtb2R1bGUgd2FzIGluY29ycmVjdC4KICogSW4gZmFjdCwgdGhhdCBQSUQgd2FzIGZvciBFTFYncyBVUiAxMDAgVVNCLVJTMjMyIGNvbnZlcnRlciAoMHhGQjU4KS4KICoKICogQXJtaW4gTGFldWdlciBvcmlnaW5hbGx5IHNlbnQgdGhlIFBJRCBmb3IgdGhlIFVNIDEwMCBtb2R1bGUuCiAqLwojZGVmaW5lIEZURElfRUxWX1VSMTAwX1BJRAkweEZCNTgJLyogVVNCLVJTMjMyLVVtc2V0emVyIChVUiAxMDApICovCiNkZWZpbmUgRlRESV9FTFZfVU0xMDBfUElECTB4RkI1QQkvKiBVU0ItTW9kdWwgVU0gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfVU8xMDBfUElECTB4RkI1QgkvKiBVU0ItTW9kdWwgVU8gMTAwICovCiNkZWZpbmUgRlRESV9FTFZfQUxDODUwMF9QSUQJMHhGMDZFCS8qIEFMQyA4NTAwIEV4cGVydCAqLwovKiBBZGRpdGlvbmFsIEVMViBQSURzIHRoYXQgZGVmYXVsdCB0byB1c2luZyB0aGUgRlRESSBEMlhYIGRyaXZlcnMgb24KICogTVMgV2luZG93cywgcmF0aGVyIHRoYW4gdGhlIEZUREkgVmlydHVhbCBDb20gUG9ydCBkcml2ZXJzLgogKiBNYXliZSB0aGVzZSB3aWxsIGJlIGVhc2llciB0byB1c2Ugd2l0aCB0aGUgbGliZnRkaS9saWJ1c2IgdXNlci1zcGFjZQogKiBkcml2ZXJzLCBvciBwb3NzaWJseSB0aGUgQ29tZWRpIGRyaXZlcnMgaW4gc29tZSBjYXNlcy4gKi8KI2RlZmluZSBGVERJX0VMVl9DTEk3MDAwX1BJRAkweEZCNTkJLyogQ29tcHV0ZXItTGlnaHQtSW50ZXJmYWNlIChDTEkgNzAwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9QUFM3MzMwX1BJRAkweEZCNUMJLyogUHJvY2Vzc29yLVBvd2VyLVN1cHBseSAoUFBTIDczMzApICovCiNkZWZpbmUgRlRESV9FTFZfVEZNMTAwX1BJRAkweEZCNUQJLyogVGVtcGVyYXJ0dXItRmV1Y2h0ZSBNZXNzZ2VyYWV0IChURk0gMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VERjc3X1BJRAkweEZCNUUJLyogVVNCIERDRiBGdW5rdXJoIChVREYgNzcpICovCiNkZWZpbmUgRlRESV9FTFZfVUlPODhfUElECTB4RkI1RgkvKiBVU0ItSS9PIEludGVyZmFjZSAoVUlPIDg4KSAqLwojZGVmaW5lIEZURElfRUxWX1VBRDhfUElECTB4RjA2OAkvKiBVU0ItQUQtV2FuZGxlciAoVUFEIDgpICovCiNkZWZpbmUgRlRESV9FTFZfVURBN19QSUQJMHhGMDY5CS8qIFVTQi1EQS1XYW5kbGVyIChVREEgNykgKi8KI2RlZmluZSBGVERJX0VMVl9VU0kyX1BJRAkweEYwNkEJLyogVVNCLVNjaHJpdHRtb3RvcmVuLUludGVyZmFjZSAoVVNJIDIpICovCiNkZWZpbmUgRlRESV9FTFZfVDExMDBfUElECTB4RjA2QgkvKiBUaGVybW9tZXRlciAoVCAxMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1BDRDIwMF9QSUQJMHhGMDZDCS8qIFBDLURhdGVubG9nZ2VyIChQQ0QgMjAwKSAqLwojZGVmaW5lIEZURElfRUxWX1VMQTIwMF9QSUQJMHhGMDZECS8qIFVTQi1MQ0QtQW5zdGV1ZXJ1bmcgKFVMQSAyMDApICovCiNkZWZpbmUgRlRESV9FTFZfRkhaMTAwMFBDX1BJRAkweEYwNkYJLyogRkhaIDEwMDAgUEMgKi8KI2RlZmluZSBGVERJX0VMVl9DU0k4X1BJRAkweEUwRjAJLyogQ29tcHV0ZXItU2NoYWx0LUludGVyZmFjZSAoQ1NJIDgpICovCiNkZWZpbmUgRlRESV9FTFZfRU0xMDAwRExfUElECTB4RTBGMQkvKiBQQy1EYXRlbmxvZ2dlciBmdWVyIEVuZXJnaWVtb25pdG9yIChFTSAxMDAwIERMKSAqLwojZGVmaW5lIEZURElfRUxWX1BDSzEwMF9QSUQJMHhFMEYyCS8qIFBDLUthYmVsdGVzdGVyIChQQ0sgMTAwKSAqLwojZGVmaW5lIEZURElfRUxWX1JGUDUwMF9QSUQJMHhFMEYzCS8qIEhGLUxlaXN0dW5nc21lc3NlciAoUkZQIDUwMCkgKi8KI2RlZmluZSBGVERJX0VMVl9GUzIwU0lHX1BJRAkweEUwRjQJLyogU2lnbmFsZ2ViZXIgKEZTIDIwIFNJRykgKi8KI2RlZmluZSBGVERJX0VMVl9XUzMwMFBDX1BJRAkweEUwRjYJLyogUEMtV2V0dGVyc3RhdGlvbiAoV1MgMzAwIFBDKSAqLwojZGVmaW5lIEZURElfRUxWX0ZIWjEzMDBQQ19QSUQJMHhFMEU4CS8qIEZIWiAxMzAwIFBDICovCiNkZWZpbmUgRlRESV9FTFZfV1M1MDBfUElECTB4RTBFOQkvKiBQQy1XZXR0ZXJzdGF0aW9uIChXUyA1MDApICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgSUQgVEVDSCAod3d3LmlkdC1uZXQuY29tKSBkZXZpY2VzCiAqLwojZGVmaW5lIElEVEVDSF9WSUQJCTB4MEFDRAkvKiBJRCBURUNIIFZlbmRvciBJRCAqLwojZGVmaW5lIElEVEVDSF9JRFQxMjIxVV9QSUQJMHgwMzAwCS8qIElEVDEyMjFVIFVTQiB0byBSUy0yMzIgYWRhcHRlciAqLwoKLyoKICogRGVmaW5pdGlvbnMgZm9yIE9tbmlkaXJlY3Rpb25hbCBDb250cm9sIFRlY2hub2xvZ3ksIEluYy4gZGV2aWNlcwogKi8KI2RlZmluZSBPQ1RfVklECQkJMHgwQjM5CS8qIE9DVCB2ZW5kb3IgSUQgKi8KLyogTm90ZTogT0NUIFVTMTAxIGlzIGFsc28gcmViYWRnZWQgYXMgRGljayBTbWl0aCBFbGVjdHJvbmljcyAoTlopIFhINjM4MSAqLwovKiBBbHNvIHJlYmFkZ2VkIGFzIERpY2sgU21pdGggRWxlY3Ryb25pY3MgKEF1cykgWEg2NDUxICovCi8qIEFsc28gcmViYWRnZWQgYXMgU0lJRyBJbmMuIG1vZGVsIFVTMjMwOCBoYXJkd2FyZSB2ZXJzaW9uIDEgKi8KI2RlZmluZSBPQ1RfVVMxMDFfUElECQkweDA0MjEJLyogT0NUIFVTMTAxIFVTQiB0byBSUy0yMzIgKi8KCi8qIGFuIGluZnJhcmVkIHJlY2VpdmVyIGZvciB1c2VyIGFjY2VzcyBjb250cm9sIHdpdGggSVIgdGFncyAqLwojZGVmaW5lIEZURElfUElFR1JPVVBfUElECTB4RjIwOAkvKiBQcm9kdWN0IElkICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQXJ0ZW1pcyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hcnRlbWlzY2NkLmNvLnVrLwogKi8KI2RlZmluZSBGVERJX0FSVEVNSVNfUElECTB4REYyOAkvKiBBbGwgQXJ0ZW1pcyBDYW1lcmFzICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQVRJSyBJbnN0cnVtZW50cyBhc3Ryb25vbWljYWwgVVNCIGJhc2VkIGNhbWVyYXMKICogQ2hlY2sgaXQgYXQgaHR0cDovL3d3dy5hdGlrLWluc3RydW1lbnRzLmNvbS8KICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2X1BJRAkweERGMzAJLyogQVRJSyBBVEstMTYgR3JheXNjYWxlIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkNfUElECTB4REYzMgkvKiBBVElLIEFUSy0xNkMgQ29sb3VyIENhbWVyYSAqLwojZGVmaW5lIEZURElfQVRJS19BVEsxNkhSX1BJRAkweERGMzEJLyogQVRJSyBBVEstMTZIUiBHcmF5c2NhbGUgQ2FtZXJhICovCiNkZWZpbmUgRlRESV9BVElLX0FUSzE2SFJDX1BJRAkweERGMzMJLyogQVRJSyBBVEstMTZIUkMgQ29sb3VyIENhbWVyYSAqLwoKLyoKICogUHJvdGVnbyBwcm9kdWN0IGlkcwogKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfMQkweEZDNzAJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwojZGVmaW5lIFBST1RFR09fUjJYMAkJMHhGQzcxCS8qIFIyMDAtVVNCIFRSTkcgdW5pdCAoUjIxMCwgUjIyMCwgYW5kIFIyMzApICovCiNkZWZpbmUgUFJPVEVHT19TUEVDSUFMXzMJMHhGQzcyCS8qIHNwZWNpYWwvdW5rbm93biBkZXZpY2UgKi8KI2RlZmluZSBQUk9URUdPX1NQRUNJQUxfNAkweEZDNzMJLyogc3BlY2lhbC91bmtub3duIGRldmljZSAqLwoKLyoKICogR3VkZSBBbmFsb2ctIHVuZCBEaWdpdGFsc3lzdGVtZSBHbWJICiAqLwojZGVmaW5lIEZURElfR1VERUFEU19FODA4X1BJRCAgICAweEU4MDgKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwOV9QSUQgICAgMHhFODA5CiNkZWZpbmUgRlRESV9HVURFQURTX0U4MEFfUElEICAgIDB4RTgwQQojZGVmaW5lIEZURElfR1VERUFEU19FODBCX1BJRCAgICAweEU4MEIKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwQ19QSUQgICAgMHhFODBDCiNkZWZpbmUgRlRESV9HVURFQURTX0U4MERfUElEICAgIDB4RTgwRAojZGVmaW5lIEZURElfR1VERUFEU19FODBFX1BJRCAgICAweEU4MEUKI2RlZmluZSBGVERJX0dVREVBRFNfRTgwRl9QSUQgICAgMHhFODBGCiNkZWZpbmUgRlRESV9HVURFQURTX0U4ODhfUElEICAgIDB4RTg4OCAgLyogRXhwZXJ0IElTRE4gQ29udHJvbCBVU0IgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4OV9QSUQgICAgMHhFODg5ICAvKiBVU0IgUlMtMjMyIE9wdG9CcmlkZ2UgKi8KI2RlZmluZSBGVERJX0dVREVBRFNfRTg4QV9QSUQgICAgMHhFODhBCiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEJfUElEICAgIDB4RTg4QgojZGVmaW5lIEZURElfR1VERUFEU19FODhDX1BJRCAgICAweEU4OEMKI2RlZmluZSBGVERJX0dVREVBRFNfRTg4RF9QSUQgICAgMHhFODhECiNkZWZpbmUgRlRESV9HVURFQURTX0U4OEVfUElEICAgIDB4RTg4RQojZGVmaW5lIEZURElfR1VERUFEU19FODhGX1BJRCAgICAweEU4OEYKCi8qCiAqIExpbnggVGVjaG5vbG9naWVzIHByb2R1Y3QgaWRzCiAqLwojZGVmaW5lIExJTlhfU0RNVVNCUVNTX1BJRAkweEY0NDgJLyogTGlueCBTRE0tVVNCLVFTLVMgKi8KI2RlZmluZSBMSU5YX01BU1RFUkRFVkVMMl9QSUQgICAweEY0NDkgICAvKiBMaW54IE1hc3RlciBEZXZlbG9wbWVudCAyLjAgKi8KI2RlZmluZSBMSU5YX0ZVVFVSRV8wX1BJRCAgIDB4RjQ0QSAgIC8qIExpbnggZnV0dXJlIGRldmljZSAqLwojZGVmaW5lIExJTlhfRlVUVVJFXzFfUElEICAgMHhGNDRCICAgLyogTGlueCBmdXR1cmUgZGV2aWNlICovCiNkZWZpbmUgTElOWF9GVVRVUkVfMl9QSUQgICAweEY0NEMgICAvKiBMaW54IGZ1dHVyZSBkZXZpY2UgKi8KCi8qIENDUyBJbmMuIElDRFUvSUNEVTQwIHByb2R1Y3QgSUQgLSB0aGUgRlQyMzJCTSBpcyB1c2VkIGluIGFuIGluLWNpcmN1aXQtZGVidWdnZXIgKi8KLyogdW5pdCBmb3IgUElDMTYncy9QSUMxOCdzICovCiNkZWZpbmUgRlRESV9DQ1NJQ0RVMjBfMF9QSUQgICAgMHhGOUQwCiNkZWZpbmUgRlRESV9DQ1NJQ0RVNDBfMV9QSUQgICAgMHhGOUQxCiNkZWZpbmUgRlRESV9DQ1NNQUNIWF8yX1BJRCAgICAgMHhGOUQyCgovKiBJbnNpZGUgQWNjZXNzbyBjb250YWN0bGVzcyByZWFkZXIgKGh0dHA6Ly93d3cuaW5zaWRlZnIuY29tKSAqLwojZGVmaW5lIElOU0lERV9BQ0NFU1NPCQkweEZBRDAKCi8qCiAqIEludHJlcGlkIENvbnRyb2wgU3lzdGVtcyAoaHR0cDovL3d3dy5pbnRyZXBpZGNzLmNvbS8pIFZhbHVlQ0FOIGFuZCBOZW9WSQogKi8KI2RlZmluZSBJTlRSRVBJRF9WSUQJCTB4MDkzQwojZGVmaW5lIElOVFJFUElEX1ZBTFVFQ0FOX1BJRAkweDA2MDEKI2RlZmluZSBJTlRSRVBJRF9ORU9WSV9QSUQJMHgwNzAxCgovKgogKiBGYWxjb20gV2lyZWxlc3MgQ29tbXVuaWNhdGlvbnMgR21iSAogKi8KI2RlZmluZSBGQUxDT01fVklECQkweDBGOTQJLyogVmVuZG9yIElkICovCiNkZWZpbmUgRkFMQ09NX1RXSVNUX1BJRAkweDAwMDEJLyogRmFsY29tIFR3aXN0IFVTQiBHUFJTIG1vZGVtICovCiNkZWZpbmUgRkFMQ09NX1NBTUJBX1BJRAkweDAwMDUJLyogRmFsY29tIFNhbWJhIFVTQiBHUFJTIG1vZGVtICovCgovKgogKiBTVVVOVE8gcHJvZHVjdCBpZHMKICovCiNkZWZpbmUgRlRESV9TVVVOVE9fU1BPUlRTX1BJRAkweEY2ODAJLyogU3V1bnRvIFNwb3J0cyBpbnN0cnVtZW50ICovCgovKgogKiBUVGkgKFRodXJsYnkgVGhhbmRhciBJbnN0cnVtZW50cykKICovCiNkZWZpbmUgVFRJX1ZJRAkJCTB4MTAzRQkvKiBWZW5kb3IgSWQgKi8KI2RlZmluZSBUVElfUUwzNTVQX1BJRAkJMHgwM0U4CS8qIFRUaSBRTDM1NVAgcG93ZXIgc3VwcGx5ICovCgovKgogKiBEZWZpbml0aW9ucyBmb3IgQiZCIEVsZWN0cm9uaWNzIHByb2R1Y3RzLgogKi8KI2RlZmluZSBCQU5EQl9WSUQJCTB4MDg1NgkvKiBCJkIgRWxlY3Ryb25pY3MgVmVuZG9yIElEICovCiNkZWZpbmUgQkFOREJfVVNPVEw0X1BJRAkweEFDMDEJLyogVVNPVEw0IElzb2xhdGVkIFJTLTQ4NSBDb252ZXJ0ZXIgKi8KI2RlZmluZSBCQU5EQl9VU1RMNF9QSUQJCTB4QUMwMgkvKiBVU1RMNCBSUy00ODUgQ29udmVydGVyICovCiNkZWZpbmUgQkFOREJfVVNPOU1MMl9QSUQJMHhBQzAzCS8qIFVTTzlNTDIgSXNvbGF0ZWQgUlMtMjMyIENvbnZlcnRlciAqLwoKLyoKICogUk0gTWljaGFlbGlkZXMgQ0FOdmlldyBVU0IgKGh0dHA6Ly93d3cucm1jYW4uY29tKQogKiBDQU4gZmllbGRidXMgaW50ZXJmYWNlIGFkYXB0ZXIsIGFkZGVkIGJ5IHBvcnQgR21iSCB3d3cucG9ydC5kZSkKICogSWFuIEFiYm90dCBjaGFuZ2VkIHRoZSBtYWNybyBuYW1lcyBmb3IgY29uc2lzdGVuY3kuCiAqLwojZGVmaW5lIEZURElfUk1fQ0FOVklFV19QSUQJMHhmZDYwCS8qIFByb2R1Y3QgSWQgKi8KCi8qCiAqIEVWRVIgRWNvIFBybyBVUFMgKGh0dHA6Ly93d3cuZXZlci5jb20ucGwvKQogKi8KCiNkZWZpbmUJRVZFUl9FQ09fUFJPX0NEUwkweGU1MjAJLyogUlMtMjMyIGNvbnZlcnRlciAqLwoKLyoKICogNE4tR0FMQVhZLkRFIFBJRHMgZm9yIENBTi1VU0IsIFVTQi1SUzIzMiwgVVNCLVJTNDIyLCBVU0ItUlM0ODUsCiAqIFVTQi1UVFkgYWN0aXYsIFVTQi1UVFkgcGFzc2l2LiAgU29tZSBQSURzIGFyZSB1c2VkIGJ5IHNldmVyYWwgZGV2aWNlcwogKiBhbmQgSSdtIG5vdCBlbnRpcmVseSBzdXJlIHdoaWNoIGFyZSB1c2VkIGJ5IHdoaWNoLgogKi8KI2RlZmluZSBGVERJXzROX0dBTEFYWV9ERV8xX1BJRAkweEYzQzAKI2RlZmluZSBGVERJXzROX0dBTEFYWV9ERV8yX1BJRAkweEYzQzEKCi8qCiAqIE1vYmlsaXR5IEVsZWN0cm9uaWNzIHByb2R1Y3RzLgogKi8KI2RlZmluZSBNT0JJTElUWV9WSUQJCQkweDEzNDIKI2RlZmluZSBNT0JJTElUWV9VU0JfU0VSSUFMX1BJRAkJMHgwMjAyCS8qIEVhc2lEb2NrIFVTQiAyMDAgc2VyaWFsICovCgovKgogKiBtaWNyb0hBTSBwcm9kdWN0IElEcyAoaHR0cDovL3d3dy5taWNyb2hhbS5jb20pLgogKiBTdWJtaXR0ZWQgYnkgSnVzdGluIEJ1cmtldCAoS0wxUkwpIDx6b3J0b25AanRhbi5jb20+CiAqIGFuZCBNaWtlIFN0dWRlciAoSzZFRVApIDxrNmVlcEBoYW1zb2Z0d2FyZS5vcmc+LgogKiBJYW4gQWJib3R0IDxhYmJvdHRpQG1ldi5jby51az4gYWRkZWQgYSBmZXcgbW9yZSBmcm9tIHRoZSBkcml2ZXIgSU5GIGZpbGUuCiAqLwojZGVmaW5lIEZURElfTUhBTV9LV19QSUQgMHhFRUU4CQkvKiBVU0ItS1cgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1lTX1BJRCAweEVFRTkJCS8qIFVTQi1ZUyBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fWTZfUElEIDB4RUVFQQkJLyogVVNCLVk2IGludGVyZmFjZSAqLwojZGVmaW5lIEZURElfTUhBTV9ZOF9QSUQgMHhFRUVCCQkvKiBVU0ItWTggaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX0lDX1BJRCAweEVFRUMJCS8qIFVTQi1JQyBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fREI5X1BJRCAweEVFRUQJLyogVVNCLURCOSBpbnRlcmZhY2UgKi8KI2RlZmluZSBGVERJX01IQU1fUlMyMzJfUElEIDB4RUVFRQkvKiBVU0ItUlMyMzIgaW50ZXJmYWNlICovCiNkZWZpbmUgRlRESV9NSEFNX1k5X1BJRCAweEVFRUYJCS8qIFVTQi1ZOSBpbnRlcmZhY2UgKi8KCi8qCiAqIEFjdGl2ZSBSb2JvdHMgcHJvZHVjdCBpZHMuCiAqLwojZGVmaW5lIEZURElfQUNUSVZFX1JPQk9UU19QSUQJMHhFNTQ4CS8qIFVTQiBjb21tcyBib2FyZCAqLwoKLyoKICogWHNlbnMgVGVjaG5vbG9naWVzIEJWIHByb2R1Y3RzIChodHRwOi8vd3d3LnhzZW5zLmNvbSkuCiAqLwojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8wX1BJRAkweEQzODgKI2RlZmluZSBYU0VOU19DT05WRVJURVJfMV9QSUQJMHhEMzg5CiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzJfUElECTB4RDM4QQojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl8zX1BJRAkweEQzOEIKI2RlZmluZSBYU0VOU19DT05WRVJURVJfNF9QSUQJMHhEMzhDCiNkZWZpbmUgWFNFTlNfQ09OVkVSVEVSXzVfUElECTB4RDM4RAojZGVmaW5lIFhTRU5TX0NPTlZFUlRFUl82X1BJRAkweEQzOEUKI2RlZmluZSBYU0VOU19DT05WRVJURVJfN19QSUQJMHhEMzhGCgovKgogKiBUZXJhdHJvbmlrIHByb2R1Y3QgaWRzLgogKiBTdWJtaXR0ZWQgYnkgTy4gV/ZsZmVsc2NobmVpZGVyLgogKi8KI2RlZmluZSBGVERJX1RFUkFUUk9OSUtfVkNQX1BJRAkgMHhFQzg4CS8qIFRlcmF0cm9uaWsgZGV2aWNlIChwcmVmZXJyaW5nIFZDUCBkcml2ZXIgb24gd2luZG93cykgKi8KI2RlZmluZSBGVERJX1RFUkFUUk9OSUtfRDJYWF9QSUQgMHhFQzg5CS8qIFRlcmF0cm9uaWsgZGV2aWNlIChwcmVmZXJyaW5nIEQyWFggZHJpdmVyIG9uIHdpbmRvd3MpICovCgovKgogKiBFdm9sdXRpb24gUm9ib3RpY3MgcHJvZHVjdHMgKGh0dHA6Ly93d3cuZXZvbHV0aW9uLmNvbS8pLgogKiBTdWJtaXR0ZWQgYnkgU2hhd24gTS4gTGF2ZWxsZS4KICovCiNkZWZpbmUgRVZPTFVUSU9OX1ZJRAkJMHhERUVFCS8qIFZlbmRvciBJRCAqLwojZGVmaW5lIEVWT0xVVElPTl9FUjFfUElECTB4MDMwMAkvKiBFUjEgQ29udHJvbCBNb2R1bGUgKi8KI2RlZmluZSBFVk9fOFUyMzJBTV9QSUQJMHgwMkZGCS8qIEV2b2x1dGlvbiByb2JvdGljcyBSQ00yIChGVDIzMkFNKSovCiNkZWZpbmUgRVZPX0hZQlJJRF9QSUQJCTB4MDMwMgkvKiBFdm9sdXRpb24gcm9ib3RpY3MgUkNNNCBQSUQgKEZUMjMyQk0pKi8KI2RlZmluZSBFVk9fUkNNNF9QSUQJCTB4MDMwMwkvKiBFdm9sdXRpb24gcm9ib3RpY3MgUkNNNCBQSUQgKi8KCi8qIFB5cmFtaWQgQ29tcHV0ZXIgR21iSCAqLwojZGVmaW5lIEZURElfUFlSQU1JRF9QSUQJMHhFNkM4CS8qIFB5cmFtaWQgQXBwbGlhbmNlIERpc3BsYXkgKi8KCi8qCiAqIFBvc2lmbGV4IGluYyByZXRhaWwgZXF1aXBtZW50IChodHRwOi8vd3d3LnBvc2lmbGV4LmNvbS50dykKICovCiNkZWZpbmUgUE9TSUZMRVhfVklECQkweDBkM2EgIC8qIFZlbmRvciBJRCAqLwojZGVmaW5lIFBPU0lGTEVYX1BQNzAwMF9QSUQJMHgwMzAwICAvKiBQUC03MDAwSUkgdGhlcm1hbCBwcmludGVyICovCgovKgogKiBXZXN0cmV4IEludGVybmF0aW9uYWwgZGV2aWNlcyBzdWJtaXR0ZWQgYnkgQ29yeSBMZWUKICovCiNkZWZpbmUgRlRESV9XRVNUUkVYX01PREVMXzc3N19QSUQJMHhEQzAwCS8qIE1vZGVsIDc3NyAqLwojZGVmaW5lIEZURElfV0VTVFJFWF9NT0RFTF84OTAwRl9QSUQJMHhEQzAxCS8qIE1vZGVsIDg5MDBGICovCgovKgogKiBSUi1DaXJLaXRzIExvY29CdWZmZXIgVVNCIChodHRwOi8vd3d3LnJyLWNpcmtpdHMuY29tKQogKi8KI2RlZmluZSBGVERJX1JSQ0lSS0lUU19MT0NPQlVGRkVSX1BJRAkweGM3ZDAJLyogTG9jb0J1ZmZlciBVU0IgKi8KCi8qCiAqIEVjbG8gKGh0dHA6Ly93d3cuZWNsby5wdC8pIHByb2R1Y3QgSURzLgogKiBQSUQgMHhFQTkwIHN1Ym1pdHRlZCBieSBNYXJ0aW4gR3JpbGwuCiAqLwojZGVmaW5lIEZURElfRUNMT19DT01fMVdJUkVfUElECTB4RUE5MAkvKiBDT00gdG8gMS1XaXJlIFVTQiBhZGFwdG9yICovCgovKgogKiBQYXBvdWNoIHByb2R1Y3RzIChodHRwOi8vd3d3LnBhcG91Y2guY29tLykKICogU3VibWl0dGVkIGJ5IEZvbGtlcnQgdmFuIEhldXNkZW4KICovCgojZGVmaW5lIFBBUE9VQ0hfVklECQkJMHg1MDUwCS8qIFZlbmRvciBJRCAqLwojZGVmaW5lIFBBUE9VQ0hfVE1VX1BJRAkJCTB4MDQwMAkvKiBUTVUgVVNCIFRoZXJtb21ldGVyICovCgovKgogKiBBQ0cgSWRlbnRpZmljYXRpb24gVGVjaG5vbG9naWVzIEdtYkggcHJvZHVjdHMgKGh0dHA6Ly93d3cuYWNnLmRlLykuCiAqIFN1Ym1pdHRlZCBieSBhbnRvbiAtYXQtIGdvdG8xMCAtZG90LSBvcmcuCiAqLwojZGVmaW5lIEZURElfQUNHX0hGRFVBTF9QSUQJCTB4REQyMAkvKiBIRiBEdWFsIElTTyBSZWFkZXIgKFJGSUQpICovCgovKgogKiBZb3N0IEVuZ2luZWVyaW5nLCBJbmMuIHByb2R1Y3RzICh3d3cueW9zdGVuZ2luZWVyaW5nLmNvbSkuCiAqIFBJRCAweEUwNTAgc3VibWl0dGVkIGJ5IEFhcm9uIFByb3NlLgogKi8KI2RlZmluZSBGVERJX1lFSV9TRVJWT0NFTlRFUjMxX1BJRAkweEUwNTAJLyogWUVJIFNlcnZvQ2VudGVyMy4xIFVTQiAqLwoKLyoKICogVGhvckxhYnMgVVNCIG1vdG9yIGRyaXZlcnMKICovCiNkZWZpbmUgRlRESV9USE9STEFCU19QSUQJCTB4ZmFmMCAvKiBUaG9yTGFicyBVU0IgbW90b3IgZHJpdmVycyAqLwoKLyoKICogVGVzdG8gcHJvZHVjdHMgKGh0dHA6Ly93d3cudGVzdG8uY29tLykKICogU3VibWl0dGVkIGJ5IENvbGluIExlcm95CiAqLwojZGVmaW5lIFRFU1RPX1ZJRAkJCTB4MTI4RAojZGVmaW5lIFRFU1RPX1VTQl9JTlRFUkZBQ0VfUElECQkweDAwMDEKCi8qCiAqIEdhbW1hIFNjb3V0IChodHRwOi8vZ2FtbWEtc2NvdXQuY29tLykuIFN1Ym1pdHRlZCBieSByc2NAcnVudHV4LmNvbS4KICovCiNkZWZpbmUgRlRESV9HQU1NQV9TQ09VVF9QSUQJCTB4RDY3OAkvKiBHYW1tYSBTY291dCBvbmxpbmUgKi8KCi8qCiAqIFRhY3RyaXggT3BlblBvcnQgKEVDVSkgZGV2aWNlcy4KICogT3BlblBvcnQgMS4zTSBzdWJtaXR0ZWQgYnkgRG9ub3VyIFNpemVtb3JlLgogKiBPcGVuUG9ydCAxLjNTIGFuZCAxLjNVIHN1Ym1pdHRlZCBieSBJYW4gQWJib3R0LgogKi8KI2RlZmluZSBGVERJX1RBQ1RSSVhfT1BFTlBPUlRfMTNNX1BJRAkweENDNDgJLyogT3BlblBvcnQgMS4zIE1pdHN1YmlzaGkgKi8KI2RlZmluZSBGVERJX1RBQ1RSSVhfT1BFTlBPUlRfMTNTX1BJRAkweENDNDkJLyogT3BlblBvcnQgMS4zIFN1YmFydSAqLwojZGVmaW5lIEZURElfVEFDVFJJWF9PUEVOUE9SVF8xM1VfUElECTB4Q0M0QQkvKiBPcGVuUG9ydCAxLjMgVW5pdmVyc2FsICovCgovKgogKiBUZWxsZHVzIFRlY2hub2xvZ2llcwogKi8KI2RlZmluZSBURUxMRFVTX1ZJRAkJCTB4MTc4MQkvKiBWZW5kb3IgSUQgKi8KI2RlZmluZSBURUxMRFVTX1RFTExTVElDS19QSUQJCTB4MEMzMAkvKiBSRiBjb250cm9sIGRvbmdsZSA0MzMgTUh6IHVzaW5nIEZUMjMyUkwgKi8KCi8qCiAqIElCUyBlbGVrdHJvbmlrIHByb2R1Y3QgaWRzCiAqIFN1Ym1pdHRlZCBieSBUaG9tYXMgU2NobGV1c2VuZXIKICovCiNkZWZpbmUgRlRESV9JQlNfVVM0ODVfUElECTB4ZmYzOCAgLyogSUJTIFVTNDg1IChVU0I8LS0+UlM0MjIvNDg1IGludGVyZmFjZSkgKi8KI2RlZmluZSBGVERJX0lCU19QSUNQUk9fUElECTB4ZmYzOSAgLyogSUJTIFBJQy1Qcm9ncmFtbWVyICovCiNkZWZpbmUgRlRESV9JQlNfUENNQ0lBX1BJRAkweGZmM2EgIC8qIElCUyBDYXJkIHJlYWRlciBmb3IgUENNQ0lBIFNSQU0tY2FyZHMgKi8KI2RlZmluZSBGVERJX0lCU19QSzFfUElECTB4ZmYzYiAgLyogSUJTIFBLMSAtIFBhcnRpY2VsIGNvdW50ZXIgKi8KI2RlZmluZSBGVERJX0lCU19SUzIzMk1PTl9QSUQJMHhmZjNjICAvKiBJQlMgUlMyMzIgLSBNb25pdG9yICovCiNkZWZpbmUgRlRESV9JQlNfQVBQNzBfUElECTB4ZmYzZCAgLyogQVBQIDcwIChkdXN0IG1vbml0b3Jpbmcgc3lzdGVtKSAqLwojZGVmaW5lIEZURElfSUJTX1BFRE9fUElECTB4ZmYzZSAgLyogSUJTIFBFRE8tTW9kZW0gKFJGIG1vZGVtIDg2OC4zNSBNSHopICovCiNkZWZpbmUgRlRESV9JQlNfUFJPRF9QSUQJMHhmZjNmICAvKiBmdXR1cmUgZGV2aWNlICovCgovKgogKiAgTWF4U3RyZWFtIGRldmljZXMJd3d3Lm1heHN0cmVhbS5uZXQKICovCiNkZWZpbmUgRlRESV9NQVhTVFJFQU1fUElECTB4RUUxOAkvKiBYYmVlIFBLRy1VIE1vZHVsZSAqLwoKLyogT2xpbWV4ICovCiNkZWZpbmUgT0xJTUVYX1ZJRAkJCTB4MTVCQQojZGVmaW5lIE9MSU1FWF9BUk1fVVNCX09DRF9QSUQJCTB4MDAwMwoKLyogQ29tbWFuZHMgKi8KI2RlZmluZSBGVERJX1NJT19SRVNFVCAJCTAgLyogUmVzZXQgdGhlIHBvcnQgKi8KI2RlZmluZSBGVERJX1NJT19NT0RFTV9DVFJMIAkxIC8qIFNldCB0aGUgbW9kZW0gY29udHJvbCByZWdpc3RlciAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9GTE9XX0NUUkwJMiAvKiBTZXQgZmxvdyBjb250cm9sIHJlZ2lzdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0JBVURfUkFURQkzIC8qIFNldCBiYXVkIHJhdGUgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfREFUQQk0IC8qIFNldCB0aGUgZGF0YSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHBvcnQgKi8KI2RlZmluZSBGVERJX1NJT19HRVRfTU9ERU1fU1RBVFVTCTUgLyogUmV0cmlldmUgY3VycmVudCB2YWx1ZSBvZiBtb2Rlcm4gc3RhdHVzIHJlZ2lzdGVyICovCiNkZWZpbmUgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVIJNiAvKiBTZXQgdGhlIGV2ZW50IGNoYXJhY3RlciAqLwojZGVmaW5lIEZURElfU0lPX1NFVF9FUlJPUl9DSEFSCTcgLyogU2V0IHRoZSBlcnJvciBjaGFyYWN0ZXIgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUgk5IC8qIFNldCB0aGUgbGF0ZW5jeSB0aW1lciAqLwojZGVmaW5lIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCTEwIC8qIEdldCB0aGUgbGF0ZW5jeSB0aW1lciAqLwoKCi8qCiAqICAgQm1SZXF1ZXN0VHlwZTogIDExMDAgMDAwMGIKICogICBiUmVxdWVzdDogICAgICAgRlRESV9FMl9SRUFECiAqICAgd1ZhbHVlOiAgICAgICAgIDAKICogICB3SW5kZXg6ICAgICAgICAgQWRkcmVzcyBvZiB3b3JkIHRvIHJlYWQKICogICB3TGVuZ3RoOiAgICAgICAgMgogKiAgIERhdGE6ICAgICAgICAgICBXaWxsIHJldHVybiBhIHdvcmQgb2YgZGF0YSBmcm9tIEUyQWRkcmVzcwogKgogKi8KCi8qIFBvcnQgSWRlbnRpZmllciBUYWJsZSAqLwojZGVmaW5lIFBJVF9ERUZBVUxUIAkJMCAvKiBTSU9BICovCiNkZWZpbmUgUElUX1NJT0EJCTEgLyogU0lPQSAqLwovKiBUaGUgZGV2aWNlIHRoaXMgZHJpdmVyIGlzIHRlc3RlZCB3aXRoIG9uZSBoYXMgb25seSBvbmUgcG9ydCAqLwojZGVmaW5lIFBJVF9TSU9CCQkyIC8qIFNJT0IgKi8KI2RlZmluZSBQSVRfUEFSQUxMRUwJCTMgLyogUGFyYWxsZWwgKi8KCi8qIEZURElfU0lPX1JFU0VUICovCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfUkVRVUVTVCBGVERJX1NJT19SRVNFVAojZGVmaW5lIEZURElfU0lPX1JFU0VUX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfU0lPIDAKI2RlZmluZSBGVERJX1NJT19SRVNFVF9QVVJHRV9SWCAxCiNkZWZpbmUgRlRESV9TSU9fUkVTRVRfUFVSR0VfVFggMgoKLyoKICogQm1SZXF1ZXN0VHlwZTogIDAxMDAgMDAwMEIKICogYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1JFU0VUCiAqIHdWYWx1ZTogICAgICAgICBDb250cm9sIFZhbHVlIAogKiAgICAgICAgICAgICAgICAgICAwID0gUmVzZXQgU0lPCiAqICAgICAgICAgICAgICAgICAgIDEgPSBQdXJnZSBSWCBidWZmZXIKICogICAgICAgICAgICAgICAgICAgMiA9IFB1cmdlIFRYIGJ1ZmZlcgogKiB3SW5kZXg6ICAgICAgICAgUG9ydAogKiB3TGVuZ3RoOiAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgTm9uZQogKgogKiBUaGUgUmVzZXQgU0lPIGNvbW1hbmQgaGFzIHRoaXMgZWZmZWN0OgogKgogKiAgICBTZXRzIGZsb3cgY29udHJvbCBzZXQgdG8gJ25vbmUnCiAqICAgIEV2ZW50IGNoYXIgPSAkMEQKICogICAgRXZlbnQgdHJpZ2dlciA9IGRpc2FibGVkCiAqICAgIFB1cmdlIFJYIGJ1ZmZlcgogKiAgICBQdXJnZSBUWCBidWZmZXIKICogICAgQ2xlYXIgRFRSCiAqICAgIENsZWFyIFJUUwogKiAgICBiYXVkIGFuZCBkYXRhIGZvcm1hdCBub3QgcmVzZXQKICoKICogVGhlIFB1cmdlIFJYIGFuZCBUWCBidWZmZXIgY29tbWFuZHMgYWZmZWN0IG5vdGhpbmcgZXhjZXB0IHRoZSBidWZmZXJzCiAqCiAgICovCgovKiBGVERJX1NJT19TRVRfQkFVRFJBVEUgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfQkFVRFJBVEVfUkVRVUVTVF9UWVBFIDB4NDAKI2RlZmluZSBGVERJX1NJT19TRVRfQkFVRFJBVEVfUkVRVUVTVCAzCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgRlRESV9TSU9fU0VUX0JBVURSQVRFCiAqIHdWYWx1ZTogICAgICAgICBCYXVkRGl2aXNvciB2YWx1ZSAtIHNlZSBiZWxvdwogKiB3SW5kZXg6ICAgICAgICAgUG9ydAogKiB3TGVuZ3RoOiAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgTm9uZQogKiBUaGUgQmF1ZERpdmlzb3IgdmFsdWVzIGFyZSBjYWxjdWxhdGVkIGFzIGZvbGxvd3M6CiAqIC0gQmFzZUNsb2NrIGlzIGVpdGhlciAxMjAwMDAwMCBvciA0ODAwMDAwMCBkZXBlbmRpbmcgb24gdGhlIGRldmljZS4gRklYTUU6IEkgd2lzaAogKiAgIEkga25ldyBob3cgdG8gZGV0ZWN0IG9sZCBjaGlwcyB0byBzZWxlY3QgcHJvcGVyIGJhc2UgY2xvY2shCiAqIC0gQmF1ZERpdmlzb3IgaXMgYSBmaXhlZCBwb2ludCBudW1iZXIgZW5jb2RlZCBpbiBhIGZ1bm55IHdheS4KICogICAoLS1XUk9ORyBXQVkgT0YgVEhJTktJTkctLSkKICogICBCYXVkRGl2aXNvciBpcyBhIGZpeGVkIHBvaW50IG51bWJlciBlbmNvZGVkIHdpdGggZm9sbG93aW5nIGJpdCB3ZWlnaHM6CiAqICAgKC0yKSgtMSkoMTMuLjApLiBJdCBpcyBhIHJhZGljYWwgd2l0aCBhIGRlbm9taW5hdG9yIG9mIDQsIHNvIHZhbHVlcwogKiAgIGVuZCB3aXRoIDAuMCAoMDAuLi4pLCAwLjI1ICgxMC4uLiksIDAuNSAoMDEuLi4pLCBhbmQgMC43NSAoMTEuLi4pLgogKiAgICgtLVRIRSBSRUFMSVRZLS0pCiAqICAgVGhlIGJvdGgtYml0cy1zZXQgaGFzIHF1aXRlIGRpZmZlcmVudCBtZWFuaW5nIGZyb20gMC43NSAtIHRoZSBjaGlwIGRlc2lnbmVycwogKiAgIGhhdmUgZGVjaWRlZCBpdCB0byBtZWFuIDAuMTI1IGluc3RlYWQgb2YgMC43NS4KICogICBUaGlzIGluZm8gbG9va2VkIHVwIGluIEZUREkgYXBwbGljYXRpb24gbm90ZSAiRlQ4VTIzMiBERVZJQ0VTIFwgRGF0YSBSYXRlcwogKiAgIGFuZCBGbG93IENvbnRyb2wgQ29uc2lkZXJhdGlvbiBmb3IgVVNCIHRvIFJTMjMyIi4KICogLSBCYXVkRGl2aXNvciA9IChCYXNlQ2xvY2sgLyAxNikgLyBCYXVkUmF0ZSwgd2hlcmUgdGhlICg9KSBvcGVyYXRpb24gc2hvdWxkCiAqICAgYXV0b21hZ2ljYWxseSByZS1lbmNvZGUgdGhlIHJlc3VsdGluZyB2YWx1ZSB0byB0YWtlIGZyYWN0aW9ucyBpbnRvIGNvbnNpZGVyYXRpb24uCiAqIEFzIGFsbCB2YWx1ZXMgYXJlIGludGVnZXJzLCBzb21lIGJpdCB0d2lkZGxpbmcgaXMgaW4gb3JkZXI6CiAqICAgQmF1ZERpdmlzb3IgPSAoQmFzZUNsb2NrIC8gMTYgLyBCYXVkUmF0ZSkgfAogKiAgICgoKEJhc2VDbG9jayAvIDIgLyBCYXVkUmF0ZSkgJiA0KSA/IDB4NDAwMCAgICAvLyAwLjUKICogICAgOiAoKEJhc2VDbG9jayAvIDIgLyBCYXVkUmF0ZSkgJiAyKSA/IDB4ODAwMCAgLy8gMC4yNQogKiAgICA6ICgoQmFzZUNsb2NrIC8gMiAvIEJhdWRSYXRlKSAmIDEpID8gMHhjMDAwICAvLyAwLjEyNQogKiAgICA6IDApCiAqCiAqIEZvciB0aGUgRlQyMzJCTSwgYSAxN3RoIGRpdmlzb3IgYml0IHdhcyBpbnRyb2R1Y2VkIHRvIGVuY29kZSB0aGUgbXVsdGlwbGVzCiAqIG9mIDAuMTI1IG1pc3NpbmcgZnJvbSB0aGUgRlQ4VTIzMkFNLiAgQml0cyAxNiB0byAxNCBhcmUgY29kZWQgYXMgZm9sbG93cwogKiAodGhlIGZpcnN0IGZvdXIgY29kZXMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgRlQ4VTIzMkFNLCB3aGVyZSBiaXQgMTYgaXMKICogYWx3YXlzIDApOgogKiAgIDAwMCAtIGFkZCAuMDAwIHRvIGRpdmlzb3IKICogICAwMDEgLSBhZGQgLjUwMCB0byBkaXZpc29yCiAqICAgMDEwIC0gYWRkIC4yNTAgdG8gZGl2aXNvcgogKiAgIDAxMSAtIGFkZCAuMTI1IHRvIGRpdmlzb3IKICogICAxMDAgLSBhZGQgLjM3NSB0byBkaXZpc29yCiAqICAgMTAxIC0gYWRkIC42MjUgdG8gZGl2aXNvcgogKiAgIDExMCAtIGFkZCAuNzUwIHRvIGRpdmlzb3IKICogICAxMTEgLSBhZGQgLjg3NSB0byBkaXZpc29yCiAqIEJpdHMgMTUgdG8gMCBvZiB0aGUgMTctYml0IGRpdmlzb3IgYXJlIHBsYWNlZCBpbiB0aGUgdXJiIHZhbHVlLiAgQml0IDE2IGlzIAogKiBwbGFjZWQgaW4gYml0IDAgb2YgdGhlIHVyYiBpbmRleC4KICoKICogTm90ZSB0aGF0IHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBzcGVjaWFsIGNhc2VzIHRvIHN1cHBvcnQgdGhlIGhpZ2hlc3QgYmF1ZAogKiByYXRlcy4gIElmIHRoZSBjYWxjdWxhdGVkIGRpdmlzb3IgdmFsdWUgaXMgMSwgdGhpcyBuZWVkcyB0byBiZSByZXBsYWNlZCB3aXRoCiAqIDAuICBBZGRpdGlvbmFsbHkgZm9yIHRoZSBGVDIzMkJNLCBpZiB0aGUgY2FsY3VsYXRlZCBkaXZpc29yIHZhbHVlIGlzIDB4NDAwMQogKiAoMS41KSwgdGhpcyBuZWVkcyB0byBiZSByZXBsYWNlZCB3aXRoIDB4MDAwMSAoMSkgKGJ1dCB0aGlzIGRpdmlzb3IgdmFsdWUgaXMKICogbm90IHN1cHBvcnRlZCBieSB0aGUgRlQ4VTIzMkFNKS4KICovCgp0eXBlZGVmIGVudW0gewoJU0lPID0gMSwKCUZUOFUyMzJBTSA9IDIsCglGVDIzMkJNID0gMywKCUZUMjIzMkMgPSA0LAoJRlQyMzJSTCA9IDUsCn0gZnRkaV9jaGlwX3R5cGVfdDsKCnR5cGVkZWYgZW51bSB7CiBmdGRpX3Npb19iMzAwID0gMCwgCiBmdGRpX3Npb19iNjAwID0gMSwgCiBmdGRpX3Npb19iMTIwMCA9IDIsCiBmdGRpX3Npb19iMjQwMCA9IDMsCiBmdGRpX3Npb19iNDgwMCA9IDQsCiBmdGRpX3Npb19iOTYwMCA9IDUsCiBmdGRpX3Npb19iMTkyMDAgPSA2LAogZnRkaV9zaW9fYjM4NDAwID0gNywKIGZ0ZGlfc2lvX2I1NzYwMCA9IDgsCiBmdGRpX3Npb19iMTE1MjAwID0gOQp9IEZURElfU0lPX2JhdWRyYXRlX3QgOwoKLyoKICogVGhlIGZ0ZGlfOFUyMzJBTV94eE1Iel9ieXl5IGNvbnN0YW50cyBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhlIGVuY29kZWQgZGl2aXNvciB2YWx1ZXMKICogYXJlIGNhbGN1bGF0ZWQgaW50ZXJuYWxseS4KICovCgojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1JFUVVFU1QgRlRESV9TSU9fU0VUX0RBVEEKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9OT05FICgweDAgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX09ERCAoMHgxIDw8IDggKQojZGVmaW5lIEZURElfU0lPX1NFVF9EQVRBX1BBUklUWV9FVkVOICgweDIgPDwgOCApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfUEFSSVRZX01BUksgKDB4MyA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9QQVJJVFlfU1BBQ0UgKDB4NCA8PCA4ICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMSAoMHgwIDw8IDExICkKI2RlZmluZSBGVERJX1NJT19TRVRfREFUQV9TVE9QX0JJVFNfMTUgKDB4MSA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RBVEFfU1RPUF9CSVRTXzIgKDB4MiA8PCAxMSApCiNkZWZpbmUgRlRESV9TSU9fU0VUX0JSRUFLICgweDEgPDwgMTQpCi8qIEZURElfU0lPX1NFVF9EQVRBICovCgovKgogKiBCbVJlcXVlc3RUeXBlOiAgMDEwMCAwMDAwQiAKICogYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9EQVRBCiAqIHdWYWx1ZTogICAgICAgICBEYXRhIGNoYXJhY3RlcmlzdGljcyAoc2VlIGJlbG93KQogKiB3SW5kZXg6ICAgICAgICAgUG9ydAogKiB3TGVuZ3RoOiAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgTm8KICoKICogRGF0YSBjaGFyYWN0ZXJpc3RpY3MKICoKICogICBCMC4uNyAgIE51bWJlciBvZiBkYXRhIGJpdHMKICogICBCOC4uMTAgIFBhcml0eQogKiAgICAgICAgICAgMCA9IE5vbmUKICogICAgICAgICAgIDEgPSBPZGQKICogICAgICAgICAgIDIgPSBFdmVuCiAqICAgICAgICAgICAzID0gTWFyawogKiAgICAgICAgICAgNCA9IFNwYWNlCiAqICAgQjExLi4xMyBTdG9wIEJpdHMKICogICAgICAgICAgIDAgPSAxCiAqICAgICAgICAgICAxID0gMS41CiAqICAgICAgICAgICAyID0gMgogKiAgIEIxNAogKiAgICAgICAgICAgMSA9IFRYIE9OIChicmVhaykKICogICAgICAgICAgIDAgPSBUWCBPRkYgKG5vcm1hbCBzdGF0ZSkKICogICBCMTUgUmVzZXJ2ZWQKICoKICovCgoKCi8qIEZURElfU0lPX01PREVNX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfTU9ERU1fQ1RSTF9SRVFVRVNUX1RZUEUgMHg0MAojZGVmaW5lIEZURElfU0lPX1NFVF9NT0RFTV9DVFJMX1JFUVVFU1QgRlRESV9TSU9fTU9ERU1fQ1RSTAoKLyogCiAqIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwQgogKiBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX01PREVNX0NUUkwKICogd1ZhbHVlOiAgICAgICAgICBDb250cm9sVmFsdWUgKHNlZSBiZWxvdykKICogd0luZGV4OiAgICAgICAgICBQb3J0CiAqIHdMZW5ndGg6ICAgICAgICAgMAogKiBEYXRhOiAgICAgICAgICAgIE5vbmUKICoKICogTk9URTogSWYgdGhlIGRldmljZSBpcyBpbiBSVFMvQ1RTIGZsb3cgY29udHJvbCwgdGhlIFJUUyBzZXQgYnkgdGhpcwogKiBjb21tYW5kIHdpbGwgYmUgSUdOT1JFRCB3aXRob3V0IGFuIGVycm9yIGJlaW5nIHJldHVybmVkCiAqIEFsc28gLSB5b3UgY2FuIG5vdCBzZXQgRFRSIGFuZCBSVFMgd2l0aCBvbmUgY29udHJvbCBtZXNzYWdlCiAqLwoKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX01BU0sgMHgxCiNkZWZpbmUgRlRESV9TSU9fU0VUX0RUUl9ISUdIICggMSB8ICggRlRESV9TSU9fU0VUX0RUUl9NQVNLICA8PCA4KSkKI2RlZmluZSBGVERJX1NJT19TRVRfRFRSX0xPVyAgKCAwIHwgKCBGVERJX1NJT19TRVRfRFRSX01BU0sgIDw8IDgpKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTUFTSyAweDIKI2RlZmluZSBGVERJX1NJT19TRVRfUlRTX0hJR0ggKCAyIHwgKCBGVERJX1NJT19TRVRfUlRTX01BU0sgPDwgOCApKQojZGVmaW5lIEZURElfU0lPX1NFVF9SVFNfTE9XICggMCB8ICggRlRESV9TSU9fU0VUX1JUU19NQVNLIDw8IDggKSkKCi8qCiAqIENvbnRyb2xWYWx1ZQogKiBCMCAgICBEVFIgc3RhdGUKICogICAgICAgICAgMCA9IHJlc2V0CiAqICAgICAgICAgIDEgPSBzZXQKICogQjEgICAgUlRTIHN0YXRlCiAqICAgICAgICAgIDAgPSByZXNldAogKiAgICAgICAgICAxID0gc2V0CiAqIEIyLi43IFJlc2VydmVkCiAqIEI4ICAgIERUUiBzdGF0ZSBlbmFibGUKICogICAgICAgICAgMCA9IGlnbm9yZQogKiAgICAgICAgICAxID0gdXNlIERUUiBzdGF0ZQogKiBCOSAgICBSVFMgc3RhdGUgZW5hYmxlCiAqICAgICAgICAgIDAgPSBpZ25vcmUKICogICAgICAgICAgMSA9IHVzZSBSVFMgc3RhdGUKICogQjEwLi4xNSBSZXNlcnZlZAogKi8KCi8qIEZURElfU0lPX1NFVF9GTE9XX0NUUkwgKi8KI2RlZmluZSBGVERJX1NJT19TRVRfRkxPV19DVFJMX1JFUVVFU1RfVFlQRSAweDQwCiNkZWZpbmUgRlRESV9TSU9fU0VUX0ZMT1dfQ1RSTF9SRVFVRVNUIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKI2RlZmluZSBGVERJX1NJT19ESVNBQkxFX0ZMT1dfQ1RSTCAweDAgCiNkZWZpbmUgRlRESV9TSU9fUlRTX0NUU19IUyAoMHgxIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fRFRSX0RTUl9IUyAoMHgyIDw8IDgpCiNkZWZpbmUgRlRESV9TSU9fWE9OX1hPRkZfSFMgKDB4NCA8PCA4KQovKgogKiAgIEJtUmVxdWVzdFR5cGU6ICAwMTAwIDAwMDBiCiAqICAgYlJlcXVlc3Q6ICAgICAgIEZURElfU0lPX1NFVF9GTE9XX0NUUkwKICogICB3VmFsdWU6ICAgICAgICAgWG9mZi9Yb24KICogICB3SW5kZXg6ICAgICAgICAgUHJvdG9jb2wvUG9ydCAtIGhJbmRleCBpcyBwcm90b2NsIC8gbEluZGV4IGlzIHBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgMCAKICogICBEYXRhOiAgICAgICAgICAgTm9uZQogKgogKiBoSW5kZXggcHJvdG9jb2wgaXM6CiAqICAgQjAgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIFJUUy9DVFMKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjEgT3V0cHV0IGhhbmRzaGFraW5nIHVzaW5nIERUUi9EU1IKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjIgWG9uL1hvZmYgaGFuZHNoYWtpbmcKICogICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgIDEgPSBlbmFibGVkCiAqCiAqIEEgdmFsdWUgb2YgemVybyBpbiB0aGUgaEluZGV4IGZpZWxkIGRpc2FibGVzIGhhbmRzaGFraW5nCiAqCiAqIElmIFhvbi9Yb2ZmIGhhbmRzaGFraW5nIGlzIHNwZWNpZmllZCwgdGhlIGhWYWx1ZSBmaWVsZCBzaG91bGQgY29udGFpbiB0aGUgWE9GRiBjaGFyYWN0ZXIgCiAqIGFuZCB0aGUgbFZhbHVlIGZpZWxkIGNvbnRhaW5zIHRoZSBYT04gY2hhcmFjdGVyLgogKi8gIAogCi8qCiAqIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX0dFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweEMwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMTEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19HRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICAwCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBsYXRlbmN5IChvbiByZXR1cm4pCiAqLwoKLyogCiAqIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiAqCiAqIFNldCB0aGUgdGltZW91dCBpbnRlcnZhbC4gVGhlIEZUREkgY29sbGVjdHMgZGF0YSBmcm9tIHRoZSBzbGF2ZQogKiBkZXZpY2UsIHRyYW5zbWl0dGluZyBpdCB0byB0aGUgaG9zdCB3aGVuIGVpdGhlciBBKSA2MiBieXRlcyBhcmUKICogcmVjZWl2ZWQsIG9yIEIpIHRoZSB0aW1lb3V0IGludGVydmFsIGhhcyBlbGFwc2VkIGFuZCB0aGUgYnVmZmVyCiAqIGNvbnRhaW5zIGF0IGxlYXN0IDEgYnl0ZS4gIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBhIHNtYWxsIG51bWJlcgogKiBjYW4gZHJhbWF0aWNhbGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGFwcGxpY2F0aW9ucyB3aGljaCBzZW5kCiAqIHNtYWxsIHBhY2tldHMsIHNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2bXMuCiAqLwojZGVmaW5lICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUl9SRVFVRVNUIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9MQVRFTkNZX1RJTUVSX1JFUVVFU1RfVFlQRSAweDQwCgovKiAKICogIEJtUmVxdWVzdFR5cGU6ICAgMDEwMCAwMDAwYgogKiAgYlJlcXVlc3Q6ICAgICAgICBGVERJX1NJT19TRVRfTEFURU5DWV9USU1FUgogKiAgd1ZhbHVlOiAgICAgICAgICBMYXRlbmN5IChtaWxsaXNlY29uZHMpCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIExhdGVuY3kgdGltZXIKICogICBCOC4uMTUgIDAKICoKICovCgovKgogKiBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUiAKICoKICogU2V0IHRoZSBzcGVjaWFsIGV2ZW50IGNoYXJhY3RlciBmb3IgdGhlIHNwZWNpZmllZCBjb21tdW5pY2F0aW9ucyBwb3J0LgogKiBJZiB0aGUgZGV2aWNlIHNlZXMgdGhpcyBjaGFyYWN0ZXIgaXQgd2lsbCBpbW1lZGlhdGVseSByZXR1cm4gdGhlCiAqIGRhdGEgcmVhZCBzbyBmYXIgLSByYXRoZXIgdGhhbiB3YWl0IDQwbXMgb3IgdW50aWwgNjIgYnl0ZXMgYXJlIHJlYWQKICogd2hpY2ggaXMgd2hhdCBub3JtYWxseSBoYXBwZW5zLgogKi8KCgojZGVmaW5lICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUl9SRVFVRVNUIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSCiNkZWZpbmUgIEZURElfU0lPX1NFVF9FVkVOVF9DSEFSX1JFUVVFU1RfVFlQRSAweDQwCgoKLyogCiAqICBCbVJlcXVlc3RUeXBlOiAgIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICAgRlRESV9TSU9fU0VUX0VWRU5UX0NIQVIKICogIHdWYWx1ZTogICAgICAgICAgRXZlbnRDaGFyCiAqICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogIHdMZW5ndGg6ICAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgICBOb25lCiAqCiAqIHdWYWx1ZToKICogICBCMC4uNyAgIEV2ZW50IENoYXJhY3RlcgogKiAgIEI4ICAgICAgRXZlbnQgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgICAgMCA9IGRpc2FibGVkCiAqICAgICAgICAgICAgIDEgPSBlbmFibGVkCiAqICAgQjkuLjE1ICBSZXNlcnZlZAogKgogKi8KICAgICAgICAgIAovKiBGVERJX1NJT19TRVRfRVJST1JfQ0hBUiAqLwoKLyogU2V0IHRoZSBwYXJpdHkgZXJyb3IgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGZvciB0aGUgc3BlY2lmaWVkIGNvbW11bmljYXRpb25zIHBvcnQgKi8KCi8qIAogKiAgQm1SZXF1ZXN0VHlwZTogIDAxMDAgMDAwMGIKICogIGJSZXF1ZXN0OiAgICAgICBGVERJX1NJT19TRVRfRVZFTlRfQ0hBUgogKiAgd1ZhbHVlOiAgICAgICAgIEVycm9yIENoYXIKICogIHdJbmRleDogICAgICAgICBQb3J0CiAqICB3TGVuZ3RoOiAgICAgICAgMAogKiAgRGF0YTogICAgICAgICAgIE5vbmUKICoKICpFcnJvciBDaGFyCiAqICBCMC4uNyAgRXJyb3IgQ2hhcmFjdGVyCiAqICBCOCAgICAgRXJyb3IgQ2hhcmFjdGVyIFByb2Nlc3NpbmcKICogICAgICAgICAgIDAgPSBkaXNhYmxlZAogKiAgICAgICAgICAgMSA9IGVuYWJsZWQKICogIEI5Li4xNSBSZXNlcnZlZAogKgogKi8KCi8qIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMgKi8KLyogUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vZGVtIHN0YXR1cyByZWdpc3RlciAqLwoKI2RlZmluZSBGVERJX1NJT19HRVRfTU9ERU1fU1RBVFVTX1JFUVVFU1RfVFlQRSAweGMwCiNkZWZpbmUgRlRESV9TSU9fR0VUX01PREVNX1NUQVRVU19SRVFVRVNUIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKI2RlZmluZSBGVERJX1NJT19DVFNfTUFTSyAweDEwCiNkZWZpbmUgRlRESV9TSU9fRFNSX01BU0sgMHgyMAojZGVmaW5lIEZURElfU0lPX1JJX01BU0sgIDB4NDAKI2RlZmluZSBGVERJX1NJT19STFNEX01BU0sgMHg4MAovKiAKICogICBCbVJlcXVlc3RUeXBlOiAgIDExMDAgMDAwMGIKICogICBiUmVxdWVzdDogICAgICAgIEZURElfU0lPX0dFVF9NT0RFTV9TVEFUVVMKICogICB3VmFsdWU6ICAgICAgICAgIHplcm8KICogICB3SW5kZXg6ICAgICAgICAgIFBvcnQKICogICB3TGVuZ3RoOiAgICAgICAgIDEKICogICBEYXRhOiAgICAgICAgICAgIFN0YXR1cwogKiAKICogT25lIGJ5dGUgb2YgZGF0YSBpcyByZXR1cm5lZCAKICogQjAuLjMgMAogKiBCNCAgICBDVFMKICogICAgICAgICAwID0gaW5hY3RpdmUKICogICAgICAgICAxID0gYWN0aXZlCiAqIEI1ICAgIERTUgogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjYgICAgUmluZyBJbmRpY2F0b3IgKFJJKQogKiAgICAgICAgIDAgPSBpbmFjdGl2ZQogKiAgICAgICAgIDEgPSBhY3RpdmUKICogQjcgICAgUmVjZWl2ZSBMaW5lIFNpZ25hbCBEZXRlY3QgKFJMU0QpCiAqICAgICAgICAgMCA9IGluYWN0aXZlCiAqICAgICAgICAgMSA9IGFjdGl2ZSAKICovCgoKCi8qIERlc2NyaXB0b3JzIHJldHVybmVkIGJ5IHRoZSBkZXZpY2UgCiAqIAogKiAgRGV2aWNlIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJU2l6ZQlWYWx1ZQlEZXNjcmlwdGlvbgogKiAwCWJMZW5ndGgJCTEJMHgxMglTaXplIG9mIGRlc2NyaXB0b3IgaW4gYnl0ZXMKICogMQliRGVzY3JpcHRvclR5cGUJMQkweDAxCURFVklDRSBEZXNjcmlwdG9yIFR5cGUKICogMgliY2RVU0IJCTIJMHgwMTEwCVVTQiBTcGVjIFJlbGVhc2UgTnVtYmVyCiAqIDQJYkRldmljZUNsYXNzCTEJMHgwMAlDbGFzcyBDb2RlCiAqIDUJYkRldmljZVN1YkNsYXNzCTEJMHgwMAlTdWJDbGFzcyBDb2RlCiAqIDYJYkRldmljZVByb3RvY29sCTEJMHgwMAlQcm90b2NvbCBDb2RlCiAqIDcJYk1heFBhY2tldFNpemUwIDEJMHgwOAlNYXhpbXVtIHBhY2tldCBzaXplIGZvciBlbmRwb2ludCAwCiAqIDgJaWRWZW5kb3IJMgkweDA0MDMJVmVuZG9yIElECiAqIDEwCWlkUHJvZHVjdAkyCTB4ODM3MglQcm9kdWN0IElEIChGVERJX1NJT19QSUQpCiAqIDEyCWJjZERldmljZQkyCTB4MDAwMQlEZXZpY2UgcmVsZWFzZSBudW1iZXIKICogMTQJaU1hbnVmYWN0dXJlcgkxCTB4MDEJSW5kZXggb2YgbWFuLiBzdHJpbmcgZGVzYwogKiAxNQlpUHJvZHVjdAkxCTB4MDIJSW5kZXggb2YgcHJvZCBzdHJpbmcgZGVzYwogKiAxNglpU2VyaWFsTnVtYmVyCTEJMHgwMglJbmRleCBvZiBzZXJpYWwgbm1yIHN0cmluZyBkZXNjCiAqIDE3CWJOdW1Db25maWd1cmF0aW9ucyAxICAgIDB4MDEJTnVtYmVyIG9mIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb25zCiAqIAogKiBDb25maWd1cmF0aW9uIERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA5CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDAyCUNPTkZJR1VSQVRJT04gRGVzY3JpcHRvciBUeXBlCiAqIDIJd1RvdGFsTGVuZ3RoCQkyCTB4MDAyMAlUb3RhbCBsZW5ndGggb2YgZGF0YQogKiA0CWJOdW1JbnRlcmZhY2VzCQkxCTB4MDEJTnVtYmVyIG9mIGludGVyZmFjZXMgc3VwcG9ydGVkCiAqIDUJYkNvbmZpZ3VyYXRpb25WYWx1ZQkxCTB4MDEJQXJndW1lbnQgZm9yIFNldENPbmZpZ3VyYXRpb24oKSByZXEKICogNglpQ29uZmlndXJhdGlvbgkJMQkweDAyCUluZGV4IG9mIGNvbmZpZyBzdHJpbmcgZGVzY3JpcHRvcgogKiA3CWJtQXR0cmlidXRlcwkJMQkweDIwCUNvbmZpZyBjaGFyYWN0ZXJpc3RpY3MgUmVtb3RlIFdha2V1cAogKiA4CU1heFBvd2VyCQkxCTB4MUUJTWF4IHBvd2VyIGNvbnN1bXB0aW9uCiAqIAogKiBJbnRlcmZhY2UgRGVzY3JpcHRvcgogKiAKICogT2Zmc2V0CUZpZWxkCQkJU2l6ZQlWYWx1ZQogKiAwCWJMZW5ndGgJCQkxCTB4MDkJU2l6ZSBvZiBkZXNjcmlwdG9yIGluIGJ5dGVzCiAqIDEJYkRlc2NyaXB0b3JUeXBlCQkxCTB4MDQJSU5URVJGQUNFIERlc2NyaXB0b3IgVHlwZQogKiAyCWJJbnRlcmZhY2VOdW1iZXIJMQkweDAwCU51bWJlciBvZiBpbnRlcmZhY2UKICogMwliQWx0ZXJuYXRlU2V0dGluZwkxCTB4MDAJVmFsdWUgdXNlZCB0byBzZWxlY3QgYWx0ZXJuYXRlCiAqIDQJYk51bUVuZHBvaW50cwkJMQkweDAyCU51bWJlciBvZiBlbmRwb2ludHMKICogNQliSW50ZXJmYWNlQ2xhc3MJCTEJMHhGRglDbGFzcyBDb2RlCiAqIDYJYkludGVyZmFjZVN1YkNsYXNzCTEJMHhGRglTdWJjbGFzcyBDb2RlCiAqIDcJYkludGVyZmFjZVByb3RvY29sCTEJMHhGRglQcm90b2NvbCBDb2RlCiAqIDgJaUludGVyZmFjZQkJMQkweDAyCUluZGV4IG9mIGludGVyZmFjZSBzdHJpbmcgZGVzY3JpcHRpb24KICogCiAqIElOIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDgyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAKICogT1VUIEVuZHBvaW50IERlc2NyaXB0b3IKICogCiAqIE9mZnNldAlGaWVsZAkJCVNpemUJVmFsdWUKICogMAliTGVuZ3RoCQkJMQkweDA3CVNpemUgb2YgZGVzY3JpcHRvciBpbiBieXRlcwogKiAxCWJEZXNjcmlwdG9yVHlwZQkJMQkweDA1CUVORFBPSU5UIGRlc2NyaXB0b3IgdHlwZQogKiAyCWJFbmRwb2ludEFkZHJlc3MJMQkweDAyCUFkZHJlc3Mgb2YgZW5kcG9pbnQKICogMwlibUF0dHJpYnV0ZXMJCTEJMHgwMglFbmRwb2ludCBhdHRyaWJ1dGVzIC0gQnVsawogKiA0CWJOdW1FbmRwb2ludHMJCTIJMHgwMDQwCW1heGltdW0gcGFja2V0IHNpemUKICogNQliSW50ZXJ2YWwJCTEJMHgwMAlJbnRlcnZhbCBmb3IgcG9sbGluZyBlbmRwb2ludAogKiAgICAgCiAqIERBVEEgRk9STUFUCiAqIAogKiBJTiBFbmRwb2ludAogKiAKICogVGhlIGRldmljZSByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIGJ5dGVzIG9mIGRhdGEgb24gdGhpcyBlbmRwb2ludCB0byBjb250YWluIHRoZSBjdXJyZW50CiAqIHZhbHVlcyBvZiB0aGUgbW9kZW0gYW5kIGxpbmUgc3RhdHVzIHJlZ2lzdGVycy4gSW4gdGhlIGFic2VuY2Ugb2YgZGF0YSwgdGhlIGRldmljZSAKICogZ2VuZXJhdGVzIGEgbWVzc2FnZSBjb25zaXN0aW5nIG9mIHRoZXNlIHR3byBzdGF0dXMgYnl0ZXMgZXZlcnkgNDAgbXMKICogCiAqIEJ5dGUgMDogTW9kZW0gU3RhdHVzCiAqIAogKiBPZmZzZXQJRGVzY3JpcHRpb24KICogQjAJUmVzZXJ2ZWQgLSBtdXN0IGJlIDEKICogQjEJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjIJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjMJUmVzZXJ2ZWQgLSBtdXN0IGJlIDAKICogQjQJQ2xlYXIgdG8gU2VuZCAoQ1RTKQogKiBCNQlEYXRhIFNldCBSZWFkeSAoRFNSKQogKiBCNglSaW5nIEluZGljYXRvciAoUkkpCiAqIEI3CVJlY2VpdmUgTGluZSBTaWduYWwgRGV0ZWN0IChSTFNEKQogKiAKICogQnl0ZSAxOiBMaW5lIFN0YXR1cwogKiAKICogT2Zmc2V0CURlc2NyaXB0aW9uCiAqIEIwCURhdGEgUmVhZHkgKERSKQogKiBCMQlPdmVycnVuIEVycm9yIChPRSkKICogQjIJUGFyaXR5IEVycm9yIChQRSkKICogQjMJRnJhbWluZyBFcnJvciAoRkUpCiAqIEI0CUJyZWFrIEludGVycnVwdCAoQkkpCiAqIEI1CVRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgKFRIUkUpCiAqIEI2CVRyYW5zbWl0dGVyIEVtcHR5IChURU1UKQogKiBCNwlFcnJvciBpbiBSQ1ZSIEZJRk8KICogCiAqLwojZGVmaW5lIEZURElfUlMwX0NUUwkoMSA8PCA0KQojZGVmaW5lIEZURElfUlMwX0RTUgkoMSA8PCA1KQojZGVmaW5lIEZURElfUlMwX1JJCSgxIDw8IDYpCiNkZWZpbmUgRlRESV9SUzBfUkxTRAkoMSA8PCA3KQoKI2RlZmluZSBGVERJX1JTX0RSICAxCiNkZWZpbmUgRlRESV9SU19PRSAoMTw8MSkKI2RlZmluZSBGVERJX1JTX1BFICgxPDwyKQojZGVmaW5lIEZURElfUlNfRkUgKDE8PDMpCiNkZWZpbmUgRlRESV9SU19CSSAoMTw8NCkKI2RlZmluZSBGVERJX1JTX1RIUkUgKDE8PDUpCiNkZWZpbmUgRlRESV9SU19URU1UICgxPDw2KQojZGVmaW5lIEZURElfUlNfRklGTyAgKDE8PDcpCgovKgogKiBPVVQgRW5kcG9pbnQKICogCiAqIFRoaXMgZGV2aWNlIHJlc2VydmVzIHRoZSBmaXJzdCBieXRlcyBvZiBkYXRhIG9uIHRoaXMgZW5kcG9pbnQgY29udGFpbiB0aGUgbGVuZ3RoCiAqIGFuZCBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIG1lc3NhZ2UuIEZvciB0aGUgRlRESSBVU0IgU2VyaWFsIGNvbnZlcnRlciB0aGUgcG9ydCAKICogaWRlbnRpZmllciBpcyBhbHdheXMgMS4KICogCiAqIEJ5dGUgMDogTGluZSBTdGF0dXMKICogCiAqIE9mZnNldAlEZXNjcmlwdGlvbgogKiBCMAlSZXNlcnZlZCAtIG11c3QgYmUgMQogKiBCMQlSZXNlcnZlZCAtIG11c3QgYmUgMAogKiBCMi4uNwlMZW5ndGggb2YgbWVzc2FnZSAtIChub3QgaW5jbHVkaW5nIEJ5dGUgMCkKICogCiAqLwoK