IyEvYmluL3NoCiMKIyBTcGVsbCBhIGZpbGUgJiBnZW5lcmF0ZSB0aGUgc3ludGF4IHN0YXRlbWVudHMgbmVjZXNzYXJ5IHRvCiMgaGlnaGxpZ2h0IGluIHZpbS4gIEJhc2VkIG9uIGEgcHJvZ3JhbSBmcm9tIEtyaXNobmEgR2FkZXBhbGxpCiMgPGtyaXNobmFAc3RkYXZpZHMucGlja2VyLmNvbT4uCiMKIyBJIHVzZSB0aGUgZm9sbG93aW5nIG1hcHBpbmdzIChpbiAudmltcmMpOgojCiMJbm9yZW1hcCA8Rjg+IDpzbyBgdmltc3BlbGwuc2ggJWA8Q1I+PENSPgojCW5vcmVtYXAgPEY3PiA6c3ludGF4IGNsZWFyIFNwZWxsRXJyb3JzPENSPgojCiMgTmVpbCBTY2hlbWVuYXVlciA8bmFzY2hlbWVAdWNhbGdhcnkuY2E+CiMgTWFyY2ggMTk5OQojCiMgU2FmZSBtZXRob2QgZm9yIHRoZSB0ZW1wIGZpbGUgYnkgSmF2aWVyIEZlcm7hbmRlei1TYW5ndWlub19QZfFhCgpJTkZJTEU9JDEKdG1wPSIke1RNUERJUi0vdG1wfSIKT1VURklMRT1gbWt0ZW1wIC10IHZpbXNwZWxsWFhYWFhYIHx8IHRlbXBmaWxlIC1wIHZpbXNwZWxsIHx8IGVjaG8gbm9uZWAKIyBJZiB0aGUgc3RhbmRhcmQgY29tbWFuZHMgZmFpbGVkIHRoZW4gY3JlYXRlIHRoZSBmaWxlCiMgc2luY2Ugd2UgY2Fubm90IGNyZWF0ZSBhIGRpcmVjdG9yeSAod2UgY2Fubm90IHJlbW92ZSBpdCBvbiBleGl0KQojIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIHNhZmVzdCB3YXkgcG9zc2libGUuCmlmIHRlc3QgIiRPVVRGSUxFIiA9IG5vbmU7IHRoZW4KICAgICAgICBPVVRGSUxFPSR0bXAvdmltc3BlbGwkJAoJWyAtZSAkT1VURklMRSBdICYmIHsgZWNobyAiQ2Fubm90IHVzZSB0ZW1wb3JhcnkgZmlsZSAkT1VURklMRSwgaXQgYWxyZWFkeSBleGlzdHMhOyBleGl0IDEgOyB9IAogICAgICAgICh1bWFzayAwNzc7IHRvdWNoICRPVVRGSUxFKQpmaQojIE5vdGUgdGhlIGNvcHkgb2Ygdmltc3BlbGwgY2Fubm90IGJlIGRlbGV0ZWQgb24gZXhpdCBzaW5jZSBpdCBpcwojIHVzZWQgYnkgdmltLCBvdGhlcndpc2UgaXQgc2hvdWxkIGRvIHRoaXM6CiMgdHJhcCAicm0gLWYgJE9VVEZJTEUiIDAgMSAyIDMgOSAxMSAxMyAxNQoKCiMKIyBsb2NhbCBzcGVsbGluZ3MKIwpMT0NBTF9ESUNUPSR7TE9DQUxfRElDVC0kSE9NRS9sb2NhbC9saWIvbG9jYWxfZGljdH0KCmlmIFsgLWYgJExPQ0FMX0RJQ1QgXQp0aGVuCglTUEVMTF9BUkdTPSIrJExPQ0FMX0RJQ1QiCmZpCgpzcGVsbCAkU1BFTExfQVJHUyAkSU5GSUxFIHwgc29ydCAtdSB8CmF3ayAnCiAgICAgIHsKCXByaW50ZiAic3ludGF4IG1hdGNoIFNwZWxsRXJyb3JzIFwiXFw8JXNcXD5cIlxuIiwgJDAgOwogICAgICB9CgpFTkQgICB7CglwcmludGYgImhpZ2hsaWdodCBsaW5rIFNwZWxsRXJyb3JzIEVycm9yTXNnXG5cbiIgOwogICAgICB9CicgPiAkT1VURklMRQplY2hvICIhcm0gJE9VVEZJTEUiID4+ICRPVVRGSUxFCmVjaG8gJE9VVEZJTEUK