LyogbGludXgvaW5jbHVkZS9hc20vYXJjaC1zM2MyNDEwL3JlZ3MtY2xvY2suaAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDMsMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MgPGxpbnV4QHNpbXRlYy5jby51az4KICoJCSAgICAgIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXTElOVVgvCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogKgogKiBTM0MyNDEwIGNsb2NrIHJlZ2lzdGVyIGRlZmluaXRpb25zCiAqCiAqICBDaGFuZ2Vsb2c6CiAqICAgIDE4LUF1Zy0yMDA0IEJlbiBEb29rcyAgICAgICAgIEFkZGVkIDI0NDAgZGVmaW5pdGlvbnMKICogICAgMDgtQXVnLTIwMDQgSGVyYmVydCBQ9nR6bCAgICAgQWRkZWQgQ0xLQ09OIGRlZmluaXRpb25zCiAqICAgIDE5LTA2LTIwMDMgIEJlbiBEb29rcyAgICAgICAgIENyZWF0ZWQgZmlsZQogKiAgICAxMi0wMy0yMDA0ICBCZW4gRG9va3MgICAgICAgICBVcGRhdGVkIGluY2x1ZGUgcHJvdGVjdGlvbgogKiAgICAyOS1TZXAtMjAwNCBCZW4gRG9va3MJICAgIEZpeGVkIHVzYWdlIGZvciBhc3NlbWJseSBpbmNsdXNpb24KICogICAgMTAtRmViLTIwMDUgQmVuIERvb2tzCSAgICBGaXhlZCBDQU1ESVZOIGFkZHJlc3MgKEd1aWxsYXVtZSBHb3VyYXQpCiAqICAgIDEwLU1hci0yMDA1IEx1Y2FzIFZpbGxhIFJlYWwgIENoYW5nZWQgUzNDMjQxMF9WQSB0byBTM0MyNFhYX1ZBCiAqLwoKI2lmbmRlZiBfX0FTTV9BUk1fUkVHU19DTE9DSwojZGVmaW5lIF9fQVNNX0FSTV9SRUdTX0NMT0NLICIkSWQ6IGNsb2NrLmgsdiAxLjQgMjAwMy8wNC8zMCAxNDo1MDo1MSBiZW4gRXhwICQiCgojZGVmaW5lIFMzQzI0MTBfQ0xLUkVHKHgpICgoeCkgKyBTM0MyNFhYX1ZBX0NMS1BXUikKCiNkZWZpbmUgUzNDMjQxMF9QTExWQUwoX20sX3AsX3MpICgoX20pIDw8IDEyIHwgKChfcCkgPDwgNCkgfCAoKF9zKSkpCgojZGVmaW5lIFMzQzI0MTBfTE9DS1RJTUUgICAgUzNDMjQxMF9DTEtSRUcoMHgwMCkKI2RlZmluZSBTM0MyNDEwX01QTExDT04JICAgIFMzQzI0MTBfQ0xLUkVHKDB4MDQpCiNkZWZpbmUgUzNDMjQxMF9VUExMQ09OCSAgICBTM0MyNDEwX0NMS1JFRygweDA4KQojZGVmaW5lIFMzQzI0MTBfQ0xLQ09OCSAgICBTM0MyNDEwX0NMS1JFRygweDBDKQojZGVmaW5lIFMzQzI0MTBfQ0xLU0xPVwkgICAgUzNDMjQxMF9DTEtSRUcoMHgxMCkKI2RlZmluZSBTM0MyNDEwX0NMS0RJVk4JICAgIFMzQzI0MTBfQ0xLUkVHKDB4MTQpCgojZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX0lETEUJICAgICAoMTw8MikKI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9QT1dFUgkgICAgICgxPDwzKQojZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX05BTkQJICAgICAoMTw8NCkKI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9MQ0RDCSAgICAgKDE8PDUpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVVNCSAkgICAgICgxPDw2KQojZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX1VTQkQJICAgICAoMTw8NykKI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9QV01UCSAgICAgKDE8PDgpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fU0RJCSAgICAgKDE8PDkpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVUFSVDAJICAgICAoMTw8MTApCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVUFSVDEJICAgICAoMTw8MTEpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fVUFSVDIJICAgICAoMTw8MTIpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fR1BJTwkgICAgICgxPDwxMykKI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9SVEMJICAgICAoMTw8MTQpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fQURDCSAgICAgKDE8PDE1KQojZGVmaW5lIFMzQzI0MTBfQ0xLQ09OX0lJQwkgICAgICgxPDwxNikKI2RlZmluZSBTM0MyNDEwX0NMS0NPTl9JSVMJICAgICAoMTw8MTcpCiNkZWZpbmUgUzNDMjQxMF9DTEtDT05fU1BJCSAgICAgKDE8PDE4KQoKI2RlZmluZSBTM0MyNDEwX1BMTENPTl9NRElWU0hJRlQgICAgIDEyCiNkZWZpbmUgUzNDMjQxMF9QTExDT05fUERJVlNISUZUICAgICA0CiNkZWZpbmUgUzNDMjQxMF9QTExDT05fU0RJVlNISUZUICAgICAwCiNkZWZpbmUgUzNDMjQxMF9QTExDT05fTURJVk1BU0sJICAgICAoKDE8PCgxKygxOS0xMikpKS0xKQojZGVmaW5lIFMzQzI0MTBfUExMQ09OX1BESVZNQVNLCSAgICAgKCgxPDw1KS0xKQojZGVmaW5lIFMzQzI0MTBfUExMQ09OX1NESVZNQVNLCSAgICAgMwoKLyogRENMS0NPTiByZWdpc3RlciBhZGRyZXNzZXMgaW4gZ3Bpby5oICovCgojZGVmaW5lIFMzQzI0MTBfRENMS0NPTl9EQ0xLMEVOCSAgICAgKDE8PDApCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX1BDTEsgICAoMDw8MSkKI2RlZmluZSBTM0MyNDEwX0RDTEtDT05fRENMSzBfVUNMSyAgICgxPDwxKQojZGVmaW5lIFMzQzI0MTBfRENMS0NPTl9EQ0xLMF9ESVYoeCkgKCgoeCkgLSAxICk8PDQpCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEswX0NNUCh4KSAoKCh4KSAtIDEgKTw8OCkKCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEsxRU4JICAgICAoMTw8MTYpCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEsxX1BDTEsgICAoMDw8MTcpCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEsxX1VDTEsgICAoMTw8MTcpCiNkZWZpbmUgUzNDMjQxMF9EQ0xLQ09OX0RDTEsxX0RJVih4KSAoKCh4KSAtIDEpIDw8MjApCgojZGVmaW5lIFMzQzI0MTBfQ0xLRElWTl9QRElWTgkgICAgICgxPDwwKQojZGVmaW5lIFMzQzI0MTBfQ0xLRElWTl9IRElWTgkgICAgICgxPDwxKQoKI2lmbmRlZiBfX0FTU0VNQkxZX18KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CnMzYzI0MTBfZ2V0X3BsbChpbnQgcGxsdmFsLCBpbnQgYmFzZWNsaykKewoJaW50IG1kaXYsIHBkaXYsIHNkaXY7CgoJbWRpdiA9IHBsbHZhbCA+PiBTM0MyNDEwX1BMTENPTl9NRElWU0hJRlQ7CglwZGl2ID0gcGxsdmFsID4+IFMzQzI0MTBfUExMQ09OX1BESVZTSElGVDsKCXNkaXYgPSBwbGx2YWwgPj4gUzNDMjQxMF9QTExDT05fU0RJVlNISUZUOwoKCW1kaXYgJj0gUzNDMjQxMF9QTExDT05fTURJVk1BU0s7CglwZGl2ICY9IFMzQzI0MTBfUExMQ09OX1BESVZNQVNLOwoJc2RpdiAmPSBTM0MyNDEwX1BMTENPTl9TRElWTUFTSzsKCglyZXR1cm4gKGJhc2VjbGsgKiAobWRpdiArIDgpKSAvICgocGRpdiArIDIpIDw8IHNkaXYpOwp9CgojZW5kaWYgLyogX19BU1NFTUJMWV9fICovCgojaWZkZWYgQ09ORklHX0NQVV9TM0MyNDQwCgovKiBleHRyYSByZWdpc3RlcnMgKi8KI2RlZmluZSBTM0MyNDQwX0NBTURJVk4JICAgIFMzQzI0MTBfQ0xLUkVHKDB4MTgpCgojZGVmaW5lIFMzQzI0NDBfQ0xLQ09OX0NBTUVSQSAgICAgICAgKDE8PDE5KQojZGVmaW5lIFMzQzI0NDBfQ0xLQ09OX0FDOTcgICAgICAgICAgKDE8PDIwKQoKI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fUERJVk4JICAgICAoMTw8MCkKI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fTUFTSyAgICgzPDwxKQojZGVmaW5lIFMzQzI0NDBfQ0xLRElWTl9IRElWTl8xICAgICAgKDA8PDEpCiNkZWZpbmUgUzNDMjQ0MF9DTEtESVZOX0hESVZOXzIgICAgICAoMTw8MSkKI2RlZmluZSBTM0MyNDQwX0NMS0RJVk5fSERJVk5fNF84ICAgICgyPDwxKQojZGVmaW5lIFMzQzI0NDBfQ0xLRElWTl9IRElWTl8zXzYgICAgKDM8PDEpCiNkZWZpbmUgUzNDMjQ0MF9DTEtESVZOX1VDTEsgICAgICAgICAoMTw8MykKCiNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0NBTUNMS19NQVNLICAoMHhmPDwwKQojZGVmaW5lIFMzQzI0NDBfQ0FNRElWTl9DQU1DTEtfU0VMICAgKDE8PDQpCiNkZWZpbmUgUzNDMjQ0MF9DQU1ESVZOX0hDTEszX0hBTEYgICAoMTw8OCkKI2RlZmluZSBTM0MyNDQwX0NBTURJVk5fSENMSzRfSEFMRiAgICgxPDw5KQojZGVmaW5lIFMzQzI0NDBfQ0FNRElWTl9EVlNFTiAgICAgICAgKDE8PDEyKQoKI2VuZGlmIC8qIENPTkZJR19DUFVfUzNDMjQ0MCAqLwoKCiNlbmRpZiAvKiBfX0FTTV9BUk1fUkVHU19DTE9DSyAqLwo=