LyogJFhGcmVlODYkICovIC8qIC0qLSBtb2RlOiBjOyBjLWJhc2ljLW9mZnNldDogMyAtKi0gKi8KLyoKICogQ29weXJpZ2h0IDIwMDAgR2FyZXRoIEh1Z2hlcwogKiBBbGwgUmlnaHRzIFJlc2VydmVkLgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAogKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCiAqIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCiAqIEdBUkVUSCBIVUdIRVMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSCiAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCiAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwoKLyoKICogQXV0aG9yczoKICoJR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPgogKglMZWlmIERlbGdhc3MgPGxkZWxnYXNzQHJldGluYWxidXJuLm5ldD4KICoJSm9z6SBGb25zZWNhIDxqX3JfZm9uc2VjYUB5YWhvby5jby51az4KICovCgojaWZuZGVmIF9fTUFDSDY0X1JFR19IX18KI2RlZmluZSBfX01BQ0g2NF9SRUdfSF9fCgovKgogKiBOb3Qgc3VyZSBob3cgdGhpcyBjb21wYXJlcyB3aXRoIHRoZSBHMjAwLCBidXQgdGhlIFJhZ2UgUHJvIGhhcyB0d28KICogYmFua3Mgb2YgcmVnaXN0ZXJzLCB3aXRoIGJhbmsgMCBhdCAoYXBlcnR1cmUgYmFzZSArIG1lbW1hcCBvZmZzZXQgLSAxS0IpCiAqIGFuZCBiYW5rIDEgYXQgKGFwZXJ0dXJlIGJhc2UgKyBtZW1tYXAgb2Zmc2V0IC0gMktCKS4gIEJ1dCwgdG8gc2VuZCB0aGVtCiAqIHZpYSBETUEsIHdlIG5lZWQgdG8gZW5jb2RlIHRoZW0gYXMgbWVtb3J5IG1hcCBzZWxlY3QgcmF0aGVyIHRoYW4gcGh5c2ljYWwKICogb2Zmc2V0cy4KICovCiNkZWZpbmUgRFdNUkVHMAkJMHgwNDAwCiNkZWZpbmUgRFdNUkVHMF9FTkQJMHgwN2ZmCiNkZWZpbmUgRFdNUkVHMQkJMHgwMDAwCiNkZWZpbmUgRFdNUkVHMV9FTkQJMHgwM2ZmCgojZGVmaW5lIElTUkVHMChyKQkoICggKHIpID49IERXTVJFRzAgKSAmJiAoIChyKSA8PSBEV01SRUcwX0VORCApICkKI2RlZmluZSBBRFJJTkRFWDAocikJKCAoKHIpIC0gRFdNUkVHMCkgPj4gMiApCiNkZWZpbmUgQURSSU5ERVgxKHIpCSggKCAoKHIpIC0gRFdNUkVHMSkgPj4gMiApIHwgMHgwMTAwICkKI2RlZmluZSBBRFJJTkRFWChyKQkoIElTUkVHMChyKSA/IEFEUklOREVYMChyKSA6IEFEUklOREVYMShyKSApCgojZGVmaW5lIE1NUkVHMAkJMHgwMDAwCiNkZWZpbmUgTU1SRUcwX0VORAkweDAwZmYKCiNkZWZpbmUgSVNNTVJFRzAocikJKCAoIChyKSA+PSBNTVJFRzAgKSAmJiAoIChyKSA8PSBNTVJFRzBfRU5EICkgKQojZGVmaW5lIE1NU0VMRUNUMChyKQkoICgocik8PDIpICsgRFdNUkVHMCApCiNkZWZpbmUgTU1TRUxFQ1QxKHIpCSggKCAoKChyKSAmIDB4ZmYpPDwyKSArIERXTVJFRzEgKSApCiNkZWZpbmUgTU1TRUxFQ1QocikJKCBJU01NUkVHMChyKSA/IE1NU0VMRUNUMChyKSA6IE1NU0VMRUNUMShyKSApCgovKiBGSVhNRTogSWYgcmVnaXN0ZXIgcmVhZHMgYXJlIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFjY291bnQgZm9yIGVuZGlhbmVzcyBoZXJlICovCiNkZWZpbmUgTUFDSDY0X0JBU0UocmVnKQkoKENBUkQzMikobW1lc2EtPm1hY2g2NFNjcmVlbi0+bW1pby5tYXApKQojZGVmaW5lIE1BQ0g2NF9BRERSKHJlZykJKE1BQ0g2NF9CQVNFKHJlZykgKyByZWcpCgojZGVmaW5lIE1BQ0g2NF9ERVJFRihyZWcpCSooX192b2xhdGlsZV9fIENBUkQzMiAqKU1BQ0g2NF9BRERSKHJlZykKI2RlZmluZSBNQUNINjRfUkVBRChyZWcpCU1BQ0g2NF9ERVJFRihyZWcpCgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBSZWdpc3RlcnMKICovCgojZGVmaW5lIE1BQ0g2NF9BTFBIQV9UU1RfQ05UTAkJCTB4MDU1MAojCWRlZmluZSBNQUNINjRfQUxQSEFfVEVTVF9FTgkJCSgxIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9URVNUX01BU0sJCQkoNyA8PCA0KQojCWRlZmluZSBNQUNINjRfQUxQSEFfVEVTVF9ORVZFUgkJCSgwIDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9URVNUX0xFU1MJCQkoMSA8PCA0KQojCWRlZmluZSBNQUNINjRfQUxQSEFfVEVTVF9MRVFVQUwJCQkoMiA8PCA0KQojCWRlZmluZSBNQUNINjRfQUxQSEFfVEVTVF9FUVVBTAkJCSgzIDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9URVNUX0dFUVVBTAkJCSg0IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9URVNUX0dSRUFURVIJCSg1IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9URVNUX05PVEVRVUFMCQkoNiA8PCA0KQojCWRlZmluZSBNQUNINjRfQUxQSEFfVEVTVF9BTFdBWVMJCQkoNyA8PCA0KQojCWRlZmluZSBNQUNINjRfQUxQSEFfTU9EX01TQgkJCSgxIDw8IDcpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9EU1RfTUFTSwkJCSg3IDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9EU1RfWkVSTwkJCSgwIDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9EU1RfT05FCQkJKDEgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0RTVF9TUkNBTFBIQQkJKDQgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0RTVF9JTlZTUkNBTFBIQQkJKDUgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0RTVF9EU1RBTFBIQQkJKDYgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0RTVF9JTlZEU1RBTFBIQQkJKDcgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX1RTVF9TUkNfVEVYRUwJCSgwIDw8IDEyKQojCWRlZmluZSBNQUNINjRfQUxQSEFfVFNUX1NSQ19TUkNBTFBIQQkJKDEgPDwgMTIpCiMJZGVmaW5lIE1BQ0g2NF9SRUZfQUxQSEFfTUFTSwkJCSgweGZmIDw8IDE2KQojCWRlZmluZSBNQUNINjRfUkVGX0FMUEhBX1NISUZUCQkJMTYKIwlkZWZpbmUgTUFDSDY0X0NPTVBPU0lURV9TSEFET1cJCQkoMSA8PCAzMCkKIwlkZWZpbmUgTUFDSDY0X1NQRUNVTEFSX0xJR0hUX0VOCQkJKDEgPDwgMzEpCgojZGVmaW5lIE1BQ0g2NF9CVVNfQ05UTAkJCQkweDA0YTAKIwlkZWZpbmUgTUFDSDY0X0JVU19NU1RSX1JFU0VUCQkJKDEgPDwgMSkKIwlkZWZpbmUgTUFDSDY0X0JVU19GTFVTSF9CVUYJCQkoMSA8PCAyKQojCWRlZmluZSBNQUNINjRfQlVTX01BU1RFUl9ESVMJCQkoMSA8PCA2KQojCWRlZmluZSBNQUNINjRfQlVTX0VYVF9SRUdfRU4JCQkoMSA8PCAyNykKCiNkZWZpbmUgTUFDSDY0X0NPTVBPU0lURV9TSEFET1dfSUQJCTB4MDc5OAoKI2RlZmluZSBNQUNINjRfQ0xSX0NNUF9DTFIJCQkweDA3MDAKI2RlZmluZSBNQUNINjRfQ0xSX0NNUF9DTlRMCQkJMHgwNzA4CiNkZWZpbmUgTUFDSDY0X0NMUl9DTVBfTUFTSwkJCTB4MDcwNAoKI2RlZmluZSBNQUNINjRfRFBfQktHRF9DTFIJCQkweDA2YzAKI2RlZmluZSBNQUNINjRfRFBfRk9HX0NMUgkJCTB4MDZjNAojZGVmaW5lIE1BQ0g2NF9EUF9GR1JEX0JLR0RfQ0xSCQkJMHgwNmUwCiNkZWZpbmUgTUFDSDY0X0RQX0ZSR0RfQ0xSCQkJMHgwNmM0CiNkZWZpbmUgTUFDSDY0X0RQX0ZHUkRfQ0xSX01JWAkJCTB4MDZkYwoKI2RlZmluZSBNQUNINjRfRFBfTUlYCQkJCTB4MDZkNAojCWRlZmluZSBCS0dEX01JWF9OT1RfRAkJCQkoMCA8PCAwKQojCWRlZmluZSBCS0dEX01JWF9aRVJPCQkJCSgxIDw8IDApCiMJZGVmaW5lIEJLR0RfTUlYX09ORQkJCQkoMiA8PCAwKQojCWRlZmluZSBNQUNINjRfQktHRF9NSVhfRAkJCSgzIDw8IDApCiMJZGVmaW5lIEJLR0RfTUlYX05PVF9TCQkJCSg0IDw8IDApCiMJZGVmaW5lIEJLR0RfTUlYX0RfWE9SX1MJCQkJKDUgPDwgMCkKIwlkZWZpbmUgQktHRF9NSVhfTk9UX0RfWE9SX1MJCQkoNiA8PCAwKQojCWRlZmluZSBNQUNINjRfQktHRF9NSVhfUwkJCSg3IDw8IDApCiMJZGVmaW5lIEJLR0RfTUlYX05PVF9EX09SX05PVF9TCQkJKDggPDwgMCkKIwlkZWZpbmUgQktHRF9NSVhfRF9PUl9OT1RfUwkJCSg5IDw8IDApCiMJZGVmaW5lIEJLR0RfTUlYX05PVF9EX09SX1MJCQkoMTAgPDwgMCkKIwlkZWZpbmUgQktHRF9NSVhfRF9PUl9TCQkJCSgxMSA8PCAwKQojCWRlZmluZSBCS0dEX01JWF9EX0FORF9TCQkJCSgxMiA8PCAwKQojCWRlZmluZSBCS0dEX01JWF9OT1RfRF9BTkRfUwkJCSgxMyA8PCAwKQojCWRlZmluZSBCS0dEX01JWF9EX0FORF9OT1RfUwkJCSgxNCA8PCAwKQojCWRlZmluZSBCS0dEX01JWF9OT1RfRF9BTkRfTk9UX1MJCQkoMTUgPDwgMCkKIwlkZWZpbmUgQktHRF9NSVhfRF9QTFVTX1NfRElWMgkJCSgyMyA8PCAwKQojCWRlZmluZSBGUkdEX01JWF9OT1RfRAkJCQkoMCA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfWkVSTwkJCQkoMSA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfT05FCQkJCSgyIDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9ECQkJCSgzIDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9OT1RfUwkJCQkoNCA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfRF9YT1JfUwkJCQkoNSA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfTk9UX0RfWE9SX1MJCQkoNiA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X0ZSR0RfTUlYX1MJCQkoNyA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfTk9UX0RfT1JfTk9UX1MJCQkoOCA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfRF9PUl9OT1RfUwkJCSg5IDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9OT1RfRF9PUl9TCQkJKDEwIDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9EX09SX1MJCQkJKDExIDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9EX0FORF9TCQkJCSgxMiA8PCAxNikKIwlkZWZpbmUgRlJHRF9NSVhfTk9UX0RfQU5EX1MJCQkoMTMgPDwgMTYpCiMJZGVmaW5lIEZSR0RfTUlYX0RfQU5EX05PVF9TCQkJKDE0IDw8IDE2KQojCWRlZmluZSBGUkdEX01JWF9OT1RfRF9BTkRfTk9UX1MJCQkoMTUgPDwgMTYpCiMJZGVmaW5lIEZSR0RfTUlYX0RfUExVU19TX0RJVjIJCQkoMjMgPDwgMTYpCgojZGVmaW5lIE1BQ0g2NF9EUF9QSVhfV0lEVEgJCQkweDA2ZDAKIwlkZWZpbmUgTUFDSDY0X0NPTVBPU0lURV9QSVhfV0lEVEhfTUFTSwkJKDB4ZiA8PCA0KQojCWRlZmluZSBNQUNINjRfSE9TVF9UUklQTEVfRU5BQkxFCQkoMSA8PCAxMykKIwlkZWZpbmUgTUFDSDY0X0JZVEVfT1JERVJfTVNCX1RPX0xTQgkJKDAgPDwgMjQpCiMJZGVmaW5lIE1BQ0g2NF9CWVRFX09SREVSX0xTQl9UT19NU0IJCSgxIDw8IDI0KQojCWRlZmluZSBNQUNINjRfU0NBTEVfUElYX1dJRFRIX01BU0sJCSgweGYgPDwgMjgpCgojZGVmaW5lIE1BQ0g2NF9EUF9TUkMJCQkJMHgwNmQ4CiMJZGVmaW5lIE1BQ0g2NF9CS0dEX1NSQ19CS0dEX0NMUgkJCSgwIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9CS0dEX1NSQ19GUkdEX0NMUgkJCSgxIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9CS0dEX1NSQ19IT1NUCQkJKDIgPDwgMCkKIwlkZWZpbmUgTUFDSDY0X0JLR0RfU1JDX0JMSVQJCQkoMyA8PCAwKQojCWRlZmluZSBNQUNINjRfQktHRF9TUkNfUEFUVEVSTgkJCSg0IDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9CS0dEX1NSQ18zRAkJCSg1IDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9GUkdEX1NSQ19CS0dEX0NMUgkJCSgwIDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9GUkdEX1NSQ19GUkdEX0NMUgkJCSgxIDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9GUkdEX1NSQ19IT1NUCQkJKDIgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0ZSR0RfU1JDX0JMSVQJCQkoMyA8PCA4KQojCWRlZmluZSBNQUNINjRfRlJHRF9TUkNfUEFUVEVSTgkJCSg0IDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9GUkdEX1NSQ18zRAkJCSg1IDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9NT05PX1NSQ19PTkUJCQkoMCA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X01PTk9fU1JDX1BBVFRFUk4JCQkoMSA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X01PTk9fU1JDX0hPU1QJCQkoMiA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X01PTk9fU1JDX0JMSVQJCQkoMyA8PCAxNikKCiNkZWZpbmUgTUFDSDY0X0RQX1dSSVRFX01BU0sJCQkweDA2YzgKCiNkZWZpbmUgTUFDSDY0X0RTVF9DTlRMCQkJCTB4MDUzMAojCWRlZmluZSBNQUNINjRfRFNUX1hfUklHSFRfVE9fTEVGVAkJKDAgPDwgMCkKIwlkZWZpbmUgTUFDSDY0X0RTVF9YX0xFRlRfVE9fUklHSFQJCSgxIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9EU1RfWV9CT1RUT01fVE9fVE9QCQkoMCA8PCAxKQojCWRlZmluZSBNQUNINjRfRFNUX1lfVE9QX1RPX0JPVFRPTQkJKDEgPDwgMSkKIwlkZWZpbmUgTUFDSDY0X0RTVF9YX01BSk9SCQkJKDAgPDwgMikKIwlkZWZpbmUgTUFDSDY0X0RTVF9ZX01BSk9SCQkJKDEgPDwgMikKIwlkZWZpbmUgTUFDSDY0X0RTVF9YX1RJTEUJCQkoMSA8PCAzKQojCWRlZmluZSBNQUNINjRfRFNUX1lfVElMRQkJCSgxIDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9EU1RfTEFTVF9QRUwJCQkoMSA8PCA1KQojCWRlZmluZSBNQUNINjRfRFNUX1BPTFlHT05fRU5BQkxFCQkoMSA8PCA2KQojCWRlZmluZSBNQUNINjRfRFNUXzI0X1JPVEFUSU9OX0VOQUJMRQkJKDEgPDwgNykKCiNkZWZpbmUgTUFDSDY0X0RTVF9IRUlHSFRfV0lEVEgJCQkweDA1MTgKI2RlZmluZSBNQUNINjRfRFNUX09GRl9QSVRDSAkJCTB4MDUwMAojZGVmaW5lIE1BQ0g2NF9EU1RfV0lEVEhfSEVJR0hUCQkJMHgwNmVjCiNkZWZpbmUgTUFDSDY0X0RTVF9YX1kJCQkJMHgwNmU4CiNkZWZpbmUgTUFDSDY0X0RTVF9ZX1gJCQkJMHgwNTBjCgojZGVmaW5lIE1BQ0g2NF9GSUZPX1NUQVQJCQkweDA3MTAKIwlkZWZpbmUgTUFDSDY0X0ZJRk9fU0xPVF9NQVNLCQkJMHgwMDAwZmZmZgojCWRlZmluZSBNQUNINjRfRklGT19FUlIJCQkJKDEgPDwgMzEpCgojZGVmaW5lIE1BQ0g2NF9HRU5fVEVTVF9DTlRMCQkJMHgwNGQwCiNkZWZpbmUgTUFDSDY0X0dVSV9DTURGSUZPX0RFQlVHCQkweDAxNzAKI2RlZmluZSBNQUNINjRfR1VJX0NNREZJRk9fREFUQQkJCTB4MDE3NAojZGVmaW5lIE1BQ0g2NF9HVUlfQ05UTAkJCQkweDAxNzgKI2RlZmluZSBNQUNINjRfR1VJX1NUQVQJCQkJMHgwNzM4CiMJZGVmaW5lIE1BQ0g2NF9HVUlfQUNUSVZFCQkJKDEgPDwgMCkKI2RlZmluZSBNQUNINjRfR1VJX1RSQUpfQ05UTAkJCTB4MDczMAoKI2RlZmluZSBNQUNINjRfSE9TVF9DTlRMCQkJMHgwNjQwCiNkZWZpbmUgTUFDSDY0X0hPU1RfREFUQTAJCQkweDA2MDAKI2RlZmluZSBNQUNINjRfSFdfREVCVUcJCQkJMHgwNDdjCgojZGVmaW5lIE1BQ0g2NF9PTkVfT1ZFUl9BUkVBCQkJMHgwMjljCiNkZWZpbmUgTUFDSDY0X09ORV9PVkVSX0FSRUFfVUMJCQkweDAzMDAKCiNkZWZpbmUgTUFDSDY0X1BBVF9SRUcwCQkJCTB4MDY4MAojZGVmaW5lIE1BQ0g2NF9QQVRfUkVHMQkJCQkweDA2ODQKCiNkZWZpbmUgTUFDSDY0X1NDX0xFRlRfUklHSFQJCQkweDA2YTgKI2RlZmluZSBNQUNINjRfU0NfVE9QX0JPVFRPTQkJCTB4MDZiNAojZGVmaW5lIE1BQ0g2NF9TQ0FMRV8zRF9DTlRMCQkJMHgwNWZjCiMJZGVmaW5lIE1BQ0g2NF9TQ0FMRV9QSVhfRVhQQU5EX1pFUk9fRVhURU5ECSgwIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9TQ0FMRV9QSVhfRVhQQU5EX0RZTkFNSUNfUkFOR0UJKDEgPDwgMCkKIwlkZWZpbmUgTUFDSDY0X1NDQUxFX0RJVEhFUl9FUlJPUl9ESUZGVVNFCSgwIDw8IDEpCiMJZGVmaW5lIE1BQ0g2NF9TQ0FMRV9ESVRIRVJfMkRfVEFCTEUJCSgxIDw8IDEpCiMJZGVmaW5lIE1BQ0g2NF9ESVRIRVJfRU4JCQkJKDEgPDwgMikKIwlkZWZpbmUgTUFDSDY0X0RJVEhFUl9JTklUX0NVUlJFTlQJCShPIDw8IDMpCiMJZGVmaW5lIE1BQ0g2NF9ESVRIRVJfSU5JVF9SRVNFVAkJCSgxIDw8IDMpCiMJZGVmaW5lIE1BQ0g2NF9ST1VORF9FTgkJCQkoMSA8PCA0KQojCWRlZmluZSBNQUNINjRfVEVYX0NBQ0hFX0RJUwkJCSgxIDw8IDUpCiMJZGVmaW5lIE1BQ0g2NF9TQ0FMRV8zRF9GQ05fTUFTSwkJCSgzIDw8IDYpCiMJZGVmaW5lIE1BQ0g2NF9TQ0FMRV8zRF9GQ05fTk9QCQkJKDAgPDwgNikKIwlkZWZpbmUgTUFDSDY0X1NDQUxFXzNEX0ZDTl9TQ0FMRQkJKDEgPDwgNikKIwlkZWZpbmUgTUFDSDY0X1NDQUxFXzNEX0ZDTl9URVhUVVJFCQkoMiA8PCA2KQojCWRlZmluZSBNQUNINjRfU0NBTEVfM0RfRkNOX1NIQURFCQkoMyA8PCA2KQojCWRlZmluZSBNQUNINjRfVEVYVFVSRV9ESVNBQkxFCQkJKDEgPDwgNikKIwlkZWZpbmUgTUFDSDY0X0VER0VfQU5USV9BTElBUwkJCSgxIDw8IDgpCiMJZGVmaW5lIE1BQ0g2NF9URVhfQ0FDSEVfU1BMSVQJCQkoMSA8PCA5KQojCWRlZmluZSBNQUNINjRfQVBQTEVfWVVWX01PREUJCQkoMSA8PCAxMCkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0ZPR19FTl9NQVNLCQkJKDMgPDwgMTEpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9GT0dfRElTCQkJKDAgPDwgMTEpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9GT0dfRU5fQUxQSEEJCSgxIDw8IDExKQojCWRlZmluZSBNQUNINjRfQUxQSEFfRk9HX0VOX0ZPRwkJCSgyIDw8IDExKQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU0FUCQkJKDEgPDwgMTMpCiMJZGVmaW5lIE1BQ0g2NF9SRURfRElUSEVSX01BWAkJCSgxIDw8IDE0KQojCWRlZmluZSBNQUNINjRfU0lHTkVEX0RTVF9DTEFNUAkJCSgxIDw8IDE1KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU1JDX01BU0sJCSg3IDw8IDE2KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU1JDX1pFUk8JCSgwIDw8IDE2KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU1JDX09ORQkJKDEgPDwgMTYpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9TUkNfRFNUQ09MT1IJCSgyIDw8IDE2KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU1JDX0lOVkRTVENPTE9SCSgzIDw8IDE2KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfU1JDX1NSQ0FMUEhBCQkoNCA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0JMRU5EX1NSQ19JTlZTUkNBTFBIQQkoNSA8PCAxNikKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0JMRU5EX1NSQ19EU1RBTFBIQQkJKDYgPDwgMTYpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9TUkNfSU5WRFNUQUxQSEEJKDcgPDwgMTYpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9EU1RfTUFTSwkJKDcgPDwgMTkpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9EU1RfWkVSTwkJKDAgPDwgMTkpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9EU1RfT05FCQkoMSA8PCAxOSkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0JMRU5EX0RTVF9TUkNDT0xPUgkJKDIgPDwgMTkpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9EU1RfSU5WU1JDQ09MT1IJKDMgPDwgMTkpCiMJZGVmaW5lIE1BQ0g2NF9BTFBIQV9CTEVORF9EU1RfU1JDQUxQSEEJCSg0IDw8IDE5KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfRFNUX0lOVlNSQ0FMUEhBCSg1IDw8IDE5KQojCWRlZmluZSBNQUNINjRfQUxQSEFfQkxFTkRfRFNUX0RTVEFMUEhBCQkoNiA8PCAxOSkKIwlkZWZpbmUgTUFDSDY0X0FMUEhBX0JMRU5EX0RTVF9JTlZEU1RBTFBIQQkoNyA8PCAxOSkKIwlkZWZpbmUgTUFDSDY0X1RFWF9MSUdIVF9GQ05fTUFTSwkJKDMgPDwgMjIpCiMJZGVmaW5lIE1BQ0g2NF9URVhfTElHSFRfRkNOX1JFUExBQ0UJCSgwIDw8IDIyKQojCWRlZmluZSBNQUNINjRfVEVYX0xJR0hUX0ZDTl9NT0RVTEFURQkJKDEgPDwgMjIpCiMJZGVmaW5lIE1BQ0g2NF9URVhfTElHSFRfRkNOX0FMUEhBX0RFQ0FMCQkoMiA8PCAyMikKIwlkZWZpbmUgTUFDSDY0X01JUF9NQVBfRElTQUJMRQkJCSgxIDw8IDI0KQojCWRlZmluZSBNQUNINjRfQklMSU5FQVJfVEVYX0VOCQkJKDEgPDwgMjUpCiMJZGVmaW5lIE1BQ0g2NF9URVhfQkxFTkRfRkNOX01BU0sJCSgzIDw8IDI2KQojCWRlZmluZSBNQUNINjRfVEVYX0JMRU5EX0ZDTl9ORUFSRVNUCQkoMCA8PCAyNikKIwlkZWZpbmUgTUFDSDY0X1RFWF9CTEVORF9GQ05fTElORUFSCQkoMiA8PCAyNikKIwlkZWZpbmUgTUFDSDY0X1RFWF9CTEVORF9GQ05fVFJJTElORUFSCQkoMyA8PCAyNikKIwlkZWZpbmUgTUFDSDY0X1RFWF9BTUFTS19BRU4JCQkoMSA8PCAyOCkKIwlkZWZpbmUgTUFDSDY0X1RFWF9BTUFTS19CTEVORF9FREdFCQkoMSA8PCAyOSkKIwlkZWZpbmUgTUFDSDY0X1RFWF9NQVBfQUVOCQkJKDEgPDwgMzApCiMJZGVmaW5lIE1BQ0g2NF9TUkNfM0RfSE9TVF9GSUZPCQkJKDEgPDwgMzEpCiNkZWZpbmUgTUFDSDY0X1NDUkFUQ0hfUkVHMAkJCTB4MDQ4MAojZGVmaW5lIE1BQ0g2NF9TQ1JBVENIX1JFRzEJCQkweDA0ODQKI2RlZmluZSBNQUNINjRfU0VDT05EQVJZX1RFWF9PRkYJCTB4MDc3OAojZGVmaW5lIE1BQ0g2NF9TRVRVUF9DTlRMCQkJMHgwMzA0CiMJZGVmaW5lIE1BQ0g2NF9ET05UX1NUQVJUX1RSSQkJCSgxIDw8IDApCiMJZGVmaW5lIE1BQ0g2NF9ET05UX1NUQVJUX0FOWQkJCSgxIDw8IDIpCiMJZGVmaW5lIE1BQ0g2NF9GTEFUX1NIQURFX01BU0sJCQkoMyA8PCAzKQojCWRlZmluZSBNQUNINjRfRkxBVF9TSEFERV9PRkYJCQkoMCA8PCAzKQojCWRlZmluZSBNQUNINjRfRkxBVF9TSEFERV9WRVJURVhfMQkJKDEgPDwgMykKIwlkZWZpbmUgTUFDSDY0X0ZMQVRfU0hBREVfVkVSVEVYXzIJCSgyIDw8IDMpCiMJZGVmaW5lIE1BQ0g2NF9GTEFUX1NIQURFX1ZFUlRFWF8zCQkoMyA8PCAzKQojCWRlZmluZSBNQUNINjRfU09MSURfTU9ERV9PRkYJCQkoMCA8PCA1KQojCWRlZmluZSBNQUNINjRfU09MSURfTU9ERV9PTgkJCSgxIDw8IDUpCiMJZGVmaW5lIE1BQ0g2NF9MT0dfTUFYX0lOQ19BREoJCQkoMSA8PCA2KQojCWRlZmluZSBNQUNINjRfU0VUX1VQX0NPTlRJTlVFCQkJKDEgPDwgMzEpCiNkZWZpbmUgTUFDSDY0X1NSQ19DTlRMCQkJCTB4MDViNAojZGVmaW5lIE1BQ0g2NF9TUkNfSEVJR0hUMQkJCTB4MDU5NAojZGVmaW5lIE1BQ0g2NF9TUkNfSEVJR0hUMgkJCTB4MDVhYwojZGVmaW5lIE1BQ0g2NF9TUkNfSEVJR0hUMV9XSURUSDEJCTB4MDU5OAojZGVmaW5lIE1BQ0g2NF9TUkNfSEVJR0hUMl9XSURUSDIJCTB4MDViMAojZGVmaW5lIE1BQ0g2NF9TUkNfT0ZGX1BJVENICQkJMHgwNTgwCiNkZWZpbmUgTUFDSDY0X1NSQ19XSURUSDEJCQkweDA1OTAKI2RlZmluZSBNQUNINjRfU1JDX1lfWAkJCQkweDA1OGMKCiNkZWZpbmUgTUFDSDY0X1RFWF8wX09GRgkJCTB4MDVjMAojZGVmaW5lIE1BQ0g2NF9URVhfQ05UTAkJCQkweDA3NzQKIwlkZWZpbmUgTUFDSDY0X0xPRF9CSUFTX1NISUZUCQkJMAojCWRlZmluZSBNQUNINjRfTE9EX0JJQVNfTUFTSwkJCSgweGYgPDwgMCkKIwlkZWZpbmUgTUFDSDY0X0NPTVBfRkFDVE9SX1NISUZUCQkJNAojCWRlZmluZSBNQUNINjRfQ09NUF9GQUNUT1JfTUFTSwkJCSgweGYgPDwgNCkKIwlkZWZpbmUgTUFDSDY0X1RFWFRVUkVfQ09NUE9TSVRFCQkJKDEgPDwgOCkKIwlkZWZpbmUgTUFDSDY0X0NPTVBfQ09NQklORV9CTEVORAkJKDAgPDwgOSkKIwlkZWZpbmUgTUFDSDY0X0NPTVBfQ09NQklORV9NT0RVTEFURQkJKDEgPDwgOSkKIwlkZWZpbmUgTUFDSDY0X0NPTVBfQkxFTkRfTkVBUkVTVAkJKDAgPDwgMTEpCiMJZGVmaW5lIE1BQ0g2NF9DT01QX0JMRU5EX0JJTElORUFSCQkoMSA8PCAxMSkKIwlkZWZpbmUgTUFDSDY0X0NPTVBfRklMVEVSX05FQVJFU1QJCSgwIDw8IDEyKQojCWRlZmluZSBNQUNINjRfQ09NUF9GSUxURVJfQklMSU5FQVIJCSgxIDw8IDEyKQojCWRlZmluZSBNQUNINjRfQ09NUF9BTFBIQQkJCSgxIDw8IDEzKQojCWRlZmluZSBNQUNINjRfVEVYVFVSRV9USUxJTkcJCQkoMSA8PCAxNCkKIwlkZWZpbmUgTUFDSDY0X0NPTVBPU0lURV9URVhfVElMSU5HCQkoMSA8PCAxNSkKIwlkZWZpbmUgTUFDSDY0X1RFWF9DT0xMSVNJT05fRElTQUJMRQkJKDEgPDwgMTYpCiMJZGVmaW5lIE1BQ0g2NF9URVhUVVJFX0NMQU1QX1MJCQkoMSA8PCAxNykKIwlkZWZpbmUgTUFDSDY0X1RFWFRVUkVfQ0xBTVBfVAkJCSgxIDw8IDE4KQojCWRlZmluZSBNQUNINjRfVEVYX1NUX01VTFRfVwkJCSgwIDw8IDE5KQojCWRlZmluZSBNQUNINjRfVEVYX1NUX0RJUkVDVAkJCSgxIDw8IDE5KQojCWRlZmluZSBNQUNINjRfVEVYX1NSQ19MT0NBTAkJCSgwIDw8IDIwKQojCWRlZmluZSBNQUNINjRfVEVYX1NSQ19BR1AJCQkoMSA8PCAyMCkKIwlkZWZpbmUgTUFDSDY0X1RFWF9VTkNPTVBSRVNTRUQJCQkoMCA8PCAyMSkKIwlkZWZpbmUgTUFDSDY0X1RFWF9WUV9DT01QUkVTU0VECQkJKDEgPDwgMjEpCiMJZGVmaW5lIE1BQ0g2NF9DT01QX1RFWF9VTkNPTVBSRVNTRUQJCSgwIDw8IDIyKQojCWRlZmluZSBNQUNINjRfQ09NUF9URVhfVlFfQ09NUFJFU1NFRAkJKDEgPDwgMjIpCiMJZGVmaW5lIE1BQ0g2NF9URVhfQ0FDSEVfRkxVU0gJCQkoMSA8PCAyMykKIwlkZWZpbmUgTUFDSDY0X1NFQ19URVhfQ0xBTVBfUwkJCSgxIDw8IDI0KQojCWRlZmluZSBNQUNINjRfU0VDX1RFWF9DTEFNUF9UCQkJKDEgPDwgMjUpCiMJZGVmaW5lIE1BQ0g2NF9URVhfV1JBUF9TCQkJKDEgPDwgMjgpCiMJZGVmaW5lIE1BQ0g2NF9URVhfV1JBUF9UCQkJKDEgPDwgMjkpCiMJZGVmaW5lIE1BQ0g2NF9URVhfQ0FDSEVfU0laRV80SwkJCSgxIDw8IDMwKQojCWRlZmluZSBNQUNINjRfVEVYX0NBQ0hFX1NJWkVfMksJCQkoMSA8PCAzMCkKIwlkZWZpbmUgTUFDSDY0X1NFQ09OREFSWV9TVFcJCQkoMSA8PCAzMSkKI2RlZmluZSBNQUNINjRfVEVYX1BBTEVUVEUJCQkweDA3N2MKI2RlZmluZSBNQUNINjRfVEVYX1BBTEVUVEVfSU5ERVgJCTB4MDc0MAojZGVmaW5lIE1BQ0g2NF9URVhfU0laRV9QSVRDSAkJCTB4MDc3MAoKI2RlZmluZSBNQUNINjRfVkVSVEVYXzFfQVJHQgkJCTB4MDI1NAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMV9TCQkJMHgwMjQwCiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8xX1NFQ09OREFSWV9TCQkweDAzMjgKI2RlZmluZSBNQUNINjRfVkVSVEVYXzFfU0VDT05EQVJZX1QJCTB4MDMyYwojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMV9TRUNPTkRBUllfVwkJMHgwMzMwCiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8xX1NQRUNfQVJHQgkJMHgwMjRjCiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8xX1QJCQkweDAyNDQKI2RlZmluZSBNQUNINjRfVkVSVEVYXzFfVwkJCTB4MDI0OAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMV9YX1kJCQkweDAyNTgKI2RlZmluZSBNQUNINjRfVkVSVEVYXzFfWgkJCTB4MDI1MAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMl9BUkdCCQkJMHgwMjc0CiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8yX1MJCQkweDAyNjAKI2RlZmluZSBNQUNINjRfVkVSVEVYXzJfU0VDT05EQVJZX1MJCTB4MDMzNAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMl9TRUNPTkRBUllfVAkJMHgwMzM4CiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8yX1NFQ09OREFSWV9XCQkweDAzM2MKI2RlZmluZSBNQUNINjRfVkVSVEVYXzJfU1BFQ19BUkdCCQkweDAyNmMKI2RlZmluZSBNQUNINjRfVkVSVEVYXzJfVAkJCTB4MDI2NAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMl9XCQkJMHgwMjY4CiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8yX1hfWQkJCTB4MDI3OAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfMl9aCQkJMHgwMjcwCiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8zX0FSR0IJCQkweDAyOTQKI2RlZmluZSBNQUNINjRfVkVSVEVYXzNfUwkJCTB4MDI4MAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfM19TRUNPTkRBUllfUwkJMHgwMmEwCiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8zX1NFQ09OREFSWV9UCQkweDAyYTQKI2RlZmluZSBNQUNINjRfVkVSVEVYXzNfU0VDT05EQVJZX1cJCTB4MDJhOAojZGVmaW5lIE1BQ0g2NF9WRVJURVhfM19TUEVDX0FSR0IJCTB4MDI4YwojZGVmaW5lIE1BQ0g2NF9WRVJURVhfM19UCQkJMHgwMjg0CiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8zX1cJCQkweDAyODgKI2RlZmluZSBNQUNINjRfVkVSVEVYXzNfWF9ZCQkJMHgwMjk4CiNkZWZpbmUgTUFDSDY0X1ZFUlRFWF8zX1oJCQkweDAyOTAKCiNkZWZpbmUgTUFDSDY0X1pfQ05UTAkJCQkweDA1NGMKIwlkZWZpbmUgTUFDSDY0X1pfRU4JCQkJKDEgPDwgMCkKIwlkZWZpbmUgTUFDSDY0X1pfU1JDXzJECQkJCSgxIDw8IDEpCiMJZGVmaW5lIE1BQ0g2NF9aX1RFU1RfTUFTSwkJCSg3IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9aX1RFU1RfTkVWRVIJCQkoMCA8PCA0KQojCWRlZmluZSBNQUNINjRfWl9URVNUX0xFU1MJCQkoMSA8PCA0KQojCWRlZmluZSBNQUNINjRfWl9URVNUX0xFUVVBTAkJCSgyIDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9aX1RFU1RfRVFVQUwJCQkoMyA8PCA0KQojCWRlZmluZSBNQUNINjRfWl9URVNUX0dFUVVBTAkJCSg0IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9aX1RFU1RfR1JFQVRFUgkJCSg1IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9aX1RFU1RfTk9URVFVQUwJCQkoNiA8PCA0KQojCWRlZmluZSBNQUNINjRfWl9URVNUX0FMV0FZUwkJCSg3IDw8IDQpCiMJZGVmaW5lIE1BQ0g2NF9aX01BU0tfRU4JCQkJKDEgPDwgOCkKI2RlZmluZSBNQUNINjRfWl9PRkZfUElUQ0gJCQkweDA1NDgKCgoKI2RlZmluZSBNQUNINjRfREFUQVRZUEVfQ0k4CQkJCTIKI2RlZmluZSBNQUNINjRfREFUQVRZUEVfQVJHQjE1NTUJCQkzCiNkZWZpbmUgTUFDSDY0X0RBVEFUWVBFX1JHQjU2NQkJCQk0CiNkZWZpbmUgTUFDSDY0X0RBVEFUWVBFX0FSR0I4ODg4CQkJNgojZGVmaW5lIE1BQ0g2NF9EQVRBVFlQRV9SR0IzMzIJCQkJNwojZGVmaW5lIE1BQ0g2NF9EQVRBVFlQRV9ZOAkJCQk4CiNkZWZpbmUgTUFDSDY0X0RBVEFUWVBFX1JHQjgJCQkJOQojZGVmaW5lIE1BQ0g2NF9EQVRBVFlQRV9WWVVZNDIyCQkJCTExCiNkZWZpbmUgTUFDSDY0X0RBVEFUWVBFX1lWWVU0MjIJCQkJMTIKI2RlZmluZSBNQUNINjRfREFUQVRZUEVfQVlVVjQ0NAkJCQkxNAojZGVmaW5lIE1BQ0g2NF9EQVRBVFlQRV9BUkdCNDQ0NAkJCTE1CgojZGVmaW5lIE1BQ0g2NF9MQVNUX0ZSQU1FX1JFRwkJCU1BQ0g2NF9QQVRfUkVHMAojZGVmaW5lIE1BQ0g2NF9MQVNUX0RJU1BBVENIX1JFRwkJTUFDSDY0X1BBVF9SRUcxCgojZW5kaWYgLyogX19NQUNINjRfUkVHX0hfXyAqLwo=