Ci8vICAgdmltOnR3PTExMDp0cz00OgojaWZuZGVmIEhDRkRFRkNfSAojZGVmaW5lIEhDRkRFRkNfSCAxCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCiogRklMRQkgOiBIQ0ZERUYuSAoqCiogREFURSAgIDogJERhdGU6IDIwMDQvMDgvMDUgMTE6NDc6MTAgJCAgICRSZXZpc2lvbjogMS44ICQKKiBPcmlnaW5hbDogMjAwNC8wNS8yOCAxNDowNTozNSAgICBSZXZpc2lvbjogMS41OSAgICAgIFRhZzogaGNmN190MjAwNDA2MDJfMDEKKiBPcmlnaW5hbDogMjAwNC8wNS8xMyAxNTozMTo0NSAgICBSZXZpc2lvbjogMS41MyAgICAgIFRhZzogaGNmN190N18yMDA0MDUxM18wMQoqIE9yaWdpbmFsOiAyMDA0LzA0LzE1IDA5OjI0OjQyICAgIFJldmlzaW9uOiAxLjQ0ICAgICAgVGFnOiBoY2Y3X3Q3XzIwMDQwNDE1XzAxCiogT3JpZ2luYWw6IDIwMDQvMDQvMTMgMTQ6MjI6NDUgICAgUmV2aXNpb246IDEuNDMgICAgICBUYWc6IHQ3XzIwMDQwNDEzXzAxCiogT3JpZ2luYWw6IDIwMDQvMDQvMDEgMTU6MzI6NTUgICAgUmV2aXNpb246IDEuNDAgICAgICBUYWc6IHQ3XzIwMDQwNDAxXzAxCiogT3JpZ2luYWw6IDIwMDQvMDMvMTAgMTU6Mzk6MjggICAgUmV2aXNpb246IDEuMzYgICAgICBUYWc6IHQyMDA0MDMxMF8wMQoqIE9yaWdpbmFsOiAyMDA0LzAzLzAzIDE0OjEwOjEyICAgIFJldmlzaW9uOiAxLjM0ICAgICAgVGFnOiB0MjAwNDAzMDRfMDEKKiBPcmlnaW5hbDogMjAwNC8wMy8wMiAwOToyNzoxMiAgICBSZXZpc2lvbjogMS4zMiAgICAgIFRhZzogdDIwMDQwMzAyXzAzCiogT3JpZ2luYWw6IDIwMDQvMDIvMjQgMTM6MDA6MjkgICAgUmV2aXNpb246IDEuMjkgICAgICBUYWc6IHQyMDA0MDIyNF8wMQoqIE9yaWdpbmFsOiAyMDA0LzAyLzE4IDE3OjEzOjU3ICAgIFJldmlzaW9uOiAxLjI2ICAgICAgVGFnOiB0MjAwNDAyMTlfMDEKKgoqIEFVVEhPUiA6IE5pY28gVmFsc3RlcgoqCiogU1BFQ0lGSUNBVElPTjogLi4uLi4uLi4uLi4KKgoqIERFU0MgICA6IERlZmluaXRpb25zIGFuZCBQcm90b3R5cGVzIGZvciBIQ0Ygb25seQoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioKKgoqIFNPRlRXQVJFIExJQ0VOU0UKKgoqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAoqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKKiBzb2Z0d2FyZSBpbmRpY2F0ZXMgeW91ciBhY2NlcHRhbmNlIG9mIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgSWYgeW91IGRvCiogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgoqCiogQ09QWVJJR0hUIKkgMTk5NCAtIDE5OTUJYnkgQVQmVC4JCQkJQWxsIFJpZ2h0cyBSZXNlcnZlZAoqIENPUFlSSUdIVCCpIDE5OTYgLSAyMDAwIGJ5IEx1Y2VudCBUZWNobm9sb2dpZXMuCUFsbCBSaWdodHMgUmVzZXJ2ZWQKKiBDT1BZUklHSFQgqSAyMDAxIC0gMjAwNAlieSBBZ2VyZSBTeXN0ZW1zIEluYy4JQWxsIFJpZ2h0cyBSZXNlcnZlZAoqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCioKKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAoqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKgoqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKKiAgICB3ZWxsIGFzIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKiAgICBkaXN0cmlidXRpb24uCioKKiAuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCioKKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycwoqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQoqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoqCiogRGlzY2xhaW1lcgoqCiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCiogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgoqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBBTlkKKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgoqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwoqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIENPTlRSQUNULCBTVFJJQ1QKKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAoqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICiogREFNQUdFLgoqCioKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBQIFIgRSBGIEkgWCBFIFMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovL0lGQl8JCUludGVyZmFjZSBCbG9jawovL0hDTURfCQlIZXJtZXMgQ29tbWFuZAovL0hGU18JCUhlcm1lcyAoVHJhbnNtaXQvUmVjZWl2ZSkgRnJhbWUgU3RydWN0dXJlCi8vSFJFR18JCUhlcm1lcyBSZWdpc3RlcgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWYgMCAvLwojZGVmaW5lIEJJVDAgIDB4MDAwMQojZGVmaW5lIEJJVDEgIDB4MDAwMgojZGVmaW5lIEJJVDIgIDB4MDAwNAojZGVmaW5lIEJJVDMgIDB4MDAwOAojZGVmaW5lIEJJVDQgIDB4MDAxMAojZGVmaW5lIEJJVDUgIDB4MDAyMAojZGVmaW5lIEJJVDYgIDB4MDA0MAojZGVmaW5lIEJJVDcgIDB4MDA4MAojZGVmaW5lIEJJVDggIDB4MDEwMAojZGVmaW5lIEJJVDkgIDB4MDIwMAojZGVmaW5lIEJJVDEwIDB4MDQwMAojZGVmaW5lIEJJVDExIDB4MDgwMAojZGVmaW5lIEJJVDEyIDB4MTAwMAojZGVmaW5lIEJJVDEzIDB4MjAwMAojZGVmaW5lIEJJVDE0IDB4NDAwMAojZGVmaW5lIEJJVDE1IDB4ODAwMAojZGVmaW5lIEJJVDE2IDB4MDAwMTAwMDAKI2RlZmluZSBCSVQxNyAweDAwMDIwMDAwCiNkZWZpbmUgQklUMTggMHgwMDA0MDAwMAojZGVmaW5lIEJJVDE5IDB4MDAwODAwMDAKI2RlZmluZSBCSVQyMCAweDAwMTAwMDAwCiNkZWZpbmUgQklUMjEgMHgwMDIwMDAwMAojZGVmaW5lIEJJVDIyIDB4MDA0MDAwMDAKI2RlZmluZSBCSVQyMyAweDAwODAwMDAwCiNkZWZpbmUgQklUMjQgMHgwMTAwMDAwMAojZGVmaW5lIEJJVDI1IDB4MDIwMDAwMDAKI2RlZmluZSBCSVQyNiAweDA0MDAwMDAwCiNkZWZpbmUgQklUMjcgMHgwODAwMDAwMAojZGVmaW5lIEJJVDI4IDB4MTAwMDAwMDAKI2RlZmluZSBCSVQyOSAweDIwMDAwMDAwCiNkZWZpbmUgQklUMzAgMHg0MDAwMDAwMAojZGVmaW5lIEJJVDMxIDB4ODAwMDAwMDAKI2VuZGlmIC8vIDAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR0VORVJBTCBFUVVBVEVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKI2RlZmluZSBIQ0ZfTUFHSUMJCQkJMHg3RDM3CS8vICJ9NyIgSGFuZGxlIHZhbGlkYXRpb24KCiNkZWZpbmUJUExVR19EQVRBX09GRlNFVCAgICAgICAgMHgwMDAwMDgwMAkvL25lZWRlZCBieSBzb21lIHRlc3QgdG9vbCBvbiB0b3Agb2YgSC1JSSBORElTIGRyaXZlcgoKI2RlZmluZSBJTklfVElDS19JTkkJCQkweDAwMDQwMDAwTAoKI2RlZmluZSBJT19JTgkJCQkJMAkJLy9oY2Zpb19pbl9zdHJpbmcKI2RlZmluZSBJT19PVVQJCQkJCTEJCS8vaGNmaW9fb3V0X3N0cmluZwoKLy9ET19BU1NFUlQsIGNyZWF0ZSBhbiBhcnRpZmljaWFsIEZBTFNFIHRvIGZvcmNlIGFuIEFTU0VSVCB3aXRob3V0IHRoZSBuYXN0eSBjb21waWxlciB3YXJuaW5nCiNkZWZpbmUgRE9fQVNTRVJUCQkJCSggYXNzZXJ0X2lmYnAtPklGQl9NYWdpYyAhPSBIQ0ZfTUFHSUMgJiYgYXNzZXJ0X2lmYnAtPklGQl9NYWdpYyA9PSBIQ0ZfTUFHSUMgKQojZGVmaW5lIE5UX0FTU0VSVAkJCQkweDAwMDAJCS8vLCBORVZFUl9URVNURUQKI2RlZmluZSBORVZFUl9URVNURUQJCQlNRVJHRV8yKCAweEVGRkUsIDB4RkVFRiApCiNkZWZpbmUgU0VfQVNTRVJUCQkJCTB4NUVGRgkJLyogU2lkZSBFZmZlY3QsIEhDRkFTU0VSVCBpbnZva2F0aW9uIHdoaWNoIGFyZSBvbmx5IGNhbGxlZCBmb3IgdGhlCgkJCQkJCQkJCQkJICogc2lkZSBlZmZlY3QgYW5kIHdoaWNoIHNob3VsZCBuZXZlciB0cmlnZ2VyICovCiNkZWZpbmUgREhGX0ZJTEVfTkFNRV9PRkZTRVQJMTAwMDAJCS8vdG8gZGlzdGluZ3Vpc2ggREhGIGZyb20gSENGIGFzc2VydHMgYnkgbWVhbnMgb2YgbGluZSBudW1iZXIKI2RlZmluZSBNTURfRklMRV9OQU1FX09GRlNFVAkyMDAwMAkJLy90byBkaXN0aW5ndWlzaCBNTUQgZnJvbSBIQ0YgYXNzZXJ0cyBieSBtZWFucyBvZiBsaW5lIG51bWJlcgoKLy8gdHJhY2UgY29kZXMgdXNlZCB0bwovLyAxOiBwcm9maWxlIGV4ZWN1dGlvbiB0aW1lcyB2aWEgSENGX1RSQUNFIGFuZCBIQ0ZfVFJBQ0VfVkFMVUUKLy8gMjogaGllcmFyY2hpY2FsIGZsb3cgaW5mb3JtYXRpb24gdmlhIEhDRkxPR0VOVFJZIC8gSENGTE9HRVhJVAoKLy8jZGVmaW5lIEhDRl9UUkFDRV9DT05ORUNUCQl1c2VsZXNzCi8vI2RlZmluZSBIQ0ZfVFJBQ0VfRElTQ09OTkVDVAl1c2VsZXNzCiNkZWZpbmUgSENGX1RSQUNFX0FDVElPTgkJMHgwMDAwICAvLyAweDAwMDEKI2RlZmluZSBIQ0ZfVFJBQ0VfQ05UTAkJCTB4MDAwMSAgLy8gMHgwMDAyCiNkZWZpbmUgSENGX1RSQUNFX0RNQV9SWF9HRVQJMHgwMDAyICAvLyAweDAwMDQKI2RlZmluZSBIQ0ZfVFJBQ0VfRE1BX1JYX1BVVAkweDAwMDMgIC8vIDB4MDAwOAojZGVmaW5lIEhDRl9UUkFDRV9ETUFfVFhfR0VUCTB4MDAwNCAgLy8gMHgwMDEwCiNkZWZpbmUgSENGX1RSQUNFX0RNQV9UWF9QVVQJMHgwMDA1ICAvLyAweDAwMjAKI2RlZmluZSBIQ0ZfVFJBQ0VfR0VUX0lORk8JCTB4MDAwNiAgLy8gMHgwMDQwCiNkZWZpbmUgSENGX1RSQUNFX1BVVF9JTkZPCQkweDAwMDcgIC8vIDB4MDA4MAojZGVmaW5lIEhDRl9UUkFDRV9SQ1ZfTVNHCQkweDAwMDggIC8vIDB4MDEwMAojZGVmaW5lIEhDRl9UUkFDRV9TRU5EX01TRwkJMHgwMDA5ICAvLyAweDAyMDAKI2RlZmluZSBIQ0ZfVFJBQ0VfU0VSVklDRV9OSUMJMHgwMDBBICAvLyAweDA0MDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEMgIC8vIDB4MTAwMAovLyAjZGVmaW5lIEhDRl9UUkFDRV8gICAgICAgICAgIDB4MDAwRCAgLy8gMHgyMDAwCi8vICNkZWZpbmUgSENGX1RSQUNFXyAgICAgICAgICAgMHgwMDBFICAvLyAweDQwMDAKLy8gI2RlZmluZSBIQ0ZfVFJBQ0VfICAgICAgICAgICAweDAwMEYgIC8vIDB4ODAwMAovLwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIQ0ZfVFJBQ0VfLi4uIGNvZGVzIGJlbG93IDB4MDAxMCBhcmUgYXNzZXJ0ZWQgb24gcmUtZW50cnkKI2RlZmluZSBIQ0ZfVFJBQ0VfQUNUSU9OX0tMVURHRQkweDAwMTAgIC8qIG9uY2UgeW91IHN0YXJ0IGludHJvZHVjaW5nIGtsdWRnZXMgdGhlcmUgaXMgbm8gZW5kIHRvIGl0CgkJCQkJCQkJCQkgKiB0aGlzIGlzIGFuIGVzY2FwZSB0byBkbyBub3QgYXNzZXJ0IG9uIHJlLWVudHJhbmN5IHByb2JsZW0gY2F1c2VkCgkJCQkJCQkJCQkgKiBieSBIQ0ZfQUNUX0lOVF9GT1JDRV9PTiB1c2VkIHRvIGdldCBNaWNyb3NvZnRzIE5ESVMgZHJpdmVycyBnb2luZwoJCQkJCQkJCQkJICovCiNkZWZpbmUgSENGX1RSQUNFX1NUUklPCQkJMHgwMDIwCiNkZWZpbmUgSENGX1RSQUNFX0FMTE9DCQkJMFgwMDIxCiNkZWZpbmUgSENGX1RSQUNFX0RMCQkJMFgwMDIzCiNkZWZpbmUgSENGX1RSQUNFX0lTUl9JTkZPCQkwWDAwMjQKI2RlZmluZSBIQ0ZfVFJBQ0VfQ0FMSUJSQVRFCQkweDAwMjYKCiNkZWZpbmUgSENGX1RSQUNFX0NNRF9DUEwgCQkweDAwNDAKI2RlZmluZSBIQ0ZfVFJBQ0VfQ01EX0VYRQkJMHgwMDQxCiNkZWZpbmUgSENGX1RSQUNFX0dFVF9GSUQJCTB4MDA0MgojZGVmaW5lIEhDRl9UUkFDRV9HRVRfRlJBRwkJMHgwMDQzCiNkZWZpbmUgSENGX1RSQUNFX0lOSVQJCQkweDAwNDQKI2RlZmluZSBIQ0ZfVFJBQ0VfUFVUX0ZSQUcJCTB4MDA0NQojZGVmaW5lIEhDRl9UUkFDRV9TRVRVUF9CQVAJCTB4MDA0NgoKI2RlZmluZQlIQ0ZfVFJBQ0VfRVhJVCAJCQkweDgwMDAJLy8gS2VpbCBDIHdhcm5zICJsb25nIGNvbnN0YW50IHRydW5jYXRlZCB0byBpbnQiCgovLyNkZWZpbmUgQkFQXzAJCQkJCUhSRUdfREFUQV8wCQkvL1VzZWQgYnkgRE1BIGNvbnRyb2xsZXIgdG8gYWNjZXNzIE5JQyBSQU0KI2RlZmluZSBCQVBfMQkJCQkJSFJFR19EQVRBXzEJCS8vVXNlZCBieSBIQ0YgdG8gYWNjZXNzIE5JQyBSQU0KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogSGVybWVzIFJlY2VpdmUvVHJhbnNtaXQgRnJhbWUgU3RydWN0dXJlcwovL0hGU19TVEFUCi8vc2VlIE1NRC5IIGZvciBIRlNfU1RBVF9FUlIKI2RlZmluZSAJSEZTX1NUQVRfTVNHX1RZUEUJMHhFMDAwCS8vSGVybWVzIHJlcG9ydGVkIE1lc3NhZ2UgVHlwZQojZGVmaW5lIAlIRlNfU1RBVF9NSUNfS0VZX0lECTB4MTgwMAkvL01JQyBrZXkgdXNlZCAoaWYgYW55KQojZGVmaW5lIAlIRlNfU1RBVF8xMDQyCQkweDIwMDAJLy9SRkMxMDQyIEVuY29kZWQKI2RlZmluZSAJSEZTX1NUQVRfVFVOTkVMCQkweDQwMDAJLy9CcmlkZ2UtVHVubmVsIEVuY29kZWQKI2RlZmluZSAJSEZTX1NUQVRfV01QX01TRwkweDYwMDAJLy9XYXZlTEFOLUlJIE1hbmFnZW1lbnQgUHJvdG9jb2wgRnJhbWUKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9XUEEKI2RlZmluZSAJSEZTX1NUQVRfTUlDCQkweDAwMTAJLy9GcmFtZSBjb250YWlucyBNSUMgIC8vOz8gcmUtaW5zdGF0ZSB3aGVuIEYvVyByZWFkeQojZW5kaWYKCi8vKioqKioqKioqKioqKioqKioqKioqKioqKiBIZXJtZXMgUmVnaXN0ZXIgT2Zmc2V0cyBhbmQgQ29tbWFuZCBiaXRzCiNkZWZpbmUgSFJFR19JT19SQU5HRQkJCTB4ODAJCS8vSS9PIFJhbmdlIHVzZWQgYnkgSGVybWVzCgoKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIENvbW1hbmQvU3RhdHVzCiNkZWZpbmUgSFJFR19DTUQJCQkJMHgwMAkJLy8KI2RlZmluZSAJSENNRF9DTURfQ09ERQkJCTB4M0YKI2RlZmluZSBIUkVHX1BBUkFNXzAJCQkweDAyCQkvLwojZGVmaW5lIEhSRUdfUEFSQU1fMQkJCTB4MDQJCS8vCiNkZWZpbmUgSFJFR19QQVJBTV8yCQkJMHgwNgkJLy8KI2RlZmluZSBIUkVHX1NUQVQJCQkJMHgwOAkJLy8KI2RlZmluZSAJSFJFR19TVEFUX0NNRF9DT0RFCQkweDAwM0YJLy8KI2RlZmluZQkJSFJFR19TVEFUX0RJQUdfRVJSCQkweDAxMDAKI2RlZmluZQkJSFJFR19TVEFUX0lOUVVJUkVfRVJSCTB4MDUwMAojZGVmaW5lIAlIUkVHX1NUQVRfQ01EX1JFU1VMVAkweDdGMDAJLy8KI2RlZmluZSBIUkVHX1JFU1BfMAkJCQkweDBBCQkvLwojZGVmaW5lIEhSRUdfUkVTUF8xCQkJCTB4MEMJCS8vCiNkZWZpbmUgSFJFR19SRVNQXzIJCQkJMHgwRQkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogRklEIE1hbmFnZW1lbnQKI2RlZmluZSBIUkVHX0lORk9fRklECQkJMHgxMAkJLy8KI2RlZmluZSBIUkVHX1JYX0ZJRAkJCQkweDIwCQkvLwojZGVmaW5lIEhSRUdfQUxMT0NfRklEICAJCTB4MjIJCS8vCiNkZWZpbmUgSFJFR19UWF9DT01QTF9GSUQgIAkJMHgyNAkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogQkFQCi8vMjAwMzEwMzAgSFdpIEluc2VydGVkIHRoaXMgYWdhaW4gYmVjYXVzZSB0aGUgZG9uZ2xlIGNvZGUgdXNlcyB0aGlzIChHUElGLkMpCi8vI2RlZmluZSBIUkVHX1NFTEVDVF8wCQkJMHgxOAkJLy8KLy8jZGVmaW5lIEhSRUdfT0ZGU0VUXzAJCQkweDFDCQkvLwovLyNkZWZpbmUgSFJFR19EQVRBXzAJCQkweDM2CQkvLwoKLy8jZGVmaW5lIAlIUkVHX09GRlNFVF9CVVNZCQkweDgwMDAJLy8gdXNlIEhDTURfQlVTWQojZGVmaW5lIAlIUkVHX09GRlNFVF9FUlIJCQkweDQwMDAJLy8KLy9yc3J2ZCAjZGVmaW5lIAlIUkVHX09GRlNFVF9EQVRBX09GRlNFVAkweDBGRkYJLy8KCiNkZWZpbmUgSFJFR19TRUxFQ1RfMQkJCTB4MUEJCS8vCiNkZWZpbmUgSFJFR19PRkZTRVRfMQkJCTB4MUUJCS8vCiNkZWZpbmUgSFJFR19EQVRBXzEJCQkJMHgzOAkJLy8KCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogRXZlbnQKI2RlZmluZSBIUkVHX0VWX1NUQVQJCQkweDMwCQkvLwojZGVmaW5lIEhSRUdfSU5UX0VOCQkJCTB4MzIJCS8vCiNkZWZpbmUgSFJFR19FVl9BQ0sJCQkJMHgzNAkJLy8KCiNkZWZpbmUgICAgSFJFR19FVl9USUNLCQkJCTB4ODAwMAkvL0F1eGlsaWFyeSBUaW1lciBUaWNrCi8vI2RlZmluZSAgSFJFR19FVl9SRVMJCQkJMHg0MDAwCS8vSC1JIG9ubHk6IEgvVyBlcnJvciAoV2FpdCBUaW1lLW91dCkKI2RlZmluZSAgICBIUkVHX0VWX0lORk9fRFJPUAkJMHgyMDAwCS8vV01BQyBkaWQgbm90IGhhdmUgc3VmZmljaWVudCBSQU0gdG8gYnVpbGQgVW5zb2xsaWNpdGVkIEZyYW1lCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQojZGVmaW5lICAgIEhSRUdfRVZfQUNLX1JFR19SRUFEWQkweDAwMDAKI2Vsc2UKI2RlZmluZSAgICBIUkVHX0VWX0FDS19SRUdfUkVBRFkJMHgxMDAwCS8vV29ya2Fyb3VuZCBLbHVkZ2UgYml0IGZvciBILUlJIChub3QgSC1JSS41KQojZW5kaWYgLy8gSENGX1RZUEVfSElJNQojaWYgKEhDRl9TTEVFUCkgJiAoIEhDRl9DRFMgfCBIQ0ZfRERTICkKI2RlZmluZSAgICBIUkVHX0VWX1NMRUVQX1JFUQkJMHgwODAwCiNlbHNlCiNkZWZpbmUgICAgSFJFR19FVl9TTEVFUF9SRVEJCTB4MDAwMAojZW5kaWYgLy8gSENGX0NEUyAvIEhDRl9ERFMKI2lmIEhDRl9ETUEKLy8jZGVmaW5lICAgIEhSRUdfRVZfTFBFU0MJCQkweDA0MDAgLy8gZmlybXdhcmUgc2V0cyB0aGlzIGJpdCBhbmQgY2xlYXJzIGl0LCBub3QgZm9yIGhvc3QgdXNhZ2UuCiNkZWZpbmUgICAgSFJFR19FVl9SRE1BRAkJCTB4MDIwMCAvLyByeCBmcmFtZSBpbiBob3N0IG1lbW9yeQojZGVmaW5lICAgIEhSRUdfRVZfVERNQUQJCQkweDAxMDAgLy8gdHggZnJhbWUgaW4gaG9zdCBtZW1vcnkgcHJvY2Vzc2VkCi8vI2RlZmluZSAgICBIUkVHX0VWX1JYRE1BCQkJMHgwMDQwIC8vIGZpcm13YXJlIGtpY2tzIG9mZiBETUEgZW5naW5lIChiaXQgaXMgbm90IGZvciBob3N0IHVzYWdlKQovLyNkZWZpbmUgICAgSFJFR19FVl9UWERNQQkJCTB4MDAyMCAvLyBmaXJtd2FyZSBraWNrcyBvZmYgRE1BIGVuZ2luZSAoYml0IGlzIG5vdCBmb3IgaG9zdCB1c2FnZSkKI2RlZmluZSAgICBIUkVHX0VWX0ZXX0RNQQkJCTB4MDQ2MCAvLyBmaXJtd2FyZSAvIERNQSBlbmdpbmUgSS9GIChiaXRzIGFyZSBub3QgZm9yIGhvc3QgdXNhZ2UpCiNlbHNlCiNkZWZpbmUgICAgSFJFR19FVl9GV19ETUEJCQkweDAwMDAKI2VuZGlmIC8vIEhDRl9ETUEKI2RlZmluZSAgICBIUkVHX0VWX0lORk8JCQkJMHgwMDgwCS8vIEFzeW5jaHJvbm91cyBJbmZvcm1hdGlvbiBGcmFtZQojZGVmaW5lICAgIEhSRUdfRVZfQ01ECQkJCTB4MDAxMAkvLyBDb21tYW5kIGNvbXBsZXRlZCwgU3RhdHVzIGFuZCBSZXNwb25zZSBhdmFpbGFibGUKI2RlZmluZSAgICBIUkVHX0VWX0FMTE9DCQkJMHgwMDA4CS8vIEFzeW5jaHJvbm91cyBwYXJ0IG9mIEFsbG9jYXRpb24vUmVjbGFpbSBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYX0VYQwkJCTB4MDAwNAkvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHVuc3VjY2Vzc2Z1bCBjb21wbGV0ZWQKI2RlZmluZSAgICBIUkVHX0VWX1RYCQkJCTB4MDAwMgkvLyBBc3luY2hyb25vdXMgVHJhbnNtaXNzaW9uIHN1Y2Nlc3NmdWwgY29tcGxldGVkCiNkZWZpbmUgICAgSFJFR19FVl9SWAkJCQkweDAwMDEJLy8gQXN5bmNocm9ub3VzIFJlY2VpdmUgRnJhbWUKCiNkZWZpbmUgICAgSFJFR19FVl9UWF9FWFQgCQkJKCAoSENGX0VYVCkgJiAoSENGX0VYVF9JTlRfVFhfRVggfCBIQ0ZfRVhUX0lOVF9USUNLICkgKQoJCQkJCQkJCQkvKiBIUkVHX0VWX1RYX0VYVCA6PSAweDAwMDAgb3IgSFJFR19FVl9UWF9FWEMgYW5kL29yIEhSRUdfRVZfVElDSwoJCQkJCQkJCQkgKiBjb3VsZCBiZSBleHRlbmRlZCB3aXRoIEhSRUdfRVZfVFggKi8KI2lmIEhDRl9FWFRfSU5UX1RYX0VYICE9IEhSRUdfRVZfVFhfRVhDCmVycjogdGhlc2UgdmFsdWVzIHNob3VsZCBtYXRjaDsKI2VuZGlmIC8vIEhDRl9FWFRfSU5UX1RYX0VYIC8gSFJFR19FVl9UWF9FWEMKCiNpZiBIQ0ZfRVhUX0lOVF9USUNLICE9IEhSRUdfRVZfVElDSwplcnI6IHRoZXNlIHZhbHVlcyBzaG91bGQgbWF0Y2g7CiNlbmRpZiAvLyBIQ0ZfRVhUX0lOVF9USUNLIC8gSFJFR19FVl9USUNLCgovLyoqKioqKioqKioqKioqKioqKioqKioqKiogSG9zdCBTb2Z0d2FyZQojZGVmaW5lIEhSRUdfU1dfMAkJCQkweDI4CQkvLwojZGVmaW5lIEhSRUdfU1dfMQkJCQkweDJBCQkvLwojZGVmaW5lIEhSRUdfU1dfMgkJCQkweDJDCQkvLwovL3JzcnZkICNkZWZpbmUgSFJFR19TV18zCQkweDJFCQkvLwovLyoqKioqKioqKioqKioqKioqKioqKioqKiogQ29udHJvbCBhbmQgQXV4aWxpYXJ5IFBvcnQKCiNkZWZpbmUgSFJFR19JTwkJCQkJMHgxMgojZGVmaW5lCQlIUkVHX0lPX1NSRVNFVAkJCTB4MDAwMQojZGVmaW5lCQlIUkVHX0lPX1dBS0VVUF9BU1lOQwkweDAwMDIKI2RlZmluZQkJSFJFR19JT19XT0tFTl9VUAkJMHgwMDA0CiNkZWZpbmUgSFJFR19DTlRMCQkJCTB4MTQJCS8vCi8vI2RlZmluZQkJSFJFR19DTlRMX1dBS0VVUF9TWU5DCTB4MDAwMQojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0VOQV9TVEFUCTB4QzAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RJU19TVEFUCTB4MDAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0VOQV9DTlRMCTB4ODAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RJU19DTlRMCTB4NDAwMAojZGVmaW5lCQlIUkVHX0NOVExfQVVYX0RTRAkJMHgyMDAwCiNkZWZpbmUJCUhSRUdfQ05UTF9BVVhfRU5BCQkoSFJFR19DTlRMX0FVWF9FTkFfQ05UTCB8IEhSRUdfQ05UTF9BVVhfRElTX0NOVEwgKQojZGVmaW5lIEhSRUdfU1BBUkUJCQkJMHgxNgkJLy8KI2RlZmluZSBIUkVHX0FVWF9QQUdFCQkJMHgzQQkJLy8KI2RlZmluZSBIUkVHX0FVWF9PRkZTRVQJCQkweDNDCQkvLwojZGVmaW5lIEhSRUdfQVVYX0RBVEEJCQkweDNFCQkvLwoKI2lmIEhDRl9ETUEKLy8qKioqKioqKioqKioqKioqKioqKioqKioqIERNQSAoYnVzIG1hc3RlcmluZykKCS8vIEJlIGNhcmVmdWwgdG8gdXNlIHRoZXNlIHJlZ2lzdGVycyBvbmx5IGF0IGEgZ2VudWluZSAzMiBiaXRzIE5JQwoJLy8gT24gMTYgYml0cyBOSUNzLCB0aGVzZSBhZGRyZXNzZXMgYXJlIG1hcHBlZCBpbnRvIHRoZSByYW5nZSAweDAwIHRocm91Z2ggMHgzRiB3aXRoIGFsbCBjb25zZXF1ZW5jZXMKCS8vIHRoZXJlb2YsIGUuZy4gIEhSRUdfRE1BX0NUUkwgcmVnaXN0ZXIgbWFwcyB0byBIUkVHX0NNRC4KI2RlZmluZSBIUkVHX0RNQV9DVFJMCQkJCQkJMHgwMDQwCiNkZWZpbmUgSFJFR19UWERNQV9QVFIzMgkJCQkJMHgwMDQ0CiNkZWZpbmUgSFJFR19UWERNQV9QUklPX1BUUjMyCQkJCTB4MDA0OAojZGVmaW5lIEhSRUdfVFhETUFfSElQUklPX1BUUjMyCQkJCTB4MDA0QwojZGVmaW5lIEhSRUdfUlhETUFfUFRSMzIJCQkJCTB4MDA1MAojZGVmaW5lIEhSRUdfQ0FSRERFVEVDVF8xCQkJCQkweDAwN0MgLy8gY29udGFpbnMgN0QzNwojZGVmaW5lIEhSRUdfQ0FSRERFVEVDVF8yCQkJCQkweDAwN0UgLy8gY29udGFpbnMgN0RFNwojZGVmaW5lIEhSRUdfRlJFRVRJTUVSCQkJCQkJMHgwMDU4CiNkZWZpbmUgSFJFR19ETUFfUlhfQ05UCQkJCQkJMHgwMDI2CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogRGVmaW5lcyBmb3IgdGhlIGJpdHMgaW4gdGhlIERtYUNvbnRyb2wgcmVnaXN0ZXIgKEA0MGgpCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYSFdFTgkJCQkweDgwMDAwMDAwIC8vIGhpZ2ggd29yZCBlbmFibGUgYml0CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWFJFU0VUCQkJCTB4NDAwMDAwMDAgLy8gdHggZG1hIGluaXQgYml0CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEJBUDEJCQkJQklUMjkKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX1NUQUxMRUQJCQlCSVQyOAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX0RNQURPTkUJCUJJVDI3IC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgVERNQURPTkUgZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYQVVUT0FDS19JTkZPCQlCSVQyNiAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIGFsbG9jIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfRE1BRU4JCTB4MDIwMDAwMDAgLy8gbm8gaG9zdCBpbnZvbHZlbWVudCByZXEuIGZvciBUeERNQWVuIGV2ZW50CiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfUlgJCQkweDAxMDAwMDAwIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgdHggZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX0JVU1kJCQkJQklUMjMgLy8gcmVhZCBvbmx5IGJpdAovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9SQlVGQ09OVF9QTEFJTgkJMAkgIC8vIGJpdHMgMjEuLjIwCi8vI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX01PREVfUExBSU5fRE1BCQkwCSAgLy8gbW9kZSAwCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX1NJTkdMRV9QQUNLRVQJMHgwMDAxMDAwMCAvLyBtb2RlIDEKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX01PREVfTVVMVElfUEFDS0VUCTB4MDAwMjAwMDAgLy8gbW9kZSAyCi8vI2RlZmluZSBIUkVHX0RNQV9DVFJMX1JYX01PREVfRElTQUJMRQkJKDB4MDAwMjAwMDB8MHgwMDAxMDAwMCkgLy8gZGlzYWJsZSB0eCBkbWEgZW5naW5lCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEhXRU4JCQkJMHg4MDAwIC8vIGxvdyB3b3JkIGVuYWJsZSBiaXQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYUkVTRVQJCQkJMHg0MDAwIC8vIHJ4IGRtYSBpbml0IGJpdAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhCQVAxCQkJCUJJVDEzCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BRE9ORQkJQklUMTEgLy8gbm8gaG9zdCBpbnZvbHZlbWVudCByZXEuIGZvciBSeERNQURPTkUgZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19ETUFFTgkJMHgwMDAwMDQwMCAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIFJ4RE1BZW4gZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19ETUFBTExPQwkweDAwMDAwMjAwICAvLyBubyBob3N0IGludm9sdmVtZW50IHJlcS4gZm9yIGluZm8gZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYQVVUT0FDS19UWAkJCTB4MDAwMDAxMDAgIC8vIG5vIGhvc3QgaW52b2x2ZW1lbnQgcmVxLiBmb3IgcnggZXZlbnQKI2RlZmluZSBIUkVHX0RNQV9DVFJMX1RYX0JVU1kJCQkJQklUNyAgLy8gcmVhZCBvbmx5IGJpdAovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9UQlVGQ09OVF9QTEFJTgkJMAkgIC8vIGJpdHMgNi4uNQovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX1BMQUlOX0RNQQkJMAkgIC8vIG1vZGUgMAojZGVmaW5lIEhSRUdfRE1BX0NUUkxfVFhfTU9ERV9TSU5HTEVfUEFDS0VUCUJJVDAgLy8gbW9kZSAxCiNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX01VTFRJX1BBQ0tFVAkweDAwMDAwMDAyIC8vIG1vZGUgMgovLyNkZWZpbmUgSFJFR19ETUFfQ1RSTF9UWF9NT0RFX0RJU0FCTEUJCSgweDAwMDAwMDAxfDB4MDAwMDAwMDIpIC8vIGRpc2FibGUgdHggZG1hIGVuZ2luZQoKLy9jb25maWd1cmF0aW9uIERXT1JEIHRvIGNvbmZpZ3VyZSBETUEgZm9yIG1vZGUyIG9wZXJhdGlvbiwgdXNpbmcgQkFQMCBhcyB0aGUgRE1BIEJBUC4KI2RlZmluZSBETUFfQ1RSTFNUQVRfR08gKEhSRUdfRE1BX0NUUkxfUlhIV0VOIHwgSFJFR19ETUFfQ1RSTF9SWF9NT0RFX01VTFRJX1BBQ0tFVCB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgIEhSRUdfRE1BX0NUUkxfUlhBVVRPQUNLX0RNQUVOIHwgSFJFR19ETUFfQ1RSTF9SWEFVVE9BQ0tfUlggfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYSFdFTiB8IC8qOz9IUkVHX0RNQV9DVFJMX1RYX1RCVUZDT05UX1BMQUlOIHwqLyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkVHX0RNQV9DVFJMX1RYX01PREVfTVVMVElfUEFDS0VUIHwgSFJFR19ETUFfQ1RSTF9UWEFVVE9BQ0tfRE1BRU4gfFwKICAgICAgICAgICAgICAgICAgICAgICAgIEhSRUdfRE1BX0NUUkxfVFhBVVRPQUNLX0RNQUFMTE9DKQoKLy9jb25maWd1cmF0aW9uIERXT1JEIHRvIHJlc2V0IGJvdGggdGhlIFR4IGFuZCBSeCBETUEgZW5naW5lcwojZGVmaW5lIERNQV9DVFJMU1RBVF9SRVNFVCAoSFJFR19ETUFfQ1RSTF9SWEhXRU4gfCBIUkVHX0RNQV9DVFJMX1JYUkVTRVQgfCBIUkVHX0RNQV9DVFJMX1RYSFdFTiB8IEhSRUdfRE1BX0NUUkxfVFhSRVNFVCkKCi8vI2RlZmluZSBERVNDX0RNQV9PV05FRCAgICAgCQkweDgwMDAwMDAwIAkJCQkJLy8gQklUMzEKI2RlZmluZSBERVNDX0RNQV9PV05FRCAgICAgCQkweDgwMDAJIAkJCQkJLy8gQklUMzEKI2RlZmluZSBERVNDX1NPUCAgIAkJCSAJMHg4MDAwIAkJCQkJCS8vIEJJVDE1CiNkZWZpbmUgREVTQ19FT1AgICAJCQkgCTB4NDAwMCAJCQkJCQkvLyBCSVQxNAoKI2RlZmluZSBETUFfUlgJCQkJMAojZGVmaW5lIERNQV9UWAkJCQkxCgovLyAjZGVmaW5lIElGQl9SeEZpcnN0RGVzYwkJSUZCX0ZpcnN0RGVzY1tETUFfUlhdCi8vICNkZWZpbmUgSUZCX1R4Rmlyc3REZXNjCQlJRkJfRmlyc3REZXNjW0RNQV9UWF0KLy8gI2RlZmluZSBJRkJfUnhMYXN0RGVzYwkJSUZCX0xhc3REZXNjW0RNQV9SWF0KLy8gI2RlZmluZSBJRkJfVHhMYXN0RGVzYwkJSUZCX0xhc3REZXNjW0RNQV9UWF0KCiNlbmRpZiAvLyBIQ0ZfRE1BCi8vCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBFUVVBVEVTICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKLy8gSGVybWVzIENvbW1hbmQgQ29kZXMgYW5kIFF1YWxpZmllciBiaXRzCiNkZWZpbmUgCUhDTURfQlVTWQkJCTB4ODAwMAkvLyBCdXN5IGJpdCwgYXBwbGljYWJsZSBmb3IgYWxsIGNvbW1hbmRzCiNkZWZpbmUgSENNRF9JTkkJCQkJMHgwMDAwCS8vCiNkZWZpbmUgSENNRF9FTkFCTEUJCQkJSENGX0NOVExfRU5BQkxFCQkvLyAweDAwMDEKI2RlZmluZSBIQ01EX0RJU0FCTEUJCQlIQ0ZfQ05UTF9ESVNBQkxFCS8vIDB4MDAwMgojZGVmaW5lIEhDTURfQ09OTkVDVAkJCUhDRl9DTlRMX0NPTk5FQ1QJLy8gMHgwMDAzCiNkZWZpbmUgSENNRF9FWEVDVVRFCQkJMHgwMDA0CS8vCiNkZWZpbmUgSENNRF9ESVNDT05ORUNUCQkJSENGX0NOVExfRElTQ09OTkVDVAkvLyAweDAwMDUKI2RlZmluZSBIQ01EX1NMRUVQCQkJCTB4MDAwNgkvLwojZGVmaW5lIEhDTURfQ09OVElOVUUJCQlIQ0ZfQ05UTF9DT05USU5VRQkvLyAweDAwMDcKI2RlZmluZSAJSENNRF9SRVRSWQkJCTB4MDEwMAkvLyBSZXRyeSBiaXQKI2RlZmluZSBIQ01EX0FMTE9DCQkJCTB4MDAwQQkvLwojZGVmaW5lIEhDTURfVFgJCQkJCTB4MDAwQgkvLwojZGVmaW5lIAlIQ01EX1JFQ0wJCQkweDAxMDAJLy8gUmVjbGFpbSBiaXQsIGFwcGxpY2FibGUgZm9yIFR4IGFuZCBJbnF1aXJlCiNkZWZpbmUgSENNRF9JTlFVSVJFCQkJMHgwMDExCS8vCiNkZWZpbmUgSENNRF9BQ0NFU1MJCQkJMHgwMDIxCS8vCiNkZWZpbmUgCUhDTURfQUNDRVNTX1dSSVRFCTB4MDEwMAkvLyBXcml0ZSBiaXQKI2RlZmluZSBIQ01EX1BST0dSQU0JCQkweDAwMjIJLy8KI2RlZmluZSBIQ01EX1JFQURfTUlGCQkJMHgwMDMwCiNkZWZpbmUgSENNRF9XUklURV9NSUYJCQkweDAwMzEKI2RlZmluZSBIQ01EX1RIRVNFVVMJCQkweDAwMzgKI2RlZmluZSAJSENNRF9TVEFSVFBSRUFNQkxFICAweDBFMDAJLy8gU3RhcnQgY29udGludW91cyBwcmVhbWJsZSBUeAojZGVmaW5lIAlIQ01EX1NUT1AJCQkweDBGMDAJLy8gU3RvcCBUaGVzZXVzIHRlc3QgbW9kZQoKCi8vQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50Ci8vCgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19CT1RUT00JMQkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19UT1AJMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgSC9XIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AJMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBIL1cgLSBkcml2ZXIgSS9GCgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9CT1RUT00JMQkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBIL1cgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUAkxCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEgvVyAtIGRyaXZlciBJL0YKCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfV1BBCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8xX0JPVFRPTQkxNgkvLyBEZWZhdWx0IEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzFfVE9QICAgIDE2CS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZWxzZSAgLy87PyBpcyB0aGlzIFJFQUxMWSBPLksuCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8xX0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19BUEZfMV9UT1AgICAgMQkvLyBEZWZhdWx0IFRvcCAgICBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2VuZGlmIC8vIEhDRl9UWVBFX1dQQQoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfQk9UVE9NCTIJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUCAgICAyCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzNfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8zX1RPUCAgICAxCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzRfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl80X1RPUCAgICAxCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgoKI2lmIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9ISUk1CiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTQk2CS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX1RPUCAgICA2CS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbHNlIC8vIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9ISUk1CiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX1RPUCAgICAyCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyAoSENGX1RZUEUpICYgSENGX1RZUEVfSElJNQoKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzNfQk9UVE9NCTEJLy8gRGVmYXVsdCBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzNfVE9QICAgIDEJLy8gRGVmYXVsdCBUb3AgICAgQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV80X0JPVFRPTQkxCS8vIERlZmF1bHQgQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV80X1RPUCAgICAxCS8vIERlZmF1bHQgVG9wICAgIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojaWYgZGVmaW5lZCBIQ0ZfQ0ZHX1BSSV8xX1RPUCB8fCBkZWZpbmVkIEhDRl9DRkdfUFJJXzFfQk9UVE9NCmVycjogUFJJXzEgbm90IHN1cHBvcnRlZCBmb3IgSC1JOwkvLyBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgojZW5kaWYgLy8gSENGX0NGR19QUklfMV9UT1AgLyBIQ0ZfQ0ZHX1BSSV8xX0JPVFRPTQoKI2lmIGRlZmluZWQgSENGX0NGR19QUklfMl9UT1AgfHwgZGVmaW5lZCBIQ0ZfQ0ZHX1BSSV8yX0JPVFRPTQplcnI6IFBSSV8yIG5vdCBzdXBwb3J0ZWQgZm9yIEgtSTsJLy8gQ29tcGF0aWJpbGl0eSBmb3IgUHJpbWFyeSBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfUFJJXzJfVE9QIC8gSENGX0NGR19QUklfMl9CT1RUT00KCiNpZmRlZiBIQ0ZfQ0ZHX1BSSV8zX1RPUAkJCQkJCQkJCS8vIFRvcCBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgSENGX0NGR19QUklfM19UT1AgPT0gMCB8fCBcCglDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfQk9UVE9NIDw9IEhDRl9DRkdfUFJJXzNfVE9QICYmIEhDRl9DRkdfUFJJXzNfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19QUklfM19UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19QUklfM19UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QCUhDRl9DRkdfUFJJXzNfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfUFJJXzNfVE9QCgojaWZkZWYgSENGX0NGR19QUklfM19CT1RUT00gICAgICAgICAgICAgICAgICAgICAgIAkJCS8vIEJvdHRvbSBDb21wYXRpYmlsaXR5IGZvciBQcmltYXJ5IEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTSA8PSBIQ0ZfQ0ZHX1BSSV8zX0JPVFRPTSAmJiBIQ0ZfQ0ZHX1BSSV8zX0JPVFRPTSA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfUFJJXzNfQk9UVE9NCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1BSSV8zX0JPVFRPTQlIQ0ZfQ0ZHX1BSSV8zX0JPVFRPTQojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1BSSV8zX0JPVFRPTQoKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNpZiBkZWZpbmVkIEhDRl9DRkdfSFNJXzBfVE9QIHx8IGRlZmluZWQgSENGX0NGR19IU0lfMF9CT1RUT00KZXJyOiBIU0lfMCBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzBfVE9QIC8gSENGX0NGR19IU0lfMF9CT1RUT00KCiNpZiBkZWZpbmVkIEhDRl9DRkdfSFNJXzFfVE9QIHx8IGRlZmluZWQgSENGX0NGR19IU0lfMV9CT1RUT00KZXJyOiBIU0lfMSBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzFfVE9QIC8gSENGX0NGR19IU0lfMV9CT1RUT00KCiNpZiBkZWZpbmVkIEhDRl9DRkdfSFNJXzJfVE9QIHx8IGRlZmluZWQgSENGX0NGR19IU0lfMl9CT1RUT00KZXJyOiBIU0lfMiBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzJfVE9QIC8gSENGX0NGR19IU0lfMl9CT1RUT00KCiNpZiBkZWZpbmVkIEhDRl9DRkdfSFNJXzNfVE9QIHx8IGRlZmluZWQgSENGX0NGR19IU0lfM19CT1RUT00KZXJyOiBIU0lfMyBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2VuZGlmIC8vIEhDRl9DRkdfSFNJXzNfVE9QIC8gSENGX0NGR19IU0lfM19CT1RUT00KCiNpZmRlZiBIQ0ZfQ0ZHX0hTSV80X1RPUCAJCQkJCQkJCQkvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgSFNJIEkvRgojaWYgSENGX0NGR19IU0lfNF9UT1AgPT0gMCB8fCBcCglDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzRfQk9UVE9NIDw9IENGX0NGR19IU0lfNF9UT1AgJiYgSENGX0NGR19IU0lfNF9UT1AgPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X1RPUAojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9UT1AJSENGX0NGR19IU0lfNF9UT1AKI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19IU0lfNF9UT1AKCiNpZmRlZiBIQ0ZfQ0ZHX0hTSV80X0JPVFRPTQkJCQkJCQkJLy8gQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9CT1RUT00gPD0gSENGX0NGR19IU0lfNF9CT1RUT00gJiYgSENGX0NGR19IU0lfNF9CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV80X0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNF9CT1RUT00JSENGX0NGR19IU0lfNF9CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19IU0lfNF9CT1RUT00KCiNpZmRlZiBIQ0ZfQ0ZHX0hTSV81X1RPUCAJCQkJCQkJCQkvLyBUb3AgQ29tcGF0aWJpbGl0eSBmb3IgSFNJIEkvRgojaWYgSENGX0NGR19IU0lfNV9UT1AgPT0gMCB8fCBcCglDRkdfRFJWX0FDVF9SQU5HRVNfSFNJXzVfQk9UVE9NIDw9IENGX0NGR19IU0lfNV9UT1AgJiYgSENGX0NGR19IU0lfNV9UT1AgPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUAojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9UT1AJSENGX0NGR19IU0lfNV9UT1AKI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19IU0lfNV9UT1AKCiNpZmRlZiBIQ0ZfQ0ZHX0hTSV81X0JPVFRPTQkJCQkJCQkJLy8gQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEhTSSBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9CT1RUT00gPD0gSENGX0NGR19IU0lfNV9CT1RUT00gJiYgSENGX0NGR19IU0lfNV9CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0hTSV81X0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19IU0lfNV9CT1RUT00JSENGX0NGR19IU0lfNV9CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19IU0lfNV9CT1RUT00KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI2lmIGRlZmluZWQgSENGX0NGR19BUEZfMV9UT1AgfHwgZGVmaW5lZCBIQ0ZfQ0ZHX0FQRl8xX0JPVFRPTQplcnI6IEFQRl8xIG5vdCBzdXBwb3J0ZWQgZm9yIEgtSTsJLy8gQ29tcGF0aWJpbGl0eSBmb3IgQVAgRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0FQRl8xX1RPUCAvIEhDRl9DRkdfQVBGXzFfQk9UVE9NCgojaWZkZWYgSENGX0NGR19BUEZfMl9UT1AgICAgICAgICAgICAgICAgICAJCQkJCS8vIFRvcCBDb21wYXRpYmlsaXR5IGZvciBBUCBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIEhDRl9DRkdfQVBGXzJfVE9QID09IDAgfHwgXAoJQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX0JPVFRPTSA8PSBIQ0ZfQ0ZHX0FQRl8yX1RPUCAmJiBIQ0ZfQ0ZHX0FQRl8yX1RPUCA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfVE9QCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX1RPUAlIQ0ZfQ0ZHX0FQRl8yX1RPUAojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0FQRl9UT1AKCiNpZmRlZiBIQ0ZfQ0ZHX0FQRl8yX0JPVFRPTSAgICAgICAgICAgICAgICAgICAgICAgCQkJLy8gQm90dG9tIENvbXBhdGliaWxpdHkgZm9yIEFQIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX0JPVFRPTSA8PSBIQ0ZfQ0ZHX0FQRl8yX0JPVFRPTSAmJiBIQ0ZfQ0ZHX0FQRl8yX0JPVFRPTSA8PSBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfVE9QCiN1bmRlZiBDRkdfRFJWX0FDVF9SQU5HRVNfQVBGXzJfQk9UVE9NCiNkZWZpbmUgQ0ZHX0RSVl9BQ1RfUkFOR0VTX0FQRl8yX0JPVFRPTQlIQ0ZfQ0ZHX0FQRl8yX0JPVFRPTQojZWxzZQplcnI6IDsKI2VuZGlmCiNlbmRpZiAvLyBIQ0ZfQ0ZHX0FQRl9CT1RUT00KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNpZiBkZWZpbmVkIEhDRl9DRkdfU1RBXzFfVE9QIHx8IGRlZmluZWQgSENGX0NGR19TVEFfMV9CT1RUT00KZXJyOiBTVEFfMSBub3Qgc3VwcG9ydGVkIGZvciBILUk7CS8vIENvbXBhdGliaWxpdHkgZm9yIFN0YXRpb24gRmlybXdhcmUgLSBkcml2ZXIgSS9GCiNlbmRpZiAvLyBIQ0ZfQ0ZHX1NUQV8xX1RPUCAvIEhDRl9DRkdfU1RBXzFfQk9UVE9NCgojaWZkZWYgSENGX0NGR19TVEFfMl9UT1AgICAgICAgICAgICAgICAgICAJCQkJCS8vIFRvcCBDb21wYXRpYmlsaXR5IGZvciBTdGF0aW9uIEZpcm13YXJlIC0gZHJpdmVyIEkvRgojaWYgSENGX0NGR19TVEFfMl9UT1AgPT0gMCB8fCBcCglDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfQk9UVE9NIDw9IEhDRl9DRkdfU1RBXzJfVE9QICYmIEhDRl9DRkdfU1RBXzJfVE9QIDw9IENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AKI3VuZGVmIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9UT1AKI2RlZmluZSBDRkdfRFJWX0FDVF9SQU5HRVNfU1RBXzJfVE9QCUhDRl9DRkdfU1RBXzJfVE9QCiNlbHNlCmVycjogOwojZW5kaWYKI2VuZGlmIC8vIEhDRl9DRkdfU1RBX1RPUAoKI2lmZGVmIEhDRl9DRkdfU1RBXzJfQk9UVE9NICAgICAgICAgICAgICAgICAgICAgICAJCQkvLyBCb3R0b20gQ29tcGF0aWJpbGl0eSBmb3IgU3RhdGlvbiBGaXJtd2FyZSAtIGRyaXZlciBJL0YKI2lmIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9CT1RUT00gPD0gSENGX0NGR19TVEFfMl9CT1RUT00gJiYgSENGX0NGR19TVEFfMl9CT1RUT00gPD0gQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX1RPUAojdW5kZWYgQ0ZHX0RSVl9BQ1RfUkFOR0VTX1NUQV8yX0JPVFRPTQojZGVmaW5lIENGR19EUlZfQUNUX1JBTkdFU19TVEFfMl9CT1RUT00JSENGX0NGR19TVEFfMl9CT1RUT00KI2Vsc2UKZXJyOiA7CiNlbmRpZgojZW5kaWYgLy8gSENGX0NGR19TVEFfQk9UVE9NCgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBNQUNST1MgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZmRlZiBIQ0ZfU0xFRVAKI2lmIGRlZmluZWQgTVNGX1dBSVQKZXJyOiBNU0Ygc2hvdWxkIG5vIGxvbmdlciBzdXBwbHkgdGhpcyBtYWNybzsKI2Vsc2UKI2RlZmluZSBNU0ZfV0FJVCh4KSAJCQkJCQkJCQkJCQkJCQkJCQkJXAoJeyBQUk9UX0NOVF9JTkkJCQkJCQkJCQkJCQkJCVwKCQlIQ0ZfV0FJVF9XSElMRSggKCBJUFcoIEhSRUdfSU8gKSAmIEhSRUdfSU9fV09LRU5fVVAgKSA9PSAwICk7CQkJCQkJXAoJCUhDRkFTU0VSVCggcHJvdF9jbnQsIElQVyggSFJFR19JTyApICkJCQkJCQkJXAoJfQojZW5kaWYgLy8gTVNGX1dBSVQKI2Vsc2UKI2RlZmluZSBNU0ZfV0FJVCh4KQkvKk5PUCovCiNlbmRpZiAvLyBIQ0ZfU0xFRVAKCiNkZWZpbmUgTE9GKHgpIAkJCShzaXplb2YoeCkvc2l6ZW9mKGhjZl8xNiktMSkKCiNkZWZpbmUgTVVMX0JZXzIoIHggKQkoICh4KSA8PCAxICkJCQkJCQkvL3VzZWQgdG8gbXVsdGlwbHkgYnkgMgojZGVmaW5lIERJVl9CWV8yKCB4ICkJKCAoeCkgPj4gMSApCQkJCQkJLy91c2VkIHRvIGRpdmlkZSBieSAyCgovL3Jlc29sdmUgcHJvYmxlbXMgb24gZm9yIHNvbWUgMTYgYml0cyBjb21waWxlcnMgdG8gY3JlYXRlIDMyIGJpdCB2YWx1ZXMKI2RlZmluZSBNRVJHRV8yKCBodywgbHcgKQkoICggKChoY2ZfMzIpKGh3KSkgPDwgMTYgKSB8ICgoaGNmXzE2KShsdykpICkKCiNpZiAhIGRlZmluZWQgSENGX1NUQVRJQwojZGVmaW5lCQkgIEhDRl9TVEFUSUMJc3RhdGljCiNlbmRpZiAvLwkgIEhDRl9TVEFUSUMKCiNpZiAoIChIQ0ZfVFlQRSkgJiBIQ0ZfVFlQRV9ISUk1ICkgPT0gMAojZGVmaW5lIERBV0FfQUNLKCBtYXNrKSB7CQkJCQkJCQkJCQkJCVwKCU9QVyggSFJFR19FVl9BQ0ssIG1hc2sgfCBIUkVHX0VWX0FDS19SRUdfUkVBRFkgKTsJCQkJCQlcCglPUFcoIEhSRUdfRVZfQUNLLCAobWFzayAmIH5IUkVHX0VWX0FMTE9DKSB8IEhSRUdfRVZfQUNLX1JFR19SRUFEWSApOyAJfQojZGVmaW5lIERBV0FfWkVST19GSUQocmVnKSBPUFcoIHJlZywgMCApOwojZWxzZQojZGVmaW5lIERBV0FfQUNLKCBtYXNrKSAgIE9QVyggSFJFR19FVl9BQ0ssIG1hc2sgKTsKI2RlZmluZSBEQVdBX1pFUk9fRklEKHJlZykKI2VuZGlmIC8vIEhDRl9UWVBFX0hJSTUKCiNpZiAoSENGX1RZUEUpICYgSENGX1RZUEVfV1BBCiNkZWZpbmUJQ0FMQ19SWF9NSUMoIHAsIGxlbiApIGNhbGNfbWljX3J4X2ZyYWcoIGlmYnAsIHAsIGxlbiApCiNkZWZpbmUJQ0FMQ19UWF9NSUMoIHAsIGxlbiApIGNhbGNfbWljX3R4X2ZyYWcoIGlmYnAsIHAsIGxlbiApCiNkZWZpbmUgSUZfU1NOKHgpICB4CiNkZWZpbmUgSUZfTk9UX1NTTih4KQojZWxzZQojZGVmaW5lCUNBTENfUlhfTUlDKCBwLCBsZW4gKQojZGVmaW5lCUNBTENfVFhfTUlDKCBwLCBsZW4gKQojZGVmaW5lIE1JQ19SWF9SVE4oIG1pYywgZHcgKQojZGVmaW5lIE1JQ19UWF9SVE4oIG1pYywgZHcgKQojZGVmaW5lIElGX1NTTih4KQojZGVmaW5lIElGX05PVF9TU04oeCkgeAojZW5kaWYgLy8gSENGX1RZUEVfV1BBCgojaWYgSENGX1RBTExJRVMgJiBIQ0ZfVEFMTElFU19IQ0YJCS8vSENGIHRhbGx5IHN1cHBvcnQKI2RlZmluZSBJRl9UQUxMWSh4KSAgeAojZWxzZQojZGVmaW5lIElGX1RBTExZKHgpCiNlbmRpZiAvLyBIQ0ZfVEFMTElFU19IQ0YKCgojaWYgSENGX0RNQQojZGVmaW5lIElGX0RNQSh4KQkJCXgKI2RlZmluZSBJRl9OT1RfRE1BKHgpCiNkZWZpbmUgSUZfVVNFX0RNQSh4KSAJCWlmICggICBpZmJwLT5JRkJfQ250bE9wdCAmIFVTRV9ETUEgICkgeAojZGVmaW5lIElGX05PVF9VU0VfRE1BKHgpCWlmICggIShpZmJwLT5JRkJfQ250bE9wdCAmIFVTRV9ETUEpICkgeAojZWxzZQojZGVmaW5lIElGX0RNQSh4KQojZGVmaW5lIElGX05PVF9ETUEoeCkJCXgKI2RlZmluZSBJRl9VU0VfRE1BKHgpCiNkZWZpbmUgSUZfTk9UX1VTRV9ETUEoeCkgCXgKI2VuZGlmIC8vIEhDRl9ETUEKCgojZGVmaW5lIElQVyh4KSAoKGhjZl8xNilJTl9QT1JUX1dPUkQoIGlmYnAtPklGQl9JT0Jhc2UgKyAoeCkgKSApCiNkZWZpbmUgT1BXKHgsIHkpIE9VVF9QT1JUX1dPUkQoIGlmYnAtPklGQl9JT0Jhc2UgKyAoeCksIHkgKQoJLyogbWFrZSBzdXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBIQ0ZfV0FJVF9XSElMRSBpcyBzdWNoIHRoYXQgdGhlcmUgbWF5IGJlIG11bHRpcGxlIEhDRl9XQUlUX1dISUxFIGNhbGxzCgkgKiBpbiBhIHJvdyBhbmQgdGhhdCB3aGVuIG9uZSBmYWlscyBhbGwgc3Vic2VxdWVudCBmYWlsIGltbWVkaWF0ZWx5IHdpdGhvdXQgcmVpbml0aWFsaXphdGlvbiBvZiBwcm90X2NudAoJICovCiNpZiBIQ0ZfUFJPVF9USU1FID09IDAKI2RlZmluZSBQUk9UX0NOVF9JTkkKI2RlZmluZSBJRl9QUk9UX1RJTUUoeCkKI2lmIGRlZmluZWQgSENGX1lJRUxECiNkZWZpbmUgSENGX1dBSVRfV0hJTEUoIHggKSB3aGlsZSAoICh4KSAmJiAoSENGX1lJRUxEKSApIC8qTk9QKi87CiNlbHNlCiNkZWZpbmUgSENGX1dBSVRfV0hJTEUoIHggKSB3aGlsZSAoIHggKSAvKk5PUCovOwojZW5kaWYgLy8gSENGX1lJRUxECiNlbHNlCiNkZWZpbmUgUFJPVF9DTlRfSU5JIAloY2ZfMzIgcHJvdF9jbnQgPSBpZmJwLT5JRkJfVGlja0luaTsKI2RlZmluZSBJRl9QUk9UX1RJTUUoeCkJeAojaWYgZGVmaW5lZCBIQ0ZfWUlFTEQKI2RlZmluZSBIQ0ZfV0FJVF9XSElMRSggeCApIHdoaWxlICggcHJvdF9jbnQgJiYgKHgpICYmIChIQ0ZfWUlFTEQpICkgcHJvdF9jbnQtLTsKI2Vsc2UKI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiNkZWZpbmUgSENGX1dBSVRfV0hJTEUoIHggKSB3aGlsZSAoIHByb3RfY250ICYmICh4KSApIHsgdWRlbGF5KDIpOyBwcm90X2NudC0tOyB9CiNlbmRpZiAvLyBIQ0ZfWUlFTEQKI2VuZGlmIC8vIEhDRl9QUk9UX1RJTUUKCiNpZiBkZWZpbmVkIEhDRl9FWF9JTlQKLy8jaWYgSENGX0VYX0lOVCAmIH4oIEhDRl9FWF9JTlRfVFhfRVggfCBIQ0ZfRVhfSU5UX1RYX09LIHwgSENGX0VYX0lOVF9USUNLICkKOz8gb3V0IGRhdGVkIGNoZWNraW5nCmVycjogeW91IHVzZWQgYW4gaW52YWxpZCBiaXRtYXNrOwovLyAjZW5kaWYgLy8gSENGX0VYX0lOVCB2YWxpZGF0aW9uCi8vICNlbHNlCi8vICNkZWZpbmUgSENGX0VYX0lOVCAweDAwMAojZW5kaWYgLy8gSENGX0VYX0lOVAoKI2lmIDAgLy9nZXQgY29tcGlsZXIgZ29pbmcKI2lmIEhDRl9FWF9JTlRfVElDSwkhPSBIUkVHX0VWX1RJQ0sKOz8gb3V0IGRhdGVkIGNoZWNraW5nCmVycjogc29tZW9uZSByZWRlZmluZWQgdGhlc2UgbWFjcm9zIHdoaWxlIHRoZSBpbXBsZW1lbmF0aW9uIGFzc3VtZXMgdGhleSBhcmUgZXF1YWw7CiNlbmRpZgojaWYgSENGX0VYX0lOVF9UWF9PSyAhPSBIRlNfVFhfQ05UTF9UWF9PSyB8fCBIRlNfVFhfQ05UTF9UWF9PSyAhPSBIUkVHX0VWX1RYX09LCjs/IG91dCBkYXRlZCBjaGVja2luZwplcnI6IHNvbWVvbmUgcmVkZWZpbmVkIHRoZXNlIG1hY3JvcyB3aGlsZSB0aGUgaW1wbGVtZW5hdGlvbiBhc3N1bWVzIHRoZXkgYXJlIGVxdWFsOwojZW5kaWYKI2lmIEhDRl9FWF9JTlRfVFhfRVggIT0gSEZTX1RYX0NOVExfVFhfRVggfHwgSEZTX1RYX0NOVExfVFhfRVggIT0gSFJFR19FVl9UWF9FWAo7PyBvdXQgZGF0ZWQgY2hlY2tpbmcKZXJyOiBzb21lb25lIHJlZGVmaW5lZCB0aGVzZSBtYWNyb3Mgd2hpbGUgdGhlIGltcGxlbWVuYXRpb24gYXNzdW1lcyB0aGV5IGFyZSBlcXVhbDsKI2VuZGlmCiNlbmRpZiAvLyAwIGdldCBjb21waWxlciBnb2luZwoKCi8qIFRoZSBhc3NlcnQgaW4gSENGTE9HRU5UUlkgY2hlY2tzIGFnYWluc3QgcmUtZW50cmFuY3kuIFJlLWVudHJhbmN5IGNvdWxkIGJlIGNhdXNlZCBieSBNU0YgbG9naWMgYXQKICogdGFzay1sZXZlbCBjYWxsaW5nIGhjZl9mdW5jdGlvbnMgd2l0aG91dCBzaGllbGRpbmcgd2l0aCBIQ0ZfQUNUX09OL19PRkYuIFdoZW4gYW4gaW50ZXJydXB0IG9jY3VycywKICogdGhlIElTUiBjb3VsZCAoZWl0aGVyIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGNhdXNlIHJlLWVudGVyaW5nIG9mIHRoZSBpbnRlcnJ1cHRlZCBIQ0Ytcm91dGluZS4KICoKICogVGhlICIoaWZicC0+SUZCX0Fzc2VydFdoZXJlID0gd2hlcmUpIiB0ZXN0IGluIEhDRkxPR0VOVFJZIHNlcnZpY2VzIEFMU08gYXMgYSBzdGF0ZW1lbnQgdG8gZ2V0IGFyb3VuZDoKICogI3ByYWdtYSB3YXJuaW5nOiBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50CiAqIG9uIHRoZSBpZi1zdGF0ZW1lbnQKICovCiNpZiBIQ0ZfQVNTRVJUCiNkZWZpbmUgSENGQVNTRVJUKHgscSkge2lmICghKHgpKSB7bWRkX2Fzc2VydCggICAgICAgIGlmYnAsIF9fTElORV9fICAgICAgICAgICAgICAgICAgICwgcSApO319CiNkZWZpbmUgTU1EQVNTRVJUKHgscSkge2lmICghKHgpKSB7bWRkX2Fzc2VydCggYXNzZXJ0X2lmYnAsIF9fTElORV9fICsgRklMRV9OQU1FX09GRlNFVCwgcSApO319CgojZGVmaW5lIEhDRkxPR0VOVFJZKCB3aGVyZSwgd2hhdCApIAkJCQkJCQkJCQkJCQkJXAp7aWYgKCAoaWZicC0+SUZCX0Fzc2VydFdoZXJlID0gd2hlcmUpIDw9IDE1ICkgewkJCQkJCQkJCQkJXAoJSENGX0VOVFJZKCBpZmJwICk7IAkJCQkJCQkJCQkJCQkJCQkJXAoJSENGQVNTRVJUKCAoaWZicC0+SUZCX0Fzc2VydFRyYWNlICYgMTw8KCh3aGVyZSkmMHhGKSkgPT0gMCwgaWZicC0+SUZCX0Fzc2VydFRyYWNlICk7CQlcCglpZmJwLT5JRkJfQXNzZXJ0VHJhY2UgfD0gMTw8KCh3aGVyZSkmMHhGKTsJCQkJCQkJCQkJCQlcCgl9CQkJCQkJCQkJCQkJCQkJCQkJCQkJXApIQ0ZUUkFDRShpZmJwLCB3aGVyZSApCQkJCQkJCQkJCQkJCQkJCQlcCkhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApCQkJCQkJCQkJCQkJCQkJCVwKfQoKI2RlZmluZSBIQ0ZMT0dFWElUKCB3aGVyZSApIAkJCQkJCQkJCQkJCQkJCVwKe2lmICggKGlmYnAtPklGQl9Bc3NlcnRXaGVyZSA9IHdoZXJlKSA8PSAxNSApIHsJCQkJCQkJCQkJCVwKICAJSENGX0VYSVQoIGlmYnAgKTsgCQkJCQkJCQkJCQkJCQkJCQlcCglpZmJwLT5JRkJfQXNzZXJ0VHJhY2UgJj0gfigxPDwoKHdoZXJlKSYweEYpKTsJCQkJCQkJCQkJCQlcCgl9CQkJCQkJIAkJCQkJCQkJCQkJCQkJCVwKSENGVFJBQ0UoaWZicCwgKHdoZXJlKXxIQ0ZfVFJBQ0VfRVhJVCApCQkJCQkJCQkJCQkJCVwKfQoKI2Vsc2UgLy8gSENGX0FTU0VSVAojZGVmaW5lIEhDRkFTU0VSVCggeCwgcSApCiNkZWZpbmUgTU1EQVNTRVJUKCB4LCBxICkKI2RlZmluZSBIQ0ZMT0dFTlRSWSggd2hlcmUsIHdoYXQgKSAJICAJe0hDRl9FTlRSWSggaWZicCApO30KI2RlZmluZSBIQ0ZMT0dFWElUKCB3aGVyZSApIAkJICAJe0hDRl9FWElUKCBpZmJwICk7fQojZW5kaWYgLy8gSENGX0FTU0VSVAoKI2lmIEhDRl9JTlRfT04KLyogOz8gSENGQVNTRVJUX0lOVAogKiAjaWYgKEhDRl9TTEVFUCkgJiBIQ0ZfRERTCiAqICNkZWZpbmUgSENGQVNTRVJUX0lOVCBIQ0ZBU1NFUlQoIGlmYnAtPklGQl9JbnRPZmZDbnQgIT0gMHhGRkZGICYmIGlmYnAtPklGQl9JbnRPZmZDbnQgIT0gMHhGRkZFLCBcCiAqIAkJCQkJCQkJIGlmYnAtPklGQl9JbnRPZmZDbnQgKQogKiAjZWxzZQogKi8KI2RlZmluZSBIQ0ZBU1NFUlRfSU5UIEhDRkFTU0VSVCggaWZicC0+SUZCX0ludE9mZkNudCAhPSAweEZGRkYsIGlmYnAtPklGQl9JbnRPZmZDbnQgKQovLyAjZW5kaWYgLy8gSENGX0REUwojZWxzZQojZGVmaW5lIEhDRkFTU0VSVF9JTlQKI2VuZGlmIC8vIEhDRl9JTlRfT04KCgojaWYgZGVmaW5lZCBIQ0ZfVFJBQ0UKI2RlZmluZSBIQ0ZUUkFDRShpZmJwLCB3aGVyZSApCSAgIHtPUFcoIEhSRUdfU1dfMSwgd2hlcmUgKTt9Ci8vI2RlZmluZSBIQ0ZUUkFDRShpZmJwLCB3aGVyZSApCSAgIHtIQ0ZBU1NFUlQoIERPX0FTU0VSVCwgd2hlcmUgKTt9CiNkZWZpbmUgSENGVFJBQ0VWQUxVRShpZmJwLCB3aGF0ICkge09QVyggSFJFR19TV18yLCB3aGF0ICApO30KLy8jZGVmaW5lIEhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApIHtIQ0ZBU1NFUlQoIERPX0FTU0VSVCwgd2hhdCAgKTt9CiNlbHNlCiNkZWZpbmUgSENGVFJBQ0UoaWZicCwgd2hlcmUgKQojZGVmaW5lIEhDRlRSQUNFVkFMVUUoaWZicCwgd2hhdCApCiNlbmRpZiAvLyBIQ0ZfVFJBQ0UKCgojaWYgSENGX0JJR19FTkRJQU4KI2RlZmluZSBCRV9QQVIoeCkJCQkJLHgKI2Vsc2UKI2RlZmluZSBCRV9QQVIoeCkKI2VuZGlmIC8vIEhDRl9CSUdfRU5ESUFOCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogIEVORCBPRiBNQUNST1MgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgUFJPVE9UWVBFUyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZiBIQ0ZfQVNTRVJUCmV4dGVybiBJRkJQIEJBU0VEIGFzc2VydF9pZmJwOwkJCS8vdG8gbWFrZSBhc3NlcnRzIGVhc2lseSB3b3JrIHVuZGVyIE1NRCBhbmQgREhGCkVYVEVSTl9DIHZvaWQJCSBtZGRfYXNzZXJ0CQkJKElGQlAgaWZicCwgdW5zaWduZWQgaW50IGxpbmVfbnVtYmVyLCBoY2ZfMzIgcSApOwojZW5kaWYgLy9IQ0ZfQVNTRVJUCgojaWYgISAoIChIQ0ZfSU8pICYgSENGX0lPXzMyQklUUyApCQkJCS8vIGRlZmluZWQgMTYgYml0cyBvbmx5CiN1bmRlZiBPVVRfUE9SVF9TVFJJTkdfMzIKI3VuZGVmIElOX1BPUlRfU1RSSU5HXzMyCiNlbmRpZiAvLyBIQ0ZfSU8KI2VuZGlmCS8vSENGREVGQ19ICgo=