IyBMb2NhbGUgbmFtZSBhbGlhcyBkYXRhIGJhc2UuCiMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAojIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCiMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAojIFVTQS4KCiMgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgb2YKIyB0aGUgWCBXaW5kb3cgU3lzdGVtLCB3aGljaCBub3JtYWxseSBjYW4gYmUgZm91bmQgaW4KIwkvdXNyL2xpYi9YMTEvbG9jYWxlL2xvY2FsZS5hbGlhcwojIEEgc2luZ2xlIGxpbmUgY29udGFpbnMgdHdvIGZpZWxkczogYW4gYWxpYXMgYW5kIGEgc3Vic3RpdHV0aW9uIHZhbHVlLgojIEFsbCBlbnRyaWVzIGFyZSBjYXNlIGluZGVwZW5kZW50LgoKIyBOb3RlOiBUaGlzIGZpbGUgaXMgZmFyIGZyb20gYmVpbmcgY29tcGxldGUuICBJZiB5b3UgaGF2ZSBhIHZhbHVlIGZvcgojIHlvdXIgb3duIHNpdGUgd2hpY2ggeW91IHRoaW5rIG1pZ2h0IGJlIHVzZWZ1bCBmb3Igb3RoZXJzIHRvbywgc2hhcmUKIyBpdCB3aXRoIHRoZSByZXN0IG9mIHVzLiAgU2VuZCBpdCB1c2luZyB0aGUgYGdsaWJjYnVnJyBzY3JpcHQgdG8KIyBidWdzQGdudS5vcmcuCgojIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogCgpib2ttYWwJCW5iX05PLklTTy04ODU5LTEKYm9rbeVsCQluYl9OTy5JU08tODg1OS0xCmNhdGFsYW4JCWNhX0VTLklTTy04ODU5LTEKY3JvYXRpYW4JaHJfSFIuSVNPLTg4NTktMgpjemVjaAkJY3NfQ1ouSVNPLTg4NTktMgpkYW5pc2ggICAgICAgICAgZGFfREsuSVNPLTg4NTktMQpkYW5zawkJZGFfREsuSVNPLTg4NTktMQpkZXV0c2NoCQlkZV9ERS5JU08tODg1OS0xCmR1dGNoCQlubF9OTC5JU08tODg1OS0xCmVlc3RpCQlldF9FRS5JU08tODg1OS0xCmVzdG9uaWFuCWV0X0VFLklTTy04ODU5LTEKZmlubmlzaCAgICAgICAgIGZpX0ZJLklTTy04ODU5LTEKZnJhbudhaXMJZnJfRlIuSVNPLTg4NTktMQpmcmVuY2gJCWZyX0ZSLklTTy04ODU5LTEKZ2FsZWdvCQlnbF9FUy5JU08tODg1OS0xCmdhbGljaWFuCWdsX0VTLklTTy04ODU5LTEKZ2VybWFuCQlkZV9ERS5JU08tODg1OS0xCmdyZWVrICAgICAgICAgICBlbF9HUi5JU08tODg1OS03CmhlYnJldyAgICAgICAgICBoZV9JTC5JU08tODg1OS04CmhydmF0c2tpCWhyX0hSLklTTy04ODU5LTIKaHVuZ2FyaWFuICAgICAgIGh1X0hVLklTTy04ODU5LTIKaWNlbGFuZGljICAgICAgIGlzX0lTLklTTy04ODU5LTEKaXRhbGlhbiAgICAgICAgIGl0X0lULklTTy04ODU5LTEKamFwYW5lc2UJamFfSlAuZXVjSlAKamFwYW5lc2UuZXVjCWphX0pQLmV1Y0pQCmphX0pQCQlqYV9KUC5ldWNKUApqYV9KUC51amlzCWphX0pQLmV1Y0pQCmphcGFuZXNlLnNqaXMJamFfSlAuU0pJUwprb3JlYW4JCWtvX0tSLmV1Y0tSCmtvcmVhbi5ldWMgCWtvX0tSLmV1Y0tSCmtvX0tSCQlrb19LUi5ldWNLUgpsaXRodWFuaWFuICAgICAgbHRfTFQuSVNPLTg4NTktMTMKbm9fTk8JCW5iX05PLklTTy04ODU5LTEKbm9fTk8uSVNPLTg4NTktMSBuYl9OTy5JU08tODg1OS0xCm5vcndlZ2lhbiAgICAgICBuYl9OTy5JU08tODg1OS0xCm55bm9yc2sJCW5uX05PLklTTy04ODU5LTEKcG9saXNoICAgICAgICAgIHBsX1BMLklTTy04ODU5LTIKcG9ydHVndWVzZSAgICAgIHB0X1BULklTTy04ODU5LTEKcm9tYW5pYW4gICAgICAgIHJvX1JPLklTTy04ODU5LTIKcnVzc2lhbiAgICAgICAgIHJ1X1JVLklTTy04ODU5LTUKc2xvdmFrICAgICAgICAgIHNrX1NLLklTTy04ODU5LTIKc2xvdmVuZSAgICAgICAgIHNsX1NJLklTTy04ODU5LTIKc2xvdmVuaWFuICAgICAgIHNsX1NJLklTTy04ODU5LTIKc3BhbmlzaCAgICAgICAgIGVzX0VTLklTTy04ODU5LTEKc3dlZGlzaCAgICAgICAgIHN2X1NFLklTTy04ODU5LTEKdGhhaQkJdGhfVEguVElTLTYyMAp0dXJraXNoICAgICAgICAgdHJfVFIuSVNPLTg4NTktOQo=