LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIERlCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICAyCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgIiZEYXRlaSIKI2RlZmluZSBNRU5VX0ZJTEVfT1BFTiAgICAgICAgICAgICAgICLWJmZmbmVuLi4uIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVCAgICAgICAgICAgICAgIlRoZW1hICZkcnVja2VuIgojZGVmaW5lIE1FTlVfRklMRV9QUklOVEVSX1NFVFVQICAgICAgIkRydWNrZXImZWlucmljaHR1bmcuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAiJkJlZW5kZW4iCgojZGVmaW5lIE1FTlVfRURJVCAgICAgICAgICAgICAgICAgICAgIiZCZWFyYmVpdGVuIgojZGVmaW5lIE1FTlVfRURJVF9DT1BZX0RJQUxPRyAgICAgICAgIiZLb3BpZXJlbi4uLiIKI2RlZmluZSBNRU5VX0VESVRfQU5OT1RBVEUgICAgICAgICAgICImQW5tZXJrZW4uLi4iCgojZGVmaW5lIE1FTlVfQk9PS01BUksgICAgICAgICAgICAgICAgIiZMZXNlemVpY2hlbiIKI2RlZmluZSBNRU5VX0JPT0tNQVJLX0RFRklORSAgICAgICAgICImRGVmaW5pZXJlbi4uLiIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAiJkhpbGZlIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9IRUxQICAgICAgICAgICAgIiZIaWxmZSBiZW51dHplbiIKI2RlZmluZSBNRU5VX0hFTFBfT05fVE9QICAgICAgICAgICAgICJJbW1lciBpbSAmVm9yZGVyZ3J1bmQiCiNkZWZpbmUgTUVOVV9IRUxQX0lORk8gICAgICAgICAgICAgICAiSW5mJm8uLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0FCT1VUX1dJTkUgICAgICAgICAiJtxiZXIgV0lORSIKCi8qIFN0cmluZ3MgKi8KCiNkZWZpbmUgU1RSSU5HX1dJTkVfSEVMUCAgICAgICAgICAgICAiV0lORSBIaWxmZSIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICJGRUhMRVIiCiNkZWZpbmUgU1RSSU5HX1dBUk5JTkcgICAgICAgICAgICAgICAiQUNIVFVORyIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICJJbmZvcm1hdGlvbiIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICJOaWNodCBpbXBsZW1lbnRpZXJ0IgojZGVmaW5lIFNUUklOR19ITFBGSUxFX0VSUk9SX3MgICAgICAgIkZlaGxlciBiZWltIExlc2VuIGRlciBIaWxmZS1EYXRlaSBgJXMnIgojZGVmaW5lIFNUUklOR19DT05URU5UUyAgICAgICAgICAgICAgIiZJbmhhbHQiCiNkZWZpbmUgU1RSSU5HX1NFQVJDSCAgICAgICAgICAgICAgICAiJlN1Y2hlbiIKI2RlZmluZSBTVFJJTkdfQkFDSyAgICAgICAgICAgICAgICAgICImWnVy/GNrIgojZGVmaW5lIFNUUklOR19ISVNUT1JZICAgICAgICAgICAgICAgIiZCaXNoZXIiCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAiQWxsZSBEYXRlaWVuICgqLiopIgojZGVmaW5lIFNUUklOR19IRUxQX0ZJTEVTX0hMUCAgICAgICAgIkhpbGZlLURhdGVpZW4gKCouaGxwKSIKCiNpbmNsdWRlICJYeC5yYyIK