LyogQm9vc3QgaW50ZXJ2YWwvaHdfcm91bmRpbmcuaHBwIHRlbXBsYXRlIGltcGxlbWVudGF0aW9uIGZpbGUKICoKICogQ29weXJpZ2h0IDIwMDIgSGVydukgQnL2bm5pbWFubiwgR3VpbGxhdW1lIE1lbHF1aW9uZCwgU3lsdmFpbiBQaW9uCiAqIENvcHlyaWdodCAyMDA1IEd1aWxsYXVtZSBNZWxxdWlvbmQKICoKICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgogKiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvcgogKiBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKICovCgojaWZuZGVmIEJPT1NUX05VTUVSSUNfSU5URVJWQUxfSFdfUk9VTkRJTkdfSFBQCiNkZWZpbmUgQk9PU1RfTlVNRVJJQ19JTlRFUlZBTF9IV19ST1VORElOR19IUFAKCiNpbmNsdWRlIDxib29zdC9udW1lcmljL2ludGVydmFsL3JvdW5kaW5nLmhwcD4KI2luY2x1ZGUgPGJvb3N0L251bWVyaWMvaW50ZXJ2YWwvcm91bmRlZF9hcml0aC5ocHA+CgojZGVmaW5lIEJPT1NUX05VTUVSSUNfSU5URVJWQUxfTk9fSEFSRFdBUkUKCi8vIGRlZmluZSBhcHByb3ByaWF0ZSBzcGVjaWFsaXphdGlvbiBvZiByb3VuZGluZ19jb250cm9sIGZvciBidWlsdC1pbiB0eXBlcwojaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiAoZGVmaW5lZChfX1VTRV9JU09DOTkpIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKIyAgaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy9pbnRlcnZhbC9kZXRhaWwvYzk5X3JvdW5kaW5nX2NvbnRyb2wuaHBwPgojZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9NX1g2NCkKIyAgaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy9pbnRlcnZhbC9kZXRhaWwveDg2X3JvdW5kaW5nX2NvbnRyb2wuaHBwPgojZWxpZiBkZWZpbmVkKHBvd2VycGMpIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykKIyAgaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy9pbnRlcnZhbC9kZXRhaWwvcHBjX3JvdW5kaW5nX2NvbnRyb2wuaHBwPgojZWxpZiBkZWZpbmVkKHNwYXJjKSB8fCBkZWZpbmVkKF9fc3BhcmNfXykKIyAgaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy9pbnRlcnZhbC9kZXRhaWwvc3BhcmNfcm91bmRpbmdfY29udHJvbC5ocHA+CiNlbGlmIGRlZmluZWQoYWxwaGEpIHx8IGRlZmluZWQoX19hbHBoYV9fKQojICBpbmNsdWRlIDxib29zdC9udW1lcmljL2ludGVydmFsL2RldGFpbC9hbHBoYV9yb3VuZGluZ19jb250cm9sLmhwcD4KI2VsaWYgZGVmaW5lZChpYTY0KSB8fCBkZWZpbmVkKF9faWE2NCkgfHwgZGVmaW5lZChfX2lhNjRfXykKIyAgaW5jbHVkZSA8Ym9vc3QvbnVtZXJpYy9pbnRlcnZhbC9kZXRhaWwvaWE2NF9yb3VuZGluZ19jb250cm9sLmhwcD4KI2VuZGlmCgojaWYgZGVmaW5lZChCT09TVF9OVU1FUklDX0lOVEVSVkFMX05PX0hBUkRXQVJFKSAmJiAoZGVmaW5lZChfX1VTRV9JU09DOTkpIHx8IGRlZmluZWQoX19NU0xfXykpCiMgIGluY2x1ZGUgPGJvb3N0L251bWVyaWMvaW50ZXJ2YWwvZGV0YWlsL2M5OV9yb3VuZGluZ19jb250cm9sLmhwcD4KI2VuZGlmCgojaWYgZGVmaW5lZChCT09TVF9OVU1FUklDX0lOVEVSVkFMX05PX0hBUkRXQVJFKQojICB1bmRlZiBCT09TVF9OVU1FUklDX0lOVEVSVkFMX05PX0hBUkRXQVJFCiMgIGVycm9yIEJvb3N0Lk51bWVyaWMuSW50ZXJ2YWw6IFBsZWFzZSBzcGVjaWZ5IHJvdW5kaW5nIGNvbnRyb2wgbWVjaGFuaXNtLgojZW5kaWYKCm5hbWVzcGFjZSBib29zdCB7Cm5hbWVzcGFjZSBudW1lcmljIHsKbmFtZXNwYWNlIGludGVydmFsX2xpYiB7CgovKgogKiBUaHJlZSBzcGVjaWFsaXphdGlvbnMgb2Ygcm91bmRlZF9tYXRoPFQ+CiAqLwoKdGVtcGxhdGU8PgpzdHJ1Y3Qgcm91bmRlZF9tYXRoPGZsb2F0PgogIDogc2F2ZV9zdGF0ZTxyb3VuZGVkX2FyaXRoX29wcDxmbG9hdD4gPgp7fTsKCnRlbXBsYXRlPD4Kc3RydWN0IHJvdW5kZWRfbWF0aDxkb3VibGU+CiAgOiBzYXZlX3N0YXRlPHJvdW5kZWRfYXJpdGhfb3BwPGRvdWJsZT4gPgp7fTsKCnRlbXBsYXRlPD4Kc3RydWN0IHJvdW5kZWRfbWF0aDxsb25nIGRvdWJsZT4KICA6IHNhdmVfc3RhdGU8cm91bmRlZF9hcml0aF9vcHA8bG9uZyBkb3VibGU+ID4Ke307Cgp9IC8vIG5hbWVzcGFjZSBpbnRlcnZhbF9saWIKfSAvLyBuYW1lc3BhY2UgbnVtZXJpYwp9IC8vIG5hbWVzcGFjZSBib29zdAoKI2VuZGlmIC8vIEJPT1NUX05VTUVSSUNfSU5URVJWQUxfSFdfUk9VTkRJTkdfSFBQCg==