LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogUHVibGljIGRvbWFpbi4KICoKICogQ2hhbmdlZCB0byB1c2UgZnlsMnhwMSBmb3IgdmFsdWVzIG5lYXIgMSwgPGRyZXBwZXJAY3lnbnVzLmNvbT4uCiAqLwoKI2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+CgoJLnNlY3Rpb24gLnJvZGF0YS5jc3Q4LCJhTSIsQHByb2diaXRzLDgKCgkucDJhbGlnbiAzCgkudHlwZSBvbmUsQG9iamVjdApvbmU6CS5kb3VibGUgMS4wCglBU01fU0laRV9ESVJFQ1RJVkUob25lKQoJLyogSXQgaXMgbm90IGltcG9ydGFudCB0aGF0IHRoaXMgY29uc3RhbnQgaXMgcHJlY2lzZS4gIEl0IGlzIG9ubHkKCSAgIGEgdmFsdWUgd2hpY2ggaXMga25vd24gdG8gYmUgb24gdGhlIHNhZmUgc2lkZSBmb3IgdXNpbmcgdGhlCgkgICBmeWwyeHAxIGluc3RydWN0aW9uLiAgKi8KCS50eXBlIGxpbWl0LEBvYmplY3QKbGltaXQ6CS5kb3VibGUgMC4yOQoJQVNNX1NJWkVfRElSRUNUSVZFKGxpbWl0KQoKCiNpZmRlZiBQSUMKIyBkZWZpbmUgTU8ob3ApIG9wIyNAR09UT0ZGKCVlZHgpCiNlbHNlCiMgZGVmaW5lIE1PKG9wKSBvcAojZW5kaWYKCgkudGV4dApFTlRSWShfX2llZWU3NTRfbG9nMTApCglmbGRsZzIJCQkvLyBsb2cxMCgyKQoJZmxkbAk0KCVlc3ApCQkvLyB4IDogbG9nMTAoMikKI2lmZGVmIFBJQwoJTE9BRF9QSUNfUkVHIChkeCkKI2VuZGlmCglmeGFtCglmbnN0c3cKCWZsZAklc3QJCS8vIHggOiB4IDogbG9nMTAoMikKCXNhaGYKCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYKNDoJZnN1YmwJTU8ob25lKQkJLy8geC0xIDogeCA6IGxvZzEwKDIpCglmbGQJJXN0CQkvLyB4LTEgOiB4LTEgOiB4IDogbG9nMTAoMikKCWZhYnMJCQkvLyB8eC0xfCA6IHgtMSA6IHggOiBsb2cxMCgyKQoJZmNvbXBsCU1PKGxpbWl0KQkvLyB4LTEgOiB4IDogbG9nMTAoMikKCWZuc3RzdwkJCS8vIHgtMSA6IHggOiBsb2cxMCgyKQoJYW5kYgkkMHg0NSwgJWFoCglqegkyZgoJZnN0cAklc3QoMSkJCS8vIHgtMSA6IGxvZzEwKDIpCglmeWwyeHAxCQkJLy8gbG9nMTAoeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiBsb2cxMCgyKQoJZnlsMngJCQkvLyBsb2cxMCh4KQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CkVORCAoX19pZWVlNzU0X2xvZzEwKQpzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9sb2cxMCwgX19sb2cxMF9maW5pdGUpCg==