LyoKICogTW90aWYgV2luZG93IE1hbmFnZXIgZGVmaW5pdGlvbnMKICoKICogQ29weXJpZ2h0IDIwMDEgT3ZlIEvldmVuLCBUcmFuc0dhbWluZyBUZWNobm9sb2dpZXMgSW5jLgogKiAodGhlc2UgZGVmaW5pdGlvbnMgd2VyZSBmb3VuZCBpbiBHVEsrIDEuMiwgZ2RrL013bVV0aWwuaCkKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwojaWZuZGVmIF9fV0lORV9NV01fSAojZGVmaW5lIF9fV0lORV9NV01fSAoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgdW5zaWduZWQgbG9uZyBmdW5jdGlvbnM7CiAgdW5zaWduZWQgbG9uZyBkZWNvcmF0aW9uczsKICBsb25nIGlucHV0X21vZGU7CiAgdW5zaWduZWQgbG9uZyBzdGF0dXM7Cn0gTW90aWZXbUhpbnRzLCBNd21IaW50czsKCiNkZWZpbmUgTVdNX0hJTlRTX0ZVTkNUSU9OUyAgIDEKI2RlZmluZSBNV01fSElOVFNfREVDT1JBVElPTlMgMgojZGVmaW5lIE1XTV9ISU5UU19JTlBVVF9NT0RFICA0CiNkZWZpbmUgTVdNX0hJTlRTX1NUQVRVUyAgICAgIDgKCiNkZWZpbmUgTVdNX0ZVTkNfQUxMICAgICAgICAgIDB4MDEKI2RlZmluZSBNV01fRlVOQ19SRVNJWkUgICAgICAgMHgwMgojZGVmaW5lIE1XTV9GVU5DX01PVkUgICAgICAgICAweDA0CiNkZWZpbmUgTVdNX0ZVTkNfTUlOSU1JWkUgICAgIDB4MDgKI2RlZmluZSBNV01fRlVOQ19NQVhJTUlaRSAgICAgMHgxMAojZGVmaW5lIE1XTV9GVU5DX0NMT1NFICAgICAgICAweDIwCgojZGVmaW5lIE1XTV9ERUNPUl9BTEwgICAgICAgICAweDAxCiNkZWZpbmUgTVdNX0RFQ09SX0JPUkRFUiAgICAgIDB4MDIKI2RlZmluZSBNV01fREVDT1JfUkVTSVpFSCAgICAgMHgwNAojZGVmaW5lIE1XTV9ERUNPUl9USVRMRSAgICAgICAweDA4CiNkZWZpbmUgTVdNX0RFQ09SX01FTlUgICAgICAgIDB4MTAKI2RlZmluZSBNV01fREVDT1JfTUlOSU1JWkUgICAgMHgyMAojZGVmaW5lIE1XTV9ERUNPUl9NQVhJTUlaRSAgICAweDQwCgojZGVmaW5lIE1XTV9JTlBVVF9NT0RFTEVTUyAgICAgICAgICAgICAgICAgIDAKI2RlZmluZSBNV01fSU5QVVRfUFJJTUFSWV9BUFBMSUNBVElPTl9NT0RBTCAxCiNkZWZpbmUgTVdNX0lOUFVUX1NZU1RFTV9NT0RBTCAgICAgICAgICAgICAgMgojZGVmaW5lIE1XTV9JTlBVVF9GVUxMX0FQUExJQ0FUSU9OX01PREFMICAgIDMKI2RlZmluZSBNV01fSU5QVVRfQVBQTElDQVRJT05fTU9EQUwgICAgICAgICAxCgojZGVmaW5lIE1XTV9URUFST0ZGX1dJTkRPVyAxCgp0eXBlZGVmIHN0cnVjdCB7CiAgbG9uZyBmbGFnczsKICBXaW5kb3cgd21fd2luZG93Owp9IE1vdGlmV21JbmZvLCBNd21JbmZvOwoKI2RlZmluZSBNV01fSU5GT19TVEFSVFVQX1NUQU5EQVJEIDEKI2RlZmluZSBNV01fSU5GT19TVEFSVFVQX0NVU1RPTSAgIDIKCiNkZWZpbmUgX1hBX01PVElGX1dNX0hJTlRTICAgICJfTU9USUZfV01fSElOVFMiCiNkZWZpbmUgX1hBX01PVElGX1dNX01FU1NBR0VTICJfTU9USUZfV01fTUVTU0FHRVMiCiNkZWZpbmUgX1hBX01PVElGX1dNX09GRlNFVCAgICJfTU9USUZfV01fT0ZGU0VUIgojZGVmaW5lIF9YQV9NT1RJRl9XTV9NRU5VICAgICAiX01PVElGX1dNX01FTlUiCiNkZWZpbmUgX1hBX01PVElGX1dNX0lORk8gICAgICJfTU9USUZfV01fSU5GTyIKCiNkZWZpbmUgX1hBX01XTV9ISU5UUyAgICBfWEFfTU9USUZfV01fSElOVFMKI2RlZmluZSBfWEFfTVdNX01FU1NBR0VTIF9YQV9NT1RJRl9XTV9NRVNTQUdFUwojZGVmaW5lIF9YQV9NV01fTUVOVSAgICAgX1hBX01PVElGX1dNX01FTlUKI2RlZmluZSBfWEFfTVdNX0lORk8gICAgIF9YQV9NT1RJRl9XTV9JTkZPCgojZW5kaWYgLyogX19XSU5FX01XTV9IICovCg==