LyoKICogV3JpdHRlbiBieSBKLlQuIENvbmtsaW4gPGp0Y0BuZXRic2Qub3JnPi4KICogQWRhcHRlZCBmb3IgdXNlIGFzIGxvZzIgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4uCiAqIFB1YmxpYyBkb21haW4uCiAqCiAqIENoYW5nZWQgdG8gdXNlIGZ5bDJ4cDEgZm9yIHZhbHVlcyBuZWFyIDEsIDxkcmVwcGVyQGN5Z251cy5jb20+LgogKi8KCiNpbmNsdWRlIDxtYWNoaW5lL2FzbS5oPgoKCS5zZWN0aW9uIC5yb2RhdGEuY3N0OCwiYU0iLEBwcm9nYml0cyw4CgoJLnAyYWxpZ24gMwoJLnR5cGUgb25lLEBvYmplY3QKb25lOgkuZG91YmxlIDEuMAoJQVNNX1NJWkVfRElSRUNUSVZFKG9uZSkKCS8qIEl0IGlzIG5vdCBpbXBvcnRhbnQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIHByZWNpc2UuICBJdCBpcyBvbmx5CgkgICBhIHZhbHVlIHdoaWNoIGlzIGtub3duIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgZm9yIHVzaW5nIHRoZQoJICAgZnlsMnhwMSBpbnN0cnVjdGlvbi4gICovCgkudHlwZSBsaW1pdCxAb2JqZWN0CmxpbWl0OgkuZG91YmxlIDAuMjkKCUFTTV9TSVpFX0RJUkVDVElWRShsaW1pdCkKCgojaWZkZWYgUElDCiMgZGVmaW5lIE1PKG9wKSBvcCMjQEdPVE9GRiglZWR4KQojZWxzZQojIGRlZmluZSBNTyhvcCkgb3AKI2VuZGlmCgoJLnRleHQKRU5UUlkoX19pZWVlNzU0X2xvZzIpCiNpZmRlZiBQSUMKCUxPQURfUElDX1JFRyAoZHgpCiNlbmRpZgoJZmxkbAlNTyhvbmUpCglmbGRsCTQoJWVzcCkJCS8vIHggOiAxCglmeGFtCglmbnN0c3cKCWZsZAklc3QJCS8vIHggOiB4IDogMQoJc2FoZgoJamMJM2YJCS8vIGluIGNhc2UgeCBpcyBOYU4gb3IgsUluZgo0Oglmc3ViCSVzdCgyKSwgJXN0CS8vIHgtMSA6IHggOiAxCglmbGQJJXN0CQkvLyB4LTEgOiB4LTEgOiB4IDogMQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IDEKCWZjb21wbAlNTyhsaW1pdCkJLy8geC0xIDogeCA6IDEKCWZuc3RzdwkJCS8vIHgtMSA6IHggOiAxCglhbmRiCSQweDQ1LCAlYWgKCWp6CTJmCglmeGFtCglmbnN0c3cKCWFuZGIJJDB4NDUsICVhaAoJY21wYgkkMHg0MCwgJWFoCglqbmUJNWYKCWZhYnMJCQkvLyBsb2cyKDEpIGlzICswIGluIGFsbCByb3VuZGluZyBtb2Rlcy4KNToJZnN0cAklc3QoMSkJCS8vIHgtMSA6IDEKCWZ5bDJ4cDEJCQkvLyBsb2coeCkKCXJldAoKMjoJZnN0cAklc3QoMCkJCS8vIHggOiAxCglmeWwyeAkJCS8vIGxvZyh4KQoJcmV0CgozOglqcAk0YgkJLy8gaW4gY2FzZSB4IGlzILFJbmYKCWZzdHAJJXN0KDEpCglmc3RwCSVzdCgxKQoJcmV0CkVORCAoX19pZWVlNzU0X2xvZzIpCnN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X2xvZzIsIF9fbG9nMl9maW5pdGUpCg==