IyBHVE1fMF9odW1hbl8yMDA2X3BvcHVsYXRpb24ucHJvcGVydGllcwojIFRoaXMgZmlsZSBjb250YWlucyBwb3B1bGF0aW9uIHZhbHVlcyBmb3IgR3VhdGVtYWxhCiMvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojICogQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4CiMgKiBJQk0gQ29ycG9yYXRpb24sIEJmUiwgYW5kIG90aGVycy4KIyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKIyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAojICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKIyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCiMgKgojICogQ29udHJpYnV0b3JzOgojICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQgbmV3IGZlYXR1cmVzCiMgKiAgICAgQnVuZGVzaW5zdGl0dXQgZvxyIFJpc2lrb2Jld2VydHVuZyAtIFBhamVrIEdyYXBoIGludGVyZmFjZSwgbmV3IFZldGVyaW5hcnkgTW9kZWxzCiMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiMgVGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgdGhhdCB3aWxsIGludGVycHJldCB0aGUgcmVzdCBvZiB0aGUgZmlsZSdzIGNvbnRlbnRzClJFQ09SRF9DTEFTU05BTUUgPSBvcmcuZWNsaXBzZS5zdGVtLmludGVybmFsLmRhdGEucmVjb3Jkcy5Db3VudHJ5R3JhcGhSZWNvcmQkQ291bnRyeVBvcHVsYXRpb25MYWJlbEdyYXBoUmVjb3JkCgojIFRoZSBJU08tMzE2Ni0xIGFscGhhMyBjb2RlIGZvciB0aGUgY291bnRyeQpJU09LRVkgPSBHVE0KCiMgVGhlIGFkbWluaXN0cmF0aW9uIGxldmVsIG9mIHRoZSBncmFwaCBkYXRhCkFETUlOX0xFVkVMID0gMAoKIyBUaGlzIGlzIHRoZSBkYXRlIHJhbmdlIGZvciB3aGljaCB0aGUgdmFsdWVzIGluIHRoaXMgZmlsZSBhcmUgdmFsaWQKIyBTZWUgaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLzEuMS92YWxpZApWQUxJRCA9IHN0YXJ0PTIwMDYtMDEtMDE7IGVuZD0yMDA2LTEyLTMxOwoKIyBUaGlzIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEKIyBUaGUgdmFsdWUgd2FzIHNhbXBsZWQgaW4gSnVuZSBhbmQgcmVwcmVzZW50cyB0aGUgYXZlcmFnZSBmb3IgdGhlIHllYXIuClNPVVJDRSA9ICBodHRwczovL3d3dy5jaWEuZ292L2NpYS9wdWJsaWNhdGlvbnMvZmFjdGJvb2svZ2Vvcy9ndC5odG1sCgojIFRoZSBwb3B1bGF0aW9uIGlkZW50aWZpZXIKUE9QVUxBVElPTiA9IGh1bWFuCgojIFRoZSB5ZWFyIHRoZSBkYXRhIGlzIHZhbGlkCllFQVIgPSAyMDA2CgojIFRoZSBrZXkgaXMgdGhlIElTTy0zMTY2LTEgYWxwaGEzIHRocmVlIGxldHRlciBpZGVudGlmaWVyIG9mIHRoZSBjb3VudHJ5CiMgVGhlIHVuaXRzIGFyZSBpbmRpdmlkdWFscwpHVE0gPSAxMjI5MzU0NQoK