LyoKICogTkRBIEFORCBORUVELVRPLUtOT1cgUkVRVUlSRUQKICoKICogQ29weXJpZ2h0IKkgMjAxMy0yMDE4IFN5bmFwdGljcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFRoaXMgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGlzIHByb3ByaWV0YXJ5IHRvIFN5bmFwdGljcwogKiBJbmNvcnBvcmF0ZWQgKCJTeW5hcHRpY3MiKS4gVGhlIGhvbGRlciBvZiB0aGlzIGZpbGUgc2hhbGwgdHJlYXQgYWxsCiAqIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gYXMgY29uZmlkZW50aWFsLCBzaGFsbCB1c2UgdGhlCiAqIGluZm9ybWF0aW9uIG9ubHkgZm9yIGl0cyBpbnRlbmRlZCBwdXJwb3NlLCBhbmQgc2hhbGwgbm90IGR1cGxpY2F0ZSwKICogZGlzY2xvc2UsIG9yIGRpc3NlbWluYXRlIGFueSBvZiB0aGlzIGluZm9ybWF0aW9uIGluIGFueSBtYW5uZXIKICogdW5sZXNzIFN5bmFwdGljcyBoYXMgb3RoZXJ3aXNlIHByb3ZpZGVkIGV4cHJlc3MsIHdyaXR0ZW4KICogcGVybWlzc2lvbi4KICoKICogVXNlIG9mIHRoZSBtYXRlcmlhbHMgbWF5IHJlcXVpcmUgYSBsaWNlbnNlIG9mIGludGVsbGVjdHVhbCBwcm9wZXJ0eQogKiBmcm9tIGEgdGhpcmQgcGFydHkgb3IgZnJvbSBTeW5hcHRpY3MuIFRoaXMgZmlsZSBjb252ZXlzIG5vIGV4cHJlc3MKICogb3IgaW1wbGllZCBsaWNlbnNlcyB0byBhbnkgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBiZWxvbmdpbmcKICogdG8gU3luYXB0aWNzLgogKgogKiBJTkZPUk1BVElPTiBDT05UQUlORUQgSU4gVEhJUyBET0NVTUVOVCBJUyBQUk9WSURFRCAiQVMtSVMsIiBBTkQKICogU1lOQVBUSUNTIEVYUFJFU1NMWSBESVNDTEFJTVMgQUxMIEVYUFJFU1MgQU5EIElNUExJRUQgV0FSUkFOVElFUywKICogSU5DTFVESU5HIEFOWSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgogKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQU5EIEFOWSBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQgT0YgQU5ZCiAqIElOVEVMTEVDVFVBTCBQUk9QRVJUWSBSSUdIVFMuIElOIE5PIEVWRU5UIFNIQUxMIFNZTkFQVElDUyBCRSBMSUFCTEUKICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBQVU5JVElWRSwgT1IKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFCiAqIE9GIFRIRSBJTkZPUk1BVElPTiBDT05UQUlORUQgSU4gVEhJUyBET0NVTUVOVCwgSE9XRVZFUiBDQVVTRUQgQU5ECiAqIEJBU0VEIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKICogTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFORCBFVkVOIElGIFNZTkFQVElDUyBXQVMKICogQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIElGIEEgVFJJQlVOQUwgT0YKICogQ09NUEVURU5UIEpVUklTRElDVElPTiBET0VTIE5PVCBQRVJNSVQgVEhFIERJU0NMQUlNRVIgT0YgRElSRUNUCiAqIERBTUFHRVMgT1IgQU5ZIE9USEVSIERBTUFHRVMsIFNZTkFQVElDUycgVE9UQUwgQ1VNVUxBVElWRSBMSUFCSUxJVFkKICogVE8gQU5ZIFBBUlRZIFNIQUxMIE5PVCBFWENFRUQgT05FIEhVTkRSRUQgVS5TLiBET0xMQVJTLgogKi8KI2lmbmRlZiBfX05BTkRfUFJJVl9ICiNkZWZpbmUgX19OQU5EX1BSSVZfSAoKI2lmIGRlZmluZWQoX19VQk9PVF9fKQojaW5jbHVkZSAibmFuZF9jaGlwLmgiCiNlbmRpZiAvKiAjaWYgZGVmaW5lZChfX1VCT09UX18pICovCnR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKI2RlZmluZSBNVl9OQU5EX0RGQ19SRUdfQkFTRQkJTUVNTUFQX05BTkRfRkxBU0hfUkVHX0JBU0UJCS8vIFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgRGF0YSBGbGFzaCBDb250cm9sbGVyCiNkZWZpbmUgTVZfTkFORF9NQVhfUEFHRV9TSVpFICAgICAgIDgqMTAyNAojZGVmaW5lIE1WX05BTkRfTUFYX09PQl9TSVpFICAgICAgICA2NDAKLy8gVXNlZCBnZW5lcmFsbHkgMiBraW5kcyBvZiBOYW5kIGRldmljZXMsIGFsbCBmcm9tIFNhbXN1bmcKLy8gMS4gMksgcGFnZSBkZXZpY2VzLCBpbmNsdWRpbmcgSzlXQUcwOFUxQSAoU0xDIDhHYioyQ0UpIGFuZCBLOUc4RzA4VTBNIChNTEMgOEdiKQovLyAyLiA0SyBwYWdlIGRldmljZWVzLCBpbmNsdWRpbmcgSzlHQUcwOFUwTSAoTUxDIDE2R2IpCgovLyBTYW1zdW5nIEs5V0FHMDhVMUEsIGNvbXBvc2VkIG9mIDIgSzlLOEcwOFUwQS4KLy8gSzlLOEcwOFUwQTogOEdiIHsoMksgKyA2NCktQnl0ZXMvUGFnZSwgNjQtUGFnZXMvQmxvY2ssIGkuZS4gOEstQmxvY2tzID0gNTEySy1wYWdlc30KCiNkZWZpbmUgTVZfTkFORF9ORFNSX1dSQ01EUkVRCQkweDAwMDAwMDAxCQkJLy8gV3JpdGUgY29tbWFuZCByZXF1ZXN0IGJpdAojZGVmaW5lIE1WX05BTkRfTkRTUl9SRERSRVEJCTB4MDAwMDAwMDIJCQkvLyBSZWFkIERhdGEgUmVxdWVzdAojZGVmaW5lIE1WX05BTkRfTkRTUl9SRFkwCQkJMHgwMDAwMDgwMAkJCS8vIE5EX25DUzAgUmVhZHkgYml0CiNkZWZpbmUgTVZfTkFORF9ORFNSX0NTMF9DTURECQkweDAwMDAwMTAwCQkJLy8gTkRfbkNTMCBjb21tYW5kIGlzIGRvbmUKI2RlZmluZSBNVl9OQU5EX05EU1JfQ1MwX1BBR0VECQkweDAwMDAwNDAwCQkJLy8gTkRfbkNTMCBoYXMgY29tcGxldGVkIGEgcGFnZSBvZiBhY2Nlc3MKI2RlZmluZSBNVl9OQU5EX05EU1JfQ1MwX0JCRAkJMHgwMDAwMDA0MAkJCS8vIE5EX25DUzAgcHJvZ3JhbS9lcmFzZSBhdXRvLXN0YXR1cy1yZWFkIGZhaWx1cmUKI2RlZmluZSBNVl9OQU5EX05EU1JfUkRZMQkJCTB4MDAwMDEwMDAJCQkvLyBORF9uQ1MxIFJlYWR5IGJpdAojZGVmaW5lIE1WX05BTkRfTkRTUl9DUzFfQ01ERAkJMHgwMDAwMDA4MAkJCS8vIE5EX25DUzEgY29tbWFuZCBpcyBkb25lCiNkZWZpbmUgTVZfTkFORF9ORFNSX0NTMV9QQUdFRAkJMHgwMDAwMDIwMAkJCS8vIE5EX25DUzEgaGFzIGNvbXBsZXRlZCBhIHBhZ2Ugb2YgYWNjZXNzCiNkZWZpbmUgTVZfTkFORF9ORFNSX0NTMV9CQkQJCTB4MDAwMDAwNDAJCQkvLyBORF9uQ1MxIHByb2dyYW0vZXJhc2UgYXV0by1zdGF0dXMtcmVhZCBmYWlsdXJlCiNkZWZpbmUgTVZfTkFORF9ORFNSX1dSRFJFUQkJMHgwMDAwMDAwNAkJCS8vIFdyaXRlIERhdGEgcmVxdWVzdAojZGVmaW5lIE1WX05BTkRfTkRTUl9DT1JFUlIJCTB4MDAwMDAwMDgJCQkvLyBDb3JyZWN0YWJsZSBlcnJvciBkZXRlY3RlZAojZGVmaW5lIE1WX05BTkRfTkRTUl9VTkNFUlIJCTB4MDAwMDAwMTAJCQkvLyBVbkNvcnJlY3RhYmxlIGVycm9yIGRldGVjdGVkCiNkZWZpbmUgTVZfTkFORF9ORENSX05EX1JVTgkJMHgxMDAwMDAwMAkJCS8vIE5BTkQgQ29udHJvbGxlciBSVU4gbW9kZSBiaXQKI2RlZmluZSBNVl9OQU5EX05EQ0JfQ1NFTAkJCTB4MDEwMDAwMDAJCQkvLyBOQU5EIG5DUzEgb3IgbkNTMAojZGVmaW5lIE1WX05BTkRfTkRDQl9OQwkJCTB4MDAxMDAwMDAJCQkvLyBOQU5EIG5DUzEgb3IgbkNTMAojZGVmaW5lIE1WX05BTkRfTkRDQl9BVVRPX1JTCQkweDAyMDAwMDAwCQkJLy8gTkFORCBhdXRvbWF0aWMgY2hlY2sgc3RhdHVzCiNkZWZpbmUgTVZfTkFORF9ORENSX1NQQVJFX0VOCQkweDgwMDAwMDAwCiNkZWZpbmUgTVZfTkFORF9ORENSX0VDQ19FTgkJMHg0MDAwMDAwMAojZGVmaW5lIE1WX05BTkRfTkRDUl9TVE9QX09OX1VOQ09SCTB4MDAwODAwMDAKI2RlZmluZSBNVl9OQU5EX05EQ1JfRE1BX0VOCQkweDIwMDAwMDAwCgojZGVmaW5lIE1WX05BTkRfTkRDUl9QR19QRVJfQkxLX0JJVFMJCQkyCiNkZWZpbmUgTVZfTkFORF9ORENSX1BHX1BFUl9CTEtfTFNCCQkJMTMKCiNkZWZpbmUgTVZfTkFORF9ORENSX1BHX1NJWkVfQklUUyAgICAgICAgICAgIDIKI2RlZmluZSBNVl9OQU5EX05EQ1JfUEdfU0laRV9MU0IgICAgICAgICAyNAoKI2RlZmluZSBNVl9OQU5EX05EQ1JfSURfQllURV9CSVRTICAgICAgICAgICAgMwojZGVmaW5lIE1WX05BTkRfTkRDUl9JRF9CWVRFX0xTQiAgICAgICAgIDE2CgojZGVmaW5lIE1WX05BTkRfTkRDUl9QRzQwOTYgICAgICAgICAgICAgICAgIDB4MgojZGVmaW5lIE1WX05BTkRfTkRDUl9QRzIwNDggICAgICAgICAgICAgICAgIDB4MQojZGVmaW5lIE1WX05BTkRfTkRDUl9QRzgxOTIgICAgICAgICAgICAgICAgIDB4MwojZGVmaW5lIE1WX05BTkRfTkRDUl9QRzUxMiAgICAgICAgICAgICAgICAgMHgwCmVudW0gbXZfcGFnZXNfcGVyX2Jsb2NrX2JpdHMKewoJUEFHRVNfUEVSX0JMT0NLXzMyLAoJUEFHRVNfUEVSX0JMT0NLXzEyOCwKCVBBR0VTX1BFUl9CTE9DS182NCwKCVBBR0VTX1BFUl9CTE9DS18yNTYKfTsKCi8vIFNQQVJFX0VOLCBFQ0NfRU4sIEJDSF9FTgojZGVmaW5lIE1WX05BTkRfU1BBUkVfMjA0OF8weHgJCTAKI2RlZmluZSBNVl9OQU5EX1NQQVJFXzIwNDhfMTB4CQk2NAojZGVmaW5lIE1WX05BTkRfU1BBUkVfMjA0OF8xMTAJCTQwCiNkZWZpbmUgTVZfTkFORF9TUEFSRV8yMDQ4XzExMQkJMzIKCiNkZWZpbmUgTVZfTkFORF9TUEFSRV80MDk2XzB4eCAgICAgIDAKI2RlZmluZSBNVl9OQU5EX1NQQVJFXzQwOTZfMTEwICAgICAgODAKI2RlZmluZSBNVl9OQU5EX1NQQVJFXzQwOTZfMTExICAgICAgNjQKI2RlZmluZSBNVl9OQU5EX1NQQVJFXzQwOTZfU0laRSAgICAgMTI4Ci8vIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWVzCiNkZWZpbmUgTVZfTkFORF9ORENSX1ZBTAkJCTB4MDE4NkRGRkYJCS8vIDB4MEQwNzVGRkYKCQkJCQkJCQkvLyBzcGFyZV9lbigwKSwgZWNjX2VuKDApLCBkbWFfZW4oMCksIE5EX1JVTigwKQoJCQkJCQkJCS8vIERGQ19kYXRhX2J1c193aWR0aCg4LWJpdCksIGRldmljZV9kYXRhX2J1c193aWR0aCg4LWJpdCksIHBhZ2Vfc2l6ZSgyMDQ4KQoJCQkJCQkJCS8vIFNFUV9ESVMoMSksIGNsZWFuX3N0b3AoMCksIEZPUkNFX0NTWCgwKSwgY2xlYXJfcGFnZV9jb3VudCgwKQoJCQkJCQkJCS8vIFNUT1BfT05fVU5DT1IoMCksIHJlYWRfSURfYnl0ZV9jb3VudCg1KQoJCQkJCQkJCS8vIFJvd19BZGRyZXNzX1N0YXJ0X1Bvc2l0aW9uKDNyZCBjeWNsZSksIHBhZ2VzX3Blcl9ibG9jayg2NCksIGFyYml0cmF0b3JfZW4oMSkKCQkJCQkJCQkvLyBhbGxfaXRlcnJ1cHRzKGRpc2FibGVkKQojaWYgMQojaWYgMQojZGVmaW5lIE1WX05BTkRfTkRUUjBDUzBfVkFMCQkweDg0ODQwYTEyCiNkZWZpbmUgTVZfTkFORF9ORFRSMUNTMF9WQUwJCTB4MDAyMDg2NjIKI2Vsc2UKLyoKICogZm9yIDE1ME1IeiBORkMgY2xvY2ssIE5EVFIwQ1MwPTB4ODRjMjBhMGEsIE5BTkQgZGV2aWNlIGlzIE1MQ18yS19LOUc4RzA4WDBNCiAqIC50QURMWzMxOjI3XT0xNigxNio2LjZucz0xMDUuNm5zID4gMTAwbnMpCiAqIC5TZWxDbnRyPTEsIC5SZF9DbnRfRGVsWzI1OjIyXT0zKDQqNi42bnM9MjYuNm5zLCBtdXN0IGJlIGxvbmdlciB0aGFuIHByb3AgZGVsYXkpCiAqIC50Q0hbMjE6MTldPTAoMSo2LjZucz02LjZucyA+IDVucyBob2xkIHRpbWUpCiAqIC50Q1NbMTg6MTZdPTIoMyo2LjZucz0xOS44bnMgPSAyMG5zIHNldHVwIHRpbWUpCiAqIC50V0hbMTM6MTFdPTEoMio2LjZucz0xMy4ybnMgPiAxMG5zIG5XRSBoaWdoIGhvbGQgdGltZSkKICogLnRXUFsxMDo4XT0yKDMqNi42bnM9MTkuOG5zID4gMTVucyBuV0UgcHVsc2Ugd2lkdGgpIHtub3RlOi50V0grLnRXUD49Mn0gKiAuZXRSUFs2XT0wCiAqIC50UkhbNTozXT0xKDIqNi42bnM9MTMuMm5zID4gMTBucyBuUkUgaGlnaCBob2xkIHRpbWUpCiAqIC50UlBbMjowXT0yKDMqNi42bnM9MTkuOG5zID4gMTVucyBuUkUgcHVsc2UgdGltZSkge25vdGU6LnRSSCsudFJQPj0yfQogKi8KI2RlZmluZSBNVl9OQU5EX05EVFIwQ1MwX1ZBTAkJMHg4Y2NiMWExMy8vMHg4NGMyMGEwYS8vRGlhZz0weDg0ODIwYTEwCi8qCiAqIGZvciAxNTBNSHosIE5EVFIxQ1MwPTB4MGMyZDgwQTIsIE5BTkQgZGV2aWNlIGlzIE1MQ18yS19LOUc4RzA4WDBNCiAqIC50UlszMToxNl09MHgzMDAwKDB4MzAwMCo2LjZucz04MS4xdXMgPiA2MHVzISAuV2FpdF9Nb2RlIGlzIGVuYWJsZWQuKQogKiAuV2FpdF9Nb2RlWzE1XT0xLCAuUFJFU0NBTEVbMTRdPTAKICogLnRXSFJbNzo0XT0xMigoMTItdFdIKSo2LjZucz02MG5zID0gNjBucyBXRSBoaWdoIHRvIFJFIGxvdyB0aW1lIGZvciBzdGF0dXMgcmVhZCkKICogLnRBUlszOjBdPTQoNCo2LjZucyA+IDEwbnMgQUxFIHRvIFJFIGRlbGF5KQogKi8KI2RlZmluZSBNVl9OQU5EX05EVFIxQ1MwX1ZBTAkJMHgzMDAwODBjNC8vMHgwYzJkODBBMi8vMHgwYzJkMDBBMgojZW5kaWYKI2Vsc2UKI2RlZmluZSBNVl9OQU5EX05EVFIwQ1MwX1ZBTAkJMHg4NDgyMGExMgkvL2RpYWcKI2RlZmluZSBNVl9OQU5EX05EVFIxQ1MwX1ZBTAkJMHgwYzJkODBBMgkvL2RpYWcKI2VuZGlmCgojZGVmaW5lIE1WX05BTkRfTkRSRURFTF9WQUwJCTAKCQkJCQkJCQkvLyAubmRfcmVfZW49MSwgLm5kX3JlX3NlbD0wCgkJCQkJCQkJLy8gLm5kX3JlX2RlbF8wPTcKI2RlZmluZSBNVl9OQU5EX05EU1JfVkFMCQkJMHhGRkZGRkZGRgkJLy8gMHgwMDAwMEZGRgoJCQkJCQkJCS8vIFdyaXRlIDEgdG8gcmVzZXQgc3RhdHVzIGJpdHMsIHdyaXRlIDAgdG8gcmVzZXJ2ZWQgYW5kIHJlYWQtb25seSBiaXRzCiNkZWZpbmUgTVZfTkFORF9OREVDQ0NUUkxfVkFMCQkweDAKCiNkZWZpbmUgTkZDX0NMT0NMX0ZSRVEJCTE1NiAvLzE1Nk1IegojZGVmaW5lIE1PREVfTk9ORV9TUEFSRQkJMAojZGVmaW5lIE1PREVfU0lOR0xFX1NQQVJFCTEKI2RlZmluZSBNT0RFX01VTFRJX1NQQVJFCTIKCnN0cnVjdCBtdl9uYW5kX2RhdGEgewoJdW5zaWduZWQgaW50CXN6b2ZwZzsJICAvKiBzaXplIG9mIHBhZ2UgKi8KCXVuc2lnbmVkIGludAlzem9mYmxrOwkvKiBzaXplIG9mIGJsb2NrICovCgl1bnNpZ25lZCBpbnQJb29ic2l6ZTsKCXVuc2lnbmVkIGludCAgICBjb25zcGFyZSA7ICAgIC8qIHNwYXJlIG1vZGUsIDA6IG5vIHNwYXJlIDE6IHNpbmdsZSBzcGFyZSAyOiBtdWx0aSBzcGFyZSAqLwoJdW5zaWduZWQgaW50ICAgIGNvbmVjYzsgICAgICAgLyogRUNDICovCgl1bnNpZ25lZCBpbnQgICAgY29uYmNoOyAgICAgICAgLyogQkNIICovCgl1bnNpZ25lZCBpbnQgICAgcGFnZV9zaGlmdDsKCXVuc2lnbmVkIGludCB0OwoJdW5zaWduZWQgaW50ICAgIGNvbnN0cDsgICAvKiBTVE9QIG9uIHVuY29ycmVjdGlibGUgZXJyb3IgKi8KCXVuc2lnbmVkIGludCAgICBudW1vZmNoaXA7ICAgIC8qbnVtIG9mIGNoaXAgKi8KCXVuc2lnbmVkIGludCAgICBidXNfd2lkdGhfMTY7Cgl1bnNpZ25lZCBpbnQJY2h1bmtfc2l6ZTsKCXVuc2lnbmVkIGludAlhZGRyX2N5Y2xlOwoKCXVuc2lnbmVkIGludCAgIG5kY3I7Cgl1bnNpZ25lZCBpbnQgICBuZHRyMGNzMDsKCXVuc2lnbmVkIGludCAgIG5kdHIxY3MwOwoJdW5zaWduZWQgaW50ICAgbmRyZWRlbDsKCXVuc2lnbmVkIGludCAgIG5kc3I7Cgl1bnNpZ25lZCBpbnQgbmRlY2NjdHJsOwoJdW5zaWduZWQgaW50ICBuY3M7CiNpZiBkZWZpbmVkKF9fVUJPT1RfXykKCXN0cnVjdCBuYW5kX3BhcmFtKiBjaGlwOwojZW5kaWYgLyogI2lmIGRlZmluZWQoX19VQk9PVF9fKSAqLwp9OwoKI2RlZmluZSBNVl9OQU5EX1JFR19XUklURV9EV09SRChiYXNlLCBvZmZzZXQsIHZhbCkgICAgXAogICAgR0FfUkVHX1dPUkQzMl9XUklURShiYXNlKyhvZmZzZXQpLCB2YWwpCiAgICAKI2RlZmluZSBNVl9OQU5EX1JFR19SRUFEX0RXT1JEKGJhc2UsIG9mZnNldCx2YWwpCQkJXAoJR0FfUkVHX1dPUkQzMl9SRUFEKGJhc2UrKG9mZnNldCksIHZhbCkKCiNkZWZpbmUgTVZfTkFORF9ORENSX09GRlNFVAkJMHgwMAkJCS8vIE9mZnNldCB0byBDb250cm9sIFJlZ2lzdGVyCiNkZWZpbmUgTVZfTkFORF9ORFRSMENTMF9PRkZTRVQJMHgwNAkJCS8vIE9mZmVzdCB0byBUaW1pbmcgUGFyYW10ZXIgMAojZGVmaW5lIE1WX05BTkRfTkRUUjFDUzBfT0ZGU0VUCTB4MEMJCQkvLyBPZmZlc3QgdG8gVGltaW5nIFBhcmFtdGVyIDAKI2RlZmluZSBNVl9OQU5EX05EU1JfT0ZGU0VUCQkweDE0CQkJLy8gT2Zmc2V0IHRvIFN0YXR1cyBSZWdpc3RlcgojZGVmaW5lIE1WX05BTkRfTkRSRURFTF9PRkZTRVQJCTB4MjQJCQkvLyBPZmZzZXQgdG8gUmVhZCBFbmFibGUgUmV0dXJuIERlbGF5IFJlZ2lzdGVyCiNkZWZpbmUgTVZfTkFORF9OREVDQ0NUUkxfT0ZGU0VUCTB4MjgJCQkvLyBPZmZzZXQgdG8gRUNDIENvbnRyb2wgUmVnaXN0ZXIKI2RlZmluZSBNVl9OQU5EX05EREJfT0ZGU0VUCQkweDQwCQkJLy8gT2Zmc2V0IHRvIGRhdGEgYnVmZmVyIChpbnB1dCBhbmQgb3V0cHV0KQojZGVmaW5lIE1WX05BTkRfTkRDQjBfT0ZGU0VUCQkweDQ4CQkJLy8gT2Zmc2V0IHRvIENvbW1hbmQgQnVmZmVyIDAKI2RlZmluZSBNVl9OQU5EX05EQ0IxX09GRlNFVCAgICAgICAgMHg0YwojZGVmaW5lIE1WX05BTkRfTkRDQjJfT0ZGU0VUICAgICAgICAweDUwCiNkZWZpbmUgTVZfTkFORF9ORENCM19PRkZTRVQgICAgICAgIDB4NTQKCiNkZWZpbmUgQ0hVTktfU0laRQkJMjA0OAojZGVmaW5lIE5EQ0IwX0NNRFhfTVJFQUQJKDB4MCA8PCAyOSkKI2RlZmluZSBORENCMF9DTURYX01XUklURQkoMHgwIDw8IDI5KQojZGVmaW5lIE5EQ0IwX0NNRFhfTE5SRUFECSgweDEgPDwgMjkpCiNkZWZpbmUgTkRDQjBfQ01EWF9MTldSSVRFCSgweDEgPDwgMjkpCiNkZWZpbmUgTkRDQjBfQ01EWF9GSU5BTF9DTUQJKDB4MyA8PCAyOSkKI2RlZmluZSBORENCMF9DTURYX1JFQUQJCSgweDQgPDwgMjkpCiNkZWZpbmUgTkRDQjBfQ01EWF9DTURQX1dSSVRFCSgweDQgPDwgMjkpCiNkZWZpbmUgTkRDQjBfQ01EWF9OUkVBRAkoMHg1IDw8IDI5KQojZGVmaW5lIE5EQ0IwX0NNRFhfTldSSVRFCSgweDUgPDwgMjkpCiNkZWZpbmUgTkRDQjBfQ01EWF9DTURQCQkoMHg2IDw8IDI5KQojZGVmaW5lIE5EQ0IwX0xFTk9WUkQJCSgweDEgPDwgMjgpCiNkZWZpbmUgTkRDQjBfUkRZQllQCQkoMHgxIDw8IDI3KQojZGVmaW5lIE5EQ0IwX1JPV0VOCQkoMHgxIDw8IDI2KQojZGVmaW5lIE5EQ0IwX0FVVE9SUwkJKDB4MSA8PCAyNSkKI2RlZmluZSBORENCMF9DUyh4KQkJKCgoeCkgJiYgMSkgPDwgMjQpCiNkZWZpbmUgTkRDQjBfQ01EX1JFQUQJCSgweDAgPDwgMjEpCiNkZWZpbmUgTkRDQjBfQ01EX1BST0dSQU0JKDB4MSA8PCAyMSkKI2RlZmluZSBORENCMF9DTURfRVJBU0UJCSgweDIgPDwgMjEpCiNkZWZpbmUgTkRDQjBfQ01EX1JFQURJRAkoMHgzIDw8IDIxKQojZGVmaW5lIE5EQ0IwX0NNRF9TVEFUVVNSRUFECSgweDQgPDwgMjEpCiNkZWZpbmUgTkRDQjBfQ01EX1JFU0VUCQkoMHg1IDw8IDIxKQojZGVmaW5lIE5EQ0IwX0NNRF9OQUtFRF9DTUQJKDB4NiA8PCAyMSkKI2RlZmluZSBORENCMF9DTURfTkFLRURfQUREUgkoMHg3IDw8IDIxKQojZGVmaW5lIE5EQ0IwX05DCQkoMHgxIDw8IDIwKQojZGVmaW5lIE5EQ0IwX0RCQwkJKDB4MSA8PCAxOSkKI2RlZmluZSBORENCMF9BRERSQyh4KQkJKCgoeCkgJiAweDcpIDw8IDE2KQojZGVmaW5lIE5EQ0IwX0NNRDIoeCkJCSgoKHgpICYgMHhGRikgPDwgOCkKI2RlZmluZSBORENCMF9DTUQxKHgpCQkoKHgpICYgMHhGRikKCiNkZWZpbmUgTkRDQjNfTkRMRU5DTlQoeCkJKCh4KSAmIDB4RkZGRikKCiNkZWZpbmUgTVZfTkFOX05EQ0IwX0xFTk9WUkRfQklUUyAgICAgIDI4CiNlbmRpZgo=