LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAtQS8tLXVzZXItYWdlbnQgPGFnZW50IHN0cmluZz5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNwZWNpZnkgIHRoZSAgVXNlci1BZ2VudCAgc3RyaW5nIHRvIHNlbmQgdG8gdGhlXG4iCiIgICAgICAgICAgSFRUUCBzZXJ2ZXIuIFNvbWUgYmFkbHkgZG9uZSBDR0lzIGZhaWwgaWYgaXRzICBub3QgIHNldFxuIgoiICAgICAgICAgIHRvIFwiTW96aWxsYS80LjBcIi4gIFRvIGVuY29kZSBibGFua3MgaW4gdGhlIHN0cmluZywgc3VyrVxuIgoiICAgICAgICAgIHJvdW5kIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgIHF1b3RlICBtYXJrcy4gICBUaGlzICBjYW5cbiIKIiAgICAgICAgICBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciBmbGFnIG9mIGNvdXJzZS5cbiIKIiAgICAgLWIvLS1jb29raWUgPG5hbWU9ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgUGFzcyB0aGUgZGF0YSB0byB0aGUgSFRUUCBzZXJ2ZXIgYXMgYSBjb29raWUuIEl0XG4iCiIgICAgICAgICAgaXMgc3VwcG9zZWRseSB0aGUgZGF0YSAgcHJldmlvdXNseSAgcmVjZWl2ZWQgIGZyb20gIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciAgaW4gYSBcIlNldC1Db29raWU6XCIgbGluZS4gIFRoZSBkYXRhIHNob3VsZCBiZSBpblxuIgoiICAgICAgICAgIHRoZSBmb3JtYXQgXCJOQU1FMT1WQUxVRTE7IE5BTUUyPVZBTFVFMlwiLlxuIgoiXG4iCiIgICAgICAgICAgSWYgbm8gJz0nIGxldHRlciBpcyB1c2VkIGluIHRoZSBsaW5lLCBpdCBpcyB0cmVhdGVkICBhc1xuIgoiICAgICAgICAgIGEgIGZpbGVuYW1lICB0byAgdXNlICB0byAgcmVhZCBwcmV2aW91c2x5IHN0b3JlZCBjb29raWVcbiIKIiAgICAgICAgICBsaW5lcyBmcm9tLCB3aGljaCBzaG91bGQgYmUgdXNlZCAgaW4gIHRoaXMgIHNlc3Npb24gIGlmXG4iCiIgICAgICAgICAgdGhleSAgbWF0Y2guICBVc2luZyAgdGhpcyAgbWV0aG9kICBhbHNvICBhY3RpdmF0ZXMgIHRoZVxuIgoiICAgICAgICAgIFwiY29va2llIHBhcnNlclwiIHdoaWNoIHdpbGwgbWFrZSAgY3VybCAgcmVjb3JkICBpbmNvbWluZ1xuIgoiICAgICAgICAgIGNvb2tpZXMgdG9vLCB3aGljaCBtYXkgYmUgaGFuZHkgaWYgeW91J3JlIHVzaW5nIHRoaXMgaW5cbiIKIiAgICAgICAgICBjb21iaW5hdGlvbiB3aXRoIHRoZSAgLUwvLS1sb2NhdGlvbiAgb3B0aW9uLiAgVGhlICBmaWxlXG4iCiIgICAgICAgICAgZm9ybWF0IG9mIHRoZSBmaWxlIHRvIHJlYWQgY29va2llcyBmcm9tIHNob3VsZCBiZSBwbGFpblxuIgoiICAgICAgICAgIEhUVFAgaGVhZGVycyBvciB0aGUgbmV0c2NhcGUgY29va2llIGZpbGUgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgTk9URSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCB3aXRoIC1iLy0tY29va2llICBpcyAgb25seVxuIgoiICAgICAgICAgIHVzZWQgIGFzICBpbnB1dC4gTm8gY29va2llcyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgZmlsZS5cbiIKIiAgICAgICAgICBUbyBzdG9yZSBjb29raWVzLCBzYXZlIHRoZSBIVFRQIGhlYWRlcnMgdG8gYSBmaWxlIHVzaW5nXG4iCiIgICAgICAgICAgLUQvLS1kdW1wLWhlYWRlciFcbiIKIlxuIgoiICAgICAtQi8tLXVzZS1hc2NpaVxuIgoiICAgICAgICAgIFVzZSAgQVNDSUkgIHRyYW5zZmVyICB3aGVuICBnZXR0aW5nIGFuIEZUUCBmaWxlIG9yIExEQVBcbiIKIiAgICAgICAgICBpbmZvLiBGb3IgRlRQLCB0aGlzIGNhbiBhbHNvIGJlIGVuZm9yY2VkICBieSAgdXNpbmcgIGFuXG4iCiIgICAgICAgICAgVVJMICB0aGF0ICBlbmRzIHdpdGggXCI7dHlwZT1BXCIuIFRoaXMgb3B0aW9uIGNhdXNlcyBkYXRhXG4iCiIgICAgICAgICAgc2VudCB0byBzdGRvdXQgdG8gYmUgaW4gdGV4dCBtb2RlIGZvciB3aW4zMiBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgIGEgICBwcmV2aW91cyAgIGZpbGUgICB0cmFuc2Zlci4gICBUaGlzXG4iCiIgICAgICAgICAgaW5zdHJ1Y3RzICBjdXJsICB0byBjb250aW51ZSBhcHBlbmRpbmcgZGF0YSBvbiB0aGUgZmlsZVxuIgoiICAgICAgICAgIHdoZXJlIGl0IHdhcyBwcmV2aW91c2x5IGxlZnQsICBwb3NzaWJseSAgYmVjYXVzZSAgb2YgIGFcbiIKIiAgICAgICAgICBicm9rZW4gIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlci4gVGhlcmUgbXVzdCBiZSBhIG5hbWVkXG4iCiIgICAgICAgICAgcGh5c2ljYWwgZmlsZSB0byBhcHBlbmQgdG8gZm9yICB0aGlzICB0byAgd29yay4gICBOb3RlOlxuIgoiICAgICAgICAgIFVwbG9hZCAgcmVzdW1lICBpcyBkZXBlbmluZyBvbiBhIGNvbW1hbmQgbmFtZWQgU0laRSBub3RcbiIKIiAgICAgICAgICBhbHdheXMgcHJlc2VudCBpbiBhbGwgZnRwIHNlcnZlcnMhIFVwbG9hZCByZXN1bWUgaXMgZm9yXG4iCiIgICAgICAgICAgRlRQICBvbmx5LiAgIEhUVFAgcmVzdW1lIGlzIG9ubHkgcG9zc2libGUgd2l0aCBIVFRQLzEuMVxuIgoiICAgICAgICAgIG9yIGxhdGVyIHNlcnZlcnMuXG4iCiJcbiIKIiAgICAgLUMvLS1jb250aW51ZS1hdCA8b2Zmc2V0PlxuIgoiICAgICAgICAgIENvbnRpbnVlL1Jlc3VtZSBhIHByZXZpb3VzIGZpbGUgdHJhbnNmZXIgYXQgIHRoZSAgZ2l2ZW5cbiIKIiAgICAgICAgICBvZmZzZXQuICBUaGUgIGdpdmVuIG9mZnNldCBpcyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzXG4iCiIgICAgICAgICAgdGhhdCB3aWxsIGJlIHNraXBwZWQgY291bnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgIHRoZVxuIgoiICAgICAgICAgIHNvdXJjZSBmaWxlIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcmVkIHRvIHRoZSBkZXN0aW5hdGlvbi5cbiIKIiAgICAgICAgICBJZiB1c2VkIHdpdGggdXBsb2FkcywgdGhlIGZ0cCBzZXJ2ZXIgY29tbWFuZCBTSVpFICB3aWxsXG4iCiIgICAgICAgICAgbm90ICBiZSAgdXNlZCAgYnkgIGN1cmwuIFVwbG9hZCByZXN1bWUgaXMgZm9yIEZUUCBvbmx5LlxuIgoiICAgICAgICAgIEhUVFAgcmVzdW1lIGlzIG9ubHkgcG9zc2libGUgIHdpdGggIEhUVFAvMS4xICBvciAgbGF0ZXJcbiIKIiAgICAgICAgICBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1kLy0tZGF0YSA8ZGF0YT5cbiIKIiAgICAgICAgICAoSFRUUCkgIFNlbmRzICB0aGUgIHNwZWNpZmllZCBkYXRhIGluIGEgUE9TVCByZXF1ZXN0IHRvXG4iCiIgICAgICAgICAgdGhlIEhUVFAgc2VydmVyLiBOb3RlIHRoYXQgdGhlIGRhdGEgaXMgc2VudCBleGFjdGx5ICBhc1xuIgoiICAgICAgICAgIHNwZWNpZmllZCAgd2l0aCAgbm8gZXh0cmEgcHJvY2Vzc2luZyAod2l0aCBhbGwgbmV3bGluZXNcbiIKIiAgICAgICAgICBjdXQgb2ZmKS4gIFRoZSBkYXRhIGlzIGV4cGVjdGVkICB0byAgYmUgIFwidXJsLWVuY29kZWRcIi5cbiIKIiAgICAgICAgICBUaGlzICB3aWxsICBjYXVzZSAgY3VybCAgdG8gcGFzcyB0aGUgZGF0YSB0byB0aGUgc2VydmVyXG4iCiIgICAgICAgICAgdXNpbmcgIHRoZSAgY29udGVudC10eXBlICBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVurVxuIgoiICAgICAgICAgIGNvZGVkLiBDb21wYXJlIHRvIC1GLlxuIgoiXG4iCiIgICAgICAgICAgSWYgIHlvdSAgc3RhcnQgIHRoZSAgZGF0YSAgd2l0aCAgdGhlIGxldHRlciBALCB0aGUgcmVzdFxuIgoiICAgICAgICAgIHNob3VsZCBiZSBhIGZpbGUgbmFtZSB0byByZWFkIHRoZSBkYXRhIGZyb20sICBvciAgLSAgaWZcbiIKIiAgICAgICAgICB5b3UgIHdhbnQgIGN1cmwgIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSBzdGRpbi4gIFRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgb2YgdGhlIGZpbGUgbXVzdCBhbHJlYWR5IGJlIHVybC1lbmNvZGVkLlxuIgoiXG4iCiIgICAgICAgICAgVG8gcG9zdCBkYXRhIHB1cmVseSBiaW5hcnksIHlvdSBzaG91bGQgaW5zdGVhZCB1c2UgIHRoZVxuIgoiICAgICAgICAgIC0tZGF0YS1iaW5hcnkgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgLWQvLS1kYXRhIGlzIHRoZSBzYW1lIGFzIC0tZGF0YS1hc2NpaS5cbiIKIlxuIgoiICAgICAtLWRhdGEtYXNjaWkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHRoZSAtZC8tLWRhdGEgb3B0aW9uLlxuIgoiXG4iCiIgICAgIC0tZGF0YS1iaW5hcnkgPGRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApICBUaGlzICBwb3N0cyBkYXRhIGluIGEgc2ltaWxhciBtYW5uZXIgYXMgLS1kYXRhLVxuIgoiICAgICAgICAgIGFzY2lpIGRvZXMsIGFsdGhvdWdoIHdoZW4gdXNpbmcgdGhpcyBvcHRpb24gdGhlICBlbnRpcmVcbiIKIiAgICAgICAgICBjb250ZXh0ICBvZiAgdGhlIHBvc3RlZCBkYXRhIGlzIGtlcHQgYXMtaXMuIElmIHlvdSB3YW50XG4iCiIgICAgICAgICAgdG8gcG9zdCBhIGJpbmFyeSBmaWxlIHdpdGhvdXQgdGhlICBzdHJpcC1uZXdsaW5lcyAgZmVhrVxuIgoiICAgICAgICAgIHR1cmUgb2YgdGhlIC0tZGF0YS1hc2NpaSBvcHRpb24sIHRoaXMgaXMgZm9yIHlvdS5cbiIKIlxuIgoiICAgICAtRC8tLWR1bXAtaGVhZGVyIDxmaWxlPlxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgIFdyaXRlICB0aGUgSFRUUCBoZWFkZXJzIHRvIHRoaXMgZmlsZS4gV3JpdGVcbiIKIiAgICAgICAgICB0aGUgRlRQIGZpbGUgaW5mbyB0byB0aGlzIGZpbGUgaWYgLUkvLS1oZWFkIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBoYW5keSB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBzdG9yZSAgdGhlXG4iCiIgICAgICAgICAgY29va2llcyAgdGhhdCAgYSAgSFRUUCAgc2l0ZSAgc2VuZHMgdG8geW91LiBUaGUgY29va2llc1xuIgoiICAgICAgICAgIGNvdWxkIHRoZW4gYmUgcmVhZCBpbiBhIHNlY29uZCBjdXJsIGludm9rZSBieSB1c2luZyB0aGVcbiIKIiAgICAgICAgICAtYi8tLWNvb2tpZSBvcHRpb24hXG4iCiJcbiIKIiAgICAgLWUvLS1yZWZlcmVyIDxVUkw+XG4iCiIgICAgICAgICAgKEhUVFApIFNlbmRzIHRoZSBcIlJlZmVyZXIgUGFnZVwiIGluZm9ybWF0aW9uIHRvIHRoZSBIVFRQXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGlzIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSAtSC8tLWhlYWRlciAgZmxhZ1xuIgoiICAgICAgICAgIG9mIGNvdXJzZS4gIFdoZW4gdXNlZCB3aXRoIC1MLy0tbG9jYXRpb24geW91IGNhbiBhcHBlbmRcbiIKIiAgICAgICAgICBcIjthdXRvXCIgdG8gdGhlIHJlZmVyZXIgVVJMIHRvIG1ha2UgIGN1cmwgIGF1dG9tYXRpY2FsbHlcbiIKIiAgICAgICAgICBzZXQgIHRoZSAgcHJldmlvdXMgIFVSTCAgd2hlbiAgaXQgIGZvbGxvd3MgIGEgTG9jYXRpb246XG4iCiIgICAgICAgICAgaGVhZGVyLiBUaGUgXCI7YXV0b1wiIHN0cmluZyBjYW4gYmUgdXNlZCBhbG9uZSwgIGV2ZW4gIGlmXG4iCiIgICAgICAgICAgeW91IGRvbid0IHNldCBhbiBpbml0aWFsIHJlZmVyZXIuXG4iCiJcbiIKIiAgICAgLUUvLS1jZXJ0IDxjZXJ0aWZpY2F0ZVs6cGFzc3dvcmRdPlxuIgoiICAgICAgICAgIChIVFRQUykgIFRlbGxzICBjdXJsICB0byAgdXNlIHRoZSBzcGVjaWZpZWQgY2VydGlmaWNhdGVcbiIKIiAgICAgICAgICBmaWxlIHdoZW4gZ2V0dGluZyBhIGZpbGUgd2l0aCAgSFRUUFMuICBUaGUgIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgbXVzdCAgYmUgaW4gUEVNIGZvcm1hdC4gIElmIHRoZSBvcHRpb25hbCBwYXNzd29yZCBpc24ndFxuIgoiICAgICAgICAgIHNwZWNpZmllZCwgaXQgd2lsbCBiZSBxdWVyaWVkIGZvciBvbiB0aGUgdGVybWluYWwuIE5vdGVcbiIKIiAgICAgICAgICB0aGF0ICB0aGlzICBjZXJ0aWZpY2F0ZSBpcyB0aGUgcHJpdmF0ZSBrZXkgYW5kIHRoZSBwcmmtXG4iCiIgICAgICAgICAgdmF0ZSBjZXJ0aWZpY2F0ZSBjb25jYXRlbmF0ZWQhXG4iCiJcbiIKIiAgICAgLWYvLS1mYWlsXG4iCiIgICAgICAgICAgKEhUVFApIEZhaWwgc2lsZW50bHkgIChubyAgb3V0cHV0ICBhdCAgYWxsKSAgb24gIHNlcnZlclxuIgoiICAgICAgICAgIGVycm9ycy4gIFRoaXMgaXMgbW9zdGx5IGRvbmUgbGlrZSB0aGlzIHRvIGJldHRlciBlbmFibGVcbiIKIiAgICAgICAgICBzY3JpcHRzIGV0YyB0byBiZXR0ZXIgZGVhbCAgd2l0aCAgZmFpbGVkICBhdHRlbXB0cy4gIEluXG4iCiIgICAgICAgICAgbm9ybWFsIGNhc2VzIHdoZW4gYSBIVFRQIHNlcnZlciBmYWlscyB0byBkZWxpdmVyIGEgZG9jrVxuIgoiICAgICAgICAgIHVtZW50LCBpdCByZXR1cm5zIGEgSFRNTCAgZG9jdW1lbnQgIHN0YXRpbmcgIHNvICAod2hpY2hcbiIKIiAgICAgICAgICBvZnRlbiBhbHNvIGRlc2NyaWJlcyB3aHkgYW5kIG1vcmUpLiBUaGlzIGZsYWcgd2lsbCBwcmWtXG4iCiIgICAgICAgICAgdmVudCAgY3VybCAgZnJvbSAgb3V0cHV0dGluZyAgdGhhdCAgYW5kICBmYWlsICBzaWxlbnRseVxuIgoiICAgICAgICAgIGluc3RlYWQuXG4iCiJcbiIKIiAgICAgLUYvLS1mb3JtIDxuYW1lPWNvbnRlbnQ+XG4iCiIgICAgICAgICAgKEhUVFApIFRoaXMgbGV0cyBjdXJsIGVtdWxhdGUgYSBmaWxsZWQgaW4gZm9ybSBpbiB3aGljaFxuIgoiICAgICAgICAgIGEgdXNlciBoYXMgcHJlc3NlZCB0aGUgc3VibWl0IGJ1dHRvbi4gVGhpcyBjYXVzZXMgIGN1cmxcbiIKIiAgICAgICAgICB0byBQT1NUIGRhdGEgdXNpbmcgdGhlIGNvbnRlbnQtdHlwZSBtdWx0aXBhcnQvZm9ybS1kYXRhXG4iCiIgICAgICAgICAgYWNjb3JkaW5nIHRvIFJGQzE4NjcuIFRoaXMgZW5hYmxlcyB1cGxvYWRpbmcgb2YgIGJpbmFyeVxuIgoiICAgICAgICAgIGZpbGVzIGV0Yy4gVG8gZm9yY2UgdGhlICdjb250ZW50JyBwYXJ0IHRvIGJlIGJlIGEgZmlsZSxcbiIKIiAgICAgICAgICBwcmVmaXggdGhlIGZpbGUgbmFtZSB3aXRoIGFuIEAgc2lnbi4gVG8gIGp1c3QgIGdldCAgdGhlXG4iCiIgICAgICAgICAgY29udGVudCBwYXJ0IGZyb20gYSBmaWxlLCBwcmVmaXggdGhlIGZpbGUgbmFtZSB3aXRoIHRoZVxuIgoiICAgICAgICAgIGxldHRlciA8LiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEAgYW5kIDwgaXMgdGhlbiB0aGF0IEBcbiIKIiAgICAgICAgICBtYWtlcyBhIGZpbGUgZ2V0IGF0dGFjaGVkIGluIHRoZSBwb3N0IGFzIGEgZmlsZSB1cGxvYWQsXG4iCiIgICAgICAgICAgd2hpbGUgdGhlIDwgbWFrZXMgYSB0ZXh0IGZpZWxkIGFuZCBqdXN0ICBnZXQgIHRoZSAgY29urVxuIgoiICAgICAgICAgIHRlbnRzIGZvciB0aGF0IHRleHQgZmllbGQgZnJvbSBhIGZpbGUuXG4iCiJcbiIKIiAgICAgICAgICBFeGFtcGxlLCAgdG8gIHNlbmQgIHlvdXIgIHBhc3N3b3JkICBmaWxlIHRvIHRoZSBzZXJ2ZXIsXG4iCiIgICAgICAgICAgd2hlcmUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiJcbiIKIiAgICAgICAgICBUbyByZWFkIHRoZSBmaWxlJ3MgY29udGVudCBmcm9tIHN0ZGluIGluc3RlZCBvZiBhIGZpbGUsXG4iCiIgICAgICAgICAgdXNlIC0gd2hlcmUgdGhlIGZpbGUgbmFtZSBzaG91bGQndmUgYmVlbi4gVGhpcyBnb2VzIGZvclxuIgoiICAgICAgICAgIGJvdGggQCBhbmQgPCBjb25zdHJ1Y3RzLlxuIgoiXG4iCiIgICAgIC1oLy0taGVscFxuIgoiICAgICAgICAgIFVzYWdlIGhlbHAuXG4iCiJcbiIKIiAgICAgLUgvLS1oZWFkZXIgPGhlYWRlcj5cbiIKIiAgICAgICAgICAoSFRUUCkgRXh0cmEgaGVhZGVyIHRvIHVzZSB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91XG4iCiIgICAgICAgICAgbWF5ICBzcGVjaWZ5ICBhbnkgbnVtYmVyIG9mIGV4dHJhIGhlYWRlcnMuIE5vdGUgdGhhdCBpZlxuIgoiICAgICAgICAgIHlvdSBzaG91bGQgYWRkIGEgY3VzdG9tIGhlYWRlciB0aGF0IGhhcyB0aGUgIHNhbWUgIG5hbWVcbiIKIiAgICAgICAgICBhcyBvbmUgb2YgdGhlIGludGVybmFsIG9uZXMgY3VybCB3b3VsZCB1c2UsIHlvdXIgZXh0ZXKtXG4iCiIgICAgICAgICAgbmFsbHkgc2V0IGhlYWRlciB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiAgdGhlICBpbnRlcm5hbFxuIgoiICAgICAgICAgIG9uZS4gIFRoaXMgIGFsbG93cyB5b3UgdG8gbWFrZSBldmVuIHRyaWNraWVyIHN0dWZmIHRoYW5cbiIKIiAgICAgICAgICBjdXJsIHdvdWxkIG5vcm1hbGx5IGRvLiBZb3Ugc2hvdWxkIG5vdCAgcmVwbGFjZSAgaW50ZXKtXG4iCiIgICAgICAgICAgbmFsbHkgIHNldCAgaGVhZGVycyB3aXRob3V0IGtub3dpbmcgcGVyZmVjdGx5IHdlbGwgd2hhdFxuIgoiICAgICAgICAgIHlvdSdyZSBkb2luZy4gUmVwbGFjaW5nIGFuICBpbnRlcm5hbCAgaGVhZGVyICB3aXRoICBvbmVcbiIKIiAgICAgICAgICB3aXRob3V0ICBjb250ZW50ICBvbiAgdGhlICByaWdodCBzaWRlIG9mIHRoZSBjb2xvbiB3aWxsXG4iCiIgICAgICAgICAgcHJldmVudCB0aGF0IGhlYWRlciBmcm9tIGFwcGVhcmluZy5cbiIKIlxuIgoiICAgICAtaS8tLWluY2x1ZGVcbiIKIiAgICAgICAgICAoSFRUUCkgSW5jbHVkZSB0aGUgSFRUUC1oZWFkZXIgaW4gdGhlIG91dHB1dC4gVGhlIEhUVFAtXG4iCiIgICAgICAgICAgaGVhZGVyICBpbmNsdWRlcyAgdGhpbmdzICBsaWtlIHNlcnZlci1uYW1lLCBkYXRlIG9mIHRoZVxuIgoiICAgICAgICAgIGRvY3VtZW50LCBIVFRQLXZlcnNpb24gYW5kIG1vcmUuLi5cbiIKIiAgICAgLUkvLS1oZWFkXG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSBGZXRjaCAgdGhlICBIVFRQLWhlYWRlciAgb25seSEgIEhUVFAtc2VydmVyc1xuIgoiICAgICAgICAgIGZlYXR1cmUgdGhlIGNvbW1hbmQgSEVBRCB3aGljaCB0aGlzIHVzZXMgdG8gZ2V0IG5vdGhpbmdcbiIKIiAgICAgICAgICBidXQgdGhlIGhlYWRlciBvZiBhIGRvY3VtZW50LiBXaGVuIHVzZWQgb24gYSBGVFAgIGZpbGUsXG4iCiIgICAgICAgICAgY3VybCBkaXNwbGF5cyB0aGUgZmlsZSBzaXplIG9ubHkuXG4iCiJcbiIKIiAgICAgLUsvLS1jb25maWcgPGNvbmZpZyBmaWxlPlxuIgoiICAgICAgICAgIFNwZWNpZnkgIHdoaWNoIGNvbmZpZyBmaWxlIHRvIHJlYWQgY3VybCBhcmd1bWVudHMgZnJvbS5cbiIKIiAgICAgICAgICBUaGUgY29uZmlnIGZpbGUgaXMgYSB0ZXh0IGZpbGUgaW4gIHdoaWNoICBjb21tYW5kICBsaW5lXG4iCiIgICAgICAgICAgYXJndW1lbnRzICBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyBpZlxuIgoiICAgICAgICAgIHRoZXkgd2VyZSB3cml0dGVuIG9uIHRoZSBhY3R1YWwgY29tbWFuZCAgbGluZS4gIElmICB0aGVcbiIKIiAgICAgICAgICBmaXJzdCAgY29sdW1uICBvZiBhIGNvbmZpZyBsaW5lIGlzIGEgJyMnIGNoYXJhY3RlciwgdGhlXG4iCik7CiBwdXRzKAoiICAgICAgICAgIHJlc3Qgb2YgdGhlIGxpbmUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgY29tbWVudC5cbiIKIlxuIgoiICAgICAgICAgIFNwZWNpZnkgdGhlIGZpbGVuYW1lIGFzICctJyB0byBtYWtlIGN1cmwgcmVhZCB0aGUgIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiXG4iCiIgICAgIC1sLy0tbGlzdC1vbmx5XG4iCiIgICAgICAgICAgKEZUUCkgV2hlbiBsaXN0aW5nIGFuIEZUUCBkaXJlY3RvcnksIHRoaXMgc3dpdGNoIGZvcmNlc1xuIgoiICAgICAgICAgIGEgbmFtZS1vbmx5IHZpZXcuICBFc3BlY2lhbGx5IHVzZWZ1bCAgaWYgIHlvdSAgd2FudCAgdG9cbiIKIiAgICAgICAgICBtYWNoaW5lLXBhcnNlICB0aGUgIGNvbnRlbnRzICBvZiBhbiBGVFAgZGlyZWN0b3J5IHNpbmNlXG4iCiIgICAgICAgICAgdGhlIG5vcm1hbCBkaXJlY3RvcnkgdmlldyBkb2Vzbid0IHVzZSBhICBzdGFuZGFyZCAgbG9va1xuIgoiICAgICAgICAgIG9yIGZvcm1hdC5cbiIKIlxuIgoiICAgICAtTC8tLWxvY2F0aW9uXG4iCiIgICAgICAgICAgKEhUVFAvSFRUUFMpICBJZiAgdGhlIHNlcnZlciByZXBvcnRzIHRoYXQgdGhlIHJlcXVlc3RlZFxuIgoiICAgICAgICAgIHBhZ2UgaGFzICBhICBkaWZmZXJlbnQgIGxvY2F0aW9uICAoaW5kaWNhdGVkICB3aXRoICB0aGVcbiIKIiAgICAgICAgICBoZWFkZXIgIGxpbmUgTG9jYXRpb246KSB0aGlzIGZsYWcgd2lsbCBsZXQgY3VybCBhdHRlbXB0XG4iCiIgICAgICAgICAgdG8gcmVhdHRlbXB0IHRoZSBnZXQgb24gdGhlIG5ldyBwbGFjZS4gSWYgdXNlZCB0b2dldGhlclxuIgoiICAgICAgICAgIHdpdGggLWkgb3IgLUksIGhlYWRlcnMgZnJvbSBhbGwgcmVxdWVzdGVkIHBhZ2VzIHdpbGwgYmVcbiIKIiAgICAgICAgICBzaG93bi4gSWYgdGhpcyBmbGFnIGlzIHVzZWQgd2hlbiBtYWtpbmcgIGEgIEhUVFAgIFBPU1QsXG4iCiIgICAgICAgICAgY3VybCB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIEdFVCBhZnRlciB0aGUgaW5pdGlhbFxuIgoiICAgICAgICAgIFBPU1QgaGFzIGJlZW4gZG9uZS5cbiIKIlxuIgoiICAgICAtbS8tLW1heC10aW1lIDxzZWNvbmRzPlxuIgoiICAgICAgICAgIE1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91IGFsbG93IHRoZSB3aG9sZSBvcGVyYa1cbiIKIiAgICAgICAgICB0aW9uIHRvIHRha2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB5b3VyIGJhdGNoXG4iCiIgICAgICAgICAgam9icyBmcm9tIGhhbmdpbmcgZm9yIGhvdXJzIGR1ZSAgdG8gIHNsb3cgIG5ldHdvcmtzICBvclxuIgoiICAgICAgICAgIGxpbmtzICBnb2luZyAgZG93bi4gICBUaGlzICBkb2Vzbid0IHdvcmsgZnVsbHkgaW4gd2luMzJcbiIKIiAgICAgICAgICBzeXN0ZW1zLlxuIgoiXG4iCiIgICAgIC1NLy0tbWFudWFsXG4iCiIgICAgICAgICAgTWFudWFsLiBEaXNwbGF5IHRoZSBodWdlIGhlbHAgdGV4dC5cbiIKIlxuIgoiICAgICAtbi8tLW5ldHJjXG4iCiIgICAgICAgICAgTWFrZXMgY3VybCBzY2FuIHRoZSAubmV0cmMgIGZpbGUgIGluICB0aGUgIHVzZXIncyAgaG9tZVxuIgoiICAgICAgICAgIGRpcmVjdG9yeSAgZm9yICBsb2dpbiAgbmFtZSBhbmQgcGFzc3dvcmQuIFRoaXMgaXMgdHlwaa1cbiIKIiAgICAgICAgICBjYWxseSB1c2VkIGZvciBmdHAgb24gdW5peC4gSWYgIHVzZWQgIHdpdGggIGh0dHAsICBjdXJsXG4iCiIgICAgICAgICAgd2lsbCAgZW5hYmxlICB1c2VyICBhdXRoZW50aWNhdGlvbi4gIFNlZSAgbmV0cmMoNCkgIGZvclxuIgoiICAgICAgICAgIGRldGFpbHMgb24gdGhlIGZpbGUgZm9ybWF0LiBDdXJsIHdpbGwgbm90ICBjb21wbGFpbiAgaWZcbiIKIiAgICAgICAgICB0aGF0ICBmaWxlICBoYXNuJ3QgdGhlIHJpZ2h0IHBlcm1pc3Npb25zIChpdCBzaG91bGQgbm90XG4iCiIgICAgICAgICAgYmUgd29ybGQgbm9yIGdyb3VwIHJlYWRhYmxlKS4gVGhlIGVudmlyb25tZW50ICB2YXJpYWJsZVxuIgoiICAgICAgICAgIFwiSE9NRVwiIGlzIHVzZWQgdG8gZmluZCB0aGUgaG9tZSBkaXJlY3RvcnkuXG4iCiJcbiIKIiAgICAgICAgICBBICBxdWljayAgYW5kICB2ZXJ5ICBzaW1wbGUgIGV4YW1wbGUgIG9mIGhvdyB0byBzZXR1cCBhXG4iCiIgICAgICAgICAgLm5ldHJjICB0byAgYWxsb3cgIGN1cmwgICB0byAgIGZ0cCAgIHRvICAgdGhlICAgbWFjaGluZVxuIgoiICAgICAgICAgIGhvc3QuZG9tYWluLmNvbSB3aXRoIHVzZXIgbmFtZVxuIgoiXG4iCiIgICAgICAgICAgbWFjaGluZSBob3N0LmRvbWFpbi5jb20gbG9naW4gbXlzZWxmIHBhc3N3b3JkIHNlY3JldFxuIgoiXG4iCiIgICAgIC1OLy0tbm8tYnVmZmVyXG4iCiIgICAgICAgICAgRGlzYWJsZXMgIHRoZSBidWZmZXJpbmcgb2YgdGhlIG91dHB1dCBzdHJlYW0uIEluIG5vcm1hbFxuIgoiICAgICAgICAgIHdvcmsgc2l0dWF0aW9ucywgY3VybCB3aWxsIHVzZSBhIHN0YW5kYXJkIGJ1ZmZlcmVkIG91dK1cbiIKIiAgICAgICAgICBwdXQgIHN0cmVhbSB0aGF0IHdpbGwgaGF2ZSB0aGUgZWZmZWN0IHRoYXQgaXQgd2lsbCBvdXStXG4iCiIgICAgICAgICAgcHV0IHRoZSBkYXRhIGluIGNodW5rcywgbm90ICBuZWNlc3NhcmlseSAgZXhhY3RseSAgd2hlblxuIgoiICAgICAgICAgIHRoZSAgZGF0YSBhcnJpdmVzLiAgVXNpbmcgdGhpcyBvcHRpb24gd2lsbCBkaXNhYmxlIHRoYXRcbiIKIiAgICAgICAgICBidWZmZXJpbmcuXG4iCiJcbiIKIiAgICAgLW8vLS1vdXRwdXQgPGZpbGU+XG4iCiIgICAgICAgICAgV3JpdGUgb3V0cHV0IHRvIDxmaWxlPiBpbnN0ZWFkIG9mIHN0ZG91dC4gIElmICB5b3UgIGFyZVxuIgoiICAgICAgICAgIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoIG11bHRpcGxlIGRvY3VtZW50cywgeW91IGNhbiB1c2VcbiIKIiAgICAgICAgICAnIycgZm9sbG93ZWQgYnkgYSBudW1iZXIgaW4gdGhlIDxmaWxlPiBzcGVjaWZpZXIuICBUaGF0XG4iCiIgICAgICAgICAgdmFyaWFibGUgIHdpbGwgIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgc3RyaW5nIGZvclxuIgoiICAgICAgICAgIHRoZSBVUkwgYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiJcbiIKIiAgICAgLU8vLS1yZW1vdGUtbmFtZVxuIgoiICAgICAgICAgIFdyaXRlIG91dHB1dCB0byBhIGxvY2FsIGZpbGUgbmFtZWQgbGlrZSB0aGUgcmVtb3RlIGZpbGVcbiIKIiAgICAgICAgICB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlIHBhcnQgb2YgdGhlIHJlbW90ZSBmaWxlIGlzIHVzZWQsXG4iCiIgICAgICAgICAgdGhlIHBhdGggaXMgY3V0IG9mZi4pXG4iCiJcbiIKIiAgICAgLVAvLS1mdHBwb3J0IDxhZGRyZXNzPlxuIgoiICAgICAgICAgIChGVFApIFJldmVyc2VzIHRoZSBpbml0aWF0b3IvbGlzdGVuZXIgcm9sZXMgIHdoZW4gIGNvbq1cbiIKIiAgICAgICAgICBuZWN0aW5nICB3aXRoICBmdHAuIFRoaXMgc3dpdGNoIG1ha2VzIEN1cmwgdXNlIHRoZSBQT1JUXG4iCiIgICAgICAgICAgY29tbWFuZCBpbnN0ZWFkIG9mIFBBU1YuIEluIHByYWN0aWNlLCAgUE9SVCAgdGVsbHMgIHRoZVxuIgoiICAgICAgICAgIHNlcnZlciB0byBjb25uZWN0IHRvIHRoZSBjbGllbnQncyBzcGVjaWZpZWQgYWRkcmVzcyBhbmRcbiIKIiAgICAgICAgICBwb3J0LCB3aGlsZSBQQVNWIGFza3MgdGhlIHNlcnZlciBmb3IgYW4gaXAgYWRkcmVzcyAgYW5kXG4iCiIgICAgICAgICAgcG9ydCB0byBjb25uZWN0IHRvLiA8YWRkcmVzcz4gc2hvdWxkIGJlIG9uZSBvZjpcbiIKIlxuIgoiICAgICAgICAgIGludGVyZmFjZSAgIGkuZSAgXCJldGgwXCIgdG8gc3BlY2lmeSB3aGljaCBpbnRlcmZhY2UncyBJUFxuIgoiICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgeW91IHdhbnQgdG8gdXNlICAoVW5peCBvbmx5KVxuIgoiXG4iCiIgICAgICAgICAgSVAgYWRkcmVzcyAgaS5lIFwiMTkyLjE2OC4xMC4xXCIgdG8gc3BlY2lmeSBleGFjdCBJUCBudW2tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgYmVyXG4iCiJcbiIKIiAgICAgICAgICBob3N0IG5hbWUgICBpLmUgXCJteS5ob3N0LmRvbWFpblwiIHRvIHNwZWNpZnkgbWFjaGluZVxuIgoiXG4iCiIgICAgICAgICAgLSAgICAgICAgICAgKGFueSAgc2luZ2xlLWxldHRlciBzdHJpbmcpIHRvIG1ha2UgaXQgcGlja1xuIgoiICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgZGVmYXVsdFxuIgoiICAgICAtcSAgIElmIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGVcbiIKIiAgICAgICAgICAkSE9NRS8uY3VybHJjICBmaWxlIHdpbGwgbm90IGJlIHJlYWQgYW5kIHVzZWQgYXMgYSBjb26tXG4iCiIgICAgICAgICAgZmlnIGZpbGUuXG4iCiJcbiIKIiAgICAgLVEvLS1xdW90ZSA8Y29tYW5kPlxuIgoiICAgICAgICAgIChGVFApIFNlbmQgYW4gIGFyYml0cmFyeSAgY29tbWFuZCAgdG8gIHRoZSAgcmVtb3RlICBGVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIsICBieSAgdXNpbmcgdGhlIFFVT1RFIGNvbW1hbmQgb2YgdGhlIHNlcnZlci4gTm90XG4iCiIgICAgICAgICAgYWxsIHNlcnZlcnMgc3VwcG9ydCB0aGlzIGNvbW1hbmQsIGFuZCB0aGUgc2V0IG9mICBRVU9URVxuIgoiICAgICAgICAgIGNvbW1hbmRzICBhcmUgIHNlcnZlciBzcGVjaWZpYyEgUXVvdGUgY29tbWFuZHMgYXJlIHNlbnRcbiIKIiAgICAgICAgICBCRUZPUkUgdGhlIHRyYW5zZmVyIGlzIHRha2luZyBwbGFjZS4gVG8gIG1ha2UgIGNvbW1hbmRzXG4iCiIgICAgICAgICAgdGFrZSAgcGxhY2UgIGFmdGVyICBhICBzdWNjZXNzZnVsIHRyYW5zZmVyLCBwcmVmaXggdGhlbVxuIgoiICAgICAgICAgIHdpdGggYSBkYXNoICctJy4gWW91IG1heSBzcGVjaWZ5IGFueSBhbW91bnQgb2YgY29tbWFuZHNcbiIKIiAgICAgICAgICB0byAgYmUgcnVuIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRyYW5zZmVyLiBJZiB0aGUgc2VydmVyXG4iCiIgICAgICAgICAgcmV0dXJucyBmYWlsdXJlIGZvciBvbmUgb2YgIHRoZSAgY29tbWFuZHMsICB0aGUgIGVudGlyZVxuIgoiICAgICAgICAgIG9wZXJhdGlvbiB3aWxsIGJlIGFib3J0ZWQuXG4iCiJcbiIKIiAgICAgLXIvLS1yYW5nZSA8cmFuZ2U+XG4iCiIgICAgICAgICAgKEhUVFAvRlRQKSAgUmV0cmlldmUgIGEgYnl0ZSByYW5nZSAoaS5lIGEgcGFydGlhbCBkb2N1rVxuIgoiICAgICAgICAgIG1lbnQpIGZyb20gYSBIVFRQLzEuMSBvciAgRlRQICBzZXJ2ZXIuICBSYW5nZXMgIGNhbiAgYmVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy5cbiIKIlxuIgoiICAgICAgICAgIDAtNDk5ICAgICBzcGVjaWZpZXMgdGhlIGZpcnN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgNTAwLTk5OSAgIHNwZWNpZmllcyB0aGUgc2Vjb25kIDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgLTUwMCAgICAgIHNwZWNpZmllcyB0aGUgbGFzdCA1MDAgYnl0ZXNcbiIKIlxuIgoiICAgICAgICAgIDk1MDAgICAgICBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcq1cbiIKIiAgICAgICAgICAgICAgICAgICAgd2FyZFxuIgoiXG4iCiIgICAgICAgICAgMC0wLC0xICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgYW5kIGxhc3QgYnl0ZSBvbmx5KCopKEgpXG4iCiJcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgID0gIE5PVEUgdGhhdCB0aGlzIHdpbGwgY2F1c2UgdGhlIHNlcnZlciB0byByZXBseSB3aXRoIGFcbiIKIiAgICAgbXVsdGlwYXJ0IHJlc3BvbnNlIVxuIgoiXG4iCiIgICAgIFlvdSBzaG91bGQgYWxzbyBiZSBhd2FyZSB0aGF0IG1hbnkgSFRUUC8xLjEgc2VydmVycyAgZG8gIG5vdFxuIgoiICAgICBoYXZlIHRoaXMgZmVhdHVyZSBlbmFibGVkLCBzbyB0aGF0IHdoZW4geW91IGF0dGVtcHQgdG8gZ2V0IGFcbiIKIiAgICAgcmFuZ2UsIHlvdSdsbCBpbnN0ZWFkIGdldCB0aGUgd2hvbGUgZG9jdW1lbnQuXG4iCiJcbiIKIiAgICAgRlRQIHJhbmdlIGRvd25sb2FkcyBvbmx5IHN1cHBvcnQgdGhlIHNpbXBsZSAgc3ludGF4ICAnc3RhcnQtXG4iCiIgICAgIHN0b3AnICAob3B0aW9uYWxseSAgd2l0aCAgb25lICBvZiAgdGhlICBudW1iZXJzIG9taXR0ZWQpLiBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICAtcy8tLXNpbGVudFxuIgoiICAgICAgICAgIFNpbGVudCBtb2RlLiBEb24ndCBzaG93IHByb2dyZXNzIG1ldGVyICBvciAgZXJyb3IgIG1lc61cbiIKIiAgICAgICAgICBzYWdlcy4gIE1ha2VzIEN1cmwgbXV0ZS5cbiIKIiAgICAgLVMvLS1zaG93LWVycm9yXG4iCiIgICAgICAgICAgV2hlbiAgdXNlZCAgd2l0aCAtcyBpdCBtYWtlcyBjdXJsIHNob3cgZXJyb3IgbWVzc2FnZSBpZlxuIgoiICAgICAgICAgIGl0IGZhaWxzLlxuIgoiXG4iCiIgICAgIC10Ly0tdXBsb2FkXG4iCiIgICAgICAgICAgVHJhbnNmZXIgdGhlIHN0ZGluIGRhdGEgdG8gIHRoZSAgc3BlY2lmaWVkICBmaWxlLiAgQ3VybFxuIgoiICAgICAgICAgIHdpbGwgIHJlYWQgIGV2ZXJ5dGhpbmcgIGZyb20gIHN0ZGluIHVudGlsIEVPRiBhbmQgc3RvcmVcbiIKIiAgICAgICAgICB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLiBJZiB0aGlzIGlzIHVzZWQgIG9uICBhICBodHRwKHMpXG4iCiIgICAgICAgICAgc2VydmVyLCB0aGUgUFVUIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1ULy0tdXBsb2FkLWZpbGUgPGZpbGU+XG4iCiIgICAgICAgICAgTGlrZSAgLXQsICBidXQgdGhpcyB0cmFuc2ZlcnMgdGhlIHNwZWNpZmllZCBsb2NhbCBmaWxlLlxuIgoiICAgICAgICAgIElmIHRoZXJlIGlzIG5vIGZpbGUgcGFydCBpbiAgdGhlICBzcGVjaWZpZWQgIFVSTCwgIEN1cmxcbiIKIiAgICAgICAgICB3aWxsIGFwcGVuZCB0aGUgbG9jYWwgZmlsZSBuYW1lLiBOT1RFIHRoYXQgeW91IG11c3QgdXNlXG4iCiIgICAgICAgICAgYSB0cmFpbGluZyAvIG9uIHRoZSBsYXN0IGRpcmVjdG9yeSB0byByZWFsbHkgIHByb3ZlICB0b1xuIgoiICAgICAgICAgIEN1cmwgdGhhdCB0aGVyZSBpcyBubyBmaWxlIG5hbWUgb3IgY3VybCB3aWxsIHRoaW5rIHRoYXRcbiIKIiAgICAgICAgICB5b3VyIGxhc3QgZGlyZWN0b3J5IG5hbWUgaXMgdGhlICByZW1vdGUgIGZpbGUgIG5hbWUgIHRvXG4iCiIgICAgICAgICAgdXNlLiAgVGhhdCAgd2lsbCBtb3N0IGxpa2VseSBjYXVzZSB0aGUgdXBsb2FkIG9wZXJhdGlvblxuIgoiICAgICAgICAgIHRvIGZhaWwuIElmIHRoaXMgaXMgdXNlZCBvbiBhIGh0dHAocykgc2VydmVyLCAgdGhlICBQVVRcbiIKIiAgICAgICAgICBjb21tYW5kIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtdS8tLXVzZXIgPHVzZXI6cGFzc3dvcmQ+XG4iCiIgICAgICAgICAgU3BlY2lmeSAgdXNlciAgYW5kICBwYXNzd29yZCAgdG8gdXNlIHdoZW4gZmV0Y2hpbmcuIFNlZVxuIgoiICAgICAgICAgIFJFQURNRS5jdXJsIGZvciBkZXRhaWxlZCBleGFtcGxlcyBvZiBob3cgdG8gIHVzZSAgdGhpcy5cbiIKIiAgICAgICAgICBJZiAgbm8gIHBhc3N3b3JkICBpcyAgc3BlY2lmaWVkLCAgY3VybCAgd2lsbCBhc2sgZm9yIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAtVS8tLXByb3h5LXVzZXIgPHVzZXI6cGFzc3dvcmQ+XG4iCiIgICAgICAgICAgU3BlY2lmeSB1c2VyIGFuZCBwYXNzd29yZCB0byB1c2UgZm9yIFByb3h5ICBhdXRoZW50aWNhrVxuIgoiICAgICAgICAgIHRpb24uIElmIG5vIHBhc3N3b3JkIGlzIHNwZWNpZmllZCwgY3VybCB3aWxsIGFzayBmb3IgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzICB0aGUgIGZldGNoaW5nICBtb3JlICB2ZXJib3NlL3RhbGthdGl2ZS4gICBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgIGZvciAgZGVidWdnaW5nLiAgTGluZXMgIHN0YXJ0aW5nIHdpdGggJz4nIG1lYW5zXG4iCiIgICAgICAgICAgZGF0YSBzZW50IGJ5IGN1cmwsICc8JyBtZWFucyBkYXRhIHJlY2VpdmVkIGJ5IGN1cmwgdGhhdFxuIgoiICAgICAgICAgIGlzICBoaWRkZW4gIGluIG5vcm1hbCBjYXNlcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyB0aGUgZnVsbCB2ZXJzaW9uIG9mIGN1cmwsICBsaWJjdXJsICBhbmQgIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgIHdoYXQgdG8gZGlzcGxheSBhZnRlciBhIGNvbXBsZXRlZCBhbmQgc3VjY2Vzc61cbiIKIiAgICAgICAgICBmdWwgb3BlcmF0aW9uLiBUaGUgZm9ybWF0IGlzIGEgc3RyaW5nIHRoYXQgbWF5ICBjb250YWluXG4iCiIgICAgICAgICAgcGxhaW4gIHRleHQgIG1peGVkICB3aXRoICBhbnkgIG51bWJlciBvZiB2YXJpYWJsZXMuIFRoZVxuIgoiICAgICAgICAgIHN0cmluZyBjYW4gYmUgc3BlY2lmaWVkIGFzIFwic3RyaW5nXCIsIHRvIGdldCByZWFkIGZyb20gYVxuIgoiICAgICAgICAgIHBhcnRpY3VsYXIgIGZpbGUgeW91IHNwZWNpZnkgaXQgXCJAZmlsZW5hbWVcIiBhbmQgdG8gdGVsbFxuIgoiICAgICAgICAgIGN1cmwgdG8gcmVhZCB0aGUgZm9ybWF0IGZyb20gc3RkaW4geW91IHdyaXRlIFwiQC1cIi5cbiIKIlxuIgoiICAgICAgICAgIFRoZSB2YXJpYWJsZXMgcHJlc2VudCBpbiAgdGhlICBvdXRwdXQgIGZvcm1hdCAgd2lsbCAgYmVcbiIKIiAgICAgICAgICBzdWJzdGl0dXRlZCAgYnkgdGhlIHZhbHVlIG9yIHRleHQgdGhhdCBjdXJsIHRoaW5rcyBmaXQsXG4iCiIgICAgICAgICAgYXMgZGVzY3JpYmVkIGJlbG93LiBBbGwgdmFyaWFibGVzICBhcmUgIHNwZWNpZmllZCAgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gIGFuZCAgdG8gIG91dHB1dCAgYSAgbm9ybWFsICUgeW91IGp1c3RcbiIKIiAgICAgICAgICB3cml0ZSB0aGVtIGxpa2UgJSUuIFlvdSBjYW4gb3V0cHV0IGEgbmV3bGluZSAgYnkgIHVzaW5nXG4iCiIgICAgICAgICAgXFxuLCBhIGNhcnJpZ2UgcmV0dXJuIHdpdGggXFxyIGFuZCBhIHRhYiBzcGFjZSB3aXRoIFxcdC5cbiIKIlxuIgoiICAgICAgICAgIE5PVEU6ICAgVGhlICAgJS1sZXR0ZXIgIGlzICBhICBzcGVjaWFsICBsZXR0ZXIgIGluICB0aGVcbiIKIiAgICAgICAgICB3aW4zMi1lbnZpcm9ubWVudCwgd2hlcmUgYWxsIG9jY3VycmVuY2VzIG9mICUgIG11c3QgIGJlXG4iCiIgICAgICAgICAgZG91YmxlZCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgQXZhaWxhYmxlIHZhcmlhYmxlcyBhcmUgYXQgdGhpcyBwb2ludDpcbiIKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSAgVVJMICB0aGF0IHdhcyBmZXRjaGVkIGxhc3QuIFRoaXMgaXNcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtb3N0bHkgbWVhbmluZ2Z1bCBpZiB5b3UndmUgdG9sZCBjdXJsIHRvXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93IGxvY2F0aW9uOiBoZWFkZXJzLlxuIgoiXG4iCiIgICAgICAgICAgaHR0cF9jb2RlICAgICAgVGhlIG51bWVyaWNhbCBjb2RlIHRoYXQgd2FzIGZvdW5kIGluIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgcmV0cmlldmVkIEhUVFAoUykgcGFnZS5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfdG90YWwgICAgIFRoZSB0b3RhbCB0aW1lLCAgaW4gIHNlY29uZHMsICB0aGF0ICB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsICBvcGVyYXRpb24gbGFzdGVkLiBUaGUgdGltZSB3aWxsIGJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkIHdpdGggbWlsbGlzZWNvbmQgcmVzb2x1dGlvbi5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfbmFtZWxvb2t1cFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0aW1lLCBpbiBzZWNvbmRzLCBpdCB0b29rICBmcm9tICB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCAgdW50aWwgdGhlIG5hbWUgcmVzb2x2aW5nIHdhcyBjb22tXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgcGxldGVkLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9jb25uZWN0ICAgVGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgIGZyb20gIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICB1bnRpbCAgdGhlICBjb25uZWN0IHRvIHRoZSByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfcHJldHJhbnNmZXJcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayAgZnJvbSAgdGhlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgIHVudGlsICB0aGUgIGZpbGUgdHJhbnNmZXIgaXMganVzdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IHRvIGJlZ2luLiBUaGlzIGluY2x1ZGVzICBhbGwgIHByZS1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciAgY29tbWFuZHMgYW5kIG5lZ290aWF0aW9ucyB0aGF0XG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIHNwZWNpZmljIHRvICB0aGUgIHBhcnRpY3VsYXIgIHByb3RvrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGNvbChzKSBpbnZvbHZlZC5cbiIKKTsKIHB1dHMoCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgIHRvdGFsICBhbW91bnQgIG9mICBieXRlcyAgdGhhdCB3ZXJlXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfdXBsb2FkICAgIFRoZSB0b3RhbCAgYW1vdW50ICBvZiAgYnl0ZXMgIHRoYXQgIHdlcmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWRlZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX2Rvd25sb2FkIFRoZSAgYXZlcmFnZSAgZG93bmxvYWQgIHNwZWVkICB0aGF0IGN1cmxcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlZCBmb3IgdGhlIGNvbXBsZXRlIGRvd25sb2FkLlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfdXBsb2FkICAgVGhlIGF2ZXJhZ2UgdXBsb2FkIHNwZWVkIHRoYXQgY3VybCAgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgZG93bmxvYWQuXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlICBzcGVjaWZpZWQgIHByb3h5LiBJZiB0aGUgcG9ydCBudW1iZXIgaXMgbm90IHNwZWNprVxuIgoiICAgICAgICAgIGZpZWQsIGl0IGlzIGFzc3VtZWQgYXQgcG9ydCAxMDgwLlxuIgoiXG4iCiIgICAgIC1YLy0tcmVxdWVzdCA8Y29tbWFuZD5cbiIKIiAgICAgICAgICAoSFRUUCkgU3BlY2lmaWVzIGEgY3VzdG9tIHJlcXVlc3QgdG8gdXNlIHdoZW4gIGNvbW11bmmtXG4iCiIgICAgICAgICAgY2F0aW5nICB3aXRoICB0aGUgIEhUVFAgIHNlcnZlci4gIFRoZSBzcGVjaWZpZWQgcmVxdWVzdFxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBHRVQuIFJlYWQgdGhlIEhUVFBcbiIKIiAgICAgICAgICAxLjEgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBhbmQgZXhwbGFuYXRpb25zLlxuIgoiXG4iCiIgICAgICAgICAgKEZUUCkgIFNwZWNpZmllcyBhIGN1c3RvbSBGVFAgY29tbWFuZCB0byB1c2UgaW5zdGVhZCBvZlxuIgoiICAgICAgICAgIExJU1Qgd2hlbiBkb2luZyBmaWxlIGxpc3RzIHdpdGggZnRwLlxuIgoiXG4iCiIgICAgIC15Ly0tc3BlZWQtdGltZSA8dGltZT5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHNwZWVkLWxpbWl0IGJ5dGVzIHBlciBzZWOtXG4iCiIgICAgICAgICAgb25kICBkdXJpbmcgIGEgIHNwZWVkLXRpbWUgIHBlcmlvZCwgIHRoZSAgZG93bmxvYWQgZ2V0c1xuIgoiICAgICAgICAgIGFib3J0ZWQuIElmIHNwZWVkLXRpbWUgaXMgdXNlZCwgdGhlIGRlZmF1bHQgc3BlZWQtbGltaXRcbiIKIiAgICAgICAgICB3aWxsIGJlIDEgdW5sZXNzIHNldCB3aXRoIC15LlxuIgoiXG4iCiIgICAgIC1ZLy0tc3BlZWQtbGltaXQgPHNwZWVkPlxuIgoiICAgICAgICAgIElmIGEgZG93bmxvYWQgaXMgc2xvd2VyIHRoYW4gdGhpcyBnaXZlbiBzcGVlZCwgaW4gYnl0ZXNcbiIKIiAgICAgICAgICBwZXIgc2Vjb25kLCBmb3Igc3BlZWQtdGltZSAgc2Vjb25kcyAgaXQgIGdldHMgIGFib3J0ZWQuXG4iCiIgICAgICAgICAgc3BlZWQtdGltZSBpcyBzZXQgd2l0aCAtWSBhbmQgaXMgMzAgaWYgbm90IHNldC5cbiIKIlxuIgoiICAgICAtei8tLXRpbWUtY29uZCA8ZGF0ZSBleHByZXNzaW9uPlxuIgoiICAgICAgICAgIChIVFRQKSAgUmVxdWVzdCAgdG8gIGdldCAgYSBmaWxlIHRoYXQgaGFzIGJlZW4gbW9kaWZpZWRcbiIKIiAgICAgICAgICBsYXRlciB0aGFuIHRoZSBnaXZlbiB0aW1lIGFuZCBkYXRlLCAgb3IgIG9uZSAgdGhhdCAgaGFzXG4iCiIgICAgICAgICAgYmVlbiBtb2RpZmllZCBiZWZvcmUgdGhhdCB0aW1lLiBUaGUgZGF0ZSBleHByZXNzaW9uIGNhblxuIgoiICAgICAgICAgIGJlIGFsbCBzb3J0cyBvZiBkYXRlIHN0cmluZ3Mgb3IgaWYgaXQgZG9lc24ndCBtYXRjaCBhbnlcbiIKIiAgICAgICAgICBpbnRlcm5hbCAgb25lcywgIGl0ICB0cmllcyB0byBnZXQgdGhlIHRpbWUgZnJvbSBhIGdpdmVuXG4iCiIgICAgICAgICAgZmlsZSBuYW1lIGluc3RlYWQhIFNlZSB0aGUgIEdOVSAgZGF0ZSgxKSAgb3IgIGN1cmxfZ2V0rVxuIgoiICAgICAgICAgIGRhdGUoMykgbWFuIHBhZ2VzIGZvciBkYXRlIGV4cHJlc3Npb24gZGV0YWlscy5cbiIKIlxuIgoiICAgICAgICAgIFN0YXJ0ICB0aGUgIGRhdGUgIGV4cHJlc3Npb24gd2l0aCBhIGRhc2ggKC0pIHRvIG1ha2UgaXRcbiIKIiAgICAgICAgICByZXF1ZXN0IGZvciBhIGRvY3VtZW50IHRoYXQgaXMgIG9sZGVyICB0aGFuICB0aGUgIGdpdmVuXG4iCiIgICAgICAgICAgZGF0ZS90aW1lLCBkZWZhdWx0IGlzIGEgZG9jdW1lbnQgdGhhdCBpcyBuZXdlciB0aGFuIHRoZVxuIgoiICAgICAgICAgIHNwZWNpZmllZCBkYXRlL3RpbWUuXG4iCiJcbiIKIiAgICAgLTMvLS1zc2x2M1xuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDMgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0yLy0tc3NsdjJcbiIKIiAgICAgICAgICAoSFRUUFMpIEZvcmNlcyBjdXJsIHRvIHVzZSBTU0wgdmVyc2lvbiAyIHdoZW4gbmVnb3RpYXStXG4iCiIgICAgICAgICAgaW5nIHdpdGggYSByZW1vdGUgU1NMIHNlcnZlci5cbiIKIlxuIgoiICAgICAtIy8tLXByb2dyZXNzLWJhclxuIgoiICAgICAgICAgIE1ha2UgY3VybCBkaXNwbGF5IHByb2dyZXNzIGluZm9ybWF0aW9uICBhcyAgYSAgcHJvZ3Jlc3NcbiIKIiAgICAgICAgICBiYXIgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBzdGF0aXN0aWNzLlxuIgoiXG4iCiIgICAgIC0tY3JsZlxuIgoiICAgICAgICAgIChGVFApICBDb252ZXJ0ICBMRiAgdG8gIENSTEYgIGluIHVwbG9hZC4gVXNlZnVsIGZvciBNVlNcbiIKIiAgICAgICAgICAoT1MvMzkwKS5cbiIKIlxuIgoiICAgICAtLXN0ZGVyciA8ZmlsZT5cbiIKIiAgICAgICAgICBSZWRpcmVjdCBhbGwgd3JpdGVzIHRvIHN0ZGVyciAgdG8gIHRoZSAgc3BlY2lmaWVkICBmaWxlXG4iCiIgICAgICAgICAgaW5zdGVhZC4gSWYgdGhlIGZpbGUgbmFtZSBpcyBhIHBsYWluICctJywgaXQgaXMgaW5zdGVhZFxuIgoiICAgICAgICAgIHdyaXR0ZW4gdG8gc3Rkb3V0LiBUaGlzIG9wdGlvbiBoYXMgbm8gcG9pbnQgd2hlbiB5b3UncmVcbiIKIiAgICAgICAgICB1c2luZyBhIHNoZWxsIHdpdGggZGVjZW50IHJlZGlyZWN0aW5nIGNhcGFiaWxpdGllcy5cbiIKIlxuIgoiRklMRVNcbiIKIiAgICAgfi8uY3VybHJjXG4iCiIgICAgICAgICAgRGVmYXVsdCBjb25maWcgZmlsZS5cbiIKIlxuIgoiRU5WSVJPTk1FTlRcbiIKIiAgICAgSFRUUF9QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUC5cbiIKIlxuIgoiICAgICBIVFRQU19QUk9YWSBbcHJvdG9jb2w6Ly9dPGhvc3Q+Wzpwb3J0XVxuIgoiICAgICAgICAgIFNldHMgcHJveHkgc2VydmVyIHRvIHVzZSBmb3IgSFRUUFMuXG4iCiJcbiIKIiAgICAgRlRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBGVFAuXG4iCiJcbiIKIiAgICAgR09QSEVSX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBHT1BIRVIuXG4iCiJcbiIKIiAgICAgQUxMX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyAgcHJveHkgc2VydmVyIHRvIHVzZSBpZiBubyBwcm90b2NvbC1zcGVjaWZpYyBwcm94eVxuIgoiICAgICAgICAgIGlzIHNldC5cbiIKIlxuIgoiICAgICBOT19QUk9YWSA8Y29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaG9zdHM+XG4iCiIgICAgICAgICAgbGlzdCBvZiBob3N0IG5hbWVzIHRoYXQgc2hvdWxkbid0IGdvIHRocm91Z2ggYW55IHByb3h5LlxuIgoiICAgICAgICAgIElmIHNldCB0byBhIGFzdGVyaXNrICcqJyBvbmx5LCBpdCBtYXRjaGVzIGFsbCBob3N0cy5cbiIKIlxuIgoiICAgICBDT0xVTU5TIDxpbnRlZ2VyPlxuIgoiICAgICAgICAgIFRoZSAgd2lkdGggb2YgdGhlIHRlcm1pbmFsLiAgVGhpcyB2YXJpYWJsZSBvbmx5IGFmZmVjdHNcbiIKIiAgICAgICAgICBjdXJsIHdoZW4gdGhlIC0tcHJvZ3Jlc3MtYmFyIG9wdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiJFWElUIENPREVTXG4iCiIgICAgIFRoZXJlIGV4aXN0cyBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlcnJvciBjb2RlcyBhbmQgdGhlaXIgY29yrVxuIgoiICAgICByZXNwb25kaW5nICBlcnJvciBtZXNzYWdlcyB0aGF0IG1heSBhcHBlYXIgZHVyaW5nIGJhZCBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCAgdXNlciBtYWxmb3JtYXR0ZWQuIFRoZSB1c2VyLXBhcnQgb2YgdGhlIFVSTCBzeW50YXhcbiIKIiAgICAgICAgICB3YXMgbm90IGNvcnJlY3QuXG4iCiIgICAgIDUgICAgQ291bGRuJ3QgcmVzb2x2ZSBwcm94eS4gVGhlIGdpdmVuIHByb3h5IGhvc3QgY291bGQgIG5vdFxuIgoiICAgICAgICAgIGJlIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDYgICAgQ291bGRuJ3QgIHJlc29sdmUgIGhvc3QuICBUaGUgZ2l2ZW4gcmVtb3RlIGhvc3Qgd2FzIG5vdFxuIgoiICAgICAgICAgIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDcgICAgRmFpbGVkIHRvIGNvbm5lY3QgdG8gaG9zdC5cbiIKIlxuIgoiICAgICA4ICAgIEZUUCB3ZWlyZCBzZXJ2ZXIgIHJlcGx5LiAgVGhlICBzZXJ2ZXIgIHNlbnQgIGRhdGEgIGN1cmxcbiIKIiAgICAgICAgICBjb3VsZG4ndCBwYXJzZS5cbiIKIlxuIgoiICAgICA5ICAgIEZUUCBhY2Nlc3MgZGVuaWVkLiBUaGUgc2VydmVyIGRlbmllZCBsb2dpbi5cbiIKIlxuIgoiICAgICAxMCAgIEZUUCAgdXNlci9wYXNzd29yZCAgaW5jb3JyZWN0LiAgRWl0aGVyIG9uZSBvciBib3RoIHdlcmVcbiIKIiAgICAgICAgICBub3QgYWNjZXB0ZWQgYnkgdGhlIHNlcnZlci5cbiIKIlxuIgoiICAgICAxMSAgIEZUUCB3ZWlyZCBQQVNTIHJlcGx5LiBDdXJsICBjb3VsZG4ndCAgcGFyc2UgIHRoZSAgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNTIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTIgICBGVFAgIHdlaXJkICBVU0VSICByZXBseS4gIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlIHJlcGx5XG4iCiIgICAgICAgICAgc2VudCB0byB0aGUgVVNFUiByZXF1ZXN0LlxuIgoiXG4iCiIgICAgIDEzICAgRlRQIHdlaXJkIFBBU1YgcmVwbHksIEN1cmwgIGNvdWxkbid0ICBwYXJzZSAgdGhlICByZXBseVxuIgoiICAgICAgICAgIHNlbnQgdG8gdGhlIFBBU1YgcmVxdWVzdC5cbiIKIlxuIgoiICAgICAxNCAgIEZUUCAgd2VpcmQgMjI3IGZvcm1heS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgMjI3LWxpbmVcbiIKIiAgICAgICAgICB0aGUgc2VydmVyIHNlbnQuXG4iCiJcbiIKIiAgICAgMTUgICBGVFAgY2FuJ3QgZ2V0IGhvc3QuIENvdWxkbid0IHJlc29sdmUgdGhlIGhvc3QgSVAgd2UgZ290XG4iCiIgICAgICAgICAgaW4gdGhlIDIyNy1saW5lLlxuIgoiXG4iCiIgICAgIDE2ICAgRlRQICBjYW4ndCAgcmVjb25uZWN0LiAgQ291bGRuJ3QgY29ubmVjdCB0byB0aGUgaG9zdCB3ZVxuIgoiICAgICAgICAgIGdvdCBpbiB0aGUgMjI3LWxpbmUuXG4iCiJcbiIKIiAgICAgMTcgICBGVFAgIGNvdWxkbid0ICBzZXQgIGJpbmFyeS4gIENvdWxkbid0ICBjaGFuZ2UgIHRyYW5zZmVyXG4iCiIgICAgICAgICAgbWV0aG9kIHRvIGJpbmFyeS5cbiIKIlxuIgoiICAgICAxOCAgIFBhcnRpYWwgZmlsZS4gT25seSBhIHBhcnQgb2YgdGhlIGZpbGUgd2FzIHRyYW5zZmVyZWQuXG4iCiJcbiIKIiAgICAgMTkgICBGVFAgY291bGRuJ3QgUkVUUiBmaWxlLiBUaGUgUkVUUiBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAyMCAgIEZUUCAgd3JpdGUgIGVycm9yLiBUaGUgdHJhbnNmZXIgd2FzIHJlcG9ydGVkIGJhZCBieSB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMjEgICBGVFAgcXVvdGUgZXJyb3IuIEEgcXVvdGUgY29tbWFuZCAgcmV0dXJuZWQgIGVycm9yICBmcm9tXG4iCiIgICAgICAgICAgdGhlIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMiAgIEhUVFAgIG5vdCBmb3VuZC4gVGhlIHJlcXVlc3RlZCBwYWdlIHdhcyBub3QgZm91bmQuIFRoaXNcbiIKIiAgICAgICAgICByZXR1cm4gY29kZSBvbmx5IGFwcGVhcnMgaWYgLS1mYWlsIGlzIHVzZWQuXG4iCiJcbiIKIiAgICAgMjMgICBXcml0ZSBlcnJvci4gIEN1cmwgIGNvdWxkbid0ICB3cml0ZSAgZGF0YSAgdG8gIGEgIGxvY2FsXG4iCiIgICAgICAgICAgZmlsZXN5c3RlbSBvciBzaW1pbGFyLlxuIgoiICAgICAyNCAgIE1hbGZvcm1hdCB1c2VyLiBVc2VyIG5hbWUgYmFkbHkgc3BlY2lmaWVkLlxuIgoiXG4iCiIgICAgIDI1ICAgRlRQICBjb3VsZG4ndCAgU1RPUiAgZmlsZS4gIFRoZSAgc2VydmVyIGRlbmllZCB0aGUgU1RPUlxuIgoiICAgICAgICAgIG9wZXJhdGlvbi5cbiIKIlxuIgoiICAgICAyNiAgIFJlYWQgZXJyb3IuIFZhcmlvdXMgcmVhZGluZyBwcm9ibGVtcy5cbiIKIlxuIgoiICAgICAyNyAgIE91dCBvZiBtZW1vcnkuIEEgbWVtb3J5IGFsbG9jYXRpb24gcmVxdWVzdCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMjggICBPcGVyYXRpb24gdGltZW91dC4gVGhlIHNwZWNpZmllZCAgdGltZS1vdXQgIHBlcmlvZCAgd2FzXG4iCiIgICAgICAgICAgcmVhY2hlZCBhY2NvcmRpbmcgdG8gdGhlIGNvbmRpdGlvbnMuXG4iCiJcbiIKIiAgICAgMjkgICBGVFAgIGNvdWxkbid0IHNldCBBU0NJSS4gVGhlIHNlcnZlciByZXR1cm5lZCBhbiB1bmtub3duXG4iCiIgICAgICAgICAgcmVwbHkuXG4iCiJcbiIKIiAgICAgMzAgICBGVFAgUE9SVCBmYWlsZWQuIFRoZSBQT1JUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMxICAgRlRQIGNvdWxkbid0IHVzZSBSRVNULiBUaGUgUkVTVCBjb21tYW5kIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzMiAgIEZUUCBjb3VsZG4ndCB1c2UgU0laRS4gVGhlICBTSVpFICBjb21tYW5kICBmYWlsZWQuICBUaGVcbiIKIiAgICAgICAgICBjb21tYW5kICBpcyAgYW4gIGV4dGVuc2lvbiB0byB0aGUgb3JpZ2luYWwgRlRQIHNwZWMgUkZDXG4iCiIgICAgICAgICAgOTU5LlxuIgoiXG4iCiIgICAgIDMzICAgSFRUUCByYW5nZSBlcnJvci4gVGhlIHJhbmdlIFwiY29tbWFuZFwiIGRpZG4ndCB3b3JrLlxuIgoiXG4iCiIgICAgIDM0ICAgSFRUUCAgcG9zdCAgZXJyb3IuICBJbnRlcm5hbCAgcG9zdC1yZXF1ZXN0ICAgZ2VuZXJhdGlvblxuIgoiICAgICAgICAgIGVycm9yLlxuIgoiXG4iCiIgICAgIDM1ICAgU1NMIGNvbm5lY3QgZXJyb3IuIFRoZSBTU0wgaGFuZHNoYWtpbmcgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDM2ICAgRlRQICBiYWQgIGRvd25sb2FkIHJlc3VtZS4gQ291bGRuJ3QgY29udGludWUgYW4gZWFybGllclxuIgoiICAgICAgICAgIGFib3J0ZWQgZG93bmxvYWQuXG4iCiJcbiIKIiAgICAgMzcgICBGSUxFIGNvdWxkbid0IHJlYWQgZmlsZS4gRmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUuICBQZXKtXG4iCiIgICAgICAgICAgbWlzc2lvbnM/XG4iCiJcbiIKIiAgICAgMzggICBMREFQIGNhbm5vdCBiaW5kLiBMREFQIGJpbmQgb3BlcmF0aW9uIGZhaWxlZC5cbiIKIlxuIgoiICAgICAzOSAgIExEQVAgc2VhcmNoIGZhaWxlZC5cbiIKIlxuIgoiICAgICA0MCAgIExpYnJhcnkgbm90IGZvdW5kLiBUaGUgTERBUCBsaWJyYXJ5IHdhcyBub3QgZm91bmQuXG4iCiJcbiIKIiAgICAgNDEgICBGdW5jdGlvbiAgbm90ICBmb3VuZC4gIEEgcmVxdWlyZWQgTERBUCBmdW5jdGlvbiB3YXMgbm90XG4iCiIgICAgICAgICAgZm91bmQuXG4iCiJcbiIKIiAgICAgWFggICBUaGVyZSB3aWxsIGFwcGVhciAgbW9yZSAgZXJyb3IgIGNvZGVzICBoZXJlICBpbiAgZnV0dXJlXG4iCiIgICAgICAgICAgcmVsZWFzZXMuICBUaGUgZXhpc3Rpbmcgb25lcyBhcmUgbWVhbnQgdG8gbmV2ZXIgY2hhbmdlLlxuIgoiXG4iCiJCVUdTXG4iCiIgICAgIElmIHlvdSBkbyBmaW5kIGFueSAob3IgaGF2ZSBvdGhlciBzdWdnZXN0aW9ucyksIG1haWwgIERhbmllbFxuIgoiICAgICBTdGVuYmVyZyA8RGFuaWVsLlN0ZW5iZXJnQGhheHguc2U+LlxuIgoiQVVUSE9SUyAvIENPTlRSSUJVVE9SU1xuIgoiICAgICAgLSBEYW5pZWwgU3RlbmJlcmcgPERhbmllbC5TdGVuYmVyZ0BoYXh4LnNlPlxuIgoiICAgICAgLSBSYWZhZWwgU2FndWxhIDxzYWd1bGFAaW5mLnVmcmdzLmJyPlxuIgoiICAgICAgLSBTYW1wbyBLZWxsb21ha2kgPHNhbXBvQGlraS5maT5cbiIKIiAgICAgIC0gTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPlxuIgoiICAgICAgLSBCam9ybiBSZWVzZSA8YnJlZXNlQG1haWwxLnN0b2ZhbmV0LmRrPlxuIgoiICAgICAgLSBKb2hhbiBBbmRlcnNvbiA8am9oYW5AaG9tZW1haWwuY29tPlxuIgoiICAgICAgLSBLamVsbCBFcmljc29uIDxLamVsbC5Fcmljc29uQGhheHguc2U+XG4iCiIgICAgICAtIFRyb3kgRW5nZWwgPHRlbmdlbEBzb25pYy5uZXQ+XG4iCiIgICAgICAtIFJ5YW4gTmVsc29uIDxyeWFuQGluY2guY29tPlxuIgoiICAgICAgLSBCavZybiBTdGVuYmVyZyA8Qmpvcm4uU3RlbmJlcmdAaGF4eC5zZT5cbiIKIiAgICAgIC0gQW5ndXMgTWFja2F5IDxhbWFja2F5QGd1cy5tbC5vcmc+XG4iCiIgICAgICAtIEVyaWMgWW91bmcgPGVheUBjcnlwdHNvZnQuY29tPlxuIgoiICAgICAgLSBTaW1vbiBEaWNrIDxzaW1vbmRAdG90YWxseS5pcnJlbGV2YW50Lm9yZz5cbiIKIiAgICAgIC0gT3JlbiBUaXJvc2ggPG9yZW5AbW9udHkuaGlzaG9tZS5uZXQ+XG4iCiIgICAgICAtIFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT5cbiIKIiAgICAgIC0gR2lsYmVydCBSYW1pcmV6IEpyLiA8Z3JhbUB2ZXJkaWN0LnV0aHNjc2EuZWR1PlxuIgoiICAgICAgLSBBbmRy6XMgR2FyY+1hIDxvcm5hbHV4QHJlZGVzdGIuZXM+XG4iCiIgICAgICAtIERvdWdsYXMgRS4gV2Vnc2NoZWlkIDx3ZWdzY2RAd2hpcmxwb29sLmNvbT5cbiIKIiAgICAgIC0gTWFyayBCdXRsZXIgPGJ1dGxlcm1AeG1pc3Npb24uY29tPlxuIgoiICAgICAgLSBFcmljIFRoZWxpbiA8ZXJpY0BnZW5lcmF0aW9uLWkuY29tPlxuIgoiICAgICAgLSBNYXJjIEJvdWNoZXIgPG1hcmNAbWJzaS5jYT5cbiIKIiAgICAgIC0gR3JlZyBPbnVmZXIgPEdyZWcuT251ZmVyQEVuZy5TdW4uQ09NPlxuIgoiICAgICAgLSBEb3VnIEthdWZtYW4gPGRrYXVmbWFuQHJhaHVsLm5ldD5cbiIKIiAgICAgIC0gRGF2aWQgRXJpa3Nzb24gPGRhdmlkQDJnb29kLmNvbT5cbiIKIiAgICAgIC0gUmFscGggQmVja21hbm4gPHJhYmVAdW5pLXBhZGVyYm9ybi5kZT5cbiIKIiAgICAgIC0gVC4gWWFtYWRhIDx0YWlAaW1hc3kub3IuanA+XG4iCiIgICAgICAtIExhcnMgSi4gQWFzIDxsYXJzYUBzaW0ubm8+XG4iCiIgICAgICAtIEr2cm4gSGFydHJvdGggPEpvZXJuLkhhcnRyb3RoQGNvbXB1dGVyLm9yZz5cbiIKIiAgICAgIC0gTWF0dGhldyBDbGFya2UgPGNsYW1hdEB2YW4ubWF2ZXMuY2E+XG4iCiIgICAgICAtIExpbnVzIE5pZWxzZW4gPExpbnVzLk5pZWxzZW5AaGF4eC5zZT5cbiIKIiAgICAgIC0gRmVsaXggdm9uIExlaXRuZXIgPGZlbGl4QGNvbnZlcmdlbmNlLmRlPlxuIgoiICAgICAgLSBEYW4gWml0dGVyIDxkeml0dGVyQHppdHRlci5uZXQ+XG4iCiIgICAgICAtIEpvbmdraSBTdXdhbmRpIDxKb25na2kuU3V3YW5kaUBlbmcuc3VuLmNvbT5cbiIKIiAgICAgIC0gQ2hyaXMgTWFsdGJ5IDxjaHJpc0BhdXJlbWEuY29tPlxuIgoiICAgICAgLSBSb24gWmFwcCA8cnphcHBlckB5YWhvby5jb20+XG4iCiIgICAgICAtIFBhdWwgTWFycXVpcyA8cG1hcnF1aXNAaW5hbWUuY29tPlxuIgoiICAgICAgLSBFbGxpcyBQcml0Y2hhcmQgPGVsbGlzQGNpdHJpYS5jb20+XG4iCiIgICAgICAtIERhbWllbiBBZGFudCA8ZGFtc0B1c2EubmV0PlxuIgoiICAgICAgLSBDaHJpcyA8Y2JheWxpc3NAY3NjLmNvbWU+XG4iCiIgICAgICAtIE1hcmNvIEcuIFNhbHZhZ25vIDxtZ3NAd2hpei5jamIubmV0PlxuIgoiICAgICAgLSBQYXVsIE1hcnF1aXMgPHBtYXJxdWlzQGluYW1lLmNvbT5cbiIKIiAgICAgIC0gRGF2aWQgTGVCbGFuYyA8ZGxlYmxhbmNAcW54LmNvbT5cbiIKIiAgICAgIC0gUmljaCBHcmF5IGF0IFBsdXMgVGVjaG5vbG9naWVzXG4iCiIgICAgICAtIEx1b25nIERpbmggRHVuZyA8dThsdW9uZ0BsaHN5c3RlbXMuaHU+XG4iCiIgICAgICAtIFRvcnN0ZW4gRm9lcnRzY2ggPHRvcnN0ZW4uZm9lcnRzY2hAZ214Lm5ldD5cbiIKIiAgICAgIC0gS3Jpc3RpYW4gS/ZobnRvcHAgPGtyaXNAa29laG50b3BwLmRlPlxuIgoiICAgICAgLSBGcmVkIE5veiA8Rk5vekBzaWFjLmNvbT5cbiIKIiAgICAgIC0gQ2FvbGFuIE1jTmFtYXJhIDxjYW9sYW5AY3NuLnVsLmllPlxuIgoiICAgICAgLSBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+XG4iCiJXV1dcbiIKIiAgICAgaHR0cDovL2N1cmwuaGF4eC5zZVxuIgoiXG4iCiJGVFBcbiIKIiAgICAgZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvXG4iCiJcbiIKIlNFRSBBTFNPXG4iCiIgICAgIGZ0cCgxKSwgd2dldCgxKSwgc25hcmYoMSlcbiIKIlxuIgoiTEFURVNUIFZFUlNJT05cbiIKIlxuIgoiICBZb3UgYWx3YXlzIGZpbmQgbmV3cyBhYm91dCB3aGF0J3MgZ29pbmcgb24gYXMgd2VsbCBhcyB0aGUgbGF0ZXN0IHZlcnNpb25zXG4iCiIgIGZyb20gdGhlIGN1cmwgd2ViIHBhZ2VzLCBsb2NhdGVkIGF0OlxuIgoiXG4iCiIgICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2VcbiIKIlxuIgoiU0lNUExFIFVTQUdFXG4iCiJcbiIKIiAgR2V0IHRoZSBtYWluIHBhZ2UgZnJvbSBuZXRzY2FwZSdzIHdlYi1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgdGhlIHJvb3QgUkVBRE1FIGZpbGUgZnJvbSBmdW5ldCdzIGZ0cC1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9mdHAuZnVuZXQuZmkvUkVBRE1FXG4iCiJcbiIKIiAgR2V0IGEgZ29waGVyIGRvY3VtZW50IGZyb20gZnVuZXQncyBnb3BoZXIgc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZ29waGVyOi8vZ29waGVyLmZ1bmV0LmZpXG4iCik7CiBwdXRzKAoiXG4iCiIgIEdldCBhIHdlYiBwYWdlIGZyb20gYSBzZXJ2ZXIgdXNpbmcgcG9ydCA4MDAwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL3d3dy53ZWlyZHNlcnZlci5jb206ODAwMC9cbiIKIlxuIgoiICBHZXQgYSBsaXN0IG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiBhbiBGVFAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL2Z0cC5mdHMuZnJvbnRlYy5zZS9cbiIKIlxuIgoiICBHZXQgdGhlIGRlZmluaXRpb24gb2YgY3VybCBmcm9tIGEgZGljdGlvbmFyeTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIlxuIgoiRE9XTkxPQUQgVE8gQSBGSUxFXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1vIHRoYXRwYWdlLmh0bWwgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgYW5kIHN0b3JlIGluIGEgbG9jYWwgZmlsZSwgbWFrZSB0aGUgbG9jYWwgZmlsZSBnZXQgdGhlIG5hbWVcbiIKIiAgb2YgdGhlIHJlbW90ZSBkb2N1bWVudCAoaWYgbm8gZmlsZSBuYW1lIHBhcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwsIHRoaXNcbiIKIiAgd2lsbCBmYWlsKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1PIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL2luZGV4Lmh0bWxcbiIKIlxuIgoiVVNJTkcgUEFTU1dPUkRTXG4iCiJcbiIKIiBGVFBcbiIKIlxuIgoiICAgVG8gZnRwIGZpbGVzIHVzaW5nIG5hbWUrcGFzc3dkLCBpbmNsdWRlIHRoZW0gaW4gdGhlIFVSTCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW46cG9ydC9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBvciBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXUgZmxhZyBsaWtlXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBmdHA6Ly9tYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgIFRoZSBIVFRQIFVSTCBkb2Vzbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQgaW4gdGhlIFVSTCBzdHJpbmcuIEN1cmxcbiIKIiAgIGRvZXMgc3VwcG9ydCB0aGF0IGFueXdheSB0byBwcm92aWRlIGEgZnRwLXN0eWxlIGludGVyZmFjZSBhbmQgdGh1cyB5b3UgY2FuXG4iCiIgICBwaWNrIGEgZmlsZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cDovL25hbWU6cGFzc3dkQG1hY2hpbmUuZG9tYWluL2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdXNlciBhbmQgcGFzc3dvcmQgc2VwYXJhdGVseSBsaWtlIGluXG4iCiJcbiIKIiAgICAgICAgY3VybCAtdSBuYW1lOnBhc3N3ZCBodHRwOi8vbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgTk9URSEgU2luY2UgSFRUUCBVUkxzIGRvbid0IHN1cHBvcnQgdXNlciBhbmQgcGFzc3dvcmQsIHlvdSBjYW4ndCB1c2UgdGhhdFxuIgoiICAgc3R5bGUgd2hlbiB1c2luZyBDdXJsIHZpYSBhIHByb3h5LiBZb3UgX211c3RfIHVzZSB0aGUgLXUgc3R5bGUgZmV0Y2hcbiIKIiAgIGR1cmluZyBzdWNoIGNpcmN1bXN0YW5jZXMuXG4iCiJcbiIKIiBIVFRQU1xuIgoiXG4iCiIgICBQcm9iYWJseSBtb3N0IGNvbW1vbmx5IHVzZWQgd2l0aCBwcml2YXRlIGNlcnRpZmljYXRlcywgYXMgZXhwbGFpbmVkIGJlbG93LlxuIgoiXG4iCiIgR09QSEVSXG4iCiJcbiIKIiAgIEN1cmwgZmVhdHVyZXMgbm8gcGFzc3dvcmQgc3VwcG9ydCBmb3IgZ29waGVyLlxuIgoiXG4iCiJQUk9YWVxuIgoiXG4iCiIgR2V0IGFuIGZ0cCBmaWxlIHVzaW5nIGEgcHJveHkgbmFtZWQgbXktcHJveHkgdGhhdCB1c2VzIHBvcnQgODg4OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXggbXktcHJveHk6ODg4IGZ0cDovL2Z0cC5sZWFjaHNpdGUuY29tL1JFQURNRVxuIgoiXG4iCiIgR2V0IGEgZmlsZSBmcm9tIGEgSFRUUCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyB1c2VyIGFuZCBwYXNzd29yZCwgdXNpbmcgdGhlXG4iCiIgc2FtZSBwcm94eSBhcyBhYm92ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IHVzZXI6cGFzc3dkIC14IG15LXByb3h5Ojg4OCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgU29tZSBwcm94aWVzIHJlcXVpcmUgc3BlY2lhbCBhdXRoZW50aWNhdGlvbi4gU3BlY2lmeSBieSB1c2luZyAtVSBhcyBhYm92ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1VIHVzZXI6cGFzc3dkIC14IG15LXByb3h5Ojg4OCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgU2VlIGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDdXJsIHN1cHBvcnQgdGhhdCBvZmZlciBmdXJ0aGVyIHByb3h5XG4iCiIgY29udHJvbC5cbiIKIlxuIgoiUkFOR0VTXG4iCiJcbiIKIiAgV2l0aCBIVFRQIDEuMSBieXRlLXJhbmdlcyB3ZXJlIGludHJvZHVjZWQuIFVzaW5nIHRoaXMsIGEgY2xpZW50IGNhbiByZXF1ZXN0XG4iCiIgIHRvIGdldCBvbmx5IG9uZSBvciBtb3JlIHN1YnBhcnRzIG9mIGEgc3BlY2lmaWVkIGRvY3VtZW50LiBDdXJsIHN1cHBvcnRzXG4iCiIgIHRoaXMgd2l0aCB0aGUgLXIgZmxhZy5cbiIKIlxuIgoiICBHZXQgdGhlIGZpcnN0IDEwMCBieXRlcyBvZiBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgMC05OSBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgIEdldCB0aGUgbGFzdCA1MDAgYnl0ZXMgb2YgYSBkb2N1bWVudDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIC01MDAgaHR0cDovL3d3dy5nZXQudGhpcy9cbiIKIlxuIgoiICBDdXJsIGFsc28gc3VwcG9ydHMgc2ltcGxlIHJhbmdlcyBmb3IgRlRQIGZpbGVzIGFzIHdlbGwuIFRoZW4geW91IGNhbiBvbmx5XG4iCiIgIHNwZWNpZnkgc3RhcnQgYW5kIHN0b3AgcG9zaXRpb24uXG4iCiJcbiIKIiAgR2V0IHRoZSBmaXJzdCAxMDAgYnl0ZXMgb2YgYSBkb2N1bWVudCB1c2luZyBGVFA6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAwLTk5IGZ0cDovL3d3dy5nZXQudGhpcy9SRUFETUUgIFxuIgoiXG4iCiJVUExPQURJTkdcbiIKIlxuIgoiIEZUUFxuIgoiXG4iCiIgIFVwbG9hZCBhbGwgZGF0YSBvbiBzdGRpbiB0byBhIHNwZWNpZmllZCBmdHAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC10IGZ0cDovL2Z0cC51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIFVwbG9hZCBkYXRhIGZyb20gYSBzcGVjaWZpZWQgZmlsZSwgbG9naW4gd2l0aCB1c2VyIGFuZCBwYXNzd29yZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1UIHVwbG9hZGZpbGUgLXUgdXNlcjpwYXNzd2QgZnRwOi8vZnRwLnVwbG9hZC5jb20vbXlmaWxlXG4iCiJcbiIKIiAgVXBsb2FkIGEgbG9jYWwgZmlsZSB0byB0aGUgcmVtb3RlIHNpdGUsIGFuZCB1c2UgdGhlIGxvY2FsIGZpbGUgbmFtZSByZW1vdGVcbiIKIiAgdG9vOlxuIgoiIFxuIgoiICAgICAgICBjdXJsIC1UIHVwbG9hZGZpbGUgLXUgdXNlcjpwYXNzd2QgZnRwOi8vZnRwLnVwbG9hZC5jb20vXG4iCiJcbiIKIiAgVXBsb2FkIGEgbG9jYWwgZmlsZSB0byBnZXQgYXBwZW5kZWQgdG8gdGhlIHJlbW90ZSBmaWxlIHVzaW5nIGZ0cDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1UIGxvY2FsZmlsZSAtYSBmdHA6Ly9mdHAudXBsb2FkLmNvbS9yZW1vdGVmaWxlXG4iCiJcbiIKIiAgTk9URTogQ3VybCBkb2VzIG5vdCBzdXBwb3J0IGZ0cCB1cGxvYWQgdGhyb3VnaCBhIHByb3h5ISBUaGUgcmVhc29uIGZvciB0aGlzXG4iCiIgIGlzIHNpbXBseSB0aGF0IHByb3hpZXMgYXJlIHNlbGRvbWx5IGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhpcyBhbmQgdGhhdCBub1xuIgoiICBhdXRob3IgaGFzIHN1cHBsaWVkIGNvZGUgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSFcbiIKIlxuIgoiIEhUVFBcbiIKIlxuIgoiICBVcGxvYWQgYWxsIGRhdGEgb24gc3RkaW4gdG8gYSBzcGVjaWZpZWQgaHR0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgaHR0cDovL3d3dy51cGxvYWQuY29tL215ZmlsZVxuIgoiXG4iCiIgIE5vdGUgdGhhdCB0aGUgaHR0cCBzZXJ2ZXIgbXVzdCd2ZSBiZWVuIGNvbmZpZ3VyZWQgdG8gYWNjZXB0IFBVVCBiZWZvcmUgdGhpc1xuIgoiICBjYW4gYmUgZG9uZSBzdWNjZXNzZnVsbHkuXG4iCiJcbiIKIiAgRm9yIG90aGVyIHdheXMgdG8gZG8gaHR0cCBkYXRhIHVwbG9hZCwgc2VlIHRoZSBQT1NUIHNlY3Rpb24gYmVsb3cuXG4iCiJcbiIKIlZFUkJPU0UgLyBERUJVR1xuIgoiXG4iCiIgIElmIGN1cmwgZmFpbHMgd2hlcmUgaXQgaXNuJ3Qgc3VwcG9zZWQgdG8sIGlmIHRoZSBzZXJ2ZXJzIGRvbid0IGxldCB5b3VcbiIKIiAgaW4sIGlmIHlvdSBjYW4ndCB1bmRlcnN0YW5kIHRoZSByZXNwb25zZXM6IHVzZSB0aGUgLXYgZmxhZyB0byBnZXQgVkVSQk9TRVxuIgoiICBmZXRjaGluZy4gQ3VybCB3aWxsIG91dHB1dCBsb3RzIG9mIGluZm8gYW5kIGFsbCBkYXRhIGl0IHNlbmRzIGFuZFxuIgoiICByZWNlaXZlcyBpbiBvcmRlciB0byBsZXQgdGhlIHVzZXIgc2VlIGFsbCBjbGllbnQtc2VydmVyIGludGVyYWN0aW9uLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXYgZnRwOi8vZnRwLnVwbG9hZC5jb20vXG4iCiJcbiIKIkRFVEFJTEVEIElORk9STUFUSU9OXG4iCiJcbiIKIiAgRGlmZmVyZW50IHByb3RvY29scyBwcm92aWRlIGRpZmZlcmVudCB3YXlzIG9mIGdldHRpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiIKIiAgYWJvdXQgc3BlY2lmaWMgZmlsZXMvZG9jdW1lbnRzLiBUbyBnZXQgY3VybCB0byBzaG93IGRldGFpbGVkIGluZm9ybWF0aW9uXG4iCiIgIGFib3V0IGEgc2luZ2xlIGZpbGUsIHlvdSBzaG91bGQgdXNlIC1JLy0taGVhZCBvcHRpb24uIEl0IGRpc3BsYXlzIGFsbFxuIgoiICBhdmFpbGFibGUgaW5mbyBvbiBhIHNpbmdsZSBmaWxlIGZvciBIVFRQIGFuZCBGVFAuIFRoZSBIVFRQIGluZm9ybWF0aW9uIGlzIGFcbiIKIiAgbG90IG1vcmUgZXh0ZW5zaXZlLlxuIgoiXG4iCiIgIEZvciBIVFRQLCB5b3UgY2FuIGdldCB0aGUgaGVhZGVyIGluZm9ybWF0aW9uICh0aGUgc2FtZSBhcyAtSSB3b3VsZCBzaG93KVxuIgoiICBzaG93biBiZWZvcmUgdGhlIGRhdGEgYnkgdXNpbmcgLWkvLS1pbmNsdWRlLiBDdXJsIHVuZGVyc3RhbmRzIHRoZVxuIgoiICAtRC8tLWR1bXAtaGVhZGVyIG9wdGlvbiB3aGVuIGdldHRpbmcgZmlsZXMgZnJvbSBib3RoIEZUUCBhbmQgSFRUUCwgYW5kIGl0XG4iCiIgIHdpbGwgdGhlbiBzdG9yZSB0aGUgaGVhZGVycyBpbiB0aGUgc3BlY2lmaWVkIGZpbGUuXG4iCiJcbiIKIiAgU3RvcmUgdGhlIEhUVFAgaGVhZGVycyBpbiBhIHNlcGFyYXRlIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLWR1bXAtaGVhZGVyIGhlYWRlcnMudHh0IGN1cmwuaGF4eC5zZVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBoZWFkZXJzIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGZpbGUgY2FuIGJlIHZlcnkgdXNlZnVsIGF0IGEgbGF0ZXJcbiIKIiAgdGltZSBpZiB5b3Ugd2FudCBjdXJsIHRvIHVzZSBjb29raWVzIHNlbnQgYnkgdGhlIHNlcnZlci4gTW9yZSBhYm91dCB0aGF0IGluXG4iCiIgIHRoZSBjb29raWVzIHNlY3Rpb24uXG4iCiJcbiIKIlBPU1QgKEhUVFApXG4iCiJcbiIKIiAgSXQncyBlYXN5IHRvIHBvc3QgZGF0YSB1c2luZyBjdXJsLiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIC1kIDxkYXRhPlxuIgoiICBvcHRpb24uICBUaGUgcG9zdCBkYXRhIG11c3QgYmUgdXJsZW5jb2RlZC5cbiIKIlxuIgoiICBQb3N0IGEgc2ltcGxlIFwibmFtZVwiIGFuZCBcInBob25lXCIgZ3Vlc3Rib29rLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWQgXCJuYW1lPVJhZmFlbCUyMFNhZ3VsYSZwaG9uZT0zMzIwNzgwXCIgXFxcbiIKIiAgICAgICAgICAgICAgICBodHRwOi8vd3d3LndoZXJlLmNvbS9ndWVzdC5jZ2lcbiIKIlxuIgoiICBIb3cgdG8gcG9zdCBhIGZvcm0gd2l0aCBjdXJsLCBsZXNzb24gIzE6XG4iCiJcbiIKIiAgRGlnIG91dCBhbGwgdGhlIDxpbnB1dD4gdGFncyBpbiB0aGUgZm9ybSB0aGF0IHlvdSB3YW50IHRvIGZpbGwgaW4uIChUaGVyZSdzXG4iCiIgIGEgcGVybCBwcm9ncmFtIGNhbGxlZCBmb3JtZmluZC5wbCBvbiB0aGUgY3VybCBzaXRlIHRoYXQgaGVscHMgd2l0aCB0aGlzKS5cbiIKIlxuIgoiICBJZiB0aGVyZSdzIGEgXCJub3JtYWxcIiBwb3N0LCB5b3UgdXNlIC1kIHRvIHBvc3QuIC1kIHRha2VzIGEgZnVsbCBcInBvc3RcbiIKIiAgc3RyaW5nXCIsIHdoaWNoIGlzIGluIHRoZSBmb3JtYXRcbiIKIlxuIgoiICAgICAgICA8dmFyaWFibGUxPj08ZGF0YTE+Jjx2YXJpYWJsZTI+PTxkYXRhMj4mLi4uXG4iCiJcbiIKIiAgVGhlICd2YXJpYWJsZScgbmFtZXMgYXJlIHRoZSBuYW1lcyBzZXQgd2l0aCBcIm5hbWU9XCIgaW4gdGhlIDxpbnB1dD4gdGFncywgYW5kXG4iCiIgIHRoZSBkYXRhIGlzIHRoZSBjb250ZW50cyB5b3Ugd2FudCB0byBmaWxsIGluIGZvciB0aGUgaW5wdXRzLiBUaGUgZGF0YSAqbXVzdCpcbiIKIiAgYmUgcHJvcGVybHkgVVJMIGVuY29kZWQuIFRoYXQgbWVhbnMgeW91IHJlcGxhY2Ugc3BhY2Ugd2l0aCArIGFuZCB0aGF0IHlvdVxuIgoiICB3cml0ZSB3ZWlyZCBsZXR0ZXJzIHdpdGggJVhYIHdoZXJlIFhYIGlzIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZlxuIgoiICB0aGUgbGV0dGVyJ3MgQVNDSUkgY29kZS5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgIChwYWdlIGxvY2F0ZWQgYXQgaHR0cDovL3d3dy5mb3JtcG9zdC5jb20vZ2V0dGhpcy9cbiIKIlxuIgoiICAgICAgICA8Zm9ybSBhY3Rpb249XCJwb3N0LmNnaVwiIG1ldGhvZD1cInBvc3RcIj5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9dXNlciBzaXplPTEwPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1wYXNzIHR5cGU9cGFzc3dvcmQgc2l6ZT0xMD5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9aWQgdHlwZT1oaWRkZW4gdmFsdWU9XCJibGFibGFibGFcIj5cbiIKIiAgICAgICAgPGlucHV0IG5hbWU9ZGluZyB2YWx1ZT1cInN1Ym1pdFwiPlxuIgoiICAgICAgICA8L2Zvcm0+XG4iCiJcbiIKIiAgV2Ugd2FudCB0byBlbnRlciB1c2VyICdmb29iYXInIHdpdGggcGFzc3dvcmQgJzEyMzQ1Jy5cbiIKIlxuIgoiICBUbyBwb3N0IHRvIHRoaXMsIHlvdSBlbnRlciBhIGN1cmwgY29tbWFuZCBsaW5lIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtZCBcInVzZXI9Zm9vYmFyJnBhc3M9MTIzNDUmaWQ9YmxhYmxhYmxhJmRpZz1zdWJtaXRcIiAgKGNvbnRpbnVlcylcbiIKIiAgICAgICAgICBodHRwOi8vd3d3LmZvcm1wb3N0LmNvbS9nZXR0aGlzL3Bvc3QuY2dpXG4iCiJcbiIKIlxuIgoiICBXaGlsZSAtZCB1c2VzIHRoZSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgbWltZS10eXBlLCBnZW5lcmFsbHlcbiIKIiAgdW5kZXJzdG9vZCBieSBDR0kncyBhbmQgc2ltaWxhciwgY3VybCBhbHNvIHN1cHBvcnRzIHRoZSBtb3JlIGNhcGFibGVcbiIKIiAgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0eXBlLiBUaGlzIGxhdHRlciB0eXBlIHN1cHBvcnRzIHRoaW5ncyBsaWtlIGZpbGUgdXBsb2FkLlxuIgoiXG4iCiIgIC1GIGFjY2VwdHMgcGFyYW1ldGVycyBsaWtlIC1GIFwibmFtZT1jb250ZW50c1wiLiBJZiB5b3Ugd2FudCB0aGUgY29udGVudHMgdG9cbiIKIiAgYmUgcmVhZCBmcm9tIGEgZmlsZSwgdXNlIDxAZmlsZW5hbWU+IGFzIGNvbnRlbnRzLiBXaGVuIHNwZWNpZnlpbmcgYSBmaWxlLFxuIgoiICB5b3UgY2FuIGFsc28gc3BlY2lmeSB3aGljaCBjb250ZW50IHR5cGUgdGhlIGZpbGUgaXMsIGJ5IGFwcGVuZGluZ1xuIgoiICAnO3R5cGU9PG1pbWUgdHlwZT4nIHRvIHRoZSBmaWxlIG5hbWUuIFlvdSBjYW4gYWxzbyBwb3N0IGNvbnRlbnRzIG9mIHNldmVyYWxcbiIKIiAgZmlsZXMgaW4gb25lIGZpZWxkLiBTbyB0aGF0IHRoZSBmaWVsZCBuYW1lICdjb29sZmlsZXMnIGNhbiBiZSBzZW50IHRocmVlXG4iCiIgIGZpbGVzIHdpdGggZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMgaW4gYSBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiY29vbGZpbGVzPUBmaWwxLmdpZjt0eXBlPWltYWdlL2dpZixmaWwyLnR4dCxmaWwzLmh0bWxcIiBcXFxuIgoiICAgICAgICBodHRwOi8vd3d3LnBvc3QuY29tL3Bvc3RpdC5jZ2lcbiIKIlxuIgoiICBJZiBjb250ZW50LXR5cGUgaXMgbm90IHNwZWNpZmllZCwgY3VybCB3aWxsIHRyeSB0byBndWVzcyBmcm9tIHRoZSBleHRlbnNpb25cbiIKIiAgKGl0IG9ubHkga25vd3MgYSBmZXcpLCBvciB1c2UgdGhlIHByZXZpb3VzbHkgc3BlY2lmaWVkIHR5cGUgKGZyb20gYW4gZWFybGllclxuIgoiICBmaWxlIGlmIHNldmVyYWwgZmlsZXMgYXJlIHNwZWNpZmllZCBpbiBhIGxpc3QpIG9yIGZpbmFsbHkgdXNpbmcgdGhlIGRlZmF1bHRcbiIKIiAgdHlwZSAndGV4dC9wbGFpbicuXG4iCiJcbiIKIiAgRW11bGF0ZSBhIGZpbGwtaW4gZm9ybSB3aXRoIC1GLiBMZXQncyBzYXkgeW91IGZpbGwgaW4gdGhyZWUgZmllbGRzIGluIGFcbiIKIiAgZm9ybS4gT25lIGZpZWxkIGlzIGEgZmlsZSBuYW1lIHdoaWNoIHRvIHBvc3QsIG9uZSBmaWVsZCBpcyB5b3VyIG5hbWUgYW5kIG9uZVxuIgoiICBmaWVsZCBpcyBhIGZpbGUgZGVzY3JpcHRpb24uIFdlIHdhbnQgdG8gcG9zdCB0aGUgZmlsZSB3ZSBoYXZlIHdyaXR0ZW4gbmFtZWRcbiIKIiAgXCJjb29sdGV4dC50eHRcIi4gVG8gbGV0IGN1cmwgZG8gdGhlIHBvc3Rpbmcgb2YgdGhpcyBkYXRhIGluc3RlYWQgb2YgeW91clxuIgoiICBmYXZvdXJpdGUgYnJvd3NlciwgeW91IGhhdmUgdG8gY2hlY2sgb3V0IHRoZSBIVE1MIG9mIHRoZSBmb3JtIHBhZ2UgdG8gZ2V0IHRvXG4iCiIgIGtub3cgdGhlIG5hbWVzIG9mIHRoZSBpbnB1dCBmaWVsZHMuIEluIG91ciBleGFtcGxlLCB0aGUgaW5wdXQgZmllbGQgbmFtZXMgYXJlXG4iCiIgICdmaWxlJywgJ3lvdXJuYW1lJyBhbmQgJ2ZpbGVkZXNjcmlwdGlvbicuXG4iCiJcbiIKIiAgICAgICAgY3VybCAtRiBcImZpbGU9QGNvb2x0ZXh0LnR4dFwiIC1GIFwieW91cm5hbWU9RGFuaWVsXCIgXFxcbiIKIiAgICAgICAgICAgICAtRiBcImZpbGVkZXNjcmlwdGlvbj1Db29sIHRleHQgZmlsZSB3aXRoIGNvb2wgdGV4dCBpbnNpZGVcIiBcXFxuIgoiICAgICAgICAgICAgIGh0dHA6Ly93d3cucG9zdC5jb20vcG9zdGl0LmNnaVxuIgoiXG4iCiIgIFNvLCB0byBzZW5kIHR3byBmaWxlcyBpbiBvbmUgcG9zdCB5b3UgY2FuIGRvIGl0IGluIHR3byB3YXlzOlxuIgoiXG4iCiIgIDEuIFNlbmQgbXVsdGlwbGUgZmlsZXMgaW4gYSBzaW5nbGUgXCJmaWVsZFwiIHdpdGggYSBzaW5nbGUgZmllbGQgbmFtZTpcbiIKIiBcbiIKIiAgICAgICAgY3VybCAtRiBcInBpY3R1cmVzPUBkb2cuZ2lmLGNhdC5naWZcIiBcbiIKIiBcbiIKIiAgMi4gU2VuZCB0d28gZmllbGRzIHdpdGggdHdvIGZpZWxkIG5hbWVzOiBcbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiZG9jcGljdHVyZT1AZG9nLmdpZlwiIC1GIFwiY2F0cGljdHVyZT1AY2F0LmdpZlwiIFxuIgoiXG4iCiJSRUZFUkVSXG4iCiJcbiIKIiAgQSBIVFRQIHJlcXVlc3QgaGFzIHRoZSBvcHRpb24gdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhZGRyZXNzXG4iCiIgIHRoYXQgcmVmZXJyZWQgdG8gYWN0dWFsIHBhZ2UsIGFuZCBjdXJsIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoYXRcbiIKIiAgcmVmZXJyZXIgdG8gZ2V0IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0b1xuIgoiICBmb29sIG9yIHRyaWNrIHN0dXBpZCBzZXJ2ZXJzIG9yIENHSSBzY3JpcHRzIHRoYXQgcmVseSBvbiB0aGF0IGluZm9ybWF0aW9uXG4iCiIgIGJlaW5nIGF2YWlsYWJsZSBvciBjb250YWluIGNlcnRhaW4gZGF0YS5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1lIHd3dy5jb29sc2l0ZS5jb20gaHR0cDovL3d3dy5zaG93bWUuY29tL1xuIgoiXG4iCiJVU0VSIEFHRU5UXG4iCiJcbiIKIiAgQSBIVFRQIHJlcXVlc3QgaGFzIHRoZSBvcHRpb24gdG8gaW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJvd3NlclxuIgoiICB0aGF0IGdlbmVyYXRlZCB0aGUgcmVxdWVzdC4gQ3VybCBhbGxvd3MgaXQgdG8gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kXG4iCiIgIGxpbmUuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvIGZvb2wgb3IgdHJpY2sgc3R1cGlkIHNlcnZlcnMgb3IgQ0dJXG4iCiIgIHNjcmlwdHMgdGhhdCBvbmx5IGFjY2VwdCBjZXJ0YWluIGJyb3dzZXJzLlxuIgoiXG4iCiIgIEV4YW1wbGU6XG4iCiJcbiIKIiAgY3VybCAtQSAnTW96aWxsYS8zLjAgKFdpbjk1OyBJKScgaHR0cDovL3d3dy5uYXRpb25zYmFuay5jb20vXG4iCiJcbiIKIiAgT3RoZXIgY29tbW9uIHN0cmluZ3M6XG4iCiIgICAgJ01vemlsbGEvMy4wIChXaW45NTsgSSknICAgICBOZXRzY2FwZSBWZXJzaW9uIDMgZm9yIFdpbmRvd3MgOTVcbiIKIiAgICAnTW96aWxsYS8zLjA0IChXaW45NTsgVSknICAgIE5ldHNjYXBlIFZlcnNpb24gMyBmb3IgV2luZG93cyA5NVxuIgoiICAgICdNb3ppbGxhLzIuMDIgKE9TLzI7IFUpJyAgICAgTmV0c2NhcGUgVmVyc2lvbiAyIGZvciBPUy8yXG4iCiIgICAgJ01vemlsbGEvNC4wNCBbZW5dIChYMTE7IFU7IEFJWCA0LjI7IE5hdiknICAgICAgICAgICBOUyBmb3IgQUlYXG4iCiIgICAgJ01vemlsbGEvNC4wNSBbZW5dIChYMTE7IFU7IExpbnV4IDIuMC4zMiBpNTg2KScgICAgICBOUyBmb3IgTGludXhcbiIKIlxuIgoiICBOb3RlIHRoYXQgSW50ZXJuZXQgRXhwbG9yZXIgdHJpZXMgaGFyZCB0byBiZSBjb21wYXRpYmxlIGluIGV2ZXJ5IHdheTpcbiIKIiAgICAnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNC4wMTsgV2luZG93cyA5NSknICAgIE1TSUUgZm9yIFc5NVxuIgoiXG4iCiIgIE1vemlsbGEgaXMgbm90IHRoZSBvbmx5IHBvc3NpYmxlIFVzZXItQWdlbnQgbmFtZTpcbiIKIiAgICAnS29ucXVlcm9yLzEuMCcgICAgICAgICAgICAgS0RFIEZpbGUgTWFuYWdlciBkZXNrdG9wIGNsaWVudFxuIgoiICAgICdMeW54LzIuNy4xIGxpYnd3dy1GTS8yLjE0JyBMeW54IGNvbW1hbmQgbGluZSBicm93c2VyXG4iCiJcbiIKIkNPT0tJRVNcbiIKIlxuIgoiICBDb29raWVzIGFyZSBnZW5lcmFsbHkgdXNlZCBieSB3ZWIgc2VydmVycyB0byBrZWVwIHN0YXRlIGluZm9ybWF0aW9uIGF0IHRoZVxuIgoiICBjbGllbnQncyBzaWRlLiBUaGUgc2VydmVyIHNldHMgY29va2llcyBieSBzZW5kaW5nIGEgcmVzcG9uc2UgbGluZSBpbiB0aGVcbiIKIiAgaGVhZGVycyB0aGF0IGxvb2tzIGxpa2UgJ1NldC1Db29raWU6IDxkYXRhPicgd2hlcmUgdGhlIGRhdGEgcGFydCB0aGVuXG4iCiIgIHR5cGljYWxseSBjb250YWlucyBhIHNldCBvZiBOQU1FPVZBTFVFIHBhaXJzIChzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyAnOydcbiIKIiAgbGlrZSBcIk5BTUUxPVZBTFVFMTsgTkFNRTI9VkFMVUUyO1wiKS4gVGhlIHNlcnZlciBjYW4gYWxzbyBzcGVjaWZ5IGZvciB3aGF0XG4iCik7CiBwdXRzKAoiICBwYXRoIHRoZSBcImNvb2tpZVwiIHNob3VsZCBiZSB1c2VkIGZvciAoYnkgc3BlY2lmeWluZyBcInBhdGg9dmFsdWVcIiksIHdoZW4gdGhlXG4iCiIgIGNvb2tpZSBzaG91bGQgZXhwaXJlIChcImV4cGlyZT1EQVRFXCIpLCBmb3Igd2hhdCBkb21haW4gdG8gdXNlIGl0XG4iCiIgIChcImRvbWFpbj1OQU1FXCIpIGFuZCBpZiBpdCBzaG91bGQgYmUgdXNlZCBvbiBzZWN1cmUgY29ubmVjdGlvbnMgb25seVxuIgoiICAoXCJzZWN1cmVcIikuXG4iCiJcbiIKIiAgSWYgeW91J3ZlIHJlY2VpdmVkIGEgcGFnZSBmcm9tIGEgc2VydmVyIHRoYXQgY29udGFpbnMgYSBoZWFkZXIgbGlrZTpcbiIKIiAgICAgICAgU2V0LUNvb2tpZTogc2Vzc2lvbmlkPWJvbzEyMzsgcGF0aD1cIi9mb29cIjtcbiIKIlxuIgoiICBpdCBtZWFucyB0aGUgc2VydmVyIHdhbnRzIHRoYXQgZmlyc3QgcGFpciBwYXNzZWQgb24gd2hlbiB3ZSBnZXQgYW55dGhpbmcgaW5cbiIKIiAgYSBwYXRoIGJlZ2lubmluZyB3aXRoIFwiL2Zvb1wiLlxuIgoiXG4iCiIgIEV4YW1wbGUsIGdldCBhIHBhZ2UgdGhhdCB3YW50cyBteSBuYW1lIHBhc3NlZCBpbiBhIGNvb2tpZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIFwibmFtZT1EYW5pZWxcIiB3d3cuc2lsbHlwYWdlLmNvbVxuIgoiXG4iCiIgIEN1cmwgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gdXNlIHByZXZpb3VzbHkgcmVjZWl2ZWQgY29va2llcyBpbiBmb2xsb3dpbmdcbiIKIiAgc2Vzc2lvbnMuIElmIHlvdSBnZXQgY29va2llcyBmcm9tIGEgc2VydmVyIGFuZCBzdG9yZSB0aGVtIGluIGEgZmlsZSBpbiBhXG4iCiIgIG1hbm5lciBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLS1kdW1wLWhlYWRlciBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIC4uLiB5b3UgY2FuIHRoZW4gaW4gYSBzZWNvbmQgY29ubmVjdCB0byB0aGF0IChvciBhbm90aGVyKSBzaXRlLCB1c2UgdGhlXG4iCiIgIGNvb2tpZXMgZnJvbSB0aGUgJ2hlYWRlcnMnIGZpbGUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1iIGhlYWRlcnMgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgTm90ZSB0aGF0IGJ5IHNwZWNpZnlpbmcgLWIgeW91IGVuYWJsZSB0aGUgXCJjb29raWUgYXdhcmVuZXNzXCIgYW5kIHdpdGggLUxcbiIKIiAgeW91IGNhbiBtYWtlIGN1cmwgZm9sbG93IGEgbG9jYXRpb246ICh3aGljaCBvZnRlbiBpcyB1c2VkIGluIGNvbWJpbmF0aW9uXG4iCiIgIHdpdGggY29va2llcykuIFNvIHRoYXQgaWYgYSBzaXRlIHNlbmRzIGNvb2tpZXMgYW5kIGEgbG9jYXRpb24sIHlvdSBjYW5cbiIKIiAgdXNlIGEgbm9uLWV4aXN0aW5nIGZpbGUgdG8gdHJpZyB0aGUgY29va2llIGF3YXJlbmVzcyBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUwgLWIgZW1wdHktZmlsZSB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICBUaGUgZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBtdXN0IGJlIGZvcm1hdHRlZCB1c2luZyBwbGFpbiBIVFRQIGhlYWRlcnMgT1JcbiIKIiAgYXMgbmV0c2NhcGUncyBjb29raWUgZmlsZS4gQ3VybCB3aWxsIGRldGVybWluZSB3aGF0IGtpbmQgaXQgaXMgYmFzZWQgb24gdGhlXG4iCiIgIGZpbGUgY29udGVudHMuXG4iCiJcbiIKIlBST0dSRVNTIE1FVEVSXG4iCiJcbiIKIiAgVGhlIHByb2dyZXNzIG1ldGVyIGV4aXN0cyB0byBzaG93IGEgdXNlciB0aGF0IHNvbWV0aGluZyBhY3R1YWxseSBpc1xuIgoiICBoYXBwZW5pbmcuIFRoZSBkaWZmZXJlbnQgZmllbGRzIGluIHRoZSBvdXRwdXQgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6XG4iCiJcbiIKIiAgJSBUb3RhbCAgICAlIFJlY2VpdmVkICUgWGZlcmQgIEF2ZXJhZ2UgU3BlZWQgICAgICAgICAgVGltZSAgICAgICAgICAgICBDdXJyLlxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGxvYWQgIFVwbG9hZCBUb3RhbCAgICBDdXJyZW50ICBMZWZ0ICAgIFNwZWVkXG4iCiIgIDAgIDE1MU0gICAgMCAzODYwOCAgICAwICAgICAwICAgOTQwNiAgICAgIDAgIDQ6NDE6NDMgIDA6MDA6MDQgIDQ6NDE6MzkgIDkyODdcbiIKIlxuIgoiICBGcm9tIGxlZnQtdG8tcmlnaHQ6XG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHdob2xlIHRyYW5zZmVyXG4iCiIgICBUb3RhbCAgICAgICAgIC0gdG90YWwgc2l6ZSBvZiB0aGUgd2hvbGUgZXhwZWN0ZWQgdHJhbnNmZXJcbiIKIiAgICUgICAgICAgICAgICAgLSBwZXJjZW50YWdlIGNvbXBsZXRlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIFJlY2VpdmVkICAgICAgLSBjdXJyZW50bHkgZG93bmxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgICUgICAgICAgICAgICAgLSBwZXJjZW50YWdlIGNvbXBsZXRlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBYZmVyZCAgICAgICAgIC0gY3VycmVudGx5IHVwbG9hZGVkIGFtb3VudCBvZiBieXRlc1xuIgoiICAgQXZlcmFnZSBTcGVlZFxuIgoiICAgRGxvYWQgICAgICAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIG9mIHRoZSBkb3dubG9hZFxuIgoiICAgQXZlcmFnZSBTcGVlZFxuIgoiICAgVXBsb2FkICAgICAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIG9mIHRoZSB1cGxvYWRcbiIKIiAgIFRpbWUgVG90YWwgICAgLSBleHBlY3RlZCB0aW1lIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb25cbiIKIiAgIFRpbWUgQ3VycmVudCAgLSB0aW1lIHBhc3NlZCBzaW5jZSB0aGUgaW52b2tlXG4iCiIgICBUaW1lIExlZnQgICAgIC0gZXhwZWN0ZWQgdGltZSBsZWZ0IHRvIGNvbXBsZXRldGlvblxuIgoiICAgQ3Vyci5TcGVlZCAgICAtIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHNwZWVkIHRoZSBsYXN0IDUgc2Vjb25kcyAodGhlIGZpcnN0XG4iCiIgICAgICAgICAgICAgICAgICAgNSBzZWNvbmRzIG9mIGEgdHJhbnNmZXIgaXMgYmFzZWQgb24gbGVzcyB0aW1lIG9mIGNvdXJzZS4pXG4iCiJcbiIKIiAgVGhlIC0jIG9wdGlvbiB3aWxsIGRpc3BsYXkgYSB0b3RhbGx5IGRpZmZlcmVudCBwcm9ncmVzcyBiYXIgdGhhdCBkb2Vzbid0XG4iCiIgIG5lZWQgbXVjaCBleHBsYW5hdGlvbiFcbiIKIlxuIgoiU1BFRUQgTElNSVRcbiIKIlxuIgoiICBDdXJsIG9mZmVycyB0aGUgdXNlciB0byBzZXQgY29uZGl0aW9ucyByZWdhcmRpbmcgdHJhbnNmZXIgc3BlZWQgdGhhdCBtdXN0XG4iCiIgIGJlIG1ldCB0byBsZXQgdGhlIHRyYW5zZmVyIGtlZXAgZ29pbmcuIEJ5IHVzaW5nIHRoZSBzd2l0Y2ggLXkgYW5kIC1ZIHlvdVxuIgoiICBjYW4gbWFrZSBjdXJsIGFib3J0IHRyYW5zZmVycyBpZiB0aGUgdHJhbnNmZXIgc3BlZWQgZG9lc24ndCBleGNlZWQgeW91clxuIgoiICBnaXZlbiBsb3dlc3QgbGltaXQgZm9yIGEgc3BlY2lmaWVkIHRpbWUuXG4iCiJcbiIKIiAgVG8gbGV0IGN1cmwgYWJhbmRvbiBkb3dubG9hZGluZyB0aGlzIHBhZ2UgaWYgaXRzIHNsb3dlciB0aGFuIDMwMDAgYnl0ZXMgcGVyXG4iCiIgIHNlY29uZCBmb3IgMSBtaW51dGUsIHJ1bjpcbiIKIlxuIgoiICAgICAgICBjdXJsIC15IDMwMDAgLVkgNjAgd3d3LmZhci1hd2F5LXNpdGUuY29tXG4iCiJcbiIKIiAgVGhpcyBjYW4gdmVyeSB3ZWxsIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgb3ZlcmFsbCB0aW1lIGxpbWl0LCBzb1xuIgoiICB0aGF0IHRoZSBhYm92ZSBvcGVyYXRpb2luIG11c3QgYmUgY29tcGxldGVkIGluIHdob2xlIHdpdGhpbiAzMCBtaW51dGVzOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLW0gMTgwMCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiJDT05GSUcgRklMRVxuIgoiXG4iCiIgIEN1cmwgYXV0b21hdGljYWxseSB0cmllcyB0byByZWFkIHRoZSAuY3VybHJjIGZpbGUgKG9yIF9jdXJscmMgZmlsZSBvbiB3aW4zMlxuIgoiICBzeXN0ZW1zKSBmcm9tIHRoZSB1c2VyJ3MgaG9tZSBkaXIgb24gc3RhcnR1cC4gVGhlIGNvbmZpZyBmaWxlIHNob3VsZCBiZVxuIgoiICBtYWRlIHVwIHdpdGggbm9ybWFsIGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4gQ29tbWVudHMgY2FuIGJlIHVzZWQgd2l0aGluIHRoZVxuIgoiICBmaWxlLiBJZiB0aGUgZmlyc3QgbGV0dGVyIG9uIGEgbGluZSBpcyBhICcjJy1sZXR0ZXIgdGhlIHJlc3Qgb2YgdGhlIGxpbmVcbiIKIiAgaXMgdHJlYXRlZCBhcyBhIGNvbW1lbnQuXG4iCiJcbiIKIiAgRXhhbXBsZSwgc2V0IGRlZmF1bHQgdGltZSBvdXQgYW5kIHByb3h5IGluIGEgY29uZmlnIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgIyBXZSB3YW50IGEgMzAgbWludXRlIHRpbWVvdXQ6XG4iCiIgICAgICAgIC1tIDE4MDBcbiIKIiAgICAgICAgIyAuLi4gYW5kIHdlIHVzZSBhIHByb3h5IGZvciBhbGwgYWNjZXNzZXM6XG4iCiIgICAgICAgIC14IHByb3h5Lm91ci5kb21haW4uY29tOjgwODBcbiIKIlxuIgoiICBXaGl0ZSBzcGFjZXMgQVJFIHNpZ25pZmljYW50IGF0IHRoZSBlbmQgb2YgbGluZXMsIGJ1dCBhbGwgd2hpdGUgc3BhY2VzXG4iCiIgIGxlYWRpbmcgdXAgdG8gdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2YgZWFjaCBsaW5lIGFyZSBpZ25vcmVkLlxuIgoiXG4iCiIgIFByZXZlbnQgY3VybCBmcm9tIHJlYWRpbmcgdGhlIGRlZmF1bHQgZmlsZSBieSB1c2luZyAtcSBhcyB0aGUgZmlyc3QgY29tbWFuZFxuIgoiICBsaW5lIHBhcmFtZXRlciwgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1xIHd3dy50aGF0c2l0ZS5jb21cbiIKIlxuIgoiICBGb3JjZSBjdXJsIHRvIGdldCBhbmQgZGlzcGxheSBhIGxvY2FsIGhlbHAgcGFnZSBpbiBjYXNlIGl0IGlzIGludm9rZWRcbiIKIiAgd2l0aG91dCBVUkwgYnkgbWFraW5nIGEgY29uZmlnIGZpbGUgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICAjIGRlZmF1bHQgdXJsIHRvIGdldFxuIgoiICAgICAgICBodHRwOi8vaGVscC53aXRoLmN1cmwuY29tL2N1cmxoZWxwLmh0bWxcbiIKIlxuIgoiICBZb3UgY2FuIHNwZWNpZnkgYW5vdGhlciBjb25maWcgZmlsZSB0byBiZSByZWFkIGJ5IHVzaW5nIHRoZSAtSy8tLWNvbmZpZ1xuIgoiICBmbGFnLiBJZiB5b3Ugc2V0IGNvbmZpZyBmaWxlIG5hbWUgdG8gXCItXCIgaXQnbGwgcmVhZCB0aGUgY29uZmlnIGZyb20gc3RkaW4sXG4iCiIgIHdoaWNoIGNhbiBiZSBoYW5keSBpZiB5b3Ugd2FudCB0byBoaWRlIG9wdGlvbnMgZnJvbSBiZWluZyB2aXNpYmxlIGluIHByb2Nlc3NcbiIKIiAgdGFibGVzIGV0YzpcbiIKIlxuIgoiICAgICAgICBlY2hvIFwiLXUgdXNlcjpwYXNzd2RcIiB8IGN1cmwgLUsgLSBodHRwOi8vdGhhdC5zZWNyZXQuc2l0ZS5jb21cbiIKIlxuIgoiRVhUUkEgSEVBREVSU1xuIgoiXG4iCiIgIFdoZW4gdXNpbmcgY3VybCBpbiB5b3VyIG93biB2ZXJ5IHNwZWNpYWwgcHJvZ3JhbXMsIHlvdSBtYXkgZW5kIHVwIG5lZWRpbmdcbiIKIiAgdG8gcGFzcyBvbiB5b3VyIG93biBjdXN0b20gaGVhZGVycyB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91IGNhbiBkb1xuIgoiICB0aGlzIGJ5IHVzaW5nIHRoZSAtSCBmbGFnLlxuIgoiXG4iCiIgIEV4YW1wbGUsIHNlbmQgdGhlIGhlYWRlciBcIlgteW91LWFuZC1tZTogeWVzXCIgdG8gdGhlIHNlcnZlciB3aGVuIGdldHRpbmcgYVxuIgoiICBwYWdlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUggXCJYLXlvdS1hbmQtbWU6IHllc1wiIHd3dy5sb3ZlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIGFsc28gYmUgdXNlZnVsIGluIGNhc2UgeW91IHdhbnQgY3VybCB0byBzZW5kIGEgZGlmZmVyZW50IHRleHQgaW5cbiIKIiAgYSBoZWFkZXIgdGhhbiBpdCBub3JtYWxseSBkb2VzLiBUaGUgLUggaGVhZGVyIHlvdSBzcGVjaWZ5IHRoZW4gcmVwbGFjZXMgdGhlXG4iCiIgIGhlYWRlciBjdXJsIHdvdWxkIG5vcm1hbGx5IHNlbmQuXG4iCiJcbiIKIkZUUCBhbmQgUEFUSCBOQU1FU1xuIgoiXG4iCiIgIERvIG5vdGUgdGhhdCB3aGVuIGdldHRpbmcgZmlsZXMgd2l0aCB0aGUgZnRwOi8vIFVSTCwgdGhlIGdpdmVuIHBhdGggaXNcbiIKIiAgcmVsYXRpdmUgdGhlIGRpcmVjdG9yeSB5b3UgZW50ZXIuIFRvIGdldCB0aGUgZmlsZSAnUkVBRE1FJyBmcm9tIHlvdXIgaG9tZVxuIgoiICBkaXJlY3RvcnkgYXQgeW91ciBmdHAgc2l0ZSwgZG86XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS9SRUFETUVcbiIKIlxuIgoiICBCdXQgaWYgeW91IHdhbnQgdGhlIFJFQURNRSBmaWxlIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoYXQgdmVyeSBzYW1lXG4iCiIgIHNpdGUsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIGFic29sdXRlIGZpbGUgbmFtZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cDovL3VzZXI6cGFzc3dkQG15LnNpdGUuY29tLy9SRUFETUVcbiIKIlxuIgoiICAoSS5lIHdpdGggYW4gZXh0cmEgc2xhc2ggaW4gZnJvbnQgb2YgdGhlIGZpbGUgbmFtZS4pXG4iCiJcbiIKIkZUUCBhbmQgZmlyZXdhbGxzXG4iCiJcbiIKIiAgVGhlIEZUUCBwcm90b2NvbCByZXF1aXJlcyBvbmUgb2YgdGhlIGludm9sdmVkIHBhcnRpZXMgdG8gb3BlbiBhIHNlY29uZFxuIgoiICBjb25uY3Rpb24gYXMgc29vbiBhcyBkYXRhIGlzIGFib3V0IHRvIGdldCB0cmFuc2ZlcmVkLiBUaGVyZSBhcmUgdHdvIHdheXMgdG9cbiIKIiAgZG8gdGhpcy5cbiIKIlxuIgoiICBUaGUgZGVmYXVsdCB3YXkgZm9yIGN1cmwgaXMgdG8gaXNzdWUgdGhlIFBBU1YgY29tbWFuZCB3aGljaCBjYXVzZXMgdGhlXG4iCiIgIHNlcnZlciB0byBvcGVuIGFub3RoZXIgcG9ydCBhbmQgYXdhaXQgYW5vdGhlciBjb25uZWN0aW9uIHBlcmZvcm1lZCBieSB0aGVcbiIKIiAgY2xpZW50LiBUaGlzIGlzIGdvb2QgaWYgdGhlIGNsaWVudCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93XG4iCiIgIGluY29taW5nIGNvbm5lY3Rpb25zLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIElmIHRoZSBzZXJ2ZXIgZm9yIGV4YW1wbGUsIGlzIGJlaGluZCBhIGZpcmV3YWxsIHRoYXQgZG9uJ3QgYWxsb3cgY29ubmVjdGlvbnNcbiIKIiAgb24gb3RoZXIgcG9ydHMgdGhhbiAyMSAob3IgaWYgaXQganVzdCBkb2Vzbid0IHN1cHBvcnQgdGhlIFBBU1YgY29tbWFuZCksIHRoZVxuIgoiICBvdGhlciB3YXkgdG8gZG8gaXQgaXMgdG8gdXNlIHRoZSBQT1JUIGNvbW1hbmQgYW5kIGluc3RydWN0IHRoZSBzZXJ2ZXIgdG9cbiIKIiAgY29ubmVjdCB0byB0aGUgY2xpZW50IG9uIHRoZSBnaXZlbiAoYXMgcGFyYW1ldGVycyB0byB0aGUgUE9SVCBjb21tYW5kKSBJUFxuIgoiICBudW1iZXIgYW5kIHBvcnQuXG4iCiJcbiIKIiAgVGhlIC1QIGZsYWcgdG8gY3VybCBhbGxvd3MgZm9yIGRpZmZlcmVudCBvcHRpb25zLiBZb3VyIG1hY2hpbmUgbWF5IGhhdmVcbiIKIiAgc2V2ZXJhbCBJUC1hZGRyZXNzZXMgYW5kL29yIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgY3VybCBhbGxvd3MgeW91IHRvIHNlbGVjdFxuIgoiICB3aGljaCBvZiB0aGVtIHRvIHVzZS4gRGVmYXVsdCBhZGRyZXNzIGNhbiBhbHNvIGJlIHVzZWQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtUCAtIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBEb3dubG9hZCB3aXRoIFBPUlQgYnV0IHVzZSB0aGUgSVAgYWRkcmVzcyBvZiBvdXIgJ2xlMCcgaW50ZXJmYWNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgbGUwIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBEb3dubG9hZCB3aXRoIFBPUlQgYnV0IHVzZSAxOTIuMTY4LjAuMTAgYXMgb3VyIElQIGFkZHJlc3MgdG8gdXNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVAgMTkyLjE2OC4wLjEwIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiSFRUUFNcbiIKIlxuIgoiICBTZWN1cmUgSFRUUCByZXF1aXJlcyBTU0wgbGlicmFyaWVzIHRvIGJlIGluc3RhbGxlZCBhbmQgdXNlZCB3aGVuIGN1cmwgaXNcbiIKIiAgYnVpbHQuIElmIHRoYXQgaXMgZG9uZSwgY3VybCBpcyBjYXBhYmxlIG9mIHJldHJpZXZpbmcgYW5kIHBvc3RpbmcgZG9jdW1lbnRzXG4iCiIgIHVzaW5nIHRoZSBIVFRQUyBwcm9jb3RvbC5cbiIKIlxuIgoiICBFeGFtcGxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgaHR0cHM6Ly93d3cuc2VjdXJlLXNpdGUuY29tXG4iCiJcbiIKIiAgQ3VybCBpcyBhbHNvIGNhcGFibGUgb2YgdXNpbmcgeW91ciBwZXJzb25hbCBjZXJ0aWZpY2F0ZXMgdG8gZ2V0L3Bvc3QgZmlsZXNcbiIKIiAgZnJvbSBzaXRlcyB0aGF0IHJlcXVpcmUgdmFsaWQgY2VydGlmaWNhdGVzLiBUaGUgb25seSBkcmF3YmFjayBpcyB0aGF0IHRoZVxuIgoiICBjZXJ0aWZpY2F0ZSBuZWVkcyB0byBiZSBpbiBQRU0tZm9ybWF0LiBQRU0gaXMgYSBzdGFuZGFyZCBhbmQgb3BlbiBmb3JtYXQgdG9cbiIKIiAgc3RvcmUgY2VydGlmaWNhdGVzIHdpdGgsIGJ1dCBpdCBpcyBub3QgdXNlZCBieSB0aGUgbW9zdCBjb21tb25seSB1c2VkXG4iCiIgIGJyb3dzZXJzIChOZXRzY2FwZSBhbmQgTVNFSSBib3RoIHVzZSB0aGUgc28gY2FsbGVkIFBLQ1MjMTIgZm9ybWF0KS4gSWYgeW91XG4iCiIgIHdhbnQgY3VybCB0byB1c2UgdGhlIGNlcnRpZmljYXRlcyB5b3UgdXNlIHdpdGggeW91ciAoZmF2b3VyaXRlKSBicm93c2VyLCB5b3VcbiIKIiAgbWF5IG5lZWQgdG8gZG93bmxvYWQvY29tcGlsZSBhIGNvbnZlcnRlciB0aGF0IGNhbiBjb252ZXJ0IHlvdXIgYnJvd3NlcidzXG4iCiIgIGZvcm1hdHRlZCBjZXJ0aWZpY2F0ZXMgdG8gUEVNIGZvcm1hdHRlZCBvbmVzLiBUaGlzIGtpbmQgb2YgY29udmVydGVyIGlzXG4iCiIgIGluY2x1ZGVkIGluIHJlY2VudCB2ZXJzaW9ucyBvZiBPcGVuU1NMLCBhbmQgZm9yIG9sZGVyIHZlcnNpb25zIERyIFN0ZXBoZW5cbiIKIiAgTi4gSGVuc29uIGhhcyB3cml0dGVuIGEgcGF0Y2ggZm9yIFNTTGVheSB0aGF0IGFkZHMgdGhpcyBmdW5jdGlvbmFsaXR5LiBZb3VcbiIKIiAgY2FuIGdldCBoaXMgcGF0Y2ggKHRoYXQgcmVxdWlyZXMgYW4gU1NMZWF5IGluc3RhbGxhdGlvbikgZnJvbSBoaXMgc2l0ZSBhdDpcbiIKIiAgaHR0cDovL3d3dy5kcmgtY29uc3VsdGFuY3kuZGVtb24uY28udWsvXG4iCiJcbiIKIiAgRXhhbXBsZSBvbiBob3cgdG8gYXV0b21hdGljYWxseSByZXRyaWV2ZSBhIGRvY3VtZW50IHVzaW5nIGEgY2VydGlmaWNhdGUgd2l0aFxuIgoiICBhIHBlcnNvbmFsIHBhc3N3b3JkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUUgL3BhdGgvdG8vY2VydC5wZW06cGFzc3dvcmQgaHR0cHM6Ly9zZWN1cmUuc2l0ZS5jb20vXG4iCiJcbiIKIiAgSWYgeW91IG5lZ2xlY3QgdG8gc3BlY2lmeSB0aGUgcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZSwgeW91IHdpbGwgYmVcbiIKIiAgcHJvbXB0ZWQgZm9yIHRoZSBjb3JyZWN0IHBhc3N3b3JkIGJlZm9yZSBhbnkgZGF0YSBjYW4gYmUgcmVjZWl2ZWQuXG4iCiJcbiIKIiAgTWFueSBvbGRlciBTU0wtc2VydmVycyBoYXZlIHByb2JsZW1zIHdpdGggU1NMdjMgb3IgVExTLCB0aGF0IG5ld2VyIHZlcnNpb25zXG4iCiIgIG9mIE9wZW5TU0wgZXRjIGlzIHVzaW5nLCB0aGVyZWZvcmUgaXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBzcGVjaWZ5IHdoYXRcbiIKIiAgU1NMLXZlcnNpb24gY3VybCBzaG91bGQgdXNlLiBVc2UgLTMgb3IgLTIgdG8gc3BlY2lmeSB0aGF0IGV4YWN0IFNTTCB2ZXJzaW9uXG4iCiIgIHRvIHVzZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0yIGh0dHBzOi8vc2VjdXJlLnNpdGUuY29tL1xuIgoiXG4iCiIgIE90aGVyd2lzZSwgY3VybCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8gdXNlIHYzIGFuZCB0aGVuIHYyLlxuIgoiXG4iCiIgIFRvIHVzZSBPcGVuU1NMIHRvIGNvbnZlcnQgeW91ciBmYXZvdXJpdGUgYnJvd3NlcidzIGNlcnRpZmljYXRlIGludG8gYSBQRU1cbiIKIiAgZm9ybWF0dGVkIG9uZSB0aGF0IGN1cmwgY2FuIHVzZSwgZG8gc29tZXRoaW5nIGxpa2UgdGhpcyAoYXNzdW1pbmcgbmV0c2NhcGUsXG4iCiIgIGJ1dCBJRSBpcyBsaWtlbHkgdG8gd29yayBzaW1pbGFybHkpOlxuIgoiXG4iCiIgICAgWW91IHN0YXJ0IHdpdGggaGl0dGluZyB0aGUgJ3NlY3VyaXR5JyBtZW51IGJ1dHRvbiBpbiBuZXRzY2FwZS4gXG4iCiJcbiIKIiAgICBTZWxlY3QgJ2NlcnRpZmljYXRlcy0+eW91cnMnIGFuZCB0aGVuIHBpY2sgYSBjZXJ0aWZpY2F0ZSBpbiB0aGUgbGlzdCBcbiIKIlxuIgoiICAgIFByZXNzIHRoZSAnZXhwb3J0JyBidXR0b24gXG4iCiJcbiIKIiAgICBlbnRlciB5b3VyIFBJTiBjb2RlIGZvciB0aGUgY2VydHMgXG4iCiJcbiIKIiAgICBzZWxlY3QgYSBwcm9wZXIgcGxhY2UgdG8gc2F2ZSBpdCBcbiIKIlxuIgoiICAgIFJ1biB0aGUgJ29wZW5zc2wnIGFwcGxpY2F0aW9uIHRvIGNvbnZlcnQgdGhlIGNlcnRpZmljYXRlLiBJZiB5b3UgY2QgdG8gdGhlXG4iCiIgICAgb3BlbnNzbCBpbnN0YWxsYXRpb24sIHlvdSBjYW4gZG8gaXQgbGlrZTpcbiIKIlxuIgoiICAgICAjIC4vYXBwcy9vcGVuc3NsIHBrY3MxMiAtY2VydGZpbGUgW2ZpbGUgeW91IHNhdmVkXSAtb3V0IFtQRU1maWxlXVxuIgoiXG4iCiJcbiIKIlJFU1VNSU5HIEZJTEUgVFJBTlNGRVJTXG4iCiJcbiIKIiBUbyBjb250aW51ZSBhIGZpbGUgdHJhbnNmZXIgd2hlcmUgaXQgd2FzIHByZXZpb3VzbHkgYWJvcnRlZCwgY3VybCBzdXBwb3J0c1xuIgoiIHJlc3VtZSBvbiBodHRwKHMpIGRvd25sb2FkcyBhcyB3ZWxsIGFzIGZ0cCB1cGxvYWRzIGFuZCBkb3dubG9hZHMuXG4iCiJcbiIKIiBDb250aW51ZSBkb3dubG9hZGluZyBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIHVwbG9hZGluZyBhIGRvY3VtZW50KCoxKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1UIGZpbGUgZnRwOi8vZnRwLnNlcnZlci5jb20vcGF0aC9maWxlXG4iCiJcbiIKIiBDb250aW51ZSBkb3dubG9hZGluZyBhIGRvY3VtZW50IGZyb20gYSB3ZWIgc2VydmVyKCoyKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1jIC1vIGZpbGUgaHR0cDovL3d3dy5zZXJ2ZXIuY29tL1xuIgoiXG4iCiIgKCoxKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgZnRwIHNlcnZlciBzdXBwb3J0cyB0aGUgbm9uLXN0YW5kYXJkIGNvbW1hbmRcbiIKIiAgICAgICAgU0laRS4gSWYgaXQgZG9lc24ndCwgY3VybCB3aWxsIHNheSBzby5cbiIKIlxuIgoiICgqMikgPSBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIHdiIHNlcnZlciBzdXBwb3J0cyBhdCBsZWFzdCBIVFRQLzEuMS4gSWYgaXRcbiIKIiAgICAgICAgZG9lc24ndCwgY3VybCB3aWxsIHNheSBzby5cbiIKIlxuIgoiVElNRSBDT05ESVRJT05TXG4iCiJcbiIKIiBIVFRQIGFsbG93cyBhIGNsaWVudCB0byBzcGVjaWZ5IGEgdGltZSBjb25kaXRpb24gZm9yIHRoZSBkb2N1bWVudCBpdFxuIgopOwogcHV0cygKIiByZXF1ZXN0cy4gSXQgaXMgSWYtTW9kaWZpZWQtU2luY2Ugb3IgSWYtVW5tb2RpZmllZC1TaW5jZS4gQ3VybCBhbGxvdyB5b3UgdG9cbiIKIiBzcGVjaWZ5IHRoZW0gd2l0aCB0aGUgLXovLS10aW1lLWNvbmQgZmxhZy5cbiIKIlxuIgoiIEZvciBleGFtcGxlLCB5b3UgY2FuIGVhc2lseSBtYWtlIGEgZG93bmxvYWQgdGhhdCBvbmx5IGdldHMgcGVyZm9ybWVkIGlmIHRoZVxuIgoiIHJlbW90ZSBmaWxlIGlzIG5ld2VyIHRoYW4gYSBsb2NhbCBjb3B5LiBJdCB3b3VsZCBiZSBtYWRlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiBsb2NhbC5odG1sIGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgT3IgeW91IGNhbiBkb3dubG9hZCBhIGZpbGUgb25seSBpZiB0aGUgbG9jYWwgZmlsZSBpcyBuZXdlciB0aGFuIHRoZSByZW1vdGVcbiIKIiBvbmUuIERvIHRoaXMgYnkgcHJlcGVuZGluZyB0aGUgZGF0ZSBzdHJpbmcgd2l0aCBhICctJywgYXMgaW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteiAtbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIFlvdSBjYW4gc3BlY2lmeSBhIFwiZnJlZSB0ZXh0XCIgZGF0ZSBhcyBjb25kaXRpb24uIFRlbGwgY3VybCB0byBvbmx5IGRvd25sb2FkXG4iCiIgdGhlIGZpbGUgaWYgaXQgd2FzIHVwZGF0ZWQgc2luY2UgeWVzdGVyZGF5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogeWVzdGVyZGF5IGh0dHA6Ly9yZW1vdGUuc2VydmVyLmNvbS9yZW1vdGUuaHRtbFxuIgoiXG4iCiIgQ3VybCB3aWxsIHRoZW4gYWNjZXB0IGEgd2lkZSByYW5nZSBvZiBkYXRlIGZvcm1hdHMuIFlvdSBhbHdheXMgbWFrZSB0aGUgZGF0ZVxuIgoiIGNoZWNrIHRoZSBvdGhlciB3YXkgYXJvdW5kIGJ5IHByZXBlbmRpbmcgaXQgd2l0aCBhIGRhc2ggJy0nLlxuIgoiXG4iCiJESUNUXG4iCiJcbiIKIiAgRm9yIGZ1biB0cnlcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9tOmN1cmxcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZDpoZWlzZW5idWc6amFyZ29uXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6ZGFuaWVsOndlYjE5MTNcbiIKIlxuIgoiICBBbGlhc2VzIGZvciAnbScgYXJlICdtYXRjaCcgYW5kICdmaW5kJywgYW5kIGFsaWFzZXMgZm9yICdkJyBhcmUgJ2RlZmluZSdcbiIKIiAgYW5kICdsb29rdXAnLiBGb3IgZXhhbXBsZSxcbiIKIlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9maW5kOmN1cmxcbiIKIlxuIgoiICBDb21tYW5kcyB0aGF0IGJyZWFrIHRoZSBVUkwgZGVzY3JpcHRpb24gb2YgdGhlIFJGQyAoYnV0IG5vdCB0aGUgRElDVFxuIgoiICBwcm90b2NvbCkgYXJlXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpkYlxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9zaG93OnN0cmF0XG4iCiJcbiIKIiAgQXV0aGVudGljYXRpb24gaXMgc3RpbGwgbWlzc2luZyAoYnV0IHRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBSRkMpXG4iCiJcbiIKIkxEQVBcbiIKIlxuIgoiICBJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIE9wZW5MREFQIGxpYnJhcnksIGN1cmwgY2FuIHRha2UgYWR2YW50YWdlIG9mIGl0XG4iCiIgIGFuZCBvZmZlciBsZGFwOi8vIHN1cHBvcnQuXG4iCiJcbiIKIiAgTERBUCBpcyBhIGNvbXBsZXggdGhpbmcgYW5kIHdyaXRpbmcgYW4gTERBUCBxdWVyeSBpcyBub3QgYW4gZWFzeSB0YXNrLiBJIGRvXG4iCiIgIGFkdmljZSB5b3UgdG8gZGlnIHVwIHRoZSBzeW50YXggZGVzY3JpcHRpb24gZm9yIHRoYXQgZWxzZXdoZXJlLCBSRkMgMTk1OSBpZlxuIgoiICBubyBvdGhlciBwbGFjZSBpcyBiZXR0ZXIuXG4iCiJcbiIKIiAgVG8gc2hvdyB5b3UgYW4gZXhhbXBsZSwgdGhpcyBpcyBub3cgSSBjYW4gZ2V0IGFsbCBwZW9wbGUgZnJvbSBteSBsb2NhbCBMREFQXG4iCiIgIHNlcnZlciB0aGF0IGhhcyBhIGNlcnRhaW4gc3ViLWRvbWFpbiBpbiB0aGVpciBlbWFpbCBhZGRyZXNzOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUIgXCJsZGFwOi8vbGRhcC5mcm9udGVjLnNlL289ZnJvbnRlYz8/c3ViP21haWw9KnN0aC5mcm9udGVjLnNlXCJcbiIKIlxuIgoiICBJZiBJIHdhbnQgdGhlIHNhbWUgaW5mbyBpbiBIVE1MIGZvcm1hdCwgSSBjYW4gZ2V0IGl0IGJ5IG5vdCB1c2luZyB0aGUgLUJcbiIKIiAgKGVuZm9yY2UgQVNDSUkpIGZsYWcuXG4iCiJcbiIKIkVOVklST05NRU5UIFZBUklBQkxFU1xuIgoiXG4iCiIgIEN1cmwgcmVhZHMgYW5kIHVuZGVyc3RhbmRzIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzOlxuIgoiXG4iCiIgICAgICAgIEhUVFBfUFJPWFksIEhUVFBTX1BST1hZLCBGVFBfUFJPWFksIEdPUEhFUl9QUk9YWVxuIgoiXG4iCiIgIFRoZXkgc2hvdWxkIGJlIHNldCBmb3IgcHJvdG9jb2wtc3BlY2lmaWMgcHJveGllcy4gR2VuZXJhbCBwcm94eSBzaG91bGQgYmVcbiIKIiAgc2V0IHdpdGhcbiIKIiAgICAgICAgXG4iCiIgICAgICAgIEFMTF9QUk9YWVxuIgoiXG4iCiIgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaG9zdCBuYW1lcyB0aGF0IHNob3VsZG4ndCBnbyB0aHJvdWdoIGFueSBwcm94eSBpc1xuIgoiICBzZXQgaW4gKG9ubHkgYW4gYXN0ZXJpc2ssICcqJyBtYXRjaGVzIGFsbCBob3N0cylcbiIKIlxuIgoiICAgICAgICBOT19QUk9YWVxuIgoiXG4iCiIgIElmIGEgdGFpbCBzdWJzdHJpbmcgb2YgdGhlIGRvbWFpbi1wYXRoIGZvciBhIGhvc3QgbWF0Y2hlcyBvbmUgb2YgdGhlc2VcbiIKIiAgc3RyaW5ncywgdHJhbnNhY3Rpb25zIHdpdGggdGhhdCBub2RlIHdpbGwgbm90IGJlIHByb3hpZWQuXG4iCiJcbiIKIlxuIgoiICBUaGUgdXNhZ2Ugb2YgdGhlIC14Ly0tcHJveHkgZmxhZyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiIKIlxuIgoiTkVUUkNcbiIKIlxuIgoiICBVbml4IGludHJvZHVjZWQgdGhlIC5uZXRyYyBjb25jZXB0IGEgbG9uZyB0aW1lIGFnby4gSXQgaXMgYSB3YXkgZm9yIGEgdXNlclxuIgoiICB0byBzcGVjaWZ5IG5hbWUgYW5kIHBhc3N3b3JkIGZvciBjb21tb25seSB2aXNpdGVkIGZ0cCBzaXRlcyBpbiBhIGZpbGUgc29cbiIKIiAgdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byB0eXBlIHRoZW0gaW4gZWFjaCB0aW1lIHlvdSB2aXNpdCB0aG9zZSBzaXRlcy4gWW91XG4iCiIgIHJlYWxpemUgdGhpcyBpcyBhIGJpZyBzZWN1cml0eSByaXNrIGlmIHNvbWVvbmUgZWxzZSBnZXRzIGhvbGQgb2YgeW91clxuIgoiICBwYXNzd29yZHMsIHNvIHRoZXJlZm9yIG1vc3QgdW5peCBwcm9ncmFtcyB3b24ndCByZWFkIHRoaXMgZmlsZSB1bmxlc3MgaXQgaXNcbiIKIiAgb25seSByZWFkYWJsZSBieSB5b3Vyc2VsZiAoY3VybCBkb2Vzbid0IGNhcmUgdGhvdWdoKS5cbiIKIlxuIgoiICBDdXJsIHN1cHBvcnRzIC5uZXRyYyBmaWxlcyBpZiB0b2xkIHNvICh1c2luZyB0aGUgLW4vLS1uZXRyYyBvcHRpb24pLiBUaGlzIGlzXG4iCiIgIG5vdCByZXN0cmljdGVkIHRvIG9ubHkgZnRwLCBidXQgY3VybCBjYW4gdXNlIGl0IGZvciBhbGwgcHJvdG9jb2xzIHdoZXJlXG4iCiIgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuXG4iCiJcbiIKIiAgQSB2ZXJ5IHNpbXBsZSAubmV0cmMgZmlsZSBjb3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOlxuIgoiXG4iCiIgICAgICAgIG1hY2hpbmUgY3VybC5oYXh4LnNlIGxvZ2luIGlhbWRhbmllbCBwYXNzd29yZCBteXNlY3JldFxuIgoiXG4iCiJDVVNUT00gT1VUUFVUXG4iCiJcbiIKIiAgVG8gYmV0dGVyIGFsbG93IHNjcmlwdCBwcm9ncmFtbWVycyB0byBnZXQgdG8ga25vdyBhYm91dCB0aGUgcHJvZ3Jlc3Mgb2ZcbiIKIiAgY3VybCwgdGhlIC13Ly0td3JpdGUtb3V0IG9wdGlvbiB3YXMgaW50cm9kdWNlZC4gVXNpbmcgdGhpcywgeW91IGNhbiBzcGVjaWZ5XG4iCiIgIHdoYXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgcHJldmlvdXMgdHJhbnNmZXIgeW91IHdhbnQgdG8gZXh0cmFjdC5cbiIKIlxuIgoiICBUbyBkaXNwbGF5IHRoZSBhbW91bnQgb2YgYnl0ZXMgZG93bmxvYWRlZCB0b2dldGhlciB3aXRoIHNvbWUgdGV4dCBhbmQgYW5cbiIKIiAgZW5kaW5nIG5ld2xpbmU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtdyAnV2UgZG93bmxvYWRlZCAle3NpemVfZG93bmxvYWR9IGJ5dGVzXFxuJyB3d3cuZG93bmxvYWQuY29tXG4iCiJcbiIKIk1BSUxJTkcgTElTVFxuIgoiXG4iCiIgIFdlIGhhdmUgYW4gb3BlbiBtYWlsaW5nIGxpc3QgdG8gZGlzY3VzcyBjdXJsLCBpdHMgZGV2ZWxvcG1lbnQgYW5kIHRoaW5nc1xuIgoiICByZWxldmFudCB0byB0aGlzLlxuIgoiXG4iCiIgIFRvIHN1YnNjcmliZSwgbWFpbCBjdXJsLXJlcXVlc3RAY29udGFjdG9yLnNlIHdpdGggXCJzdWJzY3JpYmUgPHlvdXIgZW1haWxcbiIKIiAgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgoiICBUbyBwb3N0IHRvIHRoZSBsaXN0LCBtYWlsIGN1cmxAY29udGFjdG9yLnNlLlxuIgoiXG4iCiIgIFRvIHVuc3ViY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwidW5zdWJzY3JpYmUgPHlvdXJcbiIKIiAgc3Vic2NyaWJlZCBlbWFpbCBhZGRyZXNzPlwiIGluIHRoZSBib2R5LlxuIgoiXG4iCiApIDsKfQo=