LyogMjAwMS8xMC8wMgogKgogKiBlbnRlcm5vdy5oICAgSGVhZGVyLWZpbGUgaW5jbHVkZWQgYnkKICogICAgICAgICAgICAgIGVudGVybm93X3BjaS5jCiAqCiAqIEF1dGhvciAgICAgICBDaHJpc3RvcGggRXJzZmVsZCA8aW5mb0Bmb3JtdWxhLW4uZGU+CiAqICAgICAgICAgICAgICBGb3JtdWxhLW4gRXVyb3BlIEFHICh3d3cuZm9ybXVsYS1uLmNvbSkKICogICAgICAgICAgICAgIHByZXZpb3VzbHkgR2VyZGVzIEFHCiAqCiAqCiAqICAgICAgICAgICAgICBUaGlzIGZpbGUgaXMgKGMpIHVuZGVyIEdOVSBQVUJMSUMgTElDRU5TRQogKi8KCgovKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkYXRhdHlwZXMgYW5kIG1hY3JvcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KCiNkZWZpbmUgQllURQkJCQkJCQl1bnNpZ25lZCBjaGFyCiNkZWZpbmUgV09SRAkJCQkJCQl1bnNpZ25lZCBpbnQKI2RlZmluZSBISUJZVEUodykJCQkJCQkoKHVuc2lnbmVkIGNoYXIpKCh3ICYgMHhmZjAwKSAvIDI1NikpCiNkZWZpbmUgTE9CWVRFKHcpCQkJCQkJKCh1bnNpZ25lZCBjaGFyKSh3ICYgMHgwMGZmKSkKI2RlZmluZSBJbkJ5dGUoYWRkcikJCQkJCQlpbmIoYWRkcikKI2RlZmluZSBPdXRCeXRlKGFkZHIsdmFsKQkJCQkJb3V0Yih2YWwsYWRkcikKCgoKLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBjYXJkLXNwZWNpZmljICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCgovKiBm/HIgUG93ZXJJU0ROIFBDSSAqLwojZGVmaW5lIFRKX0FNRF9JUlEgCQkJCQkJMHgyMAojZGVmaW5lIFRKX0xFRDEgCQkJCQkJMHg0MAojZGVmaW5lIFRKX0xFRDIgCQkJCQkJMHg4MAoKCi8qIERhcyBGZW5zdGVyIHp1bSBBTUQuLi4KICogQWIgQWRyZXNzZSBody5uamV0LmJhc2UgKyBUSl9BTURfUE9SVCB3ZXJkZW4gdm9tIEFNRCBqZXdlaWxzIDggQml0IGluCiAqIGRlbiBUaWdlckpldCBpL28tUmF1bSBnZW1hcHB0CiAqIC0+IDB4MDEgZGVzIEFNRCBiZWkgaHcubmpldC5iYXNlICsgMEM0ICovCiNkZWZpbmUgVEpfQU1EX1BPUlQJCQkJCQkweEMwCgoKCi8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFByb3RvdHlwZW4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwoKQllURSBSZWFkQnl0ZUFtZDc5MzAoc3RydWN0IElzZG5DYXJkU3RhdGUgKmNzLCBCWVRFIG9mZnNldCk7CnZvaWQgV3JpdGVCeXRlQW1kNzkzMChzdHJ1Y3QgSXNkbkNhcmRTdGF0ZSAqY3MsIEJZVEUgb2Zmc2V0LCBCWVRFIHZhbHVlKTsK