LyoKICogQ29weXJpZ2h0IKkgMjAwNi0yMDA3IEludGVsIENvcnBvcmF0aW9uCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CiAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKICogU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgogKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqCiAqIEF1dGhvcnM6CiAqCUVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CiAqLwoKLyoqCiAqIEBmaWxlIFNEVk8gY29tbWFuZCBkZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcy4KICovCgojZGVmaW5lIFNEVk9fT1VUUFVUX0ZJUlNUICAgKDApCiNkZWZpbmUgU0RWT19PVVRQVVRfVE1EUzAgICAoMSA8PCAwKQojZGVmaW5lIFNEVk9fT1VUUFVUX1JHQjAgICAgKDEgPDwgMSkKI2RlZmluZSBTRFZPX09VVFBVVF9DVkJTMCAgICgxIDw8IDIpCiNkZWZpbmUgU0RWT19PVVRQVVRfU1ZJRDAgICAoMSA8PCAzKQojZGVmaW5lIFNEVk9fT1VUUFVUX1lQUlBCMCAgKDEgPDwgNCkKI2RlZmluZSBTRFZPX09VVFBVVF9TQ0FSVDAgICgxIDw8IDUpCiNkZWZpbmUgU0RWT19PVVRQVVRfTFZEUzAgICAoMSA8PCA2KQojZGVmaW5lIFNEVk9fT1VUUFVUX1RNRFMxICAgKDEgPDwgOCkKI2RlZmluZSBTRFZPX09VVFBVVF9SR0IxICAgICgxIDw8IDkpCiNkZWZpbmUgU0RWT19PVVRQVVRfQ1ZCUzEgICAoMSA8PCAxMCkKI2RlZmluZSBTRFZPX09VVFBVVF9TVklEMSAgICgxIDw8IDExKQojZGVmaW5lIFNEVk9fT1VUUFVUX1lQUlBCMSAgKDEgPDwgMTIpCiNkZWZpbmUgU0RWT19PVVRQVVRfU0NBUlQxICAoMSA8PCAxMykKI2RlZmluZSBTRFZPX09VVFBVVF9MVkRTMSAgICgxIDw8IDE0KQojZGVmaW5lIFNEVk9fT1VUUFVUX0xBU1QgICAgKDE0KQoKc3RydWN0IGludGVsX3Nkdm9fY2FwcyB7CiAgICB1OCB2ZW5kb3JfaWQ7CiAgICB1OCBkZXZpY2VfaWQ7CiAgICB1OCBkZXZpY2VfcmV2X2lkOwogICAgdTggc2R2b192ZXJzaW9uX21ham9yOwogICAgdTggc2R2b192ZXJzaW9uX21pbm9yOwogICAgdW5zaWduZWQgaW50IHNkdm9faW5wdXRzX21hc2s6MjsKICAgIHVuc2lnbmVkIGludCBzbW9vdGhfc2NhbGluZzoxOwogICAgdW5zaWduZWQgaW50IHNoYXJwX3NjYWxpbmc6MTsKICAgIHVuc2lnbmVkIGludCB1cF9zY2FsaW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgZG93bl9zY2FsaW5nOjE7CiAgICB1bnNpZ25lZCBpbnQgc3RhbGxfc3VwcG9ydDoxOwogICAgdW5zaWduZWQgaW50IHBhZDoxOwogICAgdTE2IG91dHB1dF9mbGFnczsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qKiBUaGlzIG1hdGNoZXMgdGhlIEVESUQgRFREIHN0cnVjdHVyZSwgbW9yZSBvciBsZXNzICovCnN0cnVjdCBpbnRlbF9zZHZvX2R0ZCB7CiAgICBzdHJ1Y3QgewoJdTE2IGNsb2NrOwkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KCXU4IGhfYWN0aXZlOwkJLyoqPCBsb3dlciA4IGJpdHMgKHBpeGVscykgKi8KCXU4IGhfYmxhbms7CQkvKio8IGxvd2VyIDggYml0cyAocGl4ZWxzKSAqLwoJdTggaF9oaWdoOwkJLyoqPCB1cHBlciA0IGJpdHMgZWFjaCBoX2FjdGl2ZSwgaF9ibGFuayAqLwoJdTggdl9hY3RpdmU7CQkvKio8IGxvd2VyIDggYml0cyAobGluZXMpICovCgl1OCB2X2JsYW5rOwkJLyoqPCBsb3dlciA4IGJpdHMgKGxpbmVzKSAqLwoJdTggdl9oaWdoOwkJLyoqPCB1cHBlciA0IGJpdHMgZWFjaCB2X2FjdGl2ZSwgdl9ibGFuayAqLwogICAgfSBwYXJ0MTsKCiAgICBzdHJ1Y3QgewoJdTggaF9zeW5jX29mZjsJLyoqPCBsb3dlciA4IGJpdHMsIGZyb20gaGJsYW5rIHN0YXJ0ICovCgl1OCBoX3N5bmNfd2lkdGg7CS8qKjwgbG93ZXIgOCBiaXRzIChwaXhlbHMpICovCgkvKiogbG93ZXIgNCBiaXRzIGVhY2ggdnN5bmMgb2Zmc2V0LCB2c3luYyB3aWR0aCAqLwoJdTggdl9zeW5jX29mZl93aWR0aDsKCS8qKgoJICogMiBoaWdoIGJpdHMgb2YgaHN5bmMgb2Zmc2V0LCAyIGhpZ2ggYml0cyBvZiBoc3luYyB3aWR0aCwKCSAqIGJpdHMgNC01IG9mIHZzeW5jIG9mZnNldCwgYW5kIDIgaGlnaCBiaXRzIG9mIHZzeW5jIHdpZHRoLgoJICovCgl1OCBzeW5jX29mZl93aWR0aF9oaWdoOwoJdTggZHRkX2ZsYWdzOwoJdTggc2R2b19mbGFnczsKCS8qKiBiaXRzIDYtNyBvZiB2c3luYyBvZmZzZXQgYXQgYml0cyA2LTcgKi8KCXU4IHZfc3luY19vZmZfaGlnaDsKCXU4IHJlc2VydmVkOwogICAgfSBwYXJ0MjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBpbnRlbF9zZHZvX3BpeGVsX2Nsb2NrX3JhbmdlIHsKICAgIHUxNiBtaW47CQkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KICAgIHUxNiBtYXg7CQkJLyoqPCBwaXhlbCBjbG9jaywgaW4gMTBrSHogdW5pdHMgKi8KfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBpbnRlbF9zZHZvX3ByZWZlcnJlZF9pbnB1dF90aW1pbmdfYXJncyB7CiAgICB1MTYgY2xvY2s7CiAgICB1MTYgd2lkdGg7CiAgICB1MTYgaGVpZ2h0OwogICAgdTgJaW50ZXJsYWNlOjE7CiAgICB1OAlzY2FsZWQ6MTsKICAgIHU4CXBhZDo2Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogSTJDIHJlZ2lzdGVycyBmb3IgU0RWTyAqLwojZGVmaW5lIFNEVk9fSTJDX0FSR18wCQkJCTB4MDcKI2RlZmluZSBTRFZPX0kyQ19BUkdfMQkJCQkweDA2CiNkZWZpbmUgU0RWT19JMkNfQVJHXzIJCQkJMHgwNQojZGVmaW5lIFNEVk9fSTJDX0FSR18zCQkJCTB4MDQKI2RlZmluZSBTRFZPX0kyQ19BUkdfNAkJCQkweDAzCiNkZWZpbmUgU0RWT19JMkNfQVJHXzUJCQkJMHgwMgojZGVmaW5lIFNEVk9fSTJDX0FSR182CQkJCTB4MDEKI2RlZmluZSBTRFZPX0kyQ19BUkdfNwkJCQkweDAwCiNkZWZpbmUgU0RWT19JMkNfT1BDT0RFCQkJCTB4MDgKI2RlZmluZSBTRFZPX0kyQ19DTURfU1RBVFVTCQkJMHgwOQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8wCQkJMHgwYQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8xCQkJMHgwYgojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8yCQkJMHgwYwojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl8zCQkJMHgwZAojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl80CQkJMHgwZQojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl81CQkJMHgwZgojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl82CQkJMHgxMAojZGVmaW5lIFNEVk9fSTJDX1JFVFVSTl83CQkJMHgxMQojZGVmaW5lIFNEVk9fSTJDX1ZFTkRPUl9CRUdJTgkJCTB4MjAKCi8qIFN0YXR1cyByZXN1bHRzICovCiNkZWZpbmUgU0RWT19DTURfU1RBVFVTX1BPV0VSX09OCQkweDAKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfU1VDQ0VTUwkJCTB4MQojZGVmaW5lIFNEVk9fQ01EX1NUQVRVU19OT1RTVVBQCQkJMHgyCiNkZWZpbmUgU0RWT19DTURfU1RBVFVTX0lOVkFMSURfQVJHCQkweDMKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfUEVORElORwkJCTB4NAojZGVmaW5lIFNEVk9fQ01EX1NUQVRVU19UQVJHRVRfTk9UX1NQRUNJRklFRAkweDUKI2RlZmluZSBTRFZPX0NNRF9TVEFUVVNfU0NBTElOR19OT1RfU1VQUAkweDYKCi8qIFNEVk8gY29tbWFuZHMsIGFyZ3VtZW50L3Jlc3VsdCByZWdpc3RlcnMgKi8KCiNkZWZpbmUgU0RWT19DTURfUkVTRVQJCQkJCTB4MDEKCi8qKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fY2FwcyAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9ERVZJQ0VfQ0FQUwkJCTB4MDIKCiNkZWZpbmUgU0RWT19DTURfR0VUX0ZJUk1XQVJFX1JFVgkJCTB4ODYKIyBkZWZpbmUgU0RWT19ERVZJQ0VfRklSTVdBUkVfTUlOT1IJCQlTRFZPX0kyQ19SRVRVUk5fMAojIGRlZmluZSBTRFZPX0RFVklDRV9GSVJNV0FSRV9NQUpPUgkJCVNEVk9fSTJDX1JFVFVSTl8xCiMgZGVmaW5lIFNEVk9fREVWSUNFX0ZJUk1XQVJFX1BBVENICQkJU0RWT19JMkNfUkVUVVJOXzIKCi8qKgogKiBSZXBvcnRzIHdoaWNoIGlucHV0cyBhcmUgdHJhaW5lZCAobWFuYWdlZCB0byBzeW5jKS4KICoKICogRGV2aWNlcyBtdXN0IGhhdmUgdHJhaW5lZCB3aXRoaW4gMiB2c3luY3Mgb2YgYSBtb2RlIGNoYW5nZS4KICovCiNkZWZpbmUgU0RWT19DTURfR0VUX1RSQUlORURfSU5QVVRTCQkJMHgwMwpzdHJ1Y3QgaW50ZWxfc2R2b19nZXRfdHJhaW5lZF9pbnB1dHNfcmVzcG9uc2UgewogICAgdW5zaWduZWQgaW50IGlucHV0MF90cmFpbmVkOjE7CiAgICB1bnNpZ25lZCBpbnQgaW5wdXQxX3RyYWluZWQ6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ6NjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIGFjdGl2ZSBvdXRwdXRzLiAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9BQ1RJVkVfT1VUUFVUUwkJCTB4MDQKCi8qKgogKiBTZXRzIHRoZSBjdXJyZW50IHNldCBvZiBhY3RpdmUgb3V0cHV0cy4KICoKICogVGFrZXMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3MuICBNdXN0IGJlIHByZWNlZGVkIGJ5IGEgU0VUX0lOX09VVF9NQVAKICogb24gbXVsdGktb3V0cHV0IGRldmljZXMuCiAqLwojZGVmaW5lIFNEVk9fQ01EX1NFVF9BQ1RJVkVfT1VUUFVUUwkJCTB4MDUKCi8qKgogKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1hcHBpbmcgb2YgU0RWTyBpbnB1dHMgdG8gb3V0cHV0cyBvbiB0aGUgZGV2aWNlLgogKgogKiBSZXR1cm5zIHR3byBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgc3RydWN0dXJlcy4KICovCiNkZWZpbmUgU0RWT19DTURfR0VUX0lOX09VVF9NQVAJCQkJMHgwNgpzdHJ1Y3QgaW50ZWxfc2R2b19pbl9vdXRfbWFwIHsKICAgIHUxNiBpbjAsIGluMTsKfTsKCi8qKgogKiBTZXRzIHRoZSBjdXJyZW50IG1hcHBpbmcgb2YgU0RWTyBpbnB1dHMgdG8gb3V0cHV0cyBvbiB0aGUgZGV2aWNlLgogKgogKiBUYWtlcyB0d28gc3RydWN0IGkzODBfc2R2b19vdXRwdXRfZmxhZ3Mgc3RydWN0dXJlcy4KICovCiNkZWZpbmUgU0RWT19DTURfU0VUX0lOX09VVF9NQVAJCQkJMHgwNwoKLyoqCiAqIFJldHVybnMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2YgYXR0YWNoZWQgZGlzcGxheXMuCiAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9BVFRBQ0hFRF9ESVNQTEFZUwkJCTB4MGIKCi8qKgogKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fb3VwdHV0X2ZsYWdzIG9mIGRpc3BsYXlzIHN1cHBvcnRpbmcgaG90IHBsdWdnaW5nLgogKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfSE9UX1BMVUdfU1VQUE9SVAkJCTB4MGMKCi8qKgogKiBUYWtlcyBhIHN0cnVjdCBpbnRlbF9zZHZvX291dHB1dF9mbGFncy4KICovCiNkZWZpbmUgU0RWT19DTURfU0VUX0FDVElWRV9IT1RfUExVRwkJCTB4MGQKCi8qKgogKiBSZXR1cm5zIGEgc3RydWN0IGludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIGRpc3BsYXlzIHdpdGggaG90IHBsdWcKICogaW50ZXJydXB0cyBlbmFibGVkLgogKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfQUNUSVZFX0hPVF9QTFVHCQkJMHgwZQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfSU5URVJSVVBUX0VWRU5UX1NPVVJDRQkJMHgwZgpzdHJ1Y3QgaW50ZWxfc2R2b19nZXRfaW50ZXJydXB0X2V2ZW50X3NvdXJjZV9yZXNwb25zZSB7CiAgICB1MTYgaW50ZXJydXB0X3N0YXR1czsKICAgIHVuc2lnbmVkIGludCBhbWJpZW50X2xpZ2h0X2ludGVycnVwdDoxOwogICAgdW5zaWduZWQgaW50IGhkbWlfYXVkaW9fZW5jcnlwdF9jaGFuZ2U6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ6NjsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qKgogKiBTZWxlY3RzIHdoaWNoIGlucHV0IGlzIGFmZmVjdGVkIGJ5IGZ1dHVyZSBpbnB1dCBjb21tYW5kcy4KICoKICogQ29tbWFuZHMgYWZmZWN0ZWQgaW5jbHVkZSBTRVRfSU5QVVRfVElNSU5HU19QQVJUWzEyXSwKICogR0VUX0lOUFVUX1RJTUlOR1NfUEFSVFsxMl0sIEdFVF9QUkVGRVJSRURfSU5QVVRfVElNSU5HU19QQVJUWzEyXSwKICogR0VUX0lOUFVUX1BJWEVMX0NMT0NLX1JBTkdFLCBhbmQgQ1JFQVRFX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdTLgogKi8KI2RlZmluZSBTRFZPX0NNRF9TRVRfVEFSR0VUX0lOUFVUCQkJMHgxMApzdHJ1Y3QgaW50ZWxfc2R2b19zZXRfdGFyZ2V0X2lucHV0X2FyZ3MgewogICAgdW5zaWduZWQgaW50IHRhcmdldF8xOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkOjc7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKioKICogVGFrZXMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19vdXRwdXRfZmxhZ3Mgb2Ygd2hpY2ggb3V0cHV0cyBhcmUgdGFyZ2V0ZWQgYnkKICogZnV0dXJlIG91dHB1dCBjb21tYW5kcy4KICoKICogQWZmZWN0ZWQgY29tbWFuZHMgaW5jbHVlIFNFVF9PVVRQVVRfVElNSU5HU19QQVJUWzEyXSwKICogR0VUX09VVFBVVF9USU1JTkdTX1BBUlRbMTJdLCBhbmQgR0VUX09VVFBVVF9QSVhFTF9DTE9DS19SQU5HRS4KICovCiNkZWZpbmUgU0RWT19DTURfU0VUX1RBUkdFVF9PVVRQVVQJCQkweDExCgojZGVmaW5lIFNEVk9fQ01EX0dFVF9JTlBVVF9USU1JTkdTX1BBUlQxCQkweDEyCiNkZWZpbmUgU0RWT19DTURfR0VUX0lOUFVUX1RJTUlOR1NfUEFSVDIJCTB4MTMKI2RlZmluZSBTRFZPX0NNRF9TRVRfSU5QVVRfVElNSU5HU19QQVJUMQkJMHgxNAojZGVmaW5lIFNEVk9fQ01EX1NFVF9JTlBVVF9USU1JTkdTX1BBUlQyCQkweDE1CiNkZWZpbmUgU0RWT19DTURfU0VUX09VVFBVVF9USU1JTkdTX1BBUlQxCQkweDE2CiNkZWZpbmUgU0RWT19DTURfU0VUX09VVFBVVF9USU1JTkdTX1BBUlQyCQkweDE3CiNkZWZpbmUgU0RWT19DTURfR0VUX09VVFBVVF9USU1JTkdTX1BBUlQxCQkweDE4CiNkZWZpbmUgU0RWT19DTURfR0VUX09VVFBVVF9USU1JTkdTX1BBUlQyCQkweDE5Ci8qIFBhcnQgMSAqLwojIGRlZmluZSBTRFZPX0RURF9DTE9DS19MT1cJCQkJU0RWT19JMkNfQVJHXzAKIyBkZWZpbmUgU0RWT19EVERfQ0xPQ0tfSElHSAkJCQlTRFZPX0kyQ19BUkdfMQojIGRlZmluZSBTRFZPX0RURF9IX0FDVElWRQkJCQlTRFZPX0kyQ19BUkdfMgojIGRlZmluZSBTRFZPX0RURF9IX0JMQU5LCQkJCVNEVk9fSTJDX0FSR18zCiMgZGVmaW5lIFNEVk9fRFREX0hfSElHSAkJCQlTRFZPX0kyQ19BUkdfNAojIGRlZmluZSBTRFZPX0RURF9WX0FDVElWRQkJCQlTRFZPX0kyQ19BUkdfNQojIGRlZmluZSBTRFZPX0RURF9WX0JMQU5LCQkJCVNEVk9fSTJDX0FSR182CiMgZGVmaW5lIFNEVk9fRFREX1ZfSElHSAkJCQlTRFZPX0kyQ19BUkdfNwovKiBQYXJ0IDIgKi8KIyBkZWZpbmUgU0RWT19EVERfSFNZTkNfT0ZGCQkJCVNEVk9fSTJDX0FSR18wCiMgZGVmaW5lIFNEVk9fRFREX0hTWU5DX1dJRFRICQkJCVNEVk9fSTJDX0FSR18xCiMgZGVmaW5lIFNEVk9fRFREX1ZTWU5DX09GRl9XSURUSAkJCVNEVk9fSTJDX0FSR18yCiMgZGVmaW5lIFNEVk9fRFREX1NZTkNfT0ZGX1dJRFRIX0hJR0gJCQlTRFZPX0kyQ19BUkdfMwojIGRlZmluZSBTRFZPX0RURF9EVERfRkxBR1MJCQkJU0RWT19JMkNfQVJHXzQKIyBkZWZpbmUgU0RWT19EVERfRFREX0ZMQUdfSU5URVJMQUNFRAkJCQkoMSA8PCA3KQojIGRlZmluZSBTRFZPX0RURF9EVERfRkxBR19TVEVSRU9fTUFTSwkJCQkoMyA8PCA1KQojIGRlZmluZSBTRFZPX0RURF9EVERfRkxBR19JTlBVVF9NQVNLCQkJCSgzIDw8IDMpCiMgZGVmaW5lIFNEVk9fRFREX0RURF9GTEFHX1NZTkNfTUFTSwkJCQkoMyA8PCAxKQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQVMJCQkJU0RWT19JMkNfQVJHXzUKIyBkZWZpbmUgU0RWT19EVERfU0RWT19GTEFHX1NUQUxMCQkJCSgxIDw8IDcpCiMgZGVmaW5lIFNEVk9fRFREX1NEVk9fRkxBR19DRU5URVJFRAkJCQkoMCA8PCA2KQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQUdfVVBQRVJfTEVGVAkJCQkoMSA8PCA2KQojIGRlZmluZSBTRFZPX0RURF9TRFZPX0ZMQUdfU0NBTElOR19NQVNLCQkJKDMgPDwgNCkKIyBkZWZpbmUgU0RWT19EVERfU0RWT19GTEFHX1NDQUxJTkdfTk9ORQkJCSgwIDw8IDQpCiMgZGVmaW5lIFNEVk9fRFREX1NEVk9fRkxBR19TQ0FMSU5HX1NIQVJQCQkJKDEgPDwgNCkKIyBkZWZpbmUgU0RWT19EVERfU0RWT19GTEFHX1NDQUxJTkdfU01PT1RICQkJKDIgPDwgNCkKIyBkZWZpbmUgU0RWT19EVERfVlNZTkNfT0ZGX0hJR0gJCQlTRFZPX0kyQ19BUkdfNgoKLyoqCiAqIEdlbmVyYXRlcyBhIERURCBiYXNlZCBvbiB0aGUgZ2l2ZW4gd2lkdGgsIGhlaWdodCwgYW5kIGZsYWdzLgogKgogKiBUaGlzIHdpbGwgYmUgc3VwcG9ydGVkIGJ5IGFueSBkZXZpY2Ugc3VwcG9ydGluZyBzY2FsaW5nIG9yIGludGVybGFjZWQKICogbW9kZXMuCiAqLwojZGVmaW5lIFNEVk9fQ01EX0NSRUFURV9QUkVGRVJSRURfSU5QVVRfVElNSU5HCQkweDFhCiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19DTE9DS19MT1cJCVNEVk9fSTJDX0FSR18wCiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19DTE9DS19ISUdICQlTRFZPX0kyQ19BUkdfMQojIGRlZmluZSBTRFZPX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfV0lEVEhfTE9XCQlTRFZPX0kyQ19BUkdfMgojIGRlZmluZSBTRFZPX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfV0lEVEhfSElHSAkJU0RWT19JMkNfQVJHXzMKIyBkZWZpbmUgU0RWT19QUkVGRVJSRURfSU5QVVRfVElNSU5HX0hFSUdIVF9MT1cJCVNEVk9fSTJDX0FSR180CiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19IRUlHSFRfSElHSAlTRFZPX0kyQ19BUkdfNQojIGRlZmluZSBTRFZPX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfRkxBR1MJCVNEVk9fSTJDX0FSR182CiMgZGVmaW5lIFNEVk9fUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19GTEFHU19JTlRFUkxBQ0VECQkoMSA8PCAwKQojIGRlZmluZSBTRFZPX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfRkxBR1NfU0NBTEVECQkoMSA8PCAxKQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfUFJFRkVSUkVEX0lOUFVUX1RJTUlOR19QQVJUMQkweDFiCiNkZWZpbmUgU0RWT19DTURfR0VUX1BSRUZFUlJFRF9JTlBVVF9USU1JTkdfUEFSVDIJMHgxYwoKLyoqIFJldHVybnMgYSBzdHJ1Y3QgaW50ZWxfc2R2b19waXhlbF9jbG9ja19yYW5nZSAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9JTlBVVF9QSVhFTF9DTE9DS19SQU5HRQkJMHgxZAovKiogUmV0dXJucyBhIHN0cnVjdCBpbnRlbF9zZHZvX3BpeGVsX2Nsb2NrX3JhbmdlICovCiNkZWZpbmUgU0RWT19DTURfR0VUX09VVFBVVF9QSVhFTF9DTE9DS19SQU5HRQkJMHgxZQoKLyoqIFJldHVybnMgYSBieXRlIGJpdGZpZWxkIGNvbnRhaW5pbmcgU0RWT19DTE9DS19SQVRFX01VTFRfKiBmbGFncyAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9TVVBQT1JURURfQ0xPQ0tfUkFURV9NVUxUUwkJMHgxZgoKLyoqIFJldHVybnMgYSBieXRlIGNvbnRhaW5pbmcgYSBTRFZPX0NMT0NLX1JBVEVfTVVMVF8qIGZsYWcgKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfQ0xPQ0tfUkFURV9NVUxUCQkJMHgyMAovKiogVGFrZXMgYSBieXRlIGNvbnRhaW5pbmcgYSBTRFZPX0NMT0NLX1JBVEVfTVVMVF8qIGZsYWcgKi8KI2RlZmluZSBTRFZPX0NNRF9TRVRfQ0xPQ0tfUkFURV9NVUxUCQkJMHgyMQojIGRlZmluZSBTRFZPX0NMT0NLX1JBVEVfTVVMVF8xWAkJCQkoMSA8PCAwKQojIGRlZmluZSBTRFZPX0NMT0NLX1JBVEVfTVVMVF8yWAkJCQkoMSA8PCAxKQojIGRlZmluZSBTRFZPX0NMT0NLX1JBVEVfTVVMVF80WAkJCQkoMSA8PCAzKQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfU1VQUE9SVEVEX1RWX0ZPUk1BVFMJCTB4MjcKLyoqIDYgYnl0ZXMgb2YgYml0IGZsYWdzIGZvciBUViBmb3JtYXRzIHNoYXJlZCBieSBhbGwgVFYgZm9ybWF0IGZ1bmN0aW9ucyAqLwpzdHJ1Y3QgaW50ZWxfc2R2b190dl9mb3JtYXQgewogICAgdW5zaWduZWQgaW50IG50c2NfbToxOwogICAgdW5zaWduZWQgaW50IG50c2NfajoxOwogICAgdW5zaWduZWQgaW50IG50c2NfNDQzOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsX2I6MTsKICAgIHVuc2lnbmVkIGludCBwYWxfZDoxOwogICAgdW5zaWduZWQgaW50IHBhbF9nOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsX2g6MTsKICAgIHVuc2lnbmVkIGludCBwYWxfaToxOwoKICAgIHVuc2lnbmVkIGludCBwYWxfbToxOwogICAgdW5zaWduZWQgaW50IHBhbF9uOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsX25jOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsXzYwOjE7CiAgICB1bnNpZ25lZCBpbnQgc2VjYW1fYjoxOwogICAgdW5zaWduZWQgaW50IHNlY2FtX2Q6MTsKICAgIHVuc2lnbmVkIGludCBzZWNhbV9nOjE7CiAgICB1bnNpZ25lZCBpbnQgc2VjYW1fazoxOwoKICAgIHVuc2lnbmVkIGludCBzZWNhbV9rMToxOwogICAgdW5zaWduZWQgaW50IHNlY2FtX2w6MTsKICAgIHVuc2lnbmVkIGludCBzZWNhbV82MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI0MG1fMTA4MGlfNTk6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNDBtXzEwODBpXzYwOjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjYwbV8xMDgwaV81OToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI2MG1fMTA4MGlfNjA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBpXzUwOjE7CgogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MGlfNTk6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBpXzYwOjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwcF8yMzoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfMjQ6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBwXzI1OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwcF8yOToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfMzA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBwXzUwOjE7CgogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfNTk6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBwXzYwOjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjk1bV8xMDgwaV81MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5NW1fMTA4MHBfNTA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yOTZtXzcyMHBfNTk6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yOTZtXzcyMHBfNjA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yOTZtXzcyMHBfNTA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yOTNtXzQ4MHBfNTk6MTsKCiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMTcwbV80ODBpXzU5OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfaXR1cmJ0NjAxXzU3NmlfNTA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9pdHVyYnQ2MDFfNTc2cF81MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX2VpYV83NzAyYV80ODBpXzYwOjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfZWlhXzc3MDJhXzQ4MHBfNjA6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ6MzsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCiNkZWZpbmUgU0RWT19DTURfR0VUX1RWX0ZPUk1BVAkJCQkweDI4CgojZGVmaW5lIFNEVk9fQ01EX1NFVF9UVl9GT1JNQVQJCQkJMHgyOQoKLyoqIFJldHVybnMgdGhlIHJlc29sdXRpb3NuIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgZ2l2ZW4gVFYgZm9ybWF0ICovCiNkZWZpbmUgU0RWT19DTURfR0VUX1NEVFZfUkVTT0xVVElPTl9TVVBQT1JUCQkweDgzCnN0cnVjdCBpbnRlbF9zZHZvX3NkdHZfcmVzb2x1dGlvbl9yZXF1ZXN0IHsKICAgIHVuc2lnbmVkIGludCBudHNjX206MTsKICAgIHVuc2lnbmVkIGludCBudHNjX2o6MTsKICAgIHVuc2lnbmVkIGludCBudHNjXzQ0MzoxOwogICAgdW5zaWduZWQgaW50IHBhbF9iOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsX2Q6MTsKICAgIHVuc2lnbmVkIGludCBwYWxfZzoxOwogICAgdW5zaWduZWQgaW50IHBhbF9oOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFsX2k6MTsKCiAgICB1bnNpZ25lZCBpbnQgcGFsX206MTsKICAgIHVuc2lnbmVkIGludCBwYWxfbjoxOwogICAgdW5zaWduZWQgaW50IHBhbF9uYzoxOwogICAgdW5zaWduZWQgaW50IHBhbF82MDoxOwogICAgdW5zaWduZWQgaW50IHNlY2FtX2I6MTsKICAgIHVuc2lnbmVkIGludCBzZWNhbV9kOjE7CiAgICB1bnNpZ25lZCBpbnQgc2VjYW1fZzoxOwogICAgdW5zaWduZWQgaW50IHNlY2FtX2s6MTsKCiAgICB1bnNpZ25lZCBpbnQgc2VjYW1fazE6MTsKICAgIHVuc2lnbmVkIGludCBzZWNhbV9sOjE7CiAgICB1bnNpZ25lZCBpbnQgc2VjYW1fNjA6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ6NTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBpbnRlbF9zZHZvX3NkdHZfcmVzb2x1dGlvbl9yZXBseSB7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzMyMHgyMDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMzIweDI0MDoxOwogICAgdW5zaWduZWQgaW50IHJlc180MDB4MzAwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzY0MHgzNTA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfNjQweDQwMDoxOwogICAgdW5zaWduZWQgaW50IHJlc182NDB4NDgwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzcwNHg0ODA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfNzA0eDU3NjoxOwoKICAgIHVuc2lnbmVkIGludCByZXNfNzIweDM1MDoxOwogICAgdW5zaWduZWQgaW50IHJlc183MjB4NDAwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzcyMHg0ODA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfNzIweDU0MDoxOwogICAgdW5zaWduZWQgaW50IHJlc183MjB4NTc2OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzc2OHg1NzY6MTsKICAgIHVuc2lnbmVkIGludCByZXNfODAweDYwMDoxOwogICAgdW5zaWduZWQgaW50IHJlc184MzJ4NjI0OjE7CgogICAgdW5zaWduZWQgaW50IHJlc185MjB4NzY2OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEwMjR4NzY4OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEyODB4MTAyNDoxOwogICAgdW5zaWduZWQgaW50IHBhZDo1Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogR2V0IHN1cHBvcnRlZCByZXNvbHV0aW9uIHdpdGggc3F1aXJlIHBpeGVsIGFzcGVjdCByYXRpbyB0aGF0IGNhbiBiZQogICBzY2FsZWQgZm9yIHRoZSByZXF1ZXN0ZWQgSERUViBmb3JtYXQgKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfU0NBTEVEX0hEVFZfUkVTT0xVVElPTl9TVVBQT1JUCQkweDg1CgpzdHJ1Y3QgaW50ZWxfc2R2b19oZHR2X3Jlc29sdXRpb25fcmVxdWVzdCB7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjQwbV8xMDgwaV81OToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI0MG1fMTA4MGlfNjA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNjBtXzEwODBpXzU5OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjYwbV8xMDgwaV82MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MGlfNTA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBpXzU5OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwaV82MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfMjM6MTsKCiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwcF8yNDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfMjU6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBwXzI5OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwcF8zMDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI3NG1fMTA4MHBfNTA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9zbXB0ZV8yNzRtXzEwODBwXzU5OjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjc0bV8xMDgwcF82MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5NW1fMTA4MGlfNTA6MTsKCiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfc21wdGVfMjk1bV8xMDgwcF81MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5Nm1fNzIwcF81OToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5Nm1fNzIwcF82MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5Nm1fNzIwcF81MDoxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzI5M21fNDgwcF81OToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX3NtcHRlXzE3MG1fNDgwaV81OToxOwogICAgdW5zaWduZWQgaW50IGhkdHZfc3RkX2l0dXJidDYwMV81NzZpXzUwOjE7CiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfaXR1cmJ0NjAxXzU3NnBfNTA6MTsKCiAgICB1bnNpZ25lZCBpbnQgaGR0dl9zdGRfZWlhXzc3MDJhXzQ4MGlfNjA6MTsKICAgIHVuc2lnbmVkIGludCBoZHR2X3N0ZF9laWFfNzcwMmFfNDgwcF82MDoxOwogICAgdW5zaWduZWQgaW50IHBhZDo2Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGludGVsX3Nkdm9faGR0dl9yZXNvbHV0aW9uX3JlcGx5IHsKICAgIHVuc2lnbmVkIGludCByZXNfNjQweDQ4MDoxOwogICAgdW5zaWduZWQgaW50IHJlc184MDB4NjAwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEwMjR4NzY4OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEyODB4OTYwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzE0MDB4MTA1MDoxOwogICAgdW5zaWduZWQgaW50IHJlc18xNjAweDEyMDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMTkyMHgxNDQwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzIwNDh4MTUzNjoxOwoKICAgIHVuc2lnbmVkIGludCByZXNfMjU2MHgxOTIwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzMyMDB4MjQwMDoxOwogICAgdW5zaWduZWQgaW50IHJlc18zODQweDI4ODA6MTsKICAgIHVuc2lnbmVkIGludCBwYWQxOjU7CgogICAgdW5zaWduZWQgaW50IHJlc184NDh4NDgwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEwNjR4NjAwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEyODB4NzIwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzEzNjB4NzY4OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzE3MDR4OTYwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzE4NjR4MTA1MDoxOwogICAgdW5zaWduZWQgaW50IHJlc18xOTIweDEwODA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMjEyOHgxMjAwOjE7CgogICAgdW5zaWduZWQgaW50IHJlc18yNTYweDE0MDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMjcyOHgxNTM2OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzM0MDh4MTkyMDoxOwogICAgdW5zaWduZWQgaW50IHJlc180MjY0eDI0MDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfNTEyMHgyODgwOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkMjozOwoKICAgIHVuc2lnbmVkIGludCByZXNfNzY4eDQ4MDoxOwogICAgdW5zaWduZWQgaW50IHJlc185NjB4NjAwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzExNTJ4NzIwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzExMjR4NzY4OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzE1MzZ4OTYwOjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzE2ODB4MTA1MDoxOwogICAgdW5zaWduZWQgaW50IHJlc18xNzI4eDEwODA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMTkyMHgxMjAwOjE7CgogICAgdW5zaWduZWQgaW50IHJlc18yMzA0eDE0NDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfMjQ1NngxNTM2OjE7CiAgICB1bnNpZ25lZCBpbnQgcmVzXzMwNzJ4MTkyMDoxOwogICAgdW5zaWduZWQgaW50IHJlc18zODQweDI0MDA6MTsKICAgIHVuc2lnbmVkIGludCByZXNfNDYwOHgyODgwOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkMzozOwoKICAgIHVuc2lnbmVkIGludCByZXNfMTI4MHgxMDI0OjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkNDo3OwoKICAgIHVuc2lnbmVkIGludCByZXNfMTI4MHg3Njg6MTsKICAgIHVuc2lnbmVkIGludCBwYWQ1Ojc7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKiBHZXQgc3VwcG9ydGVkIHBvd2VyIHN0YXRlIHJldHVybnMgaW5mbyBmb3IgZW5jb2RlciBhbmQgbW9uaXRvciwgcmVseSBvbgogICBsYXN0IFNldFRhcmdldElucHV0IGFuZCBTZXRUYXJnZXRPdXRwdXQgY2FsbHMgKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfU1VQUE9SVEVEX1BPV0VSX1NUQVRFUwkJMHgyYQovKiBHZXQgcG93ZXIgc3RhdGUgcmV0dXJucyBpbmZvIGZvciBlbmNvZGVyIGFuZCBtb25pdG9yLCByZWx5IG9uIGxhc3QKICAgU2V0VGFyZ2V0SW5wdXQgYW5kIFNldFRhcmdldE91dHB1dCBjYWxscyAqLwojZGVmaW5lIFNEVk9fQ01EX0dFVF9QT1dFUl9TVEFURQkJCTB4MmIKI2RlZmluZSBTRFZPX0NNRF9HRVRfRU5DT0RFUl9QT1dFUl9TVEFURQkJMHgyYgojZGVmaW5lIFNEVk9fQ01EX1NFVF9FTkNPREVSX1BPV0VSX1NUQVRFCQkweDJjCiMgZGVmaW5lIFNEVk9fRU5DT0RFUl9TVEFURV9PTgkJCQkJKDEgPDwgMCkKIyBkZWZpbmUgU0RWT19FTkNPREVSX1NUQVRFX1NUQU5EQlkJCQkJKDEgPDwgMSkKIyBkZWZpbmUgU0RWT19FTkNPREVSX1NUQVRFX1NVU1BFTkQJCQkJKDEgPDwgMikKIyBkZWZpbmUgU0RWT19FTkNPREVSX1NUQVRFX09GRgkJCQkJKDEgPDwgMykKIyBkZWZpbmUgU0RWT19NT05JVE9SX1NUQVRFX09OCQkJCQkoMSA8PCA0KQojIGRlZmluZSBTRFZPX01PTklUT1JfU1RBVEVfU1RBTkRCWQkJCQkoMSA8PCA1KQojIGRlZmluZSBTRFZPX01PTklUT1JfU1RBVEVfU1VTUEVORAkJCQkoMSA8PCA2KQojIGRlZmluZSBTRFZPX01PTklUT1JfU1RBVEVfT0ZGCQkJCQkoMSA8PCA3KQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX1BBTkVMX1BPV0VSX1NFUVVFTkNJTkcJCTB4MmQKI2RlZmluZSBTRFZPX0NNRF9HRVRfUEFORUxfUE9XRVJfU0VRVUVOQ0lORwkJMHgyZQojZGVmaW5lIFNEVk9fQ01EX1NFVF9QQU5FTF9QT1dFUl9TRVFVRU5DSU5HCQkweDJmCi8qKgogKiBUaGUgcGFuZWwgcG93ZXIgc2VxdWVuY2luZyBwYXJhbWV0ZXJzIGFyZSBpbiB1bml0cyBvZiBtaWxsaXNlY29uZHMuCiAqIFRoZSBoaWdoIGZpZWxkcyBhcmUgYml0cyA4Ojkgb2YgdGhlIDEwLWJpdCB2YWx1ZXMuCiAqLwpzdHJ1Y3Qgc2R2b19wYW5lbF9wb3dlcl9zZXF1ZW5jaW5nIHsKICAgIHU4IHQwOwogICAgdTggdDE7CiAgICB1OCB0MjsKICAgIHU4IHQzOwogICAgdTggdDQ7CgogICAgdW5zaWduZWQgaW50IHQwX2hpZ2g6MjsKICAgIHVuc2lnbmVkIGludCB0MV9oaWdoOjI7CiAgICB1bnNpZ25lZCBpbnQgdDJfaGlnaDoyOwogICAgdW5zaWduZWQgaW50IHQzX2hpZ2g6MjsKCiAgICB1bnNpZ25lZCBpbnQgdDRfaGlnaDoyOwogICAgdW5zaWduZWQgaW50IHBhZDo2Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX0JBQ0tMSUdIVF9MRVZFTAkJMHgzMApzdHJ1Y3Qgc2R2b19tYXhfYmFja2xpZ2h0X3JlcGx5IHsKICAgIHU4IG1heF92YWx1ZTsKICAgIHU4IGRlZmF1bHRfdmFsdWU7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgojZGVmaW5lIFNEVk9fQ01EX0dFVF9CQUNLTElHSFRfTEVWRUwJCQkweDMxCiNkZWZpbmUgU0RWT19DTURfU0VUX0JBQ0tMSUdIVF9MRVZFTAkJCTB4MzIKCiNkZWZpbmUgU0RWT19DTURfR0VUX0FNQklFTlRfTElHSFQJCQkweDMzCnN0cnVjdCBzZHZvX2dldF9hbWJpZW50X2xpZ2h0X3JlcGx5IHsKICAgIHUxNiB0cmlwX2xvdzsKICAgIHUxNiB0cmlwX2hpZ2g7CiAgICB1MTYgdmFsdWU7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiNkZWZpbmUgU0RWT19DTURfU0VUX0FNQklFTlRfTElHSFQJCQkweDM0CnN0cnVjdCBzZHZvX3NldF9hbWJpZW50X2xpZ2h0X3JlcGx5IHsKICAgIHUxNiB0cmlwX2xvdzsKICAgIHUxNiB0cmlwX2hpZ2g7CiAgICB1bnNpZ25lZCBpbnQgZW5hYmxlOjE7CiAgICB1bnNpZ25lZCBpbnQgcGFkOjc7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKiBTZXQgZGlzcGxheSBwb3dlciBzdGF0ZSAqLwojZGVmaW5lIFNEVk9fQ01EX1NFVF9ESVNQTEFZX1BPV0VSX1NUQVRFCQkweDdkCiMgZGVmaW5lIFNEVk9fRElTUExBWV9TVEFURV9PTgkJCQkoMSA8PCAwKQojIGRlZmluZSBTRFZPX0RJU1BMQVlfU1RBVEVfU1RBTkRCWQkJCSgxIDw8IDEpCiMgZGVmaW5lIFNEVk9fRElTUExBWV9TVEFURV9TVVNQRU5ECQkJKDEgPDwgMikKIyBkZWZpbmUgU0RWT19ESVNQTEFZX1NUQVRFX09GRgkJCQkoMSA8PCAzKQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfU1VQUE9SVEVEX0VOSEFOQ0VNRU5UUwkJMHg4NApzdHJ1Y3QgaW50ZWxfc2R2b19lbmhhbmNlbWVudHNfcmVwbHkgewogICAgdW5zaWduZWQgaW50IGZsaWNrZXJfZmlsdGVyOjE7CiAgICB1bnNpZ25lZCBpbnQgZmxpY2tlcl9maWx0ZXJfYWRhcHRpdmU6MTsKICAgIHVuc2lnbmVkIGludCBmbGlja2VyX2ZpbHRlcl8yZDoxOwogICAgdW5zaWduZWQgaW50IHNhdHVyYXRpb246MTsKICAgIHVuc2lnbmVkIGludCBodWU6MTsKICAgIHVuc2lnbmVkIGludCBicmlnaHRuZXNzOjE7CiAgICB1bnNpZ25lZCBpbnQgY29udHJhc3Q6MTsKICAgIHVuc2lnbmVkIGludCBvdmVyc2Nhbl9oOjE7CgogICAgdW5zaWduZWQgaW50IG92ZXJzY2FuX3Y6MTsKICAgIHVuc2lnbmVkIGludCBocG9zOjE7CiAgICB1bnNpZ25lZCBpbnQgdnBvczoxOwogICAgdW5zaWduZWQgaW50IHNoYXJwbmVzczoxOwogICAgdW5zaWduZWQgaW50IGRvdF9jcmF3bDoxOwogICAgdW5zaWduZWQgaW50IGRpdGhlcjoxOwogICAgdW5zaWduZWQgaW50IHR2X2Nocm9tYV9maWx0ZXI6MTsKICAgIHVuc2lnbmVkIGludCB0dl9sdW1hX2ZpbHRlcjoxOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKLyogUGljdHVyZSBlbmhhbmNlbWVudCBsaW1pdHMgYmVsb3cgYXJlIGRlcGVuZGVudCBvbiB0aGUgY3VycmVudCBUViBmb3JtYXQsCiAqIGFuZCB0aHVzIG5lZWQgdG8gYmUgcXVlcmllZCBhbmQgc2V0IGFmdGVyIGl0LgogKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX0ZMSUNLRVJfRklMVEVSCQkJMHg0ZAojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfRkxJQ0tFUl9GSUxURVJfQURBUFRJVkUJMHg3YgojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfRkxJQ0tFUl9GSUxURVJfMkQJCTB4NTIKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX1NBVFVSQVRJT04JCQkweDU1CiNkZWZpbmUgU0RWT19DTURfR0VUX01BWF9IVUUJCQkJMHg1OAojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfQlJJR0hUTkVTUwkJCTB4NWIKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX0NPTlRSQVNUCQkJMHg1ZQojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfT1ZFUlNDQU5fSAkJCTB4NjEKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX09WRVJTQ0FOX1YJCQkweDY0CiNkZWZpbmUgU0RWT19DTURfR0VUX01BWF9IUE9TCQkJCTB4NjcKI2RlZmluZSBTRFZPX0NNRF9HRVRfTUFYX1ZQT1MJCQkJMHg2YQojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfU0hBUlBORVNTCQkJMHg2ZAojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfVFZfQ0hST01BX0ZJTFRFUgkJMHg3NAojZGVmaW5lIFNEVk9fQ01EX0dFVF9NQVhfVFZfTFVNQV9GSUxURVIJCQkweDc3CnN0cnVjdCBpbnRlbF9zZHZvX2VuaGFuY2VtZW50X2xpbWl0c19yZXBseSB7CiAgICB1MTYgbWF4X3ZhbHVlOwogICAgdTE2IGRlZmF1bHRfdmFsdWU7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgojZGVmaW5lIFNEVk9fQ01EX0dFVF9MVkRTX1BBTkVMX0lORk9STUFUSU9OCQkweDdmCiNkZWZpbmUgU0RWT19DTURfU0VUX0xWRFNfUEFORUxfSU5GT1JNQVRJT04JCTB4ODAKIyBkZWZpbmUgU0RWT19MVkRTX0NPTE9SX0RFUFRIXzE4CQkJKDAgPDwgMCkKIyBkZWZpbmUgU0RWT19MVkRTX0NPTE9SX0RFUFRIXzI0CQkJKDEgPDwgMCkKIyBkZWZpbmUgU0RWT19MVkRTX0NPTk5FQ1RPUl9TUFdHCQkJKDAgPDwgMikKIyBkZWZpbmUgU0RWT19MVkRTX0NPTk5FQ1RPUl9PUEVOTERJCQkJKDEgPDwgMikKIyBkZWZpbmUgU0RWT19MVkRTX1NJTkdMRV9DSEFOTkVMCQkJKDAgPDwgNCkKIyBkZWZpbmUgU0RWT19MVkRTX0RVQUxfQ0hBTk5FTAkJCQkoMSA8PCA0KQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfRkxJQ0tFUl9GSUxURVIJCQkweDRlCiNkZWZpbmUgU0RWT19DTURfU0VUX0ZMSUNLRVJfRklMVEVSCQkJMHg0ZgojZGVmaW5lIFNEVk9fQ01EX0dFVF9GTElDS0VSX0ZJTFRFUl9BREFQVElWRQkJMHg1MAojZGVmaW5lIFNEVk9fQ01EX1NFVF9GTElDS0VSX0ZJTFRFUl9BREFQVElWRQkJMHg1MQojZGVmaW5lIFNEVk9fQ01EX0dFVF9GTElDS0VSX0ZJTFRFUl8yRAkJCTB4NTMKI2RlZmluZSBTRFZPX0NNRF9TRVRfRkxJQ0tFUl9GSUxURVJfMkQJCQkweDU0CiNkZWZpbmUgU0RWT19DTURfR0VUX1NBVFVSQVRJT04JCQkJMHg1NgojZGVmaW5lIFNEVk9fQ01EX1NFVF9TQVRVUkFUSU9OCQkJCTB4NTcKI2RlZmluZSBTRFZPX0NNRF9HRVRfSFVFCQkJCTB4NTkKI2RlZmluZSBTRFZPX0NNRF9TRVRfSFVFCQkJCTB4NWEKI2RlZmluZSBTRFZPX0NNRF9HRVRfQlJJR0hUTkVTUwkJCQkweDVjCiNkZWZpbmUgU0RWT19DTURfU0VUX0JSSUdIVE5FU1MJCQkJMHg1ZAojZGVmaW5lIFNEVk9fQ01EX0dFVF9DT05UUkFTVAkJCQkweDVmCiNkZWZpbmUgU0RWT19DTURfU0VUX0NPTlRSQVNUCQkJCTB4NjAKI2RlZmluZSBTRFZPX0NNRF9HRVRfT1ZFUlNDQU5fSAkJCQkweDYyCiNkZWZpbmUgU0RWT19DTURfU0VUX09WRVJTQ0FOX0gJCQkJMHg2MwojZGVmaW5lIFNEVk9fQ01EX0dFVF9PVkVSU0NBTl9WCQkJCTB4NjUKI2RlZmluZSBTRFZPX0NNRF9TRVRfT1ZFUlNDQU5fVgkJCQkweDY2CiNkZWZpbmUgU0RWT19DTURfR0VUX0hQT1MJCQkJMHg2OAojZGVmaW5lIFNEVk9fQ01EX1NFVF9IUE9TCQkJCTB4NjkKI2RlZmluZSBTRFZPX0NNRF9HRVRfVlBPUwkJCQkweDZiCiNkZWZpbmUgU0RWT19DTURfU0VUX1ZQT1MJCQkJMHg2YwojZGVmaW5lIFNEVk9fQ01EX0dFVF9TSEFSUE5FU1MJCQkJMHg2ZQojZGVmaW5lIFNEVk9fQ01EX1NFVF9TSEFSUE5FU1MJCQkJMHg2ZgojZGVmaW5lIFNEVk9fQ01EX0dFVF9UVl9DSFJPTUFfRklMVEVSCQkJMHg3NQojZGVmaW5lIFNEVk9fQ01EX1NFVF9UVl9DSFJPTUFfRklMVEVSCQkJMHg3NgojZGVmaW5lIFNEVk9fQ01EX0dFVF9UVl9MVU1BX0ZJTFRFUgkJCTB4NzgKI2RlZmluZSBTRFZPX0NNRF9TRVRfVFZfTFVNQV9GSUxURVIJCQkweDc5CnN0cnVjdCBpbnRlbF9zZHZvX2VuaGFuY2VtZW50c19hcmcgewogICAgdTE2IHZhbHVlOwp9X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgojZGVmaW5lIFNEVk9fQ01EX0dFVF9ET1RfQ1JBV0wJCQkJMHg3MAojZGVmaW5lIFNEVk9fQ01EX1NFVF9ET1RfQ1JBV0wJCQkJMHg3MQojIGRlZmluZSBTRFZPX0RPVF9DUkFXTF9PTgkJCQkJKDEgPDwgMCkKIyBkZWZpbmUgU0RWT19ET1RfQ1JBV0xfREVGQVVMVF9PTgkJCQkoMSA8PCAxKQoKI2RlZmluZSBTRFZPX0NNRF9HRVRfRElUSEVSCQkJCTB4NzIKI2RlZmluZSBTRFZPX0NNRF9TRVRfRElUSEVSCQkJCTB4NzMKIyBkZWZpbmUgU0RWT19ESVRIRVJfT04JCQkJCQkoMSA8PCAwKQojIGRlZmluZSBTRFZPX0RJVEhFUl9ERUZBVUxUX09OCQkJCQkoMSA8PCAxKQoKI2RlZmluZSBTRFZPX0NNRF9TRVRfQ09OVFJPTF9CVVNfU1dJVENICQkJMHg3YQojIGRlZmluZSBTRFZPX0NPTlRST0xfQlVTX1BST00JCQkJKDEgPDwgMCkKIyBkZWZpbmUgU0RWT19DT05UUk9MX0JVU19EREMxCQkJCSgxIDw8IDEpCiMgZGVmaW5lIFNEVk9fQ09OVFJPTF9CVVNfRERDMgkJCQkoMSA8PCAyKQojIGRlZmluZSBTRFZPX0NPTlRST0xfQlVTX0REQzMJCQkJKDEgPDwgMykKCi8qIEhETUkgb3AgY29kZXMgKi8KI2RlZmluZSBTRFZPX0NNRF9HRVRfU1VQUF9FTkNPREUJMHg5ZAojZGVmaW5lIFNEVk9fQ01EX0dFVF9FTkNPREUJCTB4OWUKI2RlZmluZSBTRFZPX0NNRF9TRVRfRU5DT0RFCQkweDlmCiAgI2RlZmluZSBTRFZPX0VOQ09ERV9EVkkJMHgwCiAgI2RlZmluZSBTRFZPX0VOQ09ERV9IRE1JCTB4MQojZGVmaW5lIFNEVk9fQ01EX1NFVF9QSVhFTF9SRVBMSQkweDhiCiNkZWZpbmUgU0RWT19DTURfR0VUX1BJWEVMX1JFUExJCTB4OGMKI2RlZmluZSBTRFZPX0NNRF9HRVRfQ09MT1JJTUVUUllfQ0FQCTB4OGQKI2RlZmluZSBTRFZPX0NNRF9TRVRfQ09MT1JJTUVUUlkJMHg4ZQogICNkZWZpbmUgU0RWT19DT0xPUklNRVRSWV9SR0IyNTYgICAweDAKICAjZGVmaW5lIFNEVk9fQ09MT1JJTUVUUllfUkdCMjIwICAgMHgxCiAgI2RlZmluZSBTRFZPX0NPTE9SSU1FVFJZX1lDckNiNDIyIDB4MwogICNkZWZpbmUgU0RWT19DT0xPUklNRVRSWV9ZQ3JDYjQ0NCAweDQKI2RlZmluZSBTRFZPX0NNRF9HRVRfQ09MT1JJTUVUUlkJMHg4ZgojZGVmaW5lIFNEVk9fQ01EX0dFVF9BVURJT19FTkNSWVBUX1BSRUZFUiAweDkwCiNkZWZpbmUgU0RWT19DTURfU0VUX0FVRElPX1NUQVQJCTB4OTEKI2RlZmluZSBTRFZPX0NNRF9HRVRfQVVESU9fU1RBVAkJMHg5MgojZGVmaW5lIFNEVk9fQ01EX1NFVF9IQlVGX0lOREVYCQkweDkzCiNkZWZpbmUgU0RWT19DTURfR0VUX0hCVUZfSU5ERVgJCTB4OTQKI2RlZmluZSBTRFZPX0NNRF9HRVRfSEJVRl9JTkZPCQkweDk1CiNkZWZpbmUgU0RWT19DTURfU0VUX0hCVUZfQVZfU1BMSVQJMHg5NgojZGVmaW5lIFNEVk9fQ01EX0dFVF9IQlVGX0FWX1NQTElUCTB4OTcKI2RlZmluZSBTRFZPX0NNRF9TRVRfSEJVRl9EQVRBCQkweDk4CiNkZWZpbmUgU0RWT19DTURfR0VUX0hCVUZfREFUQQkJMHg5OQojZGVmaW5lIFNEVk9fQ01EX1NFVF9IQlVGX1RYUkFURQkweDlhCiNkZWZpbmUgU0RWT19DTURfR0VUX0hCVUZfVFhSQVRFCTB4OWIKICAjZGVmaW5lIFNEVk9fSEJVRl9UWF9ESVNBQkxFRAkoMCA8PCA2KQogICNkZWZpbmUgU0RWT19IQlVGX1RYX09OQ0UJKDIgPDwgNikKICAjZGVmaW5lIFNEVk9fSEJVRl9UWF9WU1lOQwkoMyA8PCA2KQojZGVmaW5lIFNEVk9fQ01EX0dFVF9BVURJT19UWF9JTkZPCTB4OWMKI2RlZmluZSBTRFZPX05FRURfVE9fU1RBTEwgICgxIDw8IDcpCgpzdHJ1Y3QgaW50ZWxfc2R2b19lbmNvZGV7CiAgICB1OCBkdmlfcmV2OwogICAgdTggaGRtaV9yZXY7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwo=