LyoKICogQ29weXJpZ2h0IKkgMjAwNi0yMDA3IEludGVsIENvcnBvcmF0aW9uCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CiAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKICogU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgogKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqCiAqIEF1dGhvcnM6CiAqCUVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CiAqLwoKLyoqCiAqIEBmaWxlIFNEVk8gY29tbWFuZCBkZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcy4KICovCgojZGVmaW5lIFNEVk9fT1VUUFVUX0ZJUlNUICAgKDApCiNkZWZpbmUgU0RWT19PVVRQVVRfVE1EUzAgICAoMSA8PCAwKQojZGVmaW5lIFNEVk9fT1VUUFVUX1JHQjAgICAgKDEgPDwgMSkKI2RlZmluZSBTRFZPX09VVFBVVF9DVkJTMCAgICgxIDw8IDIpCiNkZWZpbmUgU0RWT19PVVRQVVRfU1ZJRDAgICAoMSA8PCAzKQojZGVmaW5lIFNEVk9fT1VUUFVUX1lQUlBCMCAgKDEgPDwgNCkKI2RlZmluZSBTRFZPX09VVFBVVF9TQ0FSVDAgICgxIDw8IDUpCiNkZWZpbmUgU0RWT19PVVRQVVRfTFZEUzAgICAoMSA8PCA2KQojZGVmaW5lIFNEVk9fT1VUUFVUX1RNRFMxICAgKDEgPDwgOCkKI2RlZmluZSBTRFZPX09VVFBVVF9SR0IxICAgICgxIDw8IDkpCiNkZWZpbmUgU0RWT19PVVRQVVRfQ1ZCUzEgICAoMSA8PCAxMCkKI2RlZmluZSBTRFZPX09VVFBVVF9TVklEMSAgICgxIDw8IDExKQojZGVmaW5lIFNEVk9fT1VUUFVUX1lQUlBCMSAgKDEgPDwgMTIpCiNkZWZpbmUgU0RWT19PVVRQVVRfU0NBUlQxICAoMSA8PCAxMykKI2RlZmluZSBTRFZPX09VVFBVVF9MVkRTMSAgICgxIDw8IDE0KQojZGVmaW5lIFNEVk9fT1VUUFVUX0xBU1QgICAgKDE0KQoKc3RydWN0IGludGVsX3Nkdm9fY2FwcyB7CiAgICB1OCB2ZW5kb3JfaWQ7CiAgICB1OCBkZXZpY2VfaWQ7CiAgICB1OCBkZXZpY2VfcmV2X2lkOwogICAgdTggc2R2b192ZXJzaW9uX21ham9yOwogICAgdTggc2R2b192ZXJzaW9uX21pbm9yOwogICAgdW5zaWduZWQgaW50IHNkdm9faW5wdXRzX21hc2s6MjsKICAgIHVuc2lnbmVkIGludCBzbW9vdGhfc2NhbGluZzoxOwogICAgdW5zaWduZWQgaW50IHNoYXJwX3NjYWxpbmc6MTsKICAgIHVuc2lnbmVkIGludCB1cF9zY2FsaW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgZG93bl9zY2FsaW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgc3RhbGxfc3VwcG9ydDoxOwogICAgdW5zaWduZWQgaW50IHBhZDoxOwogICAgdTE2IG91dHB1dF9mbGFnczsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qKiBUaGlzIG1hdGNoZXMgdGhlIEVESUQgRFREIHN0cnVjdHVyZSwgbW9yZSBvciBsZXNzICovCnN0cnVjdCBpbnRlbF9zZHZvX2R0ZCB7CiAgICBzdHJ1Y3QgewoJdTE2IGNsb2NrOwkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KCXU4IGhfYWN0aXZlOwkJLyoqPCBsb3dlciA4IGJpdHMgKHBpeGVscykgKi8KCXU4IGhfYmxhbms7CQkvKio8IGxvd2VyIDggYml0cyAocGl4ZWxzKSAqLwoJdTggaF9oaWdoOwkJLyoqPCB1cHBlciA0IGJpdHMgZWFjaCBoX2FjdGl2ZSwgaF9ibGFuayAqLwoJdTggdl9hY3RpdmU7CQkvKio8IGxvd2VyIDggYml0cyAobGluZXMpICovCgl1OCB2X2JsYW5rOwkJLyoqPCBsb3dlciA4IGJpdHMgKGxpbmVzKSAqLwoJdTggdl9oaWdoOwkJLyoqPCB1cHBlciA0IGJpdHMgZWFjaCB2X2FjdGl2ZSwgdl9ibGFuayAqLwogICAgfSBwYXJ0MTsKCiAgICBzdHJ1Y3QgewoJdTggaF9zeW5jX29mZjsJLyoqPCBsb3dlciA4IGJpdHMsIGZyb20gaGJsYW5rIHN0YXJ0ICovCgl1OCBoX3N5bmNfd2lkdGg7CS8qKjwgbG93ZXIgOCBiaXRzIChwaXhlbHMpICovCgkvKiogbG93ZXIgNCBiaXRzIGVhY2ggdnN5bmMgb2Zmc2V0LCB2c3luYyB3aWR0aCAqLwoJdTggdl9zeW5jX29mZl93aWR0aDsKCS8qKgoJICogMiBoaWdoIGJpdHMgb2YgaHN5bmMgb2Zmc2V0LCAyIGhpZ2ggYml0cyBvZiBoc3luYyB3aWR0aCwKCSAqIGJpdHMgNC01IG9mIHZzeW5jIG9mZnNldCwgYW5kIDIgaGlnaCBiaXRzIG9mIHZzeW5jIHdpZHRoLgoJICovCgl1OCBzeW5jX29mZl93aWR0aF9oaWdoOwoJdTggZHRkX2ZsYWdzOwoJdTggc2R2b19mbGFnczsKCS8qKiBiaXRzIDYtNyBvZiB2c3luYyBvZmZzZXQgYXQgYml0cyA2LTcgKi8KCXU4IHZfc3luY19vZmZfaGlnaDsKCXU4IHJlc2VydmVkOwogICAgfSBwYXJ0MjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBpbnRlbF9zZHZvX3BpeGVsX2Nsb2NrX3JhbmdlIHsKICAgIHUxNiBtaW47CQkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KICAgIHUxNiBtYXg7CQkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBpbnRlbF9zZHZvX3ByZWZlcnJlZF9pbnB1dF90aW1pbmdfYXJncyB7CiAgICB1MTYgY2xvY2s7CiAgICB1MTYgd2lkdGg7CiAgICB1MTYgaGVpZ2h0Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogSTJDIHJlZ2lzdGVycyBmb3IgU0RWTyAqLwojZGVmaW5lIFNEVk9fSTJDX0FSR18wCQkJCTB4MDcKI2RlZmluZSBTRFZPX0kyQ19BUkdfMQkJCQkweDA2CiNkZWZpbmUgU0RWT19JMkNfQVJHXzIJCQkJMHgwNQojZGVmaW5lIFNEVk9fSTJDX0FSR18zCQkJCTB4MDQKI2RlZmluZSBTRFZPX0kyQ19BUkdfNAkJCQkweDAzCiNkZWZpbmUgU0RWT19JMkNfQVJHXzUJCQkJMHgwMgojZGVmaW5lIFNEVk9fSTJDX0FSR182CQkJCTB4MDEKI2RlZmluZSBTRFZPX0kyQ19BUkdfNwkJCQkweDAwCiNkZWZpbmUgU0RWT19JMkNfT1BDT0RFCQkJCTB4MDgKI2RlZmluZSBTRFZPX0kyQ19DTURfU1RBVFVTCQkJMHgwOQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8wCQkJMHgwYQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8xCQkJMHgwYgojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8yCQkJMHgwYwojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8zCQkJMHgwZAojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl80CQkJMHgwZQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl81CQkJMHgwZgojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl82CQkJMHgxMAojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl83CQkJMHgxMQojZGVmaW5lIFNEVk9fSTJDX1ZFTkRPUl9CRUdJTgkJCTB4MjAKCi8qIFN0YXR1cyByZXN1bHRzICovCiNkZWZpbmUgU0RWT19DTURfU1RBVFVTX1BPV0VSX09OCQkweDAKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfU1VDQ0VTUwkJCTB4MQojZGVmaW5lIFNEVk9fQ01EX1NUQVRVU19OT1RTVVBQCQkJMHgyCiNkZWZpbmUgU0RWT19DTURfU1RBVFVTX0lOVkFMSURfQVJHCQkweDMKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfUEVORElORwkJCTB4NAojZGVmaW5lIFNEVk9fQ01EX1NUQVRVU19UQVJHRVRfTk9UX1NQRUNJRklFRAkweDUKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfU0NBTElOR19OT1RfU1VQUAkweDYKCi8qIFNEVk8gY29tbWFuZHMsIGFyZ3VtZW50L3Jlc3VsdCByZWdpc3RlcnMgKi8KCiNkZWZpbmUgU0RWT19DTURfUkVTRVQJCQkJCTB4MDEKCi8qKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fY2FwcyAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9ERVZJQ0VfQ0FQUwkJCTB4MDIKCiNkZWZpbmUgU0RWT19DTURfR0VUX0ZJUk1XQVJFX1JFVgkJCTB4ODYKIyBkZWZpbmUgU0RWT19ERVZJQ0VfRklSTVdBUkVfTUlOT1IJCQlTRFZPX0kyQ19SRVRVUk5fMAojIGRlZmluZSBTRFZPX0RFVklDRV9GSVJNV0FSRV9NQUpPUgkJCVNEVk9fSTJDX1JFVFVSTl8xCiMgZGVmaW5lIFNEVk9fREVWSUNFX0ZJUk1XQVJFX1BBVENICQkJU0RWT19JMkNfUkVUVVJOXzIKCi8qKgogKiBSZXBvcnRzIHdoaWNoIGlucHV0cyBhcmUgdHJhaW5lZCAobWFuYWdlZCB0byBzeW5jKS4KICoKICogRGV2aWNlcyBtdXN0IGhhdmUgdHJhaW5lZCB3aXRoaW4gMiB2c3luY3Mgb2YgYSBtb2RlIGNoYW5nZS4KICovCiNkZWZpbmUgU0RWT19DTURfR0VUX1RSQUlORURfSU5QVVRTCQkJMHgwMwpzdHJ1Y3QgaW50ZWxfc2R2b19nZXRfdHJhaW5lZF9pbnB1dHNfcmVzcG9uc2UgewogICAgdW5zaWduZWQgaW50IGlucHV0MF90cmFpbmVkOjE7CiAgICB1bnNpZ25lZCBpbnQgaW5wdXQxX3RyYWluZWQ6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ6NjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIGFjdGl2ZSBvdXRwdXRzLiAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9BQ1RJVkVfT1VUUFVUUwkJCTB4MDQKCi8qKgogKiBTZXRzIHRoZSBjdXJyZW50IHNldCBvZiBhY3RpdmUgb3V0cHV0cy4KICoKICogVGFrZXMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3MuICBNdXN0IGJlIHByZWNlZGVkIGJ5IGEgU0VUX0lOX09VVF9NQVAKICogb24gbXVsdGktb3V0cHV0IGRldmljZXMuCiAqLwojZGVmaW5lIFNEVk9fQ01EX1NFVF9BQ1RJVkVfT1VUUFVUUwkJCTB4MDUKCi8qKgogKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1hcHBpbmcgb2YgU0RWTyBpbnB1dHMgdG8gb3V0cHV0cyBvbiB0aGUgZGV2aWNlLgogKgogKiBSZXR1cm5zIHR3byBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgc3RydWN0dXJlcy4KICovCiNkZWZpbmUgU0RWT19DTURfR0VUX0lOX09VVF9NQVAJCQkJMHgwNgoKLyoqCiAqIFNldHMgdGhlIGN1cnJlbnQgbWFwcGluZyBvZiBTRFZPIGlucHV0cyB0byBvdXRwdXRzIG9uIHRoZSBkZXZpY2UuCiAqCiAqIFRha2VzIHR3byBzdHJ1Y3QgaTM4MF9zZHZvX291dHB1dF9mbGFncyBzdHJ1Y3R1cmVzLgogKi8KI2RlZmluZSBTRFZPX0NNRF9TRVRfSU5fT1VUX01BUAkJCQkweDA3CgovKioKICogUmV0dXJucyBhIHN0cnVjdCBpbnRlbF9zZHZvX291dHB1dF9mbGFncyBvZiBhdHRhY2hlZCBkaXNwbGF5cy4KICovCiNkZWZpbmUgU0RWT19DTURfR0VUX0FUVEFDSEVEX0RJU1BMQVlTCQkJMHgwYgoKLyoqCiAqIFJldHVybnMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXB0dXRfZmxhZ3Mgb2YgZGlzcGxheXMgc3VwcG9ydGluZyBob3QgcGx1Z2dpbmcuCiAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9IT1RfUExVR19TVVBQT1JUCQkJMHgwYwoKLyoqCiAqIFRha2VzIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzLgogKi8KI2RlZmluZSBTRFZPX0NNRF9TRVRfQUNUSVZFX0hPVF9QTFVHCQkJMHgwZAoKLyoqCiAqIFJldHVybnMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2YgZGlzcGxheXMgd2l0aCBob3QgcGx1ZwogKiBpbnRlcnJ1cHRzIGVuYWJsZWQuCiAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9BQ1RJVkVfSE9UX1BMVUcJCQkweDBlCgojZGVmaW5lIFNEVk9fQ01EX0dFVF9JTlRFUlJVUFRfRVZFTlRfU09VUkNFCQkweDBmCnN0cnVjdCBpbnRlbF9zZHZvX2dldF9pbnRlcnJ1cHRfZXZlbnRfc291cmNlX3Jlc3BvbnNlIHsKICAgIHUxNiBpbnRlcnJ1cHRfc3RhdHVzOwogICAgdW5zaWduZWQgaW50IGFtYmllbnRfbGlnaHRfaW50ZXJydXB0OjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkOjc7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKioKICogU2VsZWN0cyB3aGljaCBpbnB1dCBpcyBhZmZlY3RlZCBieSBmdXR1cmUgaW5wdXQgY29tbWFuZHMuCiAqCiAqIENvbW1hbmRzIGFmZmVjdGVkIGluY2x1ZGUgU0VUX0lOUFVUX1RJTUlOR1NfUEFSVFsxMl0sCiAqIEdFVF9JTlBVVF9USU1JTkdTX1BBUlRbMTJdLCBHRVRfUFJFRkVSUkVEX0lOUFVUX1RJTUlOR1NfUEFSVFsxMl0sCiAqIEdFVF9JTlBVVF9QSVhFTF9DTE9DS19SQU5HRSwgYW5kIENSRUFURV9QUkVGRVJSRURfSU5QVVRfVElNSU5HUy4KICovCiNkZWZpbmUgU0RWT19DTURfU0VUX1RBUkdFVF9JTlBVVAkJCTB4MTAKc3RydWN0IGludGVsX3Nkdm9fc2V0X3RhcmdldF9pbnB1dF9hcmdzIHsKICAgIHVuc2lnbmVkIGludCB0YXJnZXRfMToxOwogICAgdW5zaWduZWQgaW50IHBhZDo3Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyoqCiAqIFRha2VzIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldHRlZCBieQogKiBmdXR1cmUgb3V0cHV0IGNvbW1hbmRzLgogKgogKiBBZmZlY3RlZCBjb21tYW5kcyBpbmNsdWUgU0VUX09VVFBVVF9USU1JTkdTX1BBUlRbMTJdLAogKiBHRVRfT1VUUFVUX1RJTUlOR1NfUEFSVFsxMl0sIGFuZCBHRVRfT1VUUFVUX1BJWEVMX0NMT0NLX1JBTkdFLgogKi8KI2RlZmluZSBTRFZPX0NNRF9TRVRfVEFSR0VUX09VVFBVVAkJCTB4MTEKCiNkZWZpbmUgU0RWT19DTURfR0VUX0lOUFVUX1RJTUlOR1NfUEFSVDEJCTB4MTIKI2RlZmluZSBTRFZPX0NNRF9HRVRfSU5QVVRfVElNSU5HU19QQVJUMgkJMHgxMwojZGVmaW5lIFNEVk9fQ01EX1NFVF9JTlBVVF9USU1JTkdTX1BBUlQxCQkweDE0CiNkZWZpbmUgU0RWT19DTURfU0VUX0lOUFVUX1RJTUlOR1NfUEFSVDIJCTB4MTUKI2RlZmluZSBTRFZPX0NNRF9TRVRfT1VUUFVUX1RJTUlOR1NfUEFSVDEJCTB4MTYKI2RlZmluZSBTRFZPX0NNRF9TRVRfT1VUUFVUX1RJTUlOR1NfUEFSVDIJCTB4MTcKI2RlZmluZSBTRFZPX0NNRF9HRVRfT1VUUFVUX1RJTUlOR1NfUEFSVDEJCTB4MTgKI2RlZmluZSBTRFZPX0NNRF9HRVRfT1VUUFVUX1RJTUlOR1NfUEFSVDIJCTB4MTkKLyogUGFydCAxICovCiMgZGVmaW5lIFNEVk9fRFREX0NMT0NLX0xPVwkJCQlTRFZPX0kyQ19BUkdfMAojIGRlZmluZSBTRFZPX0RURF9DTE9DS19ISUdICQkJCVNEVk9fSTJDX0FSR18xCiMgZGVmaW5lIFNEVk9fRFREX0hfQUNUSVZFCQkJCVNEVk9fSTJDX0FSR18yCiMgZGVmaW5lIFNEVk9fRFREX0hfQkxBTksJCQkJU0RWT19JMkNfQVJHXzMKIyBkZWZpbmUgU0RWT19EVERfSF9ISUdICQkJCVNEVk9fSTJDX0FSR180CiMgZGVmaW5lIFNEVk9fRFREX1ZfQUNUSVZFCQkJCVNEVk9fSTJDX0FSR181CiMgZGVmaW5lIFNEVk9fRFREX1ZfQkxBTksJCQkJU0RWT19JMkNfQVJHXzYKIyBkZWZpbmUgU0RWT19EVERfVl9ISUdICQkJCVNEVk9fSTJDX0FSR183Ci8qIFBhcnQgMiAqLwojIGRlZmluZSBTRFZPX0RURF9IU1lOQ19PRkYJCQkJU0RWT19JMkNfQVJHXzAKIyBkZWZpbmUgU0RWT19EVERfSFNZTkNfV0lEVEgJCQkJU0RWT19JMkNfQVJHXzEKIyBkZWZpbmUgU0RWT19EVERfVlNZTkNfT0ZGX1dJRFRICQkJU0RWT19JMkNfQVJHXzIKIyBkZWZpbmUgU0RWT19EVERfU1lOQ19PRkZfV0lEVEhfSElHSAkJCVNEVk9fSTJDX0FSR18zCiMgZGVmaW5lIFNEVk9fRFREX0RURF9GTEFHUwkJCQlTRFZPX0kyQ19BUkdfNAojIGRlZmluZSBTRFZPX0RURF9EVERfRkxBR19JTlRFUkxBQ0VECQkJCSgxIDw8IDcpCiMgZGVmaW5lIFNEVk9fRFREX0RURF9GTEFHX1NURVJFT19NQVNLCQkJCSgzIDw8IDUpCiMgZGVmaW5lIFNEVk9fRFREX0RURF9GTEFHX0lOUFVUX01BU0sJCQkJKDMgPDwgMykKIyBkZWZpbmUgU0RWT19EVERfRFREX0ZMQUdfU1lOQ19NQVNLCQkJCSgzIDw8IDEpCiMgZGVmaW5lIFNEVk9fRFREX1NEVk9fRkxBUwkJCQlTRFZPX0kyQ19BUkdfNQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQUdfU1RBTEwJCQkJKDEgPDwgNykKIyBkZWZpbmUgU0RWT19EVERfU0RWT19GTEFHX0NFTlRFUkVECQkJCSgwIDw8IDYpCiMgZGVmaW5lIFNEVk9fRFREX1NEVk9fRkxBR19VUFBFUl9MRUZUCQkJCSgxIDw8IDYpCiMgZGVmaW5lIFNEVk9fRFREX1NEVk9fRkxBR19TQ0FMSU5HX01BU0sJCQkoMyA8PCA0KQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQUdfU0NBTElOR19OT05FCQkJKDAgPDwgNCkKIyBkZWZpbmUgU0RWT19EVERfU0RWT19GTEFHX1NDQUxJTkdfU0hBUlAJCQkoMSA8PCA0KQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQUdfU0NBTElOR19TTU9PVEgJCQkoMiA8PCA0KQojIGRlZmluZSBTRFZPX0RURF9WU1lOQ19PRkZfSElHSAkJCVNEVk9fSTJDX0FSR182CgovKioKICogR2VuZXJhdGVzIGEgRFREIGJhc2VkIG9uIHRoZSBnaXZlbiB3aWR0aCwgaGVpZ2h0LCBhbmQgZmxhZ3MuCiAqCiAqIFRoaXMgd2lsbCBiZSBzdXBwb3J0ZWQgYnkgYW55IGRldmljZSBzdXBwb3J0aW5nIHNjYWxpbmcgb3IgaW50ZXJsYWNlZAogKiBtb2Rlcy4KICovCiNkZWZpbmUgU0RWT19DTURfQ1JFQVRFX1BSRUZFUlJFRF9JTlBVVF9USU1JTkcJCTB4MWEKIyBkZWZpbmUgU0RWT19QUkVGRVJSRURfSU5QVVRfVElNSU5HX0NMT0NLX0xPVwkJU0RWT19JMkNfQVJHXzAKIyBkZWZpbmUgU0RWT19QUkVGRVJSRURfSU5QVVRfVElNSU5HX0NMT0NLX0hJR0gJCVNEVk9fSTJDX0FSR18xCiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19XSURUSF9MT1cJCVNEVk9fSTJDX0FSR18yCiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19XSURUSF9ISUdICQlTRFZPX0kyQ19BUkdfMwojIGRlZmluZSBTRFZPX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfSEVJR0hUX0xPVwkJU0RWT19JMkNfQVJHXzQKIyBkZWZpbmUgU0RWT19QUkVGRVJSRURfSU5QVVRfVElNSU5HX0hFSUdIVF9ISUdICVNEVk9fSTJDX0FSR181CiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19GTEFHUwkJU0RWT19JMkNfQVJHXzYKIyBkZWZpbmUgU0RWT19QUkVGRVJSRURfSU5QVVRfVElNSU5HX0ZMQUdTX0lOVEVSTEFDRUQJCSgxIDw8IDApCiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19GTEFHU19TQ0FMRUQJCSgxIDw8IDEpCgojZGVmaW5lIFNEVk9fQ01EX0dFVF9QUkVGRVJSRURfSU5QVVRfVElNSU5HX1BBUlQxCTB4MWIKI2RlZmluZSBTRFZPX0NNRF9HRVRfUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19QQVJUMgkweDFjCgovKiogUmV0dXJucyBhIHN0cnVjdCBpbnRlbF9zZHZvX3BpeGVsX2Nsb2NrX3JhbmdlICovCiNkZWZpbmUgU0RWT19DTURfR0VUX0lOUFVUX1BJWEVMX0NMT0NLX1JBTkdFCQkweDFkCi8qKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fcGl4ZWxfY2xvY2tfcmFuZ2UgKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfT1VUUFVUX1BJWEVMX0NMT0NLX1JBTkdFCQkweDFlCgovKiogUmV0dXJucyBhIGJ5dGUgYml0ZmllbGQgY29udGFpbmluZyBTRFZPX0NMT0NLX1JBVEVfTVVMVF8qIGZsYWdzICovCiNkZWZpbmUgU0RWT19DTURfR0VUX1NVUFBPUlRFRF9DTE9DS19SQVRFX01VTFRTCQkweDFmCgovKiogUmV0dXJucyBhIGJ5dGUgY29udGFpbmluZyBhIFNEVk9fQ0xPQ0tfUkFURV9NVUxUXyogZmxhZyAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9DTE9DS19SQVRFX01VTFQJCQkweDIwCi8qKiBUYWtlcyBhIGJ5dGUgY29udGFpbmluZyBhIFNEVk9fQ0xPQ0tfUkFURV9NVUxUXyogZmxhZyAqLwojZGVmaW5lIFNEVk9fQ01EX1NFVF9DTE9DS19SQVRFX01VTFQJCQkweDIxCiMgZGVmaW5lIFNEVk9fQ0xPQ0tfUkFURV9NVUxUXzFYCQkJCSgxIDw8IDApCiMgZGVmaW5lIFNEVk9fQ0xPQ0tfUkFURV9NVUxUXzJYCQkJCSgxIDw8IDEpCiMgZGVmaW5lIFNEVk9fQ0xPQ0tfUkFURV9NVUxUXzRYCQkJCSgxIDw8IDMpCgojZGVmaW5lIFNEVk9fQ01EX0dFVF9TVVBQT1JURURfVFZfRk9STUFUUwkJMHgyNwoKI2RlZmluZSBTRFZPX0NNRF9HRVRfVFZfRk9STUFUCQkJCTB4MjgKCiNkZWZpbmUgU0RWT19DTURfU0VUX1RWX0ZPUk1BVAkJCQkweDI5CgojZGVmaW5lIFNEVk9fQ01EX0dFVF9TVVBQT1JURURfUE9XRVJfU1RBVEVTCQkweDJhCiNkZWZpbmUgU0RWT19DTURfR0VUX0VOQ09ERVJfUE9XRVJfU1RBVEUJCTB4MmIKI2RlZmluZSBTRFZPX0NNRF9TRVRfRU5DT0RFUl9QT1dFUl9TVEFURQkJMHgyYwojIGRlZmluZSBTRFZPX0VOQ09ERVJfU1RBVEVfT04JCQkJCSgxIDw8IDApCiMgZGVmaW5lIFNEVk9fRU5DT0RFUl9TVEFURV9TVEFOREJZCQkJCSgxIDw8IDEpCiMgZGVmaW5lIFNEVk9fRU5DT0RFUl9TVEFURV9TVVNQRU5ECQkJCSgxIDw8IDIpCiMgZGVmaW5lIFNEVk9fRU5DT0RFUl9TVEFURV9PRkYJCQkJCSgxIDw8IDMpCgojZGVmaW5lIFNEVk9fQ01EX1NFVF9UVl9SRVNPTFVUSU9OX1NVUFBPUlQJCTB4OTMKCiNkZWZpbmUgU0RWT19DTURfU0VUX0NPTlRST0xfQlVTX1NXSVRDSAkJCTB4N2EKIyBkZWZpbmUgU0RWT19DT05UUk9MX0JVU19QUk9NCQkJCTB4MAojIGRlZmluZSBTRFZPX0NPTlRST0xfQlVTX0REQzEJCQkJMHgxCiMgZGVmaW5lIFNEVk9fQ09OVFJPTF9CVVNfRERDMgkJCQkweDIKIyBkZWZpbmUgU0RWT19DT05UUk9MX0JVU19EREMzCQkJCTB4Mwo=