LyogTkVWRVIgRVZFUiBlZGl0IHRoaXMgbWFudWFsbHksIGZpeCB0aGUgbWtoZWxwIHNjcmlwdCBpbnN0ZWFkISAqLwojaW5jbHVkZSA8c3RkaW8uaD4Kdm9pZCBodWdlaGVscCh2b2lkKQp7CnB1dHMgKAoiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIFxuIgoiICBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgX19ffCB8IHwgfCAgXyBcXHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXyBcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX198XFxfX18vfF98IFxcX1xcX19fX198XG4iCiJOQU1FXG4iCiIgICAgIGN1cmwgLSBnZXQgYSBVUkwgd2l0aCBGVFAsIFRFTE5FVCwgTERBUCwgR09QSEVSLCBESUNULCBGSUxFLFxuIgoiICAgICBIVFRQIG9yIEhUVFBTIHN5bnRheC5cbiIKIlxuIgoiU1lOT1BTSVNcbiIKIiAgICAgY3VybCBbb3B0aW9uc10gdXJsXG4iCiJcbiIKIkRFU0NSSVBUSU9OXG4iCiIgICAgIGN1cmwgaXMgYSBjbGllbnQgdG8gZ2V0IGRvY3VtZW50cy9maWxlcyBmcm9tIHNlcnZlcnMsICB1c2luZ1xuIgoiICAgICBhbnkgIG9mICB0aGUgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGNvbW1hbmQgaXMgZGVzaWduZWQgdG9cbiIKIiAgICAgd29yayB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24gb3IgYW55IGtpbmQgb2YgIGludGVyYWN0aXZpdHkuXG4iCiJcbiIKIiAgICAgY3VybCAgb2ZmZXJzICBhIGJ1c2xvYWQgb2YgdXNlZnVsIHRyaWNrcyBsaWtlIHByb3h5IHN1cHBvcnQsXG4iCiIgICAgIHVzZXIgYXV0aGVudGljYXRpb24sIGZ0cCB1cGxvYWQsICBIVFRQICBwb3N0LCAgU1NMICAoaHR0cHM6KVxuIgoiICAgICBjb25uZWN0aW9ucywgY29va2llcywgZmlsZSB0cmFuc2ZlciByZXN1bWUgYW5kIG1vcmUuXG4iCiJcbiIKIlVSTFxuIgoiICAgICBUaGUgVVJMIHN5bnRheCBpcyBwcm90b2NvbCBkZXBlbmRlbnQuIFlvdSdsbCBmaW5kIGEgZGV0YWlsZWRcbiIKIiAgICAgZGVzY3JpcHRpb24gaW4gUkZDIDIzOTYuXG4iCiJcbiIKIiAgICAgWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIFVSTHMgb3IgcGFydHMgb2YgIFVSTHMgIGJ5ICB3cml0aW5nXG4iCiIgICAgIHBhcnQgc2V0cyB3aXRoaW4gYnJhY2VzIGFzIGluOlxuIgoiXG4iCiIgICAgICBodHRwOi8vc2l0ZS57b25lLHR3byx0aHJlZX0uY29tXG4iCiJcbiIKIiAgICAgb3IgIHlvdSBjYW4gZ2V0IHNlcXVlbmNlcyBvZiBhbHBoYW51bWVyaWMgc2VyaWVzIGJ5IHVzaW5nIFtdXG4iCiIgICAgIGFzIGluOlxuIgoiXG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVsxLTEwMF0udHh0XG4iCiIgICAgICBmdHA6Ly9mdHAubnVtZXJpY2Fscy5jb20vZmlsZVswMDEtMTAwXS50eHQgICAgKHdpdGggbGVhZGluZ1xuIgoiICAgICB6ZXJvcylcbiIKIiAgICAgIGZ0cDovL2Z0cC5sZXR0ZXJzLmNvbS9maWxlW2Etel0udHh0XG4iCiJcbiIKIiAgICAgSXQgIGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdXAgdG8gOSBzZXRzIG9yIHNlcmllcyBmb3IgYSBVUkwsXG4iCiIgICAgIGJ1dCBubyBuZXN0aW5nIGlzIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50OlxuIgoiXG4iCiIgICAgICBodHRwOi8vd3d3LmFueS5vcmcvYXJjaGl2ZVsxOTk2LTE5OTldL3ZvbK1cbiIKIiAgICAgdW1lWzEtNF1wYXJ0e2EsYixjLGluZGV4fS5odG1sXG4iCiJcbiIKIk9QVElPTlNcbiIKIiAgICAgLWEvLS1hcHBlbmRcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIHVzZWQgaW4gYSBmdHAgdXBsb2FkLCB0aGlzIHdpbGwgdGVsbCBjdXJsIHRvXG4iCiIgICAgICAgICAgYXBwZW5kIHRvIHRoZSB0YXJnZXQgZmlsZSBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIGl0LiBJZlxuIgoiICAgICAgICAgIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiIKIlxuIgoiICAgICAgICAgIElmICB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIG9uZSB3aWxsIGRpc61cbiIKIiAgICAgICAgICBhYmxlIGFwcGVuZCBtb2RlIGFnYWluLlxuIgoiXG4iCiIgICAgIC1BLy0tdXNlci1hZ2VudCA8YWdlbnQgc3RyaW5nPlxuIgoiICAgICAgICAgIChIVFRQKSBTcGVjaWZ5IHRoZSBVc2VyLUFnZW50IHN0cmluZyAgdG8gIHNlbmQgIHRvICB0aGVcbiIKIiAgICAgICAgICBIVFRQICBzZXJ2ZXIuICBTb21lIGJhZGx5IGRvbmUgQ0dJcyBmYWlsIGlmIGl0cyBub3Qgc2V0XG4iCiIgICAgICAgICAgdG8gXCJNb3ppbGxhLzQuMFwiLiAgVG8gIGVuY29kZSAgYmxhbmtzICBpbiAgdGhlICBzdHJpbmcsXG4iCiIgICAgICAgICAgc3Vycm91bmQgIHRoZSBzdHJpbmcgd2l0aCBzaW5nbGUgcXVvdGUgbWFya3MuICBUaGlzIGNhblxuIgoiICAgICAgICAgIGFsc28gYmUgc2V0IHdpdGggdGhlIC1ILy0taGVhZGVyIGZsYWcgb2YgY291cnNlLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBtb3JlIHRoYW4gIG9uY2UsICB0aGUgIGxhc3QgIG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdGhlIG9uZSB0byBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1iLy0tY29va2llIDxuYW1lPWRhdGE+XG4iCiIgICAgICAgICAgKEhUVFApIFBhc3MgdGhlIGRhdGEgdG8gdGhlIEhUVFAgc2VydmVyIGFzIGEgY29va2llLiBJdFxuIgoiICAgICAgICAgIGlzIHN1cHBvc2VkbHkgdGhlIGRhdGEgIHByZXZpb3VzbHkgIHJlY2VpdmVkICBmcm9tICB0aGVcbiIKIiAgICAgICAgICBzZXJ2ZXIgIGluIGEgXCJTZXQtQ29va2llOlwiIGxpbmUuICBUaGUgZGF0YSBzaG91bGQgYmUgaW5cbiIKIiAgICAgICAgICB0aGUgZm9ybWF0IFwiTkFNRTE9VkFMVUUxOyBOQU1FMj1WQUxVRTJcIi5cbiIKIlxuIgoiICAgICAgICAgIElmIG5vICc9JyBsZXR0ZXIgaXMgdXNlZCBpbiB0aGUgbGluZSwgaXQgaXMgdHJlYXRlZCAgYXNcbiIKIiAgICAgICAgICBhICBmaWxlbmFtZSAgdG8gIHVzZSAgdG8gIHJlYWQgcHJldmlvdXNseSBzdG9yZWQgY29va2llXG4iCiIgICAgICAgICAgbGluZXMgZnJvbSwgd2hpY2ggc2hvdWxkIGJlIHVzZWQgIGluICB0aGlzICBzZXNzaW9uICBpZlxuIgoiICAgICAgICAgIHRoZXkgIG1hdGNoLiAgVXNpbmcgIHRoaXMgIG1ldGhvZCAgYWxzbyAgYWN0aXZhdGVzICB0aGVcbiIKIiAgICAgICAgICBcImNvb2tpZSBwYXJzZXJcIiB3aGljaCB3aWxsIG1ha2UgIGN1cmwgIHJlY29yZCAgaW5jb21pbmdcbiIKIiAgICAgICAgICBjb29raWVzIHRvbywgd2hpY2ggbWF5IGJlIGhhbmR5IGlmIHlvdSdyZSB1c2luZyB0aGlzIGluXG4iCiIgICAgICAgICAgY29tYmluYXRpb24gd2l0aCB0aGUgIC1MLy0tbG9jYXRpb24gIG9wdGlvbi4gIFRoZSAgZmlsZVxuIgoiICAgICAgICAgIGZvcm1hdCBvZiB0aGUgZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBzaG91bGQgYmUgcGxhaW5cbiIKIiAgICAgICAgICBIVFRQIGhlYWRlcnMgb3IgdGhlIG5ldHNjYXBlIGNvb2tpZSBmaWxlIGZvcm1hdC5cbiIKIlxuIgoiICAgICAgICAgIE5PVEUgdGhhdCB0aGUgZmlsZSBzcGVjaWZpZWQgd2l0aCAtYi8tLWNvb2tpZSAgaXMgIG9ubHlcbiIKIiAgICAgICAgICB1c2VkICBhcyAgaW5wdXQuIE5vIGNvb2tpZXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGZpbGUuXG4iCiIgICAgICAgICAgVG8gc3RvcmUgY29va2llcywgc2F2ZSB0aGUgSFRUUCBoZWFkZXJzIHRvIGEgZmlsZSB1c2luZ1xuIgoiICAgICAgICAgIC1ELy0tZHVtcC1oZWFkZXIhXG4iCiJcbiIKIiAgICAgICAgICBJZiAgdGhpcyAgb3B0aW9uICBpcyAgdXNlZCBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB0aGUgb25lIHRvIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLUIvLS11c2UtYXNjaWlcbiIKIiAgICAgICAgICBVc2UgQVNDSUkgdHJhbnNmZXIgd2hlbiBnZXR0aW5nIGFuICBGVFAgIGZpbGUgIG9yICBMREFQXG4iCiIgICAgICAgICAgaW5mby4gIEZvciAgRlRQLCAgdGhpcyBjYW4gYWxzbyBiZSBlbmZvcmNlZCBieSB1c2luZyBhblxuIgoiICAgICAgICAgIFVSTCB0aGF0IGVuZHMgd2l0aCBcIjt0eXBlPUFcIi4gVGhpcyBvcHRpb24gIGNhdXNlcyAgZGF0YVxuIgoiICAgICAgICAgIHNlbnQgdG8gc3Rkb3V0IHRvIGJlIGluIHRleHQgbW9kZSBmb3Igd2luMzIgc3lzdGVtcy5cbiIKIlxuIgoiICAgICAgICAgIElmICB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIG9uZSB3aWxsIGRpc61cbiIKIiAgICAgICAgICBhYmxlIEFTQ0lJIHVzYWdlLlxuIgoiXG4iCiIgICAgIC1jLy0tY29udGludWVcbiIKIiAgICAgICAgICBEZXByZWNhdGVkLiBVc2UgJy1DIC0nIGluc3RlYWQuICBDb250aW51ZS9SZXN1bWUgYSBwcmWtXG4iCiIgICAgICAgICAgdmlvdXMgIGZpbGUgIHRyYW5zZmVyLiAgVGhpcyBpbnN0cnVjdHMgY3VybCB0byBjb250aW51ZVxuIgoiICAgICAgICAgIGFwcGVuZGluZyBkYXRhIG9uIHRoZSAgZmlsZSAgd2hlcmUgIGl0ICB3YXMgIHByZXZpb3VzbHlcbiIKIiAgICAgICAgICBsZWZ0LCAgcG9zc2libHkgIGJlY2F1c2UgIG9mIGEgYnJva2VuIGNvbm5lY3Rpb24gdG8gdGhlXG4iCiIgICAgICAgICAgc2VydmVyLiBUaGVyZSBtdXN0IGJlIGEgbmFtZWQgcGh5c2ljYWwgZmlsZSAgdG8gIGFwcGVuZFxuIgoiICAgICAgICAgIHRvICBmb3IgIHRoaXMgdG8gd29yay4gIE5vdGU6IFVwbG9hZCByZXN1bWUgaXMgZGVwZW5pbmdcbiIKIiAgICAgICAgICBvbiBhIGNvbW1hbmQgbmFtZWQgU0laRSBub3QgYWx3YXlzIHByZXNlbnQgaW4gIGFsbCAgZnRwXG4iCiIgICAgICAgICAgc2VydmVycyEgVXBsb2FkIHJlc3VtZSBpcyBmb3IgRlRQIG9ubHkuICBIVFRQIHJlc3VtZSBpc1xuIgoiICAgICAgICAgIG9ubHkgcG9zc2libGUgd2l0aCBIVFRQLzEuMSBvciBsYXRlciBzZXJ2ZXJzLlxuIgoiXG4iCiIgICAgIC1DLy0tY29udGludWUtYXQgPG9mZnNldD5cbiIKIiAgICAgICAgICBDb250aW51ZS9SZXN1bWUgYSBwcmV2aW91cyBmaWxlIHRyYW5zZmVyIGF0ICB0aGUgIGdpdmVuXG4iCiIgICAgICAgICAgb2Zmc2V0LiAgVGhlICBnaXZlbiBvZmZzZXQgaXMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlc1xuIgoiICAgICAgICAgIHRoYXQgd2lsbCBiZSBza2lwcGVkIGNvdW50ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mICB0aGVcbiIKIiAgICAgICAgICBzb3VyY2UgZmlsZSBiZWZvcmUgaXQgaXMgdHJhbnNmZXJlZCB0byB0aGUgZGVzdGluYXRpb24uXG4iCiIgICAgICAgICAgSWYgdXNlZCB3aXRoIHVwbG9hZHMsIHRoZSBmdHAgc2VydmVyIGNvbW1hbmQgU0laRSAgd2lsbFxuIgoiICAgICAgICAgIG5vdCAgYmUgIHVzZWQgIGJ5ICBjdXJsLiBVcGxvYWQgcmVzdW1lIGlzIGZvciBGVFAgb25seS5cbiIKIiAgICAgICAgICBIVFRQIHJlc3VtZSBpcyBvbmx5IHBvc3NpYmxlICB3aXRoICBIVFRQLzEuMSAgb3IgIGxhdGVyXG4iCiIgICAgICAgICAgc2VydmVycy5cbiIKIlxuIgoiICAgICAgICAgIElmICB0aGlzICBvcHRpb24gIGlzICB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLWQvLS1kYXRhIDxkYXRhPlxuIgoiICAgICAgICAgIChIVFRQKSBTZW5kcyB0aGUgc3BlY2lmaWVkIGRhdGEgaW4gYSAgUE9TVCAgcmVxdWVzdCAgdG9cbiIKIiAgICAgICAgICB0aGUgIEhUVFAgc2VydmVyLiBOb3RlIHRoYXQgdGhlIGRhdGEgaXMgc2VudCBleGFjdGx5IGFzXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIHdpdGggbm8gZXh0cmEgcHJvY2Vzc2luZyAod2l0aCAgYWxsICBuZXdsaW5lc1xuIgoiICAgICAgICAgIGN1dCAgb2ZmKS4gICBUaGUgIGRhdGEgaXMgZXhwZWN0ZWQgdG8gYmUgXCJ1cmwtZW5jb2RlZFwiLlxuIgoiICAgICAgICAgIFRoaXMgd2lsbCBjYXVzZSBjdXJsIHRvIHBhc3MgdGhlICBkYXRhICB0byAgdGhlICBzZXJ2ZXJcbiIKIiAgICAgICAgICB1c2luZyAgdGhlICBjb250ZW50LXR5cGUgIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW6tXG4iCiIgICAgICAgICAgY29kZWQuIENvbXBhcmUgdG8gLUYuIElmIG1vcmUgdGhhbiBvbmUgLWQvLS1kYXRhIG9wdGlvblxuIgoiICAgICAgICAgIGlzIHVzZWQgb24gdGhlIHNhbWUgY29tbWFuZCBsaW5lLCB0aGUgZGF0YSBwaWVjZXMgc3BlY61cbiIKIiAgICAgICAgICBpZmllZCB3aWxsIGJlIG1lcmdlZCB0b2dldGhlciB3aXRoIGEgc2VwYXJhdGluZyAgJi1sZXStXG4iCiIgICAgICAgICAgdGVyLiAgVGh1cywgdXNpbmcgJy1kIG5hbWU9ZGFuaWVsIC1kIHNraWxsPWxvdXN5JyB3b3VsZFxuIgoiICAgICAgICAgIGdlbmVyYXRlIGEgcG9zdCBjaHVuayB0aGF0IGxvb2tzIGxpa2VcbiIKIlxuIgoiICAgICAgICAgIElmIHlvdSBzdGFydCB0aGUgZGF0YSB3aXRoIHRoZSBsZXR0ZXIgQCwgdGhlIHJlc3RcbiIKIiAgICAgICAgICBzaG91bGQgYmUgYSBmaWxlIG5hbWUgdG8gcmVhZCB0aGUgZGF0YSBmcm9tLCBvciAtIGlmXG4iCiIgICAgICAgICAgeW91IHdhbnQgY3VybCB0byByZWFkIHRoZSBkYXRhIGZyb20gc3RkaW4uICBUaGUgY29urVxuIgoiICAgICAgICAgIHRlbnRzIG9mIHRoZSBmaWxlIG11c3QgYWxyZWFkeSBiZSB1cmwtZW5jb2RlZC4gTXVsdGlwbGVcbiIKIiAgICAgICAgICBmaWxlcyBjYW4gYWxzbyBiZSBzcGVjaWZpZWQuXG4iCiJcbiIKIiAgICAgICAgICBUbyBwb3N0IGRhdGEgcHVyZWx5IGJpbmFyeSwgeW91IHNob3VsZCBpbnN0ZWFkIHVzZSB0aGVcbiIKIiAgICAgICAgICAtLWRhdGEtYmluYXJ5IG9wdGlvbi5cbiIKIlxuIgoiICAgICAgICAgIC1kLy0tZGF0YSBpcyB0aGUgc2FtZSBhcyAtLWRhdGEtYXNjaWkuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLS1kYXRhLWFzY2lpIDxkYXRhPlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGlzIGFuIGFsaWFzIGZvciB0aGUgLWQvLS1kYXRhIG9wdGlvbi5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtLWRhdGEtYmluYXJ5IDxkYXRhPlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIHBvc3RzIGRhdGEgaW4gYSBzaW1pbGFyIG1hbm5lciBhcyAtLWRhdGEtXG4iCiIgICAgICAgICAgYXNjaWkgZG9lcywgYWx0aG91Z2ggd2hlbiB1c2luZyB0aGlzIG9wdGlvbiB0aGUgZW50aXJlXG4iCiIgICAgICAgICAgY29udGV4dCBvZiB0aGUgcG9zdGVkIGRhdGEgaXMga2VwdCBhcy1pcy4gSWYgeW91IHdhbnRcbiIKIiAgICAgICAgICB0byBwb3N0IGEgYmluYXJ5IGZpbGUgd2l0aG91dCB0aGUgc3RyaXAtbmV3bGluZXMgZmVhrVxuIgoiICAgICAgICAgIHR1cmUgb2YgdGhlIC0tZGF0YS1hc2NpaSBvcHRpb24sIHRoaXMgaXMgZm9yIHlvdS5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtRC8tLWR1bXAtaGVhZGVyIDxmaWxlPlxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgV3JpdGUgdGhlIEhUVFAgaGVhZGVycyB0byB0aGlzIGZpbGUuIFdyaXRlXG4iCiIgICAgICAgICAgdGhlIEZUUCBmaWxlIGluZm8gdG8gdGhpcyBmaWxlIGlmIC1JLy0taGVhZCBpcyB1c2VkLlxuIgoiXG4iCiIgICAgICAgICAgVGhpcyBvcHRpb24gaXMgaGFuZHkgdG8gdXNlIHdoZW4geW91IHdhbnQgdG8gc3RvcmUgdGhlXG4iCiIgICAgICAgICAgY29va2llcyB0aGF0IGEgSFRUUCBzaXRlIHNlbmRzIHRvIHlvdS4gVGhlIGNvb2tpZXNcbiIKIiAgICAgICAgICBjb3VsZCB0aGVuIGJlIHJlYWQgaW4gYSBzZWNvbmQgY3VybCBpbnZva2UgYnkgdXNpbmcgdGhlXG4iCiIgICAgICAgICAgLWIvLS1jb29raWUgb3B0aW9uIVxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1lLy0tcmVmZXJlciA8VVJMPlxuIgoiICAgICAgICAgIChIVFRQKSBTZW5kcyB0aGUgXCJSZWZlcmVyIFBhZ2VcIiBpbmZvcm1hdGlvbiB0byB0aGUgSFRUUFxuIgoiICAgICAgICAgIHNlcnZlci4gVGhpcyBjYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgLUgvLS1oZWFkZXIgZmxhZ1xuIgoiICAgICAgICAgIG9mIGNvdXJzZS4gIFdoZW4gdXNlZCB3aXRoIC1MLy0tbG9jYXRpb24geW91IGNhbiBhcHBlbmRcbiIKIiAgICAgICAgICBcIjthdXRvXCIgdG8gdGhlIHJlZmVyZXIgVVJMIHRvIG1ha2UgY3VybCBhdXRvbWF0aWNhbGx5XG4iCiIgICAgICAgICAgc2V0IHRoZSBwcmV2aW91cyBVUkwgd2hlbiBpdCBmb2xsb3dzIGEgTG9jYXRpb246XG4iCiIgICAgICAgICAgaGVhZGVyLiBUaGUgXCI7YXV0b1wiIHN0cmluZyBjYW4gYmUgdXNlZCBhbG9uZSwgZXZlbiBpZlxuIgoiICAgICAgICAgIHlvdSBkb24ndCBzZXQgYW4gaW5pdGlhbCByZWZlcmVyLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1FLy0tY2VydCA8Y2VydGlmaWNhdGVbOnBhc3N3b3JkXT5cbiIKIiAgICAgICAgICAoSFRUUFMpIFRlbGxzIGN1cmwgdG8gdXNlIHRoZSBzcGVjaWZpZWQgY2VydGlmaWNhdGVcbiIKIiAgICAgICAgICBmaWxlIHdoZW4gZ2V0dGluZyBhIGZpbGUgd2l0aCBIVFRQUy4gVGhlIGNlcnRpZmljYXRlXG4iCiIgICAgICAgICAgbXVzdCBiZSBpbiBQRU0gZm9ybWF0LiAgSWYgdGhlIG9wdGlvbmFsIHBhc3N3b3JkIGlzbid0XG4iCiIgICAgICAgICAgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHF1ZXJpZWQgZm9yIG9uIHRoZSB0ZXJtaW5hbC4gTm90ZVxuIgoiICAgICAgICAgIHRoYXQgdGhpcyBjZXJ0aWZpY2F0ZSBpcyB0aGUgcHJpdmF0ZSBrZXkgYW5kIHRoZSBwcmmtXG4iCiIgICAgICAgICAgdmF0ZSBjZXJ0aWZpY2F0ZSBjb25jYXRlbmF0ZWQhXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLS1jYWNlcnQgPENBIGNlcnRpZmljYXRlPlxuIgoiICAgICAgICAgIChIVFRQUykgVGVsbHMgY3VybCB0byB1c2UgdGhlIHNwZWNpZmllZCBjZXJ0aWZpY2F0ZVxuIgoiICAgICAgICAgIGZpbGUgdG8gdmVyaWZ5IHRoZSBwZWVyLiBUaGUgY2VydGlmaWNhdGUgbXVzdCBiZSBpbiBQRU1cbiIKIiAgICAgICAgICBmb3JtYXQuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLWYvLS1mYWlsXG4iCiIgICAgICAgICAgKEhUVFApIEZhaWwgc2lsZW50bHkgKG5vIG91dHB1dCBhdCBhbGwpIG9uIHNlcnZlclxuIgoiICAgICAgICAgIGVycm9ycy4gVGhpcyBpcyBtb3N0bHkgZG9uZSBsaWtlIHRoaXMgdG8gYmV0dGVyIGVuYWJsZVxuIgoiICAgICAgICAgIHNjcmlwdHMgZXRjIHRvIGJldHRlciBkZWFsIHdpdGggZmFpbGVkIGF0dGVtcHRzLiBJblxuIgoiICAgICAgICAgIG5vcm1hbCBjYXNlcyB3aGVuIGEgSFRUUCBzZXJ2ZXIgZmFpbHMgdG8gZGVsaXZlciBhIGRvY61cbiIKIiAgICAgICAgICB1bWVudCwgaXQgcmV0dXJucyBhIEhUTUwgZG9jdW1lbnQgc3RhdGluZyBzbyAod2hpY2hcbiIKIiAgICAgICAgICBvZnRlbiBhbHNvIGRlc2NyaWJlcyB3aHkgYW5kIG1vcmUpLiBUaGlzIGZsYWcgd2lsbFxuIgoiICAgICAgICAgIHByZXZlbnQgY3VybCBmcm9tIG91dHB1dHRpbmcgdGhhdCBhbmQgZmFpbCBzaWxlbnRseVxuIgoiICAgICAgICAgIGluc3RlYWQuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIHdpbGwgYWdhaW5cbiIKIiAgICAgICAgICBkaXNhYmxlIHNpbGVudCBmYWlsdXJlLlxuIgoiXG4iCiIgICAgIC1GLy0tZm9ybSA8bmFtZT1jb250ZW50PlxuIgoiICAgICAgICAgIChIVFRQKSBUaGlzIGxldHMgY3VybCBlbXVsYXRlIGEgZmlsbGVkIGluIGZvcm0gaW4gd2hpY2hcbiIKIiAgICAgICAgICBhIHVzZXIgaGFzIHByZXNzZWQgdGhlIHN1Ym1pdCBidXR0b24uIFRoaXMgY2F1c2VzIGN1cmxcbiIKIiAgICAgICAgICB0byBQT1NUIGRhdGEgdXNpbmcgdGhlIGNvbnRlbnQtdHlwZSBtdWx0aXBhcnQvZm9ybS1kYXRhXG4iCiIgICAgICAgICAgYWNjb3JkaW5nIHRvIFJGQzE4NjcuIFRoaXMgZW5hYmxlcyB1cGxvYWRpbmcgb2YgYmluYXJ5XG4iCiIgICAgICAgICAgZmlsZXMgZXRjLiBUbyBmb3JjZSB0aGUgJ2NvbnRlbnQnIHBhcnQgdG8gYmUgYmUgYSBmaWxlLFxuIgoiICAgICAgICAgIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggYW4gQCBzaWduLiBUbyBqdXN0IGdldCB0aGVcbiIKIiAgICAgICAgICBjb250ZW50IHBhcnQgZnJvbSBhIGZpbGUsIHByZWZpeCB0aGUgZmlsZSBuYW1lIHdpdGggdGhlXG4iCiIgICAgICAgICAgbGV0dGVyIDwuIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQCBhbmQgPCBpcyB0aGVuIHRoYXQgQFxuIgoiICAgICAgICAgIG1ha2VzIGEgZmlsZSBnZXQgYXR0YWNoZWQgaW4gdGhlIHBvc3QgYXMgYSBmaWxlIHVwbG9hZCxcbiIKIiAgICAgICAgICB3aGlsZSB0aGUgPCBtYWtlcyBhIHRleHQgZmllbGQgYW5kIGp1c3QgZ2V0IHRoZSBjb26tXG4iCiIgICAgICAgICAgdGVudHMgZm9yIHRoYXQgdGV4dCBmaWVsZCBmcm9tIGEgZmlsZS5cbiIKIlxuIgoiICAgICAgICAgIEV4YW1wbGUsIHRvIHNlbmQgeW91ciBwYXNzd29yZCBmaWxlIHRvIHRoZSBzZXJ2ZXIsXG4iCiIgICAgICAgICAgd2hlcmUgaW5wdXQ6XG4iCiJcbiIKIiAgICAgICAgICBjdXJsIC1GIHBhc3N3b3JkPUAvZXRjL3Bhc3N3ZCB3d3cubXlwYXNzd29yZHMuY29tXG4iCiJcbiIKIiAgICAgICAgICBUbyByZWFkIHRoZSBmaWxlJ3MgY29udGVudCBmcm9tIHN0ZGluIGluc3RlZCBvZiBhIGZpbGUsXG4iCiIgICAgICAgICAgdXNlIC0gd2hlcmUgdGhlIGZpbGUgbmFtZSBzaG91bGQndmUgYmVlbi4gVGhpcyBnb2VzIGZvclxuIgopOwogcHV0cygKIiAgICAgICAgICBib3RoIEAgYW5kIDwgY29uc3RydWN0cy5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzLlxuIgoiXG4iCiIgICAgIC1oLy0taGVscFxuIgoiICAgICAgICAgIFVzYWdlIGhlbHAuXG4iCiJcbiIKIiAgICAgLUgvLS1oZWFkZXIgPGhlYWRlcj5cbiIKIiAgICAgICAgICAoSFRUUCkgRXh0cmEgaGVhZGVyIHRvIHVzZSB3aGVuIGdldHRpbmcgYSB3ZWIgcGFnZS4gWW91XG4iCiIgICAgICAgICAgbWF5IHNwZWNpZnkgYW55IG51bWJlciBvZiBleHRyYSBoZWFkZXJzLiBOb3RlIHRoYXQgaWZcbiIKIiAgICAgICAgICB5b3Ugc2hvdWxkIGFkZCBhIGN1c3RvbSBoZWFkZXIgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZVxuIgoiICAgICAgICAgIGFzIG9uZSBvZiB0aGUgaW50ZXJuYWwgb25lcyBjdXJsIHdvdWxkIHVzZSwgeW91ciBleHRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBpbnRlcm5hbFxuIgoiICAgICAgICAgIG9uZS4gVGhpcyBhbGxvd3MgeW91IHRvIG1ha2UgZXZlbiB0cmlja2llciBzdHVmZiB0aGFuXG4iCiIgICAgICAgICAgY3VybCB3b3VsZCBub3JtYWxseSBkby4gWW91IHNob3VsZCBub3QgcmVwbGFjZSBpbnRlcq1cbiIKIiAgICAgICAgICBuYWxseSBzZXQgaGVhZGVycyB3aXRob3V0IGtub3dpbmcgcGVyZmVjdGx5IHdlbGwgd2hhdFxuIgoiICAgICAgICAgIHlvdSdyZSBkb2luZy4gUmVwbGFjaW5nIGFuIGludGVybmFsIGhlYWRlciB3aXRoIG9uZVxuIgoiICAgICAgICAgIHdpdGhvdXQgY29udGVudCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY29sb24gd2lsbFxuIgoiICAgICAgICAgIHByZXZlbnQgdGhhdCBoZWFkZXIgZnJvbSBhcHBlYXJpbmcuXG4iCiJcbiIKIiAgICAgICAgICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcy5cbiIKIlxuIgoiICAgICAtaS8tLWluY2x1ZGVcbiIKIiAgICAgICAgICAoSFRUUCkgSW5jbHVkZSB0aGUgSFRUUC1oZWFkZXIgaW4gdGhlIG91dHB1dC4gVGhlIEhUVFAtXG4iCiIgICAgICAgICAgaGVhZGVyIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHNlcnZlci1uYW1lLCBkYXRlIG9mIHRoZVxuIgoiICAgICAgICAgIGRvY3VtZW50LCBIVFRQLXZlcnNpb24gYW5kIG1vcmUuLi5cbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIHdpbGwgYWdhaW5cbiIKIiAgICAgICAgICBkaXNhYmxlIGhlYWRlciBpbmNsdWRlLlxuIgoiXG4iCiIgICAgIC0taW50ZXJmYWNlIDxuYW1lPlxuIgoiICAgICAgICAgIFBlcmZvcm0gYW4gb3BlcmF0aW9uIHVzaW5nIGEgc3BlY2lmaWVkIGludGVyZmFjZS4gWW91XG4iCiIgICAgICAgICAgY2FuIGVudGVyIGludGVyZmFjZSBuYW1lLCBJUCBhZGRyZXNzIG9yIGhvc3QgbmFtZS4gQW5cbiIKIiAgICAgICAgICBleGFtcGxlIGNvdWxkIGxvb2sgbGlrZTpcbiIKIlxuIgoiICAgICAgICAgIGN1cmwgLS1pbnRlcmZhY2UgZXRoMDoxIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1JLy0taGVhZFxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgRmV0Y2ggdGhlIEhUVFAtaGVhZGVyIG9ubHkhIEhUVFAtc2VydmVyc1xuIgoiICAgICAgICAgIGZlYXR1cmUgdGhlIGNvbW1hbmQgSEVBRCB3aGljaCB0aGlzIHVzZXMgdG8gZ2V0IG5vdGhpbmdcbiIKIiAgICAgICAgICBidXQgdGhlIGhlYWRlciBvZiBhIGRvY3VtZW50LiBXaGVuIHVzZWQgb24gYSBGVFAgZmlsZSxcbiIKIiAgICAgICAgICBjdXJsIGRpc3BsYXlzIHRoZSBmaWxlIHNpemUgb25seS5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgdHdpY2UsIHRoZSBzZWNvbmQgd2lsbCBhZ2FpblxuIgoiICAgICAgICAgIGRpc2FibGUgaGVhZGVyIG9ubHkuXG4iCiJcbiIKIiAgICAgLS1rcmI0IDxsZXZlbD5cbiIKIiAgICAgICAgICAoRlRQKSBFbmFibGUga2VyYmVyb3M0IGF1dGhlbnRpY2F0aW9uIGFuZCB1c2UuIFRoZVxuIgoiICAgICAgICAgIGxldmVsIG11c3QgYmUgZW50ZXJlZCBhbmQgc2hvdWxkIGJlIG9uZSBvZiAnY2xlYXInLFxuIgoiICAgICAgICAgICdzYWZlJywgJ2NvbmZpZGVudGlhbCcgb3IgJ3ByaXZhdGUnLiBTaG91bGQgeW91IHVzZSBhXG4iCiIgICAgICAgICAgbGV2ZWwgdGhhdCBpcyBub3Qgb25lIG9mIHRoZXNlLCAncHJpdmF0ZScgd2lsbCBpbnN0ZWFkXG4iCiIgICAgICAgICAgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtSy8tLWNvbmZpZyA8Y29uZmlnIGZpbGU+XG4iCiIgICAgICAgICAgU3BlY2lmeSB3aGljaCBjb25maWcgZmlsZSB0byByZWFkIGN1cmwgYXJndW1lbnRzIGZyb20uXG4iCiIgICAgICAgICAgVGhlIGNvbmZpZyBmaWxlIGlzIGEgdGV4dCBmaWxlIGluIHdoaWNoIGNvbW1hbmQgbGluZVxuIgoiICAgICAgICAgIGFyZ3VtZW50cyBjYW4gYmUgd3JpdHRlbiB3aGljaCB0aGVuIHdpbGwgYmUgdXNlZCBhcyBpZlxuIgoiICAgICAgICAgIHRoZXkgd2VyZSB3cml0dGVuIG9uIHRoZSBhY3R1YWwgY29tbWFuZCBsaW5lLiBPcHRpb25zXG4iCiIgICAgICAgICAgYW5kIHRoZWlyIHBhcmFtZXRlcnMgbXVzdCBiZSBzcGVjaWZpZWQgb24gdGhlIHNhbWUgY29urVxuIgoiICAgICAgICAgIGZpZyBmaWxlIGxpbmUuIElmIHRoZSBwYXJhbWV0ZXIgaXMgdG8gY29udGFpbiB3aGl0ZVxuIgoiICAgICAgICAgIHNwYWNlcywgdGhlIHBhcmFtZXRlciBtdXN0IGJlIGluY2xvc2VkIHdpdGhpbiBxdW90ZXMuXG4iCiIgICAgICAgICAgSWYgdGhlIGZpcnN0IGNvbHVtbiBvZiBhIGNvbmZpZyBsaW5lIGlzIGEgJyMnIGNoYXJhY61cbiIKIiAgICAgICAgICB0ZXIsIHRoZSByZXN0IG9mIHRoZSBsaW5lIHdpbGwgYmUgdHJlYXRlZCBhcyBhIGNvbW1lbnQuXG4iCiJcbiIKIiAgICAgICAgICBTcGVjaWZ5IHRoZSBmaWxlbmFtZSBhcyAnLScgdG8gbWFrZSBjdXJsIHJlYWQgdGhlIGZpbGVcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluLlxuIgoiXG4iCiIgICAgICAgICAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMuXG4iCiJcbiIKIiAgICAgLWwvLS1saXN0LW9ubHlcbiIKIiAgICAgICAgICAoRlRQKSBXaGVuIGxpc3RpbmcgYW4gRlRQIGRpcmVjdG9yeSwgdGhpcyBzd2l0Y2ggZm9yY2VzXG4iCiIgICAgICAgICAgYSBuYW1lLW9ubHkgdmlldy4gIEVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdSB3YW50IHRvXG4iCiIgICAgICAgICAgbWFjaGluZS1wYXJzZSB0aGUgY29udGVudHMgb2YgYW4gRlRQIGRpcmVjdG9yeSBzaW5jZVxuIgoiICAgICAgICAgIHRoZSBub3JtYWwgZGlyZWN0b3J5IHZpZXcgZG9lc24ndCB1c2UgYSBzdGFuZGFyZCBsb29rXG4iCiIgICAgICAgICAgb3IgZm9ybWF0LlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCB0d2ljZSwgdGhlIHNlY29uZCB3aWxsIGFnYWluXG4iCiIgICAgICAgICAgZGlzYWJsZSBsaXN0IG9ubHkuXG4iCiJcbiIKIiAgICAgLUwvLS1sb2NhdGlvblxuIgoiICAgICAgICAgIChIVFRQL0hUVFBTKSBJZiB0aGUgc2VydmVyIHJlcG9ydHMgdGhhdCB0aGUgcmVxdWVzdGVkXG4iCiIgICAgICAgICAgcGFnZSBoYXMgYSBkaWZmZXJlbnQgbG9jYXRpb24gKGluZGljYXRlZCB3aXRoIHRoZVxuIgoiICAgICAgICAgIGhlYWRlciBsaW5lIExvY2F0aW9uOikgdGhpcyBmbGFnIHdpbGwgbGV0IGN1cmwgYXR0ZW1wdFxuIgoiICAgICAgICAgIHRvIHJlYXR0ZW1wdCB0aGUgZ2V0IG9uIHRoZSBuZXcgcGxhY2UuIElmIHVzZWQgdG9nZXRoZXJcbiIKIiAgICAgICAgICB3aXRoIC1pIG9yIC1JLCBoZWFkZXJzIGZyb20gYWxsIHJlcXVlc3RlZCBwYWdlcyB3aWxsIGJlXG4iCiIgICAgICAgICAgc2hvd24uIElmIHRoaXMgZmxhZyBpcyB1c2VkIHdoZW4gbWFraW5nIGEgSFRUUCBQT1NULFxuIgoiICAgICAgICAgIGN1cmwgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byBHRVQgYWZ0ZXIgdGhlIGluaXRpYWxcbiIKIiAgICAgICAgICBQT1NUIGhhcyBiZWVuIGRvbmUuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIHdpbGwgYWdhaW5cbiIKIiAgICAgICAgICBkaXNhYmxlIGxvY2F0aW9uIGZvbGxvd2luZy5cbiIKIlxuIgoiICAgICAtbS8tLW1heC10aW1lIDxzZWNvbmRzPlxuIgoiICAgICAgICAgIE1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91IGFsbG93IHRoZSB3aG9sZSBvcGVyYa1cbiIKIiAgICAgICAgICB0aW9uIHRvIHRha2UuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyB5b3VyIGJhdGNoXG4iCiIgICAgICAgICAgam9icyBmcm9tIGhhbmdpbmcgZm9yIGhvdXJzIGR1ZSB0byBzbG93IG5ldHdvcmtzIG9yXG4iCiIgICAgICAgICAgbGlua3MgZ29pbmcgZG93bi4gIFRoaXMgZG9lc24ndCB3b3JrIGZ1bGx5IGluIHdpbjMyXG4iCiIgICAgICAgICAgc3lzdGVtcy5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtTS8tLW1hbnVhbFxuIgoiICAgICAgICAgIE1hbnVhbC4gRGlzcGxheSB0aGUgaHVnZSBoZWxwIHRleHQuXG4iCiJcbiIKIiAgICAgLW4vLS1uZXRyY1xuIgoiICAgICAgICAgIE1ha2VzIGN1cmwgc2NhbiB0aGUgLm5ldHJjIGZpbGUgaW4gdGhlIHVzZXIncyBob21lXG4iCiIgICAgICAgICAgZGlyZWN0b3J5IGZvciBsb2dpbiBuYW1lIGFuZCBwYXNzd29yZC4gVGhpcyBpcyB0eXBprVxuIgoiICAgICAgICAgIGNhbGx5IHVzZWQgZm9yIGZ0cCBvbiB1bml4LiBJZiB1c2VkIHdpdGggaHR0cCwgY3VybFxuIgoiICAgICAgICAgIHdpbGwgZW5hYmxlIHVzZXIgYXV0aGVudGljYXRpb24uIFNlZSBuZXRyYyg0KSBmb3JcbiIKIiAgICAgICAgICBkZXRhaWxzIG9uIHRoZSBmaWxlIGZvcm1hdC4gQ3VybCB3aWxsIG5vdCBjb21wbGFpbiBpZlxuIgoiICAgICAgICAgIHRoYXQgZmlsZSBoYXNuJ3QgdGhlIHJpZ2h0IHBlcm1pc3Npb25zIChpdCBzaG91bGQgbm90XG4iCiIgICAgICAgICAgYmUgd29ybGQgbm9yIGdyb3VwIHJlYWRhYmxlKS4gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlXG4iCiIgICAgICAgICAgXCJIT01FXCIgaXMgdXNlZCB0byBmaW5kIHRoZSBob21lIGRpcmVjdG9yeS5cbiIKIlxuIgoiICAgICAgICAgIEEgcXVpY2sgYW5kIHZlcnkgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIHNldHVwIGFcbiIKIiAgICAgICAgICAubmV0cmMgdG8gYWxsb3cgY3VybCB0byBmdHAgdG8gdGhlIG1hY2hpbmVcbiIKIiAgICAgICAgICBob3N0LmRvbWFpbi5jb20gd2l0aCB1c2VyIG5hbWVcbiIKIlxuIgoiICAgICAgICAgIG1hY2hpbmUgaG9zdC5kb21haW4uY29tIGxvZ2luIG15c2VsZiBwYXNzd29yZCBzZWNyZXRcbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgdHdpY2UsIHRoZSBzZWNvbmQgd2lsbCBhZ2FpblxuIgoiICAgICAgICAgIGRpc2FibGUgbmV0cmMgdXNhZ2UuXG4iCiJcbiIKIiAgICAgLU4vLS1uby1idWZmZXJcbiIKIiAgICAgICAgICBEaXNhYmxlcyB0aGUgYnVmZmVyaW5nIG9mIHRoZSBvdXRwdXQgc3RyZWFtLiBJbiBub3JtYWxcbiIKIiAgICAgICAgICB3b3JrIHNpdHVhdGlvbnMsIGN1cmwgd2lsbCB1c2UgYSBzdGFuZGFyZCBidWZmZXJlZCBvdXStXG4iCiIgICAgICAgICAgcHV0IHN0cmVhbSB0aGF0IHdpbGwgaGF2ZSB0aGUgZWZmZWN0IHRoYXQgaXQgd2lsbCBvdXStXG4iCiIgICAgICAgICAgcHV0IHRoZSBkYXRhIGluIGNodW5rcywgbm90IG5lY2Vzc2FyaWx5IGV4YWN0bHkgd2hlblxuIgoiICAgICAgICAgIHRoZSBkYXRhIGFycml2ZXMuICBVc2luZyB0aGlzIG9wdGlvbiB3aWxsIGRpc2FibGUgdGhhdFxuIgoiICAgICAgICAgIGJ1ZmZlcmluZy5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgdHdpY2UsIHRoZSBzZWNvbmQgd2lsbCBhZ2FpblxuIgoiICAgICAgICAgIHN3aXRjaCBvbiBidWZmZXJpbmcuXG4iCiJcbiIKIiAgICAgLW8vLS1vdXRwdXQgPGZpbGU+XG4iCiIgICAgICAgICAgV3JpdGUgb3V0cHV0IHRvIDxmaWxlPiBpbnN0ZWFkIG9mIHN0ZG91dC4gSWYgeW91IGFyZVxuIgoiICAgICAgICAgIHVzaW5nIHt9IG9yIFtdIHRvIGZldGNoIG11bHRpcGxlIGRvY3VtZW50cywgeW91IGNhbiB1c2VcbiIKIiAgICAgICAgICAnIycgZm9sbG93ZWQgYnkgYSBudW1iZXIgaW4gdGhlIDxmaWxlPiBzcGVjaWZpZXIuIFRoYXRcbiIKIiAgICAgICAgICB2YXJpYWJsZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgc3RyaW5nIGZvclxuIgoiICAgICAgICAgIHRoZSBVUkwgYmVpbmcgZmV0Y2hlZC4gTGlrZSBpbjpcbiIKIlxuIgoiICAgICAgICAgICAgY3VybCBodHRwOi8ve29uZSx0d299LnNpdGUuY29tIC1vIFwiZmlsZV8jMS50eHRcIlxuIgoiXG4iCiIgICAgICAgICAgb3IgdXNlIHNldmVyYWwgdmFyaWFibGVzIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgICAgIGN1cmwgaHR0cDovL3tzaXRlLGhvc3R9Lmhvc3RbMS01XS5jb20gLW8gXCIjMV8jMlwiXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLU8vLS1yZW1vdGUtbmFtZVxuIgoiICAgICAgICAgIFdyaXRlIG91dHB1dCB0byBhIGxvY2FsIGZpbGUgbmFtZWQgbGlrZSB0aGUgcmVtb3RlIGZpbGVcbiIKIiAgICAgICAgICB3ZSBnZXQuIChPbmx5IHRoZSBmaWxlIHBhcnQgb2YgdGhlIHJlbW90ZSBmaWxlIGlzIHVzZWQsXG4iCiIgICAgICAgICAgdGhlIHBhdGggaXMgY3V0IG9mZi4pXG4iCiJcbiIKIiAgICAgLXAvLS1wcm94eXR1bm5lbFxuIgoiICAgICAgICAgIFdoZW4gYW4gSFRUUCBwcm94eSBpcyB1c2VkLCB0aGlzIG9wdGlvbiB3aWxsIGNhdXNlIG5vbi1cbiIKIiAgICAgICAgICBIVFRQIHByb3RvY29scyB0byBhdHRlbXB0IHRvIHR1bm5lbCB0aHJvdWdoIHRoZSBwcm94eVxuIgoiICAgICAgICAgIGluc3RlYWQgb2YgbWVyZWx5IHVzaW5nIGl0IHRvIGRvIEhUVFAtbGlrZSBvcGVyYXRpb25zLlxuIgoiICAgICAgICAgIFRoZSB0dW5uZWwgYXBwcm9hY2ggaXMgbWFkZSB3aXRoIHRoZSBIVFRQIHByb3h5IENPTk5FQ1RcbiIKIiAgICAgICAgICByZXF1ZXN0IGFuZCByZXF1aXJlcyB0aGF0IHRoZSBwcm94eSBhbGxvd3MgZGlyZWN0IGNvbq1cbiIKIiAgICAgICAgICBuZWN0IHRvIHRoZSByZW1vdGUgcG9ydCBudW1iZXIgY3VybCB3YW50cyB0byB0dW5uZWxcbiIKIiAgICAgICAgICB0aHJvdWdoIHRvLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCB0d2ljZSwgdGhlIHNlY29uZCB3aWxsIGFnYWluXG4iCiIgICAgICAgICAgZGlzYWJsZSBwcm94eSB0dW5uZWwuXG4iCiJcbiIKIiAgICAgLVAvLS1mdHBwb3J0IDxhZGRyZXNzPlxuIgoiICAgICAgICAgIChGVFApIFJldmVyc2VzIHRoZSBpbml0aWF0b3IvbGlzdGVuZXIgcm9sZXMgd2hlbiBjb26tXG4iCiIgICAgICAgICAgbmVjdGluZyB3aXRoIGZ0cC4gVGhpcyBzd2l0Y2ggbWFrZXMgQ3VybCB1c2UgdGhlIFBPUlRcbiIKIiAgICAgICAgICBjb21tYW5kIGluc3RlYWQgb2YgUEFTVi4gSW4gcHJhY3RpY2UsIFBPUlQgdGVsbHMgdGhlXG4iCiIgICAgICAgICAgc2VydmVyIHRvIGNvbm5lY3QgdG8gdGhlIGNsaWVudCdzIHNwZWNpZmllZCBhZGRyZXNzIGFuZFxuIgoiICAgICAgICAgIHBvcnQsIHdoaWxlIFBBU1YgYXNrcyB0aGUgc2VydmVyIGZvciBhbiBpcCBhZGRyZXNzIGFuZFxuIgoiICAgICAgICAgIHBvcnQgdG8gY29ubmVjdCB0by4gPGFkZHJlc3M+IHNob3VsZCBiZSBvbmUgb2Y6XG4iCiIgICAgICAgICAgaW50ZXJmYWNlICAgaS5lIFwiZXRoMFwiIHRvIHNwZWNpZnkgd2hpY2ggaW50ZXJmYWNlJ3MgSVBcbiIKIiAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHlvdSB3YW50IHRvIHVzZSAgKFVuaXggb25seSlcbiIKIlxuIgoiICAgICAgICAgIElQIGFkZHJlc3MgIGkuZSBcIjE5Mi4xNjguMTAuMVwiIHRvIHNwZWNpZnkgZXhhY3QgSVAgbnVtrVxuIgoiICAgICAgICAgICAgICAgICAgICAgIGJlclxuIgoiXG4iCiIgICAgICAgICAgaG9zdCBuYW1lICAgaS5lIFwibXkuaG9zdC5kb21haW5cIiB0byBzcGVjaWZ5IG1hY2hpbmVcbiIKIlxuIgoiICAgICAgICAgIC0gICAgICAgICAgIChhbnkgc2luZ2xlLWxldHRlciBzdHJpbmcpIHRvIG1ha2UgaXQgcGlja1xuIgoiICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgZGVmYXVsdFxuIgoiXG4iCiIgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZSB3aWxsIGJlXG4iCiIgICAgIHVzZWQuXG4iCiJcbiIKIiAgICAgLXEgICBJZiB1c2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlXG4iCiIgICAgICAgICAgJEhPTUUvLmN1cmxyYyBmaWxlIHdpbGwgbm90IGJlIHJlYWQgYW5kIHVzZWQgYXMgYSBjb26tXG4iCiIgICAgICAgICAgZmlnIGZpbGUuXG4iCiJcbiIKIiAgICAgLVEvLS1xdW90ZSA8Y29tYW5kPlxuIgoiICAgICAgICAgIChGVFApIFNlbmQgYW4gYXJiaXRyYXJ5IGNvbW1hbmQgdG8gdGhlIHJlbW90ZSBGVFBcbiIKIiAgICAgICAgICBzZXJ2ZXIsIGJ5IHVzaW5nIHRoZSBRVU9URSBjb21tYW5kIG9mIHRoZSBzZXJ2ZXIuIE5vdFxuIgoiICAgICAgICAgIGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhpcyBjb21tYW5kLCBhbmQgdGhlIHNldCBvZiBRVU9URVxuIgoiICAgICAgICAgIGNvbW1hbmRzIGFyZSBzZXJ2ZXIgc3BlY2lmaWMhIFF1b3RlIGNvbW1hbmRzIGFyZSBzZW50XG4iCiIgICAgICAgICAgQkVGT1JFIHRoZSB0cmFuc2ZlciBpcyB0YWtpbmcgcGxhY2UuIFRvIG1ha2UgY29tbWFuZHNcbiIKIiAgICAgICAgICB0YWtlIHBsYWNlIGFmdGVyIGEgc3VjY2Vzc2Z1bCB0cmFuc2ZlciwgcHJlZml4IHRoZW1cbiIKIiAgICAgICAgICB3aXRoIGEgZGFzaCAnLScuIFlvdSBtYXkgc3BlY2lmeSBhbnkgYW1vdW50IG9mIGNvbW1hbmRzXG4iCiIgICAgICAgICAgdG8gYmUgcnVuIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRyYW5zZmVyLiBJZiB0aGUgc2VydmVyXG4iCiIgICAgICAgICAgcmV0dXJucyBmYWlsdXJlIGZvciBvbmUgb2YgdGhlIGNvbW1hbmRzLCB0aGUgZW50aXJlXG4iCiIgICAgICAgICAgb3BlcmF0aW9uIHdpbGwgYmUgYWJvcnRlZC5cbiIKIlxuIgoiICAgICAgICAgIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzLlxuIgoiXG4iCiIgICAgIC1yLy0tcmFuZ2UgPHJhbmdlPlxuIgoiICAgICAgICAgIChIVFRQL0ZUUCkgUmV0cmlldmUgYSBieXRlIHJhbmdlIChpLmUgYSBwYXJ0aWFsIGRvY3WtXG4iCiIgICAgICAgICAgbWVudCkgZnJvbSBhIEhUVFAvMS4xIG9yIEZUUCBzZXJ2ZXIuIFJhbmdlcyBjYW4gYmVcbiIKIiAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBudW1iZXIgb2Ygd2F5cy5cbiIKIlxuIgoiICAgICAgICAgIDAtNDk5ICAgICBzcGVjaWZpZXMgdGhlIGZpcnN0IDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgNTAwLTk5OSAgIHNwZWNpZmllcyB0aGUgc2Vjb25kIDUwMCBieXRlc1xuIgoiXG4iCiIgICAgICAgICAgLTUwMCAgICAgIHNwZWNpZmllcyB0aGUgbGFzdCA1MDAgYnl0ZXNcbiIKIlxuIgoiICAgICAgICAgIDk1MDAgICAgICBzcGVjaWZpZXMgdGhlIGJ5dGVzIGZyb20gb2Zmc2V0IDk1MDAgYW5kIGZvcq1cbiIKIiAgICAgICAgICAgICAgICAgICAgd2FyZFxuIgoiXG4iCiIgICAgICAgICAgMC0wLC0xICAgIHNwZWNpZmllcyB0aGUgZmlyc3QgYW5kIGxhc3QgYnl0ZSBvbmx5KCopKEgpXG4iCiJcbiIKIiAgICAgICAgICA1MDAtNzAwLDYwMC03OTlcbiIKIiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIDMwMCBieXRlcyBmcm9tIG9mZnNldCA1MDAoSClcbiIKIlxuIgoiICAgICAgICAgIDEwMC0xOTksNTAwLTU5OVxuIgoiICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdHdvIHNlcGFyYXRlIDEwMCBieXRlcyByYW5nZXMoKikoSClcbiIKIlxuIgoiICAgICAoKikgPSBOT1RFIHRoYXQgdGhpcyB3aWxsIGNhdXNlIHRoZSBzZXJ2ZXIgdG8gcmVwbHkgd2l0aCBhXG4iCiIgICAgIG11bHRpcGFydCByZXNwb25zZSFcbiIKIlxuIgoiICAgICBZb3Ugc2hvdWxkIGFsc28gYmUgYXdhcmUgdGhhdCBtYW55IEhUVFAvMS4xIHNlcnZlcnMgZG8gbm90XG4iCiIgICAgIGhhdmUgdGhpcyBmZWF0dXJlIGVuYWJsZWQsIHNvIHRoYXQgd2hlbiB5b3UgYXR0ZW1wdCB0byBnZXQgYVxuIgoiICAgICByYW5nZSwgeW91J2xsIGluc3RlYWQgZ2V0IHRoZSB3aG9sZSBkb2N1bWVudC5cbiIKIlxuIgoiICAgICBGVFAgcmFuZ2UgZG93bmxvYWRzIG9ubHkgc3VwcG9ydCB0aGUgc2ltcGxlIHN5bnRheCAnc3RhcnQtXG4iCiIgICAgIHN0b3AnIChvcHRpb25hbGx5IHdpdGggb25lIG9mIHRoZSBudW1iZXJzIG9taXR0ZWQpLiBJdFxuIgoiICAgICBkZXBlbmRzIG9uIHRoZSBub24tUkZDIGNvbW1hbmQgU0laRS5cbiIKIlxuIgoiICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZVxuIgoiICAgICB1c2VkLlxuIgoiXG4iCiIgICAgIC1zLy0tc2lsZW50XG4iCiIgICAgICAgICAgU2lsZW50IG1vZGUuIERvbid0IHNob3cgcHJvZ3Jlc3MgbWV0ZXIgb3IgZXJyb3IgbWVzrVxuIgoiICAgICAgICAgIHNhZ2VzLiAgTWFrZXMgQ3VybCBtdXRlLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCB0d2ljZSwgdGhlIHNlY29uZCB3aWxsIGFnYWluXG4iCiIgICAgICAgICAgZGlzYWJsZSBtdXRlLlxuIgoiXG4iCiIgICAgIC1TLy0tc2hvdy1lcnJvclxuIgoiICAgICAgICAgIFdoZW4gdXNlZCB3aXRoIC1zIGl0IG1ha2VzIGN1cmwgc2hvdyBlcnJvciBtZXNzYWdlIGlmXG4iCiIgICAgICAgICAgaXQgZmFpbHMuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIHdpbGwgYWdhaW5cbiIKKTsKIHB1dHMoCiIgICAgICAgICAgZGlzYWJsZSBzaG93IGVycm9yLlxuIgoiXG4iCiIgICAgIC10Ly0tdXBsb2FkXG4iCiIgICAgICAgICAgRGVwcmVjYXRlZC4gVXNlICctVCAtJyBpbnN0ZWFkLiAgVHJhbnNmZXIgdGhlIHN0ZGluXG4iCiIgICAgICAgICAgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGZpbGUuIEN1cmwgd2lsbCByZWFkIGV2ZXJ5dGhpbmdcbiIKIiAgICAgICAgICBmcm9tIHN0ZGluIHVudGlsIEVPRiBhbmQgc3RvcmUgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS5cbiIKIiAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVCBjb21tYW5kXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1ULy0tdXBsb2FkLWZpbGUgPGZpbGU+XG4iCiIgICAgICAgICAgTGlrZSAtdCwgYnV0IHRoaXMgdHJhbnNmZXJzIHRoZSBzcGVjaWZpZWQgbG9jYWwgZmlsZS5cbiIKIiAgICAgICAgICBJZiB0aGVyZSBpcyBubyBmaWxlIHBhcnQgaW4gdGhlIHNwZWNpZmllZCBVUkwsIEN1cmxcbiIKIiAgICAgICAgICB3aWxsIGFwcGVuZCB0aGUgbG9jYWwgZmlsZSBuYW1lLiBOT1RFIHRoYXQgeW91IG11c3QgdXNlXG4iCiIgICAgICAgICAgYSB0cmFpbGluZyAvIG9uIHRoZSBsYXN0IGRpcmVjdG9yeSB0byByZWFsbHkgcHJvdmUgdG9cbiIKIiAgICAgICAgICBDdXJsIHRoYXQgdGhlcmUgaXMgbm8gZmlsZSBuYW1lIG9yIGN1cmwgd2lsbCB0aGluayB0aGF0XG4iCiIgICAgICAgICAgeW91ciBsYXN0IGRpcmVjdG9yeSBuYW1lIGlzIHRoZSByZW1vdGUgZmlsZSBuYW1lIHRvXG4iCiIgICAgICAgICAgdXNlLiBUaGF0IHdpbGwgbW9zdCBsaWtlbHkgY2F1c2UgdGhlIHVwbG9hZCBvcGVyYXRpb25cbiIKIiAgICAgICAgICB0byBmYWlsLiBJZiB0aGlzIGlzIHVzZWQgb24gYSBodHRwKHMpIHNlcnZlciwgdGhlIFBVVFxuIgoiICAgICAgICAgIGNvbW1hbmQgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC11Ly0tdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSB3aGVuIGZldGNoaW5nLiBTZWVcbiIKIiAgICAgICAgICBSRUFETUUuY3VybCBmb3IgZGV0YWlsZWQgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzLlxuIgoiICAgICAgICAgIElmIG5vIHBhc3N3b3JkIGlzIHNwZWNpZmllZCwgY3VybCB3aWxsIGFzayBmb3IgaXRcbiIKIiAgICAgICAgICBpbnRlcmFjdGl2ZWx5LlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC1VLy0tcHJveHktdXNlciA8dXNlcjpwYXNzd29yZD5cbiIKIiAgICAgICAgICBTcGVjaWZ5IHVzZXIgYW5kIHBhc3N3b3JkIHRvIHVzZSBmb3IgUHJveHkgYXV0aGVudGljYa1cbiIKIiAgICAgICAgICB0aW9uLiBJZiBubyBwYXNzd29yZCBpcyBzcGVjaWZpZWQsIGN1cmwgd2lsbCBhc2sgZm9yIGl0XG4iCiIgICAgICAgICAgaW50ZXJhY3RpdmVseS5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtLXVybCA8VVJMPlxuIgoiICAgICAgICAgIFNldCB0aGUgVVJMIHRvIGZldGNoLiBUaGlzIG9wdGlvbiBpcyBtb3N0bHkgaGFuZHkgd2hlblxuIgoiICAgICAgICAgIHlvdSB3YW5uYSBzcGVjaWZ5IFVSTCBpbiBhIGNvbmZpZyBmaWxlLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIC12Ly0tdmVyYm9zZVxuIgoiICAgICAgICAgIE1ha2VzIHRoZSBmZXRjaGluZyBtb3JlIHZlcmJvc2UvdGFsa2F0aXZlLiBNb3N0bHlcbiIKIiAgICAgICAgICB1c2FibGUgZm9yIGRlYnVnZ2luZy4gTGluZXMgc3RhcnRpbmcgd2l0aCAnPicgbWVhbnNcbiIKIiAgICAgICAgICBkYXRhIHNlbnQgYnkgY3VybCwgJzwnIG1lYW5zIGRhdGEgcmVjZWl2ZWQgYnkgY3VybCB0aGF0XG4iCiIgICAgICAgICAgaXMgaGlkZGVuIGluIG5vcm1hbCBjYXNlcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnKidcbiIKIiAgICAgICAgICBtZWFucyBhZGRpdGlvbmFsIGluZm8gcHJvdmlkZWQgYnkgY3VybC5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgdHdpY2UsIHRoZSBzZWNvbmQgd2lsbCBhZ2FpblxuIgoiICAgICAgICAgIGRpc2FibGUgdmVyYm9zZS5cbiIKIlxuIgoiICAgICAtVi8tLXZlcnNpb25cbiIKIiAgICAgICAgICBEaXNwbGF5cyB0aGUgZnVsbCB2ZXJzaW9uIG9mIGN1cmwsIGxpYmN1cmwgYW5kIG90aGVyXG4iCiIgICAgICAgICAgM3JkIHBhcnR5IGxpYnJhcmllcyBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS5cbiIKIlxuIgoiICAgICAtdy8tLXdyaXRlLW91dCA8Zm9ybWF0PlxuIgoiICAgICAgICAgIERlZmluZXMgd2hhdCB0byBkaXNwbGF5IGFmdGVyIGEgY29tcGxldGVkIGFuZCBzdWNjZXNzrVxuIgoiICAgICAgICAgIGZ1bCBvcGVyYXRpb24uIFRoZSBmb3JtYXQgaXMgYSBzdHJpbmcgdGhhdCBtYXkgY29udGFpblxuIgoiICAgICAgICAgIHBsYWluIHRleHQgbWl4ZWQgd2l0aCBhbnkgbnVtYmVyIG9mIHZhcmlhYmxlcy4gVGhlXG4iCiIgICAgICAgICAgc3RyaW5nIGNhbiBiZSBzcGVjaWZpZWQgYXMgXCJzdHJpbmdcIiwgdG8gZ2V0IHJlYWQgZnJvbSBhXG4iCiIgICAgICAgICAgcGFydGljdWxhciBmaWxlIHlvdSBzcGVjaWZ5IGl0IFwiQGZpbGVuYW1lXCIgYW5kIHRvIHRlbGxcbiIKIiAgICAgICAgICBjdXJsIHRvIHJlYWQgdGhlIGZvcm1hdCBmcm9tIHN0ZGluIHlvdSB3cml0ZSBcIkAtXCIuXG4iCiJcbiIKIiAgICAgICAgICBUaGUgdmFyaWFibGVzIHByZXNlbnQgaW4gdGhlIG91dHB1dCBmb3JtYXQgd2lsbCBiZSBzdWKtXG4iCiIgICAgICAgICAgc3RpdHV0ZWQgYnkgdGhlIHZhbHVlIG9yIHRleHQgdGhhdCBjdXJsIHRoaW5rcyBmaXQsIGFzXG4iCiIgICAgICAgICAgZGVzY3JpYmVkIGJlbG93LiBBbGwgdmFyaWFibGVzIGFyZSBzcGVjaWZpZWQgbGlrZVxuIgoiICAgICAgICAgICV7dmFyaWFibGVfbmFtZX0gYW5kIHRvIG91dHB1dCBhIG5vcm1hbCAlIHlvdSBqdXN0XG4iCiIgICAgICAgICAgd3JpdGUgdGhlbSBsaWtlICUlLiBZb3UgY2FuIG91dHB1dCBhIG5ld2xpbmUgYnkgdXNpbmdcbiIKIiAgICAgICAgICBcXG4sIGEgY2FycmlnZSByZXR1cm4gd2l0aCBcXHIgYW5kIGEgdGFiIHNwYWNlIHdpdGggXFx0LlxuIgoiICAgICAgICAgIE5PVEU6IFRoZSAlLWxldHRlciBpcyBhIHNwZWNpYWwgbGV0dGVyIGluIHRoZVxuIgoiICAgICAgICAgIHdpbjMyLWVudmlyb25tZW50LCB3aGVyZSBhbGwgb2NjdXJyZW5jZXMgb2YgJSBtdXN0IGJlXG4iCiIgICAgICAgICAgZG91YmxlZCB3aGVuIHVzaW5nIHRoaXMgb3B0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgQXZhaWxhYmxlIHZhcmlhYmxlcyBhcmUgYXQgdGhpcyBwb2ludDpcbiIKIlxuIgoiICAgICAgICAgIHVybF9lZmZlY3RpdmUgIFRoZSBVUkwgdGhhdCB3YXMgZmV0Y2hlZCBsYXN0LiBUaGlzIGlzXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IG1lYW5pbmdmdWwgaWYgeW91J3ZlIHRvbGQgY3VybCB0b1xuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBsb2NhdGlvbjogaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIGh0dHBfY29kZSAgICAgIFRoZSBudW1lcmljYWwgY29kZSB0aGF0IHdhcyBmb3VuZCBpbiB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHJldHJpZXZlZCBIVFRQKFMpIHBhZ2UuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX3RvdGFsICAgICBUaGUgdG90YWwgdGltZSwgaW4gc2Vjb25kcywgdGhhdCB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIG9wZXJhdGlvbiBsYXN0ZWQuIFRoZSB0aW1lIHdpbGwgYmVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgd2l0aCBtaWxsaXNlY29uZCByZXNvbHV0aW9uLlxuIgoiXG4iCiIgICAgICAgICAgdGltZV9uYW1lbG9va3VwXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRpbWUsIGluIHNlY29uZHMsIGl0IHRvb2sgZnJvbSB0aGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCB1bnRpbCB0aGUgbmFtZSByZXNvbHZpbmcgd2FzIGNvba1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBwbGV0ZWQuXG4iCiJcbiIKIiAgICAgICAgICB0aW1lX2Nvbm5lY3QgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBjb25uZWN0IHRvIHRoZSByZW1vdGVcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0IChvciBwcm94eSkgd2FzIGNvbXBsZXRlZC5cbiIKIlxuIgoiICAgICAgICAgIHRpbWVfcHJldHJhbnNmZXJcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGltZSwgaW4gc2Vjb25kcywgaXQgdG9vayBmcm9tIHRoZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHVudGlsIHRoZSBmaWxlIHRyYW5zZmVyIGlzIGp1c3RcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBhYm91dCB0byBiZWdpbi4gVGhpcyBpbmNsdWRlcyBhbGwgcHJlLVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGNvbW1hbmRzIGFuZCBuZWdvdGlhdGlvbnMgdGhhdFxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgcGFydGljdWxhciBwcm90b61cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBjb2wocykgaW52b2x2ZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX2Rvd25sb2FkICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQuXG4iCiJcbiIKIiAgICAgICAgICBzaXplX3VwbG9hZCAgICBUaGUgdG90YWwgYW1vdW50IG9mIGJ5dGVzIHRoYXQgd2VyZVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZGVkLlxuIgoiXG4iCiIgICAgICAgICAgc2l6ZV9oZWFkZXIgICAgVGhlIHRvdGFsIGFtb3VudCBvZiBieXRlcyBvZiB0aGUgZG93bq1cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgaGVhZGVycy5cbiIKIlxuIgoiICAgICAgICAgIHNpemVfcmVxdWVzdCAgIFRoZSB0b3RhbCBhbW91bnQgb2YgYnl0ZXMgdGhhdCB3ZXJlIHNlbnRcbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgSFRUUCByZXF1ZXN0LlxuIgoiXG4iCiIgICAgICAgICAgc3BlZWRfZG93bmxvYWQgVGhlIGF2ZXJhZ2UgZG93bmxvYWQgc3BlZWQgdGhhdCBjdXJsXG4iCiIgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZWQgZm9yIHRoZSBjb21wbGV0ZSBkb3dubG9hZC5cbiIKIlxuIgoiICAgICAgICAgIHNwZWVkX3VwbG9hZCAgIFRoZSBhdmVyYWdlIHVwbG9hZCBzcGVlZCB0aGF0IGN1cmwgbWVhrVxuIgoiICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmVkIGZvciB0aGUgY29tcGxldGUgdXBsb2FkLlxuIgoiICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmUgd2lsbCBiZVxuIgoiICAgICB1c2VkLlxuIgoiXG4iCiIgICAgIC14Ly0tcHJveHkgPHByb3h5aG9zdFs6cG9ydF0+XG4iCiIgICAgICAgICAgVXNlIHNwZWNpZmllZCBwcm94eS4gSWYgdGhlIHBvcnQgbnVtYmVyIGlzIG5vdCBzcGVjaa1cbiIKIiAgICAgICAgICBmaWVkLCBpdCBpcyBhc3N1bWVkIGF0IHBvcnQgMTA4MC5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtWC8tLXJlcXVlc3QgPGNvbW1hbmQ+XG4iCiIgICAgICAgICAgKEhUVFApIFNwZWNpZmllcyBhIGN1c3RvbSByZXF1ZXN0IHRvIHVzZSB3aGVuIGNvbW11bmmtXG4iCiIgICAgICAgICAgY2F0aW5nIHdpdGggdGhlIEhUVFAgc2VydmVyLiAgVGhlIHNwZWNpZmllZCByZXF1ZXN0XG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIEdFVC4gUmVhZCB0aGUgSFRUUFxuIgoiICAgICAgICAgIDEuMSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIGFuZCBleHBsYW5hdGlvbnMuXG4iCiJcbiIKIiAgICAgICAgICAoRlRQKSBTcGVjaWZpZXMgYSBjdXN0b20gRlRQIGNvbW1hbmQgdG8gdXNlIGluc3RlYWQgb2ZcbiIKIiAgICAgICAgICBMSVNUIHdoZW4gZG9pbmcgZmlsZSBsaXN0cyB3aXRoIGZ0cC5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAteS8tLXNwZWVkLXRpbWUgPHRpbWU+XG4iCiIgICAgICAgICAgSWYgYSBkb3dubG9hZCBpcyBzbG93ZXIgdGhhbiBzcGVlZC1saW1pdCBieXRlcyBwZXIgc2VjrVxuIgoiICAgICAgICAgIG9uZCBkdXJpbmcgYSBzcGVlZC10aW1lIHBlcmlvZCwgdGhlIGRvd25sb2FkIGdldHNcbiIKIiAgICAgICAgICBhYm9ydGVkLiBJZiBzcGVlZC10aW1lIGlzIHVzZWQsIHRoZSBkZWZhdWx0IHNwZWVkLWxpbWl0XG4iCiIgICAgICAgICAgd2lsbCBiZSAxIHVubGVzcyBzZXQgd2l0aCAteS5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtWS8tLXNwZWVkLWxpbWl0IDxzcGVlZD5cbiIKIiAgICAgICAgICBJZiBhIGRvd25sb2FkIGlzIHNsb3dlciB0aGFuIHRoaXMgZ2l2ZW4gc3BlZWQsIGluIGJ5dGVzXG4iCiIgICAgICAgICAgcGVyIHNlY29uZCwgZm9yIHNwZWVkLXRpbWUgc2Vjb25kcyBpdCBnZXRzIGFib3J0ZWQuXG4iCiIgICAgICAgICAgc3BlZWQtdGltZSBpcyBzZXQgd2l0aCAtWSBhbmQgaXMgMzAgaWYgbm90IHNldC5cbiIKIlxuIgoiICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQgc2VydmVyYWwgdGltZXMsIHRoZSBsYXN0IG9uZVxuIgoiICAgICAgICAgIHdpbGwgYmUgdXNlZC5cbiIKIlxuIgoiICAgICAtei8tLXRpbWUtY29uZCA8ZGF0ZSBleHByZXNzaW9uPlxuIgoiICAgICAgICAgIChIVFRQKSBSZXF1ZXN0IHRvIGdldCBhIGZpbGUgdGhhdCBoYXMgYmVlbiBtb2RpZmllZFxuIgoiICAgICAgICAgIGxhdGVyIHRoYW4gdGhlIGdpdmVuIHRpbWUgYW5kIGRhdGUsIG9yIG9uZSB0aGF0IGhhc1xuIgoiICAgICAgICAgIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRoYXQgdGltZS4gVGhlIGRhdGUgZXhwcmVzc2lvbiBjYW5cbiIKIiAgICAgICAgICBiZSBhbGwgc29ydHMgb2YgZGF0ZSBzdHJpbmdzIG9yIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggYW55XG4iCiIgICAgICAgICAgaW50ZXJuYWwgb25lcywgaXQgdHJpZXMgdG8gZ2V0IHRoZSB0aW1lIGZyb20gYSBnaXZlblxuIgoiICAgICAgICAgIGZpbGUgbmFtZSBpbnN0ZWFkISBTZWUgdGhlIEdOVSBkYXRlKDEpIG9yIGN1cmxfZ2V0rVxuIgoiICAgICAgICAgIGRhdGUoMykgbWFuIHBhZ2VzIGZvciBkYXRlIGV4cHJlc3Npb24gZGV0YWlscy5cbiIKIlxuIgoiICAgICAgICAgIFN0YXJ0IHRoZSBkYXRlIGV4cHJlc3Npb24gd2l0aCBhIGRhc2ggKC0pIHRvIG1ha2UgaXRcbiIKIiAgICAgICAgICByZXF1ZXN0IGZvciBhIGRvY3VtZW50IHRoYXQgaXMgb2xkZXIgdGhhbiB0aGUgZ2l2ZW5cbiIKIiAgICAgICAgICBkYXRlL3RpbWUsIGRlZmF1bHQgaXMgYSBkb2N1bWVudCB0aGF0IGlzIG5ld2VyIHRoYW4gdGhlXG4iCiIgICAgICAgICAgc3BlY2lmaWVkIGRhdGUvdGltZS5cbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHNlcnZlcmFsIHRpbWVzLCB0aGUgbGFzdCBvbmVcbiIKIiAgICAgICAgICB3aWxsIGJlIHVzZWQuXG4iCiJcbiIKIiAgICAgLTMvLS1zc2x2M1xuIgoiICAgICAgICAgIChIVFRQUykgRm9yY2VzIGN1cmwgdG8gdXNlIFNTTCB2ZXJzaW9uIDMgd2hlbiBuZWdvdGlhdK1cbiIKIiAgICAgICAgICBpbmcgd2l0aCBhIHJlbW90ZSBTU0wgc2VydmVyLlxuIgoiXG4iCiIgICAgIC0yLy0tc3NsdjJcbiIKIiAgICAgICAgICAoSFRUUFMpIEZvcmNlcyBjdXJsIHRvIHVzZSBTU0wgdmVyc2lvbiAyIHdoZW4gbmVnb3RpYXStXG4iCiIgICAgICAgICAgaW5nIHdpdGggYSByZW1vdGUgU1NMIHNlcnZlci5cbiIKIlxuIgoiICAgICAtIy8tLXByb2dyZXNzLWJhclxuIgoiICAgICAgICAgIE1ha2UgY3VybCBkaXNwbGF5IHByb2dyZXNzIGluZm9ybWF0aW9uIGFzIGEgcHJvZ3Jlc3NcbiIKIiAgICAgICAgICBiYXIgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBzdGF0aXN0aWNzLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCB0d2ljZSwgdGhlIHNlY29uZCB3aWxsIGFnYWluXG4iCiIgICAgICAgICAgZGlzYWJsZSB0aGUgcHJvZ3Jlc3MgYmFyLlxuIgoiXG4iCiIgICAgIC0tY3JsZlxuIgoiICAgICAgICAgIChGVFApIENvbnZlcnQgTEYgdG8gQ1JMRiBpbiB1cGxvYWQuIFVzZWZ1bCBmb3IgTVZTXG4iCiIgICAgICAgICAgKE9TLzM5MCkuXG4iCiJcbiIKIiAgICAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCB0aGUgc2Vjb25kIHdpbGwgYWdhaW5cbiIKIiAgICAgICAgICBkaXNhYmxlIGNybGYgY29udmVydGluZy5cbiIKIlxuIgoiICAgICAtLXN0ZGVyciA8ZmlsZT5cbiIKIiAgICAgICAgICBSZWRpcmVjdCBhbGwgd3JpdGVzIHRvIHN0ZGVyciB0byB0aGUgc3BlY2lmaWVkIGZpbGVcbiIKIiAgICAgICAgICBpbnN0ZWFkLiBJZiB0aGUgZmlsZSBuYW1lIGlzIGEgcGxhaW4gJy0nLCBpdCBpcyBpbnN0ZWFkXG4iCiIgICAgICAgICAgd3JpdHRlbiB0byBzdGRvdXQuIFRoaXMgb3B0aW9uIGhhcyBubyBwb2ludCB3aGVuIHlvdSdyZVxuIgoiICAgICAgICAgIHVzaW5nIGEgc2hlbGwgd2l0aCBkZWNlbnQgcmVkaXJlY3RpbmcgY2FwYWJpbGl0aWVzLlxuIgoiXG4iCiIgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgdXNlZCBzZXJ2ZXJhbCB0aW1lcywgdGhlIGxhc3Qgb25lXG4iCiIgICAgICAgICAgd2lsbCBiZSB1c2VkLlxuIgoiXG4iCiJGSUxFU1xuIgoiICAgICB+Ly5jdXJscmNcbiIKIiAgICAgICAgICBEZWZhdWx0IGNvbmZpZyBmaWxlLlxuIgoiXG4iCiJFTlZJUk9OTUVOVFxuIgoiICAgICBIVFRQX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQLlxuIgoiXG4iCiIgICAgIEhUVFBTX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGZvciBIVFRQUy5cbiIKIlxuIgoiICAgICBGVFBfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEZUUC5cbiIKIlxuIgoiICAgICBHT1BIRVJfUFJPWFkgW3Byb3RvY29sOi8vXTxob3N0Pls6cG9ydF1cbiIKIiAgICAgICAgICBTZXRzIHByb3h5IHNlcnZlciB0byB1c2UgZm9yIEdPUEhFUi5cbiIKIiAgICAgQUxMX1BST1hZIFtwcm90b2NvbDovL108aG9zdD5bOnBvcnRdXG4iCiIgICAgICAgICAgU2V0cyBwcm94eSBzZXJ2ZXIgdG8gdXNlIGlmIG5vIHByb3RvY29sLXNwZWNpZmljIHByb3h5XG4iCiIgICAgICAgICAgaXMgc2V0LlxuIgoiXG4iCiIgICAgIE5PX1BST1hZIDxjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBob3N0cz5cbiIKIiAgICAgICAgICBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkuXG4iCiIgICAgICAgICAgSWYgc2V0IHRvIGEgYXN0ZXJpc2sgJyonIG9ubHksIGl0IG1hdGNoZXMgYWxsIGhvc3RzLlxuIgoiXG4iCiIgICAgIENPTFVNTlMgPGludGVnZXI+XG4iCiIgICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbC4gIFRoaXMgdmFyaWFibGUgb25seSBhZmZlY3RzXG4iCiIgICAgICAgICAgY3VybCB3aGVuIHRoZSAtLXByb2dyZXNzLWJhciBvcHRpb24gaXMgdXNlZC5cbiIKIlxuIgoiRVhJVCBDT0RFU1xuIgoiICAgICBUaGVyZSBleGlzdHMgYSBidW5jaCBvZiBkaWZmZXJlbnQgZXJyb3IgY29kZXMgYW5kIHRoZWlyIGNvcq1cbiIKIiAgICAgcmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcyB0aGF0IG1heSBhcHBlYXIgZHVyaW5nIGJhZCBjb25kaa1cbiIKIiAgICAgdGlvbnMuIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4aXQgY29kZXMgYXJlOlxuIgoiXG4iCiIgICAgIDEgICAgVW5zdXBwb3J0ZWQgcHJvdG9jb2wuIFRoaXMgYnVpbGQgb2YgY3VybCBoYXMgbm8gc3VwcG9ydFxuIgoiICAgICAgICAgIGZvciB0aGlzIHByb3RvY29sLlxuIgoiXG4iCiIgICAgIDIgICAgRmFpbGVkIHRvIGluaXRpYWxpemUuXG4iCiJcbiIKIiAgICAgMyAgICBVUkwgbWFsZm9ybWF0LiBUaGUgc3ludGF4IHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA0ICAgIFVSTCB1c2VyIG1hbGZvcm1hdHRlZC4gVGhlIHVzZXItcGFydCBvZiB0aGUgVVJMIHN5bnRheFxuIgoiICAgICAgICAgIHdhcyBub3QgY29ycmVjdC5cbiIKIlxuIgoiICAgICA1ICAgIENvdWxkbid0IHJlc29sdmUgcHJveHkuIFRoZSBnaXZlbiBwcm94eSBob3N0IGNvdWxkIG5vdFxuIgoiICAgICAgICAgIGJlIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDYgICAgQ291bGRuJ3QgcmVzb2x2ZSBob3N0LiBUaGUgZ2l2ZW4gcmVtb3RlIGhvc3Qgd2FzIG5vdFxuIgoiICAgICAgICAgIHJlc29sdmVkLlxuIgoiXG4iCiIgICAgIDcgICAgRmFpbGVkIHRvIGNvbm5lY3QgdG8gaG9zdC5cbiIKIlxuIgoiICAgICA4ICAgIEZUUCB3ZWlyZCBzZXJ2ZXIgcmVwbHkuIFRoZSBzZXJ2ZXIgc2VudCBkYXRhIGN1cmxcbiIKIiAgICAgICAgICBjb3VsZG4ndCBwYXJzZS5cbiIKIlxuIgoiICAgICA5ICAgIEZUUCBhY2Nlc3MgZGVuaWVkLiBUaGUgc2VydmVyIGRlbmllZCBsb2dpbi5cbiIKIlxuIgoiICAgICAxMCAgIEZUUCB1c2VyL3Bhc3N3b3JkIGluY29ycmVjdC4gRWl0aGVyIG9uZSBvciBib3RoIHdlcmVcbiIKKTsKIHB1dHMoCiIgICAgICAgICAgbm90IGFjY2VwdGVkIGJ5IHRoZSBzZXJ2ZXIuXG4iCiJcbiIKIiAgICAgMTEgICBGVFAgd2VpcmQgUEFTUyByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNTIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTIgICBGVFAgd2VpcmQgVVNFUiByZXBseS4gQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBVU0VSIHJlcXVlc3QuXG4iCiJcbiIKIiAgICAgMTMgICBGVFAgd2VpcmQgUEFTViByZXBseSwgQ3VybCBjb3VsZG4ndCBwYXJzZSB0aGUgcmVwbHlcbiIKIiAgICAgICAgICBzZW50IHRvIHRoZSBQQVNWIHJlcXVlc3QuXG4iCiIgICAgIDE0ICAgRlRQIHdlaXJkIDIyNyBmb3JtYXQuIEN1cmwgY291bGRuJ3QgcGFyc2UgdGhlIDIyNy1saW5lXG4iCiIgICAgICAgICAgdGhlIHNlcnZlciBzZW50LlxuIgoiXG4iCiIgICAgIDE1ICAgRlRQIGNhbid0IGdldCBob3N0LiBDb3VsZG4ndCByZXNvbHZlIHRoZSBob3N0IElQIHdlIGdvdFxuIgoiICAgICAgICAgIGluIHRoZSAyMjctbGluZS5cbiIKIlxuIgoiICAgICAxNiAgIEZUUCBjYW4ndCByZWNvbm5lY3QuIENvdWxkbid0IGNvbm5lY3QgdG8gdGhlIGhvc3Qgd2VcbiIKIiAgICAgICAgICBnb3QgaW4gdGhlIDIyNy1saW5lLlxuIgoiXG4iCiIgICAgIDE3ICAgRlRQIGNvdWxkbid0IHNldCBiaW5hcnkuIENvdWxkbid0IGNoYW5nZSB0cmFuc2ZlclxuIgoiICAgICAgICAgIG1ldGhvZCB0byBiaW5hcnkuXG4iCiJcbiIKIiAgICAgMTggICBQYXJ0aWFsIGZpbGUuIE9ubHkgYSBwYXJ0IG9mIHRoZSBmaWxlIHdhcyB0cmFuc2ZlcmVkLlxuIgoiXG4iCiIgICAgIDE5ICAgRlRQIGNvdWxkbid0IFJFVFIgZmlsZS4gVGhlIFJFVFIgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMjAgICBGVFAgd3JpdGUgZXJyb3IuIFRoZSB0cmFuc2ZlciB3YXMgcmVwb3J0ZWQgYmFkIGJ5IHRoZVxuIgoiICAgICAgICAgIHNlcnZlci5cbiIKIlxuIgoiICAgICAyMSAgIEZUUCBxdW90ZSBlcnJvci4gQSBxdW90ZSBjb21tYW5kIHJldHVybmVkIGVycm9yIGZyb21cbiIKIiAgICAgICAgICB0aGUgc2VydmVyLlxuIgoiXG4iCiIgICAgIDIyICAgSFRUUCBub3QgZm91bmQuIFRoZSByZXF1ZXN0ZWQgcGFnZSB3YXMgbm90IGZvdW5kLiBUaGlzXG4iCiIgICAgICAgICAgcmV0dXJuIGNvZGUgb25seSBhcHBlYXJzIGlmIC0tZmFpbCBpcyB1c2VkLlxuIgoiXG4iCiIgICAgIDIzICAgV3JpdGUgZXJyb3IuIEN1cmwgY291bGRuJ3Qgd3JpdGUgZGF0YSB0byBhIGxvY2FsXG4iCiIgICAgICAgICAgZmlsZXN5c3RlbSBvciBzaW1pbGFyLlxuIgoiXG4iCiIgICAgIDI0ICAgTWFsZm9ybWF0IHVzZXIuIFVzZXIgbmFtZSBiYWRseSBzcGVjaWZpZWQuXG4iCiJcbiIKIiAgICAgMjUgICBGVFAgY291bGRuJ3QgU1RPUiBmaWxlLiBUaGUgc2VydmVyIGRlbmllZCB0aGUgU1RPUlxuIgoiICAgICAgICAgIG9wZXJhdGlvbi5cbiIKIlxuIgoiICAgICAyNiAgIFJlYWQgZXJyb3IuIFZhcmlvdXMgcmVhZGluZyBwcm9ibGVtcy5cbiIKIlxuIgoiICAgICAyNyAgIE91dCBvZiBtZW1vcnkuIEEgbWVtb3J5IGFsbG9jYXRpb24gcmVxdWVzdCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMjggICBPcGVyYXRpb24gdGltZW91dC4gVGhlIHNwZWNpZmllZCB0aW1lLW91dCBwZXJpb2Qgd2FzXG4iCiIgICAgICAgICAgcmVhY2hlZCBhY2NvcmRpbmcgdG8gdGhlIGNvbmRpdGlvbnMuXG4iCiJcbiIKIiAgICAgMjkgICBGVFAgY291bGRuJ3Qgc2V0IEFTQ0lJLiBUaGUgc2VydmVyIHJldHVybmVkIGFuIHVua25vd25cbiIKIiAgICAgICAgICByZXBseS5cbiIKIlxuIgoiICAgICAzMCAgIEZUUCBQT1JUIGZhaWxlZC4gVGhlIFBPUlQgY29tbWFuZCBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzEgICBGVFAgY291bGRuJ3QgdXNlIFJFU1QuIFRoZSBSRVNUIGNvbW1hbmQgZmFpbGVkLlxuIgoiXG4iCiIgICAgIDMyICAgRlRQIGNvdWxkbid0IHVzZSBTSVpFLiBUaGUgU0laRSBjb21tYW5kIGZhaWxlZC4gVGhlXG4iCiIgICAgICAgICAgY29tbWFuZCBpcyBhbiBleHRlbnNpb24gdG8gdGhlIG9yaWdpbmFsIEZUUCBzcGVjIFJGQ1xuIgoiICAgICAgICAgIDk1OS5cbiIKIlxuIgoiICAgICAzMyAgIEhUVFAgcmFuZ2UgZXJyb3IuIFRoZSByYW5nZSBcImNvbW1hbmRcIiBkaWRuJ3Qgd29yay5cbiIKIiAgICAgMzQgICBIVFRQIHBvc3QgZXJyb3IuIEludGVybmFsIHBvc3QtcmVxdWVzdCBnZW5lcmF0aW9uXG4iCiIgICAgICAgICAgZXJyb3IuXG4iCiJcbiIKIiAgICAgMzUgICBTU0wgY29ubmVjdCBlcnJvci4gVGhlIFNTTCBoYW5kc2hha2luZyBmYWlsZWQuXG4iCiJcbiIKIiAgICAgMzYgICBGVFAgYmFkIGRvd25sb2FkIHJlc3VtZS4gQ291bGRuJ3QgY29udGludWUgYW4gZWFybGllclxuIgoiICAgICAgICAgIGFib3J0ZWQgZG93bmxvYWQuXG4iCiJcbiIKIiAgICAgMzcgICBGSUxFIGNvdWxkbid0IHJlYWQgZmlsZS4gRmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUuIFBlcq1cbiIKIiAgICAgICAgICBtaXNzaW9ucz9cbiIKIlxuIgoiICAgICAzOCAgIExEQVAgY2Fubm90IGJpbmQuIExEQVAgYmluZCBvcGVyYXRpb24gZmFpbGVkLlxuIgoiXG4iCiIgICAgIDM5ICAgTERBUCBzZWFyY2ggZmFpbGVkLlxuIgoiXG4iCiIgICAgIDQwICAgTGlicmFyeSBub3QgZm91bmQuIFRoZSBMREFQIGxpYnJhcnkgd2FzIG5vdCBmb3VuZC5cbiIKIlxuIgoiICAgICA0MSAgIEZ1bmN0aW9uIG5vdCBmb3VuZC4gQSByZXF1aXJlZCBMREFQIGZ1bmN0aW9uIHdhcyBub3RcbiIKIiAgICAgICAgICBmb3VuZC5cbiIKIlxuIgoiICAgICA0MiAgIEFib3J0ZWQgYnkgY2FsbGJhY2suIEFuIGFwcGxpY2F0aW9uIHRvbGQgY3VybCB0byBhYm9ydFxuIgoiICAgICAgICAgIHRoZSBvcGVyYXRpb24uXG4iCiJcbiIKIiAgICAgNDMgICBJbnRlcm5hbCBlcnJvci4gQSBmdW5jdGlvbiB3YXMgY2FsbGVkIHdpdGggYSBiYWQgcGFyYW2tXG4iCiIgICAgICAgICAgZXRlci5cbiIKIlxuIgoiICAgICA0NCAgIEludGVybmFsIGVycm9yLiBBIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW4gYSBiYWQgb3JkZXIuXG4iCiJcbiIKIiAgICAgNDUgICBJbnRlcmZhY2UgZXJyb3IuIEEgc3BlY2lmaWVkIG91dGdvaW5nIGludGVyZmFjZSBjb3VsZFxuIgoiICAgICAgICAgIG5vdCBiZSB1c2VkLlxuIgoiXG4iCiIgICAgIDQ2ICAgQmFkIHBhc3N3b3JkIGVudGVyZWQuIEFuIGVycm9yIHdhcyBzaWduYWxsZWQgd2hlbiB0aGVcbiIKIiAgICAgICAgICBwYXNzd29yZCB3YXMgZW50ZXJlZC5cbiIKIlxuIgoiICAgICA0NyAgIFRvbyBtYW55IHJlZGlyZWN0cy4gV2hlbiBmb2xsb3dpbmcgcmVkaXJlY3RzLCBjdXJsIGhpdFxuIgoiICAgICAgICAgIHRoZSBtYXhpbXVtIGFtb3VudC5cbiIKIlxuIgoiICAgICBYWCAgIFRoZXJlIHdpbGwgYXBwZWFyIG1vcmUgZXJyb3IgY29kZXMgaGVyZSBpbiBmdXR1cmVcbiIKIiAgICAgICAgICByZWxlYXNlcy4gVGhlIGV4aXN0aW5nIG9uZXMgYXJlIG1lYW50IHRvIG5ldmVyIGNoYW5nZS5cbiIKIlxuIgoiQlVHU1xuIgoiICAgICBJZiB5b3UgZG8gZmluZCBidWdzLCBtYWlsIHRoZW0gdG8gY3VybC1idWdAaGF4eC5zZS5cbiIKIlxuIgoiQVVUSE9SUyAvIENPTlRSSUJVVE9SU1xuIgoiICAgICAgLSBEYW5pZWwgU3RlbmJlcmcgPERhbmllbC5TdGVuYmVyZ0BoYXh4LnNlPlxuIgoiICAgICAgLSBSYWZhZWwgU2FndWxhIDxzYWd1bGFAaW5mLnVmcmdzLmJyPlxuIgoiICAgICAgLSBTYW1wbyBLZWxsb21ha2kgPHNhbXBvQGlraS5maT5cbiIKIiAgICAgIC0gTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPlxuIgoiICAgICAgLSBCam9ybiBSZWVzZSA8YnJlZXNlQG1haWwxLnN0b2ZhbmV0LmRrPlxuIgoiICAgICAgLSBKb2hhbiBBbmRlcnNvbiA8am9oYW5AaG9tZW1haWwuY29tPlxuIgoiICAgICAgLSBLamVsbCBFcmljc29uIDxLamVsbC5Fcmljc29uQGhheHguc2U+XG4iCiIgICAgICAtIFRyb3kgRW5nZWwgPHRlbmdlbEBzb25pYy5uZXQ+XG4iCiIgICAgICAtIFJ5YW4gTmVsc29uIDxyeWFuQGluY2guY29tPlxuIgoiICAgICAgLSBCavZybiBTdGVuYmVyZyA8Qmpvcm4uU3RlbmJlcmdAaGF4eC5zZT5cbiIKIiAgICAgIC0gQW5ndXMgTWFja2F5IDxhbWFja2F5QGd1cy5tbC5vcmc+XG4iCiIgICAgICAtIEVyaWMgWW91bmcgPGVheUBjcnlwdHNvZnQuY29tPlxuIgoiICAgICAgLSBTaW1vbiBEaWNrIDxzaW1vbmRAdG90YWxseS5pcnJlbGV2YW50Lm9yZz5cbiIKIiAgICAgIC0gT3JlbiBUaXJvc2ggPG9yZW5AbW9udHkuaGlzaG9tZS5uZXQ+XG4iCiIgICAgICAtIFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT5cbiIKIiAgICAgIC0gR2lsYmVydCBSYW1pcmV6IEpyLiA8Z3JhbUB2ZXJkaWN0LnV0aHNjc2EuZWR1PlxuIgoiICAgICAgLSBBbmRy6XMgR2FyY+1hIDxvcm5hbHV4QHJlZGVzdGIuZXM+XG4iCiIgICAgICAtIERvdWdsYXMgRS4gV2Vnc2NoZWlkIDx3ZWdzY2RAd2hpcmxwb29sLmNvbT5cbiIKIiAgICAgIC0gTWFyayBCdXRsZXIgPGJ1dGxlcm1AeG1pc3Npb24uY29tPlxuIgoiICAgICAgLSBFcmljIFRoZWxpbiA8ZXJpY0BnZW5lcmF0aW9uLWkuY29tPlxuIgoiICAgICAgLSBNYXJjIEJvdWNoZXIgPG1hcmNAbWJzaS5jYT5cbiIKIiAgICAgIC0gR3JlZyBPbnVmZXIgPEdyZWcuT251ZmVyQEVuZy5TdW4uQ09NPlxuIgoiICAgICAgLSBEb3VnIEthdWZtYW4gPGRrYXVmbWFuQHJhaHVsLm5ldD5cbiIKIiAgICAgIC0gRGF2aWQgRXJpa3Nzb24gPGRhdmlkQDJnb29kLmNvbT5cbiIKIiAgICAgIC0gUmFscGggQmVja21hbm4gPHJhYmVAdW5pLXBhZGVyYm9ybi5kZT5cbiIKIiAgICAgIC0gVC4gWWFtYWRhIDx0YWlAaW1hc3kub3IuanA+XG4iCiIgICAgICAtIExhcnMgSi4gQWFzIDxsYXJzYUBzaW0ubm8+XG4iCiIgICAgICAtIEr2cm4gSGFydHJvdGggPEpvZXJuLkhhcnRyb3RoQGNvbXB1dGVyLm9yZz5cbiIKIiAgICAgIC0gTWF0dGhldyBDbGFya2UgPGNsYW1hdEB2YW4ubWF2ZXMuY2E+XG4iCiIgICAgICAtIExpbnVzIE5pZWxzZW4gPExpbnVzLk5pZWxzZW5AaGF4eC5zZT5cbiIKIiAgICAgIC0gRmVsaXggdm9uIExlaXRuZXIgPGZlbGl4QGNvbnZlcmdlbmNlLmRlPlxuIgoiICAgICAgLSBEYW4gWml0dGVyIDxkeml0dGVyQHppdHRlci5uZXQ+XG4iCiIgICAgICAtIEpvbmdraSBTdXdhbmRpIDxKb25na2kuU3V3YW5kaUBlbmcuc3VuLmNvbT5cbiIKIiAgICAgIC0gQ2hyaXMgTWFsdGJ5IDxjaHJpc0BhdXJlbWEuY29tPlxuIgoiICAgICAgLSBSb24gWmFwcCA8cnphcHBlckB5YWhvby5jb20+XG4iCiIgICAgICAtIFBhdWwgTWFycXVpcyA8cG1hcnF1aXNAaW5hbWUuY29tPlxuIgoiICAgICAgLSBFbGxpcyBQcml0Y2hhcmQgPGVsbGlzQGNpdHJpYS5jb20+XG4iCiIgICAgICAtIERhbWllbiBBZGFudCA8ZGFtc0B1c2EubmV0PlxuIgoiICAgICAgLSBDaHJpcyA8Y2JheWxpc3NAY3NjLmNvbWU+XG4iCiIgICAgICAtIE1hcmNvIEcuIFNhbHZhZ25vIDxtZ3NAd2hpei5jamIubmV0PlxuIgoiICAgICAgLSBQYXVsIE1hcnF1aXMgPHBtYXJxdWlzQGluYW1lLmNvbT5cbiIKIiAgICAgIC0gRGF2aWQgTGVCbGFuYyA8ZGxlYmxhbmNAcW54LmNvbT5cbiIKIiAgICAgIC0gUmljaCBHcmF5IGF0IFBsdXMgVGVjaG5vbG9naWVzXG4iCiIgICAgICAtIEx1b25nIERpbmggRHVuZyA8dThsdW9uZ0BsaHN5c3RlbXMuaHU+XG4iCiIgICAgICAtIFRvcnN0ZW4gRm9lcnRzY2ggPHRvcnN0ZW4uZm9lcnRzY2hAZ214Lm5ldD5cbiIKIiAgICAgIC0gS3Jpc3RpYW4gS/ZobnRvcHAgPGtyaXNAa29laG50b3BwLmRlPlxuIgoiICAgICAgLSBGcmVkIE5veiA8Rk5vekBzaWFjLmNvbT5cbiIKIiAgICAgIC0gQ2FvbGFuIE1jTmFtYXJhIDxjYW9sYW5AY3NuLnVsLmllPlxuIgoiICAgICAgLSBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+XG4iCiIgICAgICAtIFN0ZXBoZW4gS2ljayA8c2tpY2tAZXBpY3JlYWxtLmNvbT5cbiIKIiAgICAgIC0gTWFydGluIEhlZGVuZmFsayA8bWhlQHN0YWNrZW4ua3RoLnNlPlxuIgoiICAgICAgLSBSaWNoYXJkIFByZXNjb3R0XG4iCiIgICAgICAtIEphc29uIFMuIFByaWViZSA8cHJpZWJlQHdyYWwtdHYuY29tPlxuIgoiICAgICAgLSBULiBCaGFyYXRoIDxUQmhhcmF0aEByZXNwb25zZW5ldHdvcmtzLmNvbT5cbiIKIiAgICAgIC0gQWxleGFuZGVyIEtvdXJha29zIDxhd2tAdXNlcnMuc291cmNlZm9yZ2UubmV0PlxuIgoiICAgICAgLSBKYW1lcyBHcmlmZml0aHMgPGdyaWZmaXRoc19qYW1lc0B5YWhvby5jb20+XG4iCiJcbiIKIldXV1xuIgoiICAgICBodHRwOi8vY3VybC5oYXh4LnNlXG4iCiJGVFBcbiIKIiAgICAgZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvXG4iCiJcbiIKIlNFRSBBTFNPXG4iCiIgICAgIGZ0cCgxKSwgd2dldCgxKSwgc25hcmYoMSlcbiIKIlxuIgoiTEFURVNUIFZFUlNJT05cbiIKIlxuIgoiICBZb3UgYWx3YXlzIGZpbmQgbmV3cyBhYm91dCB3aGF0J3MgZ29pbmcgb24gYXMgd2VsbCBhcyB0aGUgbGF0ZXN0IHZlcnNpb25zXG4iCiIgIGZyb20gdGhlIGN1cmwgd2ViIHBhZ2VzLCBsb2NhdGVkIGF0OlxuIgoiXG4iCiIgICAgICAgIGh0dHA6Ly9jdXJsLmhheHguc2VcbiIKIlxuIgoiU0lNUExFIFVTQUdFXG4iCiJcbiIKIiAgR2V0IHRoZSBtYWluIHBhZ2UgZnJvbSBuZXRzY2FwZSdzIHdlYi1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgdGhlIHJvb3QgUkVBRE1FIGZpbGUgZnJvbSBmdW5ldCdzIGZ0cC1zZXJ2ZXI6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9mdHAuZnVuZXQuZmkvUkVBRE1FXG4iCiJcbiIKIiAgR2V0IGEgZ29waGVyIGRvY3VtZW50IGZyb20gZnVuZXQncyBnb3BoZXIgc2VydmVyOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZ29waGVyOi8vZ29waGVyLmZ1bmV0LmZpXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgZnJvbSBhIHNlcnZlciB1c2luZyBwb3J0IDgwMDA6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vd3d3LndlaXJkc2VydmVyLmNvbTo4MDAwL1xuIgoiXG4iCiIgIEdldCBhIGxpc3Qgb2YgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGFuIEZUUCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vZnRwLmZ0cy5mcm9udGVjLnNlL1xuIgoiXG4iCiIgIEdldCB0aGUgZGVmaW5pdGlvbiBvZiBjdXJsIGZyb20gYSBkaWN0aW9uYXJ5OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL206Y3VybFxuIgoiXG4iCiJET1dOTE9BRCBUTyBBIEZJTEVcbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLW8gdGhhdHBhZ2UuaHRtbCBodHRwOi8vd3d3Lm5ldHNjYXBlLmNvbS9cbiIKIlxuIgoiICBHZXQgYSB3ZWIgcGFnZSBhbmQgc3RvcmUgaW4gYSBsb2NhbCBmaWxlLCBtYWtlIHRoZSBsb2NhbCBmaWxlIGdldCB0aGUgbmFtZVxuIgoiICBvZiB0aGUgcmVtb3RlIGRvY3VtZW50IChpZiBubyBmaWxlIG5hbWUgcGFydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTCwgdGhpc1xuIgoiICB3aWxsIGZhaWwpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLU8gaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vaW5kZXguaHRtbFxuIgoiXG4iCiJVU0lORyBQQVNTV09SRFNcbiIKIlxuIgoiIEZUUFxuIgoiXG4iCiIgICBUbyBmdHAgZmlsZXMgdXNpbmcgbmFtZStwYXNzd2QsIGluY2x1ZGUgdGhlbSBpbiB0aGUgVVJMIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly9uYW1lOnBhc3N3ZEBtYWNoaW5lLmRvbWFpbjpwb3J0L2Z1bGwvcGF0aC90by9maWxlXG4iCiJcbiIKIiAgIG9yIHNwZWNpZnkgdGhlbSB3aXRoIHRoZSAtdSBmbGFnIGxpa2VcbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGZ0cDovL21hY2hpbmUuZG9tYWluOnBvcnQvZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiIEhUVFBcbiIKIlxuIgoiICAgVGhlIEhUVFAgVVJMIGRvZXNuJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCBpbiB0aGUgVVJMIHN0cmluZy4gQ3VybFxuIgoiICAgZG9lcyBzdXBwb3J0IHRoYXQgYW55d2F5IHRvIHByb3ZpZGUgYSBmdHAtc3R5bGUgaW50ZXJmYWNlIGFuZCB0aHVzIHlvdSBjYW5cbiIKIiAgIHBpY2sgYSBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwOi8vbmFtZTpwYXNzd2RAbWFjaGluZS5kb21haW4vZnVsbC9wYXRoL3RvL2ZpbGVcbiIKIlxuIgoiICAgb3Igc3BlY2lmeSB1c2VyIGFuZCBwYXNzd29yZCBzZXBhcmF0ZWx5IGxpa2UgaW5cbiIKIlxuIgoiICAgICAgICBjdXJsIC11IG5hbWU6cGFzc3dkIGh0dHA6Ly9tYWNoaW5lLmRvbWFpbi9mdWxsL3BhdGgvdG8vZmlsZVxuIgoiXG4iCiIgICBOT1RFISBTaW5jZSBIVFRQIFVSTHMgZG9uJ3Qgc3VwcG9ydCB1c2VyIGFuZCBwYXNzd29yZCwgeW91IGNhbid0IHVzZSB0aGF0XG4iCiIgICBzdHlsZSB3aGVuIHVzaW5nIEN1cmwgdmlhIGEgcHJveHkuIFlvdSBfbXVzdF8gdXNlIHRoZSAtdSBzdHlsZSBmZXRjaFxuIgoiICAgZHVyaW5nIHN1Y2ggY2lyY3Vtc3RhbmNlcy5cbiIKIlxuIgoiIEhUVFBTXG4iCiJcbiIKIiAgIFByb2JhYmx5IG1vc3QgY29tbW9ubHkgdXNlZCB3aXRoIHByaXZhdGUgY2VydGlmaWNhdGVzLCBhcyBleHBsYWluZWQgYmVsb3cuXG4iCiJcbiIKIiBHT1BIRVJcbiIKIlxuIgoiICAgQ3VybCBmZWF0dXJlcyBubyBwYXNzd29yZCBzdXBwb3J0IGZvciBnb3BoZXIuXG4iCiJcbiIKIlBST1hZXG4iCiJcbiIKIiBHZXQgYW4gZnRwIGZpbGUgdXNpbmcgYSBwcm94eSBuYW1lZCBteS1wcm94eSB0aGF0IHVzZXMgcG9ydCA4ODg6XG4iCiJcbiIKIiAgICAgICAgY3VybCAteCBteS1wcm94eTo4ODggZnRwOi8vZnRwLmxlYWNoc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiBHZXQgYSBmaWxlIGZyb20gYSBIVFRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIHVzZXIgYW5kIHBhc3N3b3JkLCB1c2luZyB0aGVcbiIKIiBzYW1lIHByb3h5IGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTb21lIHByb3hpZXMgcmVxdWlyZSBzcGVjaWFsIGF1dGhlbnRpY2F0aW9uLiBTcGVjaWZ5IGJ5IHVzaW5nIC1VIGFzIGFib3ZlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVUgdXNlcjpwYXNzd2QgLXggbXktcHJveHk6ODg4IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiBTZWUgYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIEN1cmwgc3VwcG9ydCB0aGF0IG9mZmVyIGZ1cnRoZXIgcHJveHlcbiIKIiBjb250cm9sLlxuIgoiXG4iCiJSQU5HRVNcbiIKIlxuIgoiICBXaXRoIEhUVFAgMS4xIGJ5dGUtcmFuZ2VzIHdlcmUgaW50cm9kdWNlZC4gVXNpbmcgdGhpcywgYSBjbGllbnQgY2FuIHJlcXVlc3RcbiIKIiAgdG8gZ2V0IG9ubHkgb25lIG9yIG1vcmUgc3VicGFydHMgb2YgYSBzcGVjaWZpZWQgZG9jdW1lbnQuIEN1cmwgc3VwcG9ydHNcbiIKIiAgdGhpcyB3aXRoIHRoZSAtciBmbGFnLlxuIgoiXG4iCiIgIEdldCB0aGUgZmlyc3QgMTAwIGJ5dGVzIG9mIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtciAwLTk5IGh0dHA6Ly93d3cuZ2V0LnRoaXMvXG4iCiJcbiIKIiAgR2V0IHRoZSBsYXN0IDUwMCBieXRlcyBvZiBhIGRvY3VtZW50OlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXIgLTUwMCBodHRwOi8vd3d3LmdldC50aGlzL1xuIgoiXG4iCiIgIEN1cmwgYWxzbyBzdXBwb3J0cyBzaW1wbGUgcmFuZ2VzIGZvciBGVFAgZmlsZXMgYXMgd2VsbC4gVGhlbiB5b3UgY2FuIG9ubHlcbiIKIiAgc3BlY2lmeSBzdGFydCBhbmQgc3RvcCBwb3NpdGlvbi5cbiIKIlxuIgoiICBHZXQgdGhlIGZpcnN0IDEwMCBieXRlcyBvZiBhIGRvY3VtZW50IHVzaW5nIEZUUDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1yIDAtOTkgZnRwOi8vd3d3LmdldC50aGlzL1JFQURNRSAgXG4iCiJcbiIKIlVQTE9BRElOR1xuIgoiXG4iCiIgRlRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGZ0cCBzaXRlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXQgZnRwOi8vZnRwLnVwbG9hZC5jb20vbXlmaWxlXG4iCiJcbiIKIiAgVXBsb2FkIGRhdGEgZnJvbSBhIHNwZWNpZmllZCBmaWxlLCBsb2dpbiB3aXRoIHVzZXIgYW5kIHBhc3N3b3JkOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIHRoZSByZW1vdGUgc2l0ZSwgYW5kIHVzZSB0aGUgbG9jYWwgZmlsZSBuYW1lIHJlbW90ZVxuIgoiICB0b286XG4iCiIgXG4iCiIgICAgICAgIGN1cmwgLVQgdXBsb2FkZmlsZSAtdSB1c2VyOnBhc3N3ZCBmdHA6Ly9mdHAudXBsb2FkLmNvbS9cbiIKIlxuIgoiICBVcGxvYWQgYSBsb2NhbCBmaWxlIHRvIGdldCBhcHBlbmRlZCB0byB0aGUgcmVtb3RlIGZpbGUgdXNpbmcgZnRwOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLVQgbG9jYWxmaWxlIC1hIGZ0cDovL2Z0cC51cGxvYWQuY29tL3JlbW90ZWZpbGVcbiIKIlxuIgoiICBDdXJsIGFsc28gc3VwcG9ydHMgZnRwIHVwbG9hZCB0aHJvdWdoIGEgcHJveHksIGJ1dCBvbmx5IGlmIHRoZSBwcm94eSBpc1xuIgoiICBjb25maWd1cmVkIHRvIGFsbG93IHRoYXQga2luZCBvZiB0dW5uZWxpbmcuIElmIGl0IGRvZXMsIHlvdSBjYW4gcnVuIGN1cmwgaW5cbiIKIiAgYSBmYXNoaW9uIHNpbWlsYXIgdG86XG4iCiJcbiIKIiAgICAgICAgY3VybCAtLXByb3h5dHVubmVsIC14IHByb3h5OnBvcnQgLVQgbG9jYWxmaWxlIGZ0cC51cGxvYWQuY29tXG4iCiJcbiIKIiBIVFRQXG4iCiJcbiIKIiAgVXBsb2FkIGFsbCBkYXRhIG9uIHN0ZGluIHRvIGEgc3BlY2lmaWVkIGh0dHAgc2l0ZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC10IGh0dHA6Ly93d3cudXBsb2FkLmNvbS9teWZpbGVcbiIKIlxuIgoiICBOb3RlIHRoYXQgdGhlIGh0dHAgc2VydmVyIG11c3QndmUgYmVlbiBjb25maWd1cmVkIHRvIGFjY2VwdCBQVVQgYmVmb3JlIHRoaXNcbiIKIiAgY2FuIGJlIGRvbmUgc3VjY2Vzc2Z1bGx5LlxuIgoiXG4iCiIgIEZvciBvdGhlciB3YXlzIHRvIGRvIGh0dHAgZGF0YSB1cGxvYWQsIHNlZSB0aGUgUE9TVCBzZWN0aW9uIGJlbG93LlxuIgoiXG4iCiJWRVJCT1NFIC8gREVCVUdcbiIKIlxuIgoiICBJZiBjdXJsIGZhaWxzIHdoZXJlIGl0IGlzbid0IHN1cHBvc2VkIHRvLCBpZiB0aGUgc2VydmVycyBkb24ndCBsZXQgeW91XG4iCiIgIGluLCBpZiB5b3UgY2FuJ3QgdW5kZXJzdGFuZCB0aGUgcmVzcG9uc2VzOiB1c2UgdGhlIC12IGZsYWcgdG8gZ2V0IFZFUkJPU0VcbiIKIiAgZmV0Y2hpbmcuIEN1cmwgd2lsbCBvdXRwdXQgbG90cyBvZiBpbmZvIGFuZCBhbGwgZGF0YSBpdCBzZW5kcyBhbmRcbiIKIiAgcmVjZWl2ZXMgaW4gb3JkZXIgdG8gbGV0IHRoZSB1c2VyIHNlZSBhbGwgY2xpZW50LXNlcnZlciBpbnRlcmFjdGlvbi5cbiIKIlxuIgoiICAgICAgICBjdXJsIC12IGZ0cDovL2Z0cC51cGxvYWQuY29tL1xuIgopOwogcHV0cygKIlxuIgoiREVUQUlMRUQgSU5GT1JNQVRJT05cbiIKIlxuIgoiICBEaWZmZXJlbnQgcHJvdG9jb2xzIHByb3ZpZGUgZGlmZmVyZW50IHdheXMgb2YgZ2V0dGluZyBkZXRhaWxlZCBpbmZvcm1hdGlvblxuIgoiICBhYm91dCBzcGVjaWZpYyBmaWxlcy9kb2N1bWVudHMuIFRvIGdldCBjdXJsIHRvIHNob3cgZGV0YWlsZWQgaW5mb3JtYXRpb25cbiIKIiAgYWJvdXQgYSBzaW5nbGUgZmlsZSwgeW91IHNob3VsZCB1c2UgLUkvLS1oZWFkIG9wdGlvbi4gSXQgZGlzcGxheXMgYWxsXG4iCiIgIGF2YWlsYWJsZSBpbmZvIG9uIGEgc2luZ2xlIGZpbGUgZm9yIEhUVFAgYW5kIEZUUC4gVGhlIEhUVFAgaW5mb3JtYXRpb24gaXMgYVxuIgoiICBsb3QgbW9yZSBleHRlbnNpdmUuXG4iCiJcbiIKIiAgRm9yIEhUVFAsIHlvdSBjYW4gZ2V0IHRoZSBoZWFkZXIgaW5mb3JtYXRpb24gKHRoZSBzYW1lIGFzIC1JIHdvdWxkIHNob3cpXG4iCiIgIHNob3duIGJlZm9yZSB0aGUgZGF0YSBieSB1c2luZyAtaS8tLWluY2x1ZGUuIEN1cmwgdW5kZXJzdGFuZHMgdGhlXG4iCiIgIC1ELy0tZHVtcC1oZWFkZXIgb3B0aW9uIHdoZW4gZ2V0dGluZyBmaWxlcyBmcm9tIGJvdGggRlRQIGFuZCBIVFRQLCBhbmQgaXRcbiIKIiAgd2lsbCB0aGVuIHN0b3JlIHRoZSBoZWFkZXJzIGluIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKIlxuIgoiICBTdG9yZSB0aGUgSFRUUCBoZWFkZXJzIGluIGEgc2VwYXJhdGUgZmlsZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycy50eHQgY3VybC5oYXh4LnNlXG4iCiJcbiIKIiAgTm90ZSB0aGF0IGhlYWRlcnMgc3RvcmVkIGluIGEgc2VwYXJhdGUgZmlsZSBjYW4gYmUgdmVyeSB1c2VmdWwgYXQgYSBsYXRlclxuIgoiICB0aW1lIGlmIHlvdSB3YW50IGN1cmwgdG8gdXNlIGNvb2tpZXMgc2VudCBieSB0aGUgc2VydmVyLiBNb3JlIGFib3V0IHRoYXQgaW5cbiIKIiAgdGhlIGNvb2tpZXMgc2VjdGlvbi5cbiIKIlxuIgoiUE9TVCAoSFRUUClcbiIKIlxuIgoiICBJdCdzIGVhc3kgdG8gcG9zdCBkYXRhIHVzaW5nIGN1cmwuIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgLWQgPGRhdGE+XG4iCiIgIG9wdGlvbi4gIFRoZSBwb3N0IGRhdGEgbXVzdCBiZSB1cmxlbmNvZGVkLlxuIgoiXG4iCiIgIFBvc3QgYSBzaW1wbGUgXCJuYW1lXCIgYW5kIFwicGhvbmVcIiBndWVzdGJvb2suXG4iCiJcbiIKIiAgICAgICAgY3VybCAtZCBcIm5hbWU9UmFmYWVsJTIwU2FndWxhJnBob25lPTMzMjA3ODBcIiBcXFxuIgoiICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cud2hlcmUuY29tL2d1ZXN0LmNnaVxuIgoiXG4iCiIgIEhvdyB0byBwb3N0IGEgZm9ybSB3aXRoIGN1cmwsIGxlc3NvbiAjMTpcbiIKIlxuIgoiICBEaWcgb3V0IGFsbCB0aGUgPGlucHV0PiB0YWdzIGluIHRoZSBmb3JtIHRoYXQgeW91IHdhbnQgdG8gZmlsbCBpbi4gKFRoZXJlJ3NcbiIKIiAgYSBwZXJsIHByb2dyYW0gY2FsbGVkIGZvcm1maW5kLnBsIG9uIHRoZSBjdXJsIHNpdGUgdGhhdCBoZWxwcyB3aXRoIHRoaXMpLlxuIgoiXG4iCiIgIElmIHRoZXJlJ3MgYSBcIm5vcm1hbFwiIHBvc3QsIHlvdSB1c2UgLWQgdG8gcG9zdC4gLWQgdGFrZXMgYSBmdWxsIFwicG9zdFxuIgoiICBzdHJpbmdcIiwgd2hpY2ggaXMgaW4gdGhlIGZvcm1hdFxuIgoiXG4iCiIgICAgICAgIDx2YXJpYWJsZTE+PTxkYXRhMT4mPHZhcmlhYmxlMj49PGRhdGEyPiYuLi5cbiIKIlxuIgoiICBUaGUgJ3ZhcmlhYmxlJyBuYW1lcyBhcmUgdGhlIG5hbWVzIHNldCB3aXRoIFwibmFtZT1cIiBpbiB0aGUgPGlucHV0PiB0YWdzLCBhbmRcbiIKIiAgdGhlIGRhdGEgaXMgdGhlIGNvbnRlbnRzIHlvdSB3YW50IHRvIGZpbGwgaW4gZm9yIHRoZSBpbnB1dHMuIFRoZSBkYXRhICptdXN0KlxuIgoiICBiZSBwcm9wZXJseSBVUkwgZW5jb2RlZC4gVGhhdCBtZWFucyB5b3UgcmVwbGFjZSBzcGFjZSB3aXRoICsgYW5kIHRoYXQgeW91XG4iCiIgIHdyaXRlIHdlaXJkIGxldHRlcnMgd2l0aCAlWFggd2hlcmUgWFggaXMgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mXG4iCiIgIHRoZSBsZXR0ZXIncyBBU0NJSSBjb2RlLlxuIgoiXG4iCiIgIEV4YW1wbGU6XG4iCiJcbiIKIiAgKHBhZ2UgbG9jYXRlZCBhdCBodHRwOi8vd3d3LmZvcm1wb3N0LmNvbS9nZXR0aGlzL1xuIgoiXG4iCiIgICAgICAgIDxmb3JtIGFjdGlvbj1cInBvc3QuY2dpXCIgbWV0aG9kPVwicG9zdFwiPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT11c2VyIHNpemU9MTA+XG4iCiIgICAgICAgIDxpbnB1dCBuYW1lPXBhc3MgdHlwZT1wYXNzd29yZCBzaXplPTEwPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1pZCB0eXBlPWhpZGRlbiB2YWx1ZT1cImJsYWJsYWJsYVwiPlxuIgoiICAgICAgICA8aW5wdXQgbmFtZT1kaW5nIHZhbHVlPVwic3VibWl0XCI+XG4iCiIgICAgICAgIDwvZm9ybT5cbiIKIlxuIgoiICBXZSB3YW50IHRvIGVudGVyIHVzZXIgJ2Zvb2Jhcicgd2l0aCBwYXNzd29yZCAnMTIzNDUnLlxuIgoiXG4iCiIgIFRvIHBvc3QgdG8gdGhpcywgeW91IGVudGVyIGEgY3VybCBjb21tYW5kIGxpbmUgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1kIFwidXNlcj1mb29iYXImcGFzcz0xMjM0NSZpZD1ibGFibGFibGEmZGlnPXN1Ym1pdFwiICAoY29udGludWVzKVxuIgoiICAgICAgICAgIGh0dHA6Ly93d3cuZm9ybXBvc3QuY29tL2dldHRoaXMvcG9zdC5jZ2lcbiIKIlxuIgoiXG4iCiIgIFdoaWxlIC1kIHVzZXMgdGhlIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBtaW1lLXR5cGUsIGdlbmVyYWxseVxuIgoiICB1bmRlcnN0b29kIGJ5IENHSSdzIGFuZCBzaW1pbGFyLCBjdXJsIGFsc28gc3VwcG9ydHMgdGhlIG1vcmUgY2FwYWJsZVxuIgoiICBtdWx0aXBhcnQvZm9ybS1kYXRhIHR5cGUuIFRoaXMgbGF0dGVyIHR5cGUgc3VwcG9ydHMgdGhpbmdzIGxpa2UgZmlsZSB1cGxvYWQuXG4iCiJcbiIKIiAgLUYgYWNjZXB0cyBwYXJhbWV0ZXJzIGxpa2UgLUYgXCJuYW1lPWNvbnRlbnRzXCIuIElmIHlvdSB3YW50IHRoZSBjb250ZW50cyB0b1xuIgoiICBiZSByZWFkIGZyb20gYSBmaWxlLCB1c2UgPEBmaWxlbmFtZT4gYXMgY29udGVudHMuIFdoZW4gc3BlY2lmeWluZyBhIGZpbGUsXG4iCiIgIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IHdoaWNoIGNvbnRlbnQgdHlwZSB0aGUgZmlsZSBpcywgYnkgYXBwZW5kaW5nXG4iCiIgICc7dHlwZT08bWltZSB0eXBlPicgdG8gdGhlIGZpbGUgbmFtZS4gWW91IGNhbiBhbHNvIHBvc3QgY29udGVudHMgb2Ygc2V2ZXJhbFxuIgoiICBmaWxlcyBpbiBvbmUgZmllbGQuIFNvIHRoYXQgdGhlIGZpZWxkIG5hbWUgJ2Nvb2xmaWxlcycgY2FuIGJlIHNlbnQgdGhyZWVcbiIKIiAgZmlsZXMgd2l0aCBkaWZmZXJlbnQgY29udGVudCB0eXBlcyBpbiBhIG1hbm5lciBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJjb29sZmlsZXM9QGZpbDEuZ2lmO3R5cGU9aW1hZ2UvZ2lmLGZpbDIudHh0LGZpbDMuaHRtbFwiIFxcXG4iCiIgICAgICAgIGh0dHA6Ly93d3cucG9zdC5jb20vcG9zdGl0LmNnaVxuIgoiXG4iCiIgIElmIGNvbnRlbnQtdHlwZSBpcyBub3Qgc3BlY2lmaWVkLCBjdXJsIHdpbGwgdHJ5IHRvIGd1ZXNzIGZyb20gdGhlIGV4dGVuc2lvblxuIgoiICAoaXQgb25seSBrbm93cyBhIGZldyksIG9yIHVzZSB0aGUgcHJldmlvdXNseSBzcGVjaWZpZWQgdHlwZSAoZnJvbSBhbiBlYXJsaWVyXG4iCiIgIGZpbGUgaWYgc2V2ZXJhbCBmaWxlcyBhcmUgc3BlY2lmaWVkIGluIGEgbGlzdCkgb3IgZmluYWxseSB1c2luZyB0aGUgZGVmYXVsdFxuIgoiICB0eXBlICd0ZXh0L3BsYWluJy5cbiIKIlxuIgoiICBFbXVsYXRlIGEgZmlsbC1pbiBmb3JtIHdpdGggLUYuIExldCdzIHNheSB5b3UgZmlsbCBpbiB0aHJlZSBmaWVsZHMgaW4gYVxuIgoiICBmb3JtLiBPbmUgZmllbGQgaXMgYSBmaWxlIG5hbWUgd2hpY2ggdG8gcG9zdCwgb25lIGZpZWxkIGlzIHlvdXIgbmFtZSBhbmQgb25lXG4iCiIgIGZpZWxkIGlzIGEgZmlsZSBkZXNjcmlwdGlvbi4gV2Ugd2FudCB0byBwb3N0IHRoZSBmaWxlIHdlIGhhdmUgd3JpdHRlbiBuYW1lZFxuIgoiICBcImNvb2x0ZXh0LnR4dFwiLiBUbyBsZXQgY3VybCBkbyB0aGUgcG9zdGluZyBvZiB0aGlzIGRhdGEgaW5zdGVhZCBvZiB5b3VyXG4iCiIgIGZhdm91cml0ZSBicm93c2VyLCB5b3UgaGF2ZSB0byBjaGVjayBvdXQgdGhlIEhUTUwgb2YgdGhlIGZvcm0gcGFnZSB0byBnZXQgdG9cbiIKIiAga25vdyB0aGUgbmFtZXMgb2YgdGhlIGlucHV0IGZpZWxkcy4gSW4gb3VyIGV4YW1wbGUsIHRoZSBpbnB1dCBmaWVsZCBuYW1lcyBhcmVcbiIKIiAgJ2ZpbGUnLCAneW91cm5hbWUnIGFuZCAnZmlsZWRlc2NyaXB0aW9uJy5cbiIKIlxuIgoiICAgICAgICBjdXJsIC1GIFwiZmlsZT1AY29vbHRleHQudHh0XCIgLUYgXCJ5b3VybmFtZT1EYW5pZWxcIiBcXFxuIgoiICAgICAgICAgICAgIC1GIFwiZmlsZWRlc2NyaXB0aW9uPUNvb2wgdGV4dCBmaWxlIHdpdGggY29vbCB0ZXh0IGluc2lkZVwiIFxcXG4iCiIgICAgICAgICAgICAgaHR0cDovL3d3dy5wb3N0LmNvbS9wb3N0aXQuY2dpXG4iCiJcbiIKIiAgU28sIHRvIHNlbmQgdHdvIGZpbGVzIGluIG9uZSBwb3N0IHlvdSBjYW4gZG8gaXQgaW4gdHdvIHdheXM6XG4iCiJcbiIKIiAgMS4gU2VuZCBtdWx0aXBsZSBmaWxlcyBpbiBhIHNpbmdsZSBcImZpZWxkXCIgd2l0aCBhIHNpbmdsZSBmaWVsZCBuYW1lOlxuIgoiIFxuIgoiICAgICAgICBjdXJsIC1GIFwicGljdHVyZXM9QGRvZy5naWYsY2F0LmdpZlwiIFxuIgoiIFxuIgoiICAyLiBTZW5kIHR3byBmaWVsZHMgd2l0aCB0d28gZmllbGQgbmFtZXM6IFxuIgoiXG4iCiIgICAgICAgIGN1cmwgLUYgXCJkb2NwaWN0dXJlPUBkb2cuZ2lmXCIgLUYgXCJjYXRwaWN0dXJlPUBjYXQuZ2lmXCIgXG4iCiJcbiIKIlJFRkVSRVJcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIGFkZHJlc3NcbiIKIiAgdGhhdCByZWZlcnJlZCB0byBhY3R1YWwgcGFnZSwgYW5kIGN1cmwgYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhhdFxuIgoiICByZWZlcnJlciB0byBnZXQgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvXG4iCiIgIGZvb2wgb3IgdHJpY2sgc3R1cGlkIHNlcnZlcnMgb3IgQ0dJIHNjcmlwdHMgdGhhdCByZWx5IG9uIHRoYXQgaW5mb3JtYXRpb25cbiIKIiAgYmVpbmcgYXZhaWxhYmxlIG9yIGNvbnRhaW4gY2VydGFpbiBkYXRhLlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWUgd3d3LmNvb2xzaXRlLmNvbSBodHRwOi8vd3d3LnNob3dtZS5jb20vXG4iCiJcbiIKIiAgTk9URTogVGhlIHJlZmVyZXIgZmllbGQgaXMgZGVmaW5lZCBpbiB0aGUgSFRUUCBzcGVjIHRvIGJlIGEgZnVsbCBVUkwuXG4iCiJcbiIKIlVTRVIgQUdFTlRcbiIKIlxuIgoiICBBIEhUVFAgcmVxdWVzdCBoYXMgdGhlIG9wdGlvbiB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2VyXG4iCiIgIHRoYXQgZ2VuZXJhdGVkIHRoZSByZXF1ZXN0LiBDdXJsIGFsbG93cyBpdCB0byBiZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRcbiIKIiAgbGluZS4gSXQgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gZm9vbCBvciB0cmljayBzdHVwaWQgc2VydmVycyBvciBDR0lcbiIKIiAgc2NyaXB0cyB0aGF0IG9ubHkgYWNjZXB0IGNlcnRhaW4gYnJvd3NlcnMuXG4iCiJcbiIKIiAgRXhhbXBsZTpcbiIKIlxuIgoiICBjdXJsIC1BICdNb3ppbGxhLzMuMCAoV2luOTU7IEkpJyBodHRwOi8vd3d3Lm5hdGlvbnNiYW5rLmNvbS9cbiIKIlxuIgoiICBPdGhlciBjb21tb24gc3RyaW5nczpcbiIKIiAgICAnTW96aWxsYS8zLjAgKFdpbjk1OyBJKScgICAgIE5ldHNjYXBlIFZlcnNpb24gMyBmb3IgV2luZG93cyA5NVxuIgoiICAgICdNb3ppbGxhLzMuMDQgKFdpbjk1OyBVKScgICAgTmV0c2NhcGUgVmVyc2lvbiAzIGZvciBXaW5kb3dzIDk1XG4iCiIgICAgJ01vemlsbGEvMi4wMiAoT1MvMjsgVSknICAgICBOZXRzY2FwZSBWZXJzaW9uIDIgZm9yIE9TLzJcbiIKIiAgICAnTW96aWxsYS80LjA0IFtlbl0gKFgxMTsgVTsgQUlYIDQuMjsgTmF2KScgICAgICAgICAgIE5TIGZvciBBSVhcbiIKIiAgICAnTW96aWxsYS80LjA1IFtlbl0gKFgxMTsgVTsgTGludXggMi4wLjMyIGk1ODYpJyAgICAgIE5TIGZvciBMaW51eFxuIgoiXG4iCiIgIE5vdGUgdGhhdCBJbnRlcm5ldCBFeHBsb3JlciB0cmllcyBoYXJkIHRvIGJlIGNvbXBhdGlibGUgaW4gZXZlcnkgd2F5OlxuIgoiICAgICdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA0LjAxOyBXaW5kb3dzIDk1KScgICAgTVNJRSBmb3IgVzk1XG4iCiJcbiIKIiAgTW96aWxsYSBpcyBub3QgdGhlIG9ubHkgcG9zc2libGUgVXNlci1BZ2VudCBuYW1lOlxuIgoiICAgICdLb25xdWVyb3IvMS4wJyAgICAgICAgICAgICBLREUgRmlsZSBNYW5hZ2VyIGRlc2t0b3AgY2xpZW50XG4iCiIgICAgJ0x5bngvMi43LjEgbGlid3d3LUZNLzIuMTQnIEx5bnggY29tbWFuZCBsaW5lIGJyb3dzZXJcbiIKIlxuIgoiQ09PS0lFU1xuIgoiXG4iCiIgIENvb2tpZXMgYXJlIGdlbmVyYWxseSB1c2VkIGJ5IHdlYiBzZXJ2ZXJzIHRvIGtlZXAgc3RhdGUgaW5mb3JtYXRpb24gYXQgdGhlXG4iCiIgIGNsaWVudCdzIHNpZGUuIFRoZSBzZXJ2ZXIgc2V0cyBjb29raWVzIGJ5IHNlbmRpbmcgYSByZXNwb25zZSBsaW5lIGluIHRoZVxuIgoiICBoZWFkZXJzIHRoYXQgbG9va3MgbGlrZSAnU2V0LUNvb2tpZTogPGRhdGE+JyB3aGVyZSB0aGUgZGF0YSBwYXJ0IHRoZW5cbiIKIiAgdHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIE5BTUU9VkFMVUUgcGFpcnMgKHNlcGFyYXRlZCBieSBzZW1pY29sb25zICc7J1xuIgoiICBsaWtlIFwiTkFNRTE9VkFMVUUxOyBOQU1FMj1WQUxVRTI7XCIpLiBUaGUgc2VydmVyIGNhbiBhbHNvIHNwZWNpZnkgZm9yIHdoYXRcbiIKIiAgcGF0aCB0aGUgXCJjb29raWVcIiBzaG91bGQgYmUgdXNlZCBmb3IgKGJ5IHNwZWNpZnlpbmcgXCJwYXRoPXZhbHVlXCIpLCB3aGVuIHRoZVxuIgoiICBjb29raWUgc2hvdWxkIGV4cGlyZSAoXCJleHBpcmU9REFURVwiKSwgZm9yIHdoYXQgZG9tYWluIHRvIHVzZSBpdFxuIgoiICAoXCJkb21haW49TkFNRVwiKSBhbmQgaWYgaXQgc2hvdWxkIGJlIHVzZWQgb24gc2VjdXJlIGNvbm5lY3Rpb25zIG9ubHlcbiIKIiAgKFwic2VjdXJlXCIpLlxuIgoiXG4iCiIgIElmIHlvdSd2ZSByZWNlaXZlZCBhIHBhZ2UgZnJvbSBhIHNlcnZlciB0aGF0IGNvbnRhaW5zIGEgaGVhZGVyIGxpa2U6XG4iCiIgICAgICAgIFNldC1Db29raWU6IHNlc3Npb25pZD1ib28xMjM7IHBhdGg9XCIvZm9vXCI7XG4iCiJcbiIKIiAgaXQgbWVhbnMgdGhlIHNlcnZlciB3YW50cyB0aGF0IGZpcnN0IHBhaXIgcGFzc2VkIG9uIHdoZW4gd2UgZ2V0IGFueXRoaW5nIGluXG4iCiIgIGEgcGF0aCBiZWdpbm5pbmcgd2l0aCBcIi9mb29cIi5cbiIKIlxuIgoiICBFeGFtcGxlLCBnZXQgYSBwYWdlIHRoYXQgd2FudHMgbXkgbmFtZSBwYXNzZWQgaW4gYSBjb29raWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBcIm5hbWU9RGFuaWVsXCIgd3d3LnNpbGx5cGFnZS5jb21cbiIKIlxuIgoiICBDdXJsIGFsc28gaGFzIHRoZSBhYmlsaXR5IHRvIHVzZSBwcmV2aW91c2x5IHJlY2VpdmVkIGNvb2tpZXMgaW4gZm9sbG93aW5nXG4iCiIgIHNlc3Npb25zLiBJZiB5b3UgZ2V0IGNvb2tpZXMgZnJvbSBhIHNlcnZlciBhbmQgc3RvcmUgdGhlbSBpbiBhIGZpbGUgaW4gYVxuIgoiICBtYW5uZXIgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0tZHVtcC1oZWFkZXIgaGVhZGVycyB3d3cuZXhhbXBsZS5jb21cbiIKIlxuIgoiICAuLi4geW91IGNhbiB0aGVuIGluIGEgc2Vjb25kIGNvbm5lY3QgdG8gdGhhdCAob3IgYW5vdGhlcikgc2l0ZSwgdXNlIHRoZVxuIgoiICBjb29raWVzIGZyb20gdGhlICdoZWFkZXJzJyBmaWxlIGxpa2U6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYiBoZWFkZXJzIHd3dy5leGFtcGxlLmNvbVxuIgoiXG4iCiIgIE5vdGUgdGhhdCBieSBzcGVjaWZ5aW5nIC1iIHlvdSBlbmFibGUgdGhlIFwiY29va2llIGF3YXJlbmVzc1wiIGFuZCB3aXRoIC1MXG4iCiIgIHlvdSBjYW4gbWFrZSBjdXJsIGZvbGxvdyBhIGxvY2F0aW9uOiAod2hpY2ggb2Z0ZW4gaXMgdXNlZCBpbiBjb21iaW5hdGlvblxuIgoiICB3aXRoIGNvb2tpZXMpLiBTbyB0aGF0IGlmIGEgc2l0ZSBzZW5kcyBjb29raWVzIGFuZCBhIGxvY2F0aW9uLCB5b3UgY2FuXG4iCiIgIHVzZSBhIG5vbi1leGlzdGluZyBmaWxlIHRvIHRyaWcgdGhlIGNvb2tpZSBhd2FyZW5lc3MgbGlrZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1MIC1iIGVtcHR5LWZpbGUgd3d3LmV4YW1wbGUuY29tXG4iCiJcbiIKIiAgVGhlIGZpbGUgdG8gcmVhZCBjb29raWVzIGZyb20gbXVzdCBiZSBmb3JtYXR0ZWQgdXNpbmcgcGxhaW4gSFRUUCBoZWFkZXJzIE9SXG4iCiIgIGFzIG5ldHNjYXBlJ3MgY29va2llIGZpbGUuIEN1cmwgd2lsbCBkZXRlcm1pbmUgd2hhdCBraW5kIGl0IGlzIGJhc2VkIG9uIHRoZVxuIgoiICBmaWxlIGNvbnRlbnRzLlxuIgoiXG4iCiJQUk9HUkVTUyBNRVRFUlxuIgoiXG4iCiIgIFRoZSBwcm9ncmVzcyBtZXRlciBleGlzdHMgdG8gc2hvdyBhIHVzZXIgdGhhdCBzb21ldGhpbmcgYWN0dWFsbHkgaXNcbiIKIiAgaGFwcGVuaW5nLiBUaGUgZGlmZmVyZW50IGZpZWxkcyBpbiB0aGUgb3V0cHV0IGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOlxuIgoiXG4iCiIgICUgVG90YWwgICAgJSBSZWNlaXZlZCAlIFhmZXJkICBBdmVyYWdlIFNwZWVkICAgICAgICAgIFRpbWUgICAgICAgICAgICAgQ3Vyci5cbiIKIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERsb2FkICBVcGxvYWQgVG90YWwgICAgQ3VycmVudCAgTGVmdCAgICBTcGVlZFxuIgoiICAwICAxNTFNICAgIDAgMzg2MDggICAgMCAgICAgMCAgIDk0MDYgICAgICAwICA0OjQxOjQzICAwOjAwOjA0ICA0OjQxOjM5ICA5Mjg3XG4iCiJcbiIKIiAgRnJvbSBsZWZ0LXRvLXJpZ2h0OlxuIgoiICAgJSAgICAgICAgICAgICAtIHBlcmNlbnRhZ2UgY29tcGxldGVkIG9mIHRoZSB3aG9sZSB0cmFuc2ZlclxuIgoiICAgVG90YWwgICAgICAgICAtIHRvdGFsIHNpemUgb2YgdGhlIHdob2xlIGV4cGVjdGVkIHRyYW5zZmVyXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIGRvd25sb2FkXG4iCiIgICBSZWNlaXZlZCAgICAgIC0gY3VycmVudGx5IGRvd25sb2FkZWQgYW1vdW50IG9mIGJ5dGVzXG4iCiIgICAlICAgICAgICAgICAgIC0gcGVyY2VudGFnZSBjb21wbGV0ZWQgb2YgdGhlIHVwbG9hZFxuIgoiICAgWGZlcmQgICAgICAgICAtIGN1cnJlbnRseSB1cGxvYWRlZCBhbW91bnQgb2YgYnl0ZXNcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIERsb2FkICAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgZG93bmxvYWRcbiIKIiAgIEF2ZXJhZ2UgU3BlZWRcbiIKIiAgIFVwbG9hZCAgICAgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCBvZiB0aGUgdXBsb2FkXG4iCiIgICBUaW1lIFRvdGFsICAgIC0gZXhwZWN0ZWQgdGltZSB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uXG4iCiIgICBUaW1lIEN1cnJlbnQgIC0gdGltZSBwYXNzZWQgc2luY2UgdGhlIGludm9rZVxuIgoiICAgVGltZSBMZWZ0ICAgICAtIGV4cGVjdGVkIHRpbWUgbGVmdCB0byBjb21wbGV0ZXRpb25cbiIKIiAgIEN1cnIuU3BlZWQgICAgLSB0aGUgYXZlcmFnZSB0cmFuc2ZlciBzcGVlZCB0aGUgbGFzdCA1IHNlY29uZHMgKHRoZSBmaXJzdFxuIgoiICAgICAgICAgICAgICAgICAgIDUgc2Vjb25kcyBvZiBhIHRyYW5zZmVyIGlzIGJhc2VkIG9uIGxlc3MgdGltZSBvZiBjb3Vyc2UuKVxuIgoiXG4iCiIgIFRoZSAtIyBvcHRpb24gd2lsbCBkaXNwbGF5IGEgdG90YWxseSBkaWZmZXJlbnQgcHJvZ3Jlc3MgYmFyIHRoYXQgZG9lc24ndFxuIgoiICBuZWVkIG11Y2ggZXhwbGFuYXRpb24hXG4iCiJcbiIKIlNQRUVEIExJTUlUXG4iCiJcbiIKIiAgQ3VybCBvZmZlcnMgdGhlIHVzZXIgdG8gc2V0IGNvbmRpdGlvbnMgcmVnYXJkaW5nIHRyYW5zZmVyIHNwZWVkIHRoYXQgbXVzdFxuIgoiICBiZSBtZXQgdG8gbGV0IHRoZSB0cmFuc2ZlciBrZWVwIGdvaW5nLiBCeSB1c2luZyB0aGUgc3dpdGNoIC15IGFuZCAtWSB5b3VcbiIKIiAgY2FuIG1ha2UgY3VybCBhYm9ydCB0cmFuc2ZlcnMgaWYgdGhlIHRyYW5zZmVyIHNwZWVkIGRvZXNuJ3QgZXhjZWVkIHlvdXJcbiIKIiAgZ2l2ZW4gbG93ZXN0IGxpbWl0IGZvciBhIHNwZWNpZmllZCB0aW1lLlxuIgoiXG4iCiIgIFRvIGxldCBjdXJsIGFiYW5kb24gZG93bmxvYWRpbmcgdGhpcyBwYWdlIGlmIGl0cyBzbG93ZXIgdGhhbiAzMDAwIGJ5dGVzIHBlclxuIgoiICBzZWNvbmQgZm9yIDEgbWludXRlLCBydW46XG4iCiJcbiIKIiAgICAgICAgY3VybCAteSAzMDAwIC1ZIDYwIHd3dy5mYXItYXdheS1zaXRlLmNvbVxuIgoiXG4iCiIgIFRoaXMgY2FuIHZlcnkgd2VsbCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIG92ZXJhbGwgdGltZSBsaW1pdCwgc29cbiIKIiAgdGhhdCB0aGUgYWJvdmUgb3BlcmF0aW9pbiBtdXN0IGJlIGNvbXBsZXRlZCBpbiB3aG9sZSB3aXRoaW4gMzAgbWludXRlczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1tIDE4MDAgLXkgMzAwMCAtWSA2MCB3d3cuZmFyLWF3YXktc2l0ZS5jb21cbiIKIlxuIgoiQ09ORklHIEZJTEVcbiIKIlxuIgoiICBDdXJsIGF1dG9tYXRpY2FsbHkgdHJpZXMgdG8gcmVhZCB0aGUgLmN1cmxyYyBmaWxlIChvciBfY3VybHJjIGZpbGUgb24gd2luMzJcbiIKIiAgc3lzdGVtcykgZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyIG9uIHN0YXJ0dXAuXG4iCiJcbiIKIiAgVGhlIGNvbmZpZyBmaWxlIGNvdWxkIGJlIG1hZGUgdXAgd2l0aCBub3JtYWwgY29tbWFuZCBsaW5lIHN3aXRjaGVzLCBidXQgeW91XG4iCiIgIGNhbiBhbHNvIHNwZWNpZnkgdGhlIGxvbmcgb3B0aW9ucyB3aXRob3V0IHRoZSBkYXNoZXMgdG8gbWFrZSBpdCBtb3JlXG4iCiIgIHJlYWRhYmxlLiBZb3UgY2FuIHNlcGFyYXRlIHRoZSBvcHRpb25zIGFuZCB0aGUgcGFyYW1ldGVyIHdpdGggc3BhY2VzLCBvclxuIgoiICB3aXRoID0gb3IgOi4gQ29tbWVudHMgY2FuIGJlIHVzZWQgd2l0aGluIHRoZSBmaWxlLiBJZiB0aGUgZmlyc3QgbGV0dGVyIG9uIGFcbiIKIiAgbGluZSBpcyBhICcjJy1sZXR0ZXIgdGhlIHJlc3Qgb2YgdGhlIGxpbmUgaXMgdHJlYXRlZCBhcyBhIGNvbW1lbnQuXG4iCik7CiBwdXRzKAoiXG4iCiIgIElmIHlvdSB3YW50IHRoZSBwYXJhbWV0ZXIgdG8gY29udGFpbiBzcGFjZXMsIHlvdSBtdXN0IGluY2xvc2UgdGhlIGVudGlyZVxuIgoiICBwYXJhbWV0ZXIgd2l0aGluIGRvdWJsZSBxdW90ZXMgKFwiKS4gV2l0aGluIHRob3NlIHF1b3RlcywgeW91IHNwZWNpZnkgYVxuIgoiICBxdW90ZSBhcyBcXFwiLlxuIgoiXG4iCiIgIE5PVEU6IFlvdSBtdXN0IHNwZWNpZnkgb3B0aW9ucyBhbmQgdGhlaXIgYXJndW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUuXG4iCiJcbiIKIiAgRXhhbXBsZSwgc2V0IGRlZmF1bHQgdGltZSBvdXQgYW5kIHByb3h5IGluIGEgY29uZmlnIGZpbGU6XG4iCiJcbiIKIiAgICAgICAgIyBXZSB3YW50IGEgMzAgbWludXRlIHRpbWVvdXQ6XG4iCiIgICAgICAgIC1tIDE4MDBcbiIKIiAgICAgICAgIyAuLi4gYW5kIHdlIHVzZSBhIHByb3h5IGZvciBhbGwgYWNjZXNzZXM6XG4iCiIgICAgICAgIHByb3h5ID0gcHJveHkub3VyLmRvbWFpbi5jb206ODA4MFxuIgoiXG4iCiIgIFdoaXRlIHNwYWNlcyBBUkUgc2lnbmlmaWNhbnQgYXQgdGhlIGVuZCBvZiBsaW5lcywgYnV0IGFsbCB3aGl0ZSBzcGFjZXNcbiIKIiAgbGVhZGluZyB1cCB0byB0aGUgZmlyc3QgY2hhcmFjdGVycyBvZiBlYWNoIGxpbmUgYXJlIGlnbm9yZWQuXG4iCiJcbiIKIiAgUHJldmVudCBjdXJsIGZyb20gcmVhZGluZyB0aGUgZGVmYXVsdCBmaWxlIGJ5IHVzaW5nIC1xIGFzIHRoZSBmaXJzdCBjb21tYW5kXG4iCiIgIGxpbmUgcGFyYW1ldGVyLCBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXEgd3d3LnRoYXRzaXRlLmNvbVxuIgoiXG4iCiIgIEZvcmNlIGN1cmwgdG8gZ2V0IGFuZCBkaXNwbGF5IGEgbG9jYWwgaGVscCBwYWdlIGluIGNhc2UgaXQgaXMgaW52b2tlZFxuIgoiICB3aXRob3V0IFVSTCBieSBtYWtpbmcgYSBjb25maWcgZmlsZSBzaW1pbGFyIHRvOlxuIgoiXG4iCiIgICAgICAgICMgZGVmYXVsdCB1cmwgdG8gZ2V0XG4iCiIgICAgICAgIHVybCA9IFwiaHR0cDovL2hlbHAud2l0aC5jdXJsLmNvbS9jdXJsaGVscC5odG1sXCJcbiIKIlxuIgoiICBZb3UgY2FuIHNwZWNpZnkgYW5vdGhlciBjb25maWcgZmlsZSB0byBiZSByZWFkIGJ5IHVzaW5nIHRoZSAtSy8tLWNvbmZpZ1xuIgoiICBmbGFnLiBJZiB5b3Ugc2V0IGNvbmZpZyBmaWxlIG5hbWUgdG8gXCItXCIgaXQnbGwgcmVhZCB0aGUgY29uZmlnIGZyb20gc3RkaW4sXG4iCiIgIHdoaWNoIGNhbiBiZSBoYW5keSBpZiB5b3Ugd2FudCB0byBoaWRlIG9wdGlvbnMgZnJvbSBiZWluZyB2aXNpYmxlIGluIHByb2Nlc3NcbiIKIiAgdGFibGVzIGV0YzpcbiIKIlxuIgoiICAgICAgICBlY2hvIFwidXNlciA9IHVzZXI6cGFzc3dkXCIgfCBjdXJsIC1LIC0gaHR0cDovL3RoYXQuc2VjcmV0LnNpdGUuY29tXG4iCiJcbiIKIkVYVFJBIEhFQURFUlNcbiIKIlxuIgoiICBXaGVuIHVzaW5nIGN1cmwgaW4geW91ciBvd24gdmVyeSBzcGVjaWFsIHByb2dyYW1zLCB5b3UgbWF5IGVuZCB1cCBuZWVkaW5nXG4iCiIgIHRvIHBhc3Mgb24geW91ciBvd24gY3VzdG9tIGhlYWRlcnMgd2hlbiBnZXR0aW5nIGEgd2ViIHBhZ2UuIFlvdSBjYW4gZG9cbiIKIiAgdGhpcyBieSB1c2luZyB0aGUgLUggZmxhZy5cbiIKIlxuIgoiICBFeGFtcGxlLCBzZW5kIHRoZSBoZWFkZXIgXCJYLXlvdS1hbmQtbWU6IHllc1wiIHRvIHRoZSBzZXJ2ZXIgd2hlbiBnZXR0aW5nIGFcbiIKIiAgcGFnZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1IIFwiWC15b3UtYW5kLW1lOiB5ZXNcIiB3d3cubG92ZS5jb21cbiIKIlxuIgoiICBUaGlzIGNhbiBhbHNvIGJlIHVzZWZ1bCBpbiBjYXNlIHlvdSB3YW50IGN1cmwgdG8gc2VuZCBhIGRpZmZlcmVudCB0ZXh0IGluXG4iCiIgIGEgaGVhZGVyIHRoYW4gaXQgbm9ybWFsbHkgZG9lcy4gVGhlIC1IIGhlYWRlciB5b3Ugc3BlY2lmeSB0aGVuIHJlcGxhY2VzIHRoZVxuIgoiICBoZWFkZXIgY3VybCB3b3VsZCBub3JtYWxseSBzZW5kLlxuIgoiXG4iCiJGVFAgYW5kIFBBVEggTkFNRVNcbiIKIlxuIgoiICBEbyBub3RlIHRoYXQgd2hlbiBnZXR0aW5nIGZpbGVzIHdpdGggdGhlIGZ0cDovLyBVUkwsIHRoZSBnaXZlbiBwYXRoIGlzXG4iCiIgIHJlbGF0aXZlIHRoZSBkaXJlY3RvcnkgeW91IGVudGVyLiBUbyBnZXQgdGhlIGZpbGUgJ1JFQURNRScgZnJvbSB5b3VyIGhvbWVcbiIKIiAgZGlyZWN0b3J5IGF0IHlvdXIgZnRwIHNpdGUsIGRvOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgZnRwOi8vdXNlcjpwYXNzd2RAbXkuc2l0ZS5jb20vUkVBRE1FXG4iCiJcbiIKIiAgQnV0IGlmIHlvdSB3YW50IHRoZSBSRUFETUUgZmlsZSBmcm9tIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IHZlcnkgc2FtZVxuIgoiICBzaXRlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBmdHA6Ly91c2VyOnBhc3N3ZEBteS5zaXRlLmNvbS8vUkVBRE1FXG4iCiJcbiIKIiAgKEkuZSB3aXRoIGFuIGV4dHJhIHNsYXNoIGluIGZyb250IG9mIHRoZSBmaWxlIG5hbWUuKVxuIgoiXG4iCiJGVFAgYW5kIGZpcmV3YWxsc1xuIgoiXG4iCiIgIFRoZSBGVFAgcHJvdG9jb2wgcmVxdWlyZXMgb25lIG9mIHRoZSBpbnZvbHZlZCBwYXJ0aWVzIHRvIG9wZW4gYSBzZWNvbmRcbiIKIiAgY29ubmN0aW9uIGFzIHNvb24gYXMgZGF0YSBpcyBhYm91dCB0byBnZXQgdHJhbnNmZXJlZC4gVGhlcmUgYXJlIHR3byB3YXlzIHRvXG4iCiIgIGRvIHRoaXMuXG4iCiJcbiIKIiAgVGhlIGRlZmF1bHQgd2F5IGZvciBjdXJsIGlzIHRvIGlzc3VlIHRoZSBQQVNWIGNvbW1hbmQgd2hpY2ggY2F1c2VzIHRoZVxuIgoiICBzZXJ2ZXIgdG8gb3BlbiBhbm90aGVyIHBvcnQgYW5kIGF3YWl0IGFub3RoZXIgY29ubmVjdGlvbiBwZXJmb3JtZWQgYnkgdGhlXG4iCiIgIGNsaWVudC4gVGhpcyBpcyBnb29kIGlmIHRoZSBjbGllbnQgaXMgYmVoaW5kIGEgZmlyZXdhbGwgdGhhdCBkb24ndCBhbGxvd1xuIgoiICBpbmNvbWluZyBjb25uZWN0aW9ucy5cbiIKIlxuIgoiICAgICAgICBjdXJsIGZ0cC5kb3dubG9hZC5jb21cbiIKIlxuIgoiICBJZiB0aGUgc2VydmVyIGZvciBleGFtcGxlLCBpcyBiZWhpbmQgYSBmaXJld2FsbCB0aGF0IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iCiIgIG9uIG90aGVyIHBvcnRzIHRoYW4gMjEgKG9yIGlmIGl0IGp1c3QgZG9lc24ndCBzdXBwb3J0IHRoZSBQQVNWIGNvbW1hbmQpLCB0aGVcbiIKIiAgb3RoZXIgd2F5IHRvIGRvIGl0IGlzIHRvIHVzZSB0aGUgUE9SVCBjb21tYW5kIGFuZCBpbnN0cnVjdCB0aGUgc2VydmVyIHRvXG4iCiIgIGNvbm5lY3QgdG8gdGhlIGNsaWVudCBvbiB0aGUgZ2l2ZW4gKGFzIHBhcmFtZXRlcnMgdG8gdGhlIFBPUlQgY29tbWFuZCkgSVBcbiIKIiAgbnVtYmVyIGFuZCBwb3J0LlxuIgoiXG4iCiIgIFRoZSAtUCBmbGFnIHRvIGN1cmwgc3VwcG9ydHMgYSBmZXcgZGlmZmVyZW50IG9wdGlvbnMuIFlvdXIgbWFjaGluZSBtYXkgaGF2ZVxuIgoiICBzZXZlcmFsIElQLWFkZHJlc3NlcyBhbmQvb3IgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBjdXJsIGFsbG93cyB5b3UgdG8gc2VsZWN0XG4iCiIgIHdoaWNoIG9mIHRoZW0gdG8gdXNlLiBEZWZhdWx0IGFkZHJlc3MgY2FuIGFsc28gYmUgdXNlZDpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIC0gZnRwLmRvd25sb2FkLmNvbVxuIgoiXG4iCiIgIERvd25sb2FkIHdpdGggUE9SVCBidXQgdXNlIHRoZSBJUCBhZGRyZXNzIG9mIG91ciAnbGUwJyBpbnRlcmZhY2UgKHRoaXMgZG9lc1xuIgoiICBub3Qgd29yayBvbiB3aW5kb3dzKTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIGxlMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIiAgRG93bmxvYWQgd2l0aCBQT1JUIGJ1dCB1c2UgMTkyLjE2OC4wLjEwIGFzIG91ciBJUCBhZGRyZXNzIHRvIHVzZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1QIDE5Mi4xNjguMC4xMCBmdHAuZG93bmxvYWQuY29tXG4iCiJcbiIKIk5FVFdPUksgSU5URVJGQUNFXG4iCiJcbiIKIiAgR2V0IGEgd2ViIHBhZ2UgZnJvbSBhIHNlcnZlciB1c2luZyBhIHNwZWNpZmllZCBwb3J0IGZvciB0aGUgaW50ZXJmYWNlOlxuIgoiXG4iCiIJY3VybCAtLWludGVyZmFjZSBldGgwOjEgaHR0cDovL3d3dy5uZXRzY2FwZS5jb20vXG4iCiJcbiIKIiAgb3JcbiIKIlxuIgoiCWN1cmwgLS1pbnRlcmZhY2UgMTkyLjE2OC4xLjEwIGh0dHA6Ly93d3cubmV0c2NhcGUuY29tL1xuIgoiXG4iCiJIVFRQU1xuIgoiXG4iCiIgIFNlY3VyZSBIVFRQIHJlcXVpcmVzIFNTTCBsaWJyYXJpZXMgdG8gYmUgaW5zdGFsbGVkIGFuZCB1c2VkIHdoZW4gY3VybCBpc1xuIgoiICBidWlsdC4gSWYgdGhhdCBpcyBkb25lLCBjdXJsIGlzIGNhcGFibGUgb2YgcmV0cmlldmluZyBhbmQgcG9zdGluZyBkb2N1bWVudHNcbiIKIiAgdXNpbmcgdGhlIEhUVFBTIHByb2NvdG9sLlxuIgoiXG4iCiIgIEV4YW1wbGU6XG4iCiJcbiIKIiAgICAgICAgY3VybCBodHRwczovL3d3dy5zZWN1cmUtc2l0ZS5jb21cbiIKIlxuIgoiICBDdXJsIGlzIGFsc28gY2FwYWJsZSBvZiB1c2luZyB5b3VyIHBlcnNvbmFsIGNlcnRpZmljYXRlcyB0byBnZXQvcG9zdCBmaWxlc1xuIgoiICBmcm9tIHNpdGVzIHRoYXQgcmVxdWlyZSB2YWxpZCBjZXJ0aWZpY2F0ZXMuIFRoZSBvbmx5IGRyYXdiYWNrIGlzIHRoYXQgdGhlXG4iCiIgIGNlcnRpZmljYXRlIG5lZWRzIHRvIGJlIGluIFBFTS1mb3JtYXQuIFBFTSBpcyBhIHN0YW5kYXJkIGFuZCBvcGVuIGZvcm1hdCB0b1xuIgoiICBzdG9yZSBjZXJ0aWZpY2F0ZXMgd2l0aCwgYnV0IGl0IGlzIG5vdCB1c2VkIGJ5IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWRcbiIKIiAgYnJvd3NlcnMgKE5ldHNjYXBlIGFuZCBNU0VJIGJvdGggdXNlIHRoZSBzbyBjYWxsZWQgUEtDUyMxMiBmb3JtYXQpLiBJZiB5b3VcbiIKIiAgd2FudCBjdXJsIHRvIHVzZSB0aGUgY2VydGlmaWNhdGVzIHlvdSB1c2Ugd2l0aCB5b3VyIChmYXZvdXJpdGUpIGJyb3dzZXIsIHlvdVxuIgoiICBtYXkgbmVlZCB0byBkb3dubG9hZC9jb21waWxlIGEgY29udmVydGVyIHRoYXQgY2FuIGNvbnZlcnQgeW91ciBicm93c2VyJ3NcbiIKIiAgZm9ybWF0dGVkIGNlcnRpZmljYXRlcyB0byBQRU0gZm9ybWF0dGVkIG9uZXMuIFRoaXMga2luZCBvZiBjb252ZXJ0ZXIgaXNcbiIKIiAgaW5jbHVkZWQgaW4gcmVjZW50IHZlcnNpb25zIG9mIE9wZW5TU0wsIGFuZCBmb3Igb2xkZXIgdmVyc2lvbnMgRHIgU3RlcGhlblxuIgoiICBOLiBIZW5zb24gaGFzIHdyaXR0ZW4gYSBwYXRjaCBmb3IgU1NMZWF5IHRoYXQgYWRkcyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFlvdVxuIgoiICBjYW4gZ2V0IGhpcyBwYXRjaCAodGhhdCByZXF1aXJlcyBhbiBTU0xlYXkgaW5zdGFsbGF0aW9uKSBmcm9tIGhpcyBzaXRlIGF0OlxuIgoiICBodHRwOi8vd3d3LmRyaC1jb25zdWx0YW5jeS5kZW1vbi5jby51ay9cbiIKIlxuIgoiICBFeGFtcGxlIG9uIGhvdyB0byBhdXRvbWF0aWNhbGx5IHJldHJpZXZlIGEgZG9jdW1lbnQgdXNpbmcgYSBjZXJ0aWZpY2F0ZSB3aXRoXG4iCiIgIGEgcGVyc29uYWwgcGFzc3dvcmQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtRSAvcGF0aC90by9jZXJ0LnBlbTpwYXNzd29yZCBodHRwczovL3NlY3VyZS5zaXRlLmNvbS9cbiIKIlxuIgoiICBJZiB5b3UgbmVnbGVjdCB0byBzcGVjaWZ5IHRoZSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB5b3Ugd2lsbCBiZVxuIgoiICBwcm9tcHRlZCBmb3IgdGhlIGNvcnJlY3QgcGFzc3dvcmQgYmVmb3JlIGFueSBkYXRhIGNhbiBiZSByZWNlaXZlZC5cbiIKIlxuIgoiICBNYW55IG9sZGVyIFNTTC1zZXJ2ZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBTU0x2MyBvciBUTFMsIHRoYXQgbmV3ZXIgdmVyc2lvbnNcbiIKIiAgb2YgT3BlblNTTCBldGMgaXMgdXNpbmcsIHRoZXJlZm9yZSBpdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIHNwZWNpZnkgd2hhdFxuIgoiICBTU0wtdmVyc2lvbiBjdXJsIHNob3VsZCB1c2UuIFVzZSAtMyBvciAtMiB0byBzcGVjaWZ5IHRoYXQgZXhhY3QgU1NMIHZlcnNpb25cbiIKIiAgdG8gdXNlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLTIgaHR0cHM6Ly9zZWN1cmUuc2l0ZS5jb20vXG4iCiJcbiIKIiAgT3RoZXJ3aXNlLCBjdXJsIHdpbGwgZmlyc3QgYXR0ZW1wdCB0byB1c2UgdjMgYW5kIHRoZW4gdjIuXG4iCiJcbiIKIiAgVG8gdXNlIE9wZW5TU0wgdG8gY29udmVydCB5b3VyIGZhdm91cml0ZSBicm93c2VyJ3MgY2VydGlmaWNhdGUgaW50byBhIFBFTVxuIgoiICBmb3JtYXR0ZWQgb25lIHRoYXQgY3VybCBjYW4gdXNlLCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzIChhc3N1bWluZyBuZXRzY2FwZSxcbiIKIiAgYnV0IElFIGlzIGxpa2VseSB0byB3b3JrIHNpbWlsYXJseSk6XG4iCiJcbiIKIiAgICBZb3Ugc3RhcnQgd2l0aCBoaXR0aW5nIHRoZSAnc2VjdXJpdHknIG1lbnUgYnV0dG9uIGluIG5ldHNjYXBlLiBcbiIKIlxuIgoiICAgIFNlbGVjdCAnY2VydGlmaWNhdGVzLT55b3VycycgYW5kIHRoZW4gcGljayBhIGNlcnRpZmljYXRlIGluIHRoZSBsaXN0IFxuIgoiXG4iCiIgICAgUHJlc3MgdGhlICdleHBvcnQnIGJ1dHRvbiBcbiIKIlxuIgoiICAgIGVudGVyIHlvdXIgUElOIGNvZGUgZm9yIHRoZSBjZXJ0cyBcbiIKIlxuIgoiICAgIHNlbGVjdCBhIHByb3BlciBwbGFjZSB0byBzYXZlIGl0IFxuIgoiXG4iCiIgICAgUnVuIHRoZSAnb3BlbnNzbCcgYXBwbGljYXRpb24gdG8gY29udmVydCB0aGUgY2VydGlmaWNhdGUuIElmIHlvdSBjZCB0byB0aGVcbiIKIiAgICBvcGVuc3NsIGluc3RhbGxhdGlvbiwgeW91IGNhbiBkbyBpdCBsaWtlOlxuIgoiXG4iCiIgICAgICMgLi9hcHBzL29wZW5zc2wgcGtjczEyIC1jZXJ0ZmlsZSBbZmlsZSB5b3Ugc2F2ZWRdIC1vdXQgW1BFTWZpbGVdXG4iCiJcbiIKIlxuIgoiUkVTVU1JTkcgRklMRSBUUkFOU0ZFUlNcbiIKIlxuIgoiIFRvIGNvbnRpbnVlIGEgZmlsZSB0cmFuc2ZlciB3aGVyZSBpdCB3YXMgcHJldmlvdXNseSBhYm9ydGVkLCBjdXJsIHN1cHBvcnRzXG4iCiIgcmVzdW1lIG9uIGh0dHAocykgZG93bmxvYWRzIGFzIHdlbGwgYXMgZnRwIHVwbG9hZHMgYW5kIGRvd25sb2Fkcy5cbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQ6XG4iCiJcbiIKIiAgICAgICAgY3VybCAtYyAtbyBmaWxlIGZ0cDovL2Z0cC5zZXJ2ZXIuY29tL3BhdGgvZmlsZVxuIgoiXG4iCiIgQ29udGludWUgdXBsb2FkaW5nIGEgZG9jdW1lbnQoKjEpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLVQgZmlsZSBmdHA6Ly9mdHAuc2VydmVyLmNvbS9wYXRoL2ZpbGVcbiIKIlxuIgoiIENvbnRpbnVlIGRvd25sb2FkaW5nIGEgZG9jdW1lbnQgZnJvbSBhIHdlYiBzZXJ2ZXIoKjIpOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLWMgLW8gZmlsZSBodHRwOi8vd3d3LnNlcnZlci5jb20vXG4iCiJcbiIKIiAoKjEpID0gVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBmdHAgc2VydmVyIHN1cHBvcnRzIHRoZSBub24tc3RhbmRhcmQgY29tbWFuZFxuIgoiICAgICAgICBTSVpFLiBJZiBpdCBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiIgKCoyKSA9IFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgd2Igc2VydmVyIHN1cHBvcnRzIGF0IGxlYXN0IEhUVFAvMS4xLiBJZiBpdFxuIgoiICAgICAgICBkb2Vzbid0LCBjdXJsIHdpbGwgc2F5IHNvLlxuIgoiXG4iCiJUSU1FIENPTkRJVElPTlNcbiIKIlxuIgoiIEhUVFAgYWxsb3dzIGEgY2xpZW50IHRvIHNwZWNpZnkgYSB0aW1lIGNvbmRpdGlvbiBmb3IgdGhlIGRvY3VtZW50IGl0XG4iCiIgcmVxdWVzdHMuIEl0IGlzIElmLU1vZGlmaWVkLVNpbmNlIG9yIElmLVVubW9kaWZpZWQtU2luY2UuIEN1cmwgYWxsb3cgeW91IHRvXG4iCiIgc3BlY2lmeSB0aGVtIHdpdGggdGhlIC16Ly0tdGltZS1jb25kIGZsYWcuXG4iCiJcbiIKIiBGb3IgZXhhbXBsZSwgeW91IGNhbiBlYXNpbHkgbWFrZSBhIGRvd25sb2FkIHRoYXQgb25seSBnZXRzIHBlcmZvcm1lZCBpZiB0aGVcbiIKIiByZW1vdGUgZmlsZSBpcyBuZXdlciB0aGFuIGEgbG9jYWwgY29weS4gSXQgd291bGQgYmUgbWFkZSBsaWtlOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogbG9jYWwuaHRtbCBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIE9yIHlvdSBjYW4gZG93bmxvYWQgYSBmaWxlIG9ubHkgaWYgdGhlIGxvY2FsIGZpbGUgaXMgbmV3ZXIgdGhhbiB0aGUgcmVtb3RlXG4iCiIgb25lLiBEbyB0aGlzIGJ5IHByZXBlbmRpbmcgdGhlIGRhdGUgc3RyaW5nIHdpdGggYSAnLScsIGFzIGluOlxuIgoiXG4iCiIgICAgICAgIGN1cmwgLXogLWxvY2FsLmh0bWwgaHR0cDovL3JlbW90ZS5zZXJ2ZXIuY29tL3JlbW90ZS5odG1sXG4iCiJcbiIKIiBZb3UgY2FuIHNwZWNpZnkgYSBcImZyZWUgdGV4dFwiIGRhdGUgYXMgY29uZGl0aW9uLiBUZWxsIGN1cmwgdG8gb25seSBkb3dubG9hZFxuIgoiIHRoZSBmaWxlIGlmIGl0IHdhcyB1cGRhdGVkIHNpbmNlIHllc3RlcmRheTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC16IHllc3RlcmRheSBodHRwOi8vcmVtb3RlLnNlcnZlci5jb20vcmVtb3RlLmh0bWxcbiIKIlxuIgoiIEN1cmwgd2lsbCB0aGVuIGFjY2VwdCBhIHdpZGUgcmFuZ2Ugb2YgZGF0ZSBmb3JtYXRzLiBZb3UgYWx3YXlzIG1ha2UgdGhlIGRhdGVcbiIKIiBjaGVjayB0aGUgb3RoZXIgd2F5IGFyb3VuZCBieSBwcmVwZW5kaW5nIGl0IHdpdGggYSBkYXNoICctJy5cbiIKIlxuIgoiRElDVFxuIgoiXG4iCiIgIEZvciBmdW4gdHJ5XG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvbTpjdXJsXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL2Q6aGVpc2VuYnVnOmphcmdvblxuIgoiICAgICAgICBjdXJsIGRpY3Q6Ly9kaWN0Lm9yZy9kOmRhbmllbDp3ZWIxOTEzXG4iCiJcbiIKIiAgQWxpYXNlcyBmb3IgJ20nIGFyZSAnbWF0Y2gnIGFuZCAnZmluZCcsIGFuZCBhbGlhc2VzIGZvciAnZCcgYXJlICdkZWZpbmUnXG4iCiIgIGFuZCAnbG9va3VwJy4gRm9yIGV4YW1wbGUsXG4iCiJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvZmluZDpjdXJsXG4iCiJcbiIKIiAgQ29tbWFuZHMgdGhhdCBicmVhayB0aGUgVVJMIGRlc2NyaXB0aW9uIG9mIHRoZSBSRkMgKGJ1dCBub3QgdGhlIERJQ1RcbiIKIiAgcHJvdG9jb2wpIGFyZVxuIgoiXG4iCiIgICAgICAgIGN1cmwgZGljdDovL2RpY3Qub3JnL3Nob3c6ZGJcbiIKIiAgICAgICAgY3VybCBkaWN0Oi8vZGljdC5vcmcvc2hvdzpzdHJhdFxuIgoiXG4iCiIgIEF1dGhlbnRpY2F0aW9uIGlzIHN0aWxsIG1pc3NpbmcgKGJ1dCB0aGlzIGlzIG5vdCByZXF1aXJlZCBieSB0aGUgUkZDKVxuIgoiXG4iCiJMREFQXG4iCiJcbiIKIiAgSWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSBPcGVuTERBUCBsaWJyYXJ5LCBjdXJsIGNhbiB0YWtlIGFkdmFudGFnZSBvZiBpdFxuIgoiICBhbmQgb2ZmZXIgbGRhcDovLyBzdXBwb3J0LlxuIgoiXG4iCiIgIExEQVAgaXMgYSBjb21wbGV4IHRoaW5nIGFuZCB3cml0aW5nIGFuIExEQVAgcXVlcnkgaXMgbm90IGFuIGVhc3kgdGFzay4gSSBkb1xuIgoiICBhZHZpY2UgeW91IHRvIGRpZyB1cCB0aGUgc3ludGF4IGRlc2NyaXB0aW9uIGZvciB0aGF0IGVsc2V3aGVyZSwgUkZDIDE5NTkgaWZcbiIKIiAgbm8gb3RoZXIgcGxhY2UgaXMgYmV0dGVyLlxuIgoiXG4iCiIgIFRvIHNob3cgeW91IGFuIGV4YW1wbGUsIHRoaXMgaXMgbm93IEkgY2FuIGdldCBhbGwgcGVvcGxlIGZyb20gbXkgbG9jYWwgTERBUFxuIgoiICBzZXJ2ZXIgdGhhdCBoYXMgYSBjZXJ0YWluIHN1Yi1kb21haW4gaW4gdGhlaXIgZW1haWwgYWRkcmVzczpcbiIKIlxuIgoiICAgICAgICBjdXJsIC1CIFwibGRhcDovL2xkYXAuZnJvbnRlYy5zZS9vPWZyb250ZWM/P3N1Yj9tYWlsPSpzdGguZnJvbnRlYy5zZVwiXG4iCiJcbiIKIiAgSWYgSSB3YW50IHRoZSBzYW1lIGluZm8gaW4gSFRNTCBmb3JtYXQsIEkgY2FuIGdldCBpdCBieSBub3QgdXNpbmcgdGhlIC1CXG4iCiIgIChlbmZvcmNlIEFTQ0lJKSBmbGFnLlxuIgoiXG4iCiJFTlZJUk9OTUVOVCBWQVJJQUJMRVNcbiIKIlxuIgoiICBDdXJsIHJlYWRzIGFuZCB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczpcbiIKIlxuIgoiICAgICAgICBIVFRQX1BST1hZLCBIVFRQU19QUk9YWSwgRlRQX1BST1hZLCBHT1BIRVJfUFJPWFlcbiIKIlxuIgoiICBUaGV5IHNob3VsZCBiZSBzZXQgZm9yIHByb3RvY29sLXNwZWNpZmljIHByb3hpZXMuIEdlbmVyYWwgcHJveHkgc2hvdWxkIGJlXG4iCiIgIHNldCB3aXRoXG4iCiIgICAgICAgIFxuIgoiICAgICAgICBBTExfUFJPWFlcbiIKIlxuIgoiICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGhvc3QgbmFtZXMgdGhhdCBzaG91bGRuJ3QgZ28gdGhyb3VnaCBhbnkgcHJveHkgaXNcbiIKIiAgc2V0IGluIChvbmx5IGFuIGFzdGVyaXNrLCAnKicgbWF0Y2hlcyBhbGwgaG9zdHMpXG4iCiJcbiIKIiAgICAgICAgTk9fUFJPWFlcbiIKIlxuIgoiICBJZiBhIHRhaWwgc3Vic3RyaW5nIG9mIHRoZSBkb21haW4tcGF0aCBmb3IgYSBob3N0IG1hdGNoZXMgb25lIG9mIHRoZXNlXG4iCiIgIHN0cmluZ3MsIHRyYW5zYWN0aW9ucyB3aXRoIHRoYXQgbm9kZSB3aWxsIG5vdCBiZSBwcm94aWVkLlxuIgoiXG4iCiJcbiIKIiAgVGhlIHVzYWdlIG9mIHRoZSAteC8tLXByb3h5IGZsYWcgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4iCiJcbiIKIk5FVFJDXG4iCiJcbiIKIiAgVW5peCBpbnRyb2R1Y2VkIHRoZSAubmV0cmMgY29uY2VwdCBhIGxvbmcgdGltZSBhZ28uIEl0IGlzIGEgd2F5IGZvciBhIHVzZXJcbiIKIiAgdG8gc3BlY2lmeSBuYW1lIGFuZCBwYXNzd29yZCBmb3IgY29tbW9ubHkgdmlzaXRlZCBmdHAgc2l0ZXMgaW4gYSBmaWxlIHNvXG4iCiIgIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gdHlwZSB0aGVtIGluIGVhY2ggdGltZSB5b3UgdmlzaXQgdGhvc2Ugc2l0ZXMuIFlvdVxuIgoiICByZWFsaXplIHRoaXMgaXMgYSBiaWcgc2VjdXJpdHkgcmlzayBpZiBzb21lb25lIGVsc2UgZ2V0cyBob2xkIG9mIHlvdXJcbiIKIiAgcGFzc3dvcmRzLCBzbyB0aGVyZWZvciBtb3N0IHVuaXggcHJvZ3JhbXMgd29uJ3QgcmVhZCB0aGlzIGZpbGUgdW5sZXNzIGl0IGlzXG4iCiIgIG9ubHkgcmVhZGFibGUgYnkgeW91cnNlbGYgKGN1cmwgZG9lc24ndCBjYXJlIHRob3VnaCkuXG4iCiJcbiIKIiAgQ3VybCBzdXBwb3J0cyAubmV0cmMgZmlsZXMgaWYgdG9sZCBzbyAodXNpbmcgdGhlIC1uLy0tbmV0cmMgb3B0aW9uKS4gVGhpcyBpc1xuIgoiICBub3QgcmVzdHJpY3RlZCB0byBvbmx5IGZ0cCwgYnV0IGN1cmwgY2FuIHVzZSBpdCBmb3IgYWxsIHByb3RvY29scyB3aGVyZVxuIgoiICBhdXRoZW50aWNhdGlvbiBpcyB1c2VkLlxuIgoiXG4iCiIgIEEgdmVyeSBzaW1wbGUgLm5ldHJjIGZpbGUgY291bGQgbG9vayBzb21ldGhpbmcgbGlrZTpcbiIKKTsKIHB1dHMoCiJcbiIKIiAgICAgICAgbWFjaGluZSBjdXJsLmhheHguc2UgbG9naW4gaWFtZGFuaWVsIHBhc3N3b3JkIG15c2VjcmV0XG4iCiJcbiIKIkNVU1RPTSBPVVRQVVRcbiIKIlxuIgoiICBUbyBiZXR0ZXIgYWxsb3cgc2NyaXB0IHByb2dyYW1tZXJzIHRvIGdldCB0byBrbm93IGFib3V0IHRoZSBwcm9ncmVzcyBvZlxuIgoiICBjdXJsLCB0aGUgLXcvLS13cml0ZS1vdXQgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkLiBVc2luZyB0aGlzLCB5b3UgY2FuIHNwZWNpZnlcbiIKIiAgd2hhdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwcmV2aW91cyB0cmFuc2ZlciB5b3Ugd2FudCB0byBleHRyYWN0LlxuIgoiXG4iCiIgIFRvIGRpc3BsYXkgdGhlIGFtb3VudCBvZiBieXRlcyBkb3dubG9hZGVkIHRvZ2V0aGVyIHdpdGggc29tZSB0ZXh0IGFuZCBhblxuIgoiICBlbmRpbmcgbmV3bGluZTpcbiIKIlxuIgoiICAgICAgICBjdXJsIC13ICdXZSBkb3dubG9hZGVkICV7c2l6ZV9kb3dubG9hZH0gYnl0ZXNcXG4nIHd3dy5kb3dubG9hZC5jb21cbiIKIlxuIgoiS0VSQkVST1M0IEZUUCBUUkFOU0ZFUlxuIgoiXG4iCiIgIEN1cmwgc3VwcG9ydHMga2VyYmVyb3M0IGZvciBGVFAgdHJhbnNmZXJzLiBZb3UgbmVlZCB0aGUga2VyYmVyb3MgcGFja2FnZVxuIgoiICBpbnN0YWxsZWQgYW5kIHVzZWQgYXQgY3VybCBidWlsZCB0aW1lIGZvciBpdCB0byBiZSB1c2VkLlxuIgoiXG4iCiIgIEZpcnN0LCBnZXQgdGhlIGtyYi10aWNrZXQgdGhlIG5vcm1hbCB3YXksIGxpa2Ugd2l0aCB0aGUga2F1dGggdG9vbC4gVGhlbiB1c2VcbiIKIiAgY3VybCBpbiB3YXkgc2ltaWxhciB0bzpcbiIKIlxuIgoiICAgICAgICBjdXJsIC0ta3JiNCBwcml2YXRlIGZ0cDovL2tyYjRzaXRlLmNvbSAtdSB1c2VybmFtZTpmYWtlcHdkXG4iCiJcbiIKIiAgVGhlcmUncyBubyB1c2UgZm9yIGEgcGFzc3dvcmQgb24gdGhlIC11IHN3aXRjaCwgYnV0IGEgYmxhbmsgb25lIHdpbGwgbWFrZVxuIgoiICBjdXJsIGFzayBmb3Igb25lIGFuZCB5b3UgYWxyZWFkeSBlbnRlcmVkIHRoZSByZWFsIHBhc3N3b3JkIHRvIGthdXRoLlxuIgoiXG4iCiJNQUlMSU5HIExJU1RcbiIKIlxuIgoiICBXZSBoYXZlIGFuIG9wZW4gbWFpbGluZyBsaXN0IHRvIGRpc2N1c3MgY3VybCwgaXRzIGRldmVsb3BtZW50IGFuZCB0aGluZ3NcbiIKIiAgcmVsZXZhbnQgdG8gdGhpcy5cbiIKIlxuIgoiICBUbyBzdWJzY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwic3Vic2NyaWJlIDxmaWxsIGluIHlvdXJcbiIKIiAgZW1haWwgYWRkcmVzcz5cIiBpbiB0aGUgYm9keS5cbiIKIlxuIgoiICBUbyBwb3N0IHRvIHRoZSBsaXN0LCBtYWlsIGN1cmxAY29udGFjdG9yLnNlLlxuIgoiXG4iCiIgIFRvIHVuc3ViY3JpYmUsIG1haWwgY3VybC1yZXF1ZXN0QGNvbnRhY3Rvci5zZSB3aXRoIFwidW5zdWJzY3JpYmUgPHlvdXJcbiIKIiAgc3Vic2NyaWJlZCBlbWFpbCBhZGRyZXNzPlwiIGluIHRoZSBib2R5LlxuIgoiXG4iCiApIDsKfQo=